diff --git a/BuildCVS.txt b/BuildCVS.txt index 25e5e53cf7..c630582fcc 100644 --- a/BuildCVS.txt +++ b/BuildCVS.txt @@ -19,30 +19,29 @@ varaibles and PATH entries. Continue with item c) below. -b) If using the GNU Mingw32 or GNU Cygwin32 compilers +b) If using the MinGW or Cygwin compilers -You can get Mingw32 from http://www.mingw.org +You can get MinGW from http://www.mingw.org/ -Cygwin32 is available at http://www.cygwin.com +Cygwin is available at http://sources.redhat.com/cygwin/ The makefile might have small problems with Cygwin's tools -so it is recommended to use Mingw32 and its toolchain instead +so it is recommended to use MinGW and its toolchain instead if possible. -> Set your path so that it includes the directory where your compiler and tools reside --> If your are using an old Mingw32 version (gcc-2.95 or older), +-> If your are using an old MinGW version (gcc-2.95 or older), you might need to fix some headers with the patches contained in the wxWin\Mingw32-gcc295.patches file. PLEASE APPLY THESE PATCHES BY HAND! There are apparently a few different versions of the headers floating around. Note that these patches are - not needed if you are using Mingw32 gcc-2.95.2 or newer. + not needed if you are using MinGW gcc-2.95.2 or newer. -> Edit wx/src/makeg95.env and set the MINGW32 variable at the top of - the file to either 1 (you have Mingw32) or 0 (you have Cygwin32). - If using MINGW32, also set the MINGW32VERSION variable - appropiately. + the file to either 1 (you have MinGW) or 0 (you have Cygwin). + Also set the MINGW32VERSION variable appropiately. c) Build instructions @@ -51,19 +50,8 @@ c) Build instructions into c:\wxWin -> Copy c:\wxWin\include\wx\msw\setup0.h to c:\wxWin\include\wx\msw\setup.h --> Edit c:\wxWin\include\wx\msw\setup.h so that - most features are enabled (i.e. defined to 1), for example: - #define wxUSE_ODBC 0 - #define wxUSE_SOCKETS 1 - #define wxUSE_HTML 1 - #define wxUSE_THREADS 1 - #define wxUSE_FS_INET 0 - #define wxUSE_FS_ZIP 1 - #define wxUSE_BUSYINFO 1 - #define wxUSE_DYNLIB_CLASS 1 - #define wxUSE_ZIPSTREAM 1 - #define wxUSE_LIBJPEG 1 - #define wxUSE_LIBPNG 1 +-> Edit c:\wxWin\include\wx\msw\setup.h to choose + the features you would like to compile wxWindows with[out]. and std iostreams are disabled with #define wxUSE_STD_IOSTREAM 0 @@ -72,6 +60,8 @@ c) Build instructions -> type: make -f makefile.g95 (if using GNU tools) or type: nmake -f makefile.vc (if using MS VC++) + See also docs/msw/install.txt for additional compilation options. + d) Borland (including free command line tools) Download tools from http://www.borland.com/downloads/ @@ -117,11 +107,10 @@ yet complete). III) Windows using configure ---------------------------------------- -Take a look at Unix->Windows cross compiling. With minor -modifications, this should work in Windows if you've got the cygnus -utilities (bash, GNU make, etc) and either mingw32 or cygwin32 installed. -See http://www.cygnus.com for these programs, or go straight to their -ftp server at ftp://sourceware.cygnus.com/pub/cygwin/. +wxWindows can be built on Windows using MSYS (see +http://www.mingw.org/), which is a POSIX build environment +for Windows. With MSYS you can just ./configure && make (see also VII, +Unix->Windows cross-compiling using configure). Of course, you can also build the library using plain makefiles (see section I). @@ -168,17 +157,17 @@ VI) OS/2 VII) Unix->Windows cross-compiling using configure -------------------------------------------------- -First you'll need a cross-compiler; linux glibc binaries of mingw32 and -cygwin32 (both based on egcs) can be found at +First you'll need a cross-compiler; linux glibc binaries of MinGW and +Cygwin (both based on egcs) can be found at ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries, based on the latest MinGW release can be found at -http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html +http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html Otherwise you can compile one yourself. -[ A Note about cygwin32 and mingw32: the main difference is that cygwin32 +[ A Note about Cygwin and MinGW: the main difference is that Cygwin binaries are always linked against cygwin.dll. This dll encapsulates most standard Unix C extensions, which is very handy if you're porting unix -software to windows. However, wxMSW doesn't need this, so mingw32 is +software to windows. However, wxMSW doesn't need this, so MinGW is preferable if you write portable C(++). ] You might want to build both Unix and Windows binaries in the same source @@ -203,7 +192,7 @@ yourself: DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \ ../configure --host=i586-mingw32 --with-mingw -(all assuming you're using mingw32) +(all assuming you're using MinGW) By default this will compile a DLL, if you want a static library, specify --disable-shared. @@ -215,7 +204,7 @@ will be a compile error :-) NB: if you are using a very old compiler you risk to get quite a few warnings about "ANSI C++ forbids implicit conversion from 'void *'" in all places where va_arg macro is used. This is due to a bug in (some versions of) - mingw32 headers which may be corrected by upgrading your compier, + MinGW headers which may be corrected by upgrading your compier, otherwise you might edit the file ${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h @@ -238,7 +227,7 @@ typedef void *__gnuc_va_list; __gnuc_va_list is char *. If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib -( or just libwx_msw.a if you opted for a static build ). +(or just libwx_msw.a if you opted for a static build). Now try building the minimal sample: -> cd samples/minimal diff --git a/Makefile.in b/Makefile.in index bce0b0c21c..e235090101 100644 --- a/Makefile.in +++ b/Makefile.in @@ -391,11 +391,23 @@ afminstall: preinstall $(INSTALL) -d $(datadir)/wx/$(VER_MAJMIN)/gs_afm $(INSTALL_DATA) $(top_srcdir)/misc/afm/*.afm $(datadir)/wx/$(VER_MAJMIN)/afm $(INSTALL_DATA) $(top_srcdir)/misc/gs_afm/*.afm $(datadir)/wx/$(VER_MAJMIN)/gs_afm - + m4datainstall: preinstall $(INSTALL) -d $(datadir)/aclocal $(INSTALL_DATA) $(top_srcdir)/wxwin.m4 $(datadir)/aclocal +win32install: preinstall + $(INSTALL) -d $(includedir)/wx/msw + $(INSTALL) -d $(includedir)/wx/msw/gnuwin32 + $(INSTALL) -d $(includedir)/wx/msw/gnuwin32/gl + $(INSTALL_DATA) $(top_srcdir)/include/wx/msw/*.cur \ + $(top_srcdir)/include/wx/msw/*.ico \ + $(top_srcdir)/include/wx/msw/*.bmp \ + $(top_srcdir)/include/wx/msw/wx.rc \ + $(includedir)/wx/msw + $(INSTALL_DATA) $(top_srcdir)/include/wx/msw/gnuwin32/*.h $(includedir)/wx/msw/gnuwin32 + $(INSTALL_DATA) $(top_srcdir)/include/wx/msw/gnuwin32/gl/*.h $(includedir)/wx/msw/gnuwin32/gl + # this is the real install target: copies the library, wx-config and the # headers to the installation directory preinstall: $(build_libdir)/@WX_TARGET_LIBRARY@ $(top_builddir)/wx@TOOLCHAIN_NAME@-config @@ -462,7 +474,7 @@ preinstall_gl: $(build_libdir)/@WX_TARGET_LIBRARY_GL@ @if test ! -d $(libdir); then $(INSTALL) -d $(libdir); fi @INSTALL_LIBRARY@ $(build_libdir)/@WX_TARGET_LIBRARY_GL@ $(libdir)/@WX_TARGET_LIBRARY_GL@ -install: @AFMINSTALL@ @WX_ALL_INSTALLED@ m4datainstall +install: @AFMINSTALL@ @WX_ALL_INSTALLED@ m4datainstall @WIN32INSTALL@ @echo " " @echo " The installation of wxWindows is finished. On certain" @echo " platforms (e.g. Linux) you'll now have to run ldconfig" @@ -493,7 +505,7 @@ uninstall: @$(RM) $(bindir)/wx@TOOLCHAIN_NAME@-config @$(RM) $(datadir)/wx/$(VER_MAJMIN)/afm/* @$(RM) $(datadir)/wx/$(VER_MAJMIN)/gs_afm/* -# FIXME: wxBase doesnt install these next 3 dirs. + # FIXME: wxBase doesnt install these next 3 dirs. @-rmdir $(datadir)/wx/$(VER_MAJMIN)/gs_afm @-rmdir $(datadir)/wx/$(VER_MAJMIN)/afm @-rmdir $(datadir)/wx/$(VER_MAJMIN) @@ -502,6 +514,7 @@ uninstall: @list='$(HEADERS)'; for p in $$list; do \ $(RM) $(includedir)/wx/$$p; \ done + # TODO: uninstall the files installed by win32install @echo " Removing i18n files..." @-for p in $(WX_LINGUAS); do \ $(RM) $(localedir)/$$p/LC_MESSAGES/wxstd.mo; \ @@ -536,6 +549,7 @@ ALL_DIST: distclean cp $(WXDIR)/install-sh $(DISTDIR) cp $(WXDIR)/mkinstalldirs $(DISTDIR) cp $(WXDIR)/wx-config.in $(DISTDIR) + cp $(WXDIR)/version-script.in $(DISTDIR) cp $(WXDIR)/setup.h.in $(DISTDIR) cp $(WXDIR)/setup.h_vms $(DISTDIR) cp $(WXDIR)/descrip.mms $(DISTDIR) @@ -580,7 +594,8 @@ ALL_GUI_DIST: ALL_DIST 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 - cp $(DOCDIR)/$(TOOLKITDIR)/todo.txt $(DISTDIR)/TODO.txt + if test -f $(DOCDIR)/$(TOOLKITDIR)/todo.txt ; then \ + cp $(DOCDIR)/$(TOOLKITDIR)/todo.txt $(DISTDIR)/TODO.txt ; fi mkdir $(DISTDIR)/include mkdir $(DISTDIR)/include/wx mkdir $(DISTDIR)/include/wx/$(TOOLKITDIR) @@ -777,16 +792,28 @@ MSW_ZIP_TEXT_DIST: ALL_GUI_DIST cp $(SRCDIR)/*.??? $(DISTDIR)/src cp $(SRCDIR)/*.?? $(DISTDIR)/src cp $(MSWDIR)/?ake*.* $(DISTDIR)/src/msw + mkdir $(DISTDIR)/contrib + cp -R $(WXDIR)/contrib $(DISTDIR) UNIV_DIST: ALL_GUI_DIST mkdir $(DISTDIR)/include/wx/univ mkdir $(DISTDIR)/src/univ mkdir $(DISTDIR)/src/univ/themes cp $(INCDIR)/wx/univ/*.h $(DISTDIR)/include/wx/univ + cp $(INCDIR)/wx/univ/setup0.h $(DISTDIR)/include/wx/univ/setup.h cp $(SRCDIR)/univ/files.lst $(DISTDIR)/src/univ cp $(SRCDIR)/univ/*.cpp $(DISTDIR)/src/univ cp $(SRCDIR)/univ/themes/*.cpp $(DISTDIR)/src/univ/themes +MGL_DIST: UNIV_DIST + cp $(WXDIR)/wxMGL.spec $(DISTDIR) + cp $(INCDIR)/wx/mgl/*.h $(DISTDIR)/include/wx/mgl + cp $(SRCDIR)/mgl/files.lst $(DISTDIR)/src/mgl + cp $(SRCDIR)/mgl/make* $(DISTDIR)/src/mgl + cp $(SRCDIR)/mgl/*.cpp $(DISTDIR)/src/mgl + mkdir $(DISTDIR)/contrib + cp -R $(WXDIR)/contrib $(DISTDIR) + DEMOS_DIST: ALL_GUI_DIST mkdir $(DISTDIR)/demos cp $(DEMODIR)/Makefile.in $(DISTDIR)/demos @@ -842,6 +869,13 @@ SAMPLES_DIST: ALL_GUI_DIST cp $(SAMPDIR)/configure $(DISTDIR)/samples cp $(SAMPDIR)/configure.in $(DISTDIR)/samples + mkdir $(DISTDIR)/samples/artprov + cp $(SAMPDIR)/artprov/Makefile.in $(DISTDIR)/samples/artprov + cp $(SAMPDIR)/artprov/makefile.unx $(DISTDIR)/samples/artprov + cp $(SAMPDIR)/artprov/*.cpp $(DISTDIR)/samples/artprov + cp $(SAMPDIR)/artprov/*.h $(DISTDIR)/samples/artprov + cp $(SAMPDIR)/artprov/*.xpm $(DISTDIR)/samples/artprov + mkdir $(DISTDIR)/samples/calendar cp $(SAMPDIR)/calendar/Makefile.in $(DISTDIR)/samples/calendar cp $(SAMPDIR)/calendar/makefile.unx $(DISTDIR)/samples/calendar @@ -1018,7 +1052,7 @@ SAMPLES_DIST: ALL_GUI_DIST cp $(SAMPDIR)/image/makefile.unx $(DISTDIR)/samples/image cp $(SAMPDIR)/image/*.cpp $(DISTDIR)/samples/image cp $(SAMPDIR)/image/*.mms $(DISTDIR)/samples/image - cp $(SAMPDIR)/image/horse.* $(DISTDIR)/samples/image + cp $(SAMPDIR)/image/horse*.* $(DISTDIR)/samples/image cp $(SAMPDIR)/image/smile.xbm $(DISTDIR)/samples/image cp $(SAMPDIR)/image/smile.xpm $(DISTDIR)/samples/image @@ -1053,6 +1087,10 @@ SAMPLES_DIST: ALL_GUI_DIST cp $(SAMPDIR)/joytest/*.h $(DISTDIR)/samples/joytest cp $(SAMPDIR)/joytest/*.wav $(DISTDIR)/samples/joytest + mkdir $(DISTDIR)/samples/keyboard + cp $(SAMPDIR)/keyboard/Makefile.in $(DISTDIR)/samples/keyboard + cp $(SAMPDIR)/keyboard/*.cpp $(DISTDIR)/samples/keyboard + mkdir $(DISTDIR)/samples/layout cp $(SAMPDIR)/layout/Makefile.in $(DISTDIR)/samples/layout cp $(SAMPDIR)/layout/makefile.unx $(DISTDIR)/samples/layout @@ -1110,7 +1148,12 @@ SAMPLES_DIST: ALL_GUI_DIST cp $(SAMPDIR)/mobile/wxedit/Makefile.in $(DISTDIR)/samples/mobile/wxedit cp $(SAMPDIR)/mobile/wxedit/*.cpp $(DISTDIR)/samples/mobile/wxedit cp $(SAMPDIR)/mobile/wxedit/*.h $(DISTDIR)/samples/mobile/wxedit - + mkdir $(DISTDIR)/samples/mobile/styles + cp $(SAMPDIR)/mobile/styles/Makefile.in $(DISTDIR)/samples/mobile/styles + cp $(SAMPDIR)/mobile/styles/*.cpp $(DISTDIR)/samples/mobile/styles + cp $(SAMPDIR)/mobile/styles/*.h $(DISTDIR)/samples/mobile/styles + cp $(SAMPDIR)/mobile/styles/*.jpg $(DISTDIR)/samples/mobile/styles + mkdir $(DISTDIR)/samples/dialup cp $(SAMPDIR)/dialup/Makefile.in $(DISTDIR)/samples/dialup cp $(SAMPDIR)/dialup/makefile.unx $(DISTDIR)/samples/dialup @@ -1305,6 +1348,18 @@ UTILS_DIST: ALL_GUI_DIST cp $(UTILSDIR)/tex2rtf/src/*.cpp $(DISTDIR)/utils/tex2rtf/src cp $(UTILSDIR)/tex2rtf/src/tex2rtf.* $(DISTDIR)/utils/tex2rtf/src + mkdir $(DISTDIR)/utils/emulator + mkdir $(DISTDIR)/utils/emulator/src + mkdir $(DISTDIR)/utils/emulator/docs + cp $(UTILSDIR)/emulator/*.in $(DISTDIR)/utils/emulator + cp $(UTILSDIR)/emulator/src/*.h $(DISTDIR)/utils/emulator/src + cp $(UTILSDIR)/emulator/src/*.in $(DISTDIR)/utils/emulator/src + cp $(UTILSDIR)/emulator/src/*.cpp $(DISTDIR)/utils/emulator/src + cp $(UTILSDIR)/emulator/src/*.jpg $(DISTDIR)/utils/emulator/src + cp $(UTILSDIR)/emulator/src/*.wxe $(DISTDIR)/utils/emulator/src + cp $(UTILSDIR)/emulator/docs/*.txt $(DISTDIR)/utils/emulator/docs + cp $(UTILSDIR)/emulator/docs/*.jpg $(DISTDIR)/utils/emulator/docs + mkdir $(DISTDIR)/utils/makegen mkdir $(DISTDIR)/utils/makegen/templates cp $(UTILSDIR)/makegen/Makefile.in $(DISTDIR)/utils/makegen @@ -1319,7 +1374,29 @@ UTILS_DIST: ALL_GUI_DIST cp $(UTILSDIR)/HelpGen/Makefile.in $(DISTDIR)/utils/HelpGen cp $(UTILSDIR)/HelpGen/src/*.* $(DISTDIR)/utils/HelpGen/src - cp -R $(UTILSDIR)/dialoged $(DISTDIR)/utils/dialoged + mkdir $(DISTDIR)/utils/dialoged + mkdir $(DISTDIR)/utils/dialoged/src + mkdir $(DISTDIR)/utils/dialoged/src/bitmaps + mkdir $(DISTDIR)/utils/dialoged/docs + cp $(UTILSDIR)/dialoged/Makefile.in $(DISTDIR)/utils/dialoged + cp $(UTILSDIR)/dialoged/src/*.h $(DISTDIR)/utils/dialoged/src + cp $(UTILSDIR)/dialoged/src/*.cpp $(DISTDIR)/utils/dialoged/src + cp $(UTILSDIR)/dialoged/src/Makefile.in $(DISTDIR)/utils/dialoged/src + cp $(UTILSDIR)/dialoged/src/makefile.unx $(DISTDIR)/utils/dialoged/src + cp $(UTILSDIR)/dialoged/src/bitmaps/*.xpm $(DISTDIR)/utils/dialoged/src/bitmaps + cp $(UTILSDIR)/dialoged/docs/*.tex $(DISTDIR)/utils/dialoged/docs + cp $(UTILSDIR)/dialoged/docs/*.ini $(DISTDIR)/utils/dialoged/docs + cp $(UTILSDIR)/dialoged/docs/*.gif $(DISTDIR)/utils/dialoged/docs + + mkdir $(DISTDIR)/utils/helpview + mkdir $(DISTDIR)/utils/helpview/src + mkdir $(DISTDIR)/utils/helpview/src/bitmaps + cp $(UTILSDIR)/helpview/Makefile.in $(DISTDIR)/utils/helpview + cp $(UTILSDIR)/helpview/src/*.h $(DISTDIR)/utils/helpview/src + cp $(UTILSDIR)/helpview/src/*.cpp $(DISTDIR)/utils/helpview/src + cp $(UTILSDIR)/helpview/src/Makefile.in $(DISTDIR)/utils/helpview/src + cp $(UTILSDIR)/helpview/src/test.zip $(DISTDIR)/utils/helpview/src + cp $(UTILSDIR)/helpview/src/bitmaps/*.xpm $(DISTDIR)/utils/helpview/src/bitmaps MISC_DIST: ALL_GUI_DIST mkdir $(DISTDIR)/misc @@ -1364,12 +1441,16 @@ PYTHON_DIST: mkdir $(DISTDIR)/wxPython/demo/bmp_source mkdir $(DISTDIR)/wxPython/demo/data mkdir $(DISTDIR)/wxPython/demo/dllwidget + mkdir $(DISTDIR)/wxPython/distutils + mkdir $(DISTDIR)/wxPython/distutils/command mkdir $(DISTDIR)/wxPython/src mkdir $(DISTDIR)/wxPython/src/gtk mkdir $(DISTDIR)/wxPython/scripts mkdir $(DISTDIR)/wxPython/wxPython mkdir $(DISTDIR)/wxPython/wxPython/lib mkdir $(DISTDIR)/wxPython/wxPython/lib/PyCrust + mkdir $(DISTDIR)/wxPython/wxPython/lib/PyCrust/wxd + mkdir $(DISTDIR)/wxPython/wxPython/lib/colourchooser mkdir $(DISTDIR)/wxPython/wxPython/lib/editor mkdir $(DISTDIR)/wxPython/wxPython/lib/mixins mkdir $(DISTDIR)/wxPython/wxPython/tools @@ -1393,12 +1474,16 @@ PYTHON_DIST: -cp $(WXDIR)/wxPython/demo/data/* $(DISTDIR)/wxPython/demo/data -cp $(WXDIR)/wxPython/demo/dllwidget/Makefile $(DISTDIR)/wxPython/demo/dllwidget -cp $(WXDIR)/wxPython/demo/dllwidget/test_* $(DISTDIR)/wxPython/demo/dllwidget + cp $(WXDIR)/wxPython/distutils/*.py $(DISTDIR)/wxPython/distutils + cp $(WXDIR)/wxPython/distutils/command/*.py $(DISTDIR)/wxPython/distutils/command -cp $(WXDIR)/wxPython/scripts/* $(DISTDIR)/wxPython/scripts -cp $(WXDIR)/wxPython/src/* $(DISTDIR)/wxPython/src cp $(WXDIR)/wxPython/src/gtk/*.py $(DISTDIR)/wxPython/src/gtk cp $(WXDIR)/wxPython/src/gtk/*.cpp $(DISTDIR)/wxPython/src/gtk cp $(WXDIR)/wxPython/wxPython/lib/*.py $(DISTDIR)/wxPython/wxPython/lib cp $(WXDIR)/wxPython/wxPython/lib/PyCrust/*.py $(DISTDIR)/wxPython/wxPython/lib/PyCrust + cp $(WXDIR)/wxPython/wxPython/lib/PyCrust/wxd/*.py $(DISTDIR)/wxPython/wxPython/lib/PyCrust/wxd + cp $(WXDIR)/wxPython/wxPython/lib/colourchooser/*.py $(DISTDIR)/wxPython/wxPython/lib/colourchooser cp $(WXDIR)/wxPython/wxPython/lib/editor/*.py $(DISTDIR)/wxPython/wxPython/lib/editor cp $(WXDIR)/wxPython/wxPython/lib/mixins/*.py $(DISTDIR)/wxPython/wxPython/lib/mixins cp $(WXDIR)/wxPython/wxPython/tools/*.py $(DISTDIR)/wxPython/wxPython/tools @@ -1426,6 +1511,11 @@ dist-only: dist: @GUIDIST@ @echo "*** Creating wxWindows distribution in $(DISTDIR)..." + @# now prune away a lot of the crap included by using cp -R + @# in other dist targets. + find $(DISTDIR) \( -name "CVS" -o -name ".cvsignore" -o -name "*.dsp" -o -name "*.dsw" -o -name "*.hh*" -o \ + \( -name "makefile.*" -a ! -name "makefile.unx" \) \) \ + -print0 | xargs -0 rm -rf @cd _dist_dir && tar ch $(DISTDIRNAME) | gzip -f9 > ../$(WXARCHIVE); @if test "$(USE_GUI)" = 1; then \ cd $(DISTDIR); \ @@ -1499,6 +1589,7 @@ debian-dist: debian-native-dist debian-msw-dirs MSW_DIST mv $(DISTDIR) $(WXDIR)/../wxwindows$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER)-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER) debian-native-dist: @GUIDIST@ UNIV_DIST MANUAL_DIST PYTHON_DIST + cp $(SRCDIR)/files.lst $(DISTDIR)/src debian-msw-dirs: mkdir $(DISTDIR)/include/wx/msw diff --git a/acinclude.m4 b/acinclude.m4 index 47508a0fbc..e49126ddcb 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -19,7 +19,7 @@ dnl --------------------------------------------------------------------------- AC_DEFUN([WX_PATH_FIND_INCLUDES], [ ac_find_includes= -for ac_dir in $1; +for ac_dir in $1 /usr/include; do if test -f "$ac_dir/$2"; then ac_find_includes=$ac_dir @@ -35,7 +35,7 @@ dnl --------------------------------------------------------------------------- AC_DEFUN([WX_PATH_FIND_LIBRARIES], [ ac_find_libraries= -for ac_dir in $1; +for ac_dir in $1 /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/lib$2.$ac_extension"; then @@ -51,13 +51,17 @@ dnl Path to include, already defined dnl --------------------------------------------------------------------------- AC_DEFUN([WX_INCLUDE_PATH_EXIST], [ - ac_path_to_include=$1 - echo "$2" | grep "\-I$1" > /dev/null - result=$? - if test $result = 0; then + dnl never add -I/usr/include to the CPPFLAGS + if test "x$1" = "x/usr/include"; then ac_path_to_include="" else - ac_path_to_include=" -I$1" + echo "$2" | grep "\-I$1" > /dev/null + result=$? + if test $result = 0; then + ac_path_to_include="" + else + ac_path_to_include=" -I$1" + fi fi ]) @@ -378,6 +382,59 @@ AC_DEFUN([WX_ARG_ENABLE], ]) +dnl =========================================================================== +dnl Linker features test +dnl =========================================================================== + +dnl --------------------------------------------------------------------------- +dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned +dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use +dnl version script file named versionfile +dnl +dnl call WX_VERSIONED_SYMBOLS(versionfile) +dnl --------------------------------------------------------------------------- +AC_DEFUN([WX_VERSIONED_SYMBOLS], +[ + found_versioning=no + + dnl FIXME - doesn't work, Solaris linker doesn't accept wildcards + dnl in the script. + dnl dnl Check for known non-gcc cases: + dnl case "${host}" in + dnl *-*-solaris2* ) + dnl if test "x$GCC" != "xyes" ; then + dnl LDFLAGS_VERSIONING="-M $1" + dnl found_versioning=yes + dnl fi + dnl ;; + dnl esac + + dnl Generic check for GCC or GCC-like behaviour (Intel C++, GCC): + if test $found_versioning = no ; then + AC_CACHE_CHECK([if the linker accepts --version-script], wx_cv_version_script, + [ + echo "VER_1 { *; };" >conftest.sym + echo "int main() { return 0; }" >conftest.cpp + + if AC_TRY_COMMAND([ + $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp + -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr]) ; then + if test -s conftest.stderr ; then + wx_cv_version_script=no + else + wx_cv_version_script=yes + fi + else + wx_cv_version_script=no + fi + rm -f conftest.output conftest.stderr conftest.sym conftest.cpp + ]) + if test $wx_cv_version_script = yes ; then + LDFLAGS_VERSIONING="-Wl,--version-script,$1" + fi + fi +]) + dnl =========================================================================== dnl "3rd party" macros included here because they are not widely available diff --git a/aclocal.m4 b/aclocal.m4 index 808ecf4a94..5bec16026b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p5 +dnl aclocal.m4 generated automatically by aclocal 1.4-p6 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation @@ -31,7 +31,7 @@ dnl --------------------------------------------------------------------------- AC_DEFUN([WX_PATH_FIND_INCLUDES], [ ac_find_includes= -for ac_dir in $1; +for ac_dir in $1 /usr/include; do if test -f "$ac_dir/$2"; then ac_find_includes=$ac_dir @@ -47,7 +47,7 @@ dnl --------------------------------------------------------------------------- AC_DEFUN([WX_PATH_FIND_LIBRARIES], [ ac_find_libraries= -for ac_dir in $1; +for ac_dir in $1 /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/lib$2.$ac_extension"; then @@ -63,13 +63,17 @@ dnl Path to include, already defined dnl --------------------------------------------------------------------------- AC_DEFUN([WX_INCLUDE_PATH_EXIST], [ - ac_path_to_include=$1 - echo "$2" | grep "\-I$1" > /dev/null - result=$? - if test $result = 0; then + dnl never add -I/usr/include to the CPPFLAGS + if test "x$1" = "x/usr/include"; then ac_path_to_include="" else - ac_path_to_include=" -I$1" + echo "$2" | grep "\-I$1" > /dev/null + result=$? + if test $result = 0; then + ac_path_to_include="" + else + ac_path_to_include=" -I$1" + fi fi ]) @@ -349,6 +353,10 @@ AC_DEFUN([WX_ARG_WITH], dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name, enablestring) +dnl +dnl enablestring is a hack and allows to show "checking for --disable-foo" +dnl message when running configure instead of the default "checking for +dnl --enable-foo" one whih is useful for the options enabled by default AC_DEFUN([WX_ARG_ENABLE], [ enablestring=$4 @@ -386,6 +394,59 @@ AC_DEFUN([WX_ARG_ENABLE], ]) +dnl =========================================================================== +dnl Linker features test +dnl =========================================================================== + +dnl --------------------------------------------------------------------------- +dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned +dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use +dnl version script file named versionfile +dnl +dnl call WX_VERSIONED_SYMBOLS(versionfile) +dnl --------------------------------------------------------------------------- +AC_DEFUN([WX_VERSIONED_SYMBOLS], +[ + found_versioning=no + + dnl FIXME - doesn't work, Solaris linker doesn't accept wildcards + dnl in the script. + dnl dnl Check for known non-gcc cases: + dnl case "${host}" in + dnl *-*-solaris2* ) + dnl if test "x$GCC" != "xyes" ; then + dnl LDFLAGS_VERSIONING="-M $1" + dnl found_versioning=yes + dnl fi + dnl ;; + dnl esac + + dnl Generic check for GCC or GCC-like behaviour (Intel C++, GCC): + if test $found_versioning = no ; then + AC_CACHE_CHECK([if the linker accepts --version-script], wx_cv_version_script, + [ + echo "VER_1 { *; };" >conftest.sym + echo "int main() { return 0; }" >conftest.cpp + + if AC_TRY_COMMAND([ + $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp + -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr]) ; then + if test -s conftest.stderr ; then + wx_cv_version_script=no + else + wx_cv_version_script=yes + fi + else + wx_cv_version_script=no + fi + rm -f conftest.output conftest.stderr conftest.sym conftest.cpp + ]) + if test $wx_cv_version_script = yes ; then + LDFLAGS_VERSIONING="-Wl,--version-script,$1" + fi + fi +]) + dnl =========================================================================== dnl "3rd party" macros included here because they are not widely available @@ -729,64 +790,6 @@ main () rm -f conf.gtktest ]) - -dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) -dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page -dnl also defines GSTUFF_PKG_ERRORS on error -AC_DEFUN(PKG_CHECK_MODULES, [ - succeeded=no - - if test -z "$PKG_CONFIG"; then - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - fi - - if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or set the PKG_CONFIG environment variable" - echo "*** to the full path to pkg-config." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." - else - PKG_CONFIG_MIN_VERSION=0.9.0 - if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - AC_MSG_CHECKING(for $2) - - if $PKG_CONFIG --exists "$2" ; then - AC_MSG_RESULT(yes) - succeeded=yes - - AC_MSG_CHECKING($1_CFLAGS) - $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` - AC_MSG_RESULT($$1_CFLAGS) - - AC_MSG_CHECKING($1_LIBS) - $1_LIBS=`$PKG_CONFIG --libs "$2"` - AC_MSG_RESULT($$1_LIBS) - else - $1_CFLAGS="" - $1_LIBS="" - ## If we have a custom action on failure, don't print errors, but - ## do set a variable so people can do so. - $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` - ifelse([$4], ,echo $$1_PKG_ERRORS,) - fi - - AC_SUBST($1_CFLAGS) - AC_SUBST($1_LIBS) - else - echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." - echo "*** See http://www.freedesktop.org/software/pkgconfig" - fi - fi - - if test $succeeded = yes; then - ifelse([$3], , :, [$3]) - else - ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) - fi -]) - - - # Configure paths for GTK+ # Owen Taylor 97-11-3 @@ -982,3 +985,61 @@ main () rm -f conf.gtktest ]) + +dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) +dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page +dnl also defines GSTUFF_PKG_ERRORS on error +AC_DEFUN(PKG_CHECK_MODULES, [ + succeeded=no + + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + AC_MSG_CHECKING(for $2) + + if $PKG_CONFIG --exists "$2" ; then + AC_MSG_RESULT(yes) + succeeded=yes + + AC_MSG_CHECKING($1_CFLAGS) + $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` + AC_MSG_RESULT($$1_CFLAGS) + + AC_MSG_CHECKING($1_LIBS) + $1_LIBS=`$PKG_CONFIG --libs "$2"` + AC_MSG_RESULT($$1_LIBS) + else + $1_CFLAGS="" + $1_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + ifelse([$4], ,echo $$1_PKG_ERRORS,) + fi + + AC_SUBST($1_CFLAGS) + AC_SUBST($1_LIBS) + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + ifelse([$3], , :, [$3]) + else + ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) + fi +]) + + + diff --git a/art/wxwin.ico b/art/wxwin.ico new file mode 100644 index 0000000000..8d2dc18c6b Binary files /dev/null and b/art/wxwin.ico differ diff --git a/art/wxwin16x16.png b/art/wxwin16x16.png new file mode 100644 index 0000000000..e07faeb73f Binary files /dev/null and b/art/wxwin16x16.png differ diff --git a/art/wxwin16x16.xpm b/art/wxwin16x16.xpm new file mode 100644 index 0000000000..9964e69313 --- /dev/null +++ b/art/wxwin16x16.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char *wxwin16x16_xpm[] = { +"16 16 6 1", +" c None", +". c #000000", +"X c #000084", +"o c #FFFFFF", +"O c #FFFF00", +"+ c #FF0000", +" ", +" ", +" ", +" ....... ", +" .XXXXX. ", +" .oXXXX. ", +" .oXXX.......", +".....oXXX.OOOOO.", +".+++.XXXX.oOOOO.", +".o++......oOOOO.", +".o++++. .oOOOO.", +".o++++. .OOOOO.", +".+++++. .......", +"....... ", +" ", +" "}; diff --git a/art/wxwin32x32.png b/art/wxwin32x32.png new file mode 100644 index 0000000000..20eda44161 Binary files /dev/null and b/art/wxwin32x32.png differ diff --git a/art/wxwin32x32.xpm b/art/wxwin32x32.xpm new file mode 100644 index 0000000000..34b841a0e8 --- /dev/null +++ b/art/wxwin32x32.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *wxwin32x32_xpm[] = { +"32 32 6 1", +" c None", +". c #000000", +"X c #000084", +"o c #FFFFFF", +"O c #FFFF00", +"+ c #FF0000", +" ", +" ", +" ", +" ", +" ", +" .............. ", +" .XXXXXXXXXXXX. ", +" .XXXXXXXXXXXX. ", +" .XooXXXXXXXXX. ", +" .XooXXXXXXXXX. ", +" .XooXXXXXXXXX. ", +" .XooXXXXXX..............", +" .XooXXXXXX.OOOOOOOOOOOO.", +".........XooXXXXXX.OOOOOOOOOOOO.", +".+++++++.XooXXXXXX.OooOOOOOOOOO.", +".+++++++.XooXXXXXX.OooOOOOOOOOO.", +".+oo++++.XXXXXXXXX.OooOOOOOOOOO.", +".+oo++++.XXXXXXXXX.OooOOOOOOOOO.", +".+oo++++...........OooOOOOOOOOO.", +".+oo+++++++++. .OooOOOOOOOOO.", +".+oo+++++++++. .OooOOOOOOOOO.", +".+oo+++++++++. .OooOOOOOOOOO.", +".+oo+++++++++. .OOOOOOOOOOOO.", +".+oo+++++++++. .OOOOOOOOOOOO.", +".++++++++++++. ..............", +".++++++++++++. ", +".............. ", +" ", +" ", +" ", +" ", +" "}; diff --git a/config.guess b/config.guess index dff9e481b7..9b1384be4b 100755 --- a/config.guess +++ b/config.guess @@ -1,9 +1,9 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2001-09-04' +timestamp='2002-11-30' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -24,8 +24,9 @@ timestamp='2001-09-04' # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Written by Per Bothner . -# Please send patches to . +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and @@ -87,30 +88,40 @@ if test $# != 0; then exit 1 fi +trap 'exit 1' 1 2 15 -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. -# CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. -set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c ; - for c in cc gcc c89 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; - if test $? = 0 ; then +# This shell variable is my proudest work .. or something. --bje + +set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; +(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) + || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; +dummy=$tmpdir/dummy ; +files="$dummy.c $dummy.o $dummy.rel $dummy" ; +trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; - rm -f $dummy.c $dummy.o $dummy.rel ; + rm -f $files ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac' +esac ; +unset files' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) @@ -127,29 +138,30 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) - # Netbsd (nbsd) targets should (where applicable) match one or + # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - *) machine=${UNAME_MACHINE}-unknown ;; + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. - case "${UNAME_MACHINE}" in - i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null @@ -166,12 +178,62 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -180,6 +242,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. + eval $set_cc_for_build cat <$dummy.s .data \$Lformat: @@ -205,10 +268,9 @@ main: jsr \$26,exit .end main EOF - eval $set_cc_for_build - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null if test "$?" = 0 ; then - case `./$dummy` in + case `$dummy` in 0-0) UNAME_MACHINE="alpha" ;; @@ -230,9 +292,12 @@ EOF 2-1307) UNAME_MACHINE="alphaev68" ;; + 3-1307) + UNAME_MACHINE="alphaev7" + ;; esac fi - rm -f $dummy.s $dummy + rm -f $dummy.s $dummy && rmdir $tmpdir echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) @@ -247,29 +312,11 @@ EOF Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -291,6 +338,10 @@ EOF NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; @@ -319,7 +370,7 @@ EOF echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) @@ -333,12 +384,6 @@ EOF aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; - sparc*:NetBSD:*) - echo `uname -p`-unknown-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -365,18 +410,6 @@ EOF *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; @@ -415,15 +448,21 @@ EOF exit (-1); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -496,8 +535,8 @@ EOF exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -506,7 +545,7 @@ EOF fi exit 0 ;; *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else @@ -546,10 +585,8 @@ EOF 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - case "${HPUX_REV}" in - 11.[0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 @@ -558,13 +595,13 @@ EOF case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac - fi ;; - esac - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include @@ -597,10 +634,10 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy && rmdir $tmpdir + fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; @@ -635,8 +672,8 @@ EOF exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -664,9 +701,6 @@ EOF parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; @@ -685,9 +719,6 @@ EOF C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; @@ -709,18 +740,12 @@ EOF CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; @@ -731,10 +756,19 @@ EOF echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -745,11 +779,17 @@ EOF i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix + echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin @@ -770,16 +810,50 @@ EOF echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux + echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) - case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in - big) echo mips-unknown-linux-gnu && exit 0 ;; - little) echo mipsel-unknown-linux-gnu && exit 0 ;; - esac + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu @@ -828,7 +902,8 @@ EOF # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_supported_targets=`cd /; ld --help 2>&1 \ + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// @@ -840,7 +915,7 @@ EOF ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; + exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; @@ -852,32 +927,29 @@ EOF esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build - cat >$dummy.c < -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-pc-linux-gnu\n", argv[1]); -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-pc-linux-gnuaout\n", argv[1]); -#endif - return 0; -} + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) @@ -894,6 +966,23 @@ EOF # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -915,22 +1004,19 @@ EOF UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -954,9 +1040,15 @@ EOF # "miniframe" echo m68010-convergent-sysv exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` @@ -973,9 +1065,6 @@ EOF mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; @@ -1047,6 +1136,9 @@ EOF SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; @@ -1057,15 +1149,17 @@ EOF echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-[KW]:NONSTOP_KERNEL:*:*) + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) @@ -1088,11 +1182,6 @@ EOF fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; @@ -1111,12 +1200,6 @@ EOF *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1237,8 +1320,8 @@ main () } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 +rm -f $dummy.c $dummy && rmdir $tmpdir # Apollos put the system type in the environment. diff --git a/config.sub b/config.sub index 393f13d373..04baf3d80d 100755 --- a/config.sub +++ b/config.sub @@ -1,9 +1,9 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2001-09-07' +timestamp='2003-01-03' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -29,7 +29,8 @@ timestamp='2001-09-07' # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Please send patches to . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -117,7 +118,7 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -226,32 +227,44 @@ case $basic_machine in 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dsp16xx \ - | fr30 \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ + | ip2k \ | m32r | m68000 | m68k | m88k | mcore \ - | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el | mips64vr4300 \ - | mips64vr4300el | mips64vr5000 | mips64vr5000el \ - | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ - | mipsisa32 \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | msp430 \ | ns16k | ns32k \ - | openrisc \ + | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | s390 | s390x \ - | sh | sh[34] | sh[34]eb | shbe | shle \ - | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ - | stormy16 | strongarm \ + | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ | tahoe | thumb | tic80 | tron \ - | v850 \ + | v850 | v850e \ | we32k \ - | x86 | xscale \ + | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; @@ -278,38 +291,53 @@ case $basic_machine in 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alphapca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armv*-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c54x-* \ - | clipper-* | cray2-* | cydra-* \ - | d10v-* | d30v-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | fx80-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ | m32r-* \ - | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ - | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ - | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ - | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | s390-* | s390x-* \ - | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ - | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ - | v850-* | vax-* \ + | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ | ymp-* \ | z8k-*) ;; @@ -374,6 +402,10 @@ case $basic_machine in basic_machine=ns32k-sequent os=-dynix ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -394,16 +426,8 @@ case $basic_machine in basic_machine=c38-convex os=-bsd ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [cjt]90) - basic_machine=${basic_machine}-cray + cray | j90) + basic_machine=j90-cray os=-unicos ;; crds | unos) @@ -418,6 +442,14 @@ case $basic_machine in decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola @@ -598,14 +630,6 @@ case $basic_machine in basic_machine=m68k-atari os=-mint ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; @@ -620,6 +644,10 @@ case $basic_machine in basic_machine=m68k-rom68k os=-coff ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; msdos) basic_machine=i386-pc os=-msdos @@ -692,6 +720,10 @@ case $basic_machine in np1) basic_machine=np1-gould ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -699,6 +731,10 @@ case $basic_machine in basic_machine=hppa1.1-oki os=-proelf ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose @@ -721,19 +757,19 @@ case $basic_machine in pbb) basic_machine=m68k-tti ;; - pc532 | pc532-*) + pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | k6 | nexgen) + pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; - pentiumpro | p6 | 6x86 | athlon) + pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-*) + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) @@ -748,22 +784,22 @@ case $basic_machine in power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown - ;; + ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown - ;; + ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown - ;; + ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown - ;; + ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; @@ -784,10 +820,22 @@ case $basic_machine in rtpc | rtpc-*) basic_machine=romp-ibm ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; sa29200) basic_machine=a29k-amd os=-udi ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; sequent) basic_machine=i386-sequent ;; @@ -795,7 +843,7 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; - sparclite-wrs) + sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; @@ -862,9 +910,17 @@ case $basic_machine in os=-dynix ;; t3e) - basic_machine=t3e-cray + basic_machine=alphaev5-cray os=-unicos ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff @@ -875,6 +931,10 @@ case $basic_machine in tx39el) basic_machine=mipstx39el-unknown ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; tower | tower-32) basic_machine=m68k-ncr ;; @@ -899,8 +959,8 @@ case $basic_machine in os=-vms ;; vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; + basic_machine=f301-fujitsu + ;; vxworks960) basic_machine=i960-wrs os=-vxworks @@ -921,17 +981,13 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) + xps | xps100) basic_machine=xps100-honeywell ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim @@ -952,13 +1008,6 @@ case $basic_machine in op60c) basic_machine=hppa1.1-oki ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; romp) basic_machine=romp-ibm ;; @@ -978,13 +1027,16 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh3eb | sh4eb) + sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) basic_machine=sh-unknown ;; + sh64) + basic_machine=sh64-unknown + ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; - cydra) + cydra) basic_machine=cydra-cydrome ;; orion) @@ -999,10 +1051,6 @@ case $basic_machine in pmac | pmac-mpw) basic_machine=powerpc-apple ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; @@ -1065,10 +1113,12 @@ case $os in | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos*) + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -microbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1080,8 +1130,10 @@ case $os in ;; esac ;; + -nto-qnx*) + ;; -nto*) - os=-nto-qnx + os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ @@ -1120,14 +1172,20 @@ case $os in -acis*) os=-aos ;; + -atheos*) + os=-atheos + ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; + -nova*) + os=-rtmk-nova + ;; -ns2 ) - os=-nextstep2 + os=-nextstep2 ;; -nsk*) os=-nsk @@ -1166,8 +1224,8 @@ case $os in -xenix) os=-xenix ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint ;; -none) ;; @@ -1200,10 +1258,11 @@ case $basic_machine in arm*-semi) os=-aout ;; + # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; - pdp11-*) + pdp11-*) os=-none ;; *-dec | vax-*) @@ -1230,6 +1289,9 @@ case $basic_machine in mips*-*) os=-elf ;; + or32-*) + os=-coff + ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; @@ -1293,19 +1355,19 @@ case $basic_machine in *-next) os=-nextstep3 ;; - *-gould) + *-gould) os=-sysv ;; - *-highlevel) + *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; - *-sgi) + *-sgi) os=-irix ;; - *-siemens) + *-siemens) os=-sysv4 ;; *-masscomp) @@ -1377,7 +1439,7 @@ case $basic_machine in -ptx*) vendor=sequent ;; - -vxsim* | -vxworks*) + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) diff --git a/configure b/configure index 53b06bcd3a..bc3894aaaf 100755 --- a/configure +++ b/configure @@ -52,6 +52,9 @@ + + + @@ -61,16 +64,16 @@ - - - - - # Configure paths for GTK+ # Owen Taylor 97-11-3 + + + + + # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. @@ -1014,7 +1017,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:1018: checking host system type" >&5 +echo "configure:1021: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -1035,7 +1038,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:1039: checking target system type" >&5 +echo "configure:1042: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -1053,7 +1056,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1057: checking build system type" >&5 +echo "configure:1060: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1078,15 +1081,15 @@ test "$host_alias" != "$target_alias" && WX_MAJOR_VERSION_NUMBER=2 -WX_MINOR_VERSION_NUMBER=3 -WX_RELEASE_NUMBER=3 +WX_MINOR_VERSION_NUMBER=4 +WX_RELEASE_NUMBER=0 WX_VERSION=$WX_MAJOR_VERSION_NUMBER.$WX_MINOR_VERSION_NUMBER.$WX_RELEASE_NUMBER WX_RELEASE=$WX_MAJOR_VERSION_NUMBER.$WX_MINOR_VERSION_NUMBER WX_MSW_VERSION=$WX_MAJOR_VERSION_NUMBER$WX_MINOR_VERSION_NUMBER$WX_RELEASE_NUMBER -WX_CURRENT=2 +WX_CURRENT=0 WX_REVISION=0 WX_AGE=0 @@ -1239,11 +1242,11 @@ EOF USE_BSD=1 USE_OPENBSD=1 cat >> confdefs.h <<\EOF -#define __FREEBSD__ 1 +#define __OPENBSD__ 1 EOF cat >> confdefs.h <<\EOF -#define __OPENBSD__ 1 +#define __BSD__ 1 EOF DEFAULT_DEFAULT_wxUSE_GTK=1 @@ -1252,11 +1255,11 @@ EOF USE_BSD=1 USE_NETBSD=1 cat >> confdefs.h <<\EOF -#define __FREEBSD__ 1 +#define __NETBSD__ 1 EOF cat >> confdefs.h <<\EOF -#define __NETBSD__ 1 +#define __BSD__ 1 EOF DEFAULT_DEFAULT_wxUSE_GTK=1 @@ -1305,7 +1308,7 @@ EOF USE_AIX=1 USE_SYSV=1 USE_SVR4=1 - SO_SUFFIX=a + SO_SUFFIX=a cat >> confdefs.h <<\EOF #define __AIX__ 1 EOF @@ -1648,8 +1651,8 @@ else DEFAULT_wxUSE_DOC_VIEW_ARCHITECTURE=yes DEFAULT_wxUSE_PRINTING_ARCHITECTURE=yes - DEFAULT_wxUSE_PROLOGIO=yes - DEFAULT_wxUSE_RESOURCES=yes + DEFAULT_wxUSE_PROLOGIO=no + DEFAULT_wxUSE_RESOURCES=no DEFAULT_wxUSE_CONSTRAINTS=yes DEFAULT_wxUSE_IPC=yes DEFAULT_wxUSE_HELP=yes @@ -1759,7 +1762,7 @@ done enablestring= echo $ac_n "checking for --${enablestring:-enable}-gui""... $ac_c" 1>&6 -echo "configure:1763: checking for --${enablestring:-enable}-gui" >&5 +echo "configure:1766: checking for --${enablestring:-enable}-gui" >&5 no_cache=0 # Check whether --enable-gui or --disable-gui was given. if test "${enable_gui+set}" = set; then @@ -1802,7 +1805,7 @@ if test "$wxUSE_GUI" = "yes"; then enablestring= echo $ac_n "checking for --${enablestring:-enable}-universal""... $ac_c" 1>&6 -echo "configure:1806: checking for --${enablestring:-enable}-universal" >&5 +echo "configure:1809: checking for --${enablestring:-enable}-universal" >&5 no_cache=0 # Check whether --enable-universal or --disable-universal was given. if test "${enable_universal+set}" = set; then @@ -1896,7 +1899,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-nanox""... $ac_c" 1>&6 -echo "configure:1900: checking for --${enablestring:-enable}-nanox" >&5 +echo "configure:1903: checking for --${enablestring:-enable}-nanox" >&5 no_cache=0 # Check whether --enable-nanox or --disable-nanox was given. if test "${enable_nanox+set}" = set; then @@ -1937,7 +1940,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-gtk2""... $ac_c" 1>&6 -echo "configure:1941: checking for --${enablestring:-enable}-gtk2" >&5 +echo "configure:1944: checking for --${enablestring:-enable}-gtk2" >&5 no_cache=0 # Check whether --enable-gtk2 or --disable-gtk2 was given. if test "${enable_gtk2+set}" = set; then @@ -1977,7 +1980,7 @@ fi echo $ac_n "checking for --with-libpng""... $ac_c" 1>&6 -echo "configure:1981: checking for --with-libpng" >&5 +echo "configure:1984: checking for --with-libpng" >&5 no_cache=0 # Check whether --with-libpng or --without-libpng was given. if test "${with_libpng+set}" = set; then @@ -2028,7 +2031,7 @@ fi echo $ac_n "checking for --with-libjpeg""... $ac_c" 1>&6 -echo "configure:2032: checking for --with-libjpeg" >&5 +echo "configure:2035: checking for --with-libjpeg" >&5 no_cache=0 # Check whether --with-libjpeg or --without-libjpeg was given. if test "${with_libjpeg+set}" = set; then @@ -2079,7 +2082,7 @@ fi echo $ac_n "checking for --with-libtiff""... $ac_c" 1>&6 -echo "configure:2083: checking for --with-libtiff" >&5 +echo "configure:2086: checking for --with-libtiff" >&5 no_cache=0 # Check whether --with-libtiff or --without-libtiff was given. if test "${with_libtiff+set}" = set; then @@ -2130,7 +2133,7 @@ fi echo $ac_n "checking for --with-opengl""... $ac_c" 1>&6 -echo "configure:2134: checking for --with-opengl" >&5 +echo "configure:2137: checking for --with-opengl" >&5 no_cache=0 # Check whether --with-opengl or --without-opengl was given. if test "${with_opengl+set}" = set; then @@ -2172,7 +2175,7 @@ fi echo $ac_n "checking for --with-dmalloc""... $ac_c" 1>&6 -echo "configure:2176: checking for --with-dmalloc" >&5 +echo "configure:2179: checking for --with-dmalloc" >&5 no_cache=0 # Check whether --with-dmalloc or --without-dmalloc was given. if test "${with_dmalloc+set}" = set; then @@ -2211,7 +2214,7 @@ fi echo $ac_n "checking for --with-regex""... $ac_c" 1>&6 -echo "configure:2215: checking for --with-regex" >&5 +echo "configure:2218: checking for --with-regex" >&5 no_cache=0 # Check whether --with-regex or --without-regex was given. if test "${with_regex+set}" = set; then @@ -2262,7 +2265,7 @@ fi echo $ac_n "checking for --with-zlib""... $ac_c" 1>&6 -echo "configure:2266: checking for --with-zlib" >&5 +echo "configure:2269: checking for --with-zlib" >&5 no_cache=0 # Check whether --with-zlib or --without-zlib was given. if test "${with_zlib+set}" = set; then @@ -2313,7 +2316,7 @@ fi echo $ac_n "checking for --with-odbc""... $ac_c" 1>&6 -echo "configure:2317: checking for --with-odbc" >&5 +echo "configure:2320: checking for --with-odbc" >&5 no_cache=0 # Check whether --with-odbc or --without-odbc was given. if test "${with_odbc+set}" = set; then @@ -2355,7 +2358,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-shared""... $ac_c" 1>&6 -echo "configure:2359: checking for --${enablestring:-enable}-shared" >&5 +echo "configure:2362: checking for --${enablestring:-enable}-shared" >&5 no_cache=0 # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then @@ -2395,7 +2398,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-soname""... $ac_c" 1>&6 -echo "configure:2399: checking for --${enablestring:-enable}-soname" >&5 +echo "configure:2402: checking for --${enablestring:-enable}-soname" >&5 no_cache=0 # Check whether --enable-soname or --disable-soname was given. if test "${enable_soname+set}" = set; then @@ -2435,7 +2438,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-optimise""... $ac_c" 1>&6 -echo "configure:2439: checking for --${enablestring:-enable}-optimise" >&5 +echo "configure:2442: checking for --${enablestring:-enable}-optimise" >&5 no_cache=0 # Check whether --enable-optimise or --disable-optimise was given. if test "${enable_optimise+set}" = set; then @@ -2475,7 +2478,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-debug""... $ac_c" 1>&6 -echo "configure:2479: checking for --${enablestring:-enable}-debug" >&5 +echo "configure:2482: checking for --${enablestring:-enable}-debug" >&5 no_cache=0 # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then @@ -2516,7 +2519,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-precomp""... $ac_c" 1>&6 -echo "configure:2520: checking for --${enablestring:-enable}-precomp" >&5 +echo "configure:2523: checking for --${enablestring:-enable}-precomp" >&5 no_cache=0 # Check whether --enable-precomp or --disable-precomp was given. if test "${enable_precomp+set}" = set; then @@ -2565,7 +2568,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-debug_flag""... $ac_c" 1>&6 -echo "configure:2569: checking for --${enablestring:-enable}-debug_flag" >&5 +echo "configure:2572: checking for --${enablestring:-enable}-debug_flag" >&5 no_cache=0 # Check whether --enable-debug_flag or --disable-debug_flag was given. if test "${enable_debug_flag+set}" = set; then @@ -2605,7 +2608,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-debug_info""... $ac_c" 1>&6 -echo "configure:2609: checking for --${enablestring:-enable}-debug_info" >&5 +echo "configure:2612: checking for --${enablestring:-enable}-debug_info" >&5 no_cache=0 # Check whether --enable-debug_info or --disable-debug_info was given. if test "${enable_debug_info+set}" = set; then @@ -2645,7 +2648,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-debug_gdb""... $ac_c" 1>&6 -echo "configure:2649: checking for --${enablestring:-enable}-debug_gdb" >&5 +echo "configure:2652: checking for --${enablestring:-enable}-debug_gdb" >&5 no_cache=0 # Check whether --enable-debug_gdb or --disable-debug_gdb was given. if test "${enable_debug_gdb+set}" = set; then @@ -2685,7 +2688,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-debug_cntxt""... $ac_c" 1>&6 -echo "configure:2689: checking for --${enablestring:-enable}-debug_cntxt" >&5 +echo "configure:2692: checking for --${enablestring:-enable}-debug_cntxt" >&5 no_cache=0 # Check whether --enable-debug_cntxt or --disable-debug_cntxt was given. if test "${enable_debug_cntxt+set}" = set; then @@ -2725,7 +2728,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-mem_tracing""... $ac_c" 1>&6 -echo "configure:2729: checking for --${enablestring:-enable}-mem_tracing" >&5 +echo "configure:2732: checking for --${enablestring:-enable}-mem_tracing" >&5 no_cache=0 # Check whether --enable-mem_tracing or --disable-mem_tracing was given. if test "${enable_mem_tracing+set}" = set; then @@ -2765,7 +2768,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-profile""... $ac_c" 1>&6 -echo "configure:2769: checking for --${enablestring:-enable}-profile" >&5 +echo "configure:2772: checking for --${enablestring:-enable}-profile" >&5 no_cache=0 # Check whether --enable-profile or --disable-profile was given. if test "${enable_profile+set}" = set; then @@ -2805,7 +2808,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-no_rtti""... $ac_c" 1>&6 -echo "configure:2809: checking for --${enablestring:-enable}-no_rtti" >&5 +echo "configure:2812: checking for --${enablestring:-enable}-no_rtti" >&5 no_cache=0 # Check whether --enable-no_rtti or --disable-no_rtti was given. if test "${enable_no_rtti+set}" = set; then @@ -2845,7 +2848,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-no_exceptions""... $ac_c" 1>&6 -echo "configure:2849: checking for --${enablestring:-enable}-no_exceptions" >&5 +echo "configure:2852: checking for --${enablestring:-enable}-no_exceptions" >&5 no_cache=0 # Check whether --enable-no_exceptions or --disable-no_exceptions was given. if test "${enable_no_exceptions+set}" = set; then @@ -2885,7 +2888,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-permissive""... $ac_c" 1>&6 -echo "configure:2889: checking for --${enablestring:-enable}-permissive" >&5 +echo "configure:2892: checking for --${enablestring:-enable}-permissive" >&5 no_cache=0 # Check whether --enable-permissive or --disable-permissive was given. if test "${enable_permissive+set}" = set; then @@ -2925,7 +2928,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-no_deps""... $ac_c" 1>&6 -echo "configure:2929: checking for --${enablestring:-enable}-no_deps" >&5 +echo "configure:2932: checking for --${enablestring:-enable}-no_deps" >&5 no_cache=0 # Check whether --enable-no_deps or --disable-no_deps was given. if test "${enable_no_deps+set}" = set; then @@ -2966,7 +2969,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-compat20""... $ac_c" 1>&6 -echo "configure:2970: checking for --${enablestring:-enable}-compat20" >&5 +echo "configure:2973: checking for --${enablestring:-enable}-compat20" >&5 no_cache=0 # Check whether --enable-compat20 or --disable-compat20 was given. if test "${enable_compat20+set}" = set; then @@ -3006,7 +3009,7 @@ fi enablestring=disable echo $ac_n "checking for --${enablestring:-enable}-compat22""... $ac_c" 1>&6 -echo "configure:3010: checking for --${enablestring:-enable}-compat22" >&5 +echo "configure:3013: checking for --${enablestring:-enable}-compat22" >&5 no_cache=0 # Check whether --enable-compat22 or --disable-compat22 was given. if test "${enable_compat22+set}" = set; then @@ -3060,7 +3063,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-intl""... $ac_c" 1>&6 -echo "configure:3064: checking for --${enablestring:-enable}-intl" >&5 +echo "configure:3067: checking for --${enablestring:-enable}-intl" >&5 no_cache=0 # Check whether --enable-intl or --disable-intl was given. if test "${enable_intl+set}" = set; then @@ -3100,7 +3103,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-config""... $ac_c" 1>&6 -echo "configure:3104: checking for --${enablestring:-enable}-config" >&5 +echo "configure:3107: checking for --${enablestring:-enable}-config" >&5 no_cache=0 # Check whether --enable-config or --disable-config was given. if test "${enable_config+set}" = set; then @@ -3141,7 +3144,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-protocols""... $ac_c" 1>&6 -echo "configure:3145: checking for --${enablestring:-enable}-protocols" >&5 +echo "configure:3148: checking for --${enablestring:-enable}-protocols" >&5 no_cache=0 # Check whether --enable-protocols or --disable-protocols was given. if test "${enable_protocols+set}" = set; then @@ -3181,7 +3184,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-ftp""... $ac_c" 1>&6 -echo "configure:3185: checking for --${enablestring:-enable}-ftp" >&5 +echo "configure:3188: checking for --${enablestring:-enable}-ftp" >&5 no_cache=0 # Check whether --enable-ftp or --disable-ftp was given. if test "${enable_ftp+set}" = set; then @@ -3221,7 +3224,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-http""... $ac_c" 1>&6 -echo "configure:3225: checking for --${enablestring:-enable}-http" >&5 +echo "configure:3228: checking for --${enablestring:-enable}-http" >&5 no_cache=0 # Check whether --enable-http or --disable-http was given. if test "${enable_http+set}" = set; then @@ -3261,7 +3264,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-fileproto""... $ac_c" 1>&6 -echo "configure:3265: checking for --${enablestring:-enable}-fileproto" >&5 +echo "configure:3268: checking for --${enablestring:-enable}-fileproto" >&5 no_cache=0 # Check whether --enable-fileproto or --disable-fileproto was given. if test "${enable_fileproto+set}" = set; then @@ -3301,7 +3304,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-sockets""... $ac_c" 1>&6 -echo "configure:3305: checking for --${enablestring:-enable}-sockets" >&5 +echo "configure:3308: checking for --${enablestring:-enable}-sockets" >&5 no_cache=0 # Check whether --enable-sockets or --disable-sockets was given. if test "${enable_sockets+set}" = set; then @@ -3341,7 +3344,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-ole""... $ac_c" 1>&6 -echo "configure:3345: checking for --${enablestring:-enable}-ole" >&5 +echo "configure:3348: checking for --${enablestring:-enable}-ole" >&5 no_cache=0 # Check whether --enable-ole or --disable-ole was given. if test "${enable_ole+set}" = set; then @@ -3381,7 +3384,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dataobj""... $ac_c" 1>&6 -echo "configure:3385: checking for --${enablestring:-enable}-dataobj" >&5 +echo "configure:3388: checking for --${enablestring:-enable}-dataobj" >&5 no_cache=0 # Check whether --enable-dataobj or --disable-dataobj was given. if test "${enable_dataobj+set}" = set; then @@ -3422,7 +3425,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-ipc""... $ac_c" 1>&6 -echo "configure:3426: checking for --${enablestring:-enable}-ipc" >&5 +echo "configure:3429: checking for --${enablestring:-enable}-ipc" >&5 no_cache=0 # Check whether --enable-ipc or --disable-ipc was given. if test "${enable_ipc+set}" = set; then @@ -3463,7 +3466,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-cmdline""... $ac_c" 1>&6 -echo "configure:3467: checking for --${enablestring:-enable}-cmdline" >&5 +echo "configure:3470: checking for --${enablestring:-enable}-cmdline" >&5 no_cache=0 # Check whether --enable-cmdline or --disable-cmdline was given. if test "${enable_cmdline+set}" = set; then @@ -3503,7 +3506,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-datetime""... $ac_c" 1>&6 -echo "configure:3507: checking for --${enablestring:-enable}-datetime" >&5 +echo "configure:3510: checking for --${enablestring:-enable}-datetime" >&5 no_cache=0 # Check whether --enable-datetime or --disable-datetime was given. if test "${enable_datetime+set}" = set; then @@ -3543,7 +3546,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-timedate""... $ac_c" 1>&6 -echo "configure:3547: checking for --${enablestring:-enable}-timedate" >&5 +echo "configure:3550: checking for --${enablestring:-enable}-timedate" >&5 no_cache=0 # Check whether --enable-timedate or --disable-timedate was given. if test "${enable_timedate+set}" = set; then @@ -3583,7 +3586,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-stopwatch""... $ac_c" 1>&6 -echo "configure:3587: checking for --${enablestring:-enable}-stopwatch" >&5 +echo "configure:3590: checking for --${enablestring:-enable}-stopwatch" >&5 no_cache=0 # Check whether --enable-stopwatch or --disable-stopwatch was given. if test "${enable_stopwatch+set}" = set; then @@ -3623,7 +3626,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dialupman""... $ac_c" 1>&6 -echo "configure:3627: checking for --${enablestring:-enable}-dialupman" >&5 +echo "configure:3630: checking for --${enablestring:-enable}-dialupman" >&5 no_cache=0 # Check whether --enable-dialupman or --disable-dialupman was given. if test "${enable_dialupman+set}" = set; then @@ -3663,7 +3666,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-apple_ieee""... $ac_c" 1>&6 -echo "configure:3667: checking for --${enablestring:-enable}-apple_ieee" >&5 +echo "configure:3670: checking for --${enablestring:-enable}-apple_ieee" >&5 no_cache=0 # Check whether --enable-apple_ieee or --disable-apple_ieee was given. if test "${enable_apple_ieee+set}" = set; then @@ -3703,7 +3706,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-timer""... $ac_c" 1>&6 -echo "configure:3707: checking for --${enablestring:-enable}-timer" >&5 +echo "configure:3710: checking for --${enablestring:-enable}-timer" >&5 no_cache=0 # Check whether --enable-timer or --disable-timer was given. if test "${enable_timer+set}" = set; then @@ -3743,7 +3746,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-wave""... $ac_c" 1>&6 -echo "configure:3747: checking for --${enablestring:-enable}-wave" >&5 +echo "configure:3750: checking for --${enablestring:-enable}-wave" >&5 no_cache=0 # Check whether --enable-wave or --disable-wave was given. if test "${enable_wave+set}" = set; then @@ -3783,7 +3786,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-fraction""... $ac_c" 1>&6 -echo "configure:3787: checking for --${enablestring:-enable}-fraction" >&5 +echo "configure:3790: checking for --${enablestring:-enable}-fraction" >&5 no_cache=0 # Check whether --enable-fraction or --disable-fraction was given. if test "${enable_fraction+set}" = set; then @@ -3823,7 +3826,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dynlib""... $ac_c" 1>&6 -echo "configure:3827: checking for --${enablestring:-enable}-dynlib" >&5 +echo "configure:3830: checking for --${enablestring:-enable}-dynlib" >&5 no_cache=0 # Check whether --enable-dynlib or --disable-dynlib was given. if test "${enable_dynlib+set}" = set; then @@ -3863,7 +3866,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dynamicloader""... $ac_c" 1>&6 -echo "configure:3867: checking for --${enablestring:-enable}-dynamicloader" >&5 +echo "configure:3870: checking for --${enablestring:-enable}-dynamicloader" >&5 no_cache=0 # Check whether --enable-dynamicloader or --disable-dynamicloader was given. if test "${enable_dynamicloader+set}" = set; then @@ -3903,7 +3906,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-longlong""... $ac_c" 1>&6 -echo "configure:3907: checking for --${enablestring:-enable}-longlong" >&5 +echo "configure:3910: checking for --${enablestring:-enable}-longlong" >&5 no_cache=0 # Check whether --enable-longlong or --disable-longlong was given. if test "${enable_longlong+set}" = set; then @@ -3943,7 +3946,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-geometry""... $ac_c" 1>&6 -echo "configure:3947: checking for --${enablestring:-enable}-geometry" >&5 +echo "configure:3950: checking for --${enablestring:-enable}-geometry" >&5 no_cache=0 # Check whether --enable-geometry or --disable-geometry was given. if test "${enable_geometry+set}" = set; then @@ -3983,7 +3986,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-log""... $ac_c" 1>&6 -echo "configure:3987: checking for --${enablestring:-enable}-log" >&5 +echo "configure:3990: checking for --${enablestring:-enable}-log" >&5 no_cache=0 # Check whether --enable-log or --disable-log was given. if test "${enable_log+set}" = set; then @@ -4023,7 +4026,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-streams""... $ac_c" 1>&6 -echo "configure:4027: checking for --${enablestring:-enable}-streams" >&5 +echo "configure:4030: checking for --${enablestring:-enable}-streams" >&5 no_cache=0 # Check whether --enable-streams or --disable-streams was given. if test "${enable_streams+set}" = set; then @@ -4063,7 +4066,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-file""... $ac_c" 1>&6 -echo "configure:4067: checking for --${enablestring:-enable}-file" >&5 +echo "configure:4070: checking for --${enablestring:-enable}-file" >&5 no_cache=0 # Check whether --enable-file or --disable-file was given. if test "${enable_file+set}" = set; then @@ -4103,7 +4106,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-ffile""... $ac_c" 1>&6 -echo "configure:4107: checking for --${enablestring:-enable}-ffile" >&5 +echo "configure:4110: checking for --${enablestring:-enable}-ffile" >&5 no_cache=0 # Check whether --enable-ffile or --disable-ffile was given. if test "${enable_ffile+set}" = set; then @@ -4143,7 +4146,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-textbuf""... $ac_c" 1>&6 -echo "configure:4147: checking for --${enablestring:-enable}-textbuf" >&5 +echo "configure:4150: checking for --${enablestring:-enable}-textbuf" >&5 no_cache=0 # Check whether --enable-textbuf or --disable-textbuf was given. if test "${enable_textbuf+set}" = set; then @@ -4183,7 +4186,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-textfile""... $ac_c" 1>&6 -echo "configure:4187: checking for --${enablestring:-enable}-textfile" >&5 +echo "configure:4190: checking for --${enablestring:-enable}-textfile" >&5 no_cache=0 # Check whether --enable-textfile or --disable-textfile was given. if test "${enable_textfile+set}" = set; then @@ -4223,7 +4226,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-fontmap""... $ac_c" 1>&6 -echo "configure:4227: checking for --${enablestring:-enable}-fontmap" >&5 +echo "configure:4230: checking for --${enablestring:-enable}-fontmap" >&5 no_cache=0 # Check whether --enable-fontmap or --disable-fontmap was given. if test "${enable_fontmap+set}" = set; then @@ -4263,7 +4266,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-unicode""... $ac_c" 1>&6 -echo "configure:4267: checking for --${enablestring:-enable}-unicode" >&5 +echo "configure:4270: checking for --${enablestring:-enable}-unicode" >&5 no_cache=0 # Check whether --enable-unicode or --disable-unicode was given. if test "${enable_unicode+set}" = set; then @@ -4303,7 +4306,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-mslu""... $ac_c" 1>&6 -echo "configure:4307: checking for --${enablestring:-enable}-mslu" >&5 +echo "configure:4310: checking for --${enablestring:-enable}-mslu" >&5 no_cache=0 # Check whether --enable-mslu or --disable-mslu was given. if test "${enable_mslu+set}" = set; then @@ -4343,7 +4346,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-wxprintfv""... $ac_c" 1>&6 -echo "configure:4347: checking for --${enablestring:-enable}-wxprintfv" >&5 +echo "configure:4350: checking for --${enablestring:-enable}-wxprintfv" >&5 no_cache=0 # Check whether --enable-wxprintfv or --disable-wxprintfv was given. if test "${enable_wxprintfv+set}" = set; then @@ -4383,7 +4386,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-std_iostreams""... $ac_c" 1>&6 -echo "configure:4387: checking for --${enablestring:-enable}-std_iostreams" >&5 +echo "configure:4390: checking for --${enablestring:-enable}-std_iostreams" >&5 no_cache=0 # Check whether --enable-std_iostreams or --disable-std_iostreams was given. if test "${enable_std_iostreams+set}" = set; then @@ -4423,7 +4426,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-filesystem""... $ac_c" 1>&6 -echo "configure:4427: checking for --${enablestring:-enable}-filesystem" >&5 +echo "configure:4430: checking for --${enablestring:-enable}-filesystem" >&5 no_cache=0 # Check whether --enable-filesystem or --disable-filesystem was given. if test "${enable_filesystem+set}" = set; then @@ -4463,7 +4466,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-fs_inet""... $ac_c" 1>&6 -echo "configure:4467: checking for --${enablestring:-enable}-fs_inet" >&5 +echo "configure:4470: checking for --${enablestring:-enable}-fs_inet" >&5 no_cache=0 # Check whether --enable-fs_inet or --disable-fs_inet was given. if test "${enable_fs_inet+set}" = set; then @@ -4503,7 +4506,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-fs_zip""... $ac_c" 1>&6 -echo "configure:4507: checking for --${enablestring:-enable}-fs_zip" >&5 +echo "configure:4510: checking for --${enablestring:-enable}-fs_zip" >&5 no_cache=0 # Check whether --enable-fs_zip or --disable-fs_zip was given. if test "${enable_fs_zip+set}" = set; then @@ -4543,7 +4546,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-zipstream""... $ac_c" 1>&6 -echo "configure:4547: checking for --${enablestring:-enable}-zipstream" >&5 +echo "configure:4550: checking for --${enablestring:-enable}-zipstream" >&5 no_cache=0 # Check whether --enable-zipstream or --disable-zipstream was given. if test "${enable_zipstream+set}" = set; then @@ -4584,7 +4587,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-catch_segvs""... $ac_c" 1>&6 -echo "configure:4588: checking for --${enablestring:-enable}-catch_segvs" >&5 +echo "configure:4591: checking for --${enablestring:-enable}-catch_segvs" >&5 no_cache=0 # Check whether --enable-catch_segvs or --disable-catch_segvs was given. if test "${enable_catch_segvs+set}" = set; then @@ -4624,7 +4627,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-snglinst""... $ac_c" 1>&6 -echo "configure:4628: checking for --${enablestring:-enable}-snglinst" >&5 +echo "configure:4631: checking for --${enablestring:-enable}-snglinst" >&5 no_cache=0 # Check whether --enable-snglinst or --disable-snglinst was given. if test "${enable_snglinst+set}" = set; then @@ -4665,7 +4668,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-mimetype""... $ac_c" 1>&6 -echo "configure:4669: checking for --${enablestring:-enable}-mimetype" >&5 +echo "configure:4672: checking for --${enablestring:-enable}-mimetype" >&5 no_cache=0 # Check whether --enable-mimetype or --disable-mimetype was given. if test "${enable_mimetype+set}" = set; then @@ -4705,7 +4708,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-system_options""... $ac_c" 1>&6 -echo "configure:4709: checking for --${enablestring:-enable}-system_options" >&5 +echo "configure:4712: checking for --${enablestring:-enable}-system_options" >&5 no_cache=0 # Check whether --enable-system_options or --disable-system_options was given. if test "${enable_system_options+set}" = set; then @@ -4746,7 +4749,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-url""... $ac_c" 1>&6 -echo "configure:4750: checking for --${enablestring:-enable}-url" >&5 +echo "configure:4753: checking for --${enablestring:-enable}-url" >&5 no_cache=0 # Check whether --enable-url or --disable-url was given. if test "${enable_url+set}" = set; then @@ -4786,7 +4789,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-protocol""... $ac_c" 1>&6 -echo "configure:4790: checking for --${enablestring:-enable}-protocol" >&5 +echo "configure:4793: checking for --${enablestring:-enable}-protocol" >&5 no_cache=0 # Check whether --enable-protocol or --disable-protocol was given. if test "${enable_protocol+set}" = set; then @@ -4826,7 +4829,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-protocol_http""... $ac_c" 1>&6 -echo "configure:4830: checking for --${enablestring:-enable}-protocol_http" >&5 +echo "configure:4833: checking for --${enablestring:-enable}-protocol_http" >&5 no_cache=0 # Check whether --enable-protocol_http or --disable-protocol_http was given. if test "${enable_protocol_http+set}" = set; then @@ -4866,7 +4869,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-protocol_ftp""... $ac_c" 1>&6 -echo "configure:4870: checking for --${enablestring:-enable}-protocol_ftp" >&5 +echo "configure:4873: checking for --${enablestring:-enable}-protocol_ftp" >&5 no_cache=0 # Check whether --enable-protocol_ftp or --disable-protocol_ftp was given. if test "${enable_protocol_ftp+set}" = set; then @@ -4906,7 +4909,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-protocol_file""... $ac_c" 1>&6 -echo "configure:4910: checking for --${enablestring:-enable}-protocol_file" >&5 +echo "configure:4913: checking for --${enablestring:-enable}-protocol_file" >&5 no_cache=0 # Check whether --enable-protocol_file or --disable-protocol_file was given. if test "${enable_protocol_file+set}" = set; then @@ -4949,7 +4952,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-threads""... $ac_c" 1>&6 -echo "configure:4953: checking for --${enablestring:-enable}-threads" >&5 +echo "configure:4956: checking for --${enablestring:-enable}-threads" >&5 no_cache=0 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then @@ -4993,7 +4996,7 @@ if test "$wxUSE_GUI" = "yes"; then enablestring= echo $ac_n "checking for --${enablestring:-enable}-docview""... $ac_c" 1>&6 -echo "configure:4997: checking for --${enablestring:-enable}-docview" >&5 +echo "configure:5000: checking for --${enablestring:-enable}-docview" >&5 no_cache=0 # Check whether --enable-docview or --disable-docview was given. if test "${enable_docview+set}" = set; then @@ -5033,7 +5036,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-help""... $ac_c" 1>&6 -echo "configure:5037: checking for --${enablestring:-enable}-help" >&5 +echo "configure:5040: checking for --${enablestring:-enable}-help" >&5 no_cache=0 # Check whether --enable-help or --disable-help was given. if test "${enable_help+set}" = set; then @@ -5073,7 +5076,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-mshtmlhelp""... $ac_c" 1>&6 -echo "configure:5077: checking for --${enablestring:-enable}-mshtmlhelp" >&5 +echo "configure:5080: checking for --${enablestring:-enable}-mshtmlhelp" >&5 no_cache=0 # Check whether --enable-mshtmlhelp or --disable-mshtmlhelp was given. if test "${enable_mshtmlhelp+set}" = set; then @@ -5113,7 +5116,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-html""... $ac_c" 1>&6 -echo "configure:5117: checking for --${enablestring:-enable}-html" >&5 +echo "configure:5120: checking for --${enablestring:-enable}-html" >&5 no_cache=0 # Check whether --enable-html or --disable-html was given. if test "${enable_html+set}" = set; then @@ -5153,7 +5156,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-htmlhelp""... $ac_c" 1>&6 -echo "configure:5157: checking for --${enablestring:-enable}-htmlhelp" >&5 +echo "configure:5160: checking for --${enablestring:-enable}-htmlhelp" >&5 no_cache=0 # Check whether --enable-htmlhelp or --disable-htmlhelp was given. if test "${enable_htmlhelp+set}" = set; then @@ -5193,7 +5196,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-constraints""... $ac_c" 1>&6 -echo "configure:5197: checking for --${enablestring:-enable}-constraints" >&5 +echo "configure:5200: checking for --${enablestring:-enable}-constraints" >&5 no_cache=0 # Check whether --enable-constraints or --disable-constraints was given. if test "${enable_constraints+set}" = set; then @@ -5233,7 +5236,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-printarch""... $ac_c" 1>&6 -echo "configure:5237: checking for --${enablestring:-enable}-printarch" >&5 +echo "configure:5240: checking for --${enablestring:-enable}-printarch" >&5 no_cache=0 # Check whether --enable-printarch or --disable-printarch was given. if test "${enable_printarch+set}" = set; then @@ -5273,7 +5276,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-mdi""... $ac_c" 1>&6 -echo "configure:5277: checking for --${enablestring:-enable}-mdi" >&5 +echo "configure:5280: checking for --${enablestring:-enable}-mdi" >&5 no_cache=0 # Check whether --enable-mdi or --disable-mdi was given. if test "${enable_mdi+set}" = set; then @@ -5313,7 +5316,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-loggui""... $ac_c" 1>&6 -echo "configure:5317: checking for --${enablestring:-enable}-loggui" >&5 +echo "configure:5320: checking for --${enablestring:-enable}-loggui" >&5 no_cache=0 # Check whether --enable-loggui or --disable-loggui was given. if test "${enable_loggui+set}" = set; then @@ -5353,7 +5356,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-logwin""... $ac_c" 1>&6 -echo "configure:5357: checking for --${enablestring:-enable}-logwin" >&5 +echo "configure:5360: checking for --${enablestring:-enable}-logwin" >&5 no_cache=0 # Check whether --enable-logwin or --disable-logwin was given. if test "${enable_logwin+set}" = set; then @@ -5393,7 +5396,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-logdialog""... $ac_c" 1>&6 -echo "configure:5397: checking for --${enablestring:-enable}-logdialog" >&5 +echo "configure:5400: checking for --${enablestring:-enable}-logdialog" >&5 no_cache=0 # Check whether --enable-logdialog or --disable-logdialog was given. if test "${enable_logdialog+set}" = set; then @@ -5434,7 +5437,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-postscript""... $ac_c" 1>&6 -echo "configure:5438: checking for --${enablestring:-enable}-postscript" >&5 +echo "configure:5441: checking for --${enablestring:-enable}-postscript" >&5 no_cache=0 # Check whether --enable-postscript or --disable-postscript was given. if test "${enable_postscript+set}" = set; then @@ -5477,7 +5480,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-prologio""... $ac_c" 1>&6 -echo "configure:5481: checking for --${enablestring:-enable}-prologio" >&5 +echo "configure:5484: checking for --${enablestring:-enable}-prologio" >&5 no_cache=0 # Check whether --enable-prologio or --disable-prologio was given. if test "${enable_prologio+set}" = set; then @@ -5517,7 +5520,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-resources""... $ac_c" 1>&6 -echo "configure:5521: checking for --${enablestring:-enable}-resources" >&5 +echo "configure:5524: checking for --${enablestring:-enable}-resources" >&5 no_cache=0 # Check whether --enable-resources or --disable-resources was given. if test "${enable_resources+set}" = set; then @@ -5558,7 +5561,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-xresources""... $ac_c" 1>&6 -echo "configure:5562: checking for --${enablestring:-enable}-xresources" >&5 +echo "configure:5565: checking for --${enablestring:-enable}-xresources" >&5 no_cache=0 # Check whether --enable-xresources or --disable-xresources was given. if test "${enable_xresources+set}" = set; then @@ -5600,7 +5603,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-clipboard""... $ac_c" 1>&6 -echo "configure:5604: checking for --${enablestring:-enable}-clipboard" >&5 +echo "configure:5607: checking for --${enablestring:-enable}-clipboard" >&5 no_cache=0 # Check whether --enable-clipboard or --disable-clipboard was given. if test "${enable_clipboard+set}" = set; then @@ -5640,7 +5643,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dnd""... $ac_c" 1>&6 -echo "configure:5644: checking for --${enablestring:-enable}-dnd" >&5 +echo "configure:5647: checking for --${enablestring:-enable}-dnd" >&5 no_cache=0 # Check whether --enable-dnd or --disable-dnd was given. if test "${enable_dnd+set}" = set; then @@ -5680,7 +5683,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-metafile""... $ac_c" 1>&6 -echo "configure:5684: checking for --${enablestring:-enable}-metafile" >&5 +echo "configure:5687: checking for --${enablestring:-enable}-metafile" >&5 no_cache=0 # Check whether --enable-metafile or --disable-metafile was given. if test "${enable_metafile+set}" = set; then @@ -5721,7 +5724,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-treelayout""... $ac_c" 1>&6 -echo "configure:5725: checking for --${enablestring:-enable}-treelayout" >&5 +echo "configure:5728: checking for --${enablestring:-enable}-treelayout" >&5 no_cache=0 # Check whether --enable-treelayout or --disable-treelayout was given. if test "${enable_treelayout+set}" = set; then @@ -5763,7 +5766,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-controls""... $ac_c" 1>&6 -echo "configure:5767: checking for --${enablestring:-enable}-controls" >&5 +echo "configure:5770: checking for --${enablestring:-enable}-controls" >&5 no_cache=0 # Check whether --enable-controls or --disable-controls was given. if test "${enable_controls+set}" = set; then @@ -5884,7 +5887,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-accel""... $ac_c" 1>&6 -echo "configure:5888: checking for --${enablestring:-enable}-accel" >&5 +echo "configure:5891: checking for --${enablestring:-enable}-accel" >&5 no_cache=0 # Check whether --enable-accel or --disable-accel was given. if test "${enable_accel+set}" = set; then @@ -5924,7 +5927,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-button""... $ac_c" 1>&6 -echo "configure:5928: checking for --${enablestring:-enable}-button" >&5 +echo "configure:5931: checking for --${enablestring:-enable}-button" >&5 no_cache=0 # Check whether --enable-button or --disable-button was given. if test "${enable_button+set}" = set; then @@ -5964,7 +5967,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-bmpbutton""... $ac_c" 1>&6 -echo "configure:5968: checking for --${enablestring:-enable}-bmpbutton" >&5 +echo "configure:5971: checking for --${enablestring:-enable}-bmpbutton" >&5 no_cache=0 # Check whether --enable-bmpbutton or --disable-bmpbutton was given. if test "${enable_bmpbutton+set}" = set; then @@ -6004,7 +6007,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-calendar""... $ac_c" 1>&6 -echo "configure:6008: checking for --${enablestring:-enable}-calendar" >&5 +echo "configure:6011: checking for --${enablestring:-enable}-calendar" >&5 no_cache=0 # Check whether --enable-calendar or --disable-calendar was given. if test "${enable_calendar+set}" = set; then @@ -6044,7 +6047,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-caret""... $ac_c" 1>&6 -echo "configure:6048: checking for --${enablestring:-enable}-caret" >&5 +echo "configure:6051: checking for --${enablestring:-enable}-caret" >&5 no_cache=0 # Check whether --enable-caret or --disable-caret was given. if test "${enable_caret+set}" = set; then @@ -6084,7 +6087,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-checkbox""... $ac_c" 1>&6 -echo "configure:6088: checking for --${enablestring:-enable}-checkbox" >&5 +echo "configure:6091: checking for --${enablestring:-enable}-checkbox" >&5 no_cache=0 # Check whether --enable-checkbox or --disable-checkbox was given. if test "${enable_checkbox+set}" = set; then @@ -6124,7 +6127,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-checklst""... $ac_c" 1>&6 -echo "configure:6128: checking for --${enablestring:-enable}-checklst" >&5 +echo "configure:6131: checking for --${enablestring:-enable}-checklst" >&5 no_cache=0 # Check whether --enable-checklst or --disable-checklst was given. if test "${enable_checklst+set}" = set; then @@ -6164,7 +6167,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-choice""... $ac_c" 1>&6 -echo "configure:6168: checking for --${enablestring:-enable}-choice" >&5 +echo "configure:6171: checking for --${enablestring:-enable}-choice" >&5 no_cache=0 # Check whether --enable-choice or --disable-choice was given. if test "${enable_choice+set}" = set; then @@ -6204,7 +6207,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-combobox""... $ac_c" 1>&6 -echo "configure:6208: checking for --${enablestring:-enable}-combobox" >&5 +echo "configure:6211: checking for --${enablestring:-enable}-combobox" >&5 no_cache=0 # Check whether --enable-combobox or --disable-combobox was given. if test "${enable_combobox+set}" = set; then @@ -6244,7 +6247,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-gauge""... $ac_c" 1>&6 -echo "configure:6248: checking for --${enablestring:-enable}-gauge" >&5 +echo "configure:6251: checking for --${enablestring:-enable}-gauge" >&5 no_cache=0 # Check whether --enable-gauge or --disable-gauge was given. if test "${enable_gauge+set}" = set; then @@ -6284,7 +6287,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-grid""... $ac_c" 1>&6 -echo "configure:6288: checking for --${enablestring:-enable}-grid" >&5 +echo "configure:6291: checking for --${enablestring:-enable}-grid" >&5 no_cache=0 # Check whether --enable-grid or --disable-grid was given. if test "${enable_grid+set}" = set; then @@ -6324,7 +6327,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-newgrid""... $ac_c" 1>&6 -echo "configure:6328: checking for --${enablestring:-enable}-newgrid" >&5 +echo "configure:6331: checking for --${enablestring:-enable}-newgrid" >&5 no_cache=0 # Check whether --enable-newgrid or --disable-newgrid was given. if test "${enable_newgrid+set}" = set; then @@ -6364,7 +6367,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-imaglist""... $ac_c" 1>&6 -echo "configure:6368: checking for --${enablestring:-enable}-imaglist" >&5 +echo "configure:6371: checking for --${enablestring:-enable}-imaglist" >&5 no_cache=0 # Check whether --enable-imaglist or --disable-imaglist was given. if test "${enable_imaglist+set}" = set; then @@ -6404,7 +6407,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-listbox""... $ac_c" 1>&6 -echo "configure:6408: checking for --${enablestring:-enable}-listbox" >&5 +echo "configure:6411: checking for --${enablestring:-enable}-listbox" >&5 no_cache=0 # Check whether --enable-listbox or --disable-listbox was given. if test "${enable_listbox+set}" = set; then @@ -6444,7 +6447,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-listctrl""... $ac_c" 1>&6 -echo "configure:6448: checking for --${enablestring:-enable}-listctrl" >&5 +echo "configure:6451: checking for --${enablestring:-enable}-listctrl" >&5 no_cache=0 # Check whether --enable-listctrl or --disable-listctrl was given. if test "${enable_listctrl+set}" = set; then @@ -6484,7 +6487,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-notebook""... $ac_c" 1>&6 -echo "configure:6488: checking for --${enablestring:-enable}-notebook" >&5 +echo "configure:6491: checking for --${enablestring:-enable}-notebook" >&5 no_cache=0 # Check whether --enable-notebook or --disable-notebook was given. if test "${enable_notebook+set}" = set; then @@ -6524,7 +6527,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-propsheet""... $ac_c" 1>&6 -echo "configure:6528: checking for --${enablestring:-enable}-propsheet" >&5 +echo "configure:6531: checking for --${enablestring:-enable}-propsheet" >&5 no_cache=0 # Check whether --enable-propsheet or --disable-propsheet was given. if test "${enable_propsheet+set}" = set; then @@ -6564,7 +6567,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-radiobox""... $ac_c" 1>&6 -echo "configure:6568: checking for --${enablestring:-enable}-radiobox" >&5 +echo "configure:6571: checking for --${enablestring:-enable}-radiobox" >&5 no_cache=0 # Check whether --enable-radiobox or --disable-radiobox was given. if test "${enable_radiobox+set}" = set; then @@ -6604,7 +6607,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-radiobtn""... $ac_c" 1>&6 -echo "configure:6608: checking for --${enablestring:-enable}-radiobtn" >&5 +echo "configure:6611: checking for --${enablestring:-enable}-radiobtn" >&5 no_cache=0 # Check whether --enable-radiobtn or --disable-radiobtn was given. if test "${enable_radiobtn+set}" = set; then @@ -6644,7 +6647,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-sash""... $ac_c" 1>&6 -echo "configure:6648: checking for --${enablestring:-enable}-sash" >&5 +echo "configure:6651: checking for --${enablestring:-enable}-sash" >&5 no_cache=0 # Check whether --enable-sash or --disable-sash was given. if test "${enable_sash+set}" = set; then @@ -6684,7 +6687,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-scrollbar""... $ac_c" 1>&6 -echo "configure:6688: checking for --${enablestring:-enable}-scrollbar" >&5 +echo "configure:6691: checking for --${enablestring:-enable}-scrollbar" >&5 no_cache=0 # Check whether --enable-scrollbar or --disable-scrollbar was given. if test "${enable_scrollbar+set}" = set; then @@ -6724,7 +6727,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-slider""... $ac_c" 1>&6 -echo "configure:6728: checking for --${enablestring:-enable}-slider" >&5 +echo "configure:6731: checking for --${enablestring:-enable}-slider" >&5 no_cache=0 # Check whether --enable-slider or --disable-slider was given. if test "${enable_slider+set}" = set; then @@ -6764,7 +6767,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-spinbtn""... $ac_c" 1>&6 -echo "configure:6768: checking for --${enablestring:-enable}-spinbtn" >&5 +echo "configure:6771: checking for --${enablestring:-enable}-spinbtn" >&5 no_cache=0 # Check whether --enable-spinbtn or --disable-spinbtn was given. if test "${enable_spinbtn+set}" = set; then @@ -6804,7 +6807,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-spinctrl""... $ac_c" 1>&6 -echo "configure:6808: checking for --${enablestring:-enable}-spinctrl" >&5 +echo "configure:6811: checking for --${enablestring:-enable}-spinctrl" >&5 no_cache=0 # Check whether --enable-spinctrl or --disable-spinctrl was given. if test "${enable_spinctrl+set}" = set; then @@ -6844,7 +6847,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-splitter""... $ac_c" 1>&6 -echo "configure:6848: checking for --${enablestring:-enable}-splitter" >&5 +echo "configure:6851: checking for --${enablestring:-enable}-splitter" >&5 no_cache=0 # Check whether --enable-splitter or --disable-splitter was given. if test "${enable_splitter+set}" = set; then @@ -6884,7 +6887,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-statbmp""... $ac_c" 1>&6 -echo "configure:6888: checking for --${enablestring:-enable}-statbmp" >&5 +echo "configure:6891: checking for --${enablestring:-enable}-statbmp" >&5 no_cache=0 # Check whether --enable-statbmp or --disable-statbmp was given. if test "${enable_statbmp+set}" = set; then @@ -6924,7 +6927,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-statbox""... $ac_c" 1>&6 -echo "configure:6928: checking for --${enablestring:-enable}-statbox" >&5 +echo "configure:6931: checking for --${enablestring:-enable}-statbox" >&5 no_cache=0 # Check whether --enable-statbox or --disable-statbox was given. if test "${enable_statbox+set}" = set; then @@ -6964,7 +6967,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-statline""... $ac_c" 1>&6 -echo "configure:6968: checking for --${enablestring:-enable}-statline" >&5 +echo "configure:6971: checking for --${enablestring:-enable}-statline" >&5 no_cache=0 # Check whether --enable-statline or --disable-statline was given. if test "${enable_statline+set}" = set; then @@ -7004,7 +7007,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-stattext""... $ac_c" 1>&6 -echo "configure:7008: checking for --${enablestring:-enable}-stattext" >&5 +echo "configure:7011: checking for --${enablestring:-enable}-stattext" >&5 no_cache=0 # Check whether --enable-stattext or --disable-stattext was given. if test "${enable_stattext+set}" = set; then @@ -7044,7 +7047,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-statusbar""... $ac_c" 1>&6 -echo "configure:7048: checking for --${enablestring:-enable}-statusbar" >&5 +echo "configure:7051: checking for --${enablestring:-enable}-statusbar" >&5 no_cache=0 # Check whether --enable-statusbar or --disable-statusbar was given. if test "${enable_statusbar+set}" = set; then @@ -7084,7 +7087,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-tabdialog""... $ac_c" 1>&6 -echo "configure:7088: checking for --${enablestring:-enable}-tabdialog" >&5 +echo "configure:7091: checking for --${enablestring:-enable}-tabdialog" >&5 no_cache=0 # Check whether --enable-tabdialog or --disable-tabdialog was given. if test "${enable_tabdialog+set}" = set; then @@ -7124,7 +7127,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-textctrl""... $ac_c" 1>&6 -echo "configure:7128: checking for --${enablestring:-enable}-textctrl" >&5 +echo "configure:7131: checking for --${enablestring:-enable}-textctrl" >&5 no_cache=0 # Check whether --enable-textctrl or --disable-textctrl was given. if test "${enable_textctrl+set}" = set; then @@ -7164,7 +7167,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-togglebtn""... $ac_c" 1>&6 -echo "configure:7168: checking for --${enablestring:-enable}-togglebtn" >&5 +echo "configure:7171: checking for --${enablestring:-enable}-togglebtn" >&5 no_cache=0 # Check whether --enable-togglebtn or --disable-togglebtn was given. if test "${enable_togglebtn+set}" = set; then @@ -7204,7 +7207,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-toolbar""... $ac_c" 1>&6 -echo "configure:7208: checking for --${enablestring:-enable}-toolbar" >&5 +echo "configure:7211: checking for --${enablestring:-enable}-toolbar" >&5 no_cache=0 # Check whether --enable-toolbar or --disable-toolbar was given. if test "${enable_toolbar+set}" = set; then @@ -7244,7 +7247,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-tbarnative""... $ac_c" 1>&6 -echo "configure:7248: checking for --${enablestring:-enable}-tbarnative" >&5 +echo "configure:7251: checking for --${enablestring:-enable}-tbarnative" >&5 no_cache=0 # Check whether --enable-tbarnative or --disable-tbarnative was given. if test "${enable_tbarnative+set}" = set; then @@ -7284,7 +7287,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-tbarsmpl""... $ac_c" 1>&6 -echo "configure:7288: checking for --${enablestring:-enable}-tbarsmpl" >&5 +echo "configure:7291: checking for --${enablestring:-enable}-tbarsmpl" >&5 no_cache=0 # Check whether --enable-tbarsmpl or --disable-tbarsmpl was given. if test "${enable_tbarsmpl+set}" = set; then @@ -7324,7 +7327,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-treectrl""... $ac_c" 1>&6 -echo "configure:7328: checking for --${enablestring:-enable}-treectrl" >&5 +echo "configure:7331: checking for --${enablestring:-enable}-treectrl" >&5 no_cache=0 # Check whether --enable-treectrl or --disable-treectrl was given. if test "${enable_treectrl+set}" = set; then @@ -7364,7 +7367,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-tipwindow""... $ac_c" 1>&6 -echo "configure:7368: checking for --${enablestring:-enable}-tipwindow" >&5 +echo "configure:7371: checking for --${enablestring:-enable}-tipwindow" >&5 no_cache=0 # Check whether --enable-tipwindow or --disable-tipwindow was given. if test "${enable_tipwindow+set}" = set; then @@ -7404,7 +7407,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-popupwin""... $ac_c" 1>&6 -echo "configure:7408: checking for --${enablestring:-enable}-popupwin" >&5 +echo "configure:7411: checking for --${enablestring:-enable}-popupwin" >&5 no_cache=0 # Check whether --enable-popupwin or --disable-popupwin was given. if test "${enable_popupwin+set}" = set; then @@ -7446,7 +7449,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-commondlg""... $ac_c" 1>&6 -echo "configure:7450: checking for --${enablestring:-enable}-commondlg" >&5 +echo "configure:7453: checking for --${enablestring:-enable}-commondlg" >&5 no_cache=0 # Check whether --enable-commondlg or --disable-commondlg was given. if test "${enable_commondlg+set}" = set; then @@ -7486,7 +7489,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-choicedlg""... $ac_c" 1>&6 -echo "configure:7490: checking for --${enablestring:-enable}-choicedlg" >&5 +echo "configure:7493: checking for --${enablestring:-enable}-choicedlg" >&5 no_cache=0 # Check whether --enable-choicedlg or --disable-choicedlg was given. if test "${enable_choicedlg+set}" = set; then @@ -7526,7 +7529,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-coldlg""... $ac_c" 1>&6 -echo "configure:7530: checking for --${enablestring:-enable}-coldlg" >&5 +echo "configure:7533: checking for --${enablestring:-enable}-coldlg" >&5 no_cache=0 # Check whether --enable-coldlg or --disable-coldlg was given. if test "${enable_coldlg+set}" = set; then @@ -7566,7 +7569,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-filedlg""... $ac_c" 1>&6 -echo "configure:7570: checking for --${enablestring:-enable}-filedlg" >&5 +echo "configure:7573: checking for --${enablestring:-enable}-filedlg" >&5 no_cache=0 # Check whether --enable-filedlg or --disable-filedlg was given. if test "${enable_filedlg+set}" = set; then @@ -7606,7 +7609,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-finddlg""... $ac_c" 1>&6 -echo "configure:7610: checking for --${enablestring:-enable}-finddlg" >&5 +echo "configure:7613: checking for --${enablestring:-enable}-finddlg" >&5 no_cache=0 # Check whether --enable-finddlg or --disable-finddlg was given. if test "${enable_finddlg+set}" = set; then @@ -7646,7 +7649,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-fontdlg""... $ac_c" 1>&6 -echo "configure:7650: checking for --${enablestring:-enable}-fontdlg" >&5 +echo "configure:7653: checking for --${enablestring:-enable}-fontdlg" >&5 no_cache=0 # Check whether --enable-fontdlg or --disable-fontdlg was given. if test "${enable_fontdlg+set}" = set; then @@ -7686,7 +7689,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dirdlg""... $ac_c" 1>&6 -echo "configure:7690: checking for --${enablestring:-enable}-dirdlg" >&5 +echo "configure:7693: checking for --${enablestring:-enable}-dirdlg" >&5 no_cache=0 # Check whether --enable-dirdlg or --disable-dirdlg was given. if test "${enable_dirdlg+set}" = set; then @@ -7726,7 +7729,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-msgdlg""... $ac_c" 1>&6 -echo "configure:7730: checking for --${enablestring:-enable}-msgdlg" >&5 +echo "configure:7733: checking for --${enablestring:-enable}-msgdlg" >&5 no_cache=0 # Check whether --enable-msgdlg or --disable-msgdlg was given. if test "${enable_msgdlg+set}" = set; then @@ -7766,7 +7769,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-numberdlg""... $ac_c" 1>&6 -echo "configure:7770: checking for --${enablestring:-enable}-numberdlg" >&5 +echo "configure:7773: checking for --${enablestring:-enable}-numberdlg" >&5 no_cache=0 # Check whether --enable-numberdlg or --disable-numberdlg was given. if test "${enable_numberdlg+set}" = set; then @@ -7806,7 +7809,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-splash""... $ac_c" 1>&6 -echo "configure:7810: checking for --${enablestring:-enable}-splash" >&5 +echo "configure:7813: checking for --${enablestring:-enable}-splash" >&5 no_cache=0 # Check whether --enable-splash or --disable-splash was given. if test "${enable_splash+set}" = set; then @@ -7846,7 +7849,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-textdlg""... $ac_c" 1>&6 -echo "configure:7850: checking for --${enablestring:-enable}-textdlg" >&5 +echo "configure:7853: checking for --${enablestring:-enable}-textdlg" >&5 no_cache=0 # Check whether --enable-textdlg or --disable-textdlg was given. if test "${enable_textdlg+set}" = set; then @@ -7886,7 +7889,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-tipdlg""... $ac_c" 1>&6 -echo "configure:7890: checking for --${enablestring:-enable}-tipdlg" >&5 +echo "configure:7893: checking for --${enablestring:-enable}-tipdlg" >&5 no_cache=0 # Check whether --enable-tipdlg or --disable-tipdlg was given. if test "${enable_tipdlg+set}" = set; then @@ -7926,7 +7929,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-progressdlg""... $ac_c" 1>&6 -echo "configure:7930: checking for --${enablestring:-enable}-progressdlg" >&5 +echo "configure:7933: checking for --${enablestring:-enable}-progressdlg" >&5 no_cache=0 # Check whether --enable-progressdlg or --disable-progressdlg was given. if test "${enable_progressdlg+set}" = set; then @@ -7966,7 +7969,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-wizarddlg""... $ac_c" 1>&6 -echo "configure:7970: checking for --${enablestring:-enable}-wizarddlg" >&5 +echo "configure:7973: checking for --${enablestring:-enable}-wizarddlg" >&5 no_cache=0 # Check whether --enable-wizarddlg or --disable-wizarddlg was given. if test "${enable_wizarddlg+set}" = set; then @@ -8008,7 +8011,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-menus""... $ac_c" 1>&6 -echo "configure:8012: checking for --${enablestring:-enable}-menus" >&5 +echo "configure:8015: checking for --${enablestring:-enable}-menus" >&5 no_cache=0 # Check whether --enable-menus or --disable-menus was given. if test "${enable_menus+set}" = set; then @@ -8048,7 +8051,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-miniframe""... $ac_c" 1>&6 -echo "configure:8052: checking for --${enablestring:-enable}-miniframe" >&5 +echo "configure:8055: checking for --${enablestring:-enable}-miniframe" >&5 no_cache=0 # Check whether --enable-miniframe or --disable-miniframe was given. if test "${enable_miniframe+set}" = set; then @@ -8088,7 +8091,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-tooltips""... $ac_c" 1>&6 -echo "configure:8092: checking for --${enablestring:-enable}-tooltips" >&5 +echo "configure:8095: checking for --${enablestring:-enable}-tooltips" >&5 no_cache=0 # Check whether --enable-tooltips or --disable-tooltips was given. if test "${enable_tooltips+set}" = set; then @@ -8128,7 +8131,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-splines""... $ac_c" 1>&6 -echo "configure:8132: checking for --${enablestring:-enable}-splines" >&5 +echo "configure:8135: checking for --${enablestring:-enable}-splines" >&5 no_cache=0 # Check whether --enable-splines or --disable-splines was given. if test "${enable_splines+set}" = set; then @@ -8168,7 +8171,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-validators""... $ac_c" 1>&6 -echo "configure:8172: checking for --${enablestring:-enable}-validators" >&5 +echo "configure:8175: checking for --${enablestring:-enable}-validators" >&5 no_cache=0 # Check whether --enable-validators or --disable-validators was given. if test "${enable_validators+set}" = set; then @@ -8208,7 +8211,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-busyinfo""... $ac_c" 1>&6 -echo "configure:8212: checking for --${enablestring:-enable}-busyinfo" >&5 +echo "configure:8215: checking for --${enablestring:-enable}-busyinfo" >&5 no_cache=0 # Check whether --enable-busyinfo or --disable-busyinfo was given. if test "${enable_busyinfo+set}" = set; then @@ -8248,7 +8251,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-joystick""... $ac_c" 1>&6 -echo "configure:8252: checking for --${enablestring:-enable}-joystick" >&5 +echo "configure:8255: checking for --${enablestring:-enable}-joystick" >&5 no_cache=0 # Check whether --enable-joystick or --disable-joystick was given. if test "${enable_joystick+set}" = set; then @@ -8288,7 +8291,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-metafile""... $ac_c" 1>&6 -echo "configure:8292: checking for --${enablestring:-enable}-metafile" >&5 +echo "configure:8295: checking for --${enablestring:-enable}-metafile" >&5 no_cache=0 # Check whether --enable-metafile or --disable-metafile was given. if test "${enable_metafile+set}" = set; then @@ -8328,7 +8331,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-dragimage""... $ac_c" 1>&6 -echo "configure:8332: checking for --${enablestring:-enable}-dragimage" >&5 +echo "configure:8335: checking for --${enablestring:-enable}-dragimage" >&5 no_cache=0 # Check whether --enable-dragimage or --disable-dragimage was given. if test "${enable_dragimage+set}" = set; then @@ -8370,7 +8373,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-palette""... $ac_c" 1>&6 -echo "configure:8374: checking for --${enablestring:-enable}-palette" >&5 +echo "configure:8377: checking for --${enablestring:-enable}-palette" >&5 no_cache=0 # Check whether --enable-palette or --disable-palette was given. if test "${enable_palette+set}" = set; then @@ -8410,7 +8413,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-image""... $ac_c" 1>&6 -echo "configure:8414: checking for --${enablestring:-enable}-image" >&5 +echo "configure:8417: checking for --${enablestring:-enable}-image" >&5 no_cache=0 # Check whether --enable-image or --disable-image was given. if test "${enable_image+set}" = set; then @@ -8450,7 +8453,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-gif""... $ac_c" 1>&6 -echo "configure:8454: checking for --${enablestring:-enable}-gif" >&5 +echo "configure:8457: checking for --${enablestring:-enable}-gif" >&5 no_cache=0 # Check whether --enable-gif or --disable-gif was given. if test "${enable_gif+set}" = set; then @@ -8490,7 +8493,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-pcx""... $ac_c" 1>&6 -echo "configure:8494: checking for --${enablestring:-enable}-pcx" >&5 +echo "configure:8497: checking for --${enablestring:-enable}-pcx" >&5 no_cache=0 # Check whether --enable-pcx or --disable-pcx was given. if test "${enable_pcx+set}" = set; then @@ -8530,7 +8533,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-iff""... $ac_c" 1>&6 -echo "configure:8534: checking for --${enablestring:-enable}-iff" >&5 +echo "configure:8537: checking for --${enablestring:-enable}-iff" >&5 no_cache=0 # Check whether --enable-iff or --disable-iff was given. if test "${enable_iff+set}" = set; then @@ -8570,7 +8573,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-pnm""... $ac_c" 1>&6 -echo "configure:8574: checking for --${enablestring:-enable}-pnm" >&5 +echo "configure:8577: checking for --${enablestring:-enable}-pnm" >&5 no_cache=0 # Check whether --enable-pnm or --disable-pnm was given. if test "${enable_pnm+set}" = set; then @@ -8610,7 +8613,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-xpm""... $ac_c" 1>&6 -echo "configure:8614: checking for --${enablestring:-enable}-xpm" >&5 +echo "configure:8617: checking for --${enablestring:-enable}-xpm" >&5 no_cache=0 # Check whether --enable-xpm or --disable-xpm was given. if test "${enable_xpm+set}" = set; then @@ -8650,7 +8653,7 @@ fi enablestring= echo $ac_n "checking for --${enablestring:-enable}-ico_cur""... $ac_c" 1>&6 -echo "configure:8654: checking for --${enablestring:-enable}-ico_cur" >&5 +echo "configure:8657: checking for --${enablestring:-enable}-ico_cur" >&5 no_cache=0 # Check whether --enable-ico_cur or --disable-ico_cur was given. if test "${enable_ico_cur+set}" = set; then @@ -8709,7 +8712,7 @@ esac echo $ac_n "checking for toolkit""... $ac_c" 1>&6 -echo "configure:8713: checking for toolkit" >&5 +echo "configure:8716: checking for toolkit" >&5 if test "$wxUSE_GUI" = "yes"; then @@ -8771,56 +8774,6 @@ else echo "$ac_t""base ($host_alias hosted) only" 1>&6 fi -case "${host}" in - *-pc-os2_emx | *-pc-os2-emx ) - LIBS="$LIBS -lstdcpp" - if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then - echo $ac_n "checking for drand48 in -lcExt""... $ac_c" 1>&6 -echo "configure:8780: checking for drand48 in -lcExt" >&5 -ac_lib_var=`echo cExt'_'drand48 | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lcExt $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lcExt" -else - echo "$ac_t""no" 1>&6 -fi - - else - RESPROGRAMOBJ="\${top_srcdir}/include/wx/os2/wx.res" - fi - ;; -esac - wants_win32=0 doesnt_want_win32=0 case "${host}" in @@ -8946,7 +8899,7 @@ CFLAGS=${CFLAGS:=} # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8950: checking for $ac_word" >&5 +echo "configure:8903: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8976,7 +8929,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8980: checking for $ac_word" >&5 +echo "configure:8933: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9027,7 +8980,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9031: checking for $ac_word" >&5 +echo "configure:8984: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9059,7 +9012,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:9063: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:9016: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -9070,12 +9023,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 9074 "configure" +#line 9027 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:9079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -9101,12 +9054,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:9105: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:9058: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:9110: checking whether we are using GNU C" >&5 +echo "configure:9063: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9115,7 +9068,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:9119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:9072: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -9134,7 +9087,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:9138: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:9091: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9167,7 +9120,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:9171: checking how to run the C preprocessor" >&5 +echo "configure:9124: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -9182,13 +9135,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9145: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -9199,13 +9152,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -9216,13 +9169,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9226: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -9248,13 +9201,13 @@ echo "$ac_t""$CPP" 1>&6 if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:9252: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:9205: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -9272,7 +9225,7 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -9309,7 +9262,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9313: checking for $ac_word" >&5 +echo "configure:9266: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9341,7 +9294,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:9345: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:9298: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -9352,12 +9305,12 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext << EOF -#line 9356 "configure" +#line 9309 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:9361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -9383,12 +9336,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:9387: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:9340: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:9392: checking whether we are using GNU C++" >&5 +echo "configure:9345: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9397,7 +9350,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:9401: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:9354: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -9416,7 +9369,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:9420: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:9373: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9459,7 +9412,7 @@ cross_compiling=$ac_cv_prog_cc_cross # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9463: checking for $ac_word" >&5 +echo "configure:9416: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9490,7 +9443,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9494: checking for $ac_word" >&5 +echo "configure:9447: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9530,7 +9483,7 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:9534: checking for a BSD compatible install" >&5 +echo "configure:9487: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -9586,6 +9539,8 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' case ${INSTALL} in /* ) # Absolute ;; + ?:* ) # Drive letter, considered as absolute. + ;; *) INSTALL=`pwd`/${INSTALL} ;; esac @@ -9604,7 +9559,7 @@ esac # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9608: checking for $ac_word" >&5 +echo "configure:9563: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9633,7 +9588,7 @@ fi echo $ac_n "checking if make is GNU make""... $ac_c" 1>&6 -echo "configure:9637: checking if make is GNU make" >&5 +echo "configure:9592: checking if make is GNU make" >&5 if eval "test \"`echo '$''{'wx_cv_prog_makeisgnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9659,7 +9614,7 @@ fi if test "x$wx_cv_prog_makeisgnu" != "xyes"; then echo $ac_n "checking if make supports VPATH""... $ac_c" 1>&6 -echo "configure:9663: checking if make supports VPATH" >&5 +echo "configure:9618: checking if make supports VPATH" >&5 if eval "test \"`echo '$''{'wx_cv_prog_makevpath'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9706,7 +9661,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9710: checking for $ac_word" >&5 +echo "configure:9665: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9740,7 +9695,7 @@ test -n "$YACC" || YACC="yacc" # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9744: checking for $ac_word" >&5 +echo "configure:9699: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9774,7 +9729,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:9778: checking for yywrap in -l$ac_lib" >&5 +echo "configure:9733: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -9782,7 +9737,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9817,7 +9772,7 @@ fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:9821: checking whether ln -s works" >&5 +echo "configure:9776: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9838,23 +9793,73 @@ else fi +case "${host}" in + *-pc-os2_emx | *-pc-os2-emx ) + LIBS="$LIBS -lstdcpp" + if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then + echo $ac_n "checking for drand48 in -lcExt""... $ac_c" 1>&6 +echo "configure:9802: checking for drand48 in -lcExt" >&5 +ac_lib_var=`echo cExt'_'drand48 | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcExt $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lcExt" +else + echo "$ac_t""no" 1>&6 +fi + + else + RESPROGRAMOBJ="\${top_srcdir}/include/wx/os2/wx.res" + fi + ;; +esac + if test "$wxUSE_MAC" != 1; then for ac_hdr in strings.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:9848: checking for $ac_hdr" >&5 +echo "configure:9853: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9886,17 +9891,17 @@ for ac_hdr in stdlib.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:9890: checking for $ac_hdr" >&5 +echo "configure:9895: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9926,17 +9931,17 @@ for ac_hdr in malloc.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:9930: checking for $ac_hdr" >&5 +echo "configure:9935: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9966,17 +9971,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:9970: checking for $ac_hdr" >&5 +echo "configure:9975: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10006,17 +10011,17 @@ for ac_hdr in wchar.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10010: checking for $ac_hdr" >&5 +echo "configure:10015: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10048,17 +10053,17 @@ if test "$ac_cv_header_wchar_h" != "yes"; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10052: checking for $ac_hdr" >&5 +echo "configure:10057: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10067: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10090,17 +10095,17 @@ for ac_hdr in fnmatch.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10094: checking for $ac_hdr" >&5 +echo "configure:10099: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10104: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10131,12 +10136,12 @@ if test "x$ac_cv_header_fnmatch_h" = "xyes"; then for ac_func in fnmatch do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10135: checking for $ac_func" >&5 +echo "configure:10140: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10189,17 +10194,17 @@ for ac_hdr in langinfo.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10193: checking for $ac_hdr" >&5 +echo "configure:10198: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10226,23 +10231,31 @@ fi done +case "${host}" in + *-pc-os2_emx | *-pc-os2-emx ) + if test $ac_cv_header_langinfo_h = "yes"; then + LIBS="$LIBS -lintl" + fi + ;; +esac + if test "$wxUSE_GUI" = "yes"; then if test "$wxUSE_UNIX" = "yes"; then for ac_hdr in X11/XKBlib.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10236: checking for $ac_hdr" >&5 +echo "configure:10249: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10273,12 +10286,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:10277: checking for working const" >&5 +echo "configure:10290: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -10348,21 +10361,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:10352: checking for inline" >&5 +echo "configure:10365: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10379: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -10389,7 +10402,7 @@ esac echo $ac_n "checking size of char""... $ac_c" 1>&6 -echo "configure:10393: checking size of char" >&5 +echo "configure:10406: checking size of char" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10397,9 +10410,10 @@ else ac_cv_sizeof_char=1 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10408,7 +10422,7 @@ main() exit(0); } EOF -if { (eval echo configure:10412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_char=`cat conftestval` else @@ -10428,7 +10442,7 @@ EOF echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:10432: checking size of short" >&5 +echo "configure:10446: checking size of short" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10436,9 +10450,10 @@ else ac_cv_sizeof_short=2 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10447,7 +10462,7 @@ main() exit(0); } EOF -if { (eval echo configure:10451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_short=`cat conftestval` else @@ -10467,7 +10482,7 @@ EOF echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:10471: checking size of void *" >&5 +echo "configure:10486: checking size of void *" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10475,9 +10490,10 @@ else ac_cv_sizeof_void_p=4 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10486,7 +10502,7 @@ main() exit(0); } EOF -if { (eval echo configure:10490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_void_p=`cat conftestval` else @@ -10506,7 +10522,7 @@ EOF echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:10510: checking size of int" >&5 +echo "configure:10526: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10514,9 +10530,10 @@ else ac_cv_sizeof_int=4 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10525,7 +10542,7 @@ main() exit(0); } EOF -if { (eval echo configure:10529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else @@ -10545,7 +10562,7 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:10549: checking size of long" >&5 +echo "configure:10566: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10553,9 +10570,10 @@ else ac_cv_sizeof_long=4 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10564,7 +10582,7 @@ main() exit(0); } EOF -if { (eval echo configure:10568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else @@ -10587,7 +10605,7 @@ EOF case "${host}" in arm-*-linux* ) echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:10591: checking size of long long" >&5 +echo "configure:10609: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10595,9 +10613,10 @@ else ac_cv_sizeof_long_long=8 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10606,7 +10625,7 @@ main() exit(0); } EOF -if { (eval echo configure:10610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else @@ -10628,7 +10647,7 @@ EOF ;; *-hp-hpux* ) echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:10632: checking size of long long" >&5 +echo "configure:10651: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10636,9 +10655,10 @@ else ac_cv_sizeof_long_long=0 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10647,7 +10667,7 @@ main() exit(0); } EOF -if { (eval echo configure:10651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else @@ -10672,7 +10692,7 @@ EOF ;; * ) echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:10676: checking size of long long" >&5 +echo "configure:10696: checking size of long long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10680,9 +10700,10 @@ else ac_cv_sizeof_long_long=0 else cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -10691,7 +10712,7 @@ main() exit(0); } EOF -if { (eval echo configure:10695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_long=`cat conftestval` else @@ -10713,19 +10734,32 @@ EOF esac echo $ac_n "checking size of wchar_t""... $ac_c" 1>&6 -echo "configure:10717: checking size of wchar_t" >&5 +echo "configure:10738: checking size of wchar_t" >&5 if eval "test \"`echo '$''{'wx_cv_sizeof_wchar_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then - wx_cv_sizeof_wchar_t=4 + + case "${host}" in + *-pc-msdosdjgpp ) + wx_cv_sizeof_wchar_t=0 + ;; + * ) + wx_cv_sizeof_wchar_t=4 + ;; + esac + else cat > conftest.$ac_ext < @@ -10745,7 +10779,7 @@ else } EOF -if { (eval echo configure:10749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then wx_cv_sizeof_wchar_t=`cat conftestval` else @@ -10777,13 +10811,13 @@ if test "$enable_largefile" != no; then wx_largefile=no echo $ac_n "checking for _FILE_OFFSET_BITS value needed for large files""... $ac_c" 1>&6 -echo "configure:10781: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo "configure:10815: checking for _FILE_OFFSET_BITS value needed for large files" >&5 if eval "test \"`echo '$''{'ac_cv_sys_file_offset_bits'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -10794,7 +10828,7 @@ typedef struct { ; return 0; } EOF -if { (eval echo configure:10798: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sys_file_offset_bits=64 else @@ -10821,13 +10855,13 @@ EOF if test "x$wx_largefile" != "xyes"; then echo $ac_n "checking for _LARGE_FILES value needed for large files""... $ac_c" 1>&6 -echo "configure:10825: checking for _LARGE_FILES value needed for large files" >&5 +echo "configure:10859: checking for _LARGE_FILES value needed for large files" >&5 if eval "test \"`echo '$''{'ac_cv_sys_large_files'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -10838,7 +10872,7 @@ typedef struct { ; return 0; } EOF -if { (eval echo configure:10842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sys_large_files=1 else @@ -10865,7 +10899,7 @@ EOF fi echo $ac_n "checking if large file support is available""... $ac_c" 1>&6 -echo "configure:10869: checking if large file support is available" >&5 +echo "configure:10903: checking if large file support is available" >&5 if test "x$wx_largefile" = "xyes"; then cat >> confdefs.h <<\EOF #define HAVE_LARGEFILE_SUPPORT 1 @@ -10886,14 +10920,14 @@ if test "x$wx_largefile" = "xyes"; then fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:10890: checking whether byte ordering is bigendian" >&5 +echo "configure:10924: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -10904,11 +10938,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:10908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -10919,7 +10953,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:10923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -10939,7 +10973,7 @@ if test "$cross_compiling" = yes; then ac_cv_c_bigendian=unknown else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -10980,7 +11014,7 @@ fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:10984: checking how to run the C++ preprocessor" >&5 +echo "configure:11018: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -10993,12 +11027,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -11042,17 +11076,17 @@ cross_compiling=$ac_cv_prog_cxx_cross do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11046: checking for $ac_hdr" >&5 +echo "configure:11080: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11100,7 +11134,7 @@ cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking if C++ compiler supports bool""... $ac_c" 1>&6 -echo "configure:11104: checking if C++ compiler supports bool" >&5 +echo "configure:11138: checking if C++ compiler supports bool" >&5 if eval "test \"`echo '$''{'wx_cv_cpp_bool'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -11115,7 +11149,7 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_cpp_bool=yes @@ -11165,7 +11199,7 @@ EOF echo $ac_n "checking if C++ compiler supports the explicit keyword""... $ac_c" 1>&6 -echo "configure:11169: checking if C++ compiler supports the explicit keyword" >&5 +echo "configure:11203: checking if C++ compiler supports the explicit keyword" >&5 if eval "test \"`echo '$''{'wx_cv_explicit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -11180,7 +11214,7 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_explicit=no else @@ -11313,8 +11347,7 @@ SEARCH_INCLUDE="\ /usr/local/x11r5/include \ /usr/lpp/Xamples/include \ \ - /usr/openwin/share/include \ - /usr/include" + /usr/openwin/share/include" SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` " @@ -11369,13 +11402,13 @@ rm -f confcache if test "$USE_LINUX" = 1; then echo $ac_n "checking for glibc 2.1 or later""... $ac_c" 1>&6 -echo "configure:11373: checking for glibc 2.1 or later" >&5 +echo "configure:11406: checking for glibc 2.1 or later" >&5 if eval "test \"`echo '$''{'wx_cv_lib_glibc21'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -11386,7 +11419,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:11390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_lib_glibc21=yes @@ -11434,17 +11467,17 @@ EOF if test "$wxUSE_REGEX" = "sys" -o "$wxUSE_REGEX" = "yes" ; then ac_safe=`echo "regex.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for regex.h""... $ac_c" 1>&6 -echo "configure:11438: checking for regex.h" >&5 +echo "configure:11471: checking for regex.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11463,12 +11496,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then for ac_func in regcomp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11467: checking for $ac_func" >&5 +echo "configure:11500: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -11547,19 +11580,28 @@ EOF if test "$wxUSE_ZLIB" = "sys" -o "$wxUSE_ZLIB" = "yes" ; then - ac_safe=`echo "zlib.h" | sed 'y%./+-%__p_%'` + if test "$USE_DARWIN" = 1; then + system_zlib_h_ok="yes" + else + echo $ac_n "checking for zlib.h >= 1.1.4""... $ac_c" 1>&6 +echo "configure:11588: checking for zlib.h >= 1.1.4" >&5 +if eval "test \"`echo '$''{'ac_cv_header_zlib_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_safe=`echo "zlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for zlib.h""... $ac_c" 1>&6 -echo "configure:11553: checking for zlib.h" >&5 +echo "configure:11595: checking for zlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11575,8 +11617,58 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6 -echo "configure:11580: checking for deflate in -lz" >&5 + : +else + echo "$ac_t""no" 1>&6 +fi + + +else + cat > conftest.$ac_ext < + #include + + + int main() + { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%s", + ZLIB_VERSION[0] == '1' && + (ZLIB_VERSION[2] > '1' || + (ZLIB_VERSION[2] == '1' && + ZLIB_VERSION[4] >= '4')) ? "yes" : "no"); + exit(0); + } + + +EOF +if { (eval echo configure:11650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_header_zlib_h=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_zlib_h=no +fi +rm -fr conftest* +fi + + +fi + +echo "$ac_t""$ac_cv_header_zlib_h" 1>&6 + + system_zlib_h_ok=$ac_cv_header_zlib_h + fi + + if test "$system_zlib_h_ok" = "yes"; then + echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6 +echo "configure:11672: checking for deflate in -lz" >&5 ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -11584,7 +11676,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11615,16 +11707,13 @@ else echo "$ac_t""no" 1>&6 fi -else - echo "$ac_t""no" 1>&6 -fi - + fi if test "x$ZLIB_LINK" = "x" ; then if test "$wxUSE_ZLIB" = "sys" ; then - { echo "configure: error: system zlib compression library not found! Use --with-zlib=builtin to use built-in version" 1>&2; exit 1; } + { echo "configure: error: zlib library not found or too old! Use --with-zlib=builtin to use built-in version" 1>&2; exit 1; } else - echo "configure: warning: system zlib compression library not found, will use built-in instead" 1>&2 + echo "configure: warning: zlib library not found or too old, will use built-in instead" 1>&2 wxUSE_ZLIB=builtin fi else @@ -11658,19 +11747,25 @@ EOF if test "$wxUSE_MGL" != 1 ; then if test "$wxUSE_LIBPNG" = "sys" -o "$wxUSE_LIBPNG" = "yes" ; then - ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for png.h > 0.90""... $ac_c" 1>&6 +echo "configure:11752: checking for png.h > 0.90" >&5 +if eval "test \"`echo '$''{'ac_cv_header_png_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for png.h""... $ac_c" 1>&6 -echo "configure:11664: checking for png.h" >&5 +echo "configure:11759: checking for png.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11686,8 +11781,50 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - echo $ac_n "checking for png_check_sig in -lpng""... $ac_c" 1>&6 -echo "configure:11691: checking for png_check_sig in -lpng" >&5 + : +else + echo "$ac_t""no" 1>&6 +fi + + +else + cat > conftest.$ac_ext < + #include + + int main() + { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%s", + PNG_LIBPNG_VER > 90 ? "yes" : "no"); + exit(0); + } + +EOF +if { (eval echo configure:11809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_header_png_h=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_png_h=no +fi +rm -fr conftest* +fi + + +fi + +echo "$ac_t""$ac_cv_header_png_h" 1>&6 + + if test "$ac_cv_header_png_h" = "yes"; then + echo $ac_n "checking for png_check_sig in -lpng""... $ac_c" 1>&6 +echo "configure:11828: checking for png_check_sig in -lpng" >&5 ac_lib_var=`echo png'_'png_check_sig | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -11695,7 +11832,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpng -lz -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11726,21 +11863,17 @@ else echo "$ac_t""no" 1>&6 fi - -else - echo "$ac_t""no" 1>&6 -fi - + fi if test "x$PNG_LINK" = "x" ; then if test "$wxUSE_LIBPNG" = "sys" ; then - { echo "configure: error: system png library not found! Use --with-libpng=builtin to use built-in version" 1>&2; exit 1; } + { echo "configure: error: system png library not found or too old! Use --with-libpng=builtin to use built-in version" 1>&2; exit 1; } else - echo "configure: warning: system png library not found, will use built-in instead" 1>&2 + echo "configure: warning: system png library not found or too old, will use built-in instead" 1>&2 wxUSE_LIBPNG=builtin fi else - wxUSE_LIBPNG=yes + wxUSE_LIBPNG=sys fi fi fi @@ -11769,12 +11902,12 @@ EOF if test "$wxUSE_MGL" != 1 ; then if test "$wxUSE_LIBJPEG" = "sys" -o "$wxUSE_LIBJPEG" = "yes" ; then echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 -echo "configure:11773: checking for jpeglib.h" >&5 +echo "configure:11906: checking for jpeglib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_jpeglib_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_jpeglib_h=yes else @@ -11804,7 +11937,7 @@ fi if test "$ac_cv_header_jpeglib_h" = "yes"; then echo $ac_n "checking for jpeg_read_header in -ljpeg""... $ac_c" 1>&6 -echo "configure:11808: checking for jpeg_read_header in -ljpeg" >&5 +echo "configure:11941: checking for jpeg_read_header in -ljpeg" >&5 ac_lib_var=`echo jpeg'_'jpeg_read_header | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -11812,7 +11945,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ljpeg $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11866,6 +11999,7 @@ fi TIFF_INCLUDE= TIFF_LINK= +TIFF_PREREQ_LINKS=-lm if test "$wxUSE_LIBTIFF" != "no" ; then cat >> confdefs.h <<\EOF #define wxUSE_LIBTIFF 1 @@ -11873,19 +12007,25 @@ EOF if test "$wxUSE_LIBTIFF" = "sys" -o "$wxUSE_LIBTIFF" = "yes" ; then + if test "$wxUSE_LIBJPEG" = "sys"; then + TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $JPEG_LINK" + fi + if test "$wxUSE_ZLIB" = "sys"; then + TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $ZLIB_LINK" + fi ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6 -echo "configure:11879: checking for tiffio.h" >&5 +echo "configure:12019: checking for tiffio.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11902,15 +12042,15 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for TIFFError in -ltiff""... $ac_c" 1>&6 -echo "configure:11906: checking for TIFFError in -ltiff" >&5 +echo "configure:12046: checking for TIFFError in -ltiff" >&5 ac_lib_var=`echo tiff'_'TIFFError | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-ltiff -lm $LIBS" +LIBS="-ltiff $TIFF_PREREQ_LINKS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11966,6 +12106,7 @@ fi AFMINSTALL= +WIN32INSTALL= TOOLKIT= TOOLKIT_INCLUDE= @@ -11976,17 +12117,17 @@ if test "$USE_WIN32" = 1 ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11980: checking for $ac_hdr" >&5 +echo "configure:12121: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11990: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12131: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12014,17 +12155,17 @@ done ac_safe=`echo "windows.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for windows.h""... $ac_c" 1>&6 -echo "configure:12018: checking for windows.h" >&5 +echo "configure:12159: checking for windows.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12028: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12050,13 +12191,13 @@ fi echo $ac_n "checking if w32api has good enough MSIE support""... $ac_c" 1>&6 -echo "configure:12054: checking if w32api has good enough MSIE support" >&5 +echo "configure:12195: checking if w32api has good enough MSIE support" >&5 if eval "test \"`echo '$''{'wx_cv_w32api_win32_ie'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -12072,7 +12213,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_w32api_win32_ie=yes @@ -12108,6 +12249,8 @@ echo "$ac_t""$wx_cv_w32api_win32_ie" 1>&6 RESFLAGS="--include-dir \$(top_srcdir)/include --include-dir \$(top_srcdir)/\$(program_dir) --define __WIN32__ --define __WIN95__ --define __GNUWIN32__" RESPROGRAMOBJ="\$(PROGRAM)_resources.o" + + WIN32INSTALL=win32install fi if test "$USE_DARWIN" = 1; then @@ -12139,7 +12282,7 @@ if test "$wxUSE_GUI" = "yes"; then if test "$wxUSE_GTK" = 1; then echo $ac_n "checking for GTK+ version""... $ac_c" 1>&6 -echo "configure:12143: checking for GTK+ version" >&5 +echo "configure:12286: checking for GTK+ version" >&5 gtk_version_cached=1 if eval "test \"`echo '$''{'wx_cv_lib_gtk'+set}'`\" = set"; then @@ -12154,7 +12297,7 @@ else GTK_MODULES=gthread fi - wx_cv_lib_gtk= + wx_cv_lib_gtk= if test "x$wxUSE_GTK2" = "xyes"; then # Check whether --enable-gtktest or --disable-gtktest was given. if test "${enable_gtktest+set}" = set; then @@ -12180,7 +12323,7 @@ fi # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12184: checking for $ac_word" >&5 +echo "configure:12327: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -12228,7 +12371,7 @@ fi min_gtk_version=2.0.0 echo $ac_n "checking for GTK+ - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:12232: checking for GTK+ - version >= $min_gtk_version" >&5 +echo "configure:12375: checking for GTK+ - version >= $min_gtk_version" >&5 if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs @@ -12263,7 +12406,7 @@ echo "configure:12232: checking for GTK+ - version >= $min_gtk_version" >&5 echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -12338,7 +12481,7 @@ main () } EOF -if { (eval echo configure:12342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:12485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -12372,7 +12515,7 @@ fi CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -12382,7 +12525,7 @@ int main() { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:12386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" @@ -12413,9 +12556,7 @@ rm -f conftest* rm -f conf.gtktest - fi - - if test -z "$wx_cv_lib_gtk"; then + else # Check whether --with-gtk-prefix or --without-gtk-prefix was given. if test "${with_gtk_prefix+set}" = set; then withval="$with_gtk_prefix" @@ -12466,7 +12607,7 @@ fi # Extract the first word of "gtk-config", so it can be a program name with args. set dummy gtk-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12470: checking for $ac_word" >&5 +echo "configure:12611: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -12501,7 +12642,7 @@ fi min_gtk_version=1.2.7 echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:12505: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:12646: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -12524,7 +12665,7 @@ echo "configure:12505: checking for GTK - version >= $min_gtk_version" >&5 echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -12602,7 +12743,7 @@ main () } EOF -if { (eval echo configure:12606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:12747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -12636,7 +12777,7 @@ fi CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -12646,7 +12787,7 @@ int main() { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:12650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" @@ -12684,10 +12825,9 @@ rm -f conftest* rm -f conf.gtktest - fi - if test -z "$wx_cv_lib_gtk"; then - # Check whether --with-gtk-prefix or --without-gtk-prefix was given. + if test -z "$wx_cv_lib_gtk"; then + # Check whether --with-gtk-prefix or --without-gtk-prefix was given. if test "${with_gtk_prefix+set}" = set; then withval="$with_gtk_prefix" gtk_config_prefix="$withval" @@ -12737,7 +12877,7 @@ fi # Extract the first word of "gtk-config", so it can be a program name with args. set dummy gtk-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12741: checking for $ac_word" >&5 +echo "configure:12881: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -12772,7 +12912,7 @@ fi min_gtk_version=1.2.3 echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:12776: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:12916: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -12795,7 +12935,7 @@ echo "configure:12776: checking for GTK - version >= $min_gtk_version" >&5 echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -12873,7 +13013,7 @@ main () } EOF -if { (eval echo configure:12877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:13017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -12907,7 +13047,7 @@ fi CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -12917,7 +13057,7 @@ int main() { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:12921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" @@ -12955,6 +13095,7 @@ rm -f conftest* rm -f conf.gtktest + fi fi if test -z "$wx_cv_lib_gtk"; then @@ -12974,6 +13115,7 @@ fi case "$wx_cv_lib_gtk" in 2.0) WXGTK20=1 + TOOLKIT_VERSION=2 ;; 1.2.7) WXGTK127=1 WXGTK12=1 @@ -12998,7 +13140,7 @@ equivalent variable and GTK+ is version 1.2.3 or above. # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13002: checking for $ac_word" >&5 +echo "configure:13144: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13042,19 +13184,19 @@ fi PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for pangoft2""... $ac_c" 1>&6 -echo "configure:13046: checking for pangoft2" >&5 +echo "configure:13188: checking for pangoft2" >&5 if $PKG_CONFIG --exists "pangoft2" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking PANGOFT2_CFLAGS""... $ac_c" 1>&6 -echo "configure:13053: checking PANGOFT2_CFLAGS" >&5 +echo "configure:13195: checking PANGOFT2_CFLAGS" >&5 PANGOFT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2"` echo "$ac_t""$PANGOFT2_CFLAGS" 1>&6 echo $ac_n "checking PANGOFT2_LIBS""... $ac_c" 1>&6 -echo "configure:13058: checking PANGOFT2_LIBS" >&5 +echo "configure:13200: checking PANGOFT2_LIBS" >&5 PANGOFT2_LIBS=`$PKG_CONFIG --libs "pangoft2"` echo "$ac_t""$PANGOFT2_LIBS" 1>&6 else @@ -13088,6 +13230,69 @@ echo "configure:13058: checking PANGOFT2_LIBS" >&5 fi fi + else + if test "$wxUSE_UNICODE" = "yes"; then + echo "configure: warning: Unicode configuration not supported with GTK+ 1.x" 1>&2 + wxUSE_UNICODE=no + fi + fi + + if test "$USE_DARWIN" != 1; then + for ac_func in poll +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:13245: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:13273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + fi TOOLKIT_INCLUDE="$wx_cv_cflags_gtk" @@ -13098,7 +13303,7 @@ echo "configure:13058: checking PANGOFT2_LIBS" >&5 GUIDIST=GTK_DIST echo $ac_n "checking for gdk_im_open in -lgdk""... $ac_c" 1>&6 -echo "configure:13102: checking for gdk_im_open in -lgdk" >&5 +echo "configure:13307: checking for gdk_im_open in -lgdk" >&5 ac_lib_var=`echo gdk'_'gdk_im_open | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13106,7 +13311,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgdk $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13144,7 +13349,7 @@ fi if test "$wxUSE_MGL" = 1; then echo $ac_n "checking for SciTech MGL library""... $ac_c" 1>&6 -echo "configure:13148: checking for SciTech MGL library" >&5 +echo "configure:13353: checking for SciTech MGL library" >&5 if test "x$MGL_ROOT" = x ; then echo "$ac_t""not found" 1>&6 { echo "configure: error: Cannot find MGL library. Make sure MGL_ROOT is set." 1>&2; exit 1; } @@ -13152,34 +13357,51 @@ echo "configure:13148: checking for SciTech MGL library" >&5 echo "$ac_t""$MGL_ROOT" 1>&6 fi + echo $ac_n "checking for libmgl location""... $ac_c" 1>&6 +echo "configure:13362: checking for libmgl location" >&5 case "${host}" in *-*-linux* ) - mgl_os=linux/gcc/glibc + if test "x$wxUSE_SHARED" = xyes ; then + mgl_os_candidates="linux/gcc/glibc.so linux/gcc/glibc" + else + mgl_os_candidates="linux/gcc/glibc linux/gcc/glibc.so" + fi ;; *-pc-msdosdjgpp ) - mgl_os=dos32/dj2 + mgl_os_candidates="dos32/dj2" ;; *) { echo "configure: error: This system type ${host} is not yet supported by wxMGL." 1>&2; exit 1; } esac mgl_lib_type="" + mgl_os="" - if test "$wxUSE_DEBUG_FLAG" = yes ; then - if test -f $MGL_ROOT/lib/debug/$mgl_os/libmgl.a -o \ - -f $MGL_ROOT/lib/debug/$mgl_os/libmgl.so; then - mgl_lib_type=debug + for mgl_os_i in $mgl_os_candidates ; do + if test "x$mgl_os" = x ; then + if test "$wxUSE_DEBUG_FLAG" = yes ; then + if test -f $MGL_ROOT/lib/debug/$mgl_os_i/libmgl.a -o \ + -f $MGL_ROOT/lib/debug/$mgl_os_i/libmgl.so; then + mgl_lib_type=debug + mgl_os=$mgl_os_i + fi + fi + if test "x$mgl_lib_type" = x ; then + if test -f $MGL_ROOT/lib/release/$mgl_os_i/libmgl.a -o \ + -f $MGL_ROOT/lib/release/$mgl_os_i/libmgl.so; then + mgl_lib_type=release + mgl_os=$mgl_os_i + fi + fi fi - fi - if test "x$mgl_lib_type" = x ; then - if test -f $MGL_ROOT/lib/release/$mgl_os/libmgl.a -o \ - -f $MGL_ROOT/lib/release/$mgl_os/libmgl.so; then - mgl_lib_type=release - else - { echo "configure: error: Cannot find MGL libraries, make sure they are compiled." 1>&2; exit 1; } - fi - fi + done + if test "x$mgl_os" = x ; then + echo "$ac_t""not found" 1>&6 + { echo "configure: error: Cannot find MGL libraries, make sure they are compiled." 1>&2; exit 1; } + fi + echo "$ac_t"""$MGL_ROOT/lib/$mgl_lib_type/$mgl_os"" 1>&6 + wxUSE_UNIVERSAL="yes" TOOLKIT_INCLUDE="-I$MGL_ROOT/include" @@ -13192,7 +13414,7 @@ echo "configure:13148: checking for SciTech MGL library" >&5 if test "$wxUSE_MICROWIN" = 1; then echo $ac_n "checking for MicroWindows""... $ac_c" 1>&6 -echo "configure:13196: checking for MicroWindows" >&5 +echo "configure:13418: checking for MicroWindows" >&5 if test "x$MICROWINDOWS" = x ; then echo "$ac_t""not found" 1>&6 { echo "configure: error: Cannot find MicroWindows library. Make sure MICROWINDOWS is set." 1>&2; exit 1; } @@ -13224,7 +13446,7 @@ echo "configure:13196: checking for MicroWindows" >&5 # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:13228: checking for X" >&5 +echo "configure:13450: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -13286,12 +13508,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13360,14 +13582,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -13473,17 +13695,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:13477: checking whether -R must be followed by a space" >&5 +echo "configure:13699: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -13499,14 +13721,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -13538,7 +13760,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:13542: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:13764: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13546,7 +13768,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13579,7 +13801,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:13583: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:13805: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13587,7 +13809,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13627,12 +13849,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:13631: checking for gethostbyname" >&5 +echo "configure:13853: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -13676,7 +13898,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:13680: checking for gethostbyname in -lnsl" >&5 +echo "configure:13902: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13684,7 +13906,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13725,12 +13947,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:13729: checking for connect" >&5 +echo "configure:13951: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -13774,7 +13996,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:13778: checking for connect in -lsocket" >&5 +echo "configure:14000: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13782,7 +14004,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13817,12 +14039,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:13821: checking for remove" >&5 +echo "configure:14043: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -13866,7 +14088,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:13870: checking for remove in -lposix" >&5 +echo "configure:14092: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13874,7 +14096,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13909,12 +14131,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:13913: checking for shmat" >&5 +echo "configure:14135: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -13958,7 +14180,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:13962: checking for shmat in -lipc" >&5 +echo "configure:14184: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13966,7 +14188,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14010,7 +14232,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:14014: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:14236: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14018,7 +14240,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14065,7 +14287,7 @@ fi if test "$wxUSE_NANOX" = "yes"; then echo $ac_n "checking for MicroWindows/NanoX distribution""... $ac_c" 1>&6 -echo "configure:14069: checking for MicroWindows/NanoX distribution" >&5 +echo "configure:14291: checking for MicroWindows/NanoX distribution" >&5 if test "x$MICROWIN" = x ; then echo "$ac_t""not found" 1>&6 { echo "configure: error: Cannot find MicroWindows library. Make sure MICROWIN is set." 1>&2; exit 1; } @@ -14080,10 +14302,10 @@ EOF xpm_link= echo $ac_n "checking for Xpm library""... $ac_c" 1>&6 -echo "configure:14084: checking for Xpm library" >&5 +echo "configure:14306: checking for Xpm library" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libXpm.$ac_extension"; then @@ -14112,7 +14334,7 @@ EOF echo "$ac_t""found at $ac_find_libraries" 1>&6 else cat > conftest.$ac_ext < @@ -14124,7 +14346,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14350: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* xpm_link=" -lXpm" @@ -14148,6 +14370,295 @@ fi rm -f conftest* fi + if test "$wxUSE_UNICODE" = "yes"; then + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:14382: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PKG_CONFIG" in + /*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +if test -n "$PKG_CONFIG"; then + echo "$ac_t""$PKG_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo $ac_n "checking for pangox""... $ac_c" 1>&6 +echo "configure:14426: checking for pangox" >&5 + + if $PKG_CONFIG --exists "pangox" ; then + echo "$ac_t""yes" 1>&6 + succeeded=yes + + echo $ac_n "checking PANGOX_CFLAGS""... $ac_c" 1>&6 +echo "configure:14433: checking PANGOX_CFLAGS" >&5 + PANGOX_CFLAGS=`$PKG_CONFIG --cflags "pangox"` + echo "$ac_t""$PANGOX_CFLAGS" 1>&6 + + echo $ac_n "checking PANGOX_LIBS""... $ac_c" 1>&6 +echo "configure:14438: checking PANGOX_LIBS" >&5 + PANGOX_LIBS=`$PKG_CONFIG --libs "pangox"` + echo "$ac_t""$PANGOX_LIBS" 1>&6 + else + PANGOX_CFLAGS="" + PANGOX_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + PANGOX_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangox"` + + fi + + + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + + CXXFLAGS="$CXXFLAGS $PANGOX_CFLAGS" + LIBS="$LIBS $PANGOX_LIBS" + + else + + { echo "configure: error: pangox library not found, library cannot be compiled in Unicode mode" 1>&2; exit 1; } + + + fi + + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:14477: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PKG_CONFIG" in + /*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +if test -n "$PKG_CONFIG"; then + echo "$ac_t""$PKG_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo $ac_n "checking for pangoft2""... $ac_c" 1>&6 +echo "configure:14521: checking for pangoft2" >&5 + + if $PKG_CONFIG --exists "pangoft2" ; then + echo "$ac_t""yes" 1>&6 + succeeded=yes + + echo $ac_n "checking PANGOFT2_CFLAGS""... $ac_c" 1>&6 +echo "configure:14528: checking PANGOFT2_CFLAGS" >&5 + PANGOFT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2"` + echo "$ac_t""$PANGOFT2_CFLAGS" 1>&6 + + echo $ac_n "checking PANGOFT2_LIBS""... $ac_c" 1>&6 +echo "configure:14533: checking PANGOFT2_LIBS" >&5 + PANGOFT2_LIBS=`$PKG_CONFIG --libs "pangoft2"` + echo "$ac_t""$PANGOFT2_LIBS" 1>&6 + else + PANGOFT2_CFLAGS="" + PANGOFT2_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoft2"` + + fi + + + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + + CXXFLAGS="$CXXFLAGS $PANGOFT2_CFLAGS" + LIBS="$LIBS $PANGOFT2_LIBS" + + else + + echo "configure: warning: pangoft2 library not found, library will be compiled without printing support" 1>&2 + wxUSE_PRINTING_ARCHITECTURE="no" + + + fi + + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:14573: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PKG_CONFIG" in + /*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +if test -n "$PKG_CONFIG"; then + echo "$ac_t""$PKG_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo $ac_n "checking for pangoxft""... $ac_c" 1>&6 +echo "configure:14617: checking for pangoxft" >&5 + + if $PKG_CONFIG --exists "pangoxft" ; then + echo "$ac_t""yes" 1>&6 + succeeded=yes + + echo $ac_n "checking PANGOXFT_CFLAGS""... $ac_c" 1>&6 +echo "configure:14624: checking PANGOXFT_CFLAGS" >&5 + PANGOXFT_CFLAGS=`$PKG_CONFIG --cflags "pangoxft"` + echo "$ac_t""$PANGOXFT_CFLAGS" 1>&6 + + echo $ac_n "checking PANGOXFT_LIBS""... $ac_c" 1>&6 +echo "configure:14629: checking PANGOXFT_LIBS" >&5 + PANGOXFT_LIBS=`$PKG_CONFIG --libs "pangoxft"` + echo "$ac_t""$PANGOXFT_LIBS" 1>&6 + else + PANGOXFT_CFLAGS="" + PANGOXFT_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + PANGOXFT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangoxft"` + + fi + + + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + + CXXFLAGS="$CXXFLAGS $PANGOXFT_CFLAGS" + LIBS="$LIBS $PANGOXFT_LIBS" + + else + + echo "configure: warning: pangoxft library not found, library will be compiled without anti-aliasing support" 1>&2 + + + fi + + fi + wxUSE_UNIVERSAL="yes" if test "$wxUSE_NANOX" = "yes"; then @@ -14166,17 +14677,17 @@ rm -f conftest* if test "$wxUSE_WINE" = 1; then ac_safe=`echo "windows.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for windows.h""... $ac_c" 1>&6 -echo "configure:14170: checking for windows.h" >&5 +echo "configure:14681: checking for windows.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -14203,10 +14714,10 @@ fi xpm_link= echo $ac_n "checking for Xpm library""... $ac_c" 1>&6 -echo "configure:14207: checking for Xpm library" >&5 +echo "configure:14718: checking for Xpm library" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libXpm.$ac_extension"; then @@ -14231,10 +14742,10 @@ EOF mesa_link= echo $ac_n "checking for Mesa library""... $ac_c" 1>&6 -echo "configure:14235: checking for Mesa library" >&5 +echo "configure:14746: checking for Mesa library" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libMesaGL.$ac_extension"; then @@ -14281,17 +14792,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:14285: checking whether -R must be followed by a space" >&5 +echo "configure:14796: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -14307,14 +14818,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -14346,7 +14857,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:14350: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:14861: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14354,7 +14865,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14387,7 +14898,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:14391: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:14902: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14395,7 +14906,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14435,12 +14946,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:14439: checking for gethostbyname" >&5 +echo "configure:14950: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -14484,7 +14995,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:14488: checking for gethostbyname in -lnsl" >&5 +echo "configure:14999: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14492,7 +15003,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14533,12 +15044,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:14537: checking for connect" >&5 +echo "configure:15048: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -14582,7 +15093,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:14586: checking for connect in -lsocket" >&5 +echo "configure:15097: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14590,7 +15101,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14625,12 +15136,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:14629: checking for remove" >&5 +echo "configure:15140: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -14674,7 +15185,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:14678: checking for remove in -lposix" >&5 +echo "configure:15189: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14682,7 +15193,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14717,12 +15228,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:14721: checking for shmat" >&5 +echo "configure:15232: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -14766,7 +15277,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:14770: checking for shmat in -lipc" >&5 +echo "configure:15281: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14774,7 +15285,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14818,7 +15329,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:14822: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:15333: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -14826,7 +15337,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -14866,16 +15377,16 @@ fi { echo "configure: error: X11 not found" 1>&2; exit 1; } fi - GUI_TK_LIBRARY="$X_LIBS" - TOOLKIT_INCLUDE="$X_CFLAGS" + GUI_TK_LIBRARY=`echo $X_LIBS | sed 's/ -LNONE//'` + TOOLKIT_INCLUDE=`echo $X_CFLAGS | sed 's/ -INONE//'` AFMINSTALL=afminstall COMPILED_X_PROGRAM=0 echo $ac_n "checking for Motif/Lesstif headers""... $ac_c" 1>&6 -echo "configure:14876: checking for Motif/Lesstif headers" >&5 +echo "configure:15387: checking for Motif/Lesstif headers" >&5 ac_find_includes= -for ac_dir in $SEARCH_INCLUDE; +for ac_dir in $SEARCH_INCLUDE /usr/include; do if test -f "$ac_dir/Xm/Xm.h"; then ac_find_includes=$ac_dir @@ -14886,19 +15397,22 @@ for ac_dir in $SEARCH_INCLUDE; if test "$ac_find_includes" != "" ; then echo "$ac_t""found in $ac_find_includes" 1>&6 - ac_path_to_include=$ac_find_includes - echo "$TOOLKIT_INCLUDE" | grep "\-I$ac_find_includes" > /dev/null - result=$? - if test $result = 0; then + if test "x$ac_find_includes" = "x/usr/include"; then ac_path_to_include="" else - ac_path_to_include=" -I$ac_find_includes" + echo "$TOOLKIT_INCLUDE" | grep "\-I$ac_find_includes" > /dev/null + result=$? + if test $result = 0; then + ac_path_to_include="" + else + ac_path_to_include=" -I$ac_find_includes" + fi fi TOOLKIT_INCLUDE="$TOOLKIT_INCLUDE$ac_path_to_include" else cat > conftest.$ac_ext < @@ -14910,7 +15424,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""found in default search path" 1>&6 @@ -14931,10 +15445,10 @@ rm -f conftest* if test "$COMPILED_X_PROGRAM" = 0; then echo $ac_n "checking for Motif/Lesstif library""... $ac_c" 1>&6 -echo "configure:14935: checking for Motif/Lesstif library" >&5 +echo "configure:15449: checking for Motif/Lesstif library" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libXm.$ac_extension"; then @@ -14962,7 +15476,7 @@ for ac_dir in $SEARCH_LIB; CFLAGS="$CFLAGS $TOOLKIT_INCLUDE" cat > conftest.$ac_ext < @@ -14974,7 +15488,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15492: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""found in default search path" 1>&6 @@ -14998,10 +15512,10 @@ rm -f conftest* xpm_link= echo $ac_n "checking for Xpm library""... $ac_c" 1>&6 -echo "configure:15002: checking for Xpm library" >&5 +echo "configure:15516: checking for Xpm library" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libXpm.$ac_extension"; then @@ -15034,7 +15548,7 @@ EOF CFLAGS="$CFLAGS $TOOLKIT_INCLUDE" cat > conftest.$ac_ext < @@ -15046,7 +15560,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:15050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* xpm_link=" -lXpm" @@ -15073,7 +15587,7 @@ rm -f conftest* fi echo $ac_n "checking if we need -lXp and/or -lSM -lICE""... $ac_c" 1>&6 -echo "configure:15077: checking if we need -lXp and/or -lSM -lICE" >&5 +echo "configure:15591: checking if we need -lXp and/or -lSM -lICE" >&5 libp_link="" libsm_ice_link="" libs_found=0 @@ -15087,7 +15601,7 @@ echo "configure:15077: checking if we need -lXp and/or -lSM -lICE" >&5 CFLAGS="$CFLAGS $TOOLKIT_INCLUDE" cat > conftest.$ac_ext < @@ -15102,7 +15616,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:15106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* libp_link="$libp" @@ -15148,6 +15662,11 @@ rm -f conftest* if test "$wxUSE_PM" = 1; then TOOLKIT=PM GUIDIST=GTK_DIST + echo "configure: warning: OS/2 PM requires old resource format, re-enabled" 1>&2 + wxUSE_PROLOGIO="yes" + wxUSE_RESOURCES="yes" + echo "configure: warning: OS/2 threads are not yet supported... disabled" 1>&2 + wxUSE_THREADS="no" fi if test "$TOOLKIT" = "PM" ; then @@ -15245,17 +15764,17 @@ if test "$wxUSE_OPENGL" = "yes"; then else ac_safe=`echo "GL/gl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gl.h""... $ac_c" 1>&6 -echo "configure:15249: checking for GL/gl.h" >&5 +echo "configure:15768: checking for GL/gl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:15259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:15778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -15273,10 +15792,10 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for -lGL""... $ac_c" 1>&6 -echo "configure:15277: checking for -lGL" >&5 +echo "configure:15796: checking for -lGL" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libGL.$ac_extension"; then @@ -15306,10 +15825,10 @@ for ac_dir in $SEARCH_LIB; else echo "$ac_t""no" 1>&6 echo $ac_n "checking for -lMesaGL""... $ac_c" 1>&6 -echo "configure:15310: checking for -lMesaGL" >&5 +echo "configure:15829: checking for -lMesaGL" >&5 ac_find_libraries= -for ac_dir in $SEARCH_LIB; +for ac_dir in $SEARCH_LIB /usr/lib; do for ac_extension in a so sl dylib; do if test -f "$ac_dir/libMesaGL.$ac_extension"; then @@ -15378,8 +15897,10 @@ if test "$wxUSE_DEBUG_FLAG" = "yes"; then lib_debug_suffix=d fi -TOOLCHAIN_NAME="${TOOLKIT_DIR}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}-${WX_RELEASE}" -TOOLCHAIN_NAME_GL="${TOOLKIT_DIR}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_gl-${WX_RELEASE}" +WX_VERSION_TAG=`echo WX${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_${WX_RELEASE} | tr "[a-z]" "[A-Z]"` + +TOOLCHAIN_NAME="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}-${WX_RELEASE}" +TOOLCHAIN_NAME_GL="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_gl-${WX_RELEASE}" if test "$cross_compiling" = "yes"; then TOOLCHAIN_NAME="${TOOLCHAIN_NAME}-${host_alias}" @@ -15388,6 +15909,7 @@ fi WX_LIBRARY="wx_${TOOLCHAIN_NAME}" WX_LIBRARY_GL="wx_${TOOLCHAIN_NAME_GL}" +WX_LIBRARY_BASENAME="wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}" WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${SO_SUFFIX}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}" WX_LIBRARY_NAME_SHARED_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}" @@ -15414,9 +15936,18 @@ case "${host}" in ;; *-*-darwin* ) + + WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.${SO_SUFFIX}" + WX_LIBRARY_NAME_SHARED_GL="lib${WX_LIBRARY_GL}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.${SO_SUFFIX}" + + WX_LIBRARY_LINK1="lib${WX_LIBRARY}.${WX_CURRENT}.${SO_SUFFIX}" + WX_LIBRARY_LINK2="lib${WX_LIBRARY}.${SO_SUFFIX}" + WX_LIBRARY_LINK1_GL="lib${WX_LIBRARY_GL}.${WX_CURRENT}.${SO_SUFFIX}" + WX_LIBRARY_LINK2_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}" + if test "$wxUSE_MAC" = 1; then - WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.r" - WX_RESOURCES_MACOSX_DATA="lib${WX_LIBRARY}.rsrc" + WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.${WX_CURRENT}.r" + WX_RESOURCES_MACOSX_DATA="lib${WX_LIBRARY}.${WX_CURRENT}.rsrc" fi ;; esac @@ -15458,6 +15989,43 @@ if test "$wxUSE_SHARED" = "yes"; then PIC_FLAG="-fPIC" fi + + + found_versioning=no + + + if test $found_versioning = no ; then + echo $ac_n "checking if the linker accepts --version-script""... $ac_c" 1>&6 +echo "configure:16000: checking if the linker accepts --version-script" >&5 +if eval "test \"`echo '$''{'wx_cv_version_script'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + echo "VER_1 { *; };" >conftest.sym + echo "int main() { return 0; }" >conftest.cpp + + if { ac_try=' + $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp + -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr'; { (eval echo configure:16010: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then + if test -s conftest.stderr ; then + wx_cv_version_script=no + else + wx_cv_version_script=yes + fi + else + wx_cv_version_script=no + fi + rm -f conftest.output conftest.stderr conftest.sym conftest.cpp + +fi + +echo "$ac_t""$wx_cv_version_script" 1>&6 + if test $wx_cv_version_script = yes ; then + LDFLAGS_VERSIONING="-Wl,--version-script,\$(top_builddir)/version-script" + fi + fi + + SHARED_LD="${CXX} -shared -o" case "${host}" in @@ -15482,13 +16050,13 @@ if test "$wxUSE_SHARED" = "yes"; then *-*-linux* ) if test "$GCC" != "yes"; then echo $ac_n "checking for Intel compiler""... $ac_c" 1>&6 -echo "configure:15486: checking for Intel compiler" >&5 +echo "configure:16054: checking for Intel compiler" >&5 if eval "test \"`echo '$''{'wx_cv_prog_icc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:16071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_prog_icc=yes else @@ -15543,15 +16111,16 @@ echo "$ac_t""$wx_cv_prog_icc" 1>&6 CXXFLAGS="$CXXFLAGS -fno-common" SHARED_LD="\${top_srcdir}/distrib/mac/shared-ld-sh -undefined suppress -flat_namespace -o" PIC_FLAG="-dynamic -fPIC" - SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION}" - SONAME_FLAGS_GL=${SONAME_FLAGS} + SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION} -install_name \$(libdir)/${WX_LIBRARY_LINK1}" + SONAME_FLAGS_GL="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION} -install_name \$(libdir)/${WX_LIBRARY_LINK1_GL}" ;; *-*-aix* ) - # Extract the first word of "makeC++SharedLib", so it can be a program name with args. + if test "$GCC" != "yes"; then + # Extract the first word of "makeC++SharedLib", so it can be a program name with args. set dummy makeC++SharedLib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:15555: checking for $ac_word" >&5 +echo "configure:16124: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AIX_CXX_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -15579,11 +16148,11 @@ else fi - SHARED_LD="$(AIX_CXX_LD) -p 0 -o" + SHARED_LD="$(AIX_CXX_LD) -p 0 -o" + fi ;; *-*-cygwin* | *-*-mingw32* ) - WX_LIBRARY_IMPORTLIB="${WX_LIBRARY_NAME_SHARED}.a" SHARED_LD="${CXX} -shared -Wl,--out-implib,lib/${WX_LIBRARY_IMPORTLIB} -o" @@ -15591,11 +16160,11 @@ fi PIC_FLAG="-UWXUSINGDLL -DWXMAKINGDLL=1 -D_DLL=1 -D_WINDLL=1" - if test "$wxUSE_OPENGL" = "yes"; then - WX_ALL_INSTALLED="preinstall_gl" - WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED} \$(build_libdir)/${WX_LIBRARY_NAME_SHARED_GL}" - else - WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED}" + WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED}" + WX_ALL_INSTALLED="CREATE_INSTALLED_LINKS" + + if test "$wxUSE_OPENGL" = "yes"; then + LIBS="${LIBS} ${OPENGL_LIBS}" fi ;; @@ -15603,9 +16172,14 @@ fi SHARED_LD="${LD} -shared -o" ;; + *-*-irix* ) + if test "$GCC" != "yes"; then + PIC_FLAG="-KPIC" + fi + ;; + *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ *-*-sunos4* | \ - *-*-irix5* | *-*-irix6* | \ *-*-osf* | \ *-*-dgux5* | \ *-*-sysv5* ) @@ -15659,7 +16233,7 @@ if test "$wxUSE_MAC" = 1; then # Extract the first word of "Rez", so it can be a program name with args. set dummy Rez; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:15663: checking for $ac_word" >&5 +echo "configure:16237: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RESCOMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -15689,7 +16263,7 @@ fi # Extract the first word of "DeRez", so it can be a program name with args. set dummy DeRez; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:15693: checking for $ac_word" >&5 +echo "configure:16267: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DEREZ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -15717,13 +16291,8 @@ else fi MACOSX_BUNDLE="bundle" - if test "$wxUSE_SHARED" = "yes"; then - LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r -o \$(BIN_PROGRAM)" - LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r -o" - else - LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r ${LIBWXMACRES} -o \$(BIN_PROGRAM)" - LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r \${prefix}/lib/${WX_RESOURCES_MACOSX_ASCII} -o" - fi + LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r ${LIBWXMACRES} -o \$(BIN_PROGRAM)" + LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r \${prefix}/lib/${WX_RESOURCES_MACOSX_ASCII} -o" else if test "$wxUSE_PM" = 1; then LIBWXMACRESCOMP="emxbind -ep \$(BIN_PROGRAM)" @@ -15732,12 +16301,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:15736: checking for ANSI C header files" >&5 +echo "configure:16305: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -15745,7 +16314,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:15749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -15762,7 +16331,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -15780,7 +16349,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -15801,7 +16370,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -15812,7 +16381,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:15816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:16385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -15836,12 +16405,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:15840: checking for mode_t" >&5 +echo "configure:16409: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -15869,12 +16438,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:15873: checking for off_t" >&5 +echo "configure:16442: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -15902,12 +16471,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:15906: checking for pid_t" >&5 +echo "configure:16475: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -15935,12 +16504,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:15939: checking for size_t" >&5 +echo "configure:16508: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -15968,12 +16537,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:15972: checking for uid_t in sys/types.h" >&5 +echo "configure:16541: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -16011,12 +16580,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking if size_t is unsigned int""... $ac_c" 1>&6 -echo "configure:16015: checking if size_t is unsigned int" >&5 +echo "configure:16584: checking if size_t is unsigned int" >&5 if eval "test \"`echo '$''{'wx_cv_size_t_is_uint'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -16029,7 +16598,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:16033: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:16602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_size_t_is_uint=no else @@ -16052,12 +16621,12 @@ EOF else echo $ac_n "checking if size_t is unsigned long""... $ac_c" 1>&6 -echo "configure:16056: checking if size_t is unsigned long" >&5 +echo "configure:16625: checking if size_t is unsigned long" >&5 if eval "test \"`echo '$''{'wx_cv_size_t_is_ulong'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -16070,7 +16639,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:16074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:16643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_size_t_is_ulong=no else @@ -16104,13 +16673,13 @@ cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking for pw_gecos in struct passwd""... $ac_c" 1>&6 -echo "configure:16108: checking for pw_gecos in struct passwd" >&5 +echo "configure:16677: checking for pw_gecos in struct passwd" >&5 if eval "test \"`echo '$''{'wx_cv_struct_pw_gecos'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -16121,7 +16690,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:16125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:16694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_struct_pw_gecos=yes @@ -16161,12 +16730,12 @@ EOF for ac_func in wcslen do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16165: checking for $ac_func" >&5 +echo "configure:16734: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16217,7 +16786,7 @@ done if test "$WCSLEN_FOUND" = 0; then if test "$TOOLKIT" = "MSW"; then echo $ac_n "checking for wcslen in -lmsvcrt""... $ac_c" 1>&6 -echo "configure:16221: checking for wcslen in -lmsvcrt" >&5 +echo "configure:16790: checking for wcslen in -lmsvcrt" >&5 ac_lib_var=`echo msvcrt'_'wcslen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -16225,7 +16794,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmsvcrt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -16258,7 +16827,7 @@ fi else echo $ac_n "checking for wcslen in -lw""... $ac_c" 1>&6 -echo "configure:16262: checking for wcslen in -lw" >&5 +echo "configure:16831: checking for wcslen in -lw" >&5 ac_lib_var=`echo w'_'wcslen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -16266,7 +16835,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lw $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -16313,12 +16882,12 @@ EOF for ac_func in wcsrtombs do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16317: checking for $ac_func" >&5 +echo "configure:16886: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16381,12 +16950,12 @@ cross_compiling=$ac_cv_prog_cxx_cross for ac_func in vsnprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16385: checking for $ac_func" >&5 +echo "configure:16954: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16441,12 +17010,12 @@ if test "$wxUSE_UNICODE" = yes; then for ac_func in fputwc wprintf vswprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16445: checking for $ac_func" >&5 +echo "configure:17014: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16497,16 +17066,16 @@ fi done echo $ac_n "checking for _vsnwprintf""... $ac_c" 1>&6 -echo "configure:16501: checking for _vsnwprintf" >&5 +echo "configure:17070: checking for _vsnwprintf" >&5 cat > conftest.$ac_ext < int main() { &_vsnwprintf; ; return 0; } EOF -if { (eval echo configure:16510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF @@ -16558,7 +17127,7 @@ fi echo $ac_n "checking for iconv""... $ac_c" 1>&6 -echo "configure:16562: checking for iconv" >&5 +echo "configure:17131: checking for iconv" >&5 if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -16566,7 +17135,7 @@ else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat > conftest.$ac_ext < #include @@ -16576,7 +17145,7 @@ iconv_t cd = iconv_open("",""); iconv_close(cd); ; return 0; } EOF -if { (eval echo configure:16580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_func_iconv=yes else @@ -16588,7 +17157,7 @@ rm -f conftest* am_save_LIBS="$LIBS" LIBS="$LIBS -liconv" cat > conftest.$ac_ext < #include @@ -16598,7 +17167,7 @@ iconv_t cd = iconv_open("",""); iconv_close(cd); ; return 0; } EOF -if { (eval echo configure:16602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_lib_iconv=yes am_cv_func_iconv=yes @@ -16619,12 +17188,12 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6 EOF echo $ac_n "checking if iconv needs const""... $ac_c" 1>&6 -echo "configure:16623: checking if iconv needs const" >&5 +echo "configure:17192: checking if iconv needs const" >&5 if eval "test \"`echo '$''{'wx_cv_func_iconv_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -16643,7 +17212,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:16647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_func_iconv_const="no" else @@ -16688,12 +17257,12 @@ if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes" -a "$wxUSE_UNIX" = "yes"; then for ac_func in sigaction do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16692: checking for $ac_func" >&5 +echo "configure:17261: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16757,13 +17326,13 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking for sa_handler type""... $ac_c" 1>&6 -echo "configure:16761: checking for sa_handler type" >&5 +echo "configure:17330: checking for sa_handler type" >&5 if eval "test \"`echo '$''{'wx_cv_type_sa_handler'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -16775,7 +17344,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:16779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_type_sa_handler=int @@ -16812,12 +17381,12 @@ fi for ac_func in mkstemp mktemp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16816: checking for $ac_func" >&5 +echo "configure:17385: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16866,12 +17435,12 @@ done echo $ac_n "checking for statfs""... $ac_c" 1>&6 -echo "configure:16870: checking for statfs" >&5 +echo "configure:17439: checking for statfs" >&5 if eval "test \"`echo '$''{'wx_cv_func_statfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_func_statfs=yes @@ -16913,34 +17482,31 @@ fi echo "$ac_t""$wx_cv_func_statfs" 1>&6 if test "$wx_cv_func_statfs" = "yes"; then + wx_cv_type_statvfs_t="struct statfs" cat >> confdefs.h <<\EOF #define HAVE_STATFS 1 EOF else echo $ac_n "checking for statvfs""... $ac_c" 1>&6 -echo "configure:16923: checking for statvfs" >&5 +echo "configure:17493: checking for statvfs" >&5 if eval "test \"`echo '$''{'wx_cv_func_statvfs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < + #include + #include int main() { - long l; - struct statvfs fs; - statvfs("/", &fs); - l = fs.f_bsize; - l += fs.f_blocks; - l += fs.f_bavail; + statvfs("/", NULL); ; return 0; } EOF -if { (eval echo configure:16944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17510: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_func_statvfs=yes @@ -16961,25 +17527,126 @@ fi echo "$ac_t""$wx_cv_func_statvfs" 1>&6 if test "$wx_cv_func_statvfs" = "yes"; then - cat >> confdefs.h <<\EOF + + ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + + + echo $ac_n "checking for statvfs argument type""... $ac_c" 1>&6 +echo "configure:17541: checking for statvfs argument type" >&5 +if eval "test \"`echo '$''{'wx_cv_type_statvfs_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < + +int main() { + + long l; + statvfs_t fs; + statvfs("/", &fs); + l = fs.f_bsize; + l += fs.f_blocks; + l += fs.f_bavail; + +; return 0; } +EOF +if { (eval echo configure:17562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + wx_cv_type_statvfs_t=statvfs_t + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + cat > conftest.$ac_ext < + +int main() { + + long l; + struct statvfs fs; + statvfs("/", &fs); + l = fs.f_bsize; + l += fs.f_blocks; + l += fs.f_bavail; + +; return 0; } +EOF +if { (eval echo configure:17589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + wx_cv_type_statvfs_t="struct statvfs" + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + wx_cv_type_statvfs_t="unknown" + + +fi +rm -f conftest* + + +fi +rm -f conftest* + +fi + +echo "$ac_t""$wx_cv_type_statvfs_t" 1>&6 + + ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + + + if test "$wx_cv_type_statvfs_t" != "unknown"; then + cat >> confdefs.h <<\EOF #define HAVE_STATVFS 1 EOF + fi else - echo "configure: warning: wxGetDiskSpace() function won't work without statfs()" 1>&2 + wx_cv_type_statvfs_t="unknown" fi fi +if test "$wx_cv_type_statvfs_t" != "unknown"; then + cat >> confdefs.h <&2 +fi + if test "$wxUSE_SNGLINST_CHECKER" = "yes"; then for ac_func in fcntl flock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16978: checking for $ac_func" >&5 +echo "configure:17645: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17036,12 +17703,12 @@ fi for ac_func in timegm do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17040: checking for $ac_func" >&5 +echo "configure:17707: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17092,12 +17759,12 @@ done for ac_func in putenv setenv do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17096: checking for $ac_func" >&5 +echo "configure:17763: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17167,12 +17834,12 @@ if test "$HAVE_SOME_SLEEP_FUNC" != 1; then for ac_func in nanosleep do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17171: checking for $ac_func" >&5 +echo "configure:17838: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17220,7 +17887,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for nanosleep in -lposix4""... $ac_c" 1>&6 -echo "configure:17224: checking for nanosleep in -lposix4" >&5 +echo "configure:17891: checking for nanosleep in -lposix4" >&5 ac_lib_var=`echo posix4'_'nanosleep | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -17228,7 +17895,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix4 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -17267,12 +17934,12 @@ else for ac_func in usleep do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17271: checking for $ac_func" >&5 +echo "configure:17938: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17338,12 +18005,12 @@ fi for ac_func in uname gethostname do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17342: checking for $ac_func" >&5 +echo "configure:18009: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17403,12 +18070,12 @@ cross_compiling=$ac_cv_prog_cxx_cross for ac_func in strtok_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17407: checking for $ac_func" >&5 +echo "configure:18074: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17471,12 +18138,12 @@ INET_LINK= for ac_func in inet_addr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17475: checking for $ac_func" >&5 +echo "configure:18142: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17524,7 +18191,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inet_addr in -lnsl""... $ac_c" 1>&6 -echo "configure:17528: checking for inet_addr in -lnsl" >&5 +echo "configure:18195: checking for inet_addr in -lnsl" >&5 ac_lib_var=`echo nsl'_'inet_addr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -17532,7 +18199,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -17562,7 +18229,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inet_addr in -lresolv""... $ac_c" 1>&6 -echo "configure:17566: checking for inet_addr in -lresolv" >&5 +echo "configure:18233: checking for inet_addr in -lresolv" >&5 ac_lib_var=`echo resolv'_'inet_addr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -17570,7 +18237,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -17600,7 +18267,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inet_addr in -lsocket""... $ac_c" 1>&6 -echo "configure:17604: checking for inet_addr in -lsocket" >&5 +echo "configure:18271: checking for inet_addr in -lsocket" >&5 ac_lib_var=`echo socket'_'inet_addr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -17608,7 +18275,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -17655,12 +18322,12 @@ done for ac_func in inet_aton do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17659: checking for $ac_func" >&5 +echo "configure:18326: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -17708,7 +18375,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inet_aton in -l$INET_LINK""... $ac_c" 1>&6 -echo "configure:17712: checking for inet_aton in -l$INET_LINK" >&5 +echo "configure:18379: checking for inet_aton in -l$INET_LINK" >&5 ac_lib_var=`echo $INET_LINK'_'inet_aton | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -17716,7 +18383,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$INET_LINK $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -17862,18 +18529,18 @@ if test "$TOOLKIT" != "MSW"; then case $flag in none) echo $ac_n "checking whether pthreads work without any flags""... $ac_c" 1>&6 -echo "configure:17866: checking whether pthreads work without any flags" >&5 +echo "configure:18533: checking whether pthreads work without any flags" >&5 ;; -*) echo $ac_n "checking whether pthreads work with $flag""... $ac_c" 1>&6 -echo "configure:17871: checking whether pthreads work with $flag" >&5 +echo "configure:18538: checking whether pthreads work with $flag" >&5 THREADS_CFLAGS="$flag" ;; *) echo $ac_n "checking for the pthreads library -l$flag""... $ac_c" 1>&6 -echo "configure:17877: checking for the pthreads library -l$flag" >&5 +echo "configure:18544: checking for the pthreads library -l$flag" >&5 THREADS_LINK="-l$flag" ;; esac @@ -17884,14 +18551,14 @@ echo "configure:17877: checking for the pthreads library -l$flag" >&5 CFLAGS="$THREADS_CFLAGS $CFLAGS" cat > conftest.$ac_ext < int main() { pthread_create(0,0,0,0); ; return 0; } EOF -if { (eval echo configure:17895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* THREADS_OK=yes else @@ -17920,10 +18587,14 @@ rm -f conftest* LIBS="$THREADS_LINK $LIBS" echo $ac_n "checking if more special flags are required for pthreads""... $ac_c" 1>&6 -echo "configure:17924: checking if more special flags are required for pthreads" >&5 +echo "configure:18591: checking if more special flags are required for pthreads" >&5 flag=no case "${host}" in - *-aix* | *-freebsd*) + *-aix*) + LDFLAGS="-L/usr/lib/threads $LDFLAGS" + flag="-D_THREAD_SAFE" + ;; + *-freebsd*) flag="-D_THREAD_SAFE" ;; *-hp-hpux* ) @@ -17949,12 +18620,12 @@ echo "configure:17924: checking if more special flags are required for pthreads" for ac_func in thr_setconcurrency do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:17953: checking for $ac_func" >&5 +echo "configure:18624: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -18006,17 +18677,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:18010: checking for $ac_hdr" >&5 +echo "configure:18681: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:18020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:18691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -18044,12 +18715,12 @@ done if test "$ac_cv_header_sched_h" = "yes"; then echo $ac_n "checking for sched_yield""... $ac_c" 1>&6 -echo "configure:18048: checking for sched_yield" >&5 +echo "configure:18719: checking for sched_yield" >&5 if eval "test \"`echo '$''{'ac_cv_func_sched_yield'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sched_yield=yes" else @@ -18094,7 +18765,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sched_yield in -lposix4""... $ac_c" 1>&6 -echo "configure:18098: checking for sched_yield in -lposix4" >&5 +echo "configure:18769: checking for sched_yield in -lposix4" >&5 ac_lib_var=`echo posix4'_'sched_yield | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -18102,7 +18773,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix4 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -18146,12 +18817,12 @@ fi HAVE_PRIOR_FUNCS=0 echo $ac_n "checking for pthread_attr_getschedpolicy""... $ac_c" 1>&6 -echo "configure:18150: checking for pthread_attr_getschedpolicy" >&5 +echo "configure:18821: checking for pthread_attr_getschedpolicy" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getschedpolicy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pthread_attr_getschedpolicy=yes" else @@ -18189,12 +18860,12 @@ fi if eval "test \"`echo '$ac_cv_func_'pthread_attr_getschedpolicy`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for pthread_attr_setschedparam""... $ac_c" 1>&6 -echo "configure:18193: checking for pthread_attr_setschedparam" >&5 +echo "configure:18864: checking for pthread_attr_setschedparam" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_setschedparam'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pthread_attr_setschedparam=yes" else @@ -18232,12 +18903,12 @@ fi if eval "test \"`echo '$ac_cv_func_'pthread_attr_setschedparam`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for sched_get_priority_max""... $ac_c" 1>&6 -echo "configure:18236: checking for sched_get_priority_max" >&5 +echo "configure:18907: checking for sched_get_priority_max" >&5 if eval "test \"`echo '$''{'ac_cv_func_sched_get_priority_max'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sched_get_priority_max=yes" else @@ -18280,7 +18951,7 @@ if eval "test \"`echo '$ac_cv_func_'sched_get_priority_max`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sched_get_priority_max in -lposix4""... $ac_c" 1>&6 -echo "configure:18284: checking for sched_get_priority_max in -lposix4" >&5 +echo "configure:18955: checking for sched_get_priority_max in -lposix4" >&5 ac_lib_var=`echo posix4'_'sched_get_priority_max | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -18288,7 +18959,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix4 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -18344,12 +19015,12 @@ EOF fi echo $ac_n "checking for pthread_cancel""... $ac_c" 1>&6 -echo "configure:18348: checking for pthread_cancel" >&5 +echo "configure:19019: checking for pthread_cancel" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_cancel'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pthread_cancel=yes" else @@ -18397,13 +19068,13 @@ fi echo $ac_n "checking for pthread_cleanup_push/pop""... $ac_c" 1>&6 -echo "configure:18401: checking for pthread_cleanup_push/pop" >&5 +echo "configure:19072: checking for pthread_cleanup_push/pop" >&5 if eval "test \"`echo '$''{'wx_cv_func_pthread_cleanup_push'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -18413,7 +19084,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:18417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_func_pthread_cleanup_push=yes @@ -18441,13 +19112,13 @@ EOF echo $ac_n "checking for pthread_mutexattr_t""... $ac_c" 1>&6 -echo "configure:18445: checking for pthread_mutexattr_t" >&5 +echo "configure:19116: checking for pthread_mutexattr_t" >&5 if eval "test \"`echo '$''{'wx_cv_type_pthread_mutexattr_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -18457,7 +19128,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:18461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_type_pthread_mutexattr_t=yes @@ -18484,13 +19155,13 @@ EOF else echo $ac_n "checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER""... $ac_c" 1>&6 -echo "configure:18488: checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER" >&5 +echo "configure:19159: checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER" >&5 if eval "test \"`echo '$''{'wx_cv_type_pthread_rec_mutex_init'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -18499,7 +19170,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:18503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19174: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_type_pthread_rec_mutex_init=yes @@ -18534,7 +19205,7 @@ else case "${host}" in *-*-mingw32* ) echo $ac_n "checking if compiler supports -mthreads""... $ac_c" 1>&6 -echo "configure:18538: checking if compiler supports -mthreads" >&5 +echo "configure:19209: checking if compiler supports -mthreads" >&5 if eval "test \"`echo '$''{'wx_cv_cflags_mthread'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18542,14 +19213,14 @@ else CFLAGS_OLD="$CFLAGS" CFLAGS="$CFLAGS -mthreads" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_cflags_mthread=yes else @@ -18588,7 +19259,7 @@ EOF else if test "$ac_cv_func_strtok_r" = "yes"; then echo $ac_n "checking if -D_REENTRANT is needed""... $ac_c" 1>&6 -echo "configure:18592: checking if -D_REENTRANT is needed" >&5 +echo "configure:19263: checking if -D_REENTRANT is needed" >&5 if test "$NEEDS_D_REENTRANT_FOR_R_FUNCS" = 1; then TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D_REENTRANT" echo "$ac_t""yes" 1>&6 @@ -18688,10 +19359,13 @@ if test "$GCC" = "yes" ; then CODE_GEN_FLAGS="$CODE_GEN_FLAGS -fno-pcc-struct-return" fi - case "${host}" in + case "${host}" in powerpc*-*-aix* ) CODE_GEN_FLAGS="$CODE_GEN_FLAGS -mminimal-toc" ;; + *-hppa* ) + CODE_GEN_FLAGS="$CODE_GEN_FLAGS -ffunction-sections" + ;; esac fi @@ -18973,12 +19647,12 @@ if test "$wxUSE_DATETIME" = "yes"; then for ac_func in strptime do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:18977: checking for $ac_func" >&5 +echo "configure:19651: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -19027,13 +19701,13 @@ done echo $ac_n "checking for timezone variable in ""... $ac_c" 1>&6 -echo "configure:19031: checking for timezone variable in " >&5 +echo "configure:19705: checking for timezone variable in " >&5 if eval "test \"`echo '$''{'wx_cv_var_timezone'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -19045,7 +19719,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_var_timezone=timezone @@ -19056,7 +19730,7 @@ else rm -rf conftest* cat > conftest.$ac_ext < @@ -19068,7 +19742,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_var_timezone=_timezone @@ -19079,7 +19753,7 @@ else rm -rf conftest* cat > conftest.$ac_ext < @@ -19091,7 +19765,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19769: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_var_timezone=__timezone @@ -19132,12 +19806,12 @@ EOF for ac_func in localtime do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:19136: checking for $ac_func" >&5 +echo "configure:19810: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -19187,13 +19861,13 @@ done if test "$ac_cv_func_localtime" = "yes"; then echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6 -echo "configure:19191: checking for tm_gmtoff in struct tm" >&5 +echo "configure:19865: checking for tm_gmtoff in struct tm" >&5 if eval "test \"`echo '$''{'wx_cv_struct_tm_has_gmtoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -19205,7 +19879,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_struct_tm_has_gmtoff=yes @@ -19234,12 +19908,12 @@ EOF for ac_func in gettimeofday ftime do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:19238: checking for $ac_func" >&5 +echo "configure:19912: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -19289,7 +19963,7 @@ done if test "$ac_cv_func_gettimeofday" = "yes"; then echo $ac_n "checking whether gettimeofday takes two arguments""... $ac_c" 1>&6 -echo "configure:19293: checking whether gettimeofday takes two arguments" >&5 +echo "configure:19967: checking whether gettimeofday takes two arguments" >&5 if eval "test \"`echo '$''{'wx_cv_func_gettimeofday_has_2_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -19304,7 +19978,7 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < @@ -19317,7 +19991,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:19995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_func_gettimeofday_has_2_args=yes else @@ -19325,7 +19999,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -19338,7 +20012,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_func_gettimeofday_has_2_args=no else @@ -19393,12 +20067,12 @@ fi if test "$wxUSE_SOCKETS" = "yes"; then if test "$TOOLKIT" != "MSW"; then echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:19397: checking for socket" >&5 +echo "configure:20071: checking for socket" >&5 if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -19439,7 +20113,7 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:19443: checking for socket in -lsocket" >&5 +echo "configure:20117: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19447,7 +20121,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -19494,7 +20168,7 @@ fi if test "$wxUSE_SOCKETS" = "yes" ; then if test "$TOOLKIT" != "MSW"; then echo $ac_n "checking what is the type of the third argument of getsockname""... $ac_c" 1>&6 -echo "configure:19498: checking what is the type of the third argument of getsockname" >&5 +echo "configure:20172: checking what is the type of the third argument of getsockname" >&5 if eval "test \"`echo '$''{'wx_cv_type_getsockname3'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -19509,7 +20183,7 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < @@ -19522,7 +20196,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_type_getsockname3=socklen_t else @@ -19530,7 +20204,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -19543,7 +20217,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19547: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_type_getsockname3=size_t else @@ -19551,7 +20225,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < @@ -19564,7 +20238,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:19568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* wx_cv_type_getsockname3=int else @@ -19636,17 +20310,17 @@ if test "$wxUSE_GUI" = "yes"; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:19640: checking for $ac_hdr" >&5 +echo "configure:20314: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:19650: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:20324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -19700,12 +20374,12 @@ if test "$TOOLKIT" != "MSW"; then for ac_func in dlopen do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:19704: checking for $ac_func" >&5 +echo "configure:20378: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -19756,7 +20430,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:19760: checking for dlopen in -ldl" >&5 +echo "configure:20434: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19764,7 +20438,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -19804,12 +20478,12 @@ else for ac_func in shl_load do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:19808: checking for $ac_func" >&5 +echo "configure:20482: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -19860,7 +20534,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld in -lshl_load""... $ac_c" 1>&6 -echo "configure:19864: checking for dld in -lshl_load" >&5 +echo "configure:20538: checking for dld in -lshl_load" >&5 ac_lib_var=`echo shl_load'_'dld | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19868,7 +20542,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lshl_load $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -19918,12 +20592,12 @@ done for ac_func in dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:19922: checking for $ac_func" >&5 +echo "configure:20596: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -19971,7 +20645,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlerror in -ldl""... $ac_c" 1>&6 -echo "configure:19975: checking for dlerror in -ldl" >&5 +echo "configure:20649: checking for dlerror in -ldl" >&5 ac_lib_var=`echo dl'_'dlerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19979,7 +20653,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -20065,7 +20739,7 @@ EOF if test "$wxUSE_MSW" = 1 -a "$wxUSE_UNICODE_MSLU" = "yes"; then echo $ac_n "checking for main in -lunicows""... $ac_c" 1>&6 -echo "configure:20069: checking for main in -lunicows" >&5 +echo "configure:20743: checking for main in -lunicows" >&5 ac_lib_var=`echo unicows'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -20073,14 +20747,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lunicows $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -20228,17 +20902,21 @@ if test "$wxUSE_PROLOGIO" = "yes" ; then #define wxUSE_PROLOGIO 1 EOF + ALL_OBJECTS="$ALL_OBJECTS parser.o" fi if test "$wxUSE_RESOURCES" = "yes" ; then if test "$wxUSE_NANOX" = "yes"; then echo "configure: warning: Cannot use resource database functions in NanoX" 1>&2 - else - cat >> confdefs.h <<\EOF + else + cat >> confdefs.h <<\EOF #define wxUSE_RESOURCES 1 EOF - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + fi + if test "$wxUSE_PROLOGIO" != "yes" ; then + ALL_OBJECTS="$ALL_OBJECTS parser.o" fi fi @@ -20258,17 +20936,17 @@ if test "$wxUSE_MSW" = 1 -a \( "$wxUSE_DATAOBJ" = "yes" \ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:20262: checking for $ac_hdr" >&5 +echo "configure:20940: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:20272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:20950: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -20307,9 +20985,9 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking if g++ requires -fvtable-thunks""... $ac_c" 1>&6 -echo "configure:20311: checking if g++ requires -fvtable-thunks" >&5 +echo "configure:20989: checking if g++ requires -fvtable-thunks" >&5 cat > conftest.$ac_ext < #include @@ -20317,7 +20995,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:20321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""no" 1>&6 else @@ -20378,17 +21056,17 @@ if test "$wxUSE_WINE" = 1 -a \( "$wxUSE_DATAOBJ" = "yes" \ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:20382: checking for $ac_hdr" >&5 +echo "configure:21060: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:20392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:21070: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -20427,9 +21105,9 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking if g++ requires -fvtable-thunks""... $ac_c" 1>&6 -echo "configure:20431: checking if g++ requires -fvtable-thunks" >&5 +echo "configure:21109: checking if g++ requires -fvtable-thunks" >&5 cat > conftest.$ac_ext < #include @@ -20437,7 +21115,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:20441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""no" 1>&6 else @@ -21281,7 +21959,249 @@ if test "$wxUSE_MAC" = 1 ; then fi -LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK -lm $LIBS" +LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK $LIBS" + +have_cos=0 +have_floor=0 +for ac_func in cos +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:21970: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:21998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in floor +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:22025: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:22053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +echo $ac_n "checking if floating point functions link without -lm""... $ac_c" 1>&6 +echo "configure:22078: checking if floating point functions link without -lm" >&5 +if test "$have_cos" = 1 -a "$have_floor" = 1; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 + LIBS="$LIBS -lm" + # use different functions to avoid configure caching + have_sin=0 + have_ceil=0 + for ac_func in sin +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:22090: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:22118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + for ac_func in ceil +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:22145: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:22173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + echo $ac_n "checking if floating point functions link with -lm""... $ac_c" 1>&6 +echo "configure:22198: checking if floating point functions link with -lm" >&5 + if test "$have_sin" = 1 -a "$have_ceil" = 1; then + echo "$ac_t""yes" 1>&6 + else + echo "$ac_t""no" 1>&6 + # not sure we should warn the user, crash, etc. + fi +fi if test "$wxUSE_GUI" = "yes"; then @@ -21415,6 +22335,11 @@ SAMPLES_SUBDIRS="`echo $SAMPLES_SUBDIRS | tr -s ' ' | tr ' ' '\n' | sort | uniq + + + + + @@ -21422,7 +22347,7 @@ SAMPLES_SUBDIRS="`echo $SAMPLES_SUBDIRS | tr -s ' ' | tr ' ' '\n' | sort | uniq echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:21426: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:22351: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -21462,9 +22387,16 @@ wx_cv_program_ext=$PROGRAM_EXT wx_cv_target_library=$WX_TARGET_LIBRARY wx_cv_target_library_gl=$WX_TARGET_LIBRARY_GL wx_cv_target_libtype=$WX_TARGET_LIBRARY_TYPE +wx_cv_library_basename=${WX_LIBRARY_BASENAME} +wx_cv_release=${WX_RELEASE} +wx_cv_current=${WX_CURRENT} +wx_cv_revision=${WX_REVISION} +wx_cv_age=${WX_AGE} export wx_cv_path_samplesubdirs wx_cv_if_gnu_make \ wx_cv_path_ifs wx_cv_program_ext \ - wx_cv_target_library wx_cv_target_library_gl wx_cv_target_libtype + wx_cv_target_library wx_cv_target_library_gl wx_cv_target_libtype \ + wx_cv_library_basename wx_cv_release wx_cv_current wx_cv_revision wx_cv_age + subdirs="demos samples utils contrib" @@ -21572,6 +22504,7 @@ ac_given_INSTALL="$INSTALL" trap 'rm -fr `echo " wx-config + version-script src/make.env src/makeprog.env src/makelib.env @@ -21648,6 +22581,10 @@ s%@X_CFLAGS@%$X_CFLAGS%g s%@X_PRE_LIBS@%$X_PRE_LIBS%g s%@X_LIBS@%$X_LIBS%g s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g +s%@PANGOX_CFLAGS@%$PANGOX_CFLAGS%g +s%@PANGOX_LIBS@%$PANGOX_LIBS%g +s%@PANGOXFT_CFLAGS@%$PANGOXFT_CFLAGS%g +s%@PANGOXFT_LIBS@%$PANGOXFT_LIBS%g s%@AIX_CXX_LD@%$AIX_CXX_LD%g s%@RESCOMP@%$RESCOMP%g s%@DEREZ@%$DEREZ%g @@ -21659,6 +22596,7 @@ s%@WX_MINOR_VERSION_NUMBER@%$WX_MINOR_VERSION_NUMBER%g s%@WX_RELEASE_NUMBER@%$WX_RELEASE_NUMBER%g s%@WX_LIBRARY_NAME_STATIC@%$WX_LIBRARY_NAME_STATIC%g s%@WX_LIBRARY_NAME_SHARED@%$WX_LIBRARY_NAME_SHARED%g +s%@WX_LIBRARY_BASENAME@%$WX_LIBRARY_BASENAME%g s%@WX_LIBRARY_IMPORTLIB@%$WX_LIBRARY_IMPORTLIB%g s%@WX_TARGET_LIBRARY@%$WX_TARGET_LIBRARY%g s%@WX_LIBRARY_LINK1@%$WX_LIBRARY_LINK1%g @@ -21683,6 +22621,7 @@ s%@STATIC_FLAG@%$STATIC_FLAG%g s%@WXDEBUG_DEFINE@%$WXDEBUG_DEFINE%g s%@USE_GUI@%$USE_GUI%g s%@AFMINSTALL@%$AFMINSTALL%g +s%@WIN32INSTALL@%$WIN32INSTALL%g s%@TOOLKIT@%$TOOLKIT%g s%@TOOLKIT_DIR@%$TOOLKIT_DIR%g s%@TOOLKIT_VPATH@%$TOOLKIT_VPATH%g @@ -21705,10 +22644,12 @@ s%@PORT_FILES@%$PORT_FILES%g s%@DISTDIR@%$DISTDIR%g s%@SAMPLES_SUBDIRS@%$SAMPLES_SUBDIRS%g s%@LDFLAGS_GL@%$LDFLAGS_GL%g +s%@LDFLAGS_VERSIONING@%$LDFLAGS_VERSIONING%g s%@LDFLAGS_EXE@%$LDFLAGS_EXE%g s%@OPENGL_LIBS@%$OPENGL_LIBS%g s%@DMALLOC_LIBS@%$DMALLOC_LIBS%g s%@EXTRADEFS@%$EXTRADEFS%g +s%@WX_VERSION_TAG@%$WX_VERSION_TAG%g s%@RESFLAGS@%$RESFLAGS%g s%@RESPROGRAMOBJ@%$RESPROGRAMOBJ%g s%@WX_RESOURCES_MACOSX_ASCII@%$WX_RESOURCES_MACOSX_ASCII%g @@ -21717,6 +22658,7 @@ s%@MACOSX_BUNDLE@%$MACOSX_BUNDLE%g s%@LIBWXMACRES@%$LIBWXMACRES%g s%@LIBWXMACRESCOMP@%$LIBWXMACRESCOMP%g s%@LIBWXMACRESWXCONFIG@%$LIBWXMACRESWXCONFIG%g +s%@GCC@%$GCC%g s%@DLLTOOL@%$DLLTOOL%g s%@AS@%$AS%g s%@NM@%$NM%g @@ -21767,6 +22709,7 @@ EOF cat >> $CONFIG_STATUS < reports that the shared - dnl libraries under AIX have the same suffix as the normal ones + dnl quoting from http://www-1.ibm.com/servers/esdd/articles/gnu.html: + dnl + dnl Both archive libraries and shared libraries on AIX have an .a + dnl extension. This will explain why you can't link with an .so and + dnl why it works with the name changed to .a. SO_SUFFIX=a AC_DEFINE(__AIX__) AC_DEFINE(__SYSV__) @@ -552,8 +555,8 @@ else DEFAULT_wxUSE_DOC_VIEW_ARCHITECTURE=yes DEFAULT_wxUSE_PRINTING_ARCHITECTURE=yes - DEFAULT_wxUSE_PROLOGIO=yes - DEFAULT_wxUSE_RESOURCES=yes + DEFAULT_wxUSE_PROLOGIO=no + DEFAULT_wxUSE_RESOURCES=no DEFAULT_wxUSE_CONSTRAINTS=yes DEFAULT_wxUSE_IPC=yes DEFAULT_wxUSE_HELP=yes @@ -1127,27 +1130,6 @@ else AC_MSG_RESULT(base ($host_alias hosted) only) fi -dnl --------------------------------------------------------------------------- -dnl When we are using gcc on OS/2, we want to be either using resources (PM) -dnl or a more complete POSIX emulation for Motif/GTK+/X11 -dnl --------------------------------------------------------------------------- -dnl (OS/2-only piece) -case "${host}" in - *-pc-os2_emx | *-pc-os2-emx ) - dnl Explicitly link -lstdcpp, since we are using "gcc" not "g++"/"c++". - LIBS="$LIBS -lstdcpp" - if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then - dnl More complete Unix emulation for unix-like ports - dnl by linking in POSIX/2's cExt (if available). - AC_CHECK_LIB(cExt, drand48, LIBS="$LIBS -lcExt") - else - dnl Include resources for the "native" port (wxPM). - RESPROGRAMOBJ="\${top_srcdir}/include/wx/os2/wx.res" - fi - ;; -esac -dnl (end of OS/2-only piece) - dnl --------------------------------------------------------------------------- dnl When we are using Cygwin with Motif/GTK+, we want it to appear like dnl 'just' a POSIX platform, so the Win32 API must not be available @@ -1223,7 +1205,7 @@ dnl defines GCC empty if not using gcc dnl defines CFLAGS dnl dnl this magic incantation is needed to prevent AC_PROG_CC from setting the -dnl default CFLAGS (something like "-g -O2") - we don't need this as add +dnl default CFLAGS (something like "-g -O2") -- we don't need this as we add dnl -g and -O flags ourselves below CFLAGS=${CFLAGS:=} AC_PROG_CC @@ -1259,10 +1241,13 @@ dnl install checks dnl defines INSTALL with the appropriate command AC_PROG_INSTALL -dnl make install path absolute (if not already); will fail with MSDOS paths +dnl make install path absolute (if not already); +dnl will fail with (some) MSDOS paths case ${INSTALL} in /* ) # Absolute ;; + ?:* ) # Drive letter, considered as absolute. + ;; *) INSTALL=`pwd`/${INSTALL} ;; esac @@ -1357,6 +1342,27 @@ AC_PROG_LEX dnl needed for making link to setup.h AC_PROG_LN_S +dnl --------------------------------------------------------------------------- +dnl When we are using gcc on OS/2, we want to be either using resources (PM) +dnl or a more complete POSIX emulation for Motif/GTK+/X11 +dnl --------------------------------------------------------------------------- +dnl (OS/2-only piece) +case "${host}" in + *-pc-os2_emx | *-pc-os2-emx ) + dnl Explicitly link -lstdcpp, since we are using "gcc" not "g++"/"c++". + LIBS="$LIBS -lstdcpp" + if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then + dnl More complete Unix emulation for unix-like ports + dnl by linking in POSIX/2's cExt (if available). + AC_CHECK_LIB(cExt, drand48, LIBS="$LIBS -lcExt") + else + dnl Include resources for the "native" port (wxPM). + RESPROGRAMOBJ="\${top_srcdir}/include/wx/os2/wx.res" + fi + ;; +esac +dnl (end of OS/2-only piece) + dnl ------------------------------------------------------------------------ dnl Check for headers dnl ------------------------------------------------------------------------ @@ -1394,6 +1400,15 @@ fi dnl defines HAVE_LANGINFO_H (GNU libc locale parameters) AC_CHECK_HEADERS(langinfo.h) +case "${host}" in + *-pc-os2_emx | *-pc-os2-emx ) + dnl Explicitly link -lintl if langinfo.h is available. + if test $ac_cv_header_langinfo_h = "yes"; then + LIBS="$LIBS -lintl" + fi + ;; +esac + if test "$wxUSE_GUI" = "yes"; then if test "$wxUSE_UNIX" = "yes"; then dnl defines HAVE_X11_XKBLIB_H @@ -1441,6 +1456,10 @@ AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t, [ AC_TRY_RUN( [ + /* DJGPP only has fake wchar_t: */ + #ifdef __DJGPP__ + # error "fake wchar_t" + #endif #ifdef HAVE_WCHAR_H # ifdef __CYGWIN__ # include @@ -1461,7 +1480,16 @@ AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t, ], wx_cv_sizeof_wchar_t=`cat conftestval`, wx_cv_sizeof_wchar_t=0, - wx_cv_sizeof_wchar_t=4 + [ + case "${host}" in + *-pc-msdosdjgpp ) + wx_cv_sizeof_wchar_t=0 + ;; + * ) + wx_cv_sizeof_wchar_t=4 + ;; + esac + ] ) ]) @@ -1501,13 +1529,9 @@ dnl Define search path for includes and libraries: all headers and libs will be dnl looked for in all directories of this path dnl --------------------------------------------------------------------------- -dnl notice that /usr/include should not be in this list, otherwise it breaks -dnl compilation on Solaris/gcc because standard headers are included instead -dnl of the gcc ones. (recorrection.. sadly much depends on this since it was -dnl first created and then 'corrected'.. removing /usr/include means system -dnl GL and Xpm libs will dnl not be found on linux and probably other platforms -dnl now. We need to correct that first before removing /usr/include again. -dnl see the various (ab)uses of WX_PATH_FIND_LIBRARIES below ) +dnl Notice that /usr/include should *not* be in this list, otherwise it breaks +dnl compilation on Solaris/AIX/... with gcc because standard (non ANSI C) +dnl headers are included instead of the "fixed" (ANSI-fied) gcc ones. dnl dnl Also try to put all directories which may contain X11R6 before those which dnl may contain X11R5/4 - we want to use R6 on machines which have both! @@ -1574,8 +1598,7 @@ SEARCH_INCLUDE="\ /usr/local/x11r5/include \ /usr/lpp/Xamples/include \ \ - /usr/openwin/share/include \ - /usr/include" + /usr/openwin/share/include" SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` " @@ -1686,13 +1709,61 @@ if test "$wxUSE_ZLIB" != "no" ; then AC_DEFINE(wxUSE_ZLIB) if test "$wxUSE_ZLIB" = "sys" -o "$wxUSE_ZLIB" = "yes" ; then - AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, deflate, ZLIB_LINK=" -lz")) + dnl don't test for zlib under Mac -- its verson there is 1.1.3 but we + dnl should still use it because hopefully (can someone confirm this?) + dnl Apple did fix the security problem in it and not using the system + dnl library results in a whole bunch of warnings when linking with + dnl Carbon framework + if test "$USE_DARWIN" = 1; then + system_zlib_h_ok="yes" + else + dnl we have troubles with ancient zlib versions (e.g. 1.0.4 is + dnl known to not work) and although I don't know which is + dnl the minimal required version it's safer to test for 1.1.4 as + dnl it fixes a security problem in 1.1.3 -- and hopefully nobody + dnl has anything more ancient (1.1.3 was released in July 1998) + dnl anyhow + AC_CACHE_CHECK([for zlib.h >= 1.1.4], ac_cv_header_zlib_h, + AC_TRY_RUN( + [ + dnl zlib.h defines ZLIB_VERSION="x.y.z" + #include + #include + + dnl don't use the brackets as quotes, we need them + changequote(,) + int main() + { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%s", + ZLIB_VERSION[0] == '1' && + (ZLIB_VERSION[2] > '1' || + (ZLIB_VERSION[2] == '1' && + ZLIB_VERSION[4] >= '4')) ? "yes" : "no"); + exit(0); + } + changequote([,]) + ], + ac_cv_header_zlib_h=`cat conftestval`, + ac_cv_header_zlib_h=no, + dnl cross-compiling: test if we have any zlib.h + AC_CHECK_HEADER(zlib.h) + ) + ) + + system_zlib_h_ok=$ac_cv_header_zlib_h + fi + + if test "$system_zlib_h_ok" = "yes"; then + AC_CHECK_LIB(z, deflate, ZLIB_LINK=" -lz") + fi if test "x$ZLIB_LINK" = "x" ; then if test "$wxUSE_ZLIB" = "sys" ; then - AC_MSG_ERROR([system zlib compression library not found! Use --with-zlib=builtin to use built-in version]) + AC_MSG_ERROR([zlib library not found or too old! Use --with-zlib=builtin to use built-in version]) else - AC_MSG_WARN([system zlib compression library not found, will use built-in instead]) + AC_MSG_WARN([zlib library not found or too old, will use built-in instead]) wxUSE_ZLIB=builtin fi else @@ -1731,23 +1802,45 @@ if test "$wxUSE_LIBPNG" != "no" ; then if test "$wxUSE_MGL" != 1 ; then dnl Don't check for libpng when building wxMGL, libmgl contains it if test "$wxUSE_LIBPNG" = "sys" -o "$wxUSE_LIBPNG" = "yes" ; then - AC_CHECK_HEADER(png.h, - AC_CHECK_LIB(png, png_check_sig, - PNG_LINK=" -lpng", - , - [-lz -lm]) - ) + dnl libpng version 0.9 is known to not work, if an even newer + dnl version is required, just bump it up in the test below + AC_CACHE_CHECK([for png.h > 0.90], ac_cv_header_png_h, + AC_TRY_RUN( + [ + dnl png.h defines PNG_LIBPNG_VER=number + #include + #include + + int main() + { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%s", + PNG_LIBPNG_VER > 90 ? "yes" : "no"); + exit(0); + } + ], + ac_cv_header_png_h=`cat conftestval`, + ac_cv_header_png_h=no, + dnl cross-compiling: test if we have any png.h + AC_CHECK_HEADER(png.h) + ) + ) + + if test "$ac_cv_header_png_h" = "yes"; then + AC_CHECK_LIB(png, png_check_sig, PNG_LINK=" -lpng", , [-lz -lm]) + fi if test "x$PNG_LINK" = "x" ; then if test "$wxUSE_LIBPNG" = "sys" ; then - AC_MSG_ERROR([system png library not found! Use --with-libpng=builtin to use built-in version]) + AC_MSG_ERROR([system png library not found or too old! Use --with-libpng=builtin to use built-in version]) else - AC_MSG_WARN([system png library not found, will use built-in instead]) + AC_MSG_WARN([system png library not found or too old, will use built-in instead]) wxUSE_LIBPNG=builtin fi else dnl we are using the system library - wxUSE_LIBPNG=yes + wxUSE_LIBPNG=sys fi fi fi @@ -1824,15 +1917,24 @@ dnl ------------------------------------------------------------------------ TIFF_INCLUDE= TIFF_LINK= +TIFF_PREREQ_LINKS=-lm if test "$wxUSE_LIBTIFF" != "no" ; then AC_DEFINE(wxUSE_LIBTIFF) if test "$wxUSE_LIBTIFF" = "sys" -o "$wxUSE_LIBTIFF" = "yes" ; then + dnl libtiff may depend on libjpeg and libz so use them in the test + dnl below or it would fail + if test "$wxUSE_LIBJPEG" = "sys"; then + TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $JPEG_LINK" + fi + if test "$wxUSE_ZLIB" = "sys"; then + TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $ZLIB_LINK" + fi AC_CHECK_HEADER(tiffio.h, AC_CHECK_LIB(tiff, TIFFError, TIFF_LINK=" -ltiff", , - -lm) + $TIFF_PREREQ_LINKS) ) if test "x$TIFF_LINK" = "x" ; then @@ -1858,6 +1960,7 @@ dnl search for toolkit (widget sets) dnl ---------------------------------------------------------------- AFMINSTALL= +WIN32INSTALL= TOOLKIT= TOOLKIT_INCLUDE= @@ -1913,6 +2016,9 @@ if test "$USE_WIN32" = 1 ; then RESFLAGS="--include-dir \$(top_srcdir)/include --include-dir \$(top_srcdir)/\$(program_dir) --define __WIN32__ --define __WIN95__ --define __GNUWIN32__" RESPROGRAMOBJ="\$(PROGRAM)_resources.o" + + dnl install Win32-specific files in "make install" + WIN32INSTALL=win32install fi if test "$USE_DARWIN" = 1; then @@ -1965,17 +2071,17 @@ if test "$wxUSE_GUI" = "yes"; then GTK_MODULES=gthread fi + dnl note that if we fail to find GTK2 we abort and don't fall + dnl back to GTK1.x wx_cv_lib_gtk= if test "x$wxUSE_GTK2" = "xyes"; then AM_PATH_GTK_2_0(2.0.0, wx_cv_lib_gtk=2.0, , $GTK_MODULES) - fi - - if test -z "$wx_cv_lib_gtk"; then + else AM_PATH_GTK(1.2.7, wx_cv_lib_gtk=1.2.7, , $GTK_MODULES) - fi - if test -z "$wx_cv_lib_gtk"; then - AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3, , $GTK_MODULES) + if test -z "$wx_cv_lib_gtk"; then + AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3, , $GTK_MODULES) + fi fi if test -z "$wx_cv_lib_gtk"; then @@ -1998,6 +2104,7 @@ if test "$wxUSE_GUI" = "yes"; then case "$wx_cv_lib_gtk" in 2.0) WXGTK20=1 + TOOLKIT_VERSION=2 ;; 1.2.7) WXGTK127=1 WXGTK12=1 @@ -2026,6 +2133,17 @@ equivalent variable and GTK+ is version 1.2.3 or above. ] ) fi + else + if test "$wxUSE_UNICODE" = "yes"; then + AC_MSG_WARN([Unicode configuration not supported with GTK+ 1.x]) + wxUSE_UNICODE=no + fi + fi + + dnl we need poll() in src/gtk/app.cpp (we know that Darwin doesn't + dnl have it but we do the check for the others) + if test "$USE_DARWIN" != 1; then + AC_CHECK_FUNCS(poll) fi TOOLKIT_INCLUDE="$wx_cv_cflags_gtk" @@ -2048,36 +2166,52 @@ equivalent variable and GTK+ is version 1.2.3 or above. AC_MSG_RESULT($MGL_ROOT) fi + AC_MSG_CHECKING(for libmgl location) dnl Find MGL library that we want dnl FIXME_MGL - test for MGL variants for freebsd etc. case "${host}" in *-*-linux* ) - mgl_os=linux/gcc/glibc + if test "x$wxUSE_SHARED" = xyes ; then + mgl_os_candidates="linux/gcc/glibc.so linux/gcc/glibc" + else + mgl_os_candidates="linux/gcc/glibc linux/gcc/glibc.so" + fi ;; *-pc-msdosdjgpp ) - mgl_os=dos32/dj2 + mgl_os_candidates="dos32/dj2" ;; *) AC_MSG_ERROR(This system type ${host} is not yet supported by wxMGL.) esac mgl_lib_type="" + mgl_os="" - if test "$wxUSE_DEBUG_FLAG" = yes ; then - if test -f $MGL_ROOT/lib/debug/$mgl_os/libmgl.a -o \ - -f $MGL_ROOT/lib/debug/$mgl_os/libmgl.so; then - mgl_lib_type=debug + for mgl_os_i in $mgl_os_candidates ; do + if test "x$mgl_os" = x ; then + if test "$wxUSE_DEBUG_FLAG" = yes ; then + if test -f $MGL_ROOT/lib/debug/$mgl_os_i/libmgl.a -o \ + -f $MGL_ROOT/lib/debug/$mgl_os_i/libmgl.so; then + mgl_lib_type=debug + mgl_os=$mgl_os_i + fi + fi + if test "x$mgl_lib_type" = x ; then + if test -f $MGL_ROOT/lib/release/$mgl_os_i/libmgl.a -o \ + -f $MGL_ROOT/lib/release/$mgl_os_i/libmgl.so; then + mgl_lib_type=release + mgl_os=$mgl_os_i + fi + fi fi - fi - if test "x$mgl_lib_type" = x ; then - if test -f $MGL_ROOT/lib/release/$mgl_os/libmgl.a -o \ - -f $MGL_ROOT/lib/release/$mgl_os/libmgl.so; then - mgl_lib_type=release - else - AC_MSG_ERROR([Cannot find MGL libraries, make sure they are compiled.]) - fi - fi + done + if test "x$mgl_os" = x ; then + AC_MSG_RESULT(not found) + AC_MSG_ERROR([Cannot find MGL libraries, make sure they are compiled.]) + fi + AC_MSG_RESULT("$MGL_ROOT/lib/$mgl_lib_type/$mgl_os") + wxUSE_UNIVERSAL="yes" TOOLKIT_INCLUDE="-I$MGL_ROOT/include" @@ -2171,6 +2305,37 @@ equivalent variable and GTK+ is version 1.2.3 or above. ) fi + if test "$wxUSE_UNICODE" = "yes"; then + PKG_CHECK_MODULES(PANGOX, pangox, + [ + CXXFLAGS="$CXXFLAGS $PANGOX_CFLAGS" + LIBS="$LIBS $PANGOX_LIBS" + ], + [ + AC_MSG_ERROR([pangox library not found, library cannot be compiled in Unicode mode]) + ] + ) + PKG_CHECK_MODULES(PANGOFT2, pangoft2, + [ + CXXFLAGS="$CXXFLAGS $PANGOFT2_CFLAGS" + LIBS="$LIBS $PANGOFT2_LIBS" + ], + [ + AC_MSG_WARN([pangoft2 library not found, library will be compiled without printing support]) + wxUSE_PRINTING_ARCHITECTURE="no" + ] + ) + PKG_CHECK_MODULES(PANGOXFT, pangoxft, + [ + CXXFLAGS="$CXXFLAGS $PANGOXFT_CFLAGS" + LIBS="$LIBS $PANGOXFT_LIBS" + ], + [ + AC_MSG_WARN([pangoxft library not found, library will be compiled without anti-aliasing support]) + ] + ) + fi + wxUSE_UNIVERSAL="yes" if test "$wxUSE_NANOX" = "yes"; then @@ -2233,8 +2398,10 @@ equivalent variable and GTK+ is version 1.2.3 or above. AC_MSG_ERROR(X11 not found, please use --x-includes and/or --x-libraries options) fi - GUI_TK_LIBRARY="$X_LIBS" - TOOLKIT_INCLUDE="$X_CFLAGS" + dnl for some reason AC_PATH_XTRA seems to add -INONE and -LNONE to + dnl X_LIBS and X_CFLAGS respectively -- what for?? + GUI_TK_LIBRARY=`echo $X_LIBS | sed 's/ -LNONE//'` + TOOLKIT_INCLUDE=`echo $X_CFLAGS | sed 's/ -INONE//'` AFMINSTALL=afminstall COMPILED_X_PROGRAM=0 @@ -2401,6 +2568,11 @@ equivalent variable and GTK+ is version 1.2.3 or above. if test "$wxUSE_PM" = 1; then TOOLKIT=PM GUIDIST=GTK_DIST + AC_MSG_WARN([OS/2 PM requires old resource format, re-enabled]) + wxUSE_PROLOGIO="yes" + wxUSE_RESOURCES="yes" + AC_MSG_WARN([OS/2 threads are not yet supported... disabled]) + wxUSE_THREADS="no" fi dnl the name of the directory where the files for this toolkit live @@ -2577,8 +2749,10 @@ if test "$wxUSE_DEBUG_FLAG" = "yes"; then lib_debug_suffix=d fi -TOOLCHAIN_NAME="${TOOLKIT_DIR}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}-${WX_RELEASE}" -TOOLCHAIN_NAME_GL="${TOOLKIT_DIR}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_gl-${WX_RELEASE}" +WX_VERSION_TAG=`echo WX${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_${WX_RELEASE} | tr "[[a-z]]" "[[A-Z]]"` + +TOOLCHAIN_NAME="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}-${WX_RELEASE}" +TOOLCHAIN_NAME_GL="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_gl-${WX_RELEASE}" if test "$cross_compiling" = "yes"; then TOOLCHAIN_NAME="${TOOLCHAIN_NAME}-${host_alias}" @@ -2588,6 +2762,7 @@ fi dnl library link name WX_LIBRARY="wx_${TOOLCHAIN_NAME}" WX_LIBRARY_GL="wx_${TOOLCHAIN_NAME_GL}" +WX_LIBRARY_BASENAME="wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}" dnl the name of the shared library WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${SO_SUFFIX}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}" @@ -2620,12 +2795,24 @@ case "${host}" in ;; *-*-darwin* ) + dnl Under Mac OS X, the naming conventions for shared libraries + dnl are different: the number precedes the suffix. + + WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.${SO_SUFFIX}" + WX_LIBRARY_NAME_SHARED_GL="lib${WX_LIBRARY_GL}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.${SO_SUFFIX}" + + WX_LIBRARY_LINK1="lib${WX_LIBRARY}.${WX_CURRENT}.${SO_SUFFIX}" + WX_LIBRARY_LINK2="lib${WX_LIBRARY}.${SO_SUFFIX}" + WX_LIBRARY_LINK1_GL="lib${WX_LIBRARY_GL}.${WX_CURRENT}.${SO_SUFFIX}" + WX_LIBRARY_LINK2_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}" + dnl Under Mac OS X, we should build real frameworks instead of simple dnl dynamic shared libraries (in order to embed the resources) if test "$wxUSE_MAC" = 1; then - dnl the name of the resources file for wxMac - WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.r" - WX_RESOURCES_MACOSX_DATA="lib${WX_LIBRARY}.rsrc" + dnl base name of the resource file for wxMac must be the same + dnl as library installation base name (-install_name) + WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.${WX_CURRENT}.r" + WX_RESOURCES_MACOSX_DATA="lib${WX_LIBRARY}.${WX_CURRENT}.rsrc" fi ;; esac @@ -2674,6 +2861,10 @@ if test "$wxUSE_SHARED" = "yes"; then PIC_FLAG="-fPIC" fi + + dnl use versioned symbols if available on the platform + WX_VERSIONED_SYMBOLS([\$(top_builddir)/version-script]) + dnl the command to use for creating the shared library SHARED_LD="${CXX} -shared -o" @@ -2752,21 +2943,26 @@ if test "$wxUSE_SHARED" = "yes"; then dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved SHARED_LD="\${top_srcdir}/distrib/mac/shared-ld-sh -undefined suppress -flat_namespace -o" PIC_FLAG="-dynamic -fPIC" - SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION}" - SONAME_FLAGS_GL=${SONAME_FLAGS} + dnl library installation base name and wxMac resources file base name + dnl must be identical in order for the resource file to be found at + dnl run time in src/mac/app.cpp + SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION} -install_name \$(libdir)/${WX_LIBRARY_LINK1}" + SONAME_FLAGS_GL="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION} -install_name \$(libdir)/${WX_LIBRARY_LINK1_GL}" ;; *-*-aix* ) - dnl the abs path below used to be hardcoded here so I guess it must - dnl be some sort of standard location under AIX? - AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib, - makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib) + dnl default settings are ok for gcc + if test "$GCC" != "yes"; then + dnl the abs path below used to be hardcoded here so I guess it must + dnl be some sort of standard location under AIX? + AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib, + makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib) - SHARED_LD="$(AIX_CXX_LD) -p 0 -o" + SHARED_LD="$(AIX_CXX_LD) -p 0 -o" + fi ;; *-*-cygwin* | *-*-mingw32* ) - WX_LIBRARY_IMPORTLIB="${WX_LIBRARY_NAME_SHARED}.a" SHARED_LD="${CXX} -shared -Wl,--out-implib,lib/${WX_LIBRARY_IMPORTLIB} -o" @@ -2774,12 +2970,12 @@ if test "$wxUSE_SHARED" = "yes"; then PIC_FLAG="-UWXUSINGDLL -DWXMAKINGDLL=1 -D_DLL=1 -D_WINDLL=1" - dnl install shared libs without symlinks + dnl Don't build seperate GL library + WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED}" + WX_ALL_INSTALLED="CREATE_INSTALLED_LINKS" + if test "$wxUSE_OPENGL" = "yes"; then - WX_ALL_INSTALLED="preinstall_gl" - WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED} \$(build_libdir)/${WX_LIBRARY_NAME_SHARED_GL}" - else - WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED}" + LIBS="${LIBS} ${OPENGL_LIBS}" fi ;; @@ -2789,9 +2985,15 @@ if test "$wxUSE_SHARED" = "yes"; then SHARED_LD="${LD} -shared -o" ;; + *-*-irix* ) + dnl default settings are ok for gcc + if test "$GCC" != "yes"; then + PIC_FLAG="-KPIC" + fi + ;; + *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ *-*-sunos4* | \ - *-*-irix5* | *-*-irix6* | \ *-*-osf* | \ *-*-dgux5* | \ *-*-sysv5* ) @@ -2854,15 +3056,10 @@ if test "$wxUSE_MAC" = 1; then AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez) AC_CHECK_PROG(DEREZ, DeRez, DeRez, /Developer/Tools/DeRez) MACOSX_BUNDLE="bundle" - if test "$wxUSE_SHARED" = "yes"; then - dnl resources are bundled with shared library, not with applications - LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r -o \$(BIN_PROGRAM)" - LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r -o" - else - dnl resources are bundled with applications, not with static library - LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r ${LIBWXMACRES} -o \$(BIN_PROGRAM)" - LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r \${prefix}/lib/${WX_RESOURCES_MACOSX_ASCII} -o" - fi + dnl resources are bundled both with shared library and applications + dnl since the carb resource *must* be included in the application + LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r ${LIBWXMACRES} -o \$(BIN_PROGRAM)" + LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r \${prefix}/lib/${WX_RESOURCES_MACOSX_ASCII} -o" else if test "$wxUSE_PM" = 1; then LIBWXMACRESCOMP="emxbind -ep \$(BIN_PROGRAM)" @@ -3101,20 +3298,17 @@ AC_CACHE_CHECK(for statfs, wx_cv_func_statfs, ) if test "$wx_cv_func_statfs" = "yes"; then + wx_cv_type_statvfs_t="struct statfs" AC_DEFINE(HAVE_STATFS) else AC_CACHE_CHECK(for statvfs, wx_cv_func_statvfs, AC_TRY_COMPILE( [ - #include + #include + #include ], [ - long l; - struct statvfs fs; - statvfs("/", &fs); - l = fs.f_bsize; - l += fs.f_blocks; - l += fs.f_bavail; + statvfs("/", NULL); ], [ wx_cv_func_statvfs=yes @@ -3126,12 +3320,73 @@ else ) if test "$wx_cv_func_statvfs" = "yes"; then - AC_DEFINE(HAVE_STATVFS) + dnl we also have to check whether we should use statvfs_t (works under + dnl Solaris 8, doesn't work under Solaris 7) or "struct statvfs" (vice + dnl versa) as the argument for statvfs in 64 bit off_t mode (in 32 bit + dnl mode both work fine) + dnl + dnl for this check C++ compiler has to be used as passing incompatible + dnl pointers is just a warning and not an error in C + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + AC_CACHE_CHECK(for statvfs argument type, wx_cv_type_statvfs_t, + AC_TRY_COMPILE( + [ + #include + ], + [ + long l; + statvfs_t fs; + statvfs("/", &fs); + l = fs.f_bsize; + l += fs.f_blocks; + l += fs.f_bavail; + ], + [ + wx_cv_type_statvfs_t=statvfs_t + ], + [ + AC_TRY_COMPILE( + [ + #include + ], + [ + long l; + struct statvfs fs; + statvfs("/", &fs); + l = fs.f_bsize; + l += fs.f_blocks; + l += fs.f_bavail; + ], + [ + wx_cv_type_statvfs_t="struct statvfs" + ], + [ + wx_cv_type_statvfs_t="unknown" + ] + ) + ] + ) + ) + + AC_LANG_RESTORE + + if test "$wx_cv_type_statvfs_t" != "unknown"; then + AC_DEFINE(HAVE_STATVFS) + fi else - AC_MSG_WARN([wxGetDiskSpace() function won't work without statfs()]) + dnl set it for the test below + wx_cv_type_statvfs_t="unknown" fi fi +if test "$wx_cv_type_statvfs_t" != "unknown"; then + AC_DEFINE_UNQUOTED(WX_STATFS_T, $wx_cv_type_statvfs_t) +else + AC_MSG_WARN([wxGetDiskSpace() function won't work without statfs()]) +fi + dnl check for fcntl() or at least flock() needed by Unix implementation of dnl wxSingleInstanceChecker if test "$wxUSE_SNGLINST_CHECKER" = "yes"; then @@ -3364,7 +3619,17 @@ if test "$TOOLKIT" != "MSW"; then AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host}" in - *-aix* | *-freebsd*) + *-aix*) + dnl again quoting from + dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html: + dnl + dnl When compiling and linking with -pthread, the library + dnl search path should include -L/usr/lib/threads at the + dnl beginning of the path. + LDFLAGS="-L/usr/lib/threads $LDFLAGS" + flag="-D_THREAD_SAFE" + ;; + *-freebsd*) flag="-D_THREAD_SAFE" ;; *-hp-hpux* ) @@ -3626,11 +3891,19 @@ if test "$GCC" = "yes" ; then dnl for each subroutine by default -- using the switch below only creates dnl one entry per file instead at the price of minor performance penalty dnl + dnl As of wx2.4 a bug in the hppa gcc compiler causes a similar problem + dnl without -ffunction-sections. No idea how long we'll need to maintain + dnl this, or even the extent of gcc/wx version combinations affected, but + dnl also as above, this 'fix' does not come without side effects. + dnl dnl TODO: test for the gcc version here (how?) case "${host}" in powerpc*-*-aix* ) CODE_GEN_FLAGS="$CODE_GEN_FLAGS -mminimal-toc" ;; + *-hppa* ) + CODE_GEN_FLAGS="$CODE_GEN_FLAGS -ffunction-sections" + ;; esac fi @@ -4290,14 +4563,18 @@ fi if test "$wxUSE_PROLOGIO" = "yes" ; then AC_DEFINE(wxUSE_PROLOGIO) + ALL_OBJECTS="$ALL_OBJECTS parser.o" fi if test "$wxUSE_RESOURCES" = "yes" ; then if test "$wxUSE_NANOX" = "yes"; then AC_MSG_WARN([Cannot use resource database functions in NanoX]) - else - AC_DEFINE(wxUSE_RESOURCES) - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + else + AC_DEFINE(wxUSE_RESOURCES) + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + fi + if test "$wxUSE_PROLOGIO" != "yes" ; then + ALL_OBJECTS="$ALL_OBJECTS parser.o" fi fi @@ -4970,7 +5247,48 @@ dnl FIXME: should this be covered by the conditional above dnl given the -lm comment there? Or should that comment (and dnl this one) be removed.. [ 7 Nov 2001 ] -LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK -lm $LIBS" +LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK $LIBS" + +dnl Only add the -lm library if floating point functions cannot be used +dnl without it. This check is important on cygwin because of the bizarre +dnl way that they have organized functions into libraries. On cygwin, both +dnl libc.a and libm.a are symbolic links to a single lib libcygwin.a. This +dnl means that +dnl 1) linking with -lm is not necessary, and +dnl 2) linking with -lm is dangerous if the order of libraries is wrong +dnl In particular, if you compile any program with -mno-cygwin and link with +dnl -lm, it will crash instantly when it is run. This happens because the +dnl linker incorrectly links the Cygwin libm.a (==libcygwin.a), which replaces +dnl the ___main function instead of allowing it to be defined by +dnl /usr/lib/mingw/libmingw32.a as it should be. +dnl +dnl On MacOS X, this test will find that -lm is unnecessary and leave it out. +dnl +dnl Just check a few floating point functions. If they are all found without +dnl -lm, then we must not need -lm. +have_cos=0 +have_floor=0 +AC_CHECK_FUNCS(cos, have_cos=1) +AC_CHECK_FUNCS(floor, have_floor=1) +AC_MSG_CHECKING(if floating point functions link without -lm) +if test "$have_cos" = 1 -a "$have_floor" = 1; then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) + LIBS="$LIBS -lm" + # use different functions to avoid configure caching + have_sin=0 + have_ceil=0 + AC_CHECK_FUNCS(sin, have_sin=1) + AC_CHECK_FUNCS(ceil, have_ceil=1) + AC_MSG_CHECKING(if floating point functions link with -lm) + if test "$have_sin" = 1 -a "$have_ceil" = 1; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + # not sure we should warn the user, crash, etc. + fi +fi if test "$wxUSE_GUI" = "yes"; then @@ -5056,6 +5374,7 @@ AC_SUBST(WX_MINOR_VERSION_NUMBER) AC_SUBST(WX_RELEASE_NUMBER) AC_SUBST(WX_LIBRARY_NAME_STATIC) AC_SUBST(WX_LIBRARY_NAME_SHARED) +AC_SUBST(WX_LIBRARY_BASENAME) AC_SUBST(WX_LIBRARY_IMPORTLIB) AC_SUBST(WX_TARGET_LIBRARY) AC_SUBST(WX_LIBRARY_LINK1) @@ -5091,6 +5410,7 @@ AC_SUBST(WXDEBUG_DEFINE) dnl toolkit options AC_SUBST(USE_GUI) AC_SUBST(AFMINSTALL) +AC_SUBST(WIN32INSTALL) AC_SUBST(TOOLKIT) AC_SUBST(TOOLKIT_DIR) AC_SUBST(TOOLKIT_VPATH) @@ -5125,10 +5445,12 @@ AC_SUBST(SAMPLES_SUBDIRS) dnl additional libraries and linker settings AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS_GL) +AC_SUBST(LDFLAGS_VERSIONING) AC_SUBST(LDFLAGS_EXE) AC_SUBST(OPENGL_LIBS) AC_SUBST(DMALLOC_LIBS) AC_SUBST(EXTRADEFS) +AC_SUBST(WX_VERSION_TAG) dnl additional resurces settings AC_SUBST(RESCOMP) @@ -5144,7 +5466,8 @@ AC_SUBST(LIBWXMACRES) AC_SUBST(LIBWXMACRESCOMP) AC_SUBST(LIBWXMACRESWXCONFIG) -dnl These seem to be missing +dnl other tools +AC_SUBST(GCC) AC_SUBST(DLLTOOL) AC_SUBST(AS) AC_SUBST(NM) @@ -5175,9 +5498,16 @@ wx_cv_program_ext=$PROGRAM_EXT wx_cv_target_library=$WX_TARGET_LIBRARY wx_cv_target_library_gl=$WX_TARGET_LIBRARY_GL wx_cv_target_libtype=$WX_TARGET_LIBRARY_TYPE +wx_cv_library_basename=${WX_LIBRARY_BASENAME} +wx_cv_release=${WX_RELEASE} +wx_cv_current=${WX_CURRENT} +wx_cv_revision=${WX_REVISION} +wx_cv_age=${WX_AGE} export wx_cv_path_samplesubdirs wx_cv_if_gnu_make \ wx_cv_path_ifs wx_cv_program_ext \ - wx_cv_target_library wx_cv_target_library_gl wx_cv_target_libtype + wx_cv_target_library wx_cv_target_library_gl wx_cv_target_libtype \ + wx_cv_library_basename wx_cv_release wx_cv_current wx_cv_revision wx_cv_age + AC_CONFIG_SUBDIRS(demos samples utils contrib) @@ -5186,6 +5516,7 @@ dnl (the original file name may be overriden by appending another name after a dnl colon) AC_OUTPUT([ wx-config + version-script src/make.env src/makeprog.env src/makelib.env @@ -5230,4 +5561,27 @@ AC_OUTPUT([ ] ) -dnl vi: set et sts=4 sw=4: +dnl report on what we decided to do +echo +echo "Configured wxWindows ${WX_VERSION} for \`${host}'" +echo "" +echo " Which GUI toolkit should wxWindows use? ${TOOLKIT:-base only}" + +echo " Should wxWindows be compiled in debug mode? ${wxUSE_DEBUG:-no}" +echo " Should wxWindows be linked as a shared library? ${wxUSE_SHARED:-no}" +echo " Should wxWindows be compiled in Unicode mode? ${wxUSE_UNICODE:-no}" + +echo " What level of wxWindows compatibility should be enabled?" +echo " wxWindows 2.0 ${WXWIN_COMPATIBILITY_2:-no}" +echo " wxWindows 2.2 ${WXWIN_COMPATIBILITY_2_2:-yes}" + +echo " Which libraries should wxWindows use?" +echo " jpeg ${wxUSE_LIBJPEG-none}" +echo " png ${wxUSE_LIBPNG-none}" +echo " regex ${wxUSE_REGEX}" +echo " tiff ${wxUSE_LIBTIFF-none}" +echo " zlib ${wxUSE_ZLIB}" + +echo "" + +dnl vi: set et sts=4 sw=4 com=\:dnl: diff --git a/contrib/configure b/contrib/configure index 32d878c135..cbf9a0ae02 100755 --- a/contrib/configure +++ b/contrib/configure @@ -691,6 +691,16 @@ fi PATH_IFS=$wx_cv_path_ifs WX_TARGET_LIBRARY=$wx_cv_target_library WX_TARGET_LIBRARY_TYPE=$wx_cv_target_libtype +WX_LIBRARY_BASENAME=$wx_cv_library_basename +WX_RELEASE=$wx_cv_release +WX_CURRENT=$wx_cv_current +WX_REVISION=$wx_cv_revision +WX_AGE=$wx_cv_age + + + + + @@ -830,16 +840,17 @@ trap 'rm -fr `echo " samples/ogl/ogledit/Makefile samples/ogl/studio/Makefile samples/stc/Makefile - samples/svg/Makefile + samples/svg/Makefile samples/canvas/Makefile samples/canvas/test/Makefile samples/canvas/simple/Makefile samples/gizmos/Makefile - samples/gizmos/multicell/Makefile - samples/gizmos/splittree/Makefile samples/gizmos/editlbox/Makefile samples/gizmos/dynsash/Makefile samples/gizmos/dynsash_switch/Makefile + samples/gizmos/multicell/Makefile + samples/gizmos/splittree/Makefile + samples/gizmos/led/Makefile samples/xrc/Makefile samples/plot/Makefile samples/applet/Makefile @@ -890,6 +901,11 @@ s%@PATH_IFS@%$PATH_IFS%g s%@ESD_LINK@%$ESD_LINK%g s%@WX_TARGET_LIBRARY@%$WX_TARGET_LIBRARY%g s%@WX_TARGET_LIBRARY_TYPE@%$WX_TARGET_LIBRARY_TYPE%g +s%@WX_LIBRARY_BASENAME@%$WX_LIBRARY_BASENAME%g +s%@WX_RELEASE@%$WX_RELEASE%g +s%@WX_CURRENT@%$WX_CURRENT%g +s%@WX_REVISION@%$WX_REVISION%g +s%@WX_AGE@%$WX_AGE%g CEOF EOF @@ -949,16 +965,17 @@ CONFIG_FILES=\${CONFIG_FILES-"src/Makefile samples/ogl/ogledit/Makefile samples/ogl/studio/Makefile samples/stc/Makefile - samples/svg/Makefile + samples/svg/Makefile samples/canvas/Makefile samples/canvas/test/Makefile samples/canvas/simple/Makefile samples/gizmos/Makefile - samples/gizmos/multicell/Makefile - samples/gizmos/splittree/Makefile samples/gizmos/editlbox/Makefile samples/gizmos/dynsash/Makefile samples/gizmos/dynsash_switch/Makefile + samples/gizmos/multicell/Makefile + samples/gizmos/splittree/Makefile + samples/gizmos/led/Makefile samples/xrc/Makefile samples/plot/Makefile samples/applet/Makefile diff --git a/contrib/configure.in b/contrib/configure.in index ef6db6c6ec..3047831472 100644 --- a/contrib/configure.in +++ b/contrib/configure.in @@ -26,11 +26,21 @@ dnl Final subst PATH_IFS=$wx_cv_path_ifs WX_TARGET_LIBRARY=$wx_cv_target_library WX_TARGET_LIBRARY_TYPE=$wx_cv_target_libtype +WX_LIBRARY_BASENAME=$wx_cv_library_basename +WX_RELEASE=$wx_cv_release +WX_CURRENT=$wx_cv_current +WX_REVISION=$wx_cv_revision +WX_AGE=$wx_cv_age AC_SUBST(PATH_IFS) AC_SUBST(ESD_LINK) AC_SUBST(WX_TARGET_LIBRARY) AC_SUBST(WX_TARGET_LIBRARY_TYPE) +AC_SUBST(WX_LIBRARY_BASENAME) +AC_SUBST(WX_RELEASE) +AC_SUBST(WX_CURRENT) +AC_SUBST(WX_REVISION) +AC_SUBST(WX_AGE) dnl ----------- dnl File output @@ -55,15 +65,17 @@ AC_OUTPUT([ samples/ogl/ogledit/Makefile samples/ogl/studio/Makefile samples/stc/Makefile + samples/svg/Makefile samples/canvas/Makefile samples/canvas/test/Makefile samples/canvas/simple/Makefile samples/gizmos/Makefile - samples/gizmos/multicell/Makefile - samples/gizmos/splittree/Makefile samples/gizmos/editlbox/Makefile samples/gizmos/dynsash/Makefile samples/gizmos/dynsash_switch/Makefile + samples/gizmos/multicell/Makefile + samples/gizmos/splittree/Makefile + samples/gizmos/led/Makefile samples/xrc/Makefile samples/plot/Makefile samples/applet/Makefile diff --git a/contrib/include/wx/canvas/bbox.h b/contrib/include/wx/canvas/bbox.h index 6effa6951f..49a2e555ac 100644 --- a/contrib/include/wx/canvas/bbox.h +++ b/contrib/include/wx/canvas/bbox.h @@ -21,7 +21,7 @@ class wxBoundingBox { public: wxBoundingBox(); - wxBoundingBox(wxBoundingBox&); + wxBoundingBox(const wxBoundingBox&); wxBoundingBox(const wxPoint2DDouble&); wxBoundingBox(double xmin, double ymin, double xmax, double ymax); diff --git a/contrib/include/wx/fl/antiflickpl.h b/contrib/include/wx/fl/antiflickpl.h index 32b0eb2988..e8569aa6df 100644 --- a/contrib/include/wx/fl/antiflickpl.h +++ b/contrib/include/wx/fl/antiflickpl.h @@ -26,7 +26,7 @@ antiflicker plugins within the application. Locking for multithreaded applications is not yet implemented. */ -class cbAntiflickerPlugin : public cbPluginBase +class WXFL_DECLSPEC cbAntiflickerPlugin : public cbPluginBase { DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin ) protected: diff --git a/contrib/include/wx/fl/bardragpl.h b/contrib/include/wx/fl/bardragpl.h index 953b8dff9c..6c225dd237 100644 --- a/contrib/include/wx/fl/bardragpl.h +++ b/contrib/include/wx/fl/bardragpl.h @@ -23,7 +23,7 @@ Plugin class implementing bar dragging. */ -class cbBarDragPlugin : public cbPluginBase +class WXFL_DECLSPEC cbBarDragPlugin : public cbPluginBase { DECLARE_DYNAMIC_CLASS( cbBarDragPlugin ) protected: diff --git a/contrib/include/wx/fl/barhintspl.h b/contrib/include/wx/fl/barhintspl.h index 51a503145c..5f8da11d6d 100644 --- a/contrib/include/wx/fl/barhintspl.h +++ b/contrib/include/wx/fl/barhintspl.h @@ -24,7 +24,7 @@ This class intercepts bar-decoration and sizing events, and draws 3D hints around fixed and flexible bars, similar to those in Microsoft DevStudio 6.x */ -class cbBarHintsPlugin : public cbPluginBase +class WXFL_DECLSPEC cbBarHintsPlugin : public cbPluginBase { DECLARE_DYNAMIC_CLASS( cbBarHintsPlugin ) diff --git a/contrib/include/wx/fl/cbcustom.h b/contrib/include/wx/fl/cbcustom.h index 93ec7f7f43..6eaf27cfd4 100644 --- a/contrib/include/wx/fl/cbcustom.h +++ b/contrib/include/wx/fl/cbcustom.h @@ -24,7 +24,7 @@ menu and handling basic customization such as floating and horizontal/vertical alignment of the bar. */ -class cbSimpleCustomizationPlugin : public cbPluginBase +class WXFL_DECLSPEC cbSimpleCustomizationPlugin : public cbPluginBase { public: DECLARE_DYNAMIC_CLASS( cbSimpleCustomizationPlugin ) diff --git a/contrib/include/wx/fl/controlbar.h b/contrib/include/wx/fl/controlbar.h index dbe944fc9d..db829bc618 100644 --- a/contrib/include/wx/fl/controlbar.h +++ b/contrib/include/wx/fl/controlbar.h @@ -21,30 +21,31 @@ #include "wx/string.h" #include "wx/window.h" #include "wx/dynarray.h" +#include "wx/fl/fldefs.h" #define WXCONTROLBAR_VERSION 1.3 // forward declarations -class wxFrameLayout; +class WXFL_DECLSPEC wxFrameLayout; -class cbDockPane; -class cbUpdatesManagerBase; -class cbBarDimHandlerBase; -class cbPluginBase; -class cbPluginEvent; -class cbPaneDrawPlugin; +class WXFL_DECLSPEC cbDockPane; +class WXFL_DECLSPEC cbUpdatesManagerBase; +class WXFL_DECLSPEC cbBarDimHandlerBase; +class WXFL_DECLSPEC cbPluginBase; +class WXFL_DECLSPEC cbPluginEvent; +class WXFL_DECLSPEC cbPaneDrawPlugin; -class cbBarInfo; -class cbRowInfo; -class cbDimInfo; -class cbCommonPaneProperties; +class WXFL_DECLSPEC cbBarInfo; +class WXFL_DECLSPEC cbRowInfo; +class WXFL_DECLSPEC cbDimInfo; +class WXFL_DECLSPEC cbCommonPaneProperties; typedef cbBarInfo* BarInfoPtrT; typedef cbRowInfo* RowInfoPtrT; -WX_DEFINE_ARRAY( BarInfoPtrT, BarArrayT ); -WX_DEFINE_ARRAY( RowInfoPtrT, RowArrayT ); +WXFL_DEFINE_ARRAY( BarInfoPtrT, BarArrayT ); +WXFL_DEFINE_ARRAY( RowInfoPtrT, RowArrayT ); // control bar states @@ -97,7 +98,7 @@ Helper class, used for spying for unhandled mouse events on control bars and forwarding them to the frame layout. */ -class cbBarSpy : public wxEvtHandler +class WXFL_DECLSPEC cbBarSpy : public wxEvtHandler { public: DECLARE_DYNAMIC_CLASS( cbBarSpy ) @@ -129,7 +130,7 @@ which can be docked along the top, bottom, right, or left side of the parent frame. */ -class wxFrameLayout : public wxEvtHandler +class WXFL_DECLSPEC wxFrameLayout : public wxEvtHandler { public: // Default constructor, used only for serialization. @@ -647,7 +648,7 @@ used by any particular updates-manager to store auxiliary information to be used by its updating algorithm. */ -class cbUpdateMgrData : public wxObject +class WXFL_DECLSPEC cbUpdateMgrData : public wxObject { DECLARE_DYNAMIC_CLASS( cbUpdateMgrData ) public: @@ -687,7 +688,7 @@ to adjust the values in cbDimInfo::mSizes accordingly. Specific handlers can be hooked up to specific types of bar. */ -class cbBarDimHandlerBase : public wxObject +class WXFL_DECLSPEC cbBarDimHandlerBase : public wxObject { DECLARE_ABSTRACT_CLASS( cbBarDimHandlerBase ) @@ -725,7 +726,7 @@ Helper class used internally by the wxFrameLayout class. Holds and manages information about bar dimensions. */ -class cbDimInfo : public wxObject +class WXFL_DECLSPEC cbDimInfo : public wxObject { DECLARE_DYNAMIC_CLASS( cbDimInfo ) public: @@ -824,7 +825,7 @@ public: }; // FIXME: this array definition compiles but probably doesn't do what was intended (GD) -WX_DEFINE_ARRAY_LONG(float, cbArrayFloat); +WXFL_DEFINE_ARRAY_LONG(float, cbArrayFloat); /* Helper class used internally by the wxFrameLayout class. diff --git a/contrib/include/wx/fl/dyntbar.h b/contrib/include/wx/fl/dyntbar.h index 52945f93ab..25a1593ca6 100644 --- a/contrib/include/wx/fl/dyntbar.h +++ b/contrib/include/wx/fl/dyntbar.h @@ -18,12 +18,13 @@ #include "wx/tbarbase.h" #include "wx/dynarray.h" +#include "wx/fl/fldefs.h" /* Tool layout item. */ -class wxToolLayoutItem : public wxObject +class WXFL_DECLSPEC wxToolLayoutItem : public wxObject { DECLARE_DYNAMIC_CLASS(wxToolLayoutItem) @@ -32,19 +33,19 @@ public: bool mIsSeparator; }; -class wxDynToolInfo; +class WXFL_DECLSPEC wxDynToolInfo; typedef wxToolLayoutItem* wxToolLayoutItemPtrT; typedef wxDynToolInfo* wxDynToolInfoPtrT; -WX_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT ); -WX_DEFINE_ARRAY( wxDynToolInfoPtrT, wxDynToolInfoArrayT ); +WXFL_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT ); +WXFL_DEFINE_ARRAY( wxDynToolInfoPtrT, wxDynToolInfoArrayT ); /* This is a base class for layout algorithm implementations. */ -class LayoutManagerBase +class WXFL_DECLSPEC LayoutManagerBase { public: // Constructor. @@ -63,7 +64,7 @@ BagLayout lays out items in left-to-right order from top to bottom. */ -class BagLayout : public LayoutManagerBase +class WXFL_DECLSPEC BagLayout : public LayoutManagerBase { public: // Constructor. @@ -78,7 +79,7 @@ public: This class holds dynamic toolbar item information. */ -class wxDynToolInfo : public wxToolLayoutItem +class WXFL_DECLSPEC wxDynToolInfo : public wxToolLayoutItem { DECLARE_DYNAMIC_CLASS(wxDynToolInfo) @@ -98,7 +99,7 @@ public: wxDynamicToolBar manages containment and layout of tool windows. */ -class wxDynamicToolBar : public wxToolBarBase +class WXFL_DECLSPEC wxDynamicToolBar : public wxToolBarBase { protected: friend class wxDynamicToolBarSerializer; diff --git a/contrib/include/wx/fl/dyntbarhnd.h b/contrib/include/wx/fl/dyntbarhnd.h index 95441c92b8..29446bdeb1 100644 --- a/contrib/include/wx/fl/dyntbarhnd.h +++ b/contrib/include/wx/fl/dyntbarhnd.h @@ -23,7 +23,7 @@ Dynamic toolbar dimension handler. */ -class cbDynToolBarDimHandler : public cbBarDimHandlerBase +class WXFL_DECLSPEC cbDynToolBarDimHandler : public cbBarDimHandlerBase { DECLARE_DYNAMIC_CLASS( cbDynToolBarDimHandler ) public: diff --git a/contrib/include/wx/fl/fldefs.h b/contrib/include/wx/fl/fldefs.h new file mode 100644 index 0000000000..d8346b6229 --- /dev/null +++ b/contrib/include/wx/fl/fldefs.h @@ -0,0 +1,50 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fldefs.h +// Purpose: Declaration of global types and defines. +// Author: David M. Falkinder (david_falkinder@hp.com) +// Modified by: +// Created: 18/09/2002 +// RCS-ID: $Id$ +// Copyright: (c) David M. Falkinder +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef __fldefs_H_INCLUDED__ +#define __fldefs_H_INCLUDED__ + +#include "wx/defs.h" + +/* + * If we're using wx in Dynamic Library format do we + * want FL to be in DLL form as well? + */ +#if defined(WXUSINGDLL) && \ + (defined(WXMAKING_FL_DLL) || defined(WXUSING_FL_DLL)) + +#if defined(WXMAKING_FL_DLL) + // When building the DLL WXFLDECLSPEC exports classes +# define WXFL_DECLSPEC WXEXPORT +#elif defined(WXUSING_FL_DLL) + // When building the DLL WXFLDECLSPEC imports classes +# define WXFL_DECLSPEC WXIMPORT +#endif // defined(WXBUILD_FL_DLL) + +#else +// When building the static library nullify the effect of WXFL_DECLSPEC +#define WXFL_DECLSPEC +#endif // WXUSINGDLL && (WXMAKING_FL_DLL || WXUSING_FL_DLL) + +/////////////////////////////////////////////////////////////////////////////// +// Override some of the wxArray functions to +// include our definitions +/////////////////////////////////////////////////////////////////////////////// +#define WXFL_DEFINE_ARRAY(c,l) \ + class WXFL_DECLSPEC l; \ + WX_DEFINE_ARRAY(c,l) + +#define WXFL_DEFINE_ARRAY_LONG(t,l) \ + class WXFL_DECLSPEC l; \ + WX_DEFINE_ARRAY_LONG(t,l) + + +#endif // __fldefs_H_INCLUDED__ diff --git a/contrib/include/wx/fl/frmview.h b/contrib/include/wx/fl/frmview.h index 8830ab8e0a..8abc9efa36 100644 --- a/contrib/include/wx/fl/frmview.h +++ b/contrib/include/wx/fl/frmview.h @@ -32,7 +32,7 @@ class wxFrameManager; It is not clear what this class does. It is not used elsewhere in FL. */ -class wxFrameView : public wxEvtHandler +class WXFL_DECLSPEC wxFrameView : public wxEvtHandler { protected: wxStringList mTopMenus; @@ -87,7 +87,7 @@ class wxFrame; It is not clear what this class does. It is not used elsewhere in FL. */ -class wxFrameManager : wxObject +class WXFL_DECLSPEC wxFrameManager : wxObject { protected: wxList mViews; diff --git a/contrib/include/wx/fl/garbagec.h b/contrib/include/wx/fl/garbagec.h index b5f991abfa..652854fc01 100644 --- a/contrib/include/wx/fl/garbagec.h +++ b/contrib/include/wx/fl/garbagec.h @@ -17,6 +17,7 @@ #endif #include "wx/list.h" +#include "wx/fl/fldefs.h" struct GCItem { @@ -33,7 +34,7 @@ inline void* gc_node_to_obj( wxNode* pGCNode ) This class implements an extremely slow but simple garbage collection algorithm. */ -class GarbageCollector +class WXFL_DECLSPEC GarbageCollector { protected: wxList mAllNodes; diff --git a/contrib/include/wx/fl/gcupdatesmgr.h b/contrib/include/wx/fl/gcupdatesmgr.h index 2bfc959f89..4a0310432f 100644 --- a/contrib/include/wx/fl/gcupdatesmgr.h +++ b/contrib/include/wx/fl/gcupdatesmgr.h @@ -93,7 +93,7 @@ to avoid dirty non-client areas of moved windows in some special cases of 'overlapping anomalies'. */ -class cbGCUpdatesMgr : public cbSimpleUpdatesMgr +class WXFL_DECLSPEC cbGCUpdatesMgr : public cbSimpleUpdatesMgr { DECLARE_DYNAMIC_CLASS( cbGCUpdatesMgr ) protected: diff --git a/contrib/include/wx/fl/hintanimpl.h b/contrib/include/wx/fl/hintanimpl.h index e35083386e..1a07c59d6d 100644 --- a/contrib/include/wx/fl/hintanimpl.h +++ b/contrib/include/wx/fl/hintanimpl.h @@ -20,13 +20,13 @@ #include "wx/timer.h" -class cbHintAnimTimer; +class WXFL_DECLSPEC cbHintAnimTimer; /* A plugin to draw animated hints when the user drags a pane. */ -class cbHintAnimationPlugin : public cbPluginBase +class WXFL_DECLSPEC cbHintAnimationPlugin : public cbPluginBase { DECLARE_DYNAMIC_CLASS( cbHintAnimationPlugin ) protected: @@ -101,7 +101,7 @@ public: A private helper class. */ -struct MorphInfoT +struct WXFL_DECLSPEC MorphInfoT { wxPoint mFrom; wxPoint mTill; @@ -111,7 +111,7 @@ struct MorphInfoT A private helper class. */ -class cbHintAnimTimer : public wxTimer +class WXFL_DECLSPEC cbHintAnimTimer : public wxTimer { protected: diff --git a/contrib/include/wx/fl/newbmpbtn.h b/contrib/include/wx/fl/newbmpbtn.h index 73fcc32b59..507880b7ce 100644 --- a/contrib/include/wx/fl/newbmpbtn.h +++ b/contrib/include/wx/fl/newbmpbtn.h @@ -18,6 +18,7 @@ #include "wx/button.h" #include "wx/string.h" +#include "wx/fl/fldefs.h" // defaults #define NB_DEFAULT_MARGIN 2 @@ -31,8 +32,8 @@ // classes declared in this header file -class wxNewBitmapButton; -class wxBorderLessBitmapButton; +class WXFL_DECLSPEC wxNewBitmapButton; +class WXFL_DECLSPEC wxBorderLessBitmapButton; /* This is an alternative class to wxBitmapButton. It is used @@ -194,11 +195,6 @@ public: // Responds to a kill focus event. void OnKillFocus( wxFocusEvent& event ); - // Maps bitmap to current system colours on Windows -#ifdef __WXMSW__ - WXHBITMAP MapBitmap(WXHBITMAP bitmap, int width, int height); -#endif - DECLARE_EVENT_TABLE() }; diff --git a/contrib/include/wx/fl/panedrawpl.h b/contrib/include/wx/fl/panedrawpl.h index 781a9f39bc..e84f318fc6 100644 --- a/contrib/include/wx/fl/panedrawpl.h +++ b/contrib/include/wx/fl/panedrawpl.h @@ -27,7 +27,7 @@ would be enough for the frame layout to function properly (they are plugged in automatically by the wxFrameLayout class). */ -class cbPaneDrawPlugin : public cbPluginBase +class WXFL_DECLSPEC cbPaneDrawPlugin : public cbPluginBase { public: DECLARE_DYNAMIC_CLASS( cbPaneDrawPlugin ) diff --git a/contrib/include/wx/fl/rowdragpl.h b/contrib/include/wx/fl/rowdragpl.h index e9b94aea5b..831a7b7f94 100644 --- a/contrib/include/wx/fl/rowdragpl.h +++ b/contrib/include/wx/fl/rowdragpl.h @@ -25,7 +25,7 @@ The behaviour and appearance resembles drag and drop positioning of the toolbar rows in Netscape Communicator 4.xx. */ -class cbRowDragPlugin : public cbPluginBase +class WXFL_DECLSPEC cbRowDragPlugin : public cbPluginBase { DECLARE_DYNAMIC_CLASS( cbRowDragPlugin ) public: @@ -217,7 +217,7 @@ public: Internal helper class. */ -class cbHiddenBarInfo : public wxObject +class WXFL_DECLSPEC cbHiddenBarInfo : public wxObject { DECLARE_DYNAMIC_CLASS( cbHiddenBarInfo ) public: diff --git a/contrib/include/wx/fl/rowlayoutpl.h b/contrib/include/wx/fl/rowlayoutpl.h index fa1bc52ebf..969140a8a5 100644 --- a/contrib/include/wx/fl/rowlayoutpl.h +++ b/contrib/include/wx/fl/rowlayoutpl.h @@ -23,7 +23,7 @@ Simple implementation of a plugin which handles row layout requests sent from a frame layout. */ -class cbRowLayoutPlugin : public cbPluginBase +class WXFL_DECLSPEC cbRowLayoutPlugin : public cbPluginBase { DECLARE_DYNAMIC_CLASS( cbRowLayoutPlugin ) protected: diff --git a/contrib/include/wx/fl/toolwnd.h b/contrib/include/wx/fl/toolwnd.h index c6509280e6..2024c0c3d0 100644 --- a/contrib/include/wx/fl/toolwnd.h +++ b/contrib/include/wx/fl/toolwnd.h @@ -19,6 +19,7 @@ #include "wx/frame.h" #include "wx/dynarray.h" +#include "wx/fl/fldefs.h" // fixed settings @@ -26,18 +27,18 @@ #define BTN_BOX_WIDTH 12 #define BTN_X_WIEGHT 2 -class cbMiniButton; +class WXFL_DECLSPEC cbMiniButton; typedef cbMiniButton* cbMinitButtonPtrT; -WX_DEFINE_ARRAY( cbMinitButtonPtrT, cbMiniButtonArrayT ); +WXFL_DEFINE_ARRAY( cbMinitButtonPtrT, cbMiniButtonArrayT ); /* A tool window is a special kind of frame that paints its own title, and can be used to implement small floating windows. */ -class wxToolWindow : public wxFrame +class WXFL_DECLSPEC wxToolWindow : public wxFrame { DECLARE_DYNAMIC_CLASS( wxToolWindow ) @@ -221,7 +222,7 @@ public: cbCloseBox is a window close button, used in a wxToolWindow titlebar. */ -class cbCloseBox : public cbMiniButton +class WXFL_DECLSPEC cbCloseBox : public cbMiniButton { public: // Draws the close button appearance. @@ -232,7 +233,7 @@ public: cbCollapseBox is a window collapse button, used in a wxToolWindow titlebar. */ -class cbCollapseBox : public cbMiniButton +class WXFL_DECLSPEC cbCollapseBox : public cbMiniButton { public: bool mIsAtLeft; @@ -245,7 +246,7 @@ public: cbDockBox is a window dock button, used in a wxToolWindow titlebar. */ -class cbDockBox : public cbMiniButton +class WXFL_DECLSPEC cbDockBox : public cbMiniButton { public: // Draws the dock button appearance. @@ -257,7 +258,7 @@ cbFloatedBarWindow is a kind of wxToolWindow, implementing floating toolbars. */ -class cbFloatedBarWindow : public wxToolWindow +class WXFL_DECLSPEC cbFloatedBarWindow : public wxToolWindow { DECLARE_DYNAMIC_CLASS( cbFloatedBarWindow ) protected: diff --git a/contrib/include/wx/fl/updatesmgr.h b/contrib/include/wx/fl/updatesmgr.h index 027d51315b..52a3222b9f 100644 --- a/contrib/include/wx/fl/updatesmgr.h +++ b/contrib/include/wx/fl/updatesmgr.h @@ -23,7 +23,7 @@ This class implements slightly optimized logic for refreshing the areas of frame layout that actually need to be updated. */ -class cbSimpleUpdatesMgr : public cbUpdatesManagerBase +class WXFL_DECLSPEC cbSimpleUpdatesMgr : public cbUpdatesManagerBase { DECLARE_DYNAMIC_CLASS( cbSimpleUpdatesMgr ) protected: diff --git a/contrib/include/wx/gizmos/dynamicsash.h b/contrib/include/wx/gizmos/dynamicsash.h index a3b2f22363..6ad05841c3 100644 --- a/contrib/include/wx/gizmos/dynamicsash.h +++ b/contrib/include/wx/gizmos/dynamicsash.h @@ -142,19 +142,21 @@ typedef void (wxEvtHandler::*wxDynamicSashUnifyEventFunction)(wxDynamicSashSplit /* wxDynamicSashWindow. See above. */ +extern const wxChar* GIZMODLLEXPORT wxDynamicSashWindowNameStr; + class GIZMODLLEXPORT wxDynamicSashWindow : public wxWindow { public: wxDynamicSashWindow(); wxDynamicSashWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCLIP_CHILDREN | wxDS_MANAGE_SCROLLBARS | wxDS_DRAG_CORNER, - const wxString& name = "dynamicSashWindow"); + const wxString& name = wxDynamicSashWindowNameStr); virtual ~wxDynamicSashWindow(); virtual bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCLIP_CHILDREN | wxDS_MANAGE_SCROLLBARS | wxDS_DRAG_CORNER, - const wxString& name = "dynamicSashWindow"); + const wxString& name = wxDynamicSashWindowNameStr); virtual wxScrollBar *GetHScrollBar(const wxWindow *child) const; virtual wxScrollBar *GetVScrollBar(const wxWindow *child) const; diff --git a/contrib/include/wx/gizmos/multicell.h b/contrib/include/wx/gizmos/multicell.h index 895c98dd08..aea204f41c 100644 --- a/contrib/include/wx/gizmos/multicell.h +++ b/contrib/include/wx/gizmos/multicell.h @@ -40,7 +40,7 @@ enum wxResizable { wxNOT_RESIZABLE = 0x00, - wxHORIZENTAL_RESIZABLE = 0x01, + wxHORIZONTAL_RESIZABLE = 0x01, wxVERTICAL_RESIZABLE = 0x10, wxRESIZABLE = 0x11 }; diff --git a/contrib/include/wx/ogl/basic.h b/contrib/include/wx/ogl/basic.h index 30c23cea36..eeaead4b10 100644 --- a/contrib/include/wx/ogl/basic.h +++ b/contrib/include/wx/ogl/basic.h @@ -22,11 +22,6 @@ #define DEFAULT_MOUSE_TOLERANCE 3 #endif -// Edit these lines if you positively don't want PROLOGIO support -#ifndef PROLOGIO -#define PROLOGIO -#endif - // Key identifiers #define KEY_SHIFT 1 #define KEY_CTRL 2 @@ -110,7 +105,7 @@ class wxControlPoint; class wxShapeRegion; class wxShape; -#ifdef PROLOGIO +#if wxUSE_PROLOGIO class WXDLLEXPORT wxExpr; class WXDLLEXPORT wxExprDatabase; #endif @@ -358,7 +353,7 @@ class wxShape: public wxShapeEvtHandler virtual int GetRegionId(const wxString& name); // Construct names for regions, unique even for children of a composite. - virtual void NameRegions(const wxString& parentName = ""); + virtual void NameRegions(const wxString& parentName = wxEmptyString); // Get list of regions inline wxList& GetRegions() const { return (wxList&) m_regions; } @@ -381,7 +376,7 @@ class wxShape: public wxShapeEvtHandler virtual void ClearText(int regionId = 0); void RemoveLine(wxLineShape *line); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO // I/O virtual void WriteAttributes(wxExpr *clause); virtual void ReadAttributes(wxExpr *clause); @@ -613,7 +608,7 @@ class wxPolygonShape: public wxShape // Recalculates the centre of the polygon virtual void CalculatePolygonCentre(); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); #endif @@ -652,7 +647,7 @@ class wxRectangleShape: public wxShape void SetSize(double x, double y, bool recursive = TRUE); void SetCornerRadius(double rad); // If > 0, rounded corners -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); #endif @@ -682,8 +677,8 @@ class wxTextShape: public wxRectangleShape void OnDraw(wxDC& dc); -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); +#if wxUSE_PROLOGIO + void WriteAttributes(wxExpr *clause); #endif // Does the copying for this object @@ -704,7 +699,7 @@ class wxEllipseShape: public wxShape void OnDraw(wxDC& dc); void SetSize(double x, double y, bool recursive = TRUE); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); #endif diff --git a/contrib/include/wx/ogl/basicp.h b/contrib/include/wx/ogl/basicp.h index fddc8732ac..c0927c0c17 100644 --- a/contrib/include/wx/ogl/basicp.h +++ b/contrib/include/wx/ogl/basicp.h @@ -22,7 +22,7 @@ class wxShapeTextLine: public wxObject { DECLARE_DYNAMIC_CLASS(wxShapeTextLine) public: - wxShapeTextLine(double the_x = 0.0, double the_y = 0.0, const wxString& the_line = ""); + wxShapeTextLine(double the_x = 0.0, double the_y = 0.0, const wxString& the_line = wxEmptyString); ~wxShapeTextLine(); inline double GetX() const { return m_x; } @@ -136,7 +136,8 @@ class wxShapeRegion: public wxObject ~wxShapeRegion(); // Accessors - inline void SetText(const wxString& s) { m_regionText = s; } + inline void SetText(const wxString& s) + { m_regionText = s; m_formattedText.Append(new wxShapeTextLine(0,0,s));} void SetFont(wxFont *f); void SetMinSize(double w, double h); void SetSize(double w, double h); diff --git a/contrib/include/wx/ogl/bmpshape.h b/contrib/include/wx/ogl/bmpshape.h index 1b56477550..5389351fe4 100644 --- a/contrib/include/wx/ogl/bmpshape.h +++ b/contrib/include/wx/ogl/bmpshape.h @@ -27,7 +27,7 @@ class wxBitmapShape: public wxRectangleShape void OnDraw(wxDC& dc); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO // I/O void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); diff --git a/contrib/include/wx/ogl/composit.h b/contrib/include/wx/ogl/composit.h index fc373fe505..618629d4ff 100644 --- a/contrib/include/wx/ogl/composit.h +++ b/contrib/include/wx/ogl/composit.h @@ -77,7 +77,7 @@ public: // Calculates size and position of composite object based on children void CalculateSize(); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); // In case the object has constraints it needs to read in in a different pass @@ -152,7 +152,7 @@ class wxDivisionShape: public wxCompositeShape void MakeMandatoryControlPoints(); void ResetMandatoryControlPoints(); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); #endif diff --git a/contrib/include/wx/ogl/constrnt.h b/contrib/include/wx/ogl/constrnt.h index b70bd2f32f..bd0616e491 100644 --- a/contrib/include/wx/ogl/constrnt.h +++ b/contrib/include/wx/ogl/constrnt.h @@ -25,7 +25,8 @@ class wxOGLConstraintType: public wxObject { DECLARE_DYNAMIC_CLASS(wxOGLConstraintType) public: - wxOGLConstraintType(int type = 0, const wxString& name = "", const wxString& phrase = ""); + wxOGLConstraintType(int type = 0, const wxString& name = wxEmptyString, + const wxString& phrase = wxEmptyString); ~wxOGLConstraintType(); public: @@ -60,8 +61,10 @@ class wxOGLConstraint: public wxObject { DECLARE_DYNAMIC_CLASS(wxOGLConstraint) public: - wxOGLConstraint() { m_xSpacing = 0.0; m_ySpacing = 0.0; m_constraintType = 0; m_constraintName = ""; m_constraintId = 0; - m_constrainingObject = NULL; } + wxOGLConstraint() { + m_xSpacing = 0.0; m_ySpacing = 0.0; m_constraintType = 0; + m_constraintName = wxEmptyString; m_constraintId = 0; + m_constrainingObject = NULL; } wxOGLConstraint(int type, wxShape *constraining, wxList& constrained); ~wxOGLConstraint(); diff --git a/contrib/include/wx/ogl/divided.h b/contrib/include/wx/ogl/divided.h index a427a63062..6fc733eee3 100644 --- a/contrib/include/wx/ogl/divided.h +++ b/contrib/include/wx/ogl/divided.h @@ -46,7 +46,7 @@ class wxDividedShape: public wxRectangleShape void MakeMandatoryControlPoints(); void ResetMandatoryControlPoints(); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); #endif diff --git a/contrib/include/wx/ogl/drawn.h b/contrib/include/wx/ogl/drawn.h index 4bc00f91d3..dd7ba01ffd 100644 --- a/contrib/include/wx/ogl/drawn.h +++ b/contrib/include/wx/ogl/drawn.h @@ -32,7 +32,7 @@ class wxPseudoMetaFile: public wxObject void Draw(wxDC& dc, double xoffset, double yoffset); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause, int whichAngle); void ReadAttributes(wxExpr *clause, int whichAngle); #endif @@ -48,7 +48,7 @@ class wxPseudoMetaFile: public wxObject // Rotate about the given axis by theta radians from the x axis. void Rotate(double x, double y, double theta); - bool LoadFromMetaFile(char *filename, double *width, double *height); + bool LoadFromMetaFile(const wxString& filename, double *width, double *height); void GetBounds(double *minX, double *minY, double *maxX, double *maxY); @@ -139,7 +139,7 @@ class wxDrawnShape: public wxRectangleShape void OnDraw(wxDC& dc); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO // I/O void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); @@ -157,7 +157,7 @@ class wxDrawnShape: public wxRectangleShape inline double GetRotation() const { return m_rotation; } void SetSize(double w, double h, bool recursive = TRUE); - bool LoadFromMetaFile(char *filename); + bool LoadFromMetaFile(const wxString& filename); inline void SetSaveToFile(bool save) { m_saveToFile = save; } inline wxPseudoMetaFile& GetMetaFile(int which = 0) const { return (wxPseudoMetaFile&) m_metafiles[which]; } diff --git a/contrib/include/wx/ogl/drawnp.h b/contrib/include/wx/ogl/drawnp.h index 98ca0a8b65..dd083219b8 100644 --- a/contrib/include/wx/ogl/drawnp.h +++ b/contrib/include/wx/ogl/drawnp.h @@ -65,9 +65,10 @@ public: inline virtual void Rotate(double x, double y, double theta, double sinTheta, double cosTheta) {}; virtual void Do(wxDC& dc, double xoffset, double yoffset) = 0; virtual wxDrawOp *Copy(wxPseudoMetaFile *newImage) = 0; +#if wxUSE_PROLOGIO virtual wxExpr *WriteExpr(wxPseudoMetaFile *image) = 0; virtual void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) = 0; - +#endif inline int GetOp() const { return m_op; } // Draw an outline using the current operation. By default, return FALSE (not drawn) @@ -98,8 +99,10 @@ class wxOpSetGDI: public wxDrawOp wxOpSetGDI(int theOp, wxPseudoMetaFile *theImage, int theGdiIndex, int theMode = 0); void Do(wxDC& dc, double xoffset, double yoffset); wxDrawOp *Copy(wxPseudoMetaFile *newImage); +#if wxUSE_PROLOGIO wxExpr *WriteExpr(wxPseudoMetaFile *image); void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); +#endif public: int m_mode; @@ -123,8 +126,10 @@ public: void Scale(double xScale, double yScale); void Translate(double x, double y); wxDrawOp *Copy(wxPseudoMetaFile *newImage); +#if wxUSE_PROLOGIO wxExpr *WriteExpr(wxPseudoMetaFile *image); void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); +#endif public: double m_x1; @@ -149,8 +154,10 @@ class wxOpDraw: public wxDrawOp void Translate(double x, double y); void Rotate(double x, double y, double theta, double sinTheta, double cosTheta); wxDrawOp *Copy(wxPseudoMetaFile *newImage); +#if wxUSE_PROLOGIO wxExpr *WriteExpr(wxPseudoMetaFile *image); void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); +#endif public: double m_x1; @@ -179,8 +186,10 @@ public: void Translate(double x, double y); void Rotate(double x, double y, double theta, double sinTheta, double cosTheta); wxDrawOp *Copy(wxPseudoMetaFile *newImage); +#if wxUSE_PROLOGIO wxExpr *WriteExpr(wxPseudoMetaFile *image); void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); +#endif // Draw an outline using the current operation. virtual bool OnDrawOutline(wxDC& dc, double x, double y, double w, double h, diff --git a/contrib/include/wx/ogl/lines.h b/contrib/include/wx/ogl/lines.h index 0fb141ea98..d274c88f0b 100644 --- a/contrib/include/wx/ogl/lines.h +++ b/contrib/include/wx/ogl/lines.h @@ -51,7 +51,7 @@ class wxArrowHead: public wxObject DECLARE_DYNAMIC_CLASS(wxArrowHead) public: - wxArrowHead(WXTYPE type = 0, int end = 0, double size = 0.0, double dist = 0.0, const wxString& name = "", wxPseudoMetaFile *mf = NULL, + wxArrowHead(WXTYPE type = 0, int end = 0, double size = 0.0, double dist = 0.0, const wxString& name = wxEmptyString, wxPseudoMetaFile *mf = NULL, long arrowId = -1); ~wxArrowHead(); wxArrowHead(wxArrowHead& toCopy); @@ -188,7 +188,7 @@ class wxLineShape: public wxShape bool HitTest(double x, double y, int *attachment, double *distance); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO // I/O virtual void WriteAttributes(wxExpr *clause); virtual void ReadAttributes(wxExpr *clause); @@ -210,8 +210,9 @@ class wxLineShape: public wxShape // Add an arrowhead. wxArrowHead *AddArrow(WXTYPE type, int end = ARROW_POSITION_END, - double arrowSize = 10.0, double xOffset = 0.0, const wxString& name = "", - wxPseudoMetaFile *mf = NULL, long arrowId = -1); + double arrowSize = 10.0, double xOffset = 0.0, + const wxString& name = wxEmptyString, + wxPseudoMetaFile *mf = NULL, long arrowId = -1); // Add an arrowhead in the position indicated by the reference // list of arrowheads, which contains all legal arrowheads for this diff --git a/contrib/include/wx/ogl/mfutils.h b/contrib/include/wx/ogl/mfutils.h index 27ceb4b618..7e8a6e6a8a 100644 --- a/contrib/include/wx/ogl/mfutils.h +++ b/contrib/include/wx/ogl/mfutils.h @@ -195,7 +195,7 @@ class wxXMetaFile: public wxObject wxList metaRecords; wxList gdiObjects; // List of wxMetaRecord objects created with Create..., // referenced by position in list by SelectObject - wxXMetaFile(char *file = NULL); + wxXMetaFile(const wxChar* file = NULL); ~wxXMetaFile(void); // After this is called, the metafile cannot be used for anything @@ -204,7 +204,7 @@ class wxXMetaFile: public wxObject bool Play(wxDC *dc); inline bool Ok(void) const { return ok; } - bool ReadFile(char *file); + bool ReadFile(const wxChar *file); }; #endif diff --git a/contrib/include/wx/ogl/ogldiag.h b/contrib/include/wx/ogl/ogldiag.h index afe7db18c4..7a593f2466 100644 --- a/contrib/include/wx/ogl/ogldiag.h +++ b/contrib/include/wx/ogl/ogldiag.h @@ -67,7 +67,7 @@ public: // Make sure all text that should be centred, is centred. void RecentreAll(wxDC& dc); -#ifdef PROLOGIO +#if wxUSE_PROLOGIO virtual bool SaveFile(const wxString& filename); virtual bool LoadFile(const wxString& filename); diff --git a/contrib/include/wx/stc/stc.h b/contrib/include/wx/stc/stc.h index 640eac8baf..096949085a 100644 --- a/contrib/include/wx/stc/stc.h +++ b/contrib/include/wx/stc/stc.h @@ -24,6 +24,30 @@ #include #include +#ifndef SWIG +/* + * If we're using wx in Dynamic Library format do we + * want wxStyledTextCtrl to be in DLL form as well? + */ +#if defined(WXUSINGDLL) && \ + (defined(WXMAKING_STC_DLL) || defined(WXUSING_STC_DLL)) + +#if defined(WXMAKING_STC_DLL) + // When building the DLL WXSTC_DECLSPEC exports classes +# define WXSTC_DECLSPEC WXEXPORT +#elif defined(WXUSING_STC_DLL) + // When using the DLL WXSTC_DECLSPEC imports classes +# define WXSTC_DECLSPEC WXIMPORT +#endif // defined(WXBUILD_STC_DLL) + +#else +// When building the static library nullify the effect of WXSTC_DECLSPEC +#define WXSTC_DECLSPEC +#endif // WXUSINGDLL && (WXMAKING_STC_DLL || WXUSING_STC_DLL) + +#endif // SWIG + + //---------------------------------------------------------------------- // Should a wxPopupWindow be used for the call tips and autocomplete windows? @@ -43,12 +67,6 @@ #define wxSTC_START 2000 #define wxSTC_OPTIONAL_START 3000 #define wxSTC_LEXER_START 4000 - -// Redoes the next action on the undo history. -#define wxSTC_CMD_REDO 2011 - -// Select all the text in the document. -#define wxSTC_CMD_SELECTALL 2013 #define wxSTC_WS_INVISIBLE 0 #define wxSTC_WS_VISIBLEALWAYS 1 #define wxSTC_WS_VISIBLEAFTERINDENT 2 @@ -167,18 +185,6 @@ #define wxSTC_FIND_MATCHCASE 4 #define wxSTC_FIND_WORDSTART 0x00100000 #define wxSTC_FIND_REGEXP 0x00200000 - -// Undo one action in the undo history. -#define wxSTC_CMD_UNDO 2176 - -// Cut the selection to the clipboard. -#define wxSTC_CMD_CUT 2177 - -// Copy the selection to the clipboard. -#define wxSTC_CMD_COPY 2178 - -// Paste the contents of the clipboard into the document replacing the selection. -#define wxSTC_CMD_PASTE 2179 #define wxSTC_FOLDLEVELBASE 0x400 #define wxSTC_FOLDLEVELWHITEFLAG 0x1000 #define wxSTC_FOLDLEVELHEADERFLAG 0x2000 @@ -190,158 +196,6 @@ #define wxSTC_CACHE_CARET 1 #define wxSTC_CACHE_PAGE 2 #define wxSTC_CACHE_DOCUMENT 3 - -// Move caret down one line. -#define wxSTC_CMD_LINEDOWN 2300 - -// Move caret down one line extending selection to new caret position. -#define wxSTC_CMD_LINEDOWNEXTEND 2301 - -// Move caret up one line. -#define wxSTC_CMD_LINEUP 2302 - -// Move caret up one line extending selection to new caret position. -#define wxSTC_CMD_LINEUPEXTEND 2303 - -// Move caret left one character. -#define wxSTC_CMD_CHARLEFT 2304 - -// Move caret left one character extending selection to new caret position. -#define wxSTC_CMD_CHARLEFTEXTEND 2305 - -// Move caret right one character. -#define wxSTC_CMD_CHARRIGHT 2306 - -// Move caret right one character extending selection to new caret position. -#define wxSTC_CMD_CHARRIGHTEXTEND 2307 - -// Move caret left one word. -#define wxSTC_CMD_WORDLEFT 2308 - -// Move caret left one word extending selection to new caret position. -#define wxSTC_CMD_WORDLEFTEXTEND 2309 - -// Move caret right one word. -#define wxSTC_CMD_WORDRIGHT 2310 - -// Move caret right one word extending selection to new caret position. -#define wxSTC_CMD_WORDRIGHTEXTEND 2311 - -// Move caret to first position on line. -#define wxSTC_CMD_HOME 2312 - -// Move caret to first position on line extending selection to new caret position. -#define wxSTC_CMD_HOMEEXTEND 2313 - -// Move caret to last position on line. -#define wxSTC_CMD_LINEEND 2314 - -// Move caret to last position on line extending selection to new caret position. -#define wxSTC_CMD_LINEENDEXTEND 2315 - -// Move caret to first position in document. -#define wxSTC_CMD_DOCUMENTSTART 2316 - -// Move caret to first position in document extending selection to new caret position. -#define wxSTC_CMD_DOCUMENTSTARTEXTEND 2317 - -// Move caret to last position in document. -#define wxSTC_CMD_DOCUMENTEND 2318 - -// Move caret to last position in document extending selection to new caret position. -#define wxSTC_CMD_DOCUMENTENDEXTEND 2319 - -// Move caret one page up. -#define wxSTC_CMD_PAGEUP 2320 - -// Move caret one page up extending selection to new caret position. -#define wxSTC_CMD_PAGEUPEXTEND 2321 - -// Move caret one page down. -#define wxSTC_CMD_PAGEDOWN 2322 - -// Move caret one page down extending selection to new caret position. -#define wxSTC_CMD_PAGEDOWNEXTEND 2323 - -// Switch from insert to overtype mode or the reverse. -#define wxSTC_CMD_EDITTOGGLEOVERTYPE 2324 - -// Cancel any modes such as call tip or auto-completion list display. -#define wxSTC_CMD_CANCEL 2325 - -// Delete the selection or if no selection, the character before the caret. -#define wxSTC_CMD_DELETEBACK 2326 - -// If selection is empty or all on one line replace the selection with a tab character. -// If more than one line selected, indent the lines. -#define wxSTC_CMD_TAB 2327 - -// Dedent the selected lines. -#define wxSTC_CMD_BACKTAB 2328 - -// Insert a new line, may use a CRLF, CR or LF depending on EOL mode. -#define wxSTC_CMD_NEWLINE 2329 - -// Insert a Form Feed character. -#define wxSTC_CMD_FORMFEED 2330 - -// Move caret to before first visible character on line. -// If already there move to first character on line. -#define wxSTC_CMD_VCHOME 2331 - -// Like VCHome but extending selection to new caret position. -#define wxSTC_CMD_VCHOMEEXTEND 2332 - -// Magnify the displayed text by increasing the sizes by 1 point. -#define wxSTC_CMD_ZOOMIN 2333 - -// Make the displayed text smaller by decreasing the sizes by 1 point. -#define wxSTC_CMD_ZOOMOUT 2334 - -// Delete the word to the left of the caret. -#define wxSTC_CMD_DELWORDLEFT 2335 - -// Delete the word to the right of the caret. -#define wxSTC_CMD_DELWORDRIGHT 2336 - -// Cut the line containing the caret. -#define wxSTC_CMD_LINECUT 2337 - -// Delete the line containing the caret. -#define wxSTC_CMD_LINEDELETE 2338 - -// Switch the current line with the previous. -#define wxSTC_CMD_LINETRANSPOSE 2339 - -// Transform the selection to lower case. -#define wxSTC_CMD_LOWERCASE 2340 - -// Transform the selection to upper case. -#define wxSTC_CMD_UPPERCASE 2341 - -// Scroll the document down, keeping the caret visible. -#define wxSTC_CMD_LINESCROLLDOWN 2342 - -// Scroll the document up, keeping the caret visible. -#define wxSTC_CMD_LINESCROLLUP 2343 - -// Delete the selection or if no selection, the character before the caret. -// Will not delete the character before at the start of a line. -#define wxSTC_CMD_DELETEBACKNOTLINE 2344 - -// Move caret to first position on display line. -#define wxSTC_CMD_HOMEDISPLAY 2345 - -// Move caret to first position on display line extending selection to -// new caret position. -#define wxSTC_CMD_HOMEDISPLAYEXTEND 2346 - -// Move caret to last position on display line. -#define wxSTC_CMD_LINEENDDISPLAY 2347 - -// Move caret to last position on display line extending selection to new -// caret position. -#define wxSTC_CMD_LINEENDDISPLAYEXTEND 2348 #define wxSTC_EDGE_NONE 0 #define wxSTC_EDGE_LINE 1 #define wxSTC_EDGE_BACKGROUND 2 @@ -866,6 +720,204 @@ #define wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR 18 #define wxSTC_SCRIPTOL_COMMENTBASIC 19 + +//----------------------------------------- +// Commands that can be bound to keystrokes + +// Redoes the next action on the undo history. +#define wxSTC_CMD_REDO 2011 + +// Select all the text in the document. +#define wxSTC_CMD_SELECTALL 2013 + +// Undo one action in the undo history. +#define wxSTC_CMD_UNDO 2176 + +// Cut the selection to the clipboard. +#define wxSTC_CMD_CUT 2177 + +// Copy the selection to the clipboard. +#define wxSTC_CMD_COPY 2178 + +// Paste the contents of the clipboard into the document replacing the selection. +#define wxSTC_CMD_PASTE 2179 + +// Clear the selection. +#define wxSTC_CMD_CLEAR 2180 + +// Move caret down one line. +#define wxSTC_CMD_LINEDOWN 2300 + +// Move caret down one line extending selection to new caret position. +#define wxSTC_CMD_LINEDOWNEXTEND 2301 + +// Move caret up one line. +#define wxSTC_CMD_LINEUP 2302 + +// Move caret up one line extending selection to new caret position. +#define wxSTC_CMD_LINEUPEXTEND 2303 + +// Move caret left one character. +#define wxSTC_CMD_CHARLEFT 2304 + +// Move caret left one character extending selection to new caret position. +#define wxSTC_CMD_CHARLEFTEXTEND 2305 + +// Move caret right one character. +#define wxSTC_CMD_CHARRIGHT 2306 + +// Move caret right one character extending selection to new caret position. +#define wxSTC_CMD_CHARRIGHTEXTEND 2307 + +// Move caret left one word. +#define wxSTC_CMD_WORDLEFT 2308 + +// Move caret left one word extending selection to new caret position. +#define wxSTC_CMD_WORDLEFTEXTEND 2309 + +// Move caret right one word. +#define wxSTC_CMD_WORDRIGHT 2310 + +// Move caret right one word extending selection to new caret position. +#define wxSTC_CMD_WORDRIGHTEXTEND 2311 + +// Move caret to first position on line. +#define wxSTC_CMD_HOME 2312 + +// Move caret to first position on line extending selection to new caret position. +#define wxSTC_CMD_HOMEEXTEND 2313 + +// Move caret to last position on line. +#define wxSTC_CMD_LINEEND 2314 + +// Move caret to last position on line extending selection to new caret position. +#define wxSTC_CMD_LINEENDEXTEND 2315 + +// Move caret to first position in document. +#define wxSTC_CMD_DOCUMENTSTART 2316 + +// Move caret to first position in document extending selection to new caret position. +#define wxSTC_CMD_DOCUMENTSTARTEXTEND 2317 + +// Move caret to last position in document. +#define wxSTC_CMD_DOCUMENTEND 2318 + +// Move caret to last position in document extending selection to new caret position. +#define wxSTC_CMD_DOCUMENTENDEXTEND 2319 + +// Move caret one page up. +#define wxSTC_CMD_PAGEUP 2320 + +// Move caret one page up extending selection to new caret position. +#define wxSTC_CMD_PAGEUPEXTEND 2321 + +// Move caret one page down. +#define wxSTC_CMD_PAGEDOWN 2322 + +// Move caret one page down extending selection to new caret position. +#define wxSTC_CMD_PAGEDOWNEXTEND 2323 + +// Switch from insert to overtype mode or the reverse. +#define wxSTC_CMD_EDITTOGGLEOVERTYPE 2324 + +// Cancel any modes such as call tip or auto-completion list display. +#define wxSTC_CMD_CANCEL 2325 + +// Delete the selection or if no selection, the character before the caret. +#define wxSTC_CMD_DELETEBACK 2326 + +// If selection is empty or all on one line replace the selection with a tab character. +// If more than one line selected, indent the lines. +#define wxSTC_CMD_TAB 2327 + +// Dedent the selected lines. +#define wxSTC_CMD_BACKTAB 2328 + +// Insert a new line, may use a CRLF, CR or LF depending on EOL mode. +#define wxSTC_CMD_NEWLINE 2329 + +// Insert a Form Feed character. +#define wxSTC_CMD_FORMFEED 2330 + +// Move caret to before first visible character on line. +// If already there move to first character on line. +#define wxSTC_CMD_VCHOME 2331 + +// Like VCHome but extending selection to new caret position. +#define wxSTC_CMD_VCHOMEEXTEND 2332 + +// Magnify the displayed text by increasing the sizes by 1 point. +#define wxSTC_CMD_ZOOMIN 2333 + +// Make the displayed text smaller by decreasing the sizes by 1 point. +#define wxSTC_CMD_ZOOMOUT 2334 + +// Delete the word to the left of the caret. +#define wxSTC_CMD_DELWORDLEFT 2335 + +// Delete the word to the right of the caret. +#define wxSTC_CMD_DELWORDRIGHT 2336 + +// Cut the line containing the caret. +#define wxSTC_CMD_LINECUT 2337 + +// Delete the line containing the caret. +#define wxSTC_CMD_LINEDELETE 2338 + +// Switch the current line with the previous. +#define wxSTC_CMD_LINETRANSPOSE 2339 + +// Transform the selection to lower case. +#define wxSTC_CMD_LOWERCASE 2340 + +// Transform the selection to upper case. +#define wxSTC_CMD_UPPERCASE 2341 + +// Scroll the document down, keeping the caret visible. +#define wxSTC_CMD_LINESCROLLDOWN 2342 + +// Scroll the document up, keeping the caret visible. +#define wxSTC_CMD_LINESCROLLUP 2343 + +// Delete the selection or if no selection, the character before the caret. +// Will not delete the character before at the start of a line. +#define wxSTC_CMD_DELETEBACKNOTLINE 2344 + +// Move caret to first position on display line. +#define wxSTC_CMD_HOMEDISPLAY 2345 + +// Move caret to first position on display line extending selection to +// new caret position. +#define wxSTC_CMD_HOMEDISPLAYEXTEND 2346 + +// Move caret to last position on display line. +#define wxSTC_CMD_LINEENDDISPLAY 2347 + +// Move caret to last position on display line extending selection to new +// caret position. +#define wxSTC_CMD_LINEENDDISPLAYEXTEND 2348 + +// Move to the previous change in capitalisation. +#define wxSTC_CMD_WORDPARTLEFT 2390 + +// Move to the previous change in capitalisation extending selection +// to new caret position. +#define wxSTC_CMD_WORDPARTLEFTEXTEND 2391 + +// Move to the change next in capitalisation. +#define wxSTC_CMD_WORDPARTRIGHT 2392 + +// Move to the next change in capitalisation extending selection +// to new caret position. +#define wxSTC_CMD_WORDPARTRIGHTEXTEND 2393 + +// Delete back from the current position to the start of the line. +#define wxSTC_CMD_DELLINELEFT 2395 + +// Delete forwards from the current position to the end of the line. +#define wxSTC_CMD_DELLINERIGHT 2396 + + // END of generated section //---------------------------------------------------------------------- @@ -873,8 +925,11 @@ class ScintillaWX; // forward declare class WordList; struct SCNotification; - -extern const wxChar* wxSTCNameStr; +#ifndef SWIG +extern WXSTC_DECLSPEC const wxChar* wxSTCNameStr; +class WXSTC_DECLSPEC wxStyledTextCtrl; +class WXSTC_DECLSPEC wxStyledTextEvent; +#endif //---------------------------------------------------------------------- @@ -1644,14 +1699,14 @@ public: // Move caret to first position on display line. void HomeDisplay(); - // Move caret to first position on display line extending selection to + // Move caret to first position on display line extending selection to // new caret position. void HomeDisplayExtend(); // Move caret to last position on display line. void LineEndDisplay(); - // Move caret to last position on display line extending selection to new + // Move caret to last position on display line extending selection to new // caret position. void LineEndDisplayExtend(); @@ -1933,6 +1988,7 @@ private: void OnMouseMove(wxMouseEvent& evt); void OnMouseLeftUp(wxMouseEvent& evt); void OnMouseRightUp(wxMouseEvent& evt); + void OnMouseMiddleUp(wxMouseEvent& evt); void OnContextMenu(wxContextMenuEvent& evt); void OnMouseWheel(wxMouseEvent& evt); void OnChar(wxKeyEvent& evt); @@ -1968,7 +2024,7 @@ private: //---------------------------------------------------------------------- -// SWIG can't handle "#if" type of conditionals, onlu "#ifdef" +// SWIG can't handle "#if" type of conditionals, only "#ifdef" #ifdef SWIG #define STC_USE_DND 1 #else diff --git a/contrib/include/wx/xrc/xh_all.h b/contrib/include/wx/xrc/xh_all.h index 5382b6ffb0..2ac1db392c 100644 --- a/contrib/include/wx/xrc/xh_all.h +++ b/contrib/include/wx/xrc/xh_all.h @@ -46,5 +46,6 @@ #include "wx/xrc/xh_unkwn.h" #include "wx/xrc/xh_gdctl.h" #include "wx/xrc/xh_frame.h" +#include "wx/xrc/xh_scwin.h" #endif // _WX_XMLRES_H_ diff --git a/contrib/include/wx/xrc/xh_scwin.h b/contrib/include/wx/xrc/xh_scwin.h new file mode 100644 index 0000000000..1befc41215 --- /dev/null +++ b/contrib/include/wx/xrc/xh_scwin.h @@ -0,0 +1,32 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_scwin.h +// Purpose: XML resource handler for wxScrolledWindow +// Author: Vaclav Slavik +// Created: 2002/10/18 +// RCS-ID: $Id$ +// Copyright: (c) 2002 Vaclav Slavik +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_XH_SCWIN_H_ +#define _WX_XH_SCWIN_H_ + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma interface "xh_scwin.h" +#endif + +#include "wx/xrc/xmlres.h" +#include "wx/defs.h" + + + +class WXXMLDLLEXPORT wxScrolledWindowXmlHandler : public wxXmlResourceHandler +{ +public: + wxScrolledWindowXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + + +#endif // _WX_XH_SCWIN_H_ diff --git a/contrib/include/wx/xrc/xml.h b/contrib/include/wx/xrc/xml.h index d7b636c0df..c3122942e4 100644 --- a/contrib/include/wx/xrc/xml.h +++ b/contrib/include/wx/xrc/xml.h @@ -164,7 +164,7 @@ private: class WXXMLDLLEXPORT wxXmlDocument : public wxObject { public: - wxXmlDocument() : wxObject(), m_version(wxT("1.0")), m_root(NULL) {} + wxXmlDocument(); wxXmlDocument(const wxString& filename, const wxString& encoding = wxT("UTF-8")); wxXmlDocument(wxInputStream& stream, @@ -180,7 +180,7 @@ public: const wxString& encoding = wxT("UTF-8")); bool Load(wxInputStream& stream, const wxString& encoding = wxT("UTF-8")); - + // Saves document as .xml file. bool Save(const wxString& filename) const; bool Save(wxOutputStream& stream) const; @@ -193,7 +193,7 @@ public: // Returns version of document (may be empty). wxString GetVersion() const { return m_version; } // Returns encoding of document (may be empty). - // Note: this is the encoding original fail was saved in, *not* the + // Note: this is the encoding original file was saved in, *not* the // encoding of in-memory representation! wxString GetFileEncoding() const { return m_fileEncoding; } @@ -207,6 +207,7 @@ public: // (same as passed to Load or ctor, defaults to UTF-8). // NB: this is meaningless in Unicode build where data are stored as wchar_t* wxString GetEncoding() const { return m_encoding; } + void SetEncoding(const wxString& enc) { m_encoding = enc; } #endif private: diff --git a/contrib/include/wx/xrc/xmlres.h b/contrib/include/wx/xrc/xmlres.h index ca37a9cfa7..5f4a800261 100644 --- a/contrib/include/wx/xrc/xmlres.h +++ b/contrib/include/wx/xrc/xmlres.h @@ -37,6 +37,9 @@ class WXDLLEXPORT wxFrame; class WXDLLEXPORT wxToolBar; class WXXMLDLLEXPORT wxXmlResourceHandler; +class WXXMLDLLEXPORT wxXmlSubclassFactory; +class WXXMLDLLEXPORT wxXmlSubclassFactoriesList; +class wxXmlResourceModule; // These macros indicate current version of XML resources (this information is @@ -55,7 +58,7 @@ class WXXMLDLLEXPORT wxXmlResourceHandler; #define WX_XMLRES_CURRENT_VERSION_MINOR 3 #define WX_XMLRES_CURRENT_VERSION_RELEASE 0 #define WX_XMLRES_CURRENT_VERSION_REVISION 1 -#define WX_XMLRES_CURRENT_VERSION_STRING "2.3.0.1" +#define WX_XMLRES_CURRENT_VERSION_STRING wxT("2.3.0.1") #define WX_XMLRES_CURRENT_VERSION \ (WX_XMLRES_CURRENT_VERSION_MAJOR * 256*256*256 + \ @@ -133,6 +136,11 @@ public: // Removes all handlers void ClearHandlers(); + + // Registers subclasses factory for use in XRC. This function is not meant + // for public use, please see the comment above wxXmlSubclassFactory + // definition. + static void AddSubclassFactory(wxXmlSubclassFactory *factory); // Loads menu from resource. Returns NULL on failure. wxMenu *LoadMenu(const wxString& name); @@ -216,7 +224,9 @@ public: static wxXmlResource *Set(wxXmlResource *res); // Returns flags, which may be a bitlist of wxXRC_USE_LOCALE and wxXRC_NO_SUBCLASSING. - int GetFlags() { return m_flags; } + int GetFlags() const { return m_flags; } + // Set flags after construction. + void SetFlags(int flags) { m_flags = flags; } protected: // Scans the resources list for unloaded files and loads them. Also reloads @@ -244,6 +254,9 @@ private: #endif friend class wxXmlResourceHandler; + friend class wxXmlResourceModule; + + static wxXmlSubclassFactoriesList *ms_subclassFactories; // singleton instance: static wxXmlResource *ms_instance; @@ -438,6 +451,20 @@ protected: void wxXmlInitResourceModule(); +// This class is used to create instances of XRC "object" nodes with "subclass" +// property. It is _not_ supposed to be used by XRC users, you should instead +// register your subclasses via wxWindows' RTTI mechanism. This class is useful +// only for language bindings developer who need a way to implement subclassing +// in wxWindows ports that don't support wxRTTI (e.g. wxPython). +class WXXMLDLLEXPORT wxXmlSubclassFactory +{ +public: + // Try to create instance of given class and return it, return NULL on failure: + virtual wxObject *Create(const wxString& className) = 0; + virtual ~wxXmlSubclassFactory() {} +}; + + /* ------------------------------------------------------------------------- Backward compatibility macros. Do *NOT* use, they may disappear in future versions of the XRC library! diff --git a/contrib/samples/animate/AniTestVC.dsp b/contrib/samples/animate/AniTestVC.dsp index 73f3d56884..81fb9e86e6 100644 --- a/contrib/samples/animate/AniTestVC.dsp +++ b/contrib/samples/animate/AniTestVC.dsp @@ -111,7 +111,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib animd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/anitest.exe" /pdbtype:sept /libpath:"../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib animd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/anitest.exe" /pdbtype:sept /libpath:"../../../lib" !ELSEIF "$(CFG)" == "AniTestVC - Win32 Release DLL" @@ -138,7 +138,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib anim.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/anitest.exe" /libpath:"../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib anim.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/anitest.exe" /libpath:"../../../lib" !ELSEIF "$(CFG)" == "AniTestVC - Win32 UnivRelease" diff --git a/contrib/samples/animate/Makefile.in b/contrib/samples/animate/Makefile.in index d645e9ad99..29bf8fb02f 100644 --- a/contrib/samples/animate/Makefile.in +++ b/contrib/samples/animate/Makefile.in @@ -17,7 +17,7 @@ PROGRAM=anitest OBJECTS=$(PROGRAM).o -APPEXTRALIBS=$(top_builddir)/lib/libwx_anim.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_anim-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/animate/makefile.wat b/contrib/samples/animate/makefile.wat index de9f03d959..bb4b959669 100644 --- a/contrib/samples/animate/makefile.wat +++ b/contrib/samples/animate/makefile.wat @@ -6,9 +6,12 @@ # WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\samples\animate PROGRAM = anitest -OBJECTS = $(PROGRAM).obj animate.obj +EXTRALIBS = $(WXDIR)\lib\anim_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/samples/applet/Makefile.in b/contrib/samples/applet/Makefile.in index 08d399dcb9..4300fb618c 100644 --- a/contrib/samples/applet/Makefile.in +++ b/contrib/samples/applet/Makefile.in @@ -19,7 +19,7 @@ DATAFILES=about.html index.html OBJECTS=applet.o dialogs_wdr.o monitorapplet.o combobox.o -APPEXTRALIBS=$(top_builddir)/lib/libapplet.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_applet-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/canvas/simple/Makefile.in b/contrib/samples/canvas/simple/Makefile.in index 1618e568a5..b92c3904af 100644 --- a/contrib/samples/canvas/simple/Makefile.in +++ b/contrib/samples/canvas/simple/Makefile.in @@ -17,7 +17,7 @@ PROGRAM=simple OBJECTS=simple.o -APPEXTRALIBS=$(top_builddir)/lib/libcanvas.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_canvas-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/canvas/simple/SimpleVC.dsp b/contrib/samples/canvas/simple/SimpleVC.dsp index 4410a5d28b..31701add96 100644 --- a/contrib/samples/canvas/simple/SimpleVC.dsp +++ b/contrib/samples/canvas/simple/SimpleVC.dsp @@ -109,7 +109,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib canvasd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/simple.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib canvasd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/simple.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "SimpleVC - Win32 Release DLL" @@ -136,7 +136,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib canvas.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/simple.exe" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib canvas.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/simple.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/canvas/test/Makefile.in b/contrib/samples/canvas/test/Makefile.in index 500d2bdd8a..081537852d 100644 --- a/contrib/samples/canvas/test/Makefile.in +++ b/contrib/samples/canvas/test/Makefile.in @@ -19,7 +19,7 @@ OBJECTS=test.o DATAFILES = pat4.bmp pat36.bmp -APPEXTRALIBS=$(top_builddir)/lib/libcanvas.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_canvas-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/canvas/test/TestVC.dsp b/contrib/samples/canvas/test/TestVC.dsp index e5aeae3652..e8987ea843 100644 --- a/contrib/samples/canvas/test/TestVC.dsp +++ b/contrib/samples/canvas/test/TestVC.dsp @@ -109,7 +109,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib canvasd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/test.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib canvasd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/test.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "TestVC - Win32 Release DLL" @@ -136,7 +136,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib canvas.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/test.exe" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib canvas.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/test.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/fl/fl_demo1/Makefile.in b/contrib/samples/fl/fl_demo1/Makefile.in index 88f55027f9..83f4fe3496 100644 --- a/contrib/samples/fl/fl_demo1/Makefile.in +++ b/contrib/samples/fl/fl_demo1/Makefile.in @@ -17,7 +17,7 @@ TARGET = fl_demo1 program_dir = contrib/samples/fl/$(TARGET) APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\" -APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS = $(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_fl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ PROGRAM = $(TARGET) OBJECTS = $(TARGET).o diff --git a/contrib/samples/fl/fl_demo1/fl_demo.dsp b/contrib/samples/fl/fl_demo1/fl_demo.dsp index 5b443a2c1b..044652e16c 100644 --- a/contrib/samples/fl/fl_demo1/fl_demo.dsp +++ b/contrib/samples/fl/fl_demo1/fl_demo.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Application" 0x0101 -CFG=fl_demo1 - Win32 Debug +CFG=fl_demo1 - Win32 Debug DLL !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,14 @@ CFG=fl_demo1 - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_demo1 - Win32 Debug" +!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_demo1 - Win32 Debug DLL" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fl_demo1 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "fl_demo1 - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "fl_demo1 - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "fl_demo1 - Win32 Release DLL" (based on "Win32 (x86) Application") !MESSAGE # Begin Project @@ -81,12 +83,68 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +!ELSEIF "$(CFG)" == "fl_demo1 - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdlld" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fldlld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "fl_demo1 - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_DLL" +# PROP BASE Intermediate_Dir "Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /YX /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fldll.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" + !ENDIF # Begin Target # Name "fl_demo1 - Win32 Release" # Name "fl_demo1 - Win32 Debug" +# Name "fl_demo1 - Win32 Debug DLL" +# Name "fl_demo1 - Win32 Release DLL" # Begin Source File SOURCE=.\fl_demo1.cpp @@ -97,6 +155,13 @@ SOURCE=.\fl_demo1.cpp # ADD CPP /Yc"wx/wxprec.h" +!ELSEIF "$(CFG)" == "fl_demo1 - Win32 Debug DLL" + +# ADD BASE CPP /Yc"wx/wxprec.h" +# ADD CPP /Yc"wx/wxprec.h" + +!ELSEIF "$(CFG)" == "fl_demo1 - Win32 Release DLL" + !ENDIF # End Source File diff --git a/contrib/samples/fl/fl_demo1/makefile.vc b/contrib/samples/fl/fl_demo1/makefile.vc index 51eaae55ca..e997c2c79d 100644 --- a/contrib/samples/fl/fl_demo1/makefile.vc +++ b/contrib/samples/fl/fl_demo1/makefile.vc @@ -12,11 +12,25 @@ WXDIR = ..\..\..\.. TARGET = fl_demo1 EXTRAINC = -DBMP_DIR=\"../bitmaps/\" + +!if "$(WXUSING_FL_DLL)" == "1" +# Define WXUSING_FL_DLL so the compiler knows it is set. +EXTRAINC = $(EXTRAINC) -DWXUSING_FL_DLL +# Set to use wxWin in DLL format... +WXUSINGDLL = 1 + +!if "$(FINAL)" == "1" +EXTRALIBS = $(WXDIR)\lib\fldll.lib +!else +EXTRALIBS = $(WXDIR)\lib\fldlld.lib +!endif +!else !if "$(FINAL)" == "1" EXTRALIBS = $(WXDIR)\lib\fl.lib !else EXTRALIBS = $(WXDIR)\lib\fld.lib !endif +!endif PROGRAM = $(TARGET) OBJECTS = $(TARGET).obj diff --git a/contrib/samples/fl/fl_demo2/Makefile.in b/contrib/samples/fl/fl_demo2/Makefile.in index 911f9b5b42..da24607db2 100644 --- a/contrib/samples/fl/fl_demo2/Makefile.in +++ b/contrib/samples/fl/fl_demo2/Makefile.in @@ -17,7 +17,7 @@ TARGET = fl_demo2 program_dir = contrib/samples/fl/$(TARGET) APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\" -APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS = $(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_fl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ PROGRAM = $(TARGET) OBJECTS = $(TARGET).o diff --git a/contrib/samples/fl/fl_demo2/fl_demo.dsp b/contrib/samples/fl/fl_demo2/fl_demo.dsp index a54daca6c2..d784733dbf 100644 --- a/contrib/samples/fl/fl_demo2/fl_demo.dsp +++ b/contrib/samples/fl/fl_demo2/fl_demo.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Application" 0x0101 -CFG=fl_demo2 - Win32 Debug +CFG=fl_demo2 - Win32 Debug DLL !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,14 @@ CFG=fl_demo2 - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_demo2 - Win32 Debug" +!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_demo2 - Win32 Debug DLL" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fl_demo2 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "fl_demo2 - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "fl_demo2 - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "fl_demo2 - Win32 Release DLL" (based on "Win32 (x86) Application") !MESSAGE # Begin Project @@ -81,12 +83,68 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +!ELSEIF "$(CFG)" == "fl_demo2 - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdlld" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fldlld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "fl_demo2 - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_DLL" +# PROP BASE Intermediate_Dir "Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /YX /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fldll.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" + !ENDIF # Begin Target # Name "fl_demo2 - Win32 Release" # Name "fl_demo2 - Win32 Debug" +# Name "fl_demo2 - Win32 Debug DLL" +# Name "fl_demo2 - Win32 Release DLL" # Begin Source File SOURCE=.\fl_demo2.cpp @@ -97,6 +155,13 @@ SOURCE=.\fl_demo2.cpp # ADD CPP /Yc"wx/wxprec.h" +!ELSEIF "$(CFG)" == "fl_demo2 - Win32 Debug DLL" + +# ADD BASE CPP /Yc"wx/wxprec.h" +# ADD CPP /Yc"wx/wxprec.h" + +!ELSEIF "$(CFG)" == "fl_demo2 - Win32 Release DLL" + !ENDIF # End Source File diff --git a/contrib/samples/fl/fl_demo2/makefile.vc b/contrib/samples/fl/fl_demo2/makefile.vc index e05c0d699c..f3414ac254 100644 --- a/contrib/samples/fl/fl_demo2/makefile.vc +++ b/contrib/samples/fl/fl_demo2/makefile.vc @@ -12,11 +12,25 @@ WXDIR = ..\..\..\.. TARGET = fl_demo2 EXTRAINC = -DBMP_DIR=\"../bitmaps/\" + +!if "$(WXUSING_FL_DLL)" == "1" +# Define WXUSING_FL_DLL so the compiler knows it is set. +EXTRAINC = $(EXTRAINC) -DWXUSING_FL_DLL +# Set to use wxWin in DLL format... +WXUSINGDLL = 1 + +!if "$(FINAL)" == "1" +EXTRALIBS = $(WXDIR)\lib\fldll.lib +!else +EXTRALIBS = $(WXDIR)\lib\fldlld.lib +!endif +!else !if "$(FINAL)" == "1" EXTRALIBS = $(WXDIR)\lib\fl.lib !else EXTRALIBS = $(WXDIR)\lib\fld.lib !endif +!endif PROGRAM = $(TARGET) OBJECTS = $(TARGET).obj diff --git a/contrib/samples/fl/fl_sample1/Makefile.in b/contrib/samples/fl/fl_sample1/Makefile.in index 11d671a280..ad507429e4 100644 --- a/contrib/samples/fl/fl_sample1/Makefile.in +++ b/contrib/samples/fl/fl_sample1/Makefile.in @@ -17,7 +17,7 @@ TARGET = fl_sample1 program_dir = contrib/samples/fl/$(TARGET) APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\" -APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS = $(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_fl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ PROGRAM = $(TARGET) OBJECTS = $(TARGET).o diff --git a/contrib/samples/fl/fl_sample1/fl_demo.dsp b/contrib/samples/fl/fl_sample1/fl_demo.dsp index 7f32ffaab0..9d69bc095d 100644 --- a/contrib/samples/fl/fl_sample1/fl_demo.dsp +++ b/contrib/samples/fl/fl_sample1/fl_demo.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Application" 0x0101 -CFG=fl_sample1 - Win32 Debug +CFG=fl_sample1 - Win32 Debug DLL !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,14 @@ CFG=fl_sample1 - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample1 - Win32 Debug" +!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample1 - Win32 Debug DLL" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fl_sample1 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "fl_sample1 - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "fl_sample1 - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "fl_sample1 - Win32 Release DLL" (based on "Win32 (x86) Application") !MESSAGE # Begin Project @@ -81,12 +83,68 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +!ELSEIF "$(CFG)" == "fl_sample1 - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdlld" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fldlld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "fl_sample1 - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_DLL" +# PROP BASE Intermediate_Dir "Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /YX /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fldll.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" + !ENDIF # Begin Target # Name "fl_sample1 - Win32 Release" # Name "fl_sample1 - Win32 Debug" +# Name "fl_sample1 - Win32 Debug DLL" +# Name "fl_sample1 - Win32 Release DLL" # Begin Source File SOURCE=.\fl_sample1.cpp @@ -97,6 +155,13 @@ SOURCE=.\fl_sample1.cpp # ADD CPP /Yc"wx/wxprec.h" +!ELSEIF "$(CFG)" == "fl_sample1 - Win32 Debug DLL" + +# ADD BASE CPP /Yc"wx/wxprec.h" +# ADD CPP /Yc"wx/wxprec.h" + +!ELSEIF "$(CFG)" == "fl_sample1 - Win32 Release DLL" + !ENDIF # End Source File diff --git a/contrib/samples/fl/fl_sample1/makefile.vc b/contrib/samples/fl/fl_sample1/makefile.vc index 50f4d6e26b..fed37595d7 100644 --- a/contrib/samples/fl/fl_sample1/makefile.vc +++ b/contrib/samples/fl/fl_sample1/makefile.vc @@ -12,11 +12,25 @@ WXDIR = ..\..\..\.. TARGET = fl_sample1 EXTRAINC = -DBMP_DIR=\"../bitmaps/\" + +!if "$(WXUSING_FL_DLL)" == "1" +# Define WXUSING_FL_DLL so the compiler knows it is set. +EXTRAINC = $(EXTRAINC) -DWXUSING_FL_DLL +# Set to use wxWin in DLL format... +WXUSINGDLL = 1 + +!if "$(FINAL)" == "1" +EXTRALIBS = $(WXDIR)\lib\fldll.lib +!else +EXTRALIBS = $(WXDIR)\lib\fldlld.lib +!endif +!else !if "$(FINAL)" == "1" EXTRALIBS = $(WXDIR)\lib\fl.lib !else EXTRALIBS = $(WXDIR)\lib\fld.lib !endif +!endif PROGRAM = $(TARGET) OBJECTS = $(TARGET).obj diff --git a/contrib/samples/fl/fl_sample2/Makefile.in b/contrib/samples/fl/fl_sample2/Makefile.in index 85b50b407c..6a863be5a1 100644 --- a/contrib/samples/fl/fl_sample2/Makefile.in +++ b/contrib/samples/fl/fl_sample2/Makefile.in @@ -17,7 +17,7 @@ TARGET = fl_sample2 program_dir = contrib/samples/fl/$(TARGET) APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\" -APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS = $(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_fl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ PROGRAM = $(TARGET) OBJECTS = $(TARGET).o diff --git a/contrib/samples/fl/fl_sample2/fl_demo.dsp b/contrib/samples/fl/fl_sample2/fl_demo.dsp index b1c478514e..8d8cc33b16 100644 --- a/contrib/samples/fl/fl_sample2/fl_demo.dsp +++ b/contrib/samples/fl/fl_sample2/fl_demo.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Application" 0x0101 -CFG=fl_sample2 - Win32 Debug +CFG=fl_sample2 - Win32 Debug DLL !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,14 @@ CFG=fl_sample2 - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample2 - Win32 Debug" +!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample2 - Win32 Debug DLL" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fl_sample2 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "fl_sample2 - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "fl_sample2 - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "fl_sample2 - Win32 Release DLL" (based on "Win32 (x86) Application") !MESSAGE # Begin Project @@ -81,12 +83,68 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +!ELSEIF "$(CFG)" == "fl_sample2 - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdlld" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fldlld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "fl_sample2 - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_DLL" +# PROP BASE Intermediate_Dir "Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /YX /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fldll.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" + !ENDIF # Begin Target # Name "fl_sample2 - Win32 Release" # Name "fl_sample2 - Win32 Debug" +# Name "fl_sample2 - Win32 Debug DLL" +# Name "fl_sample2 - Win32 Release DLL" # Begin Source File SOURCE=.\fl_sample2.cpp @@ -97,6 +155,13 @@ SOURCE=.\fl_sample2.cpp # ADD CPP /Yc"wx/wxprec.h" +!ELSEIF "$(CFG)" == "fl_sample2 - Win32 Debug DLL" + +# ADD BASE CPP /Yc"wx/wxprec.h" +# ADD CPP /Yc"wx/wxprec.h" + +!ELSEIF "$(CFG)" == "fl_sample2 - Win32 Release DLL" + !ENDIF # End Source File diff --git a/contrib/samples/fl/fl_sample2/makefile.vc b/contrib/samples/fl/fl_sample2/makefile.vc index dabd5660e5..22340ab393 100644 --- a/contrib/samples/fl/fl_sample2/makefile.vc +++ b/contrib/samples/fl/fl_sample2/makefile.vc @@ -12,11 +12,25 @@ WXDIR = ..\..\..\.. TARGET = fl_sample2 EXTRAINC = -DBMP_DIR=\"../bitmaps/\" + +!if "$(WXUSING_FL_DLL)" == "1" +# Define WXUSING_FL_DLL so the compiler knows it is set. +EXTRAINC = $(EXTRAINC) -DWXUSING_FL_DLL +# Set to use wxWin in DLL format... +WXUSINGDLL = 1 + +!if "$(FINAL)" == "1" +EXTRALIBS = $(WXDIR)\lib\fldll.lib +!else +EXTRALIBS = $(WXDIR)\lib\fldlld.lib +!endif +!else !if "$(FINAL)" == "1" EXTRALIBS = $(WXDIR)\lib\fl.lib !else EXTRALIBS = $(WXDIR)\lib\fld.lib !endif +!endif PROGRAM = $(TARGET) OBJECTS = $(TARGET).obj diff --git a/contrib/samples/fl/fl_sample3/Makefile.in b/contrib/samples/fl/fl_sample3/Makefile.in index b19998869b..fab8e27cce 100644 --- a/contrib/samples/fl/fl_sample3/Makefile.in +++ b/contrib/samples/fl/fl_sample3/Makefile.in @@ -17,7 +17,7 @@ TARGET = fl_sample3 program_dir = contrib/samples/fl/$(TARGET) APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\" -APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS = $(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_fl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ PROGRAM = $(TARGET) OBJECTS = $(TARGET).o diff --git a/contrib/samples/fl/fl_sample3/fl_demo.dsp b/contrib/samples/fl/fl_sample3/fl_demo.dsp index 83830eb9db..7d63efa267 100644 --- a/contrib/samples/fl/fl_sample3/fl_demo.dsp +++ b/contrib/samples/fl/fl_sample3/fl_demo.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Application" 0x0101 -CFG=fl_sample3 - Win32 Debug +CFG=fl_sample3 - Win32 Debug DLL !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,14 @@ CFG=fl_sample3 - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample3 - Win32 Debug" +!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample3 - Win32 Debug DLL" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "fl_sample3 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "fl_sample3 - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "fl_sample3 - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "fl_sample3 - Win32 Release DLL" (based on "Win32 (x86) Application") !MESSAGE # Begin Project @@ -81,12 +83,68 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +!ELSEIF "$(CFG)" == "fl_sample3 - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdlld" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib fldlld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "fl_sample3 - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_DLL" +# PROP BASE Intermediate_Dir "Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /I "../../../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXUSING_FL_DLL" /YX /FD /D BMP_DIR=\"../bitmaps/\" /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib fldll.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../../../lib" + !ENDIF # Begin Target # Name "fl_sample3 - Win32 Release" # Name "fl_sample3 - Win32 Debug" +# Name "fl_sample3 - Win32 Debug DLL" +# Name "fl_sample3 - Win32 Release DLL" # Begin Source File SOURCE=.\fl_sample3.cpp @@ -97,6 +155,13 @@ SOURCE=.\fl_sample3.cpp # ADD CPP /Yc"wx/wxprec.h" +!ELSEIF "$(CFG)" == "fl_sample3 - Win32 Debug DLL" + +# ADD BASE CPP /Yc"wx/wxprec.h" +# ADD CPP /Yc"wx/wxprec.h" + +!ELSEIF "$(CFG)" == "fl_sample3 - Win32 Release DLL" + !ENDIF # End Source File diff --git a/contrib/samples/fl/fl_sample3/makefile.vc b/contrib/samples/fl/fl_sample3/makefile.vc index 699a66babc..d63277a77a 100644 --- a/contrib/samples/fl/fl_sample3/makefile.vc +++ b/contrib/samples/fl/fl_sample3/makefile.vc @@ -12,11 +12,25 @@ WXDIR = ..\..\..\.. TARGET = fl_sample3 EXTRAINC = -DBMP_DIR=\"../bitmaps/\" + +!if "$(WXUSING_FL_DLL)" == "1" +# Define WXUSING_FL_DLL so the compiler knows it is set. +EXTRAINC = $(EXTRAINC) -DWXUSING_FL_DLL +# Set to use wxWin in DLL format... +WXUSINGDLL = 1 + +!if "$(FINAL)" == "1" +EXTRALIBS = $(WXDIR)\lib\fldll.lib +!else +EXTRALIBS = $(WXDIR)\lib\fldlld.lib +!endif +!else !if "$(FINAL)" == "1" EXTRALIBS = $(WXDIR)\lib\fl.lib !else EXTRALIBS = $(WXDIR)\lib\fld.lib !endif +!endif PROGRAM = $(TARGET) OBJECTS = $(TARGET).obj diff --git a/contrib/samples/gizmos/Makefile.in b/contrib/samples/gizmos/Makefile.in index 223d5330fe..25e545a2a9 100644 --- a/contrib/samples/gizmos/Makefile.in +++ b/contrib/samples/gizmos/Makefile.in @@ -1,6 +1,6 @@ # $Id$ -CONTRIB_SAMPLES=multicell splittree editlbox dynsash dynsash_switch +CONTRIB_SAMPLES=editlbox dynsash dynsash_switch multicell splittree led all: @for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE)); done diff --git a/contrib/samples/gizmos/dynsash/Makefile.in b/contrib/samples/gizmos/dynsash/Makefile.in index 5e5fd58b72..5ec22a79b8 100644 --- a/contrib/samples/gizmos/dynsash/Makefile.in +++ b/contrib/samples/gizmos/dynsash/Makefile.in @@ -16,7 +16,7 @@ program_dir = contrib/samples/gizmos/dynsash PROGRAM=dynsash OBJECTS=dynsash.o -APPEXTRALIBS=$(top_builddir)/lib/libgizmos.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/gizmos/dynsash/dynsash.dsp b/contrib/samples/gizmos/dynsash/dynsash.dsp index 27f6530455..2380e7aebf 100644 --- a/contrib/samples/gizmos/dynsash/dynsash.dsp +++ b/contrib/samples/gizmos/dynsash/dynsash.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wxmsw233d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/dynsash.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 wxmsw240d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/dynsash.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "dynsash - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 wxmsw233.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/dynsash.exe" /libpath:"../../../../lib" +# ADD LINK32 wxmsw240.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/dynsash.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/gizmos/dynsash_switch/Makefile.in b/contrib/samples/gizmos/dynsash_switch/Makefile.in index b9796bb40e..1c104bba81 100644 --- a/contrib/samples/gizmos/dynsash_switch/Makefile.in +++ b/contrib/samples/gizmos/dynsash_switch/Makefile.in @@ -16,7 +16,7 @@ program_dir = contrib/samples/gizmos/dynsash_switch PROGRAM=dynsash_switch OBJECTS=dynsash_switch.o -APPEXTRALIBS=$(top_builddir)/lib/libgizmos.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/gizmos/dynsash_switch/dynsash_switch.dsp b/contrib/samples/gizmos/dynsash_switch/dynsash_switch.dsp index 91c16772ad..1afee60e9e 100644 --- a/contrib/samples/gizmos/dynsash_switch/dynsash_switch.dsp +++ b/contrib/samples/gizmos/dynsash_switch/dynsash_switch.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wxmsw233d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/dynsash_switch.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 wxmsw240d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/dynsash_switch.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "dynsash_switch - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 wxmsw233.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/dynsash_switch.exe" /libpath:"../../../../lib" +# ADD LINK32 wxmsw240.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/dynsash_switch.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/gizmos/editlbox/Makefile.in b/contrib/samples/gizmos/editlbox/Makefile.in index 465981c704..1ffec80c2a 100644 --- a/contrib/samples/gizmos/editlbox/Makefile.in +++ b/contrib/samples/gizmos/editlbox/Makefile.in @@ -16,7 +16,7 @@ program_dir = contrib/samples/gizmos/editlbox PROGRAM=test OBJECTS=test.o -APPEXTRALIBS=$(top_builddir)/lib/libgizmos.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/gizmos/editlbox/editlbox.dsp b/contrib/samples/gizmos/editlbox/editlbox.dsp index 7de8a5b377..e1f4c2b143 100644 --- a/contrib/samples/gizmos/editlbox/editlbox.dsp +++ b/contrib/samples/gizmos/editlbox/editlbox.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wxmsw233d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/editlbox.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 wxmsw240d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/editlbox.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "editlbox - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 wxmsw233.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/editlbox.exe" /libpath:"../../../../lib" +# ADD LINK32 wxmsw240.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/editlbox.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/gizmos/led/Makefile.in b/contrib/samples/gizmos/led/Makefile.in new file mode 100644 index 0000000000..8ccc5e8741 --- /dev/null +++ b/contrib/samples/gizmos/led/Makefile.in @@ -0,0 +1,23 @@ +# +# File: Makefile.in +# Author: Julian Smart +# Created: 2002 +# Updated: +# Copyright: (c) 2002 Julian Smart +# +# "%W% %G%" +# +# Makefile for the led example (UNIX). + +top_srcdir = @top_srcdir@/.. +top_builddir = ../../../.. +program_dir = contrib/samples/gizmos/led + +PROGRAM=led +OBJECTS=led.o + +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRADEFS=-I$(top_srcdir)/contrib/include + +include $(top_builddir)/src/makeprog.env + diff --git a/contrib/samples/gizmos/led/led.cpp b/contrib/samples/gizmos/led/led.cpp new file mode 100644 index 0000000000..4818281f8b --- /dev/null +++ b/contrib/samples/gizmos/led/led.cpp @@ -0,0 +1,341 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: led.cpp +// Purpose: LED sample +// Author: Julian Smart +// Modified by: +// Created: 04/01/98 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// 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 "../../../include/wx/gizmos/ledctrl.h" +#include "wx/sizer.h" +#include "wx/panel.h" + +// ---------------------------------------------------------------------------- +// private classes +// ---------------------------------------------------------------------------- + +class MyPanel : public wxPanel +{ +public: + MyPanel(wxFrame *frame); + + void OnIncrement(); + void OnDecrement(); + void OnSetValue(); + void OnAlignLeft(); + void OnAlignCenter(); + void OnAlignRight(); + void OnDrawFaded(); + +private: + wxLEDNumberCtrl *m_led; +}; + +// Define a new application type, each program should derive a class from wxApp +class MyApp : public wxApp +{ +public: + // override base class virtuals + // ---------------------------- + + // this one is called on application startup and is a good place for the app + // initialization (doing it here and not in the ctor allows to have an error + // return: if OnInit() returns false, the application terminates) + virtual bool OnInit(); +}; + +// Define a new frame type: this is going to be our main frame +class MyFrame : public wxFrame +{ +public: + // ctor(s) + MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, + long style = wxDEFAULT_FRAME_STYLE); + + // event handlers (these functions should _not_ be virtual) + void OnQuit(wxCommandEvent& event); + void OnIncrement(wxCommandEvent& event); + void OnDecrement(wxCommandEvent& event); + void OnSetValue(wxCommandEvent& event); + void OnAlignLeft(wxCommandEvent& event); + void OnAlignCenter(wxCommandEvent& event); + void OnAlignRight(wxCommandEvent& event); + void OnDrawFaded(wxCommandEvent& event); + void OnAbout(wxCommandEvent& event); + +private: + MyPanel *m_panel; + + // any class wishing to process wxWindows events must use this macro + DECLARE_EVENT_TABLE() +}; + +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// IDs for the controls and the menu commands +enum +{ + // menu items + LED_Quit = 1, + + LED_Edit_Increment, + LED_Edit_Decrement, + LED_Edit_SetValue, + LED_Edit_AlignLeft, + LED_Edit_AlignCenter, + LED_Edit_AlignRight, + LED_Edit_DrawFaded, + + // it is important for the id corresponding to the "About" command to have + // this standard value as otherwise it won't be handled properly under Mac + // (where it is special and put into the "Apple" menu) + LED_About = wxID_ABOUT, + + MY_PANEL, + MY_LED +}; + +// ---------------------------------------------------------------------------- +// event tables and other macros for wxWindows +// ---------------------------------------------------------------------------- + +// the event tables connect the wxWindows events with the functions (event +// handlers) which process them. It can be also done at run-time, but for the +// simple menu events like this the static method is much simpler. +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU(LED_Quit, MyFrame::OnQuit) + EVT_MENU(LED_Edit_Increment, MyFrame::OnIncrement) + EVT_MENU(LED_Edit_Decrement, MyFrame::OnDecrement) + EVT_MENU(LED_Edit_SetValue, MyFrame::OnSetValue) + EVT_MENU(LED_Edit_AlignLeft, MyFrame::OnAlignLeft) + EVT_MENU(LED_Edit_AlignCenter, MyFrame::OnAlignCenter) + EVT_MENU(LED_Edit_AlignRight, MyFrame::OnAlignRight) + EVT_MENU(LED_Edit_DrawFaded, MyFrame::OnDrawFaded) + EVT_MENU(LED_About, MyFrame::OnAbout) +END_EVENT_TABLE() + +// Create a new application object: this macro will allow wxWindows to create +// the application object during program execution (it's better than using a +// static object for many reasons) and also declares the accessor function +// wxGetApp() which will return the reference of the right type (i.e. MyApp and +// not wxApp) +IMPLEMENT_APP(MyApp) + +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// the application class +// ---------------------------------------------------------------------------- + +// 'Main program' equivalent: the program execution "starts" here +bool MyApp::OnInit() +{ + // create the main application window + MyFrame *frame = new MyFrame(_T("LED App"), + wxPoint(50, 50), wxSize(450, 340)); + + // and show it (the frames, unlike simple controls, are not shown when + // created initially) + frame->Show(TRUE); + + // success: wxApp::OnRun() will be called which will enter the main message + // loop and the application will run. If we returned FALSE here, the + // application would exit immediately. + return TRUE; +} + +// ---------------------------------------------------------------------------- +// main frame +// ---------------------------------------------------------------------------- + +// frame constructor +MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style) + : wxFrame(NULL, -1, title, pos, size, style) +{ +#if wxUSE_MENUS + // create a menu bar + wxMenu *menuFile = new wxMenu; + + // the "About" item should be in the help menu + wxMenu *helpMenu = new wxMenu; + helpMenu->Append(LED_About, _T("&About...\tF1"), _T("Show about dialog")); + + menuFile->Append(LED_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); + + wxMenu *editMenu = new wxMenu; + editMenu->Append(LED_Edit_Increment, _T("&Increment LED\tCtrl-I")); + editMenu->Append(LED_Edit_Decrement, _T("&Decrement LED\tCtrl-D")); + editMenu->Append(LED_Edit_SetValue, _T("&Set LED Value...\tCtrl-S")); + editMenu->AppendSeparator(); + editMenu->AppendRadioItem(LED_Edit_AlignLeft, _T("Align &Left")); + editMenu->AppendRadioItem(LED_Edit_AlignCenter, _T("Align &Center")); + editMenu->AppendRadioItem(LED_Edit_AlignRight, _T("Align &Right")); + editMenu->AppendSeparator(); + editMenu->AppendCheckItem(LED_Edit_DrawFaded, _T("Draw &Faded\tCtrl-F")); + + editMenu->Check(LED_Edit_DrawFaded, TRUE); + + // now append the freshly created menu to the menu bar... + wxMenuBar *menuBar = new wxMenuBar(); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(editMenu, _T("&Edit")); + menuBar->Append(helpMenu, _T("&Help")); + + // ... and attach this menu bar to the frame + SetMenuBar(menuBar); +#endif // wxUSE_MENUS + + m_panel = new MyPanel(this); +} + + +// event handlers + +void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) +{ + // TRUE is to force the frame to close + Close(TRUE); +} + +void MyFrame::OnIncrement(wxCommandEvent& event) +{ + m_panel->OnIncrement(); +} + +void MyFrame::OnDecrement(wxCommandEvent& event) +{ + m_panel->OnDecrement(); +} + +void MyFrame::OnSetValue(wxCommandEvent& event) +{ + m_panel->OnSetValue(); +} + +void MyFrame::OnAlignLeft(wxCommandEvent& event) +{ + m_panel->OnAlignLeft(); +} + +void MyFrame::OnAlignCenter(wxCommandEvent& event) +{ + m_panel->OnAlignCenter(); +} + +void MyFrame::OnAlignRight(wxCommandEvent& event) +{ + m_panel->OnAlignRight(); +} + +void MyFrame::OnDrawFaded(wxCommandEvent& event) +{ + m_panel->OnDrawFaded(); +} + +void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) +{ + wxString msg; + msg.Printf( _T("This is the About dialog of the LED sample.\n") + _T("Welcome to %s"), wxVERSION_STRING); + + wxMessageBox(msg, _T("About LED"), wxOK | wxICON_INFORMATION, this); +} + +// -------------------------------------------------------------------------- +// MyPanel +// -------------------------------------------------------------------------- + +MyPanel::MyPanel(wxFrame *frame) + : wxPanel(frame, MY_PANEL) +{ + m_led = new wxLEDNumberCtrl(this, MY_LED, + wxPoint(20, 20), wxSize(300, 200), + wxLED_ALIGN_LEFT | wxLED_DRAW_FADED); + + m_led->SetValue(_T("50")); +} + +void MyPanel::OnIncrement() +{ + wxString strValue = m_led->GetValue(); + if ( strValue == _T("99") ) + return; + + long lValue; + strValue.ToLong(&lValue); + ++lValue; + m_led->SetValue(wxString::Format(_T("%ld"), lValue)); +} + +void MyPanel::OnDecrement() +{ + wxString strValue = m_led->GetValue(); + + long lValue; + strValue.ToLong(&lValue); + if (lValue == 0) + return; + + --lValue; + m_led->SetValue(wxString::Format(_T("%ld"), lValue)); +} + +void MyPanel::OnSetValue() +{ + wxString strValue = m_led->GetValue(); + + long lValue; + strValue.ToLong(&lValue); + lValue = ::wxGetNumberFromUser(_T("Please enter a number between 0 and 99"), _T(""), _T("Please enter a number"), lValue, 0, 99, this); + + if (lValue != -1) + m_led->SetValue(wxString::Format(_T("%ld"), lValue)); +} + +void MyPanel::OnAlignLeft() +{ + m_led->SetAlignment(wxLED_ALIGN_LEFT); +} + +void MyPanel::OnAlignCenter() +{ + m_led->SetAlignment(wxLED_ALIGN_CENTER); +} + +void MyPanel::OnAlignRight() +{ + m_led->SetAlignment(wxLED_ALIGN_RIGHT); +} + +void MyPanel::OnDrawFaded() +{ + m_led->SetDrawFaded(!(m_led->GetDrawFaded())); +} diff --git a/contrib/samples/gizmos/led/led.dsp b/contrib/samples/gizmos/led/led.dsp new file mode 100644 index 0000000000..c5111efefe --- /dev/null +++ b/contrib/samples/gizmos/led/led.dsp @@ -0,0 +1,177 @@ +# Microsoft Developer Studio Project File - Name="led" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=led - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "led.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "led.mak" CFG="led - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "led - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "led - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "led - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "led - Win32 Release DLL" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "led - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "..\..\..\..\include" /I "..\..\include" /I "../../../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 wxmsw.lib png.lib zlib.lib jpeg.lib tiff.lib regex.lib gizmos.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /out:"Release/led.exe" /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "led - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\include" /I "..\..\include" /I "../../../../lib/mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib regexd.lib gizmosd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /out:"Debug/led.exe" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "led - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DebugDLL" +# PROP BASE Intermediate_Dir "DebugDLL" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDLL" +# PROP Intermediate_Dir "DebugDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\include" /I "..\..\include" /I "../../../../lib/mswdlld" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 wxmsw233d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/led.exe" /pdbtype:sept /libpath:"../../../../lib" + +!ELSEIF "$(CFG)" == "led - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ReleaseDLL" +# PROP BASE Intermediate_Dir "ReleaseDLL" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDLL" +# PROP Intermediate_Dir "ReleaseDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "..\..\..\..\include" /I "..\..\include" /I "../../../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 wxmsw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/led.exe" /libpath:"../../../../lib" + +!ENDIF + +# Begin Target + +# Name "led - Win32 Release" +# Name "led - Win32 Debug" +# Name "led - Win32 Debug DLL" +# Name "led - Win32 Release DLL" +# Begin Source File + +SOURCE=.\led.cpp + +!IF "$(CFG)" == "led - Win32 Release" + +# ADD CPP /I "..\..\..\include" +# SUBTRACT CPP /I "..\..\include" + +!ELSEIF "$(CFG)" == "led - Win32 Debug" + +# ADD CPP /I "..\..\..\include" +# SUBTRACT CPP /I "..\..\include" /YX /Yc /Yu + +!ELSEIF "$(CFG)" == "led - Win32 Debug DLL" + +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /I "..\..\..\include" +# SUBTRACT CPP /I "..\..\include" /YX /Yc /Yu + +!ELSEIF "$(CFG)" == "led - Win32 Release DLL" + +# ADD CPP /I "..\..\..\include" +# SUBTRACT CPP /I "..\..\include" + +!ENDIF + +# End Source File +# End Target +# End Project diff --git a/contrib/samples/gizmos/multicell/Makefile.in b/contrib/samples/gizmos/multicell/Makefile.in index f703be5269..10f2c56048 100644 --- a/contrib/samples/gizmos/multicell/Makefile.in +++ b/contrib/samples/gizmos/multicell/Makefile.in @@ -17,7 +17,7 @@ PROGRAM=multicell OBJECTS=mtest.o -APPEXTRALIBS=$(top_builddir)/lib/libgizmos.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/gizmos/multicell/makefile.wat b/contrib/samples/gizmos/multicell/makefile.wat index 64778d2b8f..19fa89a876 100644 --- a/contrib/samples/gizmos/multicell/makefile.wat +++ b/contrib/samples/gizmos/multicell/makefile.wat @@ -3,9 +3,13 @@ WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\samples\gizmos\multicell + + PROGRAM = mtest -OBJECTS = $(PROGRAM).obj ..\src\multicell.obj -EXTRAINC=-I..\include +EXTRALIBS = $(WXDIR)\lib\gizmos_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/samples/gizmos/multicell/mtest.cpp b/contrib/samples/gizmos/multicell/mtest.cpp index 05a1ec6122..ae8280c814 100644 --- a/contrib/samples/gizmos/multicell/mtest.cpp +++ b/contrib/samples/gizmos/multicell/mtest.cpp @@ -79,7 +79,7 @@ wxFrame(frame, -1, title, pos, size, wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCRO // add first row sizer->Add( new wxButton( this, -1, "B1 - 0,0, horizontal resizable" ), - 0, 0, 0, new wxMultiCellItemHandle(0,0,1,1, wxDefaultSize, wxHORIZENTAL_RESIZABLE, wxSize(2,2))); + 0, 0, 0, new wxMultiCellItemHandle(0,0,1,1, wxDefaultSize, wxHORIZONTAL_RESIZABLE, wxSize(2,2))); sizer->Add( new wxButton( this, -1, "B2 - 0,1, vertical resizable" ), 0, 0, 0, new wxMultiCellItemHandle(0,1,1,1, wxDefaultSize, wxVERTICAL_RESIZABLE, wxSize(2, 2))); diff --git a/contrib/samples/gizmos/multicell/multicell.dsp b/contrib/samples/gizmos/multicell/multicell.dsp index ea37c5a3b4..78b76aa656 100644 --- a/contrib/samples/gizmos/multicell/multicell.dsp +++ b/contrib/samples/gizmos/multicell/multicell.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wxmsw233d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/mtest.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 wxmsw240d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/mtest.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "multicell - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 wxmsw233.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/mtest.exe" /libpath:"../../../../lib" +# ADD LINK32 wxmsw240.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/mtest.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/gizmos/splittree/Makefile.in b/contrib/samples/gizmos/splittree/Makefile.in index 7935a90651..8fc452aa91 100644 --- a/contrib/samples/gizmos/splittree/Makefile.in +++ b/contrib/samples/gizmos/splittree/Makefile.in @@ -16,7 +16,7 @@ program_dir = contrib/samples/gizmos/splittree PROGRAM=splittree OBJECTS=tree.o -APPEXTRALIBS=$(top_builddir)/lib/libgizmos.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/gizmos/splittree/TreeVC.dsp b/contrib/samples/gizmos/splittree/TreeVC.dsp index 800cc0da84..9a76961249 100644 --- a/contrib/samples/gizmos/splittree/TreeVC.dsp +++ b/contrib/samples/gizmos/splittree/TreeVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wxmsw233d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/tree.exe" /pdbtype:sept /libpath:"../../../../lib" +# ADD LINK32 wxmsw240d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/tree.exe" /pdbtype:sept /libpath:"../../../../lib" !ELSEIF "$(CFG)" == "TreeVC - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 wxmsw233.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/tree.exe" /libpath:"../../../../lib" +# ADD LINK32 wxmsw240.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/tree.exe" /libpath:"../../../../lib" !ENDIF diff --git a/contrib/samples/gizmos/splittree/makefile.wat b/contrib/samples/gizmos/splittree/makefile.wat index 2b200ba7ec..a972a0f335 100644 --- a/contrib/samples/gizmos/splittree/makefile.wat +++ b/contrib/samples/gizmos/splittree/makefile.wat @@ -1,14 +1,14 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# +# Purpose: makefile for multicell example (Watcom) +# Created 2000-07-28 WXDIR = $(%WXWIN) -PROGRAM = minimal -OBJECTS = $(PROGRAM).obj +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\samples\gizmos\splittree + +PROGRAM = tree +EXTRALIBS = $(WXDIR)\lib\gizmos_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/samples/mmedia/MMboardVC.dsp b/contrib/samples/mmedia/MMboardVC.dsp index f041494a25..30dea45944 100644 --- a/contrib/samples/mmedia/MMboardVC.dsp +++ b/contrib/samples/mmedia/MMboardVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib mmediad.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/mmboard.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib mmediad.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/mmboard.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "MMboardVC - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib mmedia.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/mmboard.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib mmedia.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/mmboard.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/contrib/samples/mmedia/Makefile.in b/contrib/samples/mmedia/Makefile.in index 7c4c5cbbba..9a06dcb206 100644 --- a/contrib/samples/mmedia/Makefile.in +++ b/contrib/samples/mmedia/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=mmboard OBJECTS=mmboard.o mmbman.o -APPEXTRALIBS=$(top_builddir)/lib/libmmedia.@WX_TARGET_LIBRARY_TYPE@ @ESD_LINK@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_mmedia-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ @ESD_LINK@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/mmedia/makefile.wat b/contrib/samples/mmedia/makefile.wat index 39b2eb6cba..11fd2bb642 100644 --- a/contrib/samples/mmedia/makefile.wat +++ b/contrib/samples/mmedia/makefile.wat @@ -8,7 +8,7 @@ WXDIR = $(%WXWIN) PROGRAM = mmboard -OBJECTS = $(PROGRAM).obj mmbman.obj +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj mmbman.obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/samples/ogl/ogledit/Makefile.in b/contrib/samples/ogl/ogledit/Makefile.in index 055739c441..cd83570f71 100644 --- a/contrib/samples/ogl/ogledit/Makefile.in +++ b/contrib/samples/ogl/ogledit/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=ogledit OBJECTS=$(PROGRAM).o doc.o view.o palette.o -APPEXTRALIBS=$(top_builddir)/lib/libogl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_ogl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/ogl/ogledit/OGLEditVC.dsp b/contrib/samples/ogl/ogledit/OGLEditVC.dsp index 30d7da70f7..c2b9d01de1 100644 --- a/contrib/samples/ogl/ogledit/OGLEditVC.dsp +++ b/contrib/samples/ogl/ogledit/OGLEditVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/ogledit.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/ogledit.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib" !ELSEIF "$(CFG)" == "OGLEditVC - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib ogl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/ogledit.exe" /libpath:"../../../../lib" /libpath:"../../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib ogl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/ogledit.exe" /libpath:"../../../../lib" /libpath:"../../../../contrib/lib" !ENDIF diff --git a/contrib/samples/ogl/ogledit/makefile.wat b/contrib/samples/ogl/ogledit/makefile.wat index 4d6b13097f..5991f8e9fd 100644 --- a/contrib/samples/ogl/ogledit/makefile.wat +++ b/contrib/samples/ogl/ogledit/makefile.wat @@ -7,9 +7,12 @@ WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\samples\ogl\ogledit + PROGRAM = ogledit -EXTRALIBS = $(WXDIR)\lib\ogl.lib -OBJECTS = $(PROGRAM).obj doc.obj view.obj palette.obj +EXTRALIBS = $(WXDIR)\lib\ogl_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj $(OUTPUTDIR)\doc.obj $(OUTPUTDIR)\view.obj $(OUTPUTDIR)\palette.obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/samples/ogl/studio/Makefile.in b/contrib/samples/ogl/studio/Makefile.in index 1f6d9c4673..1e0b48dd54 100644 --- a/contrib/samples/ogl/studio/Makefile.in +++ b/contrib/samples/ogl/studio/Makefile.in @@ -12,7 +12,7 @@ DATAFILES=studio_resources.wxr OBJECTS=$(PROGRAM).o doc.o shapes.o symbols.o view.o cspalette.o\ mainfrm.o project.o dialogs.o csprint.o -APPEXTRALIBS=$(top_builddir)/lib/libogl.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_ogl-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include -I$(top_srcdir)/$(program_dir)/bitmaps include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/ogl/studio/StudioVC.dsp b/contrib/samples/ogl/studio/StudioVC.dsp index e72fa51356..f34b0f40e1 100644 --- a/contrib/samples/ogl/studio/StudioVC.dsp +++ b/contrib/samples/ogl/studio/StudioVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/studio.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib ogld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/studio.exe" /pdbtype:sept /libpath:"../../../../lib" /libpath:"../../../../contrib/lib" !ELSEIF "$(CFG)" == "StudioVC - Win32 Release DLL" diff --git a/contrib/samples/ogl/studio/makefile.wat b/contrib/samples/ogl/studio/makefile.wat index 70896d9437..c85f5c97a4 100644 --- a/contrib/samples/ogl/studio/makefile.wat +++ b/contrib/samples/ogl/studio/makefile.wat @@ -7,10 +7,21 @@ WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\samples\ogl\studio + PROGRAM = studio -EXTRALIBS = $(WXDIR)\lib\ogl.lib -OBJECTS = $(PROGRAM).obj doc.obj shapes.obj symbols.obj view.obj cspalette.obj & - mainfrm.obj project.obj dialogs.obj csprint.obj +EXTRALIBS = $(WXDIR)\lib\ogl_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj & + $(OUTPUTDIR)\doc.obj & + $(OUTPUTDIR)\shapes.obj & + $(OUTPUTDIR)\symbols.obj & + $(OUTPUTDIR)\view.obj & + $(OUTPUTDIR)\cspalette.obj & + $(OUTPUTDIR)\mainfrm.obj & + $(OUTPUTDIR)\project.obj & + $(OUTPUTDIR)\dialogs.obj & + $(OUTPUTDIR)\csprint.obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/samples/plot/Makefile.in b/contrib/samples/plot/Makefile.in index 8ba9e2abff..32b1812b66 100644 --- a/contrib/samples/plot/Makefile.in +++ b/contrib/samples/plot/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=plot OBJECTS=plot.o -APPEXTRALIBS=$(top_builddir)/lib/libwx_plot.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_plot-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/plot/PlotVC.dsp b/contrib/samples/plot/PlotVC.dsp index 39f842bcfd..4bb90af829 100644 --- a/contrib/samples/plot/PlotVC.dsp +++ b/contrib/samples/plot/PlotVC.dsp @@ -109,7 +109,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib plotd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/plot.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib plotd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/plot.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "PlotVC - Win32 Release DLL" @@ -136,7 +136,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib plot.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/plot.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib plot.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/plot.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/contrib/samples/stc/Makefile.in b/contrib/samples/stc/Makefile.in index cffdcc78d7..0de249989a 100644 --- a/contrib/samples/stc/Makefile.in +++ b/contrib/samples/stc/Makefile.in @@ -13,7 +13,7 @@ PROGRAM=stctest OBJECTS=$(PROGRAM).o -APPEXTRALIBS=$(top_builddir)/lib/libstc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_stc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include DATAFILES=stctest.cpp diff --git a/contrib/samples/stc/StcTestVC.dsp b/contrib/samples/stc/StcTestVC.dsp index f7e9b6e7e4..f26a3449b8 100644 --- a/contrib/samples/stc/StcTestVC.dsp +++ b/contrib/samples/stc/StcTestVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib stcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/stctest.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib stcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/stctest.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "StcTestVC - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib stc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/stctest.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib stc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/stctest.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/contrib/samples/svg/Makefile.in b/contrib/samples/svg/Makefile.in index 8c63b68960..5f1ba42210 100644 --- a/contrib/samples/svg/Makefile.in +++ b/contrib/samples/svg/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=svgtest OBJECTS=svgtest.o -APPEXTRALIBS=$(top_builddir)/lib/libwx_dcsvg.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_dcsvg-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/svg/svgtest.rc b/contrib/samples/svg/svgtest.rc new file mode 100644 index 0000000000..6df320751a --- /dev/null +++ b/contrib/samples/svg/svgtest.rc @@ -0,0 +1,11 @@ +aaaa ICON "mondrian.ico" + +/* Useful if PROVIDE_DEFAULT_ICONS is set in wx_setup.h */ +#define IHaveMDIParentIcon +#define IHaveMDIChildIcon + +mondrian ICON "mondrian.ico" + +#include "wx/msw/wx.rc" + +svgbitmap BITMAP "SVGlogo24.bmp" diff --git a/contrib/samples/xrc/Makefile.in b/contrib/samples/xrc/Makefile.in index 74b1001946..512deacc5e 100644 --- a/contrib/samples/xrc/Makefile.in +++ b/contrib/samples/xrc/Makefile.in @@ -16,7 +16,7 @@ OBJECTS=$(PROGRAM).o \ derivdlg.o \ custclas.o -APPEXTRALIBS=$(top_builddir)/lib/libwxxrc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include DATADIRS = rc @@ -31,6 +31,7 @@ DATAFILES = rc/artprov.xrc \ rc/toolbar.xrc \ rc/uncenter.xrc \ rc/variable.xrc \ + rc/appicon.xpm \ rc/artprov.xpm \ rc/basicdlg.xpm \ rc/controls.xpm \ diff --git a/contrib/samples/xrc/XrcDemoVC.dsp b/contrib/samples/xrc/XrcDemoVC.dsp index 5bef50036a..2e5c53f2b1 100644 --- a/contrib/samples/xrc/XrcDemoVC.dsp +++ b/contrib/samples/xrc/XrcDemoVC.dsp @@ -109,7 +109,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib wxxrcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/xmldemo.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib wxxrcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/xmldemo.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "XrcDemoVC - Win32 Release DLL" @@ -136,7 +136,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib wxxrc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/xmldemo.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib wxxrc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/xmldemo.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/contrib/samples/xrc/custclas.cpp b/contrib/samples/xrc/custclas.cpp index 020a14e4b5..ba30c5f7f7 100644 --- a/contrib/samples/xrc/custclas.cpp +++ b/contrib/samples/xrc/custclas.cpp @@ -156,7 +156,7 @@ void MyResizableListCtrl::SetColumnWidths() // This is just a debug message in case you want to watch the // events scroll by as you resize. - wxLogDebug( "Successfully set column widths" ); + wxLogDebug( wxT("Successfully set column widths") ); } diff --git a/contrib/samples/xrc/derivdlg.cpp b/contrib/samples/xrc/derivdlg.cpp index a9a719c49d..437615d60b 100644 --- a/contrib/samples/xrc/derivdlg.cpp +++ b/contrib/samples/xrc/derivdlg.cpp @@ -61,7 +61,7 @@ END_EVENT_TABLE() // Constructor (Notice how small and easy it is) PreferencesDialog::PreferencesDialog(wxWindow* parent) { - wxXmlResource::Get()->LoadDialog(this, parent, "derived_dialog"); + wxXmlResource::Get()->LoadDialog(this, parent, wxT("derived_dialog")); } // Destructor. (Empty, as I don't need anything special done when destructing). diff --git a/contrib/samples/xrc/myframe.cpp b/contrib/samples/xrc/myframe.cpp index 2d03b22e44..594d8769e1 100644 --- a/contrib/samples/xrc/myframe.cpp +++ b/contrib/samples/xrc/myframe.cpp @@ -109,18 +109,18 @@ MyFrame::MyFrame(wxWindow* parent) // since this frame will always be the top window, and thus parentless. // However, the current approach has source code that can be recycled // for other frames that aren't the top level window.] - wxXmlResource::Get()->LoadFrame(this, parent, "main_frame"); + wxXmlResource::Get()->LoadFrame(this, parent, wxT("main_frame")); // Set the icon for the frame. SetIcon(wxICON(appicon)); // Load the menubar from XRC and set this frame's menubar to it. - SetMenuBar(wxXmlResource::Get()->LoadMenuBar("main_menu")); + SetMenuBar(wxXmlResource::Get()->LoadMenuBar(wxT("main_menu"))); // Load the toolbar from XRC and set this frame's toolbar to it. // NOTE: For toolbars you currently should do it exactly like this. // With toolbars, you currently can't create one, and set it later. It // needs to be all in one step. - SetToolBar(wxXmlResource::Get()->LoadToolBar(this, "main_toolbar")); + SetToolBar(wxXmlResource::Get()->LoadToolBar(this, wxT("main_toolbar"))); // Give the frame a optional statusbar. The '1' just means one field. // A gripsizer will automatically get put on into the corner, if that @@ -146,7 +146,7 @@ void MyFrame::OnNonDerivedDialogToolOrMenuCommand(wxCommandEvent& WXUNUSED(event wxDialog dlg; // "non_derived_dialog" is the name of the wxDialog XRC node that should // be loaded. - wxXmlResource::Get()->LoadDialog(&dlg, this, "non_derived_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("non_derived_dialog")); dlg.ShowModal(); } @@ -166,7 +166,7 @@ void MyFrame::OnDerivedDialogToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "controls_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("controls_dialog")); #if wxUSE_LISTCTRL // There is no data in the listctrl. This will add some columns @@ -211,7 +211,7 @@ void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnUncenteredToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "uncentered_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("uncentered_dialog")); dlg.ShowModal(); } @@ -219,7 +219,7 @@ void MyFrame::OnUncenteredToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "custom_class_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("custom_class_dialog")); // Make an instance of our new custom class. MyResizableListCtrl* a_myResizableListCtrl = new MyResizableListCtrl(&dlg, @@ -231,7 +231,7 @@ void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) // "custom_control_placeholder" is the name of the "unknown" tag in the // custctrl.xrc XRC file. - wxXmlResource::Get()->AttachUnknownControl("custom_control_placeholder", + wxXmlResource::Get()->AttachUnknownControl(wxT("custom_control_placeholder"), a_myResizableListCtrl); dlg.ShowModal(); } @@ -240,7 +240,7 @@ void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnPlatformPropertyToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "platform_property_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("platform_property_dialog")); dlg.ShowModal(); } @@ -248,7 +248,7 @@ void MyFrame::OnPlatformPropertyToolOrMenuCommand(wxCommandEvent& WXUNUSED(event void MyFrame::OnArtProviderToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "art_provider_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("art_provider_dialog")); dlg.ShowModal(); } @@ -256,7 +256,7 @@ void MyFrame::OnArtProviderToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnVariableExpansionToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "variable_expansion_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("variable_expansion_dialog")); dlg.ShowModal(); } @@ -267,5 +267,5 @@ void MyFrame::OnAboutToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) msg.Printf( _T("This is the about dialog of XML resources demo.\n") _T("Welcome to %s"), wxVERSION_STRING); - wxMessageBox(msg, "About XML resources demo", wxOK | wxICON_INFORMATION, this); + wxMessageBox(msg, _("About XML resources demo"), wxOK | wxICON_INFORMATION, this); } diff --git a/contrib/samples/xrc/xrcdemo.cpp b/contrib/samples/xrc/xrcdemo.cpp index f7d755352c..c904f52e28 100644 --- a/contrib/samples/xrc/xrcdemo.cpp +++ b/contrib/samples/xrc/xrcdemo.cpp @@ -88,27 +88,27 @@ bool MyApp::OnInit() // into one giant XRC file if you wanted, but then they become more // diffcult to manage, and harder to reuse in later projects. // The menubar - wxXmlResource::Get()->Load("rc/menu.xrc"); + wxXmlResource::Get()->Load(wxT("rc/menu.xrc")); // The toolbar - wxXmlResource::Get()->Load("rc/toolbar.xrc"); + wxXmlResource::Get()->Load(wxT("rc/toolbar.xrc")); // Non-derived dialog example - wxXmlResource::Get()->Load("rc/basicdlg.xrc"); + wxXmlResource::Get()->Load(wxT("rc/basicdlg.xrc")); // Derived dialog example - wxXmlResource::Get()->Load("rc/derivdlg.xrc"); + wxXmlResource::Get()->Load(wxT("rc/derivdlg.xrc")); // Controls property example - wxXmlResource::Get()->Load("rc/controls.xrc"); + wxXmlResource::Get()->Load(wxT("rc/controls.xrc")); // Frame example - wxXmlResource::Get()->Load("rc/frame.xrc"); + wxXmlResource::Get()->Load(wxT("rc/frame.xrc")); // Uncentered example - wxXmlResource::Get()->Load("rc/uncenter.xrc"); + wxXmlResource::Get()->Load(wxT("rc/uncenter.xrc")); // Custom class example - wxXmlResource::Get()->Load("rc/custclas.xrc"); + wxXmlResource::Get()->Load(wxT("rc/custclas.xrc")); // wxArtProvider example - wxXmlResource::Get()->Load("rc/artprov.xrc"); + wxXmlResource::Get()->Load(wxT("rc/artprov.xrc")); // Platform property example - wxXmlResource::Get()->Load("rc/platform.xrc"); + wxXmlResource::Get()->Load(wxT("rc/platform.xrc")); // Variable expansion example - wxXmlResource::Get()->Load("rc/variable.xrc"); + wxXmlResource::Get()->Load(wxT("rc/variable.xrc")); // Make an instance of your derived frame. Passing NULL (the default value // of MyFrame's constructor is NULL) as the frame doesn't have a frame diff --git a/contrib/src/animate/Makefile.in b/contrib/src/animate/Makefile.in index a902f90775..a749a523d8 100644 --- a/contrib/src/animate/Makefile.in +++ b/contrib/src/animate/Makefile.in @@ -4,11 +4,12 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/animate -TARGET_LIBNAME=libwx_anim +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_animate-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=plot diff --git a/contrib/src/applet/Makefile.in b/contrib/src/applet/Makefile.in index 1cfa1d7264..e1e99f6a30 100644 --- a/contrib/src/applet/Makefile.in +++ b/contrib/src/applet/Makefile.in @@ -4,11 +4,12 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/applet -TARGET_LIBNAME=libapplet +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_applet-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=applet diff --git a/contrib/src/canvas/Makefile.in b/contrib/src/canvas/Makefile.in index 277ad0c0f4..555666e305 100644 --- a/contrib/src/canvas/Makefile.in +++ b/contrib/src/canvas/Makefile.in @@ -4,11 +4,12 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/canvas -TARGET_LIBNAME=libcanvas +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_canvas-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=canvas diff --git a/contrib/src/canvas/bbox.cpp b/contrib/src/canvas/bbox.cpp index 227b0d1c33..b284a86c76 100644 --- a/contrib/src/canvas/bbox.cpp +++ b/contrib/src/canvas/bbox.cpp @@ -26,7 +26,7 @@ wxBoundingBox::wxBoundingBox() } -wxBoundingBox::wxBoundingBox(wxBoundingBox &other) +wxBoundingBox::wxBoundingBox(const wxBoundingBox &other) { m_minx = other.m_minx; m_miny = other.m_miny; diff --git a/contrib/src/fl/Makefile.in b/contrib/src/fl/Makefile.in index e902c419f7..53d717a272 100644 --- a/contrib/src/fl/Makefile.in +++ b/contrib/src/fl/Makefile.in @@ -4,11 +4,12 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/fl -TARGET_LIBNAME = libfl +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_fl-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=fl @@ -18,6 +19,7 @@ HEADERS = \ cbcustom.h \ dynbarhnd.h \ dyntbarhnd.h \ + fldefs.h \ garbagec.h \ hintanimpl.h \ panedrawpl.h \ diff --git a/contrib/src/fl/controlbar.cpp b/contrib/src/fl/controlbar.cpp index afe63e5af0..6435786914 100644 --- a/contrib/src/fl/controlbar.cpp +++ b/contrib/src/fl/controlbar.cpp @@ -1155,6 +1155,9 @@ void wxFrameLayout::PositionPanes() void wxFrameLayout::OnSize( wxSizeEvent& event ) { + mpFrame->ProcessEvent( event ); + event.Skip( FALSE ); // stop its progpagation + if ( event.GetEventObject() == (wxObject*) mpFrame ) { GetUpdatesManager().OnStartChanges(); diff --git a/contrib/src/fl/flVC.dsp b/contrib/src/fl/flVC.dsp index 0d1adf1f93..d642d61a66 100644 --- a/contrib/src/fl/flVC.dsp +++ b/contrib/src/fl/flVC.dsp @@ -2,9 +2,10 @@ # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=flVC - Win32 Debug +CFG=flVC - Win32 Release DLL !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,20 +14,20 @@ CFG=flVC - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "flVC.mak" CFG="flVC - Win32 Debug" +!MESSAGE NMAKE /f "flVC.mak" CFG="flVC - Win32 Release DLL" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "flVC - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "flVC - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "flVC - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "flVC - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe !IF "$(CFG)" == "flVC - Win32 Release" @@ -40,9 +41,11 @@ RSC=rc.exe # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" +LINK32=link.exe +CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/msw" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__HACK_MY_MSDEV40__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c -# SUBTRACT CPP /YX +# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/msw" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__HACK_MY_MSDEV40__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /YX /FD /c +RSC=rc.exe # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 BSC32=bscmake.exe @@ -64,9 +67,11 @@ LIB32=link.exe -lib # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" +LINK32=link.exe +CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c -# SUBTRACT CPP /YX +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /YX /FD /c +RSC=rc.exe # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 BSC32=bscmake.exe @@ -76,12 +81,82 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\..\..\lib\fld.lib" +!ELSEIF "$(CFG)" == "flVC - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\lib" +# PROP Intermediate_Dir "Debug_DLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\lib\fld.lib" +# ADD LIB32 /nologo /out:"..\..\..\lib\fld.lib" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXMAKING_FL_DLL" /YX /FD /c +# SUBTRACT CPP /u +MTL=midl.exe +RSC=rc.exe +# ADD BASE RSC /l 0x809 +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /machine:IX86 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /version:1.0 /dll /debug /machine:IX86 /out:"../../../lib/fldlld.dll" /libpath:"../../../lib" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "flVC - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "flVC___Win32_Release_DLL" +# PROP BASE Intermediate_Dir "flVC___Win32_Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\lib" +# PROP Intermediate_Dir "Release_DLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\lib\fld.lib" +# ADD LIB32 /nologo /out:"..\..\..\lib\fld.lib" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /D "WXBUILD_FL_DLL" /YX /FD /c +# SUBTRACT BASE CPP /u +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXMAKING_FL_DLL" /YX /FD /c +# SUBTRACT CPP /u +MTL=midl.exe +RSC=rc.exe +# ADD BASE RSC /l 0x809 +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /version:1.0 /dll /debug /machine:IX86 /out:"../../../lib/fldlld.dll" /libpath:"../../../lib" +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw240.lib /nologo /version:1.0 /dll /machine:IX86 /out:"../../../lib/fldll.dll" /libpath:"../../../lib" +# SUBTRACT LINK32 /pdb:none /incremental:no /debug + !ENDIF # Begin Target # Name "flVC - Win32 Release" # Name "flVC - Win32 Debug" +# Name "flVC - Win32 Debug DLL" +# Name "flVC - Win32 Release DLL" # Begin Group "Headers" # PROP Default_Filter "" @@ -119,6 +194,10 @@ SOURCE=..\..\include\wx\fl\dyntbarhnd.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\fl\fldefs.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\fl\frmview.h # End Source File # Begin Source File diff --git a/contrib/src/fl/newbmpbtn.cpp b/contrib/src/fl/newbmpbtn.cpp index 740bf206d8..cec54de1b1 100644 --- a/contrib/src/fl/newbmpbtn.cpp +++ b/contrib/src/fl/newbmpbtn.cpp @@ -523,9 +523,9 @@ void wxNewBitmapButton::RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp, } destDc.SelectObject( wxNullBitmap ); -#ifdef __WXMSW__ +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) // Map to system colours - (void) MapBitmap(destBmp->GetHBITMAP(), destBmp->GetWidth(), destBmp->GetHeight()); + (void) wxToolBar::MapBitmap(destBmp->GetHBITMAP(), destBmp->GetWidth(), destBmp->GetHeight()); #endif } @@ -799,49 +799,3 @@ void wxNewBitmapButton::OnKillFocus( wxFocusEvent& event ) wxMessageBox("kill-focus for button!"); } -#ifdef __WXMSW__ -WXHBITMAP wxNewBitmapButton::MapBitmap(WXHBITMAP bitmap, int width, int height) -{ - MemoryHDC hdcMem; - - if ( !hdcMem ) - { - wxLogLastError(_T("CreateCompatibleDC")); - - return bitmap; - } - - SelectInHDC bmpInHDC(hdcMem, (HBITMAP)bitmap); - - if ( !bmpInHDC ) - { - wxLogLastError(_T("SelectObject")); - - return bitmap; - } - - wxCOLORMAP *cmap = wxGetStdColourMap(); - - for ( int i = 0; i < width; i++ ) - { - for ( int j = 0; j < height; j++ ) - { - COLORREF pixel = ::GetPixel(hdcMem, i, j); - - for ( size_t k = 0; k < wxSTD_COL_MAX; k++ ) - { - COLORREF col = cmap[k].from; - if ( abs(GetRValue(pixel) - GetRValue(col)) < 10 && - abs(GetGValue(pixel) - GetGValue(col)) < 10 && - abs(GetBValue(pixel) - GetBValue(col)) < 10 ) - { - ::SetPixel(hdcMem, i, j, cmap[k].to); - break; - } - } - } - } - - return bitmap; -} -#endif diff --git a/contrib/src/fl/panedrawpl.cpp b/contrib/src/fl/panedrawpl.cpp index cc3625ffc1..214ffa148f 100644 --- a/contrib/src/fl/panedrawpl.cpp +++ b/contrib/src/fl/panedrawpl.cpp @@ -591,10 +591,14 @@ void cbPaneDrawPlugin::OnSizeBarWindow( cbSizeBarWndEvent& event ) // FIXME:: +/- 1s + int nNewHeight = bounds.height - 2 - bar.mDimInfo.mVertGap *2; + if(nNewHeight < 0) + nNewHeight = 0; + bar.mpBarWnd->wxWindow::SetSize( bounds.x + 1 + bar.mDimInfo.mHorizGap, bounds.y + 1 + bar.mDimInfo.mVertGap, bounds.width - 2 - bar.mDimInfo.mHorizGap*2, - bounds.height - 2 - bar.mDimInfo.mVertGap *2 , + nNewHeight, 0 ); diff --git a/contrib/src/gizmos/Makefile.in b/contrib/src/gizmos/Makefile.in index 2e8619349b..436da14ab3 100644 --- a/contrib/src/gizmos/Makefile.in +++ b/contrib/src/gizmos/Makefile.in @@ -4,11 +4,12 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/gizmos -TARGET_LIBNAME=libgizmos +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_gizmos-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=gizmos diff --git a/contrib/src/gizmos/dynamicsash.cpp b/contrib/src/gizmos/dynamicsash.cpp index 53b1123f7c..6e80bbacb4 100644 --- a/contrib/src/gizmos/dynamicsash.cpp +++ b/contrib/src/gizmos/dynamicsash.cpp @@ -29,6 +29,10 @@ #include "wx/gizmos/dynamicsash.h" + +const wxChar* wxDynamicSashWindowNameStr = wxT("dynamicSashWindow"); + + /* wxDynamicSashWindow works by internally storing a tree of Implementation objects (wxDynamicSsahWindowImpl) and Leaf objects diff --git a/contrib/src/gizmos/editlbox.cpp b/contrib/src/gizmos/editlbox.cpp index e7c065127d..e7d6160a03 100644 --- a/contrib/src/gizmos/editlbox.cpp +++ b/contrib/src/gizmos/editlbox.cpp @@ -41,7 +41,7 @@ public: const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "listctrl") + const wxString &name = _T("listctrl")) : wxListCtrl(parent, id, pos, size, style, validator, name) { CreateColumns(); diff --git a/contrib/src/gizmos/makefile.wat b/contrib/src/gizmos/makefile.wat index a84c801924..2f6745c75b 100644 --- a/contrib/src/gizmos/makefile.wat +++ b/contrib/src/gizmos/makefile.wat @@ -1,22 +1,29 @@ # Gizmos makefile for Watcom C++ +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include WXDIR = ..\..\.. !include $(WXDIR)\src\makewat.env -GIZMOSLIB = $(WXDIR)\lib\gizmos.lib +GIZMOSLIB = $(WXDIR)\lib\gizmos_w.lib THISDIR = $(WXDIR)\contrib\src\gizmos +OUTPUTDIR = $(THISDIR)\ NAME = gizmos LNK = $(name).lnk OBJECTS = multicell.obj splittree.obj editlbox.obj dynamicsash.obj ledctrl.obj -all: $(GIZMOSLIB) +all: $(GIZMOSLIB) .SYMBOLIC $(GIZMOSLIB): $(OBJECTS) *wlib /b /c /n /P=256 $(GIZMOSLIB) $(OBJECTS) clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch $(GIZMOSLIB) *.lbc + -erase *.obj + -erase *.bak + -erase *.err + -erase *.pch + -erase $(GIZMOSLIB) + -erase *.lbc diff --git a/contrib/src/gizmos/multicell.cpp b/contrib/src/gizmos/multicell.cpp index 3483d896d2..632c054674 100644 --- a/contrib/src/gizmos/multicell.cpp +++ b/contrib/src/gizmos/multicell.cpp @@ -321,7 +321,7 @@ void wxMultiCellSizer::RecalcSizes() minSize.SetHeight(wxMax(minSize.GetHeight(), c_size.GetHeight())); minSize.SetWidth(wxMax(minSize.GetWidth(), c_size.GetWidth())); } - if (rect->GetStyle() & wxHORIZENTAL_RESIZABLE || + if (rect->GetStyle() & wxHORIZONTAL_RESIZABLE || rect->GetWidth() > 1 || m_minSizes[rect->GetColumn()]->GetWidth() < 0) { @@ -489,7 +489,7 @@ void wxMultiCellSizer :: GetMinimums() // For each column, calculate the max width for those fields which are not // resizable in the horizontal pane - if (!(rect->GetStyle() & wxHORIZENTAL_RESIZABLE || m_minSizes[col]->GetWidth() < 0)) + if (!(rect->GetStyle() & wxHORIZONTAL_RESIZABLE || m_minSizes[col]->GetWidth() < 0)) { if (m_minSizes[col]->GetWidth()) { diff --git a/contrib/src/mmedia/Makefile.in b/contrib/src/mmedia/Makefile.in index ace479e123..aed8a229d5 100644 --- a/contrib/src/mmedia/Makefile.in +++ b/contrib/src/mmedia/Makefile.in @@ -4,11 +4,12 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/mmedia -TARGET_LIBNAME=libmmedia +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_mmedia-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=mmedia diff --git a/contrib/src/mmedia/makefile.b32 b/contrib/src/mmedia/makefile.b32 index 219a6e3080..9120a5e490 100644 --- a/contrib/src/mmedia/makefile.b32 +++ b/contrib/src/mmedia/makefile.b32 @@ -13,7 +13,7 @@ LIBTARGET=$(WXDIR)\contrib\lib\mmedia.lib OBJECTS = cdbase.obj cdwin.obj g711.obj g721.obj g723_24.obj \ g723_40.obj g72x.obj sndaiff.obj sndbase.obj sndcodec.obj \ - sndcpcm.obj sndfile.obj sndg72x.obj sndpcm.obj sndulaw.obj \ + sndcpcm.obj sndfile.obj sndg72x.obj sndmsad.obj sndpcm.obj sndulaw.obj \ sndwav.obj sndwin.obj vidbase.obj vidwin.obj !include $(WXDIR)\src\makelib.b32 diff --git a/contrib/src/mmedia/makefile.g95 b/contrib/src/mmedia/makefile.g95 index 4311548bf0..b6d00bf4ad 100644 --- a/contrib/src/mmedia/makefile.g95 +++ b/contrib/src/mmedia/makefile.g95 @@ -12,7 +12,7 @@ WXDIR = ../../.. LIBTARGET=$(WXDIR)/contrib/lib/libmmedia.a OBJECTS = cdbase.o cdwin.o g711.o g721.o g723_24.o \ g723_40.o g72x.o sndaiff.o sndbase.o sndcodec.o \ - sndcpcm.o sndfile.o sndg72x.o sndpcm.o sndulaw.o \ + sndcpcm.o sndfile.o sndg72x.o sndmsad.o sndpcm.o sndulaw.o \ sndwav.o sndwin.o vidbase.o vidwin.o include $(WXDIR)/src/makelib.g95 diff --git a/contrib/src/mmedia/makefile.wat b/contrib/src/mmedia/makefile.wat index e5181dde55..ffbeda034b 100644 --- a/contrib/src/mmedia/makefile.wat +++ b/contrib/src/mmedia/makefile.wat @@ -6,15 +6,38 @@ # # Makefile : Builds MMedia library for Watcom C++, WIN32 -WXDIR = $(%WXWIN) +!error This will not work - there is no digitalv.h in Open Watcom as of 26 Feb 03 -LIBTARGET=$(WXDIR)\contrib\lib\mmedia.lib +WXDIR = ..\..\.. +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include + +!include $(WXDIR)\src\makewat.env + +THISDIR = $(WXDIR)\contrib\src\mmedia +OUTPUTDIR = $(THISDIR)\ + +NAME = mmedia +LNK = $(name).lnk + +LIBTARGET=$(WXDIR)\lib\mmedia_w.lib OBJECTS = cdbase.obj cdwin.obj g711.obj g721.obj g723_24.obj & g723_40.obj g72x.obj sndaiff.obj sndbase.obj sndcodec.obj & sndcpcm.obj sndfile.obj sndg72x.obj sndpcm.obj sndulaw.obj & sndwav.obj sndwin.obj vidbase.obj vidwin.obj -!include $(WXDIR)\src\makelib.wat +all: $(LIBTARGET) .SYMBOLIC + + +$(LIBTARGET): $(OBJECTS) + *wlib /b /c /n /P=256 $(SVGLIB) $(OBJECTS) + +clean: .SYMBOLIC + -erase *.obj + -erase *.bak + -erase *.err + -erase *.pch + -erase $(LIBTARGET) + -erase *.lbc diff --git a/contrib/src/net/Makefile.in b/contrib/src/net/Makefile.in index 9809ddec64..5d9bce041c 100644 --- a/contrib/src/net/Makefile.in +++ b/contrib/src/net/Makefile.in @@ -4,14 +4,15 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/net -TARGET_LIBNAME=libwx_net +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_net-@WX_RELEASE@ + +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 HEADER_PATH=$(top_srcdir)/contrib/include/wx -HEADER_SUBDIR=plot +HEADER_SUBDIR=net HEADERS=msg.h email.h web.h diff --git a/contrib/src/net/smapi.cpp b/contrib/src/net/smapi.cpp index 81617a39b8..b684d08e2b 100644 --- a/contrib/src/net/smapi.cpp +++ b/contrib/src/net/smapi.cpp @@ -301,7 +301,8 @@ bool wxMapiSession::Send(wxMailMessage& message) //Setup the "To" recipients int nRecipIndex = 0; int nToSize = message.m_to.GetCount(); - for (int i=0; i -#else -#include -#endif - #include #include #include @@ -286,7 +280,7 @@ wxShape::wxShape(wxShapeCanvas *can) m_brush = wxWHITE_BRUSH; m_font = g_oglNormalFont; m_textColour = wxBLACK; - m_textColourName = "BLACK"; + m_textColourName = wxT("BLACK"); m_visible = FALSE; m_selected = FALSE; m_attachmentMode = ATTACHMENT_MODE_NONE; @@ -305,7 +299,7 @@ wxShape::wxShape(wxShapeCanvas *can) m_shadowBrush = wxBLACK_BRUSH; m_textMarginX = 5; m_textMarginY = 5; - m_regionName = "0"; + m_regionName = wxT("0"); m_centreResize = TRUE; m_maintainAspectRatio = FALSE; m_highlighted = FALSE; @@ -319,10 +313,10 @@ wxShape::wxShape(wxShapeCanvas *can) // the region eventually (the duplication is for compatibility) wxShapeRegion *region = new wxShapeRegion; m_regions.Append(region); - region->SetName("0"); + region->SetName(wxT("0")); region->SetFont(g_oglNormalFont); region->SetFormatMode(FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT); - region->SetColour("BLACK"); + region->SetColour(wxT("BLACK")); } wxShape::~wxShape() @@ -607,7 +601,8 @@ void wxShape::FormatText(wxDC& dc, const wxString& s, int i) return; wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetText(s); + // region->SetText(s); // don't set the formatted text yet, it will be done below + region->m_regionText = s; dc.SetFont(* region->GetFont()); region->GetSize(&w, &h); @@ -616,7 +611,7 @@ void wxShape::FormatText(wxDC& dc, const wxString& s, int i) node = stringList->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); wxShapeTextLine *line = new wxShapeTextLine(0.0, 0.0, s); region->GetFormattedText().Append((wxObject *)line); node = node->Next(); @@ -776,7 +771,7 @@ wxString wxShape::GetTextColour(int regionId) const { wxNode *node = m_regions.Nth(regionId); if (!node) - return wxString(""); + return wxEmptyString; wxShapeRegion *region = (wxShapeRegion *)node->Data(); return region->GetColour(); } @@ -794,7 +789,7 @@ wxString wxShape::GetRegionName(int regionId) { wxNode *node = m_regions.Nth(regionId); if (!node) - return wxString(""); + return wxEmptyString; wxShapeRegion *region = (wxShapeRegion *)node->Data(); return region->GetName(); } @@ -822,7 +817,7 @@ void wxShape::NameRegions(const wxString& parentName) for (int i = 0; i < n; i++) { if (parentName.Length() > 0) - buff << parentName << "." << i; + buff << parentName << wxT(".") << i; else buff << i; SetRegionName(buff, i); @@ -834,7 +829,7 @@ void wxShape::NameRegions(const wxString& parentName) buff.Empty(); wxShape *child = (wxShape *)node->Data(); if (parentName.Length() > 0) - buff << parentName << "." << j; + buff << parentName << wxT(".") << j; else buff << j; child->NameRegions(buff); @@ -1697,7 +1692,7 @@ void wxShape::RemoveLine(wxLineShape *line) m_lines.DeleteObject(line); } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxShape::WriteAttributes(wxExpr *clause) { clause->AddAttributeValueString("type", GetClassInfo()->GetClassName()); diff --git a/contrib/src/ogl/basic2.cpp b/contrib/src/ogl/basic2.cpp index 5dd361faa4..d8a59bc725 100644 --- a/contrib/src/ogl/basic2.cpp +++ b/contrib/src/ogl/basic2.cpp @@ -30,12 +30,6 @@ #undef new #endif -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - #include #include #include @@ -581,7 +575,7 @@ void wxPolygonShape::ResetControlPoints() } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxPolygonShape::WriteAttributes(wxExpr *clause) { wxShape::WriteAttributes(clause); @@ -940,7 +934,7 @@ bool wxRectangleShape::GetPerimeterPoint(double x1, double y1, return TRUE; } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxRectangleShape::WriteAttributes(wxExpr *clause) { wxShape::WriteAttributes(clause); @@ -1013,7 +1007,7 @@ void wxTextShape::Copy(wxShape& copy) wxRectangleShape::Copy(copy); } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxTextShape::WriteAttributes(wxExpr *clause) { wxRectangleShape::WriteAttributes(clause); @@ -1080,7 +1074,7 @@ void wxEllipseShape::SetSize(double x, double y, bool recursive) SetDefaultRegionSize(); } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxEllipseShape::WriteAttributes(wxExpr *clause) { wxShape::WriteAttributes(clause); @@ -1761,7 +1755,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxShapeRegion, wxObject) wxShapeRegion::wxShapeRegion() { - m_regionText = ""; + m_regionText = wxEmptyString; m_font = g_oglNormalFont; m_minHeight = 5.0; m_minWidth = 5.0; @@ -1773,9 +1767,9 @@ wxShapeRegion::wxShapeRegion() m_regionProportionX = -1.0; m_regionProportionY = -1.0; m_formatMode = FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT; - m_regionName = ""; - m_textColour = "BLACK"; - m_penColour = "BLACK"; + m_regionName = wxEmptyString; + m_textColour = wxT("BLACK"); + m_penColour = wxT("BLACK"); m_penStyle = wxSOLID; m_actualColourObject = NULL; m_actualPenObject = NULL; @@ -1897,7 +1891,7 @@ wxPen *wxShapeRegion::GetActualPen() return m_actualPenObject; if (!m_penColour) return NULL; - if (m_penColour == "Invisible") + if (m_penColour == wxT("Invisible")) return NULL; m_actualPenObject = wxThePenList->FindOrCreatePen(m_penColour, 1, m_penStyle); return m_actualPenObject; diff --git a/contrib/src/ogl/bmpshape.cpp b/contrib/src/ogl/bmpshape.cpp index 10b1748517..7b2dfac377 100644 --- a/contrib/src/ogl/bmpshape.cpp +++ b/contrib/src/ogl/bmpshape.cpp @@ -41,7 +41,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxBitmapShape, wxShape) wxBitmapShape::wxBitmapShape():wxRectangleShape(100.0, 50.0) { - m_filename = ""; + m_filename = wxEmptyString; } wxBitmapShape::~wxBitmapShape() @@ -52,7 +52,7 @@ void wxBitmapShape::OnDraw(wxDC& dc) { if (!m_bitmap.Ok()) return; - + wxMemoryDC tempDC; tempDC.SelectObject(m_bitmap); double x, y; @@ -76,7 +76,7 @@ void wxBitmapShape::SetSize(double w, double h, bool recursive) SetDefaultRegionSize(); } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxBitmapShape::WriteAttributes(wxExpr *clause) { // Can't really save the bitmap; so instantiate the bitmap diff --git a/contrib/src/ogl/canvas.cpp b/contrib/src/ogl/canvas.cpp index 755510eb83..55e87da514 100644 --- a/contrib/src/ogl/canvas.cpp +++ b/contrib/src/ogl/canvas.cpp @@ -30,12 +30,6 @@ #undef new #endif -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - #include #include #include diff --git a/contrib/src/ogl/composit.cpp b/contrib/src/ogl/composit.cpp index ded8e3be12..7834012aaf 100644 --- a/contrib/src/ogl/composit.cpp +++ b/contrib/src/ogl/composit.cpp @@ -33,10 +33,11 @@ #include #include +#if wxUSE_PROLOGIO // Sometimes, objects need to access the whole database to // construct themselves. wxExprDatabase *GlobalwxExprDatabase = NULL; - +#endif /* * Division control point @@ -598,7 +599,7 @@ bool wxCompositeShape::Constrain() return changed; } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxCompositeShape::WriteAttributes(wxExpr *clause) { wxRectangleShape::WriteAttributes(clause); @@ -826,10 +827,10 @@ wxDivisionShape::wxDivisionShape() m_handleSide = DIVISION_SIDE_NONE; m_leftSidePen = wxBLACK_PEN; m_topSidePen = wxBLACK_PEN; - m_leftSideColour = "BLACK"; - m_topSideColour = "BLACK"; - m_leftSideStyle = "Solid"; - m_topSideStyle = "Solid"; + m_leftSideColour = wxT("BLACK"); + m_topSideColour = wxT("BLACK"); + m_leftSideStyle = wxT("Solid"); + m_topSideStyle = wxT("Solid"); ClearRegions(); } @@ -984,7 +985,7 @@ void wxDivisionShape::Copy(wxShape& copy) // Division geometry copying is handled at the wxCompositeShape level. } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxDivisionShape::WriteAttributes(wxExpr *clause) { wxCompositeShape::WriteAttributes(clause); @@ -1573,11 +1574,11 @@ bool wxDivisionShape::ResizeAdjoining(int side, double newPos, bool test) class OGLPopupDivisionMenu : public wxMenu { public: OGLPopupDivisionMenu() : wxMenu() { - Append(DIVISION_MENU_SPLIT_HORIZONTALLY, "Split horizontally"); - Append(DIVISION_MENU_SPLIT_VERTICALLY, "Split vertically"); + Append(DIVISION_MENU_SPLIT_HORIZONTALLY, wxT("Split horizontally")); + Append(DIVISION_MENU_SPLIT_VERTICALLY, wxT("Split vertically")); AppendSeparator(); - Append(DIVISION_MENU_EDIT_LEFT_EDGE, "Edit left edge"); - Append(DIVISION_MENU_EDIT_TOP_EDGE, "Edit top edge"); + Append(DIVISION_MENU_EDIT_LEFT_EDGE, wxT("Edit left edge")); + Append(DIVISION_MENU_EDIT_TOP_EDGE, wxT("Edit top edge")); } void OnMenu(wxCommandEvent& event); @@ -1625,7 +1626,7 @@ void OGLPopupDivisionMenu::OnMenu(wxCommandEvent& event) void wxDivisionShape::EditEdge(int side) { - wxMessageBox("EditEdge() not implemented", "OGL", wxOK); + wxMessageBox(wxT("EditEdge() not implemented"), wxT("OGL"), wxOK); #if 0 wxBeginBusyCursor(); diff --git a/contrib/src/ogl/constrnt.cpp b/contrib/src/ogl/constrnt.cpp index c2addad443..e79d3ed4d0 100644 --- a/contrib/src/ogl/constrnt.cpp +++ b/contrib/src/ogl/constrnt.cpp @@ -58,51 +58,51 @@ void OGLInitializeConstraintTypes() wxOGLConstraintTypes = new wxList(wxKEY_INTEGER); wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_VERTICALLY, - new wxOGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, "Centre vertically", "centred vertically w.r.t.")); + new wxOGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, wxT("Centre vertically"), wxT("centred vertically w.r.t."))); wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_HORIZONTALLY, - new wxOGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, "Centre horizontally", "centred horizontally w.r.t.")); + new wxOGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, wxT("Centre horizontally"), wxT("centred horizontally w.r.t."))); wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_BOTH, - new wxOGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, "Centre", "centred w.r.t.")); + new wxOGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, wxT("Centre"), wxT("centred w.r.t."))); wxOGLConstraintTypes->Append(gyCONSTRAINT_LEFT_OF, - new wxOGLConstraintType(gyCONSTRAINT_LEFT_OF, "Left of", "left of")); + new wxOGLConstraintType(gyCONSTRAINT_LEFT_OF, wxT("Left of"), wxT("left of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_RIGHT_OF, - new wxOGLConstraintType(gyCONSTRAINT_RIGHT_OF, "Right of", "right of")); + new wxOGLConstraintType(gyCONSTRAINT_RIGHT_OF, wxT("Right of"), wxT("right of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_ABOVE, - new wxOGLConstraintType(gyCONSTRAINT_ABOVE, "Above", "above")); + new wxOGLConstraintType(gyCONSTRAINT_ABOVE, wxT("Above"), wxT("above"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_BELOW, - new wxOGLConstraintType(gyCONSTRAINT_BELOW, "Below", "below")); + new wxOGLConstraintType(gyCONSTRAINT_BELOW, wxT("Below"), wxT("below"))); // Alignment wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_TOP, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, "Top-aligned", "aligned to the top of")); + new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, wxT("Top-aligned"), wxT("aligned to the top of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_BOTTOM, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, "Bottom-aligned", "aligned to the bottom of")); + new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, wxT("Bottom-aligned"), wxT("aligned to the bottom of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_LEFT, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, "Left-aligned", "aligned to the left of")); + new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, wxT("Left-aligned"), wxT("aligned to the left of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_RIGHT, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, "Right-aligned", "aligned to the right of")); + new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, wxT("Right-aligned"), wxT("aligned to the right of"))); // Mid-alignment wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_TOP, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, "Top-midaligned", "centred on the top of")); + new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, wxT("Top-midaligned"), wxT("centred on the top of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_BOTTOM, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, "Bottom-midaligned", "centred on the bottom of")); + new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, wxT("Bottom-midaligned"), wxT("centred on the bottom of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_LEFT, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, "Left-midaligned", "centred on the left of")); + new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, wxT("Left-midaligned"), wxT("centred on the left of"))); wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_RIGHT, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, "Right-midaligned", "centred on the right of")); + new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, wxT("Right-midaligned"), wxT("centred on the right of"))); } void OGLCleanUpConstraintTypes() @@ -137,7 +137,7 @@ wxOGLConstraint::wxOGLConstraint(int type, wxShape *constraining, wxList& constr m_constrainingObject = constraining; m_constraintId = 0; - m_constraintName = "noname"; + m_constraintName = wxT("noname"); wxNode *node = constrained.First(); while (node) diff --git a/contrib/src/ogl/divided.cpp b/contrib/src/ogl/divided.cpp index 8bac0783fc..aa929c8b55 100644 --- a/contrib/src/ogl/divided.cpp +++ b/contrib/src/ogl/divided.cpp @@ -415,7 +415,7 @@ void wxDividedShape::ResetMandatoryControlPoints() } } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxDividedShape::WriteAttributes(wxExpr *clause) { wxRectangleShape::WriteAttributes(clause); @@ -434,7 +434,7 @@ void wxDividedShape::ReadAttributes(wxExpr *clause) void wxDividedShape::EditRegions() { - wxMessageBox("EditRegions() is unimplemented.", "OGL", wxOK); + wxMessageBox(wxT("EditRegions() is unimplemented."), wxT("OGL"), wxOK); // TODO #if 0 diff --git a/contrib/src/ogl/drawn.cpp b/contrib/src/ogl/drawn.cpp index 24db4482d9..800d78db17 100644 --- a/contrib/src/ogl/drawn.cpp +++ b/contrib/src/ogl/drawn.cpp @@ -35,6 +35,8 @@ #include #include +#include + static void IntToHex(unsigned int dec, char *buf); static unsigned long HexToInt(char *buf); extern char *oglBuffer; @@ -234,7 +236,7 @@ bool wxDrawnShape::GetPerimeterPoint(double x1, double y1, return wxRectangleShape::GetPerimeterPoint(x1, y1, x2, y2, x3, y3); } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxDrawnShape::WriteAttributes(wxExpr *clause) { wxRectangleShape::WriteAttributes(clause); @@ -290,7 +292,7 @@ void wxDrawnShape::Copy(wxShape& copy) drawnCopy.m_currentAngle = m_currentAngle; } -bool wxDrawnShape::LoadFromMetaFile(char *filename) +bool wxDrawnShape::LoadFromMetaFile(const wxString& filename) { return m_metafiles[0].LoadFromMetaFile(filename, &m_width, &m_height); } @@ -520,6 +522,7 @@ wxDrawOp *wxOpSetGDI::Copy(wxPseudoMetaFile *newImage) return newOp; } +#if wxUSE_PROLOGIO wxExpr *wxOpSetGDI::WriteExpr(wxPseudoMetaFile *image) { wxExpr *expr = new wxExpr(wxExprList); @@ -580,6 +583,7 @@ void wxOpSetGDI::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) break; } } +#endif /* * Set/destroy clipping @@ -634,6 +638,7 @@ void wxOpSetClipping::Translate(double x, double y) m_y1 += y; } +#if wxUSE_PROLOGIO wxExpr *wxOpSetClipping::WriteExpr(wxPseudoMetaFile *image) { wxExpr *expr = new wxExpr(wxExprList); @@ -670,6 +675,7 @@ void wxOpSetClipping::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) break; } } +#endif /* * Draw line, rectangle, rounded rectangle, ellipse, point, arc, text @@ -878,6 +884,7 @@ void wxOpDraw::Rotate(double x, double y, double theta, double sinTheta, double } } +#if wxUSE_PROLOGIO wxExpr *wxOpDraw::WriteExpr(wxPseudoMetaFile *image) { wxExpr *expr = new wxExpr(wxExprList); @@ -989,6 +996,7 @@ void wxOpDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) } } } +#endif /* * Draw polygon, polyline, spline @@ -1102,6 +1110,7 @@ void wxOpPolyDraw::Rotate(double x, double y, double theta, double sinTheta, dou } } +#if wxUSE_PROLOGIO wxExpr *wxOpPolyDraw::WriteExpr(wxPseudoMetaFile *image) { wxExpr *expr = new wxExpr(wxExprList); @@ -1190,6 +1199,7 @@ void wxOpPolyDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) i ++; } } +#endif // Draw an outline using the current operation. bool wxOpPolyDraw::OnDrawOutline(wxDC& dc, double x, double y, double w, double h, double oldW, double oldH) @@ -1446,7 +1456,7 @@ void wxPseudoMetaFile::Rotate(double x, double y, double theta) m_currentRotation = theta; } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle) { wxString widthStr; @@ -1815,9 +1825,9 @@ void wxPseudoMetaFile::Copy(wxPseudoMetaFile& copy) * */ -bool wxPseudoMetaFile::LoadFromMetaFile(char *filename, double *rwidth, double *rheight) +bool wxPseudoMetaFile::LoadFromMetaFile(const wxString& filename, double *rwidth, double *rheight) { - if (!FileExists(filename)) + if (!wxFileExists(filename)) return NULL; wxXMetaFile *metaFile = new wxXMetaFile; diff --git a/contrib/src/ogl/lines.cpp b/contrib/src/ogl/lines.cpp index 2b94575298..fac1286eac 100644 --- a/contrib/src/ogl/lines.cpp +++ b/contrib/src/ogl/lines.cpp @@ -31,12 +31,6 @@ #undef new #endif -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - #include #include @@ -77,17 +71,17 @@ wxLineShape::wxLineShape() // and make the three line regions. ClearRegions(); wxShapeRegion *newRegion = new wxShapeRegion; - newRegion->SetName("Middle"); + newRegion->SetName(wxT("Middle")); newRegion->SetSize(150, 50); m_regions.Append((wxObject *)newRegion); newRegion = new wxShapeRegion; - newRegion->SetName("Start"); + newRegion->SetName(wxT("Start")); newRegion->SetSize(150, 50); m_regions.Append((wxObject *)newRegion); newRegion = new wxShapeRegion; - newRegion->SetName("End"); + newRegion->SetName(wxT("End")); newRegion->SetSize(150, 50); m_regions.Append((wxObject *)newRegion); @@ -234,7 +228,7 @@ void wxLineShape::FormatText(wxDC& dc, const wxString& s, int i) node = string_list->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); wxShapeTextLine *line = new wxShapeTextLine(0.0, 0.0, s); region->GetFormattedText().Append((wxObject *)line); node = node->Next(); @@ -1373,7 +1367,7 @@ void wxLineShape::ResetControlPoints() } } -#ifdef PROLOGIO +#if wxUSE_PROLOGIO void wxLineShape::WriteAttributes(wxExpr *clause) { wxShape::WriteAttributes(clause); diff --git a/contrib/src/ogl/makefile.wat b/contrib/src/ogl/makefile.wat index 7c2cf13701..528c0ca263 100644 --- a/contrib/src/ogl/makefile.wat +++ b/contrib/src/ogl/makefile.wat @@ -1,13 +1,13 @@ # Objects makefile WXDIR = ..\..\.. +EXTRACPPFLAGS=-I$(WXDIR)\contrib\include;/DPROLOGIO !include $(WXDIR)\src\makewat.env -EXTRACPPFLAGS=/DPROLOGIO - -OGLLIB = $(WXDIR)\lib\ogl.lib -THISDIR = $(WXDIR)\src\ogl +OGLLIB = $(WXDIR)\lib\ogl_w.lib +THISDIR = $(WXDIR)\contrib\src\ogl +OUTPUTDIR = $(THISDIR)\ NAME = ogl LNK = $(name).lnk @@ -15,11 +15,16 @@ LNK = $(name).lnk OBJECTS = basic.obj basic2.obj canvas.obj lines.obj divided.obj constrnt.obj & composit.obj drawn.obj bmpshape.obj mfutils.obj ogldiag.obj oglmisc.obj -all: $(OGLLIB) +all: $(OGLLIB) .SYMBOLIC $(OGLLIB): $(OBJECTS) *wlib /b /c /n /P=256 $(OGLLIB) $(OBJECTS) clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch $(OGLLIB) *.lbc + -erase *.obj + -erase *.bak + -erase *.err + -erase *.pch + -erase $(OGLLIB) + -erase *.lbc diff --git a/contrib/src/ogl/mfutils.cpp b/contrib/src/ogl/mfutils.cpp index a565739380..2d752cb1b5 100644 --- a/contrib/src/ogl/mfutils.cpp +++ b/contrib/src/ogl/mfutils.cpp @@ -98,7 +98,7 @@ wxMetaRecord::~wxMetaRecord(void) if (stringParam) delete[] stringParam; } -wxXMetaFile::wxXMetaFile(char *file) +wxXMetaFile::wxXMetaFile(const wxChar *file) { ok = FALSE; top = 0.0; @@ -162,11 +162,11 @@ int AddMetaRecordHandle(wxMetaRecord *record) return (HandleTableSize - 1); } -bool wxXMetaFile::ReadFile(char *file) +bool wxXMetaFile::ReadFile(const wxChar *file) { HandleTableSize = 0; - FILE *handle = fopen(file, "rb"); + FILE *handle = wxFopen(file, wxT("rb")); if (!handle) return FALSE; // Read placeable metafile header, if any diff --git a/contrib/src/ogl/misc.cpp b/contrib/src/ogl/misc.cpp index 76bf00cc4f..d40bd8a896 100644 --- a/contrib/src/ogl/misc.cpp +++ b/contrib/src/ogl/misc.cpp @@ -32,11 +32,6 @@ #undef new #endif -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif #include #include #include @@ -423,7 +418,7 @@ wxStringList *oglFormatText(wxDC& dc, const wxString& text, double width, double { wxString oldBuffer(buffer); - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); if (!s) { // FORCE NEW LINE @@ -435,7 +430,7 @@ wxStringList *oglFormatText(wxDC& dc, const wxString& text, double width, double else { if (buffer.Length() != 0) - buffer += " "; + buffer += wxT(" "); buffer += s; dc.GetTextExtent(buffer, &x, &y); @@ -782,7 +777,7 @@ void UpdateListBox(wxListBox *item, wxList *list) wxNode *node = list->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); item->Append(s); node = node->Next(); } diff --git a/contrib/src/ogl/ogldiag.cpp b/contrib/src/ogl/ogldiag.cpp index f5b880414b..a1b71884b0 100644 --- a/contrib/src/ogl/ogldiag.cpp +++ b/contrib/src/ogl/ogldiag.cpp @@ -30,17 +30,6 @@ #undef new #endif -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -#ifdef _MSC_VER -//using namespace std; -#endif -#endif - #include #include #include @@ -225,7 +214,7 @@ void wxDiagram::RecentreAll(wxDC& dc) } // Input/output -#ifdef PROLOGIO +#if wxUSE_PROLOGIO bool wxDiagram::SaveFile(const wxString& filename) { wxBeginBusyCursor(); diff --git a/contrib/src/ogl/oglmisc.cpp b/contrib/src/ogl/oglmisc.cpp index a9a466c2da..30deb1d87b 100644 --- a/contrib/src/ogl/oglmisc.cpp +++ b/contrib/src/ogl/oglmisc.cpp @@ -32,11 +32,6 @@ #undef new #endif -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif #include #include #include diff --git a/contrib/src/plot/Makefile.in b/contrib/src/plot/Makefile.in index 7b5c8a7fbf..f5435cd265 100644 --- a/contrib/src/plot/Makefile.in +++ b/contrib/src/plot/Makefile.in @@ -4,11 +4,11 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/plot -TARGET_LIBNAME=libwx_plot +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_plot-@WX_RELEASE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=plot diff --git a/contrib/src/stc/Makefile.in b/contrib/src/stc/Makefile.in index 01b2877cb8..042da17f87 100644 --- a/contrib/src/stc/Makefile.in +++ b/contrib/src/stc/Makefile.in @@ -9,13 +9,13 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. scintilla_dir = $(top_srcdir)/contrib/src/stc/scintilla -libsrc_dir = contrib/src/stc@PATH_IFS@$(scintilla_dir)/src +libsrc_dir = contrib/src/stc/scintilla/src:$(top_srcdir)/contrib/src/stc -TARGET_LIBNAME=libstc +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_stc-@WX_RELEASE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=stc diff --git a/contrib/src/stc/PlatWX.cpp b/contrib/src/stc/PlatWX.cpp index 8abff4b97d..d80aef709f 100644 --- a/contrib/src/stc/PlatWX.cpp +++ b/contrib/src/stc/PlatWX.cpp @@ -430,9 +430,11 @@ int SurfaceImpl::WidthText(Font &font, const char *s, int len) { void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positions) { + wxString str = stc2wx(s, len); SetFont(font); +#ifndef __WXMAC__ // Calculate the position of each character based on the widths of // the previous characters int* tpos = new int[len]; @@ -444,9 +446,26 @@ void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positio totalWidth += w; tpos[i] = totalWidth; } +#else + // Instead of a running total, remeasure from the begining of the + // text for each character's position. This is because with AA fonts + // on OS X widths can be fractions of pixels wide when more than one + // are drawn together, so the sum of all character widths is not necessariy + // (and probably not) the same as the whole string width. + int* tpos = new int[len]; + size_t i; + for (i=0; iGetTextExtent(str.Left(i+1), &w, &h); + tpos[i] = w; + } +#endif + #if wxUSE_UNICODE // Map the widths for UCS-2 characters back to the UTF-8 input string + // NOTE: I don't think this is right for when sizeof(wxChar) > 2, ie wxGTK2 + // so figure it out and fix it! i = 0; size_t ui = 0; while (i < len) { @@ -804,7 +823,7 @@ void ListBox::Clear() { } void ListBox::Append(char *s) { - GETLB(id)->Append(s); + GETLB(id)->Append(stc2wx(s)); } int ListBox::Length() { @@ -812,12 +831,17 @@ int ListBox::Length() { } void ListBox::Select(int n) { - GETLB(id)->SetSelection(n); + bool select = TRUE; + if (n == -1) { + n = 0; + select = FALSE; + } + GETLB(id)->SetSelection(n, select); #ifdef __WXGTK__ if (n > 4) n = n - 4; else - n = 1; + n = 0; GETLB(id)->SetFirstItem(n); #endif } diff --git a/contrib/src/stc/ScintillaWX.cpp b/contrib/src/stc/ScintillaWX.cpp index f1c0e43a0a..78a4da2099 100644 --- a/contrib/src/stc/ScintillaWX.cpp +++ b/contrib/src/stc/ScintillaWX.cpp @@ -223,7 +223,7 @@ void ScintillaWX::SetTicking(bool on) { void ScintillaWX::SetMouseCapture(bool on) { if (on && !capturedMouse) stc->CaptureMouse(); - else if (!on && capturedMouse) + else if (!on && capturedMouse && stc->HasCapture()) stc->ReleaseMouse(); capturedMouse = on; } @@ -338,7 +338,7 @@ void ScintillaWX::Copy() { SelectionText st; CopySelectionRange(&st); if (wxTheClipboard->Open()) { - wxTheClipboard->UsePrimarySelection(); + wxTheClipboard->UsePrimarySelection(FALSE); wxString text = stc2wx(st.s, st.len); wxTheClipboard->SetData(new wxTextDataObject(text)); wxTheClipboard->Close(); @@ -355,7 +355,7 @@ void ScintillaWX::Paste() { bool gotData = FALSE; if (wxTheClipboard->Open()) { - wxTheClipboard->UsePrimarySelection(); + wxTheClipboard->UsePrimarySelection(FALSE); gotData = wxTheClipboard->GetData(data); wxTheClipboard->Close(); } @@ -380,7 +380,7 @@ bool ScintillaWX::CanPaste() { wxTheClipboard->Open(); if (wxTheClipboard->IsOpened()) { - wxTheClipboard->UsePrimarySelection(); + wxTheClipboard->UsePrimarySelection(FALSE); canPaste = wxTheClipboard->IsSupported(wxUSE_UNICODE ? wxDF_UNICODETEXT : wxDF_TEXT); if (didOpen) wxTheClipboard->Close(); @@ -405,8 +405,28 @@ void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) { } +// This is called by the Editor base class whenever something is selected void ScintillaWX::ClaimSelection() { - +#if 0 + // Until wxGTK is able to support using both the primary selection and the + // clipboard at the same time I think it causes more problems than it is + // worth to implement this method. Selecting text should not clear the + // clipboard. --Robin +#ifdef __WXGTK__ + // Put the selected text in the PRIMARY selection + if (currentPos != anchor) { + SelectionText st; + CopySelectionRange(&st); + if (wxTheClipboard->Open()) { + wxTheClipboard->UsePrimarySelection(TRUE); + wxString text = stc2wx(st.s, st.len); + wxTheClipboard->SetData(new wxTextDataObject(text)); + wxTheClipboard->UsePrimarySelection(FALSE); + wxTheClipboard->Close(); + } + } +#endif +#endif } @@ -415,13 +435,59 @@ long ScintillaWX::DefWndProc(unsigned int /*iMessage*/, unsigned long /*wParam*/ } long ScintillaWX::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) { -// switch (iMessage) { -// case EM_CANPASTE: -// return CanPaste(); -// default: - return ScintillaBase::WndProc(iMessage, wParam, lParam); -// } -// return 0; + switch (iMessage) { + case SCI_CALLTIPSHOW: { + // NOTE: This is copied here from scintilla/src/ScintillaBase.cxx + // because of the little tweak that needs done below. When updating + // new versions double check that this is still needed, and that any + // new code there is copied here too. + AutoCompleteCancel(); + if (!ct.wCallTip.Created()) { + Point pt = LocationFromPosition(wParam); + pt.y += vs.lineHeight; + PRectangle rc = ct.CallTipStart(currentPos, pt, + reinterpret_cast(lParam), + vs.styles[STYLE_DEFAULT].fontName, + vs.styles[STYLE_DEFAULT].sizeZoomed, + IsUnicodeMode()); + // If the call-tip window would be out of the client + // space, adjust so it displays above the text. + PRectangle rcClient = GetClientRectangle(); + if (rc.bottom > rcClient.bottom) { +#ifdef __WXGTK__ + int offset = int(vs.lineHeight * 1.25) + rc.Height(); +#else + int offset = vs.lineHeight + rc.Height(); +#endif + rc.top -= offset; + rc.bottom -= offset; + } + // Now display the window. + CreateCallTipWindow(rc); + ct.wCallTip.SetPositionRelative(rc, wMain); + ct.wCallTip.Show(); + } + break; + } + + case SCI_SETCARETWIDTH: + // NOTE: Allows a caet width of zero. This one has been added to + // Scintilla CVS so it can be removed from here when we update to + // version 1.50. + if (wParam <= 0) + vs.caretWidth = 0; + else if (wParam >= 3) + vs.caretWidth = 3; + else + vs.caretWidth = wParam; + InvalidateStyleRedraw(); + break; + + + default: + return ScintillaBase::WndProc(iMessage, wParam, lParam); + } + return 0; } @@ -513,6 +579,8 @@ void ScintillaWX::DoMouseWheel(int rotation, int delta, } } else { // otherwise just scroll the window + if ( !delta ) + delta = 120; wheelRotation += rotation; lines = wheelRotation / delta; wheelRotation -= lines * delta; @@ -547,23 +615,63 @@ void ScintillaWX::DoSysColourChange() { InvalidateStyleData(); } -void ScintillaWX::DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) { +void ScintillaWX::DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) { ButtonDown(pt, curTime, shift, ctrl, alt); } -void ScintillaWX::DoButtonUp(Point pt, unsigned int curTime, bool ctrl) { +void ScintillaWX::DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl) { ButtonUp(pt, curTime, ctrl); } -void ScintillaWX::DoButtonMove(Point pt) { +void ScintillaWX::DoLeftButtonMove(Point pt) { ButtonMove(pt); } +void ScintillaWX::DoMiddleButtonUp(Point pt) { +#ifdef __WXGTK__ + // Set the current position to the mouse click point and + // then paste in the PRIMARY selection, if any. wxGTK only. + int newPos = PositionFromLocation(pt); + MovePositionTo(newPos, 0, 1); + + pdoc->BeginUndoAction(); + wxTextDataObject data; + bool gotData = FALSE; + if (wxTheClipboard->Open()) { + wxTheClipboard->UsePrimarySelection(TRUE); + gotData = wxTheClipboard->GetData(data); + wxTheClipboard->UsePrimarySelection(FALSE); + wxTheClipboard->Close(); + } + if (gotData) { + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(data.GetText()); + int len = strlen(buf); + pdoc->InsertString(currentPos, buf, len); + SetEmptySelection(currentPos + len); + } + pdoc->EndUndoAction(); + NotifyChange(); + Redraw(); + + ShowCaretAtCurrentPosition(); + EnsureCaretVisible(); +#endif +} + void ScintillaWX::DoAddChar(int key) { +#if wxUSE_UNICODE + wxChar wszChars[2]; + wszChars[0] = key; + wszChars[1] = 0; + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(wszChars); + AddCharUTF((char*)buf.data(), strlen(buf)); +#else AddChar(key); +#endif } + int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* consumed) { #if defined(__WXGTK__) || defined(__WXMAC__) // Ctrl chars (A-Z) end up with the wrong keycode on wxGTK... @@ -578,7 +686,9 @@ int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* cons case WXK_RIGHT: key = SCK_RIGHT; break; case WXK_HOME: key = SCK_HOME; break; case WXK_END: key = SCK_END; break; + case WXK_PAGEUP: // fall through case WXK_PRIOR: key = SCK_PRIOR; break; + case WXK_PAGEDOWN: // fall through case WXK_NEXT: key = SCK_NEXT; break; case WXK_DELETE: key = SCK_DELETE; break; case WXK_INSERT: key = SCK_INSERT; break; diff --git a/contrib/src/stc/ScintillaWX.h b/contrib/src/stc/ScintillaWX.h index 5f87911952..d904fc3c18 100644 --- a/contrib/src/stc/ScintillaWX.h +++ b/contrib/src/stc/ScintillaWX.h @@ -122,9 +122,10 @@ public: void DoLoseFocus(); void DoGainFocus(); void DoSysColourChange(); - void DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt); - void DoButtonUp(Point pt, unsigned int curTime, bool ctrl); - void DoButtonMove(Point pt); + void DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt); + void DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl); + void DoLeftButtonMove(Point pt); + void DoMiddleButtonUp(Point pt); void DoMouseWheel(int rotation, int delta, int linesPerAction, int ctrlDown, bool isPageScroll); void DoAddChar(int key); int DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* consumed); diff --git a/contrib/src/stc/StcVC.dsp b/contrib/src/stc/StcVC.dsp index 97dc8f7f9f..a6c2c4ce95 100644 --- a/contrib/src/stc/StcVC.dsp +++ b/contrib/src/stc/StcVC.dsp @@ -1,34 +1,35 @@ -# Microsoft Developer Studio Project File - Name="StcVC" - Package Owner=<4> +# Microsoft Developer Studio Project File - Name="stcVC" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=StcVC - Win32 Debug +CFG=stcVC - Win32 Release DLL !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 "StcVC.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 NMAKE /f "StcVC.mak" CFG="StcVC - Win32 Debug" -!MESSAGE +!MESSAGE +!MESSAGE NMAKE /f "StcVC.mak" CFG="stcVC - Win32 Release DLL" +!MESSAGE !MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "StcVC - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "StcVC - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE +!MESSAGE +!MESSAGE "stcVC - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "stcVC - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "stcVC - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "stcVC - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe -!IF "$(CFG)" == "StcVC - Win32 Release" +!IF "$(CFG)" == "stcVC - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -40,9 +41,11 @@ RSC=rc.exe # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" +LINK32=link.exe +CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /I "../../../lib/msw" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /FD /c -# SUBTRACT CPP /YX +# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/msw" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__HACK_MY_MSDEV40__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +RSC=rc.exe # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 BSC32=bscmake.exe @@ -52,7 +55,7 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\..\..\lib\stc.lib" -!ELSEIF "$(CFG)" == "StcVC - Win32 Debug" +!ELSEIF "$(CFG)" == "stcVC - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -64,9 +67,11 @@ LIB32=link.exe -lib # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" +LINK32=link.exe +CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /I "../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /FD /c -# SUBTRACT CPP /YX +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +RSC=rc.exe # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 BSC32=bscmake.exe @@ -76,15 +81,85 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\..\..\lib\stcd.lib" -!ENDIF +!ELSEIF "$(CFG)" == "stcVC - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\lib" +# PROP Intermediate_Dir "Debug_DLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +# ADD LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXMAKING_STC_DLL" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +# SUBTRACT CPP /u +MTL=midl.exe +RSC=rc.exe +# ADD BASE RSC /l 0x809 +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /machine:IX86 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw250d.lib /nologo /version:1.0 /dll /debug /machine:IX86 /out:"../../../lib/stcdlld.dll" /libpath:"../../../lib" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "stcVC - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "stcVC___Win32_Release_DLL" +# PROP BASE Intermediate_Dir "stcVC___Win32_Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\lib" +# PROP Intermediate_Dir "Release_DLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +# ADD LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /D "WXBUILD_STC_DLL" /YX /FD /c +# SUBTRACT BASE CPP /u +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/mswdll" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXMAKING_STC_DLL" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +# SUBTRACT CPP /u +MTL=midl.exe +RSC=rc.exe +# ADD BASE RSC /l 0x809 +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw250d.lib /nologo /version:1.0 /dll /debug /machine:IX86 /out:"../../../lib/stcdlld.dll" /libpath:"../../../lib" +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw250.lib /nologo /version:1.0 /dll /machine:IX86 /out:"../../../lib/stcdll.dll" /libpath:"../../../lib" +# SUBTRACT LINK32 /pdb:none /incremental:no /debug + +!ENDIF # Begin Target -# Name "StcVC - Win32 Release" -# Name "StcVC - Win32 Debug" -# Begin Group "Stc" +# Name "stcVC - Win32 Release" +# Name "stcVC - Win32 Debug" +# Name "stcVC - Win32 Debug DLL" +# Name "stcVC - Win32 Release DLL" +# Begin Group "wxStyledTextCtrl Src" -# PROP Default_Filter "" +# PROP Default_Filter "*.cpp" # Begin Source File SOURCE=.\PlatWX.cpp @@ -95,11 +170,23 @@ SOURCE=.\ScintillaWX.cpp # End Source File # Begin Source File +SOURCE=.\stc.cpp +# End Source File +# End Group +# Begin Group "wxStyledTextCtrl Headers" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\PlatWX.h +# End Source File +# Begin Source File + SOURCE=.\ScintillaWX.h # End Source File # Begin Source File -SOURCE=.\stc.cpp +SOURCE=..\..\include\wx\stc\stc.h # End Source File # End Group # Begin Group "Scintilla" @@ -107,6 +194,10 @@ SOURCE=.\stc.cpp # PROP Default_Filter "" # Begin Source File +SOURCE=.\scintilla\include\Accessor.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\AutoComplete.cxx # End Source File # Begin Source File @@ -151,6 +242,10 @@ SOURCE=.\scintilla\src\DocumentAccessor.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\src\DocumentAccessor.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\Editor.cxx # End Source File # Begin Source File @@ -179,6 +274,10 @@ SOURCE=.\scintilla\src\KeyWords.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\include\KeyWords.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\LexAda.cxx # End Source File # Begin Source File @@ -263,14 +362,34 @@ SOURCE=.\scintilla\src\LineMarker.h # End Source File # Begin Source File +SOURCE=.\scintilla\include\Platform.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\PropSet.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\include\PropSet.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\RESearch.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\src\RESearch.h +# End Source File +# Begin Source File + +SOURCE=.\scintilla\include\SciLexer.h +# End Source File +# Begin Source File + +SOURCE=.\scintilla\include\Scintilla.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\ScintillaBase.cxx # End Source File # Begin Source File @@ -279,6 +398,14 @@ SOURCE=.\scintilla\src\ScintillaBase.h # End Source File # Begin Source File +SOURCE=.\scintilla\include\ScintillaWidget.h +# End Source File +# Begin Source File + +SOURCE=.\scintilla\include\SString.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\Style.cxx # End Source File # Begin Source File @@ -291,10 +418,22 @@ SOURCE=.\scintilla\src\StyleContext.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\src\StyleContext.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\SVector.h # End Source File # Begin Source File +SOURCE=.\scintilla\src\UniConversion.cxx +# End Source File +# Begin Source File + +SOURCE=.\scintilla\src\UniConversion.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\ViewStyle.cxx # End Source File # Begin Source File @@ -305,6 +444,10 @@ SOURCE=.\scintilla\src\ViewStyle.h SOURCE=.\scintilla\src\WindowAccessor.cxx # End Source File +# Begin Source File + +SOURCE=.\scintilla\include\WindowAccessor.h +# End Source File # End Group # End Target # End Project diff --git a/contrib/src/stc/gen_iface.py b/contrib/src/stc/gen_iface.py index b5342b73e6..6689380466 100644 --- a/contrib/src/stc/gen_iface.py +++ b/contrib/src/stc/gen_iface.py @@ -36,7 +36,13 @@ valPrefixes = [('SCI_', ''), ] # Message function values that should have a CMD_ constant as well -cmdValues = [ (2300, 2350), 2011, 2013, (2176, 2180) ] +cmdValues = [ (2300, 2349), + 2011, + 2013, + (2176, 2180), + (2390, 2393), + (2395, 2396), + ] # Map some generic typenames to wx types, using return value syntax @@ -420,6 +426,54 @@ methodOverrideMap = { 0), + 'GetDocPointer' : (0, + 'void* %s();', + '''void* %s() { + return (void*)SendMsg(%s);''', + 0), + + 'SetDocPointer' : (0, + 'void %s(void* docPointer);', + '''void %s(void* docPointer) { + SendMsg(%s, 0, (long)docPointer);''', + 0), + + 'CreateDocument' : (0, + 'void* %s();', + '''void* %s() { + return (void*)SendMsg(%s);''', + 0), + + 'AddRefDocument' : (0, + 'void %s(void* docPointer);', + '''void %s(void* docPointer) { + SendMsg(%s, 0, (long)docPointer);''', + 0), + + 'ReleaseDocument' : (0, + 'void %s(void* docPointer);', + '''void %s(void* docPointer) { + SendMsg(%s, 0, (long)docPointer);''', + 0), + 'SetCodePage' : (0, + 0, + '''void %s(int codePage) { +#if wxUSE_UNICODE + wxASSERT_MSG(codePage == wxSTC_CP_UTF8, + wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on.")); +#else + wxASSERT_MSG(codePage != wxSTC_CP_UTF8, + wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off.")); +#endif + SendMsg(%s, codePage);''', + ("Set the code page used to interpret the bytes of the document as characters.",) ), + + + 'GrabFocus' : (None, 0, 0, 0), + 'SetFocus' : ('SetSTCFocus', 0, 0, 0), + 'GetFocus' : ('GetSTCFocus', 0, 0, 0), + + # Remove all methods that are key commands since they can be # executed with CmdKeyExecute @@ -470,53 +524,6 @@ methodOverrideMap = { 'DeleteBackNotLine' : (None, 0, 0, 0), - 'GetDocPointer' : (0, - 'void* %s();', - '''void* %s() { - return (void*)SendMsg(%s);''', - 0), - - 'SetDocPointer' : (0, - 'void %s(void* docPointer);', - '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', - 0), - - 'CreateDocument' : (0, - 'void* %s();', - '''void* %s() { - return (void*)SendMsg(%s);''', - 0), - - 'AddRefDocument' : (0, - 'void %s(void* docPointer);', - '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', - 0), - - 'ReleaseDocument' : (0, - 'void %s(void* docPointer);', - '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', - 0), - 'SetCodePage' : (0, - 0, - '''void %s(int codePage) { -#if wxUSE_UNICODE - wxASSERT_MSG(codePage == wxSTC_CP_UTF8, - wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on.")); -#else - wxASSERT_MSG(codePage != wxSTC_CP_UTF8, - wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off.")); -#endif - SendMsg(%s, codePage);''', - ("Set the code page used to interpret the bytes of the document as characters.",) ), - - - 'GrabFocus' : (None, 0, 0, 0), - 'SetFocus' : ('SetSTCFocus', 0, 0, 0), - 'GetFocus' : ('GetSTCFocus', 0, 0, 0), - '' : ('', 0, 0, 0), @@ -529,6 +536,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest): curDocStrings = [] values = [] methods = [] + cmds = [] # parse iface file fi = FileInput(iface) @@ -547,7 +555,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest): curDocStrings = [] elif op == 'fun ' or op == 'set ' or op == 'get ': - parseFun(line[4:], methods, curDocStrings, values) + parseFun(line[4:], methods, curDocStrings, cmds) curDocStrings = [] elif op == 'cat ': @@ -570,6 +578,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest): # process templates data = {} data['VALUES'] = processVals(values) + data['CMDS'] = processVals(cmds) defs, imps = processMethods(methods) data['METHOD_DEFS'] = defs data['METHOD_IMPS'] = imps @@ -747,10 +756,10 @@ def parseFun(line, methods, docs, values): param1 = parseParam(param1) param2 = parseParam(param2) - # Special case. For the key command functionss we want a value defined too + # Special case. For the key command functions we want a value defined too num = string.atoi(number) for v in cmdValues: - if (type(v) == type(()) and v[0] <= num < v[1]) or v == num: + if (type(v) == type(()) and v[0] <= num <= v[1]) or v == num: parseVal('CMD_%s=%s' % (string.upper(name), number), values, docs) #if retType == 'void' and not param1 and not param2: diff --git a/contrib/src/stc/makefile.b32 b/contrib/src/stc/makefile.b32 index 0ac8176647..5a9843f863 100644 --- a/contrib/src/stc/makefile.b32 +++ b/contrib/src/stc/makefile.b32 @@ -89,7 +89,6 @@ $(STCCFG): makefile.b32 -w-par -w-aus -w-hid # virtual function A hides virtual function B --WE -tWM -I$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/xpm;$(WXDIR)/src/tiff diff --git a/contrib/src/stc/scintilla/include/SString.h b/contrib/src/stc/scintilla/include/SString.h index 6bfe50fccd..3c7ccc33a5 100644 --- a/contrib/src/stc/scintilla/include/SString.h +++ b/contrib/src/stc/scintilla/include/SString.h @@ -369,7 +369,11 @@ public: */ inline char *StringDup( const char *s, ///< The string to duplicate - SString::lenpos_t len=SString::measure_length) ///< The length of memory to allocate. Optional. + /* gcc 2.96 doesn't seem to like this syntax: gives + 'non-local function uses anonymous type' + SString::lenpos_t len=SString::measure_length) ///< The length of memory to allocate. Optional. + */ + SString::lenpos_t len=0xffffffffU) ///< The length of memory to allocate. Optional. { return SString::StringAllocate(s, len); } diff --git a/contrib/src/stc/scintilla/include/Scintilla.iface b/contrib/src/stc/scintilla/include/Scintilla.iface index 776fe8f2b7..d6383b103b 100644 --- a/contrib/src/stc/scintilla/include/Scintilla.iface +++ b/contrib/src/stc/scintilla/include/Scintilla.iface @@ -1130,14 +1130,14 @@ fun void DeleteBackNotLine=2344(,) # Move caret to first position on display line. fun void HomeDisplay=2345(,) -# Move caret to first position on display line extending selection to +# Move caret to first position on display line extending selection to # new caret position. fun void HomeDisplayExtend=2346(,) # Move caret to last position on display line. fun void LineEndDisplay=2347(,) -# Move caret to last position on display line extending selection to new +# Move caret to last position on display line extending selection to new # caret position. fun void LineEndDisplayExtend=2348(,) diff --git a/contrib/src/stc/scintilla/src/ScintillaBase.cxx b/contrib/src/stc/scintilla/src/ScintillaBase.cxx index a5e5a065d1..ab6e9a19b4 100644 --- a/contrib/src/stc/scintilla/src/ScintillaBase.cxx +++ b/contrib/src/stc/scintilla/src/ScintillaBase.cxx @@ -70,7 +70,7 @@ void ScintillaBase::AddCharUTF(char *s, unsigned int len, bool treatAsDBCS) { } if (ac.Active()) { AutoCompleteCharacterAdded(s[0]); - // For fill ups add the character after the autocompletion has + // For fill ups add the character after the autocompletion has // triggered so containers see the key so can display a calltip. if (isFillUp) { Editor::AddCharUTF(s, len, treatAsDBCS); @@ -317,6 +317,7 @@ void ScintillaBase::AutoCompleteCompleted() { scn.nmhdr.code = SCN_USERLISTSELECTION; scn.message = 0; scn.wParam = listType; + scn.listType = listType; scn.lParam = 0; scn.text = userListSelected.c_str(); NotifyParent(scn); diff --git a/contrib/src/stc/stc.cpp b/contrib/src/stc/stc.cpp index d675e8da9d..17cf6ee406 100644 --- a/contrib/src/stc/stc.cpp +++ b/contrib/src/stc/stc.cpp @@ -90,10 +90,8 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_SCROLL (wxStyledTextCtrl::OnScroll) EVT_SIZE (wxStyledTextCtrl::OnSize) EVT_LEFT_DOWN (wxStyledTextCtrl::OnMouseLeftDown) -#if defined(__WXMSW__) || defined(__WXMAC__) // Let Scintilla see the double click as a second click EVT_LEFT_DCLICK (wxStyledTextCtrl::OnMouseLeftDown) -#endif EVT_MOTION (wxStyledTextCtrl::OnMouseMove) EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp) #if defined(__WXGTK__) || defined(__WXMAC__) @@ -102,6 +100,7 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu) #endif EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel) + EVT_MIDDLE_UP (wxStyledTextCtrl::OnMouseMiddleUp) EVT_CHAR (wxStyledTextCtrl::OnChar) EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown) EVT_KILL_FOCUS (wxStyledTextCtrl::OnLoseFocus) @@ -1478,7 +1477,7 @@ void wxStyledTextCtrl::HomeDisplay() { SendMsg(2345, 0, 0); } -// Move caret to first position on display line extending selection to +// Move caret to first position on display line extending selection to // new caret position. void wxStyledTextCtrl::HomeDisplayExtend() { SendMsg(2346, 0, 0); @@ -1489,7 +1488,7 @@ void wxStyledTextCtrl::LineEndDisplay() { SendMsg(2347, 0, 0); } -// Move caret to last position on display line extending selection to new +// Move caret to last position on display line extending selection to new // caret position. void wxStyledTextCtrl::LineEndDisplayExtend() { SendMsg(2348, 0, 0); @@ -1959,18 +1958,18 @@ void wxStyledTextCtrl::OnSize(wxSizeEvent& evt) { void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) { SetFocus(); wxPoint pt = evt.GetPosition(); - m_swx->DoButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ShiftDown(), evt.ControlDown(), evt.AltDown()); } void wxStyledTextCtrl::OnMouseMove(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonMove(Point(pt.x, pt.y)); + m_swx->DoLeftButtonMove(Point(pt.x, pt.y)); } void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ControlDown()); } @@ -1981,6 +1980,11 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) { } +void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent& evt) { + wxPoint pt = evt.GetPosition(); + m_swx->DoMiddleButtonUp(Point(pt.x, pt.y)); +} + void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) { wxPoint pt = evt.GetPosition(); ScreenToClient(&pt.x, &pt.y); @@ -1998,8 +2002,6 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { - int key = evt.GetKeyCode(); - // On (some?) non-US keyboards the AltGr key is required to enter some // common characters. It comes to us as both Alt and Ctrl down so we need // to let the char through in that case, otherwise if only ctrl or only @@ -2008,10 +2010,13 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { bool alt = evt.AltDown(); bool skip = ((ctrl || alt) && ! (ctrl && alt)); + int key = evt.GetKeyCode(); + // printf("OnChar key:%d consumed:%d ctrl:%d alt:%d skip:%d\n", // key, m_lastKeyDownConsumed, ctrl, alt, skip); - if (key <= WXK_START && /*key >= 32 &&*/ !m_lastKeyDownConsumed && !skip) { + if ( (key <= WXK_START || key > WXK_NUMPAD_DIVIDE) && + !m_lastKeyDownConsumed && !skip) { m_swx->DoAddChar(key); return; } @@ -2076,6 +2081,20 @@ void wxStyledTextCtrl::NotifyChange() { GetEventHandler()->ProcessEvent(evt); } + +static void SetEventText(wxStyledTextEvent& evt, const char* text, + size_t length) { + if(!text) return; + + // The unicode conversion MUST have a null byte to terminate the + // string so move it into a buffer first and give it one. + wxMemoryBuffer buf(length+1); + buf.AppendData((void*)text, length); + buf.AppendByte(0); + evt.SetText(stc2wx(buf)); +} + + void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { SCNotification& scn = *_scn; wxStyledTextEvent evt(0, GetId()); @@ -2121,14 +2140,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_MODIFIED: evt.SetEventType(wxEVT_STC_MODIFIED); evt.SetModificationType(scn.modificationType); - if (scn.text) { - // The unicode conversion MUST have a null byte to terminate the - // string so move it into a buffer first and give it one. - wxMemoryBuffer buf(scn.length+1); - buf.AppendData((void*)scn.text, scn.length); - buf.AppendByte(0); - evt.SetText(stc2wx(buf)); - } + SetEventText(evt, scn.text, scn.length); evt.SetLength(scn.length); evt.SetLinesAdded(scn.linesAdded); evt.SetLine(scn.line); @@ -2160,12 +2172,12 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_USERLISTSELECTION: evt.SetEventType(wxEVT_STC_USERLISTSELECTION); evt.SetListType(scn.listType); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_URIDROPPED: evt.SetEventType(wxEVT_STC_URIDROPPED); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_DWELLSTART: diff --git a/contrib/src/stc/stc.cpp.in b/contrib/src/stc/stc.cpp.in index 3e1b761faf..0ab9afdc5e 100644 --- a/contrib/src/stc/stc.cpp.in +++ b/contrib/src/stc/stc.cpp.in @@ -90,10 +90,8 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_SCROLL (wxStyledTextCtrl::OnScroll) EVT_SIZE (wxStyledTextCtrl::OnSize) EVT_LEFT_DOWN (wxStyledTextCtrl::OnMouseLeftDown) -#if defined(__WXMSW__) || defined(__WXMAC__) // Let Scintilla see the double click as a second click EVT_LEFT_DCLICK (wxStyledTextCtrl::OnMouseLeftDown) -#endif EVT_MOTION (wxStyledTextCtrl::OnMouseMove) EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp) #if defined(__WXGTK__) || defined(__WXMAC__) @@ -102,6 +100,7 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu) #endif EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel) + EVT_MIDDLE_UP (wxStyledTextCtrl::OnMouseMiddleUp) EVT_CHAR (wxStyledTextCtrl::OnChar) EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown) EVT_KILL_FOCUS (wxStyledTextCtrl::OnLoseFocus) @@ -337,18 +336,18 @@ void wxStyledTextCtrl::OnSize(wxSizeEvent& evt) { void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) { SetFocus(); wxPoint pt = evt.GetPosition(); - m_swx->DoButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ShiftDown(), evt.ControlDown(), evt.AltDown()); } void wxStyledTextCtrl::OnMouseMove(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonMove(Point(pt.x, pt.y)); + m_swx->DoLeftButtonMove(Point(pt.x, pt.y)); } void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ControlDown()); } @@ -359,6 +358,11 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) { } +void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent& evt) { + wxPoint pt = evt.GetPosition(); + m_swx->DoMiddleButtonUp(Point(pt.x, pt.y)); +} + void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) { wxPoint pt = evt.GetPosition(); ScreenToClient(&pt.x, &pt.y); @@ -376,8 +380,6 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { - int key = evt.GetKeyCode(); - // On (some?) non-US keyboards the AltGr key is required to enter some // common characters. It comes to us as both Alt and Ctrl down so we need // to let the char through in that case, otherwise if only ctrl or only @@ -386,10 +388,13 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { bool alt = evt.AltDown(); bool skip = ((ctrl || alt) && ! (ctrl && alt)); + int key = evt.GetKeyCode(); + // printf("OnChar key:%%d consumed:%%d ctrl:%%d alt:%%d skip:%%d\n", // key, m_lastKeyDownConsumed, ctrl, alt, skip); - if (key <= WXK_START && /*key >= 32 &&*/ !m_lastKeyDownConsumed && !skip) { + if ( (key <= WXK_START || key > WXK_NUMPAD_DIVIDE) && + !m_lastKeyDownConsumed && !skip) { m_swx->DoAddChar(key); return; } @@ -454,6 +459,20 @@ void wxStyledTextCtrl::NotifyChange() { GetEventHandler()->ProcessEvent(evt); } + +static void SetEventText(wxStyledTextEvent& evt, const char* text, + size_t length) { + if(!text) return; + + // The unicode conversion MUST have a null byte to terminate the + // string so move it into a buffer first and give it one. + wxMemoryBuffer buf(length+1); + buf.AppendData((void*)text, length); + buf.AppendByte(0); + evt.SetText(stc2wx(buf)); +} + + void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { SCNotification& scn = *_scn; wxStyledTextEvent evt(0, GetId()); @@ -499,14 +518,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_MODIFIED: evt.SetEventType(wxEVT_STC_MODIFIED); evt.SetModificationType(scn.modificationType); - if (scn.text) { - // The unicode conversion MUST have a null byte to terminate the - // string so move it into a buffer first and give it one. - wxMemoryBuffer buf(scn.length+1); - buf.AppendData((void*)scn.text, scn.length); - buf.AppendByte(0); - evt.SetText(stc2wx(buf)); - } + SetEventText(evt, scn.text, scn.length); evt.SetLength(scn.length); evt.SetLinesAdded(scn.linesAdded); evt.SetLine(scn.line); @@ -538,12 +550,12 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_USERLISTSELECTION: evt.SetEventType(wxEVT_STC_USERLISTSELECTION); evt.SetListType(scn.listType); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_URIDROPPED: evt.SetEventType(wxEVT_STC_URIDROPPED); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_DWELLSTART: diff --git a/contrib/src/stc/stc.h.in b/contrib/src/stc/stc.h.in index 157a7bfc23..7a54289b2c 100644 --- a/contrib/src/stc/stc.h.in +++ b/contrib/src/stc/stc.h.in @@ -24,6 +24,30 @@ #include #include +#ifndef SWIG +/* + * If we're using wx in Dynamic Library format do we + * want wxStyledTextCtrl to be in DLL form as well? + */ +#if defined(WXUSINGDLL) && \ + (defined(WXMAKING_STC_DLL) || defined(WXUSING_STC_DLL)) + +#if defined(WXMAKING_STC_DLL) + // When building the DLL WXSTC_DECLSPEC exports classes +# define WXSTC_DECLSPEC WXEXPORT +#elif defined(WXUSING_STC_DLL) + // When using the DLL WXSTC_DECLSPEC imports classes +# define WXSTC_DECLSPEC WXIMPORT +#endif // defined(WXBUILD_STC_DLL) + +#else +// When building the static library nullify the effect of WXSTC_DECLSPEC +#define WXSTC_DECLSPEC +#endif // WXUSINGDLL && (WXMAKING_STC_DLL || WXUSING_STC_DLL) + +#endif // SWIG + + //---------------------------------------------------------------------- // Should a wxPopupWindow be used for the call tips and autocomplete windows? @@ -38,6 +62,12 @@ %(VALUES)s + +//----------------------------------------- +// Commands that can be bound to keystrokes +%(CMDS)s + + // END of generated section //---------------------------------------------------------------------- @@ -45,8 +75,11 @@ class ScintillaWX; // forward declare class WordList; struct SCNotification; - -extern const wxChar* wxSTCNameStr; +#ifndef SWIG +extern WXSTC_DECLSPEC const wxChar* wxSTCNameStr; +class WXSTC_DECLSPEC wxStyledTextCtrl; +class WXSTC_DECLSPEC wxStyledTextEvent; +#endif //---------------------------------------------------------------------- @@ -175,6 +208,7 @@ private: void OnMouseMove(wxMouseEvent& evt); void OnMouseLeftUp(wxMouseEvent& evt); void OnMouseRightUp(wxMouseEvent& evt); + void OnMouseMiddleUp(wxMouseEvent& evt); void OnContextMenu(wxContextMenuEvent& evt); void OnMouseWheel(wxMouseEvent& evt); void OnChar(wxKeyEvent& evt); @@ -210,7 +244,7 @@ private: //---------------------------------------------------------------------- -// SWIG can't handle "#if" type of conditionals, onlu "#ifdef" +// SWIG can't handle "#if" type of conditionals, only "#ifdef" #ifdef SWIG #define STC_USE_DND 1 #else diff --git a/contrib/src/svg/Makefile.in b/contrib/src/svg/Makefile.in index 9f1f1e253b..904597247e 100644 --- a/contrib/src/svg/Makefile.in +++ b/contrib/src/svg/Makefile.in @@ -4,14 +4,14 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. libsrc_dir = contrib/src/svg -TARGET_LIBNAME=libwx_dcsvg +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_dcsvg-@WX_RELEASE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ HEADER_PATH=$(top_srcdir)/contrib/include/wx -HEADER_SUBDIR=dcsvg +HEADER_SUBDIR=svg HEADERS=dcsvg.h diff --git a/contrib/src/xrc/Makefile.in b/contrib/src/xrc/Makefile.in index f645274010..ca0f650ca8 100644 --- a/contrib/src/xrc/Makefile.in +++ b/contrib/src/xrc/Makefile.in @@ -7,11 +7,11 @@ expat_dir = $(top_srcdir)/contrib/src/xrc/expat libsrc_dir = contrib/src/xrc@PATH_IFS@$(expat_dir)/xmlparse@PATH_IFS@$(expat_dir)/xmltok -TARGET_LIBNAME=libwxxrc +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@ -LIBVERSION_CURRENT=0 -LIBVERSION_REVISION=1 -LIBVERSION_AGE=0 +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=xrc @@ -22,9 +22,9 @@ EXPAT_OBJECTS=xmltok.o xmlrole.o xmlparse.o HEADERS=xh_all.h xh_bttn.h xh_chckb.h xh_chckl.h xh_choic.h xh_combo.h \ xh_dlg.h xh_gauge.h xh_html.h xh_menu.h xh_notbk.h xh_panel.h \ xh_radbt.h xh_radbx.h xh_sizer.h xh_slidr.h xh_spin.h xh_stbmp.h \ - xh_sttxt.h xh_text.h xh_listb.h xml.h xmlio.h xmlres.h xh_toolb.h \ + xh_sttxt.h xh_text.h xh_listb.h xml.h xmlres.h xh_toolb.h \ xh_bmpbt.h xh_cald.h xh_listc.h xh_scrol.h xh_stbox.h xh_tree.h \ - xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h + xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h xh_scwin.h OBJECTS=$(EXPAT_OBJECTS) \ xml.o xmlres.o xmlrsall.o \ @@ -33,7 +33,7 @@ OBJECTS=$(EXPAT_OBJECTS) \ xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \ xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \ xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \ - xh_frame.o xh_gdctl.o + xh_frame.o xh_gdctl.o xh_scwin.o DEPFILES=$(OBJECTS:.o=.d) APPEXTRADEFS=-I$(top_srcdir)/contrib/include $(EXPAT_DEFS) diff --git a/contrib/src/xrc/XrcVC.dsp b/contrib/src/xrc/XrcVC.dsp index 44c9ba9a78..174c339711 100644 --- a/contrib/src/xrc/XrcVC.dsp +++ b/contrib/src/xrc/XrcVC.dsp @@ -184,6 +184,10 @@ SOURCE=.\xh_scrol.cpp # End Source File # Begin Source File +SOURCE=.\xh_scwin.cpp +# End Source File +# Begin Source File + SOURCE=.\xh_sizer.cpp # End Source File # Begin Source File diff --git a/contrib/src/xrc/makefile.b32 b/contrib/src/xrc/makefile.b32 index dc7d4fa68a..2024abb133 100644 --- a/contrib/src/xrc/makefile.b32 +++ b/contrib/src/xrc/makefile.b32 @@ -27,7 +27,7 @@ OBJECTS=$(EXPAT_OBJECTS) \ xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj \ xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj \ xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj \ - xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj + xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj xh_scwin.obj !include $(WXDIR)\src\makelib.b32 diff --git a/contrib/src/xrc/makefile.g95 b/contrib/src/xrc/makefile.g95 index 8a4bfb322f..00b31580dc 100644 --- a/contrib/src/xrc/makefile.g95 +++ b/contrib/src/xrc/makefile.g95 @@ -28,7 +28,7 @@ OBJECTS= $(XMLPARSEDIR_OBJECTS) $(XMLTOKDIR_OBJECTS) \ xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \ xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \ xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \ - xh_frame.o xh_gdctl.o + xh_frame.o xh_gdctl.o xh_scwin.o include $(WXDIR)/src/makelib.g95 diff --git a/contrib/src/xrc/makefile.vc b/contrib/src/xrc/makefile.vc index 51bf90f9b4..6065d42e49 100644 --- a/contrib/src/xrc/makefile.vc +++ b/contrib/src/xrc/makefile.vc @@ -57,7 +57,7 @@ OBJECTS=$(EXPAT_OBJS) \ $(D)\xh_text.obj $(D)\xh_listb.obj $(D)\xh_toolb.obj \ $(D)\xh_bmpbt.obj $(D)\xh_cald.obj $(D)\xh_listc.obj $(D)\xh_scrol.obj \ $(D)\xh_stbox.obj $(D)\xh_tree.obj $(D)\xh_stlin.obj $(D)\xh_bmp.obj \ - $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj + $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj $(D)\xh_scwin.obj !include $(WXDIR)\src\makelib.vc diff --git a/contrib/src/xrc/makefile.wat b/contrib/src/xrc/makefile.wat index 43cfc46647..364f55a256 100644 --- a/contrib/src/xrc/makefile.wat +++ b/contrib/src/xrc/makefile.wat @@ -2,12 +2,16 @@ WXDIR = ..\..\.. -EXTRACPPFLAGS=/Id:\libxml\libxml2-2.1.1 +#XMLDIR= +!error modify makefile.wat to include the path to the XML library + +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include;-I$(XMLDIR)\libxml2-2.1.1 !include $(WXDIR)\src\makewat.env -WXXMLLIB = $(WXDIR)\lib\wxxrc.lib +WXXMLLIB = $(WXDIR)\lib\wxxrc_w.lib THISDIR = $(WXDIR)\contrib\src\xrc +OUTPUTDIR = $(THISDIR)\ NAME = wxxrc LNK = $(name).lnk @@ -18,14 +22,19 @@ OBJECTS=xml.obj xmlres.obj xmlrsall.obj & xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj & xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj & xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj & - xh_tree.obj xh_unkwn.obj xh_frame.obj + xh_tree.obj xh_unkwn.obj xh_frame.obj xh_scwin.obj xh_split.obj -all: $(WXXMLLIB) +all: $(WXXMLLIB) .SYMBOLIC $(WXXMLLIB): $(OBJECTS) *wlib /b /c /n /P=256 $(WXXMLLIB) $(OBJECTS) clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch $(WXXMLLIB) *.lbc + -erase *.obj + -erase *.bak + -erase *.err + -erase *.pch + -erase $(WXXMLLIB) + -erase *.lbc diff --git a/contrib/src/xrc/xh_dlg.cpp b/contrib/src/xrc/xh_dlg.cpp index d44ad16a91..3c916a9e1d 100644 --- a/contrib/src/xrc/xh_dlg.cpp +++ b/contrib/src/xrc/xh_dlg.cpp @@ -41,6 +41,8 @@ wxDialogXmlHandler::wxDialogXmlHandler() : wxXmlResourceHandler() XRC_ADD_STYLE(wxTAB_TRAVERSAL); XRC_ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY); XRC_ADD_STYLE(wxCLIP_CHILDREN); + XRC_ADD_STYLE(wxMAXIMIZE_BOX); + XRC_ADD_STYLE(wxMINIMIZE_BOX); AddWindowStyles(); } diff --git a/contrib/src/xrc/xh_scwin.cpp b/contrib/src/xrc/xh_scwin.cpp new file mode 100644 index 0000000000..9aedfefe57 --- /dev/null +++ b/contrib/src/xrc/xh_scwin.cpp @@ -0,0 +1,52 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_scwin.cpp +// Purpose: XRC resource for wxScrolledWindow +// Author: Vaclav Slavik +// Created: 2002/10/18 +// RCS-ID: $Id$ +// Copyright: (c) 2002 Vaclav Slavik +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifdef __GNUG__ +#pragma implementation "xh_scwin.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/xrc/xh_scwin.h" +#include "wx/scrolwin.h" + + +wxScrolledWindowXmlHandler::wxScrolledWindowXmlHandler() +: wxXmlResourceHandler() +{ + XRC_ADD_STYLE(wxHSCROLL); + XRC_ADD_STYLE(wxVSCROLL); + AddWindowStyles(); +} + +wxObject *wxScrolledWindowXmlHandler::DoCreateResource() +{ + XRC_MAKE_INSTANCE(control, wxScrolledWindow) + + control->Create(m_parentAsWindow, + GetID(), + GetPosition(), GetSize(), + GetStyle(wxT("style"), wxHSCROLL | wxVSCROLL), + GetName()); + + SetupWindow(control); + + return control; +} + +bool wxScrolledWindowXmlHandler::CanHandle(wxXmlNode *node) +{ + return IsOfClass(node, wxT("wxScrolledWindow")); +} diff --git a/contrib/src/xrc/xh_sizer.cpp b/contrib/src/xrc/xh_sizer.cpp index 278cc09631..fa5cbdccfb 100644 --- a/contrib/src/xrc/xh_sizer.cpp +++ b/contrib/src/xrc/xh_sizer.cpp @@ -150,7 +150,12 @@ wxObject *wxSizerXmlHandler::DoCreateResource() else if (m_class == wxT("wxStaticBoxSizer")) { sizer = new wxStaticBoxSizer( - new wxStaticBox(m_parentAsWindow, -1, GetText(wxT("label"))), + new wxStaticBox(m_parentAsWindow, + GetID(), + GetText(wxT("label")), + wxDefaultPosition, wxDefaultSize, + 0/*style*/, + GetName()), GetStyle(wxT("orient"), wxHORIZONTAL)); } diff --git a/contrib/src/xrc/xml.cpp b/contrib/src/xrc/xml.cpp index a1c6a01796..dac3341329 100644 --- a/contrib/src/xrc/xml.cpp +++ b/contrib/src/xrc/xml.cpp @@ -10,7 +10,6 @@ #ifdef __GNUG__ #pragma implementation "xml.h" -#pragma implementation "xmlio.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -274,6 +273,14 @@ bool wxXmlNode::DeleteProperty(const wxString& name) // wxXmlDocument //----------------------------------------------------------------------------- +wxXmlDocument::wxXmlDocument() + : m_version(wxT("1.0")), m_fileEncoding(wxT("utf-8")), m_root(NULL) +{ +#if !wxUSE_UNICODE + m_encoding = wxT("UTF-8"); +#endif +} + wxXmlDocument::wxXmlDocument(const wxString& filename, const wxString& encoding) : wxObject(), m_root(NULL) { @@ -353,9 +360,9 @@ inline static wxString CharToString(wxMBConv *conv, wchar_t *buf = new wchar_t[nLen+1]; wxConvUTF8.MB2WC(buf, s, nLen); buf[nLen] = 0; - wxString s(buf, *conv, len); + wxString str(buf, *conv, len); delete[] buf; - return s; + return str; } else return wxString(s, len); @@ -465,26 +472,29 @@ static void DefaultHnd(void *userData, const char *s, int len) } static int UnknownEncodingHnd(void * WXUNUSED(encodingHandlerData), - const XML_Char *name, XML_Encoding *info) + const XML_Char *name, XML_Encoding *info) { // We must build conversion table for expat. The easiest way to do so // is to let wxCSConv convert as string containing all characters to // wide character representation: wxCSConv conv(wxString(name, wxConvLibc)); - char mbBuf[255]; - wchar_t wcBuf[255]; + char mbBuf[2]; + wchar_t wcBuf[10]; size_t i; - for (i = 0; i < 255; i++) - mbBuf[i] = (char) (i+1); - mbBuf[255] = 0; - conv.MB2WC(wcBuf, mbBuf, 255); - wcBuf[255] = 0; - + mbBuf[1] = 0; info->map[0] = 0; for (i = 0; i < 255; i++) - info->map[i+1] = (int)wcBuf[i]; - + { + mbBuf[0] = (char)(i+1); + if (conv.MB2WC(wcBuf, mbBuf, 2) == (size_t)-1) + { + // invalid/undefined byte in the encoding: + info->map[i+1] = -1; + } + info->map[i+1] = (int)wcBuf[0]; + } + info->data = NULL; info->convert = NULL; info->release = NULL; diff --git a/contrib/src/xrc/xmlres.cpp b/contrib/src/xrc/xmlres.cpp index 0a1b72cd3a..6e2ab13778 100644 --- a/contrib/src/xrc/xmlres.cpp +++ b/contrib/src/xrc/xmlres.cpp @@ -146,7 +146,6 @@ void wxXmlResource::ClearHandlers() } - wxMenu *wxXmlResource::LoadMenu(const wxString& name) { return (wxMenu*)CreateResFromNode(FindResource(name, wxT("wxMenu")), NULL, NULL); @@ -261,7 +260,7 @@ static void ProcessPlatformProperty(wxXmlNode *node) isok = TRUE; else { - wxStringTokenizer tkn(s, " |"); + wxStringTokenizer tkn(s, wxT(" |")); while (tkn.HasMoreTokens()) { @@ -408,10 +407,25 @@ wxXmlNode *wxXmlResource::DoFindResource(wxXmlNode *parent, if ( node->GetType() == wxXML_ELEMENT_NODE && (node->GetName() == wxT("object") || node->GetName() == wxT("object_ref")) && - (!classname || - node->GetPropVal(wxT("class"), wxEmptyString) == classname) && - node->GetPropVal(wxT("name"), &dummy) && dummy == name ) - return node; + node->GetPropVal(wxT("name"), &dummy) && dummy == name ) + { + wxString cls(node->GetPropVal(wxT("class"), wxEmptyString)); + if (!classname || cls == classname) + return node; + // object_ref may not have 'class' property: + if (cls.empty() && node->GetName() == wxT("object_ref")) + { + wxString refName = node->GetPropVal(wxT("ref"), wxEmptyString); + if (refName.empty()) + continue; + wxXmlNode* refNode = FindResource(refName, wxEmptyString, TRUE); + if (refNode && + refNode->GetPropVal(wxT("class"), wxEmptyString) == classname) + { + return node; + } + } + } } if ( recursive ) @@ -487,7 +501,7 @@ static void MergeNodes(wxXmlNode& dest, wxXmlNode& with) for (dnode = dest.GetChildren(); dnode; dnode = dnode->GetNext() ) { if ( dnode->GetName() == node->GetName() && - dnode->GetPropVal("name", wxEmptyString) == name && + dnode->GetPropVal(wxT("name"), wxEmptyString) == name && dnode->GetType() == node->GetType() ) { MergeNodes(*dnode, *node); @@ -547,6 +561,40 @@ wxObject *wxXmlResource::CreateResFromNode(wxXmlNode *node, wxObject *parent, wx } +#include "wx/listimpl.cpp" +WX_DECLARE_LIST(wxXmlSubclassFactory, wxXmlSubclassFactoriesList); +WX_DEFINE_LIST(wxXmlSubclassFactoriesList); + +wxXmlSubclassFactoriesList *wxXmlResource::ms_subclassFactories = NULL; + +/*static*/ void wxXmlResource::AddSubclassFactory(wxXmlSubclassFactory *factory) +{ + if (!ms_subclassFactories) + { + ms_subclassFactories = new wxXmlSubclassFactoriesList; + ms_subclassFactories->DeleteContents(TRUE); + } + ms_subclassFactories->Append(factory); +} + +class wxXmlSubclassFactoryCXX : public wxXmlSubclassFactory +{ +public: + ~wxXmlSubclassFactoryCXX() {} + + wxObject *Create(const wxString& className) + { + wxClassInfo* classInfo = wxClassInfo::FindClass(className); + + if (classInfo) + return classInfo->CreateObject(); + else + return NULL; + } +}; + + + wxXmlResourceHandler::wxXmlResourceHandler() @@ -568,18 +616,23 @@ wxObject *wxXmlResourceHandler::CreateResource(wxXmlNode *node, wxObject *parent !(m_resource->GetFlags() & wxXRC_NO_SUBCLASSING)) { wxString subclass = node->GetPropVal(wxT("subclass"), wxEmptyString); - wxClassInfo* classInfo = wxClassInfo::FindClass(subclass); - - if (classInfo) - m_instance = classInfo->CreateObject(); - - if (!m_instance) + if (!subclass.empty()) { - wxLogError(_("Subclass '%s' not found for resource '%s', not subclassing!"), - subclass.c_str(), node->GetPropVal(wxT("name"), wxEmptyString).c_str()); - } + for (wxXmlSubclassFactoriesList::Node *i = wxXmlResource::ms_subclassFactories->GetFirst(); + i; i = i->GetNext()) + { + m_instance = i->GetData()->Create(subclass); + if (m_instance) + break; + } - m_instance = classInfo->CreateObject(); + if (!m_instance) + { + wxString name = node->GetPropVal(wxT("name"), wxEmptyString); + wxLogError(_("Subclass '%s' not found for resource '%s', not subclassing!"), + subclass.c_str(), name.c_str()); + } + } } m_node = node; @@ -634,7 +687,7 @@ int wxXmlResourceHandler::GetStyle(const wxString& param, int defaults) if (!s) return defaults; - wxStringTokenizer tkn(s, wxT("| "), wxTOKEN_STRTOK); + wxStringTokenizer tkn(s, wxT("| \t\n"), wxTOKEN_STRTOK); int style = 0; int index; wxString fl; @@ -733,6 +786,7 @@ int wxXmlResourceHandler::GetID() stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD); stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP); stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT); + stdID(wxID_CLOSE_ALL); #undef stdID else return wxXmlResource::GetXRCID(sid); } @@ -845,6 +899,8 @@ wxIcon wxXmlResourceHandler::GetIcon(const wxString& param, wxXmlNode *wxXmlResourceHandler::GetParamNode(const wxString& param) { + wxCHECK_MSG(m_node, NULL, wxT("You can't access handler data before it was initialized!")); + wxXmlNode *n = m_node->GetChildren(); while (n) @@ -1054,7 +1110,7 @@ void wxXmlResourceHandler::CreateChildren(wxObject *parent, bool this_hnd_only) while (n) { if (n->GetType() == wxXML_ELEMENT_NODE && - n->GetName() == wxT("object")) + (n->GetName() == wxT("object") || n->GetName() == wxT("object_ref"))) { if (this_hnd_only && CanHandle(n)) CreateResource(n, parent, NULL); @@ -1126,10 +1182,21 @@ static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL}; XRCID_record **rec_var = (oldrec == NULL) ? &XRCID_Records[index] : &oldrec->next; *rec_var = new XRCID_record; - (*rec_var)->id = ++XRCID_LastID; (*rec_var)->key = wxStrdup(str_id); (*rec_var)->next = NULL; + wxChar *end; + int asint = wxStrtol(str_id, &end, 10); + if (*str_id && *end == 0) + { + // if str_id was integer, keep it verbosely: + (*rec_var)->id = asint; + } + else + { + (*rec_var)->id = ++XRCID_LastID; + } + return (*rec_var)->id; } @@ -1166,11 +1233,13 @@ public: wxXmlResourceModule() {} bool OnInit() { + wxXmlResource::AddSubclassFactory(new wxXmlSubclassFactoryCXX); return TRUE; } void OnExit() { delete wxXmlResource::Set(NULL); + wxDELETE(wxXmlResource::ms_subclassFactories); CleanXRCID_Records(); } }; diff --git a/contrib/src/xrc/xmlrsall.cpp b/contrib/src/xrc/xmlrsall.cpp index b55badc9f9..5d933f9490 100644 --- a/contrib/src/xrc/xmlrsall.cpp +++ b/contrib/src/xrc/xmlrsall.cpp @@ -94,4 +94,5 @@ void wxXmlResource::InitAllHandlers() AddHandler(new wxGenericDirCtrlXmlHandler); #endif AddHandler(new wxFrameXmlHandler); + AddHandler(new wxScrolledWindowXmlHandler); } diff --git a/contrib/utils/convertrc/ConvertVC.dsp b/contrib/utils/convertrc/ConvertVC.dsp index 31de3d7b5e..6dcd9a810b 100644 --- a/contrib/utils/convertrc/ConvertVC.dsp +++ b/contrib/utils/convertrc/ConvertVC.dsp @@ -110,7 +110,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxconvert.exe" /pdbtype:sept /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxconvert.exe" /pdbtype:sept /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "ConvertVC - Win32 Release DLL" @@ -137,7 +137,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxconvert.exe" /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxconvert.exe" /libpath:"..\..\..\lib" !ENDIF diff --git a/contrib/utils/convertrc/makefile.wat b/contrib/utils/convertrc/makefile.wat index d27085308e..3e4a1cf5d3 100644 --- a/contrib/utils/convertrc/makefile.wat +++ b/contrib/utils/convertrc/makefile.wat @@ -4,10 +4,16 @@ # WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\utils\convertrc PROGRAM = wxconvert -EXTRALIBS = $(WXDIR)\lib\wxxrc.lib -OBJECTS=convert.obj rc2xml.obj rc2wxr.obj wxr2xml.obj +EXTRALIBS = $(WXDIR)\lib\wxxrc_w.lib +OBJECTS=& + $(OUTPUTDIR)\convert.obj & + $(OUTPUTDIR)\rc2xml.obj & + $(OUTPUTDIR)\rc2wxr.obj & + $(OUTPUTDIR)\wxr2xml.obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/utils/convertrc/rc2xml.cpp b/contrib/utils/convertrc/rc2xml.cpp index ee909b0256..3c8e797ae1 100644 --- a/contrib/utils/convertrc/rc2xml.cpp +++ b/contrib/utils/convertrc/rc2xml.cpp @@ -101,6 +101,8 @@ bool rc2xml::Convert(wxString rcfile, wxString xmlfile) m_xmlfile.Write("\n"); m_xmlfile.Close(); m_rc.Close(); + wxMessageBox(_("Conversion complete."), _("Done"), + wxOK | wxICON_INFORMATION); return TRUE; } @@ -116,7 +118,8 @@ microsoft reuses the keyword DIALOG for other things */ token=PeekToken(); //Microsoft notation? - if (token=="DISCARDABLE") + while ((token=="DISCARDABLE") + ||(token=="LOADONCALL")||(token=="MOVEABLE")) { token=GetToken(); token=PeekToken(); @@ -177,32 +180,60 @@ END void rc2xml::ParseControls() { wxString token; + wxString label,varname; token=GetToken(); while ((token!="END")&(token!="}")) { if (token=="AUTOCHECKBOX") - ParseCheckBox(); + { + label=GetQuoteField(); + varname=GetToken(); + ParseCheckBox(label,varname); + } else if (token=="AUTORADIOBUTTON") - ParseRadioButton(); + { + label=GetQuoteField(); + varname=GetToken(); + ParseRadioButton(label,varname); + } else if (token=="LTEXT") - ParseStaticText(); + { + label=GetQuoteField(); + varname=GetToken(); + ParseStaticText(label,varname); + } else if (token=="EDITTEXT") - ParseTextCtrl(); - else if (token=="PUSHBUTTON") - ParsePushButton(); - else if (token=="DEFPUSHBUTTON") - ParsePushButton(); + { + varname=GetToken(); + ParseTextCtrl(varname); + } + else if ((token=="PUSHBUTTON")||(token=="DEFPUSHBUTTON")) + { + label=GetQuoteField(); + varname=GetToken(); + ParsePushButton(label,varname); + } else if (token=="GROUPBOX") - ParseGroupBox(); + { + label=GetQuoteField(); + varname=GetToken(); + ParseGroupBox(label,varname); + } else if (token=="COMBOBOX") - ParseComboBox(); + { + varname=GetToken(); + ParseComboBox(varname); + } else if (token=="CONTROL") ParseControlMS(); else if (token=="LISTBOX") - ParseListBox(); + { + varname=GetToken(); + ParseListBox(varname); + } else if (token=="ICON") ParseIconStatic(); else if (token=="SCROLLBAR") @@ -212,12 +243,15 @@ void rc2xml::ParseControls() } //LTEXT "Radius",IDC_STATIC,9,67,23,8 -void rc2xml::ParseStaticText() +void rc2xml::ParseStaticText(wxString phrase, wxString varname) { wxString token; - wxString phrase,varname; - phrase=GetQuoteField(); - varname=GetToken(); + token=PeekToken(); + while (!token.IsNumber()) + { + token=GetToken(); + token=PeekToken(); + } int x,y,width,height; ReadRect(x,y,width,height); @@ -227,11 +261,16 @@ void rc2xml::ParseStaticText() } //EDITTEXT IDC_RADIUS,36,65,40,14,ES_AUTOHSCROLL -void rc2xml::ParseTextCtrl() +void rc2xml::ParseTextCtrl(wxString varname) { wxString token; - wxString varname,style; - varname=GetToken(); + wxString style; + token=PeekToken(); + while (!token.IsNumber()) + { + token=GetToken(); + token=PeekToken(); + } int x,y,width,height; ReadRect(x,y,width,height); //TODO @@ -242,13 +281,15 @@ void rc2xml::ParseTextCtrl() } //AUTOCHECKBOX "&log.", ID_XLOG, 25, 24, 21, 12 -void rc2xml::ParseCheckBox() +void rc2xml::ParseCheckBox(wxString phrase, wxString varname) { wxString token; - wxString phrase,varname; - phrase=GetQuoteField(); - varname=GetToken(); - + token=PeekToken(); + while (!token.IsNumber()) + { + token=GetToken(); + token=PeekToken(); + } int x,y,width,height; ReadRect(x,y,width,height); @@ -259,15 +300,14 @@ void rc2xml::ParseCheckBox() } //AUTORADIOBUTTON "&text", ID_SW10, 13, 12, 68, 10, BS_AUTORADIOBUTTON | WS_GROUP -void rc2xml::ParseRadioButton() +void rc2xml::ParseRadioButton(wxString phrase, wxString varname) { wxString token,style; - wxString phrase,varname; - phrase=GetQuoteField(); - varname=GetToken(); - int x,y,width,height; + bool GotOrs; + GotOrs = ReadOrs(token); if (ReadRect(x,y,width,height)) + if (GotOrs==FALSE) ReadOrs(token); if (token.Find("WS_GROUP") != -1) style += "wxRB_GROUP"; @@ -281,13 +321,16 @@ void rc2xml::ParseRadioButton() } //PUSHBUTTON "Create/Update",IDC_CREATE,15,25,53,13,NOT WS_TABSTOP -void rc2xml::ParsePushButton() +void rc2xml::ParsePushButton(wxString phrase, wxString varname) { wxString token; - wxString phrase,varname; - phrase=GetQuoteField(); - varname=GetToken(); + token=PeekToken(); + while (!token.IsNumber()) + { + token=GetToken(); + token=PeekToken(); + } int x,y,width,height; ReadRect(x,y,width,height); @@ -314,13 +357,16 @@ bool rc2xml::Seperator(int ch) return FALSE; } -void rc2xml::ParseGroupBox() +void rc2xml::ParseGroupBox(wxString phrase, wxString varname) { // GROUPBOX "Rotate",IDC_STATIC,1,1,71,79 wxString token; - wxString phrase,varname; - phrase=GetQuoteField(); - varname=GetToken(); + token=PeekToken(); + while (!token.IsNumber()) + { + token=GetToken(); + token=PeekToken(); + } int x,y,width,height; ReadRect(x,y,width,height); @@ -395,9 +441,8 @@ wxString rc2xml::GetQuoteField() while (ch!=34) ReadChar(ch); - ReadChar(ch); - + while (ch!=34) { phrase+=(char)ch; @@ -406,6 +451,49 @@ wxString rc2xml::GetQuoteField() return phrase; } +// string in stringtable may contain embedded quotes +// escape characters retained to allow strings to be rewritten +wxString rc2xml::GetStringQuote() +{ + wxString phrase; + //ASCII code 34 " + bool done=FALSE; + int p,ch=0,lastch=0; + ReadChar(ch); + + while (ch!=34) + ReadChar(ch); + ReadChar(ch); + while (done==FALSE) + { + if ((ch==34)&&(lastch!='\\')) + { + p=m_rc.Tell(); + ReadChar(ch); +// RC supports "", for embedded quote, as well as \" + if (ch==34) + phrase+='\\'; + else + { + m_rc.Seek(p); + done = TRUE; + } + } + if (done==TRUE) + break; + if (ch=='\r') + ReadChar(ch); // skip + if ((ch=='\n')&&(lastch=='\\')) // lastch be this + phrase+='n'; // escape + else + phrase+=(char)ch; + lastch=ch; + ReadChar(ch); + } + + return phrase; +} + void rc2xml::ReadChar(int &ch) { int result; @@ -423,15 +511,16 @@ void rc2xml::ReadChar(int &ch) m_done=TRUE; } -void rc2xml::ParseComboBox() +void rc2xml::ParseComboBox(wxString varname) { /* COMBOBOX IDC_SCALECOMBO,10,110,48,52,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP */ wxString token,style; - wxString varname; - varname=GetToken(); int x,y,width,height; + bool GotOrs; + GotOrs = ReadOrs(token); if (ReadRect(x,y,width,height)) + if (GotOrs==FALSE) ReadOrs(token); m_xmlfile.Write("\t\t\n"); - } - - if (token.Find("BS_AUTORADIOBUTTON")!=-1) - { - ReadRect(x,y,width,height); - m_xmlfile.Write("\t\t\n"); - } - + ParseCheckBox(label, varname); + else if ((token.Find("BS_AUTORADIOBUTTON")!=-1)|| + (token.Find("BS_RADIOBUTTON")!=-1)) + ParseRadioButton(label, varname); + else if (token.Find("BS_GROUPBOX")!=-1) + ParseGroupBox(label, varname); + else // if ((token.Find("BS_PUSHBUTTON")!=-1)|| +// (token.Find("BS_DEFPUSHBUTTON")!=-1)) + ParsePushButton(label, varname); // make default case } - void rc2xml::WriteSize(int width, int height) { wxString msg; @@ -713,11 +799,15 @@ void rc2xml::WriteStyle(wxString style) LISTBOX IDC_LIST1,16,89,48,40,LBS_SORT | LBS_MULTIPLESEL | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP */ -void rc2xml::ParseListBox() +void rc2xml::ParseListBox(wxString varname) { wxString token; - wxString varname; - varname=GetToken(); + token=PeekToken(); + while (!token.IsNumber()) + { + token=GetToken(); + token=PeekToken(); + } int x,y,width,height; ReadRect(x,y,width,height); @@ -811,7 +901,7 @@ void rc2xml::SecondPass() while (!m_done) { token=GetToken(); - if (token=="DIALOG") + if ((token=="DIALOG")||(token=="DIALOGEX")) ParseDialog(prevtok); else if (token=="MENU") ParseMenu(prevtok); @@ -855,7 +945,7 @@ void rc2xml::ParseToolBar(wxString varname) int c=0; wxString buttonname,msg,tip,longhelp; token=GetToken(); - while ((token!="BEGIN")) + while ((token!="BEGIN")&(token!="{")) token=GetToken(); while ((token!="END")&(token!="}")) @@ -905,7 +995,7 @@ void rc2xml::ParseStringTable(wxString varname) { wxString token; token=GetToken(); - while ((token!="BEGIN")) + while ((token!="BEGIN")&(token!="{")) token=GetToken(); token=GetToken(); wxString *msg; @@ -913,7 +1003,7 @@ void rc2xml::ParseStringTable(wxString varname) while ((token!="END")&(token!="}")) { msg=new wxString; - *msg=GetQuoteField(); + *msg=GetStringQuote(); m_stringtable->Append(token,msg); token=GetToken(); } @@ -969,7 +1059,8 @@ void rc2xml::ParseMenuItem() m_xmlfile.Write(">\n"); WriteLabel(token); //Look up help if any listed in stringtable - if (LookUpString(name,msg)) +//can't assume numbers correlate, restrict to string identifiers + if ((!name.IsNumber())&&(LookUpString(name,msg))) { SplitHelp(msg,tip,longhelp); m_xmlfile.Write("\t\t\t" @@ -978,9 +1069,11 @@ void rc2xml::ParseMenuItem() //look for extra attributes like checked and break wxString ptoken; ptoken=PeekToken(); + ptoken.MakeUpper(); while ((ptoken!="MENUITEM")&(ptoken!="POPUP")&(ptoken!="END")) { token=GetToken(); + ptoken.MakeUpper(); if (token=="CHECKED") m_xmlfile.Write("\t\t\t1\n"); else if (token=="MENUBREAK"); @@ -990,6 +1083,7 @@ void rc2xml::ParseMenuItem() wxLogError("Unknown Menu Item token:"+token); ptoken=PeekToken(); + ptoken.MakeUpper(); } m_xmlfile.Write("\t\t\t\n"); @@ -1000,6 +1094,10 @@ void rc2xml::ParseIconStatic() { wxString token; wxString varname,iconname; + token = PeekToken(); + if (token.Contains("\"")) + iconname = GetQuoteField(); + else iconname=GetToken(); //Look up icon varname=GetToken(); @@ -1046,8 +1144,7 @@ void rc2xml::ParseStaticBitmap(wxString bitmapname, wxString varname) { wxString token; //Grab SS_BITMAP - token=GetToken(); - + ReadOrs(token); int x,y,width,height; @@ -1085,6 +1182,23 @@ kindctrl.MakeUpper(); ParseCtrlButton(label,varname); if (kindctrl=="RICHEDIT") ParseRichEdit(label,varname); + if (kindctrl=="STATIC") + { + wxString token; + int p=m_rc.Tell(); + ReadOrs(token); + m_rc.Seek(p); + if (token.Find("SS_BITMAP")!=-1) + ParseStaticBitmap(label,varname); + else + ParseStaticText(label,varname); + } + if (kindctrl=="EDIT") + ParseTextCtrl(varname); + if (kindctrl=="LISTBOX") + ParseListBox(varname); + if (kindctrl=="COMBOBOX") + ParseComboBox(varname); } diff --git a/contrib/utils/convertrc/rc2xml.h b/contrib/utils/convertrc/rc2xml.h index 184a8dadfb..0b53937bff 100644 --- a/contrib/utils/convertrc/rc2xml.h +++ b/contrib/utils/convertrc/rc2xml.h @@ -52,19 +52,20 @@ protected: void ParseRichEdit(wxString label, wxString varname); void ParseDialog(wxString dlgname); void ParseControls(); - void ParseListBox(); - void ParseStaticText(); - void ParseTextCtrl(); - void ParseRadioButton(); - void ParseCheckBox(); - void ParsePushButton(); + void ParseListBox(wxString varname); + void ParseStaticText(wxString phrase,wxString varname); + void ParseTextCtrl(wxString varname); + void ParseRadioButton(wxString phrase,wxString varname); + void ParseCheckBox(wxString phrase,wxString varname); + void ParsePushButton(wxString phrase, wxString varname); bool Seperator(int ch); - void ParseGroupBox(); + void ParseGroupBox(wxString phrase, wxString varname); bool ReadRect(int & x, int & y, int & width, int & height); wxString GetToken(bool *listseperator = 0); wxString GetQuoteField(); + wxString GetStringQuote(); void ReadChar(int &ch); - void ParseComboBox(); + void ParseComboBox(wxString varname); void ParseMenu(wxString varname); void ParsePopupMenu(); wxString PeekToken(); @@ -92,4 +93,4 @@ protected: }; -#endif \ No newline at end of file +#endif diff --git a/contrib/utils/convertrc/wxr2xml.h b/contrib/utils/convertrc/wxr2xml.h index dd699e7e2a..8692f9c8b9 100644 --- a/contrib/utils/convertrc/wxr2xml.h +++ b/contrib/utils/convertrc/wxr2xml.h @@ -8,6 +8,9 @@ #include #include "wx/resource.h" +#if !wxUSE_WX_RESOURCES +#error "convertc requires wxUSE_WX_RESOURCES" +#endif // wxUSE_WX_RESOURCES class wxr2xml : public wxObject { diff --git a/contrib/utils/wxrc/Makefile.in b/contrib/utils/wxrc/Makefile.in index 9685e6f172..b20802bbb0 100644 --- a/contrib/utils/wxrc/Makefile.in +++ b/contrib/utils/wxrc/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=wxrc OBJECTS=wxrc.o -APPEXTRALIBS=$(top_builddir)/lib/libwxxrc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/utils/wxrc/makefile.wat b/contrib/utils/wxrc/makefile.wat index 4a5d318872..ac1ff9c3fa 100644 --- a/contrib/utils/wxrc/makefile.wat +++ b/contrib/utils/wxrc/makefile.wat @@ -4,10 +4,12 @@ # WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\utils\wxrc PROGRAM = wxrc -EXTRALIBS = $(WXDIR)\lib\wxxrc.lib -OBJECTS = $(PROGRAM).obj +EXTRALIBS = $(WXDIR)\lib\wxxrc_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/utils/wxrc/wxRcVC.dsp b/contrib/utils/wxrc/wxRcVC.dsp index 24ae29e1e7..de7b0fea24 100644 --- a/contrib/utils/wxrc/wxRcVC.dsp +++ b/contrib/utils/wxrc/wxRcVC.dsp @@ -110,7 +110,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxrc.exe" /pdbtype:sept /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxrc.exe" /pdbtype:sept /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "wxRcVC - Win32 Release DLL" @@ -137,7 +137,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxrc.exe" /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxrc.exe" /libpath:"..\..\..\lib" !ENDIF diff --git a/contrib/utils/wxrc/wxrc.cpp b/contrib/utils/wxrc/wxrc.cpp index 23b27952a7..82ec56fbd3 100644 --- a/contrib/utils/wxrc/wxrc.cpp +++ b/contrib/utils/wxrc/wxrc.cpp @@ -84,18 +84,18 @@ int XmlResApp::OnRun() { static const wxCmdLineEntryDesc cmdLineDesc[] = { - { wxCMD_LINE_SWITCH, "h", "help", "show help message", + { wxCMD_LINE_SWITCH, _T("h"), _T("help"), _T("show help message"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, - { wxCMD_LINE_SWITCH, "v", "verbose", "be verbose" }, - { wxCMD_LINE_SWITCH, "c", "cpp-code", "output C++ source rather than .rsc file" }, - { wxCMD_LINE_SWITCH, "p", "python-code", "output wxPython source rather than .rsc file" }, - { wxCMD_LINE_SWITCH, "g", "gettext", "output list of translatable strings (to stdout or file if -o used)" }, - { wxCMD_LINE_OPTION, "n", "function", "C++/Python function name (with -c or -p) [InitXmlResource]" }, - { wxCMD_LINE_OPTION, "o", "output", "output file [resource.xrs/cpp]" }, + { wxCMD_LINE_SWITCH, _T("v"), _T("verbose"), _T("be verbose") }, + { wxCMD_LINE_SWITCH, _T("c"), _T("cpp-code"), _T("output C++ source rather than .rsc file") }, + { wxCMD_LINE_SWITCH, _T("p"), _T("python-code"), _T("output wxPython source rather than .rsc file") }, + { wxCMD_LINE_SWITCH, _T("g"), _T("gettext"), _T("output list of translatable strings (to stdout or file if -o used)") }, + { wxCMD_LINE_OPTION, _T("n"), _T("function"), _T("C++/Python function name (with -c or -p) [InitXmlResource]") }, + { wxCMD_LINE_OPTION, _T("o"), _T("output"), _T("output file [resource.xrs/cpp]") }, #if 0 // not yet implemented - { wxCMD_LINE_OPTION, "l", "list-of-handlers", "output list of neccessary handlers to this file" }, + { wxCMD_LINE_OPTION, _T("l"), _T("list-of-handlers", _T("output list of neccessary handlers to this file" }, #endif - { wxCMD_LINE_PARAM, NULL, NULL, "input file(s)", + { wxCMD_LINE_PARAM, NULL, NULL, _T("input file(s)"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_OPTION_MANDATORY }, @@ -139,30 +139,30 @@ int XmlResApp::OnRun() void XmlResApp::ParseParams(const wxCmdLineParser& cmdline) { - flagGettext = cmdline.Found("g"); - flagVerbose = cmdline.Found("v"); - flagCPP = cmdline.Found("c"); - flagPython = cmdline.Found("p"); + flagGettext = cmdline.Found(_T("g")); + flagVerbose = cmdline.Found(_T("v")); + flagCPP = cmdline.Found(_T("c")); + flagPython = cmdline.Found(_T("p")); - if (!cmdline.Found("o", &parOutput)) + if (!cmdline.Found(_T("o"), &parOutput)) { if (flagGettext) parOutput = wxEmptyString; else { if (flagCPP) - parOutput = "resource.cpp"; + parOutput = _T("resource.cpp"); else if (flagPython) - parOutput = "resource.py"; + parOutput = _T("resource.py"); else - parOutput = "resource.xrs"; + parOutput = _T("resource.xrs"); } } parOutputPath = wxPathOnly(parOutput); - if (!parOutputPath) parOutputPath = "."; + if (!parOutputPath) parOutputPath = _T("."); - if (!cmdline.Found("n", &parFuncname)) - parFuncname = "InitXmlResource"; + if (!cmdline.Found(_T("n"), &parFuncname)) + parFuncname = _T("InitXmlResource"); for (size_t i = 0; i < cmdline.GetParamCount(); i++) parFiles.Add(cmdline.GetParam(i)); @@ -194,19 +194,19 @@ void XmlResApp::CompileRes() wxString XmlResApp::GetInternalFileName(const wxString& name, const wxArrayString& flist) { wxString name2 = name; - name2.Replace(":", "_"); - name2.Replace("/", "_"); - name2.Replace("\\", "_"); - name2.Replace("*", "_"); - name2.Replace("?", "_"); + name2.Replace(_T(":"), _T("_")); + name2.Replace(_T("/"), _T("_")); + name2.Replace(_T("\\"), _T("_")); + name2.Replace(_T("*"), _T("_")); + name2.Replace(_T("?"), _T("_")); - wxString s = wxFileNameFromPath(parOutput) + "$" + name2; + wxString s = wxFileNameFromPath(parOutput) + _T("$") + name2; if (wxFileExists(s) && flist.Index(s) == wxNOT_FOUND) { for (int i = 0;; i++) { - s.Printf(wxFileNameFromPath(parOutput) + "$%03i-" + name2, i); + s.Printf(wxFileNameFromPath(parOutput) + _T("$%03i-") + name2, i); if (!wxFileExists(s) || flist.Index(s) != wxNOT_FOUND) break; } @@ -221,13 +221,13 @@ wxArrayString XmlResApp::PrepareTempFiles() for (size_t i = 0; i < parFiles.Count(); i++) { if (flagVerbose) - wxPrintf("processing " + parFiles[i] + "...\n"); + wxPrintf(_T("processing ") + parFiles[i] + _T("...\n")); wxXmlDocument doc; if (!doc.Load(parFiles[i])) { - wxLogError("Error parsing file " + parFiles[i]); + wxLogError(_T("Error parsing file ") + parFiles[i]); retCode = 1; continue; } @@ -239,7 +239,7 @@ wxArrayString XmlResApp::PrepareTempFiles() wxString internalName = GetInternalFileName(parFiles[i], flist); - doc.Save(parOutputPath + "/" + internalName); + doc.Save(parOutputPath + _T("/") + internalName); flist.Add(internalName); } @@ -251,42 +251,55 @@ wxArrayString XmlResApp::PrepareTempFiles() // find all files mentioned in structure, e.g. filename void XmlResApp::FindFilesInXML(wxXmlNode *node, wxArrayString& flist, const wxString& inputPath) { - wxXmlNode *n = node; - if (n == NULL) return; - n = n->GetChildren(); - + // Is 'node' XML node element? + if (node == NULL) return; + if (node->GetType() != wxXML_ELEMENT_NODE) return; + + // Does 'node' contain filename information at all? + bool containsFilename = ( + // Any bitmaps: + (node->GetName() == _T("bitmap")) || + // URLs in wxHtmlWindow: + (node->GetName() == _T("url")) || + // wxBitmapButton: + (node->GetParent() != NULL && + node->GetParent()->GetPropVal(_T("class"), _T("")) == _T("wxBitmapButton") && + (node->GetName() == _T("focus") || + node->GetName() == _T("disabled") || + node->GetName() == _T("selected"))) + ); + + wxXmlNode *n = node->GetChildren(); while (n) { - if ((node->GetType() == wxXML_ELEMENT_NODE) && - // parent is an element, i.e. has subnodes... + if (containsFilename && (n->GetType() == wxXML_TEXT_NODE || - n->GetType() == wxXML_CDATA_SECTION_NODE) && - // ...it is textnode... - ((node/*not n!*/->GetName() == "bitmap") || - (node/*not n!*/->GetName() == "url"))) - // ...and known to contain filename + n->GetType() == wxXML_CDATA_SECTION_NODE)) { wxString fullname; - if (wxIsAbsolutePath(n->GetContent()) || inputPath == "") fullname = n->GetContent(); - else fullname = inputPath + "/" + n->GetContent(); + if (wxIsAbsolutePath(n->GetContent()) || inputPath.empty()) + fullname = n->GetContent(); + else + fullname = inputPath + _T("/") + n->GetContent(); if (flagVerbose) - wxPrintf("adding " + fullname + "...\n"); - + wxPrintf(_T("adding ") + fullname + _T("...\n")); + wxString filename = GetInternalFileName(n->GetContent(), flist); n->SetContent(filename); - flist.Add(filename); + if (flist.Index(filename) == wxNOT_FOUND) + flist.Add(filename); wxFileInputStream sin(fullname); - wxFileOutputStream sout(parOutputPath + "/" + filename); + wxFileOutputStream sout(parOutputPath + _T("/") + filename); sin.Read(sout); // copy the stream } - + // subnodes: if (n->GetType() == wxXML_ELEMENT_NODE) FindFilesInXML(n, flist, inputPath); - + n = n->GetNext(); } } @@ -296,7 +309,7 @@ void XmlResApp::FindFilesInXML(wxXmlNode *node, wxArrayString& flist, const wxSt void XmlResApp::DeleteTempFiles(const wxArrayString& flist) { for (size_t i = 0; i < flist.Count(); i++) - wxRemoveFile(parOutputPath + "/" + flist[i]); + wxRemoveFile(parOutputPath + _T("/") + flist[i]); } @@ -306,17 +319,17 @@ void XmlResApp::MakePackageZIP(const wxArrayString& flist) wxString files; for (size_t i = 0; i < flist.Count(); i++) - files += flist[i] + " "; + files += flist[i] + _T(" "); files.RemoveLast(); if (flagVerbose) - wxPrintf("compressing " + parOutput + "...\n"); + wxPrintf(_T("compressing ") + parOutput + _T("...\n")); - if (wxExecute("zip -9 -j " + wxString(flagVerbose ? "" : "-q ") + - parOutput + " " + files, TRUE) == -1) + if (wxExecute(_T("zip -9 -j ") + wxString(flagVerbose ? _T("") : _T("-q ")) + + parOutput + _T(" ") + files, TRUE) == -1) { - wxLogError("Unable to execute zip program. Make sure it is in the path."); - wxLogError("You can download it at http://www.cdrom.com/pub/infozip/"); + wxLogError(_T("Unable to execute zip program. Make sure it is in the path.")); + wxLogError(_T("You can download it at http://www.cdrom.com/pub/infozip/")); retCode = 1; return; } @@ -333,9 +346,9 @@ static wxString FileToCppArray(wxString filename, int num) wxFFile file(filename, "rb"); size_t lng = file.Length(); - snum.Printf("%i", num); - output.Printf("static size_t xml_res_size_" + snum + " = %i;\n", lng); - output += "static unsigned char xml_res_file_" + snum + "[] = {\n"; + snum.Printf(_T("%i"), num); + output.Printf(_T("static size_t xml_res_size_") + snum + _T(" = %i;\n"), lng); + output += _T("static unsigned char xml_res_file_") + snum + _T("[] = {\n"); // we cannot use string literals because MSVC is dumb wannabe compiler // with arbitrary limitation to 2048 strings :( @@ -344,12 +357,12 @@ static wxString FileToCppArray(wxString filename, int num) for (size_t i = 0, linelng = 0; i < lng; i++) { - tmp.Printf("%i", buffer[i]); - if (i != 0) output << ','; + tmp.Printf(_T("%i"), buffer[i]); + if (i != 0) output << _T(','); if (linelng > 70) { linelng = 0; - output << "\n"; + output << _T("\n"); } output << tmp; linelng += tmp.Length()+1; @@ -357,7 +370,7 @@ static wxString FileToCppArray(wxString filename, int num) delete[] buffer; - output += "};\n\n"; + output += _T("};\n\n"); return output; } @@ -369,61 +382,61 @@ void XmlResApp::MakePackageCPP(const wxArrayString& flist) size_t i; if (flagVerbose) - wxPrintf("creating C++ source file " + parOutput + "...\n"); + wxPrintf(_T("creating C++ source file ") + parOutput + _T("...\n")); - file.Write("\ -//\n\ -// This file was automatically generated by wxrc, do not edit by hand.\n\ -//\n\n\ -#include \n\ -\n\ -#ifdef __BORLANDC__\n\ - #pragma hdrstop\n\ -#endif\n\ -\n\ -#ifndef WX_PRECOMP\n\ - #include \n\ -#endif\n\ -\ -#include \n\ -#include \n\ -#include \n\ -#include \n\ -\n"); + file.Write(_T("") +_T("//\n") +_T("// This file was automatically generated by wxrc, do not edit by hand.\n") +_T("//\n\n") +_T("#include \n") +_T("\n") +_T("#ifdef __BORLANDC__\n") +_T(" #pragma hdrstop\n") +_T("#endif\n") +_T("\n") +_T("#ifndef WX_PRECOMP\n") +_T(" #include \n") +_T("#endif\n") +_T("") +_T("#include \n") +_T("#include \n") +_T("#include \n") +_T("#include \n") +_T("\n")); for (i = 0; i < flist.Count(); i++) file.Write(FileToCppArray(flist[i], i)); - file.Write("\ -void " + parFuncname + "()\n\ -{\n\ -\n\ - // Check for memory FS. If not present, load the handler:\n\ - {\n\ - wxMemoryFSHandler::AddFile(\"XRC_resource/dummy_file\", \"dummy one\");\n\ - wxFileSystem fsys;\n\ - wxFSFile *f = fsys.OpenFile(\"memory:XRC_resource/dummy_file\");\n\ - wxMemoryFSHandler::RemoveFile(\"XRC_resource/dummy_file\");\n\ - if (f) delete f;\n\ - else wxFileSystem::AddHandler(new wxMemoryFSHandler);\n\ - }\n\ -\n"); + file.Write(_T("") +_T("void ") + parFuncname + wxT("()\n") +_T("{\n") +_T("\n") +_T(" // Check for memory FS. If not present, load the handler:\n") +_T(" {\n") +_T(" wxMemoryFSHandler::AddFile(wxT(\"XRC_resource/dummy_file\"), wxT(\"dummy one\"));\n") +_T(" wxFileSystem fsys;\n") +_T(" wxFSFile *f = fsys.OpenFile(wxT(\"memory:XRC_resource/dummy_file\"));\n") +_T(" wxMemoryFSHandler::RemoveFile(wxT(\"XRC_resource/dummy_file\"));\n") +_T(" if (f) delete f;\n") +_T(" else wxFileSystem::AddHandler(new wxMemoryFSHandler);\n") +_T(" }\n") +_T("\n")); for (i = 0; i < flist.Count(); i++) { wxString s; - s.Printf(" wxMemoryFSHandler::AddFile(\"XRC_resource/" + flist[i] + - "\", xml_res_file_%i, xml_res_size_%i);\n", i, i); + s.Printf(_T(" wxMemoryFSHandler::AddFile(wxT(\"XRC_resource/") + flist[i] + + _T("\"), xml_res_file_%i, xml_res_size_%i);\n"), i, i); file.Write(s); } for (i = 0; i < parFiles.Count(); i++) { - file.Write(" wxXmlResource::Get()->Load(\"memory:XRC_resource/" + - GetInternalFileName(parFiles[i], flist) + "\");\n"); + file.Write(_T(" wxXmlResource::Get()->Load(wxT(\"memory:XRC_resource/") + + GetInternalFileName(parFiles[i], flist) + _T("\"));\n")); } - file.Write("}\n"); + file.Write(_T("}\n")); } @@ -436,8 +449,8 @@ static wxString FileToPythonArray(wxString filename, int num) wxFFile file(filename, "rb"); size_t lng = file.Length(); - snum.Printf("%i", num); - output = " xml_res_file_" + snum + " = \"\"\"\\\n"; + snum.Printf(_T("%i"), num); + output = _T(" xml_res_file_") + snum + _T(" = \"\"\"\\\n"); unsigned char *buffer = new unsigned char[lng]; file.Read(buffer, lng); @@ -451,15 +464,15 @@ static wxString FileToPythonArray(wxString filename, int num) linelng = 0; } else if (c < 32 || c > 127) - tmp.Printf("\\x%02x", c); + tmp.Printf(_T("\\x%02x"), c); else if (c == '\\') - tmp = "\\\\"; + tmp = _T("\\\\"); else tmp = (wxChar)c; if (linelng > 70) { linelng = 0; - output << "\\\n"; + output << _T("\\\n"); } output << tmp; linelng += tmp.Length(); @@ -467,7 +480,7 @@ static wxString FileToPythonArray(wxString filename, int num) delete[] buffer; - output += "\"\"\"\n\n"; + output += _T("\"\"\"\n\n"); return output; } @@ -479,18 +492,18 @@ void XmlResApp::MakePackagePython(const wxArrayString& flist) size_t i; if (flagVerbose) - wxPrintf("creating Python source file " + parOutput + "...\n"); + wxPrintf(_T("creating Python source file ") + parOutput + _T("...\n")); file.Write( - "#\n" - "# This file was automatically generated by wxrc, do not edit by hand.\n" - "#\n\n" - "from wxPython.wx import *\n" - "from wxPython.xrc import *\n\n" + _T("#\n") + _T("# This file was automatically generated by wxrc, do not edit by hand.\n") + _T("#\n\n") + _T("from wxPython.wx import *\n") + _T("from wxPython.xrc import *\n\n") ); - file.Write("def " + parFuncname + "():\n"); + file.Write(_T("def ") + parFuncname + _T("():\n")); for (i = 0; i < flist.Count(); i++) file.Write(FileToPythonArray(flist[i], i)); @@ -498,7 +511,7 @@ void XmlResApp::MakePackagePython(const wxArrayString& flist) for (i = 0; i < flist.Count(); i++) { wxString s; - s.Printf(" wxXmlResource_Get().LoadFromString(xml_res_file_%i)\n", i); + s.Printf(_T(" wxXmlResource_Get().LoadFromString(xml_res_file_%i)\n"), i); file.Write(s); } } @@ -511,7 +524,7 @@ void XmlResApp::OutputGettext() wxFFile fout; if (!parOutput) fout.Attach(stdout); - else fout.Open(parOutput, _T("wt")); + else fout.Open(parOutput, "wt"); for (size_t i = 0; i < str.GetCount(); i++) fout.Write(_T("_(\"") + str[i] + _T("\");\n")); @@ -528,12 +541,12 @@ wxArrayString XmlResApp::FindStrings() for (size_t i = 0; i < parFiles.Count(); i++) { if (flagVerbose) - wxPrintf("processing " + parFiles[i] + "...\n"); + wxPrintf(_T("processing ") + parFiles[i] + _T("...\n")); wxXmlDocument doc; if (!doc.Load(parFiles[i])) { - wxLogError("Error parsing file " + parFiles[i]); + wxLogError(_T("Error parsing file ") + parFiles[i]); retCode = 1; continue; } @@ -567,7 +580,13 @@ static wxString ConvertText(const wxString& str) case wxT('\n') : str2 << wxT("\\n"); break; case wxT('\t') : str2 << wxT("\\t"); break; case wxT('\r') : str2 << wxT("\\r"); break; - case wxT('\\') : str2 << wxT("\\\\"); break; + case wxT('\\') : if ((*(dt+1) != 'n') && + (*(dt+1) != 't') && + (*(dt+1) != 'r')) + str2 << wxT("\\\\"); + else + str2 << wxT("\\"); + break; case wxT('"') : str2 << wxT("\\\""); break; default : str2 << *dt; break; } diff --git a/contrib/utils/wxrcedit/Makefile.in b/contrib/utils/wxrcedit/Makefile.in index 8f84122ee3..7fef156197 100644 --- a/contrib/utils/wxrcedit/Makefile.in +++ b/contrib/utils/wxrcedit/Makefile.in @@ -25,7 +25,7 @@ DATAFILES = df/break.df df/control.df df/menu_item.df df/notebookpage.df \ df/wxStaticLine.df df/wxStaticText.df df/wxTextCtrl.df \ df/wxToolBar.df df/wxTreeCtrl.df -APPEXTRALIBS=$(top_builddir)/lib/libwxxrc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/contrib/utils/wxrcedit/editor.cpp b/contrib/utils/wxrcedit/editor.cpp index affbc9e01b..d6b7c22f90 100644 --- a/contrib/utils/wxrcedit/editor.cpp +++ b/contrib/utils/wxrcedit/editor.cpp @@ -92,7 +92,7 @@ void wxXmlRcEditDocument::Upgrade() UpgradeNode(node); } node->DeleteProperty(wxT("version")); - node->AddProperty(wxT("version"), wxT(WX_XMLRES_CURRENT_VERSION_STRING)); + node->AddProperty(wxT("version"), WX_XMLRES_CURRENT_VERSION_STRING); } @@ -341,6 +341,12 @@ void EditorFrame::NewFile() m_FileName = ""; m_Resource = new wxXmlRcEditDocument; m_Resource->SetRoot(new wxXmlNode(wxXML_ELEMENT_NODE, _("resource"))); + m_Resource->SetFileEncoding("utf-8"); +#if !wxUSE_UNICODE + m_Resource->SetEncoding(wxLocale::GetSystemEncodingName()); +#endif + m_Resource->GetRoot()->AddProperty(_T("version"), + WX_XMLRES_CURRENT_VERSION_STRING); m_Modified = FALSE; RefreshTree(); @@ -482,20 +488,19 @@ void EditorFrame::OnTreeSel(wxTreeEvent& event) if (node) PropertiesFrame::Get()->ShowProps(node); - if (m_TreeCtrl->GetParent(event.GetItem()) == m_TreeCtrl->GetRootItem()) + if (m_TreeCtrl->GetItemParent(event.GetItem()) == m_TreeCtrl->GetRootItem()) { wxTreeItemId it = event.GetOldItem(); if (it.IsOk() && m_TreeCtrl->GetRootItem() != it) { - while (m_TreeCtrl->GetParent(it) != m_TreeCtrl->GetRootItem()) - it = m_TreeCtrl->GetParent(it); + while (m_TreeCtrl->GetItemParent(it) != m_TreeCtrl->GetRootItem()) + it = m_TreeCtrl->GetItemParent(it); m_TreeCtrl->Collapse(it); } RecursivelyExpand(m_TreeCtrl, event.GetItem()); - PreviewFrame::Get()->Preview(node,m_Resource->GetRoot()->GetPropVal( - wxT("version"), wxT("0.0.0.0"))); + PreviewFrame::Get()->Preview(node,m_Resource); } } @@ -509,8 +514,7 @@ void EditorFrame::OnToolbar(wxCommandEvent& event) { XmlTreeData* dt = (XmlTreeData*)m_TreeCtrl->GetItemData(m_TreeCtrl->GetSelection());; if (dt != NULL && dt->Node != NULL) - PreviewFrame::Get()->Preview(dt->Node,m_Resource->GetRoot()->GetPropVal( - wxT("version"), wxT("0.0.0.0"))); + PreviewFrame::Get()->Preview(dt->Node, m_Resource); break; } @@ -559,7 +563,7 @@ void EditorFrame::OnToolbar(wxCommandEvent& event) void EditorFrame::DeleteSelectedNode() { XmlTreeData *dt = (XmlTreeData*) - (m_TreeCtrl->GetItemData(m_TreeCtrl->GetParent(m_TreeCtrl->GetSelection()))); + (m_TreeCtrl->GetItemData(m_TreeCtrl->GetItemParent(m_TreeCtrl->GetSelection()))); wxXmlNode *n = (dt) ? dt->Node : NULL; m_SelectedNode->GetParent()->RemoveChild(m_SelectedNode); @@ -575,7 +579,7 @@ void EditorFrame::OnNewNode(wxCommandEvent& event) { XmlTreeData *pardt = (XmlTreeData*)(m_TreeCtrl->GetItemData( - m_TreeCtrl->GetParent(m_TreeCtrl->GetSelection()))); + m_TreeCtrl->GetItemParent(m_TreeCtrl->GetSelection()))); if (pardt && pardt->Node && pardt->Node != m_Resource->GetRoot()) { @@ -679,7 +683,7 @@ void EditorFrame::OnRightClickTree(wxPoint pos) XmlTreeData *pardt = (XmlTreeData*)(m_TreeCtrl->GetItemData( - m_TreeCtrl->GetParent(m_TreeCtrl->GetSelection()))); + m_TreeCtrl->GetItemParent(m_TreeCtrl->GetSelection()))); if (pardt && pardt->Node && pardt->Node != m_Resource->GetRoot()) { wxXmlNode *nd = pardt->Node; @@ -744,7 +748,7 @@ void EditorFrame::OnClipboardAction(wxCommandEvent& event) { XmlTreeData *pardt = (XmlTreeData*)(m_TreeCtrl->GetItemData( - m_TreeCtrl->GetParent(m_TreeCtrl->GetSelection()))); + m_TreeCtrl->GetItemParent(m_TreeCtrl->GetSelection()))); if (pardt && pardt->Node && pardt->Node != m_Resource->GetRoot()) { diff --git a/contrib/utils/wxrcedit/makefile.wat b/contrib/utils/wxrcedit/makefile.wat index 00a62ff36b..40d5f88bf9 100644 --- a/contrib/utils/wxrcedit/makefile.wat +++ b/contrib/utils/wxrcedit/makefile.wat @@ -4,10 +4,22 @@ # WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\utils\wxrcedit PROGRAM = wxrcedit -EXTRALIBS = $(WXDIR)\lib\wxxrc.lib -OBJECTS=edapp.obj editor.obj nodehnd.obj xmlhelpr.obj preview.obj nodesdb.obj pe_basic.obj pe_adv.obj propedit.obj propframe.obj splittree.obj +EXTRALIBS = $(WXDIR)\lib\wxxrc_w.lib +OBJECTS=$(OUTPUTDIR)\edapp.obj & + $(OUTPUTDIR)\editor.obj & + $(OUTPUTDIR)\nodehnd.obj & + $(OUTPUTDIR)\xmlhelpr.obj & + $(OUTPUTDIR)\preview.obj & + $(OUTPUTDIR)\nodesdb.obj & + $(OUTPUTDIR)\pe_basic.obj & + $(OUTPUTDIR)\pe_adv.obj & + $(OUTPUTDIR)\propedit.obj & + $(OUTPUTDIR)\propframe.obj & + $(OUTPUTDIR)\splittree.obj !include $(WXDIR)\src\makeprog.wat diff --git a/contrib/utils/wxrcedit/pe_basic.cpp b/contrib/utils/wxrcedit/pe_basic.cpp index 876c4f80fe..0b017f5904 100644 --- a/contrib/utils/wxrcedit/pe_basic.cpp +++ b/contrib/utils/wxrcedit/pe_basic.cpp @@ -172,7 +172,7 @@ class PropEditCtrlCoordXY : public PropEditCtrlInt wxString prev = XmlReadValue(GetNode(), m_PropInfo->Name); if (prev[prev.Len()-1] == _T('d')) s << _T('d'); XmlWriteValue(GetNode(), m_PropInfo->Name, s); - m_TreeCtrl->SetItemBold(m_TreeCtrl->GetParent(m_TreeItem), TRUE); + m_TreeCtrl->SetItemBold(m_TreeCtrl->GetItemParent(m_TreeItem), TRUE); } virtual wxString GetValueAsText(wxTreeItemId ti) @@ -228,7 +228,7 @@ class PropEditCtrlCoordDlg : public PropEditCtrlBool wxString s = XmlReadValue(GetNode(), m_PropInfo->Name).BeforeFirst(_T('d')); if (m_Choice->GetSelection() == 1) s << _T('d'); XmlWriteValue(GetNode(), m_PropInfo->Name, s); - m_TreeCtrl->SetItemBold(m_TreeCtrl->GetParent(m_TreeItem), TRUE); + m_TreeCtrl->SetItemBold(m_TreeCtrl->GetItemParent(m_TreeItem), TRUE); } virtual wxString GetValueAsText(wxTreeItemId ti) @@ -309,7 +309,7 @@ class PropEditCtrlDimX : public PropEditCtrlInt s = m_c; if (dlg) s << _T('d'); XmlWriteValue(GetNode(), m_PropInfo->Name, s); - m_TreeCtrl->SetItemBold(m_TreeCtrl->GetParent(m_TreeItem), TRUE); + m_TreeCtrl->SetItemBold(m_TreeCtrl->GetItemParent(m_TreeItem), TRUE); } virtual wxString GetValueAsText(wxTreeItemId ti) diff --git a/contrib/utils/wxrcedit/preview.cpp b/contrib/utils/wxrcedit/preview.cpp index ddf3be2b61..a7ffa2eacd 100644 --- a/contrib/utils/wxrcedit/preview.cpp +++ b/contrib/utils/wxrcedit/preview.cpp @@ -140,8 +140,10 @@ void PreviewFrame::MakeDirty() -void PreviewFrame::Preview(wxXmlNode *node,const wxString &version) +void PreviewFrame::Preview(wxXmlNode *node, wxXmlDocument *orig_doc) { + wxString version = orig_doc->GetRoot()->GetPropVal(wxT("version"), wxT("0.0.0.0")); + while (node->GetParent()->GetParent() != NULL) node = node->GetParent(); { @@ -150,6 +152,7 @@ void PreviewFrame::Preview(wxXmlNode *node,const wxString &version) root->AddProperty(new wxXmlProperty(wxT("version"),version,NULL)); doc.SetRoot(root); doc.GetRoot()->AddChild(new wxXmlNode(*node)); + doc.SetFileEncoding(orig_doc->GetFileEncoding()); if (XmlGetClass(doc.GetRoot()->GetChildren()) == _T("wxDialog")) XmlSetClass(doc.GetRoot()->GetChildren(), _T("wxPanel")); @@ -168,7 +171,7 @@ void PreviewFrame::Preview(wxXmlNode *node,const wxString &version) } m_Node = node; - m_Version = version; + m_Doc = orig_doc; m_LogCtrl->Clear(); wxLogTextCtrl mylog(m_LogCtrl); @@ -237,5 +240,5 @@ END_EVENT_TABLE() void PreviewFrame::OnMouseEnter(wxMouseEvent& event) { - if (m_Dirty) Preview(m_Node,m_Version); + if (m_Dirty) Preview(m_Node,m_Doc); } diff --git a/contrib/utils/wxrcedit/preview.h b/contrib/utils/wxrcedit/preview.h index abacbc1578..50b690a9df 100644 --- a/contrib/utils/wxrcedit/preview.h +++ b/contrib/utils/wxrcedit/preview.h @@ -31,7 +31,7 @@ class PreviewFrame : public wxFrame PreviewFrame(); ~PreviewFrame(); - void Preview(wxXmlNode *node,const wxString &version); + void Preview(wxXmlNode *node,wxXmlDocument *doc); void MakeDirty(); // current node updated, needs preview refresh // (will be done once mouse enters preview win) @@ -47,7 +47,7 @@ class PreviewFrame : public wxFrame private: static PreviewFrame *ms_Instance; wxXmlNode *m_Node; - wxString m_Version; + wxXmlDocument *m_Doc; wxScrolledWindow *m_ScrollWin; wxTextCtrl *m_LogCtrl; wxSplitterWindow *m_Splitter; diff --git a/contrib/utils/wxrcedit/wxRcEditVC.dsp b/contrib/utils/wxrcedit/wxRcEditVC.dsp index eddeaab732..8f8be0b050 100644 --- a/contrib/utils/wxrcedit/wxRcEditVC.dsp +++ b/contrib/utils/wxrcedit/wxRcEditVC.dsp @@ -110,7 +110,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib wxxrcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxrcedit.exe" /pdbtype:sept /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib wxxrcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxrcedit.exe" /pdbtype:sept /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "wxRcEditVC - Win32 Release DLL" @@ -137,7 +137,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib wxxrc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxrcedit.exe" /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib wxxrc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxrcedit.exe" /libpath:"..\..\..\lib" !ENDIF diff --git a/debian/README.Debian b/debian/README.Debian index 84b7479015..1075a65747 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -27,12 +27,12 @@ wxwin-i18n message catalogs for native language support The following three can be built from the source package with the mingw32 cross compiler, but are not currently distributed by Debian. If you feel that should change, - please file a bug against the wxwindows2.2 package, or + please file a bug against the wxwindows2.4 package, or append your views to a report already there if you're not the first to do so. [ you can check the current state of affairs at: - http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=wxwindows2.2 ] + http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=wxwindows2.4 ] Oh and, please do *not* file bug reports for these packages to the Debian bts. But do feel free to email me personally @@ -44,7 +44,9 @@ libwxbase-msw-dev mingw32-cross wxBase libs. libwxbase-msw-dbg mingw32-cross wxBase (debug) libs. wxwin-headers-msw extra headers needed for wxMSW. -libwxgtk-univ wxUniversal for Gtk. +libwxgtk-univ wxUniversal for Gtk. NOTE this package is obsolete + and will be replaced by wxX11 and wxX11-univ at + some future time. -- Ron Lee , Sun, 13 Feb 2000 18:40:00 +1030 diff --git a/debian/changelog b/debian/changelog index f50761b210..a56907878b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,88 @@ +wxwindows2.4 (2.4.0.3) unstable; urgency=low + + * Changed Conflict to Replaces so people can use 2.4 -dev before all + their 2.3 deps are gone. Closes: #178305 + * Added wxPy supplied 2.3 distutils to the source package, apparently the + standard 2.2 one is now insufficient. This hopefully Closes: #178457 + + -- Ron Lee Mon, 27 Jan 2003 17:36:59 -0800 + +wxwindows2.4 (2.4.0.2) unstable; urgency=low + + * Added missing quantize.h to install. Closes: #178135 + * Removed unnecessary -dev deps. + * move wxwin.m4 &c out of the runtime package and conflict with earlier + versions that didn't. Also nuke some empty dir cruft that slipped by. + Thanks for noticing the latter Josip. Closes: #176033 + * dinstall won't close bugs from earlier unreleased versions :( + see below for explanations. Closes: #162948, #171258, #168148 + Closes: #170748, #168250, #164557, #172390, #172447, #168887 + Closes: #155476, #155478 + + -- Ron Lee Thu, 16 Jan 2003 16:46:31 -0800 + +wxwindows2.4 (2.4.0) unstable; urgency=low + + * The fingers crossed release. + * de.po typo fix. Closes: #174084 + * tr.po stable tree patch. Closes: #174667 + * Add a manpage for the wxPython scripts pointing to the pydoc docs. + * Disabled generation of gtk-univ, it is a rather insensible combination + now and should be replaced by x11-univ instead. + * There had to be some payoff to all the delays -- a clean gcc3.2 + transition :-) This package certainly obsoletes 2.3.3.2 and I'll + be seeking to finally have 2.2.9.2 removed as well once Audacity + is updated. + + -- Ron Lee Thu, 19 Dec 2002 00:50:48 -0800 + +wxwindows2.3 (2.3.4.1) unstable; urgency=low + + * 2.4.0pre1 I guess. + * Added -ffunction-sections for broken hppa linker. Closes: #162948 + * Conflict/Replace wxPython2.2. Since its nmu these two packages + can no longer currently coexist. Closes: #171258 + * xrced.py path search fixed. Closes: #168148, #170748 + * Actually install all wxUniv headers to the header package. + Closes: #168250, #164557 + * Robin tells me this one should be fixed in 2.3 too, I can't confirm + so please reopen if it's not. Closes: #172390 + * Added menu items for pycrust/pyshell, thanks Martin. Closes: #172447 + * Broken header fixed. Closes: #168887 + + -- Ron Lee Mon, 18 Nov 2002 18:54:21 -0800 + +wxwindows2.3 (2.3.3.2) unstable; urgency=low + + * The one more for luck release. + * Debian-wise, it fixes the problem with contrib lib name clashes; + code-wise, lots of little issues (and a couple of big 'uns) from + 2.3.3 -- see the more regular change or cvs logs for details... + * Yes, it's still the unstable branch, yes the request for testing + to see if we can reasonably obsolete 2.2 in post-woody debian + is still current, and yes we're still working toward a stable + 2.4 release as fast as we can. Big thanks to everyone who's + been patient and/or active fixing things. + + -- Ron Lee Thu, 26 Sep 2002 17:43:05 -0700 + +wxwindows2.3 (2.3.3.1) unstable; urgency=low + + * Ok, Robin says wxPython is good to go. + * Since wx2.2 has crashed and burned with the new releases of + python and png, Could package maintainers with packages that + depend on wx please recompile with this package and let me + know if they still need 2.2 in woody? If not I'll have them + removed. There should be a 2.4 release following very soon. + (hah, let's see how the date on that comment testifies!) + * Yes, I know wxpython is missing man pages for some of its + scripts. File a bug if you must, but preferably, if you know + what they do, attach a patch containing one. I don't use them + myself or could even do more than guess what they do today. + Sorry, C++. + + -- Ron Lee Thu, 19 Sep 2002 16:25:12 -0700 + wxwindows2.3 (2.3.3) unstable; urgency=low * The "If it sucks, You whined for it!" release. diff --git a/debian/control.in b/debian/control.in index 3d02a9e5f0..1a9da74f00 100644 --- a/debian/control.in +++ b/debian/control.in @@ -1,9 +1,9 @@ Source: wxwindows=V Section: libs Priority: optional -Build-Depends: debhelper (>=2.0), flex, bison, gettext, libgtk1.2-dev, python (>=2.2), python (<<2.3), python2.2-dev, zlib1g-dev, libjpeg62-dev, libpng3-dev, libtiff3g-dev, libgl-dev, libesd0-dev +Build-Depends: debhelper (>=2.0), flex, bison, gettext, libgtk1.2-dev, python (>=2.2), python (<<2.3), python2.2-dev, zlib1g-dev, libjpeg62-dev, libpng12-0-dev, libtiff3g-dev, libgl-dev, libglu-dev, libesd0-dev Maintainer: Ron Lee -Standards-Version: 3.5.7.0 +Standards-Version: 3.5.8.0 Package: libwxbase=V Architecture: any @@ -18,14 +18,14 @@ Description: wxBase library (runtime) - non-GUI support classes of wxWindows too wxBase currently supports the following platforms: Generic Unix (Linux, FreeBSD, Solaris, HP-UX, ...), win32, and BeOS. . - This package is only useful for non-gui apps. It offers a subset of the - classes in libwx_gtk=V for use in console apps and daemons. It is currently - under development and may not be as stable as the gui version. + This package is only useful for non-GUI apps. It offers a subset of the + classes in libwx_gtk=V for use in console apps and daemons. You do not need + this package to build or use wxWindows GUI apps. Package: libwxbase=V-dev Architecture: any Section: devel -Depends: wxwin=V-headers (= ${Source-Version}), libwxbase=V (= ${Source-Version}), zlib1g-dev, libc6-dev +Depends: wxwin=V-headers (= ${Source-Version}), libwxbase=V (= ${Source-Version}), libc6-dev Suggests: wxwin=V-doc, gettext Conflicts: libwxbase-dev Replaces: libwxbase-dev @@ -81,7 +81,7 @@ Description: wxWindows Cross-platform C++ GUI toolkit (GTK+ runtime) Package: libwxgtk=V-dev Architecture: any Section: devel -Depends: wxwin=V-headers (= ${Source-Version}), libwxgtk=V (= ${Source-Version}), libgtk1.2-dev, zlib1g-dev, libjpeg62-dev, libpng-dev, libtiff3g-dev, libc6-dev +Depends: wxwin=V-headers (= ${Source-Version}), libwxgtk=V (= ${Source-Version}), libc6-dev Suggests: wxwin=V-doc, libstdc++-dev, gettext, libgl-dev Conflicts: libwxgtk-dev Replaces: libwxgtk-dev, wxgtk2.1-dev @@ -116,17 +116,19 @@ Description: wxWindows Cross-platform C++ GUI toolkit (GTK+ development) Package: libwxgtk=V-python Architecture: any Section: interpreters -Depends: python (>=2.1), python (<<2.2), ${shlibs:Depends} -Suggests: wxwin=V-doc, wxwin=V-examples -Conflicts: libwxgtk=V-python-contrib, python-wxwin -Replaces: libwxgtk=V-python-contrib, python-wxwin +Depends: python (>=2.2), python (<<2.3), ${shlibs:Depends} +Suggests: wxwin=V-doc, wxwin=V-examples, python2.2-xml +Conflicts: libwxgtk-python, python-wxwin, libwxgtk2.2-python-contrib, libwxgtk2.2-python, libwxgtk2.3-python +Replaces: libwxgtk-python, python-wxwin, libwxgtk2.2-python-contrib, libwxgtk2.2-python, libwxgtk2.3-python +Provides: libwxgtk-python Description: wxWindows Cross-platform C++ GUI toolkit (wxPython binding) wxWindows is a class library for C++ providing GUI (Graphical User Interface) and other facilities on more than one platform. Version =V currently supports subsets of GTK+, Motif, and MS Windows. . This package provides a Python binding to the wxGTK library and it's - contrib libs. + contrib libs. If you wish to use xrced you'll also need the python-xml + package installed. Package: libwxgtk=V-contrib Architecture: any @@ -137,21 +139,7 @@ Description: wxWindows Cross-platform C++ GUI toolkit (runtime contrib libs) Interface) and other facilities on more than one platform. Version =V currently supports subsets of GTK+, Motif, and MS Windows. . - This package provides the contrib libs of the wxWindows source tree - (mmedia, ogl, stc) - -Package: libwxgtk=V-univ -Architecture: any -Section: libs -Depends: wxwin=V-headers (= ${Source-Version}), libwxgtk=V (= ${Source-Version}), libgtk1.2-dev, zlib1g-dev, libjpeg62-dev, libpng-dev, libtiff3g-dev, libc6-dev, ${shlibs:Depends} -Suggests: wxwin=V-doc, libstdc++-dev, gettext, libgl-dev -Description: wxWindows Cross-platform C++ GUI toolkit (wxUNIVERSAL widgets) - wxWindows is a class library for C++ providing GUI (Graphical User - Interface) and other facilities on more than one platform. Version =V - currently supports subsets of GTK+, Motif, and MS Windows. - . - This package is built to use the wxUNIVERSAL widget set instead of - native gtk widgets. + This package provides the contrib libs from the wxWindows source tree Package: libwxgtk=V-contrib-dev Architecture: any @@ -166,13 +154,13 @@ Description: wxWindows Cross-platform C++ GUI toolkit (development contrib libs) currently supports subsets of GTK+, Motif, and MS Windows. . Install this package if you wish to compile applications that use the - contrib libs from the wxWindows source tree (mmedia, ogl, stc) + contrib libs from the wxWindows source tree. Package: wxwin=V-headers Architecture: any Section: devel Conflicts: wxwin-headers -Replaces: wxwin-headers, wxgtk2.1-dev +Replaces: wxwin-headers, wxgtk2.1-dev, libwxgtk2.3 Provides: wxwin-headers Description: wxWindows Cross-platform C++ GUI toolkit (header files) wxWindows is a class library for C++ providing GUI (Graphical User @@ -215,7 +203,21 @@ Description: wxWindows Cross-platform C++ GUI toolkit (examples) Interface) and other facilities on more than one platform. Version =V currently supports subsets of GTK+, Motif, and MS Windows. . - This package contains examples of using the wxWindows toolkit. + This package contains examples of using the wxWindows toolkit in + C++ and with the wxPython language binding. + +Package: libwxgtk=V-univ +Architecture: any +Section: libs +Depends: wxwin=V-headers (= ${Source-Version}), libwxgtk=V (= ${Source-Version}), libc6-dev, ${shlibs:Depends} +Suggests: wxwin=V-doc, libstdc++-dev, gettext, libgl-dev +Description: wxWindows Cross-platform C++ GUI toolkit (wxUNIVERSAL widgets) + wxWindows is a class library for C++ providing GUI (Graphical User + Interface) and other facilities on more than one platform. Version =V + currently supports subsets of GTK+, Motif, and MS Windows. + . + This package is built to use the wxUNIVERSAL widget set instead of + native gtk widgets. Package: libwxbase-msw=V-dev Architecture: i386 diff --git a/debian/copyright b/debian/copyright index 55c8d06dfc..4000ca932d 100644 --- a/debian/copyright +++ b/debian/copyright @@ -29,7 +29,8 @@ alters the actual terms of the authorative licence detailed below, it is intended to be purely informative of the fact that the Debian binary packages will be built primarily with features useful to Free Software developers and may not be suitable "as is" for compiling software for distribution that is -licenced incompatibly with the LGPL. +licenced incompatibly with the LGPL. See /usr/share/common-licenses for +the full text of the LGPL. Modifications and additions to the Library itself are encouraged to be placed under the wxWindows Library Licence. We hope you find it useful. diff --git a/debian/libwxbase-dev.files b/debian/libwxbase-dev.files deleted file mode 100644 index 610ec6f1b3..0000000000 --- a/debian/libwxbase-dev.files +++ /dev/null @@ -1,4 +0,0 @@ -usr/bin/wxbase-=V-config -usr/lib/wx/include/base-=V/wx/setup.h -usr/lib/libwx_base*.so - diff --git a/debian/libwxbase.dirs b/debian/libwxbase.dirs index 99e2a10872..f5b3beeb43 100644 --- a/debian/libwxbase.dirs +++ b/debian/libwxbase.dirs @@ -1,3 +1,2 @@ -usr/bin usr/lib diff --git a/debian/libwxgtk-contrib-dev.files b/debian/libwxgtk-contrib-dev.files deleted file mode 100644 index c88f73cd31..0000000000 --- a/debian/libwxgtk-contrib-dev.files +++ /dev/null @@ -1,12 +0,0 @@ -usr/include/wx/ -usr/lib/libcanvas.so -usr/lib/libfl.so -usr/lib/libgizmos.so -usr/lib/libmmedia.so -usr/lib/libogl.so -usr/lib/libstc.so -usr/lib/libwx_dcsvg.so -usr/lib/libwx_net.so -usr/lib/libwx_plot.so -usr/lib/libwxxrc.so - diff --git a/debian/libwxgtk-dev.files b/debian/libwxgtk-dev.files deleted file mode 100644 index 17d4068a55..0000000000 --- a/debian/libwxgtk-dev.files +++ /dev/null @@ -1,4 +0,0 @@ -usr/bin/wxgtk-=V-config -usr/lib/wx/include/gtk-=V/wx/setup.h -usr/lib/libwx_gtk*.so - diff --git a/debian/libwxgtk-python.files b/debian/libwxgtk-python.files deleted file mode 100644 index 877efadf42..0000000000 --- a/debian/libwxgtk-python.files +++ /dev/null @@ -1,4 +0,0 @@ -usr/lib/=PY/site-packages/wxPython -usr/lib/libwxPyHelpers*.so -usr/lib/libwxPyHelpers*.so.* - diff --git a/debian/libwxgtk-python.menu b/debian/libwxgtk-python.menu new file mode 100644 index 0000000000..a5f8285fbc --- /dev/null +++ b/debian/libwxgtk-python.menu @@ -0,0 +1,7 @@ +?package(libwxgtk=V-python):needs=X11 section=Apps/Programming\ + title="pycrust" command="/usr/bin/pycrust" +?package(libwxgtk=V-python):needs=X11 section=Apps/Programming\ + title="pyshell" command="/usr/bin/pyshell" +?package(libwxgtk=V-python):needs=X11 section=Apps/Programming\ + title="xrced" command="/usr/bin/xrced" + diff --git a/debian/libwxgtk.dirs b/debian/libwxgtk.dirs index d578dd55f1..f7077cffb4 100644 --- a/debian/libwxgtk.dirs +++ b/debian/libwxgtk.dirs @@ -1,3 +1,2 @@ usr/lib -usr/share/wx/afm -usr/share/wx/gs_afm +usr/share diff --git a/debian/lintian-override b/debian/lintian-override index 400e87d66b..c74e5f84fd 100644 --- a/debian/lintian-override +++ b/debian/lintian-override @@ -1,4 +1,3 @@ -libwxgtk2.3-dbg: non-dev-pkg-with-shlib-symlink -libwxbase2.3-dbg: non-dev-pkg-with-shlib-symlink -libwxgtk2.3-univ: non-dev-pkg-with-shlib-symlink +libwxgtk2.4-dbg: non-dev-pkg-with-shlib-symlink +libwxbase2.4-dbg: non-dev-pkg-with-shlib-symlink diff --git a/debian/rules b/debian/rules index 03e582f943..3ff8b8d6fd 100755 --- a/debian/rules +++ b/debian/rules @@ -49,12 +49,15 @@ objdir_wxbase_debug=objs_wxbase_d objdir_gtk_shared=objs_gtk_sh objdir_gtk_static=objs_gtk_st objdir_gtk_debug=objs_gtk_d +objdir_gtk_install=objs_gtk_install +objdir_gtk_contrib_install=objs_gtk_contrib_install objdir_doc_cruft=objs_doc_con objdir_doc=docs/wxWindows-manual.html objdir_examples=docs/examples objdir_i18n=locale objdir_gtk_univ=objs_gtk_univ +objdir_univ_install=objs_univ_install objdir_wxbase_msw_shared=objs_wxbase_msw_sh objdir_wxbase_msw_static=objs_wxbase_msw_st @@ -64,10 +67,13 @@ objdir_msw_static=objs_msw_st objdir_msw_dbg=objs_msw_d objdirs=$(objdir_wxbase_shared) $(objdir_wxbase_static) $(objdir_wxbase_debug) \ - $(objdir_gtk_shared) $(objdir_gtk_static) $(objdir_gtk_debug) $(objdir_gtk_univ) \ - $(objdir_doc_cruft) $(objdir_doc) $(objdir_examples) \ - $(objdir_wxbase_msw_shared) $(objdir_wxbase_msw_static) $(objdir_wxbase_msw_dbg) \ - $(objdir_msw_shared) $(objdir_msw_static) $(objdir_msw_dbg) + $(objdir_gtk_shared) $(objdir_gtk_static) $(objdir_gtk_debug) \ + $(objdir_gtk_install) $(objdir_gtk_contrib_install) $(objdir_gtk_univ) \ + $(objdir_univ_install) $(objdir_doc_cruft) $(objdir_doc) \ + $(objdir_examples) \ + $(objdir_wxbase_msw_shared) $(objdir_wxbase_msw_static) \ + $(objdir_wxbase_msw_dbg) $(objdir_msw_shared) $(objdir_msw_static) \ + $(objdir_msw_dbg) # note that the i18n package is actually arch indep (once built) # but must be built (and installed) during the arch any phase as @@ -77,10 +83,12 @@ objdirs=$(objdir_wxbase_shared) $(objdir_wxbase_static) $(objdir_wxbase_debug) \ build_arch_stamps=build-wxbase-shared-stamp build-wxbase-static-stamp \ build-wxbase-debug-stamp build-gtk-shared-stamp \ build-gtk-static-stamp build-gtk-debug-stamp \ - build-gtk-univ-stamp \ build-contrib-shared-stamp build-contrib-static-stamp \ build-gtk-py-stamp build-i18n-stamp +# disable gtk-univ build, we'll replace it with x11-univ later. +# build-gtk-univ-stamp + build_indep_stamps=build-examples-stamp build-doc-stamp build_cross_stamps=build-wxbase-msw-shared-stamp build-wxbase-msw-static-stamp \ @@ -94,10 +102,12 @@ build_stamps=$(build_stamps_native) $(build_cross_stamps) # Install targets: install_all_arch=install-wxbase-lib install-wxbase-dev install-wxbase-dbg \ install-gtk-lib install-gtk-dev install-gtk-dbg \ - install-gtk-univ \ install-gtk-contrib install-gtk-contrib-dev install-gtk-py \ install-headers install-i18n +# disable gtk-univ build, we'll replace it with x11-univ later. +# install-gtk-univ + install_all_indep=install-examples install-doc install_all_cross=install-wxbase-msw-dev install-wxbase-msw-dbg install-msw-dev install-msw-dbg install-headers-msw @@ -123,7 +133,7 @@ control-files-stamp: debian/control echo "generating control file $(package_wxbase_lib).$$f"; \ cp debian/libwxbase.$$f debian/$(package_wxbase_lib).$$f; \ done; - @for f in dirs files links postinst prerm; do \ + @for f in dirs links postinst prerm; do \ echo "generating control file $(package_wxbase_dev).$$f"; \ sed -e 's/=V/$(release)/g' < debian/libwxbase-dev.$$f \ > debian/$(package_wxbase_dev).$$f; \ @@ -137,7 +147,7 @@ control-files-stamp: debian/control echo "generating control file $(package_gtk_lib).$$f"; \ cp debian/libwxgtk.$$f debian/$(package_gtk_lib).$$f; \ done; - @for f in dirs files links postinst prerm; do \ + @for f in dirs links postinst prerm; do \ echo "generating control file $(package_gtk_dev).$$f"; \ sed -e 's/=V/$(release)/g' < debian/libwxgtk-dev.$$f \ > debian/$(package_gtk_dev).$$f; \ @@ -147,12 +157,7 @@ control-files-stamp: debian/control sed -e 's/=V/$(release)/g' < debian/libwxgtk-dbg.$$f \ > debian/$(package_gtk_dbg).$$f; \ done; - @for f in dirs links postinst prerm; do \ - echo "generating control file $(package_gtk_univ).$$f"; \ - sed -e 's/=V/$(release)/g' < debian/libwxgtk-univ.$$f \ - > debian/$(package_gtk_univ).$$f; \ - done; - @for f in dirs docs files postinst prerm; do \ + @for f in dirs docs menu postinst prerm; do \ echo "generating control file $(package_gtk_py).$$f"; \ sed -e 's/=PY/$(python_dir)/g;s/=V/$(release)/g' < debian/libwxgtk-python.$$f \ > debian/$(package_gtk_py).$$f; \ @@ -161,15 +166,15 @@ control-files-stamp: debian/control echo "generating control file $(package_gtk_contrib).$$f"; \ cp debian/libwxgtk-contrib.$$f debian/$(package_gtk_contrib).$$f; \ done; - @for f in dirs files; do \ + @for f in dirs; do \ echo "generating control file $(package_gtk_contrib_dev).$$f"; \ cp debian/libwxgtk-contrib-dev.$$f debian/$(package_gtk_contrib_dev).$$f; \ done; - @for f in dirs files; do \ + @for f in dirs; do \ echo "generating control file $(package_headers).$$f"; \ cp debian/wxwin-headers.$$f debian/$(package_headers).$$f; \ done; - @for f in dirs files; do \ + @for f in dirs; do \ echo "generating control file $(package_i18n).$$f"; \ cp debian/wxwin-i18n.$$f debian/$(package_i18n).$$f; \ done; @@ -207,6 +212,11 @@ control-files-stamp: debian/control sed -e 's/=H/$(cross_host)/g' < debian/wxwin-headers-msw.$$f \ > debian/$(package_headers_msw).$$f; \ done; + @for f in dirs links postinst prerm; do \ + echo "generating control file $(package_gtk_univ).$$f"; \ + sed -e 's/=V/$(release)/g' < debian/libwxgtk-univ.$$f \ + > debian/$(package_gtk_univ).$$f; \ + done; touch $@ build_arch: control-files-stamp $(build_arch_stamps) @@ -221,7 +231,7 @@ build_all: control-files-stamp $(build_stamps_native) build: build_arch -build-wxbase-shared-stamp: +configure-wxbase-shared-stamp: dh_testdir mkdir -p $(objdir_wxbase_shared) cd $(objdir_wxbase_shared) \ @@ -229,11 +239,15 @@ build-wxbase-shared-stamp: --cache-file=$(config_cache) \ --disable-gui \ --enable-soname \ - --with-zlib=sys \ - && $(MAKE) + --with-zlib=sys touch $@ -build-wxbase-static-stamp: +build-wxbase-shared-stamp: configure-wxbase-shared-stamp + dh_testdir + cd $(objdir_wxbase_shared) && $(MAKE) + touch $@ + +configure-wxbase-static-stamp: dh_testdir mkdir -p $(objdir_wxbase_static) cd $(objdir_wxbase_static) \ @@ -241,11 +255,15 @@ build-wxbase-static-stamp: --cache-file=$(config_cache) \ --disable-gui \ --disable-shared \ - --with-zlib=sys \ - && $(MAKE) + --with-zlib=sys touch $@ -build-wxbase-debug-stamp: +build-wxbase-static-stamp: configure-wxbase-static-stamp + dh_testdir + cd $(objdir_wxbase_static) && $(MAKE) + touch $@ + +configure-wxbase-debug-stamp: dh_testdir mkdir -p $(objdir_wxbase_debug) cd $(objdir_wxbase_debug) \ @@ -254,11 +272,15 @@ build-wxbase-debug-stamp: --disable-gui \ --enable-debug \ --enable-soname \ - --with-zlib=sys \ - && $(MAKE) + --with-zlib=sys touch $@ -build-gtk-shared-stamp: +build-wxbase-debug-stamp: configure-wxbase-debug-stamp + dh_testdir + cd $(objdir_wxbase_debug) && $(MAKE) + touch $@ + +configure-gtk-shared-stamp: dh_testdir mkdir -p $(objdir_gtk_shared) cd $(objdir_gtk_shared) \ @@ -271,11 +293,15 @@ build-gtk-shared-stamp: --with-libjpeg=sys \ --with-libpng=sys \ --with-libtiff=sys \ - --enable-dynamic-loader \ - && $(MAKE) + --enable-dynamic-loader touch $@ -build-gtk-static-stamp: +build-gtk-shared-stamp: configure-gtk-shared-stamp + dh_testdir + cd $(objdir_gtk_shared) && $(MAKE) + touch $@ + +configure-gtk-static-stamp: dh_testdir mkdir -p $(objdir_gtk_static) cd $(objdir_gtk_static) \ @@ -288,11 +314,15 @@ build-gtk-static-stamp: --with-libjpeg=sys \ --with-libpng=sys \ --with-libtiff=sys \ - --enable-dynamic-loader \ - && $(MAKE) + --enable-dynamic-loader touch $@ -build-gtk-debug-stamp: +build-gtk-static-stamp: configure-gtk-static-stamp + dh_testdir + cd $(objdir_gtk_static) && $(MAKE) + touch $@ + +configure-gtk-debug-stamp: dh_testdir mkdir -p $(objdir_gtk_debug) cd $(objdir_gtk_debug) \ @@ -306,11 +336,15 @@ build-gtk-debug-stamp: --with-libjpeg=sys \ --with-libpng=sys \ --with-libtiff=sys \ - --enable-dynamic-loader \ - && $(MAKE) + --enable-dynamic-loader touch $@ -build-gtk-univ-stamp: +build-gtk-debug-stamp: configure-gtk-debug-stamp + dh_testdir + cd $(objdir_gtk_debug) && $(MAKE) + touch $@ + +configure-gtk-univ-stamp: dh_testdir mkdir -p $(objdir_gtk_univ) cd $(objdir_gtk_univ) \ @@ -324,8 +358,12 @@ build-gtk-univ-stamp: --with-libjpeg=sys \ --with-libpng=sys \ --with-libtiff=sys \ - --enable-dynamic-loader \ - && $(MAKE) + --enable-dynamic-loader + touch $@ + +build-gtk-univ-stamp: configure-gtk-univ-stamp + dh_testdir + cd $(objdir_gtk_univ) && $(MAKE) touch $@ build-contrib-shared-stamp: build-gtk-shared-stamp @@ -351,6 +389,7 @@ build-doc-stamp: build-gtk-shared-stamp dh_testdir cd $(objdir_gtk_shared)/utils/tex2rtf/src \ && $(MAKE) + rm -rf $(objdir_doc) mkdir $(objdir_doc) mkdir $(objdir_doc_cruft) cd $(objdir_doc_cruft) \ @@ -398,7 +437,7 @@ build-i18n-stamp: build-gtk-shared-stamp && $(MAKE) allmo touch $@ -build-wxbase-msw-shared-stamp: +configure-wxbase-msw-shared-stamp: dh_testdir mkdir -p $(objdir_wxbase_msw_shared) cd $(objdir_wxbase_msw_shared) \ @@ -406,11 +445,15 @@ build-wxbase-msw-shared-stamp: --cache-file=$(config_cache_cross) \ --host=$(cross_host) \ --build=$(cross_build) \ - --disable-gui \ - && $(MAKE) + --disable-gui touch $@ -build-wxbase-msw-static-stamp: +build-wxbase-msw-shared-stamp: configure-wxbase-msw-shared-stamp + dh_testdir + cd $(objdir_wxbase_msw_shared) && $(MAKE) + touch $@ + +configure-wxbase-msw-static-stamp: dh_testdir mkdir -p $(objdir_wxbase_msw_static) cd $(objdir_wxbase_msw_static) \ @@ -419,12 +462,16 @@ build-wxbase-msw-static-stamp: --host=$(cross_host) \ --build=$(cross_build) \ --disable-gui \ - --disable-shared \ - && $(MAKE) + --disable-shared + touch $@ + +build-wxbase-msw-static-stamp: configure-wxbase-msw-static-stamp + dh_testdir + cd $(objdir_wxbase_msw_static) && $(MAKE) touch $@ # Note this builds dll only, since wxmsw static debug is > 130MB ! -build-wxbase-msw-dbg-stamp: +configure-wxbase-msw-dbg-stamp: dh_testdir mkdir -p $(objdir_wxbase_msw_dbg) cd $(objdir_wxbase_msw_dbg) \ @@ -433,22 +480,30 @@ build-wxbase-msw-dbg-stamp: --host=$(cross_host) \ --build=$(cross_build) \ --disable-gui \ - --enable-debug \ - && $(MAKE) + --enable-debug touch $@ -build-msw-shared-stamp: +build-wxbase-msw-dbg-stamp: configure-wxbase-msw-dbg-stamp + dh_testdir + cd $(objdir_wxbase_msw_dbg) && $(MAKE) + touch $@ + +configure-msw-shared-stamp: dh_testdir mkdir -p $(objdir_msw_shared) cd $(objdir_msw_shared) \ && ../configure --prefix=/usr/$(cross_host) \ --cache-file=$(config_cache_cross) \ --host=$(cross_host) \ - --build=$(cross_build) \ - && $(MAKE) + --build=$(cross_build) touch $@ -build-msw-static-stamp: +build-msw-shared-stamp: configure-msw-shared-stamp + dh_testdir + cd $(objdir_msw_shared) && $(MAKE) + touch $@ + +configure-msw-static-stamp: dh_testdir mkdir -p $(objdir_msw_static) cd $(objdir_msw_static) \ @@ -456,11 +511,15 @@ build-msw-static-stamp: --cache-file=$(config_cache_cross) \ --host=$(cross_host) \ --build=$(cross_build) \ - --disable-shared \ - && $(MAKE) + --disable-shared touch $@ -build-msw-dbg-stamp: +build-msw-static-stamp: configure-msw-static-stamp + dh_testdir + cd $(objdir_msw_static) && $(MAKE) + touch $@ + +configure-msw-dbg-stamp: dh_testdir mkdir -p $(objdir_msw_dbg) cd $(objdir_msw_dbg) \ @@ -468,8 +527,12 @@ build-msw-dbg-stamp: --cache-file=$(config_cache_cross) \ --host=$(cross_host) \ --build=$(cross_build) \ - --enable-debug \ - && $(MAKE) + --enable-debug + touch $@ + +build-msw-dbg-stamp: configure-msw-dbg-stamp + dh_testdir + cd $(objdir_msw_dbg) && $(MAKE) touch $@ @@ -477,13 +540,12 @@ clean: debian/control dh_testdir dh_testroot - rm -rf config_deb.cache config_deb_cross.cache control-files-stamp $(build_stamps) $(objdirs) + rm -rf config_deb.cache config_deb_cross.cache *-stamp $(objdirs) rm -f docs/lgpl.txt rm -f docs/latex/wx/manual.bb rm -f $(objdir_i18n)/*.mo cd wxPython \ - && ./setup.py clean \ && rm -rf licence \ && rm -rf build \ && rm -rf contrib/gizmos/contrib \ @@ -492,6 +554,10 @@ clean: debian/control && rm -rf contrib/xrc/contrib \ && rm -rf *.pyc +# We do the equivalent of this above by removing build, unfortunately +# its not enough by itself to get the tree properly clean again. +# && ./setup.py clean + dh_clean rm -f debian/$(package_wxbase_lib).* rm -f debian/$(package_wxbase_dev).* @@ -499,7 +565,6 @@ clean: debian/control rm -f debian/$(package_gtk_lib).* rm -f debian/$(package_gtk_dev).* rm -f debian/$(package_gtk_dbg).* - rm -f debian/$(package_gtk_univ).* rm -f debian/$(package_gtk_py).* rm -f debian/$(package_gtk_contrib).* rm -f debian/$(package_gtk_contrib_dev).* @@ -507,6 +572,7 @@ clean: debian/control rm -f debian/$(package_i18n).* rm -f debian/$(package_doc).* rm -f debian/$(package_examples).* + rm -f debian/$(package_gtk_univ).* rm -f debian/$(package_wxbase_msw_dev).* rm -f debian/$(package_wxbase_msw_dbg).* rm -f debian/$(package_msw_dev).* @@ -523,17 +589,17 @@ install-wxbase-lib: build-wxbase-shared-stamp dh_testroot dh_clean -k dh_installdirs - cp -a $(objdir_wxbase_shared)/lib/* debian/$(package_wxbase_lib)/usr/lib - cp $(objdir_wxbase_shared)/wxbase-$(release)-config debian/$(package_wxbase_lib)/usr/bin/ + dh_install $(objdir_wxbase_shared)/lib/*.so.* usr/lib install-wxbase-dev: DH_OPTIONS=-p$(package_wxbase_dev) -install-wxbase-dev: build-wxbase-static-stamp install-wxbase-lib +install-wxbase-dev: build-wxbase-static-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - dh_movefiles --sourcedir=debian/$(package_wxbase_lib) - cp $(objdir_wxbase_static)/lib/*.a debian/$(package_wxbase_dev)/usr/lib + dh_install $(objdir_wxbase_shared)/wxbase-$(release)-config usr/bin + dh_install $(objdir_wxbase_shared)/lib/{wx,*.so} usr/lib + dh_install $(objdir_wxbase_static)/lib/*.a usr/lib install-wxbase-dbg: DH_OPTIONS=-p$(package_wxbase_dbg) install-wxbase-dbg: build-wxbase-debug-stamp @@ -541,28 +607,35 @@ install-wxbase-dbg: build-wxbase-debug-stamp dh_testroot dh_clean -k dh_installdirs - cp -a $(objdir_wxbase_debug)/lib/* debian/$(package_wxbase_dbg)/usr/lib - cp $(objdir_wxbase_debug)/wxbased-$(release)-config debian/$(package_wxbase_dbg)/usr/bin/ + dh_install $(objdir_wxbase_debug)/wxbased-$(release)-config usr/bin + dh_install $(objdir_wxbase_debug)/lib usr cp debian/lintian-override debian/$(package_wxbase_dbg)/usr/share/lintian/overrides/$(package_wxbase_dbg) +install-gtk-shared-stamp: + dh_testdir + mkdir -p $(objdir_gtk_install) + cd $(objdir_gtk_shared) \ + && $(MAKE) install prefix=`pwd`/../$(objdir_gtk_install) + touch $@ + install-gtk-lib: DH_OPTIONS=-p$(package_gtk_lib) -install-gtk-lib: build-gtk-shared-stamp +install-gtk-lib: build-gtk-shared-stamp install-gtk-shared-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - cd $(objdir_gtk_shared) \ - && $(MAKE) install prefix=`pwd`/../debian/$(package_gtk_lib)/usr - rm -f debian/$(package_gtk_lib)/usr/bin/wx-config + dh_install $(objdir_gtk_install)/share/wx usr/share + dh_install $(objdir_gtk_install)/lib/*.so.* usr/lib install-gtk-dev: DH_OPTIONS=-p$(package_gtk_dev) -install-gtk-dev: build-gtk-static-stamp install-gtk-lib +install-gtk-dev: build-gtk-static-stamp install-gtk-shared-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - dh_movefiles --sourcedir=debian/$(package_gtk_lib) - cp $(objdir_gtk_static)/lib/libwx_gtk*.a debian/$(package_gtk_dev)/usr/lib + dh_install $(objdir_gtk_install)/bin/wxgtk-$(release)-config usr/bin + dh_install $(objdir_gtk_install)/lib/{wx,*.so} usr/lib + dh_install $(objdir_gtk_static)/lib/libwx_gtk{-,_gl}*.a usr/lib install-gtk-dbg: DH_OPTIONS=-p$(package_gtk_dbg) install-gtk-dbg: build-gtk-debug-stamp @@ -570,8 +643,8 @@ install-gtk-dbg: build-gtk-debug-stamp dh_testroot dh_clean -k dh_installdirs - cp -a $(objdir_gtk_debug)/lib/* debian/$(package_gtk_dbg)/usr/lib - cp $(objdir_gtk_debug)/wxgtkd-$(release)-config debian/$(package_gtk_dbg)/usr/bin/ + dh_install $(objdir_gtk_debug)/wxgtkd-$(release)-config usr/bin + dh_install $(objdir_gtk_debug)/lib usr cp debian/lintian-override debian/$(package_gtk_dbg)/usr/share/lintian/overrides/$(package_gtk_dbg) install-gtk-univ: DH_OPTIONS=-p$(package_gtk_univ) @@ -580,28 +653,35 @@ install-gtk-univ: build-gtk-univ-stamp dh_testroot dh_clean -k dh_installdirs - cp -a $(objdir_gtk_univ)/lib/* debian/$(package_gtk_univ)/usr/lib - cp $(objdir_gtk_univ)/wxgtkuniv-$(release)-config debian/$(package_gtk_univ)/usr/bin/ + dh_install $(objdir_gtk_univ)/wxgtkuniv-$(release)-config usr/bin + dh_install $(objdir_gtk_univ)/lib usr cp debian/lintian-override debian/$(package_gtk_univ)/usr/share/lintian/overrides/$(package_gtk_univ) +install-gtk-contrib-stamp: + dh_testdir + mkdir -p $(objdir_gtk_contrib_install)/lib + cd $(objdir_gtk_shared)/contrib/src \ + && $(MAKE) install prefix=`pwd`/../../../$(objdir_gtk_contrib_install) + touch $@ + install-gtk-contrib: DH_OPTIONS=-p$(package_gtk_contrib) -install-gtk-contrib: build-contrib-shared-stamp +install-gtk-contrib: build-contrib-shared-stamp install-gtk-contrib-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - cd $(objdir_gtk_shared)/contrib/src \ - && $(MAKE) install prefix=`pwd`/../../../debian/$(package_gtk_contrib)/usr + dh_install $(objdir_gtk_contrib_install)/lib/*.so.* usr/lib install-gtk-contrib-dev: DH_OPTIONS=-p$(package_gtk_contrib_dev) -install-gtk-contrib-dev: build-contrib-static-stamp install-gtk-dev +install-gtk-contrib-dev: build-contrib-static-stamp install-gtk-contrib-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - dh_movefiles --sourcedir=debian/$(package_gtk_contrib) - cp $(objdir_gtk_static)/lib/*.a debian/$(package_gtk_contrib_dev)/usr/lib - rm -f debian/$(package_gtk_contrib_dev)/usr/lib/libwx_gtk*.a + dh_install $(objdir_gtk_contrib_install)/include usr + dh_install $(objdir_gtk_contrib_install)/lib/*.so usr/lib + dh_install -Xlibwx_gtk- -Xlibwx_gtk_gl- \ + $(objdir_gtk_static)/lib/*.a usr/lib install-gtk-py: DH_OPTIONS=-p$(package_gtk_py) install-gtk-py: build-gtk-py-stamp @@ -610,32 +690,48 @@ install-gtk-py: build-gtk-py-stamp dh_clean -k dh_installdirs cd wxPython \ - && ./setup.py install --prefix=`pwd`/../debian/$(package_gtk_py)/usr + && ./setup.py install \ + --prefix=`pwd`/../debian/$(package_gtk_py)/usr \ + WX_CONFIG='$(wxconfig)' find debian/$(package_gtk_py)/usr/lib/$(python_dir)/site-packages/wxPython \ -name '*.py?' -exec rm '{}' ';' + dh_installman debian/wxPython-tools.1 + dh_link usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/img2py.1 \ + usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/img2xpm.1 \ + usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/img2png.1 \ + usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/pycrust.1 \ + usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/pyshell.1 \ + usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/xrced.1 \ + usr/share/man/man1/wxPython-tools.1 usr/share/man/man1/helpviewer.1 + install-headers: DH_OPTIONS=-p$(package_headers) -install-headers: install-gtk-lib +install-headers: install-gtk-shared-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - dh_movefiles --sourcedir=debian/$(package_gtk_lib) - dh_installmanpages \ - ansi2knr.1 \ - jpegtran.1 \ - libpng.3 \ - libpngpf.3 \ - zlib.3 \ - png.5 + +# The only way to be really sure we get the univ headers correct is to install +# them. Do that in a scratch dirs, and move the gtk ones last, so at least +# they win in the result of any uncaught conflict. + +# cd $(objdir_gtk_univ) \ +# && $(MAKE) install prefix=`pwd`/../$(objdir_univ_install)/usr + +# dh_movefiles --sourcedir=$(objdir_univ_install) + dh_install $(objdir_gtk_install)/include usr + dh_install $(objdir_gtk_install)/share/aclocal usr/share + + dh_installman debian/wx-config.1 install-i18n: DH_OPTIONS=-p$(package_i18n) -install-i18n: build-i18n-stamp install-gtk-lib +install-i18n: build-i18n-stamp install-gtk-shared-stamp dh_testdir dh_testroot dh_clean -k dh_installdirs - dh_movefiles --sourcedir=debian/$(package_gtk_lib) + dh_install $(objdir_gtk_install)/share/locale usr/share install-doc: DH_OPTIONS=-p$(package_doc) install-doc: build-doc-stamp @@ -720,6 +816,7 @@ binary-common: dh_installdocs dh_installchangelogs dh_installexamples + dh_installmenu dh_link @# Don't strip debug libs at all, and strip cross libs elsewhere @@ -742,13 +839,13 @@ binary-common: # building the arch specific package files needed to create them. binary-indep: build_all install $(MAKE) -f debian/rules \ - DH_OPTIONS="-i -N$(package_wxbase_msw_dev) -N$(package_wxbase_msw_dbg) -N$(package_msw_dev) -N$(package_msw_dbg) -N$(package_headers_msw)" \ + DH_OPTIONS="-i -N$(package_wxbase_msw_dev) -N$(package_wxbase_msw_dbg) -N$(package_msw_dev) -N$(package_msw_dbg) -N$(package_headers_msw) -N$(package_gtk_univ)" \ binary-common # Build just the architecture-dependent files here. binary-arch: build_arch install_arch $(MAKE) -f debian/rules \ - DH_OPTIONS="-a -N$(package_wxbase_msw_dev) -N$(package_wxbase_msw_dbg) -N$(package_msw_dev) -N$(package_msw_dbg) -N$(package_headers_msw)" \ + DH_OPTIONS="-a -N$(package_wxbase_msw_dev) -N$(package_wxbase_msw_dbg) -N$(package_msw_dev) -N$(package_msw_dbg) -N$(package_headers_msw) -N$(package_gtk_univ)" \ binary-common # Build all packages target. diff --git a/debian/wx-config.1 b/debian/wx-config.1 index 72aeac5390..fd9f478c19 100644 --- a/debian/wx-config.1 +++ b/debian/wx-config.1 @@ -1,31 +1,31 @@ -.TH wx-config 1 "15 Feb 2000" "Debian GNU/Linux" "wxWindows 2.2" +.TH wx\-config 1 "15 Feb 2000" "Debian GNU/Linux" "wxWindows" .SH NAME -wx-config - generate compile time info for wxWindows +wx-config \- generate compile time info for wxWindows .SH SYNOPSIS .nh -.B wxbase-config +.B wxbase\-config .br -.B wxgtk-config +.B wxgtk\-config .HP -.B wx-config +.B wx\-config [\-\-version] [\-\-libs] [\-\-cflags] [\-\-cc] [\-\-cxx] [\-\-ld] [\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] .SH DESCRIPTION -\fIwx-config\fP is a tool to determine the compiler and linker +\fIwx\-config\fP is a tool to determine the compiler and linker flags required for applications using the \fIwxWindows\fP toolkit(s). .PP -\fIwx-config\fP is normally a symlink to one of the port-specific -versions like \fIwxbase-config\fP or \fIwxgtk-config\fP which +\fIwx\-config\fP is normally a symlink to one of the port\-specific +versions like \fIwxbase\-config\fP or \fIwxgtk\-config\fP which designates the default port to compile applications with. You can override this default either by using one of the specific versions directly, or by changing which version the symlink points to. On Debian systems this can be done using the -.BR update-alternatives (8) +.BR update\-alternatives (8) mechanism. .hy .SH OPTIONS .l -\fIwx-config\fP accepts the following options: +\fIwx\-config\fP accepts the following options: .TP 8 .B \-\-version What to @@ -58,7 +58,7 @@ before any \-\-libs or \-\-cflags options. .br .nh .HP -(Translation: this is the root path to the \fIwxWindows\fP headers -- [Ron]) +(Translation: this is the root path to the \fIwxWindows\fP headers \-\- [Ron]) .hy .TP 8 .B \-\-exec\-prefix=PREFIX @@ -69,18 +69,18 @@ and \-\-libs options. This option must be specified before any .br .nh .HP -(Translation: this is the root path to the \fIwxWindows\fP library -- [Ron]) +(Translation: this is the root path to the \fIwxWindows\fP library \-\- [Ron]) .hy .SH SEE ALSO -.BR gtk-config (1), -.BR update-alternatives (8) +.BR gtk\-config (1), +.BR update\-alternatives (8) .SH COPYRIGHT -This manpage was copied whole-heartedly from the \fBgtk-config\fP(1) manpage +This manpage was copied whole\-heartedly from the \fBgtk\-config\fP(1) manpage by Brian Bassett for the Debian GNU/Linux distribution of wxGTK. It was then updated to include new options and otherwise bastardised generally by Ron Lee -The original gtk-config manpage copyright: +The original gtk\-config manpage copyright: Copyright \(co 1995 Spencer Kimball and Peter Mattis diff --git a/debian/wxPython-tools.1 b/debian/wxPython-tools.1 new file mode 100644 index 0000000000..1f800ea42a --- /dev/null +++ b/debian/wxPython-tools.1 @@ -0,0 +1,27 @@ +.TH wxPython\-tools 1 "3 Jan 2003" "Debian GNU/Linux" "wxWindows" +.SH NAME +img2py \- wxPython tools. +.br +img2png \- wxPython tools. +.br +img2xpm \- wxPython tools. +.br +pycrust \- wxPython tools. +.br +pyshell \- wxPython tools. +.br +xrced \- wxPython tools. +.br +helpviewer \- wxPython tools. + +.SH DESCRIPTION +The real documentation for these tools is available in pydoc format. + +.SH SEE ALSO +.BR pydoc (1) + +.SH COPYRIGHT +This manpage was written by Ron Lee for the Debian GNU/Linux +distribution of wxWindows. It may be freely distributed by anyone insane enough +to find it useful. + diff --git a/debian/wxwin-headers.files b/debian/wxwin-headers.files deleted file mode 100644 index e3a60cecd2..0000000000 --- a/debian/wxwin-headers.files +++ /dev/null @@ -1 +0,0 @@ -usr/include/wx/ diff --git a/debian/wxwin-i18n.files b/debian/wxwin-i18n.files deleted file mode 100644 index 39825b2213..0000000000 --- a/debian/wxwin-i18n.files +++ /dev/null @@ -1,2 +0,0 @@ -/usr/share/locale/ - diff --git a/demos/bombs/bombs.cpp b/demos/bombs/bombs.cpp index 875e960073..26a1779409 100644 --- a/demos/bombs/bombs.cpp +++ b/demos/bombs/bombs.cpp @@ -40,7 +40,7 @@ bool AppClass::OnInit() level=IDM_EASY; BombsFrame = - new BombsFrameClass(NULL, "wxBombs", wxPoint(155, 165), wxSize(300, 300), wxMINIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION); + new BombsFrameClass(NULL, _T("wxBombs"), wxPoint(155, 165), wxSize(300, 300), wxMINIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION); int xmax=BombsFrame->BombsCanvas->field_width*BombsFrame->BombsCanvas->x_cell*X_UNIT; int ymax=BombsFrame->BombsCanvas->field_height*BombsFrame->BombsCanvas->y_cell*Y_UNIT; @@ -72,17 +72,17 @@ BombsFrameClass::BombsFrameClass(wxFrame *parent, const wxString& title, const w // Create a menu bar for the frame wxMenuBar *menuBar1 = new wxMenuBar; wxMenu *menu1 = new wxMenu; - menu1->Append(IDM_EXIT, "E&xit"); // , "Quit the program"); + menu1->Append(IDM_EXIT, _T("E&xit")); // , "Quit the program"); menu1->AppendSeparator(); - menu1->Append(IDM_ABOUT, "&About..."); // , "Infos on wxBombs"); - menuBar1->Append(menu1, "&File"); + menu1->Append(IDM_ABOUT, _T("&About...")); // , "Infos on wxBombs"); + menuBar1->Append(menu1, _T("&File")); wxMenu *menu2 = new wxMenu; - menu2->Append(IDM_RESTART, "&Restart"); // , "Clear the play field"); + menu2->Append(IDM_RESTART, _T("&Restart")); // , "Clear the play field"); menu2->AppendSeparator(); - menu2->Append(IDM_EASY, "&Easy", wxEmptyString, TRUE); // "10x10 play field", TRUE); - menu2->Append(IDM_MEDIUM, "&Medium", wxEmptyString, TRUE); // "15x15 play field", TRUE); - menu2->Append(IDM_DIFFICULT, "&Difficult", wxEmptyString, TRUE); // "25x20 play field", TRUE); - menuBar1->Append(menu2, "&Game"); + menu2->Append(IDM_EASY, _T("&Easy"), wxEmptyString, TRUE); // "10x10 play field", TRUE); + menu2->Append(IDM_MEDIUM, _T("&Medium"), wxEmptyString, TRUE); // "15x15 play field", TRUE); + menu2->Append(IDM_DIFFICULT, _T("&Difficult"), wxEmptyString, TRUE); // "25x20 play field", TRUE); + menuBar1->Append(menu2, _T("&Game")); SetMenuBar(menuBar1); menuBar=menuBar1; menuBar->Check(wxGetApp().level, TRUE); @@ -124,7 +124,7 @@ void BombsFrameClass::OnRestart(wxCommandEvent& event) void BombsFrameClass::OnAbout(wxCommandEvent& event) { - wxMessageBox("wxBombs (c) 1996 by P. Foggia\n", "About wxBombs"); + wxMessageBox(_T("wxBombs (c) 1996 by P. Foggia\n"), _T("About wxBombs")); } void BombsFrameClass::OnEasy(wxCommandEvent& event) @@ -162,7 +162,7 @@ BombsCanvasClass::BombsCanvasClass(wxFrame *parent, const wxPoint& pos, const wx dc.SetFont(font); long chw, chh; - char buf[]="M"; + wxChar buf[]=_T("M"); dc.GetTextExtent(buf, &chw, &chh); dc.SetFont(wxNullFont); diff --git a/demos/bombs/bombs.dsp b/demos/bombs/bombs.dsp index 6982b81d40..313861cfc6 100644 --- a/demos/bombs/bombs.dsp +++ b/demos/bombs/bombs.dsp @@ -45,17 +45,17 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdll /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "bombs - Win32 Debug DLL" @@ -71,17 +71,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdlld /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "bombs - Win32 Release" @@ -97,17 +97,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I..\..\lib\msw /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlib.lib ../..\lib\regex.lib ../..\lib\png.lib ../..\lib\jpeg.lib ../..\lib\tiff.lib ../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "bombs - Win32 Debug" @@ -123,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I..\..\lib\mswd /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlibd.lib ../..\lib\regexd.lib ../..\lib\pngd.lib ../..\lib\jpegd.lib ../..\lib\tiffd.lib ../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF @@ -151,8 +151,7 @@ SOURCE=.\bombs.cpp SOURCE=.\bombs.rc # ADD BASE RSC /l 0x809 -# ADD RSC /l 0x809 /i "../../include" -# SUBTRACT RSC /i "../../../include" +# ADD RSC /l 0x809 /i "..\..\include" # End Source File # Begin Source File diff --git a/demos/bombs/bombs1.cpp b/demos/bombs/bombs1.cpp index 173bce2383..e884888349 100644 --- a/demos/bombs/bombs1.cpp +++ b/demos/bombs/bombs1.cpp @@ -33,15 +33,15 @@ /*---------------------------------------------------------------------*/ void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) { int x,y,xmax,ymax; - char buf[2]; + wxChar buf[2]; long chw, chh; - wxColour *wxBlack = wxTheColourDatabase->FindColour("BLACK"); - wxColour *wxWhite = wxTheColourDatabase->FindColour("WHITE"); - wxColour *wxRed = wxTheColourDatabase->FindColour("RED"); - wxColour *wxBlue = wxTheColourDatabase->FindColour("BLUE"); - wxColour *wxGrey = wxTheColourDatabase->FindColour("LIGHT GREY"); - wxColour *wxGreen = wxTheColourDatabase->FindColour("GREEN"); + wxColour *wxBlack = wxTheColourDatabase->FindColour(_T("BLACK")); + wxColour *wxWhite = wxTheColourDatabase->FindColour(_T("WHITE")); + wxColour *wxRed = wxTheColourDatabase->FindColour(_T("RED")); + wxColour *wxBlue = wxTheColourDatabase->FindColour(_T("BLUE")); + wxColour *wxGrey = wxTheColourDatabase->FindColour(_T("LIGHT GREY")); + wxColour *wxGreen = wxTheColourDatabase->FindColour(_T("GREEN")); wxPen *blackPen = wxThePenList->FindOrCreatePen(*wxBlack, 1, wxSOLID); wxPen *redPen = wxThePenList->FindOrCreatePen(*wxRed, 1, wxSOLID); @@ -64,7 +64,7 @@ void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) wxFont font= BOMBS_FONT; dc->SetFont(font); - buf[1]='\0'; + buf[1]=_T('\0'); for(x=xc1; x<=xc2; x++) for(y=yc1; y<=yc2; y++) { if (wxGetApp().Game.IsMarked(x,y)) @@ -72,7 +72,7 @@ void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) dc->SetBrush(* greyBrush); dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - *buf='M'; + *buf=_T('M'); if (!wxGetApp().Game.IsHidden(x,y) && wxGetApp().Game.IsBomb(x,y)) dc->SetTextForeground(*wxBlue); else @@ -102,7 +102,7 @@ void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) dc->SetBrush(* redBrush); dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - *buf='B'; + *buf=_T('B'); dc->SetTextForeground(* wxBlack); dc->SetTextBackground(* wxRed); dc->GetTextExtent(buf, &chw, &chh); @@ -123,11 +123,11 @@ void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) dc->SetBrush(* whiteBrush); dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - *buf = (wxGetApp().Game.Get(x,y) & BG_MASK) + '0'; + *buf = (wxGetApp().Game.Get(x,y) & BG_MASK) + _T('0'); dc->GetTextExtent(buf, &chw, &chh); switch(*buf) - { case '0': dc->SetTextForeground(* wxGreen); break; - case '1': dc->SetTextForeground(* wxBlue); break; + { case _T('0'): dc->SetTextForeground(* wxGreen); break; + case _T('1'): dc->SetTextForeground(* wxBlue); break; default: dc->SetTextForeground(* wxBlack); break; } dc->SetTextBackground(* wxWhite); @@ -140,9 +140,10 @@ void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) dc->SetFont(wxNullFont); if (wxGetApp().BombsFrame) - { char buf[80]; - sprintf(buf, "%d bombs %d remaining cells", - wxGetApp().Game.GetBombs(), wxGetApp().Game.GetRemainingCells()); + { wxString buf; + buf.Printf(_T("%d bombs %d remaining cells"), + wxGetApp().Game.GetBombs(), + wxGetApp().Game.GetRemainingCells()); wxGetApp().BombsFrame->SetStatusText(buf, 0); } } @@ -172,7 +173,7 @@ void BombsCanvasClass::Uncover(int x, int y) if (wxGetApp().Game.IsBomb(x,y) || wxGetApp().Game.GetRemainingCells()==0) { wxBell(); if (!wxGetApp().Game.IsBomb(x,y)) - { wxMessageBox("Nice! You found all the bombs!", "wxWin Bombs", + { wxMessageBox(_T("Nice! You found all the bombs!"), _T("wxWin Bombs"), wxOK|wxCENTRE, wxGetApp().BombsFrame); } else // x,y is a bomb diff --git a/demos/dbbrowse/dbbrowse.dsp b/demos/dbbrowse/dbbrowse.dsp index af2e12d045..7e5819a612 100644 --- a/demos/dbbrowse/dbbrowse.dsp +++ b/demos/dbbrowse/dbbrowse.dsp @@ -45,17 +45,17 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdll /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /i "../../lib/mswdll" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /i "..\..\lib/mswdll" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "dbbrowse - Win32 Debug DLL" @@ -71,17 +71,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdlld /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /i "../../lib/mswdlld" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /i "..\..\lib/mswdlld" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "dbbrowse - Win32 Release" @@ -97,17 +97,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I..\..\lib\msw /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /i "../../lib/msw" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /i "..\..\lib/msw" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../..\lib\jpeg.lib ../..\lib\tiff.lib ../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "dbbrowse - Win32 Debug" @@ -123,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I..\..\lib\mswd /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /i "../../lib/mswd" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /i "..\..\lib/mswd" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlibd.lib ../..\lib\regexd.lib ../..\lib\pngd.lib ../..\lib\jpegd.lib ../..\lib\tiffd.lib ../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF @@ -155,8 +155,7 @@ SOURCE=.\dbbrowse.cpp SOURCE=.\dbbrowse.rc # ADD BASE RSC /l 0x809 -# ADD RSC /l 0x809 /i "../../include" -# SUBTRACT RSC /i "../../../include" +# ADD RSC /l 0x809 /i "..\..\include" # End Source File # Begin Source File diff --git a/demos/dbbrowse/makefile.gtk b/demos/dbbrowse/makefile.gtk deleted file mode 100644 index cd8a960812..0000000000 --- a/demos/dbbrowse/makefile.gtk +++ /dev/null @@ -1,15 +0,0 @@ - -# Top dir of wxWindows -top_builddir = /gtm/bart/wxGTK - -PROGRAM=dbbrowser_gtk - - -OBJECTS= dbbrowse.o doc.o pgmctrl.o tabpgwin.o\ - browsedb.o dbtree.o dbgrid.o dlguser.o - - - - -include $(top_builddir)/src/makeprog.env - diff --git a/demos/forty/canvas.cpp b/demos/forty/canvas.cpp index 81e7985234..995e7cbfbf 100644 --- a/demos/forty/canvas.cpp +++ b/demos/forty/canvas.cpp @@ -56,7 +56,7 @@ FortyCanvas::FortyCanvas(wxWindow* parent, int x, int y, int w, int h) : m_arrowCursor = new wxCursor(wxCURSOR_ARROW); wxString name = wxTheApp->GetAppName(); - if (name.Length() <= 0) name = "forty"; + if (name.Length() <= 0) name = _T("forty"); m_scoreFile = new ScoreFile(name); m_game = new Game(0, 0, 0); m_game->Deal(); @@ -159,8 +159,8 @@ Called when the main frame is closed bool FortyCanvas::OnCloseCanvas() { if (m_game->InPlay() && - wxMessageBox("Are you sure you want to\nabandon the current game?", - "Warning", wxYES_NO | wxICON_QUESTION) == wxNO) + wxMessageBox(_T("Are you sure you want to\nabandon the current game?"), + _T("Warning"), wxYES_NO | wxICON_QUESTION) == wxNO) { return FALSE; } diff --git a/demos/forty/card.cpp b/demos/forty/card.cpp index 295e7c5947..94df438732 100644 --- a/demos/forty/card.cpp +++ b/demos/forty/card.cpp @@ -67,25 +67,25 @@ Card::Card(int value, WayUp way_up) : if (!m_symbolBmap) { #ifdef __WXMSW__ - m_symbolBmap = new wxBitmap("CardSymbols", wxBITMAP_TYPE_BMP_RESOURCE); + m_symbolBmap = new wxBitmap(_T("CardSymbols"), wxBITMAP_TYPE_BMP_RESOURCE); #else m_symbolBmap = new wxBitmap(Symbols_bits, Symbols_width, Symbols_height); #endif if (!m_symbolBmap->Ok()) { - ::wxMessageBox("Failed to load bitmap CardSymbols", "Error"); + ::wxMessageBox(_T("Failed to load bitmap CardSymbols"), _T("Error")); } } if (!m_pictureBmap) { #ifdef __WXMSW__ - m_pictureBmap = new wxBitmap("CardPictures", wxBITMAP_TYPE_BMP_RESOURCE); + m_pictureBmap = new wxBitmap(_T("CardPictures"), wxBITMAP_TYPE_BMP_RESOURCE); #else m_pictureBmap = new wxBitmap(Pictures); #endif if (!m_pictureBmap->Ok()) { - ::wxMessageBox("Failed to load bitmap CardPictures", "Error"); + ::wxMessageBox(_T("Failed to load bitmap CardPictures"), _T("Error")); } } @@ -196,7 +196,7 @@ void Card::Draw(wxDC& dc, int x, int y) dc.SetBackground(* wxRED_BRUSH); dc.SetBackgroundMode(wxSOLID); wxBrush* brush = wxTheBrushList->FindOrCreateBrush( - "BLACK", wxCROSSDIAG_HATCH + _T("BLACK"), wxCROSSDIAG_HATCH ); dc.SetBrush(* brush); diff --git a/demos/forty/forty.cpp b/demos/forty/forty.cpp index cb37828bef..582cb08f3d 100644 --- a/demos/forty/forty.cpp +++ b/demos/forty/forty.cpp @@ -76,7 +76,7 @@ bool FortyApp::OnInit() bool largecards = FALSE; wxSize size(668,510); - if ((argc > 1) && (!wxStrcmp(argv[1],"-L"))) + if ((argc > 1) && (!wxStrcmp(argv[1],_T("-L")))) { largecards = TRUE; size = wxSize(1000,750); @@ -84,7 +84,7 @@ bool FortyApp::OnInit() FortyFrame* frame = new FortyFrame( 0, - "Forty Thieves", + _T("Forty Thieves"), -1, -1, size.x, size.y,largecards ); @@ -120,14 +120,14 @@ const wxColour& FortyApp::TextColour() { if (!m_textColour) { - m_textColour = new wxColour("BLACK"); + m_textColour = new wxColour(_T("BLACK")); } return *m_textColour; } // My frame constructor -FortyFrame::FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h,bool largecards): +FortyFrame::FortyFrame(wxFrame* frame, const wxString& title, int x, int y, int w, int h,bool largecards): wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) { #ifdef __WXMAC__ @@ -136,7 +136,7 @@ FortyFrame::FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h,b #endif // set the icon #ifdef __WXMSW__ - SetIcon(wxIcon("CardsIcon")); + SetIcon(wxIcon(_T("CardsIcon"))); #else #ifdef GTK_TBD SetIcon(wxIcon(Cards_bits, Cards_width, Cards_height)); @@ -145,28 +145,28 @@ FortyFrame::FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h,b // Make a menu bar wxMenu* gameMenu = new wxMenu; - gameMenu->Append(NEW_GAME, "&New", "Start a new game"); - gameMenu->Append(SCORES, "&Scores...", "Displays scores"); - gameMenu->Append(EXIT, "E&xit", "Exits Forty Thieves"); + gameMenu->Append(NEW_GAME, _T("&New"), _T("Start a new game")); + gameMenu->Append(SCORES, _T("&Scores..."), _T("Displays scores")); + gameMenu->Append(EXIT, _T("E&xit"), _T("Exits Forty Thieves")); wxMenu* editMenu = new wxMenu; - editMenu->Append(UNDO, "&Undo", "Undo the last move"); - editMenu->Append(REDO, "&Redo", "Redo a move that has been undone"); + editMenu->Append(UNDO, _T("&Undo"), _T("Undo the last move")); + editMenu->Append(REDO, _T("&Redo"), _T("Redo a move that has been undone")); wxMenu* optionsMenu = new wxMenu; optionsMenu->Append(RIGHT_BUTTON_UNDO, - "&Right button undo", - "Enables/disables right mouse button undo and redo", + _T("&Right button undo"), + _T("Enables/disables right mouse button undo and redo"), TRUE ); optionsMenu->Append(HELPING_HAND, - "&Helping hand", - "Enables/disables hand cursor when a card can be moved", + _T("&Helping hand"), + _T("Enables/disables hand cursor when a card can be moved"), TRUE ); optionsMenu->Append(LARGE_CARDS, - "&Large cards", - "Enables/disables large cards for high resolution displays", + _T("&Large cards"), + _T("Enables/disables large cards for high resolution displays"), TRUE ); optionsMenu->Check(HELPING_HAND, TRUE); @@ -174,13 +174,13 @@ FortyFrame::FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h,b optionsMenu->Check(LARGE_CARDS, largecards ? TRUE : FALSE); wxMenu* helpMenu = new wxMenu; - helpMenu->Append(ABOUT, "&About...", "Displays information about the game"); + helpMenu->Append(ABOUT, _T("&About..."), _T("Displays information about the game")); m_menuBar = new wxMenuBar; - m_menuBar->Append(gameMenu, "&Game"); - m_menuBar->Append(editMenu, "&Edit"); - m_menuBar->Append(optionsMenu, "&Options"); - m_menuBar->Append(helpMenu, "&Help"); + m_menuBar->Append(gameMenu, _T("&Game")); + m_menuBar->Append(editMenu, _T("&Edit")); + m_menuBar->Append(optionsMenu, _T("&Options")); + m_menuBar->Append(helpMenu, _T("&Help")); SetMenuBar(m_menuBar); @@ -243,14 +243,14 @@ FortyFrame::About(wxCommandEvent&) #endif { wxMessageBox( - "Forty Thieves\n\n" - "A freeware program using the wxWindows\n" - "portable C++ GUI toolkit.\n" - "http://www.wxwindows.org\n" - "http://www.freiburg.linux.de/~wxxt\n\n" - "Author: Chris Breeze (c) 1992-1998\n" - "email: chris.breeze@iname.com", - "About Forty Thieves", + _T("Forty Thieves\n\n") + _T("A freeware program using the wxWindows\n") + _T("portable C++ GUI toolkit.\n") + _T("http://www.wxwindows.org\n") + _T("http://www.freiburg.linux.de/~wxxt\n\n") + _T("Author: Chris Breeze (c) 1992-1998\n") + _T("email: chris.breeze@iname.com"), + _T("About Forty Thieves"), wxOK, this ); } @@ -331,7 +331,7 @@ bool FortyAboutDialog::AddControls(wxWindow* parent) wxFile file; file.Open(htmlFile, wxFile::read); long len = file.Length(); - char* buf = htmlText.GetWriteBuf(len + 1); + wxChar* buf = htmlText.GetWriteBuf(len + 1); file.Read(buf, len); buf[len] = 0; htmlText.UngetWriteBuf(); @@ -349,7 +349,7 @@ bool FortyAboutDialog::AddControls(wxWindow* parent) verString.Printf("%.2f", stVERSION_NUMBER); htmlText.Replace(wxT("$VERSION$"), verString); #endif - htmlText.Replace(wxT("$DATE$"), __DATE__); + htmlText.Replace(wxT("$DATE$"), _T(__DATE__)); wxSize htmlSize(400, 290); @@ -373,7 +373,7 @@ bool FortyAboutDialog::AddControls(wxWindow* parent) wxASSERT( item1 ); item0->Add( item1, 0, wxALIGN_CENTRE|wxALL, 5 ); - wxButton *item2 = new wxButton( parent, wxID_CANCEL, "&Close", wxDefaultPosition, wxDefaultSize, 0 ); + wxButton *item2 = new wxButton( parent, wxID_CANCEL, _T("&Close"), wxDefaultPosition, wxDefaultSize, 0 ); item2->SetDefault(); item2->SetFocus(); diff --git a/demos/forty/forty.dsp b/demos/forty/forty.dsp index 83bb08020d..d8d66c8b7a 100644 --- a/demos/forty/forty.dsp +++ b/demos/forty/forty.dsp @@ -45,17 +45,17 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdll /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "forty - Win32 Debug DLL" @@ -71,17 +71,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdlld /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "forty - Win32 Release" @@ -97,17 +97,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I..\..\lib\msw /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlib.lib ../..\lib\regex.lib ../..\lib\png.lib ../..\lib\jpeg.lib ../..\lib\tiff.lib ../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "forty - Win32 Debug" @@ -123,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I..\..\lib\mswd /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlibd.lib ../..\lib\regexd.lib ../..\lib\pngd.lib ../..\lib\jpegd.lib ../..\lib\tiffd.lib ../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF @@ -160,7 +160,6 @@ SOURCE=.\forty.cpp SOURCE=.\forty.rc # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 /i "../../include" -# SUBTRACT RSC /i "../../../include" # End Source File # Begin Source File diff --git a/demos/forty/forty.h b/demos/forty/forty.h index 0ad38bae0a..9a4383c9a1 100644 --- a/demos/forty/forty.h +++ b/demos/forty/forty.h @@ -34,7 +34,7 @@ class FortyCanvas; class FortyFrame: public wxFrame { public: - FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h,bool largecards); + FortyFrame(wxFrame* frame, const wxString& title, int x, int y, int w, int h,bool largecards); virtual ~FortyFrame(); void OnCloseWindow(wxCloseEvent& event); diff --git a/demos/forty/game.cpp b/demos/forty/game.cpp index e137996530..9b9048f6de 100644 --- a/demos/forty/game.cpp +++ b/demos/forty/game.cpp @@ -163,7 +163,7 @@ void Game::DoMove(wxDC& dc, Pile* src, Pile* dest) { if (src == dest) { - wxMessageBox("Game::DoMove() src == dest", "Debug message", + wxMessageBox(_T("Game::DoMove() src == dest"), _T("Debug message"), wxOK | wxICON_EXCLAMATION); } m_moves[m_moveIndex].src = src; @@ -175,7 +175,7 @@ void Game::DoMove(wxDC& dc, Pile* src, Pile* dest) } else { - wxMessageBox("Game::DoMove() Undo buffer full", "Debug message", + wxMessageBox(_T("Game::DoMove() Undo buffer full"), _T("Debug message"), wxOK | wxICON_EXCLAMATION); } @@ -203,8 +203,8 @@ void Game::DoMove(wxDC& dc, Pile* src, Pile* dest) // Redraw the score box to update games won DisplayScore(dc); - if (wxMessageBox("Do you wish to play again?", - "Well Done, You have won!", wxYES_NO | wxICON_QUESTION) == wxYES) + if (wxMessageBox(_T("Do you wish to play again?"), + _T("Well Done, You have won!"), wxYES_NO | wxICON_QUESTION) == wxYES) { Deal(); canvas->Refresh(); @@ -241,25 +241,25 @@ void Game::DisplayScore(wxDC& dc) int w, h; { long width, height; - dc.GetTextExtent("Average score:m_x", &width, &height); + dc.GetTextExtent(_T("Average score:m_x"), &width, &height); w = width; h = height; } dc.DrawRectangle(x + w, y, 20, 4 * h); - char str[80]; - sprintf(str, "%d", m_currentScore); - dc.DrawText("Score:", x, y); + wxString str; + str.Printf(_T("%d"), m_currentScore); + dc.DrawText(_T("Score:"), x, y); dc.DrawText(str, x + w, y); y += h; - sprintf(str, "%d", m_numGames); - dc.DrawText("Games played:", x, y); + str.Printf(_T("%d"), m_numGames); + dc.DrawText(_T("Games played:"), x, y); dc.DrawText(str, x + w, y); y += h; - sprintf(str, "%d", m_numWins); - dc.DrawText("Games won:", x, y); + str.Printf(_T("%d"), m_numWins); + dc.DrawText(_T("Games won:"), x, y); dc.DrawText(str, x + w, y); y += h; @@ -268,8 +268,8 @@ void Game::DisplayScore(wxDC& dc) { average = (2 * (m_currentScore + m_totalScore) + m_numGames ) / (2 * m_numGames); } - sprintf(str, "%d", average); - dc.DrawText("Average score:", x, y); + str.Printf(_T("%d"), average); + dc.DrawText(_T("Average score:"), x, y); dc.DrawText(str, x + w, y); } @@ -798,8 +798,8 @@ void Pack::Redraw(wxDC& dc) { Pile::Redraw(dc); - char str[10]; - sprintf(str, "%d ", m_topCard + 1); + wxString str; + str.Printf(_T("%d "), m_topCard + 1); dc.SetBackgroundMode( wxSOLID ); dc.SetTextBackground(FortyApp::BackgroundColour()); @@ -816,7 +816,7 @@ void Pack::AddCard(Card* card) } else { - wxMessageBox("Pack::AddCard() Undo error", "Forty Thieves: Warning", + wxMessageBox(_T("Pack::AddCard() Undo error"), _T("Forty Thieves: Warning"), wxOK | wxICON_EXCLAMATION); } card->TurnCard(facedown); diff --git a/demos/forty/playerdg.cpp b/demos/forty/playerdg.cpp index 674758143b..4c5c48e3fc 100644 --- a/demos/forty/playerdg.cpp +++ b/demos/forty/playerdg.cpp @@ -44,7 +44,7 @@ PlayerSelectionDialog::PlayerSelectionDialog( wxWindow* parent, ScoreFile* file ) : - wxDialog(parent, -1, "Player Selection", + wxDialog(parent, -1, _T("Player Selection"), wxDefaultPosition, wxSize(320, 200), wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE), m_scoreFile(file) @@ -52,7 +52,7 @@ PlayerSelectionDialog::PlayerSelectionDialog( // enable constraints SetAutoLayout (TRUE); - wxStaticText* msg = new wxStaticText(this, -1, "Please select a name or type a new one:"); + wxStaticText* msg = new wxStaticText(this, -1, _T("Please select a name or type a new one:")); wxListBox* list = new wxListBox( this, ID_LISTBOX, @@ -68,10 +68,10 @@ PlayerSelectionDialog::PlayerSelectionDialog( list->Append(players[i]); } - m_textField = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, 0); + m_textField = new wxTextCtrl(this, -1, _T(""), wxDefaultPosition, wxDefaultSize, 0); - m_OK = new wxButton(this, wxID_OK, "OK"); - m_cancel = new wxButton(this, wxID_CANCEL, "Cancel"); + m_OK = new wxButton(this, wxID_OK, _T("OK")); + m_cancel = new wxButton(this, wxID_CANCEL, _T("Cancel")); wxLayoutConstraints* layout; @@ -149,7 +149,7 @@ const wxString& PlayerSelectionDialog::GetPlayersName() void PlayerSelectionDialog::OnCloseWindow(wxCloseEvent& event) { - m_player = ""; + m_player = _T(""); EndModal(wxID_CANCEL); } @@ -169,9 +169,9 @@ void PlayerSelectionDialog::ButtonCallback(wxCommandEvent& event) wxString name = m_textField->GetValue(); if (!name.IsNull() && name.Length() > 0) { - if (name.Contains('@')) + if (name.Contains(_T('@'))) { - wxMessageBox("Names should not contain the '@' character", "Forty Thieves"); + wxMessageBox(_T("Names should not contain the '@' character"), _T("Forty Thieves")); } else { @@ -181,12 +181,12 @@ void PlayerSelectionDialog::ButtonCallback(wxCommandEvent& event) } else { - wxMessageBox("Please enter your name", "Forty Thieves"); + wxMessageBox(_T("Please enter your name"), _T("Forty Thieves")); } } else { - m_player = ""; + m_player = _T(""); EndModal(wxID_CANCEL); } } diff --git a/demos/forty/scoredg.cpp b/demos/forty/scoredg.cpp index fddbc0e3c4..4af39aa4f1 100644 --- a/demos/forty/scoredg.cpp +++ b/demos/forty/scoredg.cpp @@ -27,16 +27,6 @@ #include "wx/wx.h" #endif -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__MWERKS__) -#include -#else -#include -#endif -#else -#include -//using namespace std; -#endif #include "scorefil.h" #include "scoredg.h" @@ -66,9 +56,9 @@ ScoreCanvas::ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile) : wxArrayString players; scoreFile->GetPlayerList( players); - ostrstream os; + wxString os; - os << "Player\tWins\tGames\tScore\n"; + os << wxT("Player\tWins\tGames\tScore\n"); for (unsigned int i = 0; i < players.Count(); i++) { int wins, games, score; @@ -79,15 +69,13 @@ ScoreCanvas::ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile) : average = (2 * score + games) / (2 * games); } - os << players[i] << '\t' - << wins << '\t' - << games << '\t' - << average << '\n'; + os << players[i] << wxT('\t') + << wins << wxT('\t') + << games << wxT('\t') + << average << wxT('\n'); } - os << '\0'; - char* str = os.str(); - m_text = str; - delete str; + os << wxT('\0'); + m_text = os; } ScoreCanvas::~ScoreCanvas() @@ -98,7 +86,7 @@ void ScoreCanvas::OnDraw(wxDC& dc) { dc.SetFont(* m_font); - const char* str = m_text; + const wxChar* str = m_text; unsigned int tab = 0; unsigned int tabstops[] = { 5, 100, 150, 200 }; @@ -106,29 +94,29 @@ void ScoreCanvas::OnDraw(wxDC& dc) int lineSpacing; { long w, h; - dc.GetTextExtent("Testing", &w, &h); + dc.GetTextExtent(_T("Testing"), &w, &h); lineSpacing = (int)h; } int y = 0; while (*str) { - char text[256]; - char* dest = text; + wxChar text[256]; + wxChar* dest = text; - while (*str && *str >= ' ') *dest++ = *str++; - *dest = '\0'; + while (*str && *str >= _T(' ')) *dest++ = *str++; + *dest = _T('\0'); dc.DrawText(text, tabstops[tab], y); - if (*str == '\t') + if (*str == _T('\t')) { if (tab < sizeof(tabstops) / sizeof(tabstops[0]) - 1) { tab++; } } - else if (*str == '\n') + else if (*str == _T('\n')) { tab = 0; y += lineSpacing; @@ -145,7 +133,7 @@ ScoreDialog::ScoreDialog( wxWindow* parent, ScoreFile* file ) : - wxDialog(parent, -1, "Scores", + wxDialog(parent, -1, _T("Scores"), wxDefaultPosition, wxSize(310, 200), wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE), m_scoreFile(file) @@ -154,7 +142,7 @@ ScoreDialog::ScoreDialog( SetAutoLayout (TRUE); ScoreCanvas* list = new ScoreCanvas(this, m_scoreFile); - m_OK = new wxButton(this, wxID_OK, "OK"); + m_OK = new wxButton(this, wxID_OK, _T("OK")); wxLayoutConstraints* layout; diff --git a/demos/forty/scorefil.cpp b/demos/forty/scorefil.cpp index 307b0610c3..ef98e7761b 100644 --- a/demos/forty/scorefil.cpp +++ b/demos/forty/scorefil.cpp @@ -38,7 +38,7 @@ #include "scorefil.h" -ScoreFile::ScoreFile(const char* appName) +ScoreFile::ScoreFile(const wxString& appName) { #if 0 wxString filename; @@ -68,7 +68,8 @@ ScoreFile::ScoreFile(const char* appName) } #endif - m_config = new wxConfig(appName, "wxWindows", appName, "", wxCONFIG_USE_LOCAL_FILE); // only local + m_config = new wxConfig(appName, _T("wxWindows"), appName, _T(""), + wxCONFIG_USE_LOCAL_FILE); // only local } ScoreFile::~ScoreFile() @@ -84,7 +85,7 @@ ScoreFile::~ScoreFile() void ScoreFile::GetPlayerList( wxArrayString &list ) { - m_config->SetPath("/Players"); + m_config->SetPath(_T("/Players")); int length = m_config->GetNumberOfGroups(); if (length <= 0) return; @@ -106,12 +107,14 @@ void ScoreFile::GetPlayerList( wxArrayString &list ) // Calculate an encrypted check number to prevent tampering with // score file -long ScoreFile::CalcCheck(const char* name, int p1, int p2, int p3) +long ScoreFile::CalcCheck(const wxString& name, int p1, int p2, int p3) { long check = 0; - while (*name) + size_t i, max = name.length(); + + for(i = 0; i < max; ++i ) { - check = (check << 1) ^ (long)*name++; + check = (check << 1) ^ (long)name[i]; check = ((check >> 23) ^ check) & 0xFFFFFF; } check = (check << 1) ^ (long)p1; @@ -126,13 +129,13 @@ long ScoreFile::CalcCheck(const char* name, int p1, int p2, int p3) wxString ScoreFile::GetPreviousPlayer() const { wxString result; - m_config->SetPath("/General"); - m_config->Read("LastPlayer", &result); + m_config->SetPath(_T("/General")); + m_config->Read(_T("LastPlayer"), &result); return result; } void ScoreFile::ReadPlayersScore( - const char* player, + const wxString& player, int& wins, int& games, int& score) @@ -142,17 +145,17 @@ void ScoreFile::ReadPlayersScore( games = wins = score = 0; - m_config->SetPath("/Players"); + m_config->SetPath(_T("/Players")); m_config->SetPath(player); - if (m_config->Read("Score", &myScore, 0L) && - m_config->Read("Games", &myGames, 0L) && - m_config->Read("Wins", &myWins, 0L) && - m_config->Read("Check", &check, 0L)) + if (m_config->Read(_T("Score"), &myScore, 0L) && + m_config->Read(_T("Games"), &myGames, 0L) && + m_config->Read(_T("Wins"), &myWins, 0L) && + m_config->Read(_T("Check"), &check, 0L)) { if (check != CalcCheck(player, myGames, myWins, myScore)) { - wxMessageBox("Score file corrupted", "Warning", - wxOK | wxICON_EXCLAMATION); + wxMessageBox(_T("Score file corrupted"), _T("Warning"), + wxOK | wxICON_EXCLAMATION); } else { @@ -165,18 +168,18 @@ void ScoreFile::ReadPlayersScore( } -void ScoreFile::WritePlayersScore(const char* player, int wins, int games, int score) +void ScoreFile::WritePlayersScore(const wxString& player, int wins, int games, int score) { if (player) { - m_config->SetPath("/General"); - m_config->Write("LastPlayer", wxString(player)); // Without wxString tmp, thinks it's bool in VC++ + m_config->SetPath(_T("/General")); + m_config->Write(_T("LastPlayer"), wxString(player)); // Without wxString tmp, thinks it's bool in VC++ - m_config->SetPath("/Players"); + m_config->SetPath(_T("/Players")); m_config->SetPath(player); - m_config->Write("Score", (long)score); - m_config->Write("Games", (long)games); - m_config->Write("Wins", (long)wins); - m_config->Write("Check", CalcCheck(player, games, wins, score)); + m_config->Write(_T("Score"), (long)score); + m_config->Write(_T("Games"), (long)games); + m_config->Write(_T("Wins"), (long)wins); + m_config->Write(_T("Check"), CalcCheck(player, games, wins, score)); } } diff --git a/demos/forty/scorefil.h b/demos/forty/scorefil.h index 25c1ee717d..d73bb62540 100644 --- a/demos/forty/scorefil.h +++ b/demos/forty/scorefil.h @@ -24,17 +24,17 @@ class ScoreFile { public: - ScoreFile(const char* appName); + ScoreFile(const wxString& appName); virtual ~ScoreFile(); void GetPlayerList( wxArrayString &list ); wxString GetPreviousPlayer() const; - void ReadPlayersScore(const char* player, int& wins, int& games, int &score); - void WritePlayersScore(const char* player, int wins, int games, int score); + void ReadPlayersScore(const wxString& player, int& wins, int& games, int &score); + void WritePlayersScore(const wxString& player, int wins, int games, int score); private: - long CalcCheck(const char* name, int p1, int p2, int p3); + long CalcCheck(const wxString& name, int p1, int p2, int p3); wxString m_configFilename; wxConfig* m_config; }; diff --git a/demos/fractal/fractal.cpp b/demos/fractal/fractal.cpp index fe84a6a584..0bf697e9e6 100644 --- a/demos/fractal/fractal.cpp +++ b/demos/fractal/fractal.cpp @@ -90,13 +90,13 @@ DECLARE_EVENT_TABLE() bool MyApp::OnInit() { // Create the main frame window - MyFrame *frame = new MyFrame(NULL, "Fractal Mountains for wxWindows", wxPoint(-1, -1), wxSize(640, 480)); + MyFrame *frame = new MyFrame(NULL, _T("Fractal Mountains for wxWindows"), wxPoint(-1, -1), wxSize(640, 480)); // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(wxID_EXIT, "E&xit"); + file_menu->Append(wxID_EXIT, _T("E&xit")); menuBar = new wxMenuBar; - menuBar->Append(file_menu, "&File"); + menuBar->Append(file_menu, _T("&File")); frame->SetMenuBar(menuBar); int width, height; diff --git a/demos/fractal/fractal.dsp b/demos/fractal/fractal.dsp index b2ab319f57..6ba1a1d3b0 100644 --- a/demos/fractal/fractal.dsp +++ b/demos/fractal/fractal.dsp @@ -45,17 +45,17 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdll /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "fractal - Win32 Debug DLL" @@ -71,17 +71,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdlld /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "fractal - Win32 Release" @@ -97,17 +97,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I..\..\lib\msw /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlib.lib ../..\lib\regex.lib ../..\lib\png.lib ../..\lib\jpeg.lib ../..\lib\tiff.lib ../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "fractal - Win32 Debug" @@ -123,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I..\..\lib\mswd /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlibd.lib ../..\lib\regexd.lib ../..\lib\pngd.lib ../..\lib\jpegd.lib ../..\lib\tiffd.lib ../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF @@ -151,8 +151,7 @@ SOURCE=.\fractal.cpp SOURCE=.\fractal.rc # ADD BASE RSC /l 0x809 -# ADD RSC /l 0x809 /i "../../include" -# SUBTRACT RSC /i "../../../include" +# ADD RSC /l 0x809 /i "..\..\include" # End Source File # End Target # End Project diff --git a/demos/life/game.h b/demos/life/game.h index 8605e51376..b86757ebf9 100644 --- a/demos/life/game.h +++ b/demos/life/game.h @@ -58,9 +58,18 @@ public: m_name = name; m_description = description; m_rules = _(""); - m_shape.Add( wxString::Format("%i %i", -width/2, -height/2) ); + m_shape.Add( wxString::Format(_T("%i %i"), -width/2, -height/2) ); for(int j = 0; j < height; j++) - m_shape.Add( wxString(shape + (j * width), (size_t) width) ); + { + wxString tmp; + + for(int i = 0; i < width; i++) + { + tmp += wxChar(shape[j * width + i]); + } + + m_shape.Add( tmp ); + } }; wxString m_name; diff --git a/demos/life/life.cpp b/demos/life/life.cpp index 35bcc5b6b4..7f14638a7a 100644 --- a/demos/life/life.cpp +++ b/demos/life/life.cpp @@ -194,9 +194,9 @@ LifeFrame::LifeFrame() : wxFrame((wxFrame *)0, -1, _("Life!"), wxPoint(200, 200) SetIcon(wxICON(mondrian)); // menu bar - wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); - wxMenu *menuView = new wxMenu("", wxMENU_TEAROFF); - wxMenu *menuGame = new wxMenu("", wxMENU_TEAROFF); + wxMenu *menuFile = new wxMenu(_T(""), wxMENU_TEAROFF); + wxMenu *menuView = new wxMenu(_T(""), wxMENU_TEAROFF); + wxMenu *menuGame = new wxMenu(_T(""), wxMENU_TEAROFF); menuFile->Append(ID_NEW, _("&New"), _("Start a new game")); menuFile->Append(ID_OPEN, _("&Open..."), _("Open an existing Life pattern")); diff --git a/demos/life/life.dsp b/demos/life/life.dsp index e711056638..f75167839e 100644 --- a/demos/life/life.dsp +++ b/demos/life/life.dsp @@ -45,17 +45,17 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdll /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "life - Win32 Debug DLL" @@ -71,17 +71,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdlld /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "life - Win32 Release" @@ -97,17 +97,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I..\..\lib\msw /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlib.lib ../..\lib\regex.lib ../..\lib\png.lib ../..\lib\jpeg.lib ../..\lib\tiff.lib ../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "life - Win32 Debug" @@ -123,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I..\..\lib\mswd /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlibd.lib ../..\lib\regexd.lib ../..\lib\pngd.lib ../..\lib\jpegd.lib ../..\lib\tiffd.lib ../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF @@ -159,8 +159,7 @@ SOURCE=.\life.cpp SOURCE=.\life.rc # ADD BASE RSC /l 0x809 -# ADD RSC /l 0x809 /i "../../include" -# SUBTRACT RSC /i "../../../include" +# ADD RSC /l 0x809 /i "..\..\include" # End Source File # Begin Source File diff --git a/demos/poem/poem.dsp b/demos/poem/poem.dsp index e2a0182619..f930732f99 100644 --- a/demos/poem/poem.dsp +++ b/demos/poem/poem.dsp @@ -45,17 +45,17 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdll /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "poem - Win32 Debug DLL" @@ -71,17 +71,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I..\..\lib\mswdlld /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "poem - Win32 Release" @@ -97,17 +97,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MD /W4 /O2 /I "../../include" /I "../../lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib/msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I..\..\lib\msw /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" -# ADD RSC /l 0x409 /i "../../include" /d "NDEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlib.lib ../..\lib\regex.lib ../..\lib\png.lib ../..\lib\jpeg.lib ../..\lib\tiff.lib ../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "poem - Win32 Debug" @@ -123,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../include" /I "../../lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib/mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I..\..\lib\mswd /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" -# ADD RSC /l 0x409 /i "../../include" /d "_DEBUG" +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../..\lib\zlibd.lib ../..\lib\regexd.lib ../..\lib\pngd.lib ../..\lib\jpegd.lib ../..\lib\tiffd.lib ../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/demos/poem/wxpoem.cpp b/demos/poem/wxpoem.cpp index 8a883d1543..b67c0c0fca 100644 --- a/demos/poem/wxpoem.cpp +++ b/demos/poem/wxpoem.cpp @@ -206,7 +206,7 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) dc->SetFont(* NormalFont); long xx; long yy; - dc->GetTextExtent("X", &xx, &yy); + dc->GetTextExtent(_T("X"), &xx, &yy); char_height = (int)yy; if (current_page == 0) @@ -844,9 +844,11 @@ int GetIndex() // Read preferences void ReadPreferences() { +#if wxUSE_RESOURCES wxGetResource("wxPoem", "FontSize", &pointSize); wxGetResource("wxPoem", "X", &XPos); wxGetResource("wxPoem", "Y", &YPos); +#endif } // Write preferences to disk @@ -854,10 +856,12 @@ void WritePreferences() { #ifdef __WXMSW__ TheMainWindow->GetPosition(&XPos, &YPos); +#if wxUSE_RESOURCES wxWriteResource("wxPoem", "FontSize", pointSize); wxWriteResource("wxPoem", "X", XPos); wxWriteResource("wxPoem", "Y", YPos); #endif +#endif } // Load a poem from given file, at given point in file. diff --git a/distrib/mac/shared-ld-sh b/distrib/mac/shared-ld-sh index 951edf11be..91f95588fe 100755 --- a/distrib/mac/shared-ld-sh +++ b/distrib/mac/shared-ld-sh @@ -21,7 +21,7 @@ while test $# -gt 0; do verbose=1 ;; - -o|-compatibility_version|-current_version|-framework|-undefined) + -o|-compatibility_version|-current_version|-framework|-undefined|-install_name) # collect these options and values args="$args $1 $2" shift diff --git a/distrib/msw/contrib.rsp b/distrib/msw/contrib.rsp index b176cf90ff..e8bd9bcbb7 100644 --- a/distrib/msw/contrib.rsp +++ b/distrib/msw/contrib.rsp @@ -65,8 +65,8 @@ contrib/samples/gizmos/multicell/*.txt contrib/samples/gizmos/multicell/*.ico contrib/samples/gizmos/multicell/*.bmp contrib/samples/gizmos/multicell/*.rc -contrib/samples/gizmos/multicell/MulticellVC.dsp -contrib/samples/gizmos/multicell/MulticellVC.dsw +contrib/samples/gizmos/multicell/multicell.dsp +contrib/samples/gizmos/multicell/multicell.dsw contrib/samples/gizmos/splittree/*.cpp contrib/samples/gizmos/splittree/*.h @@ -91,8 +91,8 @@ contrib/samples/gizmos/editlbox/*.txt contrib/samples/gizmos/editlbox/*.ico contrib/samples/gizmos/editlbox/*.bmp contrib/samples/gizmos/editlbox/*.rc -contrib/samples/gizmos/editlbox/EditlboxVC.dsp -contrib/samples/gizmos/editlbox/EditlboxVC.dsw +contrib/samples/gizmos/editlbox/editlbox.dsp +contrib/samples/gizmos/editlbox/editlbox.dsw contrib/samples/gizmos/dynsash/*.cpp contrib/samples/gizmos/dynsash/*.h @@ -104,8 +104,8 @@ contrib/samples/gizmos/dynsash/*.txt contrib/samples/gizmos/dynsash/*.ico contrib/samples/gizmos/dynsash/*.bmp contrib/samples/gizmos/dynsash/*.rc -contrib/samples/gizmos/dynsash/DynsashVC.dsp -contrib/samples/gizmos/dynsash/SynsashVC.dsw +contrib/samples/gizmos/dynsash/dynsash.dsp +contrib/samples/gizmos/dynsash/dynsash.dsw contrib/samples/gizmos/dynsash_switch/*.cpp contrib/samples/gizmos/dynsash_switch/*.h @@ -117,8 +117,21 @@ contrib/samples/gizmos/dynsash_switch/*.txt contrib/samples/gizmos/dynsash_switch/*.ico contrib/samples/gizmos/dynsash_switch/*.bmp contrib/samples/gizmos/dynsash_switch/*.rc -contrib/samples/gizmos/dynsash_switch/DynsashSwitchVC.dsp -contrib/samples/gizmos/dynsash_switch/DynsashSwitchVC.dsw +contrib/samples/gizmos/dynsash_switch/dynsash_switch.dsp +contrib/samples/gizmos/dynsash_switch/dynsash_switch.dsw + +contrib/samples/gizmos/led/*.cpp +contrib/samples/gizmos/led/*.h +contrib/samples/gizmos/led/*.def +contrib/samples/gizmos/led/makefile* +contrib/samples/gizmos/led/*.xbm +contrib/samples/gizmos/led/*.xpm +contrib/samples/gizmos/led/*.txt +contrib/samples/gizmos/led/*.ico +contrib/samples/gizmos/led/*.bmp +contrib/samples/gizmos/led/*.rc +contrib/samples/gizmos/led/led.dsp +contrib/samples/gizmos/led/led.dsw contrib/samples/animate/*.cpp contrib/samples/animate/*.h @@ -130,8 +143,8 @@ contrib/samples/animate/*.txt contrib/samples/animate/*.ico contrib/samples/animate/*.bmp contrib/samples/animate/*.rc -contrib/samples/animate/AnimVC.dsp -contrib/samples/animate/AnimVC.dsw +contrib/samples/animate/AniTestVC.dsp +contrib/samples/animate/AniTestVC.dsw contrib/samples/fl/makefile* contrib/samples/fl/bitmaps/*.bmp diff --git a/distrib/msw/copybase.bat b/distrib/msw/copybase.bat index 8512cde9d4..27b86d800b 100755 --- a/distrib/msw/copybase.bat +++ b/distrib/msw/copybase.bat @@ -1,9 +1,10 @@ @echo off -rem VZ: this is quick and _very_ dirty +rem VZ: this is quick and _very_ dirty, to be replaced by a script directly +rem parsing the files.txt and include/wx/version.h... -set VER=2.3.3 -set DEST=s:\upload\wxBase-%VER% +set VER=2.4.0 +set DEST=t:\wxBase-%VER% mkdir %DEST% mkdir %DEST%\include @@ -20,26 +21,46 @@ mkdir %DEST%\src\msw mkdir %DEST%\src\regex mkdir %DEST%\src\unix mkdir %DEST%\src\zlib +mkdir %DEST%\lib chdir %WXWIN% rem Copy the files to the root directory +copy /q configure.in %DEST% +copy /q configure %DEST% +copy /q wxwin.m4 %DEST% +copy /q aclocal.m4 %DEST% +copy /q config.sub %DEST% +copy /q config.guess %DEST% +copy /q install-sh %DEST% +copy /q mkinstalldirs %DEST% +copy /q wx-config.in %DEST% +copy /q setup.h.in %DEST% +copy /q Makefile.in %DEST% +copy /q wxBase.spec %DEST% copy /q docs\changes.txt %DEST%\CHANGES.txt copy /q docs\licence.txt %DEST%\LICENCE.txt -copy /q docs\install.txt %DEST%\README.txt -copy /q docs\symbols.txt %DEST%\SYMBOLS.txt +copy /q docs\base\readme.txt %DEST%\README.txt -rem Copy the project files +rem Copy the project/make files copy /q src\wxBase.dsp %DEST%\src\wxBase.dsp copy /q src\wxBase.dsw %DEST%\src\wxBase.dsw -copy /q include\wx\msw\setup.h %DEST%\include\wx\msw\setup.h +copy /q include\wx\msw\setup0.h %DEST%\include\wx\msw\setup.h +copy /q src\makeb32.env %DEST%\src\makeb32.env +copy /q src\makelib.b32 %DEST%\src\makelib.b32 +copy /q src\makeprog.b32 %DEST%\src\makeprog.b32 +copy /q src\msw\makebase.b32 %DEST%\src\msw\makebase.b32 +copy /q src\*.in %DEST%\src rem Copy the sample copy /q samples\console\console.cpp %DEST%\samples\console\console.cpp copy /q samples\console\console.dsp %DEST%\samples\console\console.dsp +copy /q samples\console\makefile.b32 %DEST%\samples\console\makefile.b32 +copy /q samples\console\makefile.unx %DEST%\samples\console +copy /q samples\console\Makefile.in %DEST%\samples\console copy /q samples\console\testdata.fc %DEST%\samples\console\testdata.fc rem Copy regex and zlib files @@ -51,101 +72,27 @@ rem The files not in src/files.lst copy /q src\msw\dummy.cpp %DEST%\src\msw\dummy.cpp copy /q src\msw\dummydll.cpp %DEST%\src\msw\dummydll.cpp +copy /q src\common\execcmn.cpp %DEST%\src\common\execcmn.cpp copy /q src\common\unictabl.inc %DEST%\src\common\unictabl.inc +copy /q src\common\unzip.h %DEST%\src\common\unzip.h -rem The rest is generated from src/files.lst - -copy /q include\wx\app.h %DEST%\include\wx\app.h -copy /q include\wx\arrimpl.cpp %DEST%\include\wx\arrimpl.cpp -copy /q include\wx\buffer.h %DEST%\include\wx\buffer.h -copy /q include\wx\chkconf.h %DEST%\include\wx\chkconf.h -copy /q include\wx\clntdata.h %DEST%\include\wx\clntdata.h -copy /q include\wx\cmdline.h %DEST%\include\wx\cmdline.h -copy /q include\wx\confbase.h %DEST%\include\wx\confbase.h -copy /q include\wx\config.h %DEST%\include\wx\config.h -copy /q include\wx\date.h %DEST%\include\wx\date.h -copy /q include\wx\datetime.h %DEST%\include\wx\datetime.h -copy /q include\wx\datetime.inl %DEST%\include\wx\datetime.inl -copy /q include\wx\datstrm.h %DEST%\include\wx\datstrm.h -copy /q include\wx\db.h %DEST%\include\wx\db.h -copy /q include\wx\dbtable.h %DEST%\include\wx\dbtable.h -copy /q include\wx\dde.h %DEST%\include\wx\dde.h -copy /q include\wx\debug.h %DEST%\include\wx\debug.h -copy /q include\wx\defs.h %DEST%\include\wx\defs.h -copy /q include\wx\dir.h %DEST%\include\wx\dir.h -copy /q include\wx\dynarray.h %DEST%\include\wx\dynarray.h -copy /q include\wx\dynlib.h %DEST%\include\wx\dynlib.h -copy /q include\wx\encconv.h %DEST%\include\wx\encconv.h -copy /q include\wx\event.h %DEST%\include\wx\event.h -copy /q include\wx\ffile.h %DEST%\include\wx\ffile.h -copy /q include\wx\file.h %DEST%\include\wx\file.h -copy /q include\wx\fileconf.h %DEST%\include\wx\fileconf.h -copy /q include\wx\filefn.h %DEST%\include\wx\filefn.h -copy /q include\wx\filename.h %DEST%\include\wx\filename.h -copy /q include\wx\filesys.h %DEST%\include\wx\filesys.h -copy /q include\wx\fontenc.h %DEST%\include\wx\fontenc.h -copy /q include\wx\fontmap.h %DEST%\include\wx\fontmap.h -copy /q include\wx\fs_inet.h %DEST%\include\wx\fs_inet.h -copy /q include\wx\fs_mem.h %DEST%\include\wx\fs_mem.h -copy /q include\wx\fs_zip.h %DEST%\include\wx\fs_zip.h -copy /q include\wx\gsocket.h %DEST%\include\wx\gsocket.h -copy /q include\wx\hash.h %DEST%\include\wx\hash.h -copy /q include\wx\intl.h %DEST%\include\wx\intl.h -copy /q include\wx\ioswrap.h %DEST%\include\wx\ioswrap.h -copy /q include\wx\ipcbase.h %DEST%\include\wx\ipcbase.h -copy /q include\wx\list.h %DEST%\include\wx\list.h -copy /q include\wx\listimpl.cpp %DEST%\include\wx\listimpl.cpp -copy /q include\wx\log.h %DEST%\include\wx\log.h -copy /q include\wx\longlong.h %DEST%\include\wx\longlong.h -copy /q include\wx\memconf.h %DEST%\include\wx\memconf.h -copy /q include\wx\memory.h %DEST%\include\wx\memory.h -copy /q include\wx\memtext.h %DEST%\include\wx\memtext.h -copy /q include\wx\mimetype.h %DEST%\include\wx\mimetype.h -copy /q include\wx\module.h %DEST%\include\wx\module.h -copy /q include\wx\mstream.h %DEST%\include\wx\mstream.h -copy /q include\wx\object.h %DEST%\include\wx\object.h -copy /q include\wx\objstrm.h %DEST%\include\wx\objstrm.h -copy /q include\wx\platform.h %DEST%\include\wx\platform.h -copy /q include\wx\process.h %DEST%\include\wx\process.h -copy /q include\wx\regex.h %DEST%\include\wx\regex.h -copy /q include\wx\sckaddr.h %DEST%\include\wx\sckaddr.h -copy /q include\wx\sckipc.h %DEST%\include\wx\sckipc.h -copy /q include\wx\sckstrm.h %DEST%\include\wx\sckstrm.h -copy /q include\wx\serbase.h %DEST%\include\wx\serbase.h -copy /q include\wx\snglinst.h %DEST%\include\wx\snglinst.h -copy /q include\wx\socket.h %DEST%\include\wx\socket.h -copy /q include\wx\strconv.h %DEST%\include\wx\strconv.h -copy /q include\wx\stream.h %DEST%\include\wx\stream.h -copy /q include\wx\string.h %DEST%\include\wx\string.h -copy /q include\wx\sysopt.h %DEST%\include\wx\sysopt.h -copy /q include\wx\textbuf.h %DEST%\include\wx\textbuf.h -copy /q include\wx\textfile.h %DEST%\include\wx\textfile.h -copy /q include\wx\thread.h %DEST%\include\wx\thread.h -copy /q include\wx\time.h %DEST%\include\wx\time.h -copy /q include\wx\timer.h %DEST%\include\wx\timer.h -copy /q include\wx\tokenzr.h %DEST%\include\wx\tokenzr.h -copy /q include\wx\txtstrm.h %DEST%\include\wx\txtstrm.h -copy /q include\wx\unzip.h %DEST%\include\wx\unzip.h -copy /q include\wx\url.h %DEST%\include\wx\url.h -copy /q include\wx\utils.h %DEST%\include\wx\utils.h -copy /q include\wx\variant.h %DEST%\include\wx\variant.h -copy /q include\wx\vector.h %DEST%\include\wx\vector.h -copy /q include\wx\version.h %DEST%\include\wx\version.h -copy /q include\wx\wfstream.h %DEST%\include\wx\wfstream.h -copy /q include\wx\wx.h %DEST%\include\wx\wx.h -copy /q include\wx\wxchar.h %DEST%\include\wx\wxchar.h -copy /q include\wx\wxprec.h %DEST%\include\wx\wxprec.h -copy /q include\wx\zipstrm.h %DEST%\include\wx\zipstrm.h -copy /q include\wx\zstream.h %DEST%\include\wx\zstream.h -copy /q include\wx\unix\gsockunx.h %DEST%\include\wx\unix\gsockunx.h -copy /q include\wx\unix\mimetype.h %DEST%\include\wx\unix\mimetype.h -copy /q include\wx\msw\dde.h %DEST%\include\wx\msw\dde.h -copy /q include\wx\msw\mimetype.h %DEST%\include\wx\msw\mimetype.h -copy /q include\wx\protocol\file.h %DEST%\include\wx\protocol\file.h -copy /q include\wx\protocol\ftp.h %DEST%\include\wx\protocol\ftp.h -copy /q include\wx\protocol\http.h %DEST%\include\wx\protocol\http.h -copy /q include\wx\protocol\protocol.h %DEST%\include\wx\protocol\protocol.h +copy /q include\wx\msw\gsockmsw.h %DEST%\include\wx\msw\gsockmsw.h +copy /q include\wx\msw\missing.h %DEST%\include\wx\msw\missing.h +copy /q include\wx\msw\mslu.h %DEST%\include\wx\msw\mslu.h +copy /q include\wx\msw\msvcrt.h %DEST%\include\wx\msw\msvcrt.h +copy /q include\wx\msw\private.h %DEST%\include\wx\msw\private.h +copy /q include\wx\msw\regconf.h %DEST%\include\wx\msw\regconf.h +copy /q include\wx\msw\registry.h %DEST%\include\wx\msw\registry.h +rem The rest is generated from src/files.lst by pasting the ALL_SOURCES and +rem ALL_HEADERS here and doing +rem +rem .,$s@^\s*\(.*\)/\([^ ]*\)\( \\\)\?$@copy /q src\\\1\\\2 %DEST%\\src\\\1\\\2 +rem +rem and +rem +rem .,$s@/@\\@|exe "normal "|.,$s@^\s*\([^ ]*\)\( \\\)\?$@copy /q include\\wx\\\1 %DEST%\\include\\wx\\\1 +rem copy /q src\common\init.cpp %DEST%\src\common\init.cpp copy /q src\common\appcmn.cpp %DEST%\src\common\appcmn.cpp copy /q src\common\clntdata.cpp %DEST%\src\common\clntdata.cpp @@ -158,6 +105,7 @@ copy /q src\common\dbtable.cpp %DEST%\src\common\dbtable.cpp copy /q src\common\dircmn.cpp %DEST%\src\common\dircmn.cpp copy /q src\common\dynarray.cpp %DEST%\src\common\dynarray.cpp copy /q src\common\dynlib.cpp %DEST%\src\common\dynlib.cpp +copy /q src\common\dynload.cpp %DEST%\src\common\dynload.cpp copy /q src\common\encconv.cpp %DEST%\src\common\encconv.cpp copy /q src\common\event.cpp %DEST%\src\common\event.cpp copy /q src\common\extended.c %DEST%\src\common\extended.c @@ -173,6 +121,7 @@ copy /q src\common\fs_mem.cpp %DEST%\src\common\fs_mem.cpp copy /q src\common\fs_zip.cpp %DEST%\src\common\fs_zip.cpp copy /q src\common\ftp.cpp %DEST%\src\common\ftp.cpp copy /q src\common\hash.cpp %DEST%\src\common\hash.cpp +copy /q src\common\hashmap.cpp %DEST%\src\common\hashmap.cpp copy /q src\common\http.cpp %DEST%\src\common\http.cpp copy /q src\common\intl.cpp %DEST%\src\common\intl.cpp copy /q src\common\ipcbase.cpp %DEST%\src\common\ipcbase.cpp @@ -182,9 +131,9 @@ copy /q src\common\longlong.cpp %DEST%\src\common\longlong.cpp copy /q src\common\memory.cpp %DEST%\src\common\memory.cpp copy /q src\common\mimecmn.cpp %DEST%\src\common\mimecmn.cpp copy /q src\common\module.cpp %DEST%\src\common\module.cpp +copy /q src\common\msgout.cpp %DEST%\src\common\msgout.cpp copy /q src\common\mstream.cpp %DEST%\src\common\mstream.cpp copy /q src\common\object.cpp %DEST%\src\common\object.cpp -copy /q src\common\objstrm.cpp %DEST%\src\common\objstrm.cpp copy /q src\common\process.cpp %DEST%\src\common\process.cpp copy /q src\common\protocol.cpp %DEST%\src\common\protocol.cpp copy /q src\common\regex.cpp %DEST%\src\common\regex.cpp @@ -192,7 +141,6 @@ copy /q src\common\sckaddr.cpp %DEST%\src\common\sckaddr.cpp copy /q src\common\sckfile.cpp %DEST%\src\common\sckfile.cpp copy /q src\common\sckipc.cpp %DEST%\src\common\sckipc.cpp copy /q src\common\sckstrm.cpp %DEST%\src\common\sckstrm.cpp -copy /q src\common\serbase.cpp %DEST%\src\common\serbase.cpp copy /q src\common\socket.cpp %DEST%\src\common\socket.cpp copy /q src\common\strconv.cpp %DEST%\src\common\strconv.cpp copy /q src\common\stream.cpp %DEST%\src\common\stream.cpp @@ -229,3 +177,105 @@ copy /q src\msw\snglinst.cpp %DEST%\src\msw\snglinst.cpp copy /q src\msw\thread.cpp %DEST%\src\msw\thread.cpp copy /q src\msw\utils.cpp %DEST%\src\msw\utils.cpp copy /q src\msw\utilsexc.cpp %DEST%\src\msw\utilsexc.cpp +copy /q src\msw\volume.cpp %DEST%\src\msw\volume.cpp + +copy /q include\wx\app.h %DEST%\include\wx\app.h +copy /q include\wx\arrimpl.cpp %DEST%\include\wx\arrimpl.cpp +copy /q include\wx\buffer.h %DEST%\include\wx\buffer.h +copy /q include\wx\build.h %DEST%\include\wx\build.h +copy /q include\wx\chkconf.h %DEST%\include\wx\chkconf.h +copy /q include\wx\clntdata.h %DEST%\include\wx\clntdata.h +copy /q include\wx\cmdline.h %DEST%\include\wx\cmdline.h +copy /q include\wx\confbase.h %DEST%\include\wx\confbase.h +copy /q include\wx\config.h %DEST%\include\wx\config.h +copy /q include\wx\date.h %DEST%\include\wx\date.h +copy /q include\wx\datetime.h %DEST%\include\wx\datetime.h +copy /q include\wx\datetime.inl %DEST%\include\wx\datetime.inl +copy /q include\wx\datstrm.h %DEST%\include\wx\datstrm.h +copy /q include\wx\db.h %DEST%\include\wx\db.h +copy /q include\wx\dbkeyg.h %DEST%\include\wx\dbkeyg.h +copy /q include\wx\dbtable.h %DEST%\include\wx\dbtable.h +copy /q include\wx\dde.h %DEST%\include\wx\dde.h +copy /q include\wx\debug.h %DEST%\include\wx\debug.h +copy /q include\wx\defs.h %DEST%\include\wx\defs.h +copy /q include\wx\dir.h %DEST%\include\wx\dir.h +copy /q include\wx\dynarray.h %DEST%\include\wx\dynarray.h +copy /q include\wx\dynlib.h %DEST%\include\wx\dynlib.h +copy /q include\wx\dynload.h %DEST%\include\wx\dynload.h +copy /q include\wx\encconv.h %DEST%\include\wx\encconv.h +copy /q include\wx\event.h %DEST%\include\wx\event.h +copy /q include\wx\features.h %DEST%\include\wx\features.h +copy /q include\wx\ffile.h %DEST%\include\wx\ffile.h +copy /q include\wx\file.h %DEST%\include\wx\file.h +copy /q include\wx\fileconf.h %DEST%\include\wx\fileconf.h +copy /q include\wx\filefn.h %DEST%\include\wx\filefn.h +copy /q include\wx\filename.h %DEST%\include\wx\filename.h +copy /q include\wx\filesys.h %DEST%\include\wx\filesys.h +copy /q include\wx\fontenc.h %DEST%\include\wx\fontenc.h +copy /q include\wx\fontmap.h %DEST%\include\wx\fontmap.h +copy /q include\wx\fs_inet.h %DEST%\include\wx\fs_inet.h +copy /q include\wx\fs_mem.h %DEST%\include\wx\fs_mem.h +copy /q include\wx\fs_zip.h %DEST%\include\wx\fs_zip.h +copy /q include\wx\gsocket.h %DEST%\include\wx\gsocket.h +copy /q include\wx\hash.h %DEST%\include\wx\hash.h +copy /q include\wx\hashmap.h %DEST%\include\wx\hashmap.h +copy /q include\wx\intl.h %DEST%\include\wx\intl.h +copy /q include\wx\ioswrap.h %DEST%\include\wx\ioswrap.h +copy /q include\wx\ipc.h %DEST%\include\wx\ipc.h +copy /q include\wx\ipcbase.h %DEST%\include\wx\ipcbase.h +copy /q include\wx\isql.h %DEST%\include\wx\isql.h +copy /q include\wx\isqlext.h %DEST%\include\wx\isqlext.h +copy /q include\wx\list.h %DEST%\include\wx\list.h +copy /q include\wx\listimpl.cpp %DEST%\include\wx\listimpl.cpp +copy /q include\wx\log.h %DEST%\include\wx\log.h +copy /q include\wx\longlong.h %DEST%\include\wx\longlong.h +copy /q include\wx\memconf.h %DEST%\include\wx\memconf.h +copy /q include\wx\memory.h %DEST%\include\wx\memory.h +copy /q include\wx\memtext.h %DEST%\include\wx\memtext.h +copy /q include\wx\mimetype.h %DEST%\include\wx\mimetype.h +copy /q include\wx\module.h %DEST%\include\wx\module.h +copy /q include\wx\msgout.h %DEST%\include\wx\msgout.h +copy /q include\wx\mstream.h %DEST%\include\wx\mstream.h +copy /q include\wx\object.h %DEST%\include\wx\object.h +copy /q include\wx\platform.h %DEST%\include\wx\platform.h +copy /q include\wx\process.h %DEST%\include\wx\process.h +copy /q include\wx\regex.h %DEST%\include\wx\regex.h +copy /q include\wx\sckaddr.h %DEST%\include\wx\sckaddr.h +copy /q include\wx\sckipc.h %DEST%\include\wx\sckipc.h +copy /q include\wx\sckstrm.h %DEST%\include\wx\sckstrm.h +copy /q include\wx\snglinst.h %DEST%\include\wx\snglinst.h +copy /q include\wx\socket.h %DEST%\include\wx\socket.h +copy /q include\wx\strconv.h %DEST%\include\wx\strconv.h +copy /q include\wx\stream.h %DEST%\include\wx\stream.h +copy /q include\wx\string.h %DEST%\include\wx\string.h +copy /q include\wx\sysopt.h %DEST%\include\wx\sysopt.h +copy /q include\wx\textbuf.h %DEST%\include\wx\textbuf.h +copy /q include\wx\textfile.h %DEST%\include\wx\textfile.h +copy /q include\wx\thread.h %DEST%\include\wx\thread.h +copy /q include\wx\thrimpl.cpp %DEST%\include\wx\thrimpl.cpp +copy /q include\wx\time.h %DEST%\include\wx\time.h +copy /q include\wx\timer.h %DEST%\include\wx\timer.h +copy /q include\wx\tokenzr.h %DEST%\include\wx\tokenzr.h +copy /q include\wx\txtstrm.h %DEST%\include\wx\txtstrm.h +copy /q include\wx\url.h %DEST%\include\wx\url.h +copy /q include\wx\utils.h %DEST%\include\wx\utils.h +copy /q include\wx\variant.h %DEST%\include\wx\variant.h +copy /q include\wx\vector.h %DEST%\include\wx\vector.h +copy /q include\wx\version.h %DEST%\include\wx\version.h +copy /q include\wx\volume.h %DEST%\include\wx\volume.h +copy /q include\wx\wfstream.h %DEST%\include\wx\wfstream.h +copy /q include\wx\wx.h %DEST%\include\wx\wx.h +copy /q include\wx\wxchar.h %DEST%\include\wx\wxchar.h +copy /q include\wx\wxprec.h %DEST%\include\wx\wxprec.h +copy /q include\wx\zipstrm.h %DEST%\include\wx\zipstrm.h +copy /q include\wx\zstream.h %DEST%\include\wx\zstream.h +copy /q include\wx\unix\gsockunx.h %DEST%\include\wx\unix\gsockunx.h +copy /q include\wx\unix\mimetype.h %DEST%\include\wx\unix\mimetype.h +copy /q include\wx\msw\dde.h %DEST%\include\wx\msw\dde.h +copy /q include\wx\msw\gccpriv.h %DEST%\include\wx\msw\gccpriv.h +copy /q include\wx\msw\mimetype.h %DEST%\include\wx\msw\mimetype.h +copy /q include\wx\msw\winundef.h %DEST%\include\wx\msw\winundef.h +copy /q include\wx\protocol\file.h %DEST%\include\wx\protocol\file.h +copy /q include\wx\protocol\ftp.h %DEST%\include\wx\protocol\ftp.h +copy /q include\wx\protocol\http.h %DEST%\include\wx\protocol\http.h +copy /q include\wx\protocol\protocol.h %DEST%\include\wx\protocol\protocol.h diff --git a/distrib/msw/docsrc.rsp b/distrib/msw/docsrc.rsp index 9bbf15761a..eda8928447 100644 --- a/distrib/msw/docsrc.rsp +++ b/distrib/msw/docsrc.rsp @@ -32,7 +32,6 @@ utils/dialoged/docs/*.gif contrib/docs/latex/svg/*.gif contrib/docs/latex/svg/*.tex -contrib/docs/latex/svg/*.gif contrib/docs/latex/svg/*.ini contrib/docs/latex/svg/*.sty diff --git a/distrib/msw/filerepl.bat b/distrib/msw/filerepl.bat index 815fc0b19b..450a30b609 100755 --- a/distrib/msw/filerepl.bat +++ b/distrib/msw/filerepl.bat @@ -10,6 +10,7 @@ set files=%3 echo s/%keyword/%repl/g > script.tmp call %wxwin\distrib\msw\expdwild.bat %3 list.tmp +Rem goto end set len=%@LINES[%files] do i = 0 to %len by 1 diff --git a/distrib/msw/generic.rsp b/distrib/msw/generic.rsp index 7e61bcc925..1f20d480b5 100644 --- a/distrib/msw/generic.rsp +++ b/distrib/msw/generic.rsp @@ -8,11 +8,9 @@ config.sub configure.in setup.h.in install-sh -missing mkinstalldirs -modules -template.mak wx-config.in +version-script.in setup.h_vms distrib/msw/*.rsp @@ -28,19 +26,18 @@ distrib/msw/tmake/makeall.bat distrib/msw/tmake/makeall.sh distrib/msw/tmake/wxwin.pro distrib/msw/tmake/tmake.conf -distrib/gtk/* locale/*.po -locale/*.mo locale/Makefile art/*.xpm +art/*.ico +art/*.png art/motif/*.xpm art/gtk/*.xpm docs/readme.txt docs/readme_vms.txt -docs/install.txt docs/changes.txt docs/todo.txt docs/licence.txt @@ -48,18 +45,10 @@ docs/licendoc.txt docs/preamble.txt docs/gpl.txt docs/lgpl.txt -docs/symbols.txt -docs/bugs.txt docs/index.htm docs/html/*.htm docs/html/*.gif -docs/html/*.png -docs/html/icons/*.gif -docs/html/icons/*.png -docs/html/icons/*.jpg docs/html/images/*.gif -docs/html/images/*.png -docs/html/images/*.jpg docs/tech/*.txt docs/tech/*.htm @@ -152,19 +141,9 @@ lib/dummy tools/gettext/*.* -bitmaps/xpm/16x16/*.* -bitmaps/xpm/32x32/*.* -bitmaps/xpm/64x64/*.* -bitmaps/xpm/misc/*.* -bitmaps/*.* -bitmaps/bmp/16x15/*.* -bitmaps/bmp/10x8/*.* -bitmaps/ico/32x32/*.* - misc/afm/*.afm misc/gs_afm/*.afm -utils/*.txt utils/make*.* utils/configure utils/configure.in @@ -572,6 +551,7 @@ samples/html/test/*.ico samples/html/test/*.htm samples/html/test/*.html samples/html/test/*.pro +samples/html/test/*.gif samples/html/virtual/*.cpp samples/html/virtual/*.h @@ -649,6 +629,7 @@ samples/image/*.ico samples/image/*.cur samples/image/*.txt samples/image/*.pro +samples/image/*.ani samples/internat/*.cpp samples/internat/*.h diff --git a/distrib/msw/innobott.txt b/distrib/msw/innobott.txt index 4fda9d8113..1a674c558d 100644 --- a/distrib/msw/innobott.txt +++ b/distrib/msw/innobott.txt @@ -6,7 +6,6 @@ Name: {group}\Tex2rtf Help; Filename: {app}\bin\tex2rtf.chm; WorkingDir: {app}\bin; IconIndex: 0; Flags: useapppaths Name: {group}\Changes; Filename: {app}\docs\changes.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths Name: {group}\Readme; Filename: {app}\docs\readme.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths -; Name: {group}\Debug View; Filename: {app}\bin\DBGVIEW.EXE; WorkingDir: {app}\bin; IconFilename: {app}\bin\DBGVIEW.EXE; IconIndex: 0 Name: {group}\Compiling wxWindows; Filename: {app}\docs\msw\install.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths Name: {group}\wxWindows Manual; Filename: {app}\docs\htmlhelp\wx.chm; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths Name: {group}\Tutorial; Filename: {app}\docs\pdf\wxTutorial.pdf; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths @@ -16,6 +15,7 @@ [INI] [Registry] + Root: HKCU; SubKey: Software\Environment\; ValueName: WXWIN; ValueType: string; ValueData: {app}; Flags: createvalueifdoesntexist [UninstallDelete] @@ -32,10 +32,10 @@ ; DO NOT DELETE THEM or you may be unable to reload the script ;[ScriptSetup] -;VerNum=2.3.3 +;VerNum=2.4.0 ;InnoVer=1.3 ;AddVerTo=AppVerName ;SetupFilename=setup.exe -;OutputFolder=C:\wx2dev\wxWindows\deliver +;OutputFolder=C:\wx24\wxWindows\deliver ;CopyrightText=Copyright © The wxWindows Team diff --git a/distrib/msw/innotop.txt b/distrib/msw/innotop.txt index 7e5c76ba20..b388e4dc39 100644 --- a/distrib/msw/innotop.txt +++ b/distrib/msw/innotop.txt @@ -4,13 +4,13 @@ [Setup] MinVersion=4.0,4.0 - AppName=wxWindows 2.3.3 + AppName=wxWindows 2.4.0 AppId=wxWindows CreateUninstallRegKey=1 UsePreviousAppDir=0 UsePreviousGroup=0 - AppVersion=2.3.3 - AppVerName=wxWindows 2.3.3 + AppVersion=2.4.0 + AppVerName=wxWindows 2.4.0 AppCopyright=Copyright © The wxWindows Team BackColor=$FF0000 BackColor2=$000000 @@ -19,7 +19,7 @@ WindowStartMaximized=1 WindowVisible=1 WindowResizable=1 - UninstallDisplayName=wxWindows 2.3.3 + UninstallDisplayName=wxWindows 2.4.0 UninstallLogMode=Append DirExistsWarning=auto UninstallFilesDir={app} @@ -28,19 +28,19 @@ CreateAppDir=1 DisableProgramGroupPage=0 AlwaysCreateUninstallIcon=1 - UninstallIconName=Uninstall wxWindows 2.3.3 + UninstallIconName=Uninstall wxWindows 2.4.0 Uninstallable=1 - DefaultDirName=c:\wxWindows_2.3.3 - DefaultGroupName=wxWindows 2.3.3 - LicenseFile=C:\wx2dev\wxWindows\docs\licence.txt - InfoBeforeFile=C:\wx2dev\wxWindows\docs\readme.txt - InfoAfterFile=C:\wx2dev\wxWindows\docs\msw\install.txt + DefaultDirName=c:\wxWindows_2.4.0 + DefaultGroupName=wxWindows 2.4.0 + LicenseFile=C:\wx24\wxWindows\docs\licence.txt + InfoBeforeFile=C:\wx24\wxWindows\docs\readme.txt + InfoAfterFile=C:\wx24\wxWindows\docs\msw\install.txt MessagesFile=compiler:default.isl DiskSpanning=1 DiskSize=1457664 DiskClusterSize=512 ReserveBytes=0 UseSetupLdr=1 - SourceDir=c:\wx2dev\wxWindows\deliver\wxWindows-2.3.3 - OutputDir=c:\wx2dev\wxWindows\deliver + SourceDir=c:\wx24\wxWindows\deliver\wxWindows-2.4.0 + OutputDir=c:\wx24\wxWindows\deliver diff --git a/distrib/msw/makefile.rsp b/distrib/msw/makefile.rsp index 14b0c62499..39adcbbb59 100644 --- a/distrib/msw/makefile.rsp +++ b/distrib/msw/makefile.rsp @@ -121,6 +121,7 @@ contrib/samples/gizmos/splittree/Makefile.in contrib/samples/gizmos/editlbox/Makefile.in contrib/samples/gizmos/dynsash/Makefile.in contrib/samples/gizmos/dynsash_switch/Makefile.in +contrib/samples/gizmos/led/Makefile.in contrib/samples/ogl/Makefile.in contrib/samples/ogl/ogledit/Makefile.in contrib/samples/ogl/studio/Makefile.in diff --git a/distrib/msw/makerpm b/distrib/msw/makerpm new file mode 100755 index 0000000000..6071d938de --- /dev/null +++ b/distrib/msw/makerpm @@ -0,0 +1,273 @@ +#!/bin/sh +# Makes the wxWindows RPMs + +doupdatecvs() +{ + cd $WXSRC + echo Updating from CVS... + cvswx update -d -P +} + +dospinwxgtk() +{ + echo Making wxGTK RPMs... + RPM_ROOT=$WXDEST/wxgtk/rpm-root + + if [ ! -d $WXDEST ]; then + mkdir $WXDEST + fi + + rm -f -r $WXDEST/wxgtk + mkdir $WXDEST/wxgtk + mkdir $WXDEST/wxgtk/release + mkdir $RPM_ROOT + + cd $WXSRC + cd locale + make allmo + cd $WXDEST/wxgtk/release + echo Configuring... + $WXSRC/configure --no-recursion + echo Making... + make -j1 dist bzip-dist-only + + echo Setting up RPM build dir $RPM_ROOT... + rm -f -r $RPM_ROOT + mkdir $RPM_ROOT + mkdir $RPM_ROOT/BUILD + mkdir $RPM_ROOT/RPMS + mkdir $RPM_ROOT/RPMS/i386 + mkdir $RPM_ROOT/RPMS/i686 + mkdir $RPM_ROOT/RPMS/noarch + mkdir $RPM_ROOT/SOURCES + mkdir $RPM_ROOT/SPECS + mkdir $RPM_ROOT/SRPMS + + echo %_topdir $RPM_ROOT > ~/.rpmmacros + + echo Copying wxGTK-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES... + cp wxGTK-$WXVER.tar.bz2 $RPM_ROOT/SOURCES + echo Copying wxGTK.spec to $RPM_ROOT/SPECS... + cp $WXSRC/wxGTK.spec $RPM_ROOT/SPECS + + echo Starting wxGTK RPM build... + cd $RPM_ROOT + rpmbuild -ba SPECS/wxGTK.spec 2>&1 | tee wxGTK.out + + echo Finished wxBase RPM build, in $RPM_ROOT. + echo "SRPMS:" + ls SRPMS + echo "RPMS/i386:" + ls RPMS/i386 + + cp $RPM_ROOT/SRPMS/*.rpm $WXDEST + cp $RPM_ROOT/RPMS/*.rpm $WXDEST + cp $WXDEST/wxgtk/release/*.tar.gz $WXDEST + cp $WXDEST/wxgtk/release/*.tar.bz2 $WXDEST + + echo Now try the RPMs with rpm -i. +} + +dospinwxbase() +{ + echo Making wxBase RPMs... + RPM_ROOT=$WXDEST/wxbase/rpm-root + + if [ ! -d $WXDEST ]; then + mkdir $WXDEST + fi + + rm -f -r $WXDEST/wxbase + mkdir $WXDEST/wxbase + mkdir $WXDEST/wxbase/release + mkdir $RPM_ROOT + + cd $WXSRC + cd locale + make allmo + cd $WXDEST/wxbase/release + echo Configuring... + $WXSRC/configure --disable-gui --no-recursion + echo Making... + make -j1 dist bzip-dist-only + + echo Setting up RPM build dir $RPM_ROOT... + rm -f -r $RPM_ROOT + mkdir $RPM_ROOT + mkdir $RPM_ROOT/BUILD + mkdir $RPM_ROOT/RPMS + mkdir $RPM_ROOT/RPMS/i386 + mkdir $RPM_ROOT/RPMS/i686 + mkdir $RPM_ROOT/RPMS/noarch + mkdir $RPM_ROOT/SOURCES + mkdir $RPM_ROOT/SPECS + mkdir $RPM_ROOT/SRPMS + + echo %_topdir $RPM_ROOT > ~/.rpmmacros + + echo Copying wxBase-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES... + cp wxBase-$WXVER.tar.bz2 $RPM_ROOT/SOURCES + echo Copying wxBase.spec to $RPM_ROOT/SPECS... + cp $WXSRC/wxBase.spec $RPM_ROOT/SPECS + + echo Starting wxBase RPM build... + cd $RPM_ROOT + rpmbuild -ba SPECS/wxBase.spec 2>&1 | tee wxBase.out + + echo Finished wxBase RPM build, in $RPM_ROOT. + echo "SRPMS:" + ls SRPMS + echo "RPMS/i386:" + ls RPMS/i386 + + cp $RPM_ROOT/SRPMS/*.rpm $WXDEST + cp $RPM_ROOT/RPMS/*.rpm $WXDEST + cp $WXDEST/wxbase/release/*.tar.gz $WXDEST + cp $WXDEST/wxbase/release/*.tar.bz2 $WXDEST + + echo Now try the RPMs with rpm -i. +} + +dospinwxx11() +{ + echo Making wxX11 RPMs... + RPM_ROOT=$WXDEST/wxx11/rpm-root + + if [ ! -d $WXDEST ]; then + mkdir $WXDEST + fi + + rm -f -r $WXDEST/wxx11 + mkdir $WXDEST/wxx11 + mkdir $WXDEST/wxx11/release + mkdir $RPM_ROOT + + cd $WXSRC + cd locale + make allmo + cd $WXDEST/wxx11/release + echo Configuring... + $WXSRC/configure --with-x11 --no-recursion + echo Making... + make -j1 dist bzip-dist-only + + echo Setting up RPM build dir $RPM_ROOT... + rm -f -r $RPM_ROOT + mkdir $RPM_ROOT + mkdir $RPM_ROOT/BUILD + mkdir $RPM_ROOT/RPMS + mkdir $RPM_ROOT/RPMS/i386 + mkdir $RPM_ROOT/RPMS/i686 + mkdir $RPM_ROOT/RPMS/noarch + mkdir $RPM_ROOT/SOURCES + mkdir $RPM_ROOT/SPECS + mkdir $RPM_ROOT/SRPMS + + echo %_topdir $RPM_ROOT > ~/.rpmmacros + + echo Copying wxX11-$WXVER.tar.bz2 to $RPM_ROOT/SOURCES... + cp wxX11-$WXVER.tar.bz2 $RPM_ROOT/SOURCES + echo Copying wxX11.spec to $RPM_ROOT/SPECS... + cp $WXSRC/wxX11.spec $RPM_ROOT/SPECS + + echo Starting wxX11 RPM build... + cd $RPM_ROOT + rpmbuild -ba SPECS/wxX11.spec 2>&1 | tee wxX11.out + + echo Finished wxX11 RPM build, in $RPM_ROOT. + echo "SRPMS:" + ls SRPMS + echo "RPMS/i386:" + ls RPMS/i386 + + cp $RPM_ROOT/SRPMS/*.rpm $WXDEST + cp $RPM_ROOT/RPMS/*.rpm $WXDEST + cp $WXDEST/wxx11/release/*.tar.gz $WXDEST + cp $WXDEST/wxx11/release/*.tar.bz2 $WXDEST + + echo Now try the RPMs with rpm -i. +} + +init="" +if [ "$1" = "" ] +then + echo Usage: makerpm wx-dir output-dir version + exit +fi + +if [ "$2" = "" ] +then + echo Usage: makerpm wx-dir output-dir version + exit +fi + +if [ "$3" = "" ] +then + echo Usage: makerpm wx-dir output-dir version + exit +fi + +PROGNAME=$0 +WXSRC=$1 +WXDEST=$2 +WXVER=$3 + +SPINWXX11=0 +SPINWXGTK=0 +SPINWXBASE=0 +SPINEVERYTHING=0 +UPDATECVS=0 + +usage() +{ + echo Usage: $PROGNAME "src-dir dest-dir version-number [ options ]" + echo Options: + echo " --help Display this help message" + echo " --wxgtk Spin wxGTK RPMs" + echo " --wxbase Spin wxBase RPMs" + echo " --wxx11 Spin wxX11 RPMs" + echo " --all Spin EVERYTHING" + echo " --updatecvs Update from CVS" + + exit 1 +} + +# Process command line options. +shift 3 +for i in "$@"; do + case "$i" in + --wxx11) SPINWXX11=1 ;; + --wxgtk) SPINWXGTK=1 ;; + --wxbase) SPINWXBASE=1 ;; + --all) SPINEVERYTHING=1 ;; + --updatecvs) UPDATECVS=1 ;; + *) + usage + exit + ;; + esac +done + +echo About to make wxWindows RPMs: +echo From $WXSRC +echo To $WXDEST +echo Version $WXVER +echo CTRL-C if this is not correct. +read dummy + +if [ "$UPDATECVS" = "1" ]; then + doupdatecvs +fi + +if [ "$SPINWXX11" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxx11 +fi + +if [ "$SPINWXGTK" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxgtk +fi + +if [ "$SPINWXBASE" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxbase +fi + diff --git a/distrib/msw/stc.rsp b/distrib/msw/stc.rsp index 442a116e07..3c655da7d4 100644 --- a/distrib/msw/stc.rsp +++ b/distrib/msw/stc.rsp @@ -43,7 +43,6 @@ contrib/samples/stc/*.rc contrib/samples/stc/*.def contrib/samples/stc/*.xbm contrib/samples/stc/make*.* -contrib/samples/stc/Makefile contrib/samples/stc/*.txt contrib/samples/stc/*.ico contrib/samples/stc/*.bmp diff --git a/distrib/msw/tardist b/distrib/msw/tardist index 4093e66f17..d02ba8edcf 100644 --- a/distrib/msw/tardist +++ b/distrib/msw/tardist @@ -29,6 +29,357 @@ expandlines() done } +doinit() +{ + cd $WXSRC + echo Removing backup files... + rm *~ */*~ */*/*~ */*/*/*~ */*/*/*/*~ + + rm -f $WXDEST/wx*-${WXVER}*.tar.gz + # Copy setup files + cp $WXSRC/include/wx/os2/SETUP0.H $WXSRC/include/wx/os2/setup.h + cp $WXSRC/include/wx/msw/setup0.h $WXSRC/include/wx/msw/setup.h + cp $WXSRC/include/wx/univ/setup0.h $WXSRC/include/wx/univ/setup.h + + # Copy readme and other files + + cp $WXSRC/docs/readme.txt $WXDEST/readme-${WXVER}.txt + cp $WXSRC/docs/changes.txt $WXDEST/changes-${WXVER}.txt + cp $WXSRC/docs/mgl/readme.txt $WXDEST/readme-mgl-${WXVER}.txt + cp $WXSRC/docs/mgl/install.txt $WXDEST/install-mgl-${WXVER}.txt + cp $WXSRC/docs/x11/readme.txt $WXDEST/readme-x11-${WXVER}.txt + cp $WXSRC/docs/x11/readme-nanox.txt $WXDEST/readme-nanox-${WXVER}.txt + cp $WXSRC/docs/x11/install.txt $WXDEST/install-x11-${WXVER}.txt + cp $WXSRC/docs/motif/readme.txt $WXDEST/readme-motif-${WXVER}.txt + cp $WXSRC/docs/motif/install.txt $WXDEST/install-motif-${WXVER}.txt + cp $WXSRC/docs/msw/readme.txt $WXDEST/readme-msw-${WXVER}.txt + cp $WXSRC/docs/msw/install.txt $WXDEST/install-msw-${WXVER}.txt + cp $WXSRC/docs/gtk/readme.txt $WXDEST/readme-gtk-${WXVER}.txt + cp $WXSRC/docs/gtk/install.txt $WXDEST/install-gtk-${WXVER}.txt + cp $WXSRC/docs/mac/readme.txt $WXDEST/readme-mac-${WXVER}.txt + cp $WXSRC/docs/mac/install.txt $WXDEST/install-mac-${WXVER}.txt + cp $WXSRC/docs/os2/install.txt $WXDEST/install-os2-${WXVER}.txt +} + +dospinwxgtk() +{ +echo Tarring wxGTK... + +cd $WXSRC +cat $WXSRC/distrib/msw/generic.rsp $WXSRC/distrib/msw/contrib.rsp $WXSRC/distrib/msw/stc.rsp $WXSRC/distrib/msw/xml.rsp $WXSRC/distrib/msw/utils.rsp $WXSRC/distrib/msw/ogl.rsp $WXSRC/distrib/msw/tex2rtf.rsp $WXSRC/distrib/msw/dialoged.rsp $WXSRC/distrib/msw/gtk.rsp $WXSRC/distrib/msw/makefile.rsp $WXSRC/distrib/msw/tiff.rsp $WXSRC/distrib/msw/jpeg.rsp > /tmp/wxgtk_in.txt +expandlines /tmp/wxgtk_in.txt /tmp/wxgtk.txt +$TAR cf $WXDEST/wxGTK-${WXVER}.tar -T /tmp/wxgtk.txt + +echo Re-tarring wxGTK in a subdirectory... +cd $WXDEST +mkdir wxGTK-${WXVER} +cd wxGTK-${WXVER} +$TAR xf ../wxGTK-${WXVER}.tar +cd .. +rm -f wxGTK-${WXVER}.tar +$TAR cf $WXDEST/wxGTK-${WXVER}.tar wxGTK-${WXVER}/* +rm -f -r wxGTK-${WXVER} +gzip $WXDEST/wxGTK-${WXVER}.tar +} + +dospinwxmotif() +{ +echo Tarring wxMotif... + +cd $WXSRC +cat $WXSRC/distrib/msw/generic.rsp $WXSRC/distrib/msw/motif.rsp $WXSRC/distrib/msw/contrib.rsp $WXSRC/distrib/msw/stc.rsp $WXSRC/distrib/msw/xml.rsp $WXSRC/distrib/msw/ogl.rsp $WXSRC/distrib/msw/makefile.rsp $WXSRC/distrib/msw/tiff.rsp $WXSRC/distrib/msw/jpeg.rsp > /tmp/wxmotif_in.txt +expandlines /tmp/wxmotif_in.txt /tmp/wxmotif.txt +$TAR cf $WXDEST/wxMotif-${WXVER}.tar -T /tmp/wxmotif.txt + +echo Re-tarring wxMotif in a subdirectory... +cd $WXDEST +mkdir wxMotif-${WXVER} +cd wxMotif-${WXVER} +$TAR xf ../wxMotif-${WXVER}.tar +cd .. +rm -f wxMotif-${WXVER}.tar +$TAR cf $WXDEST/wxMotif-${WXVER}.tar wxMotif-${WXVER}/* +rm -f -r wxMotif-${WXVER} +gzip $WXDEST/wxMotif-${WXVER}.tar +} + +dospinwxx11() +{ +echo Tarring wxX11... + +### wxX11: combined wxMotif and wxX11 distributions +cd $WXSRC +cat $WXSRC/distrib/msw/generic.rsp $WXSRC/distrib/msw/motif.rsp $WXSRC/distrib/msw/x11.rsp $WXSRC/distrib/msw/univ.rsp $WXSRC/distrib/msw/contrib.rsp $WXSRC/distrib/msw/stc.rsp $WXSRC/distrib/msw/utils.rsp $WXSRC/distrib/msw/xml.rsp $WXSRC/distrib/msw/dialoged.rsp $WXSRC/distrib/msw/ogl.rsp $WXSRC/distrib/msw/makefile.rsp $WXSRC/distrib/msw/tiff.rsp $WXSRC/distrib/msw/jpeg.rsp > /tmp/wxx11_in.txt +expandlines /tmp/wxx11_in.txt /tmp/wxx11.txt +$TAR cf $WXDEST/wxX11-${WXVER}.tar -T /tmp/wxx11.txt + +echo Re-tarring wxX11 in a subdirectory... +cd $WXDEST +mkdir wxX11-${WXVER} +cd wxX11-${WXVER} +$TAR xf ../wxX11-${WXVER}.tar +cd .. +rm -f wxX11-${WXVER}.tar +$TAR cf $WXDEST/wxX11-${WXVER}.tar wxX11-${WXVER}/* +rm -f -r wxX11-${WXVER} +gzip $WXDEST/wxX11-${WXVER}.tar +} + +### wxMSW +# cd $WXSRC +# cat $WXSRC/distrib/msw/msw.rsp $WXSRC/distrib/msw/vc.rsp $WXSRC/distrib/msw/bc.rsp $WXSRC/distrib/msw/contrib.rsp $WXSRC/distrib/msw/xml.rsp $WXSRC/distrib/msw/makefile.rsp $WXSRC/distrib/msw/tiff.rsp $WXSRC/distrib/msw/jpeg.rsp > /tmp/wxmsw_in.txt +# expandlines /tmp/wxmsw_in.txt /tmp/wxmsw.txt +# $TAR cf $WXDEST/wxMSW-${WXVER}.tar -T /tmp/wxmsw.txt +# gzip $WXDEST/wxMSW-${WXVER}.tar + +dospinwxmac() +{ +echo Tarring wxMac... +### wxMac +cp $WXSRC/include/wx/mac/setup0.h $WXSRC/include/wx/setup.h +cd $WXSRC +cat $WXSRC/distrib/msw/mac.rsp $WXSRC/distrib/msw/generic.rsp $WXSRC/distrib/msw/cw_mac.rsp $WXSRC/distrib/msw/tex2rtf.rsp $WXSRC/distrib/msw/utils.rsp $WXSRC/distrib/msw/dialoged.rsp $WXSRC/distrib/msw/ogl.rsp $WXSRC/distrib/msw/stc.rsp $WXSRC/distrib/msw/xml.rsp $WXSRC/distrib/msw/contrib.rsp $WXSRC/distrib/msw/makefile.rsp $WXSRC/distrib/msw/tiff.rsp $WXSRC/distrib/msw/jpeg.rsp > /tmp/wxmac_in.txt +expandlines /tmp/wxmac_in.txt /tmp/wxmac.txt +$TAR cf $WXDEST/wxMac-${WXVER}.tar -T /tmp/wxmac.txt + +rm -f $WXSRC/include/wx/setup.h + +echo Re-tarring wxMac in a subdirectory... +cd $WXDEST +mkdir wxMac-${WXVER} +cd wxMac-${WXVER} + +# If we have the full set of Mac CW project files, +# get them +if [ -f $WXDEST/extra/wxWindows-${WXVER}-CW-Mac.zip ]; then + unzip -o $WXDEST/extra/wxWindows-${WXVER}-CW-Mac.zip +else + echo "Warning - did not find $WXDEST/deliver/extra/wxWindows-${WXVER}-CW-Mac.zip" +fi + +$TAR xf ../wxMac-${WXVER}.tar +rm -f -r contrib/src/mmedia contrib/samples/mmedia +cd .. +rm -f wxMac-${WXVER}.tar +$TAR cf $WXDEST/wxMac-${WXVER}.tar wxMac-${WXVER}/* +rm -f -r wxMac-${WXVER} +gzip $WXDEST/wxMac-${WXVER}.tar +} + +### wxUniv: universal-specific files +#cd $WXSRC +#cat $WXSRC/distrib/msw/univ.rsp > /tmp/wxuniv_in.txt +#expandlines /tmp/wxuniv_in.txt /tmp/wxuniv.txt +#$TAR cf $WXDEST/wxWindows-${WXVER}-Univ.tar -T /tmp/wxuniv.txt +# +#echo Re-tarring wxUniversal in a subdirectory... +#cd $WXDEST +#mkdir wxWindows-${WXVER} +#cd wxWindows-${WXVER} +#$TAR xf ../wxWindows-${WXVER}-Univ.tar +#cd .. +#rm -f wxWindows-${WXVER}-Univ.tar +#$TAR cf $WXDEST/wxWindows-${WXVER}-Univ.tar wxWindows-${WXVER}/* +#rm -f -r wxWindows-${WXVER} +#gzip $WXDEST/wxWindows-${WXVER}-Univ.tar + +dospinwxall() +{ +echo Tarring wxAll... + +### wxAll: all distributions in one giant archive +cd $WXSRC +cat $WXSRC/distrib/msw/generic.rsp $WXSRC/distrib/msw/msw.rsp $WXSRC/distrib/msw/vc.rsp $WXSRC/distrib/msw/cw.rsp $WXSRC/distrib/msw/cw_mac.rsp $WXSRC/distrib/msw/gtk.rsp $WXSRC/distrib/msw/x11.rsp $WXSRC/distrib/msw/motif.rsp $WXSRC/distrib/msw/mac.rsp $WXSRC/distrib/msw/os2.rsp $WXSRC/distrib/msw/x11.rsp $WXSRC/distrib/msw/univ.rsp $WXSRC/distrib/msw/mgl.rsp $WXSRC/distrib/msw/contrib.rsp $WXSRC/distrib/msw/utilmake.rsp $WXSRC/distrib/msw/utils.rsp $WXSRC/distrib/msw/mmedia.rsp $WXSRC/distrib/msw/tex2rtf.rsp $WXSRC/distrib/msw/stc.rsp $WXSRC/distrib/msw/xml.rsp $WXSRC/distrib/msw/dialoged.rsp $WXSRC/distrib/msw/ogl.rsp $WXSRC/distrib/msw/makefile.rsp $WXSRC/distrib/msw/tiff.rsp $WXSRC/distrib/msw/jpeg.rsp $WXSRC/distrib/msw/docsrc.rsp | uniq > /tmp/wxall_in.txt +expandlines /tmp/wxall_in.txt /tmp/wxall.txt +$TAR cf $WXDEST/wxAll-${WXVER}.tar -T /tmp/wxall.txt + +echo Re-tarring wxAll in a subdirectory... +cd $WXDEST +mkdir wxWindows-${WXVER} + +cd wxWindows-${WXVER} + +# If we have the full set of VC++ project files, +# get them +if [ -f $WXDEST/extra/wxWindows-${WXVER}-VC.zip ]; then + unzip -o $WXDEST/extra/wxWindows-${WXVER}-VC.zip +else + echo "Warning - did not find $WXDEST/deliver/extra/wxWindows-${WXVER}-VC.zip" +fi + +# If we have the full set of Mac CW project files, +# get them +if [ -f $WXDEST/extra/wxWindows-${WXVER}-CW-Mac.zip ]; then + unzip -o $WXDEST/extra/wxWindows-${WXVER}-CW-Mac.zip +else + echo "Warning - did not find $WXDEST/deliver/extra/wxWindows-${WXVER}-CW-Mac.zip" +fi + +$TAR xf ../wxAll-${WXVER}.tar + +# Translate all .dsp and .dsw files to DOS format +unix2dos --unix2dos `cat $WXSRC/distrib/msw/vc.rsp` + +# Copy OS/2 specific configure files +cp $WXSRC/distrib/os2/os2-specific.zip docs/os2 + +# Copy the OS/2 files which probably haven't been copied yet +mkdir include/wx/os2 +mkdir src/os2 +cp $WXSRC/include/wx/os2/*.H include/wx/os2 +cp $WXSRC/src/os2/*.CPP $WXSRC/src/os2/*.I src/os2 + +# Make all OS/2 files lower case +$WXSRC/distrib/msw/namedown include/wx/os2/*.H +$WXSRC/distrib/msw/namedown src/os2/*.CPP src/os2/*.I + +cd .. +rm -f wxAll-${WXVER}.tar +$TAR cf $WXDEST/wxAll-${WXVER}.tar wxWindows-${WXVER}/* +rm -f -r wxWindows-${WXVER} +gzip $WXDEST/wxAll-${WXVER}.tar +} + +dospinwxdocs() +{ +echo Tarring wxDocs... + +### Doc sources +#cd $WXSRC +#cat $WXSRC/distrib/msw/docsrc.rsp > /tmp/docsrc_in.txt +#expandlines /tmp/docsrc_in.txt /tmp/docsrc.txt +#$TAR cf $WXDEST/wxWindows-${WXVER}-doc.tar -T /tmp/docsrc.txt +# +#echo Re-tarring docs in a subdirectory... +#cd $WXDEST +#mkdir wxWindows-${WXVER} +#cd wxWindows-${WXVER} +#$TAR xf ../wxWindows-${WXVER}-doc.tar +#cd .. +#rm -f wxWindows-${WXVER}-doc.tar +#$TAR cf $WXDEST/wxWindows-${WXVER}-doc.tar wxWindows-${WXVER}/* +#rm -f -r wxWindows-${WXVER} +#gzip $WXDEST/wxWindows-${WXVER}-doc.tar + +### HTML docs +cd $WXSRC +cat $WXSRC/distrib/msw/wx_html.rsp > /tmp/html_in.txt +expandlines /tmp/html_in.txt /tmp/html.txt +$TAR cf $WXDEST/wxWindows-${WXVER}-HTML.tar -T /tmp/html.txt + +echo Re-tarring HTML in a subdirectory... +cd $WXDEST +mkdir wxWindows-${WXVER} +cd wxWindows-${WXVER} +$TAR xf ../wxWindows-${WXVER}-HTML.tar +cd .. +rm -f wxWindows-${WXVER}-HTML.tar +$TAR cf $WXDEST/wxWindows-${WXVER}-HTML.tar wxWindows-${WXVER}/* +rm -f -r wxWindows-${WXVER} +gzip $WXDEST/wxWindows-${WXVER}-HTML.tar + +### HTB docs +cd $WXSRC +cat $WXSRC/distrib/msw/wx_htb.rsp > /tmp/htb_in.txt +expandlines /tmp/htb_in.txt /tmp/htb.txt +$TAR cf $WXDEST/wxWindows-${WXVER}-HTB.tar -T /tmp/htb.txt + +echo Re-tarring HTB in a subdirectory... +cd $WXDEST +mkdir wxWindows-${WXVER} +cd wxWindows-${WXVER} +$TAR xf ../wxWindows-${WXVER}-HTB.tar +cd .. +rm -f wxWindows-${WXVER}-HTB.tar +$TAR cf $WXDEST/wxWindows-${WXVER}-HTB.tar wxWindows-${WXVER}/* +rm -f -r wxWindows-${WXVER} +gzip $WXDEST/wxWindows-${WXVER}-HTB.tar + +### PDF docs +cd $WXSRC +cat $WXSRC/distrib/msw/wx_pdf.rsp > /tmp/pdf_in.txt +expandlines /tmp/pdf_in.txt /tmp/pdf.txt +$TAR cf $WXDEST/wxWindows-${WXVER}-PDF.tar -T /tmp/pdf.txt + +echo Re-tarring PDF in a subdirectory... +cd $WXDEST +mkdir wxWindows-${WXVER} +cd wxWindows-${WXVER} +$TAR xf ../wxWindows-${WXVER}-PDF.tar +cd .. +rm -f wxWindows-${WXVER}-PDF.tar +$TAR cf $WXDEST/wxWindows-${WXVER}-PDF.tar wxWindows-${WXVER}/* +rm -f -r wxWindows-${WXVER} +gzip $WXDEST/wxWindows-${WXVER}-PDF.tar +} + +### Tex2RTF +#cd $WXSRC +#cat $WXSRC/distrib/msw/tex2rtf.rsp > /tmp/tex2rtf_in.txt +#expandlines /tmp/tex2rtf_in.txt /tmp/tex2rtf.txt +#$TAR cf $WXDEST/wxWindows-${WXVER}-tex2rtf.tar -T /tmp/tex2rtf.txt +# +#echo Re-tarring Tex2RTF in a subdirectory... +#cd $WXDEST +#mkdir wxWindows-${WXVER} +#cd wxWindows-${WXVER} +#$TAR xf ../wxWindows-${WXVER}-tex2rtf.tar +#cd .. +#rm -f wxWindows-${WXVER}-tex2rtf.tar +#$TAR cf $WXDEST/wxWindows-${WXVER}-tex2rtf.tar wxWindows-${WXVER}/* +#rm -f -r wxWindows-${WXVER} +#gzip $WXDEST/wxWindows-${WXVER}-tex2rtf.tar + +### OGL +#cd $WXSRC +#cat $WXSRC/distrib/msw/ogl.rsp > /tmp/ogl_in.txt +#expandlines /tmp/ogl_in.txt /tmp/ogl.txt +#$TAR cf $WXDEST/wxWindows-${WXVER}-ogl.tar -T /tmp/ogl.txt +# +#echo Re-tarring OGL in a subdirectory... +#cd $WXDEST +#mkdir wxWindows-${WXVER} +#cd wxWindows-${WXVER} +#$TAR xf ../wxWindows-${WXVER}-ogl.tar +#cd .. +#rm -f wxWindows-${WXVER}-ogl.tar +#$TAR cf $WXDEST/wxWindows-${WXVER}-ogl.tar wxWindows-${WXVER}/* +#rm -f -r wxWindows-${WXVER} +#gzip $WXDEST/wxWindows-${WXVER}-ogl.tar + +### JPEG +#cd $WXSRC +#cat $WXSRC/distrib/msw/jpeg.rsp > /tmp/jpeg_in.txt +#expandlines /tmp/jpeg_in.txt /tmp/jpeg.txt +#$TAR cf $WXDEST/wxWindows-${WXVER}-jpeg.tar -T /tmp/jpeg.txt +# +#echo Re-tarring jpeg in a subdirectory... +#cd $WXDEST +#mkdir wxWindows-${WXVER} +#cd wxWindows-${WXVER} +#$TAR xf ../wxWindows-${WXVER}-jpeg.tar +#cd .. +#rm -f wxWindows-${WXVER}-jpeg.tar +#$TAR cf $WXDEST/wxWindows-${WXVER}-jpeg.tar wxWindows-${WXVER}/* +#rm -f -r wxWindows-${WXVER} +#gzip $WXDEST/wxWindows-${WXVER}-jpeg.tar + +### TIFF +#cd $WXSRC +#cat $WXSRC/distrib/msw/tiff.rsp > /tmp/tiff_in.txt +#expandlines /tmp/tiff_in.txt /tmp/tiff.txt +#$TAR cf $WXDEST/wxWindows-${WXVER}-tiff.tar -T /tmp/tiff.txt +# +#echo Re-tarring docs in a subdirectory... +#cd $WXDEST +#mkdir wxWindows-${WXVER} +#cd wxWindows-${WXVER} +#$TAR xf ../wxWindows-${WXVER}-tiff.tar +#cd .. +#rm -f wxWindows-${WXVER}-tiff.tar +#$TAR cf $WXDEST/wxWindows-${WXVER}-tiff.tar wxWindows-${WXVER}/* +#rm -f -r wxWindows-${WXVER} +#gzip $WXDEST/wxWindows-${WXVER}-tiff.tar init="" if [ "$1" = "" ] @@ -49,327 +400,84 @@ then exit fi +PROGNAME=$0 +WXSRC=$1 +WXDEST=$2 WXVER=$3 +SPINWXALL=0 +SPINWXX11=0 +SPINWXGTK=0 +SPINWXMOTIF=0 +SPINWXMAC=0 +SPINWXDOCS=0 +SPINEVERYTHING=0 + +usage() +{ + echo Usage: $PROGNAME "src-dir dest-dir version-number [ options ]" + echo Options: + echo " --help Display this help message" + echo " --wxall Spin wxAll" + echo " --wxgtk Spin wxGTK" + echo " --wxmotif Spin wxMotif" + echo " --wxmac Spin wxMac" + echo " --wxx11 Spin wxX11" + echo " --wxdocs Spin docs" + echo " --all Spin EVERYTHING" + + exit 1 +} + +# Process command line options. +shift 3 +for i in "$@"; do + case "$i" in + --wxall) SPINWXALL=1 ;; + --wxx11) SPINWXX11=1 ;; + --wxgtk) SPINWXGTK=1 ;; + --wxmotif) SPINWXMOTIF=1 ;; + --wxmac) SPINWXMAC=1 ;; + --wxdocs) SPINWXDOCS=1 ;; + --all) SPINEVERYTHING=1 ;; + *) + usage + exit + ;; + esac +done + echo About to archive wxWindows: -echo From $1 -echo To $2 +echo From $WXSRC +echo To $WXDEST +echo Version $WXVER echo CTRL-C if this is not correct. read dummy -cd $1 +doinit -echo Removing backup files... -rm *~ */*~ */*/*~ */*/*/*~ */*/*/*/*~ - -rm -f $2/wx*-${WXVER}*.tar.gz - -# Copy setup files -cp $1/include/wx/os2/SETUP0.H $1/include/wx/os2/setup.h -cp $1/include/wx/msw/setup0.h $1/include/wx/msw/setup.h - -echo Tarring... - -### Generic -#cat $1/distrib/msw/generic.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/makefile.rsp > /tmp/wxgen_in.txt -#expandlines /tmp/wxgen_in.txt /tmp/wxgen.txt -#$TAR cf $2/wxWindows-${WXVER}-gen.tar -T /tmp/wxgen.txt -#gzip $2/wxWindows-${WXVER}-gen.tar -#mv $2/wxWindows-${WXVER}-gen.tar.gz $2/wxWindows-${WXVER}-gen.tgz - -### wxGTK -cd $1 -cat $1/distrib/msw/generic.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/utils.rsp $1/distrib/msw/ogl.rsp $1/distrib/msw/tex2rtf.rsp $1/distrib/msw/dialoged.rsp $1/distrib/msw/gtk.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp > /tmp/wxgtk_in.txt -expandlines /tmp/wxgtk_in.txt /tmp/wxgtk.txt -$TAR cf $2/wxGTK-${WXVER}.tar -T /tmp/wxgtk.txt - -echo Re-tarring wxGTK in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxGTK-${WXVER}.tar -cd .. -rm -f wxGTK-${WXVER}.tar -$TAR cf $2/wxGTK-${WXVER}.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxGTK-${WXVER}.tar - -### wxMotif -cd $1 -cat $1/distrib/msw/generic.rsp $1/distrib/msw/motif.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/ogl.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp > /tmp/wxmotif_in.txt -expandlines /tmp/wxmotif_in.txt /tmp/wxmotif.txt -$TAR cf $2/wxMotif-${WXVER}.tar -T /tmp/wxmotif.txt - -echo Re-tarring wxMotif in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxMotif-${WXVER}.tar -cd .. -rm -f wxMotif-${WXVER}.tar -$TAR cf $2/wxMotif-${WXVER}.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxMotif-${WXVER}.tar - -### wxX11: combined wxMotif and wxX11 distributions -cd $1 -cat $1/distrib/msw/generic.rsp $1/distrib/msw/motif.rsp $1/distrib/msw/x11.rsp $1/distrib/msw/univ.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/utils.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/dialoged.rsp $1/distrib/msw/ogl.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp > /tmp/wxx11_in.txt -expandlines /tmp/wxx11_in.txt /tmp/wxx11.txt -$TAR cf $2/wxX11-${WXVER}.tar -T /tmp/wxx11.txt - -echo Re-tarring wxX11 in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxX11-${WXVER}.tar -cd .. -rm -f wxX11-${WXVER}.tar -$TAR cf $2/wxX11-${WXVER}.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxX11-${WXVER}.tar - -### wxMSW -# cd $1 -# cat $1/distrib/msw/msw.rsp $1/distrib/msw/vc.rsp $1/distrib/msw/bc.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp > /tmp/wxmsw_in.txt -# expandlines /tmp/wxmsw_in.txt /tmp/wxmsw.txt -# $TAR cf $2/wxMSW-${WXVER}.tar -T /tmp/wxmsw.txt -# gzip $2/wxMSW-${WXVER}.tar - -### wxMac -cp $1/include/wx/mac/setup0.h $1/include/wx/setup.h -cd $1 -cat $1/distrib/msw/mac.rsp $1/distrib/msw/generic.rsp $1/distrib/msw/cw_mac.rsp $1/distrib/msw/tex2rtf.rsp $1/distrib/msw/utils.rsp $1/distrib/msw/dialoged.rsp $1/distrib/msw/ogl.rsp $1/distrib/msw/stc.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp > /tmp/wxmac_in.txt -expandlines /tmp/wxmac_in.txt /tmp/wxmac.txt -$TAR cf $2/wxMac-${WXVER}.tar -T /tmp/wxmac.txt - -rm -f $1/include/wx/setup.h - -echo Re-tarring wxMac in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxMac-${WXVER}.tar -rm -f -r contrib/src/mmedia contrib/samples/mmedia -cd .. -rm -f wxMac-${WXVER}.tar -$TAR cf $2/wxMac-${WXVER}.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxMac-${WXVER}.tar - -### wxUniv: universal-specific files -cd $1 -cat $1/distrib/msw/univ.rsp > /tmp/wxuniv_in.txt -expandlines /tmp/wxuniv_in.txt /tmp/wxuniv.txt -$TAR cf $2/wxWindows-${WXVER}-Univ.tar -T /tmp/wxuniv.txt - -echo Re-tarring wxUniversal in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxWindows-${WXVER}-Univ.tar -cd .. -rm -f wxWindows-${WXVER}-Univ.tar -$TAR cf $2/wxWindows-${WXVER}-Univ.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxWindows-${WXVER}-Univ.tar - -### wxAll: all distributions in one giant archive -cd $1 -cat $1/distrib/msw/generic.rsp $1/distrib/msw/msw.rsp $1/distrib/msw/vc.rsp $1/distrib/msw/cw.rsp $1/distrib/msw/cw_mac.rsp $1/distrib/msw/gtk.rsp $1/distrib/msw/x11.rsp $1/distrib/msw/motif.rsp $1/distrib/msw/mac.rsp $1/distrib/msw/os2.rsp $1/distrib/msw/x11.rsp $1/distrib/msw/univ.rsp $1/distrib/msw/mgl.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/utilmake.rsp $1/distrib/msw/utils.rsp $1/distrib/msw/mmedia.rsp $1/distrib/msw/tex2rtf.rsp $1/distrib/msw/stc.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/dialoged.rsp $1/distrib/msw/ogl.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp $1/distrib/msw/docsrc.rsp | uniq > /tmp/wxall_in.txt -expandlines /tmp/wxall_in.txt /tmp/wxall.txt -$TAR cf $2/wxAll-${WXVER}.tar -T /tmp/wxall.txt - -echo Re-tarring wxAll in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} - -# If we have the full set of VC++ project files, -# get them -if [ -f $2/extra/wxWindows-${WXVER}-VC.zip ]; then - unzip -o $2/extra/wxWindows-${WXVER}-VC.zip -else - echo "Warning - did not find $2/deliver/extra/wxWindows-${WXVER}-VC.zip" +if [ "$SPINWXX11" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxx11 fi -cd wxWindows-${WXVER} -$TAR xf ../wxAll-${WXVER}.tar +if [ "$SPINWXGTK" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxgtk +fi -# Translate all .dsp and .dsw files to DOS format -unix2dos --unix2dos `cat $1/distrib/msw/vc.rsp` +if [ "$SPINWXMAC" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxmac +fi -# Copy OS/2 specific configure files -cp $1/distrib/os2/os2-specific.zip docs/os2 +if [ "$SPINWXMOTIF" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxmotif +fi -# Copy the OS/2 files which probably haven't been copied yet -mkdir include/wx/os2 -mkdir src/os2 -cp $1/include/wx/os2/*.H include/wx/os2 -cp $1/src/os2/*.CPP $1/src/os2/*.I src/os2 +if [ "$SPINWXDOCS" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxdocs +fi -# Make all OS/2 files lower case -$1/distrib/msw/namedown include/wx/os2/*.H -$1/distrib/msw/namedown src/os2/*.CPP src/os2/*.I - -cd .. -rm -f wxAll-${WXVER}.tar -$TAR cf $2/wxAll-${WXVER}.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxAll-${WXVER}.tar +if [ "$SPINWXALL" = "1" ] || [ "$SPINEVERYTHING" = "1" ]; then + dospinwxall +fi -### Doc sources -#cd $1 -#cat $1/distrib/msw/docsrc.rsp > /tmp/docsrc_in.txt -#expandlines /tmp/docsrc_in.txt /tmp/docsrc.txt -#$TAR cf $2/wxWindows-${WXVER}-doc.tar -T /tmp/docsrc.txt -# -#echo Re-tarring docs in a subdirectory... -#cd $2 -#mkdir wxWindows-${WXVER} -#cd wxWindows-${WXVER} -#$TAR xf ../wxWindows-${WXVER}-doc.tar -#cd .. -#rm -f wxWindows-${WXVER}-doc.tar -#$TAR cf $2/wxWindows-${WXVER}-doc.tar wxWindows-${WXVER}/* -#rm -f -r wxWindows-${WXVER} -#gzip $2/wxWindows-${WXVER}-doc.tar - -### HTML docs -cd $1 -cat $1/distrib/msw/wx_html.rsp > /tmp/html_in.txt -expandlines /tmp/html_in.txt /tmp/html.txt -$TAR cf $2/wxWindows-${WXVER}-HTML.tar -T /tmp/html.txt - -echo Re-tarring HTML in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxWindows-${WXVER}-HTML.tar -cd .. -rm -f wxWindows-${WXVER}-HTML.tar -$TAR cf $2/wxWindows-${WXVER}-HTML.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxWindows-${WXVER}-HTML.tar - -### HTB docs -cd $1 -cat $1/distrib/msw/wx_htb.rsp > /tmp/htb_in.txt -expandlines /tmp/htb_in.txt /tmp/htb.txt -$TAR cf $2/wxWindows-${WXVER}-HTB.tar -T /tmp/htb.txt - -echo Re-tarring HTB in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxWindows-${WXVER}-HTB.tar -cd .. -rm -f wxWindows-${WXVER}-HTB.tar -$TAR cf $2/wxWindows-${WXVER}-HTB.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxWindows-${WXVER}-HTB.tar - -### PDF docs -cd $1 -cat $1/distrib/msw/wx_pdf.rsp > /tmp/pdf_in.txt -expandlines /tmp/pdf_in.txt /tmp/pdf.txt -$TAR cf $2/wxWindows-${WXVER}-PDF.tar -T /tmp/pdf.txt - -echo Re-tarring PDF in a subdirectory... -cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} -$TAR xf ../wxWindows-${WXVER}-PDF.tar -cd .. -rm -f wxWindows-${WXVER}-PDF.tar -$TAR cf $2/wxWindows-${WXVER}-PDF.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} -gzip $2/wxWindows-${WXVER}-PDF.tar - -### Tex2RTF -#cd $1 -#cat $1/distrib/msw/tex2rtf.rsp > /tmp/tex2rtf_in.txt -#expandlines /tmp/tex2rtf_in.txt /tmp/tex2rtf.txt -#$TAR cf $2/wxWindows-${WXVER}-tex2rtf.tar -T /tmp/tex2rtf.txt -# -#echo Re-tarring Tex2RTF in a subdirectory... -#cd $2 -#mkdir wxWindows-${WXVER} -#cd wxWindows-${WXVER} -#$TAR xf ../wxWindows-${WXVER}-tex2rtf.tar -#cd .. -#rm -f wxWindows-${WXVER}-tex2rtf.tar -#$TAR cf $2/wxWindows-${WXVER}-tex2rtf.tar wxWindows-${WXVER}/* -#rm -f -r wxWindows-${WXVER} -#gzip $2/wxWindows-${WXVER}-tex2rtf.tar - -### OGL -#cd $1 -#cat $1/distrib/msw/ogl.rsp > /tmp/ogl_in.txt -#expandlines /tmp/ogl_in.txt /tmp/ogl.txt -#$TAR cf $2/wxWindows-${WXVER}-ogl.tar -T /tmp/ogl.txt -# -#echo Re-tarring OGL in a subdirectory... -#cd $2 -#mkdir wxWindows-${WXVER} -#cd wxWindows-${WXVER} -#$TAR xf ../wxWindows-${WXVER}-ogl.tar -#cd .. -#rm -f wxWindows-${WXVER}-ogl.tar -#$TAR cf $2/wxWindows-${WXVER}-ogl.tar wxWindows-${WXVER}/* -#rm -f -r wxWindows-${WXVER} -#gzip $2/wxWindows-${WXVER}-ogl.tar - -### JPEG -#cd $1 -#cat $1/distrib/msw/jpeg.rsp > /tmp/jpeg_in.txt -#expandlines /tmp/jpeg_in.txt /tmp/jpeg.txt -#$TAR cf $2/wxWindows-${WXVER}-jpeg.tar -T /tmp/jpeg.txt -# -#echo Re-tarring jpeg in a subdirectory... -#cd $2 -#mkdir wxWindows-${WXVER} -#cd wxWindows-${WXVER} -#$TAR xf ../wxWindows-${WXVER}-jpeg.tar -#cd .. -#rm -f wxWindows-${WXVER}-jpeg.tar -#$TAR cf $2/wxWindows-${WXVER}-jpeg.tar wxWindows-${WXVER}/* -#rm -f -r wxWindows-${WXVER} -#gzip $2/wxWindows-${WXVER}-jpeg.tar - -### TIFF -#cd $1 -#cat $1/distrib/msw/tiff.rsp > /tmp/tiff_in.txt -#expandlines /tmp/tiff_in.txt /tmp/tiff.txt -#$TAR cf $2/wxWindows-${WXVER}-tiff.tar -T /tmp/tiff.txt -# -#echo Re-tarring docs in a subdirectory... -#cd $2 -#mkdir wxWindows-${WXVER} -#cd wxWindows-${WXVER} -#$TAR xf ../wxWindows-${WXVER}-tiff.tar -#cd .. -#rm -f wxWindows-${WXVER}-tiff.tar -#$TAR cf $2/wxWindows-${WXVER}-tiff.tar wxWindows-${WXVER}/* -#rm -f -r wxWindows-${WXVER} -#gzip $2/wxWindows-${WXVER}-tiff.tar - -# Copy readme and other files -cd $1 -cp $1/docs/readme.txt $2/readme-${WXVER}.txt -cp $1/docs/changes.txt $2/changes-${WXVER}.txt -cp $1/docs/mgl/readme.txt $2/readme-mgl-${WXVER}.txt -cp $1/docs/mgl/install.txt $2/install-mgl-${WXVER}.txt -cp $1/docs/x11/readme.txt $2/readme-x11-${WXVER}.txt -cp $1/docs/x11/readme-nanox.txt $2/readme-nanox-${WXVER}.txt -cp $1/docs/x11/install.txt $2/install-x11-${WXVER}.txt -cp $1/docs/motif/readme.txt $2/readme-motif-${WXVER}.txt -cp $1/docs/motif/install.txt $2/install-motif-${WXVER}.txt -cp $1/docs/msw/readme.txt $2/readme-msw-${WXVER}.txt -cp $1/docs/msw/install.txt $2/install-msw-${WXVER}.txt -cp $1/docs/gtk/readme.txt $2/readme-gtk-${WXVER}.txt -cp $1/docs/gtk/install.txt $2/install-gtk-${WXVER}.txt -cp $1/docs/mac/readme.txt $2/readme-mac-${WXVER}.txt -cp $1/docs/mac/install.txt $2/install-mac-${WXVER}.txt -cp $1/docs/os2/install.txt $2/install-os2-${WXVER}.txt - -echo Done! diff --git a/distrib/msw/tarwxall b/distrib/msw/tarwxall index a6cecb08d8..b38bddd888 100755 --- a/distrib/msw/tarwxall +++ b/distrib/msw/tarwxall @@ -103,6 +103,7 @@ $1/distrib/msw/namedown include/wx/os2/*.H $1/distrib/msw/namedown src/os2/*.CPP src/os2/*.I cd .. + rm -f wxAll-${WXVER}.tar $TAR cf $2/wxAll-${WXVER}.tar wxWindows-${WXVER}/* rm -f -r wxWindows-${WXVER} diff --git a/distrib/msw/tarwxmac b/distrib/msw/tarwxmac index d4b27af39e..1e2b159d1c 100755 --- a/distrib/msw/tarwxmac +++ b/distrib/msw/tarwxmac @@ -63,7 +63,7 @@ echo Removing backup files... rm *~ */*~ */*/*~ */*/*/*~ */*/*/*/*~ rm -f $2/wxMac-${WXVER}*.tar.gz -rm -f -r $2/wxWindows-${WXVER} +rm -f -r $2/wxMac-${WXVER} cp $1/include/wx/mac/setup0.h $1/include/wx/setup.h @@ -78,8 +78,8 @@ rm -f $1/include/wx/setup.h echo Re-tarring in a subdirectory... cd $2 -mkdir wxWindows-${WXVER} -cd wxWindows-${WXVER} +mkdir wxMac-${WXVER} +cd wxMac-${WXVER} $TAR xf ../wxMac-${WXVER}.tar # Remove mmedia @@ -87,8 +87,8 @@ rm -f -r contrib/src/mmedia contrib/samples/mmedia cd .. rm -f wxMac-${WXVER}.tar -$TAR cf $2/wxMac-${WXVER}.tar wxWindows-${WXVER}/* -rm -f -r wxWindows-${WXVER} +$TAR cf $2/wxMac-${WXVER}.tar wxMac-${WXVER}/* +rm -f -r wxMac-${WXVER} gzip $2/wxMac-${WXVER}.tar # Copy readme and other files diff --git a/distrib/msw/tarwxx11 b/distrib/msw/tarwxx11 new file mode 100755 index 0000000000..065f67c0d4 --- /dev/null +++ b/distrib/msw/tarwxx11 @@ -0,0 +1,85 @@ +#!/bin/sh +# tarwxall: make up a tar.gz distribution of wxX11 +# Supply a source (e.g. ~/wx2) and destination (e.g. ~/wx2/deliver) + +# We can't use e.g. this: +# ls `cat $SRC/distrib/msw/makefile.rsp` zip -@ -u $DEST/wxWindows-$VERSION-gen.zip +# because there's not enough space on the command line, plus we need to ignore the +# blank lines. + +TAR=tar +ARCH=`arch` +if [ "$ARCH" = "ppc" ]; then + TAR=gnutar +fi + +expandlines() +{ + toexpand=$1 + outputfile=$2 + + rm -f $outputfile + touch $outputfile + for line in `cat $toexpand` ; do + if [ "$line" != "" ]; then + ls $line >> $outputfile + fi + uniq < $outputfile > /tmp/uniqtemp.txt + mv /tmp/uniqtemp.txt $outputfile + done +} + + +init="" +if [ "$1" = "" ] +then + echo Usage: tarwxx11 wx-dir output-dir version + exit +fi + +if [ "$2" = "" ] +then + echo Usage: tarwxx11 wx-dir output-dir version + exit +fi + +if [ "$3" = "" ] +then + echo Usage: tarwxx11 wx-dir output-dir version + exit +fi + +WXVER=$3 + +echo About to archive wxAll: +echo From $1 +echo To $2 +echo CTRL-C if this is not correct. +read dummy + +cd $1 + +echo Removing backup files... +rm *~ */*~ */*/*~ */*/*/*~ */*/*/*/*~ + +rm -f $2/wxX11-${WXVER}*.tar.gz +rm -f $2/wxX11-${WXVER} + +### wxX11: combined wxMotif and wxX11 distributions +cd $1 +cat $1/distrib/msw/generic.rsp $1/distrib/msw/motif.rsp $1/distrib/msw/x11.rsp $1/distrib/msw/univ.rsp $1/distrib/msw/contrib.rsp $1/distrib/msw/utils.rsp $1/distrib/msw/xml.rsp $1/distrib/msw/dialoged.rsp $1/distrib/msw/ogl.rsp $1/distrib/msw/makefile.rsp $1/distrib/msw/tiff.rsp $1/distrib/msw/jpeg.rsp > /tmp/wxx11_in.txt +expandlines /tmp/wxx11_in.txt /tmp/wxx11.txt +$TAR cf $2/wxX11-${WXVER}.tar -T /tmp/wxx11.txt + +echo Re-tarring wxX11 in a subdirectory... +cd $2 +mkdir wxX11-${WXVER} +cd wxX11-${WXVER} +$TAR xf ../wxX11-${WXVER}.tar +cd .. +rm -f wxX11-${WXVER}.tar +$TAR cf $2/wxX11-${WXVER}.tar wxX11-${WXVER}/* +rm -f -r wxX11-${WXVER} +gzip $2/wxX11-${WXVER}.tar + + diff --git a/distrib/msw/tmake/b32.t b/distrib/msw/tmake/b32.t index 5f0f0f5605..4201fc3f53 100644 --- a/distrib/msw/tmake/b32.t +++ b/distrib/msw/tmake/b32.t @@ -13,12 +13,20 @@ IncludeTemplate("filelist.t"); #! now transform these hashes into $project tags - foreach $file (sort keys %wxGeneric) { - my $tag = ""; - next if $wxGeneric{$file} =~ /\b(PS|G|16|U)\b/; + foreach $file (sort keys %wxUNIV) { + next if $wxUNIV{$file} =~ /\T\b/; $file =~ s/cp?p?$/obj/; - $project{"WXGENERICOBJS"} .= "\$(MSWDIR)\\" . $file . " " + $obj = "\$(UNIVDIR)\\" . $file . " "; + $project{"WXUNIVOBJS"} .= "\$(MSWDIR)\\" . $file . " " + } + + foreach $file (sort keys %wxUNIV) { + next unless $wxUNIV{$file} =~ /\T\b/; + + $file =~ s/cp?p?$/obj/; + $obj = "\$(UNIVTHEMEDIR)\\" . $file . " "; + $project{"WXUNIVTHEMEOBJS"} .= "\$(MSWDIR)\\" . $file . " " } foreach $file (sort keys %wxHTML) { @@ -38,6 +46,7 @@ $project{"WXCOBJS"} .= $obj if $isCFile; } +#! MSW dir for native port foreach $file (sort keys %wxMSW) { next if $wxMSW{$file} =~ /\b16\b/; @@ -61,6 +70,57 @@ } $project{"WXCOBJS"} .= $obj if $isCFile; } + +#! Now do MSW dir for UNIV + foreach $file (sort keys %wxMSW) { + next unless $wxMSW{$file} =~ /\b(L|B)\b/; + +#! if ( $file =~ /^automtn/ ) { +#! #! comment in old makefile.b32 seems to imply that this file can not +#! #! be compiled with Borland (leads to crash in oleauto sample) +#! No longer true, at least for BC++ 5.2 +#! next; +#! } + + $isCFile = $file =~ /\.c$/; + + my $isOleObj = $wxMSW{$file} =~ /\bO\b/; + $file =~ s/cp?p?$/obj/; + my $obj = "\$(MSWDIR)\\" . $file . " "; + + $project{"WXMSWUNIVOBJS"} .= $obj; + if ( $isOleObj ) { + #! remember that this file is in ole subdir + $project{"WXOLEUNIVOBJS"} .= $obj; + } + $project{"WXCUNIVOBJS"} .= $obj if $isCFile; + } + +#! Generic Dir for Native Port + foreach $file (sort keys %wxGeneric) { + my $tag = ""; + next if $wxGeneric{$file} =~ /\b(PS|G|16|U)\b/; + + $file =~ s/cp?p?$/obj/; + $project{"WXGENERICOBJS"} .= "\$(MSWDIR)\\" . $file . " " + } + +#! Generic Dir for UNIV Port + foreach $file (sort keys %wxGeneric) { + my $filereal = $file; + if ( $file =~ /^([^.]+)g.cpp$/ ) { + $filereal = "$1.cpp"; + } + $file =~ s/cp?p?$/obj/; + $filereal =~ s/cp?p?$/obj/; + + next if $project{"WXMSWUNIVOBJS"} =~ /\b$filereal\b/ || + $project{"WXUNIVOBJS"} =~ /\b$filereal\b/; + + + $project{"WXGENERICUNIVOBJS"} .= "\$(MSWDIR)\\" . $file . " " + } + #$} # This file was automatically generated by tmake @@ -87,6 +147,7 @@ WXDIR = $(WXWIN) THISDIR = $(WXDIR)\src\msw + # Set all these to 1 if you want to build a dynamic library !if "$(DLL)" == "1" WXMAKINGDLL=1 @@ -128,31 +189,35 @@ GENDIR=..\generic COMMDIR=..\common HTMLDIR=..\html OLEDIR=.\ole +UNIVDIR=..\univ +UNIVTHEMEDIR=..\univ\themes MSWDIR=. DOCDIR = $(WXDIR)\docs GENERICOBJS= #$ ExpandList("WXGENERICOBJS"); -# Not needed: -# $(MSWDIR)\colrdlgg.obj \ -# $(MSWDIR)\fontdlgg.obj \ -# $(MSWDIR)\msgdlgg.obj \ -# $(MSWDIR)\printps.obj \ -# $(MSWDIR)\prntdlgg.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\treectrl.obj +MSWOBJS = #$ ExpandList("WXMSWOBJS"); + +GENERICUNIVOBJS= #$ ExpandList("WXGENERICUNIVOBJS"); + +MSWUNIVOBJS = #$ ExpandList("WXMSWUNIVOBJS"); + +UNIVOBJS = #$ ExpandList("WXUNIVOBJS"); + +UNIVTHEMEOBJS = #$ ExpandList("WXUNIVTHEMEOBJS"); + +HTMLOBJS = #$ ExpandList("WXHTMLOBJS"); COMMONOBJS = \ $(MSWDIR)\y_tab.obj \ #$ ExpandList("WXCOMMONOBJS"); -MSWOBJS = #$ ExpandList("WXMSWOBJS"); - -HTMLOBJS = #$ ExpandList("WXHTMLOBJS"); - +!if "$(WXUSINGUNIV)" == "1" +OBJECTS = $(COMMONOBJS) $(GENERICUNIVOBJS) $(MSWUNIVOBJS) $(HTMLOBJS) $(UNIVOBJS) $(UNIVTHEMEOBJS) +!else OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS) +!endif default: wx @@ -168,7 +233,7 @@ makesetuph: # Copy include\wx\msw\setup.h to the architecture-specific location makearchsetuph: - copy $(WXDIR)\include\wx\msw\setup.h $(ARCHSETUPH) + copy $(SETUPSRCDIR)\setup.h $(ARCHSETUPH) cd $(WXDIR)\src\msw $(ARCHINCDIR)\wx: @@ -219,6 +284,27 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c # $(OBJECTS): $(WXDIR)\include\wx\setup.h +!if "$(WXUSINGUNIV)" == "1" +######################################################## +# MSW objects (compile Native or UNIV) - UNIV + +#${ + $_ = $project{"WXMSWUNIVOBJS"}; + my @objs = split; + foreach (@objs) { + $text .= $_ . ": "; + if ( $project{"WXOLEOBJS"} =~ /\Q$_/ ) { s/MSWDIR/OLEDIR/; } + $suffix = $project{"WXCUNIVOBJS"} =~ /\Q$_/ ? "c" : '$(SRCSUFF)'; + s/obj$/$suffix/; + $text .= $_ . "\n\n"; + } +#$} + + +!else +######################################################## +# MSW objects (compile Native or UNIV) - Native + #${ $_ = $project{"WXMSWOBJS"}; my @objs = split; @@ -230,6 +316,38 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c $text .= $_ . "\n\n"; } #$} +!endif + +!if "$(WXUSINGUNIV)" == "1" +######################################################## +# UNIV objects +#${ + $_ = $project{"WXUNIVOBJS"}; + my @objs = split; + foreach (@objs) { + $text .= $_ . ": "; + s/MSWDIR/UNIVDIR/; + s/obj$/\$(SRCSUFF)/; + $text .= $_ . "\n\n"; + } +#$} + + +######################################################## +# UNIV THEME objects + +#${ + $_ = $project{"WXUNIVTHEMEOBJS"}; + my @objs = split; + foreach (@objs) { + $text .= $_ . ": "; + s/MSWDIR/UNIVTHEMEDIR/; + s/obj$/\$(SRCSUFF)/; + $text .= $_ . "\n\n"; + } +#$} + +!endif ######################################################## # Common objects (always compiled) @@ -246,9 +364,29 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c } #$} +!if "$(WXUSINGUNIV)" == "1" ######################################################## # Generic objects (not always compiled, depending on # whether platforms have native implementations) +# Native + + +#${ + $_ = $project{"WXGENERICUNIVOBJS"}; + my @objs = split; + foreach (@objs) { + $text .= $_ . ": "; + s/MSWDIR/GENDIR/; + s/obj$/\$(SRCSUFF)/; + $text .= $_ . "\n\n"; + } +#$} + +!else +######################################################## +# Generic objects (not always compiled, depending on +# whether platforms have native implementations) +# Native #${ $_ = $project{"WXGENERICOBJS"}; @@ -260,6 +398,7 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c $text .= $_ . "\n\n"; } #$} +!endif ######################################################## # HTML objects (always compiled) @@ -293,7 +432,7 @@ all_execs: png: $(CFG) cd $(WXDIR)\src\png - ${MAKE} -f makefile.b32 + ${MAKE} -f makefile.b32 FINAL=$(FINAL) cd $(WXDIR)\src\msw clean_png: @@ -303,7 +442,7 @@ clean_png: zlib: $(CFG) cd $(WXDIR)\src\zlib - ${MAKE} -f makefile.b32 lib + ${MAKE} -f makefile.b32 FINAL=$(FINAL) lib cd $(WXDIR)\src\msw clean_zlib: @@ -313,7 +452,7 @@ clean_zlib: jpeg: $(CFG) cd $(WXDIR)\src\jpeg - ${MAKE} -f makefile.b32 + ${MAKE} -f makefile.b32 FINAL=$(FINAL) cd $(WXDIR)\src\msw clean_jpeg: @@ -323,7 +462,7 @@ clean_jpeg: regex: $(CFG) cd $(WXDIR)\src\regex - ${MAKE} -f makefile.b32 lib + ${MAKE} -f makefile.b32 FINAL=$(FINAL) lib cd $(WXDIR)\src\msw clean_regex: @@ -333,7 +472,7 @@ clean_regex: tiff: $(CFG) cd $(WXDIR)\src\tiff - ${MAKE} -f makefile.b32 lib + ${MAKE} -f makefile.b32 FINAL=$(FINAL) lib cd $(WXDIR)\src\msw clean_tiff: @@ -360,7 +499,7 @@ $(CFG): makefile.b32 -L$(BCCDIR)\lib;$(BCCDIR)\lib\psdk -D__WXWIN__ --D__WXMSW__ +-D$(PORT) -D__WINDOWS__ -DWIN32 $(OPT) diff --git a/distrib/msw/tmake/b32base.t b/distrib/msw/tmake/b32base.t index c80f5de01d..9366f8c9e9 100644 --- a/distrib/msw/tmake/b32base.t +++ b/distrib/msw/tmake/b32base.t @@ -85,8 +85,8 @@ wxUSE_GUI=0 !include $(WXDIR)\src\makeb32.env PERIPH_LIBS= -PERIPH_TARGET=zlib png jpeg tiff regex $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_zlib clean_png clean_jpeg clean_tiff clean_regex $(PERIPH_CLEAN_TARGET) +PERIPH_TARGET=zlib regex $(PERIPH_TARGET) +PERIPH_CLEAN_TARGET=clean_zlib clean_regex $(PERIPH_CLEAN_TARGET) !if "$(DLL)" == "0" DUMMY=dummy @@ -106,7 +106,6 @@ MSWDIR=. DOCDIR = $(WXDIR)\docs COMMONOBJS = \ - $(MSWDIR)\y_tab.obj \ #$ ExpandList("WXCOMMONOBJS"); MSWOBJS = #$ ExpandList("WXMSWOBJS"); @@ -164,19 +163,6 @@ dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\includ version.res: brc32 -r -i$(WXDIR)\include\ $(MSWDIR)\version.rc -$(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -# cl @<< -# $(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -# << - -$(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 - - #${ $_ = $project{"WXMSWOBJS"}; my @objs = split; @@ -305,8 +291,6 @@ clean: $(PERIPH_CLEAN_TARGET) -erase *.pch -erase *.csm -erase "wx32.#??" - -erase ..\common\y_tab.c - -erase ..\common\lex_yy.c cleanall: clean diff --git a/distrib/msw/tmake/b32univ.t b/distrib/msw/tmake/b32univ.t deleted file mode 100644 index 65220c2419..0000000000 --- a/distrib/msw/tmake/b32univ.t +++ /dev/null @@ -1,722 +0,0 @@ -#!############################################################################# -#! File: b32.t -#! Purpose: tmake template file from which makefile.b32 is generated by running -#! tmake -t b32 wxwin.pro -#! 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 %wxUNIV) { - next if $wxUNIV{$file} =~ /\T\b/; - - $file =~ s/cp?p?$/obj/; - $obj = "\$(UNIVDIR)\\" . $file . " "; - $project{"WXUNIVOBJS"} .= "\$(MSWDIR)\\" . $file . " " - } - - foreach $file (sort keys %wxUNIV) { - next unless $wxUNIV{$file} =~ /\T\b/; - - $file =~ s/cp?p?$/obj/; - $obj = "\$(UNIVTHEMEDIR)\\" . $file . " "; - $project{"WXUNIVTHEMEOBJS"} .= "\$(MSWDIR)\\" . $file . " " - } - - foreach $file (sort keys %wxHTML) { - next if $wxHTML{$file} =~ /\b16\b/; - - $file =~ s/cp?p?$/obj/; - $project{"WXHTMLOBJS"} .= "\$(MSWDIR)\\" . $file . " " - } - - foreach $file (sort keys %wxCommon) { - next if $wxCommon{$file} =~ /\b(16|U)\b/; - - $isCFile = $file =~ /\.c$/; - $file =~ s/cp?p?$/obj/; - $obj = "\$(MSWDIR)\\" . $file . " "; - $project{"WXCOMMONOBJS"} .= $obj; - $project{"WXCOBJS"} .= $obj if $isCFile; - } - - foreach $file (sort keys %wxMSW) { - next unless $wxMSW{$file} =~ /\b(L|B)\b/; - -#! if ( $file =~ /^automtn/ ) { -#! #! comment in old makefile.b32 seems to imply that this file can not -#! #! be compiled with Borland (leads to crash in oleauto sample) -#! No longer true, at least for BC++ 5.2 -#! next; -#! } - - $isCFile = $file =~ /\.c$/; - - my $isOleObj = $wxMSW{$file} =~ /\bO\b/; - $file =~ s/cp?p?$/obj/; - my $obj = "\$(MSWDIR)\\" . $file . " "; - - $project{"WXMSWOBJS"} .= $obj; - if ( $isOleObj ) { - #! remember that this file is in ole subdir - $project{"WXOLEOBJS"} .= $obj; - } - $project{"WXCOBJS"} .= $obj if $isCFile; - } - - foreach $file (sort keys %wxGeneric) { - my $filereal = $file; - if ( $file =~ /^([^.]+)g.cpp$/ ) { - $filereal = "$1.cpp"; - } - $file =~ s/cp?p?$/obj/; - $filereal =~ s/cp?p?$/obj/; - - next if $project{"WXMSWOBJS"} =~ /\b$filereal\b/ || - $project{"WXUNIVOBJS"} =~ /\b$filereal\b/; - - - $project{"WXGENERICOBJS"} .= "\$(MSWDIR)\\" . $file . " " - } - -#$} - -# This file was automatically generated by tmake -# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE B32.T! - -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for MS Windows, -# and Borland C++ (32-bit). - -# BCCDIR now defined in ../makeb32.env - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) -THISDIR = $(WXDIR)\src\msw - -# Set all these to 1 if you want to build a dynamic library -!if "$(DLL)" == "1" -WXMAKINGDLL=1 -WXBUILDDLL=1 -!endif - -!include $(WXDIR)\src\makeb32.env - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib -USE_CTL3D=0 - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -!if "$(USE_CTL3D)" == "1" -#Use WIN32S/WIN95 32 bit version ctl3d32.dll under win95 (Andre Beltman) -PERIPH_LIBS=$(WXDIR)\lib\ctl3d32.lib $(PERIPH_LIBS) -PERIPH_TARGET=ctl3d $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_ctl3d $(PERIPH_CLEAN_TARGET) -!endif - -#PERIPH_LIBS=$(WXDIR)\lib\zlib.lib $(WXDIR)\lib\winpng.lib $(WXDIR)\lib\jpeg.lib $(WXDIR)\lib\tiff.lib $(PERIPH_LIBS) -PERIPH_LIBS= -PERIPH_TARGET=zlib png jpeg tiff regex $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_zlib clean_png clean_jpeg clean_tiff clean_regex $(PERIPH_CLEAN_TARGET) - -!if "$(DLL)" == "0" -DUMMY=dummy -!else -DUMMY=dummydll -LIBS= cw32mti import32 ole2w32 odbc32 zlib winpng jpeg tiff regex -!endif - -LIBTARGET=$(WXLIB) - -GENDIR=..\generic -COMMDIR=..\common -HTMLDIR=..\html -OLEDIR=.\ole -UNIVDIR=..\univ -UNIVTHEMEDIR=..\univ\themes -MSWDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= #$ ExpandList("WXGENERICOBJS"); - -# Not needed: -# $(MSWDIR)\colrdlgg.obj \ -# $(MSWDIR)\fontdlgg.obj \ -# $(MSWDIR)\msgdlgg.obj \ -# $(MSWDIR)\printps.obj \ -# $(MSWDIR)\prntdlgg.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\treectrl.obj - -COMMONOBJS = \ - $(MSWDIR)\y_tab.obj \ - #$ ExpandList("WXCOMMONOBJS"); - -MSWOBJS = #$ ExpandList("WXMSWOBJS"); - -HTMLOBJS = #$ ExpandList("WXHTMLOBJS"); - -UNIVOBJS = #$ ExpandList("WXUNIVOBJS"); - -UNIVTHEMEOBJS = #$ ExpandList("WXUNIVTHEMEOBJS"); - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS) $(UNIVOBJS) $(UNIVTHEMEOBJS) - -default: wx - -wx: $(ARCHINCDIR)\wx makesetuph makearchsetuph $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -all: wx - -# Copy the in-CVS setup0.h to setup.h if necessary -makesetuph: - cd $(WXDIR)\include\wx\msw - if not exist setup.h copy setup0.h setup.h - cd $(WXDIR)\src\msw - -# Copy include\wx\univ\setup.h to the architecture-specific location -makearchsetuph: - copy $(WXDIR)\include\wx\univ\setup.h $(ARCHSETUPH) - cd $(WXDIR)\src\msw - -$(ARCHINCDIR)\wx: - -mkdir $(ARCHINCDIR) - -mkdir $(ARCHINCDIR)\wx - -!if "$(DLL)" == "0" - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - -erase $(LIBTARGET) - tlib "$(LIBTARGET)" /P1024 @&&! -+$(OBJECTS:.obj =.obj +) +$(PERIPH_LIBS:.lib =.lib +) -! - -!else - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - -erase $(LIBTARGET) - -erase $(WXLIBDIR)\wx.dll - $(LINK) $(LINK_FLAGS) /L$(WXLIBDIR);$(BCCDIR)\lib;$(BCCDIR)\lib\psdk /v @&&! -c0d32.obj $(OBJECTS) -$(WXLIBDIR)\wx -nul -$(PERIPH_LIBS) $(LIBS) -wxb32 -! - -erase $(WXLIBDIR)\version.res - brc32 -r -i$(WXDIR)\include\ $(MSWDIR)\version.rc - implib -c $(LIBTARGET) $(WXLIBDIR)\wx.dll - -!endif - -dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h -dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h version.res - -$(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -# cl @<< -# $(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -# << - -$(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 - -# $(OBJECTS): $(WXDIR)\include\wx\setup.h - -#${ - $_ = $project{"WXMSWOBJS"}; - my @objs = split; - foreach (@objs) { - $text .= $_ . ": "; - if ( $project{"WXOLEOBJS"} =~ /\Q$_/ ) { s/MSWDIR/OLEDIR/; } - $suffix = $project{"WXCOBJS"} =~ /\Q$_/ ? "c" : '$(SRCSUFF)'; - s/obj$/$suffix/; - $text .= $_ . "\n\n"; - } -#$} - -######################################################## -# Common objects (always compiled) - -#${ - $_ = $project{"WXCOMMONOBJS"}; - my @objs = split; - foreach (@objs) { - $text .= $_ . ": "; - $suffix = $project{"WXCOBJS"} =~ /\Q$_/ ? "c" : '$(SRCSUFF)'; - s/MSWDIR/COMMDIR/; - s/obj$/$suffix/; - $text .= $_ . "\n\n"; - } -#$} - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -#${ - $_ = $project{"WXGENERICOBJS"}; - my @objs = split; - foreach (@objs) { - $text .= $_ . ": "; - s/MSWDIR/GENDIR/; - s/obj$/\$(SRCSUFF)/; - $text .= $_ . "\n\n"; - } -#$} - -######################################################## -# HTML objects (always compiled) - -#${ - $_ = $project{"WXHTMLOBJS"}; - my @objs = split; - foreach (@objs) { - $text .= $_ . ": "; - s/MSWDIR/HTMLDIR/; - s/obj$/\$(SRCSUFF)/; - $text .= $_ . "\n\n"; - } -#$} - - -######################################################## -# UNIV objects (always compiled) - -#${ - $_ = $project{"WXUNIVOBJS"}; - my @objs = split; - foreach (@objs) { - $text .= $_ . ": "; - s/MSWDIR/UNIVDIR/; - s/obj$/\$(SRCSUFF)/; - $text .= $_ . "\n\n"; - } -#$} - - -######################################################## -# UNIV THEME objects (always compiled) - -#${ - $_ = $project{"WXUNIVTHEMEOBJS"}; - my @objs = split; - foreach (@objs) { - $text .= $_ . ": "; - s/MSWDIR/UNIVTHEMEDIR/; - s/obj$/\$(SRCSUFF)/; - $text .= $_ . "\n\n"; - } -#$} - - -all_utils: - cd $(WXDIR)\utils - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_samples: - cd $(WXDIR)\samples - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_execs: - cd $(WXDIR)\utils - make -f makefile.b32 all_execs - cd $(WXDIR)\src\msw - -png: $(CFG) - cd $(WXDIR)\src\png - make -f makefile.b32 - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -zlib: $(CFG) - cd $(WXDIR)\src\zlib - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -jpeg: $(CFG) - cd $(WXDIR)\src\jpeg - make -f makefile.b32 - cd $(WXDIR)\src\msw - -clean_jpeg: - cd $(WXDIR)\src\jpeg - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -regex: $(CFG) - cd $(WXDIR)\src\regex - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_regex: - cd $(WXDIR)\src\regex - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -tiff: $(CFG) - cd $(WXDIR)\src\tiff - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_tiff: - cd $(WXDIR)\src\tiff - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -$(CFG): makeuniv.b32 - copy &&! --Hc --H=$(WXDIR)\src\msw\wx32.csm --3 --d --a1 # byte alignment --R- --X --w-par --w-aus --w-hid # virtual function A hides virtual function B --tWM - --I$(ARCHINCDIR);$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/tiff --I$(WXDIR)\include\wx\msw\gnuwin32 - --L$(BCCDIR)\lib;$(BCCDIR)\lib\psdk --D__WXWIN__ --D__WINDOWS__ --D__WXUNIVERSAL__ --D_WIN32 --DWIN32 -$(OPT) -$(DEBUG_FLAGS) -$(WIN95FLAG) -! $(CFG) - -clean: $(PERIPH_CLEAN_TARGET) - -erase $(LIBTARGET) - -erase $(WXLIBDIR)\wx.dll - -erase $(WXLIBDIR)\wx.tds - -erase $(WXLIBDIR)\wx.il? - -erase *.obj - -erase *.pch - -erase *.csm - -erase *.cfg - -erase "wx32.#??" - -erase ..\common\y_tab.c - -erase ..\common\lex_yy.c - -cleanall: clean - - -# Making documents -docs: allhlp allhtml allpdfrtf -alldocs: docs -hlp: wxhlp portinghlp -wxhlp: $(DOCDIR)/winhelp/wx.hlp -prophlp: $(DOCDIR)/winhelp/prop.hlp -refhlp: $(DOCDIR)/winhelp/techref.hlp -rtf: $(DOCDIR)/winhelp/wx.rtf -proprtf: $(DOCDIR)/winhelp/prop.rtf -pdfrtf: $(DOCDIR)/pdf/wx.rtf -proppdfrtf: $(DOCDIR)/pdf/prop.rtf -refpdfrtf: $(DOCDIR)/pdf/techref.rtf -html: wxhtml portinghtml -wxhtml: $(DOCDIR)\html\wx\wx.htm -htmlhelp: $(DOCDIR)\html\wx\wx.chm -prophtml: $(DOCDIR)\html\proplist\prop.htm -ps: wxps referencps -wxps: $(WXDIR)\docs\ps\wx.ps -propps: $(WXDIR)\docs\ps\prop.ps -referencps: $(WXDIR)\docs\ps\referenc.ps - -portinghtml: $(DOCDIR)\html\porting\port.htm -portingrtf: $(DOCDIR)/winhelp/porting.rtf -portinghlp: $(DOCDIR)/winhelp/porting.hlp -portingpdfrtf: $(DOCDIR)/pdf/porting.rtf -portingps: $(WXDIR)\docs\ps\porting.ps - -allhlp: wxhlp portinghlp prophlp - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 hlp - cd $(THISDIR) - -# cd $(WXDIR)\utils\wxhelp\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\tex2rtf\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxgraph\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxchart\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxtree\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxbuild\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxgrid\src -# make -f makefile.b32 hlp - -allhtml: wxhtml portinghtml prophtml - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 html - cd $(THISDIR) - -# make -f makefile.b32 html -# cd $(WXDIR)\utils\dialoged\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\hytext\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxhelp\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\tex2rtf\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxgraph\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxchart\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxtree\src -# make -f makefile.b32 html - -allps: wxps referencps portingps propps - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 ps - cd $(THISDIR) - -allpdfrtf: pdfrtf portingpdfrtf proppdfrtf - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 pdfrtf - cd $(THISDIR) - -# cd $(WXDIR)\utils\wxhelp\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\tex2rtf\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\wxgraph\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\wxchart\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\wxtree\src -# make -f makefile.b32 ps -# cd $(THISDIR) - -$(DOCDIR)/winhelp/wx.hlp: $(DOCDIR)/latex/wx/wx.rtf $(DOCDIR)/latex/wx/wx.hpj - cd $(DOCDIR)/latex/wx - -erase wx.ph - hc wx - move wx.hlp $(DOCDIR)\winhelp\wx.hlp - move wx.cnt $(DOCDIR)\winhelp\wx.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/porting.hlp: $(DOCDIR)/latex/porting/porting.rtf $(DOCDIR)/latex/porting/porting.hpj - cd $(DOCDIR)/latex/porting - -erase porting.ph - hc porting - move porting.hlp $(DOCDIR)\winhelp\porting.hlp - move porting.cnt $(DOCDIR)\winhelp\porting.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/prop.hlp: $(DOCDIR)/latex/proplist/prop.rtf $(DOCDIR)/latex/proplist/prop.hpj - cd $(DOCDIR)/latex/proplist - -erase prop.ph - hc prop - move prop.hlp $(DOCDIR)\winhelp\prop.hlp - move prop.cnt $(DOCDIR)\winhelp\prop.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/techref.hlp: $(DOCDIR)/latex/techref/techref.rtf $(DOCDIR)/latex/techref/techref.hpj - cd $(DOCDIR)/latex/techref - -erase techref.ph - hc techref - move techref.hlp $(DOCDIR)\winhelp\techref.hlp - move techref.cnt $(DOCDIR)\winhelp\techref.cnt - cd $(THISDIR) - -$(DOCDIR)/latex/wx/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex - cd $(DOCDIR)\latex\wx - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/latex/wx/wx.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/porting/porting.rtf: $(DOCDIR)/latex/porting/porting.tex - cd $(DOCDIR)\latex\porting - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/porting/porting.tex $(DOCDIR)/latex/porting/porting.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/proplist/prop.rtf: $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/body.tex $(DOCDIR)/latex/proplist/classes.tex $(DOCDIR)/latex/proplist/changes.tex - cd $(DOCDIR)\latex\proplist - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/prop.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/techref/techref.rtf: $(DOCDIR)/latex/techref/techref.tex - cd $(DOCDIR)\latex\techref - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/latex/techref/techref.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/pdf/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex - cd $(DOCDIR)\latex\wx - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/pdf/wx.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/porting.rtf: $(DOCDIR)/latex/porting/porting.tex - cd $(DOCDIR)\latex\porting - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/porting/porting.tex $(DOCDIR)/pdf/porting.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/prop.rtf: $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/body.tex $(DOCDIR)/latex/proplist/classes.tex $(DOCDIR)/latex/proplist/changes.tex - cd $(DOCDIR)\latex\proplist - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/pdf/prop.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/techref.rtf: $(DOCDIR)/latex/techref/techref.tex - cd $(DOCDIR)\latex\techref - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/pdf/techref.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\wx\wx.htm: $(DOCDIR)\latex\wx\classes.tex $(DOCDIR)\latex\wx\body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)\latex\wx\manual.tex - cd $(DOCDIR)\latex\wx - -mkdir $(DOCDIR)\html\wx - -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\html\wx\wx.htm -twice -html - -erase $(DOCDIR)\html\wx\*.con - -erase $(DOCDIR)\html\wx\*.ref - -erase $(DOCDIR)\latex\wx\*.con - -erase $(DOCDIR)\latex\wx\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\wx\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\html\wx\wx.hhp - cd $(DOCDIR)\html\wx - -hhc wx.hhp - cd $(THISDIR) - - -$(DOCDIR)\html\porting\port.htm: $(DOCDIR)\latex\porting\porting.tex - cd $(DOCDIR)\latex\porting - -mkdir $(DOCDIR)\html\porting - -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\porting\porting.tex $(DOCDIR)\html\porting\port.htm -twice -html - -erase $(DOCDIR)\html\porting\*.con - -erase $(DOCDIR)\html\porting\*.ref - -erase $(DOCDIR)\latex\porting\*.con - -erase $(DOCDIR)\latex\porting\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\proplist\prop.htm: $(DOCDIR)\latex\proplist\prop.tex $(DOCDIR)\latex\proplist\body.tex $(DOCDIR)\latex\proplist\classes.tex $(DOCDIR)\latex\proplist\changes.tex - cd $(DOCDIR)\latex\proplist - -mkdir $(DOCDIR)\html\proplist - -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\proplist\prop.tex $(DOCDIR)\html\proplist\prop.htm -twice -html - -erase $(DOCDIR)\html\proplist\*.con - -erase $(DOCDIR)\html\proplist\*.ref - -erase $(DOCDIR)\latex\proplist\*.con - -erase $(DOCDIR)\latex\proplist\*.ref - cd $(THISDIR) - -$(WXDIR)\docs\latex\wx\manual.dvi: $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/manual.tex - cd $(WXDIR)\docs\latex\wx - -latex manual - -latex manual - -makeindx manual - -bibtex manual - -latex manual - -latex manual - cd $(THISDIR) - -$(WXDIR)\docs\latex\porting\porting.dvi: $(DOCDIR)/latex/porting/porting.tex - cd $(WXDIR)\docs\latex\porting - -latex porting - -latex porting - -makeindx porting - -bibtex porting - -latex porting - -latex porting - cd $(THISDIR) - -$(WXDIR)\docs\ps\wx.ps: $(WXDIR)\docs\latex\wx\manual.dvi - cd $(WXDIR)\docs\latex\wx - -dvips32 -o wx.ps manual - move wx.ps $(WXDIR)\docs\ps\wx.ps - cd $(THISDIR) - -$(WXDIR)\docs\ps\porting.ps: $(WXDIR)\docs\latex\porting\porting.dvi - cd $(WXDIR)\docs\latex\porting - -dvips32 -o porting.ps porting - move porting.ps $(WXDIR)\docs\ps\porting.ps - cd $(THISDIR) - -$(WXDIR)\docs\latex\wx\referenc.dvi: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/referenc.tex - cd $(WXDIR)\docs\latex\wx - -latex referenc - -latex referenc - -makeindx referenc - -bibtex referenc - -latex referenc - -latex referenc - cd $(THISDIR) - -$(WXDIR)\docs\ps\referenc.ps: $(WXDIR)\docs\latex\wx\referenc.dvi - cd $(WXDIR)\docs\latex\wx - -dvips32 -o referenc.ps referenc - move referenc.ps $(WXDIR)\docs\ps\referenc.ps - cd $(THISDIR) - -# In order to force document reprocessing -touchmanual: - -touch $(WXDIR)\docs\latex\wx\manual.tex - -updatedocs: touchmanual alldocs - -# Start Word, running the GeneratePDF macro. MakeManual.dot should be in the -# Office StartUp folder, and PDFMaker should be installed. -updatepdf: # touchmanual pdfrtf - start $(WAITFLAG) "winword d:\wx2\wxWindows\docs\latex\pdf\wx.rtf /mGeneratePDF" - - -MFTYPE=b32 -# Can't use this or we'll have to distribute all tmake files with wxWindows -# makefile.$(MFTYPE) : $(WXWIN)\distrib\msw\tmake\filelist.txt $(WXWIN)\distrib\msw\tmake\$(MFTYPE).t - -self: - cd $(WXWIN)\distrib\msw\tmake - tmake -t $(MFTYPE) wxwin.pro -o makefile.$(MFTYPE) - copy makefile.$(MFTYPE) $(WXWIN)\src\msw - diff --git a/distrib/msw/tmake/filelist.t b/distrib/msw/tmake/filelist.t index 5ad041fd2d..c4d9540fa4 100644 --- a/distrib/msw/tmake/filelist.t +++ b/distrib/msw/tmake/filelist.t @@ -97,6 +97,8 @@ $wxGTKINCLUDE{$filename} = $fileflags; } elsif ( $filetype eq "OS2H" ) { $wxOS2PMINCLUDE{$filename} = $fileflags; + } elsif ( $filetype eq "MGLH" ) { + $wxMGLINCLUDE{$filename} = $fileflags; } elsif ( $filetype eq "X11H" ) { $wxX11INCLUDE{$filename} = $fileflags; } elsif ( $filetype eq "UnivH" ) { diff --git a/distrib/msw/tmake/filelist.txt b/distrib/msw/tmake/filelist.txt index e38f4ced4a..b780c1ed96 100644 --- a/distrib/msw/tmake/filelist.txt +++ b/distrib/msw/tmake/filelist.txt @@ -30,6 +30,7 @@ # MotifH /include/wx/motif # MSWH /include/wx/msw # OS2H /include/wx/os2 +# MGLH /include/wx/mgl # X11H /include/wx/x11 # GenericH /include/wx/generic # HtmlH /include/wx/html @@ -79,7 +80,7 @@ dirctrlg.cpp Generic dirdlgg.cpp Generic NotWin32 dragimgg.cpp Generic NotOS2 fdrepdlg.cpp Generic NotMSW -filedlgg.cpp Generic NotMSW,NotX,NotOS2,NotMac +filedlgg.cpp Generic Generic,NotX,NotOS2,NotMac fontdlgg.cpp Generic Generic,NotOS2 grid.cpp Generic gridctrl.cpp Generic @@ -90,7 +91,7 @@ imaglist.cpp Generic NotWin32 laywin.cpp Generic listctrl.cpp Generic NotWin32 logg.cpp Generic -mdig.cpp Generic NotWin32,NotGTK,NotOS2,NotMac +mdig.cpp Generic NotWin32,NotGTK,NotMac msgdlgg.cpp Generic Generic notebook.cpp Generic NotWin32,NotGTK,NotOS2,NotMGL,NotX11,NotMac,NotMicro numdlgg.cpp Generic @@ -282,7 +283,7 @@ dcprint.cpp MSW LowLevel dcscreen.cpp MSW LowLevel dde.cpp MSW LowLevel,Base dialog.cpp MSW -dialup.cpp MSW +dialup.cpp MSW LowLevel dib.cpp MSW LowLevel dibutils.cpp MSW dir.cpp MSW Base @@ -291,9 +292,11 @@ dragimag.cpp MSW dropsrc.cpp MSW OLE droptgt.cpp MSW OLE enhmeta.cpp MSW Win32Only -helpbest.cpp MSW Win32Only +helpbest.cpp MSW Win32Only,LowLevel evtloop.cpp MSW LowLevel fdrepdlg.cpp MSW Win32Only +# FIXME: the generic implementation doesn't work under MSW, so we must +# the native dialog under MSW filedlg.cpp MSW font.cpp MSW LowLevel fontdlg.cpp MSW @@ -304,13 +307,13 @@ gauge95.cpp MSW Win32Only gaugemsw.cpp MSW NotWin32 gdiimage.cpp MSW LowLevel gdiobj.cpp MSW LowLevel -glcanvas.cpp MSW -helpchm.cpp MSW Win32Only -helpwin.cpp MSW +glcanvas.cpp MSW LowLevel +helpchm.cpp MSW Win32Only,LowLevel +helpwin.cpp MSW LowLevel icon.cpp MSW LowLevel imaglist.cpp MSW Win32Only iniconf.cpp MSW -joystick.cpp MSW +joystick.cpp MSW LowLevel listbox.cpp MSW listctrl.cpp MSW Win32Only main.cpp MSW LowLevel,Base @@ -350,21 +353,21 @@ statbr95.cpp MSW Win32Only statline.cpp MSW stattext.cpp MSW tabctrl.cpp MSW -taskbar.cpp MSW Win32Only +taskbar.cpp MSW Win32Only,LowLevel tbar95.cpp MSW Win32Only tbarmsw.cpp MSW NotWin32 textctrl.cpp MSW tglbtn.cpp MSW thread.cpp MSW Win32Only,Base,LowLevel timer.cpp MSW LowLevel -tooltip.cpp MSW Win32Only +tooltip.cpp MSW Win32Only,LowLevel toplevel.cpp MSW LowLevel treectrl.cpp MSW Win32Only utils.cpp MSW Base,LowLevel utilsexc.cpp MSW Base,LowLevel uuid.cpp MSW OLE volume.cpp MSW Base -wave.cpp MSW +wave.cpp MSW LowLevel window.cpp MSW LowLevel dialup.cpp Unix NotMac @@ -687,12 +690,10 @@ iniconf.cpp OS2 joystick.cpp OS2 listbox.cpp OS2 main.cpp OS2 -mdi.cpp OS2 menu.cpp OS2 menuitem.cpp OS2 metafile.cpp OS2 mimetype.cpp OS2 -minifram.cpp OS2 msgdlg.cpp OS2 nativdlg.cpp OS2 notebook.cpp OS2 @@ -745,7 +746,6 @@ m_list.cpp HTML m_dflist.cpp HTML m_pre.cpp HTML m_tables.cpp HTML -m_meta.cpp HTML m_style.cpp HTML htmprint.cpp HTML @@ -843,7 +843,7 @@ gdiobj.h WXH geometry.h WXH gifdecod.h WXH xpmdecod.h WXH -dbkeyg.h WXH +dbkeyg.h WXH Base glcanvas.h WXH grid.h WXH gsocket.h WXH Base @@ -915,6 +915,7 @@ progdlg.h WXH prop.h WXH propform.h WXH proplist.h WXH +quantize.h WXH radiobox.h WXH radiobut.h WXH regex.h WXH Base @@ -1230,6 +1231,28 @@ textctrl.h X11H toplevel.h X11H window.h X11H +app.h MGLH +bitmap.h MGLH +brush.h MGLH +clipbrd.h MGLH +colour.h MGLH +cursor.h MGLH +dc.h MGLH +dcclient.h MGLH +dcmemory.h MGLH +dcscreen.h MGLH +font.h MGLH +fontutil.h MGLH +gdiobj.h MGLH +icon.h MGLH +palette.h MGLH +pen.h MGLH +popupwin.h MGLH +private.h MGLH +region.h MGLH +toplevel.h MGLH +window.h MGLH + accel.h MSWH app.h MSWH bitmap.h MSWH @@ -1267,7 +1290,7 @@ fontdlg.h MSWH frame.h MSWH gauge95.h MSWH gaugemsw.h MSWH -gccpriv.h MSWH +gccpriv.h MSWH Base gdiimage.h MSWH gdiobj.h MSWH glcanvas.h MSWH @@ -1392,7 +1415,6 @@ dialog.h OS2H radiobox.h OS2H toolbar.h OS2H checkbox.h OS2H -mdi.h OS2H radiobut.h OS2H tooltip.h OS2H checklst.h OS2H @@ -1479,7 +1501,7 @@ helphtml.h GenericH imaglist.h GenericH laywin.h GenericH listctrl.h GenericH NotWin32 -mdig.h GenericH NotWin32,NotGTK,NotOS2,NotMac +mdig.h GenericH NotWin32,NotGTK,NotMac msgdlgg.h GenericH notebook.h GenericH paletteg.h GenericH NotMSW,NotX,NotX11,NotOS2 diff --git a/distrib/msw/tmake/g95.t b/distrib/msw/tmake/g95.t index 7fb2d7fd44..c4fc4bda3a 100644 --- a/distrib/msw/tmake/g95.t +++ b/distrib/msw/tmake/g95.t @@ -110,7 +110,7 @@ DLL_BASE_LDLIBS = $(DLL_EXTRA_LIBS) -lstdc++ -lwsock32 ifeq ($(wxUSE_GUI),0) DLL_LDLIBS = $(DLL_BASE_LDLIBS) else - DLL_LDLIBS = -mwindows -lcomctl32 -lctl3d32 -lole32 -loleaut32 \ + DLL_LDLIBS = -lcomctl32 -lctl3d32 -lole32 -loleaut32 \ -luuid -lrpcrt4 -lodbc32 -lwinmm -lopengl32 \ $(DLL_BASE_LDLIBS) endif @@ -141,15 +141,12 @@ DOCDIR = $(WXDIR)/docs # Only use the WIN32 wxDirDialog if we have a recent # version of Mingw32 -ifeq ($(MINGW32),1) - ifneq "$(_GCC295)$(_GCC3)" "" +ifeq "$(strip $(RECENT_MINGW))" "yes" DIRDLGOBJ = $(MSWDIR)/dirdlg.$(OBJSUFF) - else - DIRDLGOBJ = $(GENDIR)/dirdlgg.$(OBJSUFF) - endif else DIRDLGOBJ = $(GENDIR)/dirdlgg.$(OBJSUFF) endif + ifeq ($(wxUSE_GUI),0) DIRDLGOBJ = endif @@ -305,12 +302,8 @@ TIFFOBJS = $(TIFFDIR)/tif_aux.o \ $(TIFFDIR)/tif_write.o \ $(TIFFDIR)/tif_zip.o -ifeq ($(MINGW32),1) - ifneq "$(_GCC295)$(_GCC3)" "" - OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) $(ADVANCEDOBJS) - else - OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) - endif +ifeq "$(strip $(RECENT_MINGW))" "yes" + OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) $(ADVANCEDOBJS) else OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) endif @@ -343,9 +336,12 @@ $(ARCHINCDIR)/wx: mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR)) mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR)/wx) -$(SETUP_H): $(ARCHINCDIR)/wx - $(COPY) $(WXDIR)/include/wx/msw/setup.h $@ +# Copy ALWAYS uses forward slashes now. +$(SETUP_H): $(ARCHINCDIR)/wx $(WXDIR)/include/wx/msw/setup.h + $(COPY) $(WXDIR)/include/wx/msw/setup.h $(subst $(BACKSLASH),/,$@) + +# $(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 @@ -361,11 +357,12 @@ else ifeq "$(strip $(LD_SUPPORTS_SHARED))" "yes" $(WXDLL): $(OBJECTS) $(EXTRAOBJS) - $(CC) -shared -o $@ \ + $(CXX) -shared -o $@ \ -Wl,--output-def,$(WXDEF) \ -Wl,--out-implib,$(WXLIB) \ $(OBJECTS) $(EXTRAOBJS) \ - $(DLL_LDFLAGS) $(DLL_LDLIBS) + $(DLL_LDFLAGS) $(DLL_LDLIBS) \ + $(ALL_LDFLAGS_DLL) else ifeq ($(MINGW32),1) @@ -386,11 +383,11 @@ $(WXDEF) $(WXLIB): $(OBJECTS) $(EXTRAOBJS) $(OBJECTS) $(EXTRAOBJS) $(DLL_EXTRA_LIBS) $(WXDLL): $(OBJECTS) $(EXTRAOBJS) $(WXDEF) - $(CC) -mdll -Wl,--base-file,wx.base -s -o $@ $(LD_STUFF) + $(CC) -mdll -Wl,--base-file,wx.base -s -o $@ $(LD_STUFF) $(ALL_LDFLAGS_DLL) $(DLLTOOL) $(DLL_STUFF) - $(CC) -mdll -Wl,--base-file,wx.base wx.exp -s -o $@ $(LD_STUFF) + $(CC) -mdll -Wl,--base-file,wx.base wx.exp -s -o $@ $(LD_STUFF) $(ALL_LDFLAGS_DLL) $(DLLTOOL) $(DLL_STUFF) - $(CC) -mdll wx.exp -o $@ $(LD_STUFF) + $(CC) -mdll wx.exp -o $@ $(LD_STUFF) $(ALL_LDFLAGS_DLL) -$(RM) wx.base -$(RM) wx.exp @@ -421,7 +418,7 @@ $(REGEXLIB): $(OBJECTS): $(WXINC)/wx/defs.h $(WXINC)/wx/object.h $(ARCHINCDIR)/wx/setup.h $(COMMDIR)/y_tab.$(OBJSUFF): $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c - $(CCLEX) -c $(CPPFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c + $(CCLEX) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c $(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c $(COPY) ../common/dosyacc.c ../common/y_tab.c diff --git a/distrib/msw/tmake/gtk.t b/distrib/msw/tmake/gtk.t index 0c2ea827de..798d035553 100644 --- a/distrib/msw/tmake/gtk.t +++ b/distrib/msw/tmake/gtk.t @@ -13,8 +13,6 @@ IncludeTemplate("filelist.t"); #! find all our sources - $project{"COMMONOBJS"} .= "parser.o "; - foreach $file (sort keys %wxGeneric) { next if $wxGeneric{$file} =~ /\bNotGTK\b/; diff --git a/distrib/msw/tmake/mac.t b/distrib/msw/tmake/mac.t index 6e7bd9b304..0315d6af52 100644 --- a/distrib/msw/tmake/mac.t +++ b/distrib/msw/tmake/mac.t @@ -13,7 +13,6 @@ IncludeTemplate("filelist.t"); #! find all our sources - $project{"COMMONOBJS"} .= "parser.o "; #! MoreFiles sources $project{"GUIOBJS"} .= "DirectoryCopy.o "; $project{"GUIOBJS"} .= "FSpCompat.o "; diff --git a/distrib/msw/tmake/mgl.t b/distrib/msw/tmake/mgl.t index af07954f30..56da38c497 100644 --- a/distrib/msw/tmake/mgl.t +++ b/distrib/msw/tmake/mgl.t @@ -13,7 +13,6 @@ IncludeTemplate("filelist.t"); #! find all our sources - $project{"COMMONOBJS"} .= "parser.o "; foreach $file (sort keys %wxGeneric) { next if $wxGeneric{$file} =~ /\bNotMGL\b/; diff --git a/distrib/msw/tmake/motif.t b/distrib/msw/tmake/motif.t index dbca7fc9e5..9cc31f2883 100644 --- a/distrib/msw/tmake/motif.t +++ b/distrib/msw/tmake/motif.t @@ -13,7 +13,6 @@ IncludeTemplate("filelist.t"); #! find all our sources - $project{"COMMONOBJS"} .= "parser.o "; $project{"GUIOBJS"} .= "xmcombo.o "; foreach $file (sort keys %wxGeneric) { diff --git a/distrib/msw/tmake/msw.t b/distrib/msw/tmake/msw.t index cfdd651f73..32681accc9 100644 --- a/distrib/msw/tmake/msw.t +++ b/distrib/msw/tmake/msw.t @@ -13,8 +13,6 @@ IncludeTemplate("filelist.t"); #! find all our sources - $project{"COMMONOBJS"} .= "parser.o "; - foreach $file (sort keys %wxGeneric) { next if $wxGeneric{$file} =~ /\b(PS|G|U|16)\b/; diff --git a/distrib/msw/tmake/vc.t b/distrib/msw/tmake/vc.t index b594d5d854..cabc5cf8fd 100644 --- a/distrib/msw/tmake/vc.t +++ b/distrib/msw/tmake/vc.t @@ -92,7 +92,7 @@ PERIPH_CLEAN_TARGET= # Set to 0 if not using GLCanvas (only affects DLL build) USE_GLCANVAS=1 -# Set to 0 if you are using MSVC 5 +# Set to 1 if you are using MSVC 5 USE_MSVC_5=0 # These are absolute paths, so that the compiler @@ -294,7 +294,7 @@ $(WXDIR)\lib\$(WXLIBNAME).dll: $(DUMMYOBJ) $(OBJECTS) $(link) @<< $(LINKFLAGS) $(INCREMENTAL) -out:$(WXDIR)\lib\$(WXLIBNAME).dll - $(DUMMYOBJ) $(OBJECTS) $(MSLU_LIBS) $(guilibsdll) shell32.lib comctl32.lib ctl3d32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib odbc32.lib advapi32.lib winmm.lib $(GL_LIBS) $(WXDIR)\lib\png$(LIBEXT).lib $(WXDIR)\lib\zlib$(LIBEXT).lib $(WXDIR)\lib\jpeg$(LIBEXT).lib $(WXDIR)\lib\tiff$(LIBEXT).lib $(WXDIR)\lib\regex$(LIBEXT).lib $(DELAY_LOAD) + $(DUMMYOBJ) $(OBJECTS) $(MSLU_LIBS) $(guilibsdll) shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib odbc32.lib advapi32.lib winmm.lib $(GL_LIBS) $(WXDIR)\lib\png$(LIBEXT).lib $(WXDIR)\lib\zlib$(LIBEXT).lib $(WXDIR)\lib\jpeg$(LIBEXT).lib $(WXDIR)\lib\tiff$(LIBEXT).lib $(WXDIR)\lib\regex$(LIBEXT).lib $(DELAY_LOAD) << !endif @@ -589,23 +589,30 @@ $(DOCDIR)/pdf/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/ -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/pdf/wx.rtf -twice -rtf cd $(THISDIR) +# This target does two sets of HTML: one using a style sheet, for +# the purposes of the CHM file, and one without. $(DOCDIR)\html\wx\wx.htm: $(DOCDIR)\latex\wx\classes.tex $(DOCDIR)\latex\wx\body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)\latex\wx\manual.tex cd $(DOCDIR)\latex\wx -mkdir $(DOCDIR)\html\wx copy *.gif $(DOCDIR)\html\wx -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\html\wx\wx.htm -twice -html + -mkdir $(DOCDIR)\mshtml + -mkdir $(DOCDIR)\mshtml\wx + copy *.gif $(DOCDIR)\mshtml\wx + -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\mshtml\wx\wx.htm -twice -html -macros $(DOCDIR)\latex\wx\tex2rtf_css.ini -erase $(DOCDIR)\html\wx\*.con -erase $(DOCDIR)\html\wx\*.ref -erase $(DOCDIR)\latex\wx\*.con -erase $(DOCDIR)\latex\wx\*.ref cd $(THISDIR) -$(DOCDIR)\htmlhelp\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\html\wx\wx.hhp - cd $(DOCDIR)\html\wx +$(DOCDIR)\htmlhelp\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\mshtml\wx\wx.htm $(DOCDIR)\mshtml\wx\wx.hhp + cd $(DOCDIR)\mshtml\wx + copy $(DOCDIR)\latex\wx\wx.css . -hhc wx.hhp - -mkdir ..\..\htmlhelp - -erase $(DOCDIR)\htmlhelp\wx.chm - move wx.chm ..\..\htmlhelp + -mkdir ..\..\htmlhelp + -erase $(DOCDIR)\htmlhelp\wx.chm + move wx.chm ..\..\htmlhelp cd $(THISDIR) $(WXDIR)\docs\latex\wx\manual.dvi: $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/manual.tex diff --git a/distrib/msw/tmake/vc6app.t b/distrib/msw/tmake/vc6app.t index 39ff9c463e..9ceace9bb1 100644 --- a/distrib/msw/tmake/vc6app.t +++ b/distrib/msw/tmake/vc6app.t @@ -49,7 +49,7 @@ } else { $project{"VC_PROJ_TYPE"} = 'Win32 (x86) Console Application'; $project{"VC_PROJ_CODE"} = '0x0103'; - $vc_base_libs = 'kernel32.lib user32.lib advapi32.lib '; + $vc_base_libs = 'kernel32.lib user32.lib advapi32.lib shell32.lib '; if ( Config("wx") ) { $vc_base_libs .= 'wsock32.lib '; } diff --git a/distrib/msw/tmake/vc6base.t b/distrib/msw/tmake/vc6base.t index 959ff69fdc..192edf77ea 100644 --- a/distrib/msw/tmake/vc6base.t +++ b/distrib/msw/tmake/vc6base.t @@ -7,6 +7,8 @@ #! Version: $Id$ #!############################################################################# #${ + use wxVersion qw(GetVersion); + #! include the code which parses filelist.txt file and initializes #! %wxCommon, %wxGeneric and %wxMSW hashes. IncludeTemplate("filelist.t"); @@ -44,7 +46,12 @@ $project{"WXMSWHEADERS"} .= $file . " " } - $project{"WXVERSION"} = "233"; + #! LINK_VERSION is the value of the linker /version switch, + #! DLL_VERSION is the version string for the DLL filename + my %versions = GetVersion(); + my ($verMaj, $verMin) = ( $versions{'MAJOR'}, $versions{'MINOR'} ); + $project{"LINK_VERSION"} = "$verMaj.$verMin"; + $project{"DLL_VERSION"} = "$verMaj$verMin"; #$} # Microsoft Developer Studio Project File - Name="wxBase" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 @@ -106,8 +113,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . 'u.dll"' -# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlib.lib ../lib/regex.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . 'u.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase#$ $text = $project{"DLL_VERSION"} . 'u.dll"' +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlib.lib ../lib/regex.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxbase' . $project{DLL_VERSION} . 'u.dll"' !ELSEIF "$(CFG)" == "wxBase - Win32 Debug Unicode DLL" @@ -132,9 +139,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . 'ud.dll"' -# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlibd.lib ../lib/regexd.lib /nologo /version:2.2 /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . 'ud.dll"' - +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase#$ $text = $project{"DLL_VERSION"} . 'ud.dll"' +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlibd.lib ../lib/regexd.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxbase' . $project{DLL_VERSION} . 'ud.dll"' !ELSEIF "$(CFG)" == "wxBase - Win32 Release Unicode" # PROP BASE Use_MFC 0 @@ -204,8 +210,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . '.dll"' -# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlib.lib ../lib/regex.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . '.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase#$ $text = $project{"DLL_VERSION"} . '.dll"' +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlib.lib ../lib/regex.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxbase' . $project{DLL_VERSION} . '.dll"' !ELSEIF "$(CFG)" == "wxBase - Win32 Debug DLL" @@ -230,8 +236,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . 'd.dll"' -# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlibd.lib ../lib/regexd.lib /nologo /version:2.2 /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase#$ $text = $project{"WXVERSION"} . 'd.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase#$ $text = $project{"DLL_VERSION"} . 'd.dll"' +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlibd.lib ../lib/regexd.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxbase' . $project{DLL_VERSION} . 'd.dll"' !ELSEIF "$(CFG)" == "wxBase - Win32 Release" diff --git a/distrib/msw/tmake/vc6msw.t b/distrib/msw/tmake/vc6msw.t index 84bd19f150..72449a7d31 100644 --- a/distrib/msw/tmake/vc6msw.t +++ b/distrib/msw/tmake/vc6msw.t @@ -9,6 +9,8 @@ #! Version: $Id$ #!############################################################################# #${ + use wxVersion qw(GetVersion); + #! include the code which parses filelist.txt file and initializes #! %wxCommon, %wxGeneric and %wxMSW hashes. IncludeTemplate("filelist.t"); @@ -60,7 +62,12 @@ $project{"WXHTMLHEADERS"} .= $file . " " } - $project{"WXVERSION"} = "233"; + #! LINK_VERSION is the value of the linker /version switch, + #! DLL_VERSION is the version string for the DLL filename + my %versions = GetVersion(); + my ($verMaj, $verMin) = ( $versions{'MAJOR'}, $versions{'MINOR'} ); + $project{"LINK_VERSION"} = "$verMaj.$verMin"; + $project{"DLL_VERSION"} = "$verMaj$verMin"; #$} # Microsoft Developer Studio Project File - Name="wxWindows" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 @@ -122,8 +129,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . 'u.dll"' -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . 'u.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw#$ $text = $project{"DLL_VERSION"} . 'u.dll"' +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxmsw' . $project{DLL_VERSION} . 'u.dll"' !ELSEIF "$(CFG)" == "wxWindows - Win32 Debug Unicode DLL" @@ -148,8 +155,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . 'ud.dll"' -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo /version:2.3 /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . 'ud.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw#$ $text = $project{"DLL_VERSION"} . 'ud.dll"' +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxmsw' . $project{DLL_VERSION} . 'ud.dll"' !ELSEIF "$(CFG)" == "wxWindows - Win32 Release Unicode" @@ -220,8 +227,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . '.dll"' -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . '.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw#$ $text = $project{"DLL_VERSION"} . '.dll"' +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxmsw' . $project{DLL_VERSION} . '.dll"' !ELSEIF "$(CFG)" == "wxWindows - Win32 Debug DLL" @@ -246,8 +253,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . 'd.dll"' -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo /version:2.3 /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw#$ $text = $project{"WXVERSION"} . 'd.dll"' +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw#$ $text = $project{"DLL_VERSION"} . 'd.dll"' +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo #$ $text = '/version:' . $project{LINK_VERSION} . ' /dll /machine:I386 /out:"../lib/wxmsw' . $project{DLL_VERSION} . 'd.dll"' !ELSEIF "$(CFG)" == "wxWindows - Win32 Release" @@ -336,15 +343,46 @@ SOURCE=.\common\dosyacc.c SOURCE=.\msw\dummy.cpp # ADD CPP /Yc"wx/wxprec.h" +# End Source File +# Begin Source File + +SOURCE=.\msw\version.rc + +!IF "$(CFG)" == "wxWindows - Win32 Release Unicode DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug Unicode DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Release DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ENDIF + # End Source File #$ ExpandGlue("WXMSWSRCS", "# Begin Source File\n\nSOURCE=.\\msw\\", "\n# End Source File\n# Begin Source File\n\nSOURCE=.\\msw\\", "\n# End Source File\n"); #$ ExpandGlue("WXMSWCSRCS", "# Begin Source File\n\nSOURCE=.\\msw\\", "\n# SUBTRACT CPP /YX /Yc /Yu\n# End Source File\n# Begin Source File\n\nSOURCE=.\\msw\\", "\n# SUBTRACT CPP /YX /Yc /Yu\n# End Source File\n"); -# End Group # Begin Group "OLE Files" # PROP Default_Filter "" #$ ExpandGlue("WXOLESRCS", "# Begin Source File\n\nSOURCE=.\\msw\\ole\\", "\n# End Source File\n# Begin Source File\n\nSOURCE=.\\msw\\ole\\", "\n# End Source File\n"); # End Group +# End Group # Begin Group "Headers" # PROP Default_Filter "" diff --git a/distrib/msw/tmake/wat.t b/distrib/msw/tmake/wat.t index e6d9f58f73..6c594f4eba 100644 --- a/distrib/msw/tmake/wat.t +++ b/distrib/msw/tmake/wat.t @@ -2,13 +2,10 @@ #! 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$ +#! Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch #!############################################################################# #${ #! include the code which parses filelist.txt file and initializes @@ -49,7 +46,7 @@ #! these files don't compile next if $file =~ /^pnghand\./; -#! next if $wxGeneric{$file} =~ /\b16\b/; + next if $wxMSW{$file} =~ /\b16\b/; my $isOleObj = $wxMSW{$file} =~ /\bO\b/; my $isCFile = $file =~ /\.c$/; @@ -71,25 +68,9 @@ # Created: 1998 # # Makefile : Builds wxWindows library for Watcom C++, WIN32 -# -# 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: -# -# - OLE-related files such as oleutils.cpp should have 'ole\' prepended -# to the path. -# - extended.c, gsocket.c, unzip.c must be compiled using $(CC), not $(CCC). -# They may also be wrongly specified as extended.cpp, etc. +!include ..\makewat.env -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib - -LIBTARGET = $(WXLIB)\wx.lib -DUMMY=dummydll -# ODBCLIB = ..\..\contrib\odbc\odbc32.lib +LIBTARGET = $(WXDIR)\lib\$(LIBNAME).lib EXTRATARGETS = png zlib jpeg tiff regex EXTRATARGETSCLEAN = clean_png clean_zlib clean_jpeg clean_tiff clean_regex @@ -103,44 +84,42 @@ HTMLDIR=$(WXDIR)\src\html DOCDIR = $(WXDIR)\docs -GENERICOBJS= #$ ExpandGlue("WXGENERICOBJS", "", " &\n\t") +GENERICOBJS= #$ ExpandGlue("WXGENERICOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") # These are generic things that don't need to be compiled on MSW, # but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= #$ ExpandGlue("WXNONESSENTIALOBJS", "", " &\n\t") +NONESSENTIALOBJS= #$ ExpandGlue("WXNONESSENTIALOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") COMMONOBJS = & - y_tab.obj & - #$ ExpandGlue("WXCOMMONOBJS", "", " &\n\t") + $(OUTPUTDIR)\y_tab.obj & + #$ ExpandGlue("WXCOMMONOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") -MSWOBJS = #$ ExpandGlue("WXMSWOBJS", "", " &\n\t") +MSWOBJS = #$ ExpandGlue("WXMSWOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") -HTMLOBJS = #$ ExpandGlue("WXHTMLOBJS", "", " &\n\t") +HTMLOBJS = #$ ExpandGlue("WXHTMLOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") # Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS) -ARCHINCDIR=$(WXDIR)\lib\msw SETUP_H=$(ARCHINCDIR)\wx\setup.h -all: $(SETUP_H) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC +all: $(SETUP_H) $(OUTPUTDIR) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC $(ARCHINCDIR)\wx: - mkdir $(ARCHINCDIR) - mkdir $(ARCHINCDIR)\wx + mkdir $(ARCHINCDIR) + mkdir $(ARCHINCDIR)\wx + +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ $(SETUP_H): $(WXDIR)\include\wx\msw\setup.h $(ARCHINCDIR)\wx - copy $(WXDIR)\include\wx\msw\setup.h $@ + copy $(WXDIR)\include\wx\msw\setup.h $@ +LBCFILE=wx$(TOOLKIT).lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc - -#test : $(OBJECTS) -# %create tmp.lbc -# @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i -# wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /b /c /n $(LIBPAGESIZE) $^@ @$(LBCFILE) clean: .SYMBOLIC $(EXTRATARGETSCLEAN) @@ -156,7 +135,7 @@ cleanall: clean $_ = $project{"WXMSWOBJS"}; my @objs = split; foreach (@objs) { - $text .= $_ . ': $('; + $text .= "\$(OUTPUTDIR)\\" . $_ . ': $('; s/\.obj$//; if ( $project{"WXOLEOBJS"} =~ /\b\Q$_\E\b/ ) { $text .= 'OLEDIR)\\'; @@ -167,13 +146,15 @@ cleanall: clean if ( $project{"WXCOBJS"} =~ /\b\Q$_\E\b/ ) { $suffix = "c"; $cc="CC"; + $flags="CFLAGS"; } else { $suffix = "cpp"; - $cc="CCC"; + $cc="CXX"; + $flags="CXXFLAGS"; } $text .= $_ . ".$suffix\n" . - " *\$($cc) \$(CPPFLAGS) \$(IFLAGS) \$<" . "\n\n"; + " *\$($cc) \$($flags) \$<" . "\n\n"; } #$} @@ -184,27 +165,27 @@ cleanall: clean $_ = $project{"WXCOMMONOBJS"}; my @objs = split; foreach (@objs) { - $text .= $_; + $text .= "\$(OUTPUTDIR)\\" . $_; s/\.obj$//; $text .= ': $(COMMDIR)\\'; my $suffix, $cc; if ( $project{"WXCOBJS"} =~ /\b\Q$_\E\b/ ) { $suffix = "c"; $cc="CC"; + $flags="CFLAGS"; } else { $suffix = "cpp"; - $cc="CCC"; + $cc="CXX"; + $flags="CXXFLAGS"; } $text .= $_ . ".$suffix\n" . - " *\$($cc) \$(CPPFLAGS) \$(IFLAGS) \$<" . "\n\n"; + " *\$($cc) \$($flags) \$<" . "\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 +$(OUTPUTDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c + *$(CC) $(CFLAGS) -DUSE_DEFINE $(COMMDIR)\y_tab.c $(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c @@ -220,11 +201,11 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c $_ = $project{"WXGENERICOBJS"}; my @objs = split; foreach (@objs) { - $text .= $_; + $text .= "\$(OUTPUTDIR)\\" . $_; s/\.obj$//; $text .= ': $(GENDIR)\\'; $text .= $_ . ".cpp\n" . - ' *$(CCC) $(CPPFLAGS) $(IFLAGS) $<' . "\n\n"; + ' *$(CXX) $(CXXFLAGS) $<' . "\n\n"; } #$} @@ -236,11 +217,11 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c $_ = $project{"WXHTMLOBJS"}; my @objs = split; foreach (@objs) { - $text .= $_; + $text .= "\$(OUTPUTDIR)\\" . $_; s/\.obj$//; $text .= ': $(HTMLDIR)\\'; $text .= $_ . ".cpp\n" . - ' *$(CCC) $(CPPFLAGS) $(IFLAGS) $<' . "\n\n"; + ' *$(CXX) $(CXXFLAGS) $<' . "\n\n"; } #$} diff --git a/distrib/msw/tmake/watbase.t b/distrib/msw/tmake/watbase.t new file mode 100644 index 0000000000..40a45a0c71 --- /dev/null +++ b/distrib/msw/tmake/watbase.t @@ -0,0 +1,183 @@ +#!############################################################################# +#! File: wat.t +#! Purpose: tmake template file from which makefile.wat is generated by running +#! tmake -t wat wxwin.pro -o makefile.wat +#! Author: Vadim Zeitlin +#! Created: 14.07.99 +#! Version: $Id$ +#! Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch +#!############################################################################# +#${ + #! 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 %wxCommon) { + next if $wxCommon{$file} !~ /\bB\b/; + + $isCFile = $file =~ /\.c$/; + $file =~ s/cp?p?$/obj/; + $project{"WXCOMMONOBJS"} .= $file . " "; + $project{"WXCOBJS"} .= $file . " " if $isCFile; + } + + foreach $file (sort keys %wxMSW) { + next if $wxMSW{$file} !~ /\bB\b/; + + my $isCFile = $file =~ /\.c$/; + $file =~ s/cp?p?$/obj/; + $project{"WXMSWOBJS"} .= $file . " "; + $project{"WXCOBJS"} .= $file . " " if $isCFile; + } + + foreach $file (sort keys %wxBase) { + my $isCFile = $file =~ /\.c$/; + $file =~ s/cp?p?$/obj/; + $project{"WXCOMMONOBJS"} .= $file . " "; + $project{"WXCOBJS"} .= $file . " " if $isCFile; + } + +#$} +#! 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 +# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE WATBASE.T! + +############################################################################## +# Name: makebase.wat +# Purpose: Builds wxBase library for Watcom C++ under Win32 +# Author: Vadim Zeitlin +# Created: 21.01.03 +# RCS-ID: $Id$ +# Copyright: (c) 2003 Vadim Zeitlin +# Licence: wxWindows licence +############################################################################## + +wxUSE_GUI=0 + +!include ..\makewat.env + +LIBTARGET = $(WXDIR)\lib\$(LIBNAME).lib + +EXTRATARGETS = zlib regex +EXTRATARGETSCLEAN = clean_zlib clean_regex +COMMDIR=$(WXDIR)\src\common +MSWDIR=$(WXDIR)\src\msw +OLEDIR=$(MSWDIR)\ole + +COMMONOBJS = & + #$ ExpandGlue("WXCOMMONOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") + +MSWOBJS = & + #$ ExpandGlue("WXMSWOBJS", "\$(OUTPUTDIR)\\", " &\n\t\$(OUTPUTDIR)\\") + +OBJECTS = $(COMMONOBJS) $(MSWOBJS) + +SETUP_H=$(ARCHINCDIR)\wx\setup.h + +all: $(SETUP_H) $(OUTPUTDIR) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC + +$(ARCHINCDIR)\wx: + mkdir $(ARCHINCDIR) + mkdir $(ARCHINCDIR)\wx + +$(OUTPUTDIR): + mkdir $(OUTPUTDIR) + +$(SETUP_H): $(WXDIR)\include\wx\msw\setup.h $(ARCHINCDIR)\wx + copy $(WXDIR)\include\wx\msw\setup.h $@ + +LBCFILE=$(OUTPUTDIR)\wx$(TOOLKIT).lbc +$(LIBTARGET) : $(OBJECTS) + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) + + +clean: .SYMBOLIC $(EXTRATARGETSCLEAN) + -erase $(OUTPUTDIR)\*.obj + -erase $(LIBTARGET) + -erase $(OUTPUTDIR)\*.pch + -erase $(OUTPUTDIR)\*.err + -erase $(OUTPUTDIR)\*.lbc + +cleanall: clean + -erase $(LBCFILE) + +#${ + $_ = $project{"WXMSWOBJS"}; + my @objs = split; + foreach (@objs) { + $text .= "\$(OUTPUTDIR)\\" . $_ . ': $('; + s/\.obj$//; + $text .= 'MSWDIR)\\'; + + my $suffix, $cc; + if ( $project{"WXCOBJS"} =~ /\b\Q$_\E\b/ ) { + $suffix = "c"; + $cc="CC"; + $flags="CFLAGS"; + } + else { + $suffix = "cpp"; + $cc="CXX"; + $flags="CXXFLAGS"; + } + $text .= $_ . ".$suffix\n" . + " *\$($cc) \$($flags) \$<" . "\n\n"; + } +#$} + +######################################################## +# Common objects (always compiled) + +#${ + $_ = $project{"WXCOMMONOBJS"}; + my @objs = split; + foreach (@objs) { + $text .= "\$(OUTPUTDIR)\\" . $_; + s/\.obj$//; + $text .= ': $(COMMDIR)\\'; + my $suffix, $cc; + if ( $project{"WXCOBJS"} =~ /\b\Q$_\E\b/ ) { + $suffix = "c"; + $cc="CC"; + $flags="CFLAGS"; + } + else { + $suffix = "cpp"; + $cc="CXX"; + $flags="CXXFLAGS"; + } + $text .= $_ . ".$suffix\n" . + " *\$($cc) \$($flags) \$<" . "\n\n"; + } +#$} + +zlib: .SYMBOLIC + cd $(WXDIR)\src\zlib + wmake -f makefile.wat all + cd $(WXDIR)\src\msw + +clean_zlib: .SYMBOLIC + cd $(WXDIR)\src\zlib + 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=watbase +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 makebase.wat + copy makebase.wat $(WXDIR)\src\msw diff --git a/distrib/msw/tmake/wxVersion.pm b/distrib/msw/tmake/wxVersion.pm new file mode 100644 index 0000000000..842d0291b2 --- /dev/null +++ b/distrib/msw/tmake/wxVersion.pm @@ -0,0 +1,53 @@ +package wxVersion; + +=head1 NAME + +wxVersion + +=head1 SYNOPSIS + + use wxVersion qw(GetVersion); + +=head1 METHODS + +=cut + +use strict; + +use base 'Exporter'; +use vars qw(@EXPORT_OK); + +@EXPORT_OK = qw(GetVersion); + +sub GetVersion() +{ + my $filename = "../../../include/wx/version.h"; + open(VERSION_H, $filename) or die "Can't open $filename: $!\n"; + + my %versions; + my $numGot = 0; + + while ( defined($_ = ) ) { + chomp; + + if ( /\s*#define\s+wxMAJOR_VERSION\s+(\d+)/ ) { + $versions{'MAJOR'} = $1; + $numGot++; + } + elsif ( /\s*#define\s+wxMINOR_VERSION\s+(\d+)/ ) { + $versions{'MINOR'} = $1; + $numGot++; + } + elsif ( /\s*#define\s+wxRELEASE_NUMBER\s+(\d+)/ ) { + $versions{'MICRO'} = $1; + $numGot++; + } + + last if $numGot == 3 # we've got everything we wanted + } + + $numGot == 3 or die "Failed to read the version from $filename.\n"; + + return %versions; +} + diff --git a/distrib/msw/tmake/x11.t b/distrib/msw/tmake/x11.t index f493412685..fd4ebb3957 100644 --- a/distrib/msw/tmake/x11.t +++ b/distrib/msw/tmake/x11.t @@ -13,8 +13,6 @@ IncludeTemplate("filelist.t"); #! find all our sources - $project{"COMMONOBJS"} .= "parser.o "; - foreach $file (sort keys %wxX11) { ($fileobj = $file) =~ s/cp?p?$/\o/; diff --git a/distrib/msw/vc.rsp b/distrib/msw/vc.rsp index 940fdff5ba..19a903d074 100644 --- a/distrib/msw/vc.rsp +++ b/distrib/msw/vc.rsp @@ -51,6 +51,8 @@ samples/db/db.dsw samples/dialogs/dialogs.dsp samples/dialogs/dialogs.dsw +samples/dialogs/dialogsUniv.dsp +samples/dialogs/dialogsUniv.dsw samples/dialup/dialup.dsp samples/dialup/dialup.dsw @@ -245,6 +247,7 @@ samples/wizard/wizard.dsw samples/widgets/widgets.dsp samples/widgets/widgets.dsw samples/widgets/widgetsUniv.dsp +samples/widgets/widgetsUniv.dsw samples/opengl/cube/cube.dsp samples/opengl/cube/cube.dsw @@ -285,6 +288,8 @@ utils/helpgen/src/HelpGenVC.dsw utils/helpview/src/helpview.dsp utils/helpview/src/helpview.dsw +utils/helpview/src/client.dsp +utils/helpview/src/client.dsw contrib/src/ogl/OglVC.dsp contrib/src/ogl/OglVC.dsw diff --git a/distrib/msw/zipdistinno.bat b/distrib/msw/zipdistinno.bat index 41d5b8e024..f63c9eb66f 100755 --- a/distrib/msw/zipdistinno.bat +++ b/distrib/msw/zipdistinno.bat @@ -7,7 +7,7 @@ set webfiles=c:\wx2dev\wxWebSite set inno=0 Rem Set this to the required version -set version=2.3.3 +set version=2.4.0 if "%src" == "" goto usage if "%dest" == "" goto usage @@ -45,7 +45,7 @@ if direxist %dest\wx erase /sxyz %dest\wx\ if not direxist %dest mkdir %dest if direxist %dest%\wxWindows-%version% erase /sxyz %dest%\wxWindows-%version% -# Copy FAQ from wxWebSite CVS +Rem Copy FAQ from wxWebSite CVS if not direxist %webfiles% echo Error - %webfiles% does not exist if not direxist %webfiles% goto end echo Copying FAQ and other files from %webfiles @@ -56,6 +56,7 @@ copy %webfiles%\site\i18n.htm %src\docs\html Rem Copy setup0.h files to setup.h copy %src%\include\wx\os2\setup0.h %src%\include\wx\os2\setup.h copy %src%\include\wx\msw\setup0.h %src%\include\wx\msw\setup.h +copy %src%\include\wx\univ\setup0.h %src%\include\wx\univ\setup.h cd %src% echo Zipping... @@ -118,6 +119,8 @@ zip32 -u -@ %dest%\wxMac-%version%.zip < %src%\distrib\msw\stc.rsp zip32 -u -@ %dest%\wxMac-%version%.zip < %src%\distrib\msw\contrib.rsp zip32 -u -@ %dest%\wxMac-%version%.zip < %src%\distrib\msw\makefile.rsp +zip32 -@ %dest%\wxWindows-%version%-CW-Mac.zip < %src%\distrib\msw\cw_mac.rsp + erase /Y %src%\include\wx\setup.h if direxist %dest%\wxWindows-%version% erase /sxyz %dest%\wxWindows-%version% @@ -153,51 +156,71 @@ zip32 -@ -u %dest\wxWindows-%version%-win.zip < %src\distrib\msw\utils.rsp zip32 -@ -u %dest\wxWindows-%version%-win.zip < %src\distrib\msw\utilmake.rsp zip32 -@ -u %dest\wxWindows-%version%-win.zip < %src\distrib\msw\univ.rsp +echo Re-archiving wxWindows-%version%-win.zip call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-win.zip wxWindows-%version% %dest% -zip32 -d %dest%\wxWindows-%version%-win.zip %dest%/src/gtk/descrip.mms %dest%/src/motif/descrip.mms +echo Removing .mms files +zip32 -d %dest%\wxWindows-%version%-win.zip wxWindows-%version%/src/gtk/descrip.mms wxWindows-%version%/src/motif/descrip.mms +echo Creating %dest\wxWindows-%version%-DocSource.zip zip32 -@ %dest\wxWindows-%version%-DocSource.zip < %src\distrib\msw\docsrc.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-DocSource.zip wxWindows-%version% %dest% +echo Creating %dest\wxWindows-%version%-WinHelp.zip zip32 -@ %dest\wxWindows-%version%-WinHelp.zip < %src\distrib\msw\wx_hlp.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-WinHelp.zip wxWindows-%version% %dest% +echo Creating %dest\wxWindows-%version%-HTML.zip zip32 -@ %dest\wxWindows-%version%-HTML.zip < %src\distrib\msw\wx_html.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-HTML.zip wxWindows-%version% %dest% +echo Creating %dest\wxWindows-%version%-PDF.zip zip32 -@ %dest\wxWindows-%version%-PDF.zip < %src\distrib\msw\wx_pdf.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-PDF.zip wxWindows-%version% %dest% Rem zip32 -@ %dest\wxWindows-%version%-Word.zip < %src\distrib\msw\wx_word.rsp Rem call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-Word.zip wxWindows-%version% %dest% +echo Creating %dest\wxWindows-%version%-HTB.zip zip32 -@ %dest\wxWindows-%version%-HTB.zip < %src\distrib\msw\wx_htb.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-HTB.zip wxWindows-%version% %dest% +echo Creating %dest\wxWindows-%version%-HTMLHelp.zip zip32 -@ %dest\wxWindows-%version%-HTMLHelp.zip < %src\distrib\msw\wx_chm.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-HTMLHelp.zip wxWindows-%version% %dest% +Rem Add Linuxy docs to a separate archive to be transported to Linux for the +Rem Linux-based releases +echo Creating %dest\wxWindows-%version%-LinuxDocs.zip +zip32 -@ %dest\wxWindows-%version%-LinuxDocs.zip < %src\distrib\msw\wx_html.rsp +zip32 -@ -u %dest\wxWindows-%version%-LinuxDocs.zip < %src\distrib\msw\wx_pdf.rsp +zip32 -@ -u %dest\wxWindows-%version%-LinuxDocs.zip < %src\distrib\msw\wx_htb.rsp + Rem PDF/HTML docs that should go into the Windows setup because Rem there are no WinHelp equivalents +echo Creating %dest\wxWindows-%version%-ExtraDoc.zip zip32 -@ %dest\wxWindows-%version%-ExtraDoc.zip < %src\distrib\msw\extradoc.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-ExtraDoc.zip wxWindows-%version% %dest% Rem zip up Univ-specific files +echo Creating %dest\wxWindows-%version%-Univ.zip zip32 -@ %dest\wxWindows-%version%-Univ.zip < %src\distrib\msw\univ.rsp call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-Univ.zip wxWindows-%version% %dest% rem VC++ project files +echo Creating %dest\wxWindows-%version%-VC.zip zip32 -@ %dest\wxWindows-%version%-VC.zip < %src\distrib\msw\vc.rsp -call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-VC.zip wxWindows-%version% %dest% +Rem call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-VC.zip wxWindows-%version% %dest% rem BC++ project files +echo Creating %dest\wxWindows-%version%-BC.zip zip32 -@ %dest\wxWindows-%version%-BC.zip < %src\distrib\msw\bc.rsp -call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-BC.zip wxWindows-%version% %dest% +Rem call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-BC.zip wxWindows-%version% %dest% rem CodeWarrior project files +echo Creating %dest\wxWindows-%version%-CW.zip zip32 -@ %dest\wxWindows-%version%-CW.zip < %src\distrib\msw\cw.rsp -call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-CW.zip wxWindows-%version% %dest% +Rem call %WXWIN%\distrib\msw\rearchive wxWindows-%version%-CW.zip wxWindows-%version% %dest% rem Dialog Editor source and binary Rem erase %dest\dialoged-source.zip @@ -238,11 +261,16 @@ Rem zip32 %dest\tex2rtf-win32-%version%.zip tex2rtf.* cd %dest -rem Unzip the Windows files into 'wxWindows-%version%' +rem Put all archives for transit to Linux in a zip file +echo Creating %dest\wxWindows-%version%-LinuxTransit.zip +erase %dest\wxWindows-%version%-LinuxTransit.zip +zip32 %dest\wxWindows-%version%-LinuxTransit.zip wxWindows-%version%-LinuxDocs.zip wxWindows-%version%-VC.zip wxWindows-%version%-CW-Mac.zip + +echo Unzipping the Windows files into wxWindows-%version% unzip32 -o wxWindows-%version%-win.zip -unzip32 -o wxWindows-%version%-VC.zip -unzip32 -o wxWindows-%version%-BC.zip +unzip32 -o wxWindows-%version%-VC.zip -d wxWindows-%version +unzip32 -o wxWindows-%version%-BC.zip -d wxWindows-%version unzip32 -o wxWindows-%version%-HTMLHelp.zip unzip32 -o wxWindows-%version%-ExtraDoc.zip Rem Need Word file, for Remstar DB classes diff --git a/distrib/msw/zipmac.bat b/distrib/msw/zipmac.bat index 2d18635834..a50770e1af 100755 --- a/distrib/msw/zipmac.bat +++ b/distrib/msw/zipmac.bat @@ -5,7 +5,7 @@ set src=%wxwin% set dest=%src%\deliver Rem Set this to the required version -set version=2.3.1 +set version=2.3.4 if "%src%" == "" goto usage if "%dest%" == "" goto usage diff --git a/distrib/msw/zipwxmac.bat b/distrib/msw/zipwxmac.bat index 2ae9621a16..472d01ccd4 100755 --- a/distrib/msw/zipwxmac.bat +++ b/distrib/msw/zipwxmac.bat @@ -7,7 +7,7 @@ set webfiles=c:\wx2dev\wxWebSite set stuffit="c:\Program Files\Aladdin Systems\StuffIt 7.5\StuffIt.exe" Rem Set this to the required version -set version=2.3.3 +set version=2.3.4 if "%src" == "" goto usage if "%dest" == "" goto usage @@ -47,10 +47,10 @@ zip32 -u -@ %dest%\wxMac-%version%.zip < %src%\distrib\msw\makefile.rsp erase /Y %src%\include\wx\setup.h -if direxist %dest%\wxWindows-%version% erase /sxyz %dest%\wxWindows-%version% +if direxist %dest%\wxMac-%version% erase /sxyz %dest%\wxMac-%version% -mkdir %dest%\wxWindows-%version% -cd %dest%\wxWindows-%version% +mkdir %dest%\wxMac-%version% +cd %dest%\wxMac-%version% unzip32 ..\wxMac-%version%.zip erase /Y src\gtk\descrip.mms src\motif\descrip.mms docs\pdf\*.pdf erase /SXY docs\html\dialoged docs\html\tex2rtf @@ -58,7 +58,9 @@ erase /SXY docs\html\dialoged docs\html\tex2rtf cd %dest% erase wxMac-%version%.zip -zip32 -r wxMac-%version%.zip wxWindows-%version%/* +zip32 -r wxMac-%version%.zip wxMac-%version%/* + +erase /sxyz %dest%\wxMac-%version% Rem echo Making StuffIt archive... Rem set stuffitcmd=%stuffit% -stuff -create wxMac-%version%.sit wxWindows-%version%\* diff --git a/distrib/msw/zipwxos2.bat b/distrib/msw/zipwxos2.bat index 5aeb6a40da..079245d0ff 100755 --- a/distrib/msw/zipwxos2.bat +++ b/distrib/msw/zipwxos2.bat @@ -5,7 +5,7 @@ set dest=%src\deliver set webfiles=c:\wx2dev\wxWebSite Rem Set this to the required version -set version=2.3.3 +set version=2.3.4 if "%src" == "" goto usage if "%dest" == "" goto usage @@ -44,10 +44,10 @@ zip32 -u -@ %dest%\wxOS2-%version%.zip < %src%\distrib\msw\makefile.rsp Rem erase /Y %src%\include\wx\setup.h -if direxist %dest%\wxWindows-%version% erase /sxyz %dest%\wxWindows-%version% +if direxist %dest%\wxOS2-%version% erase /sxyz %dest%\wxOS2-%version% -mkdir %dest%\wxWindows-%version% -cd %dest%\wxWindows-%version% +mkdir %dest%\wxOS2-%version% +cd %dest%\wxOS2-%version% unzip32 ..\wxOS2-%version%.zip echo Overwriting with OS2-specific versions of configure files... unzip32 -o %src%\distrib\os2\os2-specific.zip @@ -64,7 +64,8 @@ call %src%\distrib\msw\lower.bat cd %dest% erase wxOS2-%version%.zip -zip32 -r wxOS2-%version%.zip wxWindows-%version%/* +zip32 -r wxOS2-%version%.zip wxOS2-%version%/* +erase /sxyz wxOS2-%version% echo wxOS2 archived. diff --git a/distrib/os2/os2-specific.zip b/distrib/os2/os2-specific.zip index c1876468ee..1a77d0ed62 100644 Binary files a/distrib/os2/os2-specific.zip and b/distrib/os2/os2-specific.zip differ diff --git a/docs/base/readme.txt b/docs/base/readme.txt index 6f34c9d503..a728e74a27 100644 --- a/docs/base/readme.txt +++ b/docs/base/readme.txt @@ -25,20 +25,22 @@ 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. Requirements 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!) +(including Mac OS X), VMS and BeOS (this release couldn't be tested under +these platforms 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. +the project files for Microsoft Visual C++ 6.0 and make files for Borland C++ +for Win32 (any contributions are welcome!) -- but our Unix makefiles should +work with any compiler. + 2. Installing under Win32 ------------------------- @@ -58,6 +60,7 @@ b) Cygwin Please refer to the Unix section below c) Borland + Please refer to the docs/msw/install.txt. The console sample compiles and runs but does not pass all tests (04 sept 02) @@ -67,6 +70,7 @@ d) Other compilers Please contact us if you would like to help us with creating one for the compiler you use. + 3. Installing under Unix/BeOS ----------------------------- @@ -74,12 +78,13 @@ 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! +Please note that GNU make may be required to build wxBase, please use it if +you get any errors from the native Unix make. The recommended way to build wxBase is: % cd ..../wxWindows - % mkdir base-release + % mkdir base-release # or any other directory of your liking % cd base-release % ../configure # ignore the error messages about missing samples @@ -120,6 +125,6 @@ namely: Vadim Zeitlin -This file is accurate for the version 2.3.2 of wxBase. It was last modified on -Dec 11, 2001. +This file is accurate for the version 2.4.0 of wxBase. It was last modified on +Dec 24, 2002. diff --git a/docs/changes.txt b/docs/changes.txt index 56e0b2e446..5d74743a8d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -115,13 +115,13 @@ All (GUI): wxMSW: ! build system changed: setup.h is not a static file in include/wx any more - but is created as part of the build process under lib//wx/include + but is created as part of the build process under lib//wx where is of the form (msw|univ)[dll][u][d]. You'll need to update the include path in your make/project files appropriately. Furthermore, xpm.lib is no longer used by wxMSW, it was superseded by the wxXPMDecoder class. You'll need to remove all references to xpm.lib from your make/project files. Finally, the library names have changed as well and now - use the following consistent naming convention: wxmsw[u][d][ver].(lib|dll) + use the following consistent naming convention: wxmsw[ver][u][d].(lib|dll) where 'u' appears for Unicode version, 'd' -- for the debug one and version is only present for the DLLs builds. @@ -170,6 +170,81 @@ wxThread and related classes: OTHER CHANGES ============= +2.4.1 +----- + +All: + +- fixed wxLANGUAGE_CHINESE_TAIWAN to use zh_TW catalogs +- added missing wx/quantize.h to install + +Unix (GUI): + +- fixed the "close" button of dialogs under KDE 3.1 + +wxBase + +- compilation with wxUSE_ODBC=1 fixed (dbkeyg.h file was missing in the archive) +- bug in wxDateTime with timezones on systems with tm_gmtoff in struct tm fixed +- fixed bug in wxArray::Shrink() (Seth Manley) + +wxGTK: + +- added wxEVT_MENU_OPEN event generation +- fixed bug in generic file selector causing incomplete file extensions to + be appended to filenames with no extension + + +2.4.0 +----- + +wxMSW: + +- fixed loss of client data in wxChoice::SetString() + +wxGTK: + +- fixed wxMenu::Remove (John Skiff and Benjamin Williams) + +All: + +- Improved contrib/utils/convertrc parsing (David J. Cooke) +- Fixed handling of URLs and filenames in wxFileSystem +- Implemented alignment for wxGrid bool editor and renderer + +2.3.4 +----- + +All: + +- added (partial) Indonesian translations (Bambang Purnomosidi D. P.) +- added wxSizer::Show()/Hide() (Carl Godkin) +- fixed bugs in wxDateTime::SetToWeekDay()/GetWeek() + +Unix (Base/GUI): + +- minor OpenBSD compilation/linking fixes, now builds OOB under OpenBSD 3.1 +- don't include -I/usr/include nor -I/usr/local/include in wx-config output +- shared library symbols are now versioned on platforms that support it (Linux) + +wxGTK: + +- Further work for GTK 2.0 and Unicode support. +- Addition of native frame site grip. + +wxX11: + +- Unicode support through Pango library. + +wxMSW: + +- fixed crashes in wxListCtrl under XP +- added context menu for rich edit wxTextCtrl + +wxHTML: + +- fixed wxHTML to work in Unicode build + 2.3.3 ----- @@ -186,9 +261,6 @@ wxBase: after (non standard) STL hash_map - wxLocale now works in Unicode mode - wxLocale can now load message catalogs in arbitrary encoding -- fixed the bug related to the redrawing on resize introduced in 2.3.2 -- added static wxFontMapper::Get() accessor (use of wxTheFontMapper is now - deprecated) - added wxShutdown() function (Marco Cavallini) - added wxEXPLICIT macro - IPC classes improved and memory leaks fixed (Michael Fielding). @@ -218,7 +290,8 @@ All (GUI): wxHashTable - added IFF image handler - fixed using custom renderers in wxGrid which was broken in 2.3.2 -- support for multiple images in one file added to wxImage (TIFF, GIF and ICO formats) +- support for multiple images in one file added to wxImage + (TIFF, GIF and ICO formats) - support for CUR and ANI files in wxImage added (Chris Elliott) - wxTextCtrl::GetRange() added - added wxGetFontFromUser() convenience function @@ -243,10 +316,13 @@ All (GUI): (Rene Rivera). - Added wxTreeEvent::IsEditCancelled so the application can tell whether a label edit was cancelled. +- added static wxFontMapper::Get() accessor (use of wxTheFontMapper is now + deprecated) wxMSW: - small appearance fixes for native look under Windows XP +- fixed the bug related to the redrawing on resize introduced in 2.3.2 - fixed multiple bugs in wxExecute() with IO redirection - refresh the buttons properly when the window is resized (Hans Van Leemputten) - huge (40*) speed up in wxMask::Create() @@ -284,8 +360,7 @@ wxMSW: - don't fail to register remaining window classes if one fails to register - wxFontDialog effects only turned on if a valid colour was provided in wxFontData -- Added wxTE_LEFT, wxTE_CENTRE and wxTE_RIGHT flags for text - control alignment. +- Added wxTE_LEFT, wxTE_CENTRE and wxTE_RIGHT flags for text control alignment. - Bitmap printing uses 24 bits now, not 8. wxGTK: diff --git a/docs/gtk/install.txt b/docs/gtk/install.txt index e57ebdf5d1..2999a2995e 100644 --- a/docs/gtk/install.txt +++ b/docs/gtk/install.txt @@ -1,4 +1,4 @@ -wxWindows 2.3 for GTK installation +wxWindows 2.4 for GTK installation ---------------------------------- IMPORTANT NOTE: @@ -11,7 +11,7 @@ IMPORTANT NOTE: When sending bug reports tell us what version of wxWindows you are using (including the beta) and what compiler on what system. One - example: wxGTK 2.3.3, gcc 2.95.4, Redhat 6.2 + example: wxGTK 2.4.0, gcc 2.95.4, Redhat 6.2 * The simplest case ------------------- @@ -44,7 +44,7 @@ If you want to remove wxWindows on Unix you can do this: * The GTK+ 2 case ----------------- -wxGTK 2.3.3 has support for the new version 2.0.X of GTK+. This means +wxGTK 2.4.0 has support for the new version 2.0.X of GTK+. This means that wxGTK apps can now make use Unicode as the underlying encoding for all text operations. This is a very fundamental change and will need time to stabilize, so be careful. Anyways, after installing a @@ -73,7 +73,7 @@ such as for GTK and Motif, you can now build two complete libraries and use them concurrently. For this end, you have to create a directory for each build of wxWindows - you may also want to create different versions of wxWindows and test them concurrently. Most typically, this would be a version configured -with --enable-debug_flag and one without. Note, that only one build can +with --enable-debug and one without. Note, that only one build can currently be installed, so you'd have to use local version of the library for that purpose. @@ -94,7 +94,7 @@ cd .. md buildgtkd cd buildgtkd -../configure --with-gtk --enable-debug_flag +../configure --with-gtk --enable-debug make cd .. @@ -341,6 +341,12 @@ The following options handle the kind of library you want to build. must be compiled with the same debug options. + --enable-debug Same as --enable-debug_info and + --enable-debug_flag together. Unless you have + some very specific needs, you should use this + option instead of --enable-debug_info/flag ones + separately. + * Feature Options ----------------- diff --git a/docs/gtk/readme.txt b/docs/gtk/readme.txt index 7b954792f3..c110682f77 100644 --- a/docs/gtk/readme.txt +++ b/docs/gtk/readme.txt @@ -1,7 +1,7 @@ - Welcome to wxWindows/Gtk 2.3 + Welcome to wxWindows/Gtk 2.4 -you have downloaded version 2.3 of the GTK port of the +you have downloaded version 2.4 of the GTK port of the wxWindows GUI library. wxWindows no longer supports GTK 1.0 (as did some early diff --git a/docs/html/faq.htm b/docs/html/faq.htm index dc7bbb8f35..3bf0ff6ade 100644 --- a/docs/html/faq.htm +++ b/docs/html/faq.htm @@ -1,45 +1,49 @@ - + - -wxWindows 2 FAQ - + +wxWindows 2 FAQ + - + - +
- + wxWindows 2 FAQ
-

+

-Welcome to the wxWindows FAQ. Please select a category:

+Welcome to the wxWindows FAQ. Please select a category:

-

+

-For further information, please see the wxWindows Web site, -plus install.txt (per port), todo.txt (per port), and bugs.txt (all ports). -

+For further information, please see the +wxWindows Web site, +wxWiki +and install.txt (per port), todo.txt (per port), and bugs.txt (all ports) files +in your wxWindows installation. +

- + - + diff --git a/docs/html/faqgen.htm b/docs/html/faqgen.htm index 43776e0578..f75ce4688e 100644 --- a/docs/html/faqgen.htm +++ b/docs/html/faqgen.htm @@ -1,3 +1,4 @@ + @@ -25,15 +26,18 @@ See also top-level FAQ page.

List of questions in this category

+

How do I add an icon to my application?

+ +If you have Mac OS X, you have the icns editor somewhere in the +Utilities folder. Create an icon using this tool and DeRez it, so that you have a .r +file with a 'icns' resource with id (-16455). Include this .r file in +your project and in the CodeWarrior Settings add a check mark under Linker:Output +Flags/Finder Flags/Has Custom Icon. +

+ diff --git a/docs/html/faqmsw.htm b/docs/html/faqmsw.htm index 2c56fedb31..346e9de28d 100644 --- a/docs/html/faqmsw.htm +++ b/docs/html/faqmsw.htm @@ -1,3 +1,4 @@ + @@ -201,7 +202,8 @@ Statically-linked wxWindows 2 programs are smaller than wxWindows 1.xx programs, wxWindows 2 has been designed to reduce dependencies between classes, and other techniques. The linker will not include code from the library that is not (directly or indirectly) referenced -by your application. So for example, the 'minimal' sample is less than 300KB using VC++ 6.

+by your application. So for example, the 'minimal' sample is less than 500KB using VC++ 6 +(note that this figure may be greater for the latest version of wxWindows).

If you want to distribute really small executables, you can use Petite @@ -210,6 +212,12 @@ will shrink to a mere 250KB. With this sort of size, there is reduced incentive use DLLs. Another good compression tool is UPX.

+Please do not be surprised if MinGW produces a statically-linked minimal executable of 1 MB. Firstly, gcc +produces larger executables than some compilers. Secondly, this figure will +include most of the overhead of wxWindows, so as your application becomes more +complex, the overhead becomes proportionaly less significant. And thirdly, trading executable compactness +for the enormous increase in productivity you get with wxWindows is almost always well worth it. +

Is wxWindows compatible with MFC?

There is a sample which demonstrates MFC and wxWindows code co-existing in the same @@ -392,7 +400,11 @@ VZ This can happen if you have a child window intercepting EVT_CHAR events and swallowing all keyboard input. You should ensure that event.Skip() is called for all input that -isn'used by the event handler. +isn'used by the event handler.

+ +It can also happen if you append the submenu to the parent +menu {\it before} you have added your menu items. Do the append {\it after} adding +your items, or accelerators may not be registered properly.

Why can I not write to the HKLM part of the registry with wxRegConfig?

@@ -414,7 +426,7 @@ First, you can use wxRegKey directly, for example: regKey.SetName(idName); { - wxLogNull dummy; + wxLogNull dummy; if (!regKey.Create()) { idName = wxT("HKEY_CURRENT_USER\\SOFTWARE\\My Company\\My Product\\Stuff\\"); diff --git a/docs/html/i18n.htm b/docs/html/i18n.htm index b5fa8b7dd9..a82dd9277c 100644 --- a/docs/html/i18n.htm +++ b/docs/html/i18n.htm @@ -124,6 +124,13 @@ translations as of wxWindows 2.3. + + Greek + Done + Tsolakos Stavros + + + Hungarian Done @@ -131,6 +138,14 @@ translations as of wxWindows 2.3. + + Indonesian + Done + + Bambang Purnomosidi D. P. + + + Italian Done @@ -157,6 +172,7 @@ translations as of wxWindows 2.3. Ok Roman Rolinsky, Vadim Zeitlin + Andrew V. Samoilov @@ -179,6 +195,13 @@ translations as of wxWindows 2.3. Kaj G Backas + + Turkish + Ok + Hakki Dogusan + + +
@@ -196,15 +219,14 @@ translations. Here are the the steps you should follow:
  1. Get the latest version of the file locale/wxstd.po from the wxWindows source tree: if you're using cvs - or the daily - snapshots, you should already have it. Otherwise you can always + or the daily snapshots, + you should already have it. Otherwise you can always retrieve it directly from the cvs repository via the Web interface - - here. + here.
  2. Rename it to XY.po where "XY" is the 2 letter - - ISO country code for your language. + ISO 639-1 language code + for your language.
  3. Translate the strings in this file using either your favourite text editor or a specialized tool such as Vaclav Slavik's excellent diff --git a/docs/html/platform.htm b/docs/html/platform.htm index cb2e2d6feb..46ef6cbc89 100644 --- a/docs/html/platform.htm +++ b/docs/html/platform.htm @@ -1,6 +1,6 @@ - Platforms supported by wxWindows 2.x + Platforms supported by wxWindows 2.4 @@ -20,10 +20,11 @@

    -You will find below the list of all supported platforms for different ports of wxWindows 2.x (wxMSW/wxGTK/wxMotif ports -only). The cross icon in the third column doesn't mean that the platform is not supported, but just that wxWindows hasn't -been tested on it recently (the table is being updated for wxWindows 2.3.3 -currently). +You will find below the list of all supported platforms for different ports of +wxWindows 2.x (wxMSW/wxGTK/wxMotif ports only). The cross icon in the third +column doesn't mean that the platform is not supported, but just that +wxWindows hasn't been tested on it recently (the table is being updated for +wxWindows 2.4.0 currently).

    See also: @@ -86,9 +87,20 @@ often don't work. wxMotif with gcc 2.95Ok
    with OpenMotif +
    All BSD systems tests are for wxGTK using gcc. FreeBSD - wxGTK with gccOkVZLimited thread support on older systems + version from 3.2 to 4.6, x86OkVZ
    + + + +NetBSD + 1.6, AlphaOkVZ
    + + + +OpenBSD + 3.1, AlphaOkVZSome problems with shared libraries, ok with static ones diff --git a/docs/latex/wx/category.tex b/docs/latex/wx/category.tex index 85ddafa64c..5a77af4789 100644 --- a/docs/latex/wx/category.tex +++ b/docs/latex/wx/category.tex @@ -93,6 +93,7 @@ that are not static can have \helpref{validators}{wxvalidator} associated with t \twocolitem{\helpref{wxStaticBox}{wxstaticbox}}{A static, or group box for visually grouping related controls} \twocolitem{\helpref{wxListBox}{wxlistbox}}{A list of strings for single or multiple selection} \twocolitem{\helpref{wxListCtrl}{wxlistctrl}}{A control for displaying lists of strings and/or icons, plus a multicolumn report view} +\twocolitem{\helpref{wxListView}{wxlistview}}{A simpler interface ({\it fa\c{c}ade} for wxListCtrl in report mode} \twocolitem{\helpref{wxTabCtrl}{wxtabctrl}}{Manages several tabs} \twocolitem{\helpref{wxTextCtrl}{wxtextctrl}}{Single or multiline text editing control} \twocolitem{\helpref{wxTreeCtrl}{wxtreectrl}}{Tree (hierarchy) control} @@ -304,11 +305,11 @@ creation of objects given class names. \twocolitem{\helpref{RTTI macros}{rttimacros}}{Macros for manipulating run-time information} \end{twocollist} -{\large {\bf Debugging features}} +{\large {\bf Logging features}} \overview{Overview}{wxlogoverview} -wxWindows provides several classes and functions for the message logging. +wxWindows provides several classes and functions for message logging. Please see the \helpref{wxLog overview}{wxlogoverview} for more details. \twocolwidtha{6cm} diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex index 6e6487a91f..646ee733c3 100644 --- a/docs/latex/wx/classes.tex +++ b/docs/latex/wx/classes.tex @@ -174,6 +174,7 @@ \input listctrl.tex \input listevt.tex \input listitem.tex +\input listview.tex \input locale.tex \input log.tex \input longlong.tex diff --git a/docs/latex/wx/cmdproc.tex b/docs/latex/wx/cmdproc.tex index 76310b5d71..3dbce86100 100644 --- a/docs/latex/wx/cmdproc.tex +++ b/docs/latex/wx/cmdproc.tex @@ -20,13 +20,13 @@ if you want different behaviour. \membersection{wxCommandProcessor::wxCommandProcessor} -\func{}{wxCommandProcessor}{\param{int}{ maxCommands = 100}} +\func{}{wxCommandProcessor}{\param{int}{ maxCommands = $-1$}} Constructor. -{\it maxCommands} defaults to a rather arbitrary 100, but can be set from 1 to any integer. -If your wxCommand classes store a lot of data, you may wish the limit the number of -commands stored to a smaller number. +{\it maxCommands} may be set to a positive integer to limit the number of +commands stored to it, otherwise (and by default) the list of commands can grow +arbitrarily. \membersection{wxCommandProcessor::\destruct{wxCommandProcessor}} @@ -46,9 +46,9 @@ Returns TRUE if the currently-active command can be undone, FALSE otherwise. Deletes all the commands in the list and sets the current command pointer to NULL. -\membersection{wxCommandProcessor::Do} +\membersection{wxCommandProcessor::Redo} -\func{virtual bool}{Do}{\void} +\func{virtual bool}{Redo}{\void} Executes (redoes) the current command (the command that has just been undone if any). @@ -76,12 +76,24 @@ Returns the edit menu associated with the command processor. Returns the string that will be appended to the Redo menu item. +\membersection{wxCommandProcessor::GetRedoMenuLabel}\label{wxcommandprocessorgetredomenulabel} + +\constfunc{wxString}{GetRedoMenuLabel}{\void} + +Returns the string that will be shown for the redo menu item. + \membersection{wxCommandProcessor::GetUndoAccelerator}\label{wxcommandprocessorgetundoaccelerator} \constfunc{const wxString\&}{GetUndoAccelerator}{\void} Returns the string that will be appended to the Undo menu item. +\membersection{wxCommandProcessor::GetUndoMenuLabel}\label{wxcommandprocessorgetundomenulabel} + +\constfunc{wxString}{GetUndoMenuLabel}{\void} + +Returns the string that will be shown for the undo menu item. + \membersection{wxCommandProcessor::Initialize} \func{virtual void}{Initialize}{\void} @@ -99,6 +111,13 @@ menu as appropriate. Set this to NULL if the menu is about to be destroyed and command operations may still be performed, or the command processor may try to access an invalid pointer. +\membersection{wxCommandProcessor::SetMenuStrings} + +\func{void}{SetMenuStrings}{\void} + +Sets the menu labels according to the currently set menu and the current +command state. + \membersection{wxCommandProcessor::SetRedoAccelerator}\label{wxcommandprocessorsetredoaccelerator} \func{void}{SetRedoAccelerator}{\param{const wxString\&}{accel}} diff --git a/docs/latex/wx/combobox.tex b/docs/latex/wx/combobox.tex index 1d2b124cda..88299b2a65 100644 --- a/docs/latex/wx/combobox.tex +++ b/docs/latex/wx/combobox.tex @@ -37,6 +37,8 @@ See also \helpref{window styles overview}{windowstyles}. \begin{twocollist}\itemsep=0pt \twocolitem{{\bf EVT\_COMBOBOX(id, func)}}{Process a wxEVT\_COMMAND\_COMBOBOX\_SELECTED event, when an item on the list is selected.} +\twocolitem{{\bf EVT\_TEXT\_ENTER(id, func)}}{Process a wxEVT\_COMMAND\_TEXT\_ENTER event, +when return is pressed in the combobox.} \twocolitem{{\bf EVT\_TEXT(id, func)}}{Process a wxEVT\_COMMAND\_TEXT\_UPDATED event, when the combobox text changes.} \end{twocollist} @@ -67,6 +69,8 @@ Constructor, creating and showing a combobox. \docparam{id}{Window identifier. A value of -1 indicates a default value.} +\docparam{value}{Initial selection string. An empty string indicates no selection.} + \docparam{pos}{Window position.} \docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized diff --git a/docs/latex/wx/config.tex b/docs/latex/wx/config.tex index 9d8c865fba..b00e4624c6 100644 --- a/docs/latex/wx/config.tex +++ b/docs/latex/wx/config.tex @@ -368,18 +368,13 @@ a local or global config file is created or used. If the flag is present but the parameter is empty, the parameter will be set to a default. If the parameter is present but the style flag not, the relevant flag will be added to the style. For wxFileConfig you can also add wxCONFIG\_USE\_RELATIVE\_PATH -by logicaly or'ing it to either of the \_FILE options to tell wxFileConfig to +by logically or'ing it to either of the \_FILE options to tell wxFileConfig to use relative instead of absolute paths. For wxFileConfig, you can also add wxCONFIG\_USE\_NO\_ESCAPE\_CHARACTERS which will turn off character escaping for the values of entries stored in the config file: for example -a {\it foo} key with some backslash characters will be stored as -\begin{verbatim} - foo=C:\mydir -\end{verbatim} -instead of the usual storage of -\begin{verbatim} - foo=C:\\mydir -\end{verbatim} +a {\it foo} key with some backslash characters will be stored as {\tt foo=C:$\backslash$mydir} instead +of the usual storage of {\tt foo=C:$\backslash\backslash$mydir}. + The wxCONFIG\_USE\_NO\_ESCAPE\_CHARACTERS style can be helpful if your config file must be read or written to by a non-wxWindows program (which might not understand the escape characters). Note, however, that if diff --git a/docs/latex/wx/critsect.tex b/docs/latex/wx/critsect.tex index 2451e97d04..545954a1d8 100644 --- a/docs/latex/wx/critsect.tex +++ b/docs/latex/wx/critsect.tex @@ -1,6 +1,6 @@ \section{\class{wxCriticalSection}}\label{wxcriticalsection} -A critical section object is used for the same exactly purpose as +A critical section object is used for exactly the same purpose as \helpref{mutexes}{wxmutex}. The only difference is that under Windows platform critical sections are only visible inside one process, while mutexes may be shared between processes, so using critical sections is slightly more diff --git a/docs/latex/wx/datetime.tex b/docs/latex/wx/datetime.tex index 3baa8dab1c..9de18864b2 100644 --- a/docs/latex/wx/datetime.tex +++ b/docs/latex/wx/datetime.tex @@ -235,6 +235,7 @@ values were correct as constructors can not return an error code. \helpref{Set(double jdn)}{wxdatetimesetjdn}\\ \helpref{Set(h, m, s, ms)}{wxdatetimesettime}\\ \helpref{Set(day, mon, year, h, m, s, ms)}{wxdatetimesetdate}\\ +\helpref{SetFromDOS(unsigned long ddt)}{wxdatetimesetfromdos}\\ \helpref{ResetTime}{wxdatetimeresettime}\\ \helpref{SetYear}{wxdatetimesetyear}\\ \helpref{SetMonth}{wxdatetimesetmonth}\\ @@ -268,7 +269,8 @@ some more complicated calculations to find the answer are under the \helpref{GetWeekOfMonth}{wxdatetimegetweekofmonth}\\ \helpref{GetYearDay}{wxdatetimegetyearday}\\ \helpref{IsWorkDay}{wxdatetimeisworkday}\\ -\helpref{IsGregorianDate}{wxdatetimeisgregoriandate} +\helpref{IsGregorianDate}{wxdatetimeisgregoriandate}\\ +\helpref{GetAsDOS}{wxdatetimegetasdos} \membersection{Date comparison} @@ -882,6 +884,24 @@ Returns {\tt TRUE} if the given date os later than the date of adoption of the Gregorian calendar in the given country (and hence the Gregorian calendar calculations make sense for it). +%%%%%%%%%%%%%%%%%%%%%% dos date and time format %%%%%%%%%%%%%%%%%%%%%%% + +\membersection{wxDateTime::SetFromDOS}\label{wxdatetimesetfromdos} + +\func{wxDateTime\&}{Set}{\param{unsigned long }{ddt}} + +Sets the date from the date and time in +\urlref{DOS}{http://developer.novell.com/ndk/doc/smscomp/index.html?page=/ndk/doc/smscomp/sms\_docs/data/hc2vlu5i.html} +format. + +\membersection{wxDateTime::GetAsDOS}\label{wxdatetimegetasdos} + +\constfunc{unsigned long}{GetAsDOS}{\void} + +Returns the date and time in +\urlref{DOS}{http://developer.novell.com/ndk/doc/smscomp/index.html?page=/ndk/doc/smscomp/sms\_docs/data/hc2vlu5i.html} +format. + %%%%%%%%%%%%%%%%%%%%%%%%%%% comparison %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \membersection{wxDateTime::IsEqualTo}\label{wxdatetimeisequalto} @@ -1127,7 +1147,7 @@ This function returns the time representation in the ISO 8601 format \membersection{wxDateTime::SetToWeekDayInSameWeek}\label{wxdatetimesettoweekdayinsameweek} -\func{wxDateTime\&}{SetToWeekDayInSameWeek}{\param{WeekDay }{weekday}} +\func{wxDateTime\&}{SetToWeekDayInSameWeek}{\param{WeekDay }{weekday}, \param{WeekFlags}{flags = {\tt Monday\_First}}} Adjusts the date so that it will still lie in the same week as before, but its week day will be the given one. @@ -1136,9 +1156,9 @@ Returns the reference to the modified object itself. \membersection{wxDateTime::GetWeekDayInSameWeek}\label{wxdatetimegetweekdayinsameweek} -\constfunc{wxDateTime}{GetWeekDayInSameWeek}{\param{WeekDay }{weekday}} +\constfunc{wxDateTime}{GetWeekDayInSameWeek}{\param{WeekDay }{weekday}, \param{WeekFlags}{flags = {\tt Monday\_First}}} -Returns the copy of this object to which +Returns the copy of this object to which \helpref{SetToWeekDayInSameWeek}{wxdatetimesettoweekdayinsameweek} was applied. @@ -1216,7 +1236,7 @@ Returns the copy of this object to which \membersection{wxDateTime::SetToTheWeek}\label{wxdatetimesettotheweek} -\func{bool}{SetToTheWeek}{\param{wxDateTime\_t }{numWeek}, \param{WeekDay }{weekday = Mon}} +\func{bool}{SetToTheWeek}{\param{wxDateTime\_t }{numWeek}, \param{WeekDay }{weekday = Mon}, \param{WeekFlags}{flags = {\tt Monday\_First}}} Set the date to the given {\it weekday} in the week with given number {\it numWeek}. The number should be in range $1\ldots53$ and {\tt FALSE} will @@ -1225,7 +1245,7 @@ date was changed successfully. \membersection{wxDateTime::GetWeek}\label{wxdatetimegetweek} -\constfunc{wxDateTime}{GetWeek}{\param{wxDateTime\_t }{numWeek}, \param{WeekDay }{weekday = Mon}} +\constfunc{wxDateTime}{GetWeek}{\param{wxDateTime\_t }{numWeek}, \param{WeekDay }{weekday = Mon}, \param{WeekFlags}{flags = {\tt Monday\_First}}} Returns the copy of this object to which \helpref{SetToTheWeek}{wxdatetimesettotheweek} was applied. diff --git a/docs/latex/wx/dialog.tex b/docs/latex/wx/dialog.tex index d598319fa4..4262dbd4d1 100644 --- a/docs/latex/wx/dialog.tex +++ b/docs/latex/wx/dialog.tex @@ -65,7 +65,7 @@ the dialog to respond to system close events. \twocolwidtha{5cm} \begin{twocollist}\itemsep=0pt \twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the dialog box.} -\twocolitem{\windowstyle{wxDEFAULT\_DIALOG\_STYLE}}{Equivalent to a combination of wxCAPTION, wxSYSTEM\_MENU and wxTHICK\_FRAME} +\twocolitem{\windowstyle{wxDEFAULT\_DIALOG\_STYLE}}{Equivalent to a combination of wxCAPTION and wxSYSTEM\_MENU (the latter is not used under Unix)} \twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Display a resizeable frame around the window.} \twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Display a system menu.} \twocolitem{\windowstyle{wxTHICK\_FRAME}}{Display a thick frame around the window.} diff --git a/docs/latex/wx/docmanag.tex b/docs/latex/wx/docmanag.tex index 5666e49938..dab5d749b2 100644 --- a/docs/latex/wx/docmanag.tex +++ b/docs/latex/wx/docmanag.tex @@ -358,6 +358,12 @@ followed by a file selector. This function is used in wxDocManager::CreateDocument. +\perlnote{In wxPerl {\tt templates} is a reference to a list of templates. +If you override this method in your document manager it must return +two values, eg:\par + (doctemplate, path) = My::DocManager->SelectDocumentPath( ... ); +} + \membersection{wxDocManager::SelectDocumentType} \func{wxDocTemplate *}{SelectDocumentType}{\param{wxDocTemplate **}{templates}, @@ -375,6 +381,8 @@ then this parameter indicates whether the list of templates that the user will have to choose from is sorted or not when shown the choice box dialog. Default is FALSE.} +\perlnote{In wxPerl {\tt templates} is a reference to a list of templates.} + \membersection{wxDocManager::SelectViewType} \func{wxDocTemplate *}{SelectViewType}{\param{wxDocTemplate **}{templates}, @@ -394,6 +402,8 @@ then this parameter indicates whether the list of templates that the user will have to choose from is sorted or not when shown the choice box dialog. Default is FALSE.} +\perlnote{In wxPerl {\tt templates} is a reference to a list of templates.} + \membersection{wxDocManager::SetLastDirectory}\label{wxdocmanagersetlastdirectory} \func{void}{SetLastDirectory}{\param{const wxString\&}{ dir}} diff --git a/docs/latex/wx/doctempl.tex b/docs/latex/wx/doctempl.tex index 9cd7334232..8d817852db 100644 --- a/docs/latex/wx/doctempl.tex +++ b/docs/latex/wx/doctempl.tex @@ -121,6 +121,24 @@ member to return a new view instance on demand. \item wxDEFAULT\_TEMPLATE\_FLAGS Defined as wxTEMPLATE\_VISIBLE. \end{itemize} +\perlnote{In wxPerl {\tt docClassInfo} and {\tt viewClassInfo} can be +either {\tt Wx::ClassInfo} objects or strings which contain the name +of the perl packages which are to be used as {\tt Wx::Document} and +{\tt Wx::View} classes (they must have a constructor named {\tt +new}):\par +\indented{2cm}{\begin{twocollist} +\twocolitem{{\bf Wx::DocTemplate->new( docmgr, descr, filter, dir, +ext, docTypeName, viewTypeName, docClassInfo, viewClassInfo, flags +)}}{ will construct document and view objects from the class information} +\twocolitem{{\bf Wx::DocTemplate->new( docmgr, descr, filter, dir, +ext, docTypeName, viewTypeName, docClassName, viewClassName, flags +)}}{ will construct document and view objects from perl packages} +\twocolitem{{\bf Wx::DocTemplate->new( docmgr, descr, filter, dir, +ext, docTypeName, viewTypeName )}}{ +{\tt Wx::DocTemplate::CreateDocument()} and +{\tt Wx::DocTemplate::CreateView()} must be overridden} +\end{twocollist}}} + \membersection{wxDocTemplate::\destruct{wxDocTemplate}} \func{void}{\destruct{wxDocTemplate}}{\void} diff --git a/docs/latex/wx/dragimag.tex b/docs/latex/wx/dragimag.tex index 72cca31294..42eab1e207 100644 --- a/docs/latex/wx/dragimag.tex +++ b/docs/latex/wx/dragimag.tex @@ -28,6 +28,14 @@ override \helpref{wxDragImage::DoDrawImage}{wxdragimagedodrawimage} and Please see {\tt samples/dragimag} for an example. +%\wxheading{Notes} +% +%Using the native Windows implementation, you must supply an image with a mask, or +%the image will not show when dragged. It is not clear if this is a bug +%in Windows or in the wxDragImage implementation. You can add a mask +%with a call to wxImage::SetMaskColour, passing RGB values not likely +%to be in the image. [CURED by creating the ImageList with ILC_MASK] + \wxheading{Derived from} \helpref{wxObject}{wxobject} diff --git a/docs/latex/wx/encconv.tex b/docs/latex/wx/encconv.tex index 39e14fbfd9..f1fd19c595 100644 --- a/docs/latex/wx/encconv.tex +++ b/docs/latex/wx/encconv.tex @@ -5,9 +5,20 @@ \section{\class{wxEncodingConverter}}\label{wxencodingconverter} -This class is capable of converting strings between any two +This class is capable of converting strings between two 8-bit encodings/charsets. It can also convert from/to Unicode (but only -if you compiled wxWindows with wxUSE\_WCHAR\_T set to 1). +if you compiled wxWindows with wxUSE\_WCHAR\_T set to 1). Only limited subset +of encodings in supported by wxEncodingConverter: +{\tt wxFONTENCODING\_ISO8859\_1..15}, {\tt wxFONTENCODING\_CP1250..1257} and +{\tt wxFONTENCODING\_KOI8}. + +\wxheading{Note} + +Please use \helpref{wxMBConv classes}{mbconvclasses} instead +if possible. \helpref{wxCSConv}{wxcsconv} has much better support for various +encodings than wxEncodingConverter. wxEncodingConverter is useful only +if you rely on {\tt wxCONVERT\_SUBSTITUTE} mode of operation (see +\helpref{Init}{wxencodingconverterinit}). \wxheading{Derived from} diff --git a/docs/latex/wx/filedlg.tex b/docs/latex/wx/filedlg.tex index 6e95b41ec0..36657dadfe 100644 --- a/docs/latex/wx/filedlg.tex +++ b/docs/latex/wx/filedlg.tex @@ -38,6 +38,13 @@ types of file with a description for each, such as: "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif" \end{verbatim} +It must be noted that wildcard support in the native Motif file +dialog is quite limited: only one alternative is supported, +and it is displayed without the descriptive test; ``BMP files (*.bmp)|*.bmp'' +is displayed as ``*.bmp'', and both +``BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif'' and +``Image files|*.bmp;*.gif'' are errors. + \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxFileDialog::wxFileDialog}\label{wxfiledialogconstr} @@ -58,7 +65,10 @@ Constructor. Use \helpref{wxFileDialog::ShowModal}{wxfiledialogshowmodal} to sho \docparam{defaultFile}{The default filename, or the empty string.} -\docparam{wildcard}{A wildcard, such as ``*.*" or ``BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif".} +\docparam{wildcard}{A wildcard, such as ``*.*" or ``BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif". + +Note that the native Motif dialog has some limitations with respect to +wildcards; see the Remarks section above.} \docparam{style}{A dialog style. A bitlist of: @@ -164,7 +174,7 @@ Sets the default filename. \func{void}{SetFilterIndex}{\param{int }{filterIndex}} -Sets the default filter index, starting from zero. Windows only. +Sets the default filter index, starting from zero. \membersection{wxFileDialog::SetMessage}\label{wxfiledialogsetmessage} @@ -192,6 +202,9 @@ Sets the wildcard, which can contain multiple file types, for example: ``BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif" +Note that the native Motif dialog has some limitations with respect to +wildcards; see the Remarks section above. + \membersection{wxFileDialog::ShowModal}\label{wxfiledialogshowmodal} \func{int}{ShowModal}{\void} diff --git a/docs/latex/wx/filename.tex b/docs/latex/wx/filename.tex index f56df752b3..1749fbdcfb 100644 --- a/docs/latex/wx/filename.tex +++ b/docs/latex/wx/filename.tex @@ -89,7 +89,7 @@ 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} +which undoes what \helpref{Normalize(wxPATH\_NORM\_DOTS)}{wxfilenamenormalize} does. Other functions returning information about the file format provided by this @@ -598,7 +598,7 @@ Deletes the specified directory from the file system. \membersection{wxFileName::SameAs}\label{wxfilenamesameas} -\func{bool}{SameAs}{\param{const wxFileName\& }{filepath}, \param{wxPathFormat }{format = wxPATH\_NATIVE}} +\constfunc{bool}{SameAs}{\param{const wxFileName\& }{filepath}, \param{wxPathFormat }{format = wxPATH\_NATIVE}} Compares the filename using the rules of this platform. @@ -674,9 +674,19 @@ Assigns the new value to this filename object. \membersection{wxFileName::operator==}\label{wxfilenameoperatorequal} -\func{bool operator}{operator==}{\param{const wxFileName\& }{filename}} +\constfunc{bool operator}{operator==}{\param{const wxFileName\& }{filename}} -\func{bool operator}{operator==}{\param{const wxString\& }{filename}} +\constfunc{bool operator}{operator==}{\param{const wxString\& }{filename}} -Returns {\tt TRUE} if the filenames are equal for the native file format. +Returns {\tt TRUE} if the filenames are equal. The string {\it filenames} is +interpreted as a path in the native filename format. + +\membersection{wxFileName::operator!=}\label{wxfilenameoperatornotequal} + +\constfunc{bool operator}{operator!=}{\param{const wxFileName\& }{filename}} + +\constfunc{bool operator}{operator!=}{\param{const wxString\& }{filename}} + +Returns {\tt TRUE} if the filenames are different. The string {\it filenames} +is interpreted as a path in the native filename format. diff --git a/docs/latex/wx/filesys.tex b/docs/latex/wx/filesys.tex index 86d292a871..10a5c6e082 100644 --- a/docs/latex/wx/filesys.tex +++ b/docs/latex/wx/filesys.tex @@ -59,28 +59,28 @@ Sets the current location. {\it location} parameter passed to \helpref{OpenFile}{wxfilesystemopenfile} is relative to this path. {\bf Caution! } Unless {\it is\_dir} is TRUE the {\it location} parameter -is not directory name but the name of the file in this directory!! All these -commands change path to "dir/subdir/" : +is not the directory name but the name of the file in this directory. All these +commands change the path to "dir/subdir/": \begin{verbatim} -ChangePathTo("dir/subdir/xh.htm"); -ChangePathTo("dir/subdir", TRUE); -ChangePathTo("dir/subdir/", TRUE); + ChangePathTo("dir/subdir/xh.htm"); + ChangePathTo("dir/subdir", TRUE); +C hangePathTo("dir/subdir/", TRUE); \end{verbatim} \wxheading{Parameters} -\docparam{location}{the new location. Its meaning depends on value of {\it is\_dir}} +\docparam{location}{the new location. Its meaning depends on the value of {\it is\_dir}} -\docparam{is\_dir}{if TRUE {\it location} is new directory. If FALSE (default) +\docparam{is\_dir}{if TRUE {\it location} is new directory. If FALSE (default) {\it location} is {\bf file in} the new directory.} \wxheading{Example} \begin{verbatim} -f = fs -> OpenFile("hello.htm"); // opens file 'hello.htm' -fs -> ChangePathTo("subdir/folder", TRUE); -f = fs -> OpenFile("hello.htm"); // opens file 'subdir/folder/hello.htm' !! + f = fs -> OpenFile("hello.htm"); // opens file 'hello.htm' + fs -> ChangePathTo("subdir/folder", TRUE); + f = fs -> OpenFile("hello.htm"); // opens file 'subdir/folder/hello.htm' !! \end{verbatim} \membersection{wxFileSystem::GetPath}\label{wxfilesystemgetpath} @@ -89,6 +89,16 @@ f = fs -> OpenFile("hello.htm"); // opens file 'subdir/folder/hello.htm' !! Returns actual path (set by \helpref{ChangePathTo}{wxfilesystemchangepathto}). +\membersection{wxFileSystem::FileNameToURL}\label{wxfilesystemfilenametourl} + +\func{static wxString}{FileNameToURL}{\param{wxFileName }{filename}} + +Converts filename into URL. + +\wxheading{See also} + +\helpref{wxFileSystem::URLToFileName}{wxfilesystemurltofilename}, +\helpref{wxFileName}{wxfilename} \membersection{wxFileSystem::FindFirst}\label{wxfilesystemfindfirst} @@ -102,15 +112,26 @@ wxFILE (only files), wxDIR (only directories) or 0 (both). \func{wxString}{FindNext}{\void} -Returns next filename that matches parameters passed to \helpref{FindFirst}{wxfilesystemfindfirst}. - +Returns the next filename that matches parameters passed to \helpref{FindFirst}{wxfilesystemfindfirst}. \membersection{wxFileSystem::OpenFile}\label{wxfilesystemopenfile} \func{wxFSFile*}{OpenFile}{\param{const wxString\& }{location}} -Opens file and returns pointer to \helpref{wxFSFile}{wxfsfile} object +Opens the file and returns a pointer to a \helpref{wxFSFile}{wxfsfile} object or NULL if failed. It first tries to open the file in relative scope (based on value passed to ChangePathTo() method) and then as an absolute path. +\membersection{wxFileSystem::URLToFileName}\label{wxfilesystemurltofilename} + +\func{static wxFileName}{URLToFileName}{\param{const wxString& }{url}} + +Converts URL into a well-formed filename. The URL must use the {\tt file} +protocol. + +\wxheading{See also} + +\helpref{wxFileSystem::FileNameToURL}{wxfilesystemfilenametourl}, +\helpref{wxFileName}{wxfilename} + diff --git a/docs/latex/wx/font.tex b/docs/latex/wx/font.tex index 88e178c68a..349f507633 100644 --- a/docs/latex/wx/font.tex +++ b/docs/latex/wx/font.tex @@ -185,7 +185,7 @@ Returns {\tt TRUE} if the font is a fixed width (or monospaced) font, \func{static wxFontEncoding}{GetDefaultEncoding}{\void} -Returns the current applications default encoding. +Returns the current application's default encoding. \wxheading{See also} diff --git a/docs/latex/wx/fontmap.tex b/docs/latex/wx/fontmap.tex index fe252bc35c..7644bb396e 100644 --- a/docs/latex/wx/fontmap.tex +++ b/docs/latex/wx/fontmap.tex @@ -23,14 +23,14 @@ and "interactive" is FALSE or user denied to choose any replacement), the class queries \helpref{wxEncodingConverter}{wxencodingconverter} for "equivalent" encodings (e.g. iso8859-2 and cp1250) and tries them. -\wxheading{Using wxFontMapper in conjunction with wxEncodingConverter} +\wxheading{Using wxFontMapper in conjunction with wxMBConv classes} If you need to display text in encoding which is not available at host system (see \helpref{IsEncodingAvailable}{wxfontmapperisencodingavailable}), you may use these two classes to find font in some similar encoding (see \helpref{GetAltForEncoding}{wxfontmappergetaltforencoding}) and convert the text to this encoding -(\helpref{wxEncodingConverter::Convert}{wxencodingconverterconvert}). +(\helpref{wxMBConv classes}{mbconvclasses}). Following code snippet demonstrates it: @@ -41,11 +41,9 @@ if (!wxFontMapper::Get()->IsEncodingAvailable(enc, facename)) if (wxFontMapper::Get()->GetAltForEncoding(enc, &alternative, facename, FALSE)) { - wxEncodingConverter encconv; - if (!encconv.Init(enc, alternative)) - ...failure... - else - text = encconv.Convert(text); + wxCSConv convFrom(wxFontMapper::Get()->GetEncodingName(enc)); + wxCSConv convTo(wxFontMapper::Get()->GetEncodingName(alternative)); + text = wxString(text.mb_str(convFrom), convTo); } else ...failure (or we may try iso8859-1/7bit ASCII)... diff --git a/docs/latex/wx/frame.tex b/docs/latex/wx/frame.tex index 118d48be72..eaed2ea430 100644 --- a/docs/latex/wx/frame.tex +++ b/docs/latex/wx/frame.tex @@ -52,14 +52,14 @@ a wxEVT\_HELP event if the user clicked on an application window. {\it Note} tha style and must be set by calling \helpref{SetExtraStyle}{wxwindowsetextrastyle} before Create is called (two-step construction). You cannot use this style together with wxMAXIMIZE\_BOX or wxMINIMIZE\_BOX, so you should use -{\tt wxDEFAULT\_FRAME\_STYLE \& \~ (wxMINIMIZE\_BOX | wxMAXIMIZE\_BOX)} for the +{\tt wxDEFAULT\_FRAME\_STYLE \& (wxMINIMIZE\_BOX | wxMAXIMIZE\_BOX)} for the frames having this style (the dialogs don't have minimize nor maximize box by default)} \end{twocollist} The default frame style is for normal, resizeable frames. To create a frame which can not be resized by user, you may use the following combination of -styles: {\tt wxDEFAULT\_FRAME\_STYLE \& \~ (wxRESIZE\_BORDER \pipe wxRESIZE\_BOX \pipe wxMAXIMIZE\_BOX)}. +styles: {\tt wxDEFAULT\_FRAME\_STYLE \& (wxRESIZE\_BORDER \pipe wxRESIZE\_BOX \pipe wxMAXIMIZE\_BOX)}. % Note: the space after the tilde is necessary or Tex2RTF complains. See also \helpref{window styles overview}{windowstyles}. diff --git a/docs/latex/wx/fs.tex b/docs/latex/wx/fs.tex index 2ba5f7e40d..b948bafb23 100644 --- a/docs/latex/wx/fs.tex +++ b/docs/latex/wx/fs.tex @@ -47,8 +47,8 @@ protocols - for example you may want to access files in a ZIP archive: file:archives/cpp\_doc.zip\#zip:reference/fopen.htm\#syntax -In this example, the protocol is "zip", the left location is -"reference/fopen.htm", the anchor is "syntax" and the right location +In this example, the protocol is "zip", right location is +"reference/fopen.htm", anchor is "syntax" and left location is "file:archives/cpp\_doc.zip". There are {\bf two} protocols used in this example: "zip" and "file". diff --git a/docs/latex/wx/fs_mem.tex b/docs/latex/wx/fs_mem.tex index 1b9f8d61bc..733b6d61f8 100644 --- a/docs/latex/wx/fs_mem.tex +++ b/docs/latex/wx/fs_mem.tex @@ -22,7 +22,7 @@ Example: void MyFrame::OnAbout(wxCommandEvent&) { wxBusyCursor bcur; - + wxFileSystem::AddHandler(new wxMemoryFSHandler); wxMemoryFSHandler::AddFile("logo.pcx", wxBITMAP(logo), wxBITMAP_TYPE_PCX); wxMemoryFSHandler::AddFile("about.htm", "About: " diff --git a/docs/latex/wx/ftp.tex b/docs/latex/wx/ftp.tex index eb0bf3fe87..def46870b0 100644 --- a/docs/latex/wx/ftp.tex +++ b/docs/latex/wx/ftp.tex @@ -115,6 +115,13 @@ Default constructor. Destructor will close the connection if connected. +\membersection{wxFTP::Abort}\label{wxftpabort} + +\func{bool}{Abort}{\void} + +Aborts the download currently in process, returns {\tt TRUE} if ok, {\tt FALSE} +if an error occured. + \membersection{wxFTP::CheckCommand} \func{bool}{CheckCommand}{\param{const wxString\&}{ command}, \param{char }{ret}} @@ -246,6 +253,21 @@ to specify a user and a password. % ---------------------------------------------------------------------------- +\membersection{wxFTP::FileExists}\label{wxftpfileexists} + +\func{bool}{FileExists}{\param{const wxString\&}{ filename}} + +Returns {\tt TRUE} if the given remote file exists, {\tt FALSE} otherwise. + +\membersection{wxFTP::GetFileSize}\label{wxftpgetfilesize} + +\func{int}{GetFileSize}{\param{const wxString\&}{ filename}} + +Returns the file size in bytes or $-1$ if the file doesn't exist or the size +couldn't be determined. Notice that this size can be approximative size only +and shouldn't be used for allocating the buffer in which the remote file is +copied, for example. + \membersection{wxFTP::GetDirList}\label{wxftpgetdirlist} \func{bool}{GetDirList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}} diff --git a/docs/latex/wx/function.tex b/docs/latex/wx/function.tex index 2a31f788cd..c82b49f4df 100644 --- a/docs/latex/wx/function.tex +++ b/docs/latex/wx/function.tex @@ -153,6 +153,8 @@ the corresponding topic. \helpref{wxLogTrace}{wxlogtrace}\\ \helpref{wxLogVerbose}{wxlogverbose}\\ \helpref{wxLogWarning}{wxlogwarning}\\ +\helpref{wxLL}{wxll}\\ +\helpref{wxLongLongFmtSpec}{wxlonglongfmtspec}\\ \helpref{wxMakeMetafilePlaceable}{wxmakemetafileplaceable}\\ \helpref{wxMatchWild}{wxmatchwild}\\ \helpref{wxMessageBox}{wxmessagebox}\\ @@ -369,7 +371,8 @@ call to this function. \membersection{::wxSafeYield}\label{wxsafeyield} -\func{bool}{wxSafeYield}{\param{wxWindow*}{ win = NULL}} +\func{bool}{wxSafeYield}{\param{wxWindow*}{ win = NULL}, \param{bool}{ + onlyIfNeeded = FALSE}} This function is similar to wxYield, except that it disables the user input to all program windows before calling wxYield and re-enables it again @@ -399,8 +402,8 @@ once for each previous successful call to \helpref{wxInitialize}{wxinitialize}. Calls \helpref{wxApp::Yield}{wxappyield}. -This function is kept only for backwards compatibility, please use -\helpref{wxApp::Yield}{wxappyield}method instead in any new code. +This function is kept only for backwards compatibility. Please use +the \helpref{wxApp::Yield}{wxappyield} method instead in any new code. \wxheading{Include files} @@ -474,10 +477,10 @@ case of using DDE under Windows for command execution). In particular, in this, and only this, case the calling code will not get the notification about process termination. -If callback isn't NULL and if execution is asynchronous, +If callback isn't NULL and if execution is asynchronous, \helpref{wxProcess::OnTerminate}{wxprocessonterminate} will be called when the process finishes. Specifying this parameter also allows you to redirect the -standard input and/or output of the process being launched by calling +standard input and/or output of the process being launched by calling \helpref{Redirect}{wxprocessredirect}. If the child process IO is redirected, under Windows the process window is not shown by default (this avoids having to flush an unnecessary console for the processes which don't create any windows @@ -507,7 +510,7 @@ single string.} array, any additional ones are the command parameters and the array must be terminated with a NULL pointer.} -\docparam{flags}{Combination of bit masks {\tt wxEXEC\_ASYNC}, +\docparam{flags}{Combination of bit masks {\tt wxEXEC\_ASYNC}, {\tt wxEXEC\_SYNC} and {\tt wxEXEC\_NOHIDE}} \docparam{callback}{An optional pointer to \helpref{wxProcess}{wxprocess}} @@ -615,7 +618,7 @@ See also \helpref{wxExecute}{wxexecute}, \helpref{Exec sample}{sampleexec}. \func{bool}{wxShutdown}{\param{wxShutdownFlags}{flags}} -This function shuts down or reboots the computer depending on the value of the +This function shuts down or reboots the computer depending on the value of the {\it flags}. Please notice that doing this requires the corresponding access rights (superuser under Unix, {\tt SE\_SHUTDOWN} privelege under Windows NT) and that this function is only implemented under Unix and Win32. @@ -729,7 +732,7 @@ Returns time of last modification of given file. \func{char *}{wxFileNameFromPath}{\param{char *}{path}} -{\bf NB:} This function is obsolete, please use +{\bf NB:} This function is obsolete, please use \helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead. Returns the filename for a full path. The second form returns a pointer to @@ -923,7 +926,7 @@ Under MS Windows, the current drive is also changed if {\it dir} contains a driv \func{void}{wxSplitPath}{\param{const char *}{ fullname}, \param{wxString *}{ path}, \param{wxString *}{ name}, \param{wxString *}{ ext}} -{\bf NB:} This function is obsolete, please use +{\bf NB:} This function is obsolete, please use \helpref{wxFileName::SplitPath}{wxfilenamesplitpath} instead. This function splits a full file name into components: the path (including possible disk/drive @@ -1125,7 +1128,7 @@ Gets operating system version information. \func{const wxChar *}{wxGetUserHome}{\param{const wxString\& }{user = ""}} Returns the home directory for the given user. If the username is empty -(default value), this function behaves like +(default value), this function behaves like \helpref{wxGetHomeDir}{wxgethomedir}. \wxheading{Include files} @@ -2109,6 +2112,44 @@ the compiler supports it or nothing otherwise. Thus, it can be used even in the code which might have to be compiled with an old compiler without support for this language feature but still take advantage of it when it is available. +\membersection{wxLL}\label{wxll} + +\func{wxLongLong\_t}{wxLL}{\param{}{number}} + +This macro is defined for the platforms with a native 64 bit integer type and +allows to define 64 bit compile time constants: + +\begin{verbatim} + #ifdef wxLongLong_t + wxLongLong_t ll = wxLL(0x1234567890abcdef); + #endif +\end{verbatim} + +\wxheading{Include files} + + + +\membersection{wxLongLongFmtSpec}\label{wxlonglongfmtspec} + +This macro is defined to contain the {\tt printf()} format specifier using +which 64 bit integer numbers (i.e. those of type {\tt wxLongLong\_t}) can be +printed. Example of using it: + +\begin{verbatim} + #ifdef wxLongLong_t + wxLongLong_t ll = wxLL(0x1234567890abcdef); + printf("Long long = %" wxLongLongFmtSpec "x\n", ll); + #endif +\end{verbatim} + +\wxheading{See also} + +\helpref{wxLL}{wxll} + +\wxheading{Include files} + + + \membersection{::wxNewId}\label{wxnewid} \func{long}{wxNewId}{\void} @@ -2184,7 +2225,7 @@ Find a menu item identifier associated with the given frame's menu bar. \func{wxWindow *}{wxFindWindowByLabel}{\param{const wxString\& }{label}, \param{wxWindow *}{parent=NULL}} -{\bf NB:} This function is obsolete, please use +{\bf NB:} This function is obsolete, please use \helpref{wxWindow::FindWindowByLabel}{wxwindowfindwindowbylabel} instead. Find a window by its label. Depending on the type of window, the label may be a window title @@ -2200,7 +2241,7 @@ The search is recursive in both cases. \func{wxWindow *}{wxFindWindowByName}{\param{const wxString\& }{name}, \param{wxWindow *}{parent=NULL}} -{\bf NB:} This function is obsolete, please use +{\bf NB:} This function is obsolete, please use \helpref{wxWindow::FindWindowByName}{wxwindowfindwindowbyname} instead. Find a window by its name (as given in a window constructor or {\bf Create} function call). @@ -2378,7 +2419,7 @@ See also \helpref{wxGetDisplayName}{wxgetdisplayname}. \func{void}{wxStripMenuCodes}{\param{char *}{in}, \param{char *}{out}} -{\bf NB:} This function is obsolete, please use +{\bf NB:} This function is obsolete, please use \helpref{wxMenuItem::GetLabelFromText}{wxmenuitemgetlabelfromtext} instead. Strips any menu codes from {\it in} and places the result @@ -2576,7 +2617,7 @@ class wxFrame: public wxWindow DECLARE_DYNAMIC_CLASS(wxFrame) private: - const wxString\& frameTitle; + const wxString& frameTitle; public: ... }; @@ -3031,7 +3072,7 @@ instead. \func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Internal Error"}} -{\bf NB:} This function is now obsolete, please use \helpref{wxLogError}{wxlogerror} +{\bf NB:} This function is now obsolete, please use \helpref{wxLogError}{wxlogerror} instead. Displays {\it msg} and continues. This writes to standard error under @@ -3046,7 +3087,7 @@ wxWindows errors. See also \helpref{wxFatalError}{wxfatalerror}. \func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Fatal Error"}} -{\bf NB:} This function is now obsolete, please use +{\bf NB:} This function is now obsolete, please use \helpref{wxLogFatalError}{wxlogfatalerror} instead. Displays {\it msg} and exits. This writes to standard error under Unix, @@ -3211,7 +3252,7 @@ trace masks. This function shows a message to the user in a safe way and should be safe to call even before the application has been initialized or if it is currently in some other strange state (for example, about to crash). Under Windows this -function shows a message box using a native dialog instead of +function shows a message box using a native dialog instead of \helpref{wxMessageBox}{wxmessagebox} (which might be unsafe to call), elsewhere it simply prints the message to the standard output using the title as prefix. @@ -3454,7 +3495,7 @@ builds the \helpref{wxCHECK}{wxcheck} failures don't result in anything. To override the default behaviour in the debug builds which is to show the user a dialog asking whether he wants to abort the program, continue or continue -ignoring any subsequent assert failures, you may override +ignoring any subsequent assert failures, you may override \helpref{wxApp::OnAssert}{wxapponassert} which is called by this function if the global application object exists. @@ -3477,7 +3518,7 @@ because it will not be executed in release mode at all. \func{}{wxASSERT\_MIN\_BITSIZE}{\param{}{type}, \param{}{size}} -This macro results in a +This macro results in a \helpref{compile time assertion failure}{wxcompiletimeassert} if the size of the given type {\it type} is less than {\it size} bits. @@ -3511,14 +3552,14 @@ specified {\it condition} is false. The compiler error message should include the {\it msg} identifier - please note that it must be a valid C++ identifier and not a string unlike in the other cases. -This macro is mostly useful for testing the expressions involving the +This macro is mostly useful for testing the expressions involving the {\tt sizeof} operator as they can't be tested by the preprocessor but it is sometimes desirable to test them at the compile time. Note that this macro internally declares a struct whose name it tries to make unique by using the {\tt \_\_LINE\_\_} in it but it may still not work if you use it on the same line in two different source files. In this case you may -either change the line in which either of them appears on or use the +either change the line in which either of them appears on or use the \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} macro. \wxheading{See also} @@ -3530,7 +3571,7 @@ either change the line in which either of them appears on or use the \func{}{wxCOMPILE\_TIME\_ASSERT}{\param{}{condition}, \param{}{msg}, \param{}{name}} -This macro is identical to \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} +This macro is identical to \helpref{wxCOMPILE\_TIME\_ASSERT2}{wxcompiletimeassert2} except that it allows you to specify a unique {\it name} for the struct internally defined by this macro to avoid getting the compilation errors described \helpref{above}{wxcompiletimeassert}. diff --git a/docs/latex/wx/helpinst.tex b/docs/latex/wx/helpinst.tex index 405a855d7c..43a266c295 100644 --- a/docs/latex/wx/helpinst.tex +++ b/docs/latex/wx/helpinst.tex @@ -45,7 +45,7 @@ a similar style to the Microsoft HTML Help viewer and using some of the same fil Although it has an API compatible with other help controllers, it has more advanced features, so it is recommended that you use the specific API for this class instead. Note that if you use .zip or .htb formats for your books, you -must add this line to your application initialization: \verb$wxFileSystem::AddHandler(new wxZipFSHandler);$ +must add this line to your application initialization: {\tt wxFileSystem::AddHandler(new wxZipFSHandler);} or nothing will be shown in your help window. \end{itemize} diff --git a/docs/latex/wx/htcontnr.tex b/docs/latex/wx/htcontnr.tex index a723a4420d..6739b4d0fd 100644 --- a/docs/latex/wx/htcontnr.tex +++ b/docs/latex/wx/htcontnr.tex @@ -41,6 +41,13 @@ Returns container's horizontal alignment. Returns container's vertical alignment. +\membersection{wxHtmlContainerCell::GetBackgroundColour}\label{wxhtmlcontainercellgetbackgroundcolour} + +\func{wxColour}{GetBackgroundColour}{\void} + +Returns the background colour of the container or {\tt wxNullColour} if no background +colour is set. + \membersection{wxHtmlContainerCell::GetFirstCell}\label{wxhtmlcontainercellgetfirstcell} \func{wxHtmlCell*}{GetFirstCell}{\void} diff --git a/docs/latex/wx/hthelpct.tex b/docs/latex/wx/hthelpct.tex index 2e667c66da..acb5cbfe7e 100644 --- a/docs/latex/wx/hthelpct.tex +++ b/docs/latex/wx/hthelpct.tex @@ -81,17 +81,27 @@ all other sections (sections, subsections, ...) have a folder icon.} \membersection{wxHtmlHelpController::AddBook}\label{wxhtmlhelpcontrolleraddbook} -\func{bool}{AddBook}{\param{const wxString\& }{book}, \param{bool }{show\_wait\_msg}} +\func{bool}{AddBook}{\param{const wxFileName\& }{book\_file}, \param{bool }{show\_wait\_msg}} + +\func{bool}{AddBook}{\param{const wxString\& }{book\_url}, \param{bool }{show\_wait\_msg}} Adds book (\helpref{.hhp file}{helpformat} - HTML Help Workshop project file) into the list of loaded books. This must be called at least once before displaying any help. -{\it book} may be either .hhp file or ZIP archive that contains arbitrary number of .hhp files in +{\it book\_file} or {\it book\_url} may be either .hhp file or ZIP archive +that contains arbitrary number of .hhp files in top-level directory. This ZIP archive must have .zip or .htb extension -(the latter stands for "HTML book"). In other words, {\tt AddBook("help.zip")} is possible and, in fact, -recommended way. +(the latter stands for "HTML book"). In other words, +{\tt AddBook(wxFileName("help.zip"))} +is possible and, in fact, recommended way. -If {\it show\_wait\_msg} is TRUE then a decoration-less window with progress message is displayed. +\wxheading{Parameters} + +\docparam{show\_wait\_msg}{If TRUE then a decoration-less window with progress message is displayed.} +\docparam{book\_file}{Help book filename. It is recommended to use this prototype +instead of the one taking URL, because it is less error-prone.} +\docparam{book\_url}{Help book URL (note that syntax of filename and URL is +different on most platforms)} \wxheading{Note} diff --git a/docs/latex/wx/hthlpdat.tex b/docs/latex/wx/hthlpdat.tex index c920f9fb07..b92bb0e826 100644 --- a/docs/latex/wx/hthlpdat.tex +++ b/docs/latex/wx/hthlpdat.tex @@ -28,11 +28,11 @@ Constructor. \membersection{wxHtmlHelpData::AddBook}\label{wxhtmlhelpdataaddbook} -\func{bool}{AddBook}{\param{const wxString\& }{book}} +\func{bool}{AddBook}{\param{const wxString\& }{book\_url}} -Adds new book. 'book' is location of HTML help project (hhp) or ZIP file -that contains arbitrary number of .hhp projects (this zip file can have -either .zip or .htb extension, htb stands for "html book"). +Adds new book. {\it book} is URL (not filename!) of HTML help project (hhp) +or ZIP file that contains arbitrary number of .hhp projects (this zip +file can have either .zip or .htb extension, htb stands for "html book"). Returns success. \membersection{wxHtmlHelpData::FindPageById}\label{wxhtmlhelpdatafindpagebyid} diff --git a/docs/latex/wx/htparser.tex b/docs/latex/wx/htparser.tex index f198bb9887..91eff929ad 100644 --- a/docs/latex/wx/htparser.tex +++ b/docs/latex/wx/htparser.tex @@ -256,3 +256,12 @@ Sets the virtual file system that will be used to request additional files. (For example {\tt } tag handler requests wxFSFile with the image data.) +\membersection{wxHtmlParser::StopParsing}\label{wxhtmlparserstopparsing} + +\func{void}{StopParsing}{\void} + +Call this function to interrupt parsing from a tag handler. No more tags +will be parsed afterward. This function may only be called from +\helpref{wxHtmlParser::Parse}{wxhtmlparserparse} or any function called +by it (i.e. from tag handlers). + diff --git a/docs/latex/wx/image.tex b/docs/latex/wx/image.tex index 4986bf1c19..b24b325cd0 100644 --- a/docs/latex/wx/image.tex +++ b/docs/latex/wx/image.tex @@ -397,12 +397,6 @@ available images. Number of available images. For most image handlers, this is 1 (exceptions are TIFF and ICO formats). -\membersection{wxImage::GetRed}\label{wximagegetred} - -\constfunc{unsigned char}{GetRed}{\param{int}{ x}, \param{int}{ y}} - -Returns the red intensity at the given coordinate. - \membersection{wxImage::GetHandlers} \func{static wxList\&}{GetHandlers}{\void} @@ -446,6 +440,12 @@ used when converting to wxBitmap under Windows. Eventually wxImage handlers will set the palette if one exists in the image file. +\membersection{wxImage::GetRed}\label{wximagegetred} + +\constfunc{unsigned char}{GetRed}{\param{int}{ x}, \param{int}{ y}} + +Returns the red intensity at the given coordinate. + \membersection{wxImage::GetSubImage}\label{wximagegetsubimage} \constfunc{wxImage}{GetSubImage}{\param{const wxRect\&}{ rect}} @@ -791,7 +791,7 @@ Example: // rescale it to have size of 32*32 if ( bmp.GetWidth() != 32 || bmp.GetHeight() != 32 ) { - wxImage image(bmp); + wxImage image = bmp.ConvertToImage(); bmp = wxBitmap(image.Scale(32, 32)); // another possibility: @@ -828,7 +828,7 @@ Specifies whether there is a mask or not. The area of the mask is determined by \membersection{wxImage::SetMaskColour}\label{wximagesetmaskcolour} -\func{void}{SetMaskColour}{\param{unsigned char }{red}, \param{unsigned char }{blue}, \param{unsigned char }{green}} +\func{void}{SetMaskColour}{\param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}} Sets the mask colour for this image (and tells the image to use the mask). @@ -911,7 +911,7 @@ Returns 'this' object. \membersection{wxImage::operator $==$} -\func{bool}{operator $==$}{\param{const wxImage\& }{image}} +\constfunc{bool}{operator $==$}{\param{const wxImage\& }{image}} Equality operator. This operator tests whether the internal data pointers are equal (a fast test). @@ -926,7 +926,7 @@ Returns TRUE if the images were effectively equal, FALSE otherwise. \membersection{wxImage::operator $!=$} -\func{bool}{operator $!=$}{\param{const wxImage\& }{image}} +\constfunc{bool}{operator $!=$}{\param{const wxImage\& }{image}} Inequality operator. This operator tests whether the internal data pointers are unequal (a fast test). diff --git a/docs/latex/wx/list.tex b/docs/latex/wx/list.tex index 2f07958847..7a1a8ec9d1 100644 --- a/docs/latex/wx/list.tex +++ b/docs/latex/wx/list.tex @@ -68,9 +68,11 @@ future versions completely. The use of the latter is especially discouraged as it is not only unsafe but is also much less efficient than \helpref{wxArrayString}{wxarraystring} class. -In the documentation of the list classes below, you should replace wxNode with -wxListName::Node and wxObject with the list element type (i.e. the first -parameter of WX\_DECLARE\_LIST) for the template lists. +In the documentation of the list classes below, the template notations are +used even though these classes are not really templates at all -- but it helps +to think about them as if they were. You should replace wxNode with +wxListName::Node and T itself with the list element type (i.e. the first +parameter of WX\_DECLARE\_LIST). \wxheading{Derived from} @@ -138,9 +140,9 @@ members for getting to the next or previous node. \func{}{wxList}{\param{unsigned int}{ key\_type}} -\func{}{wxList}{\param{int}{ n}, \param{wxObject *}{objects[]}} +\func{}{wxList}{\param{int}{ n}, \param{T *}{objects[]}} -\func{}{wxList}{\param{wxObject *}{object}, ...} +\func{}{wxList}{\param{T *}{object}, ...} Constructors. {\it key\_type} is one of wxKEY\_NONE, wxKEY\_INTEGER, or wxKEY\_STRING, and indicates what sort of keying is required (if any). @@ -159,15 +161,16 @@ client data held in the nodes. \membersection{wxList::Append}\label{wxlistappend} -\func{wxNode *}{Append}{\param{wxObject *}{object}} +\func{wxNode *}{Append}{\param{T *}{object}} -\func{wxNode *}{Append}{\param{long}{ key}, \param{wxObject *}{object}} +\func{wxNode *}{Append}{\param{long}{ key}, \param{T *}{object}} -\func{wxNode *}{Append}{\param{const wxString\& }{key}, \param{wxObject *}{object}} +\func{wxNode *}{Append}{\param{const wxString\& }{key}, \param{T *}{object}} -Appends a new {\bf wxNode} to the end of the list and puts a pointer to the -\rtfsp{\it object} in the node. The last two forms store a key with the object for -later retrieval using the key. The new node is returned in each case. +Appends a new \helpref{wxNode}{wxnode} to the end of the list and puts a +pointer to the \rtfsp{\it object} in the node. The last two forms store a key +with the object for later retrieval using the key. The new node is returned in +each case. The key string is copied and stored by the list implementation. @@ -187,22 +190,26 @@ a node whenever the node is destroyed. The default is {\tt FALSE}. \membersection{wxList::DeleteNode}\label{wxlistdeletenode} -\func{bool}{DeleteNode}{\param{wxNode *}{node}} +\func{bool}{DeleteNode}{\param{wxNode *}{node}} Deletes the given node from the list, returning {\tt TRUE} if successful. \membersection{wxList::DeleteObject}\label{wxlistdeleteobject} -\func{bool}{DeleteObject}{\param{wxObject *}{object}} +\func{bool}{DeleteObject}{\param{T *}{object}} Finds the given client {\it object} and deletes the appropriate node from the list, returning {\tt TRUE} if successful. The application must delete the actual object separately. \membersection{wxList::Find}\label{wxlistfind} -\func{wxNode *}{Find}{\param{long}{ key}} +\func{wxNode *}{Find}{\param{T *}{ object}} -\func{wxNode *}{Find}{\param{const wxString\& }{key}} +Returns the node whose client date is {\it object} or NULL if none found. + +\func{wxNode *}{Find}{\param{long}{ key}} + +\func{wxNode *}{Find}{\param{const wxString\& }{key}} Returns the node whose stored key matches {\it key}. Use on a keyed list only. @@ -214,37 +221,37 @@ Returns the number of elements in the list. \membersection{wxList::GetFirst}\label{wxlistgetfirst} -\func{wxNode *}{GetFirst}{\void} +\func{wxNode *}{GetFirst}{\void} Returns the first node in the list (NULL if the list is empty). \membersection{wxList::GetLast}\label{wxlistgetlast} -\func{wxNode *}{GetLast}{\void} +\func{wxNode *}{GetLast}{\void} Returns the last node in the list (NULL if the list is empty). \membersection{wxList::IndexOf}\label{wxlistindexof} -\func{int}{IndexOf}{\param{wxObject*}{ obj }} +\func{int}{IndexOf}{\param{T*}{ obj }} Returns the index of {\it obj} within the list or wxNOT\_FOUND if {\it obj} is not found in the list. \membersection{wxList::Insert}\label{wxlistinsert} -\func{wxNode *}{Insert}{\param{wxObject *}{object}} +\func{wxNode *}{Insert}{\param{T *}{object}} Insert object at front of list. -\func{wxNode *}{Insert}{\param{size\_t }{position}, \param{wxObject *}{object}} +\func{wxNode *}{Insert}{\param{size\_t }{position}, \param{T *}{object}} Insert object before {\it position}, i.e. the index of the new item in the list will be equal to {\it position}. {\it position} should be less than or equal to \helpref{GetCount}{wxlistgetcount}; if it is equal to it, this is the same as calling \helpref{Append}{wxlistappend}. -\func{wxNode *}{Insert}{\param{wxNode *}{node}, \param{wxObject *}{object}} +\func{wxNode *}{Insert}{\param{wxNode *}{node}, \param{T *}{object}} Inserts the object before the given {\it node}. @@ -257,13 +264,13 @@ Returns {\tt TRUE} if the list is empty, {\tt FALSE} otherwise. % Use different label name to avoid clashing with wxListItem label \membersection{wxList::Item}\label{wxlistitemfunc} -\constfunc{wxNode *}{Item}{\param{size\_t }{index}} +\constfunc{wxNode *}{Item}{\param{size\_t }{index}} Returns the node at given position in the list. \membersection{wxList::Member}\label{wxlistmember} -\func{wxNode *}{Member}{\param{wxObject *}{object}} +\func{wxNode *}{Member}{\param{T *}{object}} {\bf NB:} This function is deprecated, use \helpref{Find}{wxlistfind} instead. @@ -271,7 +278,7 @@ Returns the node associated with {\it object} if it is in the list, NULL otherwi \membersection{wxList::Nth}\label{wxlistnth} -\func{wxNode *}{Nth}{\param{int}{ n}} +\func{wxNode *}{Nth}{\param{int}{ n}} {\bf NB:} This function is deprecated, use \helpref{Item}{wxlistitemfunc} instead. diff --git a/docs/latex/wx/listbox.tex b/docs/latex/wx/listbox.tex index c81cb93fb6..07b133a76c 100644 --- a/docs/latex/wx/listbox.tex +++ b/docs/latex/wx/listbox.tex @@ -284,7 +284,7 @@ it. \membersection{wxListBox::InsertItems}\label{wxlistboxinsertitems} -\func{void}{InsertItems}{\param{int}{ nItems}, \param{const wxString}{ items}, \param{int}{ pos}} +\func{void}{InsertItems}{\param{int}{ nItems}, \param{const wxString}{ *items}, \param{int}{ pos}} Insert the given number of strings before the specified position. @@ -331,9 +331,11 @@ TRUE if the given item is selected, FALSE otherwise. \membersection{wxListBox::Set}\label{wxlistboxset} -\func{void}{Set}{\param{int}{ n}, \param{const wxString*}{ choices}} +\func{void}{Set}{\param{int}{ n}, \param{const wxString*}{ choices}, \param{void}{ **clientData = {\tt NULL}}} -Clears the list box and adds the given strings. Not implemented for GTK. +\func{void}{Set}{\param{const wxArrayString\&}{ choices}, \param{void}{ **clientData = {\tt NULL}}} + +Clears the list box and adds the given strings to it. \wxheading{Parameters} @@ -341,10 +343,12 @@ Clears the list box and adds the given strings. Not implemented for GTK. \docparam{choices}{An array of strings to set.} +\docparam{clientData}{Options array of client data pointers} + \wxheading{Remarks} -Deallocate the array from the calling program -after this function has been called. +You may free the array from the calling program after this function has been +called. \membersection{wxListBox::SetClientData}\label{wxlistboxsetclientdata} diff --git a/docs/latex/wx/listctrl.tex b/docs/latex/wx/listctrl.tex index 9aef15d27c..9cfbf90f6e 100644 --- a/docs/latex/wx/listctrl.tex +++ b/docs/latex/wx/listctrl.tex @@ -14,7 +14,12 @@ without consuming much memory. To use virtual list control you must use \helpref{OnGetItemText}{wxlistctrlongetitemtext} (and optionally \helpref{OnGetItemImage}{wxlistctrlongetitemimage} and \helpref{OnGetItemAttr}{wxlistctrlongetitemattr}) to return the information -about the items when the control requests it. +about the items when the control requests it. Virtual list control can be used +as a normal one except that no operations which can take time proportional to +the number of items in the control happen -- this is required to allow having a +practically infinite number of items. For example, in a multiple selection +virtual list control, the selections won't be sent when many items are selected +at once because this could mean iterating over all the items. Using many of wxListCtrl features is shown in the \helpref{corresponding sample}{samplelistctrl}. @@ -606,12 +611,12 @@ the given {\it column} for the specified {\tt item}. \func{bool}{ScrollList}{\param{int }{dx}, \param{int }{dy}} -Scrolls the list control. If in icon, small icon or report view mode, -dx specifies the number of pixels to scroll. If in list view mode, dx -specifies the number of columns to scroll. +Scrolls the list control. If in icon, small icon or report view mode, +{\it dx} specifies the number of pixels to scroll. If in list view mode, +{\it dx} specifies the number of columns to scroll. {\it dy} always specifies +the number of pixels to scroll vertically. -If in icon, small icon or list view mode, dy specifies the number of pixels -to scroll. If in report view mode, dy specifies the number of lines to scroll. +{\bf NB:} This method is currently only implemented in the Windows version. \membersection{wxListCtrl::SetBackgroundColour}\label{wxlistctrlsetbackgroundcolour} diff --git a/docs/latex/wx/listview.tex b/docs/latex/wx/listview.tex new file mode 100644 index 0000000000..76138d5310 --- /dev/null +++ b/docs/latex/wx/listview.tex @@ -0,0 +1,145 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Name: listview.tex +%% Purpose: wxListView documentation +%% Author: Vadim Zeitlin +%% Modified by: +%% Created: 07.11.02 +%% RCS-ID: $Id$ +%% Copyright: (c) 2002 Vadim Zeitlin +%% License: wxWindows license +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{\class{wxListView}}\label{wxlistview} + +This class currently simply presents a simpler to use interface for the +\helpref{wxListCtrl}{wxlistctrl} -- it can be thought of as a {\it fa\c{c}ade} +for that complicated class. Using it is preferable to using +\helpref{wxListCtrl}{wxlistctrl} directly whenever possible because in the +future some ports might implement wxListView but not the full set of wxListCtrl +features. + +Other than different interface, this class is identical to wxListCtrl. In +particular, it uses the same events, same windows styles and so on. + +\wxheading{Derived from} + +\helpref{wxListCtrl}{wxlistctrl}\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Include files} + + + +%%%%%%%%%%%%% Methods in alphabetic order %%%%%%%%%%%%% +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxListView::ClearColumnImage}\label{wxlistviewclearcolumnimage} + +\func{void}{ClearColumnImage}{\param{int }{col}} + +Resets the column image -- after calling this function, no image will be shown. + +\wxheading{Parameters} + +\docparam{col}{the column to clear image for} + +\wxheading{See also} + +\helpref{SetColumnImage}{wxlistviewsetcolumnimage} + + +\membersection{wxListView::Focus}\label{wxlistviewfocus} + +\func{void}{Focus}{\param{long }{index}} + +Sets focus to the item with the given {\it index}. + + +\membersection{wxListView::GetFirstSelected}\label{wxlistviewgetfirstselected} + +\constfunc{long}{GetFirstSelected}{\void} + +Returns the first selected item in a (presumably) multiple selection control. +Tigether with \helpref{GetNextSelected}{wxlistviewgetnextselected} it can be +used to iterate over all selected items in the control. + +\wxheading{Return value} + +The fisrt selected item, if any, $-1$ otherwise. + + +\membersection{wxListView::GetFocusedItem}\label{wxlistviewgetfocuseditem} + +\constfunc{long}{GetFocusedItem}{\void} + +Returns the currently focused item or $-1$ if none. + +\wxheading{See also} + +\helpref{IsSelected}{wxlistviewisselected},\\ +\helpref{Focus}{wxlistviewfocus} + + +\membersection{wxListView::GetNextSelected}\label{wxlistviewgetnextselected} + +\constfunc{long}{GetNextSelected}{\param{long }{item}} + +Used together with \helpref{GetFirstSelected}{wxlistviewgetfirstselected} to +iterate oevr all selected items in the control. + +\wxheading{Return value} + +Returns the next selected item or $-1$ if there are no more of them. + + +\membersection{wxListView::IsSelected}\label{wxlistviewisselected} + +\func{bool}{IsSelected}{\param{long }{index}} + +Returns {\tt TRUE} if the item with the given {\it index} is selected, +{\tt FALSE} otherwise. + +\wxheading{See also} + +\helpref{GetFirstSelected}{wxlistviewgetfirstselected},\\ +\helpref{GetNextSelected}{wxlistviewgetnextselected} + + +\membersection{wxListView::Select}\label{wxlistviewselect} + +\func{void}{Select}{long n, \param{bool }{on = TRUE}} + +Selects or unselects the given item. + +\wxheading{Parameters} + +\docparam{n}{the item to select or unselect} + +\docparam{on}{if {\tt TRUE} (default), selects the item, otherwise unselects it} + +\wxheading{See also} + +\helpref{SetItemState}{wxlistctrlsetitemstate} + + +\membersection{wxListView::SetColumnImage}\label{wxlistviewsetcolumnimage} + +\func{void}{SetColumnImage}{\param{int }{col}, \param{int }{image}} + +Sets the column image for the specified column. To use the column images, the +control must have a valid image list with at least one image. + +\wxheading{Parameters} + +\docparam{col}{the column to set image for} + +\docparam{image}{the index of the column image in the controls image list} + +\wxheading{See also} + +\helpref{ClearColumnImage}{wxlistviewclearcolumnimage},\\ +\helpref{SetImageList}{wxlistctrlsetimagelist} + diff --git a/docs/latex/wx/log.tex b/docs/latex/wx/log.tex index 1a88333182..c8a697c45e 100644 --- a/docs/latex/wx/log.tex +++ b/docs/latex/wx/log.tex @@ -57,7 +57,7 @@ situations because it may easily lead to a loss of messages. \membersection{Logging functions} There are two functions which must be implemented by any derived class to -actually process the log messages: \helpref{DoLog}{wxlogdolog} and +actually process the log messages: \helpref{DoLog}{wxlogdolog} and \helpref{DoLogString}{wxlogdologstring}. The second function receives a string which just has to be output in some way and the easiest way to write a new log target is to override just this function in the derived class. If more control @@ -72,7 +72,7 @@ night in the current time zone). There also functions to support message buffering. Why are they needed? Some of wxLog implementations, most notably the standard wxLogGui class, buffer the messages (for example, to avoid showing the user a zillion of modal -message boxes one after another - which would be really annoying). +message boxes one after another - which would be really annoying). \helpref{Flush()}{wxlogflush} shows them all and clears the buffer contents. Although this function doesn't do anything if the buffer is already empty, \helpref{HasPendingMessages()}{wxloghaspendingmessages} is also provided which @@ -96,9 +96,9 @@ problem. As for the (real) trace messages, their handling depends on the settings of the (application global) {\it trace mask}. There are two ways to specify it: -either by using \helpref{SetTraceMask}{wxlogsettracemask} and -\helpref{GetTraceMask}{wxloggettracemask} and using -\helpref{wxLogTrace}{wxlogtrace} which takes an integer mask or by using +either by using \helpref{SetTraceMask}{wxlogsettracemask} and +\helpref{GetTraceMask}{wxloggettracemask} and using +\helpref{wxLogTrace}{wxlogtrace} which takes an integer mask or by using \helpref{AddTraceMask}{wxlogaddtracemask} for string trace masks. The difference between bit-wise and string trace masks is that a message using @@ -112,7 +112,7 @@ For example, // wxTraceOleCalls is one of standard bit masks wxLogTrace(wxTraceRefCount | wxTraceOleCalls, "Active object ref count: %d", nRef); \end{verbatim} -will do something only if the current trace mask contains both +will do something only if the current trace mask contains both {\tt wxTraceRefCount} and {\tt wxTraceOle}, but \begin{verbatim} @@ -131,7 +131,7 @@ the preferred way of working with trace messages. The integer trace mask is kept for compatibility and for additional (but very rarely needed) flexibility only. -The standard trace masks are given in \helpref{wxLogTrace}{wxlogtrace} +The standard trace masks are given in \helpref{wxLogTrace}{wxlogtrace} documentation. Finally, the {\it wxLog::DoLog()} function automatically prepends a time stamp @@ -145,7 +145,7 @@ format disables timestamping of the messages completely. {\bf NB:} Timestamping is disabled for Visual C++ users in debug builds by default because otherwise it would be impossible to directly go to the line from which the log message was generated by simply clicking in the debugger -window on the corresponding error message. If you wish to enable it, please use +window on the corresponding error message. If you wish to enable it, please use \helpref{SetTimestamp}{wxlogsettimestamp} explicitly. \helpref{AddTraceMask}{wxlogaddtracemask}\\ @@ -171,7 +171,7 @@ window on the corresponding error message. If you wish to enable it, please use \func{static void}{AddTraceMask}{\param{const wxString\& }{mask}} -Add the {\it mask} to the list of allowed masks for +Add the {\it mask} to the list of allowed masks for \helpref{wxLogTrace}{wxlogtrace}. \wxheading{See also} @@ -182,7 +182,7 @@ Add the {\it mask} to the list of allowed masks for \func{static void}{ClearTraceMasks}{\void} -Removes all trace masks previously set with +Removes all trace masks previously set with \helpref{AddTraceMask}{wxlogaddtracemask}. \wxheading{See also} @@ -240,7 +240,7 @@ flushed, so Suspend() works as expected with it). \func{static void}{Resume}{\void} -Resumes logging previously suspended by a call to +Resumes logging previously suspended by a call to \helpref{Suspend}{wxlogsuspend}. All messages logged in the meanwhile will be flushed soon. @@ -253,7 +253,7 @@ of the message as specified in the call of {\it wxLogXXX()} function which generated it and {\it timestamp} is the moment when the message was generated. The base class version prepends the timestamp to the message, adds a prefix -corresponding to the log level and then calls +corresponding to the log level and then calls \helpref{DoLogString}{wxlogdologstring} with the resulting string. \membersection{wxLog::DoLogString}\label{wxlogdologstring} @@ -263,7 +263,7 @@ corresponding to the log level and then calls Called to log the specified string. The timestamp is already included into the string but still passed to this function. -A simple implementation may just send the string to {\tt stdout} or, better, +A simple implementation may just send the string to {\tt stdout} or, better, {\tt stderr}. \membersection{wxLog::DontCreateOnDemand}\label{wxlogdontcreateondemand} @@ -274,7 +274,7 @@ Instructs wxLog to not create new log targets on the fly if there is none currently. (Almost) for internal use only: it is supposed to be called by the application shutdown code. -Note that this function also calls +Note that this function also calls \helpref{ClearTraceMasks}{wxlogcleartracemasks}. \membersection{wxLog::Flush}\label{wxlogflush} @@ -314,6 +314,19 @@ logged as the normal ones instead of being silently dropped. Returns whether the verbose mode is currently active. +\membersection{wxLog::SetLogLevel}\label{wxlogsetloglevel} + +\func{static void}{SetLogLevel}{\param{wxLogLevel }{ logLevel}} + +Specifies that log messages with $level > logLevel$ should be ignored +and not sent to the active log target. + +\membersection{wxLog::GetLogLevel}\label{wxloggetloglevel} + +\func{static wxLogLevel}{GetLogLevel}{\void} + +Returns the current log level limit. + \membersection{wxLog::SetTimestamp}\label{wxlogsettimestamp} \func{void}{SetTimestamp}{\param{const char * }{ format}} @@ -345,17 +358,17 @@ for details. \func{static bool}{IsAllowedTraceMask}{\param{const wxChar *}{mask}} -Returns TRUE if the {\it mask} is one of allowed masks for +Returns TRUE if the {\it mask} is one of allowed masks for \helpref{wxLogTrace}{wxlogtrace}. -See also: \helpref{AddTraceMask}{wxlogaddtracemask}, +See also: \helpref{AddTraceMask}{wxlogaddtracemask}, \helpref{RemoveTraceMask}{wxlogremovetracemask} \membersection{wxLog::RemoveTraceMask}\label{wxlogremovetracemask} \func{static void}{RemoveTraceMask}{\param{const wxString\& }{mask}} -Remove the {\it mask} from the list of allowed masks for +Remove the {\it mask} from the list of allowed masks for \helpref{wxLogTrace}{wxlogtrace}. See also: \helpref{AddTraceMask}{wxlogaddtracemask} @@ -365,7 +378,7 @@ See also: \helpref{AddTraceMask}{wxlogaddtracemask} \section{\class{wxLogChain}}\label{wxlogchain} This simple class allows to chain log sinks, that is to install a new sink but -keep passing log messages to the old one instead of replacing it completely as +keep passing log messages to the old one instead of replacing it completely as \helpref{SetActiveTarget}{wxlogsetactivetarget} does. It is especially useful when you want to divert the logs somewhere (for @@ -380,7 +393,9 @@ wxLogChain *logChain = new wxLogChain(new wxLogStderr); // all the log messages are sent to stderr and also processed as usually ... -delete logChain; +// don't delete logChain directly as this would leave a dangling +// pointer as active log target, use SetActiveTarget() instead +delete wxLog::SetActiveTarget(...something else or NULL...); \end{verbatim} @@ -419,7 +434,7 @@ NULL}). \constfunc{bool}{IsPassingMessages}{\void} Returns {\tt TRUE} if the messages are passed to the previously active log -target (default) or {\tt FALSE} if \helpref{PassMessages}{wxlogchainpassmessages} +target (default) or {\tt FALSE} if \helpref{PassMessages}{wxlogchainpassmessages} had been called. \membersection{wxLogChain::PassMessages}\label{wxlogchainpassmessages} @@ -547,7 +562,7 @@ forwards the log messages to the previously installed one in addition to processing them itself. Unlike \helpref{wxLogChain}{wxlogchain} which is usually used directly as is, -this class must be derived from to implement \helpref{DoLog}{wxlogdolog} +this class must be derived from to implement \helpref{DoLog}{wxlogdolog} and/or \helpref{DoLogString}{wxlogdologstring} methods. \wxheading{Derived from} @@ -590,7 +605,7 @@ wxWindows applications which send all the output to {\tt stderr}. \func{}{wxLogStderr}{\param{FILE }{*fp = NULL}} -Constructs a log target which sends all the log messages to the given +Constructs a log target which sends all the log messages to the given {\tt FILE}. If it is {\tt NULL}, the messages are sent to {\tt stderr}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wxLogStream %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -621,7 +636,7 @@ the standard iostream library support ({\tt wxUSE\_STD\_IOSTREAM} must be on). \func{}{wxLogStream}{\param{std::ostream }{*ostr = NULL}} -Constructs a log target which sends all the log messages to the given +Constructs a log target which sends all the log messages to the given output stream. If it is {\tt NULL}, the messages are sent to {\tt cerr}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wxLogTextCtrl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -690,7 +705,7 @@ Creates the log frame window and starts collecting the messages in it. \docparam{title}{The title for the log frame} -\docparam{show}{{\tt TRUE} to show the frame initially (default), otherwise +\docparam{show}{{\tt TRUE} to show the frame initially (default), otherwise \helpref{wxLogWindow::Show}{wxlogwindowshow} must be called later.} \docparam{passToOld}{{\tt TRUE} to process the log messages normally in addition to diff --git a/docs/latex/wx/longlong.tex b/docs/latex/wx/longlong.tex index 37f62f17eb..e3e44f2785 100644 --- a/docs/latex/wx/longlong.tex +++ b/docs/latex/wx/longlong.tex @@ -25,10 +25,16 @@ also has operators for implicit construction from and conversion to the native 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, if you -want unsigned values use wxULongLong. +want unsigned values use wxULongLong which has exactly the same API as +wxLongLong except when explicitly mentioned otherwise. 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. +found to exist, {\it wxLongLong\_t} macro will be defined to correspond to it. +Also, in this case only, two additional macros will be defined: +\helpref{wxLongLongFmtSpec}{wxlonglongfmtspec} for printing 64 bit integers +using the standard {\tt printf()} function (but see also +\helpref{ToString()}{wxlonglongtostring} for a more portable solution) and +\helpref{wxLL}{wxll} for defining 64 bit integer compile-time constants. \wxheading{Derived from} diff --git a/docs/latex/wx/manual.tex b/docs/latex/wx/manual.tex index bc1608cc7d..8bd2d27778 100644 --- a/docs/latex/wx/manual.tex +++ b/docs/latex/wx/manual.tex @@ -26,13 +26,13 @@ %\special{!/@scaleunit 1 def} \parskip=10pt \parindent=0pt -\title{wxWindows 2.3: A portable C++ and Python GUI toolkit} +\title{wxWindows 2.4.0: A portable C++ and Python GUI toolkit} \winhelponly{\author{by Julian Smart et al %\winhelponly{\\$$\image{1cm;0cm}{wxwin.wmf}$$} }} \winhelpignore{\author{Julian Smart, Robert Roebling, Vadim Zeitlin, Robin Dunn, et al} -\date{August 2002} +\date{January 2003} } \makeindex \begin{document} diff --git a/docs/latex/wx/mbconv.tex b/docs/latex/wx/mbconv.tex index 5aaf60b65c..dd5653d371 100644 --- a/docs/latex/wx/mbconv.tex +++ b/docs/latex/wx/mbconv.tex @@ -37,15 +37,36 @@ Constructor. \constfunc{virtual size\_t}{MB2WC}{\param{wchar\_t* }{buf}, \param{const char* }{psz}, \param{size\_t }{n}} -Converts from multibyte encoding to Unicode, using the libc routine mbstowcs() -(this is overridden by derived classes). Returns the size of the destination buffer. +Converts from a string {\it psz} in multibyte encoding to Unicode putting the +output into the buffer {\it buf} of the size {\it n} (in wide characters, not +bytes). If {\it buf} is {\tt NULL}, nothing is written to it but the length of +the string which would result from the conversion is calculated and returned. +Note that this is the length and not size, i.e. the returned value does +{\bf not} include the trailing NUL. But when the function is called with a +non-{\tt NULL} buffer, the {\it n} parameter should be the size of the buffer +and so it {\bf should} take into account the trailing NUL. + +\wxheading{Parameters} + +\docparam{buf}{the output buffer, may be {\tt NULL} if the caller is only +interested in the length of the resulting string} + +\docparam{psz}{the {\tt NUL}-terminated input string, cannot be {\tt NULL}} + +\docparam{n}{the size of the output buffer, ignored if {\it buf} is {\tt NULL}} + +\wxheading{Return value} + +The length of the converted string. \membersection{wxMBConv::WC2MB}\label{wxmbconvwc2mb} \constfunc{virtual size\_t}{WC2MB}{\param{char* }{buf}, \param{const wchar\_t* }{psz}, \param{size\_t }{n}} -Converts from Unicode to multibyte encoding, using the libc routine wcstombs() -(this is overridden by derived classes). Returns the size of the destination buffer. +Converts from Unicode to multibyte encoding. The semantics of this function +(including the return value meaning) is the same as for +\helpref{MB2WC}{wxmbconvmb2wc}. + \membersection{wxMBConv::cMB2WC}\label{wxmbconvcmb2wc} diff --git a/docs/latex/wx/menu.tex b/docs/latex/wx/menu.tex index b5626089db..5a42e562f8 100644 --- a/docs/latex/wx/menu.tex +++ b/docs/latex/wx/menu.tex @@ -27,6 +27,13 @@ of the item positions inserting or removing the items in the menu containing the radio items risks to not work correctly. Finally note that the radio items are only supported under Windows and GTK+ currently. +\wxheading{Allocation strategy} + +All menus except the popup ones must be created on the heap. All menus +attached to a menubar or to another menu will be deleted by their parent when +it is deleted. As the frame menubar is deleted by the frame itself, it means +that normally all menus used are deleted automatically. + \wxheading{Derived from} \helpref{wxEvtHandler}{wxevthandler}\\ @@ -104,7 +111,9 @@ Adds a string item to the end of the menu. \func{void}{Append}{\param{int}{ id}, \param{const wxString\& }{ item}, \param{wxMenu *}{subMenu},\rtfsp \param{const wxString\& }{helpString = ""}} -Adds a pull-right submenu to the end of the menu. +Adds a pull-right submenu to the end of the menu. Append the submenu to the parent +menu {\it after} you have added your menu items, or accelerators may not be +registered properly. \func{void}{Append}{\param{wxMenuItem*}{ menuItem}} diff --git a/docs/latex/wx/menuitem.tex b/docs/latex/wx/menuitem.tex index 903794c0b3..16691f6bbb 100644 --- a/docs/latex/wx/menuitem.tex +++ b/docs/latex/wx/menuitem.tex @@ -36,7 +36,9 @@ Constructs a wxMenuItem object. \docparam{id}{Identifier for this menu item, or ID\_SEPARATOR to indicate a separator.} -\docparam{text}{Text for the menu item, as shown on the menu.} +\docparam{text}{Text for the menu item, as shown on the menu. An accelerator +key can be specified using the ampersand '\&' character. In order to embed an +ampersand character in the menu item text, the ampersand must be doubled.} \docparam{helpString}{Optional help string that will be shown on the status bar.} diff --git a/docs/latex/wx/mutexlck.tex b/docs/latex/wx/mutexlck.tex index 5fa53b7354..9afd4af634 100644 --- a/docs/latex/wx/mutexlck.tex +++ b/docs/latex/wx/mutexlck.tex @@ -23,10 +23,10 @@ None. \membersection{wxMutexLocker::wxMutexLocker}\label{wxmutexlockerctor} -\func{}{wxMutexLocker}{\param{wxMutex *}{mutex}} +\func{}{wxMutexLocker}{\param{wxMutex\&}{ mutex}} -Constructs a wxMutexLocker object associated with mutex which must be non-NULL -and locks it. Call \helpref{IsLocked}{wxmutexlockerisok} to check if the mutex was +Constructs a wxMutexLocker object associated with mutex and locks it. +Call \helpref{IsLocked}{wxmutexlockerisok} to check if the mutex was successfully locked. \membersection{wxMutexLocker::\destruct{wxMutexLocker}}\label{wxmutexlockerdtor} diff --git a/docs/latex/wx/node.tex b/docs/latex/wx/node.tex index c2b6600772..de3f30e362 100644 --- a/docs/latex/wx/node.tex +++ b/docs/latex/wx/node.tex @@ -1,12 +1,19 @@ -\section{\class{wxNodeBase}}\label{wxnode} +\section{\class{wxNode}}\label{wxnode} -A node structure used in linked lists (see \helpref{wxList}{wxlist}) and -derived classes. You should never use wxNodeBase class directly because it -works with untyped (void *) data and this is unsafe. Use wxNode-derived classes -which are defined by WX\_DECLARE\_LIST and WX\_DEFINE\_LIST macros instead as -described in \helpref{wxList}{wxlist} documentation (see example there). wxNode -is defined for compatibility as wxNodeBase containing "wxObject *" pointer, but -usage of this class is deprecated. +wxNodeBase is the node structure used in linked lists (see +\helpref{wxList}{wxlist}) and derived classes. You should never use wxNodeBase +class directly, however, because it works with untyped ({\tt void *}) data and +this is unsafe. Use wxNodeBase-derived classes which are automatically defined +by WX\_DECLARE\_LIST and WX\_DEFINE\_LIST macros instead as described in +\helpref{wxList}{wxlist} documentation (see example there). Also note that +although there is a class called wxNode, it is defined for backwards +compatibility only and usage of this class is strongly deprecated. + +In the documentation below, the type {\tt T} should be thought of as a +``template'' parameter: this is the type of data stored in the linked list or, +in other words, the first argument of WX\_DECLARE\_LIST macro. Also, wxNode is +written as wxNode even though it isn't really a template class -- but it +helps to think of it as if it were. \wxheading{Derived from} @@ -22,32 +29,32 @@ None. \latexignore{\rtfignore{\wxheading{Members}}} -\membersection{wxNodeBase::GetData} +\membersection{wxNode::GetData} -\func{void *}{Data}{\void} +\constfunc{T *}{GetData}{\void} Retrieves the client data pointer associated with the node. -\membersection{wxNodeBase::GetNext} +\membersection{wxNode::GetNext} -\func{wxNodeBase *}{Next}{\void} +\constfunc{wxNode *}{GetNext}{\void} -Retrieves the next node (NULL if at end of list). +Retrieves the next node or NULL if this node is the last one. -\membersection{wxNodeBase::GetPrevious} +\membersection{wxNode::GetPrevious} -\func{wxNodeBase *}{GetPrevious}{\void} +\func{wxNode *}{GetPrevious}{\void} -Retrieves the previous node (NULL if at start of list). +Retrieves the previous node or NULL if this node is the first one in the list. -\membersection{wxNodeBase::SetData} +\membersection{wxNode::SetData} -\func{void}{SetData}{\param{void *}{data}} +\func{void}{SetData}{\param{T *}{data}} Sets the data associated with the node (usually the pointer will have been set when the node was created). -\membersection{wxNodeBase::IndexOf} +\membersection{wxNode::IndexOf} \func{int}{IndexOf}{\void} diff --git a/docs/latex/wx/notebook.tex b/docs/latex/wx/notebook.tex index 9f91ec35dc..f0d414855a 100644 --- a/docs/latex/wx/notebook.tex +++ b/docs/latex/wx/notebook.tex @@ -24,10 +24,11 @@ managed by wxNotebook. \twocolwidtha{5cm} \begin{twocollist}\itemsep=0pt -\twocolitem{\windowstyle{wxNB\_FIXEDWIDTH}}{(Windows only)All tabs will have same width.} \twocolitem{\windowstyle{wxNB\_LEFT}}{Place tabs on the left side.} \twocolitem{\windowstyle{wxNB\_RIGHT}}{Place tabs on the right side.} \twocolitem{\windowstyle{wxNB\_BOTTOM}}{Place tabs under instead of above the notebook pages.} +\twocolitem{\windowstyle{wxNB\_FIXEDWIDTH}}{(Windows only) All tabs will have same width.} +\twocolitem{\windowstyle{wxNB\_MULTILINE}}{(Windows only) There can be several rows of tabs.} \end{twocollist} diff --git a/docs/latex/wx/pagedlg.tex b/docs/latex/wx/pagedlg.tex index b68a9ffeb6..0e87a15706 100644 --- a/docs/latex/wx/pagedlg.tex +++ b/docs/latex/wx/pagedlg.tex @@ -50,13 +50,13 @@ Destructor. Returns the \helpref{page setup data}{wxpagesetupdialogdata} associated with the dialog. -\membersection{wxPageSetupDialog::Ok}\label{wxpagesetupdialogok} - -\constfunc{bool}{Ok}{\void} - -Returns TRUE if the print data associated with the dialog data is valid. -This can return FALSE on Windows if the current printer is not set, for example. -On all other platforms, it returns TRUE. +%\membersection{wxPageSetupDialog::Ok}\label{wxpagesetupdialogok} +% +%\constfunc{bool}{Ok}{\void} +% +%Returns TRUE if the print data associated with the dialog data is valid. +%This can return FALSE on Windows if the current printer is not set, for example. +%On all other platforms, it returns TRUE. \membersection{wxPageSetupDialog::ShowModal}\label{wxpagesetupdialogshowmodal} @@ -250,7 +250,7 @@ selected printer properties. Windows only. Units are in millimetres \membersection{wxPageSetupDialogData::SetMarginTopLeft}\label{wxpagesetupdialogdatasetmargintopleft} -\func{void}{GetMarginTopLeft}{\param{const wxPoint\& }{pt}} +\func{void}{SetMarginTopLeft}{\param{const wxPoint\& }{pt}} Sets the left (x) and top (y) margins in millimetres. diff --git a/docs/latex/wx/panel.tex b/docs/latex/wx/panel.tex index 6dfeb8fe6e..63b331c13f 100644 --- a/docs/latex/wx/panel.tex +++ b/docs/latex/wx/panel.tex @@ -43,7 +43,7 @@ A panel may be loaded from a wxWindows resource file (extension {\tt wxr}). Default constructor. -\func{}{wxPanel}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp +\func{}{wxPanel}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = $-1$},\rtfsp \param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp \param{const wxSize\& }{size = wxDefaultSize},\rtfsp \param{long}{ style = wxTAB\_TRAVERSAL},\rtfsp diff --git a/docs/latex/wx/print.tex b/docs/latex/wx/print.tex index 063ee8dfe6..50406337c1 100644 --- a/docs/latex/wx/print.tex +++ b/docs/latex/wx/print.tex @@ -119,7 +119,7 @@ printer should be used. \membersection{wxPrintData::GetQuality}\label{wxprintdatagetquality} -\constfunc{wxPaperQuality}{GetQuality}{\void} +\constfunc{wxPrintQuality}{GetQuality}{\void} Returns the current print quality. This can be a positive integer, denoting the number of dots per inch, or one of the following identifiers: @@ -264,7 +264,7 @@ printer should be used. \membersection{wxPrintData::SetQuality}\label{wxprintdatasetquality} -\func{void}{SetQuality}{\param{wxPaperQuality}{ quality}} +\func{void}{SetQuality}{\param{wxPrintQuality}{ quality}} Sets the desired print quality. This can be a positive integer, denoting the number of dots per inch, or one of the following identifiers: diff --git a/docs/latex/wx/radiobut.tex b/docs/latex/wx/radiobut.tex index 9146afe3c0..c9b5f647ed 100644 --- a/docs/latex/wx/radiobut.tex +++ b/docs/latex/wx/radiobut.tex @@ -19,6 +19,9 @@ exclusive options. It has a text label next to a (usually) round button. \twocolwidtha{5cm} \begin{twocollist}\itemsep=0pt \twocolitem{\windowstyle{wxRB\_GROUP}}{Marks the beginning of a new group of radio buttons.} +\twocolitem{\windowstyle{wxRB\_SINGLE}}{If your radio buttons are not +consecutive siblings, they cannot form a group under Windows and you should use +this style to indicate that each of them is handled individually.} \end{twocollist} See also \helpref{window styles overview}{windowstyles}. diff --git a/docs/latex/wx/sashwin.tex b/docs/latex/wx/sashwin.tex index fb2dd26927..12e4eb4a4a 100644 --- a/docs/latex/wx/sashwin.tex +++ b/docs/latex/wx/sashwin.tex @@ -66,7 +66,7 @@ enum wxSashEdgePosition { Default constructor. -\func{}{wxSashWindow}{\param{wxSashWindow*}{ parent}, \param{wxSashWindowID }{id}, +\func{}{wxSashWindow}{\param{wxWindow*}{ parent}, \param{wxWindowID }{id}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCLIP\_CHILDREN \pipe wxSW\_3D}, @@ -203,5 +203,5 @@ Call this function to give the sash a border, or remove the border. \wxheading{See also} -\helpref{wxSashWindow::HashBorder}{wxsashwindowhasborder} +\helpref{wxSashWindow::HasBorder}{wxsashwindowhasborder} diff --git a/docs/latex/wx/scpdarry.tex b/docs/latex/wx/scpdarry.tex index 9164885ea7..077656725f 100644 --- a/docs/latex/wx/scpdarry.tex +++ b/docs/latex/wx/scpdarry.tex @@ -1,4 +1,4 @@ -\section{wxScopedArray}\label{wxscopedarray} +\section{\class{wxScopedArray}}\label{wxscopedarray} This is a simple scoped smart pointer array implementation that is similar to the \urlref{Boost}{http://www.boost.org} smart pointers but rewritten to @@ -47,7 +47,7 @@ pointer array. \end{verbatim} A smart pointer holds a pointer to an object (which must be complete -when wxDEFINE_SCOPED_ARRAY() is called). The memory used by the object is +when wxDEFINE\_SCOPED\_ARRAY() is called). The memory used by the object is deleted when the smart pointer goes out of scope. The first argument of the macro is the pointer type, the second is the name of the new smart pointer class being created. Below we will use wxScopedArray to diff --git a/docs/latex/wx/scpdptr.tex b/docs/latex/wx/scpdptr.tex index f5ae98c0c4..3fab597dfa 100644 --- a/docs/latex/wx/scpdptr.tex +++ b/docs/latex/wx/scpdptr.tex @@ -1,4 +1,4 @@ -\section{wxScopedPtr}\label{wxscopedptr} +\section{\class{wxScopedPtr}}\label{wxscopedptr} This is a simple scoped smart pointer implementation that is similar to the \urlref{Boost}{http://www.boost.org} smart pointers but rewritten to @@ -47,7 +47,7 @@ pointer array. \end{verbatim} A smart pointer holds a pointer to an object (which must be complete -when wxDEFINE_SCOPED_PTR() is called). The memory used by the object is +when wxDEFINE\_SCOPED\_PTR() is called). The memory used by the object is deleted when the smart pointer goes out of scope. The first argument of the macro is the pointer type, the second is the name of the new smart pointer class being created. Below we will use wxScopedPtr to diff --git a/docs/latex/wx/scrolevt.inc b/docs/latex/wx/scrolevt.inc index 90d5758865..f33a53d0e6 100644 --- a/docs/latex/wx/scrolevt.inc +++ b/docs/latex/wx/scrolevt.inc @@ -5,9 +5,9 @@ member functions that take a wxScrollEvent argument. You can use {\tt EVT\_COMMAND\_SCROLL...} macros with window IDs for when intercepting scroll events from controls, or {\tt EVT\_SCROLL...} macros without window IDs for intercepting scroll events from the receiving window - except for this, -the macros behave exactly the same +the macros behave exactly the same. -\twocolwidtha{7cm} +\twocolwidtha{9cm} \begin{twocollist}\itemsep=0pt \twocolitem{{\bf EVT\_SCROLL(func)}}{Process all scroll events.} \twocolitem{{\bf EVT\_SCROLL\_TOP(func)}}{Process wxEVT\_SCROLL\_TOP scroll-to-top events (minium position).} @@ -34,3 +34,22 @@ sent as the user drags the thumbtrack).} \end{twocollist}% + +\wxheading{The difference between {\tt EVT\_SCROLL\_THUMBRELEASE} and {\tt EVT\_SCROLL\_ENDSCROLL}} + +The {\tt EVT\_SCROLL\_THUMBRELEASE} event is only emitted when actually dragging +the thumb using the mouse and releasing it (This {\tt EVT\_SCROLL\_THUMBRELEASE} +event is also followed by an {\tt EVT\_SCROLL\_ENDSCROLL} event). + +The {\tt EVT\_SCROLL\_ENDSCROLL} event also occurs when using the keyboard to +change the thumb position, and when clicking next to the thumb (In all these +cases the {\tt EVT\_SCROLL\_THUMBRELEASE} event does not happen). + +In short, the {\tt EVT\_SCROLL\_ENDSCROLL} event is triggered when scrolling/ +moving has finished. The only exception (unfortunately) is that changing the +thumb position using the mousewheel does give a {\tt EVT\_SCROLL\_THUMBRELEASE} +event but NOT an {\tt EVT\_SCROLL\_ENDSCROLL} event. + +Please see the widgets sample ("Slider" page) to see the difference +between {\tt EVT\_SCROLL\_THUMBRELEASE} and {\tt EVT\_SCROLL\_ENDSCROLL} in action. + diff --git a/docs/latex/wx/scrolwin.tex b/docs/latex/wx/scrolwin.tex index 15c5be4cc1..1336f32ef0 100644 --- a/docs/latex/wx/scrolwin.tex +++ b/docs/latex/wx/scrolwin.tex @@ -4,7 +4,47 @@ The wxScrolledWindow class manages scrolling for its client area, transforming the coordinates according to the scrollbar positions, and setting the scroll positions, thumb sizes and ranges according to the area in view. -As with all windows, an application can draw onto a wxScrolledWindow using a \helpref{device context}{dcoverview}. +Starting from version 2.4 of wxWindows, there are several ways to use a +wxScrolledWindow. In particular, there are now three ways to set the +size of the scrolling area: + +One way is to set the scrollbars directly using a call to +\helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars}. +This is the way it used to be in any previous version of wxWindows +and it will be kept for backwards compatibility. + +An additional method of manual control, which requires a little less +computation of your own, is to set the total size of the scrolling area by +calling either \helpref{wxWindow::SetVirtualSize}{wxwindowsetvirtualsize}, +or \helpref{wxWindow::FitInside}{wxwindowfitinside}, and setting the +scrolling increments for it by calling +\helpref{wxScrolledWindow::SetScrollRate}{wxscrolledwindowsetscrollrate}. +Scrolling in some orientation is enabled by setting a non zero increment +for it. + +The most automatic and newest way is to simply let sizers determine the +scrolling area. This is now the default when you set an interior sizer +into a wxScrolledWindow with \helpref{wxWindow::SetSizer}{wxwindowsetsizer}. +The scrolling area will be set to the size requested by the sizer and +the scrollbars will be assigned for each orientation according to the need +for them and the scrolling increment set by +\helpref{wxScrolledWindow::SetScrollRate}{wxscrolledwindowsetscrollrate}. +As above, scrolling is only enabled in orientations with a non-zero +increment. You can influence the minimum size of the scrolled area +controlled by a sizer by calling +\helpref{wxWindow::SetVirtualSizeHints}{wxwindowsetvirtualsizehints}. +(calling \helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars} + has analogous effects in wxWindows 2.4 -- in later versions it may not continue + to override the sizer) + +Note: if Maximum size hints are still supported by SetVirtualSizeHints, use +them at your own dire risk. They may or may not have been removed for 2.4, +but it really only makes sense to set minimum size hints here. We should +probably replace SetVirtualSizeHints with SetMinVirtualSize or similar +and remove it entirely in future. + +As with all windows, an application can draw onto a wxScrolledWindow using +a \helpref{device context}{dcoverview}. You have the option of handling the OnPaint handler or overriding the \helpref{OnDraw}{wxscrolledwindowondraw} function, which is passed @@ -395,7 +435,7 @@ adjusting the scrollbars appropriately. \membersection{wxScrolledWindow::SetScrollRate}\label{wxscrolledwindowsetscrollrate} -\func{void}{SetScrollRate}{\param{int}{xstep}, \param{int}{ystep}} +\func{void}{SetScrollRate}{\param{int}{ xstep}, \param{int}{ ystep}} Set the horizontal and vertical scrolling increment only. See the pixelsPerUnit parameter in SetScrollbars. @@ -405,5 +445,5 @@ parameter in SetScrollbars. \func{void}{SetTargetWindow}{\param{wxWindow* }{window}} Call this function to tell wxScrolledWindow to perform the actual scrolling on -a different window (not on itself). +a different window (and not on itself). diff --git a/docs/latex/wx/semaphor.tex b/docs/latex/wx/semaphor.tex index 88190caa8b..68da8177ec 100644 --- a/docs/latex/wx/semaphor.tex +++ b/docs/latex/wx/semaphor.tex @@ -60,7 +60,7 @@ Destructor is not virtual, don't use this class polymorphically. \func{wxSemaError }{Post}{\void} Increments the semaphore count and signals one of the waiting -threads in an atomic way. Returns wxSEMA_OVERFLOW if the count +threads in an atomic way. Returns wxSEMA\_OVERFLOW if the count would increase the counter past the maximum. \wxheading{Return value} diff --git a/docs/latex/wx/sizer.tex b/docs/latex/wx/sizer.tex index e052026c43..b7d1b8ee4e 100644 --- a/docs/latex/wx/sizer.tex +++ b/docs/latex/wx/sizer.tex @@ -54,11 +54,11 @@ The destructor. \membersection{wxSizer::Add}\label{wxsizeradd} -\func{void}{Add}{\param{wxWindow* }{window}, \param{int }{option = 0},\param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} +\func{void}{Add}{\param{wxWindow* }{window}, \param{int }{proportion = 0},\param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} -\func{void}{Add}{\param{wxSizer* }{sizer}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} +\func{void}{Add}{\param{wxSizer* }{sizer}, \param{int }{proportion = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} -\func{void}{Add}{\param{int }{width}, \param{int }{height}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} +\func{void}{Add}{\param{int }{width}, \param{int }{height}, \param{int }{proportion = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} Adds the {\it window} to the sizer. As wxSizer itself is an abstract class, the parameters have no meaning in the wxSizer class itself, but as there currently is only one class @@ -76,11 +76,11 @@ horizontal boxes on the level beneath).} \docparam{width and height}{The dimension of a spacer to be added to the sizer. Adding spacers to sizers gives more flexibility in the design of dialogs; imagine for example a horizontal box with two buttons at the bottom of a dialog: you might want to insert a space between the two buttons and make that space stretchable -using the {\it option} flag and the result will be that the left button will be aligned with the left +using the {\it proportion} flag and the result will be that the left button will be aligned with the left side of the dialog and the right button with the right side - the space in between will shrink and grow with the dialog.} -\docparam{option}{Although the meaning of this parameter is undefined in wxSizer, it is used in wxBoxSizer +\docparam{proportion}{Although the meaning of this parameter is undefined in wxSizer, it is used in wxBoxSizer to indicate if a child of a sizer can change its size in the main orientation of the wxBoxSizer - where 0 stands for not changeable and a value of more than zero is interpreted relative to the value of other children of the same wxBoxSizer. For example, you might have a horizontal wxBoxSizer with three children, two @@ -93,7 +93,7 @@ using these flags. One is the border around a window: the {\it border} parameter determines the border width whereas the flags given here determine where the border may be (wxTOP, wxBOTTOM, wxLEFT, wxRIGHT or wxALL). The other flags determine the child window's behaviour if the size of the sizer changes. -However this is not - in contrast to the {\it option} flag - in the main +However this is not - in contrast to the {\it proportion} flag - in the main orientation, but in the respectively other orientation. So if you created a wxBoxSizer with the wxVERTICAL option, these flags will be relevant if the sizer changes its horizontal size. A child may get resized to completely fill @@ -106,7 +106,7 @@ in the main orientation using wxALIGN\_CENTER\_VERTICAL (same as wxALIGN\_CENTRE\_VERTICAL) and wxALIGN\_CENTER\_HORIZONTAL (same as wxALIGN\_CENTRE\_HORIZONTAL) flags. Finally, you can also specify wxADJUST\_MINSIZE flag to make the minimal size of the control dynamically adjust -to the value returned by its \helpref{GetBestSize()}{wxwindowgetbestsize} +to the value returned by its \helpref{GetAdjustedBestSize()}{wxwindowgetadjustedbestsize} method - this allows, for example, for correct relayouting of a static text control even if its text is changed during run-time.} @@ -114,7 +114,7 @@ control even if its text is changed during run-time.} \docparam{userData}{Allows an extra object to be attached to the sizer item, for use in derived classes when sizing information is more -complex than the {\it option} and {\it flag} will allow for.} +complex than the {\it proportion} and {\it flag} will allow for.} \membersection{wxSizer::CalcMin}\label{wxsizercalcmin} @@ -175,11 +175,11 @@ the current dimension. \membersection{wxSizer::Prepend}\label{wxsizerprepend} -\func{void}{Prepend}{\param{wxWindow* }{window}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} +\func{void}{Prepend}{\param{wxWindow* }{window}, \param{int }{proportion = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} -\func{void}{Prepend}{\param{wxSizer* }{sizer}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} +\func{void}{Prepend}{\param{wxSizer* }{sizer}, \param{int }{proportion = 0}, \param{int }{flag = 0}, \param{int }{border = 0}, \param{wxObject* }{userData = NULL}} -\func{void}{Prepend}{\param{int }{width}, \param{int }{height}, \param{int }{option = 0}, \param{int }{flag = 0}, \param{int }{border= 0}, \param{wxObject* }{userData = NULL}} +\func{void}{Prepend}{\param{int }{width}, \param{int }{height}, \param{int }{proportion = 0}, \param{int }{flag = 0}, \param{int }{border= 0}, \param{wxObject* }{userData = NULL}} Same as \helpref{wxSizer::Add}{wxsizeradd}, but prepends the items to the beginning of the list of items (windows, subsizers or spaces) owned by this sizer. @@ -254,9 +254,18 @@ see sample in the description of \helpref{wxBoxSizer}{wxboxsizer} if the window \func{void}{SetVirtualSizeHints}{\param{wxWindow* }{window}} Tell the sizer to set the minimal size of the {\it window} virtual area to match the sizer's -minimal size. For windows with managed scrollbars this will set them appropriately. +minimal size. For windows with managed scrollbars this will set them appropriately. \wxheading{See also} \helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars} +\membersection{wxSizer::Show}\label{wxsizershow} + +\func{void}{Show}{\param{wxWindow* }{window}, \param{bool }{show = TRUE}} + +\func{void}{Show}{\param{wxSizer* }{sizer}, \param{bool }{show = TRUE}} + +Shows or hides a window or sizer. To make a sizer item disappear or +reappear, use Show() followed by Layout(). + diff --git a/docs/latex/wx/statbmp.tex b/docs/latex/wx/statbmp.tex index 78ea1aac9c..3c9922ebfb 100644 --- a/docs/latex/wx/statbmp.tex +++ b/docs/latex/wx/statbmp.tex @@ -37,7 +37,7 @@ palette problems. Default constructor. \func{}{wxStaticBitmap}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id},\rtfsp -\param{const wxBitmap\& }{label = ``"}, \param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const wxBitmap\& }{label}, \param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp \param{long}{ style = 0}, \param{const wxString\& }{name = ``staticBitmap"}} Constructor, creating and showing a text control. @@ -65,7 +65,7 @@ Constructor, creating and showing a text control. \membersection{wxStaticBitmap::Create}\label{wxstaticbitmapcreate} \func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id},\rtfsp -\param{const wxBitmap\& }{label = ``"}, \param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const wxBitmap\& }{label}, \param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp \param{long}{ style = 0}, \param{const wxString\& }{name = ``staticBitmap"}} Creation function, for two-step construction. For details see \helpref{wxStaticBitmap::wxStaticBitmap}{wxstaticbitmapconstr}. diff --git a/docs/latex/wx/tbitmap.tex b/docs/latex/wx/tbitmap.tex index a5ed114011..a9e751a9ee 100644 --- a/docs/latex/wx/tbitmap.tex +++ b/docs/latex/wx/tbitmap.tex @@ -18,18 +18,16 @@ version of the graphic which appears on the main window. See \helpref{wxMemoryDC}{wxmemorydc} for an example of drawing onto a bitmap. -The following shows the conditional compilation required to load a -bitmap under Unix and in Windows. The alternative is to use the string -version of the bitmap constructor, which loads a file under Unix and a -resource or file under Windows, but has the disadvantage of requiring the -XPM icon file to be available at run-time. +All wxWindows platforms support XPMs for small bitmaps and icons. +You may include the XPM inline as below, since it's C code, or you +can load it at run-time. \begin{verbatim} -#if defined(__WXGTK__) || defined(__WXMOTIF__) #include "mondrian.xpm" -#endif \end{verbatim} +Sometimes you wish to use a .ico resource on Windows, and XPMs on +other platforms (for example to take advantage of Windows' support for multiple icon resolutions). A macro, \helpref{wxICON}{wxiconmacro}, is available which creates an icon using an XPM on the appropriate platform, or an icon resource on Windows. @@ -68,8 +66,9 @@ wxBitmap bmp(wxBITMAP(bmpname)); \end{verbatim} You should always use wxICON and wxBITMAP macros because they work for any -platform (unlike the code above which doesn't deal with wxMac, wxBe, ...) and -are more short and clear than versions with {\tt \#ifdef}s. +platform (unlike the code above which doesn't deal with wxMac, wxX11, ...) and +are more short and clear than versions with {\tt \#ifdef}s. Even better, +use the same XPMs on all platforms. \subsection{Supported bitmap file formats}\label{supportedbitmapformats} @@ -101,7 +100,7 @@ Under wxGTK, wxBitmap may load the following formats: \item All formats that are supported by the \helpref{wxImage}{wximage} class. \end{itemize} -Under wxMotif, wxBitmap may load the following formats: +Under wxMotif and wxX11, wxBitmap may load the following formats: \begin{itemize}\itemsep=0pt \item XBM data and file (wxBITMAP\_TYPE\_XBM) @@ -126,12 +125,12 @@ Under wxGTK, wxIcon may load the following formats: \item All formats that are supported by the \helpref{wxImage}{wximage} class. \end{itemize} -Under wxMotif, wxIcon may load the following formats: +Under wxMotif and wxX11, wxIcon may load the following formats: \begin{itemize}\itemsep=0pt \item XBM data and file (wxBITMAP\_TYPE\_XBM) \item XPM data and file (wxBITMAP\_TYPE\_XPM) -\item All formats that are supported by the \helpref{wxImage}{wximage} class (?). +\item All formats that are supported by the \helpref{wxImage}{wximage} class. \end{itemize} \wxheading{wxCursor} @@ -152,7 +151,7 @@ to stock cursors): \item None (stock cursors only). \end{itemize} -Under wxMotif, wxCursor may load the following formats: +Under wxMotif and wxX11, wxCursor may load the following formats: \begin{itemize}\itemsep=0pt \item XBM data and file (wxBITMAP\_TYPE\_XBM) @@ -168,27 +167,8 @@ have special requirements, you may wish to initialise the wxBitmap class with some extra handlers which you write yourself or receive from a third party. To add a handler object to wxBitmap, your application needs to include the header which implements it, and -then call the static function \helpref{wxBitmap::AddHandler}{wxbitmapaddhandler}. For example: +then call the static function \helpref{wxBitmap::AddHandler}{wxbitmapaddhandler}. -{\small -\begin{verbatim} - #include - ... - // Initialisation - wxBitmap::AddHandler(new wxXPMFileHandler); - wxBitmap::AddHandler(new wxXPMDataHandler); - ... -\end{verbatim} -} - -Assuming the handlers have been written correctly, you should now be able to load and save -XPM files using the usual wxBitmap API. - -{\bf Note:} bitmap handlers are not implemented on all platforms. Currently, the above is only necessary on -Windows, to save the extra overhead of formats that may not be necessary (if you don't use them, they -are not linked into the executable). Unix platforms have XPM capability built-in (where supported). - -Also, just because a handler (such as a PNG handler) is not present does not mean that -wxBitmap does not support that file format. If wxBitmap fails to find a suitable handler, -the file-loading capabilities of wxImage are used instead. +{\bf Note:} bitmap handlers are not implemented on all platforms, and new ones rarely need +to be implemented since wxImage can be used for loading most formats, as noted earlier. diff --git a/docs/latex/wx/tcommdlg.tex b/docs/latex/wx/tcommdlg.tex index ccea6686b5..cd91cc9036 100644 --- a/docs/latex/wx/tcommdlg.tex +++ b/docs/latex/wx/tcommdlg.tex @@ -167,7 +167,7 @@ The wildcard may be a specification for multiple types of file with a description for each, such as: \begin{verbatim} - "BMP files (*.bmp) | *.bmp | GIF files (*.gif) | *.gif" + "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif" \end{verbatim} \subsection{wxDirDialog overview}\label{wxdirdialogoverview} diff --git a/docs/latex/wx/tdb.tex b/docs/latex/wx/tdb.tex index 449efdbfc3..bb4377d0da 100644 --- a/docs/latex/wx/tdb.tex +++ b/docs/latex/wx/tdb.tex @@ -341,7 +341,7 @@ to when first starting to use the classes. Throughout the steps, small snippets of code are provided to show the syntax of performing the step. A complete code snippet is provided at the end of this overview that shows a complete working flow of all these steps (see -\helpref{wxODBC - Sample Code {\tt\#}1}{wxodbcsamplecode1}). +\helpref{wxODBC - Sample Code}{wxodbcsamplecode1}). {\bf Define datasource connection information} @@ -404,8 +404,8 @@ member. \begin{verbatim} wxDbConnectInf DbConnectInf; - DbConnectInf.SetDsn,"MyDSN"); - DbConnectInf.SetUserID,"MyUserName"); + DbConnectInf.SetDsn("MyDSN"); + DbConnectInf.SetUserID("MyUserName"); DbConnectInf.SetPassword("MyPassword"); DbConnectInf.SetDefaultDir(""); \end{verbatim} @@ -832,7 +832,7 @@ this example it was stored in "DbConnectInf.Henv") have been closed, then it is safe to release the environment handle: \begin{verbatim} - DbConnectInf->FreeHenv()); + DbConnectInf->FreeHenv(); \end{verbatim} Or, if the long form of the constructor was used and the constructor was allowed @@ -938,13 +938,13 @@ The ODBC classes support for Unicode is yet in early experimental stage and hasn't been tested extensively. It might work for you or it might not: please report the bugs/problems you have encountered in the latter case. -\subsection{wxODBC - Sample Code {\tt\#}1}\label{wxodbcsamplecode1} +\subsection{wxODBC - Sample Code}\label{wxodbcsamplecode1} -Simplest example of establishing/opening a connection to an ODBC datasource, +This is the simplest example of establishing/opening a connection to an ODBC datasource, binding variables to the columns for read/write usage, opening an existing table in the datasource, setting the query parameters (where/orderBy/from), querying the datasource, reading each row of the -result set, then cleaning up. +result set, and then cleaning up. NOTE: Not all error trapping is shown here, to reduce the size of the code and to make it more easily readable. diff --git a/docs/latex/wx/tdnd.tex b/docs/latex/wx/tdnd.tex index 3f57d7ab24..7e2737f23f 100644 --- a/docs/latex/wx/tdnd.tex +++ b/docs/latex/wx/tdnd.tex @@ -20,7 +20,7 @@ and identify its format(s) using the \helpref{wxDataFormat}{wxdataformat} class. To be a {\it drag source}, i.e. to provide the data which may be dragged by -user elsewhere, you should implement the following steps: +the user elsewhere, you should implement the following steps: \begin{itemize}\itemsep=0pt \item {\bf Preparation:} First of all, a data object must be created and @@ -29,7 +29,7 @@ initialized with the data you wish to drag. For example: \begin{verbatim} wxTextDataObject my_data("This text will be dragged."); \end{verbatim} -\item{\bf Drag start:} To start dragging process (typically in response to a +\item{\bf Drag start:} To start the dragging process (typically in response to a mouse click) you must call \helpref{wxDropSource::DoDragDrop}{wxdropsourcedodragdrop} like this: @@ -38,8 +38,8 @@ like this: dragSource.SetData( my_data ); wxDragResult result = dragSource.DoDragDrop( TRUE ); \end{verbatim} -\item {\bf Dragging:} The call to DoDragDrop() blocks the program until the user release the -mouse button (unless you override \helpref{GiveFeedback}{wxdropsourcegivefeedback} function +\item {\bf Dragging:} The call to DoDragDrop() blocks the program until the user releases the +mouse button (unless you override the \helpref{GiveFeedback}{wxdropsourcegivefeedback} function to do something special). When the mouse moves in a window of a program which understands the same drag-and-drop protocol (any program under Windows or any program supporting the XDnD protocol under X Windows), the corresponding \helpref{wxDropTarget}{wxdroptarget} methods @@ -57,28 +57,28 @@ is one of the values of {\tt wxDragResult} enum (explained \helpref{here}{wxdrop \end{verbatim} \end{itemize} -To be a {\it drop target}, i.e. to receive the data dropped by user you should +To be a {\it drop target}, i.e. to receive the data dropped by the user you should follow the instructions below: \begin{itemize}\itemsep=0pt -\item {\bf Initialization:} For a window to be drop target, it needs to have +\item {\bf Initialization:} For a window to be a drop target, it needs to have an associated \helpref{wxDropTarget}{wxdroptarget} object. Normally, you will call \helpref{wxWindow::SetDropTarget}{wxwindowsetdroptarget} during window -creation associating you drop target with it. You must derive a class from +creation associating your drop target with it. You must derive a class from wxDropTarget and override its pure virtual methods. Alternatively, you may derive from \helpref{wxTextDropTarget}{wxtextdroptarget} or \helpref{wxFileDropTarget}{wxfiledroptarget} and override their OnDropText() or OnDropFiles() method. \item {\bf Drop:} When the user releases the mouse over a window, wxWindows -queries the associated wxDropTarget object if it accepts the data. For this, +asks the associated wxDropTarget object if it accepts the data. For this, a \helpref{wxDataObject}{wxdataobject} must be associated with the drop target and this data object will be responsible for the format negotiation between the drag source and the drop target. If all goes well, then \helpref{OnData}{wxdroptargetondata} will get called and the wxDataObject belonging to the drop target can get filled with data. \item {\bf The end:} After processing the data, DoDragDrop() returns either -wxDragCopy or wxDragMove depending on the state of the keys (, -and ) at the moment of drop. There is currently no way for the drop +wxDragCopy or wxDragMove depending on the state of the keys , +and at the moment of the drop. There is currently no way for the drop target to change this return code. \end{itemize} diff --git a/docs/latex/wx/tdocview.tex b/docs/latex/wx/tdocview.tex index 6d5be945f4..0cf6922896 100644 --- a/docs/latex/wx/tdocview.tex +++ b/docs/latex/wx/tdocview.tex @@ -62,6 +62,15 @@ class, to provide multi-page document facilities. Note that to activate framework functionality, you need to use some or all of the wxWindows \helpref{predefined command identifiers}{predefinedids} in your menus. +\perlnote{The document/view framework is available in wxPerl. To use it, +you will need the following statements in your application code:\par +{\small +\begin{verbatim} +use Wx::DocView; +use Wx ':docview'; # import constants (optional) +\end{verbatim} +}} + \subsection{wxDocument overview}\label{wxdocumentoverview} \overview{Document/view framework overview}{docviewoverview} diff --git a/docs/latex/wx/tex2rtf.ini b/docs/latex/wx/tex2rtf.ini index cbb9b01c42..60b0948b4a 100644 --- a/docs/latex/wx/tex2rtf.ini +++ b/docs/latex/wx/tex2rtf.ini @@ -1,4 +1,6 @@ -;;; Tex2RTF initialisation file +;;; Tex2RTF initialisation file, using NO style sheet for HTML. See +;;; tex2rtf_css.ini for a version using a style sheet. You can use +;;; -macros tex2rtf.ini to specify the ini file. runTwice = yes titleFontSize = 12 authorFontSize = 10 @@ -32,7 +34,7 @@ htmlFaceName = "Arial, Lucida, Helvetica" \textbackslash [0]{{\tt$\backslash$}} \gifsep [0]{\par} ignoreInput = "ltx.tex" -htmlStylesheet = "wx.css" +; htmlStylesheet = "wx.css" ;\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}} ;\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} diff --git a/docs/latex/wx/tex2rtf_css.ini b/docs/latex/wx/tex2rtf_css.ini new file mode 100644 index 0000000000..e6a089d119 --- /dev/null +++ b/docs/latex/wx/tex2rtf_css.ini @@ -0,0 +1,54 @@ +;;; Tex2RTF initialisation file, using a style sheet for HTML. +;;; See tex2rtf.ini for a version using no style sheet, and instead +;;; setting explicit fonts. You can use -macros tex2rtf_css.ini to +;;; specify the ini file. +runTwice = yes +titleFontSize = 12 +authorFontSize = 10 +authorFontSize = 10 +chapterFontSize = 12 +sectionFontSize = 12 +subsectionFontSize = 12 +contentsDepth = 2 +headerRule = yes +footerRule = yes +useHeadingStyles = yes +listItemIndent=40 +generateHPJ = yes +htmlBrowseButtons = bitmap +winHelpContents = yes +winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95 +winHelpTitle = "wxWindows Manual" +truncateFilenames = yes +combineSubSections = yes +;; +;; These two are for generating MS HTML Help project, contents and index files. +;; +htmlWorkshopFiles = true +htmlIndex = true + +; Finally, a way to specify face names +;htmlFaceName = "Arial, Lucida, Helvetica" + +\textasciitilde [0]{{\tt\~}} +\textasciicircum [0]{{\tt\^}} +\textbackslash [0]{{\tt$\backslash$}} +\gifsep [0]{\par} +ignoreInput = "ltx.tex" +htmlStylesheet = "wx.css" + +;\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}} +;\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} +;\sethotspotcolour{on}\sethotspotunderline{on}} +\overview [2] {\helpref{#1}{#2}} +\docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}} +\wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}} +\const [0] {{\bf const}} +\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} +\windowstyle [1] {{\bf #1}\index{#1}} +\bftt [1] {\bf{\tt{#1}}} +\pythonnote [1] {{\bf \fcol{blue}{wxPython note:}} #1} +%\pythonnote [1] {} +\perlnote [1] {{\bf \fcol{blue}{wxPerl note:}} #1} +%\perlnote [1] {} + diff --git a/docs/latex/wx/text.tex b/docs/latex/wx/text.tex index c7f58237a3..32527801c3 100644 --- a/docs/latex/wx/text.tex +++ b/docs/latex/wx/text.tex @@ -125,6 +125,29 @@ it to always show it. It doesn't do anything under other platforms.} See also \helpref{window styles overview}{windowstyles} and \helpref{wxTextCtrl::wxTextCtrl}{wxtextctrlconstr}. +\wxheading{wxTextCtrl text format} + +The multiline text controls always store the text as a sequence of lines +separated by {\tt $\backslash$n} characters, i.e. in the Unix text format even +on non-Unix platforms. This allows the user code to ignore the differences +between the platforms but at a price: the indices in the control such as those +returned by \helpref{GetInsertionPoint}{wxtextctrlgetinsertionpoint} or +\helpref{GetSelection}{wxtextctrlgetselection} can {\bf not} be used as +indices into the string returned by \helpref{GetValue}{wxtextctrlgetvalue} as +they're going to be slightly off for platforms using +{\tt $\backslash$r$\backslash$n} as separator (as Windows does), for example. + +Instead, if you need to obtain a substring between the $2$ indices obtained +from the control with the help of the functions mentioned above, you should +use \helpref{GetRange}{wxtextctrlgetrange}. And the indices themselves can +only be passed to other methods, for example +\helpref{SetInsertionPoint}{wxtextctrlsetinsertionpoint} or +\helpref{SetSelection}{wxtextctrlsetselection}. + +To summarize: never use the indices returned by (multiline) wxTextCtrl as +indices into the string it contains, but only as arguments to be passed back +to the other wxTextCtrl methods. + \wxheading{wxTextCtrl styles} Multi-line text controls support the styles, i.e. provide a possibility to set @@ -554,8 +577,9 @@ returned string is empty. \constfunc{wxString}{GetValue}{\void} Gets the contents of the control. Notice that for a multiline text control, -the lines will be separated by (Unix-style) $\backslash$n characters, even under -Windows where they are separated by a $\backslash$r$\backslash$n sequence in the native control. +the lines will be separated by (Unix-style) $\backslash$n characters, even +under Windows where they are separated by a $\backslash$r$\backslash$n +sequence in the native control. \membersection{wxTextCtrl::IsEditable}\label{wxtextctrliseditable} diff --git a/docs/latex/wx/tfontenc.tex b/docs/latex/wx/tfontenc.tex index d35e87cc0a..b83964d8c2 100644 --- a/docs/latex/wx/tfontenc.tex +++ b/docs/latex/wx/tfontenc.tex @@ -55,20 +55,19 @@ The situation is particularly complicated with Cyrillic encodings for which used on the Internet), ISO8859-5 (ISO standard for Cyrillic) and CP1251 (WinCyrillic). -This abundance of (incompatible) encoding:w -s should make it clear that using +This abundance of (incompatible) encodings should make it clear that using encodings is less easy than it might seem. The problems arise both from the fact that the standard encodings for the given language (say Russian, which is written in Cyrillic) are different on different platforms and because the fonts in the given encoding might just not be installed (this is especially a problem with Unix, or, in general, non-Win32 systems). -To allow to see clearer in this, \helpref{wxFontEnumerator}{wxfontenumerator} +To clarify, the \helpref{wxFontEnumerator}{wxfontenumerator} class may be used to enumerate both all available encodings and to find the facename(s) in which the given encoding exists. If you can find the font in the correct encoding with wxFontEnumerator then your troubles are over, but, unfortunately, sometimes this is not enough. For example, there is no standard -way (I know of, please tell me if you do!) to find a font on a Windows system +way (that I know of, please tell me if you do!) to find a font on a Windows system for KOI8 encoding (only for WinCyrillic one which is quite different), so \helpref{wxFontEnumerator}{wxfontenumerator} will never return one, even if the user has installed a KOI8 font on his system. @@ -80,7 +79,7 @@ course, it would be fairly useless if it tried to determine these mappings by itself, so, instead, it (optionally) ask the user and remember his answers so that the next time the program will automatically choose the correct font. -All these topics are illustrated by the \helpref{font sample}{samplefont}, +All these topics are illustrated by the \helpref{font sample}{samplefont}; please refer to it and the documentation of the classes mentioned here for further explanations. diff --git a/docs/latex/wx/timer.tex b/docs/latex/wx/timer.tex index 7830183b5d..262e8332fc 100644 --- a/docs/latex/wx/timer.tex +++ b/docs/latex/wx/timer.tex @@ -20,6 +20,8 @@ In any case, you must start the timer with \helpref{Start}{wxtimerstart} after constructing it before it actually starts sending notifications. It can be stopped later with \helpref{Stop}{wxtimerstop}. +{\bf NB:} note that timer can only be used from the main thread currently. + \wxheading{Derived from} \helpref{wxObject}{wxobject} diff --git a/docs/latex/wx/timespan.tex b/docs/latex/wx/timespan.tex index e63cb8dc9b..a46b716600 100644 --- a/docs/latex/wx/timespan.tex +++ b/docs/latex/wx/timespan.tex @@ -1,4 +1,4 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Name: datespan.tex %% Purpose: wxDateSpan documentation %% Author: Vadim Zeitlin @@ -30,17 +30,48 @@ No base class \membersection{Static functions} +\helpref{Seconds}{wxtimespanseconds}\\ +\helpref{Second}{wxtimespansecond}\\ +\helpref{Minutes}{wxtimespanminutes}\\ +\helpref{Minute}{wxtimespanminute}\\ +\helpref{Hours}{wxtimespanhours}\\ +\helpref{Hour}{wxtimespanhour}\\ +\helpref{Days}{wxtimespandays}\\ +\helpref{Day}{wxtimespanday}\\ +\helpref{Weeks}{wxtimespanweeks}\\ +\helpref{Week}{wxtimespanweek} + \membersection{Constructors} -wxTimeSpan()\\ -\helpref{wxTimeSpan(hours, min, sec, msec)}{wxtimespan} +\helpref{wxTimeSpan}{wxtimespanctor} \membersection{Accessors} +\helpref{GetSeconds}{wxtimespangetseconds}\\ +\helpref{GetMinutes}{wxtimespangetminutes}\\ +\helpref{GetHours}{wxtimespangethours}\\ +\helpref{GetDays}{wxtimespangetdays}\\ +\helpref{GetWeeks}{wxtimespangetweeks}\\ +\helpref{GetValue}{wxtimespangetvalue} + \membersection{Operations} +\helpref{Add}{wxtimespanadd}\\ +\helpref{Substract}{wxtimespansubstract}\\ +\helpref{Multiply}{wxtimespanmultiply}\\ +\helpref{Negate}{wxtimespannegate}\\ +\helpref{Neg}{wxtimespanneg}\\ +\helpref{Abs}{wxtimespanabs} + \membersection{Tests} +\helpref{IsNull}{wxtimespanisnull}\\ +\helpref{IsPositive}{wxtimespanispositive}\\ +\helpref{IsNegative}{wxtimespanisnegative}\\ +\helpref{IsEqualTo}{wxtimespanisequalto}\\ +\helpref{IsLongerThan}{wxtimespanislongerthan}\\ +\helpref{IsShorterThan}{wxtimespanisshorterthan} + \membersection{Formatting time spans} \helpref{Format}{wxtimespanformat} @@ -53,6 +84,35 @@ wxTimeSpan()\\ \wxheading{Members} }} +\membersection{wxTimeSpan::Abs}\label{wxtimespanabs} + +\constfunc{wxTimeSpan}{Abs}{\void} + +Returns the absolute value of the timespan: does not modify the +object. + +\membersection{wxTimeSpan::Add}\label{wxtimespanadd} + +\constfunc{wxTimeSpan}{Add}{\param{const wxTimeSpan\& }{diff}} + +\func{wxTimeSpan\&}{Add}{\param{const wxTimeSpan\& }{diff}} + +\func{wxTimeSpan\&}{operator$+=$}{\param{const wxTimeSpan\&}{diff}} + +Returns the sum of two timespans. + +\membersection{wxTimeSpan::Days}\label{wxtimespandays} + +\func{static wxTimespan}{Days}{\param{long }{days}} + +Returns the timespan for the given number of days. + +\membersection{wxTimeSpan::Day}\label{wxtimespanday} + +\func{static wxTimespan}{Day}{\void} + +Returns the timespan for one day. + \membersection{wxTimeSpan::Format}\label{wxtimespanformat} \func{wxString}{Format}{\param{const wxChar * }{format = "\%H:\%M:\%S"}} @@ -84,3 +144,179 @@ interpreted as $2$. Otherwise, it is $50$. The same applies to all other format specifiers: if they follow a specifier of larger unit, only the rest part is taken, otherwise the full value is used. +\membersection{wxTimeSpan::GetDays}\label{wxtimespangetdays} + +\constfunc{int}{GetDays}{\void} + +Returns the difference in number of days. + +\membersection{wxTimeSpan::GetHours}\label{wxtimespangethours} + +\constfunc{int}{GetHours}{\void} + +Returns the difference in number of hours. + +\membersection{wxTimeSpan::GetMilliseconds}\label{wxtimespangetmilliseconds} + +\constfunc{wxLongLong}{GetMilliseconds}{\void} + +Returns the difference in number of milliseconds. + +\membersection{wxTimeSpan::GetMinutes}\label{wxtimespangetminutes} + +\constfunc{int}{GetMinutes}{\void} + +Returns the difference in number of minutes. + +\membersection{wxTimeSpan::GetSeconds}\label{wxtimespangetseconds} + +\constfunc{wxLongLong}{GetSeconds}{\void} + +Returns the difference in number of seconds. + +\membersection{wxTimeSpan::GetValue}\label{wxtimespangetvalue} + +\constfunc{wxLongLong}{GetValue}{\void} + +Returns the internal representation of timespan. + +\membersection{wxTimeSpan::GetWeeks}\label{wxtimespangetweeks} + +\constfunc{int}{GetWeeks}{\void} + +Returns the difference in number of weeks. + +\membersection{wxTimeSpan::Hours}\label{wxtimespanhours} + +\func{static wxTimespan}{Hours}{\param{long }{hours}} + +Returns the timespan for the given number of hours. + +\membersection{wxTimeSpan::Hour}\label{wxtimespanhour} + +\func{static wxTimespan}{Hour}{\void} + +Returns the timespan for one hour. + +\membersection{wxTimeSpan::IsEqualTo}\label{wxtimespanisequalto} + +\constfunc{bool}{IsEqualTo}{\param{const wxTimeSpan\& }{ts}} + +Returns {\tt TRUE} if two timespans are equal. + +\membersection{wxTimeSpan::IsLongerThan}\label{wxtimespanislongerthan} + +\constfunc{bool}{IsLongerThan}{\param{const wxTimeSpan\& }{ts}} + +Compares two timespans: works with the absolute values, i.e. -2 +hours is longer than 1 hour. Also, it will return {\tt FALSE} if +the timespans are equal in absolute value. + +\membersection{wxTimeSpan::IsNegative}\label{wxtimespanisnegative} + +\constfunc{bool}{IsNegative}{\void} + +Returns {\tt TRUE} if the timespan is negative. + +\membersection{wxTimeSpan::IsNull}\label{wxtimespanisnull} + +\constfunc{bool}{IsNull}{\void} + +Returns {\tt TRUE} if the timespan is empty. + +\membersection{wxTimeSpan::IsPositive}\label{wxtimespanispositive} + +\constfunc{bool}{IsPositive}{\void} + +Returns {\tt TRUE} if the timespan is positive. + +\membersection{wxTimeSpan::IsShorterThan}\label{wxtimespanisshorterthan} + +\constfunc{bool}{IsShorterThan}{\param{const wxTimeSpan\& }{ts}} + +Compares two timespans: works with the absolute values, i.e. 1 +hour is shorter than -2 hours. Also, it will return {\tt FALSE} if +the timespans are equal in absolute value. + +\membersection{wxTimeSpan::Minutes}\label{wxtimespanminutes} + +\func{static wxTimespan}{Minutes}{\param{long }{min}} + +Returns the timespan for the given number of minutes. + +\membersection{wxTimeSpan::Minute}\label{wxtimespanminute} + +\func{static wxTimespan}{Minute}{\void} + +Returns the timespan for one minute. + +\membersection{wxTimeSpan::Multiply}\label{wxtimespanmultiply} + +\constfunc{wxTimeSpan}{Multiply}{\param{int }{n}} + +\func{wxTimeSpan\&}{Multiply}{\param{int }{n}} + +\func{wxTimeSpan\&}{operator$*=$}{\param{int }{n}} + +Multiplies timespan by a scalar. + +\membersection{wxTimeSpan::Negate}\label{wxtimespannegate} + +\constfunc{wxTimeSpan}{Negate}{\void} + +Returns timespan with inversed sign. + +\membersection{wxTimeSpan::Neg}\label{wxtimespanneg} + +\func{wxTimeSpan\&}{Neg}{\void} + +\func{wxTimeSpan\&}{operator$-$}{\void} + +Negate the value of the timespan. + +\membersection{wxTimeSpan::Seconds}\label{wxtimespanseconds} + +\func{static wxTimespan}{Seconds}{\param{long }{sec}} + +Returns the timespan for the given number of seconds. + +\membersection{wxTimeSpan::Second}\label{wxtimespansecond} + +\func{static wxTimespan}{Second}{\void} + +Returns the timespan for one second. + +\membersection{wxTimeSpan::Substract}\label{wxtimespansubstract} + +\constfunc{wxTimeSpan}{Substract}{\param{const wxTimeSpan\&}{diff}} + +\func{wxTimeSpan\&}{Substract}{\param{const wxTimeSpan\& }{diff}} + +\func{wxTimeSpan\&}{operator$-=$}{\param{const wxTimeSpan\&}{diff}} + +Returns the difference of two timespans. + +\membersection{wxTimeSpan::Weeks}\label{wxtimespanweeks} + +\func{static wxTimespan}{Weeks}{\param{long }{weeks}} + +Returns the timespan for the given number of weeks. + +\membersection{wxTimeSpan::Week}\label{wxtimespanweek} + +\func{static wxTimespan}{Week}{\void} + +Returns the timespan for one week. + +\membersection{wxTimeSpan::wxTimeSpan}\label{wxtimespanctor} + +\func{}{wxTimeSpan}{\void} + +Default constructor, constructs a zero timespan. + +\func{}{wxTimeSpan}{\param{long }{hours}, \param{long }{min}, \param{long }{sec}, \param{long }{msec}} + +Constructs timespan from separate values for each component, with the date +set to 0. Hours are not restricted to 0..24 range, neither are +minutes, seconds or milliseconds. + diff --git a/docs/latex/wx/tnoneng.tex b/docs/latex/wx/tnoneng.tex index 084c807e94..a11bf9cc7b 100644 --- a/docs/latex/wx/tnoneng.tex +++ b/docs/latex/wx/tnoneng.tex @@ -90,24 +90,22 @@ user's operating system. This is default behaviour of the \wxheading{Font mapping} -You can use \helpref{wxEncodingConverter}{wxencodingconverter} and +You can use \helpref{wxMBConv classes}{mbconvclasses} and \helpref{wxFontMapper}{wxfontmapper} to display text: \begin{verbatim} if (!wxFontMapper::Get()->IsEncodingAvailable(enc, facename)) { wxFontEncoding alternative; - if (wxTheFontMapper->GetAltForEncoding(enc, &alternative, - facename, FALSE)) + if (wxFontMapper::Get()->GetAltForEncoding(enc, &alternative, + facename, false)) { - wxEncodingConverted encconv; - if (!encconv.Init(enc, alternative)) - ...failure... - else - text = encconv.Convert(text); + wxCSConv convFrom(wxFontMapper::Get()->GetEncodingName(enc)); + wxCSConv convTo(wxFontMapper::Get()->GetEncodingName(alternative)); + text = wxString(text.mb_str(convFrom), convTo); } else - ...failure... + ...failure (or we may try iso8859-1/7bit ASCII)... } ...display text... \end{verbatim} @@ -115,8 +113,10 @@ if (!wxFontMapper::Get()->IsEncodingAvailable(enc, facename)) \wxheading{Converting data} You may want to store all program data (created documents etc.) in -the same encoding, let's say windows1250. Obviously, the best way would -be to use \helpref{wxEncodingConverter}{wxencodingconverter}. +the same encoding, let's say {\tt utf-8}. You can use +\helpref{wxCSConv}{wxcsconv} class to convert data to encoding used by the +system your application is running on (see +\helpref{wxLocale::GetSystemEncoding}{wxlocalegetsystemencoding}). \wxheading{Help files} diff --git a/docs/latex/wx/toolbar.tex b/docs/latex/wx/toolbar.tex index 6b1ddc01d0..ff06b97773 100644 --- a/docs/latex/wx/toolbar.tex +++ b/docs/latex/wx/toolbar.tex @@ -677,7 +677,7 @@ and not the eventual size of the tool button. \membersection{wxToolBar::SetToolClientData}\label{wxtoolbarsettoolclientdata} -\func{void}{GetToolClientData}{\param{wxObject* }{clientData}} +\func{void}{SetToolClientData}{\param{int }{id}, \param{wxObject* }{clientData}} Sets the client data associated with the tool. diff --git a/docs/latex/wx/treectrl.tex b/docs/latex/wx/treectrl.tex index 894fafe40d..2c5c4afb29 100644 --- a/docs/latex/wx/treectrl.tex +++ b/docs/latex/wx/treectrl.tex @@ -1,7 +1,8 @@ \section{\class{wxTreeCtrl}}\label{wxtreectrl} A tree control presents information as a hierarchy, with items that may be expanded -to show further items. Items in a tree control are referenced by wxTreeItemId handles. +to show further items. Items in a tree control are referenced by wxTreeItemId handles, +which may be tested for validity by calling wxTreeItemId::IsOk. To intercept events from a tree control, use the event table macros described in \helpref{wxTreeEvent}{wxtreeevent}. @@ -233,13 +234,23 @@ Creates the tree control. See \helpref{wxTreeCtrl::wxTreeCtrl}{wxtreectrlconstr} \func{void}{Delete}{\param{const wxTreeItemId\&}{ item}} -Deletes the specified item. +Deletes the specified item. A {\tt EVT\_TREE\_DELETE\_ITEM} event will be +generated. \membersection{wxTreeCtrl::DeleteAllItems}\label{wxtreectrldeleteallitems} \func{void}{DeleteAllItems}{\void} -Deletes all the items in the control. +Deletes all the items in the control. Note that this will {\bf not} generate +any events unlike \helpref{Delete}{wxtreectrldelete} method. + +\membersection{wxTreeCtrl::DeleteChildren}\label{wxtreectrldeletechildren} + +\func{void}{DeleteChildren}{\param{const wxTreeItemId\& }{item}} + +Deletes all children of the given item (but not the item itself). Note that +this will {\bf not} generate any events unlike +\helpref{Delete}{wxtreectrldelete} method. \membersection{wxTreeCtrl::EditLabel}\label{wxtreectrleditlabel} @@ -338,13 +349,14 @@ For this enumeration function you must pass in a `cookie' parameter which is opaque for the application but is necessary for the library to make these functions reentrant (i.e. allow more than one enumeration on one and the same object simultaneously). The cookie passed to -GetFirstChild and GetNextChild should be the same. +GetFirstChild and GetNextChild should be the same variable. Returns an invalid tree item if there are no further children. \wxheading{See also} -\helpref{wxTreeCtrl::GetNextChild}{wxtreectrlgetnextchild} +\helpref{wxTreeCtrl::GetNextChild}{wxtreectrlgetnextchild}, +\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling} \pythonnote{In wxPython the returned wxTreeItemId and the new cookie value are both returned as a tuple containing the two values.} @@ -370,6 +382,12 @@ Returns the normal image list. Returns the current tree control indentation. +\membersection{wxTreeCtrl::GetItemBackgroundColour}\label{wxtreectrlgetitembackgroundcolour} + +\constfunc{wxColour}{GetItemBackgroundColour}{\param{const wxTreeItemId\&}{ item}} + +Returns the background colour of the item. + \membersection{wxTreeCtrl::GetItemData}\label{wxtreectrlgetitemdata} \constfunc{wxTreeItemData*}{GetItemData}{\param{const wxTreeItemId\&}{ item}} @@ -397,6 +415,12 @@ tree->GetItemData( item )->GetData(); ).} \end{twocollist}} } +\membersection{wxTreeCtrl::GetItemFont}\label{wxtreectrlgetitemfont} + +\constfunc{wxFont}{GetItemFont}{\param{const wxTreeItemId\&}{ item}} + +Returns the font of the item label. + \membersection{wxTreeCtrl::GetItemImage}\label{wxtreectrlgetitemimage} \constfunc{int}{GetItemImage}{\param{const wxTreeItemId\& }{item}, @@ -421,6 +445,12 @@ item is expanded and the normal image is shown when it is collapsed) Returns the item label. +\membersection{wxTreeCtrl::GetItemTextColour}\label{wxtreectrlgetitemtextcolour} + +\constfunc{wxColour}{GetItemTextColour}{\param{const wxTreeItemId\&}{ item}} + +Returns the colour of the item label. + \membersection{wxTreeCtrl::GetLastChild}\label{wxtreectrlgetlastchild} \constfunc{wxTreeItemId}{GetLastChild}{\param{const wxTreeItemId\&}{ item}} @@ -430,6 +460,7 @@ Returns the last child of the item (or an invalid tree item if this item has no \wxheading{See also} \helpref{GetFirstChild}{wxtreectrlgetfirstchild}, +\helpref{wxTreeCtrl::GetNextSibling}{wxtreectrlgetnextsibling}, \helpref{GetLastChild}{wxtreectrlgetlastchild} \membersection{wxTreeCtrl::GetNextChild}\label{wxtreectrlgetnextchild} @@ -474,10 +505,19 @@ Returns an invalid tree item if there are no further siblings. Returns the next visible item. +\membersection{wxTreeCtrl::GetItemParent}\label{wxtreectrlgetitemparent} + +\constfunc{wxTreeItemId}{GetItemParent}{\param{const wxTreeItemId\&}{ item}} + +Returns the item's parent. + \membersection{wxTreeCtrl::GetParent}\label{wxtreectrlgetparent} \constfunc{wxTreeItemId}{GetParent}{\param{const wxTreeItemId\&}{ item}} +{\bf NOTE:} This function is deprecated and will only work if {\tt WXWIN\_COMPATIBILITY\_2\_2} +is defined. Use \helpref{wxTreeCtrl::GetItemParent}{wxtreectrlgetitemparent} instead. + Returns the item's parent. \pythonnote{This method is named {\tt GetItemParent} to avoid a name diff --git a/docs/latex/wx/treeevt.tex b/docs/latex/wx/treeevt.tex index 3889143b0f..98980ad290 100644 --- a/docs/latex/wx/treeevt.tex +++ b/docs/latex/wx/treeevt.tex @@ -20,8 +20,8 @@ functions that take a wxTreeEvent argument. \twocolwidtha{9cm} \begin{twocollist}\itemsep=0pt -\twocolitem{{\bf EVT\_TREE\_BEGIN\_DRAG(id, func)}}{The user has started dragging an item with the left mouse button.} -\twocolitem{{\bf EVT\_TREE\_BEGIN\_RDRAG(id, func)}}{The user has started dragging an item with the right mouse button.} +\twocolitem{{\bf EVT\_TREE\_BEGIN\_DRAG(id, func)}}{The user has started dragging an item with the left mouse button. The event handler must call {\bf wxTreeEvent::Allow()} for the drag operation to continue.} +\twocolitem{{\bf EVT\_TREE\_BEGIN\_RDRAG(id, func)}}{The user has started dragging an item with the right mouse button. The event handler must call {\bf wxTreeEvent::Allow()} for the drag operation to continue.} \twocolitem{{\bf EVT\_TREE\_BEGIN\_LABEL\_EDIT(id, func)}}{Begin editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.} \twocolitem{{\bf EVT\_TREE\_END\_DRAG(id, func)}}{The user has released the mouse after dragging an item.} \twocolitem{{\bf EVT\_TREE\_END\_LABEL\_EDIT(id, func)}}{The user has finished editing a label. This can be prevented by calling \helpref{Veto()}{wxnotifyeventveto}.} diff --git a/docs/latex/wx/tsizer.tex b/docs/latex/wx/tsizer.tex index 4f60169188..618c9f7b04 100644 --- a/docs/latex/wx/tsizer.tex +++ b/docs/latex/wx/tsizer.tex @@ -3,7 +3,8 @@ Classes: \helpref{wxSizer}{wxsizer}, \helpref{wxGridSizer}{wxgridsizer}, \helpref{wxFlexGridSizer}{wxflexgridsizer}, \helpref{wxBoxSizer}{wxboxsizer}, \helpref{wxStaticBoxSizer}{wxstaticboxsizer}, -\helpref{wxNotebookSizer}{wxnotebooksizer} +\helpref{wxNotebookSizer}{wxnotebooksizer}, +\helpref{CreateButtonSizer}{createbuttonsizer} Sizers, as represented by the wxSizer class and its descendants in the wxWindows class hierarchy, have become the method of choice to @@ -192,7 +193,7 @@ the buttons shall be centred as the width of the dialog changes. It is the unique feature of a box sizer, that it can grow in both directions (height and width) but can distribute its growth in the main direction (horizontal for a row) {\it unevenly} among its children. In our example case, the vertical sizer is supposed to propagate all its -height changes to only the text area, not to the button area. This is determined by the {\it option} parameter +height changes to only the text area, not to the button area. This is determined by the {\it proportion} parameter when adding a window (or another sizer) to a sizer. It is interpreted as a weight factor, i.e. it can be zero, indicating that the window may not be resized at all, or above zero. If several windows have a value above zero, the value is interpreted @@ -312,3 +313,25 @@ aware of: box around the sizer. Note that this static box has to be created separately. +\subsection{CreateButtonSizer}\label{createbuttonsizer} + +As a convenience, CreateButtonSizer ( long flags ) can be used to create a standard button sizer +in which standard buttons are displayed. The following flags can be passed to this function: + + +\begin{verbatim} + wxYES_NO // Add Yes/No subpanel + wxYES // return wxID_YES + wxNO // return wxID_NO + wxNO_DEFAULT // make the wxNO button the default, otherwise wxYES or wxOK button will be default + + wxOK // return wxID_OK + wxCANCEL // return wxID_CANCEL + wxHELP // return wxID_HELP + + wxFORWARD // return wxID_FORWARD + wxBACKWARD // return wxID_BACKWARD + wxSETUP // return wxID_SETUP + wxMORE // return wxID_MORE + +\end{verbatim} diff --git a/docs/latex/wx/tstring.tex b/docs/latex/wx/tstring.tex index b40d241257..d69304d57e 100644 --- a/docs/latex/wx/tstring.tex +++ b/docs/latex/wx/tstring.tex @@ -9,8 +9,8 @@ wxString is a class which represents a character string of arbitrary length (lim arbitrary characters. The ASCII NUL character is allowed, although care should be taken when passing strings containing it to other functions. -wxString works with both ASCII (8 bit characters) as well as UNICODE (16 but -characters) strings. +wxString works with both ASCII (traditional, 7 or 8 bit, characters) as well as +Unicode (wide characters) strings. This class has all the standard operations you can expect to find in a string class: dynamic memory management (string extends to accommodate new characters), @@ -48,9 +48,10 @@ very useful but don't exist in most of other string classes: for example, \helpref{BeforeLast}{wxstringbeforelast}, \helpref{operator<<}{wxstringoperatorout} or \helpref{Printf}{wxstringprintf}. Of course, all the standard string operations are supported as well. -\item {\bf UNICODE} In this release, wxString only supports {\it construction} from -a UNICODE string, but in the next one it will be capable of also storing its -internal data in either ASCII or UNICODE format. +\item {\bf Unicode} wxString is Unicode friendly: it allows to easily convert +to and from ANSI and Unicode strings in any build mode (see the +\helpref{Unicode overview}{unicode} for more details) and maps to either +{\tt string} or {\tt wstring} transparently depending on the current mode. \item {\bf Used by wxWindows} And, of course, this class is used everywhere inside wxWindows so there is no performance loss which would result from conversions of objects of any other string class (including std::string) to diff --git a/docs/latex/wx/ttreectl.tex b/docs/latex/wx/ttreectl.tex index 30847cf1d9..4298d96a6b 100644 --- a/docs/latex/wx/ttreectl.tex +++ b/docs/latex/wx/ttreectl.tex @@ -6,7 +6,8 @@ The tree control displays its items in a tree like structure. Each item has its own (optional) icon and a label. An item may be either collapsed (meaning that its children are not visible) or expanded (meaning that its children are shown). Each item in the tree is identified by its {\it itemId} which is of -opaque data type {\it wxTreeItemId}. +opaque data type {\it wxTreeItemId}. You can test whether an item is valid +by calling wxTreeItemId::IsOk. The items text and image may be retrieved and changed with \helpref{GetItemText}{wxtreectrlgetitemtext}/\helpref{SetItemText}{wxtreectrlsetitemtext} diff --git a/docs/latex/wx/tunicode.tex b/docs/latex/wx/tunicode.tex index 693edee8e5..562fcf5834 100644 --- a/docs/latex/wx/tunicode.tex +++ b/docs/latex/wx/tunicode.tex @@ -160,7 +160,7 @@ Although everything works fine inside the program, things can get nasty when it tries to communicate with the outside world which, sadly, often expects ANSI strings (a notable exception is the entire Win32 API which accepts either Unicode or ANSI strings and which thus makes it unnecessary to ever perform -any conversions in the program). +any conversions in the program). GTK 2.0 only accepts UTF-8 strings. To get a ANSI string from a wxString, you may use the mb\_str() function which always returns an ANSI @@ -175,13 +175,14 @@ the Unicode string. \subsection{Unicode-related compilation settings} You should define {\tt wxUSE\_UNICODE} to $1$ to compile your program in -Unicode mode. Note that it currently only works in Win32 and that some parts of +Unicode mode. Note that it currently only works in Win32 and GTK 2.0 and +that some parts of wxWindows are not Unicode-compliant yet (ODBC classes, for example). If you compile your program in ANSI mode you can still define {\tt wxUSE\_WCHAR\_T} to get some limited support for {\tt wchar\_t} type. This will allow your program to perform conversions between Unicode strings and -ANSI ones (\helpref{wxEncodingConverter}{wxencodingconverter} depends on this -partially) and construct wxString objects from Unicode strings (presumably read +ANSI ones (using \helpref{wxMBConv classes}{mbconvclasses}) +and construct wxString objects from Unicode strings (presumably read from some external file or elsewhere). diff --git a/docs/latex/wx/txtstrm.tex b/docs/latex/wx/txtstrm.tex index 800089f14c..af5deb60a5 100644 --- a/docs/latex/wx/txtstrm.tex +++ b/docs/latex/wx/txtstrm.tex @@ -39,8 +39,11 @@ For example: \func{}{wxTextInputStream}{\param{wxInputStream\&}{ stream}} +\func{}{wxTextInputStream}{\param{wxInputStream\&}{ stream}, \param{wxMBConv\&}{ conv = wxMBConvUTF8}} + Constructs a text stream object from an input stream. Only read methods will -be available. +be available. The second form is available only in Unicode mode and lets +you set the encoding of the text. \wxheading{Parameters} @@ -139,11 +142,10 @@ and Unix in their native formats (concerning the line ending). \membersection{wxTextOutputStream::wxTextOutputStream}\label{wxtextoutputstreamconstr} -\func{}{wxTextOutputStream}{\param{wxOutputStream\&}{ stream}, \param{wxEOL}{ mode = wxEOL\_NATIVE}} +\func{}{wxTextOutputStream}{\param{wxOutputStream\&}{ stream}, \param{wxEOL}{ mode = wxEOL\_NATIVE}, \param{wxMBConv\&}{ conv = wxMBConvUTF8}} Constructs a text stream object from an output stream. Only write methods will -be available. - +be available. The second form is only available in Unicode mode. \wxheading{Parameters} \docparam{stream}{The output stream.} diff --git a/docs/latex/wx/upduievt.tex b/docs/latex/wx/upduievt.tex index 925f4b6ef0..ef4cd1fbb1 100644 --- a/docs/latex/wx/upduievt.tex +++ b/docs/latex/wx/upduievt.tex @@ -5,6 +5,7 @@ to give an application the chance to update various user interface elements. \wxheading{Derived from} +\helpref{wxCommandEvent}{wxcommandevent}\\ \helpref{wxEvent}{wxevent}\\ \helpref{wxObject}{wxobject} diff --git a/docs/latex/wx/valtext.tex b/docs/latex/wx/valtext.tex index 0973e9df20..87ca0bb22b 100644 --- a/docs/latex/wx/valtext.tex +++ b/docs/latex/wx/valtext.tex @@ -55,8 +55,8 @@ checks if each input character is in the list (one character per list element), \docparam{valPtr}{A pointer to a wxString variable that contains the value. This variable should have a lifetime equal to or longer than the validator lifetime (which is usually -determined by the lifetime of the window). If NULL, the validator uses its own internal -storage for the value.} +determined by the lifetime of the window). % If NULL, the validator uses its own internal storage for the value. NOT TRUE +} \membersection{wxTextValidator::\destruct{wxTextValidator}} diff --git a/docs/latex/wx/window.tex b/docs/latex/wx/window.tex index a885f34a52..9775530617 100644 --- a/docs/latex/wx/window.tex +++ b/docs/latex/wx/window.tex @@ -3,13 +3,13 @@ wxWindow is the base class for all windows. Any children of the window will be deleted automatically by the destructor before the window itself is deleted. -Please note that we documented a number of handler functions (OnChar(), OnMouse() etc.) in this -help text. These must not be called by a user program and are documented only for illustration. -On several platforms, only a few of these handlers are actually written (they are not always -needed) and if you are uncertain on how to add a certain behaviour to a window class, intercept -the respective event as usual and call \helpref{wxEvent::Skip}{wxeventskip} so that the native -platform can implement its native behaviour or just ignore the event if nothing needs to be -done. +%Please note that we documented a number of handler functions (OnChar(), OnMouse() etc.) in this +%help text. These must not be called by a user program and are documented only for illustration. +%On several platforms, only a few of these handlers are actually written (they are not always +%needed) and if you are uncertain on how to add a certain behaviour to a window class, intercept +%the respective event as usual and call \helpref{wxEvent::Skip}{wxeventskip} so that the native +%platform can implement its native behaviour or just ignore the event if nothing needs to be +%done. \wxheading{Derived from} @@ -521,6 +521,16 @@ The search is recursive in both cases. Sizes the window so that it fits around its subwindows. This function won't do anything if there are no subwindows. +\membersection{wxWindow::FitInside}\label{wxwindowfitinside} + +\func{virtual void}{FitInside}{\void} + +Similar to \helpref{Fit}{wxwindowfit}, but sizes the interior (virtual) size +of a window. Mainly useful with scrolled windows to reset scrollbars after +sizing changes that do not trigger a size event, and/or scrolled windows without +an interior sizer. This function similarly won't do anything if there are no +subwindows. + \membersection{wxWindow::Freeze}\label{wxwindowfreeze} \func{virtual void}{Freeze}{\void} @@ -535,6 +545,16 @@ wxTextCtrl under wxGTK) but is not implemented on all platforms nor for all controls so it is mostly just a hint to wxWindows and not a mandatory directive. +\membersection{wxWindow::GetAdjustedBestSize}\label{wxwindowgetadjustedbestsize} + +\constfunc{wxSize}{GetAdjustedBestSize}{\void} + +This method is similar to \helpref{GetBestSize}{wxwindowgetbestsize}, except +in one thing. GetBestSize should return the minimum untruncated size of the +window, while this method will return the largest of BestSize and any user +specified minimum size. ie. it is the minimum size the window should currently +be drawn at, not the minimal size it can possibly tolerate. + \membersection{wxWindow::GetBackgroundColour}\label{wxwindowgetbackgroundcolour} \constfunc{virtual wxColour}{GetBackgroundColour}{\void} @@ -1074,8 +1094,8 @@ window). Invokes the constraint-based layout algorithm or the sizer-based algorithm for this window. -See \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout} on when -this function gets called automatically using auto layout. +See \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout}: when auto +layout is on, this function gets called automatically when the window is resized. \membersection{wxWindow::LoadFromResource}\label{wxwindowloadfromresource} @@ -1759,6 +1779,19 @@ erased.} \docparam{rect}{If non-NULL, only the given rectangle will be treated as damaged.} +\wxheading{See also} + +\helpref{wxWindow::RefreshRect}{wxwindowrefreshrect} + +\membersection{wxWindow::RefreshRect}\label{wxwindowrefreshrect} + +\func{virtual void}{Refresh}{\param{const wxRect\& }{rect}} + +Redraws the contents of the given rectangle: the area inside it will be +repainted. + +This is the same as \helpref{Refresh}{wxwindowrefresh} but has a nicer syntax. + \membersection{wxWindow::ReleaseMouse}\label{wxwindowreleasemouse} \func{virtual void}{ReleaseMouse}{\void} @@ -2682,6 +2715,17 @@ Returns {\tt FALSE} if a transfer failed. \helpref{wxWindow::TransferDataFromWindow}{wxwindowtransferdatafromwindow},\rtfsp \helpref{wxValidator}{wxvalidator}, \helpref{wxWindow::Validate}{wxwindowvalidate} +\membersection{wxWindow::Update}\label{wxwindowupdate} + +\func{virtual void}{Update}{\void} + +Calling this method immediately repaints the invalidated area of the window +while this would usually only happen when the flow of control returns to the +event loop. Notice that this function doesn't refresh the window and does +nothing if the window hadn't been already repainted. Use +\helpref{Refresh}{wxwindowrefresh} first if you want to immediately redraw the +window unconditionally. + \membersection{wxWindow::Validate}\label{wxwindowvalidate} \func{virtual bool}{Validate}{\void} diff --git a/docs/latex/wx/wizard.tex b/docs/latex/wx/wizard.tex index 2ae93d6650..ebe73802ee 100644 --- a/docs/latex/wx/wizard.tex +++ b/docs/latex/wx/wizard.tex @@ -55,6 +55,7 @@ changed (this event can be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_CANCEL(id, func)}}{The user attempted to cancel the wizard (this event may also be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_HELP(id, func)}}{The wizard help button was pressed.} +\twocolitem{{\bf EVT\_WIZARD\_FINISHED(id, func)}}{The wizard finished button was pressed.} \end{twocollist}% \wxheading{Extended styles} @@ -134,9 +135,9 @@ also \helpref{GetBitmap}{wxwizardpagegetbitmap}.} \docparam{pos}{The position of the dialog, it will be centered on the screen by default.} -\membersection{wxWizard::Fit}\label{wxwizardfit} +\membersection{wxWizard::FitToPage}\label{wxwizardfittopage} -\func{void}{Fit}{\param{const wxWizardPage* }{firstPage}} +\func{void}{FittoPage}{\param{const wxWizardPage* }{firstPage}} Sets the page size to be big enough for all the pages accessible via the given {\it firstPage}, i.e. this page, its next page and so on. @@ -160,6 +161,32 @@ Get the current page while the wizard is running. {\tt NULL} is returned if Returns the size available for the pages. +\membersection{wxWizard::HasNextPage}\label{wxwizardhasnextpage} + +\func{virtual bool}{HasNextPage}{\param{wxWizardPage *}{page}} + +Return {\tt TRUE} if this page is not the last one in the wizard. The base +class version implements this by calling +\helpref{page->GetNext}{wxwizardpagegetnext} but this could be undesirable if, +for example, the pages are created on demand only. + +\wxheading{See also} + +\helpref{HasPrevPage}{wxwizardhasprevpage} + +\membersection{wxWizard::HasPrevPage}\label{wxwizardhasprevpage} + +\func{virtual bool}{HasPrevPage}{\param{wxWizardPage *}{page}} + +Return {\tt TRUE} if this page is not the last one in the wizard. The base +class version implements this by calling +\helpref{page->GetPrev}{wxwizardpagegetprev} but this could be undesirable if, +for example, the pages are created on demand only. + +\wxheading{See also} + +\helpref{HasNextPage}{wxwizardhasnextpage} + \membersection{wxWizard::RunWizard}\label{wxwizardrunwizard} \func{bool}{RunWizard}{\param{wxWizardPage* }{firstPage}} diff --git a/docs/latex/wx/wizevt.tex b/docs/latex/wx/wizevt.tex index d375939ec4..1d0ba404b5 100644 --- a/docs/latex/wx/wizevt.tex +++ b/docs/latex/wx/wizevt.tex @@ -40,6 +40,7 @@ changed (this event can be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_CANCEL(id, func)}}{The user attempted to cancel the wizard (this event may also be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_HELP(id, func)}}{The wizard help button was pressed.} +\twocolitem{{\bf EVT\_WIZARD\_FINISHED(id, func)}}{The wizard finished button was pressed.} \end{twocollist}% \wxheading{See also} diff --git a/docs/latex/wx/wx.css b/docs/latex/wx/wx.css new file mode 100644 index 0000000000..8538a02d64 --- /dev/null +++ b/docs/latex/wx/wx.css @@ -0,0 +1,179 @@ +body +{ + padding: 0px 0px 0px 0px; + background: #ffffff; + color: #000000; + font-family: Verdana, Arial, Helvetica, sans-serif; +} + +div +{ + width: 90%; + border: 2px solid #999999; + padding: 4px 8px; + background: #cccccc; +} + +h1, h2, h3, h4 +{ + font-family: Verdana, Arial, Helvetica, sans-serif; +} + +h1 +{ + font-size: 200%; + margin-top: 1em; + margin-bottom: .6em; +} + +h2 +{ + font-size: 150%; + margin-top: 1em; + margin-bottom: .6em; +} + +h3 +{ + font-size: 120%; + margin-left: 0px; + margin-bottom: 0.2em; + margin-top: 1.5em; +} + +h4 +{ + margin-top: 1em; + margin-bottom: .6em; +} + +h5 +{ + margin-bottom: 1em; + margin-top: 1.5em; +} + + +ul p, ol p, dl p +{ + margin-left: 0em; +} + +p +{ + margin-top: .6em; + margin-bottom: .6em; +} + +dl +{ + margin-top: 0em; +} + +dd +{ + margin-bottom: 0em; + margin-left: 1.5em; +} + +dt +{ + margin-top: .6em; +} + +ul, ol +{ + margin-top: .6em; + margin-bottom: 0em; +} + +ol +{ + margin-left: 3.6em; +} + +ul +{ + list-style-type: disc; + margin-left: 1.9em; +} + +li +{ + margin-bottom: .6em; +} + +tt +{ + font-family: Andale Mono, Courier New, Courier, mono; +} + +pre +{ + margin-top: .6em; + margin-bottom: .6em; + margin-left: 2em; + margin-right: 2em; + font-family: Andale Mono, Courier New, Courier, mono; + color: #550000; + background: #eeeeee; +} + +table +{ + width: 90%; + background: #999999; + margin-top: 0em; + margin-bottom: .3em; + background: #ffffff; +} + +th +{ + padding: 2px 4px; + background: #dddddd; + text-align: left; + vertical-align: top; + margin: .25em; +} + +td +{ + margin: .25em; + padding: 2px 4px; + background: #eeeeee; + vertical-align: top; +} + +tr +{ + margin: .25em; + vertical-align: top; +} + +a:link +{ + color: #0066ff; +} + +a:visited +{ + color: #996600; +} + +a:hover +{ + color: #cc9900; +} + + + +body, td, pre, tt +{ + font-size: 100%; +} + +h4, th +{ + font-size: 120%; +} diff --git a/docs/latex/wx/wx.hpj b/docs/latex/wx/wx.hpj index 07caa08bae..037b040bba 100644 --- a/docs/latex/wx/wx.hpj +++ b/docs/latex/wx/wx.hpj @@ -1,5 +1,5 @@ [OPTIONS] -BMROOT=c:\wx2dev\wxWind~1\docs/latex/wx ; Assume that bitmaps are where the source is +BMROOT=c:\wx24\wxwind~1\docs/latex/wx ; Assume that bitmaps are where the source is TITLE=wxWindows Manual CONTENTS=Contents COMPRESS=HIGH diff --git a/docs/latex/wx/wxgtk.tex b/docs/latex/wx/wxgtk.tex index 8d12d3b588..2b2d8c176b 100644 --- a/docs/latex/wx/wxgtk.tex +++ b/docs/latex/wx/wxgtk.tex @@ -5,7 +5,7 @@ from www.gtk.org. It makes use of GTK+'s native widgets wherever possible and uses wxWindows' generic controls when needed. GTK+ itself has been ported to a number of systems, but so far only the original X11 version is supported. Support for the recently released -GTK+ 2.0 including Unicode support is still under construction. +GTK+ 2.0 including Unicode support is work in progress. You will need GTK+ 1.2.3 or higher which is available from: diff --git a/docs/latex/wx/wxstring.tex b/docs/latex/wx/wxstring.tex index 9ab8067f36..0ba4b7638a 100644 --- a/docs/latex/wx/wxstring.tex +++ b/docs/latex/wx/wxstring.tex @@ -660,7 +660,7 @@ If {\it fromEnd} is TRUE, reverse search direction. If {\bf caseSensitive}, comparison is case sensitive (the default). -Returns the index of the first item matched, or NOT\_FOUND. +Returns the index of the first item matched, or wxNOT\_FOUND. % TODO %\membersection{wxString::insert}\label{wxstringinsert} diff --git a/docs/latex/wx/xmlres.tex b/docs/latex/wx/xmlres.tex index 16d57d69fa..1b5974706a 100644 --- a/docs/latex/wx/xmlres.tex +++ b/docs/latex/wx/xmlres.tex @@ -229,6 +229,12 @@ Loads a toolbar. Sets the global resources object and returns a pointer to the previous one (may be NULL). +\membersection{wxXmlResource::SetFlags}\label{wxxmlresourcesetflags} + +\func{int}{SetFlags}{\void} + +Sets flags (bitlist of wxXRC\_USE\_LOCALE and wxXRC\_NO\_SUBCLASSING). + \membersection{wxXmlResource::UpdateResources}\label{wxxmlresourceupdateresources} \func{void}{UpdateResources}{\void} diff --git a/docs/latex/wx/xmlresh.tex b/docs/latex/wx/xmlresh.tex index b469b224bc..eb6e2ba273 100644 --- a/docs/latex/wx/xmlresh.tex +++ b/docs/latex/wx/xmlresh.tex @@ -56,6 +56,13 @@ Add styles common to all wxWindow-derived classes. Returns TRUE if it understands this node and can create a resource from it, FALSE otherwise. +\wxheading{Note} + +You must {\bf not} call any wxXmlResourceHandler methods except +\helpref{IsOfClass}{wxxmlresourcehandlerisofclass} from this method! The instance +is not yet initialized with node data at the time CanHandle is called and it is only +safe to operate on {\it node} directly or to call IsOfClass. + \membersection{wxXmlResourceHandler::CreateChildren}\label{wxxmlresourcehandlercreatechildren} \func{void}{CreateChildren}{\param{wxObject* }{parent}, \param{bool }{this\_hnd\_only = FALSE}} diff --git a/docs/mac/SetTypeFromExtension.sea.hqx b/docs/mac/SetTypeFromExtension.sea.hqx index c13813779d..8ec967d057 100755 --- a/docs/mac/SetTypeFromExtension.sea.hqx +++ b/docs/mac/SetTypeFromExtension.sea.hqx @@ -1,2637 +1,3137 @@ (This file must be converted with BinHex 4.0) -:'&0PG&4jF'9'FQpY4AKdC@jcD@pZ,R0PB3""8&"-BA9cG#%!N!0(8J!"U0@CV90 -dG@CQ5A3J+'-T-6Nj0bda16Ni)%&XB@4ND@iJ8hPcG'9YFb`J5@jM,L`JD(4dF$S -[,hH3!bjKE'&NC'PZFhPc,Q0[E5p6G(9QCNPd,`d+'J!&%!!!4e)!N!0b!!%!N!0 -b6G80TD95CA0PFRCPC+@P!+@3"!%!!%3!!,D!![bh`B*6!*!0&(4i!*!18f9d9(P -`C8CbEfe&H(4PER0TEfi!!4VV39"36%&8)$8K!2q3"!#3#S!!N!QDZ3!!4QS!N!3 -2!%,"e5%)JpM$!kkic&Td8mAl6IVd3E%@86&kQ$[45S*0"IHbqmDJL)!VXqR0Je# -@%QEr**63T5KSfm4Np%h3qbFJHVP!@%DRCII$[9X[JemmSP!j%Ql[h4[3A-Uj6`k -Q[CH*1C&EL%5jZ90"J-Cp$Lk3!1f4j'825BlL[D)#Y[6Ta[5SHTYJN`2`IN6&2p0 -bB-,qRNfpZ2i`b1I)q!DQk6q&C#Eca,UeiSK2DA-+FPXIpi9&r&!DEEp-3Q9Z@AG -4l+Pa'8U-DDIY%rTl@A*6p*ESM[GF+"N1PYR-6HZB89V3lUKJF-1SmI#F(i-$l`& -FYd+R8eVEHQEIQmXJjrkG*IPLRK8rQmkBfAZ#Rk3MG3kVc+hDfcIJ59p0Tkb8"Dc -25mFIU,lPLT5SIp2iR8TcIU)q*%V!@0&VFY!r)q8SkI8FB&L4B0mQF+H0JE2,3+) -M9"b14MNMU8YMV0r`V0'1ZRDL[b`bX'&-DB,rNCJD1+EP`m#kA)&*me2Rk$B6B'6 -$Q&#f($idf0['m,S#pZIGlKB)LLTb`ZXXBIp$VmPVl$$i%0AbCGQp9pf@K,IAF2j -`N!#-(2(f0QAF85Bijrq[(3UYF+$Cp@8PC6KQ5F9)j6c%m3P!A1#@-3Kfm$1+FUi -fjA(Heh6p@L64-`AZal#r,&!%1aHSbcQ"S[fJq3$APc[#Sq0mJVmJGr1GN!#0(eb -a4`YF'U@j8ADj$YAYcpc2mCXlr'1U&1aE(U@&L$cpNV[lIh2IZHZl!eXpYek2Y[' -Zm-+E[PTB+*kLI8h9Jj5mb,BCmpH0Gk9$X'!aiQYUK0'$CqE,A!Bf"aX%8h$*P!H -$ke$(bq'K!*p"mSQX+4J%A-$9'-2K56cEiRGRAqD+`!m+N!!#`mp2TPV"6b4Jk9d -iXj4qIULT09M@JN4FA%D8ma0Y1Q,*JY-Td3Hqd[i`US0KTpqP$RkR,C@d+&5Xiai -MAC-5#MGDcpD6GKKkrM@E#rH(ND#%hBd,%"RJX-&CCRL4@Q1!'3,`5d`f&f[MFa( -9LRaLhYlKjKXPRNI%!Y9pR@4Z,kQ2e@1AqTHYN[ihdL1$1AL@[lEZbQ%RYZM"@X) -%aLNRY@U`92`am&dVXSj$%IHZXIi8Y#56CHbEP[2P-XG#J8hQ[([faTrYh2*k4$' -#E4T@Afe#'[`plfLMY!M,0eN"i[&IE2)I$`$$9r+cNcB2Z-$#CDm,j#63qHNFd5E -0l3)fE'UQdmNU#9X5XN0M#H9frZdN$)Gm)$@dXZH(U2lA9)j2PjBC&jYL@K4pEr` -ffK&pR$Xak[3Z+NG42B51m(*+0FrbDC!!pMiS43eIfCa1aP)`Tr"(#TCcS$ESaaD -"A%U`Y'5%R*l(&PbdNH4E`(c0JhH5`CRkM0P#qe%ihK%ZC$ZN3IA6Te%B)Q-kF2V -0rf&@$F5Pb&brajp8"Ni`(,*e"A"C`#fElhD,,#U1pqGr2CpVrD5f(Ub1E'+6"lV -,a89e56%hR-8lb%8Z[[AY8c+D@i`@Uq6c0SRefM$$VpdKC,FE`AMk0RYcIr+A(4e -CHhK0p893KM)4LUVjJAmBdKU""8*SI8i`5--Nl4rFil"PfU+-e0KU0*Q#)BQK$9$ -lhGImAYl,kUX'NcMil#lLer)H`dNB*6klaedYE2*J2U16!%Vl-rE&I$Pke5VTc(@ -GPDijhDUPbmjk@Jaahe"QR(`QRHmYF8mH"QU%"E8bYX3ZC&6r([Mq&ZrHbakH#rA -[e&G2[&6,IVk6)V*rk),CfKDL'EX!GIK$TF#3!'SVclI!@2Qb"FHMpM,K*h%KabN -'fZp#'XrMcl5R8jYA%UFH$!9NI"CP#P"h9p-AG0EkH!5Za96fTqJ5T'!M&RX-L,J -'bLadPJBc`ca1pdf#Jij*H15aY2)l[rh4TJT$9XZ$NNEY"2G-MFTMqUD(Rp-GNIq -'L(B)5+CV2*1!qE*FMibI$YJIp%V(2XG30qVqbEH"b*JGXp*2QJ"!@eF!J(fKi"6 -afHRBC1YHShA*Q0m&qr1KIZlQ#-lVm,pV,l%S+&C5Y-'56mj3YM8M2h4Y(8GE606 -+Fje2dT!!1D0lT)I2qRN1Z(cLYl3#`U,B4G5,UjG#*U@6JfCi2Pp4+4,FIAfipTq -ie"$R8EYE-)Af#NqMQGKKJaAk&$4dDM#+XZe&Gbl+6LNZbl4PF+C$jSe)bi9"RXM -j*k83%3De!JY0'eD8U3[JJ,J5VPd`Tl`,Rjc2*ACTpHrP6C2&kAE14EH,C*[M,)4 -M6%ik,ccJ"q,p+qi#rI5QHARa4qqbjbAV2`rDPNP#iXIVBCFKiRLrLGD1pI5"@j4 -6E+SVHIi4c44@[6j5hM@,-G2m+KEU,MV2`9UFcAYVa6eH2CQ5`*8rP+9ZmE9Qb$1 -&lAGi#P9Z6aIR$Zblh*UI-+3%V"Ph)'((F9l&fQ`qUckD65L+BCT`mj-`XQk$0q+ -'a52lf2-+l*khjbhlCCQN3qfbS8[133a%$p!+-'q)&#MmF(f[JVq@hdQZk!B)FSK -Gj02%)5[`j1PD-"!CU6[hZ)9rk&Vef&+hQIM4+90F2`S8Y)I00cLMVLHfiD4T@B2 -"E5,,hBkZJ&%a0FpkSB&-c6)iKLLj025M48Y%Ck4cZ'CQIha8hlfcRepYi4diUcc -MGpd8RJ+A",'rMpD3!%)d)&9Zaf4ZijKIrUJEka@VmB#ZdIHj&qiq-q2"LQhq)2L -i-#Y'HLGR4eK5)I`Np"CD9S906I!-[D#e`-#lmdX0MS2T&RYRJ6%ad%&#DDS@CYD -"cbQ`B[05P-M-Qba[#C!!G'AK)Y$ARQppR!LUN!#(#0Lcp"cYF8HMZG'`TUGQ6GJ -H`4mf1V'fqL5TJ(9%Mrh`2SVRiIMeGZQBA"&i58m"BG1F@TaA#!D28-XLY+4!AV4 -MFDl3&j&)"ZKla,VVJ-8BP3IAVLr0iQkpJSQk5%*2Am%U3Nk&G(99KpmfD[C0qRC -Lc)q*(dQF"Gpd0cR5Xa%G#Ji[FC-PHkHlS59ZY)(#&pH5#f$&(B5$U@LY5-@Y214 -0'lpDCSl@DP`plkDj#TI$+#l`[&4Td4rP061CpqFFVXX`8A3)a)C+"h$2&Z9+)Jp -$5!l8r#F5%j-UY6Vf[r%,V$"3I#MXj%$#Sbi#!(jDB3fG[HrHU53j6b,S[YQK'ph -TI*Xjb(T@R6cP$4X`TQi[cBPThhPhA%X418#(190'T[GZ2DC4,(hB36X[HT!!#fq -rR&hmG+ZCb4ZY`T16S3m5VQ8eAcK,*Z)H(,,,LYF%fcj25MKa(BVf0"(YD!3d-TB -md(R2(cPK!Njaqhk29[PeJ,e$DDF+DD,Ye5X&"Zk`ireH@XAT(6@L3EZBNI`X'k9 -",,pAB5bAZK*d'Aa`pDhQ@6%TBQ+SRD&V2APMc6mChCC%SkEUR&a`EqH*bhXb#') -Z91'pmAZ-U"CY4@P!kb"IlR$FX,!Ee,%9am2X10Sdj*68#B1CA(U1NTcm(LH0D)S -HDG!PepIG4T%`)0pFP#J84*3QD90&L[*D%@h0Vj+VZBZ,pYJ+"dlPR*+3!&"PU(Q -R2q+hPFRrP(SM0i+%3e@lCC[VjkBE-P0C@0q3!%'KR8dhd"EqEP5NVZ'a'G8"04! -A4(5D36(,GH-kS[4mCBZp4H&[*E*5PeEY0K9e5BVNF`lK9K#1K&5ekR!B)S4$8$q -@h60h-XE2JQcJ!9bK[V&T@U05P$ml"h1C+M%`VQFG0D#GqD"Zc%c$ka%bC'5"pEZ -U@(J1UQN+%%(%i@FcrLleX-C3GTX+VV!LDFh4Nm9F9Ki&$e[1+(li[Zci8D,Q0)F -V4q+$'6mr+A5jC63B,),Mi+fYHGRRNB0D9$GRY!Kf#CC8aHfBP$&FhHdL05aM,$V -3-9Z'*"Ga3Q!+lUaXA-Z!Fa@N[r3XC$3#*#3$m*!!$2@6Bid'I(Y,Se@,Z'cBCf! -Be(i+rb)bZHYE$[Jf1(H!5GrB2D"550a0NZ@JG&@'#D&fM2Sd%NLLIaI"`dhQ26+ -hbIG+`Qm'ZfQAV8Fe$!1)II))fj!!AppKl2(YZ##EEpi[pq$V%X5[Kb8J"k#lp$Q -)e4YAfX2d$"kHYlD*4SM)8SFDQ@9(H@Gc6ZP9IeI'4"NIU&eR5A[pjUcFjl1NiUC -kGRFd1C%Z+m*c#BGDam%-2h1k%39FRrbH,Gll!dEGj@$"!G)&RJqFd`$'K+8rT%+ -C2[9A2kbNkfj*`4e+S,mpIXQR1CB%46&EN!!k4dl+rrE!"M%*h%dBA)$"mTI`2"8 -"&'ia0))R*XPd`A4R6[ea-Yij3-3d85@U+Uf`6iG[GTVc`B@,cfTdCPE!H`1-M"c -I,FF5AHj!2lqd(0If,YeBFJK58++5R)8,YG*6'+Jh0Rfm$1P9FAhcBY'0CPkVj`8 -SZ5k`9rfM0"F*@c@(RemjL"B@M26'0GR)55I"SMR9jkh5Ml+Xl-fILF#RkS6[1Ii -m#@VfE@L&lE2jPaN&0U1CiNcmc'bbM(4q$'Z5ICSc#Hr9fe`38,h"h'qrBRCDpBf -KIh40Pe,EH)rPcT+&'ARB"QKZ4&@CSf0#+d8!h4j`(B8'-A%l!*Q%!P#$`MZKdYd -'-RNp"!0l9&'-IK9TRV`'*Uhr`SRJbQKdTX$S12'JjEeI*6l[L`G+IH+CflJPXee -F"em*f5K&mp!UGl+FAi%fRN($!#fR8#Nm[GcUAMf5p4FPXi@HBYR9dXYeIB,Y)6B -XbG0b&hck(1JR63Q9XAl!'d#DFjQff5!ahKF%9cVk,0d#m*L$,3$VMM@'+`4"-#8 -iA!jmbc11H&p*Qi-&'(I3C&-#ZBBaK3'U(di(dIcESk@R1l)k)%)PTPkB)@-lmSL -LkF3dKbJ*9*q,$VaC(Y!(H)8(fa)q9E-prHB!#8mZN!"ScTL)$941X-RiC8ALAq4 -3C8J@kc0dG9(i@!M26Vr*pmSJ6c00l0ci$c`p,4F+*3)bJdGfpiMr2P&1db`E(j9 -@"Tc9+VAV(aUa0#T321!eZ#8Sk9%[&0I'V9FC6G&[@XkYf4Jkiaad2I+#NVmaqJ$ -BAX"4",PN,Mp[KeY2Pm,MP&+pL*2lf`FfaZ#NcFL$De9d%re9X-UdYKh#4--PMHm -m*T42Q5B4KC,RldfZ&d9dTS0YAj!!mbqcce)HKV,(b"fN!U`kj[M&bLmE,N2)L8P -0P!K9`BV3UH!,5[cJ2['1"*TRPTZ(KeLK$C2f`9$KSFM"fUINm@8iAk%)'f2-+,i -1mMLS`JDP,bXY%9mFQ5RVp,,jece0AcRe$Q'D,#-)-9aU$35LAc$qALIT)A$3$#V -irhZ#)0bH!0YA6dkR$Jj8&1"48a4b'e4XFUIpb"L,TP[`AHQfT@G*T(0aU8,HRYm -,HprR0rHFB'!XGd#H5Fjp3B4UbG%8ADh,H'A81YRqcPScF""Y2c`Sc%+[8h[NFA` -`q09#kZF)c1Jd%FUIJY0ViXTla#im5(&F%h0h1@YZ["dB,(qZ#[r$5HkKU0L$JL+ -Ua8qc92'hTEfPHfA@!4V5-K2r#!SLYEBQq@,[,djbEV(9qA,'$lp'Hk!Ah$cfJ`E -'Nqq,)ZFUJ36+'XCX!rVKc3(9"[aArCa9mSL2U#AALTm`dMCD48%M&r9FcG@e!Mq -NAQe4ZABB'dNNbE9IRE0,(NZ!Dmc`dQ2F,%GPd$Md6B'!RS)d"XJ4Yde$!SqH!1D -ilT&[2JkY@0,)0a6-1#D'r+hGIc&I@V9%BEKG%d[kacSrb0FIr-EZrkKZ9YGJq4+ -9!jHG$4Xlh"Y(bZ`Fl8j+4(P[95NDADd[4Z+R2U#ifGdB-L'X,BEJpGS"flBpFK" -IV8i(Q'e`#Pm@,VHLTq[`!(HhYP&T",qP'L4)e)D'cT1MmpR(`a@A`S+F6"HPm`0 -I6+XUJCr0SD$h&rT,Q2[-3fc5UG,eE66KPHaPm[jZ$V'A!f'!a%3L,bJEa%3b*40 -LM#Hq5p$NCmlY&j03Nd1!#m&iI&jf@DA[Y5$NI84'X"$YA,XJETqSN3)J31q`EjP -3D`#%bpXcp1`qGBA6!8dbV4Kk*@EZ9&QjDCPeFe8@Md!MUlG!G!E6iQNEhe2!c0f -9$jJ0ILa996cPar"f35FeNeR0DVHE`Ih-5AKZG8GkN6MZ*,k"TF$)Ud'5G3pCY6' -B#Zd0&ar*4J#3!$9mVGND9YX!U)kQ8YmV0L-pmMC"fhf!6hpP(`ESe6`45`ILfKQ -F&8EADQeUA1NCqRNmBNZSLcd*,#"6)K$ElYAh%5XpFb,L0+E%X@RS'F6LeaEe,QD -2dC+&)[VV1jdIhX4IV%D1Tm"mHAiDLL`j6L[D$&j+cYSqFfXq5%F-42cHDd!4-bK -XZLF-[*6"`mTr682P58"E%YbrGC%cN!"m$V4)G19-"e3G-ckMd@EK03qSKmL`9fb -'[kiA!Ha&S)mK-E[1QK9)"&KrQ2%$-D1M)j*&V2`rEd,*&K+0VN6(FDLbM5hb'Y3 -eK%KQpSJ[dZ56cF`&J2MJF4A8+L@$U&q!BISHJ`3AeYk*KU-I,U"V&i+i6L3[#U2 -l4*'X[#PL2HEXimhFVS8G@,d)'F&@KUfc*i(%r!DXBkaJMZ$3l9RUX41feEIGc4- -&MF6ADLU#(pR"QQc0l,pC2[aUCIG`5EGY0`IM5Lldl`0kd(l'k1kBZe5U!-TN$4( -i9#N*6cZ,U0R`0`'bX),AbMDR-!DpU*m0&R%mBEKVSSYmFE8T@@+mK-JYLL+H-Zr -KhhBD[L3U@)0%q#Jbqm9e@jcVj$'p6ji%9,HRb!hr5Hi66c*+1VNV1bk+f)2h+DZ -NDkhKNT!!J6A'AqY$[KdU!+ALUA"6Xf3fHKM'EBKAQf!rPC,diVHLQM1Bd8(0,iC -aJUHbF!8hMP6r!"Sp511JLrb!LDGli9mmJp#Z$rU&-QkYkQB*5k24E30lp86@aq3 -S#82(dSlk9EX+&fTD)9'9`JMaPEA2[,FNLmcpFiQD-S4FdaMZY*YF1d4miJrP!JE -p+Z4mSrp4G,JrbTLZJmf9[QG4*Dq4qiSH!`kk5UmM+8KF`m5EUdpGk!3FaqrM45N -)4h`QF2%0F9*6IKfeKLCc9+Vf9[JAJc%llXeMP'',F'FVDH!4,-f"''C+YTjRBB+ -r4pS8mcE%DjK,U@i6h-hfeaZ1b%0F-8TLfZ3@kTmE`0'MRL$Z(+XrcU("+DjpDRC -d"p#hJejMF(HQpHQhUJrR2FBd#b"P$fELbFQ!0k16P@c*qNbi#@KEfG,bLFC4QY" -YGNf81Y0GhjSQEmEQISiE)2TC4-NfRrYY*m(1DXU`4S3(*V9Ll35EGqKCJPZ1bJI -HNH!4)mrD6D)PVGiTS3#p6R&JpA(TrCB0&0504+U#VYj5DbY#N!!I1mSe%iKPjX% -@a(Qhj'@[M6EdcchCdj%'ID!GE0$ICl[@M%kV5&rFPMM['QJ33fH&54r*RZ!AV#8 -mPN#9Epql-k3p$,Ch-FfM'JidZ"KHY3"!&-PY(f23R"B&TU)6B$p(L[)Xh0SYLCN -0PYEJ"3,6EH1diMLC9XBTIZRLhM(q0(U0JeTd()Zmrkr3J8-L(+hm(Ic%U@D6[mr -"6%piFH"cDr(pX!Q"'40-U-dr[I[6ERCcrDD2L[6C-!H"A01S'AhHU%JdVq[2fE2 -!M#&5EckCjBDZlIrR6EA5#IeeQ0Db#0cBMiAC5MTTMJ6ca"E#rdkE'Cb+!dQaY22 -JXATXqdBq9)Q)LY6&IZec9)ib`'*ZrekrYJTXI+i91"5C-X$@DQS8GC(lq(#Y(`Y -,%9'82dGmRc65LB0bU3jdGmK2D0-LSmaEZSpKP(rS0iT+Y%mh8fb`ap6bPCT@'11 -)&Qei1*jGm0MTUB-3C8iMbBpVAiXPDYe`UY35ZA4qZR'@SQ$6-)BhMk8JZRK[pi4 -)+1!ZiVVQ4S!%I%(kX$[l5X[X@hj#C%6Z`CQ6D2,%YNcl6[,'K+aNcj@QM[0lml@ -dk+6mKea+,p)L@NXML[ATIfU!,@Q`l9jJ3X5a+Xm6YEcMXCid8"EqbVI$$r&L1p( -l6"@Sl%q(*ld%fHBF3,J6Xk[$cE"$L#4f,Q8ZA`%F0L#$(VP#hEY&`'hcYZG#!AB -19Zc6(*cd&2U4bebE`'$1!E2TaMQl+rSbZkLeNNj)m1l,pSZ'-Z2ZXh'GC8Lfd0$ -*8J3Pd'cBP3T+qfN@!63A2Vh,9Brehb"P`KJhUfVHYfREUmq(6Q,Q)ajFlF[GS9E -U"(mTGL`qB"'pfQ%hBGlDIBjhN6GTQ"#,F-YT5I@hTD"`bKlQfUCZ#0%iCK'@%F1 -FAc-ZI"42YY8hK,3Aac9ENJT-LXd[iFU1T"&Z'1bqK@h*&G65`p)PN5EmKY(T-mf -4G812PkVGhM3+Fl@E6SaF%Ia0i6E'((H1N!#C2)[-40P23Ip(f)FXjN4E0(rkk`P -Sbj[X9!laT)F2X@ThX@3IRhDF,j'NcpQF130XN!"q!U8JZE)S5!X`M2E#cSXJ--V -*K,!jB8B25A46JUjJRi9$(LX2,rJNC%Zi[1,1EDh2fqmF,8Mdm)DBLqQRR+*M@T6 -iXh9TemApm)`AeIe-$hDHkDMAid0NeDXJ*bJ3&1VkNA%!YI,0YGLN5X5864rI*Tj -jZj%+#-f$4MBe0Q`+bMDr51N3B[&,ZZ6lIcID`IUcf62`#-PhibM%r40%q4eAM8b -@DBIi"[%0JGVMHmTHL&P0QaFZ08j9#GE!QP3'cil$9Dme2bb$#FTmERb$ic-'LTA -dLeQpa[(,PcfhBYKqB4Hh8&%9RZdrPJ$R$CV&B*iKFeZ@q`MBMFHaQJH8*kaRYed -#R-l#A1!BbL)HSCi`RfEe@%aN*-CjMj!!qeUb0Xd(KBVUXp`CC`%iiDJGd1ERA$a -XqX$"pY(N,38$mh1&%QhV-daMefp"ibLXjSbR!XjR5"*!dGGmq+8lBK9Th(,Z&BB -(LdGqS45B99$pK51a9erL6hUA+C8cjm8#X"TX&,H[`[0Y4A+FL)p[VQcK#CURkM* -!e$l5K,VbJ&)!'a0Z,a[q4l6C%"dm#A3-+FYhqND4JKficlPCcpS0dhklE,H6#C! -!Z38m$r#bc`8bhpbFPbP4m&`RhZ2G&ITrV-&XG0jp"NN4LJ0jE"MDmSP,[))qLF' -@&Nf4CjG!kCT0"l84,NGhal8SG`*+fE4)'XZfA59)!Ja0B[YPRHkLPK#9ITXR'Ak -NHK&QZc&QIYjLdRLFfQ"$!(GJURN9,)HeYedb1IQr2QcV$fT'GcSp!a!AXV-F1Vd -6h0mHS0DJIbd!c3Q,+dR"G&aSdh5m6rXHiMPaKeK$1RHZ8'CT2'X&U9Q9@PqNXU* -)0CZ*&1e!LA+aX@,(-LI1j@DKH6bEchm&`ceM`-2)@5!9V,SqAhj,T2d!'VS#P8+ -(DBFi*R%Ylk3fci8r`4(dqX-8G(%i%mRXU+G6q$)d9!DZ`1m8'K&p4NmMj(fc$43 -%P%*aSA*e3+"MmK2j9YFGMU9*D4`J2"K'%A$hTK"L-+ICKV#1prS1VEi@E98fG@& -kY,GL!4X%QbK32'3pDZmh3a-1IC5QI@!D441T&N6D5h&RSE(2lF$pd%YKRF1XDKj -BUjrEFATIE&)m(4DZGAYiGIr40#G%j8@LYeDZ#eCq,Q88j%DBjB3F2`TehR88MfT -T3jIN*-#IkJEJr--2ZThT8@JQT*)$6GCiaJlL['XP0mmS%FX0aPa"c@GDbkN5MEX -Y"55A1JKPYl)@f[q[1aG1T1`m"Z'$&rh6kT*YZmB!r&2m'hGHm05)S!jhijX2%3@ -DLe%RRf8,RYX&%N0&[TJV""ei)0p[i$ACmc3e))A(hLV+N8dY$NZT+LAdd1#klBE -cZ+-2bS8-bpb,*a5Ap-H-5[%*YEY8+XYd'c-)Uj36ZfkrB9I[#cjNR(E!'N-,bGQ -HrqKi&M&prkC)VmBkTrq%)43Q[Z%21qJG$eVeEZ!M%Y`EEhHB9a269(Jc'h1M1jB -626*i"Pd2TA1C'GS[F)`2l#k'MCiimZ%"pBKQcKHaaVGF+Akd-6I(M$R*I)MZEa@ -8%JcMBIdRE3aK@eeBM9E[FHLRGNcP95H@r�aM)LkA"m+CerDq(9Q4dSA#"6%9J -QIETG@[lN-PG@+L9T%4IFf54FLYIK[F3(4&4UFeqTqM-V6@1#+pCm[RR`P51M"cK -&Q(lfQjlT9U&TK0J@K`RRUciG$"aY[PlAaelR--eEaJYM0k&aTB[IYf@UAK9ETX1 -Sd3T"f8XdK@dhlFCU9KVFi@rLq'cpCXQ24Q-KK2q-N4Ql6KaH"@)hjBYSbll(8E# -!&rPq((rhTP3JkPUb#KRa),#LQ"JFe6dRJ2iRFG8KJ+cD89Y&3mZqmFTkXbIdDYh -VcA*h+2SQXr!F+1%XXA4NR2I,B"[D%3HYSS*kk!l6Y"I"hV4K%DAjVAc13!J!AD! -)5$CAkH-P%hd[V'Cp328MR[bB-UBQkT,%JS,$L$QE#NHcl+l1fbS2'Z)3Y#)S@9q -KH(Z9kamM2+&k#G,XSQe%DBqSil8@mC3$2V"P)Ck9TP94b54[HR,!A8i41DL03G6 -SYTaLrb`5Nq)-[GjY%GQ&8F`38B%IilS"VYYSp68,%L3Fa&$(b`6%TEUH!Z)&m+U -dQ(2e[X%CeA!4lZQY$P)B0*DcX1[Bq,VE#PH2D)GBim-iD4T`SpCFi(cf`BcEZD3 -0e(e"D92K%KZNFJ(K"k10-%0(2dNZSZYIB5`6Zec*`Gq%D-)Xd'Cf2490%YkH'Lp -$[)kD@@!jJ1I9[f(#r$fq%J5T+DQN*P9F"r&(QK[Ge94$[EUdLYD5V%ZC[%!9-Gh -M(rT[0RPTKY6LETY61p#N8ScS"II&J-&-mD8D2*HBMNJcUTZM,aN6`Zpdj&V4aVS -*b)r!LGpJlk[Q""(64823l#'$1K6JXh[hTRdl3rX2"QMjELPi0T-4FU+c910Kc[3 -c0$IXCY#@-pFfNRip1$+N&k9MMdJYT,"T401QSq)%Qi#XEfGEA)a5b#m+V8+6$-c -!kd6R!HjQp[(89JGr2DcUb(i,MhXA*FN1f,N,(ecR2aY1m'TEi"VmEkS%HYDYSm- -q2#Jc[2#&4ql5`#I@ea4qqX6YY(Qa(%-c5V),&@bYE3f)8(JH@$+#lbRM*lX$6bd -FYkY)4Hq!LQ$G%)#Y9l8EEZA'#F)mMM0lmYQ%-5US2i`pKSGj5If&#pFZ#AY*eZ& -E9e#rqPJmD,!B"@5b5%@1ahbTpM4L`4mf&@ciL@pe%S,KP@"r-2B+8j1)cC!!9qD -iU'P3m@[3VDe#aGmCV6bL*p(1VVl@LNK5A9H9SNf1r*5GR"JN&5SMc@QJ2meTLPG -TU-`VHDDd!V0Am%(GEa%2%L#eAGDllRC&q+%8rh(f9Tm%)SjQC!3A1YmU4&jG&Rl -+fq#JNrKb'VYp*0G4eh2l20!Li(0)+`(4fr1ISR"K`36F1Z)Hb@CFC3G6FpPEbd( -ID1FXG*ZX"e-BGZLkNB!d*2,+4PS@URlh'1cD`G*R#@5`2AA%-*-h6fV8[cc6k0C -H'c59XFj6D[$Q#Q%$k#Jh95JmMeSeC31i+GT%#+X,E*PlTCq6"BPrmqqHC!Uc'IV -mBlV0BRaA@h+"pEaX6bQcB1`M0Vc`2`M8d[ZPIpIVF*b+0F"(jX5L$NL)LC)[M!- -krI$qMHJiMbafjJ%XR+C1`M(mC2A[L-3de"A)$Mbh$#)E95S`e9QE[jA0ChU-@QT -AFdD!#XEpZAUThIkTLFibM6F(VR#CP3#X'YU1H!T4r`BE,BTPDTF,DGFm-1j`#54 -kbfca+#P[L1p#i,544cCN*RPEiV`'jU0kIH$F$UmHFJbLA,cV&TX[8E$RCcqC25( -lb8I&6lba@+l6SmX`p[6MAHPC0MRPj@YqEVjcVp#Y9QrY'-X@jGkl)#bCdkB(qGX -`65lfiD0hGi3RQI$DeUiMRE9IKc2-#1ErZBZ'U3#[2K'9Si40l[4mr92%[@k[S"m -6D2Q8X#j$ZJFY2"N5ICcK"B,Iih$arlVI'S'+Ya3Ui*[SrNAjF45Fh%2*@822&RX -9Tp5qf+ma'8Q-%kUYdJk)HI[i,H+IAkCVV-)QDUq%+kpTiUYE[[VZ8@XDARK9"JM -X1E4acGfAQ2b)LH*04r'jjkZS)LSR2SUk%RJST`@3!,$IBiE*ZITHc"&b2aDMA+c -iA5[25&4F#I3a8hXK[[GSNkpUDRZ&Aqi!,qNSm,ZC1f6PH#Ja%mP)L&Jh!eDF!9" -j'Va9%&f`cURUid5ST[1@2a2rN`H5X[)`6aA6#E00[erI+r*q$&T%%(PPAXj%Dr' -`E`@qLcIc+5I14af6mTl4m*RB5HSZa262M@fI1pT1'VL,jF4U3H4IBi&G5MA*DRQ -l(5l@8fZ#T0,FSIrHlc#3!&ak@pfMD&I3d(l2qa3d$LiYe%Z,M`$P'#GX)lA`m!m -0IA'CJRi0bhQ0)1F"pf'QT$!Cd[d5YSNFGFREU'Qd2`d@bQV'PS*D1&$pPEKG'if -iXA&K"qfICi[4jP-#4K6K[8JGUa5[NH"BhN%1VBkrUY*ab'T9GUN86Ed+JHF0FUb -6Te"9)Eiq!qMr1XAVfF6%53eE@d3SM+Jq0*DMBE3m1%lq--@G6i3YlGaTV&THh#2 -2$1P&ar)-Q@Hi-0HZZkGh60rFJh"00IRLLD"@)!Rf8H6'GqJpfMRd`%`,,LAHcPc -,La$X(5#0`Vp4`Z6e'iRfYJMS"fKARf+C9DmEGQYQ@e292%c"[fGcKimHFd#+cc@ -YB1@,KTY3Peh(%e3SB"(&e"&TaHiB&mElk8Q,Rl83-N0mG-J9T0&Ya+YU#[QNl1m -CNP!R3`'KIAAbB%#UmiV'6p0(LPG*'*Zc6NX!IRM#Vje+rD$`09Y"ldlYCVFD9K! -TNqj,(9lPH*%0(4MfQ[LEjD'a*8,F,)hLPb!kHV(eiehIehYXAhJU$BJZ1lR)5(I -Njm`STr-q8kYTkUQ3!,qAc'%'D1MN'rcYUZph2MFUD8eCUeZ*+G2CAQick%#J0k6 -@h!U'f$+V-1"kTQ0e)paV-5K*eLS05S[jBPHk9K%lS2@!R$0Ma9BQ#A0Rc&R(V`) -dM*!!hfV`l#"JU,1KA)f@V,H6&@"hBTqp436QfI[9G`FY&+`G1#@[hpl3X1N"NYe -D)'b"-63$Ka08%09(NYRP(85KBi"`@L)bNe"@,1%hQfaB(@!U(lZ)$kTU,C!!(e8 -@GfIlTdE"kZJ-&)h[jfBP1PJ(Rj2I$ljmG2BGdN#F3NDGTr2S)VEcCeH5cT5qTk* -eTC4PCR#p0IClc0ZCCQ"6E`9b+K"qKN3l(,k2S$lk,H`[K[DDk-pm,Cla6mrDiQG -VRhDBB$pZI([KIca9HBcJ93I!L4H%B2YHkP)dT%rX,NUjl#i@qk`V,qNMI+L#V#D -rK&fabYf-'0HT33k"2RH(V3k-Hk4FYYN3acT'cr9QK-q[0d+BfY3qH#ibQaK@2lr -+pqV1De'NU(GlNXqQRJUKpHAT&ZH3!2,IU[$(IjY"3pD3!(N(3!dB,pU"r#`eRX1 -FdaqVC)D6Tph3p,iF3J$[V@)V[NNF#R53!+GhX09qL(I,,&0qahH#j'SZE+b86LD -U0DSj(*2ikq"3m!*DD6T+UU8JSPJ&QC1%d1kd`035ASTj29lG9A"eSZUHP,e!MlD -j+BK3lYCA`IjjM$PMj49SA1DLVrl40"H"'BrY0p-FZTMSF6!1kJHqE1MFaIV!&cm -'9Hjlj*M6TG+P0"P1Kcem[QbdfJ`[hT6RTUUdLTXcb0R18U)Q!m[i,'j-ApmUPpI -UQY!bb#$dA#2Vq93G'"&D@pX@qXq`#k$eTZ#fq,FD1U8pX5i&kc!X$IfC$-YR-HB -rX4fl@4U[Q5NS0$VF0j&fT+IdrG"qSb1JK*F6&L)C-rU$@8cC)SKC*4PA@L6Vc9Z -L5eLi(`e2+l'TmC5`$ARR33NZl)F)9%$2KiI-A9RaqA'8R[8M#EE4"r%Uq1`dl(E -'Jb@kPbfj#$X(DC(mTHHP4H4p,aGN'c+EQBb8-PU5-@qMrAmU(IU'!rZ5`4@C@pJ -MZ&FX2ZPVUMBLZCFVRVc0kEc0j!ShKZjAG#bGe`B(!9aaDXcrA"'rKe"F-Nh,,XS -)D6+Dd`'M'5ZR$%VpBM"e%h!C3b4Mj,MUNhdfdh`hGB6F0D',6hYV3XL-E$m0cQd -YSL)D,0IIDTp8DHHlJ!rdb6SL@kJFRV%K&jM!UdBei4YPjPB!Y)9qc6UF1U)mQXH -cb2BTJ"E&S['aH+#jqD6-9Qf$H!l)KHi14#$8!F+6X'KL"E!PbbM&2GeE3V1"PAr -`cE9[[+"YI%(@$&&qT1a2N!!YKk11j++F`,!2ab"m+T3eh'6jS$-!XG2,ljV85KQ -PBNSEqmb9a1fKm[1LMHS*SN)f`"l*"`S#@'QY!LQ%eVTqN6GYDrU,jDXbN3qE"Jr -rhq2IGKAU13DF)@1YKejLe2ceT"&kKilhD0Xhb,DhUE'cLZalL+KV6cZl[4FdqNL -bPT'XV8fXiH@-@F*6VEe4fk)Y6mkUpV1XYah3j#[lF[-Xh(8-BhVJZfSb($Df0de -fDICp-fi#YC!!I)R+8q1I-3MNT(H&48i`(5RM"9"PE+Y(M"h&VJ%kNJ*qfMbQTJC -5,h*GD%*r@jTE+D--)e2ZQb'XH-B$)aJ6EUp#YTGE%FN8J)4HpTfp0I',Le3Y)hM -KCr6KbN34YiNBQ`D6HaSXB&J`hmQD["DBL`"(&[Y'bk!RfU6Qhf8kZMc[S'6+VPJ -bJGER5A5Fc06IB5"Qm3E!'YPfFQF)rrXIXDEYIfkF+NpKbFba*El8DQ5`jNlFjKL -DHNR0[qXJ&C`BrcIJEA0CSGGbqpUNN!#iCa,MN4F%BH$LDDE"pa`V+SG9UT[5KcH -p%5NdXX1G@LqUH3,025Y[V,b%)Yr-0dN9BQHhh0G,N!"9Kd%eHKrjZ",-JFJ-&6# -`)M1-0)8T-KcrRENC5Jj$fiPi+k2#%$1Fk`AK-FUX1@HMkYMCa6e[fa5@qpR#5iC -1iMXVhkeJIPUiJ%dbcpi4eBL0'EhIrYQ66(hb9`3**lD&d$@qTQDfecL8eZ9+pd6 -fGJMr6U[BA2k9*E60`hG@"4pZNrq-m5@D+GJQ(lF'SeR9Q3TAI(lqb'4N-@&+BSQ -I#V0a45aj3kR6hXm&M1dp@F58p@5"FJT)KLLmEd"RM22b@"qI$J)F*+eNM)"(BAe -kdlpUd*'!JJ%AZ54)c8a0Pkb'LU8S"[-Np@&4&4kK#mTT)rQCF#`Q6P1Dh-6Zr[& -XaD8$Z'JeANf,1RlkNi,$X08LIaklfb((p[,B1eqh-pZ3!!6'IC8c95+KaaULKrr -Kq&8%SQ%c3m`#VM,k&%q4hQrbMNk`p["0Mj21qRq3!,UD-N4Yfa8'S&5XePK&Nm@ -qDl!j84l83Kadh'4EfND"QE%dY&"eYL!)H+NZ$4Xl#R'%M9i,TdqpFMD"G0HHCf4 -Mj--H(dcT5DNIqk(`TIR1e#6eYM@pFRDGFdTdmfUPfL!3!YU5@"CZd900c&2PdEU -fEE)ekFMSr5CrAXd6i0AX5+d$j[)H`4a*0pjBL#Dj!@fpe[0UU'[J03q!%'NBkD- -SDD0[PKRmQ@[&9T`+905bbHE2EHj-DT92T+(YR1IfDlkGIh%0JaJL@2KXF2@@'6- -8@Ih#C5!RKQeFqhE&QTG'bm'%9V5FEpmr6l(4(16Nq-FJ"c+EcY"[N!$Qk,)JNV& -2EFf(M`FkE"@[q3N0qTNa&8l2EpiTdHL&MhUZ2YY4CD`db,6G!B"F!q(V@l['T8@ -a*r`m((qHV$FM(`NK)$d5"pCrXr8f%Y!&+[4eG6r2p%Up,re5qK2GS),EqAEeDrY -qIklIXN#4bl!A69c*AJ`cJ5aQZ1[U[T3!9BVAP-+Gm%(hQ,@N+#jM4Tc5+*efCGR -l&i,6iU!5CmNr+!#Q#+NafQ'%##*MTAqM+U1NYY)Q`#)fe13b1&"IIP1(!rATJBB -2A+X6'HhMjhDHi&b1b5+9h3ieiX(VH!'YBH#X02PJ,4-b1-(XPCAjIhP1F)%lLQH -PiLF$NDVZUPj0HAiB,kLh,E4HIJ+UVXMHRq9fA'TGNFb0bLcjK*'NV6CLkC&YfE" -PkGQ0Z6Xp$3i`XmV*K!0S`Z98#VX*EaLc'48B$"+a0Y9VfpBpqiKBLV#mZ"#kXkU -iae8eXTi3C5&XH*!!V9HT5+mFe4(l*35+(RQV-1P&Vcc!S*YAeSZE1@A$b3S&r,E -+U1Ci2%cqCS*QBMd$HM-f0JA41`eI0E3lcLZY,CA*X%E,"fEdMhdMU2bN5@N#e(X -`mP(1rXH&perppkQj'i5BVIq(Z+9KRl#"(GXf*ahJfK1Her*CMYM4BEpbm[jrYrI -'Kqfe[T[mJq!l6M!SR#6&[C2QIKF3A`fS(E4YJ#PR&$@19fCQALQp+E#ap[eLc-j -H4)0C$cX`dJ$fi`20aCi6X`e8UQUl"M596#m5pF0h(jAE@k#aaQqFcQQV4)bj1*r -JEri$2Q!H11[-UM#!BTP2+Hhp*HhjSk[J)@"`YeUMT,GFK8Uf(#!(0G,8H-Q4a@I -9A@-,SP#Hjk`QKYq,$4"M0mqK!)reLrEb-UX%024@DcQ,[UD&YGCQ1EVZiYEUXLC -XCqmLhY`qKh)31UJ1E*[f+2(B@E0!cdPP3S6k6+iT!#XblfecbQY4EB#&Q4p[UjL -A9E(4p!-`Fec`3QAjY&[+,$4,)KN5Z6,E9Ae3)MT'i1+G%dDJQ0EGB[ZBD0YL5aj -ARCX!p['Nlke1'[L"ppHlB"'$*bT%j$THrRKr4f!MVNp&RQT2AN-EIDH6$X8!Xb) -C!%6mGeLfrdNNH&I$2DDVGQ[+a8mNMVf94Q'#H9#YB"'4ZqBRXUJdQe&!'T*eY@e -m3-r03I@)12C"kl`E,-9elC'`HDa%L-5+R6!$T,&N-(caI(Ke#+T,!$Ja8f9DD-# -'iL@4q)dhj-[E%M*Vd!F%jAIm[1YB(6BXPY8&L4lmU[`cK!2abpe'PaFqrY8K&90 -a*!pD90-*+kJrmK!c[)CHpG[N*i"88d`*DE`Yq-Y,m!-jHN$8!JKmX25&44!9QXr -)*e(a3MhDH@ajX8H)6%$5r@6hKra`E8)8%`-p9R)GjSV18Pa22d[LINlqe[ab8RF -L[e@)4AbQZ$q4a0@b#T+2[de)%3Q&JdF$@biREem[&G8cZ"JIhqdjma!d)3[4H[* -ZJfL'pM4#B6dZZ))GdDR[6HR6fakf4D8Jac*[2mQR@EM+ePr3jZKY4(6T)jD)`q* -d3E*-h5PjKjjML`RKcq[SZ*YUAi#N`r)RJi1!NrTK4&HrXR8pc"DkQfh#M)%5&kk -qqX)#'bl$mH1UFPX1TT8*aL60L50Qa#4T3&k#lA1dZNiMpGVqE&4rVU2dfCiPmSP -LF[6iCiALSZBf,pi'8l9KT69[i6p%R55f2$4cTR"'Q-1XRYkS2ZfpI#E(9cKXY$R -AX1lIP+CPAAAIPFFlCY@kX*LF6%j)mi)8(T6)9TEHE[d1rjbI+(PGD$SA6!N9dk8 -6PZ*Xl!dPXUc#ZML8rkBkFPJ+496q+rD#CZY9pL0@QhiJNcXFFK!5UcAMQ0LJ)90 -$-d4rpT!!C%P-Zrh$#[CPIK5j$3i@a`IZ)eRqK1YN2eJE9e94`qNFF1-Db+Ph@$% -Z`(1LielZXeDje1YTQViC*ijia#pd**I!Jb9G&(,14FMKmmmSN!"-K'8dkPUHY)K -B!4f1J%hjAFNjR10Df1ZmC[)%C)dq)e)8#H,e$+NNLAP+b@@R8A&5#ca%-jkGEN' -"I'$84,@M%HqL+jHlG'frBD5EMq0ZQ[GDfA4UY@(XfbN*lDri@03[DS9&96-p953 -qT'[+A&YckU'B4BHE4TXi8,X4`&pUQ+LmfR9(Iq[5h+BcVdBQZ$1KS@YL%k4fGFD -!Jm)M5%&6Gj9G[k6!!"j(HpbM-JEFa`4q&+-BX0FE$618l9(J`L*hEeF4UkI''Ia -SRJ)"YmT-!(%Bf3Jd@iQkS,0@+``[K"4b[lR0M(KiYB%A4XJYe32Ck16DVA,cXBE -PTkcc!i)(G2pIF8Jb#j(50Z*(3i`Q1E2VU`relCer2!&H1M+1*QB'["[00++4)hb -*rbQAU5,eH2S'NhGdJ`!plm@#[IdII'YN%CiSDKcb#IJ$1XYNaTR#qHXehj4dp$T -JJ(1KljFkF+%+f(XiNFePm`#F'(Y8HNKrh-0Fe$jaH93QP*b3!,9mMZ0q[P[rqhp -(iL9#`ea+6h+Pdrrpc5K0f[%N[!a'N!#XaXBhR$c8h4cY1G6E#4V5[(RC"&3cH!- -rH)c&kAGjBBV&81IkIJIA+&N++KXI")"C*TLK1%$Hd8'SI2L1l8,+d$M!Q6Kr#*E -(hD)'ie9i,G(G-[6EjPGbQQD3!1'*dNcm!'eZT)DQ`JZ,CHR-#rYRUr6mQ#p"fjD -Aqd19IKl$ZmP9006LJIp(&(Nd+fB,iPT5McK[P&V-pf$mjFEC@AL!b%,H25P%p2N -&9[''RVQPP-U)*LriEhVSr-b#ml9pUmG)Z+`&QVkCD+"N2NEA!2QA)cD3!+0%hT0 -1iFmFEe3dc4IXrbQcCkqI$amTeGApZ5FXdihV+m,P@1Vm$+C["6Q)VK8e"#ca6Tf -I2$A9R4*[rfMX2GejAh!BR[9la40S#92)%YR1F32T'f6@9GHUUp8Z3lA6'SQ0H!k -()GP*JiDJ1r%NU1''qL*U'N5k)5QF%Aqp'YGki,idYh!IPKJCDp8$4PB+pC`!Q8B -XcZd%F,[!dA!bb`je95c8SrpZ#S)+4+l9H0AKHB"fmj&#ipEUqeRlYh21G+EQ@T4 -GM020,GLr4NjDiRh`8$d1%1`e2f4S@X@'E[ICBbp58J%PUI[)5QA0HV9IR8-4HXl -T9H0B9'E*Iqdd$`@F$0QM3L!+8Pf12N2STUmEIqVK0Ha9B$%0fd@FD8&H-3I"q-R -Br,J"0DHQG3L+KGrVAf8`6jZ0-"SR&R*AqS%&(UG5*C`1fh"PUk1e&&N'km4S@1I -X`3M23!q!3m[V%"MQFmPU%pQA62NdD)d0#+'R#MB,%"KiQ*8FS[D05lLY8'P1!q[ -h$1M)DH#`Dr,p![@K&k$mibBhZ2-#KMGb8dXHYDfJ1fk98bY$eSM3$MH$L%f"ieM -JVC)I9frUT4J8eZGqk*D[J%dU`S`G,63mYb50*)`CMq*588b2QfArKTV$lK,H![r -MaL#5aS05aXZ8EGlbR9H'M3,ilPjlkbF!$Z%Bfh-+`mUr0@430HUc"9,U0BrABcB -EBMJ'd"jPl5mrPB9ZQKj%A0S@@`1*jMqU'N9`lD*JBTU&28KhX@[UMM'(kE4G1SD -cBK1c#Bp[j`"5K[9jP6MphC4ETb@@IG[C,"%D4*@4Nefb(cAGAq+%ELX5!%pcVJR -)K1%&F&9!bP[%)aTRaTfUQfKqQi3fj@-%J11U46h-NX#5@X)dM"q2#`,Reh,C0*S -Cf@(5&Rf`ech,HIQPm'q*5B0(D4pKJMDT!Tmb,-Fd)Cf()jM#*+P$q[!K-N@$Dqm -Y8MNh3RPbk%jY#dYF!HELJ6ra5(8b4b`T[FFQiUFR6[dA5F#aY1aEp0Nj`b,rqF) -Th-1L8lQ$,1$6TP3L3E+%AELE6'AJEKe'H+Sd#B&'f4Cf-+DlKSAd%lN59*0c5+` -V4QBch'bpCc8Ne(&fHAPDS!'%)L*fA',0%K-J+X"$2lFdl)cc-pf,mk8mM1RafT( -fa"hJr)&8*2SKa5K+qcUUBAfr#+ep(dDGTb(5T)!DB-+(dBl6P5bhmYM0ZHpq2i- --VB)-&)NmJXUYZq)aj#(YTqcUQNlXpbJP)ZiaMd1NAf#Hr3f&EH0r!&h)dk&U@jK -8Lf,K1"5VR--(Q0#XqI[m#c4d$3L*$fY4"pa,Q*bJJ(@cf0lXJV`@ck+K,&h*NMS -AAN4Yhm2qm90H[0C!X$m+$le5)cL+[K4lpe@Tf$Dm3eF,cU6L4)Pjp&dNh#QY,NS -bFE(NMZ3QV8l)r0f"M6i2j9LQDdJYa5!h2B[4E2h8hCVrU#qaIECHrmb[*ANr"hU -I3kN$M4RY4mAPbT@q()-6B!L+VPM!X&Ym3Y2PNhMEhLFdX!fL,%,*UhM-MSMiY"f -QDB5Y5h#"R(d[P5VN5ZYdk%(Klj!!D0Z*c0DC8!0PSfV5'pEEE3m&I'R!rYN,11@ -IPR8!jC5PiL2b6i44EJd6aG5q5G-&a*4%'kc#(`ECTKejrjqM3(&[f%5h`&dNBqb -Zk4EYBYjacQI@mYhZ0aSLD+f,4[#[A"!LDQpkdFU0(,`LmJ,TmZGP[$0@XK-HV#` -j%NDp[SN'Q%#amhH`FV$+(8'Xf'Cpik8XrY-4&l%SXV$I5bK-$q%ei*cpCjN+hTG -d-A@jEkATd*CV(kqF"fkDTf!)9Gh!j3("2eS1Yp-qck6abf%hD'1NecIE!Tf-Hdr -Q3PVc2mR%03$pXkHF))3bQAALpP6&&Z#QQb(#@T1fEqkJ(rk-FM@3!!GfS6bBc0Z -MXhq,c1Z,Q0jI,(U[$hdK*ji"PJF(SFm%U(QS#@'C'iGPrk9k%@*[ab5lA8q&Ad1 -CK1lIr$f+b*qZQ(UVLL'a4%Lp,&A8+f)HbIMHBI!RMpYGaGdGHT46`SGmTP&),F) -1D3TGYF'XAXh@-BU25(lG#6XR&LR*`$5&`LX@PRkk(#GSC[TR6cdMp(aFAlCKXR- -&E96-DeE39K3-Z@eErY93l"N'RH0'I"6EQ,ZQPI-)!jk#UA-T9S9MDq55iqB0&IL -HiYI*%d3elEF,'TQaeF3+3`dmNbV-KP8NTB@6#M-$hTl9cV`,EKi9UmrR3I54YBf -e$i!H06a,p9L3!13*S(kh()0LSlFdD*35k#0E6"H*6*J5k(q)35G0I(3@VH4Lr8M -ZPFM1b$'Kk`4Kb5iNBaHhHmq5,@db&$@[U-[5ZQ&GpQ*8h$kaH+"l+a3m'irbC(F -HdCp#@T0j'AkcjhCjVJI9IQ&BGZ#RcPFU9&jaZ@82(C!!fU2mk#C3aGrq"MDIMRD -e#NTXkP4h!rARD`HU4N*j#(eB3h[4"(NYLSPIH@d5)prc"#%TGi9K+dVQB5Rm#*C -)E,!`QlM64cr*lJ"phiJY%$IM'8hF69DN6E3`6p)-#UPPV4ZYBU9)B+klN!$mF@" --iYX(%[hqCc&&'@d1d*m60r%"'3@&IfE8PdXS6)GVJLcK6SPi8A+pRV0k$VRd2', --qM"FD'#d,0MN"Vf@qjE"+[rBQdZ9(,Q0CH%J@a&8c9#ra`GfT,pQBZ#@I)SR"*N -ALP,E"3P*IMA-IAp98hXG2[VUCffbI1GQRAGXTUB+YZ-V6RlSDl*qm0Q8EVlSrEp -VSaPSTUNeeJ(B5`2F`%a'ekdc2$)#iP%2RmXaca+S"Xcec6mhTa53!#pMGjidj%4 -BSlMF%idNfS%XXrNdk@!i!p5Z-CVpK8#K!E[*`*NQGm8hJ#bUr,4)0F-V$e+`)e` -PqM`3JECH#-Zd9lr$*6KPN!"r9k-!`a%iM*m&&Er`MVQ-VVdlXZS1("iT%eEfD'q -@Yrp@V9ZR'Amd[KFTK-,%'jM!ZE&AZTX6L&5C+rVi`@@$&9*!QA%Bk,HV,)V53@6 -@(*,DRL)b9@-RblY2JeS#30iaTjHk4Tb3!$@Ce@8c593Aeqf'YHAD2hC42q*rkR- -Hk#K"+j[pjA&I113MHr'H@UB5B*Y!9Bh#PHIPINCIheiUjE)LZ5em9P0TGAXQMM4 -CP%hP4)*)EmpNj$38YRl%Y1UP,P$-#2ZLMF9TR9KK[ZJjm"Tb9iKlmR(QPBDd&eI -!A2qHMJDB[M`B)Ml8-Ih6Q0bQB&2-Z-N`9V3%KG*l"@DFc0"F#&4BU6-iBQd*25e -`&Vj)ff9@h6h)[N+Y#Er9ZUrf+1XLD&T2CRT8-3XirHPUdh#)T,IYQ'e@ZjF%DcS -[MkjZRC[28aA#a5U"!M[rX*`0S@hIXZT46iJlY6he&&4#f"5B6V156r1MSrph'r8 -pP&a&F!D-#2apqAlb'c$'JS5AlRdC)E!XY6[3R&-Z!V59UCXL-`&1kNBq3!qp&"e -!AJMhYbfEj@&[!b(Ucqi05)JY4%31ERE[')4,cH&'U*G%&-j,ep#3!#[mF90c+II -F1&lI`4l1+l),X488bi06UFi`bL-LES!P!L6["-Lq+G`BT-bI+k-N!a((N6!6ZK8 -@!Tjp-Vm5TbbEN!$V)Z$i5DiR"ZeX1`QlFli3J-#ImYj$Q!CFr4&daM[K0j3crhf -XPI%##2#m3"Qd+LBdNRKP"*ZkRE`k4@Ibq-R+VfiHq@B%ZcE@X8mh[KD$[!'T!Tr -db1'6I1HjP'plDE`GSX"T%R#j4j!!1HC3i@&C6Z@9p`Fld'*%fHSa$q&RKplUMh! -SX-K@fjLr@Bmkc,fG5J*M8h1hm'p+&'VVjlN(X(D#GTAq@Tpr&-43hC'9f0XGG4E -e!pNqV-e4R)hJ`#(ZX[DVA4SH#6kidEiBKJRqf+-&,pH2dH5@qXq!TQlc#%b9rq0 -hhkJE3!Bkl$$U(5&m`DH+C,,`%RAYGZA`mc9c3Zpm4`M'2S`aL"4b`[VJ(2'&Umf -(F0rIPGB5pD)jEHjE(P@D'!bH%XpEhe6CZkXBl-pRZCq4@(Gf8##FGr@,63EXQbR -d+QSeV#X+,EMD"I%9&qDC8JH5c%G55[S35ZI'82X9N!#*QB(fNkfqAE0#'@aiA4E -i'ATTQeS'E""G3C[0@p`DU&BHTG"f2-Sl3%Ic(-Uih[QVL%(LlD39rIh3VhjU3ZB -MR38QE6[(6[mU1cb`$49rr+"D)Rq6UQFmQ#fY2S[J9&iU1id'lf(jbP8R+(8YheY -Q@p%pN!!hq5'pe3JkprP`Ph)cMl@0c@j1D86[YcaULPM%--&2TZfN6lMe%TKS(SJ -N'L-Tl3hTc3PiPc&5$Im5,B"*KAqrfm'p!A8`iP,I-9qX`@BhKZdGMdpSrHdbSf% -QXJ0!I0ATX-e!l88f6r1ml(U0Y$Xj612a'`E`aRN8a!-0C3F+kR@qSXAZ)Q6QD[' -PLG@RaeK8L-'r'iH'c8(E!9k2V124eMY#2%GNZbSD(0A!b9H&6q!F8+J,8Z&F$@Z -b9dXV$&BMhpR)Vp$!UFFFG)d`#8(1HJBi8a18YMpY(SA$bipJZKV(A$L`Pe)M`&H -ZCN[J'[*2PPBcbi@+!6BCAdSShMAH,38$(jr[4-h`8bl)d#Bf9LE`'J1V!XJ&lJ% -$-DC)@IempUr,b6(2R,,TEr(IRrJp'XAFY,T4M"4DUl195FL+HUDY*9L-Sa+Jq%[ -N@95[qH$eJHGJ-YrL9V1*[+%QcB!kLJL+cm4HVM$@@)8C-U55@bN$Z-J,$LX1!S' -ElB(2j#QaHTYQa8IVIUU#p6G@'iZU+kBMD1p1KYH)))8-el$9VdGJ#$,DqipIq`p -BjiE"I*C#XJ51kp*qZfF$2NHZPXT`')ENjc2lU%dkHG((--IS*bCK#N"NE(4ehXL -+9,HCV,5a8E`4Q1-!qT%B-pf6#0m+BpeV*AT'DKJ-i!#&'mR&N9hGmQem,d$j$eG -KA06dMG@F*9`Ir`fq!!NNbmr$qP5,9!6[9)'h-1Upel(S-V1li0PmdHfi40brAF" -ErPQCbf901VaIqb#MLESpS%I,-$DJMJKSN68kK`M3XmlIKKpi0P3Mr%bCDiBjl3f -JQlQ)Pe(A8qV0lG'0DB+)4&fKZ%dVG1d&[("Yh8m%3ZGmjL$K`j`m,[*9`5M'c4A -j8$TbJc#-eE(BSfJ9Bjq"6Z(-*e(IYB60618+q$Yj-HUQB!cB2l+TVfIZYR4$ZiF -Y9CA+pTV5q('Lq2fD-I"3[Gc8KHD5akeU%eiYa6RPELG8GZT*Z@G6*3DVh3kjARe -LG`4'Ia-F#J@QKRAGr`QY)"G9DdMDGc-3d%%-fRK4r!#UhZk0N!$"B!)[R08M-D9 -3rF9@Mib258(eVdKUPX1#JBC`DpG9QRhVVrF8l$qFLQ`q4F%B*&C(dT1*D%jkqfT -!aT1@k"lHD()i0YDaC)L'TfeH$+,EP03-"Fcc`)rA8NNHHh5!e)Q4#l0CQi9,92d -"m(QM%ie,5p*`E#!dN5hD$)QA+bDcG*TLI+01Ef)89l$0mF)4jar0$HVll@fkr"j -b-8AHbpd6H-PNNm5)hAS5P@-Bli3e)4hd-YBV$f#+V[RNYfXb1hJNS9X$9jr'-@- -N%86(hB1aFNV9XJU'2)TakK'q5N#8,N)RV`H3!-0b1YbTJdYYa@9$NX(Tj6@iAf9 -5%MYq$fB1&e+UrI')TSYAP-h96YcY8PlUrqM-)DEPXlr8l)fK2&*-D#cD$mXG+"a -bG,(kT+Tl*YD[Ar@1Mi"'`bTH)4U*CGc2p&5jTd%22ZcI(DHR2GerX%IG5""F!!! -"!!!"SiS!!D++!!!&5`#3m``!)!!)!+)"(!#!998!N!--!#J!+!#Z!8i!Y999!*! -$$!!J!!J!SJ%F!)*993#3!``!BJ#5!2!"Q!#&998!N!--!%B!TJ#k!GB!KP99!*! -$$!!S!#J!G3%m!)G993#3!`i!+!!S!-)"T!#)998S#J#3!``!+!!S!*3"%J)!998 -!N!--!#J!+!#0!4F#!999!*!$$!!S!#J!YJ%F"!&993#3!eS!!3#3"9d!F!"a!+` -%!Np,!*!(5J"9!41)1P0[FR*j,L!J5@jcG'&XE'&dD@pZ)'0KEL"[EQaj)'*P)(" -PFQC[FQePC#"[EL")4P-JGQpXG@ePFbi!N!0D!!%!N!9G!(!!F3#X"!*25`#3"dS -!93%6L$T8D'8JCQPXC5$5AM$6)'eKH5"LC5"NB@eKCf9N,L!J8'aPBA0P)(9cC5" -TG#"hDA4S)'0KGA4TEfiZ!*!$8J!"!*!&E3"Q!)%!SJ3#6dX!N!8%!%J!C`%$L$* -6Eh*bH5`JBR9d)'%JC'PcDb"bC@aKG'9N)'9bFQpb)#KH-#NJD'&c)'pMBh9bFQ9 -N,J#3!he"4%05!`!!IJe6#T1%!D0Y!1`,FJ1dXM)V+q0E6GjElfVhTQiQei!a!%! -$!*!$ZV8-J!!*D5Vqi!&9%Lcl5XKE$Z2PFlU&8Bkb2mq2rkiJ16HX'[J4bSBeHBC -LSfGVm+aH2`AZl![!X+N')MK-9ckpkmZYSaN$a4aC5aXi#`#3!d`!!J#3"6%!C`" -&!+d%"&&eDA3!N!8+!&!!(!%3L"T9EP0dG@CQD@jR)(GKFb"cG@0MCA0cCR9X)3# -3"3J!$J!S!#kJ!J!"!*!$e%&%3e)$!!%5$9-+Qb3!1iU)LKA2&Y"cV%4X%28X2hm -rl0HG[qIZcJbR@0KK*5TBK999BZ@rm35aUJ8,XQ8l6L$jN!!I!93NQ2Se[)@RhFA -Ch8h5b(U5[AdI,N2FaCI(T3X@qBdi9dq9p3XN2%U1NN'qk(5em(4U&CSL2JAQ6XF -XGBZPFi&Plh`8(,JebXbQG8"2"b%-6&H8@CbY`EYPFb)Ah(i-H"r`2%#L6q-DV)M -dc!mhH5K3fic)FDZRR-9M@e'jc-h@kB'VP$IIbIX-kIp8rmPY!*!%EJ!"!*!&D!" -k!(`!YJ3#6dX!N!G)!&i"*BK18fpYC5"TG'9YFb"hCA*P)(0VDA"`C@3JBQ9MBA9 -cC5"dD'9j)'&bC5"ZEh3JFh9`F'pbG'9N)'*j)(4SDA-JFf9XCLePH(4bB@0dEh) -Z!*!$U8&%3e)$!!#f$9-+S`)#lq3%RIe6X3r20R[6fe4df-HFLZM8#BTkGR2ZaZN -i%!m91faR93P@9C!$)GjY%k[k!3Z5$f#*[rQ3!!&qbQ3heb8D6Gbbc@3d6L&F`k& -$E$C0a1d64BTRk$3aJ6Tr03C62XCMTU55r6cp+&$rDmb$1ckA3(pH"EjQpH*A)Cj -m5p[plRC3rBR6-dfULZ8aBdPB,[3#NbC"%QmI(D`#!*!$1J!"!*!&8!"C!'3!N`3 -#6dX!N!8$!%3!5!$SL"P8D'Pc)'&bBfKTGQ8JDA-JC'&YB@GPC#iJ!*!%5!!"!*! -&4`"D!&X!P!3#6dX!N!8#!%8!-3$SL#GCEh8JD'&fC5"PER4PFQ9N)'&Z)'PZBfp -bFQ9MG#"`BA0cGfpbC#i!N!3S!!%!N!@U!)3![J$F"!K$EfjdD@jeC3#3"33!"!# -L!@,!!J2S!*!$I!!"!*!&D3"M!(d!R`3#6dX!N!Fp!'!!miKF9'KPFQ8JDA-JEQp -d)'9ZEh9RD#"bEfpY)'pZ)0*H-0-JG'mJBfpZG'PZG@8J9@j6G(9QCQPZCbiJ)%& -Z)'&NC'PdD@pZB@`JAM%JBRPdCA-JBA*P)'jPC@4PC#i!N!-H!'i!KJ$H!H3!"3# -3#!%&"P0dBA4eF`#3"KJ!0!!8!2`"HJ!"!3!"!*!&!qJ!N!18!!!"(d&%3e)$!!6 -Q$9-+j#)!hhB$MR'R6XAbV0j%XHBmX)IiV0j8,+HJL(G6Cr8c`3!G"L,18R4@$cZ -Xm[rIpjiFhYRYG&J##k#MF"NjQKYpM08c$@fcB&cB,DfDBBi[Q8@'KZhRa2eh1KG -blU3+QbXZmrjdJl+K'E8"E#iG,'U!L9ATB$8iH")""%H4JmH*JiXFe$A2[B2Y#,$ -K`U`5"0`DJf#cY2MX*ChTT*3S[2"4)pjUZHHr$Vc5*(XM!dUL`bYl#@3++G+qArA -V)0Jeii&kIZM)c)ei1q,`DdZCb"5#5`TS9m8NY6&2mINh23-MRM'-lh6%63iY205 -!1aPr01FI1[ikDb1j$**hNU$CKaEqDXNA6ICm`&pcThAf4L+8'Sm@!!!(#N&%3e) -$!!`S$Pd,V))N2ZS-hqrZ1!QK5SG3'UP4i34(3(PI"fEcS0Q#K"92C$K@P-9HE6b -cNT,DRQeBDc[aqqT$D#eNV8)&DdiZN!#%#AZ,hfper$l&pI[)`U"CYD61l#ke%eX -8NM![bE+N5i83d[Fl[Hr%iYTckrF($HIR0$%"*$3M04p'j!kP$U6rDXM2CJM"X&P -TH0km2Rc"[HG&*i[#(f(pFTmm#RB-&ck*PBNHVS0Ka)H%LDfKbLLS1)"iAb3)Jc1 -%ji')q4!C1e$+EV!VUAf-f1i`r41*8jqrIEb"rEcklR#mrrCRJq1ZiMrE`$GKa94 -jU6lIZC+pD562CdmRci59Rbk'XX9!h3"XQ6cJqBAi*cH0kBALkBGRaJ2-hYTYaHF -0X#p)F@%Qc[1G#a"XIL%ELH@5#bPrb&FN!i1YP[[jlmh%-jAekAJS-Tbl-E)iZ1N -UIe-VBQ88rJ9pHaHLJ@Eh`JAEM3p+f0FSl%E'6qCa%KQ%2iP,fai+q-jH!bq+%HV -0m$2&U`*Z8DmCK6Fa4b)0ia2aZ@G9,ZE96jqF'A+Ij$iHhQhJ'jH5ilPL0P@@RLY -fq+@YAja2bVlDmpZP*2I,Z@h,"(a8`Dpi+2Y+*E`HZ4D#c&!IJeYh1f)'[V4[2$R -j`rR3DRRZZ4P-krfTLRlUKe(i$rbX&E"H4f%A%L*8[*bH")%13M,hk!)G4+,3$D[ -JBV+Bjf8aYbL,qSpN%HGN)5K8P&!iK!STh+EU4DT8TGX$6l2Np#Xa@8ElR,`XQEr -Q'&P+VqH5XPaq[HHa,'[HLHib-$qZ-$#P2h3B[-MXF"J%MIj%-2JJ0p8U(mB,prl -%JeVVm1,)AeEZm%SE*X-`5BE*-dbU,YN'[m&EE"B'2LhLq,L`#pHl0G5RHl&m3iq -Uh@40JD9(e*HQ86pSY4)kbiIU#Uj-Ef"*EcRJ+"8ZAeLlS$BFA6-Mk@jidB4mU*A -B2SM"$YV@c)e6ZP[!58"@0Z$l&VH@lU8)$TUqSJ,ad0G!-NIYF!j!F*SLDT[G(%- -YY1+4d3cZ'8#`BSaZ+d%dCmC1$q(@5Y0rN`q4-!-1ha'[$Y%FkIYAp)0PY8QXb)b -)T$fUCG50fMlBQN0K$6RbLSHeq,iNERPcAVd2Qe9[[+(EK2lK4,8$e9plc0*lJPa --QD5UA,mZQbUjH0&"TCi'BkrrbN%mb,j!0r3@J3lQ8k*c-HC8KkQMJU2r2aJGiYI -$JP0PlehjamNGSp#DZrFrd!Vk!ik0+iAq'Y,8GQJ8b+FSE'$8UEldrFcdS3m&(mk -+)&3YAHAqXNrYkrZ8F[9L`#PmMI6H+Hh-((8LkjhDFB"S&TqEeBi0Ud!1!(&rJpk -4f@N&#pS'J'H20CY"b341$fQhhDmiND1JaHNQ)bkIkK@TGT&k$DIBHaEYcql,N!# -4DFY,JhDhiZVlbQI`3@$8hN,c!hH0%aR+R08FMJhh@ECjV+P0"-Zd6F35M*55`k6 -eCJhMU!Pad[(@4`i-qC2)FY#qJMUR`YdCfbMk1+r3R&+J)(jr5rhl5'YA@SKK9%! -H!r4H%bbXF$[d"pU$B5U'iClN)J&HiL#@#!(!L2qjUqG!m2IZ$Cj[E,49[EIkj1P -%RrrplilrR[f1Drp0IhAHNmemXqPLE,dL6N2c[MTmebIael4Xb*KF8MHPb-KfkFh -FFMMC`MmUKV)T*T'3!)2Ae6fjaI9)fU+)ij)8%AiRFG(NYp%@hXk%(Q8Bbcj6m(C -IRC5SP#5r$ZF!$h4)A#jj'S*I+SED&@CfhK6FpVLZPQrXXH96Uf02NrfU[bF5ljA -5R4hMrU$R8LQ8U)lQ'fK+'"6Di#a18cl$iNlVlJp+rKN84R%G82lDSS,c203D9B& -$eBHXGIk'SJb-+l(rfG(,Xj!!DEJPcY04,9,L6'kQcY'!L6Zfbj2jCblQ4rRY%fe -AMe6hl#aI[L&2l*K[(6A"U@*M-"M+KMFVMAcGZp+Y@52A'"`acI,B`SqD$mS[&rh -"B1df%Ajb5p*qEZ6m`5(6P)mYmKN@+"XUcXl6Z!R*AdRCJ'RkYmE9`DZf)5QrkCU -0"KZBYS6dV(%l0b3&6'8"2YK)i5r%+M)`#)5pZK+HQ)46m[i,Y&`!4QcYX%5[kfc -2IK"GY2f`6%#!Z-*dZ5E6YM'#C"Jbl+%p0VTKKR$,KbILh%H2ldDLRIm$L1&i+'1 -D)BP#Aip8rh[I9rq05RFMf,P*YLZeYS1hZDV-RSReYqdQ+T!!rFbi0"[YfR'cUAf -6'*A&PNUqjeSS*)5cKP5GFBQ$Lem4K9,T2`'9dfT#+q'86&fLP-,`J3K(+Hi(,C@ -*R(maa1K#99,Uf&MeUrA*%8pADE*328BDZ%I9arQfr(+S+E`FXbE0J9i'#D503$% -DUN3FZMEEJ3Uc`S,"3PUK'qV+ecpqDb)@pld!!!'e384$8J-!!XJ093Z8SX6XB34 -2CpAGe5'%+QYY#3bBY"a*C-$N"+Jb1CP)"J%Lhk'N*4q6$L8h((P&ILE*QIaYB-% -fhNkIDAH&K%Nb%pNN$FJRfl0MlLe$r14lMUkjBj1#Qf1pV+J3!qd-q")[6T!!2&( -NN!$XH$VqIIf-lF$JY8&`Z,`m2Kl(N!"fG26m(+Lc@!dY,VZ@Jq32[ecHi',DFQR -`2$R2R"FmEhPV5TS[8GIj4FMFPUJN(S$krrcHmXjTT(LK4Sf51[S8m0FeEMVMk6S -Ym6VJhLGTV1lRVZZ"EaEFUUI2-L@THq[lVS32kTfQ[&34P4,qR6LH8leTcUSC90r -2)#jHlq(PSQ5$"LU+0r@-Q$28$kPkq[BSR&*1dKE`$GP@`m[M1pi1h+5UIP(#Y$f -["YEirkXd45,c*elIF+LUHqKZJ#aQ&Jj&V0F0QfVhJ%U,iK)b8Rj5bF3(R&Ge&@C -#A#EdNS1e+6!l+jT"0GNjAjJ,"X-fS4558*PXpZT"@GPQ4BRK,$U&MK11kK6e3me -$R&PmRZBeK3+'[KCeKV"#+i`Erm##D%'$C3Y&%VFINEJ[pV`2cNF!!!'e384$8J- -!![3093[FXX#Y$`3R*l4pR,E+,9cS9G6V%TrE2UVLrRe&k`k+#h8laU81%*IMeD[ -KZ&rGYQdIS"8K,pp,FV&4FGX(#qXa#P`NCE4GVrbAd[T#VfM,r3Re*3ecY$mEP0C -#pVha3DjUN!"UKaJA-eeFRekm(d!DYF'LjIVki@'lV9ff%4XfTid[`MqGTkrIr-H -08Z2RQYdRFfCm%reVr)q5ZeS&TQ!EF&3"+6i#@"Pd!%iQbLiQ6TQbP$"D+p3#T3k -[%+J&a`QB&HN9`e%"!i@TRSpq41E'-KF*+efY3YXIdm(#Tb4#d[D[L[pkkf4+c-N -D!HN5@EpmG)mZV-J)Iq[a,UXa*kPPGerLQap2iR2K)Nh92bG[iR,lp(Y)jfcaeb8 -Hha*bcRH98B[[d(Y'VT5,%hmEqZYhrMc'4hLLD&YQKeplle"Flhfm[)H#CTR`3'M -"adK5D0hlB4H60&a8F401Y5HehLpe#)T8"HB1aEIS)*JDH%-bDfGNB0V9N!!SjLN -38TkRF"(GN!!D('BaRVX@iB#Rb*UTJhNT&Z612U1%V%JKlaXIpiKYGiKCQC!!pPc -Ym43#!!!"LN&%3e)$!!+d$98,R"6&p9%!hb4j54VAQQc[Y9QY`(p1RFT8hqPl9Ri -9f!Um#Q`&!,j@MEDeZEP[lT*ee`S-%pN4!cN3c9F'jrI-mC-IZ6ph6qa+GR0XIaX -S4q,T@IMkII8#j)ZL-j,2I"hr[[dG9f5[$5+hcl&C-MEhRLRXdbr01c3U2@pDXFK -TGZ(Fmkd+U6kTDI&,cPa2DK3HSITrrZMjP+3b2#K9DT5&AV+qfqSU!kjPN8RAV,Z -Ak&6EX#`0HPbi&UGEc#@dD@[,*"r&Na5l5B6%*2mZh-m89c%6-8#Y$3"@1i0ALf% -+#b3%GfQXKA05lq9S`EPBLAj8Eq4&D"r!(S2N50#kmM&4LfJ6UL#,pS82Ei#*`@k -&G+U'aeJmj2p$adlZ)&Le4LV)+(D3!!#09FG(9'3)pJFp,$-Y'EP2#-b+Hr+4+K! -XLeb+8j!!Q(9`F8!kMGP!SAJ2#fMEM0Id#YU*1Sl5`QdHYK!+Q1GUP3%(P8GKhIi -2'&60&Kak'&+irSc%krLeDhBd!J!!"$0"4%05!`!'G`e9$8-L%K(QAQi3C#dC4'V -b4#3,%&QVTLBRYcf,M1"fjmK*Yc06mTPrGlr[fiSm'pr-Yl9!NYA1l-RN5GLq1j- -4NZ9@j)QXb1mIN6q6RmQmfGCf%8N@%l)h,FNL+%$L"rp1@BD49%3iU!XlH1)RGL% -XdS$Y8-@K&RB5AKr2MQN-Tdqr@5Tb%b2*lEeNEa2deYr0KTa,b#P((lQrdKDbpHC -eqFBN#8XTDGMHT"F9Nj*A@5m3r1$*iF)A(Ra+`bCSd@*%bYh0[UE$mLb8Z8NZL1F -Kb4cpaH#,'S2Z2"A0G593mh5B(ilNbH!U(HDq*03V2L&LN!#Glm-GLj)350pE&Jf -fVadV0j9c-)PcYTmmT-U'cCf2[lLr"Zb,Dr,j*UQJ&eL!@HMeXIT'U5KXK+Zi)G( -%4'NH4P'P*SBS*l2%Ke)*Td69NE&*%bSLi2'$"P$iBJ#e%QfCd)!P0"&UFSY0QF0 -BUD3IT`bXGDL,fZ$B!U8fSh08@--BYZrp*)$#,J2%1@+BZ'k&r-qa*h(XSZeGPi* -0bi'TkX2@JbVR0)ahG0E&J(3EJ`[@YV@,-D*-cb(Q-Y`6mPcZfjMcBMp"cGLljK3 -Rb&aVTMai@-PP[RfUT+62k1U0klXYd-Kcq8@f`RZ!4-@X%K,E)89)*H!)2HGQk+! -L4L(61rDKE[-93T%lT4&h#Yj6*Gq@)$NpfZfT-bIQ[*a$ZHi9U@$-fpTGbR)EqIH -h6JN-ELhIr*F2iT-R9S%)rHb*!9X*2'JQcVG5aT+bk)"66"T!8Hh@RKiMNZDb1RC -PrpLBBZE'f'*+5Z1k(+rRjMiNk%bc`$2Y2dPbk)d[lP"05[[rh(fm5+9i5KpCGN! -BDPI(P8iGH))aB&$'@AMak[HhZkICP"IAk`20U"30ED$cl3ANPB5bhE"dKJq'UT! -!'MJ$K%Ef[#TaY#Qi5[JiZdp@*Ek(V6S2"5LGMGP9XcSTH`kX!)Q$@e`Lj!Hc!Ye -F"G@qBdCpV(kpX(EYJl32qi0AAhd*'kUV,i&`%M,25lL3!)9HJTA-Hq-JNiRVb1C -`%N0V@&,9LJXedG30VZTedYBKmQ8[pD@$C2LX$T!!US[$LD0[BBPS9ake"Bi4i"N -pQ[B5,S$!l!aZkDY"[CV-MSM(ZdcHrYqi$lHRmXQ0Uj1Q&hdZmV+6dc$Q@CReZ"0 -&fVV&S"Ua`C3d8JpM+h9[1peJ#QP[H2ESABrbfDQ9EXl,)rR"Y(aV,(DK,&e(qXH -CLJYTG`ceq9R+jqIUrhj)D3VcIeGqcX4Q-IlfpqABR&9R,NpTEKEkTP6FE&CkmZ# -#0U6Epj,8cI&CH25LN[RmcjI[Q)F-e2@eAFBV*qph(["`34I,9E@$fDIYZ+ZVJh8 -&%Tl"cXY,fjl%2ZKNB,XDjI@RH3*a"UE`8,`*ALRF`jGi-!Gh[Rked&R$@pIN$J# -3!``,9@j6G(9QCL"KFcS!N!-)"b"QEfaNCA)!N!-m!!8%)'pQ)!FJDA4PEA-Z"&0 -dEh!E5A4PEA-JFQ9YB@PZD@jR)(4[)&9Z8h4eCQBk#e9Z8h4eCQCTEQFk!*!$,8& -%3e)$!!!`$8X$@f`,YfS!N!@S!9[Y[`B'!r!4fr*r#&K#bBm'eKXaPa-!N!-'!*! -&$3#3!cm'!B!!N!-&0Li`,M%b0Li`,M%X)%0[F(PbD@GSG##T)$%j16!Y-M!`-5" -"E'&NC'PZ)&0jFh4PEA-X)%PZBbi!N!-L"J'!!*!$"6BZ-#ia&90dG@CQ5A3J4'9 -XGAKPUL!f,M!Z-3#3!``!+!!S!(m"F!5[998!N!-J(kNJ-6Nj-#dj1#""E'&NC'P -Z)&0jFh4PEA-X)%PZBbi!N!-d399c-J#3!`&*3diM!!-!N!1!!!%!J3!#!))!!`# -$4P*&4J!$!*!$J!!"!)%!!J##!!-!J`#3!aaKGA0d!*!$!8P$6L-!N!@%4P*&4J# -3"B3!N!-A!*!&%!&+!!!"!!"N!!!"%J#3#*e"4%05!`!!U!eE#PT!!RIi(&CeCqR -%2P6X%(Y60h9ff+'2YaYlZYfEEiHc(faB9@*9*9K9BMf'(9B&#DJTT[J,i1(,8`" -QDIbQDRi#lM$$cBqlU)D,4ASBB5rYZ5acTL`96)r2pNKjl1M&V$6BJ'b3!'ZD%ZB -8DBKG0`9Epd3(4ED8d&f,-,R*JQ8b36(T0HQlAa)VPkLN[F!r*`mLD`#3!jp"4%0 -5!`!!UJe6#T`#!Zr@j3bJ[U#@m9XCReQCTDd@cmSkYcGhYGkYfl2&Ej`"J!%!D!" -JC(0C'3!$#DJTT[J,&1R$QbkNIKkRaq`VEU4dMCZYeC+69%EUD1rE8eAPM-)NM2Y -cI8"Z'lbB&D-,`U9`KYT)$S[40NdGA$B!#a9f-0*INe$h8`6(+)1+dE24hj!!*RC -pBZREE[)VqZ-BbIX1!*!$6!!#!*!&#!!d!"S"'iJE8'aPBA0P)'PZFf9bG#"NDA0 -V)&i`)(GTG'Jk!*!'#`!,!#X!+k!#"%X!N!8G!$3!,3%BL!*H-3#3!cS!!3#3"6B -!K`"+!-%%!Np,!*!&!J"&!#m"2iJCAM!JBA"`C@&bFb"dEb"LC5"NB@eKCf9N,NX -!N!-B!$`!3!#d!CJ!!3%!N!F""`!!+!S!N!-B!$`!3!#d!CJ!!3%!N!F"#!!!+!S -!N!-9!&3!C!#,!BB!!3%!N!F%5`#3"!G"8&"-!*!'"e0PCc)!!3#3"!G6C@Fc!!* -r!*!$"e0PCdi!!rm!N!-(39"36!#3"3%!N!1!!"rr3!!J!L!!)J53!!!Q#FJ!)K2 -N!#)J!J!L3!%!))IJJ#%2m%!L($!J*"Rr%#JDLJJb-SSN*M,b-Nid"MNQCI3b%Q8 -8*!KRr!J%F-!3!MrJ)!%"J%!!KX#!!%!"!!!J!J!!%q3!!!R)!!!%N!!!!!)J!!! -"3!#3!i!!N!H!!"rr`!!rrq!!2rr`!$rrq!!rrr`!2rrq!$rrr`!rrrq!2rrr`$r -rrq!rrrr`2rrrq$rrrr`rrrrqIrq3!crrrriIrrrm$rrrq!Irrr!$rrrJ!Irr`!$ -rri!!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!N!1!!*!(!3!(rri!#!#$!!Q -"!S!+3J*!#)3#)!N)!K!,d!2i##!!#!K!!!J)J!!)#3!!#!S!!!J-!!!)#!!!#!J -"q!J)!r`)#!F-#!J'ImJ)"U#)#!bJL!J-!BJ)$3')#"Pp#!JC4`J)'Im)#"``#!J -2q!J)!'!)#!'`#!J!!!J)!!!)$rrrq!IrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!r -rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!r -rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!r -rrrJ2rrri!!!"!!IrrJ!)!)-!#i%#J!K#!N!*K!)J#%J#%!Z3!!2i##!!#!K!!!J -)J!!)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F-#!J'ImJ)"U#)#!bJL!J-!BJ -)$3')#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'`#!J!!!J)!!!)$rrrq!IrrJ! -2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!"!!IrrJ!)!)-!#i%#J!T#!N! -+4!)J#NJ#%!T3!rJ))!!)#%!!#!L!!!J*!!!)#J!!#!`!!!J)!!!)#!(i#!J$r!J -)"``)#!Crb!J'S)J)$+#)#!`"L!J0!BJ)'Ad)#"P(#!JCr`J)($!)#!ri#!J!B!J -)!E!)#!!!#!J!!!J2rrri"rrq!!rrr`!2rrq!$rrr`!rrrq!2rrr`$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ -!!!%!N!1!!!!"3!!!!L!!!!53!!!!#FJ!!"2N!!!J!J!!3!%!!)IJJ!%2m%!#($! -J""Rr%!JDLJJ5-SSN*M,b-Nid"MNQCI3b%Q88*!KRr!J%F-!3!MrJ)!%"J%!!KX# -!!%!"!!!J!J!!%q3!!!R)!!!%N!!!!!)J!!!"3!#3!i!!N!H!!!!"`!!!!q!!!!I -`!!!2q!!!(r`!!$rq!!"rr`!!rrq!!Irr`!2rrq!(rrr`$rrrq"rrrr`rrrrqIrq -3!crrrriIrrrm$rrrq!Irrr!$rrrJ!Irr`!$rri!!Irm!!$rq!!!Ir!!!$rJ!!!I -`!!!$i!!!!F!!N!1!!*!)Gd&%3e)$!!#!$9-,@b!$!kCJ`kTUXc#`!5*LB$G,XGY -CPD!JBX-HkYR!Q&8a#f-UZ[HR8k`+#iPMb,ELGpB!8LMpiEh!JNUia8#RBdJbMUr -CpbBL$VrTa[llf*mk9dmSTT%&(C'kJKQiSm8DVUKU*k42-JV[4Fi&!*!$9d&%3e) -$!!%"$9-#h0B'NrI54Xe&%fd!Y2Nh,VcE64YQ`QbqU`[IK0f`fq6GGYA9G@%!#6L -PL2pd"ISD0+Bf([[%R@[C6S+*X0-3qX#ck!"SN!$&[[i%[JB!N!B")N&%3e)$!!1 -+$9-+Qb3!IiC&X0dj141`a3jG5dj2(GX"&32EXIVB$&EecMiSU&KpE-&ZV1V'`$p -MIe6d[rp[Mr0f9KR'kJ!,Q680A&D0p-'14[HZ8aVX",2c+"6FaH)b3VE8Z5$*F`Z -3!0p[JRD#kG&%G-mTHE-6hEc*lLZ&K$2-5eVUQP++(3Xq(j[6I`6`H[ijkXV6kQV -rRepZakZIr82rqj'@*3+i-fUMJQe@`8JQ[%@VE)a9Y9jE2Q+EYiAYB49ph"I'dPT --T*5d!R%I6(k-`pHZ'qD(TKRU8p[f6Gd2ZK"S@S!R"-J!R!"-[ISY!2lU#3-4I`$ -`SR,K!K!FJS!"JQ*J,6L,N8'-h`a#j")kiZTMNXbp+(%I60pdq8A%+fc,'!#3!c! -!N!F%!!$rN!B!!3#3"`)!N!F$!*!("2q3"J#3!`B!N!82!!!%!*!4J3#3(S%!r`# -3()%!9#[r!*!DJ3"8re3Vr`#3')%!92q3!e3Vr`#3&S%!92q3"93Vr`#3&)%!pID -3!e6fN!3Vr`#3%S%!pID3"2MfN!8Vr`#3%)%!pIEfJC!'9[IfpL[r!*!1J3$ep[E -prj!'r&EfN!-Vr`#3$)%!pIEf9[prpj!%JIrhpT!%+rm!N!U"!2AfN!2mrIG@Ij! -&Uj!$IrEf+rm!N!L"!&6fN!6rIrCr+Rm!N!089(p@+rC8+rm!N!D"!&6rpT!$9[r -iphmUI`#3!e48UrFVp[p8+rm!N!5"!&6rrrD3!rcppeC8+P53"AqVprEfrrp8+rm -!!)%!92q3!e6ip[prpRmUN!989(prprK8rj!$92Mr!!$r+e6rrrEf9[rhphmUJC! -%V&5V9[D3!rrr92Mr!*!%rbY8rrEfr2hf9UXUJID3!i&rrrIfN!2r92Mr!*!'rbY -8p[EprIG@Uk[rN!CrprD3!e6ir`#3#2mVp[C@rRrhN!6rJIH3"2D3!rIir`#3#[m -Vp[C@rIq3"S(fN!Ahq2m!N!cr+rD3"[q"pj!$pT!$prMr!*!1rb[fN!2rrrMrrrM -fN!2hq2m!N"$r+rD3!rIhq2H3!rEhq2m!N",r+rD3"&6fN!2hq2m!N"6r+e6rN!9 -8q2m!N"Er+e6rN!08q2m!N"Mr+e6r92Mr!*!DrbY8q2m!N"crq2m!N"lr!*!a@cP -"4%05!`#qeK"9$99%%J!KBZj@chfq1BrM#%F)D5V"[)53!"l4*+IB6%DL*KF0jj% -Qab9+C#`j2prF+56a0JC*AIqF8k)%%4"a'FFb0"8'NS!K@*CPA*F*M1eBeQA%8XC -5PPT,U@A&XGDa0XEFprGlR[IZ[4K&1Tfrrmm!'U@R*-U")%L#)!JL!`"GNrpaeIP -A0D)c#(cI3SDq"-IikiS2QCUI!#RaGirr`"dhjAhkhfSV4Qp5VYjr'eEFm)hD#VT -+a%'qqJB4YG8((AITI[-C"H43lIjAHb[X6qrGqHlXNGq"f&Nm8[[ZE%b`-6i2@[V -IrB-64+S2"cT56T!!HjmBq25RBGY()&QqqiG3mTGVR%20bcmFf'YqpcC-Imr6'CL -Zj1Rpp(Ud)RlQmfISp@K&SSfR+d%8V[[mQB*r!JJq5*qd%b!JMPMlPj`,abeKS!) -eRVRmUZA$JRm#(5N241EXjT@+k$Y)[Tr2,cqPXV"%T@lHmqHL[e"*r-6aNfJlTI4 -Ir82C4qDAR!N3Uk,K`RL[qZI1Af6f@RZV&lY[iHDaF#&20JE'c(QrbR22iUiHYQ& -`8D"hhdGZ1F!8"X&1AA[8h[NGXF(RcS3$%9!RMXmDFckRBJ963C!!G#ZEbP+(P+9 -U5QHIhFir[qMm"5A-40-[4-0Ak$EMChR'&'S+61(Q$+dj-%81&5q'0JkTDjZr%GM -Xf+`5YFTHV$p5PFmNJeFkdXlRMja5MMhr@A3HLcq2aCpALG*[p5KhE[Fh68PHZQ0 -kdT3d4mejpdIGVMe(D#Lr'JXlR0rkJhRZ',mUe+khIHX28qC1ddmKFqP3RIHdZe6 -Q*1ZNbRCpCe9qD4%46GYfGYc9BD1S%(ZdSrrGfD,6JiQF8R4+'a&+jH$0rbTH"'L -iTlZj`qET0'KArPq&F[RL&"fSXNZ2)V&4qqjY9Lc4&m&d"L)CEENrI9*Pj)-%M(q -)PU[3AbpiTIH(5R8[c1Y6TSF(8mX,AS()NYMfXiammapRcple[LS'3K6VrHrH%VE -TBaY""#pBQ['UIl(Y%mdl850j+&mCKLe"j!G%lKhU[YIDF1H#F%3I'cqZ[c(q[&k -LqrA8q#k3!2e66KSdchjaa(c2+SA&0-h@5dCqpr09+J+bFh`NjADmI+8!$2km@FA -pEcffb,l%#Up%N55rA)2$EMHbP2[6hEZY$FRqF,cCcXZJl(JGSR*X@%$+m49Yj$[ -U!!&Ia@Tc(PmN$SpIX)a)eD[Z!'8-(VC1`m[lDc,@[&bT4cf-B@QPb*Kf"M'icXK -J@dRGMe%3[&)kI&f%[#m#jAlfb-XTS+6RTS##PdEJZc[h"YjGXA()EZp!")51#)L -#TCIcffVIAD(EI$G6F*[rk&3pmB+T)mTYbddU)Qml#PjT8fE,r+[,NqEH(q6GhfZ -f@#aj9mqD*Pm'A4ReA%PD,'D,,kX456hc@$J@[IS!0R%QD+,(jD!$r0*X+8rQA([ -rY(ZLl5r94jDq&)JrpJdXA3`Uq+(GAZ%N-Pa(JU)9Ndkpj*iqHe08MIH2(aZpkGd -+C*EAYeDf0R8JF1afLU"SlQjf0Lp%*-IrDI@I9Z10JCG!&)l@VY#(3MQRML<Zq -A-dF''jA24!84#,[4F#`8rb$U5a'D0Lpb1`VQK@p("Nb6GCl)Je8GLEfe-reGpq+ -6dA9V`Fc&H5$Q15`IiYSJXX'jPr0$b9%!hZ0,2kUdre[A2c`(i,YVKMlN1kIVfV( -@-9mU&-m$38q,c[YSV1XqChrA$(1H!a%"ZpAP[-d+M6mrV@6Q6Y'Gb0jR)RYICem -&S[r3b9!S4p[3R+G&'B!C4+I5eZ(ikH4([61[ap'9ah1fHr5[p+&c2FGp3B1503C -0,jMj`c22AEP1G9h$RlcRVYMYAI-YY9hA2hG&1ES@&FcmQK[LL*U(i`U6TEKJ-Jq -M3+KYlm&2U'$H0mHF454F4)9hiPAmbCmQ%$Pjj`)-Ai5S6Nh%+cSSDJD!$*)Y&45 -0DUkpiD[QecXiZNrCQVp(dA,+"RCAM$mh%U8A+$Ur*kih!44bDJ6e"KJHV!Q3!(G -F#Xm*m+h*#P*9H*rc!A0HUA,Z94&chY**Z9G5P'[&CNeb(k"AKl4ANdI8l,ISEpe -Edk0cMcM4f+CQ6k'rG92ZMmi&+$GpXM2C5"ILjV`k"@#YL6DSFA'[LQ'l0d[9l0I -TEphVpdER6PTpj0ih$k!BR,AjkbLb[Vj$aCeTjVaCNp'0S4JaN!$$+CS4)%*ZrM- -35kTj[!f4AmM`V122P`H)iIh%lRG@4a[5c2-243lfcr5EVcl32c2$I-hD)fZcAI( -C%qK[hB3CdqCQjpKQ(0P2l(lR),&epE**jU[VN[[lC`E-hm'P5lJdDHf4dVL(e@P -c*c9Qdp*R6GB$Km%U2KUcEh*6M0REQC'V"cDk9(IcH(m*4jIhM9XTqSQLbXTZ"b$ -9hr82BCFV30(%bJCL8ImeKiS1+G['3`V4`5$C)N+5!V2PNI)5YkZm@`a-d%#p&c& -Y0Q`I0,6jrbmR8C6UMhK"B83!fSLKdGa!4Nea%I+CiANlZJ()hUGE8EMCN!$G58& -Ad("NfMI!Uh'(MQqH[+A%hS6&9)bA8Z$@',`XD2#EfahX#aSm+Gh"5`Me@mmC2-! -5MVUYY#pZITdq(82f2RYIDc1bZB4+Y2jC0LU6-V@fBj*8bGBrHcD$m1!4+++UZea -p,aSfK9,)hPc`$S8844,H!f1IH(ZA5[Nk563iXV0$-R[DRqmq%dT`PTL'5jGTU)b -J,&FjGb%#)dD[ICX&Ujf#e6jLYrPe#RcG$l$GT@jdm$9%Fm,M1EY8TrHB[V*3mR+ -qM*Me"-0L*`,BR!I`I6&I66Xaj(`Z,J'jbmU"[`2dJd5kLC!!6*RfqVYZhJY!ZBX -!rcjr9"p$dhTZ@Zjf&G@TI6LZV%JHDm,aKATYq`aQ,Q-MC96,J3BQDrrlpEif5[b -%LmpMfCN3Pl[3A0Ze(MmhBpJUIck"e&drmk!C!SJ@3J0S)!U+Q"F&@I3S@&6R,@p -R[P5lMd%`F38CSqkIN[N5(9apLhIa&(90k%d)XP%1A01S#%PpQdhpAFGc6!LdlSl -qVY-5TC+Q4J8"ZREPDfK&ef(dFC@ck),'6aU,R!NYLb8J[BJM`%'mYee-$LHIfpa -eBZq1VY22pACG(VhTIGpHFeI9k%eG!k(VjVK4(#LefX2#LiI!3NH-SmirX)jGcJp -IN9feh&cl[Sml-hmiMLLC0'V!iCZB)8p$jh38!a$p$mh@-4*#H&TJmd9!kIBVaQ& -ITQTFHhUS#"%D94YMG28LSZibmR(*l0`0%-(Vq41RP8H!mqaPc'#"YdRP-T0H%Bq -cS2Ul@X3abcc#mcD11)XDP@5C'!i@C*ED,ifZE*DC8QKc1VqBfAADY`r&ZFqFGc$ -0I2@#U-r"aH9P'M$qC8GNBaUfDk8!$"I6-R(-J,2)q-+hbQK5!%!64GT$3#T%$VI -!l+H5[)&Z$6ddafe!)"j'!mKV!"c'jb'rdMNV04A-ZhE93b@Ul8Z`S[VP&JpG#Ce -mT9SeB+Z4S+hZP*[a9I+daDe&b'c[$$I`pSq-2rp3*Qq-5+KVPr'fPHTMclE%U0J -8JdYK+[*%@dPjL8&X(*A+88GJVC'bN!"KC%'*MU'G[382`fJUM52r6K1B3-eRMe8 -Im$5ldC`3c3fHCLZD)l,jR(H,!fK1%mhH,IDJ15DD[9Y3G')fSNmp8Ej!TpXmi&F -ITUpq51"A(d"[-UV3jlL"',fUNa'L"f$dTBND)DC3YrDZQpL%M+Bl%*e6Gd9CZZb -&q1RFJU[fiY&e%fr'TL1KBQ4ej3!Aib%RE4H1140Z&Fr4kbEH3KQZ5IN3DBmQ0ki -diBVB!"QJcAl38QRI`jH[-eaZ"+&Na(i43'dj$R`32drcTA%ZM+GJSH9E5LEf@5X -Rp[P82%+$a1C2Bm1R3"Ul!CY1#AelMTZ2QBHQDC5PbHX6Fmc$554raZEMbK)bqr* -N06CBJb9EpfdTD@ULDI1IRA90!)FSXJF%aV8`m4Ub&'c1EEd,KCrD3LC99e$i+3R -bUQ5Y5Pik,`BK`ZJ+6-K+F-KN0[)$mGBqQ9$D2VR0haq`6h1d%+UJm#Tf@Id6R)F -)B2[$B)jYqS6T884LplQ,GDYrN!!$cZ9j16JpkKV&-LX3$Gd(iN3A(6J3f$'Jlb$ -JSK@CX@i$q@9THD$Z!CLAIHdd$'!DX,PlK)$)J`4SA@h1Jh&B)CZ%I@e,ci'8IE( -E9$8Pd%Y!%TR[,)LHQQl&jA!TE8pXBMQ,aHCPe1RB$I"PQK4S(a9!K6Gdf5q'Ljd -a)BbaDJH@ZQ6%rr#Eae9JS'S5L,)99+a#B"8(A4SETj4pM!96LJdR0cq"B565+`G -*V'*)8aGH,[%H1(A'4J4,mfSfV-3Ki`mlkbEf'8L*6C`"&Ql8LUYjMRX*@0N)d`, -9cBLH+VLdj#,-6Cf@VURA(&A$5@NSk!e)pCQjXLpMBk6efY0*-[hVbb"63F1!k(P -ZhTKS,@`VkE#"Y5CF-H(R3(1VSiZ!Yli-hbB*6[1e0fX,$Gfh6f9jZfN$YCf'EQ9 -PM)d()`$jV)&H)`-LH&$JD#`IM(#6X[XY!!'`p2lfRSlqpT!!HIJk%b%a!3Y)@Sj -"$$GlLkf-r$"lbeJe-[d+'R3BL4aPH4,*(,8C&c)!-XbJ&jC@GC`535K1+V$a$,b -B*BUpe0&Nk2MHXDk+G!FiI#TYVQLDc9ZjNSm#D0R&B"J-(-0l,0qQUf!TC99[F(, -arIV,JV@dkGBd)2+bAIPd'FJpKN58(qDRecZ,3XFIRhQ$IbmDZPEdMbhj`$Z)`%! -3p1C0V$!Z&Ua8'6DUA2)"#NCN!EDb'X-12SFAA8hia,Y@1[[IMfY"(Lj%iR!4f$+ -&l([(E[!2Ur+)"--FC`#d[ZJE`6BZ"(m9*NiUGY(jT'$H1amF6C)`i&8r1+Vi"3) -',a$*iqKANIGpr[aMPj!!bIDrlhXM5S$,2AQpkrS1"0i+4FEVi%8MI3FSfqXl-(V -6$4PQ[qAE48b!ZLi1BmCpRPF[HPqP9X&%,R)H'j,RcF`)k"Z(iNP+40"J5MLm-i) -$krS1j"3YLaj+bX2EMrMc6d8q'Q$'$dL`iCdk2`jB-UpJhKZh%'ZpkjE-kre6a#D -[8+%!Xd`%)"PR,TPRVUbiTQ0S)rl*$ki0QLZRrS#+4AU*KM`V!B1(`SG%`rKc'0" -HZEGbkU,fVdEA6Ih"j8%X[T2BQlU3!!kSbRGhLX%p",bqAimQPCK3-#m``'!3*5+ -L%-GabI)M0e$#qMT6,pM&0JhAQ@JEqA,)*Dj%q-T"f@bj+*V6Z$P,0SpDppDfIp8 -1B5aj$3,T,*KhGYdSJS@!bZGUfbZl,S0SF!,,Z`D[(3#H"`VQ0D`,fGZ"PN4ZV-i -JiHmB$Q@5qACE#A8,AUNGS'ijCD)Q2H!bcHMUFf4QjeD14ITJ-"MZe$-2qXQXHe- -h#3d6Qjq4YYbP,J'"SNB8Xm)$RDT')I[jV+kQ,fE49Y(F5UAk($-3!6+a"FdElU2 -T*r"ZBbB&0"i$JDp-E0"JcU[+*d2M,Cp$T'A)3&mMEcQQI$Cjq*EAU[+0Ke@ZYEi -89[(#,j!!B4lET%H@BT*E4`Gf+#Qdh8pVU--N%r`d[ddNT3Lfqrea'A`!pPAbHZX -1Rj[%LXcK+f4APC4-i#c$jKX*HM([eeh8E25Lb3QFa9A5)"S-XXaA#,KBX%G1qNK -BPJmT+hMZ+5ViPh3K'aVcjm181S)I,(er)`*kiBjeI9@ATe"f"YCLeKhKQ+9r`D[ -ZEQB%)&9i"E'qi&Ab#KA`#U-34NGGa3hiQDF*'L+SA$)C"c4i$d$6463T"&kNCM$ -JZ%lI2Z05KDLVU#"eEdXiVQ$K,&N@,*a`5JVCIDDMEZ*R(A902dMR#%,2-KE)a3X -%FU9JhZElr2QFN!$XeJ+rA((`UkCE1ZU@,-"2&iB'))KErIP!qKHpf5UF'A3jL`V -Q&Eb,V2),hND5&0mXQ2F['d"5"%(9-@``e'8!1T3X,dh'mPi+`jM'9*UB*"2E[XZ -K&"SlLd[MYFJS)bVLXr)Nc@I"T&6YMPH('d*1cm9XFE%Y&+',CDA*[m$!"#jfmb5 -061(TBK*CYE9r`36"h*'#HHX@AFkASZ1JRL!0V3&%Xf'[G6MqfMXMcL'ep)Q"%6- -Q!+9rZbKXSQJf*(HZ'eqk%35PJPF3U3'bY8U1Q0faa!0h`Vd0ZUDjBjPMPLS3`2X -1EP"a1#MUH[N+J*!!Z--&ZlEV`KBV3,C+r@9+cX6j+1I,j,!*R6Y([QT$*`ki1FY -bPUr%-4L&,TSMD)jKNP"a[)`i'P3mf9&T-c8N1`*M$ibThEaCBDT"4HiF#FFHS%e -6MZ'0p[KV*f6h1P0$I!qL12lL)$,%G[f0Eb"5Gr6P8@@c0X3IIkHiZb%j&@ZieJ& -bM-m'aQpli!`SZRHp2"`hU8,VF'*&l@BFABMV3jB`b0apH[lKB9Z9+JkPjVKpEBI -2J-K40QHhEpq6Cp5,b[RNP4f"RBqSV&!5Vf-[Re&PUK#SH&6I13+Mm%dEEXmZZ)I -3JU*kC63J6FGRFN4J)8`m(5$U!Pe'"YhPL0CVG!lGrKK-24d,eS4MeMAKE[H+hJU -Prh`@)MGT@*60&NaNXZ"rY@!@KJIFkdlAjj`$NVKV6ailJmRaFpmrGaU635+PBl, --&hS&aJRUfIppA+I*URG1(-FNZHpN6r8lQ&KUDfP!mRM1b9UD$&CM4K-PrJ&aTSd -JL%-4aeRe#TbJG6[1aNm$[)m%aY`a8i2MYjFT-Ym0BPC$mN9-UGMR)%2(LN#-*$[ -#$5,3$ZMj5i$5[rkfmeYeCXGB8A'ic$'fX6KX`UFKA)LQ"TKX+(FKMV@&J!kK"+% -YYP)bS#ZcC,+[M8AjAZ,$!Bj'9jm0qQ+iSY`a0PqNL2UV*$+SXK&cGh&B08eIS(` -V([q'RX,,"Bc-XGf4Y04e-&PQp#J,3Sm8S3I!ZYdBRLe4XED-PZEie%'!N`1I4'd -NFd`bf13f-NE*8EdKQITX%%kYAS@(,'Yp95r#X2eh()d0,qG!"#A%B#SfMjQqDHf -!Sle#I',Kb&0$EY2iN!$E)EZI$b'5HmJ'GSU!&Qc'iQ!R1&F"EB%`F$S$!`TP)i6 -*!-)mGV8llVpD$RL5"ZL(L4a3$14b22QBDV1F8BF!&YGCNll)H0`G(drJHMHp(QQ -&)G)R)h5%M9$DRXGEf&3h(e3frL@'&Y+3!-Z[mJ$*JJ-Xh%L['(eE99Dk3iS03qS -Z'&+SLRRJ)@DjERbcp!)Mj!9)@"&%ZDB3bE!1RJ,1-#$JSVSS)Q(')%#61f*DTC, -)U#SX*M(Fhr`6L$Fb-SJ-,X94Fr#J!U4mQ)`kQXGTbCBEpD,`#%8(1SYKL*i+Pbd -B1i&-0h-d($-9hj2RAQ%b"FE'kc62#)BAGL5Bq(NV%ZN,jh3f+T!!)K```jr,cMS -3CH-NJ6**`K"B#h'Td(iV#!%1qpaq)JIdm3BNdQiae-C$XcX5'&CQAieKhIE2q1+ -$5!Srqc&GrM'EAicMFRCS(a%Gk&JFrc3I@q`jeR6h0TYMZk1Y815T,@3HYjU)UL" -*I-CLi1ei#rKpRi[0#H@@m%dq)T-ib-!A#bE#aQImkLii)iMJN!"p),!9Lf1k$3a -h-X-Q2X*"a"%X0UBY&L,qM&NXml!S(D4PEk&,UrR5ChbNPlRV,K6cGSD2hUhKPJZ -',f4bce`+i&"mMY[M1I-e"1*&cQ9KhF+"`-J8fLd@#6)pc!R*#9!ANpKTdD[5AI4 -k)J)JQXd')PiKb+$GQK-kaeK-e6C5C[A,!HP`Uh@IG%)eY8Fkh'+bCaT)EhF@8C6 -(2QF4S5fFmLbkBMHq)NH(5*!!IYCBj(-3BB+k8l-ELf"@P(,df[mHT1NTZk3$Yh9 -Nj!L#bQdBh-1$efQ4*c)5bKl(UaGT1"f!SD[3!%Ed1mGhGF"4'ahB2(m)"1$QpaZ -,(&dSPq,faEj1[S,YK21#"3e&lN+Y%Ha80B!GAl`4a-I$2l@jR6&DLJ6A$&j`2CR -&X&--kAc%XdL"KI55&9@%@`R*)JE4qK)4-RLBH*2pC1(eVM-+T1!2@HqfrmR9 -l"M)JhlH"K1Bl'LbXUHfil%Y2@"2[`kYFVl#QBJ1I$B6F6lF[RUPVJm96X6pB20* -"M4GG19YN-P2&Zc$H5"(B1$Pdm0LjRKa&TSX9FmJa(36A$B#hl$3j'@iM"m1@CCC -(8A`VGEYeC[Y`Q%M4rHh$&0Q"T-CF4$8IG)(KmUk+9@eG&HY2*keGLJKlDkhN2"M -*dSSj-Q)Nf@49r[a`3&ZkH)A%5c+(%pbQX+-F(U'YblliG0,Y'3LbJG[X&d20BZJ -"`e"AZN2hL+%fle#BF!@`*)GP'CJVYMb+bpfB&TC[b0K4PG'f`GpEPA%kD8T)Ci# -b+!%ihN9N!J")K@)+3a`)T0c44GINLq1RcTd8,`UY&-fA`XF"aiT*ED2cq8J#$U0 -BfTP4MbL)1)UMQ!8#G6G+JF*C2C'BjR8qUaIjZQ@M**58Q3"UQ'36"ZcALqJL*p` -2CRbI$GNmj(i1SQ*Ym,HUp#,244a*`3p$0Qr8!(X62A1rLCaUD55NDM*%---B!Nf -R0JfVYXaIcFqB`P&U%+bkKS1aNl)[[8A&-1R%")B3lXk3!'P'&-6C0)hm9cZI%e- -'ajU1BKF""XMbKP9aji%)%A*2(BH3!!qS1Phj!Xii'3X3UA"C0(#NqmK`XMch(li -6H0[YFQjZ5ch`RYdqU2BGGP'`T+Q6pB8m1ASL&MN-Cj)Um(CJ-m#%'`@TF5%"RCN -@fV6bD@+Pf1Q*G)N3J%*CEc%C3dB#&VT)UJJ@40QmBm3Ccl6!l,'B`$Dmq+CiBC- -[I+Y#5CFRDXV8hrk#&T&K#AF-q8j9(jHHqpIh@dZ)R"5fTHV)@1E5eAR*c3T16GR -l2EkcGjGjp0+1JCd&Q`IbFcI[#,!*-@pbX[VX1E(*dZeYmUMBC$4hjfMQldB,4Tr -4YU(P@5KC,bGTBK,Mb4Qjr*!!JT)+QhK9+&i9L!Br4Id6k4V4ifF8%Y-21+@jJA+ --VP,,N!#8+3qPk6qLC+2cF5VH4&)'aGrJcYj!CXCS)%1TIF@p1I8RHqVeBkFUI@I -$Vq5Fl)(&Y(lbh(jLXkPM0jE,f9,X%"%%,elPMPZHFHkQL'RPU)13!!QSHj-hc2I -cdPkMSK)Q+48M-`iZKBPZ"8!1L-TqJ`4cYL#CDQq"KkV%d"++X0N8*3)dE5LhQh! -*iYUmH@FJdlqMPc-rqj51hGLf-'ME1EcY"MVZ-N9[2-Y!A5Y[28(EHP14la-"8-f -KbC2)lP8F34@aYec+'d'Na'KS!BcB,edG4E,JBY,Y*02HTReBE,PF1RPcE2Nf44U -%(+d2EbUkP"HYXlm0mm4N1(iaZH8Ce9h(i-#YIC59[c@3!,m,#,-cG`Hc[X6mapd --QQV-kp+,Q8#Nr*-+K+k93F4X9fM#YKF#UIjfmfl6EPrGP54G)G53!)-faZ5JTYY -*E+@)&!NPfbH&ll91SLXI2d0&VTSY'%+41b@cGl4!`epfN!$1L&0)#bZ5aJiLHX- -ddPmL35Lj&(L!!#&rEhl"`-jR2%ZkhIc(**R2TdK8IHp#9(XkKLK[kS!j@Ef20Ze -`Q+X9%QSN,VF,C0%iNE+S'&bh'%&5CJQM81b6`r!#TQ8V3TZ+)%T(lNp08@+K#QM -k'ThZ4jb8JAhljiK@j12*mHP&a9k2((*hJ`ML*mq(3,R+qLDrf'2Gr,fVNEcUY'k -qG)de(LiXGlcaGr-6dq)eKle"&m[Je09N3f)d,iRQ&'bB#QQBC8!Eq-A!*cc3mU% -cGR8I6)CkU%LB@&KA4-k2V@qL3,h"-Q"*`m#mlM5j9GM*JGVY[B)&IijVYq`VNSe -N)0F,Ff(p4ml(XG%eTM4+BZ,!"V"J#KrNB&q#!*p-!9kRI,VF8KLDd'DVpaAa0ZY -J*SKYj"DmJ"&iPIAfcq&9i'L'a)4"lb*l!1+0c#$%1jSdTIPLG6#!R2J*PQ"Lj1L -@'aF1eK@aD0qN5*8E3D$UIiB88*J@#b3"m,X'52,-MS)GJG(FQVK#`E8#b&+X1D5 -rU+b(P&q+hMHd*G1qS[mG!TdB%&X"N!"TIKdL)r4Frq!)9#pS@GFhLG#8CMQNBT+ -4EdT'6#J`SPU'YTBb)13@1`I1ef""F@)&QD%c&%Nr-eb'bjYh$)cZbXfJD`@M[m2 -9XXkGP6he1CAe2ESI5&fI8epjV2iFEfJLB$bD#401r0MF*SUqK5-%aaBLT0RF%8Z -P0jNa`EmMm,Z-r)&-QKJB)Q5&BH&9P1Q"k++mQGrE[HBG[BrX,-MFZ9Pk0aLp*95 -@c1K6&N,e`JfirNCH6R`"6DlZ5Ai@Hq1DDq+FJ5Rh)4V#"f3*M`lcflZU15K68S4 -`X#1$["k#l%CfNHIep'm2j!GkGhJCN!!,$N[%!)"4q"3bL8,"G+'QM1(e`)lF(D1 -C34Flb#PXLS,m8KiAL!jVY5S)Nj&E3I0U#cS)9,qV4&YiEMif'-MhlbMJK5mfrr& -D3K[E2M!J8HG5RMAY$FUS*3UP6)L1pX8[rS+p(SS80Tq$'4fbP8)NBY,JDIc1)NT -!,2PNU!LJf2[5#i9qe3j"j2aS`CZmAD8Tc41J+EIE-J!a[KLmA3FA&2*6-'rjdBB -LifX!!DAT(6paZMcqpl10ai0Gaem0U)*[lN!4INLP1AG(aZcAKf0r-4D1Li!jLB# -"XJ[6FNh!9'"EGMbcXd"kU`S1$Q6C%pZTb0H+MDBT(jIBTe+aU+(6C&cF8E#CVc@ -4dbIfM*DkTX@((S#a@C6!a*!!ABq'P'Z-0bf@a9h6Rl"jGPh4'hRN8-`+S)1c5-Q -HMc0%',"aGNZ1Ga#jeV5B3%h,'*&Tc(NG5LmLdYZF1Kk-!pqifMVjHpF3f(dT+!Y -'d$d&i5#a4%FK!U#JHBeA@(Jp'Ba"m!%r(G+UZdUmVh@(cm-5#T821f#H[0j8@K5 -+Y%mk*9mGakY0HYVj+"DE3FAZb&*Q)Xrk+,-rXZ(4kK322H'1(hT!lkb+GNL$YTL -fK)f4jM@k)a`K"5p#5(8NS,kE)Ic&1#"5"d-'"&N@XL3YDqa%`FYCB`B9B%VcbU, -J4%*8,rVP50fJkmH@m+B[iVTBEKNI`1Cjc!3L$'fqZL,(Ql4)AfG(*ed%3E00!SG -kp+,#`F9DSBQ$354DkMhB2!S$%T%9%b$#aemN`8(i$)kYj#$iA"iX3*eI)bY'eJq -dFZ#`XhZL@88BYLqB1DP)"e&QRp64kcdmZ*5G2Dq86"UAKL%k$hQqjK,&0X9e44f -1STL*VRiPf+PM9Lk@dJ(aZM5GJZe0$MDBc'UL%!+Bl4@!"VBB*5#0S9Rm*,J-NbP -[!dAd"++E9!FEB4*)kd9EkYkc9K-X&41[pqElci0QZE2JQIaG'4k4NSIUK2'@bI+ --ILH"#6kAp9(+9RbkGG,hD&,F33!AM-2qG(S%#VLqGf3"[f$dImBAF1hidFr&J%Z -(LNL!B$(QCB@$ZUcpM)TISZhhM*K*EFk#ackKcDNiF"`dQDrHF)3hM@`DXMq$EC' -`PeXa5G4&"YR"@mV'@41!!NXBN!"!9!SbN!"lU5-6&%PUZ0lE%+H'HGk'"$@dH"X -Le,#D0iID+$K$@l*X`Y)M6$5,EZ&!+MB%dYZl#[bM[BrX+-J)R0H%H5d*dd4%SA5 -%Q4dXc&@P3TMC3F,FV!PcPDe8#M093jLTl3Sc4F+F&bc-!EN4*b)Z&+9S2+4ZQp! -4)c%#[3Dmk18G[)8"mq,PAX"m`X"SCJCmUT!!JPEBNaLik,33@SfC(V#-GRFZ'+X -FeMT,4iF!p&p-SU'crCRD!*bJMCPHGX-XdeQ%5*+6p8S9B[*ri13`&J'mX5R+3`k -%YM2%@G4H3X82R!%qirjFE[dp@@`6S*@RHB2AGQD#U,)$aAaq`D94!C+MU%kNK0S -,"f8[((MPeV8FH(Z3!2(6T)`$$eRd,C88H!XQPhL,mQ,+E$SiB82%)Q5ZFf6')Ea -hRKGeAT2Cfqp'r9l"0@RS`mSh8,ce8F*Jj%l1,)SllN64d8IL#bkD"+2GJP%ELUN -q!hK4E4NiUTLa0&(B[QJYm9eL-'`-%99P'mDq4mQ#"QT+)5'[[Z4#dN8%9$U5AJL -29Gk0*H1P"1)'XR$GPFES!mpbEp5p4L3a#Ud$`3@YVe0NQ+`m6bE$kiUN@$c)",( -mAiK&b'6RMN`[()[J@BNN2'eLJU2&$)fdL8Mfd`#fGIQUJ`ca2-R!0'6Te)6Xp@% -FeHP*h$UNq('3!2H%e1lI`I(0fFS`(583!9QX+dT%NQ1KbKkC`FqYK["S-818,8Y -!+[4NDkRVapDe2K6!848&S4!$1$0QiaS3N9T,kk$5#eYeKP+YTB35Ka4Y,X&r8jk -"R0%Vb"ND3XT%,Qf&T*!!h%U#5GkYZ&L*pA1LNd"J3FMSp4!bY!,E3BaMRf8SY2G -F8'M$H%R2k%J*%+`#,"GU#d&bYjL+4a4BR4"RNB&j6m'#)`A[4K$"ZTDF84%!B(I -@&EPYdZZX#e%a59[eHj,+!Xb6A'X*M%)ST%6JdV6$T#A`XBJB*mT,+CR[PX#'`EM -aAfi*6[i$N!")*dR("h6M!"FId0eK3Q3"r43D$V+T2H+J-[FHQD5X13aJp!%Di%e -+rZ[1hQfN*-@a$KbEaFFk1N`H4%Q)SdcZENN3Np[r2TXD06'$$*G1qR#l'pqjMBf -lM"X$f,JJl5LfYAQfYE'3!&*-"NN6faD+E@e&[1f[6G5SJIY!#J(YLmf+23)[CKD -p!*6Ff+4LBZ-X)I$LQX0`5"-0m!+SEj(!"A`U$ZV%3@em8#FIC$c%SGV%)FAZ'X# -J21$IRUDA3B"S66KXk`lDYrf$9Ri3I0#VRS9i`6f4c&iD,ZCM8ML'XJ+Ef0VK,Y5 -58%X@8)2d5*0fpR*U5@aJmRJM8iH4486dLidkK6FbX&Ia'Vh`CTQ[lq`0bM'h5J4 -CfaI"$`Z$4E#@$lNJppqk`cUhIpKL2IL`eeRFh[*A1+&a3U@'Jicp+B&j@JfVSiU -!k&1RXj!!d(6%e$qI5-'aH'mJfed&NRf-Sc*Q(5q(U8DF!,EVpRG'iG$$38l+-l) -cHSrDhFl!P%"faYXC[@iDPZ"KR6bX8$Sp[j4pL3DQD1#PYbredS%LBQ-+C8ekYM2 -0khL3!0MFia`bX$QX%)N5JGUlQ$33VeDTTrD"A90DK!f,QFPr2S'4QV-V823+NeR -*dQ4$FL#CN6b4$#8[*LFN9bGENamNjbHR*fFRebAliVCiFE`mIL"ZLI[MRm5VidI -MJr%(idr&&m6ciY2MXq2ViRd*@b)V8CTS5!`N-K+q4%pL@Q*YBNkL2A&0BPCLEQ* -P*"ia48BL"b)$NBb),p)6Q4CC'RNfmQjNAQ44j,l)UXL+Y&6D[M4A@Q1D1He5f[' -dR,4SfQYT6kGeTH@P68ql1@e&,"8VLlPLME(0X8Za-l'MX3QaCf2YX@YLXf*cBbY -hahChlKlClGbpDAIZlKGhRpPpHRIflQ@lahF[f*fhqkVGYqfqIIH+9$a9Q0UA+Nm -G6'e+@91A8LFkqp6Ii5Flib@hfZd6h8RFV4,G0lPV&GfhZ$XNZSpcYdjd(q5Z,VT -2FlGEG(r*hBMSMP-hYN*djh"hPHJqaGel4IF*lLi8hArRlJfLqb&hfd@hQEYc4,H -9ZfY&Yi@lNdAh2Hi1Lqj-lRiPZZpbpl,SGR'h3(6IjqkBk(l+hB1Lqe[ZYSRZ!Zk -@LHjRh%f*lJI86DX3hIr"hI@L1iqlYiVZ2h&hPZMq2qjH)lSEZ2XCTR2a%b@KAU) -Q%J!0DZF"Dd@A4C`f@A4CU'R$SXYL62[+X08FhUT+$*!!$'X)m'2Z$SQA,+#d1Y( -P)%M6a9ECRUd+a3!@4*S5A3kLb")ar#eY#C(CiUM*2'#kk+lKlR`aI"!rcr,`"@) -l$Sl)8iEYRZ)"b`a0rmj08A'&N5Q5)lSF%*(MKJ1QmI#!SHPaEKSc0,h+655![bI -Km5DkBF"l2%!6!+0K4"-!"hD#"(#9*Vc%c@+jRh2h2Y(pJVZ,a-9rj1imd@@2PAK -AG"Pp%mmD@&K0,#3QB2S$r#cM!4F03KRN!G@'+j1jk8@a*AZ@4+lS-K)Q0KQ3!19 -c(Rj)$'#2RGJM''H"*%bLqa*hik,lIkNEAiRTGc6'iVH)lU2FR@%ijP%k*[i$3p0 -DEM*kJ+HjDBkKk6qiDDQKD3dhA63dr5Fh93ZfrKFIrBNBm+riQF)$FX8!&RjmNf# -8!bEZ&-12%0,cF",![a$kDdJGGaL1r#GU5PBBQZCadbTaM3,c#$IGCfKLG%c10ec -l*6GT(S"C6cjP'-""ReaQD')[Ni`DQYUjU9)XEaT[iKEG+G`0L1i4lQi@hEHjfbL -kJpaeLHlVh0dRZUpaeb'kVe*A0BRZ"1iZ&ed1GQD0ZQZjHlm3`4-NI'*@D4NJSic -k6(4AFrGcdIdcGpH)lRpb&kT`e(b489c"j(q+,#BN1P4F(4I#T)bq5VbJM#GAG'L -V-G'K)`q)#i3),[(L2p$*%KeLa#3k9)a'1Vm6H#R`YK&%U99IFc0S!e8*4L0iiFJ -kj55(mY*-*1j6NB[Nj*+"Q@ZimDi6b,3m6XLcB%Q6NDK-2"9j8IiPEZ"*HB4-18Y -9NUq1mp8L+1+EiERkJAT@QC9IA38YS9HT5kT(R9%69)Yk#Yd6kKSi66L+k9@U8Nf -'3r9&DJ-kbe3l0ekPeT30U9q5N!!aQB2*0%bHF"r&jbPh$ckIZb[aDA@I`DICI3+ -IppbAmARAI3QI6peqI$jc@r(j(ql0q2`rpbCm0VJEm-Pc(m6RD[FKI+jaPq2cYfi -GRdAZIIKFlql%TmpGL-pLG`UIRlKK@@f#8p'd(-1L*HLhmB5+ZcbJhqI*@3$ahX@ -5"f'U[64jQeU6[$jjAh*PFQjb9A*GI)mDMmH5&A&i-Y8Dhj0F#L$3%Hp@lI%pk%C -9R[S#STLKCURCb69UP9UXPJ1F6#@,SHG)6lS`b*NF!f"T6PBPrFN[NZ2*-dNh!-a -KhZ!'-!ZMlq4U6)k3!%I&C"SQ*%6b-L6%E%a)M*-`bF&N-LCIBI)Q*L6'38aHa13 -YmULB6-'%a2Jf*KC-S0B`Z4q6ec%K-Ek'55NQVf)bJXP5mULB2)j*0bE,-,&KmLJ -QF8c@)M!V-2QrQ#c"j%%b5F2NAmQMBV)'NhXaJCT204f6eCKFMmQIbD0LmM3Qmc$ -j$d`@B2)X*LfBr"L61CKmL!N*S!X6%X$l!SPZ%%MdMia%rj14D#%MdApM*,U2N@J -')p%I')PZB56k)b24+NDL2c%5hFj)p0mCLGBc%Yh%5,51NHKI')PqcdLdK*(Seia -%+c8N5Y4**',dqG3A-`fTIj2'kSP1!hSY#aH55JAZ2"3')3#EA-8ErMe[q#0Y`rL -YKJfAmBEcjBEaqBB0*iG(X+'C1cGbT`drjILT``qFFi9eYa-EVq!PIBfAp%0H8J8 -[D5S[D5+cd-3Xf$dXA$D`d-`Xr"I"JXA`+XU[rNQmF[&Ra*!!'F(3-'iU)r@##@k -B#iG9ie#KM3eqmMC[&)F6X`3Y)ISS($LACP+P++ARkG1BkIeNl+*2FDEhBkBQYC3 -l6[US#A40cAdXbS2V(S[bbj6mX*!!VLGeG$40l!NIjmPX0'AcaDIN"C@0km0D"kp -b(i[q465F`a[mer"TRK5(kr"U2`CYSSDlrN"'P@5@#K'1#f6qGi(-,3+CC`TNEKI -)[%!Jmfm&-RmJN!$jIc%bIm()2)q4qHmBQEr$b2`$4ZC[-$,2BQ5qKj&j1L2ccaQ -ClfGNrK8Mmcp`d0r,3AmE"rerjD#Ic8%rPi2qCacd0iZJ2q%*V(raq@X'PH-PTGk -G&Ml%%kK1SFN6raLfd@611+,3Ll(9FYlm&lcjVEcj6mAQ-9DMC&4ddXF1k[X%iB& -88qaKC4m1Rd-B5j'$#+GAfF6%bCVDK2k[B%krCXYA-+dR*rYcG1ZFhBd8EA`Ee"e -YhPqUJ+K`VVk*MELMh+PMdmJS(2Z[JE,eTk(U%qEM%bI$J1ac8R`G9rB@GT!![i# -k%F@QmT2(ilaY0SJCPHDp6A(Id6[H!-I908A)FH2%e9#p@$Ga6XD4RZ[qd-b1mMh -EKL0399!(Kj16TAFal`e(6PrPh[G3jF3ZjC6'ja-rB+Dl*LiJ)9,Kle(-80&K'mp -#0&l&8TLe`YQSVl)F!V`9N3QGdTbB(*5$J2*a+a5MZ8R*IHVI4pV-lK40IiQTEM8 -Uc4$QCkeiBB2$DT2Pfd`SJQ0IGQKP-`ihrl%`eBP!)i2Dm)N4SF3L#b@I1p)pRa6 -b`@P4BZ5kDk+qjF8aGbacdJ2C95T8P$I*Ya)[R6!aMHZ4R``14[@)HF`bKXP1emi -IIHHh#iphk[1$rcjG@,mH"1q3!,CXIHL83B8Bc2FVc(P`B!DM-USb4e29j9dB$'q -c``GJDT[Gr",-Fl2aF`8rF(cIh-E+#&*5C80cPV9rj[ABUVCpJhiQDB1LZCRYF&5 -%Ui1Y2m+9364X#21!F6,dhB"A81rG[`"U@[SXrHf[Ke49[N'Nr4M#3ZeI3FHcLHm -qVES,fSDGfGcr*$QjQ8''!9l91)ZGV$$#9'dQTX+(V2hYlr[+bA&KqrZlb'`i5Ji -2SELMmRJp1ikZEAmIMJ@l@mijLc`UH5TTUkmYCUIM6YkSP$B#3E$rMVFK"Q&`HKX -lY&M-MLlkh$SjM5H98a4*a*&*-aFAdp!!KR*e!aq5FqiSR1j#UCjhi()-e-R*UXH -Tk-c&,UN!`2FZXlC*-Y4mJU*@b$%XAc)i,Y@fmelPS)R#Q,#TZ9i6DdI#)pL&,0K -Cr@I8r9M!'68$'lM8$2cFMjpCq&RS&I3TNlaSAd`AB83cLpNDS'C%mpjQcYZSY'Z -#ZH*'-YL9!fl9b)mNK,#*'8Xd(k2AKh[9V4k9EMG,"XN$hY1UjN2S6lDHB,3VlUq -pBGKqmjED'kk`m[hE@rC4&@!YAm+*#b1,Y98YULdH-CFrVaBpL-[@PfUP-K)i0lM -HKi#"dG'0qk#+NEcpmZCAHGXBErAP0KKB9)1"Lmc!Y,[2`$GZN3bB9Ym"!qYCYC- -N32Hh,m22Dd#kemL4-ad#im5&T-6E-mJEq1Ze39X9S!dA"LKl-('S)H!c[TX"M8c -K0I`XmbT'mK,6lA%iEpmJAc5Y4j3Z"`8LLCq5!jkI6U4ZU"'k*)ABY+4j+Add-f6 -Ti1"[rDBLN!$"PEUP4Z"P0ke(i!df,5Hc$!UmT[8YAj)APGX@GU&+V+B(B8)-pA- -rKhU-FP+hT,&!%EE68[ECVIqMS5KmKJcrKF++bl[biA"MLYRI1U'KL*eTmiA@#Fi -L%J5V9QPiF$1+&,c+G+QRdKp819YZSlh%FS[pqB)e(beBHf9!R#@%1*SK2aQ`C5N -al,J8Q@ZFSK#`4CX3f6S@fETJNIeJMa$CG)U1EL@e*YQYjfU)ll@Q94$IXUEeC+M --iP[P%4q1Z#X%TG`9$@NXa"dD'l6%@4"TJ*b3!$AY9k[4@GeVZ&EP$B#lkRiKP6J -ZERBCQK[CQ,d*J!5rE(e#A!dBK(*F#S8FhE0JeV9m5BC@90@BTKK,L)F!*Pb#DEN -H'S14!cS!@Z#X(XVRBcGHJ3d)CH"`aZ4BiK8CUIqS+E6jYd-aL"6CZQf)E#f,E!f -,E%N0NG%4Qp)4QEjGNG'eFY&"CR*Rh`8L3l-MNSl)k+TZ%*PH3f4,@'6VM#*6M%c -#)Hc#KmmJF4ia&-hC-++Y$1pMS1&,rK64Tf$HY`Z,9(1@1bBE#A6GKS"@fjG$3-q -bbF8+cNbAYr"@Y$fbPq,QB3PZm)![!@40TeGJhp4-DSck@Xpj&(N#M*2(1lU%eib -3!&T8Fj3cRV&NR0NC35CMiHR$QK*"&T&Jd%UQ[+cHSEd,KXVpl9dbkq1#0jZ@JU) -r6N8rc(IBl*FV+k6QhG6X,[FdT,LKc-1`bfhcGUL3!2B`,i[43J35$*&Ycj+UZ[K -T)6!S-a8[ZL'UDP6LdRp$06,BrKY#j-5SJm`4ja)3`#BB*ZA0rQrRl(qGP[elX[- -pTbTa2*4-f1H5FLj%Hq++)6Zr&d004M"%J$!T1Ea$1Yql(Fh6D`kY!I635aF-K6r -dAM-!*[Xe0QS``)GT&p,G-S@Na@),16LP)[G--Sk%jBBY9`Tdq`VqV162%JJ[Tk@ -640Mk5cBSP3F&Lm08$H%QVHiATEG)4Z39S4kc@@0!LTe"VZR")*F3QD*-"HS@BNR -e($iB6JI2)I'`jqTm$X&h3iLUi!Q-26HQ$5"P-j*&il(Fp-6fQ3EjD20[c&l)`"j -l5AcfY"l6[,eAYE"*eESB28G%"BmcfaqX,b2N")Sl@Xl*jX[4[@2Y$hU52F1N2P" -6F'R2)q+VhYqq'Y8LT*!!%-X6@hACmqT9)NEG[5AYUrNBPqHBCqY9r2Cd$`,C+ck -VT[H)V63+X"%#S5SGJl`*JmSNd1I1*080e54HpLLVf+1X6mHMJ"5LH5Y4BGJU!e! -8dUSk50FEhAq(hSJh422#VI*'+RP)1h!E(SBh62qb@LimBBe&9#YePF``NSA'J)' -@MJARmeYRN!#kYGDMcr8+G2dr%X",GXmDbeNq[AIkf(1MH)AJjXfC1@G5)1,##a# -44+*UL'3q08U8P-Y+f[LS&6MiqrMjNADN15m3KH*P+"GAUF1Mb@jLp421fTmF5aC -+T8*URTBaD1`BNN0DX$PJr,qFNQVfPIa5HU#%B([q"@`[$'B4U"8#3mS!iRD'a`l -hSYjR-fG&HcMcZB8r0r0R,VDjVH@EP&',l'L1*q1+mF[1),@ZXL!LpFFaQB8CPF9 -+N!!SFY5EP0ZDT-GrUCD!3F4L8*bp!!A`Z(dfLT@R80eDl3fIfqp&Tm9q+bA5@B9 -*jbrhl$@hE`#4LE[rcPe1mZ)!r#c#cd,mc-,2rIL"fMQ!b5CmMZ0(KlH-F2%p3Jl -9eE6Q$9#TMqX2Qj-fIDIP6,,EdTSXC#+#PFJ2)))kL0b!l+#&d!q635BZU%3hEC& --Sf5chGjm"Dqbq8UKPqb!E'%pPM('DJrl+2Z#)dUl,b60+rF3S*H0a!P3#5E0CC3 -Y8&@@jMa8A93"0GE4Y8IQ6YYLX6GYqZ,1&NTHd`8-KERc!4Hb55M(TNTbc9FM#e[ -J*#q@Yr6)dQNHCH"GpJ8!erSbmRIPDeXF*%DZlPNrIGU#D(@CpL+'5RjS+%KJR4* -NSF3j1ID$HXb21"XFSSaFCQca,!&i6%ILi,GQIa%Vh81Qj#G(LXdC%%@8KPM#cU& -%T1@-XiLGqT1CqQc1$Z-G3j'#5#iqZ4&8"r,4VFK#[b#J,fa"44lc%+5I-40$6!L -EKCm0T#S!#Y4&-eI'eYrq'6Hr4Kp*d-Q#bMTXdBiYfXAJkr!DUV$XAq"RN@H,kl$ -&$p"TjqEAC+81b3Gam3SMNd[02RcPEaZ5%Il%$X2aDc+9`8NN$c)p43J9XX1TVaX -r(X3E-6031Tqb3`"@pfYC2*&ND#0&b2bqYjK39e&4'4J6)+&L3)p8CAmJ3FGiclC -"4hK+&'!XZMSdA']Pl25c"4m$ZPHBh"(!p@bDq2QU$DZaLE9"B$UV5PZd"Jpq -ejm(VYG[RJj9E'!c1Nf"`mjHHK0iYSQNN#(LYN!!)*)QBj259eB@rlP(UAH-eJ5) -LB&J90a#`6Pak,Ce,&8**pa+TT&[,G0K6(M@#pBM+5+'`r8`QC-0l3+kB)j3UAbB -[5JfY2hd1#BNE2VZFleRi"`cqclX3r+G,![525G#IYUJ"mSY%PDDHQDi6HKV8Rc1 -LIY-R%cHXM$6'5i``J8@lYN)i%m8epRiJ#l-k"T!!qJ"m&,Ed3(Q"(m+UN!$H[Pc -*$'ET5m&UqkHrY$(CqLJ*93jdD31cD`c-aX$(4D*GXV5Fe&CSP4!-kjC-b[kP+Pm -eVh%$1cPD$Q(E@Xq"K,r5)TPHf8SJb2,@FeZS-&Y-PAP69GiiGZ@XVe3RC6+S,J# -%IdT'RXp[HCl*Z$j@l,YB$`"04lJiDS(cj-e8S6Smb9dYj)5p8A5[jDj,$k$+mc, -G$a+26UmXBAVKLeXb[8TXUq-0U'UM`pDbPilaVAC'M#SSJLG8`CL-R$LY50dm4b, -GLJLPdrM*36H!L9j#%9+I23DP"3"qEU@$8ARh4ke3)`UP&bUj%"@4a$qpLBU0C*j -!3k'URKa6lXaM4idMTj18R%SqDaLq6!k(SI,e[08d&kQVcbER+,3&+@G-3X@'+E* -6CJCei8*2jb0X%*!!&Ak3!'IQUDaJJTcc,qF+*[##+TL3!)VZq!J5@kQL4'aImk( -p4D4H!YAa4(hlc[1,jLe`*VHF+LiMTkGP&1cVb-0*KY9FLIDKb"G4Ra-'p*5piY% -![R@C`4HjmDVQKb`Sr2"M3D#1YF)*CY-Je%e@KK+iGJEGDBJ)XSR%l[rQ41TLfS" -9m&Gle1hDI!hmNX!R1$TZ2Q0iYBFVl&rCr+*H4%hIhJG9-b`+Z93F8SEP(Q6PIbK -iI!6-YqNP[)`X+A48%p*#6SZd!&SqM3,)j)QZd4dl+e6-P@'S&QL#60jErdUT*hr -[DpZ96e9*[A!&L&NX1kmdNMSJHj-[p8!I$XB`MbS4[K5fLB'N-P&$4$681K%&K)5 -id['6PDj"1)C9$L(,ch+A'3Eb)(kj*PL9ZQIE3N*AkZBm"4*!SbA`G5U-B[a*@4" -NPY)NIZ,i5H!RJTmdQk8P4Mq&$a%kh3aR#-NM%&BScTm)Ihjk0AhqN6la&N!hrb` -R6ABjQ@JRa`Xe&EaIb&E210JLKECI+DS32d+HbYU#*(N-hX3drV!RfT%L#U46l$K -(')9!Z*41GQ+5&",C6CF4m@FMaB&8*IBT9VhL(FM#4'8fjh5KiQBP1l3C9J18U6Q -(6$DaK8-6DqfPUR`#b-Nc'%M%8092!GTp25h%J`4a8RDM$@YDkc(c!CKAR8(98*` -UX%)9Y`r+B+!#!S),Ei,MTl9)*%$a9p0DLT*NC4[Ym"jaqr`Y!AX,SKhA5KAT[Zk -(L$3HTk%MeXY[3B9lR4&8Ki-RRk(cQS'F[@fNQMFaDKK)$AR"$8d$KJE$aDD3!$F -bQ!6`MNX@`H4Kq6$0f80aKe5a6KGe'RV1cb,ZjU%QUS)05"#K4TQeH+10lDe36ZJ -bqr&T-m-jXEf9%Jl0YiYSdPC'qrY$R*%VGHIQHKrU!qJT1&PE,ad9Q9JG$e8MBJP -mQDRLAli$,jN!bNI`NrEeGe3Z)Vq!D[MT4-$%`bG)q42q[Lf4FAG-S)19e,m6fZL -2-,T*K&RX(%Sp*)Di*!+c)eZmL&dRAmMLcB2@[@%k'Y9#19*LL8'2,3$eF+E3fJC -kq)"(m(J88(#)6k6Y*@bLb*`qIKPUJ4raQd%dI331!acmJLV6i'Lk"MaJKIC3!UY -,5SleP*3F2TMjrGS6TkTc6jekjjA3C[qZBlZUPIF4&eKCd50)UUA#m)"YMe4CZD# -0Y,`)J2F4J,&3dYTbARZXK3G,5SjIZ1PTMd0)N`GSN!!9h&['S*,Y%Ad$UALLL&i -if"b#kXf6hXUVR!RI)9E'KFH6J+I&i0V'KRIFa8*"PfJ-[4!kjSid3T8R'p'ak+, -22e2INrRpFcheYD-jamkFlDNre[0+6Rdk5jB,ES*6Ybb2S1&NYE1F99AhpcDYT+V -d(5p4elG(L$i#d[K+VPDKh*qrAd&Y836Uh6jhG"'$65Yp+DMR0YNRZXXFAF5HD%U -L+E)IM,*3)lj5S!h3[QPP+!P(M)p8Q6QDE6%jLkHLUZ9&HM`0+bN4X%SR3lkaA9, -`%H'"k)&#U0US0-rJ&+Ya+(DARFp[)mG&h4d41,ZH'&)Yjr@LYLJjS-ML`LZkYrG -8C5ANNR%Upqb*R*-jhdm2(c)1lkVfqipjR1%Tcm-F--J+%63Kd5!A6JV6i"8[ZF` -MMmKU,8R&YTXD!e49JE&CHl56k--)U)'FNq(DqNVfQHPa!5VaA38R6jm0Xb)MX![ -MR"S0!LaPpN*VN9@3!11JfA!J15`8jhe!%HE),*HAQeeQD+j+EBiq(YdF48&64Xh -%)"8i!"e6"8[*Dk)+@58Z,d%@6dS9(G,l5&8fU`Y',m(GM(!XYRRR+#U`b[GR`"P -YTP*Cqm!JPLDbR-eR6eDI#ZH(L0pcRLTVYFGC)FIQB,`6BL9PA9QKY81dJ'[YY)! -V%RbDZN)XB"99NibIa8',D"1[qMM6K-0mUZ+N)idM*-@5KT3cYNR*lITd,'NhPY4 -QU,ih#`S1X#MrVJcTPXjK`b,mVr3-R+fZ&`,1BUDjfL9N3b6N"$&C+46Z"EBTj'+ -MN!#p6*'bb[e#c&-RJ+Qd,H`m1DY"Filh+PMUcIqG2aHZUM1KG%YeA`ZfU&EJk[U -HqXb6TqZh%rM9FZZ+HEpji&HX5#r`LDh01c2pd'm5f1(225rCfRcfA1M8ZIT!IDM -kqp+K,V&&,)@JB48-ACE%RBT5`G$+0R0j-%2Ge1`LJ+3Q-h6a+m&-5X['h`3MZIQ -MQj9Y0aM)2AAbH,S(Ib)hq1'#hqcJ(bkTHI"E1(KA!4rYZ!j(lkUXeJk(+NJ6(`j -#hrU3!)NC%!Mb`i0D3&c!3#FeHaN`&H&4!0EM`3h@dk1,L1[99IRdL#SI5dDN1MF -`JM#i"&GqT")VX+Y!GGi)KM,VFdkIKADIhT19J9FU23@3!"lmk#4KIR!5Lr)m(NN -Z9EZkfpkSj11Cd11N&-clF,cQijPmq*Ti2*188*6-#T-MkQ$L30*m6IZdbSK&ZHZ -m$e,bi5ID&YUMPRbB+lE`21`-NK5mT0FcFNk'4NqI2&YpmN4e[9"1ae8$YVa)&CC -Qd+1r3#%Q-Yke,+Bq65KdIDe")+1A4RIQMPSmMM5ec"YC$$QXc`+"EN2E)#SfdYA -BemQSa[9e8K9FqR95D(`)Rfj9KdqRFZ*6TJjq28-Gq$U8HkP'I#+UiHZCDMp!T,J -D`LH#"ajT!GM8`K8d13KSSX)KGUpZT8TM2BradbH"I#6X$dN'D&Mm1-$C0RXIc00 -LA,(H`p,8p"4-Z%!LmeIP"aZTH3%*-0(*6*3a%mAia03qbeFU#cplU',#TAL0+JG -(U-V$TCQBkM"j(1-+iMU4I"ljJjPIPbUGTcS5&K&I*30V%45X1LDG@U8&9!86JVS --5V-rES4Uir5()@V&-iJ"1QaCMS'SaU(XHkK55LHRb0pklf1H*0rlf%5*QC3i0#@ -fbpVZS4F-5qI3&!j0EIG3KcM8X9@(1VEL8!F1G@ch8*-ie-59&Gl4S4F-5qG3%`i -eEIY3,bMYVIC,"%IEqCTAiZpp$!*&K$Z4pci@3CIDcZ#8BA"+,(pEJaf'`3l"pVB -'Q`b$6Gl+aHbNNXR4lfG6U3KRMBXTLU'ePF%a@I(JE@,`,94JY`QPQlLdMLmYB3@ -jfU9ej!(l@JJ&S@+dQp!rl#$NJ2*m#LiLCP8)SZ2Y1MQ86R[[BbB$165fA5AFB0) -DbSZi)H)C)"Y5RJ%P-1ipB+r!Ta(4#PqT"KL0S,C5ZQ5ifXd#5DRBHaqMkSe'6i@ -`YiJUA0Zi#YGE`PR)@0-)15QUJBdG3!!P$pRk"&A9BDm!-CDl-XUB@$%`C$M'',' -XEdEbk3(feT5CX+,Be[@dE-2LYh'CVV3q!A$LM4(rb&N3#4jhT6SLh,b#"'83ehD -h31A(KjShZ)S-PlH#GDLPk"A-CfNrVGp#`RN&Q5HNHq8"R3)B+R4S-#Z#%J[@NJT -%Z+GLRC!!kF,!Fb(cKM+Yc[)-*ZL6)Z$5aTIM8&RVEJ`a8CP-THd9dk2FECTe4%4 -#*DJBYYZ*12I2pQ1aaP*%r8E`+D@LNb,IY'*HJM3Q6Tke[B2ME''UrZTKMZCVrqA -)YmeSa!ZARbSdfjKJXJf5`mP1MMDY!-&jXEeTkjNKXqKMX32[%82iP'C-#Ea%T[" -U4ZdF,e2HSJK-eq'"DeT8QlZFP!6RpQCBX)4aUML`R-4c*k*5lQaHjNjaN[%J9k2 -Zf8BUrR+DFSGNe"c)ldI@(5%#r26Sl#1cMraG(kPT)+9%fK"8dMYYh65UT[Iqk1a -TXkGp"bSRlarP3C&YE62GiNak)Q%56UUq-k@Ra2,Ec(PNVUe&$T,aYCi3dGGYZ9H -+D8)1eNBYSeSAMfI5jaPdiFZQ@1@AZq`9r1RM6j03ZPjaQ+TDLaK)C95YN!!&"Ee -CQ+JlL`c%+%4kG'm89CZ5ST'0)L+%42QedMDUXR+IEM-5%GPiICm!-lVCY&RcM+Q -#abmE6,PjD,G'XK+$(!@2"`e`'"4"H%PKGii)%+6m4d&rMm[JG*K8dE')DB-UmPB -,U6Pmb)(#kJ!PK%dhIPS-H3@1N!!LC#K2[YeV#Nm9MG3`KHI(%L)dM9093D"693H -Ca!1d3[&'AJ3SYN%k&QJT4H4'S,a9MAclM#T(0AqG60+RKlcS3l-*cCdUSNAdhT0 -T+'M@-@%+e9Ce8"6qAl@q5K@(8N'!lYpiZd,CZKh0@kLCUZHbHaki#3CRMV!3(Kj -2)0mY(#-NNC!!#5R[FSd9H)[P3UQ2XB*Z-AKf"cr3&&3m&BUYG+Vd#alp5Z8VeG9 -)'&rjh@K[TRdfNH21R3eAmU1@$41j"JrZaF3i+(Srb-3k()V2+b&5'lfH+SZAkZq -F3hGfdM"Hi(S[B3i4'eeNUV&,Fi,4"l9$$f-l*i1Xcp1QT%#DZKdQMRS!k2rR5f4 -ZV4h03dZa@6P[[l*MU"rrj*!!Q)N1iKFhHikPDXi&5#b[#%"SP!'MB@)DLQZ(l[U -@jr*+lE+(4*UK%CPe+e@KCXpJ4cma)X)JdCA"*'@3!*%&3CQ*bek5-LVGl%9P,iG -!M1kbcdG`f0dkAXr@[iJl%+hAhNpCkhbqB+-,00a)FSDL83G&Ra4Ta12EJiRpm+, -PSr33"DQf3A+b3CdEEfmE&!N!'d8!f1deN`$X-A8j@&Ep)bk)D""aT9)QLRKJKCM --6Zri'c2Zc[%mc&V6@qZ2i`(d!,,K%e1a*j(C3$(e@DV5'8fS`"UGEP6eFKEJDaN -qaDViaV0URpU(cdIU)lc18PPiS5XGR4%eSUIqmSkiNBr!jf(eX(iKH)c$fKlP"&@ -%%e5aKpkK`r$"B@M#BHMJ-(6+11P9c%N[(+Br!Q2rV"%VM*@ck,(3j0r"'C4&AjJ -9hTdP2FP,1Xc,3'H2fL-&KDCb9Bk25lR`!IL!cb&e#*mk9BG"6P3aG4C96Ke!8i0 -U3'HrfSr1*MJKqbi,@E*h)l1(6j%UHP),dMBmPZ"fQ6c-6+,6U"U06++$4kE!Cl2 -DM)pCQI(*9EPr13KLC2K*M@'`qL5c'R`S`)h8"GjC(leTeZQf36Jp30*pkKRTP5l -RTjq8PpG%03FcTlVPCDjH'GQ92lrQ8(R!hbrh('#q@`H-bFYhH-$RIid$2Yq+!cC -T"d`XhUS$D+K*AZ3+U#0%9%PrmkX@LFhR9FbiJmePXGa*Pf3QUQ@BR-RGT'@YaQC -U3N9IckZ@F2()mqTc2EQd@FejH&60dAI#iqpjf+bH[B!Y%(UZ#V30dJH$f["3L*e -bq4A,YmFLQITScZBU9Y&ebC!!YK&eF@#RV!!!)Yr(LKKEe4`aqC`Q0j)LlaDD%S2 -LdV0mLD+YSh+iQBL1-rZL&#e2TNHLF3iL@Ti&3A)I%86*8-B`Q!A$jPacj&'#lGZ -eiKE4K5eK'a,4Fh`8TGI#$Cf)X(ifd++HrGK[YfHfX,+%F3cDjf-8UPK-i)aD%k* -(19Y*K"l"9Trfm!%%E'%6X04),2@*3B2@AL6I-iLdb@D%2`UET3TqeBSU+91)J-R -Pk&%BPPB8QfZRMS[)E6LrQVV',iHJ!PNi+ja0S*!!'%V'Z(X)S"124L!+GP3YF9b -[cmNjPD1IVG4h$(-%`Fl+d#XpQ6ei@EYr2`ea23pM"MaeaIlppF2(kMRQimNRGhM -R1r-02Bpk0iq$-L&'!VR5&@@MI%5#mP)ej`--UZB(85,aFPB)dF#K$$lh30JdH9` -+Hai,Zm`688hH9SNUH1H3!"*T'2BmL)Q*(UC4(Q%)KJV0a)c9m(U$S@+l`B"ULq` -M)KJ'1"K@')+"3@K$-,`B&!`VY'#J4Gc0!$KfjQ41k5(ph0QMp58pcpqY`#!`Pih -jb3[63pSXT3SKm!L1bf6e+&2ca)*-NPfZ"JUXAA$)VR2e1FDpP63(#$)8Q$QeUT` -$)8`UX&-J8U(k0UT3KadU1f!5,!PrG245+)Mf4[jAm&DdKEpFKH`I8,A4"clZK4I -40USJ!KXEQ0VC)Dbf939Y98DS6FPkZf(6EE0(bBD%4bJT65J9&k93+Yi93ZRd#NA -Eq'i)TXCb!032N`(Y"FHQa,'0IpeM$8+(`44Ap#%AEc)+RK4NXXISV#'HB5h`K8- -+Q2i&*DG0hZ3dAD0XhQXD6Sk*kI&6M)m@)BS0&iaK)U4XQFKY4'BR&3+b`+!MYeQ -S"4dK#VN-+aa`qfbD)J+C0-KXjFG%62QSFTk81rli)Jd&[#+K!8L!8@Ak&%P$aFD -B#J+#D!JPF0)&K*CSKE(+fTU#(YHFZ2CCfb#*4VH+ab-UPj[m1R9(bjI*)L&@+MC -ecl%fiIcFN!!X#RE'5S$!V#8A&[RbpGI@%@2bY9""RK,Xf@TZL-BA!e'Z3(VQiLT -#6m'1bh"F+EfSHGd$b+C-2r,Ki6+$"1dhGN03`fdYpP8B'c[)#8qjf"M+3Eb'6Pl -dmMi+*&fT'JaHTRe11S*K&H+@T68Ce3a$$D)S3q(Yi1MeQ9qEJ8j6MHdEJaTQ,RB -E#B!Nh1kPk4Y5H4HJ9D!&ic96MYjqT$i#miT#HL5DNHZkCm"!Xf*N90mC*,JcAZm -C(!8R(jP#AH`Ai!8(V)Cdqd0*-Lq#paIH8(M"ES"[$Rk`P+`,[*dj2E3L*4H-10X -3)3)PN3I%4B@pU8Y(PNAeT&%XRJkfr0-JSa3I%hXIaHYkX&5aiM9[jfZ,[*erZeM -6Bpfc2mKMS@#9(ZYIfVI[X4J3*4@eYp-QdK-3N!!)Ej&,k1C"JCN9rM[b($8$9** -`$)"Z-0+l)K%E1`Sa0X[08br@42kQ`TT0%rXZD2+3!&rN)mBBXr)+YqF"J%4@16@ -,-Njkl$D9#V4+GIPZ-eIVRj4H[HNi%f!GrIQ-3#Rj%#MN`4QSfXG$4H-2Qq!a9JN -2XY`Ji*XlE+b'JKjrd5'GiM@")Ue6K05)f0SNXe&%+CMiB@M4R9K('hS6@C)!kL9 -JG$b!3H-DHT[IS@56&0l%bqQMpm3$M0lGA1cXK@"+LI'q%#1mbdM!-'Ecpbc`*,N -Dlc$*T4'52kH,&fDh-U[663DcFfPZ43m5d[e"p[&iHB4)S(f,bK8H1cMb`D5Ur1- -"%K*&2@*"#HpbqRb'jG`T&c2e+8qaHUFFY[MkKhT9K"j,`1hA!XFpm-'NBaEAK9Y -f'VB8iTNDm'`TLZR&`pU@hZJM6f'T1FDHT8ARJ,$iRNV9ar4(+#RN35iJ39r+Lec -P0SiN3228@e`50FVa3U)-JTB8U8mYCk3V""K&AC0%MdaXEk@(p4fM+J-SSkS`khM -`!i$EKN#ZQ0$fD!f80C%($dCCBp52,TQ(YmJ`&[pENA%MBE,6L"*JLc,LELSbT9H -d,`ik"K%&&hMf,S-#C%990"a9Tj2$bMVje"i$m&9Fm$K9d"q16hRTCfm(XVqBA$Y -AKrQI-PDdcbDH,)UpZ$![ZF+P%-@@+JHkqI02T+UQh,IXJqaMLhP)3NmXAFD#+kE -#YYcf)-4lmdX3qCeHF%p23*6&4XF8B*)G6q"KQ91PXG`kZ!4c`!Q$#BNhajT**"3 -mT%rRm8)bERd3LE$FQ"0%r`FRkGflSNH62jRj`D36Hhlf0NF-Hk*S4L*im0'S+dP -Hi0KFS*`$$`S-`l()F(!aadE8F%3T!jEBpZHc8Eq$(f!A,-`G4'EJ3',F4)#H*c[ -4(Lm)&CfVbF'(PbXNi9-542HCC89Z[am6J(JP*r(k$%Nm6VJENRKI"5AaqMa*[)4 --CSrHG+mEP9mk8E-iK256jTI!V*rB+f9"1I!JCMPD8[!XTITd(p*rHRhPmA2k+jA -e`b&BG0BI*`1dZjIm&TND4%+2#J'"MR(AP2X914ETi%)i-dU2"D&X4Y)@+CdKaSl -(D)V(%UR6#Qll+JC*phM!Xd-bJkbk!#"0(h#55SNiDIe&8%E5*B[ClmiaI,e61m` -B8ILAGkKKDE1fI3`p0J"emjBDNaMT0BlHp#YcF((L!B9ZUPMXl8a9KKI,jGAlc0X -%qqF%Ec@ef0$4$4fRS@25SRf#4'9)PNc0feDb*(eKXC!!AHa!`C!!9#5(ijj%+&@ -#L%*KfaX!I)NB&mK-`3$Z[[+Jk+0Y**0%FM&#"9M0j',kJ0f&MI4JXmVa"hTX[cl -abU(llePR$`,5r)0hEeYkq,"IA@m3aD`D5GrBYKU##q5DLDbY2Ik[[p!,$UDNdRD -5IM#"6`9QI['D6MqHJV()`dJ5aK9NB*RF6j-Dc+f8QGbA4%3r#&*JQimV6!AJFT! -!UVQqR)qRAhiC2p6YCZ#hMBb)2Bj,B!UVRK,Cq#%[`89NaUI1PC`iHDjHpm&f%d3 -k)XiGUkirQA0K4X`0fSApqm@0i)bB%bfrUJJQ"LcI*d(0ZAeE33V"dPFedLET*Gb -A"fUL1+Sr1ZLYJ0[%$r5)bP06dk+QC(S[VM'm%"ZmV#&"N6LX#*NM44)c-B8'4@X -H#l,m`HdLk4Nmd'G0X$ZA(%GbaY[$T*e$'iF3Dk8e3K6d-*(+D4dMGBFJ&k-L+"6 -KFAL3!#pJb,`Gde)b#Z)(QH3&1T-eSVXm99N,P8VdB*26#G&iX54!9,GQ9GkXQ4* -66-EZ"Z%kbC%hF3*S2FcH`QK@i'RiJCkUbZGS!YR`!4-dQ(&2i`+qP1U%-eX!*a1 -)%HePhdSm4-Y`8"-HemlY-cBeQD3ADA+bm,Kb5-r,Vb3"T@RSXZI!LE0jLGU3!'j -jIH)5CL15IU,1%hJ(DS#b%*)eqNB`b+`9ZPPH8Q&)A8Lbm4DD8fGF5(jCYfElj*H -+Cl@-4$cd!6)rBcC9F6%iQj)&[&B*TdCkh$BTlHjHm##cKC11bVS8iLaR%"@4Haf -Fi2hKlGT8R4#%V6hb-6UhMF,E))&ZYb$iM3Dc"hG*dTATdiA(E50,U`DVhS*5ca9 -3q@N%$e%FH%NhhNTNGFrPBl'(p8mARUJ`AK5(TlbCr0eK6aTfEEYB*i"PkQ)#@2T -d3mGPk"3E5A2"j+[I#$Qbj-Z*BpX#&Bh4RNaJQMP4ph[)Ta1VYN9!#fE([R6ll!3 -Gi,VM!pLSZ&0'&h*#pC)rAkMVk40AqD(40",L0X#$QS6HG-5U13,&)M3$jMl2-5! -Pq[1pKhK*Y9S@822`p-"TJp,'SiBP'SkaG`8GXr##Uc-R0Q`2)2)XlE(IcM)8!hf -Db4K&4SK,h3D4e3"iK2Ukb2BmTabD(X$Bp'ckL`X@BC1l"S!YK0md2je&qlFKaX* -d&PJUAKid,,"X@`#H`C(aUQd%b5G"E1qr)rD-39#MS$%5T4hE*dVAc%DCJ22BNp, -iJNeY4VSiDX$dj%i[%"ebN!"LD"`8P0d&"G[32pFJjqUQl522YT ZpS-2YIFU( -Ah"Dk"!IkpVh0YXAPpAMfqHN)ZXac&5CJfa2eeNB@'#ZdY(r4Ar[E#ML$U2eYNbM -5CrkfiNPdJcf19k``eBM)Pkam(+C5)pi)PeJ(9Gf*aj)Sj3IK)C,D5(ckT,P(0V4 -RUIT)'jb*P5EeY+A6%-PbLai[,6T8&"4YG8CGSU)1S10KQrV*@fK`i4%R$UG8pK% -pAQ1SLiBqd+8H5&(aD*Sp50ITJB9HMZj6k3P*kd5hR+[[1I'+Vk6NXB-[)a&ai$! -5%'H2PCcMD(pkmi*iGIJ!aIkAp15F20Yc$XdP!riAUJe9e@rGGXI5hHiBEAG-EJF -!pdi2+$-mHY206j1Kcjm1NY(lreS8hJ2`hSp*'6@L-ik1-+Ud1e%XfF)(FDN6aTG -@-K[%Jp#0H*)l@64X+JSb2+BLJAAS5X!ZIH0-5Cb2rSedJ5iCIrQ[j*+)3,CpmCa -1GcNrHh"VPp-d@e[1crir@mkfJqHd#'V$F[$JKR2c3,k2d-3r@$8i%KJC,!r3)q3 -prMrKI')r(K[8JFF04J-B,mB`0rh(Hq!rK-(+"NpJEL)HKHVZXhY+iY-G#Mq)A6a -'iP`c-8#6B(DVM!b2b#B$b`l"XZ-hCrRXEm)b"2b6Y9,!2eQl03,qbIl[VS$[&MT -!`$mCN3,qbFM@#TKCrLi+H#YBeKKZSq0&0"XIE!"b,c$4MViFG1cAaE'RcYh0)qH -krrT(EN@@SafjqEZ9H6",If9NkHjNlHNapYh*SVH'X6[fG%4D0V0aap2(6j@mF2C -iID@fAm1aRZq(kM'mGq#BamQc9!U!K3`J3M0HRP'f9adX6Z5N,6TLMIMdaVe8"3P -&[1LN1N-M&M&k0bfY5KHp05I`d8eL-5rIV3b[m4cdA14mReCN)''`XcX@D+[r!S& -UTK$4SA"p6r@TBlp"`2Eqj4bic@@+!`9*c5%I`+dqKZ!Va10Ne8&l"`ji&N&BH4+ -'M#qN%iB[#*8M6GiYNUSq4KehQ@cm'BVRG6PE3LR&+ZbDY%el6P@IHU%q*leGYfV -6jHPZqNSSY0e00mT(@qA-h"k#`h`lNdXG4#kefkq*IJa(FDDN"YT(RGMel,Pd0T3 -)GGJTQiK%I+$fj,PhAUL44Bf-h[5(E(Df%U1)M1dj@[PASkrc(%9"4!rc"BqpAcF -p&VhRI54Pi,6Pr3A'j[1H&qhZp)CrfThqm%rcDV+lk[,@X4[pYT(IJbqA2&0I@Cm -$[$YfkRMpXG-pi"fjDcUC0JljBrChkC!!Bm'(81)!Mcd2dc3N(MKKXdhc+b+6d"% -2E3ZlMb'3!2fpar$r-Ima3lDfA5p"YiiG5iqGcUeLjq&Yj*CHEM392hdbLq9(e1d -,40R*9lGdeMGkdqdj&$80&T,Epfc(2*R`pMImlqPXQ*j(1fE)e+9M`+J,SfY2$TG -8eeH'Hmk8H(1LS#$8-MkUk+DB(Fph3R3Q8[KLeKi'LcaXUdb)4qZ`l4eY'HJp+f9 -'QU--,1h&jC29,jcmrVQ5bP0im+,6fqA+H,8F9r%X-UH1ijN,lQ!TC$$(PrTakCA -+FfI1qRUf`qYC2d)fi$HJ6V%Z54GYQ'5*c3j5CP5jhAeia3&'&,(MGMCm'4ZHHUA -REZkSDMSEqH-kpXkQVIIBcaVpGFecDiVpMP$SK6Y#)AUFi[E"kKJF95jf4mJ"Uhl -M(D,4#pY%)l@eD24#665+E`8D[A$hdHL&ED#4-C!!9Pf["G,@C[$E#+3A,XKbJdK -48Er89rIBbiHG[k[[bD&FjjecIh1m[JHaTqF1r)hfhi93Il`NG2*X6XRCfT!!GXE -,*kX"aCcX1C96XUZkK(i1P`b3!0J"!!!ZM%&%3e)$!&0X$e80463#!'0'lM2[R6X --)b)bNa%4iD#S5+4%CQ3Z[IF1ep6F6fCQVTDLL'+ad)9S9UE[[61b(e&480(F6fE -Z(j+CN!30,TI,9@CUDUj8a(h46-h-#-IKplici,LIrZVr1qI[qcrIfFphcJ%EAB% -%`42NNT63R'pl1M&aK[+!r(L-9AkF@re*pkFl@kaC(X%43RGcCpYkNEU%`$UNNP9 -mPG3`PZUe,GD1V4dV@N['VT!!Vki8jCIELI5N3'hq`N4C8rkMkIKq08QFTRPX+I3 -IBM,rEq&NfDR-e@*YAHKAiM(qIH&X18j*iem@IL'[9rkT,E1jk(aaS&CQHi,q4Ab -'$bVm9Lj@5RPqi36jYM*@Hp*@63H,frQ3!-+KmJ2+GpTpYR)kA"bKf@hhdap%+jp -91%mZ8KCS$EBh%qR6iK[mNF+TFTebNFmXI&"q8APBHmPfKNi4ch&MBA-C#8&EDeY -($@+#GYlf!QdM2XmI,db5Uj3DRP[BAakJ2+9pEUZR`m5&@JYE$lT)r*Sr@cK(VP" -'D5@f4R5-f)U2+e`X0e2DmY'&)q@1bRLYeZDRH@*l,FDf1j'q,SEce`UlbUZ9TEa -6B@pjLI+f&QTE46Z)8EbJm%IjhmSIfLCE0'dXCQQIf6kQ[F6P['GK(cP-ZFTE&ri -UIkMmTVeXHj91&'GS*fe(k6IL+rch`ZRb+D@G&Q(E6(m52q)r&lD8VbQ4[%RK,r) -Dj8rYAlD0Y+QiK@FAhReDIPr*d6k`ED0Aa-[D!GXlp,Vi,Vp8Q#R[9lTVRpMq4[Z -+HhLh`XlbAZ8JleIiP[aAjE$fRZd3c4#$YC@f&64!I)lI+`b4pbNlqC(#'r*@jDb -fblD$TSZ9h&*i3CD8)1e6f`BD++UDB$04Kep8(()KPIf+!h826FM5Z-j6q$&qQkr -P4hQLPUJRTL3H5lbGZ$D4ZjbajM42R,BXZBZq2Z@BU#B2A#r*Keb5V-$BA"XSiY8 -85IlF)mRENb8j&UBDjKQBp8!@BH,(T!T#C6!$Pe@Uk`I'9USD6DY82A4pTDS6Hi` -#Q8+XN`)%`CRC,4%q4Q`+XFXBlm"B5AC#XfD@r'C*6Y%P@AG+XLYCd5Cp6V[ih`l -D&VSQ02*Dk#VrfiVk3F4Qrp,!&4(qQ[!"ErUI9erm'X&5j4HMG[YAA9NHlIrJ`c8 -4SIpH8q&I%4hHSX)IjSq3!$HHprHSrFM4BMF45PmH[HE$05h3jr9JbN*@426SNPE --Zh`D&HU2$[5,QpG%,)rqr`4TDJqP4iqHp'[8+9&0p'YqTep69#I(6#$4*$ZjAf2 -@la3G6[,BPmM)6NfL6Y([$03i`6T&@A0#2j'%(L`KL"6,R9M!@*L8"#3H&$ZTC[+ -"%kL6F4"J!Y8U'5K'JH#!0Nd%&1SdU8kQN!!b!M&6S5dH$'95UGF8EkDTC%NAf-a -C#De"6STZR()U8#TD-1G&P3&q@X3*dNp&XU$%3%5&&@P4C4!6i%98$23*QLLYp#Q -J4B+$S%AUVj5,U"$NBbmbb8!&-a(#,9jJ%)T%&IH#JiL)"))TQ)'%HVp!r3aAD@& -+!&ZNK#5H5Pi3@d#i8[95L)Il)BakV`k"Q[dZ[lP5GCQjhk93dY5`L5J6M)MrUSZ -EdGhkc3l-J+4Q%q'5##2i4EpCN9eQd3)9,XlB961CLEJN2#k"L&*SJS4!0#R8C5) -Vd@'19ki3-"[LiIV83!4m0*@mH(QQ"9%QF*L&5T'3!1D&+")#U9PJ8RkA`dXCA%8 -fhbm6)k3c"q%EP3a$m-K&F+I-A!S"+PF'NR[+FKJf#kiPrY2B,T[!)&l`+L$hhMR -C8c'3!1Q&LRXbpfRJTl@Z"!3K`#[1Z#hNqM4G&LmcPAe398*GJ&q,TjC3+MVm[Xh -d8H29Mph@F(TL4&8JL3"ZeVJLb!5MZ!K'2'X'29K`5($"*6KF4!613NmRNYlZVX* -Z[-E-&Z$Q@L89"!Y6,e$"*([9%6L#bT!!AMMTJNmrJb2)i!iNA-"j"3P+K@k43"D -%#``-kfG&k!f)CfAN-h3`ibF0L+MLRF%%B[aqKFb4HYL8+k,UKr8Yi)d!62$+!)X -NTK49"RUA5"e%6('3!)83$"fFQ8Ur`R3*US+8S5M8cka!e*SZ-*Pi2!%"'SS)03" -Qm3*K'+C$CU*S)3@IdNS(i4H3!$)G%#9ibZL)TmRNJfB+pQ&`d##RRjZGh'@@FPb -F6*!!qFe12aCqXL!Y+0NaXe0`%&'5p#!QhQ2AM"80U`S@838,S4),%p*#-00$p*R -!ER)3RFM+,Z+d'`35-d`HHhA"Uiidk%b%D#-kI13)5*91E+q6V3ASqG6#9T8@KM+ -TK!i(8BS%+`C#@4%[8PJMj84,k#a5@%YBK(`#4k#T9iUFBJLji%lJR@MZR)b"H0` -T-KrL3V!`#6'!F4"6*+"Dm+Q&VEa#k$L)P1#0f#`Rf316KA%394F)H)iQ&ba-[CI -G"0)B6DCJ,b%mAL!)D-kZ!RdNSS0LN!$4aRXP"3*(T*T96JU$fBLdAEXQBTAr['A -elP9lG[ZMe%hKYH+0fPfl`eGXPDk'Kfk-`'H&@[((fRG4LcZ0iE9Z#qPUa)EP8D% -VSMGZM[JJ)M*dplr&HfiVET@rbM-jL)b)q466M42%LF3FJ@j(6$"TXme@HEEG$DI -0EQE5[TS,G!ZBIC)FdQ#9M3V-5TJYST`HM3RH`SaK4-"1jiKbCKqBE*MZSZ9H$6Y -LF'Jmb5"MpK(6fH11"#*QG`Ed6TLdJl&*FN!r-FFb6GJGr['5b%fESeIY@)kkDA4 -ST"L81SAN(0-0-6`XBR2dNRJdd686ZJa@qIXiXY#q,mCk)0CYB5j#p6UajpQ&PEX -MGX-9%D'4lXki'89mBG+qA`AQDf5KIDpL[42V%*M1NKbF,mT(-X@J)rZf4'jD%KR -UAh2heQUmV"2"0J3Q&k`R4IR'D[(kNGc6e'cG(1'fNFFYVI+mDY2G@mMKTYkNcD[ -$C!0CD21fBHh%r#"-0##9LR*f#D!0Y&VD*,%0#BcDY'4jq*j3Ik5mLEN5rTph"2, -YB3SNqHiRSL@RR-N'4B9',iN))m,U*ZEJcYUm!XK2KZa`Q''3!'mQbMRPSRVcCXp -bQJ,F0hV@GT-fUaU6CM"eNTcC6T3[@86(,9+#HNY5QBDp9XZXMH`qIG2QL$fEPZk -*h"fp**3"d'DGJSJ&mmX`@C*m29B-bLQ2hjiFk9TSG-5jcG&VPLq*aSY4e+ES*HZ -)iNRDV$`YSFTd4)aF%aUp2$cqfjjr66$1EI)YlQk+C"SUPkrCZ$XL2)aPZ4'afJL -NNeP*Q#1GM$L[*@bdbJRC-&GKU*B3,!YiBASV0$*dPA['1$k6M,KQZQAQ'B'F-`, -jE84hXY"'p-&k0HC0B5CV#GLcK$j@4d*6!Z-'JI'Bf@M%c$YNSaqF*Zf(@%cmC+( -p8!%iHCLIJ9QT*GJ!Cal-31[V#I1IEHh`RpL5(%re$kG5QjdIXV8IJPQ$mX0P`)M -#T$0-%beKJAYMBTAEm010b3p0@'25pdZB*M!cV(F6NSM'accG%&FUf#'PfT!!FJC -f5!R!cX5N!NE4fK3G$pCi#+!E['#(+!aXCh6AR9(IkE`GS)fiKdrDe&LlY5QlHB1 -12rH3!+lDN!$'*Qd)0Rp)5jK*@K[!DE2&QY2Qd%0)id1QDN-jq21YmP!Ac(DY$FK -UJqc8jUVeE*ZNik%02D-0aB'SeLEiL&ZA`@p1Kd2$MNq(3kqDY+%8Na#bd)CLBiC -qJMNfCQJ6V8elNLT0hK3BY(c6QMfVGkm*4@*FZRYje1C)iPkQB6BQLf'Q5[,VBD+ -P3bEMZ"#e+A`h[JLFYbcG(4iD!HRKDGV`8ZPXjlNR((GiR6BF"mM9fL!RY%N5k%+ -"(K!SC[m4D&q"GK0SBi&@#24(JAiPd"+'lB6A1S'@#I4AJEiZ8&@JQ`ADRdQr+p# -P![e-S)%#rCG!"`[8`M4HCZ&eYViUd*m&@XING)'1*(9EDQ9+83qT&+K$*+q4*RC -A,G!&6"fN2aES-FEc082G*p#A8@F3k%bmpc'pVc)Bi`@k5+$Tl#*)S-m*Y,G!4`[ -d)i%Q#,3eUlN[C'XE1mm!JEbQY@)8f`@Dab$0%ZJTJDB*0%#JVc"&NaQ*K3*p8k" -r#,5+N4)Qd'F%HNfJ(`TdV8!(#I3I$(@4%3HSiI(`BYRL(L-8c0F&qTC![a2S$B' -1&HK8JEl'D%TRVRqHdI3,)mJUd$Kf@S'G%jXa@D"A"2UH31FcN!!+Sf#930Za$5J -@D'H"'J5k4k!HJCi6U-Jm-N5J@3,0B!I'AYjQIZr$cMC#S1d&QX1Z&c&DiIeRQAF -Q#I3TGSEq$%C(GZC5J6B5k$X#c4GS2i&q,p#M!KdMd)N-f$$frb)MTBDj"SICbh, --6ZE@)`)pa(B,`1ib1J$lYrJXXS*jm%0fb%HBk&D"EK0SGbEk%I0q2A-F41F*p," -!Gi&dYMdad-9bcfDf6l1CN!#IUAk(lFI$!QdQd-m&'L,3EpJ"S-)Kd$-#R5)NhXH -TB[1hMmNVbYibVk(TaJ@Zi*AcDrU%jCCP("TBeITUNY051EQN`kT4fc2h$cR6,Q* -+E2U1Z48&8A1UZhmbq0cd8dDc+NaUfhAeD2Z9E52UQN4163[Cpf9peQI$L[XGr2E -ma&F62)%ETMAVY(4aqH8$`bqf[$BclXM1f5dD4bmXlE`hIpf-NiN'64B,DerI2Gj -kpreCErljVkHA"Dciji#HbrXrFILp[ccrkiH2*eq3!2lEk1h3-3pFHRIS5cpYIVM -,f9eIIIhM[jppXZrIa[lppeHDk`l6IcUq&MlbrT`2IRMMPc@2V,rhh"HIprViU@I -HqZZJ&hjlZ8e+d+IrD09lbEMlVVrchBXrIr6JX4YE[qraakC&Yl[YQE$fQk0&CiA -P%Bp4NafdmGBGj#$dq)23i`qk6"EDS+jBSaXCP!8c3c1L)HrA&)hh)G-fdaYelQd -32k&"'M6R$RhM)050"jZY3B2,Q4)!(9b[$8T!&4qYp1#f[NN$!(q,54A-IQh`IY+ -SLA+RA*Kj-)-*![e-'BcIHX&BiqZT"JGVJipSaUUEZb9dKYR'X*XU*"QE)Z'TACY -@K8EaJk'4QlC'VJU0C'ZLE[JYUM#"Qdi,,-CC&PVPXB6NaGTBe+F'SeBk&T@bX3f -D-30JFf&)e`cU$`m4X`pI[V2#XcF4-$C5'iX+beM32aDpbpM,QV(268T[(,jm-qF --EHaXcCLA+Rd@dYlD2DYb%CQ&fPLMeYaerF4D[pY,3EjIbdGp1"qpI$lUa2RVY1C -PclQr0H6[eI,$Y1CK9hc(fV"l6F5MU1cPCpl#`GkDF6jkrRcdq[PINS@@2acV8eB -r1[2mU9TcAj@`1DX5BN+YQ3R"2P8I4'hkk&%3-D(ZMN4-f'(5*L$V63JM#fe#"0E -&Q*q#bGDDCrZSb2"4dGjk)b(iq"I1@eAM*m`r[[i`B5$djPR26KMQAZmJ&pS%[(j -0`1YAATT[VH@9!Y8D+06jm`5YH924FXRL"4*IY`"[hN%Y$rXbh`[q-Y#SpQ2E5") -m&akf1l,#ckjZN!$&RSM)hFXMeV!,rlTiNYh90IC9Akli0'eDmcpT!GGdNjD(ejU -mU@5"VJJ4A9QXPJIhMII!&%[bRcBbXH-aJYbkQNK)PLD4lN4[HQK%Hf'i[$"FfRL -mZie(hKLI$KKf-V(6*0(5fX-d($lH(apj&IV8Ah&AllY,pFUPd`ji5'aH0i`ICC9 -(Pk@kBA3*FF2i!Na4KakY5(,6'$*KE[Kj)C'!'dDjdlVTdG#DkJ`#bD@0aL[#k!i -`V5AjMbCN`Tcamd#Q*--,`3YJpHDPrl1R4`r84Z**f5m(V,+K4T4rR)m*dSFK4T3 -l!*B"PAm$fLX$QQ!$QQ!$QQ$$&V`VchIIek9SV4m5Z*'a*QdN@[#4+X`45@i-CaU -3!1#DSeNci*h0J2E3J*Ff`d!IA,a9'3K00LpF3fZQrDd6crN3A6PbK$D+R"EEdR` -"6[XUe!E$N!$NMZl(J04K3%Bc`0d'0*)'E,0K)m$khEF[rV32%HJSR(N8cM`+N!" -'CH,-jG#+mcE2Xa1(%VJ,l,5'J,C6[jf@f5Q"[G(HfCAkGZ&lYr$M1@4i91MZ5&j -l3M[NVlhM#iQrYY*lH6FmiX10SI(%VI1q#B8`E(c6-1D-VfQiq6ePc!jY6#A,L'0 -L60SB[25036iCFdU5I`j%4JIP9AD+A)r#!bhRfLQqIVA%J3k*FVY!1d9ZDRR4EJQ -VjbEH5ZYSEX!6SkpG03f0A#AYkfL*Ub5Q6QRVSYV4SqSYb&SmqBjN,4jXFQGK1Be -iII%34Z[L"5CYFC,9-Lk05EAImbRTk,#*iHKB`kp&q(+X0bb2MSK['G*p![%NM0Z -TMBY*96N1MI8iR(iF6YmkikpHRS`lk56mmFcD1&6(aU'Y')GZF0aL5Ckq9*5RidA -kYmN``6$lBBT&HH)-d6)aQ'RZF"29U6R[eP"-@Llb@#jb9qjq8(M'4f'raq!AhBR --h3m9U$,QiT0MlL4*RT&QTaPfL[IHhfI$p)1*%HR[JMbGR+*85k3J',X2qRr0Y90 -mh1aFJAN)c#IS#)`Eb'[,G[D+@QQ5dqMlfZpqmK64+[rZhkSPjYNTf"CSr98mj,$ -MHVV[H[Taeb-%e9b%kppmelqjA`pVHh4,SQE@RFQH&0HbY2@aAH+1&9RYpfprS2b -qXLH+RkPqX[5f[lCYaj*'c9V9$+Mr[1,V&MdDhUalima,&eqXH[lm#qIq[QkYXRY -eq+V3T8[#PRrfFG5rScGYr"HkVXhA2VVkiDYrrH4[HrI%h&RJj91[R$`D-MIpl*( -,rES&"3H%h-2m4[EG+cQCPbjIccMFlkhZI6YhDrpkepFk[0fTGjqH@Ed+ITca6G- -rQrc5lUH@2lIqGH*[dhqImBfYF0*r*[phfMrQrr2,i(Y[qEm2QMGVa!p$KJlrcMm -`mGY"JmIQ6mJE2hVNU)$XS,XhVQ4HbVPqH%&'pmjp(jljB0,M#@f-c3f*r2qY$d6 -"9#PYq(6PLRh2lGLeFqZ@plGpX2rG!qmFHZq4JeiRh&(L)(-#P9@(j8,JZ#r'd,Q -BpeqF1qcCTqCB&Mkpk-*A8kFm%RLm$aVrFE`2'[rKjS-[jRlPRhhD"hpapm'BaH0 -bq`plDXkc#aFYH(VU)e11mm&02h2U6hX)2r)!k*Br*G%lDlM&lhMCpQirqK"rlJT -Lh(k+fbp4iAIqaA0V*fK@([A[q01i)q##%iPeh55[h1(U0%8h-p%l+$M469hM[A8 -V[rPqPBPNchAXC$,hS-b5LbrMDA`pMq9GH"a+-"9a+mBXh)ma83r`FRiI,q02m', -q$+rQ6r*5P'rbmeVHPRIN*E`4EmCEm4SqJ0IcchN&raTM"(TJZpp%`ENh-"VQ*Bb -`HT&AmHIjHIi#5X6qRDp$k5KXe'kqQSHME&dSAmUAm$#qR(r'2qC4r0mmQQr#F,& -rm8LqKNI`cI`DriKIj4rb9rPIq5ImEh`[hi0Grlp4m$)ra9rK*e%i+i3RT[1cr!L -rc2[aEMb)"r-!B1pa,rS'cqChq4@H`c2j*3KGjaRm-%6IiYejApiC,1hjkl`VIie -hi'rc6V`hlm0lmLcHLaI`(rN-rJe[b[rN6IJ[["hrLEIN2r2@r&FqNIr'Tr2IQB! -04BMi*2iI2TRrPdrMrq$cq6rjPk$M(U"mMpmm2SZ2i$r`)A`S(mkri`2aqjB2iS2 -j@*l2*r!m2Tk2jL2j+&#HM42F"G9A',djS2F`A`#DZi2@[[aK2T-rb*2iicb"Yq& -'hT`EH+,`rh`@%&&%`-3VZF3hm%rj5Vk#lq22m4em&pr*Yr)Yr(fqMAr!pr0hq3( -q$Mr%hq-(MmX#rcF+6QF"$"f5ZFSGh-)[m%!qMRr"a`!lPh[4rIPLRXZ(m@Ij8h` -1K"EbTrNLL(l&Tr)Tr"'`2&B@D-crH-`X3!4X22&@@H!,d2!9RihIL9RJ,rMG1JZ --!EAM3'pr8%cSI4Ed,N)@H"V82J*kEjN&Z,D62Lik8REX4(!G*'(C*"B@NT!!GS@ -%p5YC@%"#E#8*aiD3!&$N)X(q*3R&8558CV23QB8Q,%`PiABX#d8X4,"`QBA@,15 -6i'G#rVBXc#HKGMX,HeQB6%,E&L3dUQ,K%!R0'1"Ql8KS98c#@NDS`J#mcklI,5A -K!![[a,(3M)5$l+LI-04H4[6H`55XCST@Xf1(-8H%c@6"3),-''5""-Y&%Lk8XI! -U#k0*#'31$@3(#qT(3M"M#fC%"1pRi53,M24J*KV!$Kb`MJAQTJ$'($#2K"!R#`d -X4*+3!,kDK'a'5[Bf&TLkl'%Nh,@c`)jkPfhBPHiXc'D"(IA+("*bpV(!YMq(Z5c -(`J,E`KcQTKbfcCNE@6M&!J1@Q8$#T@J@XPLBcJ)$FiQ4FTeYlA9'k299,,$MCC! -!Sp)-2mZ$KjQ($TH`F)i&jUI$M*EZCeJ)C)&jT6Z$h*HapBeKJ@RY'm`#1f[Ii5b -`8hCQHDdcBq['GU`EBq['D1r@Q!9'G6Hf'pdB@rX$,$#Ufc-!l98@')#ZE%qk9V0 -3`3,EKkjXClSbdGGB(ZR!&(@iaJ*PJ4(8JIQe!mYPEhGLS58,,"peBXIVa&4dBV[ -8LC(EUB#&+56d6Q-KM)9d&M*BB'QS0cY'lb35qM!9IGJaqV$ddBFGZmqh,"K*k-R -5D%qf$6hC0[4NKqr*FQ[2)bb`Y0+6%GTc)!XXc@@apL#,Z51,Y40CE!Zc@*l+BXa -Cl*!!@60BB-4P-F#p@,V[a9*f,qE%AQalHPePJE9$[9M1kM@A"ADN!ZDJ!TE(#jL -,#eKf+@$%&E!mrL2El"p*lT0rM0CjV&RRh@&DQRA0BpE01f#Lc,T1B8EJY5$,V#G -$+,R#V#rEEpE65XakPd#cIXaTeNZDQ29@0TJNXeiM`%6$"-0-0Z[eGKKFI!k'ca@ -B96!Uc"@BTM"6c(T&+8`$$#iUXQ%QQ[8@Z@Dp4c&-2F`kQ*d`Hf'J[!H8Qp0dhEa -Becf#VTF0dr@DqETH-92A@p6SZPLZkkC4ZLj"B!8@qfESqR1(G(eA'8b*VZmmS1Y -Ekh9pbd@BcVVq(Llf3QJ['&ECGAeT#jLp-"N`8h4p5C+ZKjA#E0$ekLY1[5(3UEp -3kG6rIYkTVm9NEB&6VpcVe+9XTri1Km%&Mdh@HA'bVQq%X5AVcJ+BUFPkFN)bL)E -"43S@,JLjTLAVbaBRkeh!e'9qXKlA0PNrPT'Xfk16pIYR*1[PaQ5pl"a-EV,q4!P --Rf5pH%kbrN`%c'@BbFPkG8@brU3+-bPC,rA$()!"SR4BXRjl*``3Yk(`0KKZ0iB -C$J2&rMUB(6#ip'I#I!N$3,9T-&8`J6"JU*fAV,Ie`,4)eMZZJ`("*3"D!U'5*XP -k+`S$`PT"F8dj6#N-%$AjbIU!P6!id!!30`"!kcq$-56V&GA*HSZLC,d(J$@!kFh -TbATG&!`Bkb$i"Kcb"JlcaYaNrB`CCLm-L(aTBV,q2"LHh`F6R+bIGm,!'HHcB2+ -5p4Ff`)6"G))C!J2(RiZ"JI*c9j2eG@"FZaS''k#!B"%!"6K'J,#T"JB%QN$XTpL -iPA%`@f!Jp"`1Xk-"CLNfYpbMmcS2FU&(6q%HhG8!N`k6kp'AaF$dJCRLdG-%Q-N -HIEdG"KIV"hVdf"+BM6"c2(UA+SmH9q(4MaA$C(VdSM+2ELhbk(B2$2ASj9NH[4K -+RaRLdDY2HI3R&h[dfc-mHPX`G`53!%Da(Vh9#)pH8qr4kb-mqZF!8K(RdEmqkG& -lK(Rd0d$BQ652rP+)4km#XQUd4pm"TEY!r+jf(RdR#0J*a0CUQ#JB!(UrNdII"S+ -fJ@(E-)rq`3'2[Kq%[4[Td3p0p1M[ABATkY&Aic)FLX+2H26PNcckCf$kE+P(McC -l-2SGe9jL&B[I[)'80+FTT##Lh'&KCA"-@61H9XT65*PVUeh0T88Em28[+*IlBp[ -b,R'LBcYhe3NbaHFFI(aVBk0T+0Z,4aj*@m3EjqUj[BLRP8'3!2Z,q*-#8C((C0' -29I(l+fQ$1iEFckG!,l8(cHH,R&%mq5,+lAT9"LGY14%A!0cZ!j@m&Q9"Lj8Elql -RF@9mC4&I9mlI,1+Y4+*j#Y-Fb`ldbm*+QQ+RT"b,$HF"T&9f0BX$l#3hNIY0XZB -j(JH4Epe&+QQH1iVjjPi@AYVTD*jQjbR0"1BY'a%GCVpRifZ,k8+H9X46YRZ[&T1 -V+IClLr&hjp3GM+RDHp@1%'$HE`pTaa2,5KR6ZRMIJkR%(T,,MjC9XKZrf`e+(1D -+!@APh"@(9k&8I,%p)jI[hPE-(iM$hp6JAEEcCiTi[CfA&2&D86l1pBd*3kP[XY5 -ZjK2X0,)+*K1V26MrdERl`2rSlJ-hZr[!mHiqF*1l$k5kZj*qkqlZk84dY2hHG$L -)A*efGkjAbEeFiQiRBbTfGhIXriRZ$S#ldm*i@JP2&NqcZPMTR&K4EM*+5-GA'TU -qJrqG6Z2Rdm5F&VcC6PkAaQYT0Lmq`qm[jl8lf"lJHA1#[j,'BMG%fC*ZBU6-&2h -Y8-3DBkCLl1UmdbLVfj+GZ$9*mjhX!DdIQk"))F!&N@Z24A*!l'1,4**i+lrH`Gh -TD)I+@Tb!VhX-I%cCUK2`BAI#Yd4fNEI,5rQH@2j*#AmhPMpC`Xr(mKG,H%-XKS6 -bRE(mZ4*H'F[&%VidPYHAm)kah,rAQdfk8k[9BCK#(+alf"6B)Q*A-DFEbFaUpe1 -fR%YQZ+`J5h-R-X0b*9YHmmfdlN`Yfa!XSh`cmh"lGK'21E169jGa+jVEBYjaqqQ -8ap*2S0daPj-fFlh9NE5&l'FrZcS+5I&QI-JS2V,X!'Qd8q,F-[`UH`"5JX@P,Z5 -HFk5jCd8i!TUlq&'RBc,qUTSh8aQYkF$&e0!-XXNTXGj8PNGdYl4M2*LMqMcVAb# -,4h+pdd4rY8,G-"NB!0AJeJ2ecUJ-p-I*TlLR1"l#i33b5ZFmIl'B0a6c!F@m,6l -R&22Y'(`R-$B8QHJMU(hik8@kff+Mff+rfk,+E9'GUNLba#NmZ9M`!3m'm0U5Jla -,YHMBceh9hSXT+(*Dj1d!!iM%GQVKRQU6VdpN6%9K2,NkANd)8*SF"LI&39%PAeE -YpDLKL9F6TLep8SHS#PfqHfaS!NVYQpHKZ(imL9FaYX#h5%!42#FCL8(mjfdX1a9 -)!@9&h"AVRV@hfi0cH@hT1PjdRS`8NYGAQmMPD%*G!RRPipLZPDQBG'$mCHLMD(H -HiK*1e`*#N!!U"E@C'ca,HZ@&@Rc35Lj2lD**2B$481413ePUJQlVMQpJH2Yq(S[ -QYKK$[Ed1)ek*C@GX%bBpj[e+R(Il#9TEH)(GM2maPiqca06`#KG[9FBrUZCYUhP -i#FII@b`VjNr52R`IN[aUrLC@$E`LeX3br9`#Mj0T1r)@ckDYb6XmQikb1SaP6(! -HTLk'R2kS@@aJUAT),"D`T#EJ4bASIRd$eiP&!SqVjm[SA"iA@aQIVDYB`X6MDpF -YABKDB'hF!EF%FKC(A55AeR2m+9rV'934P8"V*5m[jLJm5E,`BUp56%H6lb(FQkh -MFreSdG,pM&YYVeAe5YkPQ)`'FKA(ec"p5BfP"8'05-ep),*"`9mcXb[h(V$cpG8 -mMQEaMLj@Q@K+RV(2fS&(LGq#GNjDcl)6d4$-cZAM'`lalADH9Jr![+fAICjA%!8 -I'IF'Z[F%*+6JLA&P!NqZ!TfqUdMlK9bH9rF*ppX9LkZ#$#3LkQE(#i6ie+dq!3N -TdRe9SrZbTlSEJR@N+Z)[@mQDCPGUCGc,ZC0NmN"c#j)dd,1Q0JJB1CfD0)q-EpM -#6PI1Zl3ilR4ISE$VC4mp"dj!3LU%p)mP2+hD(I!'HY'EX'jZANLcF$'e%5G9M`d -R0K1"D#4RTMEU-lhYCMPYQBT,mV9eepaf1''"BTEh9LLf9i[ijL+q8H!VGr#MjAa -P(2qY,9pjKT[XI&dDIck@RbRL2Hbm[S`hDNE#Q9L#A9I*(cc)2el(0jHC#)c*b%` -fMYPJmNf6c,+XMMC&C(B0UH-UQEd+SICNGS9mkb5ccZ4$*bFHDSVaPaA-E9MCX+U -+AhA'bK+r5XHUZbrIQGZ6'FRV-mKA8$EY&!mXQR`fC3QK+a,XI1j0##6"rQq"@rq -r!Xi"F0D(+"aSR1mE"b0[#KGNkbT*YU"B`S8d8EDLk)%e#ZEU#YP+66F9e912'dB -$r[L406HASh'6mYGLM,2!'VZiihZXJ0a84N'f9i#5G2')C4VKGEmT``f+`eKQL,+ -p%JB&'1`9+f6lQ6Z4Q(km#NXHRNSjaAX8Ii`2&EUd1*lbL9ZU+lCEFZpdMZ09i5L -q%jpi)4Bj2(9NU"qeDa[N'F0&qIjcSZc"8,1kRD,mK&'J'*+e['bAI+KmPlbMJbJ -AMd+aALV*'b0&qIBUE(V`H`l,&Jc%K"-NKf8fQ9j)Nj!!M$$&N`%@6V,3MS9m%J+ -fXl#1K3J@qK(@J(N5-J'CKJ$!X6*4[SHLDFF`[$PpYB4"GD)F0dHdR&e)b5$&)rZ -S4Q)Qe6b)Z@ajBl8h$L3bDRB*VC5c"8R0hNBV(GP,LHVX$PLh)aI$*29Z9ic`[MX -%blXcS4d1Z))KBA%f8Efb'YJVVdVUP@$)A1P1PUfa(%b@Fl$-5C2)k#ijVS1SjT` -RQ(f5QK1&qa`,@6D4,$PI8M+`2l-Bf-akB$0h5'VQ+6,,P[$!JG#6LI,5FAC4[D4 -!kY*qA&k+PY4,4-HP$-bbb'`kCV2*E*JSGd(Pq2*"6%D)PXYGDBa6`&JZ5FAJK8V -j1P,&p3KF`Q5XNq3-l'+AHK3ZMT28`h#'H[JFX36-i3M*FIJb2@Cb("j#`df1IZG -T$j1PAe0#XY`23')hL)khmJL0hC'6Zjm"UPj8ZdH#ZAXJ-#J1P$BBQ)%%Nb$*IH1 -!JHIklJ#QEibNpL9ZkQZ8j-j9Z%+"X-jAX8"D68-Hk`aRGLX$0GdU-!brQd,f5qi -'YQl4"+X5HjRBaX61J+TZXh%,R5V+9X"Z"erl'XEAIU@NYPm&QIB4Q(8R0j1T(bm -FViGK#%jM3,5,mZZ$*G4RbAQkMT,Nebk+mM+FXN-,5He`!,`GSL6D`8pQQEMUMLY -3q(BTXXhE1`RAfjf`EJR)Edq$e0[$X4a0PP1al'5@e%iAb3aCS"-13$Y"PGSTQq$ -D5fV[0#al)ipBHSG4-TLlGcU`'33ahiZB)ePk*k&3!pj9kX$9CjpNk42"XR#Ib`6 -4')K[[3JM%$f,*%[2Fqc`29G*DXq6"(N%b*CHj%!J&`#CjC,8V#0N"[+cL"HcmL5 -e9e[-HP9*PPjA#%bj&l*A34aS,'L'Q`)FSS#iT1!U+E+)eU""4'P06,D,MMqDd"L -6SfN-#ArD@E#4d#55*1)QSiLVIMNJbXP*j&-B*S0*-8#*I$`BDC*r`T86fH5RD@J -i5(("Lj,PCcpaJH2R3-,lmd$*dIS-dG8k!d&Y68llkbH5qQX)QH9+PSNc'-fr&8Z -1k5`j6rp5FXa))p-CdEXXe88d%4[rj%V*mH4RG,G*,P8P4qNNQQL5Ef2mTKq&l1` -fd9+#5cLU"#2Sl+Y&Z4'+lMB#FIC$SU94%cUb4T!!@pNNYBBNf4T"XJcB6K1h#ij -k1i&6Rb3j2Qp+DdhbjbMQDjdXUKA)*R*&Jf6"-##b4a8NpeCN%pZCf!*b2h%R4HQ -qBbe%Llk4T$',EU-D"N)lfdX1C`'F+$ZRSL93i66d&A&)-XN*NX@cNBk(9-S#r28 -Dm(G*ak$eDE3McVKX-4)N"YPf3DR@,L4acKFGAHB6#Z-`m#)@6I@a$%c380M4E-D -LkR3rqU%dE%`jNZ4pD1A5qSQ1XR2%ff@RD%H%A,*iSS5f-XP2p*(N*c!k)bd#6m, -RN!#,CbSJT$i6J46ac'@'Q3b-A&dK@DVhdh"X5[88H*fN--H6Na!XTGKDMk#@NXc -%pL',A*B1)d6HhLQTYh'MhLE*r6E*j,FE5ilE`iR-E52CI$p5JZT(Bq,`4a1d2j1 -K[b6SA$$8STHTV5,8eJC+DLhD#8IY2++m,IkF80X@),i'cpHRdI%QZH-kT'Qm$A9 -F6"aG8L%j5UU)cK*XYXR4L(4$DL0d#CC'FfNL-NBV0#LY`J#N&C8FVBD6JpD85ik -DUi5VTJq"8T-[b3-md"XS1JDX*"S')%'V!bD"E3!mA!m2,eXY1ZSr)jIeD$RNHJ0 -`H-HSU-B%)i0EB#Mm-V4-29#$FH&EA!-5QfZJ+,mj(418#Uf,NY5k2($@'5Ae$@3 -PaaYc#H`cCXPaTTl3FQB[3k"Sm4R#Y&*d[$54S#jZ`l*1Y&49XYDm#Nep96!j4Y9 -8bI&m!CNqEj3FjbZ)p(NdQLqJ"h5m-*@Xck($GB(%Fc'5jGadeLDG@``UcU'IFS( -8[k-dD!U+RDrE4f2+"-[De63'IeTJE3,e)k-Uk%"6KSX@%8j#ZbBL5`LF1&fi,$P --CN+dUBD&cmM1Q5C"(PA+6ff5ie1@r9E'XE#&A+r%H2Q8,&&q,Ppbl2#3!)XGV'U -`BqP1@SFlM"D$fe+DL3jY$Xdcb6UU#CiGSTU#rN&f05$*B)K4-[3[Lj%F'$5)**X -f'Ape#N@5Nj%qeU1aLGe)d,&SIVY8dA&)PA%9G#4FGUaBXK59-C5eL+(Xb&Ah)a8 -PBh6kGJ86p'F2R-)%T*5$5LI-%a-aXD#1"-$1HY(ac""dUA)ea(5dK8mLaHUSX0j -'1Y3E)fr13EFVGm3Tp50SJr$&8dG+E68#'DfHA!d!1$1%kp'AQeH*MXpML,S+Y*p -Ql0(A)!4r0d6Z%BDAePc4m8B$AB+mJ"h5jS[b5bL#Ud&ee8PXr@LLlRQ-'F3(eKI -U5&*rB3U#j9`6ZJK(@iI4R'MHem+Imd5,NN3AE4FX3L90,"FXTYCd%D)85aHj"-Z -'HREjkD[XFZ88GVP[*lQ8Ri[#-&*4hJ&(aiL1(9P)GijGGD4LXDXG)@"RPH6B'NA -fDHX3bE'YQ1cN0T!!pm%"8JACAdC[Qp6pb'MUZkJ2b1p'5[)"$+&%UHah8(Q5hfQ -*8BZLie!,dSdFQQM#mbRcVSKHaJ,mXJF19,Ejc2k"!kFCMFBTKJ5$BDV&mS2"-*0 -Bc)H5HG*if%96MdC!b'J`*$(Ne+00JJd'3bB`aT!!T)8'3m*S3r`rBi,aLa0ZarL -Zb'9H!P(aE3+,#BD%b@`f0K8a*YpSI0M)#*J*&1KkF*6&NQ#a629*6"edr(U-dIJ -)'"+-6aZ06kZU1Y-iK`5#QZ#G-F&&JeAfEi(a3B["10-,BNSED"KQ5I)*2I,+CaB -SH-4)U&jSp+%IR'0*-Nke'#a-DAm,m95#F9E)&B0P&$4De)A-+Bm2$miH4YEaL&` -[MjI-A-ER"F2BTK)Y),ir36r0R*6`i#+bHJV6Ke-j4j,C'0pbP'mbT6m4bSX(jh2 -@JXIR'PipF,,)B-"Q[h#KD8JhCD5b5(bTqp0rh[YeqZ2XAmXVEE*$FYTN"`3TIqY -ciFJ&CIqi*Mr11IcdR((MP)-XK&r)Z"X5FUA0NGHRrM+eErZTIalT2IAhM(X""5% -KLMVjQmQ6PD0ZTN2rb3K$%C6,)3C,i+mh5-#IVBamZA(crlrpHhNEbFE'**+E%rl -jR5r(Ih'dh%L`4p0YaX*r*KL("hij*I"Sqm#[%,*20M&mEcKka')iqZFV,HBB4Kp -p"pRLk#m@`mPFGC,kV6VHJ-dY0"JQ'!bc$Ip9[mM1[@)aA+e99FkA,EhfNb)mr*Z -L2$,cNIj+dmEaXlH$ARmVD8UIS(6ma*F#!T5I#UCd8QCJmjiM1jJe8rP11DKXblb -Jr%`fjM#ah94PKAT@jGjrcbY8M-06&rj5ifIl+ER2j33'R%d2YY`,$!MChciR+%3 -a%EXc30N5i!fr"$30D"d8mK[3R`3d#ISc51QJL-Sl6F3i*9mC!CAh+G'1%#KX(jJ -CR(-N*%LT$&+fCLVd8NKIc[rkF2UpG!)B!!!G(d&%3e)$!$,1$e80C684!#*MlP1 -rYLr0Slb*ce+cQCK*(TP5RL9*+aIB('#ND3SqQYkN0K'M0`Gl0E3XNd!hJlNF,dF -Em[ND!MU4F@G`cUb,lZ`1-L4%CTH$,-GE'*ceUQFf-+L-KqYJF"AGb("B$KZC$2h -qrGjVddCQMVYhlqFI'kBR"8'3!!4"%!5!D(mAjL24+&jmbb`c3ENCf*ImkpJ1VIf -FD6X[-5Q*lc*RR$PASH*`QMmF5fNlI1dRG0qb!L3D1+B+PM("&*rcHdkBkD05rQ" -E15jq5!6Z)`*2hmiU#hY12&f*Mf,jih(jibiBa'6$MQ6b5AM)a"6JPc-@RTk+M&0 -D35HM#d6iTF*SS'*%ZbFerKbIrZf`iqrE('eNP1Ujik2L,EPTVQf+13jh1XK8'2e -qjfLJDL%0bhA'"KDdP*PlKlA6h+1GK-e(rRR[PZPRjeIb3l00Cf%@QHNMXeceC@M -iXB5[MUXZll#JYUeI%4VeLXGiZ&pY`rF3UrJa%E*FB49c$%!4Z&T(,c6c4'U-*)Z -FA%ADTQ5DI8blNZc$1'+`MkqpkMM'4cYGSXrKA5JiV#p[%UU0B@)4-i6KL#mr2Qc -%$'+)#`"B21rhYEQkNdmaJQi[6%'UJhr0+mB6iEMX0*)&r'Y`L-P0mF4STjF%G%- -iT*pTV10arfq+p1baSCE*i%J-@DIEUIlVF%V6h8K@"Cd**1d-hCIH8'D+Q%*c#dB -F!TEAir`pF'mq+NL(m#H)9$kN(d6PA1aJDK3fqJ5@8DR"Q#KAZ$1k,S"#l)DBeDi -NB4$F-QZdJp#V%U&Yh8M@VA[4kh5H+Alap[VbH('E`[@**DQhqjjIjp$R$,LdG') -(A@Z"2[&K(TeJJ@Y,4*aYqQHrSNPXJheHA9GGNc"m(m4fVp)(N!$#'N3#Df,*(f) -U3j5E[Pk[@lqH#MRGblCb%G845Mm'Yh*M1,Nq-+EU9j!!jNX',kh(p@U&F#dFHfE -9X!FIF19Xe3S33"-M0JB3`qY"'N`0Ef')0*)p2J-dY`1!C!SG$ZAIR98G,3-`KZU -fr)!bm%e*aKM*P'QM(F&K1i,Z,%("QT4fHbR(KUPXLmSPYZ'2Mm'-K83C%UfMC!a -k"8Ke1HDi[ffdXq`PrGf,UL0!PqVQU`*H84m2VeceBSNi2"i@8q2"3rr4GQ4K@-' -3!&4k52Hl&i99,c,@C!2@UmiSc01(lFh6e(![4$V*GB@50Paplpq8JG4S2RRl,@c -31qYDA'jf5*[6YRfB2NdrdhdSc14bE"p'1Q!hT@VHJLTT*Z5)#6E*6#dY8Fl!4J) -T(9Arf#81[eYVk)RU+ia4UY23r8[qiUH2iJSUSBJbN!!A(lkPfrb8RZB38Yb0E6( -ZG+m05#N[IEbiC33fC##P@Yb'`6*+jJDm3QT3p`hl3YIkVqRL"pej2iifR4T0YDb -r`T&#eEI8LK)iJi(e9*JQT)45pMSFhDBK*4J)BA#G$IN"+3@4GS`-l1c`'XaX`B' -#C*VJ#Xq05dQ'G)TK$UI%JdUQI%SQA#q0jXDe6(YVKEJ8D353!"`IX"%j45,rlpA -,V@XKaBb01TNZjS4q6#Ne)SRA"#8ak11$IDj*IH@SrbqF5#`9I0JdA1mcHaRLS8- -V+%`-p%)p%H)Gib+)9%CX%'H0D+@%b+jT5NTU*feh3e#YR'dN!H8bfm43Rf#V6Sp -JN!!l@S!KEYHd$k"abFH,3)RElX6J!QT%T0RIlS1BJS3H*k5TT52T&HhRJ#jQ+!3 -4DAHBRD&B0T!!qeeFKjY@B!&ZFCD3!!%6`a@1*#G2Q(i'8,4M1kIIlL0QQQ!AVYM -0-E83T1,98h$p2MF!dUGc3lXG@iEUjQZE!1SfV`!(Kf1ej&MJS-ef5e4m&-,%B8b -8[0cd8BJQ'T[U&MHLfpjKVPZM$hd8@JD(-iZqNB18RZTHKG6JjIb6U6pb"a6eC!i -j3"L6$IND(MKQ`dBUU,Zp-*qPRXaEU@q@$[6h281JHfp*#XQX*5AiH5FIc1h5-NY -hF&'ljbF"3Ti4(+BTT'fD'QSDe2BZDPX8m1r64##BaqNq&`#V3lYRb`jdXjXZG@U -EZK0,KjU#fMfEKjSZDaZqk2bL$9hf5r4hr+Al$j9ecQR0L9UQZ%-2[SX`$EbZF`F -Y8r`LFhRBaBi1q[8JJ*0mEmR3NbcaAE$%4iNNE(c6f8U)4%0e$lS8*FL8KaYQRb' -8Ma(Z2Mr#%+'@8SX3'3Zf6Z5I$#[jT-aS)dDp&cNc0mKEXElh[r)%K"JVQPQPlUY -S[qV+jiEDVfiCDMmQEfLcUDQZIcQQkQCklULlXZ62f+Y@"ZpK5ZdYPF)J'%*'a22 -MXdf2,I+C@DFhQA@ZrEV&ajRL0S#S,`$&"i(X5CHr-,'mYqle(CDk`ZAAXFMak1% -G@Pdr,H-mmd%B"5iQ$0@9P!ZC0ZmNK5T)j!S@0b$R#ID'GpSR"U-ES'Td"XJ0'$! -f2E#2qmCGC$3M4h#5prGKm"F0%CDU*K3Rhp$Z)`LcQ4HXU*[23L41RK%`B%Q1N!" -I9MUK[[eD$J`4!b`r")'ce-P%IhKbE*'CYKjL0d)4pL!PqKdBih[Zb"4V)5)'3[p -*3p)9(%8`ED3U,Bm8ZJ8A-U%*mL8lTLSG-m`6&SN0SSA*afIkF-%Y1*6JmdJ(-ff -%SE"Z*RdNN!")h#ZT-GT'FLmrc8h@@aNHSdP5#3",ih+cpI4JArULe8+PGM)DT8m -NebF`k*FT,H,HrQ1%%,64PQ$lc3J(81&SH3UGbqiMi8+SRC8BK2!,*-FaG(XBUG& -ld6b!SI,*J2Ga"@BFAG6-@JBERU-Q@S&R$LIP*LrYS06aeaXC1'TGY85F3,+mYre -UZ)LKD'q$Br(S5B!Q#G#3!%Pd!e2pDpGFQZP$`LDYp"HR8l"&k(665NCj8PrTh9p -9!T@r@&Ej#$V+e%8ATd0"QRQULUQK#lj6A(1p2L"'$V*,3JRKkRIDEaT3dqHcZCi -(#$!G@9Pbj-GrC*Zi'MpVR(cl(k##G5+"Dkk"iABe5'a[3%*5E*F)[G-Th08GfZe -#cP3A[G4cI(8(4-0&[k+ZjjHQ#p%28)Jk2LK&JidZ(%+3!-*GmZ'-V!+GJX,dD"P -+Iqm*H&20XHMA"GY4#Dd4N!#@V@KH+IQD[X4GG!Ne+cT6SIKUJd2FMD)3X'UN!-# -D8jA&Eqlj5JUF"$l1VbS6+8[rc8rfPR3,Zl4!FeaVqEQCZ[J,Ba"AilN4lN!$%dU -Ba)"SY,fYa%2X4qDp9[-2MlkkQ3e+TJG9T$"S'JGY-'J8AI$4c!82$AVpm8mH+6( -bFH95ULAFm3q2HXAq@q("r+im(,U[[hlBmYflp$0PJF2ep0G9AhcYLB$ZHrR4BD1 -XlI!eqZZk0UrqLEBpJ5SKiLD42aV,qrT[KIV#8(XD3NhJ+P,F-!&DARl8+EkIHCe -(*kZh%8eBU6&SM2EN%VLdDPTN@L49UZDRQFk[0(KNU(dqL2dHDEKppU)8R2HKB1p -prilfM"F)mjK6bi49FJ@Ef[G#(3P,ZD6+q"UTJcZ"a+k-(+,6b(6-!4&apIQ9!Lf -#-)[S+AR"5P3ZQLVD(cBeYAIj,!`PrFlNTVejhR2(qhSNCq"UL4jTf%&GFNk*j-3 -&#V66CNj*3hR#1*qE8L@bl[NJ0KDq#'0&UTU%iD0K`rMT[G[-5H3cm`qkd@M9lCM -beZ50CQE)'8FB4UR(M)j1[RJT,$`l!0Ef-U#Efdl-@d2L!"'JCMk+c4S&P8+16Zp -K@DNA99Qq08!KKJ)SZMKX(0JH!'KfQ0Zl3R$C%kPB06,8hZASi2c6+0$2Sb53!*V -G21R)H@3@p8,4dXeqRVZLJa(SY)6)r![)K#q5Ueb9A')&9pXIhRc-Ml62lI@TL[B -E$fA#)e"(@0K&3Sq)B"bJZ*Dj[4kA[,%XJfBX#*3&D2JS#%iPU505!j!!aU1Z(bl -&YU[A%lbN@lF&@c$Na-HG"PGEU'K8*#-3PKmVqQP6HePrA`9hP"9b!Jp-Af85#MQ -+&DDd31,j%[I8Z-F5YD(Be[heJdpDa$ZQ%"KESEUL$#cZ,&MF!&@1XCQpUR6arVi -`Gh5RKc`Y$INd1q66pSFp&YlcTlPX6,VXq*pQUf-NMPGLZh0@fchp+qF-MkjH`)D -AI(A$XG'9@mTRZ(lQ,lIT5j08e01EMR6rDSJqk(*JSJJmMbjQp*PpL@pIq1X(4Hk -CQ0&l4fCKlYdDVQAS`MI0G,8lfH(qR3CiJZMNZhPlbhj",feXd6*N8ST'Ia))Lc( -E6eiNC"eQVNZ"NF6DYLTaCdI&mrTiX*13!(8B5$ZXl@ShH&%DD38VT1dZj'SRQh! -madFYhKq'H8%H)$cad)rbH$ei6mjbEhhmIf*U$DC8Hq&h1859c,aMLCaTf##`QTa -M)RiFlkk+4XHiRVLpIPR'DCLFKNJ9#I$-iD!+Bc0N0U%"Qf$&*XKX43hBLUcBLQ3 -f[3'EEX@Qbfa+!cE&LNf4fA)0f(*@E$QCEDS"fj39fe6)P(0)@qiTU1#Vjk@VT@* -9DX(!#jUUQ5UZ9RGH!cN5!'(N),'JGREYhbemMZrMKI`N"E,95T0j-lV5`IXlaT* -#k9&CA('00CGU,9,$Re$F+qlMiC&FVe0[V0qAH+#1T[C23Yb#d"K"8i(RqrXLDG' -MQ$U-rTUJK9#Yr9E&,b$190ThU"65II,6ZeSJV*mYbQRmk0jpR`lE6PcEd*(-&I' -MQdE%Zeqif[BFR)H[EHL8R$(2h5rGhhB5cQ2U%qpYD*AFb[MG0mma9P12eT0P&V2 --m38a(bZ#fiTCYjfF2,&G3(Gl0--B!lTSElK)Tb,)I!UJ#9QPNhXZ!I&#"$Uj -A9i[V&6iA38BU[kf1Iqahh(XpE6`4H-9pC$*39#LLEFr1[`p'@&dPJBNT0Cl[5@k -CG%M'DC9H-!hFYSS2V(,-'FUJJC5C0lGP&F5*19Y@F6P9F!S+UpA9RHZ0'HM5Erc -Ucem3SkYpH%'&33@&B6D3!)Bbe!TF&1H`64a*XcYJ%-',X4FdC,rJQ-2,ENT,HAr -1R$MB('jIS!NX3+@+p[X+'5TT'F@F0k-*e@LRY)3UmfGAI'e0Ae&k3N@'&*`%+KM -,+YVR2jp61FcjZ5T(lVUpX[r[T*K,YA[dFC''$M!#idJqRmJYGhKQ[`%l&`+Rq64 -X@L9m5G"#LClE@P8bjF`EYDrZC488,9EG+AF---m'HfQcEQZGj'Pfkfi"l2A2P6i -#pX&1QRUB6Ee&4d+B16BYENp%FRUlXN[lRMY2Jm[G3%N-lf,$rqYR(Dj#L3F`EEX -Y--NT19@daFqeeQ![XD!JmY@RB$5lZCrc9N9pSp9TI*,CrdVHpbHp-*MBJZCbm8m -#4IJF0*FEdZGPFlNUIIDEb`ATma9cH9ckR$'A&dQI&mhPNr6jc0p`253YeeUaRB9 -UeZGp$fB80@c3-[fhJZRT'a(hqDc*q4Z$e+Le-Rflb94irBj08$$!%&%,31a-5J* -kJ6083i68AVkH9-f4UrQ"kX33M#96,&R)d&*5F6%+Q1EmAQ@FMVf@+YY6rVQi8[c -l15iGILil5Y"mfiq"0+)%KVNb3*M6N!!!-PF'$A1U%QMQbN"L6N%#dP`CA-`CPm! -e9`BFFaC*J*XVJj!!15H[hdNJ*+8")2(SaFfpZ[XIke2qKk#@`QVkbP#ZDDBZPP# -9!EP'P3(*c$-4FAJrNNmmrPZG0Fai`0AY0'F1ZC!!6"*qHr,mABFHZ&NIS%T+I+# -Q&H+"mraHjKKf2($Y8##9d2HMiA4)2`Uc2kR"q96J&6RPE[V#Y!h6iT+h&Alp-Fk -6Mk2JLrNJ5p*8VVYeK21cqX5b(kfVT`,SfmT9J,f,QQMG4Ml'9CM&[eD-Y!J-TTA -2FFAfGZY)DAlmhYBbQ-[4-F+B+cfmNYG@04kTAI8$EL!p,m4X`Fk`U0K'@pHf[PV -mddHaR-Ih!bjka6!p#K0FpZYhm!$5Ppr9Ge!`1*dDkDD*rRUP2QaJ3E!U!Dd+CX* -"'(-GXjp`rY5'&&V9K6a@'Q,Q3!4SbQiIc-qK2PFcdVX&kcTIVd@`k23$%`$3G)F -j["!0+qT!E3IUpF&P'5bVSJN[2*6"i83[AefC4ZIAqJ"'ShXlJ!AP`jVkE[fYR## -&aX-m*U1Y`-+$mkFS90bPcYQ9XdQT69F1UGG65*`M[*fZ0LRi,SAk[!BHPBVLd!Y -TFRf)#`4L9`DZGA3YT[Tf!I5r+$ERPR0*q5dLkcjH8fMeD6c%qk(G6U1-K1#N[j0 -BEa([B+NV0Ac"@FXq[,,MSM2*2Ll,(l-b`aACmEbcQAh-N3Gdb`ajq@0XKPj![K` --"Ir)%KjX`X113SG8!4D%qUH0(`#FQ)Y`)e-J(H#XS2(C0r%+d1XSUaaP&4qVq&K -PJP8Q!Y9G9$G39Rp'1FfRG%TqKZB)30%p9%RjrqS%Tj!!CaXN'B$-GYM92B@(,`S -pq@HJc)T'+&aGc(5iB-MB'16kDlG'Hm[mfA5)SqU`Fb$6kBS9#LG,fC!!56E%KL( -LDcAj5aKJ+CZ3!"U(''#V+Y0CFQ8PYR9UTFi,5l0,#'r8[&B$BBUKhpLKQ6kVTF5 -UFrSc+`Ca"(qSI[LC2fKmT3id6L-CUFYm"!)&N!!'dKTA'HTlAh'd%*)j5hF',UJ -kP$%9k'@C-"MI#+5V25HiRY)!k,L@H6[J5Z*R'LVATJ@d$&1XEqE`#)pZ5"8p+Af -N-$KeLNmpp+2X8!%rc8,5EQ#`iE#dFB$-88"hp6[rKr-90k,4A5a8B-80KG"IpHD -CQBF!X8'"f41T0"RabB6V[CqU)eq'j`&dm@iZ&D3d`YYUUK(HpL`3hSpA$9q9i)Q -2%J@1S'12ih$LN!$Y@IDAYfh'bjYAbA#Up`lrN8rpqJ4h4-lJi5R2E+1%b$#1F*Z -*Q*!!"1T&-I4)Pa[BjT05T%8,'1kHECcTNa'Ifd4T#C!!%"N*4jS%%BK`[EIKJSj -jLUTE&*!!r"e)MQ$42")--38"lq2$0KSXc[YGaYHb2rRj283DMcKGQ@dFECRTZh" -F,SlFmB+LXL8YpNXUjU`cHj!!2-mkh@RR5,@c0Zf-FH[PFAhP@ej"cDYiV+Th#!# -"f48%lDqLQjFGMkjK)$#b)+K0Jb"4R0k@[p6`5fc$(![FX*amUGV23&ED52P!LC@ -d,GrU3SUQ@q6YUX9f*Em#-2F#!5BT6TKQmqTR3a)b`r!k1k4d0cMNm2q,8(mD2Ef -I(%HkrTKFlGH"G-ZkZ#-2!%"P'JKh+&+%G6q!NGUcdFrpB6Hl[MMla8`I8qKj4Q! -c#Z1)P9U[hA8FQJL&@LUZHURFRI'#54-lEN(Fq[%BJ4,iDL&26B5(@8FFNm8D)R" -10YC6dPD!q0-LG5-l!a8,lBhPH)#!*Bj6Ta'fhiI8(JhH&Mi0*8)29k#D1Z8,S&2 -h8'8M(SAY)G&PUaDbQmb4mq-l)A`m`DB0qY5JUPSTV53j@k8K'c0d,3U[TkTLNJi -V#D28IC%!jMr"+lRU2i&BI'9f@IUKD2N"&S(#beNB#iEUJdJF6$h8K3-!i1[rb#e -Fa-[2$6`-'fHG&lB%fb0'$'R)HNS!aZdHQ$j(aRi5*(#TU`#K@9DGGG'V%"SmdJ8 -K+PKJU[iPJXqZ)T3@bCrS$4D)0Kp*MDj32F3PM8,*T'USAM(dVAb+(T8P!Yr4jL# -TCbGN6,jPVY"Gc5*-`a9&U+LZj+MC0BBI4pL3!*@eN!!GISU'Kc2kB0k5(hd3kJe -(&,PPr5MAJ"Mqp4-m&"Ea'E+r(UjbP5ib&+UqC*jGFJLG%0$RQedZM!Z9Z&jKPjY -"*H4bif*"r&`*Mp(Mf2SS+b3aEV&(0+mTh"hCPAC,L)%dkbi'9YC&Vlp-M0N$*KX -FN!"(pbQM%E9k!!k-UclBaGhjV9cEH)Sf&bpX,J3IK#Y5YmNZ(@-AQ0BR#23E)9D -#3D1()+,Rm#Lf%'B1+*YcE0+LKi!3(L#%G#fBFY+*Mbm,q+$fE6`Y`l9[4qNaaGd -JAm*A4[Ec3@l'UjpEm*VK'PjKlSpmbNMX@H$!r[4!dfjZ`Bq'Rq`3+Ad#C3h%L`L -%T,10NPJ#-F%!ZR&A(#q$8SUXS-6kql$&()&4FB3*[09YRLfQiZ,NMEZjLX!`I!j -$m(Zj63p)"8Q2F,9i0ir6*#S'TS9P9Y10$DDP`5J1N!"[blN5iC-)RS'S3Q*5fFd -56r'KAlIi@PfHKBFHE!NI"d14+dN-Q"6R(F+8H+!QI*C%*%Df$FDJ)PE%ZPJM#)A -4piAAm'h$[iAJr$!Ce1Mi)`*8McJdL!)&m5cDp5c-&$ppp-!Y2GdBJ3,V#"biUAZ -U(I@"!brSlQV(cB$Z2P#I-Kri(JQ,DIF,J3-[l86Sk1XU[EbQGAL%kXK+Ck)Q3'' -r+"59rI8XP,ie-J)&-8*"H&#L#(c9+#b'`2kIp'!E'PEc&B(84[#@drcI-QKN[Sk -J')%&HJRkLbZZ)fLYM[l4!4aa[@@&T9V-P"VQT&iSD+cU'![R*E-2`-'@Z%"$#B' -VZM&4K*mi*Z25*+8Z)fjbT!Hm3mb6k-Sk&M5*iLILKmY)Fi%a[d*,9+hmE13A3%) -*&hf6L`MTB%4#*d+rc8!9KiQI$l[,kXZZPBK'KJqmm3K!$*56N!#L'[dbGZL(LX" -3-m,&GL#dbh0%3+!013`i%"TAFJ12*lq*)0%hJA)'-@*"pB[GK,BZSd)NGQ*K5k% -)8B'`3hD$PM,)31Ka4QP#QNkE6FLikR88)Y"[pK-d"Zj#iX,Slr01qh$8&9eH5@@ -Cd1!LiEYVYM&mVqkV0U"%6l#J+VRV"B&LU,2DG"HAfS2UDUX`6lKhY(r&06rGXI[ -q"cV6$ADGDJ(l(+42eURqRMTljPaLhkQQ5E*,V+ZZNVV0*VdVrRp!8M9bY9@U-V0 -&dlE&%[$`%VQa3pZfQ!$)P-)8&AKP2aiZfmpe8b0#ke3+2f#Ummf84BKReA()qdV -`&U@mC8H[ef(PZ0c!8HK9G%Zc)0LU5EKUlDUakS@`V+ciQE&bK3[rq!9"Nc"N**, -#8c54R0EDQ$(HN!#$%Yi8NXQRb%R6#-Lk)NaR5Dr`)T8B,Y*Yj@j*j*5'c`XiLqF -&mJQTB5DchNm(ee[59l%LFpDkkNYkXm[RrF&Ee,8&DaS!*@P(RN!%KZDNhE&lUiP -B!FqHkE)dd)l8jHTK9Z5X34VdTL5L5CX-,[b[J,$JXe@$@Vk3!$AEI@RLkI!hjf8 -+AFrl%,MKTSGdEFejVEp[am6l2"f5@4h`KL&$lb-ecVIDSllXh0D!D@F$aed0()q -N(9,BMKfT6"Dji@"KANcKXQ"GQ5P"bIPN1$XTK`DR5965Y(f3!!JHZV9PfXV2(0L -HGMYYH%4D2AB'+4%@X#fdf3q!Q3cK&FYf8Z9M#Q*eQ"4ZXfGKlS49`,R#VF*LUDP -2`Lj-Kh(mmk48hS0rRk6RVk2BLFTea41cV@YjeD'-)cKC*9'G6*N*BjT%-F%P3[M -9%8CR@mPC%0B9VrVceJIhVZrP+3L,1T`'R++[jF+kR-Fk"&CJ!ER8V2"45,)hjBG -jY6QA4+M,'Pm3DBmN1Tp&NB1kRd,k%3C8E&Gja+kbeklbN9ePR9eP6pirF`YAcZ9 -hm0611YjFJJGbH$11dm`Hm6i)-mCD[U@CJPD6l'K&30*D0,MS`5TkD,hjJqk0q-4 -a*hj"BH#'I3"2qTmTR16059q-*ea9-)$Em&'#UJ-KV6C[X`QI%5b2(hefl6mGZXh --ED%q-&"K)(D(G`jepPje#-Yb!Dm8Mm2-S"2kk2jPahNFSU3UKG6m8c%%cY6*"&e -@%1h$D53KJ!92Jl&B3,JM#XcArm0d#SHPclhXG9EhND!KG5dSUKr2rTRPi,20hc$ -ee(6@p,lp[FV22fMYV(Q*`MlIq,HR6frU@GZleE`0GI2XXrrAh'mqDflYk,R[fAG -k&[hchEmqm1f((rMGiX@,rrBh26Zrr+Zc(4qqf2)[RhrAh2jdipqD,cbparbpTa[ -0IEGU&Rhr`mmr0rqp1A$m[a`qDjljQpqF0Ir[ApkkpQ8M!!!m$N&%3e)$!'NN%&8 -,E+F!d9bArl[2Hl0XGZ)Dec5%0,NXbhD*b@B*NNNPD0c%Z+iCNkkT$H,)eY&G+dR -F)jkFe+r(lLC4SeLDLV@@i6$L-$3+#8PJ,*-kcQ)c)')j%Dc2T`ke)##LiJ3VU@M -frIc[[IZm86V-1GrR"aZNTbJRJL"i%YNPAYlTGZ2&rp3X')"qH4H8UhKT--CKNLa -lX0pRE3+U9*S@L)[4[`[M8a@6!0Qf5IXR[C5bL+G+Aa',a&15X8FfC#9YP4$'e*( -"jZ)@prcRBclVGp-ZI1JA$Hd"TfL"L#Cj-"K5m11(---fk8fB`#4bQ%[#J!ic3mk -6T2cjU[)e64(4Fl!)LZF&fd$)V+RMkQR[J(,kdi*J3#4Mhh0hFcr%)iTi6Tc&&G% -8LXCQ!95S4Uk'pI9rp%VA!a1SXj5YL6H[#%4pTibqRk`+1@h4N!!'hCV%3paI2S[ -lprYpTr6eDlf@)ReN4V"U$4)(EHJfC(SUcAU8+mI,[YFPYVX3KHLN(*e%p$S@RA4 -KH'MiA30)'P&9Q$"(Z"mE&YEFlCll9*T'1HdPaRk[*081dkV(p@[AVqAN%VfE&'0 -F*+1RY*KAE!r&D6NBER)F5E6J4#4e,RPS0""Fm1hSjUTc1PHr%j-N!lA$M#D1F%0 -0IY45P4qeMC,JLUE"DF#EBqf)H1Ce'*6cfa$CM5aeab&V[ND-JcJ'K!1fHQ2F9CD -[-Bid4BMKmY&eZJBFV"''D$qDKh%PEKe4!#U@hd5RFGCT[@kRNN'6YcD-&IYj22F -Ia2EA4r0hX-J"V8LRV6J%`!4MA"3'"4fLE2!Fa,4SHPC[&ZH[5Xh-U)XQ@j2I"N4 -QV`d$#58ED[)KP&Nq@*T'!d1N*R4$La#lrpr*3QID'9K)!lAr$Q*BD4UfEh&K)'6 -Z&6)%,)r-k+NU-(U1FRlHfmYeTd5QB'5f*!D)3)p-abBbaVEGX"JqmL[(Ri"4fiC -r$@rK2QJY3paPUrYl@q")%cFDd$`9U%-cK@Cr3%5c!mhr#,5L1B$QmB!*c6LDD3& -r%m#PlX$X4+-"b)#jBc%BC3V906P69INQhbQBirS!k*cL32NEqrdTflQ0RKP5C'! -a%@6UEaM3L#r9d61XSriQ*eKZNVXj)N,8!*3X(ZJde%&e3e"KrG6UKDLMRX5qjC@ -m2K"0fB`QR@A@Ll8KCFP,06-M(5AkrZBj)"BmLYF!Mhm!B`$-6EEd`[4#)%+YKM' -q4GckVBRZqBDY!19e[$A'"mHiHqUS',8%8lDehJ2hBTXdb+6VGART1EV!8,pBGf% -b1f"aNff@QJbe0Y5TbBC$kY[(bql[5I(dY&$dZ6ieLF4kPPLr9')p%JGBiX"5L30 -LR83Q'QjLa"*S5G@Tjd21"Sq`15CYlPA2fiF)84mc6[%NJ%Xf'[8)ZN(q6J8Uqh) -E4k!j%)JM+-qfHN0b`kL)Bfjherd18U3JRmcIQ*le"-qKaV8B(m9a6R*XLT)B''B -jNc%ZRVEXFQN1jYRbJ)"k`Np2#!B@arbELXAS`@*NVhVaG1NZ9ird'DM3HiD$SKr -E@4*GP6i$&6&",**0j#-`ecVLHCBCi(EVZHN3EqIqp$5BfrpSj*lc"!iT-hj`"EE -a6RTaL%!d!2iI32J[RXST$0XZlC+L,-%Tj[JKhXCpS6LI"4X,9jA@&HM8`m93#fZ -m&4V3Gh9j*!%)bhVUM6!fMqTXIJZ6T-EA!HS'&+BUHN)L9U486,`PlZ&Y!5H,1X4 -9&UP3*&Y8T)jF1"Jk(!"G86`&"[Z2Clc@38F"&1%3$p2bERGjJY!EDC'JpV8X-VJ -eEh4Fb9VkbLLZ'!ja(b8YBe0jHUq8*#**Xq,U+%5EV46"Jbc#L!K&2jUBT5Va&4L -ZSSr6"aLR5T[eSL0#fUaKQiQK+MkMp2RF3la46H)eU0EMG8XG`+YIEF8VA@f"3iD -L%PKq&4%Ae20iPDV(m6+UPJmH!Mjd(DpHG3b[J(S"VrhU+&ifG4#EZY8K[&+U'Dm -kY4'G4935ZBqb`cekY4R'kPQULhdqC"eeM6Sq-f'Z&MkU(%hc(kb*SkU9I643dmM -jA$B`@XM&&ZT@'k8"b-X0!UP)@8HYhJp'f3"MkLLLkZ3S&k+UeGiG0*9Z-0m!qD0 -lakKk!&hPq)dK&aUAr2YTB[i6QK9qlPkfBp5Ib6T[#l8`YXGa[FTIC94fA1&qIa8 -q6rJIdZX*kApZe*mPX5aNFc!YS*kR)j%k8kr,RAA)ad,G2D3q)(@R2S$22kP25Ge -ecI,[Ifj8[34!UI&F49GCRLDm`Ti4%L!+`0ApUSc-$ecK%('rkkTdVc,A80!ZCFN -R5J!D@PbD6j!!9Gf2AecN[Q05mb!"*FAJ-F,AaVBRi*63J0pG0K-+S1KR)i%3k2R -Z'A!25Di$U!Fb2S&GARQ,"hME,#$M'd(ZQk4ZD`ki&j&*91(ZLNp)q$f2N!"h$'9 -E$%Ll'!A+Ae&HG#`THRU+J@j9A&&CCrjEY-`Lp`Y`NPJ81h9k-3q,TbjZiH&BI2) -Vk+)F5l2PX9c&e%ThZHdF&MGMq`ZQ0ri1Ib(P*N"-@iIY%)q%iVI'ZZ"%deE2##B -+40H*(`eq62LKj2Z0A&Q)S,Xej!,SE%8f09!fhG&,R`!UPHij$G`+iJ$LIiJV9lZ -k%JeFEm"K*2&6$c%$!p-l,L-6Kcpj#)VrjbkmV23MGqBXSFpr4fFa*)X!%6"ekS# -)-"[`lc$J8DN$Q&rQC#R-XH"GjiXm#N+*!+3qa11UJTF#`)SApi2XNL`cekXYH!f -`V0l+XRS,XRU@H`)MT8i!hMTG"!F"cm63@!h)bjfVGjHrb-1"T!!kMFfiQ-Z!3BS -"JcT'f'EeH[Uq5r[dpHZ#8i2''dJ)Xq385dB`Z)-b@bPH0HT61pJ&["V8"ljr9#e -eraULE(EBq[UZ3SMmEAhhU8BFRGRpkbPQ#[M9dU[eABR8k&B5"daCpmV89f`Jld$ -+TJ6#3%L!4TBA9686S3R%&1#4J4K)#H3ba`$NKCam+LE"S,1U0#e86e&LA1b(X@I -9&$0pTUaE*cSk$U2M6SL"JcI'G4UG*R5+V1Y"eVfU9m1Q#8#[Gea54DB`Lc[HMU[ -i$,22-(dD0@*rcVi2dV&&DS4,LjmU%U-p1(aNDTrYU"S1J930GDVB08[e)6,'2X- -J"N6H(NaGK($YRA@*VAG06E#N6Q5GM($d6+9l!T+Q&352%C(--I*S"j6BD5#4M-a -40$0k+Yh68U0JfkXd[DehLE8EMUUGE*SLTYPK+mSD0dR20Q'5G1KH(,UFJ5Xd!kH -pb$kY"mN*kaRf+U'AhfENrPFaBD!qAJ3V*SB%"H+iK#'"X14JM)l,9!5f00jS'EG -S3&J8c$*Kd)YqLmX!#(2F&6+,66LZrS1l4-m8mm&pUAlE#L'6HqS`RBQ"&KE83A` -EdNJ"aY9'jNT6B96d2QS3i*M"XJj-1(1-bXfY'0bL35!Db,KqC%mr6"9c+11ZP$+ -D(qch&!3TN!!@XU"r@T1UcjC3"5!+cA,'3@B0bBiL3)Z!UZrS8kZKQ"Fb8MD6%`r -p-b*hXXJ,3L3E2&F[1BE2eA4N(*rIL&H-"6r9rK18CIa(+F[i(k)!bjq*epIqUYB -kre&Fk@4G0e,ArUZB2TJ%e6[qF8I#&p&4-!,[S)234iP"pZ03ep&a'*-XB3iPJ[R -Sh,0A(k@ZHHA(GMfEG5dkZKE(GAeBlPTFUQX4AHFXeE(#1KjMhGBlZUdIefe-lVC -q5Gdb)0pX3dFK3V0Ef6'EMQFXZbiEcNSf`(Q+(3485J6mB3!%[eMRZGT95)%i82l -MS3kacTmP"-,'HYdYkL8'3-Kp&83HZ%,C4%*&!dk!VQk'R#,3SBr6AL)5!0J[QMQ -#VP883&Z2UJS3a9AA!-JDDY(miRM'LY9@EiS6-5jUY(H)!EF'1J!@[i$j*8VQPe$ -p$Pa3ZbPBe`#eTZc&hFF8%TCb0dc+Um+fXbc6l1L$DScPS&bEhDZ1CbcB"NFh+0H -"H%-E2YHATNR"YaaNClPRb"Qdea$4-4EH35B+8R@e83JB*PM`$JCQKDi6-L$D,Ql -aA`A!A83!h&m9UTG"am"h-@aM+`%823G#G43(4biQ&I3K,5m`'i#JJJ`bdP&MQE- -iM%ZK8Q%"e5JXS$l`F3ZSTIB&e&*K!I85!+ePr!*D,1Ke--"M0f1iVB4J39c0A$R -)53PQ-QH6flBh90F3Z4CY8)jR,2`mC49VF9K3--96T-Vfh8k+E(JG+E+0%+R$X-N -p3je3p8jr)ECKd$6ij$F*S&i!N!#C"pGPT3R)M(mK$1YA,dTLQTYk23ClQ!e[VaJ -"iY#-L%)NAfI-iIi*HR9D%%FaJmJ+2a-!V#J3l@(N)iB'G$i0JTXB!&C-*q%YV@e -Ikf`$@,-93A(3GjdN)XELGp!('A$aXaJ4li[GjERmr-iS&RmIKe4JT4mS663&5@f -UI9aA,8)$`Z$Dfm'XjSC)3e++q0H#3Fi8)kH-(TXDNQ6SATihb#qP,38LZ,V+"B8 -G!'r#,qrkeATdmK5bZ3r''60e5eIREKRNb1"2X3a%jTS1+$8Ej5#Fmmd)J%8deRd -hl9S8(H3F,kYih0!Z"FLBf$jNQAeNL%eCb4`ff*k6&R!K-qdl0NCAB!"639)q1K) -b,&D8$lB(`R*RqaT@)'V0B,Z`&Ch4!Z8`$[F&pPp!)"mkLkADG"H+IDH&BKqcN!$ -cBaI#e%-h$h-F5cTqq[%$!JfCa90N3$D[J"'d&PZR``$D$l0NUpK2#68jlR3NQH3 -N+f1UQ4VZG2cd0l4*$'j)YT2*JT(qSM1-m'-)V%p0UL-6*cUVB`ah-LH$9r!KKTV -a)BVl%06AXUe[bP[I"%Y%C+81!+3BC5)!l+58V3J8,RLI6#'8(39`**RJb*5%`6M -*6%Sr$A9m[f!3JFpP$J$V+#Nrmef-X-5!LC)SDX(Lp$4GSaUC-4KiJpQ06#M)#Jk -9!GN6JK1eX8Q29h@6J6Uipf%E*c-T#b,L%U+k1KJ$8L"'lBBJ$3pC+%+&)K8Be3N -HY)-%Yc!"CZK5VR%B-0Y`Y(!TV@feHPF6)M*JM%[*1X[%JA`-k++,TBREJkX6-V* -'S18#ISlMafLm+QHIBRPJ0r5qe8%fP@Bf&3X,!2XCb$j++2IUS2(#Z%[QdL*MhEM -)&Vf)VFjad9&prHUJk0%e!T-*UR&-(442qelL'S0km#)ch$9,cF#F0eeFSff``N' -BM&(,,NZKFf9)dk`*Q644"(pq&[aYd@LX`3'r0A&Qe+!+aLKFMGJ[!d"VT!i1RJ` -jQp'*NcVa1i,36Db6P8)RGB**D`SjqMDj[j[@q@(bE(-l[0AKM!j30S99M)#V%`X -ZYU(j++)Rk106M,Gi+(iYm[A[NdEM%+Sa*)@M$X'N"k3$!531G%VZkqh4PEp2RN9 -@eBP'0NVQYJbf5iP%jS*6X(ZkS03c`#kTpF0d(FDq,2F`JDX,*+4!Y*&((R8NHC' -dq3+%"T&9fS%l6m,C"!YfcH)80-iRG6h+'BSmAr3`"Eh5lB@+ERClHiSSm-3`+ij -R2%N"lUUBP4!*N!#,54)2A'M(XLH!-Uab,j+#dJZNITdhc6ji1ZFY"%b[T[T[UUB -AVrErqAra**,'(+TV2CN#Rf2++K$G+)NPe$VmQ2(6#$)FN!#&9"TMLli994ELl'8 -bQR"*)h`b"'p!9Z+M"#SL$'QR+L6*p06GF%#I2GC1P3cS%#991eXFj0+45LClH$1 -lS4KbpA(TQRKhrPd"rdfi%XkF61lh"hGH$P'&%0EGP`B5a$`,!-Aj*!&maYU2A4B -2IR!#'E*$22KF1UTMR-#8Q[A*$k'F)HS%6r*1[HE$B1BYU+`GXU"!Z9(Y%"6im&q -2reDSj28`MITjKj%D%638+F,eDi!c!-M(mQ!ZlEL8CQaf(B9"jbLR4LYqR2MTJ+# -M%blfIr[ab@L%)4cMSJd"XqpiaRfE'mEqip61RdQ6T#NLm+R'&'2#"-9f,"P'95) -JeYa(!)H(TjKT'9j(pNlA8C8fMlQZrZp[DV(+Kfj%6P@l9(YRr5!jr$PKKSY4*lL -H`Sq2-IY2PrZdZU#3!aGGL,TGi+U2VY+91brr,&2V5LX&(PUE8l6C&JP&FD5[AP0 -Q6JCkpAQURaQDpS0`00DU#4H)H*l`@VhIK"'NPGr8A)N5)4PMKSMPA20A-)"%j5a -YU$)j2Rj`6%D5hZFf$`cdU-*#`Jpm`)+0ELe3,ChSf'`E68p$GVJ`G)MIJ-Tj)h@ -)RdAL$5brRjEfVk*2rGZ5Z3M)qb)Fc[ik$k++B#lD6bjLP'8&Fj&rhJ8+d-*!J6B -bKI8'1@8!T-8[-'99AH2)D"DSL`GC9XYK@Hd5*p0[+E,3IXT#lj9-(XX3$SU1@mk -XMC4KSEiH[+Va*Q"+[)(U1+D,#bEd@0-TLp%2MQ%LUS!d8a*BBY"1#*RmGI`Hk,d -`)"NlaIldIIEX)aP-N!#PqNXTZP0I[f%@0l(P4#M,Bl*"a5Fh8K"'Q8U$8-V-,%M -d!Fdhil14IDCB!1QM!2)fS4XbP4[Nkj,4*GBr*K&R6M$&YCD,Vd9hq'PNjYU$)6* -PGe#fJ*!!6YRaYX&RkC-b4Sa69Bb#B09'%P14+VINMM)3[9qj3)DEe(2RC&$@3D# --#DdT)#1A5REFUSR39ed9ER0cDCS%l'@%EeK'q'"@JTJCSR[$(U$blpS4T[RR"B5 -TD6Y$*()!A+hikIdQ13*F3(I)U0DXqHFT8!&k@Ff'!H5+)935BQA#KZZkL&A&4JQ -adKC2@KmcD5J32V"J`MXa565PZD@4"8aN#)hi#09j,Hc26rJ6V2V+9bhFqURShab -8a$QI"@pa@3694GF0*rYr(cI)JH)`!N8$1Uk(d+RPKkZZF&YaJ%6dA(hB%3#q6p1 -ieBiUJL6@Iaq*,i-j!k(iKf$d2h*9EikQSZ,BX6Y&%9@Y9MeI&LjN)[HpHSfA'(e -&('ZUdNUmS&GCdU!iG[A29ET*2U(#)J,096dp#S)8$TKP1SP+S2bBNP'8k8p&'Mb -51`F&QlIDa@31K)'fFb(r`d9L%X0AC`3cYiY*-X&f`1%MB%Ze#9I)r518&-6aikm -%4'aYXhG1i$XN"mqh%$ccU6BP9-m8V'%35fIZEjM6adYfSld1DM#raJ*MLJ&'XSS -2LrC(S3ME65dY$E80%Y+b#)&Sbf5!+R3bMm!Nc2&4(-*%VD9%HDNhIlM+U-(P+)N -kSFTYCP8cS5![H6Z-cP!K3diYmRjI)Qmb4jK+G-L!Z5j"*5IR0)dC#raUr5r[SQ! -GKllQN8*bYb3Rjj[UmBa(h`(a)9LRj+aQ+,4l!+5liIk4XAe[q%#iX$30`F)JSFk -i[&i`h)cmD#)FDSdYiedGQK%Jd"CRd!!(9+"'%mAi)q3mY&#-2dQ0BA)N!Q)d$+H -M2QcBK!")8P-J6QQ(BVVp6!YPRD3Y%P"X83$bBV'@e"1UL[#AZ5PVD4T&#-F1!Rj -90,%0U-$`Pc8afQ$5fR!6AE@Lqj+'@P4VJ&2%JphN,Jd5Q-BU@-jRe9d9FRQ4"l+ -119k6krTfk5+F)$k%`VFCS'Bc((-`,,jS"%iXlJ5FR8DrEh&[Z%QUj&bj!kU#-)q -CV6B!5)RN+2)K@-k%eNGZUL1-fFIUi&!k9qc@'%BjM+F$8JC(94BFKQ@hTCFf08B -Cb0b'KHFb%$FANi3$#*L@1F*pTe!pF4lVE-Jf%2!CB2)R)(XQ++ULc3*$DmkZ+@E -RI1l&6p$5Pp-,T*qkPMF@",-QiVK,$Afa1)N#YNfP!aF2q0*CeKS96i9Y)KNh"aN -3*Y@K&5*3)K'Iip)0V8Y*X9Zq"0-)90Ji'4@h&G1Ki3-"qVB4Z*4Nr,@LUl+LFM* -)&XBMc@&1K-U#k'aN)P3*h-kTQLd3r'`DGPE(#'IJL[X[%iPZh34`1L!6k3e56c@ -Dd`KDC$*0kRrN,5)edYJjRP!TQMDa5d&$EbV1()!p6aE@F8DLjpaEB#6)$M8cjbB -F,+SS3ZhF1KGAXiP!L3`0[F5%V@HA3*CV$,dL8lE#TkDBQh"B0)&M1I5UjJH$G!" -eDN%`Nk(d$'Rb"P)X!&,C*aR5E56iYq`5PCk6"b(fGl8Fl,AdX82XXj0(eJYb"N! -'@EHN$'#$!&21)1Xq*`%Q4HKXU'[&e%lr2$4Q),@,)A"YP5%c)hh603*2-(JmL-T -GP'd#V6J-0f2EG(I`NbYYU%)&emR9a#`B+SS#(H-[fNEC4Fk,M4E'dRk@lHB5maT -UGE,GCM+IX'bh5HS%fDkmVMd%F8bJQa'&X($#XI"CZ,r1Bb4a!jG,MQHX[9dL#5M -6%NRDb1a06TJJbJZ-N!#6M*!!HeK99VSDSq1RJe`lGGaP%cY!'jQ+MIi4)RaQ'&l -l16&C)ZkeZAELA[Xf%IHf1N08&lf!kb"cl,R*%5$28Yq@Jq31QVEVei3Xr(A1%$2 -Z3H!F4C)rG94p'q3%NBd*aMkHXjmPm)f)V+-,I!Ye"'@c"Hic`HHXkY[5F3ke5ee -`ldheLJTh((+[b8f4%5-V9FH0aK1#1F9K%[+-4e`f0Jj*"U&Z3RQ`i5MVTP!DBX" -!&f#%bB'Kk(%B-Xc,MC+)&'Jm912XD9f9bepB(E6e"T3CXf$fI"P0%8YGNSI6!p6 -kNLd#P,LC6@8ZXQip!VbNL)8Q[3Qdq@eLRdR(qDpc5(+,dP9F-9`AZZeY51DqcK! -dqC-3D$)Bf"9BU+1&G[@9d)J@K`*l1ZhL#B#&S+!N$E@$a8FSLl,,Sk(BmbdaUlh -3KBqje$rTG8c6#6*!F$lc$!8ApjI6X6"!l9#Zl#k0lYN#8HK1kpChQTCRU@Q43AX -5UL)mqmP4lR,2!VJXVcR+Hph$3%aQkjqHBY5HGM1EYPbSJ0Bd-1N1F[BN8bl3%8G -L3mf%kTN[-[*f)N%k`%NGG03`+-`XNd`&F&49D)T'QZL[Y!HP-k$N&11e#$("T1A -@bFb84!KVE+2)F#3Zl%l9$,m6UaQHFXJbr-iK#*''TdM)$X"*"QqdM9i#m4cU3f, -[m"388e)er-la$%fThJr&2iQ%5L38N!$lKd-mXCJkN!!h'U5+'k3mV*`-0'3Kh&Y -*S$IId98p!4rk`CBQE*Q,UL!!M&5j!eQJJ`e5Y!%`B"K9`mm1cm"VeR$')A3fr#a -HLiGRkHh1N!"8NBp%k[hTZjc1[hTh[a-J[TPFY3Z#6)bJj,qlFl&HMGeY0pi58qa -$ARBBkJPBT0NSeJ`rQhm'VeRjXlKNcNE#XV2-F-[BSb&MF)I$F,Z4G8D)*"A63-V -0!$1JUP+8[ejZ[)r'4ZR$3fDlM46S`#80eDAeN5RQDh#UNcZKLU#LI3(CGG!T*pm -NjhT*'@)4PI)#!Cd&$SqJ8Zmj,)+Z@S`Y'UV'rC@"#mJ2'4NQ%[V6"m*LMU0`SY6 -XA+FcL*JQHLP0ej@4R1a!'VY*4-2*B3fU)T`$9&&p[T18K0"aNF#kM@eSCDi6D)L -f,QrB5J"HZMM&E"f*`M@fa%T'GK#M"Jk+53,Vhcq5XK,`1h3U(pFQYHXkEC*M)MN -T`Q@f&9[R#3N3)VE#`%Q(*#@C,T(6EU[f-3--Rk!PIBA84'!`F,c-A5*DhVS51[F -Q,128[1FA,qk#@S$Qj)cYfDJ'JDDQ-DH*1c%SM9feP)LD98Kb$)qjZhG59)-'#k8 -Ek(#mT@R(NQ`lST!![4dAh&j#`iKJS6#BaX!8rE986Qc&irXQ"UNLaf-r"HS"aaS -ajbmpNN%(B#K22'$CBiKDHX-j+hTiX`3mFCLMJE-hq3JrX-MYpH9!XBfQ5,&Y('S -KTcBF8Z23kjHERjbC&f64VrfK-*JJ3`fU,$3f0aF(8hQPVeM1PIEUUDJ8cFlTC,J -9Ff"`)D@rD`4!5$BTk9DJp3U"K@LT55G'eX"F!X(i0G%5dp!d(--EbM64ap8K3T@ -05IBa3Kr))&A$dbKMC5qN#Cc'"!MC5eNFNrM+-BQ[G#EaPGBN[U**a2*+pcNQ85p -2`L*2`N6S3(SDkcL5iZ*ATVL8#G#&mSeJFbQU-(`e&YpFD)q1U8Ki5NT`M9T(TD4 -["+hAT8KlN4H)I!",Gl1PScYIeA@QEkJPKe3J1UDVh($4"b2XL[*BDB`I85dZk`6 -lCil@jhQYce+YcqYDRjHd2XrUI+CI0+Mb!@LULPeIDhK+!#AP),fi)*``VdbpK%+ -ZAS)#qa*)hp-Gp1i0HbDFc![L@$IIhU-NeKjpCZ64K0JfmYU@h&ME2IX+Jq[J1)5 -0*m24#8AB5!Hrq2CF(P85@llibIRY#9'jkR`i0kaF0Y'"a5jZ(4C0Z&!%*jTLGL( -ZrK!AiNV#*qVrXLdK4UiX@jaE(EQmmXR+IF(Yqd3&fiZaI5rEER)2BlY*5AckhhF -X@Td326H6'h2V2*GERbcE(G`'3A4h-'cb*X)4qB,'hB8,'LAaZb[,[PbA%+00Vcf -HQiVHmmVHi1U6@P-m`ChZlGMX9")(pVaIYr96dA6BZ5MAE-,3[h`jq'L4f-BQfLC -2Y0Qp"GZEP85ZSAX&QqJb0Y'9mN5rF%ad$l[3iIiF&cU8a2,Z(kTXSNNfd9DGLHj -a6&4dHl&G9"*r#NjH4a0P,2F`PZmPPV0T4ZAY2[GkE2FTL9Gklrq5$SJa[8eL1Kb -bjQkP5N0!rGQ%dC!!Q4pcVm2&Q**`Zar)Ce0HaUDmNNfC,V8apVG0`!Hl8ZhHK#[ -95Q,ATEA6D0VX!"6j!2E3!F!N04F()%hEi#l("B15H+KRCAL*"l$(F3"(h01aq3K -B02Rr[('E2'3f&63FNbP"eIN58LZk85%*"i+QI#4$lSRSB%K*22Zc[TFC'jBa0JK -(XJJAF5KQcSi&hE"VBqieZ$DQ*%jr(RpV#3GM!J-8D6ZUALe@%R-kRl["MZ4e1T* -lT504f1%9XdeEP)4hp,24fq5"A[d'Qd,*jDGT)1,&$F-b8FITq("KNj*)REhq,AB -!!q`!kYN"&,+$MNm)LQhHiQ!#TU205[#q'9r-fKi%idf-m8kCmA('bMLa%PeZ9a+ -V'c6raKMq1M(mASRK%JPlk(#`ECf5m2Fk$fli9)bc3FDP)B,*mpG5m4`44X"!`H4 -ZebL*GFmrRQ#X(@#XVCHRY)J%GHcSjf-34@alPj*il,BR*M+@QKK,RBbPKB68b40 -6k!UEfRSPq0BIIN'+M6CMiiaNic*V*bU*RrpAfqVEj-*$C0E1P`E1J)X1Z-#&B58 -apipr[iHQb&JEPeQl6mT#1Uce+X&cejd,PX"DNj`a*5C-9a)c(lN[mTq`pN-P-Iq -H[bfK)f@$0$N1rqFb@i@MqPa*K)ljYa*6V`b!6F48L8dH"j1+f"$,PH"2krThE`Z -+N4%6@%3-I8%#"rq0VIN*kH$GmhlJBS#aJ`$MI6r&*)V&b&m&``VEiP85Hrl2R!3 -lp"hXd'YPj[f6D2Ta-"aPfd#59IrMcf(+i"6JQ4AV!GF"aVLfX1QcB$M#YZ%iPMm -jC',-H*UBFINE6li)GZ`42Im#pV*0b$$260[B5f3`dN($[Nm10(i5$,Ha,5#88ir -qcjQ-@6XBXfSG'5@1JA[B0M"UcSp2'BP40+6U0QZhUjXa5JR(2a-'$T+HpLr6pB` -"6l1!i4Y#`1"J%Si`pXq(hfI$lU"KhbF$Sam,60UX*$BqrqejM'af-,+T&B+!R`L -6"fQYZFG`8Q"4@,&HG&eN`rj#M2q,-'b!JQMKpb-X%cc0-X%hj119KLfaB,f5f,U -Qk`F-U"#622IY'hH`j8VLmErmkNQ@pAD`V&GV$diGKiX-fMlP5JN0R"eEI0ba58` -#F3krF(iR!pj2-e,rKTh8JbIP3B%*Fem+pc)fY4#E&MJ)29JN-`'(dPIRrL8lZPC -fG%NCJ#aF5p9G3HT"0'4QJ&aHR2hQVpNN9V**,(1!Mi85ZHG4PGf&Re'9hHe+F2i -ENhj!j(kPPV&ZK`0m,%6(HqfXfIR!8cpRc'XKjLe`!)jJXF`B(0C[61[2h%D$SJ+ -F@KRB@#J09`!EB41@Ml,&ed&FFXrFrlr"#`*Bb3KJQ4eX"2IB5IYNmEpYB)bXCBc -FX34')X-GbcfFpKdCLB2,VRjmmhK'#Z##-FE$KVC&#IkYfZGm&)$VbNS',TEC`B@ -$+5$air'9cl0-9mY!a3iC91Lb"4R[rS1(meKQDD(-XN!#&JSE[J-3r2HYLJq)T*T -D-I`iK[BLQd"8C`)JUEUeYrqB@-%BTXJ-+f)NX%FQ!*!!qEelErXYXB)GD93qdMe -rqHeIcq64hmrNmE8cZDRrpjS5AE@)L3HjIKNCkVFN*J30(NXI9'A[@iNSel4FAHC -0["8m`L@cV)cLhMl#Ek+HMD4d#Dk[609BGLEib+iRGjeE-*cpadq056(bC#(lm)S -V0K9HAABNDTf3!2+Rjeh2'dl3)Mj$0ApbGh(3PiF"e0jH0#&BVBB0(Ac6,TrR8Yj -`80k3!2M$lT0R`Tlc'*jChR!jZDE)[X(UFVPS5cUfa#i+A9KdZY!hrf(@b9Ieeki -ZZr`dVLE#+qlEP9GHc5F%IBQVbhbH(!`TE!erRFQ&K$rX+MU$lI9X1dV"&4))%&' -5cd26#(qphT'%4@B@RFNj#3@[ek'3!'QUH2Bk(9@1'@!NPCDh5-BB9C&0#rMJKEU -Z8l)5rjUX+U%+P4Ld4l"+9$hf#&5Md[P-6,Cr[+H,+q@,2H1()+kd+f!DVlM5VU, -4Tk$)iH-eHr4lZL![U3RD$4lY'P,LqN!dU4@(eE$RF[ZQQ42fQ$f2r1EP4!`9Hfk -Ui5LL6YC&(rRTlX39,NDf&#)$GP!'&&r,,pCImaCIA($AiC6"a2AA`Y(0ZbB%,bj -ipr$HmJiHMVSZ@Lp5a"Gba19QG)D)If)4X8MiYFq+UB2eL0$YB0@i$LE+%G,epkA -VEHC)AI3R*bhG"X9qq'kM'(Qi-"bjh%iJ*r8T&3!6EQ-I#BLhlBk0TSCD5A`qR-f -F9),LUIceqjA8eTqXhcN[GEH1'HeMYSErSVh925)8dFLUD'Dj4f"%mGCF8Gmm&h+ -Ae&cCpH)[lQ('38Ci6e3iJ8l$ZIalA-9V([IMp36hi$8I&Bkbh-Yj"+pXVZ$PjQe -0j*bH0*TMU0a[K(--UY,p+,r$pES1S)KR4P(YIj0Nj&ZZ0-%SB&X4Z!01Rk[Ni8" -JSe1X)iaZ'J*(c,$)$%`QjY3,!dr&2PBYYMk8E+ILU'p"*$BEjS@"&)FM3jb+$B# -Mc@%iJrJPNS)!H*im$$0%@DM!6!NU4h'%mLBhZ@Vb$hLJBfJkpf-j[lc8CEB%6,& -Ba!#MlhaE6GQU8#X95XXef%M1Yr-0Bj&PXdj!1'ef,"32'#$+R"pUBFAAJV%N+(@ -&i!KH1qY1*S`UYp9m'B$,@Hj"0"!a5HIkki&'GYdRA'mBdrrjcMY*K)3Z"UJ,5TK -CKBXRA&)(4Td1QN)DRFrc%%PPf+F0BpB,H[jm1'8P*hPbNfSBbcPAQS1T9-aF,X+ -"a&f"68("J5V9VPfYJ!dYAA)I4U%[*95dV2C!$Ad3H+d3KQT2[(0RjNjbdX05FmC -04#-Hl&[`CF$#+LZmh[GPJ"b$)H$CV614pQ-hfH)f$(b4pT,SFK'kG-kkNjbL6C8 -d82HLc1D2BAmM%G6-LFBk!$U`MhA[hYpU`BF8G4'$@9N*NSIK@YT-5`FkG)jp(M2 -f9Ndl1[1Rl"9c@9`j-N&'A3hm&SLC$)kABE!qRcf("&$Cmh-[Na%epdk)&RNV&S+ -$$SR%2B*CH(rBJLMQJXm4*2+9drRIF6Q#0KB%Eca+l+&Z*$HAE!`NHijp),R2dkX -"J`CYc6686-ZdHR1#ee#Sa,3XZ,DKQIX'KXjcLkPi9c6f`9eNG%-90Sl!0H3'kf3 -+2Yl+KD!43lk6&Ael'88X3(c0R$8@jej'eAdIZ3Q`S%T(e$Ec&5*(PNNZN!!J@Sf -6d02YRRR&GcH%2AG58Fd#!i9X3j%iTRPNqXB4eE-M'Q2Afl5[1bkAb+,6K60r+NA -LJ%XDDUCC@H6,D2C6*B1C[j@Ub`YZZ$UIrX!f0N`$)j&j$N)Di@kj%Md*$lCJ3#Y -S3%`F@qQqekJKdQ"")9A[ih#"6-iXSL+kClDcBUh[e&f%a&'#i6TlVL!'DUdTZdX -L"Y50U#T(FBqD'(2&XPF$b31iQ8U*YTMk4XL&$Gq9"If$dK88IYa%696l'ZPEP$d -A4[fXl,N8C6fKcSDVlQlTm24U1S%Z#bACZ`Pd`'R)"'G5&)#-,"kmP#C[KlM@Rf+ -116MBJ%Dd`F@*#e-eGN0d0YXkmV5'#)F+XV54L-`*9mFSNPkfGk)q,%5L-`d4XL5 -8F(1UdXqZPcdB&SBVGIHpXmcC-L905je05m1TfSbX%Kqhp3J+)E02YCJ%DS'*lid -aQkib0d`04De%CPAI'+&#DZSB-e5*'BKSF6#r@BIj*S'T4LVCrcfcP+pjVbbGrml -(XC6hr'FXYC-5&IHdDE%dD6iL-D@"h!kNkN"8U&$'Np8X#'d0GE,1X"Q9%QIV&6` -N3*Fe'XHd90eTDE3+GY%T)%A8,L!&"EbdS0!+me15'rH!d5H,m##5UCJ-dR3+%GH -`&F1D6'L%[G$FcU'a-G-f3lFBIli6KG*dN!#)ZQ%XrFkGPdPX1h05UMh9Mdc8jdY -[8Jmb4+X+V0)[)c%R1H15+pH@S$'UD6RY*G0A#kT'5XkpF*6bMGp5"lA(Hh)bEad -@YX'02b+lq5llZ![VG#r%0C'l189*`mRNlXZ(q[-EaAk3!24&6''3!*Vq2$4[IA5 -&eqCI1%5&a,[c4eR#'56d8Y0c'jT@DNDFD2CMmprRTp2Q@RHqK5AiN!"`RTV+6M5 -[8l2Y@662BR0prJhD[-+G[jmPc%$##@V'ldFcNjV*)66eE"#Aj8%dX33V%Qj5XhB -AQSHTD9U&CKlE[&IHA$Lqd+)B8f'Ldke9PAI!cDqQI!Y%k(U!f(FPG`pA98'cdH+ -V+YpL+cjQ5d8*TA$,+)AEIFK@%$[89e#0E8FqUXVI9b#kbJUSf*5DmSR@UJ)5i(e -)(4&T4a6E+*c6P6rqI(*4eSaV03A0@,L#)N08N!$32UdLKf6NQ)UZ3m%RT%`i4CH -S#6YKRPQCRdJPU$$cF$@()5)-88aqiYXA)ICEk9[a$d%Ie)[m[$"8C6KpjS@5$qr -QH83*4[r$Ze&0*DU&K-[9M@4&cVb8D(*!8SkA,)iN&VBeQq8LpQlbbcae)1F9mB! -V0kVJ"p@3!-1R`JP4Y36IT#*5e"aUa%Ae2$9-SPT+$BfSAUH'8e3[8D0C4+'lD(6 -!A9p-6jJ5"(+U2U61UPF#%"`Tj9ele`6pHB4iK$qVjYrH@mdY*c-JK+D+$k@l,-+ -P,[%!95hYrhhcC[Z!Pp&JQA!0!pIiUU2q@(98J50eSG&XbC1kVB1b[HkN[jJqUJh -pr+f6q-%bU,biP`UL*FAmXpG3!A)2A(aA[H5+qPrUM5S`5#`8&J)Cj!RJJ)(N%r` -kHi6&@EL))T&p@'c860+'3bHiX5#2Q0a3JkXCI)c!2G`2h-EUQUU#2(S3"a*MDMe -Y4i-F25BI'Lh)5kHL,Yc8*%1hSf!H$cd8a3K&i(i[d2@GU2lS"M"qKjDIPKj5CT4 -9cXQ%`c&e4mAY--%pUcbiZUabRVb0#VS!m2NY2TJcNSH45Ndj(P(blJAQ-UCK3qb -fGb5iJ9"42YKfSUXS2Be9q9Z-DSP5YkfXZ"m*b01QAPSJ2FhqS!+lfdN6(+$8mlT -6TQ+)J(6""GAG)V%)aArXYaGI&"-+-"+T%#6YUkaJRbQV4eP`R@%UCT8`U3-IR1F -(+6JFj3'rT@rTU`$iZh@cTm45S0XSj41(&FCM0mJp0Ni2L+"#cJVfd1[,RE4&Um, -IL0U2B,#A1GXV61P6Q0+A3S469R*DU&JUf9"LTJGb5'Jm!ZrkIbK4FAJq#`+hkGT -&IFQ2V5JV+0bC`T!!BVDDmXU3!%D+[PV6P3#"&"T08X5P)(d+Mr0Sm-#0DH`*FYh -B)VRjj4TEf`1pB%%a(K&b8db(k-X24IX%9k!`QYP$0V+P)V3b1kN5HL1j*%S4pA$ -(9YaEDR$C[E&*4F"$D$G!kS1[PUEC$jJaN!")jcbFG1)X-r363Q%Ja8"bRd*44[4 -T2')J`SpEUli-J)`UU$%1E8FJcdp5)#maRDl*L1Xk`GQ!UMbR**Il!9C4X'8TNQf -9R,50RDa+C205'eUN$3bjJA,ji(jA6F(,)+QbLKQ%qU#B943R3P@r#@(*AJG3134 -5"C!!aJmKMD@%cNBZ%4(H[jHU,)E5U5JZA8+c"G26K-)BAKmYH&P!j3,[VA0UjZ' -("9k"IUT1Lb`,&CNUXc@-hEMj-a(*'N-l+e6c*JYihP2Ad@FCdr#S+fb!kkeeK&$ -&NKjD#!KXTl!8R-hm11i8,LEPCC`jDDa+CZC(SjAV$ahelbr)aFYBm%a$dK9L53p -Gie)eHkRK+C)E*q@%6$6ZSNV6$A#,D2"3THKSThk8ST!!N6Y$bU'MRX-&ca"*`B' -f&ZS8-S$Tf8YTM!dQ9P843kUi!dD1QXSZUNMM2b%8840UC"HVi3Dq0&'"Q49l-CQ -Me"8FfK5*`"SL0(NUFZr"+iaB8+Q@GB-#4b8'XD@Aa*DSa*Ejf4*Ee1X5@e3,X88 -p6Q`KFQ1*6dN-8"q3!"Q5*cH+jB6VH-3@!h[),2pPCil(MbSJZXbj@I!-$9@RmQj -51%#i2QUaV9B20$QLFl4,C*pkr[q'IBaYa#$ZlfGJS%8HHPR&1i4#%i1H`-1+S-j -T+([GId)#KC*6+!U$H4B&#ma#&BpKFUB8h#KCN3TQ+#Lc#@N3#LMa3j&f6lI9&2` -8NcQ#aQp#CMKleV&+'Y0#B9Y0j4p$iEJCr8m2YILcXYd3L'6PEiBSKPl6M)S8D@G -Hk!JbE50qc*L)Q@Am-*T(BU5qIiLIcc%G%dhR`4Lj4MpiLe9pLS3kj@+p@YP3,mK -$c4''@R08EA9[ak[&[CQ@UqEITD$"-af&[0'$Y P@S"Zb"@[J)i'0cHKUa3A$ -FC!X-ST!!djV+0D%kQR6!pdP[pZDD[Zb(NE8ICd"V%T!!Lc2i4#F$8bMi0YBlf$p -,UXi4DN9AE5KFS&iJB&c%il$N)JGZ`S$9)lZ#pa#!SU*%HR,KT-`Pa'$9H3Na#+6 -$l06$$&khF'3AQ-NQKS@H359(-a@kcDVURh,ISJmi$9QC`hQ28*dINb[&j',kf"3 -MfriQ+p*Y%#TQc5pq&+V()+$B2@M"6b%jG+mcD#2f(5++"1i!m!r6`ciB%5d-a6p -#8GL9lm2)99Aj2P$f(PG0j50kNaF1jLJ-8YS)44"Cf[A4ZI`@Ha3UZCa$Y%&5RG8 -h5'QbdS0C)PD[8$JAMLb1KJ9SeYX)eN3J#+K8$i8,&G*EUFUZ`aM3lQ%EiP*")#J -3N48iBNfr&X%"j3S"$eKa"Uad'[ZAlSifYFGJ9MLKr[$Ieah,XR&E,e2*MdTU,L2 -Zb)eEMZUm9K4VD8,*e[J"bcS,HT!!qGI6Jk8!E*B"hG6mYU`J&`&cTaLRTV&9hQD -2)S@Q"5L68"&m'cP6MmP&mq*BkL'SSkGqY2pM&%kXlDaL3C*)P$8Mee!N`l*A'5N -0`!6m+P`8YePHX@q$F4k'@N4X)k5!'3HfMA41(Q@L1cLAZMFA)$!p&[dq(Vh#NMH -$Q$E$*'RQ+Xb8FU3P50%Eb-AdP03*#Y55MIkHapMMXkSTHS1C2CK2'*LI$5b*aic -SQ9&a-`e*$f"JGjaHlK)%NTJd+4Vei`2le#JU)`'&),GAQ(Xb"F-+f',QlGQC91` -NUP1J+38Z%4XbELBK(K6-b`#DUpYL!"d%1*EE"##iI,%Z!&`q9aH-!Zf)%rKE2LI -JH06@mRX*0!C3I@Ij[H-fQf6%'RP!jm*'2(T,"Q2,C`Z,dI!DfSK"f32-3*--*5@ -3!!m%iQ8!%k@KM6D"BAT-SA@`r5+QMHSmcq*"1E03m*i@3+GJi(IVQ,V-SqNA-DR -a`0f'iBB80R5&9C+FKUL0)5Ffcei+["l3FA#RVJp,AA[Q1!T5#ESUXk@+&eRC*jB -%f2lTX!cBFQcB'MU1#`1IG'Hh%Q$,jM*JDa4aR3#E0,RX!BUS5Fm@#EKPRj!!J&Z -fVqC!YJ&EZ!6FF190HL$Eh#hbX)`JM(mH3K!rA[P*FDCFr)C)JLTNH`D0*N("`fG --5lPlA&Hj@riabYebKh*RpM"ADMEC(pqJU4+VjZC)Jr+[(iF3*bAPlFH&5e$`R!e -*ZhVhii#NhSeAUP+F%GZ)eZCEe"Q'k`)5-UU0L0Tk#AbaBN9(U6!rZmTR&P3qmm& -HN!$ACDP)C3C+),*`kd&k9)4+jQjN0mTb$$&TKfL-A`V12#[X&!)J)L$FCbKf -N#B*e$hpb"D"2Lc`I[#@a4LdJ`M9$$5)b3h(cffZbPYZNB$`P"q-c(-&il3[fB,a -fNK5-,j'm33)KK@HKD)[T(drB5fF#A6+[Q#`2%BA9!"RSA[j-cB(Pca*T)Z-qJi* -U4kHBUAS)'%iSiJY!QFX+cS61%T+!"hBq2X44E(18ZD)2hBTqkjc$%5"qV$kpMi) -qZDTiKEfUBQBp3(28RL4h&S-jj!b404AF96!ee)VK(-G`dV&K+JC`(*X'S'VJB9P -D*SP-L@c&QXTj+&3[Nij@1P+BdPr32@b3!"FU,rQcY!rpAl0e$Mh'd%dqIlYZ)6b -bFKHA6@#bJ*D3!-ef9)iA4'!SfTL+balcE''2Xqa21h!0(r5)eG!4%[*3"N)@,UZ -ikE-bB8r0Y&j*L%-L&KJ8T%XHZR)T,E"HTpLH%US-$R+IK*r*3%[ZJ""Ujk'UmMA -P`qcP4G!Dcpq(i23G-N5kUXUfBpYj9eRCA&GCCCCZ`"`Dq&E`!5V5m2KhkA8H+25 -%&&!!R8!q#P#hlBTDja%MchHL#N@F#Q9rq#5UH[-IP@4Z6&@9Gp@0dFF9-Yc[MN8 -bLSljBakB4VXESX,"8(@,U1AFJXVZp0hTZpQM562Z1@`B3-A21GG34AUKb!M[aY4 -L'j!!!)CQ2a,Ud-0p%T9&DJTkV0kZBU0IM$D`3Z+fc%j2)d-TL33ET#*3-Y'KQ4P -2-b*$K!,BLZK)81`0Q2206h[9djqL!%-mQ!99dL!$KlL9K0,cb$$lSj+UZ$3&Slr -1)h85R8X6U)id4"a6U#R[JUVdmY56dL9DT#SHNbr5K20IPNc#CH[08CfTej5[TmI -66Le'J9(lE#ITiM(1*`V-B%bBGkfQmMbQd#*P2ck,XF((f0!*0TadX!'&NBN+#f! -`R-Ifk6"#N5+M0fc&a1"MqmmY+&Z[Zd3CJ-QL$pN5eR%,D,1jM5f!B6p@63[N[m` -@D*-LShl+&-`GJ@G2N!$BjAPIQVjR'URqr"PN8B#(qlZSmLkILS`m55FS)(00eIG -km$1#Rb"q#SqAcBX2YZ2D*1D1-4k3!*qP,Qap8*bX)0ilZNHK!YrKF,3)"V6-Cdc -SNPb#FVRAEZl"id(,5R)r3YDTl0+TAVq3!&3!3X!!F(+cQ2%6K4d#j8r&4@5+VN* -D%%3[I4C4SH38!5"DiUY%X5+9p)K"&TaPL6A6dU%`PQ6ZVkQDPZkHVfddP5V38[& -PS4C(eEqYU&D%)(e"Upj0ULarH*`CpRBbe3+NP@`i3flIY0!aKA9ISY9p#98fUPJ -c*!5YFGT1!5S0NMlSFBmdVETadk,LN!#QRM4'UI&,X)#FRcEm(%C[6EJ34@CG)*H -!V'C(*FUY+2`*aS2&!4JQh-C'4P)Q9ZNH'AT6"Bl33q,TTB0P8ZFPe$IUH!`X*M# -F[k$FLdV'9H9HN!$D'M5'J4JHC5L8L4Rqb!!mE#NV(kD#bZb2lj!!#YIA0GI0B!G -)Nc"HFY(Vr"+2)5NaLJShNSZPQVZNiGl[T@Y$Z#BM88dSMRNq(KFehiim68[2HTY -P*bHb8e%J+RU-F6P,&D@ikd9ZqLr8e%3a109i(,Eil6lZ!`Mbbae%IiNA#LADcPJ -fGmNX5pHU'SH#-M)fAQ$L*iH)88F!&B9E8[J3f&)C`-Y8H43"`&8%#jV+X`6BX%6 -j)-b*4(!ERmh4-E*+eGIXB%-Z@"m2MGKi')q0[PZhDKi9dI8GKp#BXU@rN[k+B39 -e09M(05KN"`r`4ZeXN6d%!FAUm'Vf#!5U-Sa"b81#!9#h+Kj%bFf"&NCJ6XENHPN -!K@+'(Yi09P%A,5cJ(C!!Q*1L+QkN&+Pd&F,@IIBVf4-Sb'aLkNC$(qq8h6d'L*M -!k#BSm+B0!$Kk69GC`G[di&AC6)i+)c[V[M13!*Vj[`lGAI!f!UKR5Y2DUllFLD+ -VU21i"&bD5EQM4pBb8$%iJ#)(5mK"c69EbY!&ZFHZ3Qb6kbia(K8)pYS!)p9D'9c -%VrAa)3#$@6,",P`b`8U%LZeAh&Yai5B4m*&F2MS))KE!#+RFDldECMY3HaPN9F& -4jTT(+"aM5B"%"`3-`#K36f"JLr&D,lm&`&8[E5[)h6!E881bJaY$L6J(-GCAPK* -k8RN*(mR+*Kc'MBX)#JP&&Jjmk@dI!C9HHU1p-Lk4kD3hG3djj%J(SBP#iNLSS5m -EA8$$NT*l9jdRjZQr-NU&QA5,0RehemP*2UQD29K-STe@IAGr&&4Uf5"9*)hVZdR -*e`9BT*`aXEkpF+pZ!53eH)"5cdAJB1+E*Rf,`+QrL"iI,AVNST-9AN3P9+c&i1M -"4e,ficTr!!!aL8&%3e)$!&JL$e80CNB4%#(MlQ(rEEq@U[6QllUqZClQmEQZUhU -UYRT"md4f8MF'l-S#[@iQXl2)RmI@mT!!MZZEZB83`KAYjjFGF-U-L%k21"F1%fZ -5m6cVC"kh%&l2`RU%F(S$)i6P@BI4J)%QhD5EI6-HkqrIhrrhG4dJ[lXNlb8[2`! -9GeiNmb!b)K)Km3!4)JCIDC6*@!`rXUpC!#NQ"l"*#+,Cl%(J*,2SI$2R`#a&,*A -JHr2q['r##2kqXb$M29bpVCBKMfMd51[34iEHEQL4%lI$KBTBl(HrB-@$B+jGM6B -rC`6lfrd@hpH,T"&%q"T@$+410j!!4@%JAKK)i3`#k3*IHS**R#qRYL)J,1e[ND8 -i)MNQ$TH4Gkc21GlS(r!2!'arf"r(cf9eDh-FbU)b'T3@haK-Y,,iV`'IKIP!,"N -"+lJF*P`kQB3*Qc$Gr6!E409iQ6GlL[rD&Z&L'9UPe)!-6NmFp9&,I)b,MkK'r0' -2c$L3!%D,Vr@S5eRd5mQY!)MVa183L-U,8M@0d1mlFmVaj4C(GiTKcq$X4AAA&I' -!p[[1M2*!Trk!0Pebe'9ka'9mR)bSmU3+fLFYXQG$KkpCR6!d@iYX4M$G$"!j40" -a(8+X1Pr'Q(r8j[!Eb@*YDNP'r3plQY9D+[kSEHQZE8#1@mCY-0`U)p6I"B!Jc-X -3a2PSHBJ%mT!!XA'`f`ZS-51J4KBV+Y$IJDAfE!q$%F1IXX&rD2'8'%'93-U8GA" -Tk@*')3Qm&''F(5'FeAQqX(aVpf53!&-A#,mrbphGEhR#D5b(%QaejY8H)pR@$Y" -iZI,)4H@4+*B'pYiI$ICh'5'("E$ZZGXKGHHM(kPD3A[qrQ45@H!A#mlZ-T)#eLF -$V@%$j6#bN!#6'Xc3EQY[E2GGBC0&!P%VLZckSM[5B&R`'6PTYTfJBXT*HpZ*3Ri -iam&%0M)T-8dPTNNaR9cZ!T!!-"R!T6RXX$*S-JD$rI2lT1TZ'IN+JN3A-c+mi[4 -d+(8k&[-P$5TX3)XRN!$+kJ&$qV#aF6HVTKT[6PThRLJXHCI[Y"K,"+`a[+AYY!! -kUEXS,fZ!P+ammFpDe0655l%kIpBP3AkkPh8[e,UeTQi@&P)hQMH1)JSESTYjXBQ -8mjS-`i!#MQjHD'BPbN%a`IdX[R63X26SiN+Z-Vh!4!(a"M'edV4Z'kbI9H*N"&- -c-Cd3ddQT&pDk&jA#UXUKQ$l,kT2*F"F*AMcbX#*i+Dp6)IPB3$llD'Mh&l0aU(X -j2-r&m,T&h8D9L2V8d4"[-)ZN"ch`UAM!EIjq$4)K*,"Ymlb9TR2E,GKd+iXAKYG -Yj(1QamZA)@$mjPa1KJ8S1+9*fAD#0qDIpiR#I%MeCh,5m#509&X(LeX0#EL3!!Y -q%KI[3b@jZ#G0G'P@R@'H)T8%`6d$``'B"'KPm`&8d*YQSP@!*BmZp,YFT3b+I1q -*4)&ArBQ+'CfKmJSAXe+Sr'&-&+T(VmV&4+AGSmY[Y-$SFEQTDkk!e!B,`4ZBLU! -B0LP#VN6e@h%%UPr)UeKFb2r5ULp2UcLP0Ekb8kRkBMT%V5F''1CjK48&LJ+LC1L -j0N2ERER6jqHN+96[cVR!q%HlfbRiB@ESAJB*"bA`U6+@N!!#dVLlq$XmQKq*0R% -!&VlZeCKjFLl0aEF&ZEMmjccf5j(h([CN,NAa8h%TL"qAHZdU#ZDCMC-K8LX39qa -Vf,3p)pAHBep9ReCHV6cf9H8+jC9al+Z[ZT9A)GVDSiilU3lHSLrFJ%$UAf6-DfK -$e6!T,iE#l&cB`L#b19NkEQ[XQ#iYD,[['e-!ZQaE1`[hFZr'UXEHM9AkZe$p@fR -+jJ-)$DEmb[`L4$LmNBA,bT`!iab"a`1X9MdMDY&9&TSf'5#ba1*-SDThHGX&UEj -fX0IVAP&Hj`rfqUZEP0IHBei$JYfmS,`-%E[a+$-@kC8h4D,28A!94UACe5,Y-mq -#J#L(Na$+Q9`1XL1FT#2#Ci$Y!"-6K(lJid1BC*P96YQ@'+6hK'8lY"THBJ*kE`6 -e&0kJZ`5PXe`&Pr%Z1X"p`&6S'-C8hrKNH0)1F[fZE$h9m2A(a3B5cK)V3$K0Q,4 -GQ"i@Dd94G1FF6(DC-BpZY#,lVZ6`hiC+K,Nb#+%"AdQV3NM-M24h!"L-FSFb,#S -5+M4YairjkhY3%GTE5-p2r@hBUJ4rGNTFeh#5cAPfN!$`,Qf1VZI!IQPcj%0-U[j -`!%NYQ%2Nc"m1q1adV*@1E6ADh4)[I1KN03"8Dihc[H-)X1d,-T)9+NkNQ83RXjV -M(5*&`3NJarK[$p`@T[CIFBKA[#S1`*a+Lc8b-$DYP@4Qif4bGf&m2[@XB)D1++Q -(PjQaV[brpe&XV#LkHld)33ccarLFDT'FUkaF#-fp&+Y@ar("j!qh3h19XAAUSPi -8X`@YK3e'(&kFh&XIbQqAFcB`U0A4I$!@bTIM9Y@*,PLC*SEAZBJYa[)Q$MHiS#e -%E)P9LV6+rmArLr`2rSXHmep3q8r$I`(mTaq8Y5#&C!RZ-bbEiAce-2i3Y&#MX#) -*&K3'VE%Krm-KaC!!DrlKd%%0H3HRGYQ3!2m,Ldj'EJbh+NQkZK31hbkR+hMb`pM -#YRmiK!FZ$Z1BZ8LUAFTb1@h`j'pM#pD3!#8@bmMLj22eEHdK,("b9kMVR@+MN4C -!A0V&L1VLfl#NfkJkNa*Q`VG"X#F!cC9E65fN@M5Th!C8DkVPVf&TXES&l@*)69k --FTSJYLj@9a%!#a1LJ2Dq-5#kSGc1C[H)MCe(2%lUA#ZTFlQSFrQSFefQcLAP"C! -!ZdB`p[r'fi4Zqhrpjihc&(lAe9"Up2rh5bAGc-SMEjS@2#SH5A3AVhMN%8kp[h# -h)AB*C5eYHfUV+XN9C()j$#-CI3-pPK1VBHlX40Li@#DS3%`UR,MD,0p!2#E9#Cj -%@2&M%T@&ck3&2*b%0HdYmQ0fi)MH#dQ')+`J'jbJj*YKIV%8N6L@$dr5i9%ekSL -,9l3N8[cah[@qT*f!Q6KHHdQ"QqH3!$ke$UCmL8b%%FbP,U9qpR$CAhj[LC1k9)& -MY[k&bl'BM+T)2(iKMdR)(H(*h,XbZSJ#h$$Jm5VTH)!2hd9BLf3qAM+6Xq8FTkL -rQjFKX(ZQMm1qbL1BmUdJ),5GpjR01#-48!CMlc2Cbh)kk!p[-@Lm!S9L0q)%Hbb -$#bH)6ma@Z-QZ&*i8*qABV4-I$q$`2rKNY"S1,(m!161B[)'Nf8'JNRbF+U0l3HT -f6!DI[`pJaQEFHdCK%Ik*LIM%Q)4VjdD!r`r(F33A"5$22GZ)bCf+K+9p,2B)&fM -EZD))+I%b$V"`j"r`jrfX2C9(H-8-,6QYX$2-YZ$2CPJJ$XY9q8a)#De6`k(SdU) -3e2+pkmPKF$d9q#J9q$8b(MMk83H6FLpe0aPTTFi(!!*!JcYV,rkMaL@3!%GIeYk -E,kkf,B'JYmhJB)B!,dCIr4`aU2H0Hpp&1$jXCh!13&lBQ-%(EC'"M"`1QD"$[&Q -l)emFX4cXN!#U)BG8$6e%PZJEN5qQEk3i-Z53!,SKKp3GFmJDI52b4[T'LU0$$UN -GFNMYN!"$e'(l)'R&LcaFVc3qK%ALQ9QdF,*jppSGp`&MCXJ`iIEb(N)4Ga3r8G@ -!i@N`%1Y3dkPm6MFG&TP0L'aLlhU2G@DT),HdElh[[2Id8Uakf)kIb[lmSL8eaJD --N!$k2CK1#Ca)Em)dbYRG%hrfiFpU`),l12h&6'4X(pLh3a`Q!@bCJlVD"k2D$P2 -HKj[Y2qBN'G`V%Hl@JheBKV"jYB(Z'PZaqmhHFdd-"pV8C1S@+c"IrS`%h,G#cE% -#kH93C3mcDhhM)&GP6-*kTlLcpjh(ClXl4HkJ*GM-LJdiHPT@lPHfIJh"Re'FYjh -c[BD,VfMNelekGq$$iFSAe6X%G3-`B#Y4h(Sh81#'D'T!k3c*iH#q*45G4Td!`I9 -AQlN6S)KEVe,#G(2$b)2"$SHZEdQ(J83URUX!`1[NC9QBkM[[R(,je9jFl[A*8#( -dr(dbpHZ$hAPLJVYc4J)dZ!QPm0m*MN-(3"&qpVXJVB"YlAKadTFN!1[N@kH4TMf -0"&'A-GrBYI!0ISQ10SC&*e!%6EMaSV"110Sc5!i$#0['YaFMVhlT$Sl-$QIPUjZ -'Kr1bF3NC#B,HAIk9FBEjAHHcmpXXFpd`mcd!'di8TPcRFA0JX8,'4J'EU-f&`22 -hH@0cfDcF-$#V,3E(!*%di,),%rT,[cXVI9Z0%!UmAP`5p(@!hCXb'hG[!U%ZB8* -0!(ijJmEm!'jH(0fS9K3#9b+([b35%NM5`6fa%+!2GI`"LMR-i!FZF`-lN!#FB+" -LXTLb[lZKDm'Q&(!0Gcmi42%&DZL4PYL,8MUkPQ'Vdc+@(44CpABGMQ9PrEemG9Q -4I1YHGFPSF#ai@Fk-99F4H6@,JcBBFA8YrY4`J'@FIk4%XN)Im)iI15a0Q+L,"!4 -a`k$,Q3cdkDDY'h%ChlMBc%ZJhJFJZLR2,)L,iB("amUAAUUZG*['$rpi(pb9BA) -Fj#$m5k,cZ833&bX(+-#`DQY1HJUmJ&h4AArU0VhEHCN4!N(Ja9EK*PQ9'RN!8ja -Li6"jf0SN8TqSpYRU2C1"Cq3NJDM,Vl-4!LXCUpl,TSeUPSY3dR!"-,$DakV,Q*K --4I)D!#&Y5bFkri$Lc$Eq[E1aml%m@2YaZ&$#U$efJTNL2Ji*8qkim4a[$JR"F5@ -3!"CKMB-)b!J4$Kq4%6F4MiY%1Ui8Eb5#FJ2KjcP2FI((q#NU6Y,(VZ,Pr&&eFj& -A9i%9r+Q8eAAUiiN28IS`N[LJdBHTa)F`IDK)I)M3KpaB3-h!T&ZU5e4M,1#1XXM -9CN`M0%hPQ!(lR9L'D[ZVbacG*Sc%9i38EeR"!5,rZ"(BdJQMFrhk[T5+-Yh"K9m -`hANbC3Z&Zr-IGN`'QHPVkjL8D&S!&Gaf%L"Tr&6$8l1XCR25efc%1EhYC1C`air -CP@ElN6HJ4VY)M6CIPMUc!IHD-'r%)pGYSJe*@3Y4Y,*bp#4Tfhq$VP`Z3R3K9!L -lM)8p*I1DfrT#BNd6f`#*ECc%0TA'6[H5f2T)E(G*E-8N0!F*l5i*65@4pDU1K," -1*F3dN!!3d-U%D,)*S43J&+mLP*k%8-b%8%*#+%lUCSrDi-#H+36kfcIFJQ0IYkI -9S#,bEYcbPmGIL[8HrhG60VeaT"l&-1qdq,Ym%kPEl!`l,Blj'hb5FUfad@(KESm -'1YS9+EUb@XV315R[#pb*")3'eF$XBYM4XH,@l4FTd)P8PpbH8#!A3"4IUA%p`"& -@J(iD%cRKdJf((,LYXFTj[T-"D'aaV,VQp$RE18Y,GDh6%VA%DQ-ah03j,5!hHCh -Fm*C8+kQ-q-'kre"JQPb)b5'-P4S&"hBi`GHa%lah1l0,LZ),SlZaF-G)Z'%5kia -k'Blb5#f3!--k15e`K9ikPEQU3(!MaRN'Ga)2T!3M)MX9b+lLU!F!BFQEiV9bL29 -J&hPj[hi46r`lq%a&Crref9J9UJpL# LpM1J0E,&YF$!S!%32KEJJ268LXQN@2 -ZFRkN*$c$hf4aT&`kr!TQJ)3&L'PbAQ`BX"9rY"UpTjS+9p9Sd8-%X`d#CKa%SDN -4QTL8%R4QfKJHqj,NZ,D8JSk,p,T)$jCL)`TXDd!CUqR`&(l'C+EB!KDQD",TiBe -VFHPYTaSq2q*k!!8JY9e3+AHj+p12eH-D#kTcKBeElZX-Fm&%qM%lL`35*h3""Jm -ifbp'2ZPQ&a5jcA$j-j%e[QMr"FFY0%KbVQUIrTN)r*&J``FdphN)i0JLR+XHRRP -EA2ba2TJQ,fBe-)+Q%GIN+L2TQF!$%1"M+ehXSVm`mcC8hJM-ZKJI#r6a0KiCME6 -J3c0pQ%AaM(*#cFHQNH(Pe6EZ$V'41r[P3p5Jjk'q"rc5i--bX[48`kYRqI+a%6C -ehVaR$-GQC-qTKN@EH1@p*RZ-Im)$5$AK*rRVXc)RQr'6P3Mqq2JIm%hb"r`#$k' -$kCrYdSHIX$cVKp(l*K)E6,MialjeChpN$FJf1rU0Z*0%YPI6c36Gl-[`6I2ha30 -aqRLJ`$HPMp$(T4+j#KrEk)&LHS$9r`L4rHdm*6DhR"l`d30la-*)Lf!4m-)V@&k -k+G"0MI,3KiUcdBMlTQJN46GRk3C`Ic4-BLd96%YMqi+GM-d8%%%I$!3TC5F@fIb -QC`!-a@TQJe%mqiaiFElY("-J!m"jl%$E"GcB6cAXhki3)aRCCpJCMMAX)"2[CjJ -S[IrM#f#,[dALAFl(i8mEMVc'MSB)&pCLF3mYGX2dPq(#fh&KCf%qfXlJ!J0(!!I -X2)P+6dS!%`*S`-2PP!cD3dHAR@SiA-TJ,hTa&kQ1BUik'Npi@@RGRQAi&dA'MN[ -l$&H@RB0UXKB3iQY`30VKMLXU8P5pP4Y9'ACdQK9`JRLrUH0)%`F35X@1ZR6*QL' -A(L$$3CVHXr*+j+V'#`a6@N#j*!SYX9#i3'mZ`Z,QR2cH3'`C(I"ERiBE&5N(J!b -aCCjHC9-6T"$X!(&@('RL*'4XYC1V&2pa%e8UIL958Rqi(P[P"q-mLHh")hA+)eA -L)m3Y*UDL'NaF5UlE,bk1+5mDmBqLDk@3!"`BjDlep0S4kPT+9dp"U![F2Cqq2[) -!0lF(ZrV69qM6V1MS6pm%HrQX8"Y2[cEbJ!NU+U9k`N41IkXf+k`+9FlIj"0NGLF -TY#3T)TJVYKpL*C6QR*89c@['GcH6Qcm5A40&aV,ff@%QQBeG[Y(4q(0G$Hh6d4[ -YKF#@qaa133(%3F`#chGbN!$hA45%l(4m)%%1Y'YTM4P-a8ekJKZXFE)"V&1&ffL -`c-jPjVGh&aNVF1cVl8cX+BM)b%jf@[GC4E-cBT,BC38TDR,dX)L'D1'd"NHQ886 -*AfIl$ql4"X*T,fN$8-@T[rq5e"jj`jJ[-KTabEpr!iH%"p1E9QYQd%%N6JQJL@F -d*+i8pL%fc!`l'YDakTVeRr30SpY98F,PFC!!,j-GQAjkKKmU5&pKC[j(D)`J)rJ -"-)DIG6+SFVT4ibiZ1G@C,%KrZmmk1ArXTDSj-6V"*0"U2FC")&`aaNPq6V-kHj& -`XKImlYC(E'H3!"cUYh##IM5ipkqSi*j#FGH#!HdX"(EICb!L'fmm[@$RT'AMkHN -8295,Kjj5Ca%#"JprL3VIE$apZp6BH,LHLja[&d`MS"`YRlZepkp!#JFIcr"KXqb -'9+-XS8r6%f!HEk'T3`dYdIJb%0T62KQlK%QYCpB)l0D&bQ"GAG6#VEmmbDJ#1+Y -hXb&1NRX$Zp-DX,aZFIE#TE116!)Q9c#C*%IEDE(*!Ac8`JG3daVl@i!NIeFHUk, -LUN1&8l'['p`34+6cUp)B0i,aFqc)$cB2iRHLU$0&J(-b-$DC4FFCNcP+TpH`L`q -cK5`X%)"+1*`eZb1(mRGr-K!Blalr#BUFbEhT3**'Z'k41eQPhLb))-"@X-N6rh% -C8(TY3A6EC%&2!TqJ5hk0MBYC00'`3qCdGZe8`qlVP$DA2T@CA$$I2FBmGfb[fAJ -1cN*-IPT"GJ"*perJLKij5GX(Y)dZRe-0`pjVDHaBB!+9kff4136YYEdR9GfC+ZP -iJd%1K1`VH5ZqJQSQMM5Ilq4MP3ZR"Lmm@di-QqiXX)I0G3b&LB,-A8C"iX'-)3U -68r1h8*4lk,26B)FQ&#Fe1'Cf1Ea8SYQCc%,P0l2+6hF0!LMTeBZAQJ18@58$heZ -8C$XDlpaM"j!!'aHSN4C"I6!bE*`6DS9mGPj!X("f#V(L'N@$H*q6R*MX**!!A3K -CGPf-+XUdN!$6aG)3TfBJ*V[2(A8XUT!!+F5THYZiQE$5L')2QT1bFVc2EMLR'VE -X9-MkipaKMPa!35#4N!$*UdiU(V1YZr(@ED('Ik'1mmFI0URDiJprdie09LQ&hNU -&CLB%RNS)TahLaNY(NhLNX8@QTQAeML%"5TfL4JScpaDC'4l0YXm%-4Ncflq(-"N -SBeK2)l!$PmH"bMCc3S3"XQ(K1"YTDqHJ9IB8mLC$q&%i[SR8kZq3!-5[mZ1M4ha -i&"p+m&!3JUV,cY-&,AS+K*a+5dPPQ1bXj@qR"ZT`-Q2hUST2IFf,D'B[[FCpIkr -RNL+iae8(1i1G3eG&FDI1b&+TZTcRHmq[r05-ic,I&ZE!a[$*,6D"$4CIBE&E1HL -1*bF1mU6-84QKLPY8k`aJ@6@Z*)$Z`dM3J"[ZKrAqAPm"4QJ5ff&h4aFYG"!e)"1 -G9R&6L3ja6UTAM*mE-QDJ6,+A*CR@#M,iR%(U!f5r&@5reH$QCh#P,cD2r!@-[Yl -)Jq&NB'Z6QU3!XKjr0LPZ3eBSN!"'E,d(9Ad2@qXK"`,0RF8@9(cm4a6+0K3qZkS -jFI$lV-#SHbR0q8Pap3M&"FE9"r)cSaZX-["!16NYM-8fi8qpR[3(qr'2D-,5b#% -KZTlpUUNi`SlQi$)"d+)QpKl!bqe`8Gd6+iH$lUjB'E[TaNV`mZ9B$GLKT-+)b8L -9BAGB'Qr0$Z$iPr&R2rlXiL%2IXQP5iCFHT%[M3TZ*p,bFM1kNh8XpYi'c6IK$m+ --$Qc!Cda@cpcaDalV"XeM(`iilSLQ#f"2Pheh'Cb9*%bTaM2-2ieBlXN!i)l%DYL -0#ZM%@e!32"REKUA#LCD@![B%k&DfGj`EfkV-e*Eh![6-QJGr%#lLC6#QlA3aVh+ -aPch@JfeS4J#RbcK8iDDMI!Q),eH)kdh3iLcJaF(!2IEqj(*53ZA%"!1Sr2eC2A5 -3!-aHed(0,"G+5KdJmc24X+&-0-L%LR!Q&)l+Vr8,J4Nf"kXfCrZ0D1*AjYZ2$E9 -#$9Q*c"J*&@4!"4P#"F@U3&!iM+T%mjiDamQ#IF1YDERZ`b'+D,hZ8Q8m)9Xcl,c -#BFjk)Y9VU,YX+K,GTCf8Br[`Zm+T%!r8#dB*aI5q-D9dPa8(k3l,U$[)i$HJ9,* -+PfK8CI"$DR66FPN5#l5DJAFf,p1m)Ue5F4P"8++V244M[9"jX4@&I"cU68Q!pSL -'V!6I&!LD'b93lK@eMilq"!*GVGkG#8+eIS)rUe@rVLD$Ta59hi@Z!&)fADUlTJ5 -h(I1+6Abe1&"0U08JXrbIH+K,1,SJQTEIXd'fr1AC@)Y`1q5#8P6[6r$`DV"HV62 -(3F4DG#+'%"J-&")Ae`diX)2TcH2e,j6Q!2[J1'FqBN2k9N1$KAdE"KCDi4!8DKb -BYSm#YN%MJGT$,E(eR"KSX!`feSmGmNZIjZrhr3aX-Yab9R*a44VbRT!!1pU3!2H -paNNH'&q3!&*6"qJM@+[BJHFjFAX!CT!!iUe`fNTm2Y*#S)!YDj,D4JVa6$3VL-i -56,c0I`h%4XTpCc4QZcMCI#@)9(1B'lpc8e2p5#G$U[[)`4*9%Lk@@bb2fKMU"G1 -Aak,3Iic%fRcK9eVKPQ&6Q8eG"LH!Rk"51lR")GcebY9YcURHUC@Y4'TqRNCU40+ -$L8hiP3!GX%dK*bFb$0'h33fd`9fr9&e&f`pJqh(H(*S2YCb*SY-c$'(c(rF9Z+Q -!aij2QrM6Q5JaXEq0V9&60(d)8aP*+@TKBd)Tc1LJ0p4!)a4RPY5#MG5#l96$lrS -8GpBeF'b(JL43qi,S'*a1P&ReY+)H0UBT"h(4Ar"&jHZN)$B+pF"#JA+`FFJ[Xf! -LXeR,EikM!VX8"@(SCYa[H5&&)61rii0+S#iq8%FTD5'kp4lUc%-C[c)-bf(9!4S -qQMU(V158k*UK6HHY9P)G*UQ1P!,fI4CJRir![Xq*d2QRESB`3BiD1*hT'D$`H)$ -J[PFb3G9Cd"5iMcHX!hj1KDQdJ[eVGh3`Z)I3GFI"`Ef)MjeNLb+fGNmi55#eY!q -#Fca8$'rNB``!a-!INPY2J&ef'F,Gd8TUa8r`rN@4h*HE@&9GI9GqUVMNT46!fmk -%%S0F1!N5!U[2"M#**1HrCjK3CVJT3-ZIC@&GAPPBp#GIaJcZ[fPB1)D&VrcC&Rk -P9PQSZ*X5$*d'B'31$Q"S!X#`@Y-"$%"K5P-['RaNP04*'aFKK'eR"mhaPf3iYJH -%iA,'c`0VA*BF-QH#r4hU'!,HilFR-S(qMP(YZ5j(0i,A(L4$lbZ*d@MMmGRQA-$ -4aDrhrTAqDPR(p#G'i(!RZfYRjaZ2,mMJGHlSMFHRCG"5B)@*4!!D5%b``S5DN!$ -"Qka1DI#P8e$`jBUL`P!aDTb8IENkjRm#`iKP@!h6SEA+N5A+JAA+JA8iF)Gk#!U -V(*@+kdFaHd3A)98CI9edAGfpI,F&UR8l@%!,T8mdU$i`$(2m8(#2CD@-hN'Eh@" -d!+h(!NU6)4`UJKjPSdPr[dG'er)'X59U8+CXU3TEfX[ZSid$#mpKNJ6Cf(R-aK3 -9(P8),Y4bH1M@)VYSDd(DQSdD%i%"*Z&9JV6B)&UclASKIe(QJR[I'5+q8(p(6L[ -[GR6YI3IL#afqRi!U)$j1UI2V[HrSVaSJ[N,SLXD3!!D"*""Jj"$"*""Ja0ER0q) -h`f#IGf"EVX&('4C6UV4$+GkiU-48"AN-TP!9AY4+9BP599B2,H5+B25dM2R[q0L -`NqJ$GR@-+cZ(kQfiJih-B#2aaM[Bb+)3K5#IBP!6,,$kEl(E$bpkp(pIP"Prhj4 -U662'd`YK-Tc6Xf&(Ya&[l&lBbcp`$#KK)1jQNY-[$*HVPrK$SN+KG(-C8L(K@"K -"G9BQYRUFQqc59P&NmKe4('+VqQ,HX0XZS(R&THj4pA%i5E5j!aXXB"!dQ!dhi0f -1p&UF8f9U"3m3PSdc'$GR3GJ6r4%FbM!*BK,%*)#*KNNBN`!Q(rq)AFM3N!!#Nid --&'+S&R'TmU%K'MQX@j8893V0"63`09V12MDrl*CR!USCEPM'+JcpG-[RA0&0R`$ -Y'CYi-#KI[-#!(``@fdkkBaXXJd-h@G2J*$3HD*KSB-$)b'GFE[2lYLY`$6!Cl+S -#meJ`mZZr`mbbdi8%Y6p@UF-IF+ql,*)-"Eqkb)kLFJG"N3a!RREaX&kY5Y+Bh)0 -IlH4"0YalMYL--"kZGkFHXB%dJAaYj8IZm3"pU3k))$#p!SkJcAV#X(Sc(qDcX`U -%D5#%3iSD!#Z'ZbT2[jdHKaLU#SlMVmS,B1aHF8IQ'+b[pBiATAlqN6Z,!IN3MRM -(qj!!%18E1![LY4%8,icZQEcK3,,f!MI%`*!!AcKXrDL45QYF8FH&Y9)da*Ui)Sd -8&bL'r,Z$KM9V6cAmd5i'lqB#2#c8iA1SXS[CK*fGK5@`pdRIie#65GrA5'P@1Cm -!`3H8EX3(,$qf1#aJdkT-KRBBP+PmKY10%26N2!DKHdqirf3$ilE$&YUULd2`YXj -#rPNm,&-)rh$FHMr$$"jamadN2#FFZ+$"Rk$3N!#fd!DV)TS#X&2Q%bZam6&RRSI -J`[%1r@MHV%IVa`pYfdj9Q!"VNa+`Eh*chi1d*SZ91R50,K`(3m3-0VZC)&@!3&L -L3J#5UeF*)0RA`i5@ASe4CC[aFUeibG"F1+dKj1!J9``UT4q2'q[01#UBJAY+*4H -hB@BXDXmNAl4914V*iZTajE)APF[U,j(BU-iT,eqET1dNAU)K3V@T[*a"Ti)J[YH -AZCS!1LXZZB[Gh08fX[ZALFGD+HdFBJ'KZd#d'"b`6QSri+4dQ!$(K+ZU5"#R9bC -44,kq"fQ&dYIh)*%L2QJ4dd+Zj&KL)9I,50ab4H+mrGBEKD[+YM'-fXC$VJH$"Bf -d&)2'B63*CBB`T6B6l11Db6qGPpBCJ$JFl%)%Rf(fTHq"hMM#A$5%bI&L`8bDB#C -lB4k2XcVaXjTNTEC+HEA5lI`lEf(F@1j,rHE"+bZLaYc9mBq3!%$Re)+86aVpaM* -QHj(3"D[9mb5PQF2'r8`rTjjj%+'H&bPaA#Q5p1`+mqND$1J)"Y3hJd#NeRL1rrm -bZiCmqXI+N!#2RrU0Uj05(`$bdlYm1r-f$UX5Jalb`VI'8@eY*NHX)0M+c59p'+, -352S%d2bLfQXNKDVK$Y,81A@CNhR5q!klC[Lp8h#a5%'0J)A$*c5T%3f)*Y'iaGh -+%dk@NIXPdLhXd!#aA1rMe"KAp$35Bf#mNFMAM22V2mqL8kUE3pSYb)8Rh!Z-clJ -Hk)N[B3a&mYPlN3rajiCE2TZ2r2R-Zj'e[d5`fi4J+H9G5Z+&)`*ZLQM`TRU`phk -NTarL$VlPEYq$JiLpM-A1T!ME29E`HdieK#paSqkM"2m*0@crj1qmQA%MG6$K4cU --AK,q@K,j#4)i"Z#d[N3#Va*Gm-XV&'(2'ZIeS4UpfihHIi,!)fY)i#Lf,hmY)A# -qpHN#rh+B"&i$d,c'RImlVlIhmq0`&!JI[5'iL,-jpXl![3"!D#qF#(TB9&8lDA$ -4-Qj`V4L'P)Fi$(EQdDQZk#SI6985*X,,)pp!K@"@9S-F&-Um[IF14piMNm%YL&F -+QmP(9KNQ6q3KZ&T6#SNqIc$cV,1Ab5jF)PC0*N'b+V'mCI*MFH-ZrVN00a$CjMC -1*"FNc!SAqe%YQj9[&)QhQj%@G#d`E1Q"k[q"8p)h(iKQKB!TGr3*)`4*-kE)#+Z -%#(j8Ih!M*)8NB,(PRVLcRiLC`c#j'FM'chQdSSI8l+Q'd#`)D3TXJ)16Ckpf'Vf -#`("$)KlmFr16-,VqpCrR4"8hJQH$dbr8PhBKCS"`8,c3bdlbU)kid&Ukd#XB6,D -5ZbXZK)T'[S%,1BkjN!!0(EUINYSKikEX`9$#[AcCc!YFPX&85B1dN!!l(#8S31` -I8U&b!Nd`!-'XV@*QEA#!dGE%%&[-3)9@Lk&XI5&LMAD*)@Rj"eh3#T(@%52&m'1 -G1bHF1$,plQ[IYkR$Jb%p(VL($A4MJ!%+k*P*-mc$JT@U99LTk`NfUQBS'h8PSUB -`0('haf5fcY&"KU!fGXcZekI6H4l8PCLQ*M"0F`V69$,)*U'M$Gk8'))"ke#BTDB -%Xe4l-'D*#k-)KD&PQ$9#0q"KERZ%%XIR$FaL+TmeqVa1K1+a1UM)6B!pB$jTR@e -RU[[5f@rp#`$kELCPRV#D3[2,&2e-U+%L6RkeB"J#HG-+!CS!e`5mBU%M(X(VTUb -QX&&9Jf`8'RmQD9#&+@*f6K1,9Rd3&UhDHCjG#-'S9AZDUF&L'1kh8%f4#D(FG9B --AFp*l"G[)mN-Q0L)38-Y'cRKX)BKXpXpeP3lXX!2)5@FmU4`R(#4'h8p8!J"LX, -Z*+F+&%kX#VI0h#A6LTU"*,$`dG@XKS),0*KYdP0-43R&[Qj@&+4(CA+GXLK&D&' -+d%p&U(%4qJHHU*M6&&B3bU@YUC!!jk$j''E3QLL`0)C3lQH'X(A)N!!&(!jaemD -!Y#FVVQ+,lk#EBPY+S(@kl8)QljV#B-)TGNCfrp%(MT9Ah6%!V9$*ErjLmHSi!pk -Gc`6HI&hri"XK-)U(@M&jX1L#K6YM4SJhRhKX$NV&2cRrjJAqK+(%Sfr'm1N("5P -826d84j-&L1kR93bZ3Hfa'SSYbhZdCd*[[Yj`'T2!QcI5$Y!'8mDkLjrr$3bb'mE -58Icjd`5VC[*!$rc!0c'FDf`G,[*Li5U)(,[cV!1M8rdE$&0VNC-9deFZRCej&Jp -Ga*r,EPRrH3aZ5fiNP&`iJE68aGL(!&eZc2#!MCq&Xra+U)`,5&eG4S*VZ@I11Sm -"@mjlrB$#d5"Kr4Jr"SE'XMD&4!iDa2hUfZ-,XI9`BQfC2RZl+,E'aa!p$BhX39I -R`Da8Cq)a-r&BL"q$8`*G#%--*3lel+6&)$$Q"IHMJUQJE@kMKqIBj6E@LXHh3Cd -CU"D)5`5Q-5I(2r+!A6C(G(8VKXR9e5eHcBLKK,(J"#Rc%*-69V#*SB,jT6[a%SP -YjfF5LrVS49J3QU1@VG4IrjUGql5dK8ED`["4#k0$&UCG8*DN,8`GZe!H'V)`j8` -dLD2AQiDm0Y11[C!!GUcpU'-[$9PS(cb@KfjI[Yli$,q)8KI82aNCI%J-2X,NV)! -80(`qjiX`+'ifRXT(i16JmM[D0h4-eflSQ0@-C2VJ)c``0&M$piJCC[#JQ9M&4J3 -QH@)"haA&680"+h"#H2&+6"Qf@!bI5Y"ml$%H3$Dbp6H#k3#,BbUGI[(U-jVSiMb -J1"-+J!kK+c%mAJmb8%,$Kf!Sq1&PND`J&K2E"3QKJAK[5R-%M4r"$&9jrlM[6i8 -E#hF'4B&#C8k83@9#k35[[6f%"H8,m[E&4G&&&jPe@RF5,UHB4-U*h41[QYeCBJ4 -RqD#NqECA$12f3NI*AB,pA(HQ6f&%JpF'Mj1Vh#iLV#k`HbPLMSfhK`4'4aei3J` -J#RB*&IEf)q!i[AB-`mVhSbNRP"Fl`r*"QYKDl3YZE8k%3HZ)[5G`a1@eZ21d&3f -"bR*bi8(eSc8Ff%)d0fEbDSi$%fDL+hIT&C)A4$(*eh"8E!8V6Mc-`a0$8CVT3DX -`1lH*TM#9j!*E@6$9(L)UD34Nm`Gp$rVELGbdqrDQ"c&XK-4SpMXa5$a8YCq(J4F -EqQS*`4$bPccmqF6$6kBrc!a+k5+j012bU5i4E"CF226lIdlrD[DC#QP4rMN#J'# -#*+fmbLj6NE1#ID""[$Q9QK`9%#(qF3-+1kT1II(*CEQV4ZMYdXbi%!-[pHJ$,Se -4H!2$6*R#N!$j3+r*JfaJZ)dT)j4Z[+R-b)2#L5,Rpcmb8RFY9bTY(CNmA-FeGam -2UhhABZY`jM1!IGY12*XA6C4S5[md#%e0$NYTDLFJQUG@61ddEFA85P-$deDD1M% -eD*V"e%R6(+BCQQBacG&d'kCCQLjLZSfQ&CJZdM52D390"c$0dh3Fd`'D6Q%k6P- -ATP-dlFA84G-q6(YT1J,R-fmQ3-f&j,pUQF"!al-$dX3I1rjBmDF9I``M-)3m*dQ --[Z*I#6%k2k-`mYIC+2#2&9c3eBfZ4+X[*BBdiQBLh&d16#lAc52)5DC8!@`#Q(, -p"BaIUderSC2eeCHQVa"CAiXrDjLXFfMT+FCY'fr)(F(`F&pmXTSh`Dr3[E[daIr -bVGZr1RUaEjDh9-d0rYV3[D-JZ@YM)A)050'!Z!DDHY5k2ekV-U(ecH'MJ86SYS- -YFmF1[Jc+2)K3[3-TVL*RAVMbIq`Q!f@)T-hV+(Eqr#rL$))2+YKDHUaVK+##DJY -IS[SkQX5p`ma&GG-5$B0ChF@AUqCNF20rR+fq(KZKblr'Va(',q$3HR(SfM("+[) -`q("D6a!)8M")QZZ%3LQf'fHNXeGT3&dh'XH!4SYpl2aCU61B,JX4MkRecX%3(q3 -)`Q*P"HEb!T3k3kJD0M05#%a9C(PdNp0E6hV[#48,KDL`j*%+-Gb2,qUiTAaQ0IR -5i'HN0j*'V`-K%9pLN!#CA((D%kF,TY+)h!&4+)kcA%c9PiLjNY9lfC9JD)ViUR9 --$0NF&m1')*(EI2KqaVkeSh#2eD8aN!$MiF#DN8TKCf8-882TV,-FH$LkqC''VZQ -bKUjCGNIZ-ET9Rp(,!r`Xkr!YMQTZicN,T`EG*SDXQc+#HP%TfkaNNS&#ZL-e5N' -G&"FYJ2PkpVM8[S$,S#%V0fK*-J"&B8k2dFA&B*!!fh0kQZ%U1DebeladEEBi6F% -b8!J(@KM)Kd`@erX&e&B!!`%ALBjTE82(EI'!QaiBbXMMR`'C9)BBeh*+SR`mFB4 -*6)*MkjF`FY#lFVDa(3l!IL0iZ,2i@YXj[EV+3A'`9[INV!ifKSV*r1Yd04"DS!r -IjX0"d1`k3@0)$@DS)LLrRXPc!%r"RQZ8hC)UNIJb1I!djJ("3d3-'FlFHqbH$1- -2NM+2SGMJ$",fC-K0LJh,a1"1&4bQFA*Rh@D'G6,b-3cF$e2Vm*fL440BP$aU%F1 -l[1L6Y%86@046C$lb%8J)U8&(23TMBrmYCLaL0kq+!504iF!U#M1r,DSED"`K8[r -Qjp+(6a+$NqU#r-qKJLc4"4Qp`9!"#E*%%@3SAC!!d8[d`$'#M,j'JJ6S&*d9JSa -1*Bk`*`6*#Df8,XKA1i[0B`8CE5C"TR338IYJU##e'`P"PLK3M%KTe55%'Aj9#0- -m5TKfQ''6NdeJU[!FrdqQPL(J0iA%E3q%BmlNm4-R3GRRB!#HdD'#qXp,rrSV&P4 -PDCUJl"!8rU%Z@YE-af*Tr#",b5bq@TDfY*Q@DV68ULbe(l88j*!!PRk3!,E8bN[ -P)9VDSbaY2XM5fl68REDdKjBfdG*@CDRe@)2%8V(GZE5PV9KkPaD@[[$#rdQAh&b -GYV!8#dX"TlH)If)NBFaKhCLVG@0Q%hSbhCLMC@6-*810@3a38L#icJJQKRN8d0j -@e4$Q!%LRCl[PQqeJ5lq1,A!3&"+2$"emj1SLJhj2GK,8-XUXmC2AP6#T&FaZe0- --3)J(S!UEbk$*#&S(`FhcTaQ%b8qH)V#Ve@f))-A$JJP5d+(4FGBq#Q,N5@,a+rN -Idj,eJ(IpV[0MmFXFcXdViGaj0'1r09fll*E[06JLD"YZq9bM`GjZ+2K!8A"h[FX -bT--81AYr!!A23bDbNi,VI'kM'Tqj0pIqKA[X2XM-*KhC2EdI$h@+KqB3M$NZ82T -4%i1Rd1E@))`*Hda1-6d94f!``"rd8)3!R6#p4,S+`mP9-*(`M(,A-Pa`-VBR@(E -pNjRq#6p6JT9r+SA#d"6BYNS(%RL3!$'m$&'B$##3!*Q6Td++%+6mFa+$P"m#b#, -(2"M`p3`F9kL`,DFDDM1de-i,rhf!Nb(LFV@M1,lKRhI5kj6qqCr,kA1(#-TTNB8 -q[C,fD3E(p!kT@Zq3!'T0-3M048c$RBRNB&,m3db!DL5FlIhVraZ(#$4m+Lrk$UA -F`NCF$'A'F%`D["!Nf0VDM)GiX&F!`@2i9b8i4BG$eim1$XM'$aEre(DZZ1IjHKi -`*hU1r9FZQ9[HY'"BC'Rb"c3[KZXMdT,#C5Ne#)cc2hl%$9I`m4M)2'S*aU3X0[Q -I1cRBDlD5iTkMAk-V5[lRm,MCAbc'4[,becR8Cb!dSba'db6TeG+f"[&,kc((m$# -T+G&e!3dJ38CZ*LBDLD!"--%9%c$RGU5EZ2&Mb@"Mi24KZ!#3!b#[384$8J-!60i -293eQ9")!)H,Z41qeCchUV6QDiPbDSMr+H4bPpJV$1*h5aIB818pcGjc'h,TGU,C -h9m@f0feT1UbEUE4+%CDTi$J1`lSXba)ae'h8DCTEPc8*B9K$Q2VpB3`4Tb10D8# -0)rhqSlAhprqqlqph[q[h5TcRHIECjbXGC6i8!I%$!!'3!`!K"SY4,Jd'r*&l2kG -!5Y!K6ALZ62T$ap*I*G!!((jh8IUV)HqI)L09+T@!bfDfAeZe@$S#B-j&SFbCVTB -QfHIHiN!S-Ih6N!$hd9')3$m0m2-4*L3R9kCr0$NJqj[p+-Sapcp1VM5X)m3HGcU -4EX0CXUGlM`eCa)#aJm)ql&V-[H8m`U%1'IaZD"R#2qIF*6-i-Rd%REASm%mZlLP -b@d+C8i-Xe,lR9lRldiaGq!PRZCfCXlcQ,(HT2"V+R(!RhBVIC82S&YQbS-PPHpS -jbjX9C*1kp8PKI4)b*pFhBG*"60)2RD8kG&KeD-NXEh#&(#C(12E-mSDmGajJiYm -&e*T3jPf,QC2@i1FG$&FkZQ'8SB$V1rKj%8(Z6af(X5`-H4qRLBAi@4Ib2R`&Mi! -J6IF#-3FA&q"L$lXi"cqhKlba2PV3)h5Xm[-fK)(E6XK!D*'Bm0-el+Shh-'IE#L -0AZSf'2Me#6kJaqI`!DB0cq8$E+JPQ`q`c5Xa2U"%$2!"*@m'6PL5KG`("(`QIG[ -ZETQ@YBm0eT&cM5d*al4rVa8,3PYXa[j,F)6MZ,CaIfK4KLf)6NrQVh+Y3kRiBfi -VA*CeMKicl%-4hSIM0Zk@%,f#`MPCAHMX+54R$!!8kjeAc6ZG1FMUL+Ybq`JlIUI -UH'QaLBdcd6V("a"@a`UH)"*Nb6XJl,XI[A3e5J`MaJXBb[Lp&@99lHfqdKUIY3b -ee,hhrU,#9rjaBLaPh9-S(1-S%1&PBlZM&XGf*h2hH!cj%,iq*"AG31k'@%BGY@c -3JQhdSiJ&h&Z+5B3c*b`ZQq*%d*L(i4a$*(4)a)D3!&Gf@L#Q32KaPB3aJ)8j,$R -Uk%JDRM29*#(B)4K2h'i,"GM4GGV#a&Zk%Z+082&kHKV%4m"YlC!!3LcaN!!hZT0 -#XCK8+`,6&@AP*iU-5Nea%CE2eC39PlFV4FUl5XQTdLmV6VcSUm3e$('Jf(LLjNY -IHAPaZBlb&4R,'R5F#-M6BAUJeh&%Fepc'1B(jBLaIrpECK0cCEN$aPTbN!$&9TR -$`VV,"[4RNYY3)Db6GQ)q-18d`qef&60!m$fFGZLJY'I9LJ2JQJ&Gl1+Hl(4rdm3 -U-4JX#(3%Z&H6ZGLk#849)%c1#Y!a%3pB3LQBE1E-mh3-LN-5(Ed-L2eJ2TNc5fK -beNjN5@QB6BF#1%2-rE50bm5)X2LHiP(bh#8lKR3d!3R,8K+BV*KDK03EKd"VlR5 -Ac2V#AE*p2KBr$'9Zla426p!6!8ck"UU'"TT)"Yc*96X'fR,[Jc")1rkB!)4VqN2 -1E6#p$l-TQ0U@bpeI)-51!8!$)S@069VBQ#9bELV)$THYLX4b%i3`RBRPHR60&f) -CV8f)TEL5M5X84#46*F`%r4$+PV"*G!SK0fF3Q%PBR5MqaT!!ie[SG$["4)c"L1H -(QmeGLK2-kl)M)!TKa%09Qc%'aeGD""d&l)P(NVN@@jEPlhpMCQ43m,YXbQdAL+8 -0X32,-2e+9P2`+BkS`S)fjNA)dN4JmNYfDBX15,UJ1(A!R$a9J8)KLP4lqbQVe9G -8T9L,+j6LjmU8BV05IUV)k,[T!S9EAaDE[f5hp!*PMHU!)l#dNFRNNp6XULiUk&! -Y5)$U-6,X%kK)q1$UA3K4@KQ$S33FL"GfFP)p)Vi!VQVLi+Y8a#(+"q-%[&6a"*( -KUek8QG0dNqB-6%!Xb%e+"'cbd6'3!!mDUhXR"DYEVK)U1RLDK-2FIi%Um!)B[`Q -jRL9X*a[F`aim*`CK1C)$NHekm0Q4(0pLKbL%[5`C8iN#kCBL)8S13`ET-!5jBbN -",4LI`Q$AT#JH(rJQmG3iU*m"'c9mS4PVi#!+H$)RSE"`*k(JpCaR6YUD+(Jp4e9 -1BKHbmiM)&DS1!,*hZcGL%ZkHaiVGb@%ac$k,L9r`5cR)X(pKdB$4dmd1ZL-"M*j -3LS0b1Xqf5Kd`%++Ge$'qddXE4VC!,AaKYmjHQiiiMZM#&a(#eiU1fah(f90C*&U -X`1XLH*J0%da@%d!QQKUVGCkP#mBq#%I-dD9h#SBl6Xbp3'blE@K66[BY)PV&8cY -q,m4!A"($"K++ld&3aK-2ZCLJK#qU#!*b4Sb4")19-k6NXf"IZ3ap*'AKb$T3ajC -U'fdT[e%LDe-Q%TZH6R5iG1'qL+#-8mq'a)YeZFpki&50,bArqSSC@18(U)[2Q4% -EU!SriPALEkUT%QFc3S343Nhh6+lD&+4+lckhM"(V["I"H"2b8DV"GAd`LTU5"XJ -b+(`ac"FK[[$`4C)[)Zj51a`piH+(0$G#Y-344cTTG*kf"4@Y'!LL*+CRB4(KLfD -qD+&&d%K99&1CU,#T)UU8a%3@ICJa9c+B&%VVHpkdNLjVc*Y@l'E93ZC-UmJFbEY -CdBD#`AJ$#[X+86fcUR`EClZGSUKcXKY6CeELi(149UNB6e[I'f02MiQRHe92Ml# -R*r$d6[ldK""flHR8Z+FaG@BC2HeG*jALhBeGiB6B&LX`lRd4YMZ)k(2"B8R(%&p -'`[B(Rb@9,,"VCNBp894ikX#*+UA)pc2Pj)(LQTH8DJME1(*I[qBV29&44[aFGEI -qUmKq,f"UF9bT!3Ap(P9@0Z"i@ZiQi#Ac,6DSG,d,a,[)ZLa!BHf,2#f9`ZMA[Se -+l'RCMQb@"CQXiG#LCJP5UKYU2G*kU@hq"hH!k2ff$$&L#B*Q-*!!XNdk+[RTRE5 -JM2#H0hQ@L0!a61d,,U1MN!#el'XGFYR!JQlh,MX*B+9[5!!V1Tq!P3lJhR95!#X -GBT!!2T-!9[4Z0E"SkSB"!TCir+P"4UD&qI$9X)`e'D3c$mM65VpRQI+5M(b5ijI -lmmcVXi*mfSf`4&K"3Re&ULHaDkD2dIANlr[A'3cl,q2Dp-2R$9*F216"TX86!qa -BD@MKfb*RpLYG'6DK`J8&S@M2N!$pH0GKrhX&4`,rIqGA6Cr8IU[rJ5Yr(IYThiq -((cjh3EQhlElNSI"6N@GDRflHdq4SHIc4[h[LEhIr6FHIYYrCr@rH[63k'EakrZ2 -VllZ[13rZr8R)C[R!Xrrd,ilph29rMrk2M2rfiCGCTdl@92R-aSB6qeik8&*8E2f -MmSUbj`Tr9[VR,rk['rrcHhq@GZ[0[*b,Cpr1IIhbXfrmepIq)R[41fmYqpFPrc, -l(eliTqIrqjVrpmUrII8rIrjI2[hZLXr@IIZ,c'hr-I8lXjBZrrZ4(icpd2Yrj[f -(MrlpPZrrk2Hhrq'fIlcM2khqc51rHZb21hGXfVcebBfrR[qlZhmljk'jIcAiP`X -Hl2hPVQm1I1fHqpHZ@[RepIqmiDkCmHQTL@mXATLr2GdJT,Hi%"ccZ5+PkMQ@kDY -5"fjPR@+G8"SK`kZc96k"UTe)0LUJhJHJ"PNSbAJDPBaaH#2VGG%%mHDpU`bC[L6 -)P`#b(!%5A4JIj[IC5fAXar[2AV"$#8b)1d)KRR9JTkh5XhFIAV[Z[*9K-`HB-3( -&TY9ZX6@K8cR-ZTh1@fE6R[FC5jPK%bjEE!MG(4q$iQ&K0+[)N`HPR,35-a3*F*! -!-V3r$dS3aflq`'H@@@bYG1"aeB%IU`lX)fC$cjVA&8VR@E-d0(0'KQ4[@--(F-K -6di+)e-1R#em"FeB4k3XlS5$iZ@22jJB4&&MB#lHfJAhdkaPE4PM8!Y9(dkQB(f+ -UUXMS%T[F$I3B42p4'U$c$8`G9Pdf'3PBZqRLKC-@'kke!p'1DmYa,BcTIN)Nf%j --TN6f%G)HMbarVr0@'1Sa*R[jC1SY-MQBVa!3bLY)dG2khJLV'NCBeE$`94@lf8E -XCZ%M)Hr+'F&Z&Mk#Rbp8l'DEQYf`U5mbGS--QKD%-S8@[EpbBHrlpp[pNB2)GVK -8fiZ&&Ze2qrQ@mr+"8IN%8ij0A1`2,8*iC8L%EM3dVN3S@'&A)C&)(*Z-IpJ*JYD -iM)3F(4jXEd[)Zrie@T!!B%4kq+B*24[%+Y3(@8K'2)$$i8JPhT&KbF#H1E1FCB5 -EM15`9e49k8I-BI0#hP@hFiI0`mrRUUTdGCc$D+U61Bb*a(fVH3F"A1%$%KNZXL4 -bY4[i!1*BHje#[""C9T%@&CFTTiU8bI)+Ap'*'N9R(ViU"85Gle4*A5cNUZHU8Y2 -JUhQTiVN5TH4%4FQTXTU'1iQkY),!V$T9GNSj8D(`LVG1GX3)[NFi`IHlDJLq-E# -YPBRJPrpcN!"AMiK!"`aZ*X0+4Z"45-6%b6Brf*2*BM1l@9!ZiAUc6KkYGET,8(3 -&HB3LAK$KVXpT6"lGhmPF$j9D&GRRj`IeX`bmqli'k)S'G&,`49pjX9*F$P,&H+V -X4+&21IQFfH`VCe3(2+-%fGKAGDd),Y[2[+k1h0AVY'XfY3IML-j@FNXb&d,#3Mk -#Y$bm4L-Y#bSM,CRL*L-Y`6T0#h,$VE*r*1eN$!@UP98+H'bmjp!q5L#""'4L2dh -0cR&)"@L@P8(3MiZrLF6IDQ##(c$DIle1pZ[ClF4QR8#EDjQ#9KS0b*aK0@6elmF -!M`E!b!-QNe"T9@pd@!m[3!&4p8LhkK%2Q(br0kFUV0Lc,cUN#*bk8Qaa0Uk`V+k -G*9-%DA0qKi2r!9dEFqMKp&jPL0LY6S"bBEfE#qXhUa(@`AKKlFUHA,ACmK8*Di- -ZV&pE%bqXKfp`BFeY,+aI5eBRV'SKCFIh[eaaYE%5ASQmRS(!EVBd&YMMCfp@B#' -+*LDZ1FB)`*hR)$$lid%0`895%q)E*i`-3)CYj!LSqGX6,,d5F@@'+m1Ef)SZS#" -r5'!Vf9L6f0KBASh#VZfPCKbX-+Qf4U+9&A(QQ3[BT!K)q6jYBT`i0YiiK'q!#q& -ij8+i%+C$N!!f8#32mh"61+p8*Jm'S3,Uc$%H9Hc39J-9K!$4K$@+d0#%m6S6S-c -aGaN*AN$'j`@j2dM,kK*,(ZLG`*310XAq!k&11V%J,I'-fBX'+2R5lVVXb3RNd"% -PEl#+&D3+9%K4U3Yep%6S%k)BX0XeKl23Cc*LYbXpJlP3S`eFqhkNCfP16`kaJNM -,A[YhFZipElG(,QKA8)3M2)4+MNmffqe)BTZbej9VqZQe,@dphlR9FiZZdj0Y,F0 -bD9T5lXma,hJQ5!p&[S`(YN1%,Vf"E-ATEL#5E4aCqFhHC#lpJF%dLDaTIl!9S3D -UN!!$b5p6C2hG+5q!b)i*dkFTkE+K!B4ih$YN%N)ID0#%2P"TpRma"CN!!)-3@Y0 -m1(daFrTL`@M"qJT)p9J`6C94)'!F*[CL[-+-SKTE-SR`'jSHU-4U@SM9dU&Ua+S -MTD110'L1FNkZfZUQK'pehj5M3LN[-%IYC!3E,iTUGrR6K,Z1Y0I[,TP)&(1EPZK -YUU*24@`Z#mUa`EM&T4[Y[+DcUSPUTa8PR,A8cThe56A1bPBjUd#)dGE9bGa$c(L -M1&ff5PbLL%NLQA*'*$2$9RNL'l'YJ)TYm@dhQQ*Uc0MBaJ#f*iIVhKK0%K[V@Pc -raLkN22TPE8ihC$hTVYZ3!+84"3'%a8bJ``Z-6@LLf9T)$6AEk%TL#a'3!#9N2M! -@2*!!db%pH5-AIA-M3iSp[RTI@XX"Hk%D`!lU!X60ZGZ`9DrBDU@"3(+HPcX[FfC -&rFjc(+'RL'KTbdCeECIfm!PQB1ha[+9F#kY!iaKbPiaY!3$Ak)EPmGPLZq2[M+4 -CE&9pc&a*L$GiapNNQV5"c0L,BV&6&FLU$Aihq"53!-`NCLKPaKEZl[%dGYP,BEQ -8ce%9TMM$&p49S+NMaFE+D%-qNc,N5A2Sb#*Z6UA"bD5E$(m`&#KN#KM23$Eh#'f --U5JFi5"N#JUmX"j,jVTX#51UB3%j4)JdQ14L6(Q-0EPE5+(bm4qa6(2!L0!"$"( -6!XQ6XG@$**Ul%@$SB1C$kTc(1dFd9+U,'[ePMUpc5L*,M(BHjPr!9"q'M!&YkZF -CA-Q"EH-1aCPK8cZS2Y2jq1$0QFiPEHAZ5SVbLc$K`RaDeFS+'81K58EJ(3)L-p1 --Vh8*`k%hHT54(iqU,pBNibCPMZq#X64!CSD!C!aTGM`MTqCH929#BDLF!DiX)P( -`B*)clJC`!`bd615-#RZ`(X#L11Ei@+C@f3YQMdcfh!`DXQFfa,(l!(I*hN6c,h) -$&4USLjV-`S4kP![A@JLj%qCrNq*IN!!fQ%[rVmhYc1dP4P!V+M&b&j,A`T5*Z,* -!iqP8Y"HYN!"%RULV-RAeN!!jAD"UkY2"3r8)MN928[+RKkRjqkD,Xh$dbC!!F$8 -FFV#bifKclSS-%KF5H'q8'GHBFX*aMVVb@kK-X#SF%9%",L+"hVT$H8ref1ZpD8f -X@)mhK#dJPqhc,l*KZQ*L45+J$d&mSVPJX`ahMCfYJ8&e,1rNBKL,KpM@lD*!6*Z -J#TX[RP1)q$[#3P&("3U66-VKAqBf5qAJMLd4+,83dCGq0lpJfA%EL9+'40E4lUk -!5#%CkI2%"ZLb-+$TKie2X$#05$*lSJe!Grr4$DJabMid@VEcVHH*$*SHLK29)JP -Z'i8fdp"BIj%,+QRQL@U!GNA&qKA1q[G8c[VcTETkfRL6e42,%M$5&)8q#G*8S8) -#%pqM6*P(98&4)FL`qADT5Ah9pTVipZkXCRXQA8N%MDi#j3ML1GmdpQ'M@CfT`p, -$LH##afA8,e2Ip1fUR1bGfMZjkVHhSETDaj4b62Ma+dj,083"QmU)JURfqLXfE,b -E*q"D03PS8B%(9FjGScUCi'k`!c%&3Q91KXM3fNddX16bSEr5LVHG*Kh5*Q2T&k3 -NHkj09-M6EA@4NJPbaUi+0&r3L-+lR*@40[`B%j(HV+Meaj15GehR5GIGiq6ZqAN -elV'#XD3M+8Z%f+'#5GF$"H*!9"hHKcBP0X$%1b+1NmFUGG&ZHM#CbpLZNehaqXp -T3c`iIhjGl[Q&66[1kprYXPf5(!%f[@'`j8,FK#ZU#9!2f,#VK@IMdPFiKV4NJ#a -(-b@C3""T6JBccqX)4F-)p@T6d-L-%D6UZY`DAHG"XhmX3F38T5qfpUccl,jJh)[ -"#P8S*8XhKmdr$9HRAKVL"M'SA#Uj6(Q!TKeYE",lp8B+TeaU5PqF5-MK$hRJJ"% -$3[QZjP3449@,S5LNQ%mFB''6keM!H!lFb`L3!2cN9%hMJ%Rkl+rB29l029jV&bf -CBUrAdAd*rm3I5Uc9VMRY"CA6YM#RMF!0LZDd%D'bHH'djV52iTb'k4YI*DH*SaK -38P9!QGdi#!keAZr',GS"Xr$cI-KlENBl`"Yh!%d2FU#N*S"bI,8!b[B$+B"5Jh" -9QDm4@!6f6!"62FM2r('Q8-T*@[Fq5TKp(3Zk&-+Y!V'D#K-+d@1l,h$8mmkVQ,+ -AQrTe*iId%1+6'EU6@5!(DUS2CfY1YM31)fkG5dlQ98"!*f&ePaiSVU!%8l5r8GU -Tk`b6[PC21JZ@jS0J#'4M)f&*$D`2X!C46Lb,SI+XZf0S(VQ$'B9B"Q($9SLELcl -K%%M$0`Tqapbb9Z8@Mkl)X2@kjKBb"+k%![D,QPZZ0eCQf(`(ZB8#BMZ`*9VSVJ( --Ui6U5m)EK$a$Cmc4RF%#19,ZBU%F+HFUhAq'P*&M5'fc+S30cP8Pm$BpJC[0,)( -GKPXmLIH%[$qHV59aV(%50qfL*!VAkqlYqE#4Hqm@KCP8el8M9h$92ZqQ'FfPp!Q -E34`Bd3jm)Hj!QPkSGLN,eQVL"X9P)9mX$LfFqV2b%f@q-h!UHi"$kNrQ5B"T3i) -44AZB!Q2M32je[4MZf"JIb2rkFKl)(feF"(GN-0H)Mfd%e1S[m@@ZEK@BP!&i%"S -Z6R$iUL%iXM9LHP[#V+84`,AeNld+qf4)D[BaQ'Y94%ij5*&D%LC1PPa4Am#RA(T -dK(LH(CqQHJ$#R&p+i@6aQ1&$#pmi%)A8LBU[C1QEk$U[kMSVVL%3@,,d(3UdUcU -Am-iH$0$J`"#`*&c4`PhaLKC),)h5SLG"aXRbb982GG3Ir(QS3`[SPGC**(r+`E+ -d'V#NaT(X-CC"%TPplr%"(,D'"r*%d0981GP1dlLT*Er1,5hR@rTq09[DSMe2kP& -q8Sh$iJJ2)(N0&K@kKfA6UDJ-SiZ8+HfmbkjeGD"V@0APelT1SkY(e@A5ZUc)5Ji -`-)SZ4HYk!ef2UET'YDi9k&SZ`-UkdV3Z0-j*Ii'*F"3IZa[N*VTHYSM)!GlSiT9 -+R)Z2S@MN-cf6)+hTZ"He)@hVJ$DNlAqS$C(-G)XfK$[5JpS3ENYrJS9&b$MCUK( -R,C@D$$C`ie@V($$E8BhhDQ(e')A9!f3S+$JTSj'@1hZk3J[4Z%P"'e'A2#P[b#8 -b96iL"k)pmSV9J-q%$5,-i$j%(lM#TqcBNc,D`3**Mj%#@V5CGICSRF1XFaEV0&Q -Mr)NZ9#M$L8fF6U-1TX#f&PdGUZdPZMDKkh5Lbj,S'N1A0G&9EZUmTA8qMmih9*f -+UM-0R5Y8RD0DCa@kENpdGC',p!-EXr44RD8rBPFT@DV8kiM)L'IT[lP-,&d!5'I -Q&ApHFV,i!,&cVSf4D)*EA2k6dpGr8PcP1p$HE[59hB4D9li@$26+0NB`Q[EXNlf -'I!)r9E*S@0!U"q00#+KHHMp8-fTZa'5!lbf-2N!IHaa!m'L3!"RdSZBZQ24lXda -Xf'2f+d-2jU,blRh`@6TiHfjL+MC`KjKQh!*$d!#-TVhUi)Cq[$R!+i`9FP$rF*@ -+"If)Xk!rVSB&c@rF21PQUbK8EDClKGRMC9lA&#CUpkH94rrbXd16)P`#YEPDaEi -r"i'RBC@a&`'$cVb0DD),j%([SDY-UD#b-%mR6qj$P5GhZmU!$PDq86IFi%mrI3+ -3!*ReXIPIjMSN9k2eD`8I'kNqQ%12F80mPNLqUal$%hd!E'm%"F3%*KQ!FT@rMB` -jdIfhN!$i30X!b'-f--md-Qdm)`1GRdR6IELQR"#KZXRe!BN1dijXkNlp62EA0!8 -r!b')#@h2D-rf+Gr#Tl*b`fRXNApL6iK$GL9#ir4Jb8ip#!L4XTHN&+Qjh-Rh9q2 -N,*SiZ@UZ2@A9VSIrp-lk"B8VJ!cL`[AkbB5jecAcfKhe9FU-c5$d-leA-eGQ6R2 -6rA5l+K`%3RhkLFBLApQ!*HP49XNNVMDaDNBm2kS+!PAHQ'b#6+b8JH"AL$"VBYQ -0I)lbD1i[dN+[KETL1b&%YR9k&[pm*`dq48-H-D6%%G'mPRGpb,V@mUiEc#J6-cT -j!bP#,Q2KD%hX@8"NJ(IQe[(8X(P%8r9%m[9YkZlK(4Y9@qf-fqTUe3(@Z!2'+YR -UlI9XpD-kRSVIDT1kB5@TI53&@0C5%jIT+Zd"U("-ZpKRLUMM#pBa)#S[eM(""fr -bl8SjMk0H8#cI3D0XqV`+cplPmdZdH)eIcYFZpk-aTd$S9iHVR4``EfAUQq,$Tq[ -*H0"c$a'a013E@+$DhKafc@3qaa'[TGKk!!UmEPAcd2@kBja['BN-),AIK'YQ9+j -CVh,0HP8bilFF-p)R8[+e*,'Q81kA+#Jh2C!!FVTj8r#Yj%(Aj801D8pHMYXB,eE -6LrH6+Xek-CbLJ-Ik4)-Y%F+-DccAN!"SX#@DBLA#JY-c-(bK8MKNS3U!'lNbTjR -UQ5HE)DLJNp+a)TM,!E51D'mr8B6'dQAaEAR1S-(EI0hTlT+j4r@QKe1lQ9)H0US -F&0ZGDNQiKJ),BRY6V3`%F`4STNLaE4J'A!,9I$lP(*XbAlKk+TP`qe5A%""MN!! -MBRU$XUPDMJUNQ0j[hS4'a[4CY%hF`$[)QMJH9)%V(8!ZQAXXB8+DfXf,FcV)VQD -,1L#I1G90,&j2'Xmkp-GATBe0`p53!*Bekf0#$Z1TL9!FB#iS4@F4B"dQ!G+TS1V -#Qcc4T24PiNJKQ%G!fM,"h2p1LJXaFfIm%@T6-kV*YEbkr%Bee@8ZVbkYp95AeTZ -U,MAbGA85PaC6ibQ3!&A(UP&+DGBRJ@`jPQK)YIT'hHU$LBC8c,cSABhQ,G4%#Ff -4Q[ARR"G"!*fMaNQ+A891(D2KaV4$(d[&T@UDa-fq,BN'@P!6E!kQGZX,1eriq5, -!&bDqk1H,'&m-@r)#H8b"ES3TXq$c6T(M(q4BrGidI*2R"8b,)1"2$@e``C-DN!! -D+TS#eC-#0C3#C8q"1Ti#eC8#G9K(@FL!,`hl4Lj@a9*ZMLRE$'$B%X`ZM%,aSB@ -kP,rVcZp-lFjr#Tr!9#%PN!!55,X+D3I5$U4IKI3$k3FbS%)'J!`!D9)K68#DJ1a -A)IZ"l!FbTN,'J)`"b9d[*dUNiCJ!`S&cP@hDSi0SJ3"4p,@Qiaqm,8!8[8&Z')B -6i)UZ#,QLT@fI20E@%T!!pq80-i3RGDrNdk+N()02fR4&S[V8*&39ldYVEMbe4aN -kIA06Kj5KBcFheDi-Z@jZkR&Pk1M06He5KM,UQMVdB4T0ac5)8[86)9a[qf4kDPB -i)9U0A(Sfi9*2A[-3a'dV%-HSXAmB%flJNcN!83M+AY6d*iLQ2ffmiH-9dC3%64S -,9FdKVp"R0HJiTFYc&XFN[jAD!3eLHM6F!Y$RM&hdc9+kS-`kN@#9bhX%Uecqe@T -BjBTi0[H(GbGArGAXZYQFQ"62j[k`j1@cZ6r-Ujr024M(jKkXP-dYR0$C($AaEf+ -+q(qLV#k(@&fVrB1,9[rBrkkXlL*MG6R9X,UFIlGC(4TSj9-#``,N,8pCmHed1er -kTCm[!c,!Pp6-35cl@H-1@XCNM#q(jI$lpd-Sp5-q,j4CV3R(YU*"kF*m"`Ua8%D -D1Nd)6fS'0N9&#qlHe(SBRa#JcP"B-V9#0QL@%(YqUA8Sh19pQj&iJkhiU$!D4F( -BYEk2UkYGKiMVM)'Dll(rE--rQr%BQQJ,"D3TGj2Nba"D5B-YB*2*6plf-j!!dp- -q,fpZKDHr[P%d@BeM$bE1(KkZKMf-T96(HA,*j+T"Cc,hEm@RAUS0hY!N`4LH2&Y -A5(rj1Ek4Tp8EFHjCrMM,0''Ebp%mIHVSMa(i@rkibbDfCdL&S2ceeDpHIIhma15 -abH$Ndk0,4YF'YirD4V0'rq*maqM&dHZMei+6ScmERAAeAi,r'[cUU%hbI`!!+qY -"4%05!`"bCK"9#bfR!0&XNlIGT9l,5TCD1hZB#YHk,'XYE913!$3%p@jjrmY#fR9 -EY$SFGfQlZa6krMCYJHS`id),9N#P3!JQa"L6SiM+B)45hfmf`$M%N!"%N!!SjM! -*U5#9!1-Ka1Na$2[lIpqpGqqffrF6cjcc21Gj,aYY0dP,N!!!34!!3D!Drfl3!NB -MIM46(3956*SD8P%I6-8HU9"'HRQ)$-jrKQAm"P1Lh)U!B$cXUI#*H8eLE'ej(-( -"Q`c$GfMKiD,1-f,Hi!42%bUJb,r"ZKhG1JkIpC8p4Z1`Br!MSr&V"[j3kD8KVUN -%bY+,rjbA1q5D2YbK43BrdV68GMcDjFF`Iq`(fJ3-9,@045#lQ*MF)G'MKQLqjhD -RY,MGMl8[D'K*kFeXE(!AR'`)lVV+h-Zbi3[$4D6+1EJA,G(CS5fiKEUB82'D3`e -Ph5*SlFqHYaFLE,Y5'c%P)AKYaD-iHmKB'@M9G,CT)"i3pG`KhhXJ'%B(XXVH"T& -$UUf#BahY3F2P6p##MkF28`"j00hNV2!1-@@AfC3pGe`6A8A8PF"HhZl"4[iN[LK -X'XD(MJm(2ZciD-0(""rG#AIF6HT1bkc0M++Z&rUU`8e@G5a3&RTLVUqA+NUmi0Z -A0p0rm*8p@Xj`&e[i2-jLY9)5XmkPDf%YV!`[$-eN,'BSBIl)l6lC)1rDl`i&r9X -EVp5f"&1m,AA+qampkhDR0kDH6!qk-l0-lKqTiaHdZr-bDheiApe!pkl3eJG+0Q2 -,p"ANJMbc5rl02a,)+UN0[+0TQcB'XKjXaqejUUT(`Pjd&c&fY2iG+U2Nh`MKF16 -Al)K"2R)@Ylq+HZ6Ar-M#hA4NBCGmC$jZa@K(&Zj@MRbE(8PK4`EiXKE@dC([,Xp -hj0[+NH[BNIIP)eM@`VP4Mec(Mj3p5dI+V2)4,+[X8V3MCFqbEUhCkpT$VkjVpjM -p@Z(N(H2AA3+SGKXqESG,S)+aM&M(d+Q)a0`9CJ8lL5&eeG(akm`S*Z[`X3,)4!F -f%q2BJ3Ydi*EcdJ2(aLpbS"'BKSmU1!ik-)[BaJiiLKq`M&rh2N#Rmh%GMH9'GU" -92K#,HX$FNlAZdYd"E4+r@H5J'a%2PLUY(m)Uhr8DTm-&paQRJpE@4'efB$S"XCA -pCZAiqrciSK#'Zk`k'S`0E1X$9&eXDqD`fJ6RV4H0`i'G(6SDlrAXJ%#9a3iFS32 -ric2R!b9@(,#1k,0h'HHa!`QU+RBJ+GU"468ii1M6CamecQ8(G2R!p9%2M)2k)88 -Ch*4B15Y+V!SVaS!9SaNV4XZX@!&@M#&@X1-eG!3G0ke`0d!$mBXHEdmQ((HTr2* -Aa9mZ&+1mV)[bFQlaPf@AE#qK6S#k#G4QFCcER8S1FB'63jad$'jbPqS82CZ3!$L -JDG2cJ0)Ji'S#@H[-c!Q@"B!#kZ1kprNM09ZiT8fhD6Ufe3G,PCGQpM)XIER)8Ic -PZ[HP,c&S(&A&`%U`aUSq,UVKMiUB82(Y&SdV,VV%'Q8*0G+Aa#$HC$BLj+%dAY4 -JJQN+`e,UBaJD4rX("[6HiY"%33ZTKmdrE!Lf&&cab`liZcLFQHVfCkB(kIdee4& -25YefXXlG8RFbXk8"Vpfl[0I5S`[[6+[`e+M#8dPi+KG1`6'i,JJ-E01kR4TJ#E$ -"0JYNCK9F#DTl6IS4hkZKT5ji-UYj6G5QkK*[D,K5((!bIlIKRGV8j%K9'Dm)HUp -K@q1eV*1elb4A'JP$#SD4LlY5Qa+XmkFhARX8iSD,KQ1%6NT"Y!k@AY))[(E!44L -0Z82qT%[Bd$@9f*m!)QH[3KG*9hmX[M["`"EcrLZ2FJNfK8`&*e2hqNpQTLG(h,9 -miYjY[*TmlP`le)KA2CBhKhKT3CMU45X-0U8GAHS99KaGiYLJ"+N2r["9SmZZSNN -)D)+ZQbialBL5CNA5J#E9#mYN&8ZGI6CJHVX@+9f$ES3!1VVdc5#Mdj11MM+1GS@ -2MY,XmEXD1hUfDfhL#6&@*fiq(3`rhZHDLSkdSTiEZqEPQIhhpeKZ!MMrm*,[i5J -D*([MVNJhK,BpX8D,T(64B`J$iJ&la9[D`EYF!b!X`m0JTF,%hX(5$XdlC$*qC[B -jmL!Je%4LDMm6BfJ+HlR5V3fQ+bfebG(BZj@m+&Fk)PAD!DAek%TE5HN6'+5,iHU -8IRMa`b"S2PD9&QJi9(DN6!@KS80P3S#lA(CCd4&#PY`K3KGI9ra%D-T!%e1hJUP -V%--Uf@GqYlA"&dbQZUPbF`3e68BNkDd#-84Ld4J'pjSD'j)MPhra(6qGcmcIa2B -fQS+e@BdT`HUfhNYE0rVpbGNk2GpZhb&K+CPec5iL1S+,qSCbqMHUr,Eb'M0eidC -"pKi8F!F)b$CbGkCH-ACIZ99E5JLqQ"#F%4d-bAYY5'kRafb'j2d9qqpbGEd5PU, -hIZh!%*U8)la*56k50`1%E,h@$*,AVlL9&!p$ECd6*9!mI&pjA([BF*1#j,,L1f9 -%Ga#L3fhp8Mid[d4S,MHKK1cC8bj*NIh6M#"lQN#[M#0lpA)ID'5[IZ[N)IXpJEA -fIJm@iZZKjXGERPY15DXpjB3)hP1jThL3!-XbrLrlf8m2I3e#4kFEHIKM2H@XmI, -5Up*EN55lRek3!',m#c4l8cP*V)e'f'B5J)"+rZ,YeSHbbNiClpNpZq`8[@E%aZC -i!&Q+i[!&"6'k"dX(0!E@Xb%ieR[,9UfAK!1jHT!!mX'"j@d+eH-%+QGbpMARq$, -X@M,'["SAq`RBQ&F61'6-Qm1B0dGPcCkIjQ-H+e61c(Xf`maVTL"P'&Ac-@mICjk -8GIQ3!'k@`VJ`h84MR)eYIlqSe[K!S9S,"HUXK"C)r,+--Yi6+VIURACkc#j(!(B -+KCl%[,JGb9j@VGdIQVe0Qi38#rVjUiqkq'GaXKS%Epk)AGc&KK@a&0PlA*VfQEM -VS@eDZr%I68M2kZScrZ0CmfiPX2,QiJ0$'$*0h-U'E&+'E'*$B[+3!+YLRZK&U+5 -p6hr)DrcG3lA'haP,N!#N8N+T`4l02b!Ha4H[QR,Bm9I2QK'BUE#I&[0QHa%-mc, -KMq2BimCe#+UX`)X&aN8!pT!!I-#1,&TZ4[KH#GHJFXTiQ"KG)CpU1@)f9%fJ8j9 -qhNCkq5!Bp9X`C51P2GLU&XhA0da'G+*q!b#hKkRr@eHRQ%d,lp$&(9ML#mS5Am! -5GaM,XF4XYTL&@-T#5P*$NV*Y'EFT`@TXKd$+[%6f3pZKb'Z+N!$AcTT[X@MY#'8 -Rr!IC9k[B&k[1QN82E3S!XX9q'PmY-+jN!pjJ+UpN`pjJ+L2C$pAF5U#QCIc%0HJ -N(Gf$3[(MqrNM"GPcbkPMf6*qilb!PbTNFRN)*!@5ULR%NBY(PVK0YrGEq6$q!N2 -IbQ9"6M`@8!MdppXS4)p"BdN890X!T1qHRBGZBUUS+U@LAXFLAkmlBML0e*D2r4e -B40@lfl4qifB%acBAXZ!B1RUka*hSAL,NQb)Mh`Ne2'AZpDGIDGK@A3QUKqa0QrY -3h+l"jMjU$)r5I6bJcVEaJA+fQiKGa"`Lb!2Ema(MQfc%Z%hG44p!h5P-h5QU-Zp -ea`2STKQa+8JG@&#XM3RkZ92(eBM8SHEbVGkh$B&6YFMXf19%rUFp`K@9q-H8'TE -bH6@R0BH+RUr[,8d"YZfThB&@G,e*`1X4%-DIQY&*9IK@MZH)[l"9mi6pA9#!G9T -YVr33F9ji9I2%d#P'LGG)'JqhXQ9r4aV@5[ZUVfTbphkrQN,FKc3mYPLl+8+&AiZ --j&$ap`-mM*Xlhp$#F-'h5YJD)E)hYeJ`j@ScUPUKDKP6p@S1e#Q54CY-GX0&Z,8 -H$kD"qESpPp-M(!Pf1$cBa'mEZU[cCGE&VE!RDi2(6+#p4&JLAeGGQp*G&d%(Sa! -(q(lQU!E`hF'GJ$XIS*ef,QB!c1D*&#UVRCNBMm,%MKLVLL)L0Raf6e1YT"*bfXi -h`f)N(aQrBL`qRq0*mNNVEld*YBaT&Qhq*#Bi`CLpcp18IY#*fG*$UkJad0Vb%$L -JMm0QAm)9Ep9F)kdjq'+J6QH0d6iES9B+dDkTVB8Z@i88B)[#Yl6KX(J%LF+X#cN -m(q'6kUZ`[lNU9!qQ&eL&q"3kN!!l*,[dc(c%5pUV-hQNbcUeBPN$Qi6LU4AH"XC -fqTl'UcCrYNaXYX0*krJSC*0UPXQ9eMCBLXCe'D9L!5bB!&EB&8(PV)(Z4m23KJm -lZaA`''%GdJ+fX3$-U%1(2P+&Y4FME5"R%`I$JFZ"If&S`6Vc'Mrc!"fbb(&Ba6X -dDpiEQK9K),Zi9dZ%hY!5pXZSiL-Z"lVL@CIAYL,[%%FL2ad+8kJVC2E[R)eYM2- -q)U4V*r3VA5EUD2lRL5HU#bpKQ*f'8HL"&-ST#df"Q$EM')KT#fT',aXb#JN@bL! -3p3lUIN#6rJF!(DFHUY9qB&b$3`NfK@T0`"``!(bkPkQRG10,&1`P3!369+ajUjL -5%AU"cTF%3TQ*VNh'"aPJmb")I4c'alfU`K#kRS&NkjR55@cJQT!!q3YP-3#YD%& -9T)BfeVRiiR#P8S$Af3T`(+N5Q"5kG6GYTM4R3L9hp#`0Sj-aG'l*5TQK5aK$jiT -EQfAS%TQKfd*0M*fh3dKEF*E#c0[j!)#HUcP$II(GIGS2T-[!NMF`G6H`T53a%(3 -eP&c0QKFl2mJQ#iBT%8-ZA$r-(ij2HqR+P"-J)Vc"S@3M9+aiJE%mPiU-hmT3ZSI -#Lqae*j!!NJ(h[J0b`i'[A4e+S3SAd,$Z[*8d63NKb56k`YkN#%$b#)@Q($a)XkG -Bb$P$UjFfPUai&k"ikri$D@r@IDa3Dr1NlN`Zi'(j8CFI(E5&Vdm@D9@G1hAS-'& -65'%J+kD*8E"@[1"U*3I*A"'aCMYMU,hc$+rk(ik*)icR#MJMX$9+mq1T`*5K-`L -RXB0Ebq)D6`a54AAZ*&&b4A&'+b$ePH4K#!HT2ihL6VFaKYFbKQm$BUq9@Cl)ch+ -JpXmCD[mFE1H)[4D)[CBc[h"IfTP2M%6adSdeYQ!Kh%N0X4ZZE#jMl8%NM0@3!*2 -BVDNXTSQVB2+fBNkL5Q(cTcBf)bfYbMM'Jh5b4T%QcbZLD(+(`RJ5aeJIN3a3US" -[aG5pRE-Ujcf3!+jr02i63a`YCd4TP--dP6ZZQqbEbrhkZHh)"Zfr'Jie54Q`G!N -'cF1,BFD'@RE$'-'+e#B)*B9EA+kS$8Y#dV"-94X@aUSL2YKr!'3APS0T)q5d`XE -4D,6#$br"*(qNIL'9)AaZ&aj2F+IJJ5KIZXPHBJj1F+@!3@-D2`5caL!YVa-S5%Q -&#S1i@b!@qID`$5U8$5Ta'ekkT%2[ieY8BSZMH0c"9%T3)`('V3JQX@e@8U+Sl1E -f&1YNbb!DXj!!UYi6318lCPD"S6Gb`F8k!M-X@(@I[(L8ES%6-'F!h!lMb#!$qJD -F!$lkiK)$MMdbdA'@L!jIiIGqLF*5,8!Y(TFGE'pUHQ0$-,N&Ik9+(&V'hpI@id% -#G$A*GJaYZbN3`C,m'"#3!-Bd[j@fSSGYCR"LRDVU6TCmU)3lVHc"UJNX"B)!V8k -D!Xf60@55G+a#NSj459)Qb%D@MXP(P[l-YMN0aF6bD+6TFZGK%d'HmQ3DK86G'Se -J6d-+"[rQ@IHZBbGfD-NQaYq(kNmbB[a*P4KrjG3K*FBI5b-aRX%%N!"La2JN5E2 -G`p*J*B9Q$k91*2'1R`1(R#5[,mdN'56jE4NLbBXTh%X+Kfd+0d1BHk@%Z@I`N!! -5jYi-%qD(T2[VN!!5j[(cc6$k2@,dp6C'&b22Uk+3!1GH+AQZX&akD&damVcIe3l -b[0H*21q)hShkJ*2UhNG&UKrU6NCR8PfR*#1A&L2`-Z3l`)Me$f4JEe)'L(99e,i -Sj,TA*YHpf1JaJ'8P#VQqV*H4kc59qC!!%1Y*E"Q&r@5F!5M'%FeI)#(E"e@bABS -%Q!+4*L,Hq4#4Q&cY3QZf-e(IB52ULaqLa&A0`4FR)I3R[i[#CkcLK$j,EUfLU4c -**22A-[*pV8cQEia#jR0fK@NV+F1F#IkFIUjNcXidNrbD9LjZI89#p1rUN!!f+)c -J,T!!N!$qJbVTAka5dK!)U+j5Y&RCdY#!CUbe"3H+(`**GCqdBR`MQ$VNN!#Um#i -&$+KD0NM8i169I@$9I6l1cQkT',mZiU@Q86#P2d0"K2S5qUK"jdBHpYZ##(`*,95 -BrIfXU(93ZST9#kP&)aH&*Xb$#6cG$F$L#2[U26QF`)If(DD!JLhCKB89qLrEAXR -+N4Q()kUKKc5%'1T*I%4J5c%8`Cc5GNEbTQ38@2%T$NPENF&33kmde#"YVY$SU%+ -R%6-S'Cq5CLJG(bmVb09cNS30Uf-9B!XlY&pU,Za`Eh9KKm#B5rR#$NIIZX66N!# -8Y"cCkF98`aAeK"rUkp!c4'XL#QHakVM+UX1%i[+JA#%Gq5X%4D@'&C8DZ9*i3AN -3"H9"Y@S+1c-8L2#b3-4'ZA%U%XPX")8KlQHXTM$%4UF`4$XCGBNDKPLMX0hJ&)C -B`m)3Dr+&)GDS&8(LSSFKMVl&Yf*+Me@,Kq)f$f#ki9MM"L8Fi9($%A&p`ack0fV -1$H8e6CJL-JqKL5B@QML"d%5K8fJ#U@X)6p"%h29ifDH%*pC,`a-`*,1"-D,9PI, -S`K-`-00%@dT#&)CQ3K4A@I"JLUZ@K5LfX4$&+0F*DBJL-%B+AV0!KF#fUT!!E-@ -$&BCkJK@MP'$&Qm6U$!3VkNhGcKqXN!#EL1GVc'N-A05l5C6!aF8-%b9Uq-+VKLm -8J&J0AhJIX2"&IBj$%VlBq$mPI,&aA$hK#kmF[JJjK5mi%6p@)H,(U%6m!a5qH#c -YiBYkd`dNi3Z'8++5TUi%JBX9qJi8qT9+S8Fa3S"F,I4&DU'2DpBB"FL8KL6KS8Q -RhBU+#EAV)85JJV5T89!'@3mT2mUi2J82L!TdT)FTF$#U!R+B2Nh,Vck@9+#Qk1l -VKI%HhI0UfDIqSY#VC8rGN9Af90QRmGPPRiSlV0i%%ZdhSa#Np)Lae65KHM42bRd -c)(UA)Q8h(NMNL88S[*Ufa6D&0m'Rm0SYifq)*eJKXSaIAC%S&hI%[IQh'X&@eL3 -aD61)bL#Q6+lZ&T0#CT!!URcDlfeXQQ4BfCbjq6qjq1E@32b%08pdB+YihQYSC%D -dX$mXRR!9PQkakViZ2PP33A"-f6S`"0D(ikG89F3G`rEmbLJ6RRN!D*IEI3A1a(m -b0GLL6XT0EAR(%F,[T4Ij!PF,[GK54EBh`4(@B(9Z-eBXP$&J-9Lr1)+XA&f1 -e!b%EKNb(4f$BJl2CD4Z`HI(rSQcqCR%f!ep"lDGHE3'Z)QNdBpc1cqiY%NCX!EZ -h($TfCpmVXpYT'l"lbrq1l,k@2(D[)(C61LR-IcP-MNr0UEaEF`@CR!Pm`!b2)JN -64LJRiX-H50HX`b0bdq-B,)h!V"aFBSc-Sm"0lPI#B%Rid&fp60LEjh0J4R@-"4- -%N!!1@3e"lA)JU-2-pmlF-R)MJVSA'efB@$!QNDiP)RF&+J+,SlTSUm4&fe8AEDq -JK!Q%D)SiZ8Q"K`k0*JBa*c`e0#I89()akkmXF'HA'Ecr@PeQ5l!p'Ah6h%c,'Y@ -NfPYD+i`*)T3BeR+!KZZ2-I@0I`b9pqNQ"cTX1C1R*rBqQSB(%%#B1VF9FCY$8m4 -BU)RB1,&#*i1fDiD[ammIm6&Uf"%`j@U"[DLq1q6U`e6KELe#L4CKTIVLU,DT5[@ -eZ5+8&+"8bkLC@cTZG#8p4!$f(lPU-%mhL69hIGDBTmP(SK0j&A6!hKr3+%f%%Nq -GQVmL6i9r(JX0rG'@rNR0i),N0S0VUN(J-3b&$UJSp'MBh"&QU--&MaZS80"R&E& -B+5#-bD4k`,40BbqG#iUp@%'*5!T+%J9rA3*R,PKUprA&Nl"m%T()Dq)XlDf1T8f -e0TCb42iZX63jH&c!R8+PbY5V-#$VL$%N0Q!CPERP)cSp-1#Cc'-R8BG62QAE#"` -p'+-J+3'[8,C,JPETVZe)#UP$a95+af&mDA6+de4"!hmAD!SXb8!4Eb*QXL)H8iX -ilfKP55GG#b%kq#+@Ii3KkJNb6D`@mbZe$GXbr5h*l5BYlM,9`-bSBNkc+de1Fim -%'BTFqa9aEji[P0eQB3EFCX%$i$Bjk1e382rarJbicHUKm-aVcEV0'X9YMXe@hDB -De#Jm4)j6VELI9Z-kafE!G9T4HADP%JGF"hQidpPj[NX&I+cX22ZBmqaRcV1M(ZI -*+d#(qlc"+I63[21XK`#+iMa9PP3b92V`%,T29I6EXJ0p8H*!afEBJ4jd!M3F6,c -!@FaFD$pcS4heZ X8fe+Q26iN+E`HRr*lM3qN)eLf&Xj`@r58eJ1&&N'9qf$La -Cc*L49ED1"f3)e'C"M3f59)LXXKGTHXVE[3M1,1BQHBSP2R5aBeYXajM4RKGS'fB -H+MApC!-Yf1d%*+ZGr`JEJQb`4bFE[LL"+D!LGHNI#$$5@-QRpkeHEM+'c*k)rhi -bM%hK4hU*#6Emi%'@a+%B'rRDUQ+,lZ'6qlq9GA*[d&hp#RRB`NiA#Q&'Hq%ifa* -E5kDNG,c5T3DBKZD+RY)P2IU'jqRIU1IRPpHFrPYc4-XqY@MCJD(J$@cU$3m(A8T -Ta,`qGhi+H5Y0"+Er[$2h4rhm'fB&*HYN`ejE3"%,k%,3EHV#@e14N!!H`E+N#aR -3#-N-&4k0J["B`#q$'iLJ83*qql&p3qV*fZKVU'Cc[V6N,-&AI!Nr9*G3fpL5m68 -3ZNaA`SjNY-qqk*FTICHke-k4(#dBlSqjU--9B@E,q0[VhMATQR%kGGP--V2&c'I -K6eiC29K-5q-9N`RN@C3D8GA1b*DMdV)PiYE0E`PM&@5kJb%F3TjY6ba,+E*(!ZC -f`a2,J[H)*kcF,-AG%(FY-b9B'a@I8ZRr0@F$E#S+$baDPY+0"1Qf9`j+6'*-JKX -d,&VQ(3TZC#M,$AQF`cDe*q[UE-(fBQLEkNf90pT0PiP`f"L8)M0R49er[kj4FJB -P$X%e*TPd!"FYc3b1UB1TfcbL06-d56Vd)"`jGGK3mp-9$T`1r)B5L,"K$MB-fir -3&hfDi5*H&9*UZcfX$MFmJjH8B[,cCMB6C4810$2-,P'dRp+@QaNXb)2$*TI,CGq -M[HPk1Sd("&HrC1L!me"fL3bcZK!)0[1N,BfEUH*qcrp1P+T98DH("IK[L2H8hif -#6m(*UV(XaU(TG`'Gd)hk1VS)(A#qLfPkGHFM#0FFBkM6,Jep+l*6bH4"0F@mi(# -kDUT&-I-iLEC,P+2l`q'M0#8H@R)K5&2N5q)"8m@XP*-44ZlDR8d`b[[ER,Ud8&X -(ZUJjPj1lbB4Qc$,q$h9)31Y(Ge&1QcP%aAPHQKa)+T80+S%Cf@a0rCY&Fah&0YY -(R9YYT@38`kR6%Dp&[1lZd+faqkDFeckV5,'IciNIUCQ$C45kGY*V-X1,JIEUMDH -`cNN-@8T61b1X-kClk@,F*(V+l8P!,3kb,-##'kr)r-mI0YZk+j6*R8H)IZ&"3Nj -1a+D#+FI3j+-&YUJ+@2808qMIU#RcbQXU1Q*)2i2*LcjYFe1+iha1arAakrdk9kM -'TY#4DK8LCCBSbS6[i`SC*!Ta`,qG'ZlDj[@K@JJaYqZ&AUSVCfNP[(Nm[!S)IDZ -Y%iY%rdPD5[),hL8A#DNB!$TV4k9*6+Uc'0ET5HC&*QkHN!#H4%f-+kb+Q*N&r6* -YiFa-r)rL!Kc-"4c!eVb3!&ZP1lF[F"m0eJEV!%P9SdKaB@XVdLc-54e-&e#-U#B -fXHl'-+DFMmD&XAS"6)DGM+2LBNCa-a*f`lJ8K-68U$b4[%UCcZj4cCQDVcQjVN0 -[@Y4EcAG+%D$1G+58+X$VrER+T1P-CY$,3FEUQN&RlM!H)mrZNc(ffHr+XjDaZ1T -$,QVFqQ3k,DbPX8iea(4B-@FhR61G*EdbG2bU9ZhfK3(2I3a4'3#Hf`I@SY0fY5( -J9Fb3!$'MK[G(P!RCSQ*F5h6#hI`XN9'(c1-3J@IPjTVY-2Nl3Yd#bP4l%!k2H$6 -pNCeDf&S4$i0!!r'1bYF6-h02j6Aj+f@c06q8fUTGd1YfA`fQNUDQaK6hiA4e)3Y -X,-"E@NGSkf(9D!f)SXQ"GiL3!&"-3El0L41Ed9)3A-Z)R2)R-9*S'9lm@VRj0@j -qTGcm#MFr8@jqJT[EP*[EF,08Z9Q+QrR+cAcFA+IFA)HEZFV0A0cm@,Rj-@jZ8'j -Z`-e0bXe0mN@V@Q'MJ3K@N!#BG`KPmp3Acce13bkI,'LXDe&-9,jD0Xpr#6rV'`r -Qi8HFAECq0B#,MeD)!(0K@KN[DpPd`[!Qh'cd&BPCC4X(*h6L4N@3!1HB!kd)YQD -fD,,B$8cJ"JMF3!,,E!)he0k,RbSQUSU*URTp$)Qik(C,K+L&ha3cSrM$0$)9#mF -j*"lSPA'2Gijh6ZI,4%+DUQ#)h-%lNc6Y3$CrJ31kUG*!D3Sre8H6-2VkEcaNF%& -e!Lpe!J(f`[R8SY"F5@f4Nr!B'Y)PA#$L05"MLckDT[-K(H2Ta2'VPHr2Y-C+,UI -X5b$K"EH6bjT5#Ufa4Erd%h,U'$DTj(+`4Sa0Z&cR45&f$"rKfarB"%0U613MT-C -SK!PB*p[IV"%phL(9e046I&N09`VBNfBM8+e+-MFY`I6[[jNT(Pqk*"%`IHdh%ml -KJJTFG1,%M`h2RBThqAV&V@GJkJj!ePk@!Z%i%b,$c(M8%h1`G4GYrIm(%qAbcFm -SkGG9P*Kc"S2`!IA&N!"K3PcEr*UQTiBIfFU-Rc,RFiS[-Mfc9PdJc(*GX#U06eh -PmP*6iHP58rMd%`$T1402h'4iEXi,erR$mGFe"aldcTQG%)c,!m$ThCR*PSSI2$S -`h-d*S#PmSbZeNUh)9CTbJ"6fZh&4eCj0c249'jU!m1P52%CmAE3j)B[PrqJDANp -`kA4lYeNI68)RjbQXPGDm#PLaS1Rj5ZYGbbT-KBB+P@L)DiRM2ai&PN`hS!X6PbQ --U9peD-2Ba&!a6#`JekLJ)5Vp#%LmT!NF16N#C$0$j9EI`,QpT#BP60d*PhD1'1l -"#lPEmLPjN3fQp%cE![8)8cpX+28rRAJ%P9jS11X,LmGFJr&MheYZZ[ih-df9a2l -jCjHEQfELkjRqSYE+,DAccTkT#)aQ"+IhSeqJ!a99BQ1mPCSGZ0-l6p!PlT!!6R( -Xa*mMGJBbb![*#YEjJQjF4N%'VX-4pE*iU1+C(9V2mHX-TX,%4-0CI`L,1$[r-Pq -3!1(dDEk8m*R6NG(X83I5[K#K&0V`D6c%XaGL8GBhJ"KcrB@GXk+K"*BN4PY5EE# -eaBBBRPFrkFD8rDa2ZRXQL)rGH8`,hidEG"[M4hcqMQ1IG,Z+k+IRqEZ2FC0J&9) -N[N!UpHc9`LrmdPmimaF,ahr5l3r6!I&'RpicNiZNC2r1QH)alN6+hFlS5D%rZZ" -X8T1QfIqfX-PS[&ec0)&Zde+5F+'R(,S8)h20E3L$&5P*AK'BY@-Sm[3Hr["KZNL -ZbU'DThb+YS#bep`&cNkKRcC$TIpJIY0bFcc(j#daTa4HpBUc`BJN8YZPK#)r()Z -NQN$LZ1,)"T&!V4IB0Pi(31U#&q'F1c`i0!,A&Pj%kXp6MdZ@fb8pKJlripjbPBM -jRY+QSN1pVM(,II8N0EU0k3f5"B2&MmhK"3QA6j)GXkQ3!0,-$8d))(GaadfAM`8 -L0Ih8V*V,Tk#Y`U"05N#fRa`RhrcMP'!pfr2LMHNiMM0%eY)8m$CUR"lX@@T)"-j -im@9AEK0HGrF`YBq%%H-&fG#UL8Ibk&+j&mrrjrV,G)1,jCe1cB@cA@+G!k!NE28 -FQNG[4GR&i#VDSXbF-L$G)&6"A`IA@1I3`ZXFI!U,CIaR+jBDFXX"((R"8MK!eBP --hTAC@TfMkqkpUZf!iUj`lUN3UDa[RP``"LC%RF6'!lRPeS"RJKq6Bhr`*RhPrP# -##,Qih+lRZI)1h6""GBG@$8"ENEK$p#+j8hHa*YKBqCLjEXaYTiFe6-Gc!(RZ)T! -!LPHJDdVm&"!pNXLf!X4%qLS5K(2,eDE`BqF+p@Hf"P1FUc55Aa%(+8*J`h1RmUY -M*AAdFf#6Z&-mK@35h5mQXK&QS1NU5QUfDbS9%5Li!QjSCqF%&D6mHRlN+VDBBCS -iT62'@%dlB@C!$pT9!1RNM%5!8JR9&m4'@a$MBKD6V6NA%TL[h`-'(hm19@ZBJ-6 -mN!$-dMH)T8MehePL,TJ+KV)QTq"$T&-UDEqZUEPbXDM`e`@$%T!!#ZaUlpq6Bc" -!k48"Rp+YY2dXh)-(aIk%j`jYUNpTaP,EXHb$KAZR[i),01c9$'"G%5D)G@!)ZF% -6BT&rR3T-c3'-cc*0SBh0&E,UN@jS9cDXj'QX9ifd+35YYjRLK5KZZdS@4DkG'Um -HZjL6GjT5+YSQSK1P8,[CRp6e+G+h(Hbfb"r'lFfKjrN`rmq8%"(`(c-c@RM0`BR -#Q3BEkK&Ga%6IV)LqQBNZFKEpIC[SPXCmJPRD+B`bD`RmL%KHY@S4`bTYT"5*V(J -935!@)Tjd8iYUFU0raaqXXl'069pPM%UT01@3!$P3-Sb!0(+)3SJXJ)*%$ph$C,j -hcb"!0&0KLCP0f5)bcHSKiaK--C&Z%9`4BkiHkV$#Y*J),NBIdililDSBYY'E!%d -eY3UH*!VYC%V8K9&A&j,GZq1k,r[F9XdD9G`ZN!"*q4FUd%*TDE63BXYV8jFR+il -N@lRj8e&#AC'FD-S)94,6J8Tbf""055aCE%G!FBdHd@$X&aHXK5'0UDCH`'cKHh8 -b0HHhX`PX0j-)GQ#@+9CLcZUcKr1d2qLiC[1'`Jl-#0"2Ga!C3LP'U)4q9'IX#c- -#HHhk4$((p5%IT0%PrR9qi3#Z4,#G'CF!JBMNF+Xr6J[`1faEZZcm+([P8"CKTbj -&DFH[QYKkbZf'*9Bh%I1D8j8iS"bTH5&U0f@GSRBB2cScIk+cJ166T&#k#)@Xl1) -c9PN0&c10c%5k42i3L[hK3Q&-CFFc(EBKa)TE0QNAp)P)8hH`e+m,DV9G[&+,*DI -Q@bklf+AKIDUQih,9K6e0LU'(#+'bRaP'V,fG9jmrJ&50hZ98E6I'+FMI#`#ib3H -6!$5*NDXX6pp%qJ!UFVkXMQJV5VP$A##rT$5P&Z5VrR'Q*%+1'QA)BD8,RY!GbIb -LAj48lUh%BYp8*a&25b[2$VDS!JFd@@3rd[ee8a'VL2S%&V%(*kB#$@#&f!N0i'6 -K*&lp5[66"Ee"bZ1aMc-3PkBL3hX1Mj!!M6#*UI!1i5[4e@AjEh4CTMX#C988(2K -+[*T$cTF9r04Y339HD&5RQ$-LR+93CKCic'`6+ehiKE[aBHS@C-fXCNfBJ@#699# -!UN-Z[Y6cEj0ERH"ZLEKpcZ+m3ecB5fihbiaaAL3h4rq5fJ3jIDQk#63bK2KHLC- -JX&*3'k5iaYc8cX%*Z"EjGQVb1LI$ZB9Km(#)G8adUddLN!#9,NCPQac2#ZK&2pY -GbqFZLraXJp640*fp'MG9TMSP&6Ap()hIP#)XGIjSXD"$kQkN!`kEZI22Kq4&r!! -%HYP&cj5YmcK3V66rk3@8F&m21LVZ#Nir`K&6,ZKqjTdPj(Nl9&bHLBf1fA2b0)N -#139*RNHdQc(*qQkJAJ*LqpSH`B,4h)U2D"'A#))[8ISJ!2"(Y%RcbeRM'`Z5)D$ -#`qE*CM'(KiRm,F&d09#R!P9lal,3P[+GT%Y'Yc(FaQ#U#Na49jHKjI3i-mj[,FD -1!3Nlj)2D'Yj!qpXkmF-2l"dEefj#3`FcfiAdTDr1ZB+r-2YFI$Z*Bp"C5N[-[iX -"X@J)8iT!%%dUJD"8RE2He8pI6QJ#QU,l!T2%+&NS-S%(Zka5a(!Pm9[&JAB#`1d -&3$P#M6+&R30N%+"VF#CcQRCI@a69l163fDA,P1T@!8U`RqDNfpK[PhCFT*rReF$ -(4"Y5fk%'X#pQ"E0`k49Em)8K$i+rG"Pf'2BbL5"h3(5CBKdhlVam+bir-1fbH#c -d[,dTll,r(J!1!f)X)(3+2E'@b1VABI)epTGbmqQ,jSl`QLG(M[JQLFGbRaHEd[i -$XF[HfReVa8BkAL5r[-F8ff*QC!hI[-*rMpS&"RH-p*adK#+b&$A)Z4VR`EPZ9&` -I!XfCM@l3$EE!*T&E[pqRJ,S0lc5i&IKI"4cIh+d)TbmPi,Y-lU0*cdSb*CA3(q% -!TX3SeGdbrL[m85fHJkRLK0H8XmMJ+qbFb4k+b!8ad)-+r!$GGVl-3m%`64XER%b -!PPUjPp&*d"#8A,U)A6#$&D"YXX[-TTHQIY"k4kTdPLlf(MiZZIB6F0I)rYJ&K9E -Y*pS4J"DLGX3e3&qNfjfqX'YNK-(K5UV$(d'KcXJ,pQ8rC6Si!qE8%A*IHE9G)Da -6kCPVU)"8%a+Bm2G$SI2PIbSA$NrjrUN[,e[#DqQ[TEDUUQS*2LcZVhe0D"'D,(Y -fhQaje[,3jem+!Ab82M20d[(2kmF*LiA(,4XXEZ%&bbV"2hjjL6#,A[q$m(mlElE -mA[M%XTLpY[5q+,cd9f(QAhFXqYhU+Fqmr0ScRApqUM2TTDE,`MF&haZI6!Qii3d -dVF2bjGUe`RqYAAYdr0H&TUm,jlmZP2kcm2$h,cF*6heG1'!C[q1!m&q@d6[ZYEc -iq6Hq%[lljq-q&Ik-cafIlA*BBP[I%4jlJbk!UrfV31XZZ'LjRXX6$JZ"ULSKLrd -BmGe(PMfGei6cPKm)Edm@,P[qi6q@@fC-&Mlm@(K(q(b#m1)Rib`a2%ci[&bi(HT -q5rMGZ1H&+F,#cde2#CBC`V)R"II&*i58MiAc`YN*`ZZ#CCcPcXmEK&FrhfYTrra -2`Lq%-KbB*Ic,j`92#GqF)DcR"i)cCLfF-G0bPl"3q2Nd)@q'm)&`G)C`3[Mf0'( -b0#&lKT!!+`4Q#)0imDA``62I,a&f#TDY,rh1NSGPjCDr)Hakk9qRI(P4H1+hPSP -c+S6!AeDZ&S4T&8,C+L(`4[R+Lar2H9@BYHlPh`X&A`UT-dU&SAP#U1+[cermeUQ -b@H1%SA,Kk9HR#Ip4+L`'!*!$'!!!)IJ!!&-`!*!$#!#3!b!!!$mm!!HTm!#3!`T -B`!"G`!!!AF!!N!-DEJ#3!`&f!%ja5S0Q)N(Y!#!J2$mm!!!L2+R`!!&+3@B%5N" -R#NK!5%%JJ#&"!!4#Td(krml3r!%!,`J[2!!!'@i[!f%!!Ua8MfG!3MJ+AN+R,ca -%394"2c`%eDJIF!%4`!TH5TpR'%ja-$bTF+G'3rS!+L+)3IS!)$!mUA#Q4dU$C`4 -`!8je6Zd!)Nja5S0Q!URdF!"1G@!'!*!&!8ja(cVrpNSICK*)jq$J3IVrkP$36VS -&VNcI"`F[1[rH6R9JFN&-384%3de3!!-!N$43FN&Y51GJm(43Rm)[5!!J)%mL9$& -T!"3!'#&!!#3aI!!"!#c5N5&"!#kJ!Yr#60m2"Nje5MJ+AQF-)#S!#'F-)%!J%'F -',cVrK%je51FI"N(krjj`$#)U!!6#Z!-DBD4Q!!%q5(VrMNkk"fjB6l"kreTQ!!% -1S4SZ#!JU!%!!"'F')(J#TU!E,#S!"#SU!!JB+J!%Pp59e#!kreDK(Mmi!L"Q!!$ -X9%mX5#!krd3L"X+i!aTB3@%!rd`J1[mm`,J$'N(krcJJJ%U&CJ5K)Q!%)%@J*fB -!!,3U5#!18)""q[m)))!J1[m+8B""q[m!))"#CdKk!,`[&8Kkr`)[1[lL,cVqiLm -krXS[1[l+,cVqbQ%!$8i`(fFJ2`"+K@F))%fJ+U!VB!3J6D!M)%kJ(b"(S"Xah`) -JB'!J6U!I)%HJ'h)!%J6R#H-Cj"%!!3!J!J%!i#"0S'N#!!!IJ!%J6D"UeG6Ae%( -krRC+N!"R#(!"S*K`!k#B)%dP5!!)F!"-hf$i6R9-hf$iB!$q[Mm!)%kJ(b"(S"X -ah`)JeG6Ae$!i!L!a`!TJNFJP5!!)60pJq%je6PB!!%MR!$JSEJ!-4rVq+NAkrLS -J&,#5E33J%LL!5S"[%L"6)Qi!#+)Z)"64Nj'5F!"J"$!mrpP-ha`!6Pj1G8j@rmK -)jaii*Li!##JZ!!`SEJ!33IVpZLe)rp4#,[r)S4SY52r-98qS($!I1J!-43!!Eea -)E[rX-!9646m!U!p96bmZrqbS$6!I2!!-4J!!Epa#*kQE@8m[,[rX-!C64Mm!U!i -J(be!rr"b!4m"UCXJE[r`5T!!Ca"96bm)UDB`(dM!FJ6!J@I%,blrm+QMB,`3,J! -8C`TC6bki!UBJAk!E2cbJr%kk")C86be!rp"+J'F!!Ci[!%kk!pCB6dS!C`T`!4e -!!"C1qJ)B5'lrj%KZrq")E[rB6VS&DNr[!!`J,[rJS4iY52rF)!KR!!&N)#lrj+% -H,8Mrk#!)C`!"9#mZrq3[#%kk"EK36b!$CJ!!TPP2,ca$6d4&3QHS(b!I,8$rm%U -!C`!!ML"!)P"b'02",`P1ZJ5d@%pb!l""CRBJ$5"!F#M4`#e)rr3LE[r`*&&`'0A -!,8Vrq#m+6VS%ZPK2,8$rr#"Zrr#J+9"+*Qlre#G+!#KC6bmZrr"1ZKA-)"pbk0# -"8B!R3!!X98p)H[ib,blrp%KZrr`[$#m%,blrh#mZrq![,[rS6VS+aP42,blrm+Q -M*'lre#9Zrp!!$#9Zrp`!%#9Zrq!! ZrqJ!'$mmSCK1ZJ0@9%mQ3$mmU*p1ZJ0 -+9%mL!#!,X)&Q"(!!B!*`!5!!*8!!(#9%!#!P6!!N5(Vlc$mmS2`r2+$m6VS#q&4 -2(`"1ZK952cbKQ%kk!`a86dU!C`4`!D#B)(`!!!&D-"")`1#!FJD`J@B-3IS!VL* -m!!!$2#+)(A`!!Ir))'lrc+!E98qS($!I1J!-43!!Eh4)E[rX-!9646m!U!p96bm -ZrqbS$6!I2!!-4J!!Epa#*kQE@8m[,[rX-!C64Mm!U!iJ(be!rr"b!4m"UCY96bm -Zrr#TTM!I5-"b"-#"C`J[,[r`UD*J`L4Zrr"+NQF398m[#UQQ-"p)`()%`)&RULm -+UD0JT"!ZrmJG3!!@60mFH%jH)&p2l`!16Y"19[rm51F!-%)Zrr`r2+$m6VS#,&4 -2*%"+J'GF,`"1ZJ'!@%p+!'G3)!SQ3#"!,bJ!$$mmS2`r2+$m6VS"hP42(`"1ZK3 -i)%XJD!!3S"mJ5b"S!"LJ(b"m!!!"@M!35-$JJ()'X)&Q#R!!)(`!!!-m))!GI!! -"rr`3,[rm60m-!%jH6R919[rS51FI1&P2UA8J(bS!5'lrk+Kd)!dJ3#!3FSE3J5e -!rr`J3&a)3qlrl#,B)YKC6bmm4%&836mm"0@TS#!I+%!J3#43-LS!#**U!!3m!63 -U!!D8DJ!#2J)f,[rb5--i,[rZ5-5@K$J"5-5@K'S#8S2LJce$rrBf,[r`5--i,[r -X5-5@K$J#5-5@K'S#8S2LJce$rr3f,[rfeN%p3rrk-Llrp0*#28(rq&P23UG)E[r -d5(S!CR)"(`&b!6m"F[m[!8)R3UHT%b!I*N![!+Kc"S8!N!0i,``J5h!3dF![#+M -f@8qTG5!IX)9N!Q$d98qTG"!ICJ*JpR$r2`"#Cb!IS$)[#kN8,`bTSbmZrqLSFdc -I(2K1ANje!!)!!%j@!!")j`!`*'i!##!+*N!J3#)S!!)-J8&-384Q&L)S!!B-J84 -$69"Q#M!S!!Tb!l""C`4`!'!#F!&-h``!6Pj1G5m+@8mr2+KZF!%I!%kk%RJJAb4 -)@8mr2+TZF!%I!%kk%QBLAb"+XFPQ"M!m!J"J"$!m"!!NAdje6PB!!#m$0Li!#$! -$5-!#J!!!#!"+J'm%F!&J!R!!*Kp1ANje6PErr%MR(!!f,J!)2`01Z[r-9%mG32r -mFJ'`!@B3!N-(rdkkri#`3fi%F!"J+&P22cbSRh!"(`"1ZK(`)"mU!&P22`-I,[r -m6VS4i#!I+!#`K@B#F!"-h`!i6Pj1G8j@!!")jaJ`1#i!##4Z!!SJ5L!3*N!J3$) -3$%&"4'BS-LJ!!Ja"3e*Q(MB%F[qf3@FD)#J!"()BiUJ#J!#3!rmb!dM"X)&R"(! -!B!*`!4e!!!j-h``B6PiJAea26Y"19J!!98p)EJ!)F2mr!%kkrj)3(fF5)'i!##! -S!!4b'1+S!N!!rf!#F2p1ANje6PB!!&925'i!#($r2`"1Z[pN%"pR%#"Z!!JJ+!! -%!S!!rj!$B!*`rdjH6R919J!!51FB1#CZ!!JSEJ!-)%X`[!-"F!!N6#5!*M`!!!% -Nej)'NJ!!!NJ'NJ#3!b!S2!#3!i$CNYQ5+$`!!!53!0Q5ej,CNJD5!*!$I!D5!!# -!!(!!*'i!%#5!"T)!N!-N"T)!N!-J"T)!N!0)"T)!N!-q3N"-ha`B6Pj1G8j@rq4 -)jami*Qi!##SZ!!`J#bK!,8$rk(!NfF!Y62rXF#$C`#e-rr"`50R!,8crp(!qfF! -J$*!!Ll#&B`C`C8lk!,*#3$i!3N!p32rN0JG`*,C!C%K`",C!C!4`!'!-F!!`!eQ -!DJ*@J15!H!!i!be%rrMBV[rS*%38J#!ZrrM3J0#Zrr!J3$#Zrq4`!435FJ!5!Z0 -Jd@lrj&*(B,"#3$i!F!%m!$B(F"qf3'4%F!'f3'3%F!"J$(!!-!06J'S#8S$LJ(J -!1!-Y42rmf+lrl#4%&)!J,[rmd)$3V[rd)%!`KR!"&"*b!")#if$F3&*(B,4#3%c -I(2K1ANje6PErm%MR(cJNEJ!)*Qi!$$SZ!"!SEJ!53N!m!$)&F!!`!G#!0!Cb!$) -#X)&[&%*!0!Cb!$)#dS(5M#""-)"54Q$D3N!m!(!#28$rmMB'YN9N!!#i3N!q!%* -!28$rm(!!-!2PJ0#+)%!J%#e!rr3b"R!!-!(3Lb"!'""f!"B%YNGM!!##-#lrpR) -"`%(4E[r`F!!`!e1!0!Gb!$)#X)&[2MJZrr"f!$B%,82rr0D$eS`J3dT3CK)J,[r -md)$3M#"!-+lrmP4Zrr)b,[r`F!!`!G#!d)`J3$!328$rm'!@-!A330"'0#lrm() -!-J,5JG+-)%%`J&*()#lrp1+),8$rp'!!rfa54Q!!rd4-haci6Pj1G8j@rra)ja` -`*'i!#$BZ!!`QEJ!1-J0`!$!"jS!i!$!$FJI!36S!F!!Y32rm0!4b!$)#dSSJ34) -3F!!3!63&FJ!b!Z+JFJ(!JG'Zrr`L,[rmiiR5Lb""-K"`!$!",8$rr&*&-!9b#," -"CJC#3$S!8N3b,J!5F!!`!G#!X+lrr'-#B+S3,[rr%Li!%p)"N!!"60m-1%jH6R9 -19[rm51FI)#4Z!!Ji,J!-1Li!$M)%F!!`!HD!2!!b"(3(`N)q!AB!0J$@LL"$%"" -d!"3!,8,rr(!!-!%d"A)!-J,3JHD!FJ+`J@F-FJ'`J@FJ5S"R0'!b0!Cb!$)#9)( -5LL""%K"`!"!"FK$MU)'Zrr`d"R)!-J*5JG++)%%5%(!!%!(KL)'Zrr`J,[rm0!G -b!$)#iUJY32rmF2pb)$B&G!!d!j+#iUM!E[rq60m%q%jH6R919[rB51FI1#CZ!!J -SEJ!1)$`!!!%NdDi!%L!m!!!#50'Z!")J,J!5,8$rl()Jdki!%L)Z!")Y3Ir`*$` -!N!1!eDi!%L3Z!")Y3[rd*%XB%RB!&J3Y3rrijS0k"mC&8N-p3rrF*Llrq1+$HJ2 -'494$282rjRB"1LlrjZYM282rk(j!b!Gm!"`%28EriRJ"kf464$e%rq!U,[riIJ( -+KfF)HJ!k"&1&B!*krce&rpji#$e%rq4+4QG',bi!%Lm!2`055Lm+6VVr1Nr[!!l -R30&Zrq3[,J!5,blrm$m$,blrl%kk#`K2l`!1,blrp$m$,blrl#mZrr"1Z[bX6qm -!$N*!28$rf$!ZrpL`EJ!-C!!"1M!Zrq*R1L4!2blrk#mZrr3r,[rN,`Y1Z[f16qm -!$")!)!T`!"!"28$rfR3!0!$8V[rX)%)3%()!%J$6E[rNB"`r,[rQ2blrj#m,6VV -pm&"228$rfM!ZrqE4E[rN-#lrfV"ZrpjQ&M)ZrpK5E[rBF!!`!G#-)%"#%'!!rhS -`,[rDX'lri'B!!*3`,[rLCcSN3$mZrqJ[,[rd2blrj#m,6VVp"Nr[!!`5!#!+F!! -3!6e!rpTd!$3!e+lrl#"#%""b!")!dflrj'!F2blrjMmZrq3[#dkkr@K36ce!rpS -`,[rQd@lrj&CZrpS`,[rD8flrfNT!C`$r!$JZrpKf!$B%,82rr&1$eS`J3a!3)Ll -rr0+-)%%3J&*ZrpKJcK!Zrph3,[rE0#lrf&*ZrpKb!$)#dS`J34#!B!$q[M)Zrq4 -`!$!"AS$QJ%cI(2K1ANje6PErM%MR(cJQEJ!)+Li!$#KZ!"!X,J!8,8[rb(!Nem! -Y5rrJF#$A`#e,rma`50I!,8[rj#e-rj3Q2!!!!56AV[q8)$`!!!*)dDlrP(!JdDl -rP#Jm!*!$J0QZrj6CV[q8,@lrP2qd+$`!!!53!0QZrj3YE[q8rlMAV[q8,@lrP2q -mfDlrP#eZrj6re("mdDlrP#eZrj6rT#!m!!#!!0'Zrj3J,[q8N!#-X)9M#R"P28! -!+%lk"RT`!#i!3N!p32q-*'lrT0Am!!#!!#e+rkJYE[qNrj!!,A`!!)!!rqK)E[r -S,blrT#"Z!#41N!"36b!ZrqKQ#R"R28!!+%lk"M3NE[q3!&*+YHlrU'0S)'lrN!" -55*(ZrkJY52rd)'lrN!#4l[qN,8Mrm#"ZrkL4l[q3!#e)rq`J#'F1)'lrN!!LE[q -N)#lrl+)Z*'lrT0AZrq`Y5[q3!%KZrr![,[qN)'i!*%k3!&"2)#lrm,#Zrr4N#R" -R28!!+%lk"F!JE[q3!&+Zrj!!%"!G32qJFJ!5!0*"8d%p3Ir3-#lrd0"!28$rdL" -Z!"`J%0#Z!#!Y32q`*%![$#mZrlJr2!%N,blrN!"1Z[[b6qm!$M)!)!T`!$!"dDl -rN!![$#mZrl3r2!%N,blrZ%kk"lT2l`!1,blr[$mm!53[,[qi,blrY%kkq9a2l`! -1*%![$#mZrlJr,[r3,blrN!"1Z[ZJ6qm!$M)!)!T`!$!"dDlrN!![$#mZrl3r,[r -3,blrZ%kk"fK2l`!1,blre$mZrp![,[qi,blrY%kkq3T2l`!1F!!Z!%*!28$rM#e -Z!#$rV#"Zrkbal[q`C!!%U%*!28$rQ!aZ!NMrQ'3!!-)`,[q-CJ!!M#4Zrj!!8NU +:'&0PG&4jF'9'FQpY4AKdC@jcD@pZ,R0PB3""8&"-BA9cG#3!N!0)N`!#4%2Sae0 +dG@CQ5A3J+'-T-6Nj0bdb-$!b)%&XB@4ND@iJ8hPcG'9YFb`J5@jM,L`JD(4dF$S +[,hH3!bjKE'&NC'PZFhPc,Q0[E5p6G(9QCNPd,`d+'J!&%!!!5*-!N!0b!!%!N!0 +b,L30TD95CA0PFRCPC+@P!+@3"!%!!%3!!,D!![bk#%c!!*!0&0X$!*!18f9d9(P +`C8CbEfe&H(4PER0TEfi!!EJ`39"36%&8)$8K!2q3"!#3#S!!N!QI*!!!4kX!N!3 +2!%,"e2KQ0T&p$SpV`eIm+6a[rE[HVm`fH#$0ReC+dX9IZ"UFq&cSBESaqjBdD'G +frif"[(hlX!XCPCTI#MG5cE4K23C5%DjAYh&p'#E$@e-N2HT!!IaVV[HXEcqV,MU +MhC!!J!962&B!)41Mi&',1'3+bf4"M&3D9'ER51kJ)&@4Hl*`lCrZV3H+Db&M(-[ +PbY1Ncd,[1j!!@ajrVj@c6*3'jej86AEFl6Z9FFES)LETrk9rFdU&61M$DK3+P,M +ZRTJhcV69C``R,Xc4b"QCURGmBPpljYYUG##BlLHMZI4q5&%98#NMrIj$4EeV2$i +h`XfB3pQZDi0F-rEY0P+6'SI$0cX1LU%JGiEbK,ZIiERj$m"mcc5fG(a20"Ai!*H +ISP$Lr)IK'`S")HM3YUmf`&bA66R,r3'`Q"!!`R4%mZ3XRS'f5BIE62kL+kTiZic +CQLIAhib#T@K$35dmPEkHdVAVU+F%PVbIceFUIJh!@5Q@$#!NM@+@j)$U$PX6bF! +DU5qk3ic*X)@&FK5p*+JfeZfj2b0"KTDY8Eh(pC+Dc9j)B1fY)mM`0(9lUN5Xc3+ +J$+LL!cVMBchY+HFBA)iI`mbq-Ie3LAe@cprK&AC4-!clhBekEkK)CKlPlSD"5HB +S8)(Elaq0iEDXhjB4plLkMTIkaj!!PK`N!('P@AJ*IS9'UPi'G20M#iNUlqB[d'p +)qAV9kDbHCX5b"K[[JFiNklh$N!$jPTUdj[L%fPG0cG+@CD@&+rc'e*VC1,D2M($ +-,FLSUI@!BpfA,A##%f4k&d@`r*`*5pGN6q2jEe(F(YG56b0dTSPbXr1$EjeX%$9 +(8'l,mTC#aJ6ZrJ-8-,#1I#2lXJqjb!%Lf`@0E[*1l@D'i02rG`VGJQ--R%qi9ZE +m[bbJ2TKa9e0)'S8a'TJ(6Q!*GLJU&h-Lq(Irmhf(688&aIjTmfB1j)BerS04Jhl +S(C+)K!KINK2ZP4%A)(K,&Jc#bd3`ea%ZVGdI3#lC*M1ViTY4Pci*R!j4UHD1Q$p +"Akp#T2Dl5NI`h$dpUL83G2HqPI-MQLD5T@0M6cqljKdc,q@5(MAGQ2(k4@TYRAA +I2c5#h&LF4#lIjpJ@$HJ8FjrYbe8EZ2)JI-eU[4+lA3l-X9Q24kE6!a`q+Ulb250 +ErT1"Jd(RXR@ri$R)dMrdNF2!K"G4lLm,aPhYNANpM1F$5#h3Amip!P@)Mhb,RML +$'*M5Rk8VLD[VZh`U)Y0&YKFqYX1ck'eJirS9"4Sa[[Vfq-))h)0Mm9[JDjYK'bX +)cS`pdY%5bDdU4r!C5hiQjjZEbikDdK'c4)i`leGfJ)m!e$VeBMG9e1+81JDrH+r +(&Rqqha*ipmr!9c9l[pN"&,,mMS`+$JFSA3k*IjlENRKbB1**6!4S"J!'dkX+HAp +,i$NDJcPRCZ#CZLZSre,*p$f`iaZef@9SY1N,0j0LbGUj9#M"aMm6NGpE'@aemUD ++LY[ElY49,lqj@*p-eDK5`8)N%4#G#e0@Q-EP`r%mZ"iGj'!2JTEM!N'$*ic(j"N +q0T9ddk9IkM'2GT2j#lMAFYek+UUXaUlBbhb"Eh$25#FYX4&'(h0i4MZN5R2)i%L +e2p$!5VCB'bUc@BT1[%Dfh+@5p)Zf5T83bAL1Y4rHPpf5dZ&hG0RR$k)"BB&X*QF +Yp#c4Iq`'`cIah2SeFjK+0(%dh[P5dD'0X%8-XQRkECGAiCZPl*6[C#*KFG&q"+e ++NPAPp8aUT#DKeS-Xb-pZ'8`08dDQCZBA1RX0@8EVaKGG9dAD`IpXPG19$cTrYQi +)DEk!IFNd%bGP%55Q!B3ICXfacf[lfDQ#i`,KX@B,SmpM8bQjYL-h[NR%8B$[Ie9 +$)"JLJVMr3')Z4"6Q2-P`BDY&,q6F"r"!GY(m4V0-XqTcJAAqf`,4ah`1UiY@E%R +i*fm#S"iTN!!if3dU@4Q)Zm'T06BH&Ae!2-j!GbU8FN2Y+`jrk@%2Q-j0ph5P4HN +i3i,AVHeq3lN,k(l*!I$kd4BVI&)VPPdBd*`1cQ4E+ceYL,@MRqJKG#l-fbf0p2) +$MJZF6H03aLCJPD2P#VeT)-UXPJ`CBKrk@rL2Bh,)Z`feHZV%UkHCN!"HmV[Ppqa +r3!Qa@-[5Y[lM)b&Xk!*Y2ClVMjZ53&6Eiam8`!!EMp@M2VT44V(MY,fThHiD*'S +TBC!!8!02IFU2QCL@ZZqUclHAJ)mdJ'-4bS*4fp0-kpDCLLf,#HUHSQI"cb@&PqV +!bKa1GAVQTC*[&+$+m+)Gc&305"lB`HV"e)e4RJkL1LPF*996-HEI4`C!8`E0[Ck +MKC@3!,I%XjUF%[cLijm*!1-F1P-(TMMUR8(*r%[X$MIriAK)HbEfPGi+GY,r)(H +0X,e4Q&2ZU(UrDcr+Z5jihmcG&'*HNZ)f'Be!F)"CDk29%eD,6!G$C2IG+14'3GF +6Y5iYJ0K8Pm##D9%0H6!90YA*NiJ(+J1jG8S6FbVTaGKq#GrZdY0pk"9RA0j2iPe +GYBfd)S-%!dIYU"AZPZIb#(DQXBUrKJj1TIP,,cF62a)k6Ch#%QmB'LT5L-NQlZ% +CNRr342*N1'(pF[q!bY8bMplGc'0J@3#9m6-[B&p1-)k`G+3"PLSSVlJ3$HJ33ja +hb(fJHDLFBbpVE!hV1))1qi*)`li5c,mm"'hr!N6'9V3043`TB6TqDbjYFENkBH` +$e"h'"MTcr5A,HI[cHT-cKA,BM'-Fi"lDMA#G$Uk-I9@S0NK$QX'cib84"ad"ShR +IC&IhCI64f*)E`""6l+`e9D!dUhZVVdX,1r-66Cj@!qiSQUc2kd6@Ea@VFTh*QQ! +F'R1I8pGRK"C3@08P!l@cK"6`Nb*)$)S(rCTfb9rBeb#2+#qiNi'YCiLbf9GCKR5 +cJILZ,R%hHMeqZTa'cK+MH@@(0S@k41-"dmGS#H&,#eN"bcb)H0Y1GiHK[+S-&Cp +42iYG1F6`qeQ8U92c`,-T"j,Q8!Z[EZ[BXXqB&IAS%fX$249$`(del(mH[dYb+'G +Q-%*Z#CI9E*dSCll(BZJ1XEVC,KPU5,J$mk)QLKmp#2Ec2")0&!%$G2LBBiFh)[F +&G!UAIEq$4JaIEp[5GJ`4UTj,2Bfd*blf!eaA)1I,Vqb(3rF)Aba-Hel)KqjY-MN +m-m"9KA0`kPiHeLNhF%C*p[8f*%-h-[N0bMCreEHY1T&jKfB*(r-J[UPbc,[Mm0- +!kb4QkHQGhB2c*qfEYdq4C2R&i9'M0!B9#%5&RN&BQbRTNkADQ6*X`SPLk)"+Pj@ +IjN*@KV+#SNVSRl@&F1)#ZDpr)eTPAIGlFF"rBie%Rq0fB,h41Z@)rf3JhDC@RDH +)pBfcHKPI,[Gm+AihF14aX8LA+QEbTK$'HqD3!$CFM$0MPKidDd860+pd+RX$G02 +hM0GXA#M*B$M6b1$SNMY-Sl1E0I0F'lrc3d$J&I!h4!8&R%6-$eKYU*lG-L&RJ+a +aQrij'h,9m,5aI+[%2j,l[YZ!b(R"(Cf!K-HhS3VFBAU@Q*NK#l4cT5bK5#'aaPi +50'H(kF)XlK*0qSj(S@#iVUEUQ9iCl+#Z@N%(EMmP-f5")'Kh8rpX)J"0IC'h*#l +qj3[UXVMGeEXf1+$j&6$0G[r1D&B01'"!)4hj&&($VmK*PdKliiSki19(Bcrb9VD +P8i25Uli-S2B$T%bpj%8U"'&`I1Z!He#dCCiBVfSJ`098*Nbdjh1)"m4,a5Y'6aL +#GC,!F@YAEYTN2l"N8p1dbf+VlUHQ-'PTA+m)bLk(&f9k$Pq9MGfGTcm'4!@55U% +'1+EZbSG`Ck,V*hU4UCGc6kZVK5FMVa%qZA4Db@(Tl2irjFiDkLILdirGBc`Ike0 +LTqB,D!dkSqP0*DYNK9H6Fq$U*bCiF&2ZG-%55(9dlD5`$,V-1pBHNc012G[F*Q5 +*Ee5bL4[,4hp&miTAmfN@16ceEA&BY)m3Ma'bfbpr#RTH$PS8!Nd6&NrfY#R*MML +lH#r8)@#P[-,VA2516iAb*F4caeDcF([-Efbl3E@[LmTbQla"`#!ke3%6%3Xp86E +10(pU"5`cL)V$Q4625-m,Ik#LrT!!lrdL"IQZJiIJRrP)r1MS#4IU+2Lm"Z&bUe@ +b4IPdD@+6E-iFrVF#66+fNIcZZk8G2FpeXlT,fBhUGNBj0MejR[[D,$M$3A$M(Yr +f-bb9Khial[FkJf`4kA,01UCbjj0@&Nh$BY"JZVA6hZ#6EjJ[c80)HGI6pZ3dhk0 +8Qqrk36+6C9,%de&BXlhmdFrUQYb0bh9UMc-liH5[QC``-a31+!jNE"fjG@2N!UB +mdlJ%j[@*MlG6HMdU!ZH%p(F,Z[Kq2YGBZMmrhj9VcGBI36G-jRj4dY5VfPI!&!5 +be*q&RdB1e(j,jp2b&+%bVkl,aeXQ*blF9HJ+Af2N3!JAFZ5DMT)l0M18Mm%*jDf +",1"6ZP@#DlfhYLmGY+chjDBlalhfcrMK[,pb30$Q2hfh(hCMcVSNIGkABkdK2c% +b6b0Ghq(fFI%PNrZLaFb@RI85djp&PZ4%YBpK4JBV`ij5@Y%8G-NJ,'-#FpE0!*X +m%[i#6EFEP)'adlpL+q!lMM[#`19YPHB$LY#N&aC*K(LQlfGJ*S*rV)UH"#RNrNf +a-1p@!cie%Cp(P-S``jL-RDf*'J+2q222$9PVPYCGqXcJmlP1G9TD)h5$KYB3m@R +$UKKA8-Dj8IA59HTpMc8l``6m"lV&j+YBqaR3H&HS%hRKKT[k8Qa26,B"aUp+3-* +-Q5JSHQ35j`L*(iCFcq2ak'Tcc*0@@dCrK2fFIcKR1jqKZLS)j8)Umd)VII&hV90 ++JQY[%3!8cQ[k)mbfcB4U6!aGIefAcriSq81*TC(&$H8QMG[6j#K!i1(hX)N',rV +hF"FY(I#0ME(AG`d4q-KLM`jpZI(fS"'RdpU#AqkGL"h44[##XHm&-kKe2XGVEP' +9qmf#XPcRbF2b-%5"KhXQ,qS[PQkVUD(YaXb!Sfq$r(@4eeN4A+,rcHHaq5pHi*' +Z'-1IdEYMecYdAI+DYS*M&L-M$H"b5C3hh-*,Ed4A14+TFadT9ahIG&E!mpi'h2B +J18bH9L@qi6CVLa*-e*RCYh)9iql8qh42HMU[5Q!I(lJ'@ZK9'lN-hDm*k@$q(+" +8mm`I![e"S3Ed8mSFIC+Qc#Q[NM*j[`5dc#[BUKjmBHXeMa6YHMk&k9$eT8pX&m( +JCe3NAi93P!!eIircdc,EBqa2@I$Ve4"6,Y9NffVj1C[EAPp0IJLM+4Z%IkjfAI5 +5BEa(JLJhm5dq1l5%YKC1LQH-GUQ%!&0ei[mRMUQ9c-2j+"jQYiq6a1``ccac[`q +hd4S01$3aZ#%LAdI&Ac`8GrI-HL12-KLmCEeN45lFEDMQ&Z#r6S(TVpdl2NFF8rB +Q[JRY(aS9klR&Dm8h!kKd!1p[(US'km'hYEGH6q)a@@d'4JD28-Hk)'KZ%DT'rHK +-(ENP(%%GeVb5$r5p@hBSG3dHFd8F,hV`h9U45pVPf1JZ'+dmXE[1M5N&aGAhC@F +kirEP,E&hbP`Jcjc[a82@aA5XSD1D05RBNJ54FcU2`DYcV-J#d*%TN`@p1%L%IlF +B$0d4TH(5mhNZi(CA'Sr8H`(J"GD`1THaUMD#'EI#M!%p5H%p"F&-h`el8V2JCb& +,'3[BCN49&K(,XSP5ImJE2MS4'J$Sf!l12XVk@hq(T#)diGhIcfZKRdc8c8HI&j6 +8BqXk2BJ39kaL4Bq!d%S,!#0Y@#[YZLH6h1(q0&*fpp0CafR5Uci%L$FebHTVrE" +V2P*#eERBd,bG6@T8VG3qqf8*lhQ-*,eXN!!RaNprjc(Re@(0VTZIN!"(`R4qfH2 +)@L,6,BKacmRMHiYA#AZ90+mLVHlJhK#,m&rr'JecB*Lemd&!64DDD4f(5TZ2DK% +r'+Ql'H0YZ)Q06qdc6[&2c,6Q6k[kDS'IDSN`)cJ8c*+1SbapF4FT85lIamDlKk8 +Jl!2IJXYK1CL`'LDEFD9KQ3*A8ANPL$!S!$m@f6'J)I,159b(Y@1aN6!83Sjh`*6 +$d[lTmXd"LAZ2[*B,BbL9j-bd31)jqE)Sj!+MblYQRr&TQ#N2TSY2#DHDLKB"K1S +MP`JDBB'JJ+jFPC-b*PDJ,)J2aMSlJNIT[GEqje3iPH6DiqI&!,fBf2Fk#,icf6V +RGfN,8)V#&lBZc`4PJV)`IZ0eMbJ"a3bhG$[(D03+"c"PEJ(BL-qT*QH5e4"Zd$c +65,`FDrjFVKH*-0+*3Rhd2EN**A,`Yhj-5lefL8hD&NU2Qbp[dI-eIKhjBb,GQD@ +9@(5QFFK`B89p"VfGQplKXPpSY"ffYe1841$R86Vlcl,j-ep"DcRjFT!![PI*aSm +fii5$ANA6*X*aX2J8&13fp0EhHf*r3YT8S2eiQ-"!4SC!Pb++X6++E[CV$SUV+D9 +%EecV,D#l0FKrl@T*Sq*#ajdT-M!*-99)T2TUJdbk1cBB0G1RdU8`,$Pbb#-3jC! +!iTeU2&G!3i$3TPj[AFM3BQ5ENmD,aUcEr9Qif%HR64DCcelVHiqY'[Cd+a)NDme +4DSDMa(bKqY(KDNA"C1q25"bqZ-jRA&fZRLh*4F@$H'[Tj!ZNm49EhU`'LjR"rXZ +XQG6R-R,V`B,'m8682UY4G!"*Z(PJ)8dUQhmASIBJj,'BNN)p5lpKr+f)F,V'D-l +Zd(VeH3h-k[eQ@dd)"48H8lTapP+mIcMePQS&9Yb[5XDG`dKR'5jiaC2qr&ar`(2 +*mD-9Cj5mGB0!L0%&)Er$)iQ#V@$fc,Jm$kpAGpl[1GM%2K0%%a9T,-k#)r(mRj, +TPA+VB@('cYCZh5Nm,-+Ilm!@LhDfc#YSr-6a*41Rmf`FH&*j)d&BH@Zl3Ha&pFC +AU$lYRF4kTf9Pej!!f,-B5ePZ6L!+%N8U[r4T$c+FCc&"559EI3S`9+56[6EMpMI +EG`pb%$*G#@aflBeCL"[4F9XDr'4@K(`aEUD3!(%`J,5dTj2GRA+3!15eRk+8Q-P +(K9Fkm`9cC(,dS'E!H8bTNSfh-)XPA`F-8&2X*EMX@%f60Zk,Rm-mr!!-LSM5UaU +9`#3-lYR%9Z8UJ31I(+KKc(5RZ%JNjV++qX0![(i5raLI)c#f`Sj!(RZqa94eG$M +21j,0Ia)`,flrk$"m5&Pl83GSS9ENXD6d@%RbkZaXZE9K4Xc&`SZIHS"C%Cr0UD' +DmI9+&RV8&,XcJPT$lm(+G'kE'aapl*+f!j[MTcj(lA--h[(!!P2bI`#d%8Hlch$ +r)f-lNmA(kq$ARQkN%0(l2,Ba8H8,e[CmQRIJJ`a+pH!5hVEN-a$1h5"(0+8$f8% +8QG'#JGXbilKE12AX8r,iIY$YKHmPcEi8Er&kFH,[!UB1DD$K["@K9&*!q1BB-`E +5qN"8J!E'[V*P)4QcBa9U)M1+mGr"'FB@NN53!+&3@5QLK#b1XCS&$cp[!aS`JkU +d6hH00kQ9kSK!FA*kb"BGiXPa#6N'#BZT01lA&U-QBE6"Vr*#,6(3IDdPLFi+2c9 +Y12%hi6P1c[FdmEV3"H*f[EhjRkcIjT,daTMG$ECb"jhH+FD,1h[k#29MRCCNb%h +!m3bM'i*B1kZ086YSBJCf+P3fKP@lFi$PUaPcUKP3*KfHqY*F!SdiJ"aB6Ph*jjh +eYTd-eb2FLX6[(%EY-bGEq1T@KkUH`cq,'!e8-h5$6*5lND$1IB$GkJT9L+mr!Id +)Var)AiDNY['fV`2drLVVfjm-N!$GTmR@MGZ#"a$fiG#GUr2h"h*c3HF'U!m)+pI +DK,28j*XD&'bFKQR(K"KDmbre@Da991&XUZ6pH(Ap#`4[MUbQl[(K8kL5SJV)&UG +c@8GFIFaMdB8$TFKGGMl-J+k'[+JNK*43'4&Jkab@Hk%f9*dI"k%!``c[03i[MT0 +)H6R*%j,!lL'!)4%)P"PJ8Ke)TFQN&Y`h!a[QZ)k#3"84U*h@jfh6#1!KZVIlY3C +@91V!l8q2$lbM[VeAaNTqKcq)qDRQE@0H53JPSGXjLX-&P5IN5Lj%R&`PqLNL8Q9 +BE9pMVZkr#G*T)ETc5&YRj(a2)UJDYAG"MTLc8%UVjP,60C*#kY"H2&Fpk&[eq`* +XH$'Qh,kP3XVP'NJ$XkY6XqIDiddM`p`Y'aiC)+9$Gll)UN!+q*)AX@8JT!JGpYK +P8f)[bq(H%@-pKS3m!bm*45+BKpq(G@pCHHZeiSBR1VhPfiSM1@S-(YkkEa`hf!9 +,i@'"QEFJL*1#dk4re!2AdE#Qqlp"kjjS#9a&X$j#Y2HbYB*BNDh(kGrq)%ihAQq +VXie8%ADppe$kFJ*(jl+bcmpShr+JFdU9eE*D()$0eI$!lbCH00cCMD&cQ`aK5%r +4*Z5B+lL'$dfGSqX#GT,8lI84k(j)idpYCF*C&BM(GD$1b1TXF%%V4qlH'5LHQ6! +E4c0AJlD)%dj2B%kRJ9L@B"cHeDPf@l6rNka#,RVY91l5U,k#5N%jadhKjp["B+0 +G!5EBJ)cB8rC0YCAmbhCiN!"HfL(fRcZ8EkqJ*"6Q$FaVASi5AY3)dYA49aMq48K +6)$LMU)fQjX&!8a#N*Nie6kcP$h+5F2N%AjF[8rMhlM2IjXCUeFkc#1*B'cI169I +G6Y8merV`1rCLELVRZ%0RUVhEMbRC"q)b-LT5SXl8*SKPXMK4mm*Xc`*EDL62UdV +lS-6EZIi@@kkFc3#T4a21G9eV3,U664Z3!#G5945D*k3Dp2`TNZF+abG4PVYQ41h +akZc[*mjbr3jdYV'l,YqFaXf,TV5F%qd,pkf4*-[Ca3pYHIb+Gi"4S%DAKaBEaiH +FGaBc)QBJ[84U&lr)bk0)6#f3!2`U98m2AqGlV@l2MeAIYY9lL8QSSC+S2a0pGV( +9`JHKVfad#Z9V+TCl!#%i%8fFL&[j5Ubk"XPj@Yk*3Nq)i3fQH3jC#*)3Qkq1rDI +cH)EUMV5,h@YMhp0NahQ#GL6,$Q&$Id08QD8T**380E80UGBpcSjQ+`d#YLqf0X@ +XkPF*VhPZDS60IFUA"1T-YKU1&PK8AJ*Q!ZQlqYX`PX8PX+8XbM@jc"8f*PV&1VN +0DNh0##pKH4dZmGf62bYF2m!B-'hbeh5IZ5D*Q-p[k5d)+k4*5mN*E3BAXDUi1Vl +cP+RG-GbI%IU["%IDE4V5cE&r9aTb&(j)h3e`V5a-3IGqC"'VZK,c8M@U4pTr'N* +5MTfh1Srkk1rZ3h2+9-@&"9CBEm3MULRK&LJF0'3%UhZJ",@2J#J+4Um'H2!jFZ1 +ML'0j2DQXb9rT2,XS#QpR,-m8KHjiIdYI++hq5d2`4q8SC&rRb0f6F!G5l+pGI*3 +fi3@&"X-J0!DBMpCBc&D2MGM['R$`Gk'-%NI4K`9,0P2MaJJ81rY+dL"Hd+CNRMe +YqNfAINaPLq(8(KFdPbimTLk'pR*MH2HKhNTYbZYT@%r$#jX1V-[A2GN,'(lLR)A +Y6XKX#c2PN!"k9GC,*DppYSlHkYi1+j0UIE'aXQ,%-f#Fh5h5YplUMM[1[89cYp[ +3j+R$5"h&C`6QkL1!jC(fqUrEZl)2VY"FfQ9@,Q&iU&Pc$(M-3LNC9McP4UZEFrV +I@Y6&6p0G[PNkDQlkc(j$cpCYHHeeL2RQTf*QqHSU!AK,-irSM",c[$YbY9HlDhM +hq*IK%*l#'ap'V[FM#[[r-BbUR'Ym'-&rkP%bl6DZ'j!!KBRF8'p-QliA#"3q[3B +[i"GaF#(Ef`BH3`"e'!VTK`69fi+'(MJ(S!4M5mS9dCVA%#68$S@UKk!6%&R$)qB +$h(m0"RqaCABQ!lq&58FPdL%$H%l-EV0[6K84%Xh6E+2U9#2!haM,%pqNHHb)YfZ +j0TUT)+YAG@D$@fe)ZUkCPJ,9hdT3[k#*[h6GR6,'R"2lfTc[N!"DMr,P4KrFVQ+ +cp2YX8r!6*NF@'YdY)[3Uq8kMEqpa,"r'BF-TL`Qh-mG*EY+#[r)'P%)2,6[NJ9D +RJ%%X5FVZG$UJ%4GY2G'Jr#)`#NGYIjh2FBR%P43PR0fcff5c'NX-UL4UF`1JPa8 +mE(hH**L5Q*D,KZr')&KIldjLmHh(f-6IQl*fZHeMB"-X,Dm4mH4M&*ClVNETf93 +6e[",R"+b,TJ[KJ1N'QZT1%@R&00%fB`T"Ad0U-CSl+'J-Xlj`lX[T'S'k`@dAq5 +0C3p!cmrVqQG)LMAXXXa"VifA#3F2[pAY@Im$b2Fr21ajai0a4#R5$bU'kfBRIG* +PTK%fH#erX%D`6lNaeJ,VmUEY#iai-G9UT+9()*QpQI02"TFfeM@be8EK0rcEJ0U +H-X"*k8UZ#K[3q$[&Ki&C-+I[#f6GJbrc9iTmC5iF$9)X24@)$lA"ERDX#"8i-ba +6GAPYH"'hbQqf*fj(aLjVCh0`Lr%+3*pmUMLJTFeY2d[D#Z!`J)50NK-X62E"G!( +a`i*+e0+qXF[N3j,UMBF)jl43M2T)5q5$HSQTCm!8cdaM&4`GB(RA"8k#lK!9Nm1 +*8E2r5q"Rf%4e)-,cdN-(+D))[FirUA-[prVFS9lE*L@)fXYd9GQJ8jXDR+jilLl +b(eYHQjJ`TN6'@45F)US2ElmJ`aISr)51Cd6ME*4'1Ei%0&Zf(9k9Hp["EVAIp-4 ++"0[2C1XfJBFK"S*(p4rfY2)-cqS"h0d,&b##+Ji$,8R6HXRUc)LS[JN,0i)'-*F +91XP5'9'8jpDqcRD#mrcX,)1rLped9d3TTZL52j184m+YFpDN-1qpJH$M4+',0UH +&b-bRLdCNR8Lbj`NCZ`jIHD'e9Ge0"-*R*1XhL&j##2ThEGrYj,RXM*4d+N-&KXE +#%,RNM8cNpZC6kG$0$1DYDc*rS#Mf3qG8B'dKL!6CK8$(Ube9!+3#0r!e%TmT396 +%"[*5@D*Ae&q8r"b"E2Ym%V0EGm#ed#N'UP*q2EJTYVAemCK&JY0FcJ9aeE3PjVF +"+UR!lFA(*VCZQeFSb)5pE40E2,9Z%4PYU[**bJb!1eDrR8B2bYkc@T`@K6U"9Ui +d19Ph&&R%$F9mR(+)'rl,rpFP&aKpRr3802$@"TNfK1M#@%6f1h24(!Br!##44Ve +IT'Fq2R3[K"[CH(Fh02#PPq0ja"K'a!f+QLbheVHZPc&#)&e)bj`@9M8HPpQPbLB +mcK89D6&F0FEQMATlkP[8YClY26Y-1NU)J1(%%JG8#*m#q!`#A`J*[&f+5UM`&l2 +i#eL!$8P*DBmLRPK*`[9E90-+-dQkFP&@k1qD8p(Xe3'-b0aEX4&F0dA9XZ(+$PB +0edpP(&lCjN1UZ([le'A1%+A4N!$TcKHC-pFT#la"f+X3K`XcbSFp+9)GbZ+L'cK +P5%6'`kLeXUkUQQ2+3$bF$3Ah&Zia,NIJ,leHqI3[3[Gc30*TV[6#(kQCQ,'S,%6 +$Y9E&(4NXR16c,8LebXqMe[6HLG6%&4TD2F65)aNBP96'mYhdfa&)rRNpRpNjaCY +['2D+T!EQlTY)Sp+0$AdV(35#XV8Y*HMNlKR"02q*C(BZ&VLLA43a%f3CTjm2a$4 +@)iQ4([Hmld%i"ADqM4mmBQj29P!5N!#'"mCT@HDk$1-+$p#'j8he&DLEhkN,kC0 +"rrI'HR`+*[hRb#!"'`@Y6D#R2fj52F-UcM'TqrUXP-1@B[JY-lY(Yj5Zr2r3)8, +A[Hf8C5,+elb6A1,G6(rp)"`hXj(PiUZN-+Kep6HYCA458SF,U6)lFc"SkjA"K2q +@'KMA9XHP'HC)2rP&$L35lZ5mjXXYbdY2DcX(6I"89RbKdPK,e!(q3,D3!*bkQRQ +AFl5,RQ-pc-4qqdAYIph0Z+3!k`-FaUKdTB8(KHNj5NIKrALMfaY-MrB"hDVZG!$ +NET9JTeLe00cP6S*9k++[qCC@)!a@Uq`HbS'IjFA4[i1p$@i[4LHI*a2[-Z0&VJl +cL%4GkrL8D0&`Qla053khL`L#%%RHU&N!)ck(cqdKAAH-4q4jij!!$08&"elPBGb +cL)R@0ZFq+",D6jq8FaE)9&cmmrV(p8R)NI1[6ci*bqJlZQq9fIUr-AeE@CP#i1p +m2dR$L#bD93D4hA')0Kk-p8(8m&4'Y'l4'Q*,!F@dX1lL'CUJ8la6[J9&qGk+NB3 +-@a2U9%15j0mGp#bXThdjLTC),"#3!*!!'Yc5Z3!Aem4X"%-CAmmT-NY4J6Dh*N$ +qfakPh0%%2T4E(EP&Y9A#NZj)c"-+96(JF#i9Ec*"'+B9'A$BXQdF39+f%f$kmIP +Sq4cCZp'1*0qXSC),K['+)$5XQ4AC`R&!,1mM%+m5YfT32afp00&qqf3Sq3HA2K# +,m$[$0G,e(0c0dHq)*j-jjZX9,icAB*8"3d*apqX884ildH$836TQTR92!cJ[fhr +V`)Ur8YbKZ-T&F52b&lN,+dP'4#biC-RPDN$)EK%@IS)(BHTjbAX)A!V&I[cE`0m +&"6q4I%*V!k2RfH3G0aP@-&QINH[8+@$DC[#K#6k4TI-PZ#L`a%M4IJr9Qd9!@qI +Tl"3ZUiIqji&'FPD(8qHeL8UT2,r0mFhQ'5YpE,FGajrk8LJ*MN'PBk2iKU(38QF +%Y(hp[##dIa20)i4eGQkk[#!S"Q,GR%h`Bkc*#l3qINrE3eZA&&q","(5lN8!IEP +,SQaa(@5X@)8(@**Z3d&XVcClR*0R-E4kJef!N!$9aX0JSdNa(5GcZm-IQ1$UJHZ +,KM'B1Kc+HijdREXKV[-X#VTTDLeS1(,433BMN!##S[QUpKdel&+$pF5[+K*)+1Y +V6df(Er#%2C9XC+jXUGrHca'GpT96A0I,$Ei9RP@GZ1SFV-YFBR4UNIdCRXbjI53 +&MEVd1VeE-%2NpHbB&*05Kq*e"YY9e!rhVq$4Aqlr5IN!bk[3ca%B3qc&r2VdAE! +a5fREm&Kkp!mJFiZ+'p6XL-BYjed#HCG@-0T-`fA$%BYN#MN[I+8CV+mlI%*ND4a +k969Y$j[8!UISV-Cf5@(jr$k-4cV3qUKf3i'CDV*`S5EKK(T"1L(l[HCFfrFcrI0 +@Xr'&,KeYeN*EKS[PSdHA(e+rhHmY'ai'AmPe-a81T8RFH@)F,U6,dV(3cT0r8pC +C6cYDJjA,&HMTS6BXAdCql[eQZ!6(P$a"EmC8BRRZ&j5'0%&E*pNS-A[Z-c*L39d +p1m-Q@X@,A&,)NHqeeCb`SpJA,-HQPCQe%@9-(6KEF)KkK6k'b9ZA%,MEk#r'HHA +%9I-kUFpXUY6kYd[[QII28m4NU!$AjFpIr4PC"pCSp-4KV5S5&EYY`E)Il-U%DUF +62m-+dRQ0$@)Xja[M5ShD#q9A`D*,Li*DUaGP2+SZ)U)f8334kP08all0`U#QcU& +%S3,j%2IEA-@QiM"Yb"C5blJN$hk2'Pm!!INZpmQL44A0J)#cF-'@$@@c@ll5i'[ +f$H#[[9iJCUE@*Vbc+D3)b8`j16Y2lapKS,Ac$VaU5KfJljR#e0pCB,h)-Al"cEL +Ga'Y%9Xa(9XG,QF8dcdQ)a4IJJ$hN3JTSZf@'$ZVpZRQbUPbYPC)@,138`GF'rGf +hi(p#TKT*-ACT)hZR-lq"q38RI-Dm`Sb9BqZc(aajK$*f[p$2jHY9V`kmqDFq0EU +6SQlD9CGEV"fLr@AHjRRUK%+9$fJ-kC5MG*%ipJ@4(`4a%&$`"ZrUmFf*$c@#b$m +"JAqF**E8AVhe"j'#P!B(+(9Ml@Di280UX@QSE6[VBYRH4Y[PP#!33MpaMbpBRr4 +HY5VRaAZr4)Zk%ALT16,kG6JccRVU95C0Q&TekdY+blpMfk2YC*TPCQRJkUUHb#S +B4+c!Ecp,2NVqS+P(q'3Y41#G@T)D[kQ(cGh@#i3dl%)T+YYh)-%Q&E'AIGVJk`i +2FDhMkJETLR[EeR"0U5``&k`"UkiY`"AMf'$cLq+N([5TeIeT)9"I!`Rdr$rScFF +E11p-BD@9q'%['Hq2S&e#@eq(T,#PE*li`(Ppm61beqM$`QJMX[5*c8pRHY**r0N +(GM4L-9MF,)mLm$pUpkISm24dGi"[CTc(1Ji(Rr*D8bPIYh)ALQX"9f,S@`MHDVR +GN!#F*)$XX5E3G9LIaTAT!L8)cX-MkiFbYdQ#C1CCmK@aJb8Y@*95Bq+$aMV()0( +aU2)a9C2R%EiVm'r8aifbpH921%2a1fP4i@M*1cM('EKj+9(*NA*`F-RUVrS[@eZ +5b0V@$rmAQrGpQ(CNh+N1X3Dl'GNmi*LeZ&[e`!IrM3X,!TrdRe$V"",A)G,@+P, +#1*E[C3$S)12`)$E8L'8XQjUG(G(%NI,YrS"28KUlhB@6QrSIIH3[88RDr9kD32[ +G9dhPN!$QZ*8bCSS&q%BiN!#*`4Hf(k*SNA5D-'X5%a1KE[*'DI6a@rZGZ6L"E@q +a1L4arXVh0Tl$"ZKSN6h5qDq0+FhSRjkj)9VUDLQPE48I`9%CpUr,Y"Y,f*))3'' +Hp-`m+RCPYj+)($FP1+aId(PKSllN566S#184feP!Vid+5*r'58cp3b*fCPj0&S$ +ZmRYr,VZ#e+QSI14Kbf0`(399+'E@hBRj!,#b&r,N@ckfaehS9GVMBMD1XEYd4&G +5Th5ec&JR(Y9F*"(qMA0,S+R41e"Nb9Q4Th'i*C%*pFr48JFK8#5KrlrhGbdVJNe +""H8Nrf2SZJUAh"pNf4JJD3$1IF@`Jh-,qca#LG1@+Sa3l0IL@Y,iD(akS[pf&#* +cDj!!i+d%jUlYH'cL!E%Vj)4!eqSmF-X`8pR4,cRZb%`6MqrV1IFi*ZbqT5i%KY# +qj16H%2M5jAeLNclAeIeXASkTQ*c&0YHcE[+ZDDXlZSI%BMde(XKVe-%S*5+89fb +YX)kj#8'ReYj,$,62Gi!Ki(43RC`i*G21D8C0ba,VFaA2Dd6&a*f3!)TAJHEGbH+ +(fT@SMj6!J@re2f6'a%@I3pl1'KD[N!!4DaL$b6iSDH@[lX4#!iXBc"iKN4Q)TMe +Ffai-aPa'r#SH8iLE5DRibCa53cBVX&2"M+"$ZV[[9Q3ZJTiDPmc8rfS2$ab-eiE +QD3E8f"P"NFi3AU%169Il8fJc*C3'XY'"BJp6rhaDbe4rU5-MT-aM#*TY1AE'hV@ +`8V+!IF"2dcV03pUBX4REcV&)m"R1N!#)H2Xj@*hJY!@UbbQ20fIm-'FL5R3QCf& +ak%fI@)UGk3*Cfk&PH19qPXK11Z9"p26DRSFc*B3rhPNX8X+2!8@r*0VX!NA)V`1 +h10[jfSAb*FNYB`L-2`D@VMr0RNRiVVk'3l,V`Idcm!0f58JF4["$cLjRrp(#[)R +`iiK)i9Z4#6I'4)j9[Fi`hl(8#+p0G48lM98H1!I-*)MdL@ll8LYT-AI'HSfX1@d +eQcZm89p6e**1-("Ye3F+[I6Q,FK[@rKHA98r*hm"`Z($DDqirCaQhRLTP'Xk8#Y +&G#3AqDBpIGpral9Z01P(MTMHj,[GDFcNV6U&k$UZ"$PPATfID31`TNMR'MVLCpS +E'HP$Rb*YFJF2R)24U%&mm4I$j6,(6R2`P6m**MSL+#(DcFaDGSJrL0#a`N5Gh-! +&Fi1-1qr@,IiGQEN(*HA+eKFH1Na!5[X"AVeC13dJbl%`%,M[k%`"4DDHT,CL%1C +*rQMPih"SEBMSi`QRX+I8r*)ja"kF)l4-UC0im`H-3pf),ZSm9khMB#qkqTX5S[6 +q[mD!fPQi41f#9*khFZ)!AbLV$USZ1almFVRU5b8*P'kJ@R9)LYIU%V*%&e6bkK$ +Mi#dNY0PZ$Q$a+ri8$8*IU@jA`f$`I!-UdV`)8VIal"TA-NP0kAIjaYL5iRd"R'V +ZS(+#iGBJ,rJA!-lE0d6p0PChCd4IEAEmb4a,F%`,8$-4d8qXj!ZcB'*6fNJKT6C +bmU@Hlq88`-SmUIQ**AKN(VFEAD8-rd@jKJiASV'f20cdLFmbmD!,1NVSX')K`P2 ++38fEI-NZ%$C2')Y69"K)8"dC*G`[4*@)XPAdq#d2BfpXKG''pBAbM3I-qGl5'-S +k(e)!$(RJ5UqE!8fh+V91B88Pe$K$qYJT5M3G*CpC1qI4!%Q5aGR$@+,EQL%5k8* +jpZL!-mk()N2*KbiI##*bS1FqhBZ@P@m3VGpNJ,,%BQK+JK*V(b3Dj9k99*j5@8J +p8@#ieM&HG$!S`qM`1993ImMF[,(Ya#RZPJPmFl3MTNbQS+IT80IDQK31XQY'+&X +eN9r@IJ&kGA$$pqr-)A)&1I43,(20k9SiQ+)dN!$2bL%hDFr5'dm5AULG%#CF*(& +%MRD$-lX!qa*9p`S8BTZlKf3AM8"(%j4S5,)c'f9B#K!EMBlMqrBS@iYi!iHp@*b +"V*1f5-94Ybkf+!2H00m)E3k@9CiBGS4SHQp#`ZEM4qqjZrDY5#j$UdDC[Y$hNCk +c*eV033,fZA!(UMVpc%%U#DP'%T,-cPh#q#RSC5JES%0ELG9cRJh(Yfl@iiLe6U* +6G5&Z2I`+[EdZ0T,E$aD-`55$rHRYGhh4p!U`"$a`#Kkh,S,c+iZ%V##0$qPlrH4 +bqi6ke'NQ,UJ`2J0K&!8SPPM260qf5hj!JraNPR0K#6RIPa&C09)XVCmfXT691$! +j3@CD[hL4"3iKZ%PD#*(&AH+Mrh03#HUUp4aB0Lh5D@N$jbU5Bpa4)"Ap*9aPShe +hDEL&8KA3qKJklka2HH%XM8NaYfB$H`(TeSDrjCcEBfimV005BN&Q%`0HjPTJA,2 +EN!"@IUe1#$c)U4G3`'DlN48Q#")i+X',lJDdm9!+&j!!6*NQY%!2D3eb41&V4$# +@i)f(ZSf8eR!"J3(U0X8q(T)KB-5XGPB'R@(MTBYqd3XJ6iD86!`G@jR+GFF,"V" +JI[e4%Z3cXU3+*r*pe1U@("jZMTY9`Z!ASB#K,C6RVJF,pI4`A-T'3B-P[Fj%l[k +%0RYf[ZdSMQhXc1hIlB6m#0XCl-[QRH6JVKZ20b(Fc+Y`Rca3Pe%BmGKfL4,S(Jd +$'F+29-HFCYA)BdkdFIc,PAX39cKNHS!X96L``JjN,f"hd0k-`D"[3Ql6N!#EkDQ +SLG2[e5TUZ%T@!1Cb4qZEKX4i$'DM#9,JfPB2Ccb`2e0dl'1G2R'Aj$Qij!e%,eP +5em3@#KEm`94[JlEMm3")@[!`fS[5pSilZK*'c*YmI6(HRZS(TFLpl*p4j532D,L +`id[P&jV%`J%-"dF@LC@RFjHHY%F9XljLT%*'BBDp4bHh*M2bY'0Zq49Vaq3BM(f +NchiBSUYc`rF'mAYL,Hmi#QZ$@2ZVP8p!,PG!kHQUdG4QTrc5[8#6JB@QMaq(ii) +@"V+B*epkCl`k(mk"PUFE65p&KkBh@E`3d3-jmkR2YN[J[(PZGYpLm[##Sip5bN[ +ZTU&Y[G&deiAT1`mP+XJE"SK%,%6K&)93,pLC[!80T&r92I5NL(#V0L$m3,rfVRc +)"mVcSCC'X4&k6aEa`('3!0dU#ea235Pj5Iqm(YS$F,6GkFM$N!"mZjM0cZhTB&! +X1``BS"flTU#H#e9)[!PYbcTHHD!X*0QSUM$A0%dKR*M8acTA5H)jX%3l$["VClJ +0RU'IE@H0BCQEaGPJGKLC"hekeXU1&FB"!p0e@!*i)L4XM8PiY#lbVCK(UV+%Fhj +AmCCbT%fHKXHX`3*(I#"X(dJbiDTj)Pr)YN+XRC!!i!(iS4$(f6!40T!!K[3TVld +ap8rE3+dhYJ'PrH)V2VRrMKQbN6X$hliqC+X'Z+er8R"XF9)UZfS$ZNmjiI)M`"$ +3VED+,Qa43EfZ!3RCMYRm8k9)mSaaf,KI1pN9E,GiLYT4TaJ@L,#H84Q3!2&JC`M +"8kX"G(8Vm33UN!!KSQNa'#jh0-@+jV"r[eF2hmAb-0fI5MaR8fTN$N-T&K*6plh +d3&'AMUF,VMEkmVU)m'Llb@5KB%k-RiLM880GaL&IhkVm+f#!&!A&i-D8'bl(#R1 +$T@qra%40`TB(Zf0keCYSh08Bm4-ei$abZph2G[4CaZm,kBf9m-crK*Ie28e#D2L +6N!$a6rj%D'b$Z3F@kVErAm#5kQE*G(Qk+UA,&m`8)LAZ0ErIS0r`[flDY3ee9Lk +)peq$`6Q6'2K'K[0VREAec'p'14L55V#lbE&@YHcIV1eK&NTNr"-64@(Y+9ZVUH" +PFKS+5Y@k'K+IDb&"8Tp'NMC2FLfZ@VA+'cGL`V$Z)qV1-@JMrG"kKJ@&U!%RFY# +ViS!YGcU@a(('pMr$mRD6-*HRL@16KiIN(dm808LBUI$c4YX0EL8BNhU[Kh5I898 +IdI!h4dQj'45fb6Fj!-K#"K9-R9HHdqi`3Sl!M#he"Y-5amhqibHTB[d@2I09-D5 +-HLi3mSbdkS2IIU1c(,C9+S(PeA5rfC2l45SeS5-JbY093TUfh--9!D"iX*bT*L) +Bk'BS3lB$$)bK$[Eh@*G*98(NVl3$JhG%)*2'mJa-'1%(Q"28A6*NcGX20R8br!9 +Up2THIEfdT1bKX'Q-C(F)ib,9I!TJRZQ,VME#D[eaMU%L0f'fmEf*([Cme8#2&f( +"LQklCd4PV2)b%ZUkRK#!i+qSf5DPhqND4@4*KQUaKCM8'0l2++pIF#fC&PPb1,j +2p'e1FkZd3BDBi5MZK14SkUelRZpJQNi1L9)aP@eTG+&i('iP0-KL)c8-cXj$IF8 +r+R#-3D*29U)9kiMNJfqlYaP&h-"Cr9%Ij'f%kJJDX8c23R0rTKT1`SmZAIN9SCX +DEDPe4(X[S%hX"&3f8DZ#eS`ci4fLL2ZHT`80qHLfU@9ree`VdedASd)Jq(92HNa +d$IdU-h[91B&98)DV)B0PP%9%IRDlP*c@J9#L5VrmAMK*aaF+0!D@E@X%Q!0CeRd +C3iBH%*HEK2DeGCJ*TaZVJ#A+#YpK*f*TG$'3!(56k2m[)rlQS[2R3@EMF+kCUK% +q(EDYdXiMAiB*4h[)qf,d#D6%3YB!QeN8"$AT`D3@[rr(M,9R1PZjl-I3!Bi!,Sa +q[9-Y@jN6ICrrU-$iLIaIhaHPNJJ(L@fp4C!!0m6Z!AT,bZ6Hb!3!81UF#&rk@NE +EU(BTKk4)%Pr-6#-'TVPq"`NI@"1Y#lp61'aiYlQ9q58bY(&Vj1PjLrZKTbjF1*, +HE$-klB9EpVI3fK('bfhEGf!N2fjr)'L*mYTX@0jL1LS`ApRJb@6IFlS+L6,,j%i +4,)'QZX-hYjjRZlcUE-VL*,fhZCX)DaY9rF-qjl%qXI6`a52Ii5f3!21PX!S0jY! +Ad-dR9mMU+dVhpT'phbb5h5Q1!kdEQcf5%)+YlV#XL5haIk*&8$J-b2[[+m)R62- +[3fEN!b[EcUI%#`(19jC1jIV[0+G8iVImlj)`e1-1VC!$D92Cj+E*'T,CTjk`bAj +m5U1L3P5J%X0!V(Lp-MkBp%T)lNj5Z@b(r'U)qFb19#b9&Sec3BqE""mI9j@Q),S +E@jC)cMLH,bTBcf*M"MaT-DQf%K"jIkNX9!0X5RXr-*2m@r&#rK`&J`G$KXjMBee +ZdQr&Q@GYUf$*P&LSk@8q+0B3L!4*f(!A$%)9P$KmcJX2jVZ#JFMGKXjaQ)iqIiY +9!-3ZC3eQ@,U[pd2*[F9BAq&6*#0,[(Gmi5Mc1`2UG3f%5$Ui)Kl&TP!'TR+Zpb5 +"UU&dqdU-VNhF,dlKZJqkDD,bI[B!#l5HP@A[#UKY`CIE+X-,3ch2PS3dbYL8d2d +@L-!RBUPT1C6#0kjDSN6cD9fp1Hi0hc*-0V(Up6+%dpkIki)8-j2P-r+9pHJJ81e +l`@rjrVEpaISZea-kZ0a`&mB2c`iIJSJ%e@YI'N04T)r`qAl(YmT4%ISqGHk-C-U +UPUV''lZI%N-a9*eb4+c#dRhr2@B@ReaKApb0V0HE'US$#5ZGG5Z"+iM"),)K56` +H''%&LLXDLYjbY8XhXHVQ#"["N!$08&@p@1CqR4QTD8`h@9cj$AP`5E$2RVHrH#k +jlB6hdj)$b%,!"k+)XXe2FFF0$&dEVI4)jNhJlA[kr'jNceM(ML!ZDkL[Vil3q[4 +Z"T!!TR0#ZLp`Z@c&I4&Pi4e2dbEl143fGLbH@lDaQ0Sqhl%GG4!T8m)A&TbIBH( +D8'QI49NPP0f(-FZVZ[EdfAi'5ZlP%FT)3814KLNCjMkRfAJj"PC)@(rTLHJ`PX8 +!k&BPkKbDN!$$c6h%hDd0I""V*MmUNZ50Ee%$ZbBrGX9(Zl[p6fFiNGf`ANX'ilN +YV[SkG+Qra8iNX0LH6C9BLB[R$8R0hTq[i"PXeIC'a#NK!@40#C3G0U(+,$AR8+1 +)fr(jfYT5pke#eVZ5H0ke!cT6r3U&VSXia-CB*aS@L3`ZI#qHFBSe+')IJ&4ZhPJ +pCp,pXLBLN84'PTJ(D0dKM2A"a&m6L'C)U2M"2&1QkP"Y5P5`D5ADXL`dPj[LGcP ++MU'Y&)*r951T6k++crX2Z'A'08dd[b5!9I,$LSXKU%kD'DAlD[$CDkMUp)mdPE! +&FBd*"LcNBkm[(c+[j!%Vp21FLDB$ArKf9ZXTZ+3iKPP,Ba4jafZJ4p1"E!)LZPF +fSme$9bbNG2Ze#Uc'NHr$PA+UPkHb3TJ'@%23Fi9*IY8&9"8%-$I*ScaA+L"k%rk +G'NqZV-U#`M%eNbYMMRr(cH%9IXDr)ISJGB&[PF2ZbX22l&KG2qZ0*+EFj3eLBC! +!a4krp@ppVqLre*Zi3BI6G*b`IIF$N443JlAUQN+K+)2*2JK6YlYjMFAGI)61(VD +p#[pkYL!YFSjDk14RfCRKMbcNU+,1@*A3hE%T%5EP"I&5C84NceB(6cp1#k"H`0b +FY(dYcUVi[8aEJ,M8Ni&'3IeAHN@eXD`eKf9iMB(r6L4G6N0aLKT)r!L%THB-X9' +2-Rb4N4$A3KbE#63BdddE5BTe2Y@Z!#UC3HJ03[Qh*94GIN-&a"$4G&9RX8A0h6q +f$bL+UB1$XrKIp0m%l#S!CpKr'+"M%+kiKb9I[%k3!,UBT915ddqSD)#ZP`#KH(E +c2Nl5!D6$lI6RT%GfedQ'0[F(bp55p+%MC'UiMZPhhjMVD&fD)fZ#hrYNm+!pj,r +hQB9X!Nl[0`CNRZFCC,@'HS+GPerC,GHTHc3&P"EHpG9-6M3-GCRpAV%GpFLrRQm +QeXM3SF)3Jef+U@XaCAAU[Rl,GGYl@)aNGYRZ"mf8Z0+X5mXVj!%R5L&bjV6Ed1C +[SHd)PmjUTjA,C0mrVNPfaFH,YA'!H)F)5ZE6Xb&mGS2e("PRaAf3!$R6-di@GYU +4pMYdk9,(3Rm8L13,!HMM$T&cE9XK,@TL&"6AiH9a-Iq8C4CeVFVUqZV5K9Q++KA +Qh`jH#VNX8CTqaQ")Nb#!XAMTqIZRGfCmESkrS*Z[QB$U3S&!C-*-$#q6VTV9daA +V'K05dh%F)rY4R)ED11$I6b$J[SLr`U+BQ#RZL"`!3jMEKMh1qKfIm,Yr2N5"!'` +@'dKE[5rpi*FlpQ1e@%dQ+bQL&k-&`Q,5VEe)2ZS'6V3)LU,Q4,Q`cPd)Q!p,cPe +I!Y'Akk!fR$P9,%CQrmUdBa+ilU(9UPV"##Z[KMeV0'dF["6LR!CU`CdN`4'6Q+, +05'q2)A4Bh,!6*3J#`SbfCKhX,[T%"5F14+"pAhm*NKpH'fAhkT+A!f2R03kS2pd +EDqLVrpKhGMP)r`N$pfGDpbZJZ6FB)p@1K1i1K,1JYhkklm29TL6)1F66*(`84NT +a-1km&lVk`h50iSdA%!#$)[ac4(L-E&A5e&SRVmR!QIRL8SG&!ZAbI[F4E`($[31 +5)eGpAQbXUH2Q5G*mS-,qUQJkj*DMVFq`RL!S@LDepLe,Af(1Pp)Mq2f,JD,83ZU +UaL(4MMeq$r&mi1*he(NQ%c%&!p6UU-1Li'R%H#&NhBU,c!&C#lBrjAENDFRfII8 +lN[dQA&[PM6cM-&'+$HqheBXbej@Q',�CJmJcdVjC!![5apfALY$fGVbae4GRi +6fYVL)eh84J`Ym88`YM0$Ql5N-K)Xa48,%5H`)L0H2)fafcp66cF"qlePPCU$+24 +4AKf(&%p0iNFm!PJR04a`MIU*@1F#YeYS9R2NhPcL(UkX6B1KDpmI5%@5`fBQjZ` +G3-)'Nq)Y"8Iel$%V,[(aK[%(US5*pDjI"#58Mk8aHAVhG"r#C"1$f&Rj8Ae(laq +iKaBl*!ZhSha(bD[M,Q`)kf8PCD$PK'1V@GZ6L[K$i%ek$NqDCEH8MaFZAYJi3b0 +p)-'UC05P6#eY`(UC*`BLB9+-P3Sih8c[KU93L*VBp2TR!+e*epCPI4#l(irFb-( +-l2d`Yhcq0pB+cMm-Hb1QA%XS0lG"!eJYAKbP%VJ%M4B)BGZ(@GAD#XmeEpC)`Z4 +Bi%6K")1SDDU42c@Tp5ZM5)chVqVKD%AYRQKAe)'DF`!i'RNQ(kJkMd4fl2LYBZh +bJT4bBUK8Mmje6[Gc#d@L0cmCH)%`l`j(hU(C31Yc%+'B5RAfLN2&GScRhcemRGR +Yq99*Q5ADebN'G23HPX&QepS6AIVN'f3KJ9$G`!-PMI1N81'"4MfT@KI5)0S+A'Y +M"!XTAF#3!1-c4HA*cS%&VB,ba-mZ(e4rqGXGNQ*UNE302j%qV@9EMjKGBk5C-VC +bSPddXp"YIXqpcEcT0`kE%lK9m14dSfSK$+'c`+2C48Zq+6imQ+R(A9ADSYXP)Y' +2Aba+d)N&KeU%i!M&6QQjJ1kH+I4@5['$Z1J@T[(``fUfTHrk%db9@M&&NBNd!Tq +Ga!+C)1ad-JB(lRF0G8((D@aL0&-8l9YI3MjI3*!!l%P!Tb`%Rc%)f`6G1mXGZf0 +hAQVi%e#K2`r!C#`5p$(Z08[p#4)Cdfq,KphAfaCF*%HfB#,8V"9d+*F+2AY-E,H +Um""&6UTC`Qr"k*hE3mF4Brp2FqV1GAqP!I'iH$`F!#3!$Fd'a1$XJr`)Xlj(5,Q +m&[2jL3c(IRC"HKrN&GcfFdIiU6HI&pUJJ6"jSk#J4@23cVL`RTql&fiarAl8'Zl +(2N&2EEIp![R"6(Uf$BaQ@R@kSUrA5I[kS!"1amSc6m%jXPpaC0FB8-XQ$fM4Kc$ +*U'8Jr2)iJh$'kAh'&M[4SrL"9L&&32jrP'lGkd"+fC`iC,#kKaRfl3(jHRQCaAm +#)'dI-9i"dbL,ZQG4NU8)kf'VG%L0ApYp+!DAaF22XICPmL(qdkB+8`+#!+'"UQB +FYrd*$rA4YpNhI(XjFE[BRh-Xp34b1KH9Ea8Lc9dcYTT-P)Jb"H`2aB[F*58Yi6H +M-f4U8QaATmjS#1DUkT'@*-('fQPh0*T%C5@-(c8FE`2H%R114RQ3!+*fGkD%#1S +rX@VMhe@f-VfMAaDN+1r1UXm'pKiDa0pZ%9cCSe%&D0-L3YDcPjUU#,D@4PDH(ff +"dH90rX"@mTh1DrU"Yj0")!5IfAmA,C(`Yl,-0%R1+1lPF@M(`@HVd)Ik32F)C2L +d(p&Y31[P$R-IHi-H6qlh,hDIFJUk9`KUPDSpTBMBj&,1DIe"R#GIjYm[RQ@12i, +D1pZI"Mc$Ie(80"9SkJBYSP34rTBhG'E%NbZ4p,%iYBSm#Lh!)e6HHI'f,VeH,CK +6hJSA3VSVZa6YPi3Kh32[AZP!G%AqT*NYU!1Q%VC%BTE'UjJCK(K[Gi3a22mEd2i +D",GlUC1mY5e[Q[[KX2q*fa%#F)(Ih8f"EC!!`$D)GeDifbP3MTAX$)$M8(KIjGI +$jLmZMar!LFZAY2"-fM"E%1l%KE'#KTRR#@Aq1%d28UHcY6UP@Pb)YDpbTe3R&-H +CXBi&F8TZiD4qqjpL6"ieX0E`["r#6J'("*UjjNBH&bDY28IDmA4-U3la[eAk4he +PbCAVC&q3!2YBN3hk4NXa,D-eLT1IB4`)&DHiY$a"EJ%el(QY9&@+SYa26-Z(10' +hrrRfl+m'cZX[501aT&3R`MU+5m5Mk$-U963-(Cd0qZb&NN$e"FFqqQ9#*hGNG6a +Hp@(J0*0R9aQ*5%(&iQ'qCQ,r"9q8Yjep1$cpYR$""%&D+6B1%2*Kq8hq81d0lqR +X+TCeh55mV93$5elGXrhV2"IG$eN(#)8V`J+4KLdLCmj`TU3A2!AibrVI`D6#a#P +)5bd"l9eKpNbNcjaXX5cUGhCS5QE'@*Id4[,(DaTk6qZ+-PN1pYApTib1'K@ih,B +mTJR8SBKe!BG8S'02"II+ZM3aFSTMVIfjMj!!G33QY",m1RrqDmG5bGVL$XVKM"$ +AC!bRFY9b(dV6mhjdEAL0de-%04Z0G6RkaSLE(Zd'V@IlD[$RMXY(NL6Tl@#3!!H +Kfh6&B[fI[J3'P)UXUeIqC$rB(f4MEYpC9b+GVYIeX)"`PpbM&91"+2@(S&lST%p +B[pI3m$@IK!mLAlSE,B*['T8H#Zb!#mG23KiK3Q(0ZrX8fa6X"VEe35kq82FCmSl +UAE2"A@Ep@J2jJBpX!iD"-8"+C$B5(ZX!p$adC8%MV'j'-k#r4LHlb$A&15pb!Sk +b!mCSBSJZL3X6Me-EjlSA-9fME8F93RK,K%blZf*L1'GINki*b1qp)(bCmi2S5V` +)pZST$[,cC&2UqDm,U`4500UXpmTHc"C-'MH*D-)V2,B-ETbVf2AR'E-5#IV*+20 +Z3b'*qTBVlFIKa+U1j4,jLJZf8ZKJaF8"Ic2C9U'K4C!!I)p&U5-"`V(Emp0Q'`E +FpD%jZhCUbaqVlA`([-[03f"%R3Q`US@JCZdfc"-[rFX5qrpScRiqD0d4Zj0bTG2 +pB)KPe)RQrRE*8U3CTM"#PZ1BEB)95)DG-LXUGHSRKeJ!2jm!!!%!!!)rR`!#2Tm +!!!5N!*$c$!!J!!J!SJ%F!)"993#3!``!+!!S!+i"6J#e998!N!--!#!!#!#L!4` +!JP99!*!$$!"L!*)!m!'B!)9993#3!``!4J#Q!,S"eJ#'998!N!--!#J!+!"e!6` +!Ke99!*!$$J!S!#J!`J'N!)K995J+!*!$$!!S!#J!P!%5!J"993#3!``!+!!S!)d +"&`)"998!N!--!#J!+!#f!4`%!999!*!$@J!"!*!&A3"`!(%!V!3#6dX!N!G+!&8 +"%iJk8fpbFRNZ)#"*ER0dB@aXBA4TEfiJBf&Z)'pZE(NJBQ8JF'9bCQpbE@9N)'p +Z)%K'8b"fEfaeE@9c,J#3!eS!!3#3"9d!F!"a!+`%!Np,!*!(5J"9!41)1P4SC5" +QD@aP)0*H-0-JE@&j)'*P)'4KE@&RC@3Z)#"3E'9KFf8JGA0P)'Pd)(GTG'JJBf& +eG'P[ELi!N!05!!%!N!9Y!'B!J3#L"!*25`#3"33!5!"R!31)-P0[FR*j,#"LGA3 +JB5"NDA0V)(*PE'&dC@3JCA*bEh)J+&i`+5"SBA-JEf0MGA*bC@3Z!*!$I8&%3e) +$!!"q$9-+Ni3"Sfd!l!Yb!l5b-LXVieY0hP[[D[HQELEAJ$%!3!-!N!1kY3b!!!P +T+[lJ!985,2Y+b&X1iq9cZS94MV)rcirrVL!j0k`Dq"(+KM9jKQ+MCf[`V&ir"Hl +X#m#`U3BL1%aA2VhVbkfM'32&(&P,'cJ,!*!$6!!#!*!&-3"R!%8!V33%8A9TG!# +3"3S!8!!F!4#)'P9Z8h4eCQCTEQFJGf&c)(0eBf0PFh0QG@`K!*!&#!!1!#J!,U! +#!!%!N!28384$8J-!!4)08`UE*!!lLSL+&Fm@d(1X4'`3p5`rIcrXejfrjql1$+G +Bf'%P+PL&999LjEra",'U"3ZbC6Y1)2Q3!"m"9#5BqM@mKDIGaGRG6G,)HT+pI4m +Z3pc&PmHP#aEjM6KA6jAe#b3m5Sk53ElSG,A`G'S9QL)q"HC1abaeLk9cJ@A[I"3 +FZ$A+c+Ce3%m()3a-9j4CR+h"Zf9c)KIFIJai(r!m3+*2iaUXL26-$cGj+&$EM-K +aUkHFa@0E8ER-cGETJDZ80pr*q`cTre6rb@d!N!4Z!!%!N!9S!(S!I!#f"!*25`# +3"dJ!AJ%PL%j6EfeP)'PdC@ec)(GPFQ8JFfYTF("PC#"LC@0KGA0P)(4SCANJBA* +P)'j[G#"cGA"`Eh*dC@3JBRNJG'KTFb"cC@aQ,@9iG(*KBh4[FLi!N!1Y384$8J- +!!,B08`UF!J,IeD@eq&FCcbkfq&ER9GD-jeTPeLV6a9[F@YZFk@Pf9XBCZ`!J$AJ +'2!-!i$Glfbd$i!F,NSp!L6rCXJc8C8UQ-b8UNlYjRDV)IfG`"SF"fNkV5#3RLK! +[-*MFmZKS#c5fI2M(Y&HpDNIKiiAL+C-%a[KIH$a4A10R9hHamEbE1,0kIpKYqrB +Vf*8YieKf@NUGL31UY$j'FLFQC'e-$J#3"$S!!3#3"9!!@3"N!*-%!Np,!*!&!`" +%!%J!k)JC9'KTFb"KFQ0SDACP)'Pc)'4KE@&RC@3Z)!#3"%J!!3#3"8F!@J"E!*3 +%!Np,!*!&!J"&!$%!k)JR@@pe)'KKGQ8JC@jdCA*PC#"KEL"TEQ0[FR*PBh3JF'& +cFhG[FQ3Z!*!%%J#3#ji"AN!#!qJ!N!0m!!%!N!9T!'-!I3#I"!*25`#3"cd!B!$ +cL&a8D'9bC5"TFb"ZEh3JC@j[G@GS)(*[EfdJEfiJdPi`db"dEb"MEfjdD@jeC5" +9EP0dG@CQD@jR,L!J3@iJB@4NDA4TEfjKE#"H-5"LHA4PFb"KFQ8JEQ9PC'9N,J# +3!ai!EJ#'!0i"j!!&!*!)!38'8h4KG(9c!*!''!!d!"3!dJ&b!!%"!!%!N!8$k!# +3!j3!!!%I384$8J-!"1B08`VN)J$IGJ11FDG1aI+XhN5ajMb`KrLXhP3XTk#)Ge0 +Rp62"!"d')Xj5G&B21kcbrprhRKcHfHed@!),S+0`'6QD'hf-e6-0EE0JA0JYVCT +KMLqC4BD'lHI%rAFk&h,ZT!UE+blcrR5$XU%CY3&X,KdXDS#*9HPJ06Ki%J%%4j' +$aiQ$Lac80FqpJqd)X1(#V")%h"U$B,1dq1`PRHQNP#Lmm&%MhQUjjlm1[0)NHb- +$5U,$+hX*C!STdVjIpHXJf$AMJATqk-M-MAJli["V5jR)&)*,#QKAa55e-8raq6F +p!b1H-Bc[G-40$Ldme)!l'AmdjamkrMTV)lN-NRH5S0Q(&[jUb4G0pRc!Ah1RGIC +')T3DMaB!!!F+384$8J-!$#J1A3ZXJL3qkJcIlqii#D&+Ke!DU9(K"%G!H9m(C[1 +JfB+%&8pN1&D8a9jY2,15NYUHE9KV1r(lkN0S,@5Y3J9V6Lk3!)3*Hi[IEhAm2XA +eqmM#S&QeT-lX,V86@a55-#r*XU4,K4$5pcZplm6LfR2Vp`F0jqFd-3%N0#-e(dE +N$U81T2pUb-pQ#-'`@@PihV`qI-'pjd8RLm)IBIebRc`+GJ`A2SQ9L4kZJf(%Ki5 +*VD(+++JiJ(KI*!L$-i6RJBMj%"Nl8-TZX#ZTIBcBlM$p%iP6Rlpp[)(p[2VZF,c +rpQH$iklL2p[!0f(&9(QT2YqjNVeT*-pR6bI2K*@I,SDba8$G!'bC21$jKIJR0ih +TKH,TKfI'!mcHfQh&j`f`,dKaB5E1mjd,%'aq)4Z*jC),+Ar)9b3$Jkf@qrR[cF3 +cPIATH#JbR,XaXMLik5Tr8bYLC46q"Ael&k+"C[I#"GZ0$dVBebMX4XC2jR%5'B3 +rL8[E(JVicPi$,iS4kXh`-m@V!Qj4VaQ&0c&()JhM%r'jCe8ZjY92Rj`CFTrN2Kl +HEH!EPj,MZ@)f9CDH+hEiTDeIR%r+[YVcfk8NpmZjEFX%I&6"VhJSqdSP["kj&S, +-8"q$@hFlBJDqY'mm1IR$qG"UHHkj'8cVrDQ+IZU(8IJ2r+`9X&j(B4F5)P5mR*i +%J3j#-[IS!Ke%SY!0Uq"LXTMRC6'h+)[kMf34jf3K+&588$L%#LRFTZT&UP5Pf`0 +2Xq6d+c&C4[ZF[#bC[qBB@8U[jj+bA(kpjl%XDpk*lM)`2ki`-+8rG"Lmb1a`'!5 +0rN3`q#!he5SIaJ[hrX5$@Z[`iXKI9Zl`5KXQ`c"*KXNc6+SZf3Dr`9YX&JBq,H, +iZ,!,elXee+GlXAa$MkVGC%f"T8I8PkC42fLe%MV,KqS+VNa[B%P[1H!S&5jI@,Z +J0KaG-b2TERM4K(bSPGJqL-%1fYE-M91k@m"*3&Bfi2X@YjEZT3J1QVkL![(3ed! +b4qe`$N"`QL*UQpdF3bfdiT(4$1iC3,"LM'iV364RaNi2iGC+dhq6$j%`!`lI%Dm +1d4cTqeIdJf@e5Dc)M)LN2DTPe)hD2YLD3f%01I++KlAi[L4ZHA0H[3qE9@qmSGZ +%rZ&%Y329Ah[-dRZ#A%bCT+TF[bkE+VPid8'PRJCMVrr+36c)[N!hp"D"$ZC6SR- +ajP5(UD1#Srmr'"hLem1#8fA[AIR(b4fMd*Ulpcr3#[S$MSdVKIiDdY4fD"6)TbK +XB05T[[6pc25K$`8IcSSJ9#eGjIkb6qhVqj4bp@,!+Ab0p0iTlF`FG5,VRGTaJ'J +@Rj[9MJfV3!i!FAq$hT(CD38,fJD!CimeQd(*"%i2DEIGVcL4Sk$&k5BM,TrU&DP +fNAS0TpKl&Zh2lXZ3!*&TbdZ$GVILk[[+Cr""B06H3[-$Gid6'FUFe4b1$IGCYRQ +XU8d%bl40a"+-P*,$T29Q$H1S#A(5mGC($JcjNmKbd,k#1UI#h4RE+2SiVp#F8U! +JIRp,rIY)DeGDL'&83"i$p&i6,+a`1r3(fS0K+SEKRZ3L!9lL)*B)!F#)rlQVjd$ +`pqi0RQpXY&@pYrVNk85Irrh[M[qHrBjVrderGGk6cAbck@*X[5*13r1q1RcA*r( +AY'c)Q&a50kA)b(ETcGab10R#2bU'XLNQNC!!JpI92ER&p8MDSSMMNK34ILGadH5 +hd4EHcS3HC4M,2P2`GPqGP+L8*,m1j`!2G%KF,RNDJPmUKYS9CREH&0cfZ+k@Eqb +aj91VBdq6rDUr*a,[PG+G(H2qS1G5+C5SMZBED%SB&0VJ,%j62X2L6Z[Z$dVq'44 +'F4e3rYULJ[-me"T9J829KkaerSDL$)`VXIrCdFZcN!"TZ#A1de%Y8Z*-EUE1dB# +*1lE,NrPR,ZC(qHd6E9H292IX,&qq)8rXQ'mG0F'TBQ-`'-U'0bZ0I0fldUeC)pF +B($(0mYM#MjS2bLmArF&Jl6B4IR*,dRjZj2c")G18Mbhb'4BS'bV1cY1i#FPI5GQ +!DIUhaYA"UlBK+ErTQSd''jLfK25XF6Xh*!9-C3%qf%MK,m3U-M!)K,fk%TkBK&2 +brJZdA!"'E1f`4+rVE-pq%&fdrE"-3)#i`R5j*Y1f-B*N'$,XS6dfZQ''F-Z(*q, +F4ir[4U+Gr`1)iAJSBjSKL8*IMe6rHppArie+Gb2BZ8Qf+l@fJlHjUXbHLI@hl5B +UN!$pc,Jd'qhDFE1TIC-BPF@@5VlR@LJNK,1'9*eaLB1,Aa'&8ZNr!CA6DN)ViC4 +-AD+8`[#"#%FTlJFYPBQFIc(%k%*98ZVB@2@VpFN46eGTXP!p4KUi4pA(qEEmFUJ +T["bc*Xf"AJB*T)e!-4UU4"bk0YZ"#V2#JX&#@U%EkXVA2hjV)KEh[3!!(9j"4%0 +5!`!j)!pG#pX5324$!5p*Ka39a5NU+#USG3kSU#Zk!XZ#NcTTR92Vf0T@8('#9T` +(1+pfY(CH1NRDfL&TQdibTdQE1IHpHe0!PYd9"@51YFfpjbDYi,GmhqlrrmUhqqm +r"4AQ0J0%*%3L)"%K%4)58`jM)6$KhfU6PUc8d[@%j[Jb4r1Yk5IqhaES6ZJjEcT +[1NZIT8N%Ar!jP[DL)4A@&ddIIBem#&ra!cl8AVRl'GcHRq2YH,+3!)`k4ml"qa) +I5SX4RNP9)%-4Lq98"@D+'2`X9Bm4`T6Kakq+$1aAZ)!Lq"@@S(18FEaqB$"PfZj +$Y#ClcNa5dE0jqLHQ-'*ERVSpl4R5e982UjR6p9Q6PRq3!&8!k,M8X-Qfe06efKM +55*9KPM%`1!`1X+K9q(PU&@C9!hAC&Na4#,H+kj5B`K`F)DIXQ&)S+1`DR6*5h"T +C#T[+3L8G(@fYE9bVV8f[`HFSkNrk$@-SdjmE59RCe+G1#mS,L(CLrZPaT1`Ym3r +I+ajaT0lqXh$F9mkV5Fkke039BD4q5D9V2AP6'KrVX$qp2)a8,1dB0qj[BDcYUbq +05f*)$C@*K,kr4mHU@I!1il)Z(Mp(,FA)Cm%UqrTq,)89ZlB9,re,#e*jLX8#c&& +fe$E[A39+r2#h#qq(EM!L$[DAmAM(MLNcj2q`cGT`VC3$a-`IcGZk8+DG054cqDM +C($fkGU+Ff(SFk1![L@PaZT`Q`G#J4`TSMRiZPD`cM"[A4dk+6EYTG6NTlNlY*qM +@V3`MC9'$k-,p#q@[Cel)IfjZHEPGkdbUU*@SlFTVK15-F8EJBZ9lj$*kMY)Lr3B +j+EZ-+1DdPL0,HX4&rSZ3!lh!#M!+*1Z0V'D+q0l8YaHN`el6'1mZmP&bHfFhejR +PZ,f&XP$B3R'iN!#bmF($)4[B$%lmScSUUrQS-0&"CJUE)I5(8)9B#dF-T8bG955 +YE!40Fh+1$JG[((Q&M[L5V,jHb(%&c`6"i9@dR([jEkNNG4a0"i%l&JkPFiY*IH5 +'!lqFhfqANdaY(-hpp@CeYM`rkkZ#dYadb4GQU"N-)6fCRfkhI6aTF`j)YU'N'YB +Pmm-#8Rm*8CJpA8EF%FE8+lLBSJbMB%%ej9c%@$Q@)j-c9iUr%X2DFa&''Q,@N!$ +0DPCcUH&X`*&i0Br4F)j8A$$[2r$d`)'$0e12l$NF@!VIQl#P%0BiB@flTEfkZ`4 +6&T`dASkFp*)FH8*dj$h4NB'K!Ib4[12UB6R,S$,8'M-rm#G+Zl5+f,Cr!rkMLm& +GYRGqSMPKd1NF-T%,-SdGb`8")kZGD+jJ`$cS(La2jlM5Gkm[*j0QFP`%4qbIGY$ +F[dEfhG*Pbb`V5c2*5GCVZ4cRFU@JJ#BF4jX8@ba%ZrfaD4$TdTl*MEkD2M"hZ[E +DaU'%Sm+`#53+Q+dF'J-r3fRCfSm+5$&JY%4q3XJfphJPimbjQa`F12Gr1$08866 +BKC0,-S@-'q$hi&'Y"QXEB)`UTi-B[H%P8*P,K%)Pa@1cA%llj*ImJbl4CUR8M+9 +YHkkES6'eU$9a%&@-UGp[r6VbjVh,G5K*`RlcdZkP0IjrfXZJmEF4bVU4!jlKr%B +SXlQ[1lm4'mjS"hPHM(&96'0VR,HV'VGQm+Ea%dHbrT1BR*adb'iKTRY[b)PT`G2 +4C-f03NkZ2h+N)j)3VpQdA%l6QR*b&jcpp#P(!b-9GfKZh#3jUE$RdR5`R*4EVB@ +3!+P5MPmQ4UHq6,)fr-$4J8ld%,Q*Lc!6djfJ3Y*9,lQH&A&Lj9r@ePG2(NTk+)S +9Ki6Z#HfM`SMU`953!#F,hhN%Jc*5E)f(5@I16,q%f3%J*'dEM8A(1@)kHC)M@ii +A88@R#+RAIF055,fCN!$,)-PC8FZ`(Kq'%@f1Q#N!FG2$kP1hVSre1cEBXi!EXVf +`%&mrc2,,)'kqr6IMU'@J'5$+%"R!`Vlihj32A5blMUQmeFUReBbFqS3I!'0&$i6 +JbE+J*U5p9("qEBBca(*Kr-%aS6bj@0XTYD,"NPaH`'4,jMqDip@5![Q3!+a""IY +$@6ibL28QRi2`SSKV9P"CL5HrD-,Ap9,R$ZaC)fd4QKh8X18ZIJ![&rN(Kc2KbAq +#XPd&3qq6Rj`FLdj6d'PEY4!XIGMCd@6@ACSE2CH3!1@hE#3"9NL`hI4bFJGXf-X +,lP#rFC4`h"$I)%HbBY5r19JhqkiJcECq9r5"FEbY4a9b"CF'F'$Vp$k1,,GpR%0 +b0X&YqRSY@3Zh99pm,'*VYh"NQIe'e'E5mk[EeV9E#&Ql3[YfhZ0TEXGfE%[l,1p +KMjaXklN4p5R-,QEFR@U$hcqlYlRqPYGL3U$ppei-f42rhZp)$LX([i5)@N[1Yic +bLCL")IZL'I`b99m%13!jVYmBfNG)dH8#BYYJ0%5$KhEZj-L+D!-H-*@3!,)CPdk +b%Pjjf1EZ*@PH9BU1Jr*D,fD'8!FCfIUhap305$`R%jE#B[*Mjj3J"PDkpK*F!V+ +XY%jJ`@VqeYXZBXB1D2U-Z2"Z*$d@e3)[XE(&dR!aZIV"LCDfdZk,58*HVbja$Dq +&KepiM38C@cSMZT9a#ARJfl6r#h!*jdAJ[UQG1Ml"CD*+9jhB,DNUl,q`BE0h(Kp +BP99SrQ!l`MM`f(B1MUf8#Xd8qZYIVr(BU!`c0S0'B&E$0+B8EN*&KSL9mV-FUEj +AJbdeINTibAq9lYUUpQY8UL`DeeCq1S60qPie22)&4[iM'S('V*H!3Q0VJC8J5hB +6iXZpVTkBbR1HJCPLH38S#DCk%l(5LTbdjDfIJF`SmlQ@Nr-XQ3A5TH$N5XMRd*) +qcmNK[XEefZF)ZJ5DMb`kJD51YJUIdDP03HIeC3%SR9mDeVdL8LV(64a)&mUeA0J +9MVa4PRLC[2261q4@9H0kk(rD38ldGa1aBb&`h+JkPq`a1h+(KMk"R)8RIAS5CQE +A$T@H%drI0E2lBikXVar@(TFpSfGBGjcLYXP4(q[DNH3VF1JLd$`(i`bB(HbS4*5 +L&)Qm0a'@'3TC&&*3cj!!4E@)P`LcVhA$Y%Gk0-PFJ[K4r!eEY6YYP*T&5M2bkZ& +JUPJm9Eh)ZlCS!lS*$VpT%1H%NE8jcDSI0[5VK`+"YRka2eY)RFD'k-PrZDNj9"A +mmmlKL5lLU[1IeF"CjT!!Q#,Ckl+LZ#Ih*%cdRp[BBkFIL0L[hl*Bq)[A3IF'rH@ +&IB2fBLCSEdRJ'aHp&Val2+VZZ`Q2@q(c*IZZ(AEh&HjlG1K'#TY`0IlJe6hhVad +S`Amb`2Fh!Dq*f(@bEe#-Eq1C6H-911@K4aLe13!bS9NNJ,D,i!JY[(LKT)Zif9, +LV1&rmQfPB1`Rm`rfBFbFiQ%IEQQ*pBHiqfPffka'f$HPdl-GL4fXhX&EJDT'CU# +DJAl0V"CKLlr-`c9GjCVB+DR%5&*Td3A(b4*MDhc8Y8'b$0LEfGr&c6AIiZrX&Y1 +,fPh%(LjL2fF2-lBa%-UVHUGaC21%ER[aVpfkrj!!Tr2)T($)LGK6X51P0RN(H6h +qr1$A40adbbhZRQ3P4iTAY[rZ2A!L2jKmF6J,9S)G$-d0'MK@6MjDFH9jM[1&DY! +Fi4d-JR-&D)dNpAPVS$qr+,cAcLf&ZFIFG6N3hM$(S+Xh+6Nq[,p2PC-*qe2)iGQ +(bBJc$Nqd58-RG&@r+a1a1TLdI0UacGCr[cBq0ZGq-#&`@bjCq&TXr*V1D@XNrl& +a*1"kfhEY[T'A@cr@[TZhe3P[+22hYHrSq)a3521iLU'B5Lq9mYLMZcS8,$C8lr) +d9(eYE[[PmCifaQeiG,c'bK%9&h8SiT%'`BFHRMY`aam'Xfa[AbQS**dJRfhc((M +&SrAE(N,qSDXacq&[IM@rE"$hJ,plQ[b0Fefh`6,ZkUq#@IeCE,RlCrG!aG(Xr-k +"$SPpMqrli!e`'-AmrJXcE1i`C[HT!d%SG*Crb91(*ZE,X*eApIMd5EC2[$NP%"R +JP[p)V)c[Br5U-6l5J5NbVPGDf3'K-GGDNF2&MXMhHmehlb[EVRDbr`hmhIpVj"f +Y9@+AS'prhIh1q%8ZP-%%'UA,T1BDCjmm*(Nh$kNpFj'aNe,jbm3UP0eEj5DdFNc +TrG`NcN*!,R4Zp2A14C)mK"AGP[Q#r(!6mKrSJL'MC`pPT8([+AJpSYSIG3Gh)rm +U$`N5*qHD(9TmQeNf3KSA&4jBM6V&9+m1XEdkV(61-iXl5fA'8ZFmIQhZF-P!G@) +p2&TFPB+4#XV(cjcKSN'fSG$&Y+QGhrH`i,5[AHIqh,TirdPbNVjVkR2Q0Emq%rU +-c1clYrJTDk`mDd+(qi-Lhc+)m!dra,hHTk%Rm3M4IRI'a)(FlNI$[(rSr3S3kZY +QdR5NR'arFB5I0J!aT*mQkpZIjEKR0,hVQfS*CI8`AFbYIjCNESE*iIR,KAamdmS +eFM,fc9VlL*B4jBe[l4la@Nhf[8ee+rFfXc@3!(+BI5ZVZ*`m##,hSB,a)*L8edi +M39%pRC2VDkI*bC2Ipa+bCZS!H&6)VM[&Q%M384JcP9"Xpm-m!d2Y$4$Z2ecCleV +HlqHCmjq&-hY2+@lre["EU2QhprT@TBYijGA"SrjaRcIUhYF2Hqkp9a)bM-'R6r& +c)ZS1c($AR!#r'rb,#ER%X(L4VbY!,`YG![VCNNha609N+2'RI6'PUNMNF)T9`!4 +SXi+"XXaCT,pafh&%eCkmQYK4rD22"pbHjXMbKZlRQ,(ldZk-H`d$GLZHZ%Gd1fT +f0M-MBY[Gim`UK@&8!"JjCP)#f3c(+LBJ[-5V4JN-TTIR6c)S[HEX6JCE$VT%(U* +3`!K$KQ-0mprBhri6!0rKRcKmjl%c)H-C20BiPl!)9qSXP@lTG5iPe@mhS)B8!DM +C8Yr+p%Sa96Qb8ehUCq@j,QfpbEk!&'X5hA)V[FfkES3(9Xdhm)H4rKB22U#`m+F +LE$'VM!&hH2!Shd(UlqS[p8k[maFkZ!Sd$X,UCPD+FBDVRT)+@B%R(q-)BPhUS'B +p"@DCNCrU`XFEUePFDQb!"qA4)A$$b,1AP6SB3C!!Ta+qCb(UD**abZ6f(D6-imU +GS*AGKR[E@MEImmXLLp[@aD9Sb9dVrh68ck5LFTJF-[r0QmJ@rBCpIFQR,Cq'NFb +YcJ@dR2i592X+Dr6q[b$213,N5(N1d5j6FjakK9fl+-MY8"h-Y6p,X[E`Xq*c8!$ +5dS2,)-DAYEdKhLpqShVPM+S*05F(1#DEhQaQ[0Vc)0[RB3mIi!ri'!pUL[&D8Bb +E%U,J(Kc&N4Y"Gqr!N!#J"pBKB%2[p!e2#EeC8h@Yc5#pRa34S(Nm)k,Y8Qr%EHN +hH9IU$[q#Lb+Y[2DArJDcdel%fpfIZlpUZG+lFbr6#6+"Sf`J"U"1EZmD$S(6l%0 +U$Pp,cm$%rBa+"C2%pB5XPfM-620!c0IP0KMa+p4DaX(pI&4$q,(DXlZGpZ`*(A" +d1kb&B2hj9r`IR(cJlkMaHeVjj2cCK$fSLI(UB[M&fb0,`-BCNCNMK9F0'cK+k9@ +M!JB+CH!S!i8Bkb-J-L)!iB"4"Rl3hiepb8X*[ZEdlMZKSI%Rac0iP"rE+HJ9aaQ +0cLU@mQZ9k)5b*)R+452aTCJ5&l@E2fB&`*H8Z'JmDa(PAFP(6AkXKP@k+1SU3Bj +Ud2`$lmf$(r9G3@h3L6l$8r*c,ji"m%Z`dLAATpSRed'Blj!!kp!iX&f(QTJF[b9 +`p@de3hJM8B4MSFb)G,e5Q4(qml-RR3#dICCr)%q"!%THRJ)@"Q'ESBX3TpRTaVb +%-@6IF)lXL,MV&$5Mfq21SCJF2im(pd19#cVI*'9@VVV4Z`k#j3"%q!0A,E(A6RF ++0RhhRED!f1dr$i8)Ei#ZPqB!chNe`+d&AMN0kemCAq$0Y6FY!i[Lqf@5@HC"Fmq +r&@Y9dENlB@4aQF[CaPRL8iRDjGfl(@kiM$a-QKJdSLPVkrf'FkCQ'4ler`-m-r) +S,+'V)ip#K#FmFAT4K"XLjpfmH6QNJGQj$a5aAC'4!Ek2ldId294kqd(NU$iA2,c +m'+Q9AhGpA-ZL!2!Pc,m18bM$X5ib%*hHMk(5BQ-9ZpD!-M04L9r3d9#bK%fH+X+ +LNZ9Q09SdX-R43k"3b[3l'"QS2KX8[#rbKXqTShhZV*!!-@$Pf(cNe"12U"-K12[ +aJ!1Z4d,l'TSB`dmA@dEG1mk1#M5N"#!3Ch0D1C3SGieJF'RkVK%'M%1#)J-a$Na +KV&Eqpf*ImK+#MiMFE3ArpAJ'c`S5iQ,La1N)SKAc)D$,P[N*1YdX[Rk#hXl"fE* +m42&m5HGJ[8b$32j"K,1pEKL$U*6Sm-#"ma0mIalmDFprZ84FpikqhGJleaR!6`$ +C@q@3!1hA+-BPXMVI$Jpa0p[%q!Ud45R`VZ'&GkmR!P%q4iKcH#N[XV'jP(pJR36 +fM(@pb"VL&T!!iG%RS0FDFN'#$d$0cqIDPHl`Nj%r9plXk[!)$SliEPEG#P*ZjIe +[GUiND@l[bdRA+HJU@Y'fBBE[&lAVKT!!qV(j(2I9arpEI20%hK61,a6IDe3FEGc +83KGb@RVd'`ANl)&mhH,+dVY%'p5bFd1kHXUVV%Xl*YT'jNPk(N53!,XaN!"mRI" +UH"IATK*E&cN%)IeQiLr"@[**jpX[MQrfa(%Pe#)4#J46J1V4b-FrRpr9hbP1H5N +U)($A'BqRqDa#a$q+mp+JdJFq[1ThlJ3,SNAJHerJ93Yj"`6k`eFkI%V)4lAX#cZ +DIl8-b#+r8LrND(0)C2YaaEhpMrFGLQmEIMlkl3hCd+e`PKRZIMI2kB0`KJUiG,E +hmLfS`c3a*DimBIP4pkKNe+kLm%1J(ljBL$P@-fBPfbF!&IQ%p!ZN'+0A`a`fr[G +LAhVQ*F2qfm-jX1mC6pK4BieC#'8d#!M%&mpDCCi0RR8qHV1,(kI,(*MYS%4#RLm +GU*F*XF8[hkVc0L+BlLVbr433mI-GHUaV1%!IGYlYf)4mH(Yhe1[U8q)p@!#5el9 +"%4GMA-5`'DFh8NbHXlRAN`AGQkekXIMQpA-ckS5BcpI9J@`[PD8,AK6F3fh%0[K +4!9QI!"*[SrUcDFEF@52mUPF9ed&a2hA-h)Ck8QlPBkIeVL6Ve*XJfdAV%JTArcA +N6+ilhPmE4Nc,2q9)ed'Dqh,b(1&02hT-rjhK[@VGE*VZPe-lqprrRMfSB0c-QH0 ++GK53!'YMaL@BJXG"QaiSM1V5j"F[B[A"'cBU$lk9N!"8i95pBiVbdXh5C2+DB#T +*[0mPQ0V9(T@c1EKVXm"TBAI)Y[Ec%i,FkZmR%T*ifcS)@q)6$4bH!1VF#!-VZGP +GFr1LaqlE6c8UQ+Zae3fHGj3S3m5V(LZBfPYm(GPbj'Z$BI#pdLV(AdrcAAqV8DX +rJlij#af,BXEU4RISfV1kZeqr9pfpiRph0lqi&e+IS,Cp`VMqdUZEYlmeGp,N'62 +'IRj0#*,L)60`BJJ1R0[*-X1RK#Y[Z+Y`%e-'##3AKYF%lX'4M[V'#l&ali5`LNF +e6%L+mP'0mQ'iZ6HJT2G4T2MaerTVd3d"$dT53K!+'@(J"re"JmIL9TB($j("SS` +iM6%Z,Y[Ied%)me5%e1QjhT!!+5(LDTN3UH2i3MVfk'44QlG&$AVbI!Dr&m!,Vde +*IF-+IX'dacaiGj3HV-1kB&!KZL-&jKKAk1i@-E08TmJBh'h8LE(!3@NFh+D2&I- +ac&VMh1`XS"3kXm*CN!!RUe8jek6Vr#`JkRQXr&TJ-pJJMYq#1!raXGZ$BV-QcFj +G'rRpEQ+,h'GEhhRc(X5(L,X[eSr0(*i"TI3ZHlUrIC9h22Nm@c@[J'bCh(CVcCS +4(2Fhd%a5ah&dM(CaPV@5IR,%2j(LQC!!`d1V2PPP(d+b3SC`h,I6VR"hE,q1,Th +)TCV@mpTrHI4Pm[jjQ%QXljYU1JJ*(Hq*'-Rjq826,A&Y#[ap!ZqGAAXN+8jH*#G +J+p6hX`+fDU0Uafcj1BFX&(FIXj2r105QE#IcRK+qq-m2!P0ZJ(b#-Hbh4m&biLh +9mbkUGdf%(-"G!j!!a#XZ)J58)LXIR(GeS1@h'e"4aKQAR95+ShfBpSXAG2$KeBa +EDNTHlN2SLfKJV91YGbck8UZrSakqkZmY,qK[DiE-apQjDMb)bQ5F[kf-LYEV1!G +Y`ZCh1Eff)`-b24rLM"-aV(Fdk)15[G9iH#4Ha%Vkkl(VADpIfPMpdE2+VkrYMNK +!*GpeS'#Gm,X1(1l9d0+r")QM(Ke6XEUM-)i4"f--PA"qd"mZG'X)bkQPU0EAE0D +j8HU%1+&RF"d)bcUXN!$T*6S1,l2bYK+AG+Sb"SVT@"VR)jAkGV)CVS2cd(b%AY` +-A5b613"dZGl%)br(`XBfe&)$L9#+5MAZ&R"iJBKKFjd+kheNrKP)jGYJlR6a&l4 +MFkd5b[b@@L8@b0+9G@D8jq0F)d9j[[bi2!NN`Z3K')4Y6faNKfjC!IPSUEqRCm- +1XZl(iGTKD"-KBpUGfhD@RGi&NY[+Xd`R@JHha%%Y[@Z(Ij!!4pAAGQ,Ab#"GHXZ +Njjp4U9lKD,dGrY6"pachejLiFZ)%3Ra)i6m,FAXfalhXSjXqK*!!EcNkVH$jlrr +prFaR#di))EfQ(+VdC@R`T[Bb[M[HRKR@r+ffV0cd$+PJfU*i&@F-bVhVj(5[MDQ +GY4[[IEqEC4XH(Vake[*lIp"0V9b+Meq*p`VP#m0Y6J%2R[kQ3KNh$NKKh9c0kVV +52[qm$$DZaU`R(,Ef`M[')YjT&ECrjM5XrJbb"YjEk-N1SZb'K'Y(heLcE-ZfV9X +q@T9Xi"!"9`l#*NTdIaQASe+&"FbQ0)1L-U3)@l-R#L!M5#'8ie@)cf(!5'SG)qT +djR!Cp3H!%DPmP0BN`P,1CjUh#UQ6rA&P%JLbG'F2P`DU#UTHc4cAZ,JjL2N5YmV +(dmqK8SUN-4k@Pa,MXpKZ&[)l-%XT5QV"Vd)8@X,`5Y'2&ZZM#5'KY"%fd[1aGK# +TAqVPY44UcZY@NbeI3,dZDp2GK9PNkbSjkE&5dRAVJfA,i'A2G[[0@b$9eV3Y'%4 +-UFpcY)f$bqSjXZS6"G5cD%8jJD4P16hl&Hjr$LpY,'h0BKa#Y"XVdlRXV(r42q@ +e(V3RN3UNK*bJ-1TYP*H3!!#pJ59ekEJ$-S4!E3JA5h'(QNqKXh+XM(0ZDH(a+&X +ciZ+8L$9Hm@$#+#h$G`TQDAq$G,cXcb%rCU-4dJ@JAmd1MQKZmSpHZ-NY&q4%QbC +QS-@ajYc4"dmF&pMQ16SP@l!8QSb$&ZAcLm+X,cKimFHe@fb'P+3`b&)YDBG%,%K +9+X8U"IcfZDBA,XP3#ARVX(,)4ZT3+UeT54P5[Gi-NbbAE$6rG[[VJAqk@qe@2DQ +`V6f8P$Q)D&I(`#+Z(IFYQ0!UEHKSQTE,FXMLG*UHqHhh01d%9a!j3GDX%eKD1Ab +EAJk@P[UP092H01-V2S(k`eG)6eIjT0GIpkIl[Mih*jRBq1603D$p3L+Q+,h6QXH +)%A4"`D8T(*rTb(1+cp38*6i#a@C&hce5f+B0CAm!U4M,LTmSq$9M,jpHrlk5e32 +XiLF`UiZ'&%eSM+9!4")8,X1JQ1CNFiT0@JUbBQ-[bqHZXkbLZcd`,9`LXH"Nkf9 +$Ii,liQ"ACD*86e'@8Jl9R!6+cb(54*c2KEAQhUAa)iAGBQVqlSPjdCk5+00T2E% +9*p@q"6Tieif[JrE0cB+V8V,HkG2Rm@)`b@R()fqYIZcNY"'-BD26(DH0B"ePejf +FVS1D8,%@IS',AXT-Eaq22,$j@C,c'XapITMj)k2BR%`k!+TUMeF$,,YT+'1%ShZ +JLj!![iJ$#b-G(3IS)5R@irE9%IN$SU1V3!*8FG&EURKRPDC%4kI!&3)S$hjbXDk +bIVH[RQh!8!-"2jemllf*daHmGl'928Ipp*)F)4A,dY&i1J,DIi1HD,@EPmJJKr, +pbC1j91hNk6QLeV0dCf1B%@CKDjic'-&+c2**cb+cC4&M--"Q#1)-r)9IC4LqB-# +-+RJ'"EFXIKKBq5Y`TN&S0'S8DU2'JN@SaZHE8aVPH(Mc*)TXDVlU8#qkXXJ"VNB +j4rdijbX1bi!Q8i3'!*!$F%&%3e)$!!)f$9-+NV!"FiZ!L)!+5-T4*AfT9P*#HP+ +p1d'UT+U3""TTh"ha`+0#@K1)i34"j"m#GS*XNU%`'5!,BBipmSQXp$QK$bNN,ek +`%[$CZS1NRBUm@L+U48'dqlmd2ZFl0JrU&ql-'%96!*!$"$0"4%05!`!'G`e9$8- +L%K(QAQi3C#dC4'Vb4#3,%&QVTLBRYcf,M1"fjmK*Yc06mTPrGlr[fiSm'pr-Yl9 +!NYA1l-RN5GLq1j-4NZ9@j)QXb1mIN6q6RmQmfGCf%8N@%l)h,FNL+%$L"rp1@BD +49%3iU!XlH1)RGL%XdS$Y8-@K&RB5AKr2MQN-Tdqr@5Tb%b2*lEeNEa2deYr0KTa +,b#P((lQrdKDbpHCeqFBN#8XTDGMHT"F9Nj*A@5m3r1$*iF)A(Ra+`bCSd@*%bYh +0[UE$mLb8Z8NZL1FKb4cpaH#,'S2Z2"A0G593mh5B(ilNbH!U(HDq*03V2L&LN!# +Glm-GLj)350pE&JffVadV0j9c-)PcYTmmT-U'cCf2[lLr"Zb,Dr,j*UQJ&eL!@HM +eXIT'U5KXK+Zi)G(%4'NH4P'P*SBS*l2%Ke)*Td69NE&*%bSLi2'$"P$iBJ#e%Qf +Cd)!P0"&UFSY0QF0BUD3IT`bXGDL,fZ$B!U8fSh08@--BYZrp*)$#,J2%1@+BZ'k +&r-qa*h(XSZeGPi*0bi'TkX2@JbVR0)ahG0E&J(3EJ`[@YV@,-D*-cb(Q-Y`6mPc +ZfjMcBMp"cGLljK3Rb&aVTMai@-PP[RfUT+62k1U0klXYd-Kcq8@f`RZ!4-@X%K, +E)89)*H!)2HGQk+!L4L(61rDKE[-93T%lT4&h#Yj6*Gq@)$NpfZfT-bIQ[*a$ZHi +9U@$-fpTGbR)EqIHh6JN-ELhIr*F2iT-R9S%)rHb*!9X*2'JQcVG5aT+bk)"66"T +!8Hh@RKiMNZDb1RCPrpLBBZE'f'*+5Z1k(+rRjMiNk%bc`$2Y2dPbk)d[lP"05[[ +rh(fm5+9i5KpCGN!BDPI(P8iGH))aB&$'@AMak[HhZkICP"IAk`20U"30ED$cl3A +NPB5bhE"dKJq'UT!!'MJ$K%Ef[#TaY#Qi5[JiZdp@*Ek(V6S2"5LGMGP9XcSTH`k +X!)Q$@e`Lj!Hc!YeF"G@qBdCpV(kpX(EYJl32qi0AAhd*'kUV,i&`%M,25lL3!)9 +HJTA-Hq-JNiRVb1C`%N0V@&,9LJXedG30VZTedYBKmQ8[pD@$C2LX$T!!US[$LD0 +[BBPS9ake"Bi4i"NpQ[B5,S$!l!aZkDY"[CV-MSM(ZdcHrYqi$lHRmXQ0Uj1Q&hd +ZmV+6dc$Q@CReZ"0&fVV&S"Ua`C3d8JpM+h9[1peJ#QP[H2ESABrbfDQ9EXl,)rR +"Y(aV,(DK,&e(qXHCLJYTG`ceq9R+jqIUrhj)D3VcIeGqcX4Q-IlfpqABR&9R,Np +TEKEkTP6FE&CkmZ##0U6Epj,8cI&CH25LN[RmcjI[Q)F-e2@eAFBV*qph(["`34I +,9E@$fDIYZ+ZVJh8&%Tl"cXY,fjl%2ZKNB,XDjI@RH3*a"UE`8,`*ALRF`jGi-!G +h[Rked&R$@pIN$J#3!``,9@j6G(9QCL"KFcS!N!-)"b"QEfaNCA)!N!-m!!8%)'p +Q)!FJDA4PEA-Z"&0dEh!E5A4PEA-JFQ9YB@PZD@jR)(4[)&9Z8h4eCQBk#e9Z8h4 +eCQCTEQFk!*!$,8&%3e)$!!!`$8X$@f`,YfS!N!@S!9[Y[`B'!r!4fr*r#&K#bBm +'eKXaPa-!N!-'!*!&$3#3!cX(!)!!N!-$0bi`-$FZ-#`J3fp`HA*TCfKd)+NJ-6N +j-#db-$!b)%&XB@4ND@iJ8hPcG'9YFb`J5@jM,J#3!ai(!)!!N!-$0bi`%e0dG@C +Q5A3J4'9XGAKPUL!h,M!!N!--!#J!+!"r!A!%Ve99!*!$&`#3"4!"5J!!!3!!C!! +!!4)!N!LG384$8J-!!+J0@`TD3!*hq"a@G@ITa$j8l""l8cGeGYLKMlFEHlVGQfq +(XapX@&9L959B9@)pKKe@"3QS+DEi#q$Kbe-!CQRmTQTq!Zi``mf2ZkL'Ld9k''% +[lENXFkBX&8b2crC)HHcSaD`df)"XN!"VQK,Q&'Q)A6F&@rG%"d@fP0"GLc#jbB* +P-N%ak6ATZem5+jHST,h!2bF2)QX!N!1I384$8J-!!+S08`UF!J,[eZ8-S,kJP[& +E'CpCQD@Y&Xr+1VFhGlAHVGZca@qF!B!"!'J!B'4c@4N!!`QS+DEi#a6T`jXZT(i +HTmIX+fkNG)fEVG@5Ne4'kQM[fe09jBc#*)clFhe!EKZmQ"@M#m+PF)ED5!k,d6C +0(9`f!!X9GM$5Aj03pe-%abL$LY'cdGq3!#CfI@,Tfflb+rVM'-Rl$J#3!d`!!J# +3"3J!0!!D!4Z)'e"XC@&cC5"TER0PFR3JC'PcDb"H-#"hDA4S1J#3"JX!#`!V!#Z +J!J4,!*!&(3!d!#d"')J#AM%!N!-k!!%!N!8f!)F!5J$""!*25`#3"3)!43![!6q +)'9i`)'&`F'9KFR-JG'mJBQ8JC'&YB@GPC#j,!*!$'!!m!%!!Y!'B!!%"!*!(!3F +!!#J+!*!$'!!m!%!!Y!'B!!%"!*!(!3J!!#J+!*!$&3"8!'3!L`''!!%"!*!("%X +!N!3(39"36!#3"RG"4%05!`!!J!e6#eXJ!`1QB-1UDV-`X!%LBQ!h5l(E@C@J)', +$(ZVC`*K9-3YM+VVhTe1X#JZ*BmLfiRI@!&)SrH'p`)*+Z-9!Tf0)-Sk[fIFQ)Jk +rkFEqqpLI1PG2++D4"4f4ZS)CZ+2&'UkSDLHN6c)+ldA1"3#3!eG"4%05!`!"!3e +6!Yc@"T2hdNE0440Y!,6j0bkmfddECX*X[UX,hi6GX0[NhAE9eA9K!!NiTBMrG!A +k'M5Q0Klla*eVf8k#LE$6%2V!XqJ!D*!!aElq",i'!!!")N&%3e)$!!1+$9-+Qb3 +!IiC&X0dj141`a3jG5dj2(GX"&32EXIVB$&EecMiSU&KpE-&ZV1V'`$pMIe6d[rp +[Mr0f9KR'kJ!,Q680A&D0p-'14[HZ8aVX",2c+"6FaH)b3VE8Z5$*F`Z3!0p[JRD +#kG&%G-mTHE-6hEc*lLZ&K$2-5eVUQP++(3Xq(j[6I`6`H[ijkXV6kQVrRepZakZ +Ir82rqj'@*3+i-fUMJQe@`8JQ[%@VE)a9Y9jE2Q+EYiAYB49ph"I'dPT-T*5d!R% +I6(k-`pHZ'qD(TKRU8p[f6Gd2ZK"S@S!R"-J!R!"-[ISY!2lU#3-4I`$`SR,K!K! +FJS!"JQ*J,6L,N8'-h`a#j")kiZTMNXbp+(%I60pdq8A%+fc,'!#3!c!!N!F%!!$ +rN!B!!3#3"`)!N!F$!*!("2q3"J#3!`B!N!82!!#6dfPMER-!!*26D@0c)`#3!dJ +!J!(!!q!%%!R)%[3fPR8A05B9j!Z)""!$i!(!!)!!N!1!!F!$i!I`$rJIr$rqIrm +rrKrm$rJ(m!2J!F!!J!!!D@0c0!#3!iJ!N!63!*!'$Im!N!EHl[!!N!30$-c2!*! +%d0rr`2!!!!d-rGlYc`!!hXhXd-l1m!hqcYh-cFlr!2l2cYhXc[!!$mlHrYc2!*! +$r1rmc2!!N!-2c-c2!*!&rZl`!*!&$rm!N!I`!*!,D@0c1!!!!3J!N!L"!*!1JIr +r!*!-JIZ3!rm!N!U"!2D3!rMr!*!)J3$jrj!$q2Ar!*!'J3$frrPrUkYrq2m!N!5 +"qrCrr2Grp95Vp[[r!!#"rr[fr2Pr+P48IrElrrm!!2rlp[rhUrRjUrIfqrm!N!6 +rq2cjr2rmq[Eir`#3"[riUrrr+rEir`#3#2riN!Ar!*!+rrZ3!rm!N!crN!-!N!l +r!*!A5801)`!!!3J!!)!!!!&!!!!#)!!!"*!!!!!*b!!!%q3!!#!#!!"!!3!!Kq# +!!3r`3!)F-#!%'Im3#"U+#")bLL3Q-[)b6M3'15CPp$)5C43N#'Im#!4``"!#2q! +J!3'!3!#'`)!!3!%!!#!#!!!6j!!!#FJ!!!53!!!!!L!!!!&!!*!$J!#3"i!!!!( +!!!!$i!!!"r!!!!ri!!!Ir!!!2ri!!(rr!!$rri!"rrr!!rrri!Irrr!2rrri(rr +rr$rrrrjrrj!$2rrrrKrrrr`2rrri"rrrm!2rrq!"rrr!!2rrJ!"rr`!!2ri!!"r +m!!!2q!!!"r!!!!2J!!!"`!#3!i!!N!9TBf`d!!!##!#3#0!!N!i0$`#3$Y$-m!# +3$!d-r-m!N!c3crr-m!#3#Jd-rrrmc`#3#Y!-c*!%m!#3#!d!c*!&c`#3#0!-cGf +3!mc-m!#3"Jd!c+rrrrlFc-m!N!E3$-hpc-cIc*!$m!#3"!d!c-kXhC!$lZh-c`# +3"0$-c-rFh0!!c0h-c2!!!!d-r-cIc0c3!-cXc2c2!!$3crc-kXh-N!20l-crc2! +0$2rmc2h0c*!$cGc-rrc2!2c2r-hmcFhGhXlFc2r-m!!2c2c1V0l0c-hIc-cmc`# +3!rc-bUcHlrrrrFb3!r!!N!-2c-hpc-cpc*!%c`#3"Ic-f[q3!pc-N!2`!*!&$mb +3!mrFc*!$c`#3"rc-crcrc*!$m!#3"`r-N!E2!*!*r-b3"I!!N!N2c2rrr-m!N![ +mcrr-m!#3#`r-r-m!N!hmc2!!N!d2c`#3$r!!N"GTBf`i!!!%#!#3%)%!N"k"!2m +!N"b"!&3Vr`#3'S%!92p8+rm!N"L"!&6rN!08+rm!N"D"!&6rN!98+rm!N"5"!2A +fN!08pT!%+rm!N"+"!2AfN!6ipT!&+rm!N"#"!2AfpS'3"PEhp[BVr`#3$S%!pIE +frIq3"[a@pT!$+rm!N!b"!2AfpPErIrH3")(rprD3"#[r!*!+J3$epT!$r2hh9Rq +3"DZ3!hrfpL[r!*!)J3"8pT!%rhrfIbTr!*!$9&4r9L[f9#[r!*!'J3"8rrD3!eE +rq2Gr+Rm!N!089+[h+rEr9#[r!*!%J3"8rrrfN!2mrIG@9#T8N!9rUrIfp[rr9#[ +r!!#"!&6rN!08q2ErIrCr+T!&9&4rIrIi92q3!e6ir`!!rbY8rrrfpPErprGr+S' +3"+a8UeEfN!2rre6ir`#3"2mV92rfp[cppPDV+S(fN!1"IrrhpT!$re6ir`#3"[m +V92EfrIhh9UZVrj!'IrIfN!08q2m!N!Mr+rEf9[jrpj!%ri(hN!6fN!2hq2m!N!V +r+rEf9[hrN!D"pT!&prMr!*!-rb[fN!ErJIH3!rD3!rIir`#3$[mVpT!$rrrirrr +ipT!$prMr!*!3rb[fN!2hprMhN!2fprMr!*!5rb[fN!48pT!$prMr!*!8rbY8rj! +&92Mr!*!@rbY8rj!$92Mr!*!BrbY8re6ir`#3'[mV92Mr!*!FrrMr!*!Hr`#3,fP +d-c)!!%V6!*!%rrqkr`!!qrq!!2RrJJ$hri3!pIq"!!$2J3$cri%!!ZEAXi%!mIq +"!!6Vkp'[Qi%!lrq"!!EVlG[#V*fAJ3$Yri%!#1[Yfm1cUk5GPi%!krq"!!VVlG[ +$X`#TUD5GPi%!kIq"!!6VlG[$Xi!!"+QTT*fAJ3$Rri%!"1[Yfm1cJJ!%T+DNRCL +"!1ArJ3!%kqhE`l1!!!"%J!!%R+HNRTL"!12rJ3!%kqhE`l1!!!*%Gd5!!!5FTk@ +IQ)%!iIq"!!6VlG[$Xi!!!%5!G`"%J!!%RULRRjQ"!0rrJ3!%kqhE`l1!!!"%JRF +!4)!!"*kTU+#DJ3$Gri%!"2AYfm1cJ!!!4)4h!%5!!!5IUDQJR)%!frq"!!6elG[ +$Xi!!!%5'G`"%J!!%S+ZTSTb"!0RrJ3!%kqhE`l+!!!0%FR*aK()"F85!!!5KV+Z +MRS%!erq"!!6VlG[$XS!!!%5"DJ0VDQTVJQS!4)!!"++YV+5IJ3$9ri%!"1[Yfm1 +cJ!!34'*LB@*LB@*LB@*KB@*KBN5!!!5MVUfPS)%!drq"!!6VlG[$Xi!!!%51@3" +%J!!%T,#ZTk'"!0(rJ3!%kqhE`l1!!!"%J9%!8SY4!%5!!!5QXE#TSS%!crq"!!6 +VlG[$XiS!J%L+!!5RXl'USi%!cIq"!!6VlG[$XiX!!N!r3)X!"+LdXUUPJ3$,ri% +!'H[Yfm1cV+ZUUUHGMB*rJ)#"J3!!1$Jj!!#%JB8"KSH"L!D0PkUfXkbQJ3$*ri% +!$1[Yfm1cV+ZUUUHGMB+"J!1"J3!!J$-"!!#"K3''Ki#)#BQ*LSfBUVHeVDL"!-I +rJ3!'kqhE`l1XUi#U!U@AMB#,JB`"!!#!-`S!!)@&LBk4NT18P)#9"jDDTE5lYUk +SJ3$&ri%!"Z[Yfm1cV+Z"UJQRSTqJS+'JSD'LK!!8KB@1S+QUUkZXV+fYVUqbZEb +pYl#TJ3$$ri%!"Z[Yfm1cV+Z$US'VJ+`"VDk%!!1&KT+TJ,B#YlLiJ,S"Zlb![31 +qZ,+VJ3$"ri%!"Z[Yfm1cV+Z&UJ+VV+Z!V3@ZVUq[TC!!J)8@KSH6UVDfYlLjZEU +l[,fm[Ekq[lqkXkf"!,rrJ3!'kqhE`l1XUi5UJ+X!V)'Y"kkZVl#QN!#&KB#($*1 +VYVHhZEQkZlbp[Ek"[`6![lZdVB%![Iq"!!EVlG[$XkbVK+U!U`+XV+f!VJ@[Vl# +aUCL!N4#6NjZZYlLiZEUl[,bp[Ekr`)$""-,"[E@[J3#lri%!"Z[Yfm1cV+Z$US' +V!UbXVB#Z#+q`X,'aVkZSUB#U$kfdZ,QkZVZm[,fq[lr!`-'!`J6$`VkfVi%!ZIq +"!!EVlG[$XkbVK+S"S'##+i3XJbf#,S-["M")Mm$!`F+"``6%a,qfX)%!Yrq"!!E +VlG[$XkbVK+S"G3ZH!!9i`-,#`m1#a3,"Z,+"!,ArJ3!'kqhE`l1XUi5U!)#(!!% +"#*3!"`bl[m,$a-A&JFB#`VQdJ3#cri%!"Z[Yfm1cV+Z%UJ'V&U%!$SLa[-,&aXE +(b-I(b-1kYB%!XIq"!!EelG[$XkbVKDS!GBF!!K&8CS*R!QKSDB&U!QYXE)"Y!%Q +#!!KlRl#raFE(b-L"b3,&[,D"!+rrJ3!'pHhE`l1XUi5U!UZV6)B!"4PpKB@'Ki# +)!iQ*LSU!L`#0JBi#Mj!!2i%!"C+9SlR&ai$)!FR,J-S#aVkhJ3#Yri%!"Z[Yfm1 +bV+Z%UJ1VUk`JJ`!+!3)!G)@'L)U0NC!!J*)(Nj18PC@@PTH!Q!'CDS!!%L@6P*k +faFM)bFR+bmc,c-[([lL"!+[rJ3!&kqhE`l+VKDS$UkZXSB-!$3)*!K'&KBL,JRG +lI(apJ(k!I`+!J)'!JJ'$3S!!"MKZEhH)P*D!P`QBQ*R0cFl0bF#jJ3#Tri%!"H[ +Yfm1cV)@UJ+X"V(D#!!N%#3i!-S@'LTBUS!!(QXl1cmr+`VZ"!+IrJ3!'kqhE`l1 +XUi5UJ+X#V+e-J3!*"3X4%!",KSL3!+5K!!M,c-l1dG$-`VZ"!+ArJ3!'kqhE`l1 +XUi1U(DZUUkZXV+dK!!!""``5'!m!EBH*PS!!!0rrrjmKJC'r%DZL[qqQ(3!M[,c +"bY$4dFh$[B%!Srq"!!EVlG[$XkbVJkU#UaQXVD-!!!))$43D(`N!KiL-Qf-!%2r +jpQX&d*(r%Z(EeE3c%`")TUD[`p$5dp20aEq"!+(rJ3!'kqhE`l1XUi1UJDXDV+b +YVRF!!`N3&4XJ*`)LKiL2S6J!82remLm@N[m-fH@lK6-'!''FRD[%dS(8!Xr'[i% +!Rrq"!!EVlG[$!+bVJkU!Ui#X'DfYVNd!#4%@(#-R+!"%L)L5TKF!J2hai!9@NIm +9qG[IXf)`!!"rRCqabG68eG8!eFr(`)%!RIq"!!EVlG[$!!#VJkU!Ui#X'UfYVUi +K!K)A(L3T,b!!ABL*PCB!!,rklD-(KC(p&[2PdUY*)`!+RCfMYmh8eGA@!!$@dFR +!J3#Eri%!!q[Yfm1!!!@UTk@RUUU!Ui#X'kfYVUqN!!JC(b8U-6FC!(q)M*Yi!!$ +rp1TT#VQ4m`cSlF#G-aS!*jfGTVh3J0B!ei!!!p$2bF'"!*RrJ3!$kqhE`i%!"+H +GPk+UJ+Z!V)#Y'+q[H!!3)#BX-MJp$4')LC!!S8m!-2rYj6%0NZX3jr@VJM-0!%k +GRUV$dYA@epH"!!2(d-V#J3#Ari%!!q[Yfm1#!!DGMBfIUUZVJ+`#VDkZJ+m@63! +F*bic1$p&!$5*LC1Q,J"Jrq6L#MD5i"$XmCPN-`!!GTkJVXM8epIBfB)!!mM4bm1 +"!*ArJ3!$kqhE`i!!"d3!!)f#LTqUJ+Z"VB#[&l!K!LJ[06T"4MJ!6BU,PD`!!*r +iiDN01*(@&0leej&2+!!!P*kMY-cAepMBf3!!4)!!!mR4c-5"!*2rJ3!$kqhE`i! +!$844!!##IiZJUkZXV+fYJ+iEX,#Q!!ia0MY#5%dT!'H,MTZ%!!$2m0h"%"CdYil +-$pEVrCZ*04i!(TqJTV[2epH!f3-!!&&%J!!$bG,-a)%!NIq"!!2VlG[$J!!)4&P +4!!"rJ)ZJJDb!VMk[Vl#aHJ!G0ce%58j9(!#,Lj!!S@B!%2rSfGFh'"mP+c%e38Y +AB@eiJikCTDqk`G2MpED'Gbd4!$bIS+V"e0MBJ0N%!!"4@85!!!2+dXc%J3#2ri% +!!q[Yfm1!!!e%BPP4!!"rJ)ZJV+bYVB#Z4kq`XE&1!#ir48T39ed')iZ,Nk8k!%$ +rhGA6aB"fH(YmIS1'M*!!P*HDRU#NTkZYXlU9JRpF+JJ!C+#KVXM@f0MCfYS!!&& +CBN5!!!2+dXc%J3#0ri%!!q[Yfm1!!!T%DQ&C83!!J)#,SB#YJ+j*Vl#aXE)L!%& +&5e*AAPB!2BZ-PUXA!)$me0(3cFc*amA$`,qqZE@`V+HMRjZ@NSb*Ji"kGdJP!!# +#S+1dc0MCfGVDf`!!89PKDN5!!!2+dXc%J3#,ri%!!q[Yfm1!!!Y%F@TL@9%!!)# +!M+'!V8#ZVV#`XE'bU!!44de8@9pP3J"JLifDT3!![r63cXc+b-E$`EqqZl@bV+Q +NS*ZBNSq*KS"pGh4Z-a`!#U#KTVR3fB(D#0X!!&&CBQTa4)!!!mV5c-5"!)RrJ3! +$kqhE`i!!%%4hFQTK@9%!!)#"M++YVUk[J,!lXE'cH`!P6P9DB@GX-J"kM*!!Rh` +!!1rRc-[)aX2#[lqmYl1ZUU@KRCQ8N!#,Ki*qHA9`E'FM%3!SSD'T[p5!fS$E#!! +!89PKDR*h4)!!!mV5c-5"!)IrJ3!$kqhE`i!!"d4hGh*UB9P4K!"#VUq[X,#aXV1 +c6`!p9PaLD'ed&K'0MC1P@`!JrpM*am6#`,qpZ,5[UkDLRTU9NBb)JhpkGR&YD'C +9)!J!8+'KVXE@fS3!"e&CB@TbGhG%J!!$bY,-a)%!KIq"!!2VlG[$J!!!4)"h"(* +UBPP4K!!dVl#`XE+aXl5c)J"AAQ0TEh9l!#b0MTDU,`"Jrm[&`m'r[VQeX+bRSjq +EPT+0LB5!HhGbEQQ!CJT#(J)!EU+NXXcCfi3!"&&CBQTbJ(F!4)!!!mV5bX#"!)2 +rJ3!$lq[E`i!!!%5"Ga"bDf&C88K!16-c!!#NTDQZXS#c+jd!&epPDR&fHf%!6ik +2QE!!!)rd`m'r[VZfXUfTT+#FQ*12LSD"IAKdEfYRJ@B@-KB!!*LLTVR3fYX!!$- +c18")89PKDh+"G`"%J!!$bFUfTS%!JIq"!!2Aep$"J!!!4)*h2R*UBPP45$mi-c- +!!)q2Q+UbXl1dF3!aCQYbH(f%4!"UMT!!RT)!!-rS`,qmYl1ZMS#!IRjlHRPkHAT +jHRPkHQb#CKBL$`!8SU1T[Y2Df`!!-c-i2dK4@@*UFS*h!%5!!!1VP(erJ3#"ri% +!!l'YUkQ!!!"%JAFrFQTL@9&)3$Jc-`!!KB@3!+HcY,@e43")EA4jIS@,,3#1MT+ +NC`!!rpZpZ,5[Pb80&"SM+M)h490KEhf+Q+Dd[i5!CKGF&JS!2D1MVFA@fpX!!$- +c1%")89PLDR+"G`"%J!!$N!"jDR'"!)2rJ3!$NjfMU)!!!%5!G`4bDf&C8B3!-i@ +&N!#TY,5eYKF!DA9kJ)H-N3NNMSkAUNF!32r'YE#XTb!APVZURBb!IhTeF@eSBej +FEm'hJ'B,6"-%!&ZMT,$,fGcFK!!%89PKDh+!G`"%J!!$M@eBAi%!KIq"!!13!*b +MSi!!"d4hGh&UBPP4K!!cKB@4UE5eYD!!&R9lJSH0NiB!2iq3!*U['!#!rl+ZUD@ +$"D,rriBc1CkCNiPrFfTI8dFrX,q!CJXf%3!!K+1QYFrEh0f%!!G4@@*UFAGh4)! +!!ieY9PD"!)IrJ3!$NCbJQi!!#%4hFQTL@9%!!)#%J)8LKT+UYE@fFJ!eIB5)MT@ +EC`"CMj'GUJ!!VqZVTD+G6JM`rpq!!!bFUCQ6LApcDPp64m1VJ'B**!X!!+1NUEc +6h)(G#mqcTJ!!89PLDR*h4)!!!ieY9PD"!)RrJ3!$NCbJR)!!3%4bDQ&C8J!!K)5 +&KBD(Kj1UYVHh43"AKBU3!*HFXPB!IT!!P+0r!!$Iek1HQj8b12rrR`!!$YA#UCQ +6LApcDPpMh*L!CJS-"J!TT+1X`YEFh)$G#XqcTJ!!8PPKDR*%J!!$M@e@9S%!Lrq +"!!14R+#FJ!",4'TL@9%!!)@&L)k4NT+EVEHhZ"F!GSb4Q*qke#X*N!#4PkKH!#$ +r[*ZANSi3DIrrB!!!81r9`UQCNiPrFfU(jhGQCNm*!`"4T+5[b0Q#h3R6[V-!!&& +CBQT%J!!$M@e@9S%!MIq"!!15RD'FJ!!p4'*C83!!KB@1RkQUUUbcYlLL!"'0NjL +N[phe!#f4NCQY-!"3rk58MiYh#kErrb!!!)rrlpA#UCQ6LApcVZL!CJNm"`%!FD@ +PXmhFJYd)fY22!!"4@@*%J!!$M@e@9S%!Mrq"!!15RD1HJ!!-4&P4!!#&KT'TYE@ +fYi#i((3!0T5EUXANqE)!5*'4RE3-!)rbNBb)JP-3d[rrJ!!-crrrlpA#UCQ6LAr +0bi"Q##-%!!#DT+LkdiEG"!!!89P%J!!$M@e@9S%!NIq"!!15Rk1IJ!!S4&%!!)D +'NUUeYEDhZ,Lj4J"IQl,-k[RND3"YNC5KP3!!RdNM)b%J&KL!X`*$-f1"X`LRQj' +%J(YhmQf!'JJ)!3!9TD@X`0D'h3-!!&&%J!!$M@e@9S%!Nrq"!!18S+@IJ!!J4!! +!KiH6UVDfYlLjZESA!)Zje1rhhF3i!*'5PkGf!!!3J`!!%)dc!68ZK!!&0+@QVXE +CKYd#!!"%J!!$M@e@9S%!PIq"!!18SDDJJJ!DKiH6UlDhYlLjZU3!#lhDpI,A[D) ++'j+5QDYJS!!&AD@QXmhEKYf#!!10E9C@J3#Ari%!!j@LTk+"!"k(L*1XYlLjZEZ +kG3""i2RXdVHHK3"!NT1GXkXb-5iTJLD%*`!+J!!!(S%SKLN&2TbPTlI4Kpf"!!1 +0E9C@J3#Cri%!!jHMUD5!!!@)L*@XZ,Q!ZKQl4`#'qHA-XCb58`"*Nj5LZFE(`l1 +IQ*HBQB#D"CZFR*fG#S!!"(LJS+'KJD-%T+1NT+@!TJ+U[G1(hB!!!jPY9PD"!*[ +rJ3!SQ+5UT!!!L)L9V,LjZVZl["J!ZGr%UTZ1JMX!3C1ATVh)b-1dSTZFR*f!RJ5 +IRk#K2B%!"TDJSU5PTUD"Ti'S"+QUXXAAKpd&!!#`GeC@J3#Gri%!*jqPUUB!LiL +9VEQkZlbpT3!!fEqNQ)YrEMJ!!&12Ulr)bFLpXDbXVDk"V`+`McL"!!NISU'QVVD +hYlQiJEQ!ZJ1l`p(EKYd&f`#mL9e@J3#Iri%!'+#PV+HAM*@YZVZm[,f1!!#jRjD +(HfaG6!5@!!KJSU+V[mc2d0#"dS,6!GEDKYd&fp1mNQaGJ3#Kri%!'*USVDLBQDf +kZlbp[Bi!!(q8K(9T@dj"+!U8!!N-RD'MVmVBfpVEJ0b0h3AEdlb5Ffb"!+2rJ3! +'QkQ[UD@`Zi#p$VkR!!!EHA0Q9dSq,5%6"*-!$'QMSUDfcpVEh0[Eh0b-h3AEdlb +5Fh1"!+ArJ3!,RUU`XlLl[,fq[m"8J!!(&"B6&aF4"J'6!!TSSU1MUm$8fY[Eh)l +G"G[6[**cFi%!Trq"!!fIUl@k[,fp[m$!`ABX#TJ!$"ipM+'MSk@dbpMEh0b1h3A +Edlb5Fh1"!+RrJ3!1RkffZlfq[m$"`X'eSC56J*3"PCD!P`5BQ*UD(B%!!LHGRB# +IJ+!+SD+LSk@[a06Eh0b1h3AEdlb5Fh1"!+[rJ3!'SDkh[Eqr`)$#"lbXRTH@PC@ +@J*F%Q*QCQT!!JJ!$6TfIRi'J#k'LSk5SXm,5fG[Fh)hG"G[6[**cFi%!VIq"!"L +LVlLq`-("`m6#[,'ST++LSk1NTD@QTUGcJJ!'GTkIT+UYVS#[#E+e[FM6fG[FhGb +-h3AEdlb5Fh1"!+rrJ3!3Sl#j`-(#`X6&a-'qZlZmT(D!Ai"J!$'#!!j26e&BB@4 +PFD6+c-r5epU!h)hG"G[6[**cFi%!XIq"!!fNXVV"`m2%aFE'amM*2j3!!@cCJ0Z +!h)hG"G[6[**cFi%!Xrq"!!ZPXlc#a-6&amI*b('9!!-eeYMDJ0b0h3AEdlb5Fh1 +"!,ArJ3!+Tl5pa-A&amM*bA')!!!ZL3!&Gm,*dYVFMGd&fp1mNR0cJ3#hri%!!kL +e[X@!a`I*bXYQ-c%Y+S%T!c0mT&'"+!!TJ5S'0B#VVE2&eShG"G[6[**cFi%!ZIq +"!!kSYlr'b-M*bmc-bEUPR*Z"R3LIRk#KSU+KSU+!S`DNSk5NUll6M0d&fp1mNR0 +cJ3#lri%!%+Qi`-I*bX[-cFUkU*qJS+'KJ+)$TUZ[US'QJUF$Ul6(f)[G"G[6[** +cFi%![Iq"!!UVZ-,)bm[-cXc&ZB#a#V+bXl5dZF('[lLhJ,L!Z35k[XR9fiVG"G[ +6[**cFi%![rq"!"@YZX2,c-h0cml,b-I)bXR+bmc1dp65K!!%dY,6fGb+h3AEdlb +5Fh1"!-(rJ3!4VE[&c-h1cp(4dY26e0A9eYEAJ0L%!)lG"G[6[**cFi%!`rq"!"# +[[-E0cp$3dY,6e069eYEAf)$C!3!!J$-&!!$1cp2DLGd&fp1mNR0cJ3$&ri%!&,# +qb-r3dG(6e0A9eYEAf0MCfYS!!)!c"3!!Xl1qdiMG"G[6[**cFi%!arq"!!fa`-R +3dG,6e0A@epIBf)$C#pS!!$Ji13!!TUDcciIG"G[6[**cFi%!bIq"!!5b`FV4diX +!!N!r3)X!"YhEdlb5Fh1"!-[rJ3!%Xm,0dY@+!)")LJ!'hG[6[**cFi%!cIq"!!5 +ea-h5eB!!!%5"83"5Le%!4)!!"Xr0aV#,FA1"!-rrJ3!%[F62e0#!!!"%MPN!4)! +!"V1bUjPjCQq"!0(rJ3!%[F63dXH!!""%BQ*KBQ*KBQ*KBQ&KBQ&L4)!!"UDNRSe +`AfU"!02rJ3!%YmE3dmH!!!"%J@S$DfTUDi*U!%5!!!DQT*k0F&pUJ3$9ri%!",M +(dG6*J!!$4(*bFB4b!A&%J!!'TU5HMA"IDS%!erq"!!5jb0(9bB!!!%5'G`"%J!! +'TU5HMA"IDS%!fIq"!!5jbY,@bS!!!%5%G`"%J!!'TU5HMA"IDS%!frq"!!5lbY2 +Abi!!!%5#G`"%J!!'TU5HMA"IDS%!hIq"!!5mbY6Abi!!!%5!G`"%J!!'TU5HMA" +IDS%!hrq"!!5mbp6Abi!!!N4h4)!!"UDNRSe`AfU"!1(rJ3!%[-[8emZ!!!"%J!! +'TU5HMA"IDS%!irq"!!5mbp6Abi)!"UDNRSe`AfU"!1ArJ3!%[-[8emZ!!!DQT*k +0F&pUJ3$Rri%!$,c,e0I,!+LNRSe`AfU"!1RrJ3!+[-[8emZeSBe`AfU"!1[rJ3! +)[-[8eX+FFPpUJ3$Yri%!"Vc+c,H(C@U"!1rrJ3!%Z,D@F@q"!2(rJ3!#RhjcJ3$ +cri%!!(U"!2ArK!$hri)!qIq!!2[r!!$rN!5jrj!$Z[m!!2[rJ!$jri)!prq%!2A +rJ3!!ci%!mrq"!!,Qel1"!2(rJ3!%kq[4VjZ"!1rrJ3!'kqhE`UbGPi%!lIq"!!M +VlG[$XkZNRCH"!1[rJ3!+kqhE`l-!UDQNRCH"!1RrJ3!%kqhE`l1!!!5TUD5GPi% +!jrq"!!6VlG[$Xi)!"+5QT*kAJ3$Pri%!"1[Yfm1cJ!!!4)!!"*bRT*kBJ3$Mri% +!"1[Yfm1cJ!!#4(G%J!!%RDLQRjL"!1(rJ3!%kqhE`l1!!!"%J(F!4)!!"*kSTTq +CJ3$Iri%!"1[Yfm1cJ!!!4)*h!%5!!!5IU+LJQS%!hIq"!!6elG[$Xi!!!%5%G`" +%J!!%RkUSSCb"!0[rJ3!%pHhE`l1!!!"%KRF!4)!!"*qVUU+FJ3$Cri%!"1[Yfm1 +bJ!!!4)9b!h&bFN5!!!5KV+ZNRB%!erq"!!6VlG[$XS!!!d4UDfZ(DJ"%J!!%SUk +XTCq"!0ArJ3!%kqhE`l1!!!&%BB0LJ''!BJ*KBN5!!!5MVUfPS)%!drq"!!6VlG[ +$Xi!!!%51@3"%J!!%T,#ZTk'"!0(rJ3!%kqhE`l1!!!"%N!"4!%5!!!5QXE#TSi% +!crq"!!6VlG[$XiS!!NK*5)S!"+DcXDUMJ3$0ri%!"1[Yfm1cL`!#2cp!L`!%UE5 +bUk@"!-[rJ3!0kqhE`l1XUkUUTjf0JRq!J!+"!!#!1!J!!)5%KB@'KSH"L!D-PkU +eXkbQJ3$*ri%!$Z[Yfm1cV+ZUUUHGMB+!Ii#!!S)!!)!c!3!!J)8$KSD(Ki#)#)Q ++MCQUYV@YU)%!arq"!!EVlG[$XkbVJ+S&TCH0LSU,JB`"!!#!-`S!!)@&LBk5NT1 +8P)#9"jHDTE5lYUqSJ3$&ri%!"Z[Yfm1cV+Z"UJ'RSS'J!k'KSU1%!"5&KSqJUDU +VUkbXVDfZVV1j[,fhX+U"!-2rJ3!'kqhE`l1XUi5U!DZVJ+`#VDfZK!!9KBD5UV@ +fYlHiZ,QkZVZm[Ebq[VLaUi%!`Iq"!!EVlG[$XkbVK+U"U`LXVDfZVUq[TC!!J)8 +@KSH6UVDhYlLjZEUl[,bp[Vqq[VqkXkb"!,rrJ3!'kqhE`l1XUi@U"+ZVV+fYJ+i +CVkq`TC!!KB@'KiL6UlDhZ,LjZVUl[,fp[lkrJ-!#Zl5YJ3#pri%!"Z[Yfm1cV+Z +%US#V(kbXVDfZVUq[X,'TQC!!NC+5P*ZYYlLiZEUl[,bp[Ekr[i$""-,"[ED[J3# +lri%!"Z[Yfm1cV+Z%UJ#VJD`JVDfZVUq[X,#bVUUSU+UUUkfeZ,QjZlUl[,fp[lr +!`-("JF)#[VD[J3#jri%!"Z[Yfm1cV+Z$UJ+VS'##+i3XJbf$,S)[!c")Mlq!`3M +#`X6$a-1rYl#"!,IrJ3!'kqhE`l1XUi1U!UYe#ji!"RM"`X2$a-5!a32%`ELbJ3# +eri%!"Z[Yfm1cV+Z%UJ#!K`!"!3L8!!F-Zll"`m6&aB('!X+jXi%!Xrq"!!EVlG[ +$XkbVK+S"Ua@K!!k)XEh$a-A'aXI(b-M%Zl5"!,(rJ3!'pHhE`l1XUi@U!(@(!!) +49'D#C`*SD@Q#DS"X!QeY5B)!#(ZJX-$&aXI(b)$*!mM%[,D"!+rrJ3!'pHhE`l1 +XUi5U!UZV5iB!#aPpKB@'KSH)L)Q+LS',!)b"MJ+2N!!rJ3!3NT@MZXA(b-M*bFV +*bmV'[VH"!+hrJ3!'kqhE`l+XUi5U!kZVV##$!!S"!J"dKBD(LSk3!*'!NJb6Nj5 +9PCD@PjHBQCPUJ!!,*C58RlE%amM)bXV,J-`$bmLrZ)%!Urq"!!AVlG[$XUZ'UJ+ +VV+'$!"!##3)4KB@(Li*hHRamIAeqIS"r!S#"JB##!B0#J!!61'p[H)Q8PTDAPjL +BQFh0cXh)`,Q"!+RrJ3!&kqhE`l1XKUS$UkbXGi)!#33*$J!bKBD+PLUJ!!#DJFi +#bX+kJ3#Rri%!"Z[Yfm1cV+Z%US#V!UbX6)%!#38,%4!!5iD)N!#PS3!)bmc1cY$ +3bm+mJ3#Pri%!"Z[Yfm1cV+Z%US'V'+fY)3!!!3F-%KJ2!'f(LCD!!!$IrrqI)B' +4[a'US,r[TKd!)lbm`F[3dG(0a,f"!+2rJ3!'kqhE`l1XUi1UJDXDV+bYS`!!!JJ +0&"SI#3#(KibFB`!3rrReD`A3NIm5hpR5X6-6!%LQTUr%dG,6dXh&[i%!SIq"!!E +VlG[$XkbVJkU"UaUXVDfZG`!$#4!9'b!R!L+(L)qK1!"3rr6a,aD5r`c@ilD$-`B +!BCbGUm65JG3#cm@rJ3#Iri%!"Z[Yfm-!V+Z$US'V!+b!V4HZ6!!*%4BF)bFS!%5 +)L*+Q&`#!rI$I"9D4raAjfGf[B$!!!(qGS,$)e06@e!$9d-I!J3#Gri%!"Z[Yfm- +!!+Z$US+VJ+dBVUmK!K)A(L3T,b!!ABL*PCB!!,rjl+)(KC(p&[,Md+K*)`!+RCf +NYmh8eGE@!!$@d-M"J3#Eri%!!q[Yfm1!!!@UTk@RUUU"UafXV+fZVDqN!!JC(b8 +U-6FC!(q)M*Yi!!$rmqKS#VQ4ma$Rl,kD-aS!*jfGTVh3eGE@ei!!!p$2bF+"!*R +rJ3!$kqhE`i%!"DHGPk+UUS#V(DbXVDfZVkpi!"!J*L`b1$d0%BL*N!#J6`!`rqc +M-!f5ka$Qp+Kr-`d!6TkHUX,5eGEAf)%!!mI2bX+"!*IrJ3!$kqhE`i)!#Cf0MCq +UUkZXUkb!V4QZVV"0!"`R,M-i2d8!-iQ+NkBZ!'$riZ!+0T,J%1[`PQ-c!!"fRU# +Zb0A@epMCJJ!$b0$,`i%!PIq"!!2VlG[$J!!'4!!!MB++Ri#V(kbXVDkZVkq`X#% +#+#me1N&'1!"0LSZ9V!!!RrIHT`diNGB-hI69MdiS!!#8Rk1ebi$A"0MC!!"%J!! +$bG,,a)%!Nrq"!!2VlG[$J!!(4&%!!)*rLTq!U`+XVDf!VKZ`X+B!$M%f1d*)65N +!CiZ0Qi8!!-r[fVi3&R5hMX`@eHVpQBFe(J!HRk#QZp$AepRCfJ!!885!!!2+dXc +%J3#4ri%!!q[Yfm1!!!K%@9%!!(prLk#!V!+YVDk!Vd5aXAN!(6Fp4%P194`!LiZ +3!+&P!"$rjYE80KJI*5Xa08",9f"UGB#,PD'VYVc3iI5eK(8Y%3!mS+#U`G6Bf0R +CfJ!!89P%J!!$bY,-a)%!Mrq"!!2VlG[$J!!,4'*C83!!Ii#,SDZXJ+e*VUq`X,' +a6J!Z2d9+8&GG"L1,Lj1P13"!rpV5d-*qG(CiHRb!K)Q0N!#8PjUGS+1RUE#iP)" +p@bS)!'1JSDl)eGMBfYVE!!"4@@*%J!!$bY,-a)%!MIq"!!2VlG[$J!!14'TK@9% +!!(q"Lk'XVDfZJ+p)X,'aXL)!389,8PGH9J!pLiZ9UKF!J2c4cXc+amA$`,kmZVQ +eXDbST+#EPj12LSH"IRPf5#8!!)+JSl6-f0RDfGVE!!"4@@&U4)!!!mV5c-5"!)[ +rJ3!$kqhE`i!!%%4bDQ*C83!!J)'-SDfYVUk[J,!kXE+R!"&(694CAf9#!&q-MTQ +P!!#rmmh,b-E$`EqpZVUfXDkTTD#GQ*53!)b(K(plGR0Z-a`!#U#KTVR3J0N+fpV +E!!"4@@*UFN5!!!2+dXc%J3#*ri%!!q[Yfm1!!!a%Gh*UBPP4!!#"JBbLJ+j!Vkq +`XE'bXhX!*8j9@Q&RE$)!HSb3!*pm!!$[jFM'`m+r[EUkYl1[UUDLRTQ9NBf*KB" +mH(4[DfFM%3!SS+'U[p6CJ0S+fpX!!&&CBQTbGd5!!!2+dXc%J3#(ri%!!q[Yfm1 +!!!G%GhGaDQ*C8B3!3Uk[Vl#`XE+cXdm!29CFBQKYG"B5M)f6T9`!)2r9a-,![VZ +kZ,5`UkHMRjU@NSk+KS&pHA9`E'KQ95!)!&#KSUl'eYU%!!G4@@*UFAGh4)!!!mV +5c-5"!)ArJ3!$kqhE`i!!!%5!G`4bDQ&C8B3!0+q[X,'aXV1cY#)!9ejMD@peH`! +XMBf@ULm!B2r'`EkmZVQeXDbST+#EPj12LiH#IRTfF@eTJ'B+3Ki#!'kLSl,,fGU +%!!44@@&UFS"h!%5!!!2+dXV!J3#$ri%!!qrVfm1!!!"%JAFrFQTK@9&)3$Jc-`! +!TD@TVV+bXl5G!"GIC@TaGRYK!%q0MjQ`!!#2mlqpZVUfXUkTTD'GQ*53!)b)K(p +lGh0ZDQH"CKBb&J!!Pk+QZ-rDf`!!-c-i3%K4@@&UFS&h!%5!!!2*bVDQJ3#"ri% +!!pIAd-'!!!"%JRFcFQTK@9&*2cJc-`!!MiqBUV+cY,9a!$&QDh*iIB4%!'U1NCk +6!!$2jVZkZ,1[USTqIRYlHB"i"hGiH(PiHAKVJQB@)Jm!&++MUEh8fp`!!$-c1$p +*89PKDR+#G`"%J!!$Uj4pIi%!JIq"!!1aVDZTJ!!!4)&h2h*UBPP45$mi-c-!!)5 +&N!#SXl5eYN8!5'edHAk&Lbd!MSq6T'F!!2rBZE5`Uj-P$43D)bSb0d45AfekKj@ +LVlU#J'BAA"B+!$fLSkh%eYcF!!!c-cJr5&&CBQTbJAF!4)!!!j!!H@TaJ3#$ri% +!!j1GSkL!!!"%J(F%FQTL@9'%!$1&KC'SY,@eYKF!DA9kJ)H-N3NNMSqAU8F!32r +#XDbTT"mAPVZURBb!IhTeF'eSBPeDEEbdJ'B,6"-%!&ZMT,$,fYcFK!!%89PLDR+ +!G`"%J!!$M@eBAi%!KIq"!!13!*bMSi!!"d4hGh*UBPP4K!!cKB@4U,5eYD!!&R9 +lJSH0NiB!2Sq3!*U['!#!rkkUTD+!"D,rriBc1CkCNiPrFfTI8dFrV,f!CJXf%3! +!K+1QYXrFh0f%!!G4@@*UFRGh4)!!!ieY9PD"!)IrJ3!$NCbJQi!!#N4hFQYL@9% +!!)1%J)8$KSD5UB#f(()!0Af%L)k9QfF!@Bq4RDN!!+rUTk+IQ8`)m2rIJ!!-R+Q +CNiPrFfTI8dI"US"Q#L3,!!#MSkQmdpcFJ0d,cl1Q!!"4@@*VFRG%J!!$M@e@9S% +!LIq"!!14R+#EJ!!*4(*VBPP4!!#%K)#&-iD(NkZfYlG&!&H<!!Pjbb9J"qN!# +8T(m!!0r@S*UANM%irrqI!!!1eF+TQC1*Ih0UAf,DQ)"Q#!`'!#QMT+h"eS,G#Xq +cTJ!!89PLDh*%J!!$M@e@9S%!Lrq"!!14R+#FJ!"-4'TL@9%!!)@&L)k4NT1EVED +iZ"F!GSb4Q*qke#X*N!#4PkKH!#$rZTL8N!#-%'Rrrf!!!&$[eF+TQC1*Ih0UKZC +hCQC2#3-!8D1PX-MCh)(G#G1qX`!!89PLDN5!!!10E9C@J3#0ri%!!j'GSCf!!$e +%B9P4!!#&KBkIUDUUV,5iZ+)!%Bf6Q+5rhI8!,C'4QDi`!&$rSC'0LA8,T[rr)!! +!Mrr[eF+TQC1*Ih1Yk)"Q#6`(!3"`TD@ccGb#h3MDdmm!!&&CB85!!!10E9C@J3# +2ri%!!j+HSjk!!#a%@9%!!)@'NDQeYEDfYlLjG!!fP*ZUaH6jXJ")NC'FY!`!Mr' +1LSD!8K$5rrq!!!c2rrr[eF+TQC1*Imc,J'B))`3!!*UPU,R6KYd%!!"4@85!!!1 +0E9C@J3#4ri%!!j+ISjq!!#K%83!!KBD5UV@fYVHiZEP'!&qEXXcUqH4T!'f5P+' +9!!#I55-L)5!@')#c!N-cBi'c#+HENB5!HhIaEB!D#!J"!"@NTDc!eSEG!`!!885 +!!!10E9C@J3#6ri%!!j1JT*q!!#"%!!#'Kj1UYVDhZ,QkZKF!LlR8lrIGa$J!NC+ +AThB!!"#$!!!3M6-"05k%!!8dTD@ZaYQ'h3)!!%5!!!10E9C@J3#9ri%!!j5KTD# +#!"U(Kj1VYlHiZEUkS`!,[GVemYHpSJSENT+CV&qJ!!9GTUDccGZ'hB)!!ieY9PD +"!*IrJ3!$PD+QSS%!(SL)NkbhZ,QjZVYe!%(JqHc5Yjk&!%#5NjfbUc)b,LQ"*S8 +R!!U!!!!HJ5L'+38qR+@RYp'(hB%!!ieY9PD"!*RrJ3!$Pk1SSi!!)SL)PDbiZEQ +kZVa(!)EjjFbaR**6!%Q8P+'jaXM$XjkAQ*LCJ*S"QjZ!R3!+J!!&H+#JSD+LJD1 +!T!DPTDDQUVh6Kpf!!!1CE9C@J3#Eri%!+*LPUU-!!)L)PDbjZVUl[,dB!,RIa+U +EMS)l!%'8PkDmb-M$YD+ER*bGJCi$S+#K2B%!!jDJSU5!TS1RJ+N$UV,&eiIG"3! +!X(G@9S%!RIq"!#LIT+UP!)U*PDfjZVZl[+8!!0QrT*L,Ifii!!"6Mkc!b-R([E# +VV+bYVS#[!V#3!$L"!!BISD'QVVDhJ,L!ZB'k!l[$dGZ'h3AE!,b*A9D"!*rrJ3! +BRk@XTjH-PDfkZVZm[Bi!!,QIPSGlE&e-"*B!#9qLSUZrcG$3dG'!dS,6!GEDKYd +&fp1mNQaGJ3#Kri%!'*USVDLAQ+klZlbp[Bm!!(q8K(9T@dj"+!U8!!N-RD+MVmV +BfY[EJGb-h3AEdlb5Ffb"!+2rJ3!BR+Q[UD@aZVbp[VkR!!!EHA0Q9dSq,5%6"*- +!#fQMSkDfcp[Dfp[Fh)hG"G[6[**cFi%!TIq"!!ZHUl#bYlZm[Vqr`&5!!!F8&K- +A&a%'!C-!#QLMSU1V`06Dfp[FMYd&fp1mNR0cJ3#Rri%!$CqXY,Um[Efr`-$"Gb` ++Q!!+(Mf0SU+MTE6,fGZ"h)cG"G[6[**cFi%!UIq"!!fIVEDl[Ekq`-("`,@JPB# +8!T@9PS#A"*LCQCSGJ3!%*jfHRTq!S!QKSD+LSk@Z`p6EJ0b0h3AEdlb5Fh1"!+[ +rJ3!4SDfh[,qr`-,$`EZXRTL@P*@@J*F%Q*QCQT!!JJ!%6TfHRjq!S!QKSU1PU,2 +#dYREJ0b-h3AEdlb5Fh1"!+hrJ3!8SDqi[m$"`X,$`VbbU+5LSU1NT+@PJ+B!Fi) +!"RDIS+5UVUk!V`DaYVl)e0REJ0b-h3AEdlb5Fh1"!+rrJ3!,Sl#j`-(#`X6&a-' +qJ,X"T(D!A`0JB'%aJJ!16dp4@'&NCA'Nbmh2dYMDJ0b0h3AEdlb5Fh1"!,(rJ3! +0T,+k`F2%a-A'amI)b6q8!!4YfY[Dfi$FMGd&fp1mNR0cJ3#cri%!#kDcZm,%a-A +(amM*FC8!"MA@f0VEh0b0h3AEdlb5Fh1"!,ArJ3!+TV5m`mA'aXM)bR')!!!ZL3! +&Gm,+dYVFMGd&fp1mNR0cJ3#hri%!$ULf[X6(amM*bXYQ-c%Y+S%T!c0lT&'"+!! +TJ5S(0B#VVE6&epb-h3AEdlb5Fh1"!,RrJ3!1U,DraXM*bF[,cFQkTTbFJCd%RTq +IS++!S3#LJU-%T+@V[p5-h3AEdlb5Fh1"!,[rJ3!1UEM"b-R+bXc0bVUSRjqJJ+% +(SU1PUkqUTU@!TS'R!kZcapL,h3AEdlb5Fh1"!,hrJ3!EUlM#bF[,c-h-aEQaX,# +aXV1cY,R"aVqiYlHiZ)#j",UqbGAELYd&fp1mNR0cJ3#rri%!#Dbk`mV-c-h2cXU +!b!M+bX[,c-r6eG+%!!65dY2Ch)VG"G[6[**cFi%!`Iq"!"5Y[-A-cFl2d0(5dY2 +8e0A@eYIAfGQ%!!$FMGd&fp1mNR0cJ3$$ri%!&DqmaXh2cp(5dp28eGA@eYIAf0R +C!!#!-`8!!-l2dpU*h3AEdlb5Fh1"!-ArJ3!8X,l)cp$3dY28e0A@eYIBf0RDfJ! +!J$-&!!#cXll6L0d&fp1mNR0cJ3$(ri%!$V'rbXr5dp28eGEAepMCfB$D!3!!J$J +&!!#QTV22Kpd&fp1mNR0cJ3$*ri%!",2"bp(6L`!#2cp!L`!'hG[6[**cFi%!brq +"!!5c`mc6e)S!!NK*5)S!"YhEdlb5Fh1"!-hrJ3!%YX20dp@!!!"%N!"4!%5!!!E +2cFD`Lh&cJ3$2ri%!",h%cY63J!!!4)jC!%5!!!DcXUZCH@C[J3$4ri%!",h%d0, +(J!!"4''$BS"KJ')#B@*%J!!'TU5HMA"IDS%!drq"!!5iaY$6b)!!!d4UDfZ(DJ" +%J!!'TU5HMA"IDS%!eIq"!!5iap$8bB!!!%5&FJ0aFR*%J!!'TU5HMA"IDS%!erq +"!!5jb0,9bB!!!%5'G`"%J!!'TU5HMA"IDS%!fIq"!!5jbY,@bS!!!%5%G`"%J!! +'TU5HMA"IDS%!frq"!!5lbY2@bi!!!%5#G`"%J!!'TU5HMA"IDS%!hIq"!!5lbp6 +Abi!!!%5!G`"%J!!'TU5HMA"IDS%!hrq"!!5mbp6Abi!!!N4h4)!!"UDNRSe`AfU +"!1(rJ3!%[-[8emZ!!!"%J!!'TU5HMA"IDS%!irq"!!5mbp6Abi)!"UDNRSe`AfU +"!1ArJ3!%[-[8emZ!!!DQT*k0F&pUJ3$Rri%!$,c,e0I,!+LNRSe`AfU"!1RrJ3! ++[-[8emZeSBe`AfU"!1[rJ3!)[-[8eX+FFPpUJ3$Yri%!"Vc+c,H(C@U"!1rrJ3! +%Z,D@F@q"!2(rJ3!#RhjcJ3$cri%!!(U"!2ArK!$hri)!qIq!!2[r!!$rN!5jrj! +$Z[m!!2[rJ!$jri)!prq%!2ArJ3!!ci%!mrq"!!,Qel1"!2(rJ3!%kq[4VjZ"!1r +rJ3!'kqhE`UbGPi%!lIq"!!MVlG[$XkZNRCH"!1[rJ3!+kqhE`l-!UDQNRCH"!1R +rJ3!%kqhE`l1!!!5TUD5GPi%!jrq"!!6VlG[$Xi)!"+5QT*fBJ3$Pri%!"1[Yfm1 +cJ!!!4)!!"*bRTCqBJ3$Mri%!"1[Yfm1cJ!!#4(G%J!!%RDHQRjL"!1(rJ3!%kqh +E`l1!!!"%J(F!4)!!"*fSTTqDJ3$Iri%!"1[Yfm1cJ!!!4)*h!%5!!!5IUDLJQS% +!hIq"!!6elG[$Xi!!!%5%G`"%J!!%RkUTSCb"!0[rJ3!%pHhE`l1!!!"%KRF!4)! +!"*qVUD+GJ3$Cri%!"1[Yfm1bJ!!"4('"FJ"aJR)!4)!!"+'XUk1HJ3$Ari%!"1[ +Yfm1bJ!!!4)0U!QYUDi"U!@Y%J!!%SDfXT*q"!0ArJ3!%kqhE`l1!!!C%B@*KB@* +LJ'%#BQ*KJ')!4)!!"+1ZVDDJJ3$6ri%!"1[Yfm1cJ!!!4)4C!&L'@3"%J!!%TE# +ZTk'"!0(rJ3!%kqhE`l1!!!"%KP%!8SC4!%5!!!5PXV#SSS%!crq"!!6VlG[$XiS +!!NP)5)S!"+HcXUUNJ3$0ri%!"1[Yfm1cL`#!3)X!"+LcXUUQJ3$,ri%!$1[Yfm1 +cV+ZUUUHGMB+"J!L"!!!i1$N!!)5!K31'KSH(J)J'M*HUYV1XTi%!bIq"!!cVlG[ +$XkbVUUURRBf#JB!$JB%!!)!c!3!!JB8"KSH"L!L*LSfCUVHeVDL"!-IrJ3!'kqh +E`l1XUi#U!k@AMBU"L`1-M!!!J$-9!!#&KBL1NT16P*59PCD@QUDdZlD[UB%!aIq +"!!EVlG[$XkbVJDS"Tk+!S!'KS)#LK!!(KBD1RkUUUkZ!V!QZVUqcZ,bmYl#UJ3$ +$ri%!"Z[Yfm1cV+Z&UJ#VJ+b!VB3!$SD'NUQeYVHhZ,QjZVZm[)#p!lkjXDZ"!-( +rJ3!'kqhE`l1XUi5UJ+XMV+bYVDkZVkqPN!#&KBD'Kj+UYVHiZ,QkZVZl[Efq[Vf +r[VUbVB%![rq"!!EVlG[$XkbVJkU"Ub@XV+fYVUk[X,#QN!#&KSD(Kj1VYVLiZEU +kZlZm[Ekr[m#r`-#mY+f"!,hrJ3!'kqhE`l1XUi5UJ+X'V+bYVDkZVi#`(DQCNC' +5Nj1FVELiZEQkZlbm[Ekq[lr!`F$"`EfeVi%!Zrq"!!EVlG[$XkbVJkU"U`5XV+f +YVS#['E#aXDqVU+QTUUZYY,LjZEUkZlbp[Vkr[m$"J-)%`m+qYUq"!,RrJ3!'kqh +E`l1XUi1U!UZJB))VK#b$,B-ZJbm(5)r!`-(#`X1!a!2$[lH`J3#hri%!"Z[Yfm1 +cV+Z%UJ&e#ji!"RM"`X,$a-5!a32%`,LbJ3#eri%!"Z[Yfm1cV+Z%UJ"rK`!"!3L +8!!B-Zll#a-A&JXB#`VQcJ3#cri%!"Z[Yfm1cV+Z%UJ'V&D%!"SLa[-2&aFD!a`6 +)b-1lY)%!XIq"!!EelG[$XkbVK+S"Uh@(!!-49@CQJ'F$D'GSDB*U!@YXJ'd!5B) +!$hZJVm$&aXI)b-R)bFM&[,D"!+rrJ3!'pHhE`l1XUi@U!DY,KJ!&'Af&KBD'JBJ +"LBU!L`L-M)f0MSk2N!!rJ3!*Nj@NZXA(amM)bB$+!m['[VH"!+hrJ3!'kqhE`l+ +XUi1UJ+X"V##$!!X"!J"dKBD)LSf3!*'4J*)#Nj59JCB%PjLBQ@U!!")PP*5HYX6 +(b-R*bmV-bmc-alqiJ3#Vri%!"H[Yfm1bUi@U!kZVV+'$!"!##3)4KB@)LS*hHha +mIAeqIS"r!B#3!i)#Ji0#J!!'1'p[GiL8PS#A#CLCQFh0cXh)`,Q"!+RrJ3!&kqh +E`l1XKDU!U`'XGS)!#33*$J!bKBD+PLUJ!!HDcXl2cmV#Zi%!Trq"!!EVlG[$Xkb +VKDS%UkZXV%b"!!N&#a%3!%Z'L*!!T+%!#-[-cXr3d-[#[)%!TIq"!!EVlG[$Xkb +VK+U!UaQXV+dK!!!""``5'!m!ESD+Pi!!!0rrrkC"MT5r$Zqm13!M[,c"bY$4dFh +$[B%!Srq"!!EVlG[$XkbVK+S"UkZ!V"+YSJ!!!JJ0&"SI#3#'KifFB`!3J2m#M$M +DP2m2iQBQ!%LPTUr%dG,6dXl&[i%!SIq"!!EVlG[$XkbVJkU"Ua@XV+fYG`!$#4! +9'b!R!L+)L)kK1!"3J2m"@dD8ra(p`fB0!''FRD[%dY66e061aVq"!*rrJ3!'kqh +E``#XUi1UJDXEV+bYVDj-!!N4&K`M*bJ!4)L)NUBA!)$rrr)iHC2r%rliR'!!!(q +GS,()e069e!$9d-I!J3#Gri%!"Z[Yfm-!!+Z$US#V!DbXJ+dBVUmK!K)A(L3T,b! +!ABL+PTB!!,rrrm%kRT(p&[lrqr5"4J!+RCfNYmh9eGE@!!$@dFM"J3#Eri%!!q[ +Yfm1!!!1UTk@RJDS#UkZXJ+d6VUkN!!JC(b8U-6FC!(q*M*Yj!!#!r`+3!$h'NI- +-q[rfjfBc!#HGRDHmd)$@!0H!!!23cmR#J3#Cri%!!q[Yfm1"!!QRRCHLUUUVV+Z +XJ+d8VUk[H3!3)#BX-MJp$4')LC!!S8m!-)$r!9p!NZX0qrr[bQBD!%kGRUV$dYD +!ei%!!mM3bX1"!*IrJ3!$kqhE`i)!"Tf0MCqUUkZ!V"HYVDkZVl"0!"`R,M-i2d8 +!-iU+NkBZ!'#!r`%pB*(J%H,rrHQQCJ!!GTqJVXM8eYIAf))!!mM4bm1"!*ArJ3! +$kqhE`i!!+83!!)f#LU#UUkZXV+fYVUk[Vl!K!LJ[06T"4MJ!6BU,PD`!!*rrrmj +!BC(@$ZMrpH5-8J!!P*qMYFc@ei$B!J!!4)!!!mR4c-5"!*2rJ3!$kqhE`i!!#d4 +4!!##IiUIUkZXV)#Y(Dk[X,#Q!!ia0MY#5%dT!'H,MTZ&!!$2rrrR3dQ0[Bh-&p, +QrrrPi'Sp!"kIRkDld0IBf0RD!!"44)!!!mV5c-5"!*(rJ3!$kqhE`i!!*84C83! +!Ii#,S+ZXV+fYVUk[Vl#aH3!G0ce%58j9(!#+Lj!!S@B!%)(r%QK,8PKHC'KeJBk +CTE'pbGALl[U"r`[XhXaJ*!!mRk#U`Y5!f!ECf3!!89P%J!!$bY,-a)%!Mrq"!!2 +VlG[$J!!+4'*C83!!Ii#,SDb!V3#ZJ+m8X,'a6J!Z2d9+8&GG"L1,Lj+Q13"!JIm +Yp,+TV,#cYVc"b-h5ep[Jj1RZp2,am12FfUPG%J"NS+#Zb0ACf0VCfJ!!89PL4)! +!!mV5c-5"!)hrJ3!$kqhE`i!!$N4VBPP4!!#!J)bKV+fZVS#[&E#aXE)L!%&&5e* +AAPB!2BZ-PUSA!)#*rbEqr2Rhp2,[lHVRj1(Ih0VAeBp9!!##S+5dc0MCfYRDf`! +!89PLDd5!!!2+dXc%J3#,ri%!!q[Yfm1!!!j%FQTL@9%!!)#"M+'YVUk!VaD`XE' +bT`!44de8@9pP3J"IM)fCT3!![iMr(2hkq2Acm1lVk1AMi0lEfGE8d@p#!!UJSDD +kd0RCJ0S)f`!!89PLDR*%J!!$bY,-a)%!LIq"!!2VlG[$J!!T4(GbDQ&C83!!J)' +-SUfZVUq[X,'bXV0m!#9199TKCf`b!(U0N!#II!!!liEr+rhkq2Acm1lVkHAMi0l +EfGE8dFr-9LX!++'KUF$8fGRDfpcF!!"4@@&UFRG%J!!$bY,-a)%!Krq"!!2VlG[ +$J!!(4(GhFQTL@9'%!"UZVkq`XE'bXl42!$e@A'*SEA3@%Sf0Nk9E!##&rarqqrR +fp2([l1VQj1(Ih0VAeG,3cFbZ8a8!8+'KVXE@fB3!"e&CBQTbGhG%J!!$bY,-a)% +!KIq"!!2VlG[$J!!!4)"h"(*VBPP4K!!DVl#`XE'bXl1d)J"AAQ0TEh9l!#b0MTH +U,`"JJrm6r[cjpr6blqhUjq6LhphDf0A6d-k!c!U1838!EU+MXX[Bfi3!"&&CBQY +bJ(F!4)!!!mV5bX#"!)2rJ3!$lq[E`i!!!%5"Ga"bDQ&C88K!16-c!!#NTDL[XS# +c%Td!&epPDR&fHf%!8)k1QE!!!)q#ra,pq[Memr$ZkqMPiq$HfpR@e0(2JX`@G6m +!!*HMTEM3fYS!!$-c18")89PKDR+"G`"%J!!$bFUfTS%!JIq"!!2Aep$"J!!!4)* +h*R&VB9P55%!i-c-!!)q3!*QUXV1cY(%!-@CVFRKpK%3!DSk3!*k5!!$2J2m%rI[ +ipY+"aJ[&aFE)bXc1d0(6eFq#c"CE,`!8SU1U[Y2Ef`!!-c-i3%K5@@&VFB*h!%5 +!!!1VP(erJ3#"ri%!!l'YUkQ!!!"%JAFrFQTK@&&*3$Jc-`!!KB@3!+HcY,@e43" +)EA4jIS@,,3#1Mj+NC`!!rrrqqrRfh&a!4de@A@9UHBQBU,I'eH2brpb!c"Hl55! +!2D1MVFA@h0`!!$-c1%"*89KKDR+"G`"%J!!$N!"jDR'"!)2rJ3!$NjfMU)!!!%5 +!G`4bDQ*C8B3!-i@&NDLdY,@f&`"TGAU!Kib4#551MjHU4`"!rrckprAb9dHYb,H +UQBb-Ki0rHhGbE@Z,rr+!c!ZL4Jd!@k1NX-[Dh0b%!!44@@*UFS"h!%5!!!10E9K +IJ3#&ri%!!j!!R+1MJ!!(4(GhFQTL@9'%!$1&KT'TYE@fS!!@GAZ#Kif6KJ!rMj! +!QDmB!)$rq2Acm-XiY[rrKM-jRTQ6LApcDPp64crDmS$-#hp%!!#%SkDfcp[FhB3 +!"e&CBQTbGhG%J!!$M@e@9S%!Krq"!!14R+#EJ!!,4(GbDQ&C83!!Ji5%J)8LKT+ +TYEDfFJ!eIB5)MT@EC`"CMj'GU3!!VrhdmHrXMc[crpq!!!bFUCQ6LApcDPp64qI +TJ-`)C$%!!+1MUEc5J0`0hGh2XkB!!&&CB@TbGd5!!!10E9C@J3#*ri%!!j'FS*Z +!!!P%F@TK@9%!!)5%J)8cKiD6UlDhZ%8!9i@+N!#AR,*@!(k3!*5MJ!!!hrM[l1V +REf(rrjm!!!l9`UQCNiPrFfTIDIrIJ-`*2am!+D1NV-,@h)(G#XqcTJ!!89PKDR& +%J!!$M@e@9S%!Lrq"!!14R+#FJ!",4'TL@9%!!)@&L)k4NT+EVEDhZ"F!GSb4Q*q +ke#X*N!#4PUPH!#$rmZ[SjH*&LIrrB!!!81r9`UQCNiPrFfU5rp,-c+Jm%`"4Sk5 +[b0Q#h3R6[V-!!&&CBQT%J!!$M@e@9S%!MIq"!!15RU+GJ!!p4'&C83!!KB@1S+Q +UUUfcYlLK!"'0NjLN[phe!#f4NCQZ-!"3rq[Piq$+2VRrrb!!!)rrlpA#UCQ6LAp +c[rb!c!Q-1J3!FD5QXmhEJYd)fY22!!"4@@&%J!!$M@e@9S%!Mrq"!!15RD+HJ!! +-4&P4!!#&KT'SYE@fYi#i((3!0T5EUXANqE)!5*'4RE3-!)rmj1(Ih*p$h2rrJ!! +-crrrlpA#UCQ6LArGli$-#'B`!!#DTDLjdiEG"!!!89P%J!!$M@e@9S%!NIq"!!1 +5Rk1HJ!!S4&%!!)@'NUQeYVDhZ,Lk4J"IQl,-k[RND3"YNT5KP3!!TR&IAejG6NL +!X`*$-f1"X`LRQj'%J(Yhrj1!@JJq*!!9T+@X`0D'h3-!!&&%J!!$M@e@9S%!Nrq +"!!16S+5IJ!!)4!!!KSD6UVDhJ,J8ZESA!)Zje1rhhF3i!*+5PkGf!!!QJ4S#%`d +DM6-#0M-3J4S($3!cTD@[aYQ'h3)!!%5!!!10E9C@J3#9ri%!!j@KTD##!"U(L*1 +VYVHiZEQkT!!,[GVemYHpSJSENT1DV&qJ!!9GTDDccGZ'hB)!!ieY9PD"!*IrJ3! +$PU+QSS%!(SH)P+bhZ,QjZVYe!%(JqHc5Yjk&!%#6NjbbUc)a,LQ#*S3R!!U!!!! +HJLL&+38qQkDRYp'(hB%!!ieY9PD"!*RrJ3!$PU1TT)!!"BL)PDbiZB#k'EY(!)E +jjFbaR**6!%Q8P+'jaFI$XjqAQ*LCJ*S"Qjb!R3!+J!!&H+#JSD'LJ+-#T+1NJ+8 +%TUDU[G1(hB!!!jPY9PD"!*[rJ3!SQ+@UT!!!L)L9V,QjZVZl["J!ZGr%UTZ1JMX +!3C5@TVh(b-5dSTZFR*f!RJ5IS+#K2B%!"*DKSU5PJ+D"T`HSU+QTUV,&eiIG"3! +!X(G@9S%!RIq"!#LITDZP!)Z)PDbkZVZl[+8!!0QrT*L,Ifii!!"6Mkc!b-R)[V# +VV+fZVS#[!V#3!$L"!!BISD'QVVDhJ,L"ZB#k!l[$dGZ'h3AE!,b*A9D"!*rrJ3! +BS+@XTTH-PDfkZlZm[Bi!!,QIPSGlE&e-"*B!"eqLSDZrc0$3J0%"dY+#d`(@fSE +G"G[6[**XAB%!SIq"!"LEU+fSPjQYZlbm[Ef1!!"rP)4eD9Y135J+P!!-$*fKSl$ ++f0[DfpcEh)hG"G[6[**cE)%!Srq"!"LEUDkUTE'k[,fp[UF!!"YjFfCA5MiY)4- +%N`!,DD1LTVE2fpVEfpcFMGd&fp1mNR0cJ3#Pri%!#jfVX,+hZlbp[Vqr9B!!"a3 +@%aFA%3B"N`!+D++LSkc!e0VEfpb1h3AEdlb5Fh1"!+IrJ3!0RkbdZVbp[Eqr`-& +h,!UB!!)H2)f!SJ@PY-[BfpZ!h)cG"G[6[**cFi%!UIq"!!bJVEDm[Ekr`-(#`,@ +KJC3+PC@@PTHAQ*LCQKf"!!3RRCkHRi#J$+'KSU+MTDr$e0[Eh0b0h3AEdlb5Fh1 +"!+[rJ3!4SDki[Er!`-(#`EZXRTHAPCD@J*F%Q*LCQT!!JJ!"6Tk!Ri#J#+'KSk@ +SXX,4fS(FM0d&fp1mNR0cJ3#Yri%!'++[Z,l!`F($a-+mXULMSk+MSk5PTDDQTh1 +#!!9fRTqPUUk"V`QbYEl)e0RFh0hFM0d&fp1mNR0cJ3#[ri%!%+1`ZF$"`X,%aF2 +"[EZl[+4fJ&m$B'"K-B)!$Np289KKC'9aT-[0cp,AfS$FMGd&fp1mNR0cJ3#ari% +!"U5aZX(#`m5!aJ2)b-NrP!!#E0VDJ0Z!h)cG"G[6[**cFi%!Xrq"!!ZPXlc#`m6 +&amI)b('9!!3eeGMDfi$FM0d&fp1mNR0cJ3#eri%!#UHd[F6&aXE)bFPaL!!!,BN +!"AI"bG2Dh)hG"G[6[**cFi%!Yrq"!!kSYEl%aXI)bXV,C6-a,5U"+3-cI+44J5J +!+B%U"c@!UUfcaGEFM0d&fp1mNR0cJ3#jri%!$ULh`-E(bFR,bmc*ZU@FR)'G"*k +IRk#LJ+%"SU+!S`@NTD5V[p5-h3AEdlb5Fh1"!,[rJ3!0UVM!amR*bmc0bEUSS*q +"S3QLSU@VVkUQTDDQJUF$Ul2(f)[G"G[6[**cFi%![Iq"!!fUZ-2*bm[-cXc&Z,+ +`XB#b#E5dZF,&[lQfYlL"Z35k[mR9fiVG"G[6[**cFi%![rq"!!QXZX2+c-h0cml +,J-J)bFV,bmc1dpA5K!!%dY,6fGb+h3AEdlb5Fh1"!-(rJ3!2VV[&c-h1cp$4dY, +8e0A9eS$A!GMCK!#1h3AEdlb5Fh1"!-2rJ3!2Vlh(cFr2d0,6dp68eGE@ei$B!YN +!!)!c"3!!cXr6fSRG"G[6[**cFi%!aIq"!"5`[XI1d0$4dp69eGE@epMCf0VD!!# +!-`8!!,1c[Y1)h3AEdlb5Fh1"!-IrJ3!FXF$*d0(5dYA9eYIAf0MCfGVD!!!i1$N +!!+DQXmq(h3AEdlb5Fh1"!-RrJ3!%XX(,dG1,!)"!L`!'hG[6[**cFi%!brq"!!5 +d`Xh5e)S!!NP)5)S!"YhEdlb5Fh1"!-hrJ3!%YX20dYD!!!"%KP%!8SC4!%5!!!E +2cFD`Lh&cJ3$2ri%!",h%cp62J!!!4)4C!&L'@3"%J!!'Xl+VQAPQEi%!dIq"!!5 +pa0$6ai!!"N4KBQ&KBQ+!B3*LBQ'!BJ"%J!!'TU5HMA"IDS%!drq"!!5iap$6ai! +!!%5$DJ*VDQZ!DJ&V4)!!"UDNRSe`AfU"!0ArJ3!%Z-I4e-Q!!!&%FB&b!('#FJ" +%J!!'TU5HMA"IDS%!erq"!!5jb0(9bS!!!%5'G`"%J!!'TU5HMA"IDS%!fIq"!!5 +kbG,@bS!!!%5%G`"%J!!'TU5HMA"IDS%!frq"!!5lbY2@bi!!!%5#G`"%J!!'TU5 +HMA"IDS%!hIq"!!5lbp6Abi!!!%5!G`"%J!!'TU5HMA"IDS%!hrq"!!5mbp6Abi! +!!N4h4)!!"UDNRSe`AfU"!1(rJ3!%[-[8emZ!!!"%J!!'TU5HMA"IDS%!irq"!!5 +mbp6Abi)!"UDNRSe`AfU"!1ArJ3!%[-[8emZ!!!DQT*k0F&pUJ3$Rri%!$,c,e0I +,!+LNRSe`AfU"!1RrJ3!+[-[8emZeSBe`AfU"!1[rJ3!)[-[8eX+FFPpUJ3$Yri% +!"Vc+c,H(C@U"!1rrJ3!%Z,D@F@q"!2(rJ3!#RhjcJ3$cri%!!(U"!2ArK!$hri) +!qIq!!2[r!!$rN!5jrh3iE@X!!%!)!*#rp3#3I[Arr`#3I2ArN!3!N(Verj!'!*" +ipIq3#!#3G[ArN!S!N(6erj!-!*"bpIq3$J#3F2ArN"!!N'lerj!5!*"XpIq3&!# +3D[ArN"B!N'Merj!B!*"QpIq3'J#3C2ArN"`!N',erj!H!*"JpIq3)!#3A[ArN#) +!N&cerj!N!*"DpIq3*J#3@2ArN#J!N&Eerj!U!*"8pIq3,!#38[ArN#i!N&$erj! +`!*"1pIq3-J#362ArN$3!N%Verj!f!*")pIq31!#34[ArN$S!N%6erj!m!*"#pIq +32J#332ArN%!!N$lerj"#!*!mpIq34!#31[ArN%B!N$Merj")!*!fpIq35J#302A +rN%`!N$,erj"1!*!`pIq38!#3,[ArN&)!N#cerj"8!*!UpIq39J#3+2ArN&J!N#E +erj"D!*!NpIq3A!#3)[ArN&i!N#$erj"J!*!HpIq3BJ#3(2ArN'3!N"Verj"Q!*! +BpIq3D!#3&[ArN'S!N"6erj"X!*!5pIq3EJ#3%2ArN(!!N!lerj"b!*!-pIq3G!# +3#[ArN(B!N!Merj"i!*!'rj"l!*!%rj"p!*!%rj"l!*!'pIq3H!#3#2ArN(B!N!V +erj"d!*!-pIq3FJ#3$[ArN(!!N"$erj"Z!*!5pIq3E!#3&2ArN'S!N"Eerj"S!*! +BpIq3CJ#3'[ArN'3!N"cerj"L!*!HpIq3B!#3)2ArN&i!N#,erj"F!*!NpIq3@J# +3*[ArN&J!N#Merj"@!*!UpIq39!#3,2ArN&)!N#lerj"3!*!`pIq36J#3-[ArN%` +!N$6erj"+!*!fpIq35!#312ArN%B!N$Verj"%!*!mpIq33J#32[ArN%!!N%$erj! +q!*"#pIq32!#342ArN$S!N%Eerj!i!*")pIq30J#35[ArN$3!N%cerj!b!*"1pIq +3-!#382ArN#i!N&,erj!X!*"8pIq3+J#39[ArN#J!N&Merj!Q!*"DpIq3*!#3A2A +rN#)!N&lerj!J!*"JpIq3(J#3B[ArN"`!N'6erj!D!*"QpIq3'!#3D2ArN"B!N'V +erj!8!*"XpIq3%J#3E[ArN"!!N($erj!1!*"bpIq3$!#3G2ArN!S!N(Eerj!)!*" +ipIq3"J#3H[ArN!3!N(cerrm!N(le!*$r!*"$"!#3%B%!N"k"!2m!N"b"!&3Vr`# +3'S%!92p8+rm!N"L"!&6rN!08+rm!N"D"!&6rN!98+rm!N"5"!2AfN!08pT!%+rm +!N"+"!2AfN!6ipT!&+rm!N"#"!2AfpS'3"PEhp[BVr`#3$S%!pIEfrIq3"[a@pT! +$+rm!N!b"!2AfpPErIrH3")(rprD3"#[r!*!+J3$epT!$r2hh9Rq3"DZ3!hrfpL[ +r!*!)J3"8pT!%rhrfIbTr!*!$9&4r9L[f9#[r!*!'J3"8rrD3!eErq2Gr+Rm!N!0 +89+[h+rEr9#[r!*!%J3"8rrrfN!2mrIG@9#T8N!9rUrIfp[rr9#[r!!#"!&6rN!0 +8q2ErIrCr+T!&9&4rIrIi92q3!e6ir`!!rbY8rrrfpPErprGr+S'3"+a8UeEfN!2 +rre6ir`#3"2mV92rfp[cppPDV+S(fN!1"IrrhpT!$re6ir`#3"[mV92EfrIhh9UZ +Vrj!'IrIfN!08q2m!N!Mr+rEf9[jrpj!%ri(hN!6fN!2hq2m!N!Vr+rEf9[hrN!D +"pT!&prMr!*!-rb[fN!ErJIH3!rD3!rIir`#3$[mVpT!$rrrirrripT!$prMr!*! +3rb[fN!2hprMhN!2fprMr!*!5rb[fN!48pT!$prMr!*!8rbY8rj!&92Mr!*!@rbY +8rj!$92Mr!*!BrbY8re6ir`#3'[mV92Mr!*!FrrMr!*!Hr`#3-3%!N!1!!!!"3!! +!!L!!!!53!!!!#FJ!!"2N!!!J!J!!3!%!!)IJJ!%2m%!#($!J""Rr%!JDLJJ5-SS +N*M,b-Nid"MNQCI3b%Q88*!KRr!J%F-!3!MrJ)!%"J%!!KX#!!%!"!!!J!J!!%q3 +!!!R)!!!%N!!!!!)J!!!"3!#3!i!!N!H!!!!"`!!!!q!!!!I`!!!2q!!!(r`!!$r +q!!"rr`!!rrq!!Irr`!2rrq!(rrr`$rrrq"rrrr`rrrrqIrq3!crrrriIrrrm$rr +rq!Irrr!$rrrJ!Irr`!$rri!!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!N!1 +!!*!)('&eFh3!N!-"5801)`#3",qj4P*&4J#3"B3!!%kh384$8J-!T$B393e94`) +!)QAZ4rrHZr1mj,,,c,NP`aFaja,8Jmaeb8"2S10bp$U&%CE0!r81bZGcUd,%Plr +QH$k48dd"X@eITQA-fP*$-kCP@EDraPUQC@IlYXBb$G1dMF-f$F15bl)-Bb,HjrG +lhrIZpIR`r0VCrmmA'f@P*-U")!m#)-J-!&fe[lcll&FUdKN)[Kr$3Gq#Bm*plKf +1QLq!5[c4aDqM38IM@rmRSl$RGQ%Iq[BC`4GrN9&)A3Njb&fr4dKYXE6P(MeX2L3 +3184$q+ZK3ZHRfrI2l@[p%C!!RHl@M,Pp+'"J[0khpFkpf38Ne5XR@L)ZS(Zr12( +@EkePM`"P1IGQMrEPKkkaQQf[R0KZRYZ2iYpaX4h&c9aXTFFpKF&$Vcp'MhX+r@e +Fh!bNF0rVMhAm,8$`"(S9(3B#XGA5Zf@A0@Lc)LV3jD'VApPHkIKEi*%DJ@5q8,0 +C%(i(eIHchHhaBKaE&1,1MGrTqKZKi42%apm@,r6Irhci%I-PPar)UT!!Y63i*(i +aqD[4)FY39Qhd,ViHY*CbBDp[d0ciqmCS%bpeDaNQGrQ'eMd5P5BiV%$BL5H11LG +rT`c`ZXXIJ`,UF'V6S1Y9iHhB$B4N9*5*FE&$f,,IRXah1[RcUmPI8F9-ZIU9F[% +dPMAiE"YjQkjmEr2eL(VYHeZDUM`BfcXQRUMj#prTf'RKca"1Yrj8GMHM$%ke&*h +YESdAXBhrVqXX0Rm@QcmVr2dr6K,4cZBrG@LmpGJ-cD'C3qE'kD'SIH0eQXU2"Ud +aeiprCTipb)p+eHjY2rlCfl-[kr&`A&V%j!d0GM(kNH@Mp!CpIhChIaFK6G[fYpc +68NDU%'HSTAGZRl*)3N%UNMUPM4#PdZ66rkJmm0&dir*d5jPa-D9fqCG#B6F&54d +S,[3I4@8MBfkr"9Xd"9"XKj+aV21hUm9)0e$!q!HeA+(qrBj63dm+iILm-9mieLC +%YR@F!XNd$2[a5,IjTrAeHpi9EN3)YpilGm"DTJrZ"4+mipV)9q(DX[Y9ld5Aj+& +-`jJf#18(5'kB'Vh0-V9q[M@J$bDRkYp,IPC2dm0k*(N2d2i4&deDiVbMeAc$,)( +0&06VDDdrqZYC)J#dFl!e%ShGI+!$$2jeM3L'[rR!)ZF@#l`5+8Qqr"#(6FPCk[a +YFE&P5ZZe"QZF[!ebMZZJbLR$"L+aTfNJdp%B%2M#Qa&hFC&bH$$20J,CAd9pj$! +Bf6S',ar1b9M00L'H0c+'VIA$BGUILm%a1B0YDAhI48"`U[r-``(b[NL89[E)fbL +K*-p0#38[MF526Qlhc6fpGmcTE)%#3SF#SZ2DeHkfM,QRp6,6RC6FjTqk4&+`BhH +VL*CeDS,3fl'18fh#E&[mBVYQ([UkFIU3!0PQXc@qf(4CHTLV5iqaLfDcQ@fQm3P +8pFb$9QrSa3%-i[*633p+N`EiSGR@VX8p-Ihb$D''5jQ"DjGm`3Iq!PYA*K'"QjF +6'Ul&6fT&cB@N(R-@K%62YSK)lNe1kEPpVVPRP[J$9"ITe38Y5#+RNp380FdeVTT +2S1Vi[pAKBb*j`RF*U1&3aPCpc"-AR`,e62kA&Dd*%m,NS1!)k0f3!0AV#5i0Q5) +8@@X@4@-G5i"iAb+S-0fS3TM9iYqH-AGKP4f[mUSG(4@eei$5LpPH3EF%1)C09lX +p@Jr!lq4VMk3l[ehec+X!`D[Dp6&6SUkVaeS'64&2X"&S29@TpmKJ99XXSeK8Y9p +Y2#f`A(e-5)ilU6[K[&I!HDpccJ,5IqbJaa0R'%T9'B!0U&0T8'[`Q2E)8)8EKkD +RaUhdd,Ak@'*5ULRA*#h(*,fMiXRSU`FH&P81IT@qHX$TV'UfC95jAcdJBPA$(4A +IFS%3BI1CS%!KLNqpq3`#K)ahlm*RGXH5(prPkL+b3K8qL8I"eEre3cQjrR0-r4# +U6T@i@eY)030!"Y@@3P+MQM2HY0Gm[iA9ID+XjSp*,5I+`1l@j&GE3r3!3HFI+pd +,!!Uj9)6k&!322[54Gl`'c`R`VF!#9*A92Hp"mqpFfdA!h(MYSmi$%A+c[%dI46H +02@Mq@RP`T&A8Ij2qkVij)c6lZJZAED,qEIUVHhYkD$E!Z"P(A0U%1,iGQ+`r!3" +CB2jDppBRd&pG3Y14fD&0fiAAr1+9crUeqZr6AphhElXqqk-&SGXq'd$`eh6k*34 +9,jd839H4ZE(T#*CH""mb0$LT&`%DG(Br"R*%DT,ES25#3fG*IVEGjhV3h$L2@2h +GJY"BNIRVUGkj#mf,0rA1,FH4&kiFX@[elp&IhAXcVmqq%&FfmrSmB[4haiQT2eR +iNIP2j[A166Er$Pdq4jH2FV)jFB'fh(4%pqd#QhLTM(l'9ejQEIp)TqlEDaI00FQ +pDD`LcdqfN!$+LG4M$hd+i+QhkKQVhHiMeE!S!i+Spm9TA6Y%fGiG!LTJS'QKK+3 +%V(bU25eUEfp@*[TTSMi%l9SCKXmeYHErDbFbp1Y2'F"I+2h+L+'H6Yp)6P*4K$2 +$UlBd!hLGV9X3S*A"L60fE2&6&cM@5pV-9#3'DSj-G0%K,Rpl9iQ6Aj!!6IjX"C- +2bbCrP(HbF`Y&pqT%@D6I`ZVDG'GYcIITe6,Qc(IQ9pI!8I-,Ir9hT%[K%)lU"K3 +dS99r4af-9)q%P'fMb!q%,#Slc4i[($@(*`*(6BGA+#AeL(AiAkH*S-P"j0NE)&5 +bmeLi1hVHifF(X!L6,Hhp)KLm4%T*ccemMBHQJCEeH`-+NrR%D-hh+GReF-`1E22 +M9P5"KF0e34SdIm#MAHf1XRSdjMB5*p$L"h1PjX9k)%C+ck,$%kjAJa+`GPl%m0G +((`Lc125KlH'U6GX"#&G0k2j`5"r%a6bq1"keGr@*G5$F-!U69'%#!8[eM!B,+Ja +f-E+AR+&'*,J$dI$RTPBpB(@Ia8C'3BjSU6QMDKiqQc!*BL-%,PIYDZqbGaRC""1 +8+$5**L-)m"S8T3i5e@%RKT5FB(AbVMG',f8--kLe[L@'BEH&hakp4-GR6808M4J +kMqZN(!ED[!bG5p'K#&A!LLFrR"!818d6MYk+qA%1**+MTEGL-9820Hq%!#((ph5 +$X%@N&TNdZES-b`Ic*lTFILKqC#VS,PC`3aLSl!lYJ2EULBU'lDFV&Vmk9&(CFh[ +9c1hQLYGlEUpBlRQi2!VRASJ&aQ22pH0B-%@UmD@@`D[GeJ258X`")@EbSZ,*C+K +F!R5"ifpMCJ`AkA$Q3I`RcCC")S$eXZr%(B$#R3Gb6IXm4lHTH9e3@'6[,D+ZG`M +ILC&ZG$+lLJ%#e-V)aaXMmTd4#TX1CY1QX(NL"jZp&EA+%CZ8)ieAcBYGA90#BTC +BG39bUr((a6b&L,B+L@$PNmXU+KDEQTGN9(aXLP%35!5Y@*lm8%Z!@DqQT,+kk5! +F81IUNMm`cC)Id%)4)2)-)K!8[T83j8&d%J1kaI0-H96QP+bA*L+b1@LDrP6bXmq +-#Kd1(VaBk8h2T)QfK`l!mr9+!cac`(2`9*DB`N#Y0&"lRU(BNCf%Ch&AGm%aA@q +G+Q(J#ca`ZVM21$!aUJb,bId3rrK#2Ma&l$C9(362L'5L3&i$`FIf$h@XE9%LUr- +B"Ied[5mPDm"i(F@eAlQH-PjEF"f3!+i6$8--i,T)Z6B-X4(AAZAD-!5T##mB[!B +"N!$(EM+#92NSI[8+J96j!+G*8%)[Mdk)[80LNX'4*)$'jhIH3N'ah02UPU'kR9$ +Z1TTpSI+q!m*@jBcKd``8fR"2hFjE-,6Z'3F+SJdJS2#iD&#Veq@2LZ#BhVHcRN3 +p(-)%G6bZqY%P(efi1p"2,PZkFj`l2LcV'!$k3hH'!+5fiDJ2m9Q)$Z8Ff,k(MEC +rN!#fXp#5[V-3JTM6DBSbl%)-pcV3ABdBmMh2$mUM11)GA&bJ)%VU[$2*I%C$KFB +qJJi**-JP15b3!1h5UYGpN!"@N!"2aCV[@0),mNPa!f4K&X5eaQ`GTcZVlm'%JJp +)21SSd0GD38''d!E1+SqKpMN+3E!d$(b!4I9!C1F"902`DJ[hqT`ABT88186%j0i +r$8)l1`MdqPP#A0Q-pfD%S)VH((Ahi!%K[P%j8KmQc!MCHl#a@K"PXl-35)EhkFJ +6[T-R-(3KJ3c9#'$e-QY5Zkrr3BL*1Bp"N!"P#X0(ea%`f2#F#*KL,06P2$i`%)P +'XYrf$5dp(6rEJXR@GKU1'0YEV!`dZEFB*1PcAP")jL"#,+PbKUc0%(mEc)VKi)6 +@m0U28Z&`C9Fj#i&%VFAPCL$[DKX3A-8,jrfmqAi-Fk$Q#d`JTI$4K[5#JRK43-U +a"--"q3!&#[*V&V$`)iC1AZ[UfeQB#q$a`iP"F,GA#DB!4Ymfd5@,Z*'HfjmmY0e +FCHZj[EB*K4-S,%,"JJGf&$T3F+$J3m'0`RN8A#LF3f%+KIY4d&%ih2'NdeRSkML +rj3i#V'e9ZqFI&3I%'8d5$J5b4FX3iQd#eIF'UTmiTV'SAb'*"[,$+!X&&Zle9jH +fTE@8B@+"16hIKFp!6A@XLN!fCk'T(C(R-fG"4J5&0j`&mBjBHY%*A*5LJ#lTAKB +($!"iX[L'$%FX(Ba2pTf@@&Nf##)IY5'S"fPkhlfVTIIGfHBc$cXSmK*3!'6D)-L +d`"!iMA4Ef3Yk[lC99'A4T&fSUJMEDP4@a'Pd'%%`ANd2E08LPDSb,Ee9@5fp$4B +m5&B#YmK4cC1kIE!UUm3*-C2`EP5Z'RJSZrBmJ*-p,1`&-8AV4YX2U#XQc,5)ldQ +9[TpI99REB5N#-[#p2Gh8'4&l%&@KdSiP$eHkZMbT&b[H,0f1LkT$[B0EAMG-)U! +1D,NP1fI+0fX54FYP!k9[H4f"B"`''mia,Ie92+Mbi*98CBV"2eFP@8Y4ZIX`+ST +m(ZIf`6G,ciMf!!d91`6`mjbT&HcA)NP"X#F&"DeBR1YBi[[NU%C%J!GGHP4kJ!6 +"JipM[3$JCSDl8ml"%HfYQ[Qp%!%P9*8IUXXI'2UPd$b"j$jid%$q!$Paq3-pYlr +CE!lEIY$&#+4)"-+)kib2h)C(aA83F3ZFaD$NL8G(I2VHXD"'&3+D6*8!h`31lFX +IZ+0VB8Jk[Z'cF(Gmi*((Q2%"#66`$BDl@BLiim4MK*CPCb#LqmBG3Dm)@Ec@ePF +4@GkYhil)mZj0a$jBGdJ$8U#!65m!N5XlPKbI,MhH8MRdbd#CB3U%-T(`**UjTG+ +FAMLrC@`[rNN[G$YQ6YqpP!*3HSL,+JZ"KcZXIFV&#kpL!KK)hld-$06YAJVNKeG +KSQrh1h4%GRGd8TNHC3$hjlJ5IJMYrdm(!dP8S3L"R'A5TMI98mAkBFF3'-B`8`m +lD"MTiGUhP5i"kP)m8lTqGTPbAF6AVdRApJXJbdh[JTa`00,cNH6KehU3!,!%G)* +Xp4@9YSb+"Qa`2Kl(c"N9bcZ@k&FpcJC%D%)hCSd3k8qHmBb5q(CE'Ldl6Q@FS'8 +l*B4$ppNG-k[bBk-A1Y-(!rN3'%6&Bh46Q-5kRhQDb)E#i6"(phDl1)rN#-NMU39 +H,ci,3A&j8eA"addd9+JcABMmf%`S3(DqMZYPYe,a($cUS%1JQM))"0q`-N$%h*M +G6B,'E38Jk6!FjlI*3`m+8jPdH0YGfGhb`p+A@bjC4G#a$-jRbR%pF!f&cMikX%9 +)422De-M(+"0mDYiJC&)!`reGYT4mU!))l42,5918b!S(lLBiG298G@$(TXc8QZ[ +"NRqq3YGbckfp`)jM28fLb8$,h)5%ZjcE#G!1%E&XVj!!)l,@5f$#PS@iFS5l)8S +G`!GEA`h%cE1"NhAj)bHR#4*FJTL6jV@FY(TY[I2h4*ZC&3"J(BZ)qIPl`L$)EL! +&l%Y"ZVjm9+pfjkZN"K(5#bYa4-4`"!C!THKE68Lq3-k%`('6TRAbc5V%cUCJ1ES +QmYKcNfG,8Qlb@#-5QD1(@[Tf0V6d&Ea@`K&KG"SQNK"l18J#8Zi3i@kZE$DVbGm +Z43"4F&G,hjCbI"CL+VcNXqMFXD4VLF&*"Y)`cYA9XH5PqGKi`KSGRd%q`'(aQL4 +NifFG5ri*b&ZZBXZU5@i'aMeDHlrQEEaNMF6kKG2rNFRLL@$TF2F(-f)"!%(cm#S +b$H"aF6$,ZX2M-NkqB0VS#G$NiAlYEf*q6#l&UmK%MiXe12U@h[NqKBRV(8[U2Vi +U9D*rcJRZN`5Z!AKcY9m(fLm3e1&TNYpJ4ALXSiN[rHVPeHlM)8QmQ45@NM+,LXN +9V-iUKD"L$+K*E+Se)GS1jG5%DfcD!a"BM-hrd1UeI'KYMQiG+K6kAcG"48I63Ua +mGj!!iMhm98F6T[ZLGFFbia)4m%Bc$UBF3L%emFE%BbJN%#SBK5XQcbQSf-A#[dr +9U6$VZF1T+'MV$LCP2BH#,51$*QLTF3FcU*!!N!#&%K@%mJrE[Yak*PMP#F6fL92 +)508FfaFm"[!fi"Z-HKe6X@pF*C9d&'V)+HdFLZI*SG9Dm&Ji,E%T%G"DV&-4&0D +h@JIdlLe`9[lj"kiIpjPMJeeZkh"XF+rEkX"VbPU+UbN)(SKS+BiYm`5M30!3d6' +8L*hCk`bqN!!q,P9dfTL8,rYI1F(+B2&aJXQ,,L,UC5%m8MIIlCJ+EJ4CKe[0c@k +V+*JaAjLfA[`,2B+(mrd2VJpUhZ*!8H4K#0jDTS)ARaYZRY*f)e[8%c'JRd`4C2D +k#@"0-DCI`$D#@N['-'dYpPB-*eTMH2Nc!U1$%S-&86PM9!(6Tl6)a`R)-239SY0 +`p9Gk&kE0@l%b&XU`'04X))2$E4jdr+QP"9R25[(b@J1IMd8Gb@24Q,4mI3bUfV% +bX01&D+&'3P3)lpDlGb(#)!-)a!"%'8@B%85B"ek-"X-[5K0@d`4p&e@!hBKFXG8 +2L$EE)E%$B''I46-&NS24B,)IhC[TF@Xea'RZEk8MbMTZ-"i4`a'2Be)T4mpU-8k +6VRk9BiTE0U8[cj45iHD*1jLP[Z668K4[T5K1a!K!-4L"Ne'(5)r-!L"J9aqU+-M +F*"b1D-!a5fK3*aAD(-VdF-e[3,j!Dm,H34&K"4)mS!)iV5A4JjTNfT,YFEh,fNT +++jFEiY)4kr$m`F03r)rf@,d1p`f0dDd1Kfm`Z8reE'$iNaBra'JFcPY3lIbNI(* +#S()GJl$iE-jm!-@#L`M'P49CBPaSmAq3!#k'R3[3ZGRj-9kPc[G4I9Yi(lSl[mZ +Urf3-HF'cMUV'0"J'rC3(FaX(FfcBB19P+aS+cURiJ%5c&K#L$jARMhPc2"`2!4p +VXV-SQc3Nr)$*h8X(3EK84##XK8lmk"k)X!G`b$SJJYc+-FdbKLHCB3FI%A1qcj[ +eUTX&i6jQ&SH0,%UCS5jm3*d@F+H2q8J$F`p6a&5QPke`HXm'6EIPQIl*"c4P0L@ +l*eJH0AST*HX+Sjj3@GeTJ[U18D*(2*Y5%T2L")NT&CC6"K3J9XZ!l'T'!$Cm$!& +VX)!b#0UZf*k(3`G(f9,alM5ZS[Hq1id8!`!HCJ-%K4IfL1TqHjHTV,fUF&CE9H' +FBjSHSdar&XS5Q)#*jG3"k04D#`*UD`FKdL8d0Kj"[DFGB#$EBBfe)iUf96PVMfP +4ic480$DD`caa4*Qi56Da[B5*1j5*CBD*f&!I0K5cA3&EEY[ck0U-BQRl1b-RXdI +DhJN2CBmFdaaq3pBBj*d"d5LSmiMBCDSHQ'+akebJE%dEBjHT+efQaLFHj-Xbbf@ +6eh)GfC)dGC!!Xpd!pUE"DqmIb35SJBa-!09!bUK0)L8bd&)&GNai4C!!#+PhQGc +5)kTBi8&3&%N2SJlT!6*'MZYG0!L$kjY'EQ6a&50#N!!6DU158#6FA5B0S(Ehhk* +h8A5!%)X"K@M)IM3kcq%lLBb(@KDT)-H1#F[*q)%cSQhdj"Cc%)SN!*HLNK1593j +kTI#L-)N#e*r)R11B'3*+jf6'h35'M-Z3!,Sa0k(Zb@%l)pb6!`(,kIMcX3(4T`Z +6C4i8C#j@#[T#cD%cfQ1EXl9SQqYd@q6"Pjh1",&Z&r)5&SQ$Q6'mMKlf"RBK)j6 +`[H%l$5Ifm8d"mi[c3r&0B-!lDNZ[T+2G,[9SFYE*'C4%Rh`p(cr1+YYe,Qfd"qT +EacFLI&%QACLf'4,2dI[Z,eAd*3eK)k"B+K3T"5mA$NP(H!3bHCFTMdU94ah+4CM +8D)4@JUVTN!$`)8)ZN!"8Gb+'+Z39!&(YRL,pe`JSmPdAbCP8J#KiiB6p3ll4N4l +IL"$Vh%0aQ3H6-[@8q(662ZZTZ)0*N!!ie!mQcL0a`i+@BTY9mZVL'&A)llJl'V3 +pjLSf0f,!@"qF,`TZ2Z-"Zm05KN&biR#mba-SqIJVQ(lkj)QH2CdM*rChRZcSq4& +bT3j2lNp2bSa,cdc5`h'CTXbic258c%3HX)8b*83XJ-R2!kf#M(3a5jESX*,UXD0 +QJ3d,'alDdb4QhKMUl"ipZIp%GrKN"iY-EMEre-p4d52Xb&lH-TEL5DFXX*XlPRc +lR#A00!P#MS@"FL48BBr(XaU1chFYbdf4[V'3!!KT86XQN!"5+X+9CN'4[`pCp6$ +8T#G5h8mCAAF)'Vch-H(Sr+fM88EQ)BA-a%JY'"'FD"(f4TSdP%4J`e#@cdc"2Lm +'Lb&SD635H%JP-+Q60Gi3-BjaVZKGAflX5l"refBp[LbSdc"p`J5dK$l5%T%5Vk! +3,*HU'i'c(HVVXRaQ,@ZC"'$@*@-qT$+2)aAHC8G',-Y*-+*P%QKU9epAY!b,'+' +RqVU3!0d83dPXdc$%pT(p#YGUY)JKSrNi'%1aa@%NkASL4'mD+Tl08T4@Q&a+PbT +$&rF2jBNcLRV-"A&B8Yk9NT0c6*`44iAPXAM6q)-aVrM&i3L%[)Cm&k)q,*Y5f`' +@"NNYmR$lC!KUR"J*JBeF'"NkkSbkI'rl,Sbm-6)8T@PqRLCi@UNN,(Eq`RQD'+' +*jpmi2l6dX3`59Ql@,lL+FPID0VV'C%`G&4$p+2+GE$L4*5),h3r#L3N%''h)5Y0 +I("D4-kVD&&"iU6DZp@Y6fJPY4$ZXHE3lY2Hd"9UeYP4EV-h3kV8k,6pB&R3(fi- +$39X`(,`rQ"8m'N`)[Krm2$Jrf"LF%D`2eJAcr@AqFAqrImTr`MrL0rQ6r*Ipbrh +PrJErDriQrfcrjN!`i!Ld"JB#*`)M!9-J+A!jF#f`-$!hX#5`+("VB&CJDe'ND&f +4[@LLb&ad[LLe++iS924#dDG&98@0461+lLcDkSeiKlefli6hY2Hmpj!!pkMh2Hp +#Ei2h0@q6GlChFl'hH,+iYGK9I,biXrKFmD(LBm8ALUm8*aI2,fiX[V[iTZ*Ta9X +M`8KTC&fN2E)TFMaLLCb2(*l-&rq1ci@45e&4E&+@(r%b@ePqaNZ,X[`Q,mH8j89 +HpLR,phQT+mY2HGQX,,rNC8"C*Y25Ze9CP[0bPV,mR*Hh+FX[H2Q*X[`hAVkT,&r +KCB1bV1&PZE+XjZ9bC9R*bb2+mQ9HRP'@&Eam@PR1jH99C9R&b`jPq5i["jAP@lc +FT#br`FXfC6QIPm2+mQ0H4T6P8PS@&5V,Iq$P('@jK*Hh+-Zrj@@6X[`AAVkQ,0r +KjFFScXBR4%3p6eG%!*V8`"1@+dXQFG%4CFP%,6UM,*Q-48r,KLVRSE+9#4,$DJ6 +i,Lr(P)G-S+)qCFP*8+3V3ed`$P@U6'"#&!PPb8N8f+*-rkDkK8#pFY34RM"$@Al +)bmA+p!4m&[,dqFT`R"b"cfA$IFi6VXLZrSf[3NSAMNb"1'A*#4&)P4e`QDIlC&F +Aq@T3G[89Aa%"rSb)ai2SXJN[m`59!"`0!bS"1,(p4)#l9H,jle5fqcS[Ee@@bhL +j51Ri%eiZ8CEXXIacP59(Arp#'3X,L!ArHbKqMFm9RR#(M#J*2#&,eZ8)Aje6KQ6 +2iZp8PK`*rFGPNH9eRVj$QF!Hflp4BC`*iRFSbdZm$#V,rk*PF$1+[e-C#pkP,*r +Rj8cC-Fr6-F'[C9I,q8VZ!6lPUh,Ce9rbe6ACeBGmGBIXk[ra9CE#eVrbdIFV%ri +4RlGj3UFbJBNI2+i`bJN6G#R6Ve1NjqP%J(qLk+p'kQ"-GZ6IdT9@+,YD`PHcP'k +8Q0IjkPEC&8G(EE'XfjGmTAS!CPhlA$D"Nekl)VYL,k1&C&F0I*@ZE1mb$a*9PQr +cdUFXVr2bY,*mJjF6bM+"PhCPqAeHVP1@,r!bTLbrSU8S8*E[mA+EXZ4NCpCSZCb +Ada85I%(%*fD&kJ"bP"%I+mX&[(aG@Ak(PamUbrr(5iLVLm@+3h%!K6p5R"L2XU$ +J+P8K*MRdfFS$FRJkP3800DJXk-J"T30&",[bi#qa'&F@a)K$@9!`'TKFl,[NHd- +#6M,%Yd`-cP`L!D6B'EN!(+'JSG!0NKSdB#*a#3CJAQ-!jTl$)Y"T&2XD4jeha(r +)[c"JNrlmmlQ`,Y#(M[e#ikl*h,8,'H4Q'VXZ&3Z&@B6&hFLpHcI%aj,%)I'HU"5 +IBhPB[!D&`9%8laETiSLi+KD*Gl#i)KVimQlaiI#Bq*))Ld)j#TG4q#*k&+r2SdP +i[4j0akXkHJL[QZKK[&k1AX9VE[3mAQp&`hKp(,AJp3r4dhMp5r3iAZp%Tr"UM'l +#kmAS$VaHLlEMp5G4(Dp&dA9ir5%kL9GqY"5[fQJ%Vpp%J5Yf30LMb#cEY!6Zl6d +XJRBMZ2HkeJ5`ELkfR!$NmcAY*['KpJIY9Qfc0PZETG8&0iVNS&FV$-*MLHVJ4Zd +D!,pBX&Nd"$GL'4+0BKP)-9-dLAVY3c&,e)TY!#%MQK[j$h60MNNZE4$!T&R,eX, +D-LeC1k4&!95Hi3(H",0!BfX,8,K1RK1&bbJ3%FQE%"%[S%"Nr!L&1"51S2!d#Tq +K3'4-31%F#YmNciR#fbJ3'Gp!`BB#XKYUme$i2JT%aKG3k%IK+a4D8EK'RK1&LbJ +dSh!&K6)8RNFKL-*b*'BK#[q&`KB8hNGK'JVr5*i6"5Lca@dS)2ZYQ)(#!K6qJ-* +hb(1Lm#N+5e$i5a6QSl!3K8S8[SY#13U[N!##&i8U&)J!lbU4k%dP%[f%)p%IF56 +kK#24rq&)G#Y(STNFLAl'NHJZMN3rj8JdLb24,cN56H0)p0mFLHC`*,UG)e%G4k* +riNMdGab*YR!NqQH14*[951323&(c&T!!mel(Q2LfK(J2ET0&V#[@8K+%j-8ceY) +SNI&Z(ZV2H+KIUd-&Pf#S+mT3Lj@KATF0GF6DLU(-[(LF&fhiY126K`p8UeBpkX+ +3!&Yj'prLE6c*fbMNEHcQEHcN``[iF+Iam1-i[%Bjr2pA$Zr(C8Ljr&[PFTKI%"Z +"5K[166!`h!aee@`S-j0KYJ+XrZB0CMN)YDkI@!dp$h'NrP%b40CrPPi6SiEAb"j +kZ8F0,c0GL@ZmF0&,[%IGa1`(3Mbjli%32ia),bE'(bJ,'"Ap'kfTA+M(e3AZq,R +839a!pc2U!Smk(`Mp6FJDa`2mTr8B&pc@2MbDKdR(kH+HRf%b4I"'N!!U@BQSrkC +%e%SPSPBS%E9"LDMcPBMk$5@L,P8LkVpb4&h'%A8*4p4rjiMk1ikSAh0%r3Z1U%d +F8@rJL$U$)qTIFd5GcK(epaa4Imj*I"XRm8fFa2r*59c256bENrJr1)R[9*,i+T, +TRdcKR)N8JpMah-[@(9biEYe)K5pqBLfM3RQb04*eBj!!E6cXVhMB@hMBhbV$HMR +6JT!!#9RRXl"E2QHUP""6'eRF0QBL9&K%8Gbi5$"EkV,c#+%Mfa4d*!PIpMi04F+ +((c`0TF+R%$iVebhPaFJf)X3LC$)i2DpIf+$@kaI(l5%Zp,@(5!`2TNdqKD!H%1B +lMd#-lA8b-a%8cNS@QCY2bi"JjF#4j##'1a0,0fm[#*VL9Y`Car39"%L-B1F#C(+ +%--2)pD5(IeE$JR2')Dd"L!qf3d6KL,Q4JK,cGQ[Jf0h4jQI5GeB*PleUjp,fUTh +cLA!8J+Z)8XT%iGE*Q'$bZ&e!B1%5K$2DdPY"Z0Z![LBaI5*S!9!Hpe8Mme'd92I +r@fZE'5T&rjFSk"C9pDX!!j)SI$8HP8(Sb@(l!50b))iM513$4V,DC)+NT4%h%XT +5"9A6i9C&T(3m-"Q)"TTISba[8([k@apq,@6D0ZN&U[@M"bpR#dpAidHQcAMS3ME +5J"lm6F+&N!!H0!rD"P(B[rr[XX8h2NQGe&r,rII@*jPcJ(Vb'++*2KB[bk#$*#Q +M6,aNNNl0#Y0Z%"%[!j*lUh8!#1fY0CH!#Yq+6adq@f!kV8e5fdYLP$AMPYi+0`E +,D1M6$fPPb-T9m@iK8'QplaC@raTG#Ld9$Ae@RT!!$+4k3aq%a[SlP[5f)4Y&ZDh +hADG(C(I,K)*l-B@*fRZ)MQG%qMV9S"30`bV#kDY*A6L64$Q-+,++@L'*VQ@CL5R +V$NY[`fT61kRY'eE[)H6m&P,T3i`f26@6"C!!-KT@ZmC%Ff@LUmXS&*p13heV%BY +hZALJIKV)fQEVAI%`a#"3dMHa1UQ@98[j8Ch%eLL$"ckN5+R&!E0SUJp6fD$2+b3 +b&B*`$,+Y'5CZ`m4Y*"*L&-@Sq&DYY%A6A'EYZ-43c@&#FT+`#A@5#fqS`aQkFY* +XJIKU38fQ5PC%$T@`Rc"KQhS2LHRB`#%a%`2Ba8amTZ26K-mR"N,(1k51cPVUk-` +A64*EG!fKeT[-MAZ&fNhCd+`*3ZPM`Y*$iKED2'8&!%2qQK5khM8NEM&QPVT6BJ` +#%T%EUX9L%(Yep@'1EZlHM$FRR(GqN!$ajM`fDc1YFKdCekam#!SmML5@DV%S!bV +rpQI&S[I418-5#BB*TGr!,)`SkPMLZ!PC(#0d@I-9$qVPJ4jD`r',FK`raXF2E[$ +a%mVapkrJq'e8c9!M*6a&!"m)9$93*'KU`b%36[V%1!&C`I#"YkA(a-)U*H"8hJ4 +N$k8F*d[ScKp'`X,c#h`#Z6)6'G(E6L$1Lcq9(K6-SB`de"'+R-qP#FqH)b4daj) +RfL65&@bTZ8B[HN`1N53NHFXI(&e!8+0LQL2"E!9cN!"J*`Uf83BI5V##1C82N@H +8KLdp!215"Hp$e"G#5+XKT+T60JH9"9+5A)iikk[rBDV,HKjCSM9VH%mhe+&QFlM +k[DNZ&RALUGA[ZESDKZ)h[Amk'U(,8E[i21IMp,ZNVZSe4-HU`Yd+)bGSHqSM@H6 +B3T&$cF*6-)XbF#M68L8#fHF4+Kp$""3#e6'"kR)6k$mV&3,0))92G4)jXG@*1BM +9@6!,a!SAc-'N1LE@,#1aF-3pBCLc+*`UBT+G90QJc6@"J$i5&LLB*aCJX@")eQh ++31jl5RmPCAqXVE(,VSGKrU(3@3$!J"p@Ik&dh53M5UT%&"*@Bm,896j%4Kc)5+H +Dr83K$`%rk!54@pdc#12#@#!M&l,DChSI2i#F-H3X)`05E,U"B#4fQj0N0jf"3+j +%X,Se%-c("$[2"0Z5Jf"dK&i#`I59%Sbk4C3&R)[eYq3K'&hI93,"U'Y34M!p"m' +f--(Uj!36(*88dCa2eKj#j6PJ#($Ih@UaLh6V1JB&(Z*A&ldkPV5rhL9UaU0HkC+ +!d$83+0Zj$35kbKRrYV*MZDf5Kk,KiBLiDmj)3!42H!LJdphd#1`lDLK63AjeSK& +i!fJQ(4ml3XB3+#Za1F41c+!@C&B!bMP2F('YdSd$AC8j#iRjX%"NJai0)&$AfA% +l`8(T9YS'![-J"HDQGTlXB+&mZLkQkfLlm5,#&m0'CZh4-X1#JPdMic0Dr(a-+C) +)QHI,,P-'X+"()4Hb!%X2(YikdIYQ2jPhhG6lCKqbVSCD)#6YR%f"1LXh(9*LXI- +qMChh1Y9j0cVA'q26F6L%-Tfc+I-,e)[S)R1ZEi0cA5m(+a53!'5Q0*fL"cl6F$d +Mjp3F3!`pY%I258#Be%d'D-a6fFM"!"qQGLKab!LU#,8f-JK*JHNK,BKUiC)2$R6 +ScUhmfXb[,5#FUh+5b&Ip*6'K(*5E()iX%&Bl(6dRH3JY)(94-TI@U!bi3(J&K*U +4'i4550C%MXR0Ki4A%krLKHPdF$Q4Klh9j+XCErDrfHIbq`CI(93INh#fa+$m8,l +kBZ8X!qecqPicebGMMVdLAKZV8`cJI5c$J@ci'AD1P+f+-H5+KNMQ-%9*41eBCD* +dI6@dIE$"N!$"m``8d-E-SXj'!P,dhSBB6!K&)(6@U!a9j@c-&-%#@Qj2DiMa-AE +M-3imR&hL34#d$Ll+k5QmXqA%+p'$-0",a(ceN!!QhZ`RdV)AQF9HC%i*AJ3S$09 +$+FBeCmR!(BpU&UK%$r6*#Md3$iMVkD[NJB5f3ce`$9k&"bbjXpLQH,mFQmJ5j)L +58k'9bK-'XX$cchCAck3-5p9(Aae5SZVrP8!lVEPT-'lEM+%CJkrfi"'5Q`GRjPb +D%JQRjiQ%4*+Q(#4C6*G5G*5fTCAa89Yam)hir&SpdYcS#m&-!3aaL-LZ(UfC@,f +IRI69JeUT*(i2)mL+Nk#bBkMB'*-YKLacfj5-FrP'cq0Af&kFKqhTZ9P%e!,`UV% +)[R9`ea$D4M#cil14RCZlq(8R[fDMqdf9IdT1Xq)!P4ZG+LmrR-`&j%S"$jN,m%U +1PMc$Y36m"$b'bYL+Ua(6YdNJ3'#Hc,6%I#N,,!,Fqjhe#(!2`baTaTZTcYZ`115 +mKDVD,#3pqHA'lHD'2U#(H2P[[15++`l"Ca%qRq$6K-pdI'C#Y1TcQ`1[9(ad0%9 +`*`IAV@3qA&bZH3HQCp"pV4PC)2IE$QR0YQUYP&%"&N)L!'AT*D3"R)*aLRVEd`J +P!"3"9)ddK&C%P9qRXqB!(QhP,U8'j!'FK*Z`M6*RIL`GTTMb64j*81QqQbLS4@8 +%%3KQaiI*-5"McqC''2FV0,qf2,6mqZc,(pLF"FHAVDqNkM&e`&5(qF8"1ac'ejC +I*c2bjKIKF-fRV)`3MEYqlE,4B%D9Fci!Xrb4lMhGkK$SN!"[IM&TcSc,md0C`qS +$,mcJd95JVLBPi)3Ueh[*F-F2DKjKafq-R'l*13Y1+Q$'$&3#rYiFlZ)-EA#+`T4 +KUQB%40K#8fa@ejJr8(R)eB9-G($QUGN)GJ5$,@1"MN!RATd"'-akj"SFcRi#lk` +fQ,UDLm4XCbE'#*AKE-,R(@VF!#C'P'Xf9pVEd-lA,p",3XJm8KrZaK$P'+*9QI` +`(Rq0cc*m&KQ(H"K$I)e1VAcpJQ6f5(YKZrRG1Sj'GP'rkm#I6'N"IRPh)51j&KR +K5T!!-4Tp6P(*ii3`Aa3IBj4V062iZCJF3B"4de@(R9!U0"!UN8$#'!)(m68&MVj +""3!8"0Dpk`4M5b8J-ALiC##a1P%[Bk,eBeQ($*KTl1(!ZSR!fEUDlbRJFcd*Bki +$DD*ZGBT9QT+YEYB)jMlYE)4AJe-$"ZjL-,G4!R0V(M*@iqj5VPSP!0@)a#f8)Ji +R'J'jK@a5irY'-aSj(K2)S53)QpC!a1Y61Ve33UG#aD$&&XQJKF'T)A-$l"Qcj1$ +ldS`hikcVJ'bBC"-%KmNldV,kY`J`iUjf'lHFa)$pQEb!2A94J(U["066!#S`Eh5 +bP!S6-Dk`5YAc16,c)"`erl4GUVK`jPm[Ebl!b"'efeE&D!HkXBHE20[0)XY!cJ( +)++e-JQJ[CGJZR##2rZmZmXL0eblP0S)cip*HVITj)ZB869ZX6,Z3!'2D"8blU&6 +&*ADfN@%5e5M2'Gdf5NkpP!&Hc*pi4c#)!Z+@95F#ZElC*M'mZCV!M'h9L4p3J&9 +,M9Y3daBiGR26df+5R"5Bd3&+RUU(ClXVRf@NkrfF+Ej@pb&bYR,3J`UpGB`D')' +AZ+Gb"jCpb[)*AZUk$df!$1YK)'KdHQ5cdJ06d$Dkp(4@F!SQTeV++VI6m+Cb-K* +K-'D5Zd#'0L8c#-FJh1PUCXA1$#KjMZ%6Kk82"6f0P%6*$k!j&J!fLqK!0',a5$8 +biN)FA'K,BC!!+rM@l43XD*95G&20YT!!+1[q4QU+BN[(-BdU5&U#E2S"D6Ub$"E +b8&Pf-Z&bJ8bid"#859'$33&NqZT$0Uq!H!5Gc*+C+r+`A*5-+d@!!Yr'aTA`J)` +V5CQlH&Jikd#N888d[fE([+kT)[0LMlBXC&ThPKr8I!#"iQd@Q'kNl-c$E!+3!,b +8a+5B+89`6`"GA"!b*DF!cH,mf-AJL$6`V*TRE!M3m%(fd$I,UMfBZ"aC,8dH2lT +&XA`"kTJbTG,kpecCV+8"f#"0&QFp,c-0m!-#KC!!QE(QN!"b[C%cT'qZ1DGhN8, +N"qZX-BN%dKBaH$qfkB+5%3'*L8$b0Mf0Q4qAb![$@*8LD%L+EBXT+4a'mbYkE(q +Km0T(C)E`hP-cl9[q"r),UdfYHlV*I1)I,d2N'jB@Ii2-Ie!h4"l-am'BC+L)5*f +XCFV%D5lM)lSBf3L&$#V53XGR("phLf)-aiJfa,3pGMMPip&Kf85Ha!mpZ3f5')F +YTDK*bl-(8)@IX2PHSZ$&bkq)$8PPkpI`#H,MabH!6e'CVG*,Rp*R+"VGLIUlGKh +NmJ6j&H$AEeqNedrS&D`%`2),U9$JP!SlRC3&3@j+U@5fcYd%YLJ6q01#'S%*N!! +(XP5L8Zf&Ph!N'`+1EDS`LJAHJG8i*UQEK-J)&&0A5G8MBY3)4$a0XNQ6Q)``fTD +S+aNm0K2Ki'bH)#I,0HBS8lV(9)+1R%EM3d-8qA-"Z2jMR*51FYU#-IQ$P0P$6Hb +#j8C@I9NMf%``[J0-HdeQ1#GD!bkXafep"FX"j#1M8F&b8JTqJ14`0X!l"*f,2r! +j+k(i@biC$M&"b3HNGC!!TJiKNbj-Qr6*@B+`G*CXmEi-hEcQb,4NCi*X)PdXbRe +4d#'lN!"e,$KM8,,4pRhVT1#82#NIjP!1FlG)aV+SSmi*E5F#5mk'38(VV%Cf4EX +jM&HE1Bc"UJRFVjNQUDHFe4bejhVBB4CLrHP-%kcL*(8Fc-L8K1SG4M0C0Yp$Sb, +id(2`H(j%k`!q45mp*cUKFUTNNcZ6&('XKrGd8c85S#C(Z'+[N[!@-S9#%D6R[a& +G)NV8U(@04Cj4TYLPU-50-1'"pf(TJ44-'D2ZN!#9MSDj`jL#5R$QDSk(M'&jPNp +4ScT2SGN[C(R%+p"f#B-)%MS2AN9fpkI#CL!eRi+BI)`IJ2#D6T@e+63FTQBT@T! +!PTD5P*DfDp2SM4Q(il-kiq1I1q8j(Gk6XLG,'*TZSS2eTe#pLPMKbGUHbVC`J"Q +S2!F`p5N!RmKFA(P@EDlTrE5de,b$(K0U4J#(-I#A'Qka$5*,fe2k1j50L45X*JF +-%0kBH0#JH(Aj66YL9C6K!Br,D(,'a04c86GI"Y9,ck1HP'KJ!TPl@Ib-54GkpV( +-T0%E%j-b-hVL8JlY5mT-56S9PeR#PU80&fb@Ccb#kD,*GME#d$Y8X*QDL)PGiXa +@'aA5`rKC`@Bf,G3HlTiRb2!L'L"k29C&$"CX0N9JYX,Kh"NGMP84HmU9KU[!2$$ ++4!fBqK&Y%-8,0RZd&T!!)Y[-LLii-!@%Z0BUce'cDaJm',@3!0&bbcA6i"k*m!( +&Xe"$H@31XFJi1F)CCYc4iE2G),HlTENPJ'DUGRT%j9QpUbe%f3dN"ApSqe"mHMV +S-K,IZHp`h-'i'dZ+$b1lpQ5&`bR'E#M#f%J4JjdJ38&EZ&[DZ,2@0!Q[H0jZERe ++-YI-4M$SdNGQPZ6ADT1&SE9)U"0a"kdCQHRX-d[L!VMFHcS1(YYRj3a'B"F#-$N +Z&2#5fI-XRa#F6DBHaSV25)L!r+@NTSE$Z+hGE$FM[eENG1KLk(3)JFN`A41$&+J +!")adA#1[#G2S3ZQm*EZE-fc'*1qMTf8M@mQ#MTlcMjdF8E+@R0lI!`10hH'4rGd +GSd+-V`1$f*VLj*cHGc!VhYVY)Ai6MDEBe@BD)GVJ!116)#YP5a[h,"qM$6cKT!d +FN!"!SpeEP3h-)M0)q06QfN5EmLLIR9)Gd@SpQC4MjD#bT6(KmKiAdR$j1VC8M#f +ebFc5MhFd[Be0KIG`2KRJ2XZ`LI#TT"2lXM,A61!XL8Llcppl!Zqq8K+"[`)cTrH +2KT%MbhFbh(P@0$m"KNl[5r6%*fEk-MeC0kTCY0a6a*)(qCl"d&8*l9(iYF,3jMC +cHfk'QZRDESCAbXN-1Zlf+Xa%9+Ib-c$5fGec@T39Ji(1q)1T*4jm[h*`aldlZ2# +&R!Gr%`I[kH#MB`rMk$hT@HVKFmMd)"d1"0JFMi-C5*H)qH6GDN,NB@#5VJd-1,V +3M-`F02ScKjUpNlSA4V+lUAR$qb4'f#Qp#%D3!!ERp`qG("hUkI$Yk4#6Mi1KdFb +iBrZ3!-pZk'#kle5kdC(AFcHlCq9'pfc#f,4H*jRX,RC1#+PT2fU+X'0*Bhr1T[d +Dh8V6IK(&2!'E+3L)6Ii"cIaD`qAdJ%e%q`b0m2eNPMU%fNcI6fj9KM!fP!RJR,I +drC'iJjkHB`IhC4dmM,M0V%Z05&DH)f2A)p4XC!`!'LSF6+CmP5M8IEQ-)$hRHrC +hpYM)ZkL"TLSZjSCh(JIUkQKE!JcSk@,`*4)AXEp%'IMlAb)c!M[`DKCpH%d+&el +$BY0,)f,JT5cXG`+[J*KkD96-!aJ5&'0i"G"BAL9!NdS!hT8!@3#BB-2p`Plc$Xc +dfAM4ciX6[0M"#fiqUlK$Yj!!8I*aNG--)+V+GSP0QKKXD(pDY1RV)Ci9J(QrY6# +6'iZ2N!#`4#fF$",3NT[k-`6S!&-$eRPi4D`$H-@XI3b%fed20U#+$S1M-$U,iV" +TQ-cUSZJfa9$dSVJ1*R%fmH%$f1iNEhHBYq['bb[@iAUFVcIbYFlAV4!4(+6+-&K +YTD'ZBFV2c%!$E)3"AES+A"[PLh&Fk-5J+Ce"X!##5af&5GA%$KNA413DKR'-qbC +JiU$ND9"Z'#FaQ)BK3D`!M!i0rc'-*HU8(I((,pr("HhPqaa8$BNSKdD8iFCAHQL +HD58F'X'KNC8H'P-1MDh5SE&91$5'3f-V2G5K(-U'C&GiD*jT*4cU`+'104pU!*! +!CDBaTH4S1jZc5r$PqdMXKaH"Pqp6NLkbNXN4fH5)X[de6Bl**XF8YYFdf5'El$" +i*M)5+'+pB4C$#R!fl!J-U3c'"@')Y8a#d$QGeG8-FR&&+MqNG,f,QRZQlHqJl0` +R-%JG$l+&2BJk3*eaJ$VbD[NfLTc)00r-(MI'AYE,#8R)U!)&86K0*i-+45rIabL +GQ,SKHaGI105,IZNLB*b3!-BA%I@L23hLXJ213V`QJ2ar@N`j#bEkKBXkbESf-kN +L`[[bIBJ%%dE$jRFTTXMEf"6jAGCaF[3TfT*#J!83J,3NVeVp"4QFFKB#KFT,5C9 +,V-JBNKdM9rJLFr1$l0d4,58M#09cD01bVDqK+h@TrJ+!cIGD`khl82Qr#2!R"QF +TJZSA2Ga+a*+4E+8$fCm@&TLVN!"hAJAfpG-Y$[dN+R`2XVG52Y8r4R9j+iN1P,M +P"h9+jN-`"Sl*,9jefe)6ba+URF!-LPaj%p"1`86-1YNq`LKi4#TYdm6034KLL2D +45$)#H`JM1`YRK(KCd(4G84HK@BjI1&1mL!"f90N3B#ep'Je+%,,'&Th%STmA*k) +45QC5Q"Q-*K2)jH!U@YYc1,l-5SBJel*UVZ(,eKqBFBN(pM!CqGcVCb30UX4D6$) +2#Z4aVE0JaFb4)(++Gq"PBK#[rT'hICG)i&c-c+M-EF"C#[k`L6id)PSTfU*X-,4 +cD-3'eT2*F+i8Q%)0XVlQ5M3L0@2*6B-BKj%-0EJFR@15-JdSp1Yee`Q*2L08Ilh +qqVrRLcC-3)-3kK3BRlpFGjR-cdm2e9qZ[rblI1'GhX16!QXDCSE0T4R9*hiAQDU +1k"&PffhQ4K+3!&E9H8#L&qTq4FhFeRR!63@BVcIhf(V8*CSFc$G1b[Z``*[qd"j +R)Erbq99!'iAKQX*G8-[!qC8*6b2DG3#mF#Y#iDiZ'G)*5S[Q[BT"Ec*aZPG4C"! +TYejT)f20kr4FCYaCA(bG!YJdXc#akM8M(4H[bS5RH@UcLTT5*X8k,ZDD%$1JVJV +2'Bq*X@N5%J,VT#DpCArABT1L+bAJINGdfG0NLFaC#q+dD+Q2+X#1appbJeDqkf3 +Z"+C#TXN&cmRSQ%c`R"[C*9!k5'E[J*h+bL'!MQj+!)MSp3k"q9#"p-0!iQKEY@K +pjK"Xc`A)!#63p04S@6kZ(ELH&!&9,AZ$6aB8e6&#UXlME#&eqrp8IdA'XLP!`2* +r$8X19+"Qa[8(G%hQ*Th'"U3K$"Dc+S36`d$C+k,rQMflfk-U5HTK(1T!qUQX,&4 +R$rbSCfM8@8p)Y-4peR4Zq2m-)9R3M$bMd#Dk6*XBaBBQ,2!kj8QPKp4dLG5SZ@Y +Xr540BrEQ'0"T8$98N6!%9iX*ZC)2BaPV-Cb,'bPiPJBpQ,8[NCBY$PB+S$,a$9, +fhUNHc92l-9Jl$lqjCD`Ark3TAJFGa!rZ0"j,M@jiZGYDUBX#k23`i(1'Q,DpiKU +ljmI'cT[9cXCN(9'4`$"m$)1HcK(1&1-Pe!QUF51-p!@L9d(j-[VAJ25&XHJK''h +E!A4aPA-a+N$1U)l(pIUbB!a+YBCHFJ`AFiFbkN$6j8KKr'b$'+NfZP4dlSlFD(K +iVVBH0-Ab4(eE!Q9[i-9VE3PFA5JMa,c6U9BBmR4eVfJk6jLK&*D9H2#196qB*lA +Qp)ck4I`-#S"LH(Q&Gc@F"a("#id1i!T0+Q$4,*Ua'"E$H,Q&qr&pBTeBKpFMiK% +m(KIMH+!,(BY@dDT(r[b1H*b2`'ZY@+Y(5M!)(fYlRUY'!DiDHCpjMJl$#iIK#SG +KJF1`'1DUPCZV9MJ-b1Ta+!A'$8lBTTRNS,DRr9@fXjUhXiZhJ-9'X9%L%UlD46Y +HGQ((#i%rAM[%$Vck4"mQZB3,V`%aJ+XT-BA&2$%2Lq0SmI#(6'#*[FHC2EbkS&Y +6Nl-02iaMT8cZBLDaQ"!6FLDa3+0GH*d@Tr%b#c0HRD,ccbGbb"PHV6)-9PFcUlN +2"A!3bH-40rEFhM63PJ#"I96[GamL6h5e1hGP2hFR$JaTFP6UbNd"4(4,Z,X%Eil +Krkc+1,aj!iBIP,UZF2M8HcemkSU([cYI(AkRHa@'TiN1U4XhNa!JG-XDKMkL$,f +NF0SU$Ee%0%[GFJrDFrX6VdQ'8#Q*jHE&B*cc@9&T(@jp9VbZDpGU42RD(P(HmdZ +aFDeC,-c$9$q'Gl3Pd!ZQ[pV`Bd3QTDdAEPXcJb4'SfBP+ja&R59Qe'&SLH2)+&Y +N04&l(48KZ&5Z&&kR`Z2d!e3UUBK1'j91#lN6+Bj$dR3cS5XVmN-NhN&L2FTP1G3 +J#i(+A%HS9"*'N8eQSV#)9,PdP-,f0*N5Z0*DKLT[ZBN8ET9m-BQUad*IT9KiApM +T(+eN8`!,-'QGL502B5dCcKCA223$!MB6`NCK+epY")G!)J`#PLD)TAaP8S*PL!` +0aSDF[lDDU@+04+f'!H3)GV,D%F'DKfjba1eP4,mp"92d`,%dC-BFKIYP!`)i +bPCSGf%J!Pr46)G5J'kEB8[A-Z,Mi1(eIZRlb$#2ZpkGl6L@0*Z&KaVaj0-AqV"# +VdFVA[(QCCe)b@51aH[9*3hPrYfaP0-PQ&%15)Ie)'8R!9BR%h%30(U2TS2+PQ*, +&c4m6H9ZI)S!@@8c`ZJ'NTX*&LG6961TQL#ZYCkmU&+2abe'&3RCP-TdY,Y"!-Y) +AUL*E3,FB#&qi"X,2)G0M#Z&2-1'hbJM23+f-m1Gb%AkV5RKGq[%IN3dJHFUKJh( +p1r6%I8Fcdj+Hh5$b%qM+iZrN@DNC8+$YV4[a)dmUTFDeGYqUE-JKXFY'9-&DRN2 +f*'E'bFF@DL@fAA)H*5ApHK!JZje*Eae(0CXF#&3S1+0Z$#+eM+cVJ0%ih5p684F +B"k)"`Zh#iea+M4VXZ'r)k95'd@NBmL#F$G3id$"&BfjF+YH3!2NXY'B3($#`4G8 +![j%J%C8JK3XNJK4qV4"NdN!3A4%A@"@L+%G(FQf%'Kmi3m+RHBjY8ii0rp@1053 +&H5U&C&$JXY(0A+4[li*(F#MC(BRFCqJ`18T"DL`J9lA@BDM@8NGbc!dLeC50PKS +e0)KC'i1'G[`)S)![e#))#8C)F8`ETd#"$Pe$X*AM!"9-jB#X`i,XbbCT-ClG28S +)FJ59dH$&49"92C9EZ5#C,VI6ca!+k!'ZmSTRKNJYCFK56JP#`JP8@5N4`'P3!eZ +aEX@",6VeS90F@`+4"4@[!)P1`-Jc$r(2Bb[BZMV)1LBU"4Mk+J-Q(-J6ZcP!%Uj +qeG,$1#Q!9Baf4T3QJF[NJEq5N!$RI#&ZPU#LeNl48JQNl3C8KZLR"cQl'i(6L12 +A*[aN'IN$25aIHTbqN!$&E5SdL!dC)SrK4k3S@98r@F1'5feAFQmf*c2+&Vdj"Nc +2G9&4kj+MdSK)cGG+&Mdb$+@DB)@JPb01ElLH'B#3!%)T0CMCqR$cc0'3!+Q`Y8I +IRiX!Kb4R95ELQ@rF%'Ac#I8UB!!GD)`kmc`D#HR!i9!mNZ+*QJ&NaEJ*`[%mAXH +pTJK#jQhEVUfCD"jrBa8E#)kF[hiPT'Yb`KJA'1kA#4`jq#$[Zd!Fc!&6K9[[0#a +UhBE&Yfr0id&UFhN3")Z5"pQf8UH"!8B3jGXRD!JT-K-`el(N@`XT1KU6[+)`[+* +)RM0"*C5+$#$0(ARYJ8"C#"YbjSeHN@2bbaBNC8&TcUZGqAQZTUPA8Q18mS#U-'S +3!4C'F5*#41m1Nr0RMIKH*T'Uk#!hr++4#G3#%k-bBlhG%M+2,N8rJcpZRX4AK6B +%,FYBI+2L@ieN@X2iNjpQ8EGf2NM+GPB3!6U9&$`k$dSXXU-,p(`TJeG,GNl3F"5 +CfY0b)K)PP%,,JjK@V8CX-a!-DX6HHEMNL,ec(NIXCJibYS1GIR+3!2+2F95hjfU +#6ZC)hq!a9SL1VEU$@6KEkTVA3k$KCiG-$&X59k,'k*UAANJ0YN-J"N`eY3[m(+h +!dSqbZe0p4#45mQ&$IX0fmV0NfeN[E@ChT6&)A#p0Hc+'3#P!cG9%`fVL4%mXr5M +&CXmlj$VCN!!+HACR'iG8JYMD*HU3!(+$eHU2p9'feU5UCPJJ0*,T46!+`fK+T'* +(+Gr4ESa@lH[9U,'lcLj&MABmS"r5`XG5"0ZpJk0F+B!,@Jj,%B3#D3[pL+Y"DV5 +,R+K#Xii'J3!N-eK!#BhNZ0*qKEZ[B`E@5bamkeUZ+2Z8A(fL5m`Mm"k4"GkU&a- +1+BKkXR`d*(qBRE!KMMZU'I[P$JFf3)-h8r!SH9GRE5k'J*V2ib"FN!!CjY9945Z +-mQTRK19)r,K4[H$ZZ%K0[&L$EeqkpC,[`V)M'AIU%,8,R*(r'#3'NVFcfGa!Kfq +f#`,ffK%e`pf(dIMFV9H@ANLTj5PqhArY#RXN6"AYl@A[`q'ima*9M`aJRHi(fGh +bM!K'0J%ipAXlqj!!9bS')-U"UPMX`iq),!e9BM+eP!$0pkX!1RTG8#Hmrj(H[#G +d92Y0aG+2$Qqmp4)VCBdUNGB!IMK"b+k4GdQCMHJC`ir0FXJhTeDV16SLHk(NE)( +aeR$h-HeVU*F4c@1c%q"Xa"#P((UZKQq0`&iI9rL1j$kqAD"+(T&!F409ilBJBm2 +6#X$p0&IMmQA91+k)bkTaTPc9Z(aM0Fi[9CjlEVpY)`baZp#b"mMdQjT,B$B-&TI +KNbkFae4`Far9kR36kRGkCRTUSRiU2I1-"l+6QDNNKVCK&@V&q30*U,%TN!"cN!# +AMXkR+FY&#`I6Sb&U@%U8jA,H%'Q4I,&8,aA4$&kI)@Jh1UR$E%k*`GhXNP%hXb3 +61ea&ASE'T'++&`9+)PU3!-["UC)#iRYc#+[2*Y@Mj#Ui2jm$CCYUfT!!3b!@KQA +M0AN9SU6,RYYrlmf0EM-#5EFAeKS@ZiAX`6DTkkhH[)JkbH(keT(F3qefbaDkE1' +5,4bULQE09BrGM5X,5YPaXl0iIb`(L+e@YkYcJZ1qDQjX)'rL6))dGbSUQ$8%h04 +aP-5GUAQ##&Ahb$4B5BCY5Q!Q6a9!1&V$&29lrLk@+q!)*fcSJ1D-hbI)0Yf8ib$ +[QLjb"mBjUdJEX*el[F8m4e,9k-5DUf`3()ri+TCPkr3a"R*G4KBdS-9)C&+ESN* +ZYU$`j-4qL"$EQi#NDc19GNN#A*[3jF69E[`@XT[aSD@$JG`f%JXfCXQ!F+XS9jc +M(3B%L43"pX8RTKdqQ*LTQb#0#B3D)G*5XM)2aZ9e92P#l6"[RY)MYk2+9C6I,mY +GKGpf@!)`rq2S#T%AQ$lVFaULT1VfYNpcHJX)D@db1K[N+I(M6[#6X5+A3`kYT!H +[b4iS!pbFZd**LG)&jmjCKCpVNimI%*B,kDqJbMHY0'SH`NqlbHP0,C3pN!""UcK +'`ZcB1`EYNAVCNGe02bX&c9J0NPNq)(!e8aQ#i5#ma6*NBeUMjbB"'[j"+l`jPjC +$k@5XR#XQJZJ(VYa+8B`QG"(aPK6FBK%'KaC9'@ECeJa%XXDUP#!"X%C@lq))eQ' +mq&U(`$)MlU@,T3`i-Y['brP5a@X5f8X"AVa(M+J2m`X4@*c*G68,9bEj9F'Nj$N ++"TKdEQj)9RfB*3'U"@KiA,hFH5G[8Cdb,(AIZCAC#15Za1@SZK`5!lQm,8Md26P +Uba#8MKY3HKk4%rNL$`jhceaCF#K&l,Vbh"'UX#URie,i+32@q1NcqV1S#'k,j8@ +hZ6F)dECKd`HjbSIX,b"K1hFdJr"FUF@[09++)UUJYFE*LkmN3-U*SP`&jrjH6@D +R`bkKT4a[IC*DeRSY1b(lQc!fZ9AIEjH$GE'IbC!!-SC'Dh4Mja6[@[fY6`iAbMX +UKdF-$[S'XDF5Yl4N8K(!XEZ@!)jmAED`baCZ1GUYp9U*`fpB3Jqc)R9`*B"HJ95 +4!q+SBUFH0U)hGfERG*VAa)VcfSU8QXV`pK82cm+iNj,+MUZ@jm2GLYQCI+8Vrj` +!&6'iKZ!r*aUf*))UQ5'aJC[8!-0ic")a'Hif(1)XcqR&FajH)V"Y-#ji9,C&f6( +1UPc(I*)AE0`jY6,JaVLe"ll4*(2bmeA",!U)P%l0-T,0be@eIk#9!0(p+`d!`b@ +"JJ@IPlbYh-3V-18!NK@b&rbKK1f'ed$!b4+feUmmR**YE6J(!$HBGl#GG@Y)M2Y +cX6fi)[ENa2pH(Q9*,L4cE'9)jMb1*e#1V6,Mb2S$UcY&`(kapBdIl)HBCjV"ZI, +%b%3a$XVPd19+[,&Ij%$5kSk94jk5)J9lbTK-8,ifVkGF8h6*RHJVpc!PHp6FAJk +'P%SQY&XL0-3`!b3UXNCbEj!!#S!bBmSl`+adaMF@)dY"aMI3M&TEa6F@2i0LcJ0 +EeVHVLTr4e5b8T11P2bp$eRTEU(Njr#bRIQifPK"JVF%C(mfqrNl$Z-J-Y#&l9lq +Q&efl$0A*AAU`[fY(Pcb"fJL)hLI3a+d,eLGqNi#&R9!ZGR&CTUCJBNT6lBpAL3I +G&$!kkQRkq9fKG@*0DL*DK$j)c%`kI-U8P[E!TTY464MBK5V#[T5d4&E#dj0(P8H +l"NJARjB8Gh"I8L+Zddk%(mdb0$'fLX1PP$KF#JfASJiRbek9fR2lRHG)`'E@0K) +)rpG&3([2%Q%8KZN5Lf3X&2&&%P!JGAR2lIma!jdJR)FIc0#X9'I'!H"JdZl'Upd +PL6a+L4EkAbNAYX6NcImMX8qSUj@6iPL*V2r(b+UbAP#[XMllciAe0C1p"0Ea-aC +Qh`&dHi!+B$6@kQY0D2I4MiLiq%I)+M#2f!#cZ!#EENcE5$r#eQDP+iRCRBXfR0P +i+CCX'*Q*@5mG6i9Fc-Cb-"Z6-4YMCQ2hRYPppj,ChrJN`[l'YbU%VDrpB4*f3b0 +"IEe%f2Vk95%X-rY$)q`U-+ZbfNU(+fS`2PB"8NX3D3lGR1[3Pj4$ia-hm-$C'rq +U"kj#a&%2G0dE4i'2rarjm4[L&*I%a(rmZ6#aBN)3XYE-LUa28q26(YfAQTQZMMH +9NR5M*a26KdkN',-35jRX`I4T+"'$l52$fm8QYcqZD0&e5m#N6fbR"LT)ID'6Z3F +9A40M4rKDGJNE8618KiiV@lPjJabYL84BCSLlNIBM!h,''FJKiP@V)JDK-@YQ8PC +mbVe)X+%Ia["Vh)*aH$3-JeEa-le)NP)dK0i(+a)BHL'5*IdJa2JH,5&G(P9-Aa5 +`#EKB$-BZ-kNaM8Rq`A2i`4TeVJmm%H%XS+aNNXJA$CJ8RaArD'CF551ZB-"YDaM +`P-HcNJ'PRe0%'D8NBdm!*6c$%[+4'MMf,`Sj!J3kAqe@6D1(A"KhAf)*3dS4C*G +,ZL*dkd$'`F6R(XhKT4$8rmc''6'm-L9!#9lS(q8qb(J3*3Se2`qRHClZH#"d`lY +!+b#caRmGP9qI06ji[lfNkHr2+(Rk2pk4NpPCkeD&fG!2j0aZZMRYXFcdc$M%Xj6 +ie-b8BdRJ(1jI#3i-M[LTlBGb4%VZ)`MiaNp*4#!&)(QB[--DKCB)$8&(2,1Q'*f +#j!d2TH"r5MK&jMbYe"Y3Vj58NYLCA#9feUl"e60`Bf5')V'ER-X,-#ERK*%hbVT +%@HB!F%ac8E8",%!3N!#-CGPAi0P5C)lUbJEqlj8-A*+RN`mX0FiGXQ0faX%cD9Q +CkGDN3fN'GbKANLV1%$GeiZBXhj-JTB--SkL0aV2(VCBU[U%q$,ZL)Ae$qb3DNK8 +M'8[EdIPJeU-(Eda-5ip(ipc(9XU9['XlZU,el2M8IHR@&@b&K-ki8bmkR8T22,6 +2P,35A[H&NG+qX#`UZAAkJBci+CSSM#Z$E5*R+AfPir#1I4aaP"&A-Z$0'$$q90) +'MLKbCT(ik9cfh)j9pHB,jEimjkNjLEkL#26SLL)3r9M(KS3XbLKB'`e3pP(pm49 +'SNIA')R%UNDL4h0'SZ!U4+*(0c`52EU'5#42SPN*DK+YQP1rKL4k0)rcQ`[j%`T +,GY-HZ(QAkdHC5A(NmMbAq,qTQ8R34bB1r+rkZcXc8p-m"rI&THh,m+KRh(``#r$ +,`D6iZ,3p@@RdfC9fJSJ1!!!Y`8&%3e)$!&&&$e8&Cd8M)(2PlNA[hEZl@4'4h@B +d69-fT%5STUR49$AZ[EXhcLp9N!-e"K%K5"10L$KrPIIZEXi)944&M6&'9G@SUQN +6BibfUXkYFGii0e449G9BQlrhh8h%qI@r-prcr(r2mchRpch2!aTF!34"!!4"%NP +69TaIQK`@pN(C#b'kdiGh&R+iV&LZ@edK8kZB@BUQXCr[&iUQ8bhQp+ET-G0P6qA +dJp+kGV+dpj!!,1e[,Y0dEd+BT#Vr8M8mY@SPYe6YkERd,l+&rc1KKD46QUYjkH2 +S,r*JrQe#'kPD+H-r*r`UM9)q8XHQ@fNcHCTDR2ibrBIm#TqD-%@U8RE`Q3Q,TFh ++G2@Gp(!k3flLXa2Q5Rp@IP"I5"p$jmL699rkFh5@l1&Y%eT,FFT`Y5Mpb6$kU2` +8IbaKQ&5U21$p%Kk5AP8H8IqDISi1N!"[FQI#3!RNVfj+Ek4Z18UpP[i'(55raPp +-k#m9+$8m,@'4G%Ij8Ef5AN(Rb828dqP2dk(bmrbRK"(5H@@C@TRq%PdSVq!,%ZC +,fjA9I'R#FQQ0XN505II5H,Q[HM`p0SafNT2iT`PGT,h+2YiqiBr5,Z82DPEkIYT +CVZ-G%ck4[P'q8(25mfP2ZB1k*rdSrCfmNrmTSCd8V@6cEJP[5qZ9Yp3YkDYS$rN +$G@0k)[e3ITrr,D'VY&ATV4DQ(k"rPcI`Ga1k5q9+#Hq6m*Pd@2PFr6Vp%1dPAq) +"#GFIPCj3lUYITCqNJI)CpAEkGr4,qA[qAX*GkB4b3Gf@rQpk9Yl0hdbi*ke6E[( +,#4p,[eFZUVqPhk#Rj"4eEIT"QL`Ii8%*SG)aj5Vh6r#6(PH#eBI6)fQ)E1+1K!a +*8&,9PHN40&2@Uf+kQ4UmXQ+3!"+Sj&8-Z103a3iUehJZ(m`hmddmNBHTB9TBEYM +JX-eKQm+i9CGR,,0AUf-Yil44ZB0P[@AD+%'kB48N"5(G'N(KXh-&kBTGN!#D,)+ +8Ka#1m!V#+$$MN!"iN43!U"KKfPL6IY5d2*0HT@8Q[Cf1-ZNe%JG6-(0*e&'S)$` +M@bA!JdR-*A%X1cXY6j!!G-#X'J@[8C!!FM9"dR5#C,8SDX)L1XllKp56@BHc5XU +cpR[rS1Lr+McJhCGjX0"ENh6R5HpVqPHI,r8@1CldbR@ah[f"1r1pAkdrA*MecH( +chS2j5DI2Hk1pKG+KDpkRBcBB6XF5S*!!RIQ(eamqMCVZDBBXp'$Kdq2+U[LiPA9 +Ch[a-VhcJF1(1I2(r"GV8ENS6%cGk9DS6U#Tl9Dr1UbTk(8FQ%Qq@G0bVXZM9b3B +GqE#A`%Jk9D!kfD[,9$RKkQ4*e3%rJ33H6!')&XYeQ#!i'*3!*MiHeP(9E&-R8Kd +l3C5*9$8a98`#d3"XUJ`Y9'I@kaK#bJ4%TJHf"M@83G8[8eb2eSXPC,"-C`,@9"e +&j8dj&5Q9(FKjR#RC5q-iBAUT6#D8")$S%@8DCdTP!$b1bTNf3$1P*KX#'LFD#&Z +QAT-84m98fr%iX`4@#J-KTq8-TL&1eQ0G0"!3Q@J`Tc#931m9UCIa6!k'",TP5N6 +LpH+PXJQ!6AUAK2K)2j4*lm)K8U2AkM@Dp&BMpeS95SSDPXJ5iFMiVlGb)qTEVp' +!$%aU0*06!MQ)ml,AU%K@Sq`!#LYRar9'NXPB*'HX)J'P`!3)N@"5U09-CV,"f)" +F)@SL'[6Dd!!%jfLpH!h`$!Zm425`#*3b%FfP85B#8U2)S,a@JdXbQ)Td[PFL33a +K"X+6+3Q"m%&&-+I%6!S!+TNbb6TP&)E1JQQ*r96@bfBFN!!cA!M)ZLXRI5TR-Va +!%54a'`Bq(ZYDD"#6AH$XY)-XMjI,i6T-*CY@2C%ZfDXf5%XNP3eH@fIDT((K4fq +Vf$d*XPiNM3"Q9VNL5S5M@!P($MC#(N`i),KS&3e@!J*MSDD65@ehA@%VVQ"N%jc +QUSQ+SS1K&kPSPPcSL"j4cjJZ25'L$6r6)dSiR8P1JHF#*#`pF-Y%XbKQ-$@XRT@ +"0lRK+"1IX92BH9+!b(TF+CJKM0HVN!!FVBHPA*(eAN6E"0C)4S),"83d-5A1P1Q +DSR83--9!*Q)+F(!@6&k&i4,e#PU'SP![Lb*"DmjJ-!emSJ)ba"&TS-cK8X)i$)I +%3&&#LMDN*J-j,k*P'J"+q*6*d5#6fDE0R',MB+1T1LmhkVM9+0bhFT+!q)dk,bC +H-L%P+1NaSdid%&$5p!!Q"l&PGK3&Uaj(C$f1%#Na-D-YT$!m"*mCamd'JK1NE#9 +'mb1D@'$`k+X-&cT5S$-3JShJX)NMSPAUd,dk0KH"Ck@$c8`1aM,VL4`'JK309Xi +%XMJHTl"#5SH58"HRX*)`$R3#3k#S9q*dFLKCi$V`G5MZG1`!XEK1CME%JZKJ%() +b1d&#R)MEJT810R-"SH)J8+,,Sl0dT!r-$RD#S-SJkMQ+A"aKk&h(c4#0b@41F3R +#'`"5`HCX+G-Q)LSSTKPP[!Y5*(TNURUNrJ8)#YTfc1(#rGjVMVfaqhI(HZ[d18N +aXPr-`l&*"amAXT1b$KALB8+-r%R-plL,'mrK-E8Q3RCKa-kkV)2jK`i8IP9BNKA +lM4a8DmBpdLrhc!B#)b2[BrDE"*a!G""T%h`hXrT,1T,@YAMU,m[!$N8q`L1e3C- +le-iM14@%Y3LAC+PN*T,M#0%%`%G(b0+UCJLp%,V+MUr[X5fQC$@)$$(D4*U$*pJ +5K'LccDbffBqN"'%Mp$6*pipH&@16MZiUb6Q3!,mrFLIZ6I1c5Z68qK53!"h-IR* +5G1'"r&d0E)+V0h"e4G+F603fdc!rJc`HBB!JjI53!2p8H-N8@aJ,8a4QPG3faX3 +XBJZcqZeUMr6Y16*4[e8`cm-F"[Kf'r"YNkA#!A*UBFG,*6Ql5V+mKkq2(ShVD$D +1"5+d&k4mYb`G5*Hr2"!aATV($a6@kXJ*TMJeaAap0("B532Ui4kTYBj-e0CaQ,I +#["MK2$6ePD9bL[$!iaM8Rh9)CPh1VTe*Zl1m*9)1-bAXhcS5m1X3pJM5KYkbBlf +*`DE@CHA[+S`Q`2SFCZ"YDZXpJ0F$pLj#1m!$rAU6V*qiXeZh-LIAlZM@Nh&d#T* +P#--&DG9X@GV546D-TLAS4bXU`G!fh10SHjUYKq3F+0bGXfph5@cqVLbQ3'el$5# +L4fTl!L&DN!$HVj46ejXDZZHq8*k9AhMc32lKRE[bF@&8Pj1rUa')fe+el6deUX$ +X,jFFcXVIQG6`4-pl1!Al0YXQeh0+'!E6cX1(BJZ6SKR*YIeCEBYfdVBlFV56Y[h +9U%-H+5S!!4dH4G@S&%R%"G2(@59CqfX6aS4%-[QFHE6%-aQ8-aRd0[N@QDL6pf( +Z4Ck2S&HMqN*(1imKUKI4i8Gd2#XC6Hip%M+Dh!U)IdBbNdc8bI-`[iGmQ%HDC9H +M8$4%S@L)QZET&0AXTfi'lk3PbB45clT@Aqc-ZUV1LQ!&bU`6CR9@"C*Y#)I8U1' +e#a120)L2,daQ(@+&L30A!!BNK[kHke(p#FCRhGfXPZ29cP"RcADTA3Ue[C(-3h# +VJq)Q91Zm!G9&0V9ZPpTE##,#9B3(@)Hp"p9ihKa82(%(6EM[fFI9fA9QGIC9j)8 +)9"d%2B-ZHHi2Z[%-f[MXAZVX$h$q![+@#*2934"V%-KT8,BRH&$r5E308fGM3e# +5iPqVbZ!6Ym1jfbGXKh-IQ0@jM8M@NSNk&adcY`Sj1QEZ)A93Ap)UcDi@Q,Scjr$ +Z[E'(Xp!BpmAZV$Y33Xc,-)3JkBc35j!!8XYP4fJlGL+M,LFT&Nm%VMRfa5CP&4, +SCZVF'8+`BriNfjdlA*f,$D5TJd!*JrU,G)K)EiX8fEp%HPDNEiUdTdM2Lr36NIi +LdNV'EBr,1T%@Lr4YNAB5U9kN"d5kL%&r,p*p)YdMdNb4ILh5'5*e-)aRQ1[%jYN +LI9HNT3a1%qPbFQp,23`TlN0-)MA)j$,5c0E#46UFS32d8C%1CQHHCk`A4,S&p`` +LlBIV2SCh&G1a4+4$44V#&P*&HN5NIa6T8T&Z%'Q85,Za1rFKE*l1pR0(**GT+jM +%2T('-deY4ET9T'8L64ETq`a4#bCLJNLI&1NA)LeJSN5,p"@4PSYd[8JhLA5U52r +#@!qBF0#De+![Mdf#Q+!ir+9)2aET$b,e%qPdN3i6kDG-TK"QqYHB6*maJ6`LV@D +l&GNqd4NY4"SSdYp%fSbT9*J%qdADQh9!P8M[LG3YdYdLYB[dTNKPCK%d4Ga6R') +E4PpZCRC[arBf@D4p4AUI,3pPXX,k2c(VY",TMf`2LjL10@c21d6kNNLr%qP-N9i +@kEFL646T3T(fB-VQXIm2Q#Jec$6Bc$T'-9HC@Ie&HS2e&T4GCh*!peX0*(+3!&P +`2G[NB`cdFC'H&1N&"VU"@Eq#'3kJV89k8D323h6@2FH"Le(2!GC2E4L3!*HKrSl +eab-Lh5l5+b)0&HQ(E!0!B4$T1C%1%-0Hi&4*prBp(KmAF+Pe8Dp$`kdTDj[9Y)Y +1+cjeBeT"Yqcq1SHT4@ARrFZDlTkBIDjhiB#mN!$)jZFleSd)[l"YaXfZ@je'[GK +UGCHp5hf"*bHApLNC9KCkl1H+$R[Q99fq0H9DMe94pXb)PY[EljXrjXcY13qkPrH +VpVrDjR62r#%llUfEfIM"aM#h+XN*-CeLPhLZ2p(fbFqrIR4XmX'2l[aTjk+A,rl +fMpIHA[qL*82ijdYrb&VijrHqRr[A[apiC&c``lmmrmNh2lecpYr6ArrEq`-eJrP +IDcj0@[lFrDpQ2IACiFG'"4hjpFV[M[libXHrRrV'@eX'jDDZr-Z+2qjDm-+Ahrh +`kVXE(KVXprLh6hq4-h6cQlXAErS`-5jBh&Ri,(Hb8dq2[S+FLKTr+QVmU5I)4*e +k(2-Gb&&d6YfU1R(G5JHJm,jK2QPqUV4f'F3R+C!!TRBB5Gdi&II'8p-pU90R-b4 +%DCSkY4YZmDh)ifh*%%#G3Y,2)mh`U60mTTC!!T3Jr)m`K$03cZ#ecHMdCcKT +E668M3Td4U6S,*Uk@8"N'1+-RZL%jP9-#5cfFXcqVMYr++XPj['4r9JQE%h4h4h- +,NjNc(U#c@Ch4%8P,-P&Ri(jU"Zj5CZ#QE-B3eBN010-3508-k@Qa(*!!1'hN#)- +R%Q"kN6SG0bc6ab$(AUDI8*hY*N,UPcKYiT0EeHNKUM1q(MSBd+klHhE,4@!kUY0 +lU!1YAdjkeerVSQ$k6(8klSHRYd%1MG1GkX$L)l@['QD'Uc1hU`1M!fhELSJpA2K +Ih1c02$ND!l[ZM'HLjTq*@RpQ#TQS-qpLIJdjD[1C[G5"YR[#JHbH%!Reh)e+XH( +kULjR`hmMaI#45V'ic+`Z"ZdYhNiQkZ*55$%0154CI&8G''#6iT40LViH[kL8#Dm +i4hFI[cKc`KZ)a@HJjTiRH('lfMFHC%&GM1Z[aEMq@Yc-0PFAc`#V(00P(KU[U!0 +lbBiYA9a+'QiZF$Dq@)e(ac4cU6m$0Zlld@qN$Gj-LSiY1HpP5hjNXVZ`*(CRi@' +fi'eX%,NfZMVEr8ZJ$921iIm*#dkY-U[aZ+k*ld8QU)[JZm+Vm6"II!Z%DB,dj8D +5q2!jJR5fN!"!#)j6&E@&cRPQ3VYd@&dkV1S5A,`Y`EhQNQ1#G'Bb5Abd[q`iZij +KZ$LK26Di%0V3"pC'EeZVYmTli`h`M)kjc,#N#d5B8fq'*8Z*'CEX3BUEk#9Zb,L +G*#ic4"!)Q1&bE9PcrKYCkie"0&R9TEK'@,SAS9b3!0jE44+A-BSBNP-Z$5i&H`r +XqjmY[I5-Z[4R3ETBjT(F0E*d[aX5e!lZil)8LQETaYfr'q@Y'f@`'f@`'`@Aqa) +ZPT[9lYGp++kIQEUIcHVbDSqd(,L@4`V5A9`kZG(J"U*FFi1dh#J3hEKUFdqckF9 +PP4ZYaChZdZ[ZaV"r21NqRk%TP`HSbmPZrD&b1(D,AR1M4(+6jSlkaih@i8BCj)D +jhEJ8FU-qFKq#@QrYlQ[Bl609LMd[`jkAJ4D@RF5HlF#+r3k-pa'$%Vh$IE5'U2C +4Vim@qbM4IFKhceTrH@'lZ2$LJmLNZUcB%Kic56RNM4RT&BNhaZ4D[*j8Z2j39S0 +`MDj,S9$'E5JDPJfc&3d6AkJX,&-A'KNK,Yb"(H&#H#(SI1%e3EU!5[i#K#r`8F9 +(ef*@ik0ir28a5S)EXR6Cjk1JTSm[q"c4&Gc-9kKVM%Aib1KjDdh45pE+[U@ddPT +j[&4CED9UBU*q0',0eip8V2QAcE@2-%SM9TmIb'5Ghp1XcZrZFFahN@[Ih5Y*6BG +16%,0QP4HD+0BPpZCApK3-S6B!"T%@*!!TblB-4iP(Y!X`1iAB2GRKrcHGHE8b(# +5m`f(e3@i(eX!XPX!XP[3@C!!1Z(ZTe-f!YTHAeaGpm@08pq0#+YPajXM'1E1%dP +G6hQMe`)9Xc&hHk3d(b3-X8Piq9R1bl@&621Ce66F-kEKQ@-D&D42khcdP)rL`[I +6)PRUiN4SKE!Ai6a1c&$$m)MVcEXqQJ*rddF$m'"JRbcGQiQ!4jhh,N@3!!ZA*RD +4DM*,CI3*YHXmmMQL4qSklh%e,0j(dhadZ,S)(b+S2LbrC9YqDi,P!&&[M-0b$pY +bM`Q@ia-[KDP'6@HajeV(PSh+'eFp1-lMHklTcf0H+(kjkTA`GhCXpXDXAP2jd[B +90AFUVTarr[6648q@2RAZV`pH,AMYfKXhAfrFT-6Z6GUIY@pAp-ip4qZqbFmjp(A +*iF)$j4ZbekrkrECrVpYpI13!@lDq[c%aY(P)X2qCbfqQTL5("L(h#lJHH2rZHfH +q2(AamXFAcYjlXfqR,TpfrN2l2lEl8iIIGIcNJ`plIGlRXpjrlrjZYlGl[0AeEap +mQ*l3kPmYrYRb,mdqqMNPk'2[YkQYfdkH0A[ZR"qmdm+Q6*daIHELq#9,Pbp,$NL +plKGiplhlAeiFIZV#[E12p(ZSriY4Jj`$h@(mrpF'XQJf#4%VeaimGL6biDZ2AhV +Lj&FR[VrphBhI(V[P-X*))@ia)e"*Eh"NC#liG5&YMRc4r,4j2rdi`M(NdD%C[`` +Em&MQK$ESqF@%0ZMj45dEr0Vm&fqEm6Ei4fdE,*br)'h4["p(r$4Nk2"(KcdfB!) +E623ce[r8Cr!M(`'0pUH%ZE+LdI`QK1eEkdHIiDmfJZ1eINUYAjM#4rjV1+e1JPR +jVhm6lUBf!bDB9&MV42$+5*E'5c6a)6S5"*1DU8Z$Y8CR0p[2&%EkA%02@VJGEbe +Cq9KHaNIa2$k19q-GTMMZ`9L&jc!@kXpm$(q"&r1AH49rKBIcGrJ1[1(Nj6&m09r +$+rP,I$YI`@[i(9l"Vr$cr(Q-$AJDhIdNhTel#U0JrSU49Drb![iD[mEI`*Z`Vr0 +'["q&MSVPHhN5AUr,i[[i,Kl0Gr)pr#L[ipr`I*k$B@*Ima*qQ"Ib!lbFEq$CI$e +IaAr2Yr&rmh9m0hVp2d'`K@rPlr10H$dVP)H&m'$Zcmr`bra0RXT6H$+i3Gc&pZ- +"r$S2j2IjAIiHJ,lNTrK&J(l-,r#cr"k1p1@GH"Iq+Hr-rm$EmcrbG[a2[!2r(Hr +)2q%Im!pj,rijlm-rilhjhhPhrLl[aYrQ2IKE[#[r'`0)adY%["Ar&fr"rmPEmVr +`C[`MrM2N#)+@Er&VcG[bbA`@RmhRmMRm"ci0[bPm+Tr"Tr1CI$'2jd[i8VkF,i2 +N!GM"G8JGb15p$hN[mZ'3!2N#C$h,(q(pq%1m2hq44r&"h-N(FMF2%rr2Ni#-P`6 +-h-3&(X&AmVAm)$r'Mr")rM#rbKrRPrJ6r#6rLTrJhr2Er$YqJrr'Ede!![m*J[% +NJ#&$%YGc!hI`$*l*&r"Iq8*`Qh-AHa'Icp2i22i6rj'2!0!3rLJI#Y"Iq$!qJ$q +')mp'!Mhj&mp+!J3JRBH0MJ4qK3brm$Ei68S#rm"[p#5`%0)ZJ,b,)$'4pbI)1a3 +Nm#LNI3cbMTB%Z(U9[LJEFL1[`PP2%MHf1h0,L5[,*'j8"A1YLFZV)@j`1qCQ%1I +,*kiUK,KA[-bG)qkGfmcYCbkEZ@l-6@CZ$R%lUTLlbG`kjKc-p@'Z'A'E6F`&-$H +&1+r#A!ILBLUCBd#VEc&hMlJeFF5Yk%KF$6Y3d)DiQdb8e`Z*Df3('NZ)Nk1)-i[ +%#@bV%9EL$MBb9dIFirfBFa0hb8lF,QDQD"paHeS3Gj5TVq2-462(&(pcR,MmF1E +BC[,l-MHE1BBdTj5jEF`aS*`Hc!dKlP!6FfZCfmJFkiC$DF59-,1@-rAP2BRE8-e +F"(0X!aXSFGQX#l1(%EHHEA*p-A0-h2A-31Y$QH[#($2(qRMQQ,*96,K9&jKM'pM +#8'aK4,#&GGX@eP9E4K#hPDPjRhA9qcHBfmSF1l#4%FV'IF3PEQH1%83L!ded,E! +0*jjKVL9aqR,QA"1Qc2#!Z@2-A@D1'F,3LMP'F!j'&JkQaX&-PX&B'Fcd'B`X-[6 +-X@-CV)-cQ,%b@DGQ-S,1C%56b8!cQ6Nb'6QQ-(3Tc-3T"FbalNaK(C!!`MDFc%J +UP"&Ik#VQ'0'(GQ@1N8XSkr)J4L*"[CKMM5f%Q6+NL$P'p#'Xfd,D-mH1"HZBBmd +TQ)NBl-mF8a$-1M+BGB`r%m@ISI"RAHl2ZYbI#H%rR$JrKXk2GE!I8qc(1XD2EFQ +2GD3IfjKICqCBPrM0C)ieQ)!bjTL*!eJ$#f#E$f#(!qibaaTU!0YN!"2ZqKMQcM2 +(L2Mk#HDBiZZ-P+mcSepRMH6kI1DFa!@bTK,)5#'3!*NiN!#43L!MjIYjc"&bNHk +[dhLH8H0G%,SD0EADU"P0#2Z0QRB)!8aG+%+D8E2BMGTB!)qGBp6'l6"UeGP'E3f +!YSFJY$"U+jS3&)4E#'H-@Jd1h@Q$%'A8+XBJA%1iJ4#0N!#*m$2#!+0f"BL[B1( ++2S3!ShEHDG5H2ih3L(!5B5p##B)Hi3+%ijTQR+&TGUqQ&Dr6Y"AG01e+5ddl2dc +60RA802'UTTPU0'hPINeE1dh6$TCSfT%(#++Q4CCVfX00#"X4HQ[De8D%3S6qQSB +[dp%ZN6"EdhiVeE4e(64Y0a$YVpDdIC8)*a"#%0)dEGGm6B[13cLRDH'"1UdS8kH +pBG*TVer6DCZ3!'cUU00-kh5D%+$6[Z-)@1"j&SeA@64Y)d)ELkEVKZ#dD(BG3L4 +#Z8A,ME*S9J"C@eUdXI-YfVJQK0B@VEV'SJfqCp&m!(UZK89l`@M4LN@%%4EYC5b +qh0'L93fcD+pN)ea'D'E4`SXXfMXT#*MXU%5iKC!!L6$%SQfqK(!$i4$#+B4H#0- +3h"E0@iS!JEcj#(F4J-!,B@+X#&L-d50d3-!Q9N13!09![ZBd`Kb,9JRK+lFM30J +9fa!F#$d4KL2dYfJe1&c6hD,G@Be3JR!"!BSV)K#`d5[c,0Vc8bcDkGN@l@NJI(+ +945ZY30L(d!2KCi5C&ZdTIi4@&ZhF$S56&Zf[f(M"C)[fQKe"3HKUdDkG4cL1F!B +"KRi$`'p!U$GJK$ID@l5E2J3`Ed*")cDhbBZ!6P%#,*S-32%B!J`S3N"c-3+-Y4+ ++9mk`D'[$%3SYfK%B*V)!S3kG1mDZm9)lU01ZjA+lCLe##%&)XfYMVb+F39KUemU +`80B"SEpG'a@"d"%"Nc`6`JGfE9`CJY1Z9FqcDi2h)`""h"bljQPKehb0GQe-Y&f +VDQrAAXQhDq&3qXj'1cV8VUd1Y'YVS+J5#&GX4CKXebUX#+hYfT9XZhBqhUkG6VG +VTA[XfP-&GZhF2E[fDJS#&"djMS!N%NJM"pLeKm&iZ,PGZaU1!+",fa%Z)d#`*b$ +!%l2YfNNSr!U([PYVeflB%E#a@"b-KA"lBB$SDS4p#(hX@PfF(F2MFAp-SZ,`'L2 +)5qNdPlbc+)81-58I,pV1Apl"ikSa(&Z4aT@CU-HREdeL'Rr140Ffc'KF"*iITUE +a''XPckZ@p8dm&jM`1+JrRM@Rdc+m(B`Re2fpZ*Yl`*53!$8ja9'#Hm&SERQ!GhP +G3#Rp[C2blS-AfhL5Bc6'Y41mXS+ri-1A00&F(hALBmGd[$N1@IEkp+f)6-0mqLR +NH49fF0(I423-3*eD8S[RU3f#dajI8#XHYTE1jQ8qRVYG*#ap0i*dKLqS'pp84DI +`XMLHfq4DQNq@iRe"mhRB,Ad%1a6Z@QT2Rm1VT9GpSHej@09UGZLQHIbK'PrSI*j +B,,)9VfXPM6)cKU6af0AAH0aUKNpQDc2*fRk5-&[GKkhq)bZ86@b&XJQY8&C[KFJ +*VG$ECSAHN!#E,)fh!K0mLLmSMBGY3fH63e@ZTFl-#Z'qd-im,(`#+bbc@@(CIfk +&8'+&XQKH9XNYXSY(pQ9PllINbG+Tbf))RR,3N!#Vr(ADNPmVNqqIjYZ[mY)b(N2 +pHG8jrY`B(K0T)RE$"kK4AK20J`9Pk@LaQG&N2pP`'HmLBp64AN,Ep5a2lDQ,3%$ +blAc*hCjGS!Saf3U3!2*R%cNjlpP"+X6ZHEJHE*,fmGejI&XPrck2[e2*VqAa9bY +j84i'-2+VHIa)*6IPFEQ5lm[M&C9m64lhVR2Cp`,eH!cZ!46EdZ`X"6H1a2f%U6T +*j[&j+CXf*aN@cj1TX6h*-&h,TZ@f6,h!d$)cB&TRbiacI#&aI%Na"J4AimUp[Qp +,IF&Tr2LjUlbUKPZVH%b6ZCjZ633JdfGScNPE(q8ap2F5bei'ZF$S%r16Pr%`4l% +"ArA9#(V$fmD$4RL5"k,2L`h,m29IVPiFi3N",lk'"K+VjZDj+$1HS1MPbicRhR# +PS3`D,UF'Br3-+,@H)`AlBma18Df5-0MIP1QYPVCbHj9,Jp0c-BS-,,R'AkhL49A +m6K9IMHF29E`*im9%GJbImVF6pHhiq%P)VFQK@T-6Y5B&Y5EKpBJ%4lA#,D5"-H8 +T8"j6HBZ2#jF0*lNeh,8`!'p*aVP+A!E4Y)TEE'Xf9Pad2F[T#58X+CUHiYA!Bq* +M`ed'GIGa)8,Dh3CeJqUj[@%Gh4D&pmb0MAM"[%(#E,`0EjY%iD8a(4Nl3-cR+Pp +#fJ[*aA(FQPHE*TTm+DJXGM6bZ'YNE)Xd+Ya-&TF5kD,)&3P(EkfYji5!ibf1"$P +Fi,R@KM))-+(ir%$8EkqPlfLa+5-@$f!X6I895$!U%+hk"-p$Q91&3FBZ%j!!IHB +aU3G&Qd,9kT-M"eJlfLh30$Qj1(`5[YIh54TIi$KH`mpEqBTL[L'FV`lR5C8FAr9 +AA-AISHhi-E6I[Ia*c)Viq6`c)q2Q4"mRD@pbhFM5EZ5UNDA,2!CR-30XMG6+Q&h +rkb2T1&,`M)iiF+5qjIeAJ,@ArE!F&QILeG[j@0UF9qHC'JLeJ$8eI)4UP8GR@Ga +(V+Qq9B[NJl(9SG+1#Sj[NI@Fipim*G0MiQ1U10lJ)e3jhi88k9*b"FjGP0T!b%Y +PKlkmeZh&L[#eI&`9'C*LV@TS)EE'`mKEe"I@%a5%,&,`49Sq*HM22MiUR&I6RRb +0P9@J[FMR['h,m'R@6()r4)V#iNRC!!a)idZ+E[!Q(bqVJ'+qfQUlLf+!H2Z1RBk +JkbCK!JU@@)#kdP)!1@e,*Ek-0"jIZSelIBV$HTk-CL(SfM3!K0V3lCf%#5K8X-H +,ch0VA,fj!9MN#`A#BK-['i1Qe9!KfdiH)d5HD6a0QJBUTrSfMZ'lpDh0IdR4*ED +l-AcFk3PfpmXa[*eUNqIf*%a!K4*j+RPCH'h&%I3"Dp)2kXYI8Ne(60V%-f1ED&T +pHGc2Nda+UM'd9cf[[kfF+Ur9P9($&D1dlVb5[LU1(iMMKblaYC%mF3aI@mhI@Xh +ARZ0Q(fmXikrPmA0ar'NIVbMQ,fdRlP`Hi6DDq%1hq0&'IU$B6(5d!0@NFf3cb$- +cNRA`'!E&ND`Fc5#EC+X!a0B#bE-dNYdM$p)i-88q4[YGBrE"$"mC'b-DCKKeB3a +XQ"h$V)10`)`p58D)qJ2bP)fPl4Z8jC2(FScLZk"P0U[9-[qhe1ApVkJc3*hR'3* +R1T[C4Pe)18QL02LQ)"fp$4,#4pb$Sa&-#*F15S0[Q#Gk,d`r`D!0R'mBac(a5aZ +eS,`a'&%V*KFh6A)291a,6UXrL)&6'-KqY&Mf2hU9R+fe-KM$4[EJJrHM%4K5&`l +am%jKR1kJ&*Fh-K&$*N6K@-**l4Y%mB9[iF@mV*VREU[9[+TmMV54l@0#90L+EFH +6,XKa"Q-T'9K'I@U%e2Q",(QDC-Qq9T!!LQ$F&lD*0%f3!(CHHPLk-HCK+E+$,"A +$cVT$'+Y6)N[K[G(TdEmCpXc%X$mB36!F[Fh5!!(0##QH2$2R*LkRP,PYc!8`ei1 +j)F3GDL*($kd93!3X6C1P20c"IAd2b43-hjSXB!JA*LeN4q%PLPX@3f&('QYf&!k +JX8E4F5##UKJQGb#GH%2j!kc4FLme5HAh"(ej6fSbP,FLL-[G!TjDdq0QD81%J1I +8K*NG#F3pC5Pl&C*6XMkl'`jQYaEdf60*0Nc3VlF#`rTL!Vfq!203M%*Hh`@VkeX +,M[9TP!`@Ae8!S&9V#G#U1N'rkJ,@9r85m25Dm,B8!lPGeQpCKl0E5V#i*863EqP +#TYe*E%EL&"*(B(8V#XG4bf4TDb'5PV*MD`pkA#GLL*!!J+IE"1(l@c&J+!5VS2f +0Y`9T)plb',9$PK+h#rV%Qd#4H!2C2L"-h%ML'F,V,KJ5Tp'Rc3CD6*2J0V,*!"T +MPU45@5UlKLTh08'[[b9)qLjJ!D@qT5!Cl,*NEBh4,3m`+FF%A@qi,1JGfi(Am8$ +3Cj4#5dB%LEI!bbJ%6dqQCdMX3')V%LH6eD@#2K0$[I@C656@N!")4-kmM39LQN` +p-KabC%kQAYcbTq,eZY3H80XS5kPT!QiTLC!!+5-%+4NX+pT@+'3)*CT$3CZK$PR ++aG#qd(D#)5LF8&I3-A)LU+qJ$qS&G8(T!!e#"`I0)&0Lm##RS!mT3KCL3KB0IXJ +U%N-*ll+!"pi%86#KB8I`1NV'r`EV`IGRR+iZ6VcJ#"k"Mm&&[6maM(qMi2#2*V5 +UpbH)r,Z!dFE&'!k'Rdj`q"84KZ5(h[+V)mbYB(Cf-9Z#55M3VjqJ$pL+,1#ZJ+I +BC#m"N!$qqKM`VTmAk(8[9FJBmZXG`(@##J0CB`TX&2"mQUAjJZ'Z(84[Z*Y1h(Z +VL$ZcRER*a(fjNEK6&@5ATbk63aI,"(*j[0`XABiA$"HbU@BfA)JR5fH,"-0CdJ@ +'Xk6TkZpGJL$hHJRkHd6D0fm+MVkVL4A`lT4Jk23c1G2P['$iY)kNRlCjf&(e!3e +$YiER#BE`mfLSdMXQ`I#1JiDCT4dh"'P(&-V*8l*McADk"(CBJkqrLEXQ5f[`-QF +P#UHi)YP4Q8fAeiM5pK$"X,dI`EZL5A#XQ%r$-!kh*Se`lV34$"@CK,)Vm&EAi!Z +b[Q)!a-1ARMLZ&,-qZ()$(Ab&Y*!!+i8NkXPk`&9D*8[Ml,*")bCaD'hS%Sb0eAA +%ejIJd8)HD0q#S9Cjje&)S[[XjA3jeR04dPYaF"5q&X(DNUl"lXE14qZC$&a0JM6 +Z*LCGCF1ieN5dDVaG9RB+3U&N+`-b(j!!MNA9m&`,d$,H1RX"hirb3J8QZ(6&@"! +-Gbl'9I`DXk&i"$(kbc9dK9Pk'4+pM"'*eQKm+MU-,,a5"#$p+pRSreFZ-dicF+6 +`)X%4IS2Z3Rq%4m(-+@6YR@D%E(G88Y8SkRH3!(Dc)e-`l1K*&RH3!%k90Pm5p*Z +*K6BI)[%8B$DM,0XmMF"X*Z@jhNZD[$F5#VhjK1fpbpLN(221ai%BUf#)+D@lc&) +-@NT-"`)8diCJAidYVUk%p#I`3@ShZX3XV6Q0*S[LEXdF`9#j(GeQU,`(fM1m9)0 +Pr8XS4"`[pD4K))F9PB*qK3Ri9f`6$#YkSKL69J`A$$8R#IiD2F&Idef3!'T39H6 +fN3eh5('Q[i05aA$R!NDm5(HQ#4J@)qA#ZK84j&!&UBUN#K4ZZAMel`VHCmXp+8[ +2SmV*4H&b'NE14@mm23F*#X%R88ABKmP5DB@J,ld(18Tl#)DR@*hf&#N,T+GDJ6' +2--lY))acH-Rd($P9,K[qQNeB$kSa2Bk2LMNKc`+dTJ)6kDU#RS,KYIdNIDdhdQ8 +%q"SDcKZC"0dEl3RM$FKPajh@6CrJZ,Q(&68hld+-QrLD+(Z",,f15YZqAABd@ZR +aBY'ab8Z2Bj6jTQl%5dS!S9VC)@qMae&Fb5JHjGkN*K52#3Da$e%MXJif&a-D-k2 +K@BE)dNTr`E#b1ePB1B1iYH&NH5dU*XXd@6SbAc"%9T1&b!)LBQ6G9AdT66+4`BN +@@&5GJ33hLKUq$d1RadX!j"Y%*#ZfA9C%fRjC"m'!LdQNH4m)MR&PG!&UmA&1ZKb +GA6e2F!a1Bkbi1BcPD5&)2Vc[U!2+jc!U@BFEPMpI)q2AC@N-DN)0Ecfq$,8DhSH +XDSqN!#m+j+1@Nm,(B)Skq"eb"i[QYKR[a"URJ3!$#3fY38-diQh2bSj)d$KAE!9 +e65C,0B5&@V!#&E++"km9V3Qk+f4VS)hcH0Y@49ei1Kh*AGP3ZSF3r&2S#K8'1SF +QVTk3!+9A8`6$Ur-)ZJ+-5CXL'kjj5I9lE5PaEr5P3mh563a%DbP,M4LCe8GfE'T +&KcD*$YP(`mD)$M'&$S8hap1K9Y%KF,BBFB)YVQc0&JqH*S[5-3`F`jZKac"JEk0 +X1(+FY+%MmiL,c#G&HH3!`A!eR+4A)G-P9Y"IFJU'*fE6(,2KC#"00"ZqZN9kmkX +ZC2'VHB*d!L-"'fA$pjd*jcD'(GE)KYYG#C,[eTVa8B2a@''SXb0q!G1Q+5GYiF5 +dD5fG6ZF!Gj6E2FcKQ19fpb-4q9b5peq#1(4BBL'!R'jhImBFPYJRaHefh`A('GT +rL0XGYG6Gm1H-F[ikbHT#fa*CM)mL++C%-4rPMQV"XZReM)8cRFj(R%b!IQ""VSH +@14a4$XF`'m5`U421&cUGMq&!P204Tr04[9lIccQ#1-*Dl-SBi0!CH[Bhh2Q3!-2 +Yl1G5-@!3--acp,F"2IEq(JF321BN8JpafYJ2MA$dG`jcZ"d-k5)(X958XfeSS0Z +a$"JGqL(-+#r153QB4qB0M$6A'CHBDHbF5`dl0SaJJI#,#2Y4CU5SKiD5fBp)(kN +rZCaN#fh6CECN`#)#&0qJcQDXi5mfGkqk[IY%a[e32k@,mS(bdi9(1`@phI9&pYF +pF*!!AqMp33(*UFUr3c,m-j36#rTm-Z,LSb-@,&"Z-CH8FHTkD'MJ)2p1`ciEGVE +[X-rprcMXLe0"b4e$3a9pL`pEY&!5DiA1LeV!cB96cS5k(CP[qa'(,bFmY1A-`2m +,rlDF*$6Xl%p)1HUM(fcNrQ[L'#IK*SDN1a-qLR,1bIaj3'CLhmaIi!)fpR&rkdl +dGlJ62hrrp!MhdX6[3"1*RcRF'p2dVI46p%[Fk0N%YhZafph'r8rpV`&TJ3jhGSa +HMhrQiZ5'MlVqcDrI!)AqLER3e%iIpar3,M8%2f9kFV,5Zq1!pNSAp0X4dRNGqLN +r+*(+bEXCbVZN6bk5q+CH1DJ2eR2Ahe-+PDYA,YRGEFKPCH'4T-`8[j384e"Q5ZL +*l`06&$2#eI(r2d[TPI*Z5Sm8C9Y+Rbq8XamUYcqAabM6&A`h)Rp"b6H%LUpb2(r +2[*Ybhcmd96'P+T&hPF6hcZ,V56Z&")83K3!!(,4"4%05!`!`eJp9$@8e%4!KBZj +5[lC2eD1mb-qPD$Z+)MhATE`TNYT`3,5J`&09S8G4T,U5LFaUFGF4,B-Pd9@`6ZY +Ml3Tp[RaqCQAX58M@af$'Qf##S''b"(1-TfD*il1c1CRa%YE,1KKlE1aJiQ$15iK +#[hqrekU9$*RFAZlc$aZQ*`9"N!!%34!%J'Mr1mAlr(kmH1Si-d%jQ(Lli&plEfJ +KMhdpVl%,f8rB9[LBXa@96&jmYcHShI#%pU#DjAcbMXSa@5q,XC02X+TTFUj)(hZ +G(kr4p,6d,T'*%TQA2QH93j0cAeU($l[cikMcia6-BNlcMQcib5E*d"6Mam-ZEME +mk!UP&i)bmLLRPSqGD@MYR0C@![4r&CGq@TBT)q28j$h[clU@UZ2D@iCd2LBEV2i +aGSU2R@NmZk0pk,GUDNk,LG`8erEaT0D%TC`rlebdrr,`"$mcA()(*T@LF6,2H3H +RNc3Fc3NdP6dGPMf'SXGZ[4SG-k'j(aM5BrKZBa84%e(A)9Bj5)e@KHXGp+V*"*1 ++6FFpDRaie9R+m9,h*r(kfZmcPEL`4I*N6FH8E&phiCAYLKNNaEE@9RB0(c1(!5` +Irb'ZjP4Ma+I%$d@'2'8@`IeG2FXG*SHHi9mc5EjX`-dFUVZ(I`e9bIf@,c[@EVT +TM#KRM&hp(81rYCf[25E)ShRE33[A1Kejr9rM3Fe`)%Q9b'H4V&-0MhF,Q3QLN`# +$Um'!iqN`*I0r#A$qV'FcNRDF(b0LNDLa%j@"h-lJ'+ccfA55'SVCh3,2qaI(8(J +G%+qf#'k,[QVMX&SMNeJ[`!LpH*%TEjaXfR9cdHH,mVkE-82D%(aMr1MLM,'Mfk* +jNcRS6RZ-Nqp'd2(e@+kPTH'5KjS&6@BE($FCKQjTJE&l*lDf`qK'fQS35DZ6'el +1k3`T&RQQ6!jM*KM01qlE`L98"8Sj*VC`0Hkq&H[9M4'NpYb*qEFkbT8!96F1kdM +9M4JG+DYCiG%@Y6"c$$8rUp%)-8Q4kB#!p&k3!"elQS`(I*rjf%KU*L+TB6dcfJf +cT`&L8ZGA*@D!@)[pYT08E`'T*#1P9#95c101a$9f@4U09q*3D5K!f#a,FLaQZ4B +S"G)-jM+2PBfeErqS0E9EcjbMbk`kCj+-kF$%UR-e8R`k)!@R%fGqAVEr,Sj6CJN +@$&#FV1iUV-IbITLIcmr*M)[Ml,3FaBESlra2S6Xi&R&rIK(EmGH,4j'#dG2@[(9 +p2+hEIcRj,0I6+KbCpA%BqcHPZ[m)"G(-`Ca6V'C$,@H([-ja4!FGd5)&8lfUN6% +[hXZk)F1ci@qqIcm@GK!L#0d4kF1,!"JPRMR%$dGr@BlR(8YMFM,,Q"iBlB0eq22 +,PIT!'3Bl%5r9E5SA%XE3e!S!99VE'[(J1(A"XH$SV8-FU9(M@MR-f!6%41`@&CD +6FU+SpM,-b#mR$JJYF*P&3VHF@[!kqVSAGjK8TV"j)%NI%XqK8j16"pl835IAAGb +C(U$83ULp3GU"a!","NK%+#F6rKF[i8MhdP&5XYLD*Qm"6M[59J*20EI24f+Z"!U +Je--(abdfBf*Xk'rb5"Ee[&X5[q`46FNJM(h9fHiTESYd-a9`R8X9LE"LhdaT4Uh +*qX,`I!q'('IE&KeAV-jK6X9#U3J-F&LD23#*aAQX0*5apGRKqG&aXj*jBaa#"p* +ch)'IFMU1d4$b3)',10CIN!"%Ka%C+Q-CZAq0Lh$lUb$1AIND-NGLZ-#4XZ4Cqbm +aS"jE@2I'1$(6",YX`qC+6+d"+Cpj#Ui&U@k3!#j+Y@fq(QVBE%*bU'ec*6lcFf3 +m@%#fiIeb6'c"4-h(*HqAdd4rbHCprHKiEiLE'iffpm[[Jb1I0D1'NT*4Sh89%Rc +()km(Rq-CU&hhXVeF3e)TaiF$DM!"9A##8MZk@UL#@5T[D(b%!2A1KL!584YUm22 +AN84UZ4BqGB0,fSpq&jZBeZj0Y@eGSi8lflDZe9BZL#hS',UJ55J!bEcMCJb-'He +(4fqJBrcKQREYKkIDYQl3IR5YEH[EfP[cfqHIbfA2Id4r*cjkV'alqikZP+5&"cU +-a+m4AS(A$-qNTZ%kaea*GUNMJd0'!L"a[l1KlA@@X1lCi+%%%**9*AHf3C4Tfhc +,)JJ*5Y4LJr9dfe[2G[Gaaq%qYZAPP"+%U0Hcj@6NpB!3F6XCVF4S6#(Aj3$j#Uc +[r)m)!5$(LPkYF[BdK)BY4USY0"aUf25KTGPH8[+cdh#@E*QmTq5,$Iq([FUG3$e +2bEK6FZ!#3lUdG(KkZ15E#c`LkkjDDTe,[aA`F+D#9A3lT8$L3D#cfc*8R6dp94+ +ki5TCHAS'Ljc`RlqKPIb-PXR[@KY!FFSTE58E+j9`QDQ&JJZFj0a9b#868i&PKDN +mrcBS%B1"F"X-bdIVZLp`cl5&c&cNU'cKTH-B[,XUJP,9ML)$J2m'J6&r5!#K3@4 +!DpUPB-"H[B&R0jZLieHe&+E5+LE[aG"9e&hilfhUA5$5GN0%KYPX)p+Ahh(j"bE +[#Fr5SN3'*2)da&[")46lEDV5`NKhZh!91jS,El-$k[)"!ccVNYNJ$YJp['JF9lZ +'ibLHT(`NqfdBpFi@H3m$%YQl6$fed!D5qr3qEUqiLB&HQU3#$i$ml,4BFAT`h(Y +4Xq#R0IRpp)P%q%NbeJHeY'2ppj!!lLqMcF$'LdMGkh#-IKIGaHEI"+UK9#B`##B +-*,)aG(d!DFbl%1A4+(NpC[U$J)5j)@QL&XC@TkJjeG1bJj2UFLkGS66[Yhl"`&& +Z+5IL"*,68k(KJ)dKje59Bh&r%d$M"QM)I,Q0+I@PUjF9MD2,pkVcKldGE61kI+m +U%9ih*NaA'fZJbKpfUR)%#)8hqarfKQhBH,#4+CYk$j50jE9ZDhSRZb58$Ulq41' +Q!5Np(XPb&#$!G(ULC[rhRQ1EZ!3rUr0mrFY3X!D4`$9A`mLk"#3f9b%K+l,jK0M +HERa*"kP!qfErr-N65cSJdLhi%`lLImpHleq,iY1aYKL0+lV`"!)+RR3H6Ue9Nd' +SbD6*eTccIdZhSMY*iU@Cj+5SGm&MKBU60RqAmYN'J,3*D(qd3U-"`06bZP-mjXP +#SBDk23TZ3[F6&M`49qQL$eE@')TELcAlY0&IL28q%Lj6I6`63L"&6C)BpTprmq) +2([apK,%Y*lD'1V!TU4XbfaJkc#2KqL5a[IEB"rIAU"'Im%PN0,$f"`qDT0*,JF' +)1`M(j*Hi&(GpmU5aDh[Xr'Ak@h&ji-UM-H2Na`r'eHePjkr3hiSVCbmr@VBaeUK +J5bKjG@J'!k2M!5J`l6Pdi%[p"i@G-,qj2Ri`,rddr"T-`iA#9DU906A8-E&"Y5q +`,aJ6'fZ9kZ%*PDIE3LB3ZBX`SR#KQ!2R)bLJ1hjk6qLD#4[rcE`@K[!-9k)NY!0 +U44&Jp*!!e4&rH-+Uh5XNjhCjA'b6TE`DlMJ&)Y+D`a-+,9)2JTA1"IHLBV)hK%V +Y*D(G(KG$,8qeqiFV*qm*c8qR1R'al+3mb&(MG%VNa2,efMi4K"e$cJReF+T6PiN +k1N'U0l$E-f-*QNN8Vk&KFIa-[5"b%XC%[VB9c81MJ1R&LZ5,@BJB"$D4&bG&G&( +1DaFRLXC[!*LK35#5Sd!-@dfG1"'J*M@3!(qeJ%SeKe+fK8SEMrjYJ%`"')B89ap +I(`0)ESLKh9'ij1%0fi5fd1j-&qI2q#QpfF4Y"iXb%"heHY[%`5+HFKPJ!-*XS)% +raX$!),NUGGNP0A!p9"TX#,f@![[-R532j+!qX*!!KB35#B%Z144"-%`qN86-&`h +H(U1KBb$@kGCGIVrP,a15ILM,DeS0Df)8c(Xql9#j2SUfZVr"REB1PkbEqrf5d'$ +TH!22[&h0kIK3H"NC26,c"DJ@%$KDicL96-liV5KZDlib`#'bTYiFJ3M"4PBr1lU +MpZJ1J+-96+**PkpC1KlJQBah`%[bJ'GU"c`6+Nh1m-Q[p-CGi"-5KZl&jU8DjFf +Vqe1qNIZAc'(lpXaaqrE'D3Z[0I+CErbhE5&-X8XJDN$4@bU23Uf2M9c)IVhq+h2 +8e)LJ6Yd6RTrkp5@ZKHPULd5kaPafL(m"ke'B5V8I[Mpk96'+qdHe-+9KrIi&XB! +N@"HF)l'cMlRHLbhZD*5@G63F0D4%&k&D(#JAejD(9'lcSTa5!H@ZSD"eXBP-%aq +E-GdEi$fA!E)p-hFkH33I)`pT2$9cpl,[2f*k0DEh&JU@kHR6%!V#rGHc+AYF*6$ +Dmld5IM+rAZAhpm*SeSZNM6f[5M+)HcNU$0b-3@8-bQ`C&-CJQbf$M6%BXf8`')- +`@`D"-D4Qbj!!BJbGXfASM0TeHl+R!F99YaG,MEdTHmi*KYd!`fi'KYdmBDITKZf +jER-Rd8fKa@UHG6&TkPl,KjHZ@h5"0r&UrL)&DTA,Na%4hCAR@&H[@bNq%UCJY)d +aLkfj@"[9Traq%e4D3%K0jBhqbdhCTlCkTUl@365"J*913Xd'5mG"A-IR!#RPdNX +8E)2'mX@'c4900lfF!T@ERRPb&'*Yb*E5q*'9&jk*@qGHfGEK6YRiNEIkT"GQ(5Y +l%Flc9lDebmjFmJ8dKTVJ[+irqXkf,YNY6,q`k#CMY8pUNlA-8LfcEdl-efe`9f! +fV%dYFpFV+48#!@1%!Da+Yj%U$00#8+aH(lq3!2d51Sr8P,$cjZ8$#*JCiJ[EKc* +h$qP6#QqB#q@j8YJ*"E%e2fpJ"XQ$eFC1-Lb`lS(VehKh8FEL@lL+2RDdKIX6$H( +q!k0&k*4hA#XL!AFe8LbV)Ba93SPd@9+TU6k9P-ZIrZmXbEr%JaI8#K4%3%NjKc0 +NLG9,TrL1k8"VDUV91b$Mlm'!$"[38hA!maNDX(f4H8R6,$D&)qdJ3@jG)5SeF46 +CD$9$'+J(-5+LFA%'#ND"HMVeeG966PC2dk5HbNTU941'0YcE4dUiJm#$)DDMU8D +JCKf8F'UQ82(q9``j9Dcpb*L@b!$GVG0V'NR6ZDR6QH6`Yf((3F![Vd-X9JhIN!" +`8B*LBCG14SZcBiA9PDb#)X1UbjaU'U*%BSU5@3Zl@VLA[D+D"[[P&iXI"2YJ1de +pb+EqL#N+MmCfq3U*b%l6LYUP25mHTX'9$L!GKUpJ`rrYPcYF0kB6-8aE&mCD1#9 +9E0H'Z0D9Q#)@&$@qT!QQS89A1HqDA1&I*kKjpB2`e6d4ckqQB$+`*X4+k9Fa'ci +(a8T9rM`Z9ZVbCkPBUFLIHm4+RraC*&EDj-rGBQ8,IBjmL4Y4HF'ZK[Ad-A*(ji) +H8'Q4dSX*lq36DFGK8MK-Q2pf%cA`+UKcQ"DUqF`piI"K+c"$dQ)3hYbbN!$E-bY +k+6'P6r&ET%Vf2e*ScS,"S*1PZ"JD[NM'!ph6ML-2#01[G1A9T6&8eJH($Z!k[Rp +-FIRB"pJK%Z,#l`&K*"N!"jbJB%j9"X8"*e#B8jH"FX!*(ZC8C2!FF!++1AdbS!i +i3FDF0KPN"jc!Bmk@Q@F*H-b%f!9&[RYQhN%Z6!Gdlf@K0,h6+eMkc`QqeDHFi'1 +QLE38[dTQ@0pI'4Q@KSPC@[0Lq)c&4JQETX02RRPUdH8B9B,58jHkd(AR$kpNMRM +QU5YRBX'XF490M62'%D'EUEGjhLkLPCSJ)rCq*+ed3pr`KL$1I"0RIKY&h"C*8'S +KUhp`rhkH68iqe-NrH")&VmHcKHYAk6QCSBr[Ta#&5)lV-2GqE3"'I8&mN3[@0lV +kN!"%M%cIlGS1-r$RPdIQU4`KBHY@IE+rI092Z)TNXT+c*YT*a"MV@YVeq`HqIcm +@5hTq`L@6K!,hYT%`PP0+,$lb-KkD-CCr6!Qp'a6%61HhU+b"GMRJ`,)Ba*)))c" +D5NB8Vmc`"mJ#jB-DGAF)3*`AC8Ba00'F%f3kMBjEQT'Fl&RFrPSj3KhVRMS*J09 +eL)%(N!$#p,%d*iM'Sj2IF&j$4h0Aq8pK(&Fbm5@2HP%Eb6pX6R!Iehq1%$2@,&C +6EMPCjJe4TqBhkdcf8V#c4GqaA$BialJP"3*lNIT&J$Dlh[XHQ'G0+Klfm3-3$p$ +NV5KA#1L@-&b,k@T-#5l(CV`p)+C1FeN0,S!L61(9L9D8aU1m&(TZ(h4D&%lkDm* +k#hJ(5m6SJITm1IX`14flmflfFGcj-HaN114d(-dhXimGcJ'Y6SD)mk1hL&j!5'T +Urcdcl,1**$X+(9*2+45XlM86!'a5+Xh9F)pmJ$Z+aSHIaLY'Vb1XFS492+cLBC@ +6V()bCZkH+'e(RE3a)ZcMRFEB$JATX2H#3hm(&)&`Ec9B8Y*khL*diY'"kQ4N"!V +0PU23D#RFENQqHHPfJKY[AKbEfMi%"C4Tr$$I(Hk`"+Z9TQ,'h-+BV@#@hV`8Q3p +@erD6D#KB'qI+a#Hi*GFjBI$UiPUbbLZAhV`%-BQKh(GF4H01mP,M)mE)Ui1mFh) +&%Q#%9K0')jHmb%5)%VR+P8LDq`bJ#$)GA'FSEdTN4JQPmXA,B[81`rVhPbFI8MN +!DhdPaLT'8!-iE9ViMCM&MCmkU&LV&Y2#$1"2Tf$m-&5jBVMP$jKh1NN3VafSi+H +C6#He`a*9"d&j,2%'JJ+PpHrm2r6*KYqr[)G52Gf'3#LZQb*3pM[CiEX%'2`J*$U +4QibATXHSHZ0ki1ccr+M2+*B,LaHTV4[-5'hp!NLG`1XAr-QX1cZ3!#R2e'4@CZj +N[l$+Ijh@3hKGL1KN-M5QiMJ5(RA)8+&0UmB8([4*$[I,+!Zc!VFQL"8TMLN8Z+4 +maGj5MjcQkjdY%FG`Ip'i%p'jY9aH$S3N4LMM*84Nd[bcbfD1pHR#)8BBaUSM)'` +FbZ%#%4MB"3'"fP,F5L5NXrmPl"Qpk[la5PS!MqE-$2H2M4D0ejp`&N)derYdY[# +K`S8&XGCCHkJ)Vh8k[-kFf9PH1jKAA"k(%,lU&C5)EVGmp[!!R!L`13KX$""Qm*G +l!C&pB(DJql+'ri*YAQD1QjIk+TFUVd*@hNlRJE,LR%"U($*I50"UYkXFfqAq$-! +FF`5BV#ij2ar4[ca8)I-(heL!S)iUKicrEB4+[8Lkpi-65%)h1DY&KK2eU%10!!K +3P#V5pMC"@I`65RrG(Z*$!3FlJM6m4G%i8q844Z3J&&TI"B9H[[`%Y"++ZPb)jH+ +,MSch*1hXb0pH8[(4$S8*'K'@R!kH$"LX+iE))#Z&'elc0D8S&BK$Sh)AXLc@F*H +CX,fTZ%I48GDcMYEA0Si%&`dq%pJ(j8+2"U$kFX363kHHT%TNCGSa5B,-'5eD-*N +Ljc2E),3mbMl2dkF'&EEh%AS-P3dTNSG%&Y'e+$LFUVGpmR&PSC5k,K,)KZEbG9` +IQSY)FQ(i2QG(ce4Ma"NL6bPhjfDY$XVES-iJl#F)`0pkMVZiK0F39r&!T`rS5K[ +6ab9CpFJ$Aek#LrJ+!((6DaV(jBi"N!#L8l9ZpKq$i*!!P#m+FF%&dqm'K&!G3d! +S8Q$q*eJieE`M#"!pJ[5kJ(!SQ2jA6-l&!dLUXB9hdZ1H0,a&hi%d9i'BdI*(XF' +`0%X`YMEB80%YlM(4dSZI6%"eUR+PGRJI$3q%)i0aPr%TLK%fF`3(`N%PlVSeaM@ +JbG#YNc`DN!$`'5fm)Ljd$"G5"E8YkTmhJZZKqp8MZ'VEAYi*C*VG&31i9SeP$lY +L%5T4L`2A5q$R8+#A(L`faPLabA&A)G+Cl)(@p(+[@dB5T"qA-p#bVM[S)mEDBlU +V(*2l,`KMDGdmS(Fe4$cDCXF)ZZI)&UlGhN[EM"Hf'8+3!%YAH)iYES-)Upb'@!Q +h4S(mrTYiR&J*+-b""c1SZ$)'9c`+NNNR@MKNY)L1Ha-*DhViS2Ce22R"YDrlkC' +l63"+$Cp)Aq@$A-5VP,[`+Z)DAJ%qP(k'(DeTMJ0,[32YQlJ,2aTqDSI8KKDS6&Q +iF9@9P+PF,$#&3J(8iaBIALSPhPK4HVKd(&[0%IEM3r,mMkhLm!!9S6c[hm4eK$c +K-`j"m1-b)bBA,L20pB&0h%H6U+LB9ZkV-0eIC9SHM+)"HEH5#fRHJV!4#&%3T*6 +YLfU5!fIqHG66C8NqF1BhSi%6B,"Ch-5!5HRX'8a*Mem+h+&'%L0E"N13!-hmX"i +9D5JIhG128#E0XalrlS$c4kSK8IFY4l'@D**3YJd0%2m6ck1*q[hlliiDhXB+9&Y +(l'BA#BYHaqABX3l$BABXLKQ1J9K3I15F-@efciSpeVi-$CrAG(UCa-8)Mpar+Tq +p&+0`9K6PG5M+NY"&&k!'"(ii*HRaX`j)ZBkTVLCkC%XJ42BP,ZE&(i64$+e"D)K +L)B@U'1GHR8&BeQCkI"m1Rc(kUXXXN!#DYa`XHZ0e&U4+CL!XbFL,0*33ZV%9%cE +mq$$TNbFTmCGfN!#MGX#(B'j"4pFaTdN843NrA%DFfb*MhN0,0%jmHH6R3%))f'C +c%F8EDNFS45Ki%1L5XI2$!FIfbpZ[e%KUQ(HrmL!DRN!l'6(-+"JZ3%&8&)DHD5k +&J05@j(i&`5IN81&!1&M0%hMSpQQ%2$i0Y&1*%3[UAf`Le,@S$4+a%`YE#X@)#N8 +"`UZdP)TH&m%iITU3!+Hp4K8bVTSbe4*-laqJbI!NdJaUkELTcS1MGVHBC29P3f1 +"K2@@iIl!AF0M0V$ijl,!)YR`3!3'S0V+[9hIbhP8Pe3)BS3ler%Cei2H,YrcRp' +erUkJXqeKRhhd5ChYFmG*"'$1TX,1eNZ5A@+aZ8UUYcCPh2"[MJlh&e6YFT@C0dU +fZQ6Ji59apBDfe88!*-8!!a+8JR!9@LM0JmD-[6mbK'D+5JqJ`m6bG("+pr'Sk9V +LSVkF6jNbl11imk2DC$1QE)SZm5K5hiJ@-`m%'6aH4`dQCTameB*r8),32c*KV2p +I1bhXRi-3Sq)1IGGd8+rMVjVQ9I1!cE"@1Q3KdPfRP@P[RBhP"ml')PNm$ILUDEX +aBiakPf#$9XX[MpY85h*N"Fm'eLFZ1DrX`&#k1"c0EU6RTmbXl#J11)r,$'!pETj +Ql&'@dNqBQTFYYf`0+"kVqBJb58`mkah#YKhTl[aa#QG'L*l$iU$NYp84d8V(Ej` +-9AU$qB+[4m`KD@fK5L3+YK3LMY1jY3V6XLU1"kXirZ"eb1%K"D5fe3BNPB3U@5! +48eF)kUaPbYB"fGb"fNN@2'SQd826K3%+H"$6'LkVh2AiHUmlEm9MXrVeA8JSa"K +,@899UHfPa2mrVeP)`BmC1jVKTH-9Jl)rTDPXK8"NJ@F,6HkYmMm6B%)NLVF2reB +R+#6aMh@-b!`39a*Q)XQFY+cVpjR)0%4-K-qNLqRkG56B)%J6!U@"-#hV"'F"2iG +-qS,4hrarr1Z3!#"%,`01&8l*de@r0*@X%Q4E+kiMp-+0a5Q!8,'m0V-#RiRk(Nm +#+38hQF661f(%5+BTl14h"C8[#LUc#LU&!mi89#i!PHP"f&6Z"JmZDhFH53++8@) +T9mFpAHa3EXmdZYrRm+L0bl#ZEEf0Ii0LR(cEkM@4HUr[6GNJY>iXeZ6ijR,69 +!lkaP0bSC5ah3ZaRENNPM3I`B`d[[Zl"3j0ES1"LX*LS+'G-er#-L"kjNY$h(J`J +*am,TD35Vq#ER-6&-PlIj[RXKY!@EXR4&45UmM)`-#,19k"r9R!@b8L(j9YLqPcH +cc`&k,F&Z80FX)`K8b+Gr[ZVkp2QGhlErq9,lTDPrrprArAKY9rZPMbL)m*AX5r[ +HQ[b(U@8LFLCFr20rQ#Iq1r&CmIQ1b4HHljempk%A"KkrmrK6aajqq1'9abErDFh +IhHPippcSQ[Fq%6Hqp0'6B[kP6H,mPci5%aF[,IMjZcpq6r`RmIN6hcKr4bckdQr +[L2r`hX8VDrS"!!!pS8&%3e)$!'PF%&80G%B4!$(MIN9rhlCm'FXD4KKaaM6jR(0 +Gmlc,T*T5M-QbK$"'$NP(T"&cGHA!PQ)5GL-h*q@A5lFm,k"5$d9UEDqh&cNH'p# +N)IC36XVK4%b9)[9'Dc&3DUN(+FD)h%JaT5(Iqqr[qrDmLGMM2ErR2aZN*bR+K5! +)RN!fp6Gi8-%kFrk0,S-#k-XI3K([lFmCmKpZI,)pk-L!S06IEI1+rRm-i&-9I8$ +BcK8R9r`JEK@2plmZCSV("9@2T-Eb19YKLZNJGFh8GLAeq9M3m@Vhp2U)D*beD83 +V$$5qI5k,M*m)6"R1&Bp$!5B!`bSb"BaMH)MN2Q,pJX9Yf4PTBRKI*YM1-@H9*Gl +F`9@E5#Uq*clQ%HFe''`ka@eF&T-@If`E%)6Ui@V!h25(5Q'DE6Pe%RGQm0"9Qcp +ih"2mfA+,aZQh*0"G8KcQNECY2()b%MaZEVUPdTTT6P[V+Vi,,mHFk0D5r,6EFBl +,KaZr9L(1fT'&E*q8l80f$F[ffA%X2%6X9AL9VUT3A+Ec#"UX(2KB@I9TGb*YIL8 +8[)eIUir23U%DY[r0rMITGEeC)ABB%dR9+3a@+FjD[$3Fe$9pqPFdi$bmQMMfdHJ +JQ"!mZSZVQNeFr@&%%Y65HZ@CQ-k0!fdCeZ+f$+H@c&@d$8i(AKHE4FBl0d'0h2B +MC(BL)G8-1pUb45q!SXU`X)l+',FhYQ9ldM25L1$5NNhBUr5N-4c4Y$42BFS"4lS +-",%X"jdHB*df4AFUU$&jqp"S6S4l'rjGR,e*fhD*C9B9b,cQc,%!(8%&jiFD)3S +BKm,lX+d5L#C1216llE6*JEBI3@bjjX3",,kKJEB$1%*RIcFG#*RCPY-&!+rc2`i +18GYYaN$CB2+I)8,eGk2jGMX13XTG3`+!RT'T1&8C+NiYjfFUHhRd9NMaLm6P``& +4aC'L1%QUekc69Z-M%IR`9k(#GZ)r`FGj%$c+%QjhGRc6DEXYJhZ-H$aZkm"M()m +M0K'2NhMmCeXl(U[`H0L@a+-AMpff5!D3!'2d`8c!NJ##J(+M'S3kBZR)d-5,fii +%Md2jeJ1dTK'VfPii'BNlGp@'e`UCYQS#a2MrC%M#DqTSNNb'$1N$h65a6MpLRDl +1d)$m4k3Z!hpIbrff42-jhQ6cVGr'[6Crh1P*4Jh`M&KZN8f$6"C3CK1E,lcm&J3 +)lXHYLRZr#+DI0ddpc"-3GpU0ShblZ1Elmj48ijTd(KVQl@1MA2QN9r4EAEZHp,C +,4r(Cak8KPdDM1h0ehJ'a1%RR0Y9RD4rU8(e$`j%,KaY[pF4j9lI&rd52kX2,*[D +bk9%[Qr#bLVfXHY6,+V&$!)`%6c,`X)h(1p3c&Xe3f0!i*M6Z9FqBMUJ8S3&62h% +I%%N4(TT31F2SH$@lRD0+V,,*6Vb`H&&G&cNU2E)iULJ9YaT-$J!pUY"*ZBh01A* +j(ch-a,J@5lC3hmK24PiShC)HVcMIqT)pX5rEQ3ha-K`i[m0PUij&0Z5)rRdj5%j +0i[cqPq`hK%pEU6PFjK)MD-jHd96KdeBD-aJpLU**#h"*10,$Vc%9flAN-*rPNDj +ZU02ri1(K$N*mP2cZ5B(ZHi*Z(#D1"0$m26$ZBmNM2E@%9LR,kPUSm`lc,"kdH2N +fk&#i+VGI6BDjD+R#c@K*i[DB4FEY@GX%QQMe63cC0"'`T-TQ8NYIVFbdKEaKRQ@ +VBKR$A%@@6&PX#*%kX)2BY""!TL)GL-brS5Y%r,E2H)"%&+&E9m('*D3d#hQNKL@ +QKPSd0!lc)"PK$LQ%%-jI%ek*H*@i@UL&8E+G-VL,CAL3!#'EYHjYUZbpLU2*CLp +pJ#5Ud0JXkM1%aJR@Q%LPiY02RdpmaUqV2Yc'e#EF9UY9Z)fSlEKeUH0`TC!!e5b +Jf$mMBeSpJeZrHKJhMfUpjc0)-UG`ke9(FE1TdlLG9,@i1G8a01T8Pq!@9h@iGDM +Ad9QD5XEb8ECXj`T$8$0[8qhXmc1(eUl9IqC$d@ci+0BrkRlUF*p6(HaML"ipR+p +N"k1"l'bJ6[@kF!"TZ$%)"R'(eP&jMjBG-+CUNG8KCGQ40DMf(U@YG),i4PJ1PD0 +DG3qkkSYi,&Smc%91dXBLZBQV%DiF1UU0j,21XbcMM1aH6#q1&([NSbNm%LR'Cfl +N-l1j)ZF*ED4%)*M&S5HC66e$#b*dTCk5ZTU8&S8kqdapAqK-I4qIhe!rTFiUYN9 +12U&9jjlS$4HLQj*`"Qk"F$SCrI3)iXq5!&k9`Q'@rUfp99QZ'k#+@8KNU3%Nq(& +liQBN3'Ahe!,PcK@K-8)dXM(Xi9QVR*GX'U%5re1PMLT`fA`",cC$k%e9eL+jqQT +DH4-%k"eXm[l9h-DcVN'!VJ9iEa#k(GLM,#!eTXb9dT[*B,fB"'iFC8X-JVESKjK +HfTCjeLH'Eq4!@#T089PRNG8N@Lp3hS4M`i,j$r-!%P3Jj[hSG8a[`l"XD!a9qNQ +VdZEFKB'Ed260j![rL$q,I!!S3dje$[-dLhIeD!@FAZ3&$%cm%%deq%RJ*iNIHRd +VAPHJmQfhf)%-fj%NMC3N0AI5TlN#4e`ka"d!#3MU`e`ZV+K`$h'c%HbA$cp0-!X +`T+ZT4p)0h2`C'29IfR&cd)qKXfckr(rSl%fm&X'HrT)kCFIm%ilC)8b$NQ4TLFc +-rlr9[-hp!)Xd)-E2Z&H9FC1"(R(M%3#CMbAF*R8FYbU@V0YCXKj(XLj4GM$JQH" +q3`8N##C3k-kcM!i!S*3'Xp,f0JrBI!Cdk!PKBJ0,q('@m$XB'1[88efAjbkEQfT +FRlJmqAJ4B+rMl$8UXk18X2Ta'e!r2FSQi$DN[[qGFfUrmMG,1bf`ZDRLLUMYU98 +p@#bGmVH&1MadU2f&64AZZ(B0+H`AeVcqbH[*$["HTdj3S[#VTj`!E9[F+GX#4MK +d15VE-SY$"'3'3,*aIfN-B!4`@@U%@`1KjG+98-!Xlqqf0&'@k"9(S*aC[P!hKXm +e(p)JV0X!ZTf!dGCe1QqA+`aG)X''N@!,c@SJZ30LmG%j9@6XVAMdCDq+c`$l$0# +R*b'1p&fqT`Y0K)G!ImkRQD,r"TBHL6RS2+F',&""'cY8X@+E'N4QM(d'`$!Lmfj +AI!UQX,r8Z0Gmq)QE[CT!SQN1q#qf+M[`DQ1,kb`"be*8Q%9J16F#9*VcYAKX[Y' +UE)aV3F)rdrE@I#L@hhY1R@$E&,(05@GQ5Cj0KMFC0NQ,AiR&Pj*ZDD*UIL856rX +qFTPD`@kPG)[B26ab!aZ')&1*UL6*4"UE&j0`*%LH8Y9&LjA-"&QZRal2-kM$-#L +)PF5K&h`&Ni%+PLUP%SQ6iNK2YD+)iB@kICIM)mkVKL3H6Q)lmfcMV(U$XG@5%#U +*`Z[-mDA8)jZ$p%"SBbe,3P#i,2A)"pEJF"9M%"Z3!'`M5*`4+"D@8V*0l&f,6kU +3!!e*-0+3!+'DLk!Q`#!3IN*5`N(9E*(F15$HB+G(Hp4"J,3I`+`M4a[k4iB''G1 +'$(CF$UJ`("K1BdJb`BJ(YaLVC!BMZC4B)ZFSX83qSfSTNSrEXj(LpSl)13X*ZYG +lDL1&f#S)3JNMNRq#UdP+'T&mX-Z4"eX1[Tf@J3(h*#f#f8r%-5f&ZT'@`Z0M,jE +55a#q0Rc0l&qS`r4Y$pVa$GDaU1pBc01a6HTBc01aL)kYMqT@CYfZCTdfk6YYbY0 +TPG4Tdk-lCBJpj%3h&K+8fpRL*Jmh0kf8P&[epm,"L5d''%&8m3'JK)MB%5kXZ%) +90X6f`jC*X505BUKb28h46G3j3L&aFM%&D0YbB5Y9E4UJV8lQ1S-UKMlQ9a*`!,' +q&q+SU*C69H`iTmS3!CI2!'d0PH2a23MZ6NGPR"2`,EK)AH'3!1dfcAUGmTkPk5L +DU*e8C5FJ#P-#iXTCQBbAA)'+GcR%hba+&NGl`,aL!,#r1Q8jZR,!m3cXVmdlP)A +2eIhG3Y8X9FFPbPST#IBDdk+8GhH5mS#BdB,L!93'LkMU"V&+,2e8d8m"!)&1UB, +YL"4EQL68828Ua(j21b%--iH3!(31#d31(kAd)3aZ)#X5HLNT5S3Pa5"c)2ZFjBc +3[HSaG+qqrf$GUrfQlY9q3rIU(0#S0@rh"EEIUppmf+4F81`N1%&4aG`Ub'%)jQ5 +06XG$'3T8,V'KY"RrN!"mZ2Pr9F8GBMN@b@I4%-[CFcFaR)%DBML[`m!005-2"q& +ffM5r-Ul&XHRi[Um6`S`$QHb')l'F!9%PXKPUlX)T`@Kb`'c'FBq`!ei6dbSZiI- ++ATjLT)&1bkcqV",,X)+!#$ml-Y5N$N,($6!e1Ql%Jq5Q"93dLDc(T&I2&RJ&*1A +-K-K[VUJMd-3JGp)(+8ha8if-GmA1YJCqjS3IJlb,T@Kad!qa0MMSe(D"[5RI&Xh +)i!%Qf2*23*,380U3!%r)+"dIiibTd8M#EA,)4qVPC5q2mERZ4b9jVYjT"aX0j2A +ZPcrmkejdmLN5EK"+NL`L2)64f"K(J[f8*3j5QNb#(DQ9+Q,1ek%D&I&3mfVhM"r +6q`ihPVBCCi9U&4ZlM'4aQG5IF3FTSmCQqlTY@L5BbfGAda5SRe5!6V$L%LRe5N[ +'CQd"UD[,3eH4pCHa@80$G%AGPd!Gff1chBcU@l&ERX031X8H296XK`d91qC3QJF +G#P[(pPaBPLlmM1$(JCpHU%U-iR&5h3lX8lUJL#c(K'Y33MUJ'Q`A4pLV2Q8%Vj, +5Uej'@"dp+#2iFH#RLmJmj*XP93)$mJAe$-4MU(L2VqJJ05-kkf"Nec$crZ[i%#d +KI)MLC96EjDcTie,6ad%D%BPQmR$c!bp6FJ%DpJN*L+'jfdK03BR2J(J%G4JC$A! +m$DNUk@HSJjmd+#[JlGJ(T+PP,%`I!bl4PU4AP,A!fY8GVH"L+JC#C&#"NAS$L%3 +[r#-T`Q5K$QDBFBYR'+Q$kM016UT+K[LpJJ#kb"9$45rk65UD",H-8)B+9dlEDSE +d#b*kaA"dkS,,-aaUa#`X,G`iIBXFPBYFY('29hJG0B!ASN49Y0$AlllEYFJYL9b +%3+EaFaJr(NqKP(KbT#1G0JFAZ@J6$epNQl#b#Qf%)HCc*%3[FRQQmdc5p@Gk1[* +NMTY&00ANbIDEQaDja(#d#TB83pG(e6&aI[!(2'&8pddaC9T)H,3YIGc1%`A95&L +#T-G[IFPk4E2IiJdP,2jIqLdV%`Q(UbVLF&r8'Y@B56Q9CTS%"*`3*ZkVXb4$Q+c +"j2845c@E[0m`ZF1J@&T)cV3CbU[G%qYpci9Qi4%1KfqJVS@Xm!(FL9JeX!@2cb" +lKpQld,1D@l`cDFrqa1IaA!I#9)(@S8k$Z)$U$NZhX1'Q@IrqRrLH3k+-bNC5m6@ +-Mmd+,`Q8$5khbLB$qme3YF#!Pp&d+0Y+P$*#600N$%#fKkFekep9iY@fD5MRdei +V@&9c(e`j-'$&0Nk9A5SaeRl140T8-FaBk9DP%Xbd6UQmN8R9)BjCHVKjGi6BRCL +$a!)!4P*3`dr2BYKH#!$,P39#j6J0p*Yf2APKhrbqae$9A)b2(EaH1I2[rF"p +HKI3XCa-TiTjJ6#E%9$qTrp81r1M`Fad!9b8CJ4+HFA-l#J4if5hT5@*5`[$*4,- +ULHAf%cT)B`C(+U$KkiTr$2IZ#k1cj-*2bbF`aNAa-5iXCV*(8F$!FA@$-%(mH1H +(YXJ"Z1KYrBMFf[HG1'LKJKDXSemBbG6a'Y!2+Ni$FSc0RMdSlVXR&iPZ8Ych4"H ++1H4L-b'cEchB+'6PFKqI-#I@Zr*AJl@FP&6bmZP"[8SqL2mQr,H$L@k#5M,#*ch +dN!#'"eR)X2m0b!VSEhX)DXV*Z@j2b(i15TGcR"lDmD2"cb4-#K0`AIqh"hq0K`$ +-6hbU&NJET+Le$Bhqmr%62a)f59Y%pG+",FB0'a4R-@4!h!I"-%JSK3F@kQJ3hN% +D52XjP3U,M0S,rq[V"3J94#FLT`*6UUQV%B!DrM43NF@S%db2ibI)52f0Jcd&ZL! +dhiXZa1JZ-$9)8fR++`GrP&pJ5MY9$!8DakQa-mhLai,qH8EHqK(%T)rL)e!&R35 +i*"c&RkF5b(beaURp1P3@)AiJNH)Rm2&-'Y1XZpUra$NTHSY*QI[(Xj,J-ir$11L +PSL"!6cAii*&H4r'1"*Jq$6SljG4fG32`M8Z'q@N`JkIM`r`j[$b0)8r5F*&0p'P +q@9$M31KH!+AjbBi`XM+KaMP*VPD81!eUR-MZDDUH!K"U0Ur(9)YhQV'4kThkT'3 +&1lH2*DBqPTMQ1#PJqj&)6P)LHDMJX,hIX#5dX&*b[%j*%ZcP[X*%T4YU[G-ScT+ +FHQ$(B8FA*5,k!F(KV'm,d5X3G8("&jCNT)-rc995lAJQa*'ZbkCN)UJ`N!"d4[S +THm,FG1mfRQ6$L@"Q4b894e"kL+-)Al,I"BC*akUh)%4c(6k[XmmiUqb#90RpfY! +0+Daed[3Bh#-J+Sf-'KNBpQAH%MfBpaCdKTrV6'Qkcd,Uj%N#IKLpj+-['i2@(KM +kN3$)V0D@8e`GpeXc(4mFZj0QC*q8TdQ*%RpLPi5Q*JP0-F-[98[NM-J@@#ARf2C +SCQ[Gj[jZ!C&,BPZC*,C"a306,FcHaNY3EIh@*2#NRM%)2"QEQ6M3"m6T`%r[emQ +)2ShZN!!B(5@TCkM#J*!!1-L1!H')#85#B*4%Je24JY'6Si*J90$8jrK9NTaY@'' +,RJGfc*'6l"+0Q,D[$LBD(4alN9!5S8"NTc[LCX8qRKhRMXr&b$UA8!cN46Ll#me +YGbr*'IP*`LK9G@@SkSaNl)-TCr`,be1i-mG'"QkZ2U@[eYkP$DbH4E%k-SUrLjG +[J#a9&ZpkN!$iAlPUe[RMIR(dl#ZLL1**bjp[$&aK"ZYVjN3PN6K&(-dS,["bfUb +b9f2LD1'hLk0I"3f&r&!9,Vpa3hBT#JG'5YDK@ZGRjHE-r%JmE5JX1%&3CEKk9[6 +e`F$Qh'@*2*8TqR"mGDdVIl2c,9+)6X*0`ZD-CaQQN!$6K-9R-'BAR)*(%8fc6*d +6DVC)PHjU9,Vm%kGXD@,X84R!C+,KRjLVa!p-5[1S#Mpe`!V9KK'UUY,eQ5IpB&K +0LSraSI)K344CJ+T4r!KS#CdX*M3)PEJILc#[`&#L006MAeMZ5@#bRib(B-4fXq+ +--'SHZcP8`'!",CS#J2fZ!0LN-NM@4i%"FrF"kd`1A3Q`c&9rhI[P$bRKBG([%P` +8b6(iJ(Uiq5FHJ"fUE'G253MXk#@JicKF*jTrhKIB%lM5h`f8hdk#,kEZ05K6dVm +h$bkSR['mEJ)KR["6%ih,#*G0L$[c4'q&L`TcL0llbHfQM)Vp3GJT3e(!(LUNLFT +&B#pJc*J&@rRcjmBTbILFD6#DqQe8S,1Ff!TPeH(Qc6[L8+*3KQ(4!Ei(a#4V!1I +qc3YMe#"CS-%TG0@1lZZ(bP%3!)i&6bE)`CL8Cka)BLS984Z5b9e%1XKQjUTF,48 +dVDIUm'[V`DKY!)VC!+F@()[IQ3i(%-80pb$YGkc+[3Fia-FDUB-D#+D,Q5VTAL! +R6Ni@kd&`CJJ@$kMT)2AC%"``Dm61K&(,fkU)r0DhV,hVHiUV-8J03f-Si,Uj(5U +M0)XRR3H2Sr$HiV0'Cj8YD)4bR3U#AA5*+LSH&B*&C+&1NmSVmH1bp[6e3N4(GfY +l5bU`R2h'RTLA+UIIjG##LRZ#A5cKD-AM!DG)DX3aKPa*`'q(DC&!)+LIe&9JNNr +XP#C"F3(@dNXU[0qCD9(`JDVjGbIKGY(mmpTS9K*N"%"#KC-i`JN-@D9EK#5#3R+ +E0e$"8`MP4FlHNNQ3!)C3%Brd%3"ZZ3YX4j8%JRC#PZf*q4q)B3N)IHE[9@B5LqH +Cb!Z'P%f0D"+F4([MAR+)l3MIredim&AMCc[Bpb*,L$RpB0&3B!m-iCB0Q&K%`%F +JCZ`P!QcT1JE)V6AfLS`G#KaIU-[!iMKlcdk2qKh[LK#f9iFG[fPfjFI"M&EDa#3 +6mQ`K,"5Ca994[P'h$dCaqrLqAQX2@kLHp6dP1da![1DCB`"a,db!5D&BbjU0C!+ +NM+J'`ACXBIi(PV&N54D+!9Pd$(#6-i4DS'CidVHD%P@6V4fN9KKC0LQZQe1S-9` +&9a%jS"l)Y%hQRHM8XSQFjhLXM'JM,0'X)[)-P8FPQR93@1KB!BN03LG)0'dGXaB +B0'bGE-N0!l[e!kI!hA-a@r,6Q&arZ,RQ+@(*`FJ+!1H%3FK*6SF!Z@N'TMi'TMG +Bd8fD'U2PTD@UH5h2j#4E)LHTBMf4G!*VTRLYf8(N&8#hCUd*G'Zf%HMqcQMd4`X +&F*CMKFd1F&5Qfb)AT1TdR,CYraY9mFrBPc#e'SbeIVcLmA14#`#B*Lap'ZmlbE* +j,E)kU$R8rHJ'c0miR%QkRR"%,JM,Z'4@k)"A(P"6e+%1jQb5(LIe38QmJhXmZ3C +&KPi0%miVE04@,"'8-*dNTU$"1GC0[h"!Qj%Q32h4"q9-)93)ZQ8H`G3)B4ZXDY( +'LYCPEbjb1AYYmYTY8$LqJ8F43me*ar&!%*jcTN'!$3PE3F*X3PAP%c(3LXIYf"J +4,aRPp$E"UU'#M#51DdHh[81qKTZB8#9pNVK,$$`aP'!2XdhX*&ApihU'FRlh9#k +5Zm[!YLbC"A&eb9j&DiNp2ajcQ-)+2%McN48hB@XD,$`UhkdA#EhIkU+PB-K@cqL +Bh2H8#`B`L0l+kKqfPA$89YDLDPJ"0r[AEMl(l3STDYX'c[&HT3`#a!AcqB@HJPX +0XDe+"HB,E!!ER55A4P+C3Qc3[a`Dq,afkpX-P$9i)5bAHC)@&ZcmeND"83HE*G2 +Q2,6&[aBm905"I!Xp-fQdr@3"jd@Q#+4PVh"UNEM)b0BC(bLEL`f8HBDYCA2$-,k +8H35K"+LMQ9phDZF!+X-pH0PEjN%)MZ+b1CMbEM0(`(clm#)I,mcN*U&ApkmF#P- +A8P1I8#b""2cpFa!C9X+0NiaJUBE1$K'kUDFI0&N0jFXUQ"06!Hb6l)!66L!!5rY +`FGR*XS1ijCDP$k1EXT-B20G8h"[*L3USHFQF#35PqI[IRNbfKCL+AYljfa1Vc'V +XBj0+P!KK1Z3K'jJ'N!!PX8NF+$Zjmb*ZZ6ZhF8&9M"H(1TNkP*%Nm4%G6Dm1V@@ +Gd5BTl-$GT+aKbNP9b)T`kD%C$lA#4jL-2l98MF!&bi8T@2b&ZKQiNNRG8*%Vd63 +%&C3PK4fB!Bh8j"bjM!Z-#X[iXc4-Ap3`VR389Gf&SG$GZ#H4U'VlNT%6Fcq2K*3 +HaVS6!eGhBN28i-'%IklE9#"@F08,J9d$-'56'`&RKBT*GIRm")RZ31k%X*eik@F +1"[kT8UJb(B5fK3N,GBjd2e`qkd1NX!EB*H"Qjb0N2ANPlL#N0Rbml3T%ipN#VY% +k+P6'bHAdbZ(QleJ0,f"kZ`*&)Ld0HcATQ50Re#X&&aIS0CH'$&kK4k$iUX105Ve +SI5c&XZYaD*RTmHNI[rd5"(8mIY5mZ3KX("i6erXbZ!D(5TMB2!&i@E%DEm&K5-L +RVZY&!Y,qlV18Z2#*41c8,b"6@a*S3Ra2MS)JjTPiAmI9@0VZbr1`r%Ej9b43EkU +SDhEpUpm+pa1a$eAPTRY[#)S95iDiahV*k,If"[UZhZ#KC#rAfNiGi1Pmc`+P-YK +("4e!k1Y,aXR"#kEdkdYZ1KLkIfZfLfAImG-V,MF9!B(MrI93+-F9cqjrhEUV[aI +K2K)R+NNp+[C"l8,XGhdkN!#0T-jj+dV`@fYJ4%6V3*Hb!$HS,'!SR"'YJiRGEqa +e)6M)N[bN88CBMb8NcRTml#1G2T!!()V,8LJC&Dd#dPbD`J(qDb()NAZ2,fl&"XM +*m%[k$A`TDJ0IdQp!aJDq4"Z!QUKHc1j[9HT4K'9TIbH+8c8T5dqXa9E@LPCT+cS +bSj&SfY8GSb%JmSLhMAS&YK[GJ9fi`aAUMe@*[D*ae,[ZL[!UKBqUqefjRhC8LE[ +SK9hVd!U[N!"p5PFPlU&X8aJ(C,q2Ba6eBbJFa+m8REJ446Lik"m+N6-Q4*VN383 +bL8%0HVA0dHrJUb2@ABlId'GrIcmIMI4e3Zc%Cfjr,Tq1R0RMH)mqdr[Kla6TKbX +G!SNJBelr2'5FdM,f,aA"J[M90Qpr#*Pc3QCpG1Cc3ZBU8fDA23N63M&A-Zc2LN$ +CSC943"ULBa+3!1X5F351k)L"m843&6(FkDUm&JM[U-Yf$AaIUEll+l,lPR2[T$r +M&V25lpMH%-Ykq[)99`hFEY#`,Z$INBQ'h`!akZrHb[fbHrYl2cZcf5h+KCUR'J, +b`53YEAcUPM+a("-b!q8lFYJ%Ve+'#9lC(460[p[L&Y05$P8h$+BGh(prkfAAjYG +&'Fecd2`DDjj8+Y!m+EXrrlXl&babLq%$[YU'M[$"p[XEhh*YJCQhda8SVh3(dU3 +*#@8c*L4Npjp5$[fLaLhk-qlBh4$h2rhk0GHLZJ*E42JXC6XDDf6hRN[[GYcbZ9K +q4,1J39H1SrrL$GFcQ@)@ffL@Y0%3#L*Yj5(Ch@$X[-SfHSKYG,qddIId'lh%*N` +UPCJ`+EZAGAj"C4[eXBff4fhdNRkMSV)Ac8ACr3hA4c@d88Eb-#2j05)jfkCIDKj +8DY!m+,YIllhe&l4!M1KC!Y(KcT5k4JSY`$D-"iRi-@8$*XCNYk+m[j0Yq4$EmRk +fCCU8aFLIY3-IE-UJXK*6"QAh5h1hE+4YX`@3!+8&Z%3,8%QK'G+NE4Z96CKJP0f +IhGJI11B#A0)[`'h+2$5q$56kk(qrm'[Tb'`VH"!f%jYDmd%Xf3NhD5a&8PU+*FT +GQ,K%GVrfSjihf2B2XHdEPQ+[VVccNTK&La&-lXKQNdD9GCJd+V[Rrp,lf$'@Sac +E6K*j8E5SARB[RAML0&Z'QfJC(KD@3@B,PX-DVC,GPGSAY@Xq&j1&Yf2ij-(c0(a +JkYGP%JLIPlTE+E[Mcjhk2L0h&50h%b2h5faCi3L1SqDih13m),[Z@r[HYXdZN!! +jbFLXNFKmRK(Z2"%1A@kAhBZ'%[q$NIFQ)Zr$!RN&J!h68U$C"YNGkGAXqrARiRP +fa22#%BQNE0NbX@'K`h@bZqEjh@j'bLT'bLCT-hYTbFKj6$aIQFN1Z9PfrHVAAjf +ha385*KN*0Bb%,iP*D6[*bQZXDBhXHZbR2pj0!N3"-TjR3(PH)Z4GX[Z$,fBYbNY +)KMLL8!'D9XMZ9ArijLAD%#2NHBQ3!+m,b51+N!"lCGHZ8jS(MN()FLR4#4ZI*lZ +hrXYpDIm*)FYNGqV6reC2#mL1@+jIDJ-K$3Y6+EXYCb0VL*!!+98J$K&5)%jB)Si +XNA'6l2TZamKE4-Ed*)K$C(a651TrKkBlhF)b+i[rD'G)Ej+3!0jphm8QFX5d[hF +&C0CNVqbqp,qAZYN5(f9,A#i4lcGLqHpG!6pV"J!Xr[rI$P$LT@T1*c[ff2F``Q8 +&bPpd"G*B-bc%X[ZA*"NacK-a$YjqrpXJab8ar!mJ,fZ%K2(1aYTH5MlTNh6Xqk3 ++i@HZ3"CVXPPf(hrQ[fpPa$V+L&@Z6aERFI!`D`C#,IhpF3m4LSidQ1ASY(Fb3XQ +"mbmD$Ji!h[J2Qmb-!1FCdVrGJ26e4-)5a[l[NAICX5ITf2G*L1Eh"L*9bqlDjlq +eQ)(083Bfj3EdrM2$jJ&DGceYV$13!#JJ1kEX8qcBliRRrm&`E#4jrjA[T$(NFCk +"rZh5mJV(&NK3)l[Ah&Aa4iBmL%MKqblR@GK0XR[hlrjk2dYZ4ePb+cG9PIV&4D+ +FACK56`GRbhBqcl)*4!*`PVejjJ4$c1FCU0pZ!R9ARA3S%'(9$`+pM%cM4+B(p)$ +ZbT5)J%ATk9#qc*DZR5fG,aTG"*,C5-J[-M@dl(Vl`Z0rH`B*VR!rfm#K!ZML2*S +Q@G2YXL[eK49rC-LLR*(XU!PCZ+kC#(,Lr8mrB#3E*j)pS%F8VKb*(&LLIdVZ[FM +34$Y$%ljS0"%Sak"q0ZJ'Q#bHA[AIIPf*"Gr2&[b3!!P0Z#kC3,NZjhrFb`KAcJK +hp"L%3`)lfh#NqiF5$JY90,KlA9l#'G!$)iG!Z&@bkpr8(Jd4,Q8r3`q(61K"6`k +!p'([rZGC)LYRU1'SK"UL#B+%GZZq)pNXFBa6iRK!3!ib1liqiIrGkY*l#)3bfR( +mmcMDff`$rUJ0!)3kEVRlpd3+4M"C)PJQ(4m%#a[!qZ&V[ri+NB)YT9pDbNZrZr( +c"Zlr532hhY,!Na!d$5*aTB'9b1$Q3a$fUlDlGlL-B@X2Q),+apaqRKJ[2&6TIXa +e'lIf*(XJV0DNm`-SA`,a@L@A0e+D&akkk,VE[HZ"XNfl5LG4$%piR12Le3eA#Jq +0q4dI(2cQACPPEZSdD"cNplq9i`TQQ`qPP'r1h1X5MIPm`j9JH#klc'eirG1hkLk +D$qR#CblGL3BTD($34edB'MMXGMXe#B5lF1$B9-!ib6Hm&!aEXmYF8L1h1I66EA9 +r0Xm8(MTiRLB(VYlh8REE)0rK#VS,$`A$I4J`i!JmQmm0,hlk8ZC&0'pLc4'YeI# +#%!fp#SC2dD4RpqTIBC!!VCNAqqV!`[@#%B3SAl3pLZ&J5K5"AHAMJN*&P58e!6l +iP@K()iP"[d0LLP"85(5C-PKKS4ZQ$"3AL[TdIf6kH%J6pdX6Eq3pJVMIa%iP+XA +p*TD,2Jf-'6lZ-'8rT!R5N!!*PdQ4-8XU&"KUbcE&VkDSJI$"f3eEGe`E$'qqGYN +G3e'@!fV!Mkbk$[q@ZVIF4f#DhAi&5@f5NTTiamiFmdaPcY3$(il'M8PZRJRielf +d`cAe`'p(Vl90mS$I2Z@BSSchT)b$)A5'M0q`M&KDi)iAFkL$[FL)lQ"jRJlQ54R +#p(H&kI*J@SIrChA@2FNpM)'cL@P2A3QN(CaP#1pc8FDRc$lF)craQPcrNN2P41S +pf(6Xq2aUQ&+1lpal8Sk[qGRH%i[M(dHTa"kNDH"h"CXUk43q-#B&XJ0JT8-e8MQ +3!+)q[XZLe!qN[26fMjpQUMd'FUP0#+j3IhZ*mM@ZiVDB4h$l+JrMPXVpZ#hMDEJ +9F4NhK@GPN!#$YXm6#ak(Ud%bi8GKXHrY(,G2-Q6JcIH(0,CDU%BT*"B#PA9e1c@ +fZq!3@5%GT+Qr1bVBB#dl+K3ZV#LNT2$$4Re8@,r8k@5Q&)Y[PX)N6m-dCB1LS-S +FAJZc+"9XKq0+&j`X)J)J`FLk1+RP1KL81RJ6CDSF)I+N"JSj-I*lB%*HXSP(-&# +%$A+GGGil4iB[FNY,G3idKXM`1d5U4A*-66@1TKhDPQZF6C+KHV(0k#5cccJ,T!S +bNJ(5ES%6G2Qf9jL"k+*cS,8'6PT[lF-$-V)am5C-[-iQ"Jd6KdE0hhlP&6,VB() +96DBA@iXaTFXZ6#@8QU%XY[M`F!CGF0jXfKV8h@qDqI1"1,R#PT)MdG"Shkjq8Lq +@EPdQ`[e#+4@8qi+,8AbfS2Xm1dkAi$k,B#2e&0+di1'-26!mA68Fcr6bP42j*mK +p$8-YcA0i"%IZHD#eTZFqQ0pJ$,UTTl@'('-p+GM#,)bU"pQ`6Kaj3F("d0N#G+E +CpJUj"#GEkBM+J[c3Jj!!HC!!!'AV2%m`1F#9eTU6l9D3!!a)$,FT('"r+d!B5Q@ +K'3d+a`($JLjQ#YMLME'Yhf@hQ0eUlj0!c'mIiY-5J"k%+[P-d9)brK5P0K`N4@I +$+c$UmAB-!iF@hKBq1@l&!bZi45Sc[Rm6rdGB)I"jHMGYRLB*VL"&',CSU@RBKZI +T0S3$`K5ce6L`XF04fHHD3GL#MB11bUrMXH%&(*3hj&$B8$aFKNZ&pYjL0%b(qm4 +TeXP#I$c@!)-H$[J+8l)I4'&q&S+%"E!Q&j6UKS-S-"k-Im`UQ5M$eYEA#F`BZ%q +689IeNS&48EDQ"$q'QH89#J0X)*NK#9!Q&Q3a+D1a'%eX-8ECp+b#dr@6kb8cjFU +Yha8bXC6e3`1YR5cc$6`kbC9qkeG)I+"LfhL)`%5kQafYJ`(!BMfBT(0PUKSSJVD +f(8Hi5NF)Y5S2HjTSi3-MV1!CKp1IEfXQ$$+c,$Mb+d+RC2)aKHNZ@Q8`YV3200i +K,$)mrB[E5%dHBbj*TU),f8!2#qQP-kDqB,'M`DZ5DAa-Q),`Z4RdL%)#k6d,LPC +"S9j5Y)Ub(,RU"ELM"S9P-UYGK'UHSeHQEQb6F+&*`Qd5)A54@+IRZUAQ-)"'VM- +h&5bI,5%kiI$$$C[dG-*!pC`MrAb#3!6+@pP*KLL0-fbK8#IpTNl8"BC-G*BJ8'A +'!!!U&4TRdaY,U`h(&EVlfRVQ@KJAYU9HS+(K-Ua$%[$QDIS'`PLCYMT1CL[E[)G +'Q2Z6c!%a39RlN3M9&p)Ti-NB)iBU%)-FeIA%$d842fNJ+TSN(cT*%8,q)C)dpCF +24P,qmRp'8K-S8F#Jq`p3aRGbqAmT(!V`G)%d3f4k8S@*&#llrV@XbQZh"&QAQ0* +cRhV"e(%"-LAd@e5MYjJS%$!N+J#(@$!!"`+NA(C8@R5I#Ql,9CkJC%$cSVXc!&1 +0)@-'6E'`j-VMLa,9PNb2*VFBpiMHjbF3l130-JF2MADpFZ)J'8UhVSM2aNH3!+" +kJPdCkVipa5NJQ*GFQlDl22l%q2c+3AlJd2*VL6#CZpSj()H#HCYdJ!'TV2Z)YjF +CQX&*2BdIHV#Q0G&0[BQdMcPPlGZ6Rc-md[E19,8kKB-f6&9(X[(`jL-T[,bYECM +#LLYY,FLqL1be8pAKAq1KHDSk6B1(M@MfcEBGe+aFD5Y$GK$CmkDUj40if$Y9RI8 +D(LV3V+RY,QTf9@PEK1beb0ib9Hfp&3r26&AlPZ$K+6ENEQR)lFKf),YkUVVm*6b +XR+T1,XI$+YDXAQUf1,U3!!JKV"KM(@48B+f6F'BED$X&!l3@b2*f`6(#AVcc,Bm +9!8G11A211Z0qU[39UG*AP'(RcMm2pqcm#jUppNKa@p(1LrE'RGGJkKYS@qdShRN +!KV%Ve"'"E&E-UB9lYIb($cl+,&Nl-l$c,@4U+00#3@H+#S5PN846#QS@P-bJSPe +-"$43H1cIkBkl+FaeB*!!Jp82r)#$cIh@&)aSqi0Arpd9K&Lr-cX!3`4F'l-Y[UI +HiYQ8KMf4Tpj#B3Tr!4&B+JiM-9#kBjVlQXM3Gb`c(j%`+d5(K*N[FB!Ij-4Xp,e +1hGJEr$*q)S8mF$cJ&P@Vkh%%f"$92RV`LZSCHNL+DMmp*%6e&$eS4(@1(N)L3V, +LB4+#MpMP6VS*R45[6k(1pL2jhYE2+pahZ5,C*0B%AKcNhh)2FQYGmb9bhZprbAS +YHBe0Z9Y`fq%)Ca4DCcVd)5)X-e$4`B1$rNKXd#qM)SaiG0CXSGX1X,JeGC%FqKJ +dM[$(k["cE4!-8X8e#P0+l2#,GiKCqbj4#+NIf2f4(r6kCELcVM3-"&"BT5GQQ#( +FA(k+AH,J&0`KmCTp((E5SimD$1Gbcmj9Y"K$!jMFc&F6-SFjAr(%iXLLl3c&e#C +U2"4MVK+j`pUGUlSSU)*#Mf,B&!LHA),M3UMfT#H"aMFJ50q#iRS+d1e(G)50F#G +HfpLDQ`m(@qU8JVB`NcJVl,DSX69IDND"&5$dI38Ic)@(60N$EFl$cFXrB8j@#AC +)ZkNE`BQ!JX'JdBk+c+jZ9MaY,BV3#9eUKRa#TF@DV+#ZZlS,KMSbL"-CF"P5cd4 +[QX,B-*DQ@3N**%+SLG08r!N,4S@VFPMi'j&#k"5Fb),#[,0)bkVL68R@h%E6Jh! +J(k1U6XYY%@[2SkF#J9r1'cKU6#MBk59R'9Z(XlKPfT+B'@LCTQ&ZURK%f`)h%Q6 +ENB3'@N88R5@",D[K@ml'&JGcK38K-8%V&VFi$Yq!k"FaKQG`53L*$%cij*bFeRK +bkqhLE0,ebX'60JUU05-PA'cR)#EkMFM!e#SfcFF1@$lNLjF)M#!E[T-G4BZ+XZV +l,YX5BRaBJA%8jk!'@%)ILMGN39#1jFd#Zc$3BYpka)iZF2KH#l%4j55k8QA'0Y! +VE-$-ClAN+",rf#$``hN""lA%)6,ki)`h`Bj""AB3T)Il6"e6!,'Gb`c681K)F'M +AI%SAcc"YrT4cB1FbbfKLB'F498`1eaLh)iZ49T@BN96'XRfA&DiUhPQdp6N8SIA +T2cm@K'i$!B[Z5XcLd$V'UZMdT%m)&aLJ,G)dqlHL#M5d1`GD*LbX!dGabi4B[,2 +qm!e2N`'4#KQX'bmM!%YfB+9Z`69iQL(AF1Bdl+8,6G#f@rkCEUfh8*-#a4I6e4' +JheiUYS#3!%6%T-Z-5BpMm635dcT1&c@5e&NkZV#(`+*"K'[kphUebb)(V4"V0K9 +-@Y,P,aTE$Tq)idJaK$X6,3NKZh#J`MfXE6RX53SCFblk0&`@C#J-i"[p+MR1E"I +F*aXmlE1f*@,a,jEL8L-(a#ki585J&-RP-KKpX"S)2e+8(k)LmRK-c@q#@lUXE"r +!"+8f3iAJ3@j%fb(i`INfbUe*#'9'T#28iS$#Jj!!TCE%553h&dZdeiQK4X9GJiA +C4!pjf$')FVb14$Q"`-E`R(k)SKU$Jam9cSi,K3kU@&((m6aSM0b!Q*XkR,+S1'I +S83h'K3C-S)9Ui%QGID#PMkV,dS-NlL)i+m+E8"&e%Nq,F0ak,a!B+R$m!#dq'5! +@*Qf-d-DIrN+&,Le@#[!9MB#FVUjZ3h#)FAl6VTBqJ`"[HdMGqr(Lb4(mV#E4aMC +#4B+"aU(LS'*k3k1R$ra)a)'h''GC--iM6#ajD&dIB@6M+S6hqRjF,#DG')4k$`d +%YQA#-"358!4,(FF`GdR$K2Uk@E(5r%HdVH2$jb)R@`Taml58$2RX&[EUXaNZ"!3 +3(X+CdN1Gp#)I$ap5XHmK3RKK+YJGAQV@8KC3r)4&(MiA2Y*53S!%&q4bX-S!q13 +0S'8L3j)9`U3MIB4##!1Y%fhR)VQ@kkcj)&cJ(`e1f@MFLkhI4Kh!49!@3'XSMEC +-)IZHl'4!`Y9*eJfmh35bX!'24B`l"@)X5`V%8%m*a&#Y4!ce-"'$`)bpr&6BY[U +q4)CXk5&(HR%+&q4LS84`lC-[QNJ5fB$#,p%N1G"53NGP"BjpKJ@$!fN"-T@I!`1 +8&V@8ab!AJX[p"mM&b%3%`4@"@")IPilD@%T&0he%N!#[T[B4@aqKC(6V%LFAh'J +4H1Be"$RBKS)XCH5+DR"#4AJ((GM1#b3Z'J+M4)"iP%e!eIY`H"bKj9@,$Lkb(D` +JbNC,!%-rEJPiGF#FQbcMNC)L"HDhNThVB2kMfdD2,'35Q5bh)8&Haim1KkaRL6U +!ak+B!mZi(Mqra"D5E!ZPj$cqT*m9k8T$!#iKA*J'4jb@MYKR11,!1E9GfBcEZ,* +ZXQVqZqE)*N,ai8dZ+0G`B5d%mV$#PBPGB!XIRIKBep90QcFiZl,Zaba%aS#PJcC +V#plF@l4ZS+IS+56Ch3`GR4XDD1R(*cUTSJ,M#949"S,R#S99,1hS+JZ"$jS-))U +AZifc8ML%!e![aL4Aq4JK(JTEFU-"EYaF%!0rka,%3&XA9)-aTSkFaN,CQDTY%*f +G4[&--"G+M!831+j-d`IFkJ5(r*J85U!,Qj[$jJE0XB8He[aa&LKZ$!U$J4rIE#( +K%jA`Nj2iXC,$qk,G"F18cK)l9i@UBa)ZKa-)(8N#C)!9L8G)0i[h%36*EY@JULp +Ze8$S1!1&hE2QC'@1,FNDJD&(dSdpdY0ffC!!J@)m#,qKKJ4PL2U#)(4-Fh)L033 +!3a!4,akF%+X[SqLA6)Ap`8DMZ(b)LKRVP6Zc9$"-TP!N(Mq&1h&d33!FD#Nd9#F +J3aI)U2(djZf'QXc'S"l+9Er`8,YK#G2Vh-18+VF*bJP@p$MYp*Lqk$&B-2cVk1H +4cTBc50EMG'NT)*!!3f!T%PpTE#NdGSTHH["8X5D'6f*C,dGGMQ8,9DJJ1edbJ`6 +2TR5H[-TRrpAI[SR2XL)@$"MCBpS-3N)FHS-"648TiHF[8,E!r++D'QDSF1*GY`[ +Z`UKNNLJij)IEm-G`iFeNbTYeDeeRDkfp9*!!!j1fN!!!`&jXbCMi4%Z,!aB0c4$ +)b[qG(PbZJdd#D+f$3KQ&mU&NPM+Y,XUH@ZNPjpd4S41%31S0riTG@'Z3!$,ZeE' +L90,"QaDaJrY`!4)V+bDeMJjX"P)`!H-bZm(N5q+&MTakme6SF5f#k8&-)$GLU2& +b$3ScK!bB,FUPF*8SGS*(S4T*Qd!#cLA4JUTa#5'M!(!-+)33b$+lJ!+A98HM[f@ +V$1J6)S@A%0qbT6EpaEH@28a)dBEL5mXHMQUBP)*4!IUM'YG#*FG3f,,,KL(S5%0 +C,-"hK#RCI"DIJ1!K&*3`4**&M8!L-aCShGMX&$B+&eJ"KHmTL-)*k5re-J8*paZ +RX*@m#0f*JeTNGQLC&IlFL+aDS&BFkP'SG8p8J3!+20JUG"eHT!r`JY!Rbe)&T,B +Xp9K)VHa0#DRe1G(8FYMH@P3&j0T15+f)5dMYZSMTK05%c4998FC!9j&)L'eCUS$ +BLS)$HiU`U5)Z)$C-HC`Zc[DRN!"d,#e!iGZV8B(RCA6MR$%)Va)B8+(bF,XRD@$ +NmHNY`-6[,X$%jci)%jpVB1*eB4-Ehea"@b95VFS4$K9jmpM-I225ribCElj,B1E +cXY"acX$-8D"a!h@'*AJCJNDLS($Th%9SM!8Ue9,)3"d"jLA'hPpLl,eZhbjXp+! +3ETQK&TL8&$-!Md+kT&a'mU)N4P8ae0Ph*5p*JB&+R+pEb2PD*Q(k*Qe,(aNkp)! +*F&A+ENi"#L`!R%rQ#i44,a$BkX$1%*!!)I!m`PJZXb[VfU[QIf#1-"B0M*UK!Lq +rD+V!bkm*&IJaJ4X!B*&j#F*`E(T`X(jd%SJ'mY,P`K&j+BVDa'rZAIE1`*jPVa& +J)YQqJii3dR@KETDabF[H!FNb)!BhY[4ETNP!N!1CjDXj#Y$ZJN2rq'MDpc[K+Zm +p+hIeV1dXAVaf9ljXl9QlUhLae,M$MUN%YK38V'A1dSi"1c'J!`e`mG9P#!,Zd`" +eRpbhU`"BjJYJ+3kdjL-NAciYRV"S-(TXLPj1J!m9h5STZ+bPMUKPM6(KNDHQ4MQ +$&$'ec'Ki1lXNj8MhRKPmd'95,IeN6#2!4p*V,&e#K6JBdQ*1mf4J)hChq11@dj, +CV!U'0(Zd)FffJ%aJeKjpef(Uf0D3!#FiGa)AN3X+V(0JS1@d6+V,`4EA59CFhJK +9*$1-DTLk3D0AGp46dIG4CLUS"lUXci@)-JRaj*EKiVE1YM&fZrj)CeX4&-d*8NR +ELaXlm211[E(4MTp0d9@h"3UHpbQ3!1,SUh6VTB#$FBJ)b@,ZElX-j,ISL0S4&Y1 +HRd$4&#m&!AZU$SADqIIUmfX4V0[H-8SI4mJSFbf@eTaj0K),1iSE,`cj$8Y*cJK +qiki('LqJLQB&NJmh2phJY*E8ck!Sq%SY!dA2*cN)U(kCLGV2@LE0F%Qeq)`$,@F +FP48jRSMS(f)KkRDrfp90U[)CH8J)hc+#cZDBmV`jECa%"'FQLIrc+kY!N!#[Ipk +Vc[mF342K$Z,-ST!!N6#(Nj0!,5RQ[eGIl"@1liPdK)91r)[Sm,UdS66pm3IDl'! +8cCr8#C0SN!"LEdbD5*[GL36Pr`XQMXGlSlBpd$D0L8Xqb8%Ka'CR(8dmLd+2"N+ +!!+Nc!ih[B!268Q*mKj%Jb%J`!4,8k8Q!J'PL&UYXF*MlGqL*N!!PC2NlR6P%f,- +HG$mHeAd("Pr(ZZr-dhP"mTDccR(JqffXFil1bk8Ye&,5BBiJ['Lj3+C`Ql$YF!- +apIaP*'3`LEHZS1,,r!dNph04&B,X+2lD$IbNimH&RbZ('aGlafBak4acJFQ,c'2 +8JE-(E*-GJ$VCU3@61`RR&THYJ!+-'Famaf!NVjQ81,K3D'0pqL0)(Ud688%$9KS +ZUdJ11N"*K59-cDdkM4$c83!&i&paKF4I!,R`Q80Kc#NMcZQ#+F(Ab99&UY"XiX$ +'*V#*pIPc!m8EQj68JZTaaKiKV*T&!eA8'K6,3QAq`)KC)CD9eq44Y-mM4hiJZrT +l,e*4B"VJV-bkV5r3E6d9U5Vpba*$THUPjP59"PqR4lVN)ffQ)mpQ+'M6*h8H2ce +m'4ZIHR)*ZCNP!LJNpR!11@U89+&ik4S%T3+5VAi0DJE&Fjf"6T+&$d##rCGH,&H +Bh!FHA3d6Xbi)YkE#F6Mff-i(fUkM`(9afh8!95FHaL!)TM14+FP8GQ3q(V-fYSe +4U$46dD#3!$'[dQdY@bik['I16VFcab5k6b!2"@#5JQDY1YCaEle"djCJQL3dC5# +dFbSZ&C9U%TBf0T@mc*+0"XNQdqBA`ak[P(3bipcq0Npq%59C%ETR%*I#&Vr9`i0 +!-K'T!rqAF80aj4JMfDTMNi`4c'3U)$--9-feejL4-5bBK+1-M(iiISR$)%cM,iG +l'YF$X9H#98dd[NQS#d0!bGhI6@"@ZlX[@NR+$(4GEh@p4FK"#VUI3,0+A$$kiqJ +,-P$i-$DihL#GChMG(N)aqdT5S@T1)$33,YZ0-ZVL%h4*"!3$iS2hd!843X`%k*) +1FkU[1rU#$9$cKfcM$,3dM,a0NT)G3C(@238L84IMV-UVdT-P`8+NB5*-iN@Q#8A +,U3,-B'c&8!qIN!"FFDS)L%"JK#,QbAZ"9-b*LXB@'aAhNP6DF#dqdI($%4'VjQd +)GP6IhceEh(S,`QT*URT#)q`L`A5CfL3KK,'V#(CB6f5fAa#5Ed[KfF+"iTC#TGj +ccJ#S-eG0)!Udi*hTi8Z3!26IN3"ejE%"93"30%p4eQ$#33,FX3DZ(32`'T!!"V( +DIkLmpi*HK*F38h%1'BmBf[!G'ff`4&rPl!9k3X,IhMV6beF$368*$9S+llf!V#A +4MPQF!`5E'PplK!"a'cjmM@8!aEBT9'mN"KX@qY(0(S'ir1L'CKlY-V(LmDJ,Hl" +!LM"Yb(3C),#CEhKkbF`M109eK'2KN43Y"@,T&*hQcSUk&8%Kc!#)5fVrN!#jFm3 +2k,4+E$Z&BqaFU'1K9jHB6"b5ii8Tl&LR!3d0K5%iV`,k6r)0+lj2U$155CH,CX% +j+!Lcc$-T!XFY1"j!c4ZGj-J!)RAY)JHb-Fi%`[Pp)c0NT&X4r"JEUf)QA&,FiJ) +rT3ISFZqQ%%SmkJm!!$'*384$8J-!@#)293eQ4K%3)H2ZBIpY[jDUp1E2AGpF6r2 +iA099299E[D"j*M[8M3'lXN#[QmRX,2,RXE8mT12kCQiKK("&qrPP"j`b)k,6)mk +&`m5DC$c21TR(,85[Cf%p3MLpJ4(#mUc$D-"!Nfl5lA`c(Z[[hprrph8G),ql*1m +P,cm!&AGH*2-J-L)5)I%!%5)'AfZ8b9J-2l+[@3!T*JH`53LLfHa"i#5ck(`c*m% +X45b9i([crVa[`JMqZV-JiceF[@f@)BpSp%M,d%H'hQjSP42h`i@+@1a(hf(&Jf# +ZABdf2fX%qp[p&YpRLU3442JD9JbN6MH3!%9K)&iB51%F!ZN#AhU#5C`[TlBJ)#c +YEj@P1#)j*JkANGHYccVHk"r`$`"XIm3IampjG9Yc(-UL-KU8&YmB6,5bq"m"RiA +j3#`C!5Zi(#CF1TQ%#CX`hId`'d69H*NhHiVrd4EKBKPDTG5!$%j2(2"45hb-Liq +S4[cTGmdiN!"'LkrPJ%YCp%[*E3#)km6P%)M+ie)eMG#[1h2+mH8@4hH+BFrJl(& +eeehaJ2EVcScb3+IqJ$CGFX"PHX4PI*b-U2+N#YUMVE*R3iH[@Cd`0&ZVE%B`h3` +31863F4e#V$TIaTKrfZE`'mPLE@T*4[f2H*V9@LVqU'hTJQe!MP['E6$F+L28h`@ +!)-c,%-6jD(Q)"2+3!,&aX0X,U$%MS%B@+bV3hi'PpQ`2Ja($ll("[f2aP"K"P8$ ++P(9`DHPL4L%*["4KR"dKR09jYE"m@rGNN!"6&`Lr[mhGh@pj`@NXKa*XFHE9(L2 +CeJl3H,Rbb((PN5L@"RCI(`hfGaNKK`@`lXRl)IA3dqqU@N&ll2TN8PRJ&`[Zl6+ +5!YBR!keK!q8`XT!!NaV-d'jVEfchh@@643*4+iVXqUdldQ4Cm"NjDEDGT@,+5A[ +Ef8*q1-I"4$Bb+6&0*DC*-CeFlJ+3!$!C`+8jl,!bD$)'Jrh6kk6UEKMj#S*%&c- +b[1,QG#Ke-aEc*3dUE%#,Cj(+kJ&$qSLaF3qVTKT[6PS2R5dXHCFIXKK,"+`a[+8 +GXJ!kU6XZcfZ!P+amm@pEe0658l%kIpBP3AkkPh8[e,UeKQi@&P)hQMH1)JSESTY +jXBQ8mj)-`i!#MQjHD'BPbN%a`IdX[R63X26!iN+Z-Vh!4!(a"M'edV4Z"kbI9H* +N"&-c-Cd3ddQT&pDkjjA#UXUKQ,l0kT2*F"F*AMcbL#*i+@p6)IPB3$llD'M2El0 +aU(Xj2-r&m+T&h8'9L2V8d4"[-)ZN"ch`RRM!EIjk$4)K*,!Gmlb9KT0E,GKd#iX +AKYGYj(1QamZA)@$me&a1KJ8S1+9*fAD@0qDIpiR#I%MeCh,5m#509&X(LeX0#EL +3!!Yq%KI[3b@jZ#G0G'P@R@'H)T8%`6d-``'B"'KPmd&8d*YQSP@!*3mXp!YFT3b ++I2IC4)&ArE@+'CfKmLiAXe+Sr'&-&+T(VmVa4+AGSmY[YF,SFEQT5kk!e!B,`4Z +BLU!B0LP#VN6e@h!%UPr)UeKFb(r,ULp2UcLP0Ejf5+RkBMT%V5F''1Dj`iS#43& +4-[4FQk(YcTcSmh25&+Vhd&aJr0dpl46m-$0d*B1%Ja,i9"P,5!&Th&hm(4l0Md5 +E1!!,Ar9Uc$`jPqEL1i*FA2k6([Zeb0Z2H$,AS[LTZ"E%MdZpG"%&mr$'b4#T&BJ +VpJ9XfTk4DZq4VkT[+Up@(IQUFSAbbMMbeCIFbUX3EHeTaiP8"fr4&fj#)2@[-ZB +eY+&UQ*3A3f&f,QaK%0QF,"fh0AC-PaDd2GH0+3"GYQfGK5Zj$f09Bar'+[eGU2k +00'Ac&S3'8lic[`J4$QpNiE)b*m!i4q$a!+Y9ciKDG*'&TNd'L#ba1&1SkJAHGN' +UlqrVpESlbZ[m[PjrDC2bfR[%Dd#`QaH8Pb&L0jjQaL+pmUC)p$N+VX+S0,YDTAh +Q%a!3jA!53MQ6bd&fK*0d42J-X"eJBS,3$ham#*-XXmSTfa+$p*k`E)G@`dY-31q +0S*l#'h5AS(5@Uq!b2N3(Z!kB#Kh$Q1SER`a2fN'Z2j3Y$jSqmjcB3-*CBJ8)T`Q +6YJ[6`f+Y+)VZR)2*,M2QdBe@C$q8(2lE8)N`9`BK01!VD98)LCQ4rJi!Je(Z8)C +&48+&TZhi-Apj"5T#q`MTqDQr#eZ9i-p1LHXD6V)jl`d5hUA0dI8Ff#pYMVb$5GA +2$b+T"A1)R2[j3CqGMVA5X5e'Ze[LK3qGV!D!DUeaYAFF!ECp38Db3X@*0*2SC&C +c[%1N+$J"j"MrhX(l`Y6q&`laLPI&!CK6DE&'"XDQYBV-E*a-lJ+-ckIH%mc385A +em#3ceTArmck+M49&pk`A)BKKrJ5I8kf5Fj@9#k'jTf,9kMJqQ2cKIQLZ-VC1AG5 +,BVDJYE,"L-1,Nl[V3rQYFXi'"V8kQJr'3[Pbh+Skd38Vdm$`1KHaa9MH`1%'&l5 +&L#fa5T%@qIrjIj(r`Rr4)ri,+[pTq#q!rr5$XKDNN!!X`G@'C61FVal"(i)@DK4 +@*-'#`U!e0Z3rfkXBFXfIlGfR)HrNe#iEmRpRdFR)VH%@*8PAPm,K@q9d"8pq%&[ +Bm@GlmF$aB4`c&dQe5eNZT`fHr&eX`4Uba')C@CamV,kY2B3&6Zi+GEe6E$65!SK +,1aj4AA`EPR3E9@G5`Nci0JMf"+#jFUZTK95V*TAEJ'T0YIiM,#e@Yk!G$kR*ie& +1%m6@aHSU!Q"K3K63AMF'4$H8@pRXRV'amiM(5CeV&A8Z&h8Z(h@Zmp5jT,`-FYF +)a[iIH*[3EIqMrkTaPF,[ZKT+MIkIIUQNQePjj%h6JNI&)iRZiK@22-1TpjI[0X3 +ZSDbPEAYY95@jJN`ZKf%NSfqJah*L0FbGR3JE&mX%&BK*K40AQq8EL-HN1X'6##Y +q6++bm2QdJ)H6X+Dp9El*$Kc4+b(*%)39C)-6P(`cc#q@)K,(mZ&*1MbU4KeamBU +@4)VIh,hHPl36-"2(DbmTF2-NdUI@`C3[NBN`JVR8YG62(LRlMemXF9+A+R$%eVp +b2KD684@*akrN-3Qj)cbCqe"'&e'!'`BmAL8G$r$KU`KVNFc(5fCbYTcN&29Amc) +%GXrdFGKAH446[K8%K,Ec#V-Cjb3#bQ$X&5Cl@8i(rI`M"SeAS&$X4TaJMf9`i36 +aLGN+TpL9`T2LT"blGH,M34cqFjq-9X1"jHFJC`D60j!!0$X)9*+28f9d0dMGcXR +JBpF"c0L-+`mV,-+AQBK2M%QiGQi%q2p)(%G`83$bh,k$Q0bT5&MDaf,2F)'fR5b ++N!!5,q-!#dIq((pHbGT6HB4Ac0#5d`Sl`q`)rQb'"H+`A*32Kj631M8FLLiY#N% +YhlfH(!EA8i'28S&I)Z1"Sape-#Ph8hH6N4EUI!!J!$5iXrEL2fjF!RRdCHfpqH* +Ufa))HYX-$QB)m(Mda6m3JhVGZ2*9K12$GJER!15&M4Pmd"BCb-MKN!!*1X5EY6[ +ba4(,[JkT'R*)eG"$C)Qq%IPmqND+)d-1U4Yb50d4Kkc40b*[T@qN1$VNN!$D)BI +8$MP%(EB2NPDmb-2e5Z0$@#5HQ88,*j[hV0ej(6"QKJ`6ELp[)a4a4r%693dBRJB +$X3ieRFTRGG0KNGQ%b#CfVrGBCjB+FN[lYZ[1+amXaDU(lILTl-m[@P*ME-!)UGq +'kC6!LI386+1Fh6haCcAqV!3XZ*V6Ama%aPD$IG[,B4,!PMQSUp8`UUd`jG@ifIS +66T,"[4,KEMhBKf8)QeFDk+ka&AYHkMhC`(#J68fQEV!#mqA25F"p+p3F+j!!AJj +9YM1ceMF1FPA'*+ahLMYlhe9mYVY6j!jDJXfXf)#MTfAPIQAVPa$m'F9jfdRIqlM +iLNCqhDYh"ciFVRa4[8030`!$YJV&VAF$"@k)TJD8cT!!(!kZAN,4DG3*%&arUCN +l!BUij5)P6$FhMC`Hl($SqTCd'%LNiVN+!,c1R*H&UEkVcLQAAqh&j9kG$"9#Med +R8lmpf*dR*VJlCb4!Je03#[q9i$Kd!"6KYlm+dJVBeSiACha*!V$1I(36DGUE5"" +e'I10A3ZrjjISD'0BG"C&d)!E,`VVV+-pJq3`J,!GI(XmmZ,[6Z$)l("@[VKTH$J +['jH3!*%Jk0hPAa9RQ0pe06Zr`c,A$62I$V$KE'(+G48h"aFVC'`8X)RDA!JmGTd +h0TI0bJd$XpTLF!`354-ZZc#K[r5lXp+hc3LK`1[&*8&I"pLp+E0acbB3kK)Qe!6 +JPc0Sc!rJj[R4M@T&)A!hF[Kh)L'"*"hF%`X"qP$((k#B``aqi$+hX!2*#3BU*SX +TqlZEZKCX5J(AF2H$3a4IS)BHDBdp,k@MDaQf1LeMf8'49@r9i9K@eVr)9jF9bBq +Z9*H-"XH#jqA-@(89N9Hc1'L$%9IAiNm0"eM'e@G+*#[d!HridF25K)Qk5%!30`b +kR-P!RflDZK'AmBf,cE`%kRd!ST[bc)+i'"iBI+amkDRU5VGTr1$29m0G'5E(33l +#[b3kRdX%FE&bJ!)-UlENT+I!#pJ9hI9(EY1lPCFC)4!%AQ`9ET*9UC(6--8T&Jk +6Kfd0)[@*DYqVhMiCH&K1%SLkr$BE)E#5XHVGE0USCVN)*3dA!!1VIDbkM)R*9#5 +[!4$5YR5Lm`mScQcM[lJAZaV,Jl8IK`XPM0TM*jJTiZ13!$$PMK[2mZD3!"!F9`* +T%GBiL)#-%1(`%4Pa%r%i6U6ME[&')LLh%(kHp"3A[iQISZ)NIH`UAXiI96FAHA8 +9@-'[5ePGTckAq"#P$b1*$aTpQ%Tm#01(LX5(#(h)M3A8$%bkYET%0FB#lLL,A'h +'0%,69)iCX"q*CDLf[lV-d@h#5(a&52'@&4`JmXmCJ5fG-$VA,kp,U5M6R9ci"G1 +G*e1f8,Jlrdl(C*!!QEkfMNQ*TJ93`@eR!*,'(c3p2XYU0LGpc8DFdpY1CJjhrS4 +GDEBHI30UY)[8D20jU6-EF+m*mdBmFYdQfT!!P,8343XV4dq5Y[h[k-VP)N3A3S@ +`beMB8c+[ZDd[*pBdX3f3!0M'5@a6DHad,iQYMm4fJF4@6%*cN!$3,T!!d&35@Dr +U5!MV38*-!`N"V8U)*TX35J&#m5T#k8N)a8`)*55%iU4ZpV30$ZbC3U#rIF-012C +eHeS-+L,[aLhrFHbT@1qaIc&P`aY(ke%-mdk,[mXhNEV"cV$6iTKrabFTeaSE(4E +ZpQLJSpf9SLZVT3bGNr+qc*e)3'K3$F`ZKKdG+flFIji#R8KebId*"A)"42'e'YG +T('%&k+FaN4-ZhA$)JGXDUjc(1KQ!aKE(UQYZRV5GY,4@ecSY88ZX0KE$6Ch6!R+ +6emN0EdQeNXU)lk[l$`@QbB@B(-*BU9&`B)F6I"dl`AZh-VZN+,i`ZKX,Gib%'bD +acUMRi5L2e!)jV*26!PISU3HCL`S%0f*FCA!Rm8"+-#+b8i(X+Jji!"#@2#9H+iG +Bph@4*rIV&r(%2iI29(6fApk,9D(k))B!9EQ)l3aS2@PaR5B!5!#%hb-i-#feBK) +jjLlR4dV#-r`0&NI+TF1[B!C)@)#B*ZI&KJ&Em8HVdIZJSA"4M4Bp4$$E)'$'345 +D'U'*55P"CkD0iE(I5BjV5bRS1%k[Lr4J+6DL`,B'P,'D$NrKCdaQLLeJBBSQN4l +HZ"DAh['JkG-4efNS!+RYJNUj`&fCIU`HeeK3R5YXh(*GCjJ,*Y+2f9NNN!!iS3X +`H-$CIMcbD$HlS-JGKXZILDca4IX[1fkJ3C,cirETRiR!(`NfI%"cRiF!MLh#ZHU +4QGI%aErI"p2NaD`'4Y!diT,mf%Kk*[!!"2Mp95jfd9qBH3dUE`4QABb2"ITi(iq +-4PVaSCNqc+*i4MQKjQ26b2$bDKYhKpM)LIhb)@V3me$IDAjTm'%C@IUJkF9lI2R +B#*XkEpicKQ-cXZG"dk*0[2*HNMh'Pr%!8Nhi5IlbRXc*C[aN*B)r2[kcI*2m,,r +!3qKJqQHlp1%R,1rjBI5qLF3'%blqX5qHf"pC!l,0MRiMlL54lC9d-d%hUc0mdra +$m8#F2KiXm%hT-r4aU84qM)pYp%!a2F$UIi6)rPDH%TYE6Jrik)(YBQ'N9E!)H1% +9,#rG&1LQ4RRS(FACD-4p5M55STYlG!1i2aSQXCB+TU@aIF&1aQB+L+!2"S+8XK1 +,E(l6-`#'BL@c`5LHe8Dm10pfNJQ3!!(J2(D`l6*Zl!qDpQp9L*'-V$EX$-FDGT! +!L9Fb6*4HqFPPX-9I*2%Zjq2`T`e(AQ*(3i3,Dl'iKaDlBIV,F1'YZ,#c-"pYCh# +"J51!!hDH4+8R*B!*!66JiA*+"QfRSmXH0"dZCE!A[EL,9%Fa9af0*lbXY1l2-[b +,)Q2(TG@'+m[1369C#`Ma*6JJlA6(&48TUYl#MDS-1cV0#MK"[0,3FE5"!`LPBJG +FZQ60N!",$j!!i5"0lePe0h*4i`@'+5fJA"+&PPJSA+!h&f&aFdlqBL#fM!liRNr +$MBU8!d#'f$*2Vl+T#9))GS!i+iifF")bYY,*9BVrT)%U&EmE+DNrA)qYmS0aRX5 +fij%kjC%Um4(L&K0683dQ,LAAl4FAaj3AMIK(dE955!k-FYIkB1d)G5fPUkFJe!A +ZRKrF(MQ0QrZ$AIf$Zr4T9R6d$dk"[Ia%U)d2hKmjc339P9)pB5+Rhe1E&9D&+ZG +[m!NbHiJ8@T)8%F`9f`qa%NTccXU+jMAMHjV*c4q*VSNLBeRll$#6c-BZhqKSr0Q +ZT[ETk+hf3Q$,G3kRS!$L)'D"acSjb2XU#N*f1Yk5)!IDTE6'$+EL*Mh"$GBif3$ +@UF*Y0&PQjc,c@lZ,M"8ipY9f*[B84'4N*cZYqkbLf4Na5HbbJK3e1ATB4%1dF&U +$)p-SSZ5[Xrfc9fJ$iE5AY!'SiY5Ir%jUclaKc"FCMEMNRlb"3m+$k8fV062S)"+ +R"0$%`aS59`Vl%"YQKKd0keKecIV2q)E4lDSSiI)Fb*I*MNaI2mF2&D5[-$2rBc4 +'N!!4r!!B`mmk'93jhDKa&jHFkN`@T,rGCjfF2r*5eC`BR@!5D,8Hi5!3VKMM*$q +R@Cfp5$MC#hjhbc1fFdJ1p9Xi36mDh2e[9(#2SlKV`B"f&J*lVM-3NBdhhPb`Fp+ +bmHCdLKkUa812Ul-)!B1(IdH&EcEH[&pUE$aFcdA1Y`ZQ%9#1PXrHf2e[))@$MfI +iX&Pf3kT4PY#Rk3N`McI3e+''PQKm'3MYFCq-AF1NeM0V"2ES3Q@`VLjUiGCIRQ4 +8!Cc9#pN3*mQpJ6eT$9KHY6KliG*C4bB"NbZB6*+MlE6Bj!!qDZ%$U'Q0r50!NMm +UMe94FG@K`URBC`aZ##,5q99TM"["q$Pfj!HE"r%l8G5C)X!j'4LEc+,MM-NFTG0 +Vf-@(f8)@&JK!*4c1QYf4[IN,2ad)M(H2ra4&cZ6HG#"*)ebhb*fX8Qm@4""J#pM +NLEmr$bLpYL#kEE+J*i(2dL@r`-E&,*TSf#&c1V[fS'R2E8UE5jr+6#kBlajMRMZ +fef`m#@FK*MmY)$Z!T2X[Fd@2RU(Y!pT'PmqTKQ([Y64f,$#"b[@fbKb#pYVH-kV +Z6*9d[-%J"d,f9E`9Ad%e%dHDMhAbXFU&8i-ARLdRKNeh&YM1jMU'`N4"jXkM)2& +JaK#&bDRj'bM+lI6CDE"$%iU6'K`cZaaH+Y(X6'DKmTYCjDHl"J'8p1V&5md"bUb +5JHmY5V)GMAHZX!2)VF[85)ZJ2KJC0Xi*Y8)q1bmJ@$JlK9KaMD*"[-p*6Naf%XJ +ZK#blMNF9C9V)k@*TLP-c%*2Gj`ii&PA)&1*8[4hF6&KT4,%Gc8PC19jR0j`(69X +1+@6p1Hi`4bqM)*!!5-MN95F9MpR@hAMM[P$Mhe((qH-2'P4Ym3IIl-BQUj4#Ek& +#-a-#6b@%d`jaik@M36c5f#T6dl*kjj!!!+91851&Q5Z,c!b2CYYRJTL-QHfr3*J +-P$'XTa(BJF[M3'@E15(#!0Q`F*b0Y,9cd#Tl#RQ6)I`S(0p%D[9(51*AqI(4)ci +mM3mPH#J)3G9PjqQ#&Md&3NkPTD3b6(E@mVG6!h8iQE&l9F9l[ZC&0,1AAZ1k[pG +c64(FFkU$RF&1SUZLZ&2RC+P8AFkV[9GA[@I'FCQr&HE!a[$S$6D"$4CIBE&E1HL +%*bF1mU6-84QKLPY8k`aJ@6@Z*)#Z`dM3J"[ZKrAqAPm"4QJ5ff&h4aFYG"!e)"1 +G9R&6L3ja6UTAM*mE-QDJ6,,R*CR@#M,iR%(U!f5r"@5raH$QCh#P,cD2rLH-[Yl +)Jq&NB'Z6QU3!XKjr0LPZ3eBSN!"'E,d(9AdE@qXK"`,0RF8@9(cm#a6+$K3qZkS +jFI!VV-#SHbR0q8Pap3M&"FE9"r)cSaZX-["!16NYM-8fi8qpR[3(qr%AD-,5b#% +KZTlpSUNi`SlQi$)"d+)QpME!bke`8GdH+iH$lUjB'E[TaNV`mXPB$GLKT-+)b8L +9BAGB'Qr-$Z$i*r&R2rlXiL%2[X@P5iCFHT%[M3TZ*G,bC$1kNh8Xp[B'c6IK$m+ +-$Ql!Cda@cTc`DalV"XeM(`ii6SLQ#f"2Phee'Cb9*%bTaM2-2ieBlXN!i)l%DYL +0#ZM%4e!32"REJDA#LCD@![B%k&DfHj`EfkV-e*Eh![6-Q[Yq%#lLC6#QVA3aVh+ +a*ch@I@eS4J#RbcK8iDDMI!Q),eH)kdh3iLcJaF(!2IE+j(*53ZA%"!1Sr28p2A5 +3!-aHed(0,"G+5KdJmc24X+&-0-L%LR!Q&)l+Vr8,J4Nf"kXfCrZQD1*AjYZ2$E9 +!$9Q*c"J*&@4!"4P#"F@U3&!iM+T%mjiDajQ#IF10DERZR5'+D,hZ8Q@m)&Xbl,c +#BFjk)Y9VU,YX+K,GTCf8Br[`Km+T%!r8#dB*aI5+-D9dPaAlk!l,U$[)i1qK9,* ++PfK8CI!GDR66HPi5#l55JAFf,p1m+ke5F4P"8++V244M[9"jX4@&I"cU68Q!pSL +'V!6I&!LD'b93lSlD4dFr#S'Z9#r-"+&D(m@IPDTI9j2""iV+ld*A!#QE,Y9G8i) +lMRM&*Vj5(+JQe'U3!&Rq4ch8*4aG%%hVVpNJ@rrMAUa9Z"eb35QUpkGiH#9BVjD +CBb"LV6S43`J-"JU*LpX'(0M"p1EaqMY+Fi$9F*`cRl%KIDZK`F,U$3-,,A!)#M8 +160Y(!GZJN8$YhYEBHNi-0&N''q[(p[UP6r2hqhi'0KPZ1DZiZ#*0H8r)(@h+qpl +R*!q-,dLTUB2d%Da9l1"MR,Jp#$0)m9BiE58q(fdP8-#@08PY)i9i,TS94'F**Yl +Q[`4L)qAUFaUcACaX[KY%UMR-MGqjUDPqT*-KeGANB)NU#4I,,CDRE3ceJZR,Be( +SldGLEEl`R4DiCGK8CP1A`3RJTkM8)@j`#(HpFR@(FkThDP8,NCV[TT%DNI4JBK1 +q%k!$GLMNj'b')ISfU)%fZ1ZAUKr6pJ2BIT`hKqC$VHHLk23-3pMmah`&ELVJXH2 +6*[jd,NT-l2GLDp3864r#9%C5LPVBQ&!+-cVS$6A3#-@C*E9J)l9JHp$dScl&RA8 +0(0ZK)!R8[L`k"UF6C9DpUDL(M@R+39cd1ha4q5STL)e#2E"3S"aX(2,,,*M)E0E +bc@1S`#j&34Lk'IGEANj4b-b2q+!5U)Zhe&&+@SKZ[Cdkme$'V`c$FPKeJ)D2TXi +K+cNPZQCSdhQVP95(5DSMTB"ph`EBjb1`l`mLG2kkQb&-N!#M*NjRHJBS2"iJZ1p +1*UJk#jS#pr''GF$2U6#99V"rlBi1"[F3ZZlF0lJAmE'6E&(%eZi**`QNP[C"F)k +(LZ'0[)N"J"Mi3h,V"E$,,N1i1eT*VIJ*hMmZN[Yb%kZULar+pa5A[*3#H0ZC8'+ +3!!XR38*JpGN!*T(Nr*F-%mS-0`9SrFXXV-XV#i[qqXZB`Id($3[(X2$1AflKefU +9KBUl+F(3D3"'CYm!KLB!$+Xe(F!!&+BdpD,"4dC*RE4a%8,BGRE3((p+KQ2E34M +1Cr`mX-Cjb5&c*YMISBiKi$efIb)6k1mBeClYFR3MH1e"-[5kNKL00KkEEFi&(&h +mH[HrkDq@G8`rDJ31Gl+lGRDqmGL#$0lQMYjiE&S',39@Q%J%S)(%"#Y-U!NC2-A +UP!CIHJ!&AkiS+J`9SmC*fCHVBriA-)aBKY8`(9UV(&QL(&LR(&L(!hHUHk'`bP' +TZ(i8XdGd%9+9d9G&epAGbrGBS&UhJJ@d82T%JqS$`c$($`@h@eE*k!Qdf3e'"p" +k,+!d'F+K)ZK40TVdphYNG#e[%&ZL"QA+PUU`TGhX2YSiX2!X*NQ3!)e$4fa-8H& +4KH"#,BH(ELfbLlB@T+hCU$%4''!5AL9)L`fL0GYZ&r,(C5kiqr8KiJ[eGq5dmQj +(eqlA)El3iHX*U!,Lij3k[plpZ[kU#H)VK1jU$'N35!)"4[B56!)"4QapIL0q+Jc +fH5Hfj4TmP'%aT8SlPH+0LdT-9C!!af!+9H&&,959+&9PjG"#VJK'EmUBri52$6Z +*2Q"AalLbFkMHKK2Bb!`f%QmmJBdX#P%)mLN'0F%#Urm'Zrh`SUIrlh'CmIG0UGB +dBlbj%#E$Z6NEGR3EmFEZKGhm!mH!%JEL6L8jrF*`ZAU02b3U&%ShPb%9%Sk&%94 +R9@+ValM*,Qd945CI&m8KYUS[jJfll3+D9ecURPDIJj0%QcZ``3)'3B2CF!2HV8L +[a6P9TPE`!'(C1)0aFaD%2G%I`k%-Nb!Q38`#Q'LBK$%*B2,QMpQ&$!dT-0R)3#' +'DK'A+KmDST($ZP9*8DA3A%!$8k2Pl'2cbfji*U#DiBCPI)bKRfliR#Zkk41J2@- +6$`EPLaFBm)2"BYY*Gfb$CA$S*QXDR)6'!dd663`B'IQ-bfhqd(BAVJ%QJee9B"i +,4RlpjjKCGVU3!+$fabTeq!2ZGHG&NU(J9aIC896Z*#L5!FLE,Kl@Ud9*'T0lm)Z +G2-L'HrY4Qa('`rAZe$-fN!!QN!#[EIc)&4kJ,p8"%35Q9m!4Y&P2'&C[jX0mGPD +"-!f%F%K4!f$&F&IPkEI6ia"$9F&al%9j'BcG(AGNMX(k@Zpi8HUlllUc'*!!$q' +)Gl`2#9'qJE-JAKY"mF,SRXNE$L4V,h0$$!cjKF2@MaUTY-B9G9aBUd4$V)QldNK +aJ@,)[a0S@,2f3G-Ilf,`ELl!`d)G2SNUZjK0104C@!*lRr3p"c@Cp(f"P'D9m`8 +3I%$T4Rc!mK1,``)fVFTND)G"QFU(1Gd)38r1Ba#kYiAl6cB`EMYXSDfk1!4[kbc +N2m($-SA`$mHYpc2-i"%hRd2#Fm+"#aVm#3S0D3YYX#UL+3!lCEk`#KXIFqCj##i +Flp#2jXekY(lmd,EY9)8*X$BT!IXQ0rHG6QZb@+P$eqM#F6"%c'#cQ`P5"3L%*5S +%),RkB`%NqhUBd0+V-DTX-ekZ&5mCQJZR0B3F(15+3DAdih&M249("60`6kRNiME +-M%AYQH5,YLK()ePF2DjFpVKb@IdP%K[91HAPqj1dRF4,0%5S0T@A-qK8%-3[qM) +A%d"Ra69hXCZlfNCfrc,a@!ZPR8-X)(3AL"D$!pC*lE1FP!i6i*K`948*i[6+*)V +)ehFkV9$kqNiR8X6l,'*Db*8F5bcNDKQ*@kj)R,IIFUY`8GNfKP(EZ0GeHV#JNCC +Ld$L-*U(-%+E8CS*pA$2j$r,51J-3Ki0GL1$cc,ldRGBE4jL,KM!jALbB542-C#r +-icP@*hj@Nkc82PCHVA)lrmTE'$H@qe,I2(eR4G5BZcMq,K,SR&U3!2)*SppBaQ` +[%VTJYAUHS$4cf,LHkHI8-`mLe2-m*BiV4C+HA@(H@i-"(F'!qQB3L03Dcr,r[f, +AN!$hrP`Cm[%p[h&a8ZS$3,jhJ@pRAX0K9@,33elid6LUVFhNL"8%@lQjT!p$&"T +*R`#DReGlMD430Ga"'MURcR-b6aUIBpF-[hF+,KBTU"'`F2L%*M@L!G%N'VHi@hM +#b6*b[d5kK4dD)*EEIC`DiiVH4')-M$F5qCTaGIfR,$UPZMQNhB*FH-+p`2Lmkl5 +Hq",'8#3rZ4*j"hpZZH8RqFLIcR`B@IXY",Y$#*C5hU8NAMJLi+D)"QqU"h[[4hV +k)HlJ@bldRGk(f-YBl%b+X0dM"Erp392i'MIU2N$`Me,$pNIrbTXC0e,l%RkN`qJ +PiDmPNCmPJ@-!6ZY6*2!Ud39rY8)4pUaa94qUdE[9k2db""jC3`*(XIhU#`Q"mke +2&rL[`L6`'S$Q0HlmAhQp[Cq1`e%JI1#'i#,1jYJl!rF#!+'pF#,SB9&9(D,"4FZ +i`E9L'&,Zj6$BQ8HRZUZVI$495CJ),irm(K@#@9N0FP!SmrCH14ajQd`'Yb"H+@` +Q(rRB-(NLpm,9QP*)p2QYQ8qF[8afi4,am@35*+X5beXRha3hlZ,[fR!$N@eZid4 +b3F+XF,%Iel*Cq8D4H$X9D8AA!X1@(UMq2cJPIH1dD&B)Q(*RRc"#N!!dBiU-X%U +)i-IeqcC#8NJ#&P[ZL6[lLCJj$*1EJ@cmJdFVHNM02QJ+cB+3!+E!"MJiHICLTp% +V#!`h*1,"2cFr!D2VArmT*kUi%6`ER(kK[V3,-31%Jq+&ARD54hA%KGE5KHjJ-0P ++lUki%#SDq6dZj$ML3MCdk(j+DSH-8l)(3`RhmQ8c,h0C"P-P$G*#lR#8S!#aIdL +&bJNd`!!%XrBa-fZ$!ibf*)EBBJBUY&)-CHX,%@Zd5`a*bcrSJPD)Y)iB+BBIkp` +jiF54kAGIqU&0(4i-kI(!&@bJ'`--8%$26*TK(KDX9+h#5Ye1X&%e3pQSZa%eKD' +*ZcdQXh@1$M)%YE&MGVmqRFlcS+l%0$@!DCT6Q+D536B*(@h`TX33$&L(`L`e**L +PfRda5e`B45J-,F1X%ES"$h2E)j3i2QpJ&P2jV0(RG5)8Mp9"4@i#l!(c5HYXKe, +Geqjpm9m"d(Fc+I1%e45DAkESCd)0&A(bUaA$%-K69JM3",JQi"8,(I%-AMGN0B@ +0UKTNSp$i-dQ$+N`4Xh16@,6UIE"SeFkVl%))4UhDdd`0&X0`[i9ULN`)jDkcBZK +k6Q+rH"Y*CX$%4J`DDYR)#BFe$*RGlV'QfT%&IJJTiC3RKH1%LpbSkl4##&!8GLF +j9D"`BP@iEHBZQ9E8$#5"KBqZC$88A+$"E*1HBLT++2CeXk)J25U6kj4&+8+,8S4 +q+N+0Lp!rm%,&R+D`JP!ZE3f&2!I04c#$eN5"T6'%FMmcK#e$KLcJF)Ll0JDN290 +a%9Ym(Gd8fe)#VCYYPc0jea3'%dka-l,lMppbV,VSMJ&SK8Tqk6Z,&mFCm1jm12$ +5UrS(h`L"86c8LXQ$44FXh"Nc3Vcja'0c8#VqbIQA,[-R$#8HI5Q'6jmY5+(UkD% +iQLa!G&q[BR!0DSr98'aChU-p((VTeDDEQ!4HZT9fJ$DB-YCGr2a[B*!!h6#@MZ, +2(b9B0C-(HZ!([S(KA'2VF*(R#aG"j0LGCadBRHT[BTKDLjbXQ,jllGl-*hMS12k +FGm[k6c'i,EQ48(,K,0*5af2[!(5j0F-$0RiEc[+VS$)Z)h9e(JQZjCijkc`'E,R +Up3-+4i1%p@2m'"JDbpS8%MPS%2HE5mmYa0E$LE9eqYlpSYJD(d2d0$5b"efG"l0 +5RBR(c-4M)Ai-6JPd)3`aP$M8FiJ@Jm#BPpe2#kD#YVQ$(TjMPpYB#alI!A9QS&S +J,K'BaT`FIpF$GYNFdG@Y'#CA9lGi051'%XD#Xk6-3da1@-%QKJVQPql%5b5fRCp +2,1UM&f&"D!jBYNTrr8YflY25&KTT#m-(,)`1@CKf39Q5YM"ej%+jGmM#P$24*)j +HEaVbfN`lpR,DXIB$MVdfC+&pm&JHZRhjHZ2cr#*+A9$rC'6`)6(i#*1c!P,3m2Q +F,m+JZ0Pi+Kq"Ni2,lfMId$&GZk&M9M15kB12m-$3B!hI*QDB`B0QBK8E%CMNL3A +m8"3h$3@Y`!RKaEXaCGKL-A`U3I1alr-!XT&Yha4-"eJF8qRdLaFIeN3Aj`(&Q9! +!G!MGMH(aHT!!J4)D2J4$`3m[Lf3&XCMB+NJ)$F4l5TSMD2`)CUM+qqGpIb6F@,J +c+!S8+R1L$#S65LGikE8K,#KIN!#h,bk+,VV)V01k-h!ja5456ZbHH0AXcK)M1-X +(*FhA[')BYjFl5Zi5l1HkFhd+)aUm0(LFr0MY)X,U!VZA)ZEBH'e)B(6!J@I&!+* +JPe"KEcm#MTYVac#XI$qDFN*jX6-X(k5*VG@ql0EQ4"LdMYKl!NGFASXl6e[4%+J +X*aFH9$pD`i%Y4(0V*UrQ1$"K*VTbPeiKH9N8Nh`I4m9@X1,%`c`m-45PQ4kd#V0 +cQfJ+8dNZX*8&8qdKST*'3$DreAHk[jh)6EY[GhS3`dC)M'Dr%i2%3eAlH4KiXD% +[P4!-)Er&`jmQ(RiLr@&Q8%SAbD8CPdpeL@#ci1+KhrpTqMHc$eG)Lr,2%3!%%b4 +Te89fQBVF%q`$$H,0UG6NU)!)mBmE80K4pH#h6h6P,KUKedScid)-[05M$lJd4Z% +0$$0P#N2Q!ldQ$l+"i6DQM&#kmDBb)kF,CiZF2hcA5&f`h+fdG@6bF"hAh(dmV2B +&Lkh$QFm!pQdlqdPH0&'L+Ih6)$3e15bPUCf!D*jD-EA6Y!96+dd06&YSkX68S'N +'8bG0FjKQD*V&0%I6(CKQDEU)k3kD9Q#k50-mTK8d(F!d6p0a6!GS1SAT1%eGQ%l +4Y"G6&dhl-1fPk3LFclbC!$8ANRqMC3)$(Cm-5"0rl2KMaCm@r$'-`"$bR#3aqST +r)m6Sr,c#b0pQSm!r9R"C9cHk%UfqPKM5L*Z*F(Fj1,PF0imJ*jP5"E!*B-Ve&c" +qV6EpK8l@9ekE[NYNI5hqV''bcU'PTaLhEE`KG`6$`rhfLG@m#Ak&lYfP,rlA,pl +rcB',IE1mT@TZm0H'lKd&b9dE#j&V3)S'a$A3e+2@rHCDP3QYE`iI$54#GqaVQ6Z +flf93jN'%kKe)F48jmm+9rddh'5K$*'eH4l(cZrmCCa"m8-(@dQ0G)`399&[i%Y@ +hd56ZG@BZUKZ@D"M-kLkqA$8RJj[rrPlelGJ)AIjpISd`IJ'(eSY$eii*9T'(`BI +6HS*!N!##3G*F*a4+XGdk*jfp5J2UZY%i"M4Dl'2RcdUG`A4CL(K-VAF1K[JJ4a! +@+bX`PjHKe"P#eE#CN8*JUL,,Sj[Fh(E'Hd@S@#K%K5@29)MKIRa4a`hP-k[*T`B +r)lf40(SG#)Ri%S2-j)UERMKG-*9'j!k+3R(Fif+U[NE-PDcHcDi%3e2%&keMBXM +QZ"Jf")RFjX2A-rCY(B8VV#k0J4`2"pD-9!Sl+f1)'NTRhH2!`p(0Mc4e6CFeGFf +b1h+2dDhkM&iHi'GCKfpa9(-EceSi0HJf-@6GP"(8LdVCCL@6$"65#DP4#ZU-Z'J +"c0FRak6f&9`'$9Qj38Z5!5J+FhU-,Li'JpbHdp--&mPTPE[QY8Zca@N+PS $ +#30jKXVMH,k#f!KJ)Z%Kd6'XE1Zk,"pcd`&"'([m-b+3ba,L@8a,PiiNM6')5(0Y +qKj'$2T5cMHe`!2BE`F1GaCID6ZV993k+Jl@k)QGeX$&861CITkZ"d!*pq&Xq(!6 +0VK-dKY4JKLU#mYZC2!I`&1bj4YNYU4+*,j-$6f-H%$a%a*!!iFb9leq4BIa"8ZE +l+$BiJi3p'A+6BX-b-EK6"BGTR0aCYjPKRBcm2JEZKkPeq"l3SJNX5Kk`L1&GA[4 +SfU)*,1ST-Tpj&b5%e+#M(S@aXIm'-aDa8aI&J*'SF1"M#M2r9P3hd$K#T2kP2k3 +2Rb3'*p8&q8p$"9QL#c*kLk%#%Q5*)XK3ZL#MeqL")`3CICm%#G!T1LX%'Ce+('& +2#*)6@LPGN!![GKDE4`SbfNb#61NJS[E@8%&UYa+#,&'J'*(5UNN)-rbL%+CjJ$$ +Y---'*j[!91&CrTp-,82!E`U*fai)ajc*ibG1JV,2`3!mSd-&p8rArZBh,+M+dM4 +"f5%Sr%0GY+bCMmA5q$k@NPPmU5aYD6-Ye@LT99PU2f!Tb#%YI5YYUC@AbVfdY%G +CfVb2TIGTU6YYD3mYED#P,FT5kj%'LD9LZh0T5eZ`p!)Y,(hjKIq0,VQj1QeK+4D +@!Nj[&Ir%5-+B`lSa9q['c#Ed4,Sa4m[)Q%Z''V-BS+4!F*d46!cc++#pEDSKc!' +3!%l29XXhfX'@IJCEi#!S*"iC1[M)a88'rClS*+KPP&RM*fiVB9),Q0fSTaQ!%!p +!&6DA3C-4Y!k#QqG2-`L6RhK!B&H,fa""LSF&%k5J3k2MV(d8a-Jca1*AmMqQ*HX +"lrTG9mILjcQFQeI#ZDYSaRjMZREC$GrlF%630Yc`Z8D$[Ge3m)'Li*jkPf9)KbP +bpRi@#Tk(6'3R"GI9h%Be2R0PV[dV9pKpN!#C66UbHhSr(ZS8$mdK'(0FT[5M*JC +2SFfY34J6pTLFBRSmMX"JJ$rSS3J"1Q&kLA39KT1VB#,K'H@ZCEMJC'a2X1ck*c2 +p%hkQ"#[rH!U&S5Q`EC81*2!JBhJCSM!C3#!c*iq(&#&)qDFN"LRI!C!!4Bjj-1$ +E'6LZ8'&E(M69CQLTR4Iqb`!R3m6PDNGaI0-r(k,A+Ihc2jI6j`i4P0-L#hfkNrC +T"XId$UPDlj!!DNda#-e&6-1GLH4J8[a$6)"U**cYrH[r0iF)0(`U,rSFTGc#4P` +-CFC`6"Um%#6BfYU-KhL`9`$"BrKA*6K&Kd2AM`i1b-B2&RrGGV+ijl&k(M!RHT, +p9kkC@ekbB&KNDI)(0#q'kb25NX*P+68)M2-rIX309r$a#-JmDJR'T#`fqCmlfGG +VYT,LRJ0ISbY+rZI`Z0PI,-C'mZ4R104R)$5M,%E6*1R9dVB'm8[V%FI`-+NTdA8 +"$5""4QiQ*KU*S!%``486-1GfT*Zim@2*B'2Jp''i!*!$)5C"4%05!`"-j!p9#cd +%***Y%[q$!bpike`*FDLPqT1Fji8J4c1TbeJf!K)p,r5JKl9XPSdSh*dDRZm!SBc +VC-k!PYTX&ih0C$*Z0ZYN%f1$5p5`p$DEXCNdNde0PKKMVE81ip#8*'UY!M)q(rK +m[rrrlqjhF+"TjRhIICm!'kh(*-J&)!J#)$,EN!![bmV`4rA2*8&+Reej-&fUmMQ +195c45H20UeMLX!dmND)5S$39MN4$RkrETZc93-jjMZDp81E8-Zpq1d5*&5mlE&q +V!!Kd8`%r(f,!lTbUPZC($i2p[G'DR1$V`imH(YaGmH&JTqSHmb&cMhVrDR"hf9` +k@1#YX'@UbSN&)qJ`9SF(5!M%NkchlKq(F05ZqPjdN!$Sk+UhB1pU""X3h)b!Eh" +ECCjhb0'm[B8&l`XH2GcM$pIJaj6TG6C[5BYQHK283ilQeP'69r-9MN#3!)YZb1# +@`T(A2pU5PYR(JbEd3@Cp8-aK1l`BJrSa5&pdLf(4AX1L"9[5qQDTAQ+,IF'@0)I +Y1c(1$$8iHJ'ElQ'@[B#Ia5M@fbGJSL(akf,mR),)q`AlFL46(,E*pbL"RlN1frG +T%[a8f(#`'4XraFC+hVJC2rFiE+-H5Y!NY+cfffN)KDF[UCKMK4c`Xi@me@B+L5Q +c%i+h*XV+a2BpSN#6[b`+'0Dl8K6S3F1LJ'GHp)J#A@+,+0$e2J36AXY%A`6JhP8 +ajm#%mQGHim*FBQjidX@BV9HRN!#Jik'4F2FY--*Hkhkicl%LHk32`6L!4S*1G$T +PBHC9QUcX'M,d05chr!%&3+a1fCaCJf"P#M'M%k6Blc`ChH9-3mG(EP9,'hMjADl +PrqAjS4(jF!DY6P%!k0S,aB8)V1m@!B$q0jTZR3`5qKJ9f3djrR4LDYE@VB'%M%" +1+YUXdkIrN!!B52VF99EUh%0Bk$[IALh&cH%$pR*(FeH0*Gd8eqB$r%BTL#-&X!c +DbkQ`GaZHdHe%BjMVSi0@VA"%FeUZQkklK()H-XDa8)l%Q!adqa`fGFF33"B!hG` +e#G"[lTSb+ClHdZ0[m'0D6iE&@p!e#T2+-piK%VXMH(@)`9`jA'!1!I)H6*Si3%p +(pJM'Y(i%bX%D(cdL-6AT8PjBbmM03r+,M06FT+eDR[D-9R!`iAVLT91"#)cKJrc +Fm+@-ki'NT0`Nr5L3!"G12D5I5AD4#&JAqKTB0f@#+8+E(qlZH6AUB6BHX-0`5`` +D'LQ&AChk**BjD"VQUK!K(KKeaX$bN!!"@8!-Er+Ir8L&-X[Pp'"([3jb9P-f%J& +S5TJZL'c%iUJP(3rh3,f+Q8M`%k0Pc(&l$%-m'*!!5FXJ+eJ3k,"A%ITN%Me%Jc0 +hSA0+a3Zd+!K5a3L"RZ%J*)4%RaEANVd&M6r3Mldj!`V*#3+@c&%Mq"JIVT1-"HJ +&@e+m"8Xh)T(XD&lD++GZpG)6-1LId%JFSS&NbKeFppM,dqQIJDdUK$mHN!$JLTX +S1NQkDCJP[5McAB!kkKBHQ`P0dL@Ae!2*-b#q"V"VBd$FJm!L#BM"DKFJbJeeD54 ++*)-PM!AG!-FTNjK+!R8dQc14,HKc+V$BBAm,`A)RN!"(Z-mFrrEMd4V0#D59aKN +$@FmFef+Fp@+4XjkpQUHSXk32M@3k2rKjY0FHkRZ4"eqq6BLXLTI,`H#,Q90pam9 +"*K,dV&H)1&kCmG*dmY&JcDQE&)iF6%4'N!$CD1[@Je#)`hPD6QkLP[Y&UTBEeC) +1jS8$Cjb*X1YkE[3klp)c88j3*aGPTfNbQAbTT5kV"X8BA![F@DcX#6,X%j%)j-$ +N4b#L2-pSK#i`D3hLa*j5!(Xpf$3Mb"B4X,d&MleN"GB6@V`2(Ek5!CLCTTXdZ`" +3,13Q*`*qe(ih-"&5@e`%UHdd!"-YE#1`L(EI*Q#XK['E$RIbaACaB3j2H&8@6+S +""-bU@ChFN!!@f!Ebd[%X[XB(VQcS9I)L@KSIaQJa#,NM%&SL1ieT0k0Tm3"`*H& +4+kSr$04CpURE@$2$'DkEQB4XiXT`PIh-T*@Z$&Gja-!NhP#A6%UZG(8!N@e,E9- +HRGf8iBldbL*Rc%r&TK[SX(mkj#C'j6J[G+H,'*A(LLadSc&Y61Q%!4$YiX#'pqM +"+QJf!Tr*Ub29QIRfq6V`Q5A`65&`Mlf'TlUV8'm#G4"FcN8ADR8$))1Q'm%kdfK +$H"Q!Ba5J-Gm+c@j%X&SqHlTUeBfkSk5QbUN'p``S'PLSj#EpJ!'M$m#b`cAC)3B +@ddeG#9J3,fXLP51mM&d`)U)Mbdq"[0lKirP&-dKQcMQI99lN@@Z+AEDmk'Aam*f +Z`#%Gb'p#1128Zb2@i*d8b-NrQ"%SLXHqD83@H3&M0RTiLJBD`R64)2k`K!EaE@l +`)*T`f'B@$UjEaBhMCeie5LMd0)6b([5R$)A$HQ&B+5F9d&R34+*A*"`L%4F*LdL +B[3NK-,V9,"BC+hB`DD8BkBe`(cd,VPUM8)BX'$k*K&NNaN4LNK*pB@UQCUj5Fdh +08F3Q'aheANe()3NUjk8'Id&0cQL$2pI,M82chLlC+9+E1)2$cD!p"eNqAcE2h*! +!*`RNfbJc[&#h-E5V$3YIKF1G&Vk3!215MDHfbDNl$&-hm05YQ2ULQ,T9JVYlkKD +VU6'dDa&0h6"ADEN(LM2#Q6`dNUZG#Rkpf94VVb@'JPd@Hj9)QXfe'p&&d8*!fQa +-[C5AFM$r8TD@&rLHGL3r0q0HV359eNV0elF&%LiPTK*@0q`YI5XkiH[C18ki0L# +V2dKUU8@UT6(lkqS!NFkbFfJ%MPh2i1!CG&R@Jb%2QPpA@NV`JHmL%lqZYU*l0B6 +19DpMaCL#)[8-R(Y8cUhTMEqi%`V[Gj@$P5@!@9NCZGa8S+P[+kF%GC)A[#qk3R6 +FLk(,qKE58JlEfFDTUX)4)+'lE!Z2J&J9qec%#M)B9)#iHkp*BP8!$#UkA-3+EMB +5LiEZfd2%NT-IIih90*-S&TV8k%bCFLEMm*M@(9qShD[-AdVcUClNk*l-F6(XIC1 +#+%("L88C"r'fmXm4qRcIJ1UH@eE@FaNEflirAUE%9@V`E$R*)PjBPFf)Ka%l1l5 +Dl"(TbJ9(S@"P9DLfCVR[THVjXAqckimmAbTrUr[qLhmkqV0P2qRprYAEfZRTcba +R6FI0Edbp2VCJaMljYIIrjYe[(2M[!rqbp6X6rrHC@m1$I5I(2cpm`R[&q9(rlad +M3lq)peci`l(I&[klKrj,pRplmRVQ`5-C@B&Sq0#PDrIQ&q6Pj[aa8Q,U&bRI5rL +68rrer*qrmQIqSmmQTpfiqDhd(erqk6[rm8Ir[Ql&iPFAr[#eIhMlAprmjdAriBA +rp2arA[+2crfIPeqFpI(FlhlD21IrYhbbCFI1$aVqArfhEIrV[Irai9r[rm%GIhR +2lqlkUc[rjpdrAr2S%rqlmE&9MkpmH[@[0rjUdfmfrh,$hcIplIUrk2Mb)er[I1$ +"TpDZfrh929rCYlHV[@elkcpYQcGlD8@CK0rF&'$-,r+dV#qi`jGP&1#UF`+fbhP +N5SVp2-iTp5j!ZTBcUHeq+0JTLXbS3FA)`fCHT)-Re$MEhP6c0@8CUhAH)0#&#@, +MXP##'ZhYZANE$E3!GiK!iR1"6+G8[2mDCMVX2*Sp%Sfa53(CjJdS*6-)DXXjl(3 +HMAS@R'#8dN8$TVB1M8#!9eX2pm18B'CH2"QZ1Ik#k#Qe$!YTY6dhi!Tal$iX1$% +dBU)&U``,RR3Yq-EG3$BmEA4ZLR,HM+Ub-B()F19p5d3"c$MqXP3PG5(U[1H"R!f +UqVa'Z!NQf"FmEL)"&!ikF0!&p0'YGfTCY5M(d6)D6YRmV%D6ST0,D2)!MZXGcHf +99%$`'3cY0@cfJ&3)dFEEbiC'X'dV$VCLfdjNPcB-pp'"#qf-UU+(bqJ`C(fBp&, +M841FC$bKT-'@Sf4iL&iN)L3PNVZRGD-cEiN"hF`KG$0[MF1fHlC%0r2@i1G6!lU +CBd3h224C4MISSVQ&6al(LLZljh9F@4[bQIV4q5Jd2'r8XD,(rp[piqVqBI8ZZmL +k0RBl9N#F3UiFaQ0X-C1B)Q3ia#@aV-9kBLI8f["#!R!%iRMHISGYcf*+%'!F&f) +f2Pj%3TIbV84B-3%@"b-eDdDD&*1pZ5Z"1m)cB@,BmiDQp%0Qf(X1flSeJQ%31Xj +lcY#8hQh&-"SDCiBa5(afAJ5)i%+%5#$609X8!(,PGiN#`,&m'BPr!E,FN!$QjDC +U"r1d`D6%30kP$%e((B%X$5TGi'$"Z4$)bIK*,H03)12Ha#m+Y)*,L38(8c-1IBG +dbabSPeN(8`pUPa)edI#H%aQaZ[HD82IqX34eVaj)Djm3[V$5jhX"kY9P8X#Qdde +%$P,[6XS%9$DI%kD8SC'SPm9[,XBIdT@MY4Hm"FLi8MP#"Ur@"10[&PH1RYSN!G@ +Jm2R%-YhFKIGqGJMHSM%U&)j)9p&6JD4F,6F*UNViB1UPP)"fj)YS0*!!a&S(1+2 +eF6Q3!(8P$bcVBDiECADP-Zh+L*'$9LURQCKL53H3!"!$0DPB,Rp6+*E9N44,GYj +Na4+)dl-q(5LbZm&rC"6-RP)a19AAUV2Ak)T%%$-'d0#k0,[5F-`#&3Ml"2"l#2K +cbKMXBq(3VqHUEVh,lAUU%mI4FRE5mP1"6"SjCCRG25KJdKM3H-cMN@kYaSHk&@" +2JM*--Q'B*!iPYYZ@R'A5UZTZf%R%%Z1ZPY86cHSeE1(ZVV`Q`!VAp1+jXAp!D'- +b69c4SB8)fHVUT`$9j`5SIP)#U$BaU)EX95a@F`0X6GVJZXGh#B"P-FrTF31iTN8 +!eQXkX$i`baTBPkF+B,eF(&JIQ)N-V%BJaF,G1V#Dla1iMR!1M`#[$`0J(pp9('" +Vr@F'X!"&$i0V@YLXKHU5l84QRc@T!EJH9)e`Jkm9-$*KbZB3-q$U(h)Kp!MJkQ0 +3HaC2d3%8)QX#f+)2)`!emm-b00l@,a#AeG-)Y$,0C#VK3@BSmX[F!kh!XIM$!Aa +E""$qG@3JR!Ic)43E1-1DK%M1P(C+@6lUJaXSUM&PDlA`@)-1"#&4Ddi3iU&@DU! +!3-hYZeMpVLB$p2VdErXcDf65T-JGKEYdcHdq(K6kYR3UE9h[Gdd8V8FeP0NU9(J +jIL0fJaBTZ-`0+e391**q0$6LFSb9!Y$6)(BSj'BjC`f,1465+T[5i8`EZr)$Fq@ +1Y-Sd3JEQbIl3*fQRad-Kmfhh&P58-3Y"+Q8jbeJSj%`,6`qZ95(2cklXRklmj'M +P8GT18dj2pUSGIS[U5BZZIk12*M*IYbDhA3S`EE(Si)-3di'el4#Q2jjJ5DFr-** +Dd$AYlTZ#S-&*,,GF,p,a2ead!p6Vd6!$d4pe&SldKFANYLUI"2VB-`,S)i[V+qa +9*'B#!FSNf(S@!Fd'G63,a&G0cXF5CCVFc%%M'![h8P-B[QLh3NFHGKZJUJd'X0S +[`1V4%X"US#LEjJqlfE4XF0h+'VVfbTScBP0rd3h-TPfXVSQXD'5@Ve!bDhjjDFa +5VLXabpaAcMGNI-TJ5eJNai9fMB@1FZ#iBD#4C@-'9MdK@2@E%PK9Cf"9Y35KPHQ +@p,0XY0'FK5-4'(*9$T+A9([SNYNMNDpB$'A&$#K,2,VB%%paT-E2)T*Y1S0REG+ +I9E1kY'IG,VV`0r%dDEakZUCNia@V!ScDX#%faHS!YSd"YCP6U*UQCZ`5QU'1N!$ +T)&apIpU!LLFhh!JdQDY)U"3c0ZZE"8NI+)'N68@!(kSk(SU-VMQ(5Q!GKCPec9h +jjb)S'i*@R,kN3LU%cNT)HbPF'9rKZV+(Vq`YU,m-dZ@C@+6GINJqYIe)JhpS*'Y +8QVRDXmAa-3XUXV&LNB$+Ebl"9ARILhh(FFL'X,)%0V&8mpBKhQT6dd@RSJD,"-` +aRq&4!a%H08k2#Hc5UZ*qZcakKSAlP(cIiL86(``$'SRqfmI3S596HcNl)HKNBaF +%N690P[6#%CHTY'`pRPSP34MS%!,hpKHiLYdm%SQh,qEZF5`F69%`2,6*3h'*jq) +!JqJ%4!N$E#UNi$XLH00pK%'SX0AFIXUT5!8*Ki4)Icdl0e5&BqkKUGR#MB'ImEE +Qc)C#C3#%8XcMl5eRBKjAp*!!Z5l!NKFh#I"VGl,ab-`CL`qQUaD6L`kECGVI+j5 +'3PZ`Re@0-GHQ,-eU5(0l!aN5*K3MRVH*JFD,N!#KQ"TB,4E1BD+0Qa@b'Fa[F*L +SiU2h*D#&jF5P%$91jMTfl%$c(#03fr!+&AQD1`aS25EBdHqUk#8!6PD1ifS$(kb +*!QeP1NRGEAm2bhkdBShQ@qp[5UIrDp-EdcXSic0`8lGG6E'E82q+ZiX2ddkZQ%8 +Sd'L5Yd,rcHfE$*9j@04M&XJ(eBJ,qH*VUC,lUKYEX1J4Vf4aLBrbH"1cG3H12Zk +)N!"*X*B2bRm$4`KZRT@UN!!%QZjrp8lY*F-d2ql`ch$fE4m`$8(C$'fm`F8RR(@ +F!55)2+&jS&DL-Z#B-YA8hmb!ZE3qqFJfQ)+VH-"+!Ij0F(5G,DI65+QEcb)QHDd +"$2+-,IrbMklX2D5m&dL43`9j$Nd2$AlP%*ZZXK@kK#&[BNc4&5VZN!$,deCT'(- +[G5F,Aq4Pa55Bi)r2`d94,81&j*!!H(Lbl(MT!MD*)P(P+$C0SNSr+Z+[+%c[m8G +E5b$A)`E8rU"!lGXMSrECURMMXrSFMFqSZr%KK41ETU&`AU9-%4kpr6ijjKJ%NJ$ +jl*&!Tkb+@8a"+GM5+KqhSlD%ahPdT`p8TiSP36$RI$D-CR[eeFD@AK8ALQheee6 +3TeUH$6`5@CAGRMUilMGTD)VQXT10"cqqNKXY(XV0rIBMT69DH(D0H2jE*6ardN! +DC2DpqES#i$d8`X&f0+#EPmPZDXK$"5L#2R(JLfK5fdV$cKU'Sq!M&6(N)h5brE" +XEY[hPDiLZP598-a&V0YZC@p[LR[T+ZV1bBkCiHN`AA&'+cH+T2BQ5H4TB&'hB0( +T%PL83mSp,R0"#JE3Q&6S!J#j(*S*fbrEA-XcH,I+"G@&L%akPbDdT$1DI9!aBha ++&%08r&9ekHb48m(emaS,fNB,4fiT&)#8pmfG[1d1+"'!ZApIbk5lbDLBT6G9#)C +)d8E9)b8,T'L6kH[N!`S9K0&P88YQqX*X9#$ReCdj`EPa914(%JT+AX@fR-Ujm31 +h`rdSc$))4V*edpE'1M#ij9D9-'l"E9,lN!$G!@MBXH,QVBhP*"bj091a69jKZB1 +lhVYSLplNC4c-)qPSENiJ6iYHbQIaaf%NB!,(fAd3G2cqB%Ca`8I&fpmdDfaZeYK +bDLM*MVNfqm3Yr*0rk+)j)6I$hM3`l$eQ@)2$pZY-0m-DT-[Pl4qj'@DcBKL'Vej +2$*0,-8&D$!4jfl#!M4IBJJ@8Hi%Yq&Q%"@EF#c4B,B$KUjm9"'Q4"+RpN!!)X[5 +9#!6*J-JT09#-*2,di4#PC()rr-R*b'BJ1#iBHS%&*bPk&JTp5&N)fHIY!lI&8Ch +c*)Ed5h1pQm%1A4$ip2-kJeNB!lI5lcrKC["3F@(Jdp2%B)(bBm9CQTqE5"FQLAf +aZe2SB9jpVAje9)RaP-f'Q#i'NDZR!HT&2PGXFL+CQk#cSQSR)a-bkV$D[qm&J&N +mGV,X9mb-Y3CQa(8AK*8,hF`J%pjZZ%cIi@E'iH*Z##X[%M0)Q28B(N)*R5'JG*C +d@A(aJ!iI*JXf'a4f$`YLP'Tb*Z22*QhLcr$jK$TLL$r$J3GZ-&c`([f#MqrN#dk +8(49AI0"KqdP6j1c%'pkP+a*cGEC@2PQ-VFr*c-ZZj[U#Xi4MRZhaF6G$k3-d69J +ZbEhFQeE,BILUZi`-C6'V'm6JDLaKLZA(NUAI5lU8'RJB,18*"*hqEUBN-Efl8E8 +&+pRpX,J)rV#Hp9DCV%A`ApdR42$$aE2GBjmbDq5R-Q*'YaAVI(CZej@LJR1S%Y0 +#TE#AS&,8ZGAP19*T++)Jl#TCZGAiJamYGFGJCM@S-4030XS*Q)6LFG'i!4pLUG3 +2*XRm[CqApaXQQ23@c%iJ-E#FV1c*)I&`(!a6%!eG`BjqK-B0S5'j$8+mJKhC*#) +h"$0&X"+&I!4M3bj@6!T@21qk0Nq6%#54B+@Z&UXF+%TY*,jK9lk)bM!0%!+jP(- +S`cQ#-(pH!Q&DV"6c8Hi%bDklVECTF0d[Xi8J6JT-2C%I4-1%ND6V(!pk46cSTb8 +mD,plFR*VmT&$'a,SVJQc50a`A!Q4V-`U[3J0N!$EJ!L&h+%"K+iD3Mjhk!*#)82 +)i`lPS,2i)*04KM4hk"f%'JfKBAGS&N)0NU!FmVY$U%a6XBK"1)K2e68*deS(*mb +UNa*J`2-4@)Y+-d*"[SF8j)V,SML,LqG&m4dZjSPL$KFc4I%#&q1L1-$&F9(XjH) +"&R53!&Pa6+MINa&&rIZ%d@P+G8C$D,Jlh1,`84+(adM%Ahd%,VL6hkQXFFa$953 +0p6X,e4&eAVfQ@Y3De4QX9"Gcb[#*VkC-m1NXIC`+Rk(M+99`J)9#6j!!feK`M)1 +9lQ!["lG`d*-6&&28S$RTG6hLJTm#l(Df&U%"`r0FS98)AA#&KPbKHS4bA+%N6q0 +4Gh!4JZmBJTSKk%G`PL%il!jQ)A52+e4$,0)A,)l3Kh@%[ZDB`6A5i"4(#SBe3[r +jCN,SNN!k+NrmNi)MZIQ%c)82KD[kE'l5lbmFrReZ9L"rkpC`)&@GJIZ$5k3*4+1 +aNKL$bY4"j0HU8#9J5M8C4A)%bNk!pT0'0#f-MdciMT6JrI5KaNk)KTTLD33!d4U +B%cXb29bXM2UdUNBrQZk1e@cUATVZ'SVPlj6$`[YK`1Q%XE-MSJQr)dU0a9c9T(p +bbJS"[5-3d,q@J)!f&UP1G)B0&"SfcfNf@GbAV@iRKr)HIe,`Ecmq1bL&)A"b+pG +#2@N3+[8D$,33"c3QVrE,%"5$MV-Rf4%JJK"Raj[LULp'[ZT5Ji!*+(bKER$"Rfl +kG"mCU%QdpH9dZa+1VcjhTXG$5KE9d'6#G$j*9bmXaEa!RqhU0b0VH)!FBc!`q+E +*#"2X1BUVakBlS44c)GVP%Q#68%*l3m8D2eDHcl"0Zb5&F)0lBJS"cf0e&'lj@(9 +Rc24p$!83!kEIF%ql6(X,(lK+0rPjNRrQ+H3LMlK%h+3D&qc5aAXY%--@#(!bX(L +@B2%(*E!iN`D#)AG)-8T%X1UQ!D8*pYb'-9[0KX&e'd+N'T4N%U1`-)RG@A*$c-J +&!TffAVGjXERYSM5dYe8EK$a3cYY#aQHA9(#C&%6M%Q1aDS9SA*VE2+@DN9[*(%V +G"I'BQ5(kZ'+Vk#,3dE5ElEVKY,RYX1k!,Y8&1TBGe,CRa5FhUC!!JXShXNMAbk& +ZQ`M0F'LY#2@cB@8dl'8$$KePND$B"I!Xp1J8`F*c603EVAHlCH,kf5-ZGhRjA*h +&BXM,KLFrErAN0`e,$9XYP9lNb3Y,HI+2cM'4eC2E+`a2jXU3!,TSQ6D5bDcYAIF +NF,eS-r0(KLK`RJ1GX[RL3+XSa-@$PAT2(&h6KMjC"64'P99Npfkff%5**mAQfHl +0hDL!+3rdVEdP$Sj&9l,ETIaXk4ib%&450j8U4Hm4$pKLH0kR[-d6[5S1RLcbp"J +FElh'+V8kBjb[NUV'lVSZeR3C@,2(`*SpKQYD2hNd6"miQHfq%PGNmYj,BVLfqU, +$Sk[kA[hm+5"XT`TC,NGk'#plG`qj`FJR0-)9CSqV`T9kU%MP0d2&,PQ95McJ(TK +Sd6#F(5*8a-Sia+YY(mCIj3)K#[USQDBr)ame'VCZ[C5(LXfTeV9[(NC9YBekY81 +ZmP#`396'h&lMc9FK)84ZhUj1)(NF9A*02b@4!TRXfVBakcF,NR34Z---5b6Db!0 +fmi#0JX&G"QD[PQ!4lK-(RETaXQfp10TFC(KhG&8Q1`!Zh5b-Y%e&UL9@k%6#4EV +e#T!!ffY%KFS++&cFV4am5P`VjL+epT(X'*UZ4d6&`Va,e9kj+Kk$pK#Cp[+iDdF +AaZ6i-$3GH#3TYjFE0X6&TFQFj"'(%KcR5k&`@hh2iL)E4U10eNXBRiK'XN%dPRp +C3Q1C,K[,$61P0jBECXkXXEcl2!EA8b8RU&2(5QJbTr4"8&H1Z5SmhEhbA)jq[Di +UT5(HXXfNkP'9#0@'a[6*b"5GHr98m)&QVGDJ4"fMiQSrIH3BdeDjR$MP*fhdL92 +)LA@XVf9#6i4%`LF5-C(`L%5h5)b+41p3FLbC(GdDf!5Se*eDk"GqrJLTVpk2VqJ +X`P!cK2T8+3DEiLdaj6i+&MQU,(*89H3S915SYXK46C'MjIV48$)%XCd"9ADS)5e +VY1Mcf%cILH*NAee+%-i,Na65rQCLGQ2,a1cMq'bP@6pmGd,K8,hKRk#2YI2Kp1I +DebC#MF6+cdrl*haMHZ!`!Vj'BZeK"')cHZ!%!V&'B[8*"$`,-$Q-d"4#GNI3ddM +X[i*J0`GE4E!9`Hj')JN&4cRB*B*G#)if%TNS+)LN@J[`84p*VR`6EpJM0Zc""Vi +HE`!,"&%h5D)'cmq%I[%Y5G$J0@*C,aL'LLM%jXRTD`#hb@ce@6+cHc,HNUh%S## +j`4J(6Y0!IfraJC9DeB8c'9LP94dlNi%KVDV`6!E@DP82RFR!'UdUZr5"98rkD6! +'59#,1!bJpkf!UYLIDA%29PBX[1PLB6ajV!U!Z&UM)0#RD6)''FFT)SK$Uq8U2(f +S`M20"J,EhJT@QB!NfSm*"BZ2kG-BY*K@%lq*C5a[Y3c!&jJQ08f#d$GXDB%Y@Sh +4e3$)Fie!SVmU!BR1XND#[dXBA2Ihamk0"18JDb6iZmElLJ4reeBk%[`,+b6Bk)q +%"1HjNH$I-3+8KSj'kX`4%T`(*0JbKckLqQmR'T`Rd5!pF9P%4)K3i*(lLJV01QS +EGk2#F8+&9LK5SN*#N6%V&#P4)D&)Ma@+P'M`K"X0'P&NF64S4*'4dH!"+c4S4*X +PS-%6ZqF4XT`d59#C2*k$lkD(40+RI#)C8c'4p#L25(CcT3j+MUT4NHa9[5HH!K$ +V5cbAJJqQ%`N5Z2,S)*Dc6rBVkDLdh8)(mCCq2)Qb)C0PPDKH`Fj[fkqD&$XCFQ& ++8I8,ZG9FCDUYKmL)&FB0Y1Nm9Fd#F[MU'JQ`%(Kj4C9!3LK8IBm4b9GfB8U3!)# +cAI2f8Ck@&c!V3LGiVZ9,0h`#6'L"J1MDmI4TSXUU%E&X%SMPkb8JP[ULcMY2Aaj +Feq5cT(p$IZLP4'%3$C)SjHRcjc!0G)TRY"ZIi9b`Bajh[M`)YH'D8cq"#((([-) +4qELb&S$1RjlX2TNq[Rh`$i0pJkm2rh$iJEje`ilKkm-VaYmB[M&mBYME0ccmaI! +R*erV@p)h0Za3iKm!!#[&384$8J-!F&i393YNT`$CDR-h-j0i'dBFBmc+CN@iaR% +FBdM53&QTSYj*#!`M[c"1!UBZkNa)jNi#1HrX*)6S3f8Jjb@F9jU!)VC+U@9E"'5 +KFYj)dDEB@KIbG,1TTG4Y,9,1*`8f'eQXE-YLhZrr[hI1P`P*%2IqlHICclNG4M8 +M)K-"%3!"!4(`%#$QreUZfN-KI+PjD44)XDTb5%@qX*UiT$!4#j'"q#Gk*UpY$@H +E%4#-"eePP[UN5LQk-MZ1i1$H"c@el8-ef*EHrik8P*AVUN36T)X2i%0*1Q4"X$J +8JM2`H5MdlA*f85(4PVCZG5$VFe@YH4bA%GpPN!"GZN!+U#Rcdq&Qm8QT"b3A#cC +PAAj4Vkr+dHXIlGbGR&298*+IV0pFNfcBRm(*bI@f3fhTY26h)%30phHVZamKNe+ +RDjjUP%0AM`KUjrGZ4Q))dkj4fkdG#&DEF5PG2"#UX"HT'Mpd)'kAY03$PKIJ)0b +`&pF@+)aX!#'pi8*&*BCTZDkX0JSBhk#A`IXG"h6E8D>khrXL(eJ1l5HmqUNLk +G6!ImBEN,"iNGE&%i0)JI$6p'r%6`di+I!IcdK29a2E%lT55[a!5l$[#VN!$2L#p +%)hQrrTh&ENE$5%C,Dp+VB[I6@pA"YN+qm$N(fH,'14I(8-i3(*lkhJieU!EMH'J +*5RhHA%*jMdD,#(bZepFNqeE4TIFDa,lmbhNjKLT(6TVbr,[IdqY,mkYV5JhkNQ+ +VrV[brYfGqU552!ZH$l94[prEGfr*jQLk0*e)N!$ViX*HXGeH[,$"rJCmhA*lmEL +*H0e26@HHli#jL#2$rSpSR)@p")#BmL+IFNkHmT!!J0FT*UHmU%ajL%qjhcFP&kr +66%jjL%eCm!e0@G$+Th5`C5hB5P-DrQ!lCF%hbT5Rq*4FH3SYDm&iNe1H8UD%q*4 +4[LPB9UeUFNU)Ql8ZIRR$qmbA0e`"8Bh0k*fmQ0c4XILC#**!"H8kSBk$9cU*+Ga +$a9VA`B'VGZrNa5i8QmAiQ3ib3"0Q%H,iK%-diC'[r#IXQlai%5U"+IJC"p#P#Dm +5f[J%imJ*RXQ,D@"j-kkKXPc"*a6j*N406R$9&bp@2l@VZj5A4I3LiF)c6Zf#X)V +2(+&,)-'YS8[`Y99*[@Lr4)2BLUk!-L@A69r5JqdkXiB+BbdrqL!e&cqDNkrR,pN +H[86%K#2G'LV[qrN%hPKm3K00q#p&EK0'BB+jAEZi2c5(6`K68r%*(5BRc-F%BkY +fF@rS9Mj"mdfiaq3%XEji5Br#$,f-BUKB-NT"a@LJiJC(a3dI+UB$&D-*&Ac+I*S +#`dd4+JU!JI4B[D1q"'3mdrG`LSQ(ddBqA,$9a-2a)ar@UXk(B-G1CJ+j@Ra0Vkm +Q!VREKN$ZfJHbZCm45CKGdRf9fGe*!'XiFH[XaBYGR$$@iR+4lc+AA9,&K9FkZ%$ +9F,5@PDNmG2'(3CZ(Ld`mc29rD#pH)P*c$"IJFT6[FMklC&1@p)`mESNi8[5585B +Hc[Gr5%LL5Y5f!JhV&B490BF`K&iMKmYK[3ADAKC8,eh`LZ#EC%21jXZLM`"r(j0 +,U[9L5DQ"RPq9#I'ZkS+D0(e1@Ne*6M)HkrFlVTDD&YjI9q(9*S9ANr"U@AJE'@J +Jd&kJpV!+QBZfPa4[[Qb3!#A[qLk6R*b6CUJTh[DkjBTT%kY@f$&XQ"6iI[)EHG9 +E)P9'Xb,SKH5#r+[&0AP[E+Nd%JD&La!6GcQ[bT!!*TEQAld6iM#Sk+,`DGXKTH# +CXc)hUFDq8#MeJ0La#BITdX-l9#eK03`KK9e4$-eB)hjeq8iHl@6%ZVQQHSGB8e+ +k*H+ZZSRl,$pMbl&bpFk"ep#3!,XYm+S,@!`Y@N'RYHj!dD``8d!4aa%,SG!J"M0 +#1L1"K"FJ!@0-S94hS+Jc'h8!LD'&PI$K-TR[q(#CQj&hUJ1Cdf!BX-0dTFf#Bec +DXAG5k)BZZ(H5'ZPq2VqlIUID)Qf8QY+N@DF-`5GEGGYK'NZ[rd(KR+5!H(Hpjhp +J`2lV(rdG8q&H42+2$2G!D-[Adp5"UJKFS"B[0JaA&UN$cqZ'i5K'fe!9+HKVb-S +dUii$eP"Y`'*-`R4[#JR*@bmeS@TVB#`A*9X[jq4Y#Eq12U++M18"IjD0B&NccE+ +C@0k)6CS8()VPArrKeh"BhT4C&QJl'$C@E3I$'KLQjRpH&r%afNjJNRU!!-95'0r +S26CFbGNYiqb@5d(Cd"liV#MCBYK#GRe9!!USd4U#dYd'Z$BN&T@EBBFe2hP,j,) +2rPQNq5AZ9@C$[Y@3!&HFAf8BkZJGG(5q+'l*dD9ZTrdc#DXU5G[Q)Nb$Yk5YcDD +r5GPMXpF&b#aV!Y5PYLBB5,V9&L*XH3haTN@9[b,JrS5!QlX3e0`[E()#1$9i5`) +fEDTXH&jA##1R(fJhU!F2')q%3MDJ[DFaS,f0S86Ie@f!G[2XQSRG)*M9Q'X"GS1 +,+RrpbDm8`(Dbk`0Z)`%hQ08fZB(f*S!f9BX%fJR(0[Q$pTl'J(DG"Nk0"qfKjGl +ES$hdd9X'fM1TqU%KVD@HUQ"(GQSfUCc@Ca-!1-kPRQ-K+Ra9m+qep$(F&)eHi0J +BqIC(kl0THYK"!M+[3FAe+hT!M,%28-9[C`kY1Ke"Q&d)Pe5`"f92IP4FQa#DHH* +LE3)pjQl#V,JG1SD5VdVXbFSF9[Q!A0j5rNLIfN$#!9Ee[LUa32&CE!Dk*3apfb* +cM5BNM82HZZ2mUm1*[(8G9`aj4cRbMM,8U1Sh5pf3!-H,Nbhb[YGSj'fM)$8D90f +3!(HF)FmIGEC!pl"A39b3!&j-)Fk*Y[qhS*CrEi&D$SACc!3@80[b6-,21(A3V29 +(3(jRl[fE'SXISp#4P"523&R,V(D+hSX&kLkS50$A-JZCk&pP,M%FeU6fL,5IEd[ +R+UicGDSk@pVr8B(D'IS2+p5V#PY$rh%kF%)*M#614B!6jNQTMfqCTfbCalG%I9X +bT#6*JB9eYQSI18+rq#J[p)[33LLC,#69ATFU$NYlmF%ceN%qrCR6!34@bL+RT+5 +,$J5c(&ciNjMfC'JaJL,6m@"hD!N'Ge!Hi&1@l!NJr+k%@p!mY5cX#e2'HR935J# +VB4K&k@Xme--h!PAr"U5X),8&Cq1Li[U6033Mk*m`Z(Cap[p0ebmPd-+l0DNA5ra +5@H+A@'*[+"Y,61#,@B#P,#!P-bJC1jFa9JNqicJ%34D&%clD#8EQ+d,QR`imiN' +)I)dD&JIi4a[i"aY1"cc6e%i-&h-LTr$"lY!Dr[&Uc[!D[QNeCaLUHQM`)KTBHLE +IY3FQcK[e+"5rVf@A&$*2c5DcX'IbLM&f"c9(d30HZ!j3LDB!K4QAA1fDAZmfXfh +X!ED16H8K5Pc@8J$cC!B&h,&T&SN#Bl-!p$dANf$NT@BDTc66FeMNFfP0jDHJQ2+ +Qf)e&M2ZX31d+c8*SDeD-KlCJTLQ8MX!i4+"hc!Gk'qAJ8U"",,fFA$"8#@V'RDd +Eq9$)lLY1mV(ZP6Y*2Zj9BTYrEa(E"`KGK"abY1dlC5IEbGbIeS+j`jbj`c*c@br +&l6#aY0ZbJq&GZcqT*2-f0himi$4qJ'"kI+cZYh(Lkajl-ZR#Sl-,9mE-'#`DT%* +PDAe,93E1NHSHHa&-BRk$jABiZ1X$-#I&hKTd0BQa)Y89&!["!MF[P4aaNB-Gbe" +G8CL[5#8DkYc")VlXIrB23G9pe8l6dBNZfA68#J8j[YMYeJ%S4VDU!q@*))FBq-8 +$rD[9)%MV06qd$Q4PGQ2`kfj3bYJ'SfD9R&eL0'-3c+6l4&ZY%6V-8Zp#pba,MbZ +PG)!eH0pD&`i4R9[hprq-Qji9j1bBj!V3F0e2@0M0T0DLQ08'B!J8iKLB[l0AaF$ +Fb)UhhQd)AAFF0Q)!l64r+iL1f#)b,L0bK414h9(H'*VVT#ALUXccDiC"imeY)9Q +`KMi[*b6I((4e@2bEleCM+lSrY)K"#!ec9"ph9CDHYd'eri4P4169PL5irr4c0'# +4G29&k(430)J2KY-dAX@FPaf[mGQkl88aRE-T0N0ml#fe,5JeeA0$4(!Z`Kp$0eh +RYTT1RVMc',PdE%VU!4qC,R&c51VHN!"EjSiXNjZ89jNG+*CUE!@3!0T[1Ba(,D, +$jcTfJ["Uq)RaELlVIBh9NT@*#R-pUX3jU1KcJBb))ZJe9,PG)28Yq)RJ4F$&!$F +A#cM#Jd&$)Jbm80a9j`qd`$%0R`rD8q`riU$!6@[&ee`SCXA"Qb&GZr5KDNjDVCS +4a)P)1p3``R2K5!UDYNPRK+'F'k$%8XH"9VAp(KLF+V#B4*()$!cPND!h)"kjL-0 +#Yhe1i0C*J*GjAG*3UGmQE4`U4)4Y%GVf[i%+BQR`Q[FBa,5%*N*-Ld%0ZIL@56! +P+T[JSK[**)#+HL@'%P-qbP2[#Uh#T("S(#Va9ID![4`0[iic54h9R'bLm`JqHN! +R82@1ML2QT!fFh3&k!)0)f,Y"$4I1#bhR3jEPF0qCB[-kQA9-[j9%3)(M!DJ$dk$ +V1NG""jqbbKYi6&ND"Nqd[1R%P$V6YK"6G`'P'#pc&Q1BdL1k+UR[4)5VUI#Lp[3 +HTKK2#[eF9D+ISrJ2#pIi82`*4r%IT,jYS[J6(iS,[*8F`G-KT-@3!+ZJGcVEJ!( +QEaQ+,I%6VHTGENXCbjFbPLqPJ`mdI`Y'ImZVQJLEb,[d"@'f-IS+h$IZiI5kPlJ +59DiNQB**R&5#d065)Blf9#T'STQ$HMd&$IRMIJ!V(m)EbRh9#$l@G5X&,ELCY[8 +NVD(14!JdGY!(N8T&!&3qH$LD"@1fMJJM0fVerK8R,r)(8H3emA$GUhJ,,qMUA(m +LTa6kS(+K+4G'%QjTp3P$b"f+Rk&hD8M!a"`M9J'Uk-C&`9ITN!#ZL!JQ*db%P*d +FPC(qGeLMIl8ZMY#FcQi,[QB69EQV$&ekhN'JM%rXcikVh)bmA4EP+544[LCL+&B +'cCHh$$EBS(Qa#H+DaP&G`&'p'5$p'aqb`ql)"P![iN#p#!KR)2dEJ24['0TMjVU +JR9#))U@&lR1'!%&3lL0%Jk#Yi%JpljSAZSq)``P94LiTK`'p"51)`eS&`BZG#!E +"@4ZD$L&Vmb9L6"&&AA%9P*-iM[3"[`d+mYP4R0%9$%Q$@A"+9iCqcd&'(GbU9-a +"kPSGekb4@GQLpYj1k'PfC35pP6l@4cA!["mD#iHMM9!!0ZQ&Si%ASRN3bDXG0D$ +E1E+5H3ZD%(k9c(DjNZ'S5QHEUrDN(QKAZkP3'L-T3'``00TE58T+qdEMH%,d$A3 +X(Ud'mA8$LPXE'8P`3DJPc4TC'$!N!T!!dG8N[`TSQaiDTl-$$+P,MB)U4K3)@CC +qIN`C2fDLYa+[3Fr%"KAU%A43"BkBb!qU`%&l1C0KUMD!b(''$RiB+5L[m*'kV50 +-Cid%D&8P4diU3A-m41&T*RD%FDr4BQ8#bST*jQdJ"S&'$,q$Q*,&Ki($0N0!qQ! +6(bblj%&A`8r)"E(%AV`&K@E)!EEdV)r%0P5AjLFEYT3!l*(G3$M#FqYG8&3H3NN +13%bU1%`eMb[Je9%jEiqc'(SQrcL"1HANr(l-93D9X+DCAjK9J5XUd!#XRcSU``( +4r*c48BSc1PTf4VNJTd-kQMQNp"KG[GfGdJ'qS2ZF#q+(`6&P#Lk+FpTRbJf[JeS +%qq4lq[hl0[DUGA1arri#f(U-ZpL2b5lf#lSli@)r@NFAZj%U'0YfXER5U4r`8aU +!81MJ&AHaQe2aZ,GGE(G''e3bZKhFYS[Ym(Hapl9H84IEd@JAqiUBU1!Le-h&AP8 +R&rZmRiYph"h*8,+rC"3BQNFif@[GR'b([j1Y)0Yr`U`46RDVVJY1pLBE*pYXfVJ +j2Z$QFZXDkA*hEDXTR5kh@BJIDk6$IDA0IirE$!Se8Z[4U9%A81beT(+AfqXEUZf +bFERIGA1jhl9aZ@94UT[6lI!jh3iFmLJ'9)X9TrYD!hHkUA[`&A'jlqBZG`GI5+` +V5+!PEZBZi6AZG'I*6VGrdk0639lS@[-ZZ2qNX3&b"aR$X8J#FmP(+5jjZq)dMM) +ebCJA#[NFp)I)3Im-a8aad+Ga4G&9IZljY#(FmfPZl[Qd)GccD81kjcrK!pkI+1J ++dX'%--9"I`M$I#a[m$KMFV"pa$"mTN)'(RGcd4%ePrUHTX0RXU,DUmV&R$['V%& +ZjbjkPZbLMfL3!0ZEGpL(DK!eN!$!A2K*h)9AdC100FJN8j2)T@H0BJQM#il4EH& +cI3[hGqJCdSEC4&'6m+UU&16SDT4Mhlb5R%ek"1EBXm-,U,L+AEa!GD-!4DfKf3( +P`iebdI"cm12mSdkILmqfeKm&`H)U&pc*lkUN&ap$P23J+UG&U)1Vhi`#)DpB*-A +9peTHj`jSDYf('KD&`+KckZcXGrNlqbmJhaCAZC3&8A"()d9e8NBK9AAG65,@c!R +JQdSjJTd1[l4T@`lrUU%FrVeM0lNjr2X65"4(YdbZSR)bKfCFrZE-C,@Qb([X(%H +kdqPrf)IfHK19mRe+TFb!rQ%!rF-bqQ0#(Ceq"hF5lrG9*HNJ8rGhNFYrLD19A2l +lE9aq#8H[-ZRbVe03A'[MmUrM,[mk0jGrRBad%QIDjGqI`)kL!KaD*50T8%4hZe@ +K1BV6Rb!lrA&Yl9RkQh4f8IDk5R54')X!3#82!'a%!#$Q$!")dE%"cbL0JJ#h`[& +[9B)!YrS(!C!!4Q81U`E9-PhHR3m#G+A!-FI","6!!J&DFi'!$1kFRpEPm8"!J4) +)f1JI#0JlPJf!H5"J2cqUc1qSL5`BS$8Q',#8+TP'"!1D9@qf$3Ei%rFk"JEUS,U +plF"!-dk$("K`b)%"CGJU"`BFpeTJS$Nbi4FBq2(rJX$!LLHD#3`iI)%"VhpJ3(' +K4bNZp'MCKEiLJB&(kaiBD0BmlaFBB'"$bYe3i9C#U[j&[)L+H$H+q"UPL+1S)0` +X&r&dZBM(9A-d(M4(U3TAUJR*KB'!C3"G4-0b#0p,eEYI*5+$"l3%UVlEH(ifhfX +X8$$J1'GJH!3$cU"hACBrG*6'YrcM$8L0UEQHU8d8dlh2e+Cq@&bE@TXB[eLE+"d +a1m)ETHJX!(c9FDDdQRKBLLl2VRGirVZQaZhK*#NGK949bjfG9m1XmfS%5MJV`Vb +`H#B[l`pR5dIL$[GMfR%-L(2(,,KjKQ&lmBVlT!j[!-iMkr"+jL%M)q3T19+6I,$ +C(YpS6T+-1#DH0&m0LN&TSbk@H9ZhCZj&*lj#eRP2!@ed5MTi!#J2aY'TZbeLLJR +@aEH("9lfkr@A35c%QQT$MYcYY$VR$DZ"'Pf[T`IZS5%&ajdS&JAjS$4Tk2mj!Vd +6r"LI!241D!4keip!Va(K%Jim58mLE39$VFd431f%rjqKp[mEL9V!*AcYkS`F`#5 +8+4Z(BAF8cr"$`!bJH-B93[%62K6E(!%8crLr#F9AY`M&5+K*+!D"3b)VSp@i2P$ +0$)!6+AQ+RBHJ+38UdLQqM*q)[93eYlAl+KCM9ZB!%U44&a3+e))%IU8%R6V`SqN +DZ,"P0`H4%(5d"dVb8!`F`TR9'4&'iBPSTpl@rJ1%8K2cUk$H16TFUSD(RlGAfMm +C5Aic+$$L*,m4QIc#4)XP)6#5cSJVZIcGDVbTQcQ(4'5hHmpkbfS6LjIb8&R%Kq5 +[VUD9j"JkYm#'bj+16*-6K0e8-`EI8Se4M+B4`0[(%4"kN!!89eXeUj&F9'jH8de +A,"PeV&M-+P8Vm5!hQ,+QQqFp*M9j8`LG,jGTP+*e@YXpq(S32j2DM(CVJ@VIJ@E +md0H-N4(0'%IcE9HDX88h!-'(PHDC4-fMki"4F(6S3@)2kGBkH@A@'Qp#QQN5(%k +UT1f4VJD99#cD9,F+,Ye9+FlKSCN(R3U490(YhX++MY"Z%S`VhL*!dXQ!G%84rGT +`'B!SCACLm6*#XP*81*U*IBjSHQKEC%BLHm#[b(43f&8R-23#V4'JY3-XN!#)1U! +eciP@"XlI*l4Z#64[CZ5K3NCXaU!#bRr!)LS!aX&fM5ljJ*K52RH3!!R(MGN@'RD +HMe+3!",-YS$C3Mr!XZVbS%+4JmDTN!#H48+K'e@[mm,qMhHqX,2Q8JCEULkb!1) +06aUE1,Lk+1'ZA0`[jb8AP)Jj@fT8(%NqjC!!bUJ4",5`6J4dUamiT1Zq8X3YZaR +cNG"B)dLSH#q48$E-0LT%G(aA)dMSd#2ZNU[E)+'V&"*+b34L#JQ9`aA"+dK%j3D +F033C(G8)-QT')dD8aKc@RHHLh3MTCe684bQ%Y*d6dLj15,ZE)D5X#653!0*&##D +-UL-KEFEG-8&)CB6Fi+4dma8QTE,im6jLqU3I-4h9D'*khQEiBH6L"BCN6Nkl1$R +YESDFqT!!QbFMYblNG"Z3!2fI#A,DA#LQ`R@apP[L%9P"`&A1d9"Fq`S,YH$55Yd +dbY,NKa9f@q8"5M06qbfJjlKR-VC3NU2UdTTN@S6HCN!X'p)VL&%i"a(6cX(K)dK +KNbi[++%@b38V@-Hfj3&Vb"Y`$BKhaj&kR4kJ@`QIG(3C9hYSC3l(YcIB,T'k3F4 +2X)3C6aAAl$$SKekKR*!$(+#iNQi@K,%Ph,I`@*Ajk8+@&LBV@h*PIP+[VEe!Ij- +Zc-eHGqSI!J0U`VNPe`mH--cKR8jB-'&696jkY1RGrGiqk[T+rjLap,YGl"1H[D1 +i*RQ(he+B+E`3iE,Y#kj9Kp%"(3[$8SaX+F-UJ8pjQ8ZPN!!jPR#,B4ehB0J#[X) +#NUYVmNb[BSMMfH+fE"'@NB[i4Pj%ARj1ieG"3(0*#4K5`VR)NPZUc*X+MAf$UL( +B&G@em-4`5'FcXHXcUkD',T%aC9H!,f-1$eQb%&XpPT'6IpPUK5YQSMeNPZYff+5 +k()ESmVB23aS+5N,"`3`KbTD[VeHP4`EXJFlbVkmECNSEc4aS!jp#h0@5+N1H56L +UTRp1Nad$hV!LGKJU#@"NH-ReUS%6dDI23k'!NECG)'hP5kil$KM'qB(VHcJUVbB +Yc4N@(`'beBjUhf%Rk0B'4N*2P3medlZkZM59e"e)q3D%VX1UBF#`hq5fU,b060) +$UXP0(IkEcS-8Nc'&+T!!RU!pdAjlH5+1'%5&YZ*iNrfNrBp54rP*2)U4@QiN+'r +Q$dP0ief6KdLqj@DCh"$aE3KDZh4&*MF*ITYdZS6)9R@T,U[CVB+ZQfmDYYh%Ep% +3N!"4#'%"TXUNXM4*M)+*EjKS*KN8kRPirIFVkV-r4G'PN!$KZ&RmaDKUc`-dB+4 +m$ZBi)`MTDHSJh2m"c#El1"KdqJHM&GR9e&PrL++kq@LT@fUQ6MSZR!hMJp&#U3K +B)+J,SC9d5`F,B`k9dXJf)D$[G,r%*Ik&FlL3!#TERqSb*A"%eI#h,R4Rl%+R`-' +@J,IZK+#DS*c+8f-1QpEmBDB)`BM$MP2)1a+Qj0SJ"CQhf"Vqm&$+[)D3!&Cd6YP +0GACC9H6QB,aTh9NX*DEE5SrVAELpc*!!U6kiF4$T(3%@!qM-1FT1Pq(kl%J(&XZ +'%VZaf2c,2YblKlRkpRY,'!R`dMISJ0HI&)aB[R@`[0*#bbYJLcGVDir4hk4MFl, +APA9(EkUY`3G1[PYCCE`jf(e2r"j4BkbX1mCC'6*0LqI""S80+FJ-RRkXX!&j*e@ +kHG[QK($[jD66!BkZqJ-`+95bJ8@#"%$14U$Gj6M!`2-[rQA$AI4qfi,J*kM8-hR +Pr$S)UVB94#DLHNU)mI+Xh0)1ULTd36R&eY4Lm&ML$$k@i*q*SQrN4Immd-8+YpR +rj-lGqVf'2%-DaN*$X$*5f-Vq1JZcB3GTfC9NRZ&jh-JA4&IT'lJKN`Z$`D"0NNl +F4#FHJ*TU80GU)ZAP@+FTcGFPHTc5-GXP*pS-A,8KBPFqbD9ML-pXNY5454X+M*c +)hCeDlkA`!c8MT8dEXULkb1M0`#6`+0&jL`q@[rGpAbpF,($S8)NFHkiTTFAPj+I +*DB51PLS$+Q@"2j00REriL@b#4FV+qjfJHhJpd!X6k[*Al!iPACD4Xc1JG$#@P+9 ++0K$YMKBI3-R$560,(Ka"!YTf+EJm@qNk$RIJ!jHUIA"%$CV,iN'i8jUV$##KKDH +QRNZU&#ZFJdVr6+Ul'r6k$%-eF@V0Vp)I,C8AXYZ*!MbPGAMlMXT*@1$5(,5r35k +#NTL`J,NFcK5DF)l'N!$43HcJEXiB2(K4HAN4,e18PbPiH90jH4-[Ie*HrS5A[bX +[ImI,DmV,DhKj5RPj#LrMPCIaH2Q,m[)A[#a9ATELjHI+bmpp5Af,d%q%h-[AVB- +I#V92bJp5ZfK,5XhQr,3FaLM-,%q+Qr$eH2lj*(a*&fXIAijZkTm[P$#)4CTI2-a +EaC9-jq&PRL9G+UkGPjAEMaFC3&)65@bCSDJN4r@*AF-&VS(!055`eLP`6GiUI(h +"4Ah"4Ahah'J5NDMAq`Q4e3$)eE*'!j9)h@Ym$bS!$49lSH$3rc0b#UhMaPBb%j! +!UMiaPeka6E0@P*1U`"ID$5)Vp1%2b6c8)eHpIqj(`qm!+FT$BEPFRH06D12J4cF +5JBMj!-)Fl3Ce9i0+a"2KCc-UETpUMLj-U6SHKXS*AQI89PE&c0%PYiJ%P"Ufl9U +B!ZFQQTZ5jN!"0L,9%Mrqhm0)rm9&IS#&B9RTc$PkBLF4I6P9dJ5fV16,QrQ9%`f +bLd@(6VAqkeqRpU+DXhllVc2H3e*r*VKhY(BMAQKTN!$khN&D53bcGR!P"1-lANS +9M%XYI"E(&[,Pl!PRbbm(%dJp&LRqcVk$6IM")C,hpYb&me@Y1[K"(dqqbC&fMLf +[Y#42AKV55"db+j93@X@H6'[X9+BeH1VV!C8YDLm@pHA[a'$m1G@)#kerDMr%)MN +p#0h(*AbCq-+P%DM@-hIQ'$[QFTlI3EbLSdBC$%$T($F1$8URN!"iU3993I"8,Li +(S*SG1j@,eeN$8!hmq06!$4)f)dP"TAp,bd-5(Y#%!VRaCSAjqHYPePKjQH`1a0A +H"iY8kk9b'"TaHlbSr%'hfUCDJq9PEF6k26,3SC'48%[Ub$hCTUK`26'ATmBf@iD +4CYR)%PCp$-,e(U(BK3FZ16Ji`EI%C'ZT(q!EZC)F"m4Jq3caB,JE$4dV2ieNc5i +G&(0Hh'1pjkp6V49!qibjTrF%+UILikPLHP(&E62QR(kRc(j$kJe(&Tq$ZQ4rI@r +p"Q841`RT8--b5L#G(fqNQkY"YB'@`mR#90pbLJeT&S-H#Iap!q[JJ(a$YVFUVNh +YHc!90rX+[eaq@[4L%DIRTV!&PCmkaCB5I!H0`#me!1UA!k5!'Mb&LhM#JRm5JqE +9!)PEa9MrUkD!BH0["L46#mSc&18i"akZCfD[3V+0iYQVkR1P4crHT`Bra3Z!!er +5K3rhc9kP5kH[qJZIlQ2*V-VmJIF3-95200KIhL,'T[l6JXQc9iP"QL$p`+,96f8 +L54QqIkUdM`dEX[@fJ%QK+VV4D8HPUNEq)9BCJTDCX4)@4,@U!cFB'U4E!()L(%F +B+ee4V4TSLc)`5Eh',JkZi*@k83j#6D!M`1a9r@CE-Y"&Kk(4ljTEZ5F3(l3k&JD +UBKN1MSJ1BPZRK!LrXa2U,IE`X`VTbS+UXEECGr!2[m*!kT!!!k'B$efBe!jL&Pa +#l-q4TrXYYp"rQZ1!jfp1TD3APGS6jZqdr'*p4Je9VrQPbEBT*"mpb`S5EY[M)mA +@'#PMPeFLX&[)5$AGYK5!92P&3%lE6X&80Z%lF593fNqNNKhqCT@KQH12m`+16LV +'GmLGT8l0,FZcHbH2@pX,T`"N8BXATPELF8mpClXTL0JV()FL9@T+SPZd*YlmPrY +6k!8hD6Y9RGU,$ScQXaKq"-fZhhpb*5iG-03B0Y!4YB'UBIm$['AXX@'Dq5`Y2-h +)ZRKi*XpH#,A'))C"$U!8K%m1p-lBAe)d&+RVi5'I$*@Be`96chNVDfGXVT!!SQj +LSGa!B@qchC8V(VBAhE@8)hq4(c"N@3Fpdd)hZVAbA$&GkT8F8+(8G,bb$98m'S! +kpqLa))lSE'B%f$a2`bE@G(US8j!!UPXi`BaK*+80KH*H8+lfhV4Y5V'Nb&"PfjJ +mD'9dCi&)j!r2M@6%c"M4hJ15T#2515KpD+)86N"`J6Td+'V2VbG5!3&Vdd'%M[6 +RbN2([lZ$eSJ&bF@H)kAHHQ4KB20f9R4dfm0f1"j'T5!YSPI**4IXa')Zf@e`Jf9 +pC4hF#m35X86#+KZN)ZQUFJ"EYQiX&"M6C4C5I3@L6%`c'(bNV5dGU*VBYA@`["` +-6lGEP#N&2`&KF+(!Eh4pU'kh+-Sb0BpMdHGM1bipM9X#l&$,JECd5cU#-pXY4!! +h5ZRLBYPa1SYa20IX"#p1G2#Qm6m``JjNhHdXXB`3(3T"pdY4'4d3aI)Yq84aK9P +8-1')&%Xk$3*3ArLbF9#p3q`SA!p&kA5mT)Y"[0cK[F#fL!mS)5&!2AScj,!@!qN +%#68NEe0X1KGl"aGl"aHEEL[f*DIBR(`hS9c"%iQ"e6#q*+L*QY("Ei2DRJQ986` +D32J8)Yl@8`eUeF21)KV5h)DdHE),9EhC1NKT+kQE2j5f)3i"-6X+%9hdY"@LiYk +DP3Y!L#d-m)j-j)DCN@Jr'#G$%B)S8P4A6iBMG"JC`%h2SfU6'*%&m#1fBr#TbU$ +b0[PH099$,S[-6P!XliPVPUchqP5c+C'Eb3PbAkC!bj31d5*Y&YFL,ml(X1S%h!N +b'-MVNBXmliT"V!)3la#06Z"59$hf`-L!`1%d)mb@JdJ$XGhDJ2&CF*9'kG$%#1r +3G3F*i0YIY8BA"STE)m%Np@mDlJZm0YB0IA[Y&%634aceA8"Vp,%!`R@GfX[5S1j +eYNQPfmKV,$Qp`X*V2%%#h$iSAT[&1#e!0$U2e%AB92l)U#`L3QBpI`-X1P4`JR0 +1VdHq8$fjk(lXbd&k*0JP0Jq00"G#D#PR(80%5S2K8f-p6#b95Q$*c'pjB[BaSZ- +*HlP!RF3Z[0'r(BT&CB5Fl(CZ)@3m8UDp$%9`)b@)N4HFH$N2#kifX9Kq5mAbfkQ +CR[8eA4$QF0CNP`L%4CkqVcJ@S8-dFEmePY&`1cAF)B3$'c$BVE5J1cYek'2XqVS +bS[X5T36d-5-KJ+B!91S"*Lj*YEJhr$PV"i(&1ZfSbXcI"0T3MTG%bGQJ9Cf%8XY +fQmPCrJd@+F[SS'@Z1`3MFFc5#ZAj$QXk%0kF'!l#rZK$Fb-AVRpc%rN%#AMQr@N +Lh4`DMMJZ@aQDF*XM5[YQG!N*#(*BBam+ldr6&AVq+phLjd0ll4INfVmr,@13!-J +U,pc9"3CP$*!!,hHIjU%FVXKSQHF+m%2-G"-44U$E#LQB`imaKf&!R69$GRB)lFU +!9+mR+lY6lP##Hrc%(EF9*`FfrkcAFed8fd@b01KrPLXAQ`pPBS$UJm$Ei8F+D+J +Sb&80M,j%KSjNjH+qeMZT-ZZI!H)942Up!pc)d#0AGJ"*ZV'4XrXh!fb4RqihY&H +1j3GXcJ-i,4b#')fAL8q5+M*!2FC!dSKlYKZ-rS5%IA"8C@6F"lMTE"-Q1rKYXT3 +$NYK`@+QqGaiMTI9Q3%iK2L$G!`ciI--2N90D2r02*aMC8i+$pU%54"T,I-9!e$j +3ld$(i8m"@T-JX,hP!b`5eDAd!ESU()H6&ND(PTlk$p4GFl10-6")+@PL4`-c!Y) +J#q')1BC5[jXdm!$4cM!21bQIZ58&LMK45LJN0)1Xb8Y3"c8C8D*j"2[$IZclTUL +,1&('MB)9e)A0kUrK#L!e1BL3!%@8'q`aeI)%UdD-346X$Ra&46ZP2i)#md"91Qk +#YDX@%kXeKPCd8F5(Z@8!Y"iDDU,E9"M9fd!Z0Y&YTIbE@YI"AK95*f$SfB"UZjX +U6LJid!#J-'XU*fm45iX*0L*%H[Q0VC5QP$XJ!-A8NpU*iJJ2b-USITbKQZdaYD@ +d36B5*"BELR%M$UGL0`F-%(5k+6F55&NP1#&%4U2G2cL5FJf9cC38DCrh3U3b+8@ +FL3Tq@)VDKAkK2TScX2bjd`%TqR"fi&4LS$di$DV`VN6,,QPIkJ@TXZjI%(cpjSR +VC5ZBJ(6IijR@k'd"&0YdC3&PiNbB1iX8SJTePP)%#BS99SK%KZD!4-j6#"L#[5A +jHScTRF&&0+Afmq2+8$6jM@5p-MUA"hK,6bM#k81riEA2%3H)&AGB1aE56IfKdN4 ++iRXR[cm+0dQl%8kb$LiTYm6kTr+,G#)M(#5T1!r6Drr2@$!@b8kM@62mKd3T#0- +R'j`,#G10+2!r`X%,5B'2m29EZp"rYQQFaT@VZ["MeV@l6ZG[MjR9rkNfSI+Ae#C +Ga(@ke1Kl&&'EkQ1kMM6m,`LNK9Ka64&*Fm"fU%cQKapR$fQ!i-DGNeH"lQSV9(r +`h`q&[['VK)4M,jelrq4*6h3PrHI*'cGZh#IimG4mqpY#@ZrU6''mN!#BkERMc2Z +#(6qj*kF)2aFXZF)DBCRRajlAK9QHHF*hcY3Z&%Vi`rkS*dAif[0ArY"cmA(K`M, +Kl@@pRjmlZA60bIiI[GdIrI2*P"6KJ'"CrG0MpKIk-l'3!,MRrC8VK@qYA,Rh1Nj +l8AMQ[`PcANUT&#B)HClIp&U%(Ck9[E-p,jdC[elihCQPXi9IiEHhYRHL*pUA*cb +k@X"G!Y9I#UPBF%fLjbiQ5cJUf-H0%iVTbc1)caCif[T,KDZH3m,i'8++jiq[I1* +jDBE`HUjJ&9l*&Ij2l@ZHTM0[#bqGU44ZR2QTm"GKk@XAK![#qM-l*JLH-F,[hKC +H6raDq(GPrq1rI-hcMfHZ#U[2&([Dcb`6hKFfB2mjiBpRG"-%eaMKYfcr`6'[,KJ +c&@Gq,G`h46Jk4RK-f$Y'b",qda4KkK6Km"MKKi*pM1$!JhF&cmQTY8+[d0pA[-c +c(H%0)69lYG!hiCI(ITSSV*RT+6aE*YJIAV0F%+D8#E0rJH4K*pFN[RRf'@('emq +0&fTq+@aq+9-imPYKBpQb#iP2RDYpp6@K2eXir0`B)506q"%!N!-B!!!I+!!!8q! +!N!-)!*!$)!!!2c`!"kR`!*!$#PM!!&h!!!"G`!#3!aTZ!*!$!AB!6R&+JfBL3Hd +!)#!m2c`!!#)mUI!!!8T"CJ4+3'F+5%")35#!)8%!"%+R3IVrcY$m!3![##mm!!! +CELm$B3!#V&52Cd"#1!TH3UF[2%4"9%%r2!69U"p`!4(!#Pj+RfFB6R%`2+P`TdC +$qJ!U)SK"qJ!J-$bTF+C(5S0R"(!"6R91l3!L6R&+JfB#UI4`!%jeB!B!N!8"6R% +I1[rf5KpQ%NMRi1""q[rU80"1ZJ@Z60m("bmkrpj1G@"b38a"4%4$69!!!`#30&" +b3@e)jf$`G&#I`Lp)!#!J6b*8-@N!&!!B)8!!*$&m!!%!,0+4)8%!,U!#hm*-h`m +'6R9+1!THC``J+J!)C``J3#!3C`B[1[q%6R9)jam'3IVrRR!-)LS!"-+i!aTKT'B +!!6j)H[q16VS(EPK2X(Vr@QB!!3kK'Li)##S!3!!%C`BJH!+QS"XX+J!%+LS!#"J +U!!5Ae*A8)$Vr9U%H2cJ#)'B!!1a86ba))$Vr4#)'`VJ$'PK"B3$r6#!krcc!Z!- +D3IVr1##!5S9Q"+%LB!3J4D!RCJ!!Y#T))!j3J%(kr`JJJ#!kr`T4J%(kr`!JJ%* +R5(S![#m95(Vr!LmkrZ)[1[lL,cVqbLmkrXS[1[l+B3!06M!ICb!r!%U&C`JJ6D! +US#YJ"#"0S#-J6U!I)%HJ'c(I!L"JB#"1S"mJ4k!EFJ!5"1F*iaRN%3!"!#!#!3$ +J)%fJD3)!!"q!!5"0S'V9e0I83IVqGNU3!'F)F!'JQ(!$S*JJ659)!!K`!%cIB2K +1G8cIB2KJ!2kq2`!J6U!I)%HJ'c(I!L$9e0I8-$J#)$(!#Q#4b#9)!!K-hf$i6R9 +19J!!51F!1#KZ!!a(q[iU4IVq+L!8X**Y"#!5+)"+J'm5)&-LEJ!)SLiJ&0'6NC* +`!'!%-$crf8cI(!"1ANje6PErb%MR(MJQ,J!)+#i!$#KZ!"""q[fk,8Mre%)ZrmL +K'Le)rma96kJF-"mk!!a&!!"[A%KZrq``"90&2`#S$e92,blrl+J0-"mm!!a'!!" +[h%)RUCYC6bmZrq``"P0'2`#S$L!I,8$rm()"(`'TQb"Zrr"+N!"R%&92,`LTTM! +I5-"b"-#"Cm3[,[r`UD0J["!Z!"4R#PP2,VJ#TL"IS"Xr2+$m6VS%KP42,8$rd%U +!C`!"RLm!6VS$ePK25J"R#R!"(8!!&Nlk!KK)E[rN5'lri%KZrpK1ZJ9U6qm!$#! +Zrq#K(Le)rp`J#'F!!@3J,[rNS4iY52rS)!KR!!&8,blrj#m)6VS&Z&"2)!0Q!!# +Q@8m[2%024%9#CkJI)"mY32r`5S"R!!#1)%!L8()Bdm%[#8kk",4B6h)$X%&QGL! +0)%"`+0(!,8Mrp#*Zrr!N8A!BeF!Y5[ri,`T1ZJ5k@%mY32rm)'lrm+!T8%SQE[r +8*dS!+&P2,blrm%kk&F`J(h,Sd)&4J#G!!#a96dKkrM)[,[rd5'lrr#m-,`3[,[r +F,blri#mZrqK1ZJV'9%m[,[r`UD-NE[r8*@lrd!!-*@lrh!!3*@lri!!8*@lrk!! +B2cbKQ%kk!eC86bC!2cbSRdkk!dT86b)!)!Z`J@B%F!"J!R!")!!P3!!F*83!)#9 +-!#4)H[[-2cbJr$mmS2a1ZJ,i9%mI!%kk&9)r2+'B6VS$$&425S"R"(!"S*JJI!! +!!9S`%%M!i)"b"V#"CJa"qJ#Z)R`!!!-m)SJGI!!"rmJJE[r-S"Y96kJF-"mk!!a +&!!"[G%KZrq``"90&2`#S$e92,blrl+J0-"mm!!a'!!"[h%)RUCYC6bmZrq``"P0 +'2`#S$L!I,8$rm()"(`'TQe92,blrm+QQ-"p)`()%`)&R##mZrr#TSQ$#*'lrm%U +5Ca"96bm+UDB`(dM!FJ6!J@HU,`UTSf#N%#lrb"e!!"C-haai6PiJAdr[!!j1d%j +@rra)j`!`3Llrr$mmS2a1ZJ)X9%mN3%U!Ce`[!%kk!B"B6dS!Ce!J#LC!)%![+!! +-2cbJr$mmS2a1ZJ(H9%mI!%kk&$JJ5b"S!"#J(b",)'J!'+!I)(`!!!&D-"")`1# +!FJD`J@B+F!!JI!!!!c`JJ"em!!(rr"!Zrra-h``!6Pj1G8j@rqK)jami@8qTG5! +I+J")E[rSU(3J$5"!)""bKY#",8$rr#"!A%K$l[rX)YJLf&P2,ca%394"2c`%eDQ +J)"mS3#"!*&!b+J!)NQS!"$`"0#S!"T4U!!)q!MBZrr*)`cJZrqj)a*D%1!&)a*D +%DJ*5Jq+$282rpMBZrr")`cJZrqa)a*D%1!*)a*D%DJ*5Jq+$282rp$BZrrE@36e +$rrSb,[rddN)p3Iri@8p#TdKZrr4)HJ"QFJ%I!A)"2`&brbm"3LG#TkN6)"mQ3#m +!U(-'K3#3!hJ[$#",F"$4`#m)U2CC6kPe)"q`K@3#B2496kPd%"pQ!Q$fF2mr!%* +R)"qJ-Lm,U43[$+QM,blrk+Kc60mFq%jH6R8!!J!!6PB!!%MR!$!NEJ!))!SQ3#" +!)LJ!!Jb"38a"4'B@)LJ!"Jb"4%008'B+-#J!#R)$X%&R"(!!B!*`!8cI$!"1ANj +e,`TC6cmmU'j`!4m!6VS5H#"I*%KC6cmmUQj`!4m!6VS5CL*I)%Uab@B'-$`#!'! +%-$`%!#4I6R919J!!,`-f,J!)-!0)`!+!!!!)!%U!E`4`!@!#F!!Q(djH6R919[r +m51FF!$BZ!!Jr!dkkrma86ae!rrab!E!"CK!#3`Ir6VVrJ,"$EJ4`!'!S@8mr2+L +IF!%I!%kk%I!J(bS!@8mr!amZrra1ZK(J)"mS!,#&CJ*`!%cI!$K1ANje6PB!!%M +R'$!i,J!)*'i!#L"+)"!Q3#"!-K!-38&%CLJb+!!#$%&$8QBH0J4brlC"CaSJ+!! +%FKMLU!+!!*!$rc)$5-'`J@F%F!"J!R!"(8!!$NcI$"K1AL"IA%p1d%j@!!"96dK +Z!!K`rcm!6VVrNK!ICa)JEJ!))#J!"()BiUJ#3!$rB!*`rdjH6R919J!!98p)EJ! +)F2mr!%kkrf33(fF3)'i!##!S!!3#J!$rN!0J!R$r6Pj1G8j@!!")jaJi*Qi!##K +Z!!`J5c#m!`&`!#4-*)!Q2!!!!56ANJD5!!!#5!D5!*!$)#Jm!*!$J0Q5fC)S2!! +!"*!!fC,ANYQ5"T)!N!0m"T)!!)!!F!!NEJ!3*)!'NJ#3!b3'NJ#3!b!'NJ#3!dJ +'NJ#3!cj#3%cI("K1ANje6PErj%MR(cJQEJ!)+Li!$#!,+%!Y32rSF#6C`#e-rqa +`)0R!,8crm(")fF!Y62rdF$lC`#!-N!#,X)9M"R"P6[S!XN*!2J"#3$e!rq3f"h! +NYN"N5(!%YN"N"(!!B!a`!$!$@B"U!PD!j)"i!$J$,86rq0LZrqJN4"5!)#lrq0# +!d+lrm#"!-+lrj(!"&"*b!")#if$4E[rN8NGJX%*!2J"`!6`!0JG`(lC!C%4`!EC +!C!4`!'!-F!!`!e1!DJ*5J1+!H!!i!be%rrcBV[rX*%38J#!Zrrc3J0#Zrr3J3$# +'F!%8%R)!%J,MB0a!8NGJY%*!60mFq%jH6R919[r`51FI1#4Z!!JQEJ!-1Li!%#K +Z!"*#3$`!-J9`!$!"d)!d"R)!-J+`J@m83N!d"R)!-J,5JG+-)%%`J&*'B0T#3$` +!F!)p32rb0JDf4@3!!,K#3$i!3N!p32r`F!!`!q@!d)SJ3#!3,8$rp$)'F!!`!G# +,)%!B%(B!&J5f4f-!!))`,[rfFJ(!3G&Zrr"`!$!$8i!d"h)!-J+`J@mq1#lrm(B +!0J3Y3rrmeS2@M#"$5P"Q%L!Zrrc3J0#-)%!`V[rb9'lrmM)Zrr"`!$!"d)$3M#" +!-"!p32r`B"B`"G"!d%Bd,[r`FJ!b!Y+"dS`J36#!8NFJ,[rdiSJY32rdB!$rE&* +'B!$r4%cI(2K1ANje6PErr%MR($!NEJ!)0Li!$#CZ!!ib!h!!-!(QJ$J!-!0b"m" +"1J"`!#e!rr`d"()!-J,5LL""%K"`!"!"0!9b!$)#iU"b!F#"dDlrr#)ZrrcMLG+ +,)%%b%(!!-!%Y32rm8N8`"A))X%&Q"N*!1J"54$)Z!"*`!$!"d)#`V[rmB`*JUK! +Zrrm5,J!6dJ'3!!&-h``i6Pj1G8j@rra)jamJ*'i!#$JZ!!`k,J!1-J4`!$!"jS! +m!$)%G!I#3Mi"GJ!f!0D+)%-3%(3!&!!Y3[rmF!!`!63&FJ!b!Y#"jS"b!V#"C`a +b!E#"Cb"+J'FdB$)d"R)!-J*8JG++)%%5%(!!%!&b%11SJDlrr$3'FJ!b!P+"dSS +J34)3F!!3!H')JDlrr#!Zrr`d"h)!-J,LU#e!rra`rh)J0J9d!$3$NS,LU-"Zrrj +-h`6i6Pj1G8j@rpK)jami*Qi!##KZ!!iJ2!!!!564VJ!5)$`!!!*)dDi!%L!Z!") +Y32rXFL$6VJ!5)Li!%Le"rr!N2!#3!i$9VJ!5*#i!%Le#rr3N5aJ5GJ!@"#e$rrM +QJhS(aN953ce$rp`Q,[riiS0k!mC&9%-p3rrQGJ%k,[rQkf-p3rrSIN$)"h`!(!3 +p4[rLH!(VC&0%286ri#SZrrKq!FU(C`Kk!$S%8i9J!RVr28ArhRJ)286rj%T'CdB +[,J!5,`!r!e*+,`T1Z[mk6qm!$ZG!d@lrj#mZ!")[,[r`2`-[,[rX6VS,#%r[!!i +[,[rd2`-[,[rX,blrm%kkr+a2l`!13N!p32rB-#lrf,"Z!!aN!!%k-#lriQFk*%! +r,[rS,blrp$mZrq3[#dkkrBj2l`!-%J!J#R!!%!%p32rDG!!d!05Zrq`J3K!3FJ! +5!00Zrq4J($mZrqBr,[rN,`Y1Z[h`8%mp32rD-#lrjY&Zrq3`,[rDX'lrhQB@-Ll +rf&*ZrpK`!$!"d)`J3%)3B!$rHM!ZrpU`E[rJCJ!!P$!Zrq*R1L4!2blrk#mZrr3 +r,[rN,`Y1Z[d'6qm!$")!)!T`!"!"28$rfR3!0!$8V[rX)%)3%()!%J$6E[rNB"` +r,[rQ2blrj#m,6VVpD&"228$rfM!ZrqE4E[rN9QlrfM!ZrpT6E[rD5N"R!2m!1#l +rf(B!0J3Y3rrm8i2@M#"$%"!L,[rmdS`J34#!8Qlrf'$1%#lrhG!ZrpXd,[rB8Ql +rf()!-J,5M#""%)"J!2kq-Llrj(!!-!&HJ1D!60mFq%jH6R919[q-51FI1#CZ!!J +U,J!-+'i!%#`Z!"3Y5rr)F#6A`#e,rq"`)0I!,8[rc(")em!Y5rrN,8crP#Bm!!! +"*0HZrj3J2!!!!NM4V[q8F#$4V[q8+$`!N!1!fDlrP0QZrj3YE[q8rl3S2!!!"*! +!fDlrP#eZrj6rZ0HZrj3YE[q8rlcCV[q8,@lrP2r8F(c4V[q8,@lrP2qN)$`!!)! +!dDlrP#!Zrj53!)b`K@-+F'8p3!!S6[S'HR!!,J"#3$e!ri`NE[qNeI`!!)!!,8V +rU#eZrk6rN!!YI!!!J!$rk%KZrqJ[,[qN)'i!*%k3!&"2)#lrk'B+F'Fp3!!S6[S +'0#4Zrj!!8NUel[qSBfJJE[q3!&*)NHlrU#e)rr3JE[q3!*(Zrk3Y52r`)'lrU*( +Zrj!!,8Mrl#!)C`iJE[q3!#*Zrk3J,[rXSLiNE[qNeHlrl#e+rj!!5'lrm#mZrk3 +JEJ!N6T!!8%mJ,[r`X+lrp'3+F'Fp3!!S6[S&`#"Zrj!!8UlrN!!3%"e!rk"b!") +!dN&636e"rp!`,[r3d%!p32r5)'i!(#!3d+i!)#e!rl!N3#m-,blrZ$mm!53[,[q +3!%kkqr*2l`!1-J!J#R!!-!(4V[q3!#m-,blrY$mm!53[,[qi6VS(ZNr[!!i[,[q +m2c`"*#mZrlJ[,[qd6VVjA%r[!!iN3#m-,blrZ$mZrp![,[q3!%kkqk"2l`!1-J! +J#R!!-!(4V[q3!#m-,blrY$mZrp![,[qi6VS(D%r[!!i[,[r82blrd#mZrlJ[,[q +d6VVj#Nr[!!j`!#i!3N!p32q-,@i!)2qX)'lrV,(Zrl"N!!5S3N!p32qB$'i#52q +BC!!!`M!ZriaQ!!#-*'lrN!"55VAZrkKMD#"Zrj!!8NL4l[qS,8Mrp#"Zrj!!NHl +rT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)QlrT#!ZrqbL,L4Zrk69l[rX,8V +rN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T`Cce!!#K1qJ4#)'lrN!"5V[q +3!")3F!!3!5i!F!Jp32q--!Gb!F""d@lrQ$)ZrjK`!$!"d)$3V[qm)%!`%$e!rjJ +J"q+),J"6E[q-B!$r1!4Z!NMrQ!aZ!3$rQ'33)'lrV&+Zrk`3V[qCB!$r#!4Z!3$ +rQ$JZrjKf!$B%,82rq0D$eUlrc#"$-"!p32qD)Llrq0+ZrmJJ34)3F!!3!6e!rja ++3'F!!-)-EJ!BriaL!!#B*'lrN!"55VAZrkKMD#"Zrj!!8NL4l[qS,8Mrp#"Zrj! +!NHlrT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)QlrT#!ZrqbL,L4Zrk69l[r +X,8VrN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T`Cce!!#K1qJ-S)'lrN!" +5V[q3!")3F!!3!63Zriab!$)#ikL1J&"ZriaJ!2pLF2pb)$JZrjaf!$B%NS2LU-" +(d@lrQL!(jUJZ!*PZria#3$e!rjJ`,[qBX'lrdQ3!!-)`,[q-CJ!!M#4Zrj!!8NU el[qSBfJJE[q3!&*)NHlrU#e)rr3JE[q3!*(Zrk3Y52r`)'lrU*(Zrj!!,8Mrl#! )C`iJE[q3!#*Zrk3J,[rXSLiNE[qNeHlrl#e+rj!!5'lrm#mZrk3JEJ!N6T!!8%m -J,[r`X+lrp'3+F'Fp3!!S6[S%3L"Zrj!!8UlrN!!5%(!!%!%Z!(!)28$rM$!(FJ( -!3G&ZrjJb,[qBF!!`!G#!d+lr[#"!-"!p32qB)!ILL#i!8flrM'!!rcJ%EJ*)rjJ --EJ%!rjKN%#"Zrka5V[qX%+lrQ@!!r`J%EJ%!rjJi,[qBGJ!f"#e$rrM@JpDZrm` -J3c!328$rQL)ZrrM5V[r))%%5%(!!%!%p32qF5N"R!!$#$'i!'2q-BJ!!Q#4Zrj! -!8NUel[qSBfJJE[q3!&*)NHlrU#e)rr3JE[q3!*(Zrk3Y52r`)'lrU*(Zrj!!,8M -rl#!)C`iJE[q3!#*Zrk3J,[rXSLiNE[qNeHlrl#e+rj!!5'lrm#mZrk3JEJ!N6T! -!8%mJ,[r`X+lrp'3+F'Fp3!!S6[S$+#"Zrj!!8UlrN!!5%(!!%!%d,[q-FJ!b!Z1 -SMS"3E[q-B!$rBR$rFL!i,[qFGJ!f"*+$iUM!4p&ZrjSJ"qDS,J#CE[q-3N!p32q -B-#lrQ,"Zrp*N!!$#-#lrM'B!!)`NE[q3!&*+YHlrU'0S)'lrN!"55*(ZrkJY52r -d)'lrN!#4l[qN,8Mrm#"ZrkL4l[q3!#e)rq`J#'F1)'lrN!!LE[qN)#lrl+)Z*'l -rT0AZrq`Y5[q3!%KZrr![,[qN)'i!*%k3!&"2)#lrm,#Zrr4N#R"R28!!+%lk!PJ -JE[q3!&+Zrj!!%K"`!"!",J"`#$e!ri``"h)"`%(4E[qB-LlrQ(!!-!(3J0#Zrp3 -J3$!328$rQ#!(iSJZ!&0ZriaJ!2mf-#lrdT&ZrjJi,[qBGJ!f"#e$rrc@JpDZrq3 -J3c!328$rRL)Zrrc5V[rJ)%%5%(!!%!%p32qF5N"R!!$#$'i!'2q-BJ!!Q#4Zrj! -!8NUel[qSBfJJE[q3!&*)NHlrU#e)rr3JE[q3!*(Zrk3Y52r`)'lrU*(Zrj!!,8M -rl#!)C`iJE[q3!#*Zrk3J,[rXSLiNE[qNeHlrl#e+rj!!5'lrm#mZrk3JEJ!N6T! -!8%mJ,[r`X+lrp'3+F'Fp3!!S6[S"@L"Zrj!!8UlrN!!5%(!!%!%d,[q-FJ!b!Z1 -SMS"3E[q-B!$rBR$rFL!i,[qFGJ!f"*+$iUM!4p&ZrjiJ"qDS,J#CE[q-)'lrV$) -Zrjj`!$!"NF!Y52q8XHi!)'9J)'lrP&+Zrj33%#"Zrka5V[qX%)!JE[q88UlrP"! -3)'lrV&+Zrk`3J#"Zrj45V[q8%"!JE[qX8UlrV"#!-#lrQP0ZrjT+3'F!qpiJE[q -88UlrP"!3)'lrV&+Zrk`3J'$F9QlrQL"Z!"M4aM)Zrjj`!$!")QlrV*2Z!##3!)Q -4`#e)rj3`,[qDCbBJEJ!BdFDal[q8BaSJE[q88UlrP"!3)'lrV&+Zrk`3J&0ZrjT -Je#eZ!#$rP$!ZrjT6E[qD5N"R!2YQ)'lrP&+Zrj33%#"Zrka5V[qX%)"Jh#"Zrkb -al[q`C`K`Cce!!#KJ&#"Zrkb4lJ!J)Qi!(#+)3N!p3!!S60mFq%jH)&p2l`!J6Y! -!F$`!2L!!!(JJ2M!J*LBJH#!m26-b!!!k3fpYF(*PFh0TEfik4'9MEfe`FQ9cFfP -[EM!c-$%ZB`!!2!!q)!!!H#!q-#!Q*L"i)$`p-c)!!$T$Efe`FQ9cFfP[EMT%C@0 -[EA"bCA0cD@pZ-$-`-5jM!!"19[rS51FI1$iZ!!JSEJ!-0Li!#R!!-!-i"h)!-J5 -3!)&b!E#"E`!"Y$e%rqJp3rrU8Qlrk$!ZrqL`EJ!+C"ab!$)!dS`J34!30!Gb!$) -#dS`J34)3X!&N!Q$@8flrkM!ZrqU`4f-FFJ!b!0+-)%%3%$3(FJ!b!Y+-)%%5%,! -"B`*Jf$!ZrqL`E[rUC3*JFMJZrqKf!$B%,82rm0D-*%-5%R!!%!%p32rX1LlrkRJ -!1!8Y42rdf)`Q4"!6&)!@V[rY)#lrm0#!d+i!%#"!-"!p32rX)Llrp0+"dUi!%#" -"-K!N,[r`e),8VJ!3)%)`J5)Zrr65JG+Z!"!J36#!B!$r-M!ZrqU`4fB'8NGJ!2m -%1!Gf!$B%,82rq0D-*%-5%R!!%!%p32rX2#lrkRS!1JBY4IrmfS`Q44!6&)!@V[r -Y)#lrq0#!d+i!%#"!-"!p32rX)Llrr0+"dUi!%#""-K!N,[rie),8VJ!3)%)`J5) -Zrrc5JG+Z!"!J36#!)#lrr#)ZrrL3!)%d,J!+FJ!b!L3Zrra5JT+#X)&X(LmZ!"! -[$$m'2`41Z[jF6qm!$$!ZrqT53$i!B!$qA#mZ!"![$$mZ!!S`,[rU8N!r!%kkrMC -2l`!-2@lrkJ!+B!$q1%cI(2K1ANje6PErj%MR(cJNEJ!)1Li!$#CZ!!iSEJ!5,8c -rm#!m!!!"*0R!,8crp%*!2!!f"VC&C#ai!$J$,86rq0L+)%33%#)ZrrM5V[r`)%% -3J#!ZrrM3J0#Zrr3J3$#$8NCJcLmZrr3[,[r`2`9#CdkkrE*2l`!-3N!m!$B'YN9 -N%R!!-!23V[r`)%"+%'B%8NCJk(!!,8$rj$B'YN9N!!#S5N0R-L!Zrq4i!$J$,86 -rr0LZrr!J4"33FJ!5!LBZrra6JpDZrr!J3aB3G!!8!j+#ikJY32rN0!Cb!$)#dUl -rm#""%K"`!"!"2J!YE[rNrqa`!#e!rqJ`"e0(5N"R)#!ZrqMML#)Zrqad!F+#J)% -Y32rS)#lrl1+),8$rl'$B0!Cb!$)#dS(5V[rd)%%b%(!!-!(PJ0#,)%!JV[rS8NC -5V[rNB!$r9%cI(2K1ANje)PmJAk!P,S"U!N+A6Y%LAa)I-"p+!@F%TdCJ!U0',SK -1d5*I%Km`(b"I5J&R"+C(B!+L4dl4!*!$#J!iS!%!"3#3"J%!!!'MLJ!"SSS!!!9 -,8dp59!I#!)!!(!4b!"C"6&*8!!S!ZN&9Fc)!!!%q3Nj%6!!"!8T$6P4-!!!"BN0 -24%8!"`&Z4%&833!!!Fj%594-!!m"fN4-6dF!"!+D4P*&4J!%!YC'C@&d!!!$%NP -$6L-!"!-H58026J!!!eT35808!!3$CP"cCA3!!!1L8dPD43!!!kj69&)J!!%$ZP0 -88L-!!!25BA9cG!!"!pjMD@0Z!!!$pQ4MG')!!33#C'aRH!!"""TTBf`i!!!%-RC -PFR-!!33q!)$rrb!!N!L"rrmJ!!!3!*!&J[rr)!!!)!#3"BArrb3!!$!"*H[X!)E -rrb3!!%!"*H[S!)Irrb!!!&!!N!@)rrmJ!!"J!*!%!J$rrb!!!()!N!3#!Irr)!! -!JJ#3"!3"rrmJ!!#5!*!%"+rrr`!!'&J!N!FH!!!BD!#3"B$rr`!!')`!N!3"!2r -r!!!Ba!#3"!%)rrmJ!"MN!*!'rrmS!BIJ!*!&!3#G(!!QV`%Pkm`!!J#R(!#`I!% -PkmJ!!`#a(!$0R`%Pkm3!"!#l(!%*X3%Pkm!!"3$&(!%l2J%Pkl`!"J$2(!&Em3% -PklJ!"rrr!!')#J#3"[rr+!#"l!#3"B$rr`#3!k)!N!@#rrm!!!%!N!D&rrmN!!& -H!5AVj!#'rrmN!!'d!5AVi!#(rrm!!!)e!*!&L2rr!!!#K3#3"EArrb!!!ed!N!3 -""Irr)!!$c`#3"!%(rrmJ!"Mr!*!%!3Mrrb!!'D!!N!3#!2rr!!!%I!#3"!)"rrm -!!!5k!*!%!qMrrb!!"3B!N!3%!Irr)!!&-J#3"!4,!#d%!"T$!5AVh!5[rrm!!"U -6!*!%!38!!#!!"E)!N!3""`!j)!!Dd3#3"!%)!%SJ!"VY!*!%!qMrrb!!"G3!N!3 -%5`"Q"!!E#3%PkpJ!J2rr!!!E)J#3"B(rr`!!'bd!N!@#rrm!!"Xi!*!&Jrrr!!! -E3`#3"B6rr`!!'di!N!Err`!"SR`!N!@!rrm!!"YC!*!&JIrr!!!FA3#3"B,rr`! -!(@%!N!@$rrm!!"jP!*!&K2rr!!!ID3#3"!4,rrm%!#"Y!5AVe!##rrm!!!A`!*! -%!qMrr`!!"a-!N!3%62rr!!!1)3#3"!40rrm!!!rD!*!%"%lrr`!!%C-!N!@!rrm -!!"-K!*!%rj!%!!'(r!#3"!)!!!FJ!"GB!*!%!J%!$L!!&fJ!N!@!rrm!!"Gd!*! -(FJ!!)1J!N!@%rrm!!#&$!*!%"%[rr`3!)8F"*H[3!3Arr`!!&l3!N!3"#2rr!!! -LE3#3"!%&!"F!!"IP!*!%!3J!J3!!)U%!N!@%rrm!!#+V!*!&!Irr)!!Al`#3"3, -rrb!!'$)!N!3'8h4KG(9c"R"bEfe`G!M%)(0eCQCTH!C6G'&dGA-16hGZCA)JFQ9 -cEh9bBf8,5@jcCA*d)%4TFfX34AKTFh4TEQG3BA0cGfpbC"Y&H'PcG'PZCe"KFh0 -hEh*N,8&`F'9KFQ&ZBf8,5@jcCA*d)%4TFfX16hGZCA)JFQ9cEh9bBf8E4AKTFh4 -TEQG3BA0cGfpbC#e"F("PBA*KEQ0P#90PCfePER3J-3P6C@GYC@jd)$)*8f9RE@9 -ZG#!c#90PCfePER3J03P6C@GYC@jd)$B*8f9RE@9ZG#!fDr!: +J,[r`X+lrp'3+F'Fp3!!S6[S#@#"Zrj!!8UlrN!!5%(!!%!%Z!(!)28$rM$!(FJ( +!3G&ZrjJb,[qBF!!`!G#!d+lre#"!-"!p32qB)!ILL#i!8flrM'!!rcB`,[r5N@l +rQ$JZrjKf!$B%,82rr0D$eUlrj#"$-"!p32qH)Llrr0+Zrq!J34)3F!!3!6e!rja ++3'F!!-)-EJ!BriaL!!#B*'lrN!"55VAZrkKMD#"Zrj!!8NL4l[qS,8Mrp#"Zrj! +!NHlrT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)QlrT#!ZrqbL,L4Zrk69l[r +X,8VrN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T`Cce!!#K1qJ&D)'lrN!" +5V[q3!")3F!!3!63Zriab!$)#ikL1J&"ZriaJ!2pLF2pb)$JZrjaf!$B%NS2LU-" +(d@lrRL!(jUJZ!*PZri`JE[qX-LlrRR!!-!'4`#e)rj5alJ!JC@!JE[q88UlrP"! +3)'lrV&+Zrk`3J#"Zrj45V[q8%"!JE[qX8UlrV"#!)'lrP&+Zrj33%#"Zrka5V[q +X%)!`,[qD8flrQNT!C`$lhL"Zrj45V[q8%"!JE[qX8UlrV"#!B0a@E[qD)'i!'0( +'-LlrRR!!-!%LE[qXNqi!)*!!LC(!,8MrP$!ZrjTR*L"Z!"M4aV(Zrj4M'L"Zrj4 +5V[q8%"!JE[qX8UlrV"#!8flrQQ$8,@i!)2q8-#lrQP0ZrjT+3'F!qfBJE[q88Ul +rP"!3)'lrV&+Zrk`3J'$F)'lrV,(Zrl"R#("R28!!+'!8)'lrV*(Z!#!LEJ!F)SK +#3$e!!#K-haci6PiJAdr[!#"1d!"`2!!q)!!!H#!q-#!Q*L"i)$`p-c)!!$T$Efe +`FQ9cFfP[EMT%C@0[EA"bCA0cD@pZ-$-`-5jM!!!m!$iJ!!"i)$i`)#BQ)(JJ2$d +c-J!!1N0[EA"bCA0cD@pZ1N4PBfpYF(*PFh0TEfi`-c!a,Q-!!%j@rqK)jami2Li +!##KZ!!`f,J!+F!!`!cJ(FJ!b"*!!JA)"X)&[!!'d286rk$e$rqT5E[rS-#lrk," +Z!!TN(()!-J$5M#""%"!d"h)!-J,5M#""%K#`!@3#B0C6E[rU-#lrkV"(Baab!$) +!dS`J34!30!Gb!$)#dS`J34)3X!&M!Q$B-#lrk,"ZrqTP!Q"b1#lrk(B!0J3Y3rr +`eS`N3a)5F!!3!6e!rq`k,[rUH!!i"5e%rr6BM#C%%"-8J"DZrqdJ,[r`d)$3VJ! +3)%!`%$e!rq`L,[rddS(5VJ!3)%%b%#3Zrr$8JY5Z!"!J3M#")Llrp0+"dUi!%#" +"-)"J!2mb-#lrkV"(CJC54f!!r`3i"hB!0J3Y3rrieS`N3a)5F!!3!6e!rq`m,[r +UHJ!k"Le&rrcDM#C&%"-8J"DZrqdJ,[rid)$3VJ!3)%!`%$e!rq`L,[rmdS(5VJ! +3)%%b%#3ZrrM8JY5Z!"!J3M#")Llrr0+"dUi!%#""-)!J,[rm)Llrq*!!J63Z!!T +b!$)#*#lrr&+#NS+`J@`H,bi!%#m-2`Br"%kkrPa2l`!--#lrkP*!2J"J!2jF,bi +!%#m-2bi!#M!ZrqT53$m!6VVq0Nr[!!`pE[rU!!TJ!2ii60mFq%jH6R919[rN51F +I1#4Z!!Jk,J!-*Qi!$LKZ!")Y62r`)$`!!!%NfF!Y62rd3N!m!$B'YN9N,(J!1!- +Y42rif)SJ4"!3)Llrq0+Zrr!J34#!)#lrq0#!d+lrp#"!-)054Q$1,blrp#mZrr! +r"8*R6VVpXNr[!!a#3$`!0JDf4@35F!!`!p#Zrr!J3%S3CJ454Q$SF!!Y32rN0JD +f4@3!!+K+3fFb)#lrj(J!1!-Y42rmf+lrm#"%&""b!")#*Llrr&1$eUlrm#"$&K" +d!"3$NS,MU#e!rq3d"R)!-J,5V[r`)%%5%(!!%!%q!#eZrq6rl(!!,8$rk$!(8dG ++3'FJ)#lrk11))Llrl(3"`S+!J5e!rqJJ,[rXiSJY32rXB0Jd"R)!-J,5JG+Zrr3 +J36)3F!!`!H@!d)XJ3##ZrqK54P+Zrq4J!2p860mFq%jH6R8LAb"IS#8ZJ'S#3TG +1d5*I%Km`(dS"C`5R4Q!#SdBZL%l4)Pm5(c!I)&p+!@F%TNGJ!U*(6Y%!!!%!!!) +rR`!#2Tm!!!5N8dp59!1H!)!!(!2D!"9"6&*8!!S!XN*14%`!!!%f3dj86!!!!8* +$6d4&!!F"6N4"9%%!!!'Z4%P86!!2!ET%6%p(!!3#HNC548B!!!+f5801)`!!!X* +*3dp1!!!#cP"*3e3!!`,D8(0PG!!!!`T659T&!!!$&P088L!!!3-L8e45)`!!!cT +KGA0d!!!$4Q0TBfi!!!05C'0dBJ!"!ejNE'Gi!!%$GQPME$J!!!11D@0ZF`!!!jT +fCA*c!!%$TJ#!rrmJ!*!$)2DTK!#"rrmJ!!!3)2DTJ!##rrmJ!!!J)2DTI!#&rrm +N!!!`)2DU'!#'rrmN!!"!)2DU(!#(rrmJ!!"3)2DTH!#)rrmJ!!"J)2DTG!)!rrm +J!!"b)2DTF!)"rrmJ!!##)2DTE!3"rrmJ!!#5)2DTD!5[rrm!!$%8)2DTC!%!rrm +!!-k')2DTB!%)rrmJ!$%N)2DTA!!!rrmS!L3$)2DT@!!"!)iF!-kQ)2DU"!!#!*J +F!8XQ)2DU!!!$!+)F!@IH)2DTr!!%!+`F!D@$)2DTq!!&!,BF!GF3)2DTp!!'!-! +F!IJk)2DTm!!(rrm!!L3Y)2BjV!!!rrmS!4eK)2DT9!#!rrm!N!1L)2DT8!##rrm +!!!%!)2Bk2!#&rrmN!!&H)2DU%!#'rrmN!!'d)2DU)!#(rrm!!!)e)2Bk1!#)rrm +!!!+&)2Bk0!#errmJ!!0G)2Bk-!%&rrmJ!!22)2Bk,!%(rrmJ!$%r)2Bk+!%)rrm +J!$(J)2Bk*!)!rrm!!!5!)2Bk)!)"rrm!!!5q)2Bk(!2SrrmJ!!8+)2Bk'!3"rrm +J!!8J)2Bk&!4,!"i%!$+$)2DU,!5[rrm!!$,6)2Bk%!%&!!!J!!@J)2Bk$!%(!#S +J!$-4)2Bk#!%)!$XJ!$-Y)2Bk"!2SrrmJ!!A#)2Bk!!4,!&F%!$0*)2DU-!#%rrm +!!$0L)2Bjr,qjrrm!!-f#)2Bjq!4,rrm%!$0Y)2DU#!##rrm!!!AH)2Bjp!2Srrm +!!!F")2Bjm!4-rrm!!!i2)2Bjl!41rrm!!#Ya)2Bjk!#!rrm!!#[P)2Bjj2q3"!! +#*"mJpMRJ!J!!"b!!-"`JpMRF!J%!$L!!-#`JpMRB!)$rr`!!-$JJpMR8!*!$B`! +!-qJJpMR3"%[rr`3!0%-JpUS-!3Arr`!!-(JJpMR-!3Mrr`!!0@NJpMR)!38!&`! +!-+NJpMR%!3J!FJ!!0CdJpMR![lRrr`!!bAiJpMQm[lRrraJ!0DFJpMQi!!(rrb! +!-,-JpMQd!!,rrb!!-2)JpMQ`"P0dBA4eF`C`FQpYF(3)a#"cG@CQDAJ'8h4KG(9 +c#dPZFf9bG#"%DA0V%%9iDA0dD@jR8'&cFhG[FQ3E4AKTFh4TEQG3BA0cGfpbC#e +"F("PBA*KEQ0P#dPZFf9bG#"%DA0V$NphEQ9b)(*PFfpeFQ0P'd9iDA0dD@jR8'& +cFhG[FQ3Y3A"`C@&bB@jMC3P6C@GYC@jd)$%*8f9RE@9ZG#!b#90PCfePER3J-`P +6C@GYC@jd)$8*8f9RE@9ZG#!f#90PCfePER3J0RQ*: diff --git a/docs/mac/install.txt b/docs/mac/install.txt index 6704369180..3ce9533a50 100644 --- a/docs/mac/install.txt +++ b/docs/mac/install.txt @@ -1,26 +1,45 @@ +Installing and compiling wxMac +============================================================ + +On MacOS X, you can download Apple's free developer tools (gcc +and associated headers and libraries, such as the Carbon API). +You can then use configure in a similar way to compiling +wxWindows on Linux, (or on Windows using MinGW or Cygwin). See +'Apple Developers Tools' below for more details on using +configure. + +To target on MacOS 8 or 9, you need to buy Metrowerks +CodeWarrior. You can then compile Mac Classic or MacOS X +applications on Mac OS X, or compile Mac Classic or MacOS X +applications on Mac Classic. However you can only run and debug +each type of application on the target operating system. + Installing latest headers (and Carbon Support) ---------------------------------------------- -NOTE : these steps are not necessary for Pro 6, only for Pro 5.3 +NOTE: these steps are not necessary for CW Pro 6 and above, +only for CW Pro 5.3. -the latest build for carbon support lead to a few changes you will have to +The latest build for carbon support leads 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) +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.4.0 (or greater) universal interfaces from - ftp://ftp.apple.com/developer/Development_Kits/UniversalHeaders3.4.1.img.bin -3. put the Interfaces and Libraries Folder into the MacOS Support folder and replace older versions -4. remove from the MacOS Support folder the separate OpenTransport folder +1. You need CodeWarrior Pro 5.3 , i.e. 5.0 with all the upgrades. +2. You have to download the 3.4.0 (or greater) universal interfaces from + ftp://ftp.apple.com/developer/Development_Kits/UniversalHeaders3.4.1.img.bin. +3. put the Interfaces and Libraries Folder into the MacOS Support folder and + replace older versions. +4. remove from the MacOS Support folder the separate OpenTransport folder. 5. open the file MacOS Support:MacHeaders:MacHeaders.c and add the line #include after the #include -6. rebuild all MacHeaders from the MacHeaders.mcp project in the same folder +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 +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 +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) @@ -43,8 +62,9 @@ libraries and headers from http://developer.apple.com/opengl/index.html 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, set wxUSE_OPENGL to 0 (the +default) and remove the file OpenGLLibraryStub from the project +before compilation. 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. @@ -56,16 +76,22 @@ 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 + - *M7.xml -> *M7.mcp for CodeWarrior 7 and above. In order to build the library (and then the samples) you need to make the -following projects (for 5.3) -:src:wxxindowsM5.mcp +following projects (for CW 5.3, similar process for CW 7): + +:src:wxwindowsM5.mcp :src:png:pngM5.mcp :src:tiff:tiffM5.mcp :src:jpeg:jpegM5.mcp :src:zlib:zlibM5.mcp +Note that if using CW 8 and above, when compiling the samples +you may need to edit the target settings, click on Language +Settings, C/++ Language and remove the forward slash at the +start of /wx/wx_cw_d.h (or similar filename). + AppleScript Files ----------------- @@ -125,3 +151,4 @@ Missing PLStringFuncsLib ------------------------ You will have to build All Targets for MacOS Support:Libraries:Sources:PLStringFuncs:Glue:PLStringFuncsGlue.mcp + diff --git a/docs/mac/readme.txt b/docs/mac/readme.txt index be39b1ff7a..8ec6507fc0 100644 --- a/docs/mac/readme.txt +++ b/docs/mac/readme.txt @@ -4,7 +4,7 @@ More Information is available from the wxWindows project home page at http://www.wxwindows.org -For more information, please see changes.txt, todo.txt, and the +For more information, please see install.txt, todo.txt, and the manuals. Please send problems concerning installation, feature requests, @@ -12,7 +12,7 @@ bug reports or comments to the wxWindows users list. Information on how to subscribe is available from the wxWindows.org homepage. Questions/Problems related directly to the mac port can be sent directly -csomor@advancedconcepts.ch +csomor@advancedconcepts.ch. wxWindows/Mac doesn't come with any guarantee whatsoever. It might crash your harddisk or destroy your monitor. It doesn't @@ -20,4 +20,4 @@ claim to be suitable for any special or general purpose. Regards, -Stefan Csomor \ No newline at end of file +Stefan Csomor diff --git a/docs/mgl/install.txt b/docs/mgl/install.txt index 133e568a3a..6da271dc36 100644 --- a/docs/mgl/install.txt +++ b/docs/mgl/install.txt @@ -11,20 +11,25 @@ IMPORTANT NOTE: When sending bug reports tell us what version of wxWindows you are using (including the beta) and what compiler on what system. One - example: wxMGL 2.3.3, gcc 2.95.3, Redhat 7.0 + example: wxMGL 2.3.4, gcc 2.95.3, Redhat 7.0 First steps ----------- - Download SciTech MGL library (version 5.0) from http://www.scitechsoft.com. - The downloads page is here: + The downloads page is here (you need MGL version 5.0beta7 or newer): http://www.scitechsoft.com/products/embedded/mgl_home.html - (You needed a version newer than Beta 5! Preferably the up-to-date one from - SciTech Perforce repository.) - Install it according to provided instructions. In particular, make sure that + + Install MGL according to provided instructions. In particular, make sure that MGL_ROOT and NUCLEUS_PATH environment variables are set before attempting to build wxMGL. + Make sure you installed all MGL components, including the "fonts" package + (it's called mgl50b7-font.tar.gz in Linux version). It is important to have + SciTech's basic fonts in $(MGL_ROOT)/fonts directory (you may want to add + Arial TrueType font for better output quality) and basic cursors in + $(MGL_ROOT)/cursors. wxMGL depends on their presence. + - Download wxMGL-x.y.z.tgz, where x.y.z is the version number. Download documentation in a preferred format, such as wxWindows-HTML.zip or wxWindows-PDF.zip. diff --git a/docs/microwin/readme.txt b/docs/microwin/readme.txt index c9d3d56524..05978742be 100644 --- a/docs/microwin/readme.txt +++ b/docs/microwin/readme.txt @@ -60,7 +60,7 @@ MicroWindows: wxMicroWindows: -- Download wxMSW 2.3.3 or greater, or get it from CVS +- Download wxMSW 2.3.4 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 diff --git a/docs/motif/install.txt b/docs/motif/install.txt index c0c3157acb..005100d99f 100644 --- a/docs/motif/install.txt +++ b/docs/motif/install.txt @@ -1,4 +1,4 @@ -wxWindows 2.3 for Motif installation +wxWindows 2.4 for Motif installation ------------------------------------ IMPORTANT NOTE: @@ -11,7 +11,7 @@ IMPORTANT NOTE: When sending bug reports tell us what version of wxWindows you are using (including the beta) and what compiler on what system. One - example: wxMotif 2.3.3, gcc 2.95.4, Redhat 6.1 + example: wxMotif 2.4.0, gcc 2.95.4, Redhat 6.1 First steps ----------- diff --git a/docs/motif/readme.txt b/docs/motif/readme.txt index d8f0554207..cb9610d0d2 100644 --- a/docs/motif/readme.txt +++ b/docs/motif/readme.txt @@ -1,7 +1,7 @@ - Welcome to wxWindows/Motif 2.3.3 + Welcome to wxWindows/Motif 2.4.0 -You have downloaded version 2.3.3 of the Motif port of +You have downloaded version 2.4.0 of the Motif port of the wxWindows GUI library. More information about the wxWindows project as a whole diff --git a/docs/msw/install.txt b/docs/msw/install.txt index 5e93a604ec..2005a668ff 100644 --- a/docs/msw/install.txt +++ b/docs/msw/install.txt @@ -1,9 +1,9 @@ -Installing wxWindows 2.3.3 +Installing wxWindows 2.4.0 -------------------------- -This is wxWindows 2.3.3 for Microsoft Windows 9x/ME, Windows NT, -Windows 2000 and Windows XP. This is an unstable development release. +This is wxWindows 2.4.0 for Microsoft Windows 9x/ME, Windows NT, +Windows 2000 and Windows XP. This is an official release. Please note that the library naming conventions for VC++ compilation have changed after 2.3.1. This means that @@ -25,11 +25,15 @@ Please report bugs using the SourceForge bug tracker: Unarchiving ----------- -A setup program is provided (setup.exe) to automatically copy files to a -directory on your hard disk. Do not install into a path that contains spaces. -The installation program should set the WXWIN environment variable, which -will be activated when your machine is rebooted. The setup -program contains the following: +A setup program is provided (setup.exe) to automatically copy +files to a directory on your hard disk. Do not install into a +path that contains spaces. To avoid confusion with other +wxWindows installations that might be on your machine, the +installation program does not se the WXWIN environment variable; +please set this by hand via the System applet if you wish to +make it permanent. + +The setup program contains the following: - All common, generic and MSW-specific wxWindows source; - samples; @@ -58,9 +62,9 @@ Other add-on packages are available from the wxWindows Web site, such as: General installation notes -------------------------- -Alter your WXWIN environment variable to point to this directory. -For Cygwin or Mingw32 compilation, make sure WXWIN contains only -forward slashes. +Alter your WXWIN environment variable to point to the root directory of the +wxWindows installation. For Cygwin or MinGW 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 @@ -75,7 +79,16 @@ compiler. Visual C++ 6.0 compilation --------------------------- -Using project files (VC++ 6 only): +Please note that the VC++ 6.0 project files will work for VC++ .NET also, but +you must open the .dsp files and not the .dsw files and in this case you will +need to manually build the other .dsp on which wxWindows.dsp depends: jpeg, +png, regex, tiff and zlib. + +Also note that you can make the project files work with VC++ 5.0 but you'll +need to edit .dsp file by hand before this is possible (change the version in +the .dsp file header from 6.0 to 5.0). + +Using project files (VC++ 6.0 and later): 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). @@ -141,7 +154,7 @@ Makefile notes: doesn't occur when using project files to build wxWindows. To build Unicode versions of the libraries, add UNICODE=1 - to the nmake invocation ( default is UNICODE=0 ). If you want to + to the nmake invocation (default is UNICODE=0). If you want to be able to use Unicode version on Windows9x, you will need MSLU (Microsoft Layer for Unicode) runtime DLL and import lib. The former can be downloaded from Microsoft, the latter is part @@ -159,7 +172,7 @@ Makefile notes: To build the DLL version using makefiles: -1. Change directory to wx\src\msw. Type 'nmake -f makefile.vc dll pch' +1. Change directory to wx\src\msw. Type 'nmake -f makefile.vc dll' to make both a suitable DLL and import library, and to build a suitable precompiled header file for compiling applications. See the previous section for library names. @@ -225,12 +238,13 @@ executables. Borland C++ 4.5/5.0/5.5 compilation ------------------------------- -Compiling using the makefiles (updated 24 Seot 02): +Compiling using the makefiles (updated 24 Sept 02): 1. Make sure your WXWIN variable is set [e.g add set WXWIN=c:\wxwindows - to your autoexec.bat file], and that it uses the FAT (short - name) form with no spaces. + to your autoexec.bat file], The WXWIN variable should contain neither spaces nor - + You may like to use the short form as shown by a dos directory listing ; + eg instead of c:\wxwindows-2.4.0 use c:\wxwind~1.4 Reboot if needed for the changes to autoexec.bat to take effect. 2. Change directory to src\msw. Type 'make -f makefile.b32' to make the wxWindows core library. Ignore the compiler warnings. @@ -261,7 +275,20 @@ Compiling using the makefiles (updated 24 Seot 02): and then for each sample, 'make -f makefile.b32 WXUSINGDLL=1 FINAL=1' -6. To make console mode applications with wxWindows functions go +6. You can use the WXUNIVERSAL widgets instead of the native MSW + ones (eg if you want to build an application with the same + look and feel on all platforms) + Use the command + 'make -f makefile.b32 WXUSINGUNIV=1' + Then run + 'make -f makefile.b32 WXUSINGUNIV=1' in the sample directory which you wish + to build using the wxUniversal widgets. Use 'SET WXTHEME=GTK' [or WIN32 or METAL] + to test the existing themes + The makefile is written with the intention that you can build DLLs + and do final releases by combinations of commandline parameters. + At the time of writing, (Oct 02) not all the wxDialogs are working + +7. To make console mode applications with wxWindows functions go to the src\msw directory 'make -f makebase.b32 clean' 'make -f makebase.b32' @@ -366,31 +393,55 @@ Borland C++Builder IDE compilation samples [mak for Cbuilder 1-3; bpr for v4]. Execute this in the sample directory, passing the name of the cpp files on the command line. -Watcom C++ 10.6/11 compilation ---------------------------- +Watcom C++ 10.6/11 and OpenWatcom 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 all' to +2. Change directory to wx\src\msw. Type 'wmake -f makefile.wat' to make the wxWindows core library. -3. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat all' - to make this sample. Repeat for other samples of interest. +3. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat' + to make this sample. The exe will be placed in a watcom subdirectory. + Repeat for other samples of interest. + + +There are several makefile variables which may be modified: + +- FINAL may be set to 1 (e.g. 'wmake -f makefile.wat FINAL=1') to build + the release version of the library, i.e. without debug info and with + optimizations enabled + +- WATCOM_SUFFIX is appended to the names of all libraries produced by the + makefile -- this allows to use several compilers in the same wxWindows + source tree. If you only use Watcom compiler, set WATCOM_SUFFIX to nothing. + +- OUTPUTDIR may be set to the name of the directory where you want all the + object files to be generated (the library files are always created in + %WXWIN\lib). Compilation will fail if you set it to an empty string + to create them in the same directory as the source. If you change OUTPUTDIR, + make sure that it does not have a trailing backslash! + +- In the samples, you may use EXEDIR=adir to build the samples in adir. Setting + EXEDIR=. will build in the current directory, + + +Note (1): if your installation of Watcom doesn't have odbc32.lib file and + you need it (i.e. you have wxUSE_ODBC=1), you can use the file + from lib\watcom directory. See the notes in that directory. + +Note (2): if variant.cpp is compiled with date/time class options, the linker + gives up. So the date/time option is switched off for Watcom C++. + Also, wxAutomationObject is not compiled with Watcom C++ 10. + +Note (3): if Watcom can't read the precompiled header when building a sample, + try deleting src\msw\watcom.pch and compiling the sample again. -Note (1): makewat.env uses the odbc32.lib supplied in wxWindows' lib\watcom -directory. See the notes in that directory. -Note (2): if variant.cpp is compiled with date/time class -options, the linker gives up. So the date/time option is switched -off for Watcom C++. Also, wxAutomationObject is not compiled with -Watcom C++. -Note (3): if Watcom can't read the precompiled header when -building a sample, try deleting src\msw\watcom.pch and -compiling the sample again. Metrowerks CodeWarrior compilation ---------------------------------- 1. CodeWarrior Pro7 project files in XML format are already - included in wxMSW-2.3.3.zip and the setup version. + included in wxMSW-2.4.0.zip and the setup version. 2. Review the file include\wx\msw\setup.h (or include\wx\msw\setup0.h if you are working from the CVS version) to make sure the settings reflect what you want. If you aren't sure, leave it alone and go with the @@ -441,37 +492,37 @@ Metrowerks CodeWarrior compilation minimal.rc and minimal.cpp and adding the files griddemo.rc and griddemo.cpp. Build and run.... -Cygwin/Mingw32 compilation +Cygwin/MinGW compilation ---------------------------------- wxWindows 2 supports Cygwin (formerly GnuWin32) betas and -releases, and Mingw32. Cygwin can be downloaded from: +releases, and MinGW. Cygwin can be downloaded from: - http://sources.redhat.com/cygwin + http://sources.redhat.com/cygwin/ -and Mingw32 from: +and MinGW from: - http://www.mingw.org + http://www.mingw.org/ -Both Cygwin and MinGW can be used with the same makefiles. +Both Cygwin and MinGW can be used with the same makefiles, and both can be +used with configure. -NOTE: some notes specific to old Cygwin ( < 1.1.x ) - and MinGW ( < 1.0 ) are at the end of this section - ( see OLD VERSIONS ) +NOTE: some notes specific to old Cygwin (< 1.1.x) + and MinGW (< 1.0) are at the end of this section + (see OLD VERSIONS) There are two methods of compiling wxWindows, by using the makefiles provided or by using 'configure'. -Retrieve and install the latest version of Cygwin, or Mingw32, as per +Retrieve and install the latest version of Cygwin, or MinGW, as per the instructions with either of these packages. -If using Mingw32, you can download the add-on MSYS package to +If using MinGW, you can download the add-on MSYS package to provide Unix-like tools that you'll need to build wxWindows. - -The solution prior to MSYS was to download extra utilities from +If you do not want to use MSYS, then you need to download extra utilities from ports/mingw32 on the wxWindows ftp site or CD-ROM: - ftp://biolp22.york.ac.uk/pub/ports/mingw32/extra.zip + ftp://biolpc22.york.ac.uk/pub/ports/mingw32/extra.zip These should be extracted to a directory in your path. If you have already downloaded rm, cp, mv from elsewhere, or are using @@ -503,13 +554,13 @@ NOTE: The makefile are for compilation under Cygwin, MSYS, or Here are the steps required using the provided makefiles: - Set your WXWIN variable to where wxWindows is installed. - *** IMPORTANT: For Cygwin/Mingw32, use forward slashes in the path, not + *** IMPORTANT: For Cygwin/MinGW, use forward slashes in the path, not backslashes. - Edit src/makeg95.env and set the MINGW32 variable at the top of - the file to either 1 (you have Mingw32) or 0 (if you have - Cygwin). If using Mingw32, also set the MINGW32VERSION variable - appropriately. + the file to either 1 (you have MinGW) or 0 (if you have + Cygwin); also set the MINGW32VERSION variable appropriately for your + GCC version. - Use the makefile.g95 files for compiling wxWindows and samples, e.g. to compile a debugging version of wxWindows: @@ -544,11 +595,12 @@ Here are the steps required using the provided makefiles: > make -f makefile.g95 cleanall > make -f makefile.g95 UNICODE=1 - Options can be combined ( e.g.: UNICODE=1 FINAL=1 ) + Options can be combined (e.g.: UNICODE=1 FINAL=1) Ignore the warning about the default entry point. -- Use the 'strip' command to reduce executable size. +- Use the 'strip' command to reduce executable/dll size (note that + stripping an executable/dll will remove debug information!). - With Cygwin, you can invoke gdb --nw myfile.exe to debug an executable. If there are memory leaks, they will be @@ -567,8 +619,7 @@ system to generate appropriate makefiles, as used on Unix and Mac OS X systems. Change directory to the root of the wxWindows distribution, -make a build directory, run 'sh', and then from this shell -run configure and make. +make a build directory, and run configure and make in this directory. For example: @@ -577,19 +628,20 @@ For example: cd build-debug ../configure --with-msw --enable-debug --enable-debug_gdb --disable-shared make + make install % This step is optional, see note (8) below. cd samples/minimal make ./minimal.exe Notes: -1. See also the Cygwin/Mingw32 on the web site or CD-ROM for +1. See also the Cygwin/MinGW on the web site or CD-ROM for further information about using wxWindows with these compilers. 2. libwx.a is 100 MB or more - but much less if compiled with no debug info (-g0) and level 4 optimization (-O4). -3. If you get a link error under Mingw32 2.95.2 referring to: +3. If you get a link error under MinGW 2.95.2 referring to: EnumDAdvise__11IDataObjectPP13IEnumSTATDATA@8 @@ -598,7 +650,7 @@ Notes: STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE; -4. There's a bug in Mingw32 headers for some early distributions. +4. There's a bug in MinGW headers for some early distributions. in include/windows32/defines.h, where it says: @@ -617,7 +669,7 @@ Notes: 6. If there's a problem executing the windres program, try commenting out RCPREPROCESSOR in makeg95.env. -7. OpenGL support should work with Mingw32 as-is. However, +7. OpenGL support should work with MinGW as-is. However, if you wish to generate import libraries appropriate either for the MS OpenGL libraries or the SGI OpenGL libraries, go to include/wx/msw/gl and use: @@ -630,11 +682,21 @@ Notes: and similarly for glu[32].def. +8. The 'make install' step is optional, and copies files + as follows: + + /usr/local/lib - wxmswXYZd.dll.a and wxmswXYZd.dll + /usr/local/include/wx - wxWindows header files + /usr/local/bin - wx-config + + You may need to do this if using wx-config with the + default root path. + OLD VERSIONS: -- If using Mingw32 2.95 and below with wxWindows 2.1 or above, you +- If using MinGW 2.95 and below with wxWindows 2.1 or above, you must hand-patch with Mingw32-gcc295.patches (located in the - top-level of the wxWindows 2 installation). Mingw32 2.95.2 + top-level of the wxWindows 2 installation). MinGW 2.95.2 and above contain the fixes already. - Modify the file wx/src/cygnus.bat (or mingw32.bat or mingegcs.bat) @@ -647,7 +709,7 @@ OLD VERSIONS: supplied). - If using GnuWin32 b18, you will need to copy windres.exe - from e.g. the Mingw32 distribution, to a directory in your path. + from e.g. the MinGW distribution, to a directory in your path. Symantec C++ compilation ------------------------ diff --git a/docs/os2/install.txt b/docs/os2/install.txt index da9882009e..f8b9b81d1e 100644 --- a/docs/os2/install.txt +++ b/docs/os2/install.txt @@ -1,7 +1,7 @@ -Installing wxWindows 2.3.3 +Installing wxWindows 2.4.0 -------------------------- -This is wxWindows 2.3.3 for IBM OS/2 Warp3 and Warp4. This is an unstable +This is wxWindows 2.4.0 for IBM OS/2 Warp3 and Warp4. This is an unstable development release and OS/2 is considered to be in beta. IMPORTANT NOTE: If you experience problems installing, please @@ -17,7 +17,7 @@ Unarchiving At this time there is no comprehensive setup.exe type installation program. wxWindows for OS/2 requires you download various .zip files and unpack them to your desired location on your system. Pick a location say, -C:\wx\wxWindows-2.3.3, copy the .zip files to there and unzip them ensuring you +C:\wx\wxWindows-2.4.0, copy the .zip files to there and unzip them ensuring you unzip the subdirectories as well. You will need: - All common, generic and OS2-specific wxWindows source; @@ -30,7 +30,7 @@ unzip the subdirectories as well. You will need: - PNG library source; - ZLIB library source; -All but the documentation is included in wxOS2-2.3.3.zip, documentation +All but the documentation is included in wxOS2-2.4.0.zip, documentation must be downloaded separately from the wxWindows Web site. Other add-on packages are available from the wxWindows Web site, such as: @@ -46,27 +46,27 @@ General installation notes After unzipping everything your directory tree should look something like this: -x:\wx\wxWindows-2.3.3\docs (your HTML reference manual) -x:\wx\wxWindows-2.3.3\include\wx -x:\wx\wxWindows-2.3.3\include\wx\generic -x:\wx\wxWindows-2.3.3\include\wx\html -x:\wx\wxWindows-2.3.3\include\wx\os2 -x:\wx\wxWindows-2.3.3\samples\.... (all the sample directories) -x:\wx\wxWindows-2.3.3\src -x:\wx\wxWindows-2.3.3\src\common -x:\wx\wxWindows-2.3.3\src\generic -x:\wx\wxWindows-2.3.3\src\html -x:\wx\wxWindows-2.3.3\src\jpeg -x:\wx\wxWindows-2.3.3\src\os2 -x:\wx\wxWindows-2.3.3\src\png -x:\wx\wxWindows-2.3.3\src\tiff -x:\wx\wxWindows-2.3.3\src\zlib +x:\wx\wxWindows-2.4.0\docs (your HTML reference manual) +x:\wx\wxWindows-2.4.0\include\wx +x:\wx\wxWindows-2.4.0\include\wx\generic +x:\wx\wxWindows-2.4.0\include\wx\html +x:\wx\wxWindows-2.4.0\include\wx\os2 +x:\wx\wxWindows-2.4.0\samples\.... (all the sample directories) +x:\wx\wxWindows-2.4.0\src +x:\wx\wxWindows-2.4.0\src\common +x:\wx\wxWindows-2.4.0\src\generic +x:\wx\wxWindows-2.4.0\src\html +x:\wx\wxWindows-2.4.0\src\jpeg +x:\wx\wxWindows-2.4.0\src\os2 +x:\wx\wxWindows-2.4.0\src\png +x:\wx\wxWindows-2.4.0\src\tiff +x:\wx\wxWindows-2.4.0\src\zlib If you are using VisualAge, you will also need to ensure you have a -\lib directory as well, x:\wx\wxWindows-2.3.3\lib +\lib directory as well, x:\wx\wxWindows-2.4.0\lib and you will have to set a WXWIN environment variable in your config.sys, -SET WXWIN=X:\WX\WXWINDOWS-2.3.3; +SET WXWIN=X:\WX\WXWINDOWS-2.4.0; Compilation ----------- @@ -163,23 +163,39 @@ Compilation using EMX In addition to EMX-0.9d you will need a rather complete Unix-like environment, starting with a shell (e.g. ash) and most of the GNU file/text/shell utilities, but also flex, bison, sed, grep, awk -and GNU make. +and GNU make. Particularly note that uname is relevant to get the +configure script working - the one from GNU shell utilities 1.12 +does work (check that uname -s returns "OS/2" and uname -m returns "i386" +and you should be mostly fine. -The first thing to do is to decide on a build directory. You can either -do in-tree builds or you can do the build in a directory separated from -the source directory. The later has the advantage, that it is much easier -to compile and maintain several ports of wxWindows on OS/2 - if you are -developping cross-platform applications you might want to compile (and -update) e.g. wxGTK or wxX11 as well. +If you donwloaded wxAll-2.4.0, the directories will contain unix versions +of all configure scripts which need to be replaced by the OS/2 enhanced +versions contained in e.g. \wx\wxWindows-2.4.0\docs\os2\os2-specific.zip. +For this purpose change into the top level directory (\wx\wxWindows-2.4.0) +and call "unzip docs\os2\os2-specific.zip" (assuming you have InfoZip's +unzip installed). Of course, replace \wx\wxWindows-2.4.0 by the path you +did choose. + +Once you are done with those preliminaries, the first thing to do is to +decide on a build directory. You can either do in-tree builds or you can +do the build in a directory separated from the source directory. The later +has the advantage, that it is much easier to compile and maintain several +ports of wxWindows on OS/2 - if you are developping cross-platform +applications you might want to compile (and update) e.g. wxGTK or wxX11 +as well. In the following, let's assume you decided to build in -\wx\wxWindows-2.3.3\build\pm. Now we need to set some environment +\wx\wxWindows-2.4.0\build\pm. Now we need to set some environment variables, namely MAKE_SHELL (to a Unix like shell, let's assume ash) and INSTALL (to point to the install script. If you omit this, configure might find something like the system's tcpip\pcomos\install.exe which will not do the thing you want), e.g. SET MAKE_SHELL=ash -SET INSTALL=/wx/wxWindows-2.3.3/install-sh. +SET INSTALL=/wx/wxWindows-2.4.0/install-sh. + +Be warned that depending on the precise version of your make, setting +MAKE_SHELL might not be sufficient, it might be necessary to set SHELL +and even COMSPEC to a unix like shell as well. Now run the provided configure script by executing e.g. `ash -c "../../configure \ @@ -194,6 +210,18 @@ directories which each essentially contain a suitable makefile. Calling `make' now should start a compile run which hopefully ends with a library being placed in the lib subdirectory. +Note however, that the auto-generated .d files (containing depency +information) use a mixture of "/" and "\" path separators, that +confuses many make versions. Therefore you'll often get error messages +indicating that some file with a random character in place of a path +separator cannot be found on subsequent calls to make. The only solution +currently available for this requires "sed": Run + for %1 in (*.d) do @(sed "s/\//\\/g" < %1 > dep.sed && copy dep.sed %1) +under "cmd" in the build directory (or a suitable variant of it under a +unix like shell). Note however, that a new call to make will generate +new .d files, so you will likely have to run that between any two calls +to make. + Now you can change in the samples subdirectory and call make to compile all samples, however currently not all will work on OS/2, so you might prefer to change into the directory of a specific sample @@ -217,7 +245,7 @@ Finally, if you also want to build a different port, e.g. wxGTK, you essentially have to use the procedure described above, the only difference being that you have to pass a switch to configure indicating which port to build. If you do not do this in a separate build directory (e.g. -\wxWindows-2.3.3\build\gtk), you'll have to do a `make clean' first. +\wxWindows-2.4.0\build\gtk), you'll have to do a `make clean' first. The magical switches that have to be passed to configure for the various ports are --with-gtk (wxGTK), --with-motif (wxMotif), --with-x11 (wxX11), and --disable-gui (wxBase). Note that contrary to the native, PM based diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt index b7b4bc6bed..d5bb29be14 100644 --- a/docs/publicity/announce.txt +++ b/docs/publicity/announce.txt @@ -1,33 +1,53 @@ -Announcing wxWindows 2.3.3: a cross-platform GUI toolkit +Announcing wxWindows 2.4.0: a cross-platform GUI toolkit ---------------------------------------------------------------- -September 15th, 2002 -- the wxWindows team is pleased to -announce the release of a development snapshot of the mature -cross-platform C++ application framework. +January 7th, 2003 -- the wxWindows team is pleased to announce +an official 2.4.0 release of the mature cross-platform C++ +application framework. The following platforms are supported: - Windows 95/98/ME, Windows NT, Windows 2000, Windows XP -- Unix with GTK+ 1.x and 2.0 -- Unix with X11 -- Unix with Motif/Lesstif +- Linux/Unix with GTK+ 1.x and 2.0 +- Linux/Unix with X11 +- Linux/Unix with Motif/Lesstif - VMS with GTK+ 1.x - MacOS 8.6, 9.x and 10.x -- OS/2 (alpha) +- OS/2 (alpha release) + +A non-GUI subset of wxWindows called wxBase is also supported +on most of these platforms. To get wxWindows, go to the Download page at: http://www.wxwindows.org -This is likely to be the last development snapshot in the -2.3.x series, before the release of the stable 2.4.x series. +This is the first official release to support the many +enhancements to wxWindows since the 2.2.x series. +Improvements have been made to many areas, including: + +- better support for Windows XP +- a much fuller Mac port +- additional platforms (OS/2 and bare X11) +- further type-safe container classes +- improved build system +- Unicode support for GTK+ and WIN32 +- improved wxBase support +- wxArtProvider class allows tailoring of standard + wxWindows images +- translations for more languages +- mousewheel support +- support for more ODBC databases +- numerous bug fixes *** About wxWindows -wxWindows is a comprehensive open-source, multi-platform C++ -GUI framework, that can be used to build commercial and free -software. It's used by many organisations all over the world, -including the company that invented the GUI. +wxWindows is a comprehensive open-source, multi-platform C++ GUI +framework, that can be used to build commercial and free +software. First released in 1992, it's increasingly used by +organisations and individuals all over the world due to its +winning combination of sophistication, wide platform coverage, +ease of use, unrestrictive licence and vibrant user community. For most ports, wxWindows adopts the native look and feel of each platform since it uses the native widget sets. There is also @@ -44,9 +64,9 @@ handlers for eading and writing many image types, resizeable panels and dialogs on all platforms, document/view, OpenGL support, HTML-based and context-sensitive help, wizards, drag and drop, a grid class, ODBC support, threads, sockets, container classes, -and much more. An 1800-page reference manual is provided in HTML, -MS HTML Help, WinHelp, wxWindows Help and PDF, and there are over -70 samples and demos. +a styled text control, and much more. An 1800-page reference manual +is provided in HTML, MS HTML Help, WinHelp, wxWindows Help and PDF +formats, and there are over 70 samples and demos. If you're an MFC user, you'll find many wxWindows concepts reassuringly familiar, while often clearer and more consistent. diff --git a/docs/publicity/publicity.txt b/docs/publicity/publicity.txt index 362a44be1c..6e8e8f82fd 100644 --- a/docs/publicity/publicity.txt +++ b/docs/publicity/publicity.txt @@ -4,7 +4,7 @@ Publicity notes and ideas Release announcments can be made to the following newsgroups. -Microsoft: +Windows: comp.os.ms-windows.programmer.misc comp.os.ms-windows.programmer.tools @@ -14,8 +14,11 @@ comp.os.ms-windows.programmer.win32 comp.windows.ms.programmer microsoft.public.win32.programmer.tools microsoft.public.win32.programmer.ui +microsoft.public.vc.3rdparty -Non-Microsoft: +borland.public.cppbuilder.thirdpartytools (newsgroups.borland.com) + +Non-Windows: comp.programming comp.os.linux.development.apps @@ -28,11 +31,23 @@ comp.windows.x comp.windows.x.announce comp.windows.x.motif +Note: submissions to comp.os.linux.announce must be +sent to cola@stump.algebra.com, with short descr +of software and location. See http://stump.algebra.com/~cola/ +NO CROSSPOSTING when sending to this address. + +Pack plenty information into the subject. +Don't write a subject like "Foo version 1.1 released". Many +people will not know what Foo is, so the subject won't help them +select articles. Instead, say "Foo 1.1 - copy files more +efficiently than cp". There is no need to say that the article +is an announcement, so don't write a subject like "ANNOUNCEMENT: +Foo version 1.1 released". News and links sites: ----------------------- -slashdot.org, freshmeat.net +slashdot.org, freshmeat.net, http://lwn.net/ Many of these links will be out of date now: @@ -53,6 +68,51 @@ http://sal.kachinatech.com/index.shtml: SAL (Scientific Applications on Linux) is a collection of information and links to software that will be of interest to scientists and engineers. +MacDev developers list + +To submit a posting to MacDev-1, mailto:press_releases@mactech.com. To +subscribe to MacDev-1, send mail to listserv@listmail.xplain.com with +the SUBJECT line reading "SUBSCRIBE MACDEV-1". To unsubscribe, the +SUBJECT line should read "UNSUBSCRIBE MACDEV-1". + +ct-Newsticker : mailto:presse@ct.heise.de + +List of sites and addresses from tn0013.txt: + +a) FreshMeat: + - http://freshmeat.net/projects/wxwindowsgtk/ + - username and password are "wxgtk" for logging in + - hit "new release" at the top + - follow the step by step + +b) wx-announce mailing list: mailto:wx-announce@lists.wxwindows.org + + [where is the announcement text? TODO] + +c) update www.wxwindows.org + +d) GNOME (very effective, stays on front page for days): + - http://www.gnome.org/applist + - Search for wxWindows + - Update the version number + - Ignore the error message + +e) MacNN: + - http://www.macnn.com + - Contact or Contribute or something + - email news@macnn.com + +f) MacRumors: + - http://www.macrumors.com + - Contact or Contribute or something + +g) Apple Developer Connection: + mailto: adcnews@apple.com + +h) LinuxDevices.com: + Interesting for wxUniversal. + + Shareware sites ---------------- @@ -76,4 +136,30 @@ PC Magazines: CD-ROM distributions for PC Plus, PCW +PUBLICITY RECORD +================ + +The 2.4.0 release has been publicised at +the following places: + +wx-users@lists.wxwindows.org + +comp.os.ms-windows.programmer.misc +comp.os.ms-windows.programmer.tools.mfc +comp.os.ms-windows.programmer.tools.misc +comp.os.ms-windows.programmer.win32 +comp.windows.ms.programmer +comp.os.linux.announce (pending acceptance) +comp.sys.mac.programmer.tools +comp.lang.c++ +comp.windows.x.announce +microsoft.public.win32.programmer.tools +microsoft.public.win32.programmer.ui +microsoft.public.vc.3rdparty +borland.public.cppbuilder.thirdpartytools + +news@macnn.com +adcnews@apple.com +presse@ct.heise.de +press_releases@mactech.com diff --git a/docs/readme.txt b/docs/readme.txt index 989b190a88..172d4f07d4 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,10 +1,6 @@ -wxWindows 2.3.3 +wxWindows 2.4.0 --------------- -*** Please note that this is an UNSTABLE DEVELOPMENT SNAPSHOT. -*** Unless you need the new features and bug fixes, you may wish to -*** use the official 2.2.x stable series. - Welcome to wxWindows 2, a sophisticated cross-platform C++ framework for writing advanced GUI applications using (where possible) the native controls. @@ -204,5 +200,5 @@ web site. Have fun! -The wxWindows Team, September 2002 +The wxWindows Team, January 2003 diff --git a/docs/tech/tn0010.htm b/docs/tech/tn0010.htm index c8b8063f0a..8476f9a079 100644 --- a/docs/tech/tn0010.htm +++ b/docs/tech/tn0010.htm @@ -24,7 +24,7 @@ Compiling wxWindows applications in the VC++ IDE

    -Settings for wxWindows 2 / Settings for wxWindows 1.68 +Settings for wxWindows 2.2 / Settings for wxWindows 1.68

    @@ -44,9 +44,10 @@ installation path.

    -

    Settings for wxWindows 2

    +

    Settings for wxWindows 2.2

    -These settings apply to wxWindows 2.1.14 and above.

    +These settings apply to wxWindows 2.1.14 and above but most of them are not +necessary any longer for wxWindows 2.3+.

    General
    @@ -206,77 +207,6 @@ Select your .rc file. The Additional resource include directories field s
    -

    - - - - - diff --git a/docs/tech/tn0013.txt b/docs/tech/tn0013.txt index 7eca5935ac..070b5deac3 100644 --- a/docs/tech/tn0013.txt +++ b/docs/tech/tn0013.txt @@ -13,7 +13,7 @@ the other Unix-based ports including wxMotif, wxX11 and wxBase. a) Do a fresh checkout using the command - cvs -d :pserver:anoncvs@cvs.wxwindows.org:/home/wxcvs co wxGTK + cvs -d :pserver:anoncvs@cvs.wxwindows.org:/packs/cvsroots/wxwindows co wxGTK NB: if you realize later that some needed files were not checked out by this command, please modify CVSROOT/modules to include the missing @@ -80,7 +80,7 @@ a) Setting up the RPM tree: you should have the RPM tree set up properly dist"). b) Start RPM build by going to RPM_ROOT directory and typing "rpm -ba - SPECS/wxGTK.spec". It may be a good idea to append "2&>1 | tee wxGTK.out" + SPECS/wxGTK.spec". It may be a good idea to append "2>&1 | tee wxGTK.out" (or "|& tee" if you're using the one true shell ;-) as it might be not easy to detect errors in the verbose rpm output if anything goes wrong. diff --git a/docs/tech/tn0014.txt b/docs/tech/tn0014.txt index d8c897fd19..08a9cfaf4c 100644 --- a/docs/tech/tn0014.txt +++ b/docs/tech/tn0014.txt @@ -4,7 +4,7 @@ !!!!! NOT YET FINISHED !!!!! 0. Introduction ---------------- +=============== This note describes the file format used for storing XRC resources that are used by wxXmlResource class. It is probably only useful for those implementing @@ -20,31 +20,41 @@ The XRC format is based on XML 1.0 (please consult W3C's specification). There is no DTD available since it is not possible to fully describe the format with the limited expressive power of DTDs. + + 1. Terminology --------------- +============== The usual XML terminology applies. In particular, we shall use the terms -"node", "property" and "value" in the XML sense: +NODE, PROPERTY and VALUE in the XML sense: ... -The term "attribute" is specific to XRC and refers to a property-less subnode -of an or node. In the example bellow, , +ATTRIBUTE VALUE is the content of all text elements within attribute tag. In the +above example, "wxSUNKEN_BORDER", "A label" and "10,10" are attribute values. +ATTRIBUTE TYPE defines what attribute values are valid for given attribute (you +can think of it as attribute value syntax definition). + + + 2. Elementary description -------------------------- +========================= XRC resource file is a well-formed XML 1.0 document. All elements of XRC file are from the http://www.wxwindows.org/wxxrc namespace. @@ -61,7 +71,7 @@ is 0 for the first incompatible change in given wxWindows release, 1 for the second etc. Differences between versions are described within this document in paragraphs -entitled "Version Note". +entitled "Version Note". The node contains namespace declaration, too: @@ -70,20 +80,232 @@ The node contains namespace declaration, too: The node is only allowed to have and subnodes, all of which must have the "name" property. - - TODO (name, class, subclass) +The node represents a single object (GUI element) and it usually maps +directly to a wxWindows class instance. It three properties: "name", "class" +and "subclass". "class" must always be present, it tells XRC what wxWindows +object should be created in this place. The other two are optional. +"name" is ID used to identify the object. It is the value passed to the XRCID() macro +and is also used to construct wxWindow's id and name attributes and must be unique +among all children of the neareset container object (wxDialog, wxFrame, wxPanel, +wxNotebook) upside from the object in XML nodes hiearchy (two distinct containers +may contain objects with same "name", though). "subclass" is +optional name of class whose constructor will be called instead of the constructor +for "class". Subclass must be available in the program that loads the resource, +must be derived from "class" and must be registered within wxWindows' RTTI system. - - TODO (name, ref, subclass) +Example: + + + ... + + + node may have arbitrary child nodes. What child nodes and their semantics +are class-dependent and are defined later in this document. The user is allowed +to register new object handlers within XRC and extend it to accept new +classes (and therefore different 's child nodes). + + node is identical to , except that it does _not_ have "class" +property and has additonal required property "ref". It's concept is similar to Unix +symlinks: value of the "ref" property is equal to the value of "name" property of +some existing node (called referred node) in the resources (not neccessary top-level). +Referred node's "class" property and all subnodes are copied in place of the referee + node which is then processed as regular node. If the +node itself has child nodes, then these nodes _override_ any nodes from the referred node. + +Example: + + + hello + 100,-1d + + + bar + + +is identical to: + + + hello + 100,-1d + + + bar + 100,-1d + -3. Common attributes --------------------- -TODO +3. Common attribute types +========================= + +There are several attribute types (see section 1. Terminology) that are common +to many attributes of different classes: + +String +------ +Any text. Some characters have special interpretation and are translated +by XRC parser according to this table: + "_" -> "&" ('&' is used to underline e.g. menu items in wxWindows) + "__" -> "_" + "\n" -> line break (C character '\n') + "\r" -> carriage return (C character '\r') + "\t" -> tabelator (C character '\t') + +Version Note: + '$' was used instead of '_' prior to version 2.3.0.1. + + +I18nString +---------- +Like String, but the value is translated to native language using wxLocale +at runtime (unless it was disabled by not passing wxXRC_USE_LOCALE flag to +wxXmlResource constructor). Used for strings that are "visible" in the GUI. + + +UnsignedInteger +--------------- +This is obvious. Only digits 0-9 may be present and there must be at least +one digit. + + +Integer +------- +Like UnsignedInteger but may be prefixed with '-' (ints less than zero). + + +Position +-------- +Specifies (window's) position in 2D space. Syntax is ,[d] +where is valid value of Integer type. + + +Size +---- +Syntax is same as Position's syntax, but the values are interpreted as window +size (wxSize type) and not position (wxPosition type). + + +Style[wxSomeClass] +------------------ +List of style flags that can be passed to wxSomeClass' constructor. Flags are +written in same way as in C++ code (e.g. "wxSUNKEN_BORDER", "wxHW_SCROLLBAR_NEVER") +and are delimined with any combination of whitespaces and '|'. Possible flags +are class-dependent and are not described in this technote. Please refer to wxWindows +manual for all styles that given class can accept; if XRC does not accept a flag +listed in wxWindows documentation, it is a bug. + + +Bitmap +------ +Attribute value is interpreted as filename (either absolute or relative to +the location of XRC resource file). In addition, attribute node may have +"stock_id" and "stock_client" properties. Their values may be any of wxArtID (or +wxArtClient respectively) values as used by wxArtProvider (because the user may +define own constants, efectively any string is legal here). Examples are +"wxART_FILE_OPEN" (id) or "wxART_MENU" (client). + +Any of "stock_id" or "stock_client" properties or the filename may be omitted. XRC +determines the bitmap to use according to this algorithm: + 1. If there is non-empty "stock_id" property, query wxArtProvider for the bitmap + (if there is no "stock_client", use default one, which is usually wxART_OTHER; + exceptions are noted in class-specific sections bellow). If the query fails, + continue to 2. + 2. Load the bitmap from the file in attribute value. + + +Boolean +------- +Boolean value, either "0" (false) or "1" (true). + + 4. Supported classes --------------------- +==================== + +Attributes are listed in tables in the following format: +attribute name attribute type default value, if any + [(optional remarks.................... + ...................................)] + +wxBitmap +-------- +This is a special case, because it does not create a wxWindow instance but +creates wxBitmap instead. Another exceptional thing is that it does not have +any attributes. Instead, the node itself is interpreted as if it were attribute +of type Bitmap. + +Example: bitmaps/foo.gif + + +wxIcon +------ +Identical to wxBitmap class, except that it creates wxIcon instead of wxBitmap. + + +wxButton +-------- +position Position -1,-1 +size Size -1,-1 +style Style[wxButton] + +label I18nString +default Boolean false + (Is the button default button?) + + +wxCalendarCtrl +-------------- +position Position -1,-1 +size Size -1,-1 +style Style[wxCalendarCtrl] + + +wxCheckBox +---------- +position Position -1,-1 +size Size -1,-1 +style Style[wxCheckBox] +checked Boolean false + + +wxCheckList +----------- +position Position -1,-1 +size Size -1,-1 +style Style[wxCheckList] +content (see bellow) (empty) + +Optional "content" attribute does not have attribute value. Instead, +arbitrary number of nodes may be rooted under it (the control +is filled with strings contained in these nodes). Each +node must contain I18nString value and may have "checked" property +with possible values "0" or "1" indicating the the item is initially +checked. + +Example: + + + One + Two + Three + Four + + + + +wxScrolledWindow +---------------- +position Position -1,-1 +size Size -1,-1 +style Style[wxScrolledWindow] wxHSCROLL | wxVSCROLL + + + +5. More features +================ + +FIXME -- "platform" property handling -TODO === EOF === diff --git a/docs/univ/readme.txt b/docs/univ/readme.txt index 6f35784ab3..d3532b16cc 100644 --- a/docs/univ/readme.txt +++ b/docs/univ/readme.txt @@ -1,50 +1,53 @@ wxUniversal README ================== - Welcome to wxUniversal! +Welcome to wxUniversal! - Acknowledgements: wxUniversal wouldn't have been written without the +Acknowledgements: wxUniversal wouldn't have been written without the generous support of SciTech Software. Many thanks to Kendall Bennett and Tom Ryan! 0. Introduction --------------- - wxUniversal is a port of wxWindows which implements the various GUI controls +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 +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 +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 people interested in porting wxWindows to another platform. - However, wxUniversal doesn't have a 100% native look and feel unlike the +However, wxUniversal doesn't have a 100% native look and feel unlike the other wxWindows ports - this is the price to pay for the extra flexibility. 1. Requirements and supported platforms --------------------------------------- - wxUniversal is used together with another wxWindows port which provides the +wxUniversal is used together with another wxWindows port which provides the "low level classes" mentioned above. Currently it can be built with wxMSW, wxGTK or wxX11. 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 requirements for wxUniversal are the same as for the underlying low level +The requirements for wxUniversal are the same as for the underlying low level toolkit. 2. Installing under Win32 ------------------------- +If compiling from CVS, please copy include/wx/univ/setup0.h +to include/wx/univ/setup.h before following these steps. + a) Using Visual C++ 6.0 Simply open the src/wxUniv.dsw file in DevStudio and build it. @@ -56,8 +59,14 @@ b) Cygwin Please refer to the Unix section below c) Other compilers + Borland: + in the wxwindows\src\msw directory run + 'make -f makefile.b32 WXUSINGUNIV=1' to build the library and then run + 'make -f makefile.b32 WXUSINGUNIV=1' in the sample directory which you wish + to build using the wxUniversal widgets. Use 'SET WXTHEME=GTK' [or WIN32 or METAL] + to test the existing themes - Unfortunately we don't have makefiles for any other compilers yet. +Unfortunately we don't have makefiles for any other compilers yet. Please contact us if you would like to help us with creating one for the compiler you use. @@ -73,6 +82,9 @@ change for wxUniversal is that you must add "--enable-universal" switch to the configure command line and for wxX11 even this is unnecessary, i.e. it is enabled by default. +If compiling from CVS, please copy include/wx/univ/setup0.h +to include/wx/univ/setup.h before configuring. + 4. Running wxUniv programs -------------------------- @@ -115,6 +127,6 @@ itself, namely: Vadim Zeitlin -This file is accurate for the version 2.3.3 of wxUniversal. It was last +This file is accurate for the version 2.4.0 of wxUniversal. It was last modified on Apr 15, 2002. diff --git a/docs/x11/install.txt b/docs/x11/install.txt index 5239306806..7c672c7d21 100644 --- a/docs/x11/install.txt +++ b/docs/x11/install.txt @@ -1,4 +1,4 @@ -wxWindows 2.3 for X11 installation +wxWindows 2.4 for X11 installation ---------------------------------- IMPORTANT NOTE: @@ -11,12 +11,12 @@ IMPORTANT NOTE: When sending bug reports tell us what version of wxWindows you are using (including the beta) and what compiler on what system. One - example: wxX11 2.3.3, gcc 2.95.4, Redhat 6.2 + example: wxX11 2.4.0, gcc 2.95.4, Redhat 6.2 First steps ----------- -- Download wxWindows-X-x.y.z.tgz, where x.y.z is the version number. +- Download wxX11-x.y.z.tgz, where x.y.z is the version number. Download documentation in a preferred format, such as wxWindows-HTML.zip or wxWindows-PDF.zip. @@ -137,7 +137,8 @@ YOU USE AND WHAT ERROR WAS REPORTED. I know this has no effect, but I tried... * GUI libraries --------------- -wxWindows/X11 requires the X11 library to be installed on your system. +wxWindows/X11 only requires the X11 system to be installed. TinyX +will also suffice. * Additional libraries ---------------------- @@ -498,5 +499,5 @@ compiler and the error message(s) to the wxwin-developers mailing list at: wx-dev@lists.wxwindows.org -Julian Smart, Robert Roebling and Vadim Zeitlin, February 2002. +Julian Smart, Robert Roebling and Vadim Zeitlin, Decemver 2002. diff --git a/docs/x11/readme.txt b/docs/x11/readme.txt index 4e8f155377..f8f752cba1 100644 --- a/docs/x11/readme.txt +++ b/docs/x11/readme.txt @@ -1,11 +1,12 @@ - Welcome to wxWindows/X11 2.3.3 + Welcome to wxWindows/X11 2.4.0 -You have downloaded version 2.3.3 of the X11 port of +You have downloaded version 2.4.0 of the X11 port of the wxWindows GUI library. This runs on X11 with no Motif, Xt, GTK+ or any other standard widget set -- instead it uses the wxUniversal widgets. The intention is to have it run on NanoX as well as desktop X11. +The wxX11 distribution also includes the wxMotif port. More information about the wxWindows project as a whole can be found at: diff --git a/include/wx/app.h b/include/wx/app.h index 4c9f5b8b9d..e9db923a6f 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -17,22 +17,6 @@ #pragma interface "appbase.h" #endif -// ---------------------------------------------------------------------------- -// typedefs -// ---------------------------------------------------------------------------- - -#if (defined(__WXMSW__) && !defined(__WXMICROWIN__)) || defined (__WXPM__) - class WXDLLEXPORT wxApp; - typedef wxApp* (*wxAppInitializerFunction)(); -#else - // returning wxApp* won't work with gcc - #include "wx/object.h" - - typedef wxObject* (*wxAppInitializerFunction)(); -#endif - -class WXDLLEXPORT wxCmdLineParser; - // ---------------------------------------------------------------------------- // headers we have to include here // ---------------------------------------------------------------------------- @@ -49,6 +33,25 @@ class WXDLLEXPORT wxCmdLineParser; #include "wx/build.h" +// ---------------------------------------------------------------------------- +// typedefs +// ---------------------------------------------------------------------------- +// Do includes first to insure that even wxBase consistently uses +// the wxMSW case for defining wxAppInitializerFunction. +// (otherwise, __WXMSW__ will not yet be set, if app.h is the +// first file to be included). + +#if (defined(__WXMSW__) && !defined(__WXMICROWIN__)) || defined (__WXPM__) + class WXDLLEXPORT wxApp; + typedef wxApp* (*wxAppInitializerFunction)(); +#else + // returning wxApp* won't work with gcc + #include "wx/object.h" + + typedef wxObject* (*wxAppInitializerFunction)(); +#endif + +class WXDLLEXPORT wxCmdLineParser; class WXDLLEXPORT wxLog; class WXDLLEXPORT wxMessageOutput; diff --git a/include/wx/arrimpl.cpp b/include/wx/arrimpl.cpp index 8296608a01..46f94e5dab 100644 --- a/include/wx/arrimpl.cpp +++ b/include/wx/arrimpl.cpp @@ -75,6 +75,8 @@ void name::RemoveAt(size_t uiIndex, size_t nRemove) \ \ void name::Add(const T& item, size_t nInsert) \ { \ + if (nInsert == 0) \ + return; \ T* pItem = new T(item); \ size_t nOldSize = GetCount(); \ if ( pItem != NULL ) \ @@ -85,6 +87,8 @@ void name::Add(const T& item, size_t nInsert) \ \ void name::Insert(const T& item, size_t uiIndex, size_t nInsert) \ { \ + if (nInsert == 0) \ + return; \ T* pItem = new T(item); \ if ( pItem != NULL ) \ wxBaseArrayPtrVoid::Insert(pItem, uiIndex, nInsert); \ diff --git a/include/wx/artprov.h b/include/wx/artprov.h index 3bba43e060..4a862d3f58 100644 --- a/include/wx/artprov.h +++ b/include/wx/artprov.h @@ -22,6 +22,7 @@ class WXDLLEXPORT wxArtProvidersList; class WXDLLEXPORT wxArtProviderCache; +class wxArtProviderModule; // ---------------------------------------------------------------------------- // Types @@ -113,10 +114,13 @@ public: const wxArtClient& client = wxART_OTHER, const wxSize& size = wxDefaultSize); +protected: + friend class wxArtProviderModule; + // Initializes default provider + static void InitStdProvider(); // Destroy caches & all providers static void CleanUpProviders(); -protected: // Derived classes must override this method to create requested // art resource. This method is called only once per instance's // lifetime for each requested wxArtID. diff --git a/include/wx/buffer.h b/include/wx/buffer.h index 3b770e32af..b913e75100 100644 --- a/include/wx/buffer.h +++ b/include/wx/buffer.h @@ -23,92 +23,96 @@ // of new/delete // ---------------------------------------------------------------------------- -class wxCharBuffer -{ -public: - wxCharBuffer(const char *str) - : m_str(str ? strdup(str) : NULL) - { - } +#define DEFINE_BUFFER(classname, chartype, strdupfunc) \ +class classname \ +{ \ +public: \ + classname(const chartype *str) \ + : m_str(str ? strdupfunc(str) : NULL) \ + { \ + } \ + \ + classname(size_t len) \ + : m_str((chartype *)malloc((len + 1)*sizeof(chartype))) \ + { \ + m_str[len] = (chartype)0; \ + } \ + \ + /* no need to check for NULL, free() does it */ \ + ~classname() { free(m_str); } \ + \ + /* \ + WARNING: \ + \ + the copy ctor and assignment operators change the passed in object \ + even although it is declared as "const", so: \ + \ + a) it shouldn't be really const \ + b) you shouldn't use it afterwards (or know that it was reset) \ + \ + This is very ugly but is unfortunately needed to make the normal use\ + of classname buffer objects possible and is very similar to what \ + std::auto_ptr<> does (as if it were an excuse...) \ + */ \ + \ + /* \ + because of the remark above, release() is declared const even if it \ + isn't really const \ + */ \ + chartype *release() const \ + { \ + chartype *p = m_str; \ + ((classname *)this)->m_str = NULL; \ + return p; \ + } \ + \ + classname(const classname& src) \ + : m_str(src.release()) \ + { \ + } \ + \ + classname& operator=(const chartype *str) \ + { \ + free(m_str); \ + m_str = str ? strdupfunc(str) : NULL; \ + return *this; \ + } \ + \ + classname& operator=(const classname& src) \ + { \ + free(m_str); \ + m_str = src.release(); \ + \ + return *this; \ + } \ + \ + chartype *data() { return m_str; } \ + const chartype *data() const { return m_str; } \ + operator const chartype *() const { return m_str; } \ + chartype operator[](size_t n) const { return m_str[n]; } \ + \ +private: \ + chartype *m_str; \ +} - wxCharBuffer(size_t len) - : m_str((char *)malloc((len + 1)*sizeof(char))) - { - m_str[len] = '\0'; - } - - // no need to check for NULL, free() does it - ~wxCharBuffer() { free(m_str); } - - wxCharBuffer(const wxCharBuffer& src) - : m_str(src.m_str) - { - // no reference count yet... - ((wxCharBuffer*)&src)->m_str = (char *)NULL; - } - wxCharBuffer& operator=(const wxCharBuffer& src) - { - m_str = src.m_str; - // no reference count yet... - ((wxCharBuffer*)&src)->m_str = (char *)NULL; - return *this; - } - - const char *data() const { return m_str; } - operator const char *() const { return m_str; } - char operator[](size_t n) const { return m_str[n]; } - -private: - char *m_str; -}; +DEFINE_BUFFER(wxCharBuffer, char, strdup); #if wxUSE_WCHAR_T -class wxWCharBuffer +inline wchar_t *wxWcsdupReplacement(const wchar_t *wcs) { -public: - wxWCharBuffer(const wchar_t *wcs) - : m_wcs((wchar_t *)NULL) - { - if (wcs) { - size_t siz = (wxWcslen(wcs) + 1)*sizeof(wchar_t); - m_wcs = (wchar_t *)malloc(siz); - memcpy(m_wcs, wcs, siz); - } - } - wxWCharBuffer(size_t len) - : m_wcs((wchar_t *)malloc((len + 1)*sizeof(wchar_t))) - { - m_wcs[len] = L'\0'; - } + const size_t siz = (wxWcslen(wcs) + 1)*sizeof(wchar_t); + wchar_t *wcsCopy = (wchar_t *)malloc(siz); + memcpy(wcsCopy, wcs, siz); + return wcsCopy; +} - // no need to check for NULL, free() does it - ~wxWCharBuffer() { free(m_wcs); } - - wxWCharBuffer(const wxWCharBuffer& src) - : m_wcs(src.m_wcs) - { - // no reference count yet... - ((wxWCharBuffer*)&src)->m_wcs = (wchar_t *)NULL; - } - wxWCharBuffer& operator=(const wxWCharBuffer& src) - { - m_wcs = src.m_wcs; - // no reference count yet... - ((wxWCharBuffer*)&src)->m_wcs = (wchar_t *)NULL; - return *this; - } - - const wchar_t *data() const { return m_wcs; } - operator const wchar_t *() const { return m_wcs; } - wchar_t operator[](size_t n) const { return m_wcs[n]; } - -private: - wchar_t *m_wcs; -}; +DEFINE_BUFFER(wxWCharBuffer, wchar_t, wxWcsdupReplacement); #endif // wxUSE_WCHAR_T +#undef DEFINE_BUFFER + #if wxUSE_UNICODE #define wxMB2WXbuf wxWCharBuffer #define wxWX2MBbuf wxCharBuffer @@ -125,101 +129,146 @@ private: // A class for holding growable data buffers (not necessarily strings) // ---------------------------------------------------------------------------- +// This class manages the actual data buffer pointer and is ref-counted. +class wxMemoryBufferData +{ +public: + // the initial size and also the size added by ResizeIfNeeded() + enum { BLOCK_SIZE = 1024 }; + + friend class wxMemoryBuffer; + + // everyting is private as it can only be used by wxMemoryBuffer +private: + wxMemoryBufferData(size_t size = wxMemoryBufferData::BLOCK_SIZE) + : m_data(size ? malloc(size) : NULL), m_size(size), m_len(0), m_ref(0) + { + } + ~wxMemoryBufferData() { free(m_data); } + + + void ResizeIfNeeded(size_t newSize) + { + if (newSize > m_size) + { + void *dataOld = m_data; + m_data = realloc(m_data, newSize + wxMemoryBufferData::BLOCK_SIZE); + if ( !m_data ) + { + free(dataOld); + } + + m_size = newSize + wxMemoryBufferData::BLOCK_SIZE; + } + } + + void IncRef() { m_ref += 1; } + void DecRef() + { + m_ref -= 1; + if (m_ref == 0) // are there no more references? + delete this; + } + + + // the buffer containing the data + void *m_data; + + // the size of the buffer + size_t m_size; + + // the amount of data currently in the buffer + size_t m_len; + + // the reference count + size_t m_ref; +}; + + class wxMemoryBuffer { public: - enum { BLOCK_SIZE = 1024 }; - wxMemoryBuffer(size_t size = wxMemoryBuffer::BLOCK_SIZE) - : m_data(malloc(size)), m_size(size), m_len(0) + // ctor and dtor + wxMemoryBuffer(size_t size = wxMemoryBufferData::BLOCK_SIZE) { + m_bufdata = new wxMemoryBufferData(size); + m_bufdata->IncRef(); + } + + ~wxMemoryBuffer() { m_bufdata->DecRef(); } + + + // copy and assignment + wxMemoryBuffer(const wxMemoryBuffer& src) + : m_bufdata(src.m_bufdata) + { + m_bufdata->IncRef(); + } + + wxMemoryBuffer& operator=(const wxMemoryBuffer& src) + { + m_bufdata->DecRef(); + m_bufdata = src.m_bufdata; + m_bufdata->IncRef(); + return *this; } - ~wxMemoryBuffer() { free(m_data); } // Accessors - void* GetData() const { return m_data; } - size_t GetBufSize() const { return m_size; } - size_t GetDataLen() const { return m_len; } + void *GetData() const { return m_bufdata->m_data; } + size_t GetBufSize() const { return m_bufdata->m_size; } + size_t GetDataLen() const { return m_bufdata->m_len; } - void SetBufSize(size_t size) { ResizeIfNeeded(size); } + void SetBufSize(size_t size) { m_bufdata->ResizeIfNeeded(size); } void SetDataLen(size_t len) { - wxASSERT(len <= m_size); - m_len = len; + wxASSERT(len <= m_bufdata->m_size); + m_bufdata->m_len = len; } // Ensure the buffer is big enough and return a pointer to it - void* GetWriteBuf(size_t sizeNeeded) + void *GetWriteBuf(size_t sizeNeeded) { - ResizeIfNeeded(sizeNeeded); - return m_data; + m_bufdata->ResizeIfNeeded(sizeNeeded); + return m_bufdata->m_data; } + // Update the length after the write void UngetWriteBuf(size_t sizeUsed) { SetDataLen(sizeUsed); } // Like the above, but appends to the buffer - void* GetAppendBuf(size_t sizeNeeded) + void *GetAppendBuf(size_t sizeNeeded) { - ResizeIfNeeded(m_len + sizeNeeded); - return (char*)m_data + m_len; + m_bufdata->ResizeIfNeeded(m_bufdata->m_len + sizeNeeded); + return (char*)m_bufdata->m_data + m_bufdata->m_len; + } + + // Update the length after the append + void UngetAppendBuf(size_t sizeUsed) + { + SetDataLen(m_bufdata->m_len + sizeUsed); } - void UngetAppendBuf(size_t sizeUsed) { SetDataLen(m_len + sizeUsed); } // Other ways to append to the buffer - void AppendByte(char data) { - ResizeIfNeeded(m_len + 1); - *(((char*)m_data)+m_len) = data; - m_len += 1; + void AppendByte(char data) + { + wxCHECK_RET( m_bufdata->m_data, _T("invalid wxMemoryBuffer") ); + + m_bufdata->ResizeIfNeeded(m_bufdata->m_len + 1); + *(((char*)m_bufdata->m_data) + m_bufdata->m_len) = data; + m_bufdata->m_len += 1; } + void AppendData(void* data, size_t len) { memcpy(GetAppendBuf(len), data, len); UngetAppendBuf(len); } - operator const char *() const { return (const char*)m_data; } - - - // Copy and assignment - wxMemoryBuffer(const wxMemoryBuffer& src) - : m_data(src.m_data), m_size(src.m_size), m_len(src.m_len) - { - // no reference count yet... - ((wxMemoryBuffer*)&src)->m_data = NULL; - ((wxMemoryBuffer*)&src)->m_size = 0; - ((wxMemoryBuffer*)&src)->m_len = 0; - } - - wxMemoryBuffer& operator=(const wxMemoryBuffer& src) - { - m_data = src.m_data; - m_size = src.m_size; - m_len = src.m_len; - - // no reference count yet... - ((wxMemoryBuffer*)&src)->m_data = NULL; - ((wxMemoryBuffer*)&src)->m_size = 0; - ((wxMemoryBuffer*)&src)->m_len = 0; - - return *this; - } - - -protected: - void ResizeIfNeeded(size_t newSize) - { - if (newSize > m_size) - { - m_data = realloc(m_data, newSize + wxMemoryBuffer::BLOCK_SIZE); - wxASSERT(m_data != NULL); - m_size = newSize + wxMemoryBuffer::BLOCK_SIZE; - } - } + operator const char *() const { return (const char*)GetData(); } private: - void* m_data; - size_t m_size; - size_t m_len; + wxMemoryBufferData* m_bufdata; }; // ---------------------------------------------------------------------------- diff --git a/include/wx/busyinfo.h b/include/wx/busyinfo.h index b5a94ba6de..ab9f5a6f2d 100644 --- a/include/wx/busyinfo.h +++ b/include/wx/busyinfo.h @@ -16,7 +16,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h index 5c9be4068b..eba1e81cbd 100644 --- a/include/wx/chkconf.h +++ b/include/wx/chkconf.h @@ -12,10 +12,10 @@ /* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */ /* - this global setting determintes what should we do if the setting FOO + this global setting determines what should we do if the setting FOO requires BAR and BAR is not set: we can either silently define BAR (default, recommended) or give an error and abort (mainly useful for - developpers only) + developers only) */ #define wxABORT_ON_CONFIG_ERROR @@ -95,6 +95,14 @@ # endif #endif /* !defined(wxUSE_MIMETYPE) */ +#ifndef wxUSE_PROLOGIO +# ifdef wxABORT_ON_CONFIG_ERROR +# error "wxUSE_PROLOGIO must be defined." +# else +# define wxUSE_PROLOGIO 0 +# endif +#endif /* !defined(wxUSE_PROLOGIO) */ + #ifndef wxUSE_PROTOCOL # ifdef wxABORT_ON_CONFIG_ERROR # error "wxUSE_PROTOCOL must be defined." @@ -675,6 +683,14 @@ # endif #endif /* !defined(wxUSE_TREECTRL) */ +#ifndef wxUSE_WX_RESOURCES +# ifdef wxABORT_ON_CONFIG_ERROR +# error "wxUSE_WX_RESOURCES must be defined." +# else +# define wxUSE_WX_RESOURCES 0 +# endif +#endif /* !defined(wxUSE_WX_RESOURCES) */ + #ifndef wxUSE_WXHTML_HELP # ifdef wxABORT_ON_CONFIG_ERROR # error "wxUSE_WXHTML_HELP must be defined." @@ -1045,7 +1061,7 @@ #endif /* wxUSE_RADIOBTN */ #if wxUSE_WXHTML_HELP -# if !wxUSE_HELP || !wxUSE_HTML || !wxUSE_COMBOBOX +# if !wxUSE_HELP || !wxUSE_HTML || !wxUSE_COMBOBOX || !wxUSE_NOTEBOOK # ifdef wxABORT_ON_CONFIG_ERROR # error "Built in help controller can't be compiled" # else @@ -1055,6 +1071,8 @@ # define wxUSE_HTML 1 # undef wxUSE_COMBOBOX # define wxUSE_COMBOBOX 1 +# undef wxUSE_NOTEBOOK +# define wxUSE_NOTEBOOK 1 # endif # endif #endif /* wxUSE_WXHTML_HELP */ @@ -1168,5 +1186,14 @@ # endif #endif /* wxUSE_CLIPBOARD */ +#if wxUSE_WX_RESOURCES && !wxUSE_PROLOGIO +# ifdef wxABORT_ON_CONFIG_ERROR +# error "wxr resources require PrologIO" +# else +# undef wxUSE_PROLOGIO +# define wxUSE_PROLOGIO 1 +# endif +#endif /* wxUSE_WX_RESOURCES */ + #endif /* wxUSE_GUI */ diff --git a/include/wx/cmdproc.h b/include/wx/cmdproc.h index 91ed5ee234..4092fdffda 100644 --- a/include/wx/cmdproc.h +++ b/include/wx/cmdproc.h @@ -26,7 +26,7 @@ class WXDLLEXPORT wxCommand : public wxObject { public: - wxCommand(bool canUndoIt = FALSE, const wxString& name = ""); + wxCommand(bool canUndoIt = FALSE, const wxString& name = wxT("")); ~wxCommand(); // Override this to perform a command @@ -69,9 +69,18 @@ public: virtual bool CanUndo() const; virtual bool CanRedo() const; + // Initialises the current command and menu strings. virtual void Initialize(); + + // Sets the Undo/Redo menu strings for the current menu. virtual void SetMenuStrings(); + // Gets the current Undo menu label. + wxString GetUndoMenuLabel() const; + + // Gets the current Undo menu label. + wxString GetRedoMenuLabel() const; + #if wxUSE_MENUS // Call this to manage an edit menu. void SetEditMenu(wxMenu *menu) { m_commandEditMenu = menu; } diff --git a/include/wx/cmndata.h b/include/wx/cmndata.h index d1aed4df34..390ec00aed 100644 --- a/include/wx/cmndata.h +++ b/include/wx/cmndata.h @@ -218,9 +218,11 @@ public: #elif defined(__WXMAC__) void* m_macPageFormat ; void* m_macPrintSettings ; + void* m_macPrintSession ; #endif private: + int m_printNoCopies; int m_printOrientation; bool m_printCollate; diff --git a/include/wx/colordlg.h b/include/wx/colordlg.h index 8b8ce1d292..d961b8b535 100644 --- a/include/wx/colordlg.h +++ b/include/wx/colordlg.h @@ -14,9 +14,9 @@ #if wxUSE_COLOURDLG -#if defined(__WXMSW__) +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) #include "wx/msw/colordlg.h" -#elif defined(__WXMAC__) +#elif defined(__WXMAC__) && !defined(__WXUNIVERSAL__) #include "wx/mac/colordlg.h" #else #include "wx/generic/colrdlgg.h" diff --git a/include/wx/datetime.h b/include/wx/datetime.h index 654041d61c..ca0c20ea0f 100644 --- a/include/wx/datetime.h +++ b/include/wx/datetime.h @@ -17,6 +17,8 @@ #pragma interface "datetime.h" #endif +#include "wx/defs.h" + #if wxUSE_DATETIME #include @@ -48,15 +50,11 @@ class WXDLLEXPORT wxDateSpan; // set this to the corresponding value in seconds 1/1/1970 has on your // systems c-runtime -#ifdef __WXMAC__ -#if __MSL__ < 0x6000 +#if defined(__WXMAC__) && !defined(__DARWIN__) && __MSL__ < 0x6000 #define WX_TIME_BASE_OFFSET ( 2082844800L + 126144000L ) #else #define WX_TIME_BASE_OFFSET 0 #endif -#else - #define WX_TIME_BASE_OFFSET 0 -#endif /* * TODO * @@ -657,8 +655,10 @@ public: // ------------------------------------------------------------------------ // set to the given week day in the same week as this one - wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday); - inline wxDateTime GetWeekDayInSameWeek(WeekDay weekday) const; + wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday, + WeekFlags flags = Monday_First); + inline wxDateTime GetWeekDayInSameWeek(WeekDay weekday, + WeekFlags flags = Monday_First) const; // set to the next week day following this one wxDateTime& SetToNextWeekDay(WeekDay weekday); @@ -692,8 +692,12 @@ public: // sets the date to the given day of the given week in the year, // returns TRUE on success and FALSE if given date doesn't exist (e.g. // numWeek is > 53) - bool SetToTheWeek(wxDateTime_t numWeek, WeekDay weekday = Mon); - inline wxDateTime GetWeek(wxDateTime_t numWeek, WeekDay weekday = Mon) const; + bool SetToTheWeek(wxDateTime_t numWeek, + WeekDay weekday = Mon, + WeekFlags flags = Monday_First); + inline wxDateTime GetWeek(wxDateTime_t numWeek, + WeekDay weekday = Mon, + WeekFlags flags = Monday_First) const; // sets the date to the last day of the given (or current) month or the // given (or current) year @@ -843,6 +847,15 @@ public: // adoption of the Gregorian calendar is simply unknown. bool IsGregorianDate(GregorianAdoption country = Gr_Standard) const; + // dos date and time format + // ------------------------------------------------------------------------ + + // set from the DOS packed format + wxDateTime& SetFromDOS(unsigned long ddt); + + // pack the date in DOS format + unsigned long GetAsDOS() const; + // comparison (see also functions below for operator versions) // ------------------------------------------------------------------------ diff --git a/include/wx/datetime.inl b/include/wx/datetime.inl index 8ec379dd9d..398b02828b 100644 --- a/include/wx/datetime.inl +++ b/include/wx/datetime.inl @@ -156,7 +156,8 @@ inline bool wxDateTime::SetToLastWeekDay(WeekDay weekday, return SetToWeekDay(weekday, -1, month, year); } -inline wxDateTime wxDateTime::GetWeekDayInSameWeek(WeekDay weekday) const +inline wxDateTime wxDateTime::GetWeekDayInSameWeek(WeekDay weekday, + WeekFlags flags) const { MODIFY_AND_RETURN( SetToWeekDayInSameWeek(weekday) ); } @@ -191,11 +192,12 @@ inline wxDateTime wxDateTime::GetLastWeekDay(WeekDay weekday, } inline wxDateTime wxDateTime::GetWeek(wxDateTime_t numWeek, - WeekDay weekday) const + WeekDay weekday, + WeekFlags flags) const { wxDateTime dt(*this); - return dt.SetToTheWeek(numWeek, weekday) ? dt : wxInvalidDateTime; + return dt.SetToTheWeek(numWeek, weekday, flags) ? dt : wxInvalidDateTime; } inline wxDateTime wxDateTime::GetLastMonthDay(Month month, int year) const diff --git a/include/wx/db.h b/include/wx/db.h index e43e77db95..ecb4f3ab6a 100644 --- a/include/wx/db.h +++ b/include/wx/db.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: db.h +// Name: wx/db.h // Purpose: Header file wxDb class. The wxDb class represents a connection // to an ODBC data source. The wxDb class allows operations on the data // source such as opening and closing the data source. @@ -32,13 +32,8 @@ // /////////////////////////////////////////////////////////////////////////////// -/* -// SYNOPSIS START -// SYNOPSIS STOP -*/ - -#ifndef DB_DOT_H -#define DB_DOT_H +#ifndef _WX_DB_H_ +#define _WX_DB_H_ // BJO 20000503: introduce new GetColumns members which are more database independant and @@ -58,36 +53,40 @@ #include "wx/string.h" #ifdef __VISUALC__ -// include standard Windows headers -#if defined(__WXMSW__) && !wxUSE_MFC - #ifndef STRICT - #define STRICT 1 - #endif + // we need to include standard Windows headers but we can't include + // directly when using MFC because it includes it itself in a + // different manner + #if wxUSE_MFC + #include + #else // !wxUSE_MFC + #ifndef STRICT + #define STRICT 1 + #endif - #include - #include "wx/msw/winundef.h" -#endif + #include + #include "wx/msw/winundef.h" + #endif // wxUSE_MFC/!wxUSE_MFC -// If you use the wxDbCreateDataSource() function with MSW/VC6, -// you cannot use the iODBC headers, you must use the VC headers, -// plus the odbcinst.h header - gt Nov 2 2000 -// -// Must add "odbccp32.lib" in \wx2\wxWindows\src\makevc.env to the WINLIBS= line -// + // If you use the wxDbCreateDataSource() function with MSW/VC6, + // you cannot use the iODBC headers, you must use the VC headers, + // plus the odbcinst.h header - gt Nov 2 2000 + // + // Must add "odbccp32.lib" in \wx2\wxWindows\src\makevc.env to the WINLIBS= line + // #include "sql.h" #include "sqlext.h" #include "odbcinst.h" #elif defined( __VMS ) -// For OpenVMS use the ones from the library -extern "C" { - #include - #include -} -#else -extern "C" { - #include "wx/isql.h" - #include "wx/isqlext.h" -} + // For OpenVMS use the ones from the library + extern "C" { + #include + #include + } +#else // !__VISUALC__, !__VMS + extern "C" { + #include "wx/isql.h" + #include "wx/isqlext.h" + } #endif @@ -715,7 +714,7 @@ int WXDLLEXPORT wxDbConnectionsInUse(void); // Writes a message to the wxLog window (stdout usually) when an internal error // situation occurs. This function only works in DEBUG builds -const wxChar WXDLLEXPORT *wxDbLogExtendedErrorMsg(const wxChar *userText, +const wxChar* WXDLLEXPORT wxDbLogExtendedErrorMsg(const wxChar *userText, wxDb *pDb, const wxChar *ErrFile, int ErrLine); @@ -772,10 +771,11 @@ bool WXDLLEXPORT FreeDbConnection(wxDB *pDb); void WXDLLEXPORT CloseDbConnections(void); int WXDLLEXPORT NumberDbConnectionsInUse(void); -bool SqlLog(sqlLog state, const char *filename = SQL_LOG_FILENAME); +bool SqlLog(sqlLog state, const wxChar *filename = SQL_LOG_FILENAME); bool WXDLLEXPORT GetDataSource(HENV henv, char *Dsn, SWORD DsnMax, char *DsDesc, SWORD DsDescMax, UWORD direction = SQL_FETCH_NEXT); #endif // Deprecated structures/classes/functions -#endif +#endif // _WX_DB_H_ + diff --git a/include/wx/debug.h b/include/wx/debug.h index 9c92739aaa..bbfd43d881 100644 --- a/include/wx/debug.h +++ b/include/wx/debug.h @@ -123,12 +123,13 @@ // Use of wxFalse instead of FALSE suppresses compiler warnings about testing // constant expression WXDLLEXPORT_DATA(extern const bool) wxFalse; +#define wxAssertFailure wxFalse // special form of assert: always triggers it (in debug mode) -#define wxFAIL wxASSERT(wxFalse) +#define wxFAIL wxASSERT(wxAssertFailure) // FAIL with some message -#define wxFAIL_MSG(msg) wxASSERT_MSG(wxFalse, msg) +#define wxFAIL_MSG(msg) wxASSERT_MSG(wxAssertFailure, msg) // NB: the following macros work also in release mode! @@ -178,11 +179,18 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse; particular, this is why we define a struct and not an object (which would result in a warning about unused variable) and a named struct (otherwise we'd get a warning about an unnamed struct not used to define an object!). + The _n__ part is to stop VC++ 7 being confused since it encloses __LINE++ in + parentheses. Unfortunately this does not work with other compilers, so + we will only enable it when we know the _precise_ symbols to test for. */ #define wxMAKE_ASSERT_NAME_HELPER(line) wxAssert_ ## line #define wxMAKE_ASSERT_NAME(line) wxMAKE_ASSERT_NAME_HELPER(line) +#if 0 +#define wxMAKE_UNIQUE_ASSERT_NAME wxMAKE_ASSERT_NAME(_n___ ## __LINE__) +#else #define wxMAKE_UNIQUE_ASSERT_NAME wxMAKE_ASSERT_NAME(__LINE__) +#endif #define wxMAKE_UNIQUE_ASSERT_NAME2(text) wxMAKE_ASSERT_NAME(text) /* diff --git a/include/wx/defs.h b/include/wx/defs.h index f0ce9ccc28..d28bdd0090 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -1099,6 +1099,7 @@ enum wxBorder * wxRadioButton style flag */ #define wxRB_GROUP 0x0004 +#define wxRB_SINGLE 0x0008 /* * wxGauge flags @@ -1172,8 +1173,12 @@ enum wxBorder */ #define wxTC_RIGHTJUSTIFY 0x0010 #define wxTC_FIXEDWIDTH 0x0020 -#define wxTC_OWNERDRAW 0x0040 +#define wxTC_TOP 0x0000 // default +#define wxTC_LEFT 0x0020 +#define wxTC_RIGHT 0x0040 +#define wxTC_BOTTOM 0x0080 #define wxTC_MULTILINE wxNB_MULTILINE +#define wxTC_OWNERDRAW 0x0200 // wxToolBar style flags #define wxTB_HORIZONTAL wxHORIZONTAL // == 0x0004 @@ -1794,10 +1799,10 @@ enum wxPrintMode // macro to specify "All Files" on different platforms #if defined(__WXMSW__) || defined(__WXPM__) -# define wxALL_FILES_PATTERN "*.*" +# define wxALL_FILES_PATTERN wxT("*.*") # define wxALL_FILES gettext_noop("All files (*.*)|*.*") #else -# define wxALL_FILES_PATTERN "*" +# define wxALL_FILES_PATTERN wxT("*") # define wxALL_FILES gettext_noop("All files (*)|*") #endif @@ -2083,13 +2088,24 @@ typedef GtkWidget *WXWidget; #endif #ifdef __WXGTK20__ +/* Input method thing */ +typedef struct _GtkIMMulticontext GtkIMMulticontext; +#endif // __WXGTK20__ + +#endif // __WXGTK__ + +#if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE) +#define wxUSE_PANGO 1 +#else +#define wxUSE_PANGO 0 +#endif + +#if wxUSE_PANGO /* Stand-ins for Pango types */ typedef struct _PangoContext PangoContext; typedef struct _PangoLayout PangoLayout; typedef struct _PangoFontDescription PangoFontDescription; -#endif // GTK+ 2.0 - -#endif // GTK +#endif #ifdef __WXMGL__ typedef struct window_t *WXWidget; diff --git a/include/wx/docmdi.h b/include/wx/docmdi.h index 37b2109475..089a328ce4 100644 --- a/include/wx/docmdi.h +++ b/include/wx/docmdi.h @@ -29,26 +29,26 @@ class WXDLLEXPORT wxDocMDIParentFrame: public wxMDIParentFrame { - DECLARE_CLASS(wxDocMDIParentFrame) - public: - wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id, - const wxString& title, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); +public: + wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id, + const wxString& title, const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame")); - // Extend event processing to search the document manager's event table - virtual bool ProcessEvent(wxEvent& event); + // Extend event processing to search the document manager's event table + virtual bool ProcessEvent(wxEvent& event); - wxDocManager *GetDocumentManager(void) const { return m_docManager; } + wxDocManager *GetDocumentManager(void) const { return m_docManager; } - void OnExit(wxCommandEvent& event); - void OnMRUFile(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); + void OnExit(wxCommandEvent& event); + void OnMRUFile(wxCommandEvent& event); + void OnCloseWindow(wxCloseEvent& event); - protected: - wxDocManager *m_docManager; +protected: + wxDocManager *m_docManager; - -DECLARE_EVENT_TABLE() +private: + DECLARE_CLASS(wxDocMDIParentFrame) + DECLARE_EVENT_TABLE() }; /* @@ -57,31 +57,31 @@ DECLARE_EVENT_TABLE() class WXDLLEXPORT wxDocMDIChildFrame: public wxMDIChildFrame { - DECLARE_CLASS(wxDocMDIChildFrame) +public: + wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id, + const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, + long type = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame")); + ~wxDocMDIChildFrame(); - public: - wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id, - const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long type = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - ~wxDocMDIChildFrame(void); + // Extend event processing to search the view's event table + virtual bool ProcessEvent(wxEvent& event); - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); + void OnActivate(wxActivateEvent& event); + void OnCloseWindow(wxCloseEvent& event); - void OnActivate(wxActivateEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - inline wxDocument *GetDocument(void) const { return m_childDocument; } - inline wxView *GetView(void) const { return m_childView; } - inline void SetDocument(wxDocument *doc) { m_childDocument = doc; } - inline void SetView(wxView *view) { m_childView = view; } - bool Destroy() { m_childView = (wxView *)NULL; return wxMDIChildFrame::Destroy(); } - protected: - wxDocument* m_childDocument; - wxView* m_childView; - -DECLARE_EVENT_TABLE() + inline wxDocument *GetDocument() const { return m_childDocument; } + inline wxView *GetView(void) const { return m_childView; } + inline void SetDocument(wxDocument *doc) { m_childDocument = doc; } + inline void SetView(wxView *view) { m_childView = view; } + bool Destroy() { m_childView = (wxView *)NULL; return wxMDIChildFrame::Destroy(); } + +protected: + wxDocument* m_childDocument; + wxView* m_childView; +private: + DECLARE_EVENT_TABLE() + DECLARE_CLASS(wxDocMDIChildFrame) }; #endif diff --git a/include/wx/docview.h b/include/wx/docview.h index 93e968d334..0a6ca711f4 100644 --- a/include/wx/docview.h +++ b/include/wx/docview.h @@ -64,8 +64,6 @@ enum class WXDLLEXPORT wxDocument : public wxEvtHandler { - DECLARE_ABSTRACT_CLASS(wxDocument) - public: wxDocument(wxDocument *parent = (wxDocument *) NULL); ~wxDocument(); @@ -160,12 +158,13 @@ protected: wxDocument* m_documentParent; wxCommandProcessor* m_commandProcessor; bool m_savedYet; + +private: + DECLARE_ABSTRACT_CLASS(wxDocument) }; class WXDLLEXPORT wxView: public wxEvtHandler { - DECLARE_ABSTRACT_CLASS(wxView) - public: // wxView(wxDocument *doc = (wxDocument *) NULL); wxView(); @@ -222,12 +221,14 @@ protected: wxDocument* m_viewDocument; wxString m_viewTypeName; wxWindow* m_viewFrame; + +private: + DECLARE_ABSTRACT_CLASS(wxView) }; // Represents user interface (and other) properties of documents and views class WXDLLEXPORT wxDocTemplate: public wxObject { -DECLARE_CLASS(wxDocTemplate) friend class WXDLLEXPORT wxDocManager; @@ -286,6 +287,9 @@ protected: // For dynamic creation of appropriate instances. wxClassInfo* m_docClassInfo; wxClassInfo* m_viewClassInfo; + +private: + DECLARE_CLASS(wxDocTemplate) }; // One object of this class may be created in an application, to manage all @@ -333,9 +337,6 @@ public: // called when file format detection didn't work, can be overridden to do // something in this case - // This is of course completely stupid, because if the file dialog is - // cancelled you get an assert. Brilliant. -- JACS -// virtual void OnOpenFileFailure() { wxFAIL_MSG(_T("file format mismatch")); } virtual void OnOpenFileFailure() { } virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); @@ -427,8 +428,6 @@ protected: class WXDLLEXPORT wxDocChildFrame : public wxFrame { - DECLARE_CLASS(wxDocChildFrame) - public: wxDocChildFrame(wxDocument *doc, wxView *view, @@ -438,7 +437,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long type = wxDEFAULT_FRAME_STYLE, - const wxString& name = "frame"); + const wxString& name = wxT("frame")); ~wxDocChildFrame(); // Extend event processing to search the view's event table @@ -457,6 +456,8 @@ protected: wxDocument* m_childDocument; wxView* m_childView; +private: + DECLARE_CLASS(wxDocChildFrame) DECLARE_EVENT_TABLE() }; @@ -466,8 +467,6 @@ protected: class WXDLLEXPORT wxDocParentFrame : public wxFrame { - DECLARE_CLASS(wxDocParentFrame) - public: wxDocParentFrame(wxDocManager *manager, wxFrame *frame, @@ -476,7 +475,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long type = wxDEFAULT_FRAME_STYLE, - const wxString& name = "frame"); + const wxString& name = wxT("frame")); // Extend event processing to search the document manager's event table virtual bool ProcessEvent(wxEvent& event); @@ -490,6 +489,8 @@ public: protected: wxDocManager *m_docManager; +private: + DECLARE_CLASS(wxDocParentFrame) DECLARE_EVENT_TABLE() }; @@ -500,10 +501,8 @@ protected: #if wxUSE_PRINTING_ARCHITECTURE class WXDLLEXPORT wxDocPrintout : public wxPrintout { - DECLARE_DYNAMIC_CLASS(wxDocPrintout) - public: - wxDocPrintout(wxView *view = (wxView *) NULL, const wxString& title = "Printout"); + wxDocPrintout(wxView *view = (wxView *) NULL, const wxString& title = wxT("Printout")); bool OnPrintPage(int page); bool HasPage(int page); bool OnBeginDocument(int startPage, int endPage); @@ -513,6 +512,9 @@ public: protected: wxView* m_printoutView; + +private: + DECLARE_DYNAMIC_CLASS(wxDocPrintout) }; #endif // wxUSE_PRINTING_ARCHITECTURE @@ -522,8 +524,6 @@ protected: class WXDLLEXPORT wxFileHistory : public wxObject { - DECLARE_DYNAMIC_CLASS(wxFileHistory) - public: wxFileHistory(int maxFiles = 9); ~wxFileHistory(); @@ -563,6 +563,9 @@ protected: wxList m_fileMenus; // Max files to maintain int m_fileMaxFiles; + +private: + DECLARE_DYNAMIC_CLASS(wxFileHistory) }; #if wxUSE_STD_IOSTREAM diff --git a/include/wx/dragimag.h b/include/wx/dragimag.h index 097edaacd3..39d4a81058 100644 --- a/include/wx/dragimag.h +++ b/include/wx/dragimag.h @@ -8,7 +8,7 @@ class WXDLLEXPORT wxMemoryDC; class WXDLLEXPORT wxDC; #if defined(__WXMSW__) -#ifdef __WIN16__ +#if defined(__WIN16__) || defined(__WXUNIVERSAL__) #include "wx/generic/dragimgg.h" #define wxDragImage wxGenericDragImage #define sm_classwxDragImage sm_classwxGenericDragImage diff --git a/include/wx/dynload.h b/include/wx/dynload.h index 11462250d6..a1c19d73a9 100644 --- a/include/wx/dynload.h +++ b/include/wx/dynload.h @@ -25,7 +25,7 @@ #if wxUSE_DYNAMIC_LOADER -#include "wx/hash.h" +#include "wx/hashmap.h" #include "wx/module.h" // FIXME: can this go in private.h or something too?? @@ -38,11 +38,10 @@ #include "wx/msw/private.h" #endif -// Ugh, I'd much rather this was typesafe, but no time -// to rewrite wxHashTable right now.. +class WXDLLEXPORT wxPluginLibrary; -typedef wxHashTable wxDLManifest; -typedef wxHashTable wxDLImports; +WX_DECLARE_EXPORTED_STRING_HASH_MAP(wxPluginLibrary *, wxDLManifest); +typedef wxDLManifest wxDLImports; // ---------------------------------------------------------------------------- // conditional compilation @@ -168,7 +167,7 @@ protected: // no copy ctor/assignment operators // or we'd try to unload the library twice -DECLARE_NO_COPY_CLASS(wxDynamicLibrary) + DECLARE_NO_COPY_CLASS(wxDynamicLibrary) }; @@ -234,7 +233,7 @@ private: void RegisterModules(); // Init any wxModules in the lib. void UnregisterModules(); // Cleanup any wxModules we installed. -DECLARE_NO_COPY_CLASS(wxPluginLibrary) + DECLARE_NO_COPY_CLASS(wxPluginLibrary) }; @@ -257,7 +256,7 @@ public: // Instance methods. - wxPluginManager() : m_entry(0) {}; + wxPluginManager() : m_entry(NULL) {}; wxPluginManager(const wxString &libname, int flags = wxDL_DEFAULT) { Load(libname, flags); @@ -277,14 +276,21 @@ public: static void ClearManifest() { delete ms_manifest; ms_manifest = NULL; } private: + // return the pointer to the entry for the library with given name in + // ms_manifest or NULL if none + static wxPluginLibrary *FindByName(const wxString& name) + { + const wxDLManifest::iterator i = ms_manifest->find(name); + + return i == ms_manifest->end() ? NULL : i->second; + } static wxDLManifest* ms_manifest; // Static hash of loaded libs. wxPluginLibrary* m_entry; // Cache our entry in the manifest. // We could allow this class to be copied if we really // wanted to, but not without modification. - -DECLARE_NO_COPY_CLASS(wxPluginManager) + DECLARE_NO_COPY_CLASS(wxPluginManager) }; diff --git a/include/wx/encconv.h b/include/wx/encconv.h index 013b9d76bf..7b9589f355 100644 --- a/include/wx/encconv.h +++ b/include/wx/encconv.h @@ -62,7 +62,7 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject wxEncodingConverter(); ~wxEncodingConverter() { if (m_Table) delete[] m_Table; } - // Initialize convertion. Both output or input encoding may + // Initialize conversion. Both output or input encoding may // be wxFONTENCODING_UNICODE, but only if wxUSE_WCHAR_T is set to 1. // // All subsequent calls to Convert() will interpret it's argument diff --git a/include/wx/event.h b/include/wx/event.h index 223502421d..744263bba4 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -817,22 +817,7 @@ class WXDLLEXPORT wxKeyEvent : public wxEvent { public: wxKeyEvent(wxEventType keyType = wxEVT_NULL); - wxKeyEvent(const wxKeyEvent& evt) : wxEvent(evt) - { - m_x = evt.m_x; - m_y = evt.m_y; - - m_keyCode = evt.m_keyCode; - - m_controlDown = evt.m_controlDown; - m_shiftDown = evt.m_shiftDown; - m_altDown = evt.m_altDown; - m_metaDown = evt.m_metaDown; - m_scanCode = evt.m_scanCode; - m_rawCode = evt.m_rawCode; - m_rawFlags = evt.m_rawFlags; - } - + wxKeyEvent(const wxKeyEvent& evt); // Find state of shift/control keys bool ControlDown() const { return m_controlDown; } @@ -914,8 +899,14 @@ public: bool m_metaDown; bool m_scanCode; - // these fields contain the platform-specific information about the pressed - // key +#if wxUSE_UNICODE + // This contains the full Unicode character + // in a character events in Unicode mode + wxChar m_uniChar; +#endif + + // these fields contain the platform-specific information about + // key that was pressed wxUint32 m_rawCode; wxUint32 m_rawFlags; diff --git a/include/wx/filedlg.h b/include/wx/filedlg.h index e3564fb8c4..63e8842d50 100644 --- a/include/wx/filedlg.h +++ b/include/wx/filedlg.h @@ -14,7 +14,9 @@ enum wxCHANGE_DIR = 0x0040 }; -#if defined(__WXMSW__) +#if defined (__WXUNIVERSAL__) +#include "wx/generic/filedlgg.h" +#elif defined(__WXMSW__) #include "wx/msw/filedlg.h" #elif defined(__WXMOTIF__) #include "wx/motif/filedlg.h" diff --git a/include/wx/filefn.h b/include/wx/filefn.h index 45e3648086..b6d2f0087f 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -150,34 +150,25 @@ WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode ); // functions // ---------------------------------------------------------------------------- WXDLLEXPORT bool wxFileExists(const wxString& filename); -#define FileExists wxFileExists // does the path exist? (may have or not '/' or '\\' at the end) WXDLLEXPORT bool wxPathExists(const wxChar *pszPathName); -#define wxDirExists wxPathExists -#define DirExists wxDirExists - WXDLLEXPORT bool wxIsAbsolutePath(const wxString& filename); -#define IsAbsolutePath wxIsAbsolutePath // Get filename WXDLLEXPORT wxChar* wxFileNameFromPath(wxChar *path); WXDLLEXPORT wxString wxFileNameFromPath(const wxString& path); -#define FileNameFromPath wxFileNameFromPath // Get directory WXDLLEXPORT wxString wxPathOnly(const wxString& path); -#define PathOnly wxPathOnly // wxString version WXDLLEXPORT wxString wxRealPath(const wxString& path); WXDLLEXPORT void wxDos2UnixFilename(wxChar *s); -#define Dos2UnixFilename wxDos2UnixFilename WXDLLEXPORT void wxUnix2DosFilename(wxChar *s); -#define Unix2DosFilename wxUnix2DosFilename // Strip the extension, in situ WXDLLEXPORT void wxStripExtension(wxChar *buffer); @@ -251,6 +242,19 @@ 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); +// compatibility defines, don't use in new code +#define wxDirExists wxPathExists + +#if WXWIN_COMPATIBILITY_2 + #define FileExists wxFileExists + #define DirExists wxDirExists + #define IsAbsolutePath wxIsAbsolutePath + #define FileNameFromPath wxFileNameFromPath + #define PathOnly wxPathOnly + #define Dos2UnixFilename wxDos2UnixFilename + #define Unix2DosFilename wxUnix2DosFilename +#endif + // ---------------------------------------------------------------------------- // separators in file names // ---------------------------------------------------------------------------- diff --git a/include/wx/filename.h b/include/wx/filename.h index 491e7deecc..38e6645e06 100644 --- a/include/wx/filename.h +++ b/include/wx/filename.h @@ -274,14 +274,21 @@ public: // Comparison - // compares with the rules of this platform - bool SameAs(const wxFileName &filepath, - wxPathFormat format = wxPATH_NATIVE); + // compares with the rules of the given platforms format + bool SameAs(const wxFileName& filepath, + wxPathFormat format = wxPATH_NATIVE) const; - // uses the current platform settings - bool operator==(const wxFileName& filename) { return SameAs(filename); } - bool operator==(const wxString& filename) - { return *this == wxFileName(filename); } + // compare with another filename object + bool operator==(const wxFileName& filename) const + { return SameAs(filename); } + bool operator!=(const wxFileName& filename) const + { return !SameAs(filename); } + + // compare with a filename string interpreted as a native file name + bool operator==(const wxString& filename) const + { return SameAs(wxFileName(filename)); } + bool operator!=(const wxString& filename) const + { return !SameAs(wxFileName(filename)); } // are the file names of this type cases sensitive? static bool IsCaseSensitive( wxPathFormat format = wxPATH_NATIVE ); diff --git a/include/wx/filesys.h b/include/wx/filesys.h index b8e5da0927..814a41a314 100644 --- a/include/wx/filesys.h +++ b/include/wx/filesys.h @@ -29,6 +29,7 @@ #include "wx/stream.h" #include "wx/url.h" #include "wx/datetime.h" +#include "wx/filename.h" class wxFSFile; class wxFileSystemHandler; @@ -180,6 +181,13 @@ public: // remove all items from the m_Handlers list static void CleanUpHandlers(); + // Returns the native path for a file URL + static wxFileName URLToFileName(const wxString& url); + + // Returns the file URL for a native path + static wxString FileNameToURL(const wxFileName& filename); + + protected: wxString m_Path; // the path (location) we are currently in diff --git a/include/wx/font.h b/include/wx/font.h index c627010124..bc5a0da2ac 100644 --- a/include/wx/font.h +++ b/include/wx/font.h @@ -141,6 +141,10 @@ public: wxString GetStyleString() const; wxString GetWeightString() const; + // Unofficial API, don't use + virtual void SetNoAntiAliasing( bool no = TRUE ) { } + virtual bool GetNoAntiAliasing() { return FALSE; } + // the default encoding is used for creating all fonts with default // encoding parameter static wxFontEncoding GetDefaultEncoding() { return ms_encodingDefault; } @@ -150,7 +154,7 @@ protected: // get the internal data wxFontRefData *GetFontData() const { return (wxFontRefData *)m_refData; } - + private: // the currently default encoding: by default, it's the default system // encoding, but may be changed by the application using diff --git a/include/wx/fontenc.h b/include/wx/fontenc.h index 2ec2bc147a..afa99f08f1 100644 --- a/include/wx/fontenc.h +++ b/include/wx/fontenc.h @@ -71,6 +71,15 @@ enum wxFontEncoding wxFONTENCODING_UTF7, // UTF-7 Unicode encoding wxFONTENCODING_UTF8, // UTF-8 Unicode encoding + // Far Eastern encodings + // Chinese + wxFONTENCODING_GB2312 = wxFONTENCODING_CP936, // Simplified Chinese + wxFONTENCODING_BIG5 = wxFONTENCODING_CP950, // Traditional Chinese + + // Japanese (see http://zsigri.tripod.com/fontboard/cjk/jis.html) + wxFONTENCODING_SHIFT_JIS = wxFONTENCODING_CP932, // Shift JIS + wxFONTENCODING_EUC_JP, // Extended Unix Codepage for Japanese + wxFONTENCODING_UNICODE, // Unicode - currently used only by // wxEncodingConverter class diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h index 90ec00dc1c..2adeb7ed40 100644 --- a/include/wx/fontutil.h +++ b/include/wx/fontutil.h @@ -72,7 +72,9 @@ enum wxXLFDField // further it might make sense to make it a real class with virtual methods struct WXDLLEXPORT wxNativeFontInfo { -#if defined(_WX_X_FONTLIKE) +#if wxUSE_PANGO + PangoFontDescription *description; +#elif defined(_WX_X_FONTLIKE) // the members can't be accessed directly as we only parse the // xFontName on demand private: @@ -113,8 +115,6 @@ public: FATTRS fa; FONTMETRICS fm; FACENAMEDESC fn; -#elif defined(__WXGTK20__) - PangoFontDescription *description; #else // other platforms // // This is a generic implementation that should work on all ports diff --git a/include/wx/frame.h b/include/wx/frame.h index 2af6cd1d8d..4228ea0c10 100644 --- a/include/wx/frame.h +++ b/include/wx/frame.h @@ -86,8 +86,10 @@ public: virtual wxMenuBar *GetMenuBar() const { return m_frameMenuBar; } #endif // wxUSE_MENUS +#ifdef WXWIN_COMPATIBILITY_2_2 // call this to simulate a menu command bool Command(int id) { return ProcessCommand(id); } +#endif // WXWIN_COMPATIBILITY_2_2 // process menu command: returns TRUE if processed bool ProcessCommand(int id); diff --git a/include/wx/fs_mem.h b/include/wx/fs_mem.h index 0d70b7be9e..44cd4d489d 100644 --- a/include/wx/fs_mem.h +++ b/include/wx/fs_mem.h @@ -15,7 +15,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/include/wx/fs_zip.h b/include/wx/fs_zip.h index cfc1a99525..0678587f36 100644 --- a/include/wx/fs_zip.h +++ b/include/wx/fs_zip.h @@ -16,7 +16,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h index 9f206f30fc..79559c6ce7 100644 --- a/include/wx/gdicmn.h +++ b/include/wx/gdicmn.h @@ -118,6 +118,9 @@ enum wxStockCursor #ifdef __WXGTK__ wxCURSOR_DEFAULT, // standard X11 cursor #endif +#ifdef __WXMAC__ + wxCURSOR_COPY_ARROW , // MacOS Theme Plus arrow +#endif #ifdef __X__ // Not yet implemented for Windows wxCURSOR_CROSS_REVERSE, @@ -151,10 +154,10 @@ enum wxStockCursor #ifdef __WXMSW__ // Load from a resource - #define wxICON(X) wxIcon("" #X "") + #define wxICON(X) wxIcon(wxT(#X)) #elif defined(__WXPM__) // Load from a resource - #define wxICON(X) wxIcon("" #X "") + #define wxICON(X) wxIcon(wxT(#X)) #elif defined(__WXMGL__) // Initialize from an included XPM #define wxICON(X) wxIcon( (const char**) X##_xpm ) @@ -172,7 +175,7 @@ enum wxStockCursor #define wxICON(X) wxIcon( X##_xpm ) #else // This will usually mean something on any platform - #define wxICON(X) wxIcon("" #X "") + #define wxICON(X) wxIcon(wxT(#X)) #endif // platform /* Another macro: this one is for portable creation of bitmaps. We assume that @@ -180,7 +183,7 @@ enum wxStockCursor */ #if defined(__WXMSW__) || defined(__WXPM__) - #define wxBITMAP(name) wxBitmap(#name, wxBITMAP_TYPE_RESOURCE) + #define wxBITMAP(name) wxBitmap(wxT(#name), wxBITMAP_TYPE_RESOURCE) #elif defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXX11__) || defined(__WXMAC__) || defined(__WXMGL__) // Initialize from an included XPM #define wxBITMAP(name) wxBitmap( (const char**) name##_xpm ) @@ -247,6 +250,7 @@ public: wxRealPoint operator-(const wxRealPoint& pt) const { return wxRealPoint(x - pt.x, y - pt.y); } bool operator==(const wxRealPoint& pt) const { return x == pt.x && y == pt.y; } + bool operator!=(const wxRealPoint& pt) const { return x != pt.x || y != pt.y; } }; class WXDLLEXPORT wxPoint diff --git a/include/wx/generic/calctrl.h b/include/wx/generic/calctrl.h index 63f98225f8..879ddcda07 100644 --- a/include/wx/generic/calctrl.h +++ b/include/wx/generic/calctrl.h @@ -43,12 +43,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS, - const wxString& name = wxCalendarNameStr) - { - Init(); - - (void)Create(parent, id, date, pos, size, style, name); - } + const wxString& name = wxCalendarNameStr); bool Create(wxWindow *parent, wxWindowID id, diff --git a/include/wx/generic/dirctrlg.h b/include/wx/generic/dirctrlg.h index f0456997a9..b19d21f647 100644 --- a/include/wx/generic/dirctrlg.h +++ b/include/wx/generic/dirctrlg.h @@ -102,9 +102,9 @@ public: int defaultFilter = 0, const wxString& name = wxTreeCtrlNameStr ); - void Init(); + virtual void Init(); - ~wxGenericDirCtrl(); + virtual ~wxGenericDirCtrl(); void OnExpandItem(wxTreeEvent &event ); void OnCollapseItem(wxTreeEvent &event ); @@ -113,52 +113,52 @@ public: void OnSize(wxSizeEvent &event ); // Try to expand as much of the given path as possible. - bool ExpandPath(const wxString& path); + virtual bool ExpandPath(const wxString& path); // Accessors - inline wxString GetDefaultPath() const { return m_defaultPath; } - void SetDefaultPath(const wxString& path) { m_defaultPath = path; } + virtual inline wxString GetDefaultPath() const { return m_defaultPath; } + virtual void SetDefaultPath(const wxString& path) { m_defaultPath = path; } // Get dir or filename - wxString GetPath() const; + virtual wxString GetPath() const; // Get selected filename path only (else empty string). // I.e. don't count a directory as a selection - wxString GetFilePath() const; - void SetPath(const wxString& path); + virtual wxString GetFilePath() const; + virtual void SetPath(const wxString& path); - void ShowHidden( bool show ); - bool GetShowHidden() { return m_showHidden; } + virtual void ShowHidden( bool show ); + virtual bool GetShowHidden() { return m_showHidden; } - wxString GetFilter() const { return m_filter; } - void SetFilter(const wxString& filter); + virtual wxString GetFilter() const { return m_filter; } + virtual void SetFilter(const wxString& filter); - int GetFilterIndex() const { return m_currentFilter; } - void SetFilterIndex(int n); + virtual int GetFilterIndex() const { return m_currentFilter; } + virtual void SetFilterIndex(int n); - wxTreeItemId GetRootId() { return m_rootId; } + virtual wxTreeItemId GetRootId() { return m_rootId; } - wxTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; } - wxDirFilterListCtrl* GetFilterListCtrl() const { return m_filterListCtrl; } + virtual wxTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; } + virtual wxDirFilterListCtrl* GetFilterListCtrl() const { return m_filterListCtrl; } // Helper - void SetupSections(); + virtual void SetupSections(); // Parse the filter into an array of filters and an array of descriptions - int ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions); + virtual int ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions); // Find the child that matches the first part of 'path'. // E.g. if a child path is "/usr" and 'path' is "/usr/include" // then the child for /usr is returned. // If the path string has been used (we're at the leaf), done is set to TRUE - wxTreeItemId FindChild(wxTreeItemId parentId, const wxString& path, bool& done); + virtual wxTreeItemId FindChild(wxTreeItemId parentId, const wxString& path, bool& done); // Resize the components of the control - void DoResize(); + virtual void DoResize(); // Collapse & expand the tree, thus re-creating it from scratch: - void ReCreateTree(); + virtual void ReCreateTree(); protected: void ExpandDir(wxTreeItemId parentId); diff --git a/include/wx/generic/dragimgg.h b/include/wx/generic/dragimgg.h index 0a907fdfac..ad24c31e6e 100644 --- a/include/wx/generic/dragimgg.h +++ b/include/wx/generic/dragimgg.h @@ -1,4 +1,4 @@ -///////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// // Name: wx/generic/dragimgg.h // Purpose: wxDragImage class: a kind of a cursor, that can cope // with more sophisticated images @@ -22,6 +22,7 @@ #include "wx/cursor.h" #include "wx/treectrl.h" #include "wx/listctrl.h" +#include "wx/log.h" /* To use this class, create a wxDragImage when you start dragging, for example: diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h index 452a01cf6a..9dacc71243 100644 --- a/include/wx/generic/filedlgg.h +++ b/include/wx/generic/filedlgg.h @@ -89,13 +89,17 @@ public: void OnHome( wxCommandEvent &event ); void OnListOk( wxCommandEvent &event ); void OnNew( wxCommandEvent &event ); - void OnChoice( wxCommandEvent &event ); + void OnChoiceFilter( wxCommandEvent &event ); void OnTextEnter( wxCommandEvent &event ); + void OnTextChange( wxCommandEvent &event ); void OnCheck( wxCommandEvent &event ); void HandleAction( const wxString &fn ); protected: + // use the filter with the given index + void DoSetFilterIndex(int filterindex); + wxString m_message; long m_dialogStyle; wxString m_dir; diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 3add2b3c6a..222b49c550 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -302,6 +302,9 @@ public: wxControl* GetControl() { return m_control; } void SetControl(wxControl* control) { m_control = control; } + wxGridCellAttr* GetCellAttr() { return m_attr; } + void SetCellAttr(wxGridCellAttr* attr) { m_attr = attr; } + // Creates the actual edit control virtual void Create(wxWindow* parent, wxWindowID id, @@ -364,6 +367,9 @@ protected: // the control we show on screen wxControl* m_control; + // a temporary pointer to the attribute being edited + wxGridCellAttr* m_attr; + // if we change the colours/font of the control from the default ones, we // must restore the default later and we save them here between calls to // Show(TRUE) and Show(FALSE) @@ -1824,7 +1830,7 @@ protected: bool GetModelValues(); bool SetModelValues(); - friend class wxGridSelection; + friend class WXDLLEXPORT wxGridSelection; DECLARE_DYNAMIC_CLASS( wxGrid ) DECLARE_EVENT_TABLE() diff --git a/include/wx/generic/gridsel.h b/include/wx/generic/gridsel.h index 4645f2c142..87fc640315 100644 --- a/include/wx/generic/gridsel.h +++ b/include/wx/generic/gridsel.h @@ -82,7 +82,7 @@ private: wxGrid *m_grid; wxGrid::wxGridSelectionModes m_selectionMode; - friend class wxGrid; + friend class WXDLLEXPORT wxGrid; }; #endif // #ifdef __WXGRIDSEL_H__ diff --git a/include/wx/generic/helphtml.h b/include/wx/generic/helphtml.h index ca99146693..8e81689988 100644 --- a/include/wx/generic/helphtml.h +++ b/include/wx/generic/helphtml.h @@ -86,7 +86,7 @@ DECLARE_ABSTRACT_CLASS(wxHTMLHelpControllerBase) @file Name of help directory. @return true on success */ - virtual bool LoadFile(const wxString& file = ""); + virtual bool LoadFile(const wxString& file = wxT("")); /** Display list of all help entries. @return true on success diff --git a/include/wx/generic/laywin.h b/include/wx/generic/laywin.h index 7a4908efdc..992e1b0d34 100644 --- a/include/wx/generic/laywin.h +++ b/include/wx/generic/laywin.h @@ -61,9 +61,7 @@ enum wxLayoutAlignment class WXDLLEXPORT wxQueryLayoutInfoEvent: public wxEvent { -DECLARE_DYNAMIC_CLASS(wxQueryLayoutInfoEvent) public: - wxQueryLayoutInfoEvent(wxWindowID id = 0) { SetEventType(wxEVT_QUERY_LAYOUT_INFO); @@ -99,7 +97,9 @@ protected: wxSize m_size; wxLayoutOrientation m_orientation; wxLayoutAlignment m_alignment; - + +private: + DECLARE_DYNAMIC_CLASS(wxQueryLayoutInfoEvent) }; typedef void (wxEvtHandler::*wxQueryLayoutInfoEventFunction)(wxQueryLayoutInfoEvent&); @@ -113,7 +113,6 @@ typedef void (wxEvtHandler::*wxQueryLayoutInfoEventFunction)(wxQueryLayoutInfoEv class WXDLLEXPORT wxCalculateLayoutEvent: public wxEvent { -DECLARE_DYNAMIC_CLASS(wxCalculateLayoutEvent) public: wxCalculateLayoutEvent(wxWindowID id = 0) { @@ -135,6 +134,9 @@ public: protected: int m_flags; wxRect m_rect; + +private: + DECLARE_DYNAMIC_CLASS(wxCalculateLayoutEvent) }; typedef void (wxEvtHandler::*wxCalculateLayoutEventFunction)(wxCalculateLayoutEvent&); @@ -149,7 +151,6 @@ typedef void (wxEvtHandler::*wxCalculateLayoutEventFunction)(wxCalculateLayoutEv // an IDE-style interface. class WXDLLEXPORT wxSashLayoutWindow: public wxSashWindow { - DECLARE_CLASS(wxSashLayoutWindow) public: wxSashLayoutWindow() { @@ -157,13 +158,13 @@ public: } wxSashLayoutWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "layoutWindow") + const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("layoutWindow")) { Create(parent, id, pos, size, style, name); } bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "layoutWindow"); + const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("layoutWindow")); // Accessors inline wxLayoutAlignment GetAlignment() const { return m_alignment; }; @@ -190,7 +191,9 @@ private: wxLayoutOrientation m_orientation; wxSize m_defaultSize; -DECLARE_EVENT_TABLE() +private: + DECLARE_CLASS(wxSashLayoutWindow) + DECLARE_EVENT_TABLE() }; #endif // wxUSE_SASH diff --git a/include/wx/generic/listctrl.h b/include/wx/generic/listctrl.h index b29dd9b516..b84337ef21 100644 --- a/include/wx/generic/listctrl.h +++ b/include/wx/generic/listctrl.h @@ -72,7 +72,7 @@ public: const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "listctrl" ) + const wxString &name = wxT("listctrl") ) { Create(parent, id, pos, size, style, validator, name); } @@ -84,7 +84,7 @@ public: const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "listctrl" ); + const wxString &name = wxT("listctrl") ); bool GetColumn( int col, wxListItem& item ) const; bool SetColumn( int col, wxListItem& item ); @@ -246,7 +246,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator &validator = wxDefaultValidator, - const wxString &name = "listctrl" ) + const wxString &name = wxT("listctrl") ) : wxGenericListCtrl(parent, id, pos, size, style, validator, name) { } diff --git a/include/wx/generic/mdig.h b/include/wx/generic/mdig.h index 2a5ab74f22..de26aa026d 100644 --- a/include/wx/generic/mdig.h +++ b/include/wx/generic/mdig.h @@ -63,7 +63,7 @@ public: #if wxUSE_MENUS wxMenu* GetWindowMenu() const { return m_pWindowMenu; }; - void SetWindowMenu(wxMenu* pMenu); + void SetWindowMenu(wxMenu* pMenu); virtual void SetMenuBar(wxMenuBar *pMenuBar); #endif // wxUSE_MENUS @@ -134,13 +134,13 @@ public: long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); -#if wxUSE_MENUS +#if wxUSE_MENUS virtual void SetMenuBar( wxMenuBar *menu_bar ); virtual wxMenuBar *GetMenuBar() const; -#endif // wxUSE_MENUS +#endif // wxUSE_MENUS virtual void SetTitle(const wxString& title); - virtual wxString GetTitle(); + virtual wxString GetTitle() const; virtual void Activate(); @@ -187,8 +187,8 @@ public: virtual bool ShowFullScreen(bool WXUNUSED(show), long WXUNUSED(style)) { return FALSE; } virtual bool IsFullScreen() const { return FALSE; } - virtual bool IsTopLevel() const { return FALSE; } - + virtual bool IsTopLevel() const { return FALSE; } + void OnMenuHighlight(wxMenuEvent& event); void OnActivate(wxActivateEvent& event); @@ -206,7 +206,7 @@ protected: #if wxUSE_MENUS wxMenuBar *m_pMenuBar; -#endif // wxUSE_MENUS +#endif // wxUSE_MENUS protected: void Init(); @@ -214,7 +214,7 @@ protected: virtual void DoMoveWindow(int x, int y, int width, int height); // This function needs to be called when a size change is confirmed, - // we needed this function to prevent any body from the outside + // we needed this function to prevent any body from the outside // changing the panel... it messes the UI layout when we would allow it. void ApplyMDIChildFrameRect(); @@ -256,7 +256,7 @@ private: */ #ifndef wxUSE_GENERIC_MDI_AS_NATIVE -#if defined(__WXUNIVERSAL__) +#if defined(__WXUNIVERSAL__) || defined(__WXPM__) #define wxUSE_GENERIC_MDI_AS_NATIVE 1 #else #define wxUSE_GENERIC_MDI_AS_NATIVE 0 @@ -265,6 +265,8 @@ private: #if wxUSE_GENERIC_MDI_AS_NATIVE +class wxMDIChildFrame ; + //----------------------------------------------------------------------------- // wxMDIParentFrame //----------------------------------------------------------------------------- @@ -284,6 +286,9 @@ public: { } + wxMDIChildFrame * GetActiveChild() const ; + + private: DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) }; diff --git a/include/wx/generic/panelg.h b/include/wx/generic/panelg.h index b7f14c0af2..cb4a5f7769 100644 --- a/include/wx/generic/panelg.h +++ b/include/wx/generic/panelg.h @@ -82,8 +82,8 @@ public: virtual void InitDialog(); #ifdef __WXUNIVERSAL__ - virtual bool IsCanvasWindow() { return TRUE; } - virtual bool ProvidesBackground() { return TRUE; } + virtual bool IsCanvasWindow() const { return TRUE; } + virtual bool ProvidesBackground() const { return TRUE; } #endif WX_DECLARE_CONTROL_CONTAINER(); diff --git a/include/wx/generic/progdlgg.h b/include/wx/generic/progdlgg.h index 08411b619f..11c64d291e 100644 --- a/include/wx/generic/progdlgg.h +++ b/include/wx/generic/progdlgg.h @@ -63,6 +63,8 @@ public: */ void Resume(); + bool Show( bool show = TRUE ); + protected: // callback for optional abort button void OnCancel(wxCommandEvent& event); diff --git a/include/wx/generic/sashwin.h b/include/wx/generic/sashwin.h index f21b76c8a3..dcd39f47f5 100644 --- a/include/wx/generic/sashwin.h +++ b/include/wx/generic/sashwin.h @@ -69,13 +69,7 @@ public: class WXDLLEXPORT wxSashWindow: public wxWindow { - DECLARE_DYNAMIC_CLASS(wxSashWindow) - public: - -//////////////////////////////////////////////////////////////////////////// -// Public API - // Default constructor wxSashWindow() { @@ -84,7 +78,7 @@ public: // Normal constructor wxSashWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow") + const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("sashWindow")) { Init(); Create(parent, id, pos, size, style, name); @@ -93,7 +87,7 @@ public: ~wxSashWindow(); bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow"); + const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("sashWindow")); // Set whether there's a sash in this position void SetSashVisible(wxSashEdgePosition edge, bool sash); @@ -144,6 +138,11 @@ public: // Adjusts the panes void OnSize(wxSizeEvent& event); +#ifdef __WXMSW__ + // Handle cursor correctly + void OnSetCursor(wxSetCursorEvent& event); +#endif // wxMSW + // Draws borders void DrawBorders(wxDC& dc); @@ -189,8 +188,11 @@ private: wxColour m_hilightColour; wxColour m_faceColour; bool m_mouseCaptured; + wxCursor* m_currentCursor; -DECLARE_EVENT_TABLE() +private: + DECLARE_DYNAMIC_CLASS(wxSashWindow) + DECLARE_EVENT_TABLE() }; BEGIN_DECLARE_EVENT_TYPES() @@ -207,9 +209,7 @@ enum wxSashDragStatus class WXDLLEXPORT wxSashEvent: public wxCommandEvent { - DECLARE_DYNAMIC_CLASS(wxSashEvent) - - public: +public: inline wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE) { m_eventType = (wxEventType) wxEVT_SASH_DRAGGED; m_id = id; m_edge = edge; } @@ -224,10 +224,14 @@ class WXDLLEXPORT wxSashEvent: public wxCommandEvent //// dragging the top below the bottom) inline void SetDragStatus(wxSashDragStatus status) { m_dragStatus = status; } inline wxSashDragStatus GetDragStatus() const { return m_dragStatus; } - private: + +private: wxSashEdgePosition m_edge; wxRect m_dragRect; wxSashDragStatus m_dragStatus; + +private: + DECLARE_DYNAMIC_CLASS(wxSashEvent) }; typedef void (wxEvtHandler::*wxSashEventFunction)(wxSashEvent&); diff --git a/include/wx/generic/scrolwin.h b/include/wx/generic/scrolwin.h index 1d3a4d3404..e0336e1368 100644 --- a/include/wx/generic/scrolwin.h +++ b/include/wx/generic/scrolwin.h @@ -69,6 +69,8 @@ public: // lay out the window and its children virtual bool Layout(); + virtual void DoSetVirtualSize(int x, int y); + protected: // this is needed for wxEVT_PAINT processing hack described in // wxScrollHelperEvtHandler::ProcessEvent() diff --git a/include/wx/generic/splitter.h b/include/wx/generic/splitter.h index 2ea74a49d0..26480fe129 100644 --- a/include/wx/generic/splitter.h +++ b/include/wx/generic/splitter.h @@ -71,7 +71,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_3D, - const wxString& name = "splitter") + const wxString& name = wxT("splitter")) { Init(); Create(parent, id, pos, size, style, name); @@ -83,7 +83,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_3D, - const wxString& name = "splitter"); + const wxString& name = wxT("splitter")); // Gets the only or left/top pane wxWindow *GetWindow1() const { return m_windowOne; } diff --git a/include/wx/generic/statusbr.h b/include/wx/generic/statusbr.h index fc08061abf..fe00d93e30 100644 --- a/include/wx/generic/statusbr.h +++ b/include/wx/generic/statusbr.h @@ -92,7 +92,9 @@ public: void SetBorderY(int y); void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); + + void OnLeftDown(wxMouseEvent& event); + void OnRightDown(wxMouseEvent& event); virtual void InitColours(); @@ -105,6 +107,8 @@ protected: wxArrayString m_statusStrings; + // the last known width of the client rect (used to rebuild cache) + int m_lastClientWidth; // the widths of the status bar panes in pixels wxArrayInt m_widthsAbs; diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h index 8d88362e3a..7d42d09ae2 100644 --- a/include/wx/generic/treectlg.h +++ b/include/wx/generic/treectlg.h @@ -33,6 +33,7 @@ class WXDLLEXPORT wxTreeItemData; class WXDLLEXPORT wxTreeRenameTimer; class WXDLLEXPORT wxTreeFindTimer; class WXDLLEXPORT wxTreeTextCtrl; +class WXDLLEXPORT wxTextCtrl; // ----------------------------------------------------------------------------- // wxGenericTreeCtrl - the tree control @@ -117,6 +118,15 @@ public: // get the data associated with the item wxTreeItemData *GetItemData(const wxTreeItemId& item) const; + // get the item's text colour + wxColour GetItemTextColour(const wxTreeItemId& item) const; + + // get the item's background colour + wxColour GetItemBackgroundColour(const wxTreeItemId& item) const; + + // get the item's font + wxFont GetItemFont(const wxTreeItemId& item) const; + // modifiers // --------- @@ -192,7 +202,16 @@ public: size_t GetSelections(wxArrayTreeItemIds&) const; // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; + wxTreeItemId GetItemParent(const wxTreeItemId& item) const; + +#if WXWIN_COMPATIBILITY_2_2 + // deprecated: Use GetItemParent instead. + wxTreeItemId GetParent(const wxTreeItemId& item) const + { return GetItemParent( item ); } + + // Expose the base class method hidden by the one above. + wxWindow *GetParent() const { return wxScrolledWindow::GetParent(); } +#endif // WXWIN_COMPATIBILITY_2_2 // for this enumeration function you must pass in a "cookie" parameter // which is opaque for the application but is necessary for the library @@ -306,6 +325,10 @@ public: // been before. void EditLabel( const wxTreeItemId& item ) { Edit( item ); } void Edit( const wxTreeItemId& item ); + // returns a pointer to the text edit control if the item is being + // edited, NULL otherwise (it's assumed that no more than one item may + // be edited simultaneously) + wxTextCtrl* GetEditControl() const; // sorting // this function is called to compare 2 items and should return -1, 0 @@ -376,6 +399,7 @@ protected: wxGenericTreeItem *m_dropTarget; wxCursor m_oldCursor; // cursor is changed while dragging wxGenericTreeItem *m_oldSelection; + wxTreeTextCtrl *m_textCtrl; wxTimer *m_renameTimer; @@ -402,6 +426,9 @@ protected: int image, int selectedImage, wxTreeItemData *data); + // called by wxTextTreeCtrl when it marks itself for deletion + void ResetTextControl(); + // find the first item starting with the given prefix after the given item wxTreeItemId FindItem(const wxTreeItemId& id, const wxString& prefix) const; diff --git a/include/wx/generic/treelay.h b/include/wx/generic/treelay.h index 4bcc4baf0f..b202da646e 100644 --- a/include/wx/generic/treelay.h +++ b/include/wx/generic/treelay.h @@ -29,8 +29,6 @@ class wxMouseEvent; class WXDLLEXPORT wxTreeLayout: public wxObject { - DECLARE_ABSTRACT_CLASS(wxTreeLayout) - public: wxTreeLayout(); virtual ~wxTreeLayout() { } @@ -49,7 +47,7 @@ public: // Optional redefinition void Initialize(void); inline virtual void SetNodeName(long WXUNUSED(id), const wxString& WXUNUSED(name)) {} - inline virtual wxString GetNodeName(long WXUNUSED(id)) { return wxString(""); } + inline virtual wxString GetNodeName(long WXUNUSED(id)) { return wxString(wxT("")); } virtual void GetNodeSize(long id, long *x, long *y, wxDC& dc); virtual void Draw(wxDC& dc); virtual void DrawNodes(wxDC& dc); @@ -76,8 +74,6 @@ public: private: void CalcLayout(long node_id, int level, wxDC& dc); - // Members - protected: long m_parentNode; long m_lastY; @@ -87,6 +83,9 @@ protected: long m_topMargin; long m_leftMargin; bool m_orientation; // TRUE for top-to-bottom, FALSE for left-to-right + +private: + DECLARE_ABSTRACT_CLASS(wxTreeLayout) }; class WXDLLEXPORT wxStoredNode @@ -105,7 +104,6 @@ public: class WXDLLEXPORT wxTreeLayoutStored: public wxTreeLayout { - DECLARE_DYNAMIC_CLASS(wxTreeLayoutStored) public: wxTreeLayoutStored(int noNodes = 200); virtual ~wxTreeLayoutStored(void); @@ -130,7 +128,7 @@ public: virtual void SetClientData(long id, long clientData); virtual long GetClientData(long id) const; - virtual long AddChild(const wxString& name, const wxString& parent = ""); + virtual long AddChild(const wxString& name, const wxString& parent = wxT("")); virtual long AddChild(const wxString& name, long parent); virtual long NameToId(const wxString& name); @@ -139,6 +137,9 @@ private: wxStoredNode* m_nodes; int m_num; int m_maxNodes; + +private: + DECLARE_DYNAMIC_CLASS(wxTreeLayoutStored) }; // For backward compatibility diff --git a/include/wx/geometry.h b/include/wx/geometry.h index dacbdd6203..80016c0a09 100644 --- a/include/wx/geometry.h +++ b/include/wx/geometry.h @@ -59,11 +59,11 @@ public : inline wxPoint2DInt( const wxPoint &pt ); // noops for this class, just return the coords - inline void GetFloor( wxInt32 *x , wxInt32 *y ); - inline void GetRounded( wxInt32 *x , wxInt32 *y ); + inline void GetFloor( wxInt32 *x , wxInt32 *y ) const; + inline void GetRounded( wxInt32 *x , wxInt32 *y ) const; - inline wxDouble GetVectorLength(); - wxDouble GetVectorAngle(); + inline wxDouble GetVectorLength() const; + wxDouble GetVectorAngle() const; inline void SetVectorLength( wxDouble length ); void SetVectorAngle( wxDouble degrees ); void SetPolarCoordinates( wxInt32 angle , wxInt32 length ); @@ -133,7 +133,7 @@ inline wxPoint2DInt::wxPoint2DInt( const wxPoint &pt ) m_y = pt.y; } -inline void wxPoint2DInt::GetFloor( wxInt32 *x , wxInt32 *y ) +inline void wxPoint2DInt::GetFloor( wxInt32 *x , wxInt32 *y ) const { if ( x ) *x = m_x; @@ -141,12 +141,12 @@ inline void wxPoint2DInt::GetFloor( wxInt32 *x , wxInt32 *y ) *y = m_y; } -inline void wxPoint2DInt::GetRounded( wxInt32 *x , wxInt32 *y ) +inline void wxPoint2DInt::GetRounded( wxInt32 *x , wxInt32 *y ) const { GetFloor(x, y); } -inline wxDouble wxPoint2DInt::GetVectorLength() +inline wxDouble wxPoint2DInt::GetVectorLength() const { // cast needed MIPSpro compiler under SGI return sqrt( (double)(m_x)*(m_x) + (m_y)*(m_y) ); @@ -304,8 +304,8 @@ public : { m_x = (wxDouble) pt.x ; m_y = (wxDouble) pt.y ; } // two different conversions to integers, floor and rounding - inline void GetFloor( wxInt32 *x , wxInt32 *y ); - inline void GetRounded( wxInt32 *x , wxInt32 *y ); + inline void GetFloor( wxInt32 *x , wxInt32 *y ) const; + inline void GetRounded( wxInt32 *x , wxInt32 *y ) const; inline wxDouble GetVectorLength() const; wxDouble GetVectorAngle() const ; @@ -315,10 +315,10 @@ public : // set the vector length to 1.0, preserving the angle void Normalize(); - inline wxDouble GetDistance( const wxPoint2DDouble &pt ); - inline wxDouble GetDistanceSquare( const wxPoint2DDouble &pt ); - inline wxDouble GetDotProduct( const wxPoint2DDouble &vec ); - inline wxDouble GetCrossProduct( const wxPoint2DDouble &vec ); + inline wxDouble GetDistance( const wxPoint2DDouble &pt ) const; + inline wxDouble GetDistanceSquare( const wxPoint2DDouble &pt ) const; + inline wxDouble GetDotProduct( const wxPoint2DDouble &vec ) const; + inline wxDouble GetCrossProduct( const wxPoint2DDouble &vec ) const; // the reflection of this point inline wxPoint2DDouble operator-(); @@ -369,13 +369,13 @@ inline wxPoint2DDouble::wxPoint2DDouble( const wxPoint2DDouble &pt ) m_y = pt.m_y; } -inline void wxPoint2DDouble::GetFloor( wxInt32 *x , wxInt32 *y ) +inline void wxPoint2DDouble::GetFloor( wxInt32 *x , wxInt32 *y ) const { *x = (wxInt32) floor( m_x ); *y = (wxInt32) floor( m_y ); } -inline void wxPoint2DDouble::GetRounded( wxInt32 *x , wxInt32 *y ) +inline void wxPoint2DDouble::GetRounded( wxInt32 *x , wxInt32 *y ) const { *x = (wxInt32) floor( m_x + 0.5 ); *y = (wxInt32) floor( m_y + 0.5); @@ -393,22 +393,22 @@ inline void wxPoint2DDouble::SetVectorLength( wxDouble length ) m_y = (m_y * length / before) ; } -inline wxDouble wxPoint2DDouble::GetDistance( const wxPoint2DDouble &pt ) +inline wxDouble wxPoint2DDouble::GetDistance( const wxPoint2DDouble &pt ) const { return sqrt( GetDistanceSquare( pt ) ); } -inline wxDouble wxPoint2DDouble::GetDistanceSquare( const wxPoint2DDouble &pt ) +inline wxDouble wxPoint2DDouble::GetDistanceSquare( const wxPoint2DDouble &pt ) const { return ( (pt.m_x-m_x)*(pt.m_x-m_x) + (pt.m_y-m_y)*(pt.m_y-m_y) ); } -inline wxDouble wxPoint2DDouble::GetDotProduct( const wxPoint2DDouble &vec ) +inline wxDouble wxPoint2DDouble::GetDotProduct( const wxPoint2DDouble &vec ) const { return ( m_x * vec.m_x + m_y * vec.m_y ); } -inline wxDouble wxPoint2DDouble::GetCrossProduct( const wxPoint2DDouble &vec ) +inline wxDouble wxPoint2DDouble::GetCrossProduct( const wxPoint2DDouble &vec ) const { return ( m_x * vec.m_y - vec.m_x * m_y ); } @@ -735,16 +735,16 @@ public: m_width *= ((wxInt32)num)/((wxInt32)denum); m_height *= ((wxInt32)num)/((wxInt32)denum);} wxRect2DInt& operator = (const wxRect2DInt& rect); - bool operator == (const wxRect2DInt& rect); - bool operator != (const wxRect2DInt& rect); + bool operator == (const wxRect2DInt& rect) const; + bool operator != (const wxRect2DInt& rect) const; - void WriteTo( wxDataOutputStream &stream ) const; - void ReadFrom( wxDataInputStream &stream ); + void WriteTo( wxDataOutputStream &stream ) const; + void ReadFrom( wxDataInputStream &stream ); wxInt32 m_x; - wxInt32 m_y; - wxInt32 m_width; - wxInt32 m_height; + wxInt32 m_y; + wxInt32 m_width; + wxInt32 m_height; }; inline wxRect2DInt::wxRect2DInt( const wxRect2DInt &r ) @@ -763,6 +763,17 @@ inline wxRect2DInt::wxRect2DInt( const wxPoint2DInt &a , const wxPoint2DInt &b) m_height = abs( a.m_y - b.m_y ); } +inline bool wxRect2DInt::operator == (const wxRect2DInt& rect) const +{ + return (m_x==rect.m_x && m_y==rect.m_y && + m_width==rect.m_width && m_height==rect.m_height); +} + +inline bool wxRect2DInt::operator != (const wxRect2DInt& rect) const +{ + return !(*this == rect); +} + class wxTransform2D { public : diff --git a/include/wx/glcanvas.h b/include/wx/glcanvas.h index 45962a519d..3c4a52646e 100644 --- a/include/wx/glcanvas.h +++ b/include/wx/glcanvas.h @@ -5,6 +5,8 @@ #if wxUSE_GLCANVAS +#define wxGLCanvasName _T("GLCanvas") + #if defined(__WXMSW__) #include "wx/msw/glcanvas.h" #elif defined(__WXMOTIF__) diff --git a/include/wx/gtk/button.h b/include/wx/gtk/button.h index f6d0a48857..5b895a059e 100644 --- a/include/wx/gtk/button.h +++ b/include/wx/gtk/button.h @@ -65,6 +65,7 @@ public: // -------------- void ApplyWidgetStyle(); + bool IsOwnGtkWindow( GdkWindow *window ); protected: virtual wxSize DoGetBestSize() const; diff --git a/include/wx/gtk/colour.h b/include/wx/gtk/colour.h index f299ca5949..de243d30a7 100644 --- a/include/wx/gtk/colour.h +++ b/include/wx/gtk/colour.h @@ -47,7 +47,7 @@ public: // Implicit conversion from the colour name wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } + wxColour( const char *colourName ) { InitFromName( wxString::FromAscii(colourName) ); } #if wxUSE_UNICODE wxColour( const wxChar *colourName ) { InitFromName( wxString(colourName) ); } #endif diff --git a/include/wx/gtk/combobox.h b/include/wx/gtk/combobox.h index 3574f6837f..6fc045a704 100644 --- a/include/wx/gtk/combobox.h +++ b/include/wx/gtk/combobox.h @@ -108,6 +108,8 @@ public: // implementation + virtual void SetFocus(); + void OnSize( wxSizeEvent &event ); void OnChar( wxKeyEvent &event ); diff --git a/include/wx/gtk/dataobj.h b/include/wx/gtk/dataobj.h index 019d5f657f..52ea20c7bd 100644 --- a/include/wx/gtk/dataobj.h +++ b/include/wx/gtk/dataobj.h @@ -22,10 +22,8 @@ class wxDataObject : public wxDataObjectBase { public: wxDataObject(); -#ifdef __DARWIN__ - virtual ~wxDataObject() { } -#endif - + virtual ~wxDataObject(); + virtual bool IsSupportedFormat( const wxDataFormat& format, Direction dir = Get ) const; }; diff --git a/include/wx/gtk/dcclient.h b/include/wx/gtk/dcclient.h index 802e60b693..a9cb16b074 100644 --- a/include/wx/gtk/dcclient.h +++ b/include/wx/gtk/dcclient.h @@ -118,6 +118,8 @@ public: wxWindow *m_owner; wxRegion m_currentClippingRegion; wxRegion m_paintClippingRegion; + + // PangoContext stuff for GTK 2.0 #ifdef __WXGTK20__ PangoContext *m_context; PangoFontDescription *m_fontdesc; diff --git a/include/wx/gtk/font.h b/include/wx/gtk/font.h index 9311e7d115..bad03b9d6b 100644 --- a/include/wx/gtk/font.h +++ b/include/wx/gtk/font.h @@ -96,6 +96,9 @@ public: virtual void SetEncoding(wxFontEncoding encoding); virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); + virtual void SetNoAntiAliasing( bool no = TRUE ); + virtual bool GetNoAntiAliasing(); + // implementation from now on void Unshare(); diff --git a/include/wx/gtk/frame.h b/include/wx/gtk/frame.h index 0a14bb20c3..d4ec4bc940 100644 --- a/include/wx/gtk/frame.h +++ b/include/wx/gtk/frame.h @@ -84,6 +84,7 @@ public: virtual void OnInternalIdle(); bool m_menuBarDetached; + int m_menuBarHeight; bool m_toolBarDetached; protected: @@ -95,8 +96,14 @@ protected: virtual void DoGetClientSize( int *width, int *height ) const; #if wxUSE_MENUS_NATIVE + virtual void DetachMenuBar(); virtual void AttachMenuBar(wxMenuBar *menubar); + +public: + // Menu size is dynamic now, call this whenever it might change. + void UpdateMenuBarSize(); + #endif // wxUSE_MENUS_NATIVE DECLARE_DYNAMIC_CLASS(wxFrame) diff --git a/include/wx/gtk/gauge.h b/include/wx/gtk/gauge.h index 11ec3318c1..c1d22c1a98 100644 --- a/include/wx/gtk/gauge.h +++ b/include/wx/gtk/gauge.h @@ -42,25 +42,32 @@ extern const wxChar* wxGaugeNameStr; class wxGauge: public wxControl { public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; } + wxGauge() { Init(); } - inline wxGauge( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ) + wxGauge( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ) { - Create(parent, id, range, pos, size, style, validator, name); + Init(); + + Create(parent, id, range, pos, size, style, validator, name); } - bool Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ); - void SetShadowWidth( int WXUNUSED(w) ) {}; - void SetBezelFace( int WXUNUSED(w) ) {}; + + bool Create( wxWindow *parent, + wxWindowID id, int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ); + + void SetShadowWidth( int WXUNUSED(w) ) { } + void SetBezelFace( int WXUNUSED(w) ) { } void SetRange( int r ); void SetValue( int pos ); int GetShadowWidth() const { return 0; }; @@ -68,17 +75,27 @@ public: int GetRange() const; int GetValue() const; - // Are we a Win95/GTK progress bar, or a normal gauge? - inline bool GetProgressBar() const { return m_useProgressBar; } - // implementation // ------------- - + void ApplyWidgetStyle(); - int m_rangeMax; - int m_gaugePos; - bool m_useProgressBar; - + + // the max and current gauge values + int m_rangeMax, + m_gaugePos; + + // obsolete functions, don't use +#ifdef WXWIN_COMPATIBILITY_2_2 + bool GetProgressBar() const { return TRUE; } +#endif // WXWIN_COMPATIBILITY_2_2 + +protected: + // common part of all ctors + void Init() { m_rangeMax = m_gaugePos = 0; } + + // set the gauge value to the value of m_gaugePos + void DoSetGauge(); + private: DECLARE_DYNAMIC_CLASS(wxGauge) }; diff --git a/include/wx/gtk/glcanvas.h b/include/wx/gtk/glcanvas.h index 472ba104ff..29f3deabc3 100644 --- a/include/wx/gtk/glcanvas.h +++ b/include/wx/gtk/glcanvas.h @@ -6,7 +6,7 @@ // Created: 17/8/98 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #if defined(__GNUG__) && !defined(__APPLE__) @@ -65,15 +65,15 @@ class WXDLLEXPORT wxGLContext: public wxObject { public: wxGLContext( bool isRGB, wxWindow *win, const wxPalette& palette = wxNullPalette ); - wxGLContext( - bool WXUNUSED(isRGB), wxWindow *win, + wxGLContext( + bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& WXUNUSED(palette), const wxGLContext *other /* for sharing display lists */ ); ~wxGLContext(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); void SetupPixelFormat(); @@ -91,7 +91,7 @@ public: GtkWidget *m_widget; wxPalette m_palette; wxWindow* m_window; - + private: DECLARE_CLASS(wxGLContext) }; @@ -110,51 +110,52 @@ public: m_vi = (void*) NULL; m_exposed = FALSE; } - wxGLCanvas( wxWindow *parent, wxWindowID id = -1, + wxGLCanvas( wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL, - wxWindowID id = -1, + wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared = (wxGLCanvas *)NULL, - wxWindowID id = -1, + wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); - bool Create( wxWindow *parent, - const wxGLContext *shared = (wxGLContext*)NULL, - const wxGLCanvas *shared_context_of = (wxGLCanvas*)NULL, - wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, - const wxPalette& palette = wxNullPalette ); - + bool Create( wxWindow *parent, + const wxGLContext *shared = (wxGLContext*)NULL, + const wxGLCanvas *shared_context_of = (wxGLCanvas*)NULL, + wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, + const wxPalette& palette = wxNullPalette ); + ~wxGLCanvas(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); void OnSize(wxSizeEvent& event); - + void OnInternalIdle(); - inline wxGLContext* GetContext() const { return m_glContext; } + inline wxGLContext* GetContext() const { return m_glContext; } // implementation - + wxGLContext *m_glContext, *m_sharedContext; wxGLCanvas *m_sharedContextOf; @@ -162,10 +163,10 @@ public: bool m_canFreeVi; GtkWidget *m_glWidget; bool m_exposed; - + // returns an XVisualInfo* based on desired GL attributes; // returns NULL if an appropriate visual is not found. The - // caller is reponsible for using XFree() to deallocate + // caller is reponsible for using XFree() to deallocate // the returned structure. static void* ChooseGLVisual(int *attribList); diff --git a/include/wx/gtk/notebook.h b/include/wx/gtk/notebook.h index 5d6abe9932..ec9ce37371 100644 --- a/include/wx/gtk/notebook.h +++ b/include/wx/gtk/notebook.h @@ -122,12 +122,15 @@ public: // selection internally instead of querying the notebook for it int m_selection; + // flag set to TRUE while we're inside "switch_page" callback + bool m_inSwitchPage; + protected: // remove one page from the notebook but do not destroy it virtual wxNotebookPage *DoRemovePage(int nPage); private: - + // the padding set by SetPadding() int m_padding; DECLARE_DYNAMIC_CLASS(wxNotebook) diff --git a/include/wx/gtk/region.h b/include/wx/gtk/region.h index 7c224ab08b..51e739c73f 100644 --- a/include/wx/gtk/region.h +++ b/include/wx/gtk/region.h @@ -146,11 +146,11 @@ public: void Reset() { m_current = 0u; } void Reset(const wxRegion& region); - operator bool () const; bool HaveRects() const; + operator bool () const { return HaveRects(); } - void operator ++ (); - void operator ++ (int); + wxRegionIterator& operator ++ (); + wxRegionIterator operator ++ (int); wxCoord GetX() const; wxCoord GetY() const; diff --git a/include/wx/gtk/scrolbar.h b/include/wx/gtk/scrolbar.h index 455eb42799..f471873aa3 100644 --- a/include/wx/gtk/scrolbar.h +++ b/include/wx/gtk/scrolbar.h @@ -12,7 +12,7 @@ #define __GTKSCROLLBARH__ #if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface +#pragma interface "scrolbar.h" #endif #include "wx/defs.h" diff --git a/include/wx/gtk/treectrl.h b/include/wx/gtk/treectrl.h index 3c657e0867..a6da82561f 100644 --- a/include/wx/gtk/treectrl.h +++ b/include/wx/gtk/treectrl.h @@ -251,7 +251,7 @@ public: wxTreeItemId GetSelection() const; // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; + wxTreeItemId GetItemParent(const wxTreeItemId& item) const; // for this enumeration function you must pass in a "cookie" parameter // which is opaque for the application but is necessary for the library diff --git a/include/wx/gtk/window.h b/include/wx/gtk/window.h index 7a48f97ffd..13adf9b21f 100644 --- a/include/wx/gtk/window.h +++ b/include/wx/gtk/window.h @@ -157,6 +157,17 @@ public: // and sets m_widgetStyle to this value. GtkStyle *GetWidgetStyle(); +#ifdef __WXGTK20__ + // Returns the default context which usually is anti-aliased + PangoContext *GtkGetPangoDefaultContext(); + + // Returns the X11 context which renders on the X11 client + // side (which can be remote) and which usually is not + // anti-aliased and is thus faster + PangoContext *GtkGetPangoX11Context(); + PangoContext *m_x11Context; +#endif + // Called by SetFont() and SetXXXColour etc void SetWidgetStyle(); @@ -195,11 +206,15 @@ public: // this widget will be queried for GTK's focus events GtkWidget *m_focusWidget; +#ifdef __WXGTK20__ + GtkIMMulticontext *m_imContext; +#else #if HAVE_XIM // XIM support for wxWindows GdkIC *m_ic; GdkICAttr *m_icattr; #endif +#endif #ifndef __WXGTK20__ // The area to be cleared (and not just refreshed) diff --git a/include/wx/gtk1/button.h b/include/wx/gtk1/button.h index f6d0a48857..5b895a059e 100644 --- a/include/wx/gtk1/button.h +++ b/include/wx/gtk1/button.h @@ -65,6 +65,7 @@ public: // -------------- void ApplyWidgetStyle(); + bool IsOwnGtkWindow( GdkWindow *window ); protected: virtual wxSize DoGetBestSize() const; diff --git a/include/wx/gtk1/colour.h b/include/wx/gtk1/colour.h index f299ca5949..de243d30a7 100644 --- a/include/wx/gtk1/colour.h +++ b/include/wx/gtk1/colour.h @@ -47,7 +47,7 @@ public: // Implicit conversion from the colour name wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } + wxColour( const char *colourName ) { InitFromName( wxString::FromAscii(colourName) ); } #if wxUSE_UNICODE wxColour( const wxChar *colourName ) { InitFromName( wxString(colourName) ); } #endif diff --git a/include/wx/gtk1/combobox.h b/include/wx/gtk1/combobox.h index 3574f6837f..6fc045a704 100644 --- a/include/wx/gtk1/combobox.h +++ b/include/wx/gtk1/combobox.h @@ -108,6 +108,8 @@ public: // implementation + virtual void SetFocus(); + void OnSize( wxSizeEvent &event ); void OnChar( wxKeyEvent &event ); diff --git a/include/wx/gtk1/dataobj.h b/include/wx/gtk1/dataobj.h index 019d5f657f..52ea20c7bd 100644 --- a/include/wx/gtk1/dataobj.h +++ b/include/wx/gtk1/dataobj.h @@ -22,10 +22,8 @@ class wxDataObject : public wxDataObjectBase { public: wxDataObject(); -#ifdef __DARWIN__ - virtual ~wxDataObject() { } -#endif - + virtual ~wxDataObject(); + virtual bool IsSupportedFormat( const wxDataFormat& format, Direction dir = Get ) const; }; diff --git a/include/wx/gtk1/dcclient.h b/include/wx/gtk1/dcclient.h index 802e60b693..a9cb16b074 100644 --- a/include/wx/gtk1/dcclient.h +++ b/include/wx/gtk1/dcclient.h @@ -118,6 +118,8 @@ public: wxWindow *m_owner; wxRegion m_currentClippingRegion; wxRegion m_paintClippingRegion; + + // PangoContext stuff for GTK 2.0 #ifdef __WXGTK20__ PangoContext *m_context; PangoFontDescription *m_fontdesc; diff --git a/include/wx/gtk1/font.h b/include/wx/gtk1/font.h index 9311e7d115..bad03b9d6b 100644 --- a/include/wx/gtk1/font.h +++ b/include/wx/gtk1/font.h @@ -96,6 +96,9 @@ public: virtual void SetEncoding(wxFontEncoding encoding); virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); + virtual void SetNoAntiAliasing( bool no = TRUE ); + virtual bool GetNoAntiAliasing(); + // implementation from now on void Unshare(); diff --git a/include/wx/gtk1/frame.h b/include/wx/gtk1/frame.h index 0a14bb20c3..d4ec4bc940 100644 --- a/include/wx/gtk1/frame.h +++ b/include/wx/gtk1/frame.h @@ -84,6 +84,7 @@ public: virtual void OnInternalIdle(); bool m_menuBarDetached; + int m_menuBarHeight; bool m_toolBarDetached; protected: @@ -95,8 +96,14 @@ protected: virtual void DoGetClientSize( int *width, int *height ) const; #if wxUSE_MENUS_NATIVE + virtual void DetachMenuBar(); virtual void AttachMenuBar(wxMenuBar *menubar); + +public: + // Menu size is dynamic now, call this whenever it might change. + void UpdateMenuBarSize(); + #endif // wxUSE_MENUS_NATIVE DECLARE_DYNAMIC_CLASS(wxFrame) diff --git a/include/wx/gtk1/gauge.h b/include/wx/gtk1/gauge.h index 11ec3318c1..c1d22c1a98 100644 --- a/include/wx/gtk1/gauge.h +++ b/include/wx/gtk1/gauge.h @@ -42,25 +42,32 @@ extern const wxChar* wxGaugeNameStr; class wxGauge: public wxControl { public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; } + wxGauge() { Init(); } - inline wxGauge( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ) + wxGauge( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ) { - Create(parent, id, range, pos, size, style, validator, name); + Init(); + + Create(parent, id, range, pos, size, style, validator, name); } - bool Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ); - void SetShadowWidth( int WXUNUSED(w) ) {}; - void SetBezelFace( int WXUNUSED(w) ) {}; + + bool Create( wxWindow *parent, + wxWindowID id, int range, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxGA_HORIZONTAL, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxGaugeNameStr ); + + void SetShadowWidth( int WXUNUSED(w) ) { } + void SetBezelFace( int WXUNUSED(w) ) { } void SetRange( int r ); void SetValue( int pos ); int GetShadowWidth() const { return 0; }; @@ -68,17 +75,27 @@ public: int GetRange() const; int GetValue() const; - // Are we a Win95/GTK progress bar, or a normal gauge? - inline bool GetProgressBar() const { return m_useProgressBar; } - // implementation // ------------- - + void ApplyWidgetStyle(); - int m_rangeMax; - int m_gaugePos; - bool m_useProgressBar; - + + // the max and current gauge values + int m_rangeMax, + m_gaugePos; + + // obsolete functions, don't use +#ifdef WXWIN_COMPATIBILITY_2_2 + bool GetProgressBar() const { return TRUE; } +#endif // WXWIN_COMPATIBILITY_2_2 + +protected: + // common part of all ctors + void Init() { m_rangeMax = m_gaugePos = 0; } + + // set the gauge value to the value of m_gaugePos + void DoSetGauge(); + private: DECLARE_DYNAMIC_CLASS(wxGauge) }; diff --git a/include/wx/gtk1/glcanvas.h b/include/wx/gtk1/glcanvas.h index 472ba104ff..29f3deabc3 100644 --- a/include/wx/gtk1/glcanvas.h +++ b/include/wx/gtk1/glcanvas.h @@ -6,7 +6,7 @@ // Created: 17/8/98 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #if defined(__GNUG__) && !defined(__APPLE__) @@ -65,15 +65,15 @@ class WXDLLEXPORT wxGLContext: public wxObject { public: wxGLContext( bool isRGB, wxWindow *win, const wxPalette& palette = wxNullPalette ); - wxGLContext( - bool WXUNUSED(isRGB), wxWindow *win, + wxGLContext( + bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& WXUNUSED(palette), const wxGLContext *other /* for sharing display lists */ ); ~wxGLContext(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); void SetupPixelFormat(); @@ -91,7 +91,7 @@ public: GtkWidget *m_widget; wxPalette m_palette; wxWindow* m_window; - + private: DECLARE_CLASS(wxGLContext) }; @@ -110,51 +110,52 @@ public: m_vi = (void*) NULL; m_exposed = FALSE; } - wxGLCanvas( wxWindow *parent, wxWindowID id = -1, + wxGLCanvas( wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL, - wxWindowID id = -1, + wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared = (wxGLCanvas *)NULL, - wxWindowID id = -1, + wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); - bool Create( wxWindow *parent, - const wxGLContext *shared = (wxGLContext*)NULL, - const wxGLCanvas *shared_context_of = (wxGLCanvas*)NULL, - wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, - const wxPalette& palette = wxNullPalette ); - + bool Create( wxWindow *parent, + const wxGLContext *shared = (wxGLContext*)NULL, + const wxGLCanvas *shared_context_of = (wxGLCanvas*)NULL, + wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxGLCanvasName, + int *attribList = (int*) NULL, + const wxPalette& palette = wxNullPalette ); + ~wxGLCanvas(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); void OnSize(wxSizeEvent& event); - + void OnInternalIdle(); - inline wxGLContext* GetContext() const { return m_glContext; } + inline wxGLContext* GetContext() const { return m_glContext; } // implementation - + wxGLContext *m_glContext, *m_sharedContext; wxGLCanvas *m_sharedContextOf; @@ -162,10 +163,10 @@ public: bool m_canFreeVi; GtkWidget *m_glWidget; bool m_exposed; - + // returns an XVisualInfo* based on desired GL attributes; // returns NULL if an appropriate visual is not found. The - // caller is reponsible for using XFree() to deallocate + // caller is reponsible for using XFree() to deallocate // the returned structure. static void* ChooseGLVisual(int *attribList); diff --git a/include/wx/gtk1/notebook.h b/include/wx/gtk1/notebook.h index 5d6abe9932..ec9ce37371 100644 --- a/include/wx/gtk1/notebook.h +++ b/include/wx/gtk1/notebook.h @@ -122,12 +122,15 @@ public: // selection internally instead of querying the notebook for it int m_selection; + // flag set to TRUE while we're inside "switch_page" callback + bool m_inSwitchPage; + protected: // remove one page from the notebook but do not destroy it virtual wxNotebookPage *DoRemovePage(int nPage); private: - + // the padding set by SetPadding() int m_padding; DECLARE_DYNAMIC_CLASS(wxNotebook) diff --git a/include/wx/gtk1/region.h b/include/wx/gtk1/region.h index 7c224ab08b..51e739c73f 100644 --- a/include/wx/gtk1/region.h +++ b/include/wx/gtk1/region.h @@ -146,11 +146,11 @@ public: void Reset() { m_current = 0u; } void Reset(const wxRegion& region); - operator bool () const; bool HaveRects() const; + operator bool () const { return HaveRects(); } - void operator ++ (); - void operator ++ (int); + wxRegionIterator& operator ++ (); + wxRegionIterator operator ++ (int); wxCoord GetX() const; wxCoord GetY() const; diff --git a/include/wx/gtk1/scrolbar.h b/include/wx/gtk1/scrolbar.h index 455eb42799..f471873aa3 100644 --- a/include/wx/gtk1/scrolbar.h +++ b/include/wx/gtk1/scrolbar.h @@ -12,7 +12,7 @@ #define __GTKSCROLLBARH__ #if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface +#pragma interface "scrolbar.h" #endif #include "wx/defs.h" diff --git a/include/wx/gtk1/treectrl.h b/include/wx/gtk1/treectrl.h index 3c657e0867..a6da82561f 100644 --- a/include/wx/gtk1/treectrl.h +++ b/include/wx/gtk1/treectrl.h @@ -251,7 +251,7 @@ public: wxTreeItemId GetSelection() const; // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; + wxTreeItemId GetItemParent(const wxTreeItemId& item) const; // for this enumeration function you must pass in a "cookie" parameter // which is opaque for the application but is necessary for the library diff --git a/include/wx/gtk1/window.h b/include/wx/gtk1/window.h index 7a48f97ffd..13adf9b21f 100644 --- a/include/wx/gtk1/window.h +++ b/include/wx/gtk1/window.h @@ -157,6 +157,17 @@ public: // and sets m_widgetStyle to this value. GtkStyle *GetWidgetStyle(); +#ifdef __WXGTK20__ + // Returns the default context which usually is anti-aliased + PangoContext *GtkGetPangoDefaultContext(); + + // Returns the X11 context which renders on the X11 client + // side (which can be remote) and which usually is not + // anti-aliased and is thus faster + PangoContext *GtkGetPangoX11Context(); + PangoContext *m_x11Context; +#endif + // Called by SetFont() and SetXXXColour etc void SetWidgetStyle(); @@ -195,11 +206,15 @@ public: // this widget will be queried for GTK's focus events GtkWidget *m_focusWidget; +#ifdef __WXGTK20__ + GtkIMMulticontext *m_imContext; +#else #if HAVE_XIM // XIM support for wxWindows GdkIC *m_ic; GdkICAttr *m_icattr; #endif +#endif #ifndef __WXGTK20__ // The area to be cleared (and not just refreshed) diff --git a/include/wx/hashmap.h b/include/wx/hashmap.h index 9b635e8a07..bc9fd8ef3a 100644 --- a/include/wx/hashmap.h +++ b/include/wx/hashmap.h @@ -62,9 +62,9 @@ protected: _wxHashTable_NodeBase** dstTable, BucketFromNode func, ProcessNode proc ); - static void** AllocTable( size_t size ) + static void** AllocTable( size_t sz ) { - return (void **)calloc(size, sizeof(void*)); + return (void **)calloc(sz, sizeof(void*)); } }; @@ -172,10 +172,10 @@ public: \ const_pointer operator ->() const { return &(m_node->m_value); } \ }; \ \ - CLASSNAME( size_type size = 10, const hasher& hfun = hasher(), \ + CLASSNAME( size_type sz = 10, const hasher& hfun = hasher(), \ const key_equal& k_eq = key_equal(), \ const key_extractor& k_ex = key_extractor() ) \ - : m_tableBuckets( GetNextPrime( size ) ), \ + : m_tableBuckets( GetNextPrime( sz ) ), \ m_items( 0 ), \ m_hasher( hfun ), \ m_equals( k_eq ), \ @@ -218,7 +218,12 @@ public: \ \ /* removes all elements from the hash table, but does not */ \ /* shrink it ( perhaps it should ) */ \ - void clear() { DeleteNodes( m_tableBuckets, (_wxHashTable_NodeBase**)m_table, DeleteNode ); } \ + void clear() \ + { \ + DeleteNodes( m_tableBuckets, (_wxHashTable_NodeBase**)m_table, \ + DeleteNode ); \ + m_items = 0; \ + } \ \ size_type size() const { return m_items; } \ size_type max_size() const { return size_type(-1); } \ @@ -323,7 +328,7 @@ protected: \ \ CopyHashTable( (_wxHashTable_NodeBase**)srcTable, srcBuckets, \ this, (_wxHashTable_NodeBase**)m_table, \ - (BucketFromNode)&GetBucketForNode,\ + (BucketFromNode)GetBucketForNode,\ (ProcessNode)&DummyProcessNode ); \ free(srcTable); \ } \ @@ -335,8 +340,8 @@ protected: \ CopyHashTable( (_wxHashTable_NodeBase**)ht.m_table, ht.m_tableBuckets,\ (_wxHashTableBase2*)this, \ (_wxHashTable_NodeBase**)m_table, \ - (BucketFromNode)&GetBucketForNode, \ - (ProcessNode)&CopyNode ); \ + (BucketFromNode)GetBucketForNode, \ + (ProcessNode)CopyNode ); \ } \ }; @@ -518,7 +523,7 @@ public: \ /* count() == 0 | 1 */ \ size_type count( const const_key_type& key ) \ { return GetNode( key ) ? 1 : 0; } \ -}; +} // these macros are to be used in the user code #define WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME) \ @@ -526,11 +531,11 @@ public: \ #define WX_DECLARE_STRING_HASH_MAP( VALUE_T, CLASSNAME ) \ _WX_DECLARE_HASH_MAP( wxString, VALUE_T, wxStringHash, wxStringEqual, \ - CLASSNAME, class ); + CLASSNAME, class ) #define WX_DECLARE_VOIDPTR_HASH_MAP( VALUE_T, CLASSNAME ) \ _WX_DECLARE_HASH_MAP( void*, VALUE_T, wxPointerHash, wxPointerEqual, \ - CLASSNAME, class ); + CLASSNAME, class ) // and these do exactly the same thing but should be used inside the // library @@ -539,11 +544,11 @@ public: \ #define WX_DECLARE_EXPORTED_STRING_HASH_MAP( VALUE_T, CLASSNAME ) \ _WX_DECLARE_HASH_MAP( wxString, VALUE_T, wxStringHash, wxStringEqual, \ - CLASSNAME, class WXDLLEXPORT ); + CLASSNAME, class WXDLLEXPORT ) #define WX_DECLARE_EXPORTED_VOIDPTR_HASH_MAP( VALUE_T, CLASSNAME ) \ _WX_DECLARE_HASH_MAP( void*, VALUE_T, wxPointerHash, wxPointerEqual, \ - CLASSNAME, class WXDLLEXPORT ); + CLASSNAME, class WXDLLEXPORT ) #endif // _WX_HASHMAP_H_ diff --git a/include/wx/helpbase.h b/include/wx/helpbase.h index 9ac23f2e9f..95a1562e7a 100644 --- a/include/wx/helpbase.h +++ b/include/wx/helpbase.h @@ -31,11 +31,9 @@ // Defines the API for help controllers class WXDLLEXPORT wxHelpControllerBase: public wxObject { - DECLARE_CLASS(wxHelpControllerBase) - public: inline wxHelpControllerBase() {} - inline ~wxHelpControllerBase() {}; + inline ~wxHelpControllerBase() {} // Must call this to set the filename and server name. // server is only required when implementing TCP/IP-based @@ -47,7 +45,7 @@ public: virtual void SetViewer(const wxString& WXUNUSED(viewer), long WXUNUSED(flags) = 0) {} // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = "") = 0; + virtual bool LoadFile(const wxString& file = wxT("")) = 0; // Displays the contents virtual bool DisplayContents(void) = 0; @@ -59,11 +57,11 @@ public: virtual bool DisplayContextPopup(int WXUNUSED(contextId)) { return FALSE; }; // Display the text in a popup, if possible - virtual bool DisplayTextPopup(const wxString& WXUNUSED(text), const wxPoint& WXUNUSED(pos)) { return FALSE; }; + virtual bool DisplayTextPopup(const wxString& WXUNUSED(text), const wxPoint& WXUNUSED(pos)) { return FALSE; } // By default, uses KeywordSection to display a topic. Implementations // may override this for more specific behaviour. - virtual bool DisplaySection(const wxString& section) { return KeywordSearch(section); }; + virtual bool DisplaySection(const wxString& section) { return KeywordSearch(section); } virtual bool DisplayBlock(long blockNo) = 0; virtual bool KeywordSearch(const wxString& k) = 0; /// Allows one to override the default settings for the help frame. @@ -80,11 +78,14 @@ public: wxPoint *WXUNUSED(pos) = NULL, bool *WXUNUSED(newFrameEachTime) = NULL) { - return (wxFrame*) NULL;// does nothing by default + return (wxFrame*) NULL; // does nothing by default } - virtual bool Quit(void) = 0; - virtual void OnQuit(void) {}; + virtual bool Quit() = 0; + virtual void OnQuit() {} + +private: + DECLARE_CLASS(wxHelpControllerBase) }; #endif // wxUSE_HELP diff --git a/include/wx/html/forcelnk.h b/include/wx/html/forcelnk.h index 38aca9f672..87c6b5a041 100644 --- a/include/wx/html/forcelnk.h +++ b/include/wx/html/forcelnk.h @@ -67,7 +67,6 @@ See mod_*.cpp and htmlwin.cpp for example :-) FORCE_LINK(m_hline) \ FORCE_LINK(m_links) \ FORCE_LINK(m_tables) \ - FORCE_LINK(m_meta) \ FORCE_LINK(m_style) diff --git a/include/wx/html/helpctrl.h b/include/wx/html/helpctrl.h index f5f285d8b7..a2a795b243 100644 --- a/include/wx/html/helpctrl.h +++ b/include/wx/html/helpctrl.h @@ -35,7 +35,8 @@ public: void SetTitleFormat(const wxString& format); void SetTempDir(const wxString& path) { m_helpData.SetTempDir(path); } - bool AddBook(const wxString& book, bool show_wait_msg = FALSE); + bool AddBook(const wxString& book_url, bool show_wait_msg = FALSE); + bool AddBook(const wxFileName& book_file, bool show_wait_msg = FALSE); bool Display(const wxString& x); bool Display(int id); @@ -57,7 +58,7 @@ public: virtual bool Initialize(const wxString& file, int WXUNUSED(server) ) { return Initialize(file); } virtual bool Initialize(const wxString& file); virtual void SetViewer(const wxString& WXUNUSED(viewer), long WXUNUSED(flags) = 0) {} - virtual bool LoadFile(const wxString& file = ""); + virtual bool LoadFile(const wxString& file = wxT("")); virtual bool DisplaySection(int sectionNo); virtual bool DisplaySection(const wxString& section) { return Display(section); } virtual bool DisplayBlock(long blockNo) { return DisplaySection(blockNo); } diff --git a/include/wx/html/helpdata.h b/include/wx/html/helpdata.h index 72612cf2b1..cf318613f2 100644 --- a/include/wx/html/helpdata.h +++ b/include/wx/html/helpdata.h @@ -93,23 +93,23 @@ struct wxHtmlContentsItem }; //------------------------------------------------------------------------------ -// wxSearchEngine +// wxHtmlSearchEngine // This class takes input streams and scans them for occurence // of keyword(s) //------------------------------------------------------------------------------ -class WXDLLEXPORT wxSearchEngine : public wxObject +class WXDLLEXPORT wxHtmlSearchEngine : public wxObject { public: - wxSearchEngine() : wxObject() {m_Keyword = NULL; } - ~wxSearchEngine() {if (m_Keyword) delete[] m_Keyword; } + wxHtmlSearchEngine() : wxObject() {m_Keyword = NULL; } + ~wxHtmlSearchEngine() {if (m_Keyword) delete[] m_Keyword; } // Sets the keyword we will be searching for virtual void LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only); // Scans the stream for the keyword. // Returns TRUE if the stream contains keyword, fALSE otherwise - virtual bool Scan(wxInputStream *stream); + virtual bool Scan(const wxFSFile& file); private: wxChar *m_Keyword; @@ -139,7 +139,7 @@ public: private: wxHtmlHelpData* m_Data; - wxSearchEngine m_Engine; + wxHtmlSearchEngine m_Engine; wxString m_Keyword, m_Name; wxChar *m_LastPage; wxHtmlContentsItem* m_ContentsItem; diff --git a/include/wx/html/helpfrm.h b/include/wx/html/helpfrm.h index 11a5e82961..3e0e6e9264 100644 --- a/include/wx/html/helpfrm.h +++ b/include/wx/html/helpfrm.h @@ -33,7 +33,9 @@ #include "wx/stattext.h" #include "wx/html/htmlwin.h" #include "wx/html/htmprint.h" + class WXDLLEXPORT wxButton; +class WXDLLEXPORT wxTextCtrl; // style flags for the Help Frame diff --git a/include/wx/html/htmlcell.h b/include/wx/html/htmlcell.h index e2760ab1f8..eb2b4bee51 100644 --- a/include/wx/html/htmlcell.h +++ b/include/wx/html/htmlcell.h @@ -219,6 +219,9 @@ public: void SetMinHeight(int h, int align = wxHTML_ALIGN_TOP) {m_MinHeight = h; m_MinHeightAlign = align; m_LastLayout = -1;} void SetBackgroundColour(const wxColour& clr) {m_UseBkColour = TRUE; m_BkColour = clr;} + // returns background colour (of wxNullColour if none set), so that widgets can + // adapt to it: + wxColour GetBackgroundColour(); void SetBorder(const wxColour& clr1, const wxColour& clr2) {m_UseBorder = TRUE; m_BorderColour1 = clr1, m_BorderColour2 = clr2;} virtual wxHtmlLinkInfo* GetLink(int x = 0, int y = 0) const; virtual const wxHtmlCell* Find(int condition, const void* param) const; diff --git a/include/wx/html/htmlfilt.h b/include/wx/html/htmlfilt.h index 57c5b47187..4f49f9f8c7 100644 --- a/include/wx/html/htmlfilt.h +++ b/include/wx/html/htmlfilt.h @@ -65,6 +65,20 @@ public: virtual wxString ReadFile(const wxFSFile& file) const; }; +//-------------------------------------------------------------------------------- +// wxHtmlFilterHTML +// filter for text/html +//-------------------------------------------------------------------------------- + +class wxHtmlFilterHTML : public wxHtmlFilter +{ + DECLARE_DYNAMIC_CLASS(wxHtmlFilterHTML) + + public: + virtual bool CanRead(const wxFSFile& file) const; + virtual wxString ReadFile(const wxFSFile& file) const; +}; + #endif // wxUSE_HTML diff --git a/include/wx/html/htmlpars.h b/include/wx/html/htmlpars.h index ea6a99bc5c..58f2f2bcc0 100644 --- a/include/wx/html/htmlpars.h +++ b/include/wx/html/htmlpars.h @@ -72,6 +72,9 @@ public: virtual void InitParser(const wxString& source); // This must be called after Parse(). virtual void DoneParser(); + + // May be called during parsing to immediately return from Parse(). + virtual void StopParsing() { m_stopParsing = TRUE; } // Parses the m_Source from begin_pos to end_pos-1. // (in noparams version it parses whole m_Source) @@ -117,6 +120,11 @@ public: // Restores parser's state from stack or returns FALSE if the stack is // empty virtual bool RestoreState(); + + // Parses HTML string 'markup' and extracts charset info from tag + // if present. Returns empty string if the tag is missing. + // For wxHTML's internal use. + static wxString ExtractCharsetInformation(const wxString& markup); protected: // DOM structure @@ -173,6 +181,9 @@ protected: // entity parse wxHtmlEntitiesParser *m_entitiesParser; + + // flag indicating that the parser should stop + bool m_stopParsing; }; @@ -242,7 +253,11 @@ public: wxChar GetEntityChar(const wxString& entity); // Returns character that represents given Unicode code +#if wxUSE_UNICODE + wxChar GetCharForCode(unsigned code) { return (wxChar)code; } +#else wxChar GetCharForCode(unsigned code); +#endif protected: #if wxUSE_WCHAR_T && !wxUSE_UNICODE diff --git a/include/wx/html/htmprint.h b/include/wx/html/htmprint.h index 38575d5b5a..713d1ef895 100644 --- a/include/wx/html/htmprint.h +++ b/include/wx/html/htmprint.h @@ -98,7 +98,7 @@ enum { class WXDLLEXPORT wxHtmlPrintout : public wxPrintout { public: - wxHtmlPrintout(const wxString& title = "Printout"); + wxHtmlPrintout(const wxString& title = wxT("Printout")); ~wxHtmlPrintout(); void SetHtmlText(const wxString& html, const wxString &basepath = wxEmptyString, bool isdir = TRUE); @@ -176,7 +176,7 @@ private: class WXDLLEXPORT wxHtmlEasyPrinting : public wxObject { public: - wxHtmlEasyPrinting(const wxString& name = "Printing", wxFrame *parent_frame = NULL); + wxHtmlEasyPrinting(const wxString& name = wxT("Printing"), wxFrame *parent_frame = NULL); ~wxHtmlEasyPrinting(); bool PreviewFile(const wxString &htmlfile); diff --git a/include/wx/html/m_templ.h b/include/wx/html/m_templ.h index 9d9174772d..7dc0e16227 100644 --- a/include/wx/html/m_templ.h +++ b/include/wx/html/m_templ.h @@ -32,7 +32,7 @@ I STRONGLY recommend reading and understanding these macros!! class HTML_Handler_##name : public wxHtmlWinTagHandler \ { \ public: \ - wxString GetSupportedTags() {return tags;} + wxString GetSupportedTags() {return wxT(tags);} diff --git a/include/wx/html/winpars.h b/include/wx/html/winpars.h index 5e6866d069..23905552f7 100644 --- a/include/wx/html/winpars.h +++ b/include/wx/html/winpars.h @@ -117,10 +117,12 @@ public: const wxHtmlLinkInfo& GetLink() const { return m_Link; } void SetLink(const wxHtmlLinkInfo& link); +#if !wxUSE_UNICODE void SetInputEncoding(wxFontEncoding enc); wxFontEncoding GetInputEncoding() const { return m_InputEnc; } wxFontEncoding GetOutputEncoding() const { return m_OutputEnc; } wxEncodingConverter *GetEncodingConverter() const { return m_EncConv; } +#endif // creates font depending on m_Font* members. virtual wxFont* CreateCurrentFont(); @@ -161,7 +163,9 @@ private: wxFont* m_FontsTable[2][2][2][2][7]; wxString m_FontsFacesTable[2][2][2][2][7]; +#if !wxUSE_UNICODE wxFontEncoding m_FontsEncTable[2][2][2][2][7]; +#endif // table of loaded fonts. 1st four indexes are 0 or 1, depending on on/off // state of these flags (from left to right): // [bold][italic][underlined][fixed_size] @@ -172,9 +176,11 @@ private: wxString m_FontFaceFixed, m_FontFaceNormal; // html font sizes and faces of fixed and proportional fonts +#if !wxUSE_UNICODE wxFontEncoding m_InputEnc, m_OutputEnc; // I/O font encodings wxEncodingConverter *m_EncConv; +#endif }; diff --git a/include/wx/image.h b/include/wx/image.h index 6d025c286b..c8aad2d3e6 100644 --- a/include/wx/image.h +++ b/include/wx/image.h @@ -44,7 +44,7 @@ class WXDLLEXPORT wxImageHandler: public wxObject { public: wxImageHandler() - : m_name(""), m_extension(""), m_mime(), m_type(0) + : m_name(wxT("")), m_extension(wxT("")), m_mime(), m_type(0) { } #if wxUSE_STREAMS @@ -121,7 +121,7 @@ public: wxImage( const wxImage* image ); #if WXWIN_COMPATIBILITY_2_2 && wxUSE_GUI - // convertion to/from wxBitmap (deprecated, use wxBitmap's methods instead): + // conversion to/from wxBitmap (deprecated, use wxBitmap's methods instead): wxImage( const wxBitmap &bitmap ); wxBitmap ConvertToBitmap() const; #ifdef __WXGTK__ @@ -147,6 +147,8 @@ public: // return the new image with size width*height wxImage Scale( int width, int height ) const; + wxImage ShrinkBy( int xFactor , int yFactor ) const ; + // rescales the image in place wxImage& Rescale( int width, int height ) { return *this = Scale(width, height); } @@ -248,9 +250,9 @@ public: return *this; } - bool operator == (const wxImage& image) + bool operator == (const wxImage& image) const { return m_refData == image.m_refData; } - bool operator != (const wxImage& image) + bool operator != (const wxImage& image) const { return m_refData != image.m_refData; } static wxList& GetHandlers() { return sm_handlers; } diff --git a/include/wx/imaggif.h b/include/wx/imaggif.h index 1eaba1b62e..5af07e4072 100644 --- a/include/wx/imaggif.h +++ b/include/wx/imaggif.h @@ -25,23 +25,23 @@ class WXDLLEXPORT wxGIFHandler : public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxGIFHandler) - public: - - inline wxGIFHandler() - { - m_name = "GIF file"; - m_extension = "gif"; - m_type = wxBITMAP_TYPE_GIF; - m_mime = "image/gif"; - }; + inline wxGIFHandler() + { + m_name = wxT("GIF file"); + m_extension = wxT("gif"); + m_type = wxBITMAP_TYPE_GIF; + m_mime = wxT("image/gif"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxGIFHandler) }; #endif diff --git a/include/wx/imagiff.h b/include/wx/imagiff.h index 076cc115a9..3591d7570e 100644 --- a/include/wx/imagiff.h +++ b/include/wx/imagiff.h @@ -24,8 +24,6 @@ class WXDLLEXPORT wxIFFHandler : public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxIFFHandler) - public: wxIFFHandler() { @@ -33,13 +31,16 @@ public: m_extension = wxT("iff"); m_type = wxBITMAP_TYPE_IFF; m_mime = wxT("image/x-iff"); - }; + } #if wxUSE_STREAMS virtual bool LoadFile(wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1); virtual bool SaveFile(wxImage *image, wxOutputStream& stream, bool verbose=TRUE); virtual bool DoCanRead(wxInputStream& stream); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxIFFHandler) }; #endif // wxUSE_IMAGE && wxUSE_IFF diff --git a/include/wx/imagjpeg.h b/include/wx/imagjpeg.h index ff76239224..7c9a82de9d 100644 --- a/include/wx/imagjpeg.h +++ b/include/wx/imagjpeg.h @@ -23,23 +23,23 @@ #if wxUSE_LIBJPEG class WXDLLEXPORT wxJPEGHandler: public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxJPEGHandler) - public: - - inline wxJPEGHandler() - { - m_name = "JPEG file"; - m_extension = "jpg"; - m_type = wxBITMAP_TYPE_JPEG; - m_mime = "image/jpeg"; - }; + inline wxJPEGHandler() + { + m_name = wxT("JPEG file"); + m_extension = wxT("jpg"); + m_type = wxBITMAP_TYPE_JPEG; + m_mime = wxT("image/jpeg"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxJPEGHandler) }; #endif diff --git a/include/wx/imagpcx.h b/include/wx/imagpcx.h index f6e5908472..40d3ca7c7e 100644 --- a/include/wx/imagpcx.h +++ b/include/wx/imagpcx.h @@ -24,23 +24,23 @@ #if wxUSE_PCX class WXDLLEXPORT wxPCXHandler : public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxPCXHandler) - public: - - inline wxPCXHandler() - { - m_name = "PCX file"; - m_extension = "pcx"; - m_type = wxBITMAP_TYPE_PCX; - m_mime = "image/pcx"; - }; + inline wxPCXHandler() + { + m_name = wxT("PCX file"); + m_extension = wxT("pcx"); + m_type = wxBITMAP_TYPE_PCX; + m_mime = wxT("image/pcx"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif // wxUSE_STREAMS + +private: + DECLARE_DYNAMIC_CLASS(wxPCXHandler) }; #endif // wxUSE_PCX diff --git a/include/wx/imagpng.h b/include/wx/imagpng.h index 232e880403..1183280c11 100644 --- a/include/wx/imagpng.h +++ b/include/wx/imagpng.h @@ -23,23 +23,23 @@ #if wxUSE_LIBPNG class WXDLLEXPORT wxPNGHandler: public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxPNGHandler) - public: - - inline wxPNGHandler() - { - m_name = "PNG file"; - m_extension = "png"; - m_type = wxBITMAP_TYPE_PNG; - m_mime = "image/png"; - }; + inline wxPNGHandler() + { + m_name = wxT("PNG file"); + m_extension = wxT("png"); + m_type = wxBITMAP_TYPE_PNG; + m_mime = wxT("image/png"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxPNGHandler) }; #endif diff --git a/include/wx/imagpnm.h b/include/wx/imagpnm.h index 21f2896b57..12f184f587 100644 --- a/include/wx/imagpnm.h +++ b/include/wx/imagpnm.h @@ -23,23 +23,23 @@ #if wxUSE_PNM class WXDLLEXPORT wxPNMHandler : public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxPNMHandler) - public: - - inline wxPNMHandler() - { - m_name = "PNM file"; - m_extension = "pnm"; - m_type = wxBITMAP_TYPE_PNM; - m_mime = "image/pnm"; - }; + inline wxPNMHandler() + { + m_name = wxT("PNM file"); + m_extension = wxT("pnm"); + m_type = wxBITMAP_TYPE_PNM; + m_mime = wxT("image/pnm"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxPNMHandler) }; #endif diff --git a/include/wx/imagtiff.h b/include/wx/imagtiff.h index 5d539336a8..67657d6d4f 100644 --- a/include/wx/imagtiff.h +++ b/include/wx/imagtiff.h @@ -24,24 +24,24 @@ #if wxUSE_LIBTIFF class WXDLLEXPORT wxTIFFHandler: public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxTIFFHandler) - public: - - inline wxTIFFHandler() - { - m_name = "TIFF file"; - m_extension = "tif"; - m_type = wxBITMAP_TYPE_TIF; - m_mime = "image/tiff"; - }; + inline wxTIFFHandler() + { + m_name = wxT("TIFF file"); + m_extension = wxT("tif"); + m_type = wxBITMAP_TYPE_TIF; + m_mime = wxT("image/tiff"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); - virtual int GetImageCount( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); + virtual int GetImageCount( wxInputStream& stream ); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxTIFFHandler) }; #endif diff --git a/include/wx/imagxpm.h b/include/wx/imagxpm.h index 658fa3d622..f8825308c2 100644 --- a/include/wx/imagxpm.h +++ b/include/wx/imagxpm.h @@ -23,23 +23,23 @@ class WXDLLEXPORT wxXPMHandler : public wxImageHandler { - DECLARE_DYNAMIC_CLASS(wxXPMHandler) - public: - - inline wxXPMHandler() - { - m_name = wxT("XPM file"); - m_extension = wxT("xpm"); - m_type = wxBITMAP_TYPE_XPM; - m_mime = wxT("image/xpm"); - }; + inline wxXPMHandler() + { + m_name = wxT("XPM file"); + m_extension = wxT("xpm"); + m_type = wxBITMAP_TYPE_XPM; + m_mime = wxT("image/xpm"); + } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); - virtual bool DoCanRead( wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif + +private: + DECLARE_DYNAMIC_CLASS(wxXPMHandler) }; diff --git a/include/wx/list.h b/include/wx/list.h index 886c744618..ed182de01f 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -193,7 +193,7 @@ private: class WXDLLEXPORT wxListBase : public wxObject { -friend class wxNodeBase; // should be able to call DetachNode() +friend class WXDLLEXPORT wxNodeBase; // should be able to call DetachNode() friend class wxHashTableBase; // should be able to call untyped Find() private: // common part of all ctors @@ -235,7 +235,7 @@ public: int Number() const { return GetCount(); } wxNode *First() const { return (wxNode *)GetFirst(); } wxNode *Last() const { return (wxNode *)GetLast(); } - wxNode *Nth(size_t index) const { return (wxNode *)Item(index); } + wxNode *Nth(size_t n) const { return (wxNode *)Item(n); } #endif // wxLIST_COMPATIBILITY protected: @@ -274,8 +274,12 @@ protected: wxNodeBase *Item(size_t index) const; // get the list item's data - void *operator[](size_t index) const - { wxNodeBase *node = Item(index); return node ? node->GetData() : (wxNodeBase*)NULL; } + void *operator[](size_t n) const + { + wxNodeBase *node = Item(n); + + return node ? node->GetData() : (wxNodeBase *)NULL; + } // operations // append to end of list diff --git a/include/wx/listctrl.h b/include/wx/listctrl.h index a89000e868..c57ee5ef67 100644 --- a/include/wx/listctrl.h +++ b/include/wx/listctrl.h @@ -44,7 +44,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxLC_REPORT, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "listctrl" ) + const wxString &name = wxT("listctrl") ) { Create(parent, id, pos, size, style, validator, name); } diff --git a/include/wx/log.h b/include/wx/log.h index a93daa1585..a50e6e8e40 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -44,6 +44,14 @@ typedef unsigned long wxLogLevel; #include "wx/dynarray.h" +#ifndef wxUSE_LOG_DEBUG +# ifdef __WXDEBUG__ +# define wxUSE_LOG_DEBUG 1 +# else // !__WXDEBUG__ +# define wxUSE_LOG_DEBUG 0 +# endif +#endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -55,12 +63,13 @@ enum wxLOG_Error, // a serious error, user must be informed about it wxLOG_Warning, // user is normally informed about it but may be ignored wxLOG_Message, // normal message (i.e. normal output of a non GUI app) - wxLOG_Info, // informational message (a.k.a. 'Verbose') wxLOG_Status, // informational: might go to the status line of GUI app + wxLOG_Info, // informational message (a.k.a. 'Verbose') wxLOG_Debug, // never shown to the user, disabled in release mode wxLOG_Trace, // trace messages are also only enabled in debug mode wxLOG_Progress, // used for progress indicator (not yet) - wxLOG_User = 100 // user defined levels start here + wxLOG_User = 100, // user defined levels start here + wxLOG_Max = 10000 }; // symbolic trace masks - wxLogTrace("foo", "some trace message...") will be @@ -120,7 +129,7 @@ public: // derived classes static void OnLog(wxLogLevel level, const wxChar *szString, time_t t) { - if ( IsEnabled() ) { + if ( IsEnabled() && ms_logLevel >= level ) { wxLog *pLogger = GetActiveTarget(); if ( pLogger ) pLogger->DoLog(level, szString, t); @@ -165,6 +174,10 @@ public: // verbose mode is activated by standard command-line '-verbose' // option static void SetVerbose(bool bVerbose = TRUE) { ms_bVerbose = bVerbose; } + + // Set log level. Log messages with level > logLevel will not be logged. + static void SetLogLevel(wxLogLevel logLevel) { ms_logLevel = logLevel; } + // should GetActiveTarget() try to create a new log object if the // current is NULL? static void DontCreateOnDemand(); @@ -185,6 +198,7 @@ public: // to NULL to disable time stamping completely. static void SetTimestamp(const wxChar *ts) { ms_timestamp = ts; } + // accessors // gets the verbose status static bool GetVerbose() { return ms_bVerbose; } @@ -193,10 +207,13 @@ public: // is this trace mask in the list? static bool IsAllowedTraceMask(const wxChar *mask) { return ms_aTraceMasks.Index(mask) != wxNOT_FOUND; } + // return the current loglevel limit + static wxLogLevel GetLogLevel() { return ms_logLevel; } // get the current timestamp format string (may be NULL) static const wxChar *GetTimestamp() { return ms_timestamp; } + // helpers // put the time stamp into the string if ms_timestamp != NULL (don't // change it otherwise) @@ -225,6 +242,8 @@ private: static bool ms_bAutoCreate; // create new log targets on demand? static bool ms_bVerbose; // FALSE => ignore LogInfo messages + static wxLogLevel ms_logLevel; // limit logging to levels <= ms_logLevel + static size_t ms_suspendCount; // if positive, logs are not flushed // format string for strftime(), if NULL, time stamping log messages is @@ -539,7 +558,7 @@ DECLARE_LOG_FUNCTION(SysError); DECLARE_LOG_FUNCTION2(SysError, long lErrCode); // debug functions do nothing in release mode -#ifdef __WXDEBUG__ +#if wxUSE_LOG_DEBUG DECLARE_LOG_FUNCTION(Debug); // first kind of LogTrace is unconditional: it doesn't check the level, diff --git a/include/wx/longlong.h b/include/wx/longlong.h index a4eb5f547d..db1bc25975 100644 --- a/include/wx/longlong.h +++ b/include/wx/longlong.h @@ -50,29 +50,39 @@ // long", then check for specific compilers #if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) #define wxLongLong_t long + #define wxLongLongSuffix l + #define wxLongLongFmtSpec _T("l") #define wxLongLongIsLong #elif (defined(__VISUALC__) && defined(__WIN32__)) || defined( __VMS__ ) #define wxLongLong_t __int64 + #define wxLongLongSuffix i64 + #define wxLongLongFmtSpec _T("I64") #elif defined(__BORLANDC__) && defined(__WIN32__) && (__BORLANDC__ >= 0x520) #define wxLongLong_t __int64 -#elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8 - #define wxLongLong_t long long -#elif defined(__MINGW32__) || defined(__CYGWIN__) || defined(__WXMICROWIN__) + #define wxLongLongSuffix i64 + #define wxLongLongFmtSpec _T("I64") +#elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ + defined(__MINGW32__) || \ + defined(__CYGWIN__) || \ + defined(__WXMICROWIN__) || \ + (defined(__DJGPP__) && __DJGPP__ >= 2) #define wxLongLong_t long long + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("ll") #elif defined(__MWERKS__) #if __option(longlong) #define wxLongLong_t long long + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("ll") #else #error "The 64 bit integer support in CodeWarrior has been disabled." #error "See the documentation on the 'longlong' pragma." #endif #elif defined(__VISAGECPP__) && __IBMCPP__ >= 400 - #define wxLongLong_t long long -#elif defined(__DJGPP__) && __DJGPP__ >= 2 #define wxLongLong_t long long #else // no native long long type // both warning and pragma warning are not portable, but at least an - // unknown pragma should never be an error - except that, actually, some + // unknown pragma should never be an error -- except that, actually, some // broken compilers don't like it, so we have to disable it in this case // #if !(defined(__WATCOMC__) || defined(__VISAGECPP__)) @@ -85,6 +95,11 @@ #define wxUSE_LONGLONG_WX 1 #endif // compiler +// this macro allows to definea 64 bit constant in a portable way +#define wxMakeLongLong(x, s) x ## s +#define wxMakeLongLong2(x, s) wxMakeLongLong(x, s) +#define wxLL(x) wxMakeLongLong2(x, wxLongLongSuffix) + // the user may predefine wxUSE_LONGLONG_NATIVE and/or wxUSE_LONGLONG_NATIVE // to disable automatic testing (useful for the test program which defines // both classes) but by default we only use one class diff --git a/include/wx/mac/app.h b/include/wx/mac/app.h index bbc96c1099..0241b2e649 100644 --- a/include/wx/mac/app.h +++ b/include/wx/mac/app.h @@ -109,6 +109,8 @@ public: static bool s_macDefaultEncodingIsPC ; static bool s_macSupportPCMenuShortcuts ; static long s_macAboutMenuItemId ; + static long s_macPreferencesMenuItemId ; + static long s_macExitMenuItemId ; static wxString s_macHelpMenuTitleName ; static bool s_macHasAppearance ; diff --git a/include/wx/mac/bitmap.h b/include/wx/mac/bitmap.h index dae1493b87..a4d30d11d3 100644 --- a/include/wx/mac/bitmap.h +++ b/include/wx/mac/bitmap.h @@ -203,7 +203,7 @@ public: inline WXHICON GetHICON() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_hIcon : 0); } WXHMETAFILE GetPict() const; - + void SetPict(WXHMETAFILE pict) ; bool FreeResource(bool force = FALSE); }; #endif diff --git a/include/wx/mac/cursor.h b/include/wx/mac/cursor.h index fc610f9564..0b9fff3a85 100644 --- a/include/wx/mac/cursor.h +++ b/include/wx/mac/cursor.h @@ -29,7 +29,11 @@ public: ~wxCursorRefData(); protected: - WXHCURSOR m_hCursor; + WXHCURSOR m_hCursor; + bool m_disposeHandle; + bool m_releaseHandle; + bool m_isColorCursor ; + long m_themeCursor ; }; #define M_CURSORDATA ((wxCursorRefData *)m_refData) @@ -51,13 +55,17 @@ public: wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, const char maskBits[] = NULL); + wxCursor(const wxImage & image) ; + wxCursor(const char **bits) ; + wxCursor(char **bits) ; wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_MACCURSOR_RESOURCE, int hotSpotX = 0, int hotSpotY = 0); wxCursor(int cursor_type); ~wxCursor(); - virtual bool Ok() const { return (m_refData != NULL && M_CURSORDATA->m_hCursor != NULL ) ; } + bool CreateFromXpm(const char **bits) ; + virtual bool Ok() const { return (m_refData != NULL && ( M_CURSORDATA->m_hCursor != NULL || M_CURSORDATA->m_themeCursor != -1 ) ) ; } inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } @@ -67,6 +75,8 @@ public: void SetHCURSOR(WXHCURSOR cursor); inline WXHCURSOR GetHCURSOR() const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); } +private : + void CreateFromImage(const wxImage & image) ; }; extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor); diff --git a/include/wx/mac/dataform.h b/include/wx/mac/dataform.h index d9267a9981..d1bf0f98bc 100644 --- a/include/wx/mac/dataform.h +++ b/include/wx/mac/dataform.h @@ -12,7 +12,7 @@ #ifndef _WX_MAC_DATAFORM_H #define _WX_MAC_DATAFORM_H -class wxDataFormat +class WXDLLEXPORT wxDataFormat { public: typedef unsigned long NativeFormat; diff --git a/include/wx/mac/dataobj.h b/include/wx/mac/dataobj.h index 3c1e8de47b..d0986d168e 100644 --- a/include/wx/mac/dataobj.h +++ b/include/wx/mac/dataobj.h @@ -20,7 +20,7 @@ // wxDataObject is the same as wxDataObjectBase under wxGTK // ---------------------------------------------------------------------------- -class wxDataObject : public wxDataObjectBase +class WXDLLEXPORT wxDataObject : public wxDataObjectBase { public: wxDataObject(); diff --git a/include/wx/mac/dataobj2.h b/include/wx/mac/dataobj2.h index 744aa141ae..c6fd53689c 100644 --- a/include/wx/mac/dataobj2.h +++ b/include/wx/mac/dataobj2.h @@ -20,7 +20,7 @@ // wxBitmapDataObject is a specialization of wxDataObject for bitmaps // ---------------------------------------------------------------------------- -class wxBitmapDataObject : public wxBitmapDataObjectBase +class WXDLLEXPORT wxBitmapDataObject : public wxBitmapDataObjectBase { public: // ctors @@ -64,7 +64,7 @@ private: // wxFileDataObject is a specialization of wxDataObject for file names // ---------------------------------------------------------------------------- -class wxFileDataObject : public wxFileDataObjectBase +class WXDLLEXPORT wxFileDataObject : public wxFileDataObjectBase { public: // implement base class pure virtuals diff --git a/include/wx/mac/dnd.h b/include/wx/mac/dnd.h index e77bb0025a..964894d65c 100644 --- a/include/wx/mac/dnd.h +++ b/include/wx/mac/dnd.h @@ -43,7 +43,7 @@ class WXDLLEXPORT wxDropSource; // the icon 'name' from an XPM file under GTK, but will expand to something // else under MSW. If you don't use it, you will have to use #ifdef in the // application code. -#define wxDROP_ICON(name) wxICON(name) +#define wxDROP_ICON(X) wxCursor( (const char**) X##_xpm ) //------------------------------------------------------------------------- // wxDropTarget @@ -74,19 +74,32 @@ class WXDLLEXPORT wxDropTarget: public wxDropTargetBase class WXDLLEXPORT wxDropSource: public wxDropSourceBase { public: + // only left in for binary compatibility /* constructor. set data later with SetData() */ + wxDropSource( wxWindow *win , + const wxIcon © , + const wxIcon &move , + const wxIcon &none ); + + // only left in for binary compatibility + /* constructor for setting one data object */ + wxDropSource( wxDataObject& data, + wxWindow *win, + const wxIcon © , + const wxIcon &move , + const wxIcon &none ); + wxDropSource( wxWindow *win = (wxWindow *)NULL, - const wxIcon © = wxNullIcon, - const wxIcon &move = wxNullIcon, - const wxIcon &none = wxNullIcon); + const wxCursor &cursorCopy = wxNullCursor, + const wxCursor &cursorMove = wxNullCursor, + const wxCursor &cursorStop = wxNullCursor); /* constructor for setting one data object */ wxDropSource( wxDataObject& data, wxWindow *win, - const wxIcon © = wxNullIcon, - const wxIcon &move = wxNullIcon, - const wxIcon &none = wxNullIcon); - + const wxCursor &cursorCopy = wxNullCursor, + const wxCursor &cursorMove = wxNullCursor, + const wxCursor &cursorStop = wxNullCursor); ~wxDropSource(); @@ -96,6 +109,7 @@ public: wxWindow* GetWindow() { return m_window ; } void SetCurrentDrag( void* drag ) { m_currentDrag = drag ; } void* GetCurrentDrag() { return m_currentDrag ; } + bool MacInstallDefaultCursor(wxDragResult effect) ; protected : wxWindow *m_window; void* m_currentDrag ; diff --git a/include/wx/mac/frame.h b/include/wx/mac/frame.h index 6434553ebe..1005712dd7 100644 --- a/include/wx/mac/frame.h +++ b/include/wx/mac/frame.h @@ -113,6 +113,9 @@ protected: virtual void DoGetClientSize(int *width, int *height) const; virtual void DoSetClientSize(int width, int height); + virtual void DetachMenuBar(); + virtual void AttachMenuBar(wxMenuBar *menubar); + protected: #if wxUSE_STATUSBAR static bool m_useNativeStatusBar; diff --git a/include/wx/mac/menu.h b/include/wx/mac/menu.h index 4c79dbf2aa..ea6b3f3e8c 100644 --- a/include/wx/mac/menu.h +++ b/include/wx/mac/menu.h @@ -63,7 +63,6 @@ public: // implementation only from now on // ------------------------------- - bool MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum) ; int MacGetIndexFromId( int id ) ; int MacGetIndexFromItem( wxMenuItem *pItem ) ; void MacEnableMenu( bool bDoEnable ) ; @@ -163,6 +162,11 @@ public: // attach to a frame void Attach(wxFrame *frame); + // clear the invoking window for all menus and submenus + void UnsetInvokingWindow() ; + + // set the invoking window for all menus and submenus + void SetInvokingWindow( wxFrame* frame ) ; #if wxUSE_ACCEL // get the accel table for all the menus const wxAcceleratorTable& GetAccelTable() const { return m_accelTable; } @@ -176,12 +180,12 @@ public: void Refresh(bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL); void MacInstallMenuBar() ; - void MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum) ; static wxMenuBar* MacGetInstalledMenuBar() { return s_macInstalledMenuBar ; } protected: // common part of all ctors void Init(); + wxWindow *m_invokingWindow; #if WXWIN_COMPATIBILITY wxEvtHandler *m_eventHandler; diff --git a/include/wx/mac/notebook.h b/include/wx/mac/notebook.h index e461360b9f..bdeec4ee71 100644 --- a/include/wx/mac/notebook.h +++ b/include/wx/mac/notebook.h @@ -143,8 +143,8 @@ protected: void ChangePage(int nOldSel, int nSel); // change pages void MacSetupTabs(); -// wxImageList *m_pImageList; // we can have an associated image list -// wxArrayPages m_aPages; // array of pages + // the icon indices + wxArrayInt m_images; int m_nSelection; // the current selection (-1 if none) diff --git a/include/wx/mac/private.h b/include/wx/mac/private.h index f34b32ea62..341d5307c7 100644 --- a/include/wx/mac/private.h +++ b/include/wx/mac/private.h @@ -129,7 +129,7 @@ PicHandle wxMacCreatePict( GWorldPtr gw , GWorldPtr mask = NULL ) ; CIconHandle wxMacCreateCIcon(GWorldPtr image , GWorldPtr mask , short dstDepth , short iconSize ) ; void wxMacSetColorTableEntry( CTabHandle newColors , int index , int red , int green , int blue ) ; CTabHandle wxMacCreateColorTable( int numColors ) ; -void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , bool forceColorIcon = false ) ; +void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType = 0 ) ; #define MAC_WXCOLORREF(a) (*((RGBColor*)&(a))) #define MAC_WXHBITMAP(a) (GWorldPtr(a)) diff --git a/include/wx/mac/setup0.h b/include/wx/mac/setup0.h index 5942f39266..5f5157bb1b 100644 --- a/include/wx/mac/setup0.h +++ b/include/wx/mac/setup0.h @@ -36,6 +36,22 @@ // so there is little advantage to setting it to 1. #define WXWIN_COMPATIBILITY 0 +// This setting determines the compatibility with 2.0 API: set it to 1 to +// enable it +// +// Default is 0. +// +// Recommended setting: 0 (please update your code instead!) +#define WXWIN_COMPATIBILITY_2 0 + +// This setting determines the compatibility with 2.0 API: set it to 1 to +// enable it +// +// Default is 1. +// +// Recommended setting: 0 (please update your code instead!) +#define WXWIN_COMPATIBILITY_2_2 1 + // in wxMSW version 2.1.11 and earlier, wxIcon always derives from wxBitmap, // but this is very dangerous because you can mistakenly pass an icon instead // of a bitmap to a function taking "const wxBitmap&" - which will *not* work @@ -106,23 +122,25 @@ #define wxUSE_MEMORY_TRACING 1 // In debug mode, cause new and delete to be redefined globally. -// If this causes problems (e.g. link errors), set this to 0. +// If this causes problems (e.g. link errors which is a common problem +// especially if you use another library which also redefines the global new +// and delete), set this to 0. // This switch is currently ignored for mingw / cygwin // -// Default is 1 +// Default is 0 // -// Recommended setting: 1 but see comment in the beginning of this section +// Recommended setting: 0 #define wxUSE_GLOBAL_MEMORY_OPERATORS 0 // In debug mode, causes new to be defined to be WXDEBUG_NEW (see object.h). If // this causes problems (e.g. link errors), set this to 0. You may need to set // this to 0 if using templates (at least for VC++). This switch is currently -// ignored for mingw / cygwin +// ignored for mingw / cygwin // -// Default is 1 +// Default is 0 // -// Recommended setting: 1 but see comment in the beginning of this section -#define wxUSE_DEBUG_NEW_ALWAYS 1 +// Recommended setting: 0 +#define wxUSE_DEBUG_NEW_ALWAYS 0 // wxHandleFatalExceptions() may be used to catch the program faults at run // time and, instead of terminating the program with a usual GPF message box, @@ -190,6 +208,13 @@ // Recommended setting: 1 (always) #define wxUSE_LOG_DIALOG 1 +// Support for command line parsing using wxCmdLineParser class. +// +// Default is 1 +// +// Recommended setting: 1 (can be set to 0 if you don't use the cmd line) +#define wxUSE_CMDLINE_PARSER 1 + // Support for multithreaded applications: if 1, compile in thread classes // (thread.h) and make the library a bit more thread safe. Although thread // support is quite stable by now, you may still consider recompiling the @@ -246,7 +271,8 @@ // use wxTextBuffer class: required by wxTextFile #define wxUSE_TEXTBUFFER 1 -// use wxTextFile class: requires wxFile, required by wxFileConfig +// use wxTextFile class: requires wxFile and wxTextBuffer, required by +// wxFileConfig #define wxUSE_TEXTFILE 1 // i18n support: _() macro, wxLocale class. Requires wxTextFile. @@ -317,14 +343,14 @@ // If wxUSE_DIALUP_MANAGER is 1, compile in wxDialUpManager class which allows // to connect/disconnect from the network and be notified whenever the dial-up -// network connection is established/terminated. Requires wxUSE_DYNLIB_CLASS. +// network connection is established/terminated. Requires wxUSE_DYNAMIC_LOADER. // // Default is 1. // // Recommended setting: 1 #define wxUSE_DIALUP_MANAGER 1 -// Compile in wxLibrary class for run-time DLL loading and function calling. +// Compile in classes for run-time DLL loading and function calling. // Required by wxUSE_DIALUP_MANAGER. // // This setting is for Win32 only @@ -374,9 +400,6 @@ // wxMimeTypesManager class #define wxUSE_MIMETYPE 1 -// wxSystemOptions class -#define wxUSE_SYSTEM_OPTIONS 1 - // wxProtocol and related classes: if you want to use either of wxFTP, wxHTTP // or wxURL you need to set this to 1. // @@ -401,7 +424,13 @@ // // Recommended setting: 1 if your compiler supports it, if it doesn't please // contribute us a makefile for src/regex for it -#define wxUSE_REGEX 0 +#define wxUSE_REGEX 1 + +// wxSystemOptions class +#define wxUSE_SYSTEM_OPTIONS 1 + +// wxWave class +#define wxUSE_WAVE 1 // ---------------------------------------------------------------------------- // Individual GUI controls @@ -450,7 +479,6 @@ #define wxUSE_GAUGE 1 // wxGauge #define wxUSE_LISTBOX 1 // wxListBox #define wxUSE_LISTCTRL 1 // wxListCtrl -#define wxUSE_PROPSHEET 1 // wxProperty #define wxUSE_RADIOBOX 1 // wxRadioBox #define wxUSE_RADIOBTN 1 // wxRadioButton #define wxUSE_SCROLLBAR 1 // wxScrollBar @@ -532,6 +560,9 @@ #define wxUSE_GRID 1 #define wxUSE_NEW_GRID 1 +// wxProperty[Value/Form/List] classes, used by Dialog Editor +#define wxUSE_PROPSHEET 0 + // ---------------------------------------------------------------------------- // Miscellaneous GUI stuff // ---------------------------------------------------------------------------- @@ -617,6 +648,13 @@ // Recommended setting: 1 (used in the library itself) #define wxUSE_CHOICEDLG 1 +// Use colour picker dialog +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_COLOURDLG 1 + // wxDirDlg class for getting a directory name from user #define wxUSE_DIRDLG 1 @@ -629,6 +667,13 @@ // Recommended setting: 1 (used in many places in the library itself) #define wxUSE_FILEDLG 1 +// Use find/replace dialogs. +// +// Default is 1 +// +// Recommended setting: 1 (but may be safely set to 0) +#define wxUSE_FINDREPLDLG 1 + // Use font picker dialog // // Default is 1 @@ -655,9 +700,6 @@ // number entry dialog #define wxUSE_NUMBERDLG 1 -// color chooser dialog -#define wxUSE_COLOURDLG 1 - // splash screen class #define wxUSE_SPLASH 1 @@ -770,8 +812,11 @@ #define wxUSE_SPLINES 1 // 0 for no splines -#define wxUSE_WX_RESOURCES 1 - // Use .wxr resource mechanism (requires PrologIO library) +// use wxExpr (a.k.a. PrologIO) +#define wxUSE_PROLOGIO 0 + +// Use .wxr resource mechanism (requires PrologIO library) +#define wxUSE_WX_RESOURCES 0 #define wxUSE_MOUSEWHEEL 1 // Include mouse wheel support diff --git a/include/wx/mac/textctrl.h b/include/wx/mac/textctrl.h index 1d9b218333..5c2c753c43 100644 --- a/include/wx/mac/textctrl.h +++ b/include/wx/mac/textctrl.h @@ -152,7 +152,8 @@ public: void OnUpdateRedo(wxUpdateUIEvent& event); virtual bool MacCanFocus() const { return true ; } - + virtual bool MacSetupCursor( const wxPoint& pt ) ; + virtual void MacSuperShown( bool show ) ; virtual bool Show(bool show = TRUE) ; diff --git a/include/wx/mac/treectrl.h b/include/wx/mac/treectrl.h index d4b3ad029e..dad81e067f 100644 --- a/include/wx/mac/treectrl.h +++ b/include/wx/mac/treectrl.h @@ -162,7 +162,7 @@ public: long GetNextItem(long item, int code) const; bool ItemHasChildren(long item) const; long GetChild(long item) const; - long GetParent(long item) const; + long GetItemParent(long item) const; long GetFirstVisibleItem() const; long GetNextVisibleItem(long item) const; long GetSelection() const; diff --git a/include/wx/mac/uma.h b/include/wx/mac/uma.h index c9172b6c8a..386e224451 100644 --- a/include/wx/mac/uma.h +++ b/include/wx/mac/uma.h @@ -16,6 +16,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls) ; void UMACleanupToolbox() ; +long UMAGetSystemVersion() ; bool UMAHasAppearance() ; long UMAGetAppearanceVersion() ; bool UMAHasWindowManager() ; @@ -213,6 +214,10 @@ OSStatus UMAGetHelpMenu( OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) ; +// clipboard + +OSStatus UMAPutScrap( Size size , OSType type , void *data ) ; + // accessor helpers #if !TARGET_CARBON diff --git a/include/wx/mac/wave.h b/include/wx/mac/wave.h index c203db629f..6fdbf6519b 100644 --- a/include/wx/mac/wave.h +++ b/include/wx/mac/wave.h @@ -17,6 +17,8 @@ #pragma interface "wave.h" #endif +#if wxUSE_WAVE + #include "wx/object.h" class WXDLLEXPORT wxWave : public wxObject @@ -38,12 +40,13 @@ protected: private: void* m_sndChan; - + wxString m_sndname; void* m_hSnd; int m_waveLength; bool m_isResource; }; +#endif #endif // _WX_WAVE_H_ diff --git a/include/wx/mac/window.h b/include/wx/mac/window.h index 6018e46219..cef26853e1 100644 --- a/include/wx/mac/window.h +++ b/include/wx/mac/window.h @@ -242,7 +242,7 @@ public: virtual void Update() ; // for compatibility void MacUpdateImmediately() { Update() ; } - bool MacSetupCursor( const wxPoint& pt ) ; + virtual bool MacSetupCursor( const wxPoint& pt ) ; // virtual bool MacSetPortDrawingParams( const Point & localOrigin, const Rect & clipRect, WindowRef window , wxWindowMac* rootwin ) ; // virtual void MacGetPortParams(Point* localOrigin, Rect* clipRect, WindowRef *window , wxWindowMac** rootwin ) ; diff --git a/include/wx/motif/statbox.h b/include/wx/motif/statbox.h index a2a31bdcb7..38a5e89ebd 100644 --- a/include/wx/motif/statbox.h +++ b/include/wx/motif/statbox.h @@ -55,20 +55,11 @@ public: // Implementation virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetTopWidget() const { return m_formWidget; } - WXWidget GetLabelWidget() const { return m_labelWidget; } protected: // Motif-specific - WXWidget m_formWidget; WXWidget m_labelWidget; - - virtual void DoSetSize(int x, int y, - int width, int height, - int sizeFlags = wxSIZE_AUTO); - + private: DECLARE_EVENT_TABLE() }; diff --git a/include/wx/msw/brush.h b/include/wx/msw/brush.h index ccc307e118..842e259d27 100644 --- a/include/wx/msw/brush.h +++ b/include/wx/msw/brush.h @@ -50,8 +50,8 @@ public: bool Ok() const { return m_refData != NULL; } - // create (if necessary) and return the HBRUSH for this brush - WXHBRUSH GetResourceHandle() const; + // return the HBRUSH for this brush + virtual WXHANDLE GetResourceHandle() const; protected: virtual wxObjectRefData *CreateRefData() const; diff --git a/include/wx/msw/checkbox.h b/include/wx/msw/checkbox.h index 97cf1d32b5..57603fc9a0 100644 --- a/include/wx/msw/checkbox.h +++ b/include/wx/msw/checkbox.h @@ -17,31 +17,37 @@ #endif // Checkbox item (single checkbox) -class WXDLLEXPORT wxBitmap; class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase { public: wxCheckBox() { } - wxCheckBox(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) + wxCheckBox(wxWindow *parent, + wxWindowID id, + const wxString& label, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxCheckBoxNameStr) { Create(parent, id, label, pos, size, style, validator, name); } - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); + bool Create(wxWindow *parent, + wxWindowID id, + const wxString& label, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxCheckBoxNameStr); virtual void SetValue(bool value); - virtual bool GetValue() const ; + virtual bool GetValue() const; + + virtual void SetLabel(const wxString& label); virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual void SetLabel(const wxString& label); virtual void Command(wxCommandEvent& event); protected: @@ -51,32 +57,5 @@ private: DECLARE_DYNAMIC_CLASS(wxCheckBox) }; -class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox -{ -DECLARE_DYNAMIC_CLASS(wxBitmapCheckBox) - -public: - int checkWidth ; - int checkHeight ; - - wxBitmapCheckBox() { checkWidth = -1; checkHeight = -1; } - wxBitmapCheckBox(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap *bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - - virtual void SetLabel(const wxBitmap& bitmap); -}; - #endif // _WX_CHECKBOX_H_ diff --git a/include/wx/msw/checklst.h b/include/wx/msw/checklst.h index 7b7db054e4..ffc70a0a51 100644 --- a/include/wx/msw/checklst.h +++ b/include/wx/msw/checklst.h @@ -64,7 +64,7 @@ public: protected: // we create our items ourselves and they have non-standard size, // so we need to override these functions - virtual wxOwnerDrawn *CreateItem(size_t n); + virtual wxOwnerDrawn *CreateLboxItem(size_t n); virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *item); // this can't be called DoHitTest() because wxWindow already has this method diff --git a/include/wx/msw/dialog.h b/include/wx/msw/dialog.h index 3a779079b4..2c3b5b2088 100644 --- a/include/wx/msw/dialog.h +++ b/include/wx/msw/dialog.h @@ -20,6 +20,8 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxDialogNameStr; +class WXDLLEXPORT wxWindowDisabler; + // Dialog boxes class WXDLLEXPORT wxDialog : public wxDialogBase { @@ -115,7 +117,7 @@ private: // while we are showing a modal dialog we disable the other windows using // this object - class wxWindowDisabler *m_windowDisabler; + wxWindowDisabler *m_windowDisabler; DECLARE_DYNAMIC_CLASS(wxDialog) DECLARE_EVENT_TABLE() diff --git a/include/wx/msw/filedlg.h b/include/wx/msw/filedlg.h index e146c83928..f4637fcc78 100644 --- a/include/wx/msw/filedlg.h +++ b/include/wx/msw/filedlg.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h +// Name: wx/msw/filedlg.h // Purpose: wxFileDialog class // Author: Julian Smart // Modified by: @@ -28,12 +28,16 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorDefaultWildcardStr; class WXDLLEXPORT wxFileDialog: public wxDialog { public: - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = wxEmptyString, const wxString& defaultFile = wxEmptyString, const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); + wxFileDialog(wxWindow *parent, + const wxString& message = wxFileSelectorPromptStr, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = 0, + const wxPoint& pos = wxDefaultPosition); void SetMessage(const wxString& message) { m_message = message; } - void SetPath(const wxString& path) { m_path = path; } + void SetPath(const wxString& path); void SetDirectory(const wxString& dir) { m_dir = dir; } void SetFilename(const wxString& name) { m_fileName = name; } void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } @@ -50,7 +54,7 @@ public: long GetStyle() const { return m_dialogStyle; } int GetFilterIndex() const { return m_filterIndex ; } - int ShowModal(); + virtual int ShowModal(); protected: wxString m_message; diff --git a/include/wx/msw/font.h b/include/wx/msw/font.h index 06c17b10b1..505e9970b9 100644 --- a/include/wx/msw/font.h +++ b/include/wx/msw/font.h @@ -90,11 +90,10 @@ public: virtual bool IsFree() const; virtual bool RealizeResource(); - virtual WXHANDLE GetResourceHandle(); + virtual WXHANDLE GetResourceHandle() const; virtual bool FreeResource(bool force = FALSE); - // for consistency with other wxMSW classes and to have a const - // GetResourceHandle()-like function we have a synonym for it + // for consistency with other wxMSW classes WXHFONT GetHFONT() const; /* diff --git a/include/wx/msw/gccpriv.h b/include/wx/msw/gccpriv.h index c0e84b250b..dd30782483 100644 --- a/include/wx/msw/gccpriv.h +++ b/include/wx/msw/gccpriv.h @@ -10,6 +10,10 @@ #define HAVE_W32API_H #endif #endif +#elif defined( __CYGWIN__ ) && !defined( HAVE_W32API_H ) + #if ( __GNUC__ > 2 ) + #define HAVE_W32API_H + #endif #endif // check for MinGW/Cygwin w32api version ( releases >= 0.5, only ) @@ -48,7 +52,8 @@ // Mingw runtime 1.0-20010604 has some missing _tXXXX functions, // so let's define them ourselves: -#if defined(__GNUWIN32__) && wxCHECK_W32API_VERSION( 1, 0 ) +#if defined(__GNUWIN32__) && wxCHECK_W32API_VERSION( 1, 0 ) \ + && !wxCHECK_W32API_VERSION( 1, 1 ) #ifndef _tsetlocale #if wxUSE_UNICODE #define _tsetlocale _wsetlocale diff --git a/include/wx/msw/gdiimage.h b/include/wx/msw/gdiimage.h index 0dca4c7931..3bf601dda4 100644 --- a/include/wx/msw/gdiimage.h +++ b/include/wx/msw/gdiimage.h @@ -180,7 +180,7 @@ public: // forward some of base class virtuals to wxGDIImageRefData bool FreeResource(bool force = FALSE); - virtual WXHANDLE GetResourceHandle(); + virtual WXHANDLE GetResourceHandle() const; protected: // create the data for the derived class here diff --git a/include/wx/msw/gdiobj.h b/include/wx/msw/gdiobj.h index e7285541d1..7ea71fbec2 100644 --- a/include/wx/msw/gdiobj.h +++ b/include/wx/msw/gdiobj.h @@ -49,7 +49,7 @@ public: bool IsNull() const { return (m_refData == 0); } // Returns handle. - virtual WXHANDLE GetResourceHandle() { return 0; } + virtual WXHANDLE GetResourceHandle() const { return 0; } virtual bool GetVisible() { return m_visible; } virtual void SetVisible(bool v) { m_visible = v; } diff --git a/include/wx/msw/glcanvas.h b/include/wx/msw/glcanvas.h index 31301489e0..b8dab7af65 100644 --- a/include/wx/msw/glcanvas.h +++ b/include/wx/msw/glcanvas.h @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -16,10 +16,11 @@ #ifndef _WX_GLCANVAS_H_ #define _WX_GLCANVAS_H_ -#include -#include +#include "wx/palette.h" +#include "wx/scrolwin.h" #include +#include "wx/msw/winundef.h" #include @@ -57,15 +58,15 @@ class WXDLLEXPORT wxGLContext: public wxObject { public: wxGLContext(bool isRGB, wxGLCanvas *win, const wxPalette& palette = wxNullPalette); - wxGLContext( - bool isRGB, wxGLCanvas *win, + wxGLContext( + bool isRGB, wxGLCanvas *win, const wxPalette& WXUNUSED(palette), const wxGLContext *other /* for sharing display lists */ ); ~wxGLContext(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); @@ -85,15 +86,16 @@ class WXDLLEXPORT wxGLCanvas: public wxWindow public: wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette); + const wxString& name = wxGLCanvasName, int *attribList = 0, const wxPalette& palette = wxNullPalette); wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "GLCanvas", + const wxSize& size = wxDefaultSize, long style = 0, const wxString& + name = wxGLCanvasName, int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared = (wxGLCanvas *)NULL, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette ); + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, + const wxString& name = wxGLCanvasName, int *attribList = 0, const wxPalette& palette = wxNullPalette ); ~wxGLCanvas(); @@ -102,7 +104,7 @@ class WXDLLEXPORT wxGLCanvas: public wxWindow const wxPoint& pos, const wxSize& size, long style, const wxString& name); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); void OnSize(wxSizeEvent& event); diff --git a/include/wx/msw/listbox.h b/include/wx/msw/listbox.h index 0021cc304f..0c5161b91f 100644 --- a/include/wx/msw/listbox.h +++ b/include/wx/msw/listbox.h @@ -95,7 +95,7 @@ public: bool MSWOnDraw(WXDRAWITEMSTRUCT *item); // plug-in for derived classes - virtual wxOwnerDrawn *CreateItem(size_t n); + virtual wxOwnerDrawn *CreateLboxItem(size_t n); // allows to get the item and use SetXXX functions to set it's appearance wxOwnerDrawn *GetItem(size_t n) const { return m_aItems[n]; } diff --git a/include/wx/msw/missing.h b/include/wx/msw/missing.h index 7243690420..5b52cd8bd2 100644 --- a/include/wx/msw/missing.h +++ b/include/wx/msw/missing.h @@ -159,6 +159,21 @@ typedef struct tagNMLVDISPINFOW { #endif #endif +#if ((defined(__WATCOMC__) && __WATCOMC__ >= 1200) || defined(__GNUWIN32__) || defined (__BORLANDC__)) && !defined(HDN_GETDISPINFOW) +#define HDN_GETDISPINFOW (HDN_FIRST-29) +#if !wxCHECK_W32API_VERSION(2, 2) +typedef struct { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} NMHDDISPINFOW, *LPNMHDDISPINFOW; +#endif +#endif + // ---------------------------------------------------------------------------- // MS HTML Help diff --git a/include/wx/msw/notebook.h b/include/wx/msw/notebook.h index b26643862e..4fd14d30da 100644 --- a/include/wx/msw/notebook.h +++ b/include/wx/msw/notebook.h @@ -40,14 +40,14 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "notebook"); + const wxString& name = wxNOTEBOOK_NAME); // Create() function bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "notebook"); + const wxString& name = wxNOTEBOOK_NAME); // accessors // --------- @@ -133,10 +133,8 @@ protected: // remove one page from the notebook, without deleting virtual wxNotebookPage *DoRemovePage(int nPage); - // helper functions - void ChangePage(int nOldSel, int nSel); // change pages - - int m_nSelection; // the current selection (-1 if none) + // the current selection (-1 if none) + int m_nSelection; DECLARE_DYNAMIC_CLASS(wxNotebook) DECLARE_EVENT_TABLE() diff --git a/include/wx/msw/ole/dropsrc.h b/include/wx/msw/ole/dropsrc.h index 7e719f843e..24a3153738 100644 --- a/include/wx/msw/ole/dropsrc.h +++ b/include/wx/msw/ole/dropsrc.h @@ -36,7 +36,7 @@ class WXDLLEXPORT wxWindow; // the cursor 'name' from the resources under MSW, but will expand to // something else under GTK. If you don't use it, you will have to use #ifdef // in the application code. -#define wxDROP_ICON(name) wxCursor(#name) +#define wxDROP_ICON(name) wxCursor(_T(#name)) // ---------------------------------------------------------------------------- // wxDropSource is used to start the drag-&-drop operation on associated diff --git a/include/wx/msw/pen.h b/include/wx/msw/pen.h index 3c56bdaa70..a653d39db0 100644 --- a/include/wx/msw/pen.h +++ b/include/wx/msw/pen.h @@ -89,7 +89,7 @@ public: // Internal bool RealizeResource(); bool FreeResource(bool force = FALSE); - WXHANDLE GetResourceHandle() ; + WXHANDLE GetResourceHandle() const; bool IsFree() const; void Unshare(); }; diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 0406fe9bc7..3c48d8c7b1 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -344,7 +344,7 @@ class MemoryHDC { public: MemoryHDC() { m_hdc = ::CreateCompatibleDC(NULL); } - ~MemoryHDC() { ::DeleteObject(m_hdc); } + ~MemoryHDC() { ::DeleteDC(m_hdc); } operator HDC() const { return m_hdc; } diff --git a/include/wx/msw/region.h b/include/wx/msw/region.h index 72f8dfcd02..bb1e56cea6 100644 --- a/include/wx/msw/region.h +++ b/include/wx/msw/region.h @@ -5,7 +5,7 @@ // Modified by: // Created: 01/02/97 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart +// Copyright: (c) 1997-2002 wxWindows team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -13,10 +13,9 @@ #define _WX_REGION_H_ #ifdef __GNUG__ -#pragma interface "region.h" + #pragma interface "region.h" #endif -#include "wx/list.h" #include "wx/gdiobj.h" #include "wx/gdicmn.h" @@ -93,11 +92,11 @@ public: // Outer bounds of region void GetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const; - wxRect GetBox(void) const ; + wxRect GetBox() const ; // Is region empty? - bool Empty(void) const; - inline bool IsEmpty(void) const { return Empty(); } + bool Empty() const; + inline bool IsEmpty() const { return Empty(); } // Tests // Does the region contain the point (x,y)? @@ -129,31 +128,39 @@ protected: class WXDLLEXPORT wxRegionIterator : public wxObject { public: - wxRegionIterator(void); + wxRegionIterator() { Init(); } wxRegionIterator(const wxRegion& region); - ~wxRegionIterator(void); + wxRegionIterator(const wxRegionIterator& ri) { Init(); *this = ri; } - void Reset(void) { m_current = 0; } + wxRegionIterator& operator=(const wxRegionIterator& ri); + + virtual ~wxRegionIterator(); + + void Reset() { m_current = 0; } void Reset(const wxRegion& region); + bool HaveRects() const { return (m_current < m_numRects); } + #ifndef __SALFORDC__ - operator bool (void) const { return (m_current < m_numRects); } + operator bool () const { return HaveRects(); } #endif - bool HaveRects(void) const { return (m_current < m_numRects); } + wxRegionIterator& operator++(); + wxRegionIterator operator++(int); - void operator ++ (void); - void operator ++ (int); + wxCoord GetX() const; + wxCoord GetY() const; + wxCoord GetW() const; + wxCoord GetWidth() const { return GetW(); } + wxCoord GetH() const; + wxCoord GetHeight() const { return GetH(); } - wxCoord GetX(void) const; - wxCoord GetY(void) const; - wxCoord GetW(void) const; - wxCoord GetWidth(void) const { return GetW(); } - wxCoord GetH(void) const; - wxCoord GetHeight(void) const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } + wxRect GetRect() const { return wxRect(GetX(), GetY(), GetW(), GetH()); } private: + // common part of all ctors + void Init(); + long m_current; long m_numRects; wxRegion m_region; diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h index 10ad566b6d..c7078b5231 100644 --- a/include/wx/msw/setup0.h +++ b/include/wx/msw/setup0.h @@ -44,12 +44,12 @@ // Recommended setting: 0 (please update your code instead!) #define WXWIN_COMPATIBILITY_2 0 -// This setting determines the compatibility with 2.0 API: set it to 1 to -// enable it +// This setting determines the compatibility with 2.2 API: set it to 0 to +// flag all cases of using deprecated functions. // -// Default is 1. +// Default is 1 but please try building your code with 0. // -// Recommended setting: 0 (please update your code instead!) +// Recommended setting: 0 (please update your code) #define WXWIN_COMPATIBILITY_2_2 1 // in wxMSW version 2.1.11 and earlier, wxIcon always derives from wxBitmap, @@ -161,29 +161,31 @@ // defined as wchar_t, wxString will use Unicode internally. If you set this // to 1, you must use wxT() macro for all literal strings in the program. // -// Unicode is currently only fully supported under Windows NT/2000/XP (Windows 9x -// doesn't support it and the programs compiled in Unicode mode will not run -// under 9x). +// Unicode is currently only fully supported under Windows NT/2000/XP +// (Windows 9x doesn't support it and the programs compiled in Unicode mode +// will not run under 9x -- but see wxUSE_UNICODE_MSLU bellow). // // Default is 0 // // Recommended setting: 0 (unless you only plan to use Windows NT/2000/XP) -#define wxUSE_UNICODE 0 +#ifndef wxUSE_UNICODE + #define wxUSE_UNICODE 0 +#endif // Set wxUSE_UNICODE_MSLU to 1 if you want to compile wxWindows in Unicode mode -// and be able to run compiled apps under Windows 9x as well as NT/2000/XP. This -// setting enables use of unicows.dll from MSLU (MS Layer for Unicode, see -// http://www.microsoft.com/globaldev/Articles/mslu_announce.asp). Note that you -// will have to modify the makefiles to include unicows.lib import library as the first -// library (if you use MSVC, you can run the makefile with "nmake MSLU=1 UNICODE=1" -// command). +// and be able to run compiled apps under Windows 9x as well as NT/2000/XP. +// This setting enables use of unicows.dll from MSLU (MS Layer for Unicode, see +// http://www.microsoft.com/globaldev/Articles/mslu_announce.asp). Note that +// you will have to modify the makefiles to include unicows.lib import library +// as the first library (if you use MSVC, you can run the makefile with "nmake +// MSLU=1 UNICODE=1" command). // // If your compiler doesn't have unicows.lib, you can get a version of it at // http://libunicows.sourceforge.net // // Default is 0 // -// Recommended setting: 0 +// Recommended setting: 0 (1 if you want to deploy Unicode apps on 9x systems) #define wxUSE_UNICODE_MSLU 0 // Setting wxUSE_WCHAR_T to 1 gives you some degree of Unicode support without @@ -209,13 +211,6 @@ // Recommended setting: 1 (always) #define wxUSE_LOG 1 -// Support for command line parsing using wxCmdLineParser class. -// -// Default is 1 -// -// Recommended setting: 1 (can be set to 0 if you don't use the cmd line) -#define wxUSE_CMDLINE_PARSER 1 - // Recommended setting: 1 #define wxUSE_LOGWINDOW 1 @@ -225,6 +220,13 @@ // Recommended setting: 1 #define wxUSE_LOG_DIALOG 1 +// Support for command line parsing using wxCmdLineParser class. +// +// Default is 1 +// +// Recommended setting: 1 (can be set to 0 if you don't use the cmd line) +#define wxUSE_CMDLINE_PARSER 1 + // Support for multithreaded applications: if 1, compile in thread classes // (thread.h) and make the library a bit more thread safe. Although thread // support is quite stable by now, you may still consider recompiling the @@ -768,7 +770,15 @@ // smaller library. #define wxUSE_HTML 1 -// OpenGL canvas +// Setting wxUSE_GLCANVAS to 1 enables OpenGL support. You need to have OpenGL +// headers and libraries to be able to compile the library with wxUSE_GLCANVAS +// set to 1. Note that for some compilers (notably Microsoft Visual C++) you +// will need to manually add opengl32.lib and glu32.lib to the list of +// libraries linked with your program if you use OpenGL. +// +// Default is 0. +// +// Recommended setting: 1 if you intend to use OpenGL, 0 otherwise #define wxUSE_GLCANVAS 0 // wxTreeLayout class @@ -846,8 +856,12 @@ #define wxUSE_RESOURCE_LOADING_IN_MSW 1 // Use dynamic icon/cursor loading/saving code // under MSW. -#define wxUSE_WX_RESOURCES 1 - // Use .wxr resource mechanism (requires PrologIO library) + +// use wxExpr (a.k.a. PrologIO) +#define wxUSE_PROLOGIO 0 + +// Use .wxr resource mechanism (requires PrologIO library) +#define wxUSE_WX_RESOURCES 0 #define wxUSE_MOUSEWHEEL 1 // Include mouse wheel support @@ -1050,7 +1064,7 @@ // ---------------------------------------------------------------------------- #ifndef wxUSE_NORLANDER_HEADERS -#if (defined(__MINGW32__) || defined(__CYGWIN__)) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))) +#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1200)) || ((defined(__MINGW32__) || defined(__CYGWIN__)) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95)))) # define wxUSE_NORLANDER_HEADERS 1 #else # define wxUSE_NORLANDER_HEADERS 0 diff --git a/include/wx/msw/stattext.h b/include/wx/msw/stattext.h index 29561640a9..20c49b73a4 100644 --- a/include/wx/msw/stattext.h +++ b/include/wx/msw/stattext.h @@ -48,7 +48,6 @@ protected: virtual void DoSetSize(int x, int y, int w, int h, int sizeFlags = wxSIZE_AUTO); virtual wxSize DoGetBestSize() const; - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); DECLARE_DYNAMIC_CLASS(wxStaticText) }; diff --git a/include/wx/msw/tabctrl.h b/include/wx/msw/tabctrl.h index d1985bfddd..014ea3167b 100644 --- a/include/wx/msw/tabctrl.h +++ b/include/wx/msw/tabctrl.h @@ -40,7 +40,7 @@ class WXDLLEXPORT wxTabCtrl: public wxControl wxTabCtrl(); inline wxTabCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl") + long style = 0, const wxString& name = wxT("tabCtrl")) { Create(parent, id, pos, size, style, name); } @@ -99,7 +99,7 @@ class WXDLLEXPORT wxTabCtrl: public wxControl // Operations bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl"); + long style = 0, const wxString& name = wxT("tabCtrl")); // Delete all items bool DeleteAllItems(); @@ -126,12 +126,30 @@ protected: DECLARE_EVENT_TABLE() }; -class WXDLLEXPORT wxTabEvent: public wxCommandEvent +class WXDLLEXPORT wxTabEvent : public wxNotifyEvent { - DECLARE_DYNAMIC_CLASS(wxTabEvent) +public: + wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0, + int nSel = -1, int nOldSel = -1) + : wxNotifyEvent(commandType, id) + { + m_nSel = nSel; + m_nOldSel = nOldSel; + } - public: - wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0); + // accessors + // the currently selected page (-1 if none) + int GetSelection() const { return m_nSel; } + void SetSelection(int nSel) { m_nSel = nSel; } + // the page that was selected before the change (-1 if none) + int GetOldSelection() const { return m_nOldSel; } + void SetOldSelection(int nOldSel) { m_nOldSel = nOldSel; } + +private: + int m_nSel, // currently selected page + m_nOldSel; // previously selected page + + DECLARE_DYNAMIC_CLASS(wxTabEvent) }; typedef void (wxEvtHandler::*wxTabEventFunction)(wxTabEvent&); diff --git a/include/wx/msw/taskbar.h b/include/wx/msw/taskbar.h index b93a400944..2da54b6894 100644 --- a/include/wx/msw/taskbar.h +++ b/include/wx/msw/taskbar.h @@ -33,7 +33,7 @@ public: inline bool IsIconInstalled() const { return m_iconAdded; } // Operations - bool SetIcon(const wxIcon& icon, const wxString& tooltip = ""); + bool SetIcon(const wxIcon& icon, const wxString& tooltip = wxEmptyString); bool RemoveIcon(void); bool PopupMenu(wxMenu *menu); //, int x, int y); diff --git a/include/wx/msw/textctrl.h b/include/wx/msw/textctrl.h index 283e86b826..1ac33d3ad2 100644 --- a/include/wx/msw/textctrl.h +++ b/include/wx/msw/textctrl.h @@ -35,6 +35,7 @@ public: Create(parent, id, value, pos, size, style, validator, name); } + ~wxTextCtrl(); bool Create(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, @@ -167,12 +168,20 @@ public: void OnPaste(wxCommandEvent& event); void OnUndo(wxCommandEvent& event); void OnRedo(wxCommandEvent& event); + void OnDelete(wxCommandEvent& event); + void OnSelectAll(wxCommandEvent& event); void OnUpdateCut(wxUpdateUIEvent& event); void OnUpdateCopy(wxUpdateUIEvent& event); void OnUpdatePaste(wxUpdateUIEvent& event); void OnUpdateUndo(wxUpdateUIEvent& event); void OnUpdateRedo(wxUpdateUIEvent& event); + void OnUpdateDelete(wxUpdateUIEvent& event); + void OnUpdateSelectAll(wxUpdateUIEvent& event); + + // Show a context menu for Rich Edit controls (the standard + // EDIT control has one already) + void OnRightClick(wxMouseEvent& event); protected: // common part of all ctors @@ -203,6 +212,9 @@ protected: // set the selection possibly without scrolling the caret into view void DoSetSelection(long from, long to, bool scrollCaret = TRUE); + // return true if there is a non empty selection in the control + bool HasSelection() const; + // get the length of the line containing the character at the given // position long GetLengthOfLineContainingPos(long pos) const; @@ -221,15 +233,17 @@ protected: // 0, it also gives the version of the RICHEDIT control being used (1, 2 or // 3 so far) int m_verRichEdit; +#endif // wxUSE_RICHEDIT // if TRUE, SendUpdateEvent() will eat the next event (see comments in the // code as to why this is needed) bool m_suppressNextUpdate; -#endif // wxUSE_RICHEDIT private: DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxTextCtrl) + + wxMenu* m_privateContextMenu; }; #endif diff --git a/include/wx/msw/toplevel.h b/include/wx/msw/toplevel.h index d09a48ce0a..202983d285 100644 --- a/include/wx/msw/toplevel.h +++ b/include/wx/msw/toplevel.h @@ -119,10 +119,6 @@ protected: // the last focused child: we restore focus to it on activation wxWindow *m_winLastFocused; - // the hidden parent window for the frames which shouldn't appear in the - // taskbar - static wxWindow *ms_hiddenParent; - DECLARE_EVENT_TABLE() }; diff --git a/include/wx/msw/treectrl.h b/include/wx/msw/treectrl.h index dd1deab918..8191e7d94d 100644 --- a/include/wx/msw/treectrl.h +++ b/include/wx/msw/treectrl.h @@ -76,7 +76,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl") + const wxString& name = wxTreeCtrlNameStr) { Create(parent, id, pos, size, style, validator, name); } @@ -88,7 +88,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl"); + const wxString& name = wxTreeCtrlNameStr); // accessors // --------- @@ -141,6 +141,15 @@ public: // get the data associated with the item wxTreeItemData *GetItemData(const wxTreeItemId& item) const; + // get the item's text colour + wxColour GetItemTextColour(const wxTreeItemId& item) const; + + // get the item's background colour + wxColour GetItemBackgroundColour(const wxTreeItemId& item) const; + + // get the item's font + wxFont GetItemFont(const wxTreeItemId& item) const; + // modifiers // --------- @@ -213,7 +222,16 @@ public: size_t GetSelections(wxArrayTreeItemIds& selections) const; // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; + wxTreeItemId GetItemParent(const wxTreeItemId& item) const; + +#if WXWIN_COMPATIBILITY_2_2 + // deprecated: Use GetItemParent instead. + wxTreeItemId GetParent(const wxTreeItemId& item) const + { return GetItemParent( item ); } + + // Expose the base class method hidden by the one above. + wxWindow *GetParent() const { return wxControl::GetParent(); } +#endif // WXWIN_COMPATIBILITY_2_2 // for this enumeration function you must pass in a "cookie" parameter // which is opaque for the application but is necessary for the library diff --git a/include/wx/msw/winundef.h b/include/wx/msw/winundef.h index af1cc51108..d1d9610808 100644 --- a/include/wx/msw/winundef.h +++ b/include/wx/msw/winundef.h @@ -58,6 +58,21 @@ } #endif +// FindText + +#ifdef FindText + #undef FindText + + inline HWND APIENTRY FindText(LPFINDREPLACE lpfindreplace) + { + #ifdef UNICODE + return FindTextW(lpfindreplace); + #else + return FindTextA(lpfindreplace); + #endif // !UNICODE + } +#endif + // GetCharWidth #ifdef GetCharWidth diff --git a/include/wx/msw/wx.rc b/include/wx/msw/wx.rc index b1dc54050d..da439acd9b 100644 --- a/include/wx/msw/wx.rc +++ b/include/wx/msw/wx.rc @@ -98,12 +98,7 @@ wxICON_SMALL_REMOVEABLE ICON "wx/msw/removble.ico" // Bitmaps // -#ifdef __SALFORDC__ -wxDISABLE_BUTTON_BITMAP BITMAP WXINCDIR"wx/msw/disable.bmp" -#else wxDISABLE_BUTTON_BITMAP BITMAP "wx/msw/disable.bmp" -#endif - // For wxContextHelpButton csquery BITMAP "wx/msw/csquery.bmp" diff --git a/include/wx/object.h b/include/wx/object.h index 4fcb3c178c..be4a7bbc3f 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -501,7 +501,7 @@ protected: class WXDLLEXPORT wxObjectRefData { - friend class wxObject; + friend class WXDLLEXPORT wxObject; public: wxObjectRefData() : m_count(1) { } diff --git a/include/wx/os2/bmpbuttn.h b/include/wx/os2/bmpbuttn.h index 48c13f2b31..d6ae3d84f3 100644 --- a/include/wx/os2/bmpbuttn.h +++ b/include/wx/os2/bmpbuttn.h @@ -32,9 +32,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxBU_AUTODRAW -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxButtonNameStr ) { @@ -44,9 +42,7 @@ public: ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -57,9 +53,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxBU_AUTODRAW -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxButtonNameStr ); diff --git a/include/wx/os2/button.h b/include/wx/os2/button.h index 81d97f47f7..ba408a4214 100644 --- a/include/wx/os2/button.h +++ b/include/wx/os2/button.h @@ -25,9 +25,7 @@ class WXDLLEXPORT wxButton: public wxButtonBase ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxButtonNameStr ) { @@ -37,9 +35,7 @@ class WXDLLEXPORT wxButton: public wxButtonBase ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -50,9 +46,7 @@ class WXDLLEXPORT wxButton: public wxButtonBase ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxButtonNameStr ); diff --git a/include/wx/os2/checkbox.h b/include/wx/os2/checkbox.h index 12a43f701d..c2ea188dab 100644 --- a/include/wx/os2/checkbox.h +++ b/include/wx/os2/checkbox.h @@ -26,9 +26,7 @@ class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxCheckBoxNameStr ) { @@ -38,9 +36,7 @@ class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -51,9 +47,7 @@ class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxCheckBoxNameStr ); @@ -83,9 +77,7 @@ class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxCheckBoxNameStr ) { @@ -106,9 +98,7 @@ class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxCheckBoxNameStr ); diff --git a/include/wx/os2/checklst.h b/include/wx/os2/checklst.h index cbecae5fed..c1d6b71f8b 100644 --- a/include/wx/os2/checklst.h +++ b/include/wx/os2/checklst.h @@ -35,9 +35,7 @@ public: ,int nStrings = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxListBoxNameStr ); diff --git a/include/wx/os2/choice.h b/include/wx/os2/choice.h index 103a675808..098c711752 100644 --- a/include/wx/os2/choice.h +++ b/include/wx/os2/choice.h @@ -28,9 +28,7 @@ public: ,int n = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxChoiceNameStr ) { @@ -41,9 +39,7 @@ public: ,n ,asChoices ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -55,9 +51,7 @@ public: ,int n = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxChoiceNameStr ); diff --git a/include/wx/os2/combobox.h b/include/wx/os2/combobox.h index 2f2e957b1f..4e39936991 100644 --- a/include/wx/os2/combobox.h +++ b/include/wx/os2/combobox.h @@ -31,9 +31,7 @@ class WXDLLEXPORT wxComboBox : public wxChoice ,int n = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxComboBoxNameStr ) { @@ -45,9 +43,7 @@ class WXDLLEXPORT wxComboBox : public wxChoice ,n ,asChoices ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -60,9 +56,7 @@ class WXDLLEXPORT wxComboBox : public wxChoice ,int n = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxComboBoxNameStr ); diff --git a/include/wx/os2/control.h b/include/wx/os2/control.h index fbbb0410c6..1627d70c75 100644 --- a/include/wx/os2/control.h +++ b/include/wx/os2/control.h @@ -26,9 +26,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxControlNameStr ) { @@ -48,9 +46,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxControlNameStr ); diff --git a/include/wx/os2/gauge.h b/include/wx/os2/gauge.h index d7dd800512..1b308d2c43 100644 --- a/include/wx/os2/gauge.h +++ b/include/wx/os2/gauge.h @@ -25,9 +25,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxGA_HORIZONTAL -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxGaugeNameStr ) { @@ -37,9 +35,7 @@ public: ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -50,9 +46,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxGA_HORIZONTAL -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxGaugeNameStr ); diff --git a/include/wx/os2/listbox.h b/include/wx/os2/listbox.h index a198afb55b..34c8b4a9e4 100644 --- a/include/wx/os2/listbox.h +++ b/include/wx/os2/listbox.h @@ -44,9 +44,7 @@ public: ,int n = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxListBoxNameStr) { Create( pParent @@ -56,9 +54,7 @@ public: ,n ,asChoices ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -70,9 +66,7 @@ public: ,int n = 0 ,const wxString asChoices[] = NULL ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxListBoxNameStr ); diff --git a/include/wx/os2/notebook.h b/include/wx/os2/notebook.h index 68fc28013b..4adaa2c64f 100644 --- a/include/wx/os2/notebook.h +++ b/include/wx/os2/notebook.h @@ -189,9 +189,6 @@ protected: // // Helper functions // - void ChangePage( int nOldSel - ,int nSel - ); // change pages int m_nSelection; // The current selection (-1 if none) diff --git a/include/wx/os2/radiobox.h b/include/wx/os2/radiobox.h index 8b1e97a9c0..d6eb7cc229 100644 --- a/include/wx/os2/radiobox.h +++ b/include/wx/os2/radiobox.h @@ -29,9 +29,7 @@ public: ,const wxString asChoices[] = NULL ,int nMajorDim = 0 ,long lStyle = wxRA_HORIZONTAL -#if wxUSE_VALIDATORS ,const wxValidator& rVal = wxDefaultValidator -#endif ,const wxString& rsName = wxRadioBoxNameStr ) { @@ -44,9 +42,7 @@ public: ,asChoices ,nMajorDim ,lStyle -#if wxUSE_VALIDATORS ,rVal -#endif ,rsName ); } @@ -62,9 +58,7 @@ public: ,const wxString asChoices[] = NULL ,int nMajorDim = 0 ,long lStyle = wxRA_HORIZONTAL -#if wxUSE_VALIDATORS ,const wxValidator& rVal = wxDefaultValidator -#endif ,const wxString& rsName = wxRadioBoxNameStr ); diff --git a/include/wx/os2/radiobut.h b/include/wx/os2/radiobut.h index 753edfc5be..34777de036 100644 --- a/include/wx/os2/radiobut.h +++ b/include/wx/os2/radiobut.h @@ -24,9 +24,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxRadioButtonNameStr ) { @@ -38,9 +36,7 @@ public: ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -51,9 +47,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxRadioButtonNameStr ); diff --git a/include/wx/os2/scrolbar.h b/include/wx/os2/scrolbar.h index 9d0c867ae5..da484a4375 100644 --- a/include/wx/os2/scrolbar.h +++ b/include/wx/os2/scrolbar.h @@ -15,76 +15,79 @@ #include "wx/scrolbar.h" // Scrollbar item -class WXDLLEXPORT wxScrollBar: public wxScrollBarBase +class WXDLLEXPORT wxScrollBar : public wxScrollBarBase { - DECLARE_DYNAMIC_CLASS(wxScrollBar) - public: - inline wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; } - ~wxScrollBar(); + inline wxScrollBar() + { + m_nPageSize = 0; + m_nViewSize = 0; + m_nObjectSize = 0; + } + inline wxScrollBar( wxWindow* pParent + ,wxWindowID vId + ,const wxPoint& rPos = wxDefaultPosition + ,const wxSize& rSize = wxDefaultSize + ,long lStyle = wxSB_HORIZONTAL + ,const wxValidator& rValidator = wxDefaultValidator + ,const wxString& rsName = wxScrollBarNameStr + ) + { + Create( pParent + ,vId + ,rPos + ,rSize + ,lStyle + ,rValidator + ,rsName + ); + } + ~wxScrollBar(); - inline wxScrollBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, -#if wxUSE_VALIDATORS - const wxValidator& validator = wxDefaultValidator, -#endif - const wxString& name = wxScrollBarNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, -#if wxUSE_VALIDATORS - const wxValidator& validator = wxDefaultValidator, -#endif - const wxString& name = wxScrollBarNameStr); + bool Create( wxWindow* pParent + ,wxWindowID vId + ,const wxPoint& rPos = wxDefaultPosition + ,const wxSize& rSize = wxDefaultSize + ,long lStyle = wxSB_HORIZONTAL + ,const wxValidator& rValidator = wxDefaultValidator + ,const wxString& rsName = wxScrollBarNameStr + ); - int GetThumbPosition() const ; - inline int GetThumbSize() const { return m_pageSize; } - inline int GetPageSize() const { return m_viewSize; } - inline int GetRange() const { return m_objectSize; } + int GetThumbPosition(void) const ; + inline int GetThumbSize(void) const { return m_nPageSize; } + inline int GetPageSize(void) const { return m_nViewSize; } + inline int GetRange(void) const { return m_nObjectSize; } - virtual void SetThumbPosition(int viewStart); - virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE); + virtual void SetThumbPosition(int nViewStart); + virtual void SetScrollbar( int nPosition + ,int nThumbSize + ,int nRange + ,int nPageSize + ,bool bRefresh = TRUE + ); -#if WXWIN_COMPATIBILITY - // Backward compatibility - int GetValue() const { return GetThumbPosition(); } - void SetValue(int viewStart) { SetThumbPosition(viewStart); } - void GetValues(int *viewStart, int *viewLength, int *objectLength, - int *pageLength) const ; - int GetViewLength() const { return m_viewSize; } - int GetObjectLength() const { return m_objectSize; } - - void SetPageSize(int pageLength); - void SetObjectLength(int objectLength); - void SetViewLength(int viewLength); -#endif - - void Command(wxCommandEvent& event); - - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - virtual bool OS2OnScroll(int orientation, WXWORD wParam, - WXWORD pos, WXHWND control); - -#if WXWIN_COMPATIBILITY - // Backward compatibility: generate an old-style scroll command - void OnScroll(wxScrollEvent& event); -#endif // WXWIN_COMPATIBILITY + void Command(wxCommandEvent& rEvent); + virtual WXHBRUSH OnCtlColor( WXHDC hDC + ,WXHWND hWnd + ,WXUINT uCtlColor + ,WXUINT uMessage + ,WXWPARAM wParam + ,WXLPARAM lParam + ); + virtual bool OS2OnScroll( int nOrientation + ,WXWORD wParam + ,WXWORD wPos + ,WXHWND hControl + ); protected: - int m_pageSize; - int m_viewSize; - int m_objectSize; + int m_nPageSize; + int m_nViewSize; + int m_nObjectSize; -DECLARE_EVENT_TABLE() -}; +private: + DECLARE_DYNAMIC_CLASS(wxScrollBar) +}; // end of CLASS wxScrollBar #endif // _WX_SCROLBAR_H_ diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h index 700bab6e27..38bba247cc 100644 --- a/include/wx/os2/setup0.h +++ b/include/wx/os2/setup0.h @@ -398,5 +398,10 @@ #define wxUSE_PROTOCOL_FTP 1 #define wxUSE_PROTOCOL_FILE 1 +#define wxUSE_GENERIC_MDI_AS_NATIVE 1 + +// use wxExpr (a.k.a. PrologIO) +#define wxUSE_PROLOGIO 1 + #endif // _WX_SETUP_H_ diff --git a/include/wx/os2/slider.h b/include/wx/os2/slider.h index 006158d7b8..bc74fe3945 100644 --- a/include/wx/os2/slider.h +++ b/include/wx/os2/slider.h @@ -27,9 +27,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxSL_HORIZONTAL -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxSliderNameStr ) { @@ -41,9 +39,7 @@ public: ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName ); } @@ -57,9 +53,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = wxSL_HORIZONTAL -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxSliderNameStr ); diff --git a/include/wx/os2/textctrl.h b/include/wx/os2/textctrl.h index 8770ddbda2..b4408f36e9 100644 --- a/include/wx/os2/textctrl.h +++ b/include/wx/os2/textctrl.h @@ -22,14 +22,13 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxTextCtrlNameStr ) { Create(pParent, vId, rsValue, rPos, rSize, lStyle, rValidator, rsName); } + ~wxTextCtrl(); bool Create( wxWindow* pParent ,wxWindowID vId @@ -37,9 +36,7 @@ public: ,const wxPoint& rPos = wxDefaultPosition ,const wxSize& rSize = wxDefaultSize ,long lStyle = 0 -#if wxUSE_VALIDATORS ,const wxValidator& rValidator = wxDefaultValidator -#endif ,const wxString& rsName = wxTextCtrlNameStr ); @@ -154,12 +151,16 @@ public: void OnPaste(wxCommandEvent& rEvent); void OnUndo(wxCommandEvent& rEvent); void OnRedo(wxCommandEvent& rEvent); + void OnDelete(wxCommandEvent& rEvent); + void OnSelectAll(wxCommandEvent& rEvent); void OnUpdateCut(wxUpdateUIEvent& rEvent); void OnUpdateCopy(wxUpdateUIEvent& rEvent); void OnUpdatePaste(wxUpdateUIEvent& rEvent); void OnUpdateUndo(wxUpdateUIEvent& rEvent); void OnUpdateRedo(wxUpdateUIEvent& rEvent); + void OnUpdateDelete(wxUpdateUIEvent& rEvent); + void OnUpdateSelectAll(wxUpdateUIEvent& rEvent); inline bool IsMLE(void) {return m_bIsMLE;} inline void SetMLE(bool bIsMLE) {m_bIsMLE = bIsMLE;} diff --git a/include/wx/platform.h b/include/wx/platform.h index 60c5770ed0..fd9b20938f 100644 --- a/include/wx/platform.h +++ b/include/wx/platform.h @@ -14,6 +14,20 @@ #ifndef _WX_PLATFORM_H_ #define _WX_PLATFORM_H_ + +/* + Codewarrior doesn't define any Windows symbols until some headers are included +*/ +#if __MWERKS__ + #include + #if defined(WIN32) || defined(_WIN32) + #ifndef WINVER + #define WINVER 0x0400 + #endif + #endif +#endif + + /* first define Windows symbols if they're not defined on the command line: we can autodetect everything we need if _WIN32 is defined diff --git a/include/wx/print.h b/include/wx/print.h index 801dea98ae..31c9588da2 100644 --- a/include/wx/print.h +++ b/include/wx/print.h @@ -1,7 +1,7 @@ #ifndef _WX_PRINT_H_BASE_ #define _WX_PRINT_H_BASE_ -#if defined(__WXMSW__) +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) #include "wx/msw/printwin.h" #ifndef wxPrinter diff --git a/include/wx/printdlg.h b/include/wx/printdlg.h index 36c7cc1e58..1e72c149f7 100644 --- a/include/wx/printdlg.h +++ b/include/wx/printdlg.h @@ -1,7 +1,9 @@ #ifndef _WX_PRINTDLG_H_BASE_ #define _WX_PRINTDLG_H_BASE_ -#if defined(__WXMSW__) +#if defined(__WXUNIVERSAL__) +#include "wx/generic/prntdlgg.h" +#elif defined(__WXMSW__) #include "wx/msw/printdlg.h" #elif defined(__WXMOTIF__) #include "wx/generic/prntdlgg.h" @@ -19,7 +21,7 @@ #include "wx/generic/prntdlgg.h" #endif -#if !defined(__WXMSW__) && !defined(__WXMAC__) +#if defined(__WXUNIVERSAL__) || (!defined(__WXMSW__) && !defined(__WXMAC__)) #define wxPrintDialog wxGenericPrintDialog #define sm_classwxPrintDialog sm_classwxGenericPrintDialog diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index 688a957481..d8357cb11b 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -53,8 +53,6 @@ enum wxPrinterError class WXDLLEXPORT wxPrinterBase: public wxObject { - DECLARE_CLASS(wxPrinterBase) - public: wxPrinterBase(wxPrintDialogData *data = (wxPrintDialogData *) NULL); virtual ~wxPrinterBase(); @@ -85,6 +83,8 @@ public: static wxWindow* sm_abortWindow; static bool sm_abortIt; +private: + DECLARE_CLASS(wxPrinterBase) }; /* @@ -97,10 +97,8 @@ public: class WXDLLEXPORT wxPrintout: public wxObject { -DECLARE_ABSTRACT_CLASS(wxPrintout) - public: - wxPrintout(const wxString& title = "Printout"); + wxPrintout(const wxString& title = wxT("Printout")); virtual ~wxPrintout(); virtual bool OnBeginDocument(int startPage, int endPage); @@ -149,6 +147,9 @@ private: int m_PPIPrinterY; bool m_isPreview; + +private: + DECLARE_ABSTRACT_CLASS(wxPrintout) }; /* @@ -158,15 +159,13 @@ private: class WXDLLEXPORT wxPreviewCanvas: public wxScrolledWindow { - DECLARE_CLASS(wxPreviewCanvas) - public: wxPreviewCanvas(wxPrintPreviewBase *preview, wxWindow *parent, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "canvas"); + const wxString& name = wxT("canvas")); ~wxPreviewCanvas(); void OnPaint(wxPaintEvent& event); @@ -177,6 +176,7 @@ public: private: wxPrintPreviewBase* m_printPreview; + DECLARE_CLASS(wxPreviewCanvas) DECLARE_EVENT_TABLE() }; @@ -187,16 +187,14 @@ private: class WXDLLEXPORT wxPreviewFrame: public wxFrame { - DECLARE_CLASS(wxPreviewFrame) - public: wxPreviewFrame(wxPrintPreviewBase *preview, wxFrame *parent, - const wxString& title = "Print Preview", + const wxString& title = wxT("Print Preview"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = "frame"); + const wxString& name = wxT("frame")); ~wxPreviewFrame(); void OnCloseWindow(wxCloseEvent& event); @@ -209,6 +207,7 @@ protected: wxPrintPreviewBase* m_printPreview; private: + DECLARE_CLASS(wxPreviewFrame) DECLARE_EVENT_TABLE() }; @@ -251,7 +250,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "panel"); + const wxString& name = wxT("panel")); ~wxPreviewControlBar(); virtual void CreateButtons(); @@ -392,7 +391,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "dialog") + const wxString& name = wxT("dialog")) : wxDialog(parent, -1, title, pos, size, style, name) { } diff --git a/include/wx/prop.h b/include/wx/prop.h index 6ddf2f3b5f..efc9573399 100644 --- a/include/wx/prop.h +++ b/include/wx/prop.h @@ -43,44 +43,47 @@ class wxPropertyValidatorRegistry; // A storable sheet of values class WXDLLEXPORT wxPropertySheet: public wxObject { - DECLARE_DYNAMIC_CLASS(wxPropertySheet) - public: - wxPropertySheet(const wxString& name = ""); - ~wxPropertySheet(void); +public: + wxPropertySheet(const wxString& name = wxT("")); + ~wxPropertySheet(); - // Set the name of the sheet - inline virtual void SetName(const wxString& name) { m_name=name; } - inline virtual wxString GetName() const { return m_name; } - // Does this sheet contain a property with this name - virtual bool HasProperty(const wxString& name) const; + // Set the name of the sheet + inline virtual void SetName(const wxString& name) { m_name=name; } + inline virtual wxString GetName() const { return m_name; } + + // Does this sheet contain a property with this name + virtual bool HasProperty(const wxString& name) const; - // Set property name to value - virtual bool SetProperty(const wxString& name, const wxPropertyValue& value); + // Set property name to value + virtual bool SetProperty(const wxString& name, const wxPropertyValue& value); - // Remove property from sheet by name, deleting it - virtual void RemoveProperty(const wxString& name); + // Remove property from sheet by name, deleting it + virtual void RemoveProperty(const wxString& name); - // Get the name of the sheet - // Add a property - virtual void AddProperty(wxProperty *property); + // Get the name of the sheet + // Add a property + virtual void AddProperty(wxProperty *property); - // Get property by name - virtual wxProperty *GetProperty(const wxString& name) const; + // Get property by name + virtual wxProperty *GetProperty(const wxString& name) const; - // Clear all properties - virtual void Clear(void); + // Clear all properties + virtual void Clear(); - virtual void UpdateAllViews(wxPropertyView *thisView = NULL); - inline virtual wxList& GetProperties(void) const { return (wxList&) m_properties; } + virtual void UpdateAllViews(wxPropertyView *thisView = NULL); + inline virtual wxList& GetProperties() const { return (wxList&) m_properties; } - // Sets/clears the modified flag for each property value - virtual void SetAllModified(bool flag = TRUE); + // Sets/clears the modified flag for each property value + virtual void SetAllModified(bool flag = TRUE); - protected: - wxObject* m_viewedObject; - wxList m_properties; - wxPropertyView* m_propertyView; - wxString m_name; +protected: + wxObject* m_viewedObject; + wxList m_properties; + wxPropertyView* m_propertyView; + wxString m_name; + +private: + DECLARE_DYNAMIC_CLASS(wxPropertySheet) }; @@ -88,71 +91,69 @@ class WXDLLEXPORT wxPropertySheet: public wxObject // classes: wxPropertyListView, and wxPropertyFormView. class WXDLLEXPORT wxPropertyView: public wxEvtHandler { - DECLARE_DYNAMIC_CLASS(wxPropertyView) - public: - wxPropertyView(long flags = 0); - ~wxPropertyView(void); +public: + wxPropertyView(long flags = 0); + ~wxPropertyView(); - // Associates and shows the view - virtual void ShowView(wxPropertySheet *WXUNUSED(propertySheet), wxWindow *WXUNUSED(panel)) {} + // Associates and shows the view + virtual void ShowView(wxPropertySheet *WXUNUSED(propertySheet), wxWindow *WXUNUSED(panel)) {} - // Update this view of the viewed object, called e.g. by - // the object itself. - virtual bool OnUpdateView(void) {return FALSE;}; + // Update this view of the viewed object, called e.g. by + // the object itself. + virtual bool OnUpdateView() {return FALSE;}; - // Override this to do something as soon as the property changed, - // if the view and validators support it. - virtual void OnPropertyChanged(wxProperty *WXUNUSED(property)) {} + // Override this to do something as soon as the property changed, + // if the view and validators support it. + virtual void OnPropertyChanged(wxProperty *WXUNUSED(property)) {} - virtual void AddRegistry(wxPropertyValidatorRegistry *registry); - inline virtual wxList& GetRegistryList(void) const - { return (wxList&) m_validatorRegistryList; } + virtual void AddRegistry(wxPropertyValidatorRegistry *registry); + inline virtual wxList& GetRegistryList() const + { return (wxList&) m_validatorRegistryList; } - virtual wxPropertyValidator *FindPropertyValidator(wxProperty *property); - inline virtual void SetPropertySheet(wxPropertySheet *sheet) { m_propertySheet = sheet; } - inline virtual wxPropertySheet *GetPropertySheet(void) const { return m_propertySheet; } + virtual wxPropertyValidator *FindPropertyValidator(wxProperty *property); + inline virtual void SetPropertySheet(wxPropertySheet *sheet) { m_propertySheet = sheet; } + inline virtual wxPropertySheet *GetPropertySheet() const { return m_propertySheet; } -/* - virtual void OnOk(void) {}; - virtual void OnCancel(void) {}; - virtual void OnHelp(void) {}; -*/ + inline virtual bool OnClose() { return FALSE; } + inline long GetFlags(void) { return m_buttonFlags; } - inline virtual bool OnClose(void) { return FALSE; } - inline long GetFlags(void) { return m_buttonFlags; } - - protected: - long m_buttonFlags; - wxPropertySheet* m_propertySheet; - wxProperty* m_currentProperty; - wxList m_validatorRegistryList; - wxPropertyValidator* m_currentValidator; +protected: + long m_buttonFlags; + wxPropertySheet* m_propertySheet; + wxProperty* m_currentProperty; + wxList m_validatorRegistryList; + wxPropertyValidator* m_currentValidator; + +private: + DECLARE_DYNAMIC_CLASS(wxPropertyView) }; class WXDLLEXPORT wxPropertyValidator: public wxEvtHandler { - DECLARE_DYNAMIC_CLASS(wxPropertyValidator) - public: - wxPropertyValidator(long flags = 0); - ~wxPropertyValidator(void); +public: + wxPropertyValidator(long flags = 0); + ~wxPropertyValidator(); - inline long GetFlags(void) const { return m_validatorFlags; } - inline void SetValidatorProperty(wxProperty *prop) { m_validatorProperty = prop; } - inline wxProperty *GetValidatorProperty(void) const { return m_validatorProperty; } + inline long GetFlags() const { return m_validatorFlags; } + inline void SetValidatorProperty(wxProperty *prop) { m_validatorProperty = prop; } + inline wxProperty *GetValidatorProperty(void) const { return m_validatorProperty; } - virtual bool StringToFloat (wxChar *s, float *number); - virtual bool StringToDouble (wxChar *s, double *number); - virtual bool StringToInt (wxChar *s, int *number); - virtual bool StringToLong (wxChar *s, long *number); - virtual wxChar *FloatToString (float number); - virtual wxChar *DoubleToString (double number); - virtual wxChar *IntToString (int number); - virtual wxChar *LongToString (long number); + virtual bool StringToFloat (wxChar *s, float *number); + virtual bool StringToDouble (wxChar *s, double *number); + virtual bool StringToInt (wxChar *s, int *number); + virtual bool StringToLong (wxChar *s, long *number); + virtual wxChar *FloatToString (float number); + virtual wxChar *DoubleToString (double number); + virtual wxChar *IntToString (int number); + virtual wxChar *LongToString (long number); - protected: - long m_validatorFlags; - wxProperty* m_validatorProperty; +protected: + long m_validatorFlags; + wxProperty* m_validatorProperty; + +private: + DECLARE_DYNAMIC_CLASS(wxPropertyValidator) }; @@ -160,14 +161,16 @@ class WXDLLEXPORT wxPropertyValidator: public wxEvtHandler class WXDLLEXPORT wxPropertyValidatorRegistry: public wxHashTable { - DECLARE_DYNAMIC_CLASS(wxPropertyValidatorRegistry) - public: - wxPropertyValidatorRegistry(void); - ~wxPropertyValidatorRegistry(void); +public: + wxPropertyValidatorRegistry(); + ~wxPropertyValidatorRegistry(); - virtual void RegisterValidator(const wxString& roleName, wxPropertyValidator *validator); - virtual wxPropertyValidator *GetValidator(const wxString& roleName); - void ClearRegistry(void); + virtual void RegisterValidator(const wxString& roleName, wxPropertyValidator *validator); + virtual wxPropertyValidator *GetValidator(const wxString& roleName); + void ClearRegistry(); + +private: + DECLARE_DYNAMIC_CLASS(wxPropertyValidatorRegistry) }; /* diff --git a/include/wx/proplist.h b/include/wx/proplist.h index b21f36aa09..72e0fad5fd 100644 --- a/include/wx/proplist.h +++ b/include/wx/proplist.h @@ -78,8 +78,7 @@ // Mediates between a physical panel and the property sheet class WXDLLEXPORT wxPropertyListView: public wxPropertyView { - DECLARE_DYNAMIC_CLASS(wxPropertyListView) - public: +public: wxPropertyListView(wxPanel *propPanel = NULL, long flags = wxPROP_BUTTON_DEFAULT); ~wxPropertyListView(void); @@ -186,10 +185,12 @@ public: wxButton* m_windowCancelButton; wxButton* m_windowHelpButton; -DECLARE_EVENT_TABLE() private: - virtual void ShowView(wxPropertySheet *propertySheet, wxWindow *window) - { wxPropertyView::ShowView(propertySheet, window); }; + DECLARE_DYNAMIC_CLASS(wxPropertyListView) + DECLARE_EVENT_TABLE() + + virtual void ShowView(wxPropertySheet *propertySheet, wxWindow *window) + { wxPropertyView::ShowView(propertySheet, window); }; }; class WXDLLEXPORT wxPropertyTextEdit: public wxTextCtrl @@ -202,13 +203,14 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = _T("text")); + const wxString& name = wxT("text")); void OnSetFocus(); void OnKillFocus(); wxPropertyListView* m_view; +private: DECLARE_CLASS(wxPropertyTextEdit) }; @@ -220,11 +222,9 @@ public: class WXDLLEXPORT wxPropertyListValidator: public wxPropertyValidator { - DECLARE_DYNAMIC_CLASS(wxPropertyListValidator) - protected: - public: +public: wxPropertyListValidator(long flags = wxPROP_ALLOW_TEXT_EDITING): wxPropertyValidator(flags) { } - ~wxPropertyListValidator(void) {} + ~wxPropertyListValidator() {} // Called when the property is selected or deselected: typically displays the value // in the edit control (having chosen a suitable control to display: (non)editable text or listbox) @@ -274,6 +274,9 @@ class WXDLLEXPORT wxPropertyListValidator: public wxPropertyValidator virtual bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); virtual bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + +private: + DECLARE_DYNAMIC_CLASS(wxPropertyListValidator) }; /* @@ -289,7 +292,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = _T("dialogBox")); + const wxString& name = wxT("dialogBox")); void OnCloseWindow(wxCloseEvent& event); void OnDefaultAction(wxControl *item); @@ -301,6 +304,7 @@ public: private: wxPropertyListView* m_view; +private: DECLARE_CLASS(wxPropertyListDialog) DECLARE_EVENT_TABLE() }; @@ -317,7 +321,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = _T("panel")) + const wxString& name = wxT("panel")) : wxPanel(parent, -1, pos, size, style, name) { m_view = v; @@ -337,6 +341,7 @@ public: private: wxPropertyListView* m_view; +private: DECLARE_EVENT_TABLE() DECLARE_CLASS(wxPropertyListPanel) }; @@ -372,6 +377,7 @@ private: wxPropertyListView* m_view; wxPropertyListPanel* m_propertyPanel; +private: DECLARE_EVENT_TABLE() DECLARE_CLASS(wxPropertyListFrame) }; @@ -382,41 +388,40 @@ private: class WXDLLEXPORT wxRealListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxRealListValidator) - public: - // 0.0, 0.0 means no range - wxRealListValidator(float min = 0.0, float max = 0.0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags) - { - m_realMin = min; m_realMax = max; - } - ~wxRealListValidator(void) {} +public: + // 0.0, 0.0 means no range + wxRealListValidator(float min = 0.0, float max = 0.0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags) + { m_realMin = min; m_realMax = max; } + ~wxRealListValidator() {} - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost. + // Return FALSE if value didn't check out; signal to restore old value. + bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost or view wants to update + // the property list. + // Does the transfer from the property editing area to the property itself + bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - protected: - float m_realMin; - float m_realMax; +protected: + float m_realMin; + float m_realMax; + +private: + DECLARE_DYNAMIC_CLASS(wxRealListValidator) }; class WXDLLEXPORT wxIntegerListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxIntegerListValidator) - public: +public: // 0, 0 means no range wxIntegerListValidator(long min = 0, long max = 0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags) { m_integerMin = min; m_integerMax = max; } - ~wxIntegerListValidator(void) {} + ~wxIntegerListValidator() {} bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); @@ -429,156 +434,158 @@ class WXDLLEXPORT wxIntegerListValidator: public wxPropertyListValidator // Does the transfer from the property editing area to the property itself bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - protected: - long m_integerMin; - long m_integerMax; +protected: + long m_integerMin; + long m_integerMax; + +private: + DECLARE_DYNAMIC_CLASS(wxIntegerListValidator) }; class WXDLLEXPORT wxBoolListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxBoolListValidator) - protected: - public: - wxBoolListValidator(long flags = 0):wxPropertyListValidator(flags) - { - } - ~wxBoolListValidator(void) {} +public: + wxBoolListValidator(long flags = 0):wxPropertyListValidator(flags) {} + ~wxBoolListValidator() {} - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost. + // Return FALSE if value didn't check out; signal to restore old value. + bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost or view wants to update + // the property list. + // Does the transfer from the property editing area to the property itself + bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when the property is double clicked. Extra functionality can be provided, - // cycling through possible values. - virtual bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when the property is double clicked. Extra functionality can be provided, + // cycling through possible values. + virtual bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + +private: + DECLARE_DYNAMIC_CLASS(wxBoolListValidator) }; class WXDLLEXPORT wxStringListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxStringListValidator) - public: +public: wxStringListValidator(wxStringList *list = NULL, long flags = 0); - ~wxStringListValidator(void) - { - if (m_strings) - delete m_strings; - } + ~wxStringListValidator() + { + if (m_strings) + delete m_strings; + } - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost. + // Return FALSE if value didn't check out; signal to restore old value. + bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost or view wants to update + // the property list. + // Does the transfer from the property editing area to the property itself + bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when the property is double clicked. Extra functionality can be provided, - // cycling through possible values. - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when the property is double clicked. Extra functionality can be provided, + // cycling through possible values. + bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - protected: - wxStringList* m_strings; +protected: + wxStringList* m_strings; + +private: + DECLARE_DYNAMIC_CLASS(wxStringListValidator) }; class WXDLLEXPORT wxFilenameListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxFilenameListValidator) - public: - wxFilenameListValidator(wxString message = "Select a file", wxString wildcard = wxALL_FILES_PATTERN, long flags = 0); +public: + wxFilenameListValidator(wxString message = wxT("Select a file"), wxString wildcard = wxALL_FILES_PATTERN, long flags = 0); + ~wxFilenameListValidator(); - ~wxFilenameListValidator(void); + // Called when TICK is pressed or focus is lost. + // Return FALSE if value didn't check out; signal to restore old value. + bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost or view wants to update + // the property list. + // Does the transferance from the property editing area to the property itself + bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transferance from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when the edit (...) button is pressed. + void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - protected: - wxString m_filenameWildCard; - wxString m_filenameMessage; +protected: + wxString m_filenameWildCard; + wxString m_filenameMessage; +private: + DECLARE_DYNAMIC_CLASS(wxFilenameListValidator) }; class WXDLLEXPORT wxColourListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxColourListValidator) - protected: - public: - wxColourListValidator(long flags = 0); +public: + wxColourListValidator(long flags = 0); + ~wxColourListValidator(); - ~wxColourListValidator(void); + bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when the edit (...) button is pressed. + void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + +private: + DECLARE_DYNAMIC_CLASS(wxColourListValidator) }; class WXDLLEXPORT wxListOfStringsListValidator: public wxPropertyListValidator { - DECLARE_DYNAMIC_CLASS(wxListOfStringsListValidator) - protected: - public: - wxListOfStringsListValidator(long flags = 0); +public: + wxListOfStringsListValidator(long flags = 0); + ~wxListOfStringsListValidator() {} - ~wxListOfStringsListValidator(void) - { - } + bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost. + // Return FALSE if value didn't check out; signal to restore old value. + bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when TICK is pressed or focus is lost or view wants to update + // the property list. + // Does the transfer from the property editing area to the property itself + bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when the property is double clicked. + bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - // Called when the property is double clicked. - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + bool EditStringList(wxWindow *parent, wxStringList *stringList, const wxChar *title = wxT("String List Editor")); - bool EditStringList(wxWindow *parent, wxStringList *stringList, const wxChar *title = wxT("String List Editor")); - - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + // Called when the edit (...) button is pressed. + void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); + +private: + DECLARE_DYNAMIC_CLASS(wxListOfStringsListValidator) }; #endif diff --git a/include/wx/sizer.h b/include/wx/sizer.h index 3857f28d25..ece3be312e 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -80,6 +80,8 @@ public: { m_flag = flag; } void SetBorder( int border ) { m_border = border; } + void Show ( bool show ) + { m_show = show; } wxWindow *GetWindow() const { return m_window; } @@ -95,6 +97,8 @@ public: { return m_flag; } int GetBorder() const { return m_border; } + bool IsShown() const + { return m_show; } wxObject* GetUserData() { return m_userData; } wxPoint GetPosition() @@ -109,10 +113,15 @@ protected: int m_option; int m_border; int m_flag; + + // If TRUE, then this item is considered in the layout + // calculation. Otherwise, it is skipped over. + bool m_show; // als: aspect ratio can always be calculated from m_size, // but this would cause precision loss when the window // is shrinked. it is safer to preserve initial value. float m_ratio; + wxObject *m_userData; private: @@ -194,6 +203,21 @@ public: void SetDimension( int x, int y, int width, int height ); + // Manage whether individual windows or sub-sizers are considered + // in the layout calculations or not. + void Show( wxWindow *window, bool show = TRUE ); + void Hide( wxWindow *window ) + { Show (window, FALSE); } + void Show( wxSizer *sizer, bool show = TRUE ); + void Hide( wxSizer *sizer ) + { Show (sizer, FALSE); } + + bool IsShown( wxWindow *window ); + bool IsShown( wxSizer *sizer ); + + // Recursively call wxWindow::Show () on all sizer items. + void ShowItems (bool show); + protected: wxSize m_size; wxSize m_minSize; @@ -299,6 +323,9 @@ public: int GetOrientation() { return m_orient; } + void SetOrientation(int orient) + { m_orient = orient; } + protected: int m_orient; int m_stretchable; diff --git a/include/wx/stc/stc.h b/include/wx/stc/stc.h index 640eac8baf..096949085a 100644 --- a/include/wx/stc/stc.h +++ b/include/wx/stc/stc.h @@ -24,6 +24,30 @@ #include #include +#ifndef SWIG +/* + * If we're using wx in Dynamic Library format do we + * want wxStyledTextCtrl to be in DLL form as well? + */ +#if defined(WXUSINGDLL) && \ + (defined(WXMAKING_STC_DLL) || defined(WXUSING_STC_DLL)) + +#if defined(WXMAKING_STC_DLL) + // When building the DLL WXSTC_DECLSPEC exports classes +# define WXSTC_DECLSPEC WXEXPORT +#elif defined(WXUSING_STC_DLL) + // When using the DLL WXSTC_DECLSPEC imports classes +# define WXSTC_DECLSPEC WXIMPORT +#endif // defined(WXBUILD_STC_DLL) + +#else +// When building the static library nullify the effect of WXSTC_DECLSPEC +#define WXSTC_DECLSPEC +#endif // WXUSINGDLL && (WXMAKING_STC_DLL || WXUSING_STC_DLL) + +#endif // SWIG + + //---------------------------------------------------------------------- // Should a wxPopupWindow be used for the call tips and autocomplete windows? @@ -43,12 +67,6 @@ #define wxSTC_START 2000 #define wxSTC_OPTIONAL_START 3000 #define wxSTC_LEXER_START 4000 - -// Redoes the next action on the undo history. -#define wxSTC_CMD_REDO 2011 - -// Select all the text in the document. -#define wxSTC_CMD_SELECTALL 2013 #define wxSTC_WS_INVISIBLE 0 #define wxSTC_WS_VISIBLEALWAYS 1 #define wxSTC_WS_VISIBLEAFTERINDENT 2 @@ -167,18 +185,6 @@ #define wxSTC_FIND_MATCHCASE 4 #define wxSTC_FIND_WORDSTART 0x00100000 #define wxSTC_FIND_REGEXP 0x00200000 - -// Undo one action in the undo history. -#define wxSTC_CMD_UNDO 2176 - -// Cut the selection to the clipboard. -#define wxSTC_CMD_CUT 2177 - -// Copy the selection to the clipboard. -#define wxSTC_CMD_COPY 2178 - -// Paste the contents of the clipboard into the document replacing the selection. -#define wxSTC_CMD_PASTE 2179 #define wxSTC_FOLDLEVELBASE 0x400 #define wxSTC_FOLDLEVELWHITEFLAG 0x1000 #define wxSTC_FOLDLEVELHEADERFLAG 0x2000 @@ -190,158 +196,6 @@ #define wxSTC_CACHE_CARET 1 #define wxSTC_CACHE_PAGE 2 #define wxSTC_CACHE_DOCUMENT 3 - -// Move caret down one line. -#define wxSTC_CMD_LINEDOWN 2300 - -// Move caret down one line extending selection to new caret position. -#define wxSTC_CMD_LINEDOWNEXTEND 2301 - -// Move caret up one line. -#define wxSTC_CMD_LINEUP 2302 - -// Move caret up one line extending selection to new caret position. -#define wxSTC_CMD_LINEUPEXTEND 2303 - -// Move caret left one character. -#define wxSTC_CMD_CHARLEFT 2304 - -// Move caret left one character extending selection to new caret position. -#define wxSTC_CMD_CHARLEFTEXTEND 2305 - -// Move caret right one character. -#define wxSTC_CMD_CHARRIGHT 2306 - -// Move caret right one character extending selection to new caret position. -#define wxSTC_CMD_CHARRIGHTEXTEND 2307 - -// Move caret left one word. -#define wxSTC_CMD_WORDLEFT 2308 - -// Move caret left one word extending selection to new caret position. -#define wxSTC_CMD_WORDLEFTEXTEND 2309 - -// Move caret right one word. -#define wxSTC_CMD_WORDRIGHT 2310 - -// Move caret right one word extending selection to new caret position. -#define wxSTC_CMD_WORDRIGHTEXTEND 2311 - -// Move caret to first position on line. -#define wxSTC_CMD_HOME 2312 - -// Move caret to first position on line extending selection to new caret position. -#define wxSTC_CMD_HOMEEXTEND 2313 - -// Move caret to last position on line. -#define wxSTC_CMD_LINEEND 2314 - -// Move caret to last position on line extending selection to new caret position. -#define wxSTC_CMD_LINEENDEXTEND 2315 - -// Move caret to first position in document. -#define wxSTC_CMD_DOCUMENTSTART 2316 - -// Move caret to first position in document extending selection to new caret position. -#define wxSTC_CMD_DOCUMENTSTARTEXTEND 2317 - -// Move caret to last position in document. -#define wxSTC_CMD_DOCUMENTEND 2318 - -// Move caret to last position in document extending selection to new caret position. -#define wxSTC_CMD_DOCUMENTENDEXTEND 2319 - -// Move caret one page up. -#define wxSTC_CMD_PAGEUP 2320 - -// Move caret one page up extending selection to new caret position. -#define wxSTC_CMD_PAGEUPEXTEND 2321 - -// Move caret one page down. -#define wxSTC_CMD_PAGEDOWN 2322 - -// Move caret one page down extending selection to new caret position. -#define wxSTC_CMD_PAGEDOWNEXTEND 2323 - -// Switch from insert to overtype mode or the reverse. -#define wxSTC_CMD_EDITTOGGLEOVERTYPE 2324 - -// Cancel any modes such as call tip or auto-completion list display. -#define wxSTC_CMD_CANCEL 2325 - -// Delete the selection or if no selection, the character before the caret. -#define wxSTC_CMD_DELETEBACK 2326 - -// If selection is empty or all on one line replace the selection with a tab character. -// If more than one line selected, indent the lines. -#define wxSTC_CMD_TAB 2327 - -// Dedent the selected lines. -#define wxSTC_CMD_BACKTAB 2328 - -// Insert a new line, may use a CRLF, CR or LF depending on EOL mode. -#define wxSTC_CMD_NEWLINE 2329 - -// Insert a Form Feed character. -#define wxSTC_CMD_FORMFEED 2330 - -// Move caret to before first visible character on line. -// If already there move to first character on line. -#define wxSTC_CMD_VCHOME 2331 - -// Like VCHome but extending selection to new caret position. -#define wxSTC_CMD_VCHOMEEXTEND 2332 - -// Magnify the displayed text by increasing the sizes by 1 point. -#define wxSTC_CMD_ZOOMIN 2333 - -// Make the displayed text smaller by decreasing the sizes by 1 point. -#define wxSTC_CMD_ZOOMOUT 2334 - -// Delete the word to the left of the caret. -#define wxSTC_CMD_DELWORDLEFT 2335 - -// Delete the word to the right of the caret. -#define wxSTC_CMD_DELWORDRIGHT 2336 - -// Cut the line containing the caret. -#define wxSTC_CMD_LINECUT 2337 - -// Delete the line containing the caret. -#define wxSTC_CMD_LINEDELETE 2338 - -// Switch the current line with the previous. -#define wxSTC_CMD_LINETRANSPOSE 2339 - -// Transform the selection to lower case. -#define wxSTC_CMD_LOWERCASE 2340 - -// Transform the selection to upper case. -#define wxSTC_CMD_UPPERCASE 2341 - -// Scroll the document down, keeping the caret visible. -#define wxSTC_CMD_LINESCROLLDOWN 2342 - -// Scroll the document up, keeping the caret visible. -#define wxSTC_CMD_LINESCROLLUP 2343 - -// Delete the selection or if no selection, the character before the caret. -// Will not delete the character before at the start of a line. -#define wxSTC_CMD_DELETEBACKNOTLINE 2344 - -// Move caret to first position on display line. -#define wxSTC_CMD_HOMEDISPLAY 2345 - -// Move caret to first position on display line extending selection to -// new caret position. -#define wxSTC_CMD_HOMEDISPLAYEXTEND 2346 - -// Move caret to last position on display line. -#define wxSTC_CMD_LINEENDDISPLAY 2347 - -// Move caret to last position on display line extending selection to new -// caret position. -#define wxSTC_CMD_LINEENDDISPLAYEXTEND 2348 #define wxSTC_EDGE_NONE 0 #define wxSTC_EDGE_LINE 1 #define wxSTC_EDGE_BACKGROUND 2 @@ -866,6 +720,204 @@ #define wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR 18 #define wxSTC_SCRIPTOL_COMMENTBASIC 19 + +//----------------------------------------- +// Commands that can be bound to keystrokes + +// Redoes the next action on the undo history. +#define wxSTC_CMD_REDO 2011 + +// Select all the text in the document. +#define wxSTC_CMD_SELECTALL 2013 + +// Undo one action in the undo history. +#define wxSTC_CMD_UNDO 2176 + +// Cut the selection to the clipboard. +#define wxSTC_CMD_CUT 2177 + +// Copy the selection to the clipboard. +#define wxSTC_CMD_COPY 2178 + +// Paste the contents of the clipboard into the document replacing the selection. +#define wxSTC_CMD_PASTE 2179 + +// Clear the selection. +#define wxSTC_CMD_CLEAR 2180 + +// Move caret down one line. +#define wxSTC_CMD_LINEDOWN 2300 + +// Move caret down one line extending selection to new caret position. +#define wxSTC_CMD_LINEDOWNEXTEND 2301 + +// Move caret up one line. +#define wxSTC_CMD_LINEUP 2302 + +// Move caret up one line extending selection to new caret position. +#define wxSTC_CMD_LINEUPEXTEND 2303 + +// Move caret left one character. +#define wxSTC_CMD_CHARLEFT 2304 + +// Move caret left one character extending selection to new caret position. +#define wxSTC_CMD_CHARLEFTEXTEND 2305 + +// Move caret right one character. +#define wxSTC_CMD_CHARRIGHT 2306 + +// Move caret right one character extending selection to new caret position. +#define wxSTC_CMD_CHARRIGHTEXTEND 2307 + +// Move caret left one word. +#define wxSTC_CMD_WORDLEFT 2308 + +// Move caret left one word extending selection to new caret position. +#define wxSTC_CMD_WORDLEFTEXTEND 2309 + +// Move caret right one word. +#define wxSTC_CMD_WORDRIGHT 2310 + +// Move caret right one word extending selection to new caret position. +#define wxSTC_CMD_WORDRIGHTEXTEND 2311 + +// Move caret to first position on line. +#define wxSTC_CMD_HOME 2312 + +// Move caret to first position on line extending selection to new caret position. +#define wxSTC_CMD_HOMEEXTEND 2313 + +// Move caret to last position on line. +#define wxSTC_CMD_LINEEND 2314 + +// Move caret to last position on line extending selection to new caret position. +#define wxSTC_CMD_LINEENDEXTEND 2315 + +// Move caret to first position in document. +#define wxSTC_CMD_DOCUMENTSTART 2316 + +// Move caret to first position in document extending selection to new caret position. +#define wxSTC_CMD_DOCUMENTSTARTEXTEND 2317 + +// Move caret to last position in document. +#define wxSTC_CMD_DOCUMENTEND 2318 + +// Move caret to last position in document extending selection to new caret position. +#define wxSTC_CMD_DOCUMENTENDEXTEND 2319 + +// Move caret one page up. +#define wxSTC_CMD_PAGEUP 2320 + +// Move caret one page up extending selection to new caret position. +#define wxSTC_CMD_PAGEUPEXTEND 2321 + +// Move caret one page down. +#define wxSTC_CMD_PAGEDOWN 2322 + +// Move caret one page down extending selection to new caret position. +#define wxSTC_CMD_PAGEDOWNEXTEND 2323 + +// Switch from insert to overtype mode or the reverse. +#define wxSTC_CMD_EDITTOGGLEOVERTYPE 2324 + +// Cancel any modes such as call tip or auto-completion list display. +#define wxSTC_CMD_CANCEL 2325 + +// Delete the selection or if no selection, the character before the caret. +#define wxSTC_CMD_DELETEBACK 2326 + +// If selection is empty or all on one line replace the selection with a tab character. +// If more than one line selected, indent the lines. +#define wxSTC_CMD_TAB 2327 + +// Dedent the selected lines. +#define wxSTC_CMD_BACKTAB 2328 + +// Insert a new line, may use a CRLF, CR or LF depending on EOL mode. +#define wxSTC_CMD_NEWLINE 2329 + +// Insert a Form Feed character. +#define wxSTC_CMD_FORMFEED 2330 + +// Move caret to before first visible character on line. +// If already there move to first character on line. +#define wxSTC_CMD_VCHOME 2331 + +// Like VCHome but extending selection to new caret position. +#define wxSTC_CMD_VCHOMEEXTEND 2332 + +// Magnify the displayed text by increasing the sizes by 1 point. +#define wxSTC_CMD_ZOOMIN 2333 + +// Make the displayed text smaller by decreasing the sizes by 1 point. +#define wxSTC_CMD_ZOOMOUT 2334 + +// Delete the word to the left of the caret. +#define wxSTC_CMD_DELWORDLEFT 2335 + +// Delete the word to the right of the caret. +#define wxSTC_CMD_DELWORDRIGHT 2336 + +// Cut the line containing the caret. +#define wxSTC_CMD_LINECUT 2337 + +// Delete the line containing the caret. +#define wxSTC_CMD_LINEDELETE 2338 + +// Switch the current line with the previous. +#define wxSTC_CMD_LINETRANSPOSE 2339 + +// Transform the selection to lower case. +#define wxSTC_CMD_LOWERCASE 2340 + +// Transform the selection to upper case. +#define wxSTC_CMD_UPPERCASE 2341 + +// Scroll the document down, keeping the caret visible. +#define wxSTC_CMD_LINESCROLLDOWN 2342 + +// Scroll the document up, keeping the caret visible. +#define wxSTC_CMD_LINESCROLLUP 2343 + +// Delete the selection or if no selection, the character before the caret. +// Will not delete the character before at the start of a line. +#define wxSTC_CMD_DELETEBACKNOTLINE 2344 + +// Move caret to first position on display line. +#define wxSTC_CMD_HOMEDISPLAY 2345 + +// Move caret to first position on display line extending selection to +// new caret position. +#define wxSTC_CMD_HOMEDISPLAYEXTEND 2346 + +// Move caret to last position on display line. +#define wxSTC_CMD_LINEENDDISPLAY 2347 + +// Move caret to last position on display line extending selection to new +// caret position. +#define wxSTC_CMD_LINEENDDISPLAYEXTEND 2348 + +// Move to the previous change in capitalisation. +#define wxSTC_CMD_WORDPARTLEFT 2390 + +// Move to the previous change in capitalisation extending selection +// to new caret position. +#define wxSTC_CMD_WORDPARTLEFTEXTEND 2391 + +// Move to the change next in capitalisation. +#define wxSTC_CMD_WORDPARTRIGHT 2392 + +// Move to the next change in capitalisation extending selection +// to new caret position. +#define wxSTC_CMD_WORDPARTRIGHTEXTEND 2393 + +// Delete back from the current position to the start of the line. +#define wxSTC_CMD_DELLINELEFT 2395 + +// Delete forwards from the current position to the end of the line. +#define wxSTC_CMD_DELLINERIGHT 2396 + + // END of generated section //---------------------------------------------------------------------- @@ -873,8 +925,11 @@ class ScintillaWX; // forward declare class WordList; struct SCNotification; - -extern const wxChar* wxSTCNameStr; +#ifndef SWIG +extern WXSTC_DECLSPEC const wxChar* wxSTCNameStr; +class WXSTC_DECLSPEC wxStyledTextCtrl; +class WXSTC_DECLSPEC wxStyledTextEvent; +#endif //---------------------------------------------------------------------- @@ -1644,14 +1699,14 @@ public: // Move caret to first position on display line. void HomeDisplay(); - // Move caret to first position on display line extending selection to + // Move caret to first position on display line extending selection to // new caret position. void HomeDisplayExtend(); // Move caret to last position on display line. void LineEndDisplay(); - // Move caret to last position on display line extending selection to new + // Move caret to last position on display line extending selection to new // caret position. void LineEndDisplayExtend(); @@ -1933,6 +1988,7 @@ private: void OnMouseMove(wxMouseEvent& evt); void OnMouseLeftUp(wxMouseEvent& evt); void OnMouseRightUp(wxMouseEvent& evt); + void OnMouseMiddleUp(wxMouseEvent& evt); void OnContextMenu(wxContextMenuEvent& evt); void OnMouseWheel(wxMouseEvent& evt); void OnChar(wxKeyEvent& evt); @@ -1968,7 +2024,7 @@ private: //---------------------------------------------------------------------- -// SWIG can't handle "#if" type of conditionals, onlu "#ifdef" +// SWIG can't handle "#if" type of conditionals, only "#ifdef" #ifdef SWIG #define STC_USE_DND 1 #else diff --git a/include/wx/strconv.h b/include/wx/strconv.h index 7b4b2255f3..7d22b34c0a 100644 --- a/include/wx/strconv.h +++ b/include/wx/strconv.h @@ -54,6 +54,9 @@ public: const wxCharBuffer cWC2WX(const wchar_t *psz) const { return cWC2MB(psz); } const wxWCharBuffer cWX2WC(const char *psz) const { return cMB2WC(psz); } #endif // Unicode/ANSI + + // virtual dtor for any base class + virtual ~wxMBConv(); }; WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc; @@ -115,7 +118,7 @@ public: virtual ~wxCSConv(); wxCSConv& operator=(const wxCSConv& conv); - + void LoadNow(); virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const; @@ -135,6 +138,7 @@ private: #define wxConvFile wxConvLocal WXDLLEXPORT_DATA(extern wxCSConv) wxConvLocal; +WXDLLEXPORT_DATA(extern wxCSConv) wxConvISO8859_1; WXDLLEXPORT_DATA(extern wxMBConv *) wxConvCurrent; // ---------------------------------------------------------------------------- @@ -170,7 +174,7 @@ public: const char* cWX2MB(const char *psz) const { return psz; } }; -WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc, wxConvFile, wxConvLocal; +WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc, wxConvFile, wxConvLocal, wxConvISO8859_1; WXDLLEXPORT_DATA(extern wxMBConv *) wxConvCurrent; #define wxFNCONV(name) name diff --git a/include/wx/stream.h b/include/wx/stream.h index 488d1905dc..5b80f8766c 100644 --- a/include/wx/stream.h +++ b/include/wx/stream.h @@ -1,7 +1,7 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/stream.h -// Purpose: "wxWindows stream" base classes -// Author: Guilhem Lavaux +// Purpose: stream classes +// Author: Guilhem Lavaux, Guillermo Rodriguez Garcia, Vadim Zeitlin // Modified by: // Created: 11/07/98 // RCS-ID: $Id$ @@ -34,30 +34,38 @@ typedef wxOutputStream& (*__wxOutputManip)(wxOutputStream&); WXDLLEXPORT wxOutputStream& wxEndL(wxOutputStream& o_stream); -// --------------------------------------------------------------------------- -// wxStream: base classes -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- enum wxStreamError { - wxSTREAM_NO_ERROR = 0, - wxSTREAM_NO_ERR = wxSTREAM_NO_ERROR, - wxSTREAM_NOERROR = wxSTREAM_NO_ERROR, - - wxSTREAM_EOF, - - wxSTREAM_WRITE_ERROR, - wxSTREAM_WRITE_ERR = wxSTREAM_WRITE_ERROR, - - wxSTREAM_READ_ERROR, - wxSTREAM_READ_ERR = wxSTREAM_READ_ERROR + wxSTREAM_NO_ERROR = 0, // stream is in good state + wxSTREAM_EOF, // EOF reached in Read() or similar + wxSTREAM_WRITE_ERROR, // generic write error + wxSTREAM_READ_ERROR // generic read error }; // compatibility -#define wxStream_NOERROR wxSTREAM_NOERROR -#define wxStream_EOF wxSTREAM_EOF -#define wxStream_WRITE_ERR wxSTREAM_WRITE_ERROR -#define wxStream_READ_ERR wxSTREAM_READ_ERROR +#if WXWIN_COMPATIBILITY_2_2 + #define wxStream_NOERROR wxSTREAM_NOERROR + #define wxStream_EOF wxSTREAM_EOF + #define wxStream_WRITE_ERR wxSTREAM_WRITE_ERROR + #define wxStream_READ_ERR wxSTREAM_READ_ERROR + + #define wxSTREAM_NO_ERR wxSTREAM_NO_ERROR + #define wxSTREAM_NOERROR wxSTREAM_NO_ERROR + #define wxSTREAM_WRITE_ERR wxSTREAM_WRITE_ERROR + #define wxSTREAM_READ_ERR wxSTREAM_READ_ERROR +#endif // WXWIN_COMPATIBILITY_2_2 + +// ============================================================================ +// base stream classes: wxInputStream and wxOutputStream +// ============================================================================ + +// --------------------------------------------------------------------------- +// wxStreamBase: common (but non virtual!) base for all stream classes +// --------------------------------------------------------------------------- class WXDLLEXPORT wxStreamBase { @@ -67,80 +75,168 @@ public: // error testing wxStreamError GetLastError() const { return m_lasterror; } - bool IsOk() const { return LastError() == wxSTREAM_NOERROR; } - bool operator!() const { return LastError() != wxSTREAM_NOERROR; } + bool IsOk() const { return GetLastError() == wxSTREAM_NO_ERROR; } + bool operator!() const { return !IsOk(); } + // reset the stream state + void Reset() { m_lasterror = wxSTREAM_NO_ERROR; } + + // deprecated (doesn't make sense!), don't use virtual size_t GetSize() const { return 0; } +#if WXWIN_COMPATIBILITY_2_2 // deprecated, for compatibility only wxStreamError LastError() const { return m_lasterror; } size_t StreamSize() const { return GetSize(); } +#endif // WXWIN_COMPATIBILITY_2_2 protected: - // VZ: these functions are really pure virtual and shouldn't be declared - // in the base class because it creates ambiguties in stream classes - // deriving from both wxInputStream and wxOutputStream -#if 0 - virtual size_t OnSysRead(void *buffer, size_t bufsize); - virtual size_t OnSysWrite(const void *buffer, size_t bufsize); -#endif - virtual off_t OnSysSeek(off_t seek, wxSeekMode mode); virtual off_t OnSysTell() const; - friend class wxStreamBuffer; - size_t m_lastcount; wxStreamError m_lasterror; + + friend class wxStreamBuffer; }; -class WXDLLEXPORT wxInputStream : /* virtual */ public wxStreamBase +// ---------------------------------------------------------------------------- +// wxInputStream: base class for the input streams +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxInputStream : public wxStreamBase { public: + // ctor and dtor, nothing exciting wxInputStream(); virtual ~wxInputStream(); - // is the stream at EOF? - virtual bool Eof() const; // IO functions + // ------------ + + // return a character from the stream without removing it, i.e. it will + // still be returned by the next call to GetC() + // + // blocks until something appears in the stream if necessary, if nothing + // ever does (i.e. EOF) LastRead() will return 0 (and the return value is + // undefined), otherwise 1 virtual char Peek(); + + // return one character from the stream, blocking until it appears if + // necessary + // + // if EOF, return value is undefined and LastRead() will return 0 and not 1 char GetC(); + + // read at most the given number of bytes from the stream + // + // there are 2 possible situations here: either there is nothing at all in + // the stream right now in which case Read() blocks until something appears + // (use CanRead() to avoid this) or there is already some data available in + // the stream and then Read() doesn't block but returns just the data it + // can read without waiting for more + // + // in any case, if there are not enough bytes in the stream right now, + // LastRead() value will be less than size but greater than 0. If it is 0, + // it means that EOF has been reached. virtual wxInputStream& Read(void *buffer, size_t size); - wxInputStream& Read(wxOutputStream& stream_out); - // Position functions - virtual off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart); - virtual off_t TellI() const; + // copy the entire contents of this stream into streamOut, stopping only + // when EOF is reached or an error occurs + wxInputStream& Read(wxOutputStream& streamOut); - // State functions - virtual size_t LastRead() { return wxStreamBase::m_lastcount; } - // Ungetch + // status functions + // ---------------- + + // returns the number of bytes read by the last call to Read(), GetC() or + // Peek() + // + // this should be used to discover whether that call succeeded in reading + // all the requested data or not + virtual size_t LastRead() const { return wxStreamBase::m_lastcount; } + + // returns TRUE if some data is available in the stream right now, so that + // calling Read() wouldn't block + virtual bool CanRead() const; + + // is the stream at EOF? + // + // note that this cannot be really implemented for all streams and + // CanRead() is more reliable than Eof() + virtual bool Eof() const; + + + // write back buffer + // ----------------- + + // put back the specified number of bytes into the stream, they will be + // fetched by the next call to the read functions + // + // returns the number of bytes really stuffed back size_t Ungetch(const void *buffer, size_t size); + + // put back the specified character in the stream + // + // returns TRUE if ok, FALSE on error bool Ungetch(char c); - // Operators + + // position functions + // ------------------ + + // move the stream pointer to the given position (if the stream supports + // it) + // + // returns wxInvalidOffset on error + virtual off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart); + + // return the current position of the stream pointer or wxInvalidOffset + virtual off_t TellI() const; + + + // stream-like operators + // --------------------- + wxInputStream& operator>>(wxOutputStream& out) { return Read(out); } - wxInputStream& operator>>( __wxInputManip func) { return func(*this); } + wxInputStream& operator>>(__wxInputManip func) { return func(*this); } protected: - // to be implemented in the derived classes (it should have been pure - // virtual) - virtual size_t OnSysRead(void *buffer, size_t bufsize); + // do read up to size bytes of data into the provided buffer + // + // this method should return 0 if EOF has been reached or an error occured + // (m_lasterror should be set accordingly as well) or the number of bytes + // read + virtual size_t OnSysRead(void *buffer, size_t size) = 0; - // Ungetch managers + // write-back buffer support + // ------------------------- + + // return the pointer to a buffer big enough to hold sizeNeeded bytes + char *AllocSpaceWBack(size_t sizeNeeded); + + // read up to size data from the write back buffer, return the number of + // bytes read + size_t GetWBack(void *buf, size_t size); + + // write back buffer or NULL if none char *m_wback; - size_t m_wbacksize; - size_t m_wbackcur; - char *AllocSpaceWBack(size_t needed_size); - size_t GetWBack(void *buf, size_t bsize); + // the size of the buffer + size_t m_wbacksize; + + // the current position in the buffer + size_t m_wbackcur; friend class wxStreamBuffer; }; -class WXDLLEXPORT wxOutputStream : /* virtual */ public wxStreamBase +// ---------------------------------------------------------------------------- +// wxOutputStream: base for the output streams +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxOutputStream : public wxStreamBase { public: wxOutputStream(); @@ -168,6 +264,10 @@ protected: friend class wxStreamBuffer; }; +// ============================================================================ +// helper stream classes +// ============================================================================ + // --------------------------------------------------------------------------- // A stream for measuring streamed output // --------------------------------------------------------------------------- @@ -224,6 +324,10 @@ protected: wxOutputStream *m_parent_o_stream; }; +// ============================================================================ +// buffered streams +// ============================================================================ + // --------------------------------------------------------------------------- // Stream buffer: this class can be derived from and passed to // wxBufferedStreams to implement custom buffering @@ -240,7 +344,6 @@ public: }; wxStreamBuffer(wxStreamBase& stream, BufMode mode); - wxStreamBuffer(BufMode mode); wxStreamBuffer(const wxStreamBuffer& buf); virtual ~wxStreamBuffer(); @@ -294,6 +397,10 @@ public: // deprecated, for compatibility only wxStreamBase *Stream() { return m_stream; } + // this constructs a dummy wxStreamBuffer, used by (and exists for) + // wxMemoryStreams only, don't use! + wxStreamBuffer(BufMode mode); + protected: void GetFromBuffer(void *buffer, size_t size); void PutToBuffer(const void *buffer, size_t size); @@ -328,13 +435,12 @@ protected: // flags bool m_destroybuf, // deallocate buffer? - m_destroystream, // delete associated stream? m_fixed, m_flushable; }; // --------------------------------------------------------------------------- -// wxBufferedStreams +// wxBufferedInputStream // --------------------------------------------------------------------------- class WXDLLEXPORT wxBufferedInputStream : public wxFilterInputStream @@ -367,6 +473,10 @@ protected: wxStreamBuffer *m_i_streambuf; }; +// ---------------------------------------------------------------------------- +// wxBufferedOutputStream +// ---------------------------------------------------------------------------- + class WXDLLEXPORT wxBufferedOutputStream : public wxFilterOutputStream { public: diff --git a/include/wx/string.h b/include/wx/string.h index 1c6dbc1f0b..559817da01 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -314,7 +314,7 @@ public: // from multibyte string // (NB: nLength is right now number of Unicode characters, not // characters in psz! So try not to use it yet!) - wxString(const char *psz, wxMBConv& conv = wxConvLibc, size_t nLength = wxSTRING_MAXLEN); + wxString(const char *psz, wxMBConv& conv, size_t nLength = wxSTRING_MAXLEN); // from wxWCharBuffer (i.e. return from wxGetString) wxString(const wxWCharBuffer& psz) { InitWith(psz, 0, wxSTRING_MAXLEN); } @@ -461,14 +461,16 @@ public: // the behaviour of these functions with the strings containing anything // else than 7 bit ASCII characters is undefined, use at your own risk. #if wxUSE_UNICODE - static wxString FromAscii(const char *ascii); + static wxString FromAscii(const char *ascii); // string + static wxString FromAscii(const char ascii); // char const wxCharBuffer ToAscii() const; #else // ANSI static wxString FromAscii(const char *ascii) { return wxString( ascii ); } + static wxString FromAscii(const char ascii) { return wxString( ascii ); } const char *ToAscii() const { return c_str(); } #endif // Unicode/!Unicode - // conversions with (possible) format convertions: have to return a + // conversions with (possible) format conversions: have to return a // buffer with temporary data // // the functions defined (in either Unicode or ANSI) mode are mb_str() to @@ -833,7 +835,7 @@ public: // returns true if the string is empty bool empty() const { return IsEmpty(); } // inform string about planned change in size - void reserve(size_t size) { Alloc(size); } + void reserve(size_t sz) { Alloc(sz); } // lib.string.access // return the character at position n diff --git a/include/wx/textbuf.h b/include/wx/textbuf.h index c7087c669a..32d8379a0d 100644 --- a/include/wx/textbuf.h +++ b/include/wx/textbuf.h @@ -81,10 +81,10 @@ public: bool Create(const wxString& strBufferName); // Open() also loads buffer in memory on success - bool Open(wxMBConv& conv = wxConvLibc); + bool Open(wxMBConv& conv = wxConvISO8859_1); // same as Open() but with (another) buffer name - bool Open(const wxString& strBufferName, wxMBConv& conv = wxConvLibc); + bool Open(const wxString& strBufferName, wxMBConv& conv = wxConvISO8859_1); // closes the buffer and frees memory, losing all changes bool Close(); @@ -148,7 +148,7 @@ public: // change the buffer (default argument means "don't change type") // possibly in another format bool Write(wxTextFileType typeNew = wxTextFileType_None, - wxMBConv& conv = wxConvLibc); + wxMBConv& conv = wxConvISO8859_1); // dtor virtual ~wxTextBuffer(); @@ -171,8 +171,7 @@ protected: wxTextBufferOpenMode openmode) = 0; virtual bool OnClose() = 0; virtual bool OnRead(wxMBConv& conv) = 0; - virtual bool OnWrite(wxTextFileType typeNew, - wxMBConv& conv = wxConvLibc) = 0; + virtual bool OnWrite(wxTextFileType typeNew, wxMBConv& conv) = 0; wxString m_strBufferName; // name of the buffer diff --git a/include/wx/textfile.h b/include/wx/textfile.h index b66afc76c4..43024f64db 100644 --- a/include/wx/textfile.h +++ b/include/wx/textfile.h @@ -44,7 +44,7 @@ protected: wxTextBufferOpenMode OpenMode); virtual bool OnClose(); virtual bool OnRead(wxMBConv& conv); - virtual bool OnWrite(wxTextFileType typeNew, wxMBConv& conv = wxConvLibc); + virtual bool OnWrite(wxTextFileType typeNew, wxMBConv& conv); private: wxFile m_file; diff --git a/include/wx/txtstrm.h b/include/wx/txtstrm.h index d7948933f7..dff4466bd1 100644 --- a/include/wx/txtstrm.h +++ b/include/wx/txtstrm.h @@ -28,10 +28,15 @@ typedef wxTextOutputStream& (*__wxTextOutputManip)(wxTextOutputStream&); WXDLLEXPORT wxTextOutputStream &endl( wxTextOutputStream &stream ); + class WXDLLEXPORT wxTextInputStream { public: +#if wxUSE_UNICODE + wxTextInputStream(wxInputStream& s, const wxString &sep=wxT(" \t"), wxMBConv& conv = wxConvUTF8 ); +#else wxTextInputStream(wxInputStream& s, const wxString &sep=wxT(" \t") ); +#endif ~wxTextInputStream(); wxUint32 Read32(); @@ -60,13 +65,18 @@ public: protected: wxInputStream &m_input; wxString m_separators; + +#if wxUSE_UNICODE + wxMBConv &m_conv; +#endif bool EatEOL(const wxChar &c); wxChar NextNonSeparators(); void SkipIfEndOfLine( wxChar c ); }; -typedef enum { +typedef enum +{ wxEOL_NATIVE, wxEOL_UNIX, wxEOL_MAC, @@ -76,7 +86,11 @@ typedef enum { class WXDLLEXPORT wxTextOutputStream { public: +#if wxUSE_UNICODE + wxTextOutputStream( wxOutputStream& s, wxEOL mode = wxEOL_NATIVE, wxMBConv& conv = wxConvUTF8 ); +#else wxTextOutputStream( wxOutputStream& s, wxEOL mode = wxEOL_NATIVE ); +#endif virtual ~wxTextOutputStream(); void SetMode( wxEOL mode = wxEOL_NATIVE ); @@ -103,6 +117,11 @@ public: protected: wxOutputStream &m_output; wxEOL m_mode; + +#if wxUSE_UNICODE + wxMBConv &m_conv; +#endif + }; #endif diff --git a/include/wx/univ/combobox.h b/include/wx/univ/combobox.h index afccb74711..532073b460 100644 --- a/include/wx/univ/combobox.h +++ b/include/wx/univ/combobox.h @@ -160,6 +160,10 @@ public: virtual bool Enable(bool enable = TRUE); virtual bool Show(bool show = TRUE); +#if wxUSE_TOOLTIPS + virtual void DoSetToolTip( wxToolTip *tip ); +#endif // wxUSE_TOOLTIPS + protected: // override the base class virtuals involved into geometry calculations virtual wxSize DoGetBestClientSize() const; diff --git a/include/wx/univ/frame.h b/include/wx/univ/frame.h index a181bba996..4f13277f1e 100644 --- a/include/wx/univ/frame.h +++ b/include/wx/univ/frame.h @@ -64,12 +64,12 @@ public: virtual int GetMinWidth() const; virtual int GetMinHeight() const; + // sends wxSizeEvent to itself (used after attaching xxxBar) + virtual void SendSizeEvent(); + protected: void OnSize(wxSizeEvent& event); - // sends wxSizeEvent to itself (used after attaching xxxBar) - void SendSizeEvent(); - virtual void DoGetClientSize(int *width, int *height) const; virtual void DoSetClientSize(int width, int height); diff --git a/include/wx/univ/listbox.h b/include/wx/univ/listbox.h index aa608cfba6..363f523ac8 100644 --- a/include/wx/univ/listbox.h +++ b/include/wx/univ/listbox.h @@ -129,10 +129,10 @@ public: void Activate(int item = -1); // select or unselect the specified or current (if -1) item - void Select(bool sel = TRUE, int item = -1); + void DoSelect(int item = -1, bool sel = TRUE); // more readable wrapper - void Unselect(int item) { Select(FALSE, item); } + void DoUnselect(int item) { DoSelect(item, FALSE); } // select an item and send a notification about it void SelectAndNotify(int item); diff --git a/include/wx/univ/radiobox.h b/include/wx/univ/radiobox.h index 0b9a6c48c3..87cad891f4 100644 --- a/include/wx/univ/radiobox.h +++ b/include/wx/univ/radiobox.h @@ -84,6 +84,10 @@ public: virtual wxString GetLabel() const; virtual void SetLabel(const wxString& label); +#if wxUSE_TOOLTIPS + virtual void DoSetToolTip( wxToolTip *tip ); +#endif // wxUSE_TOOLTIPS + // wxUniversal-only methods // another Append() version diff --git a/include/wx/univ/setup.h b/include/wx/univ/setup.h deleted file mode 100644 index 1873148307..0000000000 --- a/include/wx/univ/setup.h +++ /dev/null @@ -1,512 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: wx/univ/setup.h -// Purpose: configuration settings for wxUniversal/MSW -// Author: Vadim Zeitlin -// Modified by: -// Created: 14.08.00 -// RCS-ID: $Id$ -// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_UNIV_SETUP_H_ -#define _WX_UNIV_SETUP_H_ - -// ---------------------------------------------------------------------------- -// not all ports implement everything... -// ---------------------------------------------------------------------------- - -// FIXME: why do we have different sections for Mac/OS2/the rest? Most settings -// should have the same value, like this it's a real pain to update this -// file... - -#define wxUSE_DYNAMIC_LOADER 0 - -#define wxUSE_PROTOCOL 0 -#define wxUSE_URL 0 - -#define wxUSE_UNICODE_MSLU 0 - -#if defined(__WXMAC__) - -#define wxUSE_GUI 1 -#define WXWIN_COMPATIBILITY 0 -#define wxICON_IS_BITMAP 0 -#define wxFONT_SIZE_COMPATIBILITY 0 -#define wxDIALOG_UNIT_COMPATIBILITY 0 -#define wxUSE_DEBUG_CONTEXT 0 -#define wxUSE_MEMORY_TRACING 0 -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 -#define wxUSE_DEBUG_NEW_ALWAYS 0 -#define wxUSE_ON_FATAL_EXCEPTION 0 - -#define wxUSE_UNICODE 0 -#define wxUSE_WCHAR_T 0 -#define wxUSE_LOG 1 -#define wxUSE_LOGGUI 1 -#define wxUSE_LOGWINDOW 1 -#define wxUSE_LOG_DIALOG 0 -#define wxUSE_THREADS 0 -#define wxUSE_STREAMS 0 -#define wxUSE_STD_IOSTREAM 0 -#define wxUSE_SERIAL 0 -#define wxUSE_LONGLONG 1 -#define wxUSE_TIMER 1 -#define wxUSE_STOPWATCH 1 -#define wxUSE_TIMEDATE 0 -#define wxUSE_DATETIME 1 -#define wxUSE_CONFIG 0 -#define wxUSE_CONFIG_NATIVE 0 -#define wxUSE_DIALUP_MANAGER 0 -#define wxUSE_DYNLIB_CLASS 0 -#define wxUSE_SOCKETS 0 -#define wxUSE_FILESYSTEM 0 -#define wxUSE_FS_ZIP 0 -#define wxUSE_FS_INET 0 -#define wxUSE_ZIPSTREAM 0 -#define wxUSE_ZLIB 0 -#define wxUSE_FILESYSTEM 0 -#define wxUSE_FS_ZIP 0 -#define wxUSE_FS_INET 0 -#define wxUSE_ZIPSTREAM 0 -#define wxUSE_ZLIB 0 -#define wxUSE_APPLE_IEEE 0 -#define wxUSE_FILE 1 -#define wxUSE_FFILE 1 -#define wxUSE_TEXTFILE 0 -#define wxUSE_INTL 0 -#define wxUSE_MENUS 0 // was 1 -#define wxUSE_TOOLBAR 1 -#define wxUSE_TOOLBAR_NATIVE 0 -#define wxUSE_TOOLBAR_SIMPLE 0 -#define wxUSE_NOTEBOOK 1 -#define wxUSE_FONTMAP 0 -#define wxUSE_MIMETYPE 0 -#define wxUSE_IMAGE 1 -#define wxUSE_SYSTEM_OPTIONS 1 - -#define wxUSE_CONTROLS 1 -#define wxUSE_POPUPWIN 1 -#define wxUSE_TIPWINDOW 1 -#define wxUSE_BUTTON 1 -#define wxUSE_BMPBUTTON 1 -#define wxUSE_CALENDARCTRL 0 -#define wxUSE_CARET 1 -#define wxUSE_CHECKBOX 1 -#define wxUSE_CHECKLISTBOX 1 -#define wxUSE_CHOICE 0 -#define wxUSE_COMBOBOX 0 // was 1 -#define wxUSE_GAUGE 1 -#define wxUSE_IMAGLIST 1 -#define wxUSE_LISTBOX 1 -#define wxUSE_LISTCTRL 0 -#define wxUSE_RADIOBOX 1 -#define wxUSE_RADIOBTN 1 -#define wxUSE_SASH 0 -#define wxUSE_SCROLLBAR 1 -#define wxUSE_SLIDER 1 -#define wxUSE_SPINBTN 1 -#define wxUSE_SPINCTRL 1 -#define wxUSE_STATBOX 1 -#define wxUSE_STATLINE 1 -#define wxUSE_STATTEXT 1 -#define wxUSE_STATBMP 1 -#define wxUSE_STATUSBAR 1 -#define wxUSE_TEXTCTRL 1 -#define wxUSE_TOOLTIPS 0 -#define wxUSE_TREECTRL 0 - -#define wxUSE_NATIVE_STATUSBAR 0 -#define wxUSE_BUTTONBAR 0 -#define wxUSE_GRID 0 -#define wxUSE_NEW_GRID 0 -#define wxUSE_VALIDATORS 0 -#define wxUSE_DC_CACHEING 0 -#define wxUSE_ACCEL 1 -#define wxUSE_GENERIC_DIALOGS_IN_MSW 0 -#define wxUSE_COMMON_DIALOGS 0 -#define wxUSE_TEXTDLG 0 -#define wxUSE_PROGRESSDLG 0 -#define wxUSE_BUSYINFO 0 -#define wxUSE_DIRDLG 0 -#define wxUSE_FONTDLG 0 -#define wxUSE_FILEDLG 0 -#define wxUSE_FILEDLG 0 -#define wxUSE_COLOURDLG 0 -#define wxUSE_CHOICEDLG 0 -#define wxUSE_NUMBERDLG 1 -#define wxUSE_STARTUP_TIPS 0 -#define wxUSE_MSGDLG 1 -#define wxUSE_SPLITTER 1 -#define wxUSE_TAB_DIALOG 0 - -#define wxUSE_JOYSTICK 0 -#define wxUSE_METAFILE 0 -#define wxUSE_ENH_METAFILE 0 -#define wxUSE_WIN_METAFILES_ALWAYS 0 -#define wxUSE_DOC_VIEW_ARCHITECTURE 0 -#define wxUSE_MDI_ARCHITECTURE 0 -#define wxUSE_PRINTING_ARCHITECTURE 0 -#define wxUSE_HTML 0 -#define wxUSE_PLOT 0 -#define wxUSE_GLCANVAS 0 -#define wxUSE_TREELAYOUT 0 -#define wxUSE_IPC 0 -#define wxUSE_HELP 0 -#define wxUSE_MS_HTML_HELP 0 -#define wxUSE_RESOURCES 0 -#define wxUSE_CONSTRAINTS 1 -#define wxUSE_CLIPBOARD 0 -#define wxUSE_DATAOBJ 1 -#define wxUSE_SPLINES 0 -#define wxUSE_DRAG_AND_DROP 0 -#define wxUSE_XPM_IN_MSW 1 -#define wxUSE_XPM 1 -#define wxUSE_IMAGE_LOADING_IN_MSW 1 -#define wxUSE_RESOURCE_LOADING_IN_MSW 0 -#define wxUSE_WX_RESOURCES 0 -#define wxUSE_POSTSCRIPT 0 -#define wxUSE_AFM_FOR_POSTSCRIPT 0 -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0 -#define wxUSE_ODBC 0 -#define wxODBC_FWD_ONLY_CURSORS 0 -#define wxODBC_BACKWARD_COMPATABILITY 0 -#define REMOVE_UNUSED_ARG 1 -#define wxUSE_IOSTREAMH 0 - -#define wxUSE_ICO_CUR 1 - -#define wxUSE_MFC 0 -#define wxUSE_OLE 0 -#define wxUSE_CTL3D 0 -#define wxUSE_ITSY_BITSY 0 -#define wxUSE_DYNAMIC_CLASSES 1 - - -#elif defined(__WXPM__) - -#define wxUSE_GUI 1 -#define WXWIN_COMPATIBILITY 0 -#define wxICON_IS_BITMAP 0 -#define wxFONT_SIZE_COMPATIBILITY 0 -#define wxDIALOG_UNIT_COMPATIBILITY 0 -#define wxUSE_DEBUG_CONTEXT 0 -#define wxUSE_MEMORY_TRACING 0 -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 -#define wxUSE_DEBUG_NEW_ALWAYS 0 -#define wxUSE_ON_FATAL_EXCEPTION 0 - -#define wxUSE_UNICODE 0 -#define wxUSE_WCHAR_T 0 -#define wxUSE_LOG 1 -#define wxUSE_LOGGUI 1 -#define wxUSE_LOGWINDOW 1 -#define wxUSE_LOG_DIALOG 0 -#define wxUSE_THREADS 0 -#define wxUSE_STREAMS 0 -#define wxUSE_STD_IOSTREAM 0 -#define wxUSE_SERIAL 0 -#define wxUSE_LONGLONG 1 -#define wxUSE_TIMER 1 -#define wxUSE_STOPWATCH 1 -#define wxUSE_TIMEDATE 0 -#define wxUSE_DATETIME 1 -#define wxUSE_CONFIG 0 -#define wxUSE_CONFIG_NATIVE 0 -#define wxUSE_DIALUP_MANAGER 0 -#define wxUSE_DYNLIB_CLASS 0 -#define wxUSE_SOCKETS 0 -#define wxUSE_FILESYSTEM 0 -#define wxUSE_FS_ZIP 0 -#define wxUSE_FS_INET 0 -#define wxUSE_ZIPSTREAM 0 -#define wxUSE_ZLIB 0 -#define wxUSE_APPLE_IEEE 0 -#define wxUSE_FILE 1 -#define wxUSE_FFILE 1 -#define wxUSE_TEXTFILE 0 -#define wxUSE_INTL 0 -#define wxUSE_MENUS 1 -#define wxUSE_TOOLBAR 1 -#define wxUSE_TOOLBAR_NATIVE 0 -#define wxUSE_TOOLBAR_SIMPLE 0 -#define wxUSE_NOTEBOOK 1 -#define wxUSE_FONTMAP 0 -#define wxUSE_MIMETYPE 0 -#define wxUSE_IMAGE 1 -#define wxUSE_SYSTEM_OPTIONS 1 - -#define wxUSE_CONTROLS 1 -#define wxUSE_POPUPWIN 1 -#define wxUSE_TIPWINDOW 1 -#define wxUSE_BUTTON 1 -#define wxUSE_BMPBUTTON 1 -#define wxUSE_CALENDARCTRL 0 -#define wxUSE_CARET 1 -#define wxUSE_CHECKBOX 1 -#define wxUSE_CHECKLISTBOX 1 -#define wxUSE_CHOICE 0 -#define wxUSE_COMBOBOX 1 -#define wxUSE_GAUGE 1 -#define wxUSE_IMAGLIST 1 -#define wxUSE_LISTBOX 1 -#define wxUSE_LISTCTRL 0 -#define wxUSE_RADIOBOX 1 -#define wxUSE_RADIOBTN 1 -#define wxUSE_SASH 0 -#define wxUSE_SCROLLBAR 1 -#define wxUSE_SLIDER 1 -#define wxUSE_SPINBTN 1 -#define wxUSE_SPINCTRL 1 -#define wxUSE_STATBOX 1 -#define wxUSE_STATLINE 1 -#define wxUSE_STATTEXT 1 -#define wxUSE_STATBMP 1 -//#define wxUSE_STATUSBAR 0 -#define wxUSE_TEXTCTRL 1 -#define wxUSE_TOOLTIPS 0 -#define wxUSE_TREECTRL 0 - -#define wxUSE_NATIVE_STATUSBAR 0 -#define wxUSE_BUTTONBAR 0 -#define wxUSE_GRID 0 -#define wxUSE_NEW_GRID 0 -#define wxUSE_VALIDATORS 0 -#define wxUSE_DC_CACHEING 1 -#define wxUSE_ACCEL 1 -#define wxUSE_GENERIC_DIALOGS_IN_MSW 0 -#define wxUSE_COMMON_DIALOGS 0 -#define wxUSE_TEXTDLG 0 -#define wxUSE_PROGRESSDLG 0 -#define wxUSE_BUSYINFO 0 -#define wxUSE_DIRDLG 0 -#define wxUSE_FONTDLG 0 -#define wxUSE_FILEDLG 0 -#define wxUSE_COLOURDLG 0 -#define wxUSE_TEXTDLG 0 -#define wxUSE_CHOICEDLG 0 -#define wxUSE_NUMBERDLG 0 -#define wxUSE_STARTUP_TIPS 0 -#define wxUSE_MSGDLG 1 -#define wxUSE_SPLITTER 1 -#define wxUSE_TAB_DIALOG 0 - -#define wxUSE_METAFILE 0 -#define wxUSE_ENH_METAFILE 0 -#define wxUSE_WIN_METAFILES_ALWAYS 0 -#define wxUSE_DOC_VIEW_ARCHITECTURE 0 -#define wxUSE_MDI_ARCHITECTURE 0 -#define wxUSE_PRINTING_ARCHITECTURE 0 -#define wxUSE_HTML 0 -#define wxUSE_PLOT 0 -#define wxUSE_GLCANVAS 0 -#define wxUSE_TREELAYOUT 0 -#define wxUSE_IPC 0 -#define wxUSE_HELP 0 -#define wxUSE_MS_HTML_HELP 0 -#define wxUSE_WXHTML_HELP 0 -#define wxUSE_RESOURCES 0 -#define wxUSE_CONSTRAINTS 1 -#define wxUSE_CLIPBOARD 0 -#define wxUSE_DATAOBJ 1 -#define wxUSE_SPLINES 0 -#define wxUSE_DRAG_AND_DROP 0 -#define wxUSE_XPM_IN_MSW 1 -#define wxUSE_XPM 1 -#define wxUSE_IMAGE_LOADING_IN_MSW 1 -#define wxUSE_RESOURCE_LOADING_IN_MSW 0 -#define wxUSE_WX_RESOURCES 0 -#define wxUSE_POSTSCRIPT 0 -#define wxUSE_AFM_FOR_POSTSCRIPT 0 -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0 -#define wxUSE_ODBC 0 -#define wxODBC_FWD_ONLY_CURSORS 0 -#define wxODBC_BACKWARD_COMPATABILITY 0 -#define REMOVE_UNUSED_ARG 1 -#define wxUSE_IOSTREAMH 0 - -#define wxUSE_ICO_CUR 1 - -#define wxUSE_MFC 0 -#define wxUSE_OLE 0 -#define wxUSE_CTL3D 0 -#define wxUSE_ITSY_BITSY 0 -#define wxUSE_DYNAMIC_CLASSES 1 - -#define wxUSE_JOYSTICK 1 -#define wxUSE_REGEX 0 -#define wxUSE_STATUSBAR 1 - -#else // !Mac, !OS2 - -#define wxUSE_GUI 1 -#define WXWIN_COMPATIBILITY 0 -#define wxICON_IS_BITMAP 0 -#define wxFONT_SIZE_COMPATIBILITY 0 -#define wxDIALOG_UNIT_COMPATIBILITY 0 -#define wxUSE_DEBUG_CONTEXT 0 -#define wxUSE_MEMORY_TRACING 0 -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 -#define wxUSE_DEBUG_NEW_ALWAYS 0 -#define wxUSE_ON_FATAL_EXCEPTION 0 -#define wxUSE_REGEX 0 - -#define wxUSE_UNICODE 0 -#define wxUSE_WCHAR_T 0 -#define wxUSE_LOG 1 -#define wxUSE_LOGGUI 1 -#define wxUSE_LOGWINDOW 1 -#define wxUSE_LOG_DIALOG 0 -#define wxUSE_THREADS 0 -#define wxUSE_STREAMS 0 -#define wxUSE_STD_IOSTREAM 0 -#define wxUSE_SERIAL 0 -#define wxUSE_LONGLONG 1 -#define wxUSE_TIMER 1 -#define wxUSE_STOPWATCH 1 -#define wxUSE_TIMEDATE 0 -#define wxUSE_DATETIME 1 -#define wxUSE_CONFIG 0 -#define wxUSE_CONFIG_NATIVE 0 -#define wxUSE_DIALUP_MANAGER 0 -#define wxUSE_DYNLIB_CLASS 0 -#define wxUSE_SOCKETS 0 -#define wxUSE_FILESYSTEM 0 -#define wxUSE_FS_ZIP 0 -#define wxUSE_FS_INET 0 -#define wxUSE_ZIPSTREAM 0 -#define wxUSE_ZLIB 0 -#define wxUSE_APPLE_IEEE 0 -#define wxUSE_FILE 1 -#define wxUSE_FFILE 1 -#define wxUSE_TEXTFILE 0 -#define wxUSE_TEXTBUFFER 0 -#define wxUSE_INTL 0 -#define wxUSE_MENUS 1 -#define wxUSE_TOOLBAR 1 -#define wxUSE_TOOLBAR_NATIVE 0 -#define wxUSE_TOOLBAR_SIMPLE 0 -#define wxUSE_NOTEBOOK 1 -#define wxUSE_FONTMAP 0 -#define wxUSE_MIMETYPE 0 -#define wxUSE_IMAGE 1 -#define wxUSE_SYSTEM_OPTIONS 1 - -#define wxUSE_CONTROLS 1 -#define wxUSE_POPUPWIN 1 -#define wxUSE_TIPWINDOW 1 -#define wxUSE_BUTTON 1 -#define wxUSE_BMPBUTTON 1 -#define wxUSE_CALENDARCTRL 0 -#define wxUSE_CARET 1 -#define wxUSE_CHECKBOX 1 -#define wxUSE_CHECKLISTBOX 1 -#define wxUSE_CHOICE 0 -#define wxUSE_COMBOBOX 1 -#define wxUSE_GAUGE 1 -#define wxUSE_IMAGLIST 1 -#define wxUSE_LISTBOX 1 -#define wxUSE_LISTCTRL 0 -#define wxUSE_RADIOBOX 1 -#define wxUSE_RADIOBTN 1 -#define wxUSE_SASH 0 -#define wxUSE_SCROLLBAR 1 -#define wxUSE_SLIDER 1 -#define wxUSE_SPINBTN 1 -#define wxUSE_SPINCTRL 1 -#define wxUSE_STATBOX 1 -#define wxUSE_STATLINE 1 -#define wxUSE_STATTEXT 1 -#define wxUSE_STATBMP 1 -#define wxUSE_STATUSBAR 1 -#define wxUSE_TEXTCTRL 1 -#define wxUSE_TOOLTIPS 0 -#define wxUSE_TREECTRL 0 - -#define wxUSE_NATIVE_STATUSBAR 0 -#define wxUSE_BUTTONBAR 0 -#define wxUSE_GRID 0 -#define wxUSE_NEW_GRID 0 -#define wxUSE_VALIDATORS 0 -#define wxUSE_DC_CACHEING 1 -#define wxUSE_ACCEL 1 -#define wxUSE_GENERIC_DIALOGS_IN_MSW 0 -#define wxUSE_COMMON_DIALOGS 0 -#define wxUSE_TEXTDLG 0 -#define wxUSE_PROGRESSDLG 0 -#define wxUSE_BUSYINFO 0 -#define wxUSE_DIRDLG 0 -#define wxUSE_FONTDLG 0 -#define wxUSE_FILEDLG 0 -#define wxUSE_COLOURDLG 0 -#define wxUSE_TEXTDLG 0 -#define wxUSE_CHOICEDLG 0 -#define wxUSE_NUMBERDLG 1 -#define wxUSE_STARTUP_TIPS 0 -#define wxUSE_MSGDLG 1 -#define wxUSE_SPLITTER 1 -#define wxUSE_TAB_DIALOG 0 - -#define wxUSE_SPLASH 1 -#define wxUSE_JOYSTICK 0 -#define wxUSE_METAFILE 0 -#define wxUSE_ENH_METAFILE 0 -#define wxUSE_WIN_METAFILES_ALWAYS 0 -#define wxUSE_DOC_VIEW_ARCHITECTURE 0 -#define wxUSE_MDI_ARCHITECTURE 0 -#define wxUSE_PRINTING_ARCHITECTURE 0 -#define wxUSE_HTML 0 -#define wxUSE_PLOT 0 -#define wxUSE_GLCANVAS 0 -#define wxUSE_TREELAYOUT 0 -#define wxUSE_IPC 0 -#define wxUSE_HELP 0 -#define wxUSE_MS_HTML_HELP 0 -#define wxUSE_WXHTML_HELP 0 -#define wxUSE_RESOURCES 0 -#define wxUSE_CONSTRAINTS 1 -#define wxUSE_CLIPBOARD 0 -#define wxUSE_DATAOBJ 1 -#define wxUSE_SPLINES 0 -#define wxUSE_DRAG_AND_DROP 0 -#define wxUSE_XPM_IN_MSW 1 -#define wxUSE_XPM 1 -#define wxUSE_IMAGE_LOADING_IN_MSW 1 -#define wxUSE_RESOURCE_LOADING_IN_MSW 0 -#define wxUSE_WX_RESOURCES 0 -#define wxUSE_POSTSCRIPT 0 -#define wxUSE_AFM_FOR_POSTSCRIPT 0 -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0 -#define wxUSE_ODBC 0 -#define wxODBC_FWD_ONLY_CURSORS 0 -#define wxODBC_BACKWARD_COMPATABILITY 0 -#define REMOVE_UNUSED_ARG 1 -#define wxUSE_IOSTREAMH 0 -#define wxUSE_LIBPNG 0 -#define wxUSE_LIBJPEG 0 -#define wxUSE_LIBTIFF 0 -#define wxUSE_GIF 0 -#define wxUSE_PNM 0 -#define wxUSE_PCX 0 - -#define wxUSE_ICO_CUR 1 - -#define wxUSE_MFC 0 -#define wxUSE_OLE 0 -#define wxUSE_CTL3D 0 -#define wxUSE_ITSY_BITSY 0 -#define wxUSE_DYNAMIC_CLASSES 1 - -#endif - -#define wxUSE_PALETTE 0 - -#define wxUSE_LIBPNG 0 -#define wxUSE_LIBJPEG 0 -#define wxUSE_LIBTIFF 0 -#define wxUSE_IFF 0 -#define wxUSE_GIF 0 -#define wxUSE_PNM 0 -#define wxUSE_PCX 0 - -#endif // _WX_UNIV_SETUP_H_ diff --git a/include/wx/univ/setup0.h b/include/wx/univ/setup0.h new file mode 100644 index 0000000000..0f3bf313d9 --- /dev/null +++ b/include/wx/univ/setup0.h @@ -0,0 +1,1322 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/univ/setup.h +// Purpose: configuration settings for wxUniversal/MSW +// Author: Vadim Zeitlin +// Modified by: +// Created: 14.08.00 +// RCS-ID: $Id$ +// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) +// Licence: wxWindows license +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_UNIV_SETUP_H_ +#define _WX_UNIV_SETUP_H_ + +// ---------------------------------------------------------------------------- +// global settings +// ---------------------------------------------------------------------------- + +// define this to 0 when building wxBase library - this can also be done from +// makefile/project file overriding the value here +#ifndef wxUSE_GUI + #define wxUSE_GUI 1 +#endif // wxUSE_GUI + +// ---------------------------------------------------------------------------- +// compatibility settings +// ---------------------------------------------------------------------------- + +// This setting determines the compatibility with 1.68 API: +// Level 0: no backward compatibility, all new features +// Level 1: some extra methods are defined for compatibility. +// +// Default is 0. +// +// Recommended setting: 0 (in fact the compatibility code is now very minimal +// so there is little advantage to setting it to 1. +#define WXWIN_COMPATIBILITY 0 + +// This setting determines the compatibility with 2.0 API: set it to 1 to +// enable it +// +// Default is 0. +// +// Recommended setting: 0 (please update your code instead!) +#define WXWIN_COMPATIBILITY_2 0 + +// This setting determines the compatibility with 2.0 API: set it to 1 to +// enable it +// +// Default is 1. +// +// Recommended setting: 0 (please update your code instead!) +#define WXWIN_COMPATIBILITY_2_2 0 + +// in wxMSW version 2.1.11 and earlier, wxIcon always derives from wxBitmap, +// but this is very dangerous because you can mistakenly pass an icon instead +// of a bitmap to a function taking "const wxBitmap&" - which will *not* work +// because an icon is not a valid bitmap +// +// Starting from 2.1.12, you have the choice under this backwards compatible +// behaviour (your code will still compile, but probably won't behave as +// expected!) and not deriving wxIcon class from wxBitmap, but providing a +// conversion ctor wxBitmap(const wxIcon&) instead. +// +// Recommended setting: 0 +#define wxICON_IS_BITMAP 0 + +// Define as 1 for font size to be backward compatible to 1.63 and earlier. +// 1.64 and later define point sizes to be compatible with Windows. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxFONT_SIZE_COMPATIBILITY 0 + +// Set to 0 for accurate dialog units, else 1 to be as per 2.1.16 and before. +// If migrating between versions, your dialogs may seem to shrink. +// +// Default is 1 +// +// Recommended setting: 0 (the new calculations are more correct!) +#define wxDIALOG_UNIT_COMPATIBILITY 0 + +// ---------------------------------------------------------------------------- +// debugging settings +// ---------------------------------------------------------------------------- + +// Generic comment about debugging settings: they are very useful if you don't +// use any other memory leak detection tools such as Purify/BoundsChecker, but +// are probably redundant otherwise. Also, Visual C++ CRT has the same features +// as wxWindows memory debugging subsystem built in since version 5.0 and you +// may prefer to use it instead of built in memory debugging code because it is +// faster and more fool proof. +// +// Using VC++ CRT memory debugging is enabled by default in debug mode +// (__WXDEBUG__) if wxUSE_GLOBAL_MEMORY_OPERATORS is *not* enabled (i.e. is 0) +// and if __NO_VC_CRTDBG__ is not defined. + +// If 1, enables wxDebugContext, for writing error messages to file, etc. If +// __WXDEBUG__ is not defined, will still use the normal memory operators. +// +// Default is 0 +// +// Recommended setting: 0 +#ifdef __MWERKS__ + #define wxUSE_DEBUG_CONTEXT 1 +#else + #define wxUSE_DEBUG_CONTEXT 0 +#endif + +// If 1, enables debugging versions of wxObject::new and wxObject::delete *IF* +// __WXDEBUG__ is also defined. +// +// WARNING: this code may not work with all architectures, especially if +// alignment is an issue. This switch is currently ignored for mingw / cygwin +// +// Default is 0 +// +// Recommended setting: 1 if you are not using a memory debugging tool, else 0 +#define wxUSE_MEMORY_TRACING 0 + +// In debug mode, cause new and delete to be redefined globally. +// If this causes problems (e.g. link errors which is a common problem +// especially if you use another library which also redefines the global new +// and delete), set this to 0. +// This switch is currently ignored for mingw / cygwin +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 + +// In debug mode, causes new to be defined to be WXDEBUG_NEW (see object.h). If +// this causes problems (e.g. link errors), set this to 0. You may need to set +// this to 0 if using templates (at least for VC++). This switch is currently +// ignored for mingw / cygwin / CodeWarrior +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_DEBUG_NEW_ALWAYS 0 + +// wxHandleFatalExceptions() may be used to catch the program faults at run +// time and, instead of terminating the program with a usual GPF message box, +// call the user-defined wxApp::OnFatalException() function. If you set +// wxUSE_ON_FATAL_EXCEPTION to 0, wxHandleFatalExceptions() will not work. +// +// This setting is for Win32 only and can only be enabled if your compiler +// supports Win32 structured exception handling (currently only VC++ does) +// +// Default is 1 +// +// Recommended setting: 1 if your compiler supports it. +#ifdef _MSC_VER + #define wxUSE_ON_FATAL_EXCEPTION 1 +#else + #define wxUSE_ON_FATAL_EXCEPTION 0 +#endif + +// ---------------------------------------------------------------------------- +// Unicode support +// ---------------------------------------------------------------------------- + +// Set wxUSE_UNICODE to 1 to compile wxWindows in Unicode mode: wxChar will be +// defined as wchar_t, wxString will use Unicode internally. If you set this +// to 1, you must use wxT() macro for all literal strings in the program. +// +// Unicode is currently only fully supported under Windows NT/2000/XP (Windows 9x +// doesn't support it and the programs compiled in Unicode mode will not run +// under 9x). +// +// Default is 0 +// +// Recommended setting: 0 (unless you only plan to use Windows NT/2000/XP) +#define wxUSE_UNICODE 0 + +// Set wxUSE_UNICODE_MSLU to 1 if you want to compile wxWindows in Unicode mode +// and be able to run compiled apps under Windows 9x as well as NT/2000/XP. This +// setting enables use of unicows.dll from MSLU (MS Layer for Unicode, see +// http://www.microsoft.com/globaldev/Articles/mslu_announce.asp). Note that you +// will have to modify the makefiles to include unicows.lib import library as the first +// library (if you use MSVC, you can run the makefile with "nmake MSLU=1 UNICODE=1" +// command). +// +// If your compiler doesn't have unicows.lib, you can get a version of it at +// http://libunicows.sourceforge.net +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_UNICODE_MSLU 0 + +// Setting wxUSE_WCHAR_T to 1 gives you some degree of Unicode support without +// compiling the program in Unicode mode. More precisely, it will be possible +// to construct wxString from a wide (Unicode) string and convert any wxString +// to Unicode. +// +// Default is 1 +// +// Recommended setting: 1 for win32 else 0 +#if defined(__WIN32__) + #define wxUSE_WCHAR_T 1 +#else + #define wxUSE_WCHAR_T 0 +#endif + +// ---------------------------------------------------------------------------- +// global features +// ---------------------------------------------------------------------------- + +// Support for message/error logging. This includes wxLogXXX() functions and +// wxLog and derived classes. Don't set this to 0 unless you really know what +// you are doing. +// +// Default is 1 +// +// Recommended setting: 1 (always) +#define wxUSE_LOG 1 + +// Support for command line parsing using wxCmdLineParser class. +// +// Default is 1 +// +// Recommended setting: 1 (can be set to 0 if you don't use the cmd line) +#define wxUSE_CMDLINE_PARSER 1 + +// Recommended setting: 1 +#define wxUSE_LOGWINDOW 1 + +// Recommended setting: 1 +#define wxUSE_LOGGUI 1 + +// Recommended setting: 1 +#define wxUSE_LOG_DIALOG 1 + +// Support for multithreaded applications: if 1, compile in thread classes +// (thread.h) and make the library a bit more thread safe. Although thread +// support is quite stable by now, you may still consider recompiling the +// library without it if you have no use for it - this will result in a +// somewhat smaller and faster operation. +// +// This is ignored under Win16, threads are only supported under Win32. +// +// Default is 1 +// +// Recommended setting: 0 unless you do plan to develop MT applications +#define wxUSE_THREADS 1 + +// If enabled (1), compiles wxWindows streams classes +#define wxUSE_STREAMS 1 + +// Use standard C++ streams if 1. If 0, use wxWin streams implementation. +#ifdef __MWERKS__ + #define wxUSE_STD_IOSTREAM 1 +#else + #define wxUSE_STD_IOSTREAM 0 +#endif + +// ---------------------------------------------------------------------------- +// non GUI features selection +// ---------------------------------------------------------------------------- + +// Set wxUSE_LONGLONG to 1 to compile the wxLongLong class. This is a 64 bit +// integer which is implemented in terms of native 64 bit integers if any or +// uses emulation otherwise. +// +// This class is required by wxDateTime and so you should enable it if you want +// to use wxDateTime. For most modern platforms, it will use the native 64 bit +// integers in which case (almost) all of its functions are inline and it +// almost does not take any space, so there should be no reason to switch it +// off. +// +// Recommended setting: 1 +#define wxUSE_LONGLONG 1 + +// Set wxUSE_(F)FILE to 1 to compile wx(F)File classes. wxFile uses low level +// POSIX functions for file access, wxFFile uses ANSI C stdio.h functions. +// +// Default is 1 +// +// Recommended setting: 1 (wxFile is highly recommended as it is required by +// i18n code, wxFileConfig and others) +#define wxUSE_FILE 1 +#define wxUSE_FFILE 1 + +// Use wxFSVolume class providing access to the configured/active mount points +// +// Default is 1 +// +// Recommended setting: 1 (but may be safely disabled if you don't use it) +#define wxUSE_FSVOLUME 1 + +// use wxTextBuffer class: required by wxTextFile +#define wxUSE_TEXTBUFFER 1 + +// use wxTextFile class: requires wxFile and wxTextBuffer, required by +// wxFileConfig +#define wxUSE_TEXTFILE 1 + +// i18n support: _() macro, wxLocale class. Requires wxTextFile. +#define wxUSE_INTL 1 + +// Set wxUSE_DATETIME to 1 to compile the wxDateTime and related classes which +// allow to manipulate dates, times and time intervals. wxDateTime replaces the +// old wxTime and wxDate classes which are still provided for backwards +// compatibility (and implemented in terms of wxDateTime). +// +// Note that this class is relatively new and is still officially in alpha +// stage because some features are not yet (fully) implemented. It is already +// quite useful though and should only be disabled if you are aiming at +// absolutely minimal version of the library. +// +// Requires: wxUSE_LONGLONG +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_DATETIME 1 + +// wxUSE_TIMEDATE enables compilation of the old wxDate and wxTime classes (not +// the same as wxDateTime!). These classes are obsolete and shouldn't be used +// in new code +// +// Default is 0 +// +// Recommended setting: 0 unless you have legacy code which uses these classes +#define wxUSE_TIMEDATE 0 + +// Set wxUSE_TIMER to 1 to compile wxTimer class +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_TIMER 1 + +// Use wxStopWatch clas. +// +// Default is 1 +// +// Recommended setting: 1 (needed by wxSocket) +#define wxUSE_STOPWATCH 1 + +// Setting wxUSE_CONFIG to 1 enables the use of wxConfig and related classes +// which allow the application to store its settings in the persistent +// storage. Setting this to 1 will also enable on-demand creation of the +// global config object in wxApp. +// +// See also wxUSE_CONFIG_NATIVE below. +// +// Recommended setting: 1 +#define wxUSE_CONFIG 1 + +// If wxUSE_CONFIG is 1, you may choose to use either the native config +// classes under Windows (using .INI files under Win16 and the registry under +// Win32) or the portable text file format used by the config classes under +// Unix. +// +// Default is 1 to use native classes. Note that you may still use +// wxFileConfig even if you set this to 1 - just the config object created by +// default for the applications needs will be a wxRegConfig or wxIniConfig and +// not wxFileConfig. +// +// Recommended setting: 0 (universal should not use native) +#if defined(__WIN32__) + #define wxUSE_CONFIG_NATIVE 0 +#else + #define wxUSE_CONFIG_NATIVE 0 +#endif + +// If wxUSE_DIALUP_MANAGER is 1, compile in wxDialUpManager class which allows +// to connect/disconnect from the network and be notified whenever the dial-up +// network connection is established/terminated. Requires wxUSE_DYNAMIC_LOADER. +// +// Default is 1. +// +// Recommended setting: 1 +#if defined(__WIN32__) + #define wxUSE_DIALUP_MANAGER 1 +#else + #define wxUSE_DIALUP_MANAGER 0 +#endif + +// Compile in classes for run-time DLL loading and function calling. +// Required by wxUSE_DIALUP_MANAGER. +// +// This setting is for Win32 only +// +// Default is 1. +// +// Recommended setting: 1 +#if defined(__WIN32__) + #define wxUSE_DYNLIB_CLASS 1 +#else + #define wxUSE_DYNLIB_CLASS 0 +#endif + +// experimental, don't use for now +#if defined(__WIN32__) + #define wxUSE_DYNAMIC_LOADER 1 +#else + #define wxUSE_DYNAMIC_LOADER 0 +#endif + +// Set to 1 to use socket classes +#define wxUSE_SOCKETS 1 + +// Set to 1 to enable virtual file systems (required by wxHTML) +#define wxUSE_FILESYSTEM 1 + +// Set to 1 to enable virtual ZIP filesystem (requires wxUSE_FILESYSTEM) +#define wxUSE_FS_ZIP 1 + +// Set to 1 to compile wxZipInput/OutputStream classes. +#define wxUSE_ZIPSTREAM 1 + +// Set to 1 to compile wxZlibInput/OutputStream classes. Also required by +// wxUSE_LIBPNG. +#define wxUSE_ZLIB 1 + +// Set to 1 to enable virtual Internet filesystem (requires wxUSE_FILESYSTEM) +#define wxUSE_FS_INET 1 + +// If enabled, the code written by Apple will be used to write, in a portable +// way, float on the disk. See extended.c for the license which is different +// from wxWindows one. +// +// Default is 1. +// +// Recommended setting: 1 unless you don't like the license terms (unlikely) +#define wxUSE_APPLE_IEEE 1 + +// Joystick support class +#if defined(__WIN32__) + #define wxUSE_JOYSTICK 1 +#else + #define wxUSE_JOYSTICK 1 +#endif + +// wxFontMapper class +#define wxUSE_FONTMAP 1 + +// wxMimeTypesManager class +#define wxUSE_MIMETYPE 1 + +// wxProtocol and related classes: if you want to use either of wxFTP, wxHTTP +// or wxURL you need to set this to 1. +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_PROTOCOL 1 + +// Define this to use wxURL class. +#define wxUSE_URL 1 + +// The settings for the individual URL schemes +#define wxUSE_PROTOCOL_FILE 1 +#define wxUSE_PROTOCOL_FTP 1 +#define wxUSE_PROTOCOL_HTTP 1 + +// Support for regular expression matching via wxRegEx class: enable this to +// use POSIX regular expressions in your code. You need to compile regex +// library from src/regex to use it under Windows. +// +// Default is 0 +// +// Recommended setting: 1 if your compiler supports it, if it doesn't please +// contribute us a makefile for src/regex for it +#define wxUSE_REGEX 1 + +// wxSystemOptions class +#define wxUSE_SYSTEM_OPTIONS 1 + +// wxWave class +#if defined(__WIN32__) + #define wxUSE_WAVE 1 +#else + #define wxUSE_WAVE 1 +#endif + +// ---------------------------------------------------------------------------- +// Individual GUI controls +// ---------------------------------------------------------------------------- + +// You must set wxUSE_CONTROLS to 1 if you are using any controls at all +// (without it, wxControl class is not compiled) +// +// Default is 1 +// +// Recommended setting: 1 (don't change except for very special programs) +#define wxUSE_CONTROLS 1 + +// wxPopupWindow class is a top level transient window. It is currently used +// to implement wxTipWindow +// +// Default is 1 +// +// Recommended setting: 1 (may be set to 0 if you don't wxUSE_TIPWINDOW) +#define wxUSE_POPUPWIN 1 + +// wxTipWindow allows to implement the custom tooltips, it is used by the +// context help classes. Requires wxUSE_POPUPWIN. +// +// Default is 1 +// +// Recommended setting: 1 (may be set to 0) +#define wxUSE_TIPWINDOW 1 + +// 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 +// program (including any standard dialogs it can show!) doesn't need them and +// if you desperately want to save some space. If you use any of these you must +// set wxUSE_CONTROLS as well. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_BUTTON 1 // wxButton +#define wxUSE_BMPBUTTON 1 // wxBitmapButton +#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl +#define wxUSE_CHECKBOX 1 // wxCheckBox +#define wxUSE_CHECKLISTBOX 1 // wxCheckListBox +#define wxUSE_CHOICE 1 // wxChoice +#define wxUSE_COMBOBOX 1 // wxComboBox +#define wxUSE_GAUGE 1 // wxGauge +#define wxUSE_LISTBOX 1 // wxListBox +#define wxUSE_LISTCTRL 1 // wxListCtrl +#define wxUSE_RADIOBOX 1 // wxRadioBox +#define wxUSE_RADIOBTN 1 // wxRadioButton +#define wxUSE_SCROLLBAR 1 // wxScrollBar +#define wxUSE_SLIDER 1 // wxSlider +#define wxUSE_SPINBTN 1 // wxSpinButton +#define wxUSE_SPINCTRL 1 // wxSpinCtrl +#define wxUSE_STATBOX 1 // wxStaticBox +#define wxUSE_STATLINE 1 // wxStaticLine +#define wxUSE_STATTEXT 1 // wxStaticText +#define wxUSE_STATBMP 1 // wxStaticBitmap +#define wxUSE_TEXTCTRL 1 // wxTextCtrl +#define wxUSE_TOGGLEBTN 0 // requires wxButton //? not supported in generic and wrong in msw +#define wxUSE_TREECTRL 1 // wxTreeCtrl + +// Use a status bar class? Depending on the value of wxUSE_NATIVE_STATUSBAR +// below either wxStatusBar95 or a generic wxStatusBar will be used. +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_STATUSBAR 1 + +// Two status bar implementations are available under Win32: the generic one +// or the wrapper around native control. For native look and feel the native +// version should be used. +// +// Default is 0. +// +// Recommended setting: 0 +#define wxUSE_NATIVE_STATUSBAR 0 + +// wxToolBar related settings: if wxUSE_TOOLBAR is 0, don't compile any toolbar +// classes at all. Otherwise, use the native toolbar class unless +// wxUSE_TOOLBAR_NATIVE is 0. Additionally, the generic toolbar class which +// supports some features which might not be supported by the native wxToolBar +// class may be compiled in if wxUSE_TOOLBAR_SIMPLE is 1. +// +// Default is 0 for all settings. +// +// Recommended setting: 1 for wxUSE_TOOLBAR and 0 for wxUSE_TOOLBAR_NATIVE and +// wxUSE_TOOLBAR_SIMPLE. +#define wxUSE_TOOLBAR 1 +#define wxUSE_TOOLBAR_NATIVE 0 +#define wxUSE_TOOLBAR_SIMPLE 0 + +// this setting is obsolete, value is ignored +#define wxUSE_BUTTONBAR 0 + +// wxNotebook is a control with several "tabs" located on one of its sides. It +// may be used ot logically organise the data presented to the user instead of +// putting everything in one huge dialog. It replaces wxTabControl and related +// classes of wxWin 1.6x. +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_NOTEBOOK 1 + +// wxTabDialog is a generic version of wxNotebook but it is incompatible with +// the new class. It shouldn't be used in new code. +// +// Default is 0. +// +// Recommended setting: 0 (use wxNotebook) +#define wxUSE_TAB_DIALOG 0 + +// wxGrid class comes in two flavours: the original (pre wxWin 2.2) one and +// the new, much imporved and enhanced version. The new version is backwards +// compatible with the old one and should be used whenever possible, i.e. if +// you set wxUSE_GRID to 1, set wxUSE_NEW_GRID to 1 too. +// +// Default is 1 for both options. +// +// Recommended setting: 1 for wxUSE_NEW_GRID, 0 if you have an old code using +// wxGrid and 100% backwards compatibality (with all old wxGrid quirks) is +// essential. +// +// WIN16/BC++ resets wxUSE_NEW_GRID to 0 because it exceeds the data limit. +#define wxUSE_GRID 1 +#define wxUSE_NEW_GRID 1 + +// wxProperty[Value/Form/List] classes, used by Dialog Editor +#define wxUSE_PROPSHEET 1 + +// ---------------------------------------------------------------------------- +// Miscellaneous GUI stuff +// ---------------------------------------------------------------------------- + +// wxAcceleratorTable/Entry classes and support for them in wxMenu(Bar) +#define wxUSE_ACCEL 1 + +// Use wxCaret: a class implementing a "cursor" in a text control (called caret +// under Windows). +// +// Default is 1. +// +// Recommended setting: 1 (can be safely set to 0, not used by the library) +#define wxUSE_CARET 1 + +// Miscellaneous geometry code: needed for Canvas library +#define wxUSE_GEOMETRY 0 + +// Use wxImageList. This class is needed by wxNotebook, wxTreeCtrl and +// wxListCtrl. +// +// Default is 1. +// +// Recommended setting: 1 (set it to 0 if you don't use any of the controls +// enumerated above, then this class is mostly useless too) +#define wxUSE_IMAGLIST 1 + +// Use wxMenu, wxMenuBar, wxMenuItem. +// +// Default is 1. +// +// Recommended setting: 1 (can't be disabled under MSW) +#define wxUSE_MENUS 1 + +// Use wxSashWindow class. +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_SASH 1 + +// Use wxSplitterWindow class. +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_SPLITTER 1 + +// Use wxToolTip and wxWindow::Set/GetToolTip() methods. +// +// Default is 1. +// +// Recommended setting: 1 +#ifdef __WIN32__ + #define wxUSE_TOOLTIPS 1 +#else + #define wxUSE_TOOLTIPS 0 +#endif + +// wxValidator class and related methods +#define wxUSE_VALIDATORS 1 + +// wxDC cacheing implementation +#define wxUSE_DC_CACHEING 1 + +// ---------------------------------------------------------------------------- +// common dialogs +// ---------------------------------------------------------------------------- + +// Define 1 to use generic dialogs in Windows, even though they duplicate +// native common dialog (e.g. wxColourDialog). This is mainly useful for +// testing. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_GENERIC_DIALOGS_IN_MSW 0 + +// On rare occasions (e.g. using DJGPP) may want to omit common dialogs (e.g. +// file selector, printer dialog). Switching this off also switches off the +// printing architecture and interactive wxPrinterDC. +// +// Default is 1 +// +// Recommended setting: 1 (unless it really doesn't work) +#define wxUSE_COMMON_DIALOGS 1 + +// wxBusyInfo displays window with message when app is busy. Works in same way +// as wxBusyCursor +#define wxUSE_BUSYINFO 1 + +// Use single/multiple choice dialogs. +// +// Default is 1 +// +// Recommended setting: 1 (used in the library itself) +#define wxUSE_CHOICEDLG 1 + +// Use colour picker dialog +// +// Default is 1 +// +// Recommended setting: 1 +#define wxUSE_COLOURDLG 1 + +// wxDirDlg class for getting a directory name from user +#define wxUSE_DIRDLG 1 + +// TODO: setting to choose the generic or native one + +// Use file open/save dialogs. +// +// Default is 1 +// +// Recommended setting: 1 (used in many places in the library itself) +#if defined(__WIN32__) + #define wxUSE_FILEDLG 1 +#else + #define wxUSE_FILEDLG 1 +#endif + +// Use find/replace dialogs. +// +// Default is 1 +// +// Recommended setting: 1 (but may be safely set to 0) +#define wxUSE_FINDREPLDLG 1 + +// Use font picker dialog +// +// Default is 1 +// +// Recommended setting: 1 (used in the library itself) +#define wxUSE_FONTDLG 1 + +// Use wxMessageDialog and wxMessageBox. +// +// Default is 1 +// +// Recommended setting: 1 (used in the library itself) +#define wxUSE_MSGDLG 1 + +// progress dialog class for lengthy operations +#define wxUSE_PROGRESSDLG 1 + +// support for startup tips (wxShowTip &c) +#define wxUSE_STARTUP_TIPS 1 + +// text entry dialog and wxGetTextFromUser function +#define wxUSE_TEXTDLG 1 + +// number entry dialog +#define wxUSE_NUMBERDLG 1 + +// splash screen class +#define wxUSE_SPLASH 1 + +// wizards +#define wxUSE_WIZARDDLG 0 //? error '_wxArraywxArrayPages' redefinition + +// ---------------------------------------------------------------------------- +// Metafiles support +// ---------------------------------------------------------------------------- + +// Windows supports the graphics format known as metafile which is, though not +// portable, is widely used under Windows and so is supported by wxWin (under +// Windows only, of course). Win16 (Win3.1) used the so-called "Window +// MetaFiles" or WMFs which were replaced with "Enhanced MetaFiles" or EMFs in +// Win32 (Win9x, NT, 2000). Both of these are supported in wxWin and, by +// default, WMFs will be used under Win16 and EMFs under Win32. This may be +// changed by setting wxUSE_WIN_METAFILES_ALWAYS to 1 and/or setting +// wxUSE_ENH_METAFILE to 0. You may also set wxUSE_METAFILE to 0 to not compile +// in any metafile related classes at all. +// +// Default is 1 for wxUSE_ENH_METAFILE and 0 for wxUSE_WIN_METAFILES_ALWAYS. +// +// Recommended setting: default or 0 for everything for portable programs. +#define wxUSE_METAFILE 0 +#define wxUSE_ENH_METAFILE 0 +#define wxUSE_WIN_METAFILES_ALWAYS 0 + +// ---------------------------------------------------------------------------- +// Big GUI components +// ---------------------------------------------------------------------------- + +// Set to 0 to disable document/view architecture +#define wxUSE_DOC_VIEW_ARCHITECTURE 1 + +// Set to 0 to disable MDI document/view architecture +#define wxUSE_MDI_ARCHITECTURE 1 + +// Set to 0 to disable print/preview architecture code +#define wxUSE_PRINTING_ARCHITECTURE 1 + +// wxHTML sublibrary allows to display HTML in wxWindow programs and much, +// much more. +// +// Default is 1. +// +// Recommended setting: 1 (wxHTML is great!), set to 0 if you want compile a +// smaller library. +#define wxUSE_HTML 1 + +// OpenGL canvas +#if defined(__WIN32__) + #define wxUSE_GLCANVAS 0 //? error unresolved external symbol ... +#else + #define wxUSE_GLCANVAS 0 +#endif + +// wxTreeLayout class +#define wxUSE_TREELAYOUT 1 + +// ---------------------------------------------------------------------------- +// Data transfer +// ---------------------------------------------------------------------------- + +// Use wxClipboard class for clipboard copy/paste. +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_CLIPBOARD 0 //? needs wxUSE_OLE + +// Use wxDataObject and related classes. Needed for clipboard and OLE drag and +// drop +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_DATAOBJ 1 + +// Use wxDropTarget and wxDropSource classes for drag and drop (this is +// different from "built in" drag and drop in wxTreeCtrl which is always +// available). Requires wxUSE_DATAOBJ. +// +// Default is 1. +// +// Recommended setting: 1 +#if defined(__WIN32__) + #define wxUSE_DRAG_AND_DROP 0 //? needs wxUSE_OLE +#else + #define wxUSE_DRAG_AND_DROP 0 +#endif + +// ---------------------------------------------------------------------------- +// miscellaneous settings +// ---------------------------------------------------------------------------- + +// wxSingleInstanceChecker class allows to verify at startup if another program +// instance is running (it is only available under Win32) +// +// Default is 1 +// +// Recommended setting: 1 (the class is tiny, disabling it won't save much +// space) +#if defined(__WIN32__) + #define wxUSE_SNGLINST_CHECKER 1 +#else + #define wxUSE_SNGLINST_CHECKER 0 +#endif + +// Drag image +#define wxUSE_DRAGIMAGE 1 + +// Interprocess communication +#define wxUSE_IPC 1 + +// Help +#if defined(__WIN32__) + #define wxUSE_HELP 1 +#else + #define wxUSE_HELP 1 +#endif + +// MS help +#define wxUSE_MS_HTML_HELP 1 + +// Use wxHTML-based help controller? +#define wxUSE_WXHTML_HELP 1 + +// Use resources +#define wxUSE_RESOURCES 1 + +// Window layout constraint system +#define wxUSE_CONSTRAINTS 1 + +// Splines +#define wxUSE_SPLINES 1 + +// Use XPM support in wxBitmap +// +// Default is 1, as XPM is now fully supported this makes easier the issue +// of portable icons and bitmaps +#if defined(__WIN32__) + #define wxUSE_XPM_IN_MSW 1 +#else + #define wxUSE_XPM_IN_MSW 0 +#endif + +// Use dynamic DIB loading/saving code in utils/dib under MSW. +#if defined(__WIN32__) + #define wxUSE_IMAGE_LOADING_IN_MSW 0 //? needs more testing +#else + #define wxUSE_IMAGE_LOADING_IN_MSW 0 +#endif + +// Use dynamic icon/cursor loading/saving code under MSW. +#if defined(__WIN32__) + #define wxUSE_RESOURCE_LOADING_IN_MSW 0 //? needs more testing +#else + #define wxUSE_RESOURCE_LOADING_IN_MSW 0 +#endif + +// use wxExpr (a.k.a. PrologIO) +#define wxUSE_PROLOGIO 0 + +// Use .wxr resource mechanism (requires PrologIO library) +#define wxUSE_WX_RESOURCES 0 + +// Include mouse wheel support +#define wxUSE_MOUSEWHEEL 1 + +// ---------------------------------------------------------------------------- +// postscript support settings +// ---------------------------------------------------------------------------- + +// Set to 1 for PostScript device context. +#define wxUSE_POSTSCRIPT 1 + +// Set to 1 to use font metric files in GetTextExtent +#define wxUSE_AFM_FOR_POSTSCRIPT 1 + +// Set to 0 to disable PostScript print/preview architecture code under Windows +// (just use Windows printing). +#if defined(__WIN32__) + #define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1 +#else + #define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0 +#endif + +// ---------------------------------------------------------------------------- +// database classes +// ---------------------------------------------------------------------------- + +// Define 1 to use ODBC classes +#define wxUSE_ODBC 1 + +// For backward compatibility reasons, this parameter now only controls the +// default scrolling method used by cursors. This default behavior can be +// overriden by setting the second param of wxDB::wxDbGetConnection() or +// wxDb() constructor to indicate whether the connection (and any wxDbTable()s +// that use the connection) should support forward only scrolling of cursors, +// or both forward and backward support for backward scrolling cursors is +// dependent on the data source as well as the ODBC driver being used. +#define wxODBC_FWD_ONLY_CURSORS 0 + +// Default is 0. Set to 1 to use the deprecated classes, enum types, function, +// member variables. With a setting of 1, full backward compatability with the +// 2.0.x release is possible. It is STRONGLY recommended that this be set to 0, +// as future development will be done only on the non-deprecated +// functions/classes/member variables/etc. +#define wxODBC_BACKWARD_COMPATABILITY 0 + +// ---------------------------------------------------------------------------- +// other compiler (mis)features +// ---------------------------------------------------------------------------- + +// Set this to 0 if your compiler can't cope with omission of prototype +// parameters. +// +// Default is 1. +// +// Recommended setting: 1 (should never need to set this to 0) +#define REMOVE_UNUSED_ARG 1 + +// VC++ 4.2 and above allows and but you can't mix +// them. Set to 1 for , 0 for +// +// Default is 1. +// +// Recommended setting: whatever your compiler likes more +#ifdef __MWERKS__ + #define wxUSE_IOSTREAMH 1 +#else + #define wxUSE_IOSTREAMH 0 +#endif + +// ---------------------------------------------------------------------------- +// image format support +// ---------------------------------------------------------------------------- + +// wxImage supports many different image formats which can be configured at +// compile-time. BMP is always supported, others are optional and can be safely +// disabled if you don't plan to use images in such format sometimes saving +// substantial amount of code in the final library. +// +// Some formats require an extra library which is included in wxWin sources +// which is mentioned if it is the case. + +// Set to 1 for wxImage support (recommended). +#define wxUSE_IMAGE 1 + +// Set to 1 for PNG format support (requires libpng). Also requires wxUSE_ZLIB. +#define wxUSE_LIBPNG 1 + +// Set to 1 for JPEG format support (requires libjpeg) +#define wxUSE_LIBJPEG 1 + +// Set to 1 for TIFF format support (requires libtiff) +#define wxUSE_LIBTIFF 1 + +// Set to 1 for GIF format support +#define wxUSE_GIF 1 + +// Set to 1 for PNM format support +#define wxUSE_PNM 1 + +// Set to 1 for PCX format support +#define wxUSE_PCX 1 + +// Set to 1 for IFF format support (Amiga format) +#define wxUSE_IFF 0 + +// Set to 1 for XPM format support +#define wxUSE_XPM 1 + +// Set to 1 for MS Icons and Cursors format support +#define wxUSE_ICO_CUR 0 + +// Set to 1 to compile in wxPalette class +#if defined(__WIN32__) + #define wxUSE_PALETTE 1 +#else + #define wxUSE_PALETTE 1 +#endif + +// ---------------------------------------------------------------------------- +// Windows-only settings +// ---------------------------------------------------------------------------- +#if defined(__WINDOWS__) + +// Set this to 1 if you want to use wxWindows and MFC in the same program. This +// will override some other settings (see below) +// +// Default is 0. +// +// Recommended setting: 0 unless you really have to use MFC +#define wxUSE_MFC 0 + +// Set this to 1 for generic OLE support: this is required for drag-and-drop, +// clipboard, OLE Automation. Only set it to 0 if your compiler is very old and +// can't compile/doesn't have the OLE headers. +// +// Default is 1. +// +// Recommended setting: 1 +#define wxUSE_OLE 0 //? needs more testing + +// Set this to 1 to use Microsoft CTL3D library for "3D-look" under Win16 or NT +// 3.x. This setting is ignored under Win9x and NT 4.0+. +// +// Default is 0 for (most) Win32 (systems), 1 for Win16 +// +// Recommended setting: same as default +#if defined(__WIN95__) //? wrong test, should be positive + #define wxUSE_CTL3D 0 +#else + #define wxUSE_CTL3D 0 //? see above +#endif + +// Define as 1 to use Microsoft's ItsyBitsy small title bar library, for +// wxMiniFrame. This setting is only used for Win3.1; Win9x and NT use native +// miniframes support instead. +// +// Default is 0 for (most) Win32 (systems), 1 for Win16 +// +// Recommended setting: same as default +#if defined(__WIN95__) //? wrong test, should be positive + #define wxUSE_ITSY_BITSY 0 +#else + #define wxUSE_ITSY_BITSY 0 //? see above +#endif + +// Set this to 1 to use RICHEDIT controls for wxTextCtrl with style wxTE_RICH +// which allows to put more than ~32Kb of text in it even under Win9x (NT +// doesn't have such limitation). +// +// Default is 1 for compilers which support it +// +// Recommended setting: 1, only set it to 0 if your compiler doesn't have +// or can't compile +#if defined(__WIN95__) && !defined(__TWIN32__) && !defined(__GNUWIN32_OLD__) +// TODO: This should be ifdef'ed for any compilers that don't support +// RichEdit 2.0 but do have RichEdit 1.0... + #define wxUSE_RICHEDIT 0 //? needs more testing + #define wxUSE_RICHEDIT2 0 //? needs more testing + +#else + #define wxUSE_RICHEDIT 0 + #define wxUSE_RICHEDIT2 0 +#endif + +// Set this to 1 to enable support for the owner-drawn menu and listboxes. +// +// Default is 1. +// +// Recommended setting: 1, set to 0 for a small library size reduction +#define wxUSE_OWNER_DRAWN 0 + +#endif + +// ---------------------------------------------------------------------------- +// disable the settings which don't work for some compilers +// ---------------------------------------------------------------------------- + +#ifndef wxUSE_NORLANDER_HEADERS + #if (defined(__MINGW32__) || defined(__CYGWIN__)) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))) + #define wxUSE_NORLANDER_HEADERS 1 + #else + #define wxUSE_NORLANDER_HEADERS 0 + #endif +#endif + +// wxUSE_DEBUG_NEW_ALWAYS doesn't work with CodeWarrior +#if defined(__MWERKS__) + #undef wxUSE_DEBUG_NEW_ALWAYS + #define wxUSE_DEBUG_NEW_ALWAYS 0 +#endif + +#if defined(__GNUWIN32__) +// These don't work as expected for mingw32 and cygwin32 + #undef wxUSE_MEMORY_TRACING + #define wxUSE_MEMORY_TRACING 0 + + #undef wxUSE_GLOBAL_MEMORY_OPERATORS + #define wxUSE_GLOBAL_MEMORY_OPERATORS 0 + + #undef wxUSE_DEBUG_NEW_ALWAYS + #define wxUSE_DEBUG_NEW_ALWAYS 0 + +// Cygwin betas don't have wcslen + #if defined(__CYGWIN__) || defined(__CYGWIN32__) + #if ! ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))) + #undef wxUSE_WCHAR_T + #define wxUSE_WCHAR_T 0 + #endif + #endif + +#endif // __GNUWIN32__ + +// MFC duplicates these operators +#if wxUSE_MFC + #undef wxUSE_GLOBAL_MEMORY_OPERATORS + #define wxUSE_GLOBAL_MEMORY_OPERATORS 0 + + #undef wxUSE_DEBUG_NEW_ALWAYS + #define wxUSE_DEBUG_NEW_ALWAYS 0 +#endif // wxUSE_MFC + +#if (!defined(WIN32) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS) +// Can't use OLE drag and drop in Windows 3.1 because we don't know how +// to implement UUIDs +// GnuWin32 doesn't have appropriate headers for e.g. IUnknown. + #undef wxUSE_DRAG_AND_DROP + #define wxUSE_DRAG_AND_DROP 0 +#endif + +// Only WIN32 supports wxStatusBar95 +#if !defined(__WIN32__) && wxUSE_NATIVE_STATUSBAR + #undef wxUSE_NATIVE_STATUSBAR + #define wxUSE_NATIVE_STATUSBAR 0 +#endif + +// Salford C++ doesn't like some of the memory operator definitions +#ifdef __SALFORDC__ + #undef wxUSE_MEMORY_TRACING + #define wxUSE_MEMORY_TRACING 0 + + #undef wxUSE_GLOBAL_MEMORY_OPERATORS + #define wxUSE_GLOBAL_MEMORY_OPERATORS 0 + + #undef wxUSE_DEBUG_NEW_ALWAYS + #define wxUSE_DEBUG_NEW_ALWAYS 0 + + #undef wxUSE_THREADS + #define wxUSE_THREADS 0 + + #undef wxUSE_OWNER_DRAWN + #define wxUSE_OWNER_DRAWN 0 +#endif // __SALFORDC__ + +#ifdef __TWIN32__ + #undef wxUSE_THREADS + #define wxUSE_THREADS 0 + + #undef wxUSE_ODBC + #define wxUSE_ODBC 0 +#endif // __TWIN32__ + +// BC++/Win16 can't cope with the amount of data in resource.cpp +#if defined(__WIN16__) && defined(__BORLANDC__) + #undef wxUSE_WX_RESOURCES + #define wxUSE_WX_RESOURCES 0 + + #undef wxUSE_ODBC + #define wxUSE_ODBC 0 + + #undef wxUSE_NEW_GRID + #define wxUSE_NEW_GRID 0 +#endif + +#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500) +// BC++ 4.0 can't compile JPEG library + #undef wxUSE_LIBJPEG + #define wxUSE_LIBJPEG 0 +#endif + +// wxUSE_DEBUG_NEW_ALWAYS = 1 not compatible with BC++ in DLL mode +#if defined(__BORLANDC__) && (defined(WXMAKINGDLL) || defined(WXUSINGDLL)) + #undef wxUSE_DEBUG_NEW_ALWAYS + #define wxUSE_DEBUG_NEW_ALWAYS 0 +#endif + +#if defined(__WXMSW__) && defined(__WATCOMC__) + /* + #undef wxUSE_GLCANVAS + #define wxUSE_GLCANVAS 0 + */ + + #undef wxUSE_WCHAR_T + #define wxUSE_WCHAR_T 0 +#endif + +#if defined(__WXMSW__) && !defined(__WIN32__) + #undef wxUSE_SOCKETS + #define wxUSE_SOCKETS 0 + + #undef wxUSE_THREADS + #define wxUSE_THREADS 0 + + #undef wxUSE_TOOLTIPS + #define wxUSE_TOOLTIPS 0 + + #undef wxUSE_SPINCTRL + #define wxUSE_SPINCTRL 0 + + #undef wxUSE_SPINBTN + #define wxUSE_SPINBTN 0 + + #undef wxUSE_LIBPNG + #define wxUSE_LIBPNG 0 + + #undef wxUSE_LIBJPEG + #define wxUSE_LIBJPEG 0 + + #undef wxUSE_LIBTIFF + #define wxUSE_LIBTIFF 0 + + #undef wxUSE_GIF + #define wxUSE_GIF 0 + + #undef wxUSE_PNM + #define wxUSE_PNM 0 + + #undef wxUSE_PCX + #define wxUSE_PCX 0 + + #undef wxUSE_GLCANVAS + #define wxUSE_GLCANVAS 0 + + #undef wxUSE_MS_HTML_HELP + #define wxUSE_MS_HTML_HELP 0 + + #undef wxUSE_WCHAR_T + #define wxUSE_WCHAR_T 0 + +#endif // Win16 + +// ---------------------------------------------------------------------------- +// unknown settings +// ---------------------------------------------------------------------------- + +// Use serialization (requires utils/serialize)? +#define wxUSE_SERIAL 0 + +// Use plotter? +#define wxUSE_PLOT 0 + +// If 1, enables provision of run-time type information. +// NOW MANDATORY: don't change. +#define wxUSE_DYNAMIC_CLASSES 1 + +//?????? +#if defined(__WIN32__) + #define wxUSE_DISPLAY 0 +#else + #define wxUSE_DISPLAY 0 +#endif + +//?????? +#if defined(__WIN32__) + #define wxUSE_DDE_FOR_IPC 0 +#else + #define wxUSE_DDE_FOR_IPC 0 +#endif + +//?????? +#define wxUSE_SPAWNBROWSER 0 + +#endif // _WX_UNIV_SETUP_H_ diff --git a/include/wx/univ/toolbar.h b/include/wx/univ/toolbar.h index 5ca1a31a68..5aa190b196 100644 --- a/include/wx/univ/toolbar.h +++ b/include/wx/univ/toolbar.h @@ -98,6 +98,9 @@ protected: long numArg = -1, const wxString& strArg = wxEmptyString); virtual wxSize DoGetBestClientSize() const; + virtual void DoSetSize(int x, int y, + int width, int height, + int sizeFlags = wxSIZE_AUTO); virtual void DoDraw(wxControlRenderer *renderer); // get the bounding rect for the given tool diff --git a/include/wx/univ/toplevel.h b/include/wx/univ/toplevel.h index 9edcf899f6..e9265722ee 100644 --- a/include/wx/univ/toplevel.h +++ b/include/wx/univ/toplevel.h @@ -36,7 +36,7 @@ enum wxTOPLEVEL_BUTTON_MAXIMIZE = 0x02000000, wxTOPLEVEL_BUTTON_ICONIZE = 0x04000000, wxTOPLEVEL_BUTTON_RESTORE = 0x08000000, - wxTOPLEVEL_BUTTON_HELP = 0x10000000, + wxTOPLEVEL_BUTTON_HELP = 0x10000000 }; // frame hit test return values: @@ -143,7 +143,7 @@ public: virtual int GetMinWidth() const; virtual int GetMinHeight() const; - virtual bool ProvidesBackground() { return TRUE; } + virtual bool ProvidesBackground() const { return TRUE; } protected: // handle titlebar button click event diff --git a/include/wx/univ/window.h b/include/wx/univ/window.h index 673dddf1e3..2c0d484df6 100644 --- a/include/wx/univ/window.h +++ b/include/wx/univ/window.h @@ -179,7 +179,7 @@ public: // to be used with function above: transparent windows get // their background from parents that return TRUE here, // so this is mostly for wxPanel, wxTopLevelWindow etc. - virtual bool ProvidesBackground() { return FALSE; } + virtual bool ProvidesBackground() const { return FALSE; } // return TRUE if this control can be highlighted when the mouse is over // it (the theme decides itself whether it is really highlighted or not) diff --git a/include/wx/utils.h b/include/wx/utils.h index 076d32c6d7..ee0835608e 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -65,8 +65,10 @@ WXDLLEXPORT_DATA(extern wxChar*) wxBuffer; // Make a copy of this string using 'new' WXDLLEXPORT wxChar* copystring(const wxChar *s); +#if WXWIN_COMPATIBILITY_2 // Matches string one within string two regardless of case WXDLLEXPORT bool StringMatch(const wxChar *one, const wxChar *two, bool subString = TRUE, bool exact = FALSE); +#endif // A shorter way of using strcmp #define wxStringEq(s1, s2) (s1 && s2 && (wxStrcmp(s1, s2) == 0)) @@ -368,7 +370,7 @@ WXDLLEXPORT bool wxYield(); WXDLLEXPORT bool wxYieldIfNeeded(); // Yield to other apps/messages and disable user input -WXDLLEXPORT bool wxSafeYield(wxWindow *win = NULL); +WXDLLEXPORT bool wxSafeYield(wxWindow *win = NULL, bool onlyIfNeeded = FALSE); // Enable or disable input to all top level windows WXDLLEXPORT void wxEnableTopLevelWindows(bool enable = TRUE); diff --git a/include/wx/version.h b/include/wx/version.h index dbb7911023..8e077503b8 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -14,14 +14,14 @@ // Bump-up with each new version #define wxMAJOR_VERSION 2 -#define wxMINOR_VERSION 3 -#define wxRELEASE_NUMBER 3 -#define wxVERSION_STRING _T("wxWindows 2.3.3") +#define wxMINOR_VERSION 4 +#define wxRELEASE_NUMBER 0 +#define wxVERSION_STRING _T("wxWindows 2.4.0") // These are used by src/msw/version.rc and should always be ASCII, not Unicode // and must be updated manually as well each time the version above changes -#define wxVERSION_NUM_DOT_STRING "2.3.3" -#define wxVERSION_NUM_STRING "233" +#define wxVERSION_NUM_DOT_STRING "2.4.0" +#define wxVERSION_NUM_STRING "240" // nothing should be updated below this line when updating the version diff --git a/include/wx/window.h b/include/wx/window.h index 59a9769b1b..1b12bc2884 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -271,7 +271,18 @@ public: *h = s.y; } - // the generic centre function - centers the window on parent by + // There are times (and windows) where 'Best' size and 'Min' size + // are vastly out of sync. This should be remedied somehow, but in + // the meantime, this method will return the larger of BestSize + // (the window's smallest legible size), and any user specified + // MinSize hint. + wxSize GetAdjustedBestSize() const + { + wxSize s( DoGetBestSize() ); + return wxSize( wxMax( s.x, GetMinWidth() ), wxMax( s.y, GetMinHeight() ) ); + } + + // the generic centre function - centers the window on parent by` // default or on screen if it doesn't have parent or // wxCENTER_ON_SCREEN flag is given void Centre( int direction = wxBOTH ); @@ -288,6 +299,9 @@ public: // set window size to wrap around its children virtual void Fit(); + // set virtual size to satisfy children + virtual void FitInside(); + // set min/max size of the window virtual void SetSizeHints( int minW, int minH, int maxW = -1, int maxH = -1, @@ -331,6 +345,17 @@ public: virtual void DoSetVirtualSize( int x, int y ); virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; } + // Return the largest of ClientSize and BestSize (as determined + // by a sizer, interior children, or other means) + + virtual wxSize GetBestVirtualSize() const + { + wxSize client( GetClientSize() ); + wxSize best( GetBestSize() ); + + return wxSize( wxMax( client.x, best.x ), wxMax( client.y, best.y ) ); + } + // window state // ------------ @@ -958,8 +983,16 @@ protected: // set the best size for the control if the default size was given: // replaces the fields of size == -1 with the best values for them and // calls SetSize() if needed + // + // This function is rather unfortunately named.. it's really just a + // smarter SetSize / convenience function for expanding wxDefaultSize. + // Note that it does not influence the value returned by GetBestSize + // at all. void SetBestSize(const wxSize& size) { + // the size only needs to be changed if the current size is incomplete, + // i.e. one of the components was specified as default -- so if both + // were given, simply don't do anything if ( size.x == -1 || size.y == -1 ) { wxSize sizeBest = DoGetBestSize(); diff --git a/include/wx/wizard.h b/include/wx/wizard.h index ce716c5627..db4dbbf752 100644 --- a/include/wx/wizard.h +++ b/include/wx/wizard.h @@ -201,6 +201,15 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); #endif // WXWIN_COMPATIBILITY_2_2 + + // the methods below may be overridden by the derived classes to provide + // custom logic for determining the pages order + + virtual bool HasNextPage(wxWizardPage *page) + { return page->GetNext() != NULL; } + + virtual bool HasPrevPage(wxWizardPage *page) + { return page->GetPrev() != NULL; } }; // include the real class declaration @@ -244,6 +253,7 @@ BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING, 901) DECLARE_EVENT_TYPE(wxEVT_WIZARD_CANCEL, 902) DECLARE_EVENT_TYPE(wxEVT_WIZARD_HELP, 903) + DECLARE_EVENT_TYPE(wxEVT_WIZARD_FINISHED, 903) END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); @@ -259,6 +269,9 @@ typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); // unless the event handler vetoes the event #define EVT_WIZARD_CANCEL(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_CANCEL, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +// the user pressed "Finish" button and the wizard is going to be dismissed - +#define EVT_WIZARD_FINISHED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_FINISHED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), + // the user pressed "Help" button #define EVT_WIZARD_HELP(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 31bbb35f47..71e38836d6 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -81,8 +81,9 @@ #include // non Unix compilers which do have wchar.h (but not tchar.h which is included -// below and which includes wchar.h anyhow) -#if defined(__MWERKS__) || defined(__VISAGECPP__) +// below and which includes wchar.h anyhow). +// Actually MinGW has tchar.h, but it does not include wchar.h +#if defined(__MWERKS__) || defined(__VISAGECPP__) || defined(__MINGW32__) #ifndef HAVE_WCHAR_H #define HAVE_WCHAR_H #endif @@ -90,7 +91,18 @@ #if wxUSE_WCHAR_T #ifdef HAVE_WCHAR_H - #include + // the current (as of Nov 2002) version of cygwin has a bug in its + // wchar.h -- there is no extern "C" around the declarations in it and + // this results in linking errors later; also, at least on some + // Cygwin versions, wchar.h requires sys/types.h + #ifdef __CYGWIN__ + #include + extern "C" { + #endif // Cygwin + #include + #ifdef __CYGWIN__ + } + #endif // Cygwin #elif defined(HAVE_WCSTR_H) // old compilers have relevant declarations here #include @@ -257,6 +269,7 @@ #define wxStrcoll _tcscoll #define wxStrcpy _tcscpy #define wxStrcspn _tcscspn + #define wxStrdup _tcsdup #define wxStrftime _tcsftime #define wxStricmp _tcsicmp #define wxStrnicmp _tcsnicmp diff --git a/include/wx/wxexpr.h b/include/wx/wxexpr.h index 8730ce773b..031bced15b 100644 --- a/include/wx/wxexpr.h +++ b/include/wx/wxexpr.h @@ -16,7 +16,7 @@ #pragma interface "wxexpr.h" #endif -#include +#if wxUSE_PROLOGIO #include "wx/defs.h" #include "wx/string.h" @@ -26,6 +26,8 @@ #include "wx/expr.h" +#include + // Compatibility #define PrologExpr wxExpr #define PrologDatabase wxExprDatabase @@ -269,5 +271,7 @@ WXDLLEXPORT_DATA(extern wxExprDatabase*) thewxExprDatabase; // YACC/LEX can leave memory lying around... extern "C" WXDLLEXPORT int wxExprCleanUp(); -#endif +#endif // wxUSE_PROLOGIO + +#endif // _WX_WXEXPRH__ diff --git a/include/wx/x11/app.h b/include/wx/x11/app.h index c1e44dad6e..3621558b9f 100644 --- a/include/wx/x11/app.h +++ b/include/wx/x11/app.h @@ -101,6 +101,13 @@ public: const wxSize& GetInitialSize() const { return m_initialSize; } bool GetShowIconic() const { return m_showIconic; } +#if wxUSE_UNICODE + // Global context for Pango layout. Either use X11 + // or use Xft rendering according to GDK_USE_XFT + // environment variable + PangoContext* GetPangoContext(); +#endif + // We need this before creating the app static WXDisplay* GetDisplay() { return ms_display; } static WXDisplay* ms_display; diff --git a/include/wx/x11/colour.h b/include/wx/x11/colour.h index 3e1db7ddd6..9002149bda 100644 --- a/include/wx/x11/colour.h +++ b/include/wx/x11/colour.h @@ -48,7 +48,10 @@ public: // Implicit conversion from the colour name wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } + wxColour( const char *colourName ) { InitFromName( wxString::FromAscii(colourName) ); } +#if wxUSE_UNICODE + wxColour( const wxChar *colourName ) { InitFromName( wxString(colourName) ); } +#endif wxColour( const wxColour& col ) { Ref(col); } wxColour& operator = ( const wxColour& col ) { Ref(col); return *this; } diff --git a/include/wx/x11/dcclient.h b/include/wx/x11/dcclient.h index ce76814dca..f2a16a37fe 100644 --- a/include/wx/x11/dcclient.h +++ b/include/wx/x11/dcclient.h @@ -133,6 +133,11 @@ protected: wxRegion m_currentClippingRegion; wxRegion m_paintClippingRegion; +#if wxUSE_UNICODE + PangoContext *m_context; + PangoFontDescription *m_fontdesc; +#endif + void SetUpDC(); void Destroy(); void ComputeScaleAndOrigin(); diff --git a/include/wx/x11/font.h b/include/wx/x11/font.h index faf0d35801..83bf79c412 100644 --- a/include/wx/x11/font.h +++ b/include/wx/x11/font.h @@ -48,11 +48,15 @@ public: bool underlined = FALSE, const wxString& face = wxEmptyString, wxFontEncoding encoding = wxFONTENCODING_DEFAULT); - - // wxMOTIF-specific + + // FIXME: I added the ! to make it compile; + // is this right? - JACS +#if !wxUSE_UNICODE bool Create(const wxString& fontname, wxFontEncoding fontenc = wxFONTENCODING_DEFAULT); - bool Create(const wxNativeFontInfo& fontinfo); +#endif + // DELETEME: no longer seems to be implemented. + // bool Create(const wxNativeFontInfo& fontinfo); virtual ~wxFont(); @@ -69,6 +73,8 @@ public: virtual wxFontEncoding GetEncoding() const; virtual wxNativeFontInfo *GetNativeFontInfo() const; + virtual bool IsFixedWidth() const; + virtual void SetPointSize(int pointSize); virtual void SetFamily(int family); virtual void SetStyle(int style); @@ -78,8 +84,13 @@ public: virtual void SetEncoding(wxFontEncoding encoding); virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); - // Implementation + virtual void SetNoAntiAliasing( bool no = TRUE ); + virtual bool GetNoAntiAliasing(); + // Implementation + +#if wxUSE_PANGO +#else // Find an existing, or create a new, XFontStruct // based on this wxFont and the given scale. Append the // font to list in the private data for future reference. @@ -98,13 +109,12 @@ public: // Helper function for convenient access of the above. WXFontStructPtr GetFontStruct(double scale = 1.0, WXDisplay* display = NULL) const; +#endif protected: // common part of all ctors void Init(); - // VZ: IMHO, we don't need it at all... - bool RealizeResource() { return TRUE; } void Unshare(); private: diff --git a/include/wx/x11/private.h b/include/wx/x11/private.h index bb6d9be7f6..e2ae2945e7 100644 --- a/include/wx/x11/private.h +++ b/include/wx/x11/private.h @@ -21,10 +21,26 @@ // Include common declarations #include "wx/x11/privx.h" +#if wxUSE_UNICODE +#include "pango/pango.h" +#endif + class wxMouseEvent; class wxKeyEvent; class wxWindow; +// ---------------------------------------------------------------------------- +// Some Unicode <-> UTF8 macros stolen from GTK +// ---------------------------------------------------------------------------- + +#if wxUSE_UNICODE + #define wxGTK_CONV(s) wxConvUTF8.cWX2MB(s) + #define wxGTK_CONV_BACK(s) wxConvUTF8.cMB2WX(s) +#else + #define wxGTK_CONV(s) s.c_str() + #define wxGTK_CONV_BACK(s) s +#endif + // ---------------------------------------------------------------------------- // we maintain a hash table which contains the mapping from Widget to wxWindow // corresponding to the window for this widget @@ -42,7 +58,7 @@ extern bool wxAddClientWindowToTable(Window w, wxWindow *win); // TranslateXXXEvent() functions - translate X event to wxWindow one // ---------------------------------------------------------------------------- extern bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, XEvent *xevent); -extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window window, XEvent *xevent); +extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window window, XEvent *xevent, bool isAscii = FALSE); extern Window wxGetWindowParent(Window window); diff --git a/include/wx/x11/privx.h b/include/wx/x11/privx.h index c8c63f63b8..7a3473593a 100644 --- a/include/wx/x11/privx.h +++ b/include/wx/x11/privx.h @@ -14,6 +14,8 @@ #include "wx/defs.h" #include "wx/utils.h" +#include "wx/colour.h" + #include "X11/Xlib.h" #include "X11/Xatom.h" #include "X11/Xutil.h" diff --git a/include/wx/xrc/xh_all.h b/include/wx/xrc/xh_all.h index 5382b6ffb0..2ac1db392c 100644 --- a/include/wx/xrc/xh_all.h +++ b/include/wx/xrc/xh_all.h @@ -46,5 +46,6 @@ #include "wx/xrc/xh_unkwn.h" #include "wx/xrc/xh_gdctl.h" #include "wx/xrc/xh_frame.h" +#include "wx/xrc/xh_scwin.h" #endif // _WX_XMLRES_H_ diff --git a/include/wx/xrc/xh_scwin.h b/include/wx/xrc/xh_scwin.h new file mode 100644 index 0000000000..1befc41215 --- /dev/null +++ b/include/wx/xrc/xh_scwin.h @@ -0,0 +1,32 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_scwin.h +// Purpose: XML resource handler for wxScrolledWindow +// Author: Vaclav Slavik +// Created: 2002/10/18 +// RCS-ID: $Id$ +// Copyright: (c) 2002 Vaclav Slavik +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_XH_SCWIN_H_ +#define _WX_XH_SCWIN_H_ + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma interface "xh_scwin.h" +#endif + +#include "wx/xrc/xmlres.h" +#include "wx/defs.h" + + + +class WXXMLDLLEXPORT wxScrolledWindowXmlHandler : public wxXmlResourceHandler +{ +public: + wxScrolledWindowXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + + +#endif // _WX_XH_SCWIN_H_ diff --git a/include/wx/xrc/xml.h b/include/wx/xrc/xml.h index d7b636c0df..c3122942e4 100644 --- a/include/wx/xrc/xml.h +++ b/include/wx/xrc/xml.h @@ -164,7 +164,7 @@ private: class WXXMLDLLEXPORT wxXmlDocument : public wxObject { public: - wxXmlDocument() : wxObject(), m_version(wxT("1.0")), m_root(NULL) {} + wxXmlDocument(); wxXmlDocument(const wxString& filename, const wxString& encoding = wxT("UTF-8")); wxXmlDocument(wxInputStream& stream, @@ -180,7 +180,7 @@ public: const wxString& encoding = wxT("UTF-8")); bool Load(wxInputStream& stream, const wxString& encoding = wxT("UTF-8")); - + // Saves document as .xml file. bool Save(const wxString& filename) const; bool Save(wxOutputStream& stream) const; @@ -193,7 +193,7 @@ public: // Returns version of document (may be empty). wxString GetVersion() const { return m_version; } // Returns encoding of document (may be empty). - // Note: this is the encoding original fail was saved in, *not* the + // Note: this is the encoding original file was saved in, *not* the // encoding of in-memory representation! wxString GetFileEncoding() const { return m_fileEncoding; } @@ -207,6 +207,7 @@ public: // (same as passed to Load or ctor, defaults to UTF-8). // NB: this is meaningless in Unicode build where data are stored as wchar_t* wxString GetEncoding() const { return m_encoding; } + void SetEncoding(const wxString& enc) { m_encoding = enc; } #endif private: diff --git a/include/wx/xrc/xmlres.h b/include/wx/xrc/xmlres.h index ca37a9cfa7..5f4a800261 100644 --- a/include/wx/xrc/xmlres.h +++ b/include/wx/xrc/xmlres.h @@ -37,6 +37,9 @@ class WXDLLEXPORT wxFrame; class WXDLLEXPORT wxToolBar; class WXXMLDLLEXPORT wxXmlResourceHandler; +class WXXMLDLLEXPORT wxXmlSubclassFactory; +class WXXMLDLLEXPORT wxXmlSubclassFactoriesList; +class wxXmlResourceModule; // These macros indicate current version of XML resources (this information is @@ -55,7 +58,7 @@ class WXXMLDLLEXPORT wxXmlResourceHandler; #define WX_XMLRES_CURRENT_VERSION_MINOR 3 #define WX_XMLRES_CURRENT_VERSION_RELEASE 0 #define WX_XMLRES_CURRENT_VERSION_REVISION 1 -#define WX_XMLRES_CURRENT_VERSION_STRING "2.3.0.1" +#define WX_XMLRES_CURRENT_VERSION_STRING wxT("2.3.0.1") #define WX_XMLRES_CURRENT_VERSION \ (WX_XMLRES_CURRENT_VERSION_MAJOR * 256*256*256 + \ @@ -133,6 +136,11 @@ public: // Removes all handlers void ClearHandlers(); + + // Registers subclasses factory for use in XRC. This function is not meant + // for public use, please see the comment above wxXmlSubclassFactory + // definition. + static void AddSubclassFactory(wxXmlSubclassFactory *factory); // Loads menu from resource. Returns NULL on failure. wxMenu *LoadMenu(const wxString& name); @@ -216,7 +224,9 @@ public: static wxXmlResource *Set(wxXmlResource *res); // Returns flags, which may be a bitlist of wxXRC_USE_LOCALE and wxXRC_NO_SUBCLASSING. - int GetFlags() { return m_flags; } + int GetFlags() const { return m_flags; } + // Set flags after construction. + void SetFlags(int flags) { m_flags = flags; } protected: // Scans the resources list for unloaded files and loads them. Also reloads @@ -244,6 +254,9 @@ private: #endif friend class wxXmlResourceHandler; + friend class wxXmlResourceModule; + + static wxXmlSubclassFactoriesList *ms_subclassFactories; // singleton instance: static wxXmlResource *ms_instance; @@ -438,6 +451,20 @@ protected: void wxXmlInitResourceModule(); +// This class is used to create instances of XRC "object" nodes with "subclass" +// property. It is _not_ supposed to be used by XRC users, you should instead +// register your subclasses via wxWindows' RTTI mechanism. This class is useful +// only for language bindings developer who need a way to implement subclassing +// in wxWindows ports that don't support wxRTTI (e.g. wxPython). +class WXXMLDLLEXPORT wxXmlSubclassFactory +{ +public: + // Try to create instance of given class and return it, return NULL on failure: + virtual wxObject *Create(const wxString& className) = 0; + virtual ~wxXmlSubclassFactory() {} +}; + + /* ------------------------------------------------------------------------- Backward compatibility macros. Do *NOT* use, they may disappear in future versions of the XRC library! diff --git a/include/wx_pb.h b/include/wx_pb.h index a23fb6d357..82bcb1756c 100644 --- a/include/wx_pb.h +++ b/include/wx_pb.h @@ -11,3 +11,4 @@ #define HAVE_USLEEP 1 #define HAVE_FCNTL 1 +#define SIZEOF_INT 4 diff --git a/locale/cs.po b/locale/cs.po index 6cca297839..303cfc399f 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -1,9 +1,9 @@ msgid "" msgstr "" -"Project-Id-Version: wxWindows-2.2\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" -"PO-Revision-Date: 2001-12-17 17:21+0100\n" -"Last-Translator: Vaclav Slavik \n" +"Project-Id-Version: wxWindows-2.4\n" +"POT-Creation-Date: 2002-12-12 11:59+0100\n" +"PO-Revision-Date: 2002-12-14 22:10--100\n" +"Last-Translator: Vaclav Slavik \n" "Language-Team: wxWindows translators \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-2\n" @@ -14,18 +14,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (chyba %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Náhled" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " bajtù " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "Obálka è. 10, 4 1/8 x 9 1/2 palce" @@ -46,30 +42,34 @@ msgstr "Ob msgid "#9 Envelope, 3 7/8 x 8 7/8 in" msgstr "Obálka è. 9, 3 7/8 x 8 7/8 palce" -#: ../src/common/resourc2.cpp:265 ../src/common/resourc2.cpp:1326 -#: ../src/common/resource.cpp:1784 ../src/common/resource.cpp:1914 +#: ../src/common/resourc2.cpp:265 +#: ../src/common/resourc2.cpp:1326 +#: ../src/common/resource.cpp:1784 +#: ../src/common/resource.cpp:1914 #: ../src/common/resource.cpp:2994 #, c-format msgid "#define %s must be an integer." msgstr "#define %s musí být integer." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 +#: ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 +#: ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i z %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (nebo %s)" @@ -89,18 +89,27 @@ msgstr "%s - informace" msgid "%s Warning" msgstr "%s - varování" -#: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "%s" + +#: ../src/common/resourc2.cpp:709 +#: ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." msgstr "%s není specifikace bitmap resource." -#: ../src/common/resourc2.cpp:860 ../src/common/resource.cpp:2520 +#: ../src/common/resourc2.cpp:860 +#: ../src/common/resource.cpp:2520 #, c-format msgid "%s not an icon resource specification." msgstr "%s není specifikace icon resource." -#: ../src/common/resourc2.cpp:357 ../src/common/resourc2.cpp:1422 -#: ../src/common/resource.cpp:1877 ../src/common/resource.cpp:2006 +#: ../src/common/resourc2.cpp:357 +#: ../src/common/resourc2.cpp:1422 +#: ../src/common/resource.cpp:1877 +#: ../src/common/resource.cpp:2006 #: ../src/common/resource.cpp:3091 #, c-format msgid "%s: ill-formed resource file syntax." @@ -110,7 +119,8 @@ msgstr "%s: chybn msgid "&Arrange Icons" msgstr "Uspoøádat ikony" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/wizard.cpp:271 +#: ../src/generic/fdrepdlg.cpp:170 msgid "&Cancel" msgstr "&Zru¹it" @@ -118,10 +128,19 @@ msgstr "&Zru msgid "&Cascade" msgstr "Kaskádovì" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/tipdlg.cpp:210 +#: ../src/generic/logg.cpp:491 msgid "&Close" msgstr "&Zavøít" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "&Kopírovat" + +#: ../src/msw/textctrl.cpp:1683 +msgid "&Delete" +msgstr "&Odstranit" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Detaily" @@ -130,11 +149,11 @@ msgstr "&Detaily" msgid "&Find" msgstr "&Najít" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Dokonèit" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "Nápovìda" @@ -142,32 +161,41 @@ msgstr "N msgid "&Log" msgstr "&Log" -#: ../src/univ/themes/win32.cpp:4539 +#: ../src/univ/themes/win32.cpp:4541 msgid "&Move" -msgstr "" +msgstr "&Pøesunout" #: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 msgid "&Next" msgstr "&Dal¹í" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 +#: ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Dal¹í >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Dal¹í tip" -#: ../src/msw/mdi.cpp:194 -#, fuzzy -msgid "&Previous" -msgstr "Pøedchozí stránka" +#: ../src/msw/textctrl.cpp:1682 +msgid "&Paste" +msgstr "&Vlo¾it" -#: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/mdi.cpp:194 +#: ../src/generic/mdig.cpp:116 +msgid "&Previous" +msgstr "&Pøedchozí" + +#: ../src/msw/textctrl.cpp:1678 +#: ../src/common/cmdproc.cpp:261 +#: ../src/common/cmdproc.cpp:272 msgid "&Redo" msgstr "&Zopakovat" -#: ../src/common/cmdproc.cpp:255 ../src/common/cmdproc.cpp:282 +#: ../src/common/cmdproc.cpp:255 +#: ../src/common/cmdproc.cpp:282 msgid "&Redo " msgstr "&Zopakovat " @@ -175,24 +203,24 @@ msgstr "&Zopakovat " msgid "&Replace" msgstr "&Nahradit" -#: ../src/univ/themes/win32.cpp:4538 -#, fuzzy +#: ../src/univ/themes/win32.cpp:4540 msgid "&Restore" -msgstr "&Zopakovat" +msgstr "&Obnovit" -#: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 +#: ../src/generic/logg.cpp:487 +#: ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "&Ulo¾it..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Zobrazit tipy pøi spu¹tìní" -#: ../src/univ/themes/win32.cpp:4541 -#, fuzzy +#: ../src/univ/themes/win32.cpp:4543 msgid "&Size" -msgstr "Velikost" +msgstr "&Velikost" +#: ../src/msw/textctrl.cpp:1677 #: ../src/common/cmdproc.cpp:267 msgid "&Undo" msgstr "&Vrátit" @@ -201,22 +229,29 @@ msgstr "&Vr msgid "&Undo " msgstr "&Vrátit " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/msw/mdi.cpp:1328 +#: ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1365 +#: ../src/generic/mdig.cpp:295 +#: ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 msgid "&Window" msgstr "&Okno" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' obsahuje pøebyteèné '..', ignoruji." -#: ../src/common/valtext.cpp:147 ../src/common/valtext.cpp:177 +#: ../src/common/valtext.cpp:147 +#: ../src/common/valtext.cpp:177 #: ../src/common/valtext.cpp:183 #, c-format msgid "'%s' is invalid" msgstr "'%s' je neplatný" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' není správná èíselná hodnota pro volbu '%s'." @@ -251,30 +286,33 @@ msgstr "'%s' m msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' má obsahovat pouze písmena nebo èíslice." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Nápovìda)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 +#: ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(zálo¾ky)" -#: ../src/common/resourc2.cpp:297 ../src/common/resourc2.cpp:1362 -#: ../src/common/resource.cpp:1816 ../src/common/resource.cpp:1946 +#: ../src/common/resourc2.cpp:297 +#: ../src/common/resourc2.cpp:1362 +#: ../src/common/resource.cpp:1816 +#: ../src/common/resource.cpp:1946 #: ../src/common/resource.cpp:3030 -msgid "" -", expected static, #include or #define\n" +msgid ", expected static, #include or #define\n" "whilst parsing resource." -msgstr "" -", oèekávám static, #include nebo #define\n" +msgstr ", oèekávám static, #include nebo #define\n" "bìhem parsování resource." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 +#: ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 +#: ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -290,65 +328,33 @@ msgstr "11 x 17 palc msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "Obálka 6 3/4, 3 5/8 x 6 1/2 palce" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": soubor neexistuje!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": neznámá znaková sada" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": neznámé kódování" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Zpìt" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 -msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " -msgstr "" -"Obyèejné písmo
    (a podtr¾ené. " -"Kurziva. Tuèné. Tuèná kurziva.
    velikost -2
    velikost -1
    velikost +0
    velikost +1
    velikost +2
    velikost +3
    velikost +4

    Neproporcionální písmo.
    " -"tuèné kurziva tuèná kurziva " -"podtr¾ené
    velikost -2
    velikost -1
    velikost +0
    velikost +1
    velikost +2
    velikost +3
    velikost " -"+4
    " +#: ../src/html/helpfrm.cpp:994 +msgid "
    Normal face
    (and underlined. Italic face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " +msgstr "
    Normální
    (a podtr¾ené. Kurzíva. Tuèné. Tuèná kurzíva.
    velikost -2
    velikost -1
    velikost +0
    velikost +1
    velikost +2
    velikost +3
    velikost +4

    Neproporcionální písmo.
    tuèné kurzíva tuèná kurzíva podtr¾ené
    velikost -2
    velikost -1
    velikost +0
    velikost +1
    velikost +2
    velikost +3
    velikost +4

    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -374,7 +380,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Pøidá tuto stránku k zálo¾kám" @@ -382,7 +388,7 @@ msgstr "P msgid "Add to custom colours" msgstr "Pøidat k u¾ivatelským barvám" -#: ../src/html/helpctrl.cpp:95 +#: ../src/html/helpctrl.cpp:100 #, c-format msgid "Adding book %s" msgstr "Pøidávám knihu %s" @@ -391,7 +397,7 @@ msgstr "P msgid "All" msgstr "V¹echny" -#: ../src/generic/filedlgg.cpp:1052 +#: ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "V¹echny soubory (*)|*" @@ -404,7 +410,7 @@ msgstr "U msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Pøipojit log k souboru '%s' (pokud zvolíte [Ne], soubor pøepí¹ete)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabské (ISO-8859-6)" @@ -428,10 +434,10 @@ msgstr "str msgid "B6 Envelope, 176 x 125 mm" msgstr "Obálka B6, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 -#, fuzzy +#: ../src/common/imagbmp.cpp:468 +#: ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." -msgstr "PNM: Nemohu alokovat pamì»." +msgstr "BMP: Nemohu alokovat pamì»." #: ../src/common/imagbmp.cpp:86 msgid "BMP: Couldn't save invalid image." @@ -454,28 +460,28 @@ msgid "BMP: Couldn't write the file (BitmapInfo) header." msgstr "BMP: Nemohu zapsat hlavièku souboru (BitmapInfo)." #: ../src/common/imagbmp.cpp:120 -#, fuzzy msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: wxImage nemá vlastní wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Zpìt" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltské (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltské (staré) (ISO-8859-4)" -#: ../src/common/resourc2.cpp:840 ../src/common/resource.cpp:2500 +#: ../src/common/resourc2.cpp:840 +#: ../src/common/resource.cpp:2500 #, c-format msgid "Bitmap resource specification %s not found." msgstr "Bitmap resource %s nenalezen." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Tuèné" @@ -511,17 +517,19 @@ msgstr "Ob msgid "C65 Envelope, 114 x 229 mm" msgstr "Obálka C65, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1383 #, c-format msgid "Can not enumerate files '%s'" msgstr "Nemohu zjistit soubory odpovídající masce '%s'" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 +#: ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Nemohu zjistit soubory v adresáøi '%s'" -#: ../src/mac/thread.cpp:472 ../src/msw/thread.cpp:685 +#: ../src/mac/thread.cpp:472 +#: ../src/msw/thread.cpp:685 #, c-format msgid "Can not resume thread %x" msgstr "Nemohu obnovit vlákno %x" @@ -530,7 +538,8 @@ msgstr "Nemohu obnovit vl msgid "Can not start thread: error writing TLS." msgstr "Nemohu spustit vlákno: chyba pøi zápisu TLS." -#: ../src/mac/thread.cpp:448 ../src/msw/thread.cpp:670 +#: ../src/mac/thread.cpp:448 +#: ../src/msw/thread.cpp:670 #, c-format msgid "Can not suspend thread %x" msgstr "Nemohu pozastavit vlákno %x" @@ -543,7 +552,7 @@ msgstr "Nemohu po msgid "Can't &Undo " msgstr "Nemohu vzít zpìt" -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1315 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "Nemohu detekovat formát obrázku '%s': soubor neexistuje." @@ -558,32 +567,30 @@ msgstr "Nemohu zav msgid "Can't copy values of unsupported type %d." msgstr "Nemohu kopírovat hodnoty nepodporovaného typu %d" -#: ../src/msw/toplevel.cpp:295 -#, fuzzy +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" -msgstr "Nemohu vytvoøit dialog pomocí ¹ablony '%s'" +msgstr "Nemohu vytvoøit dialog pomocí ¹ablony z pamìti" -#: ../src/os2/toplevel.cpp:331 -#, fuzzy, c-format +#: ../src/os2/toplevel.cpp:369 +#, c-format msgid "Can't create dialog using template '%ul'" -msgstr "Nemohu vytvoøit dialog pomocí ¹ablony '%s'" - -#: ../src/msw/listctrl.cpp:319 -msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" -"Nemohu vytvoøit ovládací prvek list, zkontrolujte, jestli máte " -"nainstalovanou comctl32.dll." + +#: ../src/msw/listctrl.cpp:334 +msgid "Can't create list control window, check that comctl32.dll is installed." +msgstr "Nemohu vytvoøit ovládací prvek list, zkontrolujte, jestli máte nainstalovanou comctl32.dll." #: ../src/msw/registry.cpp:402 #, c-format msgid "Can't create registry key '%s'" msgstr "Nemohu vytvoøit registrový klíè '%s'" -#: ../src/mac/thread.cpp:427 ../src/msw/thread.cpp:652 +#: ../src/mac/thread.cpp:427 +#: ../src/msw/thread.cpp:652 msgid "Can't create thread" msgstr "Nemohu vytvoøit vlákno" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "Nelze vytvoøit okno tøídy %s" @@ -628,7 +635,8 @@ msgstr "Nemohu zjistit pozici v souboru '%s'" msgid "Can't get info about registry key '%s'" msgstr "Nemohu získat informace o registrovém klíèi '%s'" -#: ../src/common/image.cpp:913 ../src/common/image.cpp:933 +#: ../src/common/image.cpp:913 +#: ../src/common/image.cpp:933 #, c-format msgid "Can't load image from file '%s': file does not exist." msgstr "Nemohu naèíst obrázek ze souboru '%s': soubor neexistuje." @@ -648,17 +656,19 @@ msgstr "Nemohu otev msgid "Can't read value of '%s'" msgstr "Nemohu pøeèíst hodnotu '%s'" -#: ../src/msw/registry.cpp:777 ../src/msw/registry.cpp:816 +#: ../src/msw/registry.cpp:777 +#: ../src/msw/registry.cpp:816 #, c-format msgid "Can't read value of key '%s'" msgstr "Nemohu naèíst hodnotu klíèe '%s'" #: ../src/common/image.cpp:955 -#, fuzzy, c-format +#, c-format msgid "Can't save image to file '%s': unknown extension." -msgstr "Nemohu naèíst obrázek ze souboru '%s': soubor neexistuje." +msgstr "Nemohu ulo¾it do souboru '%s': neznámá pøípona." -#: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 +#: ../src/generic/logg.cpp:551 +#: ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." msgstr "Nemohu ulo¾it obsah logu do souboru." @@ -666,101 +676,106 @@ msgstr "Nemohu ulo msgid "Can't set thread priority" msgstr "Nemohu nastavit prioritu vlákna" -#: ../src/msw/registry.cpp:802 ../src/msw/registry.cpp:928 +#: ../src/msw/registry.cpp:802 +#: ../src/msw/registry.cpp:928 #, c-format msgid "Can't set value of '%s'" msgstr "Nemohu nastavit hodnotu '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 -#: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 -#: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 +#: ../src/gtk/fontdlg.cpp:144 +#: ../src/gtk/filedlg.cpp:173 +#: ../src/html/helpfrm.cpp:976 #: ../src/motif/msgdlg.cpp:182 +#: ../src/common/dlgcmn.cpp:246 +#: ../src/generic/fontdlgg.cpp:255 +#: ../src/generic/proplist.cpp:511 +#: ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/progdlgg.cpp:211 +#: ../src/generic/filedlgg.cpp:1181 +#: ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/prntdlgg.cpp:453 msgid "Cancel" msgstr "Storno" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 +#: ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "Nemohu pøevést dialogové jednotky: dialog není znám." -#: ../src/common/strconv.cpp:929 -#, fuzzy, c-format +#: ../src/common/strconv.cpp:963 +#, c-format msgid "Cannot convert from encoding '%s'!" -msgstr "Neznámé kódování '%s'!" +msgstr "Text nelze zkonvertovat z kódování '%s'!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Nemohu nalézt aktivní vytáèené pøipojení: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "Nemohu nalézt kontejner pro anonymní ovládací prvek '%s'." -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, c-format msgid "Cannot find font node '%s'." msgstr "Chybí uzel s fontem '%s'." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Nemohu najít umístìní adresáøe" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Nemohu zjistit rozsah priorit pro plánovací politiku %d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Nemohu zjistit jméno poèítaèe" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Nemohu zjistit oficiální jméno poèítaèe" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Nemohu zavìsit - ¾ádná aktivní vytáèená pøipojení." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Nemohu inicializovat OLE" #: ../src/mgl/app.cpp:414 -#, fuzzy msgid "Cannot initialize SciTech MGL!" -msgstr "Nemohu inicializovat OLE" +msgstr "Nemohu inicializovat knihovnu SciTech MGL!" -#: ../src/mgl/window.cpp:546 -#, fuzzy +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." -msgstr "Nemohu inicializovat OLE" +msgstr "Nemohu inicializovat obrazovku." -#: ../src/msw/volume.cpp:627 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:634 +#, c-format msgid "Cannot load icon from '%s'." -msgstr "Nemohu ze '%s' získat rozmìry." +msgstr "Nemohu naèíst ikonu z '%s'." -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "Nemohu naèíst zdroje ze souboru '%s'." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Nelze otevøít HTML dokument: %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:584 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Nelze otevøít HTML nápovìdu: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Nemohu otevøít URL '%s'" @@ -770,60 +785,61 @@ msgstr "Nemohu otev msgid "Cannot open contents file: %s" msgstr "Nelze otevøít soubor s obsahem: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "Soubor '%s' nelze otevøít." -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Nemohu otevøít soubor k PostScriptovému tisku!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Nelze otevøít soubor s rejstøíkem: %s" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Nemohu ze '%s' získat souøadnice." -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, c-format msgid "Cannot parse dimension from '%s'." msgstr "Nemohu ze '%s' získat rozmìry." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Nemohu tisknout prázdnou stránku." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:195 +#: ../src/msw/volume.cpp:526 +#, c-format msgid "Cannot read typename from '%s'!" -msgstr "Nemohu ze '%s' získat souøadnice." +msgstr "Nemohu pøeèíst typ z '%s'!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Nemohu obnovit plánovací politiku vlákna." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Nemohu spustit vlákno: chyba zápisu TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Rozli¹ovat velká/malá" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Keltské (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "Støedoevropské (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Vyberte ISP, ke kterému se má volat" @@ -831,37 +847,47 @@ msgstr "Vyberte ISP, ke kter msgid "Choose font" msgstr "Vyberte písmo" +#: ../src/generic/mdig.cpp:112 +msgid "Cl&ose" +msgstr "&Zavøít" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Smazat obsah logu" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 #: ../src/generic/proplist.cpp:506 +#: ../src/generic/progdlgg.cpp:358 msgid "Close" msgstr "Zavøít" -#: ../src/univ/themes/win32.cpp:4547 +#: ../src/univ/themes/win32.cpp:4549 msgid "Close\tAlt-F4" -msgstr "" +msgstr "Zavøít\tAlt-F4" + +#: ../src/generic/mdig.cpp:113 +msgid "Close All" +msgstr "Zavøít v¹e" #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Zavøít okno" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Poèítaè" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Polo¾ka konfigurace nemù¾e zaèínat na '%c'" -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 msgid "Confirm" msgstr "Potvrdit" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "Potvrïte aktualizaci registru" @@ -869,20 +895,21 @@ msgstr "Potvr msgid "Connecting..." msgstr "Pøipojuji se..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Obsah" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "Pøevod do znakové sady '%s' nefunguje." #: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" msgstr "Kopie:" -#: ../src/common/resourc2.cpp:287 ../src/common/resource.cpp:1806 +#: ../src/common/resourc2.cpp:287 +#: ../src/common/resource.cpp:1806 #: ../src/common/resource.cpp:1936 #, c-format msgid "Could not find resource include file %s." @@ -892,44 +919,42 @@ msgstr "Nemohu nal msgid "Could not find tab for id" msgstr "Nemohu najít tab k id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Nemohu naèíst Rich Edit DLL '%s'" #: ../src/common/resource.cpp:802 #, c-format -msgid "" -"Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" +msgid "Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" " or provide #define (see manual for caveats)" -msgstr "" -"Nemohu zjistit tøídu prvku (control) nebo jeho id: '%s'. Pou¾ijte (nenulové) " -"èíslo\n" +msgstr "Nemohu zjistit tøídu prvku (control) nebo jeho id: '%s'. Pou¾ijte (nenulové) èíslo\n" " nebo poskytnìte #define (viz. manuál)" #: ../src/common/resource.cpp:1251 #, c-format -msgid "" -"Could not resolve menu id '%s'. Use (non-zero) integer instead\n" +msgid "Could not resolve menu id '%s'. Use (non-zero) integer instead\n" "or provide #define (see manual for caveats)" -msgstr "" -"Nemohu zjistit id menu '%s'. Pou¾ijte (nenulové) èíslo\n" +msgstr "Nemohu zjistit id menu '%s'. Pou¾ijte (nenulové) èíslo\n" "nebo poskytnìte #define (viz. manuál)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Nemohu zobrazit náhled dokumentu." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 msgid "Could not start printing." msgstr "Nemohu zahájit tisk." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Nemohu pøenést data do okna." -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 -#: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 +#: ../src/msw/dragimag.cpp:158 +#: ../src/msw/dragimag.cpp:194 +#: ../src/msw/imaglist.cpp:152 +#: ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." msgstr "Nemohu pøidat obrázek do seznamu." @@ -938,42 +963,44 @@ msgstr "Nemohu p msgid "Couldn't create a timer" msgstr "Nemohu vytvoøit èasovaè" -#: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 +#: ../src/mgl/cursor.cpp:135 +#: ../src/mgl/cursor.cpp:166 msgid "Couldn't create cursor." msgstr "Nemohu vytvoøit kurzor." -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 +#: ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Nemohu v dynamické knihovnì nalézt symbol '%s'" -#: ../src/mac/thread.cpp:502 ../src/msw/thread.cpp:711 +#: ../src/mac/thread.cpp:502 +#: ../src/msw/thread.cpp:711 msgid "Couldn't get the current thread pointer" msgstr "Nemohu získat ukazatel na aktuální vlákno" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." -msgstr "" -"Nemohu naèíst PNG obrázek - buï je po¹kozený soubor nebo je nedostatek " -"pamìti." +msgstr "Nemohu naèíst PNG obrázek - buï je po¹kozený soubor nebo je nedostatek pamìti." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Nemohu zaregistrovat formát schránky '%s'." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Nemohu získat informace o polo¾ce %d v seznamu." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 -#, fuzzy +#: ../src/common/imagpng.cpp:338 +#: ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." -msgstr "JPEG: Nemohu ulo¾it obrázek." +msgstr "Nemohu ulo¾it PNG obrázek." -#: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 +#: ../src/mac/thread.cpp:749 +#: ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" msgstr "Nemohu pøeru¹it vlákno" @@ -981,15 +1008,20 @@ msgstr "Nemohu p msgid "Create directory" msgstr "Vytváøení adresáøe" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 +#: ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Vytvoøit nový adresáø" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "&Vyjmout" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Aktuální adresáø:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "Cyrilice (ISO-8859-5)" @@ -997,31 +1029,27 @@ msgstr "Cyrilice (ISO-8859-5)" msgid "D sheet, 22 x 34 in" msgstr "stránka D, 22 x 34 palcù" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "Po¾adavek na DDE poke selhal" -#: ../src/common/imagbmp.cpp:618 -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "DIB hlavièka: Zatím neumím zpracovat 4bitové kódování." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "DIB hlavièka: Kódování neodpovídá bitové hloubce." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "DIB hlavièka: Obrázek má vý¹ku vìt¹í ne¾ 32767 pixelù." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "DIB hlavièka: Obrázek má ¹íøku vìt¹í ne¾ 32767 pixelù." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." msgstr "DIB hlavièka: Neznámá bitová hloubka." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." msgstr "DIB hlavièka: Neznámé kódování." @@ -1029,15 +1057,15 @@ msgstr "DIB hlavi msgid "DL Envelope, 110 x 220 mm" msgstr "Obálka DL, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Datum" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" -msgstr "Ozdobný" +msgstr "Ozdobné" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "Výchozí znaková sada" @@ -1046,54 +1074,43 @@ msgstr "V msgid "Deleted stale lock file '%s'." msgstr "Smazán starý zámkový soubor '%s'." -#: ../src/msw/dialup.cpp:346 -msgid "" -"Dial up functions are unavailable because the remote access service (RAS) is " -"not installed on this machine. Please install it." -msgstr "" -"Vytáèené pøipojení není dostupné, proto¾e Remote Access Service (RAS) není " -"nainstalován. Prosím, nainstalujte ho." +#: ../src/msw/dialup.cpp:348 +msgid "Dial up functions are unavailable because the remote access service (RAS) is not installed on this machine. Please install it." +msgstr "Vytáèené pøipojení není dostupné, proto¾e Remote Access Service (RAS) není nainstalován. Prosím, nainstalujte ho." -#: ../src/os2/toplevel.cpp:329 -#, fuzzy +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" -msgstr "Nezapomnìl(a) jste vlo¾it wx/msw/wx.rc do resource souboru?" +msgstr "" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Víte, ¾e..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1279 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Nelze vytvoøit adresáø '%s'" #: ../src/mgl/dirmgl.cpp:217 -#, fuzzy, c-format +#, c-format msgid "Directory '%s' doesn't exist!" -msgstr "Adresáø neexistuje" +msgstr "Adresáø '%s' neexistuje!" #: ../src/generic/dirdlgg.cpp:188 msgid "Directory does not exist" msgstr "Adresáø neexistuje" -#: ../src/html/helpfrm.cpp:374 -msgid "" -"Display all index items that contain given substring. Search is case " -"insensitive." -msgstr "" -"Zobrazí v¹echny polo¾ky rejstøíku, které obsahují daný podøetìzec. " -"Nerozli¹uje velká a malá písmena." +#: ../src/html/helpfrm.cpp:379 +msgid "Display all index items that contain given substring. Search is case insensitive." +msgstr "Zobrazí v¹echny polo¾ky rejstøíku, které obsahují daný podøetìzec. Nerozli¹uje velká a malá písmena." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Zobrazí dialog s nastaveními" -#: ../src/msw/mimetype.cpp:679 -#, c-format +#: ../src/msw/mimetype.cpp:682 msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s\" ?\n" "Current value is \n" "%s, \n" "New value is \n" @@ -1105,7 +1122,7 @@ msgstr "" "Nová hodnota je \n" "%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Chcete ulo¾it zmìny do dokumentu %s?" @@ -1114,7 +1131,7 @@ msgstr "Chcete ulo msgid "Done" msgstr "Hotovo" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Hotovo." @@ -1134,23 +1151,28 @@ msgstr "Dosa msgid "Entries found" msgstr "Nalezené polo¾ky" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format -msgid "" -"Environment variables expansion failed: missing '%c' at position %d in '%s'." -msgstr "" -"Chyba bìhem expanze promìnných prostøedí: chybí '%c' na pozici %d v '%s'." +msgid "Environment variables expansion failed: missing '%c' at position %d in '%s'." +msgstr "Chyba bìhem expanze promìnných prostøedí: chybí '%c' na pozici %d v '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 -#: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 +#: ../src/gtk/fontdlg.cpp:71 +#: ../src/gtk/filedlg.cpp:80 +#: ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/dirctrlg.cpp:704 +#: ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 +#: ../src/generic/filedlgg.cpp:841 +#: ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 +#: ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 +#: ../src/generic/filedlgg.cpp:1418 msgid "Error" msgstr "Chyba" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 +#: ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Chyba" @@ -1158,7 +1180,7 @@ msgstr "Chyba" msgid "Error creating directory" msgstr "Chyba pøi vytváøení adresáøe" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "Chyba pøi naèítání DIB obrázku." @@ -1166,7 +1188,7 @@ msgstr "Chyba p msgid "Error: " msgstr "Chyba: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1174,7 +1196,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Odhadovaný èas : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Chyba pøi volání pøíkazu '%s'" @@ -1183,25 +1205,35 @@ msgstr "Chyba p msgid "Executive, 7 1/4 x 10 1/2 in" msgstr "Executive, 7 1/4 x 10 1/2 palce" -#: ../src/common/resourc2.cpp:326 ../src/common/resourc2.cpp:1391 -#: ../src/common/resource.cpp:1845 ../src/common/resource.cpp:1975 +#: ../src/common/resourc2.cpp:326 +#: ../src/common/resourc2.cpp:1391 +#: ../src/common/resource.cpp:1845 +#: ../src/common/resource.cpp:1975 #: ../src/common/resource.cpp:3059 msgid "Expected '*' whilst parsing resource." msgstr "Pøi parsování resource oèekávám '*'." -#: ../src/common/resourc2.cpp:342 ../src/common/resourc2.cpp:1407 -#: ../src/common/resource.cpp:1862 ../src/common/resource.cpp:1991 +#: ../src/common/resourc2.cpp:342 +#: ../src/common/resourc2.cpp:1407 +#: ../src/common/resource.cpp:1862 +#: ../src/common/resource.cpp:1991 #: ../src/common/resource.cpp:3076 msgid "Expected '=' whilst parsing resource." msgstr "Pøi parsování resource oèekávám '='." -#: ../src/common/resourc2.cpp:312 ../src/common/resourc2.cpp:1377 -#: ../src/common/resource.cpp:1831 ../src/common/resource.cpp:1961 +#: ../src/common/resourc2.cpp:312 +#: ../src/common/resourc2.cpp:1377 +#: ../src/common/resource.cpp:1831 +#: ../src/common/resource.cpp:1961 #: ../src/common/resource.cpp:3045 msgid "Expected 'char' whilst parsing resource." msgstr "Pøi parsování resource oèekávám 'char'." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "Roz¹íøená unixová kódová stránka pro Japon¹tinu (EUC-JP)" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Nepodaøilo se %s pøipojení k Internetu: %s" @@ -1210,7 +1242,7 @@ msgstr "Nepoda msgid "Failed to access lock file." msgstr "Nelze pøistupovat k zámkovému souboru." -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" msgstr "Nemohu uzavøít soubor." @@ -1223,11 +1255,11 @@ msgstr "Nelze zamknout z msgid "Failed to close the clipboard." msgstr "Nemohu uzavøít schránku." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Nepodaøilo se pøipojit: chybí u¾ivatelské jméno nebo heslo." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Nelze se pøipojit: ¾ádný ISP." @@ -1241,12 +1273,12 @@ msgstr "Nelze zkop msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Nelze zkopírovat obsah registrového klíèe '%s' do '%s'." -#: ../src/common/filefn.cpp:1106 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1131 +#, c-format msgid "Failed to copy the file '%s' to '%s'" -msgstr "Nelze se dotknout souboru '%s'" +msgstr "Selhalo kopírování souboru '%s' na '%s'" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Nelze vytvoøit DDE øe»ezec" @@ -1258,32 +1290,38 @@ msgstr "Nepoda msgid "Failed to create a status bar." msgstr "Nelze vytvoøit status bar." -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" msgstr "Nelze vytvoøit jméno doèasného souboru" -#: ../src/msw/utilsexc.cpp:195 -#, fuzzy +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" -msgstr "Nelze vytvoøit status bar." +msgstr "Nelze vytvoøit status anonymní rouru." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Nelze navázat spojení se server '%s' na téma '%s'" -#: ../src/msw/toplevel.cpp:293 -#, fuzzy +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" -msgstr "Nemohu vytvoøit adresáø" +msgstr "" + +#: ../src/unix/mimetype.cpp:372 +#, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Nelze vytvoøit u¾ivatelský %s/.gnome." + +#: ../src/unix/mimetype.cpp:381 +#, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Nelze vytvoøit adresáø %s/mime-info." #: ../src/generic/dirdlgg.cpp:201 -#, fuzzy, c-format -msgid "" -"Failed to create directory '%s'\n" +#, c-format +msgid "Failed to create directory '%s'\n" "(Do you have the required permissions?)" -msgstr "" -"\n" +msgstr "Nemohu vytvoøit adresáø '%s'\n" "(Máte potøebná pøístupová práva?)" #: ../src/msw/mimetype.cpp:168 @@ -1296,62 +1334,61 @@ msgstr "Nelze vytvo msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "Nemohu vytvoøit standardní dialog 'Najít' (chyba %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Nelze zobrati HTML dokument v kódování %s" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 +#: ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Nemohu vyprázdnit shcránku." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Nelze navázat 'advise loop' s DDE serverem" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Nepodaøilo se navázat vytáèené spojení: %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 +#: ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Nepodaøilo se spustit '%s'\n" -#: ../src/common/resourc2.cpp:808 ../src/common/resource.cpp:2465 +#: ../src/common/resourc2.cpp:808 +#: ../src/common/resource.cpp:2465 #, c-format -msgid "" -"Failed to find XBM resource %s.\n" +msgid "Failed to find XBM resource %s.\n" "Forgot to use wxResourceLoadBitmapData?" -msgstr "" -"Nemohu nalézt XBM resource %s.\n" +msgstr "Nemohu nalézt XBM resource %s.\n" "Nezapomnìl jste pou¾ít wxResourceLoadBitmapData?" -#: ../src/common/resourc2.cpp:959 ../src/common/resource.cpp:2619 +#: ../src/common/resourc2.cpp:959 +#: ../src/common/resource.cpp:2619 #, c-format -msgid "" -"Failed to find XBM resource %s.\n" +msgid "Failed to find XBM resource %s.\n" "Forgot to use wxResourceLoadIconData?" -msgstr "" -"Nemohu nalézt XBM resource %s.\n" +msgstr "Nemohu nalézt XBM resource %s.\n" "Nezapomnìl jste pou¾ít wxResourceLoadIconData?" -#: ../src/common/resourc2.cpp:823 ../src/common/resource.cpp:2480 +#: ../src/common/resourc2.cpp:823 +#: ../src/common/resource.cpp:2480 #, c-format -msgid "" -"Failed to find XPM resource %s.\n" +msgid "Failed to find XPM resource %s.\n" "Forgot to use wxResourceLoadBitmapData?" -msgstr "" -"Nemohu nalézt XPM resource %s.\n" +msgstr "Nemohu nalézt XPM resource %s.\n" "Nezapomnìl jste pou¾ít wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "Nepodaøilo se získat jména ISP: %s" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." msgstr "Nemohu získat data ze schránky." @@ -1359,20 +1396,19 @@ msgstr "Nemohu z msgid "Failed to get data from the clipboard" msgstr "Nelze získat data ze schránky" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Nemohu zjistit systémový UTC èas." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Nepodaøilo se zjistit místní systémový èas" -#: ../src/common/filefn.cpp:1487 -#, fuzzy +#: ../src/common/filefn.cpp:1512 msgid "Failed to get the working directory" -msgstr "Nemohu vytvoøit adresáø" +msgstr "Nemohu zjistit aktuální pracovní adresáø" -#: ../src/univ/theme.cpp:120 +#: ../src/univ/theme.cpp:122 msgid "Failed to initialize GUI: no built-in themes found." msgstr "Nemohu inicializovat GUI: nejsou ¾ádná zabudované témata" @@ -1384,35 +1420,32 @@ msgstr "Nemohu se inicializovat MS HTML Help komponentu." msgid "Failed to initialize OpenGL" msgstr "Nemohu inicializovat OpenGL" -#: ../src/unix/threadpsx.cpp:871 -msgid "" -"Failed to join a thread, potential memory leak detected - please restart the " -"program" -msgstr "" -"Nemohu pøipojit vlákno, zji¹tìna mo¾ná chybná alokace pamìti - restartujte " -"prosím program" +#: ../src/unix/threadpsx.cpp:887 +msgid "Failed to join a thread, potential memory leak detected - please restart the program" +msgstr "Nemohu pøipojit vlákno, zji¹tìna mo¾ná chybná alokace pamìti - restartujte prosím program" -#: ../src/msw/utils.cpp:721 +#: ../src/msw/utils.cpp:723 #, c-format msgid "Failed to kill process %d" msgstr "Nepodaøilo se zabít proces %d" #: ../src/common/iconbndl.cpp:66 -#, fuzzy, c-format +#, c-format msgid "Failed to load image %d from file '%s'." -msgstr "Nelze zamknout zámkový soubor '%s'" +msgstr "Selhalo naèítání obrázku %d ze souboru '%s'." -#: ../src/msw/volume.cpp:340 -#, fuzzy +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." -msgstr "Nemohu získat data ze schránky." +msgstr "Selhalo naèítání knihovny mpr.dll." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 +#: ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Nelze naèíst sdílenou knihovnu '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 +#: ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Nelze naèíst sdílenou knihovnu '%s', chyba '%s'" @@ -1427,17 +1460,17 @@ msgstr "Nelze zamknout z msgid "Failed to match '%s' in regular expression: %s" msgstr "Chyba pøi hledání výskytu regulárního výrazu v '%s': %s" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, c-format msgid "Failed to modify file times for '%s'" msgstr "Nelze zmìnit èas pøístupu k souboru '%s'" -#: ../src/common/filename.cpp:160 -#, fuzzy, c-format +#: ../src/common/filename.cpp:164 +#, c-format msgid "Failed to open '%s' for %s" -msgstr "Nelze otevøít soubor '%s' pro ètení" +msgstr "Nelze otevøít soubor '%s' pro %s" -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." msgstr "Nemohu otevøít doèasný soubor." @@ -1453,21 +1486,20 @@ msgstr "Nepoda msgid "Failed to read PID from lock file." msgstr "Nepodaøilo se pøeèíst PID ze zámkového souboru." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Nepodaøilo se pøesmìrovat vstup/výstup synovského procesu" -#: ../src/msw/utilsexc.cpp:600 -#, fuzzy +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" -msgstr "Nepodaøilo se pøesmìrovat vstup/výstup synovského procesu" +msgstr "Chyba pøi pøesmìrovávání vstupu a výstupu synovského procesu" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Nelze zaregistrovat DDE server '%s'" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Nemohu ulo¾it kódování znakové sady '%s'." @@ -1496,12 +1528,12 @@ msgstr "Nelze p msgid "Failed to retrieve data from the clipboard." msgstr "Nemohu získat data ze schránky." -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Nelze zjistit èasy pøístupu k souboru '%s'" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "Nepodaøilo se získat text chybového hlá¹ení RAS" @@ -1509,7 +1541,7 @@ msgstr "Nepoda msgid "Failed to retrieve the supported clipboard formats" msgstr "Nelze zjistit formáty podporované schránkou" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Nepodaøilo se poslat DDE advise notifikaci" @@ -1522,11 +1554,12 @@ msgstr "Nemohu nastavit p msgid "Failed to set clipboard data." msgstr "Nemohu ulo¾it data do schránky." -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" msgstr "Nelze nastavit pøístupová práva k doèasnému souboru" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 +#: ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Nemohu nastavit prioritu vlákna %d." @@ -1536,20 +1569,20 @@ msgstr "Nemohu nastavit prioritu vl msgid "Failed to store image '%s' to memory VFS!" msgstr "Nepodaøilo se ulo¾it obrázek '%s' do pamì»ového VFS!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Nemohu ukonèit vlákno." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "Nelze ukonèit 'advise loop' s DDE serverem" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Nelze ukonèit vytáèené spojení: %s" -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, c-format msgid "Failed to touch the file '%s'" msgstr "Nelze se dotknout souboru '%s'" @@ -1559,7 +1592,7 @@ msgstr "Nelze se dotknout souboru '%s'" msgid "Failed to unlock lock file '%s'" msgstr "Nelze odemknout zámkový soubor '%s'" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Nelze odregistrovat DDE server '%s'" @@ -1577,7 +1610,8 @@ msgstr "Kritick msgid "Fatal error: " msgstr "Kritická chyba: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 +#: ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Fatální chyba: program se ukonèí" @@ -1586,37 +1620,40 @@ msgstr "Fat msgid "File %s does not exist." msgstr "Soubor %s neexistuje." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Soubor '%s' existuje, opravdu ho chcete pøepsat?" -#: ../src/msw/filedlg.cpp:505 -#, fuzzy, c-format -msgid "" -"File '%s' already exists.\n" +#: ../src/msw/filedlg.cpp:518 +#, c-format +msgid "File '%s' already exists.\n" "Do you want to replace it?" -msgstr "Soubor '%s' existuje, opravdu ho chcete pøepsat?" +msgstr "Soubor '%s' ji¾ existuje.\n" +"Opravdu ho chcete pøepsat?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "Soubor nelze naèíst." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 +#: ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Chyba souboru" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Soubor tohoto jména ji¾ existuje." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Soubory (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Najít" @@ -1628,25 +1665,27 @@ msgstr "Neproporcion msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 palcù" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Velikost písma:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Selhalo forkování" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Dále" -#: ../src/common/resourc2.cpp:295 ../src/common/resourc2.cpp:1360 -#: ../src/common/resource.cpp:1814 ../src/common/resource.cpp:1944 +#: ../src/common/resourc2.cpp:295 +#: ../src/common/resourc2.cpp:1360 +#: ../src/common/resource.cpp:1814 +#: ../src/common/resource.cpp:1944 #: ../src/common/resource.cpp:3028 msgid "Found " msgstr "Nalezeno " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Nalezeno výskytù: %i" @@ -1656,9 +1695,8 @@ msgid "From:" msgstr "Od:" #: ../src/common/imaggif.cpp:100 -#, fuzzy msgid "GIF: Invalid gif index." -msgstr "Po¹kozený index v TIFF obrázku." +msgstr "GIF: Neplatný index." #: ../src/common/imaggif.cpp:75 msgid "GIF: data stream seems to be truncated." @@ -1692,39 +1730,32 @@ msgstr "German Std Fanfold, 8 1/2 x 12 palc msgid "GetUnusedColour:: No Unused Color in image " msgstr "GetUnusedColour: v obrázku není ¾ádná nepou¾itá barva" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Jdi zpìt" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Jdi dopøedu" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Jdi o úroveò vý¹" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 +#: ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Jít do domovského adresáøe" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Jít do nadøazeného adresáøe" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" -msgstr "" +msgstr "Jdi na stránku" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Øecké (ISO-8859-7)" @@ -1733,39 +1764,32 @@ msgstr " msgid "HTML anchor %s does not exist." msgstr "Kotva HTML %s neexistuje." -#: ../src/html/helpfrm.cpp:1279 -msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" -msgstr "" -"soubory HTML (*.htm)|*.htm|soubory HTML (*.html)|*.html|HTML nápovìda " -"(*.htb)|*.htb|HTML nápovìda (*.zip)|*.zip|Projekt HTML nápovìdy " -"(*.hhp)|*.hhp|V¹echny soubory (*.*)|*" +#: ../src/html/helpfrm.cpp:1307 +msgid "HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" +msgstr "soubory HTML (*.htm)|*.htm|soubory HTML (*.html)|*.html|HTML nápovìda (*.htb)|*.htb|HTML nápovìda (*.zip)|*.zip|Projekt HTML nápovìdy (*.hhp)|*.hhp|V¹echny soubory (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebrejské (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/msw/mdi.cpp:1324 +#: ../src/html/helpfrm.cpp:245 +#: ../src/common/dlgcmn.cpp:242 +#: ../src/generic/proplist.cpp:516 +#: ../src/generic/mdig.cpp:308 msgid "Help" msgstr "Nápovìda" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Nápovìda: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Nastavení prohlí¾eèe nápovìdy" -#: ../src/generic/helphtml.cpp:334 ../src/generic/helphtml.cpp:335 +#: ../src/generic/helphtml.cpp:334 +#: ../src/generic/helphtml.cpp:335 msgid "Help Index" msgstr "Index nápovìdy" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Tisk nápovìdy" @@ -1774,53 +1798,52 @@ msgstr "Tisk n msgid "Help: %s" msgstr "Nápovìda: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "ICO: Chyba pøi naèítání DIB masky." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 -#, fuzzy +#: ../src/common/imagbmp.cpp:1041 +#: ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 +#: ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 +#: ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" -msgstr "TIFF: Chyba pøi ukládání obrázku." +msgstr "ICO: Chyba pøi ukládání obrázku!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." -msgstr "" +msgstr "ICO: Obrázek je na ikonu pøíli¹ vysoký" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." -msgstr "" +msgstr "ICO: Obrázek je na ikonu pøíli¹ ¹iroký" -#: ../src/common/imagbmp.cpp:1167 -#, fuzzy +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." -msgstr "Po¹kozený index v TIFF obrázku." +msgstr "ICO: Neplatný index ikony." #: ../src/common/imagiff.cpp:767 -#, fuzzy msgid "IFF: data stream seems to be truncated." -msgstr "GIF: datový proud je useknutý pøed koncem." +msgstr "IFF: datový proud je useknutý pøed koncem." #: ../src/common/imagiff.cpp:751 -#, fuzzy msgid "IFF: error in IFF image format." -msgstr "GIF: chyba ve formátu GIF obrázku." +msgstr "IFF: chyba ve formátu IFF obrázku." #: ../src/common/imagiff.cpp:754 -#, fuzzy msgid "IFF: not enough memory." -msgstr "GIF: nedostatek pamìti." +msgstr "IFF: nedostatek pamìti." #: ../src/common/imagiff.cpp:757 -#, fuzzy msgid "IFF: unknown error!!!" -msgstr "GIF: neznámá chyba!!!" +msgstr "IFF: neznámá chyba!!!" -#: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 -#: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 +#: ../src/common/resourc2.cpp:989 +#: ../src/common/resourc2.cpp:1000 +#: ../src/common/resource.cpp:2649 +#: ../src/common/resource.cpp:2660 #, c-format msgid "Icon resource specification %s not found." msgstr "Icon resource specification %s nenalezen." @@ -1829,11 +1852,12 @@ msgstr "Icon resource specification %s nenalezen." msgid "Ill-formed resource file syntax." msgstr "©patná syntaxe resource souboru." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 +#: ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Nedovolené jméno adresáøe." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Neplatná specifikace souboru." @@ -1841,43 +1865,39 @@ msgstr "Neplatn msgid "Image and Mask have different sizes" msgstr "Obrázek a maska mají rùzné rozmìry" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." -msgstr "" +msgstr "Obrázek není typu %d." -#: ../src/msw/textctrl.cpp:249 -msgid "" -"Impossible to create a rich edit control, using simple text control instead. " -"Please reinstall riched32.dll" -msgstr "" -"Není mo¾né vytvoøit rich edit prvek, pou¾iji obyèejný. Pøeinstalujte prosím " -"riched32.dll." +#: ../src/msw/textctrl.cpp:270 +msgid "Impossible to create a rich edit control, using simple text control instead. Please reinstall riched32.dll" +msgstr "Není mo¾né vytvoøit rich edit prvek, pou¾iji obyèejný. Pøeinstalujte prosím riched32.dll." #: ../src/unix/utilsunx.cpp:390 msgid "Impossible to get child process input" msgstr "Není mo¾né získat vstup synovského procesu" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "Nelze zjistit pøístupová práva souboru '%s'" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1161 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "Nelze pøepsat soubor '%s'" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1212 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "Nelze nastavit pøístupová práva souboru '%s'" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Rejtøík" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Indské (ISO-8859-12)" @@ -1885,20 +1905,20 @@ msgstr "Indsk msgid "Invalid TIFF image index." msgstr "Po¹kozený index v TIFF obrázku." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "Neplatný XRC zdroj '%s': chybí koøenový uzel 'resource'." -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:398 #, c-format msgid "Invalid display mode specification '%s'." msgstr "©patné urèení grafického re¾imu '%s'." -#: ../src/x11/app.cpp:231 -#, fuzzy, c-format +#: ../src/x11/app.cpp:218 +#, c-format msgid "Invalid geometry specification '%s'" -msgstr "©patné urèení grafického re¾imu '%s'." +msgstr "©patné urèení geometrie '%s'." #: ../src/unix/snglinst.cpp:280 #, c-format @@ -1910,7 +1930,7 @@ msgstr "Chybn msgid "Invalid regular expression '%s': %s" msgstr "©patný regulární výraz '%s': %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Kurzíva" @@ -1926,11 +1946,12 @@ msgstr "JPEG: Nemohu na msgid "JPEG: Couldn't save image." msgstr "JPEG: Nemohu ulo¾it obrázek." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" -#: ../src/generic/prntdlgg.cpp:426 ../src/generic/prntdlgg.cpp:620 +#: ../src/generic/prntdlgg.cpp:426 +#: ../src/generic/prntdlgg.cpp:620 msgid "Landscape" msgstr "Na ¹íøku" @@ -1954,20 +1975,21 @@ msgstr "Letter Small, 8 1/2 x 11 in" msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 palcù" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Tenké" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/gtk/filedlg.cpp:249 +#: ../src/msw/filedlg.cpp:555 +#: ../src/motif/filedlg.cpp:357 +#: ../src/generic/filedlgg.cpp:1623 #, c-format msgid "Load %s file" msgstr "Naèíst soubor %s" -#: ../src/generic/filedlgg.cpp:1589 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" -msgstr "Naèíst soubor %s" +msgstr "Naèíst soubor" #: ../src/html/htmlwin.cpp:282 msgid "Loading : " @@ -1991,18 +2013,14 @@ msgid "MDI child" msgstr "MDI syn" #: ../src/msw/helpchm.cpp:60 -msgid "" -"MS HTML Help functions are unavailable because the MS HTML Help library is " -"not installed on this machine. Please install it." -msgstr "" -"Funkènost MS HTML Helpu není dostupná, proto¾e chybí pøíslu¹ná komponenta. " -"Prosím nainstalujte ji." +msgid "MS HTML Help functions are unavailable because the MS HTML Help library is not installed on this machine. Please install it." +msgstr "Funkènost MS HTML Helpu není dostupná, proto¾e chybí pøíslu¹ná komponenta. Prosím nainstalujte ji." -#: ../src/univ/themes/win32.cpp:4545 +#: ../src/univ/themes/win32.cpp:4547 msgid "Ma&ximize" -msgstr "" +msgstr "Ma&ximalizovat" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Soubor Mailcap %s, øádka %d: nekompletní polo¾ka ignorována." @@ -2018,13 +2036,13 @@ msgstr "Pam #: ../src/univ/themes/metal.cpp:174 msgid "Metal theme" -msgstr "" +msgstr "Téma Metal" -#: ../src/univ/themes/win32.cpp:4543 +#: ../src/univ/themes/win32.cpp:4545 msgid "Mi&nimize" -msgstr "" +msgstr "Mi&nimalizovat" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Soubor Mime.types %s, øádka %d: neukonèený uzávorkovaný øetìzec." @@ -2034,7 +2052,7 @@ msgstr "Soubor Mime.types %s, msgid "Mode %ix%i-%i not available." msgstr "Mód %ix%i-%i není k dispozici." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Moderní" @@ -2042,25 +2060,28 @@ msgstr "Modern msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Obálka Monarch, 3 7/8 x 7 1/2 palce" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." -msgstr "Dal¹í..." +msgstr "Více..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Jméno" -#: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/dirdlgg.cpp:272 +#: ../src/generic/dirdlgg.cpp:282 +#: ../src/generic/filedlgg.cpp:817 +#: ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NoveJmeno" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Následující stránka" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 +#: ../src/common/dlgcmn.cpp:219 msgid "No" msgstr "Ne" @@ -2068,12 +2089,15 @@ msgstr "Ne" msgid "No Unused Color in image being masked" msgstr "V obrázku není ¾ádná nepou¾itá barva" -#: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 -#: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 +#: ../src/common/resourc2.cpp:814 +#: ../src/common/resourc2.cpp:965 +#: ../src/common/resource.cpp:2471 +#: ../src/common/resource.cpp:2625 msgid "No XBM facility available!" msgstr "Chybí podpora XBM!" -#: ../src/common/resourc2.cpp:983 ../src/common/resource.cpp:2643 +#: ../src/common/resourc2.cpp:983 +#: ../src/common/resource.cpp:2643 msgid "No XPM icon facility available!" msgstr "Chybí podpora XPM ikon!" @@ -2081,19 +2105,18 @@ msgstr "Chyb msgid "No entries found." msgstr "Nenalezeny ¾ádné polo¾ky." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" "but an alternative encoding '%s' is available.\n" -"Do you want to use this encoding (otherwise you will have to choose another " -"one)?" +"Do you want to use this encoding (otherwise you will have to choose another one)?" msgstr "" "Nenalezen ¾ádný font pou¾itelný k zobrazení textu v kódování '%s',\n" "ale je k dispozici alternativní kódování '%s'.\n" "Pøejete si pou¾ít toto kódování (jinak si budete muset vybrat jiné)?" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2104,40 +2127,43 @@ msgstr "" "Pøejete si vybrat font, který se má s tímto kódováním pou¾ít\n" "(jinak se text v tomto kódování nezobrazí správnì)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "Nenalezen ¾ádný ovladaè pro XML uzel '%s' tøídy '%s'!" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 +#: ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Nenalezen ¾ádný ovladaè pro tento typ obrázkù." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 +#: ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "®ádný ovladaè pro typ obrázkù %d." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 +#: ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "®ádný ovladaè pro typ obrázkù %s." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "®ádný výskyt nenalezen" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Severské (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normální" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normální písmo:" @@ -2145,35 +2171,43 @@ msgstr "Norm msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11 palcù" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 -#: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 -#: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/gtk/fontdlg.cpp:136 +#: ../src/gtk/filedlg.cpp:167 +#: ../src/html/helpfrm.cpp:974 +#: ../src/common/dlgcmn.cpp:225 +#: ../src/generic/fontdlgg.cpp:254 +#: ../src/generic/proplist.cpp:499 +#: ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 +#: ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/logg.cpp:739 +#: ../src/generic/prntdlgg.cpp:452 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 +#: ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Otevøi HTML dokument" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/dirctrlg.cpp:733 +#: ../src/generic/filedlgg.cpp:841 +#: ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Zakázaná operace." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Volba '%s' vy¾aduje hodnotu, oèekávám '='." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Volba '%s' vy¾aduje hodnotu." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Volba '%s': '%s' neudává datum." @@ -2182,11 +2216,13 @@ msgstr "Volba '%s': '%s' neud msgid "Options" msgstr "Nastavení" -#: ../src/generic/prntdlgg.cpp:428 ../src/generic/prntdlgg.cpp:621 +#: ../src/generic/prntdlgg.cpp:428 +#: ../src/generic/prntdlgg.cpp:621 msgid "Orientation" msgstr "Orientace" -#: ../src/common/imagpcx.cpp:455 ../src/common/imagpcx.cpp:478 +#: ../src/common/imagpcx.cpp:455 +#: ../src/common/imagpcx.cpp:478 msgid "PCX: couldn't allocate memory" msgstr "PCX: Nemohu alokovat pamì»." @@ -2202,7 +2238,8 @@ msgstr "PCX: po msgid "PCX: this is not a PCX file." msgstr "PCX: tento soubor není PCX." -#: ../src/common/imagpcx.cpp:457 ../src/common/imagpcx.cpp:479 +#: ../src/common/imagpcx.cpp:457 +#: ../src/common/imagpcx.cpp:479 msgid "PCX: unknown error !!!" msgstr "PCX: neznámá chyba !!!" @@ -2222,12 +2259,12 @@ msgstr "PNM: form msgid "PNM: File seems truncated." msgstr "PNM: Soubor je nejspí¹ uøíznutý pøed koncem." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Strana %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Strana %d z %d" @@ -2240,21 +2277,23 @@ msgstr "Nastaven msgid "Pages" msgstr "Strany" -#: ../src/generic/prntdlgg.cpp:538 ../src/generic/prntdlgg.cpp:609 +#: ../src/generic/prntdlgg.cpp:538 +#: ../src/generic/prntdlgg.cpp:609 #: ../src/generic/prntdlgg.cpp:794 msgid "Paper Size" msgstr "Velikost papíru" -#: ../src/generic/prntdlgg.cpp:418 ../src/generic/prntdlgg.cpp:598 +#: ../src/generic/prntdlgg.cpp:418 +#: ../src/generic/prntdlgg.cpp:598 #: ../src/generic/prntdlgg.cpp:790 msgid "Paper size" msgstr "Velikost papíru" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Práva" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Nelze vytvoøit rouru" @@ -2262,15 +2301,16 @@ msgstr "Nelze vytvo msgid "Please choose a valid font." msgstr "Prosím vyberte korektní font." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 msgid "Please choose an existing file." msgstr "Vyberte prosím existující soubor." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Prosím vyberte si poskytovatele (ISP), ke kterému se chcete pøipojit" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2281,11 +2321,12 @@ msgstr "" "(je potøeba alespoò verze 4.70, ale vy máte %d.%02d),\n" "jinak tento program nebude fungovat správnì." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" -msgstr "" +msgstr "Vyèkejte prosím, a¾ skonèí tisk\n" -#: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 +#: ../src/generic/prntdlgg.cpp:425 +#: ../src/generic/prntdlgg.cpp:619 msgid "Portrait" msgstr "Na vý¹ku" @@ -2293,27 +2334,25 @@ msgstr "Na v msgid "PostScript file" msgstr "soubor PostScript" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Náhled:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Pøedchozí stránka" -#: ../src/generic/prntdlgg.cpp:110 ../src/generic/prntdlgg.cpp:124 +#: ../src/generic/prntdlgg.cpp:110 +#: ../src/generic/prntdlgg.cpp:124 msgid "Print" msgstr "Vytisknout" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Náhled tisku" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 +#: ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Chyba bìhem vytváøení náhledu." @@ -2333,7 +2372,7 @@ msgstr "Tisknout barevn msgid "Print spooling" msgstr "Tisková fronta" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Vytiskne tuto stránku" @@ -2341,7 +2380,7 @@ msgstr "Vytiskne tuto str msgid "Print to File" msgstr "Tisknout do souboru" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Tisknout..." @@ -2361,21 +2400,21 @@ msgstr "Nastaven msgid "Printer..." msgstr "Tiskárna..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 -#, fuzzy +#: ../src/common/prntbase.cpp:108 +#: ../src/common/prntbase.cpp:153 msgid "Printing " -msgstr "Tisk" +msgstr "Tisknu " -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Chyba tisku" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Tisknu stranu %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Tisknu..." @@ -2391,15 +2430,16 @@ msgstr "Quarto, 215 x 275 mm" msgid "Question" msgstr "Otázka" -#: ../src/common/ffile.cpp:125 ../src/common/ffile.cpp:146 +#: ../src/common/ffile.cpp:125 +#: ../src/common/ffile.cpp:146 #, c-format msgid "Read error on file '%s'" msgstr "Chyba pøi ètení ze souboru '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" -msgstr "" +msgstr "Objektový uzel s ref=\"%s\" nenalezen!" #: ../src/msw/registry.cpp:535 #, c-format @@ -2427,10 +2467,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Registrový klíè '%s' u¾ existuje." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Související polo¾ky:" @@ -2439,7 +2475,7 @@ msgstr "Souvisej msgid "Remaining time : " msgstr "Zbývající èas : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Odstraní tuto stránku ze zálo¾ek" @@ -2451,7 +2487,7 @@ msgstr "Nahra msgid "Replace with:" msgstr " Nahradit textem: " -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "Soubory se zdroji musí mít stejné èíslo verze!" @@ -2459,49 +2495,42 @@ msgstr "Soubory se zdroji mus msgid "Right margin (mm):" msgstr "Pravý okraj (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Patkové" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/gtk/filedlg.cpp:265 +#: ../src/msw/filedlg.cpp:557 +#: ../src/motif/filedlg.cpp:359 +#: ../src/generic/filedlgg.cpp:1638 #, c-format msgid "Save %s file" msgstr "Ulo¾it soubor %s" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Ulo¾it jako" -#: ../src/generic/filedlgg.cpp:1604 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" -msgstr "Ulo¾it soubor %s" +msgstr "Ulo¾it soubor" #: ../src/generic/logg.cpp:487 msgid "Save log contents to file" msgstr "Ulo¾it obsah logu do souboru" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Psací" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 +#: ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Hledat" -#: ../src/html/helpfrm.cpp:410 -msgid "" -"Search contents of help book(s) for all occurences of the text you typed " -"above" -msgstr "" -"Prohledá obsah knih(y) s nápovìdou a vypí¹e v¹echny výskyty textu, který " -"jste zadal" +#: ../src/html/helpfrm.cpp:415 +msgid "Search contents of help book(s) for all occurences of the text you typed above" +msgstr "Prohledá obsah knih(y) s nápovìdou a vypí¹e v¹echny výskyty textu, který jste zadal" #: ../src/generic/fdrepdlg.cpp:158 msgid "Search direction" @@ -2511,21 +2540,15 @@ msgstr "Sm msgid "Search for:" msgstr "Vyhledat øetìzec:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Hledej ve v¹ech knihách" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Hledat" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Hledám..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Sekce" @@ -2534,24 +2557,29 @@ msgstr "Sekce" msgid "Seek error on file '%s'" msgstr "Chyba pøi nastavování pozice v souboru '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +msgid "Select &All" +msgstr "Vybrat &v¹e" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Vyberte ¹ablonu dokumentu" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Vyberte zobrazení dokumentu" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 +#: ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Vyberte soubor" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Za volbou '%s' se oèekává oddìlovaè." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Nastavení" @@ -2559,54 +2587,54 @@ msgstr "Nastaven msgid "Setup..." msgstr "Nastavení..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." -msgstr "" -"Nalezeno nìkolik aktivních vytáèených pøipojení, vybírám jedno náhodnì." +msgstr "Nalezeno nìkolik aktivních vytáèených pøipojení, vybírám jedno náhodnì." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Zobraz v¹e" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Zobrazí v¹echny polo¾ky v rejstøíku" #: ../src/generic/dirdlgg.cpp:135 -#, fuzzy msgid "Show hidden directories" -msgstr "Ukázat skryté soubory" +msgstr "Ukázat skryté adresáøe" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 +#: ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Ukázat skryté soubory" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Zobraz/schovej navigaèní panel" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Velikost" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Sklonìné" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Tento soubor nelze otevøít pro zápis." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 +#: ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Tento soubor nelze otevøít." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Tento soubor nelze ulo¾it." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Nedostatek pamìti na vytvoøení náhledu." @@ -2618,16 +2646,17 @@ msgstr "Statement, 5 1/2 x 8 1/2 palce" msgid "Status: " msgstr "Status: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" -msgstr "" +msgstr "Podtøída '%s' ke zdroji '%s' nenalezena!" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" -msgstr "Swiss" +msgstr "Bezpatkové" -#: ../src/common/imagtiff.cpp:204 ../src/common/imagtiff.cpp:215 +#: ../src/common/imagtiff.cpp:204 +#: ../src/common/imagtiff.cpp:215 #: ../src/common/imagtiff.cpp:326 msgid "TIFF: Couldn't allocate memory." msgstr "TIFF: Nemohu alokovat pamì»." @@ -2652,15 +2681,15 @@ msgstr "TIFF: Chyba p msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 palcù" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" -msgstr "Psací stroj" +msgstr "Neproporcionální" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "©ablony" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thajské (ISO-8859-11)" @@ -2668,7 +2697,7 @@ msgstr "Thajsk msgid "The FTP server doesn't support passive mode." msgstr "FTP server nepodporuje pasivní mód." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2679,36 +2708,31 @@ msgstr "" "jinou sadu jako náhradu nebo stisknìte\n" "[Zru¹it], pokud ji nelze nahradit" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Formát schránky '%d' neexistuje." #: ../src/generic/dirdlgg.cpp:186 -#, fuzzy, c-format -msgid "" -"The directory '%s' does not exist\n" +#, c-format +msgid "The directory '%s' does not exist\n" "Create it now?" -msgstr "" -"\n" -"neexistuje\n" +msgstr "Adresáø '%s' neexistuje\n" "Chcete ho vytvoøit?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, c-format -msgid "" -"The file '%s' doesn't exist and couldn't be opened.\n" +msgid "The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." -msgstr "" -"Soubor '%s' neexistuje a nemù¾e být otevøen.\n" +msgstr "Soubor '%s' neexistuje a nemù¾e být otevøen.\n" "Byl proto odstranìn ze seznamu nedávno otevøených souborù." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "Cesta '%s' obsahuje pøíli¹ mnoho \"..\"!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Po¾adovaný parametr '%s' nebyl zadán." @@ -2717,46 +2741,33 @@ msgstr "Po msgid "The text couldn't be saved." msgstr "Text nelze ulo¾it." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Musíte zadat hodnotu volby '%s'." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format -msgid "" -"The version of remote access service (RAS) installed on this machine is " -"tooold, please upgrade (the following required function is missing: %s)." -msgstr "" -"Verze Remote Access Service (RAS) na tomto poèítaèi je pøíli¹ stará, prosím " -"upgradujte (chybí tato funkce: %s)." +msgid "The version of remote access service (RAS) installed on this machine is tooold, please upgrade (the following required function is missing: %s)." +msgstr "Verze Remote Access Service (RAS) na tomto poèítaèi je pøíli¹ stará, prosím upgradujte (chybí tato funkce: %s)." -#: ../src/html/htmprint.cpp:545 -msgid "" -"There was a problem during page setup: you may need to set a default printer." -msgstr "" +#: ../src/html/htmprint.cpp:540 +msgid "There was a problem during page setup: you may need to set a default printer." +msgstr "Pøi nastavování stránky nastala chyba: nastavte výchozí tiskárnu." #: ../src/msw/thread.cpp:1214 -msgid "" -"Thread module initialization failed: can not store value in thread local " -"storage" -msgstr "" -"Modul s vlákny se nepodaøilo iniciovat: nemohu ukládat hodnoty v 'local " -"storage'" +msgid "Thread module initialization failed: can not store value in thread local storage" +msgstr "Modul s vlákny se nepodaøilo iniciovat: nemohu ukládat hodnoty v 'local storage'" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Selhala inicializace modulu s vlákny: nelze vytvoøit klíè" #: ../src/msw/thread.cpp:1202 -msgid "" -"Thread module initialization failed: impossible to allocate index in thread " -"local storage" -msgstr "" -"Modul s vlákny se nepodaøilo iniciovat: nemohu alokovat index v 'local " -"storage'" +msgid "Thread module initialization failed: impossible to allocate index in thread local storage" +msgstr "Modul s vlákny se nepodaøilo iniciovat: nemohu alokovat index v 'local storage'" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Nastavení priority vlákna je ignorováno." @@ -2768,15 +2779,15 @@ msgstr "Vyrovnat &vodorovn msgid "Tile &Vertically" msgstr "Vyrovnat &svisle" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Èas" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Tip dne" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Tip není k dispozici!" @@ -2797,7 +2808,7 @@ msgstr "Soubor '%s' nelze odebrat z pam msgid "Trying to solve a NULL hostname: giving up" msgstr "Sna¾ím se zjistit NULLové jméno poèítaèe: vzdávám to" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turské (ISO-8859-9)" @@ -2810,62 +2821,73 @@ msgstr "US Std Fanfold, 17 7/8 x 11 palc msgid "Unable to open requested HTML document: %s" msgstr "Nelze otevøít po¾adovaný HTML dokument: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Podtr¾ené" -#: ../src/common/resourc2.cpp:305 ../src/common/resourc2.cpp:319 -#: ../src/common/resourc2.cpp:335 ../src/common/resourc2.cpp:349 -#: ../src/common/resourc2.cpp:1370 ../src/common/resourc2.cpp:1384 -#: ../src/common/resourc2.cpp:1400 ../src/common/resourc2.cpp:1414 -#: ../src/common/resource.cpp:1824 ../src/common/resource.cpp:1838 -#: ../src/common/resource.cpp:1855 ../src/common/resource.cpp:1869 -#: ../src/common/resource.cpp:1954 ../src/common/resource.cpp:1968 -#: ../src/common/resource.cpp:1984 ../src/common/resource.cpp:1998 -#: ../src/common/resource.cpp:3038 ../src/common/resource.cpp:3052 -#: ../src/common/resource.cpp:3069 ../src/common/resource.cpp:3083 +#: ../src/common/resourc2.cpp:305 +#: ../src/common/resourc2.cpp:319 +#: ../src/common/resourc2.cpp:335 +#: ../src/common/resourc2.cpp:349 +#: ../src/common/resourc2.cpp:1370 +#: ../src/common/resourc2.cpp:1384 +#: ../src/common/resourc2.cpp:1400 +#: ../src/common/resourc2.cpp:1414 +#: ../src/common/resource.cpp:1824 +#: ../src/common/resource.cpp:1838 +#: ../src/common/resource.cpp:1855 +#: ../src/common/resource.cpp:1869 +#: ../src/common/resource.cpp:1954 +#: ../src/common/resource.cpp:1968 +#: ../src/common/resource.cpp:1984 +#: ../src/common/resource.cpp:1998 +#: ../src/common/resource.cpp:3038 +#: ../src/common/resource.cpp:3052 +#: ../src/common/resource.cpp:3069 +#: ../src/common/resource.cpp:3083 msgid "Unexpected end of file whilst parsing resource." msgstr "Neoèekávaný konec souboru bìhem zpracování resource" -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Neoèekávaný parametr '%s'" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "Unicode 7 bit (UTF-7)" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "Unicode 8 bit (UTF-8)" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Neznámá chyba DDD: %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Neznámá znaková sada (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Neznámá polo¾ka v souboru %s, øádka %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Neznámá 'dlouhá' volba '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 +#: ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Neznámá volba '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "Neznámý styl " @@ -2874,22 +2896,25 @@ msgstr "Nezn msgid "Unmatched '{' in an entry for mime type %s." msgstr "Pøebyteèná '{' v popisu mime typu %s." -#: ../src/common/cmdproc.cpp:238 ../src/common/cmdproc.cpp:254 +#: ../src/common/cmdproc.cpp:238 +#: ../src/common/cmdproc.cpp:254 #: ../src/common/cmdproc.cpp:281 msgid "Unnamed command" msgstr "Nepojmenovaný pøíkaz" -#: ../src/common/resourc2.cpp:687 ../src/common/resource.cpp:2343 +#: ../src/common/resourc2.cpp:687 +#: ../src/common/resource.cpp:2343 #, c-format msgid "Unrecognized style %s whilst parsing resource." msgstr "Neznámý styl %s bìhem zpracování resource" -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 +#: ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." -msgstr "Nepodporovaný formát schránky." +msgstr "Nepodporovaný formát obsahu schránky." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:380 #, c-format msgid "Unsupported theme '%s'." msgstr "Nepodporované téma '%s'." @@ -2898,7 +2923,7 @@ msgstr "Nepodporovan msgid "Up" msgstr "Nahoru" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Pou¾ití: %s" @@ -2907,23 +2932,24 @@ msgstr "Pou msgid "Validation conflict" msgstr "Konflikt validace" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Prohlí¾et soubory v detailním pohledu" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Prohlí¾et soubory v seznamu" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Pohledy" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Èekání na ukonèení podprocesu selhalo" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 msgid "Warning" msgstr "Varování" @@ -2931,15 +2957,15 @@ msgstr "Varov msgid "Warning: " msgstr "Varování: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "Varování: pokus o vyjmutí HTML tag handleru z prázdného zásobníku." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "Západoevropské (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "Západoevropské s eurem (ISO-8859-15)" @@ -2947,76 +2973,76 @@ msgstr "Z msgid "Whole word" msgstr "Pouze celá slova" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Pouze celá slova" #: ../src/univ/themes/win32.cpp:1168 msgid "Win32 theme" -msgstr "Win32 téma" +msgstr "Téma Win32" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:983 msgid "Win32s on Windows 3.1" msgstr "Win32s na Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1015 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:987 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Arabské pro Windows (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Baltské pro Windows (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Støedoevropské pro Windows (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "Zjednodu¹ená èín¹tina pro Windows (CP 936)" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "Tradièní èín¹tina pro Windows (CP 950)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Cyrilice pro Windows (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Øecké pro Windows (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Hebrejské pro Windows (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "Japonské pro Windows (CP 932)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "Korejské pro Windows (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Turecké pro Windows (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Západoevropské pro Windows (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3034,32 +3060,31 @@ msgstr "Chyba p msgid "XPM: Malformed pixel data!" msgstr "XPM: ©patná pixelová data!" -#: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 +#: ../src/common/xpmdecod.cpp:709 +#: ../src/common/xpmdecod.cpp:718 #, c-format msgid "XPM: malformed colour definition '%s'!" msgstr "XPM: ¹patná definice barvy '%s'!" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "XRC zdroj '%s' (tøída '%s') nenalezen!" -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 +#: ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "XRC zdroje: nemohu vytvoøit bitmapu z '%s'." -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "XRC zdroje: nemohu vytvoøit dialog bez dodané instance." - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "XRC zdroje: chybný popis barvy '%s' u vlastnosti '%s'." -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 +#: ../src/common/dlgcmn.cpp:214 msgid "Yes" msgstr "Ano" @@ -3067,22 +3092,22 @@ msgstr "Ano" msgid "You cannot add a new directory to this section." msgstr "Nemù¾ete pøidat nový adresáø do této sekce." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 +#: ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "ZIP soubory lze otevøít jenom z disku!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" -msgstr "[PRÁZDNÉ]" +msgstr "[PRÁZDNÝ]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "DDEML aplikace zpùsobila prodlou¾enou vzácnou podmínku." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" -"a DDEML function was called without first calling the DdeInitialize " -"function,\n" +"a DDEML function was called without first calling the DdeInitialize function,\n" "or an invalid instance identifier\n" "was passed to a DDEML function." msgstr "" @@ -3090,39 +3115,39 @@ msgstr "" "nebo dostala neplatný identifikátor\n" "instance." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "clientùv pokus navázat konverzaci selhal." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "selhala alokace pamìti." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "nepodaøilo se ovìøit parametr pomocí DDEML." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "po¾adavek na synchronní advise transakci vypr¹el." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "po¾adavek na synchronní datovou transakci vypr¹el." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "po¾adavek na synchronní execute transakci vypr¹el." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "po¾adavek na synchronní poke transakci vypr¹el." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "po¾adavek na ukonèení advise transakce vypr¹el." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3132,7 +3157,7 @@ msgstr "" "transakci, nebo se server\n" "ukonèil pøed dodìláním transakce." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "transakce neuspìla." @@ -3140,7 +3165,7 @@ msgstr "transakce neusp msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3152,15 +3177,15 @@ msgstr "" "nebo se aplikace inicializovaná jako APPCMD_CLIENTONLY pokusila\n" "o serverovou transakci." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "interní volání PostMessage selhalo." -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "nastala interní chyba v DDEML." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3170,7 +3195,7 @@ msgstr "" "Identifikátor transakce se stává neplatný, jakmile se aplikace vrátí z\n" "XTYP_XACT_COMPLETE callbacku." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "pokus o zmìnu nemìnného klíèe '%s' ignorován." @@ -3179,47 +3204,45 @@ msgstr "pokus o zm msgid "binary" msgstr "binární" -#: ../src/common/fontcmn.cpp:518 -#, fuzzy +#: ../src/common/fontcmn.cpp:548 msgid "bold" -msgstr "Tuèné" +msgstr "tuèné" -#: ../src/common/fontcmn.cpp:442 -#, fuzzy +#: ../src/common/fontcmn.cpp:472 msgid "bold " -msgstr "Tuèné" +msgstr "tuèné " #: ../src/common/ffile.cpp:93 #, c-format msgid "can't close file '%s'" msgstr "nemohu zavøít soubor '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "nemohu zavøít deskriptor souboru %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "Nemohu ulo¾it zmìny v souboru '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "nemohu vytvoøit soubor '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "nemohu smazat u¾ivatelský konfiguraèní soubor '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "nemohu zjistit, jestli byl dosa¾en konec souboru v deskriptoru %d" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "nemohu zjistit délku souboru na deskriptoru %d" @@ -3228,55 +3251,56 @@ msgstr "nemohu zjistit d msgid "can't find user's HOME, using current directory." msgstr "nemohu najít u¾ivatelùv domovský adresáø, pou¾iji aktuální adresáø" -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "nemohu vyprázdnit (flush) deskriptor %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "nemohu zjistit pozici v deskriptoru %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "nemohu naèíst ¾ádný font, konèím" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/file.cpp:261 +#: ../src/common/ffile.cpp:77 #, c-format msgid "can't open file '%s'" msgstr "nemohu otevøít soubor '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "nemohu otevøít globální konfiguraèní soubor '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "nemohu otevøít konfiguraèní soubor '%s'" -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "nemohu otevøít soubor s u¾ivatelskou konfigurací" -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "nemohu èíst z deskriptoru %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "nemohu odstranit soubor '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "nemohu odstranit doèasný soubor '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "nemohu seekovat v deskriptoru %d" @@ -3286,12 +3310,12 @@ msgstr "nemohu seekovat v deskriptoru %d" msgid "can't write buffer '%s' to disk." msgstr "nemohu zapsat buffer '%s' na disk." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "nemohu zapisovat do deskriptoru %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "nemohu ulo¾it u¾ivatelskou konfiguraci" @@ -3304,32 +3328,32 @@ msgstr "katalog pro dom msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "datum" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "pøedvolené" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" -msgstr "osmnáctý" +msgstr "osmnáctého" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" -msgstr "osmý" +msgstr "osmého" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" -msgstr "jedenáctý" +msgstr "jedenáctého" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "polo¾ka '%s' se v '%s' vyskytuje víc ne¾ jednou" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "navázat" @@ -3338,64 +3362,69 @@ msgstr "nav msgid "failed to flush the file '%s'" msgstr "nelze vyprázdnit buffer souboru '%s'" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" -msgstr "patnáctý" +msgstr "patnáctého" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" -msgstr "pátý" +msgstr "pátého" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "soubor '%s', øádka %d: '%s' ignorováno po hlavièce skupiny." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "soubor '%s', øádka %d: oèekávám '='." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "soubor '%s', øádka %d: klíè '%s' byl poprvé nalezen na øádce %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "soubor '%s', øádka %d: hodnota pro nemìnný klíè '%s' ignorována." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "soubor '%s': neoèekávaný znak %c na øádku %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" -msgstr "první" +msgstr "prvního" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" -msgstr "ètrnáctý" +msgstr "ètrnáctého" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" -msgstr "ètvrtý" +msgstr "ètvrtého" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:319 msgid "generate verbose log messages" msgstr "vypisovat podrobný log" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() selhalo" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "inicializovat" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "¹patná návratová hodnota eof()." @@ -3403,24 +3432,18 @@ msgstr " msgid "invalid message box return value" msgstr "¹patná návratová hodnota message boxu" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 -#, fuzzy +#: ../src/common/fontcmn.cpp:488 +#: ../src/common/fontcmn.cpp:552 msgid "italic" -msgstr "Kurzíva" +msgstr "kurzíva" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "velké" - -#: ../src/common/fontcmn.cpp:514 -#, fuzzy +#: ../src/common/fontcmn.cpp:544 msgid "light" -msgstr "Tenké" +msgstr "tenké" -#: ../src/common/fontcmn.cpp:438 -#, fuzzy +#: ../src/common/fontcmn.cpp:468 msgid "light " -msgstr "Tenké" +msgstr "tenké " #: ../src/common/intl.cpp:615 #, c-format @@ -3432,142 +3455,134 @@ msgstr "locale '%s' nem msgid "looking for catalog '%s' in path '%s'." msgstr "hledám katalog '%s' v cestì '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "støední" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" -msgstr "Tenké" +msgstr "pùlnoc" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() selhalo" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" -msgstr "devatenáctý" +msgstr "devatenáctého" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" -msgstr "devátý" +msgstr "devátého" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "¾ádná chyba DDE." -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:574 msgid "noname" msgstr "bezejmenná" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "poledne" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "èíslo" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" -msgstr "" +msgstr "ètení" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "problém reentrance." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" -msgstr "druhý" +msgstr "druhého" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" -msgstr "sedmnáctý" +msgstr "sedmnáctého" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" -msgstr "sedmý" +msgstr "sedmého" #: ../src/common/menucmn.cpp:101 msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:309 msgid "show this help message" msgstr "zobrazí tuto nápovìdu" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" -msgstr "¹estnáctý" +msgstr "¹estnáctého" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" -msgstr "¹estý" +msgstr "¹estého" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "malé" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:344 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "urèí videomód, který se má pou¾ít (napø. 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:330 msgid "specify the theme to use" msgstr "urèí, jaké téma pou¾ít" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "øetìzec" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" -msgstr "desátý" +msgstr "desátého" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "odpovìï na transakci zpùsobila nastavení bitu DDE_FBUSY." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" -msgstr "tøetí" +msgstr "tøetího" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" -msgstr "tøináctý" +msgstr "tøináctého" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "dnes" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" -msgstr "vèera" +msgstr "zítra" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" -msgstr "dvanáctý" +msgstr "dvanáctého" -#: ../src/common/datetime.cpp:3239 +# VSECHNY tyhle cislovky se asi vztahuji +# k datu --> predelat je na dvacaTEHO apod.!! +#: ../src/common/datetime.cpp:3365 msgid "twentieth" -msgstr "dvacátý" +msgstr "dvacátého" -#: ../src/common/fontcmn.cpp:510 -#, fuzzy +#: ../src/common/fontcmn.cpp:540 msgid "underlined" -msgstr "Podtr¾ené" +msgstr "podtr¾ené" -#: ../src/common/fontcmn.cpp:425 -#, fuzzy +#: ../src/common/fontcmn.cpp:455 msgid "underlined " -msgstr "Podtr¾ené" +msgstr "podtr¾ené " -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "neoèekávané \" na pozici %d v '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "neznámý" @@ -3575,12 +3590,16 @@ msgstr "nezn msgid "unknown error" msgstr "neznámá chyba" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "neznámá chyba (kód %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +msgid "unknown line terminator" +msgstr "neznámý konec øádku" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "neznámý poèátek pro nastavení pozice" @@ -3589,11 +3608,11 @@ msgstr "nezn msgid "unknown-%d" msgstr "nezname-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "nepojmenovaný" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "nepojmenovaný%d" @@ -3603,38 +3622,26 @@ msgstr "nepojmenovan msgid "using catalog '%s' from '%s'." msgstr "pou¾ívám katalog '%s' z '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "velmi velké" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "velmi malé" - -#: ../src/common/filename.cpp:162 -#, fuzzy +#: ../src/common/filename.cpp:166 msgid "writing" -msgstr "Tisk" +msgstr "zápis" #: ../src/common/dynlib.cpp:336 #, c-format msgid "wxDllLoader failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDllLoader selhal pøi volání GetSymbol '%s'" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDynamicLibrary selhala pøi volání GetSymbol '%s'" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay selhalo." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - -#: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 +#: ../src/common/socket.cpp:394 +#: ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: chybná signatura v ReadMsg." @@ -3642,180 +3649,16 @@ msgstr "wxSocket: chybn msgid "wxSocket: unknown event!." msgstr "wxSocket: neznámá událost!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows nemohou otevøít displej pro '%s': ukonèuji." -#: ../src/x11/app.cpp:265 -#, fuzzy +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." -msgstr "wxWindows nemohou otevøít displej pro '%s': ukonèuji." +msgstr "wxWindows nemohou otevøít displej. Program se nyní ukonèí." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "vèera" -#~ msgid "All files (*.*)|*.*" -#~ msgstr "V¹echny soubory (*.*)|*.*" - -#~ msgid "Can not create mutex" -#~ msgstr "Nemohu vytvoøit mutex." - -#~ msgid "Can't create the inter-process read pipe" -#~ msgstr "Nemohu vytvoøit meziprocesovou rouru pro ètení" - -#~ msgid "Can't create the inter-process write pipe" -#~ msgstr "Nemohu vytvoøit meziprocesovou rouru pro zápis" - -#~ msgid "ChoosePixelFormat failed." -#~ msgstr "Volání ChoosePixelFormat selhalo." - -#~ msgid "Couldn't acquire a mutex lock" -#~ msgstr "Nemohu získat zámek mutexu." - -#~ msgid "Couldn't release a mutex" -#~ msgstr "Nemohu uvolnit mutex" - -#~ msgid "Font" -#~ msgstr "Font" - -#~ msgid "PostScript" -#~ msgstr "PostScript" - -#~ msgid "PostScript:" -#~ msgstr "PostScript:" - -#~ msgid "Preview Only" -#~ msgstr "Pouze náhled" - -#~ msgid "Printer Command: " -#~ msgstr "Pøíkaz tisku: " - -#~ msgid "Printer Options: " -#~ msgstr "Nastavení tiskárny: " - -#~ msgid "Printer Settings" -#~ msgstr "Nastavení tiskárny" - -#~ msgid "Send to Printer" -#~ msgstr "Poslat na tiskárnu" - -#~ msgid "SetPixelFormat failed." -#~ msgstr "Volání SetPixelFormat selhalo." - -#~ msgid "X Scaling" -#~ msgstr "Mìøítko v X" - -#~ msgid "X Translation" -#~ msgstr "Posunutí v X" - -#~ msgid "Y Scaling" -#~ msgstr "Mìøítko v Y" - -#~ msgid "Y Translation" -#~ msgstr "Posunutí v Y" - -#~ msgid "unknown line terminator" -#~ msgstr "neznámý konec øádku" - -#, fuzzy -#~ msgid "Fatal Error" -#~ msgstr "Kritická chyba" - -#, fuzzy -#~ msgid "Fatal error: %s\n" -#~ msgstr "Kritická chyba: " - -#~ msgid "Back" -#~ msgstr "Zpìt" - -#~ msgid "Can not create event object." -#~ msgstr "Nemohu vytvoøit object události." - -#~ msgid "Can't find the serialization object '%s' for the object '%s'." -#~ msgstr "Nemohu najít serializaèní objekt '%s' k objektu '%s'." - -#~ msgid "Can't load wxSerial dynamic library." -#~ msgstr "Nemohu naèíst dynamickou knihovnu wxSerial." - -#~ msgid "Cannot find XML I/O handler capable of loading this format." -#~ msgstr "Nemohu nalézt XML ovladaè schopný naèíst tento formát." - -#~ msgid "Cannot find XML I/O handler capable of saving in this format." -#~ msgstr "Nemohu nalézt XML ovladaè schopný ukládat v tomto formátu." - -#~ msgid "Connection to wxHelp timed out in %d seconds" -#~ msgstr "Vypr¹elo spojení s wxHelp :%d sekund" - -#~ msgid "Don't know how to convert to/from charset '%s'." -#~ msgstr "Systém neumí pøevádìt z nebo do znakové sady '%s'." - -#~ msgid "Etcetera" -#~ msgstr "Etcetera" - -#~ msgid "ICO: Error calculating size of DIB ." -#~ msgstr "ICO: Chyba pøi výpoètu velikosti DIB." - -#~ msgid "ICO: Error calculating size of Mask DIB ." -#~ msgstr "ICO: Chyba pøi výpoètu velikosti Mask DIB." - -#~ msgid "ICO: Error calculating size of XOR DIB ." -#~ msgstr "ICO: Chyba pøi výpoètu velikosti XOR DIB." - -#~ msgid "ICO: Error writing ICONDIR header." -#~ msgstr "ICO: Chyba pøi zápisu ICONDIR hlavièky." - -#~ msgid "ICO: Error writing ICONDIRENTRY header." -#~ msgstr "ICO: Chyba pøi zápisu ICONDIRENTRY hlavièky." - -#~ msgid "ICO: Error writing Mask DIB ." -#~ msgstr "ICO: Chyba pøi zápisu DIB masky." - -#~ msgid "ICO: Error writing XOR DIB ." -#~ msgstr "ICO: Chyba pøi zápisu XOR DIB." - -#~ msgid "Incorrect version of HTML help book" -#~ msgstr "©patná verze knihy s HTML nápovìdou" - -#~ msgid "Loading DIB : Couldn't allocate memory." -#~ msgstr "Naèítání DIB: nemohu alokovat pamì»." - -#~ msgid "Mounted Devices" -#~ msgstr "Pøipojená zaøízení" - -#~ msgid "My Harddisk" -#~ msgstr "Mùj disk" - -#~ msgid "My Home" -#~ msgstr "Domovský adresáø" - -#~ msgid "New..." -#~ msgstr "Nový..." - -#~ msgid "Please wait..." -#~ msgstr "Èekejte prosím..." - -#~ msgid "Temporary" -#~ msgstr "Doèasný" - -#~ msgid "The Computer" -#~ msgstr "Poèítaè" - -#~ msgid "The directory " -#~ msgstr "Adresáø " - -#~ msgid "User" -#~ msgstr "User" - -#~ msgid "User Local" -#~ msgstr "User Local" - -#~ msgid "Variables" -#~ msgstr "Promnìné" - -#~ msgid "Window" -#~ msgstr "Windows 3.1" - -#~ msgid "centered" -#~ msgstr "Centrovaná" diff --git a/locale/da.po b/locale/da.po index dfa2abbbb5..954acc769f 100644 --- a/locale/da.po +++ b/locale/da.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows-2.2.1\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2002-06-05 10:57+0200\n" "Last-Translator: Henrik Ræder Clausen \n" "Language-Team: Dansk \n" @@ -15,18 +15,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (fejl %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Vis udskrift" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " bytes " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Konvolut, 4 1/8 x 9 1/2 tomme" @@ -54,23 +50,23 @@ msgstr "#9 Konvolut, 3 7/8 x 8 7/8 tomme" msgid "#define %s must be an integer." msgstr "#define %s skal være et heltal" -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i af %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (eller %s)" @@ -90,6 +86,11 @@ msgstr "%s Information" msgid "%s Warning" msgstr "%s Advarsel" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -111,7 +112,7 @@ msgstr "%s: forkert resourcefil syntax." msgid "&Arrange Icons" msgstr "&Arrangér ikoner" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "&Afbryd" @@ -119,10 +120,19 @@ msgstr "&Afbryd" msgid "&Cascade" msgstr "&Kaskade" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Luk" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Teletype" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Detaljer" @@ -131,11 +141,11 @@ msgstr "&Detaljer" msgid "&Find" msgstr "&Find" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Slut" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "&Hjælp" @@ -147,24 +157,30 @@ msgstr "&Log" msgid "&Move" msgstr "&Flyt" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&Næste >" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Næste >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Næste tip" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "dato" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 #, fuzzy msgid "&Previous" msgstr "Foregående side" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Gentag" @@ -184,7 +200,7 @@ msgstr "&Genindl msgid "&Save..." msgstr "&Gem..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Vis tips ved opstart" @@ -192,7 +208,7 @@ msgstr "&Vis tips ved opstart" msgid "&Size" msgstr "&Størrelse" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Fortryd" @@ -200,11 +216,13 @@ msgstr "&Fortryd" msgid "&Undo " msgstr "&Fortryd " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Vindue" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' har ekstra '..', ignoreret." @@ -215,7 +233,7 @@ msgstr "'%s' har ekstra '..', ignoreret." msgid "'%s' is invalid" msgstr "'%s' er ugyldig" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' er ikke en korrekt numerisk værdi til option '%s'." @@ -250,12 +268,12 @@ msgstr "'%s' m msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' må kun indeholde bogstaver eller tal." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Hjælp)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(bogmærker)" @@ -269,11 +287,11 @@ msgstr "" ", forventet static, #include eller #define\n" "under parsing af resource." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -289,65 +307,58 @@ msgstr "11 x 17 tommer" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Konvolut, 3 5/8 x 6 1/2 tomme" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": fil eksisterer ikke!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": ukendt tegnsæt" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": ukendt kodning" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Tilbage" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "

    " msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Normal skrift
    (og understreget. Kursiv skrift. " -"Fed skrift. Fed kursiv skrift.
    skriftstørrelse -2
    skriftstørrelse " -"-1
    skriftstørrelse +0
    skriftstørrelse +1
    skriftstørrelse " -"+2
    skriftstørrelse +3
    skriftstørrelse +4

    Fast skriftstørrelse.
    " -"fed kursiv fed kursiv " -"understreget
    skriftstørrelse -2 " -"
    skriftstørrelse -1
    skriftstørrelse " -"+0
    skriftstørrelse +1
    skriftstørrelse +2
    skriftstørrelse " -"+3
    skriftstørrelse +4
    " +"Fed skrift. Fed kursiv skrift.
    skriftstørrelse -2
    skriftstørrelse -1
    skriftstørrelse +0
    skriftstørrelse +1
    skriftstørrelse +2
    skriftstørrelse +3
    skriftstørrelse +4

    Fast skriftstørrelse.
    fed " +"kursiv fed kursiv understreget
    skriftstørrelse -2
    skriftstørrelse -1
    skriftstørrelse +0
    skriftstørrelse +1
    skriftstørrelse +2 " +"
    skriftstørrelse +3
    skriftstørrelse " +"+4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -373,7 +384,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Tilføj denne side til bogmærker" @@ -390,10 +401,14 @@ msgstr "Tilf msgid "All" msgstr "Alle" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Alle filer (*)|*" +#: ../include/wx/defs.h:1803 +msgid "All files (*.*)|*.*" +msgstr "Alle filer (*)|*.*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Kalder allerede ISP" @@ -403,7 +418,7 @@ msgstr "Kalder allerede ISP" msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Tilføj log til fil '%s' (valg af [Nej] vil overskrive den)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabisk (ISO-8859-6)" @@ -427,7 +442,7 @@ msgstr "B5 ark, 182 x 257 millimeter" msgid "B6 Envelope, 176 x 125 mm" msgstr "B6konvolut, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." msgstr "BMP: Kunne ikke få hukommelse." @@ -455,15 +470,15 @@ msgstr "Kunne ikke skrive filheader (BitmapInfo)." msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: wxImage har ikke sin egen wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Baglæns" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltisk (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltisk (gammel) (ISO-8859-4)" @@ -472,7 +487,7 @@ msgstr "Baltisk (gammel) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "Bitmap resourcespecifikation %s blev ikke fundet." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Fed" @@ -508,12 +523,12 @@ msgstr "C6 Konvolut, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Konvolut, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, c-format msgid "Can not enumerate files '%s'" msgstr "Kan ikke læse fillisten i mappen '%s'" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Kan ikke få liste af filer i mappen '%s'" @@ -540,7 +555,7 @@ msgstr "Kan ikke vente p msgid "Can't &Undo " msgstr "Kan ikke &fortryde" -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "Kan ikke tjekke billedformatet i filen '%s': filen eksisterer ikke." @@ -555,16 +570,16 @@ msgstr "Kan ikke lukke registreringsn msgid "Can't copy values of unsupported type %d." msgstr "Kan ikke kopiere værdier af ikke-understøttet type %d." -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" msgstr "Kan ikke åbne dialog udfra hukommelse skabelon" -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, c-format msgid "Can't create dialog using template '%ul'" msgstr "Kan ikke åbne dialog med skabelonen '%ul'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" "Kan ikke lave liste kontrolvindue - kontrollér, at comctl32.dll er " @@ -579,7 +594,7 @@ msgstr "Kan ikke oprette registreringsn msgid "Can't create thread" msgstr "Kan ikke oprette tråd" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "Kan ikke oprette vindue af klassen %s" @@ -667,62 +682,61 @@ msgstr "Kan ikke s msgid "Can't set value of '%s'" msgstr "Kan ikke sætte værdien af '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Afbryd" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "Kan ikke konvertere dialogenheder: ukendt dialog." -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, c-format msgid "Cannot convert from encoding '%s'!" msgstr "Kan ikke konvertere fra kodning '%s'!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Kan ikke finde netværk via modem forbindelse: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "Kan ikke finde kontainer for ukendt kontrol '%s'." -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, c-format msgid "Cannot find font node '%s'." msgstr "Kan ikke finde font node '%s'." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Kan ikke finde placering af adressebog filen" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Kan ikke få prioritetsområde for afviklingsalgoritme %d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Kan ikke finde hostnavn" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Kan ikke finde det officielle hostnavn" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Kan ikke afbryde - ingen opkaldsforbindelse er aktiv." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Kan ikke initialisere OLE" @@ -731,31 +745,31 @@ msgstr "Kan ikke initialisere OLE" msgid "Cannot initialize SciTech MGL!" msgstr "Kan ikke initialisere OLE" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." msgstr "Kan ikke initialisere display." -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, c-format msgid "Cannot load icon from '%s'." msgstr "Kan ikke hente ikon fra '%s'." -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "Kan ikke åbne HTML dokument %s." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Kan ikke åbne HTML dokument %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Kan ikke åbne HTML hjælpebog: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Kan ikke åbne URL '%s'" @@ -765,60 +779,60 @@ msgstr "Kan ikke msgid "Cannot open contents file: %s" msgstr "Kan ikke åbne indholdsfilen: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "Kan ikke åbne filen '%s'" -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Kan ikke åbne fil til PostScript udskrivning!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Kan ikke åbne indexfilen %s" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Kan ikke fortolke koordinater fra '%s'." -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, c-format msgid "Cannot parse dimension from '%s'." msgstr "Kan ikke fortolke dimension fra '%s'." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Kan ikke udskrive tom side." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, c-format msgid "Cannot read typename from '%s'!" msgstr "Kan ikke læse typenavn fra '%s'!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Kan ikke hente trådafviklingsalgoritme." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Kan ikke starte tråd: fejl ved skrivning af TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Forskel på store og små bogstaver" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Keltisk (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "Centraleuropæisk (ISO-8859-2/Latin 2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Vælg ISP at ringe til" @@ -826,11 +840,16 @@ msgstr "V msgid "Choose font" msgstr "Vælg skrifttype" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Luk" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Rens log indholdet" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Luk" @@ -839,24 +858,29 @@ msgstr "Luk" msgid "Close\tAlt-F4" msgstr "Luk\tAlt-F4" +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Luk" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Luk dette vindue" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Computer" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Konfigurations punkt kan ikke begynde med '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Bekræft" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "Bekræft Registreringsdatabase opdatering" @@ -864,13 +888,13 @@ msgstr "Bekr msgid "Connecting..." msgstr "Forbinder..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Indhold" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "Konvertering til tegnsæt '%s' virker ikke." #: ../src/generic/prntdlgg.cpp:193 @@ -887,7 +911,7 @@ msgstr "Kunne ikke finde resource include file %s." msgid "Could not find tab for id" msgstr "Kunne ikke finde tab til id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Kunne ikke initialisere RichEdit DLL '%s'" @@ -911,19 +935,19 @@ msgstr "" "uKunne ikke opløse men-id '%s'. Brug (ikke-nul) heltal istedet\n" "eller angiv #define (se manualen for fenurligheder)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Kunne ikke starte udskriftsvisning." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Kunne ikke starte udskrivning." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Kunne ikke overføre data til vindue" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -937,7 +961,7 @@ msgstr "Kunne ikke oprette en timer" msgid "Couldn't create cursor." msgstr "Kunne ikke oprette en markør." -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Kunne ikke finde symbolet '%s' i et dynamisk bibliotek" @@ -946,23 +970,23 @@ msgstr "Kunne ikke finde symbolet '%s' i et dynamisk bibliotek" msgid "Couldn't get the current thread pointer" msgstr "Kunne ikke få nuværende trådpointer" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Kunne ikke load'e et PNG billede - korrupt fil eller for lidt hukommelse?" -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Kunne ikke registrere udklipsformat %s" -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Kunne ikke hente information om listekontorlenhed %d." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." msgstr "Kunne ikke gemme PNG billede." @@ -974,15 +998,19 @@ msgstr "Kunne ikke afslutte tr msgid "Create directory" msgstr "Opret mappe" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Opret ny mappe" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Aktuel mappe:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "Kyrillisk (Latin-5)" @@ -990,31 +1018,27 @@ msgstr "Kyrillisk (Latin-5)" msgid "D sheet, 22 x 34 in" msgstr "D ark, 22 x 34 tommer" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE poke request fejlede " -#: ../src/common/imagbmp.cpp:618 -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "DIB Header: Kan ikke håndtere 4-bit kodning endnu." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "DIB Header: Kodning svarer ikke til bitdybden." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "DIB Header: Billedhøjde > 32767 pixels i filen." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "DIB Header: Billedbredde > 32767 pixels for filen." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." msgstr "DIB Header: Ukendt bitdybde i filen." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." msgstr "DIB Header: Ukendt kodning i filen." @@ -1022,15 +1046,15 @@ msgstr "DIB Header: Ukendt kodning i filen." msgid "DL Envelope, 110 x 220 mm" msgstr "DL Konvolut, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Dato" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Dekorativ" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "Standardkodning" @@ -1039,7 +1063,7 @@ msgstr "Standardkodning" msgid "Deleted stale lock file '%s'." msgstr "Slettede gammel lockfil '%s'." -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1047,15 +1071,15 @@ msgstr "" "Netværk via modem er ikke tilgængeligt, fordi Remote Access Service (RAS) " "ikke er installeret på computeren. Installer RAS først." -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "Glemte du at inkludere wx/os2/wx.rc i dine resourcer?" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Vidste du..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Mappen '%s' kunne ikke oprettes" @@ -1069,7 +1093,7 @@ msgstr "Mappen '%s' eksisterer ikke!" msgid "Directory does not exist" msgstr "Mappen eksisterer ikke" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1077,15 +1101,15 @@ msgstr "" "Vis alle indexemner, der indeholder understrengen. Ingen forskel på store og " "små bogstaver." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Vis Indstillinger" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" @@ -1097,7 +1121,7 @@ msgstr "" "Ny værdi er \n" "%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Ønsker du at gemme ændringer til dokument %s?" @@ -1106,7 +1130,7 @@ msgstr " msgid "Done" msgstr "Færdig" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Færdig." @@ -1126,23 +1150,23 @@ msgstr "Brugt tid : " msgid "Entries found" msgstr "indgange fundet" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "" "Environment variabel ekspansion fejlede: mangler '%c' ved position %d i '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Fejl" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Fejl " @@ -1150,7 +1174,7 @@ msgstr "Fejl " msgid "Error creating directory" msgstr "Fejl ved oprettelse af mappe" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "Fejl ved læsning af billede DIB ." @@ -1158,7 +1182,7 @@ msgstr "Fejl ved l msgid "Error: " msgstr "Fejl: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1166,7 +1190,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Anslået tid : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Afvikling af kommando '%s' fejlede" @@ -1193,7 +1217,11 @@ msgstr "Forventede '=' ved parsning af resource." msgid "Expected 'char' whilst parsing resource." msgstr "Forventede 'char' ved parsning af resource." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Kunne ikke %s netværk via modem: %s" @@ -1202,7 +1230,7 @@ msgstr "Kunne ikke %s netv msgid "Failed to access lock file." msgstr "Kunne ikke komme til lockfil." -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" msgstr "Kunne ikke lukke filhåndtag" @@ -1215,11 +1243,11 @@ msgstr "Kunne ikke lukke lockfil '%s'" msgid "Failed to close the clipboard." msgstr "Kunne ikke lukke udklipsholder." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Kunne ikke forbinde: Mangler brugernavn og adgangskode" -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Kunne ikke forbinde: Ingen ISP at ringe til." @@ -1233,12 +1261,12 @@ msgstr "Kunne ikke kopiere registreringsv msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Kunne ikke kopiere indholdet af registreringsnøgle '%s' til '%s'." -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "Kunne ikke kopiere filen '%s' til '%s'" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Kunne ikke lave DDE streng" @@ -1250,24 +1278,34 @@ msgstr "Kunne ikke oprette MDI for msgid "Failed to create a status bar." msgstr "Kunne ikke oprette statusbar." -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" msgstr "Kunne ikke lave et midlertidigt filnavn" -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 #, fuzzy msgid "Failed to create an anonymous pipe" msgstr "Kunne ikke oprette statusbar." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Kunne ikke forbinde til server '%s' ang. emne '%s'" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "Kunne ikke oprette dialog. Forkert DLGTEMPLATE?" +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Kunne ikke oprette MDI forældreramme." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Kunne ikke oprette registreringsindgang for '%s' filer." + #: ../src/generic/dirdlgg.cpp:201 #, c-format msgid "" @@ -1287,25 +1325,25 @@ msgstr "Kunne ikke oprette registreringsindgang for '%s' filer." msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "Kunne ikke opratte den almindelige søg/erstat dialog (fejlkode %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Kunne ikke vise HTML-dokument i %s kodning." -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Kunne ikke tømme udklipsholder." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Kunne ikke oprette advice loop med DDE server" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Kunne ikke etablere netværk via modem: %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Kunne ikke eksekvere '%s'\n" @@ -1337,12 +1375,12 @@ msgstr "" "Kunne ikke finde XPM resource %s.\n" "Glemt at bruge wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "Kunne ikke få ISP navne: %s" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." msgstr "Kunne ikke hente udklipsdata." @@ -1350,15 +1388,15 @@ msgstr "Kunne ikke hente udklipsdata." msgid "Failed to get data from the clipboard" msgstr "Kunne ikke hente data fra udklipsholder" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Kunne ikke få UTC systemtiden" -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Kunne ikke få lokal systemtid" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" msgstr "Kunne ikke få den aktuelle arbejdsmappe" @@ -1374,7 +1412,7 @@ msgstr "Kunne ikke initialisere MS HTML Hj msgid "Failed to initialize OpenGL" msgstr "Kunne ikke initialisere OpenGL" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1392,16 +1430,16 @@ msgstr "Kunne ikke dr msgid "Failed to load image %d from file '%s'." msgstr "Kunne ikke læse billede %d fra file '%s'." -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." msgstr "Kunne ikke åbne mpr.dll." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Kunne ikke åbne delt bibliotek '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Kunne ikke åbne delt bibliotek '%s' Fejl '%s'" @@ -1416,17 +1454,17 @@ msgstr "Kunne ikke l msgid "Failed to match '%s' in regular expression: %s" msgstr "Kunne ikke matche '%s' i det regulære udtryk: %s" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, c-format msgid "Failed to modify file times for '%s'" msgstr "Kunne ikke ændre filtid for '%s'" -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, c-format msgid "Failed to open '%s' for %s" msgstr "Kunne ikke åbne '%s' for %s" -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." msgstr "Kunne ikke åbne midlertidig fil." @@ -1442,21 +1480,21 @@ msgstr "Kunne ikke sende data til udklipsholder" msgid "Failed to read PID from lock file." msgstr "Kunne ikke læse PID fra lockfil." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Kunne ikke omdirigere input/output fra underproces" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 #, fuzzy msgid "Failed to redirect the child process IO" msgstr "Kunne ikke omdirigere input/output fra underproces" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Kunne ikke registrere DDE server '%s'" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Kunne ikke huske kodning for tegnsættet '%s'." @@ -1485,12 +1523,12 @@ msgstr "Kunne ikke omd msgid "Failed to retrieve data from the clipboard." msgstr "Kunne ikke hente data fra udklipsholder." -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Kunne ikke hente filtider for '%s'" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "Kunne ikke hente tekst fra RAS fejlmeddelelse" @@ -1498,7 +1536,7 @@ msgstr "Kunne ikke hente tekst fra RAS fejlmeddelelse" msgid "Failed to retrieve the supported clipboard formats" msgstr "Kunne ikke hente liste over understøttede udklipsformater" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Kunne ikke sende DDE advice notification" @@ -1511,11 +1549,11 @@ msgstr "Kunne ikke s msgid "Failed to set clipboard data." msgstr "Kunne ikke sende data til udklipsholder." -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" msgstr "Kunne ikke sætte midlertidige filrettigheder" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Kunne ikke sætte trådprioritet %d." @@ -1525,20 +1563,20 @@ msgstr "Kunne ikke s msgid "Failed to store image '%s' to memory VFS!" msgstr "Kunne ikke gemme billede '%s' i hukommelsen VFS!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Kunne ikke afslutte en tråd." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "Kunne ikke afslutte advice loop med DDE server" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Kunne ikke lukke netværk via modem forbindelse: %s" -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, c-format msgid "Failed to touch the file '%s'" msgstr "Kunne ikke røre (touch) filen '%s'" @@ -1548,7 +1586,7 @@ msgstr "Kunne ikke r msgid "Failed to unlock lock file '%s'" msgstr "Kunne ikke låse lockfil '%s' op" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Kunne ikke afregistrere DDE server '%s'" @@ -1566,7 +1604,7 @@ msgstr "Fatal fejl" msgid "Fatal error: " msgstr "Fatal fejl: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Fatal fejl: stopper" @@ -1575,12 +1613,12 @@ msgstr "Fatal fejl: stopper" msgid "File %s does not exist." msgstr "Filen %s findes ikke." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Fil '%s' findes allerede, vil du virkelig overskrive den?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, c-format msgid "" "File '%s' already exists.\n" @@ -1593,21 +1631,21 @@ msgstr "" msgid "File couldn't be loaded." msgstr "Fil kunne ikke læses." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Filfejl" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Filnavnet findes allerede." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Filer (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Find" @@ -1619,15 +1657,15 @@ msgstr "Fast type:" msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 tommer" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Skriftstørrelse:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Fork fejlede" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Fremad" @@ -1637,7 +1675,7 @@ msgstr "Fremad" msgid "Found " msgstr "Fandt " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Fandt %i matchende" @@ -1682,39 +1720,31 @@ msgstr "Tysk Std Fanfold, 8 1/2 x 12 tomme" msgid "GetUnusedColour:: No Unused Color in image " msgstr "GetUnusedColour: Ingen ubrugte farver i billedet " -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Tilbage" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "gå frem" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Et niveau op i dokument hierakiet" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Til hjemmemappe" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Til overmappe" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Græsk (ISO-8859-7)" @@ -1723,31 +1753,26 @@ msgstr "Gr msgid "HTML anchor %s does not exist." msgstr "HTML anker %s findes ikke." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"HTML filer (*.htm)|*.htm|HTML filer (*.html)|*.html|Hjælpebøger " -"(*.htb)|*.htb|Hjælpebøger (*.zip)|*.zip| HTML Hjælp-projekter " -"(*.hhp)|*.hhp|Alle filer (*.*)|*" +"HTML filer (*.htm)|*.htm|HTML filer (*.html)|*.html|Hjælpebøger (*.htb)|*." +"htb|Hjælpebøger (*.zip)|*.zip| HTML Hjælp-projekter (*.hhp)|*.hhp|Alle filer " +"(*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebræisk (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Hjælp" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Hjælp: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Hjælp til browser indstillinger" @@ -1755,7 +1780,7 @@ msgstr "Hj msgid "Help Index" msgstr "Hjælpeindex" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Hjælp til udskrift" @@ -1764,26 +1789,26 @@ msgstr "Hj msgid "Help: %s" msgstr "Hjælp: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "ICO: Fejl ved læsning af maske DIB." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" msgstr "ICO: Fejl ved skrivning af billedfil!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "ICO: Billede for højt til ikon." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "ICO: Billede for bredt til ikon." -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." msgstr "ICO: Ugyldigt ikonindex" @@ -1813,11 +1838,11 @@ msgstr "Ikonresource specifikation %s blev ikke fundet." msgid "Ill-formed resource file syntax." msgstr "Forkert formateret resourcefil syntax." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Ulovligt mappenavn" -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Ulovlig filspecifikation." @@ -1825,12 +1850,12 @@ msgstr "Ulovlig filspecifikation." msgid "Image and Mask have different sizes" msgstr "Billede og maske har forskellige størrelser" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "Billedfilen er ikke af type %d." -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1842,26 +1867,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Kunne ikke få input til underproces" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "Kunne ikke finde rettigheder til filen '%s'" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "Kunne ikke overskrive filen '%s'" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "Kunne ikke sætte rettigheder for filen '%s'" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Index" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Indisk (ISO-8859-12)" @@ -1869,17 +1894,17 @@ msgstr "Indisk (ISO-8859-12)" msgid "Invalid TIFF image index." msgstr "Ugyldigt TIFF billedindex" -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "Ugyldig XRC resource '%s': har ikke nogen rootnode 'resource'." -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, c-format msgid "Invalid display mode specification '%s'." msgstr "Ugyldig display mode specifikation '%s'." -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, c-format msgid "Invalid geometry specification '%s'" msgstr "Ugyldig geometrispecifikation '%s'" @@ -1894,7 +1919,7 @@ msgstr "Ugyldig lockfil '%s'." msgid "Invalid regular expression '%s': %s" msgstr "Ugyldigt regulært udtryk: '%s': %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Kursiv" @@ -1910,7 +1935,7 @@ msgstr "JPEG: Kunne ikke l msgid "JPEG: Couldn't save image." msgstr "JPEG: Kunne ikke gemme billede." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1938,17 +1963,17 @@ msgstr "Letter lille, 8 1/2 x 11 tommer" msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 tomme" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Let" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Læs %s file" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 #, fuzzy msgid "Load file" msgstr "Læs %s file" @@ -1979,15 +2004,15 @@ msgid "" "MS HTML Help functions are unavailable because the MS HTML Help library is " "not installed on this machine. Please install it." msgstr "" -"MS HTML hjælpefunktio er ikke tilgængelig fordi MS HTML " -"Hjælp-bibliotektetikke er installeret på denne computer. Vi foreslår at " -"installere det." +"MS HTML hjælpefunktio er ikke tilgængelig fordi MS HTML Hjælp-" +"bibliotektetikke er installeret på denne computer. Vi foreslår at installere " +"det." #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" msgstr "Ma&ksimér" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Mailcap fil %s, linie %d: ufuldstændig indgang ignoreret." @@ -2009,7 +2034,7 @@ msgstr "Metal tema" msgid "Mi&nimize" msgstr "Mi&nimér" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Mime.type fil %s, linie %d: uafsluttet citeret streng." @@ -2019,7 +2044,7 @@ msgstr "Mime.type fil %s, linie %d: uafsluttet citeret streng." msgid "Mode %ix%i-%i not available." msgstr "Mode %ix%i-%i er ikke tilgængelig." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Moderne" @@ -2027,24 +2052,24 @@ msgstr "Moderne" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarch Konvolut, 3 7/8 x 7 1/2 tomme" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Mere..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Navn" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NytNavn" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Næste side" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Nej" @@ -2066,7 +2091,7 @@ msgstr "Ingen XPM ikonfacilitet tilg msgid "No entries found." msgstr "Ingen indgange fundet." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2078,7 +2103,7 @@ msgstr "" "men en alternativ kodning '%s' er tilgængelig.\n" "Vil du bruge denne kodning (eller skal du vælge en anden)?" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2089,40 +2114,39 @@ msgstr "" "Vil du vælge en skrifttype til brug for denne kodning\n" "(ellers bliver tekst i denne kodning ikke vist korrekt)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "Ingen rutine fundet til at håndtere XML node '%s', klasse '%s'!" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Ingen rutine fundet til denne billedtype." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Ingen billedrutine defineret for type %d." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Ingen billedrutine defineret for type %s." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Fandt ingen passende side endnu" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordisk (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normal skrift:" @@ -2130,35 +2154,35 @@ msgstr "Normal skrift:" msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11 tomme" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Åbn HTML dokument" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Handling ikke tilladt." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Option '%s' skal have en værdi, '=' forventet." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Option '%s' kræver en værdi." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Option '%s': '%s' kan ikke konverteres til en dato." @@ -2207,12 +2231,12 @@ msgstr "PNM: Fil format ikke genkendt." msgid "PNM: File seems truncated." msgstr "PNM: Filen synes at være afskåret." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Side %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Side %d af %d" @@ -2235,11 +2259,11 @@ msgstr "Papirst msgid "Paper size" msgstr "Papirstørrelse" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Tilladelser" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Pipe oprettelse fejlede" @@ -2247,15 +2271,15 @@ msgstr "Pipe oprettelse fejlede" msgid "Please choose a valid font." msgstr "Vælg venligst en gyldig skrifttype." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Vælg venligst en eksisterende fil." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Vælg venligst hvilken ISP, der skal ringes op til" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2266,7 +2290,7 @@ msgstr "" "(mindst version 4.70, du har %d.%02d)\n" "ellers fungerer dette program ikke korrekt." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "Vent lidt, mens der udskrives\n" @@ -2278,15 +2302,11 @@ msgstr "Opretst msgid "PostScript file" msgstr "PostScript fil" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Udskriftsvisning:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Foregående side" @@ -2294,11 +2314,11 @@ msgstr "Foreg msgid "Print" msgstr "Udskriv" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Udskriftsvisning" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Udskriftsvisning fejlede" @@ -2318,7 +2338,7 @@ msgstr "Udskriv i farver" msgid "Print spooling" msgstr "Udskriftsspooling" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Udskriv denne side" @@ -2326,7 +2346,7 @@ msgstr "Udskriv denne side" msgid "Print to File" msgstr "Udskriv til fil" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Udskriv..." @@ -2346,20 +2366,20 @@ msgstr "Printer valgmuligheder:" msgid "Printer..." msgstr "Printer..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "Udskriver " -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Udskriftsfejl" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Udskriver side %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Udskriver..." @@ -2380,7 +2400,7 @@ msgstr "Sp msgid "Read error on file '%s'" msgstr "Læsefejl i fil '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "Refereret objekt-node med ref=\"%s\" ikke fundet!" @@ -2411,10 +2431,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Registreringsværdien '%s' eksisterer allerede." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Relevante indgange:" @@ -2423,7 +2439,7 @@ msgstr "Relevante indgange:" msgid "Remaining time : " msgstr "Tid tilbage : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Fjern den aktuelle side fra bogmærkerne" @@ -2435,7 +2451,7 @@ msgstr "Erstat &alle" msgid "Replace with:" msgstr "Erstat med:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "Resourcefilerne skal have samme versionsnummer!" @@ -2443,21 +2459,21 @@ msgstr "Resourcefilerne skal have samme versionsnummer!" msgid "Right margin (mm):" msgstr "Højre margin (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Gem %s fil" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Gem som" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 #, fuzzy msgid "Save file" msgstr "Gem %s fil" @@ -2466,20 +2482,15 @@ msgstr "Gem %s fil" msgid "Save log contents to file" msgstr "Gen log indhold til fil" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "Skærmskud taget: " - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Søg" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2495,21 +2506,15 @@ msgstr "S msgid "Search for:" msgstr "Søg efter:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Søg i alle bøger" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Søg" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Søger..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Afsnit" @@ -2518,24 +2523,29 @@ msgstr "Afsnit" msgid "Seek error on file '%s'" msgstr "Søgefejl i filen '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Vælg en file" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Vælg en dokumentskabelon" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Vælg en dokumentvisning" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Vælg en file" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Separator forventet efter optionen '%s'." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Opsætning" @@ -2543,15 +2553,15 @@ msgstr "Ops msgid "Setup..." msgstr "Opsætning..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "Har fundet flere netværk via modem forbindelser, vælger en tilfældig." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Vis alle" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Vis alle punkter i index" @@ -2559,36 +2569,36 @@ msgstr "Vis alle punkter i index" msgid "Show hidden directories" msgstr "Vis skjulte mapper" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Vis skjulte filer" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Vis/skjul navigationspanelet" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Størrelse" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Hældning" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Beklager, kunne ikke åbne denne fil til gemning." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Beklager, kunne ikke åbne denne fil." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Beklager, kunne ikke gemme denne fil." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Beklager, der er ikke nok hukomelse til Udskriftsvisning." @@ -2600,13 +2610,13 @@ msgstr "Statement, 5 1/2 x 8 1/2 tomme" msgid "Status: " msgstr "Status: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" "Underklasse '%s' ikke fundet til resource '%s', danner ikke underklasse!" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Swiss" @@ -2635,15 +2645,15 @@ msgstr "TIFF: Fejl ved skrivning af billede." msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 tommer" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Skabeloner" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" @@ -2651,7 +2661,7 @@ msgstr "Thai (ISO-8859-11)" msgid "The FTP server doesn't support passive mode." msgstr "FTP serveren understøtter ikke passiv mode." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2662,7 +2672,7 @@ msgstr "" "et andet til at erstatte det, eller vælg\n" "[Afbryd] hvis det ikke kan erstattes" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Udklipsholder format '%d' findes ikke." @@ -2676,7 +2686,7 @@ msgstr "" "Mappen '%s' eksisterer ikke\n" "Opret den nu?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2685,12 +2695,12 @@ msgstr "" "Filen '%s' eksisterer ikke og kunne ikke åbnes.\n" "Den er fjernet fra listen over senest brugte filer." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "Stien '%s' indeholder for mange \"..\"!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Den nødvendige parameter '%s' blev ikke angivet." @@ -2699,12 +2709,12 @@ msgstr "Den n msgid "The text couldn't be saved." msgstr "Teksten kunne ikke gemmes." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Værdien til optionen '%s' skal angives." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2713,7 +2723,7 @@ msgstr "" "Udgaven af Remote Access Service (RAS) i denne computer er for gammel, " "opgradering anbefales. (denne nødvendige funktion mangler: %s)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "Problem ved sideopsætning: du skal muligvis vælge en standardprinter." @@ -2726,7 +2736,7 @@ msgstr "" "Trådmodul initialisering fejlede: kan ikke gemme værdi i trådens private " "lager" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Trådmodul initialisering fejlede: kunne ikke oprette trådnøgle" @@ -2738,7 +2748,7 @@ msgstr "" "Trådmodul initialisering fejlede: umuligt at allokere index i trådens " "private lager." -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Prioritetsindstilling for tråd ignoreret." @@ -2750,15 +2760,15 @@ msgstr "Fordel &vandret" msgid "Tile &Vertically" msgstr "Fordel &lodret" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Tid" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Dagens tip" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Tips ikke tilgængelige, beklager!" @@ -2780,7 +2790,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "Forsøgte at løse et NULL hostname: giver op" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Tyrkisk (ISO-8859-9)" @@ -2793,7 +2803,7 @@ msgstr "US Std Fanfold, 14 7/8 x 11 tommer" msgid "Unable to open requested HTML document: %s" msgstr "Kunne ikke åbne det ønskede HTML-dokument: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Understreget" @@ -2810,45 +2820,45 @@ msgstr "Understreget" msgid "Unexpected end of file whilst parsing resource." msgstr "Uventet afslutning på filen under parsning af resource." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Uventet parameter '%s'" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "Unicode 7 bit (UTF-7)" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "Unicode 8 bit (UTF-8)" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Ukendt DDE fejl %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Ukendt kodning (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Ukendt felt i fil %s, linie %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Ukendt lang option '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Ukendt option '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "Ukendt stilflag " @@ -2867,12 +2877,12 @@ msgstr "Unavngiven kommando" msgid "Unrecognized style %s whilst parsing resource." msgstr "Stil %s ikke genkendt under parsning af resource." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Ikke-understøttet udklipsformat." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "Ikke-understøttet tema '%s'." @@ -2881,7 +2891,7 @@ msgstr "Ikke-underst msgid "Up" msgstr "Op" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Brug: %s" @@ -2890,23 +2900,23 @@ msgstr "Brug: %s" msgid "Validation conflict" msgstr "Valideringskonflikt" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Se filer med detaljer" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Se filer som liste" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Visninger" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Venten på under-process afslutning fejlede" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Advarsel" @@ -2914,15 +2924,15 @@ msgstr "Advarsel" msgid "Warning: " msgstr "Advarsel: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "Advarsel: førsøg på at fjerne HTML tag handler fra en tom stak." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "Vesteuropæisk (ISO-8859-1/Latin 1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "Vesteuropæisk med Euro (ISO-8859-15/Latin 0)" @@ -2930,7 +2940,7 @@ msgstr "Vesteurop msgid "Whole word" msgstr "Hele ord" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Kun hele ord" @@ -2938,68 +2948,68 @@ msgstr "Kun hele ord" msgid "Win32 theme" msgstr "Win32 tema" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s på Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabisk (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltisk (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows Centraleuropæisk (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "Windows Forenklet kinesisk (CP 936)" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows Traditionel kinesisk (CP 950)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Kyrillisk (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Græsk (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hebræisk (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "Windows Japansk (CP 932)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "Windows Koreansk (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Tyrkisk (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows Vesteuropæisk (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3022,26 +3032,22 @@ msgstr "XPM: pixeldata d msgid "XPM: malformed colour definition '%s'!" msgstr "XPM: farvedefinition dårligt formet '%s'!" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "XRC resource '%s' (klasse '%s') ikke fundet!" -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "XRC resource: Kan ikke lave bitmap fra '%s'." -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "XRC resource: Kan ikke lave dialogboks uden instance." - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "XRC resource: Ukorrekt farvespecification '%s' for egenskab '%s'." -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Ja" @@ -3050,19 +3056,19 @@ msgstr "Ja" msgid "You cannot add a new directory to this section." msgstr "Du kan ikke tilføje en mappe til denne sektion." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "ZIP handler understøtter foreløbig kun lokale filer!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[TOM]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "en DDEML applikation har lavet en forlænget race condition." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3073,39 +3079,39 @@ msgstr "" "eller der er sendt en ugyldig instance\n" "identifier til en DDEML funktion." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "en klients forsøg på at starte en konversation slog fejl." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "en hukommelsestildeling fejlede." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "en parameter kunne ikke valideres af DDEML." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "en anmodning om synkron advise transaktion fik timeout." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "en anmodning om en synkron datatransaktion fik timeout." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "en anmodning om en synkron execute transaktion fik timeout." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "en anmodning om en synkron poke transaktion fik timeout." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "en anmodning om at afslutte en advise transaktion fik timeout." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3115,7 +3121,7 @@ msgstr "" "der blev lukket af klienten, eller serveren lukkede\n" "inden afslutning af en transaktion." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "en transaktion mislykkedes" @@ -3123,7 +3129,7 @@ msgstr "en transaktion mislykkedes" msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3135,15 +3141,15 @@ msgstr "" "eller et program initialiseret som APPCMD_CLIENTONLY\n" "har forsøgt at udføre servertransaktioner." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "et internt kald til PostMessage funktionen mislykkedes. " -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "intern fejl opstået i DDEML." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3153,7 +3159,7 @@ msgstr "" "Når programmet er returneret fra en XTYP_XACT_COMPLETE callback,\n" "er transaktion identifikationen for dette callback ikke længere gyldig." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "forsøg på at ændre uforanderlig nøgle '%s' ignoreret." @@ -3162,11 +3168,11 @@ msgstr "fors msgid "binary" msgstr "binær" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 msgid "bold" msgstr "fed" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 msgid "bold " msgstr "fed " @@ -3175,32 +3181,32 @@ msgstr "fed " msgid "can't close file '%s'" msgstr "kan ikke lukke filen '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "kan ikke lukke fildeskriptor %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "kan ikke udføre ændringer til fil '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "kan ikke oprette fil '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "kan ikke slette brugerkonfigurationsfil '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "kan ikke afgøre om slutningen af filen er nået på deskriptor %d" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "kan ikke finde længden af filen på fildeskriptor %d" @@ -3209,55 +3215,55 @@ msgstr "kan ikke finde l msgid "can't find user's HOME, using current directory." msgstr "kan ikke finde brugerens HOME, bruger aktuelle mappe." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "kan ikke skylle fildeskriptor %d ud" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "kan ikke få søgeposition på fildescriptor %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "kan ikke åbne nogen skrift, afbryder" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "kan ikke åbne filen '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "kan ikke åbne global konfigurationsfil '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "kan ikke åbne brugerkonfigurationsfil '%s'." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "kan ikke åbne brugerkonfigurationsfil." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "kan ikke læse fra fildeskriptor %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "kan ikke fjerne filen '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "kan ikke fjerne midlertidig fil '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "kan ikke søge på fildeskriptor %d" @@ -3267,12 +3273,12 @@ msgstr "kan ikke s msgid "can't write buffer '%s' to disk." msgstr "kan ikke skrive buffer '%s' til disk." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "kan ikke skrive til fildeskriptor %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "kan ikke skrive brugerkonfigurationsfil." @@ -3285,32 +3291,32 @@ msgstr "katalogfil for dom msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "dato" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "standard" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "attende" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "ottende" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "elfte" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "indgang '%s' optræder mere end en gang i gruppe '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "etablere" @@ -3319,64 +3325,69 @@ msgstr "etablere" msgid "failed to flush the file '%s'" msgstr "kunne ikke flushe filen '%s'" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "femtende" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "femte" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "fil '%s', linie %d: '%s' ignoreret efter gruppe header." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "fil '%s', linje %d: '=' forventet." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "fil '%s', linje %d: nøgle '%s blev først fundet på linje %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "fil '%s', linje %d: værdi af uforanderlig nøgle '%s' blev ignoreret." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "fil '%s': uventet karakter %c på linje %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "første" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "fjortende" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "fjerde" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "lav udførlige logbeskedder" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() fejlede" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "initiér" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "ugyldig eof() returværdi." @@ -3384,19 +3395,15 @@ msgstr "ugyldig eof() returv msgid "invalid message box return value" msgstr "ugyldig meddelelsesboks returværdi" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" msgstr "kursiv" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "stor" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 msgid "light" msgstr "let" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 msgid "light " msgstr "let" @@ -3410,59 +3417,55 @@ msgstr "locale '%s' kan ikke s msgid "looking for catalog '%s' in path '%s'." msgstr "søger efter katalog '%s' i sti '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "middel" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "midnat" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() slog fejl" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "nittende" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "niende" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "ingen DDE-fejl." -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "unavngivet" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "middag" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "nummer" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "læser" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "reentrancy problem." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "anden" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "syttende" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "syvende" @@ -3470,80 +3473,76 @@ msgstr "syvende" msgid "shift" msgstr "skift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "vis denne hjælpebesked" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "sekstende" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "sjette" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "lille" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "angiv skærmindstillinger (fx 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "angiv tema at bruge" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "tiende" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "svaret på transaktionen bevirkede, at bitten DDE_FBUSY blev sat." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "tredje" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "trettende" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "i dag" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "i morgen" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "tolvte" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "tyvende" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 msgid "underlined" msgstr "understeget" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 msgid "underlined " msgstr "understeget " -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "uventet \" på position %d i '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "ukendt" @@ -3551,12 +3550,16 @@ msgstr "ukendt" msgid "unknown error" msgstr "ukendt fejl" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "ukendt fejl (fejlkode %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +msgid "unknown line terminator" +msgstr "ukendt linjeafslutter" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "ukendt søgestart" @@ -3565,11 +3568,11 @@ msgstr "ukendt s msgid "unknown-%d" msgstr "ukendt-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "unavngivet" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "unavngivet%d" @@ -3579,15 +3582,7 @@ msgstr "unavngivet%d" msgid "using catalog '%s' from '%s'." msgstr "bruger katalog '%s' fra '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "meget stor" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "meget lille" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "writing" msgstr "skriver" @@ -3596,19 +3591,15 @@ msgstr "skriver" msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "wxDllLoader kunne ikke GetSymbol '%s'" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "wxDynamicLibrary kunne ikke GetSymbol '%s'" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay mislykkedes." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: ugyldig signatur i ReadMsg." @@ -3617,21 +3608,59 @@ msgstr "wxSocket: ugyldig signatur i ReadMsg." msgid "wxSocket: unknown event!." msgstr "wxSocket: ukendt event!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows kunne ikke åbne display for '%s': stopper." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." msgstr "wxWindows kunne ikke åbne diplay. Stopper." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "i går" -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Alle filer (*)|*.*" +#~ msgid " bytes " +#~ msgstr " bytes " + +#~ msgid "

    " +#~ msgstr " " + +#~ msgid " " +#~ msgstr " " + +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "DIB Header: Kan ikke håndtere 4-bit kodning endnu." + +#, fuzzy +#~ msgid "Help : %s" +#~ msgstr "Hjælp: %s" + +#~ msgid "Screenshot captured: " +#~ msgstr "Skærmskud taget: " + +#, fuzzy +#~ msgid "Search!" +#~ msgstr "Søg" + +#~ msgid "XRC resource: Cannot create dialog without instance." +#~ msgstr "XRC resource: Kan ikke lave dialogboks uden instance." + +#~ msgid "large" +#~ msgstr "stor" + +#~ msgid "medium" +#~ msgstr "middel" + +#~ msgid "small" +#~ msgstr "lille" + +#~ msgid "very large" +#~ msgstr "meget stor" + +#~ msgid "very small" +#~ msgstr "meget lille" #~ msgid "Can not create mutex" #~ msgstr "Kan ikke oprette mutex." @@ -3690,9 +3719,6 @@ msgstr "i g #~ msgid "Y Translation" #~ msgstr "Y translatering" -#~ msgid "unknown line terminator" -#~ msgstr "ukendt linjeafslutter" - #~ msgid "Fatal Error" #~ msgstr "Fatal fejl" @@ -3892,7 +3918,8 @@ msgstr "i g #~ msgstr "Indgangsnavn kan ikke starte med '%c'." #~ msgid "" -#~ "Mime.types file %s, line %d: extra characters after the field value ignored." +#~ "Mime.types file %s, line %d: extra characters after the field value " +#~ "ignored." #~ msgstr "" #~ "Mime.type fil %s, linie %d: ekstra karakterer efter feltværdien ignoreret." @@ -3936,15 +3963,15 @@ msgstr "i g #~ "wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to " #~ "let me know about the canvas!" #~ msgstr "" -#~ "wxPrintPreviewBase::RenderPage: skal bruge wxPrintPreviewBase::SetCanvas for " -#~ "at lade mig vide om kanvasen!" +#~ "wxPrintPreviewBase::RenderPage: skal bruge wxPrintPreviewBase::SetCanvas " +#~ "for at lade mig vide om kanvasen!" #~ msgid "" -#~ "can't determine if the end of file is reached on descriptor " -#~ "%d" +#~ "can't determine if the end of file is reached on " +#~ "descriptor %d" #~ msgstr "" -#~ "kan ikke afgøre, om slutning af filen er nået på deskriptor " -#~ "%d" +#~ "kan ikke afgøre, om slutning af filen er nået på " +#~ "deskriptor %d" #~ msgid "bad index in wxArrayString::Insert" #~ msgstr "forkert index i wxArrayString::Insert" diff --git a/locale/de.po b/locale/de.po index f2e898a3d2..2e61258974 100644 --- a/locale/de.po +++ b/locale/de.po @@ -1,9 +1,9 @@ msgid "" msgstr "" -"Project-Id-Version: wxWindows-2.2\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"Project-Id-Version: wxWindows-2.4\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2000-08-11 11:11+0200\n" -"Last-Translator: Mark Johnson \n" +"Last-Translator: Robert Roebling \n" "Language-Team: wxWindows Team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -14,18 +14,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (Fehler %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Seitenansicht" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " Bytes " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Umschlag, 4 1/8 x 9 1/2 Zoll" @@ -53,23 +49,23 @@ msgstr "#9 Umschlag, 3 7/8 x 8 7/8 Zoll" msgid "#define %s must be an integer." msgstr "#define %s muß eine ganze Zahl sein" -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" -msgstr "" +msgstr "%d" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" -msgstr "" +msgstr "%d...%d" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i von %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr " %s (oder %s)" @@ -89,6 +85,11 @@ msgstr "%s Information" msgid "%s Warning" msgstr "%s Warnung" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -110,7 +111,7 @@ msgstr "%s: falsch formatierte Resourcendatei-Syntax" msgid "&Arrange Icons" msgstr "Icons anordnen" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "Ab&bruch" @@ -118,10 +119,19 @@ msgstr "Ab&bruch" msgid "&Cascade" msgstr "Kaskadieren" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Schließen" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Schreibmaschine" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Einzelheiten" @@ -130,14 +140,13 @@ msgstr "&Einzelheiten" msgid "&Find" msgstr "&Suchen" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Fertigstellen" -#: ../src/generic/wizard.cpp:249 -#, fuzzy +#: ../src/generic/wizard.cpp:258 msgid "&Help" -msgstr "Hilfe" +msgstr "&Hilfe" #: ../src/generic/logg.cpp:492 msgid "&Log" @@ -145,26 +154,31 @@ msgstr "&Log" #: ../src/univ/themes/win32.cpp:4539 msgid "&Move" -msgstr "" +msgstr "&Bewegen" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&Weiter" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Weiter >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Nächster Tip" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 #, fuzzy +msgid "&Paste" +msgstr "Datum" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" -msgstr "Vorherige HTLM-Seite zeigen" +msgstr "Zurück" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Wiederholen" @@ -177,24 +191,22 @@ msgid "&Replace" msgstr "&Ersetzen" #: ../src/univ/themes/win32.cpp:4538 -#, fuzzy msgid "&Restore" -msgstr "&Wiederholen" +msgstr "&Wiederherstellen" #: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "&Sichern..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Tipps beim Programmstart zeigen" #: ../src/univ/themes/win32.cpp:4541 -#, fuzzy msgid "&Size" -msgstr "Größe" +msgstr "&Größe" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Rückgängig" @@ -202,11 +214,13 @@ msgstr "&R msgid "&Undo " msgstr "&Rückgängig " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Fenster" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' hat extra '..', ignoriert." @@ -217,7 +231,7 @@ msgstr "'%s' hat extra '..', ignoriert." msgid "'%s' is invalid" msgstr "'%s' ist ungültig" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' ist kein gültiger numerischer Wert für Option '%s'." @@ -252,12 +266,12 @@ msgstr "'%s' sollte nur alphabetische Zeichen enthalten." msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' sollte nur alphanumersche Zeichen enthalten." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Hilfe)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(Lesezeichen)" @@ -271,11 +285,11 @@ msgstr "" ", erwartete static, #include oder #define\n" "beim Lesen der Resource." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -291,63 +305,56 @@ msgstr "11 x 17 Zoll" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Umschlag, 3 5/8 x 6 1/2 Zoll" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": Datei existiert nicht!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": unbekannte Zeichensatz" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": unbekannte Verschlüsselung ('encoding')" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Zurück" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" -"Normal face
    (and Unterstrichen. Kursiv face. " -"Fett face. Fett Kursiv face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    Fett Kursiv " -"Fett Kursiv Unterstrichen
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"Normal
    (and Unterstrichen. Kursiv. Fett. " +"Fett Kursiv.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size.
    Fett Kursiv Fett Kursiv " +"Unterstrichen
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -373,7 +380,7 @@ msgstr "ABCDEFGabcdefg12345 msgid "ASCII" msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Aktuelle HTLM-Seite den Lesezeichen hinzufügen" @@ -390,10 +397,15 @@ msgstr "Buch %s wird hinzugef msgid "All" msgstr "Alle" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Alle Dateien (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Alle Dateien (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Wähle bereits ISP." @@ -403,7 +415,7 @@ msgstr "W msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "An Logdatei '%s' anhängen ([Nein] wird sie ersetzen)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabisch (ISO-8859-6)" @@ -427,10 +439,9 @@ msgstr "B5 Blatt, 182 x 257 mm" msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 Umschlag, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 -#, fuzzy +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." -msgstr "PNM: Speicheranforderung gescheitert." +msgstr "BMP: Speicheranforderung gescheitert." #: ../src/common/imagbmp.cpp:86 msgid "BMP: Couldn't save invalid image." @@ -456,15 +467,15 @@ msgstr "BMP: Dateikopf (BitmapInfo) konnte nicht geschrieben werden." msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: wxImage hat keine eigene wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Rückwärts" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltisch (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltisch (alt) (ISO-8859-4)" @@ -473,7 +484,7 @@ msgstr "Baltisch (alt) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "Bitmapresourceangabe %s nicht gefunden." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Fett" @@ -509,12 +520,12 @@ msgstr "C6 Umschlag, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Umschlag, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1369 +#, c-format msgid "Can not enumerate files '%s'" msgstr "Kann Dateien '%s' nicht auflisten" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Kann Dateien in Verzeichnis '%s' nicht auflisten" @@ -541,7 +552,7 @@ msgstr "Kann nicht auf Threadende warten" msgid "Can't &Undo " msgstr "Kann nicht rückgängig machen " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -557,17 +568,16 @@ msgstr "Kann Registrierungsschl msgid "Can't copy values of unsupported type %d." msgstr "Kann Inhalte des nicht unterstützten Typs %d nicht kopieren." -#: ../src/msw/toplevel.cpp:295 -#, fuzzy +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" -msgstr "Kann Dialog nicht aus Template '%s' anlegen" +msgstr "Kann Dialog nicht im Speicher anlegen" -#: ../src/os2/toplevel.cpp:331 -#, fuzzy, c-format +#: ../src/os2/toplevel.cpp:369 +#, c-format msgid "Can't create dialog using template '%ul'" -msgstr "Kann Dialog nicht aus Template '%s' anlegen" +msgstr "Kann Dialog nicht aus Template '%ul' anlegen" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" "Kann ListCtrl-Fenster nicht erstellen, bitte überprüfen ob 'comctl32.dll' " @@ -582,7 +592,7 @@ msgstr "Kann Registrierungsschl msgid "Can't create thread" msgstr "Kann Thread nicht erzeugen" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "Kann kein Fenster der Klasse '%s' anlegen." @@ -653,9 +663,9 @@ msgid "Can't read value of key '%s'" msgstr "Kann Wert von Eintrag '%s' nicht lesen" #: ../src/common/image.cpp:955 -#, fuzzy, c-format +#, c-format msgid "Can't save image to file '%s': unknown extension." -msgstr "Kann Bild aus Datei '%s' nicht laden : Datei ist nicht vorhanden." +msgstr "Kann Bild nicht aus Datei '%s' laden: Unbekannte Dateiendung." #: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." @@ -670,62 +680,61 @@ msgstr "Kann Thread-Priorit msgid "Can't set value of '%s'" msgstr "Kann Wert von '%s' nicht setzen" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Abbruch" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." -msgstr "" +msgstr "Kann Dialog-Einheiten nicht konvertieren: Dialog unbekannt." -#: ../src/common/strconv.cpp:929 -#, fuzzy, c-format +#: ../src/common/strconv.cpp:963 +#, c-format msgid "Cannot convert from encoding '%s'!" -msgstr "Unbekannte Kodierung (%d)" +msgstr "Kann nicht von Kodierung (%s) konvertieren" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Kann keine aktive DFÜ-Verbindung finden: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:243 +#, c-format msgid "Cannot find container for unknown control '%s'." -msgstr "Kann keine aktive DFÜ-Verbindung finden: %s" +msgstr "Kann keinen Container für unbekanntes Control '%s' finden." -#: ../contrib/src/xrc/xmlres.cpp:948 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:1024 +#, c-format msgid "Cannot find font node '%s'." -msgstr "Kann URL '%s' nicht öffnen" +msgstr "Kann keinen Font-Knoten '%s' finden." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Kann Adressbuchdatei nicht finden" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Kann Prioritäts 'range' für 'scheduling policy' %d nicht bekommen." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Bekomme den Hostnamen nicht" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Kann den offizielen Hostnamen nicht bekommen" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Kann nicht auflegen - keine aktive DFÜ-Verbindung vorhanden." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Kann OLE nicht initialisiern" @@ -734,32 +743,32 @@ msgstr "Kann OLE nicht initialisiern" msgid "Cannot initialize SciTech MGL!" msgstr "Kann OLE nicht initialisiern" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 #, fuzzy msgid "Cannot initialize display." msgstr "Kann OLE nicht initialisiern" -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, fuzzy, c-format msgid "Cannot load icon from '%s'." msgstr "Kann Dateien in Verzeichnis '%s' nicht auflisten" -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, fuzzy, c-format msgid "Cannot load resources from file '%s'." msgstr "Konnte Resourcedatei %s nicht finden." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "HTML-Dokument %s kann nicht geöffnet werden" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "HTML-Hilfebuch %s kann nicht geöffnet werden" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Kann URL '%s' nicht öffnen" @@ -769,62 +778,60 @@ msgstr "Kann URL '%s' nicht msgid "Cannot open contents file: %s" msgstr "Kann den Inhalt der Datei nicht öffnen!" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, fuzzy, c-format msgid "Cannot open file '%s'." msgstr "Kann Datei '%s' nicht öffnen" -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Kann Datei für den Postscriptdruck nicht öffnen!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Kann Indexdatei nicht öffnen!" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, fuzzy, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Kann den Inhalt der Datei nicht öffnen!" -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, fuzzy, c-format msgid "Cannot parse dimension from '%s'." msgstr "Kann Dateien in Verzeichnis '%s' nicht auflisten" -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Leere Seite kann nicht gedruckt werden." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, fuzzy, c-format msgid "Cannot read typename from '%s'!" msgstr "Kann den Inhalt der Datei nicht öffnen!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Kann Thread 'scheduling policy' nicht holen." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Kann 'Thread' nicht starten : Fehler beim 'TLS' schreiben" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Groß-/Kleinschreibung" -#: ../src/common/fontmap.cpp:125 -#, fuzzy +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" -msgstr "Baltisch (ISO-8859-13)" +msgstr "Keltisch (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 -#, fuzzy +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" -msgstr "Zentral Europäisch (ISO-8859-2/Latin 2)" +msgstr "Zentral Europäisch (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Wähle ISP um anzurufen" @@ -832,11 +839,16 @@ msgstr "W msgid "Choose font" msgstr "Wähle Font" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Schließen" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Logtexte löschen" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Schließen" @@ -845,25 +857,29 @@ msgstr "Schlie msgid "Close\tAlt-F4" msgstr "" +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Schließen" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Fenster schließen" -#: ../src/generic/dirctrlg.cpp:547 -#, fuzzy +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" -msgstr "Der Computer" +msgstr "Computer" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Die Bezeichnung des Konfiurationseintrags kann nicht mit %c beginnen." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Bestätigen" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -871,14 +887,14 @@ msgstr "" msgid "Connecting..." msgstr "Verbinde..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Inhalt" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." -msgstr "" +msgid "Conversion to charset '%s' doesn't work." +msgstr "Konvertierung zum Zeichensatz '%s' funktioniert nicht." #: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" @@ -894,7 +910,7 @@ msgstr "Konnte Resourcedatei %s nicht finden." msgid "Could not find tab for id" msgstr "Konnte Seite für ID nicht finden" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Kann 'Rich Edit'-DLL nicht laden '%s'" @@ -919,19 +935,19 @@ msgstr "" "Zahl\n" " oder ein #define." -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Kann Druckvorschau nicht starten." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Kann Ausdruck nicht beginnen." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Kann Daten nicht ins Fenster übertragen." -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -942,11 +958,10 @@ msgid "Couldn't create a timer" msgstr "Kann keinen Timer anlegen." #: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 -#, fuzzy msgid "Couldn't create cursor." -msgstr "Kann keinen Timer anlegen." +msgstr "Konnte Cursor nicht erzeugen." -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Kann Symbol '%s' in der dynamischen Bibliothek nicht finden" @@ -955,27 +970,26 @@ msgstr "Kann Symbol '%s' in der dynamischen Bibliothek nicht finden" msgid "Couldn't get the current thread pointer" msgstr "Kann den aktuellen Threadzeiger nicht bekommen." -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Konnte PNG-Bild nicht laden - Datei ist beschädigt oder der Speicher reicht " "nicht aus." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Konnte Zwischenablage-Format '%s' nicht registrieren." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Kann keine Informationen über ListControl %d bekommen." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 -#, fuzzy +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." -msgstr "JPEG: Konnte Bild nicht sichern." +msgstr "Konnte PNG-Bild nicht speichern." #: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" @@ -985,79 +999,72 @@ msgstr "Kann Thread nicht beenden" msgid "Create directory" msgstr "Verzeichnis anlegen" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Neues Verzeichnis anlegen" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Aktuelles Verzeichnis:" -#: ../src/common/fontmap.cpp:116 -#, fuzzy +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" -msgstr "Baltisch (ISO-8859-13)" +msgstr "Kyrillisch (ISO-8859-5)" #: ../src/common/paper.cpp:106 msgid "D sheet, 22 x 34 in" msgstr "D Blatt, 22 x 34 Zoll" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE 'poke' gescheitert" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: Kann noch nicht mit 4bit verschlüsseltem Code umgehen." - -#: ../src/common/imagbmp.cpp:836 -#, fuzzy +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." -msgstr "BMP: Verschlüsselung entspricht der Bittiefe nicht." +msgstr "DIB Header: Kodierung entspricht der Bittiefe nicht." -#: ../src/common/imagbmp.cpp:798 -#, fuzzy +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." -msgstr "BMP: Bildhöhe > 32767 pixels." +msgstr "DIB Header: Bildhöhe > 32767 pixels." -#: ../src/common/imagbmp.cpp:792 -#, fuzzy +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." -msgstr "BMP: Bildbreite > 32767 pixels." +msgstr "DIB Header: Bildbreite > 32767 pixels." -#: ../src/common/imagbmp.cpp:812 -#, fuzzy +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." -msgstr "BMP: Unbekannte Bittiefe." +msgstr "DIB Header: Unbekannte Bittiefe." -#: ../src/common/imagbmp.cpp:822 -#, fuzzy +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." -msgstr "BMP: Unbekannte Verschlüsselung." +msgstr "DIB Header: Unbekannte Kodierung." #: ../src/common/paper.cpp:128 msgid "DL Envelope, 110 x 220 mm" msgstr "DL Umschlag, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Datum" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Dekorativ" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" -msgstr "" +msgstr "Standard Kodierung" #: ../src/unix/snglinst.cpp:269 -#, fuzzy, c-format +#, c-format msgid "Deleted stale lock file '%s'." -msgstr "Kann INI-Datei '%s' nicht löschen" +msgstr "Ungenutzte Sperr-Datei '%s' wurde gelöscht." -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1066,55 +1073,55 @@ msgstr "" "(Remote Access Service) auf dieser Maschine nicht installiert ist. Bitte " "installieren." -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 #, fuzzy msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "" -"Dialog wurde nicht erstellt. Möglicheweise haben sie vergessen 'include " -"wx/msw/wx.rc' in ihre resource einzutragen." +"Dialog wurde nicht erstellt. Möglicheweise haben sie vergessen 'include wx/" +"msw/wx.rc' in ihre resource einzutragen." -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." -msgstr "Wußten Sie schon..." +msgstr "Wussten Sie schon..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Verzeichnis '%s' konnte nicht angelegt werden." #: ../src/mgl/dirmgl.cpp:217 -#, fuzzy, c-format +#, c-format msgid "Directory '%s' doesn't exist!" -msgstr "Verzeichnis existiert nicht" +msgstr "Verzeichnis '%s' existiert nicht." #: ../src/generic/dirdlgg.cpp:188 msgid "Directory does not exist" msgstr "Verzeichnis existiert nicht" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." msgstr "" "Alle Themen im Index nach Suchbegriff durchsuchen. Groß-/Kleinschreibung " -"wird nicht beachtet" +"wird nicht beachtet." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Options Dialog anzeigen" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Möchten Sie die Änderungen im Dokument %s sichern?" @@ -1123,14 +1130,13 @@ msgstr "M msgid "Done" msgstr "Ich habe fertig :-)" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Fertig." #: ../src/generic/fdrepdlg.cpp:157 -#, fuzzy msgid "Down" -msgstr "Ich habe fertig :-)" +msgstr "Herunter" #: ../src/common/paper.cpp:107 msgid "E sheet, 34 x 44 in" @@ -1144,24 +1150,24 @@ msgstr "bisher ben msgid "Entries found" msgstr "Einträge gefunden" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "" -"Umgebungsvariablenexpansion schlug fehl. Es fehlt '%c' an Position %d in " -"'%s'." +"Umgebungsvariablenexpansion schlug fehl. Es fehlt '%c' an Position %d in '%" +"s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Fehler" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Fehler " @@ -1169,16 +1175,15 @@ msgstr "Fehler " msgid "Error creating directory" msgstr "Fehler beim Anlegen des Verzeichnisses" -#: ../src/common/imagbmp.cpp:845 -#, fuzzy +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." -msgstr "TIFF: Fehler beim Lesen des Bildes." +msgstr "Fehler beim Lesen des DIB-Bildes." #: ../src/common/log.cpp:460 msgid "Error: " msgstr "Fehler: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1186,7 +1191,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Geschätzte Zeit :" -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Befehlsausführung '%s' schlug fehl" @@ -1213,34 +1218,37 @@ msgstr "Erwartete '=' beim Lesen der Resource." msgid "Expected 'char' whilst parsing resource." msgstr "Erwartete 'char' beim Lesen der Resource." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Fehlerhafte %s DFÜ-Verbindung: %s" #: ../src/unix/snglinst.cpp:243 msgid "Failed to access lock file." -msgstr "" +msgstr "Fehler beim Zugriff auf Sperr-Datei." -#: ../src/common/filename.cpp:172 -#, fuzzy +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" -msgstr "Konnte Zwischenablage nicht schließen." +msgstr "Konnte Datei-Handle nicht schließen." #: ../src/unix/snglinst.cpp:308 -#, fuzzy, c-format +#, c-format msgid "Failed to close lock file '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte Sperr-Datei '%s' nicht schließen" #: ../src/msw/clipbrd.cpp:127 msgid "Failed to close the clipboard." msgstr "Konnte Zwischenablage nicht schließen." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Verbindung fehlgeschlagen : Es fehlt der Username bzw. das Passwort" -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Verbindungsversuch gescheitert : kein anwählbares ISP." @@ -1255,12 +1263,12 @@ msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "" "Kopieren des Inhalts des Registrieungsschlüssels '%s' nach '%s' gescheitert" -#: ../src/common/filefn.cpp:1106 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1117 +#, c-format msgid "Failed to copy the file '%s' to '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte die Datei '%s' nicht nach '%s' kopieren" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Erstellung des DDE-Strings gescheitert" @@ -1272,64 +1280,71 @@ msgstr "Erstellung des MDI-Hauptframes gescheitert." msgid "Failed to create a status bar." msgstr "Erstellung der Statusbar gescheitert." -#: ../src/common/filename.cpp:717 -#, fuzzy +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" -msgstr "Erstellung des MDI-Hauptframes gescheitert." +msgstr "Konnte keinen vorrübergehenden Dateinamen erstellen." -#: ../src/msw/utilsexc.cpp:195 -#, fuzzy +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" -msgstr "Erstellung der Statusbar gescheitert." +msgstr "Konnte keine anonyme Unix-Pipe erstellen" -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Aufbau der Verbindung zur Server '%s' 'on topic' gescheitert" -#: ../src/msw/toplevel.cpp:293 -#, fuzzy +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" -msgstr "Konnte Verzeichnis nicht anlegen " +msgstr "Konnte Dialog nicht erstellen. Ungültiges DLGTEMPLATE?" + +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Erstellung des MDI-Hauptframes gescheitert." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Konnte keinen Registrieungseintrag für '%s'-Dateien erstellen." #: ../src/generic/dirdlgg.cpp:201 -#, fuzzy, c-format +#, c-format msgid "" "Failed to create directory '%s'\n" "(Do you have the required permissions?)" msgstr "" -"\n" +"Konnte Verzeichnis '%s' nicht erstellen\n" "(Haben Sie die nötigen Zugriffsrechte?)" #: ../src/msw/mimetype.cpp:168 -#, fuzzy, c-format +#, c-format msgid "Failed to create registry entry for '%s' files." -msgstr "Umbenennen des Registrieungsschlüssels von '%s' in '%s' gescheitert" +msgstr "Konnte keinen Registrieungseintrag für '%s'-Dateien erstellen." #: ../src/msw/fdrepdlg.cpp:442 #, c-format msgid "Failed to create the standard find/replace dialog (error code %d)" -msgstr "" +msgstr "Konnte keinen Standard Finden/Ersetzen-Dialog erstellen (Fehler %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" -msgstr "Anzeige von HTLM-Dokument in %s 'encoding' ist gescheitert" +msgstr "Konnte HTML-Dokument nicht in der Kodierung %s anzeigen" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Konnte Zwischenablage nicht leeren." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Aufbau eines 'advise loop' mit DDE Server gescheitert" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Aufbau der DFÜ-Verbindung gescheitert : %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Kann '%s' nicht ausführen\n" @@ -1361,103 +1376,98 @@ msgstr "" "Konnte XPM-Resource %s nicht finden.\n" "Haben sie vergessen, die wxResource 'LoadBitmapData' zu verwenden?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" -msgstr "Versuch gescheitert, 'IPS names' '%s' zu bekommen" +msgstr "Konnte ISP Namen '%s' nicht ermitteln" -#: ../src/mac/clipbrd.cpp:118 -#, fuzzy +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." -msgstr "Konnte Dateien nicht in die Zwischenablage kopieren." +msgstr "Konnte Daten nicht aus der Zwischenablage kopieren." #: ../src/msw/clipbrd.cpp:712 msgid "Failed to get data from the clipboard" -msgstr "Versuch, Daten aus der Zwischenablage zu bekommen, gescheitert" +msgstr "Konnte Daten nicht aus der Zwischenablage kopieren" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." -msgstr "Versuch, UTC-Systen-Zeit zu bekommen, gescheitert" +msgstr "Versuch, UTC-Systen-Zeit zu bekommen, gescheitert." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Versuch, örtliche Systemzeit zu bekommen, gescheitert." -#: ../src/common/filefn.cpp:1487 -#, fuzzy +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" -msgstr "Konnte Verzeichnis nicht anlegen " +msgstr "Konnte Arbeits-Verzeichnis nicht ermitteln" #: ../src/univ/theme.cpp:120 msgid "Failed to initialize GUI: no built-in themes found." -msgstr "" +msgstr "Konnte GUI nicht initialisieren: kein Theme gefunden." #: ../src/msw/helpchm.cpp:69 msgid "Failed to initialize MS HTML Help." -msgstr "" +msgstr "Konnte MS HTML-Hilfe nicht initialisieren." #: ../src/msw/glcanvas.cpp:729 -#, fuzzy msgid "Failed to initialize OpenGL" -msgstr "Kann OLE nicht initialisiern" +msgstr "Konnte OpenGL nicht initialisiern" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" msgstr "" -"Thread-Verbindung gescheitert, mögliche 'memory leak' festgestellt - Bitte " +"Thread-Verbindung gescheitert. Dies ist ein mögliches Speicherleck - Bitte " "Programm neu starten" #: ../src/msw/utils.cpp:721 -#, fuzzy, c-format +#, c-format msgid "Failed to kill process %d" -msgstr "Umleitung des Ein/Ausgabe des Unterprozesses gescheitert" +msgstr "Konnte Prozess %d nicht abbrechen" #: ../src/common/iconbndl.cpp:66 -#, fuzzy, c-format +#, c-format msgid "Failed to load image %d from file '%s'." -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte das Bild %d aus der Datei '%s' nicht laden." -#: ../src/msw/volume.cpp:340 -#, fuzzy +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." -msgstr "Konnte Dateien nicht in die Zwischenablage kopieren." +msgstr "Konnte mpr.dll nicht laden." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" -msgstr "Laden des DLL '%s' gescheitert" +msgstr "Laden der DLL '%s' gescheitert" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 -#, fuzzy, c-format +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 +#, c-format msgid "Failed to load shared library '%s' Error '%s'" -msgstr "Laden des DLL '%s' gescheitert" +msgstr "Laden der DLL '%s' gescheitert: Fehler '%s'" #: ../src/unix/snglinst.cpp:192 -#, fuzzy, c-format +#, c-format msgid "Failed to lock the lock file '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte die Sperr-Datei '%s' nicht sperren" #: ../src/common/regex.cpp:251 -#, fuzzy, c-format +#, c-format msgid "Failed to match '%s' in regular expression: %s" -msgstr "Fehlerhafte %s DFÜ-Verbindung: %s" +msgstr "Konnte keine Übereinstimmung in regulärem Ausdruck %s finden" -#: ../src/common/filename.cpp:1644 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1667 +#, c-format msgid "Failed to modify file times for '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte Zugriffszeit von Datei '%s' nicht ändern" -#: ../src/common/filename.cpp:160 -#, fuzzy, c-format +#: ../src/common/filename.cpp:164 +#, c-format msgid "Failed to open '%s' for %s" -msgstr "Konnte Zwischenablage nicht öffnen." +msgstr "Konnte '%s' nicht für %s öffnen." -#: ../src/common/filename.cpp:739 -#, fuzzy +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." -msgstr "Konnte Zwischenablage nicht öffnen." +msgstr "Konnte vorrübergehende Datei nicht öffnen." #: ../src/msw/clipbrd.cpp:107 msgid "Failed to open the clipboard." @@ -1468,39 +1478,37 @@ msgid "Failed to put data on the clipboard" msgstr "Versuch, Daten in der Zwischenablage abzulegen, gescheitert" #: ../src/unix/snglinst.cpp:252 -#, fuzzy msgid "Failed to read PID from lock file." -msgstr "Erstellung des MDI-Hauptframes gescheitert." +msgstr "Konnte keine PID von Sperr-Datei lesen." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Umleitung des Ein/Ausgabe des Unterprozesses gescheitert" -#: ../src/msw/utilsexc.cpp:600 -#, fuzzy +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "Umleitung des Ein/Ausgabe des Unterprozesses gescheitert" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Versuch, DDE-Server '%s' zu registrieren, gescheitert" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "" "Versuch gescheitert, an die Kodierung für den Zeichensatz '%s' zu erinnern." #: ../src/unix/snglinst.cpp:296 -#, fuzzy, c-format +#, c-format msgid "Failed to remove lock file '%s'" -msgstr "Kann Datei '%s' nicht löschen." +msgstr "Konnte Sperr-Datei '%s' nicht löschen." #: ../src/unix/snglinst.cpp:262 -#, fuzzy, c-format +#, c-format msgid "Failed to remove stale lock file '%s'." -msgstr "Umbenennen des Registrieungswertes '%s' in '%s' gescheitert" +msgstr "Konnte unbenutzte Sperr-Datei '%s' nicht entfernen." #: ../src/msw/registry.cpp:443 #, c-format @@ -1516,39 +1524,38 @@ msgstr "Umbenennen des Registrieungsschl msgid "Failed to retrieve data from the clipboard." msgstr "Konnte Daten von der Zwischenablage nicht bekommen." -#: ../src/common/filename.cpp:1710 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1757 +#, c-format msgid "Failed to retrieve file times for '%s'" -msgstr "Versuch, den Inhalt der RAS-Fehlernachricht zu holen, gescheitert" +msgstr "Konnte Zugriffszeit von Datei '%s' nicht ermitteln" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "Versuch, den Inhalt der RAS-Fehlernachricht zu holen, gescheitert" #: ../src/msw/clipbrd.cpp:742 msgid "Failed to retrieve the supported clipboard formats" msgstr "" -"Versuch, das von der Zwischenablage unterstützte Format zu holen, gescheitert" +"Konnte die von der Zwischenablage unterstützten Formate nicht ermitteln" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Versuch gescheitert, eine DDE-Benachrichtigung zu schicken" #: ../src/common/ftp.cpp:368 -#, fuzzy, c-format +#, c-format msgid "Failed to set FTP transfer mode to %s." -msgstr "Versuch gescheitert, die Thread-Priorität %d zu setzten." +msgstr "Konnte den FTP-Transfermodus nicht auf '%s' setzen." #: ../src/msw/clipbrd.cpp:379 msgid "Failed to set clipboard data." msgstr "Konnte Dateien nicht in die Zwischenablage kopieren." -#: ../src/common/file.cpp:522 -#, fuzzy +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte die Zugriffsrechte der vorrübergehenden Datei nicht setzen" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Versuch gescheitert, die Thread-Priorität %d zu setzten." @@ -1558,38 +1565,38 @@ msgstr "Versuch gescheitert, die Thread-Priorit msgid "Failed to store image '%s' to memory VFS!" msgstr "Versuch, das Bild '%s' im VFS-Speicher zu laden, gescheitert!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Versuch, den Thread zu beenden, gescheitert." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "Versuch gescheitert, den 'advise loop' mit DDE-Server zu beenden." -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Versuch gescheitert, die DFÜ-Verbindung zu beenden: %s" -#: ../src/common/filename.cpp:1659 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1682 +#, c-format msgid "Failed to touch the file '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte die Datei '%s' nicht 'berühren'" #: ../src/unix/snglinst.cpp:302 -#, fuzzy, c-format +#, c-format msgid "Failed to unlock lock file '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte die Sperrung von Datei '%s' nicht aufheben" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Versuch gescheitert, den DDE-Server '%s' zu deregistrieren." #: ../src/unix/snglinst.cpp:173 -#, fuzzy, c-format +#, c-format msgid "Failed to write to lock file '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Konnte Sperr-Datei '%s' nicht schreiben" #: ../src/generic/logg.cpp:379 msgid "Fatal error" @@ -1597,48 +1604,50 @@ msgstr "Nicht-behebbarer Fehler" #: ../src/common/log.cpp:453 msgid "Fatal error: " -msgstr "Nicht-behebbarer Fehler:" +msgstr "Nicht-behebbarer Fehler: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Nicht-behebbarer Fehler: Abbruch" #: ../src/mgl/bitmap.cpp:544 -#, fuzzy, c-format +#, c-format msgid "File %s does not exist." -msgstr ": Datei existiert nicht!" +msgstr "Datei '%s' existiert nicht." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Datei '%s' existiert bereits, möchten Sie sie wirklich überschreiben?" -#: ../src/msw/filedlg.cpp:505 -#, fuzzy, c-format +#: ../src/msw/filedlg.cpp:518 +#, c-format msgid "" "File '%s' already exists.\n" "Do you want to replace it?" -msgstr "Datei '%s' existiert bereits, möchten Sie sie wirklich überschreiben?" +msgstr "" +"Datei '%s' existiert bereits.\n" +"Möchten Sie sie wirklich überschreiben?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "Datei konnte nicht geladen werden." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Dateifehler" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Dateiname bereits vorhanden" -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Dateien (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Suchen" @@ -1650,15 +1659,15 @@ msgstr "Fixed font:" msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 Zoll" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" -msgstr "Font Große:" +msgstr "Font Größe:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "'Fork' gescheitert" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Vorwärts" @@ -1668,7 +1677,7 @@ msgstr "Vorw msgid "Found " msgstr "Gefunden " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Suchbegriff %i mal gefunden" @@ -1678,9 +1687,8 @@ msgid "From:" msgstr "Von:" #: ../src/common/imaggif.cpp:100 -#, fuzzy msgid "GIF: Invalid gif index." -msgstr "Ungültiger Index des TIFF-Bilds." +msgstr "GIF: Ungültiger Index." #: ../src/common/imaggif.cpp:75 msgid "GIF: data stream seems to be truncated." @@ -1696,11 +1704,11 @@ msgstr "GIF: nicht genug Speicher." #: ../src/common/imaggif.cpp:65 msgid "GIF: unknown error!!!" -msgstr "GIF: unbekannter Fehler!!!" +msgstr "GIF: unbekannter Fehler!" #: ../src/univ/themes/gtk.cpp:623 msgid "GTK+ theme" -msgstr "" +msgstr "GTK+ Thema" #: ../src/common/paper.cpp:142 msgid "German Legal Fanfold, 8 1/2 x 13 in" @@ -1712,41 +1720,33 @@ msgstr "German Std Entlospapier, 8 1/2 x 12 Zoll" #: ../src/common/image.cpp:762 msgid "GetUnusedColour:: No Unused Color in image " -msgstr "" +msgstr "GetUnusedColour:: Keine unbenutzte Farbe im Bild." -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" -msgstr "Vorherige HTLM-Seite zeigen" +msgstr "Vorherige HTML-Seite zeigen" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Nächste HTLM Seite zeigen" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "In die nächste Dokumentebene gehen" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Gehe zum Home-Verzeichnis" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Gehe zum 'Parent'-Verzeichnis" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" -msgstr "" +msgstr "Gehe zur Seite" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Griechisch (ISO-8859-7)" @@ -1755,31 +1755,26 @@ msgstr "Griechisch (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "HTML 'anchor' %s existiert nicht." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"HTML Dateien (*.htm)|*.htm|HTML Dateien (*.html)|*.html|Hilfebücher " -"(*.htb)|*.htb|Hilfebücher (*.zip)|*.zip|HTML-Hilfe-Projekt " -"(*.hhp)|*.hhp|Alle Dateien (*.*)|*" +"HTML Dateien (*.htm)|*.htm|HTML Dateien (*.html)|*.html|Hilfebücher (*.htb)|" +"*.htb|Hilfebücher (*.zip)|*.zip|HTML-Hilfe-Projekt (*.hhp)|*.hhp|Alle " +"Dateien (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebräisch (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Hilfe" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Hilfe: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Hilfe zu den Browser-Optionen" @@ -1787,7 +1782,7 @@ msgstr "Hilfe zu den Browser-Optionen" msgid "Help Index" msgstr "Hilfeindex" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Hilfe drucken" @@ -1796,51 +1791,44 @@ msgstr "Hilfe drucken" msgid "Help: %s" msgstr "Hilfe: %s" -#: ../src/common/imagbmp.cpp:858 -#, fuzzy +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." -msgstr "TIFF: Fehler beim Lesen des Bildes." +msgstr "ICO: Fehler beim Lesen der DIB Maske." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 -#, fuzzy +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" -msgstr "TIFF: Schreibfehler beim Sichern." +msgstr "ICO: Schreibfehler beim Sichern." -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." -msgstr "" +msgstr "ICO: Bild zu gross für ein Icon." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." -msgstr "" +msgstr "ICO: Bild zu breit fü ein Icon." -#: ../src/common/imagbmp.cpp:1167 -#, fuzzy +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." -msgstr "Ungültiger Index des TIFF-Bilds." +msgstr "ICO: Unütiger Icon-Index." #: ../src/common/imagiff.cpp:767 -#, fuzzy msgid "IFF: data stream seems to be truncated." -msgstr "GIF: Datei scheint unvollständig zu sein." +msgstr "IFF: Datei scheint unvollständig zu sein." #: ../src/common/imagiff.cpp:751 -#, fuzzy msgid "IFF: error in IFF image format." -msgstr "GIF: Fehler im GIF-Bildformat." +msgstr "IFF: Fehler im IFF Bildformat." #: ../src/common/imagiff.cpp:754 -#, fuzzy msgid "IFF: not enough memory." -msgstr "GIF: nicht genug Speicher." +msgstr "IFF: nicht genug Speicher." #: ../src/common/imagiff.cpp:757 -#, fuzzy msgid "IFF: unknown error!!!" -msgstr "GIF: unbekannter Fehler!!!" +msgstr "IFF: unbekannter Fehler!" #: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 #: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 @@ -1852,24 +1840,24 @@ msgstr "Icon %s nicht gefunden." msgid "Ill-formed resource file syntax." msgstr "Ungültige Syntax in 'resource file'" -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Ungültiger Verzeichnisname" -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Ungültige Dateiangabe" #: ../src/common/image.cpp:785 msgid "Image and Mask have different sizes" -msgstr "" +msgstr "Bild und Bildmaske haben verschiedene Grössen" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." -msgstr "" +msgstr "Bild hat nicht den Bildtyp %d." -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1881,60 +1869,59 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Es war nicht möglich, die Eingabe des Unterprozesses zu verarbeiten" -#: ../src/common/filefn.cpp:1122 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1133 +#, c-format msgid "Impossible to get permissions for file '%s'" -msgstr "Es war nicht möglich, die Eingabe des Unterprozesses zu verarbeiten" +msgstr "Konnte nicht due Zugriffsrecht der Datei '%s' ermitteln" -#: ../src/common/filefn.cpp:1136 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1147 +#, c-format msgid "Impossible to overwrite the file '%s'" -msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" +msgstr "Versuch, die Datei '%s' zu überschreiben, gescheitert" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" -msgstr "" +msgstr "Konnte die Zugriffsrechte für Datei '%s' nicht setzen" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Hilfe-Index" -#: ../src/common/fontmap.cpp:123 -#, fuzzy +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" -msgstr "Nordisch (ISO-8859-10)" +msgstr "Indisch (ISO-8859-12)" #: ../src/common/imagtiff.cpp:183 msgid "Invalid TIFF image index." msgstr "Ungültiger Index des TIFF-Bilds." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" -#: ../src/common/appcmn.cpp:378 -#, fuzzy, c-format +#: ../src/common/appcmn.cpp:399 +#, c-format msgid "Invalid display mode specification '%s'." -msgstr "Ungültige Dateiangabe" +msgstr "Ungütige Angabe '%s' des Displays." -#: ../src/x11/app.cpp:231 -#, fuzzy, c-format +#: ../src/x11/app.cpp:218 +#, c-format msgid "Invalid geometry specification '%s'" -msgstr "Ungültige Dateiangabe" +msgstr "Ungültige Angabe '%s' der Fenstergrösse" #: ../src/unix/snglinst.cpp:280 -#, fuzzy, c-format +#, c-format msgid "Invalid lock file '%s'." -msgstr "Kann Datei '%s' nicht schließen" +msgstr "Ungültige Sperr-Datei '%s'." #: ../src/common/regex.cpp:173 #, c-format msgid "Invalid regular expression '%s': %s" -msgstr "" +msgstr "Ungültiger regulärer Ausdruck '%s': %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Kursiv" @@ -1950,7 +1937,7 @@ msgstr "JPEG: Lesefehler - Datei ist vermutlich besch msgid "JPEG: Couldn't save image." msgstr "JPEG: Konnte Bild nicht sichern." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1978,24 +1965,23 @@ msgstr "Letter Small, 8 1/2 x 11 Zoll" msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 Zoll" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Dünn" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "%s-Datei laden" -#: ../src/generic/filedlgg.cpp:1589 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" -msgstr "%s-Datei laden" +msgstr "Lade Datei" #: ../src/html/htmlwin.cpp:282 msgid "Loading : " -msgstr "Laden : " +msgstr "Laden: " #: ../src/common/imagpnm.cpp:72 msgid "Loading Grey Ascii PNM image is not yet implemented." @@ -2028,16 +2014,16 @@ msgstr "" #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" -msgstr "" +msgstr "Ma&ximieren" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Mailcap-Datei %s, Zeile %d: unvollständiger Eintrag ignoriert." #: ../src/generic/fdrepdlg.cpp:152 msgid "Match case" -msgstr "" +msgstr "Gross- und Kleinschreibung beachten" #: ../src/common/fs_mem.cpp:144 #, c-format @@ -2046,13 +2032,13 @@ msgstr "VFS-Speicher beinhaltet bereits der Datei '%s'!" #: ../src/univ/themes/metal.cpp:174 msgid "Metal theme" -msgstr "" +msgstr "Metal-Thema" #: ../src/univ/themes/win32.cpp:4543 msgid "Mi&nimize" -msgstr "" +msgstr "Mi&nimieren" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Mime.types-Datei %s, Zeile %d: nicht terminierter Text" @@ -2062,7 +2048,7 @@ msgstr "Mime.types-Datei %s, Zeile %d: nicht terminierter Text" msgid "Mode %ix%i-%i not available." msgstr "" -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2070,31 +2056,31 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarch Envelope, 3 7/8 x 7 1/2 Zoll" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Mehr..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Name" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NeuerName" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Nächste HTLM Seite zeigen" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Nein" #: ../src/common/image.cpp:793 msgid "No Unused Color in image being masked" -msgstr "" +msgstr "Keine unbenutze Farbe im Bild, das maskiert werden soll" #: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 #: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 @@ -2109,63 +2095,63 @@ msgstr "Kein XBM-Icon-Dienst verf msgid "No entries found." msgstr "Keine Einträge gefunden." -#: ../src/common/fontmap.cpp:865 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:906 +#, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" "but an alternative encoding '%s' is available.\n" "Do you want to use this encoding (otherwise you will have to choose another " "one)?" msgstr "" -"Die Kodierung '%s' ist nicht bekannt.\n" -"Möchten Sie einen Font für diese Kodierung wählen\n" -"(sonst wird der Text mit dieser Kodierung nicht richtig angezeigt)?" +"Kein Font für die Kodierung '%s' gefunden,\n" +"es ist aber eine Alternative '%s' verfügbar.\n" +"Möchten Sie diesen Font für diese Kodierung wählen\n" +"(sonst müssen Sie einen anderen auswählen)?" -#: ../src/common/fontmap.cpp:870 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:911 +#, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" "Would you like to select a font to be used for this encoding\n" "(otherwise the text in this encoding will not be shown correctly)?" msgstr "" -"Die Kodierung '%s' ist nicht bekannt.\n" +"Kein Font für die Kodierung '%s' gefunden,\n" "Möchten Sie einen Font für diese Kodierung wählen\n" "(sonst wird der Text mit dieser Kodierung nicht richtig angezeigt)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Dieses Bild-Format wird nicht unterstützt" -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Bild-Format %d wurde nicht definiert." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Bild-Format %s wurde nicht definiert." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Passende Seite noch nicht gefunden" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordisch (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normal Font:" @@ -2173,35 +2159,35 @@ msgstr "Normal Font:" msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11 Zoll" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Öffne HTLM Dokument" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Ausführung nicht erlaubt" -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Option '%s' erwartet einen Wert, '=' erwartet." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Option '%s' erwartet einen Wert." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Option '%s': '%s' kann nicht in eine Datum umgesetzt werden." @@ -2250,12 +2236,12 @@ msgstr "PNM: Datei-Format wurde nicht erkannt." msgid "PNM: File seems truncated." msgstr "PNM: Datei wurde abgeschnitten." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Seite %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Seite %d aus %d" @@ -2278,11 +2264,11 @@ msgstr "Papierformat" msgid "Paper size" msgstr "Papierformat" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Erlaubnisse" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Konnte keine Pipe anlegen" @@ -2290,25 +2276,28 @@ msgstr "Konnte keine Pipe anlegen" msgid "Please choose a valid font." msgstr "Bitte wählen Sie einen gültigen Font." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Bitte wählen Sie eine bestehende Datei." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Bitte gewünschte ISP-Verbindung auswählen" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" "(at least version 4.70 is required but you have %d.%02d)\n" "or this program won't operate correctly." msgstr "" +"Bitte installieren Sie eine neuere Version con comctl32.dll\n" +"(mindestens Version 4.70 wird benötigt, aber Sie haben nur\n" +"Version %d.%02d)." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" -msgstr "" +msgstr "Bitte warten Sie während des Druckens\n" #: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 msgid "Portrait" @@ -2318,15 +2307,11 @@ msgstr "Hochformat" msgid "PostScript file" msgstr "PostScript-Datei" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Vorschau:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Vorherige HTLM-Seite zeigen" @@ -2334,11 +2319,11 @@ msgstr "Vorherige HTLM-Seite zeigen" msgid "Print" msgstr "Drucken" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Druckvorschau" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Fehler bei der Druckvorschau" @@ -2358,7 +2343,7 @@ msgstr "Farbig drucken" msgid "Print spooling" msgstr "Druckersteuerung" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Diese Seite Drucken" @@ -2366,7 +2351,7 @@ msgstr "Diese Seite Drucken" msgid "Print to File" msgstr "In Datei drucken" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Drucken..." @@ -2386,21 +2371,20 @@ msgstr "Druckereinstellungen:" msgid "Printer..." msgstr "Drucker..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 -#, fuzzy +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " -msgstr "Drucken" +msgstr "Drucken von " -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Fehler beim Drucken" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Drucke Seite %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Drucke..." @@ -2421,7 +2405,7 @@ msgstr "Frage" msgid "Read error on file '%s'" msgstr "Lesefehler in Datei '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -2453,106 +2437,87 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Registrierungswert '%s' bereits vorhanden." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Relevante Einträge:" #: ../src/generic/progdlgg.cpp:199 msgid "Remaining time : " -msgstr "Verbleibne Zeit : " +msgstr "Verbleibende Zeit : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Aktuelle HTLM-Seite als Lesezeichen entfernen" #: ../src/generic/fdrepdlg.cpp:177 -#, fuzzy msgid "Replace &all" -msgstr "Datei '%s' ersetzen?" +msgstr "Alle &ersetzen" #: ../src/generic/fdrepdlg.cpp:129 msgid "Replace with:" -msgstr "" +msgstr "Ersetzen durch:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" -msgstr "" +msgstr "Resource-datei muss Versionsnummer haben!" #: ../src/generic/prntdlgg.cpp:644 msgid "Right margin (mm):" msgstr "Rechter Rand (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Datei %s sichern" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Sichern als" -#: ../src/generic/filedlgg.cpp:1604 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" -msgstr "Datei %s sichern" +msgstr "Datei sichern" #: ../src/generic/logg.cpp:487 msgid "Save log contents to file" msgstr "Logtexte in Datei sichern" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Suchen" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" msgstr "Alle Hilfebücher nach eingegebenem Begriff durchsuchen." #: ../src/generic/fdrepdlg.cpp:158 -#, fuzzy msgid "Search direction" -msgstr "Verzeichnis anlegen" +msgstr "Suchrichtung" #: ../src/generic/fdrepdlg.cpp:117 -#, fuzzy msgid "Search for:" -msgstr "Suchen" +msgstr "Suchen nach:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Alle Bücher durchsuchen" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Suchen" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Suchen..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Optionen" @@ -2561,24 +2526,29 @@ msgstr "Optionen" msgid "Seek error on file '%s'" msgstr "Suchfehler in Datei '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Datei wählen" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Dokument-Template wählen" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Dokument-Anzeige ('View') wählen" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Datei wählen" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Trennungzeichen nach der Option '%s' erwartet." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Einstellungen" @@ -2586,53 +2556,52 @@ msgstr "Einstellungen" msgid "Setup..." msgstr "Einstellungen..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "Mehrere aktive DFÜ-Verbindungen gefunden, wähle einer davon aus." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Alles zeigen" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Alle Themen im Index anzeigen" #: ../src/generic/dirdlgg.cpp:135 -#, fuzzy msgid "Show hidden directories" -msgstr "Versteckte Dateien anzeigen" +msgstr "Versteckte Verzeichnisse anzeigen" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Versteckte Dateien anzeigen" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Suchbaum Ein-/Ausschalten" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Größe" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Geneigt" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Bedauere, diese Datei konnte zur Sicherung nicht geöffnet werden." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Bedauere, diese Datei konnte nicht geöffnet werden." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Bedauere, diese Datei konnte nicht gesichert werden." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Nicht genug Speicher für Voransicht." @@ -2644,12 +2613,12 @@ msgstr "Statement, 5 1/2 x 8 1/2 Zoll" msgid "Status: " msgstr "Status: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Swiss" @@ -2678,23 +2647,23 @@ msgstr "TIFF: Schreibfehler beim Sichern." msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 Zoll" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Schreibmaschine" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Templaten" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" #: ../src/common/ftp.cpp:569 msgid "The FTP server doesn't support passive mode." -msgstr "" +msgstr "Der FTP-Server unterstützt den passiven Transfermodus nicht." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2705,7 +2674,7 @@ msgstr "" "einen Ersatzzeichensatz oder 'Abbruch', \n" "falls er nicht ersetzt werden kann." -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Das Zwischenablageformat '%d' existiert nicht." @@ -2720,7 +2689,7 @@ msgstr "" "existiert nicht\n" "Jetzt anlegen?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, fuzzy, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2729,12 +2698,12 @@ msgstr "" "Die Datei '%s' existiert nicht und konnte nicht geöffnet werden.\n" "Sie wurde außerdem von der MRU-Dateiliste entfernt." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" -msgstr "" +msgstr "Der Pfad '%s' enthält zu viele \"..\"." -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Der benötigte Parameter '%s' wurde nicht angegeben." @@ -2743,12 +2712,12 @@ msgstr "Der ben msgid "The text couldn't be saved." msgstr "Der Text konnte nicht gesichert werden." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Der Wert für die Option '%s' muß angegeben werden" -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2757,10 +2726,12 @@ msgstr "" "Der installierte RAS-Dienst Version ist zu alt, bitte auf den neusten Stand " "bringen (folgende Funktion fehlt: %s)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" +"Es gab ein Problem bei der Seiteneinrichtung: eventuelle müssen Sie einen\n" +"Standarddrucker einrichten." #: ../src/msw/thread.cpp:1214 msgid "" @@ -2770,7 +2741,7 @@ msgstr "" "Thread-Modul-Initialisierung gescheitert: Kann den Wert nicht zuweisen " "('thread local storage'). " -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" "Thread-Modul-Initialisierung gescheitert: Thread-Schlüssel konnte nicht " @@ -2784,7 +2755,7 @@ msgstr "" "Thread-Modul-Initialisierung gescheitert: Index konnte nicht allokiert " "werden ( 'thread local storage' )" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Thread Prioritätseinstellung wird ignoriert" @@ -2796,15 +2767,15 @@ msgstr "" msgid "Tile &Vertically" msgstr "" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Zeit" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Tip des Tages" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Bedauere, Tipps stehen nicht zur Verfügung" @@ -2827,7 +2798,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "Beim Versuch, einen NULL-Hostnamen aufzulösen, gebe ich auf" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Türkisch (ISO-8859-9)" @@ -2840,7 +2811,7 @@ msgstr "US Std Entlospapier, 14 7/8 x 11 Zoll" msgid "Unable to open requested HTML document: %s" msgstr "Das angeforderte HTML-Dokument konnte nicht geöffnet werden: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Unterstrichen" @@ -2857,45 +2828,45 @@ msgstr "Unterstrichen" msgid "Unexpected end of file whilst parsing resource." msgstr "Unerwartetes Dateiende während des Lesevorgang." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Unerwarteter Parameter '%s'" -#: ../src/common/fontmap.cpp:141 -msgid "Unicode 7 bit (UTF-7)" -msgstr "" - #: ../src/common/fontmap.cpp:142 -msgid "Unicode 8 bit (UTF-8)" -msgstr "" +msgid "Unicode 7 bit (UTF-7)" +msgstr "Unicode 7 bit (UTF-7)" -#: ../src/msw/dde.cpp:1020 +#: ../src/common/fontmap.cpp:143 +msgid "Unicode 8 bit (UTF-8)" +msgstr "Unicode 8 bit (UTF-8)" + +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Unbekannter DDE-Fehler %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Unbekannte Kodierung (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Unbekanntes Feld '%s' in Datei %s, Zeile %d." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Unbekannte 'long'-Option '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Unbekannte Option '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -2914,21 +2885,21 @@ msgstr "Ungenanntes Kommando" msgid "Unrecognized style %s whilst parsing resource." msgstr "Unbekannt: 'style' %s während das Lesevorgangs." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Nicht unterstütztes Format in der Zwischenablage." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." -msgstr "" +msgstr "Unbekanntes Thema '%s'." #: ../src/generic/fdrepdlg.cpp:157 msgid "Up" -msgstr "" +msgstr "Hoch" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Verwendung: %s" @@ -2937,23 +2908,23 @@ msgstr "Verwendung: %s" msgid "Validation conflict" msgstr "Verifizierungs Konflikt" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Dateien mit Datails anzeigen" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Dateien als Liste anzeigen" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Darstellung" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Wartezeit für das Ende eines Subprozesses abgelaufen" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Warnung" @@ -2961,102 +2932,94 @@ msgstr "Warnung" msgid "Warning: " msgstr "Warnung: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" "Warnung: Es wurde versucht, einen 'HTML-tag-handler' von einem leeren Stack " "zu entfernen." -#: ../src/common/fontmap.cpp:112 -#, fuzzy +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" -msgstr "Westeuropäisch (ISO-8859-1/Latin 1)" +msgstr "Westeuropäisch (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 -#, fuzzy +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" -msgstr "Westeuropäisch neu (ISO-8859-15/Latin 0)" +msgstr "Westeuropäisch mit Euro (ISO-8859-15)" #: ../src/generic/fdrepdlg.cpp:149 -#, fuzzy msgid "Whole word" -msgstr "Nur ganze Worte" +msgstr "Ganzes Wort" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Nur ganze Worte" #: ../src/univ/themes/win32.cpp:1168 msgid "Win32 theme" -msgstr "" +msgstr "Win32 Thema" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s on Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabisch (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltisch (CP 1257)" -#: ../src/common/fontmap.cpp:132 -#, fuzzy -msgid "Windows Central European (CP 1250)" -msgstr "Windows Hebräisch (CP 1255)" - -#: ../src/common/fontmap.cpp:129 -msgid "Windows Chinese Simplified (CP 936)" -msgstr "" - -#: ../src/common/fontmap.cpp:131 -#, fuzzy -msgid "Windows Chinese Traditional (CP 950)" -msgstr "Windows Latin 2 (CP 1250)" - #: ../src/common/fontmap.cpp:133 +msgid "Windows Central European (CP 1250)" +msgstr "Windows Zentral Europäisch (CP 1250)" + +#: ../src/common/fontmap.cpp:130 +msgid "Windows Chinese Simplified (CP 936)" +msgstr "Windows Vereinfachtes Chinesisch (CP 936)" + +#: ../src/common/fontmap.cpp:132 +msgid "Windows Chinese Traditional (CP 950)" +msgstr "Windows Traditionelles Chinesisch (CP 950)" + +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Kyrillisch (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Griechisch (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hebräisch (CP 1255)" -#: ../src/common/fontmap.cpp:128 -#, fuzzy +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" -msgstr "Windows Griechisch (CP 1253)" +msgstr "Windows Japanisch (CP 932)" -#: ../src/common/fontmap.cpp:130 -#, fuzzy +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" -msgstr "Windows Griechisch (CP 1253)" +msgstr "Windows Koreanisch (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Türkisch (CP 1254)" -#: ../src/common/fontmap.cpp:134 -#, fuzzy +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" -msgstr "Windows Latin 1 (CP 1252)" +msgstr "Windows West Europäisch (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3079,26 +3042,22 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, fuzzy, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "Icon %s nicht gefunden." -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Ja" @@ -3107,19 +3066,19 @@ msgstr "Ja" msgid "You cannot add a new directory to this section." msgstr "Sie können hier kein neues Verzeichnis anlegen." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" -msgstr "" +msgstr "ZIP Handler unterstützt derzeit nur lokale Dateien." -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[leer]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "Eine DDEML-Application hat eine 'prolonged race condition' erstellt." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3131,50 +3090,50 @@ msgstr "" "oder ein ungültiger 'instance identifier'\n" "wurde an eine DDEML-Funktion übergeben." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "" "Der Versuch eines Clients, eine Verbindung herzustellen, ist gescheitert." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "Eine Speicheranforderung ist gescheitert." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "Ein Parameter wurde von DDEML nicht verifiziert." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" -"Eine Anfrage für eine 'synchronous advise transaction' ist gescheitert " -"(time-out)" +"Eine Anfrage für eine 'synchronous advise transaction' ist gescheitert (time-" +"out)" -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" -"Eine Anfrage für eine 'synchronous data transaction' ist gescheitert " -"(time-out)" +"Eine Anfrage für eine 'synchronous data transaction' ist gescheitert (time-" +"out)" -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" "Eine Anfrage für eine 'synchronous execute transaction' ist gescheitert " "(time-out)" -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" -"Eine Anfrage für eine 'synchronous poke transaction' ist gescheitert " -"(time-out)" +"Eine Anfrage für eine 'synchronous poke transaction' ist gescheitert (time-" +"out)" -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" -"Eine Anfrage, eine 'advise transaction' zu beenden ist, gescheitert " -"(time-out)" +"Eine Anfrage, eine 'advise transaction' zu beenden ist, gescheitert (time-" +"out)" -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3184,7 +3143,7 @@ msgstr "" "wurde vom Client abgebrochen, oder der Server\n" "terminierte bevor die Transaktion vollständig beendet wurde." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "Eine Transaktion ist gescheitert." @@ -3192,7 +3151,7 @@ msgstr "Eine Transaktion ist gescheitert." msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3204,15 +3163,15 @@ msgstr "" "oder eine Applikation, die als ein 'APPCMD_CLIENTONLY' gestartet wurde, \n" "versuchte eine Servertransaktion auszuführen." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "Ein interner Aufruf zur 'PostMessage'-Funktion ist gescheitert. " -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "Ein interne Fehler ist im DDMEL aufgetreten." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3224,56 +3183,54 @@ msgstr "" "ist,\n" "ist die Transaktionsidentifizierung für dieses Callback nicht mehr gültig." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "Versuch, Eintrag '%s' zu ändern, verweigert. Ist nicht schreibbar." #: ../src/common/ftp.cpp:369 msgid "binary" -msgstr "" +msgstr "binär" -#: ../src/common/fontcmn.cpp:518 -#, fuzzy +#: ../src/common/fontcmn.cpp:521 msgid "bold" -msgstr "Fett" +msgstr "fett" -#: ../src/common/fontcmn.cpp:442 -#, fuzzy +#: ../src/common/fontcmn.cpp:445 msgid "bold " -msgstr "Fett" +msgstr "fett " #: ../src/common/ffile.cpp:93 #, c-format msgid "can't close file '%s'" msgstr "Kann Datei '%s' nicht schließen" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "Kann Dateibeschreibung '%s' nicht schließen" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "Kann Änderungen in Datei '%s' nicht sichern." -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "Kann Datei '%s' nicht anlegen." -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "Kann Konfigurationsdatei '%s' nicht löschen." -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "Kann auf Dateibeschreibung '%d' das Dateiende nicht Feststellen" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "Kann auf Dateibeschreibung '%d' die Dateilänge nicht finden" @@ -3282,70 +3239,70 @@ msgstr "Kann auf Dateibeschreibung '%d' die Dateil msgid "can't find user's HOME, using current directory." msgstr "Kann Benutzerverzeichnis nicht finden, verwende aktuelles Verzeichnis." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "Kann auf die Dateibeschreibung '%d' nicht entladen" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "Kann auf die Dateibeschreibung %d nicht positionieren" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "Kann keine Fonts mehr laden, Abbruch" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "Kann Datei '%s' nicht öffnen" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "Kann globale Konfigurationsdatei '%s' nicht öffnen." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "Kann Konfigurationsdatei '%s' nicht öffnen." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "Kann Benutzer-Konfigurationsdatei nicht öffnen." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "Kann Dateibeschreibung '%d' nicht lesen" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "Kann Datei '%s' nicht löschen." -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "Kann Temporärdatei '%s' nicht löschen" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "Kann auf die Dateibeschreibung '%d' nicht suchen" #: ../src/common/textfile.cpp:196 -#, fuzzy, c-format +#, c-format msgid "can't write buffer '%s' to disk." -msgstr "Kann Datei '%s' nicht schreiben." +msgstr "Kann den Puffer '%s' nicht schreiben." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "Kann Dateibeschreibung '%d' nicht schreiben" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "Kann Benutzer-Konfigurationsdatei nicht schreiben." @@ -3358,33 +3315,32 @@ msgstr "Nachrichtenkatalog f msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "Datum" -#: ../src/common/fontmap.cpp:413 -#, fuzzy +#: ../src/common/fontmap.cpp:416 msgid "default" -msgstr "alt" +msgstr "Standard" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "achtzehnte" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "achte" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "elfte" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "Eintrag '%s' erscheint in Gruppe '%s' mehrfach" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "Verbunden" @@ -3393,65 +3349,70 @@ msgstr "Verbunden" msgid "failed to flush the file '%s'" msgstr "Versuch, die Datei '%s' zu entladen, gescheitert" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "fünfzehnte" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "fünfte" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "Datei '%s', Zeile %d: '%s' hinter Gruppenkopf ignoriert." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "Datei '%s', Zeile %d: '=' erwartet." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "Datei '%s', Zeile %d: Eintrag '%s' taucht erstmals in Zeile %d auf." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "" "Datei '%s', Zeile %d: Wert für nicht-änderbaren Eintrag '%s' ignoriert." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "Datei '%s': unerwartetes Zeichen %c in Zeile %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "erste" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "vierzehnte" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "vierte" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" -msgstr "" +msgstr "ausführliche Log-Nachrichten erstellen" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() gescheitert" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "einleiten" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "ungültiger 'eof()'-Rückgabewert." @@ -3459,24 +3420,17 @@ msgstr "ung msgid "invalid message box return value" msgstr "ungültiger 'message box'-Rückgabewert." -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 -#, fuzzy +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" -msgstr "Kursiv" +msgstr "kursiv" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "Groß" - -#: ../src/common/fontcmn.cpp:514 -#, fuzzy +#: ../src/common/fontcmn.cpp:517 msgid "light" -msgstr "Dünn" +msgstr "dünn" -#: ../src/common/fontcmn.cpp:438 -#, fuzzy +#: ../src/common/fontcmn.cpp:441 msgid "light " -msgstr "Dünn" +msgstr "dünn " #: ../src/common/intl.cpp:615 #, c-format @@ -3488,59 +3442,55 @@ msgstr "Lokale Umgebung '%s' kann nicht gesetzt werden." msgid "looking for catalog '%s' in path '%s'." msgstr "Suche Nachrichtenkatalog '%s' in Pfad '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "Mittel" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "Mitternacht" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() gescheitert" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "neunzehnte" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "neunte" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "kein DDE-Fehler" -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "namenlos" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "mittags" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" -msgstr "" +msgstr "Lesen" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "Probleme beim Wiedereintreten" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "zweite" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "siebzehnte" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "siebte" @@ -3548,96 +3498,94 @@ msgstr "siebte" msgid "shift" msgstr "Umschalt" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" -msgstr "" +msgstr "Zeige diesen Hilfstext" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "sechszehnte" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "sechste" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "Klein" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" -msgstr "" +msgstr "geben Sie das zu benutzende Thema an" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "zehnte" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "das Ergebnis zur Transaktion hat der 'DDE_FBUSY'-Bit gesetzt." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "dritte" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "dreizehnte" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "heute" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "morgen" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "zwölfte" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "zwanzigste" -#: ../src/common/fontcmn.cpp:510 -#, fuzzy +#: ../src/common/fontcmn.cpp:513 msgid "underlined" -msgstr "Unterstrichen" +msgstr "unterstrichen" -#: ../src/common/fontcmn.cpp:425 -#, fuzzy +#: ../src/common/fontcmn.cpp:428 msgid "underlined " -msgstr "Unterstrichen" +msgstr "unterstrichen " -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "unerwartete \" bei Position %d in '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "unbekannt" #: ../src/common/regex.cpp:144 -#, fuzzy msgid "unknown error" -msgstr "GIF: unbekannter Fehler!!!" +msgstr "unbekannter Fehler" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "unbekannter Fehler (Fehlercode %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "unbekannter Fehler" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "Unbekannte Suchposition" @@ -3646,11 +3594,11 @@ msgstr "Unbekannte Suchposition" msgid "unknown-%d" msgstr "unbekannt-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "Unbenannt" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "Unbenannt%d" @@ -3660,37 +3608,24 @@ msgstr "Unbenannt%d" msgid "using catalog '%s' from '%s'." msgstr "Verwende Nachrichtenkatalog '%s' von '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "sehr groß" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "sehr klein" - -#: ../src/common/filename.cpp:162 -#, fuzzy +#: ../src/common/filename.cpp:166 msgid "writing" -msgstr "Drucken" +msgstr "Schreiben" #: ../src/common/dynlib.cpp:336 #, c-format msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay gescheitert." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: ungültige Signatur in ReadMsg." @@ -3699,313 +3634,57 @@ msgstr "wxSocket: ung msgid "wxSocket: unknown event!." msgstr "wxSocket: unbekanntes Ereignis!." -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows konnte 'open display' nicht ausführen für '%s': Abbruch." -#: ../src/x11/app.cpp:265 -#, fuzzy +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." -msgstr "wxWindows konnte 'open display' nicht ausführen für '%s': Abbruch." +msgstr "wxWindows konnte Display nicht öffnen: Abbruch." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "Gestern" -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Alle Dateien (*.*)|*.*" +#~ msgid " bytes " +#~ msgstr " Bytes " -#~ msgid "Can not create mutex" -#~ msgstr "Kann Mutex nicht anlegen" +#~ msgid "

    " +#~ msgstr " " -#~ msgid "Can't create the inter-process read pipe" -#~ msgstr "Kann 'inter-process- read-pipe' nicht erzeugen" +#~ msgid " " +#~ msgstr " " -#~ msgid "Can't create the inter-process write pipe" -#~ msgstr "Kann 'inter-process-write-pipe' nicht erzeugen" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "DIB Header: Kann noch nicht mit 4bit Kodierung umgehen." -#~ msgid "Couldn't acquire a mutex lock" -#~ msgstr "Kann Mutex-Lock nicht bekommen" +#~ msgid "Go back to the previous HTML page" +#~ msgstr "Zurück zur letzten HTML Seite" -#~ msgid "Couldn't release a mutex" -#~ msgstr "Kann Mutex nicht freigeben." +#~ msgid "Go forward to the next HTML page" +#~ msgstr "Vorwärts nur nächsten HTML Seite" -#~ msgid "Font" -#~ msgstr "Font" +#~ msgid "Help : %s" +#~ msgstr "Hilfe: %s" -#~ msgid "PostScript" -#~ msgstr "PostScript" +#~ msgid "Preparing help window..." +#~ msgstr "Bereite Hilfsfenster vor..." -#~ msgid "PostScript:" -#~ msgstr "PostScript:" +#~ msgid "Search!" +#~ msgstr "Suche!" -#~ msgid "Preview Only" -#~ msgstr "Nur Voransicht" +#~ msgid "large" +#~ msgstr "Groß" -#~ msgid "Printer Command: " -#~ msgstr "Druckbefehl: " +#~ msgid "medium" +#~ msgstr "Mittel" -#~ msgid "Printer Options: " -#~ msgstr "Befehlsoptionen: " +#~ msgid "small" +#~ msgstr "klein" -#~ msgid "Printer Settings" -#~ msgstr "Druckereinstellungen" +#~ msgid "very large" +#~ msgstr "sehr groß" -#~ msgid "Send to Printer" -#~ msgstr "Zum Drucker schicken" - -#, fuzzy -#~ msgid "SetPixelFormat failed." -#~ msgstr "Konnte keine Pipe anlegen" - -#~ msgid "X Scaling" -#~ msgstr "X-Skalierung" - -#~ msgid "X Translation" -#~ msgstr "X-Verschiebung" - -#~ msgid "Y Scaling" -#~ msgstr "Y-Skalierung" - -#~ msgid "Y Translation" -#~ msgstr "Y-Verschiebung" - -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "Unbekannte Suchposition" - -#~ msgid "Fatal Error" -#~ msgstr "Nicht-behebbarer Fehler" - -#, fuzzy -#~ msgid "Fatal error: %s\n" -#~ msgstr "Nicht-behebbarer Fehler:" - -#~ msgid "Back" -#~ msgstr "Zurück" - -#~ msgid "Can not create event object." -#~ msgstr "Kann Eventobjekt nicht erzeugen." - -#~ msgid "Can't find the serialization object '%s' for the object '%s'." -#~ msgstr "Kann Serialisierungsobjekt '%s' für Object '%s' nicht finden." - -#~ msgid "Can't load wxSerial dynamic library." -#~ msgstr "Kann wxSerial-DLL nicht laden." - -#~ msgid "Connection to wxHelp timed out in %d seconds" -#~ msgstr "Verbindung mit wxHelp nach %d Sekunden abgebrochen" - -#~ msgid "Etcetera" -#~ msgstr "etc" - -#, fuzzy -#~ msgid "ICO: Error calculating size of DIB ." -#~ msgstr "TIFF: Fehler beim Lesen des Bildes." - -#, fuzzy -#~ msgid "ICO: Error calculating size of Mask DIB ." -#~ msgstr "TIFF: Fehler beim Lesen des Bildes." - -#, fuzzy -#~ msgid "ICO: Error calculating size of XOR DIB ." -#~ msgstr "TIFF: Fehler beim Lesen des Bildes." - -#, fuzzy -#~ msgid "ICO: Error writing ICONDIR header." -#~ msgstr "TIFF: Schreibfehler beim Sichern." - -#, fuzzy -#~ msgid "ICO: Error writing ICONDIRENTRY header." -#~ msgstr "TIFF: Schreibfehler beim Sichern." - -#, fuzzy -#~ msgid "ICO: Error writing Mask DIB ." -#~ msgstr "TIFF: Fehler beim Lesen des Bildes." - -#, fuzzy -#~ msgid "ICO: Error writing XOR DIB ." -#~ msgstr "TIFF: Fehler beim Lesen des Bildes." - -#~ msgid "Incorrect version of HTML help book" -#~ msgstr "Falsche Version des HTML-Hilfebuchs" - -#, fuzzy -#~ msgid "Loading DIB : Couldn't allocate memory." -#~ msgstr "BMP: Speicher konnte nicht allokiert werden." - -#~ msgid "Mounted Devices" -#~ msgstr "Dateisysteme" - -#~ msgid "My Harddisk" -#~ msgstr "Mein Laufwerk" - -#~ msgid "My Home" -#~ msgstr "Mein Verzeichnis" - -#~ msgid "New..." -#~ msgstr "Neu..." - -#~ msgid "Please wait..." -#~ msgstr "Bitte warten..." - -#~ msgid "Temporary" -#~ msgstr "Temporär" - -#~ msgid "The Computer" -#~ msgstr "Der Computer" - -#~ msgid "The directory " -#~ msgstr "Das Verzeichnis" - -#~ msgid "User" -#~ msgstr "Benutzer" - -#~ msgid "User Local" -#~ msgstr "Lokaler Benutzer" - -#~ msgid "Variables" -#~ msgstr "Variablen" - -#~ msgid "Window" -#~ msgstr "Fenster" - -#, fuzzy -#~ msgid "centered" -#~ msgstr "etc" - -#, fuzzy -#~ msgid "Unknown digit value" -#~ msgstr "Unbekannte Kodierung (%d)" - -#~ msgid "Replace file '%s'?" -#~ msgstr "Datei '%s' ersetzen?" - -#~ msgid "wxWindows: error finding temporary file name.\n" -#~ msgstr "wxWindows: Fehler beim Suchen des temporären Dateinamen.\n" - -#~ msgid "" -#~ "Can't create window of class %s!\n" -#~ "Possible Windows 3.x compatibility problem?" -#~ msgstr "" -#~ "Kann Fensterklasse %s nicht erstellen!\n" -#~ "Möglicherweise Windows 3.x Kompatibilitätsproblem?" - -#, fuzzy -#~ msgid "" -#~ "Can't find dialog template '%s'!\n" -#~ "Check resource include path for finding wx.rc." -#~ msgstr "" -#~ "Kann Dummy-Dialog-Template nicht finden!\n" -#~ "Überprüfe 'resource include'-Pfad, damit 'wx.rc' gefunden werden kann." - -#~ msgid "Couldn't launch DDE server '%s'." -#~ msgstr "Konnte DDE-Server nicht starten '%s'" - -#~ msgid "Cyrillic (Latin 5)" -#~ msgstr "Kyrillisch (Latin 5)" - -#~ msgid "No XPM facility available!" -#~ msgstr "Kein XPM-Dienst verfügbar!" - -#~ msgid "ISO-8859-12" -#~ msgstr "ISO-8859-12" - -#~ msgid "ISO-8859-14" -#~ msgstr "ISO-8859-14" - -#~ msgid "Baltic II (ISO-8859-10)" -#~ msgstr "Baltisch II (ISO-8859-10)" - -#~ msgid "Can not create mutex." -#~ msgstr "Kann Mutex nicht anlegen." - -#~ msgid "Can't execute command '%s'" -#~ msgstr "Kann Befehl '%s' nicht ausführen" - -#~ msgid "Couldn't change the state of event object." -#~ msgstr "Kann Zustand des Eventobjektes nicht ändern." - -#~ msgid "ISO-8859-13" -#~ msgstr "ISO-8859-13" - -#~ msgid "Previewing" -#~ msgstr "Vorschau" - -#~ msgid "Print Error" -#~ msgstr "Fehler beim Drucken" - -#~ msgid "" -#~ "There was a problem printing.\n" -#~ "Perhaps your current printer is not set correctly?" -#~ msgstr "" -#~ "Beim Drucken ist ein Fehler aufgetreten.\n" -#~ "Vielleicht ist ihr Drucker nicht richtig eingestellt ?" - -#~ msgid "" -#~ "Unrecoverable program error detected: the application will terminate." -#~ msgstr "Unbehebbarer Programmfehler: Die Applikation wird beendet." - -#~ msgid "string '%s' not found in domain '%s' for locale '%s'." -#~ msgstr "Text '%s' in Bereich '%s' für Umgebung '%s' nicht gefunden." - -#~ msgid "string '%s' not found in locale '%s'." -#~ msgstr "Text '%s' in Umgebung '%s' nicht gefunden." - -#~ msgid " B.C." -#~ msgstr " v. Chr." - -#~ msgid "%s is invalid." -#~ msgstr "%s ist ungültig" - -#~ msgid "%s should be numeric." -#~ msgstr "%s sollte numerisch sein" - -#~ msgid "%s should only contain ASCII characters." -#~ msgstr "%s sollte nur ASCII-Zeichen enthalten" - -#~ msgid "%s should only contain alphabetic characters." -#~ msgstr "%s sollte nur Buchstaben enthalten" - -#~ msgid "%s should only contain alphabetic or numeric characters." -#~ msgstr "%s sollte nur Buchstaben oder Ziffern enthalten" - -#~ msgid "Application Error" -#~ msgstr "Programmfehler" - -#~ msgid "Can not create tooltip control" -#~ msgstr "Kann Tooltip nicht erzeugen." - -#~ msgid "Can not get data in format '%s' from clipboard." -#~ msgstr "Kann keine Daten im Format '%s' von der Zwischenablage bekommen." - -#~ msgid "Can not get priority range for scheduling policy %d." -#~ msgstr "Kann Prioritätsbereich für Schedulingregeln %d nicht bekommen." - -#~ msgid "Can not put data in format '%s' on clipboard." -#~ msgstr "Kann keine Daten im Fromat '%s' in die Zwischenablage kopieren." - -#~ msgid "Can not retrieve thread scheduling policy." -#~ msgstr "Kann Schedulingregeln nicht bekommen." - -#~ msgid "Character '%c' is invalid in a config entry name." -#~ msgstr "" -#~ "Zeichen '%c' ist in einem Konfigurationseintragsnamen nicht erlaubt." - -#~ msgid "Enter the name of the directory to create" -#~ msgstr "Geben Sie einen Namen für das neue Verzeichnis ein" - -#~ msgid "Entry name can't start with '%c'." -#~ msgstr "Eintragsname kann nicht mit '%c' beginnen." - -#~ msgid "" -#~ "Mime.types file %s, line %d: extra characters after the field value ignored." -#~ msgstr "" -#~ "Mime.types-Datei %s, Zeile %d: extrazeichen nach dem Wert ignoriert." - -#~ msgid "invalid month" -#~ msgstr "ungültiger Monat" - -#~ msgid "pm" -#~ msgstr "pm" +#~ msgid "very small" +#~ msgstr "sehr klein" diff --git a/locale/es.po b/locale/es.po index acedb924a0..4040fb4e34 100644 --- a/locale/es.po +++ b/locale/es.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows 2.2\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2001-02-21 12:38+0100\n" "Last-Translator: Luis Paúl Tomillo \n" "Language-Team: wxWindows translators \n" @@ -18,18 +18,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (error %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Previsualización" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr "octetos" - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "Sobre #10, 4 1/8 x 9 1/2 in" @@ -57,23 +53,23 @@ msgstr "Sobre #9, 3 7/8 x 8 7/8 in" msgid "#define %s must be an integer." msgstr "#define %s debe ser un entero." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i de %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (o %s)" @@ -93,6 +89,11 @@ msgstr "%s Informaci msgid "%s Warning" msgstr "%s Aviso" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -114,7 +115,7 @@ msgstr "%s: mal formaci msgid "&Arrange Icons" msgstr "" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 #, fuzzy msgid "&Cancel" msgstr "Cancelar" @@ -123,10 +124,19 @@ msgstr "Cancelar" msgid "&Cascade" msgstr "" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Cerrar" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Teletype" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Detalles" @@ -136,11 +146,11 @@ msgstr "&Detalles" msgid "&Find" msgstr "Buscar" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Finalizar" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 #, fuzzy msgid "&Help" msgstr "Ayuda" @@ -153,25 +163,31 @@ msgstr "&Log" msgid "&Move" msgstr "" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 #, fuzzy msgid "&Next" msgstr "&Siguiente >" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Siguiente >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Siguiente Sugerencia" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "fecha" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 #, fuzzy msgid "&Previous" msgstr "Página anterior" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Rehacer" @@ -192,7 +208,7 @@ msgstr "&Rehacer" msgid "&Save..." msgstr "&Guardar..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "%Mostrar las sugerencias en el comienzo" @@ -201,7 +217,7 @@ msgstr "%Mostrar las sugerencias en el comienzo" msgid "&Size" msgstr "Tamaño" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Deshacer" @@ -209,12 +225,14 @@ msgstr "&Deshacer" msgid "&Undo " msgstr "&Deshacer " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 #, fuzzy msgid "&Window" msgstr "&Deshacer" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' tiene '..' adicional, se ignora." @@ -225,7 +243,7 @@ msgstr "'%s' tiene '..' adicional, se ignora." msgid "'%s' is invalid" msgstr "'%s' es inválido" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' no es un valor numérico correcto para el parámetro '%s'." @@ -260,12 +278,12 @@ msgstr "'%s' debe contener s msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s debe contener sólo caracteres alfanuméricos." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Ayuda)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(favoritos)" @@ -279,11 +297,11 @@ msgstr "" ", se esperaba static, #include o #define\n" "al analizar recurso." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -299,66 +317,58 @@ msgstr "11 x 17 in" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "Sobre 6 3/4, 3 5/8 x 6 1/2 in" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": ¡el fichero no existe!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": conjunto de caracteres desconocido" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": codificación desconocida" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Atrás" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr "" - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr "" - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Aspecto normal
    (y subrayado. Aspecto cursiva. " "Aspecto negrita. Aspecto negrita cursiva.
    tamaño de fuente -2
    tamaño de fuente " -"-1
    tamaño de fuente +0
    tamaño de fuente +1
    tamaño de fuente " -"+2
    tamaño de fuente +3
    tamaño de fuente +4

    Aspecto fuente fija.
    " -"negrita cursiva negrita cursiva " -"subrayado
    tamaño de fuente " -"-2
    tamaño de fuente -1
    tamaño de fuente +0
    tamaño de fuente " -"+1
    tamaño de fuente +2
    tamaño de fuente +3
    tamaño de fuente " -"+4
    " +"size=-2>tamaño de fuente -2

    tamaño de fuente -1
    tamaño de fuente +0
    tamaño de " +"fuente +1
    tamaño de fuente +2
    tamaño de fuente +3
    tamaño de fuente +4

    Aspecto fuente fija.
    negrita cursiva " +"negrita cursiva subrayado
    tamaño de " +"fuente -2
    tamaño de fuente -1
    tamaño de fuente +0
    tamaño de fuente +1
    tamaño de fuente +2
    tamaño de " +"fuente +3
    tamaño de fuente +4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -384,7 +394,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Añadir página actual a favoritos" @@ -401,10 +411,15 @@ msgstr "A msgid "All" msgstr "Todo" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Todos los ficheros (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Todos los ficheros (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Llamando al ISP" @@ -415,7 +430,7 @@ msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "" "¿Añadir el log al fichero '%s' (elegir [No] sobreescribira el fichero)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabic (ISO-8859-6)" @@ -439,7 +454,7 @@ msgstr "Hoja B5, 182 x 257 mm" msgid "B6 Envelope, 176 x 125 mm" msgstr "Sobre B6, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 #, fuzzy msgid "BMP: Couldn't allocate memory." msgstr "PNM: No se pudo reservar memoria." @@ -471,15 +486,15 @@ msgstr "BMP: No se pudo escribir la cabecera del fichero." msgid "BMP: wxImage doesn't have own wxPalette." msgstr "" -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Atrás" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltic (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltic (old) (ISO-8859-4)" @@ -488,7 +503,7 @@ msgstr "Baltic (old) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "Fuente de especificación de mapa de bits %s no encontrada." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Gruesa" @@ -524,12 +539,12 @@ msgstr "Sobre C6, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "Sobre C65, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, fuzzy, c-format msgid "Can not enumerate files '%s'" msgstr "No se pueden enumerar los ficheros en directorio '%s'" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "No se pueden enumerar los ficheros en directorio '%s'" @@ -558,7 +573,7 @@ msgstr "No se puede empezar el hilo de ejecuci msgid "Can't &Undo " msgstr "No se puede deshacer " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -575,17 +590,17 @@ msgstr "no se puede cerrar el fichero '%s'" msgid "Can't copy values of unsupported type %d." msgstr "" -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 #, fuzzy msgid "Can't create dialog using memory template" msgstr "no se puede crear el fichero '%s'" -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, fuzzy, c-format msgid "Can't create dialog using template '%ul'" msgstr "no se puede crear el fichero '%s'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" @@ -599,7 +614,7 @@ msgstr "no se puede crear el fichero '%s'" msgid "Can't create thread" msgstr "no se puede crear el fichero '%s'" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, fuzzy, c-format msgid "Can't create window of class %s" msgstr "no se puede crear el fichero '%s'" @@ -688,64 +703,63 @@ msgstr "Error al establecer la prioridad del hilo de ejecuci msgid "Can't set value of '%s'" msgstr "no se puede cerrar el fichero '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Cancelar" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, fuzzy, c-format msgid "Cannot convert from encoding '%s'!" msgstr "Codificación desconocida (%d)" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, fuzzy, c-format msgid "Cannot find font node '%s'." msgstr "No se puede abrir la URL '%s'" -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "" "No se puede obtener un rango de prioridades para la política de " "planificación %d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "No se puede obtener el nombre de la máquina (hostname)" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "No se puede obtener el nombre oficial de la máquina (hostname)" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "" -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "" @@ -754,32 +768,32 @@ msgstr "" msgid "Cannot initialize SciTech MGL!" msgstr "No se puede imprimir una página vacía." -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 #, fuzzy msgid "Cannot initialize display." msgstr "No se puede imprimir una página vacía." -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, fuzzy, c-format msgid "Cannot load icon from '%s'." msgstr "No se pueden enumerar los ficheros en directorio '%s'" -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, fuzzy, c-format msgid "Cannot load resources from file '%s'." msgstr "No puede encontrarse el fichero de inclusión de recursos %s." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "No se puede abrir el documento HTML: %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "No se puede abrir el libro de ayuda HTML: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "No se puede abrir la URL '%s'" @@ -789,62 +803,62 @@ msgstr "No se puede abrir la URL '%s'" msgid "Cannot open contents file: %s" msgstr "No se puede abrir los contenidos del fichero: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, fuzzy, c-format msgid "Cannot open file '%s'." msgstr "no se puede abrir el fichero '%s'" -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "¡No se puede abrir el fichero para impresión PostScript!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "No se puede abrir el fichero índice: %s" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, fuzzy, c-format msgid "Cannot parse coordinates from '%s'." msgstr "No se puede abrir los contenidos del fichero: %s" -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, fuzzy, c-format msgid "Cannot parse dimension from '%s'." msgstr "No se pueden enumerar los ficheros en directorio '%s'" -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "No se puede imprimir una página vacía." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, fuzzy, c-format msgid "Cannot read typename from '%s'!" msgstr "No se puede abrir los contenidos del fichero: %s" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "" "No se puede recuperar la política de planificación de hilos de ejecución." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "No se puede empezar el hilo de ejecución: error escribiendo TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Caso Sensitivo" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Celtic (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 #, fuzzy msgid "Central European (ISO-8859-2)" msgstr "Central European (ISO-8859-2/Latin 2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "" @@ -852,11 +866,16 @@ msgstr "" msgid "Choose font" msgstr "Elegir fuente" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Cerrar" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Borrar los contenidos del log" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Cerrar" @@ -865,25 +884,30 @@ msgstr "Cerrar" msgid "Close\tAlt-F4" msgstr "" +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Cerrar" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Cerrar esta ventana" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 #, fuzzy msgid "Computer" msgstr "El Ordenador" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Un nombre de entrada de configuracón no puede empezar por '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Confirmar" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -891,13 +915,13 @@ msgstr "" msgid "Connecting..." msgstr "Conectando..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Contenidos" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "" #: ../src/generic/prntdlgg.cpp:193 @@ -914,7 +938,7 @@ msgstr "No puede encontrarse el fichero de inclusi msgid "Could not find tab for id" msgstr "No se puede encontrar pestaña para id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "" @@ -938,19 +962,19 @@ msgstr "" "No se puede resolver el id de menu '%s'. Usar un entero distinto de cero\n" " o proporcionar el #define (ver consejos del manual)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "No puede iniciarse la previsualización del documento." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "No se puede iniciar la impresión." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "No puede transferir datos a la ventana" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -966,7 +990,7 @@ msgstr "PCX: no pudo reservarse memoria" msgid "Couldn't create cursor." msgstr "PCX: no pudo reservarse memoria" -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "No se pudo encontrar el símbolo '%s' en la librería dinámica" @@ -976,24 +1000,24 @@ msgstr "No se pudo encontrar el s msgid "Couldn't get the current thread pointer" msgstr "No se pudo escribir la cabecera del bitmap." -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "No se pudo cargar imagen PNG - el fichero está corrupto o no hay suficiente " "memoria." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "" -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "" -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 #, fuzzy msgid "Couldn't save PNG image." msgstr "JPEG: No pudo guardarse imagen." @@ -1007,15 +1031,19 @@ msgstr "Error al terminar un hilo de ejecuci msgid "Create directory" msgstr "Crear directorio" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Crear nuevo directorio" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Directorio actual:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 #, fuzzy msgid "Cyrillic (ISO-8859-5)" msgstr "Celtic (ISO-8859-14)" @@ -1024,37 +1052,32 @@ msgstr "Celtic (ISO-8859-14)" msgid "D sheet, 22 x 34 in" msgstr "Hoja D, 22 x 34 in" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 #, fuzzy msgid "DDE poke request failed" msgstr "Error en la creación de la tubería" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: Aun no pueden tratarse ficheros de 4bpp." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 #, fuzzy msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "BMP: La codificación no se corresponde con la profundidad de color." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 #, fuzzy msgid "DIB Header: Image height > 32767 pixels for file." msgstr "BMP: Altura de imagen > 32767 pixels por fichero." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 #, fuzzy msgid "DIB Header: Image width > 32767 pixels for file." msgstr "BMP: Anchura de imagen > 32767 pixels por fichero." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 #, fuzzy msgid "DIB Header: Unknown bitdepth in file." msgstr "BMP: Profundidad de color desconocida en fichero." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 #, fuzzy msgid "DIB Header: Unknown encoding in file." msgstr "BMP: Codificación desconocida en fichero." @@ -1063,15 +1086,15 @@ msgstr "BMP: Codificaci msgid "DL Envelope, 110 x 220 mm" msgstr "Sobre DL, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Fecha" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Decorative" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "" @@ -1080,21 +1103,21 @@ msgstr "" msgid "Deleted stale lock file '%s'." msgstr "no se puede crear el fichero '%s'" -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." msgstr "" -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "¿Sabías que...?" -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "No pudo crearse directorio '%s'" @@ -1108,7 +1131,7 @@ msgstr "El directorio no existe" msgid "Directory does not exist" msgstr "El directorio no existe" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1116,22 +1139,22 @@ msgstr "" "Mostrar todos los elementos del índice que contengan la subcadena dada. La " "búsqueda es Insensitiva." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Mostrar el diálogo de opciones" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "¿Desea guardar los cambios hechos al documento %s?" @@ -1140,7 +1163,7 @@ msgstr " msgid "Done" msgstr "Hecho" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Hecho." @@ -1161,7 +1184,7 @@ msgstr "Tiempo transcurrido : " msgid "Entries found" msgstr "Documentos encontrados" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." @@ -1169,16 +1192,16 @@ msgstr "" "Falló la expansión de las variables de entorno: falta '%c' en la posición %d " "en '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Error" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Error " @@ -1186,7 +1209,7 @@ msgstr "Error " msgid "Error creating directory" msgstr "Error creando directorio" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 #, fuzzy msgid "Error in reading image DIB ." msgstr "TIFF: Error al leer imagen." @@ -1195,7 +1218,7 @@ msgstr "TIFF: Error al leer imagen." msgid "Error: " msgstr "Error: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1203,7 +1226,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Tiempo estimado : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "" @@ -1230,7 +1253,11 @@ msgstr "Se esperaba '=' al analizar el recurso." msgid "Expected 'char' whilst parsing resource." msgstr "Se esperaba 'char' al analizar el recurso." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "" @@ -1239,7 +1266,7 @@ msgstr "" msgid "Failed to access lock file." msgstr "" -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 #, fuzzy msgid "Failed to close file handle" msgstr "Error al guardar bitmap" @@ -1254,11 +1281,11 @@ msgstr "Error al vaciar la memoria del fichero '%s'" msgid "Failed to close the clipboard." msgstr "Error al guardar bitmap" -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "" -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "" @@ -1272,12 +1299,12 @@ msgstr "No se pudo abrir la librer msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "" -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, fuzzy, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 #, fuzzy msgid "Failed to create DDE string" msgstr "Error al crear el directorio" @@ -1292,26 +1319,36 @@ msgstr "Error al crear el directorio" msgid "Failed to create a status bar." msgstr "Error al terminar un hilo de ejecución." -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 #, fuzzy msgid "Failed to create a temporary file name" msgstr "Error al crear el directorio" -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 #, fuzzy msgid "Failed to create an anonymous pipe" msgstr "Error al terminar un hilo de ejecución." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 #, fuzzy msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "Error al crear el directorio" +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Error al crear el directorio" + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Error al recordar la codificación para el conjunto de caracteres '%s'." + #: ../src/generic/dirdlgg.cpp:201 #, fuzzy, c-format msgid "" @@ -1331,26 +1368,26 @@ msgstr "Error al recordar la codificaci msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Error al mostrar el documento HTML con codificación %s" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 #, fuzzy msgid "Failed to empty the clipboard." msgstr "Error al establecer la prioridad del hilo de ejecución %d." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Error al ejecutar '%s'\n" @@ -1382,12 +1419,12 @@ msgstr "" "Error al buscar el fuente XPM %s. \n" "¿Se olvidó de usar wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, fuzzy, c-format msgid "Failed to get ISP names: %s" msgstr "Error al ejecutar '%s'\n" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 #, fuzzy msgid "Failed to get clipboard data." msgstr "Error al guardar bitmap" @@ -1397,15 +1434,15 @@ msgstr "Error al guardar bitmap" msgid "Failed to get data from the clipboard" msgstr "Error al obtener el sistema horario local" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Error al obtener el sistema de tiempo UTC" -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Error al obtener el sistema horario local" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 #, fuzzy msgid "Failed to get the working directory" msgstr "Error al crear el directorio" @@ -1422,7 +1459,7 @@ msgstr "" msgid "Failed to initialize OpenGL" msgstr "" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1440,17 +1477,17 @@ msgstr "Error en la redirecci msgid "Failed to load image %d from file '%s'." msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 #, fuzzy msgid "Failed to load mpr.dll." msgstr "Error al guardar bitmap" -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "No se pudo abrir la librería dinámica '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, fuzzy, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "No se pudo abrir la librería dinámica '%s'" @@ -1465,17 +1502,17 @@ msgstr "Error al vaciar la memoria del fichero '%s'" msgid "Failed to match '%s' in regular expression: %s" msgstr "" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, fuzzy, c-format msgid "Failed to modify file times for '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, fuzzy, c-format msgid "Failed to open '%s' for %s" msgstr "Error al guardar bitmap" -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 #, fuzzy msgid "Failed to open temporary file." msgstr "Error al guardar bitmap" @@ -1495,21 +1532,21 @@ msgstr "Error al terminar un hilo de ejecuci msgid "Failed to read PID from lock file." msgstr "Error al crear el directorio" -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Error en la redirección de la entrada/salida del proceso hijo" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 #, fuzzy msgid "Failed to redirect the child process IO" msgstr "Error en la redirección de la entrada/salida del proceso hijo" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, fuzzy, c-format msgid "Failed to register DDE server '%s'" msgstr "Error al ejecutar '%s'\n" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Error al recordar la codificación para el conjunto de caracteres '%s'." @@ -1539,12 +1576,12 @@ msgstr "Error al recordar la codificaci msgid "Failed to retrieve data from the clipboard." msgstr "Error al terminar un hilo de ejecución." -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, fuzzy, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Error al crear el directorio" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "" @@ -1552,7 +1589,7 @@ msgstr "" msgid "Failed to retrieve the supported clipboard formats" msgstr "" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "" @@ -1566,12 +1603,12 @@ msgstr "Error al establecer la prioridad del hilo de ejecuci msgid "Failed to set clipboard data." msgstr "Error al guardar bitmap" -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 #, fuzzy msgid "Failed to set temporary file permissions" msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Error al establecer la prioridad del hilo de ejecución %d." @@ -1581,21 +1618,21 @@ msgstr "Error al establecer la prioridad del hilo de ejecuci msgid "Failed to store image '%s' to memory VFS!" msgstr "¡Error al almacenar la imagen '%s' en VFS de memoria!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Error al terminar un hilo de ejecución." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 #, fuzzy msgid "Failed to terminate the advise loop with DDE server" msgstr "Error al terminar un hilo de ejecución." -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, fuzzy, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Error al terminar un hilo de ejecución." -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, fuzzy, c-format msgid "Failed to touch the file '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" @@ -1605,7 +1642,7 @@ msgstr "Error al vaciar la memoria del fichero '%s'" msgid "Failed to unlock lock file '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, fuzzy, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" @@ -1623,7 +1660,7 @@ msgstr "Error fatal" msgid "Fatal error: " msgstr "Error fatal: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 #, fuzzy msgid "Fatal error: exiting" msgstr "Error fatal: " @@ -1633,12 +1670,12 @@ msgstr "Error fatal: " msgid "File %s does not exist." msgstr ": ¡el fichero no existe!" -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "El fichero '%s' ya existe, ¿realmente quieres sobreescribirlo?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, fuzzy, c-format msgid "" "File '%s' already exists.\n" @@ -1649,21 +1686,21 @@ msgstr "El fichero '%s' ya existe, msgid "File couldn't be loaded." msgstr "El fichero no pudo ser cargado." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Error de fichero" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Ya existe un fichero con el mismo nombre." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Buscar" @@ -1675,15 +1712,15 @@ msgstr "Fuente fija:" msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 in" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Tamaño de fuente:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Error en bifurcación de proceso (fork)" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Adelante" @@ -1693,7 +1730,7 @@ msgstr "Adelante" msgid "Found " msgstr "Encontrado " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Encontrada(s) %i coincidencias" @@ -1739,39 +1776,31 @@ msgstr "German Std Fanfold, 8 1/2 x 12 in" msgid "GetUnusedColour:: No Unused Color in image " msgstr "" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Atrás" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Adelante" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Subir un nivel en la jerarquía del documento" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Ir al directorio principal" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Ir al directorio superior" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Greek (ISO-8859-7)" @@ -1780,31 +1809,26 @@ msgstr "Greek (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "El anclaje HTML %s no existe." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"Ficheros HTML (*.htm)|*.htm|Ficheros HTML (*.html)|*.html|Libros de ayuda " -"(*.htb)|*.htb|Libros de ayuda (*.zip)|*.zip|Proyecto de ayuda HTML " -"(*.hhp)|*.hhp|Todos los ficheros (*.*)|*" +"Ficheros HTML (*.htm)|*.htm|Ficheros HTML (*.html)|*.html|Libros de ayuda (*." +"htb)|*.htb|Libros de ayuda (*.zip)|*.zip|Proyecto de ayuda HTML (*.hhp)|*." +"hhp|Todos los ficheros (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebrew (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Ayuda" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Ayuda: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Opciones del Navegador de la Ayuda" @@ -1812,7 +1836,7 @@ msgstr "Opciones del Navegador de la Ayuda" msgid "Help Index" msgstr "Indice de la Ayuda" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Ayuda de Impresión" @@ -1821,28 +1845,28 @@ msgstr "Ayuda de Impresi msgid "Help: %s" msgstr "Ayuda: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 #, fuzzy msgid "ICO: Error in reading mask DIB." msgstr "TIFF: Error al leer imagen." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 #, fuzzy msgid "ICO: Error writing the image file!" msgstr "TIFF: Error al escribir imagen." -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 #, fuzzy msgid "ICO: Invalid icon index." msgstr "Índice inválido de fichero TIFF." @@ -1877,11 +1901,11 @@ msgstr "Especificaci msgid "Ill-formed resource file syntax." msgstr "Sintaxis incorrecta del fichero fuente." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Nombre de directorio ilegal" -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Especificación de fichero Ilegal" @@ -1889,12 +1913,12 @@ msgstr "Especificaci msgid "Image and Mask have different sizes" msgstr "" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "" -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1904,26 +1928,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Imposible obtener la entrada del proceso hijo" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, fuzzy, c-format msgid "Impossible to get permissions for file '%s'" msgstr "Imposible obtener la entrada del proceso hijo" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, fuzzy, c-format msgid "Impossible to overwrite the file '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Índice" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Indian (ISO-8859-12)" @@ -1931,17 +1955,17 @@ msgstr "Indian (ISO-8859-12)" msgid "Invalid TIFF image index." msgstr "Índice inválido de fichero TIFF." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, fuzzy, c-format msgid "Invalid display mode specification '%s'." msgstr "Especificación de fichero Ilegal" -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, fuzzy, c-format msgid "Invalid geometry specification '%s'" msgstr "Especificación de fichero Ilegal" @@ -1956,7 +1980,7 @@ msgstr "no se puede cerrar el fichero '%s'" msgid "Invalid regular expression '%s': %s" msgstr "" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Itálica" @@ -1972,7 +1996,7 @@ msgstr "JPEG: No se pudo cargar - el fichero est msgid "JPEG: Couldn't save image." msgstr "JPEG: No pudo guardarse imagen." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -2000,17 +2024,17 @@ msgstr "Sobre Peque msgid "Letter, 8 1/2 x 11 in" msgstr "Sobre, 8 1/2 x 11 in" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Ligera" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Cargar el fichero %s" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 #, fuzzy msgid "Load file" msgstr "Cargar el fichero %s" @@ -2049,7 +2073,7 @@ msgstr "" msgid "Ma&ximize" msgstr "" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Fichero Mailcap %s, linea %d: entrada incompleta ignorada." @@ -2071,7 +2095,7 @@ msgstr "" msgid "Mi&nimize" msgstr "" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "" @@ -2082,7 +2106,7 @@ msgstr "" msgid "Mode %ix%i-%i not available." msgstr "" -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2090,24 +2114,24 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Sobre Monarch, 3 7/8 x 7 1/2 in" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Más..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Nombre" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "Nuevo Nombre" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Página siguiente" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "No" @@ -2129,7 +2153,7 @@ msgstr " msgid "No entries found." msgstr "No se han encontrado documentos." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2141,7 +2165,7 @@ msgstr "" "¿Le gustaría seleccionar una fuente para usarse con esta codificación\n" "(de otra forma el texto con esta codificación no se mostrará correctamente)?" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2152,40 +2176,39 @@ msgstr "" "¿Le gustaría seleccionar una fuente para usarse con esta codificación\n" "(de otra forma el texto con esta codificación no se mostrará correctamente)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "No se ha encontrado ningún manipulador para el tipo de imagen." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "No hay definido ningún manipulador de imagen para tipo %d." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "No hay definido ningún manipulador de imagen para tipo %s." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Todavía no se ha encontrado una página con coincidencias" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordic (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Fuente normal:" @@ -2193,35 +2216,35 @@ msgstr "Fuente normal:" msgid "Note, 8 1/2 x 11 in" msgstr "Nota, 8 1/2 x 11 in" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "Aceptar" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Abrir documento HTML" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Operación no permitida" -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "El parámetro '%s' necesita un valor, falta '='." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "El parámetro '%s' necesita un valor." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "El parámetro '%s': '%s' no puede convertirse a fecha." @@ -2270,12 +2293,12 @@ msgstr "PNM: Formato de fichero no reconocido." msgid "PNM: File seems truncated." msgstr "PNM: El fichero parece estar truncado." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Página %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Página %d de %d" @@ -2298,11 +2321,11 @@ msgstr "Tama msgid "Paper size" msgstr "Tamaño del papel" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Permisos" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Error en la creación de la tubería" @@ -2310,15 +2333,15 @@ msgstr "Error en la creaci msgid "Please choose a valid font." msgstr "Por favor elija una fuente válida." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Por favor elige un fichero existente" -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2326,7 +2349,7 @@ msgid "" "or this program won't operate correctly." msgstr "" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "" @@ -2338,15 +2361,11 @@ msgstr "Vertical" msgid "PostScript file" msgstr "Fichero PostScript" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Previsualización:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Página anterior" @@ -2354,11 +2373,11 @@ msgstr "P msgid "Print" msgstr "Imprimir" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Previsualización de la impresión" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Error en previsualización de impresión" @@ -2378,7 +2397,7 @@ msgstr "Impresi msgid "Print spooling" msgstr "Cola de Impresión" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Imprimir esta página" @@ -2386,7 +2405,7 @@ msgstr "Imprimir esta p msgid "Print to File" msgstr "Imprimir a Fichero" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Imprimir..." @@ -2406,21 +2425,21 @@ msgstr "Opciones de impresora:" msgid "Printer..." msgstr "Impresora..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 #, fuzzy msgid "Printing " msgstr "Imprimiendo" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Error de impresión" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Imprimiendo página %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Imprimiendo..." @@ -2441,7 +2460,7 @@ msgstr "Pregunta" msgid "Read error on file '%s'" msgstr "Error de lectura en el fichero '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -2469,10 +2488,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "" -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Documentos significantivos:" @@ -2481,7 +2496,7 @@ msgstr "Documentos significantivos:" msgid "Remaining time : " msgstr "Tiempo restante : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Eliminar la página actual de favoritos" @@ -2494,7 +2509,7 @@ msgstr "Error de lectura en el fichero '%s'" msgid "Replace with:" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "" @@ -2502,21 +2517,21 @@ msgstr "" msgid "Right margin (mm):" msgstr "Margen derecho (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Guardar el fichero %s" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Guardar como" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 #, fuzzy msgid "Save file" msgstr "Guardar el fichero %s" @@ -2525,20 +2540,15 @@ msgstr "Guardar el fichero %s" msgid "Save log contents to file" msgstr "Guardar los contenidos del log a un fichero" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Buscar" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2556,21 +2566,15 @@ msgstr "Crear directorio" msgid "Search for:" msgstr "Buscar" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Buscar en todos los libros" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Buscar" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Buscando..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Secciones" @@ -2579,24 +2583,29 @@ msgstr "Secciones" msgid "Seek error on file '%s'" msgstr "Error de búsqueda en el fichero '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Seleccionar un fichero" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Seleccionar una plantilla de documento" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Seleccionar una vista de documento" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Seleccionar un fichero" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Se esperaba separador después de opción '%s'." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Configuración" @@ -2604,15 +2613,15 @@ msgstr "Configuraci msgid "Setup..." msgstr "Configuración..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Mostrar todo" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Mostrar todos los datos en el índice" @@ -2621,36 +2630,36 @@ msgstr "Mostrar todos los datos en el msgid "Show hidden directories" msgstr "Mostrar ficheros ocultos" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Mostrar ficheros ocultos" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Mostrar/Ocultar panel de navegación" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Tamaño" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Cursiva" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "No pudo abrirse este fichero para guardar." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "No pudo abrirse este fichero." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "No pudo guardarse este fichero." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Memoria insuficiente para crear previsualización." @@ -2662,12 +2671,12 @@ msgstr "Statement, 5 1/2 x 8 1/2 in" msgid "Status: " msgstr "Estado: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Swiss" @@ -2696,15 +2705,15 @@ msgstr "TIFF: Error al escribir imagen." msgid "Tabloid, 11 x 17 in" msgstr "Tabloide, 11 x 17 in" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Plantillas" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" @@ -2712,7 +2721,7 @@ msgstr "Thai (ISO-8859-11)" msgid "The FTP server doesn't support passive mode." msgstr "" -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2723,7 +2732,7 @@ msgstr "" "seleccionar otro conjunto para reemplazarlo o elegir\n" "[Cancelar] si no puede ser reemplazado" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, fuzzy, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "" @@ -2740,7 +2749,7 @@ msgstr "" "no existe\n" "¿Crear uno nuevo ahora?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, fuzzy, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2749,12 +2758,12 @@ msgstr "" "El fichero '%s' no existe y no pudo abrirse.\n" "También ha sido borrado de la lista MRU de ficheros." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "El parámetro '%s' no fue especificado." @@ -2763,19 +2772,19 @@ msgstr "El par msgid "The text couldn't be saved." msgstr "El texto no pudo ser guardado." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "El valor para el parámetro '%s' debe especificarse." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " "tooold, please upgrade (the following required function is missing: %s)." msgstr "" -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -2789,7 +2798,7 @@ msgstr "" "Error en la inicialización del módulo de hilos de ejecución: error al crear " "clave de hilo" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" "Error en la inicialización del módulo de hilos de ejecución: error al crear " @@ -2804,7 +2813,7 @@ msgstr "" "Error en la inicialización del módulo de hilos de ejecución: error al crear " "clave de hilo" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "La configuración de la prioridad del hilo de ejecución es ignorada." @@ -2816,15 +2825,15 @@ msgstr "" msgid "Tile &Vertically" msgstr "" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Hora" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Sugerencia del Día" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Sugerencias no disponibles,¡qué pena!" @@ -2848,7 +2857,7 @@ msgstr "" "Intentando resolver un nombre de máquina (hostname) nulo: imposible de " "resolver" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turkish (ISO-8859-9)" @@ -2861,7 +2870,7 @@ msgstr "US Std Fanfold, 14 7/8 x 11 in" msgid "Unable to open requested HTML document: %s" msgstr "Incapaz de abrir el docuemento HTML pedido: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Subrayada" @@ -2878,45 +2887,45 @@ msgstr "Subrayada" msgid "Unexpected end of file whilst parsing resource." msgstr "Fin de fichero inesperado al analizar el recurso." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Parámetro '%s' inesperado" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Codificación desconocida (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Campo desconocido en el fichero %s, linea %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "El parámetro '%s' de entero largo es desconocido" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "El parámetro '%s' es desconocido" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -2935,12 +2944,12 @@ msgstr "Mandato sin nombre" msgid "Unrecognized style %s whilst parsing resource." msgstr "Estilo desconocido %s al analizar el recurso." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "" -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "" @@ -2949,7 +2958,7 @@ msgstr "" msgid "Up" msgstr "" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Uso: %s" @@ -2958,23 +2967,23 @@ msgstr "Uso: %s" msgid "Validation conflict" msgstr "Conflicto de validación." -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Ver ficheros en detalle" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Ver ficheros como lista" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Vistas" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Error en la espera de la terminación del subproceso" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Aviso" @@ -2982,16 +2991,16 @@ msgstr "Aviso" msgid "Warning: " msgstr "Aviso: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "Atención: intentando eliminar una etiqueta HTML de una pila vacía " -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 #, fuzzy msgid "Western European (ISO-8859-1)" msgstr "Western European (ISO-8859-1/Latin 1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 #, fuzzy msgid "Western European with Euro (ISO-8859-15)" msgstr "Western European with Euro (ISO-8859-15/Latin 0)" @@ -3001,7 +3010,7 @@ msgstr "Western European with Euro (ISO-8859-15/Latin 0)" msgid "Whole word" msgstr "Sólo palabras completas" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Sólo palabras completas" @@ -3009,71 +3018,71 @@ msgstr "S msgid "Win32 theme" msgstr "" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabic (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltic (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows Central European (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 #, fuzzy msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows Latin 2 (CP 1250)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cyrillic (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hebrew (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 #, fuzzy msgid "Windows Japanese (CP 932)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 #, fuzzy msgid "Windows Korean (CP 949)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Turkish (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows Western European (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3096,26 +3105,22 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, fuzzy, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "Especificación de recursos de iconos %s no encontrada." -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Sí" @@ -3124,19 +3129,19 @@ msgstr "S msgid "You cannot add a new directory to this section." msgstr "No puede añadir un nuevo directorio a esta sección." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[VACÍO]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "" -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3144,47 +3149,47 @@ msgid "" "was passed to a DDEML function." msgstr "" -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "" -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 #, fuzzy msgid "a memory allocation failed." msgstr "Error en la creación de la tubería" -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "" -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" "terminated before completing a transaction." msgstr "" -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 #, fuzzy msgid "a transaction failed." msgstr "Error en la creación de la tubería" @@ -3193,7 +3198,7 @@ msgstr "Error en la creaci msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3201,22 +3206,22 @@ msgid "" "attempted to perform server transactions." msgstr "" -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "" -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "" -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" "the transaction identifier for that callback is no longer valid." msgstr "" -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "intento de cambiar clave inmutable '%s', ignorado." @@ -3225,12 +3230,12 @@ msgstr "intento de cambiar clave inmutable '%s', ignorado." msgid "binary" msgstr "" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 #, fuzzy msgid "bold" msgstr "Gruesa" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 #, fuzzy msgid "bold " msgstr "Gruesa" @@ -3240,34 +3245,34 @@ msgstr "Gruesa" msgid "can't close file '%s'" msgstr "no se puede cerrar el fichero '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "no se puede cerrar el descriptor de fichero %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "no se pueden hacer efectivos los cambios en fichero '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "no se puede crear el fichero '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "no puede borrarse el fichero de configuración de usuario '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "no se puede determinar si el final del fichero con descriptor %d se ha " "alcanzado" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "no se puede obtener el tamaño del fichero con descriptor %d" @@ -3276,56 +3281,56 @@ msgstr "no se puede obtener el tama msgid "can't find user's HOME, using current directory." msgstr "" -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "no se puede vaciar el descriptor de fichero %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "" "no se puede alcanzar posición de búsqueda en el descriptor de fichero %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "no se puede cargar ninguna fuente, abortando" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "no se puede abrir el fichero '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "no se puede abrir el fichero de configuración global '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "no se puede abrir el fichero de configuración de usuario '%s'." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "no puede abrirse el fichero de configuración de usuario" -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "no se puede leer desde el descriptor de fichero %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "no se puede borrar fichero '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "no se puede borrar el fichero temporal '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "no se puede buscar en el descriptor de fichero %d" @@ -3335,12 +3340,12 @@ msgstr "no se puede buscar en el descriptor de fichero %d" msgid "can't write buffer '%s' to disk." msgstr "no se puede guardar el fichero '%s' al disco." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "no se puede escribir en el descriptor de fichero %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "no puede escribirse el fichero de configuración de usuario" @@ -3353,33 +3358,33 @@ msgstr "fichero de cat msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "fecha" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 #, fuzzy msgid "default" msgstr "alt" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "décimo octavo" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "octavo" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "undécimo" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "la entrada '%s' aparece más de una vez en el grupo '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "" @@ -3388,66 +3393,71 @@ msgstr "" msgid "failed to flush the file '%s'" msgstr "Error al vaciar la memoria del fichero '%s'" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "décimo quinto" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "quinto" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "fichero '%s', línea %d: '%s' ignorado después de cabecera de grupo." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "fichero '%s', línea %d: '=' inesperado." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "" "fichero '%s', línea %d: clave '%s' fue encontrada por primera vez en la " "línea %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "fichero '%s', línea %d: valor ignorado para clave inmutable '%s'." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "fichero '%s': carácter inesperado %c en línea %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "primero" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "décimo cuarto" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "cuarto" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "error en gmtime()" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "valor devuelto por eof() es inválido" @@ -3455,21 +3465,17 @@ msgstr "valor devuelto por eof() es inv msgid "invalid message box return value" msgstr "valor de retorno de caja de mensajes inválido" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 #, fuzzy msgid "italic" msgstr "Itálica" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "grande" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 #, fuzzy msgid "light" msgstr "Ligera" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 #, fuzzy msgid "light " msgstr "Ligera" @@ -3484,59 +3490,55 @@ msgstr "locale '%s' no pudo establecerse." msgid "looking for catalog '%s' in path '%s'." msgstr "buscando catálogo '%s' en directorio '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "medio" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "medianoche" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "error en mktime()" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "décimo noveno" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "noveno" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "" -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "sin nombre" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "mediodía" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "núm" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "segundo" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "décimo séptimo" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "séptimo" @@ -3544,82 +3546,78 @@ msgstr "s msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "décimo sexto" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "sexto" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "pequeño" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "cad" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "décimo" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "" -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "tercero" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "décimo tercero" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "hoy" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "mañana" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "duodécimo" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "vigésimo" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 #, fuzzy msgid "underlined" msgstr "Subrayada" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 #, fuzzy msgid "underlined " msgstr "Subrayada" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "\" inesperado en la posición %d en '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "desconocido" @@ -3628,12 +3626,17 @@ msgstr "desconocido" msgid "unknown error" msgstr "¡¡GIF: error desconocido!!" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "" -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "origen de búsqueda desconocido" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "origen de búsqueda desconocido" @@ -3642,11 +3645,11 @@ msgstr "origen de b msgid "unknown-%d" msgstr "desconocido-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "sinnombre" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "sin nombre%d" @@ -3656,15 +3659,7 @@ msgstr "sin nombre%d" msgid "using catalog '%s' from '%s'." msgstr "usando catálogo '%s' de '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "muy grande" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "muy pequeño" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 #, fuzzy msgid "writing" msgstr "Imprimiendo" @@ -3674,19 +3669,15 @@ msgstr "Imprimiendo" msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "Error en wxGetTimeOfDay" -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: firma inválida en ReadMsg" @@ -3695,23 +3686,55 @@ msgstr "wxSocket: firma inv msgid "wxSocket: unknown event!." msgstr "wxSocket: ¡Evento desconocido!." -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, fuzzy, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "No pudo abrirse este fichero para guardar." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 #, fuzzy msgid "wxWindows could not open display. Exiting." msgstr "No pudo abrirse este fichero para guardar." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "ayer" +#~ msgid " bytes " +#~ msgstr "octetos" + +#~ msgid "

    " +#~ msgstr "" + +#~ msgid " " +#~ msgstr "" + #, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Todos los ficheros (*)|*" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "BMP: Aun no pueden tratarse ficheros de 4bpp." + +#, fuzzy +#~ msgid "Help : %s" +#~ msgstr "Ayuda: %s" + +#, fuzzy +#~ msgid "Search!" +#~ msgstr "Buscar" + +#~ msgid "large" +#~ msgstr "grande" + +#~ msgid "medium" +#~ msgstr "medio" + +#~ msgid "small" +#~ msgstr "pequeño" + +#~ msgid "very large" +#~ msgstr "muy grande" + +#~ msgid "very small" +#~ msgstr "muy pequeño" #, fuzzy #~ msgid "Can not create mutex" @@ -3757,10 +3780,6 @@ msgstr "ayer" #~ msgid "Y Translation" #~ msgstr "Traslación Y" -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "origen de búsqueda desconocido" - #, fuzzy #~ msgid "Fatal Error" #~ msgstr "Error fatal" @@ -3898,31 +3917,31 @@ msgstr "ayer" #~ msgstr "Encontradas %i correspondencias" #~ msgid "" -#~ "Normal face
    (and underlined. Italic " -#~ "face.Bold face. Bold italic face.
    font size-2
    font size -1
    font size+0
    font size +1
    font size+2
    font size +3
    font size+4

    Fixed size face.
    bold " -#~ "italicbold italic underlined
    font size-2
    font size -1
    font size+0
    font size +1
    font size+2
    font size +3
    font size+4
    " +#~ "Normal face
    (and underlined. Italic face.Bold face. Bold italic face.
    font " +#~ "size-2
    font size -1
    font " +#~ "size+0
    font size +1
    font " +#~ "size+2
    font size +3
    font " +#~ "size+4

    Fixed size face.
    bold italicbold italic underlined
    font size-" +#~ "2
    font size -1
    font size" +#~ "+0
    font size +1
    font size" +#~ "+2
    font size +3
    font size" +#~ "+4
    " #~ msgstr "" -#~ "Cuerpo Normal
    (y subrayado. Cuerpo " -#~ "cursiva.Cuerpo Negrita. Cuerpo Negrita " -#~ "Cursiva.
    Tamaño de fuente-2
    Tamaño de fuente -1
    Tamaño de " -#~ "fuente+0
    Tamaño de fuente +1
    Tamaño de fuente+2
    Tamaño de fuente " -#~ "+3
    Tamaño de fuente+4

    Cuerpo de " -#~ "tamaño fijo
    negrita cursivanegrita cursiva " -#~ "subrayado
    Tamaño de fuente-2
    Tamaño de fuente -1
    Tamaño de " -#~ "fuente+0
    Tamaño de fuente +1
    Tamaño de fuente+2
    Tamaño de fuente " -#~ "+3
    Tamaño de fuente+4
    " +#~ "Cuerpo Normal
    (y subrayado. Cuerpo cursiva.Cuerpo Negrita. Cuerpo Negrita Cursiva.
    Tamaño de fuente-2
    Tamaño de fuente -1
    Tamaño de fuente+0
    Tamaño " +#~ "de fuente +1
    Tamaño de fuente+2
    Tamaño de fuente +3
    Tamaño de fuente+4

    Cuerpo de tamaño fijo
    negrita cursivanegrita cursiva subrayado
    Tamaño " +#~ "de fuente-2
    Tamaño de fuente -1
    Tamaño de fuente+0
    Tamaño de fuente +1
    Tamaño de fuente+2
    Tamaño " +#~ "de fuente +3
    Tamaño de fuente+4
    " #~ msgid "" #~ "There was a problem previewing.\n" diff --git a/locale/fi.po b/locale/fi.po index adeba1775d..5774a0dd81 100644 --- a/locale/fi.po +++ b/locale/fi.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows-2.2.1\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2000-10-22 13:38Finland Daylight Time\n" "Last-Translator: Kaj G Backas \n" "Language-Team: wxWindows translators \n" @@ -14,18 +14,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (virhe %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr "Esikatselu" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " tavua " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Kirjekuori, 4 1/8 x 9 1/2\" " @@ -53,23 +49,23 @@ msgstr "#9 Kirjekuori, 3 7/8 x 8 7/8\" " msgid "#define %s must be an integer." msgstr "#define %s pitää olla kokonaisluku" -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i, %i:stä" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (tai %s)" @@ -89,6 +85,11 @@ msgstr "%s Informaatio" msgid "%s Warning" msgstr "%s Varoitus" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -110,7 +111,7 @@ msgstr "%s: v msgid "&Arrange Icons" msgstr "" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 #, fuzzy msgid "&Cancel" msgstr "Peruuta" @@ -119,10 +120,19 @@ msgstr "Peruuta" msgid "&Cascade" msgstr "" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Sulje" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Teletype" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Yksityiskohdat" @@ -132,11 +142,11 @@ msgstr "&Yksityiskohdat" msgid "&Find" msgstr "Hae" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Lopeta" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 #, fuzzy msgid "&Help" msgstr "Apua" @@ -149,25 +159,31 @@ msgstr "&Loki" msgid "&Move" msgstr "" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 #, fuzzy msgid "&Next" msgstr "&Seuraava >" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Seuraava >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Seuraava vihje" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "päiväys" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 #, fuzzy msgid "&Previous" msgstr "Edellinen sivu" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Tee uudelleen" @@ -188,7 +204,7 @@ msgstr "&Tee uudelleen" msgid "&Save..." msgstr "&Tallenna..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Näytä vinkit käynnistyksessä" @@ -197,7 +213,7 @@ msgstr "&N msgid "&Size" msgstr "Koko" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Korjaa" @@ -205,11 +221,13 @@ msgstr "&Korjaa" msgid "&Undo " msgstr "&Korjaa " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Ikkuna" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' sisältää ylimääräisen '..', ohitettu." @@ -220,7 +238,7 @@ msgstr "'%s' sis msgid "'%s' is invalid" msgstr "'%s' on virheellinen" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' ei ole oikea numeerinen arvo optiolle '%s'." @@ -255,12 +273,12 @@ msgstr "'%s' tulisi sis msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' tulisi sisältää vain aakkosia tai numeerisia merkkejä." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Apua)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(kirjanmerkit)" @@ -274,11 +292,11 @@ msgstr "" ", odotti staattisen, #include or #define\n" "resurssien hajoittamisessa." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -294,65 +312,57 @@ msgstr "Legal 11 x 17\" " msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Kirjekuori, 3 5/8 x 6 1/2\" " -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": tiedeostoa ei ole" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": tuntematon merkkisetti" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": tuntemazton koodaus" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Takaisin" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "

    " msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" -"Normaali tekstivälistys
    (ja alleviivattu. " -"Kursiivi. Lihavoitu. Lihavoitu " -"kursiivi.
    kirjasinkoko -2
    kirjasinkoko -1
    kirjasinkoko " -"+0
    kirjasinkoko +1
    kirjasinkoko +2
    kirjasinkoko " +"Normaali tekstivälistys
    (ja alleviivattu. Kursiivi." +" Lihavoitu. Lihavoitu kursiivi.
    kirjasinkoko -2
    kirjasinkoko -1
    kirjasinkoko +0
    kirjasinkoko +1
    kirjasinkoko +2
    kirjasinkoko " "+3
    kirjasinkoko +4

    Vakiomittainen " "välistys.
    lihavoitu kursiivi lihavoitu kursiivi " "alleviivattu
    kirjasinkoko -2
    kirjasinkoko -1
    kirjasinkoko " -"+0
    kirjasinkoko +1
    kirjasinkoko +2
    kirjasinkoko " -"+3
    kirjasinkoko +4
    " +"size=-1>kirjasinkoko -1

    kirjasinkoko +0
    kirjasinkoko +1
    kirjasinkoko " +"+2
    kirjasinkoko +3
    kirjasinkoko +4" #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -378,7 +388,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Lisää tämä sivu kirjanmerkiksi" @@ -395,10 +405,15 @@ msgstr "Lis msgid "All" msgstr "Kaikki" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Kaikki tiedostot (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Kaikki tiedostot (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Soitan jo ISP:lle." @@ -408,7 +423,7 @@ msgstr "Soitan jo ISP:lle." msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Siirrä loki tiedostoon '%s' (valitse [Ei] korvataksesi sen)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Araabi (ISO-8859-6)" @@ -432,7 +447,7 @@ msgstr "B5 paperi, 182 x 257 mm" msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 Kirjekuori, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 #, fuzzy msgid "BMP: Couldn't allocate memory." msgstr "PNM: Muistiallokointi epäonnistui." @@ -464,15 +479,15 @@ msgstr "BMP: En voinut kirjoittaa tiedostotunnistetta." msgid "BMP: wxImage doesn't have own wxPalette." msgstr "" -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Takaaksepäin" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltti (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Vanha baltti (ISO-8859-4)" @@ -481,7 +496,7 @@ msgstr "Vanha baltti (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "Bittikartta resurssispeksi %s ei löytynyt." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Lihavoitu" @@ -517,12 +532,12 @@ msgstr "C6 Kirjekuori, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Kirjekuori, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, fuzzy, c-format msgid "Can not enumerate files '%s'" msgstr "Hakemiston '%s' tiedostojen luettelointi epäonnistui" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Hakemiston '%s' tiedostojen luettelointi epäonnistui" @@ -549,7 +564,7 @@ msgstr "Ei voi odottaa s msgid "Can't &Undo " msgstr "&Korjaus epäonnistui " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -565,17 +580,17 @@ msgstr "rekisteriavainta '%s' ei voida sulkea" msgid "Can't copy values of unsupported type %d." msgstr "En voi kopioida arvoja, joiden tyyppiä %d ei ole tuettu." -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 #, fuzzy msgid "Can't create dialog using memory template" msgstr "tiedoston '%s' luonti ei onnistu" -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, fuzzy, c-format msgid "Can't create dialog using template '%ul'" msgstr "tiedoston '%s' luonti ei onnistu" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" "En voim luoda ohajusikkunoiden luetteloa, tarkista että comctl32.dll on " @@ -590,7 +605,7 @@ msgstr "Rekisteriavaimen '%s' luonti ei onnistu" msgid "Can't create thread" msgstr "Säiettä ei voi luoda" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, fuzzy, c-format msgid "Can't create window of class %s" msgstr "tiedoston '%s' luonti ei onnistu" @@ -678,62 +693,61 @@ msgstr "S msgid "Can't set value of '%s'" msgstr "Ei voida asettaa arvoa '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Peruuta" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, fuzzy, c-format msgid "Cannot convert from encoding '%s'!" msgstr "Tuntematon koodaus (%d)" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Aktiivista puhelinsoittoyhteyttä %s ei löydy" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, fuzzy, c-format msgid "Cannot find container for unknown control '%s'." msgstr "Aktiivista puhelinsoittoyhteyttä %s ei löydy" -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, fuzzy, c-format msgid "Cannot find font node '%s'." msgstr "URL:ää '%s' ei voitu avata" -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Osoitekirjan tiedoston sijainti ei löydy" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Järjestyksen priorisointialueetta ei tiedossa." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Isäntäkoneen nimeä ei onnistuttu saamaan" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Virallista isäntäkoneen-nimeä ei onnistuttu saamaan" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Puhelua ei voi lopettaa - ei aktiivista linjaa." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "OLE initialization epäonnistui" @@ -742,32 +756,32 @@ msgstr "OLE initialization ep msgid "Cannot initialize SciTech MGL!" msgstr "OLE initialization epäonnistui" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 #, fuzzy msgid "Cannot initialize display." msgstr "OLE initialization epäonnistui" -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, fuzzy, c-format msgid "Cannot load icon from '%s'." msgstr "Hakemiston '%s' tiedostojen luettelointi epäonnistui" -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, fuzzy, c-format msgid "Cannot load resources from file '%s'." msgstr "Resurssisisältötiedostoa %s ei löydy." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "HTML asiakirjaa %s ei avattavissa" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "HTML apukirjaa %s ei avattavissa" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "URL:ää '%s' ei voitu avata" @@ -777,61 +791,61 @@ msgstr "URL: msgid "Cannot open contents file: %s" msgstr "Tiedostoa %s ei voi avata!" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, fuzzy, c-format msgid "Cannot open file '%s'." msgstr "Tiedostoa '%s' ei voi avata" -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Tiedoston avaus PostScript-tulostusta varten epäonnistui!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Indeksitiedostoa %s ei voi avata!" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, fuzzy, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Tiedostoa %s ei voi avata!" -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, fuzzy, c-format msgid "Cannot parse dimension from '%s'." msgstr "Hakemiston '%s' tiedostojen luettelointi epäonnistui" -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Mutexin luonti epäonnistui." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, fuzzy, c-format msgid "Cannot read typename from '%s'!" msgstr "Tiedostoa %s ei voi avata!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Säikeen järjestyspolitiikka ei löydettävissä." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Säikeen käynnistys epäonnistui: virhe TLS:n kirjoituksessa" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Suuraakkosherkkä" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Kelttinen (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 #, fuzzy msgid "Central European (ISO-8859-2)" msgstr "Keskieurooppalainen (ISO-8859-2/Latin 2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Valitse ISP, johon soitetaan" @@ -839,11 +853,16 @@ msgstr "Valitse ISP, johon soitetaan" msgid "Choose font" msgstr "Valitse fontti" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Sulje" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Tyhjennä lokisisältö" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Sulje" @@ -852,24 +871,29 @@ msgstr "Sulje" msgid "Close\tAlt-F4" msgstr "" +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Sulje" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Sulje tämä ikkuna" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Tietokone" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Asetuskohdan nimi ei voi alkaa merkillä '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Varmista" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -877,13 +901,13 @@ msgstr "" msgid "Connecting..." msgstr "Tulostetaan..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Sisältö" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "" #: ../src/generic/prntdlgg.cpp:193 @@ -900,7 +924,7 @@ msgstr "Resurssisis msgid "Could not find tab for id" msgstr "id-sarkainta ei löytynyt" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Rich Edit %s-DLL:n käynnistys ei onnistunut" @@ -923,19 +947,19 @@ msgstr "" "Valikon ID:n '%s' selvitys epäonnistui. Käytä (non-zero) kokonais-\n" "lukua tai anna #define (katso manuaali)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Dokumentin esikatselu epäonnistui." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Tulostus ei käynnisty." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Tiedonsiirto ikkunaan ei onnistu" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -950,7 +974,7 @@ msgstr "Ajastimen luonti ep msgid "Couldn't create cursor." msgstr "Ajastimen luonti epäonnistui" -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Symbolia '%s' ei löydy dynaamisesta kirjastosta" @@ -959,22 +983,22 @@ msgstr "Symbolia '%s' ei l msgid "Couldn't get the current thread pointer" msgstr "Säikeen osoittimen haku epäonnistui" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "PNG-kuvan lataus ei onnistu - tiedosto ehkä korruptoitunut." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Leikepöydän datan formatointi muotoon %s epäonnistui." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Tiedonhaku listanhallinnasta %d epäonnistui." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 #, fuzzy msgid "Couldn't save PNG image." msgstr "JPEG: Ei voinut tallentaa kuvaa" @@ -987,15 +1011,19 @@ msgstr "S msgid "Create directory" msgstr "Luo hakemisto" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Luo uusi hakemisto" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Nykyinen hakemisto:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 #, fuzzy msgid "Cyrillic (ISO-8859-5)" msgstr "Kelttinen (ISO-8859-14)" @@ -1004,36 +1032,31 @@ msgstr "Kelttinen (ISO-8859-14)" msgid "D sheet, 22 x 34 in" msgstr "D paperi, 22 x 34\" " -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE kirjoituspyyntö epäonnistui" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: En voi käsitellä 4bit koodausta" - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 #, fuzzy msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "BMP: Koodaus ei vastaa bittisyvyyttä." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 #, fuzzy msgid "DIB Header: Image height > 32767 pixels for file." msgstr "BMP: Kuvakorkeus > 32767 pikseliä." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 #, fuzzy msgid "DIB Header: Image width > 32767 pixels for file." msgstr "BMP: Kuvaleveys > 32767 pikseliä." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 #, fuzzy msgid "DIB Header: Unknown bitdepth in file." msgstr "BMP: tuntematon bittisyvyys." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 #, fuzzy msgid "DIB Header: Unknown encoding in file." msgstr "BMP: Tiedostolla tuntematon koodaus." @@ -1042,15 +1065,15 @@ msgstr "BMP: Tiedostolla tuntematon koodaus." msgid "DL Envelope, 110 x 220 mm" msgstr "DL Kirjekuori, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Päiväys" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Koristeellinen" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "" @@ -1059,7 +1082,7 @@ msgstr "" msgid "Deleted stale lock file '%s'." msgstr "INI-tiedoston '%s' poisto epäonnistui" -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1067,18 +1090,18 @@ msgstr "" "Puhelinsoittomahdollisuutta ei ole koska RAS (remote access service)\n" "ei ole asennettu tälle koneelle. Ole hyvä asenna se." -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 #, fuzzy msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "" -"Valintaikkunan luonti epäonnistui. Unohdit todennäköisesti littää " -"wx/msw/wx.rc resursseihisi" +"Valintaikkunan luonti epäonnistui. Unohdit todennäköisesti littää wx/msw/wx." +"rc resursseihisi" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Tiesitkö..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Hakemistoa '%s' ei onnistuttu luomaan" @@ -1092,7 +1115,7 @@ msgstr "Hakemistoa ei ole" msgid "Directory does not exist" msgstr "Hakemistoa ei ole" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1100,22 +1123,22 @@ msgstr "" "Näytä kaikki indeksiosat, jotka sisältävät annetun osatekstin. Haku ei ole " "suuraakkosherkkä" -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Näytä valinnan valintaikkuna" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Haluatko tallentaa muutokset dokumenttiin %s?" @@ -1124,7 +1147,7 @@ msgstr "Haluatko tallentaa muutokset dokumenttiin %s?" msgid "Done" msgstr "Tehty" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Tehty." @@ -1145,24 +1168,24 @@ msgstr "K msgid "Entries found" msgstr "Löydetty kohdat" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "" -"Ympäristömuuttujan laajennus epäonnistui: ei löytynyt '%c' '%s':n kohdassa " -"%d." +"Ympäristömuuttujan laajennus epäonnistui: ei löytynyt '%c' '%s':n kohdassa %" +"d." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Virhe" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Virhe " @@ -1170,7 +1193,7 @@ msgstr "Virhe " msgid "Error creating directory" msgstr "Hakemiston luonnissa virhe" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 #, fuzzy msgid "Error in reading image DIB ." msgstr "TIFF: Virhe kuvalukemisessa ." @@ -1179,7 +1202,7 @@ msgstr "TIFF: Virhe kuvalukemisessa ." msgid "Error: " msgstr "Virhe: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1187,7 +1210,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Arvioitu aika : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Komennon '%s' ajo epäonnistui" @@ -1214,7 +1237,11 @@ msgstr "Odotettiin '=' resusseja j msgid "Expected 'char' whilst parsing resource." msgstr "Odotettiin 'char' resusseja jäsennellessä." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Virhe %s-soitossa: %s" @@ -1223,7 +1250,7 @@ msgstr "Virhe %s-soitossa: %s" msgid "Failed to access lock file." msgstr "" -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 #, fuzzy msgid "Failed to close file handle" msgstr "Leikepöydän sulkeminen epäonnistui." @@ -1237,11 +1264,11 @@ msgstr "Loki tallennettu tiedostoon '%s'." msgid "Failed to close the clipboard." msgstr "Leikepöydän sulkeminen epäonnistui." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Liittyminen epäonnistui: käyttäjätunnus/salasana puutui." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Liittyminen epäonnistui: ei soitettavissa oleva ISP." @@ -1255,12 +1282,12 @@ msgstr "Rekisteriavaimen '%s' avaus ei onnistu" msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "%s reksteröintiavaimen kopiointi %s:ään epäonnistui" -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, fuzzy, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "DDE-merkkijonoa ei luotu" @@ -1272,26 +1299,36 @@ msgstr "MDI-is msgid "Failed to create a status bar." msgstr "Tilarivin luonti epäonnistui." -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 #, fuzzy msgid "Failed to create a temporary file name" msgstr "MDI-isäntäkehystä ei luotu." -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 #, fuzzy msgid "Failed to create an anonymous pipe" msgstr "Tilarivin luonti epäonnistui." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "%s-serverin kytkentä asiassa %s epäonnistui" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 #, fuzzy msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "Ei voitu luoda hakemistoa " +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "MDI-isäntäkehystä ei luotu." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Rekisteriavaimen '%s' nimeäminen '%s':ksi ei onnistu." + #: ../src/generic/dirdlgg.cpp:201 #, c-format msgid "" @@ -1309,25 +1346,25 @@ msgstr "Rekisteriavaimen '%s' nime msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "HTML %s-koodattua asiakirjaa ei voi näyttää" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Leikepöydän tyhjennys epäonnistui." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "DDE-serverin ohjeistuspiiriä ei aikaansaatu" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Soittoyhteyttä %s ei luotu" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "'%s' prosessia ei voi ajaa\n" @@ -1359,12 +1396,12 @@ msgstr "" "XBM resurssia %s ei löydy.\n" "Unohditko käyttää wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "ISP nimeä %s ei saatu." -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 #, fuzzy msgid "Failed to get clipboard data." msgstr "Leikepöydän datan asetus epäonnistui." @@ -1373,15 +1410,15 @@ msgstr "Leikep msgid "Failed to get data from the clipboard" msgstr "Dataa ei voida hakea leikepöydältä" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "UTC-muotoista aikaa ei saatu." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Paikallinen systeemiaika ei ole tiedossa" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 #, fuzzy msgid "Failed to get the working directory" msgstr "Ei voitu luoda hakemistoa " @@ -1399,7 +1436,7 @@ msgstr "" msgid "Failed to initialize OpenGL" msgstr "OLE initialization epäonnistui" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1417,17 +1454,17 @@ msgstr "Lapsiprosessin uudellenohjaus tulo/l msgid "Failed to load image %d from file '%s'." msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 #, fuzzy msgid "Failed to load mpr.dll." msgstr "Leikepöydän datan asetus epäonnistui." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Jaetun kirjaston '%s' lataus epäonnistui" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, fuzzy, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Jaetun kirjaston '%s' lataus epäonnistui" @@ -1442,17 +1479,17 @@ msgstr "Loki tallennettu tiedostoon '%s'." msgid "Failed to match '%s' in regular expression: %s" msgstr "Virhe %s-soitossa: %s" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, fuzzy, c-format msgid "Failed to modify file times for '%s'" msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, fuzzy, c-format msgid "Failed to open '%s' for %s" msgstr "Leikepöydän avaus ei onnistunut." -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 #, fuzzy msgid "Failed to open temporary file." msgstr "Leikepöydän avaus ei onnistunut." @@ -1470,21 +1507,21 @@ msgstr "Dataa ei voida hakea leikep msgid "Failed to read PID from lock file." msgstr "MDI-isäntäkehystä ei luotu." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Lapsiprosessin uudellenohjaus tulo/lähtö epäonnistui" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 #, fuzzy msgid "Failed to redirect the child process IO" msgstr "Lapsiprosessin uudellenohjaus tulo/lähtö epäonnistui" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Työkaluvihjeen '%s' luonti epäonnistui" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Merkkisetin '%s' koodaus on unohtunut." @@ -1513,12 +1550,12 @@ msgstr "Rekisteriavaimen '%s' nime msgid "Failed to retrieve data from the clipboard." msgstr "Dataa ei voida hakea leikepöydältä." -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, fuzzy, c-format msgid "Failed to retrieve file times for '%s'" msgstr "RAS-virheilmoitusta ei saatu." -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "RAS-virheilmoitusta ei saatu." @@ -1526,7 +1563,7 @@ msgstr "RAS-virheilmoitusta ei saatu." msgid "Failed to retrieve the supported clipboard formats" msgstr "Leikepöydän tuettua dataaformattia ei haettavissa" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "DDE oheistava tiedotusta ei lähetetty" @@ -1539,12 +1576,12 @@ msgstr "S msgid "Failed to set clipboard data." msgstr "Leikepöydän datan asetus epäonnistui." -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 #, fuzzy msgid "Failed to set temporary file permissions" msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Säikeen prioriteetin %d asetus epäonnistui." @@ -1554,20 +1591,20 @@ msgstr "S msgid "Failed to store image '%s' to memory VFS!" msgstr "Kuvan '%s' tallnnus VFS-muistiin epäonnistui!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Säikeen keskeytys ei onnistunut." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "DDE ohjeistuspiirin keskeytys ei onnistunut." -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Puhelinsoiton '%s' keskeytys ei onnistunut." -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, fuzzy, c-format msgid "Failed to touch the file '%s'" msgstr "Loki tallennettu tiedostoon '%s'." @@ -1577,7 +1614,7 @@ msgstr "Loki tallennettu tiedostoon '%s'." msgid "Failed to unlock lock file '%s'" msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "DDE-serverin '%s' poisto rekisteröinnistä epäonnistui" @@ -1595,7 +1632,7 @@ msgstr "Tuhoisa virhe" msgid "Fatal error: " msgstr "Tuhoisa virhe: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Tuhoisa virhe: lopetetaan" @@ -1604,12 +1641,12 @@ msgstr "Tuhoisa virhe: lopetetaan" msgid "File %s does not exist." msgstr ": tiedeostoa ei ole" -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Tiedosto '%s' on olemassa, haluatko korvata sen?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, fuzzy, c-format msgid "" "File '%s' already exists.\n" @@ -1620,21 +1657,21 @@ msgstr "Tiedosto '%s' on olemassa, haluatko korvata sen?" msgid "File couldn't be loaded." msgstr "Tiedostoa ei voinut ladata." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Tiedostovirhe" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Tiedostonimi on jo olemassa." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Tiedostot (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Hae" @@ -1646,15 +1683,15 @@ msgstr "Kiinte msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13\" " -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Kirjasinkoko:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Haarukointi epäonnistui" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Eteenpäin" @@ -1664,7 +1701,7 @@ msgstr "Eteenp msgid "Found " msgstr "Löydetty " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Löytyi %i yhteensopivaa" @@ -1710,39 +1747,31 @@ msgstr "Eurooppalainen traktoriveto, 8 1/2 x 12\" " msgid "GetUnusedColour:: No Unused Color in image " msgstr "" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Takespäin" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Eteenpäin" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Mene ylös asiakirjahierarkiassa" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Mene kotihakemistoon" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Ei voitu luoda hakemistoa" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Kreikkalainen (ISO-8859-7)" @@ -1751,31 +1780,26 @@ msgstr "Kreikkalainen (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "HTML-ankkuria %s ei ole" -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"HTML tiedostot (*.htm)|*.htm|HTML tiedostot (*.html)|*.html|Avustuskirjat " -"(*.htb)|*.htb|Zipattut (*.zip)|*.zip|HTML Apu-projekti (*.hhp)|*.hhp|Kaikki " +"HTML tiedostot (*.htm)|*.htm|HTML tiedostot (*.html)|*.html|Avustuskirjat (*." +"htb)|*.htb|Zipattut (*.zip)|*.zip|HTML Apu-projekti (*.hhp)|*.hhp|Kaikki " "tiedostot (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Juutalainen (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Apua" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Apua: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Apuselaimen vaihtoehdot" @@ -1783,7 +1807,7 @@ msgstr "Apuselaimen vaihtoehdot" msgid "Help Index" msgstr "Apuindeksi" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Tulostaa apua" @@ -1792,28 +1816,28 @@ msgstr "Tulostaa apua" msgid "Help: %s" msgstr "Apua: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 #, fuzzy msgid "ICO: Error in reading mask DIB." msgstr "TIFF: Virhe kuvalukemisessa ." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 #, fuzzy msgid "ICO: Error writing the image file!" msgstr "TIFF: Virhe kuvakirjoituksessa." -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 #, fuzzy msgid "ICO: Invalid icon index." msgstr "Väärä TIFF kuvaindeksi" @@ -1848,11 +1872,11 @@ msgstr "Kuvakeresurssin m msgid "Ill-formed resource file syntax." msgstr "Virheellinen resurssitiedoston syntaksi." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Ei sallittu tiedostonimi." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Virheellinen tiedostomääritelmä." @@ -1860,12 +1884,12 @@ msgstr "Virheellinen tiedostom msgid "Image and Mask have different sizes" msgstr "" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "" -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1877,26 +1901,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Lapsiprosessin tulon aikaansaanti on mahdoton." -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, fuzzy, c-format msgid "Impossible to get permissions for file '%s'" msgstr "Lapsiprosessin tulon aikaansaanti on mahdoton." -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, fuzzy, c-format msgid "Impossible to overwrite the file '%s'" msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Indeksi" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Intialainen (ISO-8859-12)" @@ -1904,17 +1928,17 @@ msgstr "Intialainen (ISO-8859-12)" msgid "Invalid TIFF image index." msgstr "Väärä TIFF kuvaindeksi" -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, fuzzy, c-format msgid "Invalid display mode specification '%s'." msgstr "Virheellinen tiedostomääritelmä." -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, fuzzy, c-format msgid "Invalid geometry specification '%s'" msgstr "Virheellinen tiedostomääritelmä." @@ -1929,7 +1953,7 @@ msgstr "tiedostoa '%s' ei voi avata" msgid "Invalid regular expression '%s': %s" msgstr "" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Kursiivi" @@ -1945,7 +1969,7 @@ msgstr "JPEG-kuvan lataus ei onnistu - tiedosto ehk msgid "JPEG: Couldn't save image." msgstr "JPEG: Ei voinut tallentaa kuvaa" -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1973,17 +1997,17 @@ msgstr "Letter (pieni) 8 1/2 x 11\" " msgid "Letter, 8 1/2 x 11 in" msgstr "Letter 8 1/2 x 11\" " -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Heikko" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Lataa %s tiedosto" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 #, fuzzy msgid "Load file" msgstr "Lataa %s tiedosto" @@ -2022,7 +2046,7 @@ msgstr "" msgid "Ma&ximize" msgstr "" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Mailcap tiedosto %s, rivi %d: epätäydellisdtä tietoa ei huomioitu" @@ -2044,7 +2068,7 @@ msgstr "" msgid "Mi&nimize" msgstr "" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Mime.types tiedosto %s, rivi %d: keskeyttämätön quotattu merkkijono." @@ -2054,7 +2078,7 @@ msgstr "Mime.types tiedosto %s, rivi %d: keskeytt msgid "Mode %ix%i-%i not available." msgstr "" -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Moderni" @@ -2062,24 +2086,24 @@ msgstr "Moderni" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarch Envelope, 3 7/8 x 7 1/2\" " -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Lisää..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Nimi" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "Uusi peli" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Uusi sivu" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Ei" @@ -2101,7 +2125,7 @@ msgstr "XPM ikooni-laitteistoa ei ole!" msgid "No entries found." msgstr "Kohtia ei löydetty." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2113,7 +2137,7 @@ msgstr "" "Haluatko valita kirjasintyypin, jota käytetään tähän?\n" "(Muutoin tällä koodauksella olevaa teksitä ei näytetä oikein)" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2124,40 +2148,39 @@ msgstr "" "Haluatko valita kirjasintyypin, jota käytetään tähän?\n" "(Muutoin tällä koodauksella olevaa teksitä ei näytetä oikein)" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Kuvatyypin käsittelyohjelmaa ei löytynyt." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Kuvatyypin %d käsittelyohjelmaa ei määritelty." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Kuvatyypin %s käsittelyohjelmaa ei määritelty." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Haettua sivua ei löytynyt vielä" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Pohjoismaalainen (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Tavallinen" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Tavallinen kirjasinleikkaus:" @@ -2165,35 +2188,35 @@ msgstr "Tavallinen kirjasinleikkaus:" msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11\" " -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Avaa HTML asiakirja" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Ei sallitu toimenpide." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Valinta '%s' vaatii arvon, '=' odotettu." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Valinta '%s' vaatii arvon." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Valinta '%s': '%s' ei voida muunta päiväykseksi" @@ -2242,12 +2265,12 @@ msgstr "PNM: Tuntematon tiedostomuoto." msgid "PNM: File seems truncated." msgstr "PNM: Tideosto ehkä katkaistu." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Sivu %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Sivu %d / %d" @@ -2270,11 +2293,11 @@ msgstr "Paperin koko" msgid "Paper size" msgstr "Paperin koko" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Luvat" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Putken luonti epäonnistui" @@ -2282,15 +2305,15 @@ msgstr "Putken luonti ep msgid "Please choose a valid font." msgstr "Valitse kelvollinen tiedosto." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Valitse olemassaoleva tiedosto." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Valitse ISP, johon haluat kytkeytyä" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2298,7 +2321,7 @@ msgid "" "or this program won't operate correctly." msgstr "" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "" @@ -2310,15 +2333,11 @@ msgstr "Pystyformaatti" msgid "PostScript file" msgstr "PostScript tiedosto" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Esikatselu:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Edellinen sivu" @@ -2326,11 +2345,11 @@ msgstr "Edellinen sivu" msgid "Print" msgstr "Tulosta" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Tulostuksen esikatselu" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Tulostuksen esikatselu epäonnistui" @@ -2350,7 +2369,7 @@ msgstr "V msgid "Print spooling" msgstr "Tulostuksen sivuajo" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Tulosta tämä sivu" @@ -2358,7 +2377,7 @@ msgstr "Tulosta t msgid "Print to File" msgstr "Tulosta tiedostoon" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Tulostaa..." @@ -2378,21 +2397,21 @@ msgstr "Tulostimen valinnat:" msgid "Printer..." msgstr "Tulostin..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 #, fuzzy msgid "Printing " msgstr "Tulostaa" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Tulostusvirhe" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Tulostetaan sivua %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Tulostetaan..." @@ -2413,7 +2432,7 @@ msgstr "Kysymys" msgid "Read error on file '%s'" msgstr "Korvaa tiedosto '%s'?" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -2444,10 +2463,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Rekisterin arvo '%s' jo olemassa." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Tähdelliset kohdat:" @@ -2456,7 +2471,7 @@ msgstr "T msgid "Remaining time : " msgstr "Jälellä oleva aika : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Poista nykyinen sivu kirjanmerkeistä" @@ -2469,7 +2484,7 @@ msgstr "Korvataanko tiedosto '%s'?" msgid "Replace with:" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "" @@ -2477,21 +2492,21 @@ msgstr "" msgid "Right margin (mm):" msgstr "Oikea marginaali (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Tallenna %s tiedosto" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Tallenna nimellä" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 #, fuzzy msgid "Save file" msgstr "Tallenna %s tiedosto" @@ -2500,20 +2515,15 @@ msgstr "Tallenna %s tiedosto" msgid "Save log contents to file" msgstr "Tallenna lokisisältö tiedostoon" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Juonto" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Hae" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2530,21 +2540,15 @@ msgstr "Luo hakemisto" msgid "Search for:" msgstr "Hae" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Hae kaikista kirjoista" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Hae" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Haetaan..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Lohkot" @@ -2553,24 +2557,29 @@ msgstr "Lohkot" msgid "Seek error on file '%s'" msgstr "Hakuvirhe tiedostossa '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Valitse tiedosto" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Valitse dokumenttipohja" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Valitse dokumentin näkymä" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Valitse tiedosto" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Erotinmerkki tarvitaan option '%s' jälkeen." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Asetukset" @@ -2578,16 +2587,16 @@ msgstr "Asetukset" msgid "Setup..." msgstr "Asetukset..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" "Monta aktiivista puhelinvalintaikkunaa auki, valitsen yhden satunnaisesti." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Näytä kaikki" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Näytä kaikki indeksin osat" @@ -2596,36 +2605,36 @@ msgstr "N msgid "Show hidden directories" msgstr "Näytä piilotiedostot" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Näytä piilotiedostot" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Näytä/piiloita suunnitstus taulun" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Koko" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Kaltevuus" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Ei voi avata tiedostoa tallennettavaksi." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Tätä tiedostoa ei voi avata." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Tätä tiedostoa ei voi tallentaa." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Liian vähän muistia esikatseluun." @@ -2637,12 +2646,12 @@ msgstr "Statement, 5 1/2 x 8 1/2\" " msgid "Status: " msgstr "Tila: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Sveitsi" @@ -2671,15 +2680,15 @@ msgstr "TIFF: Virhe kuvakirjoituksessa." msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17\" " -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Dokumenttipohja" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Taimaalainen (ISO-8859-11)" @@ -2687,7 +2696,7 @@ msgstr "Taimaalainen (ISO-8859-11)" msgid "The FTP server doesn't support passive mode." msgstr "" -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2698,7 +2707,7 @@ msgstr "" "toisen korvaavan setin tai valitset\n" "[Peruuta], jollei sitä voi korvata" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Leikepöydän muoto '%d' ei ole olemassa." @@ -2710,7 +2719,7 @@ msgid "" "Create it now?" msgstr "Rekisteriavain '%s' ei ole olemassa, ei voi uudelleennimetä." -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, fuzzy, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2719,12 +2728,12 @@ msgstr "" "Tiedosto '%s' ei ole olemassa ja sitä ei voi avata.\n" "Se on myös poistettu MRU-tiedostojen luettelosta" -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Tarvittava parametria '%s' ei ole määritelty." @@ -2733,19 +2742,19 @@ msgstr "Tarvittava parametria '%s' ei ole m msgid "The text couldn't be saved." msgstr "Tekstiä ie voitu tallentaa." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Valinnan '%s' arvo täyty olla määritelty." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " "tooold, please upgrade (the following required function is missing: %s)." msgstr "Tälle koneelle asennetun RAS (remote access server) versio on liian " -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -2757,7 +2766,7 @@ msgid "" msgstr "" "Säiemoduulin käynnistys epäonnistui: arvoa ei voi tallentaa säikeen muistiin" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Säiemoduulin käynnistys epäonnistui: säieavainta ei voi luoda" @@ -2769,7 +2778,7 @@ msgstr "" "Säiemoduulin käynnistys epäonnistui: indeksin varaus säikeen muistiin " "mahdotonta" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Säikeen priorisointi huomioimatta." @@ -2781,15 +2790,15 @@ msgstr "" msgid "Tile &Vertically" msgstr "" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Aika" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Päivän vinkki" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Valitettavasti vinkkejä ei ole!" @@ -2810,7 +2819,7 @@ msgstr "Tidosto '%s' pyrit msgid "Trying to solve a NULL hostname: giving up" msgstr "Tyhjää isäntänimeä yritettiin selvittää, luovutaan" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turkkkilainen (ISO-8859-9)" @@ -2823,7 +2832,7 @@ msgstr "Vakio traktoriveto, 14 7/8 x 11\" " msgid "Unable to open requested HTML document: %s" msgstr "Vaatittua HTML-asiakirjaa %s ei voi avata" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Alleviivaus" @@ -2840,45 +2849,45 @@ msgstr "Alleviivaus" msgid "Unexpected end of file whilst parsing resource." msgstr "Odottamaton tiedoston loppuminen resursseja jäsennellessä." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Arvaamaton prametri '%s'" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Tuntematon DDE virhe %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Tuntematon koodaus (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Tuntematon kenttä tiedostossa %s, rivillä %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Tuntematon pitkä optio '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Tuntematon optio '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -2897,12 +2906,12 @@ msgstr "Nime msgid "Unrecognized style %s whilst parsing resource." msgstr "Tunnistamaton tyyli %s resursseja jäsennellessä." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Leikepöydän formaattia ei ole tuettu." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "" @@ -2911,7 +2920,7 @@ msgstr "" msgid "Up" msgstr "" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Käyttö: %s" @@ -2920,23 +2929,23 @@ msgstr "K msgid "Validation conflict" msgstr "Laillisuuskonflikti" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Näytä tiedostot lisätiedoilla" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Näytä tiedostot luettelona" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Näkymät" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Aliprosessin keskeytymisen odotus epäonnistui" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Varoitus" @@ -2944,17 +2953,17 @@ msgstr "Varoitus" msgid "Warning: " msgstr "Varoitus: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" "Varoitus: yritettiin poistaa HTML-muotoilukoodin kahvaa tyhästä pinosta." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 #, fuzzy msgid "Western European (ISO-8859-1)" msgstr "Länsieurooppalainen (ISO-8859-1/Latin 1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 #, fuzzy msgid "Western European with Euro (ISO-8859-15)" msgstr "Länsieurooppalainen Euro:lla (ISO-8859-15/Latin 0)" @@ -2964,7 +2973,7 @@ msgstr "L msgid "Whole word" msgstr "Vain kokonaisia sanoja" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Vain kokonaisia sanoja" @@ -2972,71 +2981,71 @@ msgstr "Vain kokonaisia sanoja" msgid "Win32 theme" msgstr "" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s, Windows 3.1-alustalla" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Arabialinen Windows (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Balttinen Windows (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Keskieurooppalinen Windows (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 #, fuzzy msgid "Windows Chinese Traditional (CP 950)" msgstr "Länsieurooppalinen Windows (CP 1252)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Kyrillinen Windows (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Kreikkalinen Windows(CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Juutalainen Windows(CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 #, fuzzy msgid "Windows Japanese (CP 932)" msgstr "Kreikkalinen Windows(CP 1253)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 #, fuzzy msgid "Windows Korean (CP 949)" msgstr "Kreikkalinen Windows(CP 1253)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Turkkilainen Windows(CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Länsieurooppalinen Windows (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3059,26 +3068,22 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, fuzzy, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "Kuvakeresurssin määritelmää %s ei löydy." -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Kyllä" @@ -3087,19 +3092,19 @@ msgstr "Kyll msgid "You cannot add a new directory to this section." msgstr "Et voi lisätä uutta hakemistoa tähän kohtaan." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[TYHJÄ]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "DDEML sovellus on luonut pitkän kilpailutilanten." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3109,39 +3114,39 @@ msgstr "" "DDEML funktio kutsuttiin ilman edeltävää DDE-initialisointia, \n" "tai epäkelpo tapahtuma annetiin DDEML funktiolle." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "asiakkaan pyrkimys aloitella keskustelua epäonnistui." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "muistin allokointi epäonnistui." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "DDEML ei voinut varmistaa pratmetria." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "Synkronisen ohjetapahtuman pyynnön sallitu aika ylittyi." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "Synkronisen datasiirron pyynnön sallitu aika ylittyi." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "Synkronisen ohjelmapyynnön sallitu aika ylittyi." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "Synkronisen datakirjoitustapahtumnan pyynnön sallitu aika ylittyi." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "Ohjetapahtuman pyynnön lopettamisen sallitu aika ylittyi." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3151,7 +3156,7 @@ msgstr "" "joka pysäytettiin asiakkaan taholla, tai palvelin\n" "keskeytti ennnen tapahtuman valmistumista" -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "tapahtuma epäonnistui." @@ -3159,7 +3164,7 @@ msgstr "tapahtuma ep msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3170,15 +3175,15 @@ msgstr "" "tehdä DDE tapahtuman tai APPCMD_CLIENTONLY on yrittänyt \n" "tehdä palvelimen tapahtuman." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "sisäinen kutsu 'PostMessage'-funktiolle epäonnistui. " -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "sisäinen virhe tapahtui DDEML:ssä." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3188,7 +3193,7 @@ msgstr "" "Kun sovellus on palannut XTYP_XACT_COMPLETE vastakutsusta, \n" "tapahtuman tunnus tälle vastakutsulle ei päde enää." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "muuttumattoman avaimen '%s' muutosyritys ohitettu." @@ -3197,12 +3202,12 @@ msgstr "muuttumattoman avaimen '%s' muutosyritys ohitettu." msgid "binary" msgstr "" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 #, fuzzy msgid "bold" msgstr "Lihavoitu" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 #, fuzzy msgid "bold " msgstr "Lihavoitu" @@ -3212,32 +3217,32 @@ msgstr "Lihavoitu" msgid "can't close file '%s'" msgstr "tiedostoa '%s' ei voi avata" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "tiedoston kuvausta %d ei voida sulkea" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "muutoksia tiedostoon '%s' ei voi tehdä" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "tiedoston '%s' luonti ei onnistu" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "käyttäjän asetustiedostoa '%s' ei voi poistaa" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "ei voida päätellä tuliko kuvaustiedoston %d loppu vastaan" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "tiedoston kokoa ei löydy tiedoston kuvauksesta %d" @@ -3246,55 +3251,55 @@ msgstr "tiedoston kokoa ei l msgid "can't find user's HOME, using current directory." msgstr "käyttäjän kotihakemistoa ei löydy, käytetään nykyistä hakemistoa." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "tiedoston kuvausta %d ei voida tyhjentää" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "paikanmääritys tiedoston kuvauksessa %d ei onnistu" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "ei voi ladata yhtäkään kirjasinleikkausta " -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "tiedostoa '%s' ei voi avata" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "globaalin asetustiedoston '%s' avaus ei onnistu" -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "käyttäjän asetustiedoston '%s' avaus ei onnistu." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "käyttäjän asetustiedoston avaus ei onnistu." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "tiedoston kuvauksen %d luku epäonnistui" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "tiedoston '%s' poisto ei onnistu" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "väliaikaistiedoston '%s' poisto ei onnistu" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "ei voida hakea kuvaustiedostoa %d" @@ -3304,12 +3309,12 @@ msgstr "ei voida hakea kuvaustiedostoa %d" msgid "can't write buffer '%s' to disk." msgstr "tiedostoa '%s' ei voida kirjottaa levylle." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "tiedoston kuvaukseen %d kirjoittaminen epäonnistui" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "käyttäjän asetustiedoston kirjoitus epäonnistui." @@ -3322,33 +3327,33 @@ msgstr "luettelotiedostoa varkkoalueelle '%s' ei l msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "päiväys" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 #, fuzzy msgid "default" msgstr "alt" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "kahdeksastoita" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "kahdeksas" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "yhdestoista" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "kohta '%s' ilmenee useammin kuin kerran ryhmässä '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "vahvista" @@ -3357,64 +3362,69 @@ msgstr "vahvista" msgid "failed to flush the file '%s'" msgstr "Loki tallennettu tiedostoon '%s'." -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "viidestoista" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "viides" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "tiedosto '%s', rivi %d: '%s' ohitettu ryhmäotsikon jälkeen." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "tiedosto '%s', rivi %d: '=' odotettu." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "tiedosto '%s', rivi %d: avain '%s' löytyi ensiksi riviltä %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "tiedosto '%s', rivi %d: muuttamattoman avaimen '%s' arvo ohitettu." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "tiedosto '%s': odottamaton merkki %c rivillä %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "ensimmäinen" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "neljästoista" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "neljäs" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() epäonnistui" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "alusta" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "virheellinen eof() palautusarvo" @@ -3422,21 +3432,17 @@ msgstr "virheellinen eof() palautusarvo" msgid "invalid message box return value" msgstr "virheellinen viestilaatikon palautusarvo" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 #, fuzzy msgid "italic" msgstr "Kursiivi" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "suuri" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 #, fuzzy msgid "light" msgstr "Heikko" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 #, fuzzy msgid "light " msgstr "Heikko" @@ -3451,59 +3457,55 @@ msgstr "maa-arvoa '%s' ei voida asettaa." msgid "looking for catalog '%s' in path '%s'." msgstr "etsitään luetteloa '%s' polussa '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "keskikoko" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "keskiyö" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() epäonnistui" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "yhdeksästoista" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "yhdeksäs" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "ei DDE virhe" -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "nimeämätön" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "keskipäivä" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "numeerinen" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "vaikeuksia uudelleen palaamisessa" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "toinen" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "seitsemästoista" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "seitsemäs" @@ -3511,82 +3513,78 @@ msgstr "seitsem msgid "shift" msgstr "vaihtonäppäin" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "kuudestoista" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "kuudes" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "pieni" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "merkkijono" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "kymmenes" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "tapahtuman vastsus aiheutti DDE_FBUSY-bitin asettumisen." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "kolmas" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "kolmastoista" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "tänään" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "huomenna" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "kahdestoista" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "kahdeskymmenes" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 #, fuzzy msgid "underlined" msgstr "Alleviivaus" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 #, fuzzy msgid "underlined " msgstr "Alleviivaus" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "odottamaton \" paikassa %d '%s':ssa." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "tuntematon" @@ -3595,12 +3593,17 @@ msgstr "tuntematon" msgid "unknown error" msgstr "GIF: tuntemataon virhe!!!" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "tuntematon virhe (virhekoodi %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "haun tuntematon alku" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "haun tuntematon alku" @@ -3609,11 +3612,11 @@ msgstr "haun tuntematon alku" msgid "unknown-%d" msgstr "tuntematon-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "nimeämätön" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "nimeämätön %d" @@ -3623,15 +3626,7 @@ msgstr "nime msgid "using catalog '%s' from '%s'." msgstr "käytössä luettelo '%s' '%s'sta." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "hyvin suuri" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "kovin pieni" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 #, fuzzy msgid "writing" msgstr "Tulostaa" @@ -3641,19 +3636,15 @@ msgstr "Tulostaa" msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay epäonnistui" -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: virheellinen allekirjoitus ReadMsg:ssä." @@ -3662,23 +3653,55 @@ msgstr "wxSocket: virheellinen allekirjoitus ReadMsg:ss msgid "wxSocket: unknown event!." msgstr "wxSocket: tuntematon tapahtuma!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows ei voi avata ikkunaa prosessille '%s': lopettaa." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 #, fuzzy msgid "wxWindows could not open display. Exiting." msgstr "wxWindows ei voi avata ikkunaa prosessille '%s': lopettaa." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "eilen" +#~ msgid " bytes " +#~ msgstr " tavua " + +#~ msgid "

    " +#~ msgstr " " + +#~ msgid " " +#~ msgstr " " + #, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Kaikki tiedostot (*)|*" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "BMP: En voi käsitellä 4bit koodausta" + +#, fuzzy +#~ msgid "Help : %s" +#~ msgstr "Apua: %s" + +#, fuzzy +#~ msgid "Search!" +#~ msgstr "Hae" + +#~ msgid "large" +#~ msgstr "suuri" + +#~ msgid "medium" +#~ msgstr "keskikoko" + +#~ msgid "small" +#~ msgstr "pieni" + +#~ msgid "very large" +#~ msgstr "hyvin suuri" + +#~ msgid "very small" +#~ msgstr "kovin pieni" #~ msgid "Can not create mutex" #~ msgstr "Mutexin luonti epäonnistui" @@ -3735,10 +3758,6 @@ msgstr "eilen" #~ msgid "Y Translation" #~ msgstr "Y käännös" -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "haun tuntematon alku" - #, fuzzy #~ msgid "Fatal Error" #~ msgstr "Tuhoisa virhe" diff --git a/locale/fr.po b/locale/fr.po index ea37d3d2b8..5567ee43c3 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -1,31 +1,27 @@ msgid "" msgstr "" -"Project-Id-Version: wxWindows \n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" -"PO-Revision-Date: 2000-12-04 19:45W. Europe Standard Time\n" -"Last-Translator: Stéphane Junique \n" +"Project-Id-Version: wxWindows\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" +"PO-Revision-Date: 2002-11-20 21:42+0100\n" +"Last-Translator: Stephane Junique \n" "Language-Team: wxWindows translators \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" +"Content-Transfer-Encoding: 8bit\n" #: ../src/common/log.cpp:304 #, c-format msgid " (error %ld: %s)" msgstr " (erreur %ld : %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Aperçu" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " octets " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "Enveloppe #10, 4 1/8 x 9 1/2 pouces" @@ -53,23 +49,23 @@ msgstr "Enveloppe #9, 3 7/8 x 8 7/8 pouces" msgid "#define %s must be an integer." msgstr "#define %s doit être un entier." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" -msgstr "" +msgstr "%d" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" -msgstr "" +msgstr "%d...%d" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i de %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (ou %s)" @@ -89,6 +85,11 @@ msgstr "%s Information" msgid "%s Warning" msgstr "%s Alarme" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -108,38 +109,44 @@ msgstr "%s : syntaxe du fichier de ressource incorrecte." #: ../src/msw/mdi.cpp:192 msgid "&Arrange Icons" -msgstr "" +msgstr "&" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 -#, fuzzy +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" -msgstr "Annuler" +msgstr "&Annuler" #: ../src/msw/mdi.cpp:188 msgid "&Cascade" -msgstr "" +msgstr "&Cascade" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Fermer" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Télétype" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Détails" #: ../src/generic/fdrepdlg.cpp:168 -#, fuzzy msgid "&Find" -msgstr "Trouver" +msgstr "&Trouver" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Fin" -#: ../src/generic/wizard.cpp:249 -#, fuzzy +#: ../src/generic/wizard.cpp:258 msgid "&Help" -msgstr "Aide" +msgstr "&Aide" #: ../src/generic/logg.cpp:492 msgid "&Log" @@ -147,27 +154,31 @@ msgstr "&Journal" #: ../src/univ/themes/win32.cpp:4539 msgid "&Move" -msgstr "" +msgstr "&Deplacer" -#: ../src/msw/mdi.cpp:193 -#, fuzzy +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" -msgstr "&Suivant >" +msgstr "&Suivant" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Suivant >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Prochain Conseil" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 #, fuzzy +msgid "&Paste" +msgstr "date" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" -msgstr "Page précédente" +msgstr "&Précédent" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Refaire" @@ -177,27 +188,25 @@ msgstr "&Refaire " #: ../src/generic/fdrepdlg.cpp:174 msgid "&Replace" -msgstr "" +msgstr "&Remplacer" #: ../src/univ/themes/win32.cpp:4538 -#, fuzzy msgid "&Restore" -msgstr "&Refaire" +msgstr "&Restaurer" #: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "&Enregistrer ..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Afficher les conseils au démarrage" #: ../src/univ/themes/win32.cpp:4541 -#, fuzzy msgid "&Size" -msgstr "Taille" +msgstr "&Taille" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Annuler" @@ -205,11 +214,13 @@ msgstr "&Annuler" msgid "&Undo " msgstr "&Annuler " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Fenêtre" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' a trop de '..', ils sont ignorés." @@ -220,7 +231,7 @@ msgstr "'%s' a trop de '..', ils sont ignor msgid "'%s' is invalid" msgstr "'%s' n'est pas valide" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' n'est pas une valeur numérique correcte pour l'option '%s'." @@ -231,7 +242,7 @@ msgid "'%s' is not a valid message catalog." msgstr "'%s' n'est pas un catalogue de messages valide." #: ../src/common/textbuf.cpp:245 -#, fuzzy, c-format +#, c-format msgid "'%s' is probably a binary buffer." msgstr "'%s' est probablement un fichier binaire." @@ -256,12 +267,12 @@ msgid "'%s' should only contain alphabetic or numeric characters." msgstr "" "'%s' ne devrait contenir que des caractères alphabétiques ou numériques." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Aide)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(signets)" @@ -275,11 +286,11 @@ msgstr "" ", static, #include ou #define\n" "attendu au cours de l'analyse des ressources." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -295,65 +306,57 @@ msgstr "11 x 17 pouces" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "Enveloppe 6 3/4, 3 5/8 x 6 1/2 pouces" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": le ficheir n'existe pas!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr " : jeu de caractères inconnu" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr " : codage inconnu" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Retour" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Normal
    (et souligné. Italique. Gras. " -"Gras italique.
    taille de police " -"-2
    taille de police -1
    taille de police +0
    taille de police " -"+1
    taille de police +2
    taille de police +3
    taille de police " -"+4

    Police à taille fixe.
    gras italique " -"gras italique souligné
    taille de " -"police -2
    taille de police -1
    taille de police +0
    taille de police " -"+1
    taille de police +2
    taille de police +3
    taille de police " -"+4
    " +"Gras italique.
    taille de police -2
    taille de police -1
    taille de " +"police +0
    taille de police +1
    taille de police +2
    taille de police +3
    taille de police +4

    Police à taille " +"fixe.
    gras italique gras italique souligné
    taille de police -2
    taille " +"de police -1
    taille de police +0
    taille de police +1
    taille de police +2
    taille de police +3
    taille de " +"police +4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -377,9 +380,9 @@ msgstr "ABCDEFGabcdefg12345" #: ../src/common/ftp.cpp:369 msgid "ASCII" -msgstr "" +msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Ajouter la page courante aux signets" @@ -396,10 +399,15 @@ msgstr "Ajouter le livre %s" msgid "All" msgstr "Tout" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Tous les fichiers (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Tous les fichiers (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Déjà en cours d'appel ISP." @@ -409,7 +417,7 @@ msgstr "D msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Ajouter le journal au fichier '%s' (choisir [Non] pour l'écraser) ?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabe (ISO-8859-6)" @@ -433,47 +441,43 @@ msgstr "feuille B5, 182 x 257 mm" msgid "B6 Envelope, 176 x 125 mm" msgstr "Enveloppe B6, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 -#, fuzzy +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." -msgstr "PNM : Impossible d'allouer la mémoire nécessaire." +msgstr "BMP : Impossible d'allouer la mémoire nécessaire." #: ../src/common/imagbmp.cpp:86 msgid "BMP: Couldn't save invalid image." msgstr "BMP : Sauvegarde de l'image impossible." #: ../src/common/imagbmp.cpp:290 -#, fuzzy msgid "BMP: Couldn't write RGB color map." -msgstr "BMP : Erreur d'écriture." +msgstr "BMP : Impossible d'écrire la palette de couleurs RGB." #: ../src/common/imagbmp.cpp:422 msgid "BMP: Couldn't write data." msgstr "BMP : Erreur d'écriture." #: ../src/common/imagbmp.cpp:195 -#, fuzzy msgid "BMP: Couldn't write the file (Bitmap) header." -msgstr "BMP : Erreur d'écriture de l'en-tête du fichier." +msgstr "BMP : Erreur d'écriture de l'en-tête du fichier (Bitmap)." #: ../src/common/imagbmp.cpp:216 -#, fuzzy msgid "BMP: Couldn't write the file (BitmapInfo) header." -msgstr "BMP : Erreur d'écriture de l'en-tête du fichier." +msgstr "BMP : Erreur d'écriture de l'en-tête du fichier (BitmapInfo)." #: ../src/common/imagbmp.cpp:120 msgid "BMP: wxImage doesn't have own wxPalette." -msgstr "" +msgstr "BMP: wxImage n'a pas sa propre wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Précédent" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Balte (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Balte (l'ancien) (ISO-8859-4)" @@ -482,7 +486,7 @@ msgstr "Balte (l'ancien) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "La spécification de la ressource bitmap %s est introuvable." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Gras" @@ -518,12 +522,12 @@ msgstr "Enveloppe C6, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "Enveloppe C65, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1369 +#, c-format msgid "Can not enumerate files '%s'" -msgstr "Impossible d'énumérer les fichiers dans le répertoire '%s'" +msgstr "Impossible d'énumérer les fichiers '%s'" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Impossible d'énumérer les fichiers dans le répertoire '%s'" @@ -550,7 +554,7 @@ msgstr "Impossible d'attendre la fin du thread" msgid "Can't &Undo " msgstr "Impossible d'&Annuler" -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -567,17 +571,17 @@ msgstr "Impossible de fermer la cl msgid "Can't copy values of unsupported type %d." msgstr "Impossible de copier les valeurs du type non supporté %d." -#: ../src/msw/toplevel.cpp:295 -#, fuzzy +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" -msgstr "impossible de créer le fichier '%s'" +msgstr "" +"Impossible de créer une boîte de dialogue à partir du modèle en mémoire." -#: ../src/os2/toplevel.cpp:331 -#, fuzzy, c-format +#: ../src/os2/toplevel.cpp:369 +#, c-format msgid "Can't create dialog using template '%ul'" -msgstr "impossible de créer le fichier '%s'" +msgstr "Impossible de créer la boîte de dialogue à partir du modèle '% ul'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" "Impossible de créer une fenêtre avec un contrôle liste, vérifier que " @@ -592,10 +596,10 @@ msgstr "Impossible de cr msgid "Can't create thread" msgstr "Impossible de créer le thread" -#: ../src/msw/window.cpp:2989 -#, fuzzy, c-format +#: ../src/msw/window.cpp:3062 +#, c-format msgid "Can't create window of class %s" -msgstr "impossible de créer le fichier '%s'" +msgstr "Impossible d'enregistrer la fenêtre de classe %s" #: ../src/msw/registry.cpp:661 #, c-format @@ -664,10 +668,10 @@ msgid "Can't read value of key '%s'" msgstr "Impossible de lire la valeur de la clé '%s'" #: ../src/common/image.cpp:955 -#, fuzzy, c-format +#, c-format msgid "Can't save image to file '%s': unknown extension." msgstr "" -"Impossible de charger l'image du fichier '%s' : le fichier n'existe pas." +"Impossible d'enregistrer l'image dans le fichier '%s' : extension inconnue." #: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." @@ -682,98 +686,97 @@ msgstr "Impossible de sp msgid "Can't set value of '%s'" msgstr "Impossible de spécifier la valeur de '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Annuler" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" +"Impossible de convertir les unités de la boîte de dialogue: boîte de " +"dialogue inconnue." -#: ../src/common/strconv.cpp:929 -#, fuzzy, c-format +#: ../src/common/strconv.cpp:963 +#, c-format msgid "Cannot convert from encoding '%s'!" -msgstr "Codage inconnu (%d)" +msgstr "Impossible de convertir depuis l'encodage '%s'!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Impossible de trouver la connexion active : %s" -#: ../contrib/src/xrc/xmlres.cpp:224 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:243 +#, c-format msgid "Cannot find container for unknown control '%s'." -msgstr "Impossible de trouver la connexion active : %s" +msgstr "Impossible de trouver un conteneur pour le contrôle inconnu '%s'" -#: ../contrib/src/xrc/xmlres.cpp:948 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:1024 +#, c-format msgid "Cannot find font node '%s'." -msgstr "Impossible d'ouvrir l'URL '%s'" +msgstr "Le noeud de la police de caractères '%s' est introuvable." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Impossible de trouver l'emplacement du fichier du livre des adresses" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "" "Impossible d'obtenir une gamme de priorité pour le choix de la planification " "%d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Impossible d'obtenir le nom de l'hôte" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Impossible d'obtenir le nom officiel de l'hôte" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Impossible de raccrocher - pas de connexion active." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Impossible d'initialiser l'OLE" #: ../src/mgl/app.cpp:414 -#, fuzzy msgid "Cannot initialize SciTech MGL!" -msgstr "Impossible d'initialiser l'OLE" +msgstr "Impossible d'initialiser Scitech MGL!" -#: ../src/mgl/window.cpp:546 -#, fuzzy +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." -msgstr "Impossible d'initialiser l'OLE" +msgstr "Impossible d'initialiser l'écran" -#: ../src/msw/volume.cpp:627 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:634 +#, c-format msgid "Cannot load icon from '%s'." -msgstr "Impossible d'énumérer les fichiers dans le répertoire '%s'" +msgstr "Impossible de charger l'icone depuis '%s'." -#: ../contrib/src/xrc/xmlres.cpp:337 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:356 +#, c-format msgid "Cannot load resources from file '%s'." -msgstr "Impossible de trouver le fichier de ressources inclus %s." +msgstr "Impossible de charger les ressources du fichier %s." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Impossible d'ouvrir le document HTML : %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Impossible d'ouvrir l'aide HTML : %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Impossible d'ouvrir l'URL '%s'" @@ -783,61 +786,60 @@ msgstr "Impossible d'ouvrir l'URL '%s'" msgid "Cannot open contents file: %s" msgstr "Impossible d'ouvrir le fichier table des matières : %s" -#: ../contrib/src/xrc/xmlres.cpp:311 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:330 +#, c-format msgid "Cannot open file '%s'." -msgstr "Impossible d'ouvrir le fichier '%s'" +msgstr "Impossible d'ouvrir le fichier '%s'." -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Impossible d'ouvrir le fichier pour l'impression PostScript !" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Impossible d'ouvrir le fichier d'index : %s" -#: ../contrib/src/xrc/xmlres.cpp:881 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:957 +#, c-format msgid "Cannot parse coordinates from '%s'." -msgstr "Impossible d'ouvrir le fichier table des matières : %s" +msgstr "Impossible de trouver les coordonnées dans '%s'." -#: ../contrib/src/xrc/xmlres.cpp:922 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:998 +#, c-format msgid "Cannot parse dimension from '%s'." -msgstr "Impossible d'énumérer les fichiers dans le répertoire '%s'" +msgstr "Impossible de trouver les dimensions dans '%s'." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Impossible d'imprimer une page vide." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 +#, c-format msgid "Cannot read typename from '%s'!" -msgstr "Impossible d'ouvrir le fichier table des matières : %s" +msgstr "Impossible de lire le nom du fichier à partir de '%s' !" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Impossible de retrouver le choix de la planification des threads." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Impossible de démarrer le thread : erreur à l'écriture de TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Sensible à la casse" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Balte (ISO-8859-13)" -#: ../src/common/fontmap.cpp:113 -#, fuzzy +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" -msgstr "Europe Centrale (ISO-8859-2/Latin 2)" +msgstr "Europe Centrale (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Choisissez l'ISP pour composer le numéro" @@ -845,53 +847,63 @@ msgstr "Choisissez l'ISP pour composer le num msgid "Choose font" msgstr "Choisissez la police" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Fermer" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Effacer le contenu du journal" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Fermer" #: ../src/univ/themes/win32.cpp:4547 msgid "Close\tAlt-F4" -msgstr "" +msgstr "Fermer\tAlt-F4" + +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Fermer" #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Fermer cette fenêtre" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "L'ordinateur" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "" "Le nom pour l'entrée de la configuration ne peut pas commencer par '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Confirmer" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" -msgstr "" +msgstr "Confirmer la mise à jour du registre" #: ../src/html/htmlwin.cpp:262 msgid "Connecting..." msgstr "Connexion ..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Table des matières" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." -msgstr "" +msgid "Conversion to charset '%s' doesn't work." +msgstr "La conversion vers le jeu de caractères '%s' ne fonctionne pas." #: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" @@ -907,7 +919,7 @@ msgstr "Impossible de trouver le fichier de ressources inclus %s." msgid "Could not find tab for id" msgstr "Impossible de trouver l'étiquette pour l'id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Impossible de charger la bibliothèque DLL Rich Edit '%s'" @@ -932,19 +944,19 @@ msgstr "" "place\n" "ou fournissez un #define (voir le manuel pour les mises en garde)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Impossible de lancer l'aperçu du document." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Impossible de lancer l'impression." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Impossible de transférer les données à la fenêtre" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -955,11 +967,10 @@ msgid "Couldn't create a timer" msgstr "Impossible de créer un minuteur" #: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 -#, fuzzy msgid "Couldn't create cursor." -msgstr "Impossible de créer un minuteur" +msgstr "Impossible de créer un curseur." -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Impossible de trouver le symbole '%s' dans la bibliothèque dynamique" @@ -968,29 +979,28 @@ msgstr "Impossible de trouver le symbole '%s' dans la biblioth msgid "Couldn't get the current thread pointer" msgstr "Impossible d'obtenir le pointeur sur le thread courant" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Impossible de charger une image PNG - le fichier est corrompu ou bien il n'y " "a pas assez de mémoire." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Impossible d'enregistrer le format de presse-papier '%s'." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "" "Impossible d'obtenir de l'information sur un élément de la liste de contrôle " "%d." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 -#, fuzzy +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." -msgstr "JPEG : Sauvegarde de l'image impossible." +msgstr "PNG : Sauvegarde de l'image impossible." #: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" @@ -1000,80 +1010,72 @@ msgstr "Impossible d'arr msgid "Create directory" msgstr "Créer le répertoire" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Créer un nouveau répertoire" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Répertoire courant :" -#: ../src/common/fontmap.cpp:116 -#, fuzzy +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" -msgstr "Balte (ISO-8859-13)" +msgstr "Cyrillique (ISO-8859-5)" #: ../src/common/paper.cpp:106 msgid "D sheet, 22 x 34 in" msgstr "feuille D, 22 x 34 mm" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "La demande de transfert DDE a échoué" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "" -"BMP : Impossible d'utiliser actuellement les fichiers codés sur 4 bits." - -#: ../src/common/imagbmp.cpp:836 -#, fuzzy +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." -msgstr "BMP : L'encodage ne correspond pas aux nombres de bits par pixel." +msgstr "DIB : L'encodage ne correspond pas au nombre de bits par pixel." -#: ../src/common/imagbmp.cpp:798 -#, fuzzy +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." -msgstr "BMP : La hauteur de l'image est > 32767 pixels pour le fichier." +msgstr "DIB : La hauteur de l'image est > 32767 pixels pour le fichier." -#: ../src/common/imagbmp.cpp:792 -#, fuzzy +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." -msgstr "BMP : La largeur de l'image est > 32767 pixels pour le fichier." +msgstr "DIB : La largeur de l'image est > 32767 pixels pour le fichier." -#: ../src/common/imagbmp.cpp:812 -#, fuzzy +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." -msgstr "BMP : Nombre de bits par pixel inconnu dans le fichier." +msgstr "DIB : Nombre de bits par pixel inconnu dans le fichier." -#: ../src/common/imagbmp.cpp:822 -#, fuzzy +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." -msgstr "BMP : Codage inconnu dans le fichier." +msgstr "Entête DIB : Codage inconnu dans le fichier." #: ../src/common/paper.cpp:128 msgid "DL Envelope, 110 x 220 mm" msgstr "Enveloppe DL, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Date" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Décoratif" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" -msgstr "" +msgstr "Encodage par défaut" #: ../src/unix/snglinst.cpp:269 -#, fuzzy, c-format +#, c-format msgid "Deleted stale lock file '%s'." -msgstr "Impossible d'effacer le fichier INI '%s'" +msgstr "Le fichier verrou périmé '%s' a été effacé." -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1082,32 +1084,31 @@ msgstr "" "service d'accès à distance (RAS) n'est pas installé sur cet ordinateur. " "Installez-le svp." -#: ../src/os2/toplevel.cpp:329 -#, fuzzy +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "" -"La création de la boîte de dialogue a échoué. Peut-être avez-vous oublié " -"d'inclure wx/msw/wx.rc dans votre fichier de resources?" +"Peut-être avez-vous oublié d'inclure wx/os2/wx.rc dans votre fichier de " +"resources?" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Saviez-vous ..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Le répertoire '%s' ne peut pas être créé" #: ../src/mgl/dirmgl.cpp:217 -#, fuzzy, c-format +#, c-format msgid "Directory '%s' doesn't exist!" -msgstr "Le répertoire n'existe pas" +msgstr "Le répertoire '%s' n'existe pas!" #: ../src/generic/dirdlgg.cpp:188 msgid "Directory does not exist" msgstr "Le répertoire n'existe pas" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1115,22 +1116,28 @@ msgstr "" "Afficher tous les éléments index qui contiennent une sous-chaîne donnée. " "Recherche non sensible à la casse." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Dialogue d'options de l'affichage" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" +"Voulez-vous remplacer la commande utilisée pour %s les fichiers files avec " +"l'extension \"%s\" ?\n" +"La valeur courante est \n" +"%s, \n" +"La nouvelle valeur est \n" +"%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Voulez-vous sauvegarder les modifications dans le document %s ?" @@ -1139,14 +1146,13 @@ msgstr "Voulez-vous sauvegarder les modifications dans le document %s ?" msgid "Done" msgstr "Fait" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Fait." #: ../src/generic/fdrepdlg.cpp:157 -#, fuzzy msgid "Down" -msgstr "Fait" +msgstr "Bas" #: ../src/common/paper.cpp:107 msgid "E sheet, 34 x 44 in" @@ -1160,7 +1166,7 @@ msgstr "Temps msgid "Entries found" msgstr "Entrées trouvées" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." @@ -1168,16 +1174,16 @@ msgstr "" "L'expansion des variables d'environnement a échoué : caractère '%c' manquant " "à la position %d dans '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Erreur" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Erreur " @@ -1185,16 +1191,15 @@ msgstr "Erreur " msgid "Error creating directory" msgstr "Erreur en créant le répertoire" -#: ../src/common/imagbmp.cpp:845 -#, fuzzy +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." -msgstr "TIFF: Erreur à la lecture de l'image." +msgstr "DIB: Erreur à la lecture de l'image." #: ../src/common/log.cpp:460 msgid "Error: " msgstr "Erreur : " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Espéranto (ISO-8859-3)" @@ -1202,7 +1207,7 @@ msgstr "Esp msgid "Estimated time : " msgstr "Temps estimé : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "L'exécution de la commande '%s' a échoué" @@ -1229,34 +1234,37 @@ msgstr "'=' attendu pendant l'analyse de la ressource." msgid "Expected 'char' whilst parsing resource." msgstr "'char' attendu pendant l'analyse de la ressource." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Impossible de %s la connexion : %s" #: ../src/unix/snglinst.cpp:243 msgid "Failed to access lock file." -msgstr "" +msgstr "L'accès au ficher verrou a échoué." -#: ../src/common/filename.cpp:172 -#, fuzzy +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" -msgstr "Impossible de fermer le presse-papier." +msgstr "Impossible de fermer le fichier" #: ../src/unix/snglinst.cpp:308 -#, fuzzy, c-format +#, c-format msgid "Failed to close lock file '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "La fermeture du fichier verrou '%s' a échoué" #: ../src/msw/clipbrd.cpp:127 msgid "Failed to close the clipboard." msgstr "Impossible de fermer le presse-papier." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Connexion impossible : nom d'utilisateur/mot de passe manquant." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Impossible de se connecter : pas de numéro ISP à composer." @@ -1270,12 +1278,12 @@ msgstr "Impossible de copier la valeur de registre '%s'" msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Impossible de copier les contenus de la clé de registre '%s' vers '%s'" -#: ../src/common/filefn.cpp:1106 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1117 +#, c-format msgid "Failed to copy the file '%s' to '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "La copie du fichier '%s' vers '%s' a échoué" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Impossible de créer la chaîne DDE" @@ -1287,65 +1295,78 @@ msgstr "Impossible de cr msgid "Failed to create a status bar." msgstr "Impossible de créer une barre de statut." -#: ../src/common/filename.cpp:717 -#, fuzzy +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" -msgstr "Impossible de créer une fenêtre parent MDI." +msgstr "Impossible de créer un nom de fichier temporaire." -#: ../src/msw/utilsexc.cpp:195 -#, fuzzy +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" -msgstr "Impossible de créer une barre de statut." +msgstr "Impossible de créer un tube de communication anonyme." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Impossible de créer une connexion au serveur '%s' sur le sujet '%s'" -#: ../src/msw/toplevel.cpp:293 -#, fuzzy +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" -msgstr "Impossible de créer le répertoire " +msgstr "" +"Impossible de créer la boîte de dialogue: le 'DLGTEMPLATE' est peut-être " +"incorrecte ?" + +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Impossible de créer une fenêtre parent MDI." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "" +"Impossible de créer une entrée dans le registre pour les fichiers '%s'." #: ../src/generic/dirdlgg.cpp:201 -#, fuzzy, c-format +#, c-format msgid "" "Failed to create directory '%s'\n" "(Do you have the required permissions?)" msgstr "" -"\n" +"Erreur à la création du répertoire '%s'\n" "(Avez-vous les permissions requises ?)" #: ../src/msw/mimetype.cpp:168 -#, fuzzy, c-format +#, c-format msgid "Failed to create registry entry for '%s' files." -msgstr "Impossible de renommer la clé de registre '%s' en '%s'." +msgstr "" +"Impossible de créer une entrée dans le registre pour les fichiers '%s'." #: ../src/msw/fdrepdlg.cpp:442 #, c-format msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" +"La création de la boîte de dialogue rechercher/remplacer a échoué (code " +"erreur %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Impossible d'afficher le document HTML avec l'encodage %s" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Impossible de vider le presse-papier." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "" "Impossible d'établir une boucle de conseil (advise loop) avec le serveur DDE" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Impossible de réaliser une connexion : %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Impossible d'exécuter '%s'\n" @@ -1377,47 +1398,46 @@ msgstr "" "Impossible de trouver la ressource XPM %s.\n" "Oublié d'utiliser wxResourceLoadBitmapData ?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "Impossible d'obtenir les noms ISP : %s" -#: ../src/mac/clipbrd.cpp:118 -#, fuzzy +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." -msgstr "Impossible de passer les données au presse-papier." +msgstr "Impossible de récupérer les données du presse-papier." #: ../src/msw/clipbrd.cpp:712 msgid "Failed to get data from the clipboard" msgstr "Impossible d'obtenir des données du presse-papier" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Impossible d'obtenir le temps système TUC." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Impossible d'obtenir le temps système local" -#: ../src/common/filefn.cpp:1487 -#, fuzzy +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" -msgstr "Impossible de créer le répertoire " +msgstr "Impossible de trouver quel est le répertoire courant" #: ../src/univ/theme.cpp:120 msgid "Failed to initialize GUI: no built-in themes found." msgstr "" +"L'initialisation de l'interface graphique a échoué: aucun thème inclu n'a " +"éte trouvé." #: ../src/msw/helpchm.cpp:69 msgid "Failed to initialize MS HTML Help." -msgstr "" +msgstr "L'initialisation de l'aide MS HTML a échoué." #: ../src/msw/glcanvas.cpp:729 -#, fuzzy msgid "Failed to initialize OpenGL" -msgstr "Impossible d'initialiser l'OLE" +msgstr "Impossible d'initialiser OpenGL" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1426,54 +1446,52 @@ msgstr "" "redémarrez le programme svp" #: ../src/msw/utils.cpp:721 -#, fuzzy, c-format +#, c-format msgid "Failed to kill process %d" -msgstr "Impossible de rediriger les entrées/sorties du processus fils" +msgstr "Impossible de tuer le processus %d" #: ../src/common/iconbndl.cpp:66 -#, fuzzy, c-format +#, c-format msgid "Failed to load image %d from file '%s'." -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "La lecture de l'image %d depuis le fichier '%s' a échoué." -#: ../src/msw/volume.cpp:340 -#, fuzzy +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." -msgstr "Impossible de passer les données au presse-papier." +msgstr "Impossible de charger mpr.dll" -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Impossible de charger la bibliothèque partagée '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 -#, fuzzy, c-format +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 +#, c-format msgid "Failed to load shared library '%s' Error '%s'" -msgstr "Impossible de charger la bibliothèque partagée '%s'" +msgstr "Impossible de charger la bibliothèque partagée '%s': erreur '%s'" #: ../src/unix/snglinst.cpp:192 -#, fuzzy, c-format +#, c-format msgid "Failed to lock the lock file '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "Le verrouillage du fichier verrou '%s' a échoué" #: ../src/common/regex.cpp:251 -#, fuzzy, c-format +#, c-format msgid "Failed to match '%s' in regular expression: %s" -msgstr "Impossible de %s la connexion : %s" +msgstr "Impossible de trouver '%s' dans l'expression régulière: %s" -#: ../src/common/filename.cpp:1644 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1667 +#, c-format msgid "Failed to modify file times for '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "la mise a jour des heres/dates du fichier '%s' a échoué" -#: ../src/common/filename.cpp:160 -#, fuzzy, c-format +#: ../src/common/filename.cpp:164 +#, c-format msgid "Failed to open '%s' for %s" -msgstr "Impossible d'ouvrir le presse-papier." +msgstr "Impossible d'ouvrir '%s' pour %s" -#: ../src/common/filename.cpp:739 -#, fuzzy +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." -msgstr "Impossible d'ouvrir le presse-papier." +msgstr "Impossible d'ouvrir le fichier temporaire." #: ../src/msw/clipbrd.cpp:107 msgid "Failed to open the clipboard." @@ -1484,38 +1502,37 @@ msgid "Failed to put data on the clipboard" msgstr "Impossible de placer des données sur le presse-papier" #: ../src/unix/snglinst.cpp:252 -#, fuzzy msgid "Failed to read PID from lock file." -msgstr "Impossible de créer une fenêtre parent MDI." +msgstr "" +"Impossible de lire le numéro de process (PID) depuis le fichier verrou." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Impossible de rediriger les entrées/sorties du processus fils" -#: ../src/msw/utilsexc.cpp:600 -#, fuzzy +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "Impossible de rediriger les entrées/sorties du processus fils" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Impossible d'enregistrer le serveur DDE '%s'" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Impossible de se rappeler l'encodage pour le jeu de caractères '%s'." #: ../src/unix/snglinst.cpp:296 -#, fuzzy, c-format +#, c-format msgid "Failed to remove lock file '%s'" -msgstr "impossible de supprimer le fichier '%s'" +msgstr "La suppression du fichier verrou '%s' a échoué" #: ../src/unix/snglinst.cpp:262 -#, fuzzy, c-format +#, c-format msgid "Failed to remove stale lock file '%s'." -msgstr "Impossible de renommer la valeur de registre '%s' en '%s'." +msgstr "Impossible de supprimer le ficher verrou périmé '%s'." #: ../src/msw/registry.cpp:443 #, c-format @@ -1531,12 +1548,12 @@ msgstr "Impossible de renommer la cl msgid "Failed to retrieve data from the clipboard." msgstr "Impossible de retrouver des données du presse-papier." -#: ../src/common/filename.cpp:1710 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1757 +#, c-format msgid "Failed to retrieve file times for '%s'" -msgstr "Impossible de retrouver le texte du message d'erreur RAS" +msgstr "Impossible de lire les heures/dates pour '%s'" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "Impossible de retrouver le texte du message d'erreur RAS" @@ -1544,25 +1561,24 @@ msgstr "Impossible de retrouver le texte du message d'erreur RAS" msgid "Failed to retrieve the supported clipboard formats" msgstr "Impossible de retrouver les formats supportés par le presse-papier" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Impossible d'envoyer un avis de notification au DDE" #: ../src/common/ftp.cpp:368 -#, fuzzy, c-format +#, c-format msgid "Failed to set FTP transfer mode to %s." -msgstr "Impossible d'assigner au thread la priorité %d." +msgstr "Impossible d'assigner transfert FTP le mode %s.." #: ../src/msw/clipbrd.cpp:379 msgid "Failed to set clipboard data." msgstr "Impossible de passer les données au presse-papier." -#: ../src/common/file.cpp:522 -#, fuzzy +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "Impossible de changer temporairement les permissions du fichier '%s'" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Impossible d'assigner au thread la priorité %d." @@ -1572,39 +1588,39 @@ msgstr "Impossible d'assigner au thread la priorit msgid "Failed to store image '%s' to memory VFS!" msgstr "Impossible de stocker l'image '%s' dans la mémoire VFS !" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Impossible de terminer le thread." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "" "Impossible de terminer la boucle de conseil (advise loop) avec le server DDE" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Impossible de terminer la connexion : %s" -#: ../src/common/filename.cpp:1659 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1682 +#, c-format msgid "Failed to touch the file '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "L'accès ('touch') au fichier '%s' a échoué" #: ../src/unix/snglinst.cpp:302 -#, fuzzy, c-format +#, c-format msgid "Failed to unlock lock file '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "Le déverrouillage du fichier verrou '%s' a échoué" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Impossible de supprimer l'enregistrement du serveur DDE '%s'" #: ../src/unix/snglinst.cpp:173 -#, fuzzy, c-format +#, c-format msgid "Failed to write to lock file '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "L'écriture dans le fichier verrou '%s' a échoué" #: ../src/generic/logg.cpp:379 msgid "Fatal error" @@ -1614,46 +1630,48 @@ msgstr "Erreur fatale" msgid "Fatal error: " msgstr "Erreur fatale : " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Erreur fatale : fin du programme" #: ../src/mgl/bitmap.cpp:544 -#, fuzzy, c-format +#, c-format msgid "File %s does not exist." -msgstr ": le ficheir n'existe pas!" +msgstr "Le ficheir '%s' n'existe pas." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Le fichier '%s' existe déjà, voulez-vous vraiment l'écraser ?" -#: ../src/msw/filedlg.cpp:505 -#, fuzzy, c-format +#: ../src/msw/filedlg.cpp:518 +#, c-format msgid "" "File '%s' already exists.\n" "Do you want to replace it?" -msgstr "Le fichier '%s' existe déjà, voulez-vous vraiment l'écraser ?" +msgstr "" +"Le fichier '%s' existe déjà.\n" +"Voulez-vous le remplacer ?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "Le fichier n'a pas pu être chargé." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Erreur fichier" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Ce nom de fichier existe déjà." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Fichiers (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Trouver" @@ -1665,15 +1683,15 @@ msgstr "Police msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 pouces" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Taille de la police :" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Le fork a échoué" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Suivant" @@ -1683,7 +1701,7 @@ msgstr "Suivant" msgid "Found " msgstr "Trouvé " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Trouvé %i correspondances" @@ -1693,9 +1711,8 @@ msgid "From:" msgstr "De :" #: ../src/common/imaggif.cpp:100 -#, fuzzy msgid "GIF: Invalid gif index." -msgstr "Index d'image TIFF non valide." +msgstr "GIF : Index d'image gif non valide." #: ../src/common/imaggif.cpp:75 msgid "GIF: data stream seems to be truncated." @@ -1715,7 +1732,7 @@ msgstr "GIF : erreur inconnue !!!" #: ../src/univ/themes/gtk.cpp:623 msgid "GTK+ theme" -msgstr "" +msgstr "thème GTK+" #: ../src/common/paper.cpp:142 msgid "German Legal Fanfold, 8 1/2 x 13 in" @@ -1727,41 +1744,33 @@ msgstr "Standard allemand en accord #: ../src/common/image.cpp:762 msgid "GetUnusedColour:: No Unused Color in image " -msgstr "" +msgstr "GetUnusedColour:: Aucune couleur libre dans l'image" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Précédent" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Suivant" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Niveau supérieur dans la hiérarchie du document" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Répertoire initial" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Répertoire parent" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" -msgstr "" +msgstr "Aller à la page" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Grec (ISO-8859-7)" @@ -1770,31 +1779,26 @@ msgstr "Grec (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "L'ancrage HTML %s n'existe pas." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"Fichiers HTML (*.htm)|*.htm|Fichiers HTML (*.html)|*.html|Fichiers d'aide " -"(*.htb)|*.htb|Fichiers d'aide (*.zip)|*.zip|Projet d'aide HTML " -"(*.hhp)|*.hhp|Tous les fichier (*.*)|*" +"Fichiers HTML (*.htm)|*.htm|Fichiers HTML (*.html)|*.html|Fichiers d'aide (*." +"htb)|*.htb|Fichiers d'aide (*.zip)|*.zip|Projet d'aide HTML (*.hhp)|*.hhp|" +"Tous les fichier (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hébreu (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Aide" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Aide : %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Aide Options Navigateur" @@ -1802,7 +1806,7 @@ msgstr "Aide Options Navigateur" msgid "Help Index" msgstr "Aide Index" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Aide Impression" @@ -1811,51 +1815,44 @@ msgstr "Aide Impression" msgid "Help: %s" msgstr "Aide : %s" -#: ../src/common/imagbmp.cpp:858 -#, fuzzy +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." -msgstr "TIFF: Erreur à la lecture de l'image." +msgstr "ICO : Erreur à la lecture du masque DIB." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 -#, fuzzy +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" -msgstr "TIFF: Erreur à l'écriture de l'image." +msgstr "ICO : Erreur à l'écriture du fichier image!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." -msgstr "" +msgstr "ICO: image trop petite pour un icone." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." -msgstr "" +msgstr "ICO: image trop grande pour un icone" -#: ../src/common/imagbmp.cpp:1167 -#, fuzzy +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." -msgstr "Index d'image TIFF non valide." +msgstr "ICO : Index d'icone non valide." #: ../src/common/imagiff.cpp:767 -#, fuzzy msgid "IFF: data stream seems to be truncated." -msgstr "GIF : le flot de données semble être tronqué." +msgstr "IFF : le flot de données semble être tronqué." #: ../src/common/imagiff.cpp:751 -#, fuzzy msgid "IFF: error in IFF image format." -msgstr "GIF : erreur dans le format GIF de l'image." +msgstr "IFF : erreur dans le format IFF de l'image." #: ../src/common/imagiff.cpp:754 -#, fuzzy msgid "IFF: not enough memory." -msgstr "GIF : pas assez de mémoire." +msgstr "IFF : pas assez de mémoire." #: ../src/common/imagiff.cpp:757 -#, fuzzy msgid "IFF: unknown error!!!" -msgstr "GIF : erreur inconnue !!!" +msgstr "IFF : erreur inconnue !!!" #: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 #: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 @@ -1867,24 +1864,24 @@ msgstr "La sp msgid "Ill-formed resource file syntax." msgstr "Syntaxe incorrecte dans le fichier de ressource." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Nom de répertoire illégal." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Spécification de fichier illégale." #: ../src/common/image.cpp:785 msgid "Image and Mask have different sizes" -msgstr "" +msgstr "L'image et le masque ne sont pas de même taille" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." -msgstr "" +msgstr "Le fichier image n'est pas de type %d." -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1896,26 +1893,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Impossible d'obtenir l'entrée du processus fils" -#: ../src/common/filefn.cpp:1122 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1133 +#, c-format msgid "Impossible to get permissions for file '%s'" -msgstr "Impossible d'obtenir l'entrée du processus fils" +msgstr "Impossible d'obtenir les permissions du fichier '%s'" -#: ../src/common/filefn.cpp:1136 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1147 +#, c-format msgid "Impossible to overwrite the file '%s'" -msgstr "la mise a jour du fichier '%s' a échoué" +msgstr "Impossible d'écrire par-dessus le fichier '%s'" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" -msgstr "" +msgstr "Impossible de changer les permissions pour le fichier '%s'" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Index" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Nordique (ISO-8859-10)" @@ -1923,32 +1920,32 @@ msgstr "Nordique (ISO-8859-10)" msgid "Invalid TIFF image index." msgstr "Index d'image TIFF non valide." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." -msgstr "" +msgstr "Ressource XRC '%s' invalide: n'a pas le noeud racine 'resource'" -#: ../src/common/appcmn.cpp:378 -#, fuzzy, c-format +#: ../src/common/appcmn.cpp:399 +#, c-format msgid "Invalid display mode specification '%s'." -msgstr "Spécification de fichier illégale." +msgstr "Le mode vidéo spécifié '%s' est non invalide." -#: ../src/x11/app.cpp:231 -#, fuzzy, c-format +#: ../src/x11/app.cpp:218 +#, c-format msgid "Invalid geometry specification '%s'" -msgstr "Spécification de fichier illégale." +msgstr "Géometrie '%s' non valide." #: ../src/unix/snglinst.cpp:280 -#, fuzzy, c-format +#, c-format msgid "Invalid lock file '%s'." -msgstr "impossible de fermer le fichier '%s'" +msgstr "Fichier verrou '%s' non valide." #: ../src/common/regex.cpp:173 #, c-format msgid "Invalid regular expression '%s': %s" -msgstr "" +msgstr "Expression régulière '%s' invalide: %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Italique" @@ -1964,7 +1961,7 @@ msgstr "JPEG : Chargement impossible - le fichier est probablement corrompu." msgid "JPEG: Couldn't save image." msgstr "JPEG : Sauvegarde de l'image impossible." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1992,20 +1989,19 @@ msgstr "Lettre r msgid "Letter, 8 1/2 x 11 in" msgstr "Lettre, 8 1/2 x 11 pouces" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Léger" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Charger le fichier %s" -#: ../src/generic/filedlgg.cpp:1589 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" -msgstr "Charger le fichier %s" +msgstr "Charger le fichier" #: ../src/html/htmlwin.cpp:282 msgid "Loading : " @@ -2033,27 +2029,25 @@ msgid "MDI child" msgstr "fils MDI" #: ../src/msw/helpchm.cpp:60 -#, fuzzy msgid "" "MS HTML Help functions are unavailable because the MS HTML Help library is " "not installed on this machine. Please install it." msgstr "" -"Les fonctions de composition de numéros ne sont pas disponibles car le " -"service d'accès à distance (RAS) n'est pas installé sur cet ordinateur. " -"Installez-le svp." +"Les fonctions de l'aide MS HTMLne sont pas disponibles car la bibliothèque " +"MS HTML Help n'est pas présente sur cette machine. Veuillez l'installer." #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" -msgstr "" +msgstr "Ma%ximiser" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Fichier mailcap %s, ligne %d : entrée incomplète ignorée." #: ../src/generic/fdrepdlg.cpp:152 msgid "Match case" -msgstr "" +msgstr "Respecter la casse" #: ../src/common/fs_mem.cpp:144 #, c-format @@ -2062,13 +2056,13 @@ msgstr "La m #: ../src/univ/themes/metal.cpp:174 msgid "Metal theme" -msgstr "" +msgstr "Thème métallique" #: ../src/univ/themes/win32.cpp:4543 msgid "Mi&nimize" -msgstr "" +msgstr "Mi&nimiser" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Fichier types mime %s, ligne %d : chaîne entre quotes non terminée." @@ -2076,9 +2070,9 @@ msgstr "Fichier types mime %s, ligne %d : cha #: ../src/mgl/app.cpp:173 #, c-format msgid "Mode %ix%i-%i not available." -msgstr "" +msgstr "Le mode %ix%i-%i n'est pas accessible." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Moderne" @@ -2086,31 +2080,31 @@ msgstr "Moderne" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Enveloppe monarchique, 3 7/8 x 7 1/2 pouces" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Plus ..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Nom" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NouveauNom" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Page suivante" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Non" #: ../src/common/image.cpp:793 msgid "No Unused Color in image being masked" -msgstr "" +msgstr "Aucune couleur n'est libre dans l'image en cours de masquage" #: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 #: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 @@ -2125,63 +2119,66 @@ msgstr "Pas de fonctionalit msgid "No entries found." msgstr "Entrées non trouvées." -#: ../src/common/fontmap.cpp:865 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:906 +#, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" "but an alternative encoding '%s' is available.\n" "Do you want to use this encoding (otherwise you will have to choose another " "one)?" msgstr "" -"L'encodage '%s' est inconnu.\n" -"Souhaitez-vous choisir une police à utiliser pour cet encodage?\n" -"(sinon le texte n'apparaitra pas correctement en utilisant cet encodage) ?" +"Aucune police de caractères n'a été trouvée pour afficher du texte utilisant " +"l'encodage '%s',\n" +"mais un encodage similaire est disponible. Souhaitez-vous l'utiliser ?\n" +"(dans le cas contraire, vous devrez choisir par vous-même un encodage de " +"substitution)" -#: ../src/common/fontmap.cpp:870 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:911 +#, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" "Would you like to select a font to be used for this encoding\n" "(otherwise the text in this encoding will not be shown correctly)?" msgstr "" -"L'encodage '%s' est inconnu.\n" +"Aucune police de caractères n'a été trouvée pour afficher du texte utilisant " +"l'encodage '%s'.\n" "Souhaitez-vous choisir une police à utiliser pour cet encodage?\n" -"(sinon le texte n'apparaitra pas correctement en utilisant cet encodage) ?" +"(sinon le texte utilisant cet encodage n'apparaitra pas correctement)" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" +"Pas de fonction trouvée pour gérer le noeud XML '%s' de la classe '%s'!" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Pas de fonctions spécifiques disponibles pour ce type d'image." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Pas de fonctions spécifiques disponibles pour l'image de type : %d." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Pas de fonctions spécifiques disponibles pour l'image de type : %s." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Pas encore trouvé la page correspondante" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordique (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Police normale :" @@ -2189,35 +2186,35 @@ msgstr "Police normale :" msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11 pouces" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Ouvrir un document HTML" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Opération interdite." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "L'option '%s' nécessite une valeur, signe '=' attendu." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "L'option '%s' nécessite une valeur." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Option '%s' : '%s' ne peut pas être convertie en date." @@ -2266,12 +2263,12 @@ msgstr "PNM : Le format de fichier n'est pas reconnu." msgid "PNM: File seems truncated." msgstr "PNM : Le fichier semble tronqué." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Page %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Page %d sur %d" @@ -2294,11 +2291,11 @@ msgstr "Taille de la page" msgid "Paper size" msgstr "Taille de la page" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Droits" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "La création du tube a échoué" @@ -2306,25 +2303,28 @@ msgstr "La cr msgid "Please choose a valid font." msgstr "Veuillez choisir une police valide." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Veuillez choisir un fichier existant." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Veuillez choisir à quel ISP vous voulez vous connecter" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" "(at least version 4.70 is required but you have %d.%02d)\n" "or this program won't operate correctly." msgstr "" +"Veuillez installer une nouvelle version de comctl32.dll\n" +"Vous avez actuellement la version %d.%02d. Vous avez besoin au minimum\n" +"de la version 4.70 pour que ce programme fonctionne correctement." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" -msgstr "" +msgstr "Veuillez patienter pendant l'impression\n" #: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 msgid "Portrait" @@ -2334,15 +2334,11 @@ msgstr "Portrait" msgid "PostScript file" msgstr "Fichier postscript" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Aperçu :" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Page précédente" @@ -2350,11 +2346,11 @@ msgstr "Page pr msgid "Print" msgstr "Impression" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Aperçu avant impression" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Erreur à l'exécution de l'aperçu avant impression" @@ -2374,7 +2370,7 @@ msgstr "Impression couleur" msgid "Print spooling" msgstr "Queue d'impression" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Imprimer cette page" @@ -2382,7 +2378,7 @@ msgstr "Imprimer cette page" msgid "Print to File" msgstr "Imprimer vers un fichier" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Imprimer ..." @@ -2402,21 +2398,20 @@ msgstr "Options de l'imprimante :" msgid "Printer..." msgstr "Imprimante ..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 -#, fuzzy +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " -msgstr "Impression" +msgstr "Impression en cours" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Erreur lors de l'impression" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Impression de la page %d ..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Impression en cours ..." @@ -2437,10 +2432,10 @@ msgstr "Question" msgid "Read error on file '%s'" msgstr "Erreur de lecture dans le fichier '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" -msgstr "" +msgstr "Le noeud objet référencé par ref=\"%s\" est introuvable !" #: ../src/msw/registry.cpp:535 #, c-format @@ -2469,10 +2464,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "La valeur '%s' existe déjà dans le registre." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Entrées pertinentes :" @@ -2481,64 +2472,57 @@ msgstr "Entr msgid "Remaining time : " msgstr "Temps restant :" -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Retirer la page courante de la liste de vos signets" #: ../src/generic/fdrepdlg.cpp:177 -#, fuzzy msgid "Replace &all" -msgstr "Ecraser le fichier '%s' ?" +msgstr "Rempl&acer tout" #: ../src/generic/fdrepdlg.cpp:129 msgid "Replace with:" -msgstr "" +msgstr "Remplacer par:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" -msgstr "" +msgstr "Les fichiers de ressource doivent avoir le même numéro de version!" #: ../src/generic/prntdlgg.cpp:644 msgid "Right margin (mm):" msgstr "Marge de droite (mm) :" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Enregistrer le fichier %s" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Enregistrer sous" -#: ../src/generic/filedlgg.cpp:1604 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" -msgstr "Enregistrer le fichier %s" +msgstr "Enregistrer le fichier" #: ../src/generic/logg.cpp:487 msgid "Save log contents to file" msgstr "Enregistrement du contenu du journal dans un fichier" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Recherche" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2547,30 +2531,22 @@ msgstr "" "occurences du texte que vous avez tapé ci-dessus" #: ../src/generic/fdrepdlg.cpp:158 -#, fuzzy msgid "Search direction" -msgstr "Créer le répertoire" +msgstr "Direction de la recherche" #: ../src/generic/fdrepdlg.cpp:117 -#, fuzzy msgid "Search for:" -msgstr "Recherche" +msgstr "Rechercher:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Recherche dans tous les livres" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Recherche" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Recherche ..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Sections" @@ -2579,24 +2555,29 @@ msgstr "Sections" msgid "Seek error on file '%s'" msgstr "Erreur de recherche dans le fichier '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Choisissez un fichier" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Choisissez un modèle de document" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Choisissez une vue du document" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Choisissez un fichier" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Separateur attendu apres l'option '%s'." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Paramètrage" @@ -2604,55 +2585,54 @@ msgstr "Param msgid "Setup..." msgstr "Paramètrage ..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" "J'ai trouvé plusieurs connexions par ligne téléphonique, j'en choisis une au " "hasard :-)" -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Tout montrer" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Montrer tous les éléments dans l'index" #: ../src/generic/dirdlgg.cpp:135 -#, fuzzy msgid "Show hidden directories" -msgstr "Montrer les fichiers cachés" +msgstr "Montrer les dossiers cachés" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Montrer les fichiers cachés" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Montrer/cacher le panneau de navigation" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Taille" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Italique" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Désolé, impossible d'ouvrir ce fichier pour enregistrer." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Désolé, impossible d'ouvrir ce fichier." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Désolé, impossible d'enregistrer ce fichier." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Désolé, il n'y a pas assez de mémoire pour créer un aperçu." @@ -2664,12 +2644,14 @@ msgstr "Communiqu msgid "Status: " msgstr "Statut :" -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" +"La sous-classe '%s' pour la ressource '%s' est introuvable - pas de sous-" +"classage !" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Suisse" @@ -2698,23 +2680,23 @@ msgstr "TIFF: Erreur msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 in" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Télétype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Modèles" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thaï (ISO-8859-11)" #: ../src/common/ftp.cpp:569 msgid "The FTP server doesn't support passive mode." -msgstr "" +msgstr "Le serveur FTP ne supporte pas le mode passif." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2725,36 +2707,35 @@ msgstr "" "pour le remplacer ou choisir [Annuler]\n" "s'il ne peut pas l'être" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Le format de presse-papier '%d' n'existe pas." #: ../src/generic/dirdlgg.cpp:186 -#, fuzzy, c-format +#, c-format msgid "" "The directory '%s' does not exist\n" "Create it now?" msgstr "" -"\n" -"n'existe pas\n" +"Le dossier '%s' n'existe pas\n" "Voulez-vous le créer maintenant ?" -#: ../src/common/docview.cpp:1802 -#, fuzzy, c-format +#: ../src/common/docview.cpp:1804 +#, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." msgstr "" "Le fichier '%s' n'existe pas et n'a pas pu être ouvert.\n" -"Il a aussi été retiré de la liste des fichiers MRU." +"Il a donc été retiré de la liste des fichiers récemments utilisés." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" -msgstr "" +msgstr "Le chemin '%s' contient trop de \"..\"!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Le paramètre nécessaire '%s' n'a pas été fourni." @@ -2763,12 +2744,12 @@ msgstr "Le param msgid "The text couldn't be saved." msgstr "Le texte n'a pas pu être enregistré." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "La valeur pour l'option '%s' doit être précisée." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2778,10 +2759,12 @@ msgstr "" "machine est trop ancien. Prière de le mettre à jour (la fonction '%s' est " "manquante)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" +"Il y a eu un problème lors du paramétrage de la page: l'installation d'une " +"imprimante par défaut peut être nécessaire." #: ../src/msw/thread.cpp:1214 msgid "" @@ -2791,7 +2774,7 @@ msgstr "" "Echec de l'initialisation du thread : impossible d'enregistrer une valeur en " "local" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" "Echec de l'initialisation du thread : échec à la création de la clé du thread" @@ -2803,27 +2786,27 @@ msgid "" msgstr "" "Echec de l'initialisation du thread : impossible d'allouer un index en local" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "La priorité donnée au thread est ignorée." #: ../src/msw/mdi.cpp:189 msgid "Tile &Horizontally" -msgstr "" +msgstr "Répartir &Horizontalement" #: ../src/msw/mdi.cpp:190 msgid "Tile &Vertically" -msgstr "" +msgstr "Répartir &Verticalement" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Temps" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Le Conseil du Jour" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Désolé mais les conseils ne sont pas disponibles !" @@ -2839,14 +2822,14 @@ msgstr "Marge haut de page (mm) :" #, c-format msgid "Trying to remove file '%s' from memory VFS, but it is not loaded!" msgstr "" -"Tentative de retirer le fichier '%s' de la mémoire VFS, mais celui-ci n'est " -"pas chargé !" +"Tentative de retirer le fichier '%s' du VFS de la mémoire, mais celui-ci " +"n'est pas chargé !" #: ../src/common/sckaddr.cpp:126 msgid "Trying to solve a NULL hostname: giving up" msgstr "Tenative de résoudre le nom d'hôte NULL : j'abandonne" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turque (ISO-8859-9)" @@ -2859,7 +2842,7 @@ msgstr "Standard US en accord msgid "Unable to open requested HTML document: %s" msgstr "Impossible d'ouvrir le document HTML demandé : %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Souligner" @@ -2876,47 +2859,47 @@ msgstr "Souligner" msgid "Unexpected end of file whilst parsing resource." msgstr "Fin de fichier inattendue lors de l'analyse des ressources." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Paramètre '%s' inattendu" -#: ../src/common/fontmap.cpp:141 -msgid "Unicode 7 bit (UTF-7)" -msgstr "" - #: ../src/common/fontmap.cpp:142 -msgid "Unicode 8 bit (UTF-8)" -msgstr "" +msgid "Unicode 7 bit (UTF-7)" +msgstr "Unicode 7 bit (UTF-7)" -#: ../src/msw/dde.cpp:1020 +#: ../src/common/fontmap.cpp:143 +msgid "Unicode 8 bit (UTF-8)" +msgstr "Unicode 8 bit (UTF-8)" + +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Erreur DDE inconnue: %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Codage inconnu (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Champ inconnu dans le fichier %s, ligne %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Option longue '%s' inconnue" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Option '%s' inconnue" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " -msgstr "" +msgstr "Indicateur de style inconnu" #: ../src/common/mimecmn.cpp:167 #, c-format @@ -2933,21 +2916,21 @@ msgstr "Commande sans nom" msgid "Unrecognized style %s whilst parsing resource." msgstr "Style %s non reconnu pendant l'analyse des ressources." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Format de presse-papier non supporté." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." -msgstr "" +msgstr "Thème '%s' non supporté." #: ../src/generic/fdrepdlg.cpp:157 msgid "Up" -msgstr "" +msgstr "Haut" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Usage : %s" @@ -2956,23 +2939,23 @@ msgstr "Usage : %s" msgid "Validation conflict" msgstr "Conflit de validation" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Voir les fichiers - vue détaillée" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Voir les fichiers comme une liste" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Vues" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Echec lors de l'attente de fin de sous-processus" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Alarme" @@ -2980,100 +2963,94 @@ msgstr "Alarme" msgid "Warning: " msgstr "Alarme :" -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" "Alarme : tentative de retrait d'un pointeur d'étiquette HTML de la pile " "alors que celle-ci est vide !" -#: ../src/common/fontmap.cpp:112 -#, fuzzy +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" -msgstr "Europe de l'Ouest (ISO-8859-1/Latin 1)" +msgstr "Europe de l'Ouest (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 -#, fuzzy +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" -msgstr "Europe de l'Ouest nouveau (ISO-8859-15/Latin 0)" +msgstr "Europe de l'Ouest avec l'Euro (ISO-8859-15)" #: ../src/generic/fdrepdlg.cpp:149 -#, fuzzy msgid "Whole word" -msgstr "Mots complets seulement" +msgstr "Mots complets" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Mots complets seulement" #: ../src/univ/themes/win32.cpp:1168 msgid "Win32 theme" -msgstr "" +msgstr "Thème Win32" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s sur Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabe (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Balte (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows Hébreu (CP 1255)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" -msgstr "" +msgstr "Windows Chinois simplifié (CP 936)" -#: ../src/common/fontmap.cpp:131 -#, fuzzy +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" -msgstr "Windows Latin 1 (CP 1252 )" +msgstr "Windows Chinois traditionnel (CP 950)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cyrillique (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Grec (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hébreu (CP 1255)" -#: ../src/common/fontmap.cpp:128 -#, fuzzy +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" -msgstr "Windows Grec (CP 1253)" +msgstr "Windows Japonais (CP 932)" -#: ../src/common/fontmap.cpp:130 -#, fuzzy +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" -msgstr "Windows Grec (CP 1253)" +msgstr "Windows Coréen (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Turque (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows Latin 1 (CP 1252 )" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3085,37 +3062,35 @@ msgstr "Erreur d' #: ../contrib/src/xrc/xml.cpp:530 #, c-format msgid "XML parsing error: '%s' at line %d" -msgstr "" +msgstr "erreur d'analyse XML: '%s' à la ligne %d" #: ../src/common/xpmdecod.cpp:759 msgid "XPM: Malformed pixel data!" -msgstr "" +msgstr "XPM: données de pixels incorrectes !" #: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 #, c-format msgid "XPM: malformed colour definition '%s'!" -msgstr "" +msgstr "XPM: définition de couleur '%s' incorrecte !" -#: ../contrib/src/xrc/xmlres.cpp:436 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:470 +#, c-format msgid "XRC resource '%s' (class '%s') not found!" -msgstr "La spécification pour la ressource icône %s n'a pas été trouvée." +msgstr "La ressource XRC '%s' (classe '%s') est introuvable!" -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." -msgstr "" +msgstr "Ressource XRC : impossible de créer une image bitmap à partir de '%s'." -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" +"Ressource XRC : la couleur '%s' spécifiée pour la propriété '%s' est " +"incorrecte." -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Oui" @@ -3124,21 +3099,23 @@ msgstr "Oui" msgid "You cannot add a new directory to this section." msgstr "Vous ne pouvez pas ajouter un nouveau répertoire à cette section." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" +"La fonction de gestion ZIP ne supporte que les fichiers locaux pour " +"l'instant!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[VIDE]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "" "une application DDEML a créé une situation de rivalité prolongée\n" "(je n'ai bientôt plus de mémoire ...)" -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3150,39 +3127,39 @@ msgstr "" "ou un identifiant invalide a \n" "été fourni à la fonction DDEML." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "une tentative client d'établir une conversation a échoué." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "une allocation mémoire a échoué." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "un paramètre n'a pas pu être validé par la DDEML." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "une demande de transaction synchrone (advise) a expiré." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "une demande de transaction synchrone (données) a expiré." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "une demande de transaction synchrone (exécution) a expiré." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "une demande de transaction synchrone (poke) a expiré." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "une demande pour terminer une transaction (advise) a expiré." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3192,7 +3169,7 @@ msgstr "" "terminée par le client, \n" "ou le serveur a quitté avant d'avoir terminé une transaction." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "une transaction a échoué." @@ -3200,7 +3177,7 @@ msgstr "une transaction a msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3212,15 +3189,15 @@ msgstr "" "ou une application initialisée en tant que APPCMD_CLIENTONLY a tenté " "d'effectuer des transactions serveur." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "un appel interne à la fonction PostMessage a échoué." -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "une erreur interne s'est produite dans le DDEML." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3230,22 +3207,20 @@ msgstr "" "Quand l'application sort d'un appel XTYP_XACT_COMPLETE, \n" "l'identifiant de transaction pour cet appel n'est plus valide." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "tentative de modifier la touche non configurable '%s' ignorée." #: ../src/common/ftp.cpp:369 msgid "binary" -msgstr "" +msgstr "binaire" -#: ../src/common/fontcmn.cpp:518 -#, fuzzy +#: ../src/common/fontcmn.cpp:521 msgid "bold" msgstr "Gras" -#: ../src/common/fontcmn.cpp:442 -#, fuzzy +#: ../src/common/fontcmn.cpp:445 msgid "bold " msgstr "Gras" @@ -3254,34 +3229,34 @@ msgstr "Gras" msgid "can't close file '%s'" msgstr "impossible de fermer le fichier '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "impossible de fermer le descripteur de fichier %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "impossible d'appliquer les changements au fichier '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "impossible de créer le fichier '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "impossible d'effacer le fichier de configuration utilisateur '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "impossible de savoir si la fin du fichier a été atteinte dans le descripteur " "%d" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "" @@ -3293,72 +3268,72 @@ msgstr "" "impossible de trouver le répertoire par défaut (HOME) de l'utilisateur - " "j'utilise le répertoire courant." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "" "impossible de forcer l'écriture sur disque du descripteur de fichier %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "" "impossible de trouver la position courante sur le descripteur de fichier %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "impossible de charger une police de caractères - j'abandonne" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "impossible d'ouvrir le fichier '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "impossible d'ouvrir le fichier de configuration global '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "impossible d'ouvrir le fichier de configuration utilisateur '%s'." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "impossible d'ouvrir le fichier de configuration utilisateur." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "impossible de lire en utilisant le descripteur de fichier %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "impossible de supprimer le fichier '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "impossible de supprimer le fichier temporaire '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "recherche impossible sur le descripteur de fichier %d" #: ../src/common/textfile.cpp:196 -#, fuzzy, c-format +#, c-format msgid "can't write buffer '%s' to disk." msgstr "impossible d'écrire le fichier '%s' sur le disque." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "impossible d'écrire dans le descripteur de fichier %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "impossible d'écrire le fichier de configuration utilisateur." @@ -3371,33 +3346,32 @@ msgstr "fichier catalogue introuvable pour le domaine '%s'." msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "date" -#: ../src/common/fontmap.cpp:413 -#, fuzzy +#: ../src/common/fontmap.cpp:416 msgid "default" -msgstr "alt" +msgstr "par défaut" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "dix-huitième" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "huitième" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "onzième" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "l'entrée '%s' apparaît plus d'une fois dans le groupe '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "établir" @@ -3406,67 +3380,72 @@ msgstr " msgid "failed to flush the file '%s'" msgstr "la mise a jour du fichier '%s' a échoué" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "quinzième" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "cinquième" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "fichier %s, ligne %d: '%s' est ignoré après l'entête de groupe." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "fichier %s, ligne %d: symbole '=' est attendu." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "" "fichier %s, ligne %d: première occurence du caractère %s à la ligne %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "" "fichier '%s', ligne %d: la valeur pour la touche non configurable '%s' est " "ignorée." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "fichier %s: caractère %c inattendu a la ligne %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "premier" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "quatorzième" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "quatrième" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" -msgstr "" +msgstr "Créer des messages de compte-rendus verbeux" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() a échoué" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "initialisation" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "eof() a renvoyé une valeur non valide." @@ -3474,22 +3453,15 @@ msgstr "eof() a renvoy msgid "invalid message box return value" msgstr "la fenêtre de message a renvoyé une valeur non valide" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 -#, fuzzy +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" msgstr "Italique" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "grand" - -#: ../src/common/fontcmn.cpp:514 -#, fuzzy +#: ../src/common/fontcmn.cpp:517 msgid "light" msgstr "Léger" -#: ../src/common/fontcmn.cpp:438 -#, fuzzy +#: ../src/common/fontcmn.cpp:441 msgid "light " msgstr "Léger" @@ -3503,59 +3475,55 @@ msgstr "le langage local '%s' ne peut pas msgid "looking for catalog '%s' in path '%s'." msgstr "recherche le catalogue '%s' dans '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "moyen" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "minuit" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() a échoué" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "dix-neuvième" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "neuvième" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "erreur - pas de DDE." -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "sansnom" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "midi" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" -msgstr "" +msgstr "lecture" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "problème de ré-entrance." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "second" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "dix-septième" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "septième" @@ -3563,96 +3531,94 @@ msgstr "septi msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" -msgstr "" +msgstr "Montrer ce message d'aide" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "seizième" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "sixième" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "petit" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" -msgstr "" +msgstr "Veuillez spécifier le mode vidéo à utiliser (par ex. 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" -msgstr "" +msgstr "Désigner le thème à utiliser" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "dixième" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "la réponse à la transaction a provoqué l'activation du bit DDE_FBUSY." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "troisième" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "treizième" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "aujourd'hui" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "demain" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "douzième" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "vingtième" -#: ../src/common/fontcmn.cpp:510 -#, fuzzy +#: ../src/common/fontcmn.cpp:513 msgid "underlined" -msgstr "Souligner" +msgstr "Souligné" -#: ../src/common/fontcmn.cpp:425 -#, fuzzy +#: ../src/common/fontcmn.cpp:428 msgid "underlined " -msgstr "Souligner" +msgstr "Souligné" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "symbole \" inattendu à la position %d dans '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "inconnu" #: ../src/common/regex.cpp:144 -#, fuzzy msgid "unknown error" -msgstr "GIF : erreur inconnue !!!" +msgstr "erreur inconnue" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "erreur inconnue (code d'erreur %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "erreur inconnue" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "origine de la recherche inconnue" @@ -3661,11 +3627,11 @@ msgstr "origine de la recherche inconnue" msgid "unknown-%d" msgstr "inconnu-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "sansnom" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "sansnom%d" @@ -3675,37 +3641,24 @@ msgstr "sansnom%d" msgid "using catalog '%s' from '%s'." msgstr "utilisation du catalogue '%s' de '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "très grand" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "très petit" - -#: ../src/common/filename.cpp:162 -#, fuzzy +#: ../src/common/filename.cpp:166 msgid "writing" -msgstr "Impression" +msgstr "Écriture en cours" #: ../src/common/dynlib.cpp:336 #, c-format msgid "wxDllLoader failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDllLoader a échoué en effectuant un GetSymbol de '%s'" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDynamicLibrary a échoué en effectuant un GetSymbol de '%s'" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay a échoué." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: signature non valide dans ReadMsg." @@ -3714,216 +3667,74 @@ msgstr "wxSocket: signature non valide dans ReadMsg." msgid "wxSocket: unknown event!." msgstr "wxSocket: événement inconnu!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "" "wxWindows n'a pas pu ouvrir de zone d'affichage (display) pour %s : abandon." -#: ../src/x11/app.cpp:265 -#, fuzzy +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." -msgstr "" -"wxWindows n'a pas pu ouvrir de zone d'affichage (display) pour %s : abandon." +msgstr "wxWindows n'a pas pu ouvrir de zone d'affichage (display) : abandon." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "hier" -#, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Tous les fichiers (*)|*" +#~ msgid " bytes " +#~ msgstr " octets " -#~ msgid "Can not create mutex" -#~ msgstr "Impossible de créer le mutex" +#~ msgid "

    " +#~ msgstr " " -#~ msgid "Can't create the inter-process read pipe" -#~ msgstr "Impossible de créer le tube de lecture entre processus" +#~ msgid " " +#~ msgstr " " -#~ msgid "Can't create the inter-process write pipe" -#~ msgstr "Impossible de créer le tube d'écriture entre processus" - -#~ msgid "Couldn't acquire a mutex lock" -#~ msgstr "Impossible d'obtenir un verrouillage de mutex" - -#~ msgid "Couldn't release a mutex" -#~ msgstr "Impossible de détacher un mutex" - -#~ msgid "Font" -#~ msgstr "Police" - -#~ msgid "PostScript" -#~ msgstr "Postscript" - -#~ msgid "PostScript:" -#~ msgstr "Postscript :" - -#~ msgid "Preview Only" -#~ msgstr "Aperçu Seulement" - -#~ msgid "Printer Command: " -#~ msgstr "Commande Imprimante :" - -#~ msgid "Printer Options: " -#~ msgstr "Options Imprimante :" - -#~ msgid "Printer Settings" -#~ msgstr "Paramètres de l'Imprimante" - -#~ msgid "Send to Printer" -#~ msgstr "Envoyer vers l'imprimante" - -#, fuzzy -#~ msgid "SetPixelFormat failed." -#~ msgstr "La création du tube a échoué" - -#~ msgid "X Scaling" -#~ msgstr "Echelle X" - -#~ msgid "X Translation" -#~ msgstr "Translation X" - -#~ msgid "Y Scaling" -#~ msgstr "Echelle Y" - -#~ msgid "Y Translation" -#~ msgstr "Translation Y" - -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "origine de la recherche inconnue" - -#, fuzzy -#~ msgid "Fatal Error" -#~ msgstr "Erreur fatale" - -#, fuzzy -#~ msgid "Fatal error: %s\n" -#~ msgstr "Erreur fatale : " - -#~ msgid "Back" -#~ msgstr "Retour" - -#~ msgid "Can not create event object." -#~ msgstr "Impossible de créer l'objet événement." - -#~ msgid "Can't find the serialization object '%s' for the object '%s'." +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." #~ msgstr "" -#~ "Impossible de trouver l'objet d'enregistrement '%s' pour l'objet '%s'." +#~ "DIB : Impossible d'utiliser actuellement les fichiers codés sur 4 bits." -#~ msgid "Can't load wxSerial dynamic library." -#~ msgstr "Impossible de charger la bibliothèque dynamique wxSerial." +#~ msgid "Go back to the previous HTML page" +#~ msgstr "Retourner à la page HTML précédente" -#~ msgid "Connection to wxHelp timed out in %d seconds" -#~ msgstr "Connexion à wxHelp annulée dans %d secondes" +#~ msgid "Go forward to the next HTML page" +#~ msgstr "Aller à la page HTLM suivante" -#~ msgid "Etcetera" -#~ msgstr "Et cetera" +#~ msgid "Help : %s" +#~ msgstr "Aide : %s" -#, fuzzy -#~ msgid "ICO: Error calculating size of DIB ." -#~ msgstr "TIFF: Erreur à la lecture de l'image." +#~ msgid "Preparing help window..." +#~ msgstr "Page d'aide en cours de préparation..." -#, fuzzy -#~ msgid "ICO: Error calculating size of Mask DIB ." -#~ msgstr "TIFF: Erreur à la lecture de l'image." +#~ msgid "ReleaseMutex()" +#~ msgstr "ReleaseMutex()" -#, fuzzy -#~ msgid "ICO: Error calculating size of XOR DIB ." -#~ msgstr "TIFF: Erreur à la lecture de l'image." +#~ msgid "Screenshot captured: " +#~ msgstr "Copie d'écran effectuée:" -#, fuzzy -#~ msgid "ICO: Error writing ICONDIR header." -#~ msgstr "TIFF: Erreur à l'écriture de l'image." +#~ msgid "Search!" +#~ msgstr "Recherche!" -#, fuzzy -#~ msgid "ICO: Error writing ICONDIRENTRY header." -#~ msgstr "TIFF: Erreur à l'écriture de l'image." - -#, fuzzy -#~ msgid "ICO: Error writing Mask DIB ." -#~ msgstr "TIFF: Erreur à la lecture de l'image." - -#, fuzzy -#~ msgid "ICO: Error writing XOR DIB ." -#~ msgstr "TIFF: Erreur à la lecture de l'image." - -#~ msgid "Incorrect version of HTML help book" -#~ msgstr "Version incorrecte du livre d'aide HTML" - -#, fuzzy -#~ msgid "Loading DIB : Couldn't allocate memory." -#~ msgstr "BMP : Impossible d'allouer la mémoire nécessaire." - -#~ msgid "Mounted Devices" -#~ msgstr "Périphériques Montés" - -#~ msgid "My Harddisk" -#~ msgstr "Mon Disque Dur" - -#~ msgid "My Home" -#~ msgstr "Mon Répertoire Initial (Home)" - -#~ msgid "New..." -#~ msgstr "Nouveau ..." - -#~ msgid "Please wait..." -#~ msgstr "Veuillez attendre ..." - -#~ msgid "Temporary" -#~ msgstr "Temporaire" - -#~ msgid "The Computer" -#~ msgstr "L'ordinateur" - -#~ msgid "The directory " -#~ msgstr "Le répertoire" - -#~ msgid "User" -#~ msgstr "Utilisateur" - -#~ msgid "User Local" -#~ msgstr "Répertoire /usr/local" - -#~ msgid "Variables" -#~ msgstr "Variables" - -#~ msgid "Window" -#~ msgstr "Fenêtre" - -#, fuzzy -#~ msgid "centered" -#~ msgstr "Et cetera" - -#, fuzzy -#~ msgid "Unknown digit value" -#~ msgstr "Codage inconnu (%d)" - -#~ msgid "Replace file '%s'?" -#~ msgstr "Ecraser le fichier '%s' ?" - -#~ msgid "wxWindows: error finding temporary file name.\n" -#~ msgstr "wxWindows : impossible de trouver le nom du fichier temporaire.\n" - -#~ msgid "" -#~ "Can't create window of class %s!\n" -#~ "Possible Windows 3.x compatibility problem?" +#~ msgid "XRC resource: Cannot create dialog without instance." #~ msgstr "" -#~ "Impossible de créer la fenêtre de classe %s !\n" -#~ "Peut-être un problème de compatibilité avec Windows 3.x ?" +#~ "ressource XRC: impossible de créer une boîte de dialogue sans un " +#~ "exemplaire instancié" -#~ msgid "" -#~ "Can't find dialog template '%s'!\n" -#~ "Check resource include path for finding wx.rc." +#~ msgid "large" +#~ msgstr "grand" + +#~ msgid "medium" +#~ msgstr "moyen" + +#~ msgid "small" +#~ msgstr "petit" + +#~ msgid "very large" +#~ msgstr "très grand" + +#~ msgid "very small" +#~ msgstr "très petit" + +#~ msgid "wxSearchEngine::LookFor must be called before scanning!" #~ msgstr "" -#~ "Impossible de trouver le modèle pour le dialogue bidon !\n" -#~ "Vérifier le chemin d'inclusion de la ressource pour trouver wx.rc." - -#~ msgid "Couldn't launch DDE server '%s'." -#~ msgstr "Impossible de lancer le serveur DDE '%s'." - -#~ msgid "Cyrillic (Latin 5)" -#~ msgstr "Cyrillique (Latin 5)" - -#~ msgid "No XPM facility available!" -#~ msgstr "Pas de fonctionalités XPM disponibles !" +#~ "wxSearchEngine::LookFor doit être invoqué avant de lancer un scannage!" diff --git a/locale/hu.po b/locale/hu.po index 9731e1fa67..77942ae24c 100644 --- a/locale/hu.po +++ b/locale/hu.po @@ -1,30 +1,26 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" -"PO-Revision-Date: 2001-11-03 23:25Central Europe Standard Time\n" -"Last-Translator: Vegh Janos \n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" +"PO-Revision-Date: 2002-11-08 16:49+0100\n" +"Last-Translator: Vegh Janos \n" "Language-Team: wxWindows translators \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-2\n" -"Content-Transfer-Encoding: 8-bit\n" +"Content-Transfer-Encoding: 8bit\n" #: ../src/common/log.cpp:304 #, c-format msgid " (error %ld: %s)" msgstr " (hiba %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" -msgstr " Nyomtatási kép" - -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " bájt(ok)" +msgstr " Nyomtatási elõkép" #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" @@ -53,23 +49,23 @@ msgstr "#10 Borit msgid "#define %s must be an integer." msgstr "#define %s-nek egésznek kell lennie." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" -msgstr "" +msgstr "%d" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" -msgstr "" +msgstr "%d...%d" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i. (össz %i)" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (vagy %s)" @@ -89,6 +85,11 @@ msgstr "%s Inform msgid "%s Warning" msgstr "%s Figyelmeztetés" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -108,38 +109,44 @@ msgstr "%s: nyelvtanilag hib #: ../src/msw/mdi.cpp:192 msgid "&Arrange Icons" -msgstr "" +msgstr "Ikonok &elrendezése" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 -#, fuzzy +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" -msgstr "Mégsem" +msgstr "&Mégsem" #: ../src/msw/mdi.cpp:188 msgid "&Cascade" -msgstr "" +msgstr "&Zuhatag" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Bezár" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Teletype" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Részletek" #: ../src/generic/fdrepdlg.cpp:168 -#, fuzzy msgid "&Find" -msgstr "Keres" +msgstr "&Keres" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "Be&fejez" -#: ../src/generic/wizard.cpp:249 -#, fuzzy +#: ../src/generic/wizard.cpp:258 msgid "&Help" -msgstr "Súgó" +msgstr "&Súgó" #: ../src/generic/logg.cpp:492 msgid "&Log" @@ -147,27 +154,31 @@ msgstr "&Napl #: ../src/univ/themes/win32.cpp:4539 msgid "&Move" -msgstr "" +msgstr "&Áthelyezés" -#: ../src/msw/mdi.cpp:193 -#, fuzzy +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" -msgstr "&Következõ >" +msgstr "&Következõ " -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Következõ >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Következõ ötlet" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 #, fuzzy +msgid "&Paste" +msgstr "dátum" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" -msgstr "Elõzõ oldal" +msgstr "&Elõzõ oldal" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Újra" @@ -177,27 +188,25 @@ msgstr "& #: ../src/generic/fdrepdlg.cpp:174 msgid "&Replace" -msgstr "" +msgstr "&Helyettesítés" #: ../src/univ/themes/win32.cpp:4538 -#, fuzzy msgid "&Restore" -msgstr "&Újra" +msgstr "&Helyreállítás" #: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "&Mentés..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" -msgstr "Mutass &ötleteket inditáskor" +msgstr "&Mutass ötleteket inditáskor" #: ../src/univ/themes/win32.cpp:4541 -#, fuzzy msgid "&Size" -msgstr "Méret" +msgstr "&Méret" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Visszavonás" @@ -205,11 +214,13 @@ msgstr "&Visszavon msgid "&Undo " msgstr "&Visszavonás" -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Ablak" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' után felesleges '..'-t találtam, elhanyagoltam." @@ -220,7 +231,7 @@ msgstr "'%s' ut msgid "'%s' is invalid" msgstr "'%s' érvénytelen" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' nem megfelelõ számérték a(z) '%s' beállításához." @@ -231,7 +242,7 @@ msgid "'%s' is not a valid message catalog." msgstr "'%s' érvénytelen üzenet katalógus." #: ../src/common/textbuf.cpp:245 -#, fuzzy, c-format +#, c-format msgid "'%s' is probably a binary buffer." msgstr "'%s' valószínûleg bináris fájl." @@ -255,12 +266,12 @@ msgstr "'%s' csak bet msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' csak betûket vagy számokat tartalmazhat." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Súgó)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(könyvjelzõk)" @@ -274,11 +285,11 @@ msgstr "" ", static, #include vagy #define\n" " kulcszót vártam az erõforrás értelmezésekor." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -294,63 +305,56 @@ msgstr "11 x 17 h msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Boríték, 3 5/8 x 6 1/2 hüvelyk" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": a file nem létezik!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": ismeretlen jelkészlet" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": ismeretlen kódolás" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Vissza" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Normál
    (and Aláhúzott. Dõlt. Félkövér. " "Félkövér dõlt.
    betû méret-2
    betû méret -1
    betû méret +0
    betû méret +1
    betû méret +2
    betû méret +3
    betû méret " -"+4

    Rögzített méretû típus.
    félkövér dõlt " -"félkövér dõlt aláhúzott
    betû méret " -"-2
    betû méret -1
    betû méret " -"+0
    betû méret +1
    betû méret " -"+2
    betû méret +3
    betû méret " -"+4
    " +"size=+3>betû méret +3

    betû méret +4

    Rögzített méretû típus.
    félkövér dõlt " +"félkövér dõlt aláhúzott
    betû méret -2
    betû méret -1
    betû méret +0
    betû méret +1
    betû méret +2
    betû méret +3
    betû méret +4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -374,9 +378,9 @@ msgstr "ABCDEFGabcdefg12345" #: ../src/common/ftp.cpp:369 msgid "ASCII" -msgstr "" +msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Add hozzá ezt a lapot a könyvjelzõkhöz" @@ -387,16 +391,21 @@ msgstr "Add hozz #: ../src/html/helpctrl.cpp:95 #, c-format msgid "Adding book %s" -msgstr "Add hozzá a %s könyvet" +msgstr "Add hozzá a könyv %eket" #: ../src/generic/prntdlgg.cpp:160 msgid "All" msgstr "Mindet" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Minden fájlt (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Minden fájlt (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Már tárcsázom az ISPt." @@ -407,7 +416,7 @@ msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "" "A naplót a(z) '%s' file végéhez írjam? (Ha [Nem]-et választ, felülírom!)" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arab (ISO-8859-6)" @@ -431,7 +440,7 @@ msgstr "B5 lap, 182 x 257 millim msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 Boriték, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." msgstr "BMP: Nem sikerült memóriát foglalni." @@ -440,46 +449,43 @@ msgid "BMP: Couldn't save invalid image." msgstr "BMP: Nem tudtam elmenteni a hibás képet." #: ../src/common/imagbmp.cpp:290 -#, fuzzy msgid "BMP: Couldn't write RGB color map." -msgstr "BMP: Nem tudtam kiírni az adatokat." +msgstr "BMP: Nem tudtam kiírni az RGB színtérképet." #: ../src/common/imagbmp.cpp:422 msgid "BMP: Couldn't write data." msgstr "BMP: Nem tudtam kiírni az adatokat." #: ../src/common/imagbmp.cpp:195 -#, fuzzy msgid "BMP: Couldn't write the file (Bitmap) header." -msgstr "BMP: Nem tudtam kiírni a fájl fejet." +msgstr "BMP: Nem tudtam kiírni a fájl bittérkép fejet." #: ../src/common/imagbmp.cpp:216 -#, fuzzy msgid "BMP: Couldn't write the file (BitmapInfo) header." -msgstr "BMP: Nem tudtam kiírni a fájl fejet." +msgstr "BMP: Nem tudtam kiírni a fájl bittérkép info fejet." #: ../src/common/imagbmp.cpp:120 msgid "BMP: wxImage doesn't have own wxPalette." -msgstr "" +msgstr "BMP: a wxImage-nek nincs saját wxPalette-je." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Hátra" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Balti (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Balti (régi) (ISO-8859-4)" #: ../src/common/resourc2.cpp:840 ../src/common/resource.cpp:2500 #, c-format msgid "Bitmap resource specification %s not found." -msgstr "Nem találom a(z) %s bittérkép leírást." +msgstr "Nem találom a(z) %s bittérkép meghatározást." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Félkövér" @@ -515,12 +521,12 @@ msgstr "C6 Bor msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Boríték, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1369 +#, c-format msgid "Can not enumerate files '%s'" -msgstr "Nem tudom megszámolni a(z) '%s' könyvtárban a fájlokat" +msgstr "Nem tudom megszámolni a(z) '%s' fájlokat" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Nem tudom megszámolni a(z) '%s' könyvtárban a fájlokat" @@ -547,7 +553,7 @@ msgstr "Nem tudom megv msgid "Can't &Undo " msgstr "Nem lehet &Visszavonni" -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -563,20 +569,20 @@ msgstr "Nem tudom lez msgid "Can't copy values of unsupported type %d." msgstr "Nem tudom a nem támogatott %d típusú értékeket lemásolni." -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" -msgstr "" +msgstr "Nem tudom létrehozni a dialógust a memória minta alapján" -#: ../src/os2/toplevel.cpp:331 -#, fuzzy, c-format +#: ../src/os2/toplevel.cpp:369 +#, c-format msgid "Can't create dialog using template '%ul'" -msgstr "nem tudom létrehozni a(z) '%s' fájl-t" +msgstr "Nem tudom létrehozni a párbeszéd ablakot a(z) '%s' minta alapján." -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" -"Nem tudom létrehozni a lista vezérlõ ablakot, ellenõrizze, hogy a " -"comctl32.dll installálva van-e." +"Nem tudom létrehozni a lista vezérlõ ablakot, ellenõrizze, hogy a comctl32." +"dll installálva van-e." #: ../src/msw/registry.cpp:402 #, c-format @@ -587,10 +593,10 @@ msgstr "Nem tudom l msgid "Can't create thread" msgstr "Nem tudom létrehozni a szálat" -#: ../src/msw/window.cpp:2989 -#, fuzzy, c-format +#: ../src/msw/window.cpp:3062 +#, c-format msgid "Can't create window of class %s" -msgstr "nem tudom létrehozni a(z) '%s' fájl-t" +msgstr "Nem tudom létrehozni a(z) %s osztályhoz tartozó fájlt" #: ../src/msw/registry.cpp:661 #, c-format @@ -658,9 +664,10 @@ msgid "Can't read value of key '%s'" msgstr "Nem tudom olvasni a(z) '%s' kulcs értékét" #: ../src/common/image.cpp:955 -#, fuzzy, c-format +#, c-format msgid "Can't save image to file '%s': unknown extension." -msgstr "Nem tudom betölteni a képet a(z) '%s' fájlból: nincs ilyen fájl." +msgstr "" +"Nem tudom elmenteni a képet a(z) '%s' fájlba: nincs ilyen kiterjesztés." #: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." @@ -675,96 +682,93 @@ msgstr "Nem tudom a sz msgid "Can't set value of '%s'" msgstr "Nem tudom a(z) '%s' értéket beállítani" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Mégsem" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." -msgstr "" +msgstr "Nem tudom átalakítani a dialógus egységeit; ismeretlen dialógus." -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, c-format msgid "Cannot convert from encoding '%s'!" -msgstr "" +msgstr "Nem tudok átalakítani a '%s' kódolásról!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Nem találom a(z) %s aktív telefonos kapcsolatot" -#: ../contrib/src/xrc/xmlres.cpp:224 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:243 +#, c-format msgid "Cannot find container for unknown control '%s'." -msgstr "Nem találom a(z) %s aktív telefonos kapcsolatot" +msgstr "Nem találok tároló elemet a(z) '%s' ismeretlen irányitóelemhez." -#: ../contrib/src/xrc/xmlres.cpp:948 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:1024 +#, c-format msgid "Cannot find font node '%s'." -msgstr "Nem tudom megnyitni a(z) '%s' URL-t" +msgstr "Nem találom a(z) '%s' betûkészlet csomüpontot" -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Nem találom a telefonkönyv fájl helyét" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Nincs prioritási tartománya a(z) %d ütemezési elõíráshoz." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Nem ismerem a gazdagép nevét" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Nem ismerem a gazdagép hivatalos nevét" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Nem tudom letenni - nincs aktív telefonkapcsolat." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Nem tudom inicializálni az OLEt" #: ../src/mgl/app.cpp:414 -#, fuzzy msgid "Cannot initialize SciTech MGL!" -msgstr "Nem tudom inicializálni az OLEt" +msgstr "Nem tudom elindítani az SciTech MGLt!" -#: ../src/mgl/window.cpp:546 -#, fuzzy +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." -msgstr "Nem tudom inicializálni az OLEt" +msgstr "Nem tudom elindítani a megjelenítést." -#: ../src/msw/volume.cpp:627 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:634 +#, c-format msgid "Cannot load icon from '%s'." -msgstr "Nem tudom megnyitni a(z) '%s' URL-t" +msgstr "Nem tudom betölteni az ikont '%s'-bõl." -#: ../contrib/src/xrc/xmlres.cpp:337 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:356 +#, c-format msgid "Cannot load resources from file '%s'." -msgstr "Nem találom az erõforrás %s beágyazott fájlját." +msgstr "Nem tudom betölteni az erõforrást a(z) '%s' fájlból." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Nem tudom megnyitni a(z) %s HTML dokumentumot" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Nem tudom megnyitni a(z) %s súgó könyvet" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Nem tudom megnyitni a(z) '%s' URL-t" @@ -774,114 +778,123 @@ msgstr "Nem tudom megnyitni a(z) '%s' URL-t" msgid "Cannot open contents file: %s" msgstr "Nem tudom megnyitni a(z) %s tartalom fájlt" -#: ../contrib/src/xrc/xmlres.cpp:311 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:330 +#, c-format msgid "Cannot open file '%s'." -msgstr "Nem tudom megnyitni a(z) '%s' fájlt" +msgstr "Nem tudom megnyitni a(z) '%s' fájlt." -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Nem tudom a fájlt PostScript nyomtatásra megnyitni!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Nem tudom a(z) %s index fájlt megnyitni" -#: ../contrib/src/xrc/xmlres.cpp:881 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:957 +#, c-format msgid "Cannot parse coordinates from '%s'." -msgstr "Nem tudom megnyitni a(z) %s tartalom fájlt" +msgstr "Nem tudom értelmezni a koordinátákat '%s'-bõl." -#: ../contrib/src/xrc/xmlres.cpp:922 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:998 +#, c-format msgid "Cannot parse dimension from '%s'." -msgstr "Nem tudom megszámolni a(z) '%s' könyvtárban a fájlokat" +msgstr "Nem tudom értelmezni a dimenziót '%s'-bõl." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Nem tudok üres oldalt nyomtatni." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 +#, c-format msgid "Cannot read typename from '%s'!" -msgstr "Nem tudom olvasni a(z) '%s' értékét" +msgstr "Nem tudom elolvasni '%s' típusának nevét." -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Nem találom a szál ütemezés elõírásait." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Nem tudom elindítani a szálat: hiba a TLS írásakor" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Kis/nagybetûk különbözõek" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Kelta (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 -#, fuzzy +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" -msgstr "Közép-európai (ISO-8859-2/Latin 2)" +msgstr "Közép-európai (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" -msgstr "Válassza ki a tárcsázandó ISPt" +msgstr "Válassza ki a tárcsázandó szolgáltatót (ISPt)!" #: ../src/gtk/fontdlg.cpp:122 msgid "Choose font" msgstr "Válasszon betûtípust" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Bezárás" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "A napló fájl törlése" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Bezárás" #: ../src/univ/themes/win32.cpp:4547 msgid "Close\tAlt-F4" -msgstr "" +msgstr "Bezárás\tAlt-F4" + +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Bezárás" #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Zárja be ezt az ablakot" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Számítógép" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Konfigurációs bejegyzés nem kezdõdhet '%c'-vel." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Megerõsítés" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" -msgstr "" +msgstr "Registry frissítés megerõsítése" #: ../src/html/htmlwin.cpp:262 msgid "Connecting..." msgstr "Kapcsolódás..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Tartalom" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." -msgstr "" +msgid "Conversion to charset '%s' doesn't work." +msgstr "A '%s' jelkészletté alakítás nem mûködik." #: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" @@ -897,7 +910,7 @@ msgstr "Nem tal msgid "Could not find tab for id" msgstr "Nem találok lapválasztót az azonosítóhoz" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Nem tudom betölteni a(z) '%s' Rich Edit DLL-t" @@ -910,7 +923,7 @@ msgid "" msgstr "" "Nem tudom feloldani a(z) '%s' vezérlõ osztályt vagy azonosítót. Használjon " "(nem-nulla) egészet helyette\n" -"vagy adja meg #define után (az okokról lásd a kézikönyvet)" +"vagy adja meg #define után (a fenntartásokról lásd a kézikönyvet)" #: ../src/common/resource.cpp:1251 #, c-format @@ -920,21 +933,21 @@ msgid "" msgstr "" "Nem tudom feloldani a(z) '%s' menü azonosítót. Használjon (nem-nulla) " "egészet helyette\n" -"vagy adja meg #define után (az okokról lásd a kézikönyvet)" +"vagy adja meg #define után (a fenntartásokról lásd a kézikönyvet)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Nem tudom a dokument megtekintését kezdeményezni." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Nem tudom elindítani a nyomtatást." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Nem tudtam adatot átvinni az ablakba" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -945,11 +958,10 @@ msgid "Couldn't create a timer" msgstr "Nem tudtam idõzítõt létrehozni" #: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 -#, fuzzy msgid "Couldn't create cursor." -msgstr "Nem tudtam idõzítõt létrehozni" +msgstr "Nem tudtam létrehozni a képernyõ pozició kijelzõt." -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Nem találom a(z) '%s' szimbólumot a dinamikus könyvtárban" @@ -958,26 +970,25 @@ msgstr "Nem tal msgid "Couldn't get the current thread pointer" msgstr "Nem kaptam meg a mutatót a jelenlegi szálhoz" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Nem tudtam betölteni a PNG képet - hibás a fájl vagy nincs elég memória." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Nem tudtam regisztrálni a(z) '%s' vágólap formátumot." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Nem kaptam információt a lista vezérlõ %d elemérõl." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 -#, fuzzy +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." -msgstr "JPEG: Nem tudtam elmenteni a képet." +msgstr "Nem tudtam elmenteni a PNG képet." #: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" @@ -987,79 +998,72 @@ msgstr "Nem tudtam befejezni a sz msgid "Create directory" msgstr "Hozzon létre könyvtárat" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Hozzon létre egy új könyvtárat" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "A jelenlegi könyvtár:" -#: ../src/common/fontmap.cpp:116 -#, fuzzy +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" -msgstr "Kelta (ISO-8859-14)" +msgstr "Ciril (ISO-8859-5)" #: ../src/common/paper.cpp:106 msgid "D sheet, 22 x 34 in" msgstr "D lap, 22 x 34 hüvelyk" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE adatbeírás nem sikerült" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: 4bit kódolással még nem tudok dolgozni." - -#: ../src/common/imagbmp.cpp:836 -#, fuzzy +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." -msgstr "BMP: A kódolás nem felel meg a bitmélységnek." +msgstr "DIB fej: A kódolás nem felel meg a bitmélységnek." -#: ../src/common/imagbmp.cpp:798 -#, fuzzy +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." -msgstr "BMP: A képmagasság a fájl-ban > 32767 pixel." +msgstr "DIB fej: A képmagasság a fájl-ban > 32767 pixel." -#: ../src/common/imagbmp.cpp:792 -#, fuzzy +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." -msgstr "BMP: A képszélesség a fájl-ban > 32767 pixel." +msgstr "DIB fej: A képszélesség a fájl-ban > 32767 pixel." -#: ../src/common/imagbmp.cpp:812 -#, fuzzy +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." -msgstr "BMP: Ismeretlen bitmélység a fájl-ban." +msgstr "DIB fej: Ismeretlen bitmélység a fájl-ban." -#: ../src/common/imagbmp.cpp:822 -#, fuzzy +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." -msgstr "BMP: Ismeretlen kódolás a fájl-ban." +msgstr "DIB fej: Ismeretlen kódolás a fájl-ban." #: ../src/common/paper.cpp:128 msgid "DL Envelope, 110 x 220 mm" msgstr "DL Boríték, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Dátum" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Dekoratív" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" -msgstr "" +msgstr "Az alapértelmezett kódolás" #: ../src/unix/snglinst.cpp:269 -#, fuzzy, c-format +#, c-format msgid "Deleted stale lock file '%s'." -msgstr "Nem tudom törölni a '%s' INI fájt" +msgstr "A régi '%s' lakat fájt töröltem." -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1067,32 +1071,29 @@ msgstr "" "A tárcsázó funkciók nem használhatók, mert a távoli elérés szolgáltatás " "(RAS) nincs installálva ezen a gépen. Kérem installálja." -#: ../src/os2/toplevel.cpp:329 -#, fuzzy +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" -msgstr "" -"Nem sikerült létrehozni a párbeszéd ablakot. Valószínûleg elfelejtette " -"beépíteni a wx/msw/wx.rc fájlt az erõforrás fájljába." +msgstr "Elfelejtette beépíteni a wx/os2/wx.rc fájlt az erõforrás fájljába?" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Tudta Ön, hogy..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Nem sikerült létrehozni a(z) '%s' könyvtárat" #: ../src/mgl/dirmgl.cpp:217 -#, fuzzy, c-format +#, c-format msgid "Directory '%s' doesn't exist!" -msgstr "A könyvtár nem létezik" +msgstr "A(z) '%s' könyvtár nem létezik!" #: ../src/generic/dirdlgg.cpp:188 msgid "Directory does not exist" msgstr "A könyvtár nem létezik" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1100,22 +1101,28 @@ msgstr "" "Írja ki az összes index bejegyzést, ami tartalmazza az adott bejegyzést. A " "keresés kis/nagy betûre nem érzékeny." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Képernyõ beállítási párbeszédablak" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" +"Akarja, hogy átírjam a fájloknál használt % parancsot (csak \"%s\" " +"kiterjesztés esetén)?\n" +"A jelenlegi érték \n" +"%s, \n" +"Az új érték \n" +"%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Elmentsem a(z) %s dokument változásait?" @@ -1124,14 +1131,13 @@ msgstr "Elmentsem a(z) %s dokument v msgid "Done" msgstr "Kész" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Kész." #: ../src/generic/fdrepdlg.cpp:157 -#, fuzzy msgid "Down" -msgstr "Kész" +msgstr "Le" #: ../src/common/paper.cpp:107 msgid "E sheet, 34 x 44 in" @@ -1145,24 +1151,24 @@ msgstr "Az eltelt id msgid "Entries found" msgstr "A talált bejegyzések" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "" -"A környezeti változók kifejtése nem sikerült: hiányzik '%c' a(z) %d helyen " -"'%s'-ból." +"A környezeti változók kifejtése nem sikerült: hiányzik '%c' a(z) %d helyen '%" +"s'-ból." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Hiba" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Hiba" @@ -1170,16 +1176,15 @@ msgstr "Hiba" msgid "Error creating directory" msgstr "Hiba a könyvtár létrehozásakor" -#: ../src/common/imagbmp.cpp:845 -#, fuzzy +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." -msgstr "TIFF: Hiba a kép olvasásakor." +msgstr "Hiba a DIB kép olvasásakor." #: ../src/common/log.cpp:460 msgid "Error: " msgstr "Hiba: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Eszperantó (ISO-8859-3)" @@ -1187,7 +1192,7 @@ msgstr "Eszperant msgid "Estimated time : " msgstr "A becsült idõ : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Nem sikerült végrehajtani a(z) '%s' parancsot" @@ -1214,38 +1219,42 @@ msgstr "Az er msgid "Expected 'char' whilst parsing resource." msgstr "Az erõforrás fájl feldolgozásakor 'char'-t vártam." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Nem sikerült %s a(z) %s telefonos kapcsolatban" #: ../src/unix/snglinst.cpp:243 msgid "Failed to access lock file." -msgstr "" +msgstr "Nem sikerült elérni a lakat fájlt." -#: ../src/common/filename.cpp:172 -#, fuzzy +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" -msgstr "Nem sikerült lezárni a vágólapot." +msgstr "Nem sikerült lezárni a file kezelõt." #: ../src/unix/snglinst.cpp:308 -#, fuzzy, c-format +#, c-format msgid "Failed to close lock file '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült lezárni a(z) '%s' lakat fájlt." #: ../src/msw/clipbrd.cpp:127 msgid "Failed to close the clipboard." msgstr "Nem sikerült lezárni a vágólapot." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "" "Nem sikerült létrehozni a kapcsolatot: hiányzik a felhasználói név vagy a " "jelszó." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." -msgstr "Nem sikerült létrehozni a kapcsolatot: nincs tárcsázható ISP." +msgstr "" +"Nem sikerült létrehozni a kapcsolatot: nincs tárcsázható szolgáltató (ISPÖ." #: ../src/msw/registry.cpp:597 #, c-format @@ -1256,15 +1265,14 @@ msgstr "Nem siker #, c-format msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "" -"Nem sikerült lemásolni a(z) '%s' registry bejegyzést tartalmát a(z) '%s'-be." +"Nem sikerült lemásolni a(z) '%s' registry kulcs tartalmát a(z) '%s'-be." -#: ../src/common/filefn.cpp:1106 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1117 +#, c-format msgid "Failed to copy the file '%s' to '%s'" -msgstr "" -"Nem sikerült lemásolni a(z) '%s' registry bejegyzést tartalmát a(z) '%s'-be." +msgstr "Nem sikerült lemásolni a(z) '%s' fájlt a(z) '%s'-be." -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Nem sikerült létrehozni a DDE láncot" @@ -1276,65 +1284,75 @@ msgstr "Nem siker msgid "Failed to create a status bar." msgstr "Nem sikerült lérehozni az állapotsort." -#: ../src/common/filename.cpp:717 -#, fuzzy +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" -msgstr "Nem sikerült létrehozni az MDI szülõ keretet." +msgstr "Nem sikerült létrehozni átmeneti fájlnevet." -#: ../src/msw/utilsexc.cpp:195 -#, fuzzy +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" -msgstr "Nem sikerült lérehozni az állapotsort." +msgstr "Nem sikerült lérehozni a névtelen csövet." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "" "Nem sikerült kapcsolatot létrehozni a '%s' kiszolgálóval a '%s' témában" -#: ../src/msw/toplevel.cpp:293 -#, fuzzy +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" -msgstr "Nem sikerült létrehozni a könyvtárat" +msgstr "" +"Nem sikerült létrehozni a párbeszéd ablakot. Hibás lenne a DLGTEMPLATE?" + +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Nem sikerült létrehozni az MDI szülõ keretet." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Nem tudtam létrehozni registry bejegyzést a(z) '%s' fájlokra." #: ../src/generic/dirdlgg.cpp:201 -#, fuzzy, c-format +#, c-format msgid "" "Failed to create directory '%s'\n" "(Do you have the required permissions?)" msgstr "" -"\n" +"Nem sikerült létrehozni a '%s' könyvtárat.\n" "(Rendelkezik a szükséges jogosultsággal?)" #: ../src/msw/mimetype.cpp:168 -#, fuzzy, c-format +#, c-format msgid "Failed to create registry entry for '%s' files." -msgstr "Nem tudtam a(z) '%s' registry kulcsot '%s'-re átnevezni." +msgstr "Nem tudtam létrehozni registry bejegyzést a(z) '%s' fájlokra." #: ../src/msw/fdrepdlg.cpp:442 #, c-format msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" +"Nem sikerült létrehozni a keresés-helyettesítés párbeszéd ablakot (hibakód : " +"%d) " -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Nem sikerült a HTML dokumentumot %s kódolással megjeleníteni" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Nem sikerült kiüríteni a vágólapot." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Nem sikerült létrehozni tanácsadói kapcsolatot a DDE kiszolgálóval" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Nem sikerült létrehozni a telefonos kapcsolatot: %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Nem sikerült végrehajtani '%s'-t\n" @@ -1366,47 +1384,44 @@ msgstr "" "Nem találom a(z) %s XpM erõforrást.\n" "Elfelejtette használni a wxResourceLoadBitmapData-t?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" -msgstr "Nem kaptam meg a(z) %s ISP neveket" +msgstr "Nem kaptam meg a(z) %s ISP(szolgáltató) neveket" -#: ../src/mac/clipbrd.cpp:118 -#, fuzzy +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." -msgstr "Nem tudtam a vágólap adatot beállítani." +msgstr "Nem tudtam a vágólapról adatot kapni." #: ../src/msw/clipbrd.cpp:712 msgid "Failed to get data from the clipboard" msgstr "Nem kaptam a vágólapról adatokat" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Nem kaptam meg az UTC rendszer idõt." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" -msgstr "Nem kaptam meg a helyi rendszer idõt" +msgstr "Nem kaptam meg a helyi rendszer idõt." -#: ../src/common/filefn.cpp:1487 -#, fuzzy +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" -msgstr "Nem sikerült létrehozni a könyvtárat" +msgstr "Nem sikerült létrehozni a munkakönyvtárat." #: ../src/univ/theme.cpp:120 msgid "Failed to initialize GUI: no built-in themes found." -msgstr "" +msgstr "Nem sikerült elindítani a GUIt: nem találtam beépített bõrt." #: ../src/msw/helpchm.cpp:69 msgid "Failed to initialize MS HTML Help." -msgstr "" +msgstr "Nem sikerült elindítani az MS HTML súgót." #: ../src/msw/glcanvas.cpp:729 -#, fuzzy msgid "Failed to initialize OpenGL" -msgstr "Nem tudom inicializálni az OLEt" +msgstr "Nem tudom elindítani az OpenGLt." -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1415,54 +1430,52 @@ msgstr "" "kérem indítsa újra a programot" #: ../src/msw/utils.cpp:721 -#, fuzzy, c-format +#, c-format msgid "Failed to kill process %d" -msgstr "Nem tudtam átirányítani a gyermek processz be/kimenetét" +msgstr "Nem tudtam megölni a '%d' folyamatot." #: ../src/common/iconbndl.cpp:66 -#, fuzzy, c-format +#, c-format msgid "Failed to load image %d from file '%s'." -msgstr "Nem tudtam betölteni a(z) '%s' osztott könyvtárat" +msgstr "Nem tudtam betölteni a(z) %d'képet a '%s' fájlból." -#: ../src/msw/volume.cpp:340 -#, fuzzy +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." -msgstr "Nem tudtam a vágólap adatot beállítani." +msgstr "Nem tudtam betölteni az mpr.dll-t." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" -msgstr "Nem tudtam betölteni a(z) '%s' osztott könyvtárat" +msgstr "Nem tudtam betölteni a(z) '%s' osztott könyvtárat." -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 -#, fuzzy, c-format +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 +#, c-format msgid "Failed to load shared library '%s' Error '%s'" -msgstr "Nem tudtam betölteni a(z) '%s' osztott könyvtárat" +msgstr "Nem tudtam betölteni a(z) '%s' osztott könyvtárat, '%s' hiba miatt." #: ../src/unix/snglinst.cpp:192 -#, fuzzy, c-format +#, c-format msgid "Failed to lock the lock file '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült lelakatolni a(z) '%s' lakat fájlt." #: ../src/common/regex.cpp:251 -#, fuzzy, c-format +#, c-format msgid "Failed to match '%s' in regular expression: %s" -msgstr "Nem sikerült %s a(z) %s telefonos kapcsolatban" +msgstr "Nem sikerült megtalálni '%s'-t a(z) '%s' szabályos kifejezésben." -#: ../src/common/filename.cpp:1644 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1667 +#, c-format msgid "Failed to modify file times for '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült módosítani a(z) idõket '%s'-re." -#: ../src/common/filename.cpp:160 -#, fuzzy, c-format +#: ../src/common/filename.cpp:164 +#, c-format msgid "Failed to open '%s' for %s" -msgstr "Nem tudtam megnyitni a vágólapot." +msgstr "Nem tudtam megnyitni '%s'-t %s-ként." -#: ../src/common/filename.cpp:739 -#, fuzzy +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." -msgstr "Nem tudtam megnyitni a vágólapot." +msgstr "Nem tudtam megnyitni az átmeneti fájlt." #: ../src/msw/clipbrd.cpp:107 msgid "Failed to open the clipboard." @@ -1470,41 +1483,39 @@ msgstr "Nem tudtam megnyitni a v #: ../src/msw/clipbrd.cpp:616 msgid "Failed to put data on the clipboard" -msgstr "Nem tudtam adatokat tenni a vágólapra" +msgstr "Nem tudtam adatokat tenni a vágólapra." #: ../src/unix/snglinst.cpp:252 -#, fuzzy msgid "Failed to read PID from lock file." -msgstr "Nem sikerült létrehozni az MDI szülõ keretet." +msgstr "Nem sikerült elolvasni a PID-t a lakat fájlból." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" -msgstr "Nem tudtam átirányítani a gyermek processz be/kimenetét" +msgstr "Nem tudtam átirányítani a gyermek processz be/kimenetét." -#: ../src/msw/utilsexc.cpp:600 -#, fuzzy +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "Nem tudtam átirányítani a gyermek processz be/kimenetét" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Nem tudtam regisztrálni a(z) '%s' DDE kiszolgálót" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Nem emlékszem a '%s' jelkészlet kódolására." #: ../src/unix/snglinst.cpp:296 -#, fuzzy, c-format +#, c-format msgid "Failed to remove lock file '%s'" -msgstr "nem tudom eltávolítani a(z) '%s' fájlt" +msgstr "Nem tudom eltávolítani a(z) '%s' lakat fájlt." #: ../src/unix/snglinst.cpp:262 -#, fuzzy, c-format +#, c-format msgid "Failed to remove stale lock file '%s'." -msgstr "Nem tudtam a(z) '%s' registry értéket '%s'-re átnevezni." +msgstr "Nem tudtam eltávolítani az elavult '%s' lakat fájlt." #: ../src/msw/registry.cpp:443 #, c-format @@ -1520,38 +1531,37 @@ msgstr "Nem tudtam a(z) '%s' registry kulcsot '%s'-re msgid "Failed to retrieve data from the clipboard." msgstr "Nem tudtam adatot elõvenni a vágólapról." -#: ../src/common/filename.cpp:1710 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1757 +#, c-format msgid "Failed to retrieve file times for '%s'" -msgstr "Nem sikerült értelmezni a RAS hibaüzenet szövegét" +msgstr "Nem sikerült helyrehozni a fájl idõket '%s'-re." -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" -msgstr "Nem sikerült értelmezni a RAS hibaüzenet szövegét" +msgstr "Nem sikerült értelmezni a RAS hibaüzenet szövegét." #: ../src/msw/clipbrd.cpp:742 msgid "Failed to retrieve the supported clipboard formats" -msgstr "Nem tudtam meghatározni a támogatott vágólap formátumokat" +msgstr "Nem tudtam meghatározni a támogatott vágólap formátumokat." -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" -msgstr "Nem sikerült DDE tanácsot küldeni" +msgstr "Nem sikerült DDE tanácsot küldeni." #: ../src/common/ftp.cpp:368 -#, fuzzy, c-format +#, c-format msgid "Failed to set FTP transfer mode to %s." -msgstr "Nem tudtam a(z) %d szál prioritást beállítani." +msgstr "Nem tudtam a(z) '%s' FTP átviteli módot beállítani." #: ../src/msw/clipbrd.cpp:379 msgid "Failed to set clipboard data." msgstr "Nem tudtam a vágólap adatot beállítani." -#: ../src/common/file.cpp:522 -#, fuzzy +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" -msgstr "Nem tudtam a(z) %d szál prioritást beállítani." +msgstr "Nem tudtam az átmeneti fájl engedélyeit beállítani." -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Nem tudtam a(z) %d szál prioritást beállítani." @@ -1561,38 +1571,38 @@ msgstr "Nem tudtam a(z) %d sz msgid "Failed to store image '%s' to memory VFS!" msgstr "Nem tudtam a '%s' képet a VFS memóriába tárolni!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." -msgstr "Nem tudtam lezárni a szálat." +msgstr "Nem tudtam befejezni a szálat." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" -msgstr "Nem tudtam lezárni a tanácskozási ciklust a DDE kiszolgálóval" +msgstr "Nem tudtam befejezni a tanácskozási ciklust a DDE kiszolgálóval." -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" -msgstr "Nem tudtam lezárni a(z) %s telefon kapcsolatot" +msgstr "Nem tudtam befejezni a(z) %s telefon kapcsolatot." -#: ../src/common/filename.cpp:1659 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1682 +#, c-format msgid "Failed to touch the file '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült megérinteni a(z) '%s't." #: ../src/unix/snglinst.cpp:302 -#, fuzzy, c-format +#, c-format msgid "Failed to unlock lock file '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült felnyitni a(z) '%s' lakat fájlt." -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" -msgstr "Nem tudtam a(z) '%s' DDE kiszolgáló regisztrációját megszüntetni" +msgstr "Nem tudtam a(z) '%s' DDE kiszolgáló regisztrációját megszüntetni." #: ../src/unix/snglinst.cpp:173 -#, fuzzy, c-format +#, c-format msgid "Failed to write to lock file '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült írni a(z) '%s' lakat fájlba." #: ../src/generic/logg.cpp:379 msgid "Fatal error" @@ -1602,46 +1612,46 @@ msgstr "V msgid "Fatal error: " msgstr "Végzetes hiba:" -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Végzetes hiba: kilépés" #: ../src/mgl/bitmap.cpp:544 -#, fuzzy, c-format +#, c-format msgid "File %s does not exist." -msgstr ": a file nem létezik!" +msgstr "A(z) '%s' file nem létezik." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "A(z) '%s file már létezik, valóban felül akarja írni?" -#: ../src/msw/filedlg.cpp:505 -#, fuzzy, c-format +#: ../src/msw/filedlg.cpp:518 +#, c-format msgid "" "File '%s' already exists.\n" "Do you want to replace it?" -msgstr "A(z) '%s file már létezik, valóban felül akarja írni?" +msgstr "A(z) '%s file már létezik. Akarja felülírni?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "A fájlt nem tudtam betölteni." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Fájl hiba" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Már van ilyen nevû fájl." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Fájlok (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Keres" @@ -1653,15 +1663,15 @@ msgstr "Nem sk msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 hüvelyk" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Jelkészlet mérete:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "A folyamat elágaztatása nem sikerült" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Elõre" @@ -1671,7 +1681,7 @@ msgstr "El msgid "Found " msgstr "Megtaláltam" -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "%i megfelelõt találtam" @@ -1681,9 +1691,8 @@ msgid "From:" msgstr "Tól:" #: ../src/common/imaggif.cpp:100 -#, fuzzy msgid "GIF: Invalid gif index." -msgstr "Hibás TIFF kép index." +msgstr "GIF: Hibás gif index." #: ../src/common/imaggif.cpp:75 msgid "GIF: data stream seems to be truncated." @@ -1703,7 +1712,7 @@ msgstr "GIF: ismeretlen hiba!!!" #: ../src/univ/themes/gtk.cpp:623 msgid "GTK+ theme" -msgstr "" +msgstr "GTK+ bõr" #: ../src/common/paper.cpp:142 msgid "German Legal Fanfold, 8 1/2 x 13 in" @@ -1715,41 +1724,33 @@ msgstr "N #: ../src/common/image.cpp:762 msgid "GetUnusedColour:: No Unused Color in image " -msgstr "" +msgstr "GetUnusedColour:: nincs nem használt szín a képen " -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Menj vissza" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Menj elõre" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Menj a dokumentum hierarchia eggyel magasabb szintjére" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Menj a saját (hon) könyvtárba" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Menj a szülõ könyvtárba" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" -msgstr "" +msgstr "Meghatározott oldalra" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Görög (ISO-8859-7)" @@ -1758,31 +1759,26 @@ msgstr "G msgid "HTML anchor %s does not exist." msgstr "A(z) %s horgony nem létezik." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"HTML files (*.htm)|*.htm|HTML fájlok (*.html)|*.html|Súgó könyvek " -"(*.htb)|*.htb|Súgó könyvek (*.zip)|*.zip|HTML Súgó Project " -"(*.hhp)|*.hhp|Minden fájl (*.*)|*" +"HTML files (*.htm)|*.htm|HTML fájlok (*.html)|*.html|Súgó könyvek (*.htb)|*." +"htb|Súgó könyvek (*.zip)|*.zip|HTML Súgó Project (*.hhp)|*.hhp|Minden fájl " +"(*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Héber (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Súgó" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Súgó: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Súgó Böngészõ beállítások" @@ -1790,7 +1786,7 @@ msgstr "S msgid "Help Index" msgstr "Súgó tartalomjegyzék" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Súgó nyomtatás" @@ -1799,51 +1795,44 @@ msgstr "S msgid "Help: %s" msgstr "Súgó: %s" -#: ../src/common/imagbmp.cpp:858 -#, fuzzy +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." -msgstr "TIFF: Hiba a kép olvasásakor." +msgstr "ICO: Hiba a DIB maszk olvasásakor." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 -#, fuzzy +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" -msgstr "TIFF: Hiba a kép írásakor." +msgstr "ICO: Hiba a kép írásakor!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." -msgstr "" +msgstr "ICO: A kép túl magas az ikon számára." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." -msgstr "" +msgstr "ICO: A kép túl széles az ikon számára." -#: ../src/common/imagbmp.cpp:1167 -#, fuzzy +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." -msgstr "Hibás TIFF kép index." +msgstr "ICO: Hibás icon index." #: ../src/common/imagiff.cpp:767 -#, fuzzy msgid "IFF: data stream seems to be truncated." -msgstr "GIF: az adatfolyam csonkítottnak tûnik." +msgstr "IFF: az adatfolyam csonkítottnak tûnik." #: ../src/common/imagiff.cpp:751 -#, fuzzy msgid "IFF: error in IFF image format." -msgstr "GIF: hiba a GIF képformátumban." +msgstr "IFF: hiba a GIFF képformátumban." #: ../src/common/imagiff.cpp:754 -#, fuzzy msgid "IFF: not enough memory." -msgstr "GIF: nincs elég tároló." +msgstr "IFF: nincs elég tároló." #: ../src/common/imagiff.cpp:757 -#, fuzzy msgid "IFF: unknown error!!!" -msgstr "GIF: ismeretlen hiba!!!" +msgstr "IFF: ismeretlen hiba!!!" #: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 #: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 @@ -1855,24 +1844,24 @@ msgstr "Nem tal msgid "Ill-formed resource file syntax." msgstr "Nyelvtani hibás erõforrás fájl." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Hibás könyvtár név." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Hibás fájl meghatározás." #: ../src/common/image.cpp:785 msgid "Image and Mask have different sizes" -msgstr "" +msgstr "A kép és a maszk mérete különbözõ" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." -msgstr "" +msgstr "A kép nem %d típusú." -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1882,28 +1871,28 @@ msgstr "" #: ../src/unix/utilsunx.cpp:390 msgid "Impossible to get child process input" -msgstr "Nem kapom meg a gyermek processz bemenetét" +msgstr "Nem kapom meg a gyermek processz bemenetét." -#: ../src/common/filefn.cpp:1122 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1133 +#, c-format msgid "Impossible to get permissions for file '%s'" -msgstr "Nem kapom meg a gyermek processz bemenetét" +msgstr "Nem kapom meg a '%s' fájl engedélyeit." -#: ../src/common/filefn.cpp:1136 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1147 +#, c-format msgid "Impossible to overwrite the file '%s'" -msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" +msgstr "Nem sikerült felülírni ni a(z) '%s' fájlt." -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" -msgstr "" +msgstr "Nem lehet beállítani a '%s' fájl engedélyeit." -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" -msgstr "Tartalomjegyzék" +msgstr "Tartalom mutató" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Indiai (ISO-8859-12)" @@ -1911,32 +1900,32 @@ msgstr "Indiai (ISO-8859-12)" msgid "Invalid TIFF image index." msgstr "Hibás TIFF kép index." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." -msgstr "" +msgstr "Érvénytelen '%s' erõforrás: nincs 'resource' csomópont." -#: ../src/common/appcmn.cpp:378 -#, fuzzy, c-format +#: ../src/common/appcmn.cpp:399 +#, c-format msgid "Invalid display mode specification '%s'." -msgstr "Hibás fájl meghatározás." +msgstr "Hibás megjelenítési mód meghatározás: '%s'." -#: ../src/x11/app.cpp:231 -#, fuzzy, c-format +#: ../src/x11/app.cpp:218 +#, c-format msgid "Invalid geometry specification '%s'" -msgstr "Hibás fájl meghatározás." +msgstr "Hibás geometriai meghatározás: '%s'." #: ../src/unix/snglinst.cpp:280 -#, fuzzy, c-format +#, c-format msgid "Invalid lock file '%s'." -msgstr "nem tudom lezárni a(z) '%s' fájlt." +msgstr "Hibás a(z) '%s' lakat fájl." #: ../src/common/regex.cpp:173 #, c-format msgid "Invalid regular expression '%s': %s" -msgstr "" +msgstr "Hibás szabályos kifejezés '%s': %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Dõlt" @@ -1952,13 +1941,13 @@ msgstr "JPEG: nem tudtam bet msgid "JPEG: Couldn't save image." msgstr "JPEG: Nem tudtam elmenteni a képet." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" #: ../src/generic/prntdlgg.cpp:426 ../src/generic/prntdlgg.cpp:620 msgid "Landscape" -msgstr "Fekvõ" +msgstr "Tájkép" #: ../src/common/paper.cpp:110 msgid "Ledger, 17 x 11 in" @@ -1980,20 +1969,19 @@ msgstr "Kism msgid "Letter, 8 1/2 x 11 in" msgstr "Levél, 8 1/2 x 11 hüvelyk" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Vékony" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "A(z) %s fájl betöltése" -#: ../src/generic/filedlgg.cpp:1589 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" -msgstr "A(z) %s fájl betöltése" +msgstr "Fájl betöltése" #: ../src/html/htmlwin.cpp:282 msgid "Loading : " @@ -2017,26 +2005,25 @@ msgid "MDI child" msgstr "MDI gyermek" #: ../src/msw/helpchm.cpp:60 -#, fuzzy msgid "" "MS HTML Help functions are unavailable because the MS HTML Help library is " "not installed on this machine. Please install it." msgstr "" -"A tárcsázó funkciók nem használhatók, mert a távoli elérés szolgáltatás " -"(RAS) nincs installálva ezen a gépen. Kérem installálja." +"A MS HTML funkciók nem használhatók, mert a MS HTML Help könyvtár nincs " +"installálva ezen a gépen. Kérem installálja." #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" -msgstr "" +msgstr "Ma&ximalizál" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." -msgstr "Mailcap fájl %s, %d. sor: elhanyagoltam a hiányos elemet." +msgstr "Mailcap fájl %s, %d. sor: elhanyagoltam a hiányos bejegyzést." #: ../src/generic/fdrepdlg.cpp:152 msgid "Match case" -msgstr "" +msgstr "Kis/nagybetû megkülönböztetés" #: ../src/common/fs_mem.cpp:144 #, c-format @@ -2045,13 +2032,13 @@ msgstr "A VFS mem #: ../src/univ/themes/metal.cpp:174 msgid "Metal theme" -msgstr "" +msgstr "Fém bõr" #: ../src/univ/themes/win32.cpp:4543 msgid "Mi&nimize" -msgstr "" +msgstr "Mi&nimalizál" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "%s mime-típusú fájl, %d. sor: befejezetlen idézõjeles szöveg." @@ -2059,9 +2046,9 @@ msgstr "%s mime-t #: ../src/mgl/app.cpp:173 #, c-format msgid "Mode %ix%i-%i not available." -msgstr "" +msgstr "A %ix%i-%i mód nem létezik." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2069,31 +2056,31 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Birodalmi boríték, 3 7/8 x 7 1/2 hüvelyk" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Még..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Név" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "ÚjNév" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Következõ oldal" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Nem" #: ../src/common/image.cpp:793 msgid "No Unused Color in image being masked" -msgstr "" +msgstr "A képben nincs maszkolva nem használt szín " #: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 #: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 @@ -2108,7 +2095,7 @@ msgstr "Nincs XPM ikon felhaszn msgid "No entries found." msgstr "Nem találtam elemet." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2116,52 +2103,54 @@ msgid "" "Do you want to use this encoding (otherwise you will have to choose another " "one)?" msgstr "" +"Nem találtam jelkészletet a(z) '%s' kódoláshoz,\n" +"de a vagylagos '%s' kódolás elérhetõ.\n" +"Akarja használni ezt a kódolást (egyébként másikat kell választania)?" -#: ../src/common/fontmap.cpp:870 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:911 +#, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" "Would you like to select a font to be used for this encoding\n" "(otherwise the text in this encoding will not be shown correctly)?" msgstr "" -"A(z) '%s' kódolás ismeretlen.\n" +"Nem találtam jelkészletet a(z) '%s' kódoláshoz.\n" "Szeretne választani egy jelkészletet ehhez a kódoláshoz\n" -"(Különben az e kódolással készített szöveg nem jelezhetõ ki helyesen)?" +"(különben az e kódolással készített szöveg nem jelezhetõ ki helyesen)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" -msgstr "" +msgstr "A '%s', class '%s' XML csomóponthoz nem találtam meghajtót!" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Ilyen típusú képhez nem találtam kezelõt." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "%d típusú képhez nincs kezelõ meghatározva." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "%s típusú képhez nincs kezelõ meghatározva." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Még nem találtam egy megfelelõ oldalt" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Északi (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normál" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normál jelkészlet:" @@ -2169,35 +2158,35 @@ msgstr "Norm msgid "Note, 8 1/2 x 11 in" msgstr "Feljegyzés, 8 1/2 x 11 hüvelyk" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "Igen" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Nyisd meg a HTML dokumentumot" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Ez a mûvelet nincs megengedve." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "A(z) '%s' beállítás egy értéket kér, '='-et vártam." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "A(z) '%s' beállítás egy értéket kér." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "A(z) '%s' beállítása: '%s' nem alakítható át dátummá." @@ -2246,12 +2235,12 @@ msgstr "PNM: Azonos msgid "PNM: File seems truncated." msgstr "PNM: A fájl csonkítottnak tûnik." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "%d. oldal" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "%d. oldal (%d-bõl)" @@ -2274,11 +2263,11 @@ msgstr "Pap msgid "Paper size" msgstr "Papír méret" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Jogosultságok" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "A csõ létrehozása nem sikerült" @@ -2286,25 +2275,28 @@ msgstr "A cs msgid "Please choose a valid font." msgstr "Kérem válasszon egy érvényes jelkészletet." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Kérem válasszon egy létezõ fájlt." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" -msgstr "Kérem válassza ki, melyik ISP-hez akar kapcsolódni" +msgstr "Kérem válassza ki, melyik szolgáltatóhoz(ISP) akar kapcsolódni." -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" "(at least version 4.70 is required but you have %d.%02d)\n" "or this program won't operate correctly." msgstr "" +"Kérem installálja a comctl32.dll újabb verzióját\n" +"(legalább a 4.70 kellene, de Önnek a %d.%02d van)\n" +"vagy ez a program nem mûködik megfelelõen." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" -msgstr "" +msgstr "Kérem várjon amíg nyomtatok\n" #: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 msgid "Portrait" @@ -2314,15 +2306,11 @@ msgstr " msgid "PostScript file" msgstr "PostScript fájl" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Elõkép:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Elõzõ oldal" @@ -2330,11 +2318,11 @@ msgstr "El msgid "Print" msgstr "Nyomtatás" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Nyomtatási kép" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Nyomtatási kép hiba" @@ -2354,15 +2342,15 @@ msgstr "Sz msgid "Print spooling" msgstr "Nyomtatás sorbaállítással" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" -msgstr "Nyomtatsd ezt az oldalt" +msgstr "Nyomtasd ezt az oldalt" #: ../src/generic/prntdlgg.cpp:147 msgid "Print to File" msgstr "Nyomtatás fájlba" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Nyomtatás..." @@ -2382,21 +2370,20 @@ msgstr "Nyomtat msgid "Printer..." msgstr "Nyomtató..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 -#, fuzzy +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "Nyomtatás" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Nyomtatási hiba" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "A(z) %d. oldalt nyomtatom..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Nyomtatás..." @@ -2417,10 +2404,10 @@ msgstr "K msgid "Read error on file '%s'" msgstr "Olvasási hiba a(z) '%s' fájlban" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" -msgstr "" +msgstr "A ref=\"%s\" számmal hivatkozott objektum csomópontot nem találom!" #: ../src/msw/registry.cpp:535 #, c-format @@ -2448,10 +2435,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Már létezik a(z) '%s' registry érték." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "A megfelelõ tagok:" @@ -2460,96 +2443,81 @@ msgstr "A megfelel msgid "Remaining time : " msgstr "A hátralevõ idõ : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Töröld ezt az oldalt a könyvjelzõk közül" #: ../src/generic/fdrepdlg.cpp:177 -#, fuzzy msgid "Replace &all" -msgstr "Helyettesítsem a(z) '%s' fájlt?" +msgstr "Helyettesítsem &mindet" #: ../src/generic/fdrepdlg.cpp:129 msgid "Replace with:" -msgstr "" +msgstr "Helyette:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" -msgstr "" +msgstr "Az erõforrás fájloknak azonos verziószámúaknak kell lenniük!" #: ../src/generic/prntdlgg.cpp:644 msgid "Right margin (mm):" msgstr "Jobb margó (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "A(z) %s fájl elmentése" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Mentés másként" -#: ../src/generic/filedlgg.cpp:1604 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" -msgstr "A(z) %s fájl elmentése" +msgstr "Fájl elmentése" #: ../src/generic/logg.cpp:487 msgid "Save log contents to file" msgstr "Mentsd a napló tartalmát fájlba" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Keresés" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" msgstr "" -"Keresd meg a fentebb beírt szöveg valamennyi elõfordulását a súgó " -"könyv(ek)ben" +"Keresd meg a fentebb beírt szöveg valamennyi elõfordulását a súgó könyv(ek)" +"ben" #: ../src/generic/fdrepdlg.cpp:158 -#, fuzzy msgid "Search direction" -msgstr "Hozzon létre könyvtárat" +msgstr "Keresési irány" #: ../src/generic/fdrepdlg.cpp:117 -#, fuzzy msgid "Search for:" -msgstr "Keresés" +msgstr "Keresés:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Keresés az összes könyvben" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Keresés" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Keresek..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Szakaszok" @@ -2558,24 +2526,29 @@ msgstr "Szakaszok" msgid "Seek error on file '%s'" msgstr "Keresési hiba a(z) '%s' fájlban" -#: ../src/common/docview.cpp:1538 -msgid "Select a document template" -msgstr "Válasszon dokumentum template-et" +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Válasszon fájlt" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1540 +msgid "Select a document template" +msgstr "Válasszon dokumentum mintát" + +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Válasszon dokumentum nézetet" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Válasszon fájlt" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "A(z) '%s' választási lehetõség után elválasztó jelet vártam." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Beállítás" @@ -2583,55 +2556,54 @@ msgstr "Be msgid "Setup..." msgstr "Beállítás..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" "Több aktív telefonkapcsolatot találtam, az egyiket véletlenszerûen " "kiválasztom." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Mutatsd mindet" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" -msgstr "Mutatsd meg a tartalomjegyzék valamennyi elemét" +msgstr "Mutasd meg a tartalom mutató valamennyi elemét" #: ../src/generic/dirdlgg.cpp:135 -#, fuzzy msgid "Show hidden directories" -msgstr "Mutatsd meg a rejtett fájlokat" +msgstr "Mutasd meg a rejtett könyvtárokat" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" -msgstr "Mutatsd meg a rejtett fájlokat" +msgstr "Mutasd meg a rejtett fájlokat" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Bemutatja/elrejti az irányító elemeket" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Méret" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" -msgstr "Dõlt" +msgstr "Ferde" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Sajnálom, nem tudtam megnyitni a fájlt mentésre." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Sajnálom, nem tudtam megnyitni ezt a fájlt." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Sajnálom, nem tudtam elmenteni ezt a fájlt." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Sajnálom, nincs elég memória az elõkép létrehozásához." @@ -2643,12 +2615,13 @@ msgstr "Bejelent msgid "Status: " msgstr "Állapot: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" +"A(z) '%s' alosztályt nem találtama(z) '%s' erõforráshoz, nem tudom használni!" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Svájci" @@ -2677,23 +2650,23 @@ msgstr "TIFF: Hiba a k msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 hüvelyk" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Minták" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" #: ../src/common/ftp.cpp:569 msgid "The FTP server doesn't support passive mode." -msgstr "" +msgstr "Az FTP kiszolgáló nem támogatja a passzív módot." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2704,36 +2677,35 @@ msgstr "" "készletet ennek helyettesítésére vagy\n" "[Mégsem]-t ha nem helyettesíthetõ" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "A(z) '%d' vágólap formátum nem létezik." #: ../src/generic/dirdlgg.cpp:186 -#, fuzzy, c-format +#, c-format msgid "" "The directory '%s' does not exist\n" "Create it now?" msgstr "" -"\n" -"nem létezik\n" +"A '%s' könyvtár nem létezik.\n" "Létrehozzam most?" -#: ../src/common/docview.cpp:1802 -#, fuzzy, c-format +#: ../src/common/docview.cpp:1804 +#, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." msgstr "" "A(z) '%s' fájl nem létezik és nem nyitható meg.\n" -"Az MRU fájlok listájáról is el van távolítva." +"A legutóbb használt fájlok listájáról is el van távolítva." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" -msgstr "" +msgstr "A(z) '%s' útvonal túl sok \"..\"-t tartalmaz!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "A szükséges '%s' paraméter nincs megadva." @@ -2742,12 +2714,12 @@ msgstr "A sz msgid "The text couldn't be saved." msgstr "A szöveget nem tudom elmenteni." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "A(z) '%s' beállítás értékét meg kell adni." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2756,10 +2728,12 @@ msgstr "" "Az ezen a gépre installált távoli hozzáférési lehetõség (RAS) túl régi, " "kérem frissítsen (A(z) %s szükséges funkció hiányzik)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" +"Az oldal beállításakor hiba történt: lehet hogy az alapértelmezett nyomtatót " +"kellene beállítania." #: ../src/msw/thread.cpp:1214 msgid "" @@ -2769,7 +2743,7 @@ msgstr "" "A szál modul inicializálása nem sikerült: nem tudok értéket tárolni a szál " "helyi tárolójába" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" "A szál modul inicializálása nem sikerült: nem sikerült a szálhoz kulcsot " @@ -2783,27 +2757,27 @@ msgstr "" "A szál modul inicializálása nem sikerült: nem lehet indexet foglalni a szál " "helyi tárolájában" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "A szál prioritás beállítását elhanyagoltam." #: ../src/msw/mdi.cpp:189 msgid "Tile &Horizontally" -msgstr "" +msgstr "Csempék &Vízszintesen" #: ../src/msw/mdi.cpp:190 msgid "Tile &Vertically" -msgstr "" +msgstr "Csempék &Függõlegesen" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Idõ" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "A Nap Tippje" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Nincsenek tippek, sajnálom!" @@ -2825,7 +2799,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "Megpróbáltam feloldani a NULL gazdagép nevet: feladom" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Török (ISO-8859-9)" @@ -2836,9 +2810,9 @@ msgstr "USA standard leporell #: ../src/html/htmlwin.cpp:270 #, c-format msgid "Unable to open requested HTML document: %s" -msgstr "Nem tudom megnyitni a(z) %s HTML dokumentumot" +msgstr "Nem tudom megnyitni a kért %s HTML dokumentumot." -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Aláhúzás" @@ -2855,47 +2829,47 @@ msgstr "Al msgid "Unexpected end of file whilst parsing resource." msgstr "Váratlan fájl vége az erõforrás fájl értelmezése során." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Váratlan '%s' paraméter" -#: ../src/common/fontmap.cpp:141 -msgid "Unicode 7 bit (UTF-7)" -msgstr "" - #: ../src/common/fontmap.cpp:142 -msgid "Unicode 8 bit (UTF-8)" -msgstr "" +msgid "Unicode 7 bit (UTF-7)" +msgstr "Unicode 7 bit (UTF-7)" -#: ../src/msw/dde.cpp:1020 +#: ../src/common/fontmap.cpp:143 +msgid "Unicode 8 bit (UTF-8)" +msgstr "Unicode 8 bit (UTF-8)" + +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Ismeretlen DDE hiba %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Ismeretlen (%d) kódolás" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "A(z) %s fájl %d-edik sorában: '%s' ismeretlen mezõ." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Ismeretlen hosszú opció '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Ismeretlen opció '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " -msgstr "" +msgstr "Ismererlen stílus jel" #: ../src/common/mimecmn.cpp:167 #, c-format @@ -2912,21 +2886,21 @@ msgstr "N msgid "Unrecognized style %s whilst parsing resource." msgstr "Ismeretlen %s stílust találtam az erõforrás értelmezésekor." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Nem támogatott vágólap formátum." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." -msgstr "" +msgstr "A(z) '%s' bõr nem támogatott." #: ../src/generic/fdrepdlg.cpp:157 msgid "Up" -msgstr "" +msgstr "Fel" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Használat: %s" @@ -2935,23 +2909,23 @@ msgstr "Haszn msgid "Validation conflict" msgstr "Érvényességi ütközés" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "A fájlok bemutatása részletezve" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "A fájlok bemutatása lista szerûen" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Nézetek" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Nem sikerült megvárni az alprocessz befejezõdését" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Figyelmeztetés" @@ -2959,99 +2933,94 @@ msgstr "Figyelmeztet msgid "Warning: " msgstr "Figyelmeztetés: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" -"Figyeleztetés: üres veremtárolóból próbál eltávolítani HTML összetevõt." +"Figyeleztetés: üres veremtárolóból próbál eltávolítani HTML kifejezés " +"kezelõt." -#: ../src/common/fontmap.cpp:112 -#, fuzzy +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" -msgstr "Nyugat-európai (ISO-8859-1/Latin 1)" +msgstr "Nyugat-európai (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 -#, fuzzy +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" -msgstr "Nyugat-európai Euro-val (ISO-8859-15/Latin 0)" +msgstr "Nyugat-európai Euro-val (ISO-8859-15)" #: ../src/generic/fdrepdlg.cpp:149 -#, fuzzy msgid "Whole word" -msgstr "Csak egész szavak" +msgstr "Egész szó" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Csak egész szavak" #: ../src/univ/themes/win32.cpp:1168 msgid "Win32 theme" -msgstr "" +msgstr "Win32 bõr" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s a Windows 3.1-en" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arab (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Balti (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows Közép-európai (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" -msgstr "" +msgstr "Windows egyszerûsített kínai (CP 936)" -#: ../src/common/fontmap.cpp:131 -#, fuzzy +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" -msgstr "Windows Nyugat-európai (CP 1252)" +msgstr "Windows hagyományos kínai (CP 950)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Orosz (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Görög (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Héber (CP 1255)" -#: ../src/common/fontmap.cpp:128 -#, fuzzy +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" -msgstr "Windows Görög (CP 1253)" +msgstr "Windows japán (CP 932)" -#: ../src/common/fontmap.cpp:130 -#, fuzzy +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" -msgstr "Windows Görög (CP 1253)" +msgstr "Windows koreai (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Török (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows Nyugat-európai (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3063,37 +3032,33 @@ msgstr "Ir #: ../contrib/src/xrc/xml.cpp:530 #, c-format msgid "XML parsing error: '%s' at line %d" -msgstr "" +msgstr "XML értelmezési hiba: '%s' a(z) %d sorban" #: ../src/common/xpmdecod.cpp:759 msgid "XPM: Malformed pixel data!" -msgstr "" +msgstr "XPM: Hiányos pixel adat!" #: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 #, c-format msgid "XPM: malformed colour definition '%s'!" -msgstr "" +msgstr "XPM: hiányos szín meghatározás '%s'!" -#: ../contrib/src/xrc/xmlres.cpp:436 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:470 +#, c-format msgid "XRC resource '%s' (class '%s') not found!" -msgstr "Nem találom a(z) %s ikon erõforrás meghatározását." +msgstr "Nem találom a(z) '%s' XRC erõforrást ('%s' osztály)." -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." -msgstr "" +msgstr "XRC erõforrás: Nem tudom létrehozni a(z) '%s'-bõl a bittérképet." -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." -msgstr "" +msgstr "XRC erõforrás: Helytelen szín meghatározás '%s' a '%s' tulajdonságnál." -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Igen" @@ -3102,19 +3067,19 @@ msgstr "Igen" msgid "You cannot add a new directory to this section." msgstr "Nem tud könyvtárat hozzáadni ehhez a szakaszhoz." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" -msgstr "" +msgstr "A ZIP kezelõ jelenleg csak helyi fájlokat támogat!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[ÜRES]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "a DDEML alkalmazás meghosszabított versenyhelyzetet teremtett." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3126,40 +3091,40 @@ msgstr "" "vagy érvénytelen instance azonosítót \n" "adott át a DDEML függvénynek." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "nem sikerült az ügyfél próbálkozása a párbeszéd létrehozására." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "a memória lefoglalása nem sikerült." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "a paramétert nem sikerült érvényesíttetni a DDEML-lel." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "a szinkron tanácskérési tranzakció nem fejezõdött be idõre." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "a szinkron adatkérési tranzakció nem fejezõdött be idõre." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "a szinkron végrehajtás kérési tranzakció nem fejezõdött be idõre." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "a szinkron adatlerakás kérési tranzakció nem fejezõdött be idõre." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" "a tanácskozási tranzakció befejezésének kérése nem fejezõdött be idõre." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3169,7 +3134,7 @@ msgstr "" "amelyiket az ügyfél már befejezett, vagy a kiszolgáló\n" "a tranzakció befejezése elõtt kilépett." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "sikertelen tranzakció." @@ -3177,7 +3142,7 @@ msgstr "sikertelen tranzakci msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3189,15 +3154,15 @@ msgstr "" "vagy APPCMD_CLIENTONLY-ként inicializált alkalmazás\n" "próbált meg kiszolgáló tranzakciót végezni." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "egy belsõ PostMessage függvényhívás nem sikerült. " -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "belsõ hiba történt a DDEML-ben." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3207,7 +3172,7 @@ msgstr "" "Ha az alkalmazás visszatért egy XTYP_XACT_COMPLETE visszahívásból,\n" "a tranzakció azonosítója erre a hívásra már nem érvényes." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "" @@ -3216,51 +3181,49 @@ msgstr "" #: ../src/common/ftp.cpp:369 msgid "binary" -msgstr "" +msgstr "bináris" -#: ../src/common/fontcmn.cpp:518 -#, fuzzy +#: ../src/common/fontcmn.cpp:521 msgid "bold" -msgstr "Félkövér" +msgstr "félkövér" -#: ../src/common/fontcmn.cpp:442 -#, fuzzy +#: ../src/common/fontcmn.cpp:445 msgid "bold " -msgstr "Félkövér" +msgstr "félkövér" #: ../src/common/ffile.cpp:93 #, c-format msgid "can't close file '%s'" msgstr "nem tudom lezárni a(z) '%s' fájlt." -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "nem tudom lezárni a(z) %d fájl leírót" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "nem tudom érvényre juttatni a(z) '%s' fájl változásait" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "nem tudom létrehozni a(z) '%s' fájl-t" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "nem tudom törölni a(z) '%s' felhasználói konfigurációs fájlt" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "nem tudom meghatározni, hogy a fájl végét értük-e el a(z) %d leíróval " "megadott fájlban" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "" @@ -3272,70 +3235,70 @@ msgstr "" "nem tudom meghatározni a felhasználó saját könyvtárát, a jelenlegit " "használom tovább." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "nem tudom kiüríteni a(z) %d leíróval megadott fájl pufferét" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "nem találom a keresési pozíciót a(z) %d leíróval megadott fájlban" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "egyetlen jelkészletet sem tudok betölteni, kilépek" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "nem tudom megnyitni a(z) '%s' fájlt" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "nem tudom megnyitni a(z) '%s' globális konfigurációs fájlt." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "nem tudom megnyitni a(z) '%s' felhasználói konfigurációs fájlt." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "nem tudom megnyitni a felhasználó konfigurációs fájlját." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "nem tudok olvasni a(z) %d leíróval megadott fájból" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "nem tudom eltávolítani a(z) '%s' fájlt" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "nem tudom eltávolítani a(z) '%s' átmeneti fájlt" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "nem tudok keresni a(z) %d leíróval megadott fájlban" #: ../src/common/textfile.cpp:196 -#, fuzzy, c-format +#, c-format msgid "can't write buffer '%s' to disk." -msgstr "nem tudom a mágneslemezre írni a(z) '%s' fájlt." +msgstr "nem tudom a mágneslemezre írni a(z) '%s' puffert." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "nem tudok írni a(z) %d leíróval megadott fájba" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "nem tudom írni a felhasználó konfigurációs fájlját." @@ -3348,33 +3311,32 @@ msgstr "a(z) '%s' dom msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "dátum" -#: ../src/common/fontmap.cpp:413 -#, fuzzy +#: ../src/common/fontmap.cpp:416 msgid "default" -msgstr "alt" +msgstr "alapértelmezés" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "tizennyolcadik" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "nyolcadik" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "tizenegyedik" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "a(z) '%s' elem egynél többször jelenik meg a(z) '%s' csoportban" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "megalapoz" @@ -3383,66 +3345,71 @@ msgstr "megalapoz" msgid "failed to flush the file '%s'" msgstr "nem sikerült kiüríteni a(z) '%s' fájl pufferét" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "tizenötödik" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "ötödik" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "'%s' fájl, %d. sor: '%s' -t elhanyagoltam a csoport fejléce után." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "'%s' fájl, %d. sor: '=' -t vártam." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "" "'%s' fájl, %d. sor: a(z) '%s' kulcsot elõször a(z) %d sorban találtam meg." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "" "file '%s', line %d: a változtathatatlan '%s' kulcs új értékét elhanyagoltam." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "'%s' fájl: a(z) %c nem várt jel a(z) %d sorban." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "elsõ" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "tizennegyedik" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "negyedik" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" -msgstr "" +msgstr "készíts bõbeszédû naplóbejegyzéseket " -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "nem sikerült a gmtime()" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "kezdeményez" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "érvénytelen eof() visszatérési érték." @@ -3450,24 +3417,17 @@ msgstr " msgid "invalid message box return value" msgstr "érvénytelen üzenet ablak visszatérési érték" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 -#, fuzzy +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" -msgstr "Dõlt" +msgstr "dõlt" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "nagy" - -#: ../src/common/fontcmn.cpp:514 -#, fuzzy +#: ../src/common/fontcmn.cpp:517 msgid "light" -msgstr "Vékony" +msgstr "vékony" -#: ../src/common/fontcmn.cpp:438 -#, fuzzy +#: ../src/common/fontcmn.cpp:441 msgid "light " -msgstr "Vékony" +msgstr "vékony" #: ../src/common/intl.cpp:615 #, c-format @@ -3479,59 +3439,55 @@ msgstr "A(z) '%s' helyi v msgid "looking for catalog '%s' in path '%s'." msgstr "keresem a(z) '%s' katalógust a(z) '%s' elérési úton." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "közepes" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "éjfél" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() nem sikerült" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "tizenkilencedik" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "kilencedik" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "nincs DDE hiba." -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "névtelen" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "dél" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" -msgstr "" +msgstr "olvasok" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "újrabelépési probléma." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "második" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "tizenhetedik" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "hetedik" @@ -3539,96 +3495,94 @@ msgstr "hetedik" msgid "shift" msgstr "eltol" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" -msgstr "" +msgstr "mutassa meg ezt az üzenetet a súgóban" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "tizenhatodik" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "hatodik" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "kicsi" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" -msgstr "" +msgstr "jelölje ki a használandó megjelenítési módot (pl.. 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" -msgstr "" +msgstr "jelölje ki a használandó bõrt" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "tizedik" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "a tranzakció eredményeként a DDE_FBUSY bit beállítódott." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "harmadik" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "tizenharmadik" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "ma" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "holnap" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "tizenkettedik" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "huszadik" -#: ../src/common/fontcmn.cpp:510 -#, fuzzy +#: ../src/common/fontcmn.cpp:513 msgid "underlined" -msgstr "Aláhúzás" +msgstr "aláhúzott" -#: ../src/common/fontcmn.cpp:425 -#, fuzzy +#: ../src/common/fontcmn.cpp:428 msgid "underlined " -msgstr "Aláhúzás" +msgstr "aláhúzott" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "váratlan \" a(z) %d pozícióban, a(z) '%s' fájlban." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "ismeretlen" #: ../src/common/regex.cpp:144 -#, fuzzy msgid "unknown error" -msgstr "GIF: ismeretlen hiba!!!" +msgstr "ismeretlen hiba" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "ismeretlen hiba (hiba kód %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "ismeretlen hiba" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "ismeretlen keresési kezdõpont" @@ -3637,11 +3591,11 @@ msgstr "ismeretlen keres msgid "unknown-%d" msgstr "ismeretlen-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "névtelen" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "névtelen%d" @@ -3651,210 +3605,97 @@ msgstr "n msgid "using catalog '%s' from '%s'." msgstr "a(z) '%s' katalógust használom (a(z) '%s' közül)." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "nagyon nagy" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "nagyon kicsi" - -#: ../src/common/filename.cpp:162 -#, fuzzy +#: ../src/common/filename.cpp:166 msgid "writing" -msgstr "Nyomtatás" +msgstr "kiírás" #: ../src/common/dynlib.cpp:336 #, c-format msgid "wxDllLoader failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDllLoader-ben GetSymbol nem találta '%s'-t" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDynamicLibrary-ben GetSymbol nem találta '%s'-t" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay hibát eredményezett." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: érvénytelen aláírás ReadMsg-ben." #: ../src/common/socket.cpp:975 msgid "wxSocket: unknown event!." -msgstr "wxSocket: ismeretlen esemény!." +msgstr "wxSocket: ismeretlen esemény." -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "a wxWindows nem tudott képernyõt nyitni '%s' számára: kilépés." -#: ../src/x11/app.cpp:265 -#, fuzzy +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." -msgstr "a wxWindows nem tudott képernyõt nyitni '%s' számára: kilépés." +msgstr "A wxWindows nem tudott képernyõt nyitni. Kilépés." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "tegnap" -#, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Minden fájlt (*)|*" +#~ msgid " bytes " +#~ msgstr " bájt(ok)" -#~ msgid "Can not create mutex" -#~ msgstr "Nem tudom létrehozni a mutexet" +#~ msgid "

    " +#~ msgstr " " -#~ msgid "Can't create the inter-process read pipe" -#~ msgstr "Nem tudom létrehozni a processek közötti csövet olvasásra" +#~ msgid " " +#~ msgstr " " -#~ msgid "Can't create the inter-process write pipe" -#~ msgstr "Nem tudom létrehozni a processek közötti csövet írásra" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "DIB fej: 4bit kódolással még nem tudok dolgozni." -#~ msgid "Couldn't acquire a mutex lock" -#~ msgstr "Nem kapok mutex lezárást" +#~ msgid "Go back to the previous HTML page" +#~ msgstr "Vissza az elõzõ HTML oldalra" -#~ msgid "Couldn't release a mutex" -#~ msgstr "Nem tudtam elengedni a mutex-et" +#~ msgid "Go forward to the next HTML page" +#~ msgstr "Menj elõre a következõ HTML oldalra" -#~ msgid "Font" -#~ msgstr "Jelkészlet" +#~ msgid "Help : %s" +#~ msgstr "Súgó: %s" -#~ msgid "PostScript" -#~ msgstr "PostScript" +#~ msgid "Preparing help window..." +#~ msgstr "Elõkészítem a súgó ablakot..." -#~ msgid "PostScript:" -#~ msgstr "PostScript:" +#~ msgid "ReleaseMutex()" +#~ msgstr "ReleaseMutex()" -#~ msgid "Preview Only" -#~ msgstr "Csak elõkép" +#~ msgid "Screenshot captured: " +#~ msgstr "Az ernyõképet elmentettem: " -#~ msgid "Printer Command: " -#~ msgstr "Nyomtató parancs: " +#~ msgid "Search!" +#~ msgstr "Keress!" -#~ msgid "Printer Options: " -#~ msgstr "Nyomtató lehetõségek: " - -#~ msgid "Printer Settings" -#~ msgstr "Nyomtató beállítások" - -#~ msgid "Send to Printer" -#~ msgstr "Küldd a nyomtatóra" - -#, fuzzy -#~ msgid "SetPixelFormat failed." -#~ msgstr "A csõ létrehozása nem sikerült" - -#~ msgid "X Scaling" -#~ msgstr "X skálázás" - -#~ msgid "X Translation" -#~ msgstr "X eltolás" - -#~ msgid "Y Scaling" -#~ msgstr "Y skálázás" - -#~ msgid "Y Translation" -#~ msgstr "Y eltolás" - -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "ismeretlen keresési kezdõpont" - -#, fuzzy -#~ msgid "Fatal Error" -#~ msgstr "Végzetes hiba" - -#, fuzzy -#~ msgid "Fatal error: %s\n" -#~ msgstr "Végzetes hiba:" - -#~ msgid "Back" -#~ msgstr "Vissza" - -#~ msgid "Can not create event object." -#~ msgstr "Nem tudom létrehozni az esemény objektumot." - -#~ msgid "" -#~ "Can't create window of class %s!\n" -#~ "Possible Windows 3.x compatibility problem?" +#~ msgid "XRC resource: Cannot create dialog without instance." #~ msgstr "" -#~ "Nem tudom létrehozni a(z) %s osztályú ablakot!\n" -#~ " Windows 3.x kompatibilitás probléma lehet?" +#~ "XRC erõforrás: Nem tudom létrehozni a párbeszédablakot létrehozott " +#~ "példány nélkül." -#~ msgid "" -#~ "Can't find dialog template '%s'!\n" -#~ "Check resource include path for finding wx.rc." -#~ msgstr "" -#~ "Nem találom a(z) '%s' párbeszéd template-et!\n" -#~ "Ellenõrizze a wx.rc erõforrás elérési útvonalát." +#~ msgid "large" +#~ msgstr "nagy" -#~ msgid "Can't find the serialization object '%s' for the object '%s'." -#~ msgstr "" -#~ "Nem találom a soros ki-bemeneti '%s' objektumot a(z) '%s' objektumhoz." +#~ msgid "medium" +#~ msgstr "közepes" -#~ msgid "Can't load wxSerial dynamic library." -#~ msgstr "Nem tudom betölteni a wxSerial dinamikus könyvtárat." +#~ msgid "small" +#~ msgstr "kicsi" -#~ msgid "Connection to wxHelp timed out in %d seconds" -#~ msgstr "A wxHelp-pel nem jött létre kapcsolat %d másodperc alatt" +#~ msgid "very large" +#~ msgstr "nagyon nagy" -#~ msgid "Couldn't launch DDE server '%s'." -#~ msgstr "Nem tudtam elindítani a '%s' DDE kiszolgálót." +#~ msgid "very small" +#~ msgstr "nagyon kicsi" -#~ msgid "Cyrillic (Latin 5)" -#~ msgstr "Cirill (Latin 5)" - -#~ msgid "Etcetera" -#~ msgstr "Satöbbi" - -#~ msgid "Incorrect version of HTML help book" -#~ msgstr "A HTML súgó könyv változata nem megfelelõ" - -#~ msgid "Mounted Devices" -#~ msgstr "Hozzáférhetõ eszközök" - -#~ msgid "My Harddisk" -#~ msgstr "Az Én Mágneslemezem" - -#~ msgid "My Home" -#~ msgstr "Az Én Saját Könyvtáram" - -#~ msgid "New..." -#~ msgstr "Új..." - -#~ msgid "No XPM facility available!" -#~ msgstr "Nincs XPM felhasználási lehetõség!" - -#~ msgid "Please wait..." -#~ msgstr "Kérem várjon..." - -#~ msgid "Temporary" -#~ msgstr "Idõleges" - -#~ msgid "The Computer" -#~ msgstr "A Számítógép" - -#~ msgid "The directory " -#~ msgstr "A könyvtár " - -#~ msgid "User" -#~ msgstr "Felhasználó" - -#~ msgid "User Local" -#~ msgstr "Helyi felhasználó" - -#~ msgid "Variables" -#~ msgstr "Változók" - -#~ msgid "Window" -#~ msgstr "Ablak" - -#~ msgid "wxWindows: error finding temporary file name.\n" -#~ msgstr "wxWindows: hiba az idõszakos fájlnév keresésekor.\n" +#~ msgid "wxSearchEngine::LookFor must be called before scanning!" +#~ msgstr "Az átnézés elõtt meg kell hívni a wxSearchEngine::LookFor-t!" diff --git a/locale/id.po b/locale/id.po new file mode 100644 index 0000000000..f215c90ebb --- /dev/null +++ b/locale/id.po @@ -0,0 +1,3687 @@ +msgid "" +msgstr "" +"Project-Id-Version: wxWindows Internationalization\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" +"PO-Revision-Date: 2002-10-22 23:28+0700\n" +"Last-Translator: Bambang Purnomosidi D. P. \n" +"Language-Team: ID \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../src/common/log.cpp:304 +#, c-format +msgid " (error %ld: %s)" +msgstr " (kesalahan %ld: %s)" + +#: ../src/common/docview.cpp:1242 +msgid " - " +msgstr " - " + +#: ../src/html/htmprint.cpp:497 +msgid " Preview" +msgstr " Preview" + +#: ../src/common/paper.cpp:124 +msgid "#10 Envelope, 4 1/8 x 9 1/2 in" +msgstr "Amplop #10, 4 1/8 x 9 1/2 inci" + +#: ../src/common/paper.cpp:125 +msgid "#11 Envelope, 4 1/2 x 10 3/8 in" +msgstr "Amplop #11, 4 1/2 x 10 3/8 inci" + +#: ../src/common/paper.cpp:126 +msgid "#12 Envelope, 4 3/4 x 11 in" +msgstr "Amplop #12, 4 3/4 x 11 inci" + +#: ../src/common/paper.cpp:127 +msgid "#14 Envelope, 5 x 11 1/2 in" +msgstr "Amplop #14, 5 x 11 1/2 inci" + +#: ../src/common/paper.cpp:123 +msgid "#9 Envelope, 3 7/8 x 8 7/8 in" +msgstr "Amplop #9, 3 7/8 x 8 7/8 inci" + +#: ../src/common/resourc2.cpp:265 ../src/common/resourc2.cpp:1326 +#: ../src/common/resource.cpp:1784 ../src/common/resource.cpp:1914 +#: ../src/common/resource.cpp:2994 +#, c-format +msgid "#define %s must be an integer." +msgstr "#define %s harus berupa integer." + +#: ../src/common/prntbase.cpp:375 +#, c-format +msgid "%d" +msgstr "%d" + +#: ../src/common/prntbase.cpp:373 +#, c-format +msgid "%d...%d" +msgstr "%d...%d" + +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 +#, c-format +msgid "%i of %i" +msgstr "%i dari %i" + +#: ../src/common/cmdline.cpp:814 +#, c-format +msgid "%s (or %s)" +msgstr "%s (atau %s)" + +#: ../src/generic/logg.cpp:246 +#, c-format +msgid "%s Error" +msgstr "Kesalahan %s " + +#: ../src/generic/logg.cpp:254 +#, c-format +msgid "%s Information" +msgstr "Informasi %s " + +#: ../src/generic/logg.cpp:250 +#, c-format +msgid "%s Warning" +msgstr "Peringatan %s" + +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + +#: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 +#, c-format +msgid "%s not a bitmap resource specification." +msgstr "%s bukan suatu spesifikasi sesumber bitmap." + +#: ../src/common/resourc2.cpp:860 ../src/common/resource.cpp:2520 +#, c-format +msgid "%s not an icon resource specification." +msgstr "%s bukan suatu spesifikasi sesumber ikon" + +#: ../src/common/resourc2.cpp:357 ../src/common/resourc2.cpp:1422 +#: ../src/common/resource.cpp:1877 ../src/common/resource.cpp:2006 +#: ../src/common/resource.cpp:3091 +#, c-format +msgid "%s: ill-formed resource file syntax." +msgstr "%s: bentuk sintaksis file sesumber tidak baik." + +#: ../src/msw/mdi.cpp:192 +msgid "&Arrange Icons" +msgstr "&Susun ikon" + +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 +msgid "&Cancel" +msgstr "&Batal" + +#: ../src/msw/mdi.cpp:188 +msgid "&Cascade" +msgstr "&Cascade" + +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 +msgid "&Close" +msgstr "&Tutup" + +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Teletype" + +#: ../src/generic/logg.cpp:695 +msgid "&Details" +msgstr "&Rinci" + +#: ../src/generic/fdrepdlg.cpp:168 +msgid "&Find" +msgstr "&Temukan" + +#: ../src/generic/wizard.cpp:412 +msgid "&Finish" +msgstr "&Selesai" + +#: ../src/generic/wizard.cpp:258 +msgid "&Help" +msgstr "&Pertolongan" + +#: ../src/generic/logg.cpp:492 +msgid "&Log" +msgstr "&Log" + +#: ../src/univ/themes/win32.cpp:4539 +msgid "&Move" +msgstr "&Pindah" + +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 +msgid "&Next" +msgstr "&Berikut" + +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 +msgid "&Next >" +msgstr "&Berikutnya >" + +#: ../src/generic/tipdlg.cpp:215 +msgid "&Next Tip" +msgstr "&Tip Berikutnya" + +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "tanggal" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 +msgid "&Previous" +msgstr "&Sebelumnya" + +#: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 +msgid "&Redo" +msgstr "&Kerjakan Lagi" + +#: ../src/common/cmdproc.cpp:255 ../src/common/cmdproc.cpp:282 +msgid "&Redo " +msgstr "&Kerjakan Lagi" + +#: ../src/generic/fdrepdlg.cpp:174 +msgid "&Replace" +msgstr "&Ganti" + +#: ../src/univ/themes/win32.cpp:4538 +msgid "&Restore" +msgstr "&Kembali ke keadaan semula" + +#: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 +msgid "&Save..." +msgstr "&Simpan..." + +#: ../src/generic/tipdlg.cpp:212 +msgid "&Show tips at startup" +msgstr "&Tampilkan tip-tip pada saat program dimulai" + +#: ../src/univ/themes/win32.cpp:4541 +msgid "&Size" +msgstr "&Ukuran" + +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 +msgid "&Undo" +msgstr "&Batal mengerjakan" + +#: ../src/common/cmdproc.cpp:241 +msgid "&Undo " +msgstr "&Batal mengerjakan" + +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 +msgid "&Window" +msgstr "&Jendela" + +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 +#, c-format +msgid "'%s' has extra '..', ignored." +msgstr "'%s' mempunyai '..' ekstra, abaikan." + +#: ../src/common/valtext.cpp:147 ../src/common/valtext.cpp:177 +#: ../src/common/valtext.cpp:183 +#, c-format +msgid "'%s' is invalid" +msgstr "'%s' tidak sah" + +#: ../src/common/cmdline.cpp:734 +#, c-format +msgid "'%s' is not a correct numeric value for option '%s'." +msgstr "'%s' bukan suatu nilai numeris yang benar untuk pilihan '%s'." + +#: ../src/common/intl.cpp:402 +#, c-format +msgid "'%s' is not a valid message catalog." +msgstr "'%s' bukan suatu katalog pesan yang sah." + +#: ../src/common/textbuf.cpp:245 +#, c-format +msgid "'%s' is probably a binary buffer." +msgstr "'%s' mungkin suatu buffer biner." + +#: ../src/common/valtext.cpp:172 +#, c-format +msgid "'%s' should be numeric." +msgstr "'%s' harus numeris." + +#: ../src/common/valtext.cpp:154 +#, c-format +msgid "'%s' should only contain ASCII characters." +msgstr "'%s' harus hanya berisi karakter-karakter ASCII." + +#: ../src/common/valtext.cpp:160 +#, c-format +msgid "'%s' should only contain alphabetic characters." +msgstr "'%s' harus hanya berisi karakter-karakter alfabetis." + +#: ../src/common/valtext.cpp:166 +#, c-format +msgid "'%s' should only contain alphabetic or numeric characters." +msgstr "'%s' harus hanya berisi karakter-karakter alfabetis atau numeris." + +#: ../src/html/helpfrm.cpp:714 +msgid "(Help)" +msgstr "(Tolong)" + +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 +msgid "(bookmarks)" +msgstr "(bookmark)" + +#: ../src/common/resourc2.cpp:297 ../src/common/resourc2.cpp:1362 +#: ../src/common/resource.cpp:1816 ../src/common/resource.cpp:1946 +#: ../src/common/resource.cpp:3030 +msgid "" +", expected static, #include or #define\n" +"whilst parsing resource." +msgstr "" +", diharapkan static, #include atau #define\n" +" saat sedang mem-parsing sesumber" + +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 +msgid "." +msgstr "." + +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 +msgid ".." +msgstr ".." + +#: ../src/common/paper.cpp:120 +msgid "10 x 14 in" +msgstr "10 x 14 inci" + +#: ../src/common/paper.cpp:121 +msgid "11 x 17 in" +msgstr "11 x 17 inci" + +#: ../src/common/paper.cpp:139 +msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" +msgstr "Amplop 6 3/4, 3 5/8 x 6 1/2 in" + +#: ../src/html/htmprint.cpp:279 +msgid ": file does not exist!" +msgstr ": file tidak ada!" + +#: ../src/common/fontmap.cpp:670 +msgid ": unknown charset" +msgstr ": charset tidak diketahui" + +#: ../src/common/fontmap.cpp:898 +msgid ": unknown encoding" +msgstr ": pengkodean tidak diketahui" + +#: ../src/generic/wizard.cpp:263 +msgid "< &Back" +msgstr "< &Kembali" + +#: ../src/generic/filedlgg.cpp:534 +msgid "" +msgstr "" + +#: ../src/generic/filedlgg.cpp:536 +msgid "" +msgstr "" + +#: ../src/html/helpfrm.cpp:994 +#, fuzzy +msgid "" +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " +msgstr "" +"Tampilah normal
    (dan bergaris bawah. Tampilan " +"miring. Tampilan tebal. Tampilan miring tebal.
    ukuran huruf -2
    ukuran huruf -1
    ukuran huruf
    ukuran huruf +1
    ukuran huruf +2
    ukuran huruf " +"+3
    ukuran huruf +4

    Tampilan ukuran " +"tetap.
    tebal miring miring tebal bergaris bawah
    ukuran huruf -2
    ukuran " +"huruf -1
    ukuran huruf +0
    ukuran huruf +1
    ukuran huruf +2
    ukuran huruf +3
    ukuran huruf +4
    " + +#: ../src/common/paper.cpp:113 +msgid "A3 sheet, 297 x 420 mm" +msgstr "Kertas A3, 297 x 420 mm" + +#: ../src/common/paper.cpp:104 +msgid "A4 sheet, 210 x 297 mm" +msgstr "Kertas A4, 210 x 297 mm" + +#: ../src/common/paper.cpp:114 +msgid "A4 small sheet, 210 x 297 mm" +msgstr "Kertas kecil A4, 210 x 297 mm" + +#: ../src/common/paper.cpp:115 +msgid "A5 sheet, 148 x 210 mm" +msgstr "Kertas A5, 148 x 210 mm" + +#: ../src/generic/fontdlgg.cpp:83 +msgid "ABCDEFGabcdefg12345" +msgstr "ABCDEFGabcdefg12345" + +#: ../src/common/ftp.cpp:369 +msgid "ASCII" +msgstr "ASCII" + +#: ../src/html/helpfrm.cpp:328 +msgid "Add current page to bookmarks" +msgstr "Tambahkan halaman ini ke bookmark" + +#: ../src/generic/colrdlgg.cpp:287 +msgid "Add to custom colours" +msgstr "Tambahkan ke warna-warna kustom" + +#: ../src/html/helpctrl.cpp:95 +#, c-format +msgid "Adding book %s" +msgstr "Menambahkan buku %s" + +#: ../src/generic/prntdlgg.cpp:160 +msgid "All" +msgstr "Semua" + +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 +msgid "All files (*)|*" +msgstr "Semua file (*)|*" + +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Semua file (*)|*" + +#: ../src/unix/dialup.cpp:362 +msgid "Already dialling ISP." +msgstr "Sudah menghubungi ISP." + +#: ../src/generic/logg.cpp:1109 +#, c-format +msgid "Append log to file '%s' (choosing [No] will overwrite it)?" +msgstr "" +"Tambahkan log ke file '%s' (memilih [Tidak] akan menimpa file tersebut)?" + +#: ../src/common/fontmap.cpp:118 +msgid "Arabic (ISO-8859-6)" +msgstr "Arabic (ISO-8859-6)" + +#: ../src/common/paper.cpp:134 +msgid "B4 Envelope, 250 x 353 mm" +msgstr "Amplop B4, 250 x 353 mm" + +#: ../src/common/paper.cpp:116 +msgid "B4 sheet, 250 x 354 mm" +msgstr "Kertas B4, 250 x 354 mm" + +#: ../src/common/paper.cpp:135 +msgid "B5 Envelope, 176 x 250 mm" +msgstr "Amplop B5, 176 x 250 mm" + +#: ../src/common/paper.cpp:117 +msgid "B5 sheet, 182 x 257 millimeter" +msgstr "Kertas B5, 182 x 257 millimeter" + +#: ../src/common/paper.cpp:136 +msgid "B6 Envelope, 176 x 125 mm" +msgstr "Amplop B6, 176 x 125 mm" + +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 +msgid "BMP: Couldn't allocate memory." +msgstr "BMP: Tidak bisa mengalokasikan memory." + +#: ../src/common/imagbmp.cpp:86 +msgid "BMP: Couldn't save invalid image." +msgstr "BMP: Tidak bisa menympan citra tidak sah." + +#: ../src/common/imagbmp.cpp:290 +msgid "BMP: Couldn't write RGB color map." +msgstr "BMP: Tidak bisa menulis peta warna RGB." + +#: ../src/common/imagbmp.cpp:422 +msgid "BMP: Couldn't write data." +msgstr "BMP: Tidak bisa menulis data." + +#: ../src/common/imagbmp.cpp:195 +msgid "BMP: Couldn't write the file (Bitmap) header." +msgstr "BMP: Tidak bisa menulis header file (Bitmap)." + +#: ../src/common/imagbmp.cpp:216 +msgid "BMP: Couldn't write the file (BitmapInfo) header." +msgstr "BMP: Tidak bisa menulis header file (BitmapInfo)" + +#: ../src/common/imagbmp.cpp:120 +msgid "BMP: wxImage doesn't have own wxPalette." +msgstr "BMP: wxImage tidak mempunyai wxPallete." + +#: ../src/common/dlgcmn.cpp:233 +msgid "Backward" +msgstr "Ke belakang" + +#: ../src/common/fontmap.cpp:125 +msgid "Baltic (ISO-8859-13)" +msgstr "Baltic (ISO-8859-13)" + +#: ../src/common/fontmap.cpp:116 +msgid "Baltic (old) (ISO-8859-4)" +msgstr "Baltic (tua) (ISO-8859-4)" + +#: ../src/common/resourc2.cpp:840 ../src/common/resource.cpp:2500 +#, c-format +msgid "Bitmap resource specification %s not found." +msgstr "Spesifikasi sesumber Bitmap %s tidak ditemukan." + +#: ../src/generic/fontdlgg.cpp:232 +msgid "Bold" +msgstr "Tebal" + +#: ../src/generic/prntdlgg.cpp:645 +msgid "Bottom margin (mm):" +msgstr "Batas bawah (mm):" + +#: ../src/common/paper.cpp:105 +msgid "C sheet, 17 x 22 in" +msgstr "Kertas C, 17 x 22 inci" + +#: ../src/generic/logg.cpp:489 +msgid "C&lear" +msgstr "B&ersihkan" + +#: ../src/common/paper.cpp:130 +msgid "C3 Envelope, 324 x 458 mm" +msgstr "Amplop C3, 324 x 458 mm" + +#: ../src/common/paper.cpp:131 +msgid "C4 Envelope, 229 x 324 mm" +msgstr "Amplop C4, 229 x 324 mm" + +#: ../src/common/paper.cpp:129 +msgid "C5 Envelope, 162 x 229 mm" +msgstr "Amplop C5, 162 x 229 mm" + +#: ../src/common/paper.cpp:132 +msgid "C6 Envelope, 114 x 162 mm" +msgstr "Amplop C6, 114 x 162 mm" + +#: ../src/common/paper.cpp:133 +msgid "C65 Envelope, 114 x 229 mm" +msgstr "Amplop C65, 114 x 229 mm" + +#: ../src/common/filefn.cpp:1369 +#, c-format +msgid "Can not enumerate files '%s'" +msgstr "Tidak bisa mengenumerasi file-file '%s'" + +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 +#, c-format +msgid "Can not enumerate files in directory '%s'" +msgstr "Tidak bisa mengenumerasi file-file di direktori '%s'" + +#: ../src/mac/thread.cpp:472 ../src/msw/thread.cpp:685 +#, c-format +msgid "Can not resume thread %x" +msgstr "Tidak bisa meneruskan thread %x" + +#: ../src/msw/thread.cpp:559 +msgid "Can not start thread: error writing TLS." +msgstr "Tidak bisa memulai thread: kesalahan menulis TLS." + +#: ../src/mac/thread.cpp:448 ../src/msw/thread.cpp:670 +#, c-format +msgid "Can not suspend thread %x" +msgstr "Tidak bisa menunda thread %x" + +#: ../src/msw/thread.cpp:1016 +msgid "Can not wait for thread termination" +msgstr "Tidak bisa menunggu penghentian thread" + +#: ../src/common/cmdproc.cpp:243 +msgid "Can't &Undo " +msgstr "Tidak bisa &Membatalkan pekerjaan" + +#: ../src/common/image.cpp:1319 +#, c-format +msgid "Can't check image format of file '%s': file does not exist." +msgstr "Tidak bisa memeriksa format citra dari file '%s': file tidak ada." + +#: ../src/msw/registry.cpp:421 +#, c-format +msgid "Can't close registry key '%s'" +msgstr "Tidak bisa menutup kunci registry '%s'" + +#: ../src/msw/registry.cpp:493 +#, c-format +msgid "Can't copy values of unsupported type %d." +msgstr "Tidak bisa menyalin nilai-nilai dari tipe %d yang tidak didukung." + +#: ../src/msw/toplevel.cpp:315 +msgid "Can't create dialog using memory template" +msgstr "Tidak bisa menciptakan dialog menggunakan template memory" + +#: ../src/os2/toplevel.cpp:369 +#, c-format +msgid "Can't create dialog using template '%ul'" +msgstr "Tidak bisa menciptakan dialog menggunakan template '%ul'" + +#: ../src/msw/listctrl.cpp:334 +msgid "Can't create list control window, check that comctl32.dll is installed." +msgstr "" +"Tidak bisa menciptakan jendela list control, periksa apakah comctl32.dll " +"terinstall" + +#: ../src/msw/registry.cpp:402 +#, c-format +msgid "Can't create registry key '%s'" +msgstr "Tidak bisa menciptakan kunci registry '%s'" + +#: ../src/mac/thread.cpp:427 ../src/msw/thread.cpp:652 +msgid "Can't create thread" +msgstr "Tidak bisa menciptakan thread" + +#: ../src/msw/window.cpp:3062 +#, c-format +msgid "Can't create window of class %s" +msgstr "Tidak bisa menciptakan jendela dari class %s" + +#: ../src/msw/registry.cpp:661 +#, c-format +msgid "Can't delete key '%s'" +msgstr "Tidak bisa menghapus kunci '%s'" + +#: ../src/msw/iniconf.cpp:445 +#, c-format +msgid "Can't delete the INI file '%s'" +msgstr "Tidak bisa menghapus file INI '%s'" + +#: ../src/msw/registry.cpp:686 +#, c-format +msgid "Can't delete value '%s' from key '%s'" +msgstr "Tidak bisa menghapus nilai '%s' dari kunci '%s'" + +#: ../src/msw/registry.cpp:697 +#, c-format +msgid "Can't delete value of key '%s'" +msgstr "Tidak bisa menghapus nilai dari kunci '%s'" + +#: ../src/msw/registry.cpp:1025 +#, c-format +msgid "Can't enumerate subkeys of key '%s'" +msgstr "Tidak bisa mengenumerasi subkunci dari kunci '%s'" + +#: ../src/msw/registry.cpp:980 +#, c-format +msgid "Can't enumerate values of key '%s'" +msgstr "Tidak bisa mengenumerasi nilai-nilai dari kunci '%s'" + +#: ../src/common/ffile.cpp:226 +#, c-format +msgid "Can't find current position in file '%s'" +msgstr "Tidak bisa menemukan posisi saat ini dalam file '%s'" + +#: ../src/msw/registry.cpp:351 +#, c-format +msgid "Can't get info about registry key '%s'" +msgstr "Tidak bisa memperoleh info tentang kunci registry '%s'" + +#: ../src/common/image.cpp:913 ../src/common/image.cpp:933 +#, c-format +msgid "Can't load image from file '%s': file does not exist." +msgstr "Tidak bisa memuat citra dari file '%s': file tidak ada." + +#: ../src/msw/dib.cpp:434 +#, c-format +msgid "Can't open file '%s'" +msgstr "Tidak bisa membuka file '%s'" + +#: ../src/msw/registry.cpp:377 +#, c-format +msgid "Can't open registry key '%s'" +msgstr "Tidak bisa membuka kunci registry '%s'" + +#: ../src/msw/registry.cpp:904 +#, c-format +msgid "Can't read value of '%s'" +msgstr "Tidak bisa membaca nilai dari '%s'" + +#: ../src/msw/registry.cpp:777 ../src/msw/registry.cpp:816 +#, c-format +msgid "Can't read value of key '%s'" +msgstr "Tidak bisa membaca nilai dari kunci '%s'" + +#: ../src/common/image.cpp:955 +#, c-format +msgid "Can't save image to file '%s': unknown extension." +msgstr "Tidak bisa menyimpan citra ke file '%s': ekstensi tidak diketahui" + +#: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 +msgid "Can't save log contents to file." +msgstr "Tidak bisa menyimpan isi dari log ke file." + +#: ../src/msw/thread.cpp:611 +msgid "Can't set thread priority" +msgstr "Tidak bisa menetapkan prioritas thread" + +#: ../src/msw/registry.cpp:802 ../src/msw/registry.cpp:928 +#, c-format +msgid "Can't set value of '%s'" +msgstr "Tidak bisa menetapkan nilai dari '%s'" + +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 +#: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 +#: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 +msgid "Cancel" +msgstr "Batal" + +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 +msgid "Cannot convert dialog units: dialog unknown." +msgstr "Tidak bisa mengkonversi unit-unit dialog: dialog tidak diketahui" + +#: ../src/common/strconv.cpp:963 +#, c-format +msgid "Cannot convert from encoding '%s'!" +msgstr "Tidak bisa mengkonversi dari pengkodean '%s'!" + +#: ../src/msw/dialup.cpp:499 +#, c-format +msgid "Cannot find active dialup connection: %s" +msgstr "Tidak bisa menemukan koneksi dialup yang aktif: %s" + +#: ../contrib/src/xrc/xmlres.cpp:243 +#, c-format +msgid "Cannot find container for unknown control '%s'." +msgstr "Tidak bisa menemukan penampung untuk kontrol yang tak diketahui '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:1024 +#, c-format +msgid "Cannot find font node '%s'." +msgstr "Tidak bisa menemukan titik huruf '%s'." + +#: ../src/msw/dialup.cpp:813 +msgid "Cannot find the location of address book file" +msgstr "Tidak bisa menemukan lokasi dari file buku alamat" + +#: ../src/unix/threadpsx.cpp:1096 +#, c-format +msgid "Cannot get priority range for scheduling policy %d." +msgstr "" +"Tidak bisa memperoleh jangkauan prioritas untuk kebijakan penjadualan %d." + +#: ../src/unix/utilsunx.cpp:865 +msgid "Cannot get the hostname" +msgstr "Tidak bisa memperoleh nama host" + +#: ../src/unix/utilsunx.cpp:901 +msgid "Cannot get the official hostname" +msgstr "Tidak bisa memperoleh nama host resmi" + +#: ../src/msw/dialup.cpp:907 +msgid "Cannot hang up - no active dialup connection." +msgstr "Tidak bisa menutup - tidak ada koneksi dialup yang aktif." + +#: ../src/msw/app.cpp:250 +msgid "Cannot initialize OLE" +msgstr "Tidak bisa menginisialisasi OLE" + +#: ../src/mgl/app.cpp:414 +msgid "Cannot initialize SciTech MGL!" +msgstr "Tidak bisa menginisialisasi SciTech MGL!" + +#: ../src/mgl/window.cpp:547 +msgid "Cannot initialize display." +msgstr "Tidak bisa menginisialisasi tampilan." + +#: ../src/msw/volume.cpp:634 +#, c-format +msgid "Cannot load icon from '%s'." +msgstr "Tidak bisa memuat ikon dari '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:356 +#, c-format +msgid "Cannot load resources from file '%s'." +msgstr "Tidak bisa memuat sesumber dari file '%s'." + +#: ../src/html/htmlfilt.cpp:164 +#, c-format +msgid "Cannot open HTML document: %s" +msgstr "Tidak bisa membuka dokumen HTML: %s" + +#: ../src/html/helpdata.cpp:595 +#, c-format +msgid "Cannot open HTML help book: %s" +msgstr "Tidak bisa membuka help book HTML: %s" + +#: ../src/generic/helpext.cpp:100 +#, c-format +msgid "Cannot open URL '%s'" +msgstr "Tidak bisa membuka URL '%s'" + +#: ../src/html/helpdata.cpp:277 +#, c-format +msgid "Cannot open contents file: %s" +msgstr "Tidak bisa membuka isi file: %s" + +#: ../contrib/src/xrc/xmlres.cpp:330 +#, c-format +msgid "Cannot open file '%s'." +msgstr "Tidak bisa membuka file '%s'." + +#: ../src/generic/dcpsg.cpp:1719 +msgid "Cannot open file for PostScript printing!" +msgstr "Tidak bisa membuka file untuk pencetakan PostScript!" + +#: ../src/html/helpdata.cpp:292 +#, c-format +msgid "Cannot open index file: %s" +msgstr "Tidak bisa membuka file indeks: %s" + +#: ../contrib/src/xrc/xmlres.cpp:957 +#, c-format +msgid "Cannot parse coordinates from '%s'." +msgstr "Tidak bisa mem-parse koordinat dari '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:998 +#, c-format +msgid "Cannot parse dimension from '%s'." +msgstr "Tidak bisa mem-parse dimensi dari '%s'." + +#: ../src/html/helpfrm.cpp:1293 +msgid "Cannot print empty page." +msgstr "Tidak bisa mencetak halaman kosong." + +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 +#, c-format +msgid "Cannot read typename from '%s'!" +msgstr "Tidak bisa membaca typename dari '%s'!" + +#: ../src/unix/threadpsx.cpp:1077 +msgid "Cannot retrieve thread scheduling policy." +msgstr "Tidak bisa mengambil kebijakan penjadualan thread." + +#: ../src/unix/threadpsx.cpp:710 +msgid "Cannot start thread: error writing TLS" +msgstr "Tidak bisa memulai thread: kesalahan menulis TLS" + +#: ../src/html/helpfrm.cpp:411 +msgid "Case sensitive" +msgstr "Membedakan huruf besar dan kecil" + +#: ../src/common/fontmap.cpp:126 +msgid "Celtic (ISO-8859-14)" +msgstr "Celtic (ISO-8859-14)" + +#: ../src/common/fontmap.cpp:114 +msgid "Central European (ISO-8859-2)" +msgstr "Central European (ISO-8859-2)" + +#: ../src/msw/dialup.cpp:748 +msgid "Choose ISP to dial" +msgstr "Pilih ISP yang akan dihubungi" + +#: ../src/gtk/fontdlg.cpp:122 +msgid "Choose font" +msgstr "Pilih huruf" + +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Tutup" + +#: ../src/generic/logg.cpp:489 +msgid "Clear the log contents" +msgstr "Bersihkan isi log" + +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 +#: ../src/generic/proplist.cpp:506 +msgid "Close" +msgstr "Tutup" + +#: ../src/univ/themes/win32.cpp:4547 +msgid "Close\tAlt-F4" +msgstr "Tutup\tAlt-F4" + +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Tutup" + +#: ../src/generic/logg.cpp:491 +msgid "Close this window" +msgstr "Tutul jendela ini" + +#: ../src/generic/dirctrlg.cpp:549 +msgid "Computer" +msgstr "Komputer" + +#: ../src/common/fileconf.cpp:902 +#, c-format +msgid "Config entry name cannot start with '%c'." +msgstr "Nama entri konfigurasi tidak bisa diawali dengan '%c'." + +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 +msgid "Confirm" +msgstr "Konfirmasi" + +#: ../src/msw/mimetype.cpp:689 +msgid "Confirm registry update" +msgstr "Konfirmasi peremajaan registry" + +#: ../src/html/htmlwin.cpp:262 +msgid "Connecting..." +msgstr "Terkoneksi..." + +#: ../src/html/helpfrm.cpp:351 +msgid "Contents" +msgstr "Isi" + +#: ../src/common/strconv.cpp:616 +#, c-format +msgid "Conversion to charset '%s' doesn't work." +msgstr "Konversi ke charset '%s' tidak bekerja" + +#: ../src/generic/prntdlgg.cpp:193 +msgid "Copies:" +msgstr "Salinan:" + +#: ../src/common/resourc2.cpp:287 ../src/common/resource.cpp:1806 +#: ../src/common/resource.cpp:1936 +#, c-format +msgid "Could not find resource include file %s." +msgstr "Tidak bisa menemukan file include sesumber %s." + +#: ../src/generic/tabg.cpp:1044 +msgid "Could not find tab for id" +msgstr "Tidak bisa menemukan tab untuk id" + +#: ../src/msw/textctrl.cpp:2050 +#, c-format +msgid "Could not load Rich Edit DLL '%s'" +msgstr "Tidak bisa memuat DLL Rich Edit '%s'" + +#: ../src/common/resource.cpp:802 +#, c-format +msgid "" +"Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" +" or provide #define (see manual for caveats)" +msgstr "" +"Tidak bisa memecahkan class control atau id '%s'. Gunakan integer (tidak " +"nol) sebagai gantinya\n" +" atau sediakan #define (lihat manual untuk keterangan lebih lanjut)" + +#: ../src/common/resource.cpp:1251 +#, c-format +msgid "" +"Could not resolve menu id '%s'. Use (non-zero) integer instead\n" +"or provide #define (see manual for caveats)" +msgstr "" +"Tidak bisa memecahkan id menu '%s'. Gunakan integer (tidak nol) sebagai " +"gantinya\n" +" atau sediakan #define (lihat manual untuk penjelasan lebih lanjut)" + +#: ../src/common/prntbase.cpp:805 +msgid "Could not start document preview." +msgstr "Tidak bisa memulai preview dokumen." + +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 +msgid "Could not start printing." +msgstr "Tidak bisa memulai pencetakan." + +#: ../src/common/wincmn.cpp:1167 +msgid "Could not transfer data to window" +msgstr "Tidak bisa mentransfer data ke jendela" + +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 +#: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 +#: ../src/msw/imaglist.cpp:187 +msgid "Couldn't add an image to the image list." +msgstr "Tidak bisa menambahkan citra ke daftar citra." + +#: ../src/msw/timer.cpp:103 +msgid "Couldn't create a timer" +msgstr "Tidak bisa menciptakan pewaktu" + +#: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 +msgid "Couldn't create cursor." +msgstr "Tidak bisa menciptakan kursor" + +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 +#, c-format +msgid "Couldn't find symbol '%s' in a dynamic library" +msgstr "Tidak bisa menemukan simbol '%s' dalam pustaka dinamis" + +#: ../src/mac/thread.cpp:502 ../src/msw/thread.cpp:711 +msgid "Couldn't get the current thread pointer" +msgstr "Tidak bisa memperoleh penunjuk thread saat ini" + +#: ../src/common/imagpng.cpp:302 +msgid "Couldn't load a PNG image - file is corrupted or not enough memory." +msgstr "Tidak bisa memuat citra PNG - file terkorupsi atau memory tidak cukup." + +#: ../src/msw/ole/dataobj.cpp:147 +#, c-format +msgid "Couldn't register clipboard format '%s'." +msgstr "Tidak bisa meregister format clipboard '%s'." + +#: ../src/msw/listctrl.cpp:737 +#, c-format +msgid "Couldn't retrieve information about list control item %d." +msgstr "Tidak bisa mengambil informasi tentang item list control %d." + +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 +msgid "Couldn't save PNG image." +msgstr "Tidak bisa menyimpan citra PNG." + +#: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 +msgid "Couldn't terminate thread" +msgstr "Tidak bisa menghentikan thread" + +#: ../src/generic/dirdlgg.cpp:263 +msgid "Create directory" +msgstr "Buat direktori" + +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 +msgid "Create new directory" +msgstr "Buat direktori baru" + +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 +msgid "Current directory:" +msgstr "Direktori saat ini:" + +#: ../src/common/fontmap.cpp:117 +msgid "Cyrillic (ISO-8859-5)" +msgstr "Cyrillic (ISO-8859-5)" + +#: ../src/common/paper.cpp:106 +msgid "D sheet, 22 x 34 in" +msgstr "Kertas D, 22 x 34 in" + +#: ../src/msw/dde.cpp:594 +msgid "DDE poke request failed" +msgstr "Permintaan poke DDE gagal" + +#: ../src/common/imagbmp.cpp:917 +msgid "DIB Header: Encoding doesn't match bitdepth." +msgstr "Header DIB: Pengkodean tidak sesuai dengan bitdepth." + +#: ../src/common/imagbmp.cpp:879 +msgid "DIB Header: Image height > 32767 pixels for file." +msgstr "Header DIB: Tinggi citra > 32767 pixel untuk file." + +#: ../src/common/imagbmp.cpp:873 +msgid "DIB Header: Image width > 32767 pixels for file." +msgstr "DIB Header: Lebar citra > 32767 pixel untuk file." + +#: ../src/common/imagbmp.cpp:893 +msgid "DIB Header: Unknown bitdepth in file." +msgstr "DIB Header: bitdepth dalam file tidak diketahui." + +#: ../src/common/imagbmp.cpp:903 +msgid "DIB Header: Unknown encoding in file." +msgstr "Header DIB: Pengkodean dalam file tidak diketahui." + +#: ../src/common/paper.cpp:128 +msgid "DL Envelope, 110 x 220 mm" +msgstr "Amplop DL, 110 x 220 mm" + +#: ../src/generic/filedlgg.cpp:705 +msgid "Date" +msgstr "Tanggal" + +#: ../src/generic/fontdlgg.cpp:222 +msgid "Decorative" +msgstr "Dekoratif" + +#: ../src/common/fontmap.cpp:392 +msgid "Default encoding" +msgstr "Pengkodean default" + +#: ../src/unix/snglinst.cpp:269 +#, c-format +msgid "Deleted stale lock file '%s'." +msgstr "Menghapus file lock '%s' yang terhenti." + +#: ../src/msw/dialup.cpp:348 +msgid "" +"Dial up functions are unavailable because the remote access service (RAS) is " +"not installed on this machine. Please install it." +msgstr "" +"Fungsi dial up tidak tersedia karena remote access service (RAS) tidak " +"terinstall pada mesin ini. Silahkan menginstall." + +#: ../src/os2/toplevel.cpp:367 +msgid "Did you forget to include wx/os2/wx.rc in your resources?" +msgstr "Apakah anda lupa menyertakan wx/os2/wx.rc di sesumber anda?" + +#: ../src/generic/tipdlg.cpp:217 +msgid "Did you know..." +msgstr "Tahukah anda..." + +#: ../src/common/filefn.cpp:1265 +#, c-format +msgid "Directory '%s' couldn't be created" +msgstr "Direktori '%s' tidak bsia diciptakan" + +#: ../src/mgl/dirmgl.cpp:217 +#, c-format +msgid "Directory '%s' doesn't exist!" +msgstr "Direktori '%s' tidak ada!" + +#: ../src/generic/dirdlgg.cpp:188 +msgid "Directory does not exist" +msgstr "Direktori tidak ada" + +#: ../src/html/helpfrm.cpp:379 +msgid "" +"Display all index items that contain given substring. Search is case " +"insensitive." +msgstr "" +"Menampilkan semua item-item indeks yang berisi substring yang diberikan. " +"Pencarian bersifat membedakan huruf besar dan kecil." + +#: ../src/html/helpfrm.cpp:545 +msgid "Display options dialog" +msgstr "Dialog menampilkan pilihan" + +#: ../src/msw/mimetype.cpp:682 +#, c-format +msgid "" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" +"Current value is \n" +"%s, \n" +"New value is \n" +"%s %1" +msgstr "" +"Apakah anda ingin menimpa perintah yanf digunakan untuk %s file-file dengan " +"ekstensi \"%s\" ?\n" +"Nilai saat ini adalah \n" +"%s, \n" +"Nilai baru adalah \n" +"%s % 1" + +#: ../src/common/docview.cpp:441 +#, c-format +msgid "Do you want to save changes to document %s?" +msgstr "Apakah anda ingin menyimpan perubahan terhadap dokumen %s?" + +#: ../src/html/htmlwin.cpp:314 +msgid "Done" +msgstr "Selesai" + +#: ../src/generic/progdlgg.cpp:370 +msgid "Done." +msgstr "Selesai." + +#: ../src/generic/fdrepdlg.cpp:157 +msgid "Down" +msgstr "Turun" + +#: ../src/common/paper.cpp:107 +msgid "E sheet, 34 x 44 in" +msgstr "Kertas E, 34 x 44 inci" + +#: ../src/generic/progdlgg.cpp:183 +msgid "Elapsed time : " +msgstr "Waktu yang sudah dihabiskan :" + +#: ../src/generic/helphtml.cpp:335 +msgid "Entries found" +msgstr "Entri ditemukan" + +#: ../src/common/config.cpp:362 +#, c-format +msgid "" +"Environment variables expansion failed: missing '%c' at position %d in '%s'." +msgstr "" +"Ekspansi variabel lingkungan gagal: kehilangan '%s' pada posisi %d dalam '%" +"s'." + +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 +#: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 +msgid "Error" +msgstr "Kesalahan" + +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 +msgid "Error " +msgstr "Kesalahan" + +#: ../src/generic/dirdlgg.cpp:203 +msgid "Error creating directory" +msgstr "Kesalahan dalam menciptakan direktori" + +#: ../src/common/imagbmp.cpp:926 +msgid "Error in reading image DIB ." +msgstr "Kesalahan dalam membaca citra DIB." + +#: ../src/common/log.cpp:460 +msgid "Error: " +msgstr "Kesalahan:" + +#: ../src/common/fontmap.cpp:115 +msgid "Esperanto (ISO-8859-3)" +msgstr "Esperanto (ISO-8859-3)" + +#: ../src/generic/progdlgg.cpp:191 +msgid "Estimated time : " +msgstr "Waktu yang telah dihabiskan :" + +#: ../src/msw/utilsexc.cpp:702 +#, c-format +msgid "Execution of command '%s' failed" +msgstr "Eksekusi perintah '%s' gagal" + +#: ../src/common/paper.cpp:112 +msgid "Executive, 7 1/4 x 10 1/2 in" +msgstr "Eksekutif, 7 1/4 x 10 1/2 inci" + +#: ../src/common/resourc2.cpp:326 ../src/common/resourc2.cpp:1391 +#: ../src/common/resource.cpp:1845 ../src/common/resource.cpp:1975 +#: ../src/common/resource.cpp:3059 +msgid "Expected '*' whilst parsing resource." +msgstr "Diharapkan '*' saat sedang mem-parsing sesumber" + +#: ../src/common/resourc2.cpp:342 ../src/common/resourc2.cpp:1407 +#: ../src/common/resource.cpp:1862 ../src/common/resource.cpp:1991 +#: ../src/common/resource.cpp:3076 +msgid "Expected '=' whilst parsing resource." +msgstr "Mengharapkan '=' saat sedang mem-parsing sesumber" + +#: ../src/common/resourc2.cpp:312 ../src/common/resourc2.cpp:1377 +#: ../src/common/resource.cpp:1831 ../src/common/resource.cpp:1961 +#: ../src/common/resource.cpp:3045 +msgid "Expected 'char' whilst parsing resource." +msgstr "Mengharapkan 'char' saat sedang mem-parsing sesumber." + +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 +#, c-format +msgid "Failed to %s dialup connection: %s" +msgstr "Gagal untuk %s koneksi dialup: %s" + +#: ../src/unix/snglinst.cpp:243 +msgid "Failed to access lock file." +msgstr "Gagal mengakses file lock." + +#: ../src/common/filename.cpp:176 +msgid "Failed to close file handle" +msgstr "Gagal menutup file handle" + +#: ../src/unix/snglinst.cpp:308 +#, c-format +msgid "Failed to close lock file '%s'" +msgstr "Gagal menutup file lock '%s'" + +#: ../src/msw/clipbrd.cpp:127 +msgid "Failed to close the clipboard." +msgstr "Gagal menutup clipboard." + +#: ../src/msw/dialup.cpp:782 +msgid "Failed to connect: missing username/password." +msgstr "Gagal koneksi: hilang nama user/kata kunci" + +#: ../src/msw/dialup.cpp:728 +msgid "Failed to connect: no ISP to dial." +msgstr "Gagal koneksi: tidak ada ISP yang didial" + +#: ../src/msw/registry.cpp:597 +#, c-format +msgid "Failed to copy registry value '%s'" +msgstr "Gagal menyalin nilai registry '%s'" + +#: ../src/msw/registry.cpp:606 +#, c-format +msgid "Failed to copy the contents of registry key '%s' to '%s'." +msgstr "Gagal menyalin isi dari kunci registry '%s' ke '%s'." + +#: ../src/common/filefn.cpp:1117 +#, c-format +msgid "Failed to copy the file '%s' to '%s'" +msgstr "Gagal menyalin file '%s' ke '%s'" + +#: ../src/msw/dde.cpp:948 +msgid "Failed to create DDE string" +msgstr "Gagal menciptakan string DDE" + +#: ../src/msw/mdi.cpp:425 +msgid "Failed to create MDI parent frame." +msgstr "Gagal menciptakan frame parent MDI" + +#: ../src/msw/statbr95.cpp:110 +msgid "Failed to create a status bar." +msgstr "Gagal menciptakan baris status" + +#: ../src/common/filename.cpp:721 +msgid "Failed to create a temporary file name" +msgstr "Gagal menciptakan suatu nama file sementara" + +#: ../src/msw/utilsexc.cpp:197 +msgid "Failed to create an anonymous pipe" +msgstr "Gagal menciptakan pipa anonymous" + +#: ../src/msw/dde.cpp:412 +#, c-format +msgid "Failed to create connection to server '%s' on topic '%s'" +msgstr "Gagal menciptakan koneksi ke server '%s' untuk topik '%s'" + +#: ../src/msw/toplevel.cpp:313 +msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" +msgstr "Gagal menciptakan dialog. DLGTEMPLATE salah?" + +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Gagal menciptakan frame parent MDI" + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Gagal menciptakan entri registry untuk file-file '%s'." + +#: ../src/generic/dirdlgg.cpp:201 +#, c-format +msgid "" +"Failed to create directory '%s'\n" +"(Do you have the required permissions?)" +msgstr "" +"Gagal menciptakan direktori '%s'\n" +"(Apakah anda mempunya permisi yang disyaratkan?)" + +#: ../src/msw/mimetype.cpp:168 +#, c-format +msgid "Failed to create registry entry for '%s' files." +msgstr "Gagal menciptakan entri registry untuk file-file '%s'." + +#: ../src/msw/fdrepdlg.cpp:442 +#, c-format +msgid "Failed to create the standard find/replace dialog (error code %d)" +msgstr "Gagal menciptakan dialog standar temukan/ganti (kode kesalahan %d)" + +#: ../src/html/winpars.cpp:468 +#, c-format +msgid "Failed to display HTML document in %s encoding" +msgstr "Gagal menampilkan dokumen HTML dalam pengkodean %s" + +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 +msgid "Failed to empty the clipboard." +msgstr "Gagal mengosongkan clipboard." + +#: ../src/msw/dde.cpp:613 +msgid "Failed to establish an advise loop with DDE server" +msgstr "Gagal mengadakan advise loop dengan server DDE" + +#: ../src/msw/dialup.cpp:620 +#, c-format +msgid "Failed to establish dialup connection: %s" +msgstr "Gagal membentuk koneksi dialup: %s" + +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 +#, c-format +msgid "Failed to execute '%s'\n" +msgstr "Gagal mengeksekusi '%s'\n" + +#: ../src/common/resourc2.cpp:808 ../src/common/resource.cpp:2465 +#, c-format +msgid "" +"Failed to find XBM resource %s.\n" +"Forgot to use wxResourceLoadBitmapData?" +msgstr "" +"Gagal menemukan sesumber XBM %s.\n" +"Lupa menggunakan wxResourceLoadBitmapData?" + +#: ../src/common/resourc2.cpp:959 ../src/common/resource.cpp:2619 +#, c-format +msgid "" +"Failed to find XBM resource %s.\n" +"Forgot to use wxResourceLoadIconData?" +msgstr "" +"Gagal menemukan sesumber XBM %s.\n" +"Lupa menggunakan wxResourceLoadIconData?" + +#: ../src/common/resourc2.cpp:823 ../src/common/resource.cpp:2480 +#, c-format +msgid "" +"Failed to find XPM resource %s.\n" +"Forgot to use wxResourceLoadBitmapData?" +msgstr "" +"Gagal menemukan sesumber XPM %s.\n" +" Lupa menggunakan wxResourceLoadBitmapData?" + +#: ../src/msw/dialup.cpp:680 +#, c-format +msgid "Failed to get ISP names: %s" +msgstr "Gagal memperoleh nama ISO: %s" + +#: ../src/mac/clipbrd.cpp:119 +msgid "Failed to get clipboard data." +msgstr "Gagal memperoleh data clipboard." + +#: ../src/msw/clipbrd.cpp:712 +msgid "Failed to get data from the clipboard" +msgstr "Gagal memperoleh data dari clipboard" + +#: ../src/common/timercmn.cpp:294 +msgid "Failed to get the UTC system time." +msgstr "Gagal memperoleh waktu sistem UTC." + +#: ../src/common/timercmn.cpp:245 +msgid "Failed to get the local system time" +msgstr "Gagal memperoleh waktu lokal sistem" + +#: ../src/common/filefn.cpp:1498 +msgid "Failed to get the working directory" +msgstr "Gagal memperoleh direktori kerja" + +#: ../src/univ/theme.cpp:120 +msgid "Failed to initialize GUI: no built-in themes found." +msgstr "Gagal menginisialisasi GUI: tidak ada tema built-in ditemukan" + +#: ../src/msw/helpchm.cpp:69 +msgid "Failed to initialize MS HTML Help." +msgstr "Gagal menginisialisasi MS HTML Help." + +#: ../src/msw/glcanvas.cpp:729 +msgid "Failed to initialize OpenGL" +msgstr "Gagal menginisialisasi OpenGL" + +#: ../src/unix/threadpsx.cpp:887 +msgid "" +"Failed to join a thread, potential memory leak detected - please restart the " +"program" +msgstr "" +"Gagal bergabung ke thread, memory leak potensial terdeteksi - silahkan " +"jalankan ulang program" + +#: ../src/msw/utils.cpp:721 +#, c-format +msgid "Failed to kill process %d" +msgstr "Gagal untuk mematikan proses %d" + +#: ../src/common/iconbndl.cpp:66 +#, c-format +msgid "Failed to load image %d from file '%s'." +msgstr "Gagal untuk memuat citra %d dari file '%s'." + +#: ../src/msw/volume.cpp:347 +msgid "Failed to load mpr.dll." +msgstr "Gagal memuat mpr.dll." + +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 +#, c-format +msgid "Failed to load shared library '%s'" +msgstr "Gagal memuat shared library '%s'" + +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 +#, c-format +msgid "Failed to load shared library '%s' Error '%s'" +msgstr "Gagal memuat shared library '%s' Kesalahan '%s'" + +#: ../src/unix/snglinst.cpp:192 +#, c-format +msgid "Failed to lock the lock file '%s'" +msgstr "Gagal mengunci lock file '%s'" + +#: ../src/common/regex.cpp:251 +#, c-format +msgid "Failed to match '%s' in regular expression: %s" +msgstr "Gagal mencocokkan '%s' dalam regular expression: %s" + +#: ../src/common/filename.cpp:1667 +#, c-format +msgid "Failed to modify file times for '%s'" +msgstr "Gagal untuk memodifikasi waktu file untuk '%s'" + +#: ../src/common/filename.cpp:164 +#, c-format +msgid "Failed to open '%s' for %s" +msgstr "Gagal membuka '%s' untuk %s" + +#: ../src/common/filename.cpp:743 +msgid "Failed to open temporary file." +msgstr "Gagal membuka file sementara." + +#: ../src/msw/clipbrd.cpp:107 +msgid "Failed to open the clipboard." +msgstr "Gagal membuka clipboard." + +#: ../src/msw/clipbrd.cpp:616 +msgid "Failed to put data on the clipboard" +msgstr "Gagal meletakkan data pada clipboard." + +#: ../src/unix/snglinst.cpp:252 +msgid "Failed to read PID from lock file." +msgstr "Gagal membaca PID dari file lock." + +#: ../src/unix/utilsunx.cpp:635 +msgid "Failed to redirect child process input/output" +msgstr "Gagal mengarahkan kembali proses masukan/keluaran child" + +#: ../src/msw/utilsexc.cpp:605 +msgid "Failed to redirect the child process IO" +msgstr "Gagal mengarahkan kembali proses IO child" + +#: ../src/msw/dde.cpp:295 +#, c-format +msgid "Failed to register DDE server '%s'" +msgstr "Gagal meregister server DDE '%s'" + +#: ../src/common/fontmap.cpp:715 +#, c-format +msgid "Failed to remember the encoding for the charset '%s'." +msgstr "Gagal mengingat pengkodean untuk charset '%s'." + +#: ../src/unix/snglinst.cpp:296 +#, c-format +msgid "Failed to remove lock file '%s'" +msgstr "Gagal menghilangkan file lock '%s'" + +#: ../src/unix/snglinst.cpp:262 +#, c-format +msgid "Failed to remove stale lock file '%s'." +msgstr "Gagal menghilangkan file '%s' yang terhenti" + +#: ../src/msw/registry.cpp:443 +#, c-format +msgid "Failed to rename registry value '%s' to '%s'." +msgstr "Gagal mengganti nilai registry '%s' ke '%s'." + +#: ../src/msw/registry.cpp:543 +#, c-format +msgid "Failed to rename the registry key '%s' to '%s'." +msgstr "Gagal mengganti kunci registry '%s' to '%s'." + +#: ../src/msw/clipbrd.cpp:505 +msgid "Failed to retrieve data from the clipboard." +msgstr "Gagal mengambil data dari clipboard." + +#: ../src/common/filename.cpp:1757 +#, c-format +msgid "Failed to retrieve file times for '%s'" +msgstr "Gagal mengambil waktu file untuk '%s'" + +#: ../src/msw/dialup.cpp:444 +msgid "Failed to retrieve text of RAS error message" +msgstr "Gagal mengambil teks dari pesan kesalahan RAS" + +#: ../src/msw/clipbrd.cpp:742 +msgid "Failed to retrieve the supported clipboard formats" +msgstr "Gagal mengmbil format-format clipboard yang didukung" + +#: ../src/msw/dde.cpp:658 +msgid "Failed to send DDE advise notification" +msgstr "Gagal mengirimkan pemberitahuan DDE advise" + +#: ../src/common/ftp.cpp:368 +#, c-format +msgid "Failed to set FTP transfer mode to %s." +msgstr "Gagal menetapkan mode transfer FTP ke %s." + +#: ../src/msw/clipbrd.cpp:379 +msgid "Failed to set clipboard data." +msgstr "Gagal menetapkan data clipboard." + +#: ../src/common/file.cpp:526 +msgid "Failed to set temporary file permissions" +msgstr "Gagal menetapkan permisi file sementara" + +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 +#, c-format +msgid "Failed to set thread priority %d." +msgstr "Gagal menetapkan prioritas thread %d." + +#: ../src/common/fs_mem.cpp:167 +#, c-format +msgid "Failed to store image '%s' to memory VFS!" +msgstr "Gagal menyimpan citra '%s' ke memory VFS!" + +#: ../src/unix/threadpsx.cpp:1425 +msgid "Failed to terminate a thread." +msgstr "Gagal menghentikan thread" + +#: ../src/msw/dde.cpp:632 +msgid "Failed to terminate the advise loop with DDE server" +msgstr "Gagal menghentikan advise loop dengan server DDE" + +#: ../src/msw/dialup.cpp:915 +#, c-format +msgid "Failed to terminate the dialup connection: %s" +msgstr "Gagal menghentikan koneksi dialup: %s" + +#: ../src/common/filename.cpp:1682 +#, c-format +msgid "Failed to touch the file '%s'" +msgstr "Gagal membuat file kosong '%s'" + +#: ../src/unix/snglinst.cpp:302 +#, c-format +msgid "Failed to unlock lock file '%s'" +msgstr "Gagal membuka kunci dari file lock '%s'" + +#: ../src/msw/dde.cpp:311 +#, c-format +msgid "Failed to unregister DDE server '%s'" +msgstr "Gagal melepas register server DDE '%s'" + +#: ../src/unix/snglinst.cpp:173 +#, c-format +msgid "Failed to write to lock file '%s'" +msgstr "Gagal menulis file lock '%s'" + +#: ../src/generic/logg.cpp:379 +msgid "Fatal error" +msgstr "Kesalahan fatal" + +#: ../src/common/log.cpp:453 +msgid "Fatal error: " +msgstr "Kesalahan fatal:" + +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 +msgid "Fatal error: exiting" +msgstr "Kesalahan fatal: keluar" + +#: ../src/mgl/bitmap.cpp:544 +#, c-format +msgid "File %s does not exist." +msgstr "File %s tidak ada." + +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 +#, c-format +msgid "File '%s' already exists, do you really want to overwrite it?" +msgstr "File '%s' sudah ada, apakah anda benar-benar ingin menimpanya?" + +#: ../src/msw/filedlg.cpp:518 +#, c-format +msgid "" +"File '%s' already exists.\n" +"Do you want to replace it?" +msgstr "" +"File '%s' sudah ada.\n" +"Apakah anda ingin menggantinya?" + +#: ../src/common/textcmn.cpp:158 +msgid "File couldn't be loaded." +msgstr "File tidak bisa dimuat." + +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 +msgid "File error" +msgstr "Kesalahan file" + +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 +msgid "File name exists already." +msgstr "Nama file sudah ada." + +#: ../src/msw/filedlg.cpp:366 +#, c-format +msgid "Files (%s)|%s" +msgstr "File-file (%s)|%s" + +#: ../src/html/helpfrm.cpp:367 +msgid "Find" +msgstr "Temukan" + +#: ../src/html/helpfrm.cpp:950 +msgid "Fixed font:" +msgstr "Huruf tetap:" + +#: ../src/common/paper.cpp:118 +msgid "Folio, 8 1/2 x 13 in" +msgstr "Folio, 8 1/2 x 13 inci" + +#: ../src/html/helpfrm.cpp:951 +msgid "Font size:" +msgstr "Ukuran huruf:" + +#: ../src/unix/utilsunx.cpp:578 +msgid "Fork failed" +msgstr "Fork gagal" + +#: ../src/common/dlgcmn.cpp:230 +msgid "Forward" +msgstr "Ke depan" + +#: ../src/common/resourc2.cpp:295 ../src/common/resourc2.cpp:1360 +#: ../src/common/resource.cpp:1814 ../src/common/resource.cpp:1944 +#: ../src/common/resource.cpp:3028 +msgid "Found " +msgstr "Menemukan" + +#: ../src/html/helpfrm.cpp:666 +#, c-format +msgid "Found %i matches" +msgstr "Menemukan %i sesuai" + +#: ../src/generic/prntdlgg.cpp:184 +msgid "From:" +msgstr "Dari:" + +#: ../src/common/imaggif.cpp:100 +msgid "GIF: Invalid gif index." +msgstr "GIF: indeks gif tidak sah." + +#: ../src/common/imaggif.cpp:75 +msgid "GIF: data stream seems to be truncated." +msgstr "GIF: stream data kelihatannya terpotong." + +#: ../src/common/imaggif.cpp:59 +msgid "GIF: error in GIF image format." +msgstr "GIF: kesalahan pada format citra GIF" + +#: ../src/common/imaggif.cpp:62 +msgid "GIF: not enough memory." +msgstr "GIF: tidak cukup memory." + +#: ../src/common/imaggif.cpp:65 +msgid "GIF: unknown error!!!" +msgstr "GIF: error tidak diketahui!!!" + +#: ../src/univ/themes/gtk.cpp:623 +msgid "GTK+ theme" +msgstr "Tema GTK+" + +#: ../src/common/paper.cpp:142 +msgid "German Legal Fanfold, 8 1/2 x 13 in" +msgstr "German Legal Fanfold, 8 1/2 x 13 inci" + +#: ../src/common/paper.cpp:141 +msgid "German Std Fanfold, 8 1/2 x 12 in" +msgstr "German Std Fanfold, 8 1/2 x 12 inci" + +#: ../src/common/image.cpp:762 +msgid "GetUnusedColour:: No Unused Color in image " +msgstr "GetUnusedColour:: Tidak ada Unused Color dalam citra" + +#: ../src/html/helpfrm.cpp:511 +msgid "Go back" +msgstr "Kembali" + +#: ../src/html/helpfrm.cpp:514 +msgid "Go forward" +msgstr "Ke depan" + +#: ../src/html/helpfrm.cpp:519 +msgid "Go one level up in document hierarchy" +msgstr "Ke satu tingkat diatas dalam hirarki dokumen" + +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 +msgid "Go to home directory" +msgstr "Ke direktori home" + +#: ../src/generic/filedlgg.cpp:1113 +msgid "Go to parent directory" +msgstr "Ke direktori atasnya" + +#: ../src/common/prntbase.cpp:378 +msgid "Goto Page" +msgstr "Ke Halaman" + +#: ../src/common/fontmap.cpp:119 +msgid "Greek (ISO-8859-7)" +msgstr "Greek (ISO-8859-7)" + +#: ../src/html/htmlwin.cpp:354 +#, c-format +msgid "HTML anchor %s does not exist." +msgstr "Anchor HTML %s tidak ada." + +#: ../src/html/helpfrm.cpp:1307 +msgid "" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" +msgstr "" +"File-file HTML (*.htm)|*.htm|File-file HTML (*.html)|*.html|Buku pertolongan " +"(*.htb)|*.htb|Buku pertolongan (*.zip)|*.zip|Proyek Pertolongan HTML (*.hhp)|" +"*.hhp|Semua file (*.*)|*" + +#: ../src/common/fontmap.cpp:120 +msgid "Hebrew (ISO-8859-8)" +msgstr "Hebrew (ISO-8859-8)" + +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 +msgid "Help" +msgstr "Pertolongan" + +#: ../src/html/helpfrm.cpp:944 +msgid "Help Browser Options" +msgstr "Pilihan-pilihan Browser Pertolongan" + +#: ../src/generic/helphtml.cpp:334 ../src/generic/helphtml.cpp:335 +msgid "Help Index" +msgstr "Indeks Pertolongan" + +#: ../src/html/helpfrm.cpp:1291 +msgid "Help Printing" +msgstr "Pertolongan Pencetakan" + +#: ../src/html/helpctrl.cpp:49 +#, c-format +msgid "Help: %s" +msgstr "Pertolongan: %s" + +#: ../src/common/imagbmp.cpp:939 +msgid "ICO: Error in reading mask DIB." +msgstr "ICO: Kesalahan dalam membaca mask DIB" + +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 +msgid "ICO: Error writing the image file!" +msgstr "ICO: Kesalahan dalam menulis file citra!" + +#: ../src/common/imagbmp.cpp:1009 +msgid "ICO: Image too tall for an icon." +msgstr "ICO: Citra terlalu tinggi untuk suatu ikon" + +#: ../src/common/imagbmp.cpp:1015 +msgid "ICO: Image too wide for an icon." +msgstr "ICO: Citra terlalu lebar untuk suatu ikon" + +#: ../src/common/imagbmp.cpp:1248 +msgid "ICO: Invalid icon index." +msgstr "ICO: indeks ikon tidak sah." + +#: ../src/common/imagiff.cpp:767 +msgid "IFF: data stream seems to be truncated." +msgstr "IFF: stream data kelihatannya terpotong." + +#: ../src/common/imagiff.cpp:751 +msgid "IFF: error in IFF image format." +msgstr "IFF: kesalahan dalam format citra IFF." + +#: ../src/common/imagiff.cpp:754 +msgid "IFF: not enough memory." +msgstr "IFF: memory tidak cukup." + +#: ../src/common/imagiff.cpp:757 +msgid "IFF: unknown error!!!" +msgstr "IFF: kesalahan yang tidak diketahui!!!" + +#: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 +#: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 +#, c-format +msgid "Icon resource specification %s not found." +msgstr "Spesifikasi sesumber ikon %s tidak ditemukan." + +#: ../src/common/resource.cpp:250 +msgid "Ill-formed resource file syntax." +msgstr "Bentuk sintaksis file sesumber tidak tepat" + +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 +msgid "Illegal directory name." +msgstr "Nama direktori tidak sah." + +#: ../src/generic/filedlgg.cpp:1365 +msgid "Illegal file specification." +msgstr "Spesifikasi file tidak sah." + +#: ../src/common/image.cpp:785 +msgid "Image and Mask have different sizes" +msgstr "Citra dan Mask mempunyai ukuran yang berlainan." + +#: ../src/common/image.cpp:1067 +#, c-format +msgid "Image file is not of type %d." +msgstr "File citra bukan bukan merupakan tipe %d." + +#: ../src/msw/textctrl.cpp:270 +msgid "" +"Impossible to create a rich edit control, using simple text control instead. " +"Please reinstall riched32.dll" +msgstr "" +"Tidak mungkin menciptakan suatu kontrol rich edit, menggunakan kontrol text " +"sederhana sebagai gantinya. Silahkan install ulang riched32.dll" + +#: ../src/unix/utilsunx.cpp:390 +msgid "Impossible to get child process input" +msgstr "Tidak mungkin memperoleh masukan dari proses anak" + +#: ../src/common/filefn.cpp:1133 +#, c-format +msgid "Impossible to get permissions for file '%s'" +msgstr "Tidak mungkin memperoleh permisi file '%s'" + +#: ../src/common/filefn.cpp:1147 +#, c-format +msgid "Impossible to overwrite the file '%s'" +msgstr "Tidak mungkin menimpa file '%s'" + +#: ../src/common/filefn.cpp:1198 +#, c-format +msgid "Impossible to set permissions for the file '%s'" +msgstr "Tidak mungkin mengubah permisi file '%s'" + +#: ../src/html/helpfrm.cpp:392 +msgid "Index" +msgstr "Indeks" + +#: ../src/common/fontmap.cpp:124 +msgid "Indian (ISO-8859-12)" +msgstr "Indian (ISO-8859-12)" + +#: ../src/common/imagtiff.cpp:183 +msgid "Invalid TIFF image index." +msgstr "Indeks citra TIFF tidak sah." + +#: ../contrib/src/xrc/xmlres.cpp:362 +#, c-format +msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." +msgstr "Sesumber XRC '%s' tidak sah: tidak mempunyai titik akar 'resource'." + +#: ../src/common/appcmn.cpp:399 +#, c-format +msgid "Invalid display mode specification '%s'." +msgstr "Spesifikasi mode tampilan %s tidak sah." + +#: ../src/x11/app.cpp:218 +#, c-format +msgid "Invalid geometry specification '%s'" +msgstr "Spesifikasi geomtri '%s' tidak sah" + +#: ../src/unix/snglinst.cpp:280 +#, c-format +msgid "Invalid lock file '%s'." +msgstr "File lock tidak sah '%s'." + +#: ../src/common/regex.cpp:173 +#, c-format +msgid "Invalid regular expression '%s': %s" +msgstr "Regular expression tidak sah '%s': %s" + +#: ../src/generic/fontdlgg.cpp:228 +msgid "Italic" +msgstr "Miring" + +#: ../src/common/paper.cpp:137 +msgid "Italy Envelope, 110 x 230 mm" +msgstr "Amplop Italia, 110 x 230 mm" + +#: ../src/common/imagjpeg.cpp:222 +msgid "JPEG: Couldn't load - file is probably corrupted." +msgstr "JPEG: Tidak bisa memuat - file mungkin rusak." + +#: ../src/common/imagjpeg.cpp:336 +msgid "JPEG: Couldn't save image." +msgstr "JPEG: Tidak bisa menyimpan citra." + +#: ../src/common/fontmap.cpp:128 +msgid "KOI8-R" +msgstr "KOI8-R" + +#: ../src/generic/prntdlgg.cpp:426 ../src/generic/prntdlgg.cpp:620 +msgid "Landscape" +msgstr "Memanjang" + +#: ../src/common/paper.cpp:110 +msgid "Ledger, 17 x 11 in" +msgstr "Ledger, 17 x 11 in" + +#: ../src/generic/prntdlgg.cpp:632 +msgid "Left margin (mm):" +msgstr "Batas kiri (mm):" + +#: ../src/common/paper.cpp:103 +msgid "Legal, 8 1/2 x 14 in" +msgstr "Legal, 8 1/2 x 14 inci" + +#: ../src/common/paper.cpp:108 +msgid "Letter Small, 8 1/2 x 11 in" +msgstr "Surat Kecil, 8 1/2 x 11 inci" + +#: ../src/common/paper.cpp:102 +msgid "Letter, 8 1/2 x 11 in" +msgstr "Surat, 8 1/2 x 11 inci" + +#: ../src/generic/fontdlgg.cpp:231 +msgid "Light" +msgstr "Light" + +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 +#, c-format +msgid "Load %s file" +msgstr "Memuat file %s" + +#: ../src/generic/filedlgg.cpp:1625 +msgid "Load file" +msgstr "Memuat file" + +#: ../src/html/htmlwin.cpp:282 +msgid "Loading : " +msgstr "Memuat:" + +#: ../src/common/imagpnm.cpp:72 +msgid "Loading Grey Ascii PNM image is not yet implemented." +msgstr "Memuat citra PNM Ascii Abu-abu belum diimplementasikan." + +#: ../src/common/imagpnm.cpp:75 +msgid "Loading Grey Raw PNM image is not yet implemented." +msgstr "Memuat citra PNM Mentah Abu-abu belum diimplementasikan." + +#: ../src/generic/logg.cpp:554 +#, c-format +msgid "Log saved to the file '%s'." +msgstr "Log disimpan ke file '%s'." + +#: ../src/gtk/mdi.cpp:433 +msgid "MDI child" +msgstr "child MDI" + +#: ../src/msw/helpchm.cpp:60 +msgid "" +"MS HTML Help functions are unavailable because the MS HTML Help library is " +"not installed on this machine. Please install it." +msgstr "" +"Fungsi-fungsi MS HTML Help tidak tersedia karena pustaka MS HTML Help tidak " +"terinstall di mesin ini. Silahkan install." + +#: ../src/univ/themes/win32.cpp:4545 +msgid "Ma&ximize" +msgstr "Ma&ksimalkan" + +#: ../src/unix/mimetype.cpp:2497 +#, c-format +msgid "Mailcap file %s, line %d: incomplete entry ignored." +msgstr "File Mailcap %s, baris %d: isian tidak lengkap diacuhkan." + +#: ../src/generic/fdrepdlg.cpp:152 +msgid "Match case" +msgstr "Sesuaikan besar kecil huruf" + +#: ../src/common/fs_mem.cpp:144 +#, c-format +msgid "Memory VFS already contains file '%s'!" +msgstr "Memory VFS telah terisi file '%s'!" + +#: ../src/univ/themes/metal.cpp:174 +msgid "Metal theme" +msgstr "Tema Metal" + +#: ../src/univ/themes/win32.cpp:4543 +msgid "Mi&nimize" +msgstr "Mi%nimalkan" + +#: ../src/unix/mimetype.cpp:2118 +#, c-format +msgid "Mime.types file %s, line %d: unterminated quoted string." +msgstr "File Mime.types %s, baris %d: kutipan string tidak berujung" + +#: ../src/mgl/app.cpp:173 +#, c-format +msgid "Mode %ix%i-%i not available." +msgstr "Mode %ix%i-%i tidak tersedia." + +#: ../src/generic/fontdlgg.cpp:223 +msgid "Modern" +msgstr "Modern" + +#: ../src/common/paper.cpp:138 +msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" +msgstr "Amplop Monarch, 3 7/8 x 7 1/2 inci" + +#: ../src/common/dlgcmn.cpp:239 +msgid "More..." +msgstr "Lebih..." + +#: ../src/generic/filedlgg.cpp:703 +msgid "Name" +msgstr "Nama" + +#: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 +msgid "NewName" +msgstr "NamaBaru" + +#: ../src/html/helpfrm.cpp:525 +msgid "Next page" +msgstr "Halaman berikut" + +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 +#: ../src/motif/msgdlg.cpp:182 +msgid "No" +msgstr "Tidak" + +#: ../src/common/image.cpp:793 +msgid "No Unused Color in image being masked" +msgstr "Tidak ada Unused Color dalam citra yang sedang di-mask" + +#: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 +#: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 +msgid "No XBM facility available!" +msgstr "Tidak ada fasilitas XBM tersedia!" + +#: ../src/common/resourc2.cpp:983 ../src/common/resource.cpp:2643 +msgid "No XPM icon facility available!" +msgstr "Tidak ada fasilitas ikon XPM tersedia!" + +#: ../src/generic/helphtml.cpp:329 +msgid "No entries found." +msgstr "Tidak ada yang ditemukan." + +#: ../src/common/fontmap.cpp:906 +#, c-format +msgid "" +"No font for displaying text in encoding '%s' found,\n" +"but an alternative encoding '%s' is available.\n" +"Do you want to use this encoding (otherwise you will have to choose another " +"one)?" +msgstr "" +"Tidak ada huruf untuk menampilkan teks dalam pengkodean '%s' ditemukan,\n" +" tetapi alternatif pengkodean '%s' tersedia.\n" +"Apakah anda ingin menggunakan pengkodean ini (jika tidak anda harus memilih " +"lainnya)?" + +#: ../src/common/fontmap.cpp:911 +#, c-format +msgid "" +"No font for displaying text in encoding '%s' found.\n" +"Would you like to select a font to be used for this encoding\n" +"(otherwise the text in this encoding will not be shown correctly)?" +msgstr "" +"Tidak ada huruf untuk menampilkan teks dalam pengkodean '%s' ditemukan.\n" +"Apakah anda mau memilih huruf yang akan digunakan untuk pengkodean\n" +"(jika tidak teks dalam pengkodean tidak akan diperlihatkan secara benar)?" + +#: ../contrib/src/xrc/xmlres.cpp:557 +#, c-format +msgid "No handler found for XML node '%s', class '%s'!" +msgstr "Tidak ada handler yang ditemukan untuk titik XML '%s', class '%s'!" + +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 +msgid "No handler found for image type." +msgstr "Tidak ada handler ditemukan untuk tipe citra." + +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 +#, c-format +msgid "No image handler for type %d defined." +msgstr "Tidak ada handler citra untuk tipe %d didefinisikan." + +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 +#, c-format +msgid "No image handler for type %s defined." +msgstr "Tidak ada handler citra untuk tipe %s didefinisikan." + +#: ../src/html/helpfrm.cpp:655 +msgid "No matching page found yet" +msgstr "Tidak ada halaman yang sesuai ditemukan" + +#: ../src/common/fontmap.cpp:122 +msgid "Nordic (ISO-8859-10)" +msgstr "Nordic (ISO-8859-10)" + +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 +msgid "Normal" +msgstr "Normal" + +#: ../src/html/helpfrm.cpp:949 +msgid "Normal font:" +msgstr "Huruf normal:" + +#: ../src/common/paper.cpp:122 +msgid "Note, 8 1/2 x 11 in" +msgstr "Catatan, 8 1/2 x 11 in" + +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 +#: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 +#: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 +#: ../src/html/helpfrm.cpp:974 +msgid "OK" +msgstr "OK" + +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 +msgid "Open HTML document" +msgstr "Buka dokumen HTML" + +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 +msgid "Operation not permitted." +msgstr "Operasi tidak diijinkan" + +#: ../src/common/cmdline.cpp:667 +#, c-format +msgid "Option '%s' requires a value, '=' expected." +msgstr "Pilihan '%s' memerlukan suatu nilai, '=' diharapkan." + +#: ../src/common/cmdline.cpp:687 +#, c-format +msgid "Option '%s' requires a value." +msgstr "Pilihan '%s' memerlukan suatu nilai." + +#: ../src/common/cmdline.cpp:748 +#, c-format +msgid "Option '%s': '%s' cannot be converted to a date." +msgstr "Pilihan '%s': '%s' tidak bisa dikonversi ke suatu tanggal." + +#: ../src/generic/prntdlgg.cpp:432 +msgid "Options" +msgstr "Pilihan-pilihan" + +#: ../src/generic/prntdlgg.cpp:428 ../src/generic/prntdlgg.cpp:621 +msgid "Orientation" +msgstr "Orientasi" + +#: ../src/common/imagpcx.cpp:455 ../src/common/imagpcx.cpp:478 +msgid "PCX: couldn't allocate memory" +msgstr "PCX: tidak bisa mengalokasikan memory" + +#: ../src/common/imagpcx.cpp:454 +msgid "PCX: image format unsupported" +msgstr "PCX: format citra tidak didukung" + +#: ../src/common/imagpcx.cpp:477 +msgid "PCX: invalid image" +msgstr "PCX: citra tidak sah" + +#: ../src/common/imagpcx.cpp:441 +msgid "PCX: this is not a PCX file." +msgstr "PCX: ini bukan file PCX." + +#: ../src/common/imagpcx.cpp:457 ../src/common/imagpcx.cpp:479 +msgid "PCX: unknown error !!!" +msgstr "PCX: kesalahan tidak diketahui !!!" + +#: ../src/common/imagpcx.cpp:456 +msgid "PCX: version number too low" +msgstr "PCX: nomor versi terlalu rendah" + +#: ../src/common/imagpnm.cpp:96 +msgid "PNM: Couldn't allocate memory." +msgstr "PNM: Tidak bisa mengalokasikan memory." + +#: ../src/common/imagpnm.cpp:80 +msgid "PNM: File format is not recognized." +msgstr "PNM: format file tidak dikenali" + +#: ../src/common/imagpnm.cpp:112 +msgid "PNM: File seems truncated." +msgstr "PNM: Kelihatannya file terpotong." + +#: ../src/common/prntbase.cpp:826 +#, c-format +msgid "Page %d" +msgstr "Halaman %d" + +#: ../src/common/prntbase.cpp:824 +#, c-format +msgid "Page %d of %d" +msgstr "Halaman %d dari %d" + +#: ../src/generic/prntdlgg.cpp:587 +msgid "Page Setup" +msgstr "Atur Halaman" + +#: ../src/generic/prntdlgg.cpp:161 +msgid "Pages" +msgstr "Halaman-halaman" + +#: ../src/generic/prntdlgg.cpp:538 ../src/generic/prntdlgg.cpp:609 +#: ../src/generic/prntdlgg.cpp:794 +msgid "Paper Size" +msgstr "Ukuran Kertas" + +#: ../src/generic/prntdlgg.cpp:418 ../src/generic/prntdlgg.cpp:598 +#: ../src/generic/prntdlgg.cpp:790 +msgid "Paper size" +msgstr "Ukuran kertas" + +#: ../src/generic/filedlgg.cpp:708 +msgid "Permissions" +msgstr "Permisi" + +#: ../src/unix/utilsunx.cpp:441 +msgid "Pipe creation failed" +msgstr "Pembuatan pipa gagal" + +#: ../src/gtk/fontdlg.cpp:71 +msgid "Please choose a valid font." +msgstr "Silahkan piliha huruf yang sah." + +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 +msgid "Please choose an existing file." +msgstr "Silahkan memilih file yang ada." + +#: ../src/msw/dialup.cpp:749 +msgid "Please choose which ISP do you want to connect to" +msgstr "Silahkan pilih, anda ingin koneksi ke ISP mana" + +#: ../src/msw/listctrl.cpp:550 +#, c-format +msgid "" +"Please install a newer version of comctl32.dll\n" +"(at least version 4.70 is required but you have %d.%02d)\n" +"or this program won't operate correctly." +msgstr "" +"Silahkan install versi yang lebih baru dari comctl32.dll\n" +"(setidaknya versi 4.70 diperlukan tetapi anda mempunyai %d.%02d)\n" +"atau program ini tidak akan beroperasi dengan benar." + +#: ../src/common/prntbase.cpp:111 +msgid "Please wait while printing\n" +msgstr "Tunggu sebentar, sedang mencetak\n" + +#: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 +msgid "Portrait" +msgstr "Membujur" + +#: ../src/generic/prntdlgg.cpp:268 +msgid "PostScript file" +msgstr "File Postcript" + +#: ../src/html/helpfrm.cpp:966 +msgid "Preview:" +msgstr "Preview:" + +#: ../src/html/helpfrm.cpp:522 +msgid "Previous page" +msgstr "Halaman sebelumnya" + +#: ../src/generic/prntdlgg.cpp:110 ../src/generic/prntdlgg.cpp:124 +msgid "Print" +msgstr "Cetak" + +#: ../src/common/docview.cpp:925 +msgid "Print Preview" +msgstr "Preview Pencetakan" + +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 +msgid "Print Preview Failure" +msgstr "Gagal Preview Pencetakan" + +#: ../src/generic/prntdlgg.cpp:169 +msgid "Print Range" +msgstr "Jangkauan Cetakan" + +#: ../src/generic/prntdlgg.cpp:406 +msgid "Print Setup" +msgstr "Atur Cetakan" + +#: ../src/generic/prntdlgg.cpp:440 +msgid "Print in colour" +msgstr "Cetak berwarna" + +#: ../src/generic/prntdlgg.cpp:442 +msgid "Print spooling" +msgstr "Pen-spool-an pencetakan" + +#: ../src/html/helpfrm.cpp:539 +msgid "Print this page" +msgstr "Cetak halaman ini" + +#: ../src/generic/prntdlgg.cpp:147 +msgid "Print to File" +msgstr "Cetak ke File" + +#: ../src/common/prntbase.cpp:435 +msgid "Print..." +msgstr "Cetak..." + +#: ../src/generic/prntdlgg.cpp:444 +msgid "Printer command:" +msgstr "Perintah pencetak:" + +#: ../src/generic/prntdlgg.cpp:146 +msgid "Printer options" +msgstr "Pilihan-pilihan pencetak" + +#: ../src/generic/prntdlgg.cpp:448 +msgid "Printer options:" +msgstr "Pilihan-pilihan Pencetak:" + +#: ../src/generic/prntdlgg.cpp:665 +msgid "Printer..." +msgstr "Pencetak..." + +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 +msgid "Printing " +msgstr "Mencetak" + +#: ../src/common/prntbase.cpp:125 +msgid "Printing Error" +msgstr "Kesalahan Mencetak" + +#: ../src/generic/printps.cpp:221 +#, c-format +msgid "Printing page %d..." +msgstr "Mencetak halaman %d..." + +#: ../src/generic/printps.cpp:181 +msgid "Printing..." +msgstr "Mencetak..." + +#: ../src/common/log.cpp:454 +msgid "Program aborted." +msgstr "Program dibatalkan." + +#: ../src/common/paper.cpp:119 +msgid "Quarto, 215 x 275 mm" +msgstr "Kuarto, 215 x 275 mm" + +#: ../src/generic/logg.cpp:1111 +msgid "Question" +msgstr "Pertanyaan" + +#: ../src/common/ffile.cpp:125 ../src/common/ffile.cpp:146 +#, c-format +msgid "Read error on file '%s'" +msgstr "Kesalahan membaca pada file '%s'" + +#: ../contrib/src/xrc/xmlres.cpp:532 +#, c-format +msgid "Referenced object node with ref=\"%s\" not found!" +msgstr "Titik obyek tereferensi dengan ref=\"%s\" tidak ditemukan" + +#: ../src/msw/registry.cpp:535 +#, c-format +msgid "Registry key '%s' already exists." +msgstr "Kunci registry '%s' sudah ada." + +#: ../src/msw/registry.cpp:504 +#, c-format +msgid "Registry key '%s' does not exist, cannot rename it." +msgstr "Kunci registry '%s' tidak ada, tidak bisa mengubah namanya." + +#: ../src/msw/registry.cpp:631 +#, c-format +msgid "" +"Registry key '%s' is needed for normal system operation,\n" +"deleting it will leave your system in unusable state:\n" +"operation aborted." +msgstr "" +"Kunci registry '%s' diperlukan untuk operasi sistem normal,\n" +" menghapusnya akan menyebabkan sistem anda tidak stabil:\n" +" operasi dibatalkan." + +#: ../src/msw/registry.cpp:435 +#, c-format +msgid "Registry value '%s' already exists." +msgstr "Nilai registry '%s' sudah ada." + +#: ../src/generic/helphtml.cpp:334 +msgid "Relevant entries:" +msgstr "Entri relevan" + +#: ../src/generic/progdlgg.cpp:199 +msgid "Remaining time : " +msgstr "Waktu tersisa :" + +#: ../src/html/helpfrm.cpp:329 +msgid "Remove current page from bookmarks" +msgstr "Hilangkan halaman saat ini dari bookmark" + +#: ../src/generic/fdrepdlg.cpp:177 +msgid "Replace &all" +msgstr "Ganti &semua" + +#: ../src/generic/fdrepdlg.cpp:129 +msgid "Replace with:" +msgstr "Ganti dengan:" + +#: ../contrib/src/xrc/xmlres.cpp:379 +msgid "Resource files must have same version number!" +msgstr "File sesumber harus mempunyai nomor versi yang sama!" + +#: ../src/generic/prntdlgg.cpp:644 +msgid "Right margin (mm):" +msgstr "Batas kanan (mm):" + +#: ../src/generic/fontdlgg.cpp:221 +msgid "Roman" +msgstr "Roman" + +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 +#, c-format +msgid "Save %s file" +msgstr "Simpan file %s" + +#: ../src/common/docview.cpp:248 +msgid "Save as" +msgstr "Simpan sebagai" + +#: ../src/generic/filedlgg.cpp:1640 +msgid "Save file" +msgstr "Simpan file " + +#: ../src/generic/logg.cpp:487 +msgid "Save log contents to file" +msgstr "Simpan isi log ke file" + +#: ../src/generic/fontdlgg.cpp:224 +msgid "Script" +msgstr "Skrip" + +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 +msgid "Search" +msgstr "Mencari" + +#: ../src/html/helpfrm.cpp:415 +msgid "" +"Search contents of help book(s) for all occurences of the text you typed " +"above" +msgstr "" +"Mencari isi dari buku pertolongan untuk semua pemunculan dari teks yang anda " +"ketikkan diatas" + +#: ../src/generic/fdrepdlg.cpp:158 +msgid "Search direction" +msgstr "Arah pencarian" + +#: ../src/generic/fdrepdlg.cpp:117 +msgid "Search for:" +msgstr "Mencari:" + +#: ../src/html/helpfrm.cpp:794 +msgid "Search in all books" +msgstr "Mencari di semua buku" + +#: ../src/html/helpfrm.cpp:655 +msgid "Searching..." +msgstr "Mencari..." + +#: ../src/generic/dirctrlg.cpp:551 +msgid "Sections" +msgstr "Seksi" + +#: ../src/common/ffile.cpp:213 +#, c-format +msgid "Seek error on file '%s'" +msgstr "Kesalahan seek pada file '%s'" + +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Pilih file" + +#: ../src/common/docview.cpp:1540 +msgid "Select a document template" +msgstr "Pilih template dokumen" + +#: ../src/common/docview.cpp:1616 +msgid "Select a document view" +msgstr "Pilih pandangan dokumen" + +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 +msgid "Select a file" +msgstr "Pilih file" + +#: ../src/common/cmdline.cpp:704 +#, c-format +msgid "Separator expected after the option '%s'." +msgstr "Pemisah diharapkan setelah pilihan '%s'." + +#: ../src/common/dlgcmn.cpp:236 +msgid "Setup" +msgstr "Atur" + +#: ../src/generic/prntdlgg.cpp:152 +msgid "Setup..." +msgstr "Atur..." + +#: ../src/msw/dialup.cpp:520 +msgid "Several active dialup connections found, choosing one randomly." +msgstr "Banyak koneksi dialup aktif ditemukan, pilih satu secara acak." + +#: ../src/html/helpfrm.cpp:369 +msgid "Show all" +msgstr "Tampilkan semua" + +#: ../src/html/helpfrm.cpp:380 +msgid "Show all items in index" +msgstr "Tampilkan semua item dalam indeks" + +#: ../src/generic/dirdlgg.cpp:135 +msgid "Show hidden directories" +msgstr "Tampilkan direktori-direktori tersembunyi" + +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 +msgid "Show hidden files" +msgstr "Tampilkan file-file tersembunyi" + +#: ../src/html/helpfrm.cpp:506 +msgid "Show/hide navigation panel" +msgstr "Tampilkan/Sembunyikan panel navigasi" + +#: ../src/generic/filedlgg.cpp:704 +msgid "Size" +msgstr "Ukuran" + +#: ../src/generic/fontdlgg.cpp:229 +msgid "Slant" +msgstr "Sudut pandang" + +#: ../src/common/docview.cpp:305 +msgid "Sorry, could not open this file for saving." +msgstr "Maaf, tidak bisa membuka file untuk menyimpan." + +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 +msgid "Sorry, could not open this file." +msgstr "Maaf, tidak bisa membuka file ini." + +#: ../src/common/docview.cpp:312 +msgid "Sorry, could not save this file." +msgstr "Maaf, tidak bisa menyimpan file ini." + +#: ../src/common/prntbase.cpp:781 +msgid "Sorry, not enough memory to create a preview." +msgstr "Maaf, tidak cukup memory untuk menciptakan preview." + +#: ../src/common/paper.cpp:111 +msgid "Statement, 5 1/2 x 8 1/2 in" +msgstr "Pernyataan, 5 1/2 x 8 1/2 inci" + +#: ../src/generic/logg.cpp:604 +msgid "Status: " +msgstr "Status:" + +#: ../contrib/src/xrc/xmlres.cpp:632 +#, c-format +msgid "Subclass '%s' not found for resource '%s', not subclassing!" +msgstr "" +"Subclass '%s' tidak ditemukan untuk sesumber '%s', bukan pen-subklas-an" + +#: ../src/generic/fontdlgg.cpp:225 +msgid "Swiss" +msgstr "Swiss" + +#: ../src/common/imagtiff.cpp:204 ../src/common/imagtiff.cpp:215 +#: ../src/common/imagtiff.cpp:326 +msgid "TIFF: Couldn't allocate memory." +msgstr "TIFF: Tidak bisa mengalokasikan memory." + +#: ../src/common/imagtiff.cpp:175 +msgid "TIFF: Error loading image." +msgstr "TIFF: Kesalahan memuat citra." + +#: ../src/common/imagtiff.cpp:226 +msgid "TIFF: Error reading image." +msgstr "TIFF: Kesalahan membaca citra." + +#: ../src/common/imagtiff.cpp:303 +msgid "TIFF: Error saving image." +msgstr "TIFF: Kesalahan menyimpan citra." + +#: ../src/common/imagtiff.cpp:350 +msgid "TIFF: Error writing image." +msgstr "TIFF: Kesalahan menulis citra." + +#: ../src/common/paper.cpp:109 +msgid "Tabloid, 11 x 17 in" +msgstr "Tabloid, 11 x 17 inci" + +#: ../src/generic/fontdlgg.cpp:226 +msgid "Teletype" +msgstr "Teletype" + +#: ../src/common/docview.cpp:1541 +msgid "Templates" +msgstr "Template" + +#: ../src/common/fontmap.cpp:123 +msgid "Thai (ISO-8859-11)" +msgstr "Thai (ISO-8859-11)" + +#: ../src/common/ftp.cpp:569 +msgid "The FTP server doesn't support passive mode." +msgstr "Server FTP tidak mendukung mode passive" + +#: ../src/common/fontmap.cpp:674 +#, c-format +msgid "" +"The charset '%s' is unknown. You may select\n" +"another charset to replace it with or choose\n" +"[Cancel] if it cannot be replaced" +msgstr "" +"Charset '%s' tidak diketahui. Anda bisa memilih\n" +" charset lainnya untuk menggantinya atau memilih\n" +" [Batal] jika tidak bisa diganti" + +#: ../src/msw/ole/dataobj.cpp:165 +#, c-format +msgid "The clipboard format '%d' doesn't exist." +msgstr "Format clipboard '%d' tidak ada." + +#: ../src/generic/dirdlgg.cpp:186 +#, c-format +msgid "" +"The directory '%s' does not exist\n" +"Create it now?" +msgstr "" +"Direktori '%s' tidak ada\n" +" Buat sekarang?" + +#: ../src/common/docview.cpp:1804 +#, c-format +msgid "" +"The file '%s' doesn't exist and couldn't be opened.\n" +"It has been removed from the most recently used files list." +msgstr "" +"File '%s' tidak ada dan tidak bisa dibuka.\n" +" File tersebut telah dihilangkan dari daftar file-file yang paling banyak " +"digunakan." + +#: ../src/common/filename.cpp:900 +#, c-format +msgid "The path '%s' contains too many \"..\"!" +msgstr "Path '%s' berisi terlalu banyak \"..\"!" + +#: ../src/common/cmdline.cpp:846 +#, c-format +msgid "The required parameter '%s' was not specified." +msgstr "Parameter '%s' yang diperlukan tidak dispesifikasikan." + +#: ../src/common/textcmn.cpp:187 +msgid "The text couldn't be saved." +msgstr "Teks tidak bisa disimpan." + +#: ../src/common/cmdline.cpp:825 +#, c-format +msgid "The value for the option '%s' must be specified." +msgstr "Nilai untuk pilihan '%s' harus dispesifikasikan." + +#: ../src/msw/dialup.cpp:408 +#, c-format +msgid "" +"The version of remote access service (RAS) installed on this machine is " +"tooold, please upgrade (the following required function is missing: %s)." +msgstr "" +"Versi dari remote access service (RAS) terinstall di mesin ini terlalu tua, " +"silahkan perbaharui (fungsi yang diperlukan berikut ini hilang %s)." + +#: ../src/html/htmprint.cpp:540 +msgid "" +"There was a problem during page setup: you may need to set a default printer." +msgstr "" +"Ada masalah pada saat mengatur halaman: anda mungkin perlu menetapkan " +"pencetak default." + +#: ../src/msw/thread.cpp:1214 +msgid "" +"Thread module initialization failed: can not store value in thread local " +"storage" +msgstr "" +"Inisialisasi modul thread gagal: tidak bisa menyimpan nilai dalam " +"penyimpanan thread lokal" + +#: ../src/unix/threadpsx.cpp:1596 +msgid "Thread module initialization failed: failed to create thread key" +msgstr "Inisialisasi modul thread gagal: gagal menciptakan kunci thread" + +#: ../src/msw/thread.cpp:1202 +msgid "" +"Thread module initialization failed: impossible to allocate index in thread " +"local storage" +msgstr "" +"Inisialisasi modul thread gagal: tidak mungkin mengalokasikan indeks dalam " +"penyimpanan thread lokal" + +#: ../src/unix/threadpsx.cpp:1104 +msgid "Thread priority setting is ignored." +msgstr "Pentetapan prioritas thread diabaikan." + +#: ../src/msw/mdi.cpp:189 +msgid "Tile &Horizontally" +msgstr "Tile &Horizontal" + +#: ../src/msw/mdi.cpp:190 +msgid "Tile &Vertically" +msgstr "Tile &Vertikal" + +#: ../src/generic/filedlgg.cpp:706 +msgid "Time" +msgstr "Waktu" + +#: ../src/generic/tipdlg.cpp:202 +msgid "Tip of the Day" +msgstr "Tip Hari Ini" + +#: ../src/generic/tipdlg.cpp:140 +msgid "Tips not available, sorry!" +msgstr "Tip tidak tersedia, maaf!" + +#: ../src/generic/prntdlgg.cpp:188 +msgid "To:" +msgstr "Kepada:" + +#: ../src/generic/prntdlgg.cpp:633 +msgid "Top margin (mm):" +msgstr "Batas atas (mm):" + +#: ../src/common/fs_mem.cpp:202 +#, c-format +msgid "Trying to remove file '%s' from memory VFS, but it is not loaded!" +msgstr "" +"Mencoba menghilangkan file '%s' dari memory VFS, tetapi file tersebut " +"termuat!" + +#: ../src/common/sckaddr.cpp:126 +msgid "Trying to solve a NULL hostname: giving up" +msgstr "Mencoba memecahkan nama host NULL: menyerah" + +#: ../src/common/fontmap.cpp:121 +msgid "Turkish (ISO-8859-9)" +msgstr "Turkish (ISO-8859-9)" + +#: ../src/common/paper.cpp:140 +msgid "US Std Fanfold, 14 7/8 x 11 in" +msgstr "US Std Fanfold, 14 7/8 x 11 inci" + +#: ../src/html/htmlwin.cpp:270 +#, c-format +msgid "Unable to open requested HTML document: %s" +msgstr "Tidak mampu membuka dokumen HTML yang diminta: %s" + +#: ../src/generic/fontdlgg.cpp:250 +msgid "Underline" +msgstr "Garis bawah" + +#: ../src/common/resourc2.cpp:305 ../src/common/resourc2.cpp:319 +#: ../src/common/resourc2.cpp:335 ../src/common/resourc2.cpp:349 +#: ../src/common/resourc2.cpp:1370 ../src/common/resourc2.cpp:1384 +#: ../src/common/resourc2.cpp:1400 ../src/common/resourc2.cpp:1414 +#: ../src/common/resource.cpp:1824 ../src/common/resource.cpp:1838 +#: ../src/common/resource.cpp:1855 ../src/common/resource.cpp:1869 +#: ../src/common/resource.cpp:1954 ../src/common/resource.cpp:1968 +#: ../src/common/resource.cpp:1984 ../src/common/resource.cpp:1998 +#: ../src/common/resource.cpp:3038 ../src/common/resource.cpp:3052 +#: ../src/common/resource.cpp:3069 ../src/common/resource.cpp:3083 +msgid "Unexpected end of file whilst parsing resource." +msgstr "Akhri file tidak diharapkan pada saat mem-parsing sesumber." + +#: ../src/common/cmdline.cpp:789 +#, c-format +msgid "Unexpected parameter '%s'" +msgstr "Parameter tidak diharapkan '%s'" + +#: ../src/common/fontmap.cpp:142 +msgid "Unicode 7 bit (UTF-7)" +msgstr "Unicode 7 bit (UTF-7)" + +#: ../src/common/fontmap.cpp:143 +msgid "Unicode 8 bit (UTF-8)" +msgstr "Unicode 8 bit (UTF-8)" + +#: ../src/msw/dde.cpp:1044 +#, c-format +msgid "Unknown DDE error %08x" +msgstr "Kesalahan DDE %08x tidak diketahui" + +#: ../src/common/fontmap.cpp:406 +#, c-format +msgid "Unknown encoding (%d)" +msgstr "Pengkodean tidak diketahui (%d)" + +#: ../src/unix/mimetype.cpp:2165 +#, c-format +msgid "Unknown field in file %s, line %d: '%s'." +msgstr "Field dalam file %s tidak diketahui, baris %d: '%s'." + +#: ../src/common/cmdline.cpp:565 +#, c-format +msgid "Unknown long option '%s'" +msgstr "Pilihan panjang '%s' tidak diketahui" + +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 +#, c-format +msgid "Unknown option '%s'" +msgstr "Pilihan '%s' tidak diketahui" + +#: ../contrib/src/xrc/xmlres.cpp:701 +msgid "Unknown style flag " +msgstr "Flag style tidak diketahui" + +#: ../src/common/mimecmn.cpp:167 +#, c-format +msgid "Unmatched '{' in an entry for mime type %s." +msgstr "'{' tidak sesuai dalam entri mime type %s." + +#: ../src/common/cmdproc.cpp:238 ../src/common/cmdproc.cpp:254 +#: ../src/common/cmdproc.cpp:281 +msgid "Unnamed command" +msgstr "Perintah tak bernama" + +#: ../src/common/resourc2.cpp:687 ../src/common/resource.cpp:2343 +#, c-format +msgid "Unrecognized style %s whilst parsing resource." +msgstr "Style %s tidak dikenali pada saat mem-parsing sesumber." + +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 +#: ../src/msw/clipbrd.cpp:447 +msgid "Unsupported clipboard format." +msgstr "Format clipboard tidak didukung." + +#: ../src/common/appcmn.cpp:383 +#, c-format +msgid "Unsupported theme '%s'." +msgstr "Tema '%s' tidak didukung." + +#: ../src/generic/fdrepdlg.cpp:157 +msgid "Up" +msgstr "Atas" + +#: ../src/common/cmdline.cpp:916 +#, c-format +msgid "Usage: %s" +msgstr "Penggunaan: %s" + +#: ../src/common/valtext.cpp:196 +msgid "Validation conflict" +msgstr "Konflik validasi" + +#: ../src/generic/filedlgg.cpp:1103 +msgid "View files as a detailed view" +msgstr "Tampilan file dalam tampilan rinci" + +#: ../src/generic/filedlgg.cpp:1096 +msgid "View files as a list view" +msgstr "Tampilkan file dalam tampilan daftar" + +#: ../src/common/docview.cpp:1617 +msgid "Views" +msgstr "Pandangan" + +#: ../src/unix/utilsunx.cpp:758 +msgid "Waiting for subprocess termination failed" +msgstr "Menunggu penghentian subproses gagal" + +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 +msgid "Warning" +msgstr "Peringatan" + +#: ../src/common/log.cpp:464 +msgid "Warning: " +msgstr "Peringatan:" + +#: ../src/html/htmlpars.cpp:362 +msgid "Warning: attempt to remove HTML tag handler from empty stack." +msgstr "Peringatan: berusaha menghilangkan handler tag HTML dari stack kosong." + +#: ../src/common/fontmap.cpp:113 +msgid "Western European (ISO-8859-1)" +msgstr "Western European (ISO-8859-1)" + +#: ../src/common/fontmap.cpp:127 +msgid "Western European with Euro (ISO-8859-15)" +msgstr "Western European with Euro (ISO-8859-15)" + +#: ../src/generic/fdrepdlg.cpp:149 +msgid "Whole word" +msgstr "Seluruh kata" + +#: ../src/html/helpfrm.cpp:412 +msgid "Whole words only" +msgstr "Hanya seluruh kata" + +#: ../src/univ/themes/win32.cpp:1168 +msgid "Win32 theme" +msgstr "Tema Win32" + +#: ../src/msw/utils.cpp:981 +msgid "Win32s on Windows 3.1" +msgstr "Win32 pada Windows 3.1" + +#: ../src/msw/utils.cpp:1013 +msgid "Windows 3.1" +msgstr "Windows 3.1" + +#: ../src/msw/utils.cpp:985 +#, c-format +msgid "Windows 9%c" +msgstr "Windows 9%c" + +#: ../src/common/fontmap.cpp:139 +msgid "Windows Arabic (CP 1256)" +msgstr "Windows Arabic (CP 1256)" + +#: ../src/common/fontmap.cpp:140 +msgid "Windows Baltic (CP 1257)" +msgstr "Windows Baltic (CP 1257)" + +#: ../src/common/fontmap.cpp:133 +msgid "Windows Central European (CP 1250)" +msgstr "Windows Central European (CP 1250)" + +#: ../src/common/fontmap.cpp:130 +msgid "Windows Chinese Simplified (CP 936)" +msgstr "Windows Chinese Simplified (CP 936)" + +#: ../src/common/fontmap.cpp:132 +msgid "Windows Chinese Traditional (CP 950)" +msgstr "Windows Chinese Traditional (CP 950)" + +#: ../src/common/fontmap.cpp:134 +msgid "Windows Cyrillic (CP 1251)" +msgstr "Windows Cyrillic (CP 1251)" + +#: ../src/common/fontmap.cpp:136 +msgid "Windows Greek (CP 1253)" +msgstr "Windows Greek (CP 1253)" + +#: ../src/common/fontmap.cpp:138 +msgid "Windows Hebrew (CP 1255)" +msgstr "Windows Hebrew (CP 1255)" + +#: ../src/common/fontmap.cpp:129 +msgid "Windows Japanese (CP 932)" +msgstr "Windows Japanese (CP 932)" + +#: ../src/common/fontmap.cpp:131 +msgid "Windows Korean (CP 949)" +msgstr "Windows Korean (CP 949)" + +#: ../src/common/fontmap.cpp:137 +msgid "Windows Turkish (CP 1254)" +msgstr "Windows Turkish (CP 1254)" + +#: ../src/common/fontmap.cpp:135 +msgid "Windows Western European (CP 1252)" +msgstr "Windows Western European (CP 1252)" + +#: ../src/common/fontmap.cpp:141 +msgid "Windows/DOS OEM (CP 437)" +msgstr "Windows/DOS OEM (CP 437)" + +#: ../src/common/ffile.cpp:160 +#, c-format +msgid "Write error on file '%s'" +msgstr "Kesalahan menulis pada file '%s'" + +#: ../contrib/src/xrc/xml.cpp:530 +#, c-format +msgid "XML parsing error: '%s' at line %d" +msgstr "Kesalahan parsing XML: '%s' pada baris %d" + +#: ../src/common/xpmdecod.cpp:759 +msgid "XPM: Malformed pixel data!" +msgstr "XPM: Data pixel salah bentuk!" + +#: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 +#, c-format +msgid "XPM: malformed colour definition '%s'!" +msgstr "XPM: Definisi warna '%s' salah bentuk!" + +#: ../contrib/src/xrc/xmlres.cpp:470 +#, c-format +msgid "XRC resource '%s' (class '%s') not found!" +msgstr "Sesumber XRC '%s' (class '%s') tidak ditemukan!" + +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 +#, c-format +msgid "XRC resource: Cannot create bitmap from '%s'." +msgstr "Sesumber XRC: Tidak bisa menciptakan bitmap dari '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:821 +#, c-format +msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." +msgstr "Sesumber XRC: Spesifikasi warna '%s' tidak benar untuk properti '%s'." + +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 +#: ../src/motif/msgdlg.cpp:182 +msgid "Yes" +msgstr "Ya" + +#: ../src/generic/dirdlgg.cpp:262 +msgid "You cannot add a new directory to this section." +msgstr "Anda tidak dapat menambah direktori baru ke seksi ini." + +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 +msgid "ZIP handler currently supports only local files!" +msgstr "Handler ZIP saat ini hanya mendukung file-file lokal!" + +#: ../src/common/docview.cpp:1953 +msgid "[EMPTY]" +msgstr "[KOSONG]" + +#: ../src/msw/dde.cpp:1011 +msgid "a DDEML application has created a prolonged race condition." +msgstr "" +"Suatu aplikasi DDEML telah menciptakan suatu kondisi race terus menerus." + +#: ../src/msw/dde.cpp:999 +msgid "" +"a DDEML function was called without first calling the DdeInitialize " +"function,\n" +"or an invalid instance identifier\n" +"was passed to a DDEML function." +msgstr "" +"Suatu fungsi DDEML dipanggil tanpa pertama-tama memanggil fungsi " +"DdeInitialize,\n" +" atau suatu pengenal instan yang tidak sah\n" +" dilewatkan ke suatu fungsi DDEML." + +#: ../src/msw/dde.cpp:1017 +msgid "a client's attempt to establish a conversation has failed." +msgstr "Suatu usaha dari klien untuk mengadakan percakapan telah gagal." + +#: ../src/msw/dde.cpp:1014 +msgid "a memory allocation failed." +msgstr "Alokasi memori gagal." + +#: ../src/msw/dde.cpp:1008 +msgid "a parameter failed to be validated by the DDEML." +msgstr "Suatu parameter gagal divalidasi oleh DDEML." + +#: ../src/msw/dde.cpp:990 +msgid "a request for a synchronous advise transaction has timed out." +msgstr "" +"Suatu permintaan untuk transaksi advise synchronous telah habis waktunya." + +#: ../src/msw/dde.cpp:996 +msgid "a request for a synchronous data transaction has timed out." +msgstr "" +"Suatu permintaan untuk transaksi data synchronous telah habis waktunya." + +#: ../src/msw/dde.cpp:1005 +msgid "a request for a synchronous execute transaction has timed out." +msgstr "" +"Suatu permintaan untuk transaksi eksekusi synchronous telah habis waktunya." + +#: ../src/msw/dde.cpp:1023 +msgid "a request for a synchronous poke transaction has timed out." +msgstr "" +"Suatu permintaan untuk transaksi poke synchronous telah habis waktunya." + +#: ../src/msw/dde.cpp:1038 +msgid "a request to end an advise transaction has timed out." +msgstr "" +"Suatu permintaan untuk mengakhiri transaksi advise telah habis waktunya." + +#: ../src/msw/dde.cpp:1032 +msgid "" +"a server-side transaction was attempted on a conversation\n" +"that was terminated by the client, or the server\n" +"terminated before completing a transaction." +msgstr "" +"Suatu transaksi sisi-server telah diusahakan pada percakapan\n" +" yang dihentikan oleh klien, atau server\n" +" dihentikan sebelum menyelesaikan transaksi." + +#: ../src/msw/dde.cpp:1020 +msgid "a transaction failed." +msgstr "Transaksi gagal." + +#: ../src/common/menucmn.cpp:99 +msgid "alt" +msgstr "alt" + +#: ../src/msw/dde.cpp:1002 +msgid "" +"an application initialized as APPCLASS_MONITOR has\n" +"attempted to perform a DDE transaction,\n" +"or an application initialized as APPCMD_CLIENTONLY has \n" +"attempted to perform server transactions." +msgstr "" +"Suatu aplikasi diinisialisasi sebagai APPCLASS_MONITOR telah\n" +" berusaha melaksanakan transaksi DDE,\n" +" atau suatu aplikasi diinisialisasi sebagai APPCMD_CLIENTONLY telah \n" +"berusaha melaksanakan transaksi-transaksi server." + +#: ../src/msw/dde.cpp:1026 +msgid "an internal call to the PostMessage function has failed. " +msgstr "Suatu panggilan internal ke fungsi PostMessage telah gagal." + +#: ../src/msw/dde.cpp:1035 +msgid "an internal error has occurred in the DDEML." +msgstr "Suatu kesalahan internal telah muncul dalam DDEML." + +#: ../src/msw/dde.cpp:1041 +msgid "" +"an invalid transaction identifier was passed to a DDEML function.\n" +"Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" +"the transaction identifier for that callback is no longer valid." +msgstr "" +"Suatu pengenal transaksi yang tidak sah dilewatkan ke suatu fungsi DDEML.\n" +" Saat aplikasi telah kembali dari callback XTYP_XACT_COMPLETE,\n" +" pengenal transaksi untuk callback tersebut tidak sah lagi." + +#: ../src/common/fileconf.cpp:1767 +#, c-format +msgid "attempt to change immutable key '%s' ignored." +msgstr "Usaha untuk mengubah kunci immutable '%s' diabaikan." + +#: ../src/common/ftp.cpp:369 +msgid "binary" +msgstr "biner" + +#: ../src/common/fontcmn.cpp:521 +msgid "bold" +msgstr "tebal" + +#: ../src/common/fontcmn.cpp:445 +msgid "bold " +msgstr "tebal" + +#: ../src/common/ffile.cpp:93 +#, c-format +msgid "can't close file '%s'" +msgstr "Tidak bisa menutup file '%s'" + +#: ../src/common/file.cpp:275 +#, c-format +msgid "can't close file descriptor %d" +msgstr "Tidak bisa menutup file descriptor %d" + +#: ../src/common/file.cpp:553 +#, c-format +msgid "can't commit changes to file '%s'" +msgstr "Tidak bisa melaksanakan perubahan ke file '%s'" + +#: ../src/common/file.cpp:215 +#, c-format +msgid "can't create file '%s'" +msgstr "Tidak bisa menciptakan file '%s'" + +#: ../src/common/fileconf.cpp:1078 +#, c-format +msgid "can't delete user configuration file '%s'" +msgstr "Tidak bisa menghapus file konfigurasi pemakai %s" + +#: ../src/common/file.cpp:458 +#, c-format +msgid "can't determine if the end of file is reached on descriptor %d" +msgstr "" +"Tidak bisa menentukan apakah akhir file telah dicapai pada descriptor %d" + +#: ../src/common/file.cpp:424 +#, c-format +msgid "can't find length of file on file descriptor %d" +msgstr "Tidak bisa menemukan panjang dari file pada file descriptor %d" + +#: ../src/msw/utils.cpp:369 +msgid "can't find user's HOME, using current directory." +msgstr "" +"Tidak bisa menemukan HOME dari pemakai, menggunakan direktori aktif saat ini." + +#: ../src/common/file.cpp:338 +#, c-format +msgid "can't flush file descriptor %d" +msgstr "Tidak bisa mem-flush file descriptor %d" + +#: ../src/common/file.cpp:392 +#, c-format +msgid "can't get seek position on file descriptor %d" +msgstr "Tidak bisa memperoleh posisi seek pada file descriptor %d" + +#: ../src/common/fontmap.cpp:807 +msgid "can't load any font, aborting" +msgstr "Tidak bisa memuat huruf apapun, batal" + +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 +#, c-format +msgid "can't open file '%s'" +msgstr "Tidak bisa membuka file '%s'" + +#: ../src/common/fileconf.cpp:397 +#, c-format +msgid "can't open global configuration file '%s'." +msgstr "Tidak bisa membuka file konfigurasi global '%s'." + +#: ../src/common/fileconf.cpp:416 +#, c-format +msgid "can't open user configuration file '%s'." +msgstr "Tidak bisa membuka file konfigurasi pemakai '%s'." + +#: ../src/common/fileconf.cpp:949 +msgid "can't open user configuration file." +msgstr "Tidak bisa membuka file konfigurasi pemakai." + +#: ../src/common/file.cpp:301 +#, c-format +msgid "can't read from file descriptor %d" +msgstr "Tidak bisa membaca dari file descriptor %d" + +#: ../src/common/file.cpp:548 +#, c-format +msgid "can't remove file '%s'" +msgstr "Tidak bisa menghilangkan file '%s'" + +#: ../src/common/file.cpp:564 +#, c-format +msgid "can't remove temporary file '%s'" +msgstr "Tidak bisa menghilangkan file sementara '%s'" + +#: ../src/common/file.cpp:378 +#, c-format +msgid "can't seek on file descriptor %d" +msgstr "Tidak bisa melakukan seek pada file descriptor %d" + +#: ../src/common/textfile.cpp:196 +#, c-format +msgid "can't write buffer '%s' to disk." +msgstr "Tidak bisa menulis buffer '%s' ke disk." + +#: ../src/common/file.cpp:323 +#, c-format +msgid "can't write to file descriptor %d" +msgstr "Tidak bisa menulis ke file descriptor %d" + +#: ../src/common/fileconf.cpp:965 +msgid "can't write user configuration file." +msgstr "Tidak bisa menulis file konfigurasi pemakai." + +#: ../src/common/intl.cpp:364 +#, c-format +msgid "catalog file for domain '%s' not found." +msgstr "File katalog untuk domain '%s' tidak ditemukan." + +#: ../src/common/menucmn.cpp:97 +msgid "ctrl" +msgstr "ctrl" + +#: ../src/common/cmdline.cpp:1056 +msgid "date" +msgstr "tanggal" + +#: ../src/common/fontmap.cpp:416 +msgid "default" +msgstr "default" + +#: ../src/common/datetime.cpp:3363 +msgid "eighteenth" +msgstr "ke delapan belas" + +#: ../src/common/datetime.cpp:3353 +msgid "eighth" +msgstr "ke delapan" + +#: ../src/common/datetime.cpp:3356 +msgid "eleventh" +msgstr "ke sebelas" + +#: ../src/common/fileconf.cpp:1753 +#, c-format +msgid "entry '%s' appears more than once in group '%s'" +msgstr "entri '%s' muncul lebih dari satu dalam grup '%s'" + +#: ../src/msw/dialup.cpp:843 +msgid "establish" +msgstr "mengadakan" + +#: ../src/common/ffile.cpp:174 +#, c-format +msgid "failed to flush the file '%s'" +msgstr "Gagal mem-flush file '%s'" + +#: ../src/common/datetime.cpp:3360 +msgid "fifteenth" +msgstr "Ke lima belas" + +#: ../src/common/datetime.cpp:3350 +msgid "fifth" +msgstr "Ke lima" + +#: ../src/common/fileconf.cpp:626 +#, c-format +msgid "file '%s', line %d: '%s' ignored after group header." +msgstr "file '%s', baris %d: '%s' diabaikan setelah header grup." + +#: ../src/common/fileconf.cpp:655 +#, c-format +msgid "file '%s', line %d: '=' expected." +msgstr "file '%s', baris %d: '=' diharapkan." + +#: ../src/common/fileconf.cpp:681 +#, c-format +msgid "file '%s', line %d: key '%s' was first found at line %d." +msgstr "file '%s', baris %d: kunci '%s' pertama ditemukan pada baris %d." + +#: ../src/common/fileconf.cpp:671 +#, c-format +msgid "file '%s', line %d: value for immutable key '%s' ignored." +msgstr "file '%s', baris %d: nilai untuk kunci immutable '%s' diabaikan." + +#: ../src/common/fileconf.cpp:594 +#, c-format +msgid "file '%s': unexpected character %c at line %d." +msgstr "file '%s': karakter %c tidak diharapkan pada baris %d." + +#: ../src/common/datetime.cpp:3346 +msgid "first" +msgstr "pertama" + +#: ../src/common/datetime.cpp:3359 +msgid "fourteenth" +msgstr "ke empat belas" + +#: ../src/common/datetime.cpp:3349 +msgid "fourth" +msgstr "ke empat" + +#: ../src/common/appcmn.cpp:322 +msgid "generate verbose log messages" +msgstr "hasilkan pesan-pesan log verbose" + +#: ../src/common/timercmn.cpp:290 +msgid "gmtime() failed" +msgstr "gmtime() gagal" + +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 +msgid "initiate" +msgstr "inisiasi" + +#: ../src/common/file.cpp:462 +msgid "invalid eof() return value." +msgstr "nilai kembali eof() tidak sah." + +#: ../src/generic/logg.cpp:1125 +msgid "invalid message box return value" +msgstr "nilai kembali message box tidak sah" + +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 +msgid "italic" +msgstr "miring" + +#: ../src/common/fontcmn.cpp:517 +msgid "light" +msgstr "ringan" + +#: ../src/common/fontcmn.cpp:441 +msgid "light " +msgstr "ringan" + +#: ../src/common/intl.cpp:615 +#, c-format +msgid "locale '%s' can not be set." +msgstr "locale '%s' tidak bisa ditetapkan." + +#: ../src/common/intl.cpp:359 +#, c-format +msgid "looking for catalog '%s' in path '%s'." +msgstr "mencari katalog '%s' di path '%s'." + +#: ../src/common/datetime.cpp:3511 +msgid "midnight" +msgstr "tengah malam" + +#: ../src/common/timercmn.cpp:286 +msgid "mktime() failed" +msgstr "mktime() gagal" + +#: ../src/common/datetime.cpp:3364 +msgid "nineteenth" +msgstr "ke sembilan belas" + +#: ../src/common/datetime.cpp:3354 +msgid "ninth" +msgstr "ke sembilan" + +#: ../src/msw/dde.cpp:986 +msgid "no DDE error." +msgstr "tidak ada kesalahan DDE " + +#: ../src/html/helpdata.cpp:575 +msgid "noname" +msgstr "tidak bernama" + +#: ../src/common/datetime.cpp:3510 +msgid "noon" +msgstr "siang" + +#: ../src/common/cmdline.cpp:1052 +msgid "num" +msgstr "angka" + +#: ../src/common/filename.cpp:166 +msgid "reading" +msgstr "membaca" + +#: ../src/msw/dde.cpp:1029 +msgid "reentrancy problem." +msgstr "masalah pemasukan kembali" + +#: ../src/common/datetime.cpp:3347 +msgid "second" +msgstr "ke dua" + +#: ../src/common/datetime.cpp:3362 +msgid "seventeenth" +msgstr "ke tujuh belas" + +#: ../src/common/datetime.cpp:3352 +msgid "seventh" +msgstr "ke tujuh" + +#: ../src/common/menucmn.cpp:101 +msgid "shift" +msgstr "geser" + +#: ../src/common/appcmn.cpp:312 +msgid "show this help message" +msgstr "Tampilkan pesan pertolongan ini" + +#: ../src/common/datetime.cpp:3361 +msgid "sixteenth" +msgstr "ke enam belas" + +#: ../src/common/datetime.cpp:3351 +msgid "sixth" +msgstr "ke enam" + +#: ../src/common/appcmn.cpp:347 +msgid "specify display mode to use (e.g. 640x480-16)" +msgstr "spesifikasikan mode tampilan yang digunakan (misalnya 640x480- 16)" + +#: ../src/common/appcmn.cpp:333 +msgid "specify the theme to use" +msgstr "spesifikasikan tema yang digunakan" + +#: ../src/common/cmdline.cpp:1048 +msgid "str" +msgstr "str" + +#: ../src/common/datetime.cpp:3355 +msgid "tenth" +msgstr "kesepuluh" + +#: ../src/msw/dde.cpp:993 +msgid "the response to the transaction caused the DDE_FBUSY bit to be set." +msgstr "tanggapan terhadap transaksi menyebabkan bit DDE_FBUSY ditetapkan." + +#: ../src/common/datetime.cpp:3348 +msgid "third" +msgstr "ketiga" + +#: ../src/common/datetime.cpp:3358 +msgid "thirteenth" +msgstr "ke tiga belas" + +#: ../src/common/datetime.cpp:3190 +msgid "today" +msgstr "hari ini" + +#: ../src/common/datetime.cpp:3192 +msgid "tomorrow" +msgstr "lusa" + +#: ../src/common/datetime.cpp:3357 +msgid "twelfth" +msgstr "ke dua belas" + +#: ../src/common/datetime.cpp:3365 +msgid "twentieth" +msgstr "ke dua puluh" + +#: ../src/common/fontcmn.cpp:513 +msgid "underlined" +msgstr "bergaris bawah" + +#: ../src/common/fontcmn.cpp:428 +msgid "underlined " +msgstr "bergaris bawah" + +#: ../src/common/fileconf.cpp:1887 +#, c-format +msgid "unexpected \" at position %d in '%s'." +msgstr "\" tidak diharapkan pada posisi %d dalam '%s'." + +#: ../src/generic/progdlgg.cpp:282 +msgid "unknown" +msgstr "tidak diketahui" + +#: ../src/common/regex.cpp:144 +msgid "unknown error" +msgstr "kesalahan tidak diketahui" + +#: ../src/msw/dialup.cpp:447 +#, c-format +msgid "unknown error (error code %08x)." +msgstr "kesalahan tidak diketahui (kode kesalahan %08x)." + +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "kesalahan tidak diketahui" + +#: ../src/common/file.cpp:361 +msgid "unknown seek origin" +msgstr "Asal seek tidak diketahui" + +#: ../src/common/fontmap.cpp:430 +#, c-format +msgid "unknown-%d" +msgstr "%d-tidak diketahui" + +#: ../src/common/docview.cpp:407 +msgid "unnamed" +msgstr "Tidak bernama" + +#: ../src/common/docview.cpp:1224 +#, c-format +msgid "unnamed%d" +msgstr "Tidak bernama%d" + +#: ../src/common/intl.cpp:369 +#, c-format +msgid "using catalog '%s' from '%s'." +msgstr "Menggunakan katalog '%s' dari '%s'." + +#: ../src/common/filename.cpp:166 +msgid "writing" +msgstr "menulis" + +#: ../src/common/dynlib.cpp:336 +#, c-format +msgid "wxDllLoader failed to GetSymbol '%s'" +msgstr "wxDllLoader gagal pada GetSymbol '%s'" + +#: ../src/common/dynload.cpp:282 +#, c-format +msgid "wxDynamicLibrary failed to GetSymbol '%s'" +msgstr "wxDynamicLibrary gagal pada GetSymbol '%s'" + +#: ../src/common/timercmn.cpp:335 +msgid "wxGetTimeOfDay failed." +msgstr "wxGetTimeOfDay gagal." + +#: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 +msgid "wxSocket: invalid signature in ReadMsg." +msgstr "wxSocket: penanda tidak sah pada ReadMsg" + +#: ../src/common/socket.cpp:975 +msgid "wxSocket: unknown event!." +msgstr "wxSocket: event tidak dikenal!." + +#: ../src/motif/app.cpp:586 +#, c-format +msgid "wxWindows could not open display for '%s': exiting." +msgstr "wxWindows tidak bisa membuka tampilan untuk '%s': keluar." + +#: ../src/x11/app.cpp:245 +msgid "wxWindows could not open display. Exiting." +msgstr "wxWindows tidak bisa membuka tampilan. Keluar." + +#: ../src/common/datetime.cpp:3191 +msgid "yesterday" +msgstr "kemarin" + +#~ msgid " bytes " +#~ msgstr " byte" + +#~ msgid "

    " +#~ msgstr " " + +#~ msgid " " +#~ msgstr " " + +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "Header DIB: Belum bisa berurusan dengan 4bit dikodekan" + +#~ msgid "Go back to the previous HTML page" +#~ msgstr "Kembali ke halaman HTML sebelumnya" + +#~ msgid "Go forward to the next HTML page" +#~ msgstr "Ke depan ke halaman HTML berikutnya" + +#~ msgid "Help : %s" +#~ msgstr "Pertolongan : %s" + +#~ msgid "Preparing help window..." +#~ msgstr "Menyiapkan jendela pertolongan..." + +#~ msgid "ReleaseMutex()" +#~ msgstr "ReleaseMutex()" + +#~ msgid "Screenshot captured: " +#~ msgstr "Screenshot yang ditangkap:" + +#~ msgid "Search!" +#~ msgstr "Cari!" + +#~ msgid "XRC resource: Cannot create dialog without instance." +#~ msgstr "Sesumber XRC: Tidak bisa menciptakan dialog tanpa instan." + +#~ msgid "large" +#~ msgstr "besar" + +#~ msgid "medium" +#~ msgstr "sedang" + +#~ msgid "small" +#~ msgstr "kecil" + +#~ msgid "very large" +#~ msgstr "sangat besar" + +#~ msgid "very small" +#~ msgstr "sangat kecil" + +#~ msgid "wxSearchEngine::LookFor must be called before scanning!" +#~ msgstr "wxSearchEngine::LookFor harus dipanggil sebelum pemeriksaan!" diff --git a/locale/it.po b/locale/it.po index 6e54b08a80..adb33d95b8 100644 --- a/locale/it.po +++ b/locale/it.po @@ -1,8 +1,8 @@ msgid "" msgstr "" -"Project-Id-Version: wxWindows-2.3.3\n" -"POT-Creation-Date: 2002-08-25 23:05+0200\n" -"PO-Revision-Date: 2002-08-25 23:10+0100\n" +"Project-Id-Version: wxWindows-2.3.4\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" +"PO-Revision-Date: 2002-11-30 16:35+0100\n" "Last-Translator: Mattia Barbon \n" "Language-Team: wxWindows translators \n" "MIME-Version: 1.0\n" @@ -14,18 +14,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (errore %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Anteprima" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " byte " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "Busta #10, 4 1/8 x 9 1/2 in" @@ -53,23 +49,23 @@ msgstr "Busta #9, 3 7/8 x 8 7/8 in" msgid "#define %s must be an integer." msgstr "la direttiva #define %s deve essere un intero." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "%d" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "%d...%d" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i di %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (o %s)" @@ -89,6 +85,11 @@ msgstr "Informazione %s" msgid "%s Warning" msgstr "Avviso %s" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "%s: messaggio" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -110,7 +111,7 @@ msgstr "%s: sintassi errata nel file di risorsa." msgid "&Arrange Icons" msgstr "&Disponi icone" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "&Annulla" @@ -118,10 +119,18 @@ msgstr "&Annulla" msgid "&Cascade" msgstr "&Sovrapponi finestre" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Chiudi" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "&Copia" + +#: ../src/msw/textctrl.cpp:1683 +msgid "&Delete" +msgstr "&Elimina" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Dettagli" @@ -130,11 +139,11 @@ msgstr "&Dettagli" msgid "&Find" msgstr "&Trova" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Fine" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "&Aiuto" @@ -146,23 +155,28 @@ msgstr "&Registro" msgid "&Move" msgstr "&Sposta" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&Successivo" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Successivo >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Prossimo suggerimento" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +msgid "&Paste" +msgstr "&Incolla" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" msgstr "&Precedente" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Ripeti" @@ -182,7 +196,7 @@ msgstr "&Ripristina" msgid "&Save..." msgstr "&Salva..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Mostra suggerimenti all'avvio" @@ -190,7 +204,7 @@ msgstr "&Mostra suggerimenti all'avvio" msgid "&Size" msgstr "&Ridimensiona" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Annulla" @@ -198,11 +212,13 @@ msgstr "&Annulla" msgid "&Undo " msgstr "&Annulla " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Finestra" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' ha troppi '..', ignorati." @@ -213,7 +229,7 @@ msgstr "'%s' ha troppi '..', ignorati." msgid "'%s' is invalid" msgstr "'%s' non valida" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' non è un valore numerico corretto per l'opzione '%s'." @@ -248,12 +264,12 @@ msgstr "'%s' deve contenere unicamente caratteri alfabetici." msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' deve contenere unicamente caratteri alfabetici o numerici." -#: ../src/html/helpfrm.cpp:709 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Aiuto)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(segnalibri)" @@ -267,11 +283,11 @@ msgstr "" ", atteso static, #include o #define\n" "durante l'analisi delle risorse." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -287,63 +303,55 @@ msgstr "11 x 17 in" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "Busta 6 3/4, 3 5/8 x 6 1/2 in" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": file non esistente!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": set di caratteri sconosciuto" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": codifica sconosciuta" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Precedente" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" -"Normale
    (e sottolineato. Corsivo. Grassetto." -" Grassetto corsivo.
    corpo -2
    corpo -1
    corpo +0
    corpo +1
    corpo +2
    corpo +3
    corpo +4

    Corpo fisso.
    grassetto corsivo " -"grassetto corsivo sttolineato
    corpo -" -"2
    corpo -1
    corpo +0
    corpo +1
    corpo +2
    corpo +3
    corpo +4" +"
    Normale
    (e sottolineato. Corsivo. Grassetto. Grassetto corsivo.
    dimensione -2
    dimensione -1
    dimensione +0
    dimensione +1
    dimensione +2
    dimensione +3
    dimensione +4

    Dimensione fissa.
    grassetto " +"corsivo grassetto corsivo sottolineato
    dimensione -2
    dimensione -1
    dimensione +0
    dimensione +1
    dimensione +2
    dimensione +3
    dimensione +4

    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -369,7 +377,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Aggiungi la pagina corrente ai segnalibri" @@ -386,11 +394,11 @@ msgstr "Aggiunta del libro %s in corso" msgid "All" msgstr "Tutto" -#: ../include/wx/defs.h:1798 ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Tutti i file (*)|*" -#: ../include/wx/defs.h:1795 +#: ../include/wx/defs.h:1803 msgid "All files (*.*)|*.*" msgstr "Tutti i file (*.*)|*.*" @@ -403,7 +411,7 @@ msgstr "Chiamata verso l'ISP gi msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Aggiungere registro al file '%s' (scegliere [No] per sovrascriverlo)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabo (ISO-8859-6)" @@ -427,7 +435,7 @@ msgstr "Foglio B5, 182 x 257 millimeter" msgid "B6 Envelope, 176 x 125 mm" msgstr "Busta B6, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." msgstr "BMP: Impossibile allocare la memoria." @@ -455,15 +463,15 @@ msgstr "BMP: Impossibile scrivere l'header (BitmapInfo) del file." msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: l'oggetto wxImage non ha una propria wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Indietro" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltico (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltico (vecchio) (ISO-8859-4)" @@ -472,7 +480,7 @@ msgstr "Baltico (vecchio) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "Specifica della risorsa di tipo bitmap %s non trovata." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Grassetto" @@ -508,12 +516,12 @@ msgstr "Busta C6, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "Busta C65, 114 x 229 mm" -#: ../src/common/filefn.cpp:1372 +#: ../src/common/filefn.cpp:1369 #, c-format msgid "Can not enumerate files '%s'" msgstr "Impossibile elencare i file '%s'" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Impossibile elencare i file nella cartella '%s'" @@ -540,7 +548,7 @@ msgstr "Impossibile attendere la fine del thread" msgid "Can't &Undo " msgstr "&Annulla impossibile " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -556,17 +564,17 @@ msgstr "Impossibile chiudere la chiave '%s' del registro di sistema" msgid "Can't copy values of unsupported type %d." msgstr "Impossibile copiare valori del tipo non supportato %d." -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" msgstr "" "Impossibile creare il riquadro di dialogo utilizzando il modello in memoria" -#: ../src/os2/toplevel.cpp:332 +#: ../src/os2/toplevel.cpp:369 #, c-format msgid "Can't create dialog using template '%ul'" msgstr "Impossibile creare il riquadro di dialogo utilizzando il modello '%ul'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" "Impossibile creare list control, controllare che comctl32.dll sia installata." @@ -580,7 +588,7 @@ msgstr "Impossibile creare la chiave '%s' del registro di sistema" msgid "Can't create thread" msgstr "Impossibile creare il thread" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "impossibile creare una finestra di classe '%s'" @@ -669,65 +677,65 @@ msgstr "Impossibile impostare la priorit msgid "Can't set value of '%s'" msgstr "Impossibile impostare il valore di '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Annulla" -#: ../contrib/src/xrc/xmlres.cpp:913 ../contrib/src/xrc/xmlres.cpp:954 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" "Impossibile convertire le unità di misura del riquadro di dialogo: riguadro " "di dialogo sconosciuto." -#: ../src/common/strconv.cpp:926 +#: ../src/common/strconv.cpp:963 #, c-format msgid "Cannot convert from encoding '%s'!" msgstr "Impossibile convertire la codifica '%s'!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Impossibile trovare la connessione attiva: %s" -#: ../contrib/src/xrc/xmlres.cpp:244 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "Impossibile trovare il contenitore per il controllo sconosciuto '%s'." -#: ../contrib/src/xrc/xmlres.cpp:968 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, c-format msgid "Cannot find font node '%s'." msgstr "Impossibile trovare il nodo di tipo font '%s'." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Impossibile trovare il file degli indirizzi" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "" "Impossibile ottenere un intervallo di priorità per la strategia di " "scheduling %d." -#: ../src/unix/utilsunx.cpp:856 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Impossibile ottenere il nome dell'host" -#: ../src/unix/utilsunx.cpp:892 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Impossibile ottenere il nome ufficiale dell'host" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Impossibile disconnettersi - nessuna connessione attiva." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Impossibile inizializzare OLE" @@ -735,31 +743,31 @@ msgstr "Impossibile inizializzare OLE" msgid "Cannot initialize SciTech MGL!" msgstr "Impossibile inizializzare SciTech MGL!" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." msgstr "Impossibile inizializzare il display" -#: ../src/msw/volume.cpp:624 +#: ../src/msw/volume.cpp:634 #, c-format msgid "Cannot load icon from '%s'." msgstr "Impossibile caricare l'icona da '%s'." -#: ../contrib/src/xrc/xmlres.cpp:357 +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "Impossibile caricare le risorse dal file '%s'." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Impossibile aprire il documento HTML: %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Impossibile aprire il libro di help HTML: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Impossibile aprire l'URL '%s'" @@ -769,60 +777,60 @@ msgstr "Impossibile aprire l'URL '%s'" msgid "Cannot open contents file: %s" msgstr "Impossibile aprire il file sommario: %s" -#: ../contrib/src/xrc/xmlres.cpp:331 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "Impossibile aprire il file '%s'." -#: ../src/generic/dcpsg.cpp:1687 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Impossibile aprire il file per la stampa PostScript!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Impossibile aprire il file di indice: %s" -#: ../contrib/src/xrc/xmlres.cpp:901 +#: ../contrib/src/xrc/xmlres.cpp:957 #, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Formato scorretto nella specifica di coordinate '%s'." -#: ../contrib/src/xrc/xmlres.cpp:942 +#: ../contrib/src/xrc/xmlres.cpp:998 #, c-format msgid "Cannot parse dimension from '%s'." msgstr "Formato scorretto nella specifica di dimensione '%s'." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Impossibile stampare una pagina vuota." -#: ../src/msw/volume.cpp:185 ../src/msw/volume.cpp:516 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, c-format msgid "Cannot read typename from '%s'!" msgstr "Impossibile leggere l'identificatore di tipo da '%s'!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Impossibile determinare la strategia di scheduling." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Impossibile avviare il thread: errore nella scrittura del TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Maiuscole/minuscole" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Celtico (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "Europeo Centrale (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Scegliere l'ISP da chiamare" @@ -830,11 +838,15 @@ msgstr "Scegliere l'ISP da chiamare" msgid "Choose font" msgstr "Carattere" +#: ../src/generic/mdig.cpp:112 +msgid "Cl&ose" +msgstr "&Chiudi" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Eliminare il contenuto del registro" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Chiudi" @@ -843,24 +855,28 @@ msgstr "Chiudi" msgid "Close\tAlt-F4" msgstr "Chiudi\tAlt-F4" +#: ../src/generic/mdig.cpp:113 +msgid "Close All" +msgstr "Chiudi Tutti" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Chiudi questa finestra" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Computer" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Il nome di una voce di configurazione non può iniziare con '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Conferma" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "Conferma l'aggiornamento del registro di sistema" @@ -868,13 +884,13 @@ msgstr "Conferma l'aggiornamento del registro di sistema" msgid "Connecting..." msgstr "Connessione..." -#: ../src/html/helpfrm.cpp:346 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Sommario" -#: ../src/common/strconv.cpp:593 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "La conversione nella codifica '%s' non funziona." #: ../src/generic/prntdlgg.cpp:193 @@ -891,7 +907,7 @@ msgstr "Impossibile trovare il file di inclusione di risorsa %s." msgid "Could not find tab for id" msgstr "Impossibile trovare l'etichetta per l'id" -#: ../src/msw/textctrl.cpp:1881 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Impossibile caricare la DLL Rich Edit '%s'" @@ -916,19 +932,19 @@ msgstr "" "intero (non nullo)\n" " o fornire #define (vedere il manuale per avvertimenti)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Impossibile mostrare l'anteprima del documento." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Impossibile avviare la stampa." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Impossibile trasferire i dati verso la finestra" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -942,7 +958,7 @@ msgstr "Impossibile creare un timer" msgid "Couldn't create cursor." msgstr "Impossibile creare un cursore." -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Impossibile trovare il simbolo '%s' nella libreria dinamica" @@ -951,24 +967,24 @@ msgstr "Impossibile trovare il simbolo '%s' nella libreria dinamica" msgid "Couldn't get the current thread pointer" msgstr "Impossibile ottenere un puntatore al thread corrente" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Impossibile caricare un'immagine PNG - file danneggiato o memoria " "insufficiente." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Impossibile registrare il formato '%s' degli appunti." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Impossibile ottenere informazioni sull'elemento %d del list control." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." msgstr "Impossibile salvare l'immagine PNG." @@ -980,15 +996,19 @@ msgstr "Impossibile terminare il thread" msgid "Create directory" msgstr "Crea cartella" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Crea una nuova cartella" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "&Taglia" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Cartella corrente:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "Cirillico (ISO-8859-5)" @@ -996,34 +1016,29 @@ msgstr "Cirillico (ISO-8859-5)" msgid "D sheet, 22 x 34 in" msgstr "Foglio D, 22 x 34 in" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "Richiesta DDE (poke) fallita" -#: ../src/common/imagbmp.cpp:618 -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "" -"Intestazione DIB: È attualmente impossibile utilizzare la codifica a 4 bit." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "" "Intestazione DIB: La codifica non corrisponde al numero di bit per pixel." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "Intestazione DIB: L'altezza dell'immagine nel file è > di 32767 pixel." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "" "Intestazione DIB: La larghezza dell'immagine nel file è > di 32767 pixel." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." msgstr "Header DIB: Numero di bit per pixel nel file sconosciuto." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." msgstr "Header DIB: Codifica del file sconosciuta." @@ -1031,15 +1046,15 @@ msgstr "Header DIB: Codifica del file sconosciuta." msgid "DL Envelope, 110 x 220 mm" msgstr "Busta DL, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Data" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Decorativo" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "Codifca predefinita" @@ -1048,7 +1063,7 @@ msgstr "Codifca predefinita" msgid "Deleted stale lock file '%s'." msgstr "Eliminato file di lock obsoleto '%s'" -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1057,15 +1072,15 @@ msgstr "" "di Accesso Remoto (RAS) non è installato su questo computer. Si prega di " "installarlo." -#: ../src/os2/toplevel.cpp:330 +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "Si è dimenticato di includere wx/os2/wx.rc nelle proprie risorse?" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Sapevate..." -#: ../src/common/filefn.cpp:1268 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Impossibile creare la cartella '%s'" @@ -1079,7 +1094,7 @@ msgstr "La cartella '%s' non esiste!" msgid "Directory does not exist" msgstr "Cartella non esistente" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1087,11 +1102,11 @@ msgstr "" "Visualizza tutte le voci dell'indice contenenti un dato testo. La ricerca " "non distingue maiuscole e minuscole." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Mostra riquadro di dialogo per le opzioni" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" "Do you want to overwrite the command used to %s files with extension \"%s" @@ -1108,7 +1123,7 @@ msgstr "" "Il nuovo valore è \n" "%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Salvare le modifiche al documento %s?" @@ -1117,7 +1132,7 @@ msgstr "Salvare le modifiche al documento %s?" msgid "Done" msgstr "Finito" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Finito." @@ -1137,7 +1152,7 @@ msgstr "Tempo trascorso : " msgid "Entries found" msgstr "Trovati" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." @@ -1145,16 +1160,16 @@ msgstr "" "Espansione delle variabili di ambienete fallita: carattere '%c' non trovato " "alla posizione %d in '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Errore" -#: ../src/unix/utilsunx.cpp:1184 ../src/unix/utilsunx.cpp:1192 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Errore " @@ -1162,7 +1177,7 @@ msgstr "Errore " msgid "Error creating directory" msgstr "Errore nella creazione della cartella" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "Errore durante la lettura dell'immagine DIB." @@ -1170,7 +1185,7 @@ msgstr "Errore durante la lettura dell'immagine DIB." msgid "Error: " msgstr "Errore: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1178,7 +1193,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Tempo stimato : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Esecuzione del comando '%s' fallita" @@ -1205,7 +1220,11 @@ msgstr "Atteso '=' durante l'analisi della risorsa." msgid "Expected 'char' whilst parsing resource." msgstr "Atteso 'char' durante l'analisi della risorsa." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "Pagina codici Unix estesa per la lingua Giapponese (EUC-JP)" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Impossibile %s la connessione: %s" @@ -1227,11 +1246,11 @@ msgstr "Impossibile chiudere il file di lock '%s'" msgid "Failed to close the clipboard." msgstr "Impossibile chiudere gli appunti." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Connessione impossibile: mancano nome utente/password." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Connessione impossibile: numero dell'ISP mancante." @@ -1247,12 +1266,12 @@ msgstr "" "Impossibile copiare il contenuto della chiave '%s' del registro di sistema " "in '%s'." -#: ../src/common/filefn.cpp:1120 +#: ../src/common/filefn.cpp:1117 #, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "Impossibile copiare copiare il file '%s' in '%s'" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Impossibile creare la stringa DDE" @@ -1268,19 +1287,29 @@ msgstr "Impossibile creare la barra di stato." msgid "Failed to create a temporary file name" msgstr "Impossibile creare il nome per il file temporaneo" -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" msgstr "Impossibile creare una pipe anonima." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Impossibile creare la connessione al server '%s' sull'argomento '%s'" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "Impossibile creare il riquadro di dialogo. DLGTEMPLATE non corretto?" +#: ../src/unix/mimetype.cpp:372 +#, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Impossibile creare la cartella %s/.gnome." + +#: ../src/unix/mimetype.cpp:381 +#, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Impossibile creare la cartella %s/mime-info." + #: ../src/generic/dirdlgg.cpp:201 #, c-format msgid "" @@ -1302,20 +1331,20 @@ msgstr "" "Impossibile creare riquadro di ricerca/sostituzione standard (codice di " "errore %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Impossibile mostrare la pagina HTML con la codifica %s" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Impossibile eliminare il contenuto degli appunti." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Impossibile stabilire un ciclo advise con il server DDE" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Impossibile connettersi: %s" @@ -1352,12 +1381,12 @@ msgstr "" "Impossibile trovare la risorsa XPM %s.\n" "Dimenticato di impiegare wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "Impossibile ottenere i nomi degli ISP: %s" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." msgstr "Impossibile ottenere i dati degli appunti." @@ -1365,15 +1394,15 @@ msgstr "Impossibile ottenere i dati degli appunti." msgid "Failed to get data from the clipboard" msgstr "Impossibile ottenere i dati dagli appunti" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Impossibile ottenere l'ora UTC di sistema." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Impossibile ottenere l'ora locale di sistema" -#: ../src/common/filefn.cpp:1501 +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" msgstr "Impossibile determinare la cartella di lavoro" @@ -1391,7 +1420,7 @@ msgstr "Impossibile inizializzare MS HTML Help" msgid "Failed to initialize OpenGL" msgstr "Impossibile inizializzare OpenGL" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1409,16 +1438,16 @@ msgstr "Impossibile terminare il processo %d" msgid "Failed to load image %d from file '%s'." msgstr "Impossibile leggere l'immagine %d dal file '%s'." -#: ../src/msw/volume.cpp:337 +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." msgstr "Impossibile caricare mpr.dll." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Impossibile caricare la libreria dinamica '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Impossibile caricare la libreria dinamica '%s' Errore '%s'" @@ -1435,7 +1464,7 @@ msgstr "" "Impossibile mettere in corrispondenza '%s' nell'espressione regolare " "( regular expression ): %s" -#: ../src/common/filename.cpp:1648 +#: ../src/common/filename.cpp:1667 #, c-format msgid "Failed to modify file times for '%s'" msgstr "Impossibile modificare le date del file '%s'" @@ -1461,20 +1490,20 @@ msgstr "Impossibile mettere dati negli appunti" msgid "Failed to read PID from lock file." msgstr "Impossibile leggere il PID dal file di lock." -#: ../src/unix/utilsunx.cpp:631 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Impossibile redirigere l'input/output del processo figlio" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "Impossibile redirigere l'input/output del processo figlio" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Impossibile registrare il server DDE '%s'" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Impossibile ricordare la codifica per il set di caratteri '%s'." @@ -1503,12 +1532,12 @@ msgstr "Impossibile rinominare la chiave '%s' del registro di sistema in '%s'." msgid "Failed to retrieve data from the clipboard." msgstr "Impossibile leggere dati dagli appunti." -#: ../src/common/filename.cpp:1714 +#: ../src/common/filename.cpp:1757 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Impossibile ottenere le date del file '%s'" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "" "Impossibile ottenere il testo del messaggio di errore di Accesso Remoto (RAS)" @@ -1517,7 +1546,7 @@ msgstr "" msgid "Failed to retrieve the supported clipboard formats" msgstr "Impossibile ottenere i formati supportati dagli appunti" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Impossibile inviare una notifica advise DDE" @@ -1530,11 +1559,11 @@ msgstr "Impossibile impostare la modalit msgid "Failed to set clipboard data." msgstr "Impossibile scrivere i dati degli appunti." -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" msgstr "Impossibile impostare i permessi del file temporaneo." -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Impossibile assegnare la priorità %d al thread." @@ -1544,20 +1573,20 @@ msgstr "Impossibile assegnare la priorit msgid "Failed to store image '%s' to memory VFS!" msgstr "Impossibile memorizzare l'immagine '%s' nella memoria VFS!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Impossibile terminare il thread." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "Impossibile terminare il ciclo advise con il server DDE" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Impossibile terminare la connessione: %s" -#: ../src/common/filename.cpp:1663 +#: ../src/common/filename.cpp:1682 #, c-format msgid "Failed to touch the file '%s'" msgstr "Impossibile eseguire 'touch' sul file '%s'" @@ -1567,7 +1596,7 @@ msgstr "Impossibile eseguire 'touch' sul file '%s'" msgid "Failed to unlock lock file '%s'" msgstr "Impossibile sbloccare il file di lock '%s'" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Impossibile cancellare la registrazione del server DDE '%s'" @@ -1585,7 +1614,7 @@ msgstr "Errore Fatale" msgid "Fatal error: " msgstr "Errore fatale: " -#: ../src/mac/app.cpp:1285 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Errore fatale: fine del programma" @@ -1594,12 +1623,12 @@ msgstr "Errore fatale: fine del programma" msgid "File %s does not exist." msgstr "Il file %s non esiste." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "File '%s' esistente, si desidera sovrascriverlo?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, c-format msgid "" "File '%s' already exists.\n" @@ -1612,21 +1641,21 @@ msgstr "" msgid "File couldn't be loaded." msgstr "Impossibile caricare il file." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Errore di file" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Nome di file esistente." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "File (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Trova" @@ -1638,15 +1667,15 @@ msgstr "Carattere a corpo fisso:" msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 in" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Corpo:" -#: ../src/unix/utilsunx.cpp:574 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Fork fallita" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Avanti" @@ -1656,7 +1685,7 @@ msgstr "Avanti" msgid "Found " msgstr "Trovato " -#: ../src/html/helpfrm.cpp:661 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Trovate %i corrispondenze" @@ -1701,31 +1730,31 @@ msgstr "German Std Fanfold, 8 1/2 x 12 in" msgid "GetUnusedColour:: No Unused Color in image " msgstr "GetUnusedColour: Nessun colore inutilizzato nell'immagine " -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Indietro" -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Avanti" -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Livello superiore nella gerarchia di documenti" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Vai alla Home directory" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Cartella superiore" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "Vai alla pagina" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Greco (ISO-8859-7)" @@ -1734,7 +1763,7 @@ msgstr "Greco (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "Ancora HTML %s non esistente." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" "HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" "Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" @@ -1743,16 +1772,17 @@ msgstr "" "htb|Libri di aiuto (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|Tutti i " "file (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Ebraico (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Aiuto" -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Opzioni del browser della Guida" @@ -1760,7 +1790,7 @@ msgstr "Opzioni del browser della Guida" msgid "Help Index" msgstr "Indice" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Stampa" @@ -1769,26 +1799,26 @@ msgstr "Stampa" msgid "Help: %s" msgstr "Aiuto: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "ICO: Errore durante la lettura della maschera DIB." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" msgstr "ICO: Errore durante la scrittura dell'immagine." -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "ICO: Immagine troppo alta per essere un'icona." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "ICO: Immagine troppo larga per essere un'icona." -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." msgstr "ICO: Indice dell'icona non valido." @@ -1818,11 +1848,11 @@ msgstr "Specifica della risorsa icona %s non trovata." msgid "Ill-formed resource file syntax." msgstr "Sintassi errata nel file di risorsa." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Nome di cartella non valido." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Specifica di file non valida." @@ -1830,12 +1860,12 @@ msgstr "Specifica di file non valida." msgid "Image and Mask have different sizes" msgstr "L'immagine e la maschera hanno dimensioni diverse" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "Il file immagine non è di tipo %d." -#: ../src/msw/textctrl.cpp:251 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1847,26 +1877,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Impossibile ottenere l'input del processo figlio" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1133 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "Impossibile determinare i permessi per il file '%s'" -#: ../src/common/filefn.cpp:1150 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "impossibile sovrascrivere il file '%s'" -#: ../src/common/filefn.cpp:1201 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "Impossibile impostare i permessi per il file '%s'" -#: ../src/html/helpfrm.cpp:387 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Indice" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Indiano (ISO-8859-12)" @@ -1874,17 +1904,17 @@ msgstr "Indiano (ISO-8859-12)" msgid "Invalid TIFF image index." msgstr "Indice dell'immagine TIFF non valido." -#: ../contrib/src/xrc/xmlres.cpp:363 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "Risorsa XRC non valida: il nodo radice deve essere di tipo 'resource'." -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, c-format msgid "Invalid display mode specification '%s'." msgstr "Specifica della modalità video '%s' non valida." -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, c-format msgid "Invalid geometry specification '%s'" msgstr "Specifica della posizione e/o dimensioni '%s' non valida." @@ -1899,7 +1929,7 @@ msgstr "File di blocco '%s' non valido." msgid "Invalid regular expression '%s': %s" msgstr "Espressione regolare ( regular expression ) '%s' non valida: %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Corsivo" @@ -1915,7 +1945,7 @@ msgstr "JPEG: Caricamento impossibile - probabilmente il file msgid "JPEG: Couldn't save image." msgstr "JPEG: Impossibile salvare l'immagine." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1943,17 +1973,17 @@ msgstr "Letter Small, 8 1/2 x 11 in" msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 in" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Leggero" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Caricare il file %s" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" msgstr "Caricare il file" @@ -1993,7 +2023,7 @@ msgstr "" msgid "Ma&ximize" msgstr "&Ingrandisci" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "File mailcap %s, riga %d: voce incompleta ignorata." @@ -2015,7 +2045,7 @@ msgstr "Tema metallico" msgid "Mi&nimize" msgstr "Riduci a &icona" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "File mime.types %s, riga %d: stringa tra virgolette non terminata." @@ -2025,7 +2055,7 @@ msgstr "File mime.types %s, riga %d: stringa tra virgolette non terminata." msgid "Mode %ix%i-%i not available." msgstr "Modalità video %ix%i-%i non disponibile." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2033,24 +2063,24 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Busta Monarch, 3 7/8 x 7 1/2 in" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Ancora..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Nome" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NuovoNome" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Pagina successiva" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "No" @@ -2072,7 +2102,7 @@ msgstr "Funzionalit msgid "No entries found." msgstr "Voci non trovate." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2085,7 +2115,7 @@ msgstr "" "Si desidera utilizzare tale codifica (altrimenti sarà necessario sceglierne " "una differente)?" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2096,39 +2126,39 @@ msgstr "" "Si desidera scegliere un carattere da utilizzare per questa codifica\n" "(altrimenti il testo con tale codifica non verrà visualizzato correttamente)?" -#: ../contrib/src/xrc/xmlres.cpp:543 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "Impossibile trovare l'handler per il nodo XML '%s', classe '%s'!" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Funzionalità non disponibili per questo formato di immagine." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Funzionalità non disponibili per il formato di immagine %d." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Funzionalità non disponibili per il formato di immagine %s." -#: ../src/html/helpfrm.cpp:650 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Pagina corrispondente non ancora trovata" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordico (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normale" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Carattere normale:" @@ -2136,35 +2166,35 @@ msgstr "Carattere normale:" msgid "Note, 8 1/2 x 11 in" msgstr "Nota, 8 1/2 x 11 in" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Apri un documento HTML" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Operazione non permessa." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "L'opzione '%s' richiede un valore, atteso '='." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "L'opzione '%s' richiede un valore." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Opzione '%s': impossibile convertire '%s' in una data." @@ -2213,12 +2243,12 @@ msgstr "PNM: Formato del file sconosciuto." msgid "PNM: File seems truncated." msgstr "PNM: Il file sembra troncato." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Pagina %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Pagina %d di %d" @@ -2241,7 +2271,7 @@ msgstr "Dimensione del foglio" msgid "Paper size" msgstr "Dimensione del foglio" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Permessi" @@ -2253,15 +2283,15 @@ msgstr "Creazione della pipe fallita" msgid "Please choose a valid font." msgstr "Per favore scegliere un carattere valido." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Per favore scegliere un file esistente." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Per favore scegliere l'ISP a cui connettersi" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2272,7 +2302,7 @@ msgstr "" "(richiesta versione 4.70 o sucessiva, installata %d.%02d)\n" "oppure il programma non funzionerà correttamente" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "Stampa in corso\n" @@ -2284,11 +2314,11 @@ msgstr "Verticale" msgid "PostScript file" msgstr "File PostScript" -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Anteprima:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Pagina precedente" @@ -2296,11 +2326,11 @@ msgstr "Pagina precedente" msgid "Print" msgstr "Stampa" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Anteprima di stampa" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Errore durante l'anteprima di stampa" @@ -2320,7 +2350,7 @@ msgstr "Stampa a colori" msgid "Print spooling" msgstr "Coda di stampa" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Stampa questa pagina" @@ -2328,7 +2358,7 @@ msgstr "Stampa questa pagina" msgid "Print to File" msgstr "Stampa su file" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Stampa..." @@ -2348,20 +2378,20 @@ msgstr "Opzioni stampante:" msgid "Printer..." msgstr "Stampante..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "Stampa in corso" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Errore durante la stampa" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Stampa della pagina %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Stampa in corso..." @@ -2382,7 +2412,7 @@ msgstr "Domanda" msgid "Read error on file '%s'" msgstr "Errore di lettura nel file '%s'" -#: ../contrib/src/xrc/xmlres.cpp:518 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "Impossibile trovare il nodo oggetto referenziaro con ref=\"%s\"." @@ -2415,10 +2445,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Valore '%s' del registro di sistema già presente." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "ReleaseMutex()" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Voci pertinenti:" @@ -2427,7 +2453,7 @@ msgstr "Voci pertinenti:" msgid "Remaining time : " msgstr "Tempo rimanente : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Rimuovi la pagina corrente dai segnalibri" @@ -2439,7 +2465,7 @@ msgstr "Sostituisci t&utto" msgid "Replace with:" msgstr "Sostituisci con:" -#: ../contrib/src/xrc/xmlres.cpp:380 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "I file di risorsa devono avere la stessa versione!" @@ -2447,21 +2473,21 @@ msgstr "I file di risorsa devono avere la stessa versione!" msgid "Right margin (mm):" msgstr "Margine destro (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Salvare il file %s" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Salva con nome" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" msgstr "Salvare il file" @@ -2469,19 +2495,15 @@ msgstr "Salvare il file" msgid "Save log contents to file" msgstr "Salva il registro su file" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "Screenshot salvato nel file: " - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Cerca" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2496,15 +2518,15 @@ msgstr "Direzione" msgid "Search for:" msgstr "Trova:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Cerca in tutti i libri" -#: ../src/html/helpfrm.cpp:650 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Ricerca in corso..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Sezioni" @@ -2513,24 +2535,28 @@ msgstr "Sezioni" msgid "Seek error on file '%s'" msgstr "Errore durante la seek nel file '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +msgid "Select &All" +msgstr "Seleziona tutto" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Scegliere un modello di documento" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Scegliere una visualizzazione del documento" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Scegliere un file" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Atteso separatore dopo l'opzione '%s'." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Configurazione" @@ -2538,15 +2564,15 @@ msgstr "Configurazione" msgid "Setup..." msgstr "Configurazione..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "Trovate più connessioni attive, ne viene scelta una a caso." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Visualizza tutto" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Visualizza tutti le voci dell'indice" @@ -2554,36 +2580,36 @@ msgstr "Visualizza tutti le voci dell'indice" msgid "Show hidden directories" msgstr "Visualizza le cartelle nascoste" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Visualizza i file nascosti" -#: ../src/html/helpfrm.cpp:501 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Visualizza/nascondi la barra di navigazione" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Dimensione" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Slant" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Spiacente, impossibile aprire il file per salvare." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Spiacente, impossibile aprire il file." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Spiacente, impossibile salvare il file." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Spiacente, memoria insufficente per la creazione di un'anteprima." @@ -2595,13 +2621,13 @@ msgstr "Statement, 5 1/2 x 8 1/2 in" msgid "Status: " msgstr "Stato: " -#: ../contrib/src/xrc/xmlres.cpp:578 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" "Sottoclasse '%s' non trovata per la risorsa '%s', subclassing non eseguito!" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Svizzero" @@ -2630,15 +2656,15 @@ msgstr "TIFF: Errore durante la scrittura dell'immagine." msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 in" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Modelli" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" @@ -2646,7 +2672,7 @@ msgstr "Thai (ISO-8859-11)" msgid "The FTP server doesn't support passive mode." msgstr "Il server FTP non supporta la modalità passiva di trasfrimento" -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2657,7 +2683,7 @@ msgstr "" "un altro in sostituzione oppure scegliere [Annulla]\n" "se non può essere sostituito." -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Il formato '%d' degli appunti non esiste." @@ -2671,7 +2697,7 @@ msgstr "" "La cartella '%s' non esiste.\n" "Crearla adesso?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2685,7 +2711,7 @@ msgstr "" msgid "The path '%s' contains too many \"..\"!" msgstr "Il percorso '%s' contiene troppi \"..\"!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Il parametro '%s' è obbligatorio." @@ -2694,12 +2720,12 @@ msgstr "Il parametro '%s' msgid "The text couldn't be saved." msgstr "Il testo non può essere salvato." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "L'opzione '%s' richiede un parametro." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2708,7 +2734,7 @@ msgstr "" "La versione del servizio di Accesso Remoto (RAS) installata è troppo " "vecchia. Si prega di aggiornarla (la funzione %s è assente)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -2723,7 +2749,7 @@ msgstr "" "Inizializzazione del modulo dei thread fallita: impossibile memorizzare un " "valore nella memoria locale del thread" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" "Inizializzazione del modulo dei thread fallita: errore nella creazione della " @@ -2737,7 +2763,7 @@ msgstr "" "Inizializzazione del modulo dei thread fallita: impossibile allocare " "l'indice nella memoria locale del thread" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Priorità del thread ignorata." @@ -2749,15 +2775,15 @@ msgstr "Affianca orizzontalmente" msgid "Tile &Vertically" msgstr "Affianca verticalmente" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Ora" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Suggerimento del giorno" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Spiacente, suggerimenti non disponibili!" @@ -2780,7 +2806,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "Abbandonata la tentata risoluzione di un nome di host NULL" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turco (ISO-8859-9)" @@ -2793,7 +2819,7 @@ msgstr "US Std Fanfold, 14 7/8 x 11 in" msgid "Unable to open requested HTML document: %s" msgstr "Impossibile aprire il documento HTML richiesto: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Sottolineato" @@ -2810,45 +2836,45 @@ msgstr "Sottolineato" msgid "Unexpected end of file whilst parsing resource." msgstr "Fine del file durante l'analisi delle risorse." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Parametro '%s' non atteso" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "Unicode 7 bit (UTF-7)" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "Unicode 8 bit (UTF-8)" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Errore DDE %08x sconosciuto" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Codifica sconosciuta (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Campo sconosciuto nel file %s, riga %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Opzione lunga '%s' sconosciuta" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Opzione '%s' sconosciuta" -#: ../contrib/src/xrc/xmlres.cpp:648 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "Stile sconosciuto " @@ -2867,12 +2893,12 @@ msgstr "Comando privo di nome" msgid "Unrecognized style %s whilst parsing resource." msgstr "Stile %s sconosciuto durante l'analisi delle risorse." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Formato degli appunti non supportato." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "Tema '%s' non supportato." @@ -2881,7 +2907,7 @@ msgstr "Tema '%s' non supportato." msgid "Up" msgstr "&Su" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Utilizzo: %s" @@ -2890,23 +2916,23 @@ msgstr "Utilizzo: %s" msgid "Validation conflict" msgstr "Conflitto durante la validazione" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Vedi i file - dettagli" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Vedi i file - lista" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Visualizzazioni" -#: ../src/unix/utilsunx.cpp:754 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Attesa della fine del sottoprocesso fallita" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Avviso" @@ -2914,16 +2940,16 @@ msgstr "Avviso" msgid "Warning: " msgstr "Avviso:" -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" "Avviso: tentata la rimozione di un handler di tag HTML da uno stack vuoto." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "Europeo Occidentale (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "Europeo Occidentale con Euro (ISO-8859-15)" @@ -2931,7 +2957,7 @@ msgstr "Europeo Occidentale con Euro (ISO-8859-15)" msgid "Whole word" msgstr "Parola intera" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Solo parole intere" @@ -2939,68 +2965,68 @@ msgstr "Solo parole intere" msgid "Win32 theme" msgstr "Tema Win32" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s su Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabo (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltico (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows Europeo Centrale (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "Windows Cinese Semplificato (CP 936)" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows Cinese Tradizionale (CP 950)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cirillico (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Greco (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Ebraico (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "Windows Giapponese (CP 932)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "Windows Coreano (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Turco (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows Europeo Occidentale (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3023,22 +3049,22 @@ msgstr "XPM: Dati dei pixel malformati" msgid "XPM: malformed colour definition '%s'!" msgstr "XPM: Definizione di colore '%s' malformata!" -#: ../contrib/src/xrc/xmlres.cpp:456 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "Risorsa XRC '%s' (classe '%s') non trovata!" -#: ../contrib/src/xrc/xmlres.cpp:807 ../contrib/src/xrc/xmlres.cpp:818 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "Risorsa XRC: Impossibile creare una bitmap a partire da '%s'." -#: ../contrib/src/xrc/xmlres.cpp:767 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "Risorsa XRC: Specifica di colore '%s' errata per la proprietà '%s'.'" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Si" @@ -3047,19 +3073,19 @@ msgstr "Si" msgid "You cannot add a new directory to this section." msgstr "Impossibile aggiungere una nuova cartella a questa sezione." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "Il gestore di file ZIP supporta unicamente file locali!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[VUOTO]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "un'applicazione DDEML ha creato una 'race condition' prolungata." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3070,45 +3096,45 @@ msgstr "" "oppure è stato passato ad una funzione DDEML\n" "un identificatore di istanza non valido." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "un tentativo di un client di stabilire una connessione è fallito." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "un'allocazione di memoria è fallita." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "un parametro ha fallito la validazione da parte del DDEML." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" "una richiesta di transazione sincrona (advise) ha superato il tempo massimo." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" "una richiesta di transazione sincrona (data) ha superato il tempo massimo." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" "una richiesta di transazione sincrona (execute) ha superato il tempo massimo." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" "una richiesta di transazione sincrona (poke) ha superato il tempo massimo." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" "una richiesta di terminazione di transazione (advise) ha superato il tempo " "massimo." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3118,7 +3144,7 @@ msgstr "" "già terminata dal client, oppure il server\n" "è terminato prima di portare a termine la transazione." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "una transazione è fallita." @@ -3126,7 +3152,7 @@ msgstr "una transazione msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3138,15 +3164,15 @@ msgstr "" "oppure un'applicazione inizializzata come APPCMD_CLIENTONLY\n" "ha cercato di effettuare una transazione server." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "una chiamata interna alla funzione PostMessage è fallita." -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "è avvenuto un errore interno nel DDEML." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3157,7 +3183,7 @@ msgstr "" "Una volta che l'applicazione è uscita da una callback XTYP_XACT_COMPLETE,\n" "l'identificatore di transazione per questa callback non è più valido." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "tentativo di modificare la chiave non modificabile '%s' ignorato." @@ -3166,11 +3192,11 @@ msgstr "tentativo di modificare la chiave non modificabile '%s' ignorato." msgid "binary" msgstr "binario" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 msgid "bold" msgstr "grassetto" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 msgid "bold " msgstr "grassetto " @@ -3179,34 +3205,34 @@ msgstr "grassetto " msgid "can't close file '%s'" msgstr "impossibile chiudere il file '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "impossibile chiudere il descrittore di file %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "impossibile applicare i cambiamenti al file '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "impossibile creare il file '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "impossibile eliminare il file di configurazione utente '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "impossibile determinare se il descrittore di file %d ha raggiunto la fine " "del file" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "impossibile determinare la dimensione del file del descritore %d" @@ -3217,56 +3243,56 @@ msgstr "" "impossibile trovare la HOME dell'utente, viene impiegata la cartella " "corrente." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "impossibile forzare la scrittura su disco del descrittore di file %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "" "impossibile determinare la posizione corrente del descrittore di file %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "impossibile caricare un qualunque tipo di carattere, abbandono" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "impossibile aprire il file '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "impossibile aprire il file globale di configurazione '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "impossibile aprire il file di configurazione utente '%s'." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "impossibile aprire il file di configurazione utente." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "impossibile leggere dal descrittore di file %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "impossibile eliminare il file '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "impossibile eliminare il file temporaneo '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "impossibile eseguire una seek sul descrittore di file %d" @@ -3276,12 +3302,12 @@ msgstr "impossibile eseguire una seek sul descrittore di file %d" msgid "can't write buffer '%s' to disk." msgstr "Impossibile scrivere su disco il buffer '%s'." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "impossibile scrivere sul descrittore di file %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "impossibile scrivere il file di configurazione utente." @@ -3294,32 +3320,32 @@ msgstr "file di catalogo non trovato per il dominio '%s'." msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "data" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "predefinito" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "diciotto" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "otto" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "undici" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "la voce '%s' è presente più volte nel gruppo '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "stabilire" @@ -3328,57 +3354,57 @@ msgstr "stabilire" msgid "failed to flush the file '%s'" msgstr "impossibile forzare la scrittura su disco del file '%s'" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "quindici" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "cinque" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "file '%s', riga %d: '%s' ignorato dopo l'inizio di un gruppo." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "file '%s', riga %d: atteso '='." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "file '%s', riga %d: la chiave '%s' è già stata trovata alla riga %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "" "file '%s', riga %d: valore per la chiave non configurabile '%s' ignorato." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "file '%s': carattere %c non atteso alla riga %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "primo" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "quattordici" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "quattro" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "genera messaggi del registro dettagliati" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() fallita" @@ -3387,11 +3413,11 @@ msgstr "gmtime() fallita" msgid "illegal scrollbar selector %d" msgstr "selettore di barra di scorrimento (scrollbar) %d non valido" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "iniziare" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "valore di ritorno di eof() non valido." @@ -3399,19 +3425,15 @@ msgstr "valore di ritorno di eof() non valido." msgid "invalid message box return value" msgstr "il riquadro di dialogo ha ritornato un valore non valido" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" msgstr "corsivo" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "grande" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 msgid "light" msgstr "leggero" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 msgid "light " msgstr "leggero " @@ -3425,39 +3447,35 @@ msgstr "impossibile selezionare le impostazioni locali '%s'." msgid "looking for catalog '%s' in path '%s'." msgstr "ricerca del catalogo '%s' nel percorso '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "medio" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "mezzanotte" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() fallita" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "diciannove" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "nove" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "nessun errore DDE." -#: ../src/html/helpdata.cpp:561 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "senzanome" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "mezzogiorno" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" @@ -3465,19 +3483,19 @@ msgstr "num" msgid "reading" msgstr "lettura" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "problema di rientranza." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "due" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "diciassette" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "sette" @@ -3485,81 +3503,77 @@ msgstr "sette" msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "mostra questo messaggio di aiuto" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "sedici" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "sei" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "piccolo" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "specifica la modalità video da utilizzare (es. 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "specifica il tema da utilizzare" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "dieci" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "" "la risposta alla transazione ha causato l'impostazione del bit DDE_FBUSY." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "tre" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "tredici" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "oggi" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "domani" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "dodici" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "venti" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 msgid "underlined" msgstr "sottolineato" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 msgid "underlined " msgstr "sottolineato " -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "\" non atteso alla posizione %d in '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "sconosciuto" @@ -3567,7 +3581,7 @@ msgstr "sconosciuto" msgid "unknown error" msgstr "errore sconosciuto" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "errore sconosciuto (codice %08x)." @@ -3576,7 +3590,7 @@ msgstr "errore sconosciuto (codice %08x)." msgid "unknown line terminator" msgstr "carattere di fine riga sconosciuto" -#: ../src/common/file.cpp:357 +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "origine della seek sconosciuta" @@ -3585,11 +3599,11 @@ msgstr "origine della seek sconosciuta" msgid "unknown-%d" msgstr "sconosciuto-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "senzanome" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "senzanome%d" @@ -3599,14 +3613,6 @@ msgstr "senzanome%d" msgid "using catalog '%s' from '%s'." msgstr "utilizzato catalogo '%s' in '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "molto grande" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "molto piccolo" - #: ../src/common/filename.cpp:166 msgid "writing" msgstr "scrittura" @@ -3616,12 +3622,12 @@ msgstr "scrittura" msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "wxDllLoader: impossibile ottenere l'indirizzo del simbolo '%s'" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "wxDynamicLibrary: impossibile ottenere l'indirizzo del simbolo '%s'" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay fallita." @@ -3633,15 +3639,15 @@ msgstr "wxSocket: signature non valida in ReadMsg." msgid "wxSocket: unknown event!." msgstr "wxSocket: evento sconosciuto!." -#: ../src/motif/app.cpp:584 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows non può aprire il display per '%s': abbandona." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." msgstr "wxWindows non può aprire il display. Abbandona." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "ieri" diff --git a/locale/nl.po b/locale/nl.po index 2ef19bfc42..5065910b6a 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -1,31 +1,27 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows-2.2.1\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" -"PO-Revision-Date: 2000-09-05 12:35Romaans (zomertijd)\n" -"Last-Translator: Patrick Hubers \n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" +"PO-Revision-Date: 2002-11-29 15:12+0100\n" +"Last-Translator: Dimitri \n" "Language-Team: wxWindows translators \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" +"Content-Transfer-Encoding: 8bit\n" #: ../src/common/log.cpp:304 #, c-format msgid " (error %ld: %s)" msgstr " (fout %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Afdrukvoorbeeld" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " bytes " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "Envelop nr.10, 4 1/8 x 9 1/2 inch" @@ -53,23 +49,23 @@ msgstr "Envelop nr.9, 3 7/8 x 8 7/8 inch" msgid "#define %s must be an integer." msgstr "#define %s moet een geheel getal zijn." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" -msgstr "" +msgstr "%d" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" -msgstr "" +msgstr "%d...%d" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i van %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (of %s)" @@ -89,6 +85,11 @@ msgstr "%s Informatie" msgid "%s Warning" msgstr "%s Waarschuwing" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -108,36 +109,42 @@ msgstr "%s: incorrecte syntax voor bronbestand." #: ../src/msw/mdi.cpp:192 msgid "&Arrange Icons" -msgstr "" +msgstr "Pictogrammen Schikken" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 -#, fuzzy +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "Annuleer" #: ../src/msw/mdi.cpp:188 msgid "&Cascade" -msgstr "" +msgstr "Trapsgewijs" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Sluiten" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Niet-proportioneel (Teletype)" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Details" #: ../src/generic/fdrepdlg.cpp:168 -#, fuzzy msgid "&Find" msgstr "Zoeken" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Voltooien" -#: ../src/generic/wizard.cpp:249 -#, fuzzy +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "Help" @@ -147,27 +154,31 @@ msgstr "&Log" #: ../src/univ/themes/win32.cpp:4539 msgid "&Move" -msgstr "" +msgstr "Verplaatsen" -#: ../src/msw/mdi.cpp:193 -#, fuzzy +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" -msgstr "&Volgende >" +msgstr "&Volgende" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Volgende >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Volgende tip" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 #, fuzzy +msgid "&Paste" +msgstr "datum" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" -msgstr "Vorige pagina" +msgstr "Vorige" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "Opnie&uw" @@ -177,27 +188,25 @@ msgstr "Opnie&uw " #: ../src/generic/fdrepdlg.cpp:174 msgid "&Replace" -msgstr "" +msgstr "Vervangen" #: ../src/univ/themes/win32.cpp:4538 -#, fuzzy msgid "&Restore" -msgstr "Opnie&uw" +msgstr "Herstellen" #: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "O&pslaan..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Toon tips bij opstarten" #: ../src/univ/themes/win32.cpp:4541 -#, fuzzy msgid "&Size" msgstr "Formaat" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Ongedaan maken" @@ -205,11 +214,13 @@ msgstr "&Ongedaan maken" msgid "&Undo " msgstr "Maak &ongedaan: " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Venster" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' heeft extra '..', genegeerd" @@ -220,7 +231,7 @@ msgstr "'%s' heeft extra '..', genegeerd" msgid "'%s' is invalid" msgstr "'%s' is ongeldig" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' is geen geldige numerieke waarde voor optie '%s'." @@ -231,9 +242,9 @@ msgid "'%s' is not a valid message catalog." msgstr "'%s' is geen geldige berichtcatalogus." #: ../src/common/textbuf.cpp:245 -#, fuzzy, c-format +#, c-format msgid "'%s' is probably a binary buffer." -msgstr "'%s' is waarschijnlijk een binair bestand." +msgstr "'%s' is waarschijnlijk een binaire buffer." #: ../src/common/valtext.cpp:172 #, c-format @@ -255,12 +266,12 @@ msgstr "'%s' mag alleen letters bevatten." msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' mag alleen alfa-numerieke tekens bevatten." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Help)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(favorieten)" @@ -274,11 +285,11 @@ msgstr "" ", verwachtte static, #include of #define\n" "tijdens inlezen van bron." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -294,66 +305,57 @@ msgstr "11 x 17 inch" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 envelop, 3 5/8 x 6 1/2 inch" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": bestand bestaat niet!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": onbekende tekenset" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": onbekende codering" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Terug" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "

    " msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Normaal lettertype
    en onderstreept. Cursief " -"lettertype. Vet lettertype. Vet+cursief " -"lettertype.
    lettergrootte -2
    lettergrootte -1
    lettergrootte " -"+0
    lettergrootte +1
    lettergrootte +2
    lettergrootte " -"+3
    lettergrootte " -"+4

    Niet-proportioneel lettertype.
    vet " -"cursief vet+cursief onderstreept
    lettergrootte -2
    lettergrootte " -"-1
    lettergrootte +0
    lettergrootte +1
    lettergrootte " -"+2
    lettergrootte +3
    lettergrootte +4
    " +"lettertype. Vet lettertype. Vet+cursief lettertype.
    lettergrootte -2
    lettergrootte -" +"1
    lettergrootte +0
    lettergrootte +1
    lettergrootte +2
    lettergrootte +3
    lettergrootte +4

    Niet-proportioneel lettertype.
    vet cursief " +"vet+cursief onderstreept
    lettergrootte " +"-2
    lettergrootte -1
    lettergrootte +0
    lettergrootte +1
    lettergrootte +2
    lettergrootte +3
    lettergrootte +4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -377,9 +379,9 @@ msgstr "ABCDEFGabcdefg12345" #: ../src/common/ftp.cpp:369 msgid "ASCII" -msgstr "" +msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Voeg huidige pagina toe aan favorieten" @@ -396,10 +398,15 @@ msgstr "Bezig met toevoegen van boek %s" msgid "All" msgstr "Alles" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Alle bestanden (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Alle bestanden (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Al bezig internetaanbieder te bellen." @@ -409,7 +416,7 @@ msgstr "Al bezig internetaanbieder te bellen." msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Voeg log toe aan bestand '%s' (kies [Nee] om te overschrijven)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabisch (ISO-8859-6)" @@ -433,47 +440,43 @@ msgstr "B5, 182, 257 mm" msgid "B6 Envelope, 176 x 125 mm" msgstr "Envelop B6, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 -#, fuzzy +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." -msgstr "PNM: kon geen geheugen reserveren." +msgstr "BMP: kon geen geheugen reserveren." #: ../src/common/imagbmp.cpp:86 msgid "BMP: Couldn't save invalid image." msgstr "BMP: kon ongeldige afbeelding niet opslaan" #: ../src/common/imagbmp.cpp:290 -#, fuzzy msgid "BMP: Couldn't write RGB color map." -msgstr "BMP: kon gegevens niet wegschrijven" +msgstr "BMP: Kon RGB kleur map niet schrijven." #: ../src/common/imagbmp.cpp:422 msgid "BMP: Couldn't write data." msgstr "BMP: kon gegevens niet wegschrijven" #: ../src/common/imagbmp.cpp:195 -#, fuzzy msgid "BMP: Couldn't write the file (Bitmap) header." -msgstr "BMP: kon de bestandsheader niet schrijven" +msgstr "BMP: Kon de bestands (Bitmap) header niet schrijven" #: ../src/common/imagbmp.cpp:216 -#, fuzzy msgid "BMP: Couldn't write the file (BitmapInfo) header." -msgstr "BMP: kon de bestandsheader niet schrijven" +msgstr "BMP: kon de bestandsheader niet schrijven." #: ../src/common/imagbmp.cpp:120 msgid "BMP: wxImage doesn't have own wxPalette." -msgstr "" +msgstr "BMP: wxImage heeft geen eigen wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Achteruit" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltisch (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltisch (oud) (ISO-8859-4)" @@ -482,7 +485,7 @@ msgstr "Baltisch (oud) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "Bitmap-bronspecificatie %s niet gevonden." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Vet" @@ -518,12 +521,12 @@ msgstr "Envelop C6, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "Envelop C65, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1369 +#, c-format msgid "Can not enumerate files '%s'" msgstr "Kan bestanden in map '%s' niet opsommen" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Kan bestanden in map '%s' niet opsommen" @@ -550,7 +553,7 @@ msgstr "Kan niet wachten op thread-be msgid "Can't &Undo " msgstr "Kan niet &ongedaan maken: " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -566,17 +569,16 @@ msgstr "Kan registersleutel '%s' niet sluiten" msgid "Can't copy values of unsupported type %d." msgstr "Kan geen waarden kopiëren van niet-ondersteund type %d" -#: ../src/msw/toplevel.cpp:295 -#, fuzzy +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" -msgstr "kan bestand '%s' niet maken" +msgstr "Kan dialoog niet maken met gebruik van geheugen sjabloon" -#: ../src/os2/toplevel.cpp:331 -#, fuzzy, c-format +#: ../src/os2/toplevel.cpp:369 +#, c-format msgid "Can't create dialog using template '%ul'" -msgstr "kan bestand '%s' niet maken" +msgstr "Kan dialoog niet maken met gebruik van sjabloon '%ul'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" "Kan geen list-control venster maken, zorg dat comctl32.dll geïnstalleerd is." @@ -590,10 +592,10 @@ msgstr "Kan registersleutel '%s' niet maken" msgid "Can't create thread" msgstr "Kan thread niet maken" -#: ../src/msw/window.cpp:2989 -#, fuzzy, c-format +#: ../src/msw/window.cpp:3062 +#, c-format msgid "Can't create window of class %s" -msgstr "kan bestand '%s' niet maken" +msgstr "Kan venster van klasse '%s' niet maken" #: ../src/msw/registry.cpp:661 #, c-format @@ -661,9 +663,9 @@ msgid "Can't read value of key '%s'" msgstr "Kan waarde van sleutel '%s' niet lezen" #: ../src/common/image.cpp:955 -#, fuzzy, c-format +#, c-format msgid "Can't save image to file '%s': unknown extension." -msgstr "Kan geen afbeelding laden uit bestand '%s': bestand bestaat niet." +msgstr "Kan afbeelding niet opslaan naar bestand '%s': Onbekende extensie." #: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." @@ -678,96 +680,93 @@ msgstr "Kan thread-prioriteit niet instellen" msgid "Can't set value of '%s'" msgstr "Kan waarde van '%s' niet instellen" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Annuleer" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." -msgstr "" +msgstr "Kan dialoog eenheden niet converteren: dialoog is onbekend." -#: ../src/common/strconv.cpp:929 -#, fuzzy, c-format +#: ../src/common/strconv.cpp:963 +#, c-format msgid "Cannot convert from encoding '%s'!" -msgstr "Onbekende codering (%d)" +msgstr "Kan niet converteren van encodering '%s'!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Kan geen actieve inbelverbinding vinden: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:243 +#, c-format msgid "Cannot find container for unknown control '%s'." -msgstr "Kan geen actieve inbelverbinding vinden: %s" +msgstr "Kan geen container vinden voor onbekende control '%s'." -#: ../contrib/src/xrc/xmlres.cpp:948 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:1024 +#, c-format msgid "Cannot find font node '%s'." -msgstr "Kan URL '%s' niet openen" +msgstr "Kan lettertype node '%s' niet vinden." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Kan locatie van adresboek niet vinden" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Kan prioriteitsbereik niet verkrijgen voor planningsstrategie %d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Kan host-naam niet verkrijgen" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Kan officiële host-naam niet verkrijgen" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Kan niet ophangen - geen actieve inbelverbinding" -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Kan OLE niet initializeren" #: ../src/mgl/app.cpp:414 -#, fuzzy msgid "Cannot initialize SciTech MGL!" -msgstr "Kan OLE niet initializeren" +msgstr "Kan SciTech MGL niet initializeren!" -#: ../src/mgl/window.cpp:546 -#, fuzzy +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." -msgstr "Kan OLE niet initializeren" +msgstr "Kan beeldscherm niet initializeren." -#: ../src/msw/volume.cpp:627 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:634 +#, c-format msgid "Cannot load icon from '%s'." -msgstr "Kan bestanden in map '%s' niet opsommen" +msgstr "Kan pictogram niet laden van '%s'." -#: ../contrib/src/xrc/xmlres.cpp:337 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:356 +#, c-format msgid "Cannot load resources from file '%s'." -msgstr "Kon in te voegen bronbestand %s niet vinden." +msgstr "Kan bronnen niet laden uit bestand '%s'." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Kan HTML-document '%s' niet openen" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Kan HTML-helpbestand '%s' niet openen" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Kan URL '%s' niet openen" @@ -777,62 +776,60 @@ msgstr "Kan URL '%s' niet openen" msgid "Cannot open contents file: %s" msgstr "Kon inhoudsopgave-bestand niet openen: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:330 +#, c-format msgid "Cannot open file '%s'." -msgstr "Kan bestand '%s' niet openen" +msgstr "Kan bestand '%s' niet openen." -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Kan bestand voor PostScript-afdrukken niet openen!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Kan index-bestand niet openen: %s" -#: ../contrib/src/xrc/xmlres.cpp:881 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:957 +#, c-format msgid "Cannot parse coordinates from '%s'." -msgstr "Kon inhoudsopgave-bestand niet openen: %s" +msgstr "Kan coordinaten niet ontleden van '%s'." -#: ../contrib/src/xrc/xmlres.cpp:922 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:998 +#, c-format msgid "Cannot parse dimension from '%s'." -msgstr "Kan bestanden in map '%s' niet opsommen" +msgstr "Kan dimensie niet ontleden van '%s'." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Kan geen lege pagina afdrukken." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 -#, fuzzy, c-format +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 +#, c-format msgid "Cannot read typename from '%s'!" -msgstr "Kon inhoudsopgave-bestand niet openen: %s" +msgstr "Kan typename van '%s' niet lezen!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Kan thread-planningsstrategie niet verkrijgen." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Kan thread niet starten: fout bij schrijven van TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Hoofdlettergevoelig" -#: ../src/common/fontmap.cpp:125 -#, fuzzy +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" -msgstr "Baltisch (ISO-8859-13)" +msgstr "Celtic (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 -#, fuzzy +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" -msgstr "Centraal-Europees (ISO-8859-2/Latin 2)" +msgstr "Centraal-Europees (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Kies internetaanbieder om te bellen" @@ -840,53 +837,62 @@ msgstr "Kies internetaanbieder om te bellen" msgid "Choose font" msgstr "Kies lettertype" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Sluiten" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Wis de loggegevens" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Sluiten" #: ../src/univ/themes/win32.cpp:4547 msgid "Close\tAlt-F4" -msgstr "" +msgstr "Sluiten\tAlt-F4" + +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Sluiten" #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Sluit dit venster" -#: ../src/generic/dirctrlg.cpp:547 -#, fuzzy +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" -msgstr "Deze computer" +msgstr "Computer" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Naam van configuratie-ingang kan niet beginnen met '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Bevestig" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" -msgstr "" +msgstr "Bevestig register bijwerking" #: ../src/html/htmlwin.cpp:262 msgid "Connecting..." msgstr "Bezig te verbinden..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Inhoud" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." -msgstr "" +msgid "Conversion to charset '%s' doesn't work." +msgstr "Conversie naar karakterset '%s' werkt niet." #: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" @@ -902,7 +908,7 @@ msgstr "Kon in te voegen bronbestand %s niet vinden." msgid "Could not find tab for id" msgstr "Kon tabblad niet vinden voor id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Kon Rich Edit dll '%s' niet laden" @@ -925,19 +931,19 @@ msgstr "" "Kon menu '%s' niet herleiden. Gebruik een integer (niet nul)\n" "of zorg voor een #define (zie handleiding voor mogelijke problemen)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Kon afdrukvoorbeeld niet starten." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Kon printen niet starten." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Kon gegevens niet naar venster overdragen" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -948,11 +954,10 @@ msgid "Couldn't create a timer" msgstr "Kon geen timer creëren" #: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 -#, fuzzy msgid "Couldn't create cursor." -msgstr "Kon geen timer creëren" +msgstr "Kon cursor niet creëren" -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Kon symbool %s niet vinden in een dynamische bibliotheek" @@ -961,26 +966,25 @@ msgstr "Kon symbool %s niet vinden in een dynamische bibliotheek" msgid "Couldn't get the current thread pointer" msgstr "Kon pointer naar huidige thread niet verkrijgen" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "Kon PNG-afbeelding niet laden: bestand is corrupt of onvoldoende geheugen." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Kon klembord-formaat '%s' niet registreren." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Kon geen informatie verkrijgen over lijst-item %d." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 -#, fuzzy +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." -msgstr "JPEG: kon afbeelding niet opslaan." +msgstr "Kon PNG afbeelding niet opslaan." #: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" @@ -990,79 +994,72 @@ msgstr "Kon thread niet be msgid "Create directory" msgstr "Maak map" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Maak nieuwe map" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Huidige map:" -#: ../src/common/fontmap.cpp:116 -#, fuzzy +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" -msgstr "Baltisch (ISO-8859-13)" +msgstr "Cyrillic (ISO-8859-5)" #: ../src/common/paper.cpp:106 msgid "D sheet, 22 x 34 in" msgstr "D, 22 x34 inch" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE 'poke request' mislukt" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: kan geen 4-bits codering verwerken" - -#: ../src/common/imagbmp.cpp:836 -#, fuzzy +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." -msgstr "BMP: codering komt niet overeen met bit-diepte" +msgstr "DIB Header: Codering komt niet overeen met bit-diepte." -#: ../src/common/imagbmp.cpp:798 -#, fuzzy +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." -msgstr "BMP: afbeeldingshoogte > 32767 pixels in bestand." +msgstr "DIB Header: Afbeeldingshoogte > 32767 pixels in bestand." -#: ../src/common/imagbmp.cpp:792 -#, fuzzy +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." -msgstr "BMP: afbeeldingsbreedte > 32767 pixels in bestand." +msgstr "DIB Header: Afbeeldingsbreedte > 32767 pixels in bestand." -#: ../src/common/imagbmp.cpp:812 -#, fuzzy +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." -msgstr "BMP: onbekende bitdiepte in bestand." +msgstr "DIB Header: Onbekende bitdiepte in bestand." -#: ../src/common/imagbmp.cpp:822 -#, fuzzy +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." -msgstr "BMP: onbekende codering in bestand." +msgstr "DIB Header: Onbekende codering in bestand." #: ../src/common/paper.cpp:128 msgid "DL Envelope, 110 x 220 mm" msgstr "Envelop DL, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Datum" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Decoratief" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" -msgstr "" +msgstr "Standaard encodering" #: ../src/unix/snglinst.cpp:269 -#, fuzzy, c-format +#, c-format msgid "Deleted stale lock file '%s'." -msgstr "Kan INI-bestand '%s' niet verwijderen" +msgstr "Verouderd vergrendeld bestand '%s' verwijderd." -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." @@ -1070,32 +1067,29 @@ msgstr "" "Inbel-functies zijn niet beschikbaar omdat de inbelverbindingssoftware (RAS) " "niet op deze machine is geïnstalleerd. Installeer het a.u.b." -#: ../src/os2/toplevel.cpp:329 -#, fuzzy +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" -msgstr "" -"Maken van dialoogvenster mislukt. U bent mogelijk '#include wx/msw/wx.rc' in " -"uw resources vergeten." +msgstr "Bent U vergeten wx/os2/wx.rc aan uw bronnen toe te voegen?" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Wist u dat..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Map '%s' kon niet worden gemaakt" #: ../src/mgl/dirmgl.cpp:217 -#, fuzzy, c-format +#, c-format msgid "Directory '%s' doesn't exist!" -msgstr "Map bestaat niet" +msgstr "Map '%s' bestaat niet!" #: ../src/generic/dirdlgg.cpp:188 msgid "Directory does not exist" msgstr "Map bestaat niet" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1103,22 +1097,28 @@ msgstr "" "Toon alle items in de index die de gegeven tekst bevatten. Niet " "hoofdlettergevoelig." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Toon optie-dialoog" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" +"Wilt U het '%s' commando dat gebruikt wordt voor bestanden met extensie \"%s" +"\" overschrijven?\n" +"Huidige waarde is \n" +"%s, \n" +"Nieuwe waarde is \n" +"%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Wilt u de veranderingen in document '%s' bewaren?" @@ -1127,14 +1127,13 @@ msgstr "Wilt u de veranderingen in document '%s' bewaren?" msgid "Done" msgstr "Klaar" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Klaar." #: ../src/generic/fdrepdlg.cpp:157 -#, fuzzy msgid "Down" -msgstr "Klaar" +msgstr "Omlaag" #: ../src/common/paper.cpp:107 msgid "E sheet, 34 x 44 in" @@ -1148,7 +1147,7 @@ msgstr "Verstreken tijd: " msgid "Entries found" msgstr "Ingangen gevonden" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." @@ -1156,16 +1155,16 @@ msgstr "" "Uitbreiding van omgevingsvariabelen mislukt: ontbrekende '%c' op positie %d " "in '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Fout" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Fout " @@ -1173,16 +1172,15 @@ msgstr "Fout " msgid "Error creating directory" msgstr "Fout bij het maken van map" -#: ../src/common/imagbmp.cpp:845 -#, fuzzy +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." -msgstr "TIFF: fout bij lezen van afbeelding." +msgstr "Fout bij lezen DIB afbeelding ." #: ../src/common/log.cpp:460 msgid "Error: " msgstr "Fout: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1190,7 +1188,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Geschatte tijd: " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Uitvoering van opdracht '%s' mislukt" @@ -1217,34 +1215,37 @@ msgstr "'=' verwacht bij inlezen van bron." msgid "Expected 'char' whilst parsing resource." msgstr "'char' verwacht bij inlezen van bron." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "%s van inbelverbinding mislukt: %s" #: ../src/unix/snglinst.cpp:243 msgid "Failed to access lock file." -msgstr "" +msgstr "Toegang naar beveiligd bestand mislukt." -#: ../src/common/filename.cpp:172 -#, fuzzy +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" -msgstr "Sluiten van klembord mislukt." +msgstr "Sluiten van bestands handle mislukt." #: ../src/unix/snglinst.cpp:308 -#, fuzzy, c-format +#, c-format msgid "Failed to close lock file '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Sluiten van vergrendeld bestand '%s' mislukt" #: ../src/msw/clipbrd.cpp:127 msgid "Failed to close the clipboard." msgstr "Sluiten van klembord mislukt." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Verbinding mislukt: gebruikersnaam/wachtwoord ontbreekt." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Verbinding mislukt: geen internetaanbieder om te bellen." @@ -1258,12 +1259,12 @@ msgstr "Kopi msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Kopiëren van registersleutel '%s' naar '%s' mislukt." -#: ../src/common/filefn.cpp:1106 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1117 +#, c-format msgid "Failed to copy the file '%s' to '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Kopiëren van bestand '%s' naar '%s' mislukt" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Maken van DDE-string mislukt" @@ -1275,64 +1276,71 @@ msgstr "Maken van MDI-hoofdvenster mislukt." msgid "Failed to create a status bar." msgstr "Maken van statusbalk mislukt." -#: ../src/common/filename.cpp:717 -#, fuzzy +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" -msgstr "Maken van MDI-hoofdvenster mislukt." +msgstr "Maken van een tijdelijke bestandsnaam mislukt" -#: ../src/msw/utilsexc.cpp:195 -#, fuzzy +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" -msgstr "Maken van statusbalk mislukt." +msgstr "Maken van een anonieme pipe mislukt" -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Maken van verbinding met server '%s' voor onderwerp '%s' mislukt" -#: ../src/msw/toplevel.cpp:293 -#, fuzzy +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" -msgstr "Maken van map mislukt" +msgstr "Maken van dialoog mislukt. Foutieve DLGTEMPLATE?" + +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Maken van MDI-hoofdvenster mislukt." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Maken van registersleutel '%s' mislukt." #: ../src/generic/dirdlgg.cpp:201 -#, fuzzy, c-format +#, c-format msgid "" "Failed to create directory '%s'\n" "(Do you have the required permissions?)" msgstr "" -"\n" -"(Heeft u de benodigde machtinging?)" +"Maken van map '%s' mislukt\n" +"(Heeft u de benodigde machtiging?)" #: ../src/msw/mimetype.cpp:168 -#, fuzzy, c-format +#, c-format msgid "Failed to create registry entry for '%s' files." -msgstr "Hernoemen van registersleutel '%s' naar '%s' mislukt" +msgstr "Maken van registersleutel '%s' mislukt." #: ../src/msw/fdrepdlg.cpp:442 #, c-format msgid "Failed to create the standard find/replace dialog (error code %d)" -msgstr "" +msgstr "Maken van het standaard zoek/vervang dialoog mislukt (error code %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Weergeven van HTML-document in %s-codering mislukt" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Legen van klembord mislukt." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Opzetten van advies-lus met de DDE-server mislukt" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Maken van inbelverbinding mislukt: %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Uitvoeren van '%s' mislukt\n" @@ -1364,47 +1372,44 @@ msgstr "" "Vinden van XPM-bron %s mislukt.\n" "Bent u vergeten wxResourceLoadBitmapData te gebruiken?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "Verkrijgen van namen van internetaanbieders mislukt: %s" -#: ../src/mac/clipbrd.cpp:118 -#, fuzzy +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." -msgstr "Instellen van klembordgegevens mislukt." +msgstr "Verkrijgen van klembordgegevens mislukt." #: ../src/msw/clipbrd.cpp:712 msgid "Failed to get data from the clipboard" msgstr "Gegevens van klembord ophalen mislukt" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Verkrijgen van UTC systeem-tijd mislukt." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Verkrijgen van lokale systeem-tijd mislukt" -#: ../src/common/filefn.cpp:1487 -#, fuzzy +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" -msgstr "Maken van map mislukt" +msgstr "Verkrijgen van de werk map mislukt" #: ../src/univ/theme.cpp:120 msgid "Failed to initialize GUI: no built-in themes found." -msgstr "" +msgstr "Initialiseren van GUI mislukt: Geen ingebouwd thema gevonden." #: ../src/msw/helpchm.cpp:69 msgid "Failed to initialize MS HTML Help." -msgstr "" +msgstr "Initialiseren van MS HTML Help mislukt." #: ../src/msw/glcanvas.cpp:729 -#, fuzzy msgid "Failed to initialize OpenGL" -msgstr "Kan OLE niet initializeren" +msgstr "Initialiseren van OpenGL mislukt." -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1413,54 +1418,52 @@ msgstr "" "herstart het programma a.u.b." #: ../src/msw/utils.cpp:721 -#, fuzzy, c-format +#, c-format msgid "Failed to kill process %d" -msgstr "Omleiden van I/O van subprocess mislukt" +msgstr "Abrupt afsluiten van process %d mislukt" #: ../src/common/iconbndl.cpp:66 -#, fuzzy, c-format +#, c-format msgid "Failed to load image %d from file '%s'." -msgstr "legen van bestand '%s' mislukt" +msgstr "Laden van afbeelding %d van bestand '%s' mislukt." -#: ../src/msw/volume.cpp:340 -#, fuzzy +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." -msgstr "Instellen van klembordgegevens mislukt." +msgstr "Laden van mpr.dll mislukt." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Laden van gedeelde bibliotheek '%s' mislukt" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 -#, fuzzy, c-format +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 +#, c-format msgid "Failed to load shared library '%s' Error '%s'" -msgstr "Laden van gedeelde bibliotheek '%s' mislukt" +msgstr "Laden van gedeelde bibliotheek '%s' mislukt Fout '%s'" #: ../src/unix/snglinst.cpp:192 -#, fuzzy, c-format +#, c-format msgid "Failed to lock the lock file '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Vergrendelen van het vergrendelde bestand '%s' mislukt" #: ../src/common/regex.cpp:251 -#, fuzzy, c-format +#, c-format msgid "Failed to match '%s' in regular expression: %s" -msgstr "%s van inbelverbinding mislukt: %s" +msgstr "Vinden van '%s' in reguliere expressie '%s' mislukt" -#: ../src/common/filename.cpp:1644 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1667 +#, c-format msgid "Failed to modify file times for '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Veranderen van bestandstijden van '%s' mislukt" -#: ../src/common/filename.cpp:160 -#, fuzzy, c-format +#: ../src/common/filename.cpp:164 +#, c-format msgid "Failed to open '%s' for %s" -msgstr "Openen van klembord mislukt." +msgstr "Openen van '%s' voor %s mislukt" -#: ../src/common/filename.cpp:739 -#, fuzzy +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." -msgstr "Openen van klembord mislukt." +msgstr "Openen van tijdelijk bestand mislukt." #: ../src/msw/clipbrd.cpp:107 msgid "Failed to open the clipboard." @@ -1471,38 +1474,36 @@ msgid "Failed to put data on the clipboard" msgstr "Bewaren van gegevens op klembord mislukt" #: ../src/unix/snglinst.cpp:252 -#, fuzzy msgid "Failed to read PID from lock file." -msgstr "Maken van MDI-hoofdvenster mislukt." +msgstr "Lezen van PID van vergrendeld bestand mislukt." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Omleiden van I/O van subprocess mislukt" -#: ../src/msw/utilsexc.cpp:600 -#, fuzzy +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "Omleiden van I/O van subprocess mislukt" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Registratie van DDE-server '%s' mislukt" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Onthouden van codering voor tekenset '%s' mislukt." #: ../src/unix/snglinst.cpp:296 -#, fuzzy, c-format +#, c-format msgid "Failed to remove lock file '%s'" -msgstr "kan bestand '%s' niet verwijderen" +msgstr "Verwijderen van vergrendeld bestand '%s' mislukt" #: ../src/unix/snglinst.cpp:262 -#, fuzzy, c-format +#, c-format msgid "Failed to remove stale lock file '%s'." -msgstr "Hernoemen van registerwaarde '%s' naar '%s' mislukt" +msgstr "Verwijderen van verouderd vergrendeld bestand '%s' mislukt." #: ../src/msw/registry.cpp:443 #, c-format @@ -1518,12 +1519,12 @@ msgstr "Hernoemen van registersleutel '%s' naar '%s' mislukt" msgid "Failed to retrieve data from the clipboard." msgstr "Ophalen van gegevens van klembord mislukt" -#: ../src/common/filename.cpp:1710 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1757 +#, c-format msgid "Failed to retrieve file times for '%s'" -msgstr "Verkrijgen van tekst van inbel-foutmelding mislukt" +msgstr "Verkrijgen van bestandstijden voor '%s' mislukt" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "Verkrijgen van tekst van inbel-foutmelding mislukt" @@ -1531,25 +1532,24 @@ msgstr "Verkrijgen van tekst van inbel-foutmelding mislukt" msgid "Failed to retrieve the supported clipboard formats" msgstr "Verkrijgen van ondersteunde klembord-formaten mislukt" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Versturen van DDE-adviesnotificatie mislukt" #: ../src/common/ftp.cpp:368 -#, fuzzy, c-format +#, c-format msgid "Failed to set FTP transfer mode to %s." -msgstr "Instellen van prioriteit van thread %d mislukt." +msgstr "Instellen van FTP transfer mode naar %s mislukt." #: ../src/msw/clipbrd.cpp:379 msgid "Failed to set clipboard data." msgstr "Instellen van klembordgegevens mislukt." -#: ../src/common/file.cpp:522 -#, fuzzy +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" -msgstr "legen van bestand '%s' mislukt" +msgstr "Instellen van machtigingen van tijdelijk bestand mislukt" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Instellen van prioriteit van thread %d mislukt." @@ -1559,38 +1559,38 @@ msgstr "Instellen van prioriteit van thread %d mislukt." msgid "Failed to store image '%s' to memory VFS!" msgstr "Opslaan van afbeelding '%s' in geheugen VFS mislukt!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Beëindigen van thread mislukt." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "Beëindigen van advies-lus met de DDE-server mislukt" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Ophangen van inbelverbinding mislukt: %s" -#: ../src/common/filename.cpp:1659 -#, fuzzy, c-format +#: ../src/common/filename.cpp:1682 +#, c-format msgid "Failed to touch the file '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Touchen van bestand '%s' mislukt" #: ../src/unix/snglinst.cpp:302 -#, fuzzy, c-format +#, c-format msgid "Failed to unlock lock file '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Ontgrendelen van het vergrendelde bestand '%s' mislukt" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Deregistreren van DDE-server %s mislukt" #: ../src/unix/snglinst.cpp:173 -#, fuzzy, c-format +#, c-format msgid "Failed to write to lock file '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Schrijven naar vergrendeld bestand '%s' mislukt" #: ../src/generic/logg.cpp:379 msgid "Fatal error" @@ -1600,46 +1600,48 @@ msgstr "Fatale fout" msgid "Fatal error: " msgstr "Fatale fout: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Fatale fout: bezig met afbreken" #: ../src/mgl/bitmap.cpp:544 -#, fuzzy, c-format +#, c-format msgid "File %s does not exist." -msgstr ": bestand bestaat niet!" +msgstr "Bestand %s bestaat niet." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Bestand '%s' bestaat al, overschrijven?" -#: ../src/msw/filedlg.cpp:505 -#, fuzzy, c-format +#: ../src/msw/filedlg.cpp:518 +#, c-format msgid "" "File '%s' already exists.\n" "Do you want to replace it?" -msgstr "Bestand '%s' bestaat al, overschrijven?" +msgstr "" +"Bestand '%s' bestaat al.\n" +"Wilt U het vervangen?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "Bestand kon niet worden geladen." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Bestandsfout" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Bestandsnaam bestaat al." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Bestanden (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Zoeken" @@ -1651,15 +1653,15 @@ msgstr "Niet-proportioneel lettertype:" msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 inch" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Lettertype-grootte:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "'Fork' mislukt" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Vooruit" @@ -1669,7 +1671,7 @@ msgstr "Vooruit" msgid "Found " msgstr "Gevonden: " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "%i Overeenkomsten gevonden" @@ -1679,9 +1681,8 @@ msgid "From:" msgstr "Van:" #: ../src/common/imaggif.cpp:100 -#, fuzzy msgid "GIF: Invalid gif index." -msgstr "Ongeldige TIFF-afbeeldingsindex." +msgstr "GIF: Ongeldige gif index." #: ../src/common/imaggif.cpp:75 msgid "GIF: data stream seems to be truncated." @@ -1701,7 +1702,7 @@ msgstr "GIF: onbekende fout!" #: ../src/univ/themes/gtk.cpp:623 msgid "GTK+ theme" -msgstr "" +msgstr "GTK+ thema" #: ../src/common/paper.cpp:142 msgid "German Legal Fanfold, 8 1/2 x 13 in" @@ -1713,41 +1714,33 @@ msgstr "Duitse Std Fanfold, 8 1/2 x 12 inch" #: ../src/common/image.cpp:762 msgid "GetUnusedColour:: No Unused Color in image " -msgstr "" +msgstr "GetUnusedColour: Er is geen ongebruikte kleur in de afbeelding" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Ga terug" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Ga vooruit" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Ga niveau hoger in document-hiërarchie" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Ga naar startmap" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Ga naar bovenliggende map" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" -msgstr "" +msgstr "Ga naar pagina" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Grieks (ISO-8859-7)" @@ -1756,31 +1749,26 @@ msgstr "Grieks (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "HTML-anchor %s bestaat niet." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"HTML-bestanden (*.htm)|*.htm|HTML-bestanden (*.html)|*.html|Helpbestanden " -"(*.htb)|*.htb|Helpbestanden (*.zip)|*.zip|HTML-Help Project " -"(*.hhp)|*.hhp|Alle bestanden (*.*)|*" +"HTML-bestanden (*.htm)|*.htm|HTML-bestanden (*.html)|*.html|Helpbestanden (*." +"htb)|*.htb|Helpbestanden (*.zip)|*.zip|HTML-Help Project (*.hhp)|*.hhp|Alle " +"bestanden (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebreeuws (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Help" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Help: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Help Browser Instellingen" @@ -1788,7 +1776,7 @@ msgstr "Help Browser Instellingen" msgid "Help Index" msgstr "Help Index" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Help Afdrukken" @@ -1797,51 +1785,44 @@ msgstr "Help Afdrukken" msgid "Help: %s" msgstr "Help: %s" -#: ../src/common/imagbmp.cpp:858 -#, fuzzy +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." -msgstr "TIFF: fout bij lezen van afbeelding." +msgstr "ICO: Fout bij lezen mask DIB." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 -#, fuzzy +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" -msgstr "TIFF: fout bij schrijven van afbeelding." +msgstr "ICO: Fout bij het wegschrijven van de afbeelding!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." -msgstr "" +msgstr "ICO: Afbeelding is te hoog voor een pictogram." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." -msgstr "" +msgstr "ICO: Afbeelding is te breed voor een pictogram." -#: ../src/common/imagbmp.cpp:1167 -#, fuzzy +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." -msgstr "Ongeldige TIFF-afbeeldingsindex." +msgstr "ICO: Ongeldige pictogram index." #: ../src/common/imagiff.cpp:767 -#, fuzzy msgid "IFF: data stream seems to be truncated." -msgstr "GIF: gegevensstroom lijkt afgekapt." +msgstr "IFFF: gegevensstroom lijkt afgekapt." #: ../src/common/imagiff.cpp:751 -#, fuzzy msgid "IFF: error in IFF image format." -msgstr "GIF: fout in GIF-bestandsformaat." +msgstr "IFF: fout in IFF bestands formaat." #: ../src/common/imagiff.cpp:754 -#, fuzzy msgid "IFF: not enough memory." -msgstr "GIF: onvoldoende geheugen." +msgstr "IFF: onvoldoende geheugen." #: ../src/common/imagiff.cpp:757 -#, fuzzy msgid "IFF: unknown error!!!" -msgstr "GIF: onbekende fout!" +msgstr "IFF: onbekende fout!!!" #: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 #: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 @@ -1853,24 +1834,24 @@ msgstr "Pictogram-bronspecificatie niet gevonden." msgid "Ill-formed resource file syntax." msgstr "Incorrecte syntax voor bronbestand." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Ongeldige mapnaam." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Ongeldige bestandsspecificatie." #: ../src/common/image.cpp:785 msgid "Image and Mask have different sizes" -msgstr "" +msgstr "Afbeelding en masker hebben verschillende groottes" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." -msgstr "" +msgstr "Bestands afbeelding is niet van het type %d." -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1882,60 +1863,59 @@ msgstr "" msgid "Impossible to get child process input" msgstr "Onmogelijk om subprocess-invoer te verkrijgen" -#: ../src/common/filefn.cpp:1122 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1133 +#, c-format msgid "Impossible to get permissions for file '%s'" -msgstr "Onmogelijk om subprocess-invoer te verkrijgen" +msgstr "Onmogelijk om machtigingen voor bestand '%s' te krijgen" -#: ../src/common/filefn.cpp:1136 -#, fuzzy, c-format +#: ../src/common/filefn.cpp:1147 +#, c-format msgid "Impossible to overwrite the file '%s'" -msgstr "legen van bestand '%s' mislukt" +msgstr "Overschrijven van bestand '%s' mislukt" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" -msgstr "" +msgstr "Onmogelijk om machtigingen voor het bestand '%s' in te stellen" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Index" -#: ../src/common/fontmap.cpp:123 -#, fuzzy +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" -msgstr "Noors (ISO-8859-10)" +msgstr "Indisch (ISO-8859-12)" #: ../src/common/imagtiff.cpp:183 msgid "Invalid TIFF image index." msgstr "Ongeldige TIFF-afbeeldingsindex." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." -msgstr "" +msgstr "Ongeldige XRC bron '%s': heeft geen top node 'bron'." -#: ../src/common/appcmn.cpp:378 -#, fuzzy, c-format +#: ../src/common/appcmn.cpp:399 +#, c-format msgid "Invalid display mode specification '%s'." -msgstr "Ongeldige bestandsspecificatie." +msgstr "Ongeldige beeldscherm mode specificatie. '%s'." -#: ../src/x11/app.cpp:231 -#, fuzzy, c-format +#: ../src/x11/app.cpp:218 +#, c-format msgid "Invalid geometry specification '%s'" -msgstr "Ongeldige bestandsspecificatie." +msgstr "Ongeldige geometrie specificatie '%s'" #: ../src/unix/snglinst.cpp:280 -#, fuzzy, c-format +#, c-format msgid "Invalid lock file '%s'." -msgstr "kan bestand '%s' niet sluiten" +msgstr "Ongeldig vergrendeld bestand '%s'." #: ../src/common/regex.cpp:173 #, c-format msgid "Invalid regular expression '%s': %s" -msgstr "" +msgstr "Ongeldige reguliere expressie '%s': %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Cursief" @@ -1951,7 +1931,7 @@ msgstr "JPEG: kon niet laden - bestand is waarschijnlijk corrupt." msgid "JPEG: Couldn't save image." msgstr "JPEG: kon afbeelding niet opslaan." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1979,20 +1959,19 @@ msgstr "USA Letter Small, 8 1/2 x 11 inch" msgid "Letter, 8 1/2 x 11 in" msgstr "USA Letter, 8 1/2 x 11 inch" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Licht" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Laad %s-bestand" -#: ../src/generic/filedlgg.cpp:1589 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" -msgstr "Laad %s-bestand" +msgstr "Laad bestand" #: ../src/html/htmlwin.cpp:282 msgid "Loading : " @@ -2018,26 +1997,25 @@ msgid "MDI child" msgstr "MDI subvenster" #: ../src/msw/helpchm.cpp:60 -#, fuzzy msgid "" "MS HTML Help functions are unavailable because the MS HTML Help library is " "not installed on this machine. Please install it." msgstr "" -"Inbel-functies zijn niet beschikbaar omdat de inbelverbindingssoftware (RAS) " -"niet op deze machine is geïnstalleerd. Installeer het a.u.b." +"MS HTML Help functies zijn niet beschikbaar omdat de MS HTML Help " +"bibliotheek niet op deze machine is geïnstalleerd. Installeer het a.u.b." #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" -msgstr "" +msgstr "Maximaliseren" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Mailcap-bestand %s, regel %d: incomplete ingang genegeerd." #: ../src/generic/fdrepdlg.cpp:152 msgid "Match case" -msgstr "" +msgstr "Hoofdlettergevoelig" #: ../src/common/fs_mem.cpp:144 #, c-format @@ -2046,13 +2024,13 @@ msgstr "Geheugen VFS bevat al bestand '%s'!" #: ../src/univ/themes/metal.cpp:174 msgid "Metal theme" -msgstr "" +msgstr "Metaal thema" #: ../src/univ/themes/win32.cpp:4543 msgid "Mi&nimize" -msgstr "" +msgstr "Minimaliseren" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "" @@ -2061,9 +2039,9 @@ msgstr "" #: ../src/mgl/app.cpp:173 #, c-format msgid "Mode %ix%i-%i not available." -msgstr "" +msgstr "Mode %ix%i-%i niet beschikbaar." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2071,31 +2049,31 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Envelop 'Monarch', 3 7/8 x 7 1/2 inch" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Meer..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Naam" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "Nieuwe map" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Volgende pagina" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Nee" #: ../src/common/image.cpp:793 msgid "No Unused Color in image being masked" -msgstr "" +msgstr "Er wordt geen Ongebruikte Kleur in de afbeelding gemaskeerd" #: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 #: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 @@ -2110,63 +2088,63 @@ msgstr "Geen XPM-pictogramfaciliteit beschikbaar!" msgid "No entries found." msgstr "Geen ingangen gevonden." -#: ../src/common/fontmap.cpp:865 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:906 +#, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" "but an alternative encoding '%s' is available.\n" "Do you want to use this encoding (otherwise you will have to choose another " "one)?" msgstr "" -"De codering '%s' is onbekend.\n" -"Wilt u een lettertype selecteren voor deze codering\n" -"(anders zal de tekst in deze codering niet correct weergegeven worden)?" +"Er is geen lettertype gevonden voor het tonen van tekst in de encodering '%" +"s',\n" +"maar een alternatieve encodering '%s' is beschikbaar.\n" +"Wilt U deze encodering gebruiken (Anders moet U een andere kiezen)?" -#: ../src/common/fontmap.cpp:870 -#, fuzzy, c-format +#: ../src/common/fontmap.cpp:911 +#, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" "Would you like to select a font to be used for this encoding\n" "(otherwise the text in this encoding will not be shown correctly)?" msgstr "" -"De codering '%s' is onbekend.\n" -"Wilt u een lettertype selecteren voor deze codering\n" +"Geen lettertype voor het tonen van tekst in encodering '%s' gevonden.\n" +"Wilt U een lettertype selecteren voor deze encodering\n" "(anders zal de tekst in deze codering niet correct weergegeven worden)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" -msgstr "" +msgstr "Geen handler gevonden voor XML node '%s', class '%s'!" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Geen handler gevonden voor afbeeldingstype." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Geen afbeeldingshandler voor het type %d gedefinieerd." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Geen afbeeldingshandler voor het type %s gedefinieerd." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Nog geen overeenkomende pagina gevonden" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Noors (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normaal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normaal lettertype: " @@ -2174,35 +2152,35 @@ msgstr "Normaal lettertype: " msgid "Note, 8 1/2 x 11 in" msgstr "Notitie, 8 1/2 x 11 inch" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "HTML-document openen" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Bewerking niet toegestaan." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Optie '%s' vereist een waarde, '=' verwacht" -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Optie '%s' vereist een waarde." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Optie '%s': '%s' kan niet naar een datum worden geconverteerd." @@ -2251,12 +2229,12 @@ msgstr "PNM: bestandsformaat niet herkend" msgid "PNM: File seems truncated." msgstr "PNM: bestand lijkt afgekapt." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Pagina %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Pagina %d van %d" @@ -2279,11 +2257,11 @@ msgstr "Papierformaat" msgid "Paper size" msgstr "Papierformaat" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Machtigingen" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Maken van pipe mislukt" @@ -2291,25 +2269,28 @@ msgstr "Maken van pipe mislukt" msgid "Please choose a valid font." msgstr "Kies a.u.b. een geldig lettertype." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Kies a.u.b. een bestaand bestand." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Kies a.u.b. een internetaanbieder waarmee u verbinding wilt maken" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" "(at least version 4.70 is required but you have %d.%02d)\n" "or this program won't operate correctly." msgstr "" +"Installeer alstublieft een nieuwere versie van comctl32.dll\n" +"(Tenminste versie 4.70 is vereist maar U heeft %d.%02d)\n" +"anders kan dit programma niet correct functioneren." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" -msgstr "" +msgstr "Een ogenblik geduld alstublieft. Bezig met printen\n" #: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 msgid "Portrait" @@ -2319,15 +2300,11 @@ msgstr "Staand" msgid "PostScript file" msgstr "PostScript-bestand" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Afdrukvoorbeeld:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Vorige pagina" @@ -2335,11 +2312,11 @@ msgstr "Vorige pagina" msgid "Print" msgstr "Afdrukken" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Afdrukvoorbeeld" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Afdrukvoorbeeld mislukt" @@ -2359,7 +2336,7 @@ msgstr "In kleur afdrukken" msgid "Print spooling" msgstr "Afdruk-spoolen" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Deze pagina afdrukken" @@ -2367,7 +2344,7 @@ msgstr "Deze pagina afdrukken" msgid "Print to File" msgstr "Naar bestand afdrukken" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Afdrukken..." @@ -2387,21 +2364,20 @@ msgstr "Printer-opties:" msgid "Printer..." msgstr "Printer..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 -#, fuzzy +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "Bezig met afdrukken" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Afdrukfout" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Bezig met afdrukken van pagina %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Bezig met afdrukken..." @@ -2422,10 +2398,10 @@ msgstr "Vraag" msgid "Read error on file '%s'" msgstr "Leesfout bij bestand '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" -msgstr "" +msgstr "Gerefereerd object node met ref=\"%s\" niet gevonden!" #: ../src/msw/registry.cpp:535 #, c-format @@ -2453,10 +2429,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Registerwaarde '%s' bestaat al." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Relevante ingangen:" @@ -2465,64 +2437,57 @@ msgstr "Relevante ingangen:" msgid "Remaining time : " msgstr "Resterende tijd: " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Verwijder huidige pagina uit favorieten" #: ../src/generic/fdrepdlg.cpp:177 -#, fuzzy msgid "Replace &all" -msgstr "Bestand '%s' vervangen?" +msgstr "Allemaal vervangen" #: ../src/generic/fdrepdlg.cpp:129 msgid "Replace with:" -msgstr "" +msgstr "Vervangen met:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" -msgstr "" +msgstr "Bron bestanden moeten zelfde versie nummer hebben!" #: ../src/generic/prntdlgg.cpp:644 msgid "Right margin (mm):" msgstr "Rechtermarge (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Romein" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Sla %s-bestand op" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Opslaan als" -#: ../src/generic/filedlgg.cpp:1604 -#, fuzzy +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" -msgstr "Sla %s-bestand op" +msgstr "Bestand opslaan" #: ../src/generic/logg.cpp:487 msgid "Save log contents to file" msgstr "Sla log-gegevens op in bestand" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Schrift-letter" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Zoeken" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2531,30 +2496,22 @@ msgstr "" "die u boven heeft getypt voorkomt." #: ../src/generic/fdrepdlg.cpp:158 -#, fuzzy msgid "Search direction" -msgstr "Maak map" +msgstr "Zoek richting" #: ../src/generic/fdrepdlg.cpp:117 -#, fuzzy msgid "Search for:" -msgstr "Zoeken" +msgstr "Zoeken naar:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Zoek in alle boeken" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Zoeken" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Bezig met zoeken..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Secties" @@ -2563,24 +2520,29 @@ msgstr "Secties" msgid "Seek error on file '%s'" msgstr "Zoekfout bij bestand '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Selecteer een bestand" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Selecteer een documentsjabloon" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Selecteer een documentweergave" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Selecteer een bestand" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Scheidingsteken verwacht na de optie '%s'." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Instellingen" @@ -2588,54 +2550,53 @@ msgstr "Instellingen" msgid "Setup..." msgstr "Instellingen..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" "Meerdere actieve inbelverbindingen gevonden, willekeurige keuze gemaakt." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Toon alles" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Toon alle items in de index" #: ../src/generic/dirdlgg.cpp:135 -#, fuzzy msgid "Show hidden directories" -msgstr "Toon verborgen bestanden" +msgstr "Toon verborgen mappen" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Toon verborgen bestanden" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Toon/verberg navigatie-paneel" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Formaat" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Schuin" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Sorry, kon dit bestand niet opslaan." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Sorry, kon dit bestand niet openen." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Sorry, kon dit bestand niet opslaan." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Sorry, onvoldoende geheugen voor afdrukweergave." @@ -2647,12 +2608,12 @@ msgstr "USA Statement, 5 1/2 x 8 1/2 inch" msgid "Status: " msgstr "Status: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" -msgstr "" +msgstr "Subclass '%s' niet gevonden voor bron '%s', zal niet subclasseren!" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Schreefloos" @@ -2681,23 +2642,23 @@ msgstr "TIFF: fout bij schrijven van afbeelding." msgid "Tabloid, 11 x 17 in" msgstr "USA Tabloid, 11 x 17 inch" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Niet-proportioneel (Teletype)" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Sjablonen" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thais (ISO-8859-11)" #: ../src/common/ftp.cpp:569 msgid "The FTP server doesn't support passive mode." -msgstr "" +msgstr "De FTP server ondersteunt niet passieve mode." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2708,36 +2669,35 @@ msgstr "" "tekenset kiezen om te vervangen of kies [Annuleer]\n" "als het niet vervangen kan worden" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Het klembord-formaat '%d' bestaat niet." #: ../src/generic/dirdlgg.cpp:186 -#, fuzzy, c-format +#, c-format msgid "" "The directory '%s' does not exist\n" "Create it now?" msgstr "" -"\n" -"bestaat niet\n" +"De map '%s' bestaat niet\n" "Nu maken?" -#: ../src/common/docview.cpp:1802 -#, fuzzy, c-format +#: ../src/common/docview.cpp:1804 +#, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." msgstr "" "Het bestand '%s' bestaat niet en kon niet geopend worden.\n" -"Het is ook verwijderd van de lijst 'recente bestanden'." +"Het is verwijderd van de lijst 'recente bestanden'." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" -msgstr "" +msgstr "Het pad '%s' bevat teveel \"..\"!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "De benodigde parameter '%s' was niet gespecificeerd." @@ -2746,12 +2706,12 @@ msgstr "De benodigde parameter '%s' was niet gespecificeerd." msgid "The text couldn't be saved." msgstr "De tekst kon niet worden opgeslagen." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "De waarde voor de optie '%s' moet worden opgegeven/" -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2760,20 +2720,22 @@ msgstr "" "De versie van de inbelverbindingssoftware (RAS) op deze machine is te oud " "(de volgende benodigde functie ontbreekt: %s)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" +"Er was een probleem tijdens pagina-instellingen: U moet mogelijk een " +"standaard printer instellen." #: ../src/msw/thread.cpp:1214 msgid "" "Thread module initialization failed: can not store value in thread local " "storage" msgstr "" -"Threadmodule-initialisatie mislukt: kan geen waarde opslaan in lokale " -"thread-geheugenruimte." +"Threadmodule-initialisatie mislukt: kan geen waarde opslaan in lokale thread-" +"geheugenruimte." -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Threadmodule-initialisatie mislukt: maken van thread-sleutel mislukt" @@ -2785,27 +2747,27 @@ msgstr "" "Threadmodule-initialisatie mislukt: niet mogelijk een index te reserven in " "lokale thread-geheugenruimte." -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Thread-prioriteitsinstelling is genegeerd." #: ../src/msw/mdi.cpp:189 msgid "Tile &Horizontally" -msgstr "" +msgstr "Onder elkaar" #: ../src/msw/mdi.cpp:190 msgid "Tile &Vertically" -msgstr "" +msgstr "Naast elkaar" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Tijd" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Tip van de dag" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Geen tips beschikbaar, sorry!" @@ -2828,7 +2790,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "Poging om een lege hostnaam te vinden: bezig op te geven" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turks (ISO-8859-9)" @@ -2841,7 +2803,7 @@ msgstr "USA Std Fanfold, 14 7/8 x 11 inch" msgid "Unable to open requested HTML document: %s" msgstr "Kan gevraagd HTML-document niet openen: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Onderstreept" @@ -2858,47 +2820,47 @@ msgstr "Onderstreept" msgid "Unexpected end of file whilst parsing resource." msgstr "Onverwacht einde van bestand tijdens inlezen van bron." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Onverwachte parameter '%s'" -#: ../src/common/fontmap.cpp:141 -msgid "Unicode 7 bit (UTF-7)" -msgstr "" - #: ../src/common/fontmap.cpp:142 -msgid "Unicode 8 bit (UTF-8)" -msgstr "" +msgid "Unicode 7 bit (UTF-7)" +msgstr "Unicode 7 bit (UTF-7)" -#: ../src/msw/dde.cpp:1020 +#: ../src/common/fontmap.cpp:143 +msgid "Unicode 8 bit (UTF-8)" +msgstr "Unicode 8 bit (UTF-8)" + +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Onbekende DDE-fout %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Onbekende codering (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Onbekend veld in bestand %s, regel %d: '%s''. " -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Onbekende lange optie '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Onbekende optie '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " -msgstr "" +msgstr "Onbekende stijl instelling" #: ../src/common/mimecmn.cpp:167 #, c-format @@ -2915,21 +2877,21 @@ msgstr "Naamloze opdracht" msgid "Unrecognized style %s whilst parsing resource." msgstr "Niet-herkende stijl %s tijdens inlezen van bron." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Niet-ondersteund klembord-formaat." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." -msgstr "" +msgstr "Niet ondersteund thema '%s'." #: ../src/generic/fdrepdlg.cpp:157 msgid "Up" -msgstr "" +msgstr "Omhoog" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Gebruik: %s" @@ -2938,23 +2900,23 @@ msgstr "Gebruik: %s" msgid "Validation conflict" msgstr "Validatie-conflict" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Toon bestanden in detail-weergave" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Toon bestanden in lijst-weergave" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Weergaven" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Wachten op beëindiging van subproces mislukt" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Waarschuwing" @@ -2962,101 +2924,93 @@ msgstr "Waarschuwing" msgid "Warning: " msgstr "Waarschuwing: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" "Waarschuwing: poging om HTML tag handler van lege stack te verwijderen." -#: ../src/common/fontmap.cpp:112 -#, fuzzy +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" -msgstr "West-Europees (ISO-8859-1/Latin 1)" +msgstr "West-Europees (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 -#, fuzzy +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" -msgstr "West-Europees nieuw (ISO-8859-15/Latin 0)" +msgstr "West-Europees met Euro teken (ISO-8859-15)" #: ../src/generic/fdrepdlg.cpp:149 -#, fuzzy msgid "Whole word" msgstr "Alleen hele woorden" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Alleen hele woorden" #: ../src/univ/themes/win32.cpp:1168 msgid "Win32 theme" -msgstr "" +msgstr "Win32 thema" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Windows 3.1 met Win32s" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabisch (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltisch (CP 1257)" -#: ../src/common/fontmap.cpp:132 -#, fuzzy -msgid "Windows Central European (CP 1250)" -msgstr "Windows Hebreeuws (CP 1255)" - -#: ../src/common/fontmap.cpp:129 -msgid "Windows Chinese Simplified (CP 936)" -msgstr "" - -#: ../src/common/fontmap.cpp:131 -#, fuzzy -msgid "Windows Chinese Traditional (CP 950)" -msgstr "Windows Latin 2 (CP 1250)" - #: ../src/common/fontmap.cpp:133 +msgid "Windows Central European (CP 1250)" +msgstr "Windows Centraal Europees (CP 1250)" + +#: ../src/common/fontmap.cpp:130 +msgid "Windows Chinese Simplified (CP 936)" +msgstr "Windows Chinees Gesimplificeerd (CP 936)" + +#: ../src/common/fontmap.cpp:132 +msgid "Windows Chinese Traditional (CP 950)" +msgstr "Windows Traditioneel Chinees (CP 950)" + +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cyrillisch (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Grieks (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hebreeuws (CP 1255)" -#: ../src/common/fontmap.cpp:128 -#, fuzzy +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" -msgstr "Windows Grieks (CP 1253)" +msgstr "Windows Japans (CP 932)" -#: ../src/common/fontmap.cpp:130 -#, fuzzy +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" -msgstr "Windows Grieks (CP 1253)" +msgstr "Windows Koreaans (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Turks (CP 1254)" -#: ../src/common/fontmap.cpp:134 -#, fuzzy +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" -msgstr "Windows Latin 1 (CP 1252)" +msgstr "Windows West Europees (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3068,37 +3022,33 @@ msgstr "Schrijffout bij bestand '%s'" #: ../contrib/src/xrc/xml.cpp:530 #, c-format msgid "XML parsing error: '%s' at line %d" -msgstr "" +msgstr "XML ontleed fout: '%s' in lijn %d" #: ../src/common/xpmdecod.cpp:759 msgid "XPM: Malformed pixel data!" -msgstr "" +msgstr "XPM: Misvormde pixel gegevens!" #: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 #, c-format msgid "XPM: malformed colour definition '%s'!" -msgstr "" +msgstr "XPM: Misvormde kleur definitie '%s'!" -#: ../contrib/src/xrc/xmlres.cpp:436 -#, fuzzy, c-format +#: ../contrib/src/xrc/xmlres.cpp:470 +#, c-format msgid "XRC resource '%s' (class '%s') not found!" -msgstr "Pictogram-bronspecificatie niet gevonden." +msgstr "XRC bron '%s' (class '%s') niet gevonden!" -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." -msgstr "" +msgstr "XRC bron: Kan geen bitmap maken van '%s'." -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." -msgstr "" +msgstr "XRC bron: Ongeldige kleur specificatie '%s' voor eigenschap '%s'." -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Ja" @@ -3107,21 +3057,21 @@ msgstr "Ja" msgid "You cannot add a new directory to this section." msgstr "U kunt geen nieuwe map aan deze sectie toevoegen." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" -msgstr "" +msgstr "ZIP handler ondersteunt momenteel alleen lokale bestanden!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[LEEG]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "" "een DDEML-applicatie heeft door een 'race'-conditie geheugengebrek " "veroorzaakt." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3132,46 +3082,46 @@ msgstr "" "te roepen\n" "of een ongeldige applicatie-pid was doorgegeven aan een DDEML-functie." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "een poging van een client om een conversatie op te zetten is mislukt." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "een geheugenreservering is mislukt." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "een parameter kon niet door de DDEML gevalideerd worden." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" "aanvraag voor synchrone advies-transactie heeft een time-out veroorzaakt." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" "aanvraag voor synchrone gegevens-transactie heeft een time-out veroorzaakt." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" "aanvraag voor synchrone uitvoerings-transactie heeft een time-out " "veroorzaakt." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" "aanvraag voor synchrone 'poke'-transactie heeft een time-out veroorzaakt." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" "aanvraag voor beëindigen van advies-transactie heeft een time-out " "veroorzaakt." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3181,7 +3131,7 @@ msgstr "" "die door de client was beëindigd of de server heeft afgebroken\n" "voordat de transactie was afgerond." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "een transactie is mislukt." @@ -3189,7 +3139,7 @@ msgstr "een transactie is mislukt." msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3201,15 +3151,15 @@ msgstr "" "is\n" "gestart heeft geprobeerd een server-transactie uit te voeren." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "een interne oproep van de PostMessage-functie is mislukt." -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "een interne fout is opgetreden in de DDEML." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3219,57 +3169,55 @@ msgstr "" "Als de applicatie verdergaat na een XTYP_XACT_COMPLETE-callback dan is\n" "de transactie-id voor die callback niet meer geldig." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "poging tot wijzigen van onveranderbare sleutel '%s' genegeerd." #: ../src/common/ftp.cpp:369 msgid "binary" -msgstr "" +msgstr "binair" -#: ../src/common/fontcmn.cpp:518 -#, fuzzy +#: ../src/common/fontcmn.cpp:521 msgid "bold" -msgstr "Vet" +msgstr "vet" -#: ../src/common/fontcmn.cpp:442 -#, fuzzy +#: ../src/common/fontcmn.cpp:445 msgid "bold " -msgstr "Vet" +msgstr "vet" #: ../src/common/ffile.cpp:93 #, c-format msgid "can't close file '%s'" msgstr "kan bestand '%s' niet sluiten" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "kan bestandsbeschrijving %d niet sluiten" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "kan verandering niet doorvoeren in bestand '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "kan bestand '%s' niet maken" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "kan bestand met gebruikersinstellingen '%s' niet wissen" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "kan niet bepalen of bestandseinde is bereikt bij bestandsbeschrijving %d" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "kan bestandslengte niet vinden bij bestandsbeschrijving %d" @@ -3278,70 +3226,70 @@ msgstr "kan bestandslengte niet vinden bij bestandsbeschrijving %d" msgid "can't find user's HOME, using current directory." msgstr "kan gebruiker's startlocatie niet vinden, gebruik huidige map." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "kan bestandsbeschrijving %d niet legen" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "kan zoekpositie niet verkrijgen bij bestandsbeschrijving %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "kan geen lettertype laden, wordt afgebroken" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "kan bestand '%s'niet openen" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "kan globaal configuratiebestand '%s' niet openen." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "kan gebruikers-configuratiebestand '%s' niet openen." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "kan gebruikers-configuratiebestand niet openen." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "kan niet lezen van bestandsbeschrijving %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "kan bestand '%s' niet verwijderen" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "kan tijdelijk bestand '%s' niet verwijderen" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "kan niet zoeken bij bestandsbeschrijving %d" #: ../src/common/textfile.cpp:196 -#, fuzzy, c-format +#, c-format msgid "can't write buffer '%s' to disk." -msgstr "kan bestand '%s' niet naar schijf schrijven." +msgstr "kan buffer '%s' niet naar schijf schrijven." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "kan niet schrijven naar bestandsbeschrijving %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "kan gebruikers-configuratiebestand niet schrijven." @@ -3354,33 +3302,32 @@ msgstr "catalogus-bestand voor domein '%s' niet gevonden." msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "datum" -#: ../src/common/fontmap.cpp:413 -#, fuzzy +#: ../src/common/fontmap.cpp:416 msgid "default" -msgstr "alt" +msgstr "standaard" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "achttiende" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "achtste" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "elfde" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "ingang '%s' komt meer dan één keer voor in groep '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "Maken" @@ -3389,66 +3336,71 @@ msgstr "Maken" msgid "failed to flush the file '%s'" msgstr "legen van bestand '%s' mislukt" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "vijftiende" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "vijfde" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "bestand '%s', regel %d: '%s' genegeerd na groepsheader." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "bestand '%s', regel %d: '=' verwacht." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "" "bestand '%s', regel %d: sleutel '%s' voor het eerst gevonden op regel %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "" "bestand '%s', regel %d: waarde voor onveranderbare sleutel '%s' genegeerd." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "bestand '%s': onverwacht teken %c in regel %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "eerste" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "veertiende" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "vierde" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" -msgstr "" +msgstr "genereer uitgebreide log meldingen" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() mislukt" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "Starten" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "ongeldige eof() return-waarde." @@ -3456,24 +3408,17 @@ msgstr "ongeldige eof() return-waarde." msgid "invalid message box return value" msgstr "ongeldige return-waarde van berichtvenster" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 -#, fuzzy +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" -msgstr "Cursief" +msgstr "cursief" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "groot" - -#: ../src/common/fontcmn.cpp:514 -#, fuzzy +#: ../src/common/fontcmn.cpp:517 msgid "light" -msgstr "Licht" +msgstr "licht" -#: ../src/common/fontcmn.cpp:438 -#, fuzzy +#: ../src/common/fontcmn.cpp:441 msgid "light " -msgstr "Licht" +msgstr "licht" #: ../src/common/intl.cpp:615 #, c-format @@ -3485,59 +3430,55 @@ msgstr "landinstelling '%s' kan niet worden ingesteld." msgid "looking for catalog '%s' in path '%s'." msgstr "bezig met zoeken van catalogus '%s' in pad '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "medium" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "middernacht" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "kmtime() mislukt" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "negentiende" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "negende" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." -msgstr "geen DDE-fout" +msgstr "geen DDE-fout." -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "naamloos" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "middag" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" -msgstr "" +msgstr "aan het lezeen" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "probleem met 'reentrancy'." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "tweede" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "zeventiende" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "zevende" @@ -3545,96 +3486,94 @@ msgstr "zevende" msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" -msgstr "" +msgstr "Toon deze help boodschap" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "zestiende" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "zesde" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "klein" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" -msgstr "" +msgstr "Kies de te gebruiken beeldscherm mode (B.V. 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" -msgstr "" +msgstr "Kies het te gebruiken thema" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "tiende" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "het antwoord op de transactie heeft de DDE_FBUSY-bit op 1 gezet." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "derde" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "dertiende" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "vandaag" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "morgen" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "twaalfde" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "twintigste" -#: ../src/common/fontcmn.cpp:510 -#, fuzzy +#: ../src/common/fontcmn.cpp:513 msgid "underlined" -msgstr "Onderstreept" +msgstr "onderstreept" -#: ../src/common/fontcmn.cpp:425 -#, fuzzy +#: ../src/common/fontcmn.cpp:428 msgid "underlined " -msgstr "Onderstreept" +msgstr "onderstreept" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "onverwachte \" op positie %d in '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "onbekend" #: ../src/common/regex.cpp:144 -#, fuzzy msgid "unknown error" -msgstr "GIF: onbekende fout!" +msgstr "onbekende fout" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "onbekende fout (foutnummer %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "onbekende fout" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "onbekend zoek-startpunt" @@ -3643,11 +3582,11 @@ msgstr "onbekend zoek-startpunt" msgid "unknown-%d" msgstr "onbekend-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "naamloos" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "naamloos%d" @@ -3657,37 +3596,24 @@ msgstr "naamloos%d" msgid "using catalog '%s' from '%s'." msgstr "catalogus '%s' van '%s' wordt gebruikt." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "zeer groot" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "zeer klein" - -#: ../src/common/filename.cpp:162 -#, fuzzy +#: ../src/common/filename.cpp:166 msgid "writing" -msgstr "Bezig met afdrukken" +msgstr "bezig met schrijven" #: ../src/common/dynlib.cpp:336 #, c-format msgid "wxDllLoader failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDLLLoader kon niet GetSymbol '%s' verkrijgen" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" -msgstr "" +msgstr "wxDynamicLoader kon niet GetSymbol '%s' verkrijgen" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay mislukt." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: ongeldige handtekening in ReadMsg." @@ -3696,220 +3622,69 @@ msgstr "wxSocket: ongeldige handtekening in ReadMsg." msgid "wxSocket: unknown event!." msgstr "wxSocket: onbekende gebeurtenis!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows kon beeldscherm niet openen voor '%s': afbreken." -#: ../src/x11/app.cpp:265 -#, fuzzy +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." -msgstr "wxWindows kon beeldscherm niet openen voor '%s': afbreken." +msgstr "wxWindows kon beeldscherm niet openen. Afbreken." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "gisteren" -#, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Alle bestanden (*)|*" +#~ msgid " bytes " +#~ msgstr " bytes " -#~ msgid "Can not create mutex" -#~ msgstr "Kan geen mutex maken" +#~ msgid "

    " +#~ msgstr " " -#~ msgid "Can't create the inter-process read pipe" -#~ msgstr "Kan geen 'inter-process read pipe' maken" +#~ msgid " " +#~ msgstr " " -#~ msgid "Can't create the inter-process write pipe" -#~ msgstr "Kan geen 'inter-process write pipe' maken" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "DIB Header: kan geen 4-bits codering verwerken" -#~ msgid "Couldn't acquire a mutex lock" -#~ msgstr "Kon geen mutex-lock verkrijgen" +#~ msgid "Go back to the previous HTML page" +#~ msgstr "Ga naar de volgende HTML pagina" -#~ msgid "Couldn't release a mutex" -#~ msgstr "Kon mutex niet vrijgeven" +#~ msgid "Go forward to the next HTML page" +#~ msgstr "Ga vooruit naar de volgende HTML pagina" -#~ msgid "Font" -#~ msgstr "Lettertype" +#~ msgid "Help : %s" +#~ msgstr "Help : %s" -#~ msgid "PostScript" -#~ msgstr "PostScript" +#~ msgid "Preparing help window..." +#~ msgstr "Help venster aan het voorbereiden..." -#~ msgid "PostScript:" -#~ msgstr "PostScript:" +#~ msgid "ReleaseMutex()" +#~ msgstr "ReleaseMutex()" -#~ msgid "Preview Only" -#~ msgstr "Alleen afdrukvoorbeeld" +#~ msgid "Screenshot captured: " +#~ msgstr "Screenshot opgeslagen:" -#~ msgid "Printer Command: " -#~ msgstr "Printercommando: " +#~ msgid "Search!" +#~ msgstr "Zoeken!" -#~ msgid "Printer Options: " -#~ msgstr "Printer-opties: " +#~ msgid "XRC resource: Cannot create dialog without instance." +#~ msgstr "XRC bron: Kan geen dialoog maken zonder instantie." -#~ msgid "Printer Settings" -#~ msgstr "Printer-instellingen" +#~ msgid "large" +#~ msgstr "groot" -#~ msgid "Send to Printer" -#~ msgstr "Stuur naar printer" +#~ msgid "medium" +#~ msgstr "medium" -#, fuzzy -#~ msgid "SetPixelFormat failed." -#~ msgstr "Maken van pipe mislukt" +#~ msgid "small" +#~ msgstr "klein" -#~ msgid "X Scaling" -#~ msgstr "X-vergroting" +#~ msgid "very large" +#~ msgstr "zeer groot" -#~ msgid "X Translation" -#~ msgstr "X-verplaatsing" +#~ msgid "very small" +#~ msgstr "zeer klein" -#~ msgid "Y Scaling" -#~ msgstr "Y-vergroting" - -#~ msgid "Y Translation" -#~ msgstr "Y-verplaatsing" - -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "onbekend zoek-startpunt" - -#, fuzzy -#~ msgid "Fatal Error" -#~ msgstr "Fatale fout" - -#, fuzzy -#~ msgid "Fatal error: %s\n" -#~ msgstr "Fatale fout: " - -#~ msgid "Back" -#~ msgstr "Terug" - -#~ msgid "Can not create event object." -#~ msgstr "Kan geen event-object maken." - -#~ msgid "Can't find the serialization object '%s' for the object '%s'." -#~ msgstr "Kan serialisatie-object '%s' voor object '%s' niet vinden." - -#~ msgid "Can't load wxSerial dynamic library." -#~ msgstr "Kan dynamische bibliotheek wxSerial niet laden." - -#~ msgid "Connection to wxHelp timed out in %d seconds" -#~ msgstr "Verbinding met wxHelp heeft na %d seconden een time-out veroorzaakt" - -#~ msgid "Etcetera" -#~ msgstr "Etcetera" - -#, fuzzy -#~ msgid "ICO: Error calculating size of DIB ." -#~ msgstr "TIFF: fout bij lezen van afbeelding." - -#, fuzzy -#~ msgid "ICO: Error calculating size of Mask DIB ." -#~ msgstr "TIFF: fout bij lezen van afbeelding." - -#, fuzzy -#~ msgid "ICO: Error calculating size of XOR DIB ." -#~ msgstr "TIFF: fout bij lezen van afbeelding." - -#, fuzzy -#~ msgid "ICO: Error writing ICONDIR header." -#~ msgstr "TIFF: fout bij schrijven van afbeelding." - -#, fuzzy -#~ msgid "ICO: Error writing ICONDIRENTRY header." -#~ msgstr "TIFF: fout bij schrijven van afbeelding." - -#, fuzzy -#~ msgid "ICO: Error writing Mask DIB ." -#~ msgstr "TIFF: fout bij lezen van afbeelding." - -#, fuzzy -#~ msgid "ICO: Error writing XOR DIB ." -#~ msgstr "TIFF: fout bij lezen van afbeelding." - -#~ msgid "Incorrect version of HTML help book" -#~ msgstr "Verkeerde versie van HTML-help" - -#, fuzzy -#~ msgid "Loading DIB : Couldn't allocate memory." -#~ msgstr "BMP: kon geen geheugen reserveren" - -#~ msgid "Mounted Devices" -#~ msgstr "Gekoppelde apparaten" - -#~ msgid "My Harddisk" -#~ msgstr "Mijn harde schijf" - -#~ msgid "My Home" -#~ msgstr "Mijn basismap" - -#~ msgid "New..." -#~ msgstr "Nieuw..." - -#~ msgid "Please wait..." -#~ msgstr "Even geduld a.u.b...." - -#~ msgid "Temporary" -#~ msgstr "Tijdelijk" - -#~ msgid "The Computer" -#~ msgstr "Deze computer" - -#~ msgid "The directory " -#~ msgstr "De map" - -#~ msgid "User" -#~ msgstr "Gebruiker" - -#~ msgid "User Local" -#~ msgstr "Lokale gebruiker" - -#~ msgid "Variables" -#~ msgstr "Variabelen" - -#~ msgid "Window" -#~ msgstr "Venster" - -#, fuzzy -#~ msgid "centered" -#~ msgstr "Etcetera" - -#, fuzzy -#~ msgid "Unknown digit value" -#~ msgstr "Onbekende codering (%d)" - -#~ msgid "Replace file '%s'?" -#~ msgstr "Bestand '%s' vervangen?" - -#~ msgid "wxWindows: error finding temporary file name.\n" -#~ msgstr "wxWindows: fout bij zoeken van tijdelijke bestandsnaam.\n" - -#~ msgid "" -#~ "Can't create window of class %s!\n" -#~ "Possible Windows 3.x compatibility problem?" -#~ msgstr "" -#~ "Kan geen venster van type %s maken!\n" -#~ "Mogelijk Windows 3.x compatibiliteitsprobleem?" - -#, fuzzy -#~ msgid "" -#~ "Can't find dialog template '%s'!\n" -#~ "Check resource include path for finding wx.rc." -#~ msgstr "" -#~ "Kan lege dialoogsjabloon niet vinden!\n" -#~ "Kijn resource include-pad na voor wx.rc." - -#~ msgid "Couldn't launch DDE server '%s'." -#~ msgstr "Kon DDE-server '%s' niet starten." - -#~ msgid "Cyrillic (Latin 5)" -#~ msgstr "Cyrillisch (Latin 5)" - -#~ msgid "No XPM facility available!" -#~ msgstr "Geen XPM-faciliteit beschikbaar!" - -#~ msgid "ISO-8859-12" -#~ msgstr "ISO-8859-12" - -#~ msgid "ISO-8859-14" -#~ msgstr "ISO-8859-14" +#~ msgid "wxSearchEngine::LookFor must be called before scanning!" +#~ msgstr "wxSearchEngine::LookFor moet aangeroepen worden voor het scannen!" diff --git a/locale/pl.po b/locale/pl.po new file mode 100644 index 0000000000..2a8ab3f020 --- /dev/null +++ b/locale/pl.po @@ -0,0 +1,3715 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: wxWindows-2.4\n" +"POT-Creation-Date: 2002-12-12 11:59+0100\n" +"PO-Revision-Date: 2003-01-03 19:56+0100\n" +"Last-Translator: Janusz Piwowarski \n" +"Language-Team: wxWindows translators \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../src/common/log.cpp:304 +#, c-format +msgid " (error %ld: %s)" +msgstr " (b³±d %ld: %s)" + +#: ../src/common/docview.cpp:1242 +msgid " - " +msgstr " - " + +#: ../src/html/htmprint.cpp:497 +msgid " Preview" +msgstr " Podgl±d" + +#: ../src/common/paper.cpp:124 +msgid "#10 Envelope, 4 1/8 x 9 1/2 in" +msgstr "Koperta #10, 4 1/8 x 9 1/2 cali" + +#: ../src/common/paper.cpp:125 +msgid "#11 Envelope, 4 1/2 x 10 3/8 in" +msgstr "Koperta #11, 4 1/2 x 10 3/8 cali" + +#: ../src/common/paper.cpp:126 +msgid "#12 Envelope, 4 3/4 x 11 in" +msgstr "Koperta #12, 4 3/4 x 11 cali" + +#: ../src/common/paper.cpp:127 +msgid "#14 Envelope, 5 x 11 1/2 in" +msgstr "Koperta #14, 5 x 11 1/2 cali" + +#: ../src/common/paper.cpp:123 +msgid "#9 Envelope, 3 7/8 x 8 7/8 in" +msgstr "Koperta #9, 3 7/8 x 8 7/8 cali" + +#: ../src/common/resourc2.cpp:265 +#: ../src/common/resourc2.cpp:1326 +#: ../src/common/resource.cpp:1784 +#: ../src/common/resource.cpp:1914 +#: ../src/common/resource.cpp:2994 +#, c-format +msgid "#define %s must be an integer." +msgstr "#define %s musi byæ typu integer." + +#: ../src/common/prntbase.cpp:375 +#, c-format +msgid "%d" +msgstr "%d" + +#: ../src/common/prntbase.cpp:373 +#, c-format +msgid "%d...%d" +msgstr "%d...%d" + +#: ../src/html/helpfrm.cpp:777 +#: ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 +#: ../src/html/helpfrm.cpp:1434 +#, c-format +msgid "%i of %i" +msgstr "%i z %i" + +#: ../src/common/cmdline.cpp:814 +#, c-format +msgid "%s (or %s)" +msgstr "%s (lub %s)" + +#: ../src/generic/logg.cpp:246 +#, c-format +msgid "%s Error" +msgstr "%s B³±d" + +#: ../src/generic/logg.cpp:254 +#, c-format +msgid "%s Information" +msgstr "%s Informacja" + +#: ../src/generic/logg.cpp:250 +#, c-format +msgid "%s Warning" +msgstr "%s Ostrze¿enie" + +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "Komunikat programu %s" + +#: ../src/common/resourc2.cpp:709 +#: ../src/common/resource.cpp:2366 +#, c-format +msgid "%s not a bitmap resource specification." +msgstr "%s nie jest specyfikacj± zasobu mapy bitowej." + +#: ../src/common/resourc2.cpp:860 +#: ../src/common/resource.cpp:2520 +#, c-format +msgid "%s not an icon resource specification." +msgstr "%s nie jest specyfikacj± zasobu ikony." + +#: ../src/common/resourc2.cpp:357 +#: ../src/common/resourc2.cpp:1422 +#: ../src/common/resource.cpp:1877 +#: ../src/common/resource.cpp:2006 +#: ../src/common/resource.cpp:3091 +#, c-format +msgid "%s: ill-formed resource file syntax." +msgstr "%s: ¼le sformu³owana sk³adnia pliku zasobów." + +#: ../src/msw/mdi.cpp:192 +msgid "&Arrange Icons" +msgstr "&Rozmie¶æ ikony" + +#: ../src/generic/fdrepdlg.cpp:170 +#: ../src/generic/wizard.cpp:271 +msgid "&Cancel" +msgstr "&Anuluj" + +#: ../src/msw/mdi.cpp:188 +msgid "&Cascade" +msgstr "&Kaskada" + +#: ../src/generic/logg.cpp:491 +#: ../src/generic/tipdlg.cpp:210 +msgid "&Close" +msgstr "Zam&knij" + +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "&Kopiuj" + +#: ../src/msw/textctrl.cpp:1683 +msgid "&Delete" +msgstr "&Usuñ" + +#: ../src/generic/logg.cpp:695 +msgid "&Details" +msgstr "&Szczegó³y" + +#: ../src/generic/fdrepdlg.cpp:168 +msgid "&Find" +msgstr "&Znajd¼" + +#: ../src/generic/wizard.cpp:412 +msgid "&Finish" +msgstr "Za&koñcz" + +#: ../src/generic/wizard.cpp:258 +msgid "&Help" +msgstr "&Pomoc" + +#: ../src/generic/logg.cpp:492 +msgid "&Log" +msgstr "&Dziennik" + +#: ../src/univ/themes/win32.cpp:4541 +msgid "&Move" +msgstr "Prz&enie¶" + +#: ../src/generic/mdig.cpp:115 +#: ../src/msw/mdi.cpp:193 +msgid "&Next" +msgstr "&Nastêpne" + +#: ../src/generic/wizard.cpp:268 +#: ../src/generic/wizard.cpp:414 +msgid "&Next >" +msgstr "&Dalej >" + +#: ../src/generic/tipdlg.cpp:215 +msgid "&Next Tip" +msgstr "&Nastêpna porada" + +#: ../src/msw/textctrl.cpp:1682 +msgid "&Paste" +msgstr "Wkl&ej" + +#: ../src/generic/mdig.cpp:116 +#: ../src/msw/mdi.cpp:194 +msgid "&Previous" +msgstr "&Poprzednie" + +#: ../src/common/cmdproc.cpp:261 +#: ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 +msgid "&Redo" +msgstr "&Ponów" + +#: ../src/common/cmdproc.cpp:255 +#: ../src/common/cmdproc.cpp:282 +msgid "&Redo " +msgstr "&Ponów " + +#: ../src/generic/fdrepdlg.cpp:174 +msgid "&Replace" +msgstr "&Zast±p" + +#: ../src/univ/themes/win32.cpp:4540 +msgid "&Restore" +msgstr "&Przywróæ" + +#: ../src/generic/logg.cpp:487 +#: ../src/generic/logg.cpp:818 +msgid "&Save..." +msgstr "&Zapisz..." + +#: ../src/generic/tipdlg.cpp:212 +msgid "&Show tips at startup" +msgstr "&Pokazuj porady przy uruchamianiu" + +#: ../src/univ/themes/win32.cpp:4543 +msgid "&Size" +msgstr "&Rozmiar" + +#: ../src/common/cmdproc.cpp:267 +#: ../src/msw/textctrl.cpp:1677 +msgid "&Undo" +msgstr "&Cofnij" + +#: ../src/common/cmdproc.cpp:241 +msgid "&Undo " +msgstr "&Cofnij " + +#: ../src/generic/mdig.cpp:295 +#: ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 +#: ../src/msw/mdi.cpp:1328 +#: ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1365 +msgid "&Window" +msgstr "&Okno" + +#: ../src/common/config.cpp:410 +#: ../src/msw/regconf.cpp:264 +#, c-format +msgid "'%s' has extra '..', ignored." +msgstr "'%s' ma nadmiarowe '..', zignorowane." + +#: ../src/common/valtext.cpp:147 +#: ../src/common/valtext.cpp:177 +#: ../src/common/valtext.cpp:183 +#, c-format +msgid "'%s' is invalid" +msgstr "'%s' jest nieprawid³owy" + +#: ../src/common/cmdline.cpp:734 +#, c-format +msgid "'%s' is not a correct numeric value for option '%s'." +msgstr "'%s' nie jest poprawn± warto¶ci± numeryczn± opcji '%s'." + +#: ../src/common/intl.cpp:402 +#, c-format +msgid "'%s' is not a valid message catalog." +msgstr "'%s' nie jest prawid³owym katalogiem komunikatów." + +#: ../src/common/textbuf.cpp:245 +#, c-format +msgid "'%s' is probably a binary buffer." +msgstr "'%s' jest prawdopodobnie buforem binarnym." + +#: ../src/common/valtext.cpp:172 +#, c-format +msgid "'%s' should be numeric." +msgstr "'%s' powinno byæ numeryczne." + +#: ../src/common/valtext.cpp:154 +#, c-format +msgid "'%s' should only contain ASCII characters." +msgstr "'%s' powinien zawieraæ tylko znaki ASCII." + +#: ../src/common/valtext.cpp:160 +#, c-format +msgid "'%s' should only contain alphabetic characters." +msgstr "'%s' powinien zawieraæ tylko warto¶ci znakowe." + +#: ../src/common/valtext.cpp:166 +#, c-format +msgid "'%s' should only contain alphabetic or numeric characters." +msgstr "'%s' powinien zawieraæ tylko warto¶ci znakowe lub numeryczne." + +#: ../src/html/helpfrm.cpp:714 +msgid "(Help)" +msgstr "(Pomoc)" + +#: ../src/html/helpfrm.cpp:315 +#: ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 +msgid "(bookmarks)" +msgstr "(zak³adki)" + +#: ../src/common/resourc2.cpp:297 +#: ../src/common/resourc2.cpp:1362 +#: ../src/common/resource.cpp:1816 +#: ../src/common/resource.cpp:1946 +#: ../src/common/resource.cpp:3030 +msgid ", expected static, #include or #define\n" +"whilst parsing resource." +msgstr ", oczekiwano static, #include lub #define\n" +"w czasie parsowania zasobów." + +#: ../src/generic/dirctrlg.cpp:700 +#: ../src/generic/filedlgg.cpp:938 +msgid "." +msgstr "." + +#: ../src/generic/dirctrlg.cpp:701 +#: ../src/generic/filedlgg.cpp:939 +msgid ".." +msgstr ".." + +#: ../src/common/paper.cpp:120 +msgid "10 x 14 in" +msgstr "10 x 14 cali" + +#: ../src/common/paper.cpp:121 +msgid "11 x 17 in" +msgstr "11 x 17 cali" + +#: ../src/common/paper.cpp:139 +msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" +msgstr "Koperta 6 3/4, 3 5/8 x 6 1/2 cali" + +#: ../src/html/htmprint.cpp:279 +msgid ": file does not exist!" +msgstr ": plik nie istnieje!" + +#: ../src/common/fontmap.cpp:670 +msgid ": unknown charset" +msgstr ": nieznany zestaw znaków" + +#: ../src/common/fontmap.cpp:898 +msgid ": unknown encoding" +msgstr ": nieznane kodowanie" + +#: ../src/generic/wizard.cpp:263 +msgid "< &Back" +msgstr "< &Wstecz" + +#: ../src/generic/filedlgg.cpp:534 +msgid "" +msgstr "" + +#: ../src/generic/filedlgg.cpp:536 +msgid "" +msgstr "" + +# uwaga! znika! +#: ../src/html/helpfrm.cpp:994 +msgid "
    Normal face
    (and underlined. Italic face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " +msgstr "
    Normal face
    (and underlined. Italic face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " + +#: ../src/common/paper.cpp:113 +msgid "A3 sheet, 297 x 420 mm" +msgstr "Arkusz A3, 297 x 420 mm" + +#: ../src/common/paper.cpp:104 +msgid "A4 sheet, 210 x 297 mm" +msgstr "Arkusz A4, 210 x 297 mm" + +#: ../src/common/paper.cpp:114 +msgid "A4 small sheet, 210 x 297 mm" +msgstr "Ma³y arkusz A4, 210 x 297 mm" + +#: ../src/common/paper.cpp:115 +msgid "A5 sheet, 148 x 210 mm" +msgstr "Arkusz A5, 148 x 210 mm" + +#: ../src/generic/fontdlgg.cpp:83 +msgid "ABCDEFGabcdefg12345" +msgstr "ABCDEFGabcdefg12345" + +#: ../src/common/ftp.cpp:369 +msgid "ASCII" +msgstr "ASCII" + +#: ../src/html/helpfrm.cpp:328 +msgid "Add current page to bookmarks" +msgstr "Dodaj bie¿±c± stronê do listy zak³adek" + +#: ../src/generic/colrdlgg.cpp:287 +msgid "Add to custom colours" +msgstr "Dodaj do kolorów niestandardowych" + +#: ../src/html/helpctrl.cpp:100 +#, c-format +msgid "Adding book %s" +msgstr "Dodawanie pliku pomocy %s" + +#: ../src/generic/prntdlgg.cpp:160 +msgid "All" +msgstr "Wszystko" + +#: ../src/generic/filedlgg.cpp:1062 +msgid "All files (*)|*" +msgstr "Wszystkie pliki (*)|*" + +#: ../src/unix/dialup.cpp:362 +msgid "Already dialling ISP." +msgstr "Ju¿ ³±czy z ISP." + +#: ../src/generic/logg.cpp:1109 +#, c-format +msgid "Append log to file '%s' (choosing [No] will overwrite it)?" +msgstr "Do³±czyæ dziennik do pliku '%s' (wybieraj±c [Nie] zast±pisz go)?" + +#: ../src/common/fontmap.cpp:118 +msgid "Arabic (ISO-8859-6)" +msgstr "Arabski (ISO-8859-6)" + +#: ../src/common/paper.cpp:134 +msgid "B4 Envelope, 250 x 353 mm" +msgstr "Koperta B4, 250 x 353 mm" + +#: ../src/common/paper.cpp:116 +msgid "B4 sheet, 250 x 354 mm" +msgstr "Arkusz B4, 250 x 354 mm" + +#: ../src/common/paper.cpp:135 +msgid "B5 Envelope, 176 x 250 mm" +msgstr "Koperta B5, 176 x 250 mm" + +#: ../src/common/paper.cpp:117 +msgid "B5 sheet, 182 x 257 millimeter" +msgstr "Arkusz B5, 182 x 257 mm" + +#: ../src/common/paper.cpp:136 +msgid "B6 Envelope, 176 x 125 mm" +msgstr "Koperta B6, 176 x 125 mm" + +#: ../src/common/imagbmp.cpp:468 +#: ../src/common/imagbmp.cpp:484 +msgid "BMP: Couldn't allocate memory." +msgstr "BMP: Nie mo¿na przydzieliæ pamiêci." + +#: ../src/common/imagbmp.cpp:86 +msgid "BMP: Couldn't save invalid image." +msgstr "BMP: Nie mo¿na zapisaæ nieprawid³owego obrazu.." + +#: ../src/common/imagbmp.cpp:290 +msgid "BMP: Couldn't write RGB color map." +msgstr "BMP: Nie mo¿na zapisaæ mapy kolorów RGB." + +#: ../src/common/imagbmp.cpp:422 +msgid "BMP: Couldn't write data." +msgstr "BMP: Nie mo¿na zapisaæ danych." + +#: ../src/common/imagbmp.cpp:195 +msgid "BMP: Couldn't write the file (Bitmap) header." +msgstr "BMP: Nie mo¿na zapisaæ nag³ówka pliku (Bitmap)." + +#: ../src/common/imagbmp.cpp:216 +msgid "BMP: Couldn't write the file (BitmapInfo) header." +msgstr "BMP: Nie mo¿na zapisaæ nag³ówka pliku (BitmapInfo)." + +#: ../src/common/imagbmp.cpp:120 +msgid "BMP: wxImage doesn't have own wxPalette." +msgstr "BMP: wxImage nie ma w³asnej wxPalette." + +#: ../src/common/dlgcmn.cpp:233 +msgid "Backward" +msgstr "Wstecz" + +#: ../src/common/fontmap.cpp:125 +msgid "Baltic (ISO-8859-13)" +msgstr "Ba³tycki (ISO-8859-13)" + +#: ../src/common/fontmap.cpp:116 +msgid "Baltic (old) (ISO-8859-4)" +msgstr "Ba³tycki (stary) (ISO-8859-4)" + +#: ../src/common/resourc2.cpp:840 +#: ../src/common/resource.cpp:2500 +#, c-format +msgid "Bitmap resource specification %s not found." +msgstr "Nie znaleziono specyfikacji zasobu mapu bitowej %s." + +#: ../src/generic/fontdlgg.cpp:232 +msgid "Bold" +msgstr "Pogrubiony" + +#: ../src/generic/prntdlgg.cpp:645 +msgid "Bottom margin (mm):" +msgstr "Dolny margines (mm):" + +#: ../src/common/paper.cpp:105 +msgid "C sheet, 17 x 22 in" +msgstr "Arkusz C, 17 x 22 cali" + +#: ../src/generic/logg.cpp:489 +msgid "C&lear" +msgstr "&Wyczy¶æ" + +#: ../src/common/paper.cpp:130 +msgid "C3 Envelope, 324 x 458 mm" +msgstr "Koperta C3, 324 x 458 mm" + +#: ../src/common/paper.cpp:131 +msgid "C4 Envelope, 229 x 324 mm" +msgstr "Koperta C4, 229 x 324 mm" + +#: ../src/common/paper.cpp:129 +msgid "C5 Envelope, 162 x 229 mm" +msgstr "Koperta C5, 162 x 229 mm" + +#: ../src/common/paper.cpp:132 +msgid "C6 Envelope, 114 x 162 mm" +msgstr "Koperta C6, 114 x 162 mm" + +#: ../src/common/paper.cpp:133 +msgid "C65 Envelope, 114 x 229 mm" +msgstr "Koperta C65, 114 x 229 mm" + +#: ../src/common/filefn.cpp:1383 +#, c-format +msgid "Can not enumerate files '%s'" +msgstr "Nie mo¿na wyliczyæ plików '%s'" + +#: ../src/msw/dir.cpp:296 +#: ../src/unix/dir.cpp:232 +#, c-format +msgid "Can not enumerate files in directory '%s'" +msgstr "Nie mo¿na wyliczyæ plików w katalogu '%s'" + +#: ../src/mac/thread.cpp:472 +#: ../src/msw/thread.cpp:685 +#, c-format +msgid "Can not resume thread %x" +msgstr "Nie mo¿na wznowiæ w±tku %x" + +#: ../src/msw/thread.cpp:559 +msgid "Can not start thread: error writing TLS." +msgstr "Nie mo¿na wystartowaæ w±tku: b³±d zapisu TLS." + +#: ../src/mac/thread.cpp:448 +#: ../src/msw/thread.cpp:670 +#, c-format +msgid "Can not suspend thread %x" +msgstr "Nie mo¿na zawiesiæ w±tku %x" + +#: ../src/msw/thread.cpp:1016 +msgid "Can not wait for thread termination" +msgstr "Nie mo¿na czekaæ na zakoñczenie w±tku" + +#: ../src/common/cmdproc.cpp:243 +msgid "Can't &Undo " +msgstr "Nie mo¿na &cofn±æ " + +#: ../src/common/image.cpp:1315 +#, c-format +msgid "Can't check image format of file '%s': file does not exist." +msgstr "Nie mo¿na sprawdziæ formatu graficznego pliku '%s': plik nie istnieje." + +#: ../src/msw/registry.cpp:421 +#, c-format +msgid "Can't close registry key '%s'" +msgstr "Nie mo¿na zamkn±æ klucza rejestru '%s'" + +#: ../src/msw/registry.cpp:493 +#, c-format +msgid "Can't copy values of unsupported type %d." +msgstr "Nie mo¿na kopiowaæ warto¶ci nieobs³ugiwanego typu %d." + +#: ../src/msw/toplevel.cpp:315 +msgid "Can't create dialog using memory template" +msgstr "Nie mo¿na utworzyæ okna dialogowego na podstawie wczytanego szablonu" + +#: ../src/os2/toplevel.cpp:369 +#, c-format +msgid "Can't create dialog using template '%ul'" +msgstr "Nie mo¿na utworzyæ okna dialogowego na podstawie szablonu '%ul'" + +#: ../src/msw/listctrl.cpp:334 +msgid "Can't create list control window, check that comctl32.dll is installed." +msgstr "Nie mo¿na utworzyæ okna listy kontrolnej, sprawd¿ czy comctl32.dll jest zainstalowany." + +#: ../src/msw/registry.cpp:402 +#, c-format +msgid "Can't create registry key '%s'" +msgstr "Nie mo¿na utworzyæ klucza rejestru '%s'" + +#: ../src/mac/thread.cpp:427 +#: ../src/msw/thread.cpp:652 +msgid "Can't create thread" +msgstr "Nie mo¿na utworzyæ w±tku" + +#: ../src/msw/window.cpp:3062 +#, c-format +msgid "Can't create window of class %s" +msgstr "Nie mo¿na utworzyæ okna klasy '%s'" + +#: ../src/msw/registry.cpp:661 +#, c-format +msgid "Can't delete key '%s'" +msgstr "Nie mo¿na usun±æ klucza '%s'" + +#: ../src/msw/iniconf.cpp:445 +#, c-format +msgid "Can't delete the INI file '%s'" +msgstr "Nie mo¿na usun±æ pliku INI '%s'" + +#: ../src/msw/registry.cpp:686 +#, c-format +msgid "Can't delete value '%s' from key '%s'" +msgstr "Nie mo¿na usun±æ warto¶ci '%s' z klucza '%s'" + +#: ../src/msw/registry.cpp:697 +#, c-format +msgid "Can't delete value of key '%s'" +msgstr "Nie mo¿na usun±æ warto¶ci klucza '%s'" + +#: ../src/msw/registry.cpp:1025 +#, c-format +msgid "Can't enumerate subkeys of key '%s'" +msgstr "Nie mo¿na wyliczyæ podkluczy klucza '%s'" + +#: ../src/msw/registry.cpp:980 +#, c-format +msgid "Can't enumerate values of key '%s'" +msgstr "Nie mo¿na wyliczyæ warto¶ci klucza '%s'" + +#: ../src/common/ffile.cpp:226 +#, c-format +msgid "Can't find current position in file '%s'" +msgstr "Nie mo¿na znale¼æ bie¿±cej pozycji w pliku '%s'" + +#: ../src/msw/registry.cpp:351 +#, c-format +msgid "Can't get info about registry key '%s'" +msgstr "Nie mo¿na uzyskaæ informacji o kluczu rejestru '%s'" + +#: ../src/common/image.cpp:913 +#: ../src/common/image.cpp:933 +#, c-format +msgid "Can't load image from file '%s': file does not exist." +msgstr "Nie mo¿na wczytaæ obrazu z pliku '%s': plik nie istnieje." + +#: ../src/msw/dib.cpp:434 +#, c-format +msgid "Can't open file '%s'" +msgstr "Nie mo¿na otworzyæ pliku '%s'" + +#: ../src/msw/registry.cpp:377 +#, c-format +msgid "Can't open registry key '%s'" +msgstr "Nie mo¿na otworzyæ klucza rejestru '%s'" + +#: ../src/msw/registry.cpp:904 +#, c-format +msgid "Can't read value of '%s'" +msgstr "Nie mo¿na odczytaæ warto¶ci '%s'" + +#: ../src/msw/registry.cpp:777 +#: ../src/msw/registry.cpp:816 +#, c-format +msgid "Can't read value of key '%s'" +msgstr "Nie mo¿na odczytaæ warto¶ci klucza '%s'" + +#: ../src/common/image.cpp:955 +#, c-format +msgid "Can't save image to file '%s': unknown extension." +msgstr "Nie mo¿na zapisaæ obrazu do pliku '%s': nieznane rozszerzenie." + +#: ../src/generic/logg.cpp:551 +#: ../src/generic/logg.cpp:985 +msgid "Can't save log contents to file." +msgstr "Nie mo¿na zapisaæ zawarto¶ci dziennika w pliku." + +# ustaliæ? +#: ../src/msw/thread.cpp:611 +msgid "Can't set thread priority" +msgstr "Nie mo¿na zmieniæ priorytetu w±tku" + +#: ../src/msw/registry.cpp:802 +#: ../src/msw/registry.cpp:928 +#, c-format +msgid "Can't set value of '%s'" +msgstr "Nie mo¿na nadaæ warto¶ci '%s'" + +#: ../src/common/dlgcmn.cpp:246 +#: ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 +#: ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 +#: ../src/generic/prntdlgg.cpp:453 +#: ../src/generic/progdlgg.cpp:211 +#: ../src/generic/proplist.cpp:511 +#: ../src/gtk/filedlg.cpp:173 +#: ../src/gtk/fontdlg.cpp:144 +#: ../src/html/helpfrm.cpp:976 +#: ../src/motif/msgdlg.cpp:182 +msgid "Cancel" +msgstr "Zrezygnuj" + +# units --> ? +#: ../contrib/src/xrc/xmlres.cpp:969 +#: ../contrib/src/xrc/xmlres.cpp:1010 +msgid "Cannot convert dialog units: dialog unknown." +msgstr "Nie mo¿na wykonaæ konwersji okien dialogowych: nieznane okno dialogowe." + +#: ../src/common/strconv.cpp:963 +#, c-format +msgid "Cannot convert from encoding '%s'!" +msgstr "Nie mo¿na skonwertowaæ z kodowania '%s'!" + +#: ../src/msw/dialup.cpp:499 +#, c-format +msgid "Cannot find active dialup connection: %s" +msgstr "NIe mo¿na znale¼æ aktywnego po³±czenia dialup: %s" + +#: ../contrib/src/xrc/xmlres.cpp:243 +#, c-format +msgid "Cannot find container for unknown control '%s'." +msgstr "NIe mo¿na znale¼æ kontenera dla nieznanej kontrolki '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:1024 +#, c-format +msgid "Cannot find font node '%s'." +msgstr "Nie mo¿na znale¼æ wêz³a czcionki '%s'." + +#: ../src/msw/dialup.cpp:813 +msgid "Cannot find the location of address book file" +msgstr "Nie mo¿na znale¼æ lokalizacji pliku ksi±¿ki adresowej" + +#: ../src/unix/threadpsx.cpp:1096 +#, c-format +msgid "Cannot get priority range for scheduling policy %d." +msgstr "Nie mo¿na uzyskaæ zakresu priorytetów strategii harmogramowania %d." + +#: ../src/unix/utilsunx.cpp:865 +msgid "Cannot get the hostname" +msgstr "Nie mo¿na pobraæ nazwy serwera" + +#: ../src/unix/utilsunx.cpp:901 +msgid "Cannot get the official hostname" +msgstr "Nie mo¿na pobraæ oficjalnej nazwy serwera" + +#: ../src/msw/dialup.cpp:907 +msgid "Cannot hang up - no active dialup connection." +msgstr "Nie mo¿na roz³±czyæ - brak aktywnego po³±czenia dialup." + +#: ../src/msw/app.cpp:250 +msgid "Cannot initialize OLE" +msgstr "Nie mo¿na zainicjowaæ OLE" + +#: ../src/mgl/app.cpp:414 +msgid "Cannot initialize SciTech MGL!" +msgstr "Nie mo¿na zainicjowaæ SciTech MGL!" + +#: ../src/mgl/window.cpp:547 +msgid "Cannot initialize display." +msgstr "Nie mo¿na zainicjowaæ obs³ugi wy¶wietlania." + +#: ../src/msw/volume.cpp:634 +#, c-format +msgid "Cannot load icon from '%s'." +msgstr "Nie mo¿na wczytaæ ikony z '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:356 +#, c-format +msgid "Cannot load resources from file '%s'." +msgstr "Nie mo¿na wczytaæ zasobów z pliku z '%s'." + +#: ../src/html/htmlfilt.cpp:164 +#, c-format +msgid "Cannot open HTML document: %s" +msgstr "Nie mo¿na otworzyæ dokumentu HTML: %s" + +#: ../src/html/helpdata.cpp:584 +#, c-format +msgid "Cannot open HTML help book: %s" +msgstr "Nie mo¿na otworzyæ ksi±¿ki pomocy HTML: %s" + +#: ../src/generic/helpext.cpp:100 +#, c-format +msgid "Cannot open URL '%s'" +msgstr "Nie mo¿na otworzyæ URL '%s'" + +#: ../src/html/helpdata.cpp:277 +#, c-format +msgid "Cannot open contents file: %s" +msgstr "Nie mo¿na otworzyæ pliku pomocy: %s" + +#: ../contrib/src/xrc/xmlres.cpp:330 +#, c-format +msgid "Cannot open file '%s'." +msgstr "Nie mo¿na otworzyæ pliku '%s'." + +#: ../src/generic/dcpsg.cpp:1719 +msgid "Cannot open file for PostScript printing!" +msgstr "Nie mo¿na otworzyæ pliku dla drukowania postscriptowego!" + +#: ../src/html/helpdata.cpp:292 +#, c-format +msgid "Cannot open index file: %s" +msgstr "Nie mo¿na otworzyæ pliku indeksowego: %s" + +#: ../contrib/src/xrc/xmlres.cpp:957 +#, c-format +msgid "Cannot parse coordinates from '%s'." +msgstr "Nie mo¿na wyci±gn±æ koordynatów z '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:998 +#, c-format +msgid "Cannot parse dimension from '%s'." +msgstr "Nie mo¿na wyci±gn±æ wymiaru z '%s'." + +#: ../src/html/helpfrm.cpp:1293 +msgid "Cannot print empty page." +msgstr "Nie mo¿na wydrukowaæ pustej strony." + +#: ../src/msw/volume.cpp:195 +#: ../src/msw/volume.cpp:526 +#, c-format +msgid "Cannot read typename from '%s'!" +msgstr "Nie mo¿na odczytaæ nazwy typu z '%s'!" + +#: ../src/unix/threadpsx.cpp:1077 +msgid "Cannot retrieve thread scheduling policy." +msgstr "Nie mo¿na uzyskaæ strategii harmonogramowania w±tków." + +#: ../src/unix/threadpsx.cpp:710 +msgid "Cannot start thread: error writing TLS" +msgstr "Nie mo¿na wystartowaæ w±tku: b³±d zapisu TLS" + +#: ../src/html/helpfrm.cpp:411 +msgid "Case sensitive" +msgstr "Uwzglêdniaj wielko¶æ liter" + +#: ../src/common/fontmap.cpp:126 +msgid "Celtic (ISO-8859-14)" +msgstr "Celtycki (ISO-8859-14)" + +#: ../src/common/fontmap.cpp:114 +msgid "Central European (ISO-8859-2)" +msgstr "¦rodkowoeuropejski (ISO-8859-2)" + +#: ../src/msw/dialup.cpp:748 +msgid "Choose ISP to dial" +msgstr "Wybierz ISP do po³±czenia" + +#: ../src/gtk/fontdlg.cpp:122 +msgid "Choose font" +msgstr "Wybierz czcionkê" + +#: ../src/generic/mdig.cpp:112 +msgid "Cl&ose" +msgstr "Zam&knij" + +#: ../src/generic/logg.cpp:489 +msgid "Clear the log contents" +msgstr "Wyczy¶æ zawarto¶æ dziennika" + +#: ../src/common/prntbase.cpp:428 +#: ../src/generic/progdlgg.cpp:358 +#: ../src/generic/proplist.cpp:506 +msgid "Close" +msgstr "Zamknij" + +#: ../src/univ/themes/win32.cpp:4549 +msgid "Close\tAlt-F4" +msgstr "Zamknij\tAlt-F4" + +#: ../src/generic/mdig.cpp:113 +msgid "Close All" +msgstr "Zamknij wszystko" + +#: ../src/generic/logg.cpp:491 +msgid "Close this window" +msgstr "Zamknij okno" + +#: ../src/generic/dirctrlg.cpp:549 +msgid "Computer" +msgstr "Komputer" + +#: ../src/common/fileconf.cpp:902 +#, c-format +msgid "Config entry name cannot start with '%c'." +msgstr "Nazwa pozycji konfiguracji nie mo¿e zaczynaæ siê od '%c'." + +#: ../src/generic/filedlgg.cpp:1411 +#: ../src/gtk/filedlg.cpp:72 +msgid "Confirm" +msgstr "Potwierd¼" + +#: ../src/msw/mimetype.cpp:689 +msgid "Confirm registry update" +msgstr "Potwierd¼ uaktualnienie rejestru" + +#: ../src/html/htmlwin.cpp:262 +msgid "Connecting..." +msgstr "£±czenie..." + +#: ../src/html/helpfrm.cpp:351 +msgid "Contents" +msgstr "Zawarto¶æ" + +#: ../src/common/strconv.cpp:616 +#, c-format +msgid "Conversion to charset '%s' doesn't work." +msgstr "Nie dzia³a konwersja do zestawu znaków '%s'." + +#: ../src/generic/prntdlgg.cpp:193 +msgid "Copies:" +msgstr "Kopie:" + +#: ../src/common/resourc2.cpp:287 +#: ../src/common/resource.cpp:1806 +#: ../src/common/resource.cpp:1936 +#, c-format +msgid "Could not find resource include file %s." +msgstr "Nie mo¿na odnale¼æ do³±czonego pliku zasobów %s." + +#: ../src/generic/tabg.cpp:1044 +msgid "Could not find tab for id" +msgstr "Nie mo¿na znale¼æ (tab) dla (id)" + +#: ../src/msw/textctrl.cpp:2050 +#, c-format +msgid "Could not load Rich Edit DLL '%s'" +msgstr "Nie mo¿na wczytaæ biblioteki Rich Edit '%s'" + +# caveat? +#: ../src/common/resource.cpp:802 +#, c-format +msgid "Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" +" or provide #define (see manual for caveats)" +msgstr "Nie mo¿na okre¶liæ klasy kontrolnej lub identyfikatora '%s'. U¿yj w zastêpstwie\n" +"(niezerowej) liczby (integer), lub skorzystaj z #define (poszukaj wskazówek w podrêczniku)" + +#: ../src/common/resource.cpp:1251 +#, c-format +msgid "Could not resolve menu id '%s'. Use (non-zero) integer instead\n" +"or provide #define (see manual for caveats)" +msgstr "Nie mo¿na okre¶liæ identyfikatora menu '%s'. W zastêpstwie u¿yj (niezerowej) liczby (integer)\n" +"lub skorzystaj z #define (poszukaj wskazówek w podrêczniku)" + +#: ../src/common/prntbase.cpp:805 +msgid "Could not start document preview." +msgstr "Nie mo¿na wystartowaæ podgl±du dokumentu." + +#: ../src/generic/printps.cpp:198 +#: ../src/msw/printwin.cpp:252 +msgid "Could not start printing." +msgstr "Nie mo¿na rozpocz±æ drukowania." + +# przenie¶æ? +#: ../src/common/wincmn.cpp:1167 +msgid "Could not transfer data to window" +msgstr "Nie mo¿na przenie¶æ danych do okna" + +#: ../src/msw/dragimag.cpp:158 +#: ../src/msw/dragimag.cpp:194 +#: ../src/msw/imaglist.cpp:152 +#: ../src/msw/imaglist.cpp:174 +#: ../src/msw/imaglist.cpp:187 +msgid "Couldn't add an image to the image list." +msgstr "Nie mo¿na dodaæ obrazu do listy obrazów." + +#: ../src/msw/timer.cpp:103 +msgid "Couldn't create a timer" +msgstr "Nie mo¿na utworzyæ stopera" + +#: ../src/mgl/cursor.cpp:135 +#: ../src/mgl/cursor.cpp:166 +msgid "Couldn't create cursor." +msgstr "Nie mo¿na utworzyæ kursora." + +# dynamicznej? nie³adne, a chyba zbêdne +#: ../src/common/dynlib.cpp:347 +#: ../src/common/dynload.cpp:299 +#, c-format +msgid "Couldn't find symbol '%s' in a dynamic library" +msgstr "Nie mo¿na znale¼æ symbolu '%s' w bibliotece" + +#: ../src/mac/thread.cpp:502 +#: ../src/msw/thread.cpp:711 +msgid "Couldn't get the current thread pointer" +msgstr "Nie mo¿na pobraæ wska¼nika aktualnego w±tku" + +#: ../src/common/imagpng.cpp:302 +msgid "Couldn't load a PNG image - file is corrupted or not enough memory." +msgstr "Nie mo¿na wczytaæ obrazu PNG - plik jest uszkodzony lub zabrak³o pamiêci." + +#: ../src/msw/ole/dataobj.cpp:147 +#, c-format +msgid "Couldn't register clipboard format '%s'." +msgstr "Nie mo¿na zarejestrowaæ formatu schowka '%s'." + +#: ../src/msw/listctrl.cpp:737 +#, c-format +msgid "Couldn't retrieve information about list control item %d." +msgstr "Nie mo¿na pobraæ informacji o elemencie listy kontroli %d." + +#: ../src/common/imagpng.cpp:338 +#: ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 +msgid "Couldn't save PNG image." +msgstr "Nie mo¿na zapisaæ obrazu PNG." + +#: ../src/mac/thread.cpp:749 +#: ../src/msw/thread.cpp:1091 +msgid "Couldn't terminate thread" +msgstr "Nie mo¿na zakoñczyæ w±tku" + +#: ../src/generic/dirdlgg.cpp:263 +msgid "Create directory" +msgstr "Tworzenie katalogu" + +#: ../src/generic/dirdlgg.cpp:103 +#: ../src/generic/filedlgg.cpp:1132 +msgid "Create new directory" +msgstr "Utwórz nowy katalog" + +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "&Wytnij" + +#: ../src/generic/filedlgg.cpp:1143 +msgid "Current directory:" +msgstr "Bie¿±cy katalog:" + +#: ../src/common/fontmap.cpp:117 +msgid "Cyrillic (ISO-8859-5)" +msgstr "Cyrylica (ISO-8859-5)" + +#: ../src/common/paper.cpp:106 +msgid "D sheet, 22 x 34 in" +msgstr "Arkusz D, 22 x 34 cali" + +#: ../src/msw/dde.cpp:594 +msgid "DDE poke request failed" +msgstr "¿±danie danych z serwera DDE nie powiod³o siê" + +#: ../src/common/imagbmp.cpp:917 +msgid "DIB Header: Encoding doesn't match bitdepth." +msgstr "Nag³ówek DIB: kodowanie nie odpowiada rozdzielczo¶ci." + +#: ../src/common/imagbmp.cpp:879 +msgid "DIB Header: Image height > 32767 pixels for file." +msgstr "DIB nag³ówek: Wysoko¶æ obrazu > 32767 pikseli." + +# dla pliku? moim zdaniem zbêdne +#: ../src/common/imagbmp.cpp:873 +msgid "DIB Header: Image width > 32767 pixels for file." +msgstr "Nag³ówek DIB: Szeroko¶æ obrazu > 32767 pikseli." + +#: ../src/common/imagbmp.cpp:893 +msgid "DIB Header: Unknown bitdepth in file." +msgstr "Nag³ówek DIB: Plik z nieznan± rozdzielczo¶ci±." + +#: ../src/common/imagbmp.cpp:903 +msgid "DIB Header: Unknown encoding in file." +msgstr "Nag³ówek DIB: Plik z nieznanym kodowaniem." + +#: ../src/common/paper.cpp:128 +msgid "DL Envelope, 110 x 220 mm" +msgstr "Koperta DL, 110 x 220 mm" + +#: ../src/generic/filedlgg.cpp:705 +msgid "Date" +msgstr "Data" + +#: ../src/generic/fontdlgg.cpp:222 +msgid "Decorative" +msgstr "Decorative" + +#: ../src/common/fontmap.cpp:392 +msgid "Default encoding" +msgstr "Kodowanie domy¶lne" + +#: ../src/unix/snglinst.cpp:269 +#, c-format +msgid "Deleted stale lock file '%s'." +msgstr "Nieaktualny plik blokuj±cy '%s' zosta³ usuniêty." + +#: ../src/msw/dialup.cpp:348 +msgid "Dial up functions are unavailable because the remote access service (RAS) is not installed on this machine. Please install it." +msgstr "Funkcje Dial up nie s± dostêpne, poniewa¿ serwis zdalnego dostêpu (RAS) nie jest zainstalowany na tej maszynie. Zainstaluj go." + +#: ../src/os2/toplevel.cpp:367 +msgid "Did you forget to include wx/os2/wx.rc in your resources?" +msgstr "Prawdopodobnie nie do³±czono (include) wx/os2/wx.rc do zasobów." + +#: ../src/generic/tipdlg.cpp:217 +msgid "Did you know..." +msgstr "Czy wiesz ¿e..." + +#: ../src/common/filefn.cpp:1279 +#, c-format +msgid "Directory '%s' couldn't be created" +msgstr "Nie mo¿na utworzyæ katalogu '%s'" + +#: ../src/mgl/dirmgl.cpp:217 +#, c-format +msgid "Directory '%s' doesn't exist!" +msgstr "Katalog '%s' nie istnieje!" + +#: ../src/generic/dirdlgg.cpp:188 +msgid "Directory does not exist" +msgstr "Katalog nie istnieje" + +#: ../src/html/helpfrm.cpp:379 +msgid "Display all index items that contain given substring. Search is case insensitive." +msgstr "Wy¶wietla wszystkie elementy indeksu zawieraj±ce podany ³añcuch. Szuka bez uwzglêdniania wielko¶ci liter." + +#: ../src/html/helpfrm.cpp:545 +msgid "Display options dialog" +msgstr "Wy¶wietl okno dialogowe opcji" + +#: ../src/msw/mimetype.cpp:682 +msgid "" +"Do you want to overwrite the command used to %s files with extension \"%s\" ?\n" +"Current value is \n" +"%s, \n" +"New value is \n" +"%s %1" +msgstr "" +"Chcesz zast±piæ polecenie u¿ywane do plików %s z rozszerzeniem \"%s\" ?\n" +"Bie¿aca warto¶æ to \n" +"%s, \n" +"Nowa warto¶æ to \n" +"%s %1" + +#: ../src/common/docview.cpp:441 +#, c-format +msgid "Do you want to save changes to document %s?" +msgstr "Chcesz zapisaæ zmiany w dokumencie %s?" + +#: ../src/html/htmlwin.cpp:314 +msgid "Done" +msgstr "Zrobione" + +#: ../src/generic/progdlgg.cpp:370 +msgid "Done." +msgstr "Zrobione." + +#: ../src/generic/fdrepdlg.cpp:157 +msgid "Down" +msgstr "W dó³" + +#: ../src/common/paper.cpp:107 +msgid "E sheet, 34 x 44 in" +msgstr "Arkusz E, 34 x 44 cale" + +#: ../src/generic/progdlgg.cpp:183 +msgid "Elapsed time : " +msgstr "Up³ynê³o ju¿ : " + +#: ../src/generic/helphtml.cpp:335 +msgid "Entries found" +msgstr "Znalezione pozycje" + +# rozszerzenie? +#: ../src/common/config.cpp:362 +#, c-format +msgid "Environment variables expansion failed: missing '%c' at position %d in '%s'." +msgstr "Rozszerzenie zmiennych ¶rodowiskowych nie powiod³o siê: zabrak³o '%c' na pozycji '%d' w '%s'." + +#: ../src/generic/dirctrlg.cpp:704 +#: ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 +#: ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 +#: ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 +#: ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 +#: ../src/generic/filedlgg.cpp:1418 +#: ../src/gtk/filedlg.cpp:80 +#: ../src/gtk/fontdlg.cpp:71 +msgid "Error" +msgstr "B³±d" + +#: ../src/unix/utilsunx.cpp:1193 +#: ../src/unix/utilsunx.cpp:1201 +msgid "Error " +msgstr "B³±d " + +#: ../src/generic/dirdlgg.cpp:203 +msgid "Error creating directory" +msgstr "B³±d przy tworzeniu katalogu" + +#: ../src/common/imagbmp.cpp:926 +msgid "Error in reading image DIB ." +msgstr "B³±d odczytu obrazu DIB." + +#: ../src/common/log.cpp:460 +msgid "Error: " +msgstr "B³±d: " + +#: ../src/common/fontmap.cpp:115 +msgid "Esperanto (ISO-8859-3)" +msgstr "Esperanto (ISO-8859-3)" + +#: ../src/generic/progdlgg.cpp:191 +msgid "Estimated time : " +msgstr "Szacowany czas : " + +#: ../src/msw/utilsexc.cpp:702 +#, c-format +msgid "Execution of command '%s' failed" +msgstr "Wykonanie polecenia '%s' nie powiod³o siê" + +#: ../src/common/paper.cpp:112 +msgid "Executive, 7 1/4 x 10 1/2 in" +msgstr "Executive, 7 1/4 x 10 1/2 cali" + +#: ../src/common/resourc2.cpp:326 +#: ../src/common/resourc2.cpp:1391 +#: ../src/common/resource.cpp:1845 +#: ../src/common/resource.cpp:1975 +#: ../src/common/resource.cpp:3059 +msgid "Expected '*' whilst parsing resource." +msgstr "Oczekiwano '*' w czasie parsowania zasobów." + +#: ../src/common/resourc2.cpp:342 +#: ../src/common/resourc2.cpp:1407 +#: ../src/common/resource.cpp:1862 +#: ../src/common/resource.cpp:1991 +#: ../src/common/resource.cpp:3076 +msgid "Expected '=' whilst parsing resource." +msgstr "Oczekiwano '=' w czasie parsowania zasobów." + +#: ../src/common/resourc2.cpp:312 +#: ../src/common/resourc2.cpp:1377 +#: ../src/common/resource.cpp:1831 +#: ../src/common/resource.cpp:1961 +#: ../src/common/resource.cpp:3045 +msgid "Expected 'char' whilst parsing resource." +msgstr "Oczekiwano 'char' w czasie parsowania zasobów." + +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "Japoñska rozszerzona strona kodowa UNIX (EUC-JP)" + +#: ../src/msw/dialup.cpp:842 +#, c-format +msgid "Failed to %s dialup connection: %s" +msgstr "Nie uda³o siê %s po³±czenia dialup: %s" + +#: ../src/unix/snglinst.cpp:243 +msgid "Failed to access lock file." +msgstr "Nie uda³o siê dostaæ do pliku blokuj±cego." + +# uchwyt chyba zbêdny +#: ../src/common/filename.cpp:176 +msgid "Failed to close file handle" +msgstr "Nie uda³o siê zamkn±æ pliku." + +#: ../src/unix/snglinst.cpp:308 +#, c-format +msgid "Failed to close lock file '%s'" +msgstr "Nie uda³o siê zamkn±æ pliku blokuj±cego '%s'" + +#: ../src/msw/clipbrd.cpp:127 +msgid "Failed to close the clipboard." +msgstr "Nie uda³o siê zamkn±æ schowka." + +#: ../src/msw/dialup.cpp:782 +msgid "Failed to connect: missing username/password." +msgstr "Nie uda³o siê po³±czyæ: brakuje u¿ytkownika/has³a." + +#: ../src/msw/dialup.cpp:728 +msgid "Failed to connect: no ISP to dial." +msgstr "Nie uda³o siê po³±czyæ: brak ISP." + +#: ../src/msw/registry.cpp:597 +#, c-format +msgid "Failed to copy registry value '%s'" +msgstr "Nie uda³o siê skopiowaæ warto¶ci rejestru '%s'" + +#: ../src/msw/registry.cpp:606 +#, c-format +msgid "Failed to copy the contents of registry key '%s' to '%s'." +msgstr "Nie uda³o siê skopiowaæ zawarto¶ci klucza rejestru '%s' do '%s'." + +#: ../src/common/filefn.cpp:1131 +#, c-format +msgid "Failed to copy the file '%s' to '%s'" +msgstr "Nie uda³o siê skopiowaæ pliku '%s' do '%s'." + +#: ../src/msw/dde.cpp:948 +msgid "Failed to create DDE string" +msgstr "Nie uda³o siê utworzyæ ³añcucha DDE" + +#: ../src/msw/mdi.cpp:425 +msgid "Failed to create MDI parent frame." +msgstr "Nie uda³o siê utworzyæ ramki rodzica MDI." + +#: ../src/msw/statbr95.cpp:110 +msgid "Failed to create a status bar." +msgstr "Nie uda³o siê utworzyæ paska statusu." + +#: ../src/common/filename.cpp:721 +msgid "Failed to create a temporary file name" +msgstr "Nie uda³o siê wygenerowaæ nazwy dla pliku tymczasowego" + +# dlaczego anonimowego? +#: ../src/msw/utilsexc.cpp:197 +msgid "Failed to create an anonymous pipe" +msgstr "Nie uda³o siê utworzyæ potoku" + +#: ../src/msw/dde.cpp:412 +#, c-format +msgid "Failed to create connection to server '%s' on topic '%s'" +msgstr "Nie uda³o siê utworzyæ po³±czenia do serwera '%s' na temat '%s'" + +#: ../src/msw/toplevel.cpp:313 +msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" +msgstr "Nie uda³o siê utworzyæ okna dialogowego. Byæ mo¿e szablon DLGTEMPLATE nie jest poprawny." + +#: ../src/unix/mimetype.cpp:372 +#, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Nie uda³o siê utworzyæ katalogu %s/.gnome" + +#: ../src/unix/mimetype.cpp:381 +#, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Nie uda³o siê utworzyæ katalogu %s/mime-info." + +#: ../src/generic/dirdlgg.cpp:201 +#, c-format +msgid "Failed to create directory '%s'\n" +"(Do you have the required permissions?)" +msgstr "Nie uda³o siê utworzyæ katalogu '%s'\n" +"(Posiadasz wymagane prawa dostêpu?)" + +#: ../src/msw/mimetype.cpp:168 +#, c-format +msgid "Failed to create registry entry for '%s' files." +msgstr "Nie uda³o siê utworzyæ pozycji rejestru dla plików '%s'." + +#: ../src/msw/fdrepdlg.cpp:442 +#, c-format +msgid "Failed to create the standard find/replace dialog (error code %d)" +msgstr "Nie uda³o siê utworzyæ standardowego okna dialogowego wyszukaj/zast±p (kod b³êdu %d)" + +#: ../src/html/winpars.cpp:468 +#, c-format +msgid "Failed to display HTML document in %s encoding" +msgstr "Nie uda³o siê wy¶wieliæ dokumentu HTML w kodowaniu %s" + +#: ../src/mac/clipbrd.cpp:168 +#: ../src/msw/clipbrd.cpp:139 +msgid "Failed to empty the clipboard." +msgstr "Nie uda³o siê opró¿niæ schowka." + +# to moja swobodna interpretacja +#: ../src/msw/dde.cpp:613 +msgid "Failed to establish an advise loop with DDE server" +msgstr "Nie uda³o siê rozpocz±æ transakcji doradzaj±cej (advise) z serwerem DDE" + +#: ../src/msw/dialup.cpp:620 +#, c-format +msgid "Failed to establish dialup connection: %s" +msgstr "Nie uda³o siê nawi±zaæ po³±czenia dialup: %s" + +#: ../src/unix/utilsunx.cpp:540 +#: ../src/unix/utilsunx.cpp:557 +#, c-format +msgid "Failed to execute '%s'\n" +msgstr "Nie uda³o siê wykonaæ '%s'\n" + +#: ../src/common/resourc2.cpp:808 +#: ../src/common/resource.cpp:2465 +#, c-format +msgid "Failed to find XBM resource %s.\n" +"Forgot to use wxResourceLoadBitmapData?" +msgstr "Nie uda³o siê odnale¼æ zasobu XBM %s.\n" +"Zapomnia³e¶ u¿yæ wxResourceLoadBitmapData?" + +#: ../src/common/resourc2.cpp:959 +#: ../src/common/resource.cpp:2619 +#, c-format +msgid "Failed to find XBM resource %s.\n" +"Forgot to use wxResourceLoadIconData?" +msgstr "Nie uda³o siê odnale¼æ zasobu XBM %s.\n" +"Zapomnia³e¶ u¿yæ wxResourceLoadIconData?" + +#: ../src/common/resourc2.cpp:823 +#: ../src/common/resource.cpp:2480 +#, c-format +msgid "Failed to find XPM resource %s.\n" +"Forgot to use wxResourceLoadBitmapData?" +msgstr "Nie uda³o siê odnale¼æ zasobu XPM %s.\n" +"Zapomnia³e¶ u¿yæ wxResourceLoadBitmapData?" + +#: ../src/msw/dialup.cpp:680 +#, c-format +msgid "Failed to get ISP names: %s" +msgstr "Nie uda³o siê usyskaæ listy ISP: %s" + +#: ../src/mac/clipbrd.cpp:119 +msgid "Failed to get clipboard data." +msgstr "Nie uda³o siê pobraæ danych ze schowka." + +#: ../src/msw/clipbrd.cpp:712 +msgid "Failed to get data from the clipboard" +msgstr "Nie uda³o siê pobraæ danych ze schowka" + +#: ../src/common/timercmn.cpp:294 +msgid "Failed to get the UTC system time." +msgstr "Nie uda³o siê pobraæ czasu systemowego UTC." + +#: ../src/common/timercmn.cpp:245 +msgid "Failed to get the local system time" +msgstr "Nie uda³o siê pobraæ lokalnego czasu systemowego" + +#: ../src/common/filefn.cpp:1512 +msgid "Failed to get the working directory" +msgstr "Nie uda³o siê uzyskaæ katalogu roboczego" + +#: ../src/univ/theme.cpp:122 +msgid "Failed to initialize GUI: no built-in themes found." +msgstr "Nie uda³o siê zainicjowaæ GUI: brak wbudowanych kompozycji." + +#: ../src/msw/helpchm.cpp:69 +msgid "Failed to initialize MS HTML Help." +msgstr "Nie uda³o siê zainicjowaæ pomocy MS HTML." + +#: ../src/msw/glcanvas.cpp:729 +msgid "Failed to initialize OpenGL" +msgstr "Nie uda³o siê zainicjowaæ OpenGL" + +# po³±czyæ? +# wyciek? +#: ../src/unix/threadpsx.cpp:887 +msgid "Failed to join a thread, potential memory leak detected - please restart the program" +msgstr "Nie uda³o po³±czyæ z w±tkiem, potencjalny wyciek pamiêci - uruchom program ponownie" + +#: ../src/msw/utils.cpp:723 +#, c-format +msgid "Failed to kill process %d" +msgstr "Nie uda³o siê zabiæ procesu %d" + +#: ../src/common/iconbndl.cpp:66 +#, c-format +msgid "Failed to load image %d from file '%s'." +msgstr "Nie uda³o siê wczytaæ obrazu %d z pliku '%s'." + +#: ../src/msw/volume.cpp:347 +msgid "Failed to load mpr.dll." +msgstr "Nie uda³o siê wczytaæ mpr.dll." + +#: ../src/common/dynlib.cpp:274 +#: ../src/common/dynload.cpp:198 +#, c-format +msgid "Failed to load shared library '%s'" +msgstr "Nie uda³o siê wczytaæ biblioteki '%s'." + +# shared -->? +#: ../src/common/dynlib.cpp:256 +#: ../src/common/dynload.cpp:127 +#, c-format +msgid "Failed to load shared library '%s' Error '%s'" +msgstr "Nie uda³o siê wczytaæ biblioteki '%s': b³±d '%s'" + +#: ../src/unix/snglinst.cpp:192 +#, c-format +msgid "Failed to lock the lock file '%s'" +msgstr "Nie uda³o siê zablokowaæ pliku blokuj±cego '%s'" + +#: ../src/common/regex.cpp:251 +#, c-format +msgid "Failed to match '%s' in regular expression: %s" +msgstr "Nie uda³o siê dopasowac '%s' w wyra¿eniu regularnym: %s" + +# nie³adne +#: ../src/common/filename.cpp:1667 +#, c-format +msgid "Failed to modify file times for '%s'" +msgstr "Nie uda³o siê zmodyfikowaæ czasów pliku '%s'" + +#: ../src/common/filename.cpp:164 +#, c-format +msgid "Failed to open '%s' for %s" +msgstr "Nie uda³o siê otworzyæ '%s' do %s" + +#: ../src/common/filename.cpp:743 +msgid "Failed to open temporary file." +msgstr "Nie uda³o siê otworzyæ pliku tymczasowego." + +#: ../src/msw/clipbrd.cpp:107 +msgid "Failed to open the clipboard." +msgstr "Nie uda³o siê otworzyæ schowka." + +#: ../src/msw/clipbrd.cpp:616 +msgid "Failed to put data on the clipboard" +msgstr "Nie uda³o siê umie¶ciæ danych w schowku" + +#: ../src/unix/snglinst.cpp:252 +msgid "Failed to read PID from lock file." +msgstr "Nie uda³o sie odczytaæ identyfikatora z pliku blokuj±cego." + +#: ../src/unix/utilsunx.cpp:635 +msgid "Failed to redirect child process input/output" +msgstr "Nie uda³o siê przekierowaæ wej¶cia/wyj¶cia procesu potomnego." + +#: ../src/msw/utilsexc.cpp:605 +msgid "Failed to redirect the child process IO" +msgstr "Nie uda³o siê przekierowaæ wej¶cia/wyj¶cia procesu potomnego" + +#: ../src/msw/dde.cpp:295 +#, c-format +msgid "Failed to register DDE server '%s'" +msgstr "Nie uda³o siê zarejestrowaæ serwera DDE '%s'" + +#: ../src/common/fontmap.cpp:715 +#, c-format +msgid "Failed to remember the encoding for the charset '%s'." +msgstr "Nie uda³o siê zapamiêtaæ kodowania dla zestawu znaków '%s'" + +#: ../src/unix/snglinst.cpp:296 +#, c-format +msgid "Failed to remove lock file '%s'" +msgstr "Nie uda³o siê usun±æ pliku blokuj±cego '%s'" + +# stale --> ? +#: ../src/unix/snglinst.cpp:262 +#, c-format +msgid "Failed to remove stale lock file '%s'." +msgstr "Nie uda³o siê usun±æ nieaktualnego pliku blokuj±cego '%s'." + +#: ../src/msw/registry.cpp:443 +#, c-format +msgid "Failed to rename registry value '%s' to '%s'." +msgstr "Nie uda³o siê zmieniæ nazwy warto¶ci rejestru '%s' do '%s'." + +#: ../src/msw/registry.cpp:543 +#, c-format +msgid "Failed to rename the registry key '%s' to '%s'." +msgstr "Nie uda³o siê zmieniæ nazwy klucza rejestru '%s' na '%s'." + +#: ../src/msw/clipbrd.cpp:505 +msgid "Failed to retrieve data from the clipboard." +msgstr "Nie uda³o siê odzyskaæ danych ze schowka." + +#: ../src/common/filename.cpp:1757 +#, c-format +msgid "Failed to retrieve file times for '%s'" +msgstr "Nie uda³o siê odczytaæ czasów pliku '%s'" + +#: ../src/msw/dialup.cpp:444 +msgid "Failed to retrieve text of RAS error message" +msgstr "Nie uda³o siê uzyskaæ tekstu komunikatu b³êdu RAS" + +#: ../src/msw/clipbrd.cpp:742 +msgid "Failed to retrieve the supported clipboard formats" +msgstr "Nie uda³o siê uzyskaæ listy formatów obs³ugiwanych przez schowek" + +#: ../src/msw/dde.cpp:658 +msgid "Failed to send DDE advise notification" +msgstr "Nie uda³o siê wys³aæ powiadomienia DDE" + +#: ../src/common/ftp.cpp:368 +#, c-format +msgid "Failed to set FTP transfer mode to %s." +msgstr "FTP: Nie uda³o siê ustawiæ trybu transmisji na '%s'." + +#: ../src/msw/clipbrd.cpp:379 +msgid "Failed to set clipboard data." +msgstr "Nie uda³o siê skorzystaæ ze schowka." + +#: ../src/common/file.cpp:526 +msgid "Failed to set temporary file permissions" +msgstr "Nie uda³o siê nadaæ praw dostêpu pliku tymczasowemu" + +#: ../src/unix/threadpsx.cpp:1241 +#: ../src/unix/threadpsx.cpp:1252 +#, c-format +msgid "Failed to set thread priority %d." +msgstr "Nie uda³o siê zmieniæ priorytetu w±tku na %d." + +#: ../src/common/fs_mem.cpp:167 +#, c-format +msgid "Failed to store image '%s' to memory VFS!" +msgstr "Nie uda³o siê od³o¿yæ obrazu '%s' do pamiêci VFS!" + +#: ../src/unix/threadpsx.cpp:1425 +msgid "Failed to terminate a thread." +msgstr "Nie uda³o siê zakoñczyæ w±tku." + +#: ../src/msw/dde.cpp:632 +msgid "Failed to terminate the advise loop with DDE server" +msgstr "Nie uda³o siê zakoñczyæ transakcji doradzaj±cej (advise) z serwerem DDE" + +#: ../src/msw/dialup.cpp:915 +#, c-format +msgid "Failed to terminate the dialup connection: %s" +msgstr "Nie uda³o siê zakoñczyæ po³±czenia dialup: %s" + +#: ../src/common/filename.cpp:1682 +#, c-format +msgid "Failed to touch the file '%s'" +msgstr "Nie uda³o siê zmieniæ czasów pliku '%s'" + +#: ../src/unix/snglinst.cpp:302 +#, c-format +msgid "Failed to unlock lock file '%s'" +msgstr "Nie uda³o siê odblokowaæ pliku blokuj±cego '%s'" + +#: ../src/msw/dde.cpp:311 +#, c-format +msgid "Failed to unregister DDE server '%s'" +msgstr "Nie uda³o siê wyrejestrowaæ serwera DDE '%s'" + +# ze ¼róde³ wynika ¿e chodzi o PID +#: ../src/unix/snglinst.cpp:173 +#, c-format +msgid "Failed to write to lock file '%s'" +msgstr "Nie uda³o siê zapisaæ identyfikatora do pliku blokuj±cego '%s'" + +#: ../src/generic/logg.cpp:379 +msgid "Fatal error" +msgstr "B³±d krytyczny " + +#: ../src/common/log.cpp:453 +msgid "Fatal error: " +msgstr "B³±d krytyczny: " + +#: ../src/mac/app.cpp:1284 +#: ../src/msw/app.cpp:1290 +msgid "Fatal error: exiting" +msgstr "B³±d krytyczny: program koñczy pracê" + +#: ../src/mgl/bitmap.cpp:544 +#, c-format +msgid "File %s does not exist." +msgstr "Plik %s nie istnieje." + +#: ../src/generic/filedlgg.cpp:1408 +#: ../src/gtk/filedlg.cpp:69 +#, c-format +msgid "File '%s' already exists, do you really want to overwrite it?" +msgstr "Plik '%s' ju¿ istnieje, naprawdê chcesz go zast±piæ?" + +#: ../src/msw/filedlg.cpp:518 +#, c-format +msgid "File '%s' already exists.\n" +"Do you want to replace it?" +msgstr "Plik '%s' ju¿ istnieje.\n" +"Chcesz go zast±piæ?" + +#: ../src/common/textcmn.cpp:158 +msgid "File couldn't be loaded." +msgstr "Plik nie mo¿e byæ wczytany." + +#: ../src/common/docview.cpp:295 +#: ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 +msgid "File error" +msgstr "B³±d plikowy" + +#: ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/filedlgg.cpp:956 +msgid "File name exists already." +msgstr "Plik o tej nazwie ju¿ istnieje." + +#: ../src/msw/filedlg.cpp:366 +#, c-format +msgid "Files (%s)|%s" +msgstr "Pliki (%s)|%s" + +#: ../src/html/helpfrm.cpp:367 +msgid "Find" +msgstr "Znajd¼" + +#: ../src/html/helpfrm.cpp:950 +msgid "Fixed font:" +msgstr "Czcionka o sta³ej szeroko¶ci:" + +#: ../src/common/paper.cpp:118 +msgid "Folio, 8 1/2 x 13 in" +msgstr "Folio, 8 1/2 x 13 in" + +#: ../src/html/helpfrm.cpp:951 +msgid "Font size:" +msgstr "Rozmiar czcionki:" + +#: ../src/unix/utilsunx.cpp:578 +msgid "Fork failed" +msgstr "Rozwidlenie nie powiod³o siê" + +#: ../src/common/dlgcmn.cpp:230 +msgid "Forward" +msgstr "Dalej" + +#: ../src/common/resourc2.cpp:295 +#: ../src/common/resourc2.cpp:1360 +#: ../src/common/resource.cpp:1814 +#: ../src/common/resource.cpp:1944 +#: ../src/common/resource.cpp:3028 +msgid "Found " +msgstr "Znaleziono " + +#: ../src/html/helpfrm.cpp:666 +#, c-format +msgid "Found %i matches" +msgstr "Znaleziono %i odpowiednik(i/ów)" + +#: ../src/generic/prntdlgg.cpp:184 +msgid "From:" +msgstr "Od:" + +# ...indeks w grafice (?) +# ideks - katalog, wska?nik? +#: ../src/common/imaggif.cpp:100 +msgid "GIF: Invalid gif index." +msgstr "GIF: Brak obrazu o podanym indeksie." + +#: ../src/common/imaggif.cpp:75 +msgid "GIF: data stream seems to be truncated." +msgstr "GIF: strumieñ daych wygl±da na obciêty." + +#: ../src/common/imaggif.cpp:59 +msgid "GIF: error in GIF image format." +msgstr "GIF: b³±d w formacie obrazu GIF." + +#: ../src/common/imaggif.cpp:62 +msgid "GIF: not enough memory." +msgstr "GIF: za ma³o pamiêci." + +#: ../src/common/imaggif.cpp:65 +msgid "GIF: unknown error!!!" +msgstr "GIF: neznany b³±d !!!" + +#: ../src/univ/themes/gtk.cpp:623 +msgid "GTK+ theme" +msgstr "Kompozycja GTK+" + +#: ../src/common/paper.cpp:142 +msgid "German Legal Fanfold, 8 1/2 x 13 in" +msgstr "Sk³adanka German Legal, 8 1/2 x 13 cali" + +#: ../src/common/paper.cpp:141 +msgid "German Std Fanfold, 8 1/2 x 12 in" +msgstr "Sk³adanka German Std, 8 1/2 x 12 cali" + +#: ../src/common/image.cpp:762 +msgid "GetUnusedColour:: No Unused Color in image " +msgstr "Brak wolnych kolorów w obrazie (GetUnusedColour)" + +#: ../src/html/helpfrm.cpp:511 +msgid "Go back" +msgstr "Id¼ wstecz" + +#: ../src/html/helpfrm.cpp:514 +msgid "Go forward" +msgstr "Id¼ dalej" + +#: ../src/html/helpfrm.cpp:519 +msgid "Go one level up in document hierarchy" +msgstr "Id¼ poziom wy¿ej w hierarchi dokumentu" + +#: ../src/generic/dirdlgg.cpp:108 +#: ../src/generic/filedlgg.cpp:1121 +msgid "Go to home directory" +msgstr "Id¼ do katalogu domowego" + +#: ../src/generic/filedlgg.cpp:1113 +msgid "Go to parent directory" +msgstr "Id¼ do katalogu nadrzêdnego" + +#: ../src/common/prntbase.cpp:378 +msgid "Goto Page" +msgstr "Skocz do strony" + +#: ../src/common/fontmap.cpp:119 +msgid "Greek (ISO-8859-7)" +msgstr "Grecki (ISO-8859-7)" + +# Kotwica? +#: ../src/html/htmlwin.cpp:354 +#, c-format +msgid "HTML anchor %s does not exist." +msgstr "HTML: kotwica %s ie istnieje." + +#: ../src/html/helpfrm.cpp:1307 +msgid "HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" +msgstr "Pliki HTML (*.htm)|*.htm|Pliki HTML (*.html)|*.html|Pliki pomocy (*.htb)|*.htb|Pliki pomocy (*.zip)|*.zip|Projekty pomocy HTML (*.hhp)|*.hhp|Wszystkie pliki (*.*)|*" + +#: ../src/common/fontmap.cpp:120 +msgid "Hebrew (ISO-8859-8)" +msgstr "Hebrajski (ISO-8859-8)" + +#: ../src/common/dlgcmn.cpp:242 +#: ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 +#: ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 +msgid "Help" +msgstr "Pomoc" + +#: ../src/html/helpfrm.cpp:944 +msgid "Help Browser Options" +msgstr "Opcje przegl±darki pomocy" + +#: ../src/generic/helphtml.cpp:334 +#: ../src/generic/helphtml.cpp:335 +msgid "Help Index" +msgstr "Spis tre¶ci" + +# pomoc do drukowania? +#: ../src/html/helpfrm.cpp:1291 +msgid "Help Printing" +msgstr "Drukowanie pomocy" + +#: ../src/html/helpctrl.cpp:49 +#, c-format +msgid "Help: %s" +msgstr "Pomoc: %s" + +#: ../src/common/imagbmp.cpp:939 +msgid "ICO: Error in reading mask DIB." +msgstr "ICO: B³±d odczytu maski DIB." + +#: ../src/common/imagbmp.cpp:1041 +#: ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 +#: ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 +#: ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 +msgid "ICO: Error writing the image file!" +msgstr "ICO: B³±d przy zapisie do pliku." + +#: ../src/common/imagbmp.cpp:1009 +msgid "ICO: Image too tall for an icon." +msgstr "ICO: Obraz jest zbyt wysoki jak na ikonê." + +#: ../src/common/imagbmp.cpp:1015 +msgid "ICO: Image too wide for an icon." +msgstr "ICO: Obraz jest zbyt szeroki jak na ikonê." + +# ...indeks w grafice (?) +# ideks - katalog, wskaŸnik? +#: ../src/common/imagbmp.cpp:1248 +msgid "ICO: Invalid icon index." +msgstr "ICO: Brak ikony o podanym indeksie.." + +#: ../src/common/imagiff.cpp:767 +msgid "IFF: data stream seems to be truncated." +msgstr "IFF: strumieñ daych wygl±da na obciêty." + +#: ../src/common/imagiff.cpp:751 +msgid "IFF: error in IFF image format." +msgstr "IFF: b³±d w formacie obrazu IFF." + +#: ../src/common/imagiff.cpp:754 +msgid "IFF: not enough memory." +msgstr "IFF: za ma³o pamiêci." + +#: ../src/common/imagiff.cpp:757 +msgid "IFF: unknown error!!!" +msgstr "IFF: nieznany b³±d !!!" + +#: ../src/common/resourc2.cpp:989 +#: ../src/common/resourc2.cpp:1000 +#: ../src/common/resource.cpp:2649 +#: ../src/common/resource.cpp:2660 +#, c-format +msgid "Icon resource specification %s not found." +msgstr "Nie znaleziono specyfikacji zasobu ikony %s." + +#: ../src/common/resource.cpp:250 +msgid "Ill-formed resource file syntax." +msgstr "¬le sformu³owana sk³adna pliku zasobów." + +#: ../src/generic/dirctrlg.cpp:704 +#: ../src/generic/filedlgg.cpp:942 +msgid "Illegal directory name." +msgstr "Niedozwolona nazwa katalogu." + +#: ../src/generic/filedlgg.cpp:1365 +msgid "Illegal file specification." +msgstr "Niedozwolona specyfikacja pliku." + +#: ../src/common/image.cpp:785 +msgid "Image and Mask have different sizes" +msgstr "Obraz i maska maj± ró¿ne rozmiary" + +#: ../src/common/image.cpp:1067 +#, c-format +msgid "Image file is not of type %d." +msgstr "Nie jest to obraz typu %d." + +#: ../src/msw/textctrl.cpp:270 +msgid "Impossible to create a rich edit control, using simple text control instead. Please reinstall riched32.dll" +msgstr "Nie jest mo¿liwe utworzenie kontrolki rich edit, u¿yj zamiast tego prostego 'text control'. Przeinstaluj riched32.dll" + +#: ../src/unix/utilsunx.cpp:390 +msgid "Impossible to get child process input" +msgstr "Nie jest mo¿liwe uzyskanie wej¶cia procesu potomnego" + +#: ../src/common/filefn.cpp:1147 +#, c-format +msgid "Impossible to get permissions for file '%s'" +msgstr "Uzyskanie praw dostêpu do pliku '%s' jest niemo¿liwe" + +#: ../src/common/filefn.cpp:1161 +#, c-format +msgid "Impossible to overwrite the file '%s'" +msgstr "Zast±pienie pliku '%s' jest niemo¿liwe" + +#: ../src/common/filefn.cpp:1212 +#, c-format +msgid "Impossible to set permissions for the file '%s'" +msgstr "Nie jest mo¿liwe nadanie praw dostêpu plikowi '%s'" + +#: ../src/html/helpfrm.cpp:392 +msgid "Index" +msgstr "Indeks" + +#: ../src/common/fontmap.cpp:124 +msgid "Indian (ISO-8859-12)" +msgstr "Hinduski (ISO-8859-12)" + +# ...indeks w grafice (?) +# ideks - katalog, wska?nik? +#: ../src/common/imagtiff.cpp:183 +msgid "Invalid TIFF image index." +msgstr "TIFF: Brak obrazu o podanym indeksie." + +# korzenia? +#: ../contrib/src/xrc/xmlres.cpp:362 +#, c-format +msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." +msgstr "Nieprawid³owy zasób XRC '%s': brakuje g³ównego wêz³a 'resource'." + +#: ../src/common/appcmn.cpp:398 +#, c-format +msgid "Invalid display mode specification '%s'." +msgstr "B³êdna specyfikacja trybu wy¶wietlania '%s'." + +# Pytanie X11 +#: ../src/x11/app.cpp:218 +#, c-format +msgid "Invalid geometry specification '%s'" +msgstr "Niedozwolona specyfikacja \"geometry\" '%s'." + +#: ../src/unix/snglinst.cpp:280 +#, c-format +msgid "Invalid lock file '%s'." +msgstr "Nieprawid³owy plik blokuj±cy '%s'." + +#: ../src/common/regex.cpp:173 +#, c-format +msgid "Invalid regular expression '%s': %s" +msgstr "Nieprawid³owe wyra¿enie regularne '%s': %s" + +#: ../src/generic/fontdlgg.cpp:228 +msgid "Italic" +msgstr "Kursywa" + +#: ../src/common/paper.cpp:137 +msgid "Italy Envelope, 110 x 230 mm" +msgstr "Koperta w³oska, 110 x 230 mm" + +#: ../src/common/imagjpeg.cpp:222 +msgid "JPEG: Couldn't load - file is probably corrupted." +msgstr "JPEG: Nie mo¿na wczytaæ - prawdopodobnie plik jest uszkodzony." + +#: ../src/common/imagjpeg.cpp:336 +msgid "JPEG: Couldn't save image." +msgstr "JPEG: Nie mo¿na zapisaæ obrazu." + +#: ../src/common/fontmap.cpp:128 +msgid "KOI8-R" +msgstr "KOI8-R" + +#: ../src/generic/prntdlgg.cpp:426 +#: ../src/generic/prntdlgg.cpp:620 +msgid "Landscape" +msgstr "Pejza¿" + +#: ../src/common/paper.cpp:110 +msgid "Ledger, 17 x 11 in" +msgstr "Ledger, 17 x 11 cali" + +#: ../src/generic/prntdlgg.cpp:632 +msgid "Left margin (mm):" +msgstr "Lewy margines (mm):" + +#: ../src/common/paper.cpp:103 +msgid "Legal, 8 1/2 x 14 in" +msgstr "Legal, 8 1/2 x 14 cali" + +#: ../src/common/paper.cpp:108 +msgid "Letter Small, 8 1/2 x 11 in" +msgstr "Ma³y list, 8 1/2 x 11 cali" + +#: ../src/common/paper.cpp:102 +msgid "Letter, 8 1/2 x 11 in" +msgstr "List, 8 1/2 x 11 cali" + +#: ../src/generic/fontdlgg.cpp:231 +msgid "Light" +msgstr "Cieñszy" + +#: ../src/generic/filedlgg.cpp:1623 +#: ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 +#: ../src/msw/filedlg.cpp:555 +#, c-format +msgid "Load %s file" +msgstr "Wczytaj plik %s" + +#: ../src/generic/filedlgg.cpp:1625 +msgid "Load file" +msgstr "Wczytaj plik" + +#: ../src/html/htmlwin.cpp:282 +msgid "Loading : " +msgstr "Wczytywanie : " + +#: ../src/common/imagpnm.cpp:72 +msgid "Loading Grey Ascii PNM image is not yet implemented." +msgstr "£adowanie obrazów Grey Ascii PNM nie jest jeszcze zaimplementowane." + +#: ../src/common/imagpnm.cpp:75 +msgid "Loading Grey Raw PNM image is not yet implemented." +msgstr "£adowanie obrazów Grey Raw PNM nie jest jeszcze zaimplementowane." + +#: ../src/generic/logg.cpp:554 +#, c-format +msgid "Log saved to the file '%s'." +msgstr "Log zosta³ zapisany do pliku '%s'." + +#: ../src/gtk/mdi.cpp:433 +msgid "MDI child" +msgstr "potomek MDI" + +#: ../src/msw/helpchm.cpp:60 +msgid "MS HTML Help functions are unavailable because the MS HTML Help library is not installed on this machine. Please install it." +msgstr "Funkcje pomocy dla MS HTML Help nie s± dostêpne, poniewa¿ biblioteka MS HTML Help nie jest zainstalowana na tej maszynie. Zainstaluj j±." + +#: ../src/univ/themes/win32.cpp:4547 +msgid "Ma&ximize" +msgstr "&Maksymalizuj" + +#: ../src/unix/mimetype.cpp:2497 +#, c-format +msgid "Mailcap file %s, line %d: incomplete entry ignored." +msgstr "Plik mailcap %s, linia %d: zignorowano niekompletny wpis." + +#: ../src/generic/fdrepdlg.cpp:152 +msgid "Match case" +msgstr "Uwzglêdniaj wielko¶æ liter" + +#: ../src/common/fs_mem.cpp:144 +#, c-format +msgid "Memory VFS already contains file '%s'!" +msgstr "Pamiêæ VFS ju¿ zawiera plik '%s'!" + +#: ../src/univ/themes/metal.cpp:174 +msgid "Metal theme" +msgstr "Kompozycja metalowa" + +#: ../src/univ/themes/win32.cpp:4545 +msgid "Mi&nimize" +msgstr "Mi&nimalizuj" + +#: ../src/unix/mimetype.cpp:2118 +#, c-format +msgid "Mime.types file %s, line %d: unterminated quoted string." +msgstr "Plik typów mime %s, linia %d: brak zamykaj±cego cudzys³owu." + +# sprawdziæ "tryb", mo¿e "nie jest", "nie" - razem czy osobno, +#: ../src/mgl/app.cpp:173 +#, c-format +msgid "Mode %ix%i-%i not available." +msgstr "Tryb %ix%i-%i nie jest dostêpny." + +#: ../src/generic/fontdlgg.cpp:223 +msgid "Modern" +msgstr "Modern" + +#: ../src/common/paper.cpp:138 +msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" +msgstr "Koperta Monarch, 3 7/8 x 7 1/2 cali" + +#: ../src/common/dlgcmn.cpp:239 +msgid "More..." +msgstr "Wiêcej..." + +#: ../src/generic/filedlgg.cpp:703 +msgid "Name" +msgstr "Nazwa" + +# To jest maska do tworzenia nazw typu NowaNaz1 itd +#: ../src/generic/dirdlgg.cpp:272 +#: ../src/generic/dirdlgg.cpp:282 +#: ../src/generic/filedlgg.cpp:817 +#: ../src/generic/filedlgg.cpp:826 +msgid "NewName" +msgstr "NowaNaz" + +#: ../src/html/helpfrm.cpp:525 +msgid "Next page" +msgstr "Nastêpna strona" + +#: ../src/common/dlgcmn.cpp:219 +#: ../src/mac/msgdlg.cpp:78 +#: ../src/motif/msgdlg.cpp:182 +msgid "No" +msgstr "Nie" + +#: ../src/common/image.cpp:793 +msgid "No Unused Color in image being masked" +msgstr "Brak wolnych kolorów w maskowanym obrazie" + +#: ../src/common/resourc2.cpp:814 +#: ../src/common/resourc2.cpp:965 +#: ../src/common/resource.cpp:2471 +#: ../src/common/resource.cpp:2625 +msgid "No XBM facility available!" +msgstr "Udogodnienia XBM nie s± dostêpne!" + +# hm +#: ../src/common/resourc2.cpp:983 +#: ../src/common/resource.cpp:2643 +msgid "No XPM icon facility available!" +msgstr "Ikony udogodnieñ XPM nie s± dostêpne!" + +#: ../src/generic/helphtml.cpp:329 +msgid "No entries found." +msgstr "Nie znaleziono pozycji." + +#: ../src/common/fontmap.cpp:906 +#, c-format +msgid "" +"No font for displaying text in encoding '%s' found,\n" +"but an alternative encoding '%s' is available.\n" +"Do you want to use this encoding (otherwise you will have to choose another one)?" +msgstr "" +"Brak czcionki do wy¶wielenia tekstu w kodowaniu '%s',\n" +"jednak dostêpne jest alternatywne kodowanie '%s'.\n" +"Chesz u¿yæ tego kodowania (mo¿esz tak¿e wybraæ inne)?" + +#: ../src/common/fontmap.cpp:911 +#, c-format +msgid "" +"No font for displaying text in encoding '%s' found.\n" +"Would you like to select a font to be used for this encoding\n" +"(otherwise the text in this encoding will not be shown correctly)?" +msgstr "" +"Brak czcionki do wy¶wielenia tekstu w kodowaniu '%s'.\n" +"Chcesz wskazaæ czcionkê do u¿ycia\n" +"(inaczej tekst mo¿e nie byæ wy¶wietlony poprawnie)?" + +#: ../contrib/src/xrc/xmlres.cpp:557 +#, c-format +msgid "No handler found for XML node '%s', class '%s'!" +msgstr "Brak procedury obs³ugi dla wêz³a XML '%s', klasa '%s'!" + +#: ../src/common/image.cpp:1049 +#: ../src/common/image.cpp:1092 +msgid "No handler found for image type." +msgstr "Brak procedury obs³ugi grafiki." + +#: ../src/common/image.cpp:1057 +#: ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 +#, c-format +msgid "No image handler for type %d defined." +msgstr "Brak procedury obs³ugi obrazów typu %d." + +#: ../src/common/image.cpp:1118 +#: ../src/common/image.cpp:1150 +#, c-format +msgid "No image handler for type %s defined." +msgstr "Brak procedury obs³ugi obrazów typu %s." + +#: ../src/html/helpfrm.cpp:655 +msgid "No matching page found yet" +msgstr "Jeszcze nie znaleziono pasuj±cej strony" + +#: ../src/common/fontmap.cpp:122 +msgid "Nordic (ISO-8859-10)" +msgstr "Nordycki (ISO-8859-10)" + +#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:230 +msgid "Normal" +msgstr "Normalny" + +#: ../src/html/helpfrm.cpp:949 +msgid "Normal font:" +msgstr "Normalna czcionka:" + +#: ../src/common/paper.cpp:122 +msgid "Note, 8 1/2 x 11 in" +msgstr "Note, 8 1/2 x 11 in" + +#: ../src/common/dlgcmn.cpp:225 +#: ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 +#: ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 +#: ../src/generic/logg.cpp:739 +#: ../src/generic/prntdlgg.cpp:452 +#: ../src/generic/proplist.cpp:499 +#: ../src/gtk/filedlg.cpp:167 +#: ../src/gtk/fontdlg.cpp:136 +#: ../src/html/helpfrm.cpp:974 +msgid "OK" +msgstr "OK" + +#: ../src/html/helpfrm.cpp:533 +#: ../src/html/helpfrm.cpp:1302 +msgid "Open HTML document" +msgstr "Otwórz dokument HTML" + +#: ../src/generic/dirctrlg.cpp:733 +#: ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 +#: ../src/generic/filedlgg.cpp:969 +msgid "Operation not permitted." +msgstr "Operacja nie jest dozwolona." + +#: ../src/common/cmdline.cpp:667 +#, c-format +msgid "Option '%s' requires a value, '=' expected." +msgstr "Opcja '%s' wymaga warto¶ci, oczekiwane: '='." + +#: ../src/common/cmdline.cpp:687 +#, c-format +msgid "Option '%s' requires a value." +msgstr "Opcja '%s' wymaga podania warto¶ci." + +#: ../src/common/cmdline.cpp:748 +#, c-format +msgid "Option '%s': '%s' cannot be converted to a date." +msgstr "Opcja '%s': nie mo¿na przekszta³ciæ '%s' na datê." + +#: ../src/generic/prntdlgg.cpp:432 +msgid "Options" +msgstr "Opcje" + +#: ../src/generic/prntdlgg.cpp:428 +#: ../src/generic/prntdlgg.cpp:621 +msgid "Orientation" +msgstr "Orientacja" + +#: ../src/common/imagpcx.cpp:455 +#: ../src/common/imagpcx.cpp:478 +msgid "PCX: couldn't allocate memory" +msgstr "PCX: Nie mo¿na przydzieliæ pamiêci." + +#: ../src/common/imagpcx.cpp:454 +msgid "PCX: image format unsupported" +msgstr "PCX: nieobs³ugiwany format obrazu." + +#: ../src/common/imagpcx.cpp:477 +msgid "PCX: invalid image" +msgstr "PCX: nieprawid³owy obraz" + +#: ../src/common/imagpcx.cpp:441 +msgid "PCX: this is not a PCX file." +msgstr "PCX: To nie jest plik w formacie PCX." + +#: ../src/common/imagpcx.cpp:457 +#: ../src/common/imagpcx.cpp:479 +msgid "PCX: unknown error !!!" +msgstr "PCX: nieznany b³±d !!!" + +#: ../src/common/imagpcx.cpp:456 +msgid "PCX: version number too low" +msgstr "PCX: zbyt niski numer wersji." + +#: ../src/common/imagpnm.cpp:96 +msgid "PNM: Couldn't allocate memory." +msgstr "PNM: Nie mo¿na przydzieliæ pamiêci." + +#: ../src/common/imagpnm.cpp:80 +msgid "PNM: File format is not recognized." +msgstr "PNM: Nieznany format pliku." + +#: ../src/common/imagpnm.cpp:112 +msgid "PNM: File seems truncated." +msgstr "PNM: Plik wygl±da na obciêty." + +#: ../src/common/prntbase.cpp:826 +#, c-format +msgid "Page %d" +msgstr "Strona %d" + +#: ../src/common/prntbase.cpp:824 +#, c-format +msgid "Page %d of %d" +msgstr "Strona %d z %d" + +#: ../src/generic/prntdlgg.cpp:587 +msgid "Page Setup" +msgstr "Ustawienia strony" + +#: ../src/generic/prntdlgg.cpp:161 +msgid "Pages" +msgstr "Strony" + +#: ../src/generic/prntdlgg.cpp:538 +#: ../src/generic/prntdlgg.cpp:609 +#: ../src/generic/prntdlgg.cpp:794 +msgid "Paper Size" +msgstr "Rozmiar papieru" + +#: ../src/generic/prntdlgg.cpp:418 +#: ../src/generic/prntdlgg.cpp:598 +#: ../src/generic/prntdlgg.cpp:790 +msgid "Paper size" +msgstr "Rozmiar papieru" + +# prawa? +#: ../src/generic/filedlgg.cpp:708 +msgid "Permissions" +msgstr "Uprawnienia" + +#: ../src/unix/utilsunx.cpp:441 +msgid "Pipe creation failed" +msgstr "Nie uda³o siê utworzyæ potoku." + +#: ../src/gtk/fontdlg.cpp:71 +msgid "Please choose a valid font." +msgstr "Proszê wybraæ poprawn± czcionkê." + +#: ../src/generic/filedlgg.cpp:1418 +#: ../src/gtk/filedlg.cpp:80 +msgid "Please choose an existing file." +msgstr "Proszê wybraæ istniej±cy plik." + +#: ../src/msw/dialup.cpp:749 +msgid "Please choose which ISP do you want to connect to" +msgstr "Wybierz ISP, z którym chcesz siê po³±czyæ" + +#: ../src/msw/listctrl.cpp:550 +#, c-format +msgid "" +"Please install a newer version of comctl32.dll\n" +"(at least version 4.70 is required but you have %d.%02d)\n" +"or this program won't operate correctly." +msgstr "" +"Proszê zainstalowaæ nowsz± wersjê bliblioteki comctl32.dll\n" +"(wymagana co najmniej 4.70, zainstalowana %d.%02d)\n" +"inaczej program nie bêdzie dzia³a³ poprawnie." + +#: ../src/common/prntbase.cpp:111 +msgid "Please wait while printing\n" +msgstr "Proszê czekaæ, trwa drukowanie\n" + +#: ../src/generic/prntdlgg.cpp:425 +#: ../src/generic/prntdlgg.cpp:619 +msgid "Portrait" +msgstr "Portret" + +#: ../src/generic/prntdlgg.cpp:268 +msgid "PostScript file" +msgstr "plik PostScript" + +#: ../src/html/helpfrm.cpp:966 +msgid "Preview:" +msgstr "Podgl±d:" + +#: ../src/html/helpfrm.cpp:522 +msgid "Previous page" +msgstr "Poprzednia strona" + +#: ../src/generic/prntdlgg.cpp:110 +#: ../src/generic/prntdlgg.cpp:124 +msgid "Print" +msgstr "Drukuj" + +#: ../src/common/docview.cpp:925 +msgid "Print Preview" +msgstr "Podgl±d wydruku" + +#: ../src/common/prntbase.cpp:781 +#: ../src/common/prntbase.cpp:805 +msgid "Print Preview Failure" +msgstr "Awaria podgl±du wydruku" + +#: ../src/generic/prntdlgg.cpp:169 +msgid "Print Range" +msgstr "Zakres wydruku" + +#: ../src/generic/prntdlgg.cpp:406 +msgid "Print Setup" +msgstr "Ustawienia wydruku" + +#: ../src/generic/prntdlgg.cpp:440 +msgid "Print in colour" +msgstr "Wydruk w kolorze" + +#: ../src/generic/prntdlgg.cpp:442 +msgid "Print spooling" +msgstr "Kolejkowanie wydruków" + +#: ../src/html/helpfrm.cpp:539 +msgid "Print this page" +msgstr "Drukuj stronê" + +#: ../src/generic/prntdlgg.cpp:147 +msgid "Print to File" +msgstr "Drukuj do pliku" + +#: ../src/common/prntbase.cpp:435 +msgid "Print..." +msgstr "Drukuj..." + +#: ../src/generic/prntdlgg.cpp:444 +msgid "Printer command:" +msgstr "Polecenie drukarki:" + +#: ../src/generic/prntdlgg.cpp:146 +msgid "Printer options" +msgstr "Opcje drukarki" + +#: ../src/generic/prntdlgg.cpp:448 +msgid "Printer options:" +msgstr "Opcje drukarki:" + +#: ../src/generic/prntdlgg.cpp:665 +msgid "Printer..." +msgstr "Drukarka..." + +#: ../src/common/prntbase.cpp:108 +#: ../src/common/prntbase.cpp:153 +msgid "Printing " +msgstr "Drukowanie " + +#: ../src/common/prntbase.cpp:125 +msgid "Printing Error" +msgstr "B³±d wydruku" + +#: ../src/generic/printps.cpp:221 +#, c-format +msgid "Printing page %d..." +msgstr "Drukowanie strony %d..." + +#: ../src/generic/printps.cpp:181 +msgid "Printing..." +msgstr "Drukowanie..." + +#: ../src/common/log.cpp:454 +msgid "Program aborted." +msgstr "Program przerwany." + +#: ../src/common/paper.cpp:119 +msgid "Quarto, 215 x 275 mm" +msgstr "Quarto, 215 x 275 mm" + +#: ../src/generic/logg.cpp:1111 +msgid "Question" +msgstr "Pytanie" + +#: ../src/common/ffile.cpp:125 +#: ../src/common/ffile.cpp:146 +#, c-format +msgid "Read error on file '%s'" +msgstr "B³±d odczytu pliku '%s'" + +#: ../contrib/src/xrc/xmlres.cpp:532 +#, c-format +msgid "Referenced object node with ref=\"%s\" not found!" +msgstr "Nie znalezione wêz³a obiektu, do którego odwo³uje siê ref=\"%s\"!" + +#: ../src/msw/registry.cpp:535 +#, c-format +msgid "Registry key '%s' already exists." +msgstr "Klucz rejestru '%s' ju¿ istnieje." + +#: ../src/msw/registry.cpp:504 +#, c-format +msgid "Registry key '%s' does not exist, cannot rename it." +msgstr "Klucz rejestru '%s' nie istnieje, nie mo¿na zmieniæ jego nazwy." + +#: ../src/msw/registry.cpp:631 +#, c-format +msgid "" +"Registry key '%s' is needed for normal system operation,\n" +"deleting it will leave your system in unusable state:\n" +"operation aborted." +msgstr "" +"Klucz rejestru '%s' jest potrzebny do normalnego funkcjonowania systemu,\n" +"usuniêcie go zdestabilizowa³oby system:\n" +"operacja zosta³a przerwana." + +#: ../src/msw/registry.cpp:435 +#, c-format +msgid "Registry value '%s' already exists." +msgstr "Warto¶æ rejestru '%s' ju¿ istnieje." + +#: ../src/generic/helphtml.cpp:334 +msgid "Relevant entries:" +msgstr "Pozycje zwi±zane:" + +#: ../src/generic/progdlgg.cpp:199 +msgid "Remaining time : " +msgstr "Zosta³o : " + +#: ../src/html/helpfrm.cpp:329 +msgid "Remove current page from bookmarks" +msgstr "Usuñ bie¿±c± stronê z listy zak³adek" + +#: ../src/generic/fdrepdlg.cpp:177 +msgid "Replace &all" +msgstr "Zast±p &wszystko" + +#: ../src/generic/fdrepdlg.cpp:129 +msgid "Replace with:" +msgstr "Zast±p przez:" + +#: ../contrib/src/xrc/xmlres.cpp:379 +msgid "Resource files must have same version number!" +msgstr "Pliki zasobów muszê mieæ zgodny numer wersji!" + +#: ../src/generic/prntdlgg.cpp:644 +msgid "Right margin (mm):" +msgstr "Prawy margines (mm):" + +#: ../src/generic/fontdlgg.cpp:221 +msgid "Roman" +msgstr "Roman" + +#: ../src/generic/filedlgg.cpp:1638 +#: ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 +#: ../src/msw/filedlg.cpp:557 +#, c-format +msgid "Save %s file" +msgstr "Zapisz plik %s" + +#: ../src/common/docview.cpp:248 +msgid "Save as" +msgstr "Zapisz jako" + +#: ../src/generic/filedlgg.cpp:1640 +msgid "Save file" +msgstr "Zapisz plik" + +#: ../src/generic/logg.cpp:487 +msgid "Save log contents to file" +msgstr "Zapisz zawarto¶æ dziennika do pliku" + +#: ../src/generic/fontdlgg.cpp:224 +msgid "Script" +msgstr "Script" + +#: ../src/html/helpfrm.cpp:413 +#: ../src/html/helpfrm.cpp:428 +msgid "Search" +msgstr "Szukaj" + +#: ../src/html/helpfrm.cpp:415 +msgid "Search contents of help book(s) for all occurences of the text you typed above" +msgstr "Przeszukuje zawarto¶æ pliku(ów) pomocy dla wszystkich wyst±pieñ wprowadzonego powy¿ej tekstu" + +#: ../src/generic/fdrepdlg.cpp:158 +msgid "Search direction" +msgstr "Kierunek szukania" + +#: ../src/generic/fdrepdlg.cpp:117 +msgid "Search for:" +msgstr "Znajd¼:" + +# spisach? +#: ../src/html/helpfrm.cpp:794 +msgid "Search in all books" +msgstr "Szukaj we wszystkich plikach pomocy" + +#: ../src/html/helpfrm.cpp:655 +msgid "Searching..." +msgstr "Wyszukiwanie..." + +#: ../src/generic/dirctrlg.cpp:551 +msgid "Sections" +msgstr "Sekcje" + +#: ../src/common/ffile.cpp:213 +#, c-format +msgid "Seek error on file '%s'" +msgstr "B³±d pozycjonowania w pliku '%s'" + +#: ../src/msw/textctrl.cpp:1685 +msgid "Select &All" +msgstr "&Zaznacz wszystko" + +#: ../src/common/docview.cpp:1540 +msgid "Select a document template" +msgstr "Wybierz szablon dokumentu" + +# perspektywê? +#: ../src/common/docview.cpp:1616 +msgid "Select a document view" +msgstr "Wybierz widok dokumentu" + +#: ../src/common/docview.cpp:1407 +#: ../src/common/docview.cpp:1458 +msgid "Select a file" +msgstr "Wybierz plik" + +#: ../src/common/cmdline.cpp:704 +#, c-format +msgid "Separator expected after the option '%s'." +msgstr "Oczekiwano separatora po opcji '%s'." + +#: ../src/common/dlgcmn.cpp:236 +msgid "Setup" +msgstr "Ustawienia" + +#: ../src/generic/prntdlgg.cpp:152 +msgid "Setup..." +msgstr "Ustawienia..." + +#: ../src/msw/dialup.cpp:520 +msgid "Several active dialup connections found, choosing one randomly." +msgstr "Znalezione kilka dostêpnych po³±czeñ dialup, zostanie u¿yte pierwsze." + +#: ../src/html/helpfrm.cpp:369 +msgid "Show all" +msgstr "Poka¿ wszystko" + +#: ../src/html/helpfrm.cpp:380 +msgid "Show all items in index" +msgstr "Poka¿ wszystkie elementy indeksu" + +#: ../src/generic/dirdlgg.cpp:135 +msgid "Show hidden directories" +msgstr "Poka¿ ukryte katalogi" + +#: ../src/generic/filedlgg.cpp:1175 +#: ../src/generic/filedlgg.cpp:1197 +msgid "Show hidden files" +msgstr "Pokazuj pliki ukryte" + +#: ../src/html/helpfrm.cpp:506 +msgid "Show/hide navigation panel" +msgstr "Poka¿/ukryj panel sterowania" + +#: ../src/generic/filedlgg.cpp:704 +msgid "Size" +msgstr "Rozmiar" + +#: ../src/generic/fontdlgg.cpp:229 +msgid "Slant" +msgstr "Pochylony" + +#: ../src/common/docview.cpp:305 +msgid "Sorry, could not open this file for saving." +msgstr "Niestety nie mo¿na otworzyæ tego pliku do zapisu." + +#: ../src/common/docview.cpp:342 +#: ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 +msgid "Sorry, could not open this file." +msgstr "Niestety nie mo¿na otworzyæ tego pliku." + +#: ../src/common/docview.cpp:312 +msgid "Sorry, could not save this file." +msgstr "Niestety nie mo¿na zapisaæ tego pliku." + +#: ../src/common/prntbase.cpp:781 +msgid "Sorry, not enough memory to create a preview." +msgstr "Niestety za ma³o pamiêci aby przygotowaæ podgl±d." + +#: ../src/common/paper.cpp:111 +msgid "Statement, 5 1/2 x 8 1/2 in" +msgstr "Statement, 5 1/2 x 8 1/2 in" + +#: ../src/generic/logg.cpp:604 +msgid "Status: " +msgstr "Status: " + +#: ../contrib/src/xrc/xmlres.cpp:632 +#, c-format +msgid "Subclass '%s' not found for resource '%s', not subclassing!" +msgstr "Nie znaleziono podklasy '%s' dla zasobu '%s', bez podklas!" + +#: ../src/generic/fontdlgg.cpp:225 +msgid "Swiss" +msgstr "Swiss" + +#: ../src/common/imagtiff.cpp:204 +#: ../src/common/imagtiff.cpp:215 +#: ../src/common/imagtiff.cpp:326 +msgid "TIFF: Couldn't allocate memory." +msgstr "TIFF: Nie mo¿na przydzieliæ pamiêci." + +#: ../src/common/imagtiff.cpp:175 +msgid "TIFF: Error loading image." +msgstr "TIFF: B³±d przy wczytywaniu obrazu." + +#: ../src/common/imagtiff.cpp:226 +msgid "TIFF: Error reading image." +msgstr "TIFF: B³±d odczytu." + +#: ../src/common/imagtiff.cpp:303 +msgid "TIFF: Error saving image." +msgstr "TIFF: Wyst±pi³ b³±d przy zapisie." + +#: ../src/common/imagtiff.cpp:350 +msgid "TIFF: Error writing image." +msgstr "TIFF: B³±d zapisu." + +#: ../src/common/paper.cpp:109 +msgid "Tabloid, 11 x 17 in" +msgstr "Tabloid, 11 x 17 in" + +#: ../src/generic/fontdlgg.cpp:226 +msgid "Teletype" +msgstr "Teletype" + +#: ../src/common/docview.cpp:1541 +msgid "Templates" +msgstr "Szablony" + +#: ../src/common/fontmap.cpp:123 +msgid "Thai (ISO-8859-11)" +msgstr "Tajski (ISO-8859-11)" + +#: ../src/common/ftp.cpp:569 +msgid "The FTP server doesn't support passive mode." +msgstr "Serwer FTP nie obs³uguje trybu pasywnego." + +#: ../src/common/fontmap.cpp:674 +#, c-format +msgid "" +"The charset '%s' is unknown. You may select\n" +"another charset to replace it with or choose\n" +"[Cancel] if it cannot be replaced" +msgstr "" +"Nieznany zestaw znaków '%s'. Mo¿esz wybraæ\n" +"inny zestaw aby go zast±piæ lub wybierz\n" +"[Anuluj] je¶li nie mo¿na go zast±piæ." + +#: ../src/msw/ole/dataobj.cpp:165 +#, c-format +msgid "The clipboard format '%d' doesn't exist." +msgstr "Format schowka '%d' nie istnieje." + +#: ../src/generic/dirdlgg.cpp:186 +#, c-format +msgid "The directory '%s' does not exist\n" +"Create it now?" +msgstr "Katalog '%s' nie istnieje\n" +"Utworzyæ go teraz?" + +#: ../src/common/docview.cpp:1804 +#, c-format +msgid "The file '%s' doesn't exist and couldn't be opened.\n" +"It has been removed from the most recently used files list." +msgstr "Plik '%s' nie istnieje i nie mo¿na go otworzyæ.\n" +"Informacja o nim zosta³a usuniêta z listy ostatnio u¿ywanych plików." + +#: ../src/common/filename.cpp:900 +#, c-format +msgid "The path '%s' contains too many \"..\"!" +msgstr "¦cie¿ka '%s' zawiera za du¿o \"..\"!" + +#: ../src/common/cmdline.cpp:846 +#, c-format +msgid "The required parameter '%s' was not specified." +msgstr "Wymagany parametr '%s' nie zosta³ podany." + +#: ../src/common/textcmn.cpp:187 +msgid "The text couldn't be saved." +msgstr "Tekst nie mo¿e byæ zapisany.." + +#: ../src/common/cmdline.cpp:825 +#, c-format +msgid "The value for the option '%s' must be specified." +msgstr "Warto¶æ opcji '%s' musi zostaæ podana." + +#: ../src/msw/dialup.cpp:408 +#, c-format +msgid "The version of remote access service (RAS) installed on this machine is tooold, please upgrade (the following required function is missing: %s)." +msgstr "Zainstalowana wersja serwiisu zdalnego dostêpu (RAS) jest zbyt stara, zainstaluj nowsz± (brakuj±ca funkcja to: %s)." + +#: ../src/html/htmprint.cpp:540 +msgid "There was a problem during page setup: you may need to set a default printer." +msgstr "Wyst±pi³ b³±d podczas konfigurowania strony: powiniene¶ okre¶liæ domy¶ln± drukarkê." + +#: ../src/msw/thread.cpp:1214 +msgid "Thread module initialization failed: can not store value in thread local storage" +msgstr "Zainicjowanie modu³u w±tków nie powiod³o siê: nie mo¿na od³o¿yæ warto¶ci do lokalnej pamiêci w±tków" + +#: ../src/unix/threadpsx.cpp:1596 +msgid "Thread module initialization failed: failed to create thread key" +msgstr "Zainicjowanie modu³u w±tków nie powiod³o siê: nie uda³o siê utworzyæ klucza w±tków" + +#: ../src/msw/thread.cpp:1202 +msgid "Thread module initialization failed: impossible to allocate index in thread local storage" +msgstr "Zainicjowanie modu³u w±tków nie powiod³o siê: nie jest mo¿liwe przydzielenie indeksu w lokalnej pamiêci w±tków." + +#: ../src/unix/threadpsx.cpp:1104 +msgid "Thread priority setting is ignored." +msgstr "Ustawienie priorytetu w±tku jest ignorowane." + +#: ../src/msw/mdi.cpp:189 +msgid "Tile &Horizontally" +msgstr "&S±siaduj±co w poziomie" + +#: ../src/msw/mdi.cpp:190 +msgid "Tile &Vertically" +msgstr "S±si&aduj±co w pionie" + +#: ../src/generic/filedlgg.cpp:706 +msgid "Time" +msgstr "Czas" + +#: ../src/generic/tipdlg.cpp:202 +msgid "Tip of the Day" +msgstr "Porada dnia" + +#: ../src/generic/tipdlg.cpp:140 +msgid "Tips not available, sorry!" +msgstr "Niestety, porady nie s± dostêpne!" + +#: ../src/generic/prntdlgg.cpp:188 +msgid "To:" +msgstr "Do:" + +#: ../src/generic/prntdlgg.cpp:633 +msgid "Top margin (mm):" +msgstr "Górny margines (mm):" + +#: ../src/common/fs_mem.cpp:202 +#, c-format +msgid "Trying to remove file '%s' from memory VFS, but it is not loaded!" +msgstr "Prób± usuniêcia pliku '%s' z pamiêci VFS, który nie zosta³ wczytany!" + +#: ../src/common/sckaddr.cpp:126 +msgid "Trying to solve a NULL hostname: giving up" +msgstr "próba u¿ycia niezdefiniowej (NULL) nazwy serwera: rezygnacja" + +#: ../src/common/fontmap.cpp:121 +msgid "Turkish (ISO-8859-9)" +msgstr "Turecki (ISO-8859-9)" + +#: ../src/common/paper.cpp:140 +msgid "US Std Fanfold, 14 7/8 x 11 in" +msgstr "Sk³adanka US Std, 14 7/8 x 11 in" + +#: ../src/html/htmlwin.cpp:270 +#, c-format +msgid "Unable to open requested HTML document: %s" +msgstr "Nie mo¿na otworzyæ wskazanego dokumentu HTML: %s" + +#: ../src/generic/fontdlgg.cpp:250 +msgid "Underline" +msgstr "Podkre¶lony" + +#: ../src/common/resourc2.cpp:305 +#: ../src/common/resourc2.cpp:319 +#: ../src/common/resourc2.cpp:335 +#: ../src/common/resourc2.cpp:349 +#: ../src/common/resourc2.cpp:1370 +#: ../src/common/resourc2.cpp:1384 +#: ../src/common/resourc2.cpp:1400 +#: ../src/common/resourc2.cpp:1414 +#: ../src/common/resource.cpp:1824 +#: ../src/common/resource.cpp:1838 +#: ../src/common/resource.cpp:1855 +#: ../src/common/resource.cpp:1869 +#: ../src/common/resource.cpp:1954 +#: ../src/common/resource.cpp:1968 +#: ../src/common/resource.cpp:1984 +#: ../src/common/resource.cpp:1998 +#: ../src/common/resource.cpp:3038 +#: ../src/common/resource.cpp:3052 +#: ../src/common/resource.cpp:3069 +#: ../src/common/resource.cpp:3083 +msgid "Unexpected end of file whilst parsing resource." +msgstr "Nieoczekiwany koniec pliku w czasie parsowania zasobów." + +#: ../src/common/cmdline.cpp:789 +#, c-format +msgid "Unexpected parameter '%s'" +msgstr "Nieoczekiwany parametr '%s'" + +#: ../src/common/fontmap.cpp:142 +msgid "Unicode 7 bit (UTF-7)" +msgstr "Unicode 7 bit (UTF-7)" + +#: ../src/common/fontmap.cpp:143 +msgid "Unicode 8 bit (UTF-8)" +msgstr "Unicode 8 bit (UTF-8)" + +#: ../src/msw/dde.cpp:1044 +#, c-format +msgid "Unknown DDE error %08x" +msgstr "Nieznany b³±d DDE %08x" + +#: ../src/common/fontmap.cpp:406 +#, c-format +msgid "Unknown encoding (%d)" +msgstr "Nieznane kodowanie (%d)" + +#: ../src/unix/mimetype.cpp:2165 +#, c-format +msgid "Unknown field in file %s, line %d: '%s'." +msgstr "Nieznane pole w pliku %s, linia %d: '%s'." + +#: ../src/common/cmdline.cpp:565 +#, c-format +msgid "Unknown long option '%s'" +msgstr "Nieznana d³uga opcja '%s'" + +#: ../src/common/cmdline.cpp:574 +#: ../src/common/cmdline.cpp:595 +#, c-format +msgid "Unknown option '%s'" +msgstr "Nieznana opcja '%s'" + +#: ../contrib/src/xrc/xmlres.cpp:701 +msgid "Unknown style flag " +msgstr "Nieznana flaga stylu" + +# inaczej +#: ../src/common/mimecmn.cpp:167 +#, c-format +msgid "Unmatched '{' in an entry for mime type %s." +msgstr "Nieodpowiedni '{' in w pozycji dla typu mime %s." + +#: ../src/common/cmdproc.cpp:238 +#: ../src/common/cmdproc.cpp:254 +#: ../src/common/cmdproc.cpp:281 +msgid "Unnamed command" +msgstr "Polecenie bez nazwy" + +#: ../src/common/resourc2.cpp:687 +#: ../src/common/resource.cpp:2343 +#, c-format +msgid "Unrecognized style %s whilst parsing resource." +msgstr "Nierozpoznany styl %s w czasie parsowania zasobów" + +#: ../src/mac/clipbrd.cpp:59 +#: ../src/msw/clipbrd.cpp:273 +#: ../src/msw/clipbrd.cpp:447 +msgid "Unsupported clipboard format." +msgstr "Nieobs³ugiwany format schowka." + +#: ../src/common/appcmn.cpp:380 +#, c-format +msgid "Unsupported theme '%s'." +msgstr "Nieobs³ugiwana kompozycja '%s'." + +#: ../src/generic/fdrepdlg.cpp:157 +msgid "Up" +msgstr "W górê" + +# hm +#: ../src/common/cmdline.cpp:916 +#, c-format +msgid "Usage: %s" +msgstr "U¿ycie: %s" + +#: ../src/common/valtext.cpp:196 +msgid "Validation conflict" +msgstr "Konflikt kontroli poprawno¶ci" + +#: ../src/generic/filedlgg.cpp:1103 +msgid "View files as a detailed view" +msgstr "Przegl±daj pliki w formie szczegó³owej listy" + +#: ../src/generic/filedlgg.cpp:1096 +msgid "View files as a list view" +msgstr "Przegl±daj pliki w formie listy" + +#: ../src/common/docview.cpp:1617 +msgid "Views" +msgstr "Widoki" + +#: ../src/unix/utilsunx.cpp:758 +msgid "Waiting for subprocess termination failed" +msgstr "Oczekiwanie na zakoñczenie podprocesu nie powiod³o siê" + +#: ../src/common/docview.cpp:438 +#: ../src/common/resource.cpp:124 +msgid "Warning" +msgstr "Ostrze¿enie" + +#: ../src/common/log.cpp:464 +msgid "Warning: " +msgstr "Ostrze¿enie: " + +#: ../src/html/htmlpars.cpp:362 +msgid "Warning: attempt to remove HTML tag handler from empty stack." +msgstr "Ostrze¿enie: próba usuniêcia procedury obs³ugi znacznika HTML z pustego stosu." + +#: ../src/common/fontmap.cpp:113 +msgid "Western European (ISO-8859-1)" +msgstr "Zachodnioeuropejski (ISO-8859-1)" + +#: ../src/common/fontmap.cpp:127 +msgid "Western European with Euro (ISO-8859-15)" +msgstr "Zachodnioeuropejski z Euro (ISO-8859-15)" + +# Wzoruje siê na s³owniku +# http://venus.ci.uw.edu.pl/~milek/slow.htm +#: ../src/generic/fdrepdlg.cpp:149 +msgid "Whole word" +msgstr "Przybli¿one" + +#: ../src/html/helpfrm.cpp:412 +msgid "Whole words only" +msgstr "Tylko ca³e s³owa" + +#: ../src/univ/themes/win32.cpp:1168 +msgid "Win32 theme" +msgstr "Kompozycja Win32" + +#: ../src/msw/utils.cpp:983 +msgid "Win32s on Windows 3.1" +msgstr "Win32s na Windows 3.1" + +#: ../src/msw/utils.cpp:1015 +msgid "Windows 3.1" +msgstr "Windows 3.1" + +#: ../src/msw/utils.cpp:987 +#, c-format +msgid "Windows 9%c" +msgstr "Windows 9%c" + +#: ../src/common/fontmap.cpp:139 +msgid "Windows Arabic (CP 1256)" +msgstr "Windows arabski (CP 1256)" + +#: ../src/common/fontmap.cpp:140 +msgid "Windows Baltic (CP 1257)" +msgstr "Windows ba³tycki (CP 1257)" + +#: ../src/common/fontmap.cpp:133 +msgid "Windows Central European (CP 1250)" +msgstr "Windows ¶rodkowoeuropejski (CP 1250)" + +#: ../src/common/fontmap.cpp:130 +msgid "Windows Chinese Simplified (CP 936)" +msgstr "Windows chiñski uproszczony (CP 936)" + +#: ../src/common/fontmap.cpp:132 +msgid "Windows Chinese Traditional (CP 950)" +msgstr "Windows chiñski tradycyjny (CP 950)" + +#: ../src/common/fontmap.cpp:134 +msgid "Windows Cyrillic (CP 1251)" +msgstr "Windows cyrylica (CP 1251)" + +#: ../src/common/fontmap.cpp:136 +msgid "Windows Greek (CP 1253)" +msgstr "Windows grecki (CP 1253)" + +#: ../src/common/fontmap.cpp:138 +msgid "Windows Hebrew (CP 1255)" +msgstr "Windows hebrajski (CP 1255)" + +#: ../src/common/fontmap.cpp:129 +msgid "Windows Japanese (CP 932)" +msgstr "Windows japoñski (CP 932)" + +#: ../src/common/fontmap.cpp:131 +msgid "Windows Korean (CP 949)" +msgstr "Windows koreañski (CP 949)" + +#: ../src/common/fontmap.cpp:137 +msgid "Windows Turkish (CP 1254)" +msgstr "Windows turecki (CP 1254)" + +#: ../src/common/fontmap.cpp:135 +msgid "Windows Western European (CP 1252)" +msgstr "Windows zachodnioeuropejski (CP 1252)" + +#: ../src/common/fontmap.cpp:141 +msgid "Windows/DOS OEM (CP 437)" +msgstr "Windows/DOS OEM (CP 437)" + +#: ../src/common/ffile.cpp:160 +#, c-format +msgid "Write error on file '%s'" +msgstr "B³±d zapisu do pliku '%s'" + +#: ../contrib/src/xrc/xml.cpp:530 +#, c-format +msgid "XML parsing error: '%s' at line %d" +msgstr "B³±d parsowania XML: '%s' w linii %d" + +# na podstawie ¼róde³ +#: ../src/common/xpmdecod.cpp:759 +msgid "XPM: Malformed pixel data!" +msgstr "XPM: niepoprawne dane obrazu!" + +#: ../src/common/xpmdecod.cpp:709 +#: ../src/common/xpmdecod.cpp:718 +#, c-format +msgid "XPM: malformed colour definition '%s'!" +msgstr "XPM: niepoprawna definicja koloru '%s'!" + +#: ../contrib/src/xrc/xmlres.cpp:470 +#, c-format +msgid "XRC resource '%s' (class '%s') not found!" +msgstr "Nie znaleziono zasobu XRC '%s' (klasa '%s')!" + +#: ../contrib/src/xrc/xmlres.cpp:861 +#: ../contrib/src/xrc/xmlres.cpp:872 +#, c-format +msgid "XRC resource: Cannot create bitmap from '%s'." +msgstr "Zasoby XRC: Nie mo¿na utworzyæ mapy bitowej z '%s'." + +#: ../contrib/src/xrc/xmlres.cpp:821 +#, c-format +msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." +msgstr "Zasoby XRC: Nieprawid³owa specyfikacja koloru '%s' dla w³a¶ciwo¶ci '%s'." + +#: ../src/common/dlgcmn.cpp:214 +#: ../src/mac/msgdlg.cpp:77 +#: ../src/motif/msgdlg.cpp:182 +msgid "Yes" +msgstr "Tak" + +#: ../src/generic/dirdlgg.cpp:262 +msgid "You cannot add a new directory to this section." +msgstr "Nie mo¿esz dodaæ nowego katalogu do tej sekcji." + +#: ../src/common/fs_zip.cpp:86 +#: ../src/common/fs_zip.cpp:125 +msgid "ZIP handler currently supports only local files!" +msgstr "Obs³ugiwane s± tylko lokalne pliki ZIP!" + +#: ../src/common/docview.cpp:1953 +msgid "[EMPTY]" +msgstr "[PUSTY]" + +#: ../src/msw/dde.cpp:1011 +msgid "a DDEML application has created a prolonged race condition." +msgstr "Aplikacja DDEML utworzy³a przed³u¿ony wy¶cig (race condition)." + +# instance --> +#: ../src/msw/dde.cpp:999 +msgid "" +"a DDEML function was called without first calling the DdeInitialize function,\n" +"or an invalid instance identifier\n" +"was passed to a DDEML function." +msgstr "" +"zosta³a wywo³ana funkcja DDEML bez wcze¶niejszego wywo³ania funkcji DdeInitialize,\n" +"lub do funkcji DDEML przes³ano\n" +"nieprawid³owy identyfikator instancji." + +#: ../src/msw/dde.cpp:1017 +msgid "a client's attempt to establish a conversation has failed." +msgstr "próba nawi±zania konwersacji przez klienta nie powiod³a siê." + +#: ../src/msw/dde.cpp:1014 +msgid "a memory allocation failed." +msgstr "przydzielenie pamiêci nie powiod³o siê." + +#: ../src/msw/dde.cpp:1008 +msgid "a parameter failed to be validated by the DDEML." +msgstr "parametr nie przeszed³ kontroli poprawno¶ci DDEML" + +#: ../src/msw/dde.cpp:990 +msgid "a request for a synchronous advise transaction has timed out." +msgstr "up³yn±³ czas oczekiwania na rozpoczêcie synchronicznej transakcji advise." + +#: ../src/msw/dde.cpp:996 +msgid "a request for a synchronous data transaction has timed out." +msgstr "up³yn±³ czas oczekiwania na rozpoczêcie synchronicznej transakcji data." + +#: ../src/msw/dde.cpp:1005 +msgid "a request for a synchronous execute transaction has timed out." +msgstr "up³yn±³ czas oczekiwania na rozpoczêcie synchronicznej transakcji execute." + +#: ../src/msw/dde.cpp:1023 +msgid "a request for a synchronous poke transaction has timed out." +msgstr "up³yn±³ czas oczekiwania na rozpoczêcie synchronicznej transakcji poke." + +#: ../src/msw/dde.cpp:1038 +msgid "a request to end an advise transaction has timed out." +msgstr "up³yn±³ czas oczekiwania na zakoñczenie trancakcji advise." + +#: ../src/msw/dde.cpp:1032 +msgid "" +"a server-side transaction was attempted on a conversation\n" +"that was terminated by the client, or the server\n" +"terminated before completing a transaction." +msgstr "" +"transakcja server-side próbowa³a kontynuowaæ konwersacjê\n" +"zakoñczon± przez klienta, lub serwer\n" +"zakoñczy³ pracê przez zakoñczeniem transakcji." + +#: ../src/msw/dde.cpp:1020 +msgid "a transaction failed." +msgstr "transakcja nie powiod³a siê." + +#: ../src/common/menucmn.cpp:99 +msgid "alt" +msgstr "alt" + +# transakcjê normalnie wykonywan± przez serwer, inaczej +#: ../src/msw/dde.cpp:1002 +msgid "" +"an application initialized as APPCLASS_MONITOR has\n" +"attempted to perform a DDE transaction,\n" +"or an application initialized as APPCMD_CLIENTONLY has \n" +"attempted to perform server transactions." +msgstr "" +"aplikacja zainicjowana jako APPCLASS_MONITOR\n" +"usi³owa³a wykonaæ transakcjê DDE,\n" +"lub aplikacja zainicjowana jako APPCMD_CLIENTONLY\n" +"usi³owa³a wykonaæ transakcjê serwera." + +#: ../src/msw/dde.cpp:1026 +msgid "an internal call to the PostMessage function has failed. " +msgstr "wewnêtrzne wywo³anie funkcji PostMessage zakoñczy³o siê niepowodzeniem" + +#: ../src/msw/dde.cpp:1035 +msgid "an internal error has occurred in the DDEML." +msgstr "wyst±pi³ wewnêtrzny b³±d w DDEML." + +#: ../src/msw/dde.cpp:1041 +msgid "" +"an invalid transaction identifier was passed to a DDEML function.\n" +"Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" +"the transaction identifier for that callback is no longer valid." +msgstr "" +"do funkcji DDEML przes³ano nieprawid³owy identyfikator transakcji.\n" +"Kiedy aplikacja koñczy po³±czenie zwrotne XTYP_XACT_COMPLETE,\n" +"identyfikator transakcji dla tego po³±czenia nie jest d³u¿ej wa¿ny." + +#: ../src/common/fileconf.cpp:1767 +#, c-format +msgid "attempt to change immutable key '%s' ignored." +msgstr "zignorowano próbê zmiany niezmiennego klucza '%s'." + +#: ../src/common/ftp.cpp:369 +msgid "binary" +msgstr "binarny" + +#: ../src/common/fontcmn.cpp:548 +msgid "bold" +msgstr "pogrubiony" + +#: ../src/common/fontcmn.cpp:472 +msgid "bold " +msgstr "pogrubiony " + +#: ../src/common/ffile.cpp:93 +#, c-format +msgid "can't close file '%s'" +msgstr "nie mo¿na zamkn±æ pliku '%s'" + +#: ../src/common/file.cpp:275 +#, c-format +msgid "can't close file descriptor %d" +msgstr "nie mo¿na zamkn±æ deskryptora pliku '%s'" + +#: ../src/common/file.cpp:553 +#, c-format +msgid "can't commit changes to file '%s'" +msgstr "nie mo¿na zatwierdziæ zmian w pliku '%s'" + +#: ../src/common/file.cpp:215 +#, c-format +msgid "can't create file '%s'" +msgstr "nie mo¿na utworzyæ pliku '%s'" + +#: ../src/common/fileconf.cpp:1078 +#, c-format +msgid "can't delete user configuration file '%s'" +msgstr "nie mo¿na usun±æ pliku konfiguracyjnego u¿ytkownika '%s'" + +#: ../src/common/file.cpp:458 +#, c-format +msgid "can't determine if the end of file is reached on descriptor %d" +msgstr "nie mo¿na okre¶liæ czy osi±gniêto koniec pliku w deskryptorze %d" + +#: ../src/common/file.cpp:424 +#, c-format +msgid "can't find length of file on file descriptor %d" +msgstr "nie mo¿na znale¼æ rozmiaru pliku w deskryptorze pliku %d" + +#: ../src/msw/utils.cpp:369 +msgid "can't find user's HOME, using current directory." +msgstr "nie mo¿na znale¼æ katalogu domowego, zostanie u¿yty bie¿±cy." + +#: ../src/common/file.cpp:338 +#, c-format +msgid "can't flush file descriptor %d" +msgstr "nie mo¿na opró¿niæ deskryptora pliku %d" + +#: ../src/common/file.cpp:392 +#, c-format +msgid "can't get seek position on file descriptor %d" +msgstr "nie mo¿na odczytaæ bie¿±cej pozycji w deskryptorze pliku %d" + +#: ../src/common/fontmap.cpp:807 +msgid "can't load any font, aborting" +msgstr "nie mo¿na za³adowaæ ¿adnej czcionki, program koñczy pracê" + +#: ../src/common/ffile.cpp:77 +#: ../src/common/file.cpp:261 +#, c-format +msgid "can't open file '%s'" +msgstr "nie mo¿na otworzyæ pliku '%s'" + +# globalnej? +#: ../src/common/fileconf.cpp:397 +#, c-format +msgid "can't open global configuration file '%s'." +msgstr "nie mo¿na otworzyæ globalnego pliku konfiguracji '%s'." + +#: ../src/common/fileconf.cpp:416 +#, c-format +msgid "can't open user configuration file '%s'." +msgstr "nie mo¿na otworzyæ pliku konfiguracyjnego u¿ytkownika '%s'." + +#: ../src/common/fileconf.cpp:949 +msgid "can't open user configuration file." +msgstr "nie mo¿na otworzyæ pliku konfiguracyjnego u¿ytkownika." + +#: ../src/common/file.cpp:301 +#, c-format +msgid "can't read from file descriptor %d" +msgstr "nie mo¿na czytaæ z deskryptora pliku %d" + +#: ../src/common/file.cpp:548 +#, c-format +msgid "can't remove file '%s'" +msgstr "nie mo¿na usun±æ pliku '%s'" + +#: ../src/common/file.cpp:564 +#, c-format +msgid "can't remove temporary file '%s'" +msgstr "nie mo¿na usun±æ tymczasowego pliku '%s'" + +#: ../src/common/file.cpp:378 +#, c-format +msgid "can't seek on file descriptor %d" +msgstr "nie mo¿na ustawiæ pozycji w deskryptorze pliku %d" + +#: ../src/common/textfile.cpp:196 +#, c-format +msgid "can't write buffer '%s' to disk." +msgstr "nie mo¿na zapisaæ bufora '%s' na dysk." + +#: ../src/common/file.cpp:323 +#, c-format +msgid "can't write to file descriptor %d" +msgstr "nie mo¿na zapisaæ do deskryptora pliku %d" + +#: ../src/common/fileconf.cpp:965 +msgid "can't write user configuration file." +msgstr "nie mo¿na zapisaæ pliku konfiguracyjnego u¿ytkownika." + +# catalog file --> ? +# domain --> ? +#: ../src/common/intl.cpp:364 +#, c-format +msgid "catalog file for domain '%s' not found." +msgstr "Nie znaleziono pliku katalogowego dla domeny '%s'." + +#: ../src/common/menucmn.cpp:97 +msgid "ctrl" +msgstr "ctrl" + +#: ../src/common/cmdline.cpp:1056 +msgid "date" +msgstr "data" + +#: ../src/common/fontmap.cpp:416 +msgid "default" +msgstr "domy¶lny" + +#: ../src/common/datetime.cpp:3363 +msgid "eighteenth" +msgstr "osiemnasty" + +#: ../src/common/datetime.cpp:3353 +msgid "eighth" +msgstr "ósmy" + +#: ../src/common/datetime.cpp:3356 +msgid "eleventh" +msgstr "jedenasty" + +#: ../src/common/fileconf.cpp:1753 +#, c-format +msgid "entry '%s' appears more than once in group '%s'" +msgstr "pozycja '%s' wystêpuje w grupie '%s' wiêcej ni¿ jeden raz" + +# ustaliæ? ustanowiæ? +#: ../src/msw/dialup.cpp:843 +msgid "establish" +msgstr "nawi±zaæ" + +# nie do koñca... +#: ../src/common/ffile.cpp:174 +#, c-format +msgid "failed to flush the file '%s'" +msgstr "nie uda³o siê opró¿niæ (flush) pliku '%s'" + +#: ../src/common/datetime.cpp:3360 +msgid "fifteenth" +msgstr "piêtnasty" + +#: ../src/common/datetime.cpp:3350 +msgid "fifth" +msgstr "pi±ty" + +#: ../src/common/fileconf.cpp:626 +#, c-format +msgid "file '%s', line %d: '%s' ignored after group header." +msgstr "plik '%s', linia %d: zignorowano '%s' po nag³ówku grupy." + +#: ../src/common/fileconf.cpp:655 +#, c-format +msgid "file '%s', line %d: '=' expected." +msgstr "plik '%s', linia %d: oczekiwano '='." + +#: ../src/common/fileconf.cpp:681 +#, c-format +msgid "file '%s', line %d: key '%s' was first found at line %d." +msgstr "plik '%s', linia %d: klucz '%s' wyst±pi³ po raz pierwszy w lini %d." + +# niezmiennego? +#: ../src/common/fileconf.cpp:671 +#, c-format +msgid "file '%s', line %d: value for immutable key '%s' ignored." +msgstr "plik '%s', linia %d: zignorowano warto¶æ dla niezmiennego klucza '%s'." + +#: ../src/common/fileconf.cpp:594 +#, c-format +msgid "file '%s': unexpected character %c at line %d." +msgstr "plik '%s': nieoczekiwany znak %c w lini %d." + +#: ../src/common/datetime.cpp:3346 +msgid "first" +msgstr "pierwszy" + +#: ../src/common/datetime.cpp:3359 +msgid "fourteenth" +msgstr "czternasty" + +#: ../src/common/datetime.cpp:3349 +msgid "fourth" +msgstr "czwarty" + +# inaczej +#: ../src/common/appcmn.cpp:319 +msgid "generate verbose log messages" +msgstr "generuje listê komunikatów" + +#: ../src/common/timercmn.cpp:290 +msgid "gmtime() failed" +msgstr "gmtime() zwróci³o b³±d" + +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "Niew³a¶ciwy selektor %d paska przewijania" + +#: ../src/msw/dialup.cpp:843 +msgid "initiate" +msgstr "zainicjowaæ" + +#: ../src/common/file.cpp:462 +msgid "invalid eof() return value." +msgstr "b³êdna warto¶æ znacznika koñca pliku." + +#: ../src/generic/logg.cpp:1125 +msgid "invalid message box return value" +msgstr "warto¶æ zwrócona przez okno komunikatu jest nieprawid³owa" + +#: ../src/common/fontcmn.cpp:488 +#: ../src/common/fontcmn.cpp:552 +msgid "italic" +msgstr "kursywa" + +#: ../src/common/fontcmn.cpp:544 +msgid "light" +msgstr "lekki" + +#: ../src/common/fontcmn.cpp:468 +msgid "light " +msgstr "lekki " + +#: ../src/common/intl.cpp:615 +#, c-format +msgid "locale '%s' can not be set." +msgstr "lokalizacja '%s' nie mo¿e byæ ustawiona." + +# w ¶cie¿ce - nie³adne +#: ../src/common/intl.cpp:359 +#, c-format +msgid "looking for catalog '%s' in path '%s'." +msgstr "szukanie katalogu '%s' w ¶cie¿ce '%s'." + +#: ../src/common/datetime.cpp:3511 +msgid "midnight" +msgstr "pó³noc" + +#: ../src/common/timercmn.cpp:286 +msgid "mktime() failed" +msgstr "mktime() zwróci³o b³±d" + +#: ../src/common/datetime.cpp:3364 +msgid "nineteenth" +msgstr "dziewiêtnasty" + +#: ../src/common/datetime.cpp:3354 +msgid "ninth" +msgstr "dziewi±ty" + +#: ../src/msw/dde.cpp:986 +msgid "no DDE error." +msgstr "bez b³êdu DDE." + +#: ../src/html/helpdata.cpp:574 +msgid "noname" +msgstr "beznazwy" + +#: ../src/common/datetime.cpp:3510 +msgid "noon" +msgstr "po³udnie" + +#: ../src/common/cmdline.cpp:1052 +msgid "num" +msgstr "liczba" + +#: ../src/common/filename.cpp:166 +msgid "reading" +msgstr "odczytu" + +#: ../src/msw/dde.cpp:1029 +msgid "reentrancy problem." +msgstr "problem wspó³bie¿no¶ci" + +#: ../src/common/datetime.cpp:3347 +msgid "second" +msgstr "drugi" + +#: ../src/common/datetime.cpp:3362 +msgid "seventeenth" +msgstr "siedemnasty" + +#: ../src/common/datetime.cpp:3352 +msgid "seventh" +msgstr "siódmy" + +#: ../src/common/menucmn.cpp:101 +msgid "shift" +msgstr "shift" + +#: ../src/common/appcmn.cpp:309 +msgid "show this help message" +msgstr "wy¶wietla ten komunikat" + +#: ../src/common/datetime.cpp:3361 +msgid "sixteenth" +msgstr "szesnasty" + +#: ../src/common/datetime.cpp:3351 +msgid "sixth" +msgstr "szósty" + +#: ../src/common/appcmn.cpp:344 +msgid "specify display mode to use (e.g. 640x480-16)" +msgstr "okre¶la tryb wy¶wietlania, który ma byæ u¿yty (np. 640x480-16)" + +#: ../src/common/appcmn.cpp:330 +msgid "specify the theme to use" +msgstr "okre¶la kompozycjê, który ma byæ u¿yta" + +#: ../src/common/cmdline.cpp:1048 +msgid "str" +msgstr "tekst" + +#: ../src/common/datetime.cpp:3355 +msgid "tenth" +msgstr "dziesi±ty" + +# niezrêczne +#: ../src/msw/dde.cpp:993 +msgid "the response to the transaction caused the DDE_FBUSY bit to be set." +msgstr "odpowied¼ na transakcjê spowodowa³a ustawienie bitu DDE_FBUSY." + +#: ../src/common/datetime.cpp:3348 +msgid "third" +msgstr "trzeci" + +#: ../src/common/datetime.cpp:3358 +msgid "thirteenth" +msgstr "trzynasty" + +#: ../src/common/datetime.cpp:3190 +msgid "today" +msgstr "dzi¶" + +#: ../src/common/datetime.cpp:3192 +msgid "tomorrow" +msgstr "jutro" + +#: ../src/common/datetime.cpp:3357 +msgid "twelfth" +msgstr "dwunasty" + +#: ../src/common/datetime.cpp:3365 +msgid "twentieth" +msgstr "dwudziesty" + +#: ../src/common/fontcmn.cpp:540 +msgid "underlined" +msgstr "podkre¶lony" + +#: ../src/common/fontcmn.cpp:455 +msgid "underlined " +msgstr "podkre¶lony " + +#: ../src/common/fileconf.cpp:1887 +#, c-format +msgid "unexpected \" at position %d in '%s'." +msgstr "nieoczekiwany \" na pozycji %d w '%s'." + +#: ../src/generic/progdlgg.cpp:282 +msgid "unknown" +msgstr "nieznany" + +#: ../src/common/regex.cpp:144 +msgid "unknown error" +msgstr "nieznany b³±d" + +#: ../src/msw/dialup.cpp:447 +#, c-format +msgid "unknown error (error code %08x)." +msgstr "nieznany b³±d (kod b³êdu %08x)." + +#: ../src/common/textbuf.cpp:229 +msgid "unknown line terminator" +msgstr "nieznany znacznik koñca linii" + +#: ../src/common/file.cpp:361 +msgid "unknown seek origin" +msgstr "nieznany odno¶nik pozycjonowania" + +#: ../src/common/fontmap.cpp:430 +#, c-format +msgid "unknown-%d" +msgstr "nieznany-%d" + +#: ../src/common/docview.cpp:407 +msgid "unnamed" +msgstr "beznazwy" + +#: ../src/common/docview.cpp:1224 +#, c-format +msgid "unnamed%d" +msgstr "beznazwy%d" + +#: ../src/common/intl.cpp:369 +#, c-format +msgid "using catalog '%s' from '%s'." +msgstr "u¿ycie katalogu '%s' z '%s'." + +#: ../src/common/filename.cpp:166 +msgid "writing" +msgstr "zapisu" + +#: ../src/common/dynlib.cpp:336 +#, c-format +msgid "wxDllLoader failed to GetSymbol '%s'" +msgstr "GetSymbol (wxDllLoader) nie zwróci³ wska¼nika do '%s'" + +#: ../src/common/dynload.cpp:282 +#, c-format +msgid "wxDynamicLibrary failed to GetSymbol '%s'" +msgstr "GetSymbol (wxDynamicLibtary) nie zwróci³ wska¼nika do '%s'" + +#: ../src/common/timercmn.cpp:335 +msgid "wxGetTimeOfDay failed." +msgstr "wxGetTimeOfDay zwróci³o b³±d." + +#: ../src/common/socket.cpp:394 +#: ../src/common/socket.cpp:448 +msgid "wxSocket: invalid signature in ReadMsg." +msgstr "wxSocket: b³êdna sygnatura w ReadMsg." + +#: ../src/common/socket.cpp:975 +msgid "wxSocket: unknown event!." +msgstr "wxSocket: nieznane zdarzenie!" + +#: ../src/motif/app.cpp:586 +#, c-format +msgid "wxWindows could not open display for '%s': exiting." +msgstr "Nie mo¿na zainicjowaæ wy¶wietlania dla '%s': program koñczy pracê." + +#: ../src/x11/app.cpp:245 +msgid "wxWindows could not open display. Exiting." +msgstr "Nie mo¿na zainicjowaæ wy¶wietlania. Program koñczy pracê." + +#: ../src/common/datetime.cpp:3191 +msgid "yesterday" +msgstr "wczoraj" + diff --git a/locale/ru.po b/locale/ru.po index d2585d04be..2c53eb1e41 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows-2.2.1\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2000-08-10 16:09+0200\n" "Last-Translator: Roman Rolinsky , Vadim Zeitlin " "\n" @@ -15,18 +15,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (ÏÛÉÂËÁ %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr "ðÒÅÄ-ÏÓÍÏÔÒ ÐÅÞÁÔÉ" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " ÂÁÊÔ " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Envelope, 4 1/8 x 9 1/2 ÄÀÊÍ" @@ -54,23 +50,23 @@ msgstr "#9 Envelope, 3 7/8 x 8 7/8 msgid "#define %s must be an integer." msgstr "#define %s ÄÏÌÖÎÏ ÂÙÔØ ÞÉÓÌÏÍ." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i ÉÚ %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (ÉÌÉ %s)" @@ -90,6 +86,11 @@ msgstr " msgid "%s Warning" msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ %s" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -111,7 +112,7 @@ msgstr "%s: msgid "&Arrange Icons" msgstr "" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "&ïÔÍÅÎÁ" @@ -119,10 +120,19 @@ msgstr "& msgid "&Cascade" msgstr "" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&úÁËÒÙÔØ" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "ôÅÌÅÔÁÊÐ" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&äÅÔÁÌÉ" @@ -131,11 +141,11 @@ msgstr "& msgid "&Find" msgstr "&îÁÊÔÉ" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&úÁ×ÅÒÛÉÔØ" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "&ðÏÍÏÝØ" @@ -147,24 +157,30 @@ msgstr "& msgid "&Move" msgstr "" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&óÌÅÄÕÀÝÉÊ" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&óÌÅÄÕÀÝÉÊ >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&óÌÅÄÕÀÝÁÑ ÐÏÄÓËÁÚËÁ" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "ÄÁÔÁ" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 #, fuzzy msgid "&Previous" msgstr "ðÒÅÄÙÄÕÝÁÑ ÓÔÒÁÎÉÃÁ" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&÷ÏÓÓÔÁÎÏ×ÉÔØ" @@ -184,7 +200,7 @@ msgstr "& msgid "&Save..." msgstr "&óÏÈÒÁÎÉÔØ..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&ðÏËÁÚÙ×ÁÔØ ÐÏÄÓËÁÚËÉ ÐÒÉ ÓÔÁÒÔÅ" @@ -192,7 +208,7 @@ msgstr "& msgid "&Size" msgstr "&òÁÚÍÅÒ" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "ï&ÔÍÅÎÉÔØ" @@ -200,11 +216,13 @@ msgstr " msgid "&Undo " msgstr "ï&ÔÍÅÎÉÔØ " -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&ïËÎÏ" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' ÓÏÄÅÒÖÉÔ ÌÉÛÎÉÅ '..', ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÏ." @@ -215,7 +233,7 @@ msgstr "'%s' msgid "'%s' is invalid" msgstr "'%s' ÎÅÄÏÐÕÓÔÉÍÏ" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' - ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ×ÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ÏÐÃÉÉ '%s'." @@ -250,12 +268,12 @@ msgstr "'%s' msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' ÄÏÌÖÎÏ ÓÏÄÅÒÖÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌÙ ÁÌÆÁ×ÉÔÁ ÉÌÉ ÃÉÆÒÙ." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(ðÏÍÏÝØ)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(ÚÁËÌÁÄËÉ)" @@ -269,11 +287,11 @@ msgstr "" ", ÏÖÉÄÁÌÓÑ static, #include ÉÌÉ #define\n" "×Ï ×ÒÅÍÑ ÓÉÎÔÁËÓÉÞÅÓËÏÇÏ ÁÎÁÌÉÚÁ." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -289,51 +307,44 @@ msgstr "11 x 17 msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Envelope, 3 5/8 x 6 1/2 ÄÀÊÍ" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": ÆÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": ÎÅÉÚ×ÅÓÔÎÙÊ ÎÁÂÏÒ ÓÉÍ×ÏÌÏ×" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": ÎÅÉÚ×ÅÓÔÎÁÑ ËÏÄÉÒÏ×ËÁ" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &îÁÚÁÄ" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "
    " msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Normal face
    (and underlined. Italic face. " "Bold face. Bold italic face.
    font size " @@ -341,11 +352,11 @@ msgstr "" "+0
    font size +1
    font size " "+2
    font size +3
    font size " "+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4" #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -371,7 +382,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "äÏÂÁ×ÉÔØ ÔÅËÕÝÕÀ ÓÔÒÁÎÉÃÕ Ë ÚÁËÌÁÄËÁÍ" @@ -388,10 +399,15 @@ msgstr " msgid "All" msgstr "÷ÓÅ" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "÷ÓÅ ÆÁÊÌÙ (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "÷ÓÅ ÆÁÊÌÙ (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "õÖÅ Ú×ÏÎÉÍ ISP." @@ -401,7 +417,7 @@ msgstr " msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "äÏÂÁ×ÉÔØ × ÆÁÊÌ ÖÕÒÎÁÌÁ '%s' (×ÙÂÏÒ [îÅÔ] ÐÅÒÅÐÉÛÅÔ ÅÇÏ)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabic (ISO-8859-6)" @@ -425,7 +441,7 @@ msgstr " msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 Envelope, 176 x 125 ÍÍ" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." msgstr "BMP: îÅ×ÏÚÍÏÖÎÏ ÒÁÓÐÒÅÄÅÌÉÔØ ÐÁÍÑÔØ." @@ -456,15 +472,15 @@ msgstr "BMP: msgid "BMP: wxImage doesn't have own wxPalette." msgstr "" -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "îÁÚÁÄ" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltic (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltic (old) (ISO-8859-4)" @@ -473,7 +489,7 @@ msgstr "Baltic (old) (ISO-8859-4)" msgid "Bitmap resource specification %s not found." msgstr "óÐÅÃÉÆÉËÁÃÉÑ ÒÅÓÕÒÓÁ bitmap %s ÎÅ ÎÁÊÄÅÎÁ." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "öÉÒÎÙÊ" @@ -509,12 +525,12 @@ msgstr "C6 Envelope, 114 x 162 msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Envelope, 114 x 229 ÍÍ" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, fuzzy, c-format msgid "Can not enumerate files '%s'" msgstr "îÅ ÍÏÇÕ ÐÏÄÓÞÉÔÁÔØ ÆÁÊÌÙ × ËÁÔÁÌÏÇÅ '%s'" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "îÅ ÍÏÇÕ ÐÏÄÓÞÉÔÁÔØ ÆÁÊÌÙ × ËÁÔÁÌÏÇÅ '%s'" @@ -541,7 +557,7 @@ msgstr " msgid "Can't &Undo " msgstr "îÅ ÍÏÇÕ ï&ÔÍÅÎÉÔØ " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "îÅ ÍÏÇÕ ÐÒÏ×ÅÒÉÔØ ÆÏÒÍÁÔ ÉÚÏÂÒÁÖÅÎÉÑ ÆÁÊÌÁ '%s': ÆÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ." @@ -556,17 +572,17 @@ msgstr " msgid "Can't copy values of unsupported type %d." msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÚÎÁÞÅÎÉÅ ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÏÇÏ ÔÉÐÁ %d." -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 #, fuzzy msgid "Can't create dialog using memory template" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ '%s'" -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, fuzzy, c-format msgid "Can't create dialog using template '%ul'" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ '%s'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ listview control, ÐÒÏ×ÅÒØÔÅ ÕÓÔÁÎÏ×ËÕ comctl32.dll." @@ -579,7 +595,7 @@ msgstr " msgid "Can't create thread" msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÎÉÔØ" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏËÎÏ ËÌÁÓÓÁ %s" @@ -667,62 +683,61 @@ msgstr " msgid "Can't set value of '%s'" msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÚÎÁÞÅÎÉÅ '%s'" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "ïÔÍÅÎÁ" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, fuzzy, c-format msgid "Cannot convert from encoding '%s'!" msgstr "îÅÏÖÉÄÁÎÎÁÑ ËÏÄÉÒÏ×ËÁ (%d)" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÅÅ ÍÏÄÅÍÎÏÅ ÐÏÄÓÏÅÄÉÎÅÎÉÅ: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, fuzzy, c-format msgid "Cannot find container for unknown control '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÅÅ ÍÏÄÅÍÎÏÅ ÐÏÄÓÏÅÄÉÎÅÎÉÅ: %s" -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, fuzzy, c-format msgid "Cannot find font node '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ URL '%s'" -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "æÁÊÌ Ó ÁÄÒÅÓÎÏÊ ËÎÉÖËÏÊ ÎÅ ÎÁÊÄÅÎ" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÉÎÔÅÒ×ÁÌ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ ÒÁÓÐÏÒÑÄËÁ %d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÉÍÑ ÈÏÓÔÁ" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÏÆÉÃÉÁÌØÎÏÅ ÉÍÑ ÈÏÓÔÁ" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏ×ÅÓÉÔØ ÔÒÕÂËÕ - ÎÅÔ ÐÏÄÓÏÅÄÉÎÅÎÉÑ." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ OLE" @@ -731,32 +746,32 @@ msgstr " msgid "Cannot initialize SciTech MGL!" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ OLE" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 #, fuzzy msgid "Cannot initialize display." msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ OLE" -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, c-format msgid "Cannot load icon from '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÐÉËÔÏÇÒÁÍÍÕ ÉÚ '%s'." -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÒÅÓÕÒÓÙ ÉÚ ÆÁÊÌÁ '%s'." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ HTML ÄÏËÕÍÅÎÔ: %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÎÉÇÕ ÐÏÍÏÝÉ HTML: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ URL '%s'" @@ -766,61 +781,61 @@ msgstr " msgid "Cannot open contents file: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÓÏÄÅÒÖÁÎÉÑ: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ '%s'." -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÄÌÑ ÐÅÞÁÔÉ × PostScript!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÉÎÄÅËÓÁ: %s" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, fuzzy, c-format msgid "Cannot parse coordinates from '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÓÏÄÅÒÖÁÎÉÑ: %s" -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, fuzzy, c-format msgid "Cannot parse dimension from '%s'." msgstr "îÅ ÍÏÇÕ ÐÏÄÓÞÉÔÁÔØ ÆÁÊÌÙ × ËÁÔÁÌÏÇÅ '%s'" -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÐÅÞÁÔÁÔØ ÐÕÓÔÕÀ ÓÔÒÁÎÉÃÕ." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, fuzzy, c-format msgid "Cannot read typename from '%s'!" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÓÏÄÅÒÖÁÎÉÑ: %s" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚ×ÌÅÞØ ÒÁÓÐÏÒÑÄÏË ÎÉÔÉ." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÔÁÒÔÏ×ÁÔØ ÎÉÔØ: ÏÛÉÂËÁ ÚÁÐÉÓÉ TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "õÞÅÔ ÒÅÇÉÓÔÒÁ" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 #, fuzzy msgid "Celtic (ISO-8859-14)" msgstr "Baltic (ISO-8859-13)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "Central European (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "÷ÙÂÅÒÉÔÅ ÐÏÄÓÏÅÄÉÎÅÎÉÑ" @@ -828,11 +843,16 @@ msgstr " msgid "Choose font" msgstr "÷ÙÂÅÒÉÔÅ ÛÒÉÆÔ" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "úÁËÒÙÔØ" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "ïÞÉÓÔÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÖÕÒÎÁÌÁ" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "úÁËÒÙÔØ" @@ -841,24 +861,29 @@ msgstr " msgid "Close\tAlt-F4" msgstr "" +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "úÁËÒÙÔØ" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "úÁËÒÙÔØ ÜÔÏ ÏËÎÏ" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "ëÏÍÐØÀÔÅÒ" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "éÍÑ ÐÏÌÑ × ÆÁÊÌÅ ËÏÎÆÉÇÕÒÁÃÉÉ ÎÅ ÍÏÖÅÔ ÎÁÞÉÎÁÔØÓÑ Ó '%c'." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "ðÏÄÔ×ÅÒÄÉÔØ" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -866,13 +891,13 @@ msgstr "" msgid "Connecting..." msgstr "óÏÅÄÉÎÅÎÉÅ..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "óÏÄÅÒÖÁÎÉÅ" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "" #: ../src/generic/prntdlgg.cpp:193 @@ -889,7 +914,7 @@ msgstr " msgid "Could not find tab for id" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ tab ÄÌÑ id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ Rich Edit DLL '%s'" @@ -913,19 +938,19 @@ msgstr "" "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÙÓËÁÔØ ÍÅÎÀ id '%s'. úÁÍÅÎÉÔÅ ÎÁ (ÎÅÎÕÌÅ×ÏÅ) ÃÅÌÏÅ ÞÉÓÌÏ\n" "ÉÌÉ ÐÒÅÄÏÓÔÁרÔÅ #define (ÓÍ. ÒÕËÏ×ÏÄÓÔ×Ï ÄÌÑ ÐÒÉÍÅÒÏ×)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÞÁÔØ ÐÒÅÄ-ÏÓÍÏÔÒ ÄÏËÕÍÅÎÔÁ." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÞÁÔØ ÐÅÞÁÔØ." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÄÁÔØ ÄÁÎÎÙÅ × ÏËÎÏ" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -939,7 +964,7 @@ msgstr " msgid "Couldn't create cursor." msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÕÒÓÏÒ" -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÓÉÍ×ÏÌ '%s' × ÄÉÎÁÍÉÞÅÓËÏÊ ÂÉÂÌÉÏÔÅËÅ" @@ -948,24 +973,24 @@ msgstr " msgid "Couldn't get the current thread pointer" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÕËÁÚÁÔÅÌØ ÎÁ ÔÅËÕÝÕÀ ÎÉÔØ" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ PNG - ×ÏÚÍÏÖÎÏ ÆÁÊÌ ÐÏ×ÒÅÖÄÅÎ ÉÌÉ " "ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÆÏÒÍÁÔ '%s'" -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚ×ÌÅÞØ ÉÎÆÏÒÍÁÃÉÀ Ï ÜÌÅÍÅÎÔÅ ÓÐÉÓËÁ %d." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ PNG." @@ -977,15 +1002,19 @@ msgstr " msgid "Create directory" msgstr "óÏÚÄÁÔØ ËÁÔÁÌÏÇ" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "óÏÚÄÁÔØ ÎÏ×ÙÊ ËÁÔÁÌÏÇ" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "ôÅËÕÝÉÊ ËÁÔÁÌÏÇ:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 #, fuzzy msgid "Cyrillic (ISO-8859-5)" msgstr "Baltic (ISO-8859-13)" @@ -994,36 +1023,31 @@ msgstr "Baltic (ISO-8859-13)" msgid "D sheet, 22 x 34 in" msgstr "ìÉÓÔ D, 22 x 34 ÄÀÊÍ" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ DDE" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: ðÏËÁ ÎÅ×ÏÚÍÏÖÎÏ ÒÁÂÏÔÁÔØ Ó 4-ÂÉÔÎÏÊ ËÏÄÉÒÏ×ËÏÊ." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 #, fuzzy msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "BMP: ëÏÄÉÒÏ×ËÁ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÇÌÕÂÉÎÅ ÂÉÔÏ×." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 #, fuzzy msgid "DIB Header: Image height > 32767 pixels for file." msgstr "BMP: ÷ÙÓÏÔÁ ÆÁÊÌÁ ÉÚÏÂÒÁÖÅÎÉÑ > 32767 ÐÉËÓÅÌÏ×." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 #, fuzzy msgid "DIB Header: Image width > 32767 pixels for file." msgstr "ûÉÒÉÎÁ ÆÁÊÌÁ ÉÚÏÂÒÁÖÅÎÉÑ > 32767 ÐÉËÓÅÌÏ×." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 #, fuzzy msgid "DIB Header: Unknown bitdepth in file." msgstr "BMP: îÅÉÚ×ÅÓÔÎÁÑ ÇÌÕÂÉÎÁ ÂÉÔÏ× ÆÁÊÌÁ." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 #, fuzzy msgid "DIB Header: Unknown encoding in file." msgstr "BMP: îÅÉÚ×ÅÓÔÎÁÑ ËÏÄÉÒÏ×ËÁ ÆÁÊÌÁ." @@ -1032,15 +1056,15 @@ msgstr "BMP: msgid "DL Envelope, 110 x 220 mm" msgstr "DL Envelope, 110 x 220 ÍÍ" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "äÁÔÁ" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "äÅËÏÒÁÔÉ×ÎÙÊ" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "" @@ -1049,23 +1073,23 @@ msgstr "" msgid "Deleted stale lock file '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ INI-ÆÁÊÌ '%s'" -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." msgstr "" -"óÅÒ×ÉÓ ÕÄÁÌÅÎÎÏÇÏ ÐÏÄÓÏÅÄÉÎÅÎÉÑ (RAS) ÎÅ ÕÓÔÁÎÏ×ÌÅÎ ÎÁ ÜÔÏÊ " -"ÍÁÛÉÎÅ. ðÏÖÁÌÕÊÓÔÁ ÕÓÔÁÎÏ×ÉÔÅ ÅÇÏ." +"óÅÒ×ÉÓ ÕÄÁÌÅÎÎÏÇÏ ÐÏÄÓÏÅÄÉÎÅÎÉÑ (RAS) ÎÅ ÕÓÔÁÎÏ×ÌÅÎ ÎÁ ÜÔÏÊ ÍÁÛÉÎÅ. " +"ðÏÖÁÌÕÊÓÔÁ ÕÓÔÁÎÏ×ÉÔÅ ÅÇÏ." -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "îÅ ÚÁÂÙÌÉ ÌÉ ÷Ù ×ËÌÀÞÉÔØ wx/os2/wx.rc × ÒÅÓÕÒÓÙ?" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "á ×Ù ÚÎÁÌÉ ÞÔÏ..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "ëÁÔÁÌÏÇ '%s' ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓÏÚÄÁÎ" @@ -1079,7 +1103,7 @@ msgstr " msgid "Directory does not exist" msgstr "ëÁÔÁÌÏÇ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1087,22 +1111,22 @@ msgstr "" "÷Ù×ÅÓÔÉ ×ÓÅ ÓÔÒÏËÉ ÉÎÄÅËÓÁ ÓÏÄÅÒÖÁÝÉÅ ÄÁÎÎÕÀ ÐÏÄÓÔÒÏËÕ. ðÏÉÓË ÂÅÚ ÕÞÅÔÁ \n" "ÒÅÇÉÓÔÒÁ." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "ïÔËÒÙÔØ ÄÉÁÌÏÇ ÏÐÃÉÊ" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "÷Ù ÈÏÔÉÔÅ ÓÏÈÒÁÎÉÔØ ÉÚÍÅÎÅÎÉÑ × ÄÏËÕÍÅÎÔÅ %s?" @@ -1111,7 +1135,7 @@ msgstr " msgid "Done" msgstr "óÄÅÌÁÎÏ" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "óÄÅÌÁÎÏ." @@ -1132,23 +1156,23 @@ msgstr " msgid "Entries found" msgstr "îÁÊÄÅÎÙ ÚÁÐÉÓÉ" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "" "ïÛÉÂËÁ ÒÁÓËÒÙÔÉÑ ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ: ÏÔÓÕÔÓÔ×ÕÅÔ '%c' × ÐÏÚÉÃÉÉ %d × '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "ïÛÉÂËÁ" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "ïÛÉÂËÁ " @@ -1156,7 +1180,7 @@ msgstr " msgid "Error creating directory" msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ËÁÔÁÌÏÇÁ" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 #, fuzzy msgid "Error in reading image DIB ." msgstr "TIFF: ïÛÉÂËÁ ÞÔÅÎÉÑ ÉÚÏÂÒÁÖÅÎÉÑ." @@ -1165,7 +1189,7 @@ msgstr "TIFF: msgid "Error: " msgstr "ïÛÉÂËÁ: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1173,7 +1197,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "ïÃÅÎËÁ ×ÒÅÍÅÎÉ : " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "ïÛÉÂËÁ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄÙ '%s'" @@ -1200,7 +1224,11 @@ msgstr " msgid "Expected 'char' whilst parsing resource." msgstr "ïÖÉÄÁÌÏÓØ 'char' ÐÒÉ ÓÉÎÔÁËÓÉÞÅÓËÏÍ ÁÎÁÌÉÚÅ ÒÅÓÕÒÓÁ." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ %s ÕÄÁÌÅÎÎÏÅ ÐÏÄÓÏÅÄÉÎÅÎÉÅ: %s" @@ -1210,7 +1238,7 @@ msgstr " msgid "Failed to access lock file." msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÄÉÁÌÏÇ." -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 #, fuzzy msgid "Failed to close file handle" msgstr "îÅ ÕÄÁÌÏÓØ ÚÁËÒÙÔØ clipboard." @@ -1224,11 +1252,11 @@ msgstr " msgid "Failed to close the clipboard." msgstr "îÅ ÕÄÁÌÏÓØ ÚÁËÒÙÔØ clipboard." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÄËÌÀÞÉÔØÓÑ: ÎÅÔ ÉÍÅÎÉ/ÐÁÒÏÌÑ." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÚ×ÏÎÉÔØÓÑ: ÎÅÔÕ ISP." @@ -1242,12 +1270,12 @@ msgstr " msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ËÏÐÉÒÏ×ÁÔØ ÓÏÄÅÒÖÉÍÏÅ ËÌÀÞÁ ÒÅÅÓÔÒÁ '%s' × '%s'." -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "óÂÏÊ ËÏÐÉÒÏ×ÁÎÉÑ ÆÁÊÌÁ '%s' × '%s'." -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÓÔÒÏËÉ DDE" @@ -1259,25 +1287,35 @@ msgstr " msgid "Failed to create a status bar." msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÓÔÁÔÕÓÎÏÊ ÓÔÒÏËÉ." -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" msgstr "óÂÏÊ ÆÏÒÍÉÒÏ×ÁÎÉÑ ÉÍÅÎÉ ×ÒÅÍÅÎÎÏÇÏ ÆÁÊÌÁ" -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 #, fuzzy msgid "Failed to create an anonymous pipe" msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÓÔÁÔÕÓÎÏÊ ÓÔÒÏËÉ." -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÄËÌÀÞÉÔØÓÑ Ë ÓÅÒ×ÅÒÕ '%s' ÐÏ ÔÅÍÅ '%s'" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 #, fuzzy msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ " +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÒÏÄÉÔÅÌØÓËÏÇÏ ÆÒÅÊÍÁ MDI." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ ËÌÀÞ registry ÉÚ '%s' × '%s." + #: ../src/generic/dirdlgg.cpp:201 #, c-format msgid "" @@ -1297,25 +1335,25 @@ msgstr " msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "îÅ ÕÄÁÌÏÓØ ×Ù×ÅÓÔÉ ÄÏËÕÍÅÎÔ HTML × ËÏÄÉÒÏ×ËÅ %s" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "îÅ ÕÄÁÌÏÓØ ÏÞÉÓÔÉÔØ clipboard." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ 'advise loop' Ó DDE ÓÅÒ×ÅÒÏÍ" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÚ×ÏÎÉÔØÓÑ: %s" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "îÅ ÕÄÁÌÏÓØ ×ÙÐÏÌÎÉÔØ '%s'\n" @@ -1347,12 +1385,12 @@ msgstr "" "îÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÒÅÓÕÒÓ XBM %s.\n" "÷Ù ÚÁÂÙÌÉ ÐÒÉÍÅÎÉÔØ wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÎÏÍÅÒÁ ISP: %s" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 #, fuzzy msgid "Failed to get clipboard data." msgstr "îÅ ÕÄÁÌÏÓØ ÕÓÔÁÎÏ×ÉÔØ ÄÁÎÎÙÅ clipboard." @@ -1361,15 +1399,15 @@ msgstr " msgid "Failed to get data from the clipboard" msgstr "îÅ ÕÄÁÌÏÓØ ÉÚ×ÌÅÞØ ÄÁÎÎÙÅ ÉÚ clipboard." -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÓÉÓÔÅÍÎÏÅ ×ÒÅÍÑ UTC." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÌÏËÁÌØÎÏÅ ÓÉÓÔÅÍÎÏÅ ×ÒÅÍÑ" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ" @@ -1385,7 +1423,7 @@ msgstr "" msgid "Failed to initialize OpenGL" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ OpenGL" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1404,16 +1442,16 @@ msgstr " msgid "Failed to load image %d from file '%s'." msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ %d ÉÚ ÆÁÊÌÁ '%s'." -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ mpr.dll." -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "ïÛÉÂËÁ ÚÁÇÒÕÚËÉ ÒÁÚÄÅÌÑÅÍÏÊ ÂÉÂÌÉÏÔÅËÉ '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "ïÛÉÂËÁ ÚÁÇÒÕÚËÉ ÒÁÚÄÅÌÑÅÍÏÊ ÂÉÂÌÉÏÔÅËÉ '%s' -- %s" @@ -1428,17 +1466,17 @@ msgstr " msgid "Failed to match '%s' in regular expression: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ %s ÕÄÁÌÅÎÎÏÅ ÐÏÄÓÏÅÄÉÎÅÎÉÅ: %s" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, fuzzy, c-format msgid "Failed to modify file times for '%s'" msgstr "ÏÛÉÂËÁ ÓÂÒÏÓÁ ÂÕÆÅÒÁ ÆÁÊÌÁ '%s'." -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, fuzzy, c-format msgid "Failed to open '%s' for %s" msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ clipboard." -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ." @@ -1455,21 +1493,21 @@ msgstr " msgid "Failed to read PID from lock file." msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÒÏÄÉÔÅÌØÓËÏÇÏ ÆÒÅÊÍÁ MDI." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "îÅ ÕÄÁÌÏÓØ ÐÅÒÅÎÁÐÒÁ×ÉÔØ ××ÏÄ/×Ù×ÏÄ ÐÏÒÏÖÄÅÎÎÏÇÏ ÐÒÏÃÅÓÓÁ" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 #, fuzzy msgid "Failed to redirect the child process IO" msgstr "îÅ ÕÄÁÌÏÓØ ÐÅÒÅÎÁÐÒÁ×ÉÔØ ××ÏÄ/×Ù×ÏÄ ÐÏÒÏÖÄÅÎÎÏÇÏ ÐÒÏÃÅÓÓÁ" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÓÅÒ×ÅÒ DDE '%s'" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÏÍÎÉÔØ ËÏÄÉÒÏ×ËÕ ÄÌÑ ÎÁÂÏÒÁ ÓÉÍ×ÏÌÏ× '%s'." @@ -1498,12 +1536,12 @@ msgstr " msgid "Failed to retrieve data from the clipboard." msgstr "îÅ ÕÄÁÌÏÓØ ÉÚ×ÌÅÞØ ÄÁÎÎÙÅ ÉÚ clipboard." -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, fuzzy, c-format msgid "Failed to retrieve file times for '%s'" msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ RAS" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ RAS" @@ -1511,7 +1549,7 @@ msgstr " msgid "Failed to retrieve the supported clipboard formats" msgstr "îÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÆÏÒÍÁÔÙ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ clipboard" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÓÌÁÔØ ÎÏÔÉÆÉËÁÃÉÀ DDE" @@ -1524,12 +1562,12 @@ msgstr " msgid "Failed to set clipboard data." msgstr "îÅ ÕÄÁÌÏÓØ ÕÓÔÁÎÏ×ÉÔØ ÄÁÎÎÙÅ clipboard." -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 #, fuzzy msgid "Failed to set temporary file permissions" msgstr "ÏÛÉÂËÁ ÓÂÒÏÓÁ ÂÕÆÅÒÁ ÆÁÊÌÁ '%s'." -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "îÅ ÕÄÁÌÏÓØ ÕÓÔÁÎÏ×ÉÔØ ÐÒÉÏÒÉÔÅÔ ÎÉÔÉ %d." @@ -1539,20 +1577,20 @@ msgstr " msgid "Failed to store image '%s' to memory VFS!" msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ '%s' × ÐÁÍÑÔÉ VFS!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "îÅ ÕÄÁÌÏÓØ ÚÁ×ÅÒÛÉÔØ ÎÉÔØ." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "îÅ ÕÄÁÌÏÓØ ÚÁ×ÅÒÛÉÔØ 'advise loop' Ó DDE ÓÅÒ×ÅÒÏÍ." -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "îÅ ÕÄÁÌÏÓØ ÐÏ×ÅÓÉÔØ ÔÒÕÂËÕ: %s" -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, fuzzy, c-format msgid "Failed to touch the file '%s'" msgstr "ÏÛÉÂËÁ ÓÂÒÏÓÁ ÂÕÆÅÒÁ ÆÁÊÌÁ '%s'." @@ -1562,7 +1600,7 @@ msgstr " msgid "Failed to unlock lock file '%s'" msgstr "ÏÛÉÂËÁ ÓÂÒÏÓÁ ÂÕÆÅÒÁ ÆÁÊÌÁ '%s'." -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "îÅ ÕÄÁÌÏÓØ ÏÔÚÁÒÅÇÅÓÔÒÉÒÏ×ÁÔØ DDE ÓÅÒ×ÅÒ '%s'" @@ -1580,7 +1618,7 @@ msgstr " msgid "Fatal error: " msgstr "ëÒÉÔÉÞÅÓËÁÑ ÏÛÉÂËÁ: " -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: ×ÙÈÏÄÉÍ" @@ -1589,38 +1627,39 @@ msgstr " msgid "File %s does not exist." msgstr "æÁÊÌ %s ÎÅ ÓÕÝÅÓÔ×ÕÅÔ." -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "æÁÊÌ '%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, ×Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÅÇÏ ÐÅÒÅÐÉÓÁÔØ?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, c-format msgid "" "File '%s' already exists.\n" "Do you want to replace it?" -msgstr "æÁÊÌ '%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔÀ\n." -"÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÅÇÏ ÐÅÒÅÐÉÓÁÔØ?" +msgstr "" +"æÁÊÌ '%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔÀ\n" +".÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÅÇÏ ÐÅÒÅÐÉÓÁÔØ?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "æÁÊÌ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÚÁÇÒÕÖÅÎ." -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "ïÛÉÂËÁ ÆÁÊÌÁ" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "éÍÑ ÆÁÊÌÁ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "æÁÊÌÙ (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "îÁÊÔÉ" @@ -1632,15 +1671,15 @@ msgstr " msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 ÄÀÊÍ" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "òÁÚÍÅÒ ÛÒÉÆÔÁ:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "îÅÕÄÁÞÎÙÊ Fork" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "÷ÐÅÒÅÄ" @@ -1650,7 +1689,7 @@ msgstr " msgid "Found " msgstr "îÁÊÄÅÎ " -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "îÁÊÄÅÎÏ %i ÓÏÏÔ×ÅÔÓÔ×ÉÊ" @@ -1696,39 +1735,31 @@ msgstr "German Std Fanfold, 8 1/2 x 12 in" msgid "GetUnusedColour:: No Unused Color in image " msgstr "" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "éÄÔÉ ÎÁÚÁÄ" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "éÄÔÉ ×ÐÅÒÅÄ" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "éÄÔÉ ÎÁ ÏÄÉÎ ÕÒÏ×ÅÎØ ××ÅÒÈ × ÉÅÒÁÒÈÉÉ ÄÏËÕÍÅÎÔÁ" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "÷ ÄÏÍÁÛÎÉÊ ÄÉÒÅËÔÏÒÉÊ" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "÷ ÒÏÄÉÔÅÌØÓËÉÊ ÄÉÒÅËÔÏÒÉÊ" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Greek (ISO-8859-7)" @@ -1737,31 +1768,26 @@ msgstr "Greek (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "HTML-ÑËÏÒØ %s ÎÅ ÓÕÝÅÓÔ×ÕÅÔ." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"æÁÊÌÙ HTML (*.htm)|*.htm|æÁÊÌÙ HTML (*.html)|*.html|ëÎÉÇÉ ÐÏÍÏÝÉ " -"(*.htb)|*.htb|ëÎÉÇÉ ÐÏÍÏÝÉ (*.zip)|*.zip|ðÒÏÅËÔ ÐÏÍÏÝÉ HTML " -"(*.hhp)|*.hhp|÷ÓÅ ÆÁÊÌÙ (*.*)|*" +"æÁÊÌÙ HTML (*.htm)|*.htm|æÁÊÌÙ HTML (*.html)|*.html|ëÎÉÇÉ ÐÏÍÏÝÉ (*.htb)|*." +"htb|ëÎÉÇÉ ÐÏÍÏÝÉ (*.zip)|*.zip|ðÒÏÅËÔ ÐÏÍÏÝÉ HTML (*.hhp)|*.hhp|÷ÓÅ ÆÁÊÌÙ (*." +"*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebrew (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "ðÏÍÏÝØ" -#: ../src/html/htmlhelp.cpp:87 -#, c-format -msgid "Help : %s" -msgstr "ðÏÍÏÝØ: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "ïÐÃÉÉ ÐÒÏÓÍÏÔÒÁ ÐÏÍÏÝÉ" @@ -1769,7 +1795,7 @@ msgstr " msgid "Help Index" msgstr "éÎÄÅËÓ ÐÏÍÏÝÉ" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "ðÏÍÏÝØ ÐÅÞÁÔÉ" @@ -1778,27 +1804,27 @@ msgstr " msgid "Help: %s" msgstr "ðÏÍÏÝØ: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 #, fuzzy msgid "ICO: Error in reading mask DIB." msgstr "TIFF: ïÛÉÂËÁ ÞÔÅÎÉÑ ÉÚÏÂÒÁÖÅÎÉÑ." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" msgstr "ICO: ïÛÉÂËÁ ÚÁÐÉÓÉ ÆÁÊÌÁ ÉÚÏÂÒÁÖÅÎÉÑ!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 #, fuzzy msgid "ICO: Invalid icon index." msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÉÎÄÅËÓ ÉÚÏÂÒÁÖÅÎÉÑ TIFF." @@ -1831,11 +1857,11 @@ msgstr " msgid "Ill-formed resource file syntax." msgstr "îÅ×ÅÒÎÙÊ ÓÉÎÔÁËÓÉÓ ÆÁÊÌÁ ÒÅÓÕÒÓÏ×." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "îÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÄÉÒÅËÔÏÒÉÑ." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÆÁÊÌÁ." @@ -1843,12 +1869,12 @@ msgstr " msgid "Image and Mask have different sizes" msgstr "" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "" -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1858,26 +1884,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ××ÏÄ ÐÏÒÏÖÄÅÎÎÏÇÏ ÐÒÏÃÅÓÓÁ" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, fuzzy, c-format msgid "Impossible to get permissions for file '%s'" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ××ÏÄ ÐÏÒÏÖÄÅÎÎÏÇÏ ÐÒÏÃÅÓÓÁ" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÐÉÓÁÔØ ÆÁÊÌ '%s'" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "éÎÄÅËÓ" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 #, fuzzy msgid "Indian (ISO-8859-12)" msgstr "Nordic (ISO-8859-10)" @@ -1886,17 +1912,17 @@ msgstr "Nordic (ISO-8859-10)" msgid "Invalid TIFF image index." msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÉÎÄÅËÓ ÉÚÏÂÒÁÖÅÎÉÑ TIFF." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, fuzzy, c-format msgid "Invalid display mode specification '%s'." msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÆÁÊÌÁ." -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, fuzzy, c-format msgid "Invalid geometry specification '%s'" msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÆÁÊÌÁ." @@ -1911,7 +1937,7 @@ msgstr " msgid "Invalid regular expression '%s': %s" msgstr "îÅ×ÅÒÎÏÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ '%s': %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "ëÕÒÓÉ×" @@ -1927,7 +1953,7 @@ msgstr "JPEG: msgid "JPEG: Couldn't save image." msgstr "JPEG: îÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1955,17 +1981,17 @@ msgstr "Letter Small 8 1/2 x 11 msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 ÄÀÊÍ" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "ó×ÅÔÌÙÊ" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "úÁÇÒÕÚÉÔØ ÆÁÊÌ %s" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" msgstr "úÁÇÒÕÚÉÔØ ÆÁÊÌ" @@ -1996,14 +2022,14 @@ msgid "" "MS HTML Help functions are unavailable because the MS HTML Help library is " "not installed on this machine. Please install it." msgstr "" -"óÅÒ×ÉÓ ÕÄÁÌÅÎÎÏÇÏ ÐÏÄÓÏÅÄÉÎÅÎÉÑ (RAS) ÎÅ ÕÓÔÁÎÏ×ÌÅÎ ÎÁ ÜÔÏÊ " -"ÍÁÛÉÎÅ.ðÏÖÁÌÕÊÓÔÁ ÕÓÔÁÎÏ×ÉÔÅ ÅÇÏ." +"óÅÒ×ÉÓ ÕÄÁÌÅÎÎÏÇÏ ÐÏÄÓÏÅÄÉÎÅÎÉÑ (RAS) ÎÅ ÕÓÔÁÎÏ×ÌÅÎ ÎÁ ÜÔÏÊ ÍÁÛÉÎÅ." +"ðÏÖÁÌÕÊÓÔÁ ÕÓÔÁÎÏ×ÉÔÅ ÅÇÏ." #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" msgstr "" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "æÁÊÌ mailcap %s, ÓÔÒÏËÁ %d: ÎÅÐÏÌÎÁÑ ÚÁÐÉÓØ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÁ." @@ -2025,7 +2051,7 @@ msgstr "" msgid "Mi&nimize" msgstr "" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "æÁÊÌ mime.types %s, ÓÔÒÏËÁ %d: ÎÅÚÁËÒÙÔÙÅ ËÁ×ÙÞËÉ." @@ -2035,7 +2061,7 @@ msgstr " msgid "Mode %ix%i-%i not available." msgstr "" -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2043,24 +2069,24 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarch Envelope, 3 7/8 x 7 1/2 ÄÀÊÍ" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "åÝÅ..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "éÍÑ" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NewName" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "óÌÅÄÕÀÝÁÑ ÓÔÁÎÉÃÁ" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "îÅÔ" @@ -2082,7 +2108,7 @@ msgstr " msgid "No entries found." msgstr "úÁÐÉÓØ ÎÅ ÎÁÊÄÅÎÁ." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2094,7 +2120,7 @@ msgstr "" "èÏÔÉÔÅ ×ÙÂÒÁÔØ ÛÒÉÆÔ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ Ó ÜÔÏÊ\n" "ËÏÄÉÒÏ×ËÏÊ (ÉÎÁÞÅ ÔÅËÓÔ × ÜÔÏÊ ËÏÄÉÒÏ×ËÅ ÎÅ ÂÕÄÅÔ ÐÏËÁÚÁÎ ÐÒÁ×ÉÌØÎÏ)?" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2104,40 +2130,39 @@ msgstr "" "ëÏÄÉÒÏ×ËÁ '%s' ÎÅÉÚ×ÅÓÔÎÁ. èÏÔÉÔÅ ×ÙÂÒÁÔØ ÛÒÉÆÔ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ Ó ÜÔÏÊ\n" "ËÏÄÉÒÏ×ËÏÊ (ÉÎÁÞÅ ÔÅËÓÔ × ÜÔÏÊ ËÏÄÉÒÏ×ËÅ ÎÅ ÂÕÄÅÔ ÐÏËÁÚÁÎ ÐÒÁ×ÉÌØÎÏ)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "îÅ ÎÁÊÄÅÎ ÎÉ ÏÄÉÎ ÏÂÒÁÂÏÔÞÉË ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "îÅ ÏÐÒÅÄÅÌÅÎ ÎÉ ÏÄÉÎ ÏÂÒÁÂÏÔÞÉË ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ ÔÉÐÁ %d." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "îÅ ÏÐÒÅÄÅÌÅÎ ÎÉ ÏÄÉÎ ÏÂÒÁÂÏÔÞÉË ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ ÔÉÐÁ %s." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "îÉ ÏÄÎÁ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÁÑ ÓÔÒÁÎÉÃÁ ÐÏËÁ ÎÅ ÎÁÊÄÅÎÁ" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordic (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "îÏÒÍÁÌØÎÙÊ ÛÒÉÆÔ:" @@ -2145,35 +2170,35 @@ msgstr " msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11 ÄÀÊÍ" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "ïÔËÒÙÔØ ÄÏËÕÍÅÎÔ HTML" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "ïÐÅÒÁÃÉÑ ÎÅ ÒÁÚÒÅÛÅÎÁ." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "ïÐÃÉÑ '%s' ÔÒÅÂÕÅÔ ÚÎÁÞÅÎÉÑ, ÏÖÉÄÁÌÓÑ '='." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "ïÐÃÉÑ '%s' ÔÒÅÂÕÅÔ ÚÎÁÞÅÎÉÅ." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "ïÐÃÉÑ '%s': '%s' ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓËÏÎ×ÅÒÔÉÒÏ×ÁÎÁ × ÄÁÔÕ." @@ -2222,12 +2247,12 @@ msgstr "PNM: msgid "PNM: File seems truncated." msgstr "PNM: æÁÊÌ ËÁÖÅÔÓÑ ÕËÏÒÏÞÅÎ." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "óÔÒÁÎÉÃÁ %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "óÔÒÁÎÉÃÁ %d ÉÚ %d" @@ -2250,11 +2275,11 @@ msgstr " msgid "Paper size" msgstr "òÁÚÍÅÒ ÂÕÍÁÇÉ" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "òÁÚÒÅÛÅÎÉÑ" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "ïÛÉÂËÁ ÓÏÚÄÁÎÉÑ ÐÏÔÏËÁ ××ÏÄÁ-×Ù×ÏÄÁ" @@ -2262,15 +2287,15 @@ msgstr " msgid "Please choose a valid font." msgstr "ðÏÖÁÌÕÊÓÔÁ ×ÙÂÅÒÉÔÅ ÄÏÐÕÓÔÉÍÙÊ ÛÒÉÆÔ." -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "âÕÄØÔÅ ÄÏÂÒÙ ×ÙÂÒÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÆÁÊÌ." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "ðÏÖÁÌÕÊÓÔÁ ×ÙÂÅÒÉÔÅ ISP" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2278,7 +2303,7 @@ msgid "" "or this program won't operate correctly." msgstr "" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "" @@ -2290,15 +2315,11 @@ msgstr " msgid "PostScript file" msgstr "æÁÊÌ PostScript" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "ðÒÅÄ-ÏÓÍÏÔÒ:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "ðÒÅÄÙÄÕÝÁÑ ÓÔÒÁÎÉÃÁ" @@ -2306,11 +2327,11 @@ msgstr " msgid "Print" msgstr "ðÅÞÁÔØ" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "ðÒÅÄ-ÏÓÍÏÔÒ ÐÅÞÁÔÉ" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "ïÛÉÂËÁ ÐÒÅÄ-ÏÓÍÏÔÒÁ ÐÅÞÁÔÉ" @@ -2330,7 +2351,7 @@ msgstr " msgid "Print spooling" msgstr "óÐÕÌÉÎÇ ÐÅÞÁÔÉ" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "îÁÐÅÞÁÔÁÔØ ÜÔÕ ÓÔÒÁÎÉÃÕ" @@ -2338,7 +2359,7 @@ msgstr " msgid "Print to File" msgstr "ðÅÞÁÔØ × ÆÁÊÌ" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "ðÅÞÁÔØ..." @@ -2358,20 +2379,20 @@ msgstr " msgid "Printer..." msgstr "ðÒÉÎÔÅÒ..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "ðÅÞÁÔØ" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "ïÛÉÂËÁ ÐÅÞÁÔÉ" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "ðÅÞÁÔØ ÓÔÒÁÎÉÃÙ %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "ðÅÞÁÔØ..." @@ -2392,7 +2413,7 @@ msgstr " msgid "Read error on file '%s'" msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ ÆÁÊÌÁ '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -2423,10 +2444,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "úÎÁÞÅÎÉÅ registry '%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "ðÏÄÈÏÄÑÝÉÅ ÚÁÐÉÓÉ:" @@ -2435,7 +2452,7 @@ msgstr " msgid "Remaining time : " msgstr "ïÓÔÁÔÏÞÎÏÅ ×ÒÅÍÑ : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "õÄÁÌÉÔØ ÔÅËÕÝÕÀ ÓÔÁÎÉÃÕ ÉÚ ÚÁËÌÁÄÏË" @@ -2447,7 +2464,7 @@ msgstr " msgid "Replace with:" msgstr "úÁÍÅÎÉÔØ ÎÁ:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "" @@ -2455,21 +2472,21 @@ msgstr "" msgid "Right margin (mm):" msgstr "ðÒÁ×ÁÑ ÇÒÁÎÉÃÁ (ÍÍ):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "óÏÈÒÁÎÉÔØ ÆÁÊÌ %s" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "óÏÈÒÁÎÉÔØ ËÁË" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" msgstr "óÏÈÒÁÎÉÔØ ÆÁÊÌ" @@ -2477,20 +2494,15 @@ msgstr " msgid "Save log contents to file" msgstr "óÏÈÒÁÎÉÔØ ÓÏÄÅÒÖÁÎÉÅ ÖÕÒÎÁÌÁ × ÆÁÊÌ" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "óËÒÉÐÔ" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "ðÏÉÓË" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2507,21 +2519,15 @@ msgstr " msgid "Search for:" msgstr "ðÏÉÓË" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "ðÏÉÓË ×Ï ×ÓÅÈ ËÎÉÇÁÈ" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "ðÏÉÓË" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "ðÏÉÓË..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "òÁÚÄÅÌÙ" @@ -2530,24 +2536,29 @@ msgstr " msgid "Seek error on file '%s'" msgstr "ïÛÉÂËÁ ÐÏÉÓËÁ × ÆÁÊÌÅ '%s'" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "÷ÙÂÅÒÉÔÅ ÆÁÊÌ" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "÷ÙÂÅÒÉÔÅ ÛÁÂÌÏÎ ÄÏËÕÍÅÎÔÁ" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "÷ÙÂÅÒÉÔÅ ×ÉÄ ÄÏËÕÍÅÎÔÁ" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "÷ÙÂÅÒÉÔÅ ÆÁÊÌ" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "ðÏÓÌÅ ÏÐÃÉÉ '%s' ÏÖÉÄÁÌÓÑ ÒÁÚÄÅÌÉÔÅÌØ." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "îÁÓÔÒÏÊËÉ" @@ -2555,15 +2566,15 @@ msgstr " msgid "Setup..." msgstr "îÁÓÔÒÏÊËÉ..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "îÅÓËÏÌØËÏ ÁËÔÉ×ÎÙÈ ÐÏÄÓÏÅÄÉÎÅÎÉÊ ÎÁÊÄÅÎÏ, ÓÌÕÞÁÊÎÏ ×ÙÂÉÒÁÅÍ ÏÄÎÏ." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "ðÏËÁÚÁÔØ ×ÓÅ" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "ðÏËÁÚÁÔØ ×ÓÅ ÓÔÏËÉ ÉÎÄÅËÓÁ" @@ -2571,36 +2582,36 @@ msgstr " msgid "Show hidden directories" msgstr "ðÏËÁÚÁÔØ ÓËÒÙÔÙÅ ËÁÔÁÌÏÇÉ" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "ðÏËÁÚÁÔØ ÓËÒÙÔÙÅ ÆÁÊÌÙ" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "ðÏËÁÚÁÔØ/ÓÐÒÑÔÁÔØ ÎÁ×ÉÇÁÃÉÏÎÎÕÀ ÐÁÎÅÌØ" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "òÁÚÍÅÒ" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "îÁËÌÏÎÎÙÊ" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "üÔÏÔ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÏÔËÒÙÔ ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ." -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "üÔÏÔ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÏÔËÒÙÔ." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÜÔÏÔ ÆÁÊÌ." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÓÏÚÄÁÎÉÑ ÚÏÎÙ ÐÒÅÄ-ÏÓÍÏÔÒÁ." @@ -2612,12 +2623,12 @@ msgstr "Statement, 5 1/2 x 8 1/2 msgid "Status: " msgstr "óÔÁÔÕÓ: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Swiss" @@ -2646,15 +2657,15 @@ msgstr "TIFF: msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 ÄÀÊÍ" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "ôÅÌÅÔÁÊÐ" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "ûÁÂÌÏÎÙ" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" @@ -2662,7 +2673,7 @@ msgstr "Thai (ISO-8859-11)" msgid "The FTP server doesn't support passive mode." msgstr "óÅÒ×ÅÒ FTP ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÁÓÓÉ×ÎÙÊ ÒÅÖÉÍ." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2673,7 +2684,7 @@ msgstr "" "×ÍÅÓÔÏ ÎÅÇÏ ÄÒÕÇÏÊ ÎÁÂÏÒ ÉÌÉ ÎÁÖÁÔØ [ïÔÍÅÎÁ] \n" "ÅÓÌÉ ÏÎ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÚÁÍÅÎÅÎ" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "æÏÒÍÁÔ clipboard '%d' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ." @@ -2687,7 +2698,7 @@ msgstr "" "ëÁÔÁÌÏÇ '%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ\n" "óÏÚÄÁÔØ ÅÇÏ ÓÅÊÞÁÓ?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, fuzzy, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2696,12 +2707,12 @@ msgstr "" "æÁÊÌ '%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÉÌÉ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÏÔËÒÙÔ.\n" "ïÎ ÂÙÌ ÕÄÁÌÅÎ ÉÚ ÓÐÉÓËÁ ÆÁÊÌÏ× MRU." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "ïÂÑÚÁÔÅÌØÎÙÊ ÐÁÒÁÍÅÔÒ '%s' ÎÅ ÕËÁÚÁÎ." @@ -2710,12 +2721,12 @@ msgstr " msgid "The text couldn't be saved." msgstr "ôÅËÓÔ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓÏÈÒÁÎÅÎ." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "úÎÁÞÅÎÉÅ ÏÐÃÉÉ '%s' ÄÏÌÖÎÏ ÂÙÔØ ÕËÁÚÁÎÏ." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " @@ -2724,7 +2735,7 @@ msgstr "" "óÅÒ×ÉÓ ÕÄÁÌÅÎÎÏÇÏ ÐÏÄÓÏÅÄÉÎÅÎÉÑ (RAS) ÕÓÔÁÎÏ×ÌÅÎÎÙÊ ÎÁ ÜÔÏÊ ÍÁÛÉÎÅ " "ÎÅÄÏÓÔÁÔÏÞÎÏ ÎÏ×ÙÊ (ÆÕÎËÃÉÑ %s ÎÅ ÎÁÊÄÅÎÁ)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -2737,7 +2748,7 @@ msgstr "" "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÍÏÄÕÌÑ ÎÉÔÅÊ: ÎÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÚÎÁÞÅÎÉÅ × ÌÏËÁÌØÎÏÍ " "ÐÒÏÓÔÒÁÎÓÔ×Å ÎÉÔÉ" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÍÏÄÕÌÑ ÎÉÔÅÊ: ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÌÀÞ ÎÉÔÉ" @@ -2749,7 +2760,7 @@ msgstr "" "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÍÏÄÕÌÑ ÎÉÔÅÊ: ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÉÎÄÅËÓ × ÌÏËÁÌØÎÏÍ " "ÐÒÏÓÔÒÁÎÓÔ×Å ÎÉÔÉ " -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "ðÒÉÏÒÉÔÅÔ ÎÉÔÉ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ." @@ -2761,15 +2772,15 @@ msgstr "" msgid "Tile &Vertically" msgstr "" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "÷ÒÅÍÑ" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "ðÏÄÓËÁÚËÁ äÎÑ" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "éÚ×ÉÎÉÔÅ, ÐÏÄÓËÁÚËÉ ÎÅÄÏÓÔÕÐÎÙ!" @@ -2790,7 +2801,7 @@ msgstr " msgid "Trying to solve a NULL hostname: giving up" msgstr "ðÏÐÙÔËÁ ÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÈÏÓÔÁ NULL: ÏÔÍÅÎÅÎÁ" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turkish (ISO-8859-9)" @@ -2803,7 +2814,7 @@ msgstr "US Std Fanfold, 14 7/8 x 11 msgid "Unable to open requested HTML document: %s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÚÁÐÒÏÛÅÎÎÙÊ ÄÏËÕÍÅÎÔ HTML: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "ðÏÄÞÅÒËÉ×ÁÎÉÅ" @@ -2820,45 +2831,45 @@ msgstr " msgid "Unexpected end of file whilst parsing resource." msgstr "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ×Ï ×ÒÅÍÑ ÌÅËÓÉÞÅÓËÏÇÏ ÒÁÚÂÏÒÁ ÒÅÓÕÒÓÁ." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "îÅÏÖÉÄÁÎÎÙÊ ÐÁÒÁÍÅÔÒ '%s'" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ DDE %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "îÅÏÖÉÄÁÎÎÁÑ ËÏÄÉÒÏ×ËÁ (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÐÏÌÅ × ÆÁÊÌÅ %s, ÓÔÒÏËÁ %d: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÄÌÉÎÎÁÑ ÏÐÃÉÑ '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÐÃÉÑ '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -2877,12 +2888,12 @@ msgstr " msgid "Unrecognized style %s whilst parsing resource." msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÓÔÉÌØ %s × ÌÅËÓÉÞÅÓËÏÍ ÒÁÚÂÏÒÅ ÒÅÓÕÒÓÁ." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÆÏÒÍÁÔ clipboard." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÁÑ ÔÅÍÁ '%s'." @@ -2891,7 +2902,7 @@ msgstr " msgid "Up" msgstr "" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s" @@ -2900,23 +2911,23 @@ msgstr " msgid "Validation conflict" msgstr "ëÏÎÆÌÉËÔ ÐÒÏ×ÅÒËÉ" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "ðÒÏÓÍÏÔÒ ÆÁÊÌÏ× Ó ÄÅÔÁÌÑÍÉ" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "ðÒÏÓÍÏÔÒ ÆÁÊÌÏ× × ×ÉÄÅ ÓÐÉÓËÁ" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "÷ÉÄÙ" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "ïÛÉÂËÁ ÏÖÉÄÁÎÉÑ ÏËÏÎÞÁÎÉÑ ÐÏÄÐÒÏÃÅÓÓÁ" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ" @@ -2924,15 +2935,15 @@ msgstr " msgid "Warning: " msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÏÐÙÔËÁ ÕÄÁÌÉÔØ ÏÂÒÁÂÏÔÞÉË ÔÅÇÁ HTML ÉÚ ÐÕÓÔÏÇÏ ÓÔÅËÁ." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "Western European (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 #, fuzzy msgid "Western European with Euro (ISO-8859-15)" msgstr "West European ÎÏ×ÙÊ (ISO-8859-15/Latin 0)" @@ -2942,7 +2953,7 @@ msgstr "West European msgid "Whole word" msgstr "ôÏÌØËÏ ÐÏÌÎÙÅ ÓÌÏ×Á" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "ôÏÌØËÏ ÐÏÌÎÙÅ ÓÌÏ×Á" @@ -2950,73 +2961,73 @@ msgstr " msgid "Win32 theme" msgstr "" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s ÎÁ Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabic (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltic (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 #, fuzzy msgid "Windows Central European (CP 1250)" msgstr "Windows Hebrew (CP 1255)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 #, fuzzy msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows Latin 2 (CP 1250)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cyrillic (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Hebrew (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 #, fuzzy msgid "Windows Japanese (CP 932)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 #, fuzzy msgid "Windows Korean (CP 949)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Turkish (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 #, fuzzy msgid "Windows Western European (CP 1252)" msgstr "Windows Latin 1 (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3039,26 +3050,22 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, fuzzy, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "îÅ ÎÁÊÄÅÎÁ ÓÐÅÃÉÆÉËÁÃÉÑ ÒÅÓÕÒÓÁ ÉËÏÎËÉ %s." -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "äÁ" @@ -3067,20 +3074,20 @@ msgstr " msgid "You cannot add a new directory to this section." msgstr "÷Ù ÎÅ ÍÏÖÅÔÅ ÄÏÂÁ×ÉÔØ ÎÏ×ÙÊ ËÁÔÁÌÏÇ × ÜÔÕ ÓÅËÃÉÀ." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[ðõóôï]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "" "ÎÅÐÅÒÅ×ÏÄÉÍÏ (a DDEML application has created a prolonged race condition)" -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3093,46 +3100,46 @@ msgstr "" "or an invalid instance identifier\n" "was passed to a DDEML function)" -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "ÐÏÐÙÔËÁ ËÌÉÅÎÔÁ ÕÓÔÁÎÏ×ÉÔØ Ó×ÑÚØ ÎÅ ÕÄÁÌÁÓØ." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "ÏÛÉÂËÁ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "" -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" "terminated before completing a transaction." msgstr "" -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "ÔÒÁÎÚÁËÃÉÑ ÎÅ ÚÁ×ÅÒÛÉÌÁÓØ" @@ -3140,7 +3147,7 @@ msgstr " msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3148,22 +3155,22 @@ msgid "" "attempted to perform server transactions." msgstr "" -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "" -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "" -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" "the transaction identifier for that callback is no longer valid." msgstr "" -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "ÐÏÐÙÔËÁ ÉÚÍÅÎÉÔØ ÎÅÉÚÍÅÎÎÕÀ ËÌÁ×ÉÛÕ '%s' ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÁ." @@ -3172,12 +3179,12 @@ msgstr " msgid "binary" msgstr "" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 #, fuzzy msgid "bold" msgstr "öÉÒÎÙÊ" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 #, fuzzy msgid "bold " msgstr "öÉÒÎÙÊ" @@ -3187,32 +3194,32 @@ msgstr " msgid "can't close file '%s'" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ÆÁÊÌ '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÉÚÍÅÎÅÎÉÑ × ÆÁÊÌ '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÏÌØÚÏ×ÁÔÅÌÑ '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÏÓÔÉÖÅÎÉÅ ËÏÎÃÁ ÆÁÊÌÁ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÌÉÎÕ ÆÁÊÌÁ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" @@ -3222,55 +3229,55 @@ msgid "can't find user's HOME, using current directory." msgstr "" "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ HOME ÐÏÌØÚÏ×ÁÔÅÌÑ, ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÔÅËÕÝÉÊ ËÁÔÁÌÏÇ." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÌÉÔØ ÆÁÊÌ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÁÊÌÁ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÎÉ ÏÄÉÎ ÛÒÉÆÔ, ÏÓÔÁÎÏ×" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÇÌÏÂÁÌØÎÙÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ '%s'." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ ÆÁÊÌÁ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "ÏÛÉÂËÁ ÕÄÁÌÅÎÉÑ ÆÁÊÌÁ '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "ÏÛÉÂËÁ ÕÄÁÌÅÎÉÑ ×ÒÅÍÅÎÎÏÇÏ ÆÁÊÌÁ '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÍÅÓÔÉÔØÓÑ ÐÏ ÆÁÊÌÕ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" @@ -3280,12 +3287,12 @@ msgstr " msgid "can't write buffer '%s' to disk." msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ ÆÁÊÌÁ '%s' ÎÁ ÄÉÓË." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ × ÆÁÊÌ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ." @@ -3298,33 +3305,33 @@ msgstr " msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "ÄÁÔÁ" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 #, fuzzy msgid "default" msgstr "alt" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "×ÏÓÅÍÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "×ÏÓØÍÏÊ" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "ÏÄÉÎÎÁÄÃÁÔÙÊ" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "ÐÏÌÅ '%s' ÐÏÑ×ÌÑÅÔÓÑ ÂÏÌÅÅ ÏÄÎÏÇÏ ÒÁÚÁ × ÇÒÕÐÐÅ '%s'" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "ÕÓÔÁÎÏ×ÉÔØ" @@ -3333,64 +3340,69 @@ msgstr " msgid "failed to flush the file '%s'" msgstr "ÏÛÉÂËÁ ÓÂÒÏÓÁ ÂÕÆÅÒÁ ÆÁÊÌÁ '%s'." -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "ÐÑÔÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "ÐÑÔÙÊ" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "ÆÁÊÌ '%s', ÓÔÒÏËÁ %d: '%s' ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÏ ÐÏÓÌÅ ÚÁÇÏÌÏ×ËÁ ÇÒÕÐÐÙ." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "ÆÁÊÌ '%s', ÓÔÒÏËÁ %d: ÏÖÉÄÁÌÓÑ '='." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "ÆÁÊÌ '%s', ÓÔÒÏËÁ %d: ËÌÀÞ '%s' ÂÙÌ ÕÖÅ ÚÁÍÅÞÅÎ ÎÁ ÓÔÒÏËÅ %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "ÆÁÊÌ '%s', ÓÔÒÏËÁ %d: ÚÎÁÞÅÎÉÅ ÎÅÉÚÍÅÎÎÏÇÏ ËÌÀÞÁ '%s' ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÏ." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "ÆÁÊÌ '%s': ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ %c ÎÁ ÓÔÒÏËÅ %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "ÐÅÒ×ÙÊ" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "ÞÅÔÙÒÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "ÞÅÔ×ÅÒÔÙÊ" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "ÏÛÉÂËÁ gmtime()" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "ÎÁÞÁÔØ Ú×ÏÎÉÔØ" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ ×ÏÚ×ÒÁÔÁ ÉÚ eof()." @@ -3398,21 +3410,17 @@ msgstr " msgid "invalid message box return value" msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ ×ÏÚ×ÒÁÔÁ ÉÚ ÏËÎÁ ÓÏÏÂÝÅÎÉÑ" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 #, fuzzy msgid "italic" msgstr "ëÕÒÓÉ×" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "ÂÏÌØÛÏÊ" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 #, fuzzy msgid "light" msgstr "ó×ÅÔÌÙÊ" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 #, fuzzy msgid "light " msgstr "ó×ÅÔÌÙÊ" @@ -3427,59 +3435,55 @@ msgstr " msgid "looking for catalog '%s' in path '%s'." msgstr "ÐÏÉÓË ËÁÔÁÌÏÇÁ '%s' × ÐÕÔÉ '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "ÓÒÅÄÎÉÊ" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "ÐÏÌÎÏÞØ" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "ÏÛÉÂËÁ mktime()" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "ÄÅ×ÑÔÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "ÄÅ×ÑÔÙÊ" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "ÎÅÔ ÏÛÉÂËÉ" -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "ÂÅÚ ÉÍÅÎÉ" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "ÐÏÌÄÅÎØ" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "×ÔÏÒÏÊ" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "ÓÅÍÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "ÓÅÄØÍÏÊ" @@ -3487,82 +3491,78 @@ msgstr " msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "ÛÅÓÔÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "ÛÅÓÔÏÊ" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "ÍÁÌÅÎØËÉÊ" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "ÄÅÓÑÔÙÊ" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "" -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "ÔÒÅÔÉÊ" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "ÔÒÉÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "ÓÅÇÏÄÎÑ" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "ÚÁ×ÔÒÁ" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "Ä×ÅÎÁÄÃÁÔÙÊ" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "Ä×ÁÄÃÁÔÙÊ" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 #, fuzzy msgid "underlined" msgstr "ðÏÄÞÅÒËÉ×ÁÎÉÅ" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 #, fuzzy msgid "underlined " msgstr "ðÏÄÞÅÒËÉ×ÁÎÉÅ" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "ÎÅÏÖÉÄÁÎÎÙÊ \" × ÐÏÚÉÃÉÉ %d × '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ" @@ -3570,12 +3570,17 @@ msgstr " msgid "unknown error" msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ (ËÏÄ ÏÛÉÂËÉ %08x)" -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÏÔÓÞÅÔ ÐÏÉÓËÁ" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÏÔÓÞÅÔ ÐÏÉÓËÁ" @@ -3584,11 +3589,11 @@ msgstr " msgid "unknown-%d" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "ÂÅÚÙÍÑÎÎÙÊ" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "ÂÅÚÙÍÑÎÎÙÊ%d" @@ -3598,15 +3603,7 @@ msgstr " msgid "using catalog '%s' from '%s'." msgstr "ÉÓÐÏÌØÚÕÅÔÓÑ ËÁÔÁÌÏÇ '%s' ÉÚ '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "ÏÞÅÎØ ÂÏÌØÛÏÊ" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "ÏÞÅÎØ ÍÁÌÅÎØËÉÊ" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 #, fuzzy msgid "writing" msgstr "ðÅÞÁÔØ" @@ -3616,19 +3613,15 @@ msgstr " msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "ÏÛÉÂËÁ wxGetTimeOfDay." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: ÎÅÄÅÊÓÔ×ÉÔÅÌØÎÁÑ ÐÏÄÐÉÓØ × ReadMsg." @@ -3637,22 +3630,53 @@ msgstr "wxSocket: msgid "wxSocket: unknown event!." msgstr "wxSocket: ÎÅÉÚ×ÅÓÔÎÏÅ ÓÏÂÙÔÉÅ!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows ÎÅ ÓÍÏÇ ÏÔËÒÙÔØ ÄÉÓÐÌÅÊ ÄÌÑ '%s': ×ÙÈÏÄÉÍ." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." msgstr "wxWindows ÎÅ ÓÍÏÇ ÏÔËÒÙÔØ ÄÉÓÐÌÅÊ. ÷ÙÈÏÄÉÍ." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "×ÞÅÒÁ" +#~ msgid " bytes " +#~ msgstr " ÂÁÊÔ " + +#~ msgid "

    " +#~ msgstr " " + +#~ msgid " " +#~ msgstr " " + #, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "÷ÓÅ ÆÁÊÌÙ (*)|*" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "BMP: ðÏËÁ ÎÅ×ÏÚÍÏÖÎÏ ÒÁÂÏÔÁÔØ Ó 4-ÂÉÔÎÏÊ ËÏÄÉÒÏ×ËÏÊ." + +#~ msgid "Help : %s" +#~ msgstr "ðÏÍÏÝØ: %s" + +#, fuzzy +#~ msgid "Search!" +#~ msgstr "ðÏÉÓË" + +#~ msgid "large" +#~ msgstr "ÂÏÌØÛÏÊ" + +#~ msgid "medium" +#~ msgstr "ÓÒÅÄÎÉÊ" + +#~ msgid "small" +#~ msgstr "ÍÁÌÅÎØËÉÊ" + +#~ msgid "very large" +#~ msgstr "ÏÞÅÎØ ÂÏÌØÛÏÊ" + +#~ msgid "very small" +#~ msgstr "ÏÞÅÎØ ÍÁÌÅÎØËÉÊ" #~ msgid "Can not create mutex" #~ msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÅÍÁÆÏÒ" @@ -3709,10 +3733,6 @@ msgstr " #~ msgid "Y Translation" #~ msgstr "óÄ×ÉÇ ×ÄÏÌØ Y" -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÏÔÓÞÅÔ ÐÏÉÓËÁ" - #~ msgid "Fatal Error" #~ msgstr "æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ" @@ -3911,7 +3931,8 @@ msgstr " #~ msgstr "éÍÑ ÚÁÐÉÓÉ ÎÅ ÍÏÖÅÔ ÎÁÞÉÎÁÔØÓÑ Ó '%c'." #~ msgid "" -#~ "Mime.types file %s, line %d: extra characters after the field value ignored." +#~ "Mime.types file %s, line %d: extra characters after the field value " +#~ "ignored." #~ msgstr "" #~ "æÁÊÌ mime.types %s, ÓÔÒÏËÁ %d: ÌÉÛÎÉÅ ÓÉÍ×ÏÌÙ ÐÏÓÌÅ ÚÎÁÞÅÎÉÑ ÐÏÌÑ " #~ "ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÙ." @@ -3969,8 +3990,8 @@ msgstr " #~ "wxPrintPreviewBase::SetCanvas ÞÔÏÂÙ Ñ ÚÎÁÌ Ï ËÁÎ×Å (canvas)!" #~ msgid "" -#~ "can't determine if the end of file is reached on descriptor " -#~ "%d" +#~ "can't determine if the end of file is reached on " +#~ "descriptor %d" #~ msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÏÓÔÉÇÎÕÔ ÌÉ ËÏÎÅà ÆÁÊÌÁ Ó ÄÅÓËÒÉÐÔÏÒÏÍ %d" #~ msgid "bad index in wxArrayString::Insert" diff --git a/locale/sl.po b/locale/sl.po index 67f706b912..7179d3aa56 100644 --- a/locale/sl.po +++ b/locale/sl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows 2.2\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2001-06-28 12:48+0100\n" "Last-Translator: Roman Plevel \n" "Language-Team: transmission \n" @@ -20,20 +20,15 @@ msgid " (error %ld: %s)" msgstr "(napaka %ld: %s)" # common/docview.cpp:1206 -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " # html/htmprint.cpp:490 -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Predogled" -# generic/filedlgg.cpp:328 -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr "byte-ov " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "" @@ -66,12 +61,12 @@ msgstr "" msgid "#define %s must be an integer." msgstr "" -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" @@ -80,14 +75,14 @@ msgstr "" # html/helpfrm.cpp:719 # html/helpfrm.cpp:1277 # html/helpfrm.cpp:1304 -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i od %i" # common/cmdline.cpp:735 -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (ali%s)" @@ -110,6 +105,11 @@ msgstr "%s Informacija" msgid "%s Warning" msgstr "%s Opozorilo" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + # common/resourc2.cpp:709 # common/resource.cpp:2359 #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 @@ -152,7 +152,7 @@ msgstr "&Uredi ikone" # generic/proplist.cpp:523 # generic/wizard.cpp:192 # html/helpfrm.cpp:910 -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 #, fuzzy msgid "&Cancel" msgstr "Preklièi" @@ -164,10 +164,18 @@ msgstr "&Kaskadno" # generic/logg.cpp:477 # generic/tipdlg.cpp:170 -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Zapri" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +msgid "&Delete" +msgstr "" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "" @@ -179,7 +187,7 @@ msgid "&Find" msgstr "Poi¹èi" # generic/wizard.cpp:284 -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Dokonèaj" @@ -187,7 +195,7 @@ msgstr "&Dokon # generic/proplist.cpp:528 # html/helpfrm.cpp:208 # msw/mdi.cpp:1283 -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 #, fuzzy msgid "&Help" msgstr "Pomoè" @@ -202,23 +210,29 @@ msgid "&Move" msgstr "" # msw/mdi.cpp:188 -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&Naslednji" # generic/wizard.cpp:189 # generic/wizard.cpp:286 -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Naslednji" # generic/tipdlg.cpp:175 -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "N&aslednji namig" +# common/cmdline.cpp:912 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "datum" + # html/helpfrm.cpp:512 -#: ../src/msw/mdi.cpp:194 +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 #, fuzzy msgid "&Previous" msgstr "Prej¹nja stran" @@ -226,6 +240,7 @@ msgstr "Prej # common/docview.cpp:1945 # common/docview.cpp:1956 #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "&Ponovi" @@ -253,7 +268,7 @@ msgid "&Save..." msgstr "&Shrani..." # generic/tipdlg.cpp:172 -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Poka¾i namige ob zagonu" @@ -264,7 +279,7 @@ msgid "&Size" msgstr "Velikost" # common/docview.cpp:1951 -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Preklièi" @@ -276,13 +291,15 @@ msgstr "&Prekli # msw/mdi.cpp:1287 # msw/mdi.cpp:1294 # msw/window.cpp:2286 -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Okno" # common/config.cpp:396 # msw/regconf.cpp:264 -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' ima dodaten '..', ignoriran" @@ -295,7 +312,7 @@ msgid "'%s' is invalid" msgstr "'%s' je napaèen" # common/cmdline.cpp:657 -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' ni pravilna numerièna vrednost" @@ -336,15 +353,15 @@ msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' sme vsebovati samo èrkovne ali ¹tevilène znake." # html/helpfrm.cpp:679 -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Pomoè)" # html/helpfrm.cpp:276 # html/helpfrm.cpp:783 # html/helpfrm.cpp:1330 -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(zaznamki)" @@ -363,13 +380,13 @@ msgstr "" # generic/dirdlgg.cpp:264 # generic/filedlgg.cpp:713 -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "" # generic/dirdlgg.cpp:265 # generic/filedlgg.cpp:714 -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr "" @@ -386,72 +403,62 @@ msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "" # html/htmprint.cpp:272 -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": datoteka ne obstaja" # common/fontmap.cpp:507 -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": nepoznan nabor znakov" # common/fontmap.cpp:712 -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": nepoznano kodiranje" # generic/wizard.cpp:186 -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Nazaj" # generic/filedlgg.cpp:356 -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -# generic/filedlgg.cpp:323 -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - # generic/filedlgg.cpp:357 -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -# generic/filedlgg.cpp:324 -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - # html/helpfrm.cpp:928 -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" -"Normalno
    (and podèrtano. Kurzivno. " -"Krepko. Krepko kurzivno.
    velikost èrk " -"-2
    velikost èrk -1
    velikost " -"èrk +0
    velikost èrk +1
    velikost èrk +2
    velikost èrk " -"+3
    velikost èrk +4

    Enaka " -"velikost.
    krepko kurzivno krepko kurzivno " -"podèrtano
    velikost èrk -2
    velikost èrk -1
    velikost èrk " +"Normalno
    (and podèrtano. Kurzivno. Krepko. Krepko kurzivno.
    velikost èrk -2
    velikost èrk -1
    velikost èrk " "+0
    velikost èrk +1
    velikost " -"èrk +2
    velikost èrk +3
    velikost èrk +4
    " +"èrk +2
    velikost èrk +3
    velikost èrk +4

    Enaka velikost.
    krepko " +"kurzivno krepko kurzivno podèrtano
    velikost èrk -2
    velikost èrk -1
    velikost èrk +0
    velikost èrk " +"+1
    velikost èrk +2
    velikost " +"èrk +3
    velikost èrk +4
    " # generic/dcpsg.cpp:2547 #: ../src/common/paper.cpp:113 @@ -486,7 +493,7 @@ msgid "ASCII" msgstr "" # html/helpfrm.cpp:270 -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Dodaj trenutno stran med zaznamke" @@ -507,10 +514,16 @@ msgid "All" msgstr "Vse" # generic/filedlgg.cpp:825 -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Vse datoteke (*)|*" +# generic/filedlgg.cpp:825 +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Vse datoteke (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "" @@ -521,7 +534,7 @@ msgstr "" msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Dodajanje dnevnika v datoteko '%s' (Izberite [Ne] jo preps)" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "" @@ -551,7 +564,7 @@ msgstr "" # common/imagbmp.cpp:266 # common/imagbmp.cpp:278 -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 #, fuzzy msgid "BMP: Couldn't allocate memory." msgstr "BMP: Ne morem alocirati pomnilnika." @@ -589,15 +602,15 @@ msgid "BMP: wxImage doesn't have own wxPalette." msgstr "" # common/dlgcmn.cpp:135 -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Nazaj" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "" @@ -609,7 +622,7 @@ msgid "Bitmap resource specification %s not found." msgstr "" # generic/fontdlgg.cpp:217 -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Krepko" @@ -651,14 +664,14 @@ msgstr "" # common/filefn.cpp:1287 # msw/dir.cpp:294 -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, fuzzy, c-format msgid "Can not enumerate files '%s'" msgstr "Ne morem o¹tevilèiti datotek v imeniku '%s'" # common/filefn.cpp:1287 # msw/dir.cpp:294 -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Ne morem o¹tevilèiti datotek v imeniku '%s'" @@ -691,7 +704,7 @@ msgid "Can't &Undo " msgstr "Ne morem &preklicati" # common/image.cpp:953 -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "Ne morem preveriti formata slike v datoteki '%s': datoteka ne obstaja." @@ -717,7 +730,7 @@ msgstr "" # FIRST AUTHOR , YEAR. # # common/file.cpp:200 -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 #, fuzzy msgid "Can't create dialog using memory template" msgstr "ne morem ustvariti datoteke '%s'" @@ -727,13 +740,13 @@ msgstr "ne morem ustvariti datoteke '%s'" # FIRST AUTHOR , YEAR. # # common/file.cpp:200 -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, fuzzy, c-format msgid "Can't create dialog using template '%ul'" msgstr "ne morem ustvariti datoteke '%s'" # msw/listctrl.cpp:212 -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" @@ -761,7 +774,7 @@ msgstr "ne morem ustvariti niti" # FIRST AUTHOR , YEAR. # # common/file.cpp:200 -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, fuzzy, c-format msgid "Can't create window of class %s" msgstr "ne morem ustvariti datoteke '%s'" @@ -914,68 +927,67 @@ msgstr "ne morem nastaviti vrednosti klju # generic/proplist.cpp:523 # generic/wizard.cpp:192 # html/helpfrm.cpp:910 -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Preklièi" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" # common/fontmap.cpp:332 -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, fuzzy, c-format msgid "Cannot convert from encoding '%s'!" msgstr "nepoznano kodiranje (%s)" # msw/dialup.cpp:518 -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "" # generic/helpext.cpp:96 -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, fuzzy, c-format msgid "Cannot find font node '%s'." msgstr "ne morem odpreti URL '%s'" # msw/dialup.cpp:832 -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "" -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "" # msw/dialup.cpp:925 -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "" # msw/app.cpp:252 -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "" @@ -986,38 +998,38 @@ msgid "Cannot initialize SciTech MGL!" msgstr "Ne morem natisniti prazne strani." # html/helpfrm.cpp:1174 -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 #, fuzzy msgid "Cannot initialize display." msgstr "Ne morem natisniti prazne strani." # common/filefn.cpp:1287 # msw/dir.cpp:294 -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, fuzzy, c-format msgid "Cannot load icon from '%s'." msgstr "Ne morem o¹tevilèiti datotek v imeniku '%s'" # common/ffile.cpp:101 -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, fuzzy, c-format msgid "Cannot load resources from file '%s'." msgstr "ne morem zadpreti datoteke '%s'" # html/htmlfilt.cpp:146 -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Ne morem odpreti dokumenta HTML :%s" # html/helpdata.cpp:657 -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Ne morem odpreti knjige s HTML pomoèjo: %s" # generic/helpext.cpp:96 -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "ne morem odpreti URL '%s'" @@ -1029,69 +1041,69 @@ msgid "Cannot open contents file: %s" msgstr "ne morem datoteke: '%s' z vsebino" # msw/dib.cpp:434 -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, fuzzy, c-format msgid "Cannot open file '%s'." msgstr "Ne morem odpreti datoteke '%s'" # generic/dcpsg.cpp:1584 -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Ne morem odpreti datoteke za tiskanje PostScript" # html/helpdata.cpp:368 -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "ne morem odpreti indeksne datoteke '%s'" # html/helpdata.cpp:353 -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, fuzzy, c-format msgid "Cannot parse coordinates from '%s'." msgstr "ne morem datoteke: '%s' z vsebino" # common/filefn.cpp:1287 # msw/dir.cpp:294 -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, fuzzy, c-format msgid "Cannot parse dimension from '%s'." msgstr "Ne morem o¹tevilèiti datotek v imeniku '%s'" # html/helpfrm.cpp:1174 -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Ne morem natisniti prazne strani." # html/helpdata.cpp:353 -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, fuzzy, c-format msgid "Cannot read typename from '%s'!" msgstr "ne morem datoteke: '%s' z vsebino" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "" -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "" # html/helpfrm.cpp:398 -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Velikost èrk je pomenbna" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "" # msw/dialup.cpp:767 -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "" @@ -1099,6 +1111,14 @@ msgstr "" msgid "Choose font" msgstr "" +# common/prntbase.cpp:359 +# generic/progdlgg.cpp:307 +# generic/proplist.cpp:518 +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Zapri " + # generic/logg.cpp:475 #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" @@ -1107,7 +1127,7 @@ msgstr "Izprazni vsebino dnevnika" # common/prntbase.cpp:359 # generic/progdlgg.cpp:307 # generic/proplist.cpp:518 -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Zapri " @@ -1116,29 +1136,37 @@ msgstr "Zapri " msgid "Close\tAlt-F4" msgstr "" +# common/prntbase.cpp:359 +# generic/progdlgg.cpp:307 +# generic/proplist.cpp:518 +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Zapri " + # generic/logg.cpp:477 #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Zapri to okno" # generic/dirdlgg.cpp:210 -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 #, fuzzy msgid "Computer" msgstr "Raèunalnik" # common/fileconf.cpp:760 -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Vstopno konfiguracijsko ime se ne more zaèeti s '%c'" # generic/filedlgg.cpp:1077 -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Potrdi" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -1150,13 +1178,13 @@ msgstr "Povezovanje..." # generic/helpwxht.cpp:159 # html/helpfrm.cpp:303 # html/helpfrm.cpp:312 -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Vsebina" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "" # generic/prntdlgg.cpp:196 @@ -1179,7 +1207,7 @@ msgid "Could not find tab for id" msgstr "Ne morem najti tab za id" # msw/textctrl.cpp:1249 -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "" @@ -1201,18 +1229,18 @@ msgid "" msgstr "" # common/prntbase.cpp:711 -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Ne morem zaèeti predogleda dokumenta" # generic/printps.cpp:209 # msw/printwin.cpp:252 -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Ne morem zaèeti s tiskanjem." # common/wincmn.cpp:784 -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Ne morem prenesti podatkov v okno" @@ -1221,7 +1249,7 @@ msgstr "Ne morem prenesti podatkov v okno" # msw/imaglist.cpp:152 # msw/imaglist.cpp:174 # msw/imaglist.cpp:187 -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -1240,7 +1268,7 @@ msgid "Couldn't create cursor." msgstr "BMP: Ne morem alocirati pomnilnika." # common/dynlib.cpp:309 -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Ne najdem simbola '%s' v dinamièni knji¾nici" @@ -1251,25 +1279,25 @@ msgid "Couldn't get the current thread pointer" msgstr "" # common/imagpng.cpp:251 -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" # msw/ole/dataobj.cpp:151 -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "" # msw/listctrl.cpp:616 -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "" # common/imagbmp.cpp:62 -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 #, fuzzy msgid "Couldn't save PNG image." msgstr "BMP: Ne morem shraniti nepravilne slike." @@ -1285,16 +1313,20 @@ msgid "Create directory" msgstr "Ustvari imenik" # generic/filedlgg.cpp:883 -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Istvari nov imenik" +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + # generic/filedlgg.cpp:890 -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Trenutni imenik" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "" @@ -1305,42 +1337,36 @@ msgid "D sheet, 22 x 34 in" msgstr "List A4 210 x 297 mm" # msw/dde.cpp:597 -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "" -# common/imagbmp.cpp:387 -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: Zaenkrat ¹e ne znam uporabiti 4-bitnega kodiranja." - # common/imagbmp.cpp:257 -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 #, fuzzy msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "BMP: Kodiranej se ne ujema z bitno globino." # common/imagbmp.cpp:220 -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 #, fuzzy msgid "DIB Header: Image height > 32767 pixels for file." msgstr "BMP: vi¹ina slike > 32767 pikslov za datoteko." # common/imagbmp.cpp:214 -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 #, fuzzy msgid "DIB Header: Image width > 32767 pixels for file." msgstr "BMP: ¹irina slike > 32767 pikslov za datoteko." # common/imagbmp.cpp:234 -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 #, fuzzy msgid "DIB Header: Unknown bitdepth in file." msgstr "BMP: Nepoznana bitna globina v datoteki." # common/imagbmp.cpp:243 -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 #, fuzzy msgid "DIB Header: Unknown encoding in file." msgstr "Nepoznano kodiranje v datoteki." @@ -1350,16 +1376,16 @@ msgid "DL Envelope, 110 x 220 mm" msgstr "" # generic/filedlgg.cpp:535 -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Datum" # generic/fontdlgg.cpp:207 -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "" @@ -1374,23 +1400,23 @@ msgid "Deleted stale lock file '%s'." msgstr "ne morem zbrisati datoteke INI'%s'" # msw/dialup.cpp:354 -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." msgstr "" -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "" # generic/tipdlg.cpp:177 -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Ali ste vedeli..." # common/filefn.cpp:1086 -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Ne morem ustvariti imenika '%s'" @@ -1407,7 +1433,7 @@ msgid "Directory does not exist" msgstr "Imenik ne obstaja" # html/helpfrm.cpp:366 -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." @@ -1416,15 +1442,15 @@ msgstr "" "obèutljivo na velikost èrk" # html/helpfrm.cpp:535 -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Poka¾i pogovorno okno z mo¾nostmi" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" @@ -1432,7 +1458,7 @@ msgid "" msgstr "" # common/docview.cpp:440 -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Ali ¾elite shraniti sprmembe dokumenta %s" @@ -1443,7 +1469,7 @@ msgid "Done" msgstr "Konèano" # generic/progdlgg.cpp:313 -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Konèano." @@ -1468,7 +1494,7 @@ msgid "Entries found" msgstr "Najdeni naslovi" # common/config.cpp:349 -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." @@ -1486,17 +1512,17 @@ msgstr "" # generic/filedlgg.cpp:1043 # generic/filedlgg.cpp:1092 # generic/helpxlp.cpp:241 -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Napaka" # common/log.cpp:362 -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 #, fuzzy msgid "Error " msgstr "Napaka:" @@ -1506,7 +1532,7 @@ msgstr "Napaka:" msgid "Error creating directory" msgstr "Napaka pri ustvarjanju imenika" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "" @@ -1515,7 +1541,7 @@ msgstr "" msgid "Error: " msgstr "Napaka:" -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "" @@ -1525,7 +1551,7 @@ msgid "Estimated time : " msgstr "Prièakovan èas" # msw/utilsexc.cpp:585 -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "" @@ -1567,8 +1593,12 @@ msgstr "" msgid "Expected 'char' whilst parsing resource." msgstr "" +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + # msw/dialup.cpp:860 -#: ../src/msw/dialup.cpp:840 +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "" @@ -1578,7 +1608,7 @@ msgid "Failed to access lock file." msgstr "" # common/ffile.cpp:182 -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 #, fuzzy msgid "Failed to close file handle" msgstr "ne morem izprazniti datoteje '%s'" @@ -1595,12 +1625,12 @@ msgid "Failed to close the clipboard." msgstr "" # msw/dialup.cpp:801 -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "" # msw/dialup.cpp:747 -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "" @@ -1617,13 +1647,13 @@ msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "" # common/ffile.cpp:182 -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, fuzzy, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "ne morem izprazniti datoteje '%s'" # msw/dde.cpp:934 -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "" @@ -1638,29 +1668,49 @@ msgid "Failed to create a status bar." msgstr "" # generic/dirdlgg.cpp:550 -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 #, fuzzy msgid "Failed to create a temporary file name" msgstr "Ne morem ustvariti imenika" # generic/dirdlgg.cpp:550 -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 #, fuzzy msgid "Failed to create an anonymous pipe" msgstr "Ne morem ustvariti imenika" # msw/dde.cpp:401 -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "" # generic/dirdlgg.cpp:550 -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 #, fuzzy msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "Ne morem ustvariti imenika" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +# msw/registry.cpp:399 +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "ne morem ustvariti 'registry' kljuèa '%s'" + +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +# msw/registry.cpp:399 +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "ne morem ustvariti 'registry' kljuèa '%s'" + # generic/dirdlgg.cpp:551 #: ../src/generic/dirdlgg.cpp:201 #, fuzzy, c-format @@ -1687,29 +1737,29 @@ msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" # html/winpars.cpp:364 -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Ne morem prikazati dokumenta HTML, kodiranega v %s" # msw/clipbrd.cpp:134 -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "" # msw/dde.cpp:616 -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "" # msw/dialup.cpp:639 -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "" # common/ffile.cpp:182 -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, fuzzy, c-format msgid "Failed to execute '%s'\n" msgstr "ne morem izprazniti datoteje '%s'" @@ -1742,13 +1792,13 @@ msgid "" msgstr "" # msw/dialup.cpp:699 -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "" # generic/dirdlgg.cpp:550 -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 #, fuzzy msgid "Failed to get clipboard data." msgstr "Ne morem ustvariti imenika" @@ -1759,17 +1809,17 @@ msgid "Failed to get data from the clipboard" msgstr "" # common/timercmn.cpp:244 -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "" # common/timercmn.cpp:196 -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "" # generic/dirdlgg.cpp:550 -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 #, fuzzy msgid "Failed to get the working directory" msgstr "Ne morem ustvariti imenika" @@ -1786,7 +1836,7 @@ msgstr "" msgid "Failed to initialize OpenGL" msgstr "" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1804,19 +1854,19 @@ msgid "Failed to load image %d from file '%s'." msgstr "ne morem izprazniti datoteje '%s'" # generic/dirdlgg.cpp:550 -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 #, fuzzy msgid "Failed to load mpr.dll." msgstr "Ne morem ustvariti imenika" # common/dynlib.cpp:239 -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Ne morem odpreti deljene knji¾nice" # common/dynlib.cpp:239 -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, fuzzy, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Ne morem odpreti deljene knji¾nice" @@ -1833,13 +1883,13 @@ msgid "Failed to match '%s' in regular expression: %s" msgstr "" # common/ffile.cpp:182 -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, fuzzy, c-format msgid "Failed to modify file times for '%s'" msgstr "ne morem izprazniti datoteje '%s'" # generic/dirdlgg.cpp:550 -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, fuzzy, c-format msgid "Failed to open '%s' for %s" msgstr "Ne morem ustvariti imenika" @@ -1850,7 +1900,7 @@ msgstr "Ne morem ustvariti imenika" # # common/file.cpp:580 # common/file.cpp:583 -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 #, fuzzy msgid "Failed to open temporary file." msgstr "ne odstraniti zaèasne datoteke '%s'" @@ -1869,24 +1919,24 @@ msgstr "" msgid "Failed to read PID from lock file." msgstr "" -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "" # generic/dirdlgg.cpp:550 -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 #, fuzzy msgid "Failed to redirect the child process IO" msgstr "Ne morem ustvariti imenika" # msw/dde.cpp:285 -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "" # common/fontmap.cpp:552 -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Ne morem zi zapomniti kodiranje za izbor znakov '%s'." @@ -1931,13 +1981,13 @@ msgid "Failed to retrieve data from the clipboard." msgstr "" # generic/dirdlgg.cpp:550 -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, fuzzy, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Ne morem ustvariti imenika" # msw/dialup.cpp:463 -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "" @@ -1947,7 +1997,7 @@ msgid "Failed to retrieve the supported clipboard formats" msgstr "" # msw/dde.cpp:661 -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "" @@ -1963,13 +2013,13 @@ msgid "Failed to set clipboard data." msgstr "" # common/ffile.cpp:182 -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 #, fuzzy msgid "Failed to set temporary file permissions" msgstr "ne morem izprazniti datoteje '%s'" # generic/dirdlgg.cpp:550 -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, fuzzy, c-format msgid "Failed to set thread priority %d." msgstr "Ne morem ustvariti imenika" @@ -1981,24 +2031,24 @@ msgid "Failed to store image '%s' to memory VFS!" msgstr "Ne morem shraniti slike '%s' v spominski VFS!" # generic/dirdlgg.cpp:550 -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 #, fuzzy msgid "Failed to terminate a thread." msgstr "Ne morem ustvariti imenika" # msw/dde.cpp:635 -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "" # msw/dialup.cpp:933 -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "" # common/ffile.cpp:182 -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, fuzzy, c-format msgid "Failed to touch the file '%s'" msgstr "ne morem izprazniti datoteje '%s'" @@ -2010,7 +2060,7 @@ msgid "Failed to unlock lock file '%s'" msgstr "ne morem izprazniti datoteje '%s'" # msw/dde.cpp:301 -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "" @@ -2032,7 +2082,7 @@ msgid "Fatal error: " msgstr "Fatalna napaka:" # msw/app.cpp:1263 -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Fatalna napaka: izstop" @@ -2043,13 +2093,13 @@ msgid "File %s does not exist." msgstr ": datoteka ne obstaja" # generic/filedlgg.cpp:1074 -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Datoteka %s ¾e obstaja. Ali jo res ¾elite prepisati?" # generic/filedlgg.cpp:1074 -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, fuzzy, c-format msgid "" "File '%s' already exists.\n" @@ -2064,25 +2114,25 @@ msgstr "" # common/docview.cpp:296 # common/docview.cpp:332 # common/docview.cpp:1388 -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Datoteèna napaka:" # generic/dirdlgg.cpp:286 # generic/filedlgg.cpp:731 -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Datoteka ¾e obstaja" # msw/filedlg.cpp:303 -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "" # html/helpfrm.cpp:340 -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Poi¹èi" @@ -2096,17 +2146,17 @@ msgid "Folio, 8 1/2 x 13 in" msgstr "" # html/helpfrm.cpp:899 -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Velikost pisave" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "" # common/dlgcmn.cpp:132 # generic/helpwxht.cpp:158 -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Naprej" @@ -2122,7 +2172,7 @@ msgid "Found " msgstr "" # html/helpfrm.cpp:637 -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Najdenij %i ujemanj" @@ -2173,43 +2223,35 @@ msgid "GetUnusedColour:: No Unused Color in image " msgstr "" # html/helpfrm.cpp:501 -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Nazaj" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - # html/helpfrm.cpp:504 -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Naprej" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - # html/helpfrm.cpp:509 -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "En nivo vi¹je v hierarhiji dokumenta" # generic/filedlgg.cpp:875 -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Pojdi na domaèi imenik" # generic/filedlgg.cpp:869 -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Pojdi menik gor" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "" @@ -2220,17 +2262,16 @@ msgid "HTML anchor %s does not exist." msgstr "HTML sidro %s ne obstaja" # html/helpfrm.cpp:1188 -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" "HTML datoteke (*.htm)|*.htm|HTML datoteke (*.html)|*.html|Knjige s pomoèjo " -"(*.htb)|*.htb|Knjige s pomoèjo (*.zip)|*.zip|HTML Projekt pomoèi " -"(*.hhp)|*.hhp|Vse datoteke (*.*)|*" +"(*.htb)|*.htb|Knjige s pomoèjo (*.zip)|*.zip|HTML Projekt pomoèi (*.hhp)|*." +"hhp|Vse datoteke (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "" @@ -2238,20 +2279,14 @@ msgstr "" # generic/proplist.cpp:528 # html/helpfrm.cpp:208 # msw/mdi.cpp:1283 -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Pomoè" -# generic/helpwxht.cpp:251 -# html/helpctrl.cpp:38 -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "Pomoè %s" - # html/helpfrm.cpp:872 -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Mo¾nosti Brkljalnika Pomoèi" @@ -2262,7 +2297,7 @@ msgid "Help Index" msgstr "Indeks pomoèi" # html/helpfrm.cpp:1172 -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Pomoè pri tiskanju" @@ -2273,26 +2308,26 @@ msgstr "Pomo msgid "Help: %s" msgstr "Pomoè %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "" -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" msgstr "" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." msgstr "" @@ -2331,12 +2366,12 @@ msgstr "" # generic/dirdlgg.cpp:268 # generic/filedlgg.cpp:717 -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Napaèno ime imenika" # generic/filedlgg.cpp:1043 -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Napaèna specifikacija datoteke" @@ -2344,13 +2379,13 @@ msgstr "Napa msgid "Image and Mask have different sizes" msgstr "" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "" # msw/textctrl.cpp:219 -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -2360,28 +2395,28 @@ msgstr "" msgid "Impossible to get child process input" msgstr "" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "" # common/ffile.cpp:182 -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, fuzzy, c-format msgid "Impossible to overwrite the file '%s'" msgstr "ne morem izprazniti datoteje '%s'" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "" # html/helpfrm.cpp:372 -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Indeks" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "" @@ -2390,19 +2425,19 @@ msgstr "" msgid "Invalid TIFF image index." msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" # generic/filedlgg.cpp:1043 -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, fuzzy, c-format msgid "Invalid display mode specification '%s'." msgstr "Napaèna specifikacija datoteke" # generic/filedlgg.cpp:1043 -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, fuzzy, c-format msgid "Invalid geometry specification '%s'" msgstr "Napaèna specifikacija datoteke" @@ -2419,7 +2454,7 @@ msgid "Invalid regular expression '%s': %s" msgstr "" # generic/fontdlgg.cpp:213 -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Kurzivno" @@ -2437,7 +2472,7 @@ msgstr "" msgid "JPEG: Couldn't save image." msgstr "" -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "" @@ -2470,19 +2505,19 @@ msgid "Letter, 8 1/2 x 11 in" msgstr "" # generic/fontdlgg.cpp:216 -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Svetlo" # generic/filedlgg.cpp:1270 # msw/filedlg.cpp:483 -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" msgstr "" @@ -2526,7 +2561,7 @@ msgid "Ma&ximize" msgstr "" # common/fileconf.cpp:526 -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, fuzzy, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "datoteka '%s', vrstica %d: vrednost immutable kluèa '%s' ignorirana." @@ -2549,7 +2584,7 @@ msgstr "" msgid "Mi&nimize" msgstr "" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "" @@ -2560,7 +2595,7 @@ msgid "Mode %ix%i-%i not available." msgstr "" # generic/fontdlgg.cpp:208 -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "" @@ -2569,29 +2604,29 @@ msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "" # common/dlgcmn.cpp:141 -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Veè..." # generic/filedlgg.cpp:533 -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Ime" # generic/filedlgg.cpp:610 #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "NovoIme" # html/helpfrm.cpp:515 -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Naslednja stran" # common/dlgcmn.cpp:111 # common/dlgcmn.cpp:121 -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Ne" @@ -2621,7 +2656,7 @@ msgid "No entries found." msgstr "Ne najdem naslovov" # common/fontmap.cpp:716 -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2634,7 +2669,7 @@ msgstr "" "(secer besedilo ne bo prikazano pravilno)?" # common/fontmap.cpp:716 -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2645,49 +2680,48 @@ msgstr "" "®elite izbrati drugo pisavo za prikaz tega kodiranja\n" "(secer besedilo ne bo prikazano pravilno)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" # common/image.cpp:758 -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Ne najdem handlerja za tip slike." # common/image.cpp:766 # common/image.cpp:800 -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "" # common/image.cpp:784 # common/image.cpp:816 -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "" # html/helpfrm.cpp:628 -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Ne najdem ustrezne strani" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "" # generic/fontdlgg.cpp:212 # generic/fontdlgg.cpp:215 -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normalno" # html/helpfrm.cpp:881 -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normalna pisava:" @@ -2704,18 +2738,18 @@ msgstr "" # generic/prntdlgg.cpp:467 # generic/proplist.cpp:511 # html/helpfrm.cpp:909 -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "V redu" # html/helpfrm.cpp:523 # html/helpfrm.cpp:1183 -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "Odpri HTML dokument" @@ -2723,25 +2757,25 @@ msgstr "Odpri HTML dokument" # generic/dirdlgg.cpp:605 # generic/filedlgg.cpp:625 # generic/filedlgg.cpp:744 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Operacija ni dovoljena" # common/cmdline.cpp:590 -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Opcija '%s' zahteva vrednost, prièakujem '='." # common/cmdline.cpp:610 -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Opcija '%s' zahteva vrednost." # common/cmdline.cpp:671 -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Opcije '%s':'%s' ne morem pretvoriti v datum" @@ -2805,13 +2839,13 @@ msgid "PNM: File seems truncated." msgstr "" # common/prntbase.cpp:731 -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Stran %d" # common/prntbase.cpp:729 -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Stran %d v %d" @@ -2843,11 +2877,11 @@ msgid "Paper size" msgstr "Velikost papirja" # generic/filedlgg.cpp:537 -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Dovoljenja" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "" @@ -2858,16 +2892,16 @@ msgid "Please choose a valid font." msgstr "Izberi obstojeèo datoteko" # generic/filedlgg.cpp:1092 -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Izberi obstojeèo datoteko" # msw/dialup.cpp:768 -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2875,7 +2909,7 @@ msgid "" "or this program won't operate correctly." msgstr "" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "" @@ -2891,17 +2925,13 @@ msgstr "Portet" msgid "PostScript file" msgstr "PostScript datoteka" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - # html/helpfrm.cpp:903 -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Predogled" # html/helpfrm.cpp:512 -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Prej¹nja stran" @@ -2912,13 +2942,13 @@ msgid "Print" msgstr "Tiskanje" # common/docview.cpp:897 -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Predogled tiskanja" # common/prntbase.cpp:687 # common/prntbase.cpp:711 -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Napaka pri predogledu tiskanja" @@ -2944,7 +2974,7 @@ msgid "Print spooling" msgstr "Spooling tiskanja" # html/helpfrm.cpp:529 -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Natisni to stran" @@ -2955,7 +2985,7 @@ msgid "Print to File" msgstr "Po¹li v datoteko" # common/prntbase.cpp:366 -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Tiskaj..." @@ -2981,24 +3011,24 @@ msgstr "Tiskalnik..." # common/prntbase.cpp:106 # common/prntbase.cpp:148 -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 #, fuzzy msgid "Printing " msgstr "Tiskam" # common/prntbase.cpp:120 -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Napaka pri tiskanju" # generic/printps.cpp:232 -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Tsikanje strani %d..." # generic/printps.cpp:192 -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Tiskanje..." @@ -3025,7 +3055,7 @@ msgstr "Vpra msgid "Read error on file '%s'" msgstr "napaka pri branjui datoteke '%s'" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -3057,10 +3087,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "" -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - # generic/helphtml.cpp:319 #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" @@ -3072,7 +3098,7 @@ msgid "Remaining time : " msgstr "Preostanek èasa" # html/helpfrm.cpp:269 -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Odstrani trenutno stran iz zaznamkov" @@ -3090,7 +3116,7 @@ msgstr "Zamenjam datoteko '%s'?" msgid "Replace with:" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "" @@ -3100,26 +3126,26 @@ msgid "Right margin (mm):" msgstr "Desni rob" # generic/fontdlgg.cpp:206 -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "" # generic/filedlgg.cpp:1286 # msw/filedlg.cpp:484 -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "" # common/docview.cpp:249 -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Shrani kot" # common/docview.cpp:1371 # common/docview.cpp:1422 -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 #, fuzzy msgid "Save file" msgstr "Izberi datoteko" @@ -3129,25 +3155,20 @@ msgstr "Izberi datoteko" msgid "Save log contents to file" msgstr "Shrani vsebino dnevnika v datoteko" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - # generic/fontdlgg.cpp:209 -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "" # generic/helpwxht.cpp:161 # html/helpfrm.cpp:414 # html/helpfrm.cpp:434 -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Iskanje" # html/helpfrm.cpp:416 -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -3169,26 +3190,17 @@ msgid "Search for:" msgstr "Iskanje" # html/helpfrm.cpp:735 -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "I¹èi v vseh knjigah" -# generic/helpwxht.cpp:161 -# html/helpfrm.cpp:414 -# html/helpfrm.cpp:434 -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "Iskanje" - # html/helpfrm.cpp:628 -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Iskanje..." # generic/dirdlgg.cpp:191 -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Sekcije" @@ -3198,30 +3210,37 @@ msgstr "Sekcije" msgid "Seek error on file '%s'" msgstr "napaka pri iskanju v datoteki '%s'" +# common/docview.cpp:1371 +# common/docview.cpp:1422 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Izberi datoteko" + # common/docview.cpp:1469 -#: ../src/common/docview.cpp:1538 +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Izberi ¹ablono dokumenta" # common/docview.cpp:1494 -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Izberi naèin ogleda dokumenta" # common/docview.cpp:1371 # common/docview.cpp:1422 -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Izberi datoteko" # common/cmdline.cpp:627 -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Po opciji '%s' prièakujem loèilo." # common/dlgcmn.cpp:138 -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Nastavitev" @@ -3231,17 +3250,17 @@ msgid "Setup..." msgstr "Nastavitve..." # msw/dialup.cpp:539 -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" # html/helpfrm.cpp:331 -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Poka¾i vse" # html/helpfrm.cpp:365 -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Poka¾i vse predmete v indeksu" @@ -3252,45 +3271,45 @@ msgid "Show hidden directories" msgstr "Poka¾i skrite datoteke" # generic/filedlgg.cpp:913 -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Poka¾i skrite datoteke" # html/helpfrm.cpp:496 -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Poka¾i/Skrij navigacijski pano" # generic/filedlgg.cpp:534 -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Velikost" # generic/fontdlgg.cpp:214 -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Levo kurzivno" # common/docview.cpp:306 -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Ne morem odpreti te datoteke za shranjevanje." # common/docview.cpp:342 # common/docview.cpp:354 # common/docview.cpp:1390 -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Ne morem odpreti te datoteke" # common/docview.cpp:313 -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Ne morem shraniti te datoteke" # common/prntbase.cpp:687 -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Ni dovolj spomina za predogled tiskanja" @@ -3303,13 +3322,13 @@ msgstr "" msgid "Status: " msgstr "Stanje:" -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" # generic/fontdlgg.cpp:210 -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "" @@ -3346,16 +3365,16 @@ msgid "Tabloid, 11 x 17 in" msgstr "" # generic/fontdlgg.cpp:211 -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "" # common/docview.cpp:1469 -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "©ablone" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "" @@ -3364,7 +3383,7 @@ msgid "The FTP server doesn't support passive mode." msgstr "" # common/fontmap.cpp:511 -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -3376,7 +3395,7 @@ msgstr "" "[Preklièil] èe ne more biti zamenjan" # msw/ole/dataobj.cpp:169 -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "" @@ -3393,7 +3412,7 @@ msgstr "" "Ga ustvarim?" # common/docview.cpp:1676 -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, fuzzy, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -3402,13 +3421,13 @@ msgstr "" "Datoteka '%s' ne obstaja.\n" "Prav tako je bila izbisana iz seznama MRU datotek." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "" # common/cmdline.cpp:761 -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Zahtevani parameter '%s' ni bil podan." @@ -3419,19 +3438,19 @@ msgid "The text couldn't be saved." msgstr "" # common/cmdline.cpp:740 -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Vrednost opcije '%s' mora biti podana." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " "tooold, please upgrade (the following required function is missing: %s)." msgstr "" -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -3443,7 +3462,7 @@ msgid "" "storage" msgstr "" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" @@ -3454,7 +3473,7 @@ msgid "" "local storage" msgstr "" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "" @@ -3469,17 +3488,17 @@ msgid "Tile &Vertically" msgstr "Zlo¾i &Vertikalno" # generic/filedlgg.cpp:536 -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Èas" # generic/tipdlg.cpp:162 -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Namigi dneva" # generic/tipdlg.cpp:138 -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Oprostite, namigi niso na voljo" @@ -3505,7 +3524,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "" @@ -3520,7 +3539,7 @@ msgid "Unable to open requested HTML document: %s" msgstr "Ne morem odpreti zahtevanega HTML dokumenta: %s" # generic/fontdlgg.cpp:242 -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Podèrtano" @@ -3558,49 +3577,49 @@ msgid "Unexpected end of file whilst parsing resource." msgstr "" # common/cmdline.cpp:712 -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Neprièakovan parameter '%s'" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "" # msw/dde.cpp:1030 -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "" # common/fontmap.cpp:332 -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "nepoznano kodiranje (%s)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "" # common/cmdline.cpp:496 -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Nepoznana dolga opcija '%s'" # common/cmdline.cpp:518 -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Nepoznana opcija '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -3627,12 +3646,12 @@ msgstr "" # msw/clipbrd.cpp:268 # msw/clipbrd.cpp:369 -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "" -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "" @@ -3642,7 +3661,7 @@ msgid "Up" msgstr "" # common/cmdline.cpp:797 -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Uporaba: %s" @@ -3653,27 +3672,27 @@ msgid "Validation conflict" msgstr "Konflikt pri preverjanju" # generic/filedlgg.cpp:861 -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Poka¾i podrobnosti" # generic/filedlgg.cpp:855 -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Poka¾i kot seznam" # common/docview.cpp:1494 -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Pogledi" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "" # common/docview.cpp:437 # common/resource.cpp:121 -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Opozorilo" @@ -3683,15 +3702,15 @@ msgid "Warning: " msgstr "Opozorilo" # html/htmlpars.cpp:177 -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "Opozorilo: poskus dodajanja praznega HTML 'tag'-a s praznega sklada" -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "" @@ -3702,7 +3721,7 @@ msgid "Whole word" msgstr "Samo cele besede" # html/helpfrm.cpp:406 -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Samo cele besede" @@ -3711,70 +3730,70 @@ msgid "Win32 theme" msgstr "" # msw/utils.cpp:545 -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "" # msw/utils.cpp:583 -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "" # msw/utils.cpp:549 -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "" @@ -3798,28 +3817,24 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" # common/dlgcmn.cpp:109 # common/dlgcmn.cpp:116 -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Da" @@ -3829,22 +3844,22 @@ msgstr "Da" msgid "You cannot add a new directory to this section." msgstr "Ne morete dodati novega imenika v to sekcijo" -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" # common/docview.cpp:2034 -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[PRAZEN]" # msw/dde.cpp:997 -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "" # msw/dde.cpp:985 -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3853,47 +3868,47 @@ msgid "" msgstr "" # msw/dde.cpp:1003 -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "" # msw/dde.cpp:1000 -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "" # msw/dde.cpp:994 -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "" # msw/dde.cpp:976 -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" # msw/dde.cpp:982 -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" # msw/dde.cpp:991 -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" # msw/dde.cpp:1009 -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" # msw/dde.cpp:1024 -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" # msw/dde.cpp:1018 -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3901,7 +3916,7 @@ msgid "" msgstr "" # msw/dde.cpp:1006 -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "" @@ -3911,7 +3926,7 @@ msgid "alt" msgstr "" # msw/dde.cpp:988 -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3920,17 +3935,17 @@ msgid "" msgstr "" # msw/dde.cpp:1012 -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "" # msw/dde.cpp:1021 -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "" # msw/dde.cpp:1027 -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3938,7 +3953,7 @@ msgid "" msgstr "" # common/fileconf.cpp:1450 -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "poskus spremembe nestremenjivega kljuèa '%s' je bil ignoriran." @@ -3948,13 +3963,13 @@ msgid "binary" msgstr "" # generic/fontdlgg.cpp:217 -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 #, fuzzy msgid "bold" msgstr "Krepko" # generic/fontdlgg.cpp:217 -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 #, fuzzy msgid "bold " msgstr "Krepko" @@ -3966,7 +3981,7 @@ msgid "can't close file '%s'" msgstr "ne morem zadpreti datoteke '%s'" # common/file.cpp:257 -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "ne morem zapreti datoteènega deskriptorja %d" @@ -3977,7 +3992,7 @@ msgstr "ne morem zapreti datote # # common/file.cpp:557 # common/file.cpp:567 -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "ne uveljviti sprememb datoteke '%s'" @@ -3987,7 +4002,7 @@ msgstr "ne uveljviti sprememb datoteke '%s'" # FIRST AUTHOR , YEAR. # # common/file.cpp:200 -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "ne morem ustvariti datoteke '%s'" @@ -3997,20 +4012,20 @@ msgstr "ne morem ustvariti datoteke '%s'" # FIRST AUTHOR , YEAR. # # common/fileconf.cpp:920 -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "ne morem zbrisati uporabnikove datoteke '%s'" # common/file.cpp:438 -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" "ne morem ugotoviti, ali je bil konec datoteke dose¾en na deskriptorju %d" # common/file.cpp:404 -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "ne morem najti dol¾ine datoteke na datoteènem deskriptorju %d" @@ -4021,48 +4036,48 @@ msgid "can't find user's HOME, using current directory." msgstr "" # common/file.cpp:319 -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "ne morem izprazniti deskriptorja %d" # common/file.cpp:373 -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "ne morem iskalne pozicije v datoteènem deskriptorju %d" # common/fontmap.cpp:646 -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "ne morem nalo¾iti katere koli posave, prekinjam" # common/ffile.cpp:85 # common/file.cpp:243 -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "ne morem odpreti datoteke '%s'" # common/fileconf.cpp:319 -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "ne morem odpreti globalne konfiguracijske datoteke '%s'" # common/fileconf.cpp:331 -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "ne morem odpreti uporabnikove konfiguracijske datoteke '%s'" # common/fileconf.cpp:800 -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "ne morem odpreti uporabni¹ke konfiguracijske datoteke" # common/file.cpp:285 -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "ne morem brati iz deskriptorja %d" @@ -4073,7 +4088,7 @@ msgstr "ne morem brati iz deskriptorja %d" # # common/file.cpp:552 # common/file.cpp:562 -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "ne morem odstraniti datoteke '%s'" @@ -4084,13 +4099,13 @@ msgstr "ne morem odstraniti datoteke '%s'" # # common/file.cpp:580 # common/file.cpp:583 -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "ne odstraniti zaèasne datoteke '%s'" # common/file.cpp:359 -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "ne morem iskati na datoteènem deskriptorju" @@ -4106,13 +4121,13 @@ msgid "can't write buffer '%s' to disk." msgstr "ne morem zapisati datoteke '%s' na disk" # common/file.cpp:304 -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "ne morem pisati na deskriptor %d" # common/fileconf.cpp:807 -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "ne morem zapisati uporabni¹ke konfiguracijske datoteke" @@ -4128,36 +4143,36 @@ msgid "ctrl" msgstr "" # common/cmdline.cpp:912 -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "datum" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "" # generic/fontdlgg.cpp:216 -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 #, fuzzy msgid "eighth" msgstr "Svetlo" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "" # common/fileconf.cpp:1437 -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "vstop '%s' se pojavi veèkrat v skupini '%s'" # msw/dialup.cpp:861 -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "" @@ -4167,72 +4182,77 @@ msgstr "" msgid "failed to flush the file '%s'" msgstr "ne morem izprazniti datoteje '%s'" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "" # common/fileconf.cpp:481 -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "datoteka '%s', vrstica %d: '%s' je bil ignoriran po skupinski glavi." # common/fileconf.cpp:510 -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "datoteka '%s', vrstica %d: '=' prièakovan." # common/fileconf.cpp:536 -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "datoteka '%s', vrstica %d: kljuè '%s' je bil ¾e najden v vrstici %d." # common/fileconf.cpp:526 -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "datoteka '%s', vrstica %d: vrednost immutable kluèa '%s' ignorirana." # common/fileconf.cpp:449 -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "datoteka '%s': neprièakovan znak %c v vrstici %d" -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "" # common/timercmn.cpp:240 -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "" +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + # msw/dialup.cpp:861 -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "" # common/file.cpp:442 -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "eof() vrnil napaèno vrednost" @@ -4242,24 +4262,19 @@ msgid "invalid message box return value" msgstr "Napaèna vrnjena vrednost sporoèilnega okna" # generic/fontdlgg.cpp:213 -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 #, fuzzy msgid "italic" msgstr "Kurzivno" -# html/helpfrm.cpp:874 -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "velike" - # generic/fontdlgg.cpp:216 -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 #, fuzzy msgid "light" msgstr "Svetlo" # generic/fontdlgg.cpp:216 -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 #, fuzzy msgid "light " msgstr "Svetlo" @@ -4276,72 +4291,67 @@ msgstr "ne morem nastaviti locale '%s'." msgid "looking for catalog '%s' in path '%s'." msgstr "iskanje kataloga '%s' v poti '%s'" -# html/helpfrm.cpp:874 -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "srednje" - # generic/fontdlgg.cpp:216 -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 #, fuzzy msgid "midnight" msgstr "Svetlo" # common/timercmn.cpp:236 -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "" # generic/prntdlgg.cpp:113 # generic/prntdlgg.cpp:127 -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 #, fuzzy msgid "ninth" msgstr "Tiskanje" # msw/dde.cpp:972 -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "" # html/helpdata.cpp:644 -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "neimanovana" # html/helpdata.cpp:644 -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 #, fuzzy msgid "noon" msgstr "neimanovana" # common/cmdline.cpp:911 -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "¹t" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "" # msw/dde.cpp:1015 -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "" @@ -4350,93 +4360,88 @@ msgstr "" msgid "shift" msgstr "" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "" -# html/helpfrm.cpp:874 -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "male" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "" # common/cmdline.cpp:910 -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" # generic/helpwxht.cpp:159 # html/helpfrm.cpp:303 # html/helpfrm.cpp:312 -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 #, fuzzy msgid "tenth" msgstr "Vsebina" # msw/dde.cpp:979 -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "" -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "" # generic/fontdlgg.cpp:242 -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 #, fuzzy msgid "underlined" msgstr "Podèrtano" # generic/fontdlgg.cpp:242 -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 #, fuzzy msgid "underlined " msgstr "Podèrtano" # common/fileconf.cpp:1557 -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "neprièakovan \" na poziciji %d v '%s'." # generic/progdlgg.cpp:241 -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "nepoznan" @@ -4447,13 +4452,19 @@ msgid "unknown error" msgstr "nepoznan" # msw/dialup.cpp:466 -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "" # common/file.cpp:342 -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "nepoznana smer iskanja" + +# common/file.cpp:342 +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "nepoznana smer iskanja" @@ -4464,12 +4475,12 @@ msgid "unknown-%d" msgstr "nepoznan-%d" # common/docview.cpp:406 -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "neimenovana" # common/docview.cpp:1188 -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "neimenovana%d" @@ -4480,19 +4491,9 @@ msgstr "neimenovana%d" msgid "using catalog '%s' from '%s'." msgstr "uporabljam katalog '%s' iz '%s'" -# html/helpfrm.cpp:874 -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "zelo velike" - -# html/helpfrm.cpp:874 -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "zelo male" - # common/prntbase.cpp:106 # common/prntbase.cpp:148 -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 #, fuzzy msgid "writing" msgstr "Tiskam" @@ -4502,20 +4503,16 @@ msgstr "Tiskam" msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" # common/timercmn.cpp:267 -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "" -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - # common/socket.cpp:347 # common/socket.cpp:401 #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 @@ -4528,25 +4525,70 @@ msgid "wxSocket: unknown event!." msgstr "" # common/docview.cpp:306 -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, fuzzy, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "Ne morem odpreti te datoteke za shranjevanje." # common/docview.cpp:306 -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 #, fuzzy msgid "wxWindows could not open display. Exiting." msgstr "Ne morem odpreti te datoteke za shranjevanje." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "" -# generic/filedlgg.cpp:825 +# generic/filedlgg.cpp:328 +#~ msgid " bytes " +#~ msgstr "byte-ov " + +# generic/filedlgg.cpp:323 +#~ msgid "

    " +#~ msgstr " " + +# generic/filedlgg.cpp:324 +#~ msgid " " +#~ msgstr " " + +# common/imagbmp.cpp:387 #, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "Vse datoteke (*)|*" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "BMP: Zaenkrat ¹e ne znam uporabiti 4-bitnega kodiranja." + +# generic/helpwxht.cpp:251 +# html/helpctrl.cpp:38 +#, fuzzy +#~ msgid "Help : %s" +#~ msgstr "Pomoè %s" + +# generic/helpwxht.cpp:161 +# html/helpfrm.cpp:414 +# html/helpfrm.cpp:434 +#, fuzzy +#~ msgid "Search!" +#~ msgstr "Iskanje" + +# html/helpfrm.cpp:874 +#~ msgid "large" +#~ msgstr "velike" + +# html/helpfrm.cpp:874 +#~ msgid "medium" +#~ msgstr "srednje" + +# html/helpfrm.cpp:874 +#~ msgid "small" +#~ msgstr "male" + +# html/helpfrm.cpp:874 +#~ msgid "very large" +#~ msgstr "zelo velike" + +# html/helpfrm.cpp:874 +#~ msgid "very small" +#~ msgstr "zelo male" # generic/fontdlgg.cpp:124 #~ msgid "Font" @@ -4588,11 +4630,6 @@ msgstr "" #~ msgid "Y Translation" #~ msgstr "Y Translacija" -# common/file.cpp:342 -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "nepoznana smer iskanja" - # generic/logg.cpp:371 #, fuzzy #~ msgid "Fatal Error" diff --git a/locale/sv.po b/locale/sv.po index 44662fd099..78f63ca72c 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -1,12 +1,12 @@ msgid "" msgstr "" -"Project-Id-Version: wxWindows-2.3.3\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" -"PO-Revision-Date: 2002-08-28 00:13+0100\n" +"Project-Id-Version: wxWindows-2.4\n" +"POT-Creation-Date: 2002-12-27 23:25+0100\n" +"PO-Revision-Date: 2002-12-24 03:37+0100\n" "Last-Translator: Jonas Rydberg \n" "Language-Team: wxWindows translators \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/common/log.cpp:304 @@ -14,18 +14,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (fel %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr " Förhandsgranska" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr " byte " - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Kuvert, 4 1/8 x 9 1/2 tum" @@ -46,34 +42,20 @@ msgstr "#14 Kuvert, 5 x 11 1/2 tum" msgid "#9 Envelope, 3 7/8 x 8 7/8 in" msgstr "#9 Kuvert, 3 7/8 x 8 7/8 tum" -#: ../src/common/resourc2.cpp:265 -#: ../src/common/resourc2.cpp:1326 -#: ../src/common/resource.cpp:1784 -#: ../src/common/resource.cpp:1914 +#: ../src/common/resourc2.cpp:265 ../src/common/resourc2.cpp:1326 +#: ../src/common/resource.cpp:1784 ../src/common/resource.cpp:1914 #: ../src/common/resource.cpp:2994 #, c-format msgid "#define %s must be an integer." msgstr "#define %s måste vara ett heltal." -#: ../src/common/prntbase.cpp:376 -#, c-format -msgid "%d" -msgstr "%d" - -#: ../src/common/prntbase.cpp:374 -#, c-format -msgid "%d...%d" -msgstr "%d...%d" - -#: ../src/html/helpfrm.cpp:772 -#: ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 -#: ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1408 ../src/html/helpfrm.cpp:1438 #, c-format msgid "%i of %i" msgstr "%i av %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (eller %s)" @@ -93,22 +75,23 @@ msgstr "%s Information" msgid "%s Warning" msgstr "%s Varning" -#: ../src/common/resourc2.cpp:709 -#: ../src/common/resource.cpp:2366 +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "%s meddelande" + +#: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." msgstr "%s är inte en bildresursspecifkation." -#: ../src/common/resourc2.cpp:860 -#: ../src/common/resource.cpp:2520 +#: ../src/common/resourc2.cpp:860 ../src/common/resource.cpp:2520 #, c-format msgid "%s not an icon resource specification." msgstr "%s är inte en ikonresursspecifikation." -#: ../src/common/resourc2.cpp:357 -#: ../src/common/resourc2.cpp:1422 -#: ../src/common/resource.cpp:1877 -#: ../src/common/resource.cpp:2006 +#: ../src/common/resourc2.cpp:357 ../src/common/resourc2.cpp:1422 +#: ../src/common/resource.cpp:1877 ../src/common/resource.cpp:2006 #: ../src/common/resource.cpp:3091 #, c-format msgid "%s: ill-formed resource file syntax." @@ -118,8 +101,7 @@ msgstr "%s: felaktig resursfilsyntax." msgid "&Arrange Icons" msgstr "Ordna &ikoner" -#: ../src/generic/fdrepdlg.cpp:170 -#: ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "&Avbryt" @@ -127,11 +109,18 @@ msgstr "&Avbryt" msgid "&Cascade" msgstr "Över&lappande" -#: ../src/generic/logg.cpp:491 -#: ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Stäng" +#: ../src/msw/textctrl.cpp:1684 +msgid "&Copy" +msgstr "K&opiera" + +#: ../src/msw/textctrl.cpp:1686 +msgid "&Delete" +msgstr "&Ta bort" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Detaljer" @@ -140,11 +129,11 @@ msgstr "&Detaljer" msgid "&Find" msgstr "&Sök" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Avsluta" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "&Hjälp" @@ -156,30 +145,32 @@ msgstr "&Logga" msgid "&Move" msgstr "&Flytta" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&Nästa" -#: ../src/generic/wizard.cpp:257 -#: ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Nästa >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "&Nästa Tips" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1685 +msgid "&Paste" +msgstr "K&listra in" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" msgstr "&Föregående" -#: ../src/common/cmdproc.cpp:261 -#: ../src/common/cmdproc.cpp:272 +#: ../src/common/cmdproc.cpp:279 ../src/common/cmdproc.cpp:286 +#: ../src/msw/textctrl.cpp:1681 msgid "&Redo" msgstr "&Upprepa" -#: ../src/common/cmdproc.cpp:255 -#: ../src/common/cmdproc.cpp:282 +#: ../src/common/cmdproc.cpp:275 ../src/common/cmdproc.cpp:295 msgid "&Redo " msgstr "&Upprepa " @@ -191,12 +182,11 @@ msgstr "&Ers msgid "&Restore" msgstr "&Återställ" -#: ../src/generic/logg.cpp:487 -#: ../src/generic/logg.cpp:818 +#: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "&Spara..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "&Visa tips vid start" @@ -204,34 +194,32 @@ msgstr "&Visa tips vid start" msgid "&Size" msgstr "&Storlek" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:257 ../src/msw/textctrl.cpp:1680 msgid "&Undo" msgstr "&Ångra" -#: ../src/common/cmdproc.cpp:241 +#: ../src/common/cmdproc.cpp:251 msgid "&Undo " msgstr "&Ångra " -#: ../src/msw/mdi.cpp:1328 -#: ../src/msw/mdi.cpp:1335 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 #: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Fönster" -#: ../src/common/config.cpp:394 -#: ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "\"%s\" har extra \"..\", ignoreras." -#: ../src/common/valtext.cpp:147 -#: ../src/common/valtext.cpp:177 +#: ../src/common/valtext.cpp:147 ../src/common/valtext.cpp:177 #: ../src/common/valtext.cpp:183 #, c-format msgid "'%s' is invalid" msgstr "\"%s\" är ogiltig" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "\"%s\" är inte ett korrekt numeriskt värde för flagga \"%s\"." @@ -266,34 +254,30 @@ msgstr "\"%s\" f msgid "'%s' should only contain alphabetic or numeric characters." msgstr "\"%s\" får bara innehålla alfabetiska eller numeriska tecken." -#: ../src/html/helpfrm.cpp:709 -#: ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Hjälp)" -#: ../src/html/helpfrm.cpp:310 -#: ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1465 msgid "(bookmarks)" msgstr "(bokmärken)" -#: ../src/common/resourc2.cpp:297 -#: ../src/common/resourc2.cpp:1362 -#: ../src/common/resource.cpp:1816 -#: ../src/common/resource.cpp:1946 +#: ../src/common/resourc2.cpp:297 ../src/common/resourc2.cpp:1362 +#: ../src/common/resource.cpp:1816 ../src/common/resource.cpp:1946 #: ../src/common/resource.cpp:3030 -msgid ", expected static, #include or #define\n" +msgid "" +", expected static, #include or #define\n" "whilst parsing resource." -msgstr ", förväntade static, #include eller #define\n" +msgstr "" +", förväntade static, #include eller #define\n" "när resursen tolkades." -#: ../src/generic/dirctrlg.cpp:698 -#: ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:953 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 -#: ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:954 msgid ".." msgstr ".." @@ -309,41 +293,57 @@ msgstr "11 x 17 tum" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Kuvert, 3 5/8 x 6 1/2 tum" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": filen finns inte!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": okänd teckenuppsättning" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": okänd kodning" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Bakåt" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:549 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr " " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:551 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr " " - -#: ../src/html/helpfrm.cpp:992 -msgid "Normal face
    (and underlined. Italic face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4
    " -msgstr "Normalt typsnitt
    (och understruket. Kursivt typsnitt. Fett typsnitt. Fett kursivt typsnitt.
    typsnittsstorlek -2
    typsnittsstorlek -1
    typsnittsstorlek +0
    typsnittsstorlek +1
    typsnittsstorlek +2
    typsnittsstorlek +3
    typsnittsstorlek +4

    Storleksbestämt typsnitt.
    fet kursiv fet kursiv understruken
    typsnittsstorlek -2
    typsnittsstorlek -1
    typsnittsstorlek +0
    typsnittsstorlek +1
    typsnittsstorlek +2
    typsnittsstorlek +3
    typsnittsstorlek +4
    " +#: ../src/html/helpfrm.cpp:994 +msgid "" +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " +msgstr "" +"
    Normalt typsnitt
    (och understruket. " +"Kursivt typsnitt. Fett typsnitt. Fett kursivt typsnitt.
    typsnittsstorlek -2
    typsnittsstorlek -1
    typsnittsstorlek +0
    typsnittsstorlek +1
    typsnittsstorlek +2
    typsnittsstorlek +3
    typsnittsstorlek +4

    Fast storlek-" +"typsnitt.
    fett kursivt fett kursivt understruket
    typsnittsstorlek -2
    typsnittsstorlek -1
    typsnittsstorlek +0
    typsnittsstorlek +1
    typsnittsstorlek +2
    typsnittsstorlek +3
    typsnittsstorlek +4

    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -369,7 +369,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "ASCII" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Lägg till aktuell sida till bokmärken" @@ -377,7 +377,7 @@ msgstr "L msgid "Add to custom colours" msgstr "Lägg till till egendefinierade färger" -#: ../src/html/helpctrl.cpp:95 +#: ../src/html/helpctrl.cpp:100 #, c-format msgid "Adding book %s" msgstr "Lägger till bok %s" @@ -386,10 +386,15 @@ msgstr "L msgid "All" msgstr "Alla" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1077 msgid "All files (*)|*" msgstr "Alla filer (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "Alla filer (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "Ringer redan Internetleverantör." @@ -399,7 +404,7 @@ msgstr "Ringer redan Internetleverant msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "Lägg till logg till fil \"%s\" (om du väljer [Nej] skrivs den över)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arabiska (ISO-8859-6)" @@ -423,8 +428,7 @@ msgstr "B5 ark, 182 x 257 millimeter" msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 Kuvert, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:467 -#: ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." msgstr "BMP: Kunde inte allokera minne." @@ -452,25 +456,24 @@ msgstr "BMP: Kunde inte skriva filhuvudet (BitmapInfo)." msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: wxImage saknar egen wxPalette." -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Baklänges" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltiska språk (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltiska språk (gammal) (ISO-8859-4)" -#: ../src/common/resourc2.cpp:840 -#: ../src/common/resource.cpp:2500 +#: ../src/common/resourc2.cpp:840 ../src/common/resource.cpp:2500 #, c-format msgid "Bitmap resource specification %s not found." msgstr "Bildresursspecifikation %s inte funnen." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Fet" @@ -506,19 +509,17 @@ msgstr "C6 Kuvert, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Kuvert, 114 x 229 mm" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, c-format msgid "Can not enumerate files '%s'" msgstr "Kan inte räkna upp filerna \"%s\"" -#: ../src/msw/dir.cpp:296 -#: ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "Kan inte räkna upp filerna i katalogen \"%s\"" -#: ../src/mac/thread.cpp:472 -#: ../src/msw/thread.cpp:685 +#: ../src/mac/thread.cpp:472 ../src/msw/thread.cpp:685 #, c-format msgid "Can not resume thread %x" msgstr "Kan inte fortsätta tråden %x" @@ -527,8 +528,7 @@ msgstr "Kan inte forts msgid "Can not start thread: error writing TLS." msgstr "Kan inte starta tråden: fel vid skrivning av TLS." -#: ../src/mac/thread.cpp:448 -#: ../src/msw/thread.cpp:670 +#: ../src/mac/thread.cpp:448 ../src/msw/thread.cpp:670 #, c-format msgid "Can not suspend thread %x" msgstr "Kan inte hålla inne tråd %x" @@ -537,11 +537,11 @@ msgstr "Kan inte h msgid "Can not wait for thread termination" msgstr "Kan inte vänta på att tråden avslutas" -#: ../src/common/cmdproc.cpp:243 +#: ../src/common/cmdproc.cpp:253 msgid "Can't &Undo " msgstr "Kan inte &Ångra " -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "Kan inte kontrollera bildformat för fil \"%s\": filen finns inte." @@ -556,30 +556,22 @@ msgstr "Kan inte st msgid "Can't copy values of unsupported type %d." msgstr "Kan inte kopiera värden av ej stödd typ %d." -#: ../src/msw/toplevel.cpp:295 -msgid "Can't create dialog using memory template" -msgstr "Kan inte skapa dialog med minnesmall" - -#: ../src/os2/toplevel.cpp:331 -#, c-format -msgid "Can't create dialog using template '%ul'" -msgstr "Kan inte skapa dialog med mall \"%ul\"" - -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." -msgstr "Kan inte skapa listkontrollfönster, kontrollera att comctl32.dll är installerad." +msgstr "" +"Kan inte skapa listkontrollfönster, kontrollera att comctl32.dll är " +"installerad." #: ../src/msw/registry.cpp:402 #, c-format msgid "Can't create registry key '%s'" msgstr "Kan inte skapa registernyckel \"%s\"" -#: ../src/mac/thread.cpp:427 -#: ../src/msw/thread.cpp:652 +#: ../src/mac/thread.cpp:427 ../src/msw/thread.cpp:652 msgid "Can't create thread" msgstr "Kan inte skapa tråd" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "Kan inte skapa fönster av klass %s" @@ -624,8 +616,7 @@ msgstr "Kan inte hitta aktuell position i fil \"%s\"" msgid "Can't get info about registry key '%s'" msgstr "Kan inte hämta information om registernyckel \"%s\"" -#: ../src/common/image.cpp:913 -#: ../src/common/image.cpp:933 +#: ../src/common/image.cpp:913 ../src/common/image.cpp:933 #, c-format msgid "Can't load image from file '%s': file does not exist." msgstr "Kan inte ladda bild från fil \"%s\": filen finns inte." @@ -645,8 +636,7 @@ msgstr "Kan inte msgid "Can't read value of '%s'" msgstr "Kan inte läsa värdet av \"%s\"" -#: ../src/msw/registry.cpp:777 -#: ../src/msw/registry.cpp:816 +#: ../src/msw/registry.cpp:777 ../src/msw/registry.cpp:816 #, c-format msgid "Can't read value of key '%s'" msgstr "Kan inte läsa värdet av nyckel \"%s\"" @@ -656,8 +646,7 @@ msgstr "Kan inte l msgid "Can't save image to file '%s': unknown extension." msgstr "Kan inte spara bild till fil \"%s\": okänd filändelse." -#: ../src/generic/logg.cpp:551 -#: ../src/generic/logg.cpp:985 +#: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." msgstr "Kan inte spara logginnehållet till fil." @@ -665,75 +654,66 @@ msgstr "Kan inte spara logginneh msgid "Can't set thread priority" msgstr "Kan inte ange trådprioritet" -#: ../src/msw/registry.cpp:802 -#: ../src/msw/registry.cpp:928 +#: ../src/msw/registry.cpp:802 ../src/msw/registry.cpp:928 #, c-format msgid "Can't set value of '%s'" msgstr "Kan inte sätta värdet på \"%s\"" -#: ../src/common/dlgcmn.cpp:183 -#: ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 -#: ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 -#: ../src/generic/prntdlgg.cpp:453 -#: ../src/generic/progdlgg.cpp:211 -#: ../src/generic/proplist.cpp:511 -#: ../src/gtk/filedlg.cpp:173 -#: ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 -#: ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1196 ../src/generic/filedlgg.cpp:1215 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 +#: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 +#: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Avbryt" -#: ../contrib/src/xrc/xmlres.cpp:893 -#: ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "Kan inte konvertera dialogenheter: okänd dialog." -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, c-format msgid "Cannot convert from encoding '%s'!" msgstr "Kan inte konvertera från kodning\"%s\"!" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Kan inte hitta aktiv uppringningsanslutning: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "Kan inte hitta behållare för okänd kontroll \"%s\"." -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, c-format msgid "Cannot find font node '%s'." msgstr "Kan inte hitta typsnittsnod \"%s\"." -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Kan inte hitta platsen för adressbokfil" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Kan inte hämta prioritetsräckvidden för schemaläggningsregler %d." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Kan inte hämta värdnamnet" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Kan inte hämta det officiella värdnamnet" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Kan inte lägga på - ingen aktiv uppringningsanslutning." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "Kan inte initialisera OLE" @@ -741,31 +721,31 @@ msgstr "Kan inte initialisera OLE" msgid "Cannot initialize SciTech MGL!" msgstr "Kan inte initialisera SciTech MGL!" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." msgstr "Kan inte initialisera display." -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, c-format msgid "Cannot load icon from '%s'." msgstr "Kan inte ladda ikon från \"%s\"." -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "Kan inte ladda resurser från fil \"%s\"." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "Kan inte öppna HTML-dokument: %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:584 #, c-format msgid "Cannot open HTML help book: %s" msgstr "Kan inte öppna HTML-hjälpbok: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "Kan inte öppna URL \"%s\"" @@ -775,61 +755,60 @@ msgstr "Kan inte msgid "Cannot open contents file: %s" msgstr "Kan inte öppna innehållsfil: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "Kan inte öppna fil \"%s\"." -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Kan inte öppna fil för PostScript-utskrift!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "Kan inte öppna indexfil: %s" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Kan inte tolka koordinater från \"%s\"." -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, c-format msgid "Cannot parse dimension from '%s'." msgstr "Kan inte tolka dimension från \"%s\"." -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1297 msgid "Cannot print empty page." msgstr "Kan inte skriva ut tom sida." -#: ../src/msw/volume.cpp:188 -#: ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, c-format msgid "Cannot read typename from '%s'!" msgstr "Kan inte läsa typnamn från \"%s\"!" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Kan inte hämta trådschemaläggningsregler." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Kan inte starta tråd: fel vid skrivning till TLS" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Skiftlägeskänslig" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Keltiska språk (ISO-8859-14)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "Centraleuropeisk (ISO-8859-2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Välj Internetleverantör att ringa upp" @@ -837,12 +816,15 @@ msgstr "V msgid "Choose font" msgstr "Välj typsnitt" +#: ../src/generic/mdig.cpp:112 +msgid "Cl&ose" +msgstr "St&äng" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Töm logginnehållet" -#: ../src/common/prntbase.cpp:429 -#: ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Stäng" @@ -851,25 +833,28 @@ msgstr "St msgid "Close\tAlt-F4" msgstr "Stäng\tAlt-F4" +#: ../src/generic/mdig.cpp:113 +msgid "Close All" +msgstr "Stäng alla" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Stäng detta fönster" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Dator" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Konfigurationspost kan inte starta med \"%c\"." -#: ../src/generic/filedlgg.cpp:1357 -#: ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1426 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Bekräfta" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "Bekräfta registeruppdatering" @@ -877,22 +862,20 @@ msgstr "Bekr msgid "Connecting..." msgstr "Ansluter..." -#: ../src/html/helpfrm.cpp:346 -#: ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Innehåll" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "Konvertering till teckenuppsättning \"%s\" fungerar inte." #: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" msgstr "Kopior:" -#: ../src/common/resourc2.cpp:287 -#: ../src/common/resource.cpp:1806 +#: ../src/common/resourc2.cpp:287 ../src/common/resource.cpp:1806 #: ../src/common/resource.cpp:1936 #, c-format msgid "Could not find resource include file %s." @@ -902,42 +885,44 @@ msgstr "Kunde inte hitta resursinkluderingsfil %s." msgid "Could not find tab for id" msgstr "Kunde inte hitta flik för id" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2053 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Kunde inte ladda Rich Edit DLL \"%s\"" #: ../src/common/resource.cpp:802 #, c-format -msgid "Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" +msgid "" +"Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" " or provide #define (see manual for caveats)" -msgstr "Kunde inte slå upp kontrollklass eller -id \"%s\". Använd (icke-noll) heltal istället\n" +msgstr "" +"Kunde inte slå upp kontrollklass eller -id \"%s\". Använd (icke-noll) heltal " +"istället\n" " eller ordna med #define (se manualen för varningar)" #: ../src/common/resource.cpp:1251 #, c-format -msgid "Could not resolve menu id '%s'. Use (non-zero) integer instead\n" +msgid "" +"Could not resolve menu id '%s'. Use (non-zero) integer instead\n" "or provide #define (see manual for caveats)" -msgstr "Kunde inte slå upp meny-id \"%s\". Använd (icke-noll) heltal istället\n" +msgstr "" +"Kunde inte slå upp meny-id \"%s\". Använd (icke-noll) heltal istället\n" " eller ordna med #define (se manualen för varningar)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Kunde inte börja förhandsgranska dokumentet." -#: ../src/generic/printps.cpp:197 -#: ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Kunde inte börja skriva ut." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Kunde inte föra över data till fönstret" -#: ../src/msw/dragimag.cpp:148 -#: ../src/msw/dragimag.cpp:184 -#: ../src/msw/imaglist.cpp:152 -#: ../src/msw/imaglist.cpp:174 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 +#: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." msgstr "Kunde inte lägga till en bild till bildlistan." @@ -946,44 +931,39 @@ msgstr "Kunde inte l msgid "Couldn't create a timer" msgstr "Kunde inte skapa en timer" -#: ../src/mgl/cursor.cpp:135 -#: ../src/mgl/cursor.cpp:166 +#: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 msgid "Couldn't create cursor." msgstr "Kunde inte skapa markör." -#: ../src/common/dynlib.cpp:347 -#: ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:344 ../src/common/dynload.cpp:297 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "Kunde inte hitta symbolen \"%s\" i ett dynamiskt bibliotek" -#: ../src/mac/thread.cpp:502 -#: ../src/msw/thread.cpp:711 +#: ../src/mac/thread.cpp:502 ../src/msw/thread.cpp:711 msgid "Couldn't get the current thread pointer" msgstr "Kunde inte hämta den aktuella trådpekaren" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "Kunde inte ladda PNG-bild - filen är förstörd eller för lite minne." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "Kunde inte registrera urklippsformat \"%s\"." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "Kunde inte hämta information om listkontrollpost %d." -#: ../src/common/imagpng.cpp:334 -#: ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." msgstr "Kunde inte spara PNG-bild." -#: ../src/mac/thread.cpp:749 -#: ../src/msw/thread.cpp:1091 +#: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" msgstr "Kunde inte avsluta tråd" @@ -991,16 +971,19 @@ msgstr "Kunde inte avsluta tr msgid "Create directory" msgstr "Skapa katalog" -#: ../src/generic/dirdlgg.cpp:103 -#: ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1147 msgid "Create new directory" msgstr "Skapa ny katalog" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1683 +msgid "Cu&t" +msgstr "&Klipp ut" + +#: ../src/generic/filedlgg.cpp:1158 msgid "Current directory:" msgstr "Aktuell katalog:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "Kyrilliska (ISO-8859-5)" @@ -1008,31 +991,27 @@ msgstr "Kyrilliska (ISO-8859-5)" msgid "D sheet, 22 x 34 in" msgstr "D ark, 22 x 34 tum" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE poke-förfrågan misslyckades" -#: ../src/common/imagbmp.cpp:618 -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "DIB-huvud: Kan inte hantera 4-bitkodad ännu." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "DIB-huvud: Kodning matchar inte bitdjup." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "DIB-huvud: Bildhöjd > 32767 pixlar för fil." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "DIB-huvud: Bildbredd > 32767 pixlar för fil." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." msgstr "DIB-huvud: Okänt bitdjup i fil." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." msgstr "DIB-huvud: Okänd kodning i fil." @@ -1040,15 +1019,15 @@ msgstr "DIB-huvud: Ok msgid "DL Envelope, 110 x 220 mm" msgstr "DL Kuvert, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:720 msgid "Date" msgstr "Datum" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Dekorativ" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "Standardkodning" @@ -1057,19 +1036,20 @@ msgstr "Standardkodning" msgid "Deleted stale lock file '%s'." msgstr "Tog bort förlegad låsfil \"%s\"." -#: ../src/msw/dialup.cpp:346 -msgid "Dial up functions are unavailable because the remote access service (RAS) is not installed on this machine. Please install it." -msgstr "Uppringningsfunktioner är inte tillgängliga på grund av att fjärråtkomstservice (RAS) inte är installerad på denna maskin. Var vänlig och installera den." +#: ../src/msw/dialup.cpp:348 +msgid "" +"Dial up functions are unavailable because the remote access service (RAS) is " +"not installed on this machine. Please install it." +msgstr "" +"Uppringningsfunktioner är inte tillgängliga på grund av att " +"fjärråtkomstservice (RAS) inte är installerad på denna maskin. Var vänlig " +"och installera den." -#: ../src/os2/toplevel.cpp:329 -msgid "Did you forget to include wx/os2/wx.rc in your resources?" -msgstr "Glömde du att inkludera wx/os2/wx.rc i dina resurser?" - -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Visste du att..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Katalogen \"%s\" kunde inte skapas" @@ -1083,18 +1063,23 @@ msgstr "Katalogen \"%s\" finns inte!" msgid "Directory does not exist" msgstr "Katalogen finns inte" -#: ../src/html/helpfrm.cpp:374 -msgid "Display all index items that contain given substring. Search is case insensitive." -msgstr "Visa alla indexposter som innehåller given delsträng. Sökningen är skiftlägesokänslig." +#: ../src/html/helpfrm.cpp:379 +msgid "" +"Display all index items that contain given substring. Search is case " +"insensitive." +msgstr "" +"Visa alla indexposter som innehåller given delsträng. Sökningen är " +"skiftlägesokänslig." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Visa alternativdialog" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" ?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" @@ -1106,7 +1091,7 @@ msgstr "" "Nytt värde är \n" "%s %1" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "Vill du spara ändringar i dokument %s?" @@ -1115,7 +1100,7 @@ msgstr "Vill du spara msgid "Done" msgstr "Färdigt" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Färdigt." @@ -1135,28 +1120,23 @@ msgstr "Passerad tid : " msgid "Entries found" msgstr "Poster funna" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format -msgid "Environment variables expansion failed: missing '%c' at position %d in '%s'." -msgstr "Miljövariabelexpansion misslyckades: \"%c\" saknas på position %d i \"%s\"." +msgid "" +"Environment variables expansion failed: missing '%c' at position %d in '%s'." +msgstr "" +"Miljövariabelexpansion misslyckades: \"%c\" saknas på position %d i \"%s\"." -#: ../src/generic/dirctrlg.cpp:702 -#: ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 -#: ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 -#: ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 -#: ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 -#: ../src/generic/filedlgg.cpp:1372 -#: ../src/gtk/filedlg.cpp:80 -#: ../src/gtk/fontdlg.cpp:71 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:856 ../src/generic/filedlgg.cpp:957 +#: ../src/generic/filedlgg.cpp:971 ../src/generic/filedlgg.cpp:984 +#: ../src/generic/filedlgg.cpp:1380 ../src/generic/filedlgg.cpp:1433 +#: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Fel" -#: ../src/unix/utilsunx.cpp:1182 -#: ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Fel " @@ -1164,7 +1144,7 @@ msgstr "Fel " msgid "Error creating directory" msgstr "Fel vid skapande av katalog" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "Fel vid läsning av DIB-bild." @@ -1172,7 +1152,7 @@ msgstr "Fel vid l msgid "Error: " msgstr "Fel: " -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1180,7 +1160,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Uppskattad tid: " -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "Utförande av kommando \"%s\" misslyckades" @@ -1189,31 +1169,29 @@ msgstr "Utf msgid "Executive, 7 1/4 x 10 1/2 in" msgstr "Executive, 7 1/4 x 10 1/2 tum" -#: ../src/common/resourc2.cpp:326 -#: ../src/common/resourc2.cpp:1391 -#: ../src/common/resource.cpp:1845 -#: ../src/common/resource.cpp:1975 +#: ../src/common/resourc2.cpp:326 ../src/common/resourc2.cpp:1391 +#: ../src/common/resource.cpp:1845 ../src/common/resource.cpp:1975 #: ../src/common/resource.cpp:3059 msgid "Expected '*' whilst parsing resource." msgstr "Förväntade \"*\" när resursen tolkades." -#: ../src/common/resourc2.cpp:342 -#: ../src/common/resourc2.cpp:1407 -#: ../src/common/resource.cpp:1862 -#: ../src/common/resource.cpp:1991 +#: ../src/common/resourc2.cpp:342 ../src/common/resourc2.cpp:1407 +#: ../src/common/resource.cpp:1862 ../src/common/resource.cpp:1991 #: ../src/common/resource.cpp:3076 msgid "Expected '=' whilst parsing resource." msgstr "Förväntade \"=\" när resursen tolkades." -#: ../src/common/resourc2.cpp:312 -#: ../src/common/resourc2.cpp:1377 -#: ../src/common/resource.cpp:1831 -#: ../src/common/resource.cpp:1961 +#: ../src/common/resourc2.cpp:312 ../src/common/resourc2.cpp:1377 +#: ../src/common/resource.cpp:1831 ../src/common/resource.cpp:1961 #: ../src/common/resource.cpp:3045 msgid "Expected 'char' whilst parsing resource." msgstr "Förväntade \"char\" när resursen tolkades." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "Utökad Unix-kodsida för japanska (EUC-JP)" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Misslyckades att %s uppringningsanslutning: %s" @@ -1222,7 +1200,7 @@ msgstr "Misslyckades att %s uppringningsanslutning: %s" msgid "Failed to access lock file." msgstr "Kunde inte komma åt låsfil." -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" msgstr "Kunde inte stänga filhandtag" @@ -1235,11 +1213,11 @@ msgstr "Kunde inte st msgid "Failed to close the clipboard." msgstr "Kunde inte stänga urklippsbordet." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Kunde inte ansluta: användarnamn/lösenord saknas." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Kunde inte ansluta: ingen Internetleverantör att ringa upp." @@ -1253,12 +1231,12 @@ msgstr "Kunde inte kopiera registerv msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Kunde inte kopiera innehållet i registernyckel \"%s\" till \"%s\"." -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "Kunde inte kopiera filen \"%s\" till \"%s\"" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "Kunde inte skapa DDE-sträng" @@ -1270,28 +1248,36 @@ msgstr "Kunde inte skapa MDI-f msgid "Failed to create a status bar." msgstr "Kunde inte skapa en statusrad." -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" msgstr "Kunde inte skapa ett temporärt filnamn" -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" msgstr "Kunde inte skapa ett anonymt rör (pipe)" -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "Kunde inte skapa en anslutning till server \"%s\" med ämne \"%s\"" -#: ../src/msw/toplevel.cpp:293 -msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" -msgstr "Kunde inte skapa dialog. Felaktig DLGTEMPLATE?" +#: ../src/unix/mimetype.cpp:372 +#, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Kunde inte skapa katalog %s/.gnome." + +#: ../src/unix/mimetype.cpp:381 +#, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Kunde inte skapa katalog %s/mime-info." #: ../src/generic/dirdlgg.cpp:201 #, c-format -msgid "Failed to create directory '%s'\n" +msgid "" +"Failed to create directory '%s'\n" "(Do you have the required permissions?)" -msgstr "Kunde inte skapa katalog\"%s\"\n" +msgstr "" +"Kunde inte skapa katalog\"%s\"\n" "(Har du de nödvändiga rättigheterna?)" #: ../src/msw/mimetype.cpp:168 @@ -1304,61 +1290,62 @@ msgstr "Kunde inte skapa registerpost f msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "Kunde inte skapa standard sök/ersättdialog (felkod %d)" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "Kunde inte visa HTML-dokument i %s-kodning" -#: ../src/mac/clipbrd.cpp:167 -#: ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Kunde inte tömma urklippsbordet." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "Kunde inte starta en meddelandeloop med DDE-server" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Kunde inte etablera uppringningsanslutning: %s" -#: ../src/unix/utilsunx.cpp:538 -#: ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Kunde inte utföra \"%s\"\n" -#: ../src/common/resourc2.cpp:808 -#: ../src/common/resource.cpp:2465 +#: ../src/common/resourc2.cpp:808 ../src/common/resource.cpp:2465 #, c-format -msgid "Failed to find XBM resource %s.\n" +msgid "" +"Failed to find XBM resource %s.\n" "Forgot to use wxResourceLoadBitmapData?" -msgstr "Kunde inte hitta XBM-resurs %s.\n" +msgstr "" +"Kunde inte hitta XBM-resurs %s.\n" "Glömde att använda wxResourceLoadBitmapData?" -#: ../src/common/resourc2.cpp:959 -#: ../src/common/resource.cpp:2619 +#: ../src/common/resourc2.cpp:959 ../src/common/resource.cpp:2619 #, c-format -msgid "Failed to find XBM resource %s.\n" +msgid "" +"Failed to find XBM resource %s.\n" "Forgot to use wxResourceLoadIconData?" -msgstr "Kunde inte hitta XBM-resurs %s.\n" +msgstr "" +"Kunde inte hitta XBM-resurs %s.\n" "Glömde att använda wxResourceLoadIconData?" -#: ../src/common/resourc2.cpp:823 -#: ../src/common/resource.cpp:2480 +#: ../src/common/resourc2.cpp:823 ../src/common/resource.cpp:2480 #, c-format -msgid "Failed to find XPM resource %s.\n" +msgid "" +"Failed to find XPM resource %s.\n" "Forgot to use wxResourceLoadBitmapData?" -msgstr "Kunde inte hitta XPM-resurs %s.\n" +msgstr "" +"Kunde inte hitta XPM-resurs %s.\n" "Glömde att använda wxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "Kunde inte hämta Internetleverantörers namn: %s" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." msgstr "Kunde inte hämta urklippsdata." @@ -1366,15 +1353,15 @@ msgstr "Kunde inte h msgid "Failed to get data from the clipboard" msgstr "Kunde inte hämta data från urklippsbordet" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "Kunde inte hämta UTC-systemtiden." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Kunde inte hämta den lokala systemtiden" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" msgstr "Kunde inte hämta aktuell katalog" @@ -1390,9 +1377,13 @@ msgstr "Kunde inte initialisera MS HTML-hj msgid "Failed to initialize OpenGL" msgstr "Kunde inte initialisera OpenGL" -#: ../src/unix/threadpsx.cpp:871 -msgid "Failed to join a thread, potential memory leak detected - please restart the program" -msgstr "Kunde inte slå ihop en tråd, möjlig minnesläcka hittad - var vänlig och starta om programmet" +#: ../src/unix/threadpsx.cpp:887 +msgid "" +"Failed to join a thread, potential memory leak detected - please restart the " +"program" +msgstr "" +"Kunde inte slå ihop en tråd, möjlig minnesläcka hittad - var vänlig och " +"starta om programmet" #: ../src/msw/utils.cpp:721 #, c-format @@ -1404,18 +1395,16 @@ msgstr "Kunde inte d msgid "Failed to load image %d from file '%s'." msgstr "Kunde inte ladda bilden %d från fil \"%s\"." -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." msgstr "Kunde inte ladda mpr.dll." -#: ../src/common/dynlib.cpp:274 -#: ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Kunde inte ladda delat bibliotek \"%s\"" -#: ../src/common/dynlib.cpp:256 -#: ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Kunde inte ladda delat bibliotek \"%s\" Fel \"%s\"" @@ -1430,17 +1419,17 @@ msgstr "Kunde inte l msgid "Failed to match '%s' in regular expression: %s" msgstr "Kunde inte matcha \"%s\" i reguljära uttrycket: %s" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, c-format msgid "Failed to modify file times for '%s'" msgstr "Kunde inte ändra filtiden för \"%s\"" -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, c-format msgid "Failed to open '%s' for %s" msgstr "Kunde inte öppna \"%s\" för %s" -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." msgstr "Kunde inte öppna temporär fil." @@ -1456,20 +1445,20 @@ msgstr "Kunde inte skicka data till urklippsbordet" msgid "Failed to read PID from lock file." msgstr "Kunde inte läsa PID från låsfil." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Kunde inte omdirigera barnprocess-in/utdata" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "Kunde inte omdirigera barnprocessens in/utdata" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "Kunde inte registrera DDE-server \"%s\"" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Kunde inte komma ihåg kodningen för teckenuppsättning \"%s\"." @@ -1498,12 +1487,12 @@ msgstr "Kunde inte byta namn p msgid "Failed to retrieve data from the clipboard." msgstr "Kunde inte hämta data från urklippsbordet." -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "Kunde inte hämta filtider för \"%s\"" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "Kunde inte hämta text från RAS-felmeddelande" @@ -1511,7 +1500,7 @@ msgstr "Kunde inte h msgid "Failed to retrieve the supported clipboard formats" msgstr "Kunde inte hämta de stödda urklippsformaten" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "Kunde inte skicka DDE-meddelandeanmälan" @@ -1524,12 +1513,11 @@ msgstr "Kunde inte s msgid "Failed to set clipboard data." msgstr "Kunde inte sätta urklippsdata." -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" msgstr "Kunde inte sätta temporära filrättigheter" -#: ../src/unix/threadpsx.cpp:1213 -#: ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Kunde inte sätta trådprioritet %d." @@ -1539,20 +1527,20 @@ msgstr "Kunde inte s msgid "Failed to store image '%s' to memory VFS!" msgstr "Kunde inte spara bild \"%s\" till minnes-VFS!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Kunde inte avsluta en tråd." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "Kunde inte avsluta meddelandeloopen med DDE-servern" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Kunde inte avsluta den uppringda anslutningen: %s" -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, c-format msgid "Failed to touch the file '%s'" msgstr "Kunde inte röra (touch) filen \"%s\"" @@ -1562,7 +1550,7 @@ msgstr "Kunde inte r msgid "Failed to unlock lock file '%s'" msgstr "Kunde inte låsa upp låsfil \"%s\"" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "Kunde inte avregistrera DDE-server \"%s\"" @@ -1580,8 +1568,7 @@ msgstr " msgid "Fatal error: " msgstr "Ödesdigert fel: " -#: ../src/mac/app.cpp:1220 -#: ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Ödesdigert fel: avslutar" @@ -1590,40 +1577,39 @@ msgstr " msgid "File %s does not exist." msgstr "Filen %s finns inte." -#: ../src/generic/filedlgg.cpp:1354 -#: ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1423 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Filen \"%s\" finns redan, vill du verkligen skriva över den?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, c-format -msgid "File '%s' already exists.\n" +msgid "" +"File '%s' already exists.\n" "Do you want to replace it?" -msgstr "Filen \"%s\" finns redan\n" +msgstr "" +"Filen \"%s\" finns redan\n" "Vill du ersätta den?" #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "Filen kunde inte laddas." -#: ../src/common/docview.cpp:294 -#: ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Filfel" -#: ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:971 msgid "File name exists already." msgstr "Filnamnet finns redan." -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Filer (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Sök" @@ -1635,28 +1621,25 @@ msgstr "Fastbreddstypsnitt:" msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 tum" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Typsnittsstorlek:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Gren misslyckades" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Framåt" -#: ../src/common/resourc2.cpp:295 -#: ../src/common/resourc2.cpp:1360 -#: ../src/common/resource.cpp:1814 -#: ../src/common/resource.cpp:1944 +#: ../src/common/resourc2.cpp:295 ../src/common/resourc2.cpp:1360 +#: ../src/common/resource.cpp:1814 ../src/common/resource.cpp:1944 #: ../src/common/resource.cpp:3028 msgid "Found " msgstr "Hittade " -#: ../src/html/helpfrm.cpp:661 -#: ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "Hittade %i träffar" @@ -1701,40 +1684,31 @@ msgstr "Tysk standard Fanfold, 8 1/2 x 12 tum" msgid "GetUnusedColour:: No Unused Color in image " msgstr "GetUnusedColour:: Ingen oanvänd färg i bilden" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Gå tillbaka" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "Gå tillbakta till den tidigare HTML-sidan" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Gå framåt" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "Gå framåt till nästa HTML-sida" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Gå upp en nivå i dokumenthierarki" -#: ../src/generic/dirdlgg.cpp:108 -#: ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1136 msgid "Go to home directory" msgstr "Gå till hemkatalog" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1128 msgid "Go to parent directory" msgstr "Gå till föräldrakatalog" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "Gå till sida" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Grekiska (ISO-8859-7)" @@ -1743,36 +1717,34 @@ msgstr "Grekiska (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "HTML-ankare %s finns inte." -#: ../src/html/helpfrm.cpp:1279 -msgid "HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" -msgstr "HTML-filer (*.htm)|*.htm|HTML-filer (*.html)|*.html|Hjälpböcker (*.htb)|*.htb|Hjälpböcker (*.zip)|*.zip|HTML-hjälpprojekt (*.hhp)|*.hhp|Alla filer (*.*)|*" +#: ../src/html/helpfrm.cpp:1311 +msgid "" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" +msgstr "" +"HTML-filer (*.htm)|*.htm|HTML-filer (*.html)|*.html|Hjälpböcker (*.htb)|*." +"htb|Hjälpböcker (*.zip)|*.zip|HTML-hjälpprojekt (*.hhp)|*.hhp|Alla filer (*." +"*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebreiska (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 -#: ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 #: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Hjälp" -#: ../src/html/htmlhelp.cpp:87 -#, c-format -msgid "Help : %s" -msgstr "Hjälp: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Hjälpbläddraralternativ" -#: ../src/generic/helphtml.cpp:334 -#: ../src/generic/helphtml.cpp:335 +#: ../src/generic/helphtml.cpp:334 ../src/generic/helphtml.cpp:335 msgid "Help Index" msgstr "Hjälpindex" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1295 msgid "Help Printing" msgstr "Hjälputskrift" @@ -1781,29 +1753,26 @@ msgstr "Hj msgid "Help: %s" msgstr "Hjälp: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "ICO: Fel vid läsning av mask DIB." -#: ../src/common/imagbmp.cpp:960 -#: ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 -#: ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 -#: ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" msgstr "ICO: Fel vid skrivning av bildfilen!" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "ICO: Bilden är för hög för en ikon." -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "ICO: Bilden är för bred för en ikon." -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." msgstr "ICO: Ogiltigt ikonindex." @@ -1823,10 +1792,8 @@ msgstr "IFF: Inte tillr msgid "IFF: unknown error!!!" msgstr "IFF: Okänt fel!!!" -#: ../src/common/resourc2.cpp:989 -#: ../src/common/resourc2.cpp:1000 -#: ../src/common/resource.cpp:2649 -#: ../src/common/resource.cpp:2660 +#: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 +#: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 #, c-format msgid "Icon resource specification %s not found." msgstr "Ikonresursspecifikation %s ej funnen." @@ -1835,12 +1802,11 @@ msgstr "Ikonresursspecifikation %s ej funnen." msgid "Ill-formed resource file syntax." msgstr "Felformatterad syntax för resursfil." -#: ../src/generic/dirctrlg.cpp:702 -#: ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:957 msgid "Illegal directory name." msgstr "Ogiltigt katalognamn." -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1380 msgid "Illegal file specification." msgstr "Ogiltigt filspecifikation." @@ -1848,40 +1814,43 @@ msgstr "Ogiltigt filspecifikation." msgid "Image and Mask have different sizes" msgstr "Bild och mask har olika storlekar" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "Bildfilen är inte av typen %d." -#: ../src/msw/textctrl.cpp:249 -msgid "Impossible to create a rich edit control, using simple text control instead. Please reinstall riched32.dll" -msgstr "Omöjligt att skapa en rich edit control, använder enkel text control istället. Installera om riched32.dll" +#: ../src/msw/textctrl.cpp:270 +msgid "" +"Impossible to create a rich edit control, using simple text control instead. " +"Please reinstall riched32.dll" +msgstr "" +"Omöjligt att skapa en rich edit control, använder enkel text control " +"istället. Installera om riched32.dll" #: ../src/unix/utilsunx.cpp:390 msgid "Impossible to get child process input" msgstr "Omöjligt att få barnprocessindata" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "Omöjligt att hämta rättigheter för fil \"%s\"" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "Omöjligt att skriva över fil \"%s\"" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "Omöjligt att sätta rättigheter för filen \"%s\"" -#: ../src/html/helpfrm.cpp:387 -#: ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Index" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Indiska (ISO-8859-12)" @@ -1889,17 +1858,17 @@ msgstr "Indiska (ISO-8859-12)" msgid "Invalid TIFF image index." msgstr "Ogiltigt TIFF-bildindex." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "Ogiltig XRC-resurs \"%s\": saknar rotnod \"resource\"." -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, c-format msgid "Invalid display mode specification '%s'." msgstr "Ogiltig bildskärmslägesspecifikation \"%s\"." -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, c-format msgid "Invalid geometry specification '%s'" msgstr "Ogiltig geometrispecifikation \"%s\"" @@ -1914,7 +1883,7 @@ msgstr "Ogiltig l msgid "Invalid regular expression '%s': %s" msgstr "Ogiltigt reguljärt uttryck \"%s\": %s" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Kursiv" @@ -1930,12 +1899,11 @@ msgstr "JPEG: Kunde inte ladda - filen msgid "JPEG: Couldn't save image." msgstr "JPEG: Kunde inte spara bild." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" -#: ../src/generic/prntdlgg.cpp:426 -#: ../src/generic/prntdlgg.cpp:620 +#: ../src/generic/prntdlgg.cpp:426 ../src/generic/prntdlgg.cpp:620 msgid "Landscape" msgstr "Liggande" @@ -1959,19 +1927,17 @@ msgstr "Letter litet, 8 1/2 x 11 tum" msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 tum" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Tunn" -#: ../src/generic/filedlgg.cpp:1587 -#: ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 -#: ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "Ladda %s fil" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1640 msgid "Load file" msgstr "Ladda fil" @@ -1997,14 +1963,19 @@ msgid "MDI child" msgstr "MDI-barn" #: ../src/msw/helpchm.cpp:60 -msgid "MS HTML Help functions are unavailable because the MS HTML Help library is not installed on this machine. Please install it." -msgstr "MS HTML hjälpfunktioner är inte tillgängliga på grund av att MS HTML hjälpbiblioteket inte är installerat på den här maskinen. Vänligen installera det." +msgid "" +"MS HTML Help functions are unavailable because the MS HTML Help library is " +"not installed on this machine. Please install it." +msgstr "" +"MS HTML hjälpfunktioner är inte tillgängliga på grund av att MS HTML " +"hjälpbiblioteket inte är installerat på den här maskinen. Vänligen " +"installera det." #: ../src/univ/themes/win32.cpp:4545 msgid "Ma&ximize" msgstr "Ma&ximera" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Mailcap-fil %s, rad %d: ofullständig post ignorerad." @@ -2026,7 +1997,7 @@ msgstr "Metalltema" msgid "Mi&nimize" msgstr "&Minimera" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Mime.types fil %s, rad %d: oavslutad citerad sträng" @@ -2036,7 +2007,7 @@ msgstr "Mime.types fil %s, rad %d: oavslutad citerad str msgid "Mode %ix%i-%i not available." msgstr "Läge %ix%i-%i är inte tillgängligt." -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -2044,27 +2015,24 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarch kuvert, 3 7/8 x 7 1/2 tum" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Mer..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:718 msgid "Name" msgstr "Namn" -#: ../src/generic/dirdlgg.cpp:272 -#: ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 -#: ../src/generic/filedlgg.cpp:821 +#: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 +#: ../src/generic/filedlgg.cpp:832 ../src/generic/filedlgg.cpp:841 msgid "NewName" msgstr "Nytt namn" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Nästa sida" -#: ../src/common/dlgcmn.cpp:156 -#: ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Nej" @@ -2073,15 +2041,12 @@ msgstr "Nej" msgid "No Unused Color in image being masked" msgstr "Ingen oanvänd färg i den maskade bilden" -#: ../src/common/resourc2.cpp:814 -#: ../src/common/resourc2.cpp:965 -#: ../src/common/resource.cpp:2471 -#: ../src/common/resource.cpp:2625 +#: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 +#: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 msgid "No XBM facility available!" msgstr "Inga XBM-faciliteter tillgängliga!" -#: ../src/common/resourc2.cpp:983 -#: ../src/common/resource.cpp:2643 +#: ../src/common/resourc2.cpp:983 ../src/common/resource.cpp:2643 msgid "No XPM icon facility available!" msgstr "Ingen XPM-ikonfacilitet tillgänglig!" @@ -2089,65 +2054,62 @@ msgstr "Ingen XPM-ikonfacilitet tillg msgid "No entries found." msgstr "Inga poster funna." -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" "but an alternative encoding '%s' is available.\n" -"Do you want to use this encoding (otherwise you will have to choose another one)?" +"Do you want to use this encoding (otherwise you will have to choose another " +"one)?" msgstr "" "Inget typsnitt för att visa text med kodningen \"%s\" hittades,\n" "men en alternativ kodning \"%s\" är tillgänglig.\n" "Vill du använda denna kodning (annars måste du välja något annat)." -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" "Would you like to select a font to be used for this encoding\n" "(otherwise the text in this encoding will not be shown correctly)?" -msgstr "Inget typsnitt för att visa text med kodningen \"%s\" hittades.Vill du välja ett typsnitt att använda för denna kodning\n" +msgstr "" +"Inget typsnitt för att visa text med kodningen \"%s\" hittades.Vill du välja " +"ett typsnitt att använda för denna kodning\n" "(annars kommer texten med denna kodning inte att visas korrekt)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "Ingen hanterare hittades för XML-nod \"%s\", klass \"%s\"!" -#: ../src/common/image.cpp:1046 -#: ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Ingen hanterare hittades för bildtyp." -#: ../src/common/image.cpp:1054 -#: ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "Ingen bildhanterare för typ %d är definierad." -#: ../src/common/image.cpp:1115 -#: ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "Ingen bildhanterare för typ %s är definierad." -#: ../src/html/helpfrm.cpp:650 -#: ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Ingen matchande sida funnen ännu" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordiska språk (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 -#: ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normalt typsnitt:" @@ -2155,43 +2117,35 @@ msgstr "Normalt typsnitt:" msgid "Note, 8 1/2 x 11 in" msgstr "Note, 8 1/2 x 11 tum" -#: ../src/common/dlgcmn.cpp:162 -#: ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 -#: ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 -#: ../src/generic/logg.cpp:739 -#: ../src/generic/prntdlgg.cpp:452 -#: ../src/generic/proplist.cpp:499 -#: ../src/gtk/filedlg.cpp:167 -#: ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1195 ../src/generic/filedlgg.cpp:1206 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 +#: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 +#: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "OK" -#: ../src/html/helpfrm.cpp:528 -#: ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1306 msgid "Open HTML document" msgstr "Öppna HTML-dokument" -#: ../src/generic/dirctrlg.cpp:731 -#: ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 -#: ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:856 ../src/generic/filedlgg.cpp:984 msgid "Operation not permitted." msgstr "Operation ej tillåten." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Flagga \"%s\" kräver ett värde, \"=\" förväntat." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Flagga \"%s\" kräver ett värde." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Flagga \"%s\": \"%s\" kan inte konverteras till ett datum." @@ -2200,13 +2154,11 @@ msgstr "Flagga \"%s\": \"%s\" kan inte konverteras till ett datum." msgid "Options" msgstr "Alternativ" -#: ../src/generic/prntdlgg.cpp:428 -#: ../src/generic/prntdlgg.cpp:621 +#: ../src/generic/prntdlgg.cpp:428 ../src/generic/prntdlgg.cpp:621 msgid "Orientation" msgstr "Orientering" -#: ../src/common/imagpcx.cpp:455 -#: ../src/common/imagpcx.cpp:478 +#: ../src/common/imagpcx.cpp:455 ../src/common/imagpcx.cpp:478 msgid "PCX: couldn't allocate memory" msgstr "PCX: Kunde inte allokera minne" @@ -2222,8 +2174,7 @@ msgstr "PCX: Ogiltig bild" msgid "PCX: this is not a PCX file." msgstr "PCX: Detta är inte en PCX fil." -#: ../src/common/imagpcx.cpp:457 -#: ../src/common/imagpcx.cpp:479 +#: ../src/common/imagpcx.cpp:457 ../src/common/imagpcx.cpp:479 msgid "PCX: unknown error !!!" msgstr "PCX: Okänt fel !!!" @@ -2243,12 +2194,12 @@ msgstr "PNM: Filformat msgid "PNM: File seems truncated." msgstr "PNM: Filen tycks vara trunkerad." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Sida %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Sida %d av %d" @@ -2261,23 +2212,21 @@ msgstr "Sidinst msgid "Pages" msgstr "Sidor" -#: ../src/generic/prntdlgg.cpp:538 -#: ../src/generic/prntdlgg.cpp:609 +#: ../src/generic/prntdlgg.cpp:538 ../src/generic/prntdlgg.cpp:609 #: ../src/generic/prntdlgg.cpp:794 msgid "Paper Size" msgstr "Pappersstorlek" -#: ../src/generic/prntdlgg.cpp:418 -#: ../src/generic/prntdlgg.cpp:598 +#: ../src/generic/prntdlgg.cpp:418 ../src/generic/prntdlgg.cpp:598 #: ../src/generic/prntdlgg.cpp:790 msgid "Paper size" msgstr "Pappersstorlek" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:723 msgid "Permissions" msgstr "Rättigheter" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Kunde inte skapa rör (pipe)" @@ -2285,16 +2234,15 @@ msgstr "Kunde inte skapa r msgid "Please choose a valid font." msgstr "Välj ett giltigt typsnitt." -#: ../src/generic/filedlgg.cpp:1372 -#: ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1433 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Välj en existerande fil." -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Välj vilken Internetleverantör du vill ansluta till" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2305,12 +2253,11 @@ msgstr "" "(minst version 4.70 behövs, men du har %d.%02d)\n" "annars kommer programmet inte att fungera korrekt." -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "Vänta på utskrift\n" -#: ../src/generic/prntdlgg.cpp:425 -#: ../src/generic/prntdlgg.cpp:619 +#: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 msgid "Portrait" msgstr "Stående" @@ -2318,29 +2265,23 @@ msgstr "St msgid "PostScript file" msgstr "PostScript-fil" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "Förbereder hjälpfönster..." - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Förhandsgranska:" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Föregående sida" -#: ../src/generic/prntdlgg.cpp:110 -#: ../src/generic/prntdlgg.cpp:124 +#: ../src/generic/prntdlgg.cpp:110 ../src/generic/prntdlgg.cpp:124 msgid "Print" msgstr "Skriv ut" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Förhandsgranska utskrift" -#: ../src/common/prntbase.cpp:782 -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Förhandsgranskning av utskrift misslyckades" @@ -2360,7 +2301,7 @@ msgstr "Skriv ut med f msgid "Print spooling" msgstr "Utskrift-spooling" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Skriv ut denna sida" @@ -2368,7 +2309,7 @@ msgstr "Skriv ut denna sida" msgid "Print to File" msgstr "Skriv ut till fil" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Skriv ut..." @@ -2388,21 +2329,20 @@ msgstr "Skrivaralternativ:" msgid "Printer..." msgstr "Skrivare..." -#: ../src/common/prntbase.cpp:109 -#: ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "Skriver ut" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Utskriftsfel" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Skriver sida %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Skriver ut..." @@ -2418,13 +2358,12 @@ msgstr "Quarto, 215 x 275 mm" msgid "Question" msgstr "Fråga" -#: ../src/common/ffile.cpp:125 -#: ../src/common/ffile.cpp:146 +#: ../src/common/ffile.cpp:125 ../src/common/ffile.cpp:146 #, c-format msgid "Read error on file '%s'" msgstr "Läsfel på fil \"%s\"" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "Refererad objektnod med ref=\"%s\" hittades inte!" @@ -2455,10 +2394,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "Registervärde \"%s\" finns redan." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "ReleaseMutex()" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Relevanta poster:" @@ -2467,7 +2402,7 @@ msgstr "Relevanta poster:" msgid "Remaining time : " msgstr "Återstående tid : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "Ta bort aktuell sida från bokmärken" @@ -2479,7 +2414,7 @@ msgstr "Ers msgid "Replace with:" msgstr "Ersätt med:" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "Resursfiler måste ha samma versionsnummer!" @@ -2487,23 +2422,21 @@ msgstr "Resursfiler m msgid "Right margin (mm):" msgstr "Höger marginal (mm):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1602 -#: ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 -#: ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1653 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "Spara %s fil" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Spara som" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1655 msgid "Save file" msgstr "Spara fil" @@ -2511,23 +2444,21 @@ msgstr "Spara fil" msgid "Save log contents to file" msgstr "Spara logginnehållet till fil" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "Skärmdump fångad:" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Skrivstil" -#: ../src/html/helpfrm.cpp:408 -#: ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Sök" -#: ../src/html/helpfrm.cpp:410 -msgid "Search contents of help book(s) for all occurences of the text you typed above" -msgstr "Sök i hjälpboken/böckernas innehåll efter alla förekomster av texten du skrev in ovan" +#: ../src/html/helpfrm.cpp:415 +msgid "" +"Search contents of help book(s) for all occurences of the text you typed " +"above" +msgstr "" +"Sök i hjälpboken/böckernas innehåll efter alla förekomster av texten du " +"skrev in ovan" #: ../src/generic/fdrepdlg.cpp:158 msgid "Search direction" @@ -2537,21 +2468,15 @@ msgstr "S msgid "Search for:" msgstr "Sök efter:" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Sök i alla böcker" -#: ../src/html/htmlhelp.cpp:593 -msgid "Search!" -msgstr "Sök!" - -#: ../src/html/helpfrm.cpp:650 -#: ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Söker..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Avdelningar" @@ -2560,25 +2485,28 @@ msgstr "Avdelningar" msgid "Seek error on file '%s'" msgstr "Sökfel på fil \"%s\"" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1688 +msgid "Select &All" +msgstr "Markera &allt" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Välj en dokumentmall" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Välj en dokumentvy" -#: ../src/common/docview.cpp:1405 -#: ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Välj en fil" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "Separerare förväntad efter flaggan \"%s\"." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Inställningar" @@ -2586,15 +2514,15 @@ msgstr "Inst msgid "Setup..." msgstr "Inställningar..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "Flera aktiva uppringningsanslutningar hittades, väljer en slumpvis." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Visa alla" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Visa alla poster i index" @@ -2602,39 +2530,36 @@ msgstr "Visa alla poster i index" msgid "Show hidden directories" msgstr "Visa dolda kataloger" -#: ../src/generic/filedlgg.cpp:1160 -#: ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1190 ../src/generic/filedlgg.cpp:1212 msgid "Show hidden files" msgstr "Visa dolda filer" -#: ../src/html/helpfrm.cpp:501 -#: ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Visa/dölj navigeringspanel" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:719 msgid "Size" msgstr "Storlek" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Lutande" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "Kunde inte öppna denna fil för att spara." -#: ../src/common/docview.cpp:341 -#: ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Kunde inte öppna denna fil." -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "Kunde inte spara denna fil." -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Inte tillräckligt minne för att skapa förhandsgranskning." @@ -2646,17 +2571,16 @@ msgstr "Statement, 5 1/2 x 8 1/2 tum" msgid "Status: " msgstr "Status: " -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "Subklass \"%s\" hittades inte för resurs \"%s\", subklassar inte!" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Swiss" -#: ../src/common/imagtiff.cpp:204 -#: ../src/common/imagtiff.cpp:215 +#: ../src/common/imagtiff.cpp:204 ../src/common/imagtiff.cpp:215 #: ../src/common/imagtiff.cpp:326 msgid "TIFF: Couldn't allocate memory." msgstr "TIFF: Kunde inte allokera minne." @@ -2681,15 +2605,15 @@ msgstr "TIFF: Fel vid skrivande av bild." msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 tum" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Mallar" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" @@ -2697,7 +2621,7 @@ msgstr "Thai (ISO-8859-11)" msgid "The FTP server doesn't support passive mode." msgstr "FTP-servern stöder inte passivt läge." -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2708,31 +2632,35 @@ msgstr "" " en annan teckenuppsättning som ersättning eller välja \n" "[Avbryt] om den inte kan ersättas" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "Urklippsformatet \"%d\" finns inte." #: ../src/generic/dirdlgg.cpp:186 #, c-format -msgid "The directory '%s' does not exist\n" +msgid "" +"The directory '%s' does not exist\n" "Create it now?" -msgstr "Katalogen \"%s\" finns inte\n" +msgstr "" +"Katalogen \"%s\" finns inte\n" "Skapa den nu?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, c-format -msgid "The file '%s' doesn't exist and couldn't be opened.\n" +msgid "" +"The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." -msgstr "Filen \"%s\" finns inte och kunde inte öppnas.\n" +msgstr "" +"Filen \"%s\" finns inte och kunde inte öppnas.\n" "Den har tagits bort från senast använda filer-listan." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "Sökvägen \"%s\" innehåller för många \"..\"!" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Den obligatoriska parametern \"%s\" angavs inte." @@ -2741,33 +2669,48 @@ msgstr "Den obligatoriska parametern \"%s\" angavs inte." msgid "The text couldn't be saved." msgstr "Texten kunde inte sparas." -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Värdet för flaggan \"%s\" måste anges." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format -msgid "The version of remote access service (RAS) installed on this machine is tooold, please upgrade (the following required function is missing: %s)." -msgstr "Versionen av fjärråtkomsttjänsten (RAS) som är installerad på denna maskin är för gammal, uppgradera (följande nödvändig funktion saknas: %s)." +msgid "" +"The version of remote access service (RAS) installed on this machine is " +"tooold, please upgrade (the following required function is missing: %s)." +msgstr "" +"Versionen av fjärråtkomsttjänsten (RAS) som är installerad på denna maskin " +"är för gammal, uppgradera (följande nödvändig funktion saknas: %s)." -#: ../src/html/htmprint.cpp:545 -msgid "There was a problem during page setup: you may need to set a default printer." -msgstr "Det var problem när sidan ställdes in: Du måste kanske ange en standardskrivare." +#: ../src/html/htmprint.cpp:540 +msgid "" +"There was a problem during page setup: you may need to set a default printer." +msgstr "" +"Det var problem när sidan ställdes in: Du måste kanske ange en " +"standardskrivare." #: ../src/msw/thread.cpp:1214 -msgid "Thread module initialization failed: can not store value in thread local storage" -msgstr "Trådmodulinitialisering misslyckades: Kan inte spara värde i trådens lokala lagring" +msgid "" +"Thread module initialization failed: can not store value in thread local " +"storage" +msgstr "" +"Trådmodulinitialisering misslyckades: Kan inte spara värde i trådens lokala " +"lagring" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Trådmodulinitialisering misslyckades: Kunde inte skapa trådnyckel" #: ../src/msw/thread.cpp:1202 -msgid "Thread module initialization failed: impossible to allocate index in thread local storage" -msgstr "Trådmodulinitialisering misslyckades: Omöjligt att allokera index i trådens lokala lagring" +msgid "" +"Thread module initialization failed: impossible to allocate index in thread " +"local storage" +msgstr "" +"Trådmodulinitialisering misslyckades: Omöjligt att allokera index i trådens " +"lokala lagring" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Trådprioritetsinställningar ignoreras" @@ -2779,15 +2722,15 @@ msgstr "Ordna &horisontellt" msgid "Tile &Vertically" msgstr "Ordna &vertikalt" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:721 msgid "Time" msgstr "Tid" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Dagens tips" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Tipsen är inte tillgängliga." @@ -2808,7 +2751,7 @@ msgstr "F msgid "Trying to solve a NULL hostname: giving up" msgstr "Försöker slå upp ett NULL värdnamn: ger upp" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Turkiska (ISO-8859-9)" @@ -2821,73 +2764,62 @@ msgstr "US standard Fanfold, 14 7/8 x 11 tum" msgid "Unable to open requested HTML document: %s" msgstr "Kunde inte öppna efterfrågat HTML-dokument: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Understrykning" -#: ../src/common/resourc2.cpp:305 -#: ../src/common/resourc2.cpp:319 -#: ../src/common/resourc2.cpp:335 -#: ../src/common/resourc2.cpp:349 -#: ../src/common/resourc2.cpp:1370 -#: ../src/common/resourc2.cpp:1384 -#: ../src/common/resourc2.cpp:1400 -#: ../src/common/resourc2.cpp:1414 -#: ../src/common/resource.cpp:1824 -#: ../src/common/resource.cpp:1838 -#: ../src/common/resource.cpp:1855 -#: ../src/common/resource.cpp:1869 -#: ../src/common/resource.cpp:1954 -#: ../src/common/resource.cpp:1968 -#: ../src/common/resource.cpp:1984 -#: ../src/common/resource.cpp:1998 -#: ../src/common/resource.cpp:3038 -#: ../src/common/resource.cpp:3052 -#: ../src/common/resource.cpp:3069 -#: ../src/common/resource.cpp:3083 +#: ../src/common/resourc2.cpp:305 ../src/common/resourc2.cpp:319 +#: ../src/common/resourc2.cpp:335 ../src/common/resourc2.cpp:349 +#: ../src/common/resourc2.cpp:1370 ../src/common/resourc2.cpp:1384 +#: ../src/common/resourc2.cpp:1400 ../src/common/resourc2.cpp:1414 +#: ../src/common/resource.cpp:1824 ../src/common/resource.cpp:1838 +#: ../src/common/resource.cpp:1855 ../src/common/resource.cpp:1869 +#: ../src/common/resource.cpp:1954 ../src/common/resource.cpp:1968 +#: ../src/common/resource.cpp:1984 ../src/common/resource.cpp:1998 +#: ../src/common/resource.cpp:3038 ../src/common/resource.cpp:3052 +#: ../src/common/resource.cpp:3069 ../src/common/resource.cpp:3083 msgid "Unexpected end of file whilst parsing resource." msgstr "Oväntat slut på filen när resursen tolkades." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Oväntad parameter \"%s\"" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "Unicode 7 bitar (UTF-7)" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "Unicode 8 bitar (UTF-8)" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Okänt DDE-fel %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Okänd kodning (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "Okänt fält i fil %s, rad %d: \"%s\"." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Okänd lång flagga \"%s\"" -#: ../src/common/cmdline.cpp:573 -#: ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Okänd flagga \"%s\"" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "Okänd stilflagga" @@ -2896,25 +2828,22 @@ msgstr "Ok msgid "Unmatched '{' in an entry for mime type %s." msgstr "Omatchad \"{\" i en post för mime-typ %s." -#: ../src/common/cmdproc.cpp:238 -#: ../src/common/cmdproc.cpp:254 -#: ../src/common/cmdproc.cpp:281 +#: ../src/common/cmdproc.cpp:248 ../src/common/cmdproc.cpp:274 +#: ../src/common/cmdproc.cpp:294 msgid "Unnamed command" msgstr "Namnlöst kommando" -#: ../src/common/resourc2.cpp:687 -#: ../src/common/resource.cpp:2343 +#: ../src/common/resourc2.cpp:687 ../src/common/resource.cpp:2343 #, c-format msgid "Unrecognized style %s whilst parsing resource." msgstr "Okänd stil %s när resursen tolkades." -#: ../src/mac/clipbrd.cpp:58 -#: ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Urklippsformatet stöds inte." -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "Temat \"%s\" stöds inte." @@ -2923,7 +2852,7 @@ msgstr "Temat \"%s\" st msgid "Up" msgstr "Upp" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Användning: %s" @@ -2932,24 +2861,23 @@ msgstr "Anv msgid "Validation conflict" msgstr "Bekräftningskonflikt" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1118 msgid "View files as a detailed view" msgstr "Visa filer som detaljerad lista" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1111 msgid "View files as a list view" msgstr "Visa filer som lista" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Vyer" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Väntan på att subprocessen skulle avslutas misslyckades" -#: ../src/common/docview.cpp:437 -#: ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Varning" @@ -2957,15 +2885,15 @@ msgstr "Varning" msgid "Warning: " msgstr "Varning: " -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "Varning: Försök att ta bort HTML-märkordshanterare från tom stack." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "Västerländsk (ISO-8859-1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "Västerländsk med Euro (ISO-8859-15)" @@ -2973,7 +2901,7 @@ msgstr "V msgid "Whole word" msgstr "Hela ord" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Endast hela ord" @@ -2981,68 +2909,68 @@ msgstr "Endast hela ord" msgid "Win32 theme" msgstr "Win32 tema" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s på Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows arabiska (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows baltiska språk (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows centraleuropeiska (CP 1250)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "Windows förenklad kinesiska (CP 936)" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows traditionelll kinesiska (CP 950)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows kyrilliska (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows grekiska (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows hebreiska (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "Windows japanska (CP 932)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "Windows koreanska (CP 949)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows turkiska (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows västerländska (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3051,7 +2979,7 @@ msgstr "Windows/DOS OEM (CP 437)" msgid "Write error on file '%s'" msgstr "Skrivfel på fil \"%s\"" -#: ../contrib/src/xrc/xml.cpp:530 +#: ../contrib/src/xrc/xml.cpp:540 #, c-format msgid "XML parsing error: '%s' at line %d" msgstr "XML tolkningsfel: \"%s\" på rad %d" @@ -3060,35 +2988,27 @@ msgstr "XML tolkningsfel: \"%s\" p msgid "XPM: Malformed pixel data!" msgstr "XPM: Felaktigt pixeldata!" -#: ../src/common/xpmdecod.cpp:709 -#: ../src/common/xpmdecod.cpp:718 +#: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 #, c-format msgid "XPM: malformed colour definition '%s'!" msgstr "XPM: Felaktig färgdefinition \"%s\"!" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "XRC-resurs \"%s\" (klass \"%s\") hittades inte!" -#: ../contrib/src/xrc/xmlres.cpp:787 -#: ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "XRC-resurs: Kan inte skapa bild från \"%s\"." -#: ../contrib/src/xrc/xh_dlg.cpp:52 -#: ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "XRC-resurs: Kan inte skapa dialog utan instans." - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "XRC-resurs: Felaktig färgspecifikation \"%s\" för egenskap \"%s\"." -#: ../src/common/dlgcmn.cpp:151 -#: ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Ja" @@ -3097,22 +3017,22 @@ msgstr "Ja" msgid "You cannot add a new directory to this section." msgstr "Du kan inte lägga till en ny katalog till denna avdelning." -#: ../src/common/fs_zip.cpp:86 -#: ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "ZIP-hanteraren stöder för närvarande endast lokala filer!" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[TOM]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "en DDEML-applikation har skapat ett långvarigt race-tillstånd." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" -"a DDEML function was called without first calling the DdeInitialize function,\n" +"a DDEML function was called without first calling the DdeInitialize " +"function,\n" "or an invalid instance identifier\n" "was passed to a DDEML function." msgstr "" @@ -3120,39 +3040,42 @@ msgstr "" "eller en ogiltig instansidentifierare\n" "sändes till en DDEML-funktion." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "en klients försök att etablera en konversation har misslyckats." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "en minnesallokering misslyckades." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "en parameter kunde inte bekräftas av DDEML." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." -msgstr "tiden för en förfrågan för en synkron meddelandetransaktion har gått ut." +msgstr "" +"tiden för en förfrågan för en synkron meddelandetransaktion har gått ut." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "tiden för en förfrågan för en synkron datatransaktion har gått ut." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." -msgstr "tiden för en förfrågan för en synkron exekveringstransaktion har gått ut." +msgstr "" +"tiden för en förfrågan för en synkron exekveringstransaktion har gått ut." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "tiden för en förfrågan för en synkron poke-transaktion har gått ut." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." -msgstr "tiden för en förfrågan att avsluta en meddelandetransaktion har gått ut." +msgstr "" +"tiden för en förfrågan att avsluta en meddelandetransaktion har gått ut." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3162,7 +3085,7 @@ msgstr "" "som avslutades av klienten, eller servern\n" "avslutade före transaktionen var genomförd." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "en transaktion misslyckades." @@ -3170,7 +3093,7 @@ msgstr "en transaktion misslyckades." msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3182,15 +3105,15 @@ msgstr "" "eller en applikation initialiserad som en APPCMD_CLIENTONLY har \n" "försökt genomföra servertransaktioner." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "ett internt anrop till PostMessage-funktionen har misslyckats. " -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "ett internt fel har uppstått i DDEML." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3200,7 +3123,7 @@ msgstr "" "När applikationen har återvänt från ett XTYP_XACT_COMPLETE anrop,\n" "är transaktionsidentifieraren för det anropet inte längre giltig." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "försök att ändra oföränderlig tangent \"%s\" ignorerad." @@ -3209,11 +3132,11 @@ msgstr "f msgid "binary" msgstr "binär" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 msgid "bold" msgstr "fet" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 msgid "bold " msgstr "fet" @@ -3222,32 +3145,32 @@ msgstr "fet" msgid "can't close file '%s'" msgstr "kan inte stänga filen \"%s\"" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "kan inte stänga filidentifierare %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "kan inte genomföra ändringar till fil \"%s\"" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "kan inte skapa fil \"%s\"" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "kan inte ta bort användarens konfigurationsfil \"%s\"" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "kan inte avgöra om slutet är nått på identifierare %d" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "kan inte hitta filens längd på filidentifierare %d" @@ -3256,56 +3179,55 @@ msgstr "kan inte hitta filens l msgid "can't find user's HOME, using current directory." msgstr "kan inte hitta användarens HOME, använder aktuell katalog." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "kan inte tömma filidentifierare %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "kan inte hitta sökposition på filidentifierare %d" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "kan inte ladda något typsnitt, avbryter" -#: ../src/common/ffile.cpp:77 -#: ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "kan inte öppna filen \"%s\"" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "kan inte öppna global konfigurationsfil \"%s\"." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "kan inte öppna användarkonfigurationsfil \"%s\"." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "kan inte öppna användarens konfigurationsfil." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "kan inte läsa från filidentifierare %d" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "kan inte ta bort filen \"%s\"" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "kan inte ta bort temporär fil \"%s\"" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "kan inte söka på filidentifierare %d" @@ -3315,12 +3237,12 @@ msgstr "kan inte s msgid "can't write buffer '%s' to disk." msgstr "kan inte skriva buffer \"%s\" till disk." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "kan inte skriva till filidentifierare %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "kan inte skriva användarens konfigurationsfil." @@ -3333,32 +3255,32 @@ msgstr "katalogfil f msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "datum" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "förvald" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "artonde" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "åttonde" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "elfte" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "post \"%s\" förekommer mer än en gång i grupp \"%s\"" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "etablera" @@ -3367,64 +3289,64 @@ msgstr "etablera" msgid "failed to flush the file '%s'" msgstr "misslyckades att tömma filen \"%s\"" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "femtonde" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "femte" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "fil \"%s\", rad %d: \"%s\" ignorerad efter grupphuvud." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "fil \"%s\", rad %d: \"=\" förväntat." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "fil \"%s\", rad %d: tangent \"%s\" hittades först på rad %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "fil \"%s\", rad %d: värde för oföränderlig tangent \"%s\" ignorerad." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "fil \"%s\": oväntat tecken %c på rad %d." -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "första" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "fjortonde" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "fjärde" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "skapa mångordiga loggmeddelanden" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() misslyckades" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "initiera" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "ogiltigt eof() returvärde." @@ -3432,20 +3354,15 @@ msgstr "ogiltigt eof() returv msgid "invalid message box return value" msgstr "ogilitigt returvärde för meddelanderuta" -#: ../src/common/fontcmn.cpp:458 -#: ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" msgstr "kursiv" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "stor" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 msgid "light" msgstr "tunn" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 msgid "light " msgstr "tunn" @@ -3459,60 +3376,55 @@ msgstr "lokal \"%s\" kan inte s msgid "looking for catalog '%s' in path '%s'." msgstr "söker efter katalog \"%s\" i sökväg \"%s\"." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "medium" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "midnatt" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() misslyckades" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "nittonde" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "nionde" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "inget DDD-fel." -#: ../src/html/helpdata.cpp:561 -#: ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:574 msgid "noname" msgstr "namnlös" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "middag" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "läser" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "återinträdesproblem." -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "andra" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "sjuttonde" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "sjunde" @@ -3520,80 +3432,76 @@ msgstr "sjunde" msgid "shift" msgstr "skift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "visa detta hjälpmeddelande" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "sextonde" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "sjätte" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "liten" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "ange visningsläge att använda (t.ex. 640x480-16)" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "ange temat som skall användas" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "tionde" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "svaret på transaktionen gjorde att DDE_FBUSY-biten sattes." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "tredje" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "trettonde" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "idag" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "imorgon" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "tolfte" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "tjugonde" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 msgid "underlined" msgstr "understrykning" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 msgid "underlined " msgstr "understrykning" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "oväntat \" på position %d i \"%s\"." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "okänd" @@ -3601,12 +3509,16 @@ msgstr "ok msgid "unknown error" msgstr "okänt fel" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "okänt fel (felkod %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +msgid "unknown line terminator" +msgstr "okänt radavslut" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "okänd sökstart" @@ -3615,11 +3527,11 @@ msgstr "ok msgid "unknown-%d" msgstr "okänd-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "namnlös" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "namnlös%d" @@ -3629,38 +3541,15 @@ msgstr "namnl msgid "using catalog '%s' from '%s'." msgstr "använder katalog \"%s\" från \"%s\"." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "väldigt stor" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "väldigt liten" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "writing" msgstr "skriver" -#: ../src/common/dynlib.cpp:336 -#, c-format -msgid "wxDllLoader failed to GetSymbol '%s'" -msgstr "wxDllLoader misslyckades med GetSymbol \"%s\"" - -#: ../src/common/dynload.cpp:278 -#, c-format -msgid "wxDynamicLibrary failed to GetSymbol '%s'" -msgstr "wxDynamicLibrary misslyckades med GetSymbol \"%s\"" - -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay misslyckades." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "wxSearchEngine:: LookFor måste anropas före sökning!" - -#: ../src/common/socket.cpp:394 -#: ../src/common/socket.cpp:448 +#: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: Ogiltig signatur i ReadMsg." @@ -3668,16 +3557,42 @@ msgstr "wxSocket: Ogiltig signatur i ReadMsg." msgid "wxSocket: unknown event!." msgstr "wxSocket: Okänd händelse!" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows kunde inte öppna skärm för \"%s\": Avslutar." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." msgstr "wxWindows kunde inte öppna skärm: avslutar." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "igår" +#~ msgid "%d" +#~ msgstr "%d" + +#~ msgid "%d...%d" +#~ msgstr "%d...%d" + +#~ msgid "Can't create dialog using memory template" +#~ msgstr "Kan inte skapa dialog med minnesmall" + +#~ msgid "Can't create dialog using template '%ul'" +#~ msgstr "Kan inte skapa dialog med mall \"%ul\"" + +#~ msgid "Did you forget to include wx/os2/wx.rc in your resources?" +#~ msgstr "Glömde du att inkludera wx/os2/wx.rc i dina resurser?" + +#~ msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" +#~ msgstr "Kunde inte skapa dialog. Felaktig DLGTEMPLATE?" + +#~ msgid "illegal scrollbar selector %d" +#~ msgstr "ogiltig rullningslistväljare %d" + +#~ msgid "wxDllLoader failed to GetSymbol '%s'" +#~ msgstr "wxDllLoader misslyckades med GetSymbol \"%s\"" + +#~ msgid "wxDynamicLibrary failed to GetSymbol '%s'" +#~ msgstr "wxDynamicLibrary misslyckades med GetSymbol \"%s\"" diff --git a/locale/tr.po b/locale/tr.po index e93873688e..808d8c1dd9 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -1,53 +1,27 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# msgid "" msgstr "" "Project-Id-Version: wxWindows 2.3.3\n" -"POT-Creation-Date: 2001-12-17 16:47+0100\n" -"PO-Revision-Date: 2002-09-09 18:07--800\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" +"PO-Revision-Date: 2002-09-16 17:41--800\n" "Last-Translator: Hakki Dogusan \n" "Language-Team: Hakki Dogusan \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-9\n" +"Content-Type: text/plain; charset=ISO-8859-9\n" "Content-Transfer-Encoding: 8bit\n" -#: ../src/generic/dirctrlg.cpp:1303 -#: ../src/generic/dirdlgg.cpp:544 -msgid "\n" -"(Do you have the required permissions?)" -msgstr "\n" -"(Gerekli yetkiniz var mý?)" - -#: ../src/generic/dirctrlg.cpp:1290 -#: ../src/generic/dirdlgg.cpp:531 -msgid "" -"\n" -"does not exist\n" -"Create it now?" -msgstr "" -"\n" -"yok\n" -"Þimdi yaratýlsýn mý?" - -#: ../src/common/log.cpp:241 +#: ../src/common/log.cpp:304 #, c-format msgid " (error %ld: %s)" msgstr " (hata %ld: %s)" -#: ../src/common/docview.cpp:1205 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr "-" -#: ../src/html/htmprint.cpp:507 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr "Önizleme" -#: ../src/generic/filedlgg.cpp:439 -msgid " bytes " -msgstr "baytlar" - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Zarf, 4 1/8 x 9 1/2 inç" @@ -68,83 +42,97 @@ msgstr "#14 Zarf, 5 x 11 1/2 in msgid "#9 Envelope, 3 7/8 x 8 7/8 in" msgstr "#9 Zarf, 3 7/8 x 8 7/8 inç" -#: ../src/common/resourc2.cpp:265 -#: ../src/common/resourc2.cpp:1326 -#: ../src/common/resource.cpp:1777 -#: ../src/common/resource.cpp:1907 -#: ../src/common/resource.cpp:2983 +#: ../src/common/resourc2.cpp:265 ../src/common/resourc2.cpp:1326 +#: ../src/common/resource.cpp:1784 ../src/common/resource.cpp:1914 +#: ../src/common/resource.cpp:2994 #, c-format msgid "#define %s must be an integer." msgstr "#define %s bir tamsayý olmalýdýr." -#: ../src/html/helpfrm.cpp:854 -#: ../src/html/helpfrm.cpp:855 -#: ../src/html/helpfrm.cpp:1447 -#: ../src/html/helpfrm.cpp:1477 +#: ../src/common/prntbase.cpp:375 +#, c-format +msgid "%d" +msgstr "" + +#: ../src/common/prntbase.cpp:373 +#, c-format +msgid "%d...%d" +msgstr "" + +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i / %i" -#: ../src/common/cmdline.cpp:772 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (veya %s)" -#: ../src/generic/logg.cpp:233 +#: ../src/generic/logg.cpp:246 #, c-format msgid "%s Error" msgstr "%s Hata" -#: ../src/generic/logg.cpp:241 +#: ../src/generic/logg.cpp:254 #, c-format msgid "%s Information" msgstr "%s Bilgi" -#: ../src/generic/logg.cpp:237 +#: ../src/generic/logg.cpp:250 #, c-format msgid "%s Warning" msgstr "%s Uyarý" -#: ../src/common/resourc2.cpp:709 -#: ../src/common/resource.cpp:2359 +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + +#: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." msgstr "%s resim kaynaðý tanýmý deðil." -#: ../src/common/resourc2.cpp:860 -#: ../src/common/resource.cpp:2509 +#: ../src/common/resourc2.cpp:860 ../src/common/resource.cpp:2520 #, c-format msgid "%s not an icon resource specification." msgstr "%s ikon kaynaðý tanýmý deðil." -#: ../src/common/resourc2.cpp:357 -#: ../src/common/resourc2.cpp:1422 -#: ../src/common/resource.cpp:1870 -#: ../src/common/resource.cpp:1999 -#: ../src/common/resource.cpp:3080 +#: ../src/common/resourc2.cpp:357 ../src/common/resourc2.cpp:1422 +#: ../src/common/resource.cpp:1877 ../src/common/resource.cpp:2006 +#: ../src/common/resource.cpp:3091 #, c-format msgid "%s: ill-formed resource file syntax." msgstr "%s: hatalý oluþturulmuþ kaynak dosyasiý." -#: ../src/msw/mdi.cpp:181 +#: ../src/msw/mdi.cpp:192 msgid "&Arrange Icons" msgstr "Si&mgeleri Düzenle" -#: ../src/generic/fdrepdlg.cpp:170 -#: ../src/generic/wizard.cpp:239 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "Ýptal" -#: ../src/msw/mdi.cpp:177 +#: ../src/msw/mdi.cpp:188 msgid "&Cascade" msgstr "&Kademelendir" -#: ../src/generic/logg.cpp:475 -#: ../src/generic/tipdlg.cpp:170 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "&Kapat" -#: ../src/generic/logg.cpp:679 +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "Teletype" + +#: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "&Detaylar" @@ -152,38 +140,50 @@ msgstr "&Detaylar" msgid "&Find" msgstr "B&ul" -#: ../src/generic/wizard.cpp:355 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "&Bitir" -#: ../src/generic/wizard.cpp:228 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "&Yardým" -#: ../src/generic/logg.cpp:476 +#: ../src/generic/logg.cpp:492 msgid "&Log" msgstr "&Günlük" -#: ../src/msw/mdi.cpp:182 +#: ../src/univ/themes/win32.cpp:4539 +msgid "&Move" +msgstr "" + +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "&Sonraki" -#: ../src/generic/wizard.cpp:236 -#: ../src/generic/wizard.cpp:357 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "&Sonraki >" -#: ../src/generic/tipdlg.cpp:175 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "%Sonraki Ýpucu" -#: ../src/common/cmdproc.cpp:248 -#: ../src/common/cmdproc.cpp:259 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "tarih" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 +#, fuzzy +msgid "&Previous" +msgstr "Önceki sayfa" + +#: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "Geri al iptal" -#: ../src/common/cmdproc.cpp:242 -#: ../src/common/cmdproc.cpp:269 +#: ../src/common/cmdproc.cpp:255 ../src/common/cmdproc.cpp:282 msgid "&Redo " msgstr "Geri al iptal" @@ -191,46 +191,55 @@ msgstr "Geri al iptal" msgid "&Replace" msgstr "&Deðiþtir" -#: ../src/generic/logg.cpp:471 -#: ../src/generic/logg.cpp:765 +#: ../src/univ/themes/win32.cpp:4538 +#, fuzzy +msgid "&Restore" +msgstr "Geri al iptal" + +#: ../src/generic/logg.cpp:487 ../src/generic/logg.cpp:818 msgid "&Save..." msgstr "Kay&det" -#: ../src/generic/tipdlg.cpp:172 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "%Baþlangýçta ipuçlarýný göster" -#: ../src/common/cmdproc.cpp:254 +#: ../src/univ/themes/win32.cpp:4541 +#, fuzzy +msgid "&Size" +msgstr "Boyut" + +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "&Geri Al" -#: ../src/common/cmdproc.cpp:229 +#: ../src/common/cmdproc.cpp:241 msgid "&Undo " msgstr "&Geri Al" -#: ../src/msw/mdi.cpp:1308 -#: ../src/msw/mdi.cpp:1315 -#: ../src/msw/window.cpp:2700 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "&Pencere" -#: ../src/common/config.cpp:394 -#: ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' içinde fazladan '..' var, gözardý edildi." -#: ../src/common/valtext.cpp:140 +#: ../src/common/valtext.cpp:147 ../src/common/valtext.cpp:177 +#: ../src/common/valtext.cpp:183 #, c-format msgid "'%s' is invalid" msgstr "'%s' geçersiz" -#: ../src/common/cmdline.cpp:694 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' seçenek '%s' için doðru bir sayýsal deðer deðil." -#: ../src/common/intl.cpp:436 +#: ../src/common/intl.cpp:402 #, c-format msgid "'%s' is not a valid message catalog." msgstr "'%s' geçerli bir mesaj kataloðu deðil." @@ -240,55 +249,50 @@ msgstr "'%s' ge msgid "'%s' is probably a binary buffer." msgstr "'%s' muhtemelen ikili tampon." -#: ../src/common/valtext.cpp:178 +#: ../src/common/valtext.cpp:172 #, c-format msgid "'%s' should be numeric." msgstr "'%s' sayýsal olmalý" -#: ../src/common/valtext.cpp:160 +#: ../src/common/valtext.cpp:154 #, c-format msgid "'%s' should only contain ASCII characters." msgstr "'%s' sadece ASCII karakterler içermeli." -#: ../src/common/valtext.cpp:166 +#: ../src/common/valtext.cpp:160 #, c-format msgid "'%s' should only contain alphabetic characters." msgstr "'%s' sadece alfabetik karakterler içermeli." -#: ../src/common/valtext.cpp:172 +#: ../src/common/valtext.cpp:166 #, c-format msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' sadece alfabetik veya sayýsal karakterler içermeli." -#: ../src/html/helpfrm.cpp:773 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(Yardým)" -#: ../src/html/helpfrm.cpp:336 -#: ../src/html/helpfrm.cpp:922 -#: ../src/html/helpfrm.cpp:1504 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(yer imleri)" -#: ../src/common/resourc2.cpp:297 -#: ../src/common/resourc2.cpp:1362 -#: ../src/common/resource.cpp:1809 -#: ../src/common/resource.cpp:1939 -#: ../src/common/resource.cpp:3019 -msgid ", expected static, #include or #define\n" +#: ../src/common/resourc2.cpp:297 ../src/common/resourc2.cpp:1362 +#: ../src/common/resource.cpp:1816 ../src/common/resource.cpp:1946 +#: ../src/common/resource.cpp:3030 +msgid "" +", expected static, #include or #define\n" "whilst parsing resource." -msgstr ", kaynaðý ayrýþtýrýrken statik, #include veya #define\n" +msgstr "" +", kaynaðý ayrýþtýrýrken statik, #include veya #define\n" "bekleniyor." -#: ../src/generic/dirctrlg.cpp:644 -#: ../src/generic/dirdlgg.cpp:263 -#: ../src/generic/filedlgg.cpp:833 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:645 -#: ../src/generic/dirdlgg.cpp:264 -#: ../src/generic/filedlgg.cpp:834 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -304,48 +308,62 @@ msgstr "11 x 17 in msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 Zarf, 3 5/8 x 6 1/2 inç" -#: ../src/html/htmprint.cpp:281 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": dosya yok !" -#: ../src/common/fontmap.cpp:606 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": bilinmeyen karakter kümesi" -#: ../src/common/fontmap.cpp:837 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": tanýmsýz kodlama" -#: ../src/generic/wizard.cpp:233 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< &Geri" -#: ../src/generic/filedlgg.cpp:467 +#: ../src/generic/filedlgg.cpp:534 msgid "

    " msgstr "" -#: ../src/generic/filedlgg.cpp:434 -msgid " " -msgstr "" - -#: ../src/generic/filedlgg.cpp:468 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:435 -msgid " " -msgstr "" - -#: ../src/html/helpfrm.cpp:1071 -msgid "Normal face
    (and underlined. Italic face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4
    " -msgstr "Normal face
    (and underlined. Italic face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4
    " +#: ../src/html/helpfrm.cpp:994 +#, fuzzy +msgid "" +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " +msgstr "" +"Normal face
    (and underlined. Italic face. " +"Bold face. Bold italic face.
    font size " +"-2
    font size -1
    font size " +"+0
    font size +1
    font size " +"+2
    font size +3
    font size " +"+4

    Fixed size face.
    bold italic " +"bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4
    " #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" msgstr "A3 sayfa, 297 x 420 mm" #: ../src/common/paper.cpp:104 -#: ../src/generic/dcpsg.cpp:2545 msgid "A4 sheet, 210 x 297 mm" msgstr "A4 sayfa, 210 x 297 mm" @@ -357,7 +375,7 @@ msgstr "A4 sayfa, 210 x 297 mm" msgid "A5 sheet, 148 x 210 mm" msgstr "A5 sayfa, 148 x 210 mm" -#: ../src/generic/fontdlgg.cpp:327 +#: ../src/generic/fontdlgg.cpp:83 msgid "ABCDEFGabcdefg12345" msgstr "ABCDEFGabcdefg12345" @@ -365,29 +383,28 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "ASCII" -#: ../src/html/helpfrm.cpp:330 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "Geçerli sayfayý yer imlerine ekle" -#: ../src/generic/colrdlgg.cpp:273 +#: ../src/generic/colrdlgg.cpp:287 msgid "Add to custom colours" msgstr "Tanýmlý renklere ekle" -#: ../src/html/helpctrl.cpp:90 +#: ../src/html/helpctrl.cpp:95 #, c-format msgid "Adding book %s" msgstr "%s kitabý ekleniyor" -#: ../src/generic/prntdlgg.cpp:161 +#: ../src/generic/prntdlgg.cpp:160 msgid "All" msgstr "Tümü" -#: ../include/wx/defs.h:1626 -#: ../src/generic/filedlgg.cpp:950 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "Tüm dosyalar (*)|*" -#: ../include/wx/defs.h:1623 +#: ../include/wx/defs.h:1803 msgid "All files (*.*)|*.*" msgstr "Tüm dosyalar (*.*)|*.*" @@ -395,12 +412,12 @@ msgstr "T msgid "Already dialling ISP." msgstr "ISP zaten aranýyor." -#: ../src/generic/logg.cpp:1020 +#: ../src/generic/logg.cpp:1109 #, c-format msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "'%s' günlük dosyasýna ekle ([Hayýr] seçilirse üstüne yazýlacak)?" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "Arapça (ISO-8859-6)" @@ -424,57 +441,58 @@ msgstr "B5 sayfa, 182 x 257 mm" msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 Zarf, 176 x 125 mm" -#: ../src/common/imagbmp.cpp:277 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 +#, fuzzy +msgid "BMP: Couldn't allocate memory." +msgstr "PNM: bellek yaratýlamadý." + +#: ../src/common/imagbmp.cpp:86 msgid "BMP: Couldn't save invalid image." msgstr "BMP:Geçersiz imaj kaydedilemedi." -#: ../src/common/imagbmp.cpp:481 +#: ../src/common/imagbmp.cpp:290 msgid "BMP: Couldn't write RGB color map." msgstr "BMP: RGB renk haritasý yazýlamadý." -#: ../src/common/imagbmp.cpp:613 +#: ../src/common/imagbmp.cpp:422 msgid "BMP: Couldn't write data." msgstr "BMP: Veri yazýlamadý." -#: ../src/common/imagbmp.cpp:386 +#: ../src/common/imagbmp.cpp:195 msgid "BMP: Couldn't write the file (Bitmap) header." msgstr "BMP: Resim baþlýðý (Bitmap) yazýlamadý." -#: ../src/common/imagbmp.cpp:407 +#: ../src/common/imagbmp.cpp:216 msgid "BMP: Couldn't write the file (BitmapInfo) header." msgstr "BMP: Resim bilgi baþlýðý (BitmapInfo) yazýlamadý." -#: ../src/common/imagbmp.cpp:311 -msgid "BMP: wImage doesn't have own wxPalette." +#: ../src/common/imagbmp.cpp:120 +#, fuzzy +msgid "BMP: wxImage doesn't have own wxPalette." msgstr "BMP: wxImage'nin kendi wxPalette'si yok." -#: ../src/generic/helpwxht.cpp:157 -msgid "Back" -msgstr "Geri" - -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Geriye" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "Baltýk (ISO-8859-13)" -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "Baltýk (eski) (ISO-8859-4)" -#: ../src/common/resourc2.cpp:840 -#: ../src/common/resource.cpp:2489 +#: ../src/common/resourc2.cpp:840 ../src/common/resource.cpp:2500 #, c-format msgid "Bitmap resource specification %s not found." msgstr "Resim kaynak tanýmý %s bulunamadý." -#: ../src/generic/fontdlgg.cpp:219 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "Kalýn" -#: ../src/generic/prntdlgg.cpp:660 +#: ../src/generic/prntdlgg.cpp:645 msgid "Bottom margin (mm):" msgstr "Alt boþluk (mm):" @@ -482,7 +500,7 @@ msgstr "Alt bo msgid "C sheet, 17 x 22 in" msgstr "C sayfa, 17 x 22 inç" -#: ../src/generic/logg.cpp:473 +#: ../src/generic/logg.cpp:489 msgid "C&lear" msgstr "T&emizle" @@ -506,51 +524,39 @@ msgstr "C6 Zarf, 114 x 162 mm" msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 Zarf, 114 x 229 mm" -#: ../src/msw/thread.cpp:243 -msgid "Can not create event object." -msgstr "Oluþ objesi yaratýlamadý." - -#: ../src/msw/thread.cpp:145 -msgid "Can not create mutex" -msgstr "Muteks yaratýlamadý" - -#: ../src/common/filefn.cpp:1324 +#: ../src/common/filefn.cpp:1369 #, c-format msgid "Can not enumerate files '%s'" msgstr "'%s' dosyalarý sayýlamýyor" -#: ../src/mgl/dir.cpp:202 -#: ../src/msw/dir.cpp:296 -#: ../src/unix/dir.cpp:224 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "'%s' dizinindeki dosyalar sayýlamýyor" -#: ../src/mac/thread.cpp:439 -#: ../src/msw/thread.cpp:583 +#: ../src/mac/thread.cpp:472 ../src/msw/thread.cpp:685 #, c-format msgid "Can not resume thread %x" msgstr "%x iþ parçacýðý yeniden baþlatýlamadý" -#: ../src/msw/thread.cpp:461 +#: ../src/msw/thread.cpp:559 msgid "Can not start thread: error writing TLS." msgstr "Ýþ parçacýðý baþlatýlamadý: TLS yazma hatasý." -#: ../src/mac/thread.cpp:415 -#: ../src/msw/thread.cpp:568 +#: ../src/mac/thread.cpp:448 ../src/msw/thread.cpp:670 #, c-format msgid "Can not suspend thread %x" msgstr "%x iþ parçacýðý beklemeye alýnamadý" -#: ../src/msw/thread.cpp:902 +#: ../src/msw/thread.cpp:1016 msgid "Can not wait for thread termination" msgstr "Ýþ parçacýðýnýn bitmesi beklenemiyor" -#: ../src/common/cmdproc.cpp:231 +#: ../src/common/cmdproc.cpp:243 msgid "Can't &Undo " msgstr "&Geri al yapýlamýyor" -#: ../src/common/image.cpp:1207 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "'%s' dosyasýnýn imaj biçemi kontrol edilemiyor: dosya yok." @@ -565,34 +571,31 @@ msgstr "'%s' kay msgid "Can't copy values of unsupported type %d." msgstr "Desteklenmeyen %d tipinin deðerleri kopyalanamýyor." -#: ../src/msw/toplevel.cpp:223 -#, c-format -msgid "Can't create dialog using template '%s'" +#: ../src/msw/toplevel.cpp:315 +#, fuzzy +msgid "Can't create dialog using memory template" msgstr "'%s' þablonu kullanarak pencere yaratýlamýyor" -#: ../src/msw/listctrl.cpp:270 +#: ../src/os2/toplevel.cpp:369 +#, fuzzy, c-format +msgid "Can't create dialog using template '%ul'" +msgstr "'%s' þablonu kullanarak pencere yaratýlamýyor" + +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." -msgstr "Liste nesnesi yaratýlamýyor; comctl32.dll'nin yüklü olduðunu denetleyiniz." +msgstr "" +"Liste nesnesi yaratýlamýyor; comctl32.dll'nin yüklü olduðunu denetleyiniz." #: ../src/msw/registry.cpp:402 #, c-format msgid "Can't create registry key '%s'" msgstr "'%s' kayýt anahtarý yaratýlamadý" -#: ../src/msw/utilsexc.cpp:485 -msgid "Can't create the inter-process read pipe" -msgstr "Süreç-arasý okuma borusu yaratýlamýyor" - -#: ../src/msw/utilsexc.cpp:497 -msgid "Can't create the inter-process write pipe" -msgstr "Süreç-arasý yazma borusu yaratýlamýyor" - -#: ../src/mac/thread.cpp:394 -#: ../src/msw/thread.cpp:550 +#: ../src/mac/thread.cpp:427 ../src/msw/thread.cpp:652 msgid "Can't create thread" msgstr "Ýþ parçacýðý yaratýlamýyor" -#: ../src/msw/window.cpp:2855 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "%s sýnýfýnýn penceresi yaratýlamýyor" @@ -602,7 +605,7 @@ msgstr "%s s msgid "Can't delete key '%s'" msgstr "'%s' anahtarý silinemedi" -#: ../src/msw/iniconf.cpp:447 +#: ../src/msw/iniconf.cpp:445 #, c-format msgid "Can't delete the INI file '%s'" msgstr "'%s' INI dosyasý silinemedi" @@ -632,27 +635,16 @@ msgstr "'%s' anahtar msgid "Can't find current position in file '%s'" msgstr "'%s' dosyasýndaki geçerli yer bulunamýyor" -#: ../src/common/object.cpp:335 -#: ../src/common/object.cpp:360 -#, c-format -msgid "Can't find the serialization object '%s' for the object '%s'." -msgstr "'%s' diziselleþtirme nesnesi '%s' nesnesi için bulunamýyor." - #: ../src/msw/registry.cpp:351 #, c-format msgid "Can't get info about registry key '%s'" msgstr "'%s' kayýt anahtarý hakkýnda bilgi alýnamýyor" -#: ../src/common/image.cpp:904 -#: ../src/common/image.cpp:924 +#: ../src/common/image.cpp:913 ../src/common/image.cpp:933 #, c-format msgid "Can't load image from file '%s': file does not exist." msgstr "Ýmaj '%s' dosyasýndan yüklenemiyor: dosya yok." -#: ../src/common/object.cpp:328 -msgid "Can't load wxSerial dynamic library." -msgstr "wxSerial devingen kitaplýðý yüklenemiyor." - #: ../src/msw/dib.cpp:434 #, c-format msgid "Can't open file '%s'" @@ -668,241 +660,251 @@ msgstr "'%s' kay msgid "Can't read value of '%s'" msgstr "'%s''nin deðeri okunamadý" -#: ../src/msw/registry.cpp:777 -#: ../src/msw/registry.cpp:816 +#: ../src/msw/registry.cpp:777 ../src/msw/registry.cpp:816 #, c-format msgid "Can't read value of key '%s'" msgstr "'%s' anahtarýnýn deðeri okunamýyor" -#: ../src/generic/logg.cpp:535 -#: ../src/generic/logg.cpp:930 +#: ../src/common/image.cpp:955 +#, fuzzy, c-format +msgid "Can't save image to file '%s': unknown extension." +msgstr "Ýmaj '%s' dosyasýndan yüklenemiyor: dosya yok." + +#: ../src/generic/logg.cpp:551 ../src/generic/logg.cpp:985 msgid "Can't save log contents to file." msgstr "Günlük içeriði dosyaya kaydedilemiyor." -#: ../src/msw/thread.cpp:513 +#: ../src/msw/thread.cpp:611 msgid "Can't set thread priority" msgstr "Ýþ parçacýðý önceliði ayarlanamýyor" -#: ../src/msw/registry.cpp:802 -#: ../src/msw/registry.cpp:928 +#: ../src/msw/registry.cpp:802 ../src/msw/registry.cpp:928 #, c-format msgid "Can't set value of '%s'" msgstr "'%s' nin deðeri deðiþtirilemiyor" -#: ../src/common/dlgcmn.cpp:189 -#: ../src/common/prntbase.cpp:109 -#: ../src/generic/dcpsg.cpp:2269 -#: ../src/generic/dirctrlg.cpp:1249 -#: ../src/generic/dirdlgg.cpp:418 -#: ../src/generic/filedlgg.cpp:1041 -#: ../src/generic/fontdlgg.cpp:259 -#: ../src/generic/prntdlgg.cpp:466 -#: ../src/generic/progdlgg.cpp:206 -#: ../src/generic/proplist.cpp:525 -#: ../src/gtk/filedlg.cpp:173 -#: ../src/gtk/fontdlg.cpp:178 -#: ../src/html/helpfrm.cpp:1053 -#: ../src/motif/msgdlg.cpp:180 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 +#: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 +#: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "Ýptal" -#: ../contrib/src/xrc/xmlres.cpp:726 -#: ../contrib/src/xrc/xmlres.cpp:767 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "Ýletiþim birimi çevrilemiyor: bilinmeyen iletiþim." -#: ../contrib/src/xrc/xml.cpp:372 -msgid "Cannot find XML I/O handler capable of loading this format." -msgstr "Bu biçemi yükleyebilecek XML I/O iþleyici bulunamýyor." +#: ../src/common/strconv.cpp:963 +#, fuzzy, c-format +msgid "Cannot convert from encoding '%s'!" +msgstr "Bilinmeyen kodlama '%s'!" -#: ../contrib/src/xrc/xml.cpp:398 -msgid "Cannot find XML I/O handler capable of saving in this format." -msgstr "Bu biçemi kaydedebilecek XML I/O iþleyici bulunamýyor." - -#: ../src/msw/dialup.cpp:525 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "Aktif çevirmeli baðlantý bulunamýyor: %s" -#: ../contrib/src/xrc/xmlres.cpp:206 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "Bilinmeyen '%s' kontrolü için taþýyýcý bulunamýyor." -#: ../contrib/src/xrc/xmlres.cpp:781 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, c-format msgid "Cannot find font node '%s'." msgstr "'%s' yazýtipi düðümü bulunamýyor." -#: ../src/msw/dialup.cpp:839 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "Adres defteri dosyasýnýn yeri bulunamýyor" -#: ../src/unix/threadpsx.cpp:976 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "Listeleme ilkesi %d için öncelik aralýðý alýnamýyor." -#: ../src/unix/utilsunx.cpp:863 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "Makine adý alýnamýyor" -#: ../src/unix/utilsunx.cpp:899 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "Resmi makine adý alýnamýyor" -#: ../src/msw/dialup.cpp:940 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "Kapatýlamýyor - aktif çevirmeli baðlantý yok." -#: ../src/msw/app.cpp:257 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "OLE baþlatýlamadý" -#: ../contrib/src/xrc/xmlres.cpp:308 +#: ../src/mgl/app.cpp:414 +#, fuzzy +msgid "Cannot initialize SciTech MGL!" +msgstr "OLE baþlatýlamadý" + +#: ../src/mgl/window.cpp:547 +#, fuzzy +msgid "Cannot initialize display." +msgstr "OLE baþlatýlamadý" + +#: ../src/msw/volume.cpp:634 +#, fuzzy, c-format +msgid "Cannot load icon from '%s'." +msgstr "Boyutlar '%s' içinden ayrýþtýrýlamýyor." + +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "Kaynaklar '%s' dosyasýndan yüklenemedi." -#: ../src/html/htmlfilt.cpp:147 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "%s HTML dökumaný açýlamýyor" -#: ../src/html/helpdata.cpp:585 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "%s HTML yardým kitapçýðý açýlamýyor" -#: ../src/generic/helpext.cpp:96 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "URL '%s' açýlamadý" -#: ../src/html/helpdata.cpp:268 +#: ../src/html/helpdata.cpp:277 #, c-format msgid "Cannot open contents file: %s" msgstr "%s içerik dosyasý açýlamýyor" -#: ../contrib/src/xrc/xmlres.cpp:282 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "'%s' dosyasý açýlamýyor." -#: ../src/generic/dcpsg.cpp:1584 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "Dosya PostScript yazdýrma için açýlamýyor!" -#: ../src/html/helpdata.cpp:284 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "'%s' dizin dosyasý açýlamýyor" -#: ../contrib/src/xrc/xmlres.cpp:714 +#: ../contrib/src/xrc/xmlres.cpp:957 #, c-format msgid "Cannot parse coordinates from '%s'." msgstr "Konumlar '%s' içinden ayrýþtýrýlamýyor." -#: ../contrib/src/xrc/xmlres.cpp:755 +#: ../contrib/src/xrc/xmlres.cpp:998 #, c-format msgid "Cannot parse dimension from '%s'." msgstr "Boyutlar '%s' içinden ayrýþtýrýlamýyor." -#: ../src/html/helpfrm.cpp:1336 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "Boþ sayfa basýlamýyor." -#: ../src/unix/threadpsx.cpp:957 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 +#, fuzzy, c-format +msgid "Cannot read typename from '%s'!" +msgstr "Konumlar '%s' içinden ayrýþtýrýlamýyor." + +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "Ýþparçacýðý listeleme ilkesi alýnamýyor." -#: ../src/unix/threadpsx.cpp:606 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "Ýþ parçacýðý baþlatýlamýyor: TLS yazma hatasý" -#: ../src/html/helpfrm.cpp:459 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "Büyük küçük harfe duyarlý" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "Keltçe (ISO-8859-14)" -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "Orta Avrupa (ISO-8859-2)" -#: ../src/msw/dialup.cpp:774 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Çevrilecek ISP'yi seçiniz" -#: ../src/gtk/fontdlg.cpp:159 +#: ../src/gtk/fontdlg.cpp:122 msgid "Choose font" msgstr "Yazý tipi seç" -#: ../src/msw/glcanvas.cpp:437 -msgid "ChoosePixelFormat failed." -msgstr "ChoosePixelFormat baþarýsýz oldu." +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "Kapat" -#: ../src/generic/logg.cpp:473 +#: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Günlük içeriðini temizle" -#: ../src/common/prntbase.cpp:359 -#: ../src/generic/progdlgg.cpp:342 -#: ../src/generic/proplist.cpp:520 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 +#: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "Kapat" -#: ../src/generic/logg.cpp:475 +#: ../src/univ/themes/win32.cpp:4547 +msgid "Close\tAlt-F4" +msgstr "" + +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "Kapat" + +#: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "Bu pencereyi kapat" -#: ../src/generic/dirctrlg.cpp:486 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "Bilgisayar" -#: ../src/common/fileconf.cpp:867 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "Ayar bilgi adý '%c' ile baþlayamaz." -#: ../src/generic/filedlgg.cpp:1204 -#: ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "Onayla" -#: ../src/msw/mimetype.cpp:684 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "Kayýt deðiþikligini onaylayýnýz" -#: ../src/html/htmlwin.cpp:263 +#: ../src/html/htmlwin.cpp:262 msgid "Connecting..." msgstr "Baðlanýlýyor..." -#: ../src/generic/helpxlp.cpp:242 -#, c-format -msgid "Connection to wxHelp timed out in %d seconds" -msgstr "wxHelp'e baðlantý %d saniyede zamanaþýmýna uðradý" - -#: ../src/generic/helpwxht.cpp:159 -#: ../src/html/helpfrm.cpp:362 -#: ../src/html/helpfrm.cpp:371 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Ýçerik" -#: ../src/common/strconv.cpp:608 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "'%s' karakter kümesine dönüþüm çalýþmýyor." -#: ../src/generic/prntdlgg.cpp:194 +#: ../src/generic/prntdlgg.cpp:193 msgid "Copies:" msgstr "Kopya adedi:" -#: ../src/common/resourc2.cpp:287 -#: ../src/common/resource.cpp:1799 -#: ../src/common/resource.cpp:1929 +#: ../src/common/resourc2.cpp:287 ../src/common/resource.cpp:1806 +#: ../src/common/resource.cpp:1936 #, c-format msgid "Could not find resource include file %s." msgstr "%s kaynak içerme dosyasý bulunamadý." @@ -911,106 +913,106 @@ msgstr "%s kaynak i msgid "Could not find tab for id" msgstr "Kimlik için sekme bulunamýyor" -#: ../src/msw/textctrl.cpp:1644 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "Zengin Metin Düzenleyicisi DLL '%s' yüklenemedi" -#: ../src/common/resource.cpp:795 +#: ../src/common/resource.cpp:802 #, c-format -msgid "Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" +msgid "" +"Could not resolve control class or id '%s'. Use (non-zero) integer instead\n" " or provide #define (see manual for caveats)" -msgstr "'%s' kontrol sýnýfý veya kimliði çözülemedi. Yerine (sýfýrdan farklý) tamsayý kullanýn\n" +msgstr "" +"'%s' kontrol sýnýfý veya kimliði çözülemedi. Yerine (sýfýrdan farklý) " +"tamsayý kullanýn\n" "veya #define saðlayýn (el kitabýna bakýnýz)" -#: ../src/common/resource.cpp:1244 +#: ../src/common/resource.cpp:1251 #, c-format -msgid "Could not resolve menu id '%s'. Use (non-zero) integer instead\n" +msgid "" +"Could not resolve menu id '%s'. Use (non-zero) integer instead\n" "or provide #define (see manual for caveats)" -msgstr "'%s' menü kimliði çözülemedi. Yerine (sýfýrdan farklý) tamsayý kullanýn\n" +msgstr "" +"'%s' menü kimliði çözülemedi. Yerine (sýfýrdan farklý) tamsayý kullanýn\n" "veya #define saðlayýn (el kitabýna bakýnýz)" -#: ../src/common/prntbase.cpp:715 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "Döküman önizleme baþlatýlamadý." -#: ../src/generic/printps.cpp:197 -#: ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "Yazdýrma baþlatýlamadý." -#: ../src/common/wincmn.cpp:850 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "Bilgi pencereye yollanamadý" -#: ../src/msw/thread.cpp:187 -msgid "Couldn't acquire a mutex lock" -msgstr "Muteks kilidi alýnamýyor" - -#: ../src/msw/dragimag.cpp:148 -#: ../src/msw/dragimag.cpp:184 -#: ../src/msw/imaglist.cpp:152 -#: ../src/msw/imaglist.cpp:174 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 +#: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." msgstr "Ýmaj imaj listesine eklenemedi." -#: ../src/msw/timer.cpp:105 +#: ../src/msw/timer.cpp:103 msgid "Couldn't create a timer" msgstr "Zamanlayýcý yaratýlamadý" -#: ../src/mgl/cursor.cpp:121 -#: ../src/mgl/cursor.cpp:146 +#: ../src/mgl/cursor.cpp:135 ../src/mgl/cursor.cpp:166 msgid "Couldn't create cursor." msgstr "Ýmleç yaratýlamadý." -#: ../src/common/dynlib.cpp:337 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "'%s' sembolü devingen kitaplýkta bulunamadý" -#: ../src/mac/thread.cpp:469 -#: ../src/msw/thread.cpp:609 +#: ../src/mac/thread.cpp:502 ../src/msw/thread.cpp:711 msgid "Couldn't get the current thread pointer" msgstr "Geçerli iþparçacýðý imleci alýnamýyor" -#: ../src/common/imagpng.cpp:249 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "PNG imaji yüklenemedi -dosya bozuk veya bellek yetersiz." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "'%s' pano biçemi kaydedilemedi." -#: ../src/msw/thread.cpp:219 -msgid "Couldn't release a mutex" -msgstr "Muteks býrakýlamýyor" - -#: ../src/msw/listctrl.cpp:651 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "%d liste kontrolü elemaný hakkýnda bilgi alýnamadý." -#: ../src/mac/thread.cpp:706 -#: ../src/msw/thread.cpp:989 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 +#, fuzzy +msgid "Couldn't save PNG image." +msgstr "JPEG: imaj kaydedilemedi." + +#: ../src/mac/thread.cpp:749 ../src/msw/thread.cpp:1091 msgid "Couldn't terminate thread" msgstr "Ýþ parçacýðý sonlandýrýlamýyor" -#: ../src/generic/dirctrlg.cpp:1356 -#: ../src/generic/dirdlgg.cpp:565 +#: ../src/generic/dirdlgg.cpp:263 msgid "Create directory" msgstr "Dizin yarat" -#: ../src/generic/filedlgg.cpp:1008 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "Yeni dizin yarat" -#: ../src/generic/filedlgg.cpp:1015 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "Geçerli dizin:" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "Kril (ISO-8859-5)" @@ -1018,31 +1020,27 @@ msgstr "Kril (ISO-8859-5)" msgid "D sheet, 22 x 34 in" msgstr "D sayfa, 22 x 34 inç" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE itme isteði baþarýsýz" -#: ../src/common/imagbmp.cpp:809 -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "DIB baþlýðý: 4ikili kodlamaya henüz ulaþýlamýyor." - -#: ../src/common/imagbmp.cpp:1027 +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "DIB baþlýðý: Kodlama ikili derinliðiyle uyumlu deðil." -#: ../src/common/imagbmp.cpp:990 +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "DIB baþlýðý: Dosyanýn imaj yüksekliði > 32767 piksel." -#: ../src/common/imagbmp.cpp:984 +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "DIB baþlýðý: Dosyanýn imaj geniþliði > 32767 piksel." -#: ../src/common/imagbmp.cpp:1004 +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." msgstr "DIB baþlýðý: Dosyada bilinmeyen ikili derinliði." -#: ../src/common/imagbmp.cpp:1013 +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." msgstr "DIB baþlýðý: Dosyada bilinmeyen kodlama." @@ -1050,83 +1048,93 @@ msgstr "DIB ba msgid "DL Envelope, 110 x 220 mm" msgstr "DL Zarf, 110 x 220 mm" -#: ../src/generic/filedlgg.cpp:646 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "Tarih" -#: ../src/generic/fontdlgg.cpp:209 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "Süslü" -#: ../src/common/fontmap.cpp:366 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "Varsayýlan kodlama" -#: ../src/unix/snglinst.cpp:270 +#: ../src/unix/snglinst.cpp:269 #, c-format msgid "Deleted stale lock file '%s'." msgstr "Silininen eski kilit dosyasý '%s'." -#: ../src/msw/dialup.cpp:361 -msgid "Dial up functions are unavailable because the remote access service (RAS) is not installed on this machine. Please install it." -msgstr "Uzaktan eriþim servisi (RAS) kurulu olmadýðý için çevirme iþlevleri yok. Lütfen kurunuz." +#: ../src/msw/dialup.cpp:348 +msgid "" +"Dial up functions are unavailable because the remote access service (RAS) is " +"not installed on this machine. Please install it." +msgstr "" +"Uzaktan eriþim servisi (RAS) kurulu olmadýðý için çevirme iþlevleri yok. " +"Lütfen kurunuz." -#: ../src/msw/toplevel.cpp:221 -msgid "Did you forget to include wx/msw/wx.rc in your resources?" +#: ../src/os2/toplevel.cpp:367 +#, fuzzy +msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "Kaynaklarýnýza wx/msw/wx.rc'yi koymayý unuttunuz mu?" -#: ../src/generic/tipdlg.cpp:177 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "Biliyor muydunuz..." -#: ../src/common/filefn.cpp:1219 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "'%s' dizini yaratýlamadý" -#: ../src/generic/dirctrlg.cpp:1291 -#: ../src/generic/dirdlgg.cpp:532 +#: ../src/mgl/dirmgl.cpp:217 +#, fuzzy, c-format +msgid "Directory '%s' doesn't exist!" +msgstr "Dizin yok" + +#: ../src/generic/dirdlgg.cpp:188 msgid "Directory does not exist" msgstr "Dizin yok" -#: ../src/html/helpfrm.cpp:426 -msgid "Display all index items that contain given substring. Search is case insensitive." -msgstr "Verilen alt-dizgiyi içeren tüm indeks elemanlarýný göster. Arama küçük-büyük harf duyarlýdýr." +#: ../src/html/helpfrm.cpp:379 +msgid "" +"Display all index items that contain given substring. Search is case " +"insensitive." +msgstr "" +"Verilen alt-dizgiyi içeren tüm indeks elemanlarýný göster. Arama küçük-büyük " +"harf duyarlýdýr." -#: ../src/html/helpfrm.cpp:600 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "Seçenek penceresini göster" -#: ../src/msw/mimetype.cpp:677 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" ?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -"Dosyalarý %s için kullanýlan komutu deðiþtirmek istiyor musunuz (\"%s\" uzantýlý dosyalar) ?\n" +"Dosyalarý %s için kullanýlan komutu deðiþtirmek istiyor musunuz (\"%s\" " +"uzantýlý dosyalar) ?\n" "Geçerli deðer \n" "%s, \n" "Yeni deðer \n" "%s %1" -#: ../src/common/docview.cpp:439 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "%s dökümanýnda yapýlan deðiþiklikleri kaydetmek istiyor musunuz?" -#: ../src/common/strconv.cpp:618 -#, c-format -msgid "Don't know how to convert to/from charset '%s'." -msgstr "'%s' karakter kümesi(ne/nden) nasýl çevrileceði bilinmiyor." - -#: ../src/html/htmlwin.cpp:318 +#: ../src/html/htmlwin.cpp:314 msgid "Done" msgstr "Tamamlandý" -#: ../src/generic/progdlgg.cpp:354 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Tamamlandý." @@ -1138,71 +1146,54 @@ msgstr "A msgid "E sheet, 34 x 44 in" msgstr "E sayfa, 34 x 44 inç" -#: ../src/generic/progdlgg.cpp:178 +#: ../src/generic/progdlgg.cpp:183 msgid "Elapsed time : " msgstr "Geçen süre :" -#: ../src/generic/helphtml.cpp:320 +#: ../src/generic/helphtml.cpp:335 msgid "Entries found" msgstr "Öðe bulundu" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format -msgid "Environment variables expansion failed: missing '%c' at position %d in '%s'." +msgid "" +"Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "Çevre deðiþkenleri açma baþarýsýz: eksik '%c', yer %d, '%s' içinde." -#: ../src/generic/dirctrlg.cpp:648 -#: ../src/generic/dirctrlg.cpp:666 -#: ../src/generic/dirctrlg.cpp:677 -#: ../src/generic/dirctrlg.cpp:1391 -#: ../src/generic/dirdlgg.cpp:267 -#: ../src/generic/dirdlgg.cpp:285 -#: ../src/generic/dirdlgg.cpp:296 -#: ../src/generic/dirdlgg.cpp:598 -#: ../src/generic/filedlgg.cpp:742 -#: ../src/generic/filedlgg.cpp:837 -#: ../src/generic/filedlgg.cpp:851 -#: ../src/generic/filedlgg.cpp:864 -#: ../src/generic/filedlgg.cpp:1170 -#: ../src/generic/filedlgg.cpp:1219 -#: ../src/generic/helpxlp.cpp:243 -#: ../src/gtk/filedlg.cpp:80 -#: ../src/gtk/fontdlg.cpp:72 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 +#: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "Hata" -#: ../src/unix/utilsunx.cpp:1176 -#: ../src/unix/utilsunx.cpp:1184 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "Hata" -#: ../src/generic/dirctrlg.cpp:1304 -#: ../src/generic/dirdlgg.cpp:545 +#: ../src/generic/dirdlgg.cpp:203 msgid "Error creating directory" msgstr "Dizin yaratýlamadý" -#: ../src/common/imagbmp.cpp:1036 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "DIB imaji okuma hatasý" -#: ../src/common/log.cpp:369 +#: ../src/common/log.cpp:460 msgid "Error: " msgstr "Hata:" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" -#: ../src/generic/progdlgg.cpp:186 +#: ../src/generic/progdlgg.cpp:191 msgid "Estimated time : " msgstr "Tahmini süre :" -#: ../src/generic/dirctrlg.cpp:619 -#: ../src/generic/dirdlgg.cpp:216 -msgid "Etcetera" -msgstr "Ve benzeri" - -#: ../src/msw/utilsexc.cpp:588 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "'%s' komutunun iþlemesi baþarýsýz oldu" @@ -1211,45 +1202,42 @@ msgstr "'%s' komutunun i msgid "Executive, 7 1/4 x 10 1/2 in" msgstr "Executive, 7 1/4 x 10 1/2 inç" -#: ../src/common/resourc2.cpp:326 -#: ../src/common/resourc2.cpp:1391 -#: ../src/common/resource.cpp:1838 -#: ../src/common/resource.cpp:1968 -#: ../src/common/resource.cpp:3048 +#: ../src/common/resourc2.cpp:326 ../src/common/resourc2.cpp:1391 +#: ../src/common/resource.cpp:1845 ../src/common/resource.cpp:1975 +#: ../src/common/resource.cpp:3059 msgid "Expected '*' whilst parsing resource." msgstr "Kaynaðý ayrýþtýrýrken '*' bekleniyor." -#: ../src/common/resourc2.cpp:342 -#: ../src/common/resourc2.cpp:1407 -#: ../src/common/resource.cpp:1855 -#: ../src/common/resource.cpp:1984 -#: ../src/common/resource.cpp:3065 +#: ../src/common/resourc2.cpp:342 ../src/common/resourc2.cpp:1407 +#: ../src/common/resource.cpp:1862 ../src/common/resource.cpp:1991 +#: ../src/common/resource.cpp:3076 msgid "Expected '=' whilst parsing resource." msgstr "Kaynaðý ayrýþtýrýrken '=' bekleniyor." -#: ../src/common/resourc2.cpp:312 -#: ../src/common/resourc2.cpp:1377 -#: ../src/common/resource.cpp:1824 -#: ../src/common/resource.cpp:1954 -#: ../src/common/resource.cpp:3034 +#: ../src/common/resourc2.cpp:312 ../src/common/resourc2.cpp:1377 +#: ../src/common/resource.cpp:1831 ../src/common/resource.cpp:1961 +#: ../src/common/resource.cpp:3045 msgid "Expected 'char' whilst parsing resource." msgstr "Kaynaðý ayrýþtýrýrken 'char' bekleniyor." -#: ../src/msw/dialup.cpp:869 -#: ../src/msw/dialup.cpp:874 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "Çevirmeli baðlantý %s baþarýsýz: %s" -#: ../src/unix/snglinst.cpp:244 +#: ../src/unix/snglinst.cpp:243 msgid "Failed to access lock file." msgstr "Kilit dosyasýna eriþilemedi." -#: ../src/common/filename.cpp:158 +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" msgstr "Dosya tanýtýcý kapatýlamadý" -#: ../src/unix/snglinst.cpp:309 +#: ../src/unix/snglinst.cpp:308 #, c-format msgid "Failed to close lock file '%s'" msgstr "'%s' kilit dosyasy kapatýlamadý" @@ -1258,11 +1246,11 @@ msgstr "'%s' kilit dosyasy kapat msgid "Failed to close the clipboard." msgstr "Pano kapatýlamadý" -#: ../src/msw/dialup.cpp:808 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Baðlanýlamadý: eksik kullanýcý adý/þifre." -#: ../src/msw/dialup.cpp:754 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Baðlanýlamadý: çevrilecek ISP yok." @@ -1276,11 +1264,16 @@ msgstr "Kay msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "Kayýt anahtarý '%s''nin içeriði '%s''e kopyalanamadý" -#: ../src/msw/dde.cpp:924 +#: ../src/common/filefn.cpp:1117 +#, fuzzy, c-format +msgid "Failed to copy the file '%s' to '%s'" +msgstr "'%s' dosyasýna dokunulamadý" + +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "DDE dizgisi yaratýlamadý" -#: ../src/msw/mdi.cpp:407 +#: ../src/msw/mdi.cpp:425 msgid "Failed to create MDI parent frame." msgstr "MDI ana çerçeve yaratýlamadý." @@ -1288,20 +1281,44 @@ msgstr "MDI ana msgid "Failed to create a status bar." msgstr "Durum çubuðu yaratýlamadý." -#: ../src/common/filename.cpp:625 +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" msgstr "Geçici dosya adý yaratýlamadý" -#: ../src/msw/dde.cpp:401 +#: ../src/msw/utilsexc.cpp:197 +#, fuzzy +msgid "Failed to create an anonymous pipe" +msgstr "Durum çubuðu yaratýlamadý." + +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" -msgstr "'%s' merkezine '%s' konusunda baðlantý kurulamadý" +msgstr "'%s' sunucusuna '%s' konusunda baðlantý kurulamadý" -#: ../src/generic/dirctrlg.cpp:1302 -#: ../src/generic/dirdlgg.cpp:543 -msgid "Failed to create directory " +#: ../src/msw/toplevel.cpp:313 +#, fuzzy +msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "Dizin yaratýlamadý" +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "Dizin yaratýlamadý" + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "Dizin yaratýlamadý" + +#: ../src/generic/dirdlgg.cpp:201 +#, fuzzy, c-format +msgid "" +"Failed to create directory '%s'\n" +"(Do you have the required permissions?)" +msgstr "" +"\n" +"(Gerekli yetkiniz var mý?)" + #: ../src/msw/mimetype.cpp:168 #, c-format msgid "Failed to create registry entry for '%s' files." @@ -1312,108 +1329,128 @@ msgstr "'%s' dosyalar msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "Standart bul/deðiþtir penceresi yaratýlamadý (hata kodu %d)" -#: ../src/html/winpars.cpp:413 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "HTML dökümaný %s kodlamada gösterilemedi" -#: ../src/mac/clipbrd.cpp:162 -#: ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Pano temizlenemedi." -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" -msgstr "DDE merkeziyle danýþma döngüsü saðlanamadý" +msgstr "DDE sunucusuyla danýþma döngüsü saðlanamadý" -#: ../src/msw/dialup.cpp:646 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "Çevirmeli baðlantý gerçekleþtirilemedi: %s" -#: ../src/unix/utilsunx.cpp:563 -#: ../src/unix/utilsunx.cpp:591 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "'%s' çalýþtýrýlamadý\n" -#: ../src/common/resourc2.cpp:808 -#: ../src/common/resource.cpp:2458 +#: ../src/common/resourc2.cpp:808 ../src/common/resource.cpp:2465 #, c-format -msgid "Failed to find XBM resource %s.\n" +msgid "" +"Failed to find XBM resource %s.\n" "Forgot to use wxResourceLoadBitmapData?" -msgstr "%s XBM kaynaðý bulunamadý.\n" +msgstr "" +"%s XBM kaynaðý bulunamadý.\n" "wxResourceLoadBitmapData'yý kullanmayý unuttunuz mu?" -#: ../src/common/resourc2.cpp:959 -#: ../src/common/resource.cpp:2608 +#: ../src/common/resourc2.cpp:959 ../src/common/resource.cpp:2619 #, c-format -msgid "Failed to find XBM resource %s.\n" +msgid "" +"Failed to find XBM resource %s.\n" "Forgot to use wxResourceLoadIconData?" -msgstr "%s XBM kaynaðý bulunamadý.\n" +msgstr "" +"%s XBM kaynaðý bulunamadý.\n" "wxResourceLoadIconData'yý kullanmayý unuttunuz mu?" -#: ../src/common/resourc2.cpp:823 -#: ../src/common/resource.cpp:2473 +#: ../src/common/resourc2.cpp:823 ../src/common/resource.cpp:2480 #, c-format -msgid "Failed to find XPM resource %s.\n" +msgid "" +"Failed to find XPM resource %s.\n" "Forgot to use wxResourceLoadBitmapData?" -msgstr "%s XBM kaynaðý bulunamadý.\n" +msgstr "" +"%s XBM kaynaðý bulunamadý.\n" "wxResourceLoadBitmapData'yý kullanmayý unuttunuz mu?" -#: ../src/msw/dialup.cpp:706 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "ISP adlarý alýnamadý: %s" -#: ../src/mac/clipbrd.cpp:113 +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." msgstr "Pano verisi alýnamadý." -#: ../src/msw/clipbrd.cpp:628 +#: ../src/msw/clipbrd.cpp:712 msgid "Failed to get data from the clipboard" msgstr "Panodan veri alýnamadý" -#: ../src/common/timercmn.cpp:277 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "UTC sistem zamaný alýnamadý." -#: ../src/common/timercmn.cpp:228 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "Yerel sistem zamaný alýnamadý" -#: ../src/univ/theme.cpp:122 +#: ../src/common/filefn.cpp:1498 +#, fuzzy +msgid "Failed to get the working directory" +msgstr "Dizin yaratýlamadý" + +#: ../src/univ/theme.cpp:120 msgid "Failed to initialize GUI: no built-in themes found." msgstr "GUI baþlatma baþarýsýz: gömülü tema yok." -#: ../src/msw/helpchm.cpp:80 +#: ../src/msw/helpchm.cpp:69 msgid "Failed to initialize MS HTML Help." msgstr "MS HTML Yardým baþlatýlamadý." -#: ../src/msw/glcanvas.cpp:739 +#: ../src/msw/glcanvas.cpp:729 msgid "Failed to initialize OpenGL" msgstr "OpenGL baþlatýlamadý" -#: ../src/unix/threadpsx.cpp:776 -msgid "Failed to join a thread, potential memory leak detected - please restart the program" -msgstr "Ýþparçacýðýna baðlanýlamadý, olasý bellek sýzýntýsý bulundu - lütfen programý yeniden baþlatýnýz" +#: ../src/unix/threadpsx.cpp:887 +msgid "" +"Failed to join a thread, potential memory leak detected - please restart the " +"program" +msgstr "" +"Ýþparçacýðýna baðlanýlamadý, olasý bellek sýzýntýsý bulundu - lütfen " +"programý yeniden baþlatýnýz" -#: ../src/msw/utils.cpp:673 +#: ../src/msw/utils.cpp:721 #, c-format msgid "Failed to kill process %d" msgstr "%d iþi öldürülemedi" -#: ../src/common/dynlib.cpp:263 +#: ../src/common/iconbndl.cpp:66 +#, fuzzy, c-format +msgid "Failed to load image %d from file '%s'." +msgstr "'%s' kilit dosyasy kapatýlamadý" + +#: ../src/msw/volume.cpp:347 +#, fuzzy +msgid "Failed to load mpr.dll." +msgstr "Pano verisi alýnamadý." + +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "Paylaþýlýmlý kütük '%s' yüklenemedi" -#: ../src/common/dynlib.cpp:251 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "Paylaþýlýmlý kütük '%s' yüklenemedi, hata '%s'" -#: ../src/unix/snglinst.cpp:193 +#: ../src/unix/snglinst.cpp:192 #, c-format msgid "Failed to lock the lock file '%s'" msgstr "'%s' kilit dosyasý kilitlenemedi" @@ -1423,17 +1460,17 @@ msgstr "'%s' kilit dosyas msgid "Failed to match '%s' in regular expression: %s" msgstr "Düzenli ifadede '%s' bulunamadý: %s" -#: ../src/common/filename.cpp:1561 +#: ../src/common/filename.cpp:1667 #, c-format msgid "Failed to modify file times for '%s'" msgstr "Dosya zamanlarý '%s' için düzenlenemedi" -#: ../src/common/filename.cpp:147 -#, c-format -msgid "Failed to open '%s' for reading" +#: ../src/common/filename.cpp:164 +#, fuzzy, c-format +msgid "Failed to open '%s' for %s" msgstr "'%s' okuma için açýlamadý" -#: ../src/common/filename.cpp:614 +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." msgstr "Geçici dosya açýlamadý." @@ -1441,34 +1478,39 @@ msgstr "Ge msgid "Failed to open the clipboard." msgstr "Pano açýlamadý." -#: ../src/msw/clipbrd.cpp:544 +#: ../src/msw/clipbrd.cpp:616 msgid "Failed to put data on the clipboard" msgstr "Veri panoya konulamadý" -#: ../src/unix/snglinst.cpp:253 +#: ../src/unix/snglinst.cpp:252 msgid "Failed to read PID from lock file." msgstr "Kilit dosyasýndan PID okunamadý." -#: ../src/unix/utilsunx.cpp:662 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "Alt iþ girdi/çýktýsý yönlendirilemedi" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/utilsexc.cpp:605 +#, fuzzy +msgid "Failed to redirect the child process IO" +msgstr "Alt iþ girdi/çýktýsý yönlendirilemedi" + +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" -msgstr "'%s' DDE merkezine kaydolunamadý" +msgstr "'%s' DDE sunucusuna kaydolunamadý" -#: ../src/common/fontmap.cpp:654 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "Karakter kümesi '%s' için kodlama anýmsanamadý." -#: ../src/unix/snglinst.cpp:297 +#: ../src/unix/snglinst.cpp:296 #, c-format msgid "Failed to remove lock file '%s'" msgstr "'%s' kilit dosyasý kaldýrýlamadý" -#: ../src/unix/snglinst.cpp:263 +#: ../src/unix/snglinst.cpp:262 #, c-format msgid "Failed to remove stale lock file '%s'." msgstr "Eski kilit dosyasý '%s' kaldýrýlamadý." @@ -1483,24 +1525,24 @@ msgstr "'%s' kay msgid "Failed to rename the registry key '%s' to '%s'." msgstr "'%s' kayýt anahtarý '%s' olarak adlandýrýlamadý." -#: ../src/msw/clipbrd.cpp:433 +#: ../src/msw/clipbrd.cpp:505 msgid "Failed to retrieve data from the clipboard." msgstr "Panodan veri alýnamadý." -#: ../src/common/filename.cpp:1627 +#: ../src/common/filename.cpp:1757 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "'%s' için dosya zamanlarý alýnamadý" -#: ../src/msw/dialup.cpp:470 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "RAS hata mesajýnýn içeriði alýnamadý" -#: ../src/msw/clipbrd.cpp:658 +#: ../src/msw/clipbrd.cpp:742 msgid "Failed to retrieve the supported clipboard formats" msgstr "Desteklenen pano biçemleri alýnamadý" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "DDE danýþma uyarýsý gönderilemedi" @@ -1509,67 +1551,66 @@ msgstr "DDE dan msgid "Failed to set FTP transfer mode to %s." msgstr "FTP iletme durumu %s'ye ayarlanamadý." -#: ../src/msw/clipbrd.cpp:305 +#: ../src/msw/clipbrd.cpp:379 msgid "Failed to set clipboard data." msgstr "Pano verisi konulamadý." -#: ../src/common/file.cpp:516 +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" msgstr "Geçici dosya yetkileri uygulanamadý" -#: ../src/unix/threadpsx.cpp:1093 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "Ýþ parçacýðý önceliði %d ayarlanamadý." -#: ../src/common/fs_mem.cpp:168 +#: ../src/common/fs_mem.cpp:167 #, c-format msgid "Failed to store image '%s' to memory VFS!" msgstr "'%s' imajý bellek VFS'ye yerleþtirilemedi!" -#: ../src/unix/threadpsx.cpp:1279 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "Ýþ parçacýðý sonlandýrýlamadý." -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" -msgstr "DDE merkeziyle danýþma döngüsü sonlandýrýlamadý" +msgstr "DDE sunucusuyla danýþma döngüsü sonlandýrýlamadý" -#: ../src/msw/dialup.cpp:948 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "Çevirmeli baðlantý sonlandýrýlamadý: %s" -#: ../src/common/filename.cpp:1576 +#: ../src/common/filename.cpp:1682 #, c-format msgid "Failed to touch the file '%s'" msgstr "'%s' dosyasýna dokunulamadý" -#: ../src/unix/snglinst.cpp:303 +#: ../src/unix/snglinst.cpp:302 #, c-format msgid "Failed to unlock lock file '%s'" msgstr "'%s' kilit dosyasýnýn kilidi kaldýrýlamadý" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" -msgstr "'%s' DDE merkeziyle kayýt iptali yapýlamadý" +msgstr "'%s' DDE sunucusuyla kayýt iptali yapýlamadý" -#: ../src/unix/snglinst.cpp:174 +#: ../src/unix/snglinst.cpp:173 #, c-format msgid "Failed to write to lock file '%s'" msgstr "'%s' kilit dosyasýna yazýlamadý" -#: ../src/generic/logg.cpp:368 +#: ../src/generic/logg.cpp:379 msgid "Fatal error" msgstr "Kritik hata" -#: ../src/common/log.cpp:362 +#: ../src/common/log.cpp:453 msgid "Fatal error: " msgstr "Kritik hata:" -#: ../src/mac/app.cpp:907 -#: ../src/msw/app.cpp:1396 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "Kritik hata: çýkýlýyor" @@ -1578,38 +1619,41 @@ msgstr "Kritik hata: msgid "File %s does not exist." msgstr "'%s' dosyasý yok." -#: ../src/generic/filedlgg.cpp:1201 -#: ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "'%s' dosyasý zaten var, üstüne yazýlsýn mý?" +#: ../src/msw/filedlg.cpp:518 +#, fuzzy, c-format +msgid "" +"File '%s' already exists.\n" +"Do you want to replace it?" +msgstr "'%s' dosyasý zaten var, üstüne yazýlsýn mý?" + #: ../src/common/textcmn.cpp:158 msgid "File couldn't be loaded." msgstr "Dosya yüklenemedi." -#: ../src/common/docview.cpp:295 -#: ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1387 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Dosya hatasý" -#: ../src/generic/dirctrlg.cpp:666 -#: ../src/generic/dirdlgg.cpp:285 -#: ../src/generic/filedlgg.cpp:851 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "Dosya adý zaten var." -#: ../src/msw/filedlg.cpp:349 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Dosyalar (%s)|%s" -#: ../src/html/helpfrm.cpp:400 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "Bul" -#: ../src/html/helpfrm.cpp:1032 +#: ../src/html/helpfrm.cpp:950 msgid "Fixed font:" msgstr "Sabit yazý tipi:" @@ -1617,57 +1661,55 @@ msgstr "Sabit yaz msgid "Folio, 8 1/2 x 13 in" msgstr "Kitap yapraðý, 8 1/2 x 13 inç" -#: ../src/generic/fontdlgg.cpp:126 -msgid "Font" -msgstr "Yazý tipi" - -#: ../src/html/helpfrm.cpp:1042 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "Yazý boyutu" -#: ../src/unix/utilsunx.cpp:619 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Ayrýlma baþarýsýz" -#: ../src/common/dlgcmn.cpp:173 -#: ../src/generic/helpwxht.cpp:158 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Ýleri" -#: ../src/common/resourc2.cpp:295 -#: ../src/common/resourc2.cpp:1360 -#: ../src/common/resource.cpp:1807 -#: ../src/common/resource.cpp:1937 -#: ../src/common/resource.cpp:3017 +#: ../src/common/resourc2.cpp:295 ../src/common/resourc2.cpp:1360 +#: ../src/common/resource.cpp:1814 ../src/common/resource.cpp:1944 +#: ../src/common/resource.cpp:3028 msgid "Found " msgstr "Bulundu" -#: ../src/html/helpfrm.cpp:721 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "%i benzer bulundu" -#: ../src/generic/prntdlgg.cpp:185 +#: ../src/generic/prntdlgg.cpp:184 msgid "From:" msgstr "Kaynak:" -#: ../src/common/imaggif.cpp:74 +#: ../src/common/imaggif.cpp:100 +#, fuzzy +msgid "GIF: Invalid gif index." +msgstr "Geçersiz TIFF imaj indeksi." + +#: ../src/common/imaggif.cpp:75 msgid "GIF: data stream seems to be truncated." msgstr "GIF: veri kýrpýlmýþ görülüyor." -#: ../src/common/imaggif.cpp:58 +#: ../src/common/imaggif.cpp:59 msgid "GIF: error in GIF image format." msgstr "GIF: imaj biçemi hatasý." -#: ../src/common/imaggif.cpp:61 +#: ../src/common/imaggif.cpp:62 msgid "GIF: not enough memory." msgstr "GIF: yetersiz bellek." -#: ../src/common/imaggif.cpp:64 +#: ../src/common/imaggif.cpp:65 msgid "GIF: unknown error!!!" msgstr "GIF: bilinmeyen hata!!!" -#: ../src/univ/themes/gtk.cpp:578 +#: ../src/univ/themes/gtk.cpp:623 msgid "GTK+ theme" msgstr "GTK+ temasý" @@ -1679,117 +1721,128 @@ msgstr "Alman Yasal Fanfold, 8 1/2 x 13 in msgid "German Std Fanfold, 8 1/2 x 12 in" msgstr "Alman Standart Fanfold, 8 1/2 x 12 inç" -#: ../src/common/image.cpp:753 +#: ../src/common/image.cpp:762 msgid "GetUnusedColour:: No Unused Color in image " msgstr "GetUnusedColour:: Ýmajda kullanýlmayan renk yok" -#: ../src/html/helpfrm.cpp:566 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "Geri git" -#: ../src/html/helpfrm.cpp:569 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Ýleri git" -#: ../src/html/helpfrm.cpp:574 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "Döküman sýradüzeninde bir seviye yukarý git" -#: ../src/generic/filedlgg.cpp:1000 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "Ev dizinine git" -#: ../src/generic/filedlgg.cpp:994 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "Ana dizine git" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/prntbase.cpp:378 +msgid "Goto Page" +msgstr "" + +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Yunanca (ISO-8859-7)" -#: ../src/html/htmlwin.cpp:360 +#: ../src/html/htmlwin.cpp:354 #, c-format msgid "HTML anchor %s does not exist." msgstr "%s HTML çengeli yok." -#: ../src/html/helpfrm.cpp:1350 -msgid "HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" -msgstr "HTML dosyalarý (*.htm)|*.htm|HTML dosyalarý (*.html)|*.html|Yardým kitaplarý (*.htb)|*.htb|Yardým kitaplarý (*.zip)|*.zip|HTML Yardým Projesi (*.hhp)|*.hhp|Tüm dosyalar (*.*)|*" +#: ../src/html/helpfrm.cpp:1307 +msgid "" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" +msgstr "" +"HTML dosyalarý (*.htm)|*.htm|HTML dosyalarý (*.html)|*.html|Yardým kitaplarý " +"(*.htb)|*.htb|Yardým kitaplarý (*.zip)|*.zip|HTML Yardým Projesi (*.hhp)|*." +"hhp|Tüm dosyalar (*.*)|*" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Ýbranice (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:185 -#: ../src/generic/proplist.cpp:530 -#: ../src/html/helpfrm.cpp:262 -#: ../src/msw/mdi.cpp:1304 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "Yardým" -#: ../src/html/helpfrm.cpp:1015 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "Yardým Gezgini Seçenekleri" -#: ../src/generic/helphtml.cpp:319 -#: ../src/generic/helphtml.cpp:320 +#: ../src/generic/helphtml.cpp:334 ../src/generic/helphtml.cpp:335 msgid "Help Index" msgstr "Yardým Dizini" -#: ../src/html/helpfrm.cpp:1334 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "Yardým Yazdýrma" -#: ../src/generic/helpwxht.cpp:251 -#: ../src/html/helpctrl.cpp:44 +#: ../src/html/helpctrl.cpp:49 #, c-format msgid "Help: %s" msgstr "Yardým: %s" -#: ../src/common/imagbmp.cpp:103 -msgid "ICO: Error Image too tall for an icon." -msgstr "ICO: Hata: Ýmaj ikon için çok uzun." - -#: ../src/common/imagbmp.cpp:109 -msgid "ICO: Error Image too wide for an icon." -msgstr "ICO: Hata: Ýmaj ikon için çok geniþ." - -#: ../src/common/imagbmp.cpp:201 -msgid "ICO: Error calculating size of DIB ." -msgstr "ICO: Hata: DIB boyutu hesaplama." - -#: ../src/common/imagbmp.cpp:194 -msgid "ICO: Error calculating size of Mask DIB ." -msgstr "ICO: Hata: Maske DIB boyutu hesaplama." - -#: ../src/common/imagbmp.cpp:186 -msgid "ICO: Error calculating size of XOR DIB ." -msgstr "ICO: Hata: XOR DIB boyutu hesaplama." - -#: ../src/common/imagbmp.cpp:1049 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "ICO: Hata: Maske DIB okuma." -#: ../src/common/imagbmp.cpp:130 -msgid "ICO: Error writing ICONDIR header." -msgstr "ICO: Hata: ICONDIR baþlýðý yazma." +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 +#, fuzzy +msgid "ICO: Error writing the image file!" +msgstr "TIFF: Imaj yazma hatasý." -#: ../src/common/imagbmp.cpp:231 -msgid "ICO: Error writing ICONDIRENTRY header." -msgstr "ICO: Hata: ICONDIRENTRY baþlýðý yazma." +#: ../src/common/imagbmp.cpp:1009 +#, fuzzy +msgid "ICO: Image too tall for an icon." +msgstr "ICO: Hata: Ýmaj ikon için çok uzun." -#: ../src/common/imagbmp.cpp:248 -msgid "ICO: Error writing Mask DIB ." -msgstr "ICO: Hata: Maske DIB yazma." +#: ../src/common/imagbmp.cpp:1015 +#, fuzzy +msgid "ICO: Image too wide for an icon." +msgstr "ICO: Hata: Ýmaj ikon için çok geniþ." -#: ../src/common/imagbmp.cpp:240 -msgid "ICO: Error writing XOR DIB ." -msgstr "ICO: Hata: XOR DIB yazma." +#: ../src/common/imagbmp.cpp:1248 +#, fuzzy +msgid "ICO: Invalid icon index." +msgstr "Geçersiz TIFF imaj indeksi." -#: ../src/common/resourc2.cpp:989 -#: ../src/common/resourc2.cpp:1000 -#: ../src/common/resource.cpp:2638 -#: ../src/common/resource.cpp:2649 +#: ../src/common/imagiff.cpp:767 +#, fuzzy +msgid "IFF: data stream seems to be truncated." +msgstr "GIF: veri kýrpýlmýþ görülüyor." + +#: ../src/common/imagiff.cpp:751 +#, fuzzy +msgid "IFF: error in IFF image format." +msgstr "GIF: imaj biçemi hatasý." + +#: ../src/common/imagiff.cpp:754 +#, fuzzy +msgid "IFF: not enough memory." +msgstr "GIF: yetersiz bellek." + +#: ../src/common/imagiff.cpp:757 +#, fuzzy +msgid "IFF: unknown error!!!" +msgstr "GIF: bilinmeyen hata!!!" + +#: ../src/common/resourc2.cpp:989 ../src/common/resourc2.cpp:1000 +#: ../src/common/resource.cpp:2649 ../src/common/resource.cpp:2660 #, c-format msgid "Icon resource specification %s not found." msgstr "%s ikon kaynak tanýmý bulunamadý." @@ -1798,70 +1851,78 @@ msgstr "%s ikon kaynak tan msgid "Ill-formed resource file syntax." msgstr "Hatalý kaynak dosyasý sözdizimi." -#: ../src/generic/dirctrlg.cpp:648 -#: ../src/generic/dirdlgg.cpp:267 -#: ../src/generic/filedlgg.cpp:837 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "Geçersiz dizin adý." -#: ../src/generic/filedlgg.cpp:1170 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "Geçersiz dosya tanýmý." -#: ../src/common/image.cpp:776 +#: ../src/common/image.cpp:785 msgid "Image and Mask have different sizes" msgstr "Ýmaj ve Maske farklý boyutlarda" -#: ../src/msw/textctrl.cpp:269 -msgid "Impossible to create a rich edit control, using simple text control instead. Please reinstall riched32.dll" -msgstr "Zengin metin kontrolü yaratýlamýyor, yerine basit yazý kontrolü kullanýlýyor. Lütfen riched32.dll'yi yeniden kurunuz." +#: ../src/common/image.cpp:1067 +#, c-format +msgid "Image file is not of type %d." +msgstr "" -#: ../src/unix/utilsunx.cpp:367 +#: ../src/msw/textctrl.cpp:270 +msgid "" +"Impossible to create a rich edit control, using simple text control instead. " +"Please reinstall riched32.dll" +msgstr "" +"Zengin metin kontrolü yaratýlamýyor, yerine basit yazý kontrolü " +"kullanýlýyor. Lütfen riched32.dll'yi yeniden kurunuz." + +#: ../src/unix/utilsunx.cpp:390 msgid "Impossible to get child process input" msgstr "Alt iþ girdisi alýnamýyor" -#: ../src/common/filefn.cpp:1088 +#: ../src/common/filefn.cpp:1133 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "'%s' dosyasý için izinler alýnamýyor" -#: ../src/common/filefn.cpp:1102 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "'%s' dosyasýnýn üstüne yazýlamýyor" -#: ../src/common/filefn.cpp:1152 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "'%s' dosyasý için izinler konulamýyor" -#: ../src/html/helpdata.cpp:319 -msgid "Incorrect version of HTML help book" -msgstr "Hatalý HTML yardým kitabý sürümü" - -#: ../src/html/helpfrm.cpp:432 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Dizin" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "Hintçe (ISO-8859-12)" -#: ../src/common/imagtiff.cpp:175 +#: ../src/common/imagtiff.cpp:183 msgid "Invalid TIFF image index." msgstr "Geçersiz TIFF imaj indeksi." -#: ../contrib/src/xrc/xmlres.cpp:313 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "Geçersiz '%s' XRC kaynaðý: 'resource' kök düðümü yok." -#: ../src/common/appcmn.cpp:282 +#: ../src/common/appcmn.cpp:399 #, c-format msgid "Invalid display mode specification '%s'." msgstr "Geçersiz '%s' görüntü durum tanýmý." -#: ../src/unix/snglinst.cpp:281 +#: ../src/x11/app.cpp:218 +#, fuzzy, c-format +msgid "Invalid geometry specification '%s'" +msgstr "Geçersiz '%s' görüntü durum tanýmý." + +#: ../src/unix/snglinst.cpp:280 #, c-format msgid "Invalid lock file '%s'." msgstr "Geçersiz kilit dosyasý '%s'." @@ -1871,7 +1932,7 @@ msgstr "Ge msgid "Invalid regular expression '%s': %s" msgstr "Geçersiz düzenli ifade '%s': %s" -#: ../src/generic/fontdlgg.cpp:215 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "Eðik" @@ -1879,21 +1940,19 @@ msgstr "E msgid "Italy Envelope, 110 x 230 mm" msgstr "Ýtalyan Zarf, 110 x 230 mm" -#: ../src/common/imagjpeg.cpp:206 +#: ../src/common/imagjpeg.cpp:222 msgid "JPEG: Couldn't load - file is probably corrupted." msgstr "JPEG: Yüklenemedi - dosya muhtemelen kýrpýlmýþ." -#: ../src/common/imagjpeg.cpp:320 +#: ../src/common/imagjpeg.cpp:336 msgid "JPEG: Couldn't save image." msgstr "JPEG: imaj kaydedilemedi." -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" -#: ../src/generic/dcpsg.cpp:2260 -#: ../src/generic/prntdlgg.cpp:439 -#: ../src/generic/prntdlgg.cpp:635 +#: ../src/generic/prntdlgg.cpp:426 ../src/generic/prntdlgg.cpp:620 msgid "Landscape" msgstr "Yatay" @@ -1901,7 +1960,7 @@ msgstr "Yatay" msgid "Ledger, 17 x 11 in" msgstr "Ledger, 17 x 11 inç" -#: ../src/generic/prntdlgg.cpp:647 +#: ../src/generic/prntdlgg.cpp:632 msgid "Left margin (mm):" msgstr "Sol boþluk (mm):" @@ -1917,27 +1976,25 @@ msgstr "Letter K msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 inç" -#: ../src/generic/fontdlgg.cpp:218 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Açýk" -#: ../src/generic/filedlgg.cpp:1406 -#: ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 -#: ../src/msw/filedlg.cpp:514 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "%s dosyasýný yükle" -#: ../src/html/htmlwin.cpp:285 +#: ../src/generic/filedlgg.cpp:1625 +#, fuzzy +msgid "Load file" +msgstr "%s dosyasýný yükle" + +#: ../src/html/htmlwin.cpp:282 msgid "Loading : " msgstr "Yükleniyor :" -#: ../src/common/imagbmp.cpp:660 -#: ../src/common/imagbmp.cpp:674 -msgid "Loading DIB : Couldn't allocate memory." -msgstr "DIB yükleme: Bellek alýnamadý." - #: ../src/common/imagpnm.cpp:72 msgid "Loading Grey Ascii PNM image is not yet implemented." msgstr "Gri Ascii PNM imaj yükleme henüz uygulanmadý." @@ -1946,20 +2003,28 @@ msgstr "Gri Ascii PNM imaj y msgid "Loading Grey Raw PNM image is not yet implemented." msgstr "Gri Ham PNM imaj yükleme henüz uygulanmadý." -#: ../src/generic/logg.cpp:538 +#: ../src/generic/logg.cpp:554 #, c-format msgid "Log saved to the file '%s'." msgstr "Günlük '%s' dosyasýna kaydedildi." -#: ../src/gtk/mdi.cpp:435 +#: ../src/gtk/mdi.cpp:433 msgid "MDI child" msgstr "MDI " -#: ../src/msw/helpchm.cpp:70 -msgid "MS HTML Help functions are unavailable because the MS HTML Help library is not installed on this machine. Please install it." -msgstr "MS HTML Yardým kütüphanesi kurulu olmadýðý için yardým iþlevleri kullanýlamýyor. Lütfen kurunuz." +#: ../src/msw/helpchm.cpp:60 +msgid "" +"MS HTML Help functions are unavailable because the MS HTML Help library is " +"not installed on this machine. Please install it." +msgstr "" +"MS HTML Yardým kütüphanesi kurulu olmadýðý için yardým iþlevleri " +"kullanýlamýyor. Lütfen kurunuz." -#: ../src/unix/mimetype.cpp:2412 +#: ../src/univ/themes/win32.cpp:4545 +msgid "Ma&ximize" +msgstr "" + +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "%s Mailcap dosyasý, satýr %d: eksik girdi gözardý edildi." @@ -1968,22 +2033,30 @@ msgstr "%s Mailcap dosyas msgid "Match case" msgstr "Küçük büyük harf eþle" -#: ../src/common/fs_mem.cpp:145 +#: ../src/common/fs_mem.cpp:144 #, c-format msgid "Memory VFS already contains file '%s'!" msgstr "Bellek VFS zaten '%s' dosyasýný içeriyor!" -#: ../src/unix/mimetype.cpp:2077 +#: ../src/univ/themes/metal.cpp:174 +msgid "Metal theme" +msgstr "" + +#: ../src/univ/themes/win32.cpp:4543 +msgid "Mi&nimize" +msgstr "" + +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "%s Mime tip dosyasý, satýr %d: sonlandýrýlmamýþ týrnaklý dizgi." -#: ../src/mgl/app.cpp:169 +#: ../src/mgl/app.cpp:173 #, c-format msgid "Mode %ix%i-%i not available." msgstr "%ix%i-%i durumu yok." -#: ../src/generic/fontdlgg.cpp:210 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "Modern" @@ -1991,80 +2064,59 @@ msgstr "Modern" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarþi Zarf, 3 7/8 x 7 1/2 inç" -#: ../src/common/dlgcmn.cpp:182 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "Daha..." -#: ../src/generic/dirctrlg.cpp:615 -#: ../src/generic/dirdlgg.cpp:212 -msgid "Mounted Devices" -msgstr "Baðlý Araçlar" - -#: ../src/generic/dirdlgg.cpp:207 -msgid "My Harddisk" -msgstr "Sabit diskim" - -#: ../src/generic/dirctrlg.cpp:614 -#: ../src/generic/dirdlgg.cpp:211 -msgid "My Home" -msgstr "Evim" - -#: ../src/generic/filedlgg.cpp:644 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Ýsim" -#: ../src/generic/dirctrlg.cpp:1255 -#: ../src/generic/dirdlgg.cpp:420 -msgid "New..." -msgstr "Yeni..." - -#: ../src/generic/filedlgg.cpp:727 +#: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "Yeni isim" -#: ../src/html/helpfrm.cpp:580 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "Sonraki sayfa" -#: ../src/common/dlgcmn.cpp:152 -#: ../src/common/dlgcmn.cpp:162 -#: ../src/mac/msgdlg.cpp:84 -#: ../src/motif/msgdlg.cpp:180 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 +#: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "Hayýr" -#: ../src/common/image.cpp:784 +#: ../src/common/image.cpp:793 msgid "No Unused Color in image being masked" msgstr "Maskelenen imajda kullanýlmamýþ renk yok" -#: ../src/common/resourc2.cpp:814 -#: ../src/common/resourc2.cpp:965 -#: ../src/common/resource.cpp:2464 -#: ../src/common/resource.cpp:2614 +#: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:965 +#: ../src/common/resource.cpp:2471 ../src/common/resource.cpp:2625 msgid "No XBM facility available!" msgstr "XBM olanaðý yok!" -#: ../src/common/resourc2.cpp:983 -#: ../src/common/resource.cpp:2632 +#: ../src/common/resourc2.cpp:983 ../src/common/resource.cpp:2643 msgid "No XPM icon facility available!" msgstr "XPM ikon olanaðý yok!" -#: ../src/generic/helphtml.cpp:314 +#: ../src/generic/helphtml.cpp:329 msgid "No entries found." msgstr "Girdi bulunamadý." -#: ../src/common/fontmap.cpp:845 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" "but an alternative encoding '%s' is available.\n" -"Do you want to use this encoding (otherwise you will have to choose another one)?" +"Do you want to use this encoding (otherwise you will have to choose another " +"one)?" msgstr "" "'%s' kodlamada gösterim için yazýtipi yok,\n" "ama alternatif '%s' kodlama var.\n" -"Bu kodlamayý kullanmak istiyor musunuz (aksi halde baþka bir tane seçmelisiniz) ?" +"Bu kodlamayý kullanmak istiyor musunuz (aksi halde baþka bir tane " +"seçmelisiniz) ?" -#: ../src/common/fontmap.cpp:850 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2075,41 +2127,39 @@ msgstr "" "Bu kodlamayý kullanmak için bir yazýtipi seçmek istiyor musunuz\n" "(aksi halde bu kodlamadaki yazý doðru olarak gösterilmeyecektir) ?" -#: ../contrib/src/xrc/xmlres.cpp:396 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "'%s' XML düðümü için iþleyici bulunamadý, sýnýf '%s'!" -#: ../src/common/image.cpp:1009 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "Ýmaj tipi için iþleyici bulunamadý." -#: ../src/common/image.cpp:1017 -#: ../src/common/image.cpp:1051 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "%d tipi için imaj iþleyici tanýmlanmamýþ." -#: ../src/common/image.cpp:1035 -#: ../src/common/image.cpp:1067 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "%s tipi için imaj iþleyici tanýmlanmamýþ." -#: ../src/html/helpfrm.cpp:710 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "Henüz çakýþan bir sayfa bulunamadý" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Norveçce (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:214 -#: ../src/generic/fontdlgg.cpp:217 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Normal" -#: ../src/html/helpfrm.cpp:1024 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normal yazý tipi:" @@ -2117,82 +2167,68 @@ msgstr "Normal yaz msgid "Note, 8 1/2 x 11 in" msgstr "Not, 8 1/2 x 11 inç" -#: ../src/common/dlgcmn.cpp:168 -#: ../src/generic/dcpsg.cpp:2268 -#: ../src/generic/dirctrlg.cpp:1247 -#: ../src/generic/dirdlgg.cpp:416 -#: ../src/generic/filedlgg.cpp:1032 -#: ../src/generic/fontdlgg.cpp:258 -#: ../src/generic/logg.cpp:723 -#: ../src/generic/prntdlgg.cpp:465 -#: ../src/generic/proplist.cpp:513 -#: ../src/gtk/filedlg.cpp:167 -#: ../src/gtk/fontdlg.cpp:172 -#: ../src/html/helpfrm.cpp:1052 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 +#: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 +#: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "Tamam" -#: ../src/html/helpfrm.cpp:588 -#: ../src/html/helpfrm.cpp:1345 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "HTML dökümaný aç" -#: ../src/generic/dirctrlg.cpp:677 -#: ../src/generic/dirctrlg.cpp:1391 -#: ../src/generic/dirdlgg.cpp:296 -#: ../src/generic/dirdlgg.cpp:598 -#: ../src/generic/filedlgg.cpp:742 -#: ../src/generic/filedlgg.cpp:864 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "Ýþleme izin verilmiyor." -#: ../src/common/cmdline.cpp:627 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Seçenek '%s' bir deðer gerektirir, '=' bekleniyor." -#: ../src/common/cmdline.cpp:647 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Seçenek '%s' bir deðer gerektirir." -#: ../src/common/cmdline.cpp:708 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Seçenek '%s': '%s' tarihe çevrilemiyor." -#: ../src/generic/prntdlgg.cpp:445 +#: ../src/generic/prntdlgg.cpp:432 msgid "Options" msgstr "Seçenekler" -#: ../src/generic/prntdlgg.cpp:441 -#: ../src/generic/prntdlgg.cpp:636 +#: ../src/generic/prntdlgg.cpp:428 ../src/generic/prntdlgg.cpp:621 msgid "Orientation" msgstr "Yönlendirme" -#: ../src/common/imagpcx.cpp:461 -#: ../src/common/imagpcx.cpp:484 +#: ../src/common/imagpcx.cpp:455 ../src/common/imagpcx.cpp:478 msgid "PCX: couldn't allocate memory" msgstr "PCX: bellek yaratýlamadý." -#: ../src/common/imagpcx.cpp:460 +#: ../src/common/imagpcx.cpp:454 msgid "PCX: image format unsupported" msgstr "PCX: imaj biçemi desteklenmiyor" -#: ../src/common/imagpcx.cpp:483 +#: ../src/common/imagpcx.cpp:477 msgid "PCX: invalid image" msgstr "PCX: geçersiz imaj" -#: ../src/common/imagpcx.cpp:447 +#: ../src/common/imagpcx.cpp:441 msgid "PCX: this is not a PCX file." msgstr "PCX: bu bir PCX dosyasý deðil." -#: ../src/common/imagpcx.cpp:463 -#: ../src/common/imagpcx.cpp:485 +#: ../src/common/imagpcx.cpp:457 ../src/common/imagpcx.cpp:479 msgid "PCX: unknown error !!!" msgstr "PCX: bilinmeyen hata !!!" -#: ../src/common/imagpcx.cpp:462 +#: ../src/common/imagpcx.cpp:456 msgid "PCX: version number too low" msgstr "PCX: sürüm numarasý çok düþük" @@ -2208,59 +2244,55 @@ msgstr "PNM: Dosya bi msgid "PNM: File seems truncated." msgstr "PNM: Dosya kýrpýlmýþ görünüyor." -#: ../src/common/prntbase.cpp:736 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Sayfa %d" -#: ../src/common/prntbase.cpp:734 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Sayfa %d / %d" -#: ../src/generic/prntdlgg.cpp:602 +#: ../src/generic/prntdlgg.cpp:587 msgid "Page Setup" msgstr "Sayfa düzeni" -#: ../src/generic/prntdlgg.cpp:162 +#: ../src/generic/prntdlgg.cpp:161 msgid "Pages" msgstr "Sayfalar" -#: ../src/generic/prntdlgg.cpp:553 -#: ../src/generic/prntdlgg.cpp:624 -#: ../src/generic/prntdlgg.cpp:806 +#: ../src/generic/prntdlgg.cpp:538 ../src/generic/prntdlgg.cpp:609 +#: ../src/generic/prntdlgg.cpp:794 msgid "Paper Size" msgstr "Kaðýt boyutu" -#: ../src/generic/prntdlgg.cpp:431 -#: ../src/generic/prntdlgg.cpp:613 -#: ../src/generic/prntdlgg.cpp:802 +#: ../src/generic/prntdlgg.cpp:418 ../src/generic/prntdlgg.cpp:598 +#: ../src/generic/prntdlgg.cpp:790 msgid "Paper size" msgstr "Kaðýt boyutu" -#: ../src/generic/filedlgg.cpp:648 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "Yetkiler" -#: ../src/unix/utilsunx.cpp:562 -#: ../src/unix/utilsunx.cpp:590 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "Boru yaratýlamadý" -#: ../src/gtk/fontdlg.cpp:72 +#: ../src/gtk/fontdlg.cpp:71 msgid "Please choose a valid font." msgstr "Lütfen geçerli bir yazý tipi seçiniz." -#: ../src/generic/filedlgg.cpp:1219 -#: ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "Lütfen varolan bir dosya seçiniz." -#: ../src/msw/dialup.cpp:775 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "Lütfen baðlanmak istediðiniz ISP'yi seçiniz" -#: ../src/msw/listctrl.cpp:491 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2271,131 +2303,101 @@ msgstr "" "(en azýndan sürüm 4.70 gerekmekte ama %d.%02d var)\n" "aksi halde bu program düzgün olarak çalýþamaz." -#: ../src/common/prntbase.cpp:107 -msgid "Please wait..." -msgstr "Lütfen bekleyiniz..." +#: ../src/common/prntbase.cpp:111 +msgid "Please wait while printing\n" +msgstr "" -#: ../src/generic/dcpsg.cpp:2259 -#: ../src/generic/prntdlgg.cpp:438 -#: ../src/generic/prntdlgg.cpp:634 +#: ../src/generic/prntdlgg.cpp:425 ../src/generic/prntdlgg.cpp:619 msgid "Portrait" msgstr "Dikey" -#: ../src/generic/dcpsg.cpp:389 -msgid "PostScript" -msgstr "PostScript" - -#: ../src/generic/prntdlgg.cpp:270 +#: ../src/generic/prntdlgg.cpp:268 msgid "PostScript file" msgstr "PostScript dosyasý" -#: ../src/generic/dcpsg.cpp:2301 -msgid "PostScript:" -msgstr "PostScript:" - -#: ../src/generic/dcpsg.cpp:2264 -msgid "Preview Only" -msgstr "Sadece önizleme" - -#: ../src/html/helpfrm.cpp:1046 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Önizleme:" -#: ../src/html/helpfrm.cpp:577 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "Önceki sayfa" -#: ../src/generic/prntdlgg.cpp:111 -#: ../src/generic/prntdlgg.cpp:125 +#: ../src/generic/prntdlgg.cpp:110 ../src/generic/prntdlgg.cpp:124 msgid "Print" msgstr "Yazdýr" -#: ../src/common/docview.cpp:896 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "Baský Önizleme" -#: ../src/common/prntbase.cpp:691 -#: ../src/common/prntbase.cpp:715 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "Baský Önizleme Hatasý" -#: ../src/generic/prntdlgg.cpp:170 +#: ../src/generic/prntdlgg.cpp:169 msgid "Print Range" msgstr "Aralýk yazdýr" #: ../src/generic/prntdlgg.cpp:406 -#: ../src/generic/prntdlgg.cpp:413 msgid "Print Setup" msgstr "Yazdýrma ayarlarý" -#: ../src/generic/prntdlgg.cpp:453 +#: ../src/generic/prntdlgg.cpp:440 msgid "Print in colour" msgstr "Renkli yazdýr" -#: ../src/generic/prntdlgg.cpp:455 +#: ../src/generic/prntdlgg.cpp:442 msgid "Print spooling" msgstr "Yazdýrma kuyruðu" -#: ../src/html/helpfrm.cpp:594 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "Sayfayý yazdýr" -#: ../src/generic/dcpsg.cpp:2263 -#: ../src/generic/prntdlgg.cpp:148 +#: ../src/generic/prntdlgg.cpp:147 msgid "Print to File" msgstr "Dosyaya yazdýr" -#: ../src/common/prntbase.cpp:366 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "Yazdýr..." -#: ../src/generic/dcpsg.cpp:2274 -msgid "Printer Command: " -msgstr "Yazdýrma komutu:" - -#: ../src/generic/dcpsg.cpp:2279 -msgid "Printer Options: " -msgstr "Yazýcý Seçenekleri:" - -#: ../src/generic/dcpsg.cpp:358 -msgid "Printer Settings" -msgstr "Yazýcý Ayarlarý:" - -#: ../src/generic/prntdlgg.cpp:457 +#: ../src/generic/prntdlgg.cpp:444 msgid "Printer command:" msgstr "Yazdýrma komutu:" -#: ../src/generic/prntdlgg.cpp:147 +#: ../src/generic/prntdlgg.cpp:146 msgid "Printer options" msgstr "Yazýcý seçenekleri" -#: ../src/generic/prntdlgg.cpp:461 +#: ../src/generic/prntdlgg.cpp:448 msgid "Printer options:" msgstr "Yazýcý seçenekleri:" -#: ../src/generic/prntdlgg.cpp:680 +#: ../src/generic/prntdlgg.cpp:665 msgid "Printer..." msgstr "Yazýcý..." -#: ../src/common/prntbase.cpp:106 -#: ../src/common/prntbase.cpp:148 -msgid "Printing" +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 +#, fuzzy +msgid "Printing " msgstr "Yazdýrýlýyor" -#: ../src/common/prntbase.cpp:120 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "Yazdýrma hatasý" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "Yazdýrýlan sayfa %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "Yazdýrýlýyor..." -#: ../src/common/log.cpp:363 +#: ../src/common/log.cpp:454 msgid "Program aborted." msgstr "Program durduruldu." @@ -2403,16 +2405,20 @@ msgstr "Program durduruldu." msgid "Quarto, 215 x 275 mm" msgstr "Quarto, 215 x 275 mm" -#: ../src/generic/logg.cpp:1022 +#: ../src/generic/logg.cpp:1111 msgid "Question" msgstr "Soru" -#: ../src/common/ffile.cpp:125 -#: ../src/common/ffile.cpp:146 +#: ../src/common/ffile.cpp:125 ../src/common/ffile.cpp:146 #, c-format msgid "Read error on file '%s'" msgstr "'%s' dosyasýnda okuma hatasý" +#: ../contrib/src/xrc/xmlres.cpp:532 +#, c-format +msgid "Referenced object node with ref=\"%s\" not found!" +msgstr "" + #: ../src/msw/registry.cpp:535 #, c-format msgid "Registry key '%s' already exists." @@ -2439,11 +2445,11 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "'%s' kayýt deðeri zaten var." -#: ../src/generic/helphtml.cpp:319 +#: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Ýlgili girdiler:" -#: ../src/generic/progdlgg.cpp:194 +#: ../src/generic/progdlgg.cpp:199 msgid "Remaining time : " msgstr "Kalan süre :" @@ -2459,22 +2465,20 @@ msgstr "T msgid "Replace with:" msgstr "Yeni deðer:" -#: ../contrib/src/xrc/xmlres.cpp:330 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "Kaynak dosyalarý ayný sürüme sahip olmalýdýr!" -#: ../src/generic/prntdlgg.cpp:659 +#: ../src/generic/prntdlgg.cpp:644 msgid "Right margin (mm):" msgstr "Sað boþluk (mm):" -#: ../src/generic/fontdlgg.cpp:208 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "Roman" -#: ../src/generic/filedlgg.cpp:1422 -#: ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 -#: ../src/msw/filedlg.cpp:516 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "%s dosyasýný kaydet" @@ -2483,23 +2487,30 @@ msgstr "%s dosyas msgid "Save as" msgstr "Farklý kaydet" -#: ../src/generic/logg.cpp:471 +#: ../src/generic/filedlgg.cpp:1640 +#, fuzzy +msgid "Save file" +msgstr "%s dosyasýný kaydet" + +#: ../src/generic/logg.cpp:487 msgid "Save log contents to file" msgstr "Günlük içeriðini dosyaya kaydet" -#: ../src/generic/fontdlgg.cpp:211 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Betik" -#: ../src/generic/helpwxht.cpp:161 -#: ../src/html/helpfrm.cpp:475 -#: ../src/html/helpfrm.cpp:495 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "Ara" -#: ../src/html/helpfrm.cpp:477 -msgid "Search contents of help book(s) for all occurences of the text you typed above" -msgstr "Yukarda yazdýðýnýz yazýnýn tüm tekrarlarý için yardým kitaplarý içeriðini araþtýr" +#: ../src/html/helpfrm.cpp:415 +msgid "" +"Search contents of help book(s) for all occurences of the text you typed " +"above" +msgstr "" +"Yukarda yazdýðýnýz yazýnýn tüm tekrarlarý için yardým kitaplarý içeriðini " +"araþtýr" #: ../src/generic/fdrepdlg.cpp:158 msgid "Search direction" @@ -2509,16 +2520,15 @@ msgstr "Arama y msgid "Search for:" msgstr "Aranan:" -#: ../src/html/helpfrm.cpp:871 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "Tüm kitaplarda ara" -#: ../src/html/helpfrm.cpp:710 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "Aranýyor..." -#: ../src/generic/dirctrlg.cpp:488 -#: ../src/generic/dirdlgg.cpp:190 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "Bölümler" @@ -2527,65 +2537,66 @@ msgstr "B msgid "Seek error on file '%s'" msgstr "'%s' dosyasýnda arama hatasý" -#: ../src/common/docview.cpp:1490 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Bir dosya seçiniz" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Bir döküman þablonu seçiniz" -#: ../src/common/docview.cpp:1556 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Bir döküman görünümü seçiniz" -#: ../src/common/docview.cpp:1370 -#: ../src/common/docview.cpp:1421 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Bir dosya seçiniz" -#: ../src/generic/dcpsg.cpp:2262 -msgid "Send to Printer" -msgstr "Yazýcýya gönder" - -#: ../src/common/cmdline.cpp:664 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "'%s' seçeneðinden sonra ayraç bekleniyor." -#: ../src/msw/glcanvas.cpp:441 -msgid "SetPixelFormat failed." -msgstr "SetPixelFormat baþarýsýz oldu." - -#: ../src/common/dlgcmn.cpp:179 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "Kur" -#: ../src/generic/prntdlgg.cpp:153 +#: ../src/generic/prntdlgg.cpp:152 msgid "Setup..." msgstr "Kur..." -#: ../src/msw/dialup.cpp:546 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "Birçok aktif çevirmeli baðlantý bulundu, biri rasgele seçiliyor." -#: ../src/html/helpfrm.cpp:391 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "Tümünü göster" -#: ../src/html/helpfrm.cpp:425 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "Dizindeki tüm öðeleri göster" -#: ../src/generic/filedlgg.cpp:1038 +#: ../src/generic/dirdlgg.cpp:135 +#, fuzzy +msgid "Show hidden directories" +msgstr "Gizli dosyalarý göster" + +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "Gizli dosyalarý göster" -#: ../src/html/helpfrm.cpp:561 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "Dolaþma panosunu göster/gizle" -#: ../src/generic/filedlgg.cpp:645 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "Boyut" -#: ../src/generic/fontdlgg.cpp:216 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Eðik" @@ -2593,9 +2604,8 @@ msgstr "E msgid "Sorry, could not open this file for saving." msgstr "Üzgünüm, bu dosya saklanmak için açýlamýyor." -#: ../src/common/docview.cpp:341 -#: ../src/common/docview.cpp:353 -#: ../src/common/docview.cpp:1389 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "Üzgünüm, bu dosya açýlamýyor." @@ -2603,7 +2613,7 @@ msgstr " msgid "Sorry, could not save this file." msgstr "Üzgünüm, bu dosya kaydedilemiyor." -#: ../src/common/prntbase.cpp:691 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "Üzgünüm, önizleme için bellek yetersiz." @@ -2611,33 +2621,37 @@ msgstr " msgid "Statement, 5 1/2 x 8 1/2 in" msgstr "Statement, 5 1/2 x 8 1/2 inç" -#: ../src/generic/logg.cpp:588 +#: ../src/generic/logg.cpp:604 msgid "Status: " msgstr "Durum:" -#: ../src/generic/fontdlgg.cpp:212 +#: ../contrib/src/xrc/xmlres.cpp:632 +#, c-format +msgid "Subclass '%s' not found for resource '%s', not subclassing!" +msgstr "" + +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "Ýsveç" -#: ../src/common/imagtiff.cpp:196 -#: ../src/common/imagtiff.cpp:207 -#: ../src/common/imagtiff.cpp:318 +#: ../src/common/imagtiff.cpp:204 ../src/common/imagtiff.cpp:215 +#: ../src/common/imagtiff.cpp:326 msgid "TIFF: Couldn't allocate memory." msgstr "TIFF: Bellek yetersiz." -#: ../src/common/imagtiff.cpp:167 +#: ../src/common/imagtiff.cpp:175 msgid "TIFF: Error loading image." msgstr "TIFF: Imaj yükleme hatasý." -#: ../src/common/imagtiff.cpp:218 +#: ../src/common/imagtiff.cpp:226 msgid "TIFF: Error reading image." msgstr "TIFF: Imaj okuma hatasý." -#: ../src/common/imagtiff.cpp:295 +#: ../src/common/imagtiff.cpp:303 msgid "TIFF: Error saving image." msgstr "TIFF: Imaj saklama hatasý." -#: ../src/common/imagtiff.cpp:342 +#: ../src/common/imagtiff.cpp:350 msgid "TIFF: Error writing image." msgstr "TIFF: Imaj yazma hatasý." @@ -2645,33 +2659,23 @@ msgstr "TIFF: Imaj yazma hatas msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 inç" -#: ../src/generic/fontdlgg.cpp:213 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "Teletype" -#: ../src/common/docview.cpp:1491 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Þablonlar" -#: ../src/generic/dirctrlg.cpp:620 -#: ../src/generic/dirdlgg.cpp:217 -msgid "Temporary" -msgstr "Geçici" - -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Thai (ISO-8859-11)" -#: ../src/generic/dirctrlg.cpp:613 -#: ../src/generic/dirdlgg.cpp:209 -msgid "The Computer" -msgstr "Bilgisayar" - #: ../src/common/ftp.cpp:569 msgid "The FTP server doesn't support passive mode." -msgstr "FTP merkezi pasif durumu desteklemiyor." +msgstr "FTP sunucusu pasif durumu desteklemiyor." -#: ../src/common/fontmap.cpp:610 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2682,29 +2686,36 @@ msgstr "" "baþka birtane seçebilirsiniz veya eðer\n" "yerine konulamýyorsa (Vazgeç)'i seçiniz" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "'%d' pano biçemi yok." -#: ../src/generic/dirctrlg.cpp:1288 -#: ../src/generic/dirdlgg.cpp:529 -msgid "The directory " -msgstr "Dizin" +#: ../src/generic/dirdlgg.cpp:186 +#, fuzzy, c-format +msgid "" +"The directory '%s' does not exist\n" +"Create it now?" +msgstr "" +"\n" +"yok\n" +"Þimdi yaratýlsýn mý?" -#: ../src/common/docview.cpp:1744 +#: ../src/common/docview.cpp:1804 #, c-format -msgid "The file '%s' doesn't exist and couldn't be opened.\n" +msgid "" +"The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." -msgstr "'%s' dosyasý yok ve açýlamadý.\n" +msgstr "" +"'%s' dosyasý yok ve açýlamadý.\n" "Geçmiþ kullanýlan dosyalar listesinden çýkarýldý." -#: ../src/common/filename.cpp:780 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "'%s' yolu çok fazla \"..\" içeriyor !" -#: ../src/common/cmdline.cpp:798 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "Gerekli '%s' parametresi belirtilmemiþ." @@ -2713,70 +2724,85 @@ msgstr "Gerekli '%s' parametresi belirtilmemi msgid "The text couldn't be saved." msgstr "Döküman kaydedilemedi." -#: ../src/common/cmdline.cpp:777 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "'%s' seçeneði için deðer belirtilmelidir." -#: ../src/msw/dialup.cpp:422 +#: ../src/msw/dialup.cpp:408 #, c-format -msgid "The version of remote access service (RAS) installed on this machine is tooold, please upgrade (the following required function is missing: %s)." -msgstr "Bu makinede kurulu Uzak Eriþim Hizmeti (RAS) sürümü çok eski, lütfen yenileyiniz (gereken þu iþlev yok: %s)." +msgid "" +"The version of remote access service (RAS) installed on this machine is " +"tooold, please upgrade (the following required function is missing: %s)." +msgstr "" +"Bu makinede kurulu Uzak Eriþim Hizmeti (RAS) sürümü çok eski, lütfen " +"yenileyiniz (gereken þu iþlev yok: %s)." -#: ../src/msw/thread.cpp:1112 -msgid "Thread module initialization failed: can not store value in thread local storage" +#: ../src/html/htmprint.cpp:540 +msgid "" +"There was a problem during page setup: you may need to set a default printer." +msgstr "" + +#: ../src/msw/thread.cpp:1214 +msgid "" +"Thread module initialization failed: can not store value in thread local " +"storage" msgstr "Ýþparçacýðý birimi baþlatma baþarýsýz: yerel depoya deðer koyulamýyor" -#: ../src/unix/threadpsx.cpp:1469 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Ýþparçacýðý birimi baþlatma baþarýsýz: anahtar yaratma baþarýsýz" -#: ../src/msw/thread.cpp:1100 -msgid "Thread module initialization failed: impossible to allocate index in thread local storage" -msgstr "Ýþparçacýðý birimi baþlatma baþarýsýz: yerel depoda indeks oluþturulamýyor" +#: ../src/msw/thread.cpp:1202 +msgid "" +"Thread module initialization failed: impossible to allocate index in thread " +"local storage" +msgstr "" +"Ýþparçacýðý birimi baþlatma baþarýsýz: yerel depoda indeks oluþturulamýyor" -#: ../src/unix/threadpsx.cpp:984 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Ýþ parçacýðý öncelik ayarlarý gözardý edildi." -#: ../src/msw/mdi.cpp:178 +#: ../src/msw/mdi.cpp:189 msgid "Tile &Horizontally" msgstr "Yatay döþe" -#: ../src/msw/mdi.cpp:179 +#: ../src/msw/mdi.cpp:190 msgid "Tile &Vertically" msgstr "Dikey döþe" -#: ../src/generic/filedlgg.cpp:647 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "Zaman" -#: ../src/generic/tipdlg.cpp:162 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "Günün ipucu" -#: ../src/generic/tipdlg.cpp:138 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "Üzgünüm, ipucu yok!" -#: ../src/generic/prntdlgg.cpp:189 +#: ../src/generic/prntdlgg.cpp:188 msgid "To:" msgstr "Nereye:" -#: ../src/generic/prntdlgg.cpp:648 +#: ../src/generic/prntdlgg.cpp:633 msgid "Top margin (mm):" msgstr "Üst boþluk (mm):" -#: ../src/common/fs_mem.cpp:203 +#: ../src/common/fs_mem.cpp:202 #, c-format msgid "Trying to remove file '%s' from memory VFS, but it is not loaded!" -msgstr "Bellek VFS'den '%s' dosyasýný kaldýrma deneniyor, ama dosya yüklü deðil!" +msgstr "" +"Bellek VFS'den '%s' dosyasýný kaldýrma deneniyor, ama dosya yüklü deðil!" -#: ../src/common/sckaddr.cpp:108 +#: ../src/common/sckaddr.cpp:126 msgid "Trying to solve a NULL hostname: giving up" msgstr "NULL Makine adý çözme deneniyor: vazgeçildi" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "Türkçe (ISO-8859-9)" @@ -2784,82 +2810,67 @@ msgstr "T msgid "US Std Fanfold, 14 7/8 x 11 in" msgstr "US Std Fanfold, 14 7/8 x 11 inç" -#: ../src/html/htmlwin.cpp:271 +#: ../src/html/htmlwin.cpp:270 #, c-format msgid "Unable to open requested HTML document: %s" msgstr "Ýstenen HTML dökümaný açýlamýyor: %s" -#: ../src/generic/fontdlgg.cpp:244 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Altçizgi" -#: ../src/common/resourc2.cpp:305 -#: ../src/common/resourc2.cpp:319 -#: ../src/common/resourc2.cpp:335 -#: ../src/common/resourc2.cpp:349 -#: ../src/common/resourc2.cpp:1370 -#: ../src/common/resourc2.cpp:1384 -#: ../src/common/resourc2.cpp:1400 -#: ../src/common/resourc2.cpp:1414 -#: ../src/common/resource.cpp:1817 -#: ../src/common/resource.cpp:1831 -#: ../src/common/resource.cpp:1848 -#: ../src/common/resource.cpp:1862 -#: ../src/common/resource.cpp:1947 -#: ../src/common/resource.cpp:1961 -#: ../src/common/resource.cpp:1977 -#: ../src/common/resource.cpp:1991 -#: ../src/common/resource.cpp:3027 -#: ../src/common/resource.cpp:3041 -#: ../src/common/resource.cpp:3058 -#: ../src/common/resource.cpp:3072 +#: ../src/common/resourc2.cpp:305 ../src/common/resourc2.cpp:319 +#: ../src/common/resourc2.cpp:335 ../src/common/resourc2.cpp:349 +#: ../src/common/resourc2.cpp:1370 ../src/common/resourc2.cpp:1384 +#: ../src/common/resourc2.cpp:1400 ../src/common/resourc2.cpp:1414 +#: ../src/common/resource.cpp:1824 ../src/common/resource.cpp:1838 +#: ../src/common/resource.cpp:1855 ../src/common/resource.cpp:1869 +#: ../src/common/resource.cpp:1954 ../src/common/resource.cpp:1968 +#: ../src/common/resource.cpp:1984 ../src/common/resource.cpp:1998 +#: ../src/common/resource.cpp:3038 ../src/common/resource.cpp:3052 +#: ../src/common/resource.cpp:3069 ../src/common/resource.cpp:3083 msgid "Unexpected end of file whilst parsing resource." msgstr "Kaynak ayrýþtýrýlýrken beklenmeyen dosya sonu." -#: ../src/common/cmdline.cpp:749 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "Beklenmeyen parametre '%s'" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "7 ikili evrensel kod (UTF-7)" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "8 ikili evrensel kod (UTF-8)" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "Bilinmeyen DDE hatasý %08x" -#: ../src/common/strconv.cpp:888 -#, c-format -msgid "Unknown encoding '%s'!" -msgstr "Bilinmeyen kodlama '%s'!" - -#: ../src/common/fontmap.cpp:383 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "Bilinmeyen kodlama (%d)" -#: ../src/unix/mimetype.cpp:2120 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "%s dosyasýnda bilinmeyen alan, satýr %d: '%s'." -#: ../src/common/cmdline.cpp:533 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "Blinmeyen long seçenek '%s'" -#: ../src/common/cmdline.cpp:555 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "Bilinmeyen seçenek '%s'" -#: ../contrib/src/xrc/xmlres.cpp:488 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "Bilinmeyen biçim bayraðý" @@ -2868,25 +2879,22 @@ msgstr "Bilinmeyen bi msgid "Unmatched '{' in an entry for mime type %s." msgstr "%s MIME tipi girdisinde uymayan '{'." -#: ../src/common/cmdproc.cpp:226 -#: ../src/common/cmdproc.cpp:241 -#: ../src/common/cmdproc.cpp:268 +#: ../src/common/cmdproc.cpp:238 ../src/common/cmdproc.cpp:254 +#: ../src/common/cmdproc.cpp:281 msgid "Unnamed command" msgstr "Adsýz komut" -#: ../src/common/resourc2.cpp:687 -#: ../src/common/resource.cpp:2336 +#: ../src/common/resourc2.cpp:687 ../src/common/resource.cpp:2343 #, c-format msgid "Unrecognized style %s whilst parsing resource." msgstr "Kaynak ayrýþtýrýlýrken tanýmlanamayan %s biçimi." -#: ../src/mac/clipbrd.cpp:53 -#: ../src/msw/clipbrd.cpp:273 -#: ../src/msw/clipbrd.cpp:374 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 +#: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "Desteklenmeyen pano biçemi." -#: ../src/common/appcmn.cpp:266 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "Desteklenmeyen tema '%s'." @@ -2895,64 +2903,48 @@ msgstr "Desteklenmeyen tema '%s'." msgid "Up" msgstr "Yukarý" -#: ../src/common/cmdline.cpp:834 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Kullaným: %s" -#: ../src/generic/dirctrlg.cpp:617 -#: ../src/generic/dirdlgg.cpp:214 -msgid "User" -msgstr "Kullanýcý" - -#: ../src/generic/dirctrlg.cpp:616 -#: ../src/generic/dirdlgg.cpp:213 -msgid "User Local" -msgstr "Yerel kullanýcý" - -#: ../src/common/valtext.cpp:188 +#: ../src/common/valtext.cpp:196 msgid "Validation conflict" msgstr "Doðrulama çeliþkisi" -#: ../src/generic/dirctrlg.cpp:618 -#: ../src/generic/dirdlgg.cpp:215 -msgid "Variables" -msgstr "Deðiþkenler" - -#: ../src/generic/filedlgg.cpp:986 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "Dosyalarý detaylý görünümde göster" -#: ../src/generic/filedlgg.cpp:980 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "Dosyalarý liste görünümde göster" -#: ../src/common/docview.cpp:1557 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "Görünümler" -#: ../src/unix/utilsunx.cpp:767 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "Altiþ sonlandýrma beklemesi baþarýsýz" -#: ../src/common/docview.cpp:436 -#: ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "Uyarý" -#: ../src/common/log.cpp:373 +#: ../src/common/log.cpp:464 msgid "Warning: " msgstr "Uyarý:" -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "Uyarý: boþ yýðýndan HTML etiket iþleyici kaldýrma denemesi." -#: ../src/common/fontmap.cpp:111 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "Batý Avrupa (ISO-8859-1)" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "Batý Avrupa (Euro) (ISO-8859-15)" @@ -2960,80 +2952,76 @@ msgstr "Bat msgid "Whole word" msgstr "Tam kelime" -#: ../src/html/helpfrm.cpp:467 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "Yalnýz tam kelimeler" -#: ../src/univ/themes/win32.cpp:1106 +#: ../src/univ/themes/win32.cpp:1168 msgid "Win32 theme" msgstr "Win32 temasý" -#: ../src/msw/utils.cpp:862 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Windows 3.1 üstünde Win32s" -#: ../src/msw/mdi.cpp:1338 -msgid "Window" -msgstr "Pencere" - -#: ../src/msw/utils.cpp:894 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:866 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arapça (CP 1256)" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltýk (CP 1257)" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "Windows Orta Avrupa (CP 1250)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "Windows Basitleþtirilmiþ Çince (CP 936)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows Geleneksel Çince (CP 950)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Rusça (CP 1251)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Yunanca (CP 1253)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Ýbranice (CP 1255)" -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "Windows Japonca (CP 932)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "Windows Korece (CP 949)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows Türkçe (CP 1254)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "Windows Batý Avrupa (CP 1252)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3042,142 +3030,117 @@ msgstr "Windows/DOS OEM (CP 437)" msgid "Write error on file '%s'" msgstr "'%s' dosyasýna yazma hatasý" -#: ../src/generic/dcpsg.cpp:2319 -msgid "X Scaling" -msgstr "X Ölçekleme" - -#: ../src/generic/dcpsg.cpp:2328 -msgid "X Translation" -msgstr "X Çevrim" - -#: ../contrib/src/xrc/xmlexpat.cpp:185 +#: ../contrib/src/xrc/xml.cpp:530 #, c-format msgid "XML parsing error: '%s' at line %d" msgstr "XML ayrýþtýrma hatasý: '%s', satýr %d" -#: ../src/common/xpmdecod.cpp:757 +#: ../src/common/xpmdecod.cpp:759 msgid "XPM: Malformed pixel data!" msgstr "XPM: Bozuk piksel verisi!" -#: ../src/common/xpmdecod.cpp:710 -#: ../src/common/xpmdecod.cpp:719 +#: ../src/common/xpmdecod.cpp:709 ../src/common/xpmdecod.cpp:718 #, c-format msgid "XPM: malformed colour definition '%s'!" msgstr "XPM: bozuk renk tanýmý '%s'!" -#: ../contrib/src/xrc/xmlres.cpp:371 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "XRC '%s' kaynaðý (sýnýf '%s') bulunamadý!" -#: ../contrib/src/xrc/xmlres.cpp:624 -#: ../contrib/src/xrc/xmlres.cpp:634 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "XRC kaynaðý: Ýkieþlem '%s''den yaratýlamadý." -#: ../contrib/src/xrc/xh_dlg.cpp:53 -#: ../contrib/src/xrc/xh_frame.cpp:58 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "XRC kaynaðý: Örnek olmadan iletiþim yaratýlamýyor." - -#: ../contrib/src/xrc/xmlres.cpp:604 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "XRC kaynaðý: Hatalý '%s' renk tanýmý, '%s' özelliði için." -#: ../src/generic/dcpsg.cpp:2323 -msgid "Y Scaling" -msgstr "Y Ölçekleme" - -#: ../src/generic/dcpsg.cpp:2332 -msgid "Y Translation" -msgstr "Y Çevrim" - -#: ../src/common/dlgcmn.cpp:150 -#: ../src/common/dlgcmn.cpp:157 -#: ../src/mac/msgdlg.cpp:83 -#: ../src/motif/msgdlg.cpp:180 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 +#: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "Evet" -#: ../src/generic/dirctrlg.cpp:1355 -#: ../src/generic/dirdlgg.cpp:564 +#: ../src/generic/dirdlgg.cpp:262 msgid "You cannot add a new directory to this section." msgstr "Bu bölüme yeni dizin ekleyemezsiniz." -#: ../src/common/fs_zip.cpp:86 -#: ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "ZIP iþleyici þimdilik sadece yerel dosyalarý destekler!" -#: ../src/common/docview.cpp:1893 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[BOÞ]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "bir DDEML uygulamasý uzun yarýþ durumu yarattý." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" -"a DDEML function was called without first calling the DdeInitialize function,\n" +"a DDEML function was called without first calling the DdeInitialize " +"function,\n" "or an invalid instance identifier\n" "was passed to a DDEML function." -msgstr "DDEML iþlevi öncelikle DdeInitialize iþlevi çaðrýlmaksýzýn çaðrýldý,\n" +msgstr "" +"DDEML iþlevi öncelikle DdeInitialize iþlevi çaðrýlmaksýzýn çaðrýldý,\n" "veya DDEML iþlevine geçersiz bir örnek tanýmlayýcýsý geçirildi." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "istemcinin konuþma kurma denemesi baþarýsýz." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "bellek ayýrma baþarýsýz." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "parametrenin DDEML tarafýndan doðrulanmasý baþarýsýz." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "eþzamanlý danýþma iþi isteði zamanaþýmýna uðradý." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "eþzamanlý veri iþi isteði zamanaþýmýna uðradý." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "eþzamanlý çalýþtýrma iþi isteði zamanaþýmýna uðradý." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "eþzamanlý itme iþi isteði zamanaþýmýna uðradý." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "danýþma iþi bitirme isteði zamanaþýmýna uðradý." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" "terminated before completing a transaction." msgstr "" "istemci tarafýndan sonlandýrýlmýþ bir görüþme üstünde\n" -"merkez-tarafý iþ denendi, veya merkez\n" +"sunucu-tarafý iþ denendi, veya sunucu\n" "iþ bitmeden sonlandýrýldý." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "iþ baþarýsýz." -#: ../src/common/menucmn.cpp:80 +#: ../src/common/menucmn.cpp:99 msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3187,17 +3150,17 @@ msgstr "" "APPCLASS_MONITOR olarak baþlatýlmýþ bir uygulama\n" "DDE iþi gerçekleþtirmeyi denedi,\n" "veya APPCMD_CLIENTONLY olarak baþlatýlmýþ bir uygulama\n" -"merkez iþi gerçekleþtirmeyi denedi." +"sunucu iþi gerçekleþtirmeyi denedi." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "PostMessage iþlevine içsel çaðrý baþarýsýz." -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "DDEML'de içsel hata oluþtu." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3207,7 +3170,7 @@ msgstr "" "Uygulama XTYP_XACT_COMPLETE geri-çaðrýdan döndüðünde\n" "bu geri-çaðrýnýn iþ tanýtýcýsý geçersiz olacaktýr." -#: ../src/common/fileconf.cpp:1555 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "deðiþmez anahtar '%s''ý deðiþtirme denemesi gözardý edildi." @@ -3216,17 +3179,27 @@ msgstr "de msgid "binary" msgstr "ikili" +#: ../src/common/fontcmn.cpp:521 +#, fuzzy +msgid "bold" +msgstr "Kalýn" + +#: ../src/common/fontcmn.cpp:445 +#, fuzzy +msgid "bold " +msgstr "Kalýn" + #: ../src/common/ffile.cpp:93 #, c-format msgid "can't close file '%s'" msgstr "'%s' dosyasý kapatýlamýyor" -#: ../src/common/file.cpp:272 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "dosya betimleyicisi %d kapatýlamýyor" -#: ../src/common/file.cpp:543 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "'%s' dosyasýndaki deðiþiklikler iþlenemiyor" @@ -3236,133 +3209,129 @@ msgstr "'%s' dosyas msgid "can't create file '%s'" msgstr "'%s' dosyasý yaratýlamýyor" -#: ../src/common/fileconf.cpp:1024 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "kullanýcý yapýlandýrma dosyasý '%s' silinemiyor" -#: ../src/common/file.cpp:455 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" -msgstr "betimleyici %d üstündeki dosyanýn sonuna ulaþýlýp ulaþýlamadýðý tesbit edilemiyor" +msgstr "" +"betimleyici %d üstündeki dosyanýn sonuna ulaþýlýp ulaþýlamadýðý tesbit " +"edilemiyor" -#: ../src/common/file.cpp:421 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "betimleyici %d üstündeki dosyanýn uzunluðu bulunamýyor" -#: ../src/msw/utils.cpp:366 +#: ../src/msw/utils.cpp:369 msgid "can't find user's HOME, using current directory." msgstr "kullanýcýnýn EV'i bulunamýyor, geçerli dizin kullanýlýyor." -#: ../src/common/file.cpp:335 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "dosya betimleyicisi %d temizlenemiyor" -#: ../src/common/file.cpp:389 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "dosya betimleyicisi %d üstündeki arama yeri alýnamýyor" -#: ../src/common/fontmap.cpp:746 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "hiç yazýtipi yüklenemedi, durduruluyor" -#: ../src/common/ffile.cpp:77 -#: ../src/common/file.cpp:258 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "'%s' dosyasý açýlamýyor" -#: ../src/common/fileconf.cpp:386 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "genel yapýlandýrma dosyasý '%s' açýlamýyor" -#: ../src/common/fileconf.cpp:398 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "kullanýcý yapýlandýrma dosyasý '%s' açýlamýyor" -#: ../src/common/fileconf.cpp:904 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "kullanýcý yapýlandýrma dosyasý açýlamýyor" -#: ../src/common/file.cpp:298 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "dosya betimleyicisi %d'den okunamýyor" -#: ../src/common/file.cpp:538 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "'%s' dosyasý silinemedi" -#: ../src/common/file.cpp:554 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "geçici '%s' dosyasý silinemedi" -#: ../src/common/file.cpp:375 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "dosya betimleyicisi %d üstünde arama yapýlamýyor" -#: ../src/common/textfile.cpp:178 +#: ../src/common/textfile.cpp:196 #, c-format msgid "can't write buffer '%s' to disk." msgstr "'%s' tamponu diske yazýlamadý" -#: ../src/common/file.cpp:320 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "dosya betimleyicisi %d'ye yazýlamýyor" -#: ../src/common/fileconf.cpp:911 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "kullanýcý yapýlandýrma dosyasý yazýlamadý" -#: ../src/common/intl.cpp:398 +#: ../src/common/intl.cpp:364 #, c-format msgid "catalog file for domain '%s' not found." msgstr "'%s' etki alaný için katalog bulunamadý." -#: ../contrib/src/xrc/xh_frame.cpp:72 -msgid "centered" -msgstr "ortalý" - -#: ../src/common/menucmn.cpp:78 +#: ../src/common/menucmn.cpp:97 msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:947 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "tarih" -#: ../src/common/fontmap.cpp:393 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "varsayýlan" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "onsekizinci" -#: ../src/common/datetime.cpp:3217 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "sekizinci" -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "onbirinci" -#: ../src/common/fileconf.cpp:1542 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "'%s' girdisi '%s' grubunda birden fazla görülüyor" -#: ../src/msw/dialup.cpp:870 -#: ../src/msw/dialup.cpp:875 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "kurmak" @@ -3371,208 +3340,230 @@ msgstr "kurmak" msgid "failed to flush the file '%s'" msgstr "'%s' dosyasý temizlenemedi" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "onbeþinci" -#: ../src/common/datetime.cpp:3214 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "beþinci" -#: ../src/common/fileconf.cpp:610 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "dosya '%s', satýr %d: '%s' grup baþlýðýndan sonra gözardý edildi." -#: ../src/common/fileconf.cpp:639 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "dosya '%s', satýr %d: '=' bekleniyor." -#: ../src/common/fileconf.cpp:665 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "dosya '%s', satýr %d: anahtar '%s' ilk olarak %d satýrýnda bulundu." -#: ../src/common/fileconf.cpp:655 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." -msgstr "dosya '%s', satýr %d: '%s' deðiþmez anahtarý için deðer gözardý edildi." +msgstr "" +"dosya '%s', satýr %d: '%s' deðiþmez anahtarý için deðer gözardý edildi." -#: ../src/common/fileconf.cpp:578 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "dosya '%s': beklenmedik karakter %c, satýr: %d." -#: ../src/common/datetime.cpp:3210 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "birinci" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "ondördüncü" -#: ../src/common/datetime.cpp:3213 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "dördüncü" -#: ../src/common/appcmn.cpp:216 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "sözel günlük uyarýlarý üret" -#: ../src/common/timercmn.cpp:273 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() baþarýsýz oldu" -#: ../src/msw/dialup.cpp:870 -#: ../src/msw/dialup.cpp:875 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "baþlat" -#: ../src/common/file.cpp:459 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "geçersiz eof() sonuç deðeri" -#: ../src/generic/logg.cpp:1036 +#: ../src/generic/logg.cpp:1125 msgid "invalid message box return value" msgstr "geçersiz ileti kutusu sonuç deðeri" -#: ../src/html/helpfrm.cpp:1017 -msgid "large" -msgstr "büyük" +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 +#, fuzzy +msgid "italic" +msgstr "Eðik" -#: ../src/common/intl.cpp:611 +#: ../src/common/fontcmn.cpp:517 +#, fuzzy +msgid "light" +msgstr "Açýk" + +#: ../src/common/fontcmn.cpp:441 +#, fuzzy +msgid "light " +msgstr "Açýk" + +#: ../src/common/intl.cpp:615 #, c-format msgid "locale '%s' can not be set." msgstr "'%s' yereli ayarlanamýyor." -#: ../src/common/intl.cpp:393 +#: ../src/common/intl.cpp:359 #, c-format msgid "looking for catalog '%s' in path '%s'." msgstr "'%s' kataloðu için '%s' dizinine bakýlýyor." -#: ../src/html/helpfrm.cpp:1017 -msgid "medium" -msgstr "orta" - -#: ../src/common/datetime.cpp:3375 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "geceyarýsý" -#: ../src/common/timercmn.cpp:269 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime() baþarýsýz" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "ondokuzuncu" -#: ../src/common/datetime.cpp:3218 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "dokuzuncu" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "DDE yok hatasý." -#: ../src/html/helpdata.cpp:565 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "adsýz" -#: ../src/common/datetime.cpp:3374 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "öðlen" -#: ../src/common/cmdline.cpp:946 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/msw/dde.cpp:1005 +#: ../src/common/filename.cpp:166 +msgid "reading" +msgstr "" + +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "yeniden-giriþ sorunu." -#: ../src/common/datetime.cpp:3211 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "ikinci" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "onyedinci" -#: ../src/common/datetime.cpp:3216 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "yedinci" -#: ../src/common/menucmn.cpp:82 +#: ../src/common/menucmn.cpp:101 msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:206 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "bu yardým uyarýsýný göster" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "onaltýncý" -#: ../src/common/datetime.cpp:3215 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "altýncý" -#: ../src/html/helpfrm.cpp:1017 -msgid "small" -msgstr "küçük" - -#: ../src/common/appcmn.cpp:238 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "kullanýlacak görüntü biçimini belirleyiniz (ör. 640x480-16)" -#: ../src/common/appcmn.cpp:225 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "kullanýlacak temayý belirleyiniz" -#: ../src/common/cmdline.cpp:945 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3219 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "onuncu" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "iþe yanýt DDE_FBUSY bitinin yerleþtirilmesine yolaçtý." -#: ../src/common/datetime.cpp:3212 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "üçüncü" -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "onüçüncü" -#: ../src/common/datetime.cpp:3054 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "bugün" -#: ../src/common/datetime.cpp:3056 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "yarýn" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "yirminci" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "onikinci" -#: ../src/common/fileconf.cpp:1662 +#: ../src/common/fontcmn.cpp:513 +#, fuzzy +msgid "underlined" +msgstr "Altçizgi" + +#: ../src/common/fontcmn.cpp:428 +#, fuzzy +msgid "underlined " +msgstr "Altçizgi" + +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "beklenmedik \" yer: %d; '%s' içinde." -#: ../src/generic/progdlgg.cpp:276 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "bilinmeyen" @@ -3580,7 +3571,7 @@ msgstr "bilinmeyen" msgid "unknown error" msgstr "bilinmeyen hata" -#: ../src/msw/dialup.cpp:473 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "bilinmeyen hata (hata kodu %08x)." @@ -3589,47 +3580,53 @@ msgstr "bilinmeyen hata (hata kodu %08x)." msgid "unknown line terminator" msgstr "bilinmeyen satýr sonlayýcý" -#: ../src/common/file.cpp:358 +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "bilinmeyen arama baþlangýcý" -#: ../src/common/fontmap.cpp:410 +#: ../src/common/fontmap.cpp:430 #, c-format msgid "unknown-%d" msgstr "bilinmeyen-%d" -#: ../src/common/docview.cpp:405 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "isimsiz" -#: ../src/common/docview.cpp:1187 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "isimsiz%d" -#: ../src/common/intl.cpp:403 +#: ../src/common/intl.cpp:369 #, c-format msgid "using catalog '%s' from '%s'." msgstr "katalog '%s' '%s' den kullanýlýyor" -#: ../src/html/helpfrm.cpp:1017 -msgid "very large" -msgstr "çok büyük" +#: ../src/common/filename.cpp:166 +#, fuzzy +msgid "writing" +msgstr "Yazdýrýlýyor" -#: ../src/html/helpfrm.cpp:1017 -msgid "very small" -msgstr "çok küçük" +#: ../src/common/dynlib.cpp:336 +#, c-format +msgid "wxDllLoader failed to GetSymbol '%s'" +msgstr "" -#: ../src/common/timercmn.cpp:301 +#: ../src/common/dynload.cpp:282 +#, c-format +msgid "wxDynamicLibrary failed to GetSymbol '%s'" +msgstr "" + +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay baþarýsýz." -#: ../src/common/socket.cpp:347 -#: ../src/common/socket.cpp:401 +#: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: ReadMsg içinde geçersiz imza." -#: ../src/common/socket.cpp:921 +#: ../src/common/socket.cpp:975 msgid "wxSocket: unknown event!." msgstr "wxSocket: bilinmeyen olay!." @@ -3638,7 +3635,191 @@ msgstr "wxSocket: bilinmeyen olay!." msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows '%s' için görüntüyü açamadý: çýkýlýyor." -#: ../src/common/datetime.cpp:3055 +#: ../src/x11/app.cpp:245 +#, fuzzy +msgid "wxWindows could not open display. Exiting." +msgstr "wxWindows '%s' için görüntüyü açamadý: çýkýlýyor." + +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "dün" +#~ msgid " bytes " +#~ msgstr "baytlar" + +#~ msgid "

    " +#~ msgstr "" + +#~ msgid " " +#~ msgstr "" + +#~ msgid "Back" +#~ msgstr "Geri" + +#~ msgid "Can not create event object." +#~ msgstr "Oluþ objesi yaratýlamadý." + +#~ msgid "Can not create mutex" +#~ msgstr "Muteks yaratýlamadý" + +#~ msgid "Can't create the inter-process read pipe" +#~ msgstr "Süreç-arasý okuma borusu yaratýlamýyor" + +#~ msgid "Can't create the inter-process write pipe" +#~ msgstr "Süreç-arasý yazma borusu yaratýlamýyor" + +#~ msgid "Can't find the serialization object '%s' for the object '%s'." +#~ msgstr "'%s' diziselleþtirme nesnesi '%s' nesnesi için bulunamýyor." + +#~ msgid "Can't load wxSerial dynamic library." +#~ msgstr "wxSerial devingen kitaplýðý yüklenemiyor." + +#~ msgid "Cannot find XML I/O handler capable of loading this format." +#~ msgstr "Bu biçemi yükleyebilecek XML I/O iþleyici bulunamýyor." + +#~ msgid "Cannot find XML I/O handler capable of saving in this format." +#~ msgstr "Bu biçemi kaydedebilecek XML I/O iþleyici bulunamýyor." + +#~ msgid "ChoosePixelFormat failed." +#~ msgstr "ChoosePixelFormat baþarýsýz oldu." + +#~ msgid "Connection to wxHelp timed out in %d seconds" +#~ msgstr "wxHelp'e baðlantý %d saniyede zamanaþýmýna uðradý" + +#~ msgid "Couldn't acquire a mutex lock" +#~ msgstr "Muteks kilidi alýnamýyor" + +#~ msgid "Couldn't release a mutex" +#~ msgstr "Muteks býrakýlamýyor" + +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "DIB baþlýðý: 4ikili kodlamaya henüz ulaþýlamýyor." + +#~ msgid "Don't know how to convert to/from charset '%s'." +#~ msgstr "'%s' karakter kümesi(ne/nden) nasýl çevrileceði bilinmiyor." + +#~ msgid "Etcetera" +#~ msgstr "Ve benzeri" + +#~ msgid "Font" +#~ msgstr "Yazý tipi" + +#~ msgid "ICO: Error calculating size of DIB ." +#~ msgstr "ICO: Hata: DIB boyutu hesaplama." + +#~ msgid "ICO: Error calculating size of Mask DIB ." +#~ msgstr "ICO: Hata: Maske DIB boyutu hesaplama." + +#~ msgid "ICO: Error calculating size of XOR DIB ." +#~ msgstr "ICO: Hata: XOR DIB boyutu hesaplama." + +#~ msgid "ICO: Error writing ICONDIR header." +#~ msgstr "ICO: Hata: ICONDIR baþlýðý yazma." + +#~ msgid "ICO: Error writing ICONDIRENTRY header." +#~ msgstr "ICO: Hata: ICONDIRENTRY baþlýðý yazma." + +#~ msgid "ICO: Error writing Mask DIB ." +#~ msgstr "ICO: Hata: Maske DIB yazma." + +#~ msgid "ICO: Error writing XOR DIB ." +#~ msgstr "ICO: Hata: XOR DIB yazma." + +#~ msgid "Incorrect version of HTML help book" +#~ msgstr "Hatalý HTML yardým kitabý sürümü" + +#~ msgid "Loading DIB : Couldn't allocate memory." +#~ msgstr "DIB yükleme: Bellek alýnamadý." + +#~ msgid "Mounted Devices" +#~ msgstr "Baðlý Araçlar" + +#~ msgid "My Harddisk" +#~ msgstr "Sabit diskim" + +#~ msgid "My Home" +#~ msgstr "Evim" + +#~ msgid "New..." +#~ msgstr "Yeni..." + +#~ msgid "Please wait..." +#~ msgstr "Lütfen bekleyiniz..." + +#~ msgid "PostScript" +#~ msgstr "PostScript" + +#~ msgid "PostScript:" +#~ msgstr "PostScript:" + +#~ msgid "Preview Only" +#~ msgstr "Sadece önizleme" + +#~ msgid "Printer Command: " +#~ msgstr "Yazdýrma komutu:" + +#~ msgid "Printer Options: " +#~ msgstr "Yazýcý Seçenekleri:" + +#~ msgid "Printer Settings" +#~ msgstr "Yazýcý Ayarlarý:" + +#~ msgid "Send to Printer" +#~ msgstr "Yazýcýya gönder" + +#~ msgid "SetPixelFormat failed." +#~ msgstr "SetPixelFormat baþarýsýz oldu." + +#~ msgid "Temporary" +#~ msgstr "Geçici" + +#~ msgid "The Computer" +#~ msgstr "Bilgisayar" + +#~ msgid "The directory " +#~ msgstr "Dizin" + +#~ msgid "User" +#~ msgstr "Kullanýcý" + +#~ msgid "User Local" +#~ msgstr "Yerel kullanýcý" + +#~ msgid "Variables" +#~ msgstr "Deðiþkenler" + +#~ msgid "Window" +#~ msgstr "Pencere" + +#~ msgid "X Scaling" +#~ msgstr "X Ölçekleme" + +#~ msgid "X Translation" +#~ msgstr "X Çevrim" + +#~ msgid "XRC resource: Cannot create dialog without instance." +#~ msgstr "XRC kaynaðý: Örnek olmadan iletiþim yaratýlamýyor." + +#~ msgid "Y Scaling" +#~ msgstr "Y Ölçekleme" + +#~ msgid "Y Translation" +#~ msgstr "Y Çevrim" + +#~ msgid "centered" +#~ msgstr "ortalý" + +#~ msgid "large" +#~ msgstr "büyük" + +#~ msgid "medium" +#~ msgstr "orta" + +#~ msgid "small" +#~ msgstr "küçük" + +#~ msgid "very large" +#~ msgstr "çok büyük" + +#~ msgid "very small" +#~ msgstr "çok küçük" diff --git a/locale/wxstd.po b/locale/wxstd.po index f714ae8909..2ae2438f5b 100644 --- a/locale/wxstd.po +++ b/locale/wxstd.po @@ -6,31 +6,27 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Transfer-Encoding: 8bit\n" #: ../src/common/log.cpp:304 #, c-format msgid " (error %ld: %s)" msgstr "" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr "" -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr "" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr "" - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "" @@ -58,23 +54,23 @@ msgstr "" msgid "#define %s must be an integer." msgstr "" -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, c-format msgid "%d...%d" msgstr "" -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "" @@ -94,6 +90,11 @@ msgstr "" msgid "%s Warning" msgstr "" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -115,7 +116,7 @@ msgstr "" msgid "&Arrange Icons" msgstr "" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 msgid "&Cancel" msgstr "" @@ -123,10 +124,18 @@ msgstr "" msgid "&Cascade" msgstr "" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +msgid "&Delete" +msgstr "" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "" @@ -135,11 +144,11 @@ msgstr "" msgid "&Find" msgstr "" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 msgid "&Help" msgstr "" @@ -151,23 +160,28 @@ msgstr "" msgid "&Move" msgstr "" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 msgid "&Next" msgstr "" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +msgid "&Paste" +msgstr "" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 msgid "&Previous" msgstr "" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "" @@ -187,7 +201,7 @@ msgstr "" msgid "&Save..." msgstr "" -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "" @@ -195,7 +209,7 @@ msgstr "" msgid "&Size" msgstr "" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "" @@ -203,11 +217,13 @@ msgstr "" msgid "&Undo " msgstr "" -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "" @@ -218,7 +234,7 @@ msgstr "" msgid "'%s' is invalid" msgstr "" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "" @@ -253,12 +269,12 @@ msgstr "" msgid "'%s' should only contain alphabetic or numeric characters." msgstr "" -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "" @@ -270,11 +286,11 @@ msgid "" "whilst parsing resource." msgstr "" -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "" -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr "" @@ -290,51 +306,43 @@ msgstr "" msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr "" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr "" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr "" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr "" - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr "" - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" #: ../src/common/paper.cpp:113 @@ -361,7 +369,7 @@ msgstr "" msgid "ASCII" msgstr "" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "" @@ -378,10 +386,14 @@ msgstr "" msgid "All" msgstr "" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "" +#: ../include/wx/defs.h:1803 +msgid "All files (*.*)|*.*" +msgstr "" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "" @@ -391,7 +403,7 @@ msgstr "" msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "" @@ -415,7 +427,7 @@ msgstr "" msgid "B6 Envelope, 176 x 125 mm" msgstr "" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 msgid "BMP: Couldn't allocate memory." msgstr "" @@ -443,15 +455,15 @@ msgstr "" msgid "BMP: wxImage doesn't have own wxPalette." msgstr "" -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "" @@ -460,7 +472,7 @@ msgstr "" msgid "Bitmap resource specification %s not found." msgstr "" -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "" @@ -496,12 +508,12 @@ msgstr "" msgid "C65 Envelope, 114 x 229 mm" msgstr "" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, c-format msgid "Can not enumerate files '%s'" msgstr "" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "" @@ -528,7 +540,7 @@ msgstr "" msgid "Can't &Undo " msgstr "" -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "" @@ -543,16 +555,16 @@ msgstr "" msgid "Can't copy values of unsupported type %d." msgstr "" -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 msgid "Can't create dialog using memory template" msgstr "" -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, c-format msgid "Can't create dialog using template '%ul'" msgstr "" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "" @@ -565,7 +577,7 @@ msgstr "" msgid "Can't create thread" msgstr "" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, c-format msgid "Can't create window of class %s" msgstr "" @@ -653,62 +665,61 @@ msgstr "" msgid "Can't set value of '%s'" msgstr "" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, c-format msgid "Cannot convert from encoding '%s'!" msgstr "" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, c-format msgid "Cannot find container for unknown control '%s'." msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, c-format msgid "Cannot find font node '%s'." msgstr "" -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "" -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "" -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "" @@ -716,31 +727,31 @@ msgstr "" msgid "Cannot initialize SciTech MGL!" msgstr "" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 msgid "Cannot initialize display." msgstr "" -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, c-format msgid "Cannot load icon from '%s'." msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, c-format msgid "Cannot load resources from file '%s'." msgstr "" -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "" @@ -750,60 +761,60 @@ msgstr "" msgid "Cannot open contents file: %s" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, c-format msgid "Cannot open file '%s'." msgstr "" -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, c-format msgid "Cannot parse coordinates from '%s'." msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, c-format msgid "Cannot parse dimension from '%s'." msgstr "" -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "" -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, c-format msgid "Cannot read typename from '%s'!" msgstr "" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "" -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 msgid "Celtic (ISO-8859-14)" msgstr "" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 msgid "Central European (ISO-8859-2)" msgstr "" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "" @@ -811,11 +822,15 @@ msgstr "" msgid "Choose font" msgstr "" +#: ../src/generic/mdig.cpp:112 +msgid "Cl&ose" +msgstr "" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "" @@ -824,24 +839,28 @@ msgstr "" msgid "Close\tAlt-F4" msgstr "" +#: ../src/generic/mdig.cpp:113 +msgid "Close All" +msgstr "" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 msgid "Computer" msgstr "" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "" -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -849,13 +868,13 @@ msgstr "" msgid "Connecting..." msgstr "" -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "" #: ../src/generic/prntdlgg.cpp:193 @@ -872,7 +891,7 @@ msgstr "" msgid "Could not find tab for id" msgstr "" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "" @@ -891,19 +910,19 @@ msgid "" "or provide #define (see manual for caveats)" msgstr "" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "" -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "" -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -917,7 +936,7 @@ msgstr "" msgid "Couldn't create cursor." msgstr "" -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "" @@ -926,22 +945,22 @@ msgstr "" msgid "Couldn't get the current thread pointer" msgstr "" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "" -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "" -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "" -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 msgid "Couldn't save PNG image." msgstr "" @@ -953,15 +972,19 @@ msgstr "" msgid "Create directory" msgstr "" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 msgid "Cyrillic (ISO-8859-5)" msgstr "" @@ -969,31 +992,27 @@ msgstr "" msgid "D sheet, 22 x 34 in" msgstr "" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "" -#: ../src/common/imagbmp.cpp:618 -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "" - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "" -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 msgid "DIB Header: Image height > 32767 pixels for file." msgstr "" -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 msgid "DIB Header: Image width > 32767 pixels for file." msgstr "" -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 msgid "DIB Header: Unknown bitdepth in file." msgstr "" -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 msgid "DIB Header: Unknown encoding in file." msgstr "" @@ -1001,15 +1020,15 @@ msgstr "" msgid "DL Envelope, 110 x 220 mm" msgstr "" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "" @@ -1018,21 +1037,21 @@ msgstr "" msgid "Deleted stale lock file '%s'." msgstr "" -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." msgstr "" -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "" -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "" -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "" @@ -1046,28 +1065,28 @@ msgstr "" msgid "Directory does not exist" msgstr "" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." msgstr "" -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "" @@ -1076,7 +1095,7 @@ msgstr "" msgid "Done" msgstr "" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "" @@ -1096,22 +1115,22 @@ msgstr "" msgid "Entries found" msgstr "" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "" -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "" @@ -1119,7 +1138,7 @@ msgstr "" msgid "Error creating directory" msgstr "" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 msgid "Error in reading image DIB ." msgstr "" @@ -1127,7 +1146,7 @@ msgstr "" msgid "Error: " msgstr "" -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "" @@ -1135,7 +1154,7 @@ msgstr "" msgid "Estimated time : " msgstr "" -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "" @@ -1162,7 +1181,11 @@ msgstr "" msgid "Expected 'char' whilst parsing resource." msgstr "" -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "" @@ -1171,7 +1194,7 @@ msgstr "" msgid "Failed to access lock file." msgstr "" -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 msgid "Failed to close file handle" msgstr "" @@ -1184,11 +1207,11 @@ msgstr "" msgid "Failed to close the clipboard." msgstr "" -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "" -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "" @@ -1202,12 +1225,12 @@ msgstr "" msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "" -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "" @@ -1219,23 +1242,33 @@ msgstr "" msgid "Failed to create a status bar." msgstr "" -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 msgid "Failed to create a temporary file name" msgstr "" -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 msgid "Failed to create an anonymous pipe" msgstr "" -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "" +#: ../src/unix/mimetype.cpp:372 +#, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "" + +#: ../src/unix/mimetype.cpp:381 +#, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "" + #: ../src/generic/dirdlgg.cpp:201 #, c-format msgid "" @@ -1253,25 +1286,25 @@ msgstr "" msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "" -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "" @@ -1297,12 +1330,12 @@ msgid "" "Forgot to use wxResourceLoadBitmapData?" msgstr "" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 msgid "Failed to get clipboard data." msgstr "" @@ -1310,15 +1343,15 @@ msgstr "" msgid "Failed to get data from the clipboard" msgstr "" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "" -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 msgid "Failed to get the working directory" msgstr "" @@ -1334,7 +1367,7 @@ msgstr "" msgid "Failed to initialize OpenGL" msgstr "" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1350,16 +1383,16 @@ msgstr "" msgid "Failed to load image %d from file '%s'." msgstr "" -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 msgid "Failed to load mpr.dll." msgstr "" -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "" @@ -1374,17 +1407,17 @@ msgstr "" msgid "Failed to match '%s' in regular expression: %s" msgstr "" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, c-format msgid "Failed to modify file times for '%s'" msgstr "" -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, c-format msgid "Failed to open '%s' for %s" msgstr "" -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 msgid "Failed to open temporary file." msgstr "" @@ -1400,20 +1433,20 @@ msgstr "" msgid "Failed to read PID from lock file." msgstr "" -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 msgid "Failed to redirect the child process IO" msgstr "" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "" @@ -1442,12 +1475,12 @@ msgstr "" msgid "Failed to retrieve data from the clipboard." msgstr "" -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, c-format msgid "Failed to retrieve file times for '%s'" msgstr "" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "" @@ -1455,7 +1488,7 @@ msgstr "" msgid "Failed to retrieve the supported clipboard formats" msgstr "" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "" @@ -1468,11 +1501,11 @@ msgstr "" msgid "Failed to set clipboard data." msgstr "" -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 msgid "Failed to set temporary file permissions" msgstr "" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "" @@ -1482,20 +1515,20 @@ msgstr "" msgid "Failed to store image '%s' to memory VFS!" msgstr "" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "" -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "" -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, c-format msgid "Failed to touch the file '%s'" msgstr "" @@ -1505,7 +1538,7 @@ msgstr "" msgid "Failed to unlock lock file '%s'" msgstr "" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "" @@ -1523,7 +1556,7 @@ msgstr "" msgid "Fatal error: " msgstr "" -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "" @@ -1532,12 +1565,12 @@ msgstr "" msgid "File %s does not exist." msgstr "" -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, c-format msgid "" "File '%s' already exists.\n" @@ -1548,21 +1581,21 @@ msgstr "" msgid "File couldn't be loaded." msgstr "" -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "" -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "" @@ -1574,15 +1607,15 @@ msgstr "" msgid "Folio, 8 1/2 x 13 in" msgstr "" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "" @@ -1592,7 +1625,7 @@ msgstr "" msgid "Found " msgstr "" -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "" @@ -1637,39 +1670,31 @@ msgstr "" msgid "GetUnusedColour:: No Unused Color in image " msgstr "" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "" @@ -1678,28 +1703,23 @@ msgstr "" msgid "HTML anchor %s does not exist." msgstr "" -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "" -#: ../src/html/htmlhelp.cpp:87 -#, c-format -msgid "Help : %s" -msgstr "" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "" @@ -1707,7 +1727,7 @@ msgstr "" msgid "Help Index" msgstr "" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "" @@ -1716,26 +1736,26 @@ msgstr "" msgid "Help: %s" msgstr "" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 msgid "ICO: Error in reading mask DIB." msgstr "" -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 msgid "ICO: Error writing the image file!" msgstr "" -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 msgid "ICO: Invalid icon index." msgstr "" @@ -1765,11 +1785,11 @@ msgstr "" msgid "Ill-formed resource file syntax." msgstr "" -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "" -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "" @@ -1777,12 +1797,12 @@ msgstr "" msgid "Image and Mask have different sizes" msgstr "" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "" -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1792,26 +1812,26 @@ msgstr "" msgid "Impossible to get child process input" msgstr "" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, c-format msgid "Impossible to get permissions for file '%s'" msgstr "" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, c-format msgid "Impossible to overwrite the file '%s'" msgstr "" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 msgid "Indian (ISO-8859-12)" msgstr "" @@ -1819,17 +1839,17 @@ msgstr "" msgid "Invalid TIFF image index." msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, c-format msgid "Invalid display mode specification '%s'." msgstr "" -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, c-format msgid "Invalid geometry specification '%s'" msgstr "" @@ -1844,7 +1864,7 @@ msgstr "" msgid "Invalid regular expression '%s': %s" msgstr "" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "" @@ -1860,7 +1880,7 @@ msgstr "" msgid "JPEG: Couldn't save image." msgstr "" -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "" @@ -1888,17 +1908,17 @@ msgstr "" msgid "Letter, 8 1/2 x 11 in" msgstr "" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "" -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 msgid "Load file" msgstr "" @@ -1933,7 +1953,7 @@ msgstr "" msgid "Ma&ximize" msgstr "" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "" @@ -1955,7 +1975,7 @@ msgstr "" msgid "Mi&nimize" msgstr "" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "" @@ -1965,7 +1985,7 @@ msgstr "" msgid "Mode %ix%i-%i not available." msgstr "" -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "" @@ -1973,24 +1993,24 @@ msgstr "" msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "" -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "" @@ -2012,7 +2032,7 @@ msgstr "" msgid "No entries found." msgstr "" -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2021,7 +2041,7 @@ msgid "" "one)?" msgstr "" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2029,40 +2049,39 @@ msgid "" "(otherwise the text in this encoding will not be shown correctly)?" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "" -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "" -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "" -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "" @@ -2070,35 +2089,35 @@ msgstr "" msgid "Note, 8 1/2 x 11 in" msgstr "" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "" -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "" -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "" -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "" @@ -2147,12 +2166,12 @@ msgstr "" msgid "PNM: File seems truncated." msgstr "" -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "" @@ -2175,11 +2194,11 @@ msgstr "" msgid "Paper size" msgstr "" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "" @@ -2187,15 +2206,15 @@ msgstr "" msgid "Please choose a valid font." msgstr "" -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "" -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2203,7 +2222,7 @@ msgid "" "or this program won't operate correctly." msgstr "" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "" @@ -2215,15 +2234,11 @@ msgstr "" msgid "PostScript file" msgstr "" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "" @@ -2231,11 +2246,11 @@ msgstr "" msgid "Print" msgstr "" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "" @@ -2255,7 +2270,7 @@ msgstr "" msgid "Print spooling" msgstr "" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "" @@ -2263,7 +2278,7 @@ msgstr "" msgid "Print to File" msgstr "" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "" @@ -2283,20 +2298,20 @@ msgstr "" msgid "Printer..." msgstr "" -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 msgid "Printing " msgstr "" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "" -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "" @@ -2317,7 +2332,7 @@ msgstr "" msgid "Read error on file '%s'" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -2345,10 +2360,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "" -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "" @@ -2357,7 +2368,7 @@ msgstr "" msgid "Remaining time : " msgstr "" -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "" @@ -2369,7 +2380,7 @@ msgstr "" msgid "Replace with:" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "" @@ -2377,21 +2388,21 @@ msgstr "" msgid "Right margin (mm):" msgstr "" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "" -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 msgid "Save file" msgstr "" @@ -2399,20 +2410,15 @@ msgstr "" msgid "Save log contents to file" msgstr "" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2426,20 +2432,15 @@ msgstr "" msgid "Search for:" msgstr "" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "" -#: ../src/html/htmlhelp.cpp:593 -msgid "Search!" -msgstr "" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "" -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "" @@ -2448,24 +2449,28 @@ msgstr "" msgid "Seek error on file '%s'" msgstr "" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +msgid "Select &All" +msgstr "" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "" @@ -2473,15 +2478,15 @@ msgstr "" msgid "Setup..." msgstr "" -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "" -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "" @@ -2489,36 +2494,36 @@ msgstr "" msgid "Show hidden directories" msgstr "" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "" -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "" -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "" -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "" @@ -2530,12 +2535,12 @@ msgstr "" msgid "Status: " msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "" @@ -2564,15 +2569,15 @@ msgstr "" msgid "Tabloid, 11 x 17 in" msgstr "" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "" @@ -2580,7 +2585,7 @@ msgstr "" msgid "The FTP server doesn't support passive mode." msgstr "" -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2588,7 +2593,7 @@ msgid "" "[Cancel] if it cannot be replaced" msgstr "" -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "" @@ -2600,19 +2605,19 @@ msgid "" "Create it now?" msgstr "" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" "It has been removed from the most recently used files list." msgstr "" -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "" @@ -2621,19 +2626,19 @@ msgstr "" msgid "The text couldn't be saved." msgstr "" -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "" -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " "tooold, please upgrade (the following required function is missing: %s)." msgstr "" -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -2644,7 +2649,7 @@ msgid "" "storage" msgstr "" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "" @@ -2654,7 +2659,7 @@ msgid "" "local storage" msgstr "" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "" @@ -2666,15 +2671,15 @@ msgstr "" msgid "Tile &Vertically" msgstr "" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "" @@ -2695,7 +2700,7 @@ msgstr "" msgid "Trying to solve a NULL hostname: giving up" msgstr "" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "" @@ -2708,7 +2713,7 @@ msgstr "" msgid "Unable to open requested HTML document: %s" msgstr "" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "" @@ -2725,45 +2730,45 @@ msgstr "" msgid "Unexpected end of file whilst parsing resource." msgstr "" -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "" -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -2782,12 +2787,12 @@ msgstr "" msgid "Unrecognized style %s whilst parsing resource." msgstr "" -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "" -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "" @@ -2796,7 +2801,7 @@ msgstr "" msgid "Up" msgstr "" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "" @@ -2805,23 +2810,23 @@ msgstr "" msgid "Validation conflict" msgstr "" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "" @@ -2829,15 +2834,15 @@ msgstr "" msgid "Warning: " msgstr "" -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "" -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 msgid "Western European (ISO-8859-1)" msgstr "" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 msgid "Western European with Euro (ISO-8859-15)" msgstr "" @@ -2845,7 +2850,7 @@ msgstr "" msgid "Whole word" msgstr "" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "" @@ -2853,68 +2858,68 @@ msgstr "" msgid "Win32 theme" msgstr "" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 msgid "Windows Central European (CP 1250)" msgstr "" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 msgid "Windows Chinese Traditional (CP 950)" msgstr "" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 msgid "Windows Japanese (CP 932)" msgstr "" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 msgid "Windows Korean (CP 949)" msgstr "" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 msgid "Windows Western European (CP 1252)" msgstr "" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "" @@ -2937,26 +2942,22 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "" @@ -2965,19 +2966,19 @@ msgstr "" msgid "You cannot add a new directory to this section." msgstr "" -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "" -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -2985,46 +2986,46 @@ msgid "" "was passed to a DDEML function." msgstr "" -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "" -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "" -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "" -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "" -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" "terminated before completing a transaction." msgstr "" -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "" @@ -3032,7 +3033,7 @@ msgstr "" msgid "alt" msgstr "" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3040,22 +3041,22 @@ msgid "" "attempted to perform server transactions." msgstr "" -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "" -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "" -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" "the transaction identifier for that callback is no longer valid." msgstr "" -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "" @@ -3064,11 +3065,11 @@ msgstr "" msgid "binary" msgstr "" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 msgid "bold" msgstr "" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 msgid "bold " msgstr "" @@ -3077,32 +3078,32 @@ msgstr "" msgid "can't close file '%s'" msgstr "" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "" @@ -3111,55 +3112,55 @@ msgstr "" msgid "can't find user's HOME, using current directory." msgstr "" -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "" -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "" -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "" -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "" @@ -3169,12 +3170,12 @@ msgstr "" msgid "can't write buffer '%s' to disk." msgstr "" -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "" @@ -3187,32 +3188,32 @@ msgstr "" msgid "ctrl" msgstr "" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 msgid "default" msgstr "" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "" @@ -3221,64 +3222,69 @@ msgstr "" msgid "failed to flush the file '%s'" msgstr "" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "" -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "" -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "" -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "" -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "" -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "" @@ -3286,19 +3292,15 @@ msgstr "" msgid "invalid message box return value" msgstr "" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 msgid "italic" msgstr "" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 msgid "light" msgstr "" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 msgid "light " msgstr "" @@ -3312,59 +3314,55 @@ msgstr "" msgid "looking for catalog '%s' in path '%s'." msgstr "" -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "" -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "" @@ -3372,80 +3370,76 @@ msgstr "" msgid "shift" msgstr "" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "" -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 msgid "underlined" msgstr "" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 msgid "underlined " msgstr "" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "" -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "" @@ -3453,12 +3447,16 @@ msgstr "" msgid "unknown error" msgstr "" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "" -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +msgid "unknown line terminator" +msgstr "" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "" @@ -3467,11 +3465,11 @@ msgstr "" msgid "unknown-%d" msgstr "" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "" @@ -3481,15 +3479,7 @@ msgstr "" msgid "using catalog '%s' from '%s'." msgstr "" -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "writing" msgstr "" @@ -3498,19 +3488,15 @@ msgstr "" msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "" -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "" @@ -3519,15 +3505,15 @@ msgstr "" msgid "wxSocket: unknown event!." msgstr "" -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "" -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 msgid "wxWindows could not open display. Exiting." msgstr "" -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "" diff --git a/locale/zh.po b/locale/zh.po index 4f43f92c28..313b447cae 100644 --- a/locale/zh.po +++ b/locale/zh.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: wxWindows-2.2.2\n" -"POT-Creation-Date: 2002-08-21 16:39+0200\n" +"POT-Creation-Date: 2002-12-13 21:43+0100\n" "PO-Revision-Date: 2000-11-09 16:09Öйú±ê׼ʱ¼ä\n" "Last-Translator: mrfx \n" "Language-Team: wxWindows tranlators \n" @@ -14,18 +14,14 @@ msgstr "" msgid " (error %ld: %s)" msgstr " (´íÎó %ld: %s)" -#: ../src/common/docview.cpp:1240 +#: ../src/common/docview.cpp:1242 msgid " - " msgstr " - " -#: ../src/html/htmprint.cpp:502 +#: ../src/html/htmprint.cpp:497 msgid " Preview" msgstr "Ô¤ÀÀ" -#: ../src/generic/filedlgg.cpp:476 -msgid " bytes " -msgstr "×Ö½Ú" - #: ../src/common/paper.cpp:124 msgid "#10 Envelope, 4 1/8 x 9 1/2 in" msgstr "#10 Envelope, 4 1/8 x 9 1/2 in" @@ -53,23 +49,23 @@ msgstr "#9 msgid "#define %s must be an integer." msgstr "#Ëù¶¨ÒåµÄ %s ±ØÐëÊÇÕûÊý." -#: ../src/common/prntbase.cpp:376 +#: ../src/common/prntbase.cpp:375 #, c-format msgid "%d" msgstr "" -#: ../src/common/prntbase.cpp:374 +#: ../src/common/prntbase.cpp:373 #, fuzzy, c-format msgid "%d...%d" msgstr ".." -#: ../src/html/helpfrm.cpp:772 ../src/html/helpfrm.cpp:773 -#: ../src/html/helpfrm.cpp:1376 ../src/html/helpfrm.cpp:1406 +#: ../src/html/helpfrm.cpp:777 ../src/html/helpfrm.cpp:778 +#: ../src/html/helpfrm.cpp:1404 ../src/html/helpfrm.cpp:1434 #, c-format msgid "%i of %i" msgstr "%i of %i" -#: ../src/common/cmdline.cpp:813 +#: ../src/common/cmdline.cpp:814 #, c-format msgid "%s (or %s)" msgstr "%s (»ò %s)" @@ -89,6 +85,11 @@ msgstr "%s msgid "%s Warning" msgstr "%s ¾¯¸æ" +#: ../src/common/msgout.cpp:108 +#, c-format +msgid "%s message" +msgstr "" + #: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2366 #, c-format msgid "%s not a bitmap resource specification." @@ -110,7 +111,7 @@ msgstr "%s: msgid "&Arrange Icons" msgstr "" -#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:260 +#: ../src/generic/fdrepdlg.cpp:170 ../src/generic/wizard.cpp:271 #, fuzzy msgid "&Cancel" msgstr "È¡Ïû" @@ -119,10 +120,19 @@ msgstr "È¡ msgid "&Cascade" msgstr "" -#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:171 +#: ../src/generic/logg.cpp:491 ../src/generic/tipdlg.cpp:210 msgid "&Close" msgstr "¹Ø±Õ[&C]" +#: ../src/msw/textctrl.cpp:1681 +msgid "&Copy" +msgstr "" + +#: ../src/msw/textctrl.cpp:1683 +#, fuzzy +msgid "&Delete" +msgstr "µç´«´ò×Ö»ú" + #: ../src/generic/logg.cpp:695 msgid "&Details" msgstr "ϸ½Ú[&D]" @@ -132,11 +142,11 @@ msgstr "ϸ msgid "&Find" msgstr "²éÕÒ" -#: ../src/generic/wizard.cpp:396 +#: ../src/generic/wizard.cpp:412 msgid "&Finish" msgstr "Íê³É[&F]" -#: ../src/generic/wizard.cpp:249 +#: ../src/generic/wizard.cpp:258 #, fuzzy msgid "&Help" msgstr "°ïÖú" @@ -149,25 +159,31 @@ msgstr " msgid "&Move" msgstr "" -#: ../src/msw/mdi.cpp:193 +#: ../src/generic/mdig.cpp:115 ../src/msw/mdi.cpp:193 #, fuzzy msgid "&Next" msgstr "ÏÂÒ»¸ö[&N] >" -#: ../src/generic/wizard.cpp:257 ../src/generic/wizard.cpp:398 +#: ../src/generic/wizard.cpp:268 ../src/generic/wizard.cpp:414 msgid "&Next >" msgstr "ÏÂÒ»¸ö[&N] >" -#: ../src/generic/tipdlg.cpp:176 +#: ../src/generic/tipdlg.cpp:215 msgid "&Next Tip" msgstr "ÏÂÒ»¼¼ÇÉ[&N]" -#: ../src/msw/mdi.cpp:194 +#: ../src/msw/textctrl.cpp:1682 +#, fuzzy +msgid "&Paste" +msgstr "ÈÕÆÚ" + +#: ../src/generic/mdig.cpp:116 ../src/msw/mdi.cpp:194 #, fuzzy msgid "&Previous" msgstr "ǰҳ" #: ../src/common/cmdproc.cpp:261 ../src/common/cmdproc.cpp:272 +#: ../src/msw/textctrl.cpp:1678 msgid "&Redo" msgstr "ÖØ¸´[&R]" @@ -188,7 +204,7 @@ msgstr " msgid "&Save..." msgstr "±£´æ[&S]..." -#: ../src/generic/tipdlg.cpp:173 +#: ../src/generic/tipdlg.cpp:212 msgid "&Show tips at startup" msgstr "Æô¶¯Ê±ÏÔʾ¼¼ÇÉ[&S]" @@ -197,7 +213,7 @@ msgstr " msgid "&Size" msgstr "´óС" -#: ../src/common/cmdproc.cpp:267 +#: ../src/common/cmdproc.cpp:267 ../src/msw/textctrl.cpp:1677 msgid "&Undo" msgstr "»Ö¸´[&U]" @@ -205,11 +221,13 @@ msgstr " msgid "&Undo " msgstr "»Ö¸´[&U]" -#: ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 ../src/msw/mdi.cpp:1360 +#: ../src/generic/mdig.cpp:295 ../src/generic/mdig.cpp:311 +#: ../src/generic/mdig.cpp:315 ../src/msw/mdi.cpp:1328 ../src/msw/mdi.cpp:1335 +#: ../src/msw/mdi.cpp:1360 msgid "&Window" msgstr "´°¿Ú[&W]" -#: ../src/common/config.cpp:394 ../src/msw/regconf.cpp:264 +#: ../src/common/config.cpp:410 ../src/msw/regconf.cpp:264 #, c-format msgid "'%s' has extra '..', ignored." msgstr "'%s' ÓжîÍâµÄ '..', ºöÂÔÖ®." @@ -220,7 +238,7 @@ msgstr "'%s' msgid "'%s' is invalid" msgstr "'%s' ÊÇÎÞЧµÄ" -#: ../src/common/cmdline.cpp:733 +#: ../src/common/cmdline.cpp:734 #, c-format msgid "'%s' is not a correct numeric value for option '%s'." msgstr "'%s' ²»ÊÇÆ¥ÅäÑ¡Ïî '%s'µÄÕýÈ·Êý×ÖÖµ." @@ -255,12 +273,12 @@ msgstr "'%s' Ó¦ msgid "'%s' should only contain alphabetic or numeric characters." msgstr "'%s' Ó¦½ö°üº¬×Öĸ»òÊý×Ö×Ö·û." -#: ../src/html/helpfrm.cpp:709 ../src/html/htmlhelp.cpp:638 +#: ../src/html/helpfrm.cpp:714 msgid "(Help)" msgstr "(°ïÖú)" -#: ../src/html/helpfrm.cpp:310 ../src/html/helpfrm.cpp:840 -#: ../src/html/helpfrm.cpp:1433 +#: ../src/html/helpfrm.cpp:315 ../src/html/helpfrm.cpp:845 +#: ../src/html/helpfrm.cpp:1461 msgid "(bookmarks)" msgstr "(ÊéÇ©)" @@ -274,11 +292,11 @@ msgstr "" ", ÆÚÍû static, #include »ò #define\n" "ͬʱ¶Ô×ÊÔ´½øÐÐÓï·¨·ÖÎö." -#: ../src/generic/dirctrlg.cpp:698 ../src/generic/filedlgg.cpp:929 +#: ../src/generic/dirctrlg.cpp:700 ../src/generic/filedlgg.cpp:938 msgid "." msgstr "." -#: ../src/generic/dirctrlg.cpp:699 ../src/generic/filedlgg.cpp:930 +#: ../src/generic/dirctrlg.cpp:701 ../src/generic/filedlgg.cpp:939 msgid ".." msgstr ".." @@ -294,51 +312,44 @@ msgstr "11 x 17 Ó¢ msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in" msgstr "6 3/4 ÐÅ·â, 3 5/8 x 6 1/2 Ó¢´ç" -#: ../src/html/htmprint.cpp:282 +#: ../src/html/htmprint.cpp:279 msgid ": file does not exist!" msgstr ": Îļþ²»´æÔÚ!" -#: ../src/common/fontmap.cpp:626 +#: ../src/common/fontmap.cpp:670 msgid ": unknown charset" msgstr ": δ֪×Ö·û¼¯" -#: ../src/common/fontmap.cpp:857 +#: ../src/common/fontmap.cpp:898 msgid ": unknown encoding" msgstr ": δ֪±àÂë" -#: ../src/generic/wizard.cpp:254 +#: ../src/generic/wizard.cpp:263 msgid "< &Back" msgstr "< ·µ»Ø[&B]" -#: ../src/generic/filedlgg.cpp:504 +#: ../src/generic/filedlgg.cpp:534 msgid "

    " msgstr "<Ŀ¼>" -#: ../src/generic/filedlgg.cpp:471 -msgid " " -msgstr "<Ŀ¼> " - -#: ../src/generic/filedlgg.cpp:505 +#: ../src/generic/filedlgg.cpp:536 msgid "" msgstr "<Á¬½Ó>" -#: ../src/generic/filedlgg.cpp:472 -msgid " " -msgstr "<Á¬½Ó>" - -#: ../src/html/helpfrm.cpp:992 +#: ../src/html/helpfrm.cpp:994 +#, fuzzy msgid "" -"Normal face
    (and underlined. Italic face. " -"Bold face. Bold italic face.
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"
    Normal face
    (and underlined. Italic " +"face. Bold face. Bold italic face.
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    Fixed size face.
    bold " +"italic bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4

    " msgstr "" "Normal face
    (and underlined. Italic face. " "Bold face. Bold italic face.
    font size " @@ -346,11 +357,11 @@ msgstr "" "+0
    font size +1
    font size " "+2
    font size +3
    font size " "+4

    Fixed size face.
    bold italic " -"bold italic underlined
    font size " -"-2
    font size -1
    font size " -"+0
    font size +1
    font size " -"+2
    font size +3
    font size " -"+4
    " +"bold italic underlined
    font size -2
    font size -1
    font size +0
    font size +1
    font size +2
    font size +3
    font size +4" #: ../src/common/paper.cpp:113 msgid "A3 sheet, 297 x 420 mm" @@ -376,7 +387,7 @@ msgstr "ABCDEFGabcdefg12345" msgid "ASCII" msgstr "" -#: ../src/html/helpfrm.cpp:323 +#: ../src/html/helpfrm.cpp:328 msgid "Add current page to bookmarks" msgstr "°Ñµ±Ç°Ò³¼Óµ½ÊéÇ©ÖÐ" @@ -393,10 +404,15 @@ msgstr " msgid "All" msgstr "ËùÓÐ" -#: ../src/generic/filedlgg.cpp:1052 +#: ../include/wx/defs.h:1806 ../src/generic/filedlgg.cpp:1062 msgid "All files (*)|*" msgstr "ËùÓÐÎļþ (*)|*" +#: ../include/wx/defs.h:1803 +#, fuzzy +msgid "All files (*.*)|*.*" +msgstr "ËùÓÐÎļþ (*)|*" + #: ../src/unix/dialup.cpp:362 msgid "Already dialling ISP." msgstr "ÒѾ­²¦½ÓISP." @@ -406,7 +422,7 @@ msgstr " msgid "Append log to file '%s' (choosing [No] will overwrite it)?" msgstr "°ÑÈÕÖ¾Ìí¼Óµ½Îļþ '%s' (Ñ¡Ôñ [·ñ] ½«¸²Ð´¸ÃÎļþ)?" -#: ../src/common/fontmap.cpp:117 +#: ../src/common/fontmap.cpp:118 msgid "Arabic (ISO-8859-6)" msgstr "°¢À­²®Óï (ISO-8859-6)" @@ -430,7 +446,7 @@ msgstr "B5 msgid "B6 Envelope, 176 x 125 mm" msgstr "B6 ÐÅ·â, 176 x 125 ºÁÃ×" -#: ../src/common/imagbmp.cpp:467 ../src/common/imagbmp.cpp:483 +#: ../src/common/imagbmp.cpp:468 ../src/common/imagbmp.cpp:484 #, fuzzy msgid "BMP: Couldn't allocate memory." msgstr "PNM: ²»ÄÜ·ÖÅäÄÚ´æ." @@ -462,15 +478,15 @@ msgstr "BMP: msgid "BMP: wxImage doesn't have own wxPalette." msgstr "" -#: ../src/common/dlgcmn.cpp:170 +#: ../src/common/dlgcmn.cpp:233 msgid "Backward" msgstr "Ïòºó" -#: ../src/common/fontmap.cpp:124 +#: ../src/common/fontmap.cpp:125 msgid "Baltic (ISO-8859-13)" msgstr "²¨Â޵ĺ£Óï (ISO-8859-13)" -#: ../src/common/fontmap.cpp:115 +#: ../src/common/fontmap.cpp:116 msgid "Baltic (old) (ISO-8859-4)" msgstr "²¨Â޵ĺ£Óï (¾ÉµÄ) (ISO-8859-4)" @@ -479,7 +495,7 @@ msgstr " msgid "Bitmap resource specification %s not found." msgstr "ÕÒ²»µ½Î»Í¼¹æ¸ñ %s." -#: ../src/generic/fontdlgg.cpp:231 +#: ../src/generic/fontdlgg.cpp:232 msgid "Bold" msgstr "´ÖÌå" @@ -515,12 +531,12 @@ msgstr "C6 msgid "C65 Envelope, 114 x 229 mm" msgstr "C65 ÐÅ·â, 114 x 229 ºÁÃ×" -#: ../src/common/filefn.cpp:1358 +#: ../src/common/filefn.cpp:1369 #, fuzzy, c-format msgid "Can not enumerate files '%s'" msgstr "²»ÄÜö¾ÙĿ¼ '%s'ÖеÄÎļþ" -#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:236 +#: ../src/msw/dir.cpp:296 ../src/unix/dir.cpp:232 #, c-format msgid "Can not enumerate files in directory '%s'" msgstr "²»ÄÜö¾ÙĿ¼ '%s'ÖеÄÎļþ" @@ -547,7 +563,7 @@ msgstr " msgid "Can't &Undo " msgstr "²»Äָܻ´[&U]" -#: ../src/common/image.cpp:1289 +#: ../src/common/image.cpp:1319 #, c-format msgid "Can't check image format of file '%s': file does not exist." msgstr "²»Äܼì²éÎļþ¸ñʽ '%s': Îļþ²»´æÔÚ." @@ -562,17 +578,17 @@ msgstr " msgid "Can't copy values of unsupported type %d." msgstr "²»ÄÜ¿½±´²»Ö§³ÖµÄÀàÐÍ %d µÄÖµ." -#: ../src/msw/toplevel.cpp:295 +#: ../src/msw/toplevel.cpp:315 #, fuzzy msgid "Can't create dialog using memory template" msgstr "²»ÄÜ´´½¨Îļþ '%s'" -#: ../src/os2/toplevel.cpp:331 +#: ../src/os2/toplevel.cpp:369 #, fuzzy, c-format msgid "Can't create dialog using template '%ul'" msgstr "²»ÄÜ´´½¨Îļþ '%s'" -#: ../src/msw/listctrl.cpp:319 +#: ../src/msw/listctrl.cpp:334 msgid "Can't create list control window, check that comctl32.dll is installed." msgstr "²»ÄÜ´´½¨ÁÐ±í¿Ø¼þ´°¿Ú, ¼ì²écomctl32.dllÊÇ·ñÒѰ²×°." @@ -585,7 +601,7 @@ msgstr " msgid "Can't create thread" msgstr "²»ÄÜ´´½¨½ø³Ì" -#: ../src/msw/window.cpp:2989 +#: ../src/msw/window.cpp:3062 #, fuzzy, c-format msgid "Can't create window of class %s" msgstr "²»ÄÜ´´½¨Îļþ '%s'" @@ -673,62 +689,61 @@ msgstr " msgid "Can't set value of '%s'" msgstr "²»ÄÜÉèÖà '%s'µÄÖµ" -#: ../src/common/dlgcmn.cpp:183 ../src/generic/dirdlgg.cpp:153 -#: ../src/generic/filedlgg.cpp:1166 ../src/generic/filedlgg.cpp:1185 -#: ../src/generic/fontdlgg.cpp:254 ../src/generic/prntdlgg.cpp:453 +#: ../src/common/dlgcmn.cpp:246 ../src/generic/dirdlgg.cpp:153 +#: ../src/generic/filedlgg.cpp:1181 ../src/generic/filedlgg.cpp:1200 +#: ../src/generic/fontdlgg.cpp:255 ../src/generic/prntdlgg.cpp:453 #: ../src/generic/progdlgg.cpp:211 ../src/generic/proplist.cpp:511 #: ../src/gtk/filedlg.cpp:173 ../src/gtk/fontdlg.cpp:144 -#: ../src/html/helpfrm.cpp:974 ../src/html/htmlhelp.cpp:434 -#: ../src/motif/msgdlg.cpp:182 +#: ../src/html/helpfrm.cpp:976 ../src/motif/msgdlg.cpp:182 msgid "Cancel" msgstr "È¡Ïû" -#: ../contrib/src/xrc/xmlres.cpp:893 ../contrib/src/xrc/xmlres.cpp:934 +#: ../contrib/src/xrc/xmlres.cpp:969 ../contrib/src/xrc/xmlres.cpp:1010 msgid "Cannot convert dialog units: dialog unknown." msgstr "" -#: ../src/common/strconv.cpp:929 +#: ../src/common/strconv.cpp:963 #, fuzzy, c-format msgid "Cannot convert from encoding '%s'!" msgstr "λÖñàÂë (%d)" -#: ../src/msw/dialup.cpp:497 +#: ../src/msw/dialup.cpp:499 #, c-format msgid "Cannot find active dialup connection: %s" msgstr "ÕÒ²»µ½»î¶¯µÄ²¦ºÅÁ¬½Ó: %s" -#: ../contrib/src/xrc/xmlres.cpp:224 +#: ../contrib/src/xrc/xmlres.cpp:243 #, fuzzy, c-format msgid "Cannot find container for unknown control '%s'." msgstr "ÕÒ²»µ½»î¶¯µÄ²¦ºÅÁ¬½Ó: %s" -#: ../contrib/src/xrc/xmlres.cpp:948 +#: ../contrib/src/xrc/xmlres.cpp:1024 #, fuzzy, c-format msgid "Cannot find font node '%s'." msgstr "²»ÄÜ´ò¿ª URL '%s'" -#: ../src/msw/dialup.cpp:811 +#: ../src/msw/dialup.cpp:813 msgid "Cannot find the location of address book file" msgstr "ÕÒ²»µ½µØÖ·²¾ÎļþµÄλÖÃ" -#: ../src/unix/threadpsx.cpp:1068 +#: ../src/unix/threadpsx.cpp:1096 #, c-format msgid "Cannot get priority range for scheduling policy %d." msgstr "²»ÄÜ»ñµÃµ÷¶È²ßÂÔ %d µÄÓÅÏȼ¶·¶Î§." -#: ../src/unix/utilsunx.cpp:854 +#: ../src/unix/utilsunx.cpp:865 msgid "Cannot get the hostname" msgstr "²»ÄÜ»ñµÃÖ÷»úÃû" -#: ../src/unix/utilsunx.cpp:890 +#: ../src/unix/utilsunx.cpp:901 msgid "Cannot get the official hostname" msgstr "²»ÄÜ»ñµÃÕýʽµÄÖ÷»úÃû" -#: ../src/msw/dialup.cpp:905 +#: ../src/msw/dialup.cpp:907 msgid "Cannot hang up - no active dialup connection." msgstr "²»ÄÜ¹ÒÆð - ûÓлµÄ²¦ºÅÁ¬½Ó." -#: ../src/msw/app.cpp:249 +#: ../src/msw/app.cpp:250 msgid "Cannot initialize OLE" msgstr "²»Äܳõʼ»¯ OLE" @@ -737,32 +752,32 @@ msgstr " msgid "Cannot initialize SciTech MGL!" msgstr "²»Äܳõʼ»¯ OLE" -#: ../src/mgl/window.cpp:546 +#: ../src/mgl/window.cpp:547 #, fuzzy msgid "Cannot initialize display." msgstr "²»Äܳõʼ»¯ OLE" -#: ../src/msw/volume.cpp:627 +#: ../src/msw/volume.cpp:634 #, fuzzy, c-format msgid "Cannot load icon from '%s'." msgstr "²»ÄÜö¾ÙĿ¼ '%s'ÖеÄÎļþ" -#: ../contrib/src/xrc/xmlres.cpp:337 +#: ../contrib/src/xrc/xmlres.cpp:356 #, fuzzy, c-format msgid "Cannot load resources from file '%s'." msgstr "ÕÒ²»µ½×ÊÔ´°üº¬Îļþ %s." -#: ../src/html/htmlfilt.cpp:171 +#: ../src/html/htmlfilt.cpp:164 #, c-format msgid "Cannot open HTML document: %s" msgstr "²»ÄÜ´ò¿ª HTML Îĵµ: %s" -#: ../src/html/helpdata.cpp:581 +#: ../src/html/helpdata.cpp:595 #, c-format msgid "Cannot open HTML help book: %s" msgstr "²»ÄÜ´ò¿ª HTML °ïÖú: %s" -#: ../src/generic/helpext.cpp:101 +#: ../src/generic/helpext.cpp:100 #, c-format msgid "Cannot open URL '%s'" msgstr "²»ÄÜ´ò¿ª URL '%s'" @@ -772,62 +787,62 @@ msgstr " msgid "Cannot open contents file: %s" msgstr "²»ÄÜ´ò¿ªÄ¿Â¼Îļþ: %s" -#: ../contrib/src/xrc/xmlres.cpp:311 +#: ../contrib/src/xrc/xmlres.cpp:330 #, fuzzy, c-format msgid "Cannot open file '%s'." msgstr "²»ÄÜ´ò¿ªÎļþ'%s'" -#: ../src/generic/dcpsg.cpp:1765 +#: ../src/generic/dcpsg.cpp:1719 msgid "Cannot open file for PostScript printing!" msgstr "²»ÄÜ´ò¿ªÎļþ½øÐÐPostScript´òÓ¡!" -#: ../src/html/helpdata.cpp:290 +#: ../src/html/helpdata.cpp:292 #, c-format msgid "Cannot open index file: %s" msgstr "²»ÄÜ´ò¿ªË÷ÒýÎļþ: %s" -#: ../contrib/src/xrc/xmlres.cpp:881 +#: ../contrib/src/xrc/xmlres.cpp:957 #, fuzzy, c-format msgid "Cannot parse coordinates from '%s'." msgstr "²»ÄÜ´ò¿ªÄ¿Â¼Îļþ: %s" -#: ../contrib/src/xrc/xmlres.cpp:922 +#: ../contrib/src/xrc/xmlres.cpp:998 #, fuzzy, c-format msgid "Cannot parse dimension from '%s'." msgstr "²»ÄÜö¾ÙĿ¼ '%s'ÖеÄÎļþ" -#: ../src/html/helpfrm.cpp:1265 +#: ../src/html/helpfrm.cpp:1293 msgid "Cannot print empty page." msgstr "²»ÄÜ´òÓ¡¿ÕÒ³Ãæ." -#: ../src/msw/volume.cpp:188 ../src/msw/volume.cpp:519 +#: ../src/msw/volume.cpp:195 ../src/msw/volume.cpp:526 #, fuzzy, c-format msgid "Cannot read typename from '%s'!" msgstr "²»ÄÜ´ò¿ªÄ¿Â¼Îļþ: %s" -#: ../src/unix/threadpsx.cpp:1049 +#: ../src/unix/threadpsx.cpp:1077 msgid "Cannot retrieve thread scheduling policy." msgstr "²»ÄÜÕÒ»ØÏ̵߳÷¶È²ßÂÔ." -#: ../src/unix/threadpsx.cpp:706 +#: ../src/unix/threadpsx.cpp:710 msgid "Cannot start thread: error writing TLS" msgstr "²»ÄÜÆô¶¯Ïß³Ì: дTLS´íÎó" -#: ../src/html/helpfrm.cpp:406 +#: ../src/html/helpfrm.cpp:411 msgid "Case sensitive" msgstr "´óСдÃô¸Ð" -#: ../src/common/fontmap.cpp:125 +#: ../src/common/fontmap.cpp:126 #, fuzzy msgid "Celtic (ISO-8859-14)" msgstr "²¨Â޵ĺ£Óï (ISO-8859-13)" -#: ../src/common/fontmap.cpp:113 +#: ../src/common/fontmap.cpp:114 #, fuzzy msgid "Central European (ISO-8859-2)" msgstr "ÖÐÅ·Óïϵ (ISO-8859-2/Latin 2)" -#: ../src/msw/dialup.cpp:746 +#: ../src/msw/dialup.cpp:748 msgid "Choose ISP to dial" msgstr "Ñ¡ÔñISP½øÐв¦ºÅ" @@ -835,11 +850,16 @@ msgstr "Ñ¡ msgid "Choose font" msgstr "Ñ¡Ôñ×ÖÌå" +#: ../src/generic/mdig.cpp:112 +#, fuzzy +msgid "Cl&ose" +msgstr "¹Ø±Õ" + #: ../src/generic/logg.cpp:489 msgid "Clear the log contents" msgstr "Çå³ýÈÕÖ¾ÄÚÈÝ" -#: ../src/common/prntbase.cpp:429 ../src/generic/progdlgg.cpp:360 +#: ../src/common/prntbase.cpp:428 ../src/generic/progdlgg.cpp:358 #: ../src/generic/proplist.cpp:506 msgid "Close" msgstr "¹Ø±Õ" @@ -848,25 +868,30 @@ msgstr " msgid "Close\tAlt-F4" msgstr "" +#: ../src/generic/mdig.cpp:113 +#, fuzzy +msgid "Close All" +msgstr "¹Ø±Õ" + #: ../src/generic/logg.cpp:491 msgid "Close this window" msgstr "¹Ø±Õ´°¿Ú" -#: ../src/generic/dirctrlg.cpp:547 +#: ../src/generic/dirctrlg.cpp:549 #, fuzzy msgid "Computer" msgstr "¼ÆËã»ú" -#: ../src/common/fileconf.cpp:872 +#: ../src/common/fileconf.cpp:902 #, c-format msgid "Config entry name cannot start with '%c'." msgstr "ÅäÖÃÌõÄ¿Ãû²»ÄÜÒÔ '%c'¿ªÍ·." -#: ../src/generic/filedlgg.cpp:1357 ../src/gtk/filedlg.cpp:72 +#: ../src/generic/filedlgg.cpp:1411 ../src/gtk/filedlg.cpp:72 msgid "Confirm" msgstr "È·ÈÏ" -#: ../src/msw/mimetype.cpp:686 +#: ../src/msw/mimetype.cpp:689 msgid "Confirm registry update" msgstr "" @@ -874,13 +899,13 @@ msgstr "" msgid "Connecting..." msgstr "Á¬½Ó..." -#: ../src/html/helpfrm.cpp:346 ../src/html/htmlhelp.cpp:565 +#: ../src/html/helpfrm.cpp:351 msgid "Contents" msgstr "Ŀ¼" -#: ../src/common/strconv.cpp:596 +#: ../src/common/strconv.cpp:616 #, c-format -msgid "Convertion to charset '%s' doesn't work." +msgid "Conversion to charset '%s' doesn't work." msgstr "" #: ../src/generic/prntdlgg.cpp:193 @@ -897,7 +922,7 @@ msgstr " msgid "Could not find tab for id" msgstr "ÕÒ²»µ½idµÄ±êÇ©" -#: ../src/msw/textctrl.cpp:1859 +#: ../src/msw/textctrl.cpp:2050 #, c-format msgid "Could not load Rich Edit DLL '%s'" msgstr "²»ÄÜ×°ÔØ Rich Edit DLL '%s'" @@ -920,19 +945,19 @@ msgstr "" "²»ÄܽâÎö²Ëµ¥id '%s'. ÓÃ(·ÇÁã)ÕûÊý´úÌæ\n" "»ò Ìṩ #define (ÏêϸÐÅÏ¢¼ûÊÖ²á)" -#: ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:805 msgid "Could not start document preview." msgstr "²»ÄÜÆô¶¯ÎĵµÔ¤ÀÀ." -#: ../src/generic/printps.cpp:197 ../src/msw/printwin.cpp:252 +#: ../src/generic/printps.cpp:198 ../src/msw/printwin.cpp:252 msgid "Could not start printing." msgstr "²»ÄÜÆô¶¯´òÓ¡." -#: ../src/common/wincmn.cpp:1148 +#: ../src/common/wincmn.cpp:1167 msgid "Could not transfer data to window" msgstr "²»ÄܰÑÊý¾Ýתµ½´°¿Ú" -#: ../src/msw/dragimag.cpp:148 ../src/msw/dragimag.cpp:184 +#: ../src/msw/dragimag.cpp:158 ../src/msw/dragimag.cpp:194 #: ../src/msw/imaglist.cpp:152 ../src/msw/imaglist.cpp:174 #: ../src/msw/imaglist.cpp:187 msgid "Couldn't add an image to the image list." @@ -947,7 +972,7 @@ msgstr " msgid "Couldn't create cursor." msgstr "²»ÄÜ´´½¨¼ÆÊ±Æ÷" -#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:295 +#: ../src/common/dynlib.cpp:347 ../src/common/dynload.cpp:299 #, c-format msgid "Couldn't find symbol '%s' in a dynamic library" msgstr "ÔÚ¶¯Ì¬Á¬½Ó¿âÖÐÕÒ²»µ½·ûºÅ'%s'" @@ -956,22 +981,22 @@ msgstr " msgid "Couldn't get the current thread pointer" msgstr "²»ÄÜ»ñµÃµ±Ç°Ïß³ÌÖ¸Õë" -#: ../src/common/imagpng.cpp:298 +#: ../src/common/imagpng.cpp:302 msgid "Couldn't load a PNG image - file is corrupted or not enough memory." msgstr "²»ÄÜ×°ÈëPNGͼÏñ - Îļþ±»ÆÆ»µ »ò ûÓÐ×ã¹»ÄÚ´æ." -#: ../src/msw/ole/dataobj.cpp:143 +#: ../src/msw/ole/dataobj.cpp:147 #, c-format msgid "Couldn't register clipboard format '%s'." msgstr "²»ÄÜ×¢²á¼ôÌù°å¸ñʽ '%s'." -#: ../src/msw/listctrl.cpp:722 +#: ../src/msw/listctrl.cpp:737 #, c-format msgid "Couldn't retrieve information about list control item %d." msgstr "²»ÄÜ»ñµÃÁÐ±í¿Ø¼þµÄÏî %dÐÅÏ¢." -#: ../src/common/imagpng.cpp:334 ../src/common/imagpng.cpp:345 -#: ../src/common/imagpng.cpp:353 +#: ../src/common/imagpng.cpp:338 ../src/common/imagpng.cpp:349 +#: ../src/common/imagpng.cpp:357 #, fuzzy msgid "Couldn't save PNG image." msgstr "JPEG: ²»Äܱ£´æÍ¼Ïñ." @@ -984,15 +1009,19 @@ msgstr " msgid "Create directory" msgstr "´´½¨Ä¿Â¼" -#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1119 +#: ../src/generic/dirdlgg.cpp:103 ../src/generic/filedlgg.cpp:1132 msgid "Create new directory" msgstr "´´½¨ÐÂĿ¼" -#: ../src/generic/filedlgg.cpp:1130 +#: ../src/msw/textctrl.cpp:1680 +msgid "Cu&t" +msgstr "" + +#: ../src/generic/filedlgg.cpp:1143 msgid "Current directory:" msgstr "µ±Ç°Ä¿Â¼:" -#: ../src/common/fontmap.cpp:116 +#: ../src/common/fontmap.cpp:117 #, fuzzy msgid "Cyrillic (ISO-8859-5)" msgstr "²¨Â޵ĺ£Óï (ISO-8859-13)" @@ -1001,36 +1030,31 @@ msgstr " msgid "D sheet, 22 x 34 in" msgstr "D Ö½ÕÅ, 22 x 34 Ó¢´ç" -#: ../src/msw/dde.cpp:587 +#: ../src/msw/dde.cpp:594 msgid "DDE poke request failed" msgstr "DDE poke ÇëÇóʧ°Ü" -#: ../src/common/imagbmp.cpp:618 -#, fuzzy -msgid "DIB Header: Cannot deal with 4bit encoded yet." -msgstr "BMP: »¹²»ÄÜ´¦Àí4λ±àÂë." - -#: ../src/common/imagbmp.cpp:836 +#: ../src/common/imagbmp.cpp:917 #, fuzzy msgid "DIB Header: Encoding doesn't match bitdepth." msgstr "BMP: ±àÂë²»ÄÜÆ¥ÅäÑÕɫλÊý." -#: ../src/common/imagbmp.cpp:798 +#: ../src/common/imagbmp.cpp:879 #, fuzzy msgid "DIB Header: Image height > 32767 pixels for file." msgstr "BMP: ¶ÔÓÚÎļþ£¬Í¼Ïñ¸ß¶È > 32767 ÏóËØ." -#: ../src/common/imagbmp.cpp:792 +#: ../src/common/imagbmp.cpp:873 #, fuzzy msgid "DIB Header: Image width > 32767 pixels for file." msgstr "BMP: ¶ÔÓÚÎļþ£¬Í¼Ïñ¿í¶È > 32767 ÏóËØ." -#: ../src/common/imagbmp.cpp:812 +#: ../src/common/imagbmp.cpp:893 #, fuzzy msgid "DIB Header: Unknown bitdepth in file." msgstr "BMP: ÎļþÖÐÑÕɫλÊýδ֪." -#: ../src/common/imagbmp.cpp:822 +#: ../src/common/imagbmp.cpp:903 #, fuzzy msgid "DIB Header: Unknown encoding in file." msgstr "BMP: Îļþ±àÂëδ֪." @@ -1039,15 +1063,15 @@ msgstr "BMP: msgid "DL Envelope, 110 x 220 mm" msgstr "DL ÐÅ·â, 110 x 220 ºÁÃ×" -#: ../src/generic/filedlgg.cpp:700 +#: ../src/generic/filedlgg.cpp:705 msgid "Date" msgstr "ÈÕÆÚ" -#: ../src/generic/fontdlgg.cpp:221 +#: ../src/generic/fontdlgg.cpp:222 msgid "Decorative" msgstr "ÐÞÊÎ" -#: ../src/common/fontmap.cpp:386 +#: ../src/common/fontmap.cpp:392 msgid "Default encoding" msgstr "" @@ -1056,22 +1080,22 @@ msgstr "" msgid "Deleted stale lock file '%s'." msgstr "²»ÄÜɾ³ý INI Îļþ '%s'" -#: ../src/msw/dialup.cpp:346 +#: ../src/msw/dialup.cpp:348 msgid "" "Dial up functions are unavailable because the remote access service (RAS) is " "not installed on this machine. Please install it." msgstr "ÓÉÓÚÔ¶³Ì·ÃÎÊ·þÎñ£¨RAS£©Ã»Óа²×°ÔÚ±¾»ú,²¦ºÅ¹¦Äܲ»ÄÜʹÓÃ. Çë°²×°Ëü." -#: ../src/os2/toplevel.cpp:329 +#: ../src/os2/toplevel.cpp:367 #, fuzzy msgid "Did you forget to include wx/os2/wx.rc in your resources?" msgstr "´´½¨¶Ô»°¿òʧ°Ü. Ò²ÐíÄãûÓаÑwx/msw/wx.rc°üÀ¨½ø×ÊÔ´ÖÐ." -#: ../src/generic/tipdlg.cpp:178 +#: ../src/generic/tipdlg.cpp:217 msgid "Did you know..." msgstr "ÄãÖªµÀ..." -#: ../src/common/filefn.cpp:1254 +#: ../src/common/filefn.cpp:1265 #, c-format msgid "Directory '%s' couldn't be created" msgstr "Ŀ¼'%s'²»Äܱ»´´½¨" @@ -1085,28 +1109,28 @@ msgstr "Ŀ¼ msgid "Directory does not exist" msgstr "Ŀ¼²»´æÔÚ" -#: ../src/html/helpfrm.cpp:374 +#: ../src/html/helpfrm.cpp:379 msgid "" "Display all index items that contain given substring. Search is case " "insensitive." msgstr "ÏÔʾ°üº¬¸ø¶¨×Ó´®µÄËùÓÐË÷ÒýÏî. ËÑË÷ÊÇ´óСдÎ޹صÄ." -#: ../src/html/helpfrm.cpp:540 +#: ../src/html/helpfrm.cpp:545 msgid "Display options dialog" msgstr "ÏÔʾѡÏî¶Ô»°¿ò" -#: ../src/msw/mimetype.cpp:679 +#: ../src/msw/mimetype.cpp:682 #, c-format msgid "" -"Do you want to overwrite the command used to %s files with extension \"%s\" " -"?\n" +"Do you want to overwrite the command used to %s files with extension \"%s" +"\" ?\n" "Current value is \n" "%s, \n" "New value is \n" "%s %1" msgstr "" -#: ../src/common/docview.cpp:440 +#: ../src/common/docview.cpp:441 #, c-format msgid "Do you want to save changes to document %s?" msgstr "ÄãÏë±£´æ¶ÔÎĵµ%sµÄÐÞ¸Ä?" @@ -1115,7 +1139,7 @@ msgstr " msgid "Done" msgstr "Íê³É" -#: ../src/generic/progdlgg.cpp:372 +#: ../src/generic/progdlgg.cpp:370 msgid "Done." msgstr "Íê³É¡£" @@ -1136,22 +1160,22 @@ msgstr " msgid "Entries found" msgstr "ÕÒµ½µÄÌõÄ¿" -#: ../src/common/config.cpp:345 +#: ../src/common/config.cpp:362 #, c-format msgid "" "Environment variables expansion failed: missing '%c' at position %d in '%s'." msgstr "»·¾³±äÁ¿À©Õ¹Ê§°Ü: '%c' ûÓгöÏÖÔÚλÖà %d / '%s'." -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/dirctrlg.cpp:720 -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:933 -#: ../src/generic/filedlgg.cpp:947 ../src/generic/filedlgg.cpp:960 -#: ../src/generic/filedlgg.cpp:1322 ../src/generic/filedlgg.cpp:1372 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/dirctrlg.cpp:722 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:942 +#: ../src/generic/filedlgg.cpp:956 ../src/generic/filedlgg.cpp:969 +#: ../src/generic/filedlgg.cpp:1365 ../src/generic/filedlgg.cpp:1418 #: ../src/gtk/filedlg.cpp:80 ../src/gtk/fontdlg.cpp:71 msgid "Error" msgstr "´íÎó" -#: ../src/unix/utilsunx.cpp:1182 ../src/unix/utilsunx.cpp:1190 +#: ../src/unix/utilsunx.cpp:1193 ../src/unix/utilsunx.cpp:1201 msgid "Error " msgstr "´íÎó" @@ -1159,7 +1183,7 @@ msgstr " msgid "Error creating directory" msgstr "´´½¨Ä¿Â¼´íÎó" -#: ../src/common/imagbmp.cpp:845 +#: ../src/common/imagbmp.cpp:926 #, fuzzy msgid "Error in reading image DIB ." msgstr "TIFF: ¶ÁͼÏñ´íÎó." @@ -1168,7 +1192,7 @@ msgstr "TIFF: msgid "Error: " msgstr "´íÎó£º" -#: ../src/common/fontmap.cpp:114 +#: ../src/common/fontmap.cpp:115 msgid "Esperanto (ISO-8859-3)" msgstr "Esperanto (ISO-8859-3)" @@ -1176,7 +1200,7 @@ msgstr "Esperanto (ISO-8859-3)" msgid "Estimated time : " msgstr "Ô¤ÆÚʱ¼ä£º" -#: ../src/msw/utilsexc.cpp:697 +#: ../src/msw/utilsexc.cpp:702 #, c-format msgid "Execution of command '%s' failed" msgstr "ÃüÁî '%s'Ö´ÐÐʧ°Ü" @@ -1203,7 +1227,11 @@ msgstr " msgid "Expected 'char' whilst parsing resource." msgstr "½âÎö×ÊԴʱÆÚ´ý 'char' ." -#: ../src/msw/dialup.cpp:840 +#: ../src/common/fontmap.cpp:144 +msgid "Extended Unix Codepage for Japanese (EUC-JP)" +msgstr "" + +#: ../src/msw/dialup.cpp:842 #, c-format msgid "Failed to %s dialup connection: %s" msgstr "µ½ %s µÄ²¦ºÅÁ¬½Óʧ°Ü: %s" @@ -1212,7 +1240,7 @@ msgstr " msgid "Failed to access lock file." msgstr "" -#: ../src/common/filename.cpp:172 +#: ../src/common/filename.cpp:176 #, fuzzy msgid "Failed to close file handle" msgstr "¹Ø±Õ¼ôÌù°åʧ°Ü." @@ -1226,11 +1254,11 @@ msgstr "Ë¢ msgid "Failed to close the clipboard." msgstr "¹Ø±Õ¼ôÌù°åʧ°Ü." -#: ../src/msw/dialup.cpp:780 +#: ../src/msw/dialup.cpp:782 msgid "Failed to connect: missing username/password." msgstr "Á¬½Óʧ°Ü: ȱÉÙÓû§Ãû/¿ÚÁî." -#: ../src/msw/dialup.cpp:726 +#: ../src/msw/dialup.cpp:728 msgid "Failed to connect: no ISP to dial." msgstr "Á¬½Óʧ°Ü: ûÓÐÒª²¦ºÅµÄISP." @@ -1244,12 +1272,12 @@ msgstr " msgid "Failed to copy the contents of registry key '%s' to '%s'." msgstr "°Ñ×¢²á¼üÄÚÈÝ´Ó '%s' ¿½±´µ½ '%s'ʧ°Ü." -#: ../src/common/filefn.cpp:1106 +#: ../src/common/filefn.cpp:1117 #, fuzzy, c-format msgid "Failed to copy the file '%s' to '%s'" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/msw/dde.cpp:924 +#: ../src/msw/dde.cpp:948 msgid "Failed to create DDE string" msgstr "´´½¨ DDE ×Ö·û´®Ê§°Ü" @@ -1261,26 +1289,36 @@ msgstr " msgid "Failed to create a status bar." msgstr "´´½¨×´Ì¬Ìõʧ°Ü¡£" -#: ../src/common/filename.cpp:717 +#: ../src/common/filename.cpp:721 #, fuzzy msgid "Failed to create a temporary file name" msgstr "´´½¨ MDI ¸¸¿ò¼Üʧ°Ü." -#: ../src/msw/utilsexc.cpp:195 +#: ../src/msw/utilsexc.cpp:197 #, fuzzy msgid "Failed to create an anonymous pipe" msgstr "´´½¨×´Ì¬Ìõʧ°Ü¡£" -#: ../src/msw/dde.cpp:401 +#: ../src/msw/dde.cpp:412 #, c-format msgid "Failed to create connection to server '%s' on topic '%s'" msgstr "´´½¨µ½·þÎñÆ÷ '%s'µÄ¹ØÓÚÖ÷Ìâ'%s'µÄÁ¬½Óʧ°Ü" -#: ../src/msw/toplevel.cpp:293 +#: ../src/msw/toplevel.cpp:313 #, fuzzy msgid "Failed to create dialog. Incorrect DLGTEMPLATE?" msgstr "´´½¨Ä¿Â¼Ê§°Ü" +#: ../src/unix/mimetype.cpp:372 +#, fuzzy, c-format +msgid "Failed to create directory %s/.gnome." +msgstr "´´½¨ MDI ¸¸¿ò¼Üʧ°Ü." + +#: ../src/unix/mimetype.cpp:381 +#, fuzzy, c-format +msgid "Failed to create directory %s/mime-info." +msgstr "½«×¢²áÖµ '%s'¸ÄÃûµ½'%s'ʧ°Ü." + #: ../src/generic/dirdlgg.cpp:201 #, fuzzy, c-format msgid "" @@ -1300,25 +1338,25 @@ msgstr " msgid "Failed to create the standard find/replace dialog (error code %d)" msgstr "" -#: ../src/html/winpars.cpp:430 +#: ../src/html/winpars.cpp:468 #, c-format msgid "Failed to display HTML document in %s encoding" msgstr "°´±àÂë %s ÏÔʾHTMLÎĵµÊ§°Ü" -#: ../src/mac/clipbrd.cpp:167 ../src/msw/clipbrd.cpp:139 +#: ../src/mac/clipbrd.cpp:168 ../src/msw/clipbrd.cpp:139 msgid "Failed to empty the clipboard." msgstr "Çå¿Õ¼ôÌù°åʧ°Ü" -#: ../src/msw/dde.cpp:606 +#: ../src/msw/dde.cpp:613 msgid "Failed to establish an advise loop with DDE server" msgstr "ÔÚDDE·þÎñÆ÷½¨Á¢adviseÑ­»·Ê§°Ü" -#: ../src/msw/dialup.cpp:618 +#: ../src/msw/dialup.cpp:620 #, c-format msgid "Failed to establish dialup connection: %s" msgstr "½¨Á¢²¦ºÅÁ¬½Ó: %sʧ°Ü" -#: ../src/unix/utilsunx.cpp:538 ../src/unix/utilsunx.cpp:555 +#: ../src/unix/utilsunx.cpp:540 ../src/unix/utilsunx.cpp:557 #, c-format msgid "Failed to execute '%s'\n" msgstr "Ö´ÐÐ '%s'ʧ°Ü\n" @@ -1350,12 +1388,12 @@ msgstr "" "²éÕÒXPM×ÊÔ´ %sʧ°Ü.\n" "ûÓÐʹÓÃwxResourceLoadBitmapData?" -#: ../src/msw/dialup.cpp:678 +#: ../src/msw/dialup.cpp:680 #, c-format msgid "Failed to get ISP names: %s" msgstr "»ñÈ¡ISPÃû: %sʧ°Ü" -#: ../src/mac/clipbrd.cpp:118 +#: ../src/mac/clipbrd.cpp:119 #, fuzzy msgid "Failed to get clipboard data." msgstr "ÉèÖüôÌù°åÊý¾Ýʧ°Ü" @@ -1364,15 +1402,15 @@ msgstr " msgid "Failed to get data from the clipboard" msgstr "´Ó¼ôÌù°å»ñÈ¡Êý¾Ýʧ°Ü" -#: ../src/common/timercmn.cpp:286 +#: ../src/common/timercmn.cpp:294 msgid "Failed to get the UTC system time." msgstr "»ñÈ¡UTCϵͳʱ¼äʧ°Ü." -#: ../src/common/timercmn.cpp:237 +#: ../src/common/timercmn.cpp:245 msgid "Failed to get the local system time" msgstr "»ñÈ¡±¾µØÏµÍ³Ê±¼äʧ°Ü" -#: ../src/common/filefn.cpp:1487 +#: ../src/common/filefn.cpp:1498 #, fuzzy msgid "Failed to get the working directory" msgstr "´´½¨Ä¿Â¼Ê§°Ü" @@ -1390,7 +1428,7 @@ msgstr "" msgid "Failed to initialize OpenGL" msgstr "²»Äܳõʼ»¯ OLE" -#: ../src/unix/threadpsx.cpp:871 +#: ../src/unix/threadpsx.cpp:887 msgid "" "Failed to join a thread, potential memory leak detected - please restart the " "program" @@ -1406,17 +1444,17 @@ msgstr " msgid "Failed to load image %d from file '%s'." msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/msw/volume.cpp:340 +#: ../src/msw/volume.cpp:347 #, fuzzy msgid "Failed to load mpr.dll." msgstr "ÉèÖüôÌù°åÊý¾Ýʧ°Ü" -#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:197 +#: ../src/common/dynlib.cpp:274 ../src/common/dynload.cpp:198 #, c-format msgid "Failed to load shared library '%s'" msgstr "²»ÄÜ×°ÔØ¹²Ïí¿â '%s'" -#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:126 +#: ../src/common/dynlib.cpp:256 ../src/common/dynload.cpp:127 #, fuzzy, c-format msgid "Failed to load shared library '%s' Error '%s'" msgstr "²»ÄÜ×°ÔØ¹²Ïí¿â '%s'" @@ -1431,17 +1469,17 @@ msgstr "Ë¢ msgid "Failed to match '%s' in regular expression: %s" msgstr "µ½ %s µÄ²¦ºÅÁ¬½Óʧ°Ü: %s" -#: ../src/common/filename.cpp:1644 +#: ../src/common/filename.cpp:1667 #, fuzzy, c-format msgid "Failed to modify file times for '%s'" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/common/filename.cpp:160 +#: ../src/common/filename.cpp:164 #, fuzzy, c-format msgid "Failed to open '%s' for %s" msgstr "´ò¿ª¼ôÌù°åʧ°Ü¡£" -#: ../src/common/filename.cpp:739 +#: ../src/common/filename.cpp:743 #, fuzzy msgid "Failed to open temporary file." msgstr "´ò¿ª¼ôÌù°åʧ°Ü¡£" @@ -1459,21 +1497,21 @@ msgstr " msgid "Failed to read PID from lock file." msgstr "´´½¨ MDI ¸¸¿ò¼Üʧ°Ü." -#: ../src/unix/utilsunx.cpp:629 +#: ../src/unix/utilsunx.cpp:635 msgid "Failed to redirect child process input/output" msgstr "ÖØ¶¨Ïò×Ó¹ý³ÌÊäÈë/Êä³öʧ°Ü" -#: ../src/msw/utilsexc.cpp:600 +#: ../src/msw/utilsexc.cpp:605 #, fuzzy msgid "Failed to redirect the child process IO" msgstr "ÖØ¶¨Ïò×Ó¹ý³ÌÊäÈë/Êä³öʧ°Ü" -#: ../src/msw/dde.cpp:285 +#: ../src/msw/dde.cpp:295 #, c-format msgid "Failed to register DDE server '%s'" msgstr "×¢²áDDE·þÎñÆ÷ '%s'ʧ°Ü" -#: ../src/common/fontmap.cpp:674 +#: ../src/common/fontmap.cpp:715 #, c-format msgid "Failed to remember the encoding for the charset '%s'." msgstr "»ØÒä×Ö·û¼¯ '%s'±àÂëʧ°Ü." @@ -1502,12 +1540,12 @@ msgstr " msgid "Failed to retrieve data from the clipboard." msgstr "´Ó¼ôÌù°å¼ìÈ¡Êý¾Ýʧ°Ü¡£" -#: ../src/common/filename.cpp:1710 +#: ../src/common/filename.cpp:1757 #, fuzzy, c-format msgid "Failed to retrieve file times for '%s'" msgstr "¼ìÈ¡RAS´íÎóÏûÏ¢ÕýÎÄʧ°Ü" -#: ../src/msw/dialup.cpp:442 +#: ../src/msw/dialup.cpp:444 msgid "Failed to retrieve text of RAS error message" msgstr "¼ìÈ¡RAS´íÎóÏûÏ¢ÕýÎÄʧ°Ü" @@ -1515,7 +1553,7 @@ msgstr " msgid "Failed to retrieve the supported clipboard formats" msgstr "¼ìȡ֧³ÖµÄ¼ôÌù°å¸ñʽʧ°Ü" -#: ../src/msw/dde.cpp:651 +#: ../src/msw/dde.cpp:658 msgid "Failed to send DDE advise notification" msgstr "·¢ËÍDDE advise ֪ͨʧ°Ü" @@ -1528,12 +1566,12 @@ msgstr " msgid "Failed to set clipboard data." msgstr "ÉèÖüôÌù°åÊý¾Ýʧ°Ü" -#: ../src/common/file.cpp:522 +#: ../src/common/file.cpp:526 #, fuzzy msgid "Failed to set temporary file permissions" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/unix/threadpsx.cpp:1213 ../src/unix/threadpsx.cpp:1224 +#: ../src/unix/threadpsx.cpp:1241 ../src/unix/threadpsx.cpp:1252 #, c-format msgid "Failed to set thread priority %d." msgstr "ÉèÖÃÏß³ÌÓÅÏȼ¶ %dʧ°Ü." @@ -1543,20 +1581,20 @@ msgstr " msgid "Failed to store image '%s' to memory VFS!" msgstr "½«Í¼Ïñ'%s'´æµ½ÄÚ´æVFSʧ°Ü!" -#: ../src/unix/threadpsx.cpp:1397 +#: ../src/unix/threadpsx.cpp:1425 msgid "Failed to terminate a thread." msgstr "ÖÕÖ¹Ïß³Ìʧ°Ü" -#: ../src/msw/dde.cpp:625 +#: ../src/msw/dde.cpp:632 msgid "Failed to terminate the advise loop with DDE server" msgstr "ÖÕÖ¹ÓëDDE·þÎñÆ÷µÄadviseÑ­»·Ê§°Ü" -#: ../src/msw/dialup.cpp:913 +#: ../src/msw/dialup.cpp:915 #, c-format msgid "Failed to terminate the dialup connection: %s" msgstr "ÖÕÖ¹²¦ºÅÁ¬½Ó: %sʧ°Ü" -#: ../src/common/filename.cpp:1659 +#: ../src/common/filename.cpp:1682 #, fuzzy, c-format msgid "Failed to touch the file '%s'" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" @@ -1566,7 +1604,7 @@ msgstr "Ë¢ msgid "Failed to unlock lock file '%s'" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/msw/dde.cpp:301 +#: ../src/msw/dde.cpp:311 #, c-format msgid "Failed to unregister DDE server '%s'" msgstr "³·ÏûDDE·þÎñÆ÷ '%s'×¢²áʧ°Ü" @@ -1584,7 +1622,7 @@ msgstr " msgid "Fatal error: " msgstr "ÖÂÃü´íÎó£º" -#: ../src/mac/app.cpp:1220 ../src/msw/app.cpp:1281 +#: ../src/mac/app.cpp:1284 ../src/msw/app.cpp:1290 msgid "Fatal error: exiting" msgstr "ÖÂÃü´íÎó£ºÒÑ´æÔÚ" @@ -1593,12 +1631,12 @@ msgstr " msgid "File %s does not exist." msgstr ": Îļþ²»´æÔÚ!" -#: ../src/generic/filedlgg.cpp:1354 ../src/gtk/filedlg.cpp:69 +#: ../src/generic/filedlgg.cpp:1408 ../src/gtk/filedlg.cpp:69 #, c-format msgid "File '%s' already exists, do you really want to overwrite it?" msgstr "Îļþ '%s' ÒÑ´æÔÚ, ÕæÐèÒª¸´Ð´Ëü?" -#: ../src/msw/filedlg.cpp:505 +#: ../src/msw/filedlg.cpp:518 #, fuzzy, c-format msgid "" "File '%s' already exists.\n" @@ -1609,21 +1647,21 @@ msgstr " msgid "File couldn't be loaded." msgstr "Îļþ²»Äܱ»×°ÔØ" -#: ../src/common/docview.cpp:294 ../src/common/docview.cpp:331 -#: ../src/common/docview.cpp:1422 +#: ../src/common/docview.cpp:295 ../src/common/docview.cpp:332 +#: ../src/common/docview.cpp:1424 msgid "File error" msgstr "Îļþ´íÎó" -#: ../src/generic/dirctrlg.cpp:720 ../src/generic/filedlgg.cpp:947 +#: ../src/generic/dirctrlg.cpp:722 ../src/generic/filedlgg.cpp:956 msgid "File name exists already." msgstr "ÎļþÃûÒÑ´æÔÚ" -#: ../src/msw/filedlg.cpp:353 +#: ../src/msw/filedlg.cpp:366 #, c-format msgid "Files (%s)|%s" msgstr "Îļþ (%s)|%s" -#: ../src/html/helpfrm.cpp:362 +#: ../src/html/helpfrm.cpp:367 msgid "Find" msgstr "²éÕÒ" @@ -1635,15 +1673,15 @@ msgstr " msgid "Folio, 8 1/2 x 13 in" msgstr "Folio, 8 1/2 x 13 in" -#: ../src/html/helpfrm.cpp:960 +#: ../src/html/helpfrm.cpp:951 msgid "Font size:" msgstr "×ÖÌå´óС:" -#: ../src/unix/utilsunx.cpp:572 +#: ../src/unix/utilsunx.cpp:578 msgid "Fork failed" msgstr "Fork ʧ°Ü" -#: ../src/common/dlgcmn.cpp:167 +#: ../src/common/dlgcmn.cpp:230 msgid "Forward" msgstr "Ïòǰ" @@ -1653,7 +1691,7 @@ msgstr " msgid "Found " msgstr "ÕÒµ½" -#: ../src/html/helpfrm.cpp:661 ../src/html/htmlhelp.cpp:460 +#: ../src/html/helpfrm.cpp:666 #, c-format msgid "Found %i matches" msgstr "ÕÒµ½ %i ¸öÆ¥ÅäÏî" @@ -1699,39 +1737,31 @@ msgstr " msgid "GetUnusedColour:: No Unused Color in image " msgstr "" -#: ../src/html/helpfrm.cpp:506 +#: ../src/html/helpfrm.cpp:511 msgid "Go back" msgstr "»ØÍË" -#: ../src/html/htmlhelp.cpp:541 -msgid "Go back to the previous HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:509 +#: ../src/html/helpfrm.cpp:514 msgid "Go forward" msgstr "Ïòǰ" -#: ../src/html/htmlhelp.cpp:543 -msgid "Go forward to the next HTML page" -msgstr "" - -#: ../src/html/helpfrm.cpp:514 +#: ../src/html/helpfrm.cpp:519 msgid "Go one level up in document hierarchy" msgstr "ÔÚÎĵµ²ã´ÎÖÐÉÏÉýÒ»¼¶" -#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1108 +#: ../src/generic/dirdlgg.cpp:108 ../src/generic/filedlgg.cpp:1121 msgid "Go to home directory" msgstr "½øÈëhomeĿ¼" -#: ../src/generic/filedlgg.cpp:1100 +#: ../src/generic/filedlgg.cpp:1113 msgid "Go to parent directory" msgstr "½øÈ븸Ŀ¼" -#: ../src/common/prntbase.cpp:379 +#: ../src/common/prntbase.cpp:378 msgid "Goto Page" msgstr "" -#: ../src/common/fontmap.cpp:118 +#: ../src/common/fontmap.cpp:119 msgid "Greek (ISO-8859-7)" msgstr "Greek (ISO-8859-7)" @@ -1740,31 +1770,25 @@ msgstr "Greek (ISO-8859-7)" msgid "HTML anchor %s does not exist." msgstr "HTML ê %s ²»´æÔÚ." -#: ../src/html/helpfrm.cpp:1279 +#: ../src/html/helpfrm.cpp:1307 msgid "" -"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books " -"(*.htb)|*.htb|Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All " -"files (*.*)|*" +"HTML files (*.htm)|*.htm|HTML files (*.html)|*.html|Help books (*.htb)|*.htb|" +"Help books (*.zip)|*.zip|HTML Help Project (*.hhp)|*.hhp|All files (*.*)|*" msgstr "" -"HTML Îļþ (*.htm)|*.htm|HTML Îļþ (*.html)|*.html|°ïÖúÊé " -"(*.htb)|*.htb|°ïÖúÊé (*.zip)|*.zip|HTML °ïÖúÏîÄ¿ (*.hhp)|*.hhp|ËùÓÐÎļþ " -"(*.*)|*" +"HTML Îļþ (*.htm)|*.htm|HTML Îļþ (*.html)|*.html|°ïÖúÊé (*.htb)|*.htb|°ïÖú" +"Êé (*.zip)|*.zip|HTML °ïÖúÏîÄ¿ (*.hhp)|*.hhp|ËùÓÐÎļþ (*.*)|*" -#: ../src/common/fontmap.cpp:119 +#: ../src/common/fontmap.cpp:120 msgid "Hebrew (ISO-8859-8)" msgstr "Hebrew (ISO-8859-8)" -#: ../src/common/dlgcmn.cpp:179 ../src/generic/proplist.cpp:516 -#: ../src/html/helpfrm.cpp:240 ../src/msw/mdi.cpp:1324 +#: ../src/common/dlgcmn.cpp:242 ../src/generic/mdig.cpp:308 +#: ../src/generic/proplist.cpp:516 ../src/html/helpfrm.cpp:245 +#: ../src/msw/mdi.cpp:1324 msgid "Help" msgstr "°ïÖú" -#: ../src/html/htmlhelp.cpp:87 -#, fuzzy, c-format -msgid "Help : %s" -msgstr "°ïÖú: %s" - -#: ../src/html/helpfrm.cpp:933 +#: ../src/html/helpfrm.cpp:944 msgid "Help Browser Options" msgstr "°ïÖúä¯ÀÀÆ÷Ñ¡Ïî" @@ -1772,7 +1796,7 @@ msgstr " msgid "Help Index" msgstr "°ïÖúË÷Òý" -#: ../src/html/helpfrm.cpp:1263 +#: ../src/html/helpfrm.cpp:1291 msgid "Help Printing" msgstr "°ïÖú´òÓ¡" @@ -1781,28 +1805,28 @@ msgstr " msgid "Help: %s" msgstr "°ïÖú: %s" -#: ../src/common/imagbmp.cpp:858 +#: ../src/common/imagbmp.cpp:939 #, fuzzy msgid "ICO: Error in reading mask DIB." msgstr "TIFF: ¶ÁͼÏñ´íÎó." -#: ../src/common/imagbmp.cpp:960 ../src/common/imagbmp.cpp:1019 -#: ../src/common/imagbmp.cpp:1028 ../src/common/imagbmp.cpp:1039 -#: ../src/common/imagbmp.cpp:1083 ../src/common/imagbmp.cpp:1093 -#: ../src/common/imagbmp.cpp:1102 +#: ../src/common/imagbmp.cpp:1041 ../src/common/imagbmp.cpp:1100 +#: ../src/common/imagbmp.cpp:1109 ../src/common/imagbmp.cpp:1120 +#: ../src/common/imagbmp.cpp:1164 ../src/common/imagbmp.cpp:1174 +#: ../src/common/imagbmp.cpp:1183 #, fuzzy msgid "ICO: Error writing the image file!" msgstr "TIFF:дͼÏñ´íÎó." -#: ../src/common/imagbmp.cpp:928 +#: ../src/common/imagbmp.cpp:1009 msgid "ICO: Image too tall for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:934 +#: ../src/common/imagbmp.cpp:1015 msgid "ICO: Image too wide for an icon." msgstr "" -#: ../src/common/imagbmp.cpp:1167 +#: ../src/common/imagbmp.cpp:1248 #, fuzzy msgid "ICO: Invalid icon index." msgstr "ÎÞЧTIFFͼÏñË÷Òý." @@ -1837,11 +1861,11 @@ msgstr "û msgid "Ill-formed resource file syntax." msgstr "²»Á¼µÄ×ÊÔ´ÎļþÓï·¨¡£" -#: ../src/generic/dirctrlg.cpp:702 ../src/generic/filedlgg.cpp:933 +#: ../src/generic/dirctrlg.cpp:704 ../src/generic/filedlgg.cpp:942 msgid "Illegal directory name." msgstr "²»ºÏ·¨µÄĿ¼Ãû¡£" -#: ../src/generic/filedlgg.cpp:1322 +#: ../src/generic/filedlgg.cpp:1365 msgid "Illegal file specification." msgstr "²»ºÏ¹æ·¶µÄÎļþÃèÊö" @@ -1849,12 +1873,12 @@ msgstr " msgid "Image and Mask have different sizes" msgstr "" -#: ../src/common/image.cpp:1064 +#: ../src/common/image.cpp:1067 #, c-format msgid "Image file is not of type %d." msgstr "" -#: ../src/msw/textctrl.cpp:249 +#: ../src/msw/textctrl.cpp:270 msgid "" "Impossible to create a rich edit control, using simple text control instead. " "Please reinstall riched32.dll" @@ -1864,26 +1888,26 @@ msgstr " msgid "Impossible to get child process input" msgstr "²»¿ÉÄÜ»ñµÃ×Ó¹ý³ÌµÄÊäÈë" -#: ../src/common/filefn.cpp:1122 +#: ../src/common/filefn.cpp:1133 #, fuzzy, c-format msgid "Impossible to get permissions for file '%s'" msgstr "²»¿ÉÄÜ»ñµÃ×Ó¹ý³ÌµÄÊäÈë" -#: ../src/common/filefn.cpp:1136 +#: ../src/common/filefn.cpp:1147 #, fuzzy, c-format msgid "Impossible to overwrite the file '%s'" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/common/filefn.cpp:1187 +#: ../src/common/filefn.cpp:1198 #, c-format msgid "Impossible to set permissions for the file '%s'" msgstr "" -#: ../src/html/helpfrm.cpp:387 ../src/html/htmlhelp.cpp:578 +#: ../src/html/helpfrm.cpp:392 msgid "Index" msgstr "Ë÷Òý" -#: ../src/common/fontmap.cpp:123 +#: ../src/common/fontmap.cpp:124 #, fuzzy msgid "Indian (ISO-8859-12)" msgstr "Nordic (ISO-8859-10)" @@ -1892,17 +1916,17 @@ msgstr "Nordic (ISO-8859-10)" msgid "Invalid TIFF image index." msgstr "ÎÞЧTIFFͼÏñË÷Òý." -#: ../contrib/src/xrc/xmlres.cpp:343 +#: ../contrib/src/xrc/xmlres.cpp:362 #, c-format msgid "Invalid XRC resource '%s': doesn't have root node 'resource'." msgstr "" -#: ../src/common/appcmn.cpp:378 +#: ../src/common/appcmn.cpp:399 #, fuzzy, c-format msgid "Invalid display mode specification '%s'." msgstr "²»ºÏ¹æ·¶µÄÎļþÃèÊö" -#: ../src/x11/app.cpp:231 +#: ../src/x11/app.cpp:218 #, fuzzy, c-format msgid "Invalid geometry specification '%s'" msgstr "²»ºÏ¹æ·¶µÄÎļþÃèÊö" @@ -1917,7 +1941,7 @@ msgstr " msgid "Invalid regular expression '%s': %s" msgstr "" -#: ../src/generic/fontdlgg.cpp:227 +#: ../src/generic/fontdlgg.cpp:228 msgid "Italic" msgstr "бÌå" @@ -1933,7 +1957,7 @@ msgstr "JPEG: msgid "JPEG: Couldn't save image." msgstr "JPEG: ²»Äܱ£´æÍ¼Ïñ." -#: ../src/common/fontmap.cpp:127 +#: ../src/common/fontmap.cpp:128 msgid "KOI8-R" msgstr "KOI8-R" @@ -1961,17 +1985,17 @@ msgstr "Letter Small, 8 1/2 x 11 Ó¢ msgid "Letter, 8 1/2 x 11 in" msgstr "Letter, 8 1/2 x 11 Ó¢´ç" -#: ../src/generic/fontdlgg.cpp:230 +#: ../src/generic/fontdlgg.cpp:231 msgid "Light" msgstr "Çá" -#: ../src/generic/filedlgg.cpp:1587 ../src/gtk/filedlg.cpp:249 -#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:542 +#: ../src/generic/filedlgg.cpp:1623 ../src/gtk/filedlg.cpp:249 +#: ../src/motif/filedlg.cpp:357 ../src/msw/filedlg.cpp:555 #, c-format msgid "Load %s file" msgstr "×°ÈëÎļþ %s " -#: ../src/generic/filedlgg.cpp:1589 +#: ../src/generic/filedlgg.cpp:1625 #, fuzzy msgid "Load file" msgstr "×°ÈëÎļþ %s " @@ -2008,7 +2032,7 @@ msgstr " msgid "Ma&ximize" msgstr "" -#: ../src/unix/mimetype.cpp:2477 +#: ../src/unix/mimetype.cpp:2497 #, c-format msgid "Mailcap file %s, line %d: incomplete entry ignored." msgstr "Mailcap Îļþ %s, ÐÐ %d: ²»ÍêÕûÌõÄ¿±»ºöÂÔ." @@ -2030,7 +2054,7 @@ msgstr "" msgid "Mi&nimize" msgstr "" -#: ../src/unix/mimetype.cpp:2102 +#: ../src/unix/mimetype.cpp:2118 #, c-format msgid "Mime.types file %s, line %d: unterminated quoted string." msgstr "Mime.ÀàÐÍÎļþ %s, ÐÐ %d: ûÓнáÊø·ûºÅµÄÒýÓÃ×Ö·û´®." @@ -2040,7 +2064,7 @@ msgstr "Mime. msgid "Mode %ix%i-%i not available." msgstr "" -#: ../src/generic/fontdlgg.cpp:222 +#: ../src/generic/fontdlgg.cpp:223 msgid "Modern" msgstr "ÏÖ´ú" @@ -2048,24 +2072,24 @@ msgstr " msgid "Monarch Envelope, 3 7/8 x 7 1/2 in" msgstr "Monarch Envelope, 3 7/8 x 7 1/2 in" -#: ../src/common/dlgcmn.cpp:176 +#: ../src/common/dlgcmn.cpp:239 msgid "More..." msgstr "¸ü¶à..." -#: ../src/generic/filedlgg.cpp:698 +#: ../src/generic/filedlgg.cpp:703 msgid "Name" msgstr "Ãû³Æ" #: ../src/generic/dirdlgg.cpp:272 ../src/generic/dirdlgg.cpp:282 -#: ../src/generic/filedlgg.cpp:812 ../src/generic/filedlgg.cpp:821 +#: ../src/generic/filedlgg.cpp:817 ../src/generic/filedlgg.cpp:826 msgid "NewName" msgstr "ÐÂÃû" -#: ../src/html/helpfrm.cpp:520 +#: ../src/html/helpfrm.cpp:525 msgid "Next page" msgstr "ÏÂÒ»Ò³" -#: ../src/common/dlgcmn.cpp:156 ../src/mac/msgdlg.cpp:78 +#: ../src/common/dlgcmn.cpp:219 ../src/mac/msgdlg.cpp:78 #: ../src/motif/msgdlg.cpp:182 msgid "No" msgstr "·ñ" @@ -2087,7 +2111,7 @@ msgstr "û msgid "No entries found." msgstr "ûÕÒµ½ÌõÄ¿" -#: ../src/common/fontmap.cpp:865 +#: ../src/common/fontmap.cpp:906 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found,\n" @@ -2099,7 +2123,7 @@ msgstr "" "Ñ¡ÔñÓÃÓڸıàÂëµÄ×ÖÌå\n" "(·ñÔò¸Ã±àÂëµÄÎı¾½«²»ÄÜÕýÈ·ÏÔʾ)?" -#: ../src/common/fontmap.cpp:870 +#: ../src/common/fontmap.cpp:911 #, fuzzy, c-format msgid "" "No font for displaying text in encoding '%s' found.\n" @@ -2110,40 +2134,39 @@ msgstr "" "Ñ¡ÔñÓÃÓڸıàÂëµÄ×ÖÌå\n" "(·ñÔò¸Ã±àÂëµÄÎı¾½«²»ÄÜÕýÈ·ÏÔʾ)?" -#: ../contrib/src/xrc/xmlres.cpp:523 +#: ../contrib/src/xrc/xmlres.cpp:557 #, c-format msgid "No handler found for XML node '%s', class '%s'!" msgstr "" -#: ../src/common/image.cpp:1046 ../src/common/image.cpp:1089 +#: ../src/common/image.cpp:1049 ../src/common/image.cpp:1092 msgid "No handler found for image type." msgstr "ûÓÐÕÒµ½Í¼ÏñÀàÐÍ´¦ÀíÆ÷." -#: ../src/common/image.cpp:1054 ../src/common/image.cpp:1097 -#: ../src/common/image.cpp:1131 +#: ../src/common/image.cpp:1057 ../src/common/image.cpp:1100 +#: ../src/common/image.cpp:1134 #, c-format msgid "No image handler for type %d defined." msgstr "ûÓÐÀàÐÍ %d µÄͼÏñ´¦ÀíÆ÷." -#: ../src/common/image.cpp:1115 ../src/common/image.cpp:1147 +#: ../src/common/image.cpp:1118 ../src/common/image.cpp:1150 #, c-format msgid "No image handler for type %s defined." msgstr "ûÓÐÀàÐÍ %sµÄͼÏñ´¦ÀíÆ÷." -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:436 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "No matching page found yet" msgstr "No matching page found yet" -#: ../src/common/fontmap.cpp:121 +#: ../src/common/fontmap.cpp:122 msgid "Nordic (ISO-8859-10)" msgstr "Nordic (ISO-8859-10)" -#: ../src/generic/fontdlgg.cpp:226 ../src/generic/fontdlgg.cpp:229 +#: ../src/generic/fontdlgg.cpp:227 ../src/generic/fontdlgg.cpp:230 msgid "Normal" msgstr "Õý³£" -#: ../src/html/helpfrm.cpp:942 +#: ../src/html/helpfrm.cpp:949 msgid "Normal font:" msgstr "Normal font:" @@ -2151,35 +2174,35 @@ msgstr "Normal font:" msgid "Note, 8 1/2 x 11 in" msgstr "±Ê¼Ç²¾, 8 1/2 x 11 Ó¢´ç" -#: ../src/common/dlgcmn.cpp:162 ../src/generic/dirdlgg.cpp:151 -#: ../src/generic/filedlgg.cpp:1165 ../src/generic/filedlgg.cpp:1176 -#: ../src/generic/fontdlgg.cpp:253 ../src/generic/logg.cpp:739 +#: ../src/common/dlgcmn.cpp:225 ../src/generic/dirdlgg.cpp:151 +#: ../src/generic/filedlgg.cpp:1180 ../src/generic/filedlgg.cpp:1191 +#: ../src/generic/fontdlgg.cpp:254 ../src/generic/logg.cpp:739 #: ../src/generic/prntdlgg.cpp:452 ../src/generic/proplist.cpp:499 #: ../src/gtk/filedlg.cpp:167 ../src/gtk/fontdlg.cpp:136 -#: ../src/html/helpfrm.cpp:972 +#: ../src/html/helpfrm.cpp:974 msgid "OK" msgstr "È·ÈÏ" -#: ../src/html/helpfrm.cpp:528 ../src/html/helpfrm.cpp:1274 +#: ../src/html/helpfrm.cpp:533 ../src/html/helpfrm.cpp:1302 msgid "Open HTML document" msgstr "´ò¿ªHTMLÎĵµ" -#: ../src/generic/dirctrlg.cpp:731 ../src/generic/dirdlgg.cpp:298 -#: ../src/generic/filedlgg.cpp:836 ../src/generic/filedlgg.cpp:960 +#: ../src/generic/dirctrlg.cpp:733 ../src/generic/dirdlgg.cpp:298 +#: ../src/generic/filedlgg.cpp:841 ../src/generic/filedlgg.cpp:969 msgid "Operation not permitted." msgstr "²»ÔÊÐíµÄ²Ù×÷." -#: ../src/common/cmdline.cpp:666 +#: ../src/common/cmdline.cpp:667 #, c-format msgid "Option '%s' requires a value, '=' expected." msgstr "Ñ¡Ïî '%s' ÒªÇóÒ»¸öÖµ, ÆÚÍû '='." -#: ../src/common/cmdline.cpp:686 +#: ../src/common/cmdline.cpp:687 #, c-format msgid "Option '%s' requires a value." msgstr "Ñ¡Ïî '%s' ÐèÒªÖµ." -#: ../src/common/cmdline.cpp:747 +#: ../src/common/cmdline.cpp:748 #, c-format msgid "Option '%s': '%s' cannot be converted to a date." msgstr "Ñ¡Ïî '%s': '%s' ²»ÄÜת³ÉÈÕÆÚ." @@ -2228,12 +2251,12 @@ msgstr "PNM: msgid "PNM: File seems truncated." msgstr "PNM: ÎļþËÆºõÒѱ»½Ø¶Ï." -#: ../src/common/prntbase.cpp:827 +#: ../src/common/prntbase.cpp:826 #, c-format msgid "Page %d" msgstr "Ò³ %d" -#: ../src/common/prntbase.cpp:825 +#: ../src/common/prntbase.cpp:824 #, c-format msgid "Page %d of %d" msgstr "Ò³ %d / %d" @@ -2256,11 +2279,11 @@ msgstr "Ö½ msgid "Paper size" msgstr "Ö½ÕÅ´óС" -#: ../src/generic/filedlgg.cpp:703 +#: ../src/generic/filedlgg.cpp:708 msgid "Permissions" msgstr "ÔÊÐí" -#: ../src/unix/utilsunx.cpp:439 +#: ../src/unix/utilsunx.cpp:441 msgid "Pipe creation failed" msgstr "¹ÜµÀ´´½¨Ê§°Ü" @@ -2268,15 +2291,15 @@ msgstr " msgid "Please choose a valid font." msgstr "ÇëÑ¡ÔñÒ»¸öÓÐЧµÄ×ÖÌå¡£" -#: ../src/generic/filedlgg.cpp:1372 ../src/gtk/filedlg.cpp:80 +#: ../src/generic/filedlgg.cpp:1418 ../src/gtk/filedlg.cpp:80 msgid "Please choose an existing file." msgstr "ÇëÑ¡ÔñÒ»¸öÒÑ´æÔÚµÄÎļþ¡£" -#: ../src/msw/dialup.cpp:747 +#: ../src/msw/dialup.cpp:749 msgid "Please choose which ISP do you want to connect to" msgstr "ÇëÑ¡ÔñÄãÏëÁ¬½ÓµÄISP" -#: ../src/msw/listctrl.cpp:535 +#: ../src/msw/listctrl.cpp:550 #, c-format msgid "" "Please install a newer version of comctl32.dll\n" @@ -2284,7 +2307,7 @@ msgid "" "or this program won't operate correctly." msgstr "" -#: ../src/common/prntbase.cpp:112 +#: ../src/common/prntbase.cpp:111 msgid "Please wait while printing\n" msgstr "" @@ -2296,15 +2319,11 @@ msgstr " msgid "PostScript file" msgstr "PostScriptÎļþ" -#: ../src/html/htmlhelp.cpp:509 -msgid "Preparing help window..." -msgstr "" - -#: ../src/html/helpfrm.cpp:964 +#: ../src/html/helpfrm.cpp:966 msgid "Preview:" msgstr "Ô¤ÀÀ£º" -#: ../src/html/helpfrm.cpp:517 +#: ../src/html/helpfrm.cpp:522 msgid "Previous page" msgstr "ǰҳ" @@ -2312,11 +2331,11 @@ msgstr "ǰҳ" msgid "Print" msgstr "´òÓ¡" -#: ../src/common/docview.cpp:923 +#: ../src/common/docview.cpp:925 msgid "Print Preview" msgstr "´òÓ¡Ô¤ÀÀ" -#: ../src/common/prntbase.cpp:782 ../src/common/prntbase.cpp:806 +#: ../src/common/prntbase.cpp:781 ../src/common/prntbase.cpp:805 msgid "Print Preview Failure" msgstr "´òÓ¡Ô¤ÀÀʧ°Ü" @@ -2336,7 +2355,7 @@ msgstr " msgid "Print spooling" msgstr "´òÓ¡¼ÙÍÑ»ú" -#: ../src/html/helpfrm.cpp:534 +#: ../src/html/helpfrm.cpp:539 msgid "Print this page" msgstr "´òÓ¡±¾Ò³" @@ -2344,7 +2363,7 @@ msgstr " msgid "Print to File" msgstr "´òÓ¡µ½Îļþ" -#: ../src/common/prntbase.cpp:436 +#: ../src/common/prntbase.cpp:435 msgid "Print..." msgstr "´òÓ¡..." @@ -2364,21 +2383,21 @@ msgstr " msgid "Printer..." msgstr "´òÓ¡»ú..." -#: ../src/common/prntbase.cpp:109 ../src/common/prntbase.cpp:154 +#: ../src/common/prntbase.cpp:108 ../src/common/prntbase.cpp:153 #, fuzzy msgid "Printing " msgstr "´òÓ¡" -#: ../src/common/prntbase.cpp:126 +#: ../src/common/prntbase.cpp:125 msgid "Printing Error" msgstr "´òÓ¡³ö´í" -#: ../src/generic/printps.cpp:220 +#: ../src/generic/printps.cpp:221 #, c-format msgid "Printing page %d..." msgstr "ÕýÔÚ´òÓ¡Ò³ %d..." -#: ../src/generic/printps.cpp:180 +#: ../src/generic/printps.cpp:181 msgid "Printing..." msgstr "´òÓ¡..." @@ -2399,7 +2418,7 @@ msgstr " msgid "Read error on file '%s'" msgstr "¶ÁÎļþ '%s'³ö´í" -#: ../contrib/src/xrc/xmlres.cpp:498 +#: ../contrib/src/xrc/xmlres.cpp:532 #, c-format msgid "Referenced object node with ref=\"%s\" not found!" msgstr "" @@ -2430,10 +2449,6 @@ msgstr "" msgid "Registry value '%s' already exists." msgstr "×¢²áÖµ '%s' ÒÑ´æÔÚ." -#: ../src/msw/thread.cpp:246 -msgid "ReleaseMutex()" -msgstr "" - #: ../src/generic/helphtml.cpp:334 msgid "Relevant entries:" msgstr "Ïà¹ØÌõÄ¿:" @@ -2442,7 +2457,7 @@ msgstr " msgid "Remaining time : " msgstr "Ê£Óàʱ¼ä : " -#: ../src/html/helpfrm.cpp:324 +#: ../src/html/helpfrm.cpp:329 msgid "Remove current page from bookmarks" msgstr "´ÓÊéÇ©ÖÐÒÆÈ¥µ±Ç°Ò³" @@ -2455,7 +2470,7 @@ msgstr " msgid "Replace with:" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:360 +#: ../contrib/src/xrc/xmlres.cpp:379 msgid "Resource files must have same version number!" msgstr "" @@ -2463,21 +2478,21 @@ msgstr "" msgid "Right margin (mm):" msgstr "Óұ߾à (ºÁÃ×):" -#: ../src/generic/fontdlgg.cpp:220 +#: ../src/generic/fontdlgg.cpp:221 msgid "Roman" msgstr "ÂÞÂí" -#: ../src/generic/filedlgg.cpp:1602 ../src/gtk/filedlg.cpp:265 -#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:544 +#: ../src/generic/filedlgg.cpp:1638 ../src/gtk/filedlg.cpp:265 +#: ../src/motif/filedlg.cpp:359 ../src/msw/filedlg.cpp:557 #, c-format msgid "Save %s file" msgstr "±£´æÎļþ %s " -#: ../src/common/docview.cpp:247 +#: ../src/common/docview.cpp:248 msgid "Save as" msgstr "Áí´æÎª" -#: ../src/generic/filedlgg.cpp:1604 +#: ../src/generic/filedlgg.cpp:1640 #, fuzzy msgid "Save file" msgstr "±£´æÎļþ %s " @@ -2486,20 +2501,15 @@ msgstr " msgid "Save log contents to file" msgstr "°ÑÈÕÖ¾ÄÚÈݱ£´æµ½Îļþ" -#: ../src/mgl/window.cpp:132 -msgid "Screenshot captured: " -msgstr "" - -#: ../src/generic/fontdlgg.cpp:223 +#: ../src/generic/fontdlgg.cpp:224 msgid "Script" msgstr "Script" -#: ../src/html/helpfrm.cpp:408 ../src/html/helpfrm.cpp:423 -#: ../src/html/htmlhelp.cpp:610 +#: ../src/html/helpfrm.cpp:413 ../src/html/helpfrm.cpp:428 msgid "Search" msgstr "ËÑË÷" -#: ../src/html/helpfrm.cpp:410 +#: ../src/html/helpfrm.cpp:415 msgid "" "Search contents of help book(s) for all occurences of the text you typed " "above" @@ -2515,21 +2525,15 @@ msgstr " msgid "Search for:" msgstr "ËÑË÷" -#: ../src/html/helpfrm.cpp:789 +#: ../src/html/helpfrm.cpp:794 msgid "Search in all books" msgstr "ÔÚË÷ÒýÊéÖÐËÑË÷" -#: ../src/html/htmlhelp.cpp:593 -#, fuzzy -msgid "Search!" -msgstr "ËÑË÷" - -#: ../src/html/helpfrm.cpp:650 ../src/html/htmlhelp.cpp:383 -#: ../src/html/htmlhelp.cpp:441 +#: ../src/html/helpfrm.cpp:655 msgid "Searching..." msgstr "ËÑË÷..." -#: ../src/generic/dirctrlg.cpp:549 +#: ../src/generic/dirctrlg.cpp:551 msgid "Sections" msgstr "¶Î" @@ -2538,24 +2542,29 @@ msgstr " msgid "Seek error on file '%s'" msgstr "Îļþ '%s'¶¨Î»´íÎó" -#: ../src/common/docview.cpp:1538 +#: ../src/msw/textctrl.cpp:1685 +#, fuzzy +msgid "Select &All" +msgstr "Ñ¡ÔñÎļþ" + +#: ../src/common/docview.cpp:1540 msgid "Select a document template" msgstr "Ñ¡ÔñÎĵµÄ£°å" -#: ../src/common/docview.cpp:1614 +#: ../src/common/docview.cpp:1616 msgid "Select a document view" msgstr "Ñ¡ÔñÎĵµÊÓͼ" -#: ../src/common/docview.cpp:1405 ../src/common/docview.cpp:1456 +#: ../src/common/docview.cpp:1407 ../src/common/docview.cpp:1458 msgid "Select a file" msgstr "Ñ¡ÔñÎļþ" -#: ../src/common/cmdline.cpp:703 +#: ../src/common/cmdline.cpp:704 #, c-format msgid "Separator expected after the option '%s'." msgstr "ÆÚÍûÔÚÑ¡Ïî '%s'ºó´æÔÚ·Ö¸ô·û." -#: ../src/common/dlgcmn.cpp:173 +#: ../src/common/dlgcmn.cpp:236 msgid "Setup" msgstr "ÉèÖÃ" @@ -2563,15 +2572,15 @@ msgstr " msgid "Setup..." msgstr "ÉèÖÃ..." -#: ../src/msw/dialup.cpp:518 +#: ../src/msw/dialup.cpp:520 msgid "Several active dialup connections found, choosing one randomly." msgstr "ÕÒµ½¶à¸ö»î¶¯²¦ºÅÁ¬½Ó, Ëæ»úÑ¡ÔñÒ»¸ö." -#: ../src/html/helpfrm.cpp:364 +#: ../src/html/helpfrm.cpp:369 msgid "Show all" msgstr "ÏÔʾËùÓÐ" -#: ../src/html/helpfrm.cpp:375 +#: ../src/html/helpfrm.cpp:380 msgid "Show all items in index" msgstr "°ÑËùÓÐÏîÄ¿ÏÔʾΪË÷Òý" @@ -2580,36 +2589,36 @@ msgstr " msgid "Show hidden directories" msgstr "ÏÔʾÒþ²ØÎļþ" -#: ../src/generic/filedlgg.cpp:1160 ../src/generic/filedlgg.cpp:1182 +#: ../src/generic/filedlgg.cpp:1175 ../src/generic/filedlgg.cpp:1197 msgid "Show hidden files" msgstr "ÏÔʾÒþ²ØÎļþ" -#: ../src/html/helpfrm.cpp:501 ../src/html/htmlhelp.cpp:538 +#: ../src/html/helpfrm.cpp:506 msgid "Show/hide navigation panel" msgstr "ÏÔʾ/Òþ²Øµ¼º½Ãæ°å" -#: ../src/generic/filedlgg.cpp:699 +#: ../src/generic/filedlgg.cpp:704 msgid "Size" msgstr "´óС" -#: ../src/generic/fontdlgg.cpp:228 +#: ../src/generic/fontdlgg.cpp:229 msgid "Slant" msgstr "Çãб" -#: ../src/common/docview.cpp:304 +#: ../src/common/docview.cpp:305 msgid "Sorry, could not open this file for saving." msgstr "¶Ô²»Æð£¬²»ÄÜ´ò¿ªÎļþÒԱ㱣´æ¡£" -#: ../src/common/docview.cpp:341 ../src/common/docview.cpp:354 -#: ../src/common/docview.cpp:1424 +#: ../src/common/docview.cpp:342 ../src/common/docview.cpp:355 +#: ../src/common/docview.cpp:1426 msgid "Sorry, could not open this file." msgstr "¶Ô²»Æð£¬²»ÄÜ´ò¿ªÎļþ¡£" -#: ../src/common/docview.cpp:311 +#: ../src/common/docview.cpp:312 msgid "Sorry, could not save this file." msgstr "¶Ô²»Æð£¬²»Äܱ£´æÎļþ¡£" -#: ../src/common/prntbase.cpp:782 +#: ../src/common/prntbase.cpp:781 msgid "Sorry, not enough memory to create a preview." msgstr "¶Ô²»Æð, ûÓÐ×ã¹»ÄÚ´æ´´½¨Ô¤ÀÀ." @@ -2621,12 +2630,12 @@ msgstr "Statement, 5 1/2 x 8 1/2 in" msgid "Status: " msgstr "״̬£º" -#: ../contrib/src/xrc/xmlres.cpp:558 +#: ../contrib/src/xrc/xmlres.cpp:632 #, c-format msgid "Subclass '%s' not found for resource '%s', not subclassing!" msgstr "" -#: ../src/generic/fontdlgg.cpp:224 +#: ../src/generic/fontdlgg.cpp:225 msgid "Swiss" msgstr "ÈðÊ¿" @@ -2655,15 +2664,15 @@ msgstr "TIFF:дͼ msgid "Tabloid, 11 x 17 in" msgstr "Tabloid, 11 x 17 Ó¢´ç" -#: ../src/generic/fontdlgg.cpp:225 +#: ../src/generic/fontdlgg.cpp:226 msgid "Teletype" msgstr "µç´«´ò×Ö»ú" -#: ../src/common/docview.cpp:1539 +#: ../src/common/docview.cpp:1541 msgid "Templates" msgstr "Ä£°å" -#: ../src/common/fontmap.cpp:122 +#: ../src/common/fontmap.cpp:123 msgid "Thai (ISO-8859-11)" msgstr "Ì©Óï (ISO-8859-11)" @@ -2671,7 +2680,7 @@ msgstr "Ì© msgid "The FTP server doesn't support passive mode." msgstr "" -#: ../src/common/fontmap.cpp:630 +#: ../src/common/fontmap.cpp:674 #, c-format msgid "" "The charset '%s' is unknown. You may select\n" @@ -2682,7 +2691,7 @@ msgstr "" "´úÌæËü£¬»ò£¬Èç¹û²»ÄÜ\n" "±»Ìæ´úÑ¡Ôñ[È¡Ïû] " -#: ../src/msw/ole/dataobj.cpp:161 +#: ../src/msw/ole/dataobj.cpp:165 #, c-format msgid "The clipboard format '%d' doesn't exist." msgstr "¼ôÌù°å¸ñʽ '%d' ²»´æÔÚ." @@ -2697,7 +2706,7 @@ msgstr "" "²»´æÔÚ\n" "ÏÖÔÚ´´½¨?" -#: ../src/common/docview.cpp:1802 +#: ../src/common/docview.cpp:1804 #, fuzzy, c-format msgid "" "The file '%s' doesn't exist and couldn't be opened.\n" @@ -2706,12 +2715,12 @@ msgstr "" "Îļþ '%s' ²»´æÔÚ,²»Äܱ»´ò¿ª.\n" "ÒÑ´ÓMRUÎļþÁбíÖÐÒÆÈ¥." -#: ../src/common/filename.cpp:896 +#: ../src/common/filename.cpp:900 #, c-format msgid "The path '%s' contains too many \"..\"!" msgstr "" -#: ../src/common/cmdline.cpp:845 +#: ../src/common/cmdline.cpp:846 #, c-format msgid "The required parameter '%s' was not specified." msgstr "±ØÐëµÄ²ÎÊý '%s' ûÓÐÖ¸¶¨." @@ -2720,19 +2729,19 @@ msgstr " msgid "The text couldn't be saved." msgstr "Îı¾²»Äܱ»±£´æ¡£" -#: ../src/common/cmdline.cpp:824 +#: ../src/common/cmdline.cpp:825 #, c-format msgid "The value for the option '%s' must be specified." msgstr "Ñ¡Ïî '%s'µÄÖµ±ØÐë±»Ö¸¶¨." -#: ../src/msw/dialup.cpp:406 +#: ../src/msw/dialup.cpp:408 #, c-format msgid "" "The version of remote access service (RAS) installed on this machine is " "tooold, please upgrade (the following required function is missing: %s)." msgstr "°²×°ÔÚ±¾»úµÄÔ¶³Ì·ÃÎÊ·þÎñ(RAS)Ì«¾É, Çë¸üÐÂËü (ÏÂÁбØÐëµÃº¯Êýȱʧ: %s)." -#: ../src/html/htmprint.cpp:545 +#: ../src/html/htmprint.cpp:540 msgid "" "There was a problem during page setup: you may need to set a default printer." msgstr "" @@ -2743,7 +2752,7 @@ msgid "" "storage" msgstr "Ïß³ÌÄ£¿é³õʼ»¯Ê§°Ü: ²»ÄÜÔÚÏ̱߳¾µØ´æ´¢ÇøÖдæ·ÅÖµ" -#: ../src/unix/threadpsx.cpp:1568 +#: ../src/unix/threadpsx.cpp:1596 msgid "Thread module initialization failed: failed to create thread key" msgstr "Ïß³ÌÄ£¿é³õʼ»¯Ê§°Ü: ´´½¨Ï̼߳üʧ°Ü" @@ -2753,7 +2762,7 @@ msgid "" "local storage" msgstr "Ïß³ÌÄ£¿é³õʼ»¯Ê§°Ü: ²»ÄÜÔÚÏ̱߳¾µØ´æ´¢ÇøÖзÖÅäË÷Òý" -#: ../src/unix/threadpsx.cpp:1076 +#: ../src/unix/threadpsx.cpp:1104 msgid "Thread priority setting is ignored." msgstr "Ïß³ÌÓÅÏȼ¶ÉèÖñ»ºöÂÔ." @@ -2765,15 +2774,15 @@ msgstr "" msgid "Tile &Vertically" msgstr "" -#: ../src/generic/filedlgg.cpp:701 +#: ../src/generic/filedlgg.cpp:706 msgid "Time" msgstr "ʱ¼ä" -#: ../src/generic/tipdlg.cpp:163 +#: ../src/generic/tipdlg.cpp:202 msgid "Tip of the Day" msgstr "ÿÈÕ¼¼ÇÉ" -#: ../src/generic/tipdlg.cpp:139 +#: ../src/generic/tipdlg.cpp:140 msgid "Tips not available, sorry!" msgstr "¶Ô²»Æð£¬Ã»ÓÐËùÐè¼¼ÇÉ!" @@ -2794,7 +2803,7 @@ msgstr " msgid "Trying to solve a NULL hostname: giving up" msgstr "ÊÔͼ½â¾ö NULL Ö÷»úÃû: ·ÅÆú" -#: ../src/common/fontmap.cpp:120 +#: ../src/common/fontmap.cpp:121 msgid "Turkish (ISO-8859-9)" msgstr "ÍÁ¶úÆäÓï (ISO-8859-9)" @@ -2807,7 +2816,7 @@ msgstr "US msgid "Unable to open requested HTML document: %s" msgstr "²»ÄÜ´ò¿ªHTMLÎĵµ: %s" -#: ../src/generic/fontdlgg.cpp:249 +#: ../src/generic/fontdlgg.cpp:250 msgid "Underline" msgstr "Ï»®Ïß" @@ -2824,45 +2833,45 @@ msgstr " msgid "Unexpected end of file whilst parsing resource." msgstr "ÔÚ½âÎö×ÊԴʱÒâÍâµ½´ïÎļþ½áβ." -#: ../src/common/cmdline.cpp:788 +#: ../src/common/cmdline.cpp:789 #, c-format msgid "Unexpected parameter '%s'" msgstr "ÒâÍâ²ÎÊý '%s'" -#: ../src/common/fontmap.cpp:141 +#: ../src/common/fontmap.cpp:142 msgid "Unicode 7 bit (UTF-7)" msgstr "" -#: ../src/common/fontmap.cpp:142 +#: ../src/common/fontmap.cpp:143 msgid "Unicode 8 bit (UTF-8)" msgstr "" -#: ../src/msw/dde.cpp:1020 +#: ../src/msw/dde.cpp:1044 #, c-format msgid "Unknown DDE error %08x" msgstr "δ֪ DDE ´íÎó %08x" -#: ../src/common/fontmap.cpp:403 +#: ../src/common/fontmap.cpp:406 #, c-format msgid "Unknown encoding (%d)" msgstr "λÖñàÂë (%d)" -#: ../src/unix/mimetype.cpp:2149 +#: ../src/unix/mimetype.cpp:2165 #, c-format msgid "Unknown field in file %s, line %d: '%s'." msgstr "ÔÚÎļþ %s, ÐÐ %dÊÇδ֪×Ö¶Î: '%s'." -#: ../src/common/cmdline.cpp:564 +#: ../src/common/cmdline.cpp:565 #, c-format msgid "Unknown long option '%s'" msgstr "δ֪longÑ¡Ïî '%s'" -#: ../src/common/cmdline.cpp:573 ../src/common/cmdline.cpp:594 +#: ../src/common/cmdline.cpp:574 ../src/common/cmdline.cpp:595 #, c-format msgid "Unknown option '%s'" msgstr "δ֪ѡÏî '%s'" -#: ../contrib/src/xrc/xmlres.cpp:628 +#: ../contrib/src/xrc/xmlres.cpp:701 msgid "Unknown style flag " msgstr "" @@ -2881,12 +2890,12 @@ msgstr "δ msgid "Unrecognized style %s whilst parsing resource." msgstr "½âÎö×ÊԴʱÓöµ½ÎÞ·¨Ê¶±ðµÄ·ç¸ñ %s." -#: ../src/mac/clipbrd.cpp:58 ../src/msw/clipbrd.cpp:273 +#: ../src/mac/clipbrd.cpp:59 ../src/msw/clipbrd.cpp:273 #: ../src/msw/clipbrd.cpp:447 msgid "Unsupported clipboard format." msgstr "²»Ö§³ÖµÄ¼ôÌù°å¸ñʽ" -#: ../src/common/appcmn.cpp:362 +#: ../src/common/appcmn.cpp:383 #, c-format msgid "Unsupported theme '%s'." msgstr "" @@ -2895,7 +2904,7 @@ msgstr "" msgid "Up" msgstr "" -#: ../src/common/cmdline.cpp:901 +#: ../src/common/cmdline.cpp:916 #, c-format msgid "Usage: %s" msgstr "Ó÷¨: %s" @@ -2904,23 +2913,23 @@ msgstr " msgid "Validation conflict" msgstr "ÑéÖ¤³åÍ»" -#: ../src/generic/filedlgg.cpp:1090 +#: ../src/generic/filedlgg.cpp:1103 msgid "View files as a detailed view" msgstr "°´ÏêϸÊÓͼ¹Û¿´Îļþ" -#: ../src/generic/filedlgg.cpp:1083 +#: ../src/generic/filedlgg.cpp:1096 msgid "View files as a list view" msgstr "°´ÁбíÊÓͼ¹Û¿´Îļþ" -#: ../src/common/docview.cpp:1615 +#: ../src/common/docview.cpp:1617 msgid "Views" msgstr "ÊÓͼ" -#: ../src/unix/utilsunx.cpp:752 +#: ../src/unix/utilsunx.cpp:758 msgid "Waiting for subprocess termination failed" msgstr "µÈ´ý×Ó¹ý³ÌÖÕֹʧ°Ü" -#: ../src/common/docview.cpp:437 ../src/common/resource.cpp:124 +#: ../src/common/docview.cpp:438 ../src/common/resource.cpp:124 msgid "Warning" msgstr "¾¯¸æ" @@ -2928,16 +2937,16 @@ msgstr " msgid "Warning: " msgstr "¾¯¸æ:" -#: ../src/html/htmlpars.cpp:357 +#: ../src/html/htmlpars.cpp:362 msgid "Warning: attempt to remove HTML tag handler from empty stack." msgstr "¾¯¸æ: ÊÓͼ´Ó¿ÕÕ»ÖÐÒÆÈ¥HTML±êÇ©´¦ÀíÆ÷." -#: ../src/common/fontmap.cpp:112 +#: ../src/common/fontmap.cpp:113 #, fuzzy msgid "Western European (ISO-8859-1)" msgstr "West European (ISO-8859-1/Latin 1)" -#: ../src/common/fontmap.cpp:126 +#: ../src/common/fontmap.cpp:127 #, fuzzy msgid "Western European with Euro (ISO-8859-15)" msgstr "West European new (ISO-8859-15/Latin 0)" @@ -2947,7 +2956,7 @@ msgstr "West European new (ISO-8859-15/Latin 0)" msgid "Whole word" msgstr "½öΪÕû×Ö" -#: ../src/html/helpfrm.cpp:407 +#: ../src/html/helpfrm.cpp:412 msgid "Whole words only" msgstr "½öΪÕû×Ö" @@ -2955,73 +2964,73 @@ msgstr " msgid "Win32 theme" msgstr "" -#: ../src/msw/utils.cpp:979 +#: ../src/msw/utils.cpp:981 msgid "Win32s on Windows 3.1" msgstr "Win32s on Windows 3.1" -#: ../src/msw/utils.cpp:1011 +#: ../src/msw/utils.cpp:1013 msgid "Windows 3.1" msgstr "Windows 3.1" -#: ../src/msw/utils.cpp:983 +#: ../src/msw/utils.cpp:985 #, c-format msgid "Windows 9%c" msgstr "Windows 9%c" -#: ../src/common/fontmap.cpp:138 +#: ../src/common/fontmap.cpp:139 msgid "Windows Arabic (CP 1256)" msgstr "Windows Arabic (CP 1256)" -#: ../src/common/fontmap.cpp:139 +#: ../src/common/fontmap.cpp:140 msgid "Windows Baltic (CP 1257)" msgstr "Windows Baltic (CP 1257)" -#: ../src/common/fontmap.cpp:132 +#: ../src/common/fontmap.cpp:133 #, fuzzy msgid "Windows Central European (CP 1250)" msgstr "Windows Ï£²®À´ (CP 1255)" -#: ../src/common/fontmap.cpp:129 +#: ../src/common/fontmap.cpp:130 msgid "Windows Chinese Simplified (CP 936)" msgstr "" -#: ../src/common/fontmap.cpp:131 +#: ../src/common/fontmap.cpp:132 #, fuzzy msgid "Windows Chinese Traditional (CP 950)" msgstr "Windows Latin 1 (CP 1252)" -#: ../src/common/fontmap.cpp:133 +#: ../src/common/fontmap.cpp:134 msgid "Windows Cyrillic (CP 1251)" msgstr "Windows Cyrillic (CP 1251)" -#: ../src/common/fontmap.cpp:135 +#: ../src/common/fontmap.cpp:136 msgid "Windows Greek (CP 1253)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:137 +#: ../src/common/fontmap.cpp:138 msgid "Windows Hebrew (CP 1255)" msgstr "Windows Ï£²®À´ (CP 1255)" -#: ../src/common/fontmap.cpp:128 +#: ../src/common/fontmap.cpp:129 #, fuzzy msgid "Windows Japanese (CP 932)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:130 +#: ../src/common/fontmap.cpp:131 #, fuzzy msgid "Windows Korean (CP 949)" msgstr "Windows Greek (CP 1253)" -#: ../src/common/fontmap.cpp:136 +#: ../src/common/fontmap.cpp:137 msgid "Windows Turkish (CP 1254)" msgstr "Windows ÍÁ¶úÆäÓï (CP 1254)" -#: ../src/common/fontmap.cpp:134 +#: ../src/common/fontmap.cpp:135 #, fuzzy msgid "Windows Western European (CP 1252)" msgstr "Windows Latin 1 (CP 1252)" -#: ../src/common/fontmap.cpp:140 +#: ../src/common/fontmap.cpp:141 msgid "Windows/DOS OEM (CP 437)" msgstr "Windows/DOS OEM (CP 437)" @@ -3044,26 +3053,22 @@ msgstr "" msgid "XPM: malformed colour definition '%s'!" msgstr "" -#: ../contrib/src/xrc/xmlres.cpp:436 +#: ../contrib/src/xrc/xmlres.cpp:470 #, fuzzy, c-format msgid "XRC resource '%s' (class '%s') not found!" msgstr "ûÓÐÕÒµ½Í¼±ê×ÊÔ´¹æ·¶ %s ." -#: ../contrib/src/xrc/xmlres.cpp:787 ../contrib/src/xrc/xmlres.cpp:798 +#: ../contrib/src/xrc/xmlres.cpp:861 ../contrib/src/xrc/xmlres.cpp:872 #, c-format msgid "XRC resource: Cannot create bitmap from '%s'." msgstr "" -#: ../contrib/src/xrc/xh_dlg.cpp:52 ../contrib/src/xrc/xh_frame.cpp:57 -msgid "XRC resource: Cannot create dialog without instance." -msgstr "" - -#: ../contrib/src/xrc/xmlres.cpp:747 +#: ../contrib/src/xrc/xmlres.cpp:821 #, c-format msgid "XRC resource: Incorrect colour specification '%s' for property '%s'." msgstr "" -#: ../src/common/dlgcmn.cpp:151 ../src/mac/msgdlg.cpp:77 +#: ../src/common/dlgcmn.cpp:214 ../src/mac/msgdlg.cpp:77 #: ../src/motif/msgdlg.cpp:182 msgid "Yes" msgstr "ÊÇ" @@ -3072,19 +3077,19 @@ msgstr " msgid "You cannot add a new directory to this section." msgstr "Äã²»ÄÜÏò¸ÃÏîÖмÓÈëеÄĿ¼." -#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:123 +#: ../src/common/fs_zip.cpp:86 ../src/common/fs_zip.cpp:125 msgid "ZIP handler currently supports only local files!" msgstr "" -#: ../src/common/docview.cpp:1951 +#: ../src/common/docview.cpp:1953 msgid "[EMPTY]" msgstr "[¿Õ]" -#: ../src/msw/dde.cpp:987 +#: ../src/msw/dde.cpp:1011 msgid "a DDEML application has created a prolonged race condition." msgstr "DDEMLÓ¦ÓóÌÐòÒÑ´´½¨ÑÓʱraceÌõ¼þ." -#: ../src/msw/dde.cpp:975 +#: ../src/msw/dde.cpp:999 msgid "" "a DDEML function was called without first calling the DdeInitialize " "function,\n" @@ -3095,39 +3100,39 @@ msgstr "" "»ò´«¸øDDEMLº¯ÊýµÄÊÇ\n" "ÎÞЧµÄʵÀý±êʶ." -#: ../src/msw/dde.cpp:993 +#: ../src/msw/dde.cpp:1017 msgid "a client's attempt to establish a conversation has failed." msgstr "¿Í»§ÊÔͼ½¨Á¢µÄ»á»°ÒÑʧ°Ü." -#: ../src/msw/dde.cpp:990 +#: ../src/msw/dde.cpp:1014 msgid "a memory allocation failed." msgstr "ÄÚ´æ·ÖÅäʧ°Ü." -#: ../src/msw/dde.cpp:984 +#: ../src/msw/dde.cpp:1008 msgid "a parameter failed to be validated by the DDEML." msgstr "DDEML²ÎÊýÑé֤ʧ°Ü." -#: ../src/msw/dde.cpp:966 +#: ../src/msw/dde.cpp:990 msgid "a request for a synchronous advise transaction has timed out." msgstr "ͬ²½adviseÊÂÎñÇëÇóÒѳ¬Ê±." -#: ../src/msw/dde.cpp:972 +#: ../src/msw/dde.cpp:996 msgid "a request for a synchronous data transaction has timed out." msgstr "ͬ²½dataÊÂÎñÇëÇóÒѳ¬Ê±." -#: ../src/msw/dde.cpp:981 +#: ../src/msw/dde.cpp:1005 msgid "a request for a synchronous execute transaction has timed out." msgstr "ͬ²½executeÊÂÎñÇëÇóÒѳ¬Ê±." -#: ../src/msw/dde.cpp:999 +#: ../src/msw/dde.cpp:1023 msgid "a request for a synchronous poke transaction has timed out." msgstr "ͬ²½pokeÊÂÎñÇëÇóÒѳ¬Ê±." -#: ../src/msw/dde.cpp:1014 +#: ../src/msw/dde.cpp:1038 msgid "a request to end an advise transaction has timed out." msgstr "ÖÕÖ¹½¨ÒéÊÂÎñµÄÇëÇóÒѳ¬Ê±." -#: ../src/msw/dde.cpp:1008 +#: ../src/msw/dde.cpp:1032 msgid "" "a server-side transaction was attempted on a conversation\n" "that was terminated by the client, or the server\n" @@ -3137,7 +3142,7 @@ msgstr "" "Òѱ»¿Í»§¶ËÖÕÖ¹µÄ»á»°, »ò·þÎñÆ÷\n" "ÔÚÍê³ÉÊÂÎñǰÖÕÖ¹." -#: ../src/msw/dde.cpp:996 +#: ../src/msw/dde.cpp:1020 msgid "a transaction failed." msgstr "ÊÂÎñʧ°Ü." @@ -3145,7 +3150,7 @@ msgstr " msgid "alt" msgstr "alt" -#: ../src/msw/dde.cpp:978 +#: ../src/msw/dde.cpp:1002 msgid "" "an application initialized as APPCLASS_MONITOR has\n" "attempted to perform a DDE transaction,\n" @@ -3157,15 +3162,15 @@ msgstr "" "»ò³õʼ»¯ÎªAPPCMD_CLIENTONLYµÄÓ¦ÓóÌÐò\n" "ÊÓͼִÐзþÎñÆ÷ÊÂÎñ." -#: ../src/msw/dde.cpp:1002 +#: ../src/msw/dde.cpp:1026 msgid "an internal call to the PostMessage function has failed. " msgstr "ÄÚ²¿µ÷ÓÃPostMessageʧ°Ü. " -#: ../src/msw/dde.cpp:1011 +#: ../src/msw/dde.cpp:1035 msgid "an internal error has occurred in the DDEML." msgstr "ÔÚDDEMLÖз¢ÉúÄÚ²¿´íÎó." -#: ../src/msw/dde.cpp:1017 +#: ../src/msw/dde.cpp:1041 msgid "" "an invalid transaction identifier was passed to a DDEML function.\n" "Once the application has returned from an XTYP_XACT_COMPLETE callback,\n" @@ -3175,7 +3180,7 @@ msgstr "" "Ò»µ©Ó¦ÓóÌÐò´ÓXTYP_XACT_COMPLETE»Øµ÷º¯Êý·µ»Ø,\n" "»Øµ÷º¯ÊýÊÂÎñ±êʶ·û¾Í²»ÔÙÓÐЧ." -#: ../src/common/fileconf.cpp:1570 +#: ../src/common/fileconf.cpp:1767 #, c-format msgid "attempt to change immutable key '%s' ignored." msgstr "ºöÂÔ¶ÔÖ»¶Á¼ü '%s'µÄÐÞ¸Ä." @@ -3184,12 +3189,12 @@ msgstr " msgid "binary" msgstr "" -#: ../src/common/fontcmn.cpp:518 +#: ../src/common/fontcmn.cpp:521 #, fuzzy msgid "bold" msgstr "´ÖÌå" -#: ../src/common/fontcmn.cpp:442 +#: ../src/common/fontcmn.cpp:445 #, fuzzy msgid "bold " msgstr "´ÖÌå" @@ -3199,32 +3204,32 @@ msgstr " msgid "can't close file '%s'" msgstr "²»ÄܹرÕÎļþ '%s'" -#: ../src/common/file.cpp:271 +#: ../src/common/file.cpp:275 #, c-format msgid "can't close file descriptor %d" msgstr "²»ÄܹرÕÎļþÃèÊö×Ó %d" -#: ../src/common/file.cpp:549 +#: ../src/common/file.cpp:553 #, c-format msgid "can't commit changes to file '%s'" msgstr "²»ÄܰÑÐÞ¸ÄÌá½»¸øÎļþ '%s'" -#: ../src/common/file.cpp:211 +#: ../src/common/file.cpp:215 #, c-format msgid "can't create file '%s'" msgstr "²»ÄÜ´´½¨Îļþ '%s'" -#: ../src/common/fileconf.cpp:1039 +#: ../src/common/fileconf.cpp:1078 #, c-format msgid "can't delete user configuration file '%s'" msgstr "²»ÄÜɾ³ýÓû§ÅäÖÃÎļþ '%s'" -#: ../src/common/file.cpp:454 +#: ../src/common/file.cpp:458 #, c-format msgid "can't determine if the end of file is reached on descriptor %d" msgstr "²»ÄÜÈ·¶¨ÊÇ·ñÒÑ´ïÎļþ %d µÄβ²¿" -#: ../src/common/file.cpp:420 +#: ../src/common/file.cpp:424 #, c-format msgid "can't find length of file on file descriptor %d" msgstr "²»ÄÜ»ñµÃÎļþÃèÊö×Ó %dµÄÎļþµÄ³¤¶È" @@ -3233,55 +3238,55 @@ msgstr " msgid "can't find user's HOME, using current directory." msgstr "ÕÒ²»µ½Óû§Ä¿Â¼HOME, ʹÓõ±Ç°Ä¿Â¼." -#: ../src/common/file.cpp:334 +#: ../src/common/file.cpp:338 #, c-format msgid "can't flush file descriptor %d" msgstr "²»ÄÜË¢ÐÂÎļþÃèÊö×Ó %d" -#: ../src/common/file.cpp:388 +#: ../src/common/file.cpp:392 #, c-format msgid "can't get seek position on file descriptor %d" msgstr "²»ÄÜ»ñµÃÎļþÃèÊö×Ó %dµÄÖ¸ÕëλÖÃ" -#: ../src/common/fontmap.cpp:766 +#: ../src/common/fontmap.cpp:807 msgid "can't load any font, aborting" msgstr "²»ÄÜ×°ÔØÈκÎ×ÖÌå, ÕýÔÚÖÐÖ¹" -#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:257 +#: ../src/common/ffile.cpp:77 ../src/common/file.cpp:261 #, c-format msgid "can't open file '%s'" msgstr "²»ÄÜ´ò¿ªÎļþ '%s'" -#: ../src/common/fileconf.cpp:388 +#: ../src/common/fileconf.cpp:397 #, c-format msgid "can't open global configuration file '%s'." msgstr "²»ÄÜ´ò¿ªÈ«¾ÖÅäÖÃÎļþ '%s'." -#: ../src/common/fileconf.cpp:400 +#: ../src/common/fileconf.cpp:416 #, c-format msgid "can't open user configuration file '%s'." msgstr "²»ÄÜ´ò¿ªÓû§ÅäÖÃÎļþ '%s'." -#: ../src/common/fileconf.cpp:910 +#: ../src/common/fileconf.cpp:949 msgid "can't open user configuration file." msgstr "²»ÄÜ´ò¿ªÓû§ÅäÖÃÎļþ." -#: ../src/common/file.cpp:297 +#: ../src/common/file.cpp:301 #, c-format msgid "can't read from file descriptor %d" msgstr "²»ÄÜ´ÓÎļþÃèÊö×Ó %dÖжÁ" -#: ../src/common/file.cpp:544 +#: ../src/common/file.cpp:548 #, c-format msgid "can't remove file '%s'" msgstr "²»ÄÜɾ³ýÎļþ '%s'" -#: ../src/common/file.cpp:560 +#: ../src/common/file.cpp:564 #, c-format msgid "can't remove temporary file '%s'" msgstr "²»ÄÜɾ³ýÁÙʱÎļþ '%s'" -#: ../src/common/file.cpp:374 +#: ../src/common/file.cpp:378 #, c-format msgid "can't seek on file descriptor %d" msgstr "²»Äܶ¨Î»ÎļþÃèÊö×Ó %d" @@ -3291,12 +3296,12 @@ msgstr " msgid "can't write buffer '%s' to disk." msgstr "²»ÄܰÑÎļþ '%s'дµ½´ÅÅÌ." -#: ../src/common/file.cpp:319 +#: ../src/common/file.cpp:323 #, c-format msgid "can't write to file descriptor %d" msgstr "²»ÄÜдµ½ÎļþÃèÊö×Ó %d" -#: ../src/common/fileconf.cpp:926 +#: ../src/common/fileconf.cpp:965 msgid "can't write user configuration file." msgstr "²»ÄÜдÓû§ÅäÖÃÎļþ." @@ -3309,33 +3314,33 @@ msgstr " msgid "ctrl" msgstr "ctrl" -#: ../src/common/cmdline.cpp:1034 +#: ../src/common/cmdline.cpp:1056 msgid "date" msgstr "ÈÕÆÚ" -#: ../src/common/fontmap.cpp:413 +#: ../src/common/fontmap.cpp:416 #, fuzzy msgid "default" msgstr "alt" -#: ../src/common/datetime.cpp:3237 +#: ../src/common/datetime.cpp:3363 msgid "eighteenth" msgstr "µÚÊ®°Ë" -#: ../src/common/datetime.cpp:3227 +#: ../src/common/datetime.cpp:3353 msgid "eighth" msgstr "µÚ°Ë" -#: ../src/common/datetime.cpp:3230 +#: ../src/common/datetime.cpp:3356 msgid "eleventh" msgstr "µÚʮһ" -#: ../src/common/fileconf.cpp:1557 +#: ../src/common/fileconf.cpp:1753 #, c-format msgid "entry '%s' appears more than once in group '%s'" msgstr "ÌõÄ¿ '%s' ÔÚ×é '%s'ÖÐÒѳöÏÖÒ»´ÎÒÔÉÏ" -#: ../src/msw/dialup.cpp:841 +#: ../src/msw/dialup.cpp:843 msgid "establish" msgstr "½¨Á¢" @@ -3344,64 +3349,69 @@ msgstr " msgid "failed to flush the file '%s'" msgstr "Ë¢ÐÂÎļþ '%s'ʧ°Ü" -#: ../src/common/datetime.cpp:3234 +#: ../src/common/datetime.cpp:3360 msgid "fifteenth" msgstr "µÚÊ®Îå" -#: ../src/common/datetime.cpp:3224 +#: ../src/common/datetime.cpp:3350 msgid "fifth" msgstr "µÚÎå" -#: ../src/common/fileconf.cpp:612 +#: ../src/common/fileconf.cpp:626 #, c-format msgid "file '%s', line %d: '%s' ignored after group header." msgstr "Îļþ '%s', ÐÐ %d: '%s' ×éÍ·ºó±¸ºöÂÔ." -#: ../src/common/fileconf.cpp:641 +#: ../src/common/fileconf.cpp:655 #, c-format msgid "file '%s', line %d: '=' expected." msgstr "Îļþ '%s', ÐÐ %d: ÆÚÍû '='." -#: ../src/common/fileconf.cpp:667 +#: ../src/common/fileconf.cpp:681 #, c-format msgid "file '%s', line %d: key '%s' was first found at line %d." msgstr "Îļþ '%s', ÐÐ %d: ¼ü '%s' µÚÒ»´Î³öÏÖÔÚÐÐ %d." -#: ../src/common/fileconf.cpp:657 +#: ../src/common/fileconf.cpp:671 #, c-format msgid "file '%s', line %d: value for immutable key '%s' ignored." msgstr "Îļþ '%s', ÐÐ %d: ºöÂÔ²»ÄÜÐ޸ļü '%s'µÄÖµ." -#: ../src/common/fileconf.cpp:580 +#: ../src/common/fileconf.cpp:594 #, c-format msgid "file '%s': unexpected character %c at line %d." msgstr "Îļþ '%s': ·ÇÔ¤ÆÚµÄ×Ö·û %c ´æÔÚÓÚÐÐ %d.ÖÐ" -#: ../src/common/datetime.cpp:3220 +#: ../src/common/datetime.cpp:3346 msgid "first" msgstr "µÚÒ»" -#: ../src/common/datetime.cpp:3233 +#: ../src/common/datetime.cpp:3359 msgid "fourteenth" msgstr "µÚÊ®ËÄ" -#: ../src/common/datetime.cpp:3223 +#: ../src/common/datetime.cpp:3349 msgid "fourth" msgstr "µÚËÄ" -#: ../src/common/appcmn.cpp:301 +#: ../src/common/appcmn.cpp:322 msgid "generate verbose log messages" msgstr "" -#: ../src/common/timercmn.cpp:282 +#: ../src/common/timercmn.cpp:290 msgid "gmtime() failed" msgstr "gmtime() ʧ°Ü" -#: ../src/msw/dialup.cpp:841 +#: ../src/mac/scrolbar.cpp:143 +#, c-format +msgid "illegal scrollbar selector %d" +msgstr "" + +#: ../src/msw/dialup.cpp:843 msgid "initiate" msgstr "³õʼ»¯" -#: ../src/common/file.cpp:458 +#: ../src/common/file.cpp:462 msgid "invalid eof() return value." msgstr "ÎÞЧµÄeof()·µ»ØÖµ." @@ -3409,21 +3419,17 @@ msgstr " msgid "invalid message box return value" msgstr "ÏûÏ¢¿ò·µ»ØÎÞЧµÄÖµ" -#: ../src/common/fontcmn.cpp:458 ../src/common/fontcmn.cpp:522 +#: ../src/common/fontcmn.cpp:461 ../src/common/fontcmn.cpp:525 #, fuzzy msgid "italic" msgstr "бÌå" -#: ../src/html/helpfrm.cpp:935 -msgid "large" -msgstr "´ó" - -#: ../src/common/fontcmn.cpp:514 +#: ../src/common/fontcmn.cpp:517 #, fuzzy msgid "light" msgstr "Çá" -#: ../src/common/fontcmn.cpp:438 +#: ../src/common/fontcmn.cpp:441 #, fuzzy msgid "light " msgstr "Çá" @@ -3438,59 +3444,55 @@ msgstr " msgid "looking for catalog '%s' in path '%s'." msgstr "²éÕÒĿ¼ '%s' ÔÚ·¾¶ '%s'ÏÂ." -#: ../src/html/helpfrm.cpp:935 -msgid "medium" -msgstr "ÖÐ" - -#: ../src/common/datetime.cpp:3385 +#: ../src/common/datetime.cpp:3511 msgid "midnight" msgstr "ÎçÒ¹" -#: ../src/common/timercmn.cpp:278 +#: ../src/common/timercmn.cpp:286 msgid "mktime() failed" msgstr "mktime()ʧ°Ü" -#: ../src/common/datetime.cpp:3238 +#: ../src/common/datetime.cpp:3364 msgid "nineteenth" msgstr "µÚÊ®¾Å" -#: ../src/common/datetime.cpp:3228 +#: ../src/common/datetime.cpp:3354 msgid "ninth" msgstr "µÚ¾Å" -#: ../src/msw/dde.cpp:962 +#: ../src/msw/dde.cpp:986 msgid "no DDE error." msgstr "ûÓÐDDE´íÎó" -#: ../src/html/helpdata.cpp:561 ../src/html/htmlhelp.cpp:201 +#: ../src/html/helpdata.cpp:575 msgid "noname" msgstr "δÃû" -#: ../src/common/datetime.cpp:3384 +#: ../src/common/datetime.cpp:3510 msgid "noon" msgstr "ÖÐÎç" -#: ../src/common/cmdline.cpp:1033 +#: ../src/common/cmdline.cpp:1052 msgid "num" msgstr "num" -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 msgid "reading" msgstr "" -#: ../src/msw/dde.cpp:1005 +#: ../src/msw/dde.cpp:1029 msgid "reentrancy problem." msgstr "ÖØÈëÎÊÌâ" -#: ../src/common/datetime.cpp:3221 +#: ../src/common/datetime.cpp:3347 msgid "second" msgstr "µÚ¶þ" -#: ../src/common/datetime.cpp:3236 +#: ../src/common/datetime.cpp:3362 msgid "seventeenth" msgstr "µÚÊ®Æß" -#: ../src/common/datetime.cpp:3226 +#: ../src/common/datetime.cpp:3352 msgid "seventh" msgstr "µÚÆß" @@ -3498,82 +3500,78 @@ msgstr " msgid "shift" msgstr "shift" -#: ../src/common/appcmn.cpp:291 +#: ../src/common/appcmn.cpp:312 msgid "show this help message" msgstr "" -#: ../src/common/datetime.cpp:3235 +#: ../src/common/datetime.cpp:3361 msgid "sixteenth" msgstr "µÚÊ®Áù" -#: ../src/common/datetime.cpp:3225 +#: ../src/common/datetime.cpp:3351 msgid "sixth" msgstr "µÚÁù" -#: ../src/html/helpfrm.cpp:935 -msgid "small" -msgstr "С" - -#: ../src/common/appcmn.cpp:326 +#: ../src/common/appcmn.cpp:347 msgid "specify display mode to use (e.g. 640x480-16)" msgstr "" -#: ../src/common/appcmn.cpp:312 +#: ../src/common/appcmn.cpp:333 msgid "specify the theme to use" msgstr "" -#: ../src/common/cmdline.cpp:1032 +#: ../src/common/cmdline.cpp:1048 msgid "str" msgstr "str" -#: ../src/common/datetime.cpp:3229 +#: ../src/common/datetime.cpp:3355 msgid "tenth" msgstr "µÚÊ®" -#: ../src/msw/dde.cpp:969 +#: ../src/msw/dde.cpp:993 msgid "the response to the transaction caused the DDE_FBUSY bit to be set." msgstr "¶ÔʼþµÄÏìÓ¦µ¼ÖÂDDE_FBUSYλ±»ÉèÖÃ." -#: ../src/common/datetime.cpp:3222 +#: ../src/common/datetime.cpp:3348 msgid "third" msgstr "µÚÈý" -#: ../src/common/datetime.cpp:3232 +#: ../src/common/datetime.cpp:3358 msgid "thirteenth" msgstr "µÚÊ®Èý" -#: ../src/common/datetime.cpp:3064 +#: ../src/common/datetime.cpp:3190 msgid "today" msgstr "½ñÌì" -#: ../src/common/datetime.cpp:3066 +#: ../src/common/datetime.cpp:3192 msgid "tomorrow" msgstr "Ã÷Ìì" -#: ../src/common/datetime.cpp:3231 +#: ../src/common/datetime.cpp:3357 msgid "twelfth" msgstr "µÚÊ®¶þ" -#: ../src/common/datetime.cpp:3239 +#: ../src/common/datetime.cpp:3365 msgid "twentieth" msgstr "µÚ¶þÊ®" -#: ../src/common/fontcmn.cpp:510 +#: ../src/common/fontcmn.cpp:513 #, fuzzy msgid "underlined" msgstr "Ï»®Ïß" -#: ../src/common/fontcmn.cpp:425 +#: ../src/common/fontcmn.cpp:428 #, fuzzy msgid "underlined " msgstr "Ï»®Ïß" -#: ../src/common/fileconf.cpp:1684 +#: ../src/common/fileconf.cpp:1887 #, c-format msgid "unexpected \" at position %d in '%s'." msgstr "ÀýÍâµÄ \" ÔÚλÖà %d in '%s'." -#: ../src/generic/progdlgg.cpp:283 +#: ../src/generic/progdlgg.cpp:282 msgid "unknown" msgstr "δ֪" @@ -3582,12 +3580,17 @@ msgstr "δ֪" msgid "unknown error" msgstr "GIF: λÖôíÎó!!!" -#: ../src/msw/dialup.cpp:445 +#: ../src/msw/dialup.cpp:447 #, c-format msgid "unknown error (error code %08x)." msgstr "δ֪´íÎó(´íÎóºÅ %08x)." -#: ../src/common/file.cpp:357 +#: ../src/common/textbuf.cpp:229 +#, fuzzy +msgid "unknown line terminator" +msgstr "δ֪ËÑË÷Ô­µã" + +#: ../src/common/file.cpp:361 msgid "unknown seek origin" msgstr "δ֪ËÑË÷Ô­µã" @@ -3596,11 +3599,11 @@ msgstr "δ֪ msgid "unknown-%d" msgstr "δ֪-%d" -#: ../src/common/docview.cpp:406 +#: ../src/common/docview.cpp:407 msgid "unnamed" msgstr "unnamed" -#: ../src/common/docview.cpp:1222 +#: ../src/common/docview.cpp:1224 #, c-format msgid "unnamed%d" msgstr "unnamed%d" @@ -3610,15 +3613,7 @@ msgstr "unnamed%d" msgid "using catalog '%s' from '%s'." msgstr "ʹÓÃĿ¼ '%s' ´Ó '%s'." -#: ../src/html/helpfrm.cpp:935 -msgid "very large" -msgstr "·Ç³£´ó" - -#: ../src/html/helpfrm.cpp:935 -msgid "very small" -msgstr "·Ç³£Ð¡" - -#: ../src/common/filename.cpp:162 +#: ../src/common/filename.cpp:166 #, fuzzy msgid "writing" msgstr "´òÓ¡" @@ -3628,19 +3623,15 @@ msgstr " msgid "wxDllLoader failed to GetSymbol '%s'" msgstr "" -#: ../src/common/dynload.cpp:278 +#: ../src/common/dynload.cpp:282 #, c-format msgid "wxDynamicLibrary failed to GetSymbol '%s'" msgstr "" -#: ../src/common/timercmn.cpp:327 +#: ../src/common/timercmn.cpp:335 msgid "wxGetTimeOfDay failed." msgstr "wxGetTimeOfDay ʧ°Ü." -#: ../src/html/search.cpp:49 -msgid "wxSearchEngine::LookFor must be called before scanning!" -msgstr "" - #: ../src/common/socket.cpp:394 ../src/common/socket.cpp:448 msgid "wxSocket: invalid signature in ReadMsg." msgstr "wxSocket: ReadMsgÖÐÎÞЧµÄÇ©Ãû." @@ -3649,23 +3640,55 @@ msgstr "wxSocket: ReadMsg msgid "wxSocket: unknown event!." msgstr "wxSocket: δ֪ʼþ!." -#: ../src/motif/app.cpp:590 +#: ../src/motif/app.cpp:586 #, c-format msgid "wxWindows could not open display for '%s': exiting." msgstr "wxWindows ²»ÄÜΪ '%s' ´ò¿ªÏÔʾÉ豸: ÒѾ­´æÔÚ." -#: ../src/x11/app.cpp:265 +#: ../src/x11/app.cpp:245 #, fuzzy msgid "wxWindows could not open display. Exiting." msgstr "wxWindows ²»ÄÜΪ '%s' ´ò¿ªÏÔʾÉ豸: ÒѾ­´æÔÚ." -#: ../src/common/datetime.cpp:3065 +#: ../src/common/datetime.cpp:3191 msgid "yesterday" msgstr "×òÌì" +#~ msgid " bytes " +#~ msgstr "×Ö½Ú" + +#~ msgid "

    " +#~ msgstr "<Ŀ¼> " + +#~ msgid " " +#~ msgstr "<Á¬½Ó>" + #, fuzzy -#~ msgid "All files (*.*)|*.*" -#~ msgstr "ËùÓÐÎļþ (*)|*" +#~ msgid "DIB Header: Cannot deal with 4bit encoded yet." +#~ msgstr "BMP: »¹²»ÄÜ´¦Àí4λ±àÂë." + +#, fuzzy +#~ msgid "Help : %s" +#~ msgstr "°ïÖú: %s" + +#, fuzzy +#~ msgid "Search!" +#~ msgstr "ËÑË÷" + +#~ msgid "large" +#~ msgstr "´ó" + +#~ msgid "medium" +#~ msgstr "ÖÐ" + +#~ msgid "small" +#~ msgstr "С" + +#~ msgid "very large" +#~ msgstr "·Ç³£´ó" + +#~ msgid "very small" +#~ msgstr "·Ç³£Ð¡" #~ msgid "Can not create mutex" #~ msgstr "²»ÄÜ´´½¨»¥³â¶ÔÏó" @@ -3722,10 +3745,6 @@ msgstr " #~ msgid "Y Translation" #~ msgstr "YÆ½ÒÆ" -#, fuzzy -#~ msgid "unknown line terminator" -#~ msgstr "δ֪ËÑË÷Ô­µã" - #, fuzzy #~ msgid "Fatal Error" #~ msgstr "ÖÂÃü´íÎó" diff --git a/misc/languages/langtabl.txt b/misc/languages/langtabl.txt index d7c084ddf0..ff76815430 100644 --- a/misc/languages/langtabl.txt +++ b/misc/languages/langtabl.txt @@ -41,11 +41,11 @@ wxLANGUAGE_CAMBODIAN km - - wxLANGUAGE_CATALAN ca_ES LANG_CATALAN SUBLANG_DEFAULT "Catalan" wxLANGUAGE_CHINESE zh_CN LANG_CHINESE SUBLANG_DEFAULT "Chinese" wxLANGUAGE_CHINESE_SIMPLIFIED zh_CN LANG_CHINESE SUBLANG_CHINESE_SIMPLIFIED "Chinese (Simplified)" -wxLANGUAGE_CHINESE_TRADITIONAL zh_CN LANG_CHINESE SUBLANG_CHINESE_TRADITIONAL "Chinese (Traditional)" +wxLANGUAGE_CHINESE_TRADITIONAL zh_TW LANG_CHINESE SUBLANG_CHINESE_TRADITIONAL "Chinese (Traditional)" wxLANGUAGE_CHINESE_HONGKONG zh_HK LANG_CHINESE SUBLANG_CHINESE_HONGKONG "Chinese (Hongkong)" wxLANGUAGE_CHINESE_MACAU zh_MO LANG_CHINESE SUBLANG_CHINESE_MACAU "Chinese (Macau)" wxLANGUAGE_CHINESE_SINGAPORE zh_SG LANG_CHINESE SUBLANG_CHINESE_SINGAPORE "Chinese (Singapore)" -wxLANGUAGE_CHINESE_TAIWAN zh_TW - - "Chinese (Taiwan)" +wxLANGUAGE_CHINESE_TAIWAN zh_TW LANG_CHINESE SUBLANG_CHINESE_TRADITIONAL "Chinese (Taiwan)" wxLANGUAGE_CORSICAN co - - "Corsican" wxLANGUAGE_CROATIAN hr_HR LANG_CROATIAN SUBLANG_DEFAULT "Croatian" wxLANGUAGE_CZECH cs_CZ LANG_CZECH SUBLANG_DEFAULT "Czech" diff --git a/samples/artprov/artbrows.cpp b/samples/artprov/artbrows.cpp index 7a9618b2af..66d967ee0e 100644 --- a/samples/artprov/artbrows.cpp +++ b/samples/artprov/artbrows.cpp @@ -33,7 +33,7 @@ #include "artbrows.h" #define ART_CLIENT(id) \ - choice->Append(#id, (void*)id); + choice->Append(_T(#id), (void*)id); #define ART_ICON(id) \ { \ int ind; \ @@ -42,7 +42,7 @@ ind = images->Add(icon); \ else \ ind = 0; \ - list->InsertItem(index, #id, ind); \ + list->InsertItem(index, _T(#id), ind); \ list->SetItemData(index, (long)id); \ index++; \ } diff --git a/samples/artprov/artprov.dsp b/samples/artprov/artprov.dsp index 2ed0bea518..e30e8f32c4 100644 --- a/samples/artprov/artprov.dsp +++ b/samples/artprov/artprov.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "artprov - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "artprov - Win32 Release" diff --git a/samples/artprov/makefile.wat b/samples/artprov/makefile.wat index af024efa8c..65731b6c6b 100644 --- a/samples/artprov/makefile.wat +++ b/samples/artprov/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = arttest -OBJECTS = $(PROGRAM).obj artbrows.obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\artprov +# +PROGRAM = artprov +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/calendar/calendar.cpp b/samples/calendar/calendar.cpp index 064230791d..0d1e456265 100644 --- a/samples/calendar/calendar.cpp +++ b/samples/calendar/calendar.cpp @@ -186,7 +186,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("Calendar wxWindows sample", + MyFrame *frame = new MyFrame(_T("Calendar wxWindows sample"), wxPoint(50, 50), wxSize(450, 340)); frame->Show(TRUE); @@ -208,41 +208,41 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Calendar_File_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(Calendar_File_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(Calendar_File_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Calendar_File_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenu *menuCal = new wxMenu; menuCal->Append(Calendar_Cal_Monday, - "Monday &first weekday\tCtrl-F", - "Toggle between Mon and Sun as the first week day", + _T("Monday &first weekday\tCtrl-F"), + _T("Toggle between Mon and Sun as the first week day"), TRUE); - menuCal->Append(Calendar_Cal_Holidays, "Show &holidays\tCtrl-H", - "Toggle highlighting the holidays", + menuCal->Append(Calendar_Cal_Holidays, _T("Show &holidays\tCtrl-H"), + _T("Toggle highlighting the holidays"), TRUE); - menuCal->Append(Calendar_Cal_Special, "Highlight &special dates\tCtrl-S", - "Test custom highlighting", + menuCal->Append(Calendar_Cal_Special, _T("Highlight &special dates\tCtrl-S"), + _T("Test custom highlighting"), TRUE); menuCal->Append(Calendar_Cal_SurroundWeeks, - "Show s&urrounding weeks\tCtrl-W", - "Show the neighbouring weeks in the prev/next month", + _T("Show s&urrounding weeks\tCtrl-W"), + _T("Show the neighbouring weeks in the prev/next month"), TRUE); menuCal->AppendSeparator(); menuCal->Append(Calendar_Cal_SeqMonth, - "To&ggle month selector style\tCtrl-G", - "Use another style for the calendar controls", + _T("To&ggle month selector style\tCtrl-G"), + _T("Use another style for the calendar controls"), TRUE); - menuCal->Append(Calendar_Cal_Month, "&Month can be changed\tCtrl-M", - "Allow changing the month in the calendar", + menuCal->Append(Calendar_Cal_Month, _T("&Month can be changed\tCtrl-M"), + _T("Allow changing the month in the calendar"), TRUE); - menuCal->Append(Calendar_Cal_Year, "&Year can be changed\tCtrl-Y", - "Allow changing the year in the calendar", + menuCal->Append(Calendar_Cal_Year, _T("&Year can be changed\tCtrl-Y"), + _T("Allow changing the year in the calendar"), TRUE); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuCal, "&Calendar"); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(menuCal, _T("&Calendar")); menuBar->Check(Calendar_Cal_Monday, TRUE); menuBar->Check(Calendar_Cal_Holidays, TRUE); @@ -257,7 +257,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) #if wxUSE_STATUSBAR // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); #endif // wxUSE_STATUSBAR } diff --git a/samples/calendar/calendar.dsp b/samples/calendar/calendar.dsp index 124f11083d..45d2d63dfa 100644 --- a/samples/calendar/calendar.dsp +++ b/samples/calendar/calendar.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "calendar - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "calendar - Win32 Release" diff --git a/samples/calendar/makefile.wat b/samples/calendar/makefile.wat index 61ebd2d109..bff04c9307 100644 --- a/samples/calendar/makefile.wat +++ b/samples/calendar/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for calendar example (Watcom) -# Created: 2000-01-03 - -WXDIR = $(%WXWIN) - -PROGRAM = calendar -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\calendar +# +PROGRAM = calendar +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/caret/caret.cpp b/samples/caret/caret.cpp index 72da514d14..538ab8fda1 100644 --- a/samples/caret/caret.cpp +++ b/samples/caret/caret.cpp @@ -176,7 +176,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // create and show the main application window - MyFrame *frame = new MyFrame("Caret wxWindows sample", + MyFrame *frame = new MyFrame(_T("Caret wxWindows sample"), wxPoint(50, 50), wxSize(450, 340)); frame->Show(TRUE); @@ -201,16 +201,16 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Caret_SetBlinkTime, "&Blink time...\tCtrl-B"); - menuFile->Append(Caret_Move, "&Move caret\tCtrl-C"); + menuFile->Append(Caret_SetBlinkTime, _T("&Blink time...\tCtrl-B")); + menuFile->Append(Caret_Move, _T("&Move caret\tCtrl-C")); menuFile->AppendSeparator(); - menuFile->Append(Caret_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(Caret_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(Caret_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Caret_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _T("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -219,7 +219,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); } diff --git a/samples/caret/caret.dsp b/samples/caret/caret.dsp index ed0de2494f..daa005e21b 100644 --- a/samples/caret/caret.dsp +++ b/samples/caret/caret.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "caret - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "caret - Win32 Release" diff --git a/samples/caret/makefile.wat b/samples/caret/makefile.wat index a234176792..5ee9a7ee39 100644 --- a/samples/caret/makefile.wat +++ b/samples/caret/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = caret -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\caret +# +PROGRAM = caret +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/checklst/checklst.cpp b/samples/checklst/checklst.cpp index cba00d91ae..ff801abad6 100644 --- a/samples/checklst/checklst.cpp +++ b/samples/checklst/checklst.cpp @@ -46,7 +46,7 @@ class CheckListBoxFrame : public wxFrame { public: // ctor & dtor - CheckListBoxFrame(wxFrame *frame, const char *title, + CheckListBoxFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h); virtual ~CheckListBoxFrame(); @@ -324,8 +324,8 @@ void CheckListBoxFrame::OnButtonMove(bool up) void CheckListBoxFrame::AdjustColour(size_t index) { - // not implemented in other ports yet -#ifdef __WXMSW__ + // not implemented in ports other than (native) MSW yet +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) // even items have grey backround, odd ones - white unsigned char c = index % 2 ? 255 : 200; m_pListBox->GetItem(index)->SetBackgroundColour(wxColor(c, c, c)); diff --git a/samples/checklst/checklst.dsp b/samples/checklst/checklst.dsp index 79cb655c10..e7af3fe5f2 100644 --- a/samples/checklst/checklst.dsp +++ b/samples/checklst/checklst.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "checklst - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "checklst - Win32 Release" diff --git a/samples/checklst/makefile.wat b/samples/checklst/makefile.wat index 1e219417b0..b942feebc3 100644 --- a/samples/checklst/makefile.wat +++ b/samples/checklst/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = checklst -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\checklst +# +PROGRAM = checklst +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/config/config.dsp b/samples/config/config.dsp index 90b4a160af..3ef45e5686 100644 --- a/samples/config/config.dsp +++ b/samples/config/config.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "config - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "config - Win32 Release" diff --git a/samples/config/conftest.cpp b/samples/config/conftest.cpp index 2eedfb60dd..0b8679bade 100644 --- a/samples/config/conftest.cpp +++ b/samples/config/conftest.cpp @@ -95,8 +95,8 @@ bool MyApp::OnInit() // of the config file/registry key and must be set before the first call // to Get() if you want to override the default values (the application // name is the name of the executable and the vendor name is the same) - SetVendorName("wxWindows"); - SetAppName("conftest"); // not needed, it's the default value + SetVendorName(_T("wxWindows")); + SetAppName(_T("conftest")); // not needed, it's the default value wxConfigBase *pConfig = wxConfigBase::Get(); @@ -118,11 +118,11 @@ bool MyApp::OnInit() SetTopWindow(frame); // use our config object... - if ( pConfig->Read("/Controls/Check", 1l) != 0 ) { - wxMessageBox("You can disable this message box by unchecking\n" - "the checkbox in the main window (of course, a real\n" - "program would have a checkbox right here but we\n" - "keep it simple)", "Welcome to wxConfig demo", + if ( pConfig->Read(_T("/Controls/Check"), 1l) != 0 ) { + wxMessageBox(_T("You can disable this message box by unchecking\n") + _T("the checkbox in the main window (of course, a real\n") + _T("program would have a checkbox right here but we\n") + _T("keep it simple)"), _T("Welcome to wxConfig demo"), wxICON_INFORMATION | wxOK); } @@ -145,28 +145,28 @@ int MyApp::OnExit() // main frame ctor MyFrame::MyFrame() - : wxFrame((wxFrame *) NULL, -1, "wxConfig Demo") + : wxFrame((wxFrame *) NULL, -1, _T("wxConfig Demo")) { // menu wxMenu *file_menu = new wxMenu; - file_menu->Append(ConfTest_Delete, "&Delete", "Delete config file"); + file_menu->Append(ConfTest_Delete, _T("&Delete"), _T("Delete config file")); file_menu->AppendSeparator(); - file_menu->Append(ConfTest_About, "&About\tF1", "About this sample"); + file_menu->Append(ConfTest_About, _T("&About\tF1"), _T("About this sample")); file_menu->AppendSeparator(); - file_menu->Append(ConfTest_Quit, "E&xit\tAlt-X", "Exit the program"); + file_menu->Append(ConfTest_Quit, _T("E&xit\tAlt-X"), _T("Exit the program")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); SetMenuBar(menu_bar); CreateStatusBar(); // child controls wxPanel *panel = new wxPanel(this); - (void)new wxStaticText(panel, -1, "These controls remember their values!", + (void)new wxStaticText(panel, -1, _T("These controls remember their values!"), wxPoint(10, 10), wxSize(300, 20)); - m_text = new wxTextCtrl(panel, -1, "", wxPoint(10, 40), wxSize(300, 20)); - m_check = new wxCheckBox(panel, -1, "show welcome message box at startup", + m_text = new wxTextCtrl(panel, -1, _T(""), wxPoint(10, 40), wxSize(300, 20)); + m_check = new wxCheckBox(panel, -1, _T("show welcome message box at startup"), wxPoint(10, 70), wxSize(300, 20)); // restore the control's values from the config @@ -179,25 +179,25 @@ MyFrame::MyFrame() wxConfigBase *pConfig = wxConfigBase::Get(); // we could write Read("/Controls/Text") as well, it's just to show SetPath() - pConfig->SetPath("/Controls"); + pConfig->SetPath(_T("/Controls")); - m_text->SetValue(pConfig->Read("Text", "")); - m_check->SetValue(pConfig->Read("Check", 1l) != 0); + m_text->SetValue(pConfig->Read(_T("Text"), _T(""))); + m_check->SetValue(pConfig->Read(_T("Check"), 1l) != 0); // SetPath() understands ".." - pConfig->SetPath("../MainFrame"); + pConfig->SetPath(_T("../MainFrame")); // restore frame position and size - int x = pConfig->Read("x", 50), - y = pConfig->Read("y", 50), - w = pConfig->Read("w", 350), - h = pConfig->Read("h", 200); + int x = pConfig->Read(_T("x"), 50), + y = pConfig->Read(_T("y"), 50), + w = pConfig->Read(_T("w"), 350), + h = pConfig->Read(_T("h"), 200); Move(x, y); SetClientSize(w, h); - pConfig->SetPath("/"); + pConfig->SetPath(_T("/")); wxString s; - if ( pConfig->Read("TestValue", &s) ) + if ( pConfig->Read(_T("TestValue"), &s) ) { wxLogStatus(this, wxT("TestValue from config is '%s'"), s.c_str()); } @@ -247,18 +247,18 @@ MyFrame::~MyFrame() return; // save the control's values to the config - pConfig->Write("/Controls/Text", m_text->GetValue()); - pConfig->Write("/Controls/Check", m_check->GetValue()); + pConfig->Write(_T("/Controls/Text"), m_text->GetValue()); + pConfig->Write(_T("/Controls/Check"), m_check->GetValue()); // save the frame position int x, y, w, h; GetClientSize(&w, &h); GetPosition(&x, &y); - pConfig->Write("/MainFrame/x", (long) x); - pConfig->Write("/MainFrame/y", (long) y); - pConfig->Write("/MainFrame/w", (long) w); - pConfig->Write("/MainFrame/h", (long) h); + pConfig->Write(_T("/MainFrame/x"), (long) x); + pConfig->Write(_T("/MainFrame/y"), (long) y); + pConfig->Write(_T("/MainFrame/w"), (long) w); + pConfig->Write(_T("/MainFrame/h"), (long) h); - pConfig->Write("/TestValue", wxT("A test value")); + pConfig->Write(_T("/TestValue"), wxT("A test value")); } diff --git a/samples/config/makefile.wat b/samples/config/makefile.wat index 5d7f4c3530..6fecbddbd5 100644 --- a/samples/config/makefile.wat +++ b/samples/config/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = conftest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\config +# +PROGRAM = config +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/configure.in b/samples/configure.in index 46bb5016ef..e412e8d77b 100644 --- a/samples/configure.in +++ b/samples/configure.in @@ -63,12 +63,17 @@ AC_OUTPUT([ mobile/Makefile mobile/wxedit/Makefile mobile/styles/Makefile + multimon/Makefile + nativedlg/Makefile newgrid/Makefile notebook/Makefile + oleauto/Makefile + ownerdrw/Makefile png/Makefile printing/Makefile proplist/Makefile propsize/Makefile + regtest/Makefile resource/Makefile rotate/Makefile sashtest/Makefile diff --git a/samples/console/console.cpp b/samples/console/console.cpp index d63263979a..932dda74b9 100644 --- a/samples/console/console.cpp +++ b/samples/console/console.cpp @@ -48,7 +48,7 @@ */ // what to test (in alphabetic order)? uncomment the line below to do all tests -#define TEST_ALL +//#define TEST_ALL #ifdef TEST_ALL #define TEST_ARRAYS #define TEST_CHARSET @@ -93,7 +93,7 @@ #undef TEST_ALL static const bool TEST_ALL = TRUE; #else - #define TEST_PRINTF + #define TEST_DATETIME static const bool TEST_ALL = FALSE; #endif @@ -1766,7 +1766,7 @@ static void TestMimeFilename() wxFileType::MessageParameters(fname, _T(""))) ) cmd = _T(""); else - cmd = wxString('"') + cmd + '"'; + cmd = wxString(_T('"')) + cmd + _T('"'); wxPrintf(_T("To open %s (%s) do %s.\n"), fname.c_str(), desc.c_str(), cmd.c_str()); @@ -2169,9 +2169,9 @@ static void TestLongLongComparison() #endif // wxUSE_LONGLONG_WX } -static void TestLongLongPrint() +static void TestLongLongToString() { - wxPuts(_T("*** Testing wxLongLong printing ***\n")); + wxPuts(_T("*** Testing wxLongLong::ToString() ***\n")); for ( size_t n = 0; n < WXSIZEOF(testLongs); n++ ) { @@ -2186,6 +2186,20 @@ static void TestLongLongPrint() wxPrintf(_T("-0x1234567887654321 = %s\n"), ll.ToString().c_str()); } +static void TestLongLongPrintf() +{ + wxPuts(_T("*** Testing wxLongLong printing ***\n")); + +#ifdef wxLongLongFmtSpec + wxLongLong ll = wxLL(0x1234567890abcdef); + wxString s = wxString::Format(_T("%") wxLongLongFmtSpec _T("x"), ll); + wxPrintf(_T("0x1234567890abcdef -> %s (%s)\n"), + s.c_str(), s == _T("1234567890abcdef") ? _T("ok") : _T("ERROR")); +#else // !wxLongLongFmtSpec + #error "wxLongLongFmtSpec not defined for this compiler/platform" +#endif +} + #undef MAKE_LL #undef RAND_LL @@ -2713,7 +2727,7 @@ I am ready for my first lesson today."); { wxChar buf[200]; - wxSprintf (buf, _T("%07Lo"), (wxLongLong_t)040000000000); + wxSprintf(buf, _T("%07") wxLongLongFmtSpec _T("o"), wxLL(040000000000)); wxPrintf (_T("sprintf (buf, \"%%07Lo\", 040000000000ll) = %s"), buf); if (wxStrcmp (buf, _T("40000000000")) != 0) @@ -3858,7 +3872,7 @@ static void TestUnicodeToFromAscii() #include "wx/encconv.h" #include "wx/buffer.h" -static const unsigned char textInUtf8_[] = +static const unsigned char utf8koi8r[] = { 208, 157, 208, 181, 209, 129, 208, 186, 208, 176, 208, 183, 208, 176, 208, 189, 208, 189, 208, 190, 32, 208, 191, 208, 190, 209, 128, 208, @@ -3869,7 +3883,36 @@ static const unsigned char textInUtf8_[] = 178, 208, 190, 209, 129, 209, 130, 209, 140, 209, 142, 0 }; -#define textInUtf8 ((const char *)textInUtf8_) +static const unsigned char utf8iso8859_1[] = +{ + 0x53, 0x79, 0x73, 0x74, 0xc3, 0xa8, 0x6d, 0x65, 0x73, 0x20, 0x49, 0x6e, + 0x74, 0xc3, 0xa9, 0x67, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x65, + 0x6e, 0x20, 0x4d, 0xc3, 0xa9, 0x63, 0x61, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x71, 0x75, 0x65, 0x20, 0x65, + 0x74, 0x20, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x71, 0x75, 0x65, 0 +}; + +static const unsigned char utf8Invalid[] = +{ + 0x3c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3e, 0x32, 0x30, 0x30, + 0x32, 0xe5, 0xb9, 0xb4, 0x30, 0x39, 0xe6, 0x9c, 0x88, 0x32, 0x35, 0xe6, + 0x97, 0xa5, 0x20, 0x30, 0x37, 0xe6, 0x99, 0x82, 0x33, 0x39, 0xe5, 0x88, + 0x86, 0x35, 0x37, 0xe7, 0xa7, 0x92, 0x3c, 0x2f, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0 +}; + +static const struct Utf8Data +{ + const unsigned char *text; + size_t len; + const wxChar *charset; + wxFontEncoding encoding; +} utf8data[] = +{ + { utf8Invalid, WXSIZEOF(utf8Invalid), _T("iso8859-1"), wxFONTENCODING_ISO8859_1 }, + { utf8koi8r, WXSIZEOF(utf8koi8r), _T("koi8-r"), wxFONTENCODING_KOI8 }, + { utf8iso8859_1, WXSIZEOF(utf8iso8859_1), _T("iso8859-1"), wxFONTENCODING_ISO8859_1 }, +}; static void TestUtf8() { @@ -3877,30 +3920,33 @@ static void TestUtf8() char buf[1024]; wchar_t wbuf[1024]; - if ( wxConvUTF8.MB2WC(wbuf, textInUtf8, WXSIZEOF(textInUtf8)) <= 0 ) + + for ( size_t n = 0; n < WXSIZEOF(utf8data); n++ ) { - wxPuts(_T("ERROR: UTF-8 decoding failed.")); - } - else - { - wxCSConv conv(_T("koi8-r")); - if ( conv.WC2MB(buf, wbuf, 0 /* not needed wcslen(wbuf) */) <= 0 ) + const Utf8Data& u8d = utf8data[n]; + if ( wxConvUTF8.MB2WC(wbuf, (const char *)u8d.text, + WXSIZEOF(wbuf)) == (size_t)-1 ) { - wxPuts(_T("ERROR: conversion to KOI8-R failed.")); + wxPuts(_T("ERROR: UTF-8 decoding failed.")); } else { - wxPrintf(_T("The resulting string (in KOI8-R): %s\n"), buf); + wxCSConv conv(u8d.charset); + if ( conv.WC2MB(buf, wbuf, WXSIZEOF(buf)) == (size_t)-1 ) + { + wxPrintf(_T("ERROR: conversion to %s failed.\n"), u8d.charset); + } + else + { + wxPrintf(_T("String in %s: %s\n"), u8d.charset, buf); + } } - } - if ( wxConvUTF8.WC2MB(buf, L"à la", WXSIZEOF(buf)) <= 0 ) - { - wxPuts(_T("ERROR: conversion to UTF-8 failed.")); - } - else - { - wxPrintf(_T("The string in UTF-8: %s\n"), buf); + wxString s(wxConvUTF8.cMB2WC((const char *)u8d.text), *wxConvCurrent); + if ( s.empty() ) + s = _T("<< conversion failed >>"); + wxPrintf(_T("String in current cset: %s\n"), s.c_str()); + } wxPuts(_T("")); @@ -3913,7 +3959,8 @@ static void TestEncodingConverter() // using wxEncodingConverter should give the same result as above char buf[1024]; wchar_t wbuf[1024]; - if ( wxConvUTF8.MB2WC(wbuf, textInUtf8, WXSIZEOF(textInUtf8)) <= 0 ) + if ( wxConvUTF8.MB2WC(wbuf, (const char *)utf8koi8r, + WXSIZEOF(utf8koi8r)) == (size_t)-1 ) { wxPuts(_T("ERROR: UTF-8 decoding failed.")); } @@ -3922,7 +3969,7 @@ static void TestEncodingConverter() wxEncodingConverter ec; ec.Init(wxFONTENCODING_UNICODE, wxFONTENCODING_KOI8); ec.Convert(wbuf, buf); - wxPrintf(_T("The same string obtained using wxEC: %s\n"), buf); + wxPrintf(_T("The same KOI8-R string using wxEC: %s\n"), buf); } wxPuts(_T("")); @@ -4579,44 +4626,40 @@ for n in range(20): wmon2 = dt.GetWeekOfMonth(wxDateTime::Sunday_First), dnum = dt.GetDayOfYear(); - wxPrintf(_T("%s: the day number is %d"), d.FormatDate().c_str(), dnum); - if ( dnum == wn.dnum ) - { - wxPrintf(_T(" (ok)")); - } - else + wxPrintf(_T("%s: the day number = %d"), d.FormatDate().c_str(), dnum); + if ( dnum != wn.dnum ) { wxPrintf(_T(" (ERROR: should be %d)"), wn.dnum); } - wxPrintf(_T(", week in month is %d"), wmon); - if ( wmon == wn.wmon ) - { - wxPrintf(_T(" (ok)")); - } - else + wxPrintf(_T(", week in month = %d"), wmon); + if ( wmon != wn.wmon ) { wxPrintf(_T(" (ERROR: should be %d)"), wn.wmon); } - wxPrintf(_T(" or %d"), wmon2); - if ( wmon2 == wn.wmon2 ) - { - wxPrintf(_T(" (ok)")); - } - else + wxPrintf(_T(" (%d)"), wmon2); + if ( wmon2 != wn.wmon2 ) { wxPrintf(_T(" (ERROR: should be %d)"), wn.wmon2); } - wxPrintf(_T(", week in year is %d"), week); - if ( week == wn.week ) + wxPrintf(_T(", week in year = %d"), week); + if ( week != wn.week ) { - wxPuts(_T(" (ok)")); + wxPrintf(_T(" (ERROR: should be %d)"), wn.week); } - else + + wxPutchar(_T('\n')); + + wxDateTime dt2(1, wxDateTime::Jan, d.year); + dt2.SetToTheWeek(wn.week, dt.GetWeekDay()); + if ( dt2 != dt ) { - wxPrintf(_T(" (ERROR: should be %d)\n"), wn.week); + Date d2; + d2.Init(dt2.GetTm()); + wxPrintf(_T("ERROR: SetToTheWeek() returned %s\n"), + d2.FormatDate().c_str()); } } } @@ -6391,7 +6434,8 @@ int main(int argc, char **argv) TestLongLongConversion(); TestBitOperations(); TestLongLongComparison(); - TestLongLongPrint(); + TestLongLongToString(); + TestLongLongPrintf(); } #endif // TEST_LONGLONG @@ -6516,7 +6560,8 @@ int main(int argc, char **argv) TestTimeZoneBug(); } - TestTimeFormat(); + + TestTimeWNumber(); if ( TEST_INTERACTIVE ) TestDateTimeInteractive(); diff --git a/samples/console/console.dsp b/samples/console/console.dsp index c665160353..a6cfa8d063 100644 --- a/samples/console/console.dsp +++ b/samples/console/console.dsp @@ -53,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\wxbase232u.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\wxbase233u.lib !IF "$(CFG)" == "console - Win32 Debug Unicode DLL" @@ -76,7 +76,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\wxbase232ud.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\wxbase233ud.lib !IF "$(CFG)" == "console - Win32 Release Unicode" @@ -99,7 +99,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\wxbaseu.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\wxbaseu.lib !IF "$(CFG)" == "console - Win32 Debug Unicode" @@ -122,7 +122,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\wxbaseud.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\wxbaseud.lib !IF "$(CFG)" == "console - Win32 Release DLL" @@ -145,7 +145,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\wxbase232.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\wxbase233.lib !IF "$(CFG)" == "console - Win32 Debug DLL" @@ -168,7 +168,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\wxbase232d.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\wxbase233d.lib !IF "$(CFG)" == "console - Win32 Release" @@ -191,7 +191,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\wxbase.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /machine:I386 ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\wxbase.lib !IF "$(CFG)" == "console - Win32 Debug" @@ -214,7 +214,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\wxbased.lib +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\wxbased.lib !ENDIF diff --git a/samples/console/makefile.b32 b/samples/console/makefile.b32 new file mode 100644 index 0000000000..76aa03aa5a --- /dev/null +++ b/samples/console/makefile.b32 @@ -0,0 +1,16 @@ +# +# File: makefile.b32 +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: +# +# Makefile : Builds sample for 32-bit BC++ + +WXDIR = $(WXWIN) + +TARGET=console +OBJECTS = $(TARGET).obj + +!include $(WXDIR)\src\makeprog.b32 + diff --git a/samples/console/makefile.wat b/samples/console/makefile.wat new file mode 100644 index 0000000000..ca1c88d7b8 --- /dev/null +++ b/samples/console/makefile.wat @@ -0,0 +1,14 @@ +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +wxUSE_GUI=0 +THISDIR = $(%WXWIN)\samples\console +# +PROGRAM = console +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index e29c0b5236..0b8561cef5 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -122,12 +122,15 @@ public: void OnTestButton(wxCommandEvent& event); void OnBmpButton(wxCommandEvent& event); + void OnSizerCheck (wxCommandEvent &event); + wxListBox *m_listbox, *m_listboxSorted; #if wxUSE_CHOICE wxChoice *m_choice, *m_choiceSorted; -#endif +#endif // wxUSE_CHOICE + wxComboBox *m_combo; wxRadioBox *m_radio; wxGauge *m_gauge, @@ -153,6 +156,14 @@ public: wxStaticText *m_label; + wxBoxSizer *m_buttonSizer; + wxButton *m_sizerBtn1; + wxButton *m_sizerBtn2; + wxButton *m_sizerBtn3; + wxButton *m_sizerBtn4; + wxBoxSizer *m_hsizer; + wxButton *m_bigBtn; + private: wxLog *m_logTargetOld; @@ -162,7 +173,7 @@ private: class MyFrame: public wxFrame { public: - MyFrame(const char *title, int x, int y); + MyFrame(const wxChar *title, int x, int y); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); @@ -298,7 +309,10 @@ private: //---------------------------------------------------------------------- static void SetListboxClientData(const wxChar *name, wxListBox *control); + +#if wxUSE_CHOICE static void SetChoiceClientData(const wxChar *name, wxChoice *control); +#endif // wxUSE_CHOICE IMPLEMENT_APP(MyApp) @@ -337,7 +351,7 @@ bool MyApp::OnInit() } // Create the main frame window - MyFrame *frame = new MyFrame("Controls wxWindows App", x, y); + MyFrame *frame = new MyFrame(_T("Controls wxWindows App"), x, y); frame->Show(TRUE); return TRUE; @@ -403,6 +417,13 @@ const int ID_BITMAP_BTN = 192; const int ID_CHANGE_COLOUR = 200; +const int ID_SIZER_CHECK1 = 201; +const int ID_SIZER_CHECK2 = 202; +const int ID_SIZER_CHECK3 = 203; +const int ID_SIZER_CHECK4 = 204; +const int ID_SIZER_CHECK14 = 205; +const int ID_SIZER_CHECKBIG = 206; + BEGIN_EVENT_TABLE(MyPanel, wxPanel) EVT_SIZE ( MyPanel::OnSize) EVT_NOTEBOOK_PAGE_CHANGING(ID_NOTEBOOK, MyPanel::OnPageChanging) @@ -465,6 +486,14 @@ EVT_CHECKBOX (ID_CHANGE_COLOUR, MyPanel::OnChangeColour) EVT_BUTTON (ID_BUTTON_TEST1, MyPanel::OnTestButton) EVT_BUTTON (ID_BUTTON_TEST2, MyPanel::OnTestButton) EVT_BUTTON (ID_BITMAP_BTN, MyPanel::OnBmpButton) + +EVT_CHECKBOX (ID_SIZER_CHECK1, MyPanel::OnSizerCheck) +EVT_CHECKBOX (ID_SIZER_CHECK2, MyPanel::OnSizerCheck) +EVT_CHECKBOX (ID_SIZER_CHECK3, MyPanel::OnSizerCheck) +EVT_CHECKBOX (ID_SIZER_CHECK4, MyPanel::OnSizerCheck) +EVT_CHECKBOX (ID_SIZER_CHECK14, MyPanel::OnSizerCheck) +EVT_CHECKBOX (ID_SIZER_CHECKBIG, MyPanel::OnSizerCheck) + END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyButton, wxButton) @@ -518,7 +547,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_notebook = NULL; m_label = NULL; - m_text = new wxTextCtrl(this, -1, "This is the log window.\n", + m_text = new wxTextCtrl(this, -1, _T("This is the log window.\n"), wxPoint(0, 250), wxSize(100, 50), wxTE_MULTILINE); m_text->SetBackgroundColour(wxT("wheat")); @@ -530,11 +559,11 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) wxString choices[] = { - "This", - "is one of my", - "really", - "wonderful", - "examples." + _T("This"), + _T("is one of my"), + _T("really"), + _T("wonderful"), + _T("examples.") }; #ifdef USE_XPM @@ -562,9 +591,10 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) }; wxImageList *imagelist = new wxImageList(16, 16, FALSE, Image_Max); - static const char *s_iconNames[Image_Max] = + static const wxChar *s_iconNames[Image_Max] = { - "list", "choice", "combo", "text", "radio", "gauge" + _T("list"), _T("choice"), _T("combo"), _T("text"), _T("radio"), + _T("gauge") }; for ( size_t n = 0; n < Image_Max; n++ ) @@ -604,33 +634,33 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_listbox->SetCursor(*wxCROSS_CURSOR); #if wxUSE_TOOLTIPS - m_listbox->SetToolTip( "This is a list box" ); + m_listbox->SetToolTip( _T("This is a list box") ); #endif // wxUSE_TOOLTIPS - m_lbSelectNum = new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #&2", wxPoint(180,30), wxSize(140,30) ); - m_lbSelectThis = new wxButton( panel, ID_LISTBOX_SEL_STR, "&Select 'This'", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_CLEAR, "&Clear", wxPoint(180,80), wxSize(140,30) ); - (void)new MyButton( panel, ID_LISTBOX_APPEND, "&Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_DELETE, "D&elete selected item", wxPoint(180,130), wxSize(140,30) ); - wxButton *button = new MyButton( panel, ID_LISTBOX_FONT, "Set &Italic font", wxPoint(340,130), wxSize(140,30) ); + m_lbSelectNum = new wxButton( panel, ID_LISTBOX_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) ); + m_lbSelectThis = new wxButton( panel, ID_LISTBOX_SEL_STR, _T("&Select 'This'"), wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_LISTBOX_CLEAR, _T("&Clear"), wxPoint(180,80), wxSize(140,30) ); + (void)new MyButton( panel, ID_LISTBOX_APPEND, _T("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_LISTBOX_DELETE, _T("D&elete selected item"), wxPoint(180,130), wxSize(140,30) ); + wxButton *button = new MyButton( panel, ID_LISTBOX_FONT, _T("Set &Italic font"), wxPoint(340,130), wxSize(140,30) ); button->SetDefault(); button->SetForegroundColour(*wxBLUE); #if wxUSE_TOOLTIPS - button->SetToolTip( "Press here to set italic font" ); + button->SetToolTip( _T("Press here to set italic font") ); #endif // wxUSE_TOOLTIPS - m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, "&Disable", wxPoint(20,170) ); + m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, _T("&Disable"), wxPoint(20,170) ); m_checkbox->SetValue(FALSE); #if wxUSE_TOOLTIPS - m_checkbox->SetToolTip( "Click here to disable the listbox" ); + m_checkbox->SetToolTip( _T("Click here to disable the listbox") ); #endif // wxUSE_TOOLTIPS - (void)new wxCheckBox( panel, ID_CHANGE_COLOUR, "&Toggle colour", + (void)new wxCheckBox( panel, ID_CHANGE_COLOUR, _T("&Toggle colour"), wxPoint(110,170) ); panel->SetCursor(wxCursor(wxCURSOR_HAND)); - m_notebook->AddPage(panel, "wxListBox", TRUE, Image_List); + m_notebook->AddPage(panel, _T("wxListBox"), TRUE, Image_List); #if wxUSE_CHOICE panel = new wxPanel(m_notebook); @@ -643,64 +673,64 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_choice->SetSelection(2); m_choice->SetBackgroundColour( wxT("red") ); - (void)new wxButton( panel, ID_CHOICE_SEL_NUM, "Select #&2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_SEL_STR, "&Select 'This'", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_CLEAR, "&Clear", wxPoint(180,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_APPEND, "&Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_DELETE, "D&elete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_FONT, "Set &Italic font", wxPoint(340,130), wxSize(140,30) ); - (void)new wxCheckBox( panel, ID_CHOICE_ENABLE, "&Disable", wxPoint(20,130), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_SEL_STR, _T("&Select 'This'"), wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_CLEAR, _T("&Clear"), wxPoint(180,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_APPEND, _T("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_DELETE, _T("D&elete selected item"), wxPoint(180,130), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_FONT, _T("Set &Italic font"), wxPoint(340,130), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_CHOICE_ENABLE, _T("&Disable"), wxPoint(20,130), wxSize(140,30) ); - m_notebook->AddPage(panel, "wxChoice", FALSE, Image_Choice); + m_notebook->AddPage(panel, _T("wxChoice"), FALSE, Image_Choice); #endif // wxUSE_CHOICE panel = new wxPanel(m_notebook); - (void)new wxStaticBox( panel, -1, "&Box around combobox", + (void)new wxStaticBox( panel, -1, _T("&Box around combobox"), wxPoint(5, 5), wxSize(150, 100)); - m_combo = new MyComboBox( panel, ID_COMBO, "This", + m_combo = new MyComboBox( panel, ID_COMBO, _T("This"), wxPoint(20,25), wxSize(120, -1), 5, choices, /* wxCB_READONLY | */ wxPROCESS_ENTER); - (void)new wxButton( panel, ID_COMBO_SEL_NUM, "Select #&2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_SEL_STR, "&Select 'This'", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_CLEAR, "&Clear", wxPoint(180,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_APPEND, "&Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_DELETE, "D&elete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_FONT, "Set &Italic font", wxPoint(340,130), wxSize(140,30) ); - (void)new wxCheckBox( panel, ID_COMBO_ENABLE, "&Disable", wxPoint(20,130), wxSize(140,30) ); - m_notebook->AddPage(panel, "wxComboBox", FALSE, Image_Combo); + (void)new wxButton( panel, ID_COMBO_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_SEL_STR, _T("&Select 'This'"), wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_CLEAR, _T("&Clear"), wxPoint(180,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_APPEND, _T("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_DELETE, _T("D&elete selected item"), wxPoint(180,130), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_FONT, _T("Set &Italic font"), wxPoint(340,130), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_COMBO_ENABLE, _T("&Disable"), wxPoint(20,130), wxSize(140,30) ); + m_notebook->AddPage(panel, _T("wxComboBox"), FALSE, Image_Combo); wxString choices2[] = { - "First", "Second", + _T("First"), _T("Second"), /* "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth", "Nineth", "Tenth" */ }; panel = new wxPanel(m_notebook); - (void)new MyRadioBox( panel, ID_RADIOBOX, "&That", wxPoint(10,160), wxSize(-1,-1), WXSIZEOF(choices2), choices2, 1, wxRA_SPECIFY_ROWS ); - m_radio = new wxRadioBox( panel, ID_RADIOBOX, "T&his", wxPoint(10,10), wxSize(-1,-1), WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_COLS ); + (void)new MyRadioBox( panel, ID_RADIOBOX, _T("&That"), wxPoint(10,160), wxSize(-1,-1), WXSIZEOF(choices2), choices2, 1, wxRA_SPECIFY_ROWS ); + m_radio = new wxRadioBox( panel, ID_RADIOBOX, _T("T&his"), wxPoint(10,10), wxSize(-1,-1), WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_COLS ); m_radio->SetForegroundColour(*wxRED); #if wxUSE_TOOLTIPS - m_combo->SetToolTip("This is a natural\ncombobox - can you believe me?"); - m_radio->SetToolTip("Ever seen a radiobox?"); + m_combo->SetToolTip(_T("This is a natural\ncombobox - can you believe me?")); + m_radio->SetToolTip(_T("Ever seen a radiobox?")); #endif // wxUSE_TOOLTIPS - (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, "Select #&2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, "&Select 'This'", wxPoint(180,80), wxSize(140,30) ); - m_fontButton = new wxButton( panel, ID_SET_FONT, "Set &more Italic font", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_RADIOBOX_FONT, "Set &Italic font", wxPoint(340,80), wxSize(140,30) ); - (void)new wxCheckBox( panel, ID_RADIOBOX_ENABLE, "&Disable", wxPoint(340,130), wxDefaultSize ); - wxRadioButton *rb = new wxRadioButton( panel, ID_RADIOBUTTON_1, "Radiobutton1", wxPoint(210,170), wxDefaultSize, wxRB_GROUP ); + (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, _T("&Select 'This'"), wxPoint(180,80), wxSize(140,30) ); + m_fontButton = new wxButton( panel, ID_SET_FONT, _T("Set &more Italic font"), wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_RADIOBOX_FONT, _T("Set &Italic font"), wxPoint(340,80), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_RADIOBOX_ENABLE, _T("&Disable"), wxPoint(340,130), wxDefaultSize ); + wxRadioButton *rb = new wxRadioButton( panel, ID_RADIOBUTTON_1, _T("Radiobutton1"), wxPoint(210,170), wxDefaultSize, wxRB_GROUP ); rb->SetValue( FALSE ); - (void)new wxRadioButton( panel, ID_RADIOBUTTON_2, "&Radiobutton2", wxPoint(340,170), wxDefaultSize ); - m_notebook->AddPage(panel, "wxRadioBox", FALSE, Image_Radio); + (void)new wxRadioButton( panel, ID_RADIOBUTTON_2, _T("&Radiobutton2"), wxPoint(340,170), wxDefaultSize ); + m_notebook->AddPage(panel, _T("wxRadioBox"), FALSE, Image_Radio); panel = new wxPanel(m_notebook); - (void)new wxStaticBox( panel, -1, "&wxGauge and wxSlider", wxPoint(10,10), wxSize(222,130) ); + (void)new wxStaticBox( panel, -1, _T("&wxGauge and wxSlider"), wxPoint(10,10), wxSize(222,130) ); m_gauge = new wxGauge( panel, -1, 200, wxPoint(18,50), wxSize(155, 30), wxGA_HORIZONTAL|wxNO_BORDER ); m_gauge->SetBackgroundColour(*wxGREEN); m_gauge->SetForegroundColour(*wxRED); @@ -714,25 +744,25 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_slider->SetToolTip(_T("This is a sliding slider")); #endif // wxUSE_TOOLTIPS - (void)new wxStaticBox( panel, -1, "&Explanation", + (void)new wxStaticBox( panel, -1, _T("&Explanation"), wxPoint(230,10), wxSize(270,130), wxALIGN_CENTER ); #ifdef __WXMOTIF__ // No wrapping text in wxStaticText yet :-( (void)new wxStaticText( panel, -1, - "Drag the slider!", + _T("Drag the slider!"), wxPoint(250,30), wxSize(240, -1) ); #else (void)new wxStaticText( panel, -1, - "In order see the gauge (aka progress bar)\n" - "control do something you have to drag the\n" - "handle of the slider to the right.\n" - "\n" - "This is also supposed to demonstrate how\n" - "to use static controls.\n", + _T("In order see the gauge (aka progress bar)\n") + _T("control do something you have to drag the\n") + _T("handle of the slider to the right.\n") + _T("\n") + _T("This is also supposed to demonstrate how\n") + _T("to use static controls.\n"), wxPoint(250,25), wxSize(240, 110) ); @@ -746,17 +776,17 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_spinbutton->SetRange(-40,30); m_spinbutton->SetValue(initialSpinValue); - m_btnProgress = new wxButton( panel, ID_BTNPROGRESS, "&Show progress dialog", + m_btnProgress = new wxButton( panel, ID_BTNPROGRESS, _T("&Show progress dialog"), wxPoint(300, 160) ); #endif // wxUSE_SPINBTN #if wxUSE_SPINCTRL - m_spinctrl = new wxSpinCtrl( panel, ID_SPINCTRL, "", wxPoint(200, 160), wxSize(80, -1) ); + m_spinctrl = new wxSpinCtrl( panel, ID_SPINCTRL, _T(""), wxPoint(200, 160), wxSize(80, -1) ); m_spinctrl->SetRange(10,30); m_spinctrl->SetValue(15); #endif // wxUSE_SPINCTRL - m_notebook->AddPage(panel, "wxGauge", FALSE, Image_Gauge); + m_notebook->AddPage(panel, _T("wxGauge"), FALSE, Image_Gauge); panel = new wxPanel(m_notebook); @@ -775,14 +805,14 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) dc.SetPen(*wxGREEN_PEN); dc.Clear(); dc.DrawEllipse(5, 5, 90, 90); - dc.DrawText("Bitmap", 30, 40); + dc.DrawText(_T("Bitmap"), 30, 40); dc.SelectObject( wxNullBitmap ); (void)new wxBitmapButton(panel, ID_BITMAP_BTN, bitmap, wxPoint(100, 20)); #ifdef __WXMSW__ // test for masked bitmap display - bitmap = wxBitmap("test2.bmp", wxBITMAP_TYPE_BMP); + bitmap = wxBitmap(_T("test2.bmp"), wxBITMAP_TYPE_BMP); if (bitmap.Ok()) { bitmap.SetMask(new wxMask(bitmap, *wxBLUE)); @@ -806,15 +836,15 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) #if wxUSE_TOGGLEBTN (void)new wxToggleButton(panel, ID_BUTTON_LABEL, - "&Toggle label", wxPoint(250, 20)); + _T("&Toggle label"), wxPoint(250, 20)); #endif // wxUSE_TOGGLEBTN - m_label = new wxStaticText(panel, -1, "Label with some long text", + m_label = new wxStaticText(panel, -1, _T("Label with some long text"), wxPoint(250, 60), wxDefaultSize, wxALIGN_RIGHT /*| wxST_NO_AUTORESIZE*/); m_label->SetForegroundColour( *wxBLUE ); - m_notebook->AddPage(panel, "wxBitmapXXX"); + m_notebook->AddPage(panel, _T("wxBitmapXXX")); // layout constraints #if wxUSE_CONSTRAINTS @@ -829,7 +859,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) c->left.SameAs( panel, wxLeft, 10 ); c->width.PercentOf( panel, wxWidth, 40 ); - wxButton *pMyButton = new wxButton(panel, ID_BUTTON_TEST1, "Test Button &1" ); + wxButton *pMyButton = new wxButton(panel, ID_BUTTON_TEST1, _T("Test Button &1") ); pMyButton->SetConstraints( c ); c = new wxLayoutConstraints; @@ -838,10 +868,10 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) c->right.SameAs( panel, wxRight, 10 ); c->width.PercentOf( panel, wxWidth, 40 ); - wxButton *pMyButton2 = new wxButton(panel, ID_BUTTON_TEST2, "Test Button &2" ); + wxButton *pMyButton2 = new wxButton(panel, ID_BUTTON_TEST2, _T("Test Button &2") ); pMyButton2->SetConstraints( c ); - m_notebook->AddPage(panel, "wxLayoutConstraint"); + m_notebook->AddPage(panel, _T("wxLayoutConstraint")); #endif // sizer @@ -849,15 +879,57 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) panel = new wxPanel(m_notebook); panel->SetAutoLayout( TRUE ); - wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL ); + wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL ); - sizer->Add( new wxButton(panel, -1, "Test Button &1" ), 3, wxALL, 10 ); - sizer->Add( 20,20, 1 ); - sizer->Add( new wxButton(panel, -1, "Multiline\nbutton" ), 3, wxGROW|wxALL, 10 ); + wxStaticBoxSizer *csizer = + new wxStaticBoxSizer (new wxStaticBox (panel, -1, _T("Show Buttons")), + wxHORIZONTAL ); + + wxCheckBox *check1, *check2, *check3, *check4, *check14, *checkBig; + check1 = new wxCheckBox (panel, ID_SIZER_CHECK1, _T("1")); + check1->SetValue (TRUE); + csizer->Add (check1); + check2 = new wxCheckBox (panel, ID_SIZER_CHECK2, _T("2")); + check2->SetValue (TRUE); + csizer->Add (check2); + check3 = new wxCheckBox (panel, ID_SIZER_CHECK3, _T("3")); + check3->SetValue (TRUE); + csizer->Add (check3); + check4 = new wxCheckBox (panel, ID_SIZER_CHECK4, _T("4")); + check4->SetValue (TRUE); + csizer->Add (check4); + check14 = new wxCheckBox (panel, ID_SIZER_CHECK14, _T("1-4")); + check14->SetValue (TRUE); + csizer->Add (check14); + checkBig = new wxCheckBox (panel, ID_SIZER_CHECKBIG, _T("Big")); + checkBig->SetValue (TRUE); + csizer->Add (checkBig); + + sizer->Add (csizer); + + m_hsizer = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonSizer = new wxBoxSizer (wxVERTICAL); + + m_sizerBtn1 = new wxButton(panel, -1, _T("Test Button &1") ); + m_buttonSizer->Add( m_sizerBtn1, 0, wxALL, 10 ); + m_sizerBtn2 = new wxButton(panel, -1, _T("Test Button &2") ); + m_buttonSizer->Add( m_sizerBtn2, 0, wxALL, 10 ); + m_sizerBtn3 = new wxButton(panel, -1, _T("Test Button &3") ); + m_buttonSizer->Add( m_sizerBtn3, 0, wxALL, 10 ); + m_sizerBtn4 = new wxButton(panel, -1, _T("Test Button &4") ); + m_buttonSizer->Add( m_sizerBtn4, 0, wxALL, 10 ); + + m_hsizer->Add (m_buttonSizer); + m_hsizer->Add( 20,20, 1 ); + m_bigBtn = new wxButton(panel, -1, _T("Multiline\nbutton") ); + m_hsizer->Add( m_bigBtn , 3, wxGROW|wxALL, 10 ); + + sizer->Add (m_hsizer, 1, wxGROW); panel->SetSizer( sizer ); - m_notebook->AddPage(panel, "wxSizer"); + m_notebook->AddPage(panel, _T("wxSizer")); } void MyPanel::OnSize( wxSizeEvent& WXUNUSED(event) ) @@ -875,10 +947,10 @@ void MyPanel::OnPageChanging( wxNotebookEvent &event ) int selOld = event.GetOldSelection(); if ( selOld == 2 ) { - if ( wxMessageBox("This demonstrates how a program may prevent the\n" - "page change from taking place - if you select\n" - "[No] the current page will stay the third one\n", - "Control sample", + if ( wxMessageBox(_T("This demonstrates how a program may prevent the\n") + _T("page change from taking place - if you select\n") + _T("[No] the current page will stay the third one\n"), + _T("Control sample"), wxICON_QUESTION | wxYES_NO, this) != wxYES ) { event.Veto(); @@ -887,16 +959,17 @@ void MyPanel::OnPageChanging( wxNotebookEvent &event ) } } - *m_text << "Notebook selection is being changed from " << selOld - << " to " << event.GetSelection() - << " (current page from notebook is " - << m_notebook->GetSelection() << ")\n"; + *m_text << _T("Notebook selection is being changed from ") << selOld + << _T(" to ") << event.GetSelection() + << _T(" (current page from notebook is ") + << m_notebook->GetSelection() << _T(")\n"); } void MyPanel::OnPageChanged( wxNotebookEvent &event ) { - *m_text << "Notebook selection is now " << event.GetSelection() - << " (from notebook: " << m_notebook->GetSelection() << ")\n"; + *m_text << _T("Notebook selection is now ") << event.GetSelection() + << _T(" (from notebook: ") << m_notebook->GetSelection() + << _T(")\n"); } void MyPanel::OnTestButton(wxCommandEvent& event) @@ -942,42 +1015,42 @@ void MyPanel::OnListBox( wxCommandEvent &event ) if (event.GetInt() == -1) { - m_text->AppendText( "ListBox has no selections anymore\n" ); + m_text->AppendText( _T("ListBox has no selections anymore\n") ); return; } wxListBox *listbox = event.GetId() == ID_LISTBOX ? m_listbox : m_listboxSorted; - m_text->AppendText( "ListBox event selection string is: '" ); + m_text->AppendText( _T("ListBox event selection string is: '") ); m_text->AppendText( event.GetString() ); - m_text->AppendText( "'\n" ); - m_text->AppendText( "ListBox control selection string is: '" ); + m_text->AppendText( _T("'\n") ); + m_text->AppendText( _T("ListBox control selection string is: '") ); m_text->AppendText( listbox->GetStringSelection() ); - m_text->AppendText( "'\n" ); + m_text->AppendText( _T("'\n") ); wxStringClientData *obj = ((wxStringClientData *)event.GetClientObject()); - m_text->AppendText( "ListBox event client data string is: '" ); + m_text->AppendText( _T("ListBox event client data string is: '") ); if (obj) // BC++ doesn't like use of '? .. : .. ' in this context m_text->AppendText( obj->GetData() ); else - m_text->AppendText( wxString("none") ); + m_text->AppendText( wxString(_T("none")) ); - m_text->AppendText( "'\n" ); - m_text->AppendText( "ListBox control client data string is: '" ); + m_text->AppendText( _T("'\n") ); + m_text->AppendText( _T("ListBox control client data string is: '") ); obj = (wxStringClientData *)listbox->GetClientObject(listbox->GetSelection()); if (obj) m_text->AppendText( obj->GetData() ); else - m_text->AppendText( wxString("none") ); - m_text->AppendText( "'\n" ); + m_text->AppendText( wxString(_T("none")) ); + m_text->AppendText( _T("'\n") ); } void MyPanel::OnListBoxDoubleClick( wxCommandEvent &event ) { - m_text->AppendText( "ListBox double click string is: " ); + m_text->AppendText( _T("ListBox double click string is: ") ); m_text->AppendText( event.GetString() ); - m_text->AppendText( "\n" ); + m_text->AppendText( _T("\n") ); } void MyPanel::OnListBoxButtons( wxCommandEvent &event ) @@ -986,13 +1059,13 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event ) { case ID_LISTBOX_ENABLE: { - m_text->AppendText("Checkbox clicked.\n"); + m_text->AppendText(_T("Checkbox clicked.\n")); #if wxUSE_TOOLTIPS wxCheckBox *cb = (wxCheckBox*)event.GetEventObject(); if (event.GetInt()) - cb->SetToolTip( "Click to enable listbox" ); + cb->SetToolTip( _T("Click to enable listbox") ); else - cb->SetToolTip( "Click to disable listbox" ); + cb->SetToolTip( _T("Click to disable listbox") ); #endif // wxUSE_TOOLTIPS m_listbox->Enable( event.GetInt() == 0 ); m_lbSelectThis->Enable( event.GetInt() == 0 ); @@ -1010,8 +1083,8 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event ) } case ID_LISTBOX_SEL_STR: { - m_listbox->SetStringSelection( "This" ); - m_listboxSorted->SetStringSelection( "This" ); + m_listbox->SetStringSelection( _T("This") ); + m_listboxSorted->SetStringSelection( _T("This") ); m_lbSelectNum->WarpPointer( 40, 14 ); break; } @@ -1023,8 +1096,8 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event ) } case ID_LISTBOX_APPEND: { - m_listbox->Append( "Hi!" ); - m_listboxSorted->Append( "Hi!" ); + m_listbox->Append( _T("Hi!") ); + m_listboxSorted->Append( _T("Hi!") ); break; } case ID_LISTBOX_DELETE: @@ -1054,30 +1127,30 @@ void MyPanel::OnChoice( wxCommandEvent &event ) wxChoice *choice = event.GetId() == ID_CHOICE ? m_choice : m_choiceSorted; - m_text->AppendText( "Choice event selection string is: '" ); + m_text->AppendText( _T("Choice event selection string is: '") ); m_text->AppendText( event.GetString() ); - m_text->AppendText( "'\n" ); - m_text->AppendText( "Choice control selection string is: '" ); + m_text->AppendText( _T("'\n") ); + m_text->AppendText( _T("Choice control selection string is: '") ); m_text->AppendText( choice->GetStringSelection() ); - m_text->AppendText( "'\n" ); + m_text->AppendText( _T("'\n") ); wxStringClientData *obj = ((wxStringClientData *)event.GetClientObject()); - m_text->AppendText( "Choice event client data string is: '" ); + m_text->AppendText( _T("Choice event client data string is: '") ); if (obj) m_text->AppendText( obj->GetData() ); else - m_text->AppendText( wxString("none") ); + m_text->AppendText( wxString(_T("none")) ); - m_text->AppendText( "'\n" ); - m_text->AppendText( "Choice control client data string is: '" ); + m_text->AppendText( _T("'\n") ); + m_text->AppendText( _T("Choice control client data string is: '") ); obj = (wxStringClientData *)choice->GetClientObject(choice->GetSelection()); if (obj) m_text->AppendText( obj->GetData() ); else - m_text->AppendText( wxString("none") ); - m_text->AppendText( "'\n" ); + m_text->AppendText( wxString(_T("none")) ); + m_text->AppendText( _T("'\n") ); } void MyPanel::OnChoiceButtons( wxCommandEvent &event ) @@ -1098,8 +1171,8 @@ void MyPanel::OnChoiceButtons( wxCommandEvent &event ) } case ID_CHOICE_SEL_STR: { - m_choice->SetStringSelection( "This" ); - m_choiceSorted->SetStringSelection( "This" ); + m_choice->SetStringSelection( _T("This") ); + m_choiceSorted->SetStringSelection( _T("This") ); break; } case ID_CHOICE_CLEAR: @@ -1110,8 +1183,8 @@ void MyPanel::OnChoiceButtons( wxCommandEvent &event ) } case ID_CHOICE_APPEND: { - m_choice->Append( "Hi!" ); - m_choiceSorted->Append( "Hi!" ); + m_choice->Append( _T("Hi!") ); + m_choiceSorted->Append( _T("Hi!") ); break; } case ID_CHOICE_DELETE: @@ -1136,12 +1209,12 @@ void MyPanel::OnChoiceButtons( wxCommandEvent &event ) void MyPanel::OnCombo( wxCommandEvent &event ) { - m_text->AppendText( "ComboBox event selection string is: " ); + m_text->AppendText( _T("ComboBox event selection string is: ") ); m_text->AppendText( event.GetString() ); - m_text->AppendText( "\n" ); - m_text->AppendText( "ComboBox control selection string is: " ); + m_text->AppendText( _T("\n") ); + m_text->AppendText( _T("ComboBox control selection string is: ") ); m_text->AppendText( m_combo->GetStringSelection() ); - m_text->AppendText( "\n" ); + m_text->AppendText( _T("\n") ); } void MyPanel::OnComboTextChanged(wxCommandEvent& event) @@ -1174,7 +1247,7 @@ void MyPanel::OnComboButtons( wxCommandEvent &event ) } case ID_COMBO_SEL_STR: { - m_combo->SetStringSelection( "This" ); + m_combo->SetStringSelection( _T("This") ); break; } case ID_COMBO_CLEAR: @@ -1184,7 +1257,7 @@ void MyPanel::OnComboButtons( wxCommandEvent &event ) } case ID_COMBO_APPEND: { - m_combo->Append( "Hi!" ); + m_combo->Append( _T("Hi!") ); break; } case ID_COMBO_DELETE: @@ -1203,9 +1276,9 @@ void MyPanel::OnComboButtons( wxCommandEvent &event ) void MyPanel::OnRadio( wxCommandEvent &event ) { - m_text->AppendText( "RadioBox selection string is: " ); + m_text->AppendText( _T("RadioBox selection string is: ") ); m_text->AppendText( event.GetString() ); - m_text->AppendText( "\n" ); + m_text->AppendText( _T("\n") ); } void MyPanel::OnRadioButtons( wxCommandEvent &event ) @@ -1224,7 +1297,7 @@ void MyPanel::OnRadioButtons( wxCommandEvent &event ) } case ID_RADIOBOX_SEL_STR: { - m_radio->SetStringSelection( "This" ); + m_radio->SetStringSelection( _T("This") ); break; } case ID_RADIOBOX_FONT: @@ -1245,8 +1318,8 @@ void MyPanel::OnSetFont( wxCommandEvent &WXUNUSED(event) ) void MyPanel::OnUpdateLabel( wxCommandEvent &event ) { - m_label->SetLabel(event.GetInt() ? "Very very very very very long text." - : "Shorter text."); + m_label->SetLabel(event.GetInt() ? _T("Very very very very very long text.") + : _T("Shorter text.")); } void MyPanel::OnSliderUpdate( wxCommandEvent &WXUNUSED(event) ) @@ -1362,8 +1435,8 @@ void MyPanel::OnShowProgress( wxCommandEvent& WXUNUSED(event) ) return; } - wxProgressDialog dialog("Progress dialog example", - "An informative message", + wxProgressDialog dialog(_T("Progress dialog example"), + _T("An informative message"), max, // range this, // parent wxPD_CAN_ABORT | @@ -1380,11 +1453,11 @@ void MyPanel::OnShowProgress( wxCommandEvent& WXUNUSED(event) ) wxSleep(1); if ( i == max ) { - cont = dialog.Update(i, "That's all, folks!"); + cont = dialog.Update(i, _T("That's all, folks!")); } else if ( i == max / 2 ) { - cont = dialog.Update(i, "Only a half left (very long message)!"); + cont = dialog.Update(i, _T("Only a half left (very long message)!")); } else { @@ -1394,16 +1467,47 @@ void MyPanel::OnShowProgress( wxCommandEvent& WXUNUSED(event) ) if ( !cont ) { - *m_text << "Progress dialog aborted!\n"; + *m_text << _T("Progress dialog aborted!\n"); } else { - *m_text << "Countdown from " << max << " finished.\n"; + *m_text << _T("Countdown from ") << max << _T(" finished.\n"); } } #endif // wxUSE_SPINBTN +void MyPanel::OnSizerCheck( wxCommandEvent &event) +{ + switch (event.GetId ()) { + case ID_SIZER_CHECK1: + m_buttonSizer->Show (m_sizerBtn1, event.IsChecked ()); + m_buttonSizer->Layout (); + break; + case ID_SIZER_CHECK2: + m_buttonSizer->Show (m_sizerBtn2, event.IsChecked ()); + m_buttonSizer->Layout (); + break; + case ID_SIZER_CHECK3: + m_buttonSizer->Show (m_sizerBtn3, event.IsChecked ()); + m_buttonSizer->Layout (); + break; + case ID_SIZER_CHECK4: + m_buttonSizer->Show (m_sizerBtn4, event.IsChecked ()); + m_buttonSizer->Layout (); + break; + case ID_SIZER_CHECK14: + m_hsizer->Show (m_buttonSizer, event.IsChecked ()); + m_hsizer->Layout (); + break; + case ID_SIZER_CHECKBIG: + m_hsizer->Show (m_bigBtn, event.IsChecked ()); + m_hsizer->Layout (); + break; + } + +} + MyPanel::~MyPanel() { //wxLog::RemoveTraceMask(_T("focus")); @@ -1433,7 +1537,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_IDLE(MyFrame::OnIdle) END_EVENT_TABLE() -MyFrame::MyFrame(const char *title, int x, int y) +MyFrame::MyFrame(const wxChar *title, int x, int y) : wxFrame(NULL, -1, title, wxPoint(x, y), wxSize(500, 430)) { // Give it an icon @@ -1444,29 +1548,29 @@ MyFrame::MyFrame(const char *title, int x, int y) wxMenu *file_menu = new wxMenu; - file_menu->Append(CONTROLS_CLEAR_LOG, "&Clear log\tCtrl-L"); + file_menu->Append(CONTROLS_CLEAR_LOG, _T("&Clear log\tCtrl-L")); file_menu->AppendSeparator(); - file_menu->Append(CONTROLS_ABOUT, "&About\tF1"); + file_menu->Append(CONTROLS_ABOUT, _T("&About\tF1")); file_menu->AppendSeparator(); - file_menu->Append(CONTROLS_QUIT, "E&xit\tAlt-X", "Quit controls sample"); + file_menu->Append(CONTROLS_QUIT, _T("E&xit\tAlt-X"), _T("Quit controls sample")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); #if wxUSE_TOOLTIPS wxMenu *tooltip_menu = new wxMenu; - tooltip_menu->Append(CONTROLS_SET_TOOLTIP_DELAY, "Set &delay\tCtrl-D"); + tooltip_menu->Append(CONTROLS_SET_TOOLTIP_DELAY, _T("Set &delay\tCtrl-D")); tooltip_menu->AppendSeparator(); - tooltip_menu->Append(CONTROLS_ENABLE_TOOLTIPS, "&Toggle tooltips\tCtrl-T", - "enable/disable tooltips", TRUE); + tooltip_menu->Append(CONTROLS_ENABLE_TOOLTIPS, _T("&Toggle tooltips\tCtrl-T"), + _T("enable/disable tooltips"), TRUE); tooltip_menu->Check(CONTROLS_ENABLE_TOOLTIPS, TRUE); - menu_bar->Append(tooltip_menu, "&Tooltips"); + menu_bar->Append(tooltip_menu, _T("&Tooltips")); #endif // wxUSE_TOOLTIPS wxMenu *panel_menu = new wxMenu; - panel_menu->Append(CONTROLS_ENABLE_ALL, "&Disable all\tCtrl-E", - "Enable/disable all panel controls", TRUE); - menu_bar->Append(panel_menu, "&Panel"); + panel_menu->Append(CONTROLS_ENABLE_ALL, _T("&Disable all\tCtrl-E"), + _T("Enable/disable all panel controls"), TRUE); + menu_bar->Append(panel_menu, _T("&Panel")); SetMenuBar(menu_bar); @@ -1486,7 +1590,7 @@ void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) { wxBusyCursor bc; - wxMessageDialog dialog(this, "This is a control sample", "About Controls", wxOK ); + wxMessageDialog dialog(this, _T("This is a control sample"), _T("About Controls"), wxOK ); dialog.ShowModal(); } @@ -1503,8 +1607,8 @@ void MyFrame::OnSetTooltipDelay(wxCommandEvent& event) wxString delay; delay.Printf( _T("%ld"), s_delay); - delay = wxGetTextFromUser("Enter delay (in milliseconds)", - "Set tooltip delay", + delay = wxGetTextFromUser(_T("Enter delay (in milliseconds)"), + _T("Set tooltip delay"), delay, this); if ( !delay ) @@ -1617,6 +1721,8 @@ static void SetListboxClientData(const wxChar *name, wxListBox *control) } } +#if wxUSE_CHOICE + static void SetChoiceClientData(const wxChar *name, wxChoice *control) { size_t count = control->GetCount(); @@ -1629,3 +1735,5 @@ static void SetChoiceClientData(const wxChar *name, wxChoice *control) control->SetClientObject(n, new wxStringClientData(s)); } } + +#endif // wxUSE_CHOICE diff --git a/samples/controls/controls.dsp b/samples/controls/controls.dsp index 95e8e3be92..a2ef8c5b07 100644 --- a/samples/controls/controls.dsp +++ b/samples/controls/controls.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "controls - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "controls - Win32 Release" diff --git a/samples/controls/makefile.wat b/samples/controls/makefile.wat index db1d6cc5b6..38a493d610 100644 --- a/samples/controls/makefile.wat +++ b/samples/controls/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = controls -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\controls +# +PROGRAM = controls +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/db/db.dsp b/samples/db/db.dsp index c61c33aca3..e6c677db1e 100644 --- a/samples/db/db.dsp +++ b/samples/db/db.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "db - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "db - Win32 Release" diff --git a/samples/db/makefile.wat b/samples/db/makefile.wat index c3d0e8772d..58028def5e 100644 --- a/samples/db/makefile.wat +++ b/samples/db/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = dbtest -OBJECTS = $(PROGRAM).obj listdb.obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\db +# +PROGRAM = db +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 059006ed3c..25e42ae0b5 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -122,7 +122,7 @@ bool MyApp::OnInit() wxConvCurrent = &wxConvLibc; #endif - m_canvasTextColour = wxColour("BLACK"); + m_canvasTextColour = wxColour(_T("BLACK")); m_canvasFont = *wxNORMAL_FONT; // Create the main frame window @@ -170,12 +170,12 @@ bool MyApp::OnInit() file_menu->Append(DIALOGS_BUSYINFO, _T("&Busy info dialog\tCtrl-B")); #endif // wxUSE_BUSYINFO #if wxUSE_FINDREPLDLG - file_menu->Append(DIALOGS_FIND, _T("&Find dialog\tCtrl-F"), "", TRUE); - file_menu->Append(DIALOGS_REPLACE, _T("Find and &replace dialog\tShift-Ctrl-F"), "", TRUE); + file_menu->Append(DIALOGS_FIND, _T("&Find dialog\tCtrl-F"), _T(""), TRUE); + file_menu->Append(DIALOGS_REPLACE, _T("Find and &replace dialog\tShift-Ctrl-F"), _T(""), TRUE); #endif // wxUSE_FINDREPLDLG file_menu->AppendSeparator(); file_menu->Append(DIALOGS_MODAL, _T("Mo&dal dialog\tCtrl-W")); - file_menu->Append(DIALOGS_MODELESS, _T("Modeless &dialog\tCtrl-Z"), "", TRUE); + file_menu->Append(DIALOGS_MODELESS, _T("Modeless &dialog\tCtrl-Z"), _T(""), TRUE); file_menu->AppendSeparator(); file_menu->Append(wxID_EXIT, _T("E&xit\tAlt-X")); wxMenuBar *menu_bar = new wxMenuBar; @@ -226,7 +226,7 @@ void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) ) } wxColourDialog dialog(this, &data); - dialog.SetTitle("Choose the background colour"); + dialog.SetTitle(_T("Choose the background colour")); if (dialog.ShowModal() == wxID_OK) { wxColourData retData = dialog.GetColourData(); @@ -375,7 +375,7 @@ void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event)) { wxString pwd = wxGetPasswordFromUser(_T("Enter password:"), _T("Password entry dialog"), - "", + _T(""), this); if ( !!pwd ) { @@ -457,7 +457,11 @@ void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) _T("Testing open file dialog"), _T(""), _T(""), +#ifdef __WXMOTIF__ + _T("C++ files (*.cpp)|*.cpp") +#else _T("C++ files (*.h;*.cpp)|*.h;*.cpp") +#endif ); dialog.SetDirectory(wxGetHomeDir()); @@ -534,16 +538,16 @@ void MyFrame::FileSave(wxCommandEvent& WXUNUSED(event) ) wxFileDialog dialog(this, _T("Testing save file dialog"), _T(""), - _T("myletter.txt"), + _T("myletter.doc"), _T("Text files (*.txt)|*.txt|Document files (*.doc)|*.doc"), wxSAVE|wxOVERWRITE_PROMPT); + dialog.SetFilterIndex(1); + if (dialog.ShowModal() == wxID_OK) { - wxChar buf[400]; - wxSprintf(buf, _T("%s, filter %d"), (const wxChar*)dialog.GetPath(), dialog.GetFilterIndex()); - wxMessageDialog dialog2(this, wxString(buf), _T("Selected path")); - dialog2.ShowModal(); + wxLogMessage(_T("%s, filter %d"), + dialog.GetPath().c_str(), dialog.GetFilterIndex()); } } @@ -557,8 +561,7 @@ void MyFrame::DirChoose(wxCommandEvent& WXUNUSED(event) ) if (dialog.ShowModal() == wxID_OK) { - wxMessageDialog dialog2(this, dialog.GetPath(), _T("Selected path")); - dialog2.ShowModal(); + wxLogMessage(_T("Selected path: %s"), dialog.GetPath().c_str()); } } @@ -708,7 +711,7 @@ void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event)) { wxWindowDisabler disableAll; - wxBusyInfo info("Working, please wait...", this); + wxBusyInfo info(_T("Working, please wait..."), this); for ( int i = 0; i < 18; i++ ) { @@ -851,7 +854,7 @@ void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event) ) dc.SetFont(wxGetApp().m_canvasFont); dc.SetTextForeground(wxGetApp().m_canvasTextColour); dc.SetBackgroundMode(wxTRANSPARENT); - dc.DrawText("wxWindows common dialogs test application", 10, 10); + dc.DrawText(_T("wxWindows common dialogs test application"), 10, 10); } // ---------------------------------------------------------------------------- @@ -859,7 +862,7 @@ void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event) ) // ---------------------------------------------------------------------------- MyModelessDialog::MyModelessDialog(wxWindow *parent) - : wxDialog(parent, -1, wxString("Modeless dialog")) + : wxDialog(parent, -1, wxString(_T("Modeless dialog"))) { wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); diff --git a/samples/dialogs/dialogs.dsp b/samples/dialogs/dialogs.dsp index 17ea64d1c1..02141c0825 100644 --- a/samples/dialogs/dialogs.dsp +++ b/samples/dialogs/dialogs.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "dialogs - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "dialogs - Win32 Release" diff --git a/samples/dialogs/dialogsUniv.dsp b/samples/dialogs/dialogsUniv.dsp new file mode 100644 index 0000000000..0735991798 --- /dev/null +++ b/samples/dialogs/dialogsUniv.dsp @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="dialogs" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=dialogs - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "dialogsUniv.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "dialogsUniv.mak" CFG="dialogs - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "dialogs - Win32 Release DLL" (based on "Win32 (x86) Application") +!MESSAGE "dialogs - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "dialogs - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "dialogs - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "dialogs - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "UnivReleaseDll" +# PROP BASE Intermediate_Dir "UnivReleaseDll" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "UnivReleaseDll" +# PROP Intermediate_Dir "UnivReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib\univdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D wxUSE_GUI=1 /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxuniv233.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "dialogs - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "UnivDebugDll" +# PROP BASE Intermediate_Dir "UnivDebugDll" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "UnivDebugDll" +# PROP Intermediate_Dir "UnivDebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib\univdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D wxUSE_GUI=1 /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxuniv233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "dialogs - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "UnivRelease" +# PROP BASE Intermediate_Dir "UnivRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "UnivRelease" +# PROP Intermediate_Dir "UnivRelease" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MD /W4 /O2 /I "..\..\include" /I "..\..\lib\univ" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D wxUSE_GUI=1 /D "__WXUNIVERSAL__" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxuniv.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "dialogs - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "UnivDebug" +# PROP BASE Intermediate_Dir "UnivDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "UnivDebug" +# PROP Intermediate_Dir "UnivDebug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "..\..\include" /I "..\..\lib\univd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D wxUSE_GUI=1 /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxunivd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "dialogs - Win32 Release DLL" +# Name "dialogs - Win32 Debug DLL" +# Name "dialogs - Win32 Release" +# Name "dialogs - Win32 Debug" +# Begin Source File + +SOURCE=.\dialogs.cpp +# End Source File +# Begin Source File + +SOURCE=.\dialogs.rc +# End Source File +# End Target +# End Project diff --git a/samples/dialogs/makefile.wat b/samples/dialogs/makefile.wat index f0d3b21081..4499dec2e1 100644 --- a/samples/dialogs/makefile.wat +++ b/samples/dialogs/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = dialogs -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\dialogs +# +PROGRAM = dialogs +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/dialup/dialup.dsp b/samples/dialup/dialup.dsp index 1a7a78a8bc..ba61fb7728 100644 --- a/samples/dialup/dialup.dsp +++ b/samples/dialup/dialup.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "dialup - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "dialup - Win32 Release" diff --git a/samples/dialup/nettest.cpp b/samples/dialup/nettest.cpp index 2e7e365804..99c05d6950 100644 --- a/samples/dialup/nettest.cpp +++ b/samples/dialup/nettest.cpp @@ -156,7 +156,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("Dial-up wxWindows demo", + MyFrame *frame = new MyFrame(_T("Dial-up wxWindows demo"), wxPoint(50, 50), wxSize(450, 340)); // Show it and tell the application that it's our main window @@ -178,7 +178,7 @@ bool MyApp::OnInit() return FALSE; } - frame->SetStatusText(GetDialer()->IsAlwaysOnline() ? "LAN" : "No LAN", 2); + frame->SetStatusText(GetDialer()->IsAlwaysOnline() ? _T("LAN") : _T("No LAN"), 2); return TRUE; } @@ -221,19 +221,19 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(NetTest_Dial, "&Dial\tCtrl-D", "Dial default ISP"); - menuFile->Append(NetTest_HangUp, "&HangUp\tCtrl-H", "Hang up modem"); + menuFile->Append(NetTest_Dial, _T("&Dial\tCtrl-D"), _T("Dial default ISP")); + menuFile->Append(NetTest_HangUp, _T("&HangUp\tCtrl-H"), _T("Hang up modem")); menuFile->AppendSeparator(); - menuFile->Append(NetTest_EnumISP, "&Enumerate ISPs...\tCtrl-E"); - menuFile->Append(NetTest_Check, "&Check connection status...\tCtrl-C"); + menuFile->Append(NetTest_EnumISP, _T("&Enumerate ISPs...\tCtrl-E")); + menuFile->Append(NetTest_Check, _T("&Check connection status...\tCtrl-C")); menuFile->AppendSeparator(); - menuFile->Append(NetTest_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(NetTest_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(NetTest_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(NetTest_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _T("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -310,7 +310,7 @@ void MyFrame::OnEnumISPs(wxCommandEvent& WXUNUSED(event)) } else { - wxString msg = "Known ISPs:\n"; + wxString msg = _T("Known ISPs:\n"); for ( size_t n = 0; n < nCount; n++ ) { msg << names[n] << '\n'; @@ -335,6 +335,6 @@ void MyFrame::OnIdle(wxIdleEvent& WXUNUSED(event)) { s_isOnline = isOnline; - SetStatusText(isOnline ? "Online" : "Offline", 1); + SetStatusText(isOnline ? _T("Online") : _T("Offline"), 1); } } diff --git a/samples/dnd/dnd.cpp b/samples/dnd/dnd.cpp index 41b7851501..e7a4b69008 100644 --- a/samples/dnd/dnd.cpp +++ b/samples/dnd/dnd.cpp @@ -220,7 +220,7 @@ private: class DnDFrame : public wxFrame { public: - DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h); + DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h); virtual ~DnDFrame(); void OnPaint(wxPaintEvent& event); @@ -748,9 +748,9 @@ public: // override base class (pure) virtuals virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def) - { m_frame->SetStatusText("Mouse entered the frame"); return OnDragOver(x, y, def); } + { m_frame->SetStatusText(_T("Mouse entered the frame")); return OnDragOver(x, y, def); } virtual void OnLeave() - { m_frame->SetStatusText("Mouse left the frame"); } + { m_frame->SetStatusText(_T("Mouse left the frame")); } virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def) { if ( !GetData() ) @@ -877,13 +877,13 @@ bool DnDApp::OnInit() #if USE_RESOURCES // load our ressources wxPathList pathList; - pathList.Add("."); + pathList.Add(_T(".")); #ifdef __WXMSW__ - pathList.Add("./Debug"); - pathList.Add("./Release"); + pathList.Add(_T("./Debug")); + pathList.Add(_T("./Release")); #endif // wxMSW - wxString path = pathList.FindValidPath("dnd.wxr"); + wxString path = pathList.FindValidPath(_T("dnd.wxr")); if ( !path ) { wxLogError(wxT("Can't find the resource file dnd.wxr in the current ") @@ -912,7 +912,7 @@ bool DnDApp::OnInit() // create the main frame window DnDFrame *frame = new DnDFrame((wxFrame *) NULL, - "Drag-and-Drop/Clipboard wxWindows Sample", + _T("Drag-and-Drop/Clipboard wxWindows Sample"), 10, 100, 650, 340); // activate it @@ -923,9 +923,9 @@ bool DnDApp::OnInit() return TRUE; } -DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h) +DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)), - m_strText("wxWindows drag & drop works :-)") + m_strText(_T("wxWindows drag & drop works :-)")) { // frame icon and status bar @@ -935,40 +935,40 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h) // construct menu wxMenu *file_menu = new wxMenu; - file_menu->Append(Menu_Drag, "&Test drag..."); - file_menu->AppendCheckItem(Menu_DragMoveDef, "&Move by default"); - file_menu->AppendCheckItem(Menu_DragMoveAllow, "&Allow moving"); + file_menu->Append(Menu_Drag, _T("&Test drag...")); + file_menu->AppendCheckItem(Menu_DragMoveDef, _T("&Move by default")); + file_menu->AppendCheckItem(Menu_DragMoveAllow, _T("&Allow moving")); file_menu->AppendSeparator(); - file_menu->Append(Menu_NewFrame, "&New frame\tCtrl-N"); + file_menu->Append(Menu_NewFrame, _T("&New frame\tCtrl-N")); file_menu->AppendSeparator(); - file_menu->Append(Menu_Quit, "E&xit\tCtrl-Q"); + file_menu->Append(Menu_Quit, _T("E&xit\tCtrl-Q")); wxMenu *log_menu = new wxMenu; - log_menu->Append(Menu_Clear, "Clear\tCtrl-L"); + log_menu->Append(Menu_Clear, _T("Clear\tCtrl-L")); wxMenu *help_menu = new wxMenu; - help_menu->Append(Menu_Help, "&Help..."); + help_menu->Append(Menu_Help, _T("&Help...")); help_menu->AppendSeparator(); - help_menu->Append(Menu_About, "&About"); + help_menu->Append(Menu_About, _T("&About")); wxMenu *clip_menu = new wxMenu; - clip_menu->Append(Menu_Copy, "&Copy text\tCtrl-C"); - clip_menu->Append(Menu_Paste, "&Paste text\tCtrl-V"); + clip_menu->Append(Menu_Copy, _T("&Copy text\tCtrl-C")); + clip_menu->Append(Menu_Paste, _T("&Paste text\tCtrl-V")); clip_menu->AppendSeparator(); - clip_menu->Append(Menu_CopyBitmap, "Copy &bitmap\tCtrl-Shift-C"); - clip_menu->Append(Menu_PasteBitmap, "Paste b&itmap\tCtrl-Shift-V"); + clip_menu->Append(Menu_CopyBitmap, _T("Copy &bitmap\tCtrl-Shift-C")); + clip_menu->Append(Menu_PasteBitmap, _T("Paste b&itmap\tCtrl-Shift-V")); #ifdef USE_METAFILES clip_menu->AppendSeparator(); - clip_menu->Append(Menu_PasteMFile, "Paste &metafile\tCtrl-M"); + clip_menu->Append(Menu_PasteMFile, _T("Paste &metafile\tCtrl-M")); #endif // USE_METAFILES clip_menu->AppendSeparator(); - clip_menu->Append(Menu_CopyFiles, "Copy &files\tCtrl-F"); + clip_menu->Append(Menu_CopyFiles, _T("Copy &files\tCtrl-F")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(log_menu, "&Log"); - menu_bar->Append(clip_menu, "&Clipboard"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(log_menu, _T("&Log")); + menu_bar->Append(clip_menu, _T("&Clipboard")); + menu_bar->Append(help_menu, _T("&Help")); SetMenuBar(menu_bar); @@ -976,14 +976,14 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h) wxPoint pos(0, 0); wxSize size(400, 200); - wxString strFile("Drop files here!"), strText("Drop text on me"); + wxString strFile(_T("Drop files here!")), strText(_T("Drop text on me")); m_ctrlFile = new wxListBox(this, -1, pos, size, 1, &strFile, wxLB_HSCROLL | wxLB_ALWAYS_SB ); m_ctrlText = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL | wxLB_ALWAYS_SB ); - m_ctrlLog = new wxTextCtrl(this, -1, "", pos, size, + m_ctrlLog = new wxTextCtrl(this, -1, _T(""), pos, size, wxTE_MULTILINE | wxTE_READONLY | wxSUNKEN_BORDER ); @@ -1050,8 +1050,8 @@ void DnDFrame::OnPaint(wxPaintEvent& WXUNUSED(event)) wxPaintDC dc(this); // dc.Clear(); -- this kills wxGTK - dc.SetFont( wxFont( 24, wxDECORATIVE, wxNORMAL, wxNORMAL, FALSE, "charter" ) ); - dc.DrawText( "Drag text from here!", 100, h-50 ); + dc.SetFont( wxFont( 24, wxDECORATIVE, wxNORMAL, wxNORMAL, FALSE, _T("charter") ) ); + dc.DrawText( _T("Drag text from here!"), 100, h-50 ); } void DnDFrame::OnUpdateUIMoveByDefault(wxUpdateUIEvent& event) @@ -1093,11 +1093,11 @@ void DnDFrame::OnDrag(wxCommandEvent& WXUNUSED(event)) { wxString strText = wxGetTextFromUser ( - "After you enter text in this dialog, press any mouse\n" - "button in the bottom (empty) part of the frame and \n" - "drag it anywhere - you will be in fact dragging the\n" - "text object containing this text", - "Please enter some text", m_strText, this + _T("After you enter text in this dialog, press any mouse\n") + _T("button in the bottom (empty) part of the frame and \n") + _T("drag it anywhere - you will be in fact dragging the\n") + _T("text object containing this text"), + _T("Please enter some text"), m_strText, this ); m_strText = strText; @@ -1115,10 +1115,10 @@ void DnDFrame::OnDragMoveAllow(wxCommandEvent& event) void DnDFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("Drag-&-Drop Demo\n" - "Please see \"Help|Help...\" for details\n" - "Copyright (c) 1998 Vadim Zeitlin", - "About wxDnD", + wxMessageBox(_T("Drag-&-Drop Demo\n") + _T("Please see \"Help|Help...\" for details\n") + _T("Copyright (c) 1998 Vadim Zeitlin"), + _T("About wxDnD"), wxICON_INFORMATION | wxOK, this); } @@ -1126,27 +1126,27 @@ void DnDFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) void DnDFrame::OnHelp(wxCommandEvent& /* event */) { wxMessageDialog dialog(this, - "This small program demonstrates drag & drop support in wxWindows. The program window\n" - "consists of 3 parts: the bottom pane is for debug messages, so that you can see what's\n" - "going on inside. The top part is split into 2 listboxes, the left one accepts files\n" - "and the right one accepts text.\n" - "\n" - "To test wxDropTarget: open wordpad (write.exe), select some text in it and drag it to\n" - "the right listbox (you'll notice the usual visual feedback, i.e. the cursor will change).\n" - "Also, try dragging some files (you can select several at once) from Windows Explorer (or \n" - "File Manager) to the left pane. Hold down Ctrl/Shift keys when you drop text (doesn't \n" - "work with files) and see what changes.\n" - "\n" - "To test wxDropSource: just press any mouse button on the empty zone of the window and drag\n" - "it to wordpad or any other droptarget accepting text (and of course you can just drag it\n" - "to the right pane). Due to a lot of trace messages, the cursor might take some time to \n" - "change, don't release the mouse button until it does. You can change the string being\n" - "dragged in in \"File|Test drag...\" dialog.\n" - "\n" - "\n" - "Please send all questions/bug reports/suggestions &c to \n" - "Vadim Zeitlin ", - "wxDnD Help"); + _T("This small program demonstrates drag & drop support in wxWindows. The program window\n") + _T("consists of 3 parts: the bottom pane is for debug messages, so that you can see what's\n") + _T("going on inside. The top part is split into 2 listboxes, the left one accepts files\n") + _T("and the right one accepts text.\n") + _T("\n") + _T("To test wxDropTarget: open wordpad (write.exe), select some text in it and drag it to\n") + _T("the right listbox (you'll notice the usual visual feedback, i.e. the cursor will change).\n") + _T("Also, try dragging some files (you can select several at once) from Windows Explorer (or \n") + _T("File Manager) to the left pane. Hold down Ctrl/Shift keys when you drop text (doesn't \n") + _T("work with files) and see what changes.\n") + _T("\n") + _T("To test wxDropSource: just press any mouse button on the empty zone of the window and drag\n") + _T("it to wordpad or any other droptarget accepting text (and of course you can just drag it\n") + _T("to the right pane). Due to a lot of trace messages, the cursor might take some time to \n") + _T("change, don't release the mouse button until it does. You can change the string being\n") + _T("dragged in in \"File|Test drag...\" dialog.\n") + _T("\n") + _T("\n") + _T("Please send all questions/bug reports/suggestions &c to \n") + _T("Vadim Zeitlin "), + _T("wxDnD Help")); dialog.ShowModal(); } @@ -1180,28 +1180,28 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) ) else if ( m_moveAllow ) flags |= wxDrag_AllowMove; - const char *pc; + const wxChar *pc; switch ( source.DoDragDrop(flags) ) { - case wxDragError: pc = "Error!"; break; - case wxDragNone: pc = "Nothing"; break; - case wxDragCopy: pc = "Copied"; break; - case wxDragMove: pc = "Moved"; break; - case wxDragCancel: pc = "Cancelled"; break; - default: pc = "Huh?"; break; + case wxDragError: pc = _T("Error!"); break; + case wxDragNone: pc = _T("Nothing"); break; + case wxDragCopy: pc = _T("Copied"); break; + case wxDragMove: pc = _T("Moved"); break; + case wxDragCancel: pc = _T("Cancelled"); break; + default: pc = _T("Huh?"); break; } - SetStatusText(wxString("Drag result: ") + pc); + SetStatusText(wxString(_T("Drag result: ")) + pc); } } void DnDFrame::OnRightDown(wxMouseEvent &event ) { - wxMenu menu("Dnd sample menu"); + wxMenu menu(_T("Dnd sample menu")); - menu.Append(Menu_Drag, "&Test drag..."); + menu.Append(Menu_Drag, _T("&Test drag...")); menu.AppendSeparator(); - menu.Append(Menu_About, "&About"); + menu.Append(Menu_About, _T("&About")); PopupMenu( &menu, event.GetX(), event.GetY() ); } @@ -1222,9 +1222,9 @@ void DnDFrame::OnCopyBitmap(wxCommandEvent& WXUNUSED(event)) { // PNG support is not always compiled in under Windows, so use BMP there #ifdef __WXMSW__ - wxFileDialog dialog(this, "Open a BMP file", "", "", "BMP files (*.bmp)|*.bmp", 0); + wxFileDialog dialog(this, _T("Open a BMP file"), _T(""), _T(""), _T("BMP files (*.bmp)|*.bmp"), 0); #else - wxFileDialog dialog(this, "Open a PNG file", "", "", "PNG files (*.png)|*.png", 0); + wxFileDialog dialog(this, _T("Open a PNG file"), _T(""), _T(""), _T("PNG files (*.png)|*.png"), 0); #endif if (dialog.ShowModal() != wxID_OK) @@ -1366,8 +1366,8 @@ void DnDFrame::OnPasteMetafile(wxCommandEvent& WXUNUSED(event)) void DnDFrame::OnCopyFiles(wxCommandEvent& WXUNUSED(event)) { #ifdef __WXMSW__ - wxFileDialog dialog(this, "Select a file to copy", "", "", - "All files (*.*)|*.*", 0); + wxFileDialog dialog(this, _T("Select a file to copy"), _T(""), _T(""), + _T("All files (*.*)|*.*"), 0); wxArrayString filenames; while ( dialog.ShowModal() == wxID_OK ) @@ -1504,14 +1504,14 @@ DnDShapeDialog::DnDShapeDialog(wxFrame *parent, DnDShape *shape) { m_shape = shape; #if USE_RESOURCES - LoadFromResource(parent, "dialogShape"); + LoadFromResource(parent, _T("dialogShape")); - m_textX = (wxTextCtrl *)wxFindWindowByName("textX", this); - m_textY = (wxTextCtrl *)wxFindWindowByName("textY", this); - m_textW = (wxTextCtrl *)wxFindWindowByName("textW", this); - m_textH = (wxTextCtrl *)wxFindWindowByName("textH", this); + m_textX = (wxTextCtrl *)wxFindWindowByName(_T("textX"), this); + m_textY = (wxTextCtrl *)wxFindWindowByName(_T("textY"), this); + m_textW = (wxTextCtrl *)wxFindWindowByName(_T("textW"), this); + m_textH = (wxTextCtrl *)wxFindWindowByName(_T("textH"), this); - m_radio = (wxRadioBox *)wxFindWindowByName("radio", this); + m_radio = (wxRadioBox *)wxFindWindowByName(_T("radio"), this); #else wxBoxSizer* topSizer = new wxBoxSizer( wxVERTICAL ); @@ -1625,8 +1625,8 @@ bool DnDShapeDialog::TransferDataFromWindow() if ( !m_pos.x || !m_pos.y || !m_size.x || !m_size.y ) { - wxMessageBox("All sizes and positions should be non null!", - "Invalid shape", wxICON_HAND | wxOK, this); + wxMessageBox(_T("All sizes and positions should be non null!"), + _T("Invalid shape"), wxICON_HAND | wxOK, this); return FALSE; } @@ -1658,28 +1658,28 @@ void DnDShapeDialog::OnColour(wxCommandEvent& WXUNUSED(event)) DnDShapeFrame *DnDShapeFrame::ms_lastDropTarget = NULL; DnDShapeFrame::DnDShapeFrame(wxFrame *parent) - : wxFrame(parent, -1, "Shape Frame", + : wxFrame(parent, -1, _T("Shape Frame"), wxDefaultPosition, wxSize(250, 150)) { CreateStatusBar(); wxMenu *menuShape = new wxMenu; - menuShape->Append(Menu_Shape_New, "&New default shape\tCtrl-S"); - menuShape->Append(Menu_Shape_Edit, "&Edit shape\tCtrl-E"); + menuShape->Append(Menu_Shape_New, _T("&New default shape\tCtrl-S")); + menuShape->Append(Menu_Shape_Edit, _T("&Edit shape\tCtrl-E")); menuShape->AppendSeparator(); - menuShape->Append(Menu_Shape_Clear, "&Clear shape\tCtrl-L"); + menuShape->Append(Menu_Shape_Clear, _T("&Clear shape\tCtrl-L")); wxMenu *menuClipboard = new wxMenu; - menuClipboard->Append(Menu_ShapeClipboard_Copy, "&Copy\tCtrl-C"); - menuClipboard->Append(Menu_ShapeClipboard_Paste, "&Paste\tCtrl-V"); + menuClipboard->Append(Menu_ShapeClipboard_Copy, _T("&Copy\tCtrl-C")); + menuClipboard->Append(Menu_ShapeClipboard_Paste, _T("&Paste\tCtrl-V")); wxMenuBar *menubar = new wxMenuBar; - menubar->Append(menuShape, "&Shape"); - menubar->Append(menuClipboard, "&Clipboard"); + menubar->Append(menuShape, _T("&Shape")); + menubar->Append(menuClipboard, _T("&Clipboard")); SetMenuBar(menubar); - SetStatusText("Press Ctrl-S to create a new shape"); + SetStatusText(_T("Press Ctrl-S to create a new shape")); SetDropTarget(new DnDShapeDropTarget(this)); @@ -1716,7 +1716,7 @@ void DnDShapeFrame::OnDrag(wxMouseEvent& event) DnDShapeDataObject shapeData(m_shape); wxDropSource source(shapeData, this); - const char *pc = NULL; + const wxChar *pc = NULL; switch ( source.DoDragDrop(TRUE) ) { default: @@ -1725,15 +1725,15 @@ void DnDShapeFrame::OnDrag(wxMouseEvent& event) break; case wxDragNone: - SetStatusText("Nothing happened"); + SetStatusText(_T("Nothing happened")); break; case wxDragCopy: - pc = "copied"; + pc = _T("copied"); break; case wxDragMove: - pc = "moved"; + pc = _T("moved"); if ( ms_lastDropTarget != this ) { // don't delete the shape if we dropped it on ourselves! @@ -1742,13 +1742,13 @@ void DnDShapeFrame::OnDrag(wxMouseEvent& event) break; case wxDragCancel: - SetStatusText("Drag and drop operation cancelled"); + SetStatusText(_T("Drag and drop operation cancelled")); break; } if ( pc ) { - SetStatusText(wxString("Shape successfully ") + pc); + SetStatusText(wxString(_T("Shape successfully ")) + pc); } //else: status text already set } @@ -1776,7 +1776,7 @@ void DnDShapeFrame::OnEditShape(wxCommandEvent& event) if ( m_shape ) { - SetStatusText("You can now drag the shape to another frame"); + SetStatusText(_T("You can now drag the shape to another frame")); } } } @@ -1785,7 +1785,7 @@ void DnDShapeFrame::OnNewShape(wxCommandEvent& event) { SetShape(new DnDEllipticShape(wxPoint(10, 10), wxSize(80, 60), *wxRED)); - SetStatusText("You can now drag the shape to another frame"); + SetStatusText(_T("You can now drag the shape to another frame")); } void DnDShapeFrame::OnClearShape(wxCommandEvent& event) diff --git a/samples/dnd/dnd.dsp b/samples/dnd/dnd.dsp index 024a9ec192..281a370ce8 100644 --- a/samples/dnd/dnd.dsp +++ b/samples/dnd/dnd.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "dnd - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "dnd - Win32 Release" diff --git a/samples/dnd/makefile.wat b/samples/dnd/makefile.wat index 1379a8bb3c..26cda69727 100644 --- a/samples/dnd/makefile.wat +++ b/samples/dnd/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = dnd -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\dnd +# +PROGRAM = dnd +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/docview/doc.cpp b/samples/docview/doc.cpp index da03ec3214..9cbea87d86 100644 --- a/samples/docview/doc.cpp +++ b/samples/docview/doc.cpp @@ -177,16 +177,16 @@ wxOutputStream &DoodleSegment::SaveObject(wxOutputStream& stream) wxTextOutputStream text_stream( stream ); wxInt32 n = lines.Number(); - text_stream << n << '\n'; + text_stream << n << _T('\n'); wxNode *node = lines.First(); while (node) { DoodleLine *line = (DoodleLine *)node->Data(); - text_stream << line->x1 << " " << - line->y1 << " " << - line->x2 << " " << - line->y2 << "\n"; + text_stream << line->x1 << _T(" ") << + line->y1 << _T(" ") << + line->x2 << _T(" ") << + line->y2 << _T("\n"); node = node->Next(); } diff --git a/samples/docview/docview.cpp b/samples/docview/docview.cpp index 5372161600..d8f9005801 100644 --- a/samples/docview/docview.cpp +++ b/samples/docview/docview.cpp @@ -72,7 +72,7 @@ bool MyApp::OnInit(void) m_docManager = new wxDocManager; //// Create a template relating drawing documents to their views - (void) new wxDocTemplate(m_docManager, "Drawing", "*.drw", "", "drw", "Drawing Doc", "Drawing View", + (void) new wxDocTemplate(m_docManager, _T("Drawing"), _T("*.drw"), _T(""), _T("drw"), _T("Drawing Doc"), _T("Drawing View"), CLASSINFO(DrawingDocument), CLASSINFO(DrawingView)); if (singleWindowMode) @@ -84,58 +84,58 @@ bool MyApp::OnInit(void) } else //// Create a template relating text documents to their views - (void) new wxDocTemplate(m_docManager, "Text", "*.txt", "", "txt", "Text Doc", "Text View", + (void) new wxDocTemplate(m_docManager, _T("Text"), _T("*.txt"), _T(""), _T("txt"), _T("Text Doc"), _T("Text View"), CLASSINFO(TextEditDocument), CLASSINFO(TextEditView)); //// Create the main frame window - frame = new MyFrame(m_docManager, (wxFrame *) NULL, -1, "DocView Demo", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); + frame = new MyFrame(m_docManager, (wxFrame *) NULL, -1, _T("DocView Demo"), wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); //// Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - frame->SetIcon(wxIcon("doc_icn")); + frame->SetIcon(wxIcon(_T("doc_icn"))); #endif //// Make a menubar wxMenu *file_menu = new wxMenu; wxMenu *edit_menu = (wxMenu *) NULL; - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); + file_menu->Append(wxID_NEW, _T("&New...")); + file_menu->Append(wxID_OPEN, _T("&Open...")); if (singleWindowMode) { - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); + file_menu->Append(wxID_CLOSE, _T("&Close")); + file_menu->Append(wxID_SAVE, _T("&Save")); + file_menu->Append(wxID_SAVEAS, _T("Save &As...")); file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); + file_menu->Append(wxID_PRINT, _T("&Print...")); + file_menu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); + file_menu->Append(wxID_PREVIEW, _T("Print Pre&view")); edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); + edit_menu->Append(wxID_UNDO, _T("&Undo")); + edit_menu->Append(wxID_REDO, _T("&Redo")); edit_menu->AppendSeparator(); - edit_menu->Append(DOCVIEW_CUT, "&Cut last segment"); + edit_menu->Append(DOCVIEW_CUT, _T("&Cut last segment")); frame->editMenu = edit_menu; } file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); + file_menu->Append(wxID_EXIT, _T("E&xit")); // A nice touch: a history of files visited. Use this menu. m_docManager->FileHistoryUseMenu(file_menu); wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); + help_menu->Append(DOCVIEW_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); if (edit_menu) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(edit_menu, _T("&Edit")); + menu_bar->Append(help_menu, _T("&Help")); if (singleWindowMode) frame->canvas = frame->CreateCanvas((wxView *) NULL, frame); @@ -165,28 +165,28 @@ int MyApp::OnExit(void) wxFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas) { //// Make a child frame - wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, GetMainFrame(), -1, "Child Frame", + wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, GetMainFrame(), -1, _T("Child Frame"), wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE); #ifdef __WXMSW__ - subframe->SetIcon(wxString(isCanvas ? "chrt_icn" : "notepad_icn")); + subframe->SetIcon(wxString(isCanvas ? _T("chrt_icn") : _T("notepad_icn"))); #endif //// Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); + file_menu->Append(wxID_NEW, _T("&New...")); + file_menu->Append(wxID_OPEN, _T("&Open...")); + file_menu->Append(wxID_CLOSE, _T("&Close")); + file_menu->Append(wxID_SAVE, _T("&Save")); + file_menu->Append(wxID_SAVEAS, _T("Save &As...")); if (isCanvas) { file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); + file_menu->Append(wxID_PRINT, _T("&Print...")); + file_menu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); + file_menu->Append(wxID_PREVIEW, _T("Print Pre&view")); } wxMenu *edit_menu = (wxMenu *) NULL; @@ -194,23 +194,23 @@ wxFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas) if (isCanvas) { edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); + edit_menu->Append(wxID_UNDO, _T("&Undo")); + edit_menu->Append(wxID_REDO, _T("&Redo")); edit_menu->AppendSeparator(); - edit_menu->Append(DOCVIEW_CUT, "&Cut last segment"); + edit_menu->Append(DOCVIEW_CUT, _T("&Cut last segment")); doc->GetCommandProcessor()->SetEditMenu(edit_menu); } wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); + help_menu->Append(DOCVIEW_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); if (isCanvas) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(edit_menu, _T("&Edit")); + menu_bar->Append(help_menu, _T("&Help")); //// Associate the menu bar with the frame subframe->SetMenuBar(menu_bar); @@ -240,7 +240,7 @@ wxDocParentFrame(manager, frame, id, title, pos, size, type) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - (void)wxMessageBox("DocView Demo\nAuthor: Julian Smart\nUsage: docview.exe [-single]", "About DocView"); + (void)wxMessageBox(_T("DocView Demo\nAuthor: Julian Smart\nUsage: docview.exe [-single]"), _T("About DocView")); } // Creates a canvas. Called either from view.cc when a new drawing diff --git a/samples/docview/docview.dsp b/samples/docview/docview.dsp index 1e1e1abc59..2d874e44f6 100644 --- a/samples/docview/docview.dsp +++ b/samples/docview/docview.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "docview - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "docview - Win32 Release" diff --git a/samples/docview/makefile.wat b/samples/docview/makefile.wat index c701e12cc8..e870e08071 100644 --- a/samples/docview/makefile.wat +++ b/samples/docview/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = docview -OBJECTS = $(PROGRAM).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\docview +# +PROGRAM = docview +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/docview/view.cpp b/samples/docview/view.cpp index 9c89122f40..73a6097ec4 100644 --- a/samples/docview/view.cpp +++ b/samples/docview/view.cpp @@ -50,7 +50,7 @@ bool DrawingView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) { // Multiple windows frame = wxGetApp().CreateChildFrame(doc, this, TRUE); - frame->SetTitle("DrawingView"); + frame->SetTitle(_T("DrawingView")); canvas = GetMainFrame()->CreateCanvas(this, frame); #ifdef __X__ @@ -150,7 +150,7 @@ bool DrawingView::OnClose(bool deleteWindow) void DrawingView::OnCut(wxCommandEvent& WXUNUSED(event) ) { DrawingDocument *doc = (DrawingDocument *)GetDocument(); - doc->GetCommandProcessor()->Submit(new DrawingCommand((char *) "Cut Last Segment", DOODLE_CUT, doc, (DoodleSegment *) NULL)); + doc->GetCommandProcessor()->Submit(new DrawingCommand(_T("Cut Last Segment"), DOODLE_CUT, doc, (DoodleSegment *) NULL)); } IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView) @@ -162,7 +162,7 @@ bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) int width, height; frame->GetClientSize(&width, &height); textsw = new MyTextWindow(this, frame, wxPoint(0, 0), wxSize(width, height), wxTE_MULTILINE); - frame->SetTitle("TextEditView"); + frame->SetTitle(_T("TextEditView")); #ifdef __X__ // X seems to require a forced resize @@ -251,7 +251,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) // We've got a valid segment on mouse left up, so store it. DrawingDocument *doc = (DrawingDocument *)view->GetDocument(); - doc->GetCommandProcessor()->Submit(new DrawingCommand("Add Segment", DOODLE_ADD, doc, currentSegment)); + doc->GetCommandProcessor()->Submit(new DrawingCommand(_T("Add Segment"), DOODLE_ADD, doc, currentSegment)); view->GetDocument()->Modify(TRUE); currentSegment = (DoodleSegment *) NULL; @@ -278,7 +278,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) // Define a constructor for my text subwindow MyTextWindow::MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style): - wxTextCtrl(frame, -1, "", pos, size, style) + wxTextCtrl(frame, -1, _T(""), pos, size, style) { view = v; } diff --git a/samples/docvwmdi/doc.cpp b/samples/docvwmdi/doc.cpp index 5a327aefe3..dc0c9c5e70 100644 --- a/samples/docvwmdi/doc.cpp +++ b/samples/docvwmdi/doc.cpp @@ -49,14 +49,14 @@ wxSTD ostream& DrawingDocument::SaveObject(wxSTD ostream& stream) wxDocument::SaveObject(stream); wxInt32 n = doodleSegments.Number(); - stream << n << '\n'; + stream << n << _T('\n'); wxNode *node = doodleSegments.First(); while (node) { DoodleSegment *segment = (DoodleSegment *)node->Data(); segment->SaveObject(stream); - stream << '\n'; + stream << _T('\n'); node = node->Next(); } @@ -71,14 +71,14 @@ wxOutputStream& DrawingDocument::SaveObject(wxOutputStream& stream) wxTextOutputStream text_stream( stream ); wxInt32 n = doodleSegments.Number(); - text_stream << n << '\n'; + text_stream << n << _T('\n'); wxNode *node = doodleSegments.First(); while (node) { DoodleSegment *segment = (DoodleSegment *)node->Data(); segment->SaveObject(stream); - text_stream << '\n'; + text_stream << _T('\n'); node = node->Next(); } @@ -155,16 +155,16 @@ DoodleSegment::~DoodleSegment(void) wxSTD ostream& DoodleSegment::SaveObject(wxSTD ostream& stream) { wxInt32 n = lines.Number(); - stream << n << '\n'; + stream << n << _T('\n'); wxNode *node = lines.First(); while (node) { DoodleLine *line = (DoodleLine *)node->Data(); - stream << line->x1 << " " << - line->y1 << " " << - line->x2 << " " << - line->y2 << "\n"; + stream << line->x1 << _T(" ") << + line->y1 << _T(" ") << + line->x2 << _T(" ") << + line->y2 << _T("\n"); node = node->Next(); } @@ -176,16 +176,16 @@ wxOutputStream &DoodleSegment::SaveObject(wxOutputStream& stream) wxTextOutputStream text_stream( stream ); wxInt32 n = lines.Number(); - text_stream << n << '\n'; + text_stream << n << _T('\n'); wxNode *node = lines.First(); while (node) { DoodleLine *line = (DoodleLine *)node->Data(); - text_stream << line->x1 << " " << - line->y1 << " " << - line->x2 << " " << - line->y2 << "\n"; + text_stream << line->x1 << _T(" ") << + line->y1 << _T(" ") << + line->x2 << _T(" ") << + line->y2 << _T("\n"); node = node->Next(); } diff --git a/samples/docvwmdi/docview.cpp b/samples/docvwmdi/docview.cpp index 69ce099317..51ca36d7a3 100644 --- a/samples/docvwmdi/docview.cpp +++ b/samples/docvwmdi/docview.cpp @@ -56,48 +56,48 @@ bool MyApp::OnInit(void) m_docManager = new wxDocManager; //// Create a template relating drawing documents to their views - (void) new wxDocTemplate((wxDocManager *) m_docManager, "Drawing", "*.drw", "", "drw", "Drawing Doc", "Drawing View", + (void) new wxDocTemplate((wxDocManager *) m_docManager, _T("Drawing"), _T("*.drw"), _T(""), _T("drw"), _T("Drawing Doc"), _T("Drawing View"), CLASSINFO(DrawingDocument), CLASSINFO(DrawingView)); //// Create a template relating text documents to their views - (void) new wxDocTemplate(m_docManager, "Text", "*.txt", "", "txt", "Text Doc", "Text View", + (void) new wxDocTemplate(m_docManager, _T("Text"), _T("*.txt"), _T(""), _T("txt"), _T("Text Doc"), _T("Text View"), CLASSINFO(TextEditDocument), CLASSINFO(TextEditView)); //// Create the main frame window frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, - "DocView Demo", wxPoint(0, 0), wxSize(500, 400), + _T("DocView Demo"), wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE); //// Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - frame->SetIcon(wxIcon("doc")); + frame->SetIcon(wxIcon(_T("doc"))); #endif #ifdef __X__ - frame->SetIcon(wxIcon("doc.xbm")); + frame->SetIcon(wxIcon(_T("doc.xbm"))); #endif //// Make a menubar wxMenu *file_menu = new wxMenu; wxMenu *edit_menu = (wxMenu *) NULL; - file_menu->Append(wxID_NEW, "&New...\tCtrl-N"); - file_menu->Append(wxID_OPEN, "&Open...\tCtrl-X"); + file_menu->Append(wxID_NEW, _T("&New...\tCtrl-N")); + file_menu->Append(wxID_OPEN, _T("&Open...\tCtrl-X")); file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit\tAlt-X"); + file_menu->Append(wxID_EXIT, _T("E&xit\tAlt-X")); // A nice touch: a history of files visited. Use this menu. m_docManager->FileHistoryUseMenu(file_menu); wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About\tF1"); + help_menu->Append(DOCVIEW_ABOUT, _T("&About\tF1")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); if (edit_menu) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(edit_menu, _T("&Edit")); + menu_bar->Append(help_menu, _T("&Help")); //// Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -124,60 +124,60 @@ wxMDIChildFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isC { //// Make a child frame wxDocMDIChildFrame *subframe = - new wxDocMDIChildFrame(doc, view, GetMainFrame(), -1, "Child Frame", + new wxDocMDIChildFrame(doc, view, GetMainFrame(), -1, _T("Child Frame"), wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE); #ifdef __WXMSW__ - subframe->SetIcon(wxString(isCanvas ? "chart" : "notepad")); + subframe->SetIcon(wxString(isCanvas ? _T("chart") : _T("notepad"))); #endif #ifdef __X__ - subframe->SetIcon(wxIcon("doc.xbm")); + subframe->SetIcon(wxIcon(_T("doc.xbm"))); #endif //// Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); + file_menu->Append(wxID_NEW, _T("&New...")); + file_menu->Append(wxID_OPEN, _T("&Open...")); + file_menu->Append(wxID_CLOSE, _T("&Close")); + file_menu->Append(wxID_SAVE, _T("&Save")); + file_menu->Append(wxID_SAVEAS, _T("Save &As...")); if (isCanvas) { file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); + file_menu->Append(wxID_PRINT, _T("&Print...")); + file_menu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); + file_menu->Append(wxID_PREVIEW, _T("Print Pre&view")); } file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); + file_menu->Append(wxID_EXIT, _T("E&xit")); wxMenu *edit_menu = (wxMenu *) NULL; if (isCanvas) { edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); + edit_menu->Append(wxID_UNDO, _T("&Undo")); + edit_menu->Append(wxID_REDO, _T("&Redo")); edit_menu->AppendSeparator(); - edit_menu->Append(DOCVIEW_CUT, "&Cut last segment"); + edit_menu->Append(DOCVIEW_CUT, _T("&Cut last segment")); doc->GetCommandProcessor()->SetEditMenu(edit_menu); } wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); + help_menu->Append(DOCVIEW_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); if (isCanvas) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(edit_menu, _T("&Edit")); + menu_bar->Append(help_menu, _T("&Help")); //// Associate the menu bar with the frame subframe->SetMenuBar(menu_bar); @@ -196,14 +196,14 @@ END_EVENT_TABLE() MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, long type): - wxDocMDIParentFrame(manager, frame, -1, title, pos, size, type, "myFrame") + wxDocMDIParentFrame(manager, frame, -1, title, pos, size, type, _T("myFrame")) { editMenu = (wxMenu *) NULL; } void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - (void)wxMessageBox("DocView Demo\nAuthor: Julian Smart\nUsage: docview.exe", "About DocView"); + (void)wxMessageBox(_T("DocView Demo\nAuthor: Julian Smart\nUsage: docview.exe"), _T("About DocView")); } // Creates a canvas. Called from view.cpp when a new drawing diff --git a/samples/docvwmdi/docvwmdi.dsp b/samples/docvwmdi/docvwmdi.dsp index a843367163..933736d686 100644 --- a/samples/docvwmdi/docvwmdi.dsp +++ b/samples/docvwmdi/docvwmdi.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "docvwmdi - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "docvwmdi - Win32 Release" diff --git a/samples/docvwmdi/makefile.wat b/samples/docvwmdi/makefile.wat index c701e12cc8..bc95b48e12 100644 --- a/samples/docvwmdi/makefile.wat +++ b/samples/docvwmdi/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = docview -OBJECTS = $(PROGRAM).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\docvwmdi +# +PROGRAM = docvwmdi +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/docvwmdi/view.cpp b/samples/docvwmdi/view.cpp index 2f873099a8..6e67a8c51f 100644 --- a/samples/docvwmdi/view.cpp +++ b/samples/docvwmdi/view.cpp @@ -47,7 +47,7 @@ END_EVENT_TABLE() bool DrawingView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) { frame = wxGetApp().CreateChildFrame(doc, this, TRUE); - frame->SetTitle("DrawingView"); + frame->SetTitle(_T("DrawingView")); canvas = GetMainFrame()->CreateCanvas(this, frame); #ifdef __X__ @@ -129,7 +129,7 @@ bool DrawingView::OnClose(bool deleteWindow) void DrawingView::OnCut(wxCommandEvent& WXUNUSED(event) ) { DrawingDocument *doc = (DrawingDocument *)GetDocument(); - doc->GetCommandProcessor()->Submit(new DrawingCommand((const wxString) "Cut Last Segment", DOODLE_CUT, doc, (DoodleSegment *) NULL)); + doc->GetCommandProcessor()->Submit(new DrawingCommand(_T("Cut Last Segment"), DOODLE_CUT, doc, (DoodleSegment *) NULL)); } IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView) @@ -141,7 +141,7 @@ bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) int width, height; frame->GetClientSize(&width, &height); textsw = new MyTextWindow(this, frame, wxPoint(0, 0), wxSize(width, height), wxTE_MULTILINE); - frame->SetTitle("TextEditView"); + frame->SetTitle(_T("TextEditView")); #ifdef __X__ // X seems to require a forced resize @@ -230,7 +230,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) // We've got a valid segment on mouse left up, so store it. DrawingDocument *doc = (DrawingDocument *)view->GetDocument(); - doc->GetCommandProcessor()->Submit(new DrawingCommand("Add Segment", DOODLE_ADD, doc, currentSegment)); + doc->GetCommandProcessor()->Submit(new DrawingCommand(_T("Add Segment"), DOODLE_ADD, doc, currentSegment)); view->GetDocument()->Modify(TRUE); currentSegment = (DoodleSegment *) NULL; @@ -257,7 +257,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) // Define a constructor for my text subwindow MyTextWindow::MyTextWindow(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style): - wxTextCtrl(frame, -1, "", pos, size, style) + wxTextCtrl(frame, -1, _T(""), pos, size, style) { view = v; } diff --git a/samples/dragimag/dragimag.cpp b/samples/dragimag/dragimag.cpp index aa00bf12f3..2a9e9fb243 100644 --- a/samples/dragimag/dragimag.cpp +++ b/samples/dragimag/dragimag.cpp @@ -183,7 +183,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) } case SHAPE_DRAG_TEXT: { - m_dragImage = new wxDragImage(wxString("Dragging some test text"), wxCursor(wxCURSOR_HAND)); + m_dragImage = new wxDragImage(wxString(_T("Dragging some test text")), wxCursor(wxCURSOR_HAND)); break; } case SHAPE_DRAG_ICON: @@ -327,16 +327,16 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame) END_EVENT_TABLE() MyFrame::MyFrame() - : wxFrame( (wxFrame *)NULL, -1, "wxDragImage sample", + : wxFrame( (wxFrame *)NULL, -1, _T("wxDragImage sample"), wxPoint(20,20), wxSize(470,360) ) { wxMenu *file_menu = new wxMenu(); - file_menu->Append( wxID_ABOUT, "&About..."); - file_menu->Append( TEST_USE_SCREEN, "&Use whole screen for dragging", "Use whole screen", TRUE); - file_menu->Append( wxID_EXIT, "E&xit"); + file_menu->Append( wxID_ABOUT, _T("&About...")); + file_menu->Append( TEST_USE_SCREEN, _T("&Use whole screen for dragging"), _T("Use whole screen"), TRUE); + file_menu->Append( wxID_EXIT, _T("E&xit")); wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); SetMenuBar( menu_bar ); @@ -354,9 +354,10 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) ) void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) { - (void)wxMessageBox( "wxDragImage demo\n" - "Julian Smart (c) 2000", - "About wxDragImage Demo", wxICON_INFORMATION | wxOK ); + (void)wxMessageBox( _T("wxDragImage demo\n") + _T("Julian Smart (c) 2000"), + _T("About wxDragImage Demo"), + wxICON_INFORMATION | wxOK ); } //----------------------------------------------------------------------------- @@ -380,14 +381,14 @@ bool MyApp::OnInit() #endif wxImage image; - if (image.LoadFile("backgrnd.png", wxBITMAP_TYPE_PNG)) + if (image.LoadFile(_T("backgrnd.png"), wxBITMAP_TYPE_PNG)) { m_background = wxBitmap(image); } MyFrame *frame = new MyFrame(); - wxString rootName("shape0"); + wxString rootName(_T("shape0")); int i; for (i = 1; i < 4; i++) diff --git a/samples/dragimag/dragimag.dsp b/samples/dragimag/dragimag.dsp index d80989db89..3a2bd37830 100644 --- a/samples/dragimag/dragimag.dsp +++ b/samples/dragimag/dragimag.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "dragimag - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "dragimag - Win32 Release" diff --git a/samples/dragimag/makefile.wat b/samples/dragimag/makefile.wat index 8be0d5aec8..c295057418 100644 --- a/samples/dragimag/makefile.wat +++ b/samples/dragimag/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for dragimag example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = dragimag -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\dragimag +# +PROGRAM = dragimag +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/drawing/drawing.cpp b/samples/drawing/drawing.cpp index 9059c501b3..573ef9c94a 100644 --- a/samples/drawing/drawing.cpp +++ b/samples/drawing/drawing.cpp @@ -268,10 +268,10 @@ bool MyApp::LoadImages() gs_bmp36 = new wxBitmap; wxPathList pathList; - pathList.Add("."); - pathList.Add(".."); + pathList.Add(_T(".")); + pathList.Add(_T("..")); - wxString path = pathList.FindValidPath("pat4.bmp"); + wxString path = pathList.FindValidPath(_T("pat4.bmp")); if ( !path ) return FALSE; @@ -282,21 +282,21 @@ bool MyApp::LoadImages() wxMask* mask4 = new wxMask(*gs_bmp4_mono, *wxBLACK); gs_bmp4_mono->SetMask(mask4); - path = pathList.FindValidPath("pat36.bmp"); + path = pathList.FindValidPath(_T("pat36.bmp")); if ( !path ) return FALSE; gs_bmp36->LoadFile(path, wxBITMAP_TYPE_BMP); wxMask* mask36 = new wxMask(*gs_bmp36, *wxBLACK); gs_bmp36->SetMask(mask36); - path = pathList.FindValidPath("image.bmp"); + path = pathList.FindValidPath(_T("image.bmp")); if ( !path ) return FALSE; gs_bmpNoMask->LoadFile(path, wxBITMAP_TYPE_BMP); gs_bmpWithMask->LoadFile(path, wxBITMAP_TYPE_BMP); gs_bmpWithColMask->LoadFile(path, wxBITMAP_TYPE_BMP); - path = pathList.FindValidPath("mask.bmp"); + path = pathList.FindValidPath(_T("mask.bmp")); if ( !path ) return FALSE; gs_bmpMask->LoadFile(path, wxBITMAP_TYPE_BMP); @@ -314,7 +314,7 @@ bool MyApp::LoadImages() bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("Drawing sample", + MyFrame *frame = new MyFrame(_T("Drawing sample"), wxPoint(50, 50), wxSize(550, 340)); // Show it and tell the application that it's our main window @@ -390,22 +390,22 @@ void MyCanvas::DrawTestBrushes(wxDC& dc) dc.SetBrush(wxBrush(*wxGREEN, wxSOLID)); dc.DrawRectangle(x, y, WIDTH, HEIGHT); - dc.DrawText("Solid green", x + 10, y + 10); + dc.DrawText(_T("Solid green"), x + 10, y + 10); y += HEIGHT; dc.SetBrush(wxBrush(*wxRED, wxCROSSDIAG_HATCH)); dc.DrawRectangle(x, y, WIDTH, HEIGHT); - dc.DrawText("Hatched red", x + 10, y + 10); + dc.DrawText(_T("Hatched red"), x + 10, y + 10); y += HEIGHT; dc.SetBrush(wxBrush(*gs_bmpMask)); dc.DrawRectangle(x, y, WIDTH, HEIGHT); - dc.DrawText("Stipple mono", x + 10, y + 10); + dc.DrawText(_T("Stipple mono"), x + 10, y + 10); y += HEIGHT; dc.SetBrush(wxBrush(*gs_bmpNoMask)); dc.DrawRectangle(x, y, WIDTH, HEIGHT); - dc.DrawText("Stipple colour", x + 10, y + 10); + dc.DrawText(_T("Stipple colour"), x + 10, y + 10); } void MyCanvas::DrawTestPoly(wxDC& dc) @@ -420,10 +420,10 @@ void MyCanvas::DrawTestPoly(wxDC& dc) star[3] = wxPoint(40, 100); star[4] = wxPoint(140, 150); - dc.DrawText("You should see two (irregular) stars below, the left one " - "hatched", 10, 10); - dc.DrawText("except for the central region and the right " - "one entirely hatched", 10, 30); + dc.DrawText(_T("You should see two (irregular) stars below, the left one ") + _T("hatched"), 10, 10); + dc.DrawText(_T("except for the central region and the right ") + _T("one entirely hatched"), 10, 30); dc.DrawPolygon(WXSIZEOF(star), star); dc.DrawPolygon(WXSIZEOF(star), star, 160, 0, wxWINDING_RULE); @@ -436,7 +436,7 @@ void MyCanvas::DrawTestLines( int x, int y, int width, wxDC &dc ) dc.DrawText(wxString::Format(wxT("Testing lines of width %d"), width), x + 10, y - 10); dc.DrawRectangle( x+10, y+10, 100, 190 ); - dc.DrawText("Solid/dot/short dash/long dash/dot dash", x + 150, y + 10); + dc.DrawText(_T("Solid/dot/short dash/long dash/dot dash"), x + 150, y + 10); dc.SetPen( wxPen( wxT("black"), width, wxSOLID) ); dc.DrawLine( x+20, y+20, 100, y+20 ); dc.SetPen( wxPen( wxT("black"), width, wxDOT) ); @@ -448,7 +448,7 @@ void MyCanvas::DrawTestLines( int x, int y, int width, wxDC &dc ) dc.SetPen( wxPen( wxT("black"), width, wxDOT_DASH) ); dc.DrawLine( x+20, y+60, 100, y+60 ); - dc.DrawText("Misc hatches", x + 150, y + 70); + dc.DrawText(_T("Misc hatches"), x + 150, y + 70); dc.SetPen( wxPen( wxT("black"), width, wxBDIAGONAL_HATCH) ); dc.DrawLine( x+20, y+70, 100, y+70 ); dc.SetPen( wxPen( wxT("black"), width, wxCROSSDIAG_HATCH) ); @@ -462,7 +462,7 @@ void MyCanvas::DrawTestLines( int x, int y, int width, wxDC &dc ) dc.SetPen( wxPen( wxT("black"), width, wxVERTICAL_HATCH) ); dc.DrawLine( x+20, y+120, 100, y+120 ); - dc.DrawText("User dash", x + 150, y + 140); + dc.DrawText(_T("User dash"), x + 150, y + 140); wxPen ud( wxT("black"), width, wxUSER_DASH ); wxDash dash1[1]; dash1[0] = 0; @@ -684,8 +684,8 @@ void MyCanvas::DrawText(wxDC& dc) { // set underlined font for testing dc.SetFont( wxFont(12, wxMODERN, wxNORMAL, wxNORMAL, TRUE) ); - dc.DrawText( "This is text", 110, 10 ); - dc.DrawRotatedText( "That is text", 20, 10, -45 ); + dc.DrawText( _T("This is text"), 110, 10 ); + dc.DrawRotatedText( _T("That is text"), 20, 10, -45 ); // use wxSWISS_FONT and not wxNORMAL_FONT as the latter can't be rotated // under Win9x (it is not TrueType) @@ -702,12 +702,12 @@ void MyCanvas::DrawText(wxDC& dc) dc.SetFont( wxFont( 18, wxSWISS, wxNORMAL, wxNORMAL ) ); - dc.DrawText( "This is Swiss 18pt text.", 110, 40 ); + dc.DrawText( _T("This is Swiss 18pt text."), 110, 40 ); long length; long height; long descent; - dc.GetTextExtent( "This is Swiss 18pt text.", &length, &height, &descent ); + dc.GetTextExtent( _T("This is Swiss 18pt text."), &length, &height, &descent ); text.Printf( wxT("Dimensions are length %ld, height %ld, descent %ld"), length, height, descent ); dc.DrawText( text, 110, 80 ); @@ -719,20 +719,20 @@ void MyCanvas::DrawText(wxDC& dc) // test the logical function effect wxCoord y = 150; dc.SetLogicalFunction(wxINVERT); - dc.DrawText( "There should be no text below", 110, 150 ); + dc.DrawText( _T("There should be no text below"), 110, 150 ); dc.DrawRectangle( 110, y, 100, height ); // twice drawn inverted should result in invisible y += height; - dc.DrawText( "Invisible text", 110, y ); + dc.DrawText( _T("Invisible text"), 110, y ); dc.DrawRectangle( 110, y, 100, height ); - dc.DrawText( "Invisible text", 110, y ); + dc.DrawText( _T("Invisible text"), 110, y ); dc.DrawRectangle( 110, y, 100, height ); dc.SetLogicalFunction(wxCOPY); y += height; dc.DrawRectangle( 110, y, 100, height ); - dc.DrawText( "Visible text", 110, y ); + dc.DrawText( _T("Visible text"), 110, y ); } static const struct @@ -760,13 +760,13 @@ static const struct void MyCanvas::DrawImages(wxDC& dc) { - dc.DrawText("original image", 0, 0); + dc.DrawText(_T("original image"), 0, 0); dc.DrawBitmap(*gs_bmpNoMask, 0, 20, 0); - dc.DrawText("with colour mask", 0, 100); + dc.DrawText(_T("with colour mask"), 0, 100); dc.DrawBitmap(*gs_bmpWithColMask, 0, 120, TRUE); - dc.DrawText("the mask image", 0, 200); + dc.DrawText(_T("the mask image"), 0, 200); dc.DrawBitmap(*gs_bmpMask, 0, 220, 0); - dc.DrawText("masked image", 0, 300); + dc.DrawText(_T("masked image"), 0, 300); dc.DrawBitmap(*gs_bmpWithMask, 0, 320, TRUE); int cx = gs_bmpWithColMask->GetWidth(), @@ -826,19 +826,19 @@ void MyCanvas::DrawCircles(wxDC& dc) y = 100, r = 20; - dc.DrawText("Some circles", 0, y); + dc.DrawText(_T("Some circles"), 0, y); dc.DrawCircle(x, y, r); dc.DrawCircle(x + 2*r, y, r); dc.DrawCircle(x + 4*r, y, r); y += 2*r; - dc.DrawText("And ellipses", 0, y); + dc.DrawText(_T("And ellipses"), 0, y); dc.DrawEllipse(x - r, y, 2*r, r); dc.DrawEllipse(x + r, y, 2*r, r); dc.DrawEllipse(x + 3*r, y, 2*r, r); y += 2*r; - dc.DrawText("And arcs", 0, y); + dc.DrawText(_T("And arcs"), 0, y); dc.DrawArc(x - r, y, x + r, y, x, y); dc.DrawArc(x + 4*r, y, x + 2*r, y, x + 3*r, y); dc.DrawArc(x + 5*r, y, x + 5*r, y, x + 6*r, y); @@ -852,12 +852,12 @@ void MyCanvas::DrawCircles(wxDC& dc) void MyCanvas::DrawRegions(wxDC& dc) { - dc.DrawText("You should see a red rect partly covered by a cyan one " - "on the left", 10, 5); - dc.DrawText("and 5 smileys from which 4 are partially clipped on the right", + dc.DrawText(_T("You should see a red rect partly covered by a cyan one ") + _T("on the left"), 10, 5); + dc.DrawText(_T("and 5 smileys from which 4 are partially clipped on the right"), 10, 5 + dc.GetCharHeight()); - dc.DrawText("The second copy should be identical but right part of it " - "should be offset by 10 pixels.", + dc.DrawText(_T("The second copy should be identical but right part of it ") + _T("should be offset by 10 pixels."), 10, 5 + 2*dc.GetCharHeight()); DrawRegionsHelper(dc, 10, TRUE); @@ -1022,72 +1022,72 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) SetIcon(wxICON(mondrian)); wxMenu *menuFile = new wxMenu; - menuFile->Append(File_ShowDefault, "&Default screen\tF1"); - menuFile->Append(File_ShowText, "&Text screen\tF2"); - menuFile->Append(File_ShowLines, "&Lines screen\tF3"); - menuFile->Append(File_ShowBrushes, "&Brushes screen\tF4"); - menuFile->Append(File_ShowPolygons, "&Polygons screen\tF5"); - menuFile->Append(File_ShowMask, "&Mask screen\tF6"); - menuFile->Append(File_ShowOps, "&ROP screen\tF7"); - menuFile->Append(File_ShowRegions, "Re&gions screen\tF8"); - menuFile->Append(File_ShowCircles, "&Circles screen\tF9"); + menuFile->Append(File_ShowDefault, _T("&Default screen\tF1")); + menuFile->Append(File_ShowText, _T("&Text screen\tF2")); + menuFile->Append(File_ShowLines, _T("&Lines screen\tF3")); + menuFile->Append(File_ShowBrushes, _T("&Brushes screen\tF4")); + menuFile->Append(File_ShowPolygons, _T("&Polygons screen\tF5")); + menuFile->Append(File_ShowMask, _T("&Mask screen\tF6")); + menuFile->Append(File_ShowOps, _T("&ROP screen\tF7")); + menuFile->Append(File_ShowRegions, _T("Re&gions screen\tF8")); + menuFile->Append(File_ShowCircles, _T("&Circles screen\tF9")); menuFile->AppendSeparator(); - menuFile->AppendCheckItem(File_Clip, "&Clip\tCtrl-C", "Clip/unclip drawing"); + menuFile->AppendCheckItem(File_Clip, _T("&Clip\tCtrl-C"), _T("Clip/unclip drawing")); menuFile->AppendSeparator(); - menuFile->Append(File_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(File_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(File_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(File_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenu *menuMapMode = new wxMenu; - menuMapMode->Append( MapMode_Text, "&TEXT map mode" ); - menuMapMode->Append( MapMode_Lometric, "&LOMETRIC map mode" ); - menuMapMode->Append( MapMode_Twips, "T&WIPS map mode" ); - menuMapMode->Append( MapMode_Points, "&POINTS map mode" ); - menuMapMode->Append( MapMode_Metric, "&METRIC map mode" ); + menuMapMode->Append( MapMode_Text, _T("&TEXT map mode") ); + menuMapMode->Append( MapMode_Lometric, _T("&LOMETRIC map mode") ); + menuMapMode->Append( MapMode_Twips, _T("T&WIPS map mode") ); + menuMapMode->Append( MapMode_Points, _T("&POINTS map mode") ); + menuMapMode->Append( MapMode_Metric, _T("&METRIC map mode") ); wxMenu *menuUserScale = new wxMenu; - menuUserScale->Append( UserScale_StretchHoriz, "Stretch &horizontally\tCtrl-H" ); - menuUserScale->Append( UserScale_ShrinkHoriz, "Shrin&k horizontally\tCtrl-G" ); - menuUserScale->Append( UserScale_StretchVertic, "Stretch &vertically\tCtrl-V" ); - menuUserScale->Append( UserScale_ShrinkVertic, "&Shrink vertically\tCtrl-W" ); + menuUserScale->Append( UserScale_StretchHoriz, _T("Stretch &horizontally\tCtrl-H") ); + menuUserScale->Append( UserScale_ShrinkHoriz, _T("Shrin&k horizontally\tCtrl-G") ); + menuUserScale->Append( UserScale_StretchVertic, _T("Stretch &vertically\tCtrl-V") ); + menuUserScale->Append( UserScale_ShrinkVertic, _T("&Shrink vertically\tCtrl-W") ); menuUserScale->AppendSeparator(); - menuUserScale->Append( UserScale_Restore, "&Restore to normal\tCtrl-0" ); + menuUserScale->Append( UserScale_Restore, _T("&Restore to normal\tCtrl-0") ); wxMenu *menuAxis = new wxMenu; - menuAxis->Append( AxisMirror_Horiz, "Mirror horizontally\tCtrl-M", "", TRUE ); - menuAxis->Append( AxisMirror_Vertic, "Mirror vertically\tCtrl-N", "", TRUE ); + menuAxis->Append( AxisMirror_Horiz, _T("Mirror horizontally\tCtrl-M"), _T(""), TRUE ); + menuAxis->Append( AxisMirror_Vertic, _T("Mirror vertically\tCtrl-N"), _T(""), TRUE ); wxMenu *menuLogical = new wxMenu; - menuLogical->Append( LogicalOrigin_MoveDown, "Move &down\tCtrl-D" ); - menuLogical->Append( LogicalOrigin_MoveUp, "Move &up\tCtrl-U" ); - menuLogical->Append( LogicalOrigin_MoveLeft, "Move &right\tCtrl-L" ); - menuLogical->Append( LogicalOrigin_MoveRight, "Move &left\tCtrl-R" ); + menuLogical->Append( LogicalOrigin_MoveDown, _T("Move &down\tCtrl-D") ); + menuLogical->Append( LogicalOrigin_MoveUp, _T("Move &up\tCtrl-U") ); + menuLogical->Append( LogicalOrigin_MoveLeft, _T("Move &right\tCtrl-L") ); + menuLogical->Append( LogicalOrigin_MoveRight, _T("Move &left\tCtrl-R") ); menuLogical->AppendSeparator(); - menuLogical->Append( LogicalOrigin_Set, "Set to (&100, 100)\tShift-Ctrl-1" ); - menuLogical->Append( LogicalOrigin_Restore, "&Restore to normal\tShift-Ctrl-0" ); + menuLogical->Append( LogicalOrigin_Set, _T("Set to (&100, 100)\tShift-Ctrl-1") ); + menuLogical->Append( LogicalOrigin_Restore, _T("&Restore to normal\tShift-Ctrl-0") ); wxMenu *menuColour = new wxMenu; - menuColour->Append( Colour_TextForeground, "Text &foreground..." ); - menuColour->Append( Colour_TextBackground, "Text &background..." ); - menuColour->Append( Colour_Background, "Background &colour..." ); - menuColour->Append( Colour_BackgroundMode, "&Opaque/transparent\tCtrl-B", "", TRUE ); - menuColour->Append( Colour_TextureBackgound, "Draw textured back&ground\tCtrl-T", "", TRUE); + menuColour->Append( Colour_TextForeground, _T("Text &foreground...") ); + menuColour->Append( Colour_TextBackground, _T("Text &background...") ); + menuColour->Append( Colour_Background, _T("Background &colour...") ); + menuColour->Append( Colour_BackgroundMode, _T("&Opaque/transparent\tCtrl-B"), _T(""), TRUE ); + menuColour->Append( Colour_TextureBackgound, _T("Draw textured back&ground\tCtrl-T"), _T(""), TRUE); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuMapMode, "&Mode"); - menuBar->Append(menuUserScale, "&Scale"); - menuBar->Append(menuAxis, "&Axis"); - menuBar->Append(menuLogical, "&Origin"); - menuBar->Append(menuColour, "&Colours"); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(menuMapMode, _T("&Mode")); + menuBar->Append(menuUserScale, _T("&Scale")); + menuBar->Append(menuAxis, _T("&Axis")); + menuBar->Append(menuLogical, _T("&Origin")); + menuBar->Append(menuColour, _T("&Colours")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); m_mapMode = wxMM_TEXT; m_xUserScale = 1.0; @@ -1122,7 +1122,7 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxT("Copyright (c) Robert Roebling 1999") ); - wxMessageBox(msg, "About Drawing", wxOK | wxICON_INFORMATION, this); + wxMessageBox(msg, _T("About Drawing"), wxOK | wxICON_INFORMATION, this); } void MyFrame::OnClip(wxCommandEvent& event) diff --git a/samples/drawing/drawing.dsp b/samples/drawing/drawing.dsp index 7e1a570347..6543860210 100644 --- a/samples/drawing/drawing.dsp +++ b/samples/drawing/drawing.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "drawing - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "drawing - Win32 Release" diff --git a/samples/drawing/makefile.wat b/samples/drawing/makefile.wat index 91a4751a5e..92816b6349 100644 --- a/samples/drawing/makefile.wat +++ b/samples/drawing/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = drawing -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\drawing +# +PROGRAM = drawing +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/dynamic/dynamic.cpp b/samples/dynamic/dynamic.cpp index 308b391f82..08a43dc832 100644 --- a/samples/dynamic/dynamic.cpp +++ b/samples/dynamic/dynamic.cpp @@ -38,7 +38,7 @@ class MyApp: public wxApp // Define a new frame type class MyFrame: public wxFrame { public: - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); + MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h); public: void OnQuit(wxCommandEvent& event); @@ -57,7 +57,7 @@ IMPLEMENT_APP (MyApp) bool MyApp::OnInit(void) { // Create the main frame window - MyFrame *frame = new MyFrame(NULL, "Dynamic wxWindows App", 50, 50, 450, 340); + MyFrame *frame = new MyFrame(NULL, _T("Dynamic wxWindows App"), 50, 50, 450, 340); frame->Connect( DYNAMIC_QUIT, -1, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) @@ -68,7 +68,7 @@ bool MyApp::OnInit(void) // Give it an icon #ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); + frame->SetIcon(wxIcon(_T("mondrian"))); #else frame->SetIcon(wxIcon(mondrian_xpm)); #endif @@ -76,16 +76,16 @@ bool MyApp::OnInit(void) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(DYNAMIC_ABOUT, "&About"); - file_menu->Append(DYNAMIC_QUIT, "E&xit"); + file_menu->Append(DYNAMIC_ABOUT, _T("&About")); + file_menu->Append(DYNAMIC_QUIT, _T("E&xit")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); frame->SetMenuBar(menu_bar); // Make a panel with a message wxPanel *panel = new wxPanel(frame, -1, wxPoint(0, 0), wxSize(400, 200), wxTAB_TRAVERSAL); - (void)new wxStaticText(panel, 311, "Hello!", wxPoint(10, 10), wxSize(-1, -1), 0); + (void)new wxStaticText(panel, 311, _T("Hello!"), wxPoint(10, 10), wxSize(-1, -1), 0); // Show the frame frame->Show(TRUE); @@ -96,7 +96,7 @@ bool MyApp::OnInit(void) } // My frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): +MyFrame::MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h): wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) {} @@ -107,8 +107,8 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - wxMessageDialog dialog(this, "This demonstrates dynamic event handling", - "About Dynamic", wxYES_NO|wxCANCEL); + wxMessageDialog dialog(this, _T("This demonstrates dynamic event handling"), + _T("About Dynamic"), wxYES_NO|wxCANCEL); dialog.ShowModal(); } diff --git a/samples/dynamic/dynamic.dsp b/samples/dynamic/dynamic.dsp index 11e4e00501..2cadb869e1 100644 --- a/samples/dynamic/dynamic.dsp +++ b/samples/dynamic/dynamic.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "dynamic - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "dynamic - Win32 Release" diff --git a/samples/erase/erase.cpp b/samples/erase/erase.cpp index 1eeba32d3a..2e1d859d80 100644 --- a/samples/erase/erase.cpp +++ b/samples/erase/erase.cpp @@ -73,9 +73,11 @@ public: MyCanvas( MyFrame *parent ); void OnPaint( wxPaintEvent &event ); + void OnChar( wxKeyEvent &event ); void OnEraseBackground( wxEraseEvent &event ); wxBitmap m_bitmap; + wxString m_text; private: DECLARE_EVENT_TABLE() @@ -123,7 +125,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) { SetIcon(wxICON(mondrian)); - wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); + wxMenu *menuFile = new wxMenu(_T(""), wxMENU_TEAROFF); wxMenu *helpMenu = new wxMenu; helpMenu->Append(wxID_ABOUT, _T("&About...\tCtrl-A"), _T("Show about dialog")); @@ -160,6 +162,7 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_PAINT( MyCanvas::OnPaint) + EVT_CHAR( MyCanvas::OnChar) EVT_ERASE_BACKGROUND( MyCanvas::OnEraseBackground) END_EVENT_TABLE() @@ -176,6 +179,30 @@ MyCanvas::MyCanvas( MyFrame *parent ) new wxStaticBitmap( this, -1, m_bitmap, wxPoint(80,20) ); } +void MyCanvas::OnChar( wxKeyEvent &event ) +{ +#if wxUSE_UNICODE + if (event.m_uniChar) + { + m_text += event.m_uniChar; + Refresh(); + return; + } +#endif + + // some test cases + switch (event.m_keyCode) + { + case WXK_UP: m_text += wxT( "" ); break; + case WXK_LEFT: m_text += wxT( "" ); break; + case WXK_RIGHT: m_text += wxT( "" ); break; + case WXK_DOWN: m_text += wxT( "" ); break; + case WXK_RETURN: m_text += wxT( "" ); break; + default: m_text += event.m_keyCode; break; + } + +} + void MyCanvas::OnPaint( wxPaintEvent &event ) { wxPaintDC dc(this); @@ -188,12 +215,20 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) dc.SetTextForeground(*wxBLUE); dc.DrawText(_T("This text is drawn from OnPaint"), 65, 65); + + wxString tmp; + tmp.Printf( _T("Hit any key to display more text: %s"), m_text.c_str() ); + int w,h; + dc.GetTextExtent( tmp, &w, &h ); + dc.SetBrush( *wxWHITE_BRUSH ); + dc.DrawRectangle( 65, 85, w, h ); + dc.DrawText( tmp, 65, 85 ); #if 0 wxRegionIterator upd( GetUpdateRegion() ); while (upd) { - wxLogDebug( "Paint: %d %d %d %d", upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() ); + wxLogDebug( _T("Paint: %d %d %d %d"), upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() ); upd ++; } #endif @@ -201,7 +236,7 @@ void MyCanvas::OnPaint( wxPaintEvent &event ) #if 0 wxSize size = GetSize(); wxSize client_size = GetClientSize(); - wxLogDebug( "size %d %d client_size %d %d", size.x, size.y, client_size.x, client_size.y ); + wxLogDebug( _T("size %d %d client_size %d %d"), size.x, size.y, client_size.x, client_size.y ); #endif #if 0 diff --git a/samples/erase/erase.dsp b/samples/erase/erase.dsp index 1990f2ac6d..6baa7f17c5 100644 --- a/samples/erase/erase.dsp +++ b/samples/erase/erase.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "erase - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "erase - Win32 Release" diff --git a/samples/erase/makefile.wat b/samples/erase/makefile.wat index 4a36a715be..c16d5ac202 100644 --- a/samples/erase/makefile.wat +++ b/samples/erase/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = erase -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\erase +# +PROGRAM = erase +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/event/event.dsp b/samples/event/event.dsp index 8616035750..abae231440 100644 --- a/samples/event/event.dsp +++ b/samples/event/event.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "event - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "event - Win32 Release" diff --git a/samples/event/makefile.wat b/samples/event/makefile.wat index bdd01b8093..9e3caff19a 100644 --- a/samples/event/makefile.wat +++ b/samples/event/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for event example (Watcom) -# Created: 2001-01-31 - -WXDIR = $(%WXWIN) - -PROGRAM = event -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\event +# +PROGRAM = event +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/exec/exec.cpp b/samples/exec/exec.cpp index 30bed13776..13cfdc28e9 100644 --- a/samples/exec/exec.cpp +++ b/samples/exec/exec.cpp @@ -202,7 +202,7 @@ protected: void DoSend() { - m_out.WriteString(m_textIn->GetValue() + '\n'); + m_out.WriteString(m_textIn->GetValue() + _T('\n')); m_textIn->Clear(); DoGet(); @@ -387,6 +387,10 @@ bool MyApp::OnInit() // main frame // ---------------------------------------------------------------------------- +#ifdef __VISUALC__ +#pragma warning(disable: 4355) // this used in base member initializer list +#endif + // frame constructor MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame((wxFrame *)NULL, -1, title, pos, size), @@ -843,7 +847,7 @@ void MyFrame::OnDDEExec(wxCommandEvent& WXUNUSED(event)) return; wxDDEClient client; - wxConnectionBase *conn = client.MakeConnection("", m_server, m_topic); + wxConnectionBase *conn = client.MakeConnection(_T(""), m_server, m_topic); if ( !conn ) { wxLogError(_T("Failed to connect to the DDE server '%s'."), @@ -869,7 +873,7 @@ void MyFrame::OnDDERequest(wxCommandEvent& WXUNUSED(event)) return; wxDDEClient client; - wxConnectionBase *conn = client.MakeConnection("", m_server, m_topic); + wxConnectionBase *conn = client.MakeConnection(_T(""), m_server, m_topic); if ( !conn ) { wxLogError(_T("Failed to connect to the DDE server '%s'."), diff --git a/samples/exec/exec.dsp b/samples/exec/exec.dsp index 640a992ca7..a17408b8a8 100644 --- a/samples/exec/exec.dsp +++ b/samples/exec/exec.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "exec - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "exec - Win32 Release" diff --git a/samples/exec/makefile.wat b/samples/exec/makefile.wat index b81df8d74b..e6087b8f30 100644 --- a/samples/exec/makefile.wat +++ b/samples/exec/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for exec example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = exec -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\exec +# +PROGRAM = exec +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/font/font.cpp b/samples/font/font.cpp index 7ef9add570..4d1ce5ebcc 100644 --- a/samples/font/font.cpp +++ b/samples/font/font.cpp @@ -205,7 +205,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("Font wxWindows demo", + MyFrame *frame = new MyFrame(wxT("Font wxWindows demo"), wxPoint(50, 50), wxSize(600, 400)); // Show it and tell the application that it's our main window @@ -231,52 +231,52 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Font_ViewMsg, "&View...\tCtrl-V", - "View an email message file"); + menuFile->Append(Font_ViewMsg, wxT("&View...\tCtrl-V"), + wxT("View an email message file")); menuFile->AppendSeparator(); - menuFile->Append(Font_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(Font_About, wxT("&About...\tCtrl-A"), wxT("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(Font_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Font_Quit, wxT("E&xit\tAlt-X"), wxT("Quit this program")); wxMenu *menuFont = new wxMenu; - menuFont->Append(Font_IncSize, "&Increase font size by 2 points\tCtrl-I"); - menuFont->Append(Font_DecSize, "&Decrease font size by 2 points\tCtrl-D"); + menuFont->Append(Font_IncSize, wxT("&Increase font size by 2 points\tCtrl-I")); + menuFont->Append(Font_DecSize, wxT("&Decrease font size by 2 points\tCtrl-D")); menuFont->AppendSeparator(); - menuFont->Append(Font_Bold, "&Bold\tCtrl-B", "Toggle bold state", TRUE); - menuFont->Append(Font_Italic, "&Oblique\tCtrl-O", "Toggle italic state", TRUE); - menuFont->Append(Font_Underlined, "&Underlined\tCtrl-U", - "Toggle underlined state", TRUE); + menuFont->Append(Font_Bold, wxT("&Bold\tCtrl-B"), wxT("Toggle bold state"), TRUE); + menuFont->Append(Font_Italic, wxT("&Oblique\tCtrl-O"), wxT("Toggle italic state"), TRUE); + menuFont->Append(Font_Underlined, wxT("&Underlined\tCtrl-U"), + wxT("Toggle underlined state"), TRUE); menuFont->AppendSeparator(); menuFont->Append(Font_CheckNativeToFromString, - "Check Native Font Info To/From String"); + wxT("Check Native Font Info To/From String")); wxMenu *menuSelect = new wxMenu; - menuSelect->Append(Font_Choose, "&Select font...\tCtrl-S", - "Select a standard font"); + menuSelect->Append(Font_Choose, wxT("&Select font...\tCtrl-S"), + wxT("Select a standard font")); wxMenu *menuStdFonts = new wxMenu; - menuStdFonts->Append(Font_wxNORMAL_FONT, "wxNORMAL_FONT", "Normal font used by wxWindows"); - menuStdFonts->Append(Font_wxSMALL_FONT, "wxSMALL_FONT", "Small font used by wxWindows"); - menuStdFonts->Append(Font_wxITALIC_FONT, "wxITALIC_FONT", "Italic font used by wxWindows"); - menuStdFonts->Append(Font_wxSWISS_FONT, "wxSWISS_FONT", "Swiss font used by wxWindows"); - menuSelect->Append(-2, "Standar&d fonts", menuStdFonts); + menuStdFonts->Append(Font_wxNORMAL_FONT, wxT("wxNORMAL_FONT"), wxT("Normal font used by wxWindows")); + menuStdFonts->Append(Font_wxSMALL_FONT, wxT("wxSMALL_FONT"), wxT("Small font used by wxWindows")); + menuStdFonts->Append(Font_wxITALIC_FONT, wxT("wxITALIC_FONT"), wxT("Italic font used by wxWindows")); + menuStdFonts->Append(Font_wxSWISS_FONT, wxT("wxSWISS_FONT"), wxT("Swiss font used by wxWindows")); + menuSelect->Append(-2, wxT("Standar&d fonts"), menuStdFonts); menuSelect->AppendSeparator(); - menuSelect->Append(Font_EnumFamilies, "Enumerate font &families\tCtrl-F"); + menuSelect->Append(Font_EnumFamilies, wxT("Enumerate font &families\tCtrl-F")); menuSelect->Append(Font_EnumFixedFamilies, - "Enumerate fi&xed font families\tCtrl-X"); + wxT("Enumerate fi&xed font families\tCtrl-X")); menuSelect->Append(Font_EnumEncodings, - "Enumerate &encodings\tCtrl-E"); + wxT("Enumerate &encodings\tCtrl-E")); menuSelect->Append(Font_EnumFamiliesForEncoding, - "Find font for en&coding...\tCtrl-C", - "Find font families for given encoding"); + wxT("Find font for en&coding...\tCtrl-C"), + wxT("Find font families for given encoding")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuFont, "F&ont"); - menuBar->Append(menuSelect, "&Select"); + menuBar->Append(menuFile, wxT("&File")); + menuBar->Append(menuFont, wxT("F&ont")); + menuBar->Append(menuSelect, wxT("&Select")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -284,8 +284,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxSplitterWindow *splitter = new wxSplitterWindow(this); m_textctrl = new wxTextCtrl(splitter, -1, - "Paste text here to see how it looks\n" - "like in the given font", + wxT("Paste text here to see how it looks\nlike in the given font"), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); @@ -295,7 +294,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(); - SetStatusText("Welcome to wxWindows font demo!"); + SetStatusText(wxT("Welcome to wxWindows font demo!")); } // -------------------------------------------------------- @@ -388,7 +387,7 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly, for ( n = 0; n < nFacenames; n++ ) facenames[n] = fontEnumerator.GetFacenames().Item(n); - n = wxGetSingleChoiceIndex("Choose a facename", "Font demo", + n = wxGetSingleChoiceIndex(wxT("Choose a facename"), wxT("Font demo"), nFacenames, facenames, this); if ( n != -1 ) @@ -432,18 +431,18 @@ void MyFrame::OnEnumerateFamiliesForEncoding(wxCommandEvent& WXUNUSED(event)) static const wxString encodingNames[] = { - "Western European (ISO-8859-1)", - "Central European (ISO-8859-2)", - "Cyrillic (ISO-8859-5)", - "Greek (ISO-8859-7)", - "Western European with Euro (ISO-8859-15)", - "KOI8-R", - "Windows Central European (CP 1250)", - "Windows Cyrillic (CP 1251)", - "Windows Western European (CP 1252)", + wxT("Western European (ISO-8859-1)"), + wxT("Central European (ISO-8859-2)"), + wxT("Cyrillic (ISO-8859-5)"), + wxT("Greek (ISO-8859-7)"), + wxT("Western European with Euro (ISO-8859-15)"), + wxT("KOI8-R"), + wxT("Windows Central European (CP 1250)"), + wxT("Windows Cyrillic (CP 1251)"), + wxT("Windows Western European (CP 1252)"), }; - int n = wxGetSingleChoiceIndex("Choose an encoding", "Font demo", + int n = wxGetSingleChoiceIndex(wxT("Choose an encoding"), wxT("Font demo"), WXSIZEOF(encodingNames), encodingNames, this); @@ -574,7 +573,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) { // first, choose the file static wxString s_dir, s_file; - wxFileDialog dialog(this, "Open an email message file", + wxFileDialog dialog(this, wxT("Open an email message file"), s_dir, s_file); if ( dialog.ShowModal() != wxID_OK ) return; @@ -592,8 +591,8 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) wxString charset; - static const char *prefix = "Content-Type: text/plain; charset="; - const size_t len = strlen(prefix); + static const wxChar *prefix = wxT("Content-Type: text/plain; charset="); + const size_t len = wxStrlen(prefix); size_t n, count = file.GetLineCount(); for ( n = 0; n < count; n++ ) @@ -611,10 +610,10 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) { // found! const wxChar *pc = line.c_str() + len; - if ( *pc == '"' ) + if ( *pc == wxT('"') ) pc++; - while ( *pc && *pc != '"' ) + while ( *pc && *pc != wxT('"') ) { charset += *pc++; } @@ -687,9 +686,9 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("wxWindows font demo\n" - "(c) 1999 Vadim Zeitlin", - "About Font", + wxMessageBox(wxT("wxWindows font demo\n") + wxT("(c) 1999 Vadim Zeitlin"), + wxT("About Font"), wxOK | wxICON_INFORMATION, this); } @@ -793,7 +792,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) } // draw the lines between them - dc.SetPen(wxPen(wxColour("blue"), 1, wxSOLID)); + dc.SetPen(wxPen(wxColour(_T("blue")), 1, wxSOLID)); int l; // horizontal diff --git a/samples/font/font.dsp b/samples/font/font.dsp index 9b86ce10f7..9ae9bbb6c3 100644 --- a/samples/font/font.dsp +++ b/samples/font/font.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "font - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "font - Win32 Release" diff --git a/samples/font/makefile.wat b/samples/font/makefile.wat index 2668b9dc7f..770e3fd207 100644 --- a/samples/font/makefile.wat +++ b/samples/font/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = font -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\font +# +PROGRAM = font +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/grid/grid.cpp b/samples/grid/grid.cpp index 3f37efaf5e..8ede06bd2d 100644 --- a/samples/grid/grid.cpp +++ b/samples/grid/grid.cpp @@ -1,6 +1,10 @@ /* * File: grid.cpp * Purpose: wxGrid test + + PLEASE NOTE: this sample is deprecated. See + newgrid for a sample based on the newer wxGrid API. + * Author: Julian Smart * Created: 1995 * Updated: @@ -87,44 +91,44 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit(void) { #ifdef __WXMSW__ - cellBitmap1 = new wxBitmap("bitmap1"); - cellBitmap2 = new wxBitmap("bitmap2"); + cellBitmap1 = new wxBitmap(_T("bitmap1")); + cellBitmap2 = new wxBitmap(_T("bitmap2")); #endif // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxGrid Sample", wxPoint(50, 50), wxSize(450, 300)); + MyFrame *frame = new MyFrame(NULL, _T("wxGrid Sample"), wxPoint(50, 50), wxSize(450, 300)); // Give it an icon #ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); + frame->SetIcon(wxIcon(_T("mondrian"))); #endif // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(GRID_QUIT, "E&xit"); + file_menu->Append(GRID_QUIT, _T("E&xit")); wxMenu *settings_menu = new wxMenu; - settings_menu->Append(GRID_TOGGLE_EDITABLE, "&Toggle editable"); - settings_menu->Append(GRID_TOGGLE_EDITINPLACE, "&Toggle edit in place"); - settings_menu->Append(GRID_TOGGLE_ROW_LABEL, "Toggle ro&w label"); - settings_menu->Append(GRID_TOGGLE_COL_LABEL, "Toggle co&l label"); - settings_menu->Append(GRID_TOGGLE_DIVIDERS, "Toggle ÷rs"); + settings_menu->Append(GRID_TOGGLE_EDITABLE, _T("&Toggle editable")); + settings_menu->Append(GRID_TOGGLE_EDITINPLACE, _T("&Toggle edit in place")); + settings_menu->Append(GRID_TOGGLE_ROW_LABEL, _T("Toggle ro&w label")); + settings_menu->Append(GRID_TOGGLE_COL_LABEL, _T("Toggle co&l label")); + settings_menu->Append(GRID_TOGGLE_DIVIDERS, _T("Toggle ÷rs")); settings_menu->AppendSeparator(); - settings_menu->Append(GRID_LEFT_CELL, "&Left cell alignment "); - settings_menu->Append(GRID_CENTRE_CELL, "&Centre cell alignment "); - settings_menu->Append(GRID_RIGHT_CELL, "&Right cell alignment "); + settings_menu->Append(GRID_LEFT_CELL, _T("&Left cell alignment ")); + settings_menu->Append(GRID_CENTRE_CELL, _T("&Centre cell alignment ")); + settings_menu->Append(GRID_RIGHT_CELL, _T("&Right cell alignment ")); settings_menu->AppendSeparator(); - settings_menu->Append(GRID_COLOUR_LABEL_BACKGROUND, "Choose a label &background colour"); - settings_menu->Append(GRID_COLOUR_LABEL_TEXT, "Choose a label fore&ground colour"); - settings_menu->Append(GRID_NORMAL_LABEL_COLOURING, "&Normal label colouring"); + settings_menu->Append(GRID_COLOUR_LABEL_BACKGROUND, _T("Choose a label &background colour")); + settings_menu->Append(GRID_COLOUR_LABEL_TEXT, _T("Choose a label fore&ground colour")); + settings_menu->Append(GRID_NORMAL_LABEL_COLOURING, _T("&Normal label colouring")); settings_menu->AppendSeparator(); - settings_menu->Append(GRID_COLOUR_CELL_BACKGROUND, "Choo&se a cell &background colour"); - settings_menu->Append(GRID_COLOUR_CELL_TEXT, "Choose &a cell foreground colour"); - settings_menu->Append(GRID_NORMAL_CELL_COLOURING, "N&ormal cell colouring"); + settings_menu->Append(GRID_COLOUR_CELL_BACKGROUND, _T("Choo&se a cell &background colour")); + settings_menu->Append(GRID_COLOUR_CELL_TEXT, _T("Choose &a cell foreground colour")); + settings_menu->Append(GRID_NORMAL_CELL_COLOURING, _T("N&ormal cell colouring")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(settings_menu, "&Settings"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(settings_menu, _T("&Settings")); frame->SetMenuBar(menu_bar); // Make a grid @@ -133,9 +137,9 @@ bool MyApp::OnInit(void) frame->grid->CreateGrid(10, 8); frame->grid->SetColumnWidth(3, 200); frame->grid->SetRowHeight(4, 45); - frame->grid->SetCellValue("First cell", 0, 0); - frame->grid->SetCellValue("Another cell", 1, 1); - frame->grid->SetCellValue("Yet another cell", 2, 2); + frame->grid->SetCellValue(_T("First cell"), 0, 0); + frame->grid->SetCellValue(_T("Another cell"), 1, 1); + frame->grid->SetCellValue(_T("Yet another cell"), 2, 2); frame->grid->SetCellTextFont(wxFont(10, wxROMAN, wxITALIC, wxNORMAL), 0, 0); frame->grid->SetCellTextColour(*wxRED, 1, 1); frame->grid->SetCellBackgroundColour(*wxCYAN, 2, 2); @@ -152,6 +156,8 @@ bool MyApp::OnInit(void) // Show the frame frame->Show(TRUE); + wxMessageBox(wxT("Please note: this is an obsolete sample using the old wxGrid API.\nPlease compile newgrid instead."), wxT("wxGrid"), wxICON_INFORMATION|wxOK, frame); + SetTopWindow(frame); return TRUE; } @@ -240,7 +246,7 @@ void MyFrame::ToggleDividers(wxCommandEvent& WXUNUSED(event)) else grid->SetDividerPen(wxNullPen); -grid->Refresh(); + grid->Refresh(); } void MyFrame::LeftCell(wxCommandEvent& WXUNUSED(event)) diff --git a/samples/grid/grid.dsp b/samples/grid/grid.dsp index f0ddff1d2e..1fbd520f31 100644 --- a/samples/grid/grid.dsp +++ b/samples/grid/grid.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "grid - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "grid - Win32 Release" diff --git a/samples/grid/makefile.wat b/samples/grid/makefile.wat index 9d71a42089..ec3551948d 100644 --- a/samples/grid/makefile.wat +++ b/samples/grid/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for grid example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = grid -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\grid +# +PROGRAM = grid +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/help/demo.cpp b/samples/help/demo.cpp index a038747f0d..48b47d7f56 100644 --- a/samples/help/demo.cpp +++ b/samples/help/demo.cpp @@ -283,7 +283,7 @@ bool MyApp::OnInit() #endif // Create the main application window - MyFrame *frame = new MyFrame("HelpDemo wxWindows App", + MyFrame *frame = new MyFrame(_T("HelpDemo wxWindows App"), wxPoint(50, 50), wxSize(450, 340)); #if !USE_SIMPLE_HELP_PROVIDER @@ -300,7 +300,7 @@ bool MyApp::OnInit() // initialise the help system: this means that we'll use doc.hlp file under // Windows and that the HTML docs are in the subdirectory doc for platforms // using HTML help - if ( !frame->GetHelpController().Initialize("doc") ) + if ( !frame->GetHelpController().Initialize(_T("doc")) ) { wxLogError(wxT("Cannot initialize the help system, aborting.")); @@ -308,7 +308,7 @@ bool MyApp::OnInit() } #if wxUSE_MS_HTML_HELP - if( !frame->GetMSHtmlHelpController().Initialize("doc") ) + if( !frame->GetMSHtmlHelpController().Initialize(_T("doc")) ) { wxLogError(wxT("Cannot initialize the MS HTML Help system.")); } @@ -316,7 +316,7 @@ bool MyApp::OnInit() #if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP // you need to call Initialize in order to use wxBestHelpController - if( !frame->GetBestHelpController().Initialize("doc") ) + if( !frame->GetBestHelpController().Initialize(_T("doc")) ) { wxLogError(wxT("Cannot initialize the best help system, aborting.")); } @@ -325,7 +325,7 @@ bool MyApp::OnInit() #if USE_HTML_HELP // initialise the advanced HTML help system: this means that the HTML docs are in .htb // (zipped) form - if ( !frame->GetAdvancedHtmlHelpController().Initialize("doc") ) + if ( !frame->GetAdvancedHtmlHelpController().Initialize(_T("doc")) ) { wxLogError(wxT("Cannot initialize the advanced HTML help system, aborting.")); @@ -336,7 +336,7 @@ bool MyApp::OnInit() #if 0 // defined(__WXMSW__) && wxUSE_MS_HTML_HELP wxString path(wxGetCwd()); - if ( !frame->GetMSHtmlHelpController().Initialize(path + "\\doc.chm") ) + if ( !frame->GetMSHtmlHelpController().Initialize(path + _T("\\doc.chm")) ) { wxLogError("Cannot initialize the MS HTML help system, aborting."); @@ -369,57 +369,57 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(HelpDemo_Help_Index, "&Help Index..."); - menuFile->Append(HelpDemo_Help_Classes, "&Help on Classes..."); - menuFile->Append(HelpDemo_Help_Functions, "&Help on Functions..."); - menuFile->Append(HelpDemo_Help_ContextHelp, "&Context Help..."); - menuFile->Append(HelpDemo_Help_DialogContextHelp, "&Dialog Context Help...\tCtrl-H"); - menuFile->Append(HelpDemo_Help_Help, "&About Help Demo..."); - menuFile->Append(HelpDemo_Help_Search, "&Search help..."); + menuFile->Append(HelpDemo_Help_Index, _T("&Help Index...")); + menuFile->Append(HelpDemo_Help_Classes, _T("&Help on Classes...")); + menuFile->Append(HelpDemo_Help_Functions, _T("&Help on Functions...")); + menuFile->Append(HelpDemo_Help_ContextHelp, _T("&Context Help...")); + menuFile->Append(HelpDemo_Help_DialogContextHelp, _T("&Dialog Context Help...\tCtrl-H")); + menuFile->Append(HelpDemo_Help_Help, _T("&About Help Demo...")); + menuFile->Append(HelpDemo_Help_Search, _T("&Search help...")); #if USE_HTML_HELP menuFile->AppendSeparator(); - menuFile->Append(HelpDemo_Advanced_Html_Help_Index, "Advanced HTML &Help Index..."); - menuFile->Append(HelpDemo_Advanced_Html_Help_Classes, "Advanced HTML &Help on Classes..."); - menuFile->Append(HelpDemo_Advanced_Html_Help_Functions, "Advanced HTML &Help on Functions..."); - menuFile->Append(HelpDemo_Advanced_Html_Help_Help, "Advanced HTML &About Help Demo..."); - menuFile->Append(HelpDemo_Advanced_Html_Help_Search, "Advanced HTML &Search help..."); + menuFile->Append(HelpDemo_Advanced_Html_Help_Index, _T("Advanced HTML &Help Index...")); + menuFile->Append(HelpDemo_Advanced_Html_Help_Classes, _T("Advanced HTML &Help on Classes...")); + menuFile->Append(HelpDemo_Advanced_Html_Help_Functions, _T("Advanced HTML &Help on Functions...")); + menuFile->Append(HelpDemo_Advanced_Html_Help_Help, _T("Advanced HTML &About Help Demo...")); + menuFile->Append(HelpDemo_Advanced_Html_Help_Search, _T("Advanced HTML &Search help...")); #endif #if wxUSE_MS_HTML_HELP menuFile->AppendSeparator(); - menuFile->Append(HelpDemo_MS_Html_Help_Index, "MS HTML &Help Index..."); - menuFile->Append(HelpDemo_MS_Html_Help_Classes, "MS HTML &Help on Classes..."); - menuFile->Append(HelpDemo_MS_Html_Help_Functions, "MS HTML &Help on Functions..."); - menuFile->Append(HelpDemo_MS_Html_Help_Help, "MS HTML &About Help Demo..."); - menuFile->Append(HelpDemo_MS_Html_Help_Search, "MS HTML &Search help..."); + menuFile->Append(HelpDemo_MS_Html_Help_Index, _T("MS HTML &Help Index...")); + menuFile->Append(HelpDemo_MS_Html_Help_Classes, _T("MS HTML &Help on Classes...")); + menuFile->Append(HelpDemo_MS_Html_Help_Functions, _T("MS HTML &Help on Functions...")); + menuFile->Append(HelpDemo_MS_Html_Help_Help, _T("MS HTML &About Help Demo...")); + menuFile->Append(HelpDemo_MS_Html_Help_Search, _T("MS HTML &Search help...")); #endif #if wxUSE_MS_HTML_HELP && wxUSE_WXHTML_HELP menuFile->AppendSeparator(); - menuFile->Append(HelpDemo_Best_Help_Index, "Best &Help Index..."); + menuFile->Append(HelpDemo_Best_Help_Index, _T("Best &Help Index...")); #endif #ifndef __WXMSW__ #if !wxUSE_HTML menuFile->AppendSeparator(); - menuFile->Append(HelpDemo_Help_KDE, "Use &KDE"); - menuFile->Append(HelpDemo_Help_GNOME, "Use &GNOME"); - menuFile->Append(HelpDemo_Help_Netscape, "Use &Netscape"); + menuFile->Append(HelpDemo_Help_KDE, _T("Use &KDE")); + menuFile->Append(HelpDemo_Help_GNOME, _T("Use &GNOME")); + menuFile->Append(HelpDemo_Help_Netscape, _T("Use &Netscape")); #endif #endif menuFile->AppendSeparator(); - menuFile->Append(HelpDemo_Quit, "E&xit"); + menuFile->Append(HelpDemo_Quit, _T("E&xit")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _T("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); // now create some controls @@ -430,7 +430,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) //panel->SetHelpText(wxContextId(300)); // and a static control whose parent is the panel - wxStaticText* staticText = new wxStaticText(panel, 302, "Hello, world!", wxPoint(10, 10)); + wxStaticText* staticText = new wxStaticText(panel, 302, _T("Hello, world!"), wxPoint(10, 10)); staticText->SetHelpText(_("This static text control isn't doing a lot right now.")); } @@ -585,9 +585,9 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController) case HelpDemo_MS_Html_Help_Search: case HelpDemo_Best_Help_Search: { - wxString key = wxGetTextFromUser("Search for?", - "Search help for keyword", - "", + wxString key = wxGetTextFromUser(_T("Search for?"), + _T("Search help for keyword"), + _T(""), this); if(! key.IsEmpty()) helpController.KeywordSearch(key); @@ -605,13 +605,13 @@ void MyFrame::ShowHelp(int commandId, wxHelpControllerBase& helpController) // These three calls are only used by wxExtHelpController case HelpDemo_Help_KDE: - helpController.SetViewer("kdehelp"); + helpController.SetViewer(_T("kdehelp")); break; case HelpDemo_Help_GNOME: - helpController.SetViewer("gnome-help-browser"); + helpController.SetViewer(_T("gnome-help-browser")); break; case HelpDemo_Help_Netscape: - helpController.SetViewer("netscape", wxHELP_NETSCAPE); + helpController.SetViewer(_T("netscape"), wxHELP_NETSCAPE); break; } } @@ -632,15 +632,15 @@ MyModalDialog::MyModalDialog(wxWindow *parent) SetExtraStyle(wxDIALOG_EX_CONTEXTHELP); #endif - wxDialog::Create(parent, -1, wxString("Modal dialog")); + wxDialog::Create(parent, -1, wxString(_T("Modal dialog"))); wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sizerRow = new wxBoxSizer(wxHORIZONTAL); - wxButton* btnOK = new wxButton(this, wxID_OK, "&OK"); + wxButton* btnOK = new wxButton(this, wxID_OK, _T("&OK")); btnOK->SetHelpText(_("The OK button confirms the dialog choices.")); - wxButton* btnCancel = new wxButton(this, wxID_CANCEL, "&Cancel"); + wxButton* btnCancel = new wxButton(this, wxID_CANCEL, _T("&Cancel")); btnCancel->SetHelpText(_("The Cancel button cancels the dialog.")); sizerRow->Add(btnOK, 0, wxALIGN_CENTER | wxALL, 5); diff --git a/samples/help/help.dsp b/samples/help/help.dsp index c042b68854..536d26fae2 100644 --- a/samples/help/help.dsp +++ b/samples/help/help.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "help - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "help - Win32 Release" diff --git a/samples/help/makefile.wat b/samples/help/makefile.wat index 370b2fcc20..58d8514fec 100644 --- a/samples/help/makefile.wat +++ b/samples/help/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = demo -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\help +# +PROGRAM = help +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/about/about.cpp b/samples/html/about/about.cpp index 67b2bc0153..eac43f4e19 100644 --- a/samples/html/about/about.cpp +++ b/samples/html/about/about.cpp @@ -108,7 +108,7 @@ { wxImage::AddHandler(new wxPNGHandler); // Create the main application window - MyFrame *frame = new MyFrame("wxHtmlWindow testing application", + MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"), wxPoint(50, 50), wxSize(150, 50)); // Show it and tell the application that it's our main window @@ -135,12 +135,12 @@ // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Minimal_About, "&About"); - menuFile->Append(Minimal_Quit, "E&xit"); + menuFile->Append(Minimal_About, _("&About")); + menuFile->Append(Minimal_Quit, _("E&xit")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -159,13 +159,13 @@ { wxBoxSizer *topsizer; wxHtmlWindow *html; - wxDialog dlg(this, -1, wxString("About")); + wxDialog dlg(this, -1, wxString(_("About"))); topsizer = new wxBoxSizer(wxVERTICAL); html = new wxHtmlWindow(&dlg, -1, wxDefaultPosition, wxSize(380, 160), wxHW_SCROLLBAR_NEVER); html -> SetBorders(0); - html -> LoadPage("data/about.htm"); + html -> LoadPage(wxT("data/about.htm")); html -> SetSize(html -> GetInternalRepresentation() -> GetWidth(), html -> GetInternalRepresentation() -> GetHeight()); @@ -173,7 +173,7 @@ topsizer -> Add(new wxStaticLine(&dlg, -1), 0, wxEXPAND | wxLEFT | wxRIGHT, 10); - wxButton *bu1 = new wxButton(&dlg, wxID_OK, "Okay"); + wxButton *bu1 = new wxButton(&dlg, wxID_OK, _("OK")); bu1 -> SetDefault(); topsizer -> Add(bu1, 0, wxALL | wxALIGN_RIGHT, 15); diff --git a/samples/html/about/about.dsp b/samples/html/about/about.dsp index bcb82b9b23..a8aac10db7 100644 --- a/samples/html/about/about.dsp +++ b/samples/html/about/about.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlabout - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlabout - Win32 Release" diff --git a/samples/html/about/makefile.wat b/samples/html/about/makefile.wat index 02018bbe57..830cb21085 100644 --- a/samples/html/about/makefile.wat +++ b/samples/html/about/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = about -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\about +# +PROGRAM = about +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/help/help.cpp b/samples/html/help/help.cpp index ac000fe7dc..0e6ed46d88 100644 --- a/samples/html/help/help.cpp +++ b/samples/html/help/help.cpp @@ -111,11 +111,11 @@ #if wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB wxFileSystem::AddHandler(new wxZipFSHandler); #endif - SetVendorName("wxWindows"); - SetAppName("wxHTMLHelp"); + SetVendorName(wxT("wxWindows")); + SetAppName(wxT("wxHTMLHelp")); // Create the main application window - MyFrame *frame = new MyFrame("HTML Help Sample", + MyFrame *frame = new MyFrame(_("HTML Help Sample"), wxPoint(50, 50), wxSize(150, 50)); // Show it and tell the application that it's our main window @@ -143,33 +143,25 @@ // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Minimal_Help, "&Help"); - menuFile->Append(Minimal_Quit, "E&xit"); + menuFile->Append(Minimal_Help, _("&Help")); + menuFile->Append(Minimal_Quit, _("E&xit")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); help.UseConfig(wxConfig::Get()); bool ret; -#if defined(__WXMAC__) && !defined(__DARWIN__) - ret = help.AddBook(":helpfiles:testing.hhp"); -#else - help.SetTempDir("."); - ret = help.AddBook("helpfiles/testing.hhp"); -#endif + help.SetTempDir(wxT(".")); + ret = help.AddBook(wxFileName(wxT("helpfiles/testing.hhp"), wxPATH_UNIX)); if (! ret) - wxMessageBox("Failed adding book helpfiles/testing.hhp"); -#if defined(__WXMAC__) && !defined(__DARWIN__) - ret = help.AddBook(":helpfiles:another.hhp"); -#else - ret = help.AddBook("helpfiles/another.hhp"); -#endif + wxMessageBox(wxT("Failed adding book helpfiles/testing.hhp")); + ret = help.AddBook(wxFileName(wxT("helpfiles/another.hhp"), wxPATH_UNIX)); if (! ret) - wxMessageBox("Failed adding book helpfiles/another.hhp"); + wxMessageBox(_("Failed adding book helpfiles/another.hhp")); } @@ -183,7 +175,7 @@ void MyFrame::OnHelp(wxCommandEvent& WXUNUSED(event)) { - help.Display("Test HELPFILE"); + help.Display(wxT("Test HELPFILE")); } void MyFrame::OnClose(wxCloseEvent& event) diff --git a/samples/html/help/help.dsp b/samples/html/help/help.dsp index 35235f621e..c35331113b 100644 --- a/samples/html/help/help.dsp +++ b/samples/html/help/help.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlhelp - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlhelp - Win32 Release" diff --git a/samples/html/help/makefile.wat b/samples/html/help/makefile.wat index f49017db23..5a113ae5f1 100644 --- a/samples/html/help/makefile.wat +++ b/samples/html/help/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = help -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\help +# +PROGRAM = help +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/helpview/helpview.cpp b/samples/html/helpview/helpview.cpp index 1b07b46823..d77e758829 100644 --- a/samples/html/helpview/helpview.cpp +++ b/samples/html/helpview/helpview.cpp @@ -66,8 +66,8 @@ bool MyApp::OnInit() wxInitAllImageHandlers(); wxFileSystem::AddHandler(new wxZipFSHandler); - SetVendorName("wxWindows"); - SetAppName("wxHTMLHelp"); + SetVendorName(wxT("wxWindows")); + SetAppName(wxT("wxHTMLHelp")); wxConfig::Get(); // create an instance help = new wxHtmlHelpController; @@ -79,7 +79,7 @@ bool MyApp::OnInit() } for (int i = 1; i < argc; i++) - help -> AddBook(argv[i]); + help->AddBook(wxFileName(argv[i])); #ifdef __WXMOTIF__ delete wxLog::SetActiveTarget(new wxLogGui); diff --git a/samples/html/helpview/helpview.dsp b/samples/html/helpview/helpview.dsp index 055b077c5e..a77f82f2f5 100644 --- a/samples/html/helpview/helpview.dsp +++ b/samples/html/helpview/helpview.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlhelpview - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlhelpview - Win32 Release" diff --git a/samples/html/helpview/makefile.wat b/samples/html/helpview/makefile.wat index 89750a9cfb..aa3e83de75 100644 --- a/samples/html/helpview/makefile.wat +++ b/samples/html/helpview/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = helpview -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\helpview +# +PROGRAM = helpview +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/printing/makefile.wat b/samples/html/printing/makefile.wat index ebd7bff092..ad23f4f198 100644 --- a/samples/html/printing/makefile.wat +++ b/samples/html/printing/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = printing -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\printing +# +PROGRAM = printing +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/printing/printing.cpp b/samples/html/printing/printing.cpp index c2c9f1bac9..a76b0714b0 100644 --- a/samples/html/printing/printing.cpp +++ b/samples/html/printing/printing.cpp @@ -129,7 +129,7 @@ bool MyApp::OnInit() wxImage::AddHandler(new wxGIFHandler); #endif - MyFrame *frame = new MyFrame("Printing test", + MyFrame *frame = new MyFrame(_("Printing test"), wxPoint(150, 50), wxSize(640, 480)); // Show it and tell the application that it's our main window @@ -155,20 +155,20 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) { // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Minimal_Open, "Open...\tCtrl-O"); + menuFile->Append(Minimal_Open, _("Open...\tCtrl-O")); menuFile->AppendSeparator(); - menuFile->Append(Minimal_PageSetup, "Page Setup"); - menuFile->Append(Minimal_PrintSetup, "Printer Setup"); - menuFile->Append(Minimal_Print, "Print..."); - menuFile->Append(Minimal_Preview, "Preview..."); + menuFile->Append(Minimal_PageSetup, _("Page Setup")); + menuFile->Append(Minimal_PrintSetup, _("Printer Setup")); + menuFile->Append(Minimal_Print, _("Print...")); + menuFile->Append(Minimal_Preview, _("Preview...")); menuFile->AppendSeparator(); - menuFile->Append(wxID_ABOUT, "&About"); + menuFile->Append(wxID_ABOUT, _("&About")); menuFile->AppendSeparator(); - menuFile->Append(Minimal_Quit, "&Exit"); + menuFile->Append(Minimal_Quit, _("&Exit")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -176,13 +176,13 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) CreateStatusBar(1); m_Html = new wxHtmlWindow(this); - m_Html -> SetRelatedFrame(this, "HTML : %s"); + m_Html -> SetRelatedFrame(this, _("HTML : %s")); m_Html -> SetRelatedStatusBar(0); - m_Name = "test.htm"; + m_Name = wxT("test.htm"); m_Html -> LoadPage(m_Name); - m_Prn = new wxHtmlEasyPrinting("Easy Printing Demo", this); - m_Prn -> SetHeader(m_Name + "(@PAGENUM@/@PAGESCNT@)
    ", wxPAGE_ALL); + m_Prn = new wxHtmlEasyPrinting(_("Easy Printing Demo"), this); + m_Prn -> SetHeader(m_Name + wxT("(@PAGENUM@/@PAGESCNT@)
    "), wxPAGE_ALL); } // frame destructor @@ -204,7 +204,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("HTML printing sample\n\n(c) Vaclav Slavik, 1999"); + wxMessageBox(_("HTML printing sample\n\n(c) Vaclav Slavik, 1999")); } @@ -234,13 +234,13 @@ void MyFrame::OnPreview(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnOpen(wxCommandEvent& WXUNUSED(event)) { - wxFileDialog dialog(this, "Open HTML page", "", "", "*.htm", 0); + wxFileDialog dialog(this, _("Open HTML page"), wxT(""), wxT(""), wxT("*.htm"), 0); if (dialog.ShowModal() == wxID_OK) { m_Name = dialog.GetPath(); m_Html -> LoadPage(m_Name); - m_Prn -> SetHeader(m_Name + "(@PAGENUM@/@PAGESCNT@)
    ", wxPAGE_ALL); + m_Prn -> SetHeader(m_Name + wxT("(@PAGENUM@/@PAGESCNT@)
    "), wxPAGE_ALL); } } diff --git a/samples/html/printing/printing.dsp b/samples/html/printing/printing.dsp index f12717218f..c024c625a1 100644 --- a/samples/html/printing/printing.dsp +++ b/samples/html/printing/printing.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlprinting - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlprinting - Win32 Release" diff --git a/samples/html/test/makefile.wat b/samples/html/test/makefile.wat index 81a83e42a9..aa7ab768cb 100644 --- a/samples/html/test/makefile.wat +++ b/samples/html/test/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\test +# +PROGRAM = test +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/test/test.cpp b/samples/html/test/test.cpp index 9d1f1d98d9..26f225e4b7 100644 --- a/samples/html/test/test.cpp +++ b/samples/html/test/test.cpp @@ -140,12 +140,12 @@ class BoldProcessor : public wxHtmlProcessor wxFileSystem::AddHandler(new wxInternetFSHandler); #endif - SetVendorName("wxWindows"); - SetAppName("wxHtmlTest"); + SetVendorName(wxT("wxWindows")); + SetAppName(wxT("wxHtmlTest")); // the following call to wxConfig::Get will use it to create an object... // Create the main application window - MyFrame *frame = new MyFrame("wxHtmlWindow testing application", + MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"), wxPoint(50, 50), wxSize(640, 480)); // Show it and tell the application that it's our main window @@ -167,25 +167,26 @@ class BoldProcessor : public wxHtmlProcessor // frame constructor MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) - : wxFrame((wxFrame *)NULL, -1, title, pos, size, wxDEFAULT_FRAME_STYLE, "html_test_app") + : wxFrame((wxFrame *)NULL, -1, title, pos, size, wxDEFAULT_FRAME_STYLE, + wxT("html_test_app")) { // create a menu bar wxMenu *menuFile = new wxMenu; wxMenu *menuNav = new wxMenu; - menuFile->Append(Minimal_PageOpen, "&Open HTML page..."); + menuFile->Append(Minimal_PageOpen, _("&Open HTML page...")); menuFile->AppendSeparator(); - menuFile->Append(Minimal_Processor, "&Remove bold attribute", "", TRUE); + menuFile->Append(Minimal_Processor, _("&Remove bold attribute"), wxT(""), TRUE); menuFile->AppendSeparator(); - menuFile->Append(Minimal_Quit, "&Close frame"); - menuNav->Append(Minimal_Back, "Go &BACK"); - menuNav->Append(Minimal_Forward, "Go &FORWARD"); + menuFile->Append(Minimal_Quit, _("&Close frame")); + menuNav->Append(Minimal_Back, _("Go &BACK")); + menuNav->Append(Minimal_Forward, _("Go &FORWARD")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuNav, "&Navigate"); + menuBar->Append(menuFile, _("&File")); + menuBar->Append(menuNav, _("&Navigate")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -195,10 +196,10 @@ class BoldProcessor : public wxHtmlProcessor m_Processor = new BoldProcessor; m_Processor->Enable(FALSE); m_Html = new wxHtmlWindow(this); - m_Html->SetRelatedFrame(this, "HTML : %s"); + m_Html->SetRelatedFrame(this, _("HTML : %s")); m_Html->SetRelatedStatusBar(0); m_Html->ReadCustomization(wxConfig::Get()); - m_Html->LoadPage("test.htm"); + m_Html->LoadPage(wxT("test.htm")); m_Html->AddProcessor(m_Processor); } @@ -215,19 +216,19 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnPageOpen(wxCommandEvent& WXUNUSED(event)) { - wxString p = wxFileSelector(wxT("Open HTML document"), wxT(""), wxT(""), wxT(""), wxT("HTML files|*.htm")); + wxString p = wxFileSelector(_("Open HTML document"), wxT(""), wxT(""), wxT(""), wxT("HTML files|*.htm")); if (p != wxEmptyString) m_Html -> LoadPage(p); } void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) { -if (!m_Html -> HistoryBack()) wxMessageBox("You reached prehistory era!"); +if (!m_Html -> HistoryBack()) wxMessageBox(_("You reached prehistory era!")); } void MyFrame::OnForward(wxCommandEvent& WXUNUSED(event)) { -if (!m_Html -> HistoryForward()) wxMessageBox("No more items in history!"); +if (!m_Html -> HistoryForward()) wxMessageBox(_("No more items in history!")); } void MyFrame::OnProcessor(wxCommandEvent& WXUNUSED(event)) diff --git a/samples/html/test/test.dsp b/samples/html/test/test.dsp index 58c5ea3bea..ba3a42ccf0 100644 --- a/samples/html/test/test.dsp +++ b/samples/html/test/test.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmltest - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmltest - Win32 Release" diff --git a/samples/html/virtual/makefile.wat b/samples/html/virtual/makefile.wat index c47938e66e..323b0e8536 100644 --- a/samples/html/virtual/makefile.wat +++ b/samples/html/virtual/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = virtual -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\virtual +# +PROGRAM = virtual +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/virtual/virtual.cpp b/samples/html/virtual/virtual.cpp index f21e4d5b0f..bd681ed8a5 100644 --- a/samples/html/virtual/virtual.cpp +++ b/samples/html/virtual/virtual.cpp @@ -45,7 +45,7 @@ public: bool MyVFS::CanOpen(const wxString& location) { - return (GetProtocol(location) == "myVFS"); + return (GetProtocol(location) == wxT("myVFS")); } @@ -55,6 +55,7 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) wxFSFile *f; wxInputStream *str; static char buf[1024]; + const wxWX2MBbuf loc = location.ToAscii(); sprintf(buf, "

    You're in Node %s

    " "Where do you want to go?

    " @@ -62,7 +63,8 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) "sub-2
    " "sub-3
    " "
    ", - location.GetData(), location.GetData(), location.GetData(), location.GetData()); + (const char*)loc, (const char*)loc, (const char*)loc, + (const char*)loc); // NB: There's a terrible hack involved: we fill 'buf' with new data every // time this method is called and return new wxMemoryInputStream pointing to it. @@ -70,7 +72,7 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) // this won't happen because wxHTML keeps only one "page" file opened at the // time. str = new wxMemoryInputStream(buf, strlen(buf)); - f = new wxFSFile(str, location, "text/html", wxEmptyString, wxDateTime::Today()); + f = new wxFSFile(str, location, wxT("text/html"), wxEmptyString, wxDateTime::Today()); return f; } @@ -159,7 +161,7 @@ wxFSFile* MyVFS::OpenFile(wxFileSystem& fs, const wxString& location) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("wxHtmlWindow testing application", + MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"), wxPoint(50, 50), wxSize(640, 480)); // Show it and tell the application that it's our main window @@ -188,14 +190,14 @@ wxHtmlWindow *html; wxMenu *menuFile = new wxMenu; wxMenu *menuNav = new wxMenu; - menuFile->Append(Minimal_Quit, "E&xit"); - menuNav->Append(Minimal_Back, "Go &BACK"); - menuNav->Append(Minimal_Forward, "Go &FORWARD"); + menuFile->Append(Minimal_Quit, _("E&xit")); + menuNav->Append(Minimal_Back, _("Go &BACK")); + menuNav->Append(Minimal_Forward, _("Go &FORWARD")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuNav, "&Navigate"); + menuBar->Append(menuFile, _("&File")); + menuBar->Append(menuNav, _("&Navigate")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -203,9 +205,9 @@ wxHtmlWindow *html; CreateStatusBar(2); html = new wxHtmlWindow(this); - html -> SetRelatedFrame(this, "VFS Demo: '%s'"); + html -> SetRelatedFrame(this, _("VFS Demo: '%s'")); html -> SetRelatedStatusBar(1); - html -> LoadPage("start.htm"); + html -> LoadPage(wxT("start.htm")); } @@ -219,11 +221,11 @@ wxHtmlWindow *html; void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryBack()) wxMessageBox("You reached prehistory era!"); + if (!html -> HistoryBack()) wxMessageBox(_("You reached prehistory era!")); } void MyFrame::OnForward(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryForward()) wxMessageBox("No more items in history!"); + if (!html -> HistoryForward()) wxMessageBox(_("No more items in history!")); } diff --git a/samples/html/virtual/virtual.dsp b/samples/html/virtual/virtual.dsp index 12d3189514..ea7f1d7b92 100644 --- a/samples/html/virtual/virtual.dsp +++ b/samples/html/virtual/virtual.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlvirtual - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlvirtual - Win32 Release" diff --git a/samples/html/widget/makefile.wat b/samples/html/widget/makefile.wat index e8e59102d9..2106b3b4fa 100644 --- a/samples/html/widget/makefile.wat +++ b/samples/html/widget/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = widget -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\html\widget +# +PROGRAM = widget +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/widget/widget.cpp b/samples/html/widget/widget.cpp index d0849a04ce..b567e193f4 100644 --- a/samples/html/widget/widget.cpp +++ b/samples/html/widget/widget.cpp @@ -153,7 +153,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame( "wxHtmlWindow testing application", + MyFrame *frame = new MyFrame( _("wxHtmlWindow testing application"), wxPoint(50, 50), wxSize(640, 480) ); // Show it and tell the application that it's our main window @@ -181,14 +181,14 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxMenu *menuFile = new wxMenu; wxMenu *menuNav = new wxMenu; - menuFile->Append(Minimal_Quit, "E&xit"); - menuNav->Append(Minimal_Back, "Go &BACK"); - menuNav->Append(Minimal_Forward, "Go &FORWARD"); + menuFile->Append(Minimal_Quit, _("E&xit")); + menuNav->Append(Minimal_Back, _("Go &BACK")); + menuNav->Append(Minimal_Forward, _("Go &FORWARD")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuNav, "&Navigate"); + menuBar->Append(menuFile, _("&File")); + menuBar->Append(menuNav, _("&Navigate")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -196,9 +196,9 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) CreateStatusBar(2); html = new wxHtmlWindow(this); - html -> SetRelatedFrame(this, "VFS Demo: '%s'"); + html -> SetRelatedFrame(this, _("VFS Demo: '%s'")); html -> SetRelatedStatusBar(1); - html -> LoadPage("start.htm"); + html -> LoadPage(wxT("start.htm")); } @@ -212,11 +212,11 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryBack()) wxMessageBox("You reached prehistory era!"); + if (!html -> HistoryBack()) wxMessageBox(_("You reached prehistory era!")); } void MyFrame::OnForward(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryForward()) wxMessageBox("No more items in history!"); + if (!html -> HistoryForward()) wxMessageBox(_("No more items in history!")); } diff --git a/samples/html/widget/widget.dsp b/samples/html/widget/widget.dsp index 354881b545..bf89fb2c58 100644 --- a/samples/html/widget/widget.dsp +++ b/samples/html/widget/widget.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlwidget - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlwidget - Win32 Release" diff --git a/samples/html/zip/makefile.wat b/samples/html/zip/makefile.wat index 5a52da2bb3..25e02c2766 100644 --- a/samples/html/zip/makefile.wat +++ b/samples/html/zip/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = zip -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\zip +# +PROGRAM = zip +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/html/zip/zip.cpp b/samples/html/zip/zip.cpp index 3eb2d0daa4..655715c590 100644 --- a/samples/html/zip/zip.cpp +++ b/samples/html/zip/zip.cpp @@ -112,7 +112,7 @@ bool MyApp::OnInit() wxFileSystem::AddHandler(new wxZipFSHandler); // Create the main application window - MyFrame *frame = new MyFrame( "wxHtmlWindow testing application", + MyFrame *frame = new MyFrame(_("wxHtmlWindow testing application"), wxPoint(50, 50), wxSize(640, 480) ); // Show it and tell the application that it's our main window @@ -141,14 +141,14 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxMenu *menuFile = new wxMenu; wxMenu *menuNav = new wxMenu; - menuFile->Append(Minimal_Quit, "E&xit"); - menuNav->Append(Minimal_Back, "Go &BACK"); - menuNav->Append(Minimal_Forward, "Go &FORWARD"); + menuFile->Append(Minimal_Quit, _("E&xit")); + menuNav->Append(Minimal_Back, _("Go &BACK")); + menuNav->Append(Minimal_Forward, _("Go &FORWARD")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - menuBar->Append(menuNav, "&Navigate"); + menuBar->Append(menuFile, _("&File")); + menuBar->Append(menuNav, _("&Navigate")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -157,9 +157,9 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) { html = new wxHtmlWindow(this); - html -> SetRelatedFrame(this, "HTML : %s"); + html -> SetRelatedFrame(this, _("HTML : %s")); html -> SetRelatedStatusBar(0); - html -> LoadPage("start.htm"); + html -> LoadPage(wxT("start.htm")); } } @@ -174,10 +174,10 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryBack()) wxMessageBox("You reached prehistory era!"); + if (!html -> HistoryBack()) wxMessageBox(_("You reached prehistory era!")); } void MyFrame::OnForward(wxCommandEvent& WXUNUSED(event)) { - if (!html -> HistoryForward()) wxMessageBox("No more items in history!"); + if (!html -> HistoryForward()) wxMessageBox(_("No more items in history!")); } diff --git a/samples/html/zip/zip.dsp b/samples/html/zip/zip.dsp index c3fd85f552..098d903ba3 100644 --- a/samples/html/zip/zip.dsp +++ b/samples/html/zip/zip.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "htmlzip - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "htmlzip - Win32 Release" diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index 3cf0907803..75a2c2f97b 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -14,7 +14,7 @@ top_builddir = ../.. program_dir = samples/image DATAFILES = horse.png horse.jpg horse.bmp horse.gif horse.pcx horse.pnm \ - horse.tif horse.xpm smile.xbm horse.cur horse.ico + horse.tif horse.xpm smile.xbm horse.cur horse.ico horse3.ani PROGRAM=image diff --git a/samples/image/horse3.ani b/samples/image/horse3.ani new file mode 100644 index 0000000000..24ef4b1e23 Binary files /dev/null and b/samples/image/horse3.ani differ diff --git a/samples/image/image.cpp b/samples/image/image.cpp index 92e4e44c98..9fa7e32efe 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -60,12 +60,14 @@ public: wxBitmap *my_horse_ico16; wxBitmap *my_horse_ico; wxBitmap *my_horse_cur; + wxBitmap *my_horse_ani; wxBitmap *my_smile_xbm; wxBitmap *my_square; wxBitmap *my_anti; int xH, yH ; + int m_ani_images ; protected: wxBitmap m_bmpSmileXpm; @@ -264,11 +266,14 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, my_horse_ico16 = (wxBitmap*) NULL; my_horse_ico = (wxBitmap*) NULL; my_horse_cur = (wxBitmap*) NULL; + my_horse_ani = (wxBitmap*) NULL; my_smile_xbm = (wxBitmap*) NULL; my_square = (wxBitmap*) NULL; my_anti = (wxBitmap*) NULL; + m_ani_images = 0 ; + SetBackgroundColour(* wxWHITE); wxBitmap bitmap( 100, 100 ); @@ -285,9 +290,9 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, // try to find the directory with our images wxString dir; if ( wxFile::Exists(wxT("./horse.png")) ) - dir = "./"; + dir = wxT("./"); else if ( wxFile::Exists(wxT("../horse.png")) ) - dir = "../"; + dir = wxT("../"); else wxLogWarning(wxT("Can't find image files in either '.' or '..'!")); @@ -322,7 +327,7 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, #if wxUSE_GIF image.Destroy(); - if ( !image.LoadFile( dir + wxString("horse.gif"))) + if ( !image.LoadFile( dir + _T("horse.gif" )) ) wxLogError(wxT("Can't load GIF image")); else my_horse_gif = new wxBitmap( image ); @@ -417,6 +422,27 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, xH = 30 + image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X) ; yH = 2420 + image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y) ; } + + m_ani_images = wxImage::GetImageCount ( dir + _T("horse3.ani"), wxBITMAP_TYPE_ANI ); + if (m_ani_images==0) + wxLogError(wxT("No ANI-format images found")); + else + my_horse_ani = new wxBitmap [m_ani_images]; + int i ; + for (i=0; i < m_ani_images; i++) + { + image.Destroy(); + if (!image.LoadFile( dir + _T("horse3.ani"), wxBITMAP_TYPE_ANI, i )) + { + wxString tmp = wxT("Can't load image number "); + tmp << i ; + wxLogError(tmp); + } + else + my_horse_ani [i] = wxBitmap( image ); + } + + #endif image.Destroy(); @@ -454,6 +480,7 @@ MyCanvas::~MyCanvas() delete my_horse_ico16; delete my_horse_ico; delete my_horse_cur; + delete [] my_horse_ani; delete my_smile_xbm; delete my_square; delete my_anti; @@ -611,6 +638,13 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) dc.DrawLine (xH-10,yH,xH+10,yH); dc.DrawLine (xH,yH-10,xH,yH+10); } + dc.DrawText( _T("ANI handler"), 230, 2390 ); + int i ; + for (i=0; i < m_ani_images; i ++) + if (my_horse_ani[i].Ok()) + { + dc.DrawBitmap( my_horse_ani[i], 230 + i * 2 * my_horse_ani[i].GetWidth() , 2420, TRUE ); + } } void MyCanvas::CreateAntiAliasedBitmap() @@ -768,6 +802,7 @@ bool MyApp::OnInit() #if wxUSE_ICO_CUR wxImage::AddHandler( new wxICOHandler ); wxImage::AddHandler( new wxCURHandler ); + wxImage::AddHandler( new wxANIHandler ); #endif wxFrame *frame = new MyFrame(); diff --git a/samples/image/image.dsp b/samples/image/image.dsp index b13f17b54b..3af6f8834a 100644 --- a/samples/image/image.dsp +++ b/samples/image/image.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "image - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "image - Win32 Release" diff --git a/samples/image/makefile.wat b/samples/image/makefile.wat index 3b6cb33829..538e911659 100644 --- a/samples/image/makefile.wat +++ b/samples/image/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = image -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\image +# +PROGRAM = image +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/internat/de/internat.mo b/samples/internat/de/internat.mo index c5adfd9059..a8204ad49d 100644 Binary files a/samples/internat/de/internat.mo and b/samples/internat/de/internat.mo differ diff --git a/samples/internat/de/internat.po b/samples/internat/de/internat.po index 8f4bb2036c..c33de1ebf0 100644 --- a/samples/internat/de/internat.po +++ b/samples/internat/de/internat.po @@ -20,7 +20,7 @@ msgstr "Internationales wxWindows Programm" #: ../internat.cpp:128 msgid "&About..." -msgstr "Ü&ber" +msgstr "Ü&ber..." #: ../internat.cpp:130 msgid "E&xit" diff --git a/samples/internat/internat.cpp b/samples/internat/internat.cpp index d009e1cbf8..42ac1167e8 100644 --- a/samples/internat/internat.cpp +++ b/samples/internat/internat.cpp @@ -120,7 +120,7 @@ bool MyApp::OnInit() #ifdef __LINUX__ { wxLogNull noLog; - m_locale.AddCatalog("fileutils"); // 3) and another just for testing + m_locale.AddCatalog(_T("fileutils")); // 3) and another just for testing } #endif @@ -171,10 +171,12 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxString localeInfo; + wxString locale = m_locale.GetLocale(); + wxString sysname = m_locale.GetSysName(); + wxString canname = m_locale.GetCanonicalName(); + localeInfo.Printf( _("Language: %s\nSystem locale name: %s\nCanonical locale name: %s\n"), - m_locale.GetLocale(), - m_locale.GetSysName().c_str(), - m_locale.GetCanonicalName().c_str() ); + locale.c_str(), sysname.c_str(), canname.c_str() ); wxMessageDialog(this, wxString(_("I18n sample\n(c) 1998, 1999 Vadim Zeitlin and Julian Smart")) + wxT("\n\n") + localeInfo, @@ -193,7 +195,7 @@ void MyFrame::OnPlay(wxCommandEvent& WXUNUSED(event)) if ( num == 0 ) str = _("You've probably entered an invalid number."); else if ( num == 9 ) // this message is not translated (not in catalog) - str = "You've found a bug in this program!"; + str = _T("You've found a bug in this program!"); else if ( num != 17 ) // a more implicit way to write _() str = wxGetTranslation(wxT("Bad luck! try again...")); else diff --git a/samples/internat/internat.dsp b/samples/internat/internat.dsp index 5bae3cd4e7..1ecf153551 100644 --- a/samples/internat/internat.dsp +++ b/samples/internat/internat.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "internat - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "internat - Win32 Release" diff --git a/samples/internat/makefile.wat b/samples/internat/makefile.wat index 31181ee663..6520d0f6e2 100644 --- a/samples/internat/makefile.wat +++ b/samples/internat/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = internat -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\internat +# +PROGRAM = internat +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/ipc/client.cpp b/samples/ipc/client.cpp index be407db5ab..9c479b0075 100644 --- a/samples/ipc/client.cpp +++ b/samples/ipc/client.cpp @@ -76,7 +76,7 @@ bool MyApp::OnInit() wxString service = IPC_SERVICE; // ignored under DDE, host name in TCP/IP based classes - wxString hostName = "localhost"; + wxString hostName = _T("localhost"); if (argc > 1) service = argv[1]; @@ -94,23 +94,23 @@ bool MyApp::OnInit() while ( !the_connection ) { - if ( wxMessageBox("Failed to make connection to server.\nRetry?", - "Client Demo Error", + if ( wxMessageBox(_T("Failed to make connection to server.\nRetry?"), + _T("Client Demo Error"), wxICON_ERROR | wxYES_NO | wxCANCEL ) != wxYES ) { // no server return FALSE; } - the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, "IPC TEST"); + the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, _T("IPC TEST")); } } if (!the_connection->StartAdvise(IPC_ADVISE_NAME)) - wxMessageBox("StartAdvise failed", "Client Demo Error"); + wxMessageBox(_T("StartAdvise failed"), _T("Client Demo Error")); // Create the main frame window - (new MyFrame(NULL, "Client"))->Show(TRUE); + (new MyFrame(NULL, _T("Client")))->Show(TRUE); return TRUE; } @@ -139,50 +139,50 @@ MyFrame::MyFrame(wxFrame *frame, const wxString& title) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(CLIENT_EXECUTE, "&Execute\tCtrl-E"); - file_menu->Append(CLIENT_REQUEST, "&Request\tCtrl-R"); - file_menu->Append(CLIENT_POKE, "&Poke\tCtrl-P"); - file_menu->Append(CLIENT_QUIT, "&Quit\tCtrl-Q"); + file_menu->Append(CLIENT_EXECUTE, _T("&Execute\tCtrl-E")); + file_menu->Append(CLIENT_REQUEST, _T("&Request\tCtrl-R")); + file_menu->Append(CLIENT_POKE, _T("&Poke\tCtrl-P")); + file_menu->Append(CLIENT_QUIT, _T("&Quit\tCtrl-Q")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); // Associate the menu bar with the frame SetMenuBar(menu_bar); // Make a listbox which shows the choices made in the server the_list = new wxListBox(this, CLIENT_LISTBOX, wxPoint(5, 5)); - the_list->Append("Apple"); - the_list->Append("Pear"); - the_list->Append("Orange"); - the_list->Append("Banana"); - the_list->Append("Fruit"); + the_list->Append(_T("Apple")); + the_list->Append(_T("Pear")); + the_list->Append(_T("Orange")); + the_list->Append(_T("Banana")); + the_list->Append(_T("Fruit")); } void MyFrame::OnExecute(wxCommandEvent& event) { if (the_connection) - if (!the_connection->Execute("Hello from the client!")) - wxMessageBox("Execute failed", "Client Demo Error"); + if (!the_connection->Execute(_T("Hello from the client!"))) + wxMessageBox(_T("Execute failed"), _T("Client Demo Error")); } void MyFrame::OnPoke(wxCommandEvent& event) { if (the_connection) - if (!the_connection->Poke("An item", "Some data to poke at the server!")) - wxMessageBox("Poke failed", "Client Demo Error"); + if (!the_connection->Poke(_T("An item"), _T("Some data to poke at the server!"))) + wxMessageBox(_T("Poke failed"), _T("Client Demo Error")); } void MyFrame::OnRequest(wxCommandEvent& event) { if (the_connection) { - char *data = the_connection->Request("An item"); + wxChar *data = the_connection->Request(_T("An item")); if (data) - wxMessageBox(data, "Client: Request", wxOK); + wxMessageBox(data, _T("Client: Request"), wxOK); else - wxMessageBox("Request failed", "Client Demo Error"); + wxMessageBox(_T("Request failed"), _T("Client Demo Error")); } } @@ -196,7 +196,7 @@ wxConnectionBase *MyClient::OnMakeConnection() return new MyConnection; } -bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) +bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, wxChar *data, int size, wxIPCFormat format) { if (the_list) { diff --git a/samples/ipc/client.dsp b/samples/ipc/client.dsp index 81561b912f..7e785d2f5a 100644 --- a/samples/ipc/client.dsp +++ b/samples/ipc/client.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "ipcclient - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "ipcclient - Win32 Release" diff --git a/samples/ipc/client.h b/samples/ipc/client.h index 5131e1ca45..a5e453701c 100644 --- a/samples/ipc/client.h +++ b/samples/ipc/client.h @@ -37,7 +37,7 @@ private: class MyConnection: public wxConnection { public: - bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format); + bool OnAdvise(const wxString& topic, const wxString& item, wxChar *data, int size, wxIPCFormat format); bool OnDisconnect(); }; diff --git a/samples/ipc/ddesetup.h b/samples/ipc/ddesetup.h index 193f0d3b93..e5886c9ad0 100644 --- a/samples/ipc/ddesetup.h +++ b/samples/ipc/ddesetup.h @@ -15,10 +15,10 @@ #include // the default service name -#define IPC_SERVICE "4242" +#define IPC_SERVICE _T("4242") // the IPC topic -#define IPC_TOPIC "IPC TEST" +#define IPC_TOPIC _T("IPC TEST") // the name of the item we're being advised about -#define IPC_ADVISE_NAME "Item" +#define IPC_ADVISE_NAME _T("Item") diff --git a/samples/ipc/server.cpp b/samples/ipc/server.cpp index 1f4a3b63fe..5d9b0cf1aa 100644 --- a/samples/ipc/server.cpp +++ b/samples/ipc/server.cpp @@ -70,7 +70,7 @@ MyConnection *the_connection = NULL; bool MyApp::OnInit() { // Create the main frame window - (new MyFrame(NULL, "Server"))->Show(TRUE); + (new MyFrame(NULL, _T("Server")))->Show(TRUE); // service name (DDE classes) or port number (TCP/IP based classes) wxString service = IPC_SERVICE; @@ -108,22 +108,22 @@ MyFrame::MyFrame(wxFrame *frame, const wxString& title) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(SERVER_EXIT, "&Quit\tCtrl-Q"); + file_menu->Append(SERVER_EXIT, _T("&Quit\tCtrl-Q")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); // Associate the menu bar with the frame SetMenuBar(menu_bar); // Make a listbox wxListBox *list = new wxListBox(this, SERVER_LISTBOX, wxPoint(5, 5)); - list->Append("Apple"); - list->Append("Pear"); - list->Append("Orange"); - list->Append("Banana"); - list->Append("Fruit"); + list->Append(_T("Apple")); + list->Append(_T("Pear")); + list->Append(_T("Orange")); + list->Append(_T("Banana")); + list->Append(_T("Fruit")); } // Set the client process's listbox to this item @@ -138,7 +138,7 @@ void MyFrame::OnListBoxClick(wxCommandEvent& WXUNUSED(event)) one connection can receive advise messages */ if (the_connection) { - the_connection->Advise(IPC_ADVISE_NAME, (wxChar *)value.c_str()); + the_connection->Advise(IPC_ADVISE_NAME, (wxChar*)value.c_str()); } } } @@ -158,7 +158,7 @@ IPCDialogBox::IPCDialogBox(wxWindow *parent, const wxString& title, : wxDialog(parent, -1, title, pos, size) { m_connection = connection; - (void)new wxButton(this, SERVER_QUIT_BUTTON, "Quit this connection", + (void)new wxButton(this, SERVER_QUIT_BUTTON, _T("Quit this connection"), wxPoint(5, 5)); Fit(); } @@ -197,7 +197,7 @@ wxConnectionBase *MyServer::OnAcceptConnection(const wxString& topic) MyConnection::MyConnection() : wxConnection() { - dialog = new IPCDialogBox(wxTheApp->GetTopWindow(), "Connection", + dialog = new IPCDialogBox(wxTheApp->GetTopWindow(), _T("Connection"), wxPoint(100, 100), wxSize(500, 500), this); dialog->Show(TRUE); the_connection = this; @@ -217,7 +217,7 @@ MyConnection::~MyConnection() } bool MyConnection::OnExecute(const wxString& WXUNUSED(topic), - char *data, + wxChar *data, int WXUNUSED(size), wxIPCFormat WXUNUSED(format)) { @@ -227,7 +227,7 @@ bool MyConnection::OnExecute(const wxString& WXUNUSED(topic), bool MyConnection::OnPoke(const wxString& WXUNUSED(topic), const wxString& item, - char *data, + wxChar *data, int WXUNUSED(size), wxIPCFormat WXUNUSED(format)) { @@ -235,12 +235,12 @@ bool MyConnection::OnPoke(const wxString& WXUNUSED(topic), return TRUE; } -char *MyConnection::OnRequest(const wxString& WXUNUSED(topic), +wxChar *MyConnection::OnRequest(const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), int * WXUNUSED(size), wxIPCFormat WXUNUSED(format)) { - return "Here, have your data, client!"; + return _T("Here, have your data, client!"); } bool MyConnection::OnStartAdvise(const wxString& WXUNUSED(topic), diff --git a/samples/ipc/server.dsp b/samples/ipc/server.dsp index ef4c46dbe3..0e1cdc6043 100644 --- a/samples/ipc/server.dsp +++ b/samples/ipc/server.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "ipcserver - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "ipcserver - Win32 Release" diff --git a/samples/ipc/server.h b/samples/ipc/server.h index 93de320cc3..6f65c463ba 100644 --- a/samples/ipc/server.h +++ b/samples/ipc/server.h @@ -45,9 +45,9 @@ public: MyConnection(); ~MyConnection(); - bool OnExecute(const wxString& topic, char *data, int size, wxIPCFormat format); - char *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format); - bool OnPoke(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format); + bool OnExecute(const wxString& topic, wxChar *data, int size, wxIPCFormat format); + wxChar *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format); + bool OnPoke(const wxString& topic, const wxString& item, wxChar *data, int size, wxIPCFormat format); bool OnStartAdvise(const wxString& topic, const wxString& item); IPCDialogBox *dialog; diff --git a/samples/joytest/joytest.cpp b/samples/joytest/joytest.cpp index d1eac3e5ea..bfcb3873b9 100644 --- a/samples/joytest/joytest.cpp +++ b/samples/joytest/joytest.cpp @@ -49,12 +49,12 @@ bool MyApp::OnInit() wxJoystick stick(wxJOYSTICK1); if (!stick.IsOk()) { - wxMessageBox("No joystick detected!"); + wxMessageBox(_T("No joystick detected!")); return FALSE; } #if wxUSE_WAVE - m_fire.Create("gun.wav"); + m_fire.Create(_T("gun.wav")); #endif // wxUSE_WAVE m_maxX = stick.GetXMax(); @@ -62,25 +62,25 @@ bool MyApp::OnInit() // Create the main frame window - frame = new MyFrame(NULL, "Joystick Demo", wxDefaultPosition, + frame = new MyFrame(NULL, _T("Joystick Demo"), wxDefaultPosition, wxSize(500, 400), wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL); // Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - frame->SetIcon(wxIcon("joyicon")); + frame->SetIcon(wxIcon(_T("joyicon"))); #endif #ifdef __X__ - frame->SetIcon(wxIcon("joyicon.xbm")); + frame->SetIcon(wxIcon(_T("joyicon.xbm"))); #endif // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(JOYTEST_QUIT, "&Exit"); + file_menu->Append(JOYTEST_QUIT, _T("&Exit")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -135,11 +135,11 @@ void MyCanvas::OnJoystickEvent(wxJoystickEvent& event) xpos = pt.x; ypos = pt.y; - char buf[100]; + wxString buf; if (event.ButtonDown()) - sprintf(buf, "Joystick (%d, %d) Fire!", pt.x, pt.y); + buf.Printf(_T("Joystick (%d, %d) Fire!"), pt.x, pt.y); else - sprintf(buf, "Joystick (%d, %d)", pt.x, pt.y); + buf.Printf(_T("Joystick (%d, %d)"), pt.x, pt.y); frame->SetStatusText(buf); diff --git a/samples/joytest/joytest.dsp b/samples/joytest/joytest.dsp index 7c78279668..8c2a4f4576 100644 --- a/samples/joytest/joytest.dsp +++ b/samples/joytest/joytest.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "joytest - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "joytest - Win32 Release" diff --git a/samples/joytest/makefile.wat b/samples/joytest/makefile.wat index 8d1fd19ea3..c54bff73ed 100644 --- a/samples/joytest/makefile.wat +++ b/samples/joytest/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for joytest example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = joytest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\joytest +# +PROGRAM = joytest +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/keyboard/keyboard.cpp b/samples/keyboard/keyboard.cpp index 479d539f4c..aca5749e2b 100644 --- a/samples/keyboard/keyboard.cpp +++ b/samples/keyboard/keyboard.cpp @@ -465,7 +465,8 @@ void TextWindow::LogEvent(const wxChar *name, wxKeyEvent& event) if ( keycode == 0 ) key.Printf(_T("NUL")); else if ( keycode < 27 ) - key.Printf(_T("Ctrl-%c"), _T('A') + keycode - 1); + key.Printf(_T("Ctrl-%c"), + (unsigned char)(_T('A') + keycode - 1)); else key.Printf(_T("'%c'"), (unsigned char)keycode); } @@ -488,8 +489,8 @@ void TextWindow::LogEvent(const wxChar *name, wxKeyEvent& event) if ( m_showRaw ) { msg += wxString::Format(_T(" (raw key code/flags: %lu and 0x%lx)"), - event.GetRawKeyCode(), - event.GetRawKeyFlags()); + (unsigned long)event.GetRawKeyCode(), + (unsigned long)event.GetRawKeyFlags()); } wxLogMessage(msg); diff --git a/samples/keyboard/keyboard.dsp b/samples/keyboard/keyboard.dsp index 4e8926962c..edcbdc362d 100644 --- a/samples/keyboard/keyboard.dsp +++ b/samples/keyboard/keyboard.dsp @@ -55,7 +55,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "keyboard - Win32 Debug DLL" @@ -81,7 +81,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "keyboard - Win32 Release" diff --git a/samples/keyboard/keyboard.rc b/samples/keyboard/keyboard.rc index 2b5e356d5f..b86c4e2265 100644 --- a/samples/keyboard/keyboard.rc +++ b/samples/keyboard/keyboard.rc @@ -1 +1 @@ -/* Placeholder so makefile doesn't complain */ +#include "wx/msw/wx.rc" diff --git a/samples/keyboard/makefile.wat b/samples/keyboard/makefile.wat index 1ccb77e514..5dc1c5ed57 100644 --- a/samples/keyboard/makefile.wat +++ b/samples/keyboard/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = keyboard -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\keyboard +# +PROGRAM = keyboard +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/layout/layout.cpp b/samples/layout/layout.cpp index c3bfb5e58d..c849af51ae 100644 --- a/samples/layout/layout.cpp +++ b/samples/layout/layout.cpp @@ -45,7 +45,7 @@ MyApp::MyApp() bool MyApp::OnInit() { // Create the main frame window - frame = new MyFrame((MyFrame *) NULL, (char *) "wxWindows Layout Demo", 0, 0, 550, 500); + frame = new MyFrame(NULL, _T("wxWindows Layout Demo"), -1, -1, 400, 300); frame->SetAutoLayout(TRUE); @@ -55,71 +55,64 @@ bool MyApp::OnInit() // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(LAYOUT_LOAD_FILE, "&Load file", "Load a text file"); - file_menu->Append(LAYOUT_TEST_SIZER, "&Test sizers", "Test sizer"); - file_menu->Append(LAYOUT_TEST_NB, "&Test notebook sizers", "Test notebook sizer"); + file_menu->Append(LAYOUT_TEST_SIZER, _T("&Test sizers"), _T("Test sizer")); + file_menu->Append(LAYOUT_TEST_NB, _T("&Test notebook sizers"), _T("Test notebook sizer")); file_menu->AppendSeparator(); - file_menu->Append(LAYOUT_QUIT, "E&xit", "Quit program"); + file_menu->Append(LAYOUT_QUIT, _T("E&xit"), _T("Quit program")); wxMenu *help_menu = new wxMenu; - help_menu->Append(LAYOUT_ABOUT, "&About", "About layout demo"); + help_menu->Append(LAYOUT_ABOUT, _T("&About"), _T("About layout demo")); menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); // Make a panel - frame->panel = new wxPanel(frame, 0, 0, 1000, 500, wxTAB_TRAVERSAL); - frame->panel->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)); -// frame->panel->SetAutoLayout(TRUE); + wxPanel *panel = new wxPanel(frame); // Create some panel items - wxButton *btn1 = new wxButton(frame->panel, -1, "A button (1)") ; + wxButton *btn1 = new wxButton(panel, -1, _T("A button (1)")) ; wxLayoutConstraints *b1 = new wxLayoutConstraints; - b1->centreX.SameAs (frame->panel, wxCentreX); - b1->top.SameAs (frame->panel, wxTop, 5); - b1->width.PercentOf (frame->panel, wxWidth, 80); - b1->height.PercentOf (frame->panel, wxHeight, 10); + b1->centreX.SameAs (panel, wxCentreX); + b1->top.SameAs (panel, wxTop, 5); + b1->width.PercentOf (panel, wxWidth, 80); + b1->height.AsIs (); btn1->SetConstraints(b1); - wxListBox *list = new wxListBox(frame->panel, -1, + wxListBox *list = new wxListBox(panel, -1, wxPoint(-1, -1), wxSize(200, 100)); - list->Append("Apple"); - list->Append("Pear"); - list->Append("Orange"); - list->Append("Banana"); - list->Append("Fruit"); + list->Append(_T("Apple")); + list->Append(_T("Pear")); + list->Append(_T("Orange")); + list->Append(_T("Banana")); + list->Append(_T("Fruit")); wxLayoutConstraints *b2 = new wxLayoutConstraints; b2->top.Below (btn1, 5); - b2->left.SameAs (frame->panel, wxLeft, 5); - b2->width.PercentOf (frame->panel, wxWidth, 40); - b2->bottom.SameAs (frame->panel, wxBottom, 5); + b2->left.SameAs (panel, wxLeft, 5); + b2->width.PercentOf (panel, wxWidth, 40); + b2->bottom.SameAs (panel, wxBottom, 5); list->SetConstraints(b2); - wxTextCtrl *mtext = new wxTextCtrl(frame->panel, -1, "Some text", - wxPoint(-1, -1), wxSize(150, 100)); + wxTextCtrl *mtext = new wxTextCtrl(panel, -1, _T("Some text")); wxLayoutConstraints *b3 = new wxLayoutConstraints; b3->top.Below (btn1, 5); b3->left.RightOf (list, 5); - b3->right.SameAs (frame->panel, wxRight, 5); - b3->bottom.SameAs (frame->panel, wxBottom, 5); + b3->right.SameAs (panel, wxRight, 5); + b3->bottom.SameAs (panel, wxBottom, 5); mtext->SetConstraints(b3); - frame->canvas = new MyWindow(frame, 0, 0, 400, 400, wxRETAINED); - - // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction -// canvas->SetScrollbars(20, 20, 50, 50, 4, 4); + MyWindow *canvas = new MyWindow(frame, 0, 0, 400, 400, wxRETAINED); // Make a text window - frame->text_window = new MyTextWindow(frame, 0, 250, 400, 250); + MyTextWindow *text_window = new MyTextWindow(frame, 0, 250, 400, 150); // Set constraints for panel subwindow wxLayoutConstraints *c1 = new wxLayoutConstraints; @@ -129,32 +122,33 @@ bool MyApp::OnInit() c1->right.PercentOf (frame, wxWidth, 50); c1->height.PercentOf (frame, wxHeight, 50); - frame->panel->SetConstraints(c1); + panel->SetConstraints(c1); // Set constraints for canvas subwindow wxLayoutConstraints *c2 = new wxLayoutConstraints; - c2->left.SameAs (frame->panel, wxRight); + c2->left.SameAs (panel, wxRight); c2->top.SameAs (frame, wxTop); c2->right.SameAs (frame, wxRight); c2->height.PercentOf (frame, wxHeight, 50); - frame->canvas->SetConstraints(c2); + canvas->SetConstraints(c2); // Set constraints for text subwindow wxLayoutConstraints *c3 = new wxLayoutConstraints; c3->left.SameAs (frame, wxLeft); - c3->top.Below (frame->panel); + c3->top.Below (panel); c3->right.SameAs (frame, wxRight); c3->bottom.SameAs (frame, wxBottom); - frame->text_window->SetConstraints(c3); + text_window->SetConstraints(c3); frame->Show(TRUE); - frame->SetStatusText("wxWindows layout demo"); + frame->SetStatusText(_T("wxWindows layout demo")); SetTopWindow(frame); + return TRUE; } @@ -163,49 +157,32 @@ bool MyApp::OnInit() //----------------------------------------------------------------- // Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) +MyFrame::MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h) + : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) { - panel = (wxPanel *) NULL; - text_window = (MyTextWindow *) NULL; - canvas = (MyWindow *) NULL; } BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(LAYOUT_LOAD_FILE, MyFrame::LoadFile) - EVT_MENU(LAYOUT_QUIT, MyFrame::Quit) + EVT_MENU(LAYOUT_QUIT, MyFrame::OnQuit) EVT_MENU(LAYOUT_TEST_SIZER, MyFrame::TestSizers) EVT_MENU(LAYOUT_TEST_NB, MyFrame::TestNotebookSizers) EVT_MENU(LAYOUT_ABOUT, MyFrame::About) - EVT_SIZE(MyFrame::OnSize) END_EVENT_TABLE() -void MyFrame::LoadFile(wxCommandEvent& WXUNUSED(event) ) +void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) { - wxString s = wxFileSelector( _T("Load text file"), (const wxChar *) NULL, - (const wxChar *) NULL, (const wxChar *) NULL, _T("*.txt") ); - if (s != "") - { -#ifdef __WXMSW__ - frame->text_window->LoadFile(s); -#endif - } -} - -void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) ) -{ - this->Close(TRUE); + Close(TRUE); } void MyFrame::TestSizers(wxCommandEvent& WXUNUSED(event) ) { - MySizerFrame *newFrame = new MySizerFrame((MyFrame *) NULL, "Sizer Test Frame", 50, 50 ); + MySizerFrame *newFrame = new MySizerFrame(NULL, _T("Sizer Test Frame"), 50, 50); newFrame->Show(TRUE); } void MyFrame::TestNotebookSizers(wxCommandEvent& WXUNUSED(event) ) { - wxDialog dialog( this, -1, wxString("Notebook Sizer Test Dialog") ); + wxDialog dialog( this, -1, wxString(_T("Notebook Sizer Test Dialog")) ); // Begin with first hierarchy: a notebook at the top and // and OK button at the bottom. @@ -216,24 +193,24 @@ void MyFrame::TestNotebookSizers(wxCommandEvent& WXUNUSED(event) ) wxNotebookSizer *nbs = new wxNotebookSizer( notebook ); topsizer->Add( nbs, 1, wxGROW ); - wxButton *button = new wxButton( &dialog, wxID_OK, "OK" ); + wxButton *button = new wxButton( &dialog, wxID_OK, _T("OK") ); topsizer->Add( button, 0, wxALIGN_RIGHT | wxALL, 10 ); // First page: one big text ctrl - wxTextCtrl *multi = new wxTextCtrl( notebook, -1, "TextCtrl.", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); - notebook->AddPage( multi, "Page One" ); + wxTextCtrl *multi = new wxTextCtrl( notebook, -1, _T("TextCtrl."), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + notebook->AddPage( multi, _T("Page One") ); // Second page: a text ctrl and a button wxPanel *panel = new wxPanel( notebook, -1 ); - notebook->AddPage( panel, "Page Two" ); + notebook->AddPage( panel, _T("Page Two") ); wxSizer *panelsizer = new wxBoxSizer( wxVERTICAL ); - wxTextCtrl *text = new wxTextCtrl( panel, -1, "TextLine 1.", wxDefaultPosition, wxSize(250,-1) ); + wxTextCtrl *text = new wxTextCtrl( panel, -1, _T("TextLine 1."), wxDefaultPosition, wxSize(250,-1) ); panelsizer->Add( text, 0, wxGROW|wxALL, 30 ); - text = new wxTextCtrl( panel, -1, "TextLine 2.", wxDefaultPosition, wxSize(250,-1) ); + text = new wxTextCtrl( panel, -1, _T("TextLine 2."), wxDefaultPosition, wxSize(250,-1) ); panelsizer->Add( text, 0, wxGROW|wxALL, 30 ); - wxButton *button2 = new wxButton( panel, -1, "Hallo" ); + wxButton *button2 = new wxButton( panel, -1, _T("Hallo") ); panelsizer->Add( button2, 0, wxALIGN_RIGHT | wxLEFT|wxRIGHT|wxBOTTOM, 30 ); panel->SetAutoLayout( TRUE ); @@ -252,18 +229,32 @@ void MyFrame::TestNotebookSizers(wxCommandEvent& WXUNUSED(event) ) void MyFrame::About(wxCommandEvent& WXUNUSED(event) ) { - (void)wxMessageBox("wxWindows GUI library layout demo\n", - "About Layout Demo", wxOK|wxCENTRE); + (void)wxMessageBox(_T("wxWindows GUI library layout demo\n"), + _T("About Layout Demo"), wxOK|wxCENTRE); } -// Size the subwindows when the frame is resized -void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event) ) +//----------------------------------------------------------------- +// MyWindow +//----------------------------------------------------------------- + +BEGIN_EVENT_TABLE(MyWindow, wxWindow) + EVT_PAINT(MyWindow::OnPaint) +END_EVENT_TABLE() + +// Define a constructor for my canvas +MyWindow::MyWindow(wxFrame *frame, int x, int y, int w, int h, long style) + : wxWindow(frame, -1, wxPoint(x, y), wxSize(w, h), style) { - Layout(); } -void MyFrame::Draw(wxDC& dc, bool WXUNUSED(draw_bitmaps) ) +MyWindow::~MyWindow() { +} + +// Define the repainting behaviour +void MyWindow::OnPaint(wxPaintEvent& WXUNUSED(event) ) +{ + wxPaintDC dc(this); dc.SetPen(* wxGREEN_PEN); dc.DrawLine(0, 0, 200, 200); dc.DrawLine(200, 0, 0, 200); @@ -284,37 +275,12 @@ void MyFrame::Draw(wxDC& dc, bool WXUNUSED(draw_bitmaps) ) dc.DrawArc(50, 300, 100, 250, 100, 300 ); } -//----------------------------------------------------------------- -// MyWindow -//----------------------------------------------------------------- - -BEGIN_EVENT_TABLE(MyWindow, wxWindow) - EVT_PAINT(MyWindow::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyWindow::MyWindow(wxFrame *frame, int x, int y, int w, int h, long style): - wxWindow(frame, -1, wxPoint(x, y), wxSize(w, h), style) -{ -} - -MyWindow::~MyWindow() -{ -} - -// Define the repainting behaviour -void MyWindow::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - frame->Draw(dc,TRUE); -} - //----------------------------------------------------------------- // MySizerFrame //----------------------------------------------------------------- -MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): - wxFrame(frame, -1, title, wxPoint(x, y) ) +MySizerFrame::MySizerFrame(wxFrame *frame, wxChar *title, int x, int y ) + : wxFrame(frame, -1, title, wxPoint(x, y) ) { // we want to get a dialog that is stretchable because it // has a text ctrl in the middle. at the bottom, we have @@ -324,7 +290,7 @@ MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): // 1) top: create wxStaticText with minimum size equal to its default size topsizer->Add( - new wxStaticText( this, -1, "An explanation (wxALIGN_RIGHT)." ), + new wxStaticText( this, -1, _T("An explanation (wxALIGN_RIGHT).") ), 0, // make vertically unstretchable wxALIGN_RIGHT | // right align text wxTOP | wxLEFT | wxRIGHT, // make border all around except wxBOTTOM @@ -332,7 +298,7 @@ MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): // 2) top: create wxTextCtrl with minimum size (100x60) topsizer->Add( - new wxTextCtrl( this, -1, "My text (wxEXPAND).", wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE), + new wxTextCtrl( this, -1, _T("My text (wxEXPAND)."), wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE), 1, // make vertically stretchable wxEXPAND | // make horizontally stretchable wxALL, // and make border all around @@ -340,10 +306,10 @@ MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): // 2.5) Gratuitous test of wxStaticBoxSizers wxBoxSizer *statsizer = new wxStaticBoxSizer( - new wxStaticBox(this, -1, "A wxStaticBoxSizer"), + new wxStaticBox(this, -1, _T("A wxStaticBoxSizer")), wxVERTICAL ); statsizer->Add( - new wxStaticText(this, -1, "And some TEXT inside it"), + new wxStaticText(this, -1, _T("And some TEXT inside it")), 0, wxCENTER | wxALL, @@ -352,17 +318,17 @@ MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): // 2.7) And a test of wxGridSizer wxGridSizer *gridsizer = new wxGridSizer(2, 5, 5); - gridsizer->Add(new wxStaticText(this, -1, "Label"), 0, + gridsizer->Add(new wxStaticText(this, -1, _T("Label")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, -1, "Grid sizer demo"), 1, + gridsizer->Add(new wxTextCtrl(this, -1, _T("Grid sizer demo")), 1, wxGROW | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxStaticText(this, -1, "Another label"), 0, + gridsizer->Add(new wxStaticText(this, -1, _T("Another label")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, -1, "More text"), 1, + gridsizer->Add(new wxTextCtrl(this, -1, _T("More text")), 1, wxGROW | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxStaticText(this, -1, "Final label"), 0, + gridsizer->Add(new wxStaticText(this, -1, _T("Final label")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); - gridsizer->Add(new wxTextCtrl(this, -1, "And yet more text"), 1, + gridsizer->Add(new wxTextCtrl(this, -1, _T("And yet more text")), 1, wxGROW | wxALIGN_CENTER_VERTICAL); topsizer->Add(gridsizer, 1, wxGROW | wxALL, 10); @@ -379,12 +345,12 @@ MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): // 4) bottom: create two centred wxButtons wxBoxSizer *button_box = new wxBoxSizer( wxHORIZONTAL ); button_box->Add( - new wxButton( this, -1, "Two buttons in a box" ), + new wxButton( this, -1, _T("Two buttons in a box") ), 0, // make horizontally unstretchable wxALL, // make border all around 7 ); // set border width to 7 button_box->Add( - new wxButton( this, -1, "(wxCENTER)" ), + new wxButton( this, -1, _T("(wxCENTER)") ), 0, // make horizontally unstretchable wxALL, // make border all around 7 ); // set border width to 7 @@ -394,12 +360,8 @@ MySizerFrame::MySizerFrame(wxFrame *frame, char *title, int x, int y ): 0, // make vertically unstretchable wxCENTER ); // no border and centre horizontally - SetAutoLayout( TRUE ); - - // set frame to minimum size - topsizer->Fit( this ); - - // don't allow frame to get smaller than what the sizers tell ye + // don't allow frame to get smaller than what the sizers tell it and also set + // the initial size as calculated by the sizers topsizer->SetSizeHints( this ); SetSizer( topsizer ); diff --git a/samples/layout/layout.dsp b/samples/layout/layout.dsp index ea1fab9559..93332c35b6 100644 --- a/samples/layout/layout.dsp +++ b/samples/layout/layout.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "layout - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "layout - Win32 Release" diff --git a/samples/layout/layout.h b/samples/layout/layout.h index eba0332e16..8a54f6f63d 100644 --- a/samples/layout/layout.h +++ b/samples/layout/layout.h @@ -24,15 +24,10 @@ class MyWindow; class MyFrame: public wxFrame { public: - wxPanel *panel; - MyTextWindow *text_window; - MyWindow *canvas; - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - void OnSize(wxSizeEvent& event); - void Draw(wxDC& dc, bool draw_bitmaps = TRUE); + MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h); + + void OnQuit(wxCommandEvent& event); - void LoadFile(wxCommandEvent& event); - void Quit(wxCommandEvent& event); void TestSizers(wxCommandEvent& event); void TestNotebookSizers(wxCommandEvent& event); void About(wxCommandEvent& event); @@ -47,7 +42,7 @@ class MyTextWindow: public wxTextCtrl public: MyTextWindow(wxFrame *frame, int x=-1, int y=-1, int width=-1, int height=-1, long style=wxTE_MULTILINE): - wxTextCtrl(frame, -1, "", wxPoint(x, y), wxSize(width, height), style) + wxTextCtrl(frame, -1, _T(""), wxPoint(x, y), wxSize(width, height), style) { } @@ -61,7 +56,7 @@ public: ~MyWindow(); void OnPaint(wxPaintEvent& event); -private: +private: DECLARE_EVENT_TABLE() }; @@ -69,12 +64,11 @@ class MySizerFrame: public wxFrame { public: wxPanel *panel; - MySizerFrame(wxFrame *frame, char *title, int x, int y ); + MySizerFrame(wxFrame *frame, wxChar *title, int x, int y ); }; #define LAYOUT_QUIT 100 #define LAYOUT_TEST 101 #define LAYOUT_ABOUT 102 -#define LAYOUT_LOAD_FILE 103 #define LAYOUT_TEST_SIZER 104 #define LAYOUT_TEST_NB 105 diff --git a/samples/layout/makefile.wat b/samples/layout/makefile.wat index a4b3f2e8f9..f4392090f5 100644 --- a/samples/layout/makefile.wat +++ b/samples/layout/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = layout -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\layout +# +PROGRAM = layout +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/listbox/makefile.b32 b/samples/listbox/makefile.b32 new file mode 100644 index 0000000000..d74dde8c50 --- /dev/null +++ b/samples/listbox/makefile.b32 @@ -0,0 +1,16 @@ +# +# File: makefile.b32 +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: +# +# Makefile : Builds sample for 32-bit BC++ + +WXDIR = $(WXWIN) + +TARGET=lboxtest +OBJECTS = $(TARGET).obj + +!include $(WXDIR)\src\makeprog.b32 + diff --git a/samples/listctrl/listctrl.dsp b/samples/listctrl/listctrl.dsp index 3705b62a9e..9093c4acf1 100644 --- a/samples/listctrl/listctrl.dsp +++ b/samples/listctrl/listctrl.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "listctrl - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "listctrl - Win32 Release" diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index 9d81a24486..c79e252863 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -117,7 +117,9 @@ static const int NUM_ICONS = 9; int wxCALLBACK MyCompareFunction(long item1, long item2, long sortData) { // inverse the order - return item1 < item2; + if (item1 < item2) return -1; + if (item1 > item2) return 1; + return 0; } // `Main program' equivalent, creating windows and returning main app frame @@ -149,17 +151,17 @@ MyFrame::MyFrame(const wxChar *title, int x, int y, int w, int h) m_imageListSmall = new wxImageList(16, 16, TRUE); #ifdef __WXMSW__ - m_imageListNormal->Add( wxIcon("icon1", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon2", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon3", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon4", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon5", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon6", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon7", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon8", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon9", wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon1"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon2"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon3"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon4"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon5"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon6"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon7"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon8"), wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListNormal->Add( wxIcon(_T("icon9"), wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListSmall->Add( wxIcon("iconsmall", wxBITMAP_TYPE_ICO_RESOURCE) ); + m_imageListSmall->Add( wxIcon(_T("iconsmall"), wxBITMAP_TYPE_ICO_RESOURCE) ); #else m_imageListNormal->Add( wxIcon( toolbrai_xpm ) ); @@ -223,7 +225,8 @@ MyFrame::MyFrame(const wxChar *title, int x, int y, int w, int h) menubar->Append(menuCol, _T("&Colour")); SetMenuBar(menubar); - m_logWindow = new wxTextCtrl(this, -1, wxEmptyString, + m_panel = new wxPanel(this, -1); + m_logWindow = new wxTextCtrl(m_panel, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER); @@ -328,7 +331,7 @@ void MyFrame::RecreateList(long flags, bool withText) { delete m_listCtrl; - m_listCtrl = new MyListCtrl(this, LIST_CTRL, + m_listCtrl = new MyListCtrl(m_panel, LIST_CTRL, wxDefaultPosition, wxDefaultSize, flags | wxSUNKEN_BORDER | wxLC_EDIT_LABELS); @@ -658,19 +661,30 @@ void MyListCtrl::OnColRightClick(wxListEvent& event) wxLogMessage( wxT("OnColumnRightClick at %d."), event.GetColumn() ); } +void MyListCtrl::LogColEvent(const wxListEvent& event, const wxChar *name) +{ + const int col = event.GetColumn(); + + wxLogMessage(wxT("%s: column %d (width = %d or %d)."), + name, + col, + event.GetItem().GetWidth(), + GetColumnWidth(col)); +} + void MyListCtrl::OnColBeginDrag(wxListEvent& event) { - wxLogMessage( wxT("OnColBeginDrag: column %d."), event.GetColumn() ); + LogColEvent( event, wxT("OnColBeginDrag") ); } void MyListCtrl::OnColDragging(wxListEvent& event) { - wxLogMessage( wxT("OnColDragging: column %d."), event.GetColumn() ); + LogColEvent( event, wxT("OnColDragging") ); } void MyListCtrl::OnColEndDrag(wxListEvent& event) { - wxLogMessage( wxT("OnColEndDrag: column %d."), event.GetColumn() ); + LogColEvent( event, wxT("OnColEndDrag") ); } void MyListCtrl::OnBeginDrag(wxListEvent& event) diff --git a/samples/listctrl/listtest.h b/samples/listctrl/listtest.h index a887cdb29e..a86724980d 100644 --- a/samples/listctrl/listtest.h +++ b/samples/listctrl/listtest.h @@ -58,6 +58,7 @@ private: void SetColumnImage(int col, int image); void LogEvent(const wxListEvent& event, const wxChar *eventName); + void LogColEvent(const wxListEvent& event, const wxChar *eventName); virtual wxString OnGetItemText(long item, long column) const; virtual int OnGetItemImage(long item) const; @@ -72,13 +73,10 @@ private: class MyFrame: public wxFrame { public: - MyListCtrl *m_listCtrl; - wxTextCtrl *m_logWindow; - MyFrame(const wxChar *title, int x, int y, int w, int h); ~MyFrame(); -public: +protected: void OnSize(wxSizeEvent& event); void OnQuit(wxCommandEvent& event); @@ -113,6 +111,10 @@ public: wxImageList *m_imageListNormal; wxImageList *m_imageListSmall; + wxPanel *m_panel; + MyListCtrl *m_listCtrl; + wxTextCtrl *m_logWindow; + private: // recreate the list control with the new flags void RecreateList(long flags, bool withText = TRUE); diff --git a/samples/listctrl/makefile.wat b/samples/listctrl/makefile.wat index 8edb3a5682..6387d6914a 100644 --- a/samples/listctrl/makefile.wat +++ b/samples/listctrl/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = listtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\listctrl +# +PROGRAM = listtest +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/makefile.b32 b/samples/makefile.b32 index de856f954e..68f473e489 100644 --- a/samples/makefile.b32 +++ b/samples/makefile.b32 @@ -19,166 +19,185 @@ THISDIR=$(WXDIR)\samples # # Indicates kind of pb with samples # -# No makefile.vc file -NOMAKE=1 -# No 16 bit version -#ONLY32=1 + # Misc. compilation errors COMPIL=1 -# Need PNG -PNGSETUP= # Need wxUSE_ODBC; define this to compile db sample ODBCSETUP= -WXUSINGDLL=0 +!if "$(WXUSINGDLL)" == "" +WXUSINGDLL=0 +!endif + +!if "$(FINAL)" == "" +FINAL=0 +!endif + + +# $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +# cd $(WXDIR)\samples\console # # Please keep samples list up-to-date, in alphabetical order # not alphabetically organised ; 29 Nov 01 all: - cd $(WXDIR)\samples\artprov - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\calendar - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\caret - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\checklst - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\config - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\controls - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\artprov + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\calendar + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\caret + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\checklst + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\config + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\controls !if "$(ODBCSETUP)"=="1" - cd $(WXDIR)\samples\db - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\db !endif - cd $(WXDIR)\samples\ipc - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\dialogs - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\dnd - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\docview - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\docvwmdi - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\drawing - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\dynamic - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\font - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\grid - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\newgrid - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - - cd $(WXDIR)\samples\help - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - -!if "$(PNGSETUP)"=="" - cd $(WXDIR)\samples\html - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\dialogs + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\dialup + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) !endif - cd $(WXDIR)\samples\keyboard - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\image - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\internat - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\joytest - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\layout - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\listctrl - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\mdi - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\menu - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) -!if "$(FINAL)" == "0" - cd $(WXDIR)\samples\memcheck - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\dnd + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\docview + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\docvwmdi + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\dragimag + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\drawing + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\dynamic + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\erase + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\event + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\exec + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\font + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\grid + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\help + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\html + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\image + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\internat + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\ipc + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\joytest + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\keyboard + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\layout + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\listbox + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) !endif -!if "$(COMPIL)"=="" - cd $(WXDIR)\samples\mfc - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\listctrl + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\mdi + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\memcheck + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) !endif - cd $(WXDIR)\samples\minifram - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\minimal - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\nativdlg - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) -!if "$(COMPIL)"=="" - cd $(WXDIR)\samples\dialup - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\menu + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\mfc + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) !endif - cd $(WXDIR)\samples\notebook - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\oleauto - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\ownerdrw - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\png - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\printing - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\proplist - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\regtest - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\resource - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\rotate - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\sashtest - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\scroll - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\scrollsub - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\splitter - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) -!if "$(COMPIL)"=="" - cd $(WXDIR)\samples\tab - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\minifram + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\minimal + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\mobile + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) !endif - cd $(WXDIR)\samples\taskbar - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\text - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\thread - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\toolbar - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\treectrl - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\typetest - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\validate - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\wizard - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\dragimag - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\exec - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\statbar - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\sockets - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\widgets - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\tab - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\treelay - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\erase - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\event - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) - cd $(WXDIR)\samples\propsize - make -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\nativdlg + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\newgrid + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\notebook + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\oleauto + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\opengl + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!endif + cd $(WXDIR)\samples\ownerdrw + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\png + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\printing + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\proplist + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!endif + cd $(WXDIR)\samples\propsize + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\regtest + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\resource + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!endif + cd $(WXDIR)\samples\richedit + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\rotate + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\sashtest + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\scroll + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\scrollsub + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\sockets + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\splitter + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\statbar + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!if "$(COMPIL)" != "1" + cd $(WXDIR)\samples\tab + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) +!endif + cd $(WXDIR)\samples\taskbar + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\text + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\thread + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\toolbar + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\treectrl + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\treelay + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\typetest + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\validate + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\widgets + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\wizard + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + cd $(WXDIR)\samples\wxtest + $(MAKE) -f makefile.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) clean: cd $(WXDIR)\samples\artprov diff --git a/samples/makefile.g95 b/samples/makefile.g95 index 8bd8c65b77..8258547895 100644 --- a/samples/makefile.g95 +++ b/samples/makefile.g95 @@ -15,9 +15,7 @@ WXDIR = .. THISDIR=$(WXDIR)/samples -MAKEFILE=makefile.g95 -MAKEFLAGS=WXUSINGDLL=$(WXUSINGDLL) UNICODE=$(UNICODE) -CMDLINE=-f $(MAKEFILE) $(MAKEFLAGS) +CMDLINE=-fmakefile.g95 WXUSINGDLL='$(WXUSINGDLL)' UNICODE='$(UNICODE)' # Mingw make may not have a shell to use, so can't use a loop here. Sigh. # Please add new sample directories alphabetically to make it easier to diff --git a/samples/mdi/makefile.wat b/samples/mdi/makefile.wat index 8df592246e..548d81fe60 100644 --- a/samples/mdi/makefile.wat +++ b/samples/mdi/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = mdi -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\mdi +# +PROGRAM = mdi +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/mdi/mdi.cpp b/samples/mdi/mdi.cpp index e5833ef4e8..a915f7fffb 100644 --- a/samples/mdi/mdi.cpp +++ b/samples/mdi/mdi.cpp @@ -109,21 +109,21 @@ bool MyApp::OnInit() { // Create the main frame window - frame = new MyFrame((wxFrame *)NULL, -1, "MDI Demo", + frame = new MyFrame((wxFrame *)NULL, -1, _T("MDI Demo"), wxPoint(-1, -1), wxSize(500, 400), wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL); #ifdef __WXMSW__ #if 0 // Experimental: change the window menu wxMenu* windowMenu = new wxMenu; - windowMenu->Append(5000, "My menu item!"); + windowMenu->Append(5000, _T("My menu item!")); frame->SetWindowMenu(windowMenu); #endif #endif // Give it an icon #ifdef __WXMSW__ - frame->SetIcon(wxIcon("mdi_icn")); + frame->SetIcon(wxIcon(_T("mdi_icn"))); #else frame->SetIcon(wxIcon( mondrian_xpm )); #endif @@ -131,16 +131,16 @@ bool MyApp::OnInit() // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(MDI_NEW_WINDOW, "&New window\tCtrl-N", "Create a new child window"); - file_menu->Append(MDI_QUIT, "&Exit\tAlt-X", "Quit the program"); + file_menu->Append(MDI_NEW_WINDOW, _T("&New window\tCtrl-N"), _T("Create a new child window")); + file_menu->Append(MDI_QUIT, _T("&Exit\tAlt-X"), _T("Quit the program")); wxMenu *help_menu = new wxMenu; - help_menu->Append(MDI_ABOUT, "&About\tF1"); + help_menu->Append(MDI_ABOUT, _T("&About\tF1")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -168,7 +168,7 @@ MyFrame::MyFrame(wxWindow *parent, : wxMDIParentFrame(parent, id, title, pos, size, style | wxNO_FULL_REPAINT_ON_RESIZE) { - textWindow = new wxTextCtrl(this, -1, "A help window", + textWindow = new wxTextCtrl(this, -1, _T("A help window"), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER); @@ -190,7 +190,7 @@ void MyFrame::OnClose(wxCloseEvent& event) { wxString msg; msg.Printf(_T("%d windows still open, close anyhow?"), gs_nFrames); - if ( wxMessageBox(msg, "Please confirm", + if ( wxMessageBox(msg, _T("Please confirm"), wxICON_QUESTION | wxYES_NO) != wxYES ) { event.Veto(); @@ -209,15 +209,15 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - (void)wxMessageBox("wxWindows 2.0 MDI Demo\n" - "Author: Julian Smart (c) 1997\n" - "Usage: mdi.exe", "About MDI Demo"); + (void)wxMessageBox(_T("wxWindows 2.0 MDI Demo\n") + _T("Author: Julian Smart (c) 1997\n") + _T("Usage: mdi.exe"), _T("About MDI Demo")); } void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ) { // Make another frame, containing a canvas - MyChild *subframe = new MyChild(frame, "Canvas Frame", + MyChild *subframe = new MyChild(frame, _T("Canvas Frame"), wxPoint(-1, -1), wxSize(-1, -1), wxDEFAULT_FRAME_STYLE); @@ -228,7 +228,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ) // Give it an icon #ifdef __WXMSW__ - subframe->SetIcon(wxIcon("chrt_icn")); + subframe->SetIcon(wxIcon(_T("chrt_icn"))); #else subframe->SetIcon(wxIcon( mondrian_xpm )); #endif @@ -236,26 +236,26 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(MDI_NEW_WINDOW, "&New window"); - file_menu->Append(MDI_CHILD_QUIT, "&Close child", "Close this window"); - file_menu->Append(MDI_QUIT, "&Exit"); + file_menu->Append(MDI_NEW_WINDOW, _T("&New window")); + file_menu->Append(MDI_CHILD_QUIT, _T("&Close child"), _T("Close this window")); + file_menu->Append(MDI_QUIT, _T("&Exit")); wxMenu *option_menu = new wxMenu; - option_menu->Append(MDI_REFRESH, "&Refresh picture"); - option_menu->Append(MDI_CHANGE_TITLE, "Change &title...\tCtrl-T"); + option_menu->Append(MDI_REFRESH, _T("&Refresh picture")); + option_menu->Append(MDI_CHANGE_TITLE, _T("Change &title...\tCtrl-T")); option_menu->AppendSeparator(); - option_menu->Append(MDI_CHANGE_POSITION, "Move frame\tCtrl-M"); - option_menu->Append(MDI_CHANGE_SIZE, "Resize frame\tCtrl-S"); + option_menu->Append(MDI_CHANGE_POSITION, _T("Move frame\tCtrl-M")); + option_menu->Append(MDI_CHANGE_SIZE, _T("Resize frame\tCtrl-S")); wxMenu *help_menu = new wxMenu; - help_menu->Append(MDI_ABOUT, "&About"); + help_menu->Append(MDI_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(option_menu, "&Child"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(option_menu, _T("&Child")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame subframe->SetMenuBar(menu_bar); @@ -286,7 +286,7 @@ void MyFrame::OnSize(wxSizeEvent& event) // FIXME: On wxX11, we need the MDI frame to process this // event, but on other platforms this should not // be done. -#ifdef __WXX11__ +#ifdef __WXUNIVERSAL__ event.Skip(); #endif } @@ -307,24 +307,24 @@ void MyFrame::InitToolBar(wxToolBar* toolBar) int width = 24; int currentX = 5; - toolBar->AddTool( MDI_NEW_WINDOW, *(bitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "New file"); + toolBar->AddTool( MDI_NEW_WINDOW, *(bitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("New file")); currentX += width + 5; - toolBar->AddTool(1, *bitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file"); + toolBar->AddTool(1, *bitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Open file")); currentX += width + 5; - toolBar->AddTool(2, *bitmaps[2], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); + toolBar->AddTool(2, *bitmaps[2], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Save file")); currentX += width + 5; toolBar->AddSeparator(); - toolBar->AddTool(3, *bitmaps[3], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Copy"); + toolBar->AddTool(3, *bitmaps[3], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Copy")); currentX += width + 5; - toolBar->AddTool(4, *bitmaps[4], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Cut"); + toolBar->AddTool(4, *bitmaps[4], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Cut")); currentX += width + 5; - toolBar->AddTool(5, *bitmaps[5], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); + toolBar->AddTool(5, *bitmaps[5], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Paste")); currentX += width + 5; toolBar->AddSeparator(); - toolBar->AddTool(6, *bitmaps[6], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print"); + toolBar->AddTool(6, *bitmaps[6], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Print")); currentX += width + 5; toolBar->AddSeparator(); - toolBar->AddTool(7, *bitmaps[7], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, "Help"); + toolBar->AddTool(7, *bitmaps[7], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, _T("Help")); toolBar->Realize(); @@ -344,7 +344,7 @@ MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size) wxNO_FULL_REPAINT_ON_RESIZE | wxVSCROLL | wxHSCROLL) { - SetBackgroundColour(wxColour("WHITE")); + SetBackgroundColour(wxColour(_T("WHITE"))); m_dirty = FALSE; } @@ -367,7 +367,7 @@ void MyCanvas::OnDraw(wxDC& dc) dc.DrawSpline(50, 200, 50, 100, 200, 10); #endif // wxUSE_SPLINES dc.DrawLine(50, 230, 200, 230); - dc.DrawText("This is a test string", 50, 230); + dc.DrawText(_T("This is a test string"), 50, 230); wxPoint points[3]; points[0].x = 200; points[0].y = 300; @@ -443,6 +443,7 @@ void MyChild::OnChangeSize(wxCommandEvent& WXUNUSED(event)) void MyChild::OnChangeTitle(wxCommandEvent& WXUNUSED(event)) { +//#if wxUSE_TEXTDLG static wxString s_title = _T("Canvas Frame"); wxString title = wxGetTextFromUser(_T("Enter the new title for MDI child"), @@ -454,6 +455,7 @@ void MyChild::OnChangeTitle(wxCommandEvent& WXUNUSED(event)) s_title = title; SetTitle(s_title); +//#endif } void MyChild::OnActivate(wxActivateEvent& event) @@ -493,7 +495,7 @@ void MyChild::OnClose(wxCloseEvent& event) { if ( canvas && canvas->IsDirty() ) { - if ( wxMessageBox("Really close?", "Please confirm", + if ( wxMessageBox(_T("Really close?"), _T("Please confirm"), wxICON_QUESTION | wxYES_NO) != wxYES ) { event.Veto(); diff --git a/samples/mdi/mdi.dsp b/samples/mdi/mdi.dsp index f3aa527a24..8166372c5f 100644 --- a/samples/mdi/mdi.dsp +++ b/samples/mdi/mdi.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "mdi - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "mdi - Win32 Release" diff --git a/samples/memcheck/makefile.wat b/samples/memcheck/makefile.wat index abc4235cea..064fb756ad 100644 --- a/samples/memcheck/makefile.wat +++ b/samples/memcheck/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = memcheck -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\memcheck +# +PROGRAM = memcheck +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/memcheck/memcheck.dsp b/samples/memcheck/memcheck.dsp index 194fb12bbd..e2ada552f1 100644 --- a/samples/memcheck/memcheck.dsp +++ b/samples/memcheck/memcheck.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "memcheck - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "memcheck - Win32 Release" diff --git a/samples/menu/makefile.wat b/samples/menu/makefile.wat index f8a70f9ad5..f87c410583 100644 --- a/samples/menu/makefile.wat +++ b/samples/menu/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = menu -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\menu +# +PROGRAM = menu +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/menu/menu.cpp b/samples/menu/menu.cpp index ef1ee21bf5..d50077805c 100644 --- a/samples/menu/menu.cpp +++ b/samples/menu/menu.cpp @@ -274,7 +274,7 @@ bool MyApp::OnInit() frame->Show(TRUE); #if wxUSE_STATUSBAR - frame->SetStatusText("Welcome to wxWindows menu sample"); + frame->SetStatusText(_T("Welcome to wxWindows menu sample")); #endif // wxUSE_STATUSBAR SetTopWindow(frame); @@ -288,7 +288,7 @@ bool MyApp::OnInit() // Define my frame constructor MyFrame::MyFrame() - : wxFrame((wxFrame *)NULL, -1, "wxWindows menu sample", + : wxFrame((wxFrame *)NULL, -1, _T("wxWindows menu sample"), wxDefaultPosition, wxSize(400, 250)) { m_textctrl = NULL; @@ -304,72 +304,72 @@ MyFrame::MyFrame() wxMenu *fileMenu = new wxMenu; wxMenuItem *item = new wxMenuItem(fileMenu, Menu_File_ClearLog, - "Clear &log\tCtrl-L"); + _T("Clear &log\tCtrl-L")); item->SetBitmap(copy_xpm); fileMenu->Append(item); fileMenu->AppendSeparator(); - fileMenu->Append(Menu_File_Quit, "E&xit\tAlt-X", "Quit menu sample"); + fileMenu->Append(Menu_File_Quit, _T("E&xit\tAlt-X"), _T("Quit menu sample")); wxMenu *menubarMenu = new wxMenu; - menubarMenu->Append(Menu_MenuBar_Append, "&Append menu\tCtrl-A", - "Append a menu to the menubar"); - menubarMenu->Append(Menu_MenuBar_Insert, "&Insert menu\tCtrl-I", - "Insert a menu into the menubar"); - menubarMenu->Append(Menu_MenuBar_Delete, "&Delete menu\tCtrl-D", - "Delete the last menu from the menubar"); - menubarMenu->Append(Menu_MenuBar_Toggle, "&Toggle menu\tCtrl-T", - "Toggle the first menu in the menubar", TRUE); + menubarMenu->Append(Menu_MenuBar_Append, _T("&Append menu\tCtrl-A"), + _T("Append a menu to the menubar")); + menubarMenu->Append(Menu_MenuBar_Insert, _T("&Insert menu\tCtrl-I"), + _T("Insert a menu into the menubar")); + menubarMenu->Append(Menu_MenuBar_Delete, _T("&Delete menu\tCtrl-D"), + _T("Delete the last menu from the menubar")); + menubarMenu->Append(Menu_MenuBar_Toggle, _T("&Toggle menu\tCtrl-T"), + _T("Toggle the first menu in the menubar"), TRUE); menubarMenu->AppendSeparator(); - menubarMenu->Append(Menu_MenuBar_Enable, "&Enable menu\tCtrl-E", - "Enable or disable the last menu", TRUE); + menubarMenu->Append(Menu_MenuBar_Enable, _T("&Enable menu\tCtrl-E"), + _T("Enable or disable the last menu"), TRUE); menubarMenu->AppendSeparator(); - menubarMenu->Append(Menu_MenuBar_GetLabel, "&Get menu label\tCtrl-G", - "Get the label of the last menu"); - menubarMenu->Append(Menu_MenuBar_SetLabel, "&Set menu label\tCtrl-S", - "Change the label of the last menu"); + menubarMenu->Append(Menu_MenuBar_GetLabel, _T("&Get menu label\tCtrl-G"), + _T("Get the label of the last menu")); + menubarMenu->Append(Menu_MenuBar_SetLabel, _T("&Set menu label\tCtrl-S"), + _T("Change the label of the last menu")); wxMenu *menuMenu = new wxMenu; - menuMenu->Append(Menu_Menu_Append, "&Append menu item\tAlt-A", - "Append a menu item to the last menu"); - menuMenu->Append(Menu_Menu_AppendSub, "&Append sub menu\tAlt-S", - "Append a sub menu to the last menu"); - menuMenu->Append(Menu_Menu_Insert, "&Insert menu item\tAlt-I", - "Insert a menu item in head of the last menu"); - menuMenu->Append(Menu_Menu_Delete, "&Delete menu item\tAlt-D", - "Delete the last menu item from the last menu"); + menuMenu->Append(Menu_Menu_Append, _T("&Append menu item\tAlt-A"), + _T("Append a menu item to the last menu")); + menuMenu->Append(Menu_Menu_AppendSub, _T("&Append sub menu\tAlt-S"), + _T("Append a sub menu to the last menu")); + menuMenu->Append(Menu_Menu_Insert, _T("&Insert menu item\tAlt-I"), + _T("Insert a menu item in head of the last menu")); + menuMenu->Append(Menu_Menu_Delete, _T("&Delete menu item\tAlt-D"), + _T("Delete the last menu item from the last menu")); menuMenu->AppendSeparator(); - menuMenu->Append(Menu_Menu_Enable, "&Enable menu item\tAlt-E", - "Enable or disable the last menu item", TRUE); - menuMenu->Append(Menu_Menu_Check, "&Check menu item\tAlt-C", - "Check or uncheck the last menu item", TRUE); + menuMenu->Append(Menu_Menu_Enable, _T("&Enable menu item\tAlt-E"), + _T("Enable or disable the last menu item"), TRUE); + menuMenu->Append(Menu_Menu_Check, _T("&Check menu item\tAlt-C"), + _T("Check or uncheck the last menu item"), TRUE); menuMenu->AppendSeparator(); - menuMenu->Append(Menu_Menu_GetLabel, "&Get menu item label\tAlt-G", - "Get the label of the last menu item"); - menuMenu->Append(Menu_Menu_SetLabel, "&Set menu item label\tAlt-S", - "Change the label of the last menu item"); + menuMenu->Append(Menu_Menu_GetLabel, _T("&Get menu item label\tAlt-G"), + _T("Get the label of the last menu item")); + menuMenu->Append(Menu_Menu_SetLabel, _T("&Set menu item label\tAlt-S"), + _T("Change the label of the last menu item")); menuMenu->AppendSeparator(); - menuMenu->Append(Menu_Menu_GetInfo, "Get menu item in&fo\tAlt-F", - "Show the state of the last menu item"); + menuMenu->Append(Menu_Menu_GetInfo, _T("Get menu item in&fo\tAlt-F"), + _T("Show the state of the last menu item")); wxMenu *testMenu = new wxMenu; - testMenu->Append(Menu_Test_Normal, "&Normal item"); + testMenu->Append(Menu_Test_Normal, _T("&Normal item")); testMenu->AppendSeparator(); - testMenu->AppendCheckItem(Menu_Test_Check, "&Check item"); + testMenu->AppendCheckItem(Menu_Test_Check, _T("&Check item")); testMenu->AppendSeparator(); - testMenu->AppendRadioItem(Menu_Test_Radio1, "Radio item &1"); - testMenu->AppendRadioItem(Menu_Test_Radio2, "Radio item &2"); - testMenu->AppendRadioItem(Menu_Test_Radio3, "Radio item &3"); + testMenu->AppendRadioItem(Menu_Test_Radio1, _T("Radio item &1")); + testMenu->AppendRadioItem(Menu_Test_Radio2, _T("Radio item &2")); + testMenu->AppendRadioItem(Menu_Test_Radio3, _T("Radio item &3")); wxMenu *helpMenu = new wxMenu; - helpMenu->Append(Menu_Help_About, "&About\tF1", "About menu sample"); + helpMenu->Append(Menu_Help_About, _T("&About\tF1"), _T("About menu sample")); wxMenuBar* menuBar = new wxMenuBar( wxMB_DOCKABLE ); - menuBar->Append(fileMenu, "&File"); - menuBar->Append(menubarMenu, "Menu&bar"); - menuBar->Append(menuMenu, "&Menu"); - menuBar->Append(testMenu, "&Test"); - menuBar->Append(helpMenu, "&Help"); + menuBar->Append(fileMenu, _T("&File")); + menuBar->Append(menubarMenu, _T("Menu&bar")); + menuBar->Append(menuMenu, _T("&Menu")); + menuBar->Append(testMenu, _T("&Test")); + menuBar->Append(helpMenu, _T("&Help")); // these items should be initially checked menuBar->Check(Menu_MenuBar_Toggle, TRUE); @@ -413,9 +413,9 @@ MyFrame::~MyFrame() wxMenu *MyFrame::CreateDummyMenu(wxString *title) { wxMenu *menu = new wxMenu; - menu->Append(Menu_Dummy_First, "&First item\tCtrl-F1"); + menu->Append(Menu_Dummy_First, _T("&First item\tCtrl-F1")); menu->AppendSeparator(); - menu->Append(Menu_Dummy_Second, "&Second item\tCtrl-F2", "", TRUE); + menu->Append(Menu_Dummy_Second, _T("&Second item\tCtrl-F2"), _T(""), TRUE); if ( title ) { @@ -475,8 +475,8 @@ void MyFrame::OnClearLog(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - (void)wxMessageBox("wxWindows menu sample\n© 1999-2001 Vadim Zeitlin", - "About wxWindows menu sample", + (void)wxMessageBox(_T("wxWindows menu sample\n© 1999-2001 Vadim Zeitlin"), + _T("About wxWindows menu sample"), wxICON_INFORMATION); } @@ -521,7 +521,7 @@ void MyFrame::OnToggleMenu(wxCommandEvent& WXUNUSED(event)) else { // restore it - mbar->Insert(0, m_menu, "&File"); + mbar->Insert(0, m_menu, _T("&File")); m_menu = NULL; } } @@ -577,8 +577,8 @@ void MyFrame::OnAppendMenuItem(wxCommandEvent& WXUNUSED(event)) wxMenu *menu = menubar->GetMenu(menubar->GetMenuCount() - 1); menu->AppendSeparator(); - menu->Append(Menu_Dummy_Third, "&Third dummy item\tCtrl-F3", - "Checkable item", TRUE); + menu->Append(Menu_Dummy_Third, _T("&Third dummy item\tCtrl-F3"), + _T("Checkable item"), TRUE); } void MyFrame::OnAppendSubMenu(wxCommandEvent& WXUNUSED(event)) @@ -587,8 +587,8 @@ void MyFrame::OnAppendSubMenu(wxCommandEvent& WXUNUSED(event)) wxMenu *menu = menubar->GetMenu(menubar->GetMenuCount() - 1); - menu->Append(Menu_Dummy_Last, "&Dummy sub menu", - CreateDummyMenu(NULL), "Dummy sub menu help"); + menu->Append(Menu_Dummy_Last, _T("&Dummy sub menu"), + CreateDummyMenu(NULL), _T("Dummy sub menu help")); } void MyFrame::OnDeleteMenuItem(wxCommandEvent& WXUNUSED(event)) @@ -613,8 +613,8 @@ void MyFrame::OnInsertMenuItem(wxCommandEvent& WXUNUSED(event)) wxMenu *menu = menubar->GetMenu(menubar->GetMenuCount() - 1); menu->Insert(0, wxMenuItem::New(menu, Menu_Dummy_Fourth, - "Fourth dummy item\tCtrl-F4")); - menu->Insert(1, wxMenuItem::New(menu, wxID_SEPARATOR, "")); + _T("Fourth dummy item\tCtrl-F4"))); + menu->Insert(1, wxMenuItem::New(menu, wxID_SEPARATOR, _T(""))); } void MyFrame::OnEnableMenuItem(wxCommandEvent& WXUNUSED(event)) @@ -682,21 +682,21 @@ void MyFrame::OnGetMenuItemInfo(wxCommandEvent& WXUNUSED(event)) if ( item ) { wxString msg; - msg << "The item is " << (item->IsEnabled() ? "enabled" - : "disabled") + msg << _T("The item is ") << (item->IsEnabled() ? _T("enabled") + : _T("disabled")) << '\n'; if ( item->IsCheckable() ) { - msg << "It is checkable and " << (item->IsChecked() ? "" : "un") - << "checked\n"; + msg << _T("It is checkable and ") << (item->IsChecked() ? _T("") : _T("un")) + << _T("checked\n"); } #if wxUSE_ACCEL wxAcceleratorEntry *accel = item->GetAccel(); if ( accel ) { - msg << "Its accelerator is "; + msg << _T("Its accelerator is "); int flags = accel->GetFlags(); if ( flags & wxACCEL_ALT ) @@ -742,7 +742,7 @@ void MyFrame::OnGetMenuItemInfo(wxCommandEvent& WXUNUSED(event)) } else { - msg << "It doesn't have an accelerator"; + msg << _T("It doesn't have an accelerator"); } #endif // wxUSE_ACCEL @@ -752,15 +752,15 @@ void MyFrame::OnGetMenuItemInfo(wxCommandEvent& WXUNUSED(event)) void MyFrame::ShowContextMenu(const wxPoint& pos) { - wxMenu menu("Test popup"); + wxMenu menu(_T("Test popup")); - menu.Append(Menu_Help_About, "&About"); - menu.Append(Menu_Popup_Submenu, "&Submenu", CreateDummyMenu(NULL)); - menu.Append(Menu_Popup_ToBeDeleted, "To be &deleted"); - menu.Append(Menu_Popup_ToBeChecked, "To be &checked", "", TRUE); - menu.Append(Menu_Popup_ToBeGreyed, "To be &greyed"); + menu.Append(Menu_Help_About, _T("&About")); + menu.Append(Menu_Popup_Submenu, _T("&Submenu"), CreateDummyMenu(NULL)); + menu.Append(Menu_Popup_ToBeDeleted, _T("To be &deleted")); + menu.Append(Menu_Popup_ToBeChecked, _T("To be &checked"), _T(""), TRUE); + menu.Append(Menu_Popup_ToBeGreyed, _T("To be &greyed")); menu.AppendSeparator(); - menu.Append(Menu_File_Quit, "E&xit"); + menu.Append(Menu_File_Quit, _T("E&xit")); menu.Delete(Menu_Popup_ToBeDeleted); menu.Check(Menu_Popup_ToBeChecked, TRUE); diff --git a/samples/menu/menu.dsp b/samples/menu/menu.dsp index 57f5dd6314..abfc198681 100644 --- a/samples/menu/menu.dsp +++ b/samples/menu/menu.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "menu - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "menu - Win32 Release" diff --git a/samples/mfc/makefile.b32 b/samples/mfc/makefile.b32 index 31974a5610..bde5f94fbe 100644 --- a/samples/mfc/makefile.b32 +++ b/samples/mfc/makefile.b32 @@ -30,7 +30,7 @@ PROLOGLIB = $(WXLIBDIR)\prologio.lib LIBS=$(WXLIB) cw32 import32 ctl3d32 $(FAFALIB) $(ITSYLIB) $(DIBLIB)\ $(XPMLIB) $(PROLOGLIB) $(RCPARSERLIB) $(GAUGELIB) $(WXTREELIB) -TARGET=hello +TARGET=mfctest !if "$(FINAL)" == "0" LINKFLAGS=/v /Tpe /L$(WXLIBDIR);$(BCCDIR)\lib @@ -43,7 +43,7 @@ DEBUG_FLAGS = !endif CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) -OBJECTS = hello.obj +OBJECTS = mfctest.obj $(TARGET).exe: $(OBJECTS) $(TARGET).def $(TARGET).res tlink32 $(LINKFLAGS) @&&! @@ -63,7 +63,7 @@ $(TARGET).res hello.obj: hello.$(SRCSUFF) -$(TARGET).res : $(TARGET).rc $(WXDIR)\include\msw\wx.rc +$(TARGET).res : $(TARGET).rc brc32 -r /i$(BCCDIR)\include /i$(WXDIR)\include\msw /i$(WXDIR)\contrib\fafa $(TARGET) clean: diff --git a/samples/mfc/makefile.wat b/samples/mfc/makefile.wat index 965f13eb9a..30821faf97 100644 --- a/samples/mfc/makefile.wat +++ b/samples/mfc/makefile.wat @@ -1,47 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib -NAME = hello -LNK = $(name).lnk -OBJS = $(name).obj - -# Required for multi-threaded MFC apps -EXTRACPPFLAGS = -bm -oaxt-zp4-ei-xs-zo-w3-bm-bt=nt -d_WINDOWS -d_MBCS -refmain = _wstart2_ - - -PRECOMP= - -all: $(name).exe - -$(name).exe : $(OBJS) $(name).res $(LNK) $(WXLIB)\wx$(LEVEL).lib - wlink @$(LNK) - $(BINDCOMMAND) -d_MBCS $(name).res - -$(name).res : $(name).rc $(WXDIR)\include\msw\wx.rc - $(RC) $(RESFLAGS1) $(name).rc - -$(LNK) : makefile.wat - %create $(LNK) - @%append $(LNK) debug all - @%append $(LNK) system $(LINKOPTION) - @%append $(LNK) $(MINDATA) - @%append $(LNK) $(MAXDATA) - @%append $(LNK) $(STACK) - @%append $(LNK) name $(name) - @%append $(LNK) file $(WXLIB)\wx$(LEVEL).lib - @for %i in ($(EXTRALIBS)) do @%append $(LNK) file %i - @for %i in ($(OBJS)) do @%append $(LNK) file %i - -clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch *.lib *.lnk *.res *.exe *.rex - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\mfc +# +PROGRAM = mfc +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/mfc/mfc.dsp b/samples/mfc/mfc.dsp index 99057a63db..669f30973d 100644 --- a/samples/mfc/mfc.dsp +++ b/samples/mfc/mfc.dsp @@ -24,115 +24,116 @@ CFG=mfc - Win32 Debug !MESSAGE # Begin Project +# PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe -!ELSEIF "$(CFG)" == "mfc - Win32 Release DLL" +!IF "$(CFG)" == "mfc - Win32 Release DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "ReleaseDll" # PROP BASE Intermediate_Dir "ReleaseDll" # PROP BASE Target_Dir "" -# PROP Use_MFC 0 +# PROP Use_MFC 2 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "ReleaseDll" # PROP Intermediate_Dir "ReleaseDll" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /D WXUSINGDLL /I..\..\lib\mswdll -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "..\..\include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "..\..\include" +# ADD CPP /nologo /MD /W4 /GX /O2 /I "..\..\include" /I "..\..\lib\mswdll" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /D "_AFXDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "mfc - Win32 Debug DLL" +!ELSEIF "$(CFG)" == "mfc - Win32 Debug DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "DebugDll" # PROP BASE Intermediate_Dir "DebugDll" # PROP BASE Target_Dir "" -# PROP Use_MFC 0 +# PROP Use_MFC 2 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "DebugDll" # PROP Intermediate_Dir "DebugDll" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /D WXUSINGDLL /I..\..\lib\mswdlld -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "..\..\include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "..\..\include" +# ADD CPP /nologo /MDd /W4 /GX /Zi /Od /I "..\..\include" /I "..\..\lib\mswdlld" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /D "_AFXDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -!ELSEIF "$(CFG)" == "mfc - Win32 Release" +!ELSEIF "$(CFG)" == "mfc - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" -# PROP Use_MFC 0 +# PROP Use_MFC 2 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /I..\..\lib\msw -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "..\..\include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "..\..\include" +# ADD CPP /nologo /MD /W4 /GX /O2 /I "..\..\include" /I "..\..\lib\msw" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "_AFXDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib +# ADD LINK32 comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlib.lib ..\..\lib\regex.lib ..\..\lib\png.lib ..\..\lib\jpeg.lib ..\..\lib\tiff.lib ..\..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "mfc - Win32 Debug" +!ELSEIF "$(CFG)" == "mfc - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" -# PROP Use_MFC 0 +# PROP Use_MFC 2 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /I..\..\lib\mswd -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "..\..\include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "..\..\include" +# ADD CPP /nologo /MDd /W4 /GX /Zi /Od /I "..\..\include" /I "..\..\lib\mswd" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "_AFXDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib +# ADD LINK32 comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\zlibd.lib ..\..\lib\regexd.lib ..\..\lib\pngd.lib ..\..\lib\jpegd.lib ..\..\lib\tiffd.lib ..\..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/samples/mfc/mfctest.cpp b/samples/mfc/mfctest.cpp index 7121cc136c..1a396e1204 100644 --- a/samples/mfc/mfctest.cpp +++ b/samples/mfc/mfctest.cpp @@ -24,30 +24,31 @@ // // You can easily modify this code so that an MFC window pops up // initially as the main frame, and allows wxWindows frames to be -// created subsequently: +// created subsequently. // -// (1) Make MyApp::OnInit return FALSE, not creating a window. -// (2) Restore the MFC code to create a window in InitInstance, and remove +// (1) Make MyApp::OnInit not create a main window. +// (2) Make MFC's InitInstance create a main window, and remove // creation of CDummyWindow. +// +// This can be accomplished by setting START_WITH_MFC_WINDOW to 1 below. + +#define START_WITH_MFC_WINDOW 0 + // // IMPORTANT NOTES: // // (1) You need to set wxUSE_MFC to 1 in include/wx/msw/setup.h, which switches // off some debugging features and also removes the windows.h inclusion // in wxprec.h (MFC headers don't like this to have been included previously). +// Set to 'Use MFC in a shared DLL' or add _AFXDLL to preprocessor settings. // Then recompile wxWindows and this sample. // -// (2) 10/3/2000, wxWindows 2.1.14: unfortunately there is an assert when -// the sample tries to create an MFC window. Any suggestions welcome. It may be -// a problem with conflicting project settings. Ignoring the assert (several times) -// allows the sample to continue. In release mode the asserts don't happen. -// -// (3) I can't get the sample to link using a static MFC library, only the DLL +// (2) I can't get the sample to link and run using a static MFC library, only the DLL // version. Perhaps someone else is a wizard at working out the required settings // in the wxWin library and the sample; then debugging the assert problem may be // easier. // -// (4) Compiling wxWindows in DLL mode currently includes windows.h, so you must only +// (3) Compiling wxWindows in DLL mode currently includes windows.h, so you must only // try linking wxWindows statically. // For compilers that support precompilation, includes "wx/wx.h". @@ -89,31 +90,31 @@ CTheApp theApp; // Define a new application type class MyApp: public wxApp { public: - bool OnInit(void); - wxFrame *CreateFrame(void); - }; +bool OnInit(void); +wxFrame *CreateFrame(void); +}; class MyCanvas: public wxScrolledWindow { - public: +public: MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size); void OnPaint(wxPaintEvent& event); void OnMouseEvent(wxMouseEvent& event); -DECLARE_EVENT_TABLE() + DECLARE_EVENT_TABLE() }; class MyChild: public wxFrame { - public: +public: MyCanvas *canvas; MyChild(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); ~MyChild(void); - + void OnQuit(wxCommandEvent& event); void OnNew(wxCommandEvent& event); void OnActivate(wxActivateEvent& event); - -DECLARE_EVENT_TABLE() + + DECLARE_EVENT_TABLE() }; // For drawing lines in a canvas @@ -151,13 +152,13 @@ void CMainWindow::OnPaint() CString s = "Hello, Windows!"; CPaintDC dc( this ); CRect rect; - + GetClientRect( rect ); dc.SetTextAlign( TA_BASELINE | TA_CENTER ); dc.SetTextColor( ::GetSysColor( COLOR_WINDOWTEXT ) ); dc.SetBkMode(TRANSPARENT); dc.TextOut( ( rect.right / 2 ), ( rect.bottom / 2 ), - s, s.GetLength() ); + s, s.GetLength() ); } // OnAbout: @@ -176,8 +177,8 @@ void CMainWindow::OnAbout() void CMainWindow::OnTest() { - wxMessageBox("This is a wxWindows message box.\nWe're about to create a new wxWindows frame.", "wxWindows", wxOK); - wxGetApp().CreateFrame(); + wxMessageBox("This is a wxWindows message box.\nWe're about to create a new wxWindows frame.", "wxWindows", wxOK); + wxGetApp().CreateFrame(); } // CMainWindow message map: @@ -190,11 +191,11 @@ void CMainWindow::OnTest() // receive no arguments and are void of return type, e.g., "void OnAbout()". // BEGIN_MESSAGE_MAP( CMainWindow, CFrameWnd ) - //{{AFX_MSG_MAP( CMainWindow ) - ON_WM_PAINT() - ON_COMMAND( IDM_ABOUT, OnAbout ) - ON_COMMAND( IDM_TEST, OnTest ) - //}}AFX_MSG_MAP +//{{AFX_MSG_MAP( CMainWindow ) +ON_WM_PAINT() +ON_COMMAND( IDM_ABOUT, OnAbout ) +ON_COMMAND( IDM_TEST, OnTest ) +//}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// @@ -209,33 +210,35 @@ END_MESSAGE_MAP() // BOOL CTheApp::InitInstance() { - TRACE( "HELLO WORLD\n" ); - SetDialogBkColor(); // hook gray dialogs (was default in MFC V1) - + wxEntry((WXHINSTANCE) m_hInstance, (WXHINSTANCE) m_hPrevInstance, m_lpCmdLine, m_nCmdShow, FALSE); - -/* + +#if START_WITH_MFC_WINDOW + // Demonstrate creation of an initial MFC main window. m_pMainWnd = new CMainWindow(); m_pMainWnd->ShowWindow( m_nCmdShow ); m_pMainWnd->UpdateWindow(); -*/ - +#else + // Demonstrate creation of an initial wxWindows main window. + // Wrap wxWindows window in a dummy MFC window and + // make the main window. if (wxTheApp && wxTheApp->GetTopWindow()) { m_pMainWnd = new CDummyWindow((HWND) wxTheApp->GetTopWindow()->GetHWND()); } - +#endif + return TRUE; } int CTheApp::ExitInstance() { - // OnExit isn't called by CleanUp so must be called explicitly. - wxTheApp->OnExit(); - wxApp::CleanUp(); - - return CWinApp::ExitInstance(); + // OnExit isn't called by CleanUp so must be called explicitly. + wxTheApp->OnExit(); + wxApp::CleanUp(); + + return CWinApp::ExitInstance(); } // Override this to provide wxWindows message loop @@ -243,10 +246,10 @@ int CTheApp::ExitInstance() BOOL CTheApp::PreTranslateMessage(MSG *msg) { - if (wxTheApp && wxTheApp->ProcessMessage((WXMSG*) msg)) - return TRUE; - else - return CWinApp::PreTranslateMessage(msg); + if (wxTheApp && wxTheApp->ProcessMessage((WXMSG*) msg)) + return TRUE; + else + return CWinApp::PreTranslateMessage(msg); } BOOL CTheApp::OnIdle(LONG lCount) @@ -258,54 +261,55 @@ BOOL CTheApp::OnIdle(LONG lCount) } /********************************************************************* - * wxWindows elements - ********************************************************************/ - +* wxWindows elements +********************************************************************/ + bool MyApp::OnInit(void) { - // Don't exit app when the top level frame is deleted -// SetExitOnFrameDelete(FALSE); - - wxFrame* frame = CreateFrame(); - return TRUE; +#if !START_WITH_MFC_WINDOW + + // Exit app when the top level frame is deleted + SetExitOnFrameDelete(TRUE); + + (void) CreateFrame(); +#endif + + return TRUE; } wxFrame *MyApp::CreateFrame(void) { - MyChild *subframe = new MyChild(NULL, "Canvas Frame", wxPoint(10, 10), wxSize(300, 300), - wxDEFAULT_FRAME_STYLE); + MyChild *subframe = new MyChild(NULL, "Canvas Frame", wxPoint(10, 10), wxSize(300, 300), + wxDEFAULT_FRAME_STYLE); + + subframe->SetTitle("wxWindows canvas frame"); + + // Give it a status line + subframe->CreateStatusBar(); + + // Make a menubar + wxMenu *file_menu = new wxMenu; + + file_menu->Append(HELLO_NEW, "&New MFC Window"); + file_menu->Append(HELLO_QUIT, "&Close"); + + wxMenuBar *menu_bar = new wxMenuBar; + + menu_bar->Append(file_menu, "&File"); + + // Associate the menu bar with the frame + subframe->SetMenuBar(menu_bar); + + int width, height; + subframe->GetClientSize(&width, &height); + + MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height)); + canvas->SetCursor(wxCursor(wxCURSOR_PENCIL)); + subframe->canvas = canvas; + subframe->Show(TRUE); - subframe->SetTitle("wxWindows canvas frame"); - - // Give it a status line - subframe->CreateStatusBar(); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(HELLO_NEW, "&New MFC Window"); - file_menu->Append(HELLO_QUIT, "&Close"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - - // Associate the menu bar with the frame - subframe->SetMenuBar(menu_bar); - - int width, height; - subframe->GetClientSize(&width, &height); - - MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height)); - canvas->SetCursor(wxCursor(wxCURSOR_PENCIL)); - subframe->canvas = canvas; - - // Give it scrollbars -// canvas->SetScrollbars(20, 20, 50, 50, 4, 4); - - subframe->Show(TRUE); - // Return the main frame window - return subframe; + // Return the main frame window + return subframe; } BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) @@ -315,7 +319,7 @@ END_EVENT_TABLE() // Define a constructor for my canvas MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size) +wxScrolledWindow(parent, -1, pos, size) { } @@ -323,17 +327,17 @@ MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): void MyCanvas::OnPaint(wxPaintEvent& event) { wxPaintDC dc(this); - + dc.SetFont(* wxSWISS_FONT); dc.SetPen(* wxGREEN_PEN); dc.DrawLine(0, 0, 200, 200); dc.DrawLine(200, 0, 0, 200); - + dc.SetBrush(* wxCYAN_BRUSH); dc.SetPen(* wxRED_PEN); dc.DrawRectangle(100, 100, 100, 50); dc.DrawRoundedRectangle(150, 150, 100, 50, 20); - + dc.DrawEllipse(250, 250, 100, 50); dc.DrawSpline(50, 200, 50, 100, 200, 10); dc.DrawLine(50, 230, 200, 230); @@ -362,9 +366,9 @@ BEGIN_EVENT_TABLE(MyChild, wxFrame) END_EVENT_TABLE() MyChild::MyChild(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, const long style): - wxFrame(frame, -1, title, pos, size, style) +wxFrame(frame, -1, title, pos, size, style) { - canvas = NULL; + canvas = NULL; } MyChild::~MyChild(void) @@ -382,23 +386,23 @@ void MyChild::OnNew(wxCommandEvent& event) mainWin->ShowWindow( TRUE ); mainWin->UpdateWindow(); } - + void MyChild::OnActivate(wxActivateEvent& event) { - if (event.GetActive() && canvas) - canvas->SetFocus(); + if (event.GetActive() && canvas) + canvas->SetFocus(); } // Dummy MFC window for specifying a valid main window to MFC, using // a wxWindows HWND. CDummyWindow::CDummyWindow(HWND hWnd):CWnd() { - Attach(hWnd); + Attach(hWnd); } // Don't let the CWnd destructor delete the HWND CDummyWindow::~CDummyWindow(void) { - Detach(); + Detach(); } diff --git a/samples/mfc/mfctest.rc b/samples/mfc/mfctest.rc index 7c5da8b070..5276dbccb7 100644 --- a/samples/mfc/mfctest.rc +++ b/samples/mfc/mfctest.rc @@ -1,6 +1,6 @@ //Microsoft App Studio generated resource script. // -#include "wx/msw/wx.rc" +//#include "wx/msw/wx.rc" #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS diff --git a/samples/minifram/makefile.wat b/samples/minifram/makefile.wat index 68110112c2..2c78090396 100644 --- a/samples/minifram/makefile.wat +++ b/samples/minifram/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for minifram example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = minifram -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\minifram +# +PROGRAM = minifram +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/minifram/minifram.cpp b/samples/minifram/minifram.cpp index 796773a8b7..e99b132d58 100644 --- a/samples/minifram/minifram.cpp +++ b/samples/minifram/minifram.cpp @@ -53,16 +53,16 @@ wxButton *button = (wxButton*) NULL; bool MyApp::OnInit() { // Create the main frame window - main_frame = new MyMainFrame((wxFrame *) NULL, -1, "wxFrame sample", + main_frame = new MyMainFrame((wxFrame *) NULL, -1, _T("wxFrame sample"), wxPoint(100, 100), wxSize(300, 200)); main_frame->CreateToolBar(wxNO_BORDER|wxTB_VERTICAL, ID_TOOLBAR); InitToolbar(main_frame->GetToolBar()); - button = new wxButton( main_frame, ID_REPARENT, "Press to reparent!" ); + button = new wxButton( main_frame, ID_REPARENT, _T("Press to reparent!") ); // Create the mini frame window - mini_frame = new MyMiniFrame( main_frame, -1, "wxMiniFrame sample", + mini_frame = new MyMiniFrame( main_frame, -1, _T("wxMiniFrame sample"), wxPoint(100, 100), wxSize(220, 100)); mini_frame_exists = TRUE; @@ -100,24 +100,24 @@ bool MyApp::InitToolbar(wxToolBar* toolBar) int width = 16; int currentX = 5; - toolBar->AddTool(wxID_NEW, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "New file"); + toolBar->AddTool(wxID_NEW, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("New file")); currentX += width + 5; - toolBar->AddTool(wxID_OPEN, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file"); + toolBar->AddTool(wxID_OPEN, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Open file")); currentX += width + 5; - toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); + toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Save file")); currentX += width + 5; toolBar->AddSeparator(); - toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Copy"); + toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Copy")); currentX += width + 5; - toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Cut"); + toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Cut")); currentX += width + 5; - toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); + toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Paste")); currentX += width + 5; toolBar->AddSeparator(); - toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Reparent the button"); + toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Reparent the button")); currentX += width + 5; toolBar->AddSeparator(); - toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Help"); + toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _T("Help")); toolBar->Realize(); @@ -184,9 +184,9 @@ void MyMainFrame::OnReparent(wxCommandEvent& WXUNUSED(event)) // practical jokers might find satisfaction in reparenting the button // after closing the mini_frame. We'll have the last laugh. if (! mini_frame_exists) - wxMessageBox("The miniframe no longer exists.\n" - "You don't want to make this button an orphan, do you?", - "You got to be kidding"); + wxMessageBox(_T("The miniframe no longer exists.\n") + _T("You don't want to make this button an orphan, do you?"), + _T("You got to be kidding")); else { button->Reparent( mini_frame ); diff --git a/samples/minifram/minifram.dsp b/samples/minifram/minifram.dsp index ed142ff622..fb01c0e634 100644 --- a/samples/minifram/minifram.dsp +++ b/samples/minifram/minifram.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "minifram - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "minifram - Win32 Release" diff --git a/samples/minifram/minifram.h b/samples/minifram/minifram.h index ea3c215c51..bcfeeb9346 100644 --- a/samples/minifram/minifram.h +++ b/samples/minifram/minifram.h @@ -23,7 +23,7 @@ class MyApp: public wxApp class MyMiniFrame: public wxMiniFrame { public: - MyMiniFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = "wxToolBar Sample", + MyMiniFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = _T("wxToolBar Sample"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize ); void OnCloseWindow(wxCloseEvent& event); @@ -36,7 +36,7 @@ DECLARE_EVENT_TABLE() class MyMainFrame: public wxFrame { public: - MyMainFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = "wxToolBar Sample", + MyMainFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = _T("wxToolBar Sample"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize ); void OnCloseWindow(wxCloseEvent& event); diff --git a/samples/minimal/makefile.wat b/samples/minimal/makefile.wat index 2b200ba7ec..c1b36975b3 100644 --- a/samples/minimal/makefile.wat +++ b/samples/minimal/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = minimal -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\minimal +# +PROGRAM = minimal +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/minimal/minimal.dsp b/samples/minimal/minimal.dsp index 5d16d3a8ad..1a2af71966 100644 --- a/samples/minimal/minimal.dsp +++ b/samples/minimal/minimal.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "minimal - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "minimal - Win32 Release" diff --git a/samples/multimon/Makefile.in b/samples/multimon/Makefile.in new file mode 100644 index 0000000000..f3c2192412 --- /dev/null +++ b/samples/multimon/Makefile.in @@ -0,0 +1,23 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1998 +# Updated: +# Copyright: (c) 1998 Julian Smart +# +# "%W% %G%" +# +# Makefile for multimon example (UNIX). + +top_srcdir = @top_srcdir@/.. +top_builddir = ../.. +program_dir = samples/multimon + +PROGRAM=multimon_test + +OBJECTS =$(PROGRAM).o +DEPFILES=$(PROGRAM).d + +include ../../src/makeprog.env + +@IF_GNU_MAKE@-include $(DEPFILES) diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in new file mode 100644 index 0000000000..5270185df6 --- /dev/null +++ b/samples/nativdlg/Makefile.in @@ -0,0 +1,23 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1998 +# Updated: +# Copyright: (c) 1998 Julian Smart +# +# "%W% %G%" +# +# Makefile for nativedlg example (UNIX). + +top_srcdir = @top_srcdir@/.. +top_builddir = ../.. +program_dir = samples/nativedlg + +PROGRAM=nativedlg + +OBJECTS =$(PROGRAM).o +DEPFILES=$(PROGRAM).d + +include ../../src/makeprog.env + +@IF_GNU_MAKE@-include $(DEPFILES) diff --git a/samples/nativdlg/makefile.wat b/samples/nativdlg/makefile.wat index 4cbb79e714..14f4fdc2e7 100644 --- a/samples/nativdlg/makefile.wat +++ b/samples/nativdlg/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = nativdlg -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\nativdlg +# +PROGRAM = nativdlg +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/nativdlg/nativdlg.cpp b/samples/nativdlg/nativdlg.cpp index 764f619784..12d5b5648c 100644 --- a/samples/nativdlg/nativdlg.cpp +++ b/samples/nativdlg/nativdlg.cpp @@ -47,7 +47,7 @@ MyApp::MyApp() bool MyApp::OnInit(void) { // Create the main frame window - frame = new MyFrame(NULL, -1, "wxWindows Native Dialog Sample", wxPoint(0, 0), wxSize(300, 250)); + frame = new MyFrame(NULL, -1, _T("wxWindows Native Dialog Sample"), wxPoint(0, 0), wxSize(300, 250)); // Give it a status line frame->CreateStatusBar(2); @@ -55,18 +55,18 @@ bool MyApp::OnInit(void) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(RESOURCE_TEST1, "&Dialog box test", "Test dialog box resource"); - file_menu->Append(RESOURCE_QUIT, "E&xit", "Quit program"); + file_menu->Append(RESOURCE_TEST1, _T("&Dialog box test"), _T("Test dialog box resource")); + file_menu->Append(RESOURCE_QUIT, _T("E&xit"), _T("Quit program")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); // Make a panel - frame->panel = new wxWindow(frame, -1, wxPoint(0, 0), wxSize(400, 400), 0, "MyMainFrame"); + frame->panel = new wxWindow(frame, -1, wxPoint(0, 0), wxSize(400, 400), 0, _T("MyMainFrame")); frame->Show(TRUE); // Return the main frame window @@ -95,7 +95,7 @@ void MyFrame::OnQuit(wxCommandEvent& event) void MyFrame::OnTest1(wxCommandEvent& event) { MyDialog *dialog = new MyDialog; - if (dialog->LoadNativeDialog(this, "dialog1")) + if (dialog->LoadNativeDialog(this, _T("dialog1"))) { /* wxTextCtrl *text = (wxTextCtrl *)wxFindWindowByName("multitext3", dialog); diff --git a/samples/nativdlg/nativdlg.dsp b/samples/nativdlg/nativdlg.dsp index c5505ca1aa..49cb35ef64 100644 --- a/samples/nativdlg/nativdlg.dsp +++ b/samples/nativdlg/nativdlg.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "nativdlg - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "nativdlg - Win32 Release" diff --git a/samples/newgrid/griddemo.cpp b/samples/newgrid/griddemo.cpp index 5557e3743c..a13e12f181 100644 --- a/samples/newgrid/griddemo.cpp +++ b/samples/newgrid/griddemo.cpp @@ -130,7 +130,7 @@ END_EVENT_TABLE() GridFrame::GridFrame() - : wxFrame( (wxFrame *)NULL, -1, "wxWindows grid class demo", + : wxFrame( (wxFrame *)NULL, -1, _T("wxWindows grid class demo"), wxDefaultPosition, wxDefaultSize ) { @@ -138,91 +138,91 @@ GridFrame::GridFrame() int logW = gridW, logH = 100; wxMenu *fileMenu = new wxMenu; - fileMenu->Append( ID_VTABLE, "&Virtual table test\tCtrl-V"); - fileMenu->Append( ID_BUGS_TABLE, "&Bugs table test\tCtrl-B"); - fileMenu->Append( ID_SMALL_GRID, "&Small Grid test\tCtrl-S"); + fileMenu->Append( ID_VTABLE, _T("&Virtual table test\tCtrl-V")); + fileMenu->Append( ID_BUGS_TABLE, _T("&Bugs table test\tCtrl-B")); + fileMenu->Append( ID_SMALL_GRID, _T("&Small Grid test\tCtrl-S")); fileMenu->AppendSeparator(); - fileMenu->Append( wxID_EXIT, "E&xit\tAlt-X" ); + fileMenu->Append( wxID_EXIT, _T("E&xit\tAlt-X") ); wxMenu *viewMenu = new wxMenu; - viewMenu->Append( ID_TOGGLEROWLABELS, "&Row labels", "", TRUE ); - viewMenu->Append( ID_TOGGLECOLLABELS, "&Col labels", "", TRUE ); - viewMenu->Append( ID_TOGGLEEDIT, "&Editable", "", TRUE ); - viewMenu->Append( ID_TOGGLEROWSIZING, "Ro&w drag-resize", "", TRUE ); - viewMenu->Append( ID_TOGGLECOLSIZING, "C&ol drag-resize", "", TRUE ); - viewMenu->Append( ID_TOGGLEGRIDSIZING, "&Grid drag-resize", "", TRUE ); - viewMenu->Append( ID_TOGGLEGRIDLINES, "&Grid Lines", "", TRUE ); - viewMenu->Append( ID_SET_HIGHLIGHT_WIDTH, "&Set Cell Highlight Width...", "" ); - viewMenu->Append( ID_SET_RO_HIGHLIGHT_WIDTH, "&Set Cell RO Highlight Width...", "" ); - viewMenu->Append( ID_AUTOSIZECOLS, "&Auto-size cols" ); - viewMenu->Append( ID_CELLOVERFLOW, "&Overflow cells", "", TRUE ); - viewMenu->Append( ID_RESIZECELL, "&Resize cell (7,1)", "", TRUE ); + viewMenu->Append( ID_TOGGLEROWLABELS, _T("&Row labels"), _T(""), TRUE ); + viewMenu->Append( ID_TOGGLECOLLABELS, _T("&Col labels"), _T(""), TRUE ); + viewMenu->Append( ID_TOGGLEEDIT, _T("&Editable"), _T(""), TRUE ); + viewMenu->Append( ID_TOGGLEROWSIZING, _T("Ro&w drag-resize"), _T(""), TRUE ); + viewMenu->Append( ID_TOGGLECOLSIZING, _T("C&ol drag-resize"), _T(""), TRUE ); + viewMenu->Append( ID_TOGGLEGRIDSIZING, _T("&Grid drag-resize"), _T(""), TRUE ); + viewMenu->Append( ID_TOGGLEGRIDLINES, _T("&Grid Lines"), _T(""), TRUE ); + viewMenu->Append( ID_SET_HIGHLIGHT_WIDTH, _T("&Set Cell Highlight Width..."), _T("") ); + viewMenu->Append( ID_SET_RO_HIGHLIGHT_WIDTH, _T("&Set Cell RO Highlight Width..."), _T("") ); + viewMenu->Append( ID_AUTOSIZECOLS, _T("&Auto-size cols") ); + viewMenu->Append( ID_CELLOVERFLOW, _T("&Overflow cells"), _T(""), TRUE ); + viewMenu->Append( ID_RESIZECELL, _T("&Resize cell (7,1)"), _T(""), TRUE ); wxMenu *rowLabelMenu = new wxMenu; - viewMenu->Append( ID_ROWLABELALIGN, "R&ow label alignment", + viewMenu->Append( ID_ROWLABELALIGN, _T("R&ow label alignment"), rowLabelMenu, - "Change alignment of row labels" ); + _T("Change alignment of row labels") ); - rowLabelMenu->Append( ID_ROWLABELHORIZALIGN, "&Horizontal" ); - rowLabelMenu->Append( ID_ROWLABELVERTALIGN, "&Vertical" ); + rowLabelMenu->Append( ID_ROWLABELHORIZALIGN, _T("&Horizontal") ); + rowLabelMenu->Append( ID_ROWLABELVERTALIGN, _T("&Vertical") ); wxMenu *colLabelMenu = new wxMenu; - viewMenu->Append( ID_COLLABELALIGN, "Col l&abel alignment", + viewMenu->Append( ID_COLLABELALIGN, _T("Col l&abel alignment"), colLabelMenu, - "Change alignment of col labels" ); + _T("Change alignment of col labels") ); - colLabelMenu->Append( ID_COLLABELHORIZALIGN, "&Horizontal" ); - colLabelMenu->Append( ID_COLLABELVERTALIGN, "&Vertical" ); + colLabelMenu->Append( ID_COLLABELHORIZALIGN, _T("&Horizontal") ); + colLabelMenu->Append( ID_COLLABELVERTALIGN, _T("&Vertical") ); wxMenu *colMenu = new wxMenu; - colMenu->Append( ID_SETLABELCOLOUR, "Set &label colour..." ); - colMenu->Append( ID_SETLABELTEXTCOLOUR, "Set label &text colour..." ); - colMenu->Append( ID_SETLABEL_FONT, "Set label fo&nt..." ); - colMenu->Append( ID_GRIDLINECOLOUR, "&Grid line colour..." ); - colMenu->Append( ID_SET_CELL_FG_COLOUR, "Set cell &foreground colour..." ); - colMenu->Append( ID_SET_CELL_BG_COLOUR, "Set cell &background colour..." ); + colMenu->Append( ID_SETLABELCOLOUR, _T("Set &label colour...") ); + colMenu->Append( ID_SETLABELTEXTCOLOUR, _T("Set label &text colour...") ); + colMenu->Append( ID_SETLABEL_FONT, _T("Set label fo&nt...") ); + colMenu->Append( ID_GRIDLINECOLOUR, _T("&Grid line colour...") ); + colMenu->Append( ID_SET_CELL_FG_COLOUR, _T("Set cell &foreground colour...") ); + colMenu->Append( ID_SET_CELL_BG_COLOUR, _T("Set cell &background colour...") ); wxMenu *editMenu = new wxMenu; - editMenu->Append( ID_INSERTROW, "Insert &row" ); - editMenu->Append( ID_INSERTCOL, "Insert &column" ); - editMenu->Append( ID_DELETEROW, "Delete selected ro&ws" ); - editMenu->Append( ID_DELETECOL, "Delete selected co&ls" ); - editMenu->Append( ID_CLEARGRID, "Cl&ear grid cell contents" ); + editMenu->Append( ID_INSERTROW, _T("Insert &row") ); + editMenu->Append( ID_INSERTCOL, _T("Insert &column") ); + editMenu->Append( ID_DELETEROW, _T("Delete selected ro&ws") ); + editMenu->Append( ID_DELETECOL, _T("Delete selected co&ls") ); + editMenu->Append( ID_CLEARGRID, _T("Cl&ear grid cell contents") ); wxMenu *selectMenu = new wxMenu; - selectMenu->Append( ID_SELECT_UNSELECT, "Add new cells to the selection", - "When off, old selection is deselected before " - "selecting the new cells", TRUE ); - selectMenu->Append( ID_SELECT_ALL, "Select all"); - selectMenu->Append( ID_SELECT_ROW, "Select row 2"); - selectMenu->Append( ID_SELECT_COL, "Select col 2"); - selectMenu->Append( ID_SELECT_CELL, "Select cell (3, 1)"); - selectMenu->Append( ID_DESELECT_ALL, "Deselect all"); - selectMenu->Append( ID_DESELECT_ROW, "Deselect row 2"); - selectMenu->Append( ID_DESELECT_COL, "Deselect col 2"); - selectMenu->Append( ID_DESELECT_CELL, "Deselect cell (3, 1)"); + selectMenu->Append( ID_SELECT_UNSELECT, _T("Add new cells to the selection"), + _T("When off, old selection is deselected before ") + _T("selecting the new cells"), TRUE ); + selectMenu->Append( ID_SELECT_ALL, _T("Select all")); + selectMenu->Append( ID_SELECT_ROW, _T("Select row 2")); + selectMenu->Append( ID_SELECT_COL, _T("Select col 2")); + selectMenu->Append( ID_SELECT_CELL, _T("Select cell (3, 1)")); + selectMenu->Append( ID_DESELECT_ALL, _T("Deselect all")); + selectMenu->Append( ID_DESELECT_ROW, _T("Deselect row 2")); + selectMenu->Append( ID_DESELECT_COL, _T("Deselect col 2")); + selectMenu->Append( ID_DESELECT_CELL, _T("Deselect cell (3, 1)")); wxMenu *selectionMenu = new wxMenu; - selectMenu->Append( ID_CHANGESEL, "Change &selection mode", + selectMenu->Append( ID_CHANGESEL, _T("Change &selection mode"), selectionMenu, - "Change selection mode" ); + _T("Change selection mode") ); - selectionMenu->Append( ID_SELCELLS, "Select &Cells" ); - selectionMenu->Append( ID_SELROWS, "Select &Rows" ); - selectionMenu->Append( ID_SELCOLS, "Select C&ols" ); + selectionMenu->Append( ID_SELCELLS, _T("Select &Cells") ); + selectionMenu->Append( ID_SELROWS, _T("Select &Rows") ); + selectionMenu->Append( ID_SELCOLS, _T("Select C&ols") ); wxMenu *helpMenu = new wxMenu; - helpMenu->Append( ID_ABOUT, "&About wxGrid demo" ); + helpMenu->Append( ID_ABOUT, _T("&About wxGrid demo") ); wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append( fileMenu, "&File" ); - menuBar->Append( viewMenu, "&View" ); - menuBar->Append( colMenu, "&Colours" ); - menuBar->Append( editMenu, "&Edit" ); - menuBar->Append( selectMenu, "&Select" ); - menuBar->Append( helpMenu, "&Help" ); + menuBar->Append( fileMenu, _T("&File") ); + menuBar->Append( viewMenu, _T("&View") ); + menuBar->Append( colMenu, _T("&Colours") ); + menuBar->Append( editMenu, _T("&Edit") ); + menuBar->Append( selectMenu, _T("&Select") ); + menuBar->Append( helpMenu, _T("&Help") ); SetMenuBar( menuBar ); @@ -246,44 +246,50 @@ GridFrame::GridFrame() // this will create a grid and, by default, an associated grid // table for strings - grid->CreateGrid( 100, 100 ); + grid->CreateGrid( 0, 0 ); + grid->AppendRows(100); + grid->AppendCols(100); + + int ir = grid->GetNumberRows(); + grid->DeleteRows(0, ir); + grid->AppendRows(ir); grid->SetRowSize( 0, 60 ); - grid->SetCellValue( 0, 0, "Ctrl+Home\nwill go to\nthis cell" ); + grid->SetCellValue( 0, 0, _T("Ctrl+Home\nwill go to\nthis cell") ); - grid->SetCellValue( 0, 1, "A long piece of text to demonstrate wrapping." ); + grid->SetCellValue( 0, 1, _T("A long piece of text to demonstrate wrapping.") ); grid->SetCellRenderer(0 , 1, new wxGridCellAutoWrapStringRenderer); grid->SetCellEditor( 0, 1 , new wxGridCellAutoWrapStringEditor); - grid->SetCellValue( 0, 2, "Blah" ); - grid->SetCellValue( 0, 3, "Read only" ); + grid->SetCellValue( 0, 2, _T("Blah") ); + grid->SetCellValue( 0, 3, _T("Read only") ); grid->SetReadOnly( 0, 3 ); - grid->SetCellValue( 0, 4, "Can veto edit this cell" ); + grid->SetCellValue( 0, 4, _T("Can veto edit this cell") ); - grid->SetCellValue( 0, 5, "Press\nCtrl+arrow\nto skip over\ncells" ); + grid->SetCellValue( 0, 5, _T("Press\nCtrl+arrow\nto skip over\ncells") ); grid->SetRowSize( 99, 60 ); - grid->SetCellValue( 99, 99, "Ctrl+End\nwill go to\nthis cell" ); - grid->SetCellValue( 1, 0, "This default cell will overflow into neighboring cells, but not if you turn overflow off."); + grid->SetCellValue( 99, 99, _T("Ctrl+End\nwill go to\nthis cell") ); + grid->SetCellValue( 1, 0, _T("This default cell will overflow into neighboring cells, but not if you turn overflow off.")); grid->SetCellTextColour(1, 2, *wxRED); grid->SetCellBackgroundColour(1, 2, *wxGREEN); - grid->SetCellValue( 1, 4, "I'm in the middle"); + grid->SetCellValue( 1, 4, _T("I'm in the middle")); - grid->SetCellValue(2, 2, "red"); + grid->SetCellValue(2, 2, _T("red")); grid->SetCellTextColour(2, 2, *wxRED); - grid->SetCellValue(3, 3, "green on grey"); + grid->SetCellValue(3, 3, _T("green on grey")); grid->SetCellTextColour(3, 3, *wxGREEN); grid->SetCellBackgroundColour(3, 3, *wxLIGHT_GREY); - grid->SetCellValue(4, 4, "a weird looking cell"); + grid->SetCellValue(4, 4, _T("a weird looking cell")); grid->SetCellAlignment(4, 4, wxALIGN_CENTRE, wxALIGN_CENTRE); grid->SetCellRenderer(4, 4, new MyGridCellRenderer); - grid->SetCellValue(3, 0, "0"); + grid->SetCellValue(3, 0, _T("0")); grid->SetCellRenderer(3, 0, new wxGridCellBoolRenderer); grid->SetCellEditor(3, 0, new wxGridCellBoolEditor); @@ -295,23 +301,23 @@ GridFrame::GridFrame() attr->SetBackgroundColour(*wxRED); grid->SetRowAttr(5, attr); - grid->SetCellValue(2, 4, "a wider column"); + grid->SetCellValue(2, 4, _T("a wider column")); grid->SetColSize(4, 120); grid->SetColMinimalWidth(4, 120); grid->SetCellTextColour(5, 8, *wxGREEN); - grid->SetCellValue(5, 8, "Bg from row attr\nText col from cell attr"); - grid->SetCellValue(5, 5, "Bg from row attr Text col from col attr and this text is so long that it covers over many many empty cells but is broken by one that isn't"); + grid->SetCellValue(5, 8, _T("Bg from row attr\nText col from cell attr")); + grid->SetCellValue(5, 5, _T("Bg from row attr Text col from col attr and this text is so long that it covers over many many empty cells but is broken by one that isn't")); grid->SetColFormatFloat(6); - grid->SetCellValue(0, 6, "3.1415"); - grid->SetCellValue(1, 6, "1415"); - grid->SetCellValue(2, 6, "12345.67890"); + grid->SetCellValue(0, 6, _T("3.1415")); + grid->SetCellValue(1, 6, _T("1415")); + grid->SetCellValue(2, 6, _T("12345.67890")); grid->SetColFormatFloat(7, 6, 2); - grid->SetCellValue(0, 7, "3.1415"); - grid->SetCellValue(1, 7, "1415"); - grid->SetCellValue(2, 7, "12345.67890"); + grid->SetCellValue(0, 7, _T("3.1415")); + grid->SetCellValue(1, 7, _T("1415")); + grid->SetCellValue(2, 7, _T("12345.67890")); const wxString choices[] = { @@ -326,7 +332,7 @@ GridFrame::GridFrame() grid->SetCellSize(7, 1, 3, 4); grid->SetCellAlignment(7, 1, wxALIGN_CENTRE, wxALIGN_CENTRE); - grid->SetCellValue(7, 1, "Big box!"); + grid->SetCellValue(7, 1, _T("Big box!")); wxBoxSizer *topSizer = new wxBoxSizer( wxVERTICAL ); topSizer->Add( grid, @@ -428,10 +434,10 @@ void GridFrame::ToggleGridLines( wxCommandEvent& WXUNUSED(ev) ) void GridFrame::OnSetHighlightWidth( wxCommandEvent& WXUNUSED(ev) ) { - wxString choices[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; + wxString choices[] = { _T("0"), _T("1"), _T("2"), _T("3"), _T("4"), _T("5"), _T("6"), _T("7"), _T("8"), _T("9"), _T("10")}; - wxSingleChoiceDialog dlg(this, "Choose the thickness of the highlight pen:", - "Pen Width", 11, choices); + wxSingleChoiceDialog dlg(this, _T("Choose the thickness of the highlight pen:"), + _T("Pen Width"), 11, choices); int current = grid->GetCellHighlightPenWidth(); dlg.SetSelection(current); @@ -442,10 +448,10 @@ void GridFrame::OnSetHighlightWidth( wxCommandEvent& WXUNUSED(ev) ) void GridFrame::OnSetROHighlightWidth( wxCommandEvent& WXUNUSED(ev) ) { - wxString choices[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; + wxString choices[] = { _T("0"), _T("1"), _T("2"), _T("3"), _T("4"), _T("5"), _T("6"), _T("7"), _T("8"), _T("9"), _T("10")}; - wxSingleChoiceDialog dlg(this, "Choose the thickness of the highlight pen:", - "Pen Width", 11, choices); + wxSingleChoiceDialog dlg(this, _T("Choose the thickness of the highlight pen:"), + _T("Pen Width"), 11, choices); int current = grid->GetCellHighlightROPenWidth(); dlg.SetSelection(current); @@ -754,22 +760,22 @@ void GridFrame::OnAddToSelectToggle(wxCommandEvent& event) void GridFrame::OnLabelLeftClick( wxGridEvent& ev ) { - logBuf = ""; + logBuf = _T(""); if ( ev.GetRow() != -1 ) { - logBuf << "Left click on row label " << ev.GetRow(); + logBuf << _T("Left click on row label ") << ev.GetRow(); } else if ( ev.GetCol() != -1 ) { - logBuf << "Left click on col label " << ev.GetCol(); + logBuf << _T("Left click on col label ") << ev.GetCol(); } else { - logBuf << "Left click on corner label"; + logBuf << _T("Left click on corner label"); } - if ( ev.ShiftDown() ) logBuf << " (shift down)"; - if ( ev.ControlDown() ) logBuf << " (control down)"; + if ( ev.ShiftDown() ) logBuf << _T(" (shift down)"); + if ( ev.ControlDown() ) logBuf << _T(" (control down)"); wxLogMessage( wxT("%s"), logBuf.c_str() ); // you must call event skip if you want default grid processing @@ -780,9 +786,9 @@ void GridFrame::OnLabelLeftClick( wxGridEvent& ev ) void GridFrame::OnCellLeftClick( wxGridEvent& ev ) { - logBuf = ""; - logBuf << "Left click at row " << ev.GetRow() - << " col " << ev.GetCol(); + logBuf = _T(""); + logBuf << _T("Left click at row ") << ev.GetRow() + << _T(" col ") << ev.GetCol(); wxLogMessage( wxT("%s"), logBuf.c_str() ); // you must call event skip if you want default grid processing @@ -794,8 +800,8 @@ void GridFrame::OnCellLeftClick( wxGridEvent& ev ) void GridFrame::OnRowSize( wxGridSizeEvent& ev ) { - logBuf = ""; - logBuf << "Resized row " << ev.GetRowOrCol(); + logBuf = _T(""); + logBuf << _T("Resized row ") << ev.GetRowOrCol(); wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); @@ -804,8 +810,8 @@ void GridFrame::OnRowSize( wxGridSizeEvent& ev ) void GridFrame::OnColSize( wxGridSizeEvent& ev ) { - logBuf = ""; - logBuf << "Resized col " << ev.GetRowOrCol(); + logBuf = _T(""); + logBuf << _T("Resized col ") << ev.GetRowOrCol(); wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); @@ -814,17 +820,17 @@ void GridFrame::OnColSize( wxGridSizeEvent& ev ) void GridFrame::OnSelectCell( wxGridEvent& ev ) { - logBuf = ""; + logBuf = _T(""); if ( ev.Selecting() ) - logBuf << "Selected "; + logBuf << _T("Selected "); else - logBuf << "Deselected "; - logBuf << "cell at row " << ev.GetRow() - << " col " << ev.GetCol() - << " ( ControlDown: "<< (ev.ControlDown() ? 'T':'F') - << ", ShiftDown: "<< (ev.ShiftDown() ? 'T':'F') - << ", AltDown: "<< (ev.AltDown() ? 'T':'F') - << ", MetaDown: "<< (ev.MetaDown() ? 'T':'F') << " )"; + logBuf << _T("Deselected "); + logBuf << _T("cell at row ") << ev.GetRow() + << _T(" col ") << ev.GetCol() + << _T(" ( ControlDown: ")<< (ev.ControlDown() ? 'T':'F') + << _T(", ShiftDown: ")<< (ev.ShiftDown() ? 'T':'F') + << _T(", AltDown: ")<< (ev.AltDown() ? 'T':'F') + << _T(", MetaDown: ")<< (ev.MetaDown() ? 'T':'F') << _T(" )"); wxLogMessage( wxT("%s"), logBuf.c_str() ); // you must call Skip() if you want the default processing @@ -834,19 +840,19 @@ void GridFrame::OnSelectCell( wxGridEvent& ev ) void GridFrame::OnRangeSelected( wxGridRangeSelectEvent& ev ) { - logBuf = ""; + logBuf = _T(""); if ( ev.Selecting() ) - logBuf << "Selected "; + logBuf << _T("Selected "); else - logBuf << "Deselected "; - logBuf << "cells from row " << ev.GetTopRow() - << " col " << ev.GetLeftCol() - << " to row " << ev.GetBottomRow() - << " col " << ev.GetRightCol() - << " ( ControlDown: "<< (ev.ControlDown() ? 'T':'F') - << ", ShiftDown: "<< (ev.ShiftDown() ? 'T':'F') - << ", AltDown: "<< (ev.AltDown() ? 'T':'F') - << ", MetaDown: "<< (ev.MetaDown() ? 'T':'F') << " )"; + logBuf << _T("Deselected "); + logBuf << _T("cells from row ") << ev.GetTopRow() + << _T(" col ") << ev.GetLeftCol() + << _T(" to row ") << ev.GetBottomRow() + << _T(" col ") << ev.GetRightCol() + << _T(" ( ControlDown: ")<< (ev.ControlDown() ? 'T':'F') + << _T(", ShiftDown: ")<< (ev.ShiftDown() ? 'T':'F') + << _T(", AltDown: ")<< (ev.AltDown() ? 'T':'F') + << _T(", MetaDown: ")<< (ev.MetaDown() ? 'T':'F') << _T(" )"); wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); @@ -854,10 +860,10 @@ void GridFrame::OnRangeSelected( wxGridRangeSelectEvent& ev ) void GridFrame::OnCellValueChanged( wxGridEvent& ev ) { - logBuf = ""; - logBuf << "Value changed for cell at" - << " row " << ev.GetRow() - << " col " << ev.GetCol(); + logBuf = _T(""); + logBuf << _T("Value changed for cell at") + << _T(" row ") << ev.GetRow() + << _T(" col ") << ev.GetCol(); wxLogMessage( wxT("%s"), logBuf.c_str() ); @@ -900,10 +906,10 @@ void GridFrame::OnEditorHidden( wxGridEvent& ev ) void GridFrame::About( wxCommandEvent& WXUNUSED(ev) ) { - (void)wxMessageBox( "\n\nwxGrid demo \n\n" - "Michael Bedward \n" - "mbedward@ozemail.com.au \n\n", - "About", + (void)wxMessageBox( _T("\n\nwxGrid demo \n\n") + _T("Michael Bedward \n") + _T("mbedward@ozemail.com.au \n\n"), + _T("About"), wxOK ); } @@ -921,7 +927,7 @@ void GridFrame::OnBugsTable(wxCommandEvent& ) void GridFrame::OnSmallGrid(wxCommandEvent& ) { - wxFrame* frame = new wxFrame(NULL, -1, "A Small Grid", + wxFrame* frame = new wxFrame(NULL, -1, _T("A Small Grid"), wxDefaultPosition, wxSize(640, 480)); wxPanel* panel = new wxPanel(frame, -1); wxGrid* grid = new wxGrid(panel, -1, wxPoint(10,10), wxSize(400,400), @@ -938,16 +944,16 @@ void GridFrame::OnVTable(wxCommandEvent& ) // MB: wxGetNumberFromUser doesn't work properly for wxMotif wxString s; s << s_sizeGrid; - s = wxGetTextFromUser( "Size of the table to create", - "Size:", + s = wxGetTextFromUser( _T("Size of the table to create"), + _T("Size:"), s ); s.ToLong( &s_sizeGrid ); #else - s_sizeGrid = wxGetNumberFromUser("Size of the table to create", - "Size: ", - "wxGridDemo question", + s_sizeGrid = wxGetNumberFromUser(_T("Size of the table to create"), + _T("Size: "), + _T("wxGridDemo question"), s_sizeGrid, 0, 32000, this); #endif @@ -1027,7 +1033,7 @@ wxGridCellAttr *MyGridCellAttrProvider::GetAttr(int row, int col, // ============================================================================ BigGridFrame::BigGridFrame(long sizeGrid) - : wxFrame(NULL, -1, "Plugin Virtual Table", + : wxFrame(NULL, -1, _T("Plugin Virtual Table"), wxDefaultPosition, wxSize(500, 450)) { m_grid = new wxGrid(this, -1, wxDefaultPosition, wxDefaultSize); @@ -1325,7 +1331,7 @@ BugsGridTable::BugsGridTable() // ---------------------------------------------------------------------------- BugsGridFrame::BugsGridFrame() - : wxFrame(NULL, -1, "Bugs table", + : wxFrame(NULL, -1, _T("Bugs table"), wxDefaultPosition, wxSize(500, 300)) { wxGrid *grid = new wxGrid(this, -1, wxDefaultPosition); diff --git a/samples/newgrid/makefile.wat b/samples/newgrid/makefile.wat index b13250e211..cc94f572a4 100644 --- a/samples/newgrid/makefile.wat +++ b/samples/newgrid/makefile.wat @@ -1,13 +1,13 @@ -# -# Makefile for WATCOM -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = griddemo -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\newgrid +# +PROGRAM = newgrid +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/newgrid/newgrid.dsp b/samples/newgrid/newgrid.dsp index cf3ff36050..dc9d37cea2 100644 --- a/samples/newgrid/newgrid.dsp +++ b/samples/newgrid/newgrid.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "newgrid - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "newgrid - Win32 Release" diff --git a/samples/notebook/makefile.wat b/samples/notebook/makefile.wat index d121835cc3..170ab660e4 100644 --- a/samples/notebook/makefile.wat +++ b/samples/notebook/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for notebook example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = notebook -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\notebook +# +PROGRAM = notebook +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp index 8625be4de8..940c084d5f 100644 --- a/samples/notebook/notebook.cpp +++ b/samples/notebook/notebook.cpp @@ -439,11 +439,13 @@ void MyFrame::OnButtonAddPage( wxCommandEvent& WXUNUSED(event) ) static size_t s_pageAdded = 0; wxPanel *panel = new wxPanel( m_notebook, -1 ); - (void) new wxButton( panel, -1, wxT("Button"), + (void) new wxButton( panel, -1, wxT("Frist button"), wxPoint(10, 10), wxSize(-1, -1) ); + (void) new wxButton( panel, -1, wxT("Second button"), + wxPoint(50, 100), wxSize(-1, -1) ); m_notebook->AddPage(panel, wxString::Format(ADDED_PAGE_NAME wxT("%u"), - ++s_pageAdded), FALSE, m_notebook->GetIconIndex() ); + ++s_pageAdded), TRUE, m_notebook->GetIconIndex() ); } void MyFrame::OnButtonInsertPage( wxCommandEvent& WXUNUSED(event) ) diff --git a/samples/notebook/notebook.dsp b/samples/notebook/notebook.dsp index 3522063182..b890e5a870 100644 --- a/samples/notebook/notebook.dsp +++ b/samples/notebook/notebook.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "notebook - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "notebook - Win32 Release" diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in new file mode 100644 index 0000000000..fd2aaba9a2 --- /dev/null +++ b/samples/oleauto/Makefile.in @@ -0,0 +1,23 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1998 +# Updated: +# Copyright: (c) 1998 Julian Smart +# +# "%W% %G%" +# +# Makefile for oleauto example (UNIX). + +top_srcdir = @top_srcdir@/.. +top_builddir = ../.. +program_dir = samples/oleauto + +PROGRAM=oleauto + +OBJECTS =$(PROGRAM).o +DEPFILES=$(PROGRAM).d + +include ../../src/makeprog.env + +@IF_GNU_MAKE@-include $(DEPFILES) diff --git a/samples/oleauto/makefile.wat b/samples/oleauto/makefile.wat index 994a25ce15..542b91bfe4 100644 --- a/samples/oleauto/makefile.wat +++ b/samples/oleauto/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = oleauto -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\oleauto +# +PROGRAM = oleauto +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/oleauto/oleauto.cpp b/samples/oleauto/oleauto.cpp index 1c745b8519..1297437a4b 100644 --- a/samples/oleauto/oleauto.cpp +++ b/samples/oleauto/oleauto.cpp @@ -134,7 +134,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("OleAuto wxWindows App", + MyFrame *frame = new MyFrame(_T("OleAuto wxWindows App"), wxPoint(50, 50), wxSize(450, 340)); // Show it and tell the application that it's our main window @@ -162,21 +162,21 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(OleAuto_Test, "&Test Excel Automation..."); - menuFile->Append(OleAuto_About, "&About..."); + menuFile->Append(OleAuto_Test, _T("&Test Excel Automation...")); + menuFile->Append(OleAuto_About, _T("&About...")); menuFile->AppendSeparator(); - menuFile->Append(OleAuto_Quit, "E&xit"); + menuFile->Append(OleAuto_Quit, _T("E&xit")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _T("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); } @@ -190,8 +190,8 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("This is an OLE Automation sample", - "About OleAuto", wxOK | wxICON_INFORMATION, this); + wxMessageBox(_T("This is an OLE Automation sample"), + _T("About OleAuto"), wxOK | wxICON_INFORMATION, this); } /* Tests OLE automation by making the active Excel cell bold, @@ -199,26 +199,26 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) */ void MyFrame::OnTest(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("Please ensure Excel is running, then press OK.\nThe active cell should then say 'wxWindows automation test!' in bold."); + wxMessageBox(_T("Please ensure Excel is running, then press OK.\nThe active cell should then say 'wxWindows automation test!' in bold.")); wxAutomationObject excelObject, rangeObject; - if (!excelObject.GetInstance("Excel.Application")) + if (!excelObject.GetInstance(_T("Excel.Application"))) { - if (!excelObject.CreateInstance("Excel.Application")) + if (!excelObject.CreateInstance(_T("Excel.Application"))) { - wxMessageBox("Could not create Excel object."); + wxMessageBox(_T("Could not create Excel object.")); return; } } - if (!excelObject.PutProperty("ActiveCell.Value", "wxWindows automation test!")) + if (!excelObject.PutProperty(_T("ActiveCell.Value"), _T("wxWindows automation test!"))) { - wxMessageBox("Could not set active cell value."); + wxMessageBox(_T("Could not set active cell value.")); return; } #ifdef HAVE_BOOL - if (!excelObject.PutProperty("ActiveCell.Font.Bold", wxVariant((bool) TRUE)) ) + if (!excelObject.PutProperty(_T("ActiveCell.Font.Bold"), wxVariant((bool) TRUE)) ) { - wxMessageBox("Could not put Bold property to active cell."); + wxMessageBox(_T("Could not put Bold property to active cell.")); return; } #endif diff --git a/samples/oleauto/oleauto.dsp b/samples/oleauto/oleauto.dsp index 269e7e80b9..845025bcda 100644 --- a/samples/oleauto/oleauto.dsp +++ b/samples/oleauto/oleauto.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "oleauto - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "oleauto - Win32 Release" diff --git a/samples/opengl/cube/cube.dsp b/samples/opengl/cube/cube.dsp index 9e1ffbb5d9..dcaf5f9e18 100644 --- a/samples/opengl/cube/cube.dsp +++ b/samples/opengl/cube/cube.dsp @@ -8,12 +8,12 @@ CFG=glcube - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE -!MESSAGE NMAKE /f "cube/cube.mak". +!MESSAGE NMAKE /f "cube.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "cube/cube.mak" CFG="glcube - Win32 Debug" +!MESSAGE NMAKE /f "cube.mak" CFG="glcube - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -24,13 +24,14 @@ CFG=glcube - Win32 Debug !MESSAGE # Begin Project +# PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe -!ELSEIF "$(CFG)" == "glcube - Win32 Release DLL" +!IF "$(CFG)" == "glcube - Win32 Release DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -44,19 +45,19 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /D WXUSINGDLL /I../../..\lib\mswdll -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "../../../include" +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 ../../..\lib\wxmsw240.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "glcube - Win32 Debug DLL" +!ELSEIF "$(CFG)" == "glcube - Win32 Debug DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -70,19 +71,19 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /D WXUSINGDLL /I../../..\lib\mswdlld -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "../../../include" +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 ../../..\lib\wxmsw240d.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -!ELSEIF "$(CFG)" == "glcube - Win32 Release" +!ELSEIF "$(CFG)" == "glcube - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -96,19 +97,19 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /I../../..\lib\msw -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "../../../include" +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib +# ADD LINK32 ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "glcube - Win32 Debug" +!ELSEIF "$(CFG)" == "glcube - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -122,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /I../../..\lib\mswd -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "../../../include" +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib +# ADD LINK32 ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/samples/opengl/isosurf/isosurf.dsp b/samples/opengl/isosurf/isosurf.dsp index fad1e23e3d..ec946e62d4 100644 --- a/samples/opengl/isosurf/isosurf.dsp +++ b/samples/opengl/isosurf/isosurf.dsp @@ -8,12 +8,12 @@ CFG=glisosurf - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE -!MESSAGE NMAKE /f "isosurf/isosurf.mak". +!MESSAGE NMAKE /f "isosurf.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "isosurf/isosurf.mak" CFG="glisosurf - Win32 Debug" +!MESSAGE NMAKE /f "isosurf.mak" CFG="glisosurf - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -24,13 +24,14 @@ CFG=glisosurf - Win32 Debug !MESSAGE # Begin Project +# PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe -!ELSEIF "$(CFG)" == "glisosurf - Win32 Release DLL" +!IF "$(CFG)" == "glisosurf - Win32 Release DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -44,19 +45,19 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /D WXUSINGDLL /I../../..\lib\mswdll -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "../../../include" +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 ../../..\lib\wxmsw240.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "glisosurf - Win32 Debug DLL" +!ELSEIF "$(CFG)" == "glisosurf - Win32 Debug DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -70,19 +71,19 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /D WXUSINGDLL /I../../..\lib\mswdlld -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "../../../include" +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 ../../..\lib\wxmsw240d.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -!ELSEIF "$(CFG)" == "glisosurf - Win32 Release" +!ELSEIF "$(CFG)" == "glisosurf - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -96,19 +97,19 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /I../../..\lib\msw -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "../../../include" +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib +# ADD LINK32 ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "glisosurf - Win32 Debug" +!ELSEIF "$(CFG)" == "glisosurf - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -122,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /I../../..\lib\mswd -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "../../../include" +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib +# ADD LINK32 ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/samples/opengl/penguin/makefile.unx b/samples/opengl/penguin/makefile.unx index 778d905184..bc26127d08 100644 --- a/samples/opengl/penguin/makefile.unx +++ b/samples/opengl/penguin/makefile.unx @@ -11,22 +11,22 @@ OPENGL_LIBS=-lGL -lGLU #if you have old Mesa, try this: #OPENGL_LIBS=-lMesaGL -lMesaGLU -CPP = g++ +CC = $(shell wx-config --cc) CXX = $(shell wx-config --cxx) Penguin: penguin.o trackball.o lw.o - $(CPP) -o Penguin \ + $(CXX) -o Penguin \ penguin.o trackball.o lw.o \ `wx-config --libs` -lwx_gtk_gl $(OPENGL_LIBS) penguin.o: penguin.cpp - $(CPP) `wx-config --cxxflags` -I../../gtk -c penguin.cpp + $(CXX) `wx-config --cxxflags` -I../../gtk -c penguin.cpp lw.o: lw.cpp - $(CPP) `wx-config --cxxflags` -I../../gtk -c lw.cpp + $(CXX) `wx-config --cxxflags` -I../../gtk -c lw.cpp trackball.o: trackball.c - $(CXX) `wx-config --cxxflags` -I../../gtk -c trackball.c + $(CC) `wx-config --cflags` -I../../gtk -c trackball.c clean: rm -f *.o Penguin diff --git a/samples/opengl/penguin/penguin.dsp b/samples/opengl/penguin/penguin.dsp index 0f39e4f367..5fcce21282 100644 --- a/samples/opengl/penguin/penguin.dsp +++ b/samples/opengl/penguin/penguin.dsp @@ -8,12 +8,12 @@ CFG=glpenguin - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE -!MESSAGE NMAKE /f "penguin/penguin.mak". +!MESSAGE NMAKE /f "penguin.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "penguin/penguin.mak" CFG="glpenguin - Win32 Debug" +!MESSAGE NMAKE /f "penguin.mak" CFG="glpenguin - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -24,13 +24,14 @@ CFG=glpenguin - Win32 Debug !MESSAGE # Begin Project +# PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe -!ELSEIF "$(CFG)" == "glpenguin - Win32 Release DLL" +!IF "$(CFG)" == "glpenguin - Win32 Release DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -44,19 +45,19 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /D WXUSINGDLL /I../../..\lib\mswdll -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "../../../include" +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\wxmsw233.lib +# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "glpenguin - Win32 Debug DLL" +!ELSEIF "$(CFG)" == "glpenguin - Win32 Debug DLL" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -70,19 +71,19 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /D WXUSINGDLL /I../../..\lib\mswdlld -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "../../../include" +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\wxmsw233d.lib +# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -!ELSEIF "$(CFG)" == "glpenguin - Win32 Release" +!ELSEIF "$(CFG)" == "glpenguin - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -96,19 +97,19 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MD /I../../..\lib\msw -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "NDEBUG" /I "../../../include" +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib +# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 -!ELSEIF "$(CFG)" == "glpenguin - Win32 Debug" +!ELSEIF "$(CFG)" == "glpenguin - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -122,17 +123,17 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c -# ADD CPP /nologo /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D WIN32 /D WINVER=0x400 /D _MT /D wxUSE_GUI=1 /YX /FD /c /MDd /D "__WXDEBUG__" /D "WXDEBUG=1" /I../../..\lib\mswd -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" /I "../../../include" -# ADD RSC /l 0x409 /d "_DEBUG" /I "../../../include" +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib +# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in new file mode 100644 index 0000000000..dcd63259b4 --- /dev/null +++ b/samples/ownerdrw/Makefile.in @@ -0,0 +1,23 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1998 +# Updated: +# Copyright: (c) 1998 Julian Smart +# +# "%W% %G%" +# +# Makefile for owner draw example (UNIX). + +top_srcdir = @top_srcdir@/.. +top_builddir = ../.. +program_dir = samples/ownerdrw + +PROGRAM=ownerdrw + +OBJECTS =$(PROGRAM).o +DEPFILES=$(PROGRAM).d + +include ../../src/makeprog.env + +@IF_GNU_MAKE@-include $(DEPFILES) diff --git a/samples/ownerdrw/makefile.wat b/samples/ownerdrw/makefile.wat index 4e6a3d8867..09b79923a7 100644 --- a/samples/ownerdrw/makefile.wat +++ b/samples/ownerdrw/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = ownerdrw -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\ownerdrw +# +PROGRAM = ownerdrw +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/ownerdrw/ownerdrw.cpp b/samples/ownerdrw/ownerdrw.cpp index f27293e7ea..85608c96e6 100644 --- a/samples/ownerdrw/ownerdrw.cpp +++ b/samples/ownerdrw/ownerdrw.cpp @@ -40,7 +40,7 @@ class OwnerDrawnFrame : public wxFrame { public: // ctor & dtor - OwnerDrawnFrame(wxFrame *frame, char *title, int x, int y, int w, int h); + OwnerDrawnFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h); ~OwnerDrawnFrame(); // notifications @@ -84,7 +84,7 @@ IMPLEMENT_APP(OwnerDrawnApp); bool OwnerDrawnApp::OnInit(void) { OwnerDrawnFrame *pFrame - = new OwnerDrawnFrame(NULL, "wxWindows Ownerdraw Sample", + = new OwnerDrawnFrame(NULL, _T("wxWindows Ownerdraw Sample"), 50, 50, 450, 340); SetTopWindow(pFrame); @@ -108,79 +108,82 @@ void OwnerDrawnFrame::InitMenu() fontBmp(14, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE); // sorry for my artistic skills... - wxBitmap bmpBell("bell"), bmpSound("sound"), bmpNoSound("nosound"); + wxBitmap bmpBell(_T("bell")), bmpSound(_T("sound")), bmpNoSound(_T("nosound")); // construct submenu - pItem = new wxMenuItem(sub_menu, Menu_Sub1, "Submenu &first", "large"); + pItem = new wxMenuItem(sub_menu, Menu_Sub1, _T("Submenu &first"), _T("large")); pItem->SetFont(fontLarge); sub_menu->Append(pItem); - pItem = new wxMenuItem(sub_menu, Menu_Sub2, "Submenu &second", "italic", + pItem = new wxMenuItem(sub_menu, Menu_Sub2, _T("Submenu &second"), _T("italic"), wxITEM_CHECK); pItem->SetFont(fontItalic); sub_menu->Append(pItem); - pItem = new wxMenuItem(sub_menu, Menu_Sub3, "Submenu &third", "underlined", + pItem = new wxMenuItem(sub_menu, Menu_Sub3, _T("Submenu &third"), _T("underlined"), wxITEM_CHECK); pItem->SetFont(fontUlined); sub_menu->Append(pItem); // construct menu - pItem = new wxMenuItem(file_menu, Menu_Test1, "&Uncheckable", "red item"); + pItem = new wxMenuItem(file_menu, Menu_Test1, _T("&Uncheckable"), _T("red item")); pItem->SetFont(*wxITALIC_FONT); pItem->SetTextColour(wxColor(255, 0, 0)); pItem->SetMarginWidth(23); file_menu->Append(pItem); - pItem = new wxMenuItem(file_menu, Menu_Test2, "&Checkable", - "checkable item", wxITEM_CHECK); + pItem = new wxMenuItem(file_menu, Menu_Test2, _T("&Checkable"), + _T("checkable item"), wxITEM_CHECK); pItem->SetFont(*wxSMALL_FONT); file_menu->Append(pItem); file_menu->Check(Menu_Test2, TRUE); - pItem = new wxMenuItem(file_menu, Menu_Test3, "&Disabled", "disabled item"); + pItem = new wxMenuItem(file_menu, Menu_Test3, _T("&Disabled"), _T("disabled item")); pItem->SetFont(*wxNORMAL_FONT); file_menu->Append(pItem); file_menu->Enable(Menu_Test3, FALSE); file_menu->AppendSeparator(); - pItem = new wxMenuItem(file_menu, Menu_Bitmap, "&Bell", - "check/uncheck me!", wxITEM_CHECK); + pItem = new wxMenuItem(file_menu, Menu_Bitmap, _T("&Bell"), + _T("check/uncheck me!"), wxITEM_CHECK); pItem->SetFont(fontBmp); pItem->SetBitmaps(bmpBell); file_menu->Append(pItem); - pItem = new wxMenuItem(file_menu, Menu_Bitmap2, "So&und", - "icon changes!", wxITEM_CHECK); + pItem = new wxMenuItem(file_menu, Menu_Bitmap2, _T("So&und"), + _T("icon changes!"), wxITEM_CHECK); pItem->SetFont(fontBmp); pItem->SetBitmaps(bmpSound, bmpNoSound); file_menu->Append(pItem); file_menu->AppendSeparator(); - pItem = new wxMenuItem(file_menu, Menu_Submenu, "&Sub menu", "", + pItem = new wxMenuItem(file_menu, Menu_Submenu, _T("&Sub menu"), _T(""), wxITEM_CHECK, sub_menu); pItem->SetFont(*wxSWISS_FONT); file_menu->Append(pItem); file_menu->AppendSeparator(); - file_menu->Append(Menu_Quit, "&Quit", "Normal item"); + pItem = new wxMenuItem(file_menu, Menu_Quit, _T("&Quit"), _T("Normal item"), + wxITEM_NORMAL); + pItem->SetFont(*wxNORMAL_FONT); + file_menu->Append(pItem); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); SetMenuBar(menu_bar); } // main frame constructor -OwnerDrawnFrame::OwnerDrawnFrame(wxFrame *frame, char *title, +OwnerDrawnFrame::OwnerDrawnFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) { // set the icon - SetIcon(wxIcon("mondrian")); + SetIcon(wxIcon(_T("mondrian"))); // create the menu InitMenu(); @@ -189,16 +192,16 @@ OwnerDrawnFrame::OwnerDrawnFrame(wxFrame *frame, char *title, const int widths[] = { -1, 60 }; CreateStatusBar(2); SetStatusWidths(2, widths); - SetStatusText("no selection", 0); + SetStatusText(_T("no selection"), 0); // make a panel with some controls wxPanel *pPanel = new wxPanel(this, -1, wxPoint(0, 0), wxSize(400, 200), wxTAB_TRAVERSAL); // check list box - static const char* aszChoices[] = { "Hello", "world", "and", - "goodbye", "cruel", "world", - "-------", "owner-drawn", "listbox" }; + static const wxChar* aszChoices[] = { _T("Hello"), _T("world"), _T("and"), + _T("goodbye"), _T("cruel"), _T("world"), + _T("-------"), _T("owner-drawn"), _T("listbox") }; wxString *astrChoices = new wxString[WXSIZEOF(aszChoices)]; unsigned int ui; @@ -225,9 +228,9 @@ OwnerDrawnFrame::OwnerDrawnFrame(wxFrame *frame, char *title, m_pListBox->Check(2); // normal (but owner-drawn) listbox - static const char* aszColors[] = { "Red", "Blue", "Pink", - "Green", "Yellow", - "Black", "Violet" }; + static const wxChar* aszColors[] = { _T("Red"), _T("Blue"), _T("Pink"), + _T("Green"), _T("Yellow"), + _T("Black"), _T("Violet") }; struct { unsigned int r, g, b; } aColors[] = { {255,0,0}, {0,0,255}, {255,128,192}, @@ -285,8 +288,8 @@ void OwnerDrawnFrame::OnQuit(wxCommandEvent& event) void OwnerDrawnFrame::OnAbout(wxCommandEvent& event) { wxMessageDialog dialog(this, - "Demo of owner-drawn controls\n", - "About wxOwnerDrawn", wxYES_NO | wxCANCEL); + _T("Demo of owner-drawn controls\n"), + _T("About wxOwnerDrawn"), wxYES_NO | wxCANCEL); dialog.ShowModal(); } @@ -294,16 +297,16 @@ void OwnerDrawnFrame::OnListboxSelect(wxCommandEvent& event) { wxString strSelection; unsigned int nSel = event.GetSelection(); - strSelection.sprintf(wxT("item %d selected (%schecked)"), nSel, - m_pListBox->IsChecked(nSel) ? wxT("") : wxT("not ")); + strSelection.Printf(wxT("item %d selected (%schecked)"), nSel, + m_pListBox->IsChecked(nSel) ? wxT("") : wxT("not ")); SetStatusText(strSelection); } void OwnerDrawnFrame::OnListboxDblClick(wxCommandEvent& event) { wxString strSelection; - strSelection.sprintf(wxT("item %d double clicked"), - m_pListBox->GetSelection()); + strSelection.Printf(wxT("item %d double clicked"), + m_pListBox->GetSelection()); wxMessageDialog dialog(this, strSelection); dialog.ShowModal(); } @@ -312,7 +315,7 @@ void OwnerDrawnFrame::OnCheckboxToggle(wxCommandEvent& event) { wxString strSelection; unsigned int nItem = event.GetInt(); - strSelection.sprintf(wxT("item %d was %schecked"), nItem, - m_pListBox->IsChecked(nItem) ? wxT("") : wxT("un")); + strSelection.Printf(wxT("item %d was %schecked"), nItem, + m_pListBox->IsChecked(nItem) ? wxT("") : wxT("un")); SetStatusText(strSelection); } diff --git a/samples/ownerdrw/ownerdrw.dsp b/samples/ownerdrw/ownerdrw.dsp index b7f3fed3a0..404e56ecfe 100644 --- a/samples/ownerdrw/ownerdrw.dsp +++ b/samples/ownerdrw/ownerdrw.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "ownerdrw - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "ownerdrw - Win32 Release" diff --git a/samples/png/makefile.wat b/samples/png/makefile.wat index 65bdeb731d..b7e05a69f0 100644 --- a/samples/png/makefile.wat +++ b/samples/png/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = pngdemo -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\png +# +PROGRAM = png +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/png/png.dsp b/samples/png/png.dsp index 52de544a6b..a902e43e0b 100644 --- a/samples/png/png.dsp +++ b/samples/png/png.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "png - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "png - Win32 Release" diff --git a/samples/png/pngdemo.cpp b/samples/png/pngdemo.cpp index 186d3c90ac..7100fd22bd 100644 --- a/samples/png/pngdemo.cpp +++ b/samples/png/pngdemo.cpp @@ -38,7 +38,7 @@ bool MyApp::OnInit(void) wxImage::AddHandler(new wxPNGHandler); // Create the main frame window - frame = new MyFrame((wxFrame *) NULL, "wxPNGBitmap Demo", wxPoint(0, 0), wxSize(300, 300)); + frame = new MyFrame((wxFrame *) NULL, _T("wxPNGBitmap Demo"), wxPoint(0, 0), wxSize(300, 300)); // Give it a status line frame->CreateStatusBar(2); @@ -47,15 +47,15 @@ bool MyApp::OnInit(void) wxMenu *file_menu = new wxMenu; wxMenu *help_menu = new wxMenu; - file_menu->Append(PNGDEMO_LOAD_FILE, "&Load file", "Load file"); - file_menu->Append(PNGDEMO_SAVE_FILE, "&Save file", "Save file"); - file_menu->Append(PNGDEMO_QUIT, "E&xit", "Quit program"); - help_menu->Append(PNGDEMO_ABOUT, "&About", "About PNG demo"); + file_menu->Append(PNGDEMO_LOAD_FILE, _T("&Load file"), _T("Load file")); + file_menu->Append(PNGDEMO_SAVE_FILE, _T("&Save file"), _T("Save file")); + file_menu->Append(PNGDEMO_QUIT, _T("E&xit"), _T("Quit program")); + help_menu->Append(PNGDEMO_ABOUT, _T("&About"), _T("About PNG demo")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -68,7 +68,7 @@ bool MyApp::OnInit(void) frame->Show(TRUE); - frame->SetStatusText("Hello, wxWindows"); + frame->SetStatusText(_T("Hello, wxWindows")); return TRUE; } @@ -104,8 +104,8 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - (void)wxMessageBox("PNG demo\nJulian Smart (c) 1998", - "About PNG Demo", wxOK); + (void)wxMessageBox(_T("PNG demo\nJulian Smart (c) 1998"), + _T("About PNG Demo"), wxOK); } void MyFrame::OnSaveFile(wxCommandEvent& WXUNUSED(event)) @@ -114,7 +114,7 @@ void MyFrame::OnSaveFile(wxCommandEvent& WXUNUSED(event)) (const wxChar *)NULL, wxT("png"), wxT("PNG files (*.png)|*.png") ); - if (f == "") return; + if (f == _T("")) return; wxBitmap *backstore = new wxBitmap( 150, 150 ); @@ -127,7 +127,7 @@ void MyFrame::OnSaveFile(wxCommandEvent& WXUNUSED(event)) memDC.SetPen( *wxBLACK_PEN ); memDC.DrawLine( 0, 0, 0, 10 ); memDC.SetTextForeground( *wxWHITE ); - memDC.DrawText( "This is a memory dc.", 10, 10 ); + memDC.DrawText( _T("This is a memory dc."), 10, 10 ); memDC.SelectObject( wxNullBitmap ); @@ -143,7 +143,7 @@ void MyFrame::OnLoadFile(wxCommandEvent& WXUNUSED(event)) (const wxChar *) NULL, wxT("png"), wxT("PNG files (*.png)|*.png")); - if (f == "") + if (f == _T("")) return; if ( g_TestBitmap ) diff --git a/samples/printing/makefile.wat b/samples/printing/makefile.wat index ebd7bff092..a2f9815c10 100644 --- a/samples/printing/makefile.wat +++ b/samples/printing/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = printing -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\printing +# +PROGRAM = printing +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/printing/printing.cpp b/samples/printing/printing.cpp index 274b222b20..0ce10f7655 100644 --- a/samples/printing/printing.cpp +++ b/samples/printing/printing.cpp @@ -64,7 +64,7 @@ wxPageSetupData* g_pageSetupData = (wxPageSetupData*) NULL; IMPLEMENT_APP(MyApp) // Writes a header on a page. Margin units are in millimetres. -bool WritePageHeader(wxPrintout *printout, wxDC *dc, char *text, float mmToLogical); +bool WritePageHeader(wxPrintout *printout, wxDC *dc, wxChar *text, float mmToLogical); MyApp::MyApp() { @@ -80,7 +80,7 @@ bool MyApp::OnInit(void) g_pageSetupData = new wxPageSetupDialogData; // Create the main frame window - frame = new MyFrame((wxFrame *) NULL, (char *) "wxWindows Printing Demo", wxPoint(0, 0), wxSize(400, 400)); + frame = new MyFrame((wxFrame *) NULL, _T("wxWindows Printing Demo"), wxPoint(0, 0), wxSize(400, 400)); // Give it a status line frame->CreateStatusBar(2); @@ -91,10 +91,10 @@ bool MyApp::OnInit(void) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(WXPRINT_PRINT, "&Print...", "Print"); - file_menu->Append(WXPRINT_PRINT_SETUP, "Print &Setup...", "Setup printer properties"); - file_menu->Append(WXPRINT_PAGE_SETUP, "Page Set&up...", "Page setup"); - file_menu->Append(WXPRINT_PREVIEW, "Print Pre&view", "Preview"); + file_menu->Append(WXPRINT_PRINT, _T("&Print..."), _T("Print")); + file_menu->Append(WXPRINT_PRINT_SETUP, _T("Print &Setup..."), _T("Setup printer properties")); + file_menu->Append(WXPRINT_PAGE_SETUP, _T("Page Set&up..."), _T("Page setup")); + file_menu->Append(WXPRINT_PREVIEW, _T("Print Pre&view"), _T("Preview")); #if wxUSE_ACCEL // Accelerators @@ -106,21 +106,21 @@ bool MyApp::OnInit(void) #if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW file_menu->AppendSeparator(); - file_menu->Append(WXPRINT_PRINT_PS, "Print PostScript...", "Print (PostScript)"); - file_menu->Append(WXPRINT_PRINT_SETUP_PS, "Print Setup PostScript...", "Setup printer properties (PostScript)"); - file_menu->Append(WXPRINT_PAGE_SETUP_PS, "Page Setup PostScript...", "Page setup (PostScript)"); - file_menu->Append(WXPRINT_PREVIEW_PS, "Print Preview PostScript", "Preview (PostScript)"); + file_menu->Append(WXPRINT_PRINT_PS, _T("Print PostScript..."), _T("Print (PostScript)")); + file_menu->Append(WXPRINT_PRINT_SETUP_PS, _T("Print Setup PostScript..."), _T("Setup printer properties (PostScript)")); + file_menu->Append(WXPRINT_PAGE_SETUP_PS, _T("Page Setup PostScript..."), _T("Page setup (PostScript)")); + file_menu->Append(WXPRINT_PREVIEW_PS, _T("Print Preview PostScript"), _T("Preview (PostScript)")); #endif file_menu->AppendSeparator(); - file_menu->Append(WXPRINT_QUIT, "E&xit", "Exit program"); + file_menu->Append(WXPRINT_QUIT, _T("E&xit"), _T("Exit program")); wxMenu *help_menu = new wxMenu; - help_menu->Append(WXPRINT_ABOUT, "&About", "About this demo"); + help_menu->Append(WXPRINT_ABOUT, _T("&About"), _T("About this demo")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -135,7 +135,7 @@ bool MyApp::OnInit(void) frame->Centre(wxBOTH); frame->Show(TRUE); - frame->SetStatusText("Printing demo"); + frame->SetStatusText(_T("Printing demo")); SetTopWindow(frame); @@ -182,13 +182,13 @@ void MyFrame::OnPrint(wxCommandEvent& WXUNUSED(event)) wxPrintDialogData printDialogData(* g_printData); wxPrinter printer(& printDialogData); - MyPrintout printout("My printout"); + MyPrintout printout(_T("My printout")); if (!printer.Print(this, &printout, TRUE)) { if (wxPrinter::GetLastError() == wxPRINTER_ERROR) - wxMessageBox("There was a problem printing.\nPerhaps your current printer is not set correctly?", "Printing", wxOK); + wxMessageBox(_T("There was a problem printing.\nPerhaps your current printer is not set correctly?"), _T("Printing"), wxOK); else - wxMessageBox("You canceled printing", "Printing", wxOK); + wxMessageBox(_T("You canceled printing"), _T("Printing"), wxOK); } else { @@ -204,11 +204,11 @@ void MyFrame::OnPrintPreview(wxCommandEvent& WXUNUSED(event)) if (!preview->Ok()) { delete preview; - wxMessageBox("There was a problem previewing.\nPerhaps your current printer is not set correctly?", "Previewing", wxOK); + wxMessageBox(_T("There was a problem previewing.\nPerhaps your current printer is not set correctly?"), _T("Previewing"), wxOK); return; } - wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650)); + wxPreviewFrame *frame = new wxPreviewFrame(preview, this, _T("Demo Print Preview"), wxPoint(100, 100), wxSize(600, 650)); frame->Centre(wxBOTH); frame->Initialize(); frame->Show(TRUE); @@ -240,7 +240,7 @@ void MyFrame::OnPageSetup(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnPrintPS(wxCommandEvent& WXUNUSED(event)) { wxPostScriptPrinter printer(g_printData); - MyPrintout printout("My printout"); + MyPrintout printout(_T("My printout")); printer.Print(this, &printout, TRUE); (*g_printData) = printer.GetPrintData(); @@ -251,7 +251,7 @@ void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event)) // Pass two printout objects: for preview, and possible printing. wxPrintDialogData printDialogData(* g_printData); wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout, & printDialogData); - wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650)); + wxPreviewFrame *frame = new wxPreviewFrame(preview, this, _T("Demo Print Preview"), wxPoint(100, 100), wxSize(600, 650)); frame->Centre(wxBOTH); frame->Initialize(); frame->Show(TRUE); @@ -283,8 +283,8 @@ void MyFrame::OnPageSetupPS(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnPrintAbout(wxCommandEvent& WXUNUSED(event)) { - (void)wxMessageBox("wxWindows printing demo\nAuthor: Julian Smart", - "About wxWindows printing demo", wxOK|wxCENTRE); + (void)wxMessageBox(_T("wxWindows printing demo\nAuthor: Julian Smart"), + _T("About wxWindows printing demo"), wxOK|wxCENTRE); } void MyFrame::Draw(wxDC& dc) @@ -366,7 +366,7 @@ bool MyPrintout::OnPrintPage(int page) wxChar buf[200]; wxSprintf(buf, wxT("PAGE %d"), page); - dc->DrawText(buf, 10, 10); + // dc->DrawText(buf, 10, 10); return TRUE; } @@ -432,6 +432,7 @@ void MyPrintout::DrawPageOne(wxDC *dc) // Set the scale and origin dc->SetUserScale(actualScale, actualScale); dc->SetDeviceOrigin( (long)posX, (long)posY ); + //dc->SetUserScale(1.0, 1.0); frame->Draw(*dc); } @@ -487,7 +488,7 @@ void MyPrintout::DrawPageTwo(wxDC *dc) { // GetTextExtent demo: - wxString words[7] = {"This ", "is ", "GetTextExtent ", "testing ", "string. ", "Enjoy ", "it!"}; + wxString words[7] = {_T("This "), _T("is "), _T("GetTextExtent "), _T("testing "), _T("string. "), _T("Enjoy "), _T("it!")}; long w, h; long x = 200, y= 250; wxFont fnt(15, wxSWISS, wxNORMAL, wxNORMAL); @@ -502,7 +503,7 @@ void MyPrintout::DrawPageTwo(wxDC *dc) dc->SetFont(* wxGetApp().m_testFont); } - dc->DrawText("Some test text", 200, 300 ); + dc->DrawText(_T("Some test text"), 200, 300 ); // TESTING @@ -525,11 +526,11 @@ void MyPrintout::DrawPageTwo(wxDC *dc) dc->DrawLine( (long)leftMarginLogical, (long)bottomMarginLogical, (long)rightMarginLogical, (long)bottomMarginLogical); - WritePageHeader(this, dc, "A header", logUnitsFactor); + WritePageHeader(this, dc, _T("A header"), logUnitsFactor); } // Writes a header on a page. Margin units are in millimetres. -bool WritePageHeader(wxPrintout *printout, wxDC *dc, char *text, float mmToLogical) +bool WritePageHeader(wxPrintout *printout, wxDC *dc, wxChar *text, float mmToLogical) { /* static wxFont *headerFont = (wxFont *) NULL; diff --git a/samples/printing/printing.dsp b/samples/printing/printing.dsp index 6215f45a24..1bcac847e1 100644 --- a/samples/printing/printing.dsp +++ b/samples/printing/printing.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "printing - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "printing - Win32 Release" diff --git a/samples/printing/printing.h b/samples/printing/printing.h index 927676794c..46276c2428 100644 --- a/samples/printing/printing.h +++ b/samples/printing/printing.h @@ -70,7 +70,7 @@ DECLARE_EVENT_TABLE() class MyPrintout: public wxPrintout { public: - MyPrintout(char *title = "My printout"):wxPrintout(title) {} + MyPrintout(wxChar *title = _T("My printout")):wxPrintout(title) {} bool OnPrintPage(int page); bool HasPage(int page); bool OnBeginDocument(int startPage, int endPage); diff --git a/samples/proplist/makefile.wat b/samples/proplist/makefile.wat index b2a02cf03d..65f38d1c04 100644 --- a/samples/proplist/makefile.wat +++ b/samples/proplist/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for proplist example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = proplist -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\proplist +# +PROGRAM = proplist +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/proplist/proplist.cpp b/samples/proplist/proplist.cpp index b64a165092..8c04d7d35c 100644 --- a/samples/proplist/proplist.cpp +++ b/samples/proplist/proplist.cpp @@ -47,25 +47,25 @@ bool MyApp::OnInit(void) RegisterValidators(); // Create the main frame window - m_mainFrame = new MyFrame(NULL, "wxPropertySheet Demo", wxPoint(0, 0), wxSize(300, 400), wxDEFAULT_FRAME_STYLE); + m_mainFrame = new MyFrame(NULL, _T("wxPropertySheet Demo"), wxPoint(0, 0), wxSize(300, 400), wxDEFAULT_FRAME_STYLE); // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(PROPERTY_TEST_DIALOG_LIST, "Test property list &dialog..."); - file_menu->Append(PROPERTY_TEST_FRAME_LIST, "Test property list &frame..."); + file_menu->Append(PROPERTY_TEST_DIALOG_LIST, _T("Test property list &dialog...")); + file_menu->Append(PROPERTY_TEST_FRAME_LIST, _T("Test property list &frame...")); file_menu->AppendSeparator(); - file_menu->Append(PROPERTY_TEST_DIALOG_FORM, "Test property form d&ialog..."); - file_menu->Append(PROPERTY_TEST_FRAME_FORM, "Test property form f&rame..."); + file_menu->Append(PROPERTY_TEST_DIALOG_FORM, _T("Test property form d&ialog...")); + file_menu->Append(PROPERTY_TEST_FRAME_FORM, _T("Test property form f&rame...")); file_menu->AppendSeparator(); - file_menu->Append(PROPERTY_QUIT, "E&xit"); + file_menu->Append(PROPERTY_QUIT, _T("E&xit")); wxMenu *help_menu = new wxMenu; - help_menu->Append(PROPERTY_ABOUT, "&About"); + help_menu->Append(PROPERTY_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame m_mainFrame->SetMenuBar(menu_bar); @@ -133,21 +133,21 @@ void MyFrame::OnFrameForm(wxCommandEvent& event) void MyFrame::OnAbout(wxCommandEvent& event) { - (void)wxMessageBox("Property Classes Demo\nAuthor: Julian Smart", "About Property Classes Test"); + (void)wxMessageBox(_T("Property Classes Demo\nAuthor: Julian Smart"), _T("About Property Classes Test")); } void MyApp::RegisterValidators(void) { - myListValidatorRegistry.RegisterValidator((wxString)"real", new wxRealListValidator); - myListValidatorRegistry.RegisterValidator((wxString)"string", new wxStringListValidator); - myListValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerListValidator); - myListValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolListValidator); - myListValidatorRegistry.RegisterValidator((wxString)"stringlist", new wxListOfStringsListValidator); + myListValidatorRegistry.RegisterValidator((wxString)_T("real"), new wxRealListValidator); + myListValidatorRegistry.RegisterValidator((wxString)_T("string"), new wxStringListValidator); + myListValidatorRegistry.RegisterValidator((wxString)_T("integer"), new wxIntegerListValidator); + myListValidatorRegistry.RegisterValidator((wxString)_T("bool"), new wxBoolListValidator); + myListValidatorRegistry.RegisterValidator((wxString)_T("stringlist"), new wxListOfStringsListValidator); - myFormValidatorRegistry.RegisterValidator((wxString)"real", new wxRealFormValidator); - myFormValidatorRegistry.RegisterValidator((wxString)"string", new wxStringFormValidator); - myFormValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerFormValidator); - myFormValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)_T("real"), new wxRealFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)_T("string"), new wxStringFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)_T("integer"), new wxIntegerFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)_T("bool"), new wxBoolFormValidator); } void MyApp::PropertyListTest(bool useDialog) @@ -157,17 +157,17 @@ void MyApp::PropertyListTest(bool useDialog) wxPropertySheet *sheet = new wxPropertySheet; - sheet->AddProperty(new wxProperty("fred", 1.0, "real")); - sheet->AddProperty(new wxProperty("tough choice", (bool)TRUE, "bool")); - sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerListValidator(-50, 50))); - sheet->AddProperty(new wxProperty("bill", 25.0, "real", new wxRealListValidator(0.0, 100.0))); - sheet->AddProperty(new wxProperty("julian", "one", "string")); - sheet->AddProperty(new wxProperty("bitmap", "none", "string", new wxFilenameListValidator("Select a bitmap file", "*.bmp"))); + sheet->AddProperty(new wxProperty(_T("fred"), 1.0, _T("real"))); + sheet->AddProperty(new wxProperty(_T("tough choice"), (bool)TRUE, _T("bool"))); + sheet->AddProperty(new wxProperty(_T("ian"), (long)45, _T("integer"), new wxIntegerListValidator(-50, 50))); + sheet->AddProperty(new wxProperty(_T("bill"), 25.0, _T("real"), new wxRealListValidator(0.0, 100.0))); + sheet->AddProperty(new wxProperty(_T("julian"), _T("one"), _T("string"))); + sheet->AddProperty(new wxProperty(_T("bitmap"), _T("none"), _T("string"), new wxFilenameListValidator(_T("Select a bitmap file"), _T("*.bmp")))); wxStringList *strings = new wxStringList(wxT("one"), wxT("two"), wxT("three"), NULL); - sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringListValidator(strings))); + sheet->AddProperty(new wxProperty(_T("constrained"), _T("one"), _T("string"), new wxStringListValidator(strings))); wxStringList *strings2 = new wxStringList(wxT("earth"), wxT("fire"), wxT("wind"), wxT("water"), NULL); - sheet->AddProperty(new wxProperty("string list", strings2, "stringlist")); + sheet->AddProperty(new wxProperty(_T("string list"), strings2, _T("stringlist"))); wxPropertyListView *view = new wxPropertyListView ( @@ -180,13 +180,13 @@ void MyApp::PropertyListTest(bool useDialog) wxPropertyListFrame *propFrame = NULL; if (useDialog) { - propDialog = new PropListDialog(view, NULL, "Property Sheet Test", + propDialog = new PropListDialog(view, NULL, _T("Property Sheet Test"), wxPoint(-1, -1), wxSize(400, 500), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODELESS); m_childWindow = propDialog; } else { - propFrame = new PropListFrame(view, NULL, "Property Sheet Test", wxPoint(-1, -1), wxSize(400, 500)); + propFrame = new PropListFrame(view, NULL, _T("Property Sheet Test"), wxPoint(-1, -1), wxSize(400, 500)); m_childWindow = propFrame; } @@ -215,12 +215,12 @@ void MyApp::PropertyFormTest(bool useDialog) wxPropertySheet *sheet = new wxPropertySheet; - sheet->AddProperty(new wxProperty("fred", 25.0, "real", new wxRealFormValidator(0.0, 100.0))); - sheet->AddProperty(new wxProperty("tough choice", (bool)TRUE, "bool")); - sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerFormValidator(-50, 50))); - sheet->AddProperty(new wxProperty("julian", "one", "string")); + sheet->AddProperty(new wxProperty(_T("fred"), 25.0, _T("real"), new wxRealFormValidator(0.0, 100.0))); + sheet->AddProperty(new wxProperty(_T("tough choice"), (bool)TRUE, _T("bool"))); + sheet->AddProperty(new wxProperty(_T("ian"), (long)45, _T("integer"), new wxIntegerFormValidator(-50, 50))); + sheet->AddProperty(new wxProperty(_T("julian"), _T("one"), _T("string"))); wxStringList *strings = new wxStringList(wxT("one"), wxT("two"), wxT("three"), NULL); - sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringFormValidator(strings))); + sheet->AddProperty(new wxProperty(_T("constrained"), _T("one"), _T("string"), new wxStringFormValidator(strings))); wxPropertyFormView *view = new wxPropertyFormView(NULL); @@ -229,13 +229,13 @@ void MyApp::PropertyFormTest(bool useDialog) if (useDialog) { - propDialog = new PropFormDialog(view, NULL, "Property Form Test", + propDialog = new PropFormDialog(view, NULL, _T("Property Form Test"), wxPoint(-1, -1), wxSize(380, 250), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL); m_childWindow = propDialog; } else { - propFrame = new PropFormFrame(view, NULL, "Property Form Test", + propFrame = new PropFormFrame(view, NULL, _T("Property Form Test"), wxPoint(-1, -1), wxSize(380, 250)); propFrame->Initialize(); m_childWindow = propFrame; @@ -268,14 +268,14 @@ void MyApp::PropertyFormTest(bool useDialog) #endif // Add items to the panel - wxButton *okButton = new wxButton(panel, wxID_OK, "OK", wxPoint(-1, -1), - wxSize(80, 26), 0, wxDefaultValidator, "ok"); - wxButton *cancelButton = new wxButton(panel, wxID_CANCEL, "Cancel", wxPoint(-1, -1), - wxSize(80, 26), 0, wxDefaultValidator, "cancel"); - wxButton *updateButton = new wxButton(panel, wxID_PROP_UPDATE, "Update", wxPoint(-1, -1), - wxSize(80, 26), 0, wxDefaultValidator, "update"); - wxButton *revertButton = new wxButton(panel, wxID_PROP_REVERT, "Revert", wxPoint(-1, -1), - wxSize(80, 26), 0, wxDefaultValidator, "revert"); + wxButton *okButton = new wxButton(panel, wxID_OK, _T("OK"), wxPoint(-1, -1), + wxSize(80, 26), 0, wxDefaultValidator, _T("ok")); + wxButton *cancelButton = new wxButton(panel, wxID_CANCEL, _T("Cancel"), wxPoint(-1, -1), + wxSize(80, 26), 0, wxDefaultValidator, _T("cancel")); + wxButton *updateButton = new wxButton(panel, wxID_PROP_UPDATE, _T("Update"), wxPoint(-1, -1), + wxSize(80, 26), 0, wxDefaultValidator, _T("update")); + wxButton *revertButton = new wxButton(panel, wxID_PROP_REVERT, _T("Revert"), wxPoint(-1, -1), + wxSize(80, 26), 0, wxDefaultValidator, _T("revert")); c = new wxLayoutConstraints; c->right.SameAs(panel, wxRight, 4); @@ -306,8 +306,8 @@ void MyApp::PropertyFormTest(bool useDialog) okButton->SetConstraints(c); // The name of this text item matches the "fred" property - wxTextCtrl *text = new wxTextCtrl(panel, -1, "Fred", wxPoint(-1, -1), wxSize( - 200, -1), 0, wxDefaultValidator, "fred"); + wxTextCtrl *text = new wxTextCtrl(panel, -1, _T("Fred"), wxPoint(-1, -1), wxSize( + 200, -1), 0, wxDefaultValidator, _T("fred")); c = new wxLayoutConstraints; c->left.SameAs(panel, wxLeft, 4); @@ -316,8 +316,8 @@ void MyApp::PropertyFormTest(bool useDialog) c->width.AsIs(); text->SetConstraints(c); - wxCheckBox *checkBox = new wxCheckBox(panel, -1, "Yes or no", wxPoint(-1, -1), - wxSize(-1, -1), 0, wxDefaultValidator, "tough choice"); + wxCheckBox *checkBox = new wxCheckBox(panel, -1, _T("Yes or no"), wxPoint(-1, -1), + wxSize(-1, -1), 0, wxDefaultValidator, _T("tough choice")); c = new wxLayoutConstraints; c->left.SameAs(text, wxRight, 20); @@ -327,7 +327,7 @@ void MyApp::PropertyFormTest(bool useDialog) checkBox->SetConstraints(c); wxSlider *slider = new wxSlider(panel, -1, -50, 50, 150, wxPoint(-1, -1), - wxSize(200,10), 0, wxDefaultValidator, "ian"); + wxSize(200,10), 0, wxDefaultValidator, _T("ian")); c = new wxLayoutConstraints; c->left.SameAs(panel, wxLeft, 4); @@ -337,7 +337,7 @@ void MyApp::PropertyFormTest(bool useDialog) slider->SetConstraints(c); wxListBox *listBox = new wxListBox(panel, -1, wxPoint(-1, -1), - wxSize(200, 100), 0, NULL, 0, wxDefaultValidator, "constrained"); + wxSize(200, 100), 0, NULL, 0, wxDefaultValidator, _T("constrained")); c = new wxLayoutConstraints; c->left.SameAs(panel, wxLeft, 4); diff --git a/samples/proplist/proplist.dsp b/samples/proplist/proplist.dsp index 53b4bde49b..cb4bbf25fa 100644 --- a/samples/proplist/proplist.dsp +++ b/samples/proplist/proplist.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "proplist - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "proplist - Win32 Release" diff --git a/samples/proplist/proplist.h b/samples/proplist/proplist.h index a277b1c85f..f984f05655 100644 --- a/samples/proplist/proplist.h +++ b/samples/proplist/proplist.h @@ -61,7 +61,7 @@ class PropListFrame: public wxPropertyListFrame public: PropListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"): + long style = wxDEFAULT_FRAME_STYLE, const wxString& name = _T("frame")): wxPropertyListFrame(v, parent, title, pos, size, style, name) { } @@ -76,7 +76,7 @@ class PropListDialog: public wxPropertyListDialog public: PropListDialog(wxPropertyListView *v, wxWindow *parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = "dialogBox"): + long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = _T("dialogBox")): wxPropertyListDialog(v, parent, title, pos, size, style, name) { } @@ -91,7 +91,7 @@ class PropFormFrame: public wxPropertyFormFrame public: PropFormFrame(wxPropertyFormView *v, wxFrame *parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"): + long style = wxDEFAULT_FRAME_STYLE, const wxString& name = _T("frame")): wxPropertyFormFrame(v, parent, title, pos, size, style, name) { } @@ -107,7 +107,7 @@ class PropFormDialog: public wxPropertyFormDialog public: PropFormDialog(wxPropertyFormView *v, wxWindow *parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = "dialogBox"): + long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = _T("dialogBox")): wxPropertyFormDialog(v, parent, title, pos, size, style, name) { } diff --git a/samples/propsize/makefile.wat b/samples/propsize/makefile.wat index f2cfc53c1d..e2786e7aa5 100644 --- a/samples/propsize/makefile.wat +++ b/samples/propsize/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for propsize example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = propsize -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\propsize +# +PROGRAM = propsize +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/propsize/propsize.cpp b/samples/propsize/propsize.cpp index d17a0e57f5..ac01949d32 100644 --- a/samples/propsize/propsize.cpp +++ b/samples/propsize/propsize.cpp @@ -119,7 +119,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window - MyFrame *frame = new MyFrame("Proportional resize", + MyFrame *frame = new MyFrame(_T("Proportional resize"), wxPoint(50, 50), wxSize(450, 340)); // Show it and tell the application that it's our main window @@ -145,15 +145,15 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) SetIcon(wxICON(mondrian)); // create a menu bar - wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF); + wxMenu *menuFile = new wxMenu(_T(""), wxMENU_TEAROFF); - menuFile->Append(wxID_ABOUT, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(wxID_ABOUT, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Minimal_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _T("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -161,7 +161,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) #if wxUSE_STATUSBAR // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(1); - SetStatusText("Resize the frame to see how controls react"); + SetStatusText(_T("Resize the frame to see how controls react")); #endif // wxUSE_STATUSBAR #define AddLine(orient) \ @@ -175,42 +175,42 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); // top row -- top-aligned wxBoxSizer *hsizer1 = new wxBoxSizer( wxHORIZONTAL ); - hsizer1->AddButton( "one", wxALIGN_LEFT | wxALIGN_TOP); + hsizer1->AddButton( _T("one"), wxALIGN_LEFT | wxALIGN_TOP); hsizer1->AddLine(wxVERTICAL); - hsizer1->AddButton( "two", wxALIGN_CENTER_HORIZONTAL | wxALIGN_TOP); + hsizer1->AddButton( _T("two"), wxALIGN_CENTER_HORIZONTAL | wxALIGN_TOP); hsizer1->AddLine(wxVERTICAL); - hsizer1->AddButton( "three", wxALIGN_RIGHT | wxALIGN_TOP); + hsizer1->AddButton( _T("three"), wxALIGN_RIGHT | wxALIGN_TOP); topsizer->Add(hsizer1, 1, wxEXPAND); topsizer->AddLine(wxHORIZONTAL); wxBoxSizer *hsizer2 = new wxBoxSizer( wxHORIZONTAL ); - hsizer2->AddButton( "four", wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); + hsizer2->AddButton( _T("four"), wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); hsizer2->AddLine(wxVERTICAL); // sizer that preserves it's shape wxBoxSizer *vsizer = new wxBoxSizer( wxVERTICAL ); vsizer->Add( - new wxButton( this, -1, "up", wxDefaultPosition, wxSize(100,25) ), + new wxButton( this, -1, _T("up"), wxDefaultPosition, wxSize(100,25) ), 1, wxEXPAND); vsizer->Add( - new wxButton( this, -1, "down", wxDefaultPosition, wxSize(100,25) ), + new wxButton( this, -1, _T("down"), wxDefaultPosition, wxSize(100,25) ), 1, wxEXPAND); hsizer2->Add(vsizer, 1, wxSHAPED | wxALIGN_CENTER); hsizer2->AddLine(wxVERTICAL); - hsizer2->AddButton( "six", wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); + hsizer2->AddButton( _T("six"), wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); topsizer->Add(hsizer2, 1, wxEXPAND); topsizer->AddLine(wxHORIZONTAL); wxBoxSizer *hsizer3 = new wxBoxSizer( wxHORIZONTAL ); - hsizer3->AddButton( "seven", wxALIGN_LEFT | wxALIGN_BOTTOM); + hsizer3->AddButton( _T("seven"), wxALIGN_LEFT | wxALIGN_BOTTOM); hsizer3->AddLine(wxVERTICAL); - hsizer3->AddButton( "eight", wxALIGN_CENTER_HORIZONTAL | wxALIGN_BOTTOM); + hsizer3->AddButton( _T("eight"), wxALIGN_CENTER_HORIZONTAL | wxALIGN_BOTTOM); hsizer3->AddLine(wxVERTICAL); // wxEXPAND should have no effect - hsizer3->AddButton( "nine", wxEXPAND | wxALIGN_RIGHT | wxALIGN_BOTTOM); + hsizer3->AddButton( _T("nine"), wxEXPAND | wxALIGN_RIGHT | wxALIGN_BOTTOM); topsizer->Add(hsizer3, 1, wxEXPAND); @@ -246,5 +246,5 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) #endif // wxBETA_NUMBER ); - wxMessageBox(msg, "About Shaped Sizer", wxOK | wxICON_INFORMATION, this); + wxMessageBox(msg, _T("About Shaped Sizer"), wxOK | wxICON_INFORMATION, this); } diff --git a/samples/propsize/propsize.dsp b/samples/propsize/propsize.dsp index c8bcc99c87..ad707f9e80 100644 --- a/samples/propsize/propsize.dsp +++ b/samples/propsize/propsize.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "propsize - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "propsize - Win32 Release" diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in new file mode 100644 index 0000000000..4ad13b651f --- /dev/null +++ b/samples/regtest/Makefile.in @@ -0,0 +1,23 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1998 +# Updated: +# Copyright: (c) 1998 Julian Smart +# +# "%W% %G%" +# +# Makefile for regtest example (UNIX). + +top_srcdir = @top_srcdir@/.. +top_builddir = ../.. +program_dir = samples/regtest + +PROGRAM=regtest + +OBJECTS =$(PROGRAM).o +DEPFILES=$(PROGRAM).d + +include ../../src/makeprog.env + +@IF_GNU_MAKE@-include $(DEPFILES) diff --git a/samples/regtest/makefile.wat b/samples/regtest/makefile.wat index b673bbc73e..d740d57afc 100644 --- a/samples/regtest/makefile.wat +++ b/samples/regtest/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = regtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\regtest +# +PROGRAM = regtest +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/regtest/regtest.cpp b/samples/regtest/regtest.cpp index d08d4a8459..9e4c080e48 100644 --- a/samples/regtest/regtest.cpp +++ b/samples/regtest/regtest.cpp @@ -172,7 +172,7 @@ class RegFrame : public wxFrame { public: // ctor & dtor - RegFrame(wxFrame *parent, char *title, int x, int y, int w, int h); + RegFrame(wxFrame *parent, wxChar *title, int x, int y, int w, int h); virtual ~RegFrame(); // callbacks @@ -273,23 +273,23 @@ END_EVENT_TABLE() wxMenu *CreateRegistryMenu() { wxMenu *pMenuNew = new wxMenu; - pMenuNew->Append(Menu_NewKey, "&Key", "Create a new key"); + pMenuNew->Append(Menu_NewKey, _T("&Key"), _T("Create a new key")); pMenuNew->AppendSeparator(); - pMenuNew->Append(Menu_NewText, "&Text value", "Create a new text value"); - pMenuNew->Append(Menu_NewBinary, "&Binary value", "Create a new binary value"); + pMenuNew->Append(Menu_NewText, _T("&Text value"), _T("Create a new text value")); + pMenuNew->Append(Menu_NewBinary, _T("&Binary value"), _T("Create a new binary value")); wxMenu *pMenuReg = new wxMenu; - pMenuReg->Append(Menu_New, "&New", pMenuNew); - pMenuReg->Append(Menu_Delete, "&Delete...", "Delete selected key/value"); + pMenuReg->Append(Menu_New, _T("&New"), pMenuNew); + pMenuReg->Append(Menu_Delete, _T("&Delete..."), _T("Delete selected key/value")); pMenuReg->AppendSeparator(); - pMenuReg->Append(Menu_GoTo, "&Go to...\tCtrl-G", "Go to registry key"); - pMenuReg->Append(Menu_Expand, "&Expand", "Expand current key"); - pMenuReg->Append(Menu_Collapse, "&Collapse", "Collapse current key"); - pMenuReg->Append(Menu_Toggle, "&Toggle", "Toggle current key"); + pMenuReg->Append(Menu_GoTo, _T("&Go to...\tCtrl-G"), _T("Go to registry key")); + pMenuReg->Append(Menu_Expand, _T("&Expand"), _T("Expand current key")); + pMenuReg->Append(Menu_Collapse, _T("&Collapse"), _T("Collapse current key")); + pMenuReg->Append(Menu_Toggle, _T("&Toggle"), _T("Toggle current key")); pMenuReg->AppendSeparator(); - pMenuReg->Append(Menu_Refresh, "&Refresh", "Refresh the subtree"); + pMenuReg->Append(Menu_Refresh, _T("&Refresh"), _T("Refresh the subtree")); pMenuReg->AppendSeparator(); - pMenuReg->Append(Menu_Info, "&Properties","Information about current selection"); + pMenuReg->Append(Menu_Info, _T("&Properties"),_T("Information about current selection")); return pMenuReg; } @@ -303,7 +303,7 @@ IMPLEMENT_APP(RegApp) bool RegApp::OnInit() { // create the main frame window and show it - RegFrame *frame = new RegFrame(NULL, "wxRegTest", 50, 50, 600, 350); + RegFrame *frame = new RegFrame(NULL, _T("wxRegTest"), 50, 50, 600, 350); frame->Show(TRUE); SetTopWindow(frame); @@ -315,7 +315,7 @@ bool RegApp::OnInit() // RegFrame // ---------------------------------------------------------------------------- -RegFrame::RegFrame(wxFrame *parent, char *title, int x, int y, int w, int h) +RegFrame::RegFrame(wxFrame *parent, wxChar *title, int x, int y, int w, int h) : wxFrame(parent, -1, title, wxPoint(x, y), wxSize(w, h)) { // this reduces flicker effects @@ -323,20 +323,20 @@ RegFrame::RegFrame(wxFrame *parent, char *title, int x, int y, int w, int h) // set the icon // ------------ - SetIcon(wxIcon("app_icon")); + SetIcon(wxIcon(_T("app_icon"))); // create menu // ----------- wxMenu *pMenuFile = new wxMenu; - pMenuFile->Append(Menu_Test, "Te&st", "Test key creation"); + pMenuFile->Append(Menu_Test, _T("Te&st"), _T("Test key creation")); pMenuFile->AppendSeparator(); - pMenuFile->Append(Menu_About, "&About...", "Show an extraordinarly beautiful dialog"); + pMenuFile->Append(Menu_About, _T("&About..."), _T("Show an extraordinarly beautiful dialog")); pMenuFile->AppendSeparator(); - pMenuFile->Append(Menu_Quit, "E&xit", "Quit this program"); + pMenuFile->Append(Menu_Quit, _T("E&xit"), _T("Quit this program")); wxMenuBar *pMenu = new wxMenuBar; - pMenu->Append(pMenuFile, "&File"); - pMenu->Append(CreateRegistryMenu(), "&Registry"); + pMenu->Append(pMenuFile, _T("&File")); + pMenu->Append(CreateRegistryMenu(), _T("&Registry")); SetMenuBar(pMenu); // create child controls @@ -362,9 +362,9 @@ void RegFrame::OnQuit(wxCommandEvent& event) void RegFrame::OnAbout(wxCommandEvent& event) { wxMessageDialog dialog(this, - "wxRegistry sample\n" - "© 1998, 2000 Vadim Zeitlin", - "About wxRegTest", wxOK); + _T("wxRegistry sample\n") + _T("© 1998, 2000 Vadim Zeitlin"), + _T("About wxRegTest"), wxOK); dialog.ShowModal(); } @@ -421,7 +421,7 @@ void RegFrame::OnNewKey(wxCommandEvent& WXUNUSED(event)) { if ( m_treeCtrl->IsKeySelected() ) { m_treeCtrl->CreateNewKey( - wxGetTextFromUser("Enter the name of the new key")); + wxGetTextFromUser(_T("Enter the name of the new key"))); } } @@ -429,7 +429,7 @@ void RegFrame::OnNewText(wxCommandEvent& WXUNUSED(event)) { if ( m_treeCtrl->IsKeySelected() ) { m_treeCtrl->CreateNewTextValue( - wxGetTextFromUser("Enter the name for the new text value")); + wxGetTextFromUser(_T("Enter the name for the new text value"))); } } @@ -437,7 +437,7 @@ void RegFrame::OnNewBinary(wxCommandEvent& WXUNUSED(event)) { if ( m_treeCtrl->IsKeySelected() ) { m_treeCtrl->CreateNewBinaryValue( - wxGetTextFromUser("Enter the name for the new binary value")); + wxGetTextFromUser(_T("Enter the name for the new binary value"))); } } @@ -452,8 +452,8 @@ void RegFrame::OnInfo(wxCommandEvent& WXUNUSED(event)) RegImageList::RegImageList() : wxImageList(16, 16, TRUE) { // should be in sync with enum RegImageList::RegIcon - static const char *aszIcons[] = { "key1","key2","key3","value1","value2" }; - wxString str = "icon_"; + static const wxChar *aszIcons[] = { _T("key1"),_T("key2"),_T("key3"),_T("value1"),_T("value2") }; + wxString str = _T("icon_"); for ( unsigned int n = 0; n < WXSIZEOF(aszIcons); n++ ) { Add(wxIcon(str + aszIcons[n], wxBITMAP_TYPE_ICO_RESOURCE)); } @@ -519,7 +519,7 @@ RegTreeCtrl::RegTreeCtrl(wxWindow *parent, wxWindowID id) // create root keys // ---------------- - m_pRoot = InsertNewTreeNode(NULL, "Registry Root", RegImageList::Root); + m_pRoot = InsertNewTreeNode(NULL, _T("Registry Root"), RegImageList::Root); // create popup menu // ----------------- @@ -590,14 +590,14 @@ void RegTreeCtrl::OnMenuTest() return; } - wxRegKey key1(pNode->Key(), "key1"); + wxRegKey key1(pNode->Key(), _T("key1")); if ( key1.Create() ) { - wxRegKey key2a(key1, "key2a"), key2b(key1, "key2b"); + wxRegKey key2a(key1, _T("key2a")), key2b(key1, _T("key2b")); if ( key2a.Create() && key2b.Create() ) { // put some values under the newly created keys - key1.SetValue(wxT("first_term"), "10"); - key1.SetValue(wxT("second_term"), "7"); - key2a = "this is the unnamed value"; + key1.SetValue(wxT("first_term"), _T("10")); + key1.SetValue(wxT("second_term"), _T("7")); + key2a = _T("this is the unnamed value"); key2b.SetValue(wxT("sum"), 17); // refresh tree @@ -639,7 +639,7 @@ void RegTreeCtrl::OnSelChanged(wxTreeEvent& event) void RegTreeCtrl::OnItemExpanding(wxTreeEvent& event) { TreeNode *pNode = GetNode(event); - bool bExpanding = event.GetCode() == wxTREE_EXPAND_EXPAND; + bool bExpanding = event.GetKeyCode() == wxTREE_EXPAND_EXPAND; // expansion might take some time wxSetCursor(*wxHOURGLASS_CURSOR); @@ -760,8 +760,8 @@ void RegTreeCtrl::OnEndDrag(wxTreeEvent& event) nameDst << wxString(dst->FullName()).AfterFirst('\\') << '\\' << wxString(src->FullName()).AfterLast('\\'); - wxString verb = m_copyOnDrop ? "copy" : "move"; - wxString what = isKey ? "key" : "value"; + wxString verb = m_copyOnDrop ? _T("copy") : _T("move"); + wxString what = isKey ? _T("key") : _T("value"); if ( wxMessageBox(wxString::Format ( @@ -771,7 +771,7 @@ void RegTreeCtrl::OnEndDrag(wxTreeEvent& event) nameSrc.c_str(), nameDst.c_str() ), - "RegTest Confirm", + _T("RegTest Confirm"), wxICON_QUESTION | wxYES_NO | wxCANCEL, this) != wxYES ) { return; } @@ -782,7 +782,7 @@ void RegTreeCtrl::OnEndDrag(wxTreeEvent& event) wxRegKey keyDst(dst->Key(), src->m_strName); ok = keyDst.Create(FALSE); if ( !ok ) { - wxLogError(wxT("Key '%s' already exists")); + wxLogError(wxT("Key '%s' already exists"), keyDst.GetName().c_str()); } else { ok = key.Copy(keyDst); @@ -868,10 +868,10 @@ bool RegTreeCtrl::TreeNode::OnExpand() while ( bCont ) { wxString strItem; if (str.IsEmpty()) - strItem = ""; + strItem = _T(""); else strItem = str; - strItem += " = "; + strItem += _T(" = "); // determine the appropriate icon RegImageList::Icon icon; @@ -1088,13 +1088,13 @@ void RegTreeCtrl::DeleteSelected() return; } - wxString what = pCurrent->IsKey() ? "key" : "value"; + wxString what = pCurrent->IsKey() ? _T("key") : _T("value"); if ( wxMessageBox(wxString::Format ( wxT("Do you really want to delete this %s?"), what.c_str() ), - "Confirmation", + _T("Confirmation"), wxICON_QUESTION | wxYES_NO | wxCANCEL, this) != wxYES ) { return; } @@ -1135,7 +1135,7 @@ void RegTreeCtrl::CreateNewTextValue(const wxString& strName) return; } - if ( pCurrent->Key().SetValue(strName, "") ) + if ( pCurrent->Key().SetValue(strName, _T("")) ) pCurrent->Refresh(); } diff --git a/samples/regtest/regtest.dsp b/samples/regtest/regtest.dsp index 4196beec12..c02e60d18b 100644 --- a/samples/regtest/regtest.dsp +++ b/samples/regtest/regtest.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "regtest - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "regtest - Win32 Release" diff --git a/samples/resource/makefile.wat b/samples/resource/makefile.wat index a2041fd638..399968055d 100644 --- a/samples/resource/makefile.wat +++ b/samples/resource/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = resource -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\resource +# +PROGRAM = resource +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/resource/resource.cpp b/samples/resource/resource.cpp index e29236c867..f076602f16 100644 --- a/samples/resource/resource.cpp +++ b/samples/resource/resource.cpp @@ -24,6 +24,10 @@ #include "wx/wx.h" #endif +#if !wxUSE_RESOURCES + #error "You should set wxUSE_RESOURCES to 1 to compile this sample" +#endif + #if wxUSE_UNICODE #error "This sample can't be compiled in Unicode mode." #endif // wxUSE_UNICODE diff --git a/samples/resource/resource.dsp b/samples/resource/resource.dsp index 5010adc6ec..a84d65666c 100644 --- a/samples/resource/resource.dsp +++ b/samples/resource/resource.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "resource - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "resource - Win32 Release" diff --git a/samples/rotate/makefile.wat b/samples/rotate/makefile.wat index ca68b34968..057d6b1bd8 100644 --- a/samples/rotate/makefile.wat +++ b/samples/rotate/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = rotate -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\rotate +# +PROGRAM = rotate +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/rotate/rotate.cpp b/samples/rotate/rotate.cpp index 2f26cf2a7e..c7eacc7ef7 100644 --- a/samples/rotate/rotate.cpp +++ b/samples/rotate/rotate.cpp @@ -89,7 +89,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { - m_image = wxImage("kclub.bmp", wxBITMAP_TYPE_BMP); + m_image = wxImage(_T("kclub.bmp"), wxBITMAP_TYPE_BMP); // any unused colour will do m_image.SetMaskColour( 0, 255, 255 ); @@ -101,7 +101,7 @@ bool MyApp::OnInit() return FALSE; } - MyFrame *frame = new MyFrame ("wxWindows rotate sample", + MyFrame *frame = new MyFrame (_T("wxWindows rotate sample"), wxPoint(20,20), wxSize(600,450)); frame->Show (TRUE); @@ -117,12 +117,12 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) new MyCanvas(this); wxMenu *menuFile = new wxMenu; - menuFile->Append (ID_Angle, "Set &angle\tCtrl-A"); + menuFile->Append (ID_Angle, _T("Set &angle\tCtrl-A")); menuFile->AppendSeparator(); - menuFile->Append (ID_Quit, "E&xit\tAlt-X"); + menuFile->Append (ID_Quit, _T("E&xit\tAlt-X")); wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append (menuFile, "&File"); + menuBar->Append (menuFile, _T("&File")); SetMenuBar (menuBar); } @@ -130,9 +130,9 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) void MyFrame::OnAngle (wxCommandEvent &) { long degrees = (long)((180*m_angle)/M_PI); - degrees = wxGetNumberFromUser("Change the image rotation angle", - "Angle in degrees:", - "wxWindows rotate sample", + degrees = wxGetNumberFromUser(_T("Change the image rotation angle"), + _T("Angle in degrees:"), + _T("wxWindows rotate sample"), degrees, -180, +180, this); diff --git a/samples/rotate/rotate.dsp b/samples/rotate/rotate.dsp index 64c9c8cef8..6167d0d2cb 100644 --- a/samples/rotate/rotate.dsp +++ b/samples/rotate/rotate.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "rotate - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "rotate - Win32 Release" diff --git a/samples/sashtest/makefile.wat b/samples/sashtest/makefile.wat index ddb80f3233..d6b4708f80 100644 --- a/samples/sashtest/makefile.wat +++ b/samples/sashtest/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for sashtest example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = sashtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\sashtest +# +PROGRAM = sashtest +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/sashtest/sashtest.cpp b/samples/sashtest/sashtest.cpp index f59fae02a0..d30052d896 100644 --- a/samples/sashtest/sashtest.cpp +++ b/samples/sashtest/sashtest.cpp @@ -42,33 +42,33 @@ bool MyApp::OnInit(void) { // Create the main frame window - frame = new MyFrame(NULL, -1, "Sash Demo", wxPoint(0, 0), wxSize(500, 400), + frame = new MyFrame(NULL, -1, _T("Sash Demo"), wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE | wxHSCROLL | wxVSCROLL); // Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - frame->SetIcon(wxIcon("sashtest_icn")); + frame->SetIcon(wxIcon(_T("sashtest_icn"))); #endif #ifdef __X__ - frame->SetIcon(wxIcon("sashtest.xbm")); + frame->SetIcon(wxIcon(_T("sashtest.xbm"))); #endif // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(SASHTEST_NEW_WINDOW, "&New window"); - file_menu->Append(SASHTEST_TOGGLE_WINDOW, "&Toggle window"); - file_menu->Append(SASHTEST_QUIT, "&Exit"); + file_menu->Append(SASHTEST_NEW_WINDOW, _T("&New window")); + file_menu->Append(SASHTEST_TOGGLE_WINDOW, _T("&Toggle window")); + file_menu->Append(SASHTEST_QUIT, _T("&Exit")); wxMenu *help_menu = new wxMenu; - help_menu->Append(SASHTEST_ABOUT, "&About"); + help_menu->Append(SASHTEST_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -136,10 +136,10 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c win->SetSashVisible(wxSASH_RIGHT, TRUE); win->SetExtraBorderSize(10); - wxTextCtrl* textWindow = new wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize, + wxTextCtrl* textWindow = new wxTextCtrl(win, -1, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxSUNKEN_BORDER); // wxTE_MULTILINE|wxNO_BORDER); - textWindow->SetValue("A help window"); + textWindow->SetValue(_T("A help window")); m_leftWindow1 = win; @@ -163,7 +163,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - (void)wxMessageBox("wxWindows 2.0 Sash Demo\nAuthor: Julian Smart (c) 1998", "About Sash Demo"); + (void)wxMessageBox(_T("wxWindows 2.0 Sash Demo\nAuthor: Julian Smart (c) 1998"), _T("About Sash Demo")); } void MyFrame::OnToggleWindow(wxCommandEvent& WXUNUSED(event)) @@ -218,19 +218,17 @@ void MyFrame::OnSashDrag(wxSashEvent& event) void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event)) { // Make another frame, containing a canvas - MyChild *subframe = new MyChild(frame, "Canvas Frame", + MyChild *subframe = new MyChild(frame, _T("Canvas Frame"), wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE); - char titleBuf[100]; - sprintf(titleBuf, "Canvas Frame %d", winNumber); - subframe->SetTitle(titleBuf); + subframe->SetTitle(wxString::Format(_T("Canvas Frame %d"), winNumber)); winNumber ++; // Give it an icon (this is ignored in MDI mode: uses resources) #ifdef __WXMSW__ - subframe->SetIcon(wxIcon("sashtest_icn")); + subframe->SetIcon(wxIcon(_T("sashtest_icn"))); #endif // Give it a status line @@ -239,23 +237,23 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event)) // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(SASHTEST_NEW_WINDOW, "&New window"); - file_menu->Append(SASHTEST_CHILD_QUIT, "&Close child"); - file_menu->Append(SASHTEST_QUIT, "&Exit"); + file_menu->Append(SASHTEST_NEW_WINDOW, _T("&New window")); + file_menu->Append(SASHTEST_CHILD_QUIT, _T("&Close child")); + file_menu->Append(SASHTEST_QUIT, _T("&Exit")); wxMenu *option_menu = new wxMenu; // Dummy option - option_menu->Append(SASHTEST_REFRESH, "&Refresh picture"); + option_menu->Append(SASHTEST_REFRESH, _T("&Refresh picture")); wxMenu *help_menu = new wxMenu; - help_menu->Append(SASHTEST_ABOUT, "&About"); + help_menu->Append(SASHTEST_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(option_menu, "&Options"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(option_menu, _T("&Options")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame subframe->SetMenuBar(menu_bar); @@ -302,7 +300,7 @@ void MyCanvas::OnDraw(wxDC& dc) dc.DrawSpline(50, 200, 50, 100, 200, 10); #endif // wxUSE_SPLINES dc.DrawLine(50, 230, 200, 230); - dc.DrawText("This is a test string", 50, 230); + dc.DrawText(_T("This is a test string"), 50, 230); wxPoint points[3]; points[0].x = 200; points[0].y = 300; diff --git a/samples/sashtest/sashtest.dsp b/samples/sashtest/sashtest.dsp index 06f6f2ea78..e854fc7640 100644 --- a/samples/sashtest/sashtest.dsp +++ b/samples/sashtest/sashtest.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "sashtest - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "sashtest - Win32 Release" diff --git a/samples/scroll/makefile.wat b/samples/scroll/makefile.wat index 1db3a07c59..a8de3f4d21 100644 --- a/samples/scroll/makefile.wat +++ b/samples/scroll/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = scroll -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\scroll +# +PROGRAM = scroll +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/scroll/scroll.cpp b/samples/scroll/scroll.cpp index 6f27a04ede..790c8eaa4a 100644 --- a/samples/scroll/scroll.cpp +++ b/samples/scroll/scroll.cpp @@ -4,6 +4,7 @@ * Author: Robert Roebling * * Copyright: (C) 1998, Robert Roebling + * 2002, Ron Lee * */ @@ -51,6 +52,30 @@ public: DECLARE_EVENT_TABLE() }; + +// ---------------------------------------------------------------------------- +// Autoscrolling example. +// ---------------------------------------------------------------------------- + +// this class uses the 'virtual' size attribute along with an internal +// sizer to automatically set up scrollbars as needed + +class MyAutoScrollWindow : public wxScrolledWindow +{ +private: + + wxButton *m_button; + +public: + + MyAutoScrollWindow( wxWindow *parent ); + + void OnResizeClick( wxCommandEvent &WXUNUSED( event ) ); + + DECLARE_EVENT_TABLE() +}; + + // ---------------------------------------------------------------------------- // MyScrolledWindow classes: examples of wxScrolledWindow usage // ---------------------------------------------------------------------------- @@ -59,17 +84,15 @@ public: class MyScrolledWindowBase : public wxScrolledWindow { public: - MyScrolledWindowBase(wxWindow *parent) : wxScrolledWindow(parent) + MyScrolledWindowBase(wxWindow *parent) + : wxScrolledWindow(parent) + , m_nLines( 100 ) { - m_nLines = 100; - - InitScrollbars(); + wxClientDC dc(this); + dc.GetTextExtent(_T("Line 17"), NULL, &m_hLine); } protected: - // set the scrollbar params - void InitScrollbars(); - // the height of one line on screen wxCoord m_hLine; @@ -78,24 +101,40 @@ protected: }; // this class does "stupid" redrawing - it redraws everything each time +// and sets the scrollbar extent directly. + class MyScrolledWindowDumb : public MyScrolledWindowBase { public: - MyScrolledWindowDumb(wxWindow *parent) : MyScrolledWindowBase(parent) { } + MyScrolledWindowDumb(wxWindow *parent) : MyScrolledWindowBase(parent) + { + // no horz scrolling + SetScrollbars(0, m_hLine, 0, m_nLines + 1, 0, 0, TRUE /* no refresh */); + } virtual void OnDraw(wxDC& dc); }; // this class does "smart" redrawing - only redraws the lines which must be -// redrawn +// redrawn and sets the scroll rate and virtual size to affect the +// scrollbars. +// +// Note that this class should produce identical results to the one above. + class MyScrolledWindowSmart : public MyScrolledWindowBase { public: - MyScrolledWindowSmart(wxWindow *parent) : MyScrolledWindowBase(parent) { } + MyScrolledWindowSmart(wxWindow *parent) : MyScrolledWindowBase(parent) + { + // no horz scrolling + SetScrollRate( 0, m_hLine ); + SetVirtualSize( -1, ( m_nLines + 1 ) * m_hLine ); + } virtual void OnDraw(wxDC& dc); }; + // ---------------------------------------------------------------------------- // MyFrame // ---------------------------------------------------------------------------- @@ -131,13 +170,13 @@ IMPLEMENT_APP(MyApp) // ids -#define ID_ADDBUTTON 1 -#define ID_DELBUTTON 2 -#define ID_MOVEBUTTON 3 -#define ID_SCROLLWIN 4 -#define ID_QUERYPOS 5 +const long ID_ADDBUTTON = wxNewId(); +const long ID_DELBUTTON = wxNewId(); +const long ID_MOVEBUTTON = wxNewId(); +const long ID_SCROLLWIN = wxNewId(); +const long ID_QUERYPOS = wxNewId(); -#define ID_NEWBUTTON 10 +const long ID_NEWBUTTON = wxNewId(); // MyCanvas @@ -145,7 +184,7 @@ IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxScrolledWindow) BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_PAINT( MyCanvas::OnPaint) - EVT_MOUSE_EVENTS( MyCanvas::OnMouseDown) + EVT_MOUSE_EVENTS( MyCanvas::OnMouseDown) EVT_BUTTON( ID_QUERYPOS, MyCanvas::OnQueryPosition) EVT_BUTTON( ID_ADDBUTTON, MyCanvas::OnAddButton) EVT_BUTTON( ID_DELBUTTON, MyCanvas::OnDeleteButton) @@ -155,12 +194,15 @@ END_EVENT_TABLE() MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size ) - : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER | wxTAB_TRAVERSAL, "test canvas" ) + : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER | wxTAB_TRAVERSAL, _T("test canvas") ) { - (void) new wxButton( this, ID_ADDBUTTON, "add button", wxPoint(10,10) ); - (void) new wxButton( this, ID_DELBUTTON, "del button", wxPoint(10,40) ); - (void) new wxButton( this, ID_MOVEBUTTON, "move button", wxPoint(150,10) ); - (void) new wxButton( this, ID_SCROLLWIN, "scroll win", wxPoint(250,10) ); + SetScrollRate( 10, 10 ); + SetVirtualSize( 500, 1000 ); + + (void) new wxButton( this, ID_ADDBUTTON, _T("add button"), wxPoint(10,10) ); + (void) new wxButton( this, ID_DELBUTTON, _T("del button"), wxPoint(10,40) ); + (void) new wxButton( this, ID_MOVEBUTTON, _T("move button"), wxPoint(150,10) ); + (void) new wxButton( this, ID_SCROLLWIN, _T("scroll win"), wxPoint(250,10) ); #if 0 @@ -253,9 +295,9 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) wxPaintDC dc( this ); PrepareDC( dc ); - dc.DrawText( "Press mouse button to test calculations!", 160, 50 ); + dc.DrawText( _T("Press mouse button to test calculations!"), 160, 50 ); - dc.DrawText( "Some text", 140, 140 ); + dc.DrawText( _T("Some text"), 140, 140 ); dc.DrawRectangle( 100, 160, 200, 200 ); } @@ -271,7 +313,7 @@ void MyCanvas::OnQueryPosition( wxCommandEvent &WXUNUSED(event) ) void MyCanvas::OnAddButton( wxCommandEvent &WXUNUSED(event) ) { wxLogMessage( wxT("Inserting button at position 10,70...") ); - wxButton *button = new wxButton( this, ID_NEWBUTTON, "new button", wxPoint(10,70), wxSize(80,25) ); + wxButton *button = new wxButton( this, ID_NEWBUTTON, wxT("new button"), wxPoint(10,70), wxSize(80,25) ); wxPoint pt( button->GetPosition() ); wxLogMessage( wxT("-> Position after inserting %d %d"), pt.x, pt.y ); } @@ -305,12 +347,87 @@ void MyCanvas::OnScrollWin( wxCommandEvent &WXUNUSED(event) ) Scroll( -1, y+2 ); } +// MyAutoScrollWindow + +const long ID_RESIZEBUTTON = wxNewId(); +const wxSize SMALL_BUTTON( 100, 50 ); +const wxSize LARGE_BUTTON( 300, 100 ); + +BEGIN_EVENT_TABLE( MyAutoScrollWindow, wxScrolledWindow) + EVT_BUTTON( ID_RESIZEBUTTON, MyAutoScrollWindow::OnResizeClick) +END_EVENT_TABLE() + +MyAutoScrollWindow::MyAutoScrollWindow( wxWindow *parent ) + : wxScrolledWindow( parent ) +{ + SetBackgroundColour( wxT("GREEN") ); + + // Set the rate we'd like for scrolling. + + SetScrollRate( 5, 5 ); + + // Populate a sizer with a 'resizing' button and some + // other static decoration + + wxFlexGridSizer *innersizer = new wxFlexGridSizer( 2, 2 ); + + m_button = new wxButton( this, + ID_RESIZEBUTTON, + _T("Press me"), + wxDefaultPosition, + SMALL_BUTTON ); + + // We need to do this here, because wxADJUST_MINSIZE below + // will cause the initial size to be ignored for Best/Min size. + // It would be nice to fix the sizers to handle this a little + // more cleanly. + + m_button->SetSizeHints( SMALL_BUTTON.GetWidth(), SMALL_BUTTON.GetHeight() ); + + innersizer->Add( m_button, + 0, + wxALIGN_CENTER | wxALL | wxADJUST_MINSIZE, + 20 ); + + innersizer->Add( new wxStaticText( this, -1, _T("This is just") ), + 0, + wxALIGN_CENTER ); + + innersizer->Add( new wxStaticText( this, -1, _T("some decoration") ), + 0, + wxALIGN_CENTER ); + + innersizer->Add( new wxStaticText( this, -1, _T("for you to scroll...") ), + 0, + wxALIGN_CENTER ); + + // Then use the sizer to set the scrolled region size. + + SetSizer( innersizer ); +} + +void MyAutoScrollWindow::OnResizeClick( wxCommandEvent &WXUNUSED( event ) ) +{ + // Arbitrarily resize the button to change the minimum size of + // the (scrolled) sizer. + + if( m_button->GetSize() == SMALL_BUTTON ) + m_button->SetSizeHints( LARGE_BUTTON.GetWidth(), LARGE_BUTTON.GetHeight() ); + else + m_button->SetSizeHints( SMALL_BUTTON.GetWidth(), SMALL_BUTTON.GetHeight() ); + + // Force update layout and scrollbars, since nothing we do here + // necessarily generates a size event which would do it for us. + + FitInside(); +} + // MyFrame -const int ID_QUIT = 108; -const int ID_ABOUT = 109; -const int ID_DELETE_ALL = 110; -const int ID_INSERT_NEW = 111; +const long ID_QUIT = wxNewId(); +const long ID_ABOUT = wxNewId(); +const long ID_DELETE_ALL = wxNewId(); +const long ID_INSERT_NEW = wxNewId(); IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame ) @@ -322,17 +439,17 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame) END_EVENT_TABLE() MyFrame::MyFrame() - : wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample", + : wxFrame( (wxFrame *)NULL, -1, _T("wxScrolledWindow sample"), wxPoint(20,20), wxSize(470,500) ) { wxMenu *file_menu = new wxMenu(); - file_menu->Append( ID_DELETE_ALL, "Delete all"); - file_menu->Append( ID_INSERT_NEW, "Insert new"); - file_menu->Append( ID_ABOUT, "&About.."); - file_menu->Append( ID_QUIT, "E&xit\tAlt-X"); + file_menu->Append( ID_DELETE_ALL, _T("Delete all")); + file_menu->Append( ID_INSERT_NEW, _T("Insert new")); + file_menu->Append( ID_ABOUT, _T("&About..")); + file_menu->Append( ID_QUIT, _T("E&xit\tAlt-X")); wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); SetMenuBar( menu_bar ); @@ -340,19 +457,24 @@ MyFrame::MyFrame() int widths[] = { -1, 100 }; SetStatusWidths( 2, widths ); - m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(100,100) ); - m_canvas->SetScrollbars( 10, 10, 50, 100 ); - wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); + // Setting an explicit size here is superfluous, it will be overridden + // by the sizer in any case. + m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(100,100) ); + + // This is done with ScrollRate/VirtualSize in MyCanvas ctor now, + // both should produce identical results. + //m_canvas->SetScrollbars( 10, 10, 50, 100 ); + topsizer->Add( m_canvas, 1, wxEXPAND ); + topsizer->Add( new MyAutoScrollWindow( this ), 1, wxEXPAND ); wxSizer *sizerBtm = new wxBoxSizer(wxHORIZONTAL); sizerBtm->Add( new MyScrolledWindowDumb(this), 1, wxEXPAND ); sizerBtm->Add( new MyScrolledWindowSmart(this), 1, wxEXPAND ); topsizer->Add( sizerBtm, 1, wxEXPAND ); - SetAutoLayout( TRUE ); SetSizer( topsizer ); } @@ -363,7 +485,7 @@ void MyFrame::OnDeleteAll( wxCommandEvent &WXUNUSED(event) ) void MyFrame::OnInsertNew( wxCommandEvent &WXUNUSED(event) ) { - (void)new wxButton( m_canvas, -1, "Hello", wxPoint(100,100) ); + (void)new wxButton( m_canvas, -1, _T("Hello"), wxPoint(100,100) ); } void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) ) @@ -373,9 +495,12 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) ) void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) { - (void)wxMessageBox( "wxScroll demo\n" - "Robert Roebling (c) 1998", - "About wxScroll Demo", wxICON_INFORMATION | wxOK ); + (void)wxMessageBox( _T("wxScroll demo\n" + "Robert Roebling (c) 1998\n" + "Autoscrolling examples\n" + "Ron Lee (c) 2002"), + _T("About wxScroll Demo"), + wxICON_INFORMATION | wxOK ); } //----------------------------------------------------------------------------- @@ -394,15 +519,6 @@ bool MyApp::OnInit() // MyScrolledWindowXXX // ---------------------------------------------------------------------------- -void MyScrolledWindowBase::InitScrollbars() -{ - wxClientDC dc(this); - dc.GetTextExtent(_T("Line 17"), NULL, &m_hLine); - - // no horz scrolling - SetScrollbars(0, m_hLine, 0, m_nLines + 1, 0, 0, TRUE /* no refresh */); -} - void MyScrolledWindowDumb::OnDraw(wxDC& dc) { // this is useful to see which lines are redrawn diff --git a/samples/scroll/scroll.dsp b/samples/scroll/scroll.dsp index 966357cb90..d0fab7cefb 100644 --- a/samples/scroll/scroll.dsp +++ b/samples/scroll/scroll.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "scroll - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "scroll - Win32 Release" diff --git a/samples/scrollsub/makefile.wat b/samples/scrollsub/makefile.wat index b64d0c9a09..d266220d26 100644 --- a/samples/scrollsub/makefile.wat +++ b/samples/scrollsub/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = scrollsub -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\scrollsub +# +PROGRAM = scrollsub +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/scrollsub/scrollsub.cpp b/samples/scrollsub/scrollsub.cpp index cc8d3acc7e..371c4f97a5 100644 --- a/samples/scrollsub/scrollsub.cpp +++ b/samples/scrollsub/scrollsub.cpp @@ -144,7 +144,7 @@ END_EVENT_TABLE() MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size ) - : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, "test canvas" ) + : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, _T("test canvas") ) { MyTopLabels *top = new MyTopLabels( this, -1, wxDefaultPosition, wxSize(-1,25) ); MyRightLabels *right = new MyRightLabels( this, -1, wxDefaultPosition, wxSize(60,-1) ); @@ -222,9 +222,9 @@ void MyTopLabels::OnPaint( wxPaintEvent &event ) m_owner->GetScrollPixelsPerUnit( &xScrollUnits, 0 ); dc.SetDeviceOrigin( -xOrigin * xScrollUnits, 0 ); - dc.DrawText( "Column 1", 5, 5 ); - dc.DrawText( "Column 2", 105, 5 ); - dc.DrawText( "Column 3", 205, 5 ); + dc.DrawText( _T("Column 1"), 5, 5 ); + dc.DrawText( _T("Column 2"), 105, 5 ); + dc.DrawText( _T("Column 3"), 205, 5 ); } // MyRightLabels @@ -256,12 +256,12 @@ void MyRightLabels::OnPaint( wxPaintEvent &event ) m_owner->GetScrollPixelsPerUnit( 0, &yScrollUnits ); dc.SetDeviceOrigin( 0, -yOrigin * yScrollUnits ); - dc.DrawText( "Row 1", 5, 5 ); - dc.DrawText( "Row 2", 5, 30 ); - dc.DrawText( "Row 3", 5, 55 ); - dc.DrawText( "Row 4", 5, 80 ); - dc.DrawText( "Row 5", 5, 105 ); - dc.DrawText( "Row 6", 5, 130 ); + dc.DrawText( _T("Row 1"), 5, 5 ); + dc.DrawText( _T("Row 2"), 5, 30 ); + dc.DrawText( _T("Row 3"), 5, 55 ); + dc.DrawText( _T("Row 4"), 5, 80 ); + dc.DrawText( _T("Row 5"), 5, 105 ); + dc.DrawText( _T("Row 6"), 5, 130 ); } // MyCanvas @@ -274,20 +274,20 @@ END_EVENT_TABLE() MyCanvas::MyCanvas( wxScrolledWindow *parent, MyTopLabels *top, MyRightLabels *right, wxWindowID id, const wxPoint &pos, const wxSize &size ) - : wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, "test canvas" ) + : wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, _T("test canvas") ) { m_owner = parent; m_topLabels = top; m_rightLabels = right; - (void)new wxButton( this, -1, "Hallo I", wxPoint(0,50), wxSize(100,25) ); - (void)new wxButton( this, -1, "Hallo II", wxPoint(200,50), wxSize(100,25) ); + (void)new wxButton( this, -1, _T("Hallo I"), wxPoint(0,50), wxSize(100,25) ); + (void)new wxButton( this, -1, _T("Hallo II"), wxPoint(200,50), wxSize(100,25) ); - (void)new wxTextCtrl( this, -1, "Text I", wxPoint(0,100), wxSize(100,25) ); - (void)new wxTextCtrl( this, -1, "Text II", wxPoint(200,100), wxSize(100,25) ); + (void)new wxTextCtrl( this, -1, _T("Text I"), wxPoint(0,100), wxSize(100,25) ); + (void)new wxTextCtrl( this, -1, _T("Text II"), wxPoint(200,100), wxSize(100,25) ); - (void)new wxComboBox( this, -1, "ComboBox I", wxPoint(0,150), wxSize(100,25), 0, NULL ); - (void)new wxComboBox( this, -1, "ComboBox II", wxPoint(200,150), wxSize(100,25), 0, NULL ); + (void)new wxComboBox( this, -1, _T("ComboBox I"), wxPoint(0,150), wxSize(100,25), 0, NULL ); + (void)new wxComboBox( this, -1, _T("ComboBox II"), wxPoint(200,150), wxSize(100,25), 0, NULL ); SetBackgroundColour( wxT("WHEAT") ); @@ -335,7 +335,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) { wxLogMessage( wxT("Redraw first cell") ); dc.DrawRectangle( 0, 0, 100, 25 ); - dc.DrawText( "First Cell", 5, 5 ); + dc.DrawText( _T("First Cell"), 5, 5 ); } } @@ -350,7 +350,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) { wxLogMessage( wxT("Redraw second cell") ); dc.DrawRectangle( 200, 0, 100, 25 ); - dc.DrawText( "Second Cell", 205, 5 ); + dc.DrawText( _T("Second Cell"), 205, 5 ); } } @@ -378,16 +378,16 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame) END_EVENT_TABLE() MyFrame::MyFrame() - : wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample", + : wxFrame( (wxFrame *)NULL, -1, _T("wxScrolledWindow sample"), wxPoint(20,20), wxSize(470,500) ) { wxMenu *file_menu = new wxMenu(); - file_menu->Append( ID_ABOUT, "&About..."); - file_menu->Append( ID_FULL, "&Full screen on/off"); - file_menu->Append( ID_QUIT, "E&xit\tAlt-X"); + file_menu->Append( ID_ABOUT, _T("&About...")); + file_menu->Append( ID_FULL, _T("&Full screen on/off")); + file_menu->Append( ID_QUIT, _T("E&xit\tAlt-X")); wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); SetMenuBar( menu_bar ); @@ -398,7 +398,7 @@ MyFrame::MyFrame() m_scrolled = new MyScrolledWindow( this, -1, wxDefaultPosition, wxSize(100,100) ); m_scrolled->SetScrollbars( 10, 10, 50, 100 ); - m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE ); + m_log = new wxTextCtrl( this, -1, _T("This is the log window.\n"), wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE ); wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) ); delete old_log; @@ -422,9 +422,9 @@ void MyFrame::OnFullScreen( wxCommandEvent &WXUNUSED(event) ) void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) { - (void)wxMessageBox( "wxScroll demo II\n" - "Robert Roebling (c) 1998", - "About wxScroll II Demo", wxICON_INFORMATION | wxOK ); + (void)wxMessageBox( _T("wxScroll demo II\n") + _T("Robert Roebling (c) 1998"), + _T("About wxScroll II Demo"), wxICON_INFORMATION | wxOK ); } //----------------------------------------------------------------------------- diff --git a/samples/scrollsub/scrollsub.dsp b/samples/scrollsub/scrollsub.dsp index a635c0fa63..5ea79a571d 100644 --- a/samples/scrollsub/scrollsub.dsp +++ b/samples/scrollsub/scrollsub.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "scrollsub - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "scrollsub - Win32 Release" diff --git a/samples/sockets/client.cpp b/samples/sockets/client.cpp index 94e010410e..3ba76e9bf2 100644 --- a/samples/sockets/client.cpp +++ b/samples/sockets/client.cpp @@ -571,7 +571,7 @@ void MyFrame::OnTestURL(wxCommandEvent& WXUNUSED(event)) wxYield(); // Get the data - wxFileOutputStream sout(wxString("test.url")); + wxFileOutputStream sout( wxT("test.url") ); if (!sout.Ok()) { m_text->AppendText(_("Error: couldn't open file for output\n")); diff --git a/samples/sockets/client.dsp b/samples/sockets/client.dsp index b99f0b4a75..1fb3bf47eb 100644 --- a/samples/sockets/client.dsp +++ b/samples/sockets/client.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "socketclient - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "socketclient - Win32 Release" diff --git a/samples/sockets/makefile.b32 b/samples/sockets/makefile.b32 index b9aac16acc..f5d79cec0c 100644 --- a/samples/sockets/makefile.b32 +++ b/samples/sockets/makefile.b32 @@ -7,9 +7,17 @@ # # Makefile : Builds sample for 32-bit BC++ +!if "$(WXUSINGDLL)" == "" +WXUSINGDLL=0 +!endif + +!if "$(FINAL)" == "" +FINAL=0 +!endif + all: - make -f server.b32 all - make -f client.b32 all + make -f server.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) + make -f client.b32 FINAL=$(FINAL) WXUSINGDLL=$(WXUSINGDLL) clean: make -f server.b32 clean diff --git a/samples/sockets/server.dsp b/samples/sockets/server.dsp index d351a219ec..1325ec4209 100644 --- a/samples/sockets/server.dsp +++ b/samples/sockets/server.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "socketserver - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "socketserver - Win32 Release" diff --git a/samples/splitter/makefile.wat b/samples/splitter/makefile.wat index a923a2c3df..2376ca1e71 100644 --- a/samples/splitter/makefile.wat +++ b/samples/splitter/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for splitter example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = splitter -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\splitter +# +PROGRAM = splitter +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/splitter/splitter.dsp b/samples/splitter/splitter.dsp index ac28cbb35c..9082869ff5 100644 --- a/samples/splitter/splitter.dsp +++ b/samples/splitter/splitter.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "splitter - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "splitter - Win32 Release" diff --git a/samples/statbar/makefile.wat b/samples/statbar/makefile.wat index aa552730f8..59d38b7ed0 100644 --- a/samples/statbar/makefile.wat +++ b/samples/statbar/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for statbar example (Watcom) -# Created: 2000-02-04 - -WXDIR = $(%WXWIN) - -PROGRAM = statbar -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\statbar +# +PROGRAM = statbar +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/statbar/statbar.cpp b/samples/statbar/statbar.cpp index 9c1cbcd7c9..39d0319645 100644 --- a/samples/statbar/statbar.cpp +++ b/samples/statbar/statbar.cpp @@ -238,7 +238,7 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // create the main application window - MyFrame *frame = new MyFrame("wxStatusBar sample", + MyFrame *frame = new MyFrame(_T("wxStatusBar sample"), wxPoint(50, 50), wxSize(450, 340)); // and show it (the frames, unlike simple controls, are not shown when @@ -274,24 +274,24 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(StatusBar_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(StatusBar_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenu *statbarMenu = new wxMenu; - statbarMenu->Append(StatusBar_SetFields, "&Set field count\tCtrl-C", - "Set the number of status bar fields"); - statbarMenu->Append(StatusBar_Toggle, "&Toggle Status Bar", - "Toggle the status bar display", true); - statbarMenu->Append(StatusBar_Recreate, "&Recreate\tCtrl-R", - "Toggle status bar format"); + statbarMenu->Append(StatusBar_SetFields, _T("&Set field count\tCtrl-C"), + _T("Set the number of status bar fields")); + statbarMenu->Append(StatusBar_Toggle, _T("&Toggle Status Bar"), + _T("Toggle the status bar display"), true); + statbarMenu->Append(StatusBar_Recreate, _T("&Recreate\tCtrl-R"), + _T("Toggle status bar format")); wxMenu *helpMenu = new wxMenu; - helpMenu->Append(StatusBar_About, "&About...\tCtrl-A", "Show about dialog"); + helpMenu->Append(StatusBar_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(menuFile, "&File"); - menuBar->Append(statbarMenu, "&Status bar"); - menuBar->Append(helpMenu, "&Help"); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(statbarMenu, _T("&Status bar")); + menuBar->Append(helpMenu, _T("&Help")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -299,7 +299,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create default status bar to start with CreateStatusBar(2); m_statbarKind = StatBar_Default; - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); m_statbarDefault = GetStatusBar(); } @@ -459,28 +459,28 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) // ---------------------------------------------------------------------------- MyAboutDialog::MyAboutDialog(wxWindow *parent) - : wxDialog(parent, -1, wxString("About statbar"), + : wxDialog(parent, -1, wxString(_T("About statbar")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { wxStaticText *text = new wxStaticText(this, -1, - "wxStatusBar sample\n" - "(c) 2000 Vadim Zeitlin"); + _T("wxStatusBar sample\n") + _T("(c) 2000 Vadim Zeitlin")); - wxButton *btn = new wxButton(this, wxID_OK, "&Close"); + wxButton *btn = new wxButton(this, wxID_OK, _T("&Close")); // create the top status bar without the size grip (default style), // otherwise it looks weird wxStatusBar *statbarTop = new wxStatusBar(this, -1, 0); statbarTop->SetFieldsCount(3); - statbarTop->SetStatusText("This is a top status bar", 0); - statbarTop->SetStatusText("in a dialog", 1); - statbarTop->SetStatusText("Great, isn't it?", 2); + statbarTop->SetStatusText(_T("This is a top status bar"), 0); + statbarTop->SetStatusText(_T("in a dialog"), 1); + statbarTop->SetStatusText(_T("Great, isn't it?"), 2); wxStatusBar *statbarBottom = new wxStatusBar(this, -1); statbarBottom->SetFieldsCount(2); - statbarBottom->SetStatusText("This is a bottom status bar", 0); - statbarBottom->SetStatusText("in a dialog", 1); + statbarBottom->SetStatusText(_T("This is a bottom status bar"), 0); + statbarBottom->SetStatusText(_T("in a dialog"), 1); wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); sizerTop->Add(statbarTop, 0, wxGROW); @@ -619,7 +619,7 @@ void MyStatusBar::DoToggle() m_statbmp->Refresh(); #endif - SetStatusText("", Field_Clock); + SetStatusText(_T(""), Field_Clock); } } diff --git a/samples/statbar/statbar.dsp b/samples/statbar/statbar.dsp index 5fb4fbad83..3e2a955427 100644 --- a/samples/statbar/statbar.dsp +++ b/samples/statbar/statbar.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "statbar - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "statbar - Win32 Release" diff --git a/samples/stc/Makefile.in b/samples/stc/Makefile.in index cffdcc78d7..0de249989a 100644 --- a/samples/stc/Makefile.in +++ b/samples/stc/Makefile.in @@ -13,7 +13,7 @@ PROGRAM=stctest OBJECTS=$(PROGRAM).o -APPEXTRALIBS=$(top_builddir)/lib/libstc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_stc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include DATAFILES=stctest.cpp diff --git a/samples/stc/StcTestVC.dsp b/samples/stc/StcTestVC.dsp index f7e9b6e7e4..f26a3449b8 100644 --- a/samples/stc/StcTestVC.dsp +++ b/samples/stc/StcTestVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib stcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/stctest.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib stcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/stctest.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "StcTestVC - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib stc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/stctest.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib stc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/stctest.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/samples/svg/Makefile.in b/samples/svg/Makefile.in index 8c63b68960..5f1ba42210 100644 --- a/samples/svg/Makefile.in +++ b/samples/svg/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=svgtest OBJECTS=svgtest.o -APPEXTRALIBS=$(top_builddir)/lib/libwx_dcsvg.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_dcsvg-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/samples/svg/svgtest.rc b/samples/svg/svgtest.rc new file mode 100644 index 0000000000..6df320751a --- /dev/null +++ b/samples/svg/svgtest.rc @@ -0,0 +1,11 @@ +aaaa ICON "mondrian.ico" + +/* Useful if PROVIDE_DEFAULT_ICONS is set in wx_setup.h */ +#define IHaveMDIParentIcon +#define IHaveMDIChildIcon + +mondrian ICON "mondrian.ico" + +#include "wx/msw/wx.rc" + +svgbitmap BITMAP "SVGlogo24.bmp" diff --git a/samples/tab/makefile.wat b/samples/tab/makefile.wat index cab5746fd5..c7d93a7005 100644 --- a/samples/tab/makefile.wat +++ b/samples/tab/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for tab example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = tab -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\tab +# +PROGRAM = tab +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/taskbar/makefile.wat b/samples/taskbar/makefile.wat index 9c96500280..286fe1d3b3 100644 --- a/samples/taskbar/makefile.wat +++ b/samples/taskbar/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = tbtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\taskbar +# +PROGRAM = taskbar +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/taskbar/taskbar.dsp b/samples/taskbar/taskbar.dsp index 109141eefd..f6cb8847e5 100644 --- a/samples/taskbar/taskbar.dsp +++ b/samples/taskbar/taskbar.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "taskbar - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "taskbar - Win32 Release" diff --git a/samples/taskbar/tbtest.cpp b/samples/taskbar/tbtest.cpp index 99d07a61a1..ec3b5cd011 100644 --- a/samples/taskbar/tbtest.cpp +++ b/samples/taskbar/tbtest.cpp @@ -76,14 +76,14 @@ void MyDialog::OnCloseWindow(wxCloseEvent& event) void MyDialog::Init(void) { - (void)new wxStaticText(this, -1, "Press OK to hide me, Exit to quit.", + (void)new wxStaticText(this, -1, _T("Press OK to hide me, Exit to quit."), wxPoint(10, 20)); - (void)new wxStaticText(this, -1, "Double-click on the taskbar icon to show me again.", + (void)new wxStaticText(this, -1, _T("Double-click on the taskbar icon to show me again."), wxPoint(10, 40)); - (void)new wxButton(this, wxID_EXIT, "Exit", wxPoint(185, 230), wxSize(80, 25)); - (new wxButton(this, wxID_OK, "OK", wxPoint(100, 230), wxSize(80, 25)))->SetDefault(); + (void)new wxButton(this, wxID_EXIT, _T("Exit"), wxPoint(185, 230), wxSize(80, 25)); + (new wxButton(this, wxID_OK, _T("OK"), wxPoint(100, 230), wxSize(80, 25)))->SetDefault(); Centre(wxBOTH); } @@ -147,11 +147,11 @@ void MyTaskBarIcon::OnRButtonUp(wxEvent&) { wxMenu menu; - menu.Append(PU_RESTORE, "&Restore TBTest"); + menu.Append(PU_RESTORE, _T("&Restore TBTest")); #ifdef __WXMSW__ - menu.Append(PU_NEW_ICON,"&Set New Icon"); + menu.Append(PU_NEW_ICON,_T("&Set New Icon")); #endif - menu.Append(PU_EXIT, "E&xit"); + menu.Append(PU_EXIT, _T("E&xit")); PopupMenu(&menu); } diff --git a/samples/text/makefile.wat b/samples/text/makefile.wat index 6ba2275933..d576ebdd1d 100644 --- a/samples/text/makefile.wat +++ b/samples/text/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = text -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\text +# +PROGRAM = text +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/text/text.cpp b/samples/text/text.cpp index c48115e70d..f4f79a219e 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -140,7 +140,7 @@ private: class MyFrame: public wxFrame { public: - MyFrame(wxFrame *frame, const char *title, int x, int y, int w, int h); + MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); @@ -312,69 +312,69 @@ bool MyApp::OnInit() { // Create the main frame window MyFrame *frame = new MyFrame((wxFrame *) NULL, - "Text wxWindows sample", 50, 50, 700, 420); + _T("Text wxWindows sample"), 50, 50, 700, 420); frame->SetSizeHints( 500, 400 ); wxMenu *file_menu = new wxMenu; - file_menu->Append(TEXT_SAVE, "&Save file\tCtrl-S", - "Save the text control contents to file"); - file_menu->Append(TEXT_LOAD, "&Load file\tCtrl-O", - "Load the sample file into text control"); + file_menu->Append(TEXT_SAVE, _T("&Save file\tCtrl-S"), + _T("Save the text control contents to file")); + file_menu->Append(TEXT_LOAD, _T("&Load file\tCtrl-O"), + _T("Load the sample file into text control")); file_menu->AppendSeparator(); - file_menu->Append(TEXT_ABOUT, "&About\tAlt-A"); + file_menu->Append(TEXT_ABOUT, _T("&About\tAlt-A")); file_menu->AppendSeparator(); - file_menu->Append(TEXT_QUIT, "E&xit\tAlt-X", "Quit this sample"); + file_menu->Append(TEXT_QUIT, _T("E&xit\tAlt-X"), _T("Quit this sample")); wxMenuBar *menu_bar = new wxMenuBar( wxMB_DOCKABLE ); - menu_bar->Append(file_menu, "&File"); + menu_bar->Append(file_menu, _T("&File")); #if wxUSE_TOOLTIPS wxMenu *tooltip_menu = new wxMenu; - tooltip_menu->Append(TEXT_TOOLTIPS_SETDELAY, "Set &delay\tCtrl-D"); + tooltip_menu->Append(TEXT_TOOLTIPS_SETDELAY, _T("Set &delay\tCtrl-D")); tooltip_menu->AppendSeparator(); - tooltip_menu->Append(TEXT_TOOLTIPS_ENABLE, "&Toggle tooltips\tCtrl-T", - "enable/disable tooltips", TRUE); + tooltip_menu->Append(TEXT_TOOLTIPS_ENABLE, _T("&Toggle tooltips\tCtrl-T"), + _T("enable/disable tooltips"), TRUE); tooltip_menu->Check(TEXT_TOOLTIPS_ENABLE, TRUE); - menu_bar->Append(tooltip_menu, "&Tooltips"); + menu_bar->Append(tooltip_menu, _T("&Tooltips")); #endif // wxUSE_TOOLTIPS #if wxUSE_CLIPBOARD wxMenu *menuClipboard = new wxMenu; - menuClipboard->Append(TEXT_CLIPBOARD_COPY, "&Copy\tCtrl-C", - "Copy the first line to the clipboard"); - menuClipboard->Append(TEXT_CLIPBOARD_PASTE, "&Paste\tCtrl-V", - "Paste from clipboard to the text control"); - menu_bar->Append(menuClipboard, "&Clipboard"); + menuClipboard->Append(TEXT_CLIPBOARD_COPY, _T("&Copy\tCtrl-C"), + _T("Copy the first line to the clipboard")); + menuClipboard->Append(TEXT_CLIPBOARD_PASTE, _T("&Paste\tCtrl-V"), + _T("Paste from clipboard to the text control")); + menu_bar->Append(menuClipboard, _T("&Clipboard")); #endif // wxUSE_CLIPBOARD wxMenu *menuText = new wxMenu; - menuText->Append(TEXT_ADD_SOME, "&Append some text\tCtrl-A"); - menuText->Append(TEXT_ADD_FREEZE, "&Append text with freeze/thaw\tShift-Ctrl-A"); - menuText->Append(TEXT_REMOVE, "&Remove first 10 characters\tCtrl-X"); - menuText->Append(TEXT_SET, "&Set the first text zone value\tCtrl-E"); + menuText->Append(TEXT_ADD_SOME, _T("&Append some text\tCtrl-A")); + menuText->Append(TEXT_ADD_FREEZE, _T("&Append text with freeze/thaw\tShift-Ctrl-A")); + menuText->Append(TEXT_REMOVE, _T("&Remove first 10 characters\tCtrl-X")); + menuText->Append(TEXT_SET, _T("&Set the first text zone value\tCtrl-E")); menuText->AppendSeparator(); - menuText->Append(TEXT_MOVE_ENDTEXT, "Move cursor to the end of &text"); - menuText->Append(TEXT_MOVE_ENDENTRY, "Move cursor to the end of &entry"); - menuText->Append(TEXT_SET_EDITABLE, "Toggle &editable state", "", TRUE); - menuText->Append(TEXT_SET_ENABLED, "Toggle e&nabled state", "", TRUE); + menuText->Append(TEXT_MOVE_ENDTEXT, _T("Move cursor to the end of &text")); + menuText->Append(TEXT_MOVE_ENDENTRY, _T("Move cursor to the end of &entry")); + menuText->Append(TEXT_SET_EDITABLE, _T("Toggle &editable state"), _T(""), TRUE); + menuText->Append(TEXT_SET_ENABLED, _T("Toggle e&nabled state"), _T(""), TRUE); menuText->Check(TEXT_SET_EDITABLE, TRUE); menuText->Check(TEXT_SET_ENABLED, TRUE); menuText->AppendSeparator(); - menuText->Append(TEXT_LINE_DOWN, "Scroll text one line down"); - menuText->Append(TEXT_LINE_UP, "Scroll text one line up"); - menuText->Append(TEXT_PAGE_DOWN, "Scroll text one page down"); - menuText->Append(TEXT_PAGE_DOWN, "Scroll text one page up"); - menu_bar->Append(menuText, "Te&xt"); + menuText->Append(TEXT_LINE_DOWN, _T("Scroll text one line down")); + menuText->Append(TEXT_LINE_UP, _T("Scroll text one line up")); + menuText->Append(TEXT_PAGE_DOWN, _T("Scroll text one page down")); + menuText->Append(TEXT_PAGE_DOWN, _T("Scroll text one page up")); + menu_bar->Append(menuText, _T("Te&xt")); wxMenu *menuLog = new wxMenu; - menuLog->Append(TEXT_LOG_KEY, "Log &key events", "", TRUE); - menuLog->Append(TEXT_LOG_CHAR, "Log &char events", "", TRUE); - menuLog->Append(TEXT_LOG_MOUSE, "Log &mouse events", "", TRUE); - menuLog->Append(TEXT_LOG_TEXT, "Log &text events", "", TRUE); - menuLog->Append(TEXT_LOG_FOCUS, "Log &focus events", "", TRUE); + menuLog->Append(TEXT_LOG_KEY, _T("Log &key events"), _T(""), TRUE); + menuLog->Append(TEXT_LOG_CHAR, _T("Log &char events"), _T(""), TRUE); + menuLog->Append(TEXT_LOG_MOUSE, _T("Log &mouse events"), _T(""), TRUE); + menuLog->Append(TEXT_LOG_TEXT, _T("Log &text events"), _T(""), TRUE); + menuLog->Append(TEXT_LOG_FOCUS, _T("Log &focus events"), _T(""), TRUE); menuLog->AppendSeparator(); - menuLog->Append(TEXT_CLEAR, "&Clear the log\tCtrl-C", - "Clear the log window contents"); + menuLog->Append(TEXT_CLEAR, _T("&Clear the log\tCtrl-C"), + _T("Clear the log window contents")); // select only the interesting events by default menuLog->Check(TEXT_LOG_KEY, TRUE); @@ -384,7 +384,7 @@ bool MyApp::OnInit() MyTextCtrl::ms_logKey = MyTextCtrl::ms_logChar = MyTextCtrl::ms_logText = TRUE; - menu_bar->Append(menuLog, "&Log"); + menu_bar->Append(menuLog, _T("&Log")); frame->SetMenuBar(menu_bar); @@ -428,107 +428,107 @@ void MyTextCtrl::LogKeyEvent(const wxChar *name, wxKeyEvent& event) const { switch ( keycode ) { - case WXK_BACK: key = "BACK"; break; - case WXK_TAB: key = "TAB"; break; - case WXK_RETURN: key = "RETURN"; break; - case WXK_ESCAPE: key = "ESCAPE"; break; - case WXK_SPACE: key = "SPACE"; break; - case WXK_DELETE: key = "DELETE"; break; - case WXK_START: key = "START"; break; - case WXK_LBUTTON: key = "LBUTTON"; break; - case WXK_RBUTTON: key = "RBUTTON"; break; - case WXK_CANCEL: key = "CANCEL"; break; - case WXK_MBUTTON: key = "MBUTTON"; break; - case WXK_CLEAR: key = "CLEAR"; break; - case WXK_SHIFT: key = "SHIFT"; break; - case WXK_ALT: key = "ALT"; break; - case WXK_CONTROL: key = "CONTROL"; break; - case WXK_MENU: key = "MENU"; break; - case WXK_PAUSE: key = "PAUSE"; break; - case WXK_CAPITAL: key = "CAPITAL"; break; - case WXK_PRIOR: key = "PRIOR"; break; - case WXK_NEXT: key = "NEXT"; break; - case WXK_END: key = "END"; break; - case WXK_HOME: key = "HOME"; break; - case WXK_LEFT: key = "LEFT"; break; - case WXK_UP: key = "UP"; break; - case WXK_RIGHT: key = "RIGHT"; break; - case WXK_DOWN: key = "DOWN"; break; - case WXK_SELECT: key = "SELECT"; break; - case WXK_PRINT: key = "PRINT"; break; - case WXK_EXECUTE: key = "EXECUTE"; break; - case WXK_SNAPSHOT: key = "SNAPSHOT"; break; - case WXK_INSERT: key = "INSERT"; break; - case WXK_HELP: key = "HELP"; break; - case WXK_NUMPAD0: key = "NUMPAD0"; break; - case WXK_NUMPAD1: key = "NUMPAD1"; break; - case WXK_NUMPAD2: key = "NUMPAD2"; break; - case WXK_NUMPAD3: key = "NUMPAD3"; break; - case WXK_NUMPAD4: key = "NUMPAD4"; break; - case WXK_NUMPAD5: key = "NUMPAD5"; break; - case WXK_NUMPAD6: key = "NUMPAD6"; break; - case WXK_NUMPAD7: key = "NUMPAD7"; break; - case WXK_NUMPAD8: key = "NUMPAD8"; break; - case WXK_NUMPAD9: key = "NUMPAD9"; break; - case WXK_MULTIPLY: key = "MULTIPLY"; break; - case WXK_ADD: key = "ADD"; break; - case WXK_SEPARATOR: key = "SEPARATOR"; break; - case WXK_SUBTRACT: key = "SUBTRACT"; break; - case WXK_DECIMAL: key = "DECIMAL"; break; - case WXK_DIVIDE: key = "DIVIDE"; break; - case WXK_F1: key = "F1"; break; - case WXK_F2: key = "F2"; break; - case WXK_F3: key = "F3"; break; - case WXK_F4: key = "F4"; break; - case WXK_F5: key = "F5"; break; - case WXK_F6: key = "F6"; break; - case WXK_F7: key = "F7"; break; - case WXK_F8: key = "F8"; break; - case WXK_F9: key = "F9"; break; - case WXK_F10: key = "F10"; break; - case WXK_F11: key = "F11"; break; - case WXK_F12: key = "F12"; break; - case WXK_F13: key = "F13"; break; - case WXK_F14: key = "F14"; break; - case WXK_F15: key = "F15"; break; - case WXK_F16: key = "F16"; break; - case WXK_F17: key = "F17"; break; - case WXK_F18: key = "F18"; break; - case WXK_F19: key = "F19"; break; - case WXK_F20: key = "F20"; break; - case WXK_F21: key = "F21"; break; - case WXK_F22: key = "F22"; break; - case WXK_F23: key = "F23"; break; - case WXK_F24: key = "F24"; break; - case WXK_NUMLOCK: key = "NUMLOCK"; break; - case WXK_SCROLL: key = "SCROLL"; break; - case WXK_PAGEUP: key = "PAGEUP"; break; - case WXK_PAGEDOWN: key = "PAGEDOWN"; break; - case WXK_NUMPAD_SPACE: key = "NUMPAD_SPACE"; break; - case WXK_NUMPAD_TAB: key = "NUMPAD_TAB"; break; - case WXK_NUMPAD_ENTER: key = "NUMPAD_ENTER"; break; - case WXK_NUMPAD_F1: key = "NUMPAD_F1"; break; - case WXK_NUMPAD_F2: key = "NUMPAD_F2"; break; - case WXK_NUMPAD_F3: key = "NUMPAD_F3"; break; - case WXK_NUMPAD_F4: key = "NUMPAD_F4"; break; - case WXK_NUMPAD_HOME: key = "NUMPAD_HOME"; break; - case WXK_NUMPAD_LEFT: key = "NUMPAD_LEFT"; break; - case WXK_NUMPAD_UP: key = "NUMPAD_UP"; break; - case WXK_NUMPAD_RIGHT: key = "NUMPAD_RIGHT"; break; - case WXK_NUMPAD_DOWN: key = "NUMPAD_DOWN"; break; - case WXK_NUMPAD_PRIOR: key = "NUMPAD_PRIOR"; break; - case WXK_NUMPAD_PAGEUP: key = "NUMPAD_PAGEUP"; break; - case WXK_NUMPAD_PAGEDOWN: key = "NUMPAD_PAGEDOWN"; break; - case WXK_NUMPAD_END: key = "NUMPAD_END"; break; - case WXK_NUMPAD_BEGIN: key = "NUMPAD_BEGIN"; break; - case WXK_NUMPAD_INSERT: key = "NUMPAD_INSERT"; break; - case WXK_NUMPAD_DELETE: key = "NUMPAD_DELETE"; break; - case WXK_NUMPAD_EQUAL: key = "NUMPAD_EQUAL"; break; - case WXK_NUMPAD_MULTIPLY: key = "NUMPAD_MULTIPLY"; break; - case WXK_NUMPAD_ADD: key = "NUMPAD_ADD"; break; - case WXK_NUMPAD_SEPARATOR: key = "NUMPAD_SEPARATOR"; break; - case WXK_NUMPAD_SUBTRACT: key = "NUMPAD_SUBTRACT"; break; - case WXK_NUMPAD_DECIMAL: key = "NUMPAD_DECIMAL"; break; + case WXK_BACK: key = _T("BACK"); break; + case WXK_TAB: key = _T("TAB"); break; + case WXK_RETURN: key = _T("RETURN"); break; + case WXK_ESCAPE: key = _T("ESCAPE"); break; + case WXK_SPACE: key = _T("SPACE"); break; + case WXK_DELETE: key = _T("DELETE"); break; + case WXK_START: key = _T("START"); break; + case WXK_LBUTTON: key = _T("LBUTTON"); break; + case WXK_RBUTTON: key = _T("RBUTTON"); break; + case WXK_CANCEL: key = _T("CANCEL"); break; + case WXK_MBUTTON: key = _T("MBUTTON"); break; + case WXK_CLEAR: key = _T("CLEAR"); break; + case WXK_SHIFT: key = _T("SHIFT"); break; + case WXK_ALT: key = _T("ALT"); break; + case WXK_CONTROL: key = _T("CONTROL"); break; + case WXK_MENU: key = _T("MENU"); break; + case WXK_PAUSE: key = _T("PAUSE"); break; + case WXK_CAPITAL: key = _T("CAPITAL"); break; + case WXK_PRIOR: key = _T("PRIOR"); break; + case WXK_NEXT: key = _T("NEXT"); break; + case WXK_END: key = _T("END"); break; + case WXK_HOME: key = _T("HOME"); break; + case WXK_LEFT: key = _T("LEFT"); break; + case WXK_UP: key = _T("UP"); break; + case WXK_RIGHT: key = _T("RIGHT"); break; + case WXK_DOWN: key = _T("DOWN"); break; + case WXK_SELECT: key = _T("SELECT"); break; + case WXK_PRINT: key = _T("PRINT"); break; + case WXK_EXECUTE: key = _T("EXECUTE"); break; + case WXK_SNAPSHOT: key = _T("SNAPSHOT"); break; + case WXK_INSERT: key = _T("INSERT"); break; + case WXK_HELP: key = _T("HELP"); break; + case WXK_NUMPAD0: key = _T("NUMPAD0"); break; + case WXK_NUMPAD1: key = _T("NUMPAD1"); break; + case WXK_NUMPAD2: key = _T("NUMPAD2"); break; + case WXK_NUMPAD3: key = _T("NUMPAD3"); break; + case WXK_NUMPAD4: key = _T("NUMPAD4"); break; + case WXK_NUMPAD5: key = _T("NUMPAD5"); break; + case WXK_NUMPAD6: key = _T("NUMPAD6"); break; + case WXK_NUMPAD7: key = _T("NUMPAD7"); break; + case WXK_NUMPAD8: key = _T("NUMPAD8"); break; + case WXK_NUMPAD9: key = _T("NUMPAD9"); break; + case WXK_MULTIPLY: key = _T("MULTIPLY"); break; + case WXK_ADD: key = _T("ADD"); break; + case WXK_SEPARATOR: key = _T("SEPARATOR"); break; + case WXK_SUBTRACT: key = _T("SUBTRACT"); break; + case WXK_DECIMAL: key = _T("DECIMAL"); break; + case WXK_DIVIDE: key = _T("DIVIDE"); break; + case WXK_F1: key = _T("F1"); break; + case WXK_F2: key = _T("F2"); break; + case WXK_F3: key = _T("F3"); break; + case WXK_F4: key = _T("F4"); break; + case WXK_F5: key = _T("F5"); break; + case WXK_F6: key = _T("F6"); break; + case WXK_F7: key = _T("F7"); break; + case WXK_F8: key = _T("F8"); break; + case WXK_F9: key = _T("F9"); break; + case WXK_F10: key = _T("F10"); break; + case WXK_F11: key = _T("F11"); break; + case WXK_F12: key = _T("F12"); break; + case WXK_F13: key = _T("F13"); break; + case WXK_F14: key = _T("F14"); break; + case WXK_F15: key = _T("F15"); break; + case WXK_F16: key = _T("F16"); break; + case WXK_F17: key = _T("F17"); break; + case WXK_F18: key = _T("F18"); break; + case WXK_F19: key = _T("F19"); break; + case WXK_F20: key = _T("F20"); break; + case WXK_F21: key = _T("F21"); break; + case WXK_F22: key = _T("F22"); break; + case WXK_F23: key = _T("F23"); break; + case WXK_F24: key = _T("F24"); break; + case WXK_NUMLOCK: key = _T("NUMLOCK"); break; + case WXK_SCROLL: key = _T("SCROLL"); break; + case WXK_PAGEUP: key = _T("PAGEUP"); break; + case WXK_PAGEDOWN: key = _T("PAGEDOWN"); break; + case WXK_NUMPAD_SPACE: key = _T("NUMPAD_SPACE"); break; + case WXK_NUMPAD_TAB: key = _T("NUMPAD_TAB"); break; + case WXK_NUMPAD_ENTER: key = _T("NUMPAD_ENTER"); break; + case WXK_NUMPAD_F1: key = _T("NUMPAD_F1"); break; + case WXK_NUMPAD_F2: key = _T("NUMPAD_F2"); break; + case WXK_NUMPAD_F3: key = _T("NUMPAD_F3"); break; + case WXK_NUMPAD_F4: key = _T("NUMPAD_F4"); break; + case WXK_NUMPAD_HOME: key = _T("NUMPAD_HOME"); break; + case WXK_NUMPAD_LEFT: key = _T("NUMPAD_LEFT"); break; + case WXK_NUMPAD_UP: key = _T("NUMPAD_UP"); break; + case WXK_NUMPAD_RIGHT: key = _T("NUMPAD_RIGHT"); break; + case WXK_NUMPAD_DOWN: key = _T("NUMPAD_DOWN"); break; + case WXK_NUMPAD_PRIOR: key = _T("NUMPAD_PRIOR"); break; + case WXK_NUMPAD_PAGEUP: key = _T("NUMPAD_PAGEUP"); break; + case WXK_NUMPAD_PAGEDOWN: key = _T("NUMPAD_PAGEDOWN"); break; + case WXK_NUMPAD_END: key = _T("NUMPAD_END"); break; + case WXK_NUMPAD_BEGIN: key = _T("NUMPAD_BEGIN"); break; + case WXK_NUMPAD_INSERT: key = _T("NUMPAD_INSERT"); break; + case WXK_NUMPAD_DELETE: key = _T("NUMPAD_DELETE"); break; + case WXK_NUMPAD_EQUAL: key = _T("NUMPAD_EQUAL"); break; + case WXK_NUMPAD_MULTIPLY: key = _T("NUMPAD_MULTIPLY"); break; + case WXK_NUMPAD_ADD: key = _T("NUMPAD_ADD"); break; + case WXK_NUMPAD_SEPARATOR: key = _T("NUMPAD_SEPARATOR"); break; + case WXK_NUMPAD_SUBTRACT: key = _T("NUMPAD_SUBTRACT"); break; + case WXK_NUMPAD_DECIMAL: key = _T("NUMPAD_DECIMAL"); break; default: { @@ -704,13 +704,22 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) long line, column, pos = GetInsertionPoint(); PositionToXY(pos, &column, &line); - wxLogMessage( _T("Current position: %ld\nCurrent line, column: (%ld, %ld)\nNumber of lines: %ld\nCurrent line length: %ld\nTotal text length: %u (%ld)"), + wxLogMessage(_T("Current position: %ld\nCurrent line, column: (%ld, %ld)\nNumber of lines: %ld\nCurrent line length: %ld\nTotal text length: %u (%ld)"), pos, line, column, (long) GetNumberOfLines(), (long) GetLineLength(line), GetValue().length(), GetLastPosition()); + + long from, to; + GetSelection(&from, &to); + + wxString sel = GetStringSelection(); + + wxLogMessage(_T("Selection: from %ld to %ld."), from, to); + wxLogMessage(_T("Selection = '%s' (len = %u)"), + sel.c_str(), sel.length()); } break; @@ -741,32 +750,34 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) case WXK_F5: // insert a blank line - WriteText("\n"); + WriteText(_T("\n")); break; case WXK_F6: - SetValue("F6 was just pressed."); + wxLogMessage(_T("IsModified() before SetValue(): %d"), + IsModified()); + SetValue(_T("SetValue() has been called")); + wxLogMessage(_T("IsModified() after SetValue(): %d"), + IsModified()); break; case WXK_F7: + wxLogMessage(_T("Position 10 should be now visible.")); ShowPosition(10); break; case WXK_F8: + wxLogMessage(_T("Control has been cleared")); Clear(); break; + case WXK_F9: + WriteText(_T("WriteText() has been called")); + break; + case WXK_F10: - { - long from, to; - GetSelection(&from, &to); - - wxString sel = GetStringSelection(); - - wxLogMessage(_T("Selection: from %ld to %ld."), from, to); - wxLogMessage(_T("Selection = '%s' (len = %u)"), - sel.c_str(), sel.length()); - } + AppendText(_T("AppendText() has been called")); + break; } if ( ms_logKey ) @@ -786,7 +797,7 @@ END_EVENT_TABLE() MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ) { - m_log = new wxTextCtrl( this, -1, "This is the log window.\n", + m_log = new wxTextCtrl( this, -1, _T("This is the log window.\n"), wxPoint(5,260), wxSize(630,100), wxTE_MULTILINE | wxTE_READONLY /* | wxTE_RICH */); @@ -794,28 +805,28 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) // single line text controls - m_text = new MyTextCtrl( this, -1, "Single line.", + m_text = new MyTextCtrl( this, -1, _T("Single line."), wxPoint(10,10), wxSize(140,-1), wxTE_PROCESS_ENTER); m_text->SetForegroundColour(*wxBLUE); m_text->SetBackgroundColour(*wxLIGHT_GREY); - (*m_text) << " Appended."; + (*m_text) << _T(" Appended."); m_text->SetInsertionPoint(0); - m_text->WriteText( "Prepended. " ); + m_text->WriteText( _T("Prepended. ") ); - m_password = new MyTextCtrl( this, -1, "", + m_password = new MyTextCtrl( this, -1, _T(""), wxPoint(10,50), wxSize(140,-1), wxTE_PASSWORD ); - m_readonly = new MyTextCtrl( this, -1, "Read only", + m_readonly = new MyTextCtrl( this, -1, _T("Read only"), wxPoint(10,90), wxSize(140,-1), wxTE_READONLY ); - m_limited = new MyTextCtrl(this, -1, "Max 8 ch", + m_limited = new MyTextCtrl(this, -1, _T("Max 8 ch"), wxPoint(10, 130), wxSize(140, -1)); m_limited->SetMaxLength(8); // multi line text controls - m_horizontal = new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.", + m_horizontal = new MyTextCtrl( this, -1, _T("Multiline text control with a horizontal scrollbar."), wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL ); // a little hack to use the command line argument for encoding testing @@ -825,21 +836,21 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) { case '2': m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, - FALSE, "", + FALSE, _T(""), wxFONTENCODING_ISO8859_2)); - m_horizontal->SetValue("®lu»ouèký kùò zbìsile èe¹tina «»"); + m_horizontal->SetValue(_T("®lu»ouèký kùò zbìsile èe¹tina «»")); break; case '1': m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, - FALSE, "", + FALSE, _T(""), wxFONTENCODING_CP1251)); - m_horizontal->SetValue("Ïðèâåò!"); + m_horizontal->SetValue(_T("Ïðèâåò!")); break; case '8': m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, - FALSE, "", + FALSE, _T(""), wxFONTENCODING_CP1251)); #if wxUSE_UNICODE m_horizontal->SetValue(L"\x0412\x0430\x0434\x0438\x043c \x0426"); @@ -850,35 +861,35 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) } else { - m_horizontal->SetValue("Text in default encoding"); + m_horizontal->SetValue(_T("Text in default encoding")); } - m_multitext = new MyTextCtrl( this, -1, "Multi line.", + m_multitext = new MyTextCtrl( this, -1, _T("Multi line."), wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE ); m_multitext->SetFont(*wxITALIC_FONT); - (*m_multitext) << " Appended."; + (*m_multitext) << _T(" Appended."); m_multitext->SetInsertionPoint(0); - m_multitext->WriteText( "Prepended. " ); + m_multitext->WriteText( _T("Prepended. ") ); m_multitext->SetForegroundColour(*wxRED); m_multitext->SetBackgroundColour(*wxLIGHT_GREY); #if wxUSE_TOOLTIPS - m_multitext->SetToolTip("Press F1 here for statitics, F4 for capture and uncapture mouse."); + m_multitext->SetToolTip(_T("Press Fn function keys here")); #endif - m_tab = new MyTextCtrl( this, 100, "Multiline, allow processing.", + m_tab = new MyTextCtrl( this, 100, _T("Multiline, allow processing."), wxPoint(180,90), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_TAB ); m_tab->SetClientData((void *)_T("tab")); - m_enter = new MyTextCtrl( this, 100, "Multiline, allow processing.", + m_enter = new MyTextCtrl( this, 100, _T("Multiline, allow processing."), wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE); m_enter->SetClientData((void *)_T("enter")); - m_textrich = new MyTextCtrl(this, -1, "Allows more than 30Kb of text\n" - "(even under broken Win9x)\n" - "and a very very very very very " - "very very very long line to test " - "wxHSCROLL style", + m_textrich = new MyTextCtrl(this, -1, _T("Allows more than 30Kb of text\n") + _T("(even under broken Win9x)\n") + _T("and a very very very very very ") + _T("very very very long line to test ") + _T("wxHSCROLL style"), wxPoint(450, 10), wxSize(230, 230), wxTE_RICH | wxTE_MULTILINE | @@ -926,38 +937,38 @@ void MyPanel::DoPasteFromClipboard() if (!wxTheClipboard->Open()) { - *m_log << "Error opening the clipboard.\n"; + *m_log << _T("Error opening the clipboard.\n"); return; } else { - *m_log << "Successfully opened the clipboard.\n"; + *m_log << _T("Successfully opened the clipboard.\n"); } wxTextDataObject data; if (wxTheClipboard->IsSupported( data.GetFormat() )) { - *m_log << "Clipboard supports requested format.\n"; + *m_log << _T("Clipboard supports requested format.\n"); if (wxTheClipboard->GetData( data )) { - *m_log << "Successfully retrieved data from the clipboard.\n"; - *m_multitext << data.GetText() << "\n"; + *m_log << _T("Successfully retrieved data from the clipboard.\n"); + *m_multitext << data.GetText() << _T("\n"); } else { - *m_log << "Error getting data from the clipboard.\n"; + *m_log << _T("Error getting data from the clipboard.\n"); } } else { - *m_log << "Clipboard doesn't support requested format.\n"; + *m_log << _T("Clipboard doesn't support requested format.\n"); } wxTheClipboard->Close(); - *m_log << "Closed the clipboard.\n"; + *m_log << _T("Closed the clipboard.\n"); } void MyPanel::DoCopyToClipboard() @@ -971,36 +982,36 @@ void MyPanel::DoCopyToClipboard() if (text.IsEmpty()) { - *m_log << "No text to copy.\n"; + *m_log << _T("No text to copy.\n"); return; } if (!wxTheClipboard->Open()) { - *m_log << "Error opening the clipboard.\n"; + *m_log << _T("Error opening the clipboard.\n"); return; } else { - *m_log << "Successfully opened the clipboard.\n"; + *m_log << _T("Successfully opened the clipboard.\n"); } wxTextDataObject *data = new wxTextDataObject( text ); if (!wxTheClipboard->SetData( data )) { - *m_log << "Error while copying to the clipboard.\n"; + *m_log << _T("Error while copying to the clipboard.\n"); } else { - *m_log << "Successfully copied data to the clipboard.\n"; + *m_log << _T("Successfully copied data to the clipboard.\n"); } wxTheClipboard->Close(); - *m_log << "Closed the clipboard.\n"; + *m_log << _T("Closed the clipboard.\n"); } #endif // wxUSE_CLIPBOARD @@ -1068,7 +1079,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_IDLE(MyFrame::OnIdle) END_EVENT_TABLE() -MyFrame::MyFrame(wxFrame *frame, const char *title, int x, int y, int w, int h) +MyFrame::MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h) : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h) ) { CreateStatusBar(2); @@ -1086,12 +1097,12 @@ void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) wxBeginBusyCursor(); wxMessageDialog dialog(this, - "This is a text control sample. It demonstrates the many different\n" - "text control styles, the use of the clipboard, setting and handling\n" - "tooltips and intercepting key and char events.\n" - "\n" - "Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin", - "About wxTextCtrl Sample", + _T("This is a text control sample. It demonstrates the many different\n") + _T("text control styles, the use of the clipboard, setting and handling\n") + _T("tooltips and intercepting key and char events.\n") + _T("\n") + _T("Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin"), + _T("About wxTextCtrl Sample"), wxOK | wxICON_INFORMATION); dialog.ShowModal(); @@ -1107,8 +1118,8 @@ void MyFrame::OnSetTooltipDelay(wxCommandEvent& event) wxString delay; delay.Printf( _T("%ld"), s_delay); - delay = wxGetTextFromUser("Enter delay (in milliseconds)", - "Set tooltip delay", + delay = wxGetTextFromUser(_T("Enter delay (in milliseconds)"), + _T("Set tooltip delay"), delay, this); if ( !delay ) @@ -1164,7 +1175,7 @@ void MyFrame::OnSetEnabled(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnFileSave(wxCommandEvent& event) { - if ( m_panel->m_textrich->SaveFile("dummy.txt") ) + if ( m_panel->m_textrich->SaveFile(_T("dummy.txt")) ) { #if wxUSE_FILE // verify that the fil length is correct (it wasn't under Win95) @@ -1172,7 +1183,7 @@ void MyFrame::OnFileSave(wxCommandEvent& event) wxLogStatus(this, _T("Successfully saved file (text len = %lu, file size = %ld)"), (unsigned long)m_panel->m_textrich->GetValue().length(), - file.Length()); + (long) file.Length()); #endif } else @@ -1181,7 +1192,7 @@ void MyFrame::OnFileSave(wxCommandEvent& event) void MyFrame::OnFileLoad(wxCommandEvent& event) { - if ( m_panel->m_textrich->LoadFile("dummy.txt") ) + if ( m_panel->m_textrich->LoadFile(_T("dummy.txt")) ) wxLogStatus(this, _T("Successfully loaded file")); else wxLogStatus(this, _T("Couldn't load the file")); diff --git a/samples/text/text.dsp b/samples/text/text.dsp index 53583d6985..fb47575c5c 100644 --- a/samples/text/text.dsp +++ b/samples/text/text.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "text - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "text - Win32 Release" diff --git a/samples/thread/makefile.wat b/samples/thread/makefile.wat index d5741fd111..eff3ec7f39 100644 --- a/samples/thread/makefile.wat +++ b/samples/thread/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for thread example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = thread -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\thread +# +PROGRAM = thread +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/thread/thread.cpp b/samples/thread/thread.cpp index db09e0b8a1..25cec9bb13 100644 --- a/samples/thread/thread.cpp +++ b/samples/thread/thread.cpp @@ -378,39 +378,39 @@ bool MyApp::OnInit() //wxLog::AddTraceMask("thread"); // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *)NULL, "wxWindows threads sample", + MyFrame *frame = new MyFrame((wxFrame *)NULL, _T("wxWindows threads sample"), 50, 50, 450, 340); // Make a menubar wxMenuBar *menuBar = new wxMenuBar; wxMenu *menuFile = new wxMenu; - menuFile->Append(THREAD_CLEAR, "&Clear log\tCtrl-L"); + menuFile->Append(THREAD_CLEAR, _T("&Clear log\tCtrl-L")); menuFile->AppendSeparator(); - menuFile->Append(THREAD_QUIT, "E&xit\tAlt-X"); - menuBar->Append(menuFile, "&File"); + menuFile->Append(THREAD_QUIT, _T("E&xit\tAlt-X")); + menuBar->Append(menuFile, _T("&File")); wxMenu *menuThread = new wxMenu; - menuThread->Append(THREAD_START_THREAD, "&Start a new thread\tCtrl-N"); - menuThread->Append(THREAD_START_THREADS, "Start &many threads at once"); - menuThread->Append(THREAD_STOP_THREAD, "S&top a running thread\tCtrl-S"); + menuThread->Append(THREAD_START_THREAD, _T("&Start a new thread\tCtrl-N")); + menuThread->Append(THREAD_START_THREADS, _T("Start &many threads at once")); + menuThread->Append(THREAD_STOP_THREAD, _T("S&top a running thread\tCtrl-S")); menuThread->AppendSeparator(); - menuThread->Append(THREAD_PAUSE_THREAD, "&Pause a running thread\tCtrl-P"); - menuThread->Append(THREAD_RESUME_THREAD, "&Resume suspended thread\tCtrl-R"); + menuThread->Append(THREAD_PAUSE_THREAD, _T("&Pause a running thread\tCtrl-P")); + menuThread->Append(THREAD_RESUME_THREAD, _T("&Resume suspended thread\tCtrl-R")); menuThread->AppendSeparator(); - menuThread->Append(THREAD_START_WORKER, "Start &worker thread\tCtrl-W"); - menuBar->Append(menuThread, "&Thread"); + menuThread->Append(THREAD_START_WORKER, _T("Start &worker thread\tCtrl-W")); + menuBar->Append(menuThread, _T("&Thread")); wxMenu *menuExec = new wxMenu; - menuExec->Append(THREAD_EXEC_MAIN, "&Launch a program from main thread\tF5"); - menuExec->Append(THREAD_EXEC_THREAD, "L&aunch a program from a thread\tCtrl-F5"); - menuBar->Append(menuExec, "&Execute"); + menuExec->Append(THREAD_EXEC_MAIN, _T("&Launch a program from main thread\tF5")); + menuExec->Append(THREAD_EXEC_THREAD, _T("L&aunch a program from a thread\tCtrl-F5")); + menuBar->Append(menuExec, _T("&Execute")); wxMenu *menuHelp = new wxMenu; - menuHelp->Append(THREAD_SHOWCPUS, "&Show CPU count"); + menuHelp->Append(THREAD_SHOWCPUS, _T("&Show CPU count")); menuHelp->AppendSeparator(); - menuHelp->Append(THREAD_ABOUT, "&About..."); - menuBar->Append(menuHelp, "&Help"); + menuHelp->Append(THREAD_ABOUT, _T("&About...")); + menuBar->Append(menuHelp, _T("&Help")); frame->SetMenuBar(menuBar); @@ -433,7 +433,7 @@ MyFrame::MyFrame(wxFrame *frame, const wxString& title, CreateStatusBar(2); - m_txtctrl = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(0, 0), + m_txtctrl = new wxTextCtrl(this, -1, _T(""), wxPoint(0, 0), wxSize(0, 0), wxTE_MULTILINE | wxTE_READONLY); } @@ -457,8 +457,8 @@ void MyFrame::OnStartThreads(wxCommandEvent& WXUNUSED(event) ) { static long s_num = 10; - s_num = wxGetNumberFromUser("How many threads to start: ", "", - "wxThread sample", s_num, 1, 10000, this); + s_num = wxGetNumberFromUser(_T("How many threads to start: "), _T(""), + _T("wxThread sample"), s_num, 1, 10000, this); if ( s_num == -1 ) { s_num = 10; @@ -508,7 +508,7 @@ void MyFrame::OnStartThread(wxCommandEvent& WXUNUSED(event) ) wxLogError(wxT("Can't start thread!")); } - SetStatusText("New thread started.", 1); + SetStatusText(_T("New thread started."), 1); } void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) ) @@ -533,7 +533,7 @@ void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) ) thread->Delete(); - SetStatusText("Thread stopped.", 1); + SetStatusText(_T("Thread stopped."), 1); } } @@ -554,7 +554,7 @@ void MyFrame::OnResumeThread(wxCommandEvent& WXUNUSED(event) ) { wxGetApp().m_threads[n]->Resume(); - SetStatusText("Thread resumed.", 1); + SetStatusText(_T("Thread resumed."), 1); } } @@ -575,7 +575,7 @@ void MyFrame::OnPauseThread(wxCommandEvent& WXUNUSED(event) ) { wxGetApp().m_threads[n]->Pause(); - SetStatusText("Thread paused.", 1); + SetStatusText(_T("Thread paused."), 1); } } @@ -652,7 +652,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnExecMain(wxCommandEvent& WXUNUSED(event)) { wxLogMessage(wxT("The exit code from the main program is %ld"), - EXEC("/bin/echo \"main program\"")); + EXEC(_T("/bin/echo \"main program\""))); } void MyFrame::OnExecThread(wxCommandEvent& WXUNUSED(event)) @@ -672,15 +672,15 @@ void MyFrame::OnShowCPUs(wxCommandEvent& WXUNUSED(event)) switch ( nCPUs ) { case -1: - msg = "Unknown number of CPUs"; + msg = _T("Unknown number of CPUs"); break; case 0: - msg = "WARNING: you're running without any CPUs!"; + msg = _T("WARNING: you're running without any CPUs!"); break; case 1: - msg = "This system only has one CPU."; + msg = _T("This system only has one CPU."); break; default: @@ -692,11 +692,12 @@ void MyFrame::OnShowCPUs(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - wxMessageDialog dialog(this, "wxWindows multithreaded application sample\n" - "(c) 1998 Julian Smart, Guilhem Lavaux\n" - "(c) 1999 Vadim Zeitlin\n" - "(c) 2000 Robert Roebling", - "About wxThread sample", + wxMessageDialog dialog(this, + _T("wxWindows multithreaded application sample\n") + _T("(c) 1998 Julian Smart, Guilhem Lavaux\n") + _T("(c) 1999 Vadim Zeitlin\n") + _T("(c) 2000 Robert Roebling"), + _T("About wxThread sample"), wxOK | wxICON_INFORMATION); dialog.ShowModal(); @@ -723,8 +724,8 @@ void MyFrame::OnStartWorker(wxCommandEvent& WXUNUSED(event)) m_dlgProgress = new wxProgressDialog ( - "Progress dialog", - "Wait until the thread terminates or press [Cancel]", + _T("Progress dialog"), + _T("Wait until the thread terminates or press [Cancel]"), 100, this, wxPD_CAN_ABORT | @@ -743,9 +744,9 @@ void MyFrame::OnStartWorker(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnWorkerEvent(wxCommandEvent& event) { #if 0 - WriteText( "Got message from worker thread: " ); + WriteText( _T("Got message from worker thread: ") ); WriteText( event.GetString() ); - WriteText( "\n" ); + WriteText( _T("\n") ); #else int n = event.GetInt(); if ( n == -1 ) diff --git a/samples/thread/thread.dsp b/samples/thread/thread.dsp index 6da91b11b8..08534c39fb 100644 --- a/samples/thread/thread.dsp +++ b/samples/thread/thread.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "thread - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "thread - Win32 Release" diff --git a/samples/toolbar/makefile.wat b/samples/toolbar/makefile.wat index 95c26443ed..f996721fb7 100644 --- a/samples/toolbar/makefile.wat +++ b/samples/toolbar/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for toolbar example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = toolbar -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\toolbar +# +PROGRAM = toolbar +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/toolbar/toolbar.cpp b/samples/toolbar/toolbar.cpp index 9eea80a9d9..981a17ef7c 100644 --- a/samples/toolbar/toolbar.cpp +++ b/samples/toolbar/toolbar.cpp @@ -89,7 +89,7 @@ class MyFrame: public wxFrame public: MyFrame(wxFrame *parent, wxWindowID id = -1, - const wxString& title = "wxToolBar Sample", + const wxString& title = _T("wxToolBar Sample"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE); @@ -140,6 +140,9 @@ private: m_horzToolbar; size_t m_rows; // 1 or 2 only + // the number of print buttons we have (they're added/removed dynamically) + size_t m_nPrint; + wxTextCtrl *m_textWindow; wxToolBar *m_tbar; @@ -153,7 +156,7 @@ private: const int ID_TOOLBAR = 500; -static const long TOOLBAR_STYLE = wxTB_FLAT | wxTB_DOCKABLE | wxTB_TEXT; +static const long TOOLBAR_STYLE = wxTB_FLAT | wxTB_DOCKABLE | wxTB_TEXT ; enum { @@ -229,12 +232,12 @@ bool MyApp::OnInit() { // Create the main frame window MyFrame* frame = new MyFrame((wxFrame *) NULL, -1, - "wxToolBar Sample", + _T("wxToolBar Sample"), wxPoint(100, 100), wxSize(550, 300)); frame->Show(TRUE); - frame->SetStatusText("Hello, wxWindows"); + frame->SetStatusText(_T("Hello, wxWindows")); SetTopWindow(frame); @@ -296,16 +299,16 @@ void MyFrame::RecreateToolbar() toolBar->AddTool(wxID_OPEN, _T("Open"), toolBarBitmaps[1], _T("Open file")); // neither the generic nor Motif native toolbars really support this -#if (wxUSE_TOOLBAR_NATIVE && !USE_GENERIC_TBAR) && !defined(__WXMOTIF__) && !defined(__WXX11__) +#if (wxUSE_TOOLBAR_NATIVE && !USE_GENERIC_TBAR) && !defined(__WXMOTIF__) && !defined(__WXX11__) && !defined(__WXMAC__) // adding a combo to a vertical toolbar is not very smart if ( m_horzToolbar ) { - wxComboBox *combo = new wxComboBox(toolBar, ID_COMBO, "", wxDefaultPosition, wxSize(200,-1) ); - combo->Append("This"); - combo->Append("is a"); - combo->Append("combobox"); - combo->Append("in a"); - combo->Append("toolbar"); + wxComboBox *combo = new wxComboBox(toolBar, ID_COMBO, _T(""), wxDefaultPosition, wxSize(200,-1) ); + combo->Append(_T("This")); + combo->Append(_T("is a")); + combo->Append(_T("combobox")); + combo->Append(_T("in a")); + combo->Append(_T("toolbar")); toolBar->AddControl(combo); } #endif // toolbars which don't support controls @@ -339,11 +342,12 @@ MyFrame::MyFrame(wxFrame* parent, : wxFrame(parent, id, title, pos, size, style) { m_tbar = NULL; - m_textWindow = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(-1, -1), wxTE_MULTILINE); + m_textWindow = new wxTextCtrl(this, -1, _T(""), wxPoint(0, 0), wxSize(-1, -1), wxTE_MULTILINE); m_smallToolbar = TRUE; m_horzToolbar = TRUE; m_rows = 1; + m_nPrint = 1; // Give it a status line CreateStatusBar(); @@ -354,49 +358,49 @@ MyFrame::MyFrame(wxFrame* parent, // Make a menubar wxMenu *tbarMenu = new wxMenu; tbarMenu->AppendCheckItem(IDM_TOOLBAR_TOGGLE_TOOLBAR, - "Toggle &toolbar\tCtrl-Z", - "Show or hide the toolbar"); + _T("Toggle &toolbar\tCtrl-Z"), + _T("Show or hide the toolbar")); tbarMenu->AppendCheckItem(IDM_TOOLBAR_TOGGLE_ANOTHER_TOOLBAR, - "Toggle &another toolbar\tCtrl-A", - "Show/hide another test toolbar"); + _T("Toggle &another toolbar\tCtrl-A"), + _T("Show/hide another test toolbar")); tbarMenu->AppendCheckItem(IDM_TOOLBAR_TOGGLETOOLBARSIZE, - "&Toggle toolbar size\tCtrl-S", - "Toggle between big/small toolbar"); + _T("&Toggle toolbar size\tCtrl-S"), + _T("Toggle between big/small toolbar")); tbarMenu->AppendCheckItem(IDM_TOOLBAR_TOGGLETOOLBARORIENT, - "Toggle toolbar &orientation\tCtrl-O", - "Toggle toolbar orientation"); + _T("Toggle toolbar &orientation\tCtrl-O"), + _T("Toggle toolbar orientation")); tbarMenu->AppendCheckItem(IDM_TOOLBAR_TOGGLETOOLBARROWS, - "Toggle number of &rows\tCtrl-R", - "Toggle number of toolbar rows between 1 and 2"); + _T("Toggle number of &rows\tCtrl-R"), + _T("Toggle number of toolbar rows between 1 and 2")); tbarMenu->AppendSeparator(); - tbarMenu->Append(IDM_TOOLBAR_ENABLEPRINT, "&Enable print button\tCtrl-E", ""); - tbarMenu->Append(IDM_TOOLBAR_DELETEPRINT, "&Delete print button\tCtrl-D", ""); - tbarMenu->Append(IDM_TOOLBAR_INSERTPRINT, "&Insert print button\tCtrl-I", ""); - tbarMenu->Append(IDM_TOOLBAR_TOGGLEHELP, "Toggle &help button\tCtrl-T", ""); + tbarMenu->Append(IDM_TOOLBAR_ENABLEPRINT, _T("&Enable print button\tCtrl-E"), _T("")); + tbarMenu->Append(IDM_TOOLBAR_DELETEPRINT, _T("&Delete print button\tCtrl-D"), _T("")); + tbarMenu->Append(IDM_TOOLBAR_INSERTPRINT, _T("&Insert print button\tCtrl-I"), _T("")); + tbarMenu->Append(IDM_TOOLBAR_TOGGLEHELP, _T("Toggle &help button\tCtrl-T"), _T("")); tbarMenu->AppendSeparator(); - tbarMenu->Append(IDM_TOOLBAR_CHANGE_TOOLTIP, "Change tool tip", ""); + tbarMenu->Append(IDM_TOOLBAR_CHANGE_TOOLTIP, _T("Change tool tip"), _T("")); tbarMenu->AppendSeparator(); - tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_TEXT, "Show &text\tAlt-T"); - tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_ICONS, "Show &icons\tAlt-I"); - tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_BOTH, "Show &both\tAlt-B"); + tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_TEXT, _T("Show &text\tAlt-T")); + tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_ICONS, _T("Show &icons\tAlt-I")); + tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_BOTH, _T("Show &both\tAlt-B")); wxMenu *fileMenu = new wxMenu; - fileMenu->Append(wxID_EXIT, "E&xit\tAlt-X", "Quit toolbar sample" ); + fileMenu->Append(wxID_EXIT, _T("E&xit\tAlt-X"), _T("Quit toolbar sample") ); wxMenu *helpMenu = new wxMenu; - helpMenu->Append(wxID_HELP, "&About", "About toolbar sample"); + helpMenu->Append(wxID_HELP, _T("&About"), _T("About toolbar sample")); wxMenuBar* menuBar = new wxMenuBar( wxMB_DOCKABLE ); - menuBar->Append(fileMenu, "&File"); - menuBar->Append(tbarMenu, "&Toolbar"); - menuBar->Append(helpMenu, "&Help"); + menuBar->Append(fileMenu, _T("&File")); + menuBar->Append(tbarMenu, _T("&Toolbar")); + menuBar->Append(helpMenu, _T("&Help")); // Associate the menu bar with the frame SetMenuBar(menuBar); @@ -530,7 +534,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - (void)wxMessageBox("wxWindows toolbar sample", "About wxToolBar"); + (void)wxMessageBox(_T("wxWindows toolbar sample"), _T("About wxToolBar")); } void MyFrame::OnToolLeftClick(wxCommandEvent& event) @@ -570,18 +574,22 @@ void MyFrame::OnCombo(wxCommandEvent& event) void MyFrame::DoEnablePrint() { + if ( !m_nPrint ) + return; + wxToolBarBase *tb = GetToolBar(); - if (tb->GetToolEnabled(wxID_PRINT)) - tb->EnableTool( wxID_PRINT, FALSE ); - else - tb->EnableTool( wxID_PRINT, TRUE ); + tb->EnableTool(wxID_PRINT, !tb->GetToolEnabled(wxID_PRINT)); } void MyFrame::DoDeletePrint() { - wxToolBarBase *tb = GetToolBar(); + if ( !m_nPrint ) + return; + wxToolBarBase *tb = GetToolBar(); tb->DeleteTool( wxID_PRINT ); + + m_nPrint--; } void MyFrame::DoToggleHelp() @@ -624,14 +632,17 @@ void MyFrame::OnToolbarStyle(wxCommandEvent& event) void MyFrame::OnInsertPrint(wxCommandEvent& WXUNUSED(event)) { - wxBitmap bmp = wxBITMAP(print); + m_nPrint++; - GetToolBar()->InsertTool(0, wxID_PRINT, bmp, wxNullBitmap, - FALSE, (wxObject *) NULL, - "Delete this tool", - "This button was inserted into the toolbar"); + wxToolBarBase *tb = GetToolBar(); + tb->InsertTool(0, wxID_PRINT, _T("New print"), + wxBITMAP(print), wxNullBitmap, + wxITEM_NORMAL, + _T("Delete this tool"), + _T("This button was inserted into the toolbar")); - GetToolBar()->Realize(); + // must call Realize() after adding a new button + tb->Realize(); } void MyFrame::OnToolEnter(wxCommandEvent& event) @@ -643,6 +654,6 @@ void MyFrame::OnToolEnter(wxCommandEvent& event) SetStatusText(str); } else - SetStatusText(""); + SetStatusText(_T("")); } diff --git a/samples/toolbar/toolbar.dsp b/samples/toolbar/toolbar.dsp index cbd5496aa0..624486df5a 100644 --- a/samples/toolbar/toolbar.dsp +++ b/samples/toolbar/toolbar.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "toolbar - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "toolbar - Win32 Release" diff --git a/samples/toolbar/toolbarM5.xml b/samples/toolbar/toolbarM5.xml index b8bcb3dfc8..ffc8e09601 100644 --- a/samples/toolbar/toolbarM5.xml +++ b/samples/toolbar/toolbarM5.xml @@ -480,3176 +480,4 @@ MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources - {Ð - %#H - %8* - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesNone - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings0 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel0 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeFast - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - PPC Mach-O CodeGen - 0001000001010000010000000001010101000000 - - PPC Mach-O Linker - 0001000000000100000100000000000000000000000000000000000000007374 - 6172740000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000 - - PPC Mach-O Target - 0001000005612E6F757400000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000003F3F3F3F4D41504C0000004000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000 - - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfiletoolbar Classic Release - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size3840 - MWProject_PPC_minsize3840 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - - Name - wx_PPC.lib - MacOS - Library - Debug - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - MSL C.PPC.Lib - MacOS - Library - Debug - - - Name - console.stubs.c - MacOS - Text - - - - Name - MSL RuntimePPC.Lib - MacOS - Library - Debug - - - Name - wx_PPC.rsrc - MacOS - Resource - - - - Name - tiff.lib - MacOS - Library - - - - Name - jpeg.lib - MacOS - Library - - - - Name - png.lib - MacOS - Library - - - - Name - zlib.lib - MacOS - Library - - - - Name - toolbar.cpp - MacOS - Text - - - - Name - AppearanceLib - MacOS - Library - - - - Name - ATSUnicodeLib - MacOS - Library - - - - Name - CarbonAccessors.o - MacOS - Library - - - - Name - ControlsLib - MacOS - Library - - - - Name - CursorDevicesGlue.o - MacOS - Library - - - - Name - DialogsLib - MacOS - Library - - - - Name - DragLib - MacOS - Library - - - - Name - InterfaceLib - MacOS - Library - - - - Name - InternetConfigLib - MacOS - Library - - - - Name - WindowsLib - MacOS - Library - - - - Name - MathLib - MacOS - Library - - - - Name - MenusLib - MacOS - Library - - - - Name - NavigationLib - MacOS - Library - - - - Name - OpenTptAppleTalkLib - MacOS - Library - - - - Name - OpenTptATalkPPC.o - MacOS - Library - - - - Name - OpenTptInetPPC.o - MacOS - Library - - - - Name - OpenTptInternetLib - MacOS - Library - - - - Name - OpenTransportLib - MacOS - Library - - - - Name - OpenTransportAppPPC.o - MacOS - Library - - - - Name - PLStringFuncsPPC.lib - MacOS - Library - - - - Name - TextEncodingConverter - MacOS - Library - - - - Name - Textension - MacOS - Library - - - - Name - ThreadsLib - MacOS - Library - - - - Name - UnicodeConverter - MacOS - Library - - - - - - Name - wx_PPC.lib - MacOS - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - MSL C.PPC.Lib - MacOS - - - Name - console.stubs.c - MacOS - - - Name - MSL RuntimePPC.Lib - MacOS - - - Name - wx_PPC.rsrc - MacOS - - - Name - tiff.lib - MacOS - - - Name - jpeg.lib - MacOS - - - Name - png.lib - MacOS - - - Name - zlib.lib - MacOS - - - Name - toolbar.cpp - MacOS - - - Name - AppearanceLib - MacOS - - - Name - ATSUnicodeLib - MacOS - - - Name - CarbonAccessors.o - MacOS - - - Name - ControlsLib - MacOS - - - Name - CursorDevicesGlue.o - MacOS - - - Name - DialogsLib - MacOS - - - Name - DragLib - MacOS - - - Name - InterfaceLib - MacOS - - - Name - InternetConfigLib - MacOS - - - Name - WindowsLib - MacOS - - - Name - MathLib - MacOS - - - Name - MenusLib - MacOS - - - Name - NavigationLib - MacOS - - - Name - OpenTptAppleTalkLib - MacOS - - - Name - OpenTptATalkPPC.o - MacOS - - - Name - OpenTptInetPPC.o - MacOS - - - Name - OpenTptInternetLib - MacOS - - - Name - OpenTransportLib - MacOS - - - Name - OpenTransportAppPPC.o - MacOS - - - Name - PLStringFuncsPPC.lib - MacOS - - - Name - TextEncodingConverter - MacOS - - - Name - Textension - MacOS - - - Name - ThreadsLib - MacOS - - - Name - UnicodeConverter - MacOS - - - - - Classic Debug - - - - UserSourceTrees - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - AlwaysSearchUserPathstrue - InterpretDOSAndUnixPathstrue - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:::include: - PathFormatMacOS - PathRootProject - - Recursivefalse - HostFlagsAll - - - SearchPath - Path:::lib: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - PathMSL - PathFormatWindows - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameClassic Debug - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - FileExtension.o - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.ppob - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileExtension.rsrc - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - Debugger Runtime - 0002000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000E2D755010000000000001000E2D7E60 - 0002000000000000000000000E2D2DD000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000 - - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - - - MWFrontEnd_C_cplusplus0 - MWFrontEnd_C_checkprotos0 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixname/wx/wx_cw_d.h - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline1 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars1 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma1 - MWWarning_C_warn_emptydecl1 - MWWarning_C_warn_possunwant1 - MWWarning_C_warn_unusedvar0 - MWWarning_C_warn_unusedarg0 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic1 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual1 - MWWarning_C_warn_implicitconv1 - MWWarning_C_warn_notinlined1 - MWWarning_C_warn_structclass1 - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - - {Ð - %#H - %8* - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesInline - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings0 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel0 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeFast - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - PPC Mach-O CodeGen - 0001000001010000010000000001010101000000 - - PPC Mach-O Linker - 0001000000000100000100000000000000000000000000000000000000007374 - 6172740000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000 - - PPC Mach-O Target - 0001000005612E6F757400000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000003F3F3F3F4D41504C0000004000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000 - - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfiletoolbar Classic Debug - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size3840 - MWProject_PPC_minsize3840 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - MSL C.PPC.Lib - MacOS - Library - Debug - - - Name - console.stubs.c - MacOS - Text - Debug - - - Name - MSL RuntimePPC.Lib - MacOS - Library - Debug - - - Name - wx_PPC_d.lib - MacOS - Library - Debug - - - Name - wx_PPC.rsrc - MacOS - Resource - Debug - - - Name - zlib.lib - MacOS - Library - Debug - - - Name - png.lib - MacOS - Library - Debug - - - Name - tiffd.lib - MacOS - Library - Debug - - - Name - jpeg.lib - MacOS - Library - Debug - - - Name - toolbar.cpp - MacOS - Text - Debug - - - Name - AppearanceLib - MacOS - Library - Debug - - - Name - ATSUnicodeLib - MacOS - Library - Debug - - - Name - CarbonAccessors.o - MacOS - Library - Debug - - - Name - ControlsLib - MacOS - Library - Debug - - - Name - CursorDevicesGlue.o - MacOS - Library - Debug - - - Name - DialogsLib - MacOS - Library - Debug - - - Name - DragLib - MacOS - Library - Debug - - - Name - InterfaceLib - MacOS - Library - Debug - - - Name - InternetConfigLib - MacOS - Library - Debug - - - Name - WindowsLib - MacOS - Library - Debug - - - Name - MathLib - MacOS - Library - Debug - - - Name - MenusLib - MacOS - Library - Debug - - - Name - NavigationLib - MacOS - Library - Debug - - - Name - OpenTptAppleTalkLib - MacOS - Library - Debug - - - Name - OpenTptATalkPPC.o - MacOS - Library - Debug - - - Name - OpenTptInetPPC.o - MacOS - Library - Debug - - - Name - OpenTptInternetLib - MacOS - Library - Debug - - - Name - OpenTransportLib - MacOS - Library - Debug - - - Name - OpenTransportAppPPC.o - MacOS - Library - Debug - - - Name - PLStringFuncsPPC.lib - MacOS - Library - Debug - - - Name - TextEncodingConverter - MacOS - Library - Debug - - - Name - Textension - MacOS - Library - Debug - - - Name - ThreadsLib - MacOS - Library - Debug - - - Name - UnicodeConverter - MacOS - Library - Debug - - - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - MSL C.PPC.Lib - MacOS - - - Name - console.stubs.c - MacOS - - - Name - MSL RuntimePPC.Lib - MacOS - - - Name - wx_PPC_d.lib - MacOS - - - Name - wx_PPC.rsrc - MacOS - - - Name - zlib.lib - MacOS - - - Name - png.lib - MacOS - - - Name - tiffd.lib - MacOS - - - Name - jpeg.lib - MacOS - - - Name - toolbar.cpp - MacOS - - - Name - AppearanceLib - MacOS - - - Name - ATSUnicodeLib - MacOS - - - Name - CarbonAccessors.o - MacOS - - - Name - ControlsLib - MacOS - - - Name - CursorDevicesGlue.o - MacOS - - - Name - DialogsLib - MacOS - - - Name - DragLib - MacOS - - - Name - InterfaceLib - MacOS - - - Name - InternetConfigLib - MacOS - - - Name - WindowsLib - MacOS - - - Name - MathLib - MacOS - - - Name - MenusLib - MacOS - - - Name - NavigationLib - MacOS - - - Name - OpenTptAppleTalkLib - MacOS - - - Name - OpenTptATalkPPC.o - MacOS - - - Name - OpenTptInetPPC.o - MacOS - - - Name - OpenTptInternetLib - MacOS - - - Name - OpenTransportLib - MacOS - - - Name - OpenTransportAppPPC.o - MacOS - - - Name - PLStringFuncsPPC.lib - MacOS - - - Name - TextEncodingConverter - MacOS - - - Name - Textension - MacOS - - - Name - ThreadsLib - MacOS - - - Name - UnicodeConverter - MacOS - - - - - Carbon Debug - - - - UserSourceTrees - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - AlwaysSearchUserPathstrue - InterpretDOSAndUnixPathstrue - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:::include: - PathFormatMacOS - PathRootProject - - Recursivefalse - HostFlagsAll - - - SearchPath - Path:::lib: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - PathMSL - PathFormatWindows - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameCarbon Debug - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - FileExtension.o - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.ppob - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileExtension.rsrc - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - Debugger Runtime - 0002000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000 - - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - - - MWFrontEnd_C_cplusplus0 - MWFrontEnd_C_checkprotos0 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixname/wx/wx_cwc_d.h - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline1 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars1 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma1 - MWWarning_C_warn_emptydecl1 - MWWarning_C_warn_possunwant1 - MWWarning_C_warn_unusedvar0 - MWWarning_C_warn_unusedarg0 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic1 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual1 - MWWarning_C_warn_implicitconv1 - MWWarning_C_warn_notinlined1 - MWWarning_C_warn_structclass1 - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - - {Ð - %#H - %8* - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesInline - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings0 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel0 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeFast - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - PPC Mach-O CodeGen - 0001000001010000010000000001010101000000 - - PPC Mach-O Linker - 0001000000000100000100000000000000000000000000000000000000007374 - 6172740000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000 - - PPC Mach-O Target - 0001000005612E6F757400000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000003F3F3F3F4D41504C0000004000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000 - - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfiletoolbar Carbon Debug - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size3840 - MWProject_PPC_minsize3840 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - console.stubs.c - MacOS - Text - Debug - - - Name - MSL RuntimePPC.Lib - MacOS - Library - Debug - - - Name - wx_CARBON_d.lib - MacOS - Library - Debug - - - Name - MSL C.CARBON.Lib - MacOS - Library - Debug - - - Name - wx_CARBON.rsrc - MacOS - Resource - Debug - - - Name - tiffd.lib - MacOS - Library - Debug - - - Name - jpeg.lib - MacOS - Library - Debug - - - Name - png.lib - MacOS - Library - Debug - - - Name - zlib.lib - MacOS - Library - Debug - - - Name - toolbar.cpp - MacOS - Text - Debug - - - Name - CarbonLib - MacOS - Library - Debug - - - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - console.stubs.c - MacOS - - - Name - MSL RuntimePPC.Lib - MacOS - - - Name - wx_CARBON_d.lib - MacOS - - - Name - MSL C.CARBON.Lib - MacOS - - - Name - wx_CARBON.rsrc - MacOS - - - Name - tiffd.lib - MacOS - - - Name - jpeg.lib - MacOS - - - Name - png.lib - MacOS - - - Name - zlib.lib - MacOS - - - Name - toolbar.cpp - MacOS - - - Name - CarbonLib - MacOS - - - - - Carbon Release - - - - UserSourceTrees - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - AlwaysSearchUserPathstrue - InterpretDOSAndUnixPathstrue - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:::include: - PathFormatMacOS - PathRootProject - - Recursivefalse - HostFlagsAll - - - SearchPath - Path:::lib: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - PathMSL - PathFormatWindows - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameCarbon Release - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - FileExtension.o - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.ppob - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileExtension.rsrc - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - Debugger Runtime - 0002000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000 - - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - - - MWFrontEnd_C_cplusplus0 - MWFrontEnd_C_checkprotos0 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle1 - MWFrontEnd_C_prefixname/wx/wx_cwc.h - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline1 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars1 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma0 - MWWarning_C_warn_emptydecl0 - MWWarning_C_warn_possunwant0 - MWWarning_C_warn_unusedvar0 - MWWarning_C_warn_unusedarg0 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic0 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual0 - MWWarning_C_warn_implicitconv0 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass0 - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - - {Ð - %#H - %8* - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesNone - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings0 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel0 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeFast - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - PPC Mach-O CodeGen - 0001000001010000010000000001010101000000 - - PPC Mach-O Linker - 0001000000000100000100000000000000000000000000000000000000007374 - 6172740000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000 - - PPC Mach-O Target - 0001000005612E6F757400000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000003F3F3F3F4D41504C0000004000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000 - - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfiletoolbar Carbon Release - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size3840 - MWProject_PPC_minsize3840 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - console.stubs.c - MacOS - Text - - - - Name - MSL RuntimePPC.Lib - MacOS - Library - Debug - - - Name - MSL C.CARBON.Lib - MacOS - Library - - - - Name - wx_CARBON.lib - MacOS - Library - - - - Name - wx_CARBON.rsrc - MacOS - Resource - - - - Name - tiff.lib - MacOS - Library - - - - Name - jpeg.lib - MacOS - Library - - - - Name - toolbar.cpp - MacOS - Text - - - - Name - zlib.lib - MacOS - Library - - - - Name - png.lib - MacOS - Library - - - - Name - CarbonLib - MacOS - Library - - - - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - console.stubs.c - MacOS - - - Name - MSL RuntimePPC.Lib - MacOS - - - Name - MSL C.CARBON.Lib - MacOS - - - Name - wx_CARBON.lib - MacOS - - - Name - wx_CARBON.rsrc - MacOS - - - Name - tiff.lib - MacOS - - - Name - jpeg.lib - MacOS - - - Name - toolbar.cpp - MacOS - - - Name - zlib.lib - MacOS - - - Name - png.lib - MacOS - - - Name - CarbonLib - MacOS - - - - - - - Classic Release - Classic Debug - Carbon Debug - Carbon Release - - - - - Classic Release - Name - toolbar.cpp - MacOS - - wx - - Carbon Release - Name - wx_CARBON.lib - MacOS - - - Carbon Debug - Name - wx_CARBON_d.lib - MacOS - - - Carbon Debug - Name - wx_CARBON.rsrc - MacOS - - - Classic Release - Name - wx_PPC.lib - MacOS - - - Classic Debug - Name - wx_PPC_d.lib - MacOS - - - Classic Release - Name - wx_PPC.rsrc - MacOS - - - Classic Release - Name - tiff.lib - MacOS - - - Classic Release - Name - zlib.lib - MacOS - - - Classic Release - Name - png.lib - MacOS - - - Classic Debug - Name - tiffd.lib - MacOS - - - Classic Release - Name - jpeg.lib - MacOS - - - MSL ANSI Libraries - - Classic Release - Name - console.stubs.c - MacOS - - - Classic Release - Name - MSL RuntimePPC.Lib - MacOS - - - Classic Release - Name - MSL C++.PPC.Lib - MacOS - - - Classic Release - Name - MSL C.PPC.Lib - MacOS - - - Carbon Debug - Name - MSL C.CARBON.Lib - MacOS - - - Win32 SDK - - MacOS - Carbon - - Carbon Debug - Name - CarbonLib - MacOS - - - Classic - - Classic Release - Name - AppearanceLib - MacOS - - - Classic Release - Name - ATSUnicodeLib - MacOS - - - Classic Release - Name - CarbonAccessors.o - MacOS - - - Classic Release - Name - ControlsLib - MacOS - - - Classic Release - Name - CursorDevicesGlue.o - MacOS - - - Classic Release - Name - DialogsLib - MacOS - - - Classic Release - Name - DragLib - MacOS - - - Classic Release - Name - InterfaceLib - MacOS - - - Classic Release - Name - InternetConfigLib - MacOS - - - Classic Release - Name - WindowsLib - MacOS - - - Classic Release - Name - MathLib - MacOS - - - Classic Release - Name - MenusLib - MacOS - - - Classic Release - Name - NavigationLib - MacOS - - - Classic Release - Name - OpenTptAppleTalkLib - MacOS - - - Classic Release - Name - OpenTptATalkPPC.o - MacOS - - - Classic Release - Name - OpenTptInetPPC.o - MacOS - - - Classic Release - Name - OpenTptInternetLib - MacOS - - - Classic Release - Name - OpenTransportLib - MacOS - - - Classic Release - Name - OpenTransportAppPPC.o - MacOS - - - Classic Release - Name - PLStringFuncsPPC.lib - MacOS - - - Classic Release - Name - TextEncodingConverter - MacOS - - - Classic Release - Name - Textension - MacOS - - - Classic Release - Name - ThreadsLib - MacOS - - - Classic Release - Name - UnicodeConverter - MacOS - - - - - - + { \ No newline at end of file diff --git a/samples/treectrl/icon1.xpm b/samples/treectrl/icon1.xpm index 0dc70cfc0d..0263fadbaa 100644 --- a/samples/treectrl/icon1.xpm +++ b/samples/treectrl/icon1.xpm @@ -8,34 +8,34 @@ static char *icon1_xpm[] = { /* pixels */ "################################", "################################", -".##..................##.##.##.##", "####................############", -"##.#..############....##.###.###", +"####................############", "####..############....##########", -"####..##..##..####..##..##.###.#", -".##...##..##..####..##..########", -"####..############........##.###", +"####..############....##########", +"####..##..##..####..##..########", +"####..##..##..####..##..########", +"####..############........######", "####..############........######", -"##.#..##..##..##########...##.##", "####..##..##..##########..######", -"#.##..##################..######", -"###...##################..#.##.#", -"####..##..##..##..##..##..######", -"####..##..##..##..##..##..######", -"#.##..##################...##.##", +"####..##..##..##########..######", "####..##################..######", -"##.#..##..##..##..##..##..##.###", +"###...##################..######", "####..##..##..##..##..##..######", -"####..##################...###.#", -"##.#..##################..######", -"####..##..##..##..##..##..##.###", -"#.##..##..##..##..##..##..######", -"####..##################..###.##", -"####..##################...#####", -"##.#......................##.###", -"####......................####.#", -"#.##############################", -"####.###.#####.#####.#####.#####", -"###########.#####.#####.#####.##", -"##.###.#########################" +"####..##..##..##..##..##..######", +"####..##################..######", +"####..##################..######", +"####..##..##..##..##..##..######", +"####..##..##..##..##..##..######", +"####..##################..######", +"####..##################..######", +"####..##..##..##..##..##..######", +"####..##..##..##..##..##..######", +"####..##################..######", +"####..##################..######", +"####......................######", +"####......................######", +"################################", +"################################", +"################################", +"################################" }; diff --git a/samples/treectrl/makefile.wat b/samples/treectrl/makefile.wat index 5125f13c6b..7fffdbf9a3 100644 --- a/samples/treectrl/makefile.wat +++ b/samples/treectrl/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for treectrl example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = treetest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\treectrl +# +PROGRAM = treetest +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/treectrl/treetest.cpp b/samples/treectrl/treetest.cpp index 4b82bf8ad0..cbdf952ce8 100644 --- a/samples/treectrl/treetest.cpp +++ b/samples/treectrl/treetest.cpp @@ -180,20 +180,20 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) file_menu->AppendSeparator(); file_menu->Append(TreeTest_Quit, wxT("E&xit\tAlt-X")); - style_menu->Append(TreeTest_TogButtons, "Toggle &normal buttons", _T(""), TRUE); - style_menu->Append(TreeTest_TogTwist, "Toggle &twister buttons", _T(""), TRUE); - style_menu->Append(TreeTest_ToggleButtons, "Toggle image &buttons", _T(""), TRUE); + style_menu->Append(TreeTest_TogButtons, wxT("Toggle &normal buttons"), wxT(""), TRUE); + style_menu->Append(TreeTest_TogTwist, wxT("Toggle &twister buttons"), wxT(""), TRUE); + style_menu->Append(TreeTest_ToggleButtons, wxT("Toggle image &buttons"), wxT(""), TRUE); style_menu->AppendSeparator(); - style_menu->Append(TreeTest_TogLines, "Toggle &connecting lines", _T(""), TRUE); - style_menu->Append(TreeTest_TogRootLines, "Toggle &lines at root", _T(""), TRUE); - style_menu->Append(TreeTest_TogHideRoot, "Toggle &hidden root", _T(""), TRUE); - style_menu->Append(TreeTest_TogBorder, "Toggle &item border", _T(""), TRUE); - style_menu->Append(TreeTest_TogFullHighlight, "Toggle &full row highlight", _T(""), TRUE); - style_menu->Append(TreeTest_TogEdit, "Toggle &edit mode", _T(""), TRUE); + style_menu->Append(TreeTest_TogLines, wxT("Toggle &connecting lines"), wxT(""), TRUE); + style_menu->Append(TreeTest_TogRootLines, wxT("Toggle &lines at root"), wxT(""), TRUE); + style_menu->Append(TreeTest_TogHideRoot, wxT("Toggle &hidden root"), wxT(""), TRUE); + style_menu->Append(TreeTest_TogBorder, wxT("Toggle &item border"), wxT(""), TRUE); + style_menu->Append(TreeTest_TogFullHighlight, wxT("Toggle &full row highlight"), wxT(""), TRUE); + style_menu->Append(TreeTest_TogEdit, wxT("Toggle &edit mode"), wxT(""), TRUE); #ifndef NO_MULTIPLE_SELECTION - style_menu->Append(TreeTest_ToggleSel, wxT("Toggle &selection mode"), _T(""), TRUE); + style_menu->Append(TreeTest_ToggleSel, wxT("Toggle &selection mode"), wxT(""), TRUE); #endif // NO_MULTIPLE_SELECTION - style_menu->Append(TreeTest_ToggleImages, wxT("Toggle show ima&ges"), _T(""), TRUE); + style_menu->Append(TreeTest_ToggleImages, wxT("Toggle show ima&ges"), wxT(""), TRUE); style_menu->Append(TreeTest_SetImageSize, wxT("Set image si&ze...")); style_menu->AppendSeparator(); style_menu->Append(TreeTest_SetFgColour, wxT("Set &foreground colour...")); @@ -201,55 +201,55 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) style_menu->AppendSeparator(); style_menu->Append(TreeTest_ResetStyle, wxT("&Reset to default\tF10")); - tree_menu->Append(TreeTest_Recreate, "&Recreate the tree"); - tree_menu->Append(TreeTest_CollapseAndReset, "C&ollapse and reset"); + tree_menu->Append(TreeTest_Recreate, wxT("&Recreate the tree")); + tree_menu->Append(TreeTest_CollapseAndReset, wxT("C&ollapse and reset")); tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_AddItem, "Append a &new item"); - tree_menu->Append(TreeTest_InsertItem, "&Insert a new item"); - tree_menu->Append(TreeTest_Delete, "&Delete this item"); - tree_menu->Append(TreeTest_DeleteChildren, "Delete &children"); - tree_menu->Append(TreeTest_DeleteAll, "Delete &all items"); + tree_menu->Append(TreeTest_AddItem, wxT("Append a &new item")); + tree_menu->Append(TreeTest_InsertItem, wxT("&Insert a new item")); + tree_menu->Append(TreeTest_Delete, wxT("&Delete this item")); + tree_menu->Append(TreeTest_DeleteChildren, wxT("Delete &children")); + tree_menu->Append(TreeTest_DeleteAll, wxT("Delete &all items")); tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_Count, "Count children of current item"); - tree_menu->Append(TreeTest_CountRec, "Recursively count children of current item"); + tree_menu->Append(TreeTest_Count, wxT("Count children of current item")); + tree_menu->Append(TreeTest_CountRec, wxT("Recursively count children of current item")); tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_Sort, "Sort children of current item"); - tree_menu->Append(TreeTest_SortRev, "Sort in reversed order"); + tree_menu->Append(TreeTest_Sort, wxT("Sort children of current item")); + tree_menu->Append(TreeTest_SortRev, wxT("Sort in reversed order")); tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_EnsureVisible, "Make the last item &visible"); + tree_menu->Append(TreeTest_EnsureVisible, wxT("Make the last item &visible")); tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_IncIndent, "Add 5 points to indentation\tAlt-I"); - tree_menu->Append(TreeTest_DecIndent, "Reduce indentation by 5 points\tAlt-R"); + tree_menu->Append(TreeTest_IncIndent, wxT("Add 5 points to indentation\tAlt-I")); + tree_menu->Append(TreeTest_DecIndent, wxT("Reduce indentation by 5 points\tAlt-R")); tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_IncSpacing, "Add 5 points to spacing\tCtrl-I"); - tree_menu->Append(TreeTest_DecSpacing, "Reduce spacing by 5 points\tCtrl-R"); + tree_menu->Append(TreeTest_IncSpacing, wxT("Add 5 points to spacing\tCtrl-I")); + tree_menu->Append(TreeTest_DecSpacing, wxT("Reduce spacing by 5 points\tCtrl-R")); - item_menu->Append(TreeTest_Dump, "&Dump item children"); - item_menu->Append(TreeTest_Rename, "&Rename item..."); + item_menu->Append(TreeTest_Dump, wxT("&Dump item children")); + item_menu->Append(TreeTest_Rename, wxT("&Rename item...")); item_menu->AppendSeparator(); - item_menu->Append(TreeTest_SetBold, "Make item &bold"); - item_menu->Append(TreeTest_ClearBold, "Make item ¬ bold"); + item_menu->Append(TreeTest_SetBold, wxT("Make item &bold")); + item_menu->Append(TreeTest_ClearBold, wxT("Make item ¬ bold")); item_menu->AppendSeparator(); - item_menu->Append(TreeTest_ToggleIcon, "Toggle the item's &icon"); + item_menu->Append(TreeTest_ToggleIcon, wxT("Toggle the item's &icon")); #ifndef NO_MULTIPLE_SELECTION item_menu->AppendSeparator(); - item_menu->Append(TreeTest_DumpSelected, "Dump selected items\tAlt-D"); - item_menu->Append(TreeTest_Select, "Select current item\tAlt-S"); - item_menu->Append(TreeTest_Unselect, "Unselect everything\tAlt-U"); + item_menu->Append(TreeTest_DumpSelected, wxT("Dump selected items\tAlt-D")); + item_menu->Append(TreeTest_Select, wxT("Select current item\tAlt-S")); + item_menu->Append(TreeTest_Unselect, wxT("Unselect everything\tAlt-U")); #endif // NO_MULTIPLE_SELECTION wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(style_menu, "&Style"); - menu_bar->Append(tree_menu, "&Tree"); - menu_bar->Append(item_menu, "&Item"); + menu_bar->Append(file_menu, wxT("&File")); + menu_bar->Append(style_menu, wxT("&Style")); + menu_bar->Append(tree_menu, wxT("&Tree")); + menu_bar->Append(item_menu, wxT("&Item")); SetMenuBar(menu_bar); #endif // wxUSE_MENUS // create the controls - m_textCtrl = new wxTextCtrl(this, -1, "", + m_textCtrl = new wxTextCtrl(this, -1, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER); @@ -259,7 +259,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) // create a status bar with 3 panes CreateStatusBar(3); - SetStatusText("", 0); + SetStatusText(wxT(""), 0); #ifdef __WXMOTIF__ // For some reason, we get a memcpy crash in wxLogStream::DoLogStream @@ -348,9 +348,9 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("Tree test sample\n" - "(c) Julian Smart 1997, Vadim Zeitlin 1998", - "About tree test", + wxMessageBox(wxT("Tree test sample\n") + wxT("(c) Julian Smart 1997, Vadim Zeitlin 1998"), + wxT("About tree test"), wxOK | wxICON_INFORMATION, this); } @@ -363,7 +363,7 @@ void MyFrame::OnRename(wxCommandEvent& WXUNUSED(event)) // old code - now we edit in place #if 0 static wxString s_text; - s_text = wxGetTextFromUser("New name: ", "Tree sample question", + s_text = wxGetTextFromUser(wxT("New name: "), wxT("Tree sample question"), s_text, this); if ( !s_text.IsEmpty() ) { @@ -487,9 +487,9 @@ void MyFrame::OnRecreate(wxCommandEvent& event) void MyFrame::OnSetImageSize(wxCommandEvent& event) { - int size = wxGetNumberFromUser("Enter the size for the images to use", - "Size: ", - "TreeCtrl sample", + int size = wxGetNumberFromUser(wxT("Enter the size for the images to use"), + wxT("Size: "), + wxT("TreeCtrl sample"), m_treeCtrl->ImageSize()); if ( size == -1 ) return; @@ -541,7 +541,7 @@ void MyFrame::OnEnsureVisible(wxCommandEvent& event) void MyFrame::OnInsertItem(wxCommandEvent& WXUNUSED(event)) { int image = wxGetApp().ShowImages() ? MyTreeCtrl::TreeCtrlIcon_File : -1; - m_treeCtrl->InsertItem(m_treeCtrl->GetRootItem(), image, "2nd item"); + m_treeCtrl->InsertItem(m_treeCtrl->GetRootItem(), image, wxT("2nd item")); } void MyFrame::OnAddItem(wxCommandEvent& WXUNUSED(event)) @@ -778,9 +778,9 @@ void MyTreeCtrl::AddTestItemsToTree(size_t numChildren, size_t depth) { int image = wxGetApp().ShowImages() ? MyTreeCtrl::TreeCtrlIcon_Folder : -1; - wxTreeItemId rootId = AddRoot("Root", + wxTreeItemId rootId = AddRoot(wxT("Root"), image, image, - new MyTreeItemData("Root item")); + new MyTreeItemData(wxT("Root item"))); if ( image != -1 ) { SetItemImage(rootId, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded); @@ -858,132 +858,132 @@ void LogKeyEvent(const wxChar *name, const wxKeyEvent& event) { switch ( keycode ) { - case WXK_BACK: key = "BACK"; break; - case WXK_TAB: key = "TAB"; break; - case WXK_RETURN: key = "RETURN"; break; - case WXK_ESCAPE: key = "ESCAPE"; break; - case WXK_SPACE: key = "SPACE"; break; - case WXK_DELETE: key = "DELETE"; break; - case WXK_START: key = "START"; break; - case WXK_LBUTTON: key = "LBUTTON"; break; - case WXK_RBUTTON: key = "RBUTTON"; break; - case WXK_CANCEL: key = "CANCEL"; break; - case WXK_MBUTTON: key = "MBUTTON"; break; - case WXK_CLEAR: key = "CLEAR"; break; - case WXK_SHIFT: key = "SHIFT"; break; - case WXK_ALT: key = "ALT"; break; - case WXK_CONTROL: key = "CONTROL"; break; - case WXK_MENU: key = "MENU"; break; - case WXK_PAUSE: key = "PAUSE"; break; - case WXK_CAPITAL: key = "CAPITAL"; break; - case WXK_PRIOR: key = "PRIOR"; break; - case WXK_NEXT: key = "NEXT"; break; - case WXK_END: key = "END"; break; - case WXK_HOME: key = "HOME"; break; - case WXK_LEFT: key = "LEFT"; break; - case WXK_UP: key = "UP"; break; - case WXK_RIGHT: key = "RIGHT"; break; - case WXK_DOWN: key = "DOWN"; break; - case WXK_SELECT: key = "SELECT"; break; - case WXK_PRINT: key = "PRINT"; break; - case WXK_EXECUTE: key = "EXECUTE"; break; - case WXK_SNAPSHOT: key = "SNAPSHOT"; break; - case WXK_INSERT: key = "INSERT"; break; - case WXK_HELP: key = "HELP"; break; - case WXK_NUMPAD0: key = "NUMPAD0"; break; - case WXK_NUMPAD1: key = "NUMPAD1"; break; - case WXK_NUMPAD2: key = "NUMPAD2"; break; - case WXK_NUMPAD3: key = "NUMPAD3"; break; - case WXK_NUMPAD4: key = "NUMPAD4"; break; - case WXK_NUMPAD5: key = "NUMPAD5"; break; - case WXK_NUMPAD6: key = "NUMPAD6"; break; - case WXK_NUMPAD7: key = "NUMPAD7"; break; - case WXK_NUMPAD8: key = "NUMPAD8"; break; - case WXK_NUMPAD9: key = "NUMPAD9"; break; - case WXK_MULTIPLY: key = "MULTIPLY"; break; - case WXK_ADD: key = "ADD"; break; - case WXK_SEPARATOR: key = "SEPARATOR"; break; - case WXK_SUBTRACT: key = "SUBTRACT"; break; - case WXK_DECIMAL: key = "DECIMAL"; break; - case WXK_DIVIDE: key = "DIVIDE"; break; - case WXK_F1: key = "F1"; break; - case WXK_F2: key = "F2"; break; - case WXK_F3: key = "F3"; break; - case WXK_F4: key = "F4"; break; - case WXK_F5: key = "F5"; break; - case WXK_F6: key = "F6"; break; - case WXK_F7: key = "F7"; break; - case WXK_F8: key = "F8"; break; - case WXK_F9: key = "F9"; break; - case WXK_F10: key = "F10"; break; - case WXK_F11: key = "F11"; break; - case WXK_F12: key = "F12"; break; - case WXK_F13: key = "F13"; break; - case WXK_F14: key = "F14"; break; - case WXK_F15: key = "F15"; break; - case WXK_F16: key = "F16"; break; - case WXK_F17: key = "F17"; break; - case WXK_F18: key = "F18"; break; - case WXK_F19: key = "F19"; break; - case WXK_F20: key = "F20"; break; - case WXK_F21: key = "F21"; break; - case WXK_F22: key = "F22"; break; - case WXK_F23: key = "F23"; break; - case WXK_F24: key = "F24"; break; - case WXK_NUMLOCK: key = "NUMLOCK"; break; - case WXK_SCROLL: key = "SCROLL"; break; - case WXK_PAGEUP: key = "PAGEUP"; break; - case WXK_PAGEDOWN: key = "PAGEDOWN"; break; - case WXK_NUMPAD_SPACE: key = "NUMPAD_SPACE"; break; - case WXK_NUMPAD_TAB: key = "NUMPAD_TAB"; break; - case WXK_NUMPAD_ENTER: key = "NUMPAD_ENTER"; break; - case WXK_NUMPAD_F1: key = "NUMPAD_F1"; break; - case WXK_NUMPAD_F2: key = "NUMPAD_F2"; break; - case WXK_NUMPAD_F3: key = "NUMPAD_F3"; break; - case WXK_NUMPAD_F4: key = "NUMPAD_F4"; break; - case WXK_NUMPAD_HOME: key = "NUMPAD_HOME"; break; - case WXK_NUMPAD_LEFT: key = "NUMPAD_LEFT"; break; - case WXK_NUMPAD_UP: key = "NUMPAD_UP"; break; - case WXK_NUMPAD_RIGHT: key = "NUMPAD_RIGHT"; break; - case WXK_NUMPAD_DOWN: key = "NUMPAD_DOWN"; break; - case WXK_NUMPAD_PRIOR: key = "NUMPAD_PRIOR"; break; - case WXK_NUMPAD_PAGEUP: key = "NUMPAD_PAGEUP"; break; - case WXK_NUMPAD_PAGEDOWN: key = "NUMPAD_PAGEDOWN"; break; - case WXK_NUMPAD_END: key = "NUMPAD_END"; break; - case WXK_NUMPAD_BEGIN: key = "NUMPAD_BEGIN"; break; - case WXK_NUMPAD_INSERT: key = "NUMPAD_INSERT"; break; - case WXK_NUMPAD_DELETE: key = "NUMPAD_DELETE"; break; - case WXK_NUMPAD_EQUAL: key = "NUMPAD_EQUAL"; break; - case WXK_NUMPAD_MULTIPLY: key = "NUMPAD_MULTIPLY"; break; - case WXK_NUMPAD_ADD: key = "NUMPAD_ADD"; break; - case WXK_NUMPAD_SEPARATOR: key = "NUMPAD_SEPARATOR"; break; - case WXK_NUMPAD_SUBTRACT: key = "NUMPAD_SUBTRACT"; break; - case WXK_NUMPAD_DECIMAL: key = "NUMPAD_DECIMAL"; break; + case WXK_BACK: key = wxT("BACK"); break; + case WXK_TAB: key = wxT("TAB"); break; + case WXK_RETURN: key = wxT("RETURN"); break; + case WXK_ESCAPE: key = wxT("ESCAPE"); break; + case WXK_SPACE: key = wxT("SPACE"); break; + case WXK_DELETE: key = wxT("DELETE"); break; + case WXK_START: key = wxT("START"); break; + case WXK_LBUTTON: key = wxT("LBUTTON"); break; + case WXK_RBUTTON: key = wxT("RBUTTON"); break; + case WXK_CANCEL: key = wxT("CANCEL"); break; + case WXK_MBUTTON: key = wxT("MBUTTON"); break; + case WXK_CLEAR: key = wxT("CLEAR"); break; + case WXK_SHIFT: key = wxT("SHIFT"); break; + case WXK_ALT: key = wxT("ALT"); break; + case WXK_CONTROL: key = wxT("CONTROL"); break; + case WXK_MENU: key = wxT("MENU"); break; + case WXK_PAUSE: key = wxT("PAUSE"); break; + case WXK_CAPITAL: key = wxT("CAPITAL"); break; + case WXK_PRIOR: key = wxT("PRIOR"); break; + case WXK_NEXT: key = wxT("NEXT"); break; + case WXK_END: key = wxT("END"); break; + case WXK_HOME: key = wxT("HOME"); break; + case WXK_LEFT: key = wxT("LEFT"); break; + case WXK_UP: key = wxT("UP"); break; + case WXK_RIGHT: key = wxT("RIGHT"); break; + case WXK_DOWN: key = wxT("DOWN"); break; + case WXK_SELECT: key = wxT("SELECT"); break; + case WXK_PRINT: key = wxT("PRINT"); break; + case WXK_EXECUTE: key = wxT("EXECUTE"); break; + case WXK_SNAPSHOT: key = wxT("SNAPSHOT"); break; + case WXK_INSERT: key = wxT("INSERT"); break; + case WXK_HELP: key = wxT("HELP"); break; + case WXK_NUMPAD0: key = wxT("NUMPAD0"); break; + case WXK_NUMPAD1: key = wxT("NUMPAD1"); break; + case WXK_NUMPAD2: key = wxT("NUMPAD2"); break; + case WXK_NUMPAD3: key = wxT("NUMPAD3"); break; + case WXK_NUMPAD4: key = wxT("NUMPAD4"); break; + case WXK_NUMPAD5: key = wxT("NUMPAD5"); break; + case WXK_NUMPAD6: key = wxT("NUMPAD6"); break; + case WXK_NUMPAD7: key = wxT("NUMPAD7"); break; + case WXK_NUMPAD8: key = wxT("NUMPAD8"); break; + case WXK_NUMPAD9: key = wxT("NUMPAD9"); break; + case WXK_MULTIPLY: key = wxT("MULTIPLY"); break; + case WXK_ADD: key = wxT("ADD"); break; + case WXK_SEPARATOR: key = wxT("SEPARATOR"); break; + case WXK_SUBTRACT: key = wxT("SUBTRACT"); break; + case WXK_DECIMAL: key = wxT("DECIMAL"); break; + case WXK_DIVIDE: key = wxT("DIVIDE"); break; + case WXK_F1: key = wxT("F1"); break; + case WXK_F2: key = wxT("F2"); break; + case WXK_F3: key = wxT("F3"); break; + case WXK_F4: key = wxT("F4"); break; + case WXK_F5: key = wxT("F5"); break; + case WXK_F6: key = wxT("F6"); break; + case WXK_F7: key = wxT("F7"); break; + case WXK_F8: key = wxT("F8"); break; + case WXK_F9: key = wxT("F9"); break; + case WXK_F10: key = wxT("F10"); break; + case WXK_F11: key = wxT("F11"); break; + case WXK_F12: key = wxT("F12"); break; + case WXK_F13: key = wxT("F13"); break; + case WXK_F14: key = wxT("F14"); break; + case WXK_F15: key = wxT("F15"); break; + case WXK_F16: key = wxT("F16"); break; + case WXK_F17: key = wxT("F17"); break; + case WXK_F18: key = wxT("F18"); break; + case WXK_F19: key = wxT("F19"); break; + case WXK_F20: key = wxT("F20"); break; + case WXK_F21: key = wxT("F21"); break; + case WXK_F22: key = wxT("F22"); break; + case WXK_F23: key = wxT("F23"); break; + case WXK_F24: key = wxT("F24"); break; + case WXK_NUMLOCK: key = wxT("NUMLOCK"); break; + case WXK_SCROLL: key = wxT("SCROLL"); break; + case WXK_PAGEUP: key = wxT("PAGEUP"); break; + case WXK_PAGEDOWN: key = wxT("PAGEDOWN"); break; + case WXK_NUMPAD_SPACE: key = wxT("NUMPAD_SPACE"); break; + case WXK_NUMPAD_TAB: key = wxT("NUMPAD_TAB"); break; + case WXK_NUMPAD_ENTER: key = wxT("NUMPAD_ENTER"); break; + case WXK_NUMPAD_F1: key = wxT("NUMPAD_F1"); break; + case WXK_NUMPAD_F2: key = wxT("NUMPAD_F2"); break; + case WXK_NUMPAD_F3: key = wxT("NUMPAD_F3"); break; + case WXK_NUMPAD_F4: key = wxT("NUMPAD_F4"); break; + case WXK_NUMPAD_HOME: key = wxT("NUMPAD_HOME"); break; + case WXK_NUMPAD_LEFT: key = wxT("NUMPAD_LEFT"); break; + case WXK_NUMPAD_UP: key = wxT("NUMPAD_UP"); break; + case WXK_NUMPAD_RIGHT: key = wxT("NUMPAD_RIGHT"); break; + case WXK_NUMPAD_DOWN: key = wxT("NUMPAD_DOWN"); break; + case WXK_NUMPAD_PRIOR: key = wxT("NUMPAD_PRIOR"); break; + case WXK_NUMPAD_PAGEUP: key = wxT("NUMPAD_PAGEUP"); break; + case WXK_NUMPAD_PAGEDOWN: key = wxT("NUMPAD_PAGEDOWN"); break; + case WXK_NUMPAD_END: key = wxT("NUMPAD_END"); break; + case WXK_NUMPAD_BEGIN: key = wxT("NUMPAD_BEGIN"); break; + case WXK_NUMPAD_INSERT: key = wxT("NUMPAD_INSERT"); break; + case WXK_NUMPAD_DELETE: key = wxT("NUMPAD_DELETE"); break; + case WXK_NUMPAD_EQUAL: key = wxT("NUMPAD_EQUAL"); break; + case WXK_NUMPAD_MULTIPLY: key = wxT("NUMPAD_MULTIPLY"); break; + case WXK_NUMPAD_ADD: key = wxT("NUMPAD_ADD"); break; + case WXK_NUMPAD_SEPARATOR: key = wxT("NUMPAD_SEPARATOR"); break; + case WXK_NUMPAD_SUBTRACT: key = wxT("NUMPAD_SUBTRACT"); break; + case WXK_NUMPAD_DECIMAL: key = wxT("NUMPAD_DECIMAL"); break; default: { if ( wxIsprint((int)keycode) ) - key.Printf(_T("'%c'"), (char)keycode); + key.Printf(wxT("'%c'"), (char)keycode); else if ( keycode > 0 && keycode < 27 ) - key.Printf(_("Ctrl-%c"), _T('A') + keycode - 1); + key.Printf(_("Ctrl-%c"), wxT('A') + keycode - 1); else - key.Printf(_T("unknown (%ld)"), keycode); + key.Printf(wxT("unknown (%ld)"), keycode); } } } - wxLogMessage( _T("%s event: %s (flags = %c%c%c%c)"), + wxLogMessage( wxT("%s event: %s (flags = %c%c%c%c)"), name, key.c_str(), - event.ControlDown() ? _T('C') : _T('-'), - event.AltDown() ? _T('A') : _T('-'), - event.ShiftDown() ? _T('S') : _T('-'), - event.MetaDown() ? _T('M') : _T('-')); + event.ControlDown() ? wxT('C') : wxT('-'), + event.AltDown() ? wxT('A') : wxT('-'), + event.ShiftDown() ? wxT('S') : wxT('-'), + event.MetaDown() ? wxT('M') : wxT('-')); } void MyTreeCtrl::OnTreeKeyDown(wxTreeEvent& event) { - LogKeyEvent(_T("Tree key down "), event.GetKeyEvent()); + LogKeyEvent(wxT("Tree key down "), event.GetKeyEvent()); event.Skip(); } @@ -1016,7 +1016,7 @@ void MyTreeCtrl::OnEndDrag(wxTreeEvent& event) if ( itemDst.IsOk() && !ItemHasChildren(itemDst) ) { // copy to the parent then - itemDst = GetParent(itemDst); + itemDst = GetItemParent(itemDst); } if ( !itemDst.IsOk() ) @@ -1112,17 +1112,17 @@ void MyTreeCtrl::ShowMenu(wxTreeItemId id, const wxPoint& pt) wxString title; if ( id.IsOk() ) { - title << _T("Menu for ") << GetItemText(id); + title << wxT("Menu for ") << GetItemText(id); } else { - title = _T("Menu for no particular item"); + title = wxT("Menu for no particular item"); } #if wxUSE_MENUS wxMenu menu(title); - menu.Append(TreeTest_About, _T("&About...")); - menu.Append(TreeTest_Dump, _T("&Dump")); + menu.Append(TreeTest_About, wxT("&About...")); + menu.Append(TreeTest_Dump, wxT("&Dump")); PopupMenu(&menu, pt); #endif // wxUSE_MENUS diff --git a/samples/treectrl/treetest.dsp b/samples/treectrl/treetest.dsp index 7d2fdbca7c..58cc730384 100644 --- a/samples/treectrl/treetest.dsp +++ b/samples/treectrl/treetest.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "treetest - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "treetest - Win32 Release" diff --git a/samples/treectrl/treetest.h b/samples/treectrl/treetest.h index 653484a3ca..319fecd8e1 100644 --- a/samples/treectrl/treetest.h +++ b/samples/treectrl/treetest.h @@ -112,7 +112,7 @@ protected: bool IsTestItem(const wxTreeItemId& item) { // the test item is the first child folder - return GetParent(item) == GetRootItem() && !GetPrevSibling(item); + return GetItemParent(item) == GetRootItem() && !GetPrevSibling(item); } private: diff --git a/samples/treelay/makefile.wat b/samples/treelay/makefile.wat index 6862812f07..a00f19125a 100644 --- a/samples/treelay/makefile.wat +++ b/samples/treelay/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for treelay example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = treelay -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\treelay +# +PROGRAM = treelay +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/treelay/treelay.cpp b/samples/treelay/treelay.cpp index 41d2671a9c..9b1df20bcf 100644 --- a/samples/treelay/treelay.cpp +++ b/samples/treelay/treelay.cpp @@ -35,31 +35,31 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main frame window - MyFrame* frame = new MyFrame(NULL, "Tree Test", wxPoint(-1, -1), wxSize(400, 550)); + MyFrame* frame = new MyFrame(NULL, _T("Tree Test"), wxPoint(-1, -1), wxSize(400, 550)); // Give it a status line frame->CreateStatusBar(2); // Give it an icon #ifdef __WINDOWS__ - wxIcon icon("tree_icn"); + wxIcon icon(_T("tree_icn")); frame->SetIcon(icon); #endif // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(TEST_LEFT_RIGHT, "&Left to right", "Redraw left to right"); - file_menu->Append(TEST_TOP_BOTTOM, "&Top to bottom", "Redraw top to bottom"); + file_menu->Append(TEST_LEFT_RIGHT, _T("&Left to right"), _T("Redraw left to right")); + file_menu->Append(TEST_TOP_BOTTOM, _T("&Top to bottom"), _T("Redraw top to bottom")); file_menu->AppendSeparator(); - file_menu->Append(TEST_QUIT, "E&xit", "Quit program"); + file_menu->Append(TEST_QUIT, _T("E&xit"), _T("Quit program")); wxMenu *help_menu = new wxMenu; - help_menu->Append(TEST_ABOUT, "&About", "About Tree Test"); + help_menu->Append(TEST_ABOUT, _T("&About"), _T("About Tree Test")); wxMenuBar* menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(help_menu, _T("&Help")); // Associate the menu bar with the frame frame->SetMenuBar(menu_bar); @@ -79,7 +79,7 @@ bool MyApp::OnInit() frame->Show(TRUE); - frame->SetStatusText("Hello, tree!"); + frame->SetStatusText(_T("Hello, tree!")); // Return the main frame window return TRUE; @@ -100,34 +100,34 @@ void MyApp::TreeTest(wxTreeLayoutStored& tree, wxDC& dc) { tree.Initialize(200); - tree.AddChild("animal"); - tree.AddChild("mammal", "animal"); - tree.AddChild("insect", "animal"); - tree.AddChild("bird", "animal"); + tree.AddChild(_T("animal")); + tree.AddChild(_T("mammal"), _T("animal")); + tree.AddChild(_T("insect"), _T("animal")); + tree.AddChild(_T("bird"), _T("animal")); - tree.AddChild("man", "mammal"); - tree.AddChild("cat", "mammal"); - tree.AddChild("dog", "mammal"); - tree.AddChild("giraffe", "mammal"); - tree.AddChild("elephant", "mammal"); - tree.AddChild("donkey", "mammal"); - tree.AddChild("horse", "mammal"); + tree.AddChild(_T("man"), _T("mammal")); + tree.AddChild(_T("cat"), _T("mammal")); + tree.AddChild(_T("dog"), _T("mammal")); + tree.AddChild(_T("giraffe"), _T("mammal")); + tree.AddChild(_T("elephant"), _T("mammal")); + tree.AddChild(_T("donkey"), _T("mammal")); + tree.AddChild(_T("horse"), _T("mammal")); - tree.AddChild("fido", "dog"); - tree.AddChild("domestic cat", "cat"); - tree.AddChild("lion", "cat"); - tree.AddChild("tiger", "cat"); - tree.AddChild("felix", "domestic cat"); - tree.AddChild("socks", "domestic cat"); + tree.AddChild(_T("fido"), _T("dog")); + tree.AddChild(_T("domestic cat"), _T("cat")); + tree.AddChild(_T("lion"), _T("cat")); + tree.AddChild(_T("tiger"), _T("cat")); + tree.AddChild(_T("felix"), _T("domestic cat")); + tree.AddChild(_T("socks"), _T("domestic cat")); - tree.AddChild("beetle", "insect"); - tree.AddChild("earwig", "insect"); - tree.AddChild("eagle", "bird"); - tree.AddChild("bluetit", "bird"); - tree.AddChild("sparrow", "bird"); - tree.AddChild("blackbird", "bird"); - tree.AddChild("emu", "bird"); - tree.AddChild("crow", "bird"); + tree.AddChild(_T("beetle"), _T("insect")); + tree.AddChild(_T("earwig"), _T("insect")); + tree.AddChild(_T("eagle"), _T("bird")); + tree.AddChild(_T("bluetit"), _T("bird")); + tree.AddChild(_T("sparrow"), _T("bird")); + tree.AddChild(_T("blackbird"), _T("bird")); + tree.AddChild(_T("emu"), _T("bird")); + tree.AddChild(_T("crow"), _T("bird")); tree.DoLayout(dc); } @@ -179,7 +179,7 @@ void MyFrame::OnTopBottom(wxCommandEvent& event) void MyFrame::OnAbout(wxCommandEvent& event) { - (void)wxMessageBox("wxWindows tree library demo Vsn 2.0\nAuthor: Julian Smart (c) 1998", "About tree test"); + (void)wxMessageBox(_T("wxWindows tree library demo Vsn 2.0\nAuthor: Julian Smart (c) 1998"), _T("About tree test")); } void MyFrame::OnCloseWindow(wxCloseEvent& event) diff --git a/samples/treelay/treelay.dsp b/samples/treelay/treelay.dsp index 8051ab49ad..79742d3154 100644 --- a/samples/treelay/treelay.dsp +++ b/samples/treelay/treelay.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "treelay - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "treelay - Win32 Release" diff --git a/samples/typetest/makefile.wat b/samples/typetest/makefile.wat index 8efc4d6a0c..8153422b86 100644 --- a/samples/typetest/makefile.wat +++ b/samples/typetest/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for typetest example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = typetest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\typetest +# +PROGRAM = typetest +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/typetest/typetest.cpp b/samples/typetest/typetest.cpp index cc972aea5a..3022597ac0 100644 --- a/samples/typetest/typetest.cpp +++ b/samples/typetest/typetest.cpp @@ -80,7 +80,7 @@ END_EVENT_TABLE() bool MyApp::OnInit() { // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, "wxWindows Types Demo", + MyFrame *frame = new MyFrame((wxFrame *) NULL, _T("wxWindows Types Demo"), wxPoint(50, 50), wxSize(450, 340)); // Give it an icon @@ -89,36 +89,36 @@ bool MyApp::OnInit() // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(TYPES_ABOUT, "&About"); + file_menu->Append(TYPES_ABOUT, _T("&About")); file_menu->AppendSeparator(); - file_menu->Append(TYPES_QUIT, "E&xit\tAlt-X"); + file_menu->Append(TYPES_QUIT, _T("E&xit\tAlt-X")); wxMenu *test_menu = new wxMenu; #if wxUSE_TIMEDATE - test_menu->Append(TYPES_DATE, "&Date test"); - test_menu->Append(TYPES_TIME, "&Time test"); + test_menu->Append(TYPES_DATE, _T("&Date test")); + test_menu->Append(TYPES_TIME, _T("&Time test")); #endif // wxUSE_TIMEDATE - test_menu->Append(TYPES_VARIANT, "&Variant test"); - test_menu->Append(TYPES_BYTEORDER, "&Byteorder test"); + test_menu->Append(TYPES_VARIANT, _T("&Variant test")); + test_menu->Append(TYPES_BYTEORDER, _T("&Byteorder test")); #if wxUSE_UNICODE - test_menu->Append(TYPES_UNICODE, "&Unicode test"); + test_menu->Append(TYPES_UNICODE, _T("&Unicode test")); #endif // wxUSE_UNICODE - test_menu->Append(TYPES_STREAM, "&Stream test"); - test_menu->Append(TYPES_STREAM2, "&Stream seek test"); - test_menu->Append(TYPES_STREAM3, "&Stream error test"); - test_menu->Append(TYPES_STREAM4, "&Stream buffer test"); - test_menu->Append(TYPES_STREAM5, "&Stream peek test"); - test_menu->Append(TYPES_STREAM6, "&Stream ungetch test"); - test_menu->Append(TYPES_STREAM7, "&Stream ungetch test for a buffered stream"); + test_menu->Append(TYPES_STREAM, _T("&Stream test")); + test_menu->Append(TYPES_STREAM2, _T("&Stream seek test")); + test_menu->Append(TYPES_STREAM3, _T("&Stream error test")); + test_menu->Append(TYPES_STREAM4, _T("&Stream buffer test")); + test_menu->Append(TYPES_STREAM5, _T("&Stream peek test")); + test_menu->Append(TYPES_STREAM6, _T("&Stream ungetch test")); + test_menu->Append(TYPES_STREAM7, _T("&Stream ungetch test for a buffered stream")); test_menu->AppendSeparator(); - test_menu->Append(TYPES_MIME, "&MIME database test"); + test_menu->Append(TYPES_MIME, _T("&MIME database test")); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(test_menu, "&Tests"); + menu_bar->Append(file_menu, _T("&File")); + menu_bar->Append(test_menu, _T("&Tests")); frame->SetMenuBar(menu_bar); - m_textCtrl = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxDefaultSize, wxTE_MULTILINE); + m_textCtrl = new wxTextCtrl(frame, -1, _T(""), wxPoint(0, 0), wxDefaultSize, wxTE_MULTILINE); // Show the frame frame->Show(TRUE); @@ -135,10 +135,10 @@ void MyApp::DoStreamDemo(wxCommandEvent& WXUNUSED(event)) textCtrl.Clear(); textCtrl << _T("\nTest fstream vs. wxFileStream:\n\n"); - textCtrl.WriteText( "Writing to ofstream and wxFileOutputStream:\n" ); + textCtrl.WriteText( _T("Writing to ofstream and wxFileOutputStream:\n") ); wxSTD ofstream std_file_output( "test_std.dat" ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); wxBufferedOutputStream buf_output( file_output ); wxTextOutputStream text_output( buf_output ); @@ -146,34 +146,34 @@ void MyApp::DoStreamDemo(wxCommandEvent& WXUNUSED(event)) signed int si = 0xFFFFFFFF; tmp.Printf( _T("Signed int: %d\n"), si ); textCtrl.WriteText( tmp ); - text_output << si << "\n"; - std_file_output << si << "\n"; + text_output << si << _T("\n"); + std_file_output << si << _T("\n"); unsigned int ui = 0xFFFFFFFF; tmp.Printf( _T("Unsigned int: %u\n"), ui ); textCtrl.WriteText( tmp ); - text_output << ui << "\n"; - std_file_output << ui << "\n"; + text_output << ui << _T("\n"); + std_file_output << ui << _T("\n"); double d = 2.01234567890123456789; tmp.Printf( _T("Double: %f\n"), d ); textCtrl.WriteText( tmp ); - text_output << d << "\n"; - std_file_output << d << "\n"; + text_output << d << _T("\n"); + std_file_output << d << _T("\n"); float f = (float)0.00001; tmp.Printf( _T("Float: %f\n"), f ); textCtrl.WriteText( tmp ); - text_output << f << "\n"; - std_file_output << f << "\n"; + text_output << f << _T("\n"); + std_file_output << f << _T("\n"); wxString str( _T("Hello!") ); tmp.Printf( _T("String: %s\n"), str.c_str() ); textCtrl.WriteText( tmp ); - text_output << str << "\n"; - std_file_output << str.c_str() << "\n"; - - textCtrl.WriteText( "\nReading from ifstream:\n" ); + text_output << str << _T("\n"); + std_file_output << str.c_str() << _T("\n"); + + textCtrl.WriteText( _T("\nReading from ifstream:\n") ); wxSTD ifstream std_file_input( "test_std.dat" ); @@ -201,11 +201,11 @@ void MyApp::DoStreamDemo(wxCommandEvent& WXUNUSED(event)) textCtrl.WriteText( tmp ); #endif - textCtrl.WriteText( "\nReading from wxFileInputStream:\n" ); + textCtrl.WriteText( _T("\nReading from wxFileInputStream:\n") ); buf_output.Sync(); - wxFileInputStream file_input( wxString("test_wx.dat") ); + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); wxBufferedInputStream buf_input( file_input ); wxTextInputStream text_input( file_input ); @@ -231,9 +231,9 @@ void MyApp::DoStreamDemo(wxCommandEvent& WXUNUSED(event)) - textCtrl << "\nTest for wxDataStream:\n\n"; + textCtrl << _T("\nTest for wxDataStream:\n\n"); - textCtrl.WriteText( "Writing to wxDataOutputStream:\n" ); + textCtrl.WriteText( _T("Writing to wxDataOutputStream:\n") ); file_output.SeekO( 0 ); wxDataOutputStream data_output( buf_output ); @@ -253,14 +253,14 @@ void MyApp::DoStreamDemo(wxCommandEvent& WXUNUSED(event)) textCtrl.WriteText( tmp ); data_output.WriteDouble( d ); - str = "Hello!"; + str = _T("Hello!"); tmp.Printf( _T("String: %s\n"), str.c_str() ); textCtrl.WriteText( tmp ); data_output.WriteString( str ); buf_output.Sync(); - textCtrl.WriteText( "\nReading from wxDataInputStream:\n" ); + textCtrl.WriteText( _T("\nReading from wxDataInputStream:\n") ); file_input.SeekI( 0 ); wxDataInputStream data_input( buf_input ); @@ -291,26 +291,26 @@ void MyApp::DoStreamDemo2(wxCommandEvent& WXUNUSED(event)) char ch,ch2; - textCtrl.WriteText( "Writing number 0 to 9 to buffered wxFileOutputStream:\n\n" ); + textCtrl.WriteText( _T("Writing number 0 to 9 to buffered wxFileOutputStream:\n\n") ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); wxBufferedOutputStream buf_output( file_output ); for (ch = 0; ch < 10; ch++) buf_output.Write( &ch, 1 ); buf_output.Sync(); - - wxFileInputStream file_input( wxString("test_wx.dat") ); + + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); for (ch2 = 0; ch2 < 10; ch2++) { file_input.Read( &ch, 1 ); - textCtrl.WriteText( (wxChar)(ch + '0') ); + textCtrl.WriteText( (wxChar)(ch + _T('0')) ); } - textCtrl.WriteText( "\n\n\n" ); - - textCtrl.WriteText( "Writing number 0 to 9 to buffered wxFileOutputStream, then\n" ); - textCtrl.WriteText( "seeking back to #3 and writing 0:\n\n" ); + textCtrl.WriteText( _T("\n\n\n") ); - wxFileOutputStream file_output2( wxString("test_wx2.dat") ); + textCtrl.WriteText( _T("Writing number 0 to 9 to buffered wxFileOutputStream, then\n") ); + textCtrl.WriteText( _T("seeking back to #3 and writing 0:\n\n") ); + + wxFileOutputStream file_output2( wxString(_T("test_wx2.dat")) ); wxBufferedOutputStream buf_output2( file_output2 ); for (ch = 0; ch < 10; ch++) buf_output2.Write( &ch, 1 ); @@ -318,40 +318,40 @@ void MyApp::DoStreamDemo2(wxCommandEvent& WXUNUSED(event)) ch = 0; buf_output2.Write( &ch, 1 ); buf_output2.Sync(); - - wxFileInputStream file_input2( wxString("test_wx2.dat") ); + + wxFileInputStream file_input2( wxString(_T("test_wx2.dat")) ); for (ch2 = 0; ch2 < 10; ch2++) { file_input2.Read( &ch, 1 ); - textCtrl.WriteText( (wxChar)(ch + '0') ); + textCtrl.WriteText( (wxChar)(ch + _T('0')) ); } - textCtrl.WriteText( "\n\n\n" ); - + textCtrl.WriteText( _T("\n\n\n") ); + // now append 2000 bytes to file (bigger than buffer) buf_output2.SeekO( 0, wxFromEnd ); ch = 1; for (int i = 0; i < 2000; i++) buf_output2.Write( &ch, 1 ); buf_output2.Sync(); - - textCtrl.WriteText( "Reading number 0 to 9 from buffered wxFileInputStream, then\n" ); - textCtrl.WriteText( "seeking back to #3 and reading the 0:\n\n" ); - wxFileInputStream file_input3( wxString("test_wx2.dat") ); + textCtrl.WriteText( _T("Reading number 0 to 9 from buffered wxFileInputStream, then\n") ); + textCtrl.WriteText( _T("seeking back to #3 and reading the 0:\n\n") ); + + wxFileInputStream file_input3( wxString(_T("test_wx2.dat")) ); wxBufferedInputStream buf_input3( file_input3 ); for (ch2 = 0; ch2 < 10; ch2++) { buf_input3.Read( &ch, 1 ); - textCtrl.WriteText( (wxChar)(ch + '0') ); + textCtrl.WriteText( (wxChar)(ch + _T('0')) ); } for (int j = 0; j < 2000; j++) buf_input3.Read( &ch, 1 ); - textCtrl.WriteText( "\n" ); + textCtrl.WriteText( _T("\n") ); buf_input3.SeekI( 3 ); buf_input3.Read( &ch, 1 ); - textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "\n\n\n" ); - + textCtrl.WriteText( (wxChar)(ch + _T('0')) ); + textCtrl.WriteText( _T("\n\n\n") ); + } void MyApp::DoStreamDemo3(wxCommandEvent& WXUNUSED(event)) @@ -359,159 +359,159 @@ void MyApp::DoStreamDemo3(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl << "\nTesting wxFileInputStream's and wxFFileInputStream's error handling:\n\n"; + textCtrl << _T("\nTesting wxFileInputStream's and wxFFileInputStream's error handling:\n\n"); char ch,ch2; - textCtrl.WriteText( "Writing number 0 to 9 to wxFileOutputStream:\n\n" ); + textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream:\n\n") ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); for (ch = 0; ch < 10; ch++) file_output.Write( &ch, 1 ); // Testing wxFileInputStream - - textCtrl.WriteText( "Reading 0 to 10 to wxFileInputStream:\n\n" ); - wxFileInputStream file_input( wxString("test_wx.dat") ); + textCtrl.WriteText( _T("Reading 0 to 10 to wxFileInputStream:\n\n") ); + + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); for (ch2 = 0; ch2 < 11; ch2++) { file_input.Read( &ch, 1 ); - textCtrl.WriteText( "Value read: " ); + textCtrl.WriteText( _T("Value read: ") ); textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "; stream.LastError() returns: " ); - switch (file_input.LastError()) + textCtrl.WriteText( _T("; stream.GetLastError() returns: ") ); + switch (file_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } } - textCtrl.WriteText( "\n" ); - - textCtrl.WriteText( "Seeking to 0; stream.LastError() returns: " ); + textCtrl.WriteText( _T("\n") ); + + textCtrl.WriteText( _T("Seeking to 0; stream.GetLastError() returns: ") ); file_input.SeekI( 0 ); - switch (file_input.LastError()) + switch (file_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } - textCtrl.WriteText( "\n" ); - + textCtrl.WriteText( _T("\n") ); + file_input.Read( &ch, 1 ); - textCtrl.WriteText( "Value read: " ); - textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "; stream.LastError() returns: " ); - switch (file_input.LastError()) + textCtrl.WriteText( _T("Value read: ") ); + textCtrl.WriteText( (wxChar)(ch + _T('0')) ); + textCtrl.WriteText( _T("; stream.GetLastError() returns: ") ); + switch (file_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } - textCtrl.WriteText( "\n\n" ); + textCtrl.WriteText( _T("\n\n") ); + - // Testing wxFFileInputStream - - textCtrl.WriteText( "Reading 0 to 10 to wxFFileInputStream:\n\n" ); - wxFFileInputStream ffile_input( wxString("test_wx.dat") ); + textCtrl.WriteText( _T("Reading 0 to 10 to wxFFileInputStream:\n\n") ); + + wxFFileInputStream ffile_input( wxString(_T("test_wx.dat")) ); for (ch2 = 0; ch2 < 11; ch2++) { ffile_input.Read( &ch, 1 ); - textCtrl.WriteText( "Value read: " ); + textCtrl.WriteText( _T("Value read: ") ); textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "; stream.LastError() returns: " ); - switch (ffile_input.LastError()) + textCtrl.WriteText( _T("; stream.GetLastError() returns: ") ); + switch (ffile_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } } - textCtrl.WriteText( "\n" ); - - textCtrl.WriteText( "Seeking to 0; stream.LastError() returns: " ); + textCtrl.WriteText( _T("\n") ); + + textCtrl.WriteText( _T("Seeking to 0; stream.GetLastError() returns: ") ); ffile_input.SeekI( 0 ); - switch (ffile_input.LastError()) + switch (ffile_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } - textCtrl.WriteText( "\n" ); - + textCtrl.WriteText( _T("\n") ); + ffile_input.Read( &ch, 1 ); - textCtrl.WriteText( "Value read: " ); + textCtrl.WriteText( _T("Value read: ") ); textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "; stream.LastError() returns: " ); - switch (ffile_input.LastError()) + textCtrl.WriteText( _T("; stream.GetLastError() returns: ") ); + switch (ffile_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } - textCtrl.WriteText( "\n\n" ); + textCtrl.WriteText( _T("\n\n") ); // Testing wxFFileInputStream - - textCtrl.WriteText( "Reading 0 to 10 to buffered wxFFileInputStream:\n\n" ); - wxFFileInputStream ffile_input2( wxString("test_wx.dat") ); + textCtrl.WriteText( _T("Reading 0 to 10 to buffered wxFFileInputStream:\n\n") ); + + wxFFileInputStream ffile_input2( wxString(_T("test_wx.dat")) ); wxBufferedInputStream buf_input( ffile_input2 ); for (ch2 = 0; ch2 < 11; ch2++) { buf_input.Read( &ch, 1 ); - textCtrl.WriteText( "Value read: " ); + textCtrl.WriteText( _T("Value read: ") ); textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "; stream.LastError() returns: " ); - switch (buf_input.LastError()) + textCtrl.WriteText( _T("; stream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } } - textCtrl.WriteText( "\n" ); - - textCtrl.WriteText( "Seeking to 0; stream.LastError() returns: " ); + textCtrl.WriteText( _T("\n") ); + + textCtrl.WriteText( _T("Seeking to 0; stream.GetLastError() returns: ") ); buf_input.SeekI( 0 ); - switch (buf_input.LastError()) + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } - textCtrl.WriteText( "\n" ); - + textCtrl.WriteText( _T("\n") ); + buf_input.Read( &ch, 1 ); - textCtrl.WriteText( "Value read: " ); + textCtrl.WriteText( _T("Value read: ") ); textCtrl.WriteText( (wxChar)(ch + '0') ); - textCtrl.WriteText( "; stream.LastError() returns: " ); - switch (buf_input.LastError()) + textCtrl.WriteText( _T("; stream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } } @@ -520,138 +520,138 @@ void MyApp::DoStreamDemo4(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); wxString msg; - + textCtrl.Clear(); - textCtrl << "\nTesting wxStreamBuffer:\n\n"; + textCtrl << _T("\nTesting wxStreamBuffer:\n\n"); // bigger than buffer - textCtrl.WriteText( "Writing 2000x 1 to wxFileOutputStream.\n\n" ); + textCtrl.WriteText( _T("Writing 2000x 1 to wxFileOutputStream.\n\n") ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); for (int i = 0; i < 2000; i++) { char ch = 1; file_output.Write( &ch, 1 ); } - textCtrl.WriteText( "Opening with a buffered wxFileInputStream:\n\n" ); + textCtrl.WriteText( _T("Opening with a buffered wxFileInputStream:\n\n") ); - wxFileInputStream file_input( wxString("test_wx.dat") ); + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); wxBufferedInputStream buf_input( file_input ); - - textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " ); - switch (buf_input.LastError()) + + textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() ); textCtrl.WriteText( msg ); msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() ); textCtrl.WriteText( msg ); - textCtrl.WriteText( "\n\n" ); - + textCtrl.WriteText( _T("\n\n") ); - textCtrl.WriteText( "Seeking to position 300:\n\n" ); + + textCtrl.WriteText( _T("Seeking to position 300:\n\n") ); buf_input.SeekI( 300 ); - - textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " ); - switch (buf_input.LastError()) + + textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() ); textCtrl.WriteText( msg ); msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() ); textCtrl.WriteText( msg ); - textCtrl.WriteText( "\n\n" ); - + textCtrl.WriteText( _T("\n\n") ); + char buf[2000]; - textCtrl.WriteText( "Reading 500 bytes:\n\n" ); + textCtrl.WriteText( _T("Reading 500 bytes:\n\n") ); buf_input.Read( buf, 500 ); - - textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " ); - switch (buf_input.LastError()) + + textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() ); textCtrl.WriteText( msg ); msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() ); textCtrl.WriteText( msg ); - textCtrl.WriteText( "\n\n" ); - - textCtrl.WriteText( "Reading another 500 bytes:\n\n" ); + textCtrl.WriteText( _T("\n\n") ); + + textCtrl.WriteText( _T("Reading another 500 bytes:\n\n") ); buf_input.Read( buf, 500 ); - - textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " ); - switch (buf_input.LastError()) + + textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() ); textCtrl.WriteText( msg ); msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() ); textCtrl.WriteText( msg ); - textCtrl.WriteText( "\n\n" ); + textCtrl.WriteText( _T("\n\n") ); - textCtrl.WriteText( "Reading another 500 bytes:\n\n" ); + textCtrl.WriteText( _T("Reading another 500 bytes:\n\n") ); buf_input.Read( buf, 500 ); - - textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " ); - switch (buf_input.LastError()) + + textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() ); textCtrl.WriteText( msg ); msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() ); textCtrl.WriteText( msg ); - textCtrl.WriteText( "\n\n" ); + textCtrl.WriteText( _T("\n\n") ); - textCtrl.WriteText( "Reading another 500 bytes:\n\n" ); + textCtrl.WriteText( _T("Reading another 500 bytes:\n\n") ); buf_input.Read( buf, 500 ); - - textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " ); - switch (buf_input.LastError()) + + textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") ); + switch (buf_input.GetLastError()) { - case wxSTREAM_NOERROR: textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break; - case wxSTREAM_EOF: textCtrl.WriteText( "wxSTREAM_EOF\n" ); break; - case wxSTREAM_READ_ERROR: textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break; - case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break; - default: textCtrl.WriteText( "Huh?\n" ); break; + case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break; + case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break; + case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break; + case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break; + default: textCtrl.WriteText( _T("Huh?\n") ); break; } msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() ); textCtrl.WriteText( msg ); msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() ); textCtrl.WriteText( msg ); - textCtrl.WriteText( "\n\n" ); + textCtrl.WriteText( _T("\n\n") ); } void MyApp::DoStreamDemo5(wxCommandEvent& WXUNUSED(event)) @@ -659,71 +659,71 @@ void MyApp::DoStreamDemo5(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl << "\nTesting wxFileInputStream's Peek():\n\n"; + textCtrl << _T("\nTesting wxFileInputStream's Peek():\n\n"); char ch; wxString str; - textCtrl.WriteText( "Writing number 0 to 9 to wxFileOutputStream:\n\n" ); + textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream:\n\n") ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); for (ch = 0; ch < 10; ch++) file_output.Write( &ch, 1 ); - + file_output.Sync(); - - wxFileInputStream file_input( wxString("test_wx.dat") ); - + + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); + ch = file_input.Peek(); str.Printf( wxT("First char peeked: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = file_input.GetC(); str.Printf( wxT("First char read: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = file_input.Peek(); str.Printf( wxT("Second char peeked: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = file_input.GetC(); str.Printf( wxT("Second char read: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = file_input.Peek(); str.Printf( wxT("Third char peeked: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = file_input.GetC(); str.Printf( wxT("Third char read: %d\n"), (int) ch ); textCtrl.WriteText( str ); - - - textCtrl << "\n\n\nTesting wxMemoryInputStream's Peek():\n\n"; - + + + textCtrl << _T("\n\n\nTesting wxMemoryInputStream's Peek():\n\n"); + char buf[] = { 0,1,2,3,4,5,6,7,8,9,10 }; wxMemoryInputStream input( buf, 10 ); - + ch = input.Peek(); str.Printf( wxT("First char peeked: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = input.GetC(); str.Printf( wxT("First char read: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = input.Peek(); str.Printf( wxT("Second char peeked: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = input.GetC(); str.Printf( wxT("Second char read: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = input.Peek(); str.Printf( wxT("Third char peeked: %d\n"), (int) ch ); textCtrl.WriteText( str ); - + ch = input.GetC(); str.Printf( wxT("Third char read: %d\n"), (int) ch ); textCtrl.WriteText( str ); @@ -734,73 +734,73 @@ void MyApp::DoStreamDemo6(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl.WriteText( "\nTesting Ungetch():\n\n" ); - + textCtrl.WriteText( _T("\nTesting Ungetch():\n\n") ); + char ch = 0; size_t pos = 0; wxString str; - textCtrl.WriteText( "Writing number 0 to 9 to wxFileOutputStream...\n\n" ); + textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream...\n\n") ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); for (ch = 0; ch < 10; ch++) file_output.Write( &ch, 1 ); - + file_output.Sync(); - - textCtrl.WriteText( "Reading char from wxFileInputStream:\n\n" ); - wxFileInputStream file_input( wxString("test_wx.dat") ); - - ch = file_input.GetC(); - pos = file_input.TellI(); - str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); - textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading another char from wxFileInputStream:\n\n" ); + textCtrl.WriteText( _T("Reading char from wxFileInputStream:\n\n") ); + + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); ch = file_input.GetC(); pos = file_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading yet another char from wxFileInputStream:\n\n" ); + + textCtrl.WriteText( _T("Reading another char from wxFileInputStream:\n\n") ); ch = file_input.GetC(); pos = file_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Now calling Ungetch( 5 ) from wxFileInputStream...\n\n" ); + + textCtrl.WriteText( _T("Reading yet another char from wxFileInputStream:\n\n") ); + + ch = file_input.GetC(); + pos = file_input.TellI(); + str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); + textCtrl.WriteText( str ); + + textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxFileInputStream...\n\n") ); file_input.Ungetch( 5 ); pos = file_input.TellI(); str.Printf( wxT("Now at position %d\n\n"), (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading char from wxFileInputStream:\n\n" ); + + textCtrl.WriteText( _T("Reading char from wxFileInputStream:\n\n") ); ch = file_input.GetC(); pos = file_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading another char from wxFileInputStream:\n\n" ); + + textCtrl.WriteText( _T("Reading another char from wxFileInputStream:\n\n") ); ch = file_input.GetC(); pos = file_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Now calling Ungetch( 5 ) from wxFileInputStream again...\n\n" ); + + textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxFileInputStream again...\n\n") ); file_input.Ungetch( 5 ); pos = file_input.TellI(); str.Printf( wxT("Now at position %d\n\n"), (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Seeking to pos 3 in wxFileInputStream. This invalidates the writeback buffer.\n\n" ); - + + textCtrl.WriteText( _T("Seeking to pos 3 in wxFileInputStream. This invalidates the writeback buffer.\n\n") ); + file_input.SeekI( 3 ); ch = file_input.GetC(); @@ -814,74 +814,74 @@ void MyApp::DoStreamDemo7(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl.WriteText( "\nTesting Ungetch() in buffered input stream:\n\n" ); - + textCtrl.WriteText( _T("\nTesting Ungetch() in buffered input stream:\n\n") ); + char ch = 0; size_t pos = 0; wxString str; - textCtrl.WriteText( "Writing number 0 to 9 to wxFileOutputStream...\n\n" ); + textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream...\n\n") ); - wxFileOutputStream file_output( wxString("test_wx.dat") ); + wxFileOutputStream file_output( wxString(_T("test_wx.dat")) ); for (ch = 0; ch < 10; ch++) file_output.Write( &ch, 1 ); - + file_output.Sync(); - - textCtrl.WriteText( "Reading char from wxBufferedInputStream via wxFileInputStream:\n\n" ); - wxFileInputStream file_input( wxString("test_wx.dat") ); + textCtrl.WriteText( _T("Reading char from wxBufferedInputStream via wxFileInputStream:\n\n") ); + + wxFileInputStream file_input( wxString(_T("test_wx.dat")) ); wxBufferedInputStream buf_input( file_input ); - - ch = buf_input.GetC(); - pos = buf_input.TellI(); - str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); - textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading another char from wxBufferedInputStream:\n\n" ); ch = buf_input.GetC(); pos = buf_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading yet another char from wxBufferedInputStream:\n\n" ); + + textCtrl.WriteText( _T("Reading another char from wxBufferedInputStream:\n\n") ); ch = buf_input.GetC(); pos = buf_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Now calling Ungetch( 5 ) from wxBufferedInputStream...\n\n" ); + + textCtrl.WriteText( _T("Reading yet another char from wxBufferedInputStream:\n\n") ); + + ch = buf_input.GetC(); + pos = buf_input.TellI(); + str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); + textCtrl.WriteText( str ); + + textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxBufferedInputStream...\n\n") ); buf_input.Ungetch( 5 ); pos = buf_input.TellI(); str.Printf( wxT("Now at position %d\n\n"), (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading char from wxBufferedInputStream:\n\n" ); + + textCtrl.WriteText( _T("Reading char from wxBufferedInputStream:\n\n") ); ch = buf_input.GetC(); pos = buf_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Reading another char from wxBufferedInputStream:\n\n" ); + + textCtrl.WriteText( _T("Reading another char from wxBufferedInputStream:\n\n") ); ch = buf_input.GetC(); pos = buf_input.TellI(); str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Now calling Ungetch( 5 ) from wxBufferedInputStream again...\n\n" ); + + textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxBufferedInputStream again...\n\n") ); buf_input.Ungetch( 5 ); pos = buf_input.TellI(); str.Printf( wxT("Now at position %d\n\n"), (int) pos ); textCtrl.WriteText( str ); - - textCtrl.WriteText( "Seeking to pos 3 in wxBufferedInputStream. This invalidates the writeback buffer.\n\n" ); - + + textCtrl.WriteText( _T("Seeking to pos 3 in wxBufferedInputStream. This invalidates the writeback buffer.\n\n") ); + buf_input.SeekI( 3 ); ch = buf_input.GetC(); @@ -896,7 +896,7 @@ void MyApp::DoUnicodeDemo(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl << "\nTest wchar_t to char (Unicode to ANSI/Multibyte) converions:"; + textCtrl << _T("\nTest wchar_t to char (Unicode to ANSI/Multibyte) converions:"); wxString str; str = _T("Robert Röbling\n"); @@ -918,10 +918,10 @@ void MyApp::DoUnicodeDemo(wxCommandEvent& WXUNUSED(event)) void MyApp::DoMIMEDemo(wxCommandEvent& WXUNUSED(event)) { - static wxString s_defaultExt = "xyz"; + static wxString s_defaultExt = _T("xyz"); - wxString ext = wxGetTextFromUser("Enter a file extension: ", - "MIME database test", + wxString ext = wxGetTextFromUser(_T("Enter a file extension: "), + _T("MIME database test"), s_defaultExt); if ( !!ext ) { @@ -934,16 +934,16 @@ void MyApp::DoMIMEDemo(wxCommandEvent& WXUNUSED(event)) static const wxFileTypeInfo fallbacks[] = { - wxFileTypeInfo("application/xyz", - "XyZ %s", - "XyZ -p %s", - "The one and only XYZ format file", - "xyz", "123", NULL), - wxFileTypeInfo("text/html", - "lynx %s", - "lynx -dump %s | lpr", - "HTML document (from fallback)", - "htm", "html", NULL), + wxFileTypeInfo(_T("application/xyz"), + _T("XyZ %s"), + _T("XyZ -p %s"), + _T("The one and only XYZ format file"), + _T("xyz"), _T("123"), NULL), + wxFileTypeInfo(_T("text/html"), + _T("lynx %s"), + _T("lynx -dump %s | lpr"), + _T("HTML document (from fallback)"), + _T("htm"), _T("html"), NULL), // must terminate the table with this! wxFileTypeInfo() @@ -957,7 +957,7 @@ void MyApp::DoMIMEDemo(wxCommandEvent& WXUNUSED(event)) wxFileType *filetype = m_mimeDatabase->GetFileTypeFromExtension(ext); if ( !filetype ) { - textCtrl << "Unknown extension '" << ext << "'\n"; + textCtrl << _T("Unknown extension '") << ext << _T("'\n"); } else { @@ -965,17 +965,17 @@ void MyApp::DoMIMEDemo(wxCommandEvent& WXUNUSED(event)) filetype->GetMimeType(&type); filetype->GetDescription(&desc); - wxString filename = "filename"; - filename << "." << ext; + wxString filename = _T("filename"); + filename << _T(".") << ext; wxFileType::MessageParameters params(filename, type); filetype->GetOpenCommand(&open, params); - textCtrl << "MIME information about extension '" << ext << "'\n" - << "\tMIME type: " << ( !type ? wxT("unknown") + textCtrl << _T("MIME information about extension '") << ext << _T("'\n") + << _T("\tMIME type: ") << ( !type ? wxT("unknown") : type.c_str() ) << '\n' - << "\tDescription: " << ( !desc ? wxT("") : desc.c_str() ) + << _T("\tDescription: ") << ( !desc ? wxT("") : desc.c_str() ) << '\n' - << "\tCommand to open: " << ( !open ? wxT("no") : open.c_str() ) + << _T("\tCommand to open: ") << ( !open ? wxT("no") : open.c_str() ) << '\n'; delete filetype; @@ -989,29 +989,29 @@ void MyApp::DoByteOrderDemo(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl << "\nTest byte order macros:\n\n"; + textCtrl << _T("\nTest byte order macros:\n\n"); if (wxBYTE_ORDER == wxLITTLE_ENDIAN) - textCtrl << "This is a little endian system.\n\n"; + textCtrl << _T("This is a little endian system.\n\n"); else - textCtrl << "This is a big endian system.\n\n"; + textCtrl << _T("This is a big endian system.\n\n"); wxString text; wxInt32 var = 0xF1F2F3F4; - text = ""; + text = _T(""); text.Printf( _T("Value of wxInt32 is now: %#x.\n\n"), var ); textCtrl.WriteText( text ); - text = ""; + text = _T(""); text.Printf( _T("Value of swapped wxInt32 is: %#x.\n\n"), wxINT32_SWAP_ALWAYS( var ) ); textCtrl.WriteText( text ); - text = ""; + text = _T(""); text.Printf( _T("Value of wxInt32 swapped on little endian is: %#x.\n\n"), wxINT32_SWAP_ON_LE( var ) ); textCtrl.WriteText( text ); - text = ""; + text = _T(""); text.Printf( _T("Value of wxInt32 swapped on big endian is: %#x.\n\n"), wxINT32_SWAP_ON_BE( var ) ); textCtrl.WriteText( text ); } @@ -1023,9 +1023,9 @@ void MyApp::DoTimeDemo(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl << "\nTest class wxTime:\n"; + textCtrl << _T("\nTest class wxTime:\n"); wxTime now; - textCtrl << "It is now " << (wxString) now << "\n"; + textCtrl << _T("It is now ") << (wxString) now << _T("\n"); } void MyApp::DoDateDemo(wxCommandEvent& WXUNUSED(event)) @@ -1033,140 +1033,140 @@ void MyApp::DoDateDemo(wxCommandEvent& WXUNUSED(event)) wxTextCtrl& textCtrl = * GetTextCtrl(); textCtrl.Clear(); - textCtrl << "\nTest class wxDate" << "\n"; + textCtrl << _T("\nTest class wxDate") << _T("\n"); // Various versions of the constructors // and various output wxDate x(10,20,1962); - textCtrl << x.FormatDate(wxFULL) << " (full)\n"; + textCtrl << x.FormatDate(wxFULL) << _T(" (full)\n"); // constuctor with a string, just printing the day of the week - wxDate y("8/8/1988"); + wxDate y(_T("8/8/1988")); - textCtrl << y.FormatDate(wxDAY) << " (just day)\n"; + textCtrl << y.FormatDate(wxDAY) << _T(" (just day)\n"); // constructor with a julian wxDate z( 2450000L ); - textCtrl << z.FormatDate(wxFULL) << " (full)\n"; + textCtrl << z.FormatDate(wxFULL) << _T(" (full)\n"); // using date addition and subtraction wxDate a = x + 10; - textCtrl << a.FormatDate(wxFULL) << " (full)\n"; + textCtrl << a.FormatDate(wxFULL) << _T(" (full)\n"); a = a - 25; - textCtrl << a.FormatDate(wxEUROPEAN) << " (European)\n"; + textCtrl << a.FormatDate(wxEUROPEAN) << _T(" (European)\n"); // Using subtraction of two date objects - wxDate a1 = wxString("7/13/1991"); + wxDate a1 = wxString(_T("7/13/1991")); wxDate a2 = a1 + 14; - textCtrl << (a1-a2) << "\n"; - textCtrl << (a2+=10) << "\n"; + textCtrl << (a1-a2) << _T("\n"); + textCtrl << (a2+=10) << _T("\n"); a1++; - textCtrl << "Tomorrow= " << a1.FormatDate(wxFULL) << "\n"; + textCtrl << _T("Tomorrow= ") << a1.FormatDate(wxFULL) << _T("\n"); - wxDate tmpDate1("08/01/1991"); - wxDate tmpDate2("07/14/1991"); - textCtrl << "a1 (7-14-91) < 8-01-91 ? ==> " << ((a1 < tmpDate1) ? "TRUE" : "FALSE") << "\n"; - textCtrl << "a1 (7-14-91) > 8-01-91 ? ==> " << ((a1 > tmpDate1) ? "TRUE" : "FALSE") << "\n"; - textCtrl << "a1 (7-14-91)== 7-14-91 ? ==> " << ((a1==tmpDate2) ? "TRUE" : "FALSE") << "\n"; + wxDate tmpDate1(_T("08/01/1991")); + wxDate tmpDate2(_T("07/14/1991")); + textCtrl << _T("a1 (7-14-91) < 8-01-91 ? ==> ") << ((a1 < tmpDate1) ? _T("TRUE") : _T("FALSE")) << _T("\n"); + textCtrl << _T("a1 (7-14-91) > 8-01-91 ? ==> ") << ((a1 > tmpDate1) ? _T("TRUE") : _T("FALSE")) << _T("\n"); + textCtrl << _T("a1 (7-14-91)== 7-14-91 ? ==> ") << ((a1==tmpDate2) ? _T("TRUE") : _T("FALSE")) << _T("\n"); wxDate a3 = a1; - textCtrl << "a1 (7-14-91)== a3 (7-14-91) ? ==> " << ((a1==a3) ? "TRUE" : "FALSE") << "\n"; + textCtrl << _T("a1 (7-14-91)== a3 (7-14-91) ? ==> ") << ((a1==a3) ? _T("TRUE") : _T("FALSE")) << _T("\n"); wxDate a4 = a1; - textCtrl << "a1 (7-14-91)== a4 (7-15-91) ? ==> " << ((a1==++a4) ? "TRUE" : "FALSE") << "\n"; + textCtrl << _T("a1 (7-14-91)== a4 (7-15-91) ? ==> ") << ((a1==++a4) ? _T("TRUE") : _T("FALSE")) << _T("\n"); - wxDate a5 = wxString("today"); - textCtrl << "Today is: " << a5 << "\n"; - a4 = "TODAY"; - textCtrl << "Today (a4) is: " << a4 << "\n"; + wxDate a5 = wxString(_T("today")); + textCtrl << _T("Today is: ") << a5 << _T("\n"); + a4 = _T("TODAY"); + textCtrl << _T("Today (a4) is: ") << a4 << _T("\n"); - textCtrl << "Today + 4 is: " << (a4+=4) << "\n"; - a4 = "TODAY"; - textCtrl << "Today - 4 is: " << (a4-=4) << "\n"; + textCtrl << _T("Today + 4 is: ") << (a4+=4) << _T("\n"); + a4 = _T("TODAY"); + textCtrl << _T("Today - 4 is: ") << (a4-=4) << _T("\n"); - textCtrl << "=========== Leap Year Test ===========\n"; - a1 = "1/15/1992"; - textCtrl << a1.FormatDate(wxFULL) << " " << ((a1.IsLeapYear()) ? "Leap" : "non-Leap"); - textCtrl << " " << "day of year: " << a1.GetDayOfYear() << "\n"; + textCtrl << _T("=========== Leap Year Test ===========\n"); + a1 = _T("1/15/1992"); + textCtrl << a1.FormatDate(wxFULL) << _T(" ") << ((a1.IsLeapYear()) ? _T("Leap") : _T("non-Leap")); + textCtrl << _T(" ") << _T("day of year: ") << a1.GetDayOfYear() << _T("\n"); - a1 = "2/16/1993"; - textCtrl << a1.FormatDate(wxFULL) << " " << ((a1.IsLeapYear()) ? "Leap" : "non-Leap"); - textCtrl << " " << "day of year: " << a1.GetDayOfYear() << "\n"; + a1 = _T("2/16/1993"); + textCtrl << a1.FormatDate(wxFULL) << _T(" ") << ((a1.IsLeapYear()) ? _T("Leap") : _T("non-Leap")); + textCtrl << _T(" ") << _T("day of year: ") << a1.GetDayOfYear() << _T("\n"); - textCtrl << "================== string assignment test ====================\n"; + textCtrl << _T("================== string assignment test ====================\n"); wxString date_string=a1; - textCtrl << "a1 as a string (s/b 2/16/1993) ==> " << date_string << "\n"; + textCtrl << _T("a1 as a string (s/b 2/16/1993) ==> ") << date_string << _T("\n"); - textCtrl << "================== SetFormat test ============================\n"; + textCtrl << _T("================== SetFormat test ============================\n"); a1.SetFormat(wxFULL); - textCtrl << "a1 (s/b FULL format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b FULL format) ==> ") << a1 << _T("\n"); a1.SetFormat(wxEUROPEAN); - textCtrl << "a1 (s/b EUROPEAN format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b EUROPEAN format) ==> ") << a1 << _T("\n"); - textCtrl << "================== SetOption test ============================\n"; - textCtrl << "Date abbreviation ON\n"; + textCtrl << _T("================== SetOption test ============================\n"); + textCtrl << _T("Date abbreviation ON\n"); a1.SetOption(wxDATE_ABBR); a1.SetFormat(wxMONTH); - textCtrl << "a1 (s/b MONTH format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b MONTH format) ==> ") << a1 << _T("\n"); a1.SetFormat(wxDAY); - textCtrl << "a1 (s/b DAY format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b DAY format) ==> ") << a1 << _T("\n"); a1.SetFormat(wxFULL); - textCtrl << "a1 (s/b FULL format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b FULL format) ==> ") << a1 << _T("\n"); a1.SetFormat(wxEUROPEAN); - textCtrl << "a1 (s/b EUROPEAN format) ==> " << a1 << "\n"; - textCtrl << "Century suppression ON\n"; + textCtrl << _T("a1 (s/b EUROPEAN format) ==> ") << a1 << _T("\n"); + textCtrl << _T("Century suppression ON\n"); a1.SetOption(wxNO_CENTURY); a1.SetFormat(wxMDY); - textCtrl << "a1 (s/b MDY format) ==> " << a1 << "\n"; - textCtrl << "Century suppression OFF\n"; + textCtrl << _T("a1 (s/b MDY format) ==> ") << a1 << _T("\n"); + textCtrl << _T("Century suppression OFF\n"); a1.SetOption(wxNO_CENTURY,FALSE); - textCtrl << "a1 (s/b MDY format) ==> " << a1 << "\n"; - textCtrl << "Century suppression ON\n"; + textCtrl << _T("a1 (s/b MDY format) ==> ") << a1 << _T("\n"); + textCtrl << _T("Century suppression ON\n"); a1.SetOption(wxNO_CENTURY); - textCtrl << "a1 (s/b MDY format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b MDY format) ==> ") << a1 << _T("\n"); a1.SetFormat(wxFULL); - textCtrl << "a1 (s/b FULL format) ==> " << a1 << "\n"; + textCtrl << _T("a1 (s/b FULL format) ==> ") << a1 << _T("\n"); - textCtrl << "\n=============== Version 4.0 Enhancement Test =================\n"; + textCtrl << _T("\n=============== Version 4.0 Enhancement Test =================\n"); - wxDate v4("11/26/1966"); - textCtrl << "\n---------- Set Stuff -----------\n"; - textCtrl << "First, 'Set' to today..." << "\n"; - textCtrl << "Before 'Set' => " << v4 << "\n"; - textCtrl << "After 'Set' => " << v4.Set() << "\n\n"; + wxDate v4(_T("11/26/1966")); + textCtrl << _T("\n---------- Set Stuff -----------\n"); + textCtrl << _T("First, 'Set' to today...") << _T("\n"); + textCtrl << _T("Before 'Set' => ") << v4 << _T("\n"); + textCtrl << _T("After 'Set' => ") << v4.Set() << _T("\n\n"); - textCtrl << "Set to 11/26/66 => " << v4.Set(11,26,1966) << "\n"; - textCtrl << "Current Julian => " << v4.GetJulianDate() << "\n"; - textCtrl << "Set to Julian 2450000L => " << v4.Set(2450000L) << "\n"; - textCtrl << "See! => " << v4.GetJulianDate() << "\n"; + textCtrl << _T("Set to 11/26/66 => ") << v4.Set(11,26,1966) << _T("\n"); + textCtrl << _T("Current Julian => ") << v4.GetJulianDate() << _T("\n"); + textCtrl << _T("Set to Julian 2450000L => ") << v4.Set(2450000L) << _T("\n"); + textCtrl << _T("See! => ") << v4.GetJulianDate() << _T("\n"); - textCtrl << "---------- Add Stuff -----------\n"; - textCtrl << "Start => " << v4 << "\n"; - textCtrl << "Add 4 Weeks => " << v4.AddWeeks(4) << "\n"; - textCtrl << "Sub 1 Month => " << v4.AddMonths(-1) << "\n"; - textCtrl << "Add 2 Years => " << v4.AddYears(2) << "\n"; + textCtrl << _T("---------- Add Stuff -----------\n"); + textCtrl << _T("Start => ") << v4 << _T("\n"); + textCtrl << _T("Add 4 Weeks => ") << v4.AddWeeks(4) << _T("\n"); + textCtrl << _T("Sub 1 Month => ") << v4.AddMonths(-1) << _T("\n"); + textCtrl << _T("Add 2 Years => ") << v4.AddYears(2) << _T("\n"); - textCtrl << "---------- Misc Stuff -----------\n"; - textCtrl << "The date aboves' day of the month is => " << v4.GetDay() << "\n"; - textCtrl << "There are " << v4.GetDaysInMonth() << " days in this month.\n"; - textCtrl << "The first day of this month lands on " << v4.GetFirstDayOfMonth() << "\n"; - textCtrl << "This day happens to be " << v4.GetDayOfWeekName() << "\n"; - textCtrl << "the " << v4.GetDayOfWeek() << " day of the week," << "\n"; - textCtrl << "on the " << v4.GetWeekOfYear() << " week of the year," << "\n"; - textCtrl << "on the " << v4.GetWeekOfMonth() << " week of the month, " << "\n"; - textCtrl << "(which is " << v4.GetMonthName() << ")\n"; - textCtrl << "the "<< v4.GetMonth() << "th month in the year.\n"; - textCtrl << "The year alone is " << v4.GetYear() << "\n"; + textCtrl << _T("---------- Misc Stuff -----------\n"); + textCtrl << _T("The date aboves' day of the month is => ") << v4.GetDay() << _T("\n"); + textCtrl << _T("There are ") << v4.GetDaysInMonth() << _T(" days in this month.\n"); + textCtrl << _T("The first day of this month lands on ") << v4.GetFirstDayOfMonth() << _T("\n"); + textCtrl << _T("This day happens to be ") << v4.GetDayOfWeekName() << _T("\n"); + textCtrl << _T("the ") << v4.GetDayOfWeek() << _T(" day of the week,") << _T("\n"); + textCtrl << _T("on the ") << v4.GetWeekOfYear() << _T(" week of the year,") << _T("\n"); + textCtrl << _T("on the ") << v4.GetWeekOfMonth() << _T(" week of the month, ") << _T("\n"); + textCtrl << _T("(which is ") << v4.GetMonthName() << _T(")\n"); + textCtrl << _T("the ")<< v4.GetMonth() << _T("th month in the year.\n"); + textCtrl << _T("The year alone is ") << v4.GetYear() << _T("\n"); - textCtrl << "---------- First and Last Stuff -----------\n"; + textCtrl << _T("---------- First and Last Stuff -----------\n"); v4.Set(); - textCtrl << "The first date of this month is " << v4.GetMonthStart() << "\n"; - textCtrl << "The last date of this month is " << v4.GetMonthEnd() << "\n"; - textCtrl << "The first date of this year is " << v4.GetYearStart() << "\n"; - textCtrl << "The last date of this year is " << v4.GetYearEnd() << "\n"; + textCtrl << _T("The first date of this month is ") << v4.GetMonthStart() << _T("\n"); + textCtrl << _T("The last date of this month is ") << v4.GetMonthEnd() << _T("\n"); + textCtrl << _T("The first date of this year is ") << v4.GetYearStart() << _T("\n"); + textCtrl << _T("The last date of this year is ") << v4.GetYearEnd() << _T("\n"); } #endif // wxUSE_TIMEDATE @@ -1175,20 +1175,20 @@ void MyApp::DoVariantDemo(wxCommandEvent& WXUNUSED(event) ) { wxTextCtrl& textCtrl = * GetTextCtrl(); - wxVariant var1 = "String value"; - textCtrl << "var1 = " << var1.MakeString() << "\n"; + wxVariant var1 = _T("String value"); + textCtrl << _T("var1 = ") << var1.MakeString() << _T("\n"); // Conversion wxString str = var1.MakeString(); var1 = 123.456; - textCtrl << "var1 = " << var1.GetReal() << "\n"; + textCtrl << _T("var1 = ") << var1.GetReal() << _T("\n"); // Implicit conversion double v = var1; var1 = 9876L; - textCtrl << "var1 = " << var1.GetLong() << "\n"; + textCtrl << _T("var1 = ") << var1.GetLong() << _T("\n"); // Implicit conversion long l = var1; @@ -1202,20 +1202,20 @@ void MyApp::DoVariantDemo(wxCommandEvent& WXUNUSED(event) ) wxStringList stringList; stringList.Add(_T("one")); stringList.Add(_T("two")); stringList.Add(_T("three")); var1 = stringList; - textCtrl << "var1 = " << var1.MakeString() << "\n"; + textCtrl << _T("var1 = ") << var1.MakeString() << _T("\n"); var1.ClearList(); var1.Append(wxVariant(1.2345)); - var1.Append(wxVariant("hello")); + var1.Append(wxVariant(_T("hello"))); var1.Append(wxVariant(54321L)); - textCtrl << "var1 = " << var1.MakeString() << "\n"; + textCtrl << _T("var1 = ") << var1.MakeString() << _T("\n"); size_t n = var1.GetCount(); size_t i; for (i = (size_t) 0; i < n; i++) { - textCtrl << "var1[" << (int) i << "] (type " << var1[i].GetType() << ") = " << var1[i].MakeString() << "\n"; + textCtrl << _T("var1[") << (int) i << _T("] (type ") << var1[i].GetType() << _T(") = ") << var1[i].MakeString() << _T("\n"); } } @@ -1237,8 +1237,8 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { - wxMessageDialog dialog(this, "Tests various wxWindows types", - "About Types", wxYES_NO|wxCANCEL); + wxMessageDialog dialog(this, _T("Tests various wxWindows types"), + _T("About Types"), wxYES_NO|wxCANCEL); dialog.ShowModal(); } diff --git a/samples/typetest/typetest.dsp b/samples/typetest/typetest.dsp index 6af9d7602e..c0816f7294 100644 --- a/samples/typetest/typetest.dsp +++ b/samples/typetest/typetest.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "typetest - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "typetest - Win32 Release" diff --git a/samples/validate/makefile.wat b/samples/validate/makefile.wat index 94a59068a1..49fb27b003 100644 --- a/samples/validate/makefile.wat +++ b/samples/validate/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for validate example (Watcom) -# Created: 2000-03-14 - -WXDIR = $(%WXWIN) - -PROGRAM = validate -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\validate +# +PROGRAM = validate +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/validate/validate.cpp b/samples/validate/validate.cpp index 6236f14778..32ca7fffc6 100644 --- a/samples/validate/validate.cpp +++ b/samples/validate/validate.cpp @@ -42,7 +42,7 @@ MyData g_data; bool MyApp::OnInit() { // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, "Validation Test", 50, 50, 300, 250); + MyFrame *frame = new MyFrame((wxFrame *) NULL, _T("Validation Test"), 50, 50, 300, 250); // Show the frame frame->Show(TRUE); @@ -53,29 +53,29 @@ bool MyApp::OnInit() } // My frame constructor -MyFrame::MyFrame(wxFrame *frame, const char *title, int x, int y, int w, int h) +MyFrame::MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h) : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) { // Give it an icon #ifdef __WXMSW__ - SetIcon(wxIcon("mondrian")); + SetIcon(wxIcon(_T("mondrian"))); #endif #ifdef __X__ - SetIcon(wxIcon("aiai.xbm")); + SetIcon(wxIcon(_T("aiai.xbm"))); #endif // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(VALIDATE_TEST_DIALOG, "&Test dialog", "Show example dialog"); - file_menu->Append(VALIDATE_SILENT, "&Bell on error", "Toggle bell on error", TRUE); + file_menu->Append(VALIDATE_TEST_DIALOG, _T("&Test dialog"), _T("Show example dialog")); + file_menu->Append(VALIDATE_SILENT, _T("&Bell on error"), _T("Toggle bell on error"), TRUE); file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); + file_menu->Append(wxID_EXIT, _T("E&xit")); file_menu->Check(VALIDATE_SILENT, !wxValidator::IsSilent()); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "File"); + menu_bar->Append(file_menu, _T("File")); SetMenuBar(menu_bar); CreateStatusBar(1); @@ -88,7 +88,7 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnTestDialog(wxCommandEvent& WXUNUSED(event)) { - MyDialog dialog(this, "Validation test dialog", wxPoint(100, 100), wxSize(340, 170)); + MyDialog dialog(this, _T("Validation test dialog"), wxPoint(100, 100), wxSize(340, 170)); dialog.ShowModal(); } @@ -107,10 +107,10 @@ MyDialog::MyDialog( wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long WXUNUSED(style) ) : wxDialog(parent, VALIDATE_DIALOG_ID, title, pos, size, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) { - wxButton *but1 = new wxButton(this, wxID_OK, "OK", wxPoint(250, 10), wxSize(80, 30)); - (void)new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(250, 60), wxSize(80, 30)); + wxButton *but1 = new wxButton(this, wxID_OK, _T("OK"), wxPoint(250, 10), wxSize(80, 30)); + (void)new wxButton(this, wxID_CANCEL, _T("Cancel"), wxPoint(250, 60), wxSize(80, 30)); - (void)new wxTextCtrl(this, VALIDATE_TEXT, "", + (void)new wxTextCtrl(this, VALIDATE_TEXT, _T(""), wxPoint(10, 10), wxSize(120, -1), 0, wxTextValidator(wxFILTER_ALPHA, &g_data.m_string)); SetBackgroundColour(wxColour(0,0,255)); diff --git a/samples/validate/validate.dsp b/samples/validate/validate.dsp index 13e758ed0a..a5b3e854f6 100644 --- a/samples/validate/validate.dsp +++ b/samples/validate/validate.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "validate - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "validate - Win32 Release" diff --git a/samples/validate/validate.h b/samples/validate/validate.h index cdb560303c..864a926b2f 100644 --- a/samples/validate/validate.h +++ b/samples/validate/validate.h @@ -24,7 +24,7 @@ public: class MyFrame : public wxFrame { public: - MyFrame(wxFrame *frame, const char *title, int x, int y, int w, int h); + MyFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h); void OnQuit(wxCommandEvent& event); void OnTestDialog(wxCommandEvent& event); @@ -45,7 +45,7 @@ class MyData public: wxString m_string; - MyData() { m_string = "My string"; } + MyData() { m_string = _T("My string"); } }; #define VALIDATE_DIALOG_ID 200 diff --git a/samples/widgets/makefile.unx b/samples/widgets/makefile.unx new file mode 100644 index 0000000000..229d278717 --- /dev/null +++ b/samples/widgets/makefile.unx @@ -0,0 +1,43 @@ +# +# File: Makefile for the widgets sample +# Author: Vadim Zeitlin +# Copyright: (c) 2002 wxWindows team +# +# This makefile requires a Unix version of wxWindows +# to be installed on your system. This is most often +# done typing "make install" when using the complete +# sources of wxWindows or by installing the two +# RPM packages wxGTK.XXX.rpm and wxGTK-devel.XXX.rpm +# under Linux. +# + +CXX = $(shell wx-config --cxx) + +PROGRAM = widgets + +OBJECTS = $(PROGRAM).o \ + button.o \ + combobox.o \ + gauge.o \ + listbox.o \ + notebook.o \ + radiobox.o \ + slider.o \ + spinbtn.o \ + static.o \ + textctrl.o + +# implementation + +.SUFFIXES: .o .cpp + +.cpp.o : + $(CXX) -c `wx-config --cxxflags` -o $@ $< + +all: $(PROGRAM) + +$(PROGRAM): $(OBJECTS) + $(CXX) -o $(PROGRAM) $(OBJECTS) `wx-config --libs` + +clean: + rm -f *.o $(PROGRAM) diff --git a/samples/widgets/makefile.wat b/samples/widgets/makefile.wat index 282c5077ef..2dd724c38c 100644 --- a/samples/widgets/makefile.wat +++ b/samples/widgets/makefile.wat @@ -1,15 +1,13 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 # -# - -WXDIR = $(%WXWIN) - -PROGRAM = widgets -OBJECTS = $(PROGRAM).obj button.obj combobox.obj gauge.obj listbox.obj notebook.obj radiobox.obj slider.obj spinbtn.obj static.obj textctrl.obj - -!include $(WXDIR)\src\makeprog.wat - - +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\widgets +# +PROGRAM = widgets +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/widgets/notebook.cpp b/samples/widgets/notebook.cpp index 4491785d2f..6d6ea11165 100644 --- a/samples/widgets/notebook.cpp +++ b/samples/widgets/notebook.cpp @@ -134,6 +134,10 @@ protected: // get the numeric value of text ctrl int GetTextValue(wxTextCtrl *text) const; + // is the value in range? + bool IsValidValue(int val) const + { return (val >= 0) && (val < m_notebook->GetPageCount()); } + // the controls // ------------ @@ -380,18 +384,17 @@ void NotebookWidgetsPage::CreateNotebook() if ( notebook ) { - int sel = notebook->GetSelection(); + const int sel = notebook->GetSelection(); - int count = notebook->GetPageCount(); + const int count = notebook->GetPageCount(); + + // recreate the pages for ( int n = 0; n < count; n++ ) { - wxNotebookPage *page = notebook->GetPage(0); - page->Reparent(m_notebook); - - m_notebook->AddPage(page, notebook->GetPageText(0), FALSE, - notebook->GetPageImage(0)); - - notebook->RemovePage(0); + m_notebook->AddPage(CreateNewPage(), + notebook->GetPageText(n), + FALSE, + notebook->GetPageImage(n)); } m_sizerNotebook->Remove(notebook); @@ -459,7 +462,7 @@ void NotebookWidgetsPage::OnButtonDeleteAll(wxCommandEvent& WXUNUSED(event)) void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& event) { int pos = GetTextValue(m_textSelect); - wxCHECK_RET( pos >= 0, _T("button should be disabled") ); + wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") ); m_notebook->SetSelection(pos); } @@ -473,7 +476,7 @@ void NotebookWidgetsPage::OnButtonAddPage(wxCommandEvent& WXUNUSED(event)) void NotebookWidgetsPage::OnButtonInsertPage(wxCommandEvent& WXUNUSED(event)) { int pos = GetTextValue(m_textInsert); - wxCHECK_RET( pos >= 0, _T("button should be disabled") ); + wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") ); m_notebook->InsertPage(pos, CreateNewPage(), _T("Inserted page"), FALSE, GetIconIndex()); @@ -482,24 +485,24 @@ void NotebookWidgetsPage::OnButtonInsertPage(wxCommandEvent& WXUNUSED(event)) void NotebookWidgetsPage::OnButtonRemovePage(wxCommandEvent& WXUNUSED(event)) { int pos = GetTextValue(m_textRemove); - wxCHECK_RET( pos >= 0, _T("button should be disabled") ); + wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") ); m_notebook->DeletePage(pos); } void NotebookWidgetsPage::OnUpdateUISelectButton(wxUpdateUIEvent& event) { - event.Enable( GetTextValue(m_textSelect) >= 0 ); + event.Enable( IsValidValue(GetTextValue(m_textSelect)) ); } void NotebookWidgetsPage::OnUpdateUIInsertButton(wxUpdateUIEvent& event) { - event.Enable( GetTextValue(m_textInsert) >= 0 ); + event.Enable( IsValidValue(GetTextValue(m_textInsert)) ); } void NotebookWidgetsPage::OnUpdateUIRemoveButton(wxUpdateUIEvent& event) { - event.Enable( GetTextValue(m_textRemove) >= 0 ); + event.Enable( IsValidValue(GetTextValue(m_textRemove)) ); } void NotebookWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event) @@ -543,4 +546,4 @@ void NotebookWidgetsPage::OnPageChanged(wxNotebookEvent& event) event.Skip(); } -#endif \ No newline at end of file +#endif diff --git a/samples/widgets/slider.cpp b/samples/widgets/slider.cpp index ec1d8f5a76..9793994642 100644 --- a/samples/widgets/slider.cpp +++ b/samples/widgets/slider.cpp @@ -459,10 +459,8 @@ void SliderWidgetsPage::OnUpdateUIOtherSide(wxUpdateUIEvent& event) void SliderWidgetsPage::OnSlider(wxScrollEvent& event) { - long value = event.GetInt(); - - wxASSERT_MSG( value == m_slider->GetValue(), - wxT("slider value should be the same") ); + wxASSERT_MSG( event.GetInt() == m_slider->GetValue(), + wxT("slider value should be the same") ); wxEventType eventType = event.GetEventType(); diff --git a/samples/widgets/widgets.dsp b/samples/widgets/widgets.dsp index b7a51f6a7e..d503488fcb 100644 --- a/samples/widgets/widgets.dsp +++ b/samples/widgets/widgets.dsp @@ -55,7 +55,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "widgets - Win32 Debug DLL" @@ -81,7 +81,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ..\..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "widgets - Win32 Release" diff --git a/samples/widgets/widgets.h b/samples/widgets/widgets.h index bfd7ca6b4f..7f36a57134 100644 --- a/samples/widgets/widgets.h +++ b/samples/widgets/widgets.h @@ -17,7 +17,7 @@ class WXDLLEXPORT wxNotebook; class WXDLLEXPORT wxSizer; class WXDLLEXPORT wxTextCtrl; -class WXDLLEXPORT WidgetsPageInfo; +class WidgetsPageInfo; #include "wx/panel.h" @@ -68,7 +68,7 @@ public: // dynamic WidgetsPage creation helpers // ---------------------------------------------------------------------------- -class WXDLLEXPORT WidgetsPageInfo +class WidgetsPageInfo { public: typedef WidgetsPage *(*Constructor)(wxNotebook *notebook, diff --git a/samples/wizard/makefile.wat b/samples/wizard/makefile.wat index b281b5eb48..617bd3380b 100644 --- a/samples/wizard/makefile.wat +++ b/samples/wizard/makefile.wat @@ -1,11 +1,13 @@ -# Purpose: makefile for wizard example (Watcom) -# Created: 2000-03-15 - -WXDIR = $(%WXWIN) - -PROGRAM = wizard -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# +# +THISDIR = $(%WXWIN)\samples\wizard +# +PROGRAM = wizard +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj +# +!include $(%WXWIN)\src\makeprog.wat diff --git a/samples/wizard/wizard.cpp b/samples/wizard/wizard.cpp index 85c99f9d60..b5f798734b 100644 --- a/samples/wizard/wizard.cpp +++ b/samples/wizard/wizard.cpp @@ -100,14 +100,14 @@ public: { m_bitmap = wxBITMAP(wiztest2); - m_checkbox = new wxCheckBox(this, -1, "&Check me"); + m_checkbox = new wxCheckBox(this, -1, _T("&Check me")); } virtual bool TransferDataFromWindow() { if ( !m_checkbox->GetValue() ) { - wxMessageBox("Check the checkbox first!", "No way", + wxMessageBox(_T("Check the checkbox first!"), _T("No way"), wxICON_WARNING | wxOK, this); return FALSE; @@ -138,12 +138,12 @@ public: // static wxString choices[] = { "forward", "backward", "both", "neither" }; // The above syntax can cause an internal compiler error with gcc. wxString choices[4]; - choices[0] = "forward"; - choices[1] = "backward"; - choices[2] = "both"; - choices[3] = "neither"; + choices[0] = _T("forward"); + choices[1] = _T("backward"); + choices[2] = _T("both"); + choices[3] = _T("neither"); - m_radio = new wxRadioBox(this, -1, "Allow to proceed:", + m_radio = new wxRadioBox(this, -1, _T("Allow to proceed:"), wxPoint(5, 5), wxDefaultSize, WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_COLS); @@ -153,7 +153,7 @@ public: // wizard event handlers void OnWizardCancel(wxWizardEvent& event) { - if ( wxMessageBox("Do you really want to cancel?", "Question", + if ( wxMessageBox(_T("Do you really want to cancel?"), _T("Question"), wxICON_QUESTION | wxYES_NO, this) != wxYES ) { // not confirmed @@ -174,7 +174,7 @@ public: if ( !event.GetDirection() && sel == Backward ) return; - wxMessageBox("You can't go there", "Not allowed", + wxMessageBox(_T("You can't go there"), _T("Not allowed"), wxICON_WARNING | wxOK, this); event.Veto(); @@ -198,10 +198,10 @@ public: m_prev = prev; m_next = next; - (void)new wxStaticText(this, -1, "Try checking the box below and\n" - "then going back and clearing it"); + (void)new wxStaticText(this, -1, _T("Try checking the box below and\n") + _T("then going back and clearing it")); - m_checkbox = new wxCheckBox(this, -1, "&Skip the next page", + m_checkbox = new wxCheckBox(this, -1, _T("&Skip the next page"), wxPoint(5, 30)); } @@ -249,7 +249,7 @@ IMPLEMENT_APP(MyApp) // `Main program' equivalent: the program execution "starts" here bool MyApp::OnInit() { - MyFrame *frame = new MyFrame("wxWizard Sample"); + MyFrame *frame = new MyFrame(_T("wxWizard Sample")); // and show it (the frames, unlike simple controls, are not shown when // created initially) @@ -268,17 +268,17 @@ MyFrame::MyFrame(const wxString& title) wxDefaultPosition, wxSize(250, 150)) // small frame { wxMenu *menuFile = new wxMenu; - menuFile->Append(Wizard_Run, "&Run wizard...\tCtrl-R"); + menuFile->Append(Wizard_Run, _T("&Run wizard...\tCtrl-R")); menuFile->AppendSeparator(); - menuFile->Append(Wizard_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Wizard_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenu *helpMenu = new wxMenu; - helpMenu->Append(Wizard_About, "&About...\tF1", "Show about dialog"); + helpMenu->Append(Wizard_About, _T("&About...\tF1"), _T("Show about dialog")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(menuFile, "&File"); - menuBar->Append(helpMenu, "&Help"); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(helpMenu, _T("&Help")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -295,23 +295,23 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("Demo of wxWizard class\n" - "© 1999, 2000 Vadim Zeitlin", - "About wxWizard sample", wxOK | wxICON_INFORMATION, this); + wxMessageBox(_T("Demo of wxWizard class\n") + _T("© 1999, 2000 Vadim Zeitlin"), + _T("About wxWizard sample"), wxOK | wxICON_INFORMATION, this); } void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event)) { wxWizard *wizard = new wxWizard(this, -1, - "Absolutely Useless Wizard", + _T("Absolutely Useless Wizard"), wxBITMAP(wiztest)); // a wizard page may be either an object of predefined class wxWizardPageSimple *page1 = new wxWizardPageSimple(wizard); wxStaticText *text = new wxStaticText(page1, -1, - "This wizard doesn't help you to do anything at all.\n" - "\n" - "The next pages will present you with more useless controls." + _T("This wizard doesn't help you to do anything at all.\n") + _T("\n") + _T("The next pages will present you with more useless controls.") ); wxSize size = text->GetBestSize(); @@ -332,7 +332,7 @@ void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event)) wizard->SetPageSize(size); if ( wizard->RunWizard(page1) ) { - wxMessageBox("The wizard successfully completed", "That's all", + wxMessageBox(_T("The wizard successfully completed"), _T("That's all"), wxICON_INFORMATION | wxOK); } diff --git a/samples/wizard/wizard.dsp b/samples/wizard/wizard.dsp index f25939a17d..3d7c422c12 100644 --- a/samples/wizard/wizard.dsp +++ b/samples/wizard/wizard.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw233.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 ..\..\lib\wxmsw240.lib !ELSEIF "$(CFG)" == "wizard - Win32 Debug DLL" @@ -80,7 +80,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw233d.lib +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept ..\..\lib\wxmsw240d.lib !ELSEIF "$(CFG)" == "wizard - Win32 Release" diff --git a/samples/wxtest/makefile.b32 b/samples/wxtest/makefile.b32 new file mode 100644 index 0000000000..41c5d6cefb --- /dev/null +++ b/samples/wxtest/makefile.b32 @@ -0,0 +1,19 @@ +# +# File: makefile.vc +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: (c) Julian Smart +# +# Makefile : Builds sample (VC++, WIN32) +# Use FINAL=1 argument to nmake to build final version with no debug info. + +# Set WXDIR for your system + +WXDIR = $(WXWIN) + +TARGET=test +OBJECTS = $(TARGET).obj test_wdr.obj + +!include $(WXDIR)\src\makeprog.b32 + diff --git a/samples/xrc/Makefile.in b/samples/xrc/Makefile.in index 74b1001946..512deacc5e 100644 --- a/samples/xrc/Makefile.in +++ b/samples/xrc/Makefile.in @@ -16,7 +16,7 @@ OBJECTS=$(PROGRAM).o \ derivdlg.o \ custclas.o -APPEXTRALIBS=$(top_builddir)/lib/libwxxrc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include DATADIRS = rc @@ -31,6 +31,7 @@ DATAFILES = rc/artprov.xrc \ rc/toolbar.xrc \ rc/uncenter.xrc \ rc/variable.xrc \ + rc/appicon.xpm \ rc/artprov.xpm \ rc/basicdlg.xpm \ rc/controls.xpm \ diff --git a/samples/xrc/XrcDemoVC.dsp b/samples/xrc/XrcDemoVC.dsp index 5bef50036a..2e5c53f2b1 100644 --- a/samples/xrc/XrcDemoVC.dsp +++ b/samples/xrc/XrcDemoVC.dsp @@ -109,7 +109,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib wxxrcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/xmldemo.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib wxxrcd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/xmldemo.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "XrcDemoVC - Win32 Release DLL" @@ -136,7 +136,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib wxxrc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/xmldemo.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib wxxrc.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/xmldemo.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/samples/xrc/custclas.cpp b/samples/xrc/custclas.cpp index 020a14e4b5..ba30c5f7f7 100644 --- a/samples/xrc/custclas.cpp +++ b/samples/xrc/custclas.cpp @@ -156,7 +156,7 @@ void MyResizableListCtrl::SetColumnWidths() // This is just a debug message in case you want to watch the // events scroll by as you resize. - wxLogDebug( "Successfully set column widths" ); + wxLogDebug( wxT("Successfully set column widths") ); } diff --git a/samples/xrc/derivdlg.cpp b/samples/xrc/derivdlg.cpp index a9a719c49d..437615d60b 100644 --- a/samples/xrc/derivdlg.cpp +++ b/samples/xrc/derivdlg.cpp @@ -61,7 +61,7 @@ END_EVENT_TABLE() // Constructor (Notice how small and easy it is) PreferencesDialog::PreferencesDialog(wxWindow* parent) { - wxXmlResource::Get()->LoadDialog(this, parent, "derived_dialog"); + wxXmlResource::Get()->LoadDialog(this, parent, wxT("derived_dialog")); } // Destructor. (Empty, as I don't need anything special done when destructing). diff --git a/samples/xrc/myframe.cpp b/samples/xrc/myframe.cpp index 2d03b22e44..594d8769e1 100644 --- a/samples/xrc/myframe.cpp +++ b/samples/xrc/myframe.cpp @@ -109,18 +109,18 @@ MyFrame::MyFrame(wxWindow* parent) // since this frame will always be the top window, and thus parentless. // However, the current approach has source code that can be recycled // for other frames that aren't the top level window.] - wxXmlResource::Get()->LoadFrame(this, parent, "main_frame"); + wxXmlResource::Get()->LoadFrame(this, parent, wxT("main_frame")); // Set the icon for the frame. SetIcon(wxICON(appicon)); // Load the menubar from XRC and set this frame's menubar to it. - SetMenuBar(wxXmlResource::Get()->LoadMenuBar("main_menu")); + SetMenuBar(wxXmlResource::Get()->LoadMenuBar(wxT("main_menu"))); // Load the toolbar from XRC and set this frame's toolbar to it. // NOTE: For toolbars you currently should do it exactly like this. // With toolbars, you currently can't create one, and set it later. It // needs to be all in one step. - SetToolBar(wxXmlResource::Get()->LoadToolBar(this, "main_toolbar")); + SetToolBar(wxXmlResource::Get()->LoadToolBar(this, wxT("main_toolbar"))); // Give the frame a optional statusbar. The '1' just means one field. // A gripsizer will automatically get put on into the corner, if that @@ -146,7 +146,7 @@ void MyFrame::OnNonDerivedDialogToolOrMenuCommand(wxCommandEvent& WXUNUSED(event wxDialog dlg; // "non_derived_dialog" is the name of the wxDialog XRC node that should // be loaded. - wxXmlResource::Get()->LoadDialog(&dlg, this, "non_derived_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("non_derived_dialog")); dlg.ShowModal(); } @@ -166,7 +166,7 @@ void MyFrame::OnDerivedDialogToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "controls_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("controls_dialog")); #if wxUSE_LISTCTRL // There is no data in the listctrl. This will add some columns @@ -211,7 +211,7 @@ void MyFrame::OnControlsToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnUncenteredToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "uncentered_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("uncentered_dialog")); dlg.ShowModal(); } @@ -219,7 +219,7 @@ void MyFrame::OnUncenteredToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "custom_class_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("custom_class_dialog")); // Make an instance of our new custom class. MyResizableListCtrl* a_myResizableListCtrl = new MyResizableListCtrl(&dlg, @@ -231,7 +231,7 @@ void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) // "custom_control_placeholder" is the name of the "unknown" tag in the // custctrl.xrc XRC file. - wxXmlResource::Get()->AttachUnknownControl("custom_control_placeholder", + wxXmlResource::Get()->AttachUnknownControl(wxT("custom_control_placeholder"), a_myResizableListCtrl); dlg.ShowModal(); } @@ -240,7 +240,7 @@ void MyFrame::OnCustomClassToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnPlatformPropertyToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "platform_property_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("platform_property_dialog")); dlg.ShowModal(); } @@ -248,7 +248,7 @@ void MyFrame::OnPlatformPropertyToolOrMenuCommand(wxCommandEvent& WXUNUSED(event void MyFrame::OnArtProviderToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "art_provider_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("art_provider_dialog")); dlg.ShowModal(); } @@ -256,7 +256,7 @@ void MyFrame::OnArtProviderToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnVariableExpansionToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) { wxDialog dlg; - wxXmlResource::Get()->LoadDialog(&dlg, this, "variable_expansion_dialog"); + wxXmlResource::Get()->LoadDialog(&dlg, this, wxT("variable_expansion_dialog")); dlg.ShowModal(); } @@ -267,5 +267,5 @@ void MyFrame::OnAboutToolOrMenuCommand(wxCommandEvent& WXUNUSED(event)) msg.Printf( _T("This is the about dialog of XML resources demo.\n") _T("Welcome to %s"), wxVERSION_STRING); - wxMessageBox(msg, "About XML resources demo", wxOK | wxICON_INFORMATION, this); + wxMessageBox(msg, _("About XML resources demo"), wxOK | wxICON_INFORMATION, this); } diff --git a/samples/xrc/xrcdemo.cpp b/samples/xrc/xrcdemo.cpp index f7d755352c..c904f52e28 100644 --- a/samples/xrc/xrcdemo.cpp +++ b/samples/xrc/xrcdemo.cpp @@ -88,27 +88,27 @@ bool MyApp::OnInit() // into one giant XRC file if you wanted, but then they become more // diffcult to manage, and harder to reuse in later projects. // The menubar - wxXmlResource::Get()->Load("rc/menu.xrc"); + wxXmlResource::Get()->Load(wxT("rc/menu.xrc")); // The toolbar - wxXmlResource::Get()->Load("rc/toolbar.xrc"); + wxXmlResource::Get()->Load(wxT("rc/toolbar.xrc")); // Non-derived dialog example - wxXmlResource::Get()->Load("rc/basicdlg.xrc"); + wxXmlResource::Get()->Load(wxT("rc/basicdlg.xrc")); // Derived dialog example - wxXmlResource::Get()->Load("rc/derivdlg.xrc"); + wxXmlResource::Get()->Load(wxT("rc/derivdlg.xrc")); // Controls property example - wxXmlResource::Get()->Load("rc/controls.xrc"); + wxXmlResource::Get()->Load(wxT("rc/controls.xrc")); // Frame example - wxXmlResource::Get()->Load("rc/frame.xrc"); + wxXmlResource::Get()->Load(wxT("rc/frame.xrc")); // Uncentered example - wxXmlResource::Get()->Load("rc/uncenter.xrc"); + wxXmlResource::Get()->Load(wxT("rc/uncenter.xrc")); // Custom class example - wxXmlResource::Get()->Load("rc/custclas.xrc"); + wxXmlResource::Get()->Load(wxT("rc/custclas.xrc")); // wxArtProvider example - wxXmlResource::Get()->Load("rc/artprov.xrc"); + wxXmlResource::Get()->Load(wxT("rc/artprov.xrc")); // Platform property example - wxXmlResource::Get()->Load("rc/platform.xrc"); + wxXmlResource::Get()->Load(wxT("rc/platform.xrc")); // Variable expansion example - wxXmlResource::Get()->Load("rc/variable.xrc"); + wxXmlResource::Get()->Load(wxT("rc/variable.xrc")); // Make an instance of your derived frame. Passing NULL (the default value // of MyFrame's constructor is NULL) as the frame doesn't have a frame diff --git a/setup.h.in b/setup.h.in index 071a63dbc0..c238900902 100644 --- a/setup.h.in +++ b/setup.h.in @@ -83,6 +83,7 @@ #undef __FREEBSD__ #undef __DARWIN__ #undef __NETBSD__ +#undef __OPENBSD__ #undef __VMS__ #undef __ULTRIX__ #undef __DATA_GENERAL__ @@ -880,6 +881,9 @@ /* The type of 3rd argument to getsockname() - usually size_t or int */ #undef SOCKLEN_T +/* The type of statvfs(2) argument */ +#undef WX_STATFS_T + /* The signal handler prototype */ #undef wxTYPE_SA_HANDLER @@ -890,6 +894,9 @@ /* struct tm doesn't always have the tm_gmtoff field, define this if it does */ #undef WX_GMTOFF_IN_TM +/* Define if you have poll(2) function */ +#undef HAVE_POLL + /* Define if you have pw_gecos field in struct passwd */ #undef HAVE_PW_GECOS diff --git a/setup.h_vms b/setup.h_vms index 9b4a173c66..9a25d2aef8 100644 --- a/setup.h_vms +++ b/setup.h_vms @@ -94,6 +94,7 @@ #undef __NETBSD__ #undef __BSD__ #undef __FREEBSD__ +#undef __OPENBSD__ #define __VMS__ #undef __ULTRIX__ #undef __DATA_GENERAL__ @@ -914,6 +915,9 @@ /* struct tm doesn't always have the tm_gmtoff field, define this if it does */ #define WX_GMTOFF_IN_TM +/* Define if you have poll(2) function */ +#define HAVE_POLL 1 + /* Define if you have pw_gecos field in struct passwd */ #undef HAVE_PW_GECOS diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index cfd1d3df14..32c2fe5e00 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -446,8 +446,23 @@ bool wxAppBase::CheckBuildOptions(const wxBuildOptions& opts) if ( !(wxCMP(isDebug) && wxCMP(verMaj) && wxCMP(verMin)) ) { - wxLogFatalError(_T("Mismatch between the program and library build ") - _T("versions detected.")); + wxString msg; + wxString libDebug, progDebug; + + if (isDebug) + libDebug = wxT("debug"); + else + libDebug = wxT("no debug"); + + if (opts.m_isDebug) + progDebug = wxT("debug"); + else + progDebug = wxT("no debug"); + + msg.Printf(_T("Mismatch between the program and library build versions detected.\nThe library used %d.%d (%s), and your program used %d.%d (%s)."), + verMaj, verMin, libDebug.c_str(), opts.m_verMaj, opts.m_verMin, progDebug.c_str()); + + wxLogFatalError(msg); // normally wxLogFatalError doesn't return return FALSE; diff --git a/src/common/artprov.cpp b/src/common/artprov.cpp index 64b87d781e..194219d32d 100644 --- a/src/common/artprov.cpp +++ b/src/common/artprov.cpp @@ -207,8 +207,15 @@ wxArtProviderCache *wxArtProvider::sm_cache = NULL; class wxArtProviderModule: public wxModule { public: - bool OnInit() { return TRUE; } - void OnExit() { wxArtProvider::CleanUpProviders(); } + bool OnInit() + { + wxArtProvider::InitStdProvider(); + return TRUE; + } + void OnExit() + { + wxArtProvider::CleanUpProviders(); + } DECLARE_DYNAMIC_CLASS(wxArtProviderModule) }; diff --git a/src/common/artstd.cpp b/src/common/artstd.cpp index 9a8e4f53eb..31b4355928 100644 --- a/src/common/artstd.cpp +++ b/src/common/artstd.cpp @@ -27,7 +27,6 @@ #endif #include "wx/artprov.h" -#include "wx/module.h" // For the purposes of forcing this module to link char g_ArtProviderModule = 0; @@ -93,23 +92,20 @@ protected: } // ---------------------------------------------------------------------------- -// wxDefaultArtProviderModule +// wxArtProvider::InitStdProvider // ---------------------------------------------------------------------------- -class wxDefaultArtProviderModule: public wxModule +/*static*/ void wxArtProvider::InitStdProvider() { -public: - bool OnInit() - { - wxArtProvider::PushProvider(new wxDefaultArtProvider); - return TRUE; - } - void OnExit() {} + // NB: A few notes about this function: + // (1) it is in artstd.cpp and not in artprov.cpp on purpose. I wanted + // to avoid declaring wxDefaultArtProvider in any public header as + // it is only an implementation detail + // (2) other default art providers (e.g. GTK one) should NOT be added + // here. Instead, add them in port-specific initialialization code - DECLARE_DYNAMIC_CLASS(wxDefaultArtProviderModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxDefaultArtProviderModule, wxModule) + wxArtProvider::PushProvider(new wxDefaultArtProvider); +} // ---------------------------------------------------------------------------- diff --git a/src/common/cmdline.cpp b/src/common/cmdline.cpp index 9697a6d3ac..6a21925fe7 100644 --- a/src/common/cmdline.cpp +++ b/src/common/cmdline.cpp @@ -86,6 +86,7 @@ struct wxCmdLineOption GetLongOptionName(lng).Len() == lng.Len(), wxT("Long option contains invalid characters") ); + kind = k; @@ -561,7 +562,7 @@ int wxCmdLineParser::Parse(bool showUsage) optInd = m_data->FindOptionByLongName(name); if ( optInd == wxNOT_FOUND ) { - errorMsg << wxString::Format(_("Unknown long option '%s'"), name.c_str()) << "\n"; + errorMsg << wxString::Format(_("Unknown long option '%s'"), name.c_str()) << wxT("\n"); } } else @@ -570,7 +571,7 @@ int wxCmdLineParser::Parse(bool showUsage) // Print the argument including leading "--" name.Prepend( wxT("--") ); - errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str()) << "\n"; + errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str()) << wxT("\n"); } } @@ -591,7 +592,7 @@ int wxCmdLineParser::Parse(bool showUsage) { // we couldn't find a valid option name in the // beginning of this string - errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str()) << "\n"; + errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str()) << wxT("\n"); break; } @@ -663,7 +664,7 @@ int wxCmdLineParser::Parse(bool showUsage) if ( *p++ != _T('=') ) { - errorMsg << wxString::Format(_("Option '%s' requires a value, '=' expected."), name.c_str()) << "\n"; + errorMsg << wxString::Format(_("Option '%s' requires a value, '=' expected."), name.c_str()) << wxT("\n"); ok = FALSE; } @@ -684,7 +685,7 @@ int wxCmdLineParser::Parse(bool showUsage) { // ... but there is none errorMsg << wxString::Format(_("Option '%s' requires a value."), - name.c_str()) << "\n"; + name.c_str()) << wxT("\n"); ok = FALSE; } @@ -701,7 +702,7 @@ int wxCmdLineParser::Parse(bool showUsage) if ( opt.flags & wxCMD_LINE_NEEDS_SEPARATOR ) { errorMsg << wxString::Format(_("Separator expected after the option '%s'."), - name.c_str()) << "\n"; + name.c_str()) << wxT("\n"); ok = FALSE; } @@ -731,7 +732,7 @@ int wxCmdLineParser::Parse(bool showUsage) else { errorMsg << wxString::Format(_("'%s' is not a correct numeric value for option '%s'."), - value.c_str(), name.c_str()) << "\n"; + value.c_str(), name.c_str()) << wxT("\n"); ok = FALSE; } @@ -745,7 +746,7 @@ int wxCmdLineParser::Parse(bool showUsage) if ( !res || *res ) { errorMsg << wxString::Format(_("Option '%s': '%s' cannot be converted to a date."), - name.c_str(), value.c_str()) << "\n"; + name.c_str(), value.c_str()) << wxT("\n"); ok = FALSE; } @@ -785,7 +786,7 @@ int wxCmdLineParser::Parse(bool showUsage) } else { - errorMsg << wxString::Format(_("Unexpected parameter '%s'"), arg.c_str()) << "\n"; + errorMsg << wxString::Format(_("Unexpected parameter '%s'"), arg.c_str()) << wxT("\n"); ok = FALSE; } @@ -822,7 +823,7 @@ int wxCmdLineParser::Parse(bool showUsage) } errorMsg << wxString::Format(_("The value for the option '%s' must be specified."), - optName.c_str()) << "\n"; + optName.c_str()) << wxT("\n"); ok = FALSE; } @@ -843,7 +844,7 @@ int wxCmdLineParser::Parse(bool showUsage) if ( !(param.flags & wxCMD_LINE_PARAM_OPTIONAL) ) { errorMsg << wxString::Format(_("The required parameter '%s' was not specified."), - param.description.c_str()) << "\n"; + param.description.c_str()) << wxT("\n"); ok = FALSE; } diff --git a/src/common/cmdproc.cpp b/src/common/cmdproc.cpp index 7945642565..3dbefff13f 100644 --- a/src/common/cmdproc.cpp +++ b/src/common/cmdproc.cpp @@ -220,72 +220,82 @@ void wxCommandProcessor::Initialize() SetMenuStrings(); } -static void wxSetMenuLabel(wxMenu* menu, int id, const wxString& label) -{ - menu->SetLabel(id, label); -} - void wxCommandProcessor::SetMenuStrings() { #if wxUSE_MENUS if (m_commandEditMenu) { - wxString buf; - if (m_currentCommand) + wxString undoLabel = GetUndoMenuLabel(); + wxString redoLabel = GetRedoMenuLabel(); + + m_commandEditMenu->SetLabel(wxID_UNDO, undoLabel); + m_commandEditMenu->Enable(wxID_UNDO, CanUndo()); + + m_commandEditMenu->SetLabel(wxID_REDO, redoLabel); + m_commandEditMenu->Enable(wxID_REDO, CanRedo()); + } +#endif // wxUSE_MENUS +} + +// Gets the current Undo menu label. +wxString wxCommandProcessor::GetUndoMenuLabel() const +{ + wxString buf; + if (m_currentCommand) + { + wxCommand *command = (wxCommand *)m_currentCommand->Data(); + wxString commandName(command->GetName()); + if (commandName == wxT("")) commandName = _("Unnamed command"); + bool canUndo = command->CanUndo(); + if (canUndo) + buf = wxString(_("&Undo ")) + commandName + m_undoAccelerator; + else + buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator; + } + else + { + buf = _("&Undo") + m_undoAccelerator; + } + + return buf; +} + +// Gets the current Undo menu label. +wxString wxCommandProcessor::GetRedoMenuLabel() const +{ + wxString buf; + if (m_currentCommand) + { + // We can redo, if we're not at the end of the history. + if (m_currentCommand->Next()) { - wxCommand *command = (wxCommand *)m_currentCommand->Data(); - wxString commandName(command->GetName()); - if (commandName == wxT("")) commandName = _("Unnamed command"); - bool canUndo = command->CanUndo(); - if (canUndo) - buf = wxString(_("&Undo ")) + commandName + m_undoAccelerator; - else - buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator; - - wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, buf); - - m_commandEditMenu->Enable(wxID_UNDO, canUndo); - - // We can redo, if we're not at the end of the history. - if (m_currentCommand->Next()) - { - wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data(); - wxString redoCommandName(redoCommand->GetName()); - if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; - wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf); - m_commandEditMenu->Enable(wxID_REDO, TRUE); - } - else - { - wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); - m_commandEditMenu->Enable(wxID_REDO, FALSE); - } + wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data(); + wxString redoCommandName(redoCommand->GetName()); + if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); + buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; } else { - wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, _("&Undo") + m_undoAccelerator); - m_commandEditMenu->Enable(wxID_UNDO, FALSE); - - if (m_commands.Number() == 0) - { - wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); - m_commandEditMenu->Enable(wxID_REDO, FALSE); - } - else - { - // currentCommand is NULL but there are commands: this means that - // we've undone to the start of the list, but can redo the first. - wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data(); - wxString redoCommandName(redoCommand->GetName()); - if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; - wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf); - m_commandEditMenu->Enable(wxID_REDO, TRUE); - } + buf = _("&Redo") + m_redoAccelerator; } } -#endif // wxUSE_MENUS + else + { + if (m_commands.Number() == 0) + { + buf = _("&Redo") + m_redoAccelerator; + } + else + { + // currentCommand is NULL but there are commands: this means that + // we've undone to the start of the list, but can redo the first. + wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data(); + wxString redoCommandName(redoCommand->GetName()); + if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); + buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; + } + } + return buf; } void wxCommandProcessor::ClearCommands() diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 3eabda7f50..9d78f6b9e5 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -195,37 +195,38 @@ wxPrintData::wxPrintData() #if TARGET_CARBON m_macPageFormat = kPMNoPageFormat; m_macPrintSettings = kPMNoPrintSettings; + m_macPrintSession = kPMNoReference ; #if PM_USE_SESSION_APIS - PMPrintSession macPrintSession = kPMNoReference; OSStatus err; + + err = PMCreateSession((PMPrintSession *)&m_macPrintSession) ; - err = ::UMAPrOpen(&macPrintSession) ; if ( err == noErr ) - { + { err = PMCreatePageFormat((PMPageFormat *)&m_macPageFormat); - + // Note that PMPageFormat is not session-specific, but calling // PMSessionDefaultPageFormat assigns values specific to the printer // associated with the current printing session. if ((err == noErr) && (m_macPageFormat != kPMNoPageFormat)) { - err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession, + err = PMSessionDefaultPageFormat((PMPrintSession)m_macPrintSession, (PMPageFormat)m_macPageFormat); } - + err = PMCreatePrintSettings((PMPrintSettings *)&m_macPrintSettings); - + // Note that PMPrintSettings is not session-specific, but calling // PMSessionDefaultPrintSettings assigns values specific to the printer // associated with the current printing session. if ((err == noErr) && (m_macPrintSettings != kPMNoPrintSettings)) { - err = PMSessionDefaultPrintSettings((PMPrintSession)macPrintSession, + err = PMSessionDefaultPrintSettings((PMPrintSession)m_macPrintSession, (PMPrintSettings)m_macPrintSettings); } } - ::UMAPrClose(&macPrintSession) ; + #endif #else m_macPrintSettings = (THPrint) NewHandleClear( sizeof( TPrint ) ); @@ -247,7 +248,7 @@ wxPrintData::wxPrintData() m_printCollate = FALSE; // New, 24/3/99 - m_printerName = ""; + m_printerName = wxT(""); m_colour = TRUE; m_duplexMode = wxDUPLEX_SIMPLEX; m_printQuality = wxPRINT_QUALITY_HIGH; @@ -292,6 +293,7 @@ wxPrintData::wxPrintData(const wxPrintData& printData) #if TARGET_CARBON m_macPageFormat = kPMNoPageFormat; m_macPrintSettings = kPMNoPrintSettings; + m_macPrintSession = kPMNoReference ; #else m_macPrintSettings = NULL; #endif @@ -329,7 +331,16 @@ wxPrintData::~wxPrintData() #endif m_macPrintSettings = kPMNoPrintSettings; } - + + if ( m_macPrintSession != kPMNoReference ) + { + #if PM_USE_SESSION_APIS + (void)PMRelease(m_macPrintSession); + #else + (void)PMDisposePrintSession(m_macPrintSession); + #endif + m_macPrintSession = kPMNoReference; + } #else wxASSERT( m_macPrintSettings ); // we should perhaps delete @@ -632,17 +643,7 @@ void wxPrintData::ConvertFromNative() if (devMode->dmDeviceName[0] != 0) { - // TODO: make this Unicode compatible - char buf[32]; - int i = 0; - while (devMode->dmDeviceName[i] != 0) - { - buf[i] = devMode->dmDeviceName[i]; - i ++; - } - buf[i] = 0; - - m_printerName = buf; + m_printerName = devMode->dmDeviceName; } //// Colour @@ -817,6 +818,26 @@ void wxPrintData::operator=(const wxPrintData& data) { #ifdef __WXMAC__ #if TARGET_CARBON + if ( m_macPrintSettings != kPMNoPrintSettings ) + { + PMRelease( m_macPrintSettings ) ; + m_macPrintSettings = kPMNoPrintSettings ; + } + if ( data.m_macPrintSettings != kPMNoPrintSettings ) + { + m_macPrintSettings = data.m_macPrintSettings ; + PMRetain( m_macPrintSettings ) ; + } + if ( m_macPageFormat != kPMNoPageFormat ) + { + PMRelease( m_macPageFormat ) ; + m_macPageFormat = kPMNoPageFormat ; + } + if ( data.m_macPageFormat != kPMNoPageFormat ) + { + m_macPageFormat = data.m_macPageFormat ; + PMRetain( m_macPageFormat ) ; + } #else m_macPrintSettings = data.m_macPrintSettings; HandToHand( (Handle*) &m_macPrintSettings ); @@ -1455,6 +1476,20 @@ void wxPageSetupDialogData::ConvertFromNative() m_printData.ConvertFromNative (); #if TARGET_CARBON + PMRect rPaper; + + OSStatus err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper); + if ( err == noErr ) + { + m_paperSize.x = int(( rPaper.right - rPaper.left ) * pt2mm); + m_paperSize.y = int(( rPaper.bottom - rPaper.top ) * pt2mm); + + m_minMarginTopLeft.x = int( ( - rPaper.left ) * pt2mm ); + m_minMarginTopLeft.y = int( ( - rPaper.top ) * pt2mm ); + +// m_minMarginBottomRight.x = ((double) rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.right ) * pt2mm; +// m_minMarginBottomRight.y = ((double)(**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.bottom ) * pt2mm; + } #else m_paperSize.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ) * pt2mm; m_paperSize.y = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ) * pt2mm; diff --git a/src/common/config.cpp b/src/common/config.cpp index 286e2123aa..014c2ab297 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -68,7 +68,8 @@ wxConfigBase::wxConfigBase(const wxString& appName, long style) : m_appName(appName), m_vendorName(vendorName), m_style(style) { - m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; + m_bExpandEnvVars = TRUE; + m_bRecordDefaults = FALSE; } wxConfigBase::~wxConfigBase() @@ -110,7 +111,12 @@ wxConfigBase *wxConfigBase::Create() { \ wxCHECK_MSG( val, FALSE, _T("wxConfig::Read(): NULL parameter") ); \ \ - return DoRead##name(key, val); \ + if ( !DoRead##name(key, val) ) \ + return FALSE; \ + \ + *val = extra(*val); \ + \ + return TRUE; \ } \ \ bool wxConfigBase::Read(const wxString& key, \ @@ -119,17 +125,20 @@ wxConfigBase *wxConfigBase::Create() { \ wxCHECK_MSG( val, FALSE, _T("wxConfig::Read(): NULL parameter") ); \ \ - if ( DoRead##name(key, val) ) \ - return TRUE; \ - \ - if ( IsRecordingDefaults() ) \ + bool read = DoRead##name(key, val); \ + if ( !read ) \ { \ - ((wxConfigBase *)this)->DoWrite##name(key, defVal); \ + if ( IsRecordingDefaults() ) \ + { \ + ((wxConfigBase *)this)->DoWrite##name(key, defVal); \ + } \ + \ + *val = defVal; \ } \ \ - *val = extra(defVal); \ + *val = extra(*val); \ \ - return FALSE; \ + return read; \ } @@ -278,10 +287,11 @@ wxString wxExpandEnvVars(const wxString& str) { Bracket_None, Bracket_Normal = ')', - Bracket_Curly = '}' + Bracket_Curly = '}', #ifdef __WXMSW__ - ,Bracket_Windows = '%' // yeah, Windows people are a bit strange ;-) + Bracket_Windows = '%', // yeah, Windows people are a bit strange ;-) #endif + Bracket_Max }; size_t m; @@ -342,8 +352,16 @@ wxString wxExpandEnvVars(const wxString& str) // check the closing bracket if ( bracket != Bracket_None ) { if ( m == str.Len() || str[m] != (char)bracket ) { - wxLogWarning(_("Environment variables expansion failed: missing '%c' at position %d in '%s'."), - (char)bracket, m + 1, str.c_str()); + // under MSW it's common to have '%' characters in the registry + // and it's annoying to have warnings about them each time, so + // ignroe them silently if they are not used for env vars + // + // under Unix, OTOH, this warning could be useful for the user to + // understand why isn't the variable expanded as intended + #ifndef __WXMSW__ + wxLogWarning(_("Environment variables expansion failed: missing '%c' at position %d in '%s'."), + (char)bracket, m + 1, str.c_str()); + #endif // __WXMSW__ } else { // skip closing bracket unless the variables wasn't expanded @@ -375,8 +393,6 @@ wxString wxExpandEnvVars(const wxString& str) } // this function is used to properly interpret '..' in path -/// separates group and entry names (probably shouldn't be changed) - void wxSplitPath(wxArrayString& aParts, const wxChar *sz) { aParts.Empty(); diff --git a/src/common/containr.cpp b/src/common/containr.cpp index daf414ce55..5b5df9ea92 100644 --- a/src/common/containr.cpp +++ b/src/common/containr.cpp @@ -247,10 +247,12 @@ void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event ) event.SetEventObject(m_winParent); if ( !child->GetEventHandler()->ProcessEvent(event) ) { + // set it first in case SetFocusFromKbd() results in focus + // change too + m_winLastFocused = child; + // everything is simple: just give focus to it child->SetFocusFromKbd(); - - m_winLastFocused = child; } //else: the child manages its focus itself @@ -288,39 +290,18 @@ bool wxControlContainer::DoSetFocus() wxLogTrace(_T("focus"), _T("SetFocus on wxPanel 0x%08lx."), (unsigned long)m_winParent->GetHandle()); - // If the panel gets the focus *by way of getting it set directly* - // we move the focus to the first window that can get it. + // when the panel gets the focus we move the focus to either the last + // window that had the focus or the first one that can get it unless the + // focus had been already set to some other child - // VZ: no, we set the focus to the last window too. I don't understand why - // should we make this distinction: if an app wants to set focus to - // some precise control, it may always do it directly, but if we don't - // use m_winLastFocused here, the focus won't be set correctly after a - // notebook page change nor after frame activation under MSW (it calls - // SetFocus too) - // - // RR: yes, when I the tab key to navigate in a panel with some controls and - // a notebook and the focus jumps to the notebook (typically coming from - // a button at the top) the notebook should focus the first child in the - // current notebook page, not the last one which would otherwise get the - // focus if you used the tab key to navigate from the current notebook - // page to button at the bottom. See every page in the controls sample. - // - // VZ: ok, but this still doesn't (at least I don't see how it can) take - // care of first/last child problem: i.e. if Shift-TAB is pressed in a - // situation like above, the focus should be given to the last child, - // not the first one (and not to the last focused one neither) - I - // think my addition to OnNavigationKey() above takes care of it. - // Keeping #ifdef __WXGTK__ for now, but please try removing it and see - // what happens. - // - // RR: Removed for now. Let's see what happens.. - - // if our child already has focus, don't take it away from it wxWindow *win = wxWindow::FindFocus(); while ( win ) { if ( win == m_winParent ) + { + // our child already has focus, don't take it away from it return TRUE; + } if ( win->IsTopLevel() ) { @@ -341,10 +322,7 @@ void wxControlContainer::HandleOnFocus(wxFocusEvent& event) (unsigned long)m_winParent->GetHandle(), m_winParent->GetName().c_str() ); - // If we panel got the focus *by way of getting clicked on* - // we move the focus to either the last window that had the - // focus or the first one that can get it. - (void)SetFocusToChild(); + DoSetFocus(); event.Skip(); } diff --git a/src/common/datetime.cpp b/src/common/datetime.cpp index 1f3ba66047..4c91d36c8b 100644 --- a/src/common/datetime.cpp +++ b/src/common/datetime.cpp @@ -258,7 +258,8 @@ wxDateTime::wxDateTime_t GetNumOfDaysInMonth(int year, wxDateTime::Month month) return daysInMonth[wxDateTime::IsLeapYear(year)][month]; } -// ensure that the timezone variable is set by calling localtime +// returns the time zone in the C sense, i.e. the difference UTC - local +// (in seconds) static int GetTimeZone() { // set to TRUE when the timezone is set @@ -266,20 +267,25 @@ static int GetTimeZone() #ifdef WX_GMTOFF_IN_TM static long gmtoffset = LONG_MAX; // invalid timezone #endif - + wxCRIT_SECT_LOCKER(lock, gs_critsectTimezone); + // ensure that the timezone variable is set by calling localtime if ( !s_timezoneSet ) { // just call localtime() instead of figuring out whether this system // supports tzset(), _tzset() or something else - time_t t = 0; + time_t t = 0; struct tm *tm; tm = localtime(&t); s_timezoneSet = TRUE; + #ifdef WX_GMTOFF_IN_TM - gmtoffset = tm->tm_gmtoff; + // note that GMT offset is the opposite of time zone and so to return + // consistent results in both WX_GMTOFF_IN_TM and !WX_GMTOFF_IN_TM + // cases we have to negate it + gmtoffset = -tm->tm_gmtoff; #endif } @@ -1247,6 +1253,82 @@ wxDateTime& wxDateTime::ResetTime() return *this; } +// ---------------------------------------------------------------------------- +// DOS Date and Time Format functions +// ---------------------------------------------------------------------------- +// the dos date and time value is an unsigned 32 bit value in the format: +// YYYYYYYMMMMDDDDDhhhhhmmmmmmsssss +// +// Y = year offset from 1980 (0-127) +// M = month (1-12) +// D = day of month (1-31) +// h = hour (0-23) +// m = minute (0-59) +// s = bisecond (0-29) each bisecond indicates two seconds +// ---------------------------------------------------------------------------- + +wxDateTime& wxDateTime::SetFromDOS(unsigned long ddt) +{ + struct tm tm; + + long year = ddt & 0xFE000000; + year >>= 25; + year += 80; + tm.tm_year = year; + + long month = ddt & 0x1E00000; + month >>= 21; + month -= 1; + tm.tm_mon = month; + + long day = ddt & 0x1F0000; + day >>= 16; + tm.tm_mday = day; + + long hour = ddt & 0xF800; + hour >>= 11; + tm.tm_hour = hour; + + long minute = ddt & 0x7E0; + minute >>= 5; + tm.tm_min = minute; + + long second = ddt & 0x1F; + tm.tm_sec = second * 2; + + return Set(mktime(&tm)); +} + +unsigned long wxDateTime::GetAsDOS() const +{ + unsigned long ddt; + time_t ticks = GetTicks(); + struct tm *tm = localtime(&ticks); + + long year = tm->tm_year; + year -= 80; + year <<= 25; + + long month = tm->tm_mon; + month += 1; + month <<= 21; + + long day = tm->tm_mday; + day <<= 16; + + long hour = tm->tm_hour; + hour <<= 11; + + long minute = tm->tm_min; + minute <<= 5; + + long second = tm->tm_sec; + second /= 2; + + ddt = year | month | day | hour | minute | second; + return ddt; +} + // ---------------------------------------------------------------------------- // time_t <-> broken down time conversions // ---------------------------------------------------------------------------- @@ -1494,13 +1576,18 @@ wxDateTime& wxDateTime::Add(const wxDateSpan& diff) // Weekday and monthday stuff // ---------------------------------------------------------------------------- -bool wxDateTime::SetToTheWeek(wxDateTime_t numWeek, WeekDay weekday) +bool wxDateTime::SetToTheWeek(wxDateTime_t numWeek, + WeekDay weekday, + WeekFlags flags) { + wxASSERT_MSG( numWeek > 0, + _T("invalid week number: weeks are counted from 1") ); + int year = GetYear(); // Jan 4 always lies in the 1st week of the year Set(4, Jan, year); - SetToWeekDayInSameWeek(weekday) += wxDateSpan::Weeks(numWeek); + SetToWeekDayInSameWeek(weekday, flags) += wxDateSpan::Weeks(numWeek - 1); if ( GetYear() != year ) { @@ -1523,17 +1610,34 @@ wxDateTime& wxDateTime::SetToLastMonthDay(Month month, return Set(GetNumOfDaysInMonth(year, month), month, year); } -wxDateTime& wxDateTime::SetToWeekDayInSameWeek(WeekDay weekday) +wxDateTime& wxDateTime::SetToWeekDayInSameWeek(WeekDay weekday, WeekFlags flags) { wxDATETIME_CHECK( weekday != Inv_WeekDay, _T("invalid weekday") ); - WeekDay wdayThis = GetWeekDay(); + int wdayThis = GetWeekDay(); if ( weekday == wdayThis ) { // nothing to do return *this; } - else if ( weekday < wdayThis ) + + if ( flags == Default_First ) + { + flags = GetCountry() == USA ? Sunday_First : Monday_First; + } + + // the logic below based on comparing weekday and wdayThis works if Sun (0) + // is the first day in the week, but breaks down for Monday_First case so + // we adjust the week days in this case + if( flags == Monday_First ) + { + if ( wdayThis == Sun ) + wdayThis += 7; + } + //else: Sunday_First, nothing to do + + // go forward or back in time to the day we want + if ( weekday < wdayThis ) { return Subtract(wxDateSpan::Days(wdayThis - weekday)); } diff --git a/src/common/datstrm.cpp b/src/common/datstrm.cpp index 4b37033048..88cdcd4049 100644 --- a/src/common/datstrm.cpp +++ b/src/common/datstrm.cpp @@ -113,14 +113,14 @@ wxString wxDataInputStream::ReadString() char *tmp = new char[len + 1]; m_input->Read(tmp, len); tmp[len] = 0; - wxString s(tmp, m_conv); + wxString ret( (const wxChar*) m_conv.cMB2WX(tmp) ); delete[] tmp; #else - wxString s; - m_input->Read(s.GetWriteBuf(len), len); - s.UngetWriteBuf(); + wxString ret; + m_input->Read( ret.GetWriteBuf(len), len); + ret.UngetWriteBuf(); #endif - return s; + return ret; } else return wxEmptyString; diff --git a/src/common/db.cpp b/src/common/db.cpp index 085e6cad5c..08c40f003d 100644 --- a/src/common/db.cpp +++ b/src/common/db.cpp @@ -3576,8 +3576,16 @@ bool wxDb::ModifyColumn(const wxString &tableName, const wxString &columnName, } // create the SQL statement - sqlStmt.Printf(wxT("ALTER TABLE \"%s\" \"%s\" \"%s\" %s"), tableName.c_str(), alterSlashModify.c_str(), + if ( Dbms() == dbmsMY_SQL ) + { + sqlStmt.Printf(wxT("ALTER TABLE %s %s %s %s"), tableName.c_str(), alterSlashModify.c_str(), columnName.c_str(), dataTypeName.c_str()); + } + else + { + sqlStmt.Printf(wxT("ALTER TABLE \"%s\" \"%s\" \"%s\" %s"), tableName.c_str(), alterSlashModify.c_str(), + columnName.c_str(), dataTypeName.c_str()); + } // For varchars only, append the size of the column if (dataType == DB_DATA_TYPE_VARCHAR && @@ -3750,7 +3758,7 @@ int WXDLLEXPORT wxDbConnectionsInUse(void) /********** wxDbLogExtendedErrorMsg() **********/ // DEBUG ONLY function -const wxChar WXDLLEXPORT *wxDbLogExtendedErrorMsg(const wxChar *userText, +const wxChar* WXDLLEXPORT wxDbLogExtendedErrorMsg(const wxChar *userText, wxDb *pDb, const wxChar *ErrFile, int ErrLine) diff --git a/src/common/dbtable.cpp b/src/common/dbtable.cpp index 03d947568a..384310ce8c 100644 --- a/src/common/dbtable.cpp +++ b/src/common/dbtable.cpp @@ -1651,6 +1651,26 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol sqlStmt += pDb->SQLColumnName(pIdxDefs[i].ColName); // sqlStmt += pIdxDefs[i].ColName; + // MySQL requires a key length on VARCHAR keys + if ( pDb->Dbms() == dbmsMY_SQL ) + { + // Find the details on this column + int j; + for ( j = 0; j < noCols; ++j ) + { + if ( wxStrcmp( pIdxDefs[i].ColName, colDefs[j].ColName ) == 0 ) + { + break; + } + } + if ( colDefs[j].DbDataType == DB_DATA_TYPE_VARCHAR) + { + wxString s; + s.Printf(wxT("(%d)"), colDefs[i].SzDataObj); + sqlStmt += s; + } + } + // Postgres and SQL Server 7 do not support the ASC/DESC keywords for index columns if (!((pDb->Dbms() == dbmsMS_SQL_SERVER) && (strncmp(pDb->dbInf.dbmsVer,"07",2)==0)) && !(pDb->Dbms() == dbmsPOSTGRES)) @@ -2586,8 +2606,8 @@ wxVariant wxDbTable::GetCol(const int colNo) const void csstrncpyt(char *s, const char *t, int n) { - while ((*s++ = *t++) && --n) - {}; + while ( (*s++ = *t++) != '\0' && --n ) + ; *s = '\0'; } diff --git a/src/common/dlgcmn.cpp b/src/common/dlgcmn.cpp index d874e1a2fe..e1b894b63c 100644 --- a/src/common/dlgcmn.cpp +++ b/src/common/dlgcmn.cpp @@ -40,7 +40,6 @@ #include "wx/containr.h" #endif - //-------------------------------------------------------------------------- // wxDialogBase //-------------------------------------------------------------------------- @@ -72,6 +71,20 @@ void wxDialogBase::Init() wxSizer *wxDialogBase::CreateTextSizer( const wxString& message ) { + bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + + wxString text = message; + + // I admit that this is complete bogus, but it makes + // message boxes work for pda screens temporarily.. + int max_width = -1; + if (is_pda) + { + max_width = wxSystemSettings::GetMetric( wxSYS_SCREEN_X ) - 25; + text += wxT('\n'); + } + + wxBoxSizer *box = new wxBoxSizer( wxVERTICAL ); // get line height for empty lines @@ -79,18 +92,19 @@ wxSizer *wxDialogBase::CreateTextSizer( const wxString& message ) wxFont font( GetFont() ); if (!font.Ok()) font = *wxSWISS_FONT; - GetTextExtent(_T("H"), (int*)NULL, &y, (int*)NULL, (int*)NULL, &font); + GetTextExtent( wxT("H"), (int*)NULL, &y, (int*)NULL, (int*)NULL, &font); + size_t last_space = 0; wxString line; - for ( size_t pos = 0; pos < message.length(); pos++ ) + for ( size_t pos = 0; pos < text.length(); pos++ ) { - switch ( message[pos] ) + switch ( text[pos] ) { - case _T('\n'): + case wxT('\n'): if (!line.IsEmpty()) { - wxStaticText *s1 = new wxStaticText( this, -1, line ); - box->Add( s1 ); + wxStaticText *s = new wxStaticText( this, -1, line ); + box->Add( s ); line = wxT(""); } else @@ -99,17 +113,44 @@ wxSizer *wxDialogBase::CreateTextSizer( const wxString& message ) } break; - case _T('&'): + case wxT('&'): // this is used as accel mnemonic prefix in the wxWindows // controls but in the static messages created by // CreateTextSizer() (used by wxMessageBox, for example), we // don't want this special meaning, so we need to quote it - line += _T('&'); + line += wxT('&'); // fall through to add it normally too default: + if (text[pos] == wxT(' ')) + last_space = pos; + line += message[pos]; + + if (is_pda) + { + int width = 0; + GetTextExtent( line, &width, (int*)NULL, (int*)NULL, (int*)NULL, &font ); + + if (width > max_width) + { + // exception if there was no previous space + if (last_space == 0) + last_space = pos; + + int diff = pos-last_space; + int len = line.Len(); + line.Remove( len-diff, diff ); + + wxStaticText *s = new wxStaticText( this, -1, line ); + box->Add( s ); + + pos = last_space; + last_space = 0; + line = wxT(""); + } + } } } @@ -129,7 +170,29 @@ wxSizer *wxDialogBase::CreateTextSizer( const wxString& message ) wxSizer *wxDialogBase::CreateButtonSizer( long flags ) { - wxBoxSizer *box = new wxBoxSizer( wxHORIZONTAL ); + bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + + wxBoxSizer *box = NULL; + + // If we have a PDA screen, put yes/no button over + // all other buttons, otherwise on the left side. + if (is_pda) + box = new wxBoxSizer( wxVERTICAL ); + else + box = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer *inner_yes_no = NULL; + + // Only create sizer containing yes/no + // if it is actually required + if ( (flags & wxYES_NO) != 0 ) + { + inner_yes_no = new wxBoxSizer( wxHORIZONTAL ); + box->Add( inner_yes_no, 0, wxBOTTOM, 10 ); + } + + wxBoxSizer *inner_rest = new wxBoxSizer( wxHORIZONTAL ); + box->Add( inner_rest, 0, 0, 0 ); #if defined(__WXMSW__) || defined(__WXMAC__) static const int margin = 6; @@ -149,39 +212,39 @@ wxSizer *wxDialogBase::CreateButtonSizer( long flags ) if (flags & wxYES) { yes = new wxButton( this, wxID_YES, _("Yes"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); - box->Add( yes, 0, wxLEFT|wxRIGHT, margin ); + inner_yes_no->Add( yes, 0, wxLEFT|wxRIGHT, margin ); } if (flags & wxNO) { no = new wxButton( this, wxID_NO, _("No"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); - box->Add( no, 0, wxLEFT|wxRIGHT, margin ); + inner_yes_no->Add( no, 0, wxLEFT|wxRIGHT, margin ); } if (flags & wxOK) { ok = new wxButton( this, wxID_OK, _("OK"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); - box->Add( ok, 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( ok, 0, wxLEFT|wxRIGHT, margin ); } if (flags & wxFORWARD) - box->Add( new wxButton( this, wxID_FORWARD, _("Forward"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( new wxButton( this, wxID_FORWARD, _("Forward"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); if (flags & wxBACKWARD) - box->Add( new wxButton( this, wxID_BACKWARD, _("Backward"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( new wxButton( this, wxID_BACKWARD, _("Backward"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); if (flags & wxSETUP) - box->Add( new wxButton( this, wxID_SETUP, _("Setup"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( new wxButton( this, wxID_SETUP, _("Setup"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); if (flags & wxMORE) - box->Add( new wxButton( this, wxID_MORE, _("More..."),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( new wxButton( this, wxID_MORE, _("More..."),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); if (flags & wxHELP) - box->Add( new wxButton( this, wxID_HELP, _("Help"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( new wxButton( this, wxID_HELP, _("Help"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ), 0, wxLEFT|wxRIGHT, margin ); if (flags & wxCANCEL) { cancel = new wxButton( this, wxID_CANCEL, _("Cancel"),wxDefaultPosition,wxDefaultSize,wxCLIP_SIBLINGS ); - box->Add( cancel, 0, wxLEFT|wxRIGHT, margin ); + inner_rest->Add( cancel, 0, wxLEFT|wxRIGHT, margin ); } // choose the default button diff --git a/src/common/docview.cpp b/src/common/docview.cpp index d115d72349..50b2d7cd8c 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -43,6 +43,7 @@ #include "wx/log.h" #endif +#include "wx/ffile.h" #ifdef __WXGTK__ #include "wx/mdi.h" @@ -262,7 +263,7 @@ bool wxDocument::SaveAs() if (ext.IsEmpty() || ext == wxT("")) { - fileName += "."; + fileName += wxT("."); fileName += docTemplate->GetDefaultExtension(); } @@ -295,11 +296,11 @@ bool wxDocument::OnSaveDocument(const wxString& file) msgTitle = wxString(_("File error")); #if wxUSE_STD_IOSTREAM - wxSTD ofstream store(wxString(file.fn_str()).mb_str()); + wxSTD ofstream store(file.mb_str()); if (store.fail() || store.bad()) #else - wxFileOutputStream store(wxString(file.fn_str())); - if (store.LastError() != wxSTREAM_NOERROR) + wxFileOutputStream store(file); + if (store.GetLastError() != wxSTREAM_NO_ERROR) #endif { (void)wxMessageBox(_("Sorry, could not open this file for saving."), msgTitle, wxOK | wxICON_EXCLAMATION, @@ -332,11 +333,11 @@ bool wxDocument::OnOpenDocument(const wxString& file) msgTitle = wxString(_("File error")); #if wxUSE_STD_IOSTREAM - wxSTD ifstream store(wxString(file.fn_str()).mb_str()); + wxSTD ifstream store(file.mb_str()); if (store.fail() || store.bad()) #else - wxFileInputStream store(wxString(file.fn_str())); - if (store.LastError() != wxSTREAM_NOERROR) + wxFileInputStream store(file); + if (store.GetLastError() != wxSTREAM_NO_ERROR) #endif { (void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK|wxICON_EXCLAMATION, @@ -347,8 +348,8 @@ bool wxDocument::OnOpenDocument(const wxString& file) LoadObject(store); if ( !store && !store.eof() ) #else - int res = LoadObject(store).LastError(); - if ((res != wxSTREAM_NOERROR) && + int res = LoadObject(store).GetLastError(); + if ((res != wxSTREAM_NO_ERROR) && (res != wxSTREAM_EOF)) #endif { @@ -506,7 +507,8 @@ void wxDocument::UpdateAllViews(wxView *sender, wxObject *hint) while (node) { wxView *view = (wxView *)node->Data(); - view->OnUpdate(sender, hint); + if (view != sender) + view->OnUpdate(sender, hint); node = node->Next(); } } @@ -838,12 +840,12 @@ void wxDocManager::OnFileCloseAll(wxCommandEvent& WXUNUSED(event)) void wxDocManager::OnFileNew(wxCommandEvent& WXUNUSED(event)) { - CreateDocument(wxString(""), wxDOC_NEW); + CreateDocument( wxT(""), wxDOC_NEW ); } void wxDocManager::OnFileOpen(wxCommandEvent& WXUNUSED(event)) { - if ( !CreateDocument(wxString(""), 0) ) + if ( !CreateDocument( wxT(""), 0) ) { OnOpenFileFailure(); } @@ -1947,8 +1949,10 @@ void wxFileHistory::AddFileToHistory(const wxString& file) while (node) { wxMenu* menu = (wxMenu*) node->Data(); - if (m_fileHistoryN == 0) + if ( m_fileHistoryN == 0 && menu->GetMenuItemCount() ) + { menu->AppendSeparator(); + } menu->Append(wxID_FILE1+m_fileHistoryN, _("[EMPTY]")); node = node->Next(); } @@ -2084,7 +2088,7 @@ void wxFileHistory::Load(wxConfigBase& config) wxString buf; buf.Printf(wxT("file%d"), m_fileHistoryN+1); wxString historyFile; - while ((m_fileHistoryN <= m_fileMaxFiles) && config.Read(buf, &historyFile) && (historyFile != wxT(""))) + while ((m_fileHistoryN < m_fileMaxFiles) && config.Read(buf, &historyFile) && (historyFile != wxT(""))) { m_fileHistory[m_fileHistoryN] = copystring((const wxChar*) historyFile); m_fileHistoryN ++; @@ -2114,7 +2118,10 @@ void wxFileHistory::AddFilesToMenu() while (node) { wxMenu* menu = (wxMenu*) node->Data(); - menu->AppendSeparator(); + if (menu->GetMenuItemCount()) + { + menu->AppendSeparator(); + } int i; for (i = 0; i < m_fileHistoryN; i++) { @@ -2134,7 +2141,10 @@ void wxFileHistory::AddFilesToMenu(wxMenu* menu) { if (m_fileHistoryN > 0) { - menu->AppendSeparator(); + if (menu->GetMenuItemCount()) + { + menu->AppendSeparator(); + } int i; for (i = 0; i < m_fileHistoryN; i++) { @@ -2154,77 +2164,99 @@ void wxFileHistory::AddFilesToMenu(wxMenu* menu) // ---------------------------------------------------------------------------- #if wxUSE_STD_IOSTREAM + bool wxTransferFileToStream(const wxString& filename, wxSTD ostream& stream) { - FILE *fd1; - int ch; - - if ((fd1 = wxFopen (filename.fn_str(), _T("rb"))) == NULL) + wxFFile file(filename, "rb"); + if ( !file.IsOpened() ) return FALSE; - while ((ch = getc (fd1)) != EOF) - stream << (unsigned char)ch; + char buf[4096]; + + size_t nRead; + do + { + nRead = file.Read(buf, WXSIZEOF(buf)); + if ( file.Error() ) + return FALSE; + + stream.write(buf, nRead); + if ( !stream ) + return FALSE; + } + while ( !file.Eof() ); - fclose (fd1); return TRUE; } bool wxTransferStreamToFile(wxSTD istream& stream, const wxString& filename) { - FILE *fd1; - int ch; - - if ((fd1 = wxFopen (filename.fn_str(), _T("wb"))) == NULL) - { + wxFFile file(filename, "wb"); + if ( !file.IsOpened() ) return FALSE; - } - while (!stream.eof()) + char buf[4096]; + do { - ch = stream.get(); - if (!stream.eof()) - putc (ch, fd1); + stream.read(buf, WXSIZEOF(buf)); + if ( !stream.bad() ) // fail may be set on EOF, don't use operator!() + { + if ( !file.Write(buf, stream.gcount()) ) + return FALSE; + } } - fclose (fd1); + while ( !stream.eof() ); + return TRUE; } -#else + +#else // !wxUSE_STD_IOSTREAM + bool wxTransferFileToStream(const wxString& filename, wxOutputStream& stream) { - FILE *fd1; - int ch; - - if ((fd1 = wxFopen (filename, wxT("rb"))) == NULL) + wxFFile file(filename, "rb"); + if ( !file.IsOpened() ) return FALSE; - while ((ch = getc (fd1)) != EOF) - stream.PutC((char) ch); + char buf[4096]; + + size_t nRead; + do + { + nRead = file.Read(buf, WXSIZEOF(buf)); + if ( file.Error() ) + return FALSE; + + stream.Write(buf, nRead); + if ( !stream ) + return FALSE; + } + while ( !file.Eof() ); - fclose (fd1); return TRUE; } bool wxTransferStreamToFile(wxInputStream& stream, const wxString& filename) { - FILE *fd1; - char ch; - - if ((fd1 = wxFopen (filename, wxT("wb"))) == NULL) - { + wxFFile file(filename, "wb"); + if ( !file.IsOpened() ) return FALSE; - } - int len = stream.StreamSize(); - // TODO: is this the correct test for EOF? - while (stream.TellI() < (len - 1)) + char buf[4096]; + do { - ch = stream.GetC(); - putc (ch, fd1); + stream.Read(buf, WXSIZEOF(buf)); + + const size_t nRead = stream.LastRead(); + if ( !nRead || !file.Write(buf, nRead) ) + return FALSE; } - fclose (fd1); + while ( !stream.Eof() ); + return TRUE; } -#endif + +#endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM #endif // wxUSE_DOC_VIEW_ARCHITECTURE diff --git a/src/common/dosyacc.c b/src/common/dosyacc.c index a773cce6ef..14672306db 100644 --- a/src/common/dosyacc.c +++ b/src/common/dosyacc.c @@ -1,3 +1,11 @@ +#if defined(__WIN32__) || defined(__GNUWIN32__) +/* all Win32 compilers can handle C++ comments, and C++ comments + is the only C++ in setup.h */ +#include "wx/setup.h" +#endif + +#if !defined(wxUSE_PROLOGIO) || wxUSE_PROLOGIO + #ifndef lint static char yysccsid[] = "@(#)yaccpar 1.7 (Berkeley) 09/09/90"; #endif @@ -526,3 +534,5 @@ yyabort: yyaccept: return (0); } + +#endif /* wxUSE_PROLOGIO */ diff --git a/src/common/dynarray.cpp b/src/common/dynarray.cpp index 1b3a0353b9..25a80d3860 100644 --- a/src/common/dynarray.cpp +++ b/src/common/dynarray.cpp @@ -110,7 +110,7 @@ name& name::operator=(const name& src) \ void name::Grow(size_t nIncrement) \ { \ /* only do it if no more place */ \ - if( m_nCount == m_nSize ) { \ + if( (m_nCount == m_nSize) || ((m_nSize - m_nCount) < nIncrement) ) { \ if( m_nSize == 0 ) { \ /* was empty, determine initial size */ \ size_t size = WX_ARRAY_DEFAULT_INITIAL_SIZE; \ @@ -189,6 +189,7 @@ void name::Shrink() \ memcpy(pNew, m_pItems, m_nCount*sizeof(T)); \ delete [] m_pItems; \ m_pItems = pNew; \ + m_nSize = m_nCount; \ } \ } \ } \ @@ -253,6 +254,8 @@ int name::Index(T lItem, CMPFUNC fnCompare) const \ /* add item at the end */ \ void name::Add(T lItem, size_t nInsert) \ { \ + if (nInsert == 0) \ + return; \ Grow(nInsert); \ for (size_t i = 0; i < nInsert; i++) \ m_pItems[m_nCount++] = lItem; \ @@ -271,6 +274,8 @@ void name::Insert(T lItem, size_t nIndex, size_t nInsert) \ wxCHECK_RET( m_nCount <= m_nCount + nInsert, \ wxT("array size overflow in wxArray::Insert") ); \ \ + if (nInsert == 0) \ + return; \ Grow(nInsert); \ \ memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex], \ diff --git a/src/common/dynlib.cpp b/src/common/dynlib.cpp index b6cbcec443..558b579e0c 100644 --- a/src/common/dynlib.cpp +++ b/src/common/dynlib.cpp @@ -146,7 +146,7 @@ wxLibrary::wxLibrary(wxDllType handle) m_handle = handle; // Some system may use a local heap for library. - get_first = (t_get_first)GetSymbol("wxGetClassFirst"); + get_first = (t_get_first)GetSymbol(_T("wxGetClassFirst")); // It is a wxWindows DLL. if (get_first) PrepareClasses(get_first()); @@ -333,14 +333,11 @@ void *wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name, bool *su if ( !symbol ) { - wxString msg(_("wxDllLoader failed to GetSymbol '%s'")); - #ifdef HAVE_DLERROR const wxChar *err = dlerror(); if( err ) { - failed = TRUE; - wxLogError( msg, err ); + wxLogError(wxT("%s"), err); } #else failed = TRUE; diff --git a/src/common/dynload.cpp b/src/common/dynload.cpp index aa917ba051..51c0a13359 100644 --- a/src/common/dynload.cpp +++ b/src/common/dynload.cpp @@ -33,6 +33,7 @@ #ifndef WX_PRECOMP #include "wx/log.h" #include "wx/intl.h" + #include "wx/hash.h" #endif #include "wx/filename.h" // for SplitPath() @@ -263,7 +264,10 @@ void *wxDynamicLibrary::GetSymbol(const wxString &name, bool *success) const symbol = dlsym( m_handle, name.fn_str() ); #elif defined(HAVE_SHL_LOAD) - if( shl_findsym( &m_handle, name.fn_str(), TYPE_UNDEFINED, &symbol ) != 0 ) + // use local variable since shl_findsym modifies the handle argument + // to indicate where the symbol was found (GD) + wxDllType the_handle = m_handle; + if( shl_findsym( &the_handle, name.fn_str(), TYPE_UNDEFINED, &symbol ) != 0 ) symbol = 0; #elif defined(__WINDOWS__) @@ -275,7 +279,6 @@ void *wxDynamicLibrary::GetSymbol(const wxString &name, bool *success) const if ( !symbol ) { - wxString msg(_("wxDynamicLibrary failed to GetSymbol '%s'")); #if defined(HAVE_DLERROR) && !defined(__EMX__) #if wxUSE_UNICODE @@ -287,8 +290,7 @@ void *wxDynamicLibrary::GetSymbol(const wxString &name, bool *success) const if( err ) { - failed = TRUE; - wxLogError( msg, err ); + wxLogError(wxT("%s"), err); } #else failed = TRUE; @@ -416,9 +418,7 @@ void wxPluginLibrary::UpdateClassInfo() // Hash all the class names into a local table too so // we can quickly find the entry they correspond to. - - if( ms_classes->Get(info->m_className) == 0 ) - ms_classes->Put(info->m_className, (wxObject *) this); + (*ms_classes)[info->m_className] = this; } } @@ -438,7 +438,7 @@ void wxPluginLibrary::RestoreClassInfo() for(info = m_after; info != m_before; info = info->m_next) { wxClassInfo::sm_classTable->Delete(info->m_className); - ms_classes->Delete(info->m_className); + ms_classes->erase(ms_classes->find(info->m_className)); } if( wxClassInfo::sm_first == m_after ) @@ -467,7 +467,7 @@ void wxPluginLibrary::RegisterModules() wxASSERT_MSG( m_linkcount == 1, _T("RegisterModules should only be called for the first load") ); - for(wxClassInfo *info = m_after; info != m_before; info = info->m_next) + for ( wxClassInfo *info = m_after; info != m_before; info = info->m_next) { if( info->IsKindOf(CLASSINFO(wxModule)) ) { @@ -482,7 +482,9 @@ void wxPluginLibrary::RegisterModules() // FIXME: Likewise this is (well was) very similar to InitializeModules() - for(wxModuleList::Node *node = m_wxmodules.GetFirst(); node; node->GetNext()) + for ( wxModuleList::Node *node = m_wxmodules.GetFirst(); + node; + node = node->GetNext()) { if( !node->GetData()->Init() ) { @@ -513,10 +515,10 @@ void wxPluginLibrary::UnregisterModules() { wxModuleList::Node *node; - for(node = m_wxmodules.GetFirst(); node; node->GetNext()) + for ( node = m_wxmodules.GetFirst(); node; node = node->GetNext() ) node->GetData()->Exit(); - for(node = m_wxmodules.GetFirst(); node; node->GetNext()) + for ( node = m_wxmodules.GetFirst(); node; node = node->GetNext() ) wxModule::UnregisterModule( node->GetData() ); m_wxmodules.DeleteContents(TRUE); @@ -549,7 +551,7 @@ wxPluginManager::LoadLibrary(const wxString &libname, int flags) } else { - entry = (wxPluginLibrary*) ms_manifest->Get(realname); + entry = FindByName(realname); } if ( entry ) @@ -565,7 +567,7 @@ wxPluginManager::LoadLibrary(const wxString &libname, int flags) if ( entry->IsLoaded() ) { - ms_manifest->Put(realname, (wxObject*) entry); + (*ms_manifest)[realname] = entry; wxLogTrace(_T("dll"), _T("LoadLibrary(%s): loaded ok."), realname.c_str()); @@ -594,13 +596,13 @@ bool wxPluginManager::UnloadLibrary(const wxString& libname) { wxString realname = libname; - wxPluginLibrary *entry = (wxPluginLibrary*) ms_manifest->Get(realname); + wxPluginLibrary *entry = FindByName(realname); if ( !entry ) { realname += wxDynamicLibrary::GetDllExt(); - entry = (wxPluginLibrary*) ms_manifest->Get(realname); + entry = FindByName(realname); } if ( !entry ) @@ -619,7 +621,7 @@ bool wxPluginManager::UnloadLibrary(const wxString& libname) return FALSE; } - ms_manifest->Delete(realname); + ms_manifest->erase(ms_manifest->find(realname)); return TRUE; } @@ -627,12 +629,15 @@ bool wxPluginManager::UnloadLibrary(const wxString& libname) #if WXWIN_COMPATIBILITY_2_2 wxPluginLibrary *wxPluginManager::GetObjectFromHandle(wxDllType handle) { - wxNode *node; - ms_manifest->BeginFind(); + for ( wxDLManifest::iterator i = ms_manifest->begin(); + i != ms_manifest->end(); + ++i ) + { + wxPluginLibrary * const lib = i->second; - for(node = ms_manifest->Next(); node; node = ms_manifest->Next()) - if( ((wxPluginLibrary*)node->GetData())->GetLibHandle() == handle ) - return (wxPluginLibrary*)node->GetData(); + if ( lib->GetLibHandle() == handle ) + return lib; + } return NULL; } @@ -645,25 +650,28 @@ wxPluginLibrary *wxPluginManager::GetObjectFromHandle(wxDllType handle) bool wxPluginManager::Load(const wxString &libname, int flags) { m_entry = wxPluginManager::LoadLibrary(libname, flags); + return IsLoaded(); } void wxPluginManager::Unload() { - wxNode *node; - ms_manifest->BeginFind(); + wxCHECK_RET( m_entry, _T("unloading an invalid wxPluginManager?") ); - // It's either this or store the name of the lib just to do this. - - for(node = ms_manifest->Next(); node; node = ms_manifest->Next()) - if( (wxPluginLibrary*)node->GetData() == m_entry ) - break; - - if( m_entry && m_entry->UnrefLib() ) + for ( wxDLManifest::iterator i = ms_manifest->begin(); + i != ms_manifest->end(); + ++i ) { - delete node; - m_entry = 0; + if ( i->second == m_entry ) + { + ms_manifest->erase(i); + return; + } } + + m_entry->UnrefLib(); + + m_entry = NULL; } // --------------------------------------------------------------------------- diff --git a/src/common/event.cpp b/src/common/event.cpp index d4cc3c54d4..b2b313ff86 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -390,7 +390,7 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType) void wxMouseEvent::Assign(const wxMouseEvent& event) { m_eventType = event.m_eventType; - + m_x = event.m_x; m_y = event.m_y; @@ -545,8 +545,31 @@ wxKeyEvent::wxKeyEvent(wxEventType type) m_altDown = FALSE; m_keyCode = 0; m_scanCode = 0; +#if wxUSE_UNICODE + m_uniChar = 0; +#endif } +wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt) + : wxEvent(evt) +{ + m_x = evt.m_x; + m_y = evt.m_y; + + m_keyCode = evt.m_keyCode; + + m_controlDown = evt.m_controlDown; + m_shiftDown = evt.m_shiftDown; + m_altDown = evt.m_altDown; + m_metaDown = evt.m_metaDown; + m_scanCode = evt.m_scanCode; + m_rawCode = evt.m_rawCode; + m_rawFlags = evt.m_rawFlags; + +#if wxUSE_UNICODE + m_uniChar = evt.m_uniChar; +#endif +} wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win) { @@ -958,7 +981,8 @@ void wxEvtHandler::Connect( int id, int lastId, if (!m_dynamicEvents) m_dynamicEvents = new wxList; - m_dynamicEvents->Append( (wxObject*) entry ); + // Insert at the front of the list so most recent additions are found first + m_dynamicEvents->Insert( (wxObject*) entry ); } bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType, @@ -1024,9 +1048,7 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event ) (this->*((wxEventFunction) (entry->m_fn)))(event); - if (event.GetSkipped()) - return FALSE; - else + if ( ! event.GetSkipped() ) return TRUE; } } diff --git a/src/common/execcmn.cpp b/src/common/execcmn.cpp index f89e061b2c..9e9012f244 100644 --- a/src/common/execcmn.cpp +++ b/src/common/execcmn.cpp @@ -81,7 +81,7 @@ inline void wxStreamTempInputBuffer::Init(wxPipeInputStream *stream) void wxStreamTempInputBuffer::Update() { - if ( m_stream && m_stream->IsAvailable() ) + if ( m_stream && m_stream->CanRead() ) { // realloc in blocks of 4Kb: this is the default (and minimal) buffer // size of the Unix pipes so it should be the optimal step @@ -111,24 +111,5 @@ wxStreamTempInputBuffer::~wxStreamTempInputBuffer() } } -// ---------------------------------------------------------------------------- -// platform-dependent parts of wxProcess implementation included -// ---------------------------------------------------------------------------- - -bool wxProcess::IsInputOpened() const -{ - return m_inputStream && ((wxPipeInputStream *)m_inputStream)->IsOpened(); -} - -bool wxProcess::IsInputAvailable() const -{ - return m_inputStream && ((wxPipeInputStream *)m_inputStream)->IsAvailable(); -} - -bool wxProcess::IsErrorAvailable() const -{ - return m_errorStream && ((wxPipeInputStream *)m_errorStream)->IsAvailable(); -} - #endif // _WX_WXEXEC_CPP_ diff --git a/src/common/fileconf.cpp b/src/common/fileconf.cpp index 5ef534169b..c93a8f5d01 100644 --- a/src/common/fileconf.cpp +++ b/src/common/fileconf.cpp @@ -261,16 +261,16 @@ wxString wxFileConfig::GetGlobalDir() { wxString strDir; - #ifdef __VMS__ // Note if __VMS is defined __UNIX is also defined +#ifdef __VMS__ // Note if __VMS is defined __UNIX is also defined strDir = wxT("sys$manager:"); - #elif defined(__WXMAC__) +#elif defined(__WXMAC__) strDir = wxMacFindFolder( (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder ) ; - #elif defined( __UNIX__ ) +#elif defined( __UNIX__ ) strDir = wxT("/etc/"); - #elif defined(__WXPM__) - ULONG aulSysInfo[QSV_MAX] = {0}; - UINT drive; - APIRET rc; +#elif defined(__WXPM__) + ULONG aulSysInfo[QSV_MAX] = {0}; + UINT drive; + APIRET rc; rc = DosQuerySysInfo( 1L, QSV_MAX, (PVOID)aulSysInfo, sizeof(ULONG)*QSV_MAX); if (rc == 0) @@ -278,88 +278,90 @@ wxString wxFileConfig::GetGlobalDir() drive = aulSysInfo[QSV_BOOT_DRIVE - 1]; strDir.Printf(wxT("%c:\\OS2\\"), 'A'+drive-1); } - #elif defined(__WXSTUBS__) +#elif defined(__WXSTUBS__) wxASSERT_MSG( FALSE, wxT("TODO") ) ; - #elif defined(__DOS__) +#elif defined(__DOS__) // There's no such thing as global cfg dir in MS-DOS, let's return // current directory (FIXME_MGL?) return wxT(".\\"); - #else // Windows +#else // Windows wxChar szWinDir[MAX_PATH]; ::GetWindowsDirectory(szWinDir, MAX_PATH); strDir = szWinDir; strDir << wxT('\\'); - #endif // Unix/Windows +#endif // Unix/Windows - return strDir; + return strDir; } wxString wxFileConfig::GetLocalDir() { - wxString strDir; + wxString strDir; #if defined(__WXMAC__) || defined(__DOS__) - // no local dir concept on Mac OS 9 or MS-DOS - return GetGlobalDir() ; + // no local dir concept on Mac OS 9 or MS-DOS + return GetGlobalDir() ; #else - wxGetHomeDir(&strDir); + wxGetHomeDir(&strDir); -# ifdef __UNIX__ -# ifdef __VMS - if (strDir.Last() != wxT(']')) -# endif - if (strDir.Last() != wxT('/')) strDir << wxT('/'); -# else - if (strDir.Last() != wxT('\\')) strDir << wxT('\\'); -# endif +#ifdef __UNIX__ +#ifdef __VMS + if (strDir.Last() != wxT(']')) +#endif + if (strDir.Last() != wxT('/')) strDir << wxT('/'); +#else + if (strDir.Last() != wxT('\\')) strDir << wxT('\\'); +#endif #endif - return strDir; + return strDir; } wxString wxFileConfig::GetGlobalFileName(const wxChar *szFile) { - wxString str = GetGlobalDir(); - str << szFile; + wxString str = GetGlobalDir(); + str << szFile; - if ( wxStrchr(szFile, wxT('.')) == NULL ) - #if defined( __WXMAC__ ) - str << " Preferences"; - #elif defined( __UNIX__ ) - str << wxT(".conf"); - #else // Windows - str << wxT(".ini"); - #endif // UNIX/Win + if ( wxStrchr(szFile, wxT('.')) == NULL ) +#if defined( __WXMAC__ ) + str << " Preferences"; +#elif defined( __UNIX__ ) + str << wxT(".conf"); +#else // Windows + str << wxT(".ini"); +#endif // UNIX/Win - return str; + return str; } wxString wxFileConfig::GetLocalFileName(const wxChar *szFile) { -#ifdef __VMS__ // On VMS I saw the problem that the home directory was appended - // twice for the configuration file. Does that also happen for other - // platforms? - wxString str = wxT( '.' ); +#ifdef __VMS__ + // On VMS I saw the problem that the home directory was appended + // twice for the configuration file. Does that also happen for + // other platforms? + wxString str = wxT( '.' ); #else - wxString str = GetLocalDir(); + wxString str = GetLocalDir(); #endif - #if defined( __UNIX__ ) && !defined( __VMS ) && !defined( __WXMAC__ ) +#if defined( __UNIX__ ) && !defined( __VMS ) && !defined( __WXMAC__ ) str << wxT('.'); - #endif +#endif - str << szFile; + str << szFile; - #if defined(__WINDOWS__) || defined(__DOS__) +#if defined(__WINDOWS__) || defined(__DOS__) if ( wxStrchr(szFile, wxT('.')) == NULL ) - str << wxT(".ini"); - #endif + str << wxT(".ini"); +#endif - #ifdef __WXMAC__ - str << " Preferences"; - #endif - return str; +#ifdef __WXMAC__ + str << " Preferences"; +#endif + + return str; } // ---------------------------------------------------------------------------- @@ -368,38 +370,52 @@ wxString wxFileConfig::GetLocalFileName(const wxChar *szFile) void wxFileConfig::Init() { - m_pCurrentGroup = - m_pRootGroup = new wxFileConfigGroup(NULL, "", this); + m_pCurrentGroup = + m_pRootGroup = new wxFileConfigGroup(NULL, wxT(""), this); - m_linesHead = - m_linesTail = NULL; + m_linesHead = + m_linesTail = NULL; - // it's not an error if (one of the) file(s) doesn't exist + // It's not an error if (one of the) file(s) doesn't exist. - // parse the global file - if ( !m_strGlobalFile.IsEmpty() && wxFile::Exists(m_strGlobalFile) ) { - wxTextFile fileGlobal(m_strGlobalFile); + // parse the global file + if ( !m_strGlobalFile.IsEmpty() && wxFile::Exists(m_strGlobalFile) ) + { + wxTextFile fileGlobal(m_strGlobalFile); - if ( fileGlobal.Open() ) { - Parse(fileGlobal, FALSE /* global */); - SetRootPath(); +#if defined(__WXGTK20__) && wxUSE_UNICODE + if ( fileGlobal.Open( wxConvUTF8 ) ) +#else + if ( fileGlobal.Open() ) +#endif + { + Parse(fileGlobal, FALSE /* global */); + SetRootPath(); + } + else + { + wxLogWarning(_("can't open global configuration file '%s'."), m_strGlobalFile.c_str()); + } } - else - wxLogWarning(_("can't open global configuration file '%s'."), - m_strGlobalFile.c_str()); - } - // parse the local file - if ( !m_strLocalFile.IsEmpty() && wxFile::Exists(m_strLocalFile) ) { - wxTextFile fileLocal(m_strLocalFile); - if ( fileLocal.Open() ) { - Parse(fileLocal, TRUE /* local */); - SetRootPath(); + // parse the local file + if ( !m_strLocalFile.IsEmpty() && wxFile::Exists(m_strLocalFile) ) + { + wxTextFile fileLocal(m_strLocalFile); +#if defined(__WXGTK20__) && wxUSE_UNICODE + if ( fileLocal.Open( wxConvUTF8 ) ) +#else + if ( fileLocal.Open() ) +#endif + { + Parse(fileLocal, TRUE /* local */); + SetRootPath(); + } + else + { + wxLogWarning(_("can't open user configuration file '%s'."), m_strLocalFile.c_str() ); + } } - else - wxLogWarning(_("can't open user configuration file '%s'."), - m_strLocalFile.c_str()); - } } // constructor supports creation of wxFileConfig objects of any type @@ -411,47 +427,43 @@ wxFileConfig::wxFileConfig(const wxString& appName, const wxString& vendorName, style), m_strLocalFile(strLocal), m_strGlobalFile(strGlobal) { - // Make up names for files if empty - if ( m_strLocalFile.IsEmpty() && (style & wxCONFIG_USE_LOCAL_FILE) ) - { - m_strLocalFile = GetLocalFileName(GetAppName()); - } + // Make up names for files if empty + if ( m_strLocalFile.IsEmpty() && (style & wxCONFIG_USE_LOCAL_FILE) ) + m_strLocalFile = GetLocalFileName(GetAppName()); - if ( m_strGlobalFile.IsEmpty() && (style & wxCONFIG_USE_GLOBAL_FILE) ) - { - m_strGlobalFile = GetGlobalFileName(GetAppName()); - } + if ( m_strGlobalFile.IsEmpty() && (style & wxCONFIG_USE_GLOBAL_FILE) ) + m_strGlobalFile = GetGlobalFileName(GetAppName()); - // Check if styles are not supplied, but filenames are, in which case - // add the correct styles. - if ( !m_strLocalFile.IsEmpty() ) - SetStyle(GetStyle() | wxCONFIG_USE_LOCAL_FILE); + // Check if styles are not supplied, but filenames are, in which case + // add the correct styles. + if ( !m_strLocalFile.IsEmpty() ) + SetStyle(GetStyle() | wxCONFIG_USE_LOCAL_FILE); - if ( !m_strGlobalFile.IsEmpty() ) - SetStyle(GetStyle() | wxCONFIG_USE_GLOBAL_FILE); + if ( !m_strGlobalFile.IsEmpty() ) + SetStyle(GetStyle() | wxCONFIG_USE_GLOBAL_FILE); - // if the path is not absolute, prepend the standard directory to it - // UNLESS wxCONFIG_USE_RELATIVE_PATH style is set - if ( !(style & wxCONFIG_USE_RELATIVE_PATH) ) - { - if ( !m_strLocalFile.IsEmpty() && !wxIsAbsolutePath(m_strLocalFile) ) - { - wxString strLocal = m_strLocalFile; - m_strLocalFile = GetLocalDir(); - m_strLocalFile << strLocal; - } + // if the path is not absolute, prepend the standard directory to it + // UNLESS wxCONFIG_USE_RELATIVE_PATH style is set + if ( !(style & wxCONFIG_USE_RELATIVE_PATH) ) + { + if ( !m_strLocalFile.IsEmpty() && !wxIsAbsolutePath(m_strLocalFile) ) + { + wxString strLocal = m_strLocalFile; + m_strLocalFile = GetLocalDir(); + m_strLocalFile << strLocal; + } - if ( !m_strGlobalFile.IsEmpty() && !wxIsAbsolutePath(m_strGlobalFile) ) - { - wxString strGlobal = m_strGlobalFile; - m_strGlobalFile = GetGlobalDir(); - m_strGlobalFile << strGlobal; - } - } + if ( !m_strGlobalFile.IsEmpty() && !wxIsAbsolutePath(m_strGlobalFile) ) + { + wxString strGlobal = m_strGlobalFile; + m_strGlobalFile = GetGlobalDir(); + m_strGlobalFile << strGlobal; + } + } - SetUmask(-1); - - Init(); + SetUmask(-1); + + Init(); } #if wxUSE_STREAMS @@ -462,7 +474,7 @@ wxFileConfig::wxFileConfig(wxInputStream &inStream) SetStyle(GetStyle() | wxCONFIG_USE_LOCAL_FILE); m_pCurrentGroup = - m_pRootGroup = new wxFileConfigGroup(NULL, "", this); + m_pRootGroup = new wxFileConfigGroup(NULL, wxT(""), this); m_linesHead = m_linesTail = NULL; @@ -546,7 +558,9 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal) wxString strLine; size_t nLineCount = buffer.GetLineCount(); - for ( size_t n = 0; n < nLineCount; n++ ) { + + for ( size_t n = 0; n < nLineCount; n++ ) + { strLine = buffer[n]; // add the line to linked list @@ -851,37 +865,62 @@ bool wxFileConfig::DoReadLong(const wxString& key, long *pl) const bool wxFileConfig::DoWriteString(const wxString& key, const wxString& szValue) { - wxConfigPathChanger path(this, key); + wxConfigPathChanger path(this, key); + wxString strName = path.Name(); + + wxLogTrace( _T("wxFileConfig"), + _T(" Writing String '%s' = '%s' to Group '%s'"), + strName.c_str(), + szValue.c_str(), + GetPath().c_str() ); - wxString strName = path.Name(); - if ( strName.IsEmpty() ) { - // setting the value of a group is an error - wxASSERT_MSG( wxIsEmpty(szValue), wxT("can't set value of a group!") ); + if ( strName.IsEmpty() ) + { + // setting the value of a group is an error - // ... except if it's empty in which case it's a way to force it's creation - m_pCurrentGroup->SetDirty(); + wxASSERT_MSG( wxIsEmpty(szValue), wxT("can't set value of a group!") ); - // this will add a line for this group if it didn't have it before - (void)m_pCurrentGroup->GetGroupLine(); - } - else { - // writing an entry + // ... except if it's empty in which case it's a way to force it's creation - // check that the name is reasonable - if ( strName[0u] == wxCONFIG_IMMUTABLE_PREFIX ) { - wxLogError(_("Config entry name cannot start with '%c'."), - wxCONFIG_IMMUTABLE_PREFIX); - return FALSE; + wxLogTrace( _T("wxFileConfig"), + _T(" Creating group %s"), + m_pCurrentGroup->Name().c_str() ); + + m_pCurrentGroup->SetDirty(); + + // this will add a line for this group if it didn't have it before + + (void)m_pCurrentGroup->GetGroupLine(); + } + else + { + // writing an entry + // check that the name is reasonable + + if ( strName[0u] == wxCONFIG_IMMUTABLE_PREFIX ) + { + wxLogError( _("Config entry name cannot start with '%c'."), + wxCONFIG_IMMUTABLE_PREFIX); + return FALSE; + } + + wxFileConfigEntry *pEntry = m_pCurrentGroup->FindEntry(strName); + + if ( pEntry == 0 ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" Adding Entry %s"), + strName.c_str() ); + pEntry = m_pCurrentGroup->AddEntry(strName); + } + + wxLogTrace( _T("wxFileConfig"), + _T(" Setting value %s"), + szValue.c_str() ); + pEntry->SetValue(szValue); } - wxFileConfigEntry *pEntry = m_pCurrentGroup->FindEntry(strName); - if ( pEntry == NULL ) - pEntry = m_pCurrentGroup->AddEntry(strName); - - pEntry->SetValue(szValue); - } - - return TRUE; + return TRUE; } bool wxFileConfig::DoWriteLong(const wxString& key, long lValue) @@ -1048,74 +1087,135 @@ bool wxFileConfig::DeleteAll() // linked list functions // ---------------------------------------------------------------------------- -// append a new line to the end of the list + // append a new line to the end of the list + wxFileConfigLineList *wxFileConfig::LineListAppend(const wxString& str) { - wxFileConfigLineList *pLine = new wxFileConfigLineList(str); + wxLogTrace( _T("wxFileConfig"), + _T(" ** Adding Line '%s'"), + str.c_str() ); + wxLogTrace( _T("wxFileConfig"), + _T(" head: %s"), + ((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" tail: %s"), + ((m_linesTail) ? m_linesTail->Text().c_str() : wxEmptyString) ); - if ( m_linesTail == NULL ) { - // list is empty - m_linesHead = pLine; - } - else { - // adjust pointers - m_linesTail->SetNext(pLine); - pLine->SetPrev(m_linesTail); - } + wxFileConfigLineList *pLine = new wxFileConfigLineList(str); - m_linesTail = pLine; - return m_linesTail; + if ( m_linesTail == NULL ) + { + // list is empty + m_linesHead = pLine; + } + else + { + // adjust pointers + m_linesTail->SetNext(pLine); + pLine->SetPrev(m_linesTail); + } + + m_linesTail = pLine; + + wxLogTrace( _T("wxFileConfig"), + _T(" head: %s"), + ((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" tail: %s"), + ((m_linesTail) ? m_linesTail->Text().c_str() : wxEmptyString) ); + + return m_linesTail; } -// insert a new line after the given one or in the very beginning if !pLine + // insert a new line after the given one or in the very beginning if !pLine + wxFileConfigLineList *wxFileConfig::LineListInsert(const wxString& str, - wxFileConfigLineList *pLine) + wxFileConfigLineList *pLine) { - if ( pLine == m_linesTail ) - return LineListAppend(str); + wxLogTrace( _T("wxFileConfig"), + _T(" ** Inserting Line '%s' after '%s'"), + str.c_str(), + ((pLine) ? pLine->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" head: %s"), + ((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" tail: %s"), + ((m_linesTail) ? m_linesTail->Text().c_str() : wxEmptyString) ); - wxFileConfigLineList *pNewLine = new wxFileConfigLineList(str); - if ( pLine == NULL ) { - // prepend to the list - pNewLine->SetNext(m_linesHead); - m_linesHead->SetPrev(pNewLine); - m_linesHead = pNewLine; - } - else { - // insert before pLine - wxFileConfigLineList *pNext = pLine->Next(); - pNewLine->SetNext(pNext); - pNewLine->SetPrev(pLine); - pNext->SetPrev(pNewLine); - pLine->SetNext(pNewLine); - } + if ( pLine == m_linesTail ) + return LineListAppend(str); - return pNewLine; + wxFileConfigLineList *pNewLine = new wxFileConfigLineList(str); + if ( pLine == NULL ) + { + // prepend to the list + pNewLine->SetNext(m_linesHead); + m_linesHead->SetPrev(pNewLine); + m_linesHead = pNewLine; + } + else + { + // insert before pLine + wxFileConfigLineList *pNext = pLine->Next(); + pNewLine->SetNext(pNext); + pNewLine->SetPrev(pLine); + pNext->SetPrev(pNewLine); + pLine->SetNext(pNewLine); + } + + wxLogTrace( _T("wxFileConfig"), + _T(" head: %s"), + ((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" tail: %s"), + ((m_linesTail) ? m_linesTail->Text().c_str() : wxEmptyString) ); + + return pNewLine; } void wxFileConfig::LineListRemove(wxFileConfigLineList *pLine) { - wxFileConfigLineList *pPrev = pLine->Prev(), - *pNext = pLine->Next(); + wxLogTrace( _T("wxFileConfig"), + _T(" ** Removing Line '%s'"), + pLine->Text().c_str() ); + wxLogTrace( _T("wxFileConfig"), + _T(" head: %s"), + ((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" tail: %s"), + ((m_linesTail) ? m_linesTail->Text().c_str() : wxEmptyString) ); - // first entry? - if ( pPrev == NULL ) - m_linesHead = pNext; - else - pPrev->SetNext(pNext); + wxFileConfigLineList *pPrev = pLine->Prev(), + *pNext = pLine->Next(); - // last entry? - if ( pNext == NULL ) - m_linesTail = pPrev; - else - pNext->SetPrev(pPrev); + // first entry? - delete pLine; + if ( pPrev == NULL ) + m_linesHead = pNext; + else + pPrev->SetNext(pNext); + + // last entry? + + if ( pNext == NULL ) + m_linesTail = pPrev; + else + pNext->SetPrev(pPrev); + + wxLogTrace( _T("wxFileConfig"), + _T(" head: %s"), + ((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) ); + wxLogTrace( _T("wxFileConfig"), + _T(" tail: %s"), + ((m_linesTail) ? m_linesTail->Text().c_str() : wxEmptyString) ); + + delete pLine; } bool wxFileConfig::LineListIsEmpty() { - return m_linesHead == NULL; + return m_linesHead == NULL; } // ============================================================================ @@ -1163,9 +1263,8 @@ wxFileConfigGroup::~wxFileConfigGroup() void wxFileConfigGroup::SetLine(wxFileConfigLineList *pLine) { - wxASSERT( m_pLine == NULL ); // shouldn't be called twice - - m_pLine = pLine; + wxASSERT( m_pLine == 0 ); // shouldn't be called twice + m_pLine = pLine; } /* @@ -1204,27 +1303,42 @@ void wxFileConfigGroup::SetLine(wxFileConfigLineList *pLine) // have it or in the very beginning if we're the root group. wxFileConfigLineList *wxFileConfigGroup::GetGroupLine() { - if ( m_pLine == NULL ) { - wxFileConfigGroup *pParent = Parent(); + wxLogTrace( _T("wxFileConfig"), + _T(" GetGroupLine() for Group '%s'"), + Name().c_str() ); - // this group wasn't present in local config file, add it now - if ( pParent != NULL ) { - wxString strFullName; - strFullName << wxT("[") - // +1: no '/' - << FilterOutEntryName(GetFullName().c_str() + 1) - << wxT("]"); - m_pLine = m_pConfig->LineListInsert(strFullName, - pParent->GetLastGroupLine()); - pParent->SetLastGroup(this); // we're surely after all the others - } - else { - // we return NULL, so that LineListInsert() will insert us in the - // very beginning - } - } + if ( m_pLine == 0 ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" Getting Line item pointer") ); - return m_pLine; + wxFileConfigGroup *pParent = Parent(); + + // this group wasn't present in local config file, add it now + + if ( pParent != 0 ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" checking parent '%s'"), + pParent->Name().c_str() ); + + wxString strFullName; + + strFullName << wxT("[") // +1: no '/' + << FilterOutEntryName(GetFullName().c_str() + 1) + << wxT("]"); + m_pLine = m_pConfig->LineListInsert(strFullName, + pParent->GetLastGroupLine()); + pParent->SetLastGroup(this); // we're surely after all the others + } + else + { + // we return NULL, so that LineListInsert() will insert us in the + // very beginning + } + } + + return m_pLine; } // Return the last line belonging to the subgroups of this group (after which @@ -1232,17 +1346,20 @@ wxFileConfigLineList *wxFileConfigGroup::GetGroupLine() // last line is the group line (m_pLine) itself. wxFileConfigLineList *wxFileConfigGroup::GetLastGroupLine() { - // if we have any subgroups, our last line is the last line of the last - // subgroup - if ( m_pLastGroup != NULL ) { - wxFileConfigLineList *pLine = m_pLastGroup->GetLastGroupLine(); + // if we have any subgroups, our last line is + // the last line of the last subgroup - wxASSERT( pLine != NULL ); // last group must have !NULL associated line - return pLine; - } + if ( m_pLastGroup != 0 ) + { + wxFileConfigLineList *pLine = m_pLastGroup->GetLastGroupLine(); - // no subgroups, so the last line is the line of thelast entry (if any) - return GetLastEntryLine(); + wxASSERT( pLine != 0 ); // last group must have !NULL associated line + return pLine; + } + + // no subgroups, so the last line is the line of thelast entry (if any) + + return GetLastEntryLine(); } // return the last line belonging to the entries of this group (after which @@ -1250,15 +1367,21 @@ wxFileConfigLineList *wxFileConfigGroup::GetLastGroupLine() // one immediately after the group line itself. wxFileConfigLineList *wxFileConfigGroup::GetLastEntryLine() { - if ( m_pLastEntry != NULL ) { - wxFileConfigLineList *pLine = m_pLastEntry->GetLine(); + wxLogTrace( _T("wxFileConfig"), + _T(" GetLastEntryLine() for Group '%s'"), + Name().c_str() ); - wxASSERT( pLine != NULL ); // last entry must have !NULL associated line - return pLine; - } + if ( m_pLastEntry != 0 ) + { + wxFileConfigLineList *pLine = m_pLastEntry->GetLine(); - // no entries: insert after the group header - return GetGroupLine(); + wxASSERT( pLine != 0 ); // last entry must have !NULL associated line + return pLine; + } + + // no entries: insert after the group header + + return GetGroupLine(); } // ---------------------------------------------------------------------------- @@ -1355,27 +1478,25 @@ wxFileConfigGroup::FindSubgroup(const wxChar *szName) const // ---------------------------------------------------------------------------- // create a new entry and add it to the current group -wxFileConfigEntry * -wxFileConfigGroup::AddEntry(const wxString& strName, int nLine) +wxFileConfigEntry *wxFileConfigGroup::AddEntry(const wxString& strName, int nLine) { - wxASSERT( FindEntry(strName) == NULL ); + wxASSERT( FindEntry(strName) == 0 ); - wxFileConfigEntry *pEntry = new wxFileConfigEntry(this, strName, nLine); - m_aEntries.Add(pEntry); + wxFileConfigEntry *pEntry = new wxFileConfigEntry(this, strName, nLine); - return pEntry; + m_aEntries.Add(pEntry); + return pEntry; } // create a new group and add it to the current group -wxFileConfigGroup * -wxFileConfigGroup::AddSubgroup(const wxString& strName) +wxFileConfigGroup *wxFileConfigGroup::AddSubgroup(const wxString& strName) { - wxASSERT( FindSubgroup(strName) == NULL ); + wxASSERT( FindSubgroup(strName) == 0 ); - wxFileConfigGroup *pGroup = new wxFileConfigGroup(this, strName, m_pConfig); - m_aSubgroups.Add(pGroup); + wxFileConfigGroup *pGroup = new wxFileConfigGroup(this, strName, m_pConfig); - return pGroup; + m_aSubgroups.Add(pGroup); + return pGroup; } // ---------------------------------------------------------------------------- @@ -1394,71 +1515,146 @@ bool wxFileConfigGroup::DeleteSubgroupByName(const wxChar *szName) return DeleteSubgroup(FindSubgroup(szName)); } -// doesn't delete the subgroup itself, but does remove references to it from -// all other data structures (and normally the returned pointer should be -// deleted a.s.a.p. because there is nothing much to be done with it anyhow) +// Delete the subgroup and remove all references to it from +// other data structures. bool wxFileConfigGroup::DeleteSubgroup(wxFileConfigGroup *pGroup) { - wxCHECK( pGroup != NULL, FALSE ); // deleting non existing group? + wxLogTrace( _T("wxFileConfig"), + _T("Deleting group '%s' from '%s'"), + pGroup->Name().c_str(), + Name().c_str() ); - // delete all entries - size_t nCount = pGroup->m_aEntries.Count(); - for ( size_t nEntry = 0; nEntry < nCount; nEntry++ ) { - wxFileConfigLineList *pLine = pGroup->m_aEntries[nEntry]->GetLine(); - if ( pLine != NULL ) - m_pConfig->LineListRemove(pLine); - } + wxLogTrace( _T("wxFileConfig"), + _T(" (m_pLine) = prev: %p, this %p, next %p"), + ((m_pLine) ? m_pLine->Prev() : 0), + m_pLine, + ((m_pLine) ? m_pLine->Next() : 0) ); + wxLogTrace( _T("wxFileConfig"), + _T(" text: '%s'"), + ((m_pLine) ? m_pLine->Text().c_str() : wxEmptyString) ); - // and subgroups of this sungroup - nCount = pGroup->m_aSubgroups.Count(); - for ( size_t nGroup = 0; nGroup < nCount; nGroup++ ) { - pGroup->DeleteSubgroup(pGroup->m_aSubgroups[0]); - } + wxCHECK_MSG( pGroup != 0, FALSE, _T("deleting non existing group?") ); - wxFileConfigLineList *pLine = pGroup->m_pLine; - if ( pLine != NULL ) { - // notice that we may do this test inside the previous "if" because the - // last entry's line is surely !NULL - if ( pGroup == m_pLastGroup ) { - // our last entry is being deleted - find the last one which stays - wxASSERT( m_pLine != NULL ); // we have a subgroup with !NULL pLine... + // delete all entries - // go back until we find a subgroup or reach the group's line - wxFileConfigGroup *pNewLast = NULL; - size_t n, nSubgroups = m_aSubgroups.Count(); - wxFileConfigLineList *pl; - for ( pl = pLine->Prev(); pl != m_pLine; pl = pl->Prev() ) { - // is it our subgroup? - for ( n = 0; (pNewLast == NULL) && (n < nSubgroups); n++ ) { - // do _not_ call GetGroupLine! we don't want to add it to the local - // file if it's not already there - if ( m_aSubgroups[n]->m_pLine == m_pLine ) - pNewLast = m_aSubgroups[n]; + size_t nCount = pGroup->m_aEntries.Count(); + + wxLogTrace(_T("wxFileConfig"), + _T("Removing %lu Entries"), + (unsigned long)nCount ); + + for ( size_t nEntry = 0; nEntry < nCount; nEntry++ ) + { + wxFileConfigLineList *pLine = pGroup->m_aEntries[nEntry]->GetLine(); + + if ( pLine != 0 ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" '%s'"), + pLine->Text().c_str() ); + m_pConfig->LineListRemove(pLine); } - - if ( pNewLast != NULL ) // found? - break; - } - - if ( pl == m_pLine ) { - wxASSERT( !pNewLast ); // how comes it has the same line as we? - - // we've reached the group line without finding any subgroups - m_pLastGroup = NULL; - } - else - m_pLastGroup = pNewLast; } - m_pConfig->LineListRemove(pLine); - } + // and subgroups of this subgroup - SetDirty(); + nCount = pGroup->m_aSubgroups.Count(); - m_aSubgroups.Remove(pGroup); - delete pGroup; + wxLogTrace( _T("wxFileConfig"), + _T("Removing %lu SubGroups"), + (unsigned long)nCount ); - return TRUE; + for ( size_t nGroup = 0; nGroup < nCount; nGroup++ ) + { + pGroup->DeleteSubgroup(pGroup->m_aSubgroups[0]); + } + + // finally the group itself + + wxFileConfigLineList *pLine = pGroup->m_pLine; + + if ( pLine != 0 ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" Removing line entry for Group '%s' : '%s'"), + pGroup->Name().c_str(), + pLine->Text().c_str() ); + wxLogTrace( _T("wxFileConfig"), + _T(" Removing from Group '%s' : '%s'"), + Name().c_str(), + ((m_pLine) ? m_pLine->Text().c_str() : wxEmptyString) ); + + // notice that we may do this test inside the previous "if" + // because the last entry's line is surely !NULL + + if ( pGroup == m_pLastGroup ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" ------- Removing last group -------") ); + + // our last entry is being deleted, so find the last one which stays. + // go back until we find a subgroup or reach the group's line, unless + // we are the root group, which we'll notice shortly. + + wxFileConfigGroup *pNewLast = 0; + size_t nSubgroups = m_aSubgroups.Count(); + wxFileConfigLineList *pl; + + for ( pl = pLine->Prev(); pl != m_pLine; pl = pl->Prev() ) + { + // is it our subgroup? + + for ( size_t n = 0; (pNewLast == 0) && (n < nSubgroups); n++ ) + { + // do _not_ call GetGroupLine! we don't want to add it to the local + // file if it's not already there + + if ( m_aSubgroups[n]->m_pLine == m_pLine ) + pNewLast = m_aSubgroups[n]; + } + + if ( pNewLast != 0 ) // found? + break; + } + + if ( pl == m_pLine || m_pParent == 0 ) + { + wxLogTrace( _T("wxFileConfig"), + _T(" ------- No previous group found -------") ); + + wxASSERT_MSG( !pNewLast || m_pLine == 0, + _T("how comes it has the same line as we?") ); + + // we've reached the group line without finding any subgroups, + // or realised we removed the last group from the root. + + m_pLastGroup = 0; + } + else + { + wxLogTrace( _T("wxFileConfig"), + _T(" ------- Last Group set to '%s' -------"), + pNewLast->Name().c_str() ); + + m_pLastGroup = pNewLast; + } + } + + m_pConfig->LineListRemove(pLine); + } + else + { + wxLogTrace( _T("wxFileConfig"), + _T(" No line entry for Group '%s'?"), + pGroup->Name().c_str() ); + } + + SetDirty(); + + m_aSubgroups.Remove(pGroup); + delete pGroup; + + return TRUE; } bool wxFileConfigGroup::DeleteEntry(const wxChar *szName) @@ -1566,47 +1762,54 @@ void wxFileConfigEntry::SetLine(wxFileConfigLineList *pLine) // entry from being marked as 'dirty' void wxFileConfigEntry::SetValue(const wxString& strValue, bool bUser) { - if ( bUser && IsImmutable() ) { - wxLogWarning(_("attempt to change immutable key '%s' ignored."), - Name().c_str()); - return; - } - - // do nothing if it's the same value: but don't test for it if m_bHasValue - // hadn't been set yet or we'd never write empty values to the file - if ( m_bHasValue && strValue == m_strValue ) - return; - - m_bHasValue = TRUE; - m_strValue = strValue; - - if ( bUser ) { - wxString strValFiltered; - if ( Group()->Config()->GetStyle() & wxCONFIG_USE_NO_ESCAPE_CHARACTERS ) { - strValFiltered = strValue; - } - else { - strValFiltered = FilterOutValue(strValue); + if ( bUser && IsImmutable() ) + { + wxLogWarning( _("attempt to change immutable key '%s' ignored."), + Name().c_str()); + return; } - wxString strLine; - strLine << FilterOutEntryName(m_strName) << wxT('=') << strValFiltered; + // do nothing if it's the same value: but don't test for it + // if m_bHasValue hadn't been set yet or we'd never write + // empty values to the file - if ( m_pLine != NULL ) { - // entry was read from the local config file, just modify the line - m_pLine->SetText(strLine); + if ( m_bHasValue && strValue == m_strValue ) + return; + + m_bHasValue = TRUE; + m_strValue = strValue; + + if ( bUser ) + { + wxString strValFiltered; + + if ( Group()->Config()->GetStyle() & wxCONFIG_USE_NO_ESCAPE_CHARACTERS ) + { + strValFiltered = strValue; + } + else { + strValFiltered = FilterOutValue(strValue); + } + + wxString strLine; + strLine << FilterOutEntryName(m_strName) << wxT('=') << strValFiltered; + + if ( m_pLine != 0 ) + { + // entry was read from the local config file, just modify the line + m_pLine->SetText(strLine); + } + else { + // add a new line to the file + wxASSERT( m_nLine == wxNOT_FOUND ); // consistency check + + m_pLine = Group()->Config()->LineListInsert(strLine, + Group()->GetLastEntryLine()); + Group()->SetLastEntry(this); + } + + SetDirty(); } - else { - // add a new line to the file - wxASSERT( m_nLine == wxNOT_FOUND ); // consistency check - - m_pLine = Group()->Config()->LineListInsert(strLine, - Group()->GetLastEntryLine()); - Group()->SetLastEntry(this); - } - - SetDirty(); - } } void wxFileConfigEntry::SetDirty() @@ -1797,3 +2000,5 @@ static wxString GetAppName(const wxString& appName) #endif // wxUSE_CONFIG + +// vi:sts=4:sw=4:et diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 935fa8608c..1056a66fad 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -105,7 +105,6 @@ #include #endif -#include "wx/setup.h" #include "wx/log.h" // No, Cygwin doesn't appear to have fnmatch.h after all. @@ -124,7 +123,7 @@ #ifdef __CYGWIN__ #include #endif - #include + #ifndef __TWIN32__ #include #endif @@ -283,7 +282,7 @@ wxString wxPathList::FindValidPath (const wxString& file) wxStrcpy(buf, wxFileFunctionsBuffer); wxChar *filename = (wxChar*) NULL; /* shut up buggy egcs warning */ - filename = IsAbsolutePath (buf) ? wxFileNameFromPath (buf) : (wxChar *)buf; + filename = wxIsAbsolutePath (buf) ? wxFileNameFromPath (buf) : (wxChar *)buf; for (wxNode * node = First (); node; node = node->Next ()) { @@ -294,7 +293,7 @@ wxString wxPathList::FindValidPath (const wxString& file) wxStrcat (wxFileFunctionsBuffer, wxT("/")); wxStrcat (wxFileFunctionsBuffer, filename); #ifdef __WINDOWS__ - Unix2DosFilename (wxFileFunctionsBuffer); + wxUnix2DosFilename (wxFileFunctionsBuffer); #endif if (wxFileExists (wxFileFunctionsBuffer)) { @@ -411,7 +410,7 @@ wxChar *wxRealPath (wxChar *path) { #ifdef __WXMSW__ static const wxChar SEP = wxT('\\'); - Unix2DosFilename(path); + wxUnix2DosFilename(path); #else static const wxChar SEP = wxT('/'); #endif @@ -464,7 +463,7 @@ wxChar *wxCopyAbsolutePath(const wxString& filename) if (filename == wxT("")) return (wxChar *) NULL; - if (! IsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) { + if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) { wxChar buf[_MAXPATHLEN]; buf[0] = wxT('\0'); wxGetWorkingDirectory(buf, WXSIZEOF(buf)); @@ -667,7 +666,7 @@ wxContractPath (const wxString& filename, const wxString& envname, const wxStrin wxStrcpy (dest, WXSTRINGCAST filename); #ifdef __WXMSW__ - Unix2DosFilename(dest); + wxUnix2DosFilename(dest); #endif // Handle environment @@ -1070,7 +1069,7 @@ bool wxConcatFiles (const wxString& file1, const wxString& file2, const wxString& file3) { wxString outfile; - if ( !wxGetTempFileName("cat", outfile) ) + if ( !wxGetTempFileName( wxT("cat"), outfile) ) return FALSE; FILE *fp1 = (FILE *) NULL; @@ -1626,7 +1625,7 @@ bool wxFindFileInPath(wxString *pStr, const wxChar *pszPath, const wxChar *pszFi strFile += wxFILE_SEP_PATH; strFile += pszFile; - if ( FileExists(strFile) ) { + if ( wxFileExists(strFile) ) { *pStr = strFile; break; } @@ -1667,10 +1666,12 @@ time_t WXDLLEXPORT wxFileModificationTime(const wxString& filename) bool wxIsWild( const wxString& pattern ) { - wxString tmp = pattern; - wxChar *pat = WXSTRINGCAST(tmp); - while (*pat) { - switch (*pat++) { + wxString tmp = pattern; + wxChar *pat = WXSTRINGCAST(tmp); + while (*pat) + { + switch (*pat++) + { case wxT('?'): case wxT('*'): case wxT('['): case wxT('{'): return TRUE; case wxT('\\'): @@ -1679,160 +1680,135 @@ bool wxIsWild( const wxString& pattern ) } } return FALSE; -}; +} + +/* +* Written By Douglas A. Lewis +* +* The match procedure is public domain code (from ircII's reg.c) +*/ bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special ) - -#ifdef HAVE_FNMATCH { -// this probably won't work well for multibyte chars in Unicode mode? - if(dot_special) - return fnmatch(pat.fn_str(), text.fn_str(), FNM_PERIOD) == 0; - else - return fnmatch(pat.fn_str(), text.fn_str(), 0) == 0; -} -#else // !HAVE_FNMATCH - -// #pragma error Broken implementation of wxMatchWild() -- needs fixing! - - /* - * WARNING: this code is broken! - */ -{ - wxString tmp1 = pat; - wxChar *pattern = WXSTRINGCAST(tmp1); - wxString tmp2 = text; - wxChar *str = WXSTRINGCAST(tmp2); - wxChar c; - wxChar *cp; - bool done = FALSE, ret_code, ok; - // Below is for vi fans - const wxChar OB = wxT('{'), CB = wxT('}'); - - // dot_special means '.' only matches '.' - if (dot_special && *str == wxT('.') && *pattern != *str) - return FALSE; - - while ((*pattern != wxT('\0')) && (!done) - && (((*str==wxT('\0'))&&((*pattern==OB)||(*pattern==wxT('*'))))||(*str!=wxT('\0')))) { - switch (*pattern) { - case wxT('\\'): - pattern++; - if (*pattern != wxT('\0')) - pattern++; - break; - case wxT('*'): - pattern++; - ret_code = FALSE; - while ((*str!=wxT('\0')) - && ((ret_code=wxMatchWild(pattern, str++, FALSE)) == 0)) - /*loop*/; - if (ret_code) { - while (*str != wxT('\0')) - str++; - while (*pattern != wxT('\0')) - pattern++; - } - break; - case wxT('['): - pattern++; - repeat: - if ((*pattern == wxT('\0')) || (*pattern == wxT(']'))) { - done = TRUE; - break; - } - if (*pattern == wxT('\\')) { - pattern++; - if (*pattern == wxT('\0')) { - done = TRUE; - break; - } - } - if (*(pattern + 1) == wxT('-')) { - c = *pattern; - pattern += 2; - if (*pattern == wxT(']')) { - done = TRUE; - break; - } - if (*pattern == wxT('\\')) { - pattern++; - if (*pattern == wxT('\0')) { - done = TRUE; - break; - } - } - if ((*str < c) || (*str > *pattern)) { - pattern++; - goto repeat; - } - } else if (*pattern != *str) { - pattern++; - goto repeat; - } - pattern++; - while ((*pattern != wxT(']')) && (*pattern != wxT('\0'))) { - if ((*pattern == wxT('\\')) && (*(pattern + 1) != wxT('\0'))) - pattern++; - pattern++; - } - if (*pattern != wxT('\0')) { - pattern++, str++; - } - break; - case wxT('?'): - pattern++; - str++; - break; - case OB: - pattern++; - while ((*pattern != CB) && (*pattern != wxT('\0'))) { - cp = str; - ok = TRUE; - while (ok && (*cp != wxT('\0')) && (*pattern != wxT('\0')) - && (*pattern != wxT(',')) && (*pattern != CB)) { - if (*pattern == wxT('\\')) - pattern++; - ok = (*pattern++ == *cp++); - } - if (*pattern == wxT('\0')) { - ok = FALSE; - done = TRUE; - break; - } else if (ok) { - str = cp; - while ((*pattern != CB) && (*pattern != wxT('\0'))) { - if (*++pattern == wxT('\\')) { - if (*++pattern == CB) - pattern++; - } - } - } else { - while (*pattern!=CB && *pattern!=wxT(',') && *pattern!=wxT('\0')) { - if (*++pattern == wxT('\\')) { - if (*++pattern == CB || *pattern == wxT(',')) - pattern++; - } - } - } - if (*pattern != wxT('\0')) - pattern++; - } - break; - default: - if (*str == *pattern) { - str++, pattern++; - } else { - done = TRUE; - } + if (text.empty()) + { + /* Match if both are empty. */ + return pat.empty(); } - } - while (*pattern == wxT('*')) - pattern++; - return ((*str == wxT('\0')) && (*pattern == wxT('\0'))); -}; + + const wxChar *m = pat.c_str(), + *n = text.c_str(), + *ma = NULL, + *na = NULL, + *mp = NULL, + *np = NULL; + int just = 0, + pcount = 0, + acount = 0, + count = 0; + + if (dot_special && (*n == wxT('.'))) + { + /* Never match so that hidden Unix files + * are never found. */ + return FALSE; + } + + for (;;) + { + if (*m == wxT('*')) + { + ma = ++m; + na = n; + just = 1; + mp = NULL; + acount = count; + } + else if (*m == wxT('?')) + { + m++; + if (!*n++) + return FALSE; + } + else + { + if (*m == wxT('\\')) + { + m++; + /* Quoting "nothing" is a bad thing */ + if (!*m) + return FALSE; + } + if (!*m) + { + /* + * If we are out of both strings or we just + * saw a wildcard, then we can say we have a + * match + */ + if (!*n) + return TRUE; + if (just) + return TRUE; + just = 0; + goto not_matched; + } + /* + * We could check for *n == NULL at this point, but + * since it's more common to have a character there, + * check to see if they match first (m and n) and + * then if they don't match, THEN we can check for + * the NULL of n + */ + just = 0; + if (*m == *n) + { + m++; + if (*n == wxT(' ')) + mp = NULL; + count++; + n++; + } + else + { + + not_matched: + + /* + * If there are no more characters in the + * string, but we still need to find another + * character (*m != NULL), then it will be + * impossible to match it + */ + if (!*n) + return FALSE; + if (mp) + { + m = mp; + if (*np == wxT(' ')) + { + mp = NULL; + goto check_percent; + } + n = ++np; + count = pcount; + } + else + check_percent: + + if (ma) + { + m = ma; + n = ++na; + count = acount; + } + else + return FALSE; + } + } + } +} -#endif // HAVE_FNMATCH/!HAVE_FNMATCH #ifdef __VISUALC__ #pragma warning(default:4706) // assignment within conditional expression diff --git a/src/common/filename.cpp b/src/common/filename.cpp index 70474e9b9e..61e1d1bfbe 100644 --- a/src/common/filename.cpp +++ b/src/common/filename.cpp @@ -646,7 +646,7 @@ wxFileName::CreateTempFileName(const wxString& prefix, wxFile *fileTemp) path += _T("XXXXXX"); // we need to copy the path to the buffer in which mkstemp() can modify it - wxCharBuffer buf = wxConvFile.cWX2MB( path ); + wxCharBuffer buf( wxConvFile.cWX2MB( path ) ); // cast is safe because the string length doesn't change int fdTemp = mkstemp( (char*)(const char*) buf ); @@ -776,7 +776,14 @@ bool wxFileName::Mkdir( const wxString& dir, int perm, int flags ) size_t count = dirs.GetCount(); for ( size_t i = 0; i < count; i++ ) { - if ( i > 0 || filename.IsAbsolute() ) + if ( i > 0 || +#if defined(__WXMAC__) && !defined(__DARWIN__) + // relative pathnames are exactely the other way round under mac... + !filename.IsAbsolute() +#else + filename.IsAbsolute() +#endif + ) currPath += wxFILE_SEP_PATH; currPath += dirs[i]; @@ -1022,7 +1029,7 @@ bool wxFileName::MakeRelativeTo(const wxString& pathBase, wxPathFormat format) // filename kind tests // ---------------------------------------------------------------------------- -bool wxFileName::SameAs(const wxFileName &filepath, wxPathFormat format) +bool wxFileName::SameAs(const wxFileName& filepath, wxPathFormat format) const { wxFileName fn1 = *this, fn2 = filepath; @@ -1616,7 +1623,36 @@ bool wxFileName::SetTimes(const wxDateTime *dtAccess, const wxDateTime *dtMod, const wxDateTime *dtCreate) { -#if defined(__UNIX_LIKE__) || (defined(__DOS__) && defined(__WATCOMC__)) +#if defined(__WIN32__) + if ( IsDir() ) + { + // VZ: please let me know how to do this if you can + wxFAIL_MSG( _T("SetTimes() not implemented for the directories") ); + } + else // file + { + wxFileHandle fh(GetFullPath(), wxFileHandle::Write); + if ( fh.IsOk() ) + { + FILETIME ftAccess, ftCreate, ftWrite; + + if ( dtCreate ) + ConvertWxToFileTime(&ftCreate, *dtCreate); + if ( dtAccess ) + ConvertWxToFileTime(&ftAccess, *dtAccess); + if ( dtMod ) + ConvertWxToFileTime(&ftWrite, *dtMod); + + if ( ::SetFileTime(fh, + dtCreate ? &ftCreate : NULL, + dtAccess ? &ftAccess : NULL, + dtMod ? &ftWrite : NULL) ) + { + return TRUE; + } + } + } +#elif defined(__UNIX_LIKE__) || (defined(__DOS__) && defined(__WATCOMC__)) if ( !dtAccess && !dtMod ) { // can't modify the creation time anyhow, don't try @@ -1632,27 +1668,6 @@ bool wxFileName::SetTimes(const wxDateTime *dtAccess, { return TRUE; } -#elif defined(__WIN32__) - wxFileHandle fh(GetFullPath(), wxFileHandle::Write); - if ( fh.IsOk() ) - { - FILETIME ftAccess, ftCreate, ftWrite; - - if ( dtCreate ) - ConvertWxToFileTime(&ftCreate, *dtCreate); - if ( dtAccess ) - ConvertWxToFileTime(&ftAccess, *dtAccess); - if ( dtMod ) - ConvertWxToFileTime(&ftWrite, *dtMod); - - if ( ::SetFileTime(fh, - dtCreate ? &ftCreate : NULL, - dtAccess ? &ftAccess : NULL, - dtMod ? &ftWrite : NULL) ) - { - return TRUE; - } - } #else // other platform #endif // platforms @@ -1685,7 +1700,52 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess, wxDateTime *dtMod, wxDateTime *dtCreate) const { -#if defined(__UNIX_LIKE__) || defined(__WXMAC__) || (defined(__DOS__) && defined(__WATCOMC__)) +#if defined(__WIN32__) + // we must use different methods for the files and directories under + // Windows as CreateFile(GENERIC_READ) doesn't work for the directories and + // CreateFile(FILE_FLAG_BACKUP_SEMANTICS) works -- but only under NT and + // not 9x + bool ok; + FILETIME ftAccess, ftCreate, ftWrite; + if ( IsDir() ) + { + // implemented in msw/dir.cpp + extern bool wxGetDirectoryTimes(const wxString& dirname, + FILETIME *, FILETIME *, FILETIME *); + + // we should pass the path without the trailing separator to + // wxGetDirectoryTimes() + ok = wxGetDirectoryTimes(GetPath(wxPATH_GET_VOLUME), + &ftAccess, &ftCreate, &ftWrite); + } + else // file + { + wxFileHandle fh(GetFullPath(), wxFileHandle::Read); + if ( fh.IsOk() ) + { + ok = ::GetFileTime(fh, + dtCreate ? &ftCreate : NULL, + dtAccess ? &ftAccess : NULL, + dtMod ? &ftWrite : NULL) != 0; + } + else + { + ok = FALSE; + } + } + + if ( ok ) + { + if ( dtCreate ) + ConvertFileTimeToWx(dtCreate, ftCreate); + if ( dtAccess ) + ConvertFileTimeToWx(dtAccess, ftAccess); + if ( dtMod ) + ConvertFileTimeToWx(dtMod, ftWrite); + + return TRUE; + } +#elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || (defined(__DOS__) && defined(__WATCOMC__)) wxStructStat stBuf; if ( wxStat( GetFullPath().c_str(), &stBuf) == 0 ) { @@ -1698,27 +1758,6 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess, return TRUE; } -#elif defined(__WIN32__) - wxFileHandle fh(GetFullPath(), wxFileHandle::Read); - if ( fh.IsOk() ) - { - FILETIME ftAccess, ftCreate, ftWrite; - - if ( ::GetFileTime(fh, - dtCreate ? &ftCreate : NULL, - dtAccess ? &ftAccess : NULL, - dtMod ? &ftWrite : NULL) ) - { - if ( dtCreate ) - ConvertFileTimeToWx(dtCreate, ftCreate); - if ( dtAccess ) - ConvertFileTimeToWx(dtAccess, ftAccess); - if ( dtMod ) - ConvertFileTimeToWx(dtMod, ftWrite); - - return TRUE; - } - } #else // other platform #endif // platforms diff --git a/src/common/filesys.cpp b/src/common/filesys.cpp index 93b65254dd..e86b88cea1 100644 --- a/src/common/filesys.cpp +++ b/src/common/filesys.cpp @@ -13,7 +13,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -25,6 +25,7 @@ #include "wx/filesys.h" #include "wx/mimetype.h" #include "wx/filename.h" +#include "wx/log.h" @@ -127,7 +128,14 @@ wxString wxFileSystemHandler::GetRightLocation(const wxString& location) const { int i, l = location.Length(); int l2 = l + 1; - for (i = l-1; (i >= 0) && ((location[i] != wxT(':')) || (i == 1) || (location[i-2] == wxT(':'))); i--) {if (location[i] == wxT('#')) l2 = i + 1;} + + for (i = l-1; + (i >= 0) && + ((location[i] != wxT(':')) || (i == 1) || (location[i-2] == wxT(':'))); + i--) + { + if (location[i] == wxT('#')) l2 = i + 1; + } if (i == 0) return wxEmptyString; else return location.Mid(i + 1, l2 - i - 2); } @@ -172,24 +180,24 @@ bool wxLocalFSHandler::CanOpen(const wxString& location) wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& location) { // location has Unix path separators - wxString right = ms_root + GetRightLocation(location); - wxFileName fn(right, wxPATH_UNIX); + wxString right = GetRightLocation(location); + wxFileName fn = wxFileSystem::URLToFileName(right); + wxString fullpath = ms_root + fn.GetFullPath(); - if (!wxFileExists(fn.GetFullPath())) + if (!wxFileExists(fullpath)) return (wxFSFile*) NULL; - return new wxFSFile(new wxFFileInputStream(fn.GetFullPath()), + return new wxFSFile(new wxFFileInputStream(fullpath), right, GetMimeTypeFromExt(location), GetAnchor(location), - wxDateTime(wxFileModificationTime(fn.GetFullPath()))); - + wxDateTime(wxFileModificationTime(fullpath))); } wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags) { - wxString right = ms_root + GetRightLocation(spec); - return wxFindFirstFile(right, flags); + wxFileName fn = wxFileSystem::URLToFileName(GetRightLocation(spec)); + return wxFindFirstFile(ms_root + fn.GetFullPath(), flags); } wxString wxLocalFSHandler::FindNext() @@ -417,7 +425,81 @@ void wxFileSystem::CleanUpHandlers() m_Handlers.Clear(); } +const static wxString g_unixPathString(wxT("/")); +const static wxString g_nativePathString(wxFILE_SEP_PATH); +// Returns the native path for a file URL +wxFileName wxFileSystem::URLToFileName(const wxString& url) +{ + wxString path = url; + + if ( path.Find(wxT("file://")) == 0 ) + { + path = path.Mid(7); + } + else if ( path.Find(wxT("file:")) == 0 ) + { + path = path.Mid(5); + } + // Remove preceding double slash on Mac Classic +#if defined(__WXMAC__) && !defined(__UNIX__) + else if ( path.Find(wxT("//")) == 0 ) + path = path.Mid(2); +#endif + + path.Replace(wxT("%25"), wxT("%")); + path.Replace(wxT("%3A"), wxT(":")); + +#ifdef __WXMSW__ + // file urls either start with a forward slash (local harddisk), + // otherwise they have a servername/sharename notation, + // which only exists on msw and corresponds to a unc + if ( path[0u] == wxT('/') && path [1u] != wxT('/')) + { + path = path.Mid(1); + } + else if ( (url.Find(wxT("file://")) == 0) && + (path.Find(wxT('/')) != wxNOT_FOUND) && + (path.Length() > 1) && (path[1u] != wxT(':')) ) + { + path = wxT("//") + path; + } +#endif + + path.Replace(g_unixPathString, g_nativePathString); + + return wxFileName(path, wxPATH_NATIVE); +} + +// Returns the file URL for a native path +wxString wxFileSystem::FileNameToURL(const wxFileName& filename) +{ + wxFileName fn = filename; + fn.Normalize(wxPATH_NORM_DOTS | wxPATH_NORM_TILDE | wxPATH_NORM_ABSOLUTE); + wxString url = fn.GetFullPath(wxPATH_NATIVE); + +#ifndef __UNIX__ + // unc notation, wxMSW + if ( url.Find(wxT("\\\\")) == 0 ) + { + url = url.Mid(2); + } + else + { + url = wxT("/") + url; +#ifdef __WXMAC__ + url = wxT("/") + url; +#endif + + } +#endif + + url.Replace(g_nativePathString, g_unixPathString); + url.Replace(wxT("%"), wxT("%25")); + url.Replace(wxT(":"), wxT("%3A")); + url = wxT("file:") + url; + return url; +} ///// Module: diff --git a/src/common/fontcmn.cpp b/src/common/fontcmn.cpp index 9f09b4c8e1..b58bd2f1e4 100644 --- a/src/common/fontcmn.cpp +++ b/src/common/fontcmn.cpp @@ -296,8 +296,11 @@ bool wxNativeFontInfo::FromString(const wxString& s) underlined = l != 0; faceName = tokenizer.GetNextToken(); + +#ifndef __WXMAC__ if( !faceName ) return FALSE; +#endif token = tokenizer.GetNextToken(); if ( !token.ToLong(&l) ) diff --git a/src/common/fontmap.cpp b/src/common/fontmap.cpp index 6c591571f0..5e75f2f751 100644 --- a/src/common/fontmap.cpp +++ b/src/common/fontmap.cpp @@ -104,6 +104,7 @@ static wxFontEncoding gs_encodings[] = wxFONTENCODING_CP437, wxFONTENCODING_UTF7, wxFONTENCODING_UTF8, + wxFONTENCODING_EUC_JP, }; // the descriptions for them @@ -140,6 +141,7 @@ static const wxChar* gs_encodingDescs[] = wxTRANSLATE( "Windows/DOS OEM (CP 437)" ), wxTRANSLATE( "Unicode 7 bit (UTF-7)" ), wxTRANSLATE( "Unicode 8 bit (UTF-8)" ), + wxTRANSLATE( "Extended Unix Codepage for Japanese (EUC-JP)" ), }; // and the internal names (these are not translated on purpose!) @@ -176,8 +178,12 @@ static const wxChar* gs_encodingNames[] = wxT( "windows-437" ), wxT( "utf-7" ), wxT( "utf-8" ), + wxT( "euc-jp" ), }; +wxCOMPILE_TIME_ASSERT( WXSIZEOF(gs_encodingDescs) == WXSIZEOF(gs_encodings) && + WXSIZEOF(gs_encodingNames) == WXSIZEOF(gs_encodings), + EncodingsArraysNotInSync ); // ---------------------------------------------------------------------------- // private classes @@ -386,10 +392,7 @@ wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding) return _("Default encoding"); } - size_t count = WXSIZEOF(gs_encodingDescs); - - wxASSERT_MSG( count == WXSIZEOF(gs_encodings), - wxT("inconsitency detected - forgot to update one of the arrays?") ); + const size_t count = WXSIZEOF(gs_encodingDescs); for ( size_t i = 0; i < count; i++ ) { @@ -413,10 +416,7 @@ wxString wxFontMapper::GetEncodingName(wxFontEncoding encoding) return _("default"); } - size_t count = WXSIZEOF(gs_encodingNames); - - wxASSERT_MSG( count == WXSIZEOF(gs_encodings), - wxT("inconsistency detected - forgot to update one of the arrays?") ); + const size_t count = WXSIZEOF(gs_encodingNames); for ( size_t i = 0; i < count; i++ ) { @@ -521,6 +521,25 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset, { encoding = wxFONTENCODING_UTF8; } + else if ( cs == wxT("GB2312") ) + { + encoding = wxFONTENCODING_GB2312; + } + else if ( cs == wxT("BIG5") ) + { + encoding = wxFONTENCODING_BIG5; + } + else if ( cs == wxT("SJIS") || + cs == wxT("SHIFT_JIS") || + cs == wxT("SHIFT-JIS") ) + { + encoding = wxFONTENCODING_SHIFT_JIS; + } + else if ( cs == wxT("EUC-JP") || + cs == wxT("EUC_JP") ) + { + encoding = wxFONTENCODING_EUC_JP; + } else if ( cs == wxT("KOI8-R") || cs == wxT("KOI8-U") || cs == wxT("KOI8-RU") ) @@ -537,10 +556,35 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset, const wxChar *p = cs.c_str() + 3; if ( *p == wxT('-') ) p++; + + // printf( "iso %s\n", (const char*) cs.ToAscii() ); unsigned int value; if ( wxSscanf(p, wxT("8859-%u"), &value) == 1 ) { + // printf( "value %d\n", (int)value ); + + // make it 0 based and check that it is strictly positive in + // the process (no such thing as iso8859-0 encoding) + if ( (value-- > 0) && + (value < wxFONTENCODING_ISO8859_MAX - + wxFONTENCODING_ISO8859_1) ) + { + // it's a valid ISO8859 encoding + value += wxFONTENCODING_ISO8859_1; + encoding = (wxFontEncoding)value; + } + } + } + else if ( cs.Left(4) == wxT("8859") ) + { + const wxChar *p = cs.c_str(); + + unsigned int value; + if ( wxSscanf(p, wxT("8859-%u"), &value) == 1 ) + { + // printf( "value %d\n", (int)value ); + // make it 0 based and check that it is strictly positive in // the process (no such thing as iso8859-0 encoding) if ( (value-- > 0) && @@ -630,10 +674,7 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset, msg.Printf(_("The charset '%s' is unknown. You may select\nanother charset to replace it with or choose\n[Cancel] if it cannot be replaced"), charset.c_str()); // the list of choices - size_t count = WXSIZEOF(gs_encodingDescs); - - wxASSERT_MSG( count == WXSIZEOF(gs_encodings), - wxT("inconsitency detected - forgot to update one of the arrays?") ); + const size_t count = WXSIZEOF(gs_encodingDescs); wxString *encodingNamesTranslated = new wxString[count]; diff --git a/src/common/fs_inet.cpp b/src/common/fs_inet.cpp index cba29271dc..5304925002 100644 --- a/src/common/fs_inet.cpp +++ b/src/common/fs_inet.cpp @@ -25,7 +25,7 @@ limitation) #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/common/fs_mem.cpp b/src/common/fs_mem.cpp index b3c156edd6..eca35ac6ff 100644 --- a/src/common/fs_mem.cpp +++ b/src/common/fs_mem.cpp @@ -13,7 +13,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/common/fs_zip.cpp b/src/common/fs_zip.cpp index 97cfa0bb1b..27ed0b6a55 100644 --- a/src/common/fs_zip.cpp +++ b/src/common/fs_zip.cpp @@ -15,7 +15,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -89,8 +89,10 @@ wxFSFile* wxZipFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& l if (right.GetChar(0) == wxT('/')) right = right.Mid(1); - s = new wxZipInputStream(left, right); - if (s && (s->LastError() == wxStream_NOERROR)) + wxFileName leftFilename = wxFileSystem::URLToFileName(left); + + s = new wxZipInputStream(leftFilename.GetFullPath(), right); + if (s && s->IsOk() ) { return new wxFSFile(s, left + wxT("#zip:") + right, @@ -135,7 +137,8 @@ wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags) } m_ZipFile = left; - m_Archive = (void*) unzOpen(m_ZipFile.mb_str()); + wxString nativename = wxFileSystem::URLToFileName(m_ZipFile).GetFullPath(); + m_Archive = (void*) unzOpen(nativename.mb_str()); m_Pattern = right.AfterLast(wxT('/')); m_BaseDir = right.BeforeLast(wxT('/')); @@ -179,8 +182,8 @@ wxString wxZipFSHandler::DoFind() while (match == wxEmptyString) { unzGetCurrentFileInfo((unzFile)m_Archive, NULL, namebuf, 1024, NULL, 0, NULL, 0); - for (c = namebuf; *c; c++) if (*c == wxT('\\')) *c = wxT('/'); - namestr = namebuf; + for (c = namebuf; *c; c++) if (*c == '\\') *c = '/'; + namestr = wxString::FromAscii( namebuf ); // TODO what encoding does ZIP use? if (m_AllowDirs) { diff --git a/src/common/ftp.cpp b/src/common/ftp.cpp index f3126b2f33..23dde41989 100644 --- a/src/common/ftp.cpp +++ b/src/common/ftp.cpp @@ -507,7 +507,7 @@ public: { delete m_i_socket; - if ( LastError() == wxStream_NOERROR ) + if ( IsOk() ) { // wait for "226 transfer completed" m_ftp->CheckResult('2'); diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp index 48925f3429..09222b21d4 100644 --- a/src/common/gdicmn.cpp +++ b/src/common/gdicmn.cpp @@ -364,7 +364,8 @@ wxColour *wxColourDatabase::FindColour(const wxString& colour) #ifdef __WXGTK__ wxColour *col = new wxColour( colour ); - if (!(col->Ok())) { + if (!(col->Ok())) + { delete col; return (wxColour *) NULL; } @@ -382,7 +383,7 @@ wxColour *wxColourDatabase::FindColour(const wxString& colour) Display* display = (Display*) wxGetDisplay(); #endif /* MATTHEW: [4] Use wxGetMainColormap */ - if (!XParseColor(display, (Colormap) wxTheApp->GetMainColormap((WXDisplay*) display), colour,&xcolour)) + if (!XParseColor(display, (Colormap) wxTheApp->GetMainColormap((WXDisplay*) display), colour.ToAscii() ,&xcolour)) return NULL; #if wxUSE_NANOX diff --git a/src/common/geometry.cpp b/src/common/geometry.cpp index da7506b768..e10221ee8e 100644 --- a/src/common/geometry.cpp +++ b/src/common/geometry.cpp @@ -164,7 +164,7 @@ void wxPoint2DInt::ReadFrom( wxDataInputStream &stream ) m_y = stream.Read32(); } -wxDouble wxPoint2DInt::GetVectorAngle() +wxDouble wxPoint2DInt::GetVectorAngle() const { if ( m_x == 0 ) { diff --git a/src/common/imagall.cpp b/src/common/imagall.cpp index ed408ec1df..da9f1c2999 100644 --- a/src/common/imagall.cpp +++ b/src/common/imagall.cpp @@ -55,7 +55,7 @@ void wxInitAllImageHandlers() #if wxUSE_IFF wxImage::AddHandler( new wxIFFHandler ); #endif -#if wxUSE_XPM +#if wxUSE_XPM && (defined(__WXGTK__) || defined(__WXMOTIF__)) wxImage::AddHandler( new wxXPMHandler ); #endif #if wxUSE_ICO_CUR diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 75e579a17b..010c34084a 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -608,7 +608,7 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height, for ( line = (height - 1); line >= 0; line-- ) { int linepos = 0; - for ( column = 0; column < width; ) + for ( column = 0; column < width ; ) { if ( bpp < 16 ) { @@ -631,11 +631,70 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height, { if ( comp == BI_RLE4 ) { - if ( verbose ) - wxLogError(_("DIB Header: Cannot deal with 4bit encoded yet.")); - image->Destroy(); - delete[] cmap; - return FALSE; + wxUint8 first; + first = aByte; + aByte = stream.GetC(); + if ( first == 0 ) + { + if ( aByte == 0 ) + { + if ( column > 0 ) + column = width; + } + else if ( aByte == 1 ) + { + column = width; + line = -1; + } + else if ( aByte == 2 ) + { + aByte = stream.GetC(); + column += aByte; + linepos = column * bpp / 4; + aByte = stream.GetC(); + line -= aByte; // upside down + } + else + { + int absolute = aByte; + wxUint8 nibble[2] ; + int readBytes = 0 ; + for (int k = 0; k < absolute; k++) + { + if ( !(k % 2 ) ) + { + ++readBytes ; + aByte = stream.GetC(); + nibble[0] = ( (aByte & 0xF0) >> 4 ) ; + nibble[1] = ( aByte & 0x0F ) ; + } + ptr[poffset ] = cmap[nibble[k%2]].r; + ptr[poffset + 1] = cmap[nibble[k%2]].g; + ptr[poffset + 2] = cmap[nibble[k%2]].b; + column++; + if ( k % 2 ) + linepos++; + } + if ( readBytes & 0x01 ) + aByte = stream.GetC(); + } + } + else + { + wxUint8 nibble[2] ; + nibble[0] = ( (aByte & 0xF0) >> 4 ) ; + nibble[1] = ( aByte & 0x0F ) ; + + for ( int l = 0; l < first && column < width; l++ ) + { + ptr[poffset ] = cmap[nibble[l%2]].r; + ptr[poffset + 1] = cmap[nibble[l%2]].g; + ptr[poffset + 2] = cmap[nibble[l%2]].b; + column++; + if ( l % 2 ) + linepos++; + } + } } else { @@ -715,63 +774,64 @@ bool wxBMPHandler::DoLoadDib(wxImage * image, int width, int height, // linepos += size; seems to be wrong, RR } } - } - else if ( bpp == 24 ) - { - stream.Read(bbuf, 3); - linepos += 3; - ptr[poffset ] = (unsigned char)bbuf[2]; - ptr[poffset + 1] = (unsigned char)bbuf[1]; - ptr[poffset + 2] = (unsigned char)bbuf[0]; - column++; - } - else if ( bpp == 16 ) - { - unsigned char temp; - stream.Read(&aWord, 2); - aWord = wxUINT16_SWAP_ON_BE(aWord); - linepos += 2; - /* use the masks and calculated amonut of shift + } + else if ( bpp == 24 ) + { + stream.Read(bbuf, 3); + linepos += 3; + ptr[poffset ] = (unsigned char)bbuf[2]; + ptr[poffset + 1] = (unsigned char)bbuf[1]; + ptr[poffset + 2] = (unsigned char)bbuf[0]; + column++; + } + else if ( bpp == 16 ) + { + unsigned char temp; + stream.Read(&aWord, 2); + aWord = wxUINT16_SWAP_ON_BE(aWord); + linepos += 2; + /* use the masks and calculated amonut of shift to retrieve the color data out of the word. Then shift it left by (8 - number of bits) such that the image has the proper dynamic range */ - temp = (aWord & rmask) >> rshift << (8-rbits); - ptr[poffset] = temp; - temp = (aWord & gmask) >> gshift << (8-gbits); - ptr[poffset + 1] = temp; - temp = (aWord & bmask) >> bshift << (8-bbits); - ptr[poffset + 2] = temp; - column++; - } - else - { - unsigned char temp; - stream.Read(&aDword, 4); - aDword = wxINT32_SWAP_ON_BE(aDword); - linepos += 4; - temp = (aDword & rmask) >> rshift; - ptr[poffset] = temp; - temp = (aDword & gmask) >> gshift; - ptr[poffset + 1] = temp; - temp = (aDword & bmask) >> bshift; - ptr[poffset + 2] = temp; - column++; - } - } - while ( (linepos < linesize) && (comp != 1) && (comp != 2) ) - { - stream.Read(&aByte, 1); - linepos += 1; - if ( stream.LastError() != wxStream_NOERROR ) - break; - } - } - if (cmap) - delete[] cmap; + temp = (aWord & rmask) >> rshift << (8-rbits); + ptr[poffset] = temp; + temp = (aWord & gmask) >> gshift << (8-gbits); + ptr[poffset + 1] = temp; + temp = (aWord & bmask) >> bshift << (8-bbits); + ptr[poffset + 2] = temp; + column++; + } + else + { + unsigned char temp; + stream.Read(&aDword, 4); + aDword = wxINT32_SWAP_ON_BE(aDword); + linepos += 4; + temp = (aDword & rmask) >> rshift; + ptr[poffset] = temp; + temp = (aDword & gmask) >> gshift; + ptr[poffset + 1] = temp; + temp = (aDword & bmask) >> bshift; + ptr[poffset + 2] = temp; + column++; + } + } + while ( (linepos < linesize) && (comp != 1) && (comp != 2) ) + { + stream.Read(&aByte, 1); + linepos += 1; + if ( !stream ) + break; + } + } - image->SetMask(FALSE); + delete[] cmap; - return ( stream.LastError() == wxSTREAM_NO_ERROR || stream.LastError() == wxSTREAM_EOF ); + image->SetMask(FALSE); + + const wxStreamError err = stream.GetLastError(); + return err == wxSTREAM_NO_ERROR || err == wxSTREAM_EOF; } bool wxBMPHandler::LoadDib(wxImage *image, wxInputStream& stream, @@ -1219,7 +1279,7 @@ int wxICOHandler::GetImageCount(wxInputStream& stream) bool wxICOHandler::DoCanRead(wxInputStream& stream) { - stream.SeekI(0); + stream.SeekI(0); unsigned char hdr[4]; if ( !stream.Read(hdr, WXSIZEOF(hdr)) ) return FALSE; @@ -1258,14 +1318,13 @@ bool wxANIHandler::LoadFile(wxImage *image, wxInputStream& stream, { wxInt32 FCC1, FCC2; wxUint32 datalen; - static const char *rifftxt = "RIFF"; - static const char *listtxt = "LIST"; - static const char *icotxt = "icon"; - - wxInt32 riff32 = (wxInt32) rifftxt; - wxInt32 list32 = (wxInt32) listtxt; - wxInt32 ico32 = (wxInt32) icotxt; + wxInt32 riff32; + memcpy( &riff32, "RIFF", 4 ); + wxInt32 list32; + memcpy( &list32, "LIST", 4 ); + wxInt32 ico32; + memcpy( &ico32, "icon", 4 ); int iIcon = 0; stream.SeekI(0); @@ -1310,14 +1369,16 @@ bool wxANIHandler::DoCanRead(wxInputStream& stream) { wxInt32 FCC1, FCC2; wxUint32 datalen ; - static const char *rifftxt = "RIFF"; - static const char *listtxt = "LIST"; - static const char *anihtxt = "anih"; - - wxInt32 riff32 = (wxInt32) rifftxt; - wxInt32 list32 = (wxInt32) listtxt; - wxInt32 anih32 = (wxInt32) anihtxt; - + + wxInt32 riff32; + memcpy( &riff32, "RIFF", 4 ); + wxInt32 list32; + memcpy( &list32, "LIST", 4 ); + wxInt32 ico32; + memcpy( &ico32, "icon", 4 ); + wxInt32 anih32; + memcpy( &anih32, "anih", 4 ); + stream.SeekI(0); if ( !stream.Read(&FCC1, 4) ) return FALSE; @@ -1360,14 +1421,16 @@ int wxANIHandler::GetImageCount(wxInputStream& stream) { wxInt32 FCC1, FCC2; wxUint32 datalen ; - static const char *rifftxt = "RIFF"; - static const char *listtxt = "LIST"; - static const char *anihtxt = "anih"; - - wxInt32 riff32 = (wxInt32) rifftxt; - wxInt32 list32 = (wxInt32) listtxt; - wxInt32 anih32 = (wxInt32) anihtxt; + wxInt32 riff32; + memcpy( &riff32, "RIFF", 4 ); + wxInt32 list32; + memcpy( &list32, "LIST", 4 ); + wxInt32 ico32; + memcpy( &ico32, "icon", 4 ); + wxInt32 anih32; + memcpy( &anih32, "anih", 4 ); + stream.SeekI(0); stream.Read(&FCC1, 4); if ( FCC1 != riff32 ) diff --git a/src/common/image.cpp b/src/common/image.cpp index 3241ed03cd..bead6bf143 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -207,6 +207,105 @@ wxImage wxImage::Copy() const return image; } +wxImage wxImage::ShrinkBy( int xFactor , int yFactor ) const +{ + if( xFactor == 1 && yFactor == 1 ) + return Copy() ; + + wxImage image; + + wxCHECK_MSG( Ok(), image, wxT("invalid image") ); + + // can't scale to/from 0 size + wxCHECK_MSG( (xFactor > 0) && (yFactor > 0), image, + wxT("invalid new image size") ); + + long old_height = M_IMGDATA->m_height, + old_width = M_IMGDATA->m_width; + + wxCHECK_MSG( (old_height > 0) && (old_width > 0), image, + wxT("invalid old image size") ); + + long width = old_width / xFactor ; + long height = old_height / yFactor ; + + image.Create( width , height ); + + char unsigned *data = image.GetData(); + + wxCHECK_MSG( data, image, wxT("unable to create image") ); + + bool hasMask = false ; + unsigned char maskRed = 0; + unsigned char maskGreen = 0; + unsigned char maskBlue =0 ; + if (M_IMGDATA->m_hasMask) + { + hasMask = true ; + maskRed = M_IMGDATA->m_maskRed; + maskGreen = M_IMGDATA->m_maskGreen; + maskBlue =M_IMGDATA->m_maskBlue ; + + image.SetMaskColour( M_IMGDATA->m_maskRed, + M_IMGDATA->m_maskGreen, + M_IMGDATA->m_maskBlue ); + } + char unsigned *source_data = M_IMGDATA->m_data; + char unsigned *target_data = data; + + for (long y = 0; y < height; y++) + { + for (long x = 0; x < width; x++) + { + unsigned long avgRed = 0 ; + unsigned long avgGreen = 0; + unsigned long avgBlue = 0; + unsigned long counter = 0 ; + // determine average + for ( int y1 = 0 ; y1 < yFactor ; ++y1 ) + { + long y_offset = (y * yFactor + y1) * old_width; + for ( int x1 = 0 ; x1 < xFactor ; ++x1 ) + { + unsigned char *pixel = source_data + 3 * ( y_offset + x * xFactor + x1 ) ; + unsigned char red = pixel[0] ; + unsigned char green = pixel[1] ; + unsigned char blue = pixel[2] ; + if ( !hasMask || red != maskRed || green != maskGreen || blue != maskBlue ) + { + avgRed += red ; + avgGreen += green ; + avgBlue += blue ; + counter++ ; + } + } + } + if ( counter == 0 ) + { + *(target_data++) = M_IMGDATA->m_maskRed ; + *(target_data++) = M_IMGDATA->m_maskGreen ; + *(target_data++) = M_IMGDATA->m_maskBlue ; + } + else + { + *(target_data++) = avgRed / counter ; + *(target_data++) = avgGreen / counter ; + *(target_data++) = avgBlue / counter ; + } + } + } + + // In case this is a cursor, make sure the hotspot is scalled accordingly: + if ( HasOption(wxIMAGE_OPTION_CUR_HOTSPOT_X) ) + image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, + (GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X))/xFactor); + if ( HasOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y) ) + image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, + (GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y))/yFactor); + + return image; +} + wxImage wxImage::Scale( int width, int height ) const { wxImage image; @@ -222,6 +321,11 @@ wxImage wxImage::Scale( int width, int height ) const wxCHECK_MSG( (old_height > 0) && (old_width > 0), image, wxT("invalid old image size") ); + if ( old_width % width == 0 && old_width >= width && + old_height % height == 0 && old_height >= height ) + { + return ShrinkBy( old_width / width , old_height / height ) ; + } image.Create( width, height ); char unsigned *data = image.GetData(); @@ -964,7 +1068,7 @@ bool wxImage::SaveFile( const wxString& filename, int type ) const wxFileOutputStream stream(filename); - if ( stream.LastError() == wxStream_NOERROR ) + if ( stream.IsOk() ) { wxBufferedOutputStream bstream( stream ); return SaveFile(bstream, type); @@ -981,7 +1085,7 @@ bool wxImage::SaveFile( const wxString& filename, const wxString& mimetype ) con wxFileOutputStream stream(filename); - if ( stream.LastError() == wxStream_NOERROR ) + if ( stream.IsOk() ) { wxBufferedOutputStream bstream( stream ); return SaveFile(bstream, mimetype); @@ -1005,10 +1109,10 @@ int wxImage::GetImageCount( const wxString &name, long type ) { #if wxUSE_STREAMS wxFileInputStream stream(name); - return GetImageCount(stream, type); -#else - return 0; + if (stream.Ok()) + return GetImageCount(stream, type); #endif + return 0; } #if wxUSE_STREAMS @@ -1092,7 +1196,7 @@ bool wxImage::LoadFile( wxInputStream& stream, long type, int index ) handler = FindHandler(type); - if (handler == NULL) + if (handler == 0) { wxLogWarning( _("No image handler for type %d defined."), type ); @@ -1110,7 +1214,7 @@ bool wxImage::LoadFile( wxInputStream& stream, const wxString& mimetype, int ind wxImageHandler *handler = FindHandlerMime(mimetype); - if (handler == NULL) + if (handler == 0) { wxLogWarning( _("No image handler for type %s defined."), mimetype.GetData() ); @@ -1126,7 +1230,7 @@ bool wxImage::SaveFile( wxOutputStream& stream, int type ) const wxImageHandler *handler = FindHandler(type); - if (handler == NULL) + if (handler == 0) { wxLogWarning( _("No image handler for type %d defined."), type ); @@ -1142,7 +1246,7 @@ bool wxImage::SaveFile( wxOutputStream& stream, const wxString& mimetype ) const wxImageHandler *handler = FindHandlerMime(mimetype); - if (handler == NULL) + if (handler == 0) { wxLogWarning( _("No image handler for type %s defined."), mimetype.GetData() ); @@ -1158,7 +1262,23 @@ void wxImage::AddHandler( wxImageHandler *handler ) // make sure that the memory will be freed at the program end sm_handlers.DeleteContents(TRUE); - sm_handlers.Append( handler ); + // Check for an existing handler of the type being added. + if (FindHandler( handler->GetType() ) == 0) + { + sm_handlers.Append( handler ); + } + else + { + // This is not documented behaviour, merely the simplest 'fix' + // for preventing duplicate additions. If someone ever has + // a good reason to add and remove duplicate handlers (and they + // may) we should probably refcount the duplicates. + // also an issue in InsertHandler below. + + wxLogDebug( _T("Adding duplicate image handler for '%s'"), + handler->GetName().c_str() ); + delete handler; + } } void wxImage::InsertHandler( wxImageHandler *handler ) @@ -1166,7 +1286,18 @@ void wxImage::InsertHandler( wxImageHandler *handler ) // make sure that the memory will be freed at the program end sm_handlers.DeleteContents(TRUE); - sm_handlers.Insert( handler ); + // Check for an existing handler of the type being added. + if (FindHandler( handler->GetType() ) == 0) + { + sm_handlers.Insert( handler ); + } + else + { + // see AddHandler for additional comments. + wxLogDebug( _T("Inserting duplicate image handler for '%s'"), + handler->GetName().c_str() ); + delete handler; + } } bool wxImage::RemoveHandler( const wxString& name ) @@ -1191,7 +1322,7 @@ wxImageHandler *wxImage::FindHandler( const wxString& name ) node = node->Next(); } - return (wxImageHandler *)NULL; + return 0; } wxImageHandler *wxImage::FindHandler( const wxString& extension, long bitmapType ) @@ -1205,7 +1336,7 @@ wxImageHandler *wxImage::FindHandler( const wxString& extension, long bitmapType return handler; node = node->Next(); } - return (wxImageHandler*)NULL; + return 0; } wxImageHandler *wxImage::FindHandler( long bitmapType ) @@ -1217,7 +1348,7 @@ wxImageHandler *wxImage::FindHandler( long bitmapType ) if (handler->GetType() == bitmapType) return handler; node = node->Next(); } - return NULL; + return 0; } wxImageHandler *wxImage::FindHandlerMime( const wxString& mimetype ) @@ -1229,7 +1360,7 @@ wxImageHandler *wxImage::FindHandlerMime( const wxString& mimetype ) if (handler->GetMimeType().IsSameAs(mimetype, FALSE)) return handler; node = node->Next(); } - return NULL; + return 0; } void wxImage::InitStandardHandlers() @@ -1319,7 +1450,7 @@ bool wxImageHandler::CallDoCanRead(wxInputStream& stream) //----------------------------------------------------------------------------- -// Deprecated wxBitmap convertion routines +// Deprecated wxBitmap conversion routines //----------------------------------------------------------------------------- #if WXWIN_COMPATIBILITY_2_2 && wxUSE_GUI diff --git a/src/common/imagjpeg.cpp b/src/common/imagjpeg.cpp index c2525bae43..b1e8b9e3de 100644 --- a/src/common/imagjpeg.cpp +++ b/src/common/imagjpeg.cpp @@ -28,11 +28,12 @@ #include "wx/log.h" #include "wx/app.h" -// NB: Some compilers define boolean type in Windows headers (e.g. Watcom C++). +// NB: Some compilers define boolean type in Windows headers +// (e.g. Watcom C++, but not Open Watcom). // This causes a conflict with jmorecfg.h header from libjpeg, so we have // to make sure libjpeg won't try to define boolean itself. This is done by // defining HAVE_BOOLEAN. -#if defined(__WXMSW__) && (defined(__MWERKS__) || defined(__WATCOMC__)) +#if defined(__WXMSW__) && (defined(__MWERKS__) || (defined(__WATCOMC__) && __WATCOMC__ < 1200)) #define HAVE_BOOLEAN #include #endif diff --git a/src/common/imagpng.cpp b/src/common/imagpng.cpp index b1fea3c1fe..45dd9c46ca 100644 --- a/src/common/imagpng.cpp +++ b/src/common/imagpng.cpp @@ -57,7 +57,17 @@ IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler) #if wxUSE_LIBPNG #ifndef PNGLINKAGEMODE - #define PNGLINKAGEMODE LINKAGEMODE + #ifdef __WATCOMC__ + // we need an explicit cdecl for Watcom, at least according to + // + // http://sf.net/tracker/index.php?func=detail&aid=651492&group_id=9863&atid=109863 + // + // more testing is needed for this however, please remove this comment + // if you can confirm that my fix works with Watcom 11 + #define PNGLINKAGEMODE cdecl + #else + #define PNGLINKAGEMODE LINKAGEMODE + #endif #endif @@ -111,8 +121,8 @@ void PNGLINKAGEMODE wx_png_error(png_structp png_ptr, png_const_charp message) { wxPNGInfoStruct *info = WX_PNG_INFO(png_ptr); - if ( info->verbose ) - wxLogError(wxString(message)); + if (info->verbose) + wxLogError( wxString::FromAscii(message) ); #ifdef USE_FAR_KEYWORD { @@ -129,8 +139,8 @@ void PNGLINKAGEMODE wx_png_warning(png_structp png_ptr, png_const_charp message) { wxPNGInfoStruct *info = WX_PNG_INFO(png_ptr); - if ( info->verbose ) - wxLogWarning(wxString(message)); + if (info->verbose) + wxLogWarning( wxString::FromAscii(message) ); } } // extern "C" @@ -188,6 +198,10 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_expand( png_ptr ); + // Fix for Bug [ 439207 ] Monochrome PNG images come up black + if (bit_depth < 8) + png_set_expand( png_ptr ); + png_set_strip_16( png_ptr ); png_set_packing( png_ptr ); if (png_get_valid( png_ptr, info_ptr, PNG_INFO_tRNS)) diff --git a/src/common/imagpnm.cpp b/src/common/imagpnm.cpp index a11007de33..984de04ca4 100644 --- a/src/common/imagpnm.cpp +++ b/src/common/imagpnm.cpp @@ -39,12 +39,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxPNMHandler,wxImageHandler) void Skip_Comment(wxInputStream &stream) { - wxTextInputStream text_stream(stream); + wxTextInputStream text_stream(stream); - if (stream.Peek()==wxT('#')) + if (stream.Peek()==wxT('#')) { - text_stream.ReadLine(); - Skip_Comment(stream); + text_stream.ReadLine(); + Skip_Comment(stream); } } @@ -107,7 +107,7 @@ bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose value=text_stream.Read32(); *ptr++=(unsigned char)value; - if (buf_stream.LastError()!=wxSTREAM_NOERROR) + if ( !buf_stream ) { if (verbose) wxLogError(_("PNM: File seems truncated.")); return FALSE; @@ -119,7 +119,8 @@ bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose image->SetMask( FALSE ); - return (buf_stream.LastError()==wxStream_NOERROR || buf_stream.LastError()==wxStream_EOF); + const wxStreamError err = buf_stream.GetLastError(); + return err == wxSTREAM_NO_ERROR || err == wxSTREAM_EOF; } bool wxPNMHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool WXUNUSED(verbose) ) @@ -129,10 +130,10 @@ bool wxPNMHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool WXUNUS //text_stream << "P6" << endl //<< image->GetWidth() << " " << image->GetHeight() << endl //<< "255" << endl; - text_stream << "P6\n" << image->GetWidth() << " " << image->GetHeight() << "\n255\n"; + text_stream << wxT("P6\n") << image->GetWidth() << wxT(" ") << image->GetHeight() << wxT("\n255\n"); stream.Write(image->GetData(),3*image->GetWidth()*image->GetHeight()); - return (stream.LastError()==wxStream_NOERROR); + return stream.IsOk(); } bool wxPNMHandler::DoCanRead( wxInputStream& stream ) diff --git a/src/common/imagxpm.cpp b/src/common/imagxpm.cpp index c6ad6d6aa1..485aa239c0 100644 --- a/src/common/imagxpm.cpp +++ b/src/common/imagxpm.cpp @@ -107,6 +107,19 @@ bool wxXPMHandler::LoadFile(wxImage *image, return TRUE; } + +static char hexArray[] = "0123456789ABCDEF"; + +static void DecToHex(int dec, char *buf) +{ + int firstDigit = (int)(dec/16.0); + int secondDigit = (int)(dec - (firstDigit*16.0)); + buf[0] = hexArray[firstDigit]; + buf[1] = hexArray[secondDigit]; + buf[2] = 0; +} + + bool wxXPMHandler::SaveFile(wxImage * image, wxOutputStream& stream, bool WXUNUSED(verbose)) { @@ -140,7 +153,7 @@ bool wxXPMHandler::SaveFile(wxImage * image, sName = wxString(wxT("/* XPM */\nstatic char *")) + sName; else sName = wxT("/* XPM */\nstatic char *xpm_data"); - stream.Write(sName.c_str(), sName.Len()); + stream.Write( (const char*) sName.ToAscii(), sName.Len() ); char tmpbuf[200]; // VS: 200b is safe upper bound for anything produced by sprintf below @@ -185,19 +198,24 @@ bool wxXPMHandler::SaveFile(wxImage * image, unsigned long key = entry->first; if (key == 0) - tmp.Printf(wxT("\"%s c Black\",\n"), sym); + sprintf( tmpbuf, "\"%s c Black\",\n", sym); else if (key == mask_key) - tmp.Printf(wxT("\"%s c None\",\n"), sym); + sprintf( tmpbuf, "\"%s c None\",\n", sym); else - tmp.Printf(wxT("\"%s c #%s%s%s\",\n"), sym, - wxDecToHex((unsigned char)(key >> 16)).c_str(), - wxDecToHex((unsigned char)(key >> 8)).c_str(), - wxDecToHex((unsigned char)(key)).c_str()); - stream.Write(tmp.mb_str(), tmp.Length()); + { + char rbuf[3]; + DecToHex( (unsigned char)(key >> 16), rbuf ); + char gbuf[3]; + DecToHex( (unsigned char)(key >> 8), gbuf ); + char bbuf[3]; + DecToHex( (unsigned char)(key), bbuf ); + sprintf( tmpbuf, "\"%s c #%s%s%s\",\n", sym, rbuf, gbuf, bbuf ); + } + stream.Write( tmpbuf, strlen(tmpbuf) ); } tmp = wxT("/* pixels */\n"); - stream.Write(tmp.mb_str(), tmp.Length()); + stream.Write( (const char*) tmp.ToAscii(), tmp.Length() ); unsigned char *data = image->GetData(); for (j = 0; j < image->GetHeight(); j++) @@ -216,7 +234,7 @@ bool wxXPMHandler::SaveFile(wxImage * image, tmp_c = '\n'; stream.Write(&tmp_c, 1); } tmp = wxT("};\n"); - stream.Write(tmp.mb_str(), 3); + stream.Write( (const char*) tmp.ToAscii(), 3 ); // Clean up: delete[] symbols; diff --git a/src/common/init.cpp b/src/common/init.cpp index 2e4b571d1f..02944f73f6 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -160,7 +160,7 @@ int wxEntry(int argc, char **argv) wxTheApp->argv = argv; #endif - wxString name = wxFileNameFromPath(argv[0]); + wxString name = wxFileNameFromPath(wxTheApp->argv[0]); wxStripExtension(name); wxTheApp->SetAppName(name); diff --git a/src/common/intl.cpp b/src/common/intl.cpp index 3b26983d77..c2c4bda648 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -147,7 +147,7 @@ static inline wxString ExtractNotLang(const wxString& langFull) // This is a "low-level" class and is used only by wxMsgCatalog // ---------------------------------------------------------------------------- -WX_DECLARE_EXPORTED_STRING_HASH_MAP(wxString, wxMessagesHash) +WX_DECLARE_EXPORTED_STRING_HASH_MAP(wxString, wxMessagesHash); class wxMsgCatalogFile { @@ -506,7 +506,7 @@ wxString wxMsgCatalogFile::GetCharset() const return wxEmptyString; } - wxString header(StringAtOfs(m_pTransTable, 0)); + wxString header = wxString::FromAscii( StringAtOfs(m_pTransTable, 0)); wxString charset; int pos = header.Find(wxT("Content-Type: text/plain; charset=")); if ( pos == wxNOT_FOUND ) @@ -666,7 +666,6 @@ bool wxLocale::Init(int language, int flags) wxString name = info->Description; wxString canonical = info->CanonicalName; wxString locale; - const wxChar *retloc; // Set the locale: #if defined(__UNIX__) && !defined(__WXMAC__) @@ -675,48 +674,55 @@ bool wxLocale::Init(int language, int flags) else locale = info->CanonicalName; - retloc = wxSetlocale(LC_ALL, locale); + wxMB2WXbuf retloc = wxSetlocale(LC_ALL, locale); - if (retloc == NULL) + if ( !retloc ) { // Some C libraries don't like xx_YY form and require xx only retloc = wxSetlocale(LC_ALL, locale.Mid(0,2)); } - if (retloc == NULL) + if ( !retloc ) { // Some C libraries (namely glibc) still use old ISO 639, // so will translate the abbrev for them wxString mid = locale.Mid(0,2); - if (mid == wxT("he")) locale = wxT("iw") + locale.Mid(3); - else if (mid == wxT("id")) locale = wxT("in") + locale.Mid(3); - else if (mid == wxT("yi")) locale = wxT("ji") + locale.Mid(3); + if (mid == wxT("he")) + locale = wxT("iw") + locale.Mid(3); + else if (mid == wxT("id")) + locale = wxT("in") + locale.Mid(3); + else if (mid == wxT("yi")) + locale = wxT("ji") + locale.Mid(3); + retloc = wxSetlocale(LC_ALL, locale); } - if (retloc == NULL) + if ( !retloc ) { // (This time, we changed locale in previous if-branch, so try again.) // Some C libraries don't like xx_YY form and require xx only retloc = wxSetlocale(LC_ALL, locale.Mid(0,2)); } - if (retloc == NULL) + if ( !retloc ) { wxLogError(wxT("Cannot set locale to '%s'."), locale.c_str()); return FALSE; } #elif defined(__WIN32__) + wxMB2WXbuf retloc = wxT("C"); if (language != wxLANGUAGE_DEFAULT) { if (info->WinLang == 0) { wxLogWarning(wxT("Locale '%s' not supported by OS."), name.c_str()); - retloc = wxT("C"); + // retloc already set to "C" } else { wxUint32 lcid = MAKELCID(MAKELANGID(info->WinLang, info->WinSublang), SORT_DEFAULT); if (SetThreadLocale(lcid)) + { retloc = wxSetlocale(LC_ALL, wxEmptyString); + } else { // Windows9X doesn't support SetThreadLocale, so we must @@ -738,27 +744,34 @@ bool wxLocale::Init(int language, int flags) return FALSE; } else + { retloc = wxSetlocale(LC_ALL, locale); + } } } } else + { retloc = wxSetlocale(LC_ALL, wxEmptyString); + } - if (retloc == NULL) + if ( !retloc ) { wxLogError(wxT("Cannot set locale to language %s."), name.c_str()); return FALSE; } -#elif defined(__WXMAC__) - retloc = wxSetlocale(LC_ALL , wxEmptyString); +#elif defined(__WXMAC__) || defined(__WXPM__) + wxMB2WXbuf retloc = wxSetlocale(LC_ALL , wxEmptyString); #else return FALSE; + #define WX_NO_LOCALE_SUPPORT #endif - return Init(name, canonical, wxString(retloc), +#ifndef WX_NO_LOCALE_SUPPORT + return Init(name, canonical, retloc, (flags & wxLOCALE_LOAD_DEFAULT) != 0, (flags & wxLOCALE_CONV_ENCODING) != 0); +#endif } @@ -1334,6 +1347,17 @@ wxFontEncoding wxLocale::GetSystemEncoding() wxFontEncoding enc = wxFontMapper::Get()-> CharsetToEncoding(encname, FALSE /* not interactive */); + // on some modern Linux systems (RedHat 8) the default system locale + // is UTF8 -- but it isn't supported by wxGTK in ANSI build at all so + // don't even try to use it in this case +#if !wxUSE_UNICODE + if ( enc == wxFONTENCODING_UTF8 ) + { + // the most similar supported encoding... + enc = wxFONTENCODING_ISO8859_1; + } +#endif // !wxUSE_UNICODE + // this should probably be considered as a bug in CharsetToEncoding(): // it shouldn't return wxFONTENCODING_DEFAULT at all - but it does it // for US-ASCII charset @@ -2095,7 +2119,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxLocaleModule, wxModule) #define LNG(wxlang, canonical, winlang, winsublang, desc) \ info.Language = wxlang; \ info.CanonicalName = wxT(canonical); \ - info.Description = desc; \ + info.Description = wxT(desc); \ SETWINLANG(info, winlang, winsublang) \ AddLanguage(info); @@ -2147,11 +2171,11 @@ void wxLocale::InitLanguagesDB() LNG(wxLANGUAGE_CATALAN, "ca_ES", LANG_CATALAN , SUBLANG_DEFAULT , "Catalan") LNG(wxLANGUAGE_CHINESE, "zh_CN", LANG_CHINESE , SUBLANG_DEFAULT , "Chinese") LNG(wxLANGUAGE_CHINESE_SIMPLIFIED, "zh_CN", LANG_CHINESE , SUBLANG_CHINESE_SIMPLIFIED , "Chinese (Simplified)") - LNG(wxLANGUAGE_CHINESE_TRADITIONAL, "zh_CN", LANG_CHINESE , SUBLANG_CHINESE_TRADITIONAL , "Chinese (Traditional)") + LNG(wxLANGUAGE_CHINESE_TRADITIONAL, "zh_TW", LANG_CHINESE , SUBLANG_CHINESE_TRADITIONAL , "Chinese (Traditional)") LNG(wxLANGUAGE_CHINESE_HONGKONG, "zh_HK", LANG_CHINESE , SUBLANG_CHINESE_HONGKONG , "Chinese (Hongkong)") LNG(wxLANGUAGE_CHINESE_MACAU, "zh_MO", LANG_CHINESE , SUBLANG_CHINESE_MACAU , "Chinese (Macau)") LNG(wxLANGUAGE_CHINESE_SINGAPORE, "zh_SG", LANG_CHINESE , SUBLANG_CHINESE_SINGAPORE , "Chinese (Singapore)") - LNG(wxLANGUAGE_CHINESE_TAIWAN, "zh_TW", 0 , 0 , "Chinese (Taiwan)") + LNG(wxLANGUAGE_CHINESE_TAIWAN, "zh_TW", LANG_CHINESE , SUBLANG_CHINESE_TRADITIONAL , "Chinese (Taiwan)") LNG(wxLANGUAGE_CORSICAN, "co" , 0 , 0 , "Corsican") LNG(wxLANGUAGE_CROATIAN, "hr_HR", LANG_CROATIAN , SUBLANG_DEFAULT , "Croatian") LNG(wxLANGUAGE_CZECH, "cs_CZ", LANG_CZECH , SUBLANG_DEFAULT , "Czech") diff --git a/src/common/log.cpp b/src/common/log.cpp index b577f27aef..8c5c23be29 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -509,9 +509,8 @@ wxLogStderr::wxLogStderr(FILE *fp) m_fp = fp; } -#if defined(__WXMAC__) && !defined(__DARWIN__) && (__MWERKS__ > 0x5300) +#if defined(__WXMAC__) && !defined(__DARWIN__) && defined(__MWERKS__) && (__MWERKS__ >= 0x2400) -#if !TARGET_API_MAC_CARBON // MetroNub stuff doesn't seem to work in CodeWarrior 5.3 Carbon builds... #ifndef __MetroNubUtils__ @@ -694,9 +693,7 @@ OSErr ClearWatchPoint (WatchPointIDT watchPointID) } #endif -#endif // !TARGET_API_MAC_CARBON - -#endif // defined(__WXMAC__) && !defined(__DARWIN__) && (__MWERKS__ > 0x5300) +#endif // defined(__WXMAC__) && !defined(__DARWIN__) && (__MWERKS__ >= 0x2400) void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) { @@ -722,7 +719,7 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) Boolean running = false ; -#if !TARGET_API_MAC_CARBON && (__MWERKS__ > 0x5300) +#if defined(__MWERKS__) && (__MWERKS__ >= 0x2400) if ( IsMWDebuggerRunning() && AmIBeingMWDebugged() ) { @@ -848,6 +845,8 @@ bool wxLog::ms_doLog = TRUE; bool wxLog::ms_bAutoCreate = TRUE; bool wxLog::ms_bVerbose = FALSE; +wxLogLevel wxLog::ms_logLevel = wxLOG_Max; // log everything by default + size_t wxLog::ms_suspendCount = 0; #if wxUSE_GUI diff --git a/src/common/memory.cpp b/src/common/memory.cpp index a7439bacfd..0f44178f44 100644 --- a/src/common/memory.cpp +++ b/src/common/memory.cpp @@ -33,6 +33,7 @@ #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/app.h" +#include "wx/hash.h" #endif #if wxUSE_THREADS @@ -349,7 +350,7 @@ void wxMemStruct::PrintNode () } else { - wxString msg(""); + wxString msg(wxT("")); if (m_fileName) msg.Printf(wxT("%s(%d): "), m_fileName, (int)m_lineNum); @@ -387,7 +388,7 @@ void wxMemStruct::Dump () else msg += wxT("unknown object class"); - wxString msg2(""); + wxString msg2(wxT("")); msg2.Printf(wxT(" at $%lX, size %d"), (long)GetActualData(), (int)RequestSize()); msg += msg2; @@ -399,7 +400,7 @@ void wxMemStruct::Dump () if (m_fileName) msg.Printf(wxT("%s(%d): "), m_fileName, (int)m_lineNum); - wxString msg2(""); + wxString msg2(wxT("")); msg2.Printf(wxT("non-object data at $%lX, size %d"), (long)GetActualData(), (int)RequestSize() ); msg += msg2; wxLogMessage(msg); @@ -607,7 +608,7 @@ bool wxDebugContext::Dump(void) #ifdef __WXDEBUG__ { wxChar* appName = (wxChar*) wxT("application"); - wxString appNameStr(""); + wxString appNameStr(wxT("")); if (wxTheApp) { appNameStr = wxTheApp->GetAppName(); diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index ee97f56614..707646dfa7 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -132,7 +132,13 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) else { if ( current.Len() == 1 ) { // it's a letter - keyCode = wxToupper(current[0U]); + keyCode = current[0U]; + + // Only call wxToupper if control, alt, or shift is held down, + // otherwise lower case accelerators won't work. + if (accelFlags != wxACCEL_NORMAL) { + keyCode = wxToupper(keyCode); + } } else { // is it a function key? @@ -159,14 +165,39 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) else if ( current == wxT("INSERT") ) { keyCode = WXK_INSERT; } -#if 0 + else if ( current == wxT("ENTER") || current == wxT("RETURN") ) { + keyCode = WXK_RETURN; + } else if ( current == wxT("PGUP") ) { - keyCode = VK_PRIOR; + keyCode = WXK_PRIOR; } else if ( current == wxT("PGDN") ) { - keyCode = VK_NEXT; + keyCode = WXK_NEXT; + } + else if ( current == wxT("LEFT") ) { + keyCode = WXK_LEFT; + } + else if ( current == wxT("RIGHT") ) { + keyCode = WXK_RIGHT; + } + else if ( current == wxT("UP") ) { + keyCode = WXK_UP; + } + else if ( current == wxT("DOWN") ) { + keyCode = WXK_DOWN; + } + else if ( current == wxT("HOME") ) { + keyCode = WXK_HOME; + } + else if ( current == wxT("END") ) { + keyCode = WXK_END; + } + else if ( current == wxT("SPACE") ) { + keyCode = WXK_SPACE; + } + else if ( current == wxT("TAB") ) { + keyCode = WXK_TAB; } -#endif else { wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."), @@ -789,7 +820,7 @@ int wxMenuBarBase::FindMenu(const wxString& title) const (wxMenuItem::GetLabelFromText(title2) == label) ) { // found - return (int)i; + return (int)i; } } diff --git a/src/common/mimecmn.cpp b/src/common/mimecmn.cpp index 1335ec68bf..c663f9d7bd 100644 --- a/src/common/mimecmn.cpp +++ b/src/common/mimecmn.cpp @@ -426,7 +426,7 @@ bool wxFileType::SetDefaultIcon(const wxString& cmd, int index) // VZ: should we do this? // chris elliott : only makes sense in MS windows if ( sTmp.empty() ) - GetOpenCommand(&sTmp, wxFileType::MessageParameters("", "")); + GetOpenCommand(&sTmp, wxFileType::MessageParameters(wxT(""), wxT(""))); #endif wxCHECK_MSG( !sTmp.empty(), FALSE, _T("need the icon file") ); diff --git a/src/common/mstream.cpp b/src/common/mstream.cpp index 9226ce4461..b1ac75aa94 100644 --- a/src/common/mstream.cpp +++ b/src/common/mstream.cpp @@ -80,7 +80,7 @@ size_t wxMemoryInputStream::OnSysRead(void *buffer, size_t nbytes) } m_i_streambuf->Read(buffer, nbytes); - m_lasterror = wxSTREAM_NOERROR; + m_lasterror = wxSTREAM_NO_ERROR; return m_i_streambuf->GetIntPosition() - pos; } diff --git a/src/common/paper.cpp b/src/common/paper.cpp index d8775f2c62..58156a1bb4 100644 --- a/src/common/paper.cpp +++ b/src/common/paper.cpp @@ -59,7 +59,7 @@ wxPrintPaperType::wxPrintPaperType() { m_paperId = wxPAPER_NONE; m_platformId = 0; - m_paperName = ""; + m_paperName = wxT(""); m_width = 0; m_height = 0; } diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index d1a4e3f691..7da0ae7fc7 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -37,7 +37,8 @@ #include "wx/stattext.h" #include "wx/intl.h" #include "wx/textdlg.h" -#endif +#include "wx/sizer.h" +#endif // !WX_PRECOMP #include "wx/prntbase.h" #include "wx/dcprint.h" @@ -47,8 +48,6 @@ #include #include -#include - #ifdef __WXMSW__ #include "wx/msw/private.h" #include @@ -371,9 +370,9 @@ void wxPreviewControlBar::OnGoto(void) wxString strPrompt; wxString strPage; - strPrompt.Printf( _("%d...%d"), + strPrompt.Printf( wxT("%d...%d"), preview->GetMinPage(), preview->GetMaxPage()); - strPage.Printf( _("%d"), preview->GetCurrentPage() ); + strPage.Printf( wxT("%d"), preview->GetCurrentPage() ); strPage = wxGetTextFromUser( strPrompt, _("Goto Page"), strPage); @@ -468,18 +467,18 @@ void wxPreviewControlBar::CreateButtons() if (m_buttonFlags & wxPREVIEW_GOTO) { - m_gotoPageButton = new wxButton(this, wxID_PREVIEW_GOTO, wxT("Goto..."), wxPoint(x, y), + m_gotoPageButton = new wxButton(this, wxID_PREVIEW_GOTO, _("Goto..."), wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); x += gap + buttonWidth; } if (m_buttonFlags & wxPREVIEW_ZOOM) { - static const char *choices[] = + static const wxChar *choices[] = { - "10%", "15%", "20%", "25%", "30%", "35%", "40%", "45%", "50%", "55%", - "60%", "65%", "70%", "75%", "80%", "85%", "90%", "95%", "100%", "110%", - "120%", "150%", "200%" + wxT("10%"), wxT("15%"), wxT("20%"), wxT("25%"), wxT("30%"), wxT("35%"), wxT("40%"), wxT("45%"), wxT("50%"), wxT("55%"), + wxT("60%"), wxT("65%"), wxT("70%"), wxT("75%"), wxT("80%"), wxT("85%"), wxT("90%"), wxT("95%"), wxT("100%"), wxT("110%"), + wxT("120%"), wxT("150%"), wxT("200%") }; int n = WXSIZEOF(choices); @@ -505,9 +504,9 @@ void wxPreviewControlBar::CreateButtons() void wxPreviewControlBar::SetZoomControl(int zoom) { - char buf[20]; - sprintf(buf, "%d%%", zoom); -// Someone is calling methods that do no exist in wxChoice!! So I'll just comment out for VA for now + wxChar buf[20]; + wxSprintf( buf, wxT("%d%%"), zoom ); + if (m_zoomControl) m_zoomControl->SetStringSelection(buf); } diff --git a/src/common/process.cpp b/src/common/process.cpp index 0e9769d95e..43dfcdf867 100644 --- a/src/common/process.cpp +++ b/src/common/process.cpp @@ -120,28 +120,21 @@ void wxProcess::SetPipeStreams(wxInputStream *inputSstream, m_outputStream = outputStream; } -// these are implemented in platform-dependent (and correct!) way under MSW and -// Unix but we still have to provide these dummy versions for the other -// platforms here -#if !defined(__WIN32__) && !defined(__UNIX_LIKE__) - bool wxProcess::IsInputOpened() const { - return m_inputStream != NULL; + return m_inputStream && m_inputStream->GetLastError() != wxSTREAM_EOF; } bool wxProcess::IsInputAvailable() const { - return m_inputStream && !m_inputStream->Eof(); + return m_inputStream && m_inputStream->CanRead(); } bool wxProcess::IsErrorAvailable() const { - return m_errorStream && !m_errorStream->Eof(); + return m_errorStream && m_errorStream->CanRead(); } -#endif // !Win32 && !Unix - #endif // wxUSE_STREAMS // ---------------------------------------------------------------------------- diff --git a/src/common/protocol.cpp b/src/common/protocol.cpp index 213de7ce97..1de1a297cb 100644 --- a/src/common/protocol.cpp +++ b/src/common/protocol.cpp @@ -41,12 +41,12 @@ wxProtoInfo::wxProtoInfo(const wxChar *name, const wxChar *serv, const bool need_host1, wxClassInfo *info) { - m_protoname = name; - m_servname = serv; - m_cinfo = info; - m_needhost = need_host1; - next = wxURL::ms_protocols; - wxURL::ms_protocols = this; + m_protoname = name; + m_servname = serv; + m_cinfo = info; + m_needhost = need_host1; + next = wxURL::ms_protocols; + wxURL::ms_protocols = this; } ///////////////////////////////////////////////////////////////// @@ -69,19 +69,21 @@ wxProtocol::wxProtocol() #if wxUSE_SOCKETS bool wxProtocol::Reconnect() { - wxIPV4address addr; + wxIPV4address addr; - if (!GetPeer(addr)) - { - Close(); - return FALSE; - } - if (!Close()) - return FALSE; - if (!Connect(addr)) - return FALSE; + if (!GetPeer(addr)) + { + Close(); + return FALSE; + } - return TRUE; + if (!Close()) + return FALSE; + + if (!Connect(addr)) + return FALSE; + + return TRUE; } // ---------------------------------------------------------------------------- @@ -117,11 +119,11 @@ wxProtocolError wxProtocol::ReadLine(wxSocketBase *socket, wxString& result) // normal char if ( chLast ) { - result += chLast; + result += wxString::FromAscii( chLast ); chLast = '\0'; } - result += ch; + result += wxString::FromAscii( ch ); } } @@ -134,38 +136,42 @@ wxProtocolError wxProtocol::ReadLine(wxString& result) } // old function which only chops '\n' and not '\r\n' -wxProtocolError GetLine(wxSocketBase *sock, wxString& result) { +wxProtocolError GetLine(wxSocketBase *sock, wxString& result) +{ #define PROTO_BSIZE 2048 - size_t avail, size; - char tmp_buf[PROTO_BSIZE], tmp_str[PROTO_BSIZE]; - char *ret; - bool found; + size_t avail, size; + char tmp_buf[PROTO_BSIZE], tmp_str[PROTO_BSIZE]; + char *ret; + bool found; - avail = sock->Read(tmp_buf, PROTO_BSIZE).LastCount(); - if (sock->Error() || avail == 0) - return wxPROTO_NETERR; + avail = sock->Read(tmp_buf, PROTO_BSIZE).LastCount(); + if (sock->Error() || avail == 0) + return wxPROTO_NETERR; - memcpy(tmp_str, tmp_buf, avail); + memcpy(tmp_str, tmp_buf, avail); -// Not implemented on all systems -// ret = (char *)memccpy(tmp_str, tmp_buf, '\n', avail); - found = FALSE; - for (ret=tmp_str;ret < (tmp_str+avail); ret++) - if (*ret == '\n') { - found = TRUE; - break; - } + // Not implemented on all systems + // ret = (char *)memccpy(tmp_str, tmp_buf, '\n', avail); + found = FALSE; + for (ret=tmp_str;ret < (tmp_str+avail); ret++) + if (*ret == '\n') + { + found = TRUE; + break; + } - if (!found) - return wxPROTO_PROTERR; - *ret = 0; + if (!found) + return wxPROTO_PROTERR; + + *ret = 0; - result = tmp_str; - result = result.Left(result.Length()-1); + result = wxString::FromAscii( tmp_str ); + result = result.Left(result.Length()-1); - size = ret-tmp_str+1; - sock->Unread(&tmp_buf[size], avail-size); - return wxPROTO_NOERR; + size = ret-tmp_str+1; + sock->Unread(&tmp_buf[size], avail-size); + + return wxPROTO_NOERR; #undef PROTO_BSIZE } #endif // wxUSE_SOCKETS diff --git a/src/common/regex.cpp b/src/common/regex.cpp index 7b480f24c8..cbaa57991d 100644 --- a/src/common/regex.cpp +++ b/src/common/regex.cpp @@ -132,7 +132,7 @@ wxString wxRegExImpl::GetErrorMsg(int errorcode) const (void)regerror(errorcode, &m_RegEx, (char *)buf.data(), len); - msg = buf.data(); + msg = wxString(buf.data(), wxConvLibc); #else // !Unicode (void)regerror(errorcode, &m_RegEx, msg.GetWriteBuf(len), len); diff --git a/src/common/resource.cpp b/src/common/resource.cpp index 4ba466c395..de02d6a71f 100644 --- a/src/common/resource.cpp +++ b/src/common/resource.cpp @@ -216,7 +216,7 @@ bool wxResourceTable::DeleteResource(const wxString& name) bool wxResourceTable::ParseResourceFile( wxInputStream *is ) { wxExprDatabase db; - int len = is->StreamSize() ; + int len = is->GetSize() ; bool eof = FALSE; while ( is->TellI() + 10 < len) // it's a hack because the streams dont support EOF diff --git a/src/common/sckaddr.cpp b/src/common/sckaddr.cpp index ff8739c79d..b75ac6efb5 100644 --- a/src/common/sckaddr.cpp +++ b/src/common/sckaddr.cpp @@ -136,7 +136,7 @@ bool wxIPV4address::Hostname(unsigned long addr) if (rv) m_origHostname = Hostname(); else - m_origHostname = ""; + m_origHostname = wxEmptyString; return rv; } @@ -166,7 +166,7 @@ wxString wxIPV4address::Hostname() hostname[0] = 0; GAddress_INET_GetHostName(m_address, hostname, 1024); - return wxString(hostname); + return wxString::FromAscii(hostname); } unsigned short wxIPV4address::Service() @@ -268,7 +268,8 @@ wxString wxUNIXaddress::Filename() path[0] = 0; GAddress_UNIX_GetPath(m_address, path, 1024); - return wxString(path); + + return wxString::FromAscii(path); } #endif // __UNIX__ diff --git a/src/common/sckstrm.cpp b/src/common/sckstrm.cpp index 1e1417c416..bc56194375 100644 --- a/src/common/sckstrm.cpp +++ b/src/common/sckstrm.cpp @@ -44,17 +44,11 @@ wxSocketOutputStream::~wxSocketOutputStream() size_t wxSocketOutputStream::OnSysWrite(const void *buffer, size_t size) { - size_t ret; + size_t ret = m_o_socket->Write((const char *)buffer, size).LastCount(); - ret = m_o_socket->Write((const char *)buffer, size).LastCount(); - - if (m_o_socket->Error()) - m_lasterror = wxStream_WRITE_ERR; - else - m_lasterror = wxStream_NOERROR; + m_lasterror = m_o_socket->Error() ? wxSTREAM_WRITE_ERROR : wxSTREAM_NO_ERROR; return ret; - } // --------------------------------------------------------------------------- @@ -72,14 +66,9 @@ wxSocketInputStream::~wxSocketInputStream() size_t wxSocketInputStream::OnSysRead(void *buffer, size_t size) { - size_t ret; + size_t ret = m_i_socket->Read((char *)buffer, size).LastCount(); - ret = m_i_socket->Read((char *)buffer, size).LastCount(); - - if (m_i_socket->Error()) - m_lasterror = wxStream_READ_ERR; - else - m_lasterror = wxStream_NOERROR; + m_lasterror = m_i_socket->Error() ? wxSTREAM_READ_ERROR : wxSTREAM_NO_ERROR; return ret; } diff --git a/src/common/settcmn.cpp b/src/common/settcmn.cpp index 93ebe6286d..6e84b6a118 100644 --- a/src/common/settcmn.cpp +++ b/src/common/settcmn.cpp @@ -44,7 +44,7 @@ wxSystemScreenType wxSystemSettings::ms_screen = wxSYS_SCREEN_NONE; wxSystemScreenType wxSystemSettings::GetScreenType() { if (ms_screen == wxSYS_SCREEN_NONE) -#ifndef __WXUNIV__ +#ifndef __WXUNIVERSAL__ { // As a start, all GUI are desktops. ms_screen = wxSYS_SCREEN_DESKTOP; @@ -52,9 +52,7 @@ wxSystemScreenType wxSystemSettings::GetScreenType() #else { // wxUniv will be used on small devices, too. - int x = 0; - int y = 0; - wxGetDisplaySize( &x, &y ); + int x = GetMetric( wxSYS_SCREEN_X ); ms_screen = wxSYS_SCREEN_DESKTOP; diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index b4f6dc23d1..bd513f73ef 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -50,6 +50,7 @@ wxSizerItem::wxSizerItem( int width, int height, int option, int flag, int borde m_option = option; m_border = border; m_flag = flag; + m_show = TRUE; // Cannot be changed m_userData = userData; // minimal size is the initial size @@ -69,6 +70,7 @@ wxSizerItem::wxSizerItem( wxWindow *window, int option, int flag, int border, wx m_option = option; m_border = border; m_flag = flag; + m_show = TRUE; m_userData = userData; // minimal size is the initial size @@ -88,6 +90,7 @@ wxSizerItem::wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxOb m_option = option; m_border = border; m_flag = flag; + m_show = TRUE; m_userData = userData; // minimal size is calculated later @@ -145,14 +148,11 @@ wxSize wxSizerItem::CalcMin() { if ( IsWindow() && (m_flag & wxADJUST_MINSIZE) ) { - // check if the best (minimal, in fact) window size hadn't changed - // by chance: this may happen for, e.g. static text if its label - // changed - wxSize size = m_window->GetBestSize(); - if ( size.x > m_minSize.x ) - m_minSize.x = size.x; - if ( size.y > m_minSize.y ) - m_minSize.y = size.y; + // By user request, keep the minimal size for this item + // in sync with the largest of BestSize and any user supplied + // minimum size hint. Useful in cases where the item is + // changeable -- static text labels, etc. + m_minSize = m_window->GetAdjustedBestSize(); } ret = m_minSize; @@ -361,6 +361,8 @@ bool wxSizer::Remove( wxSizer *sizer ) bool wxSizer::Remove( int pos ) { + if ((size_t)pos >= m_children.GetCount()) + return FALSE; wxNode *node = m_children.Nth( pos ); if (!node) return FALSE; @@ -528,8 +530,7 @@ void wxSizer::SetDimension( int x, int y, int width, int height ) m_position.y = y; m_size.x = width; m_size.y = height; - CalcMin(); - RecalcSizes(); + Layout(); } wxSize wxSizer::GetMinSize() @@ -636,6 +637,90 @@ bool wxSizer::DoSetItemMinSize( int pos, int width, int height ) return TRUE; } +void wxSizer::Show(wxWindow *window, bool show) +{ + wxNode *node = m_children.GetFirst(); + while (node) + { + wxSizerItem *item = (wxSizerItem*) node->Data(); + + if (item->IsWindow() && item->GetWindow() == window) + { + item->Show(show); + window->Show(show); + return; + } + node = node->Next(); + } +} + +void wxSizer::Show(wxSizer *sizer, bool show) +{ + wxNode *node = m_children.GetFirst(); + while (node) + { + wxSizerItem *item = (wxSizerItem*) node->Data(); + + if (item->IsSizer() && item->GetSizer() == sizer) + { + item->Show(show); + sizer->ShowItems(show); + return; + } + node = node->Next(); + } +} + +void wxSizer::ShowItems (bool show) +{ + wxNode *node = m_children.GetFirst(); + while (node) + { + wxSizerItem *item = (wxSizerItem*) node->Data(); + + if (item->IsWindow()) + item->GetWindow()->Show (show); + else if (item->IsSizer()) + item->GetSizer()->ShowItems (show); + + node = node->Next(); + } +} + +bool wxSizer::IsShown (wxWindow *window) +{ + wxNode *node = m_children.GetFirst(); + while (node) + { + wxSizerItem *item = (wxSizerItem*) node->Data(); + + if (item->IsWindow() && item->GetWindow() == window) + { + return item->IsShown(); + } + node = node->Next(); + } + + return FALSE; +} + +bool wxSizer::IsShown (wxSizer *sizer) +{ + wxNode *node = m_children.GetFirst(); + while (node) + { + wxSizerItem *item = (wxSizerItem*) node->Data(); + + if (item->IsSizer() && item->GetSizer() == sizer) + { + return item->IsShown(); + } + node = node->Next(); + } + + return FALSE; +} + //--------------------------------------------------------------------------- // wxGridSizer //--------------------------------------------------------------------------- @@ -659,7 +744,7 @@ wxGridSizer::wxGridSizer( int cols, int vgap, int hgap ) int wxGridSizer::CalcRowsCols(int& nrows, int& ncols) const { int nitems = m_children.GetCount(); - if ( nitems) + if ( nitems) { if ( m_cols ) { @@ -978,62 +1063,64 @@ void wxBoxSizer::RecalcSizes() while (node) { wxSizerItem *item = (wxSizerItem*) node->Data(); - - int weight = 1; - if (item->GetOption()) - weight = item->GetOption(); - - wxSize size( item->CalcMin() ); - - if (m_orient == wxVERTICAL) + if (item->IsShown()) { - wxCoord height = size.y; + int weight = 1; if (item->GetOption()) + weight = item->GetOption(); + + wxSize size( item->CalcMin() ); + + if (m_orient == wxVERTICAL) { - height = (delta * weight) + extra; - extra = 0; // only the first item will get the remainder as extra size + wxCoord height = size.y; + if (item->GetOption()) + { + height = (delta * weight) + extra; + extra = 0; // only the first item will get the remainder as extra size + } + + wxPoint child_pos( pt ); + wxSize child_size( wxSize( size.x, height) ); + + if (item->GetFlag() & (wxEXPAND | wxSHAPED)) + child_size.x = m_size.x; + else if (item->GetFlag() & wxALIGN_RIGHT) + child_pos.x += m_size.x - size.x; + else if (item->GetFlag() & (wxCENTER | wxALIGN_CENTER_HORIZONTAL)) + // XXX wxCENTER is added for backward compatibility; + // wxALIGN_CENTER should be used in new code + child_pos.x += (m_size.x - size.x) / 2; + + item->SetDimension( child_pos, child_size ); + + pt.y += height; } - - wxPoint child_pos( pt ); - wxSize child_size( wxSize( size.x, height) ); - - if (item->GetFlag() & (wxEXPAND | wxSHAPED)) - child_size.x = m_size.x; - else if (item->GetFlag() & wxALIGN_RIGHT) - child_pos.x += m_size.x - size.x; - else if (item->GetFlag() & (wxCENTER | wxALIGN_CENTER_HORIZONTAL)) - // XXX wxCENTER is added for backward compatibility; - // wxALIGN_CENTER should be used in new code - child_pos.x += (m_size.x - size.x) / 2; - - item->SetDimension( child_pos, child_size ); - - pt.y += height; - } - else - { - wxCoord width = size.x; - if (item->GetOption()) + else { - width = (delta * weight) + extra; - extra = 0; // only the first item will get the remainder as extra size + wxCoord width = size.x; + if (item->GetOption()) + { + width = (delta * weight) + extra; + extra = 0; // only the first item will get the remainder as extra size + } + + wxPoint child_pos( pt ); + wxSize child_size( wxSize(width, size.y) ); + + if (item->GetFlag() & (wxEXPAND | wxSHAPED)) + child_size.y = m_size.y; + else if (item->GetFlag() & wxALIGN_BOTTOM) + child_pos.y += m_size.y - size.y; + else if (item->GetFlag() & (wxCENTER | wxALIGN_CENTER_VERTICAL)) + // XXX wxCENTER is added for backward compatibility; + // wxALIGN_CENTER should be used in new code + child_pos.y += (m_size.y - size.y) / 2; + + item->SetDimension( child_pos, child_size ); + + pt.x += width; } - - wxPoint child_pos( pt ); - wxSize child_size( wxSize(width, size.y) ); - - if (item->GetFlag() & (wxEXPAND | wxSHAPED)) - child_size.y = m_size.y; - else if (item->GetFlag() & wxALIGN_BOTTOM) - child_pos.y += m_size.y - size.y; - else if (item->GetFlag() & (wxCENTER | wxALIGN_CENTER_VERTICAL)) - // XXX wxCENTER is added for backward compatibility; - // wxALIGN_CENTER should be used in new code - child_pos.y += (m_size.y - size.y) / 2; - - item->SetDimension( child_pos, child_size ); - - pt.x += width; } node = node->Next(); @@ -1057,7 +1144,7 @@ wxSize wxBoxSizer::CalcMin() while (node) { wxSizerItem *item = (wxSizerItem*) node->Data(); - if (item->GetOption() != 0) + if (item->IsShown() && item->GetOption() != 0) { int stretch = item->GetOption(); wxSize size( item->CalcMin() ); @@ -1077,43 +1164,44 @@ wxSize wxBoxSizer::CalcMin() while (node) { wxSizerItem *item = (wxSizerItem*) node->Data(); - - m_stretchable += item->GetOption(); - - wxSize size( item->CalcMin() ); - if (item->GetOption() != 0) + if (item->IsShown()) { + m_stretchable += item->GetOption(); + + wxSize size( item->CalcMin() ); + if (item->GetOption() != 0) + { + if (m_orient == wxHORIZONTAL) + size.x = stretchSize * item->GetOption(); + else + size.y = stretchSize * item->GetOption(); + } + if (m_orient == wxHORIZONTAL) - size.x = stretchSize * item->GetOption(); - else - size.y = stretchSize * item->GetOption(); - } - - if (m_orient == wxHORIZONTAL) - { - m_minWidth += size.x; - m_minHeight = wxMax( m_minHeight, size.y ); - } - else - { - m_minHeight += size.y; - m_minWidth = wxMax( m_minWidth, size.x ); - } - - if (item->GetOption() == 0) - { - if (m_orient == wxVERTICAL) { - m_fixedHeight += size.y; - m_fixedWidth = wxMax( m_fixedWidth, size.x ); + m_minWidth += size.x; + m_minHeight = wxMax( m_minHeight, size.y ); } else { - m_fixedWidth += size.x; - m_fixedHeight = wxMax( m_fixedHeight, size.y ); + m_minHeight += size.y; + m_minWidth = wxMax( m_minWidth, size.x ); + } + + if (item->GetOption() == 0) + { + if (m_orient == wxVERTICAL) + { + m_fixedHeight += size.y; + m_fixedWidth = wxMax( m_fixedWidth, size.x ); + } + else + { + m_fixedWidth += size.x; + m_fixedHeight = wxMax( m_fixedHeight, size.y ); + } } } - node = node->Next(); } @@ -1144,8 +1232,8 @@ static void GetStaticBoxBorders(wxStaticBox *box, *borderTop = 5; else #endif // __WXGTK__ - *borderTop = 15; - (void)box; + *borderTop = box->GetCharHeight(); + *borderOther = 5; } diff --git a/src/common/statbar.cpp b/src/common/statbar.cpp index 944b7979c1..df95ab4369 100644 --- a/src/common/statbar.cpp +++ b/src/common/statbar.cpp @@ -249,7 +249,11 @@ void wxStatusBarBase::FreeStacks() void wxStatusBarBase::PushStatusText(const wxString& text, int number) { wxListString* st = GetOrCreateStatusStack(number); - st->Insert(new wxString(GetStatusText(number))); + // Temporary variables used here to avoid an internal compiler error + // in VC++ 6 in _AFXDLL mode + wxString statusText(GetStatusText(number)); + wxString* s = new wxString(statusText); + st->Insert(s); SetStatusText(text, number); } diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index dafd61269a..a868a4a2ad 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -52,9 +52,13 @@ #if wxUSE_WCHAR_T WXDLLEXPORT_DATA(wxMBConv) wxConvLibc; WXDLLEXPORT_DATA(wxCSConv) wxConvLocal((const wxChar *)NULL); + WXDLLEXPORT_DATA(wxCSConv) wxConvISO8859_1(_T("iso-8859-1")); #else // stand-ins in absence of wchar_t - WXDLLEXPORT_DATA(wxMBConv) wxConvLibc, wxConvFile, wxConvLocal; + WXDLLEXPORT_DATA(wxMBConv) wxConvLibc, + wxConvFile, + wxConvISO8859_1, + wxConvLocal; #endif // wxUSE_WCHAR_T WXDLLEXPORT_DATA(wxMBConv *) wxConvCurrent = &wxConvLibc; @@ -68,6 +72,7 @@ public: { #if wxUSE_WCHAR_T wxConvLocal.Clear(); + wxConvISO8859_1.Clear(); #endif } @@ -188,6 +193,11 @@ static size_t decode_utf16(const wchar_t* input, wxUint32& output) #define IGNORE_LIBC 0 +wxMBConv::~wxMBConv() +{ + // nothing to do here +} + size_t wxMBConv::MB2WC(wchar_t *buf, const char *psz, size_t n) const { #if IGNORE_LIBC @@ -226,28 +236,41 @@ size_t wxMBConv::WC2MB(char *buf, const wchar_t *psz, size_t n) const const wxWCharBuffer wxMBConv::cMB2WC(const char *psz) const { - if (psz) + if ( psz ) { - size_t nLen = MB2WC((wchar_t *) NULL, psz, 0); // return value excludes /0 - if (nLen == (size_t)-1) - return wxWCharBuffer((wchar_t *) NULL); - wxWCharBuffer buf(nLen); // this allocates nLen1+ - MB2WC((wchar_t *)(const wchar_t *) buf, psz, nLen+1); - return buf; + // calculate the length of the buffer needed first + size_t nLen = MB2WC(NULL, psz, 0); + if ( nLen != (size_t)-1 ) + { + // now do the actual conversion + wxWCharBuffer buf(nLen); + MB2WC(buf.data(), psz, nLen + 1); // with the trailing NUL + + return buf; + } } - else - return wxWCharBuffer((wchar_t *) NULL); + + wxWCharBuffer buf((wchar_t *)NULL); + + return buf; } const wxCharBuffer wxMBConv::cWC2MB(const wchar_t *pwz) const { - // return value excludes NUL - size_t nLen = pwz ? WC2MB((char *) NULL, pwz, 0) : (size_t)-1; - if (nLen == (size_t)-1) - return wxCharBuffer((const char *)NULL); + if ( pwz ) + { + size_t nLen = WC2MB(NULL, pwz, 0); + if ( nLen != (size_t)-1 ) + { + wxCharBuffer buf(nLen); + WC2MB(buf.data(), pwz, nLen + 1); + + return buf; + } + } + + wxCharBuffer buf((char *)NULL); - wxCharBuffer buf(nLen); // this allocates nLen+1 - WC2MB((char *)(const char *) buf, pwz, nLen+1); return buf; } @@ -433,7 +456,7 @@ size_t wxMBConvUTF8::WC2MB(char *buf, const wchar_t *psz, size_t n) const } if (buf && (lenusable() ) return cset; delete cset; cset = NULL; -#endif // __WIN32__ +#endif // defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXUNIVERSAL__) #if wxUSE_FONTMAP cset = new EC_CharSet(name); @@ -981,8 +1018,11 @@ void wxCSConv::SetName(const wxChar *charset) void wxCSConv::LoadNow() { - if (m_deferred) + if ( m_deferred ) { + // it would probably be better to make GetSystemEncodingName() always + // available (i.e. even when wxUSE_INTL == 0)? +#if wxUSE_INTL if ( !m_name ) { wxString name = wxLocale::GetSystemEncodingName(); @@ -991,6 +1031,7 @@ void wxCSConv::LoadNow() SetName(name); } } +#endif // wxUSE_INTL // wxGetCharacterSet() complains about NULL name m_cset = m_name ? wxGetCharacterSet(m_name) : NULL; diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 26d3ab77cd..d5c5dd3318 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -46,7 +46,7 @@ // ---------------------------------------------------------------------------- // the temporary buffer size used when copying from stream to stream -#define BUF_TEMP_SIZE 10000 +#define BUF_TEMP_SIZE 4096 // ============================================================================ // implementation @@ -58,7 +58,7 @@ void wxStreamBuffer::SetError(wxStreamError err) { - if ( m_stream->m_lasterror == wxStream_NOERROR ) + if ( m_stream && m_stream->m_lasterror == wxSTREAM_NO_ERROR ) m_stream->m_lasterror = err; } @@ -80,6 +80,16 @@ void wxStreamBuffer::Init() m_fixed = TRUE; } +wxStreamBuffer::wxStreamBuffer(BufMode mode) +{ + Init(); + + m_stream = NULL; + m_mode = mode; + + m_flushable = FALSE; +} + wxStreamBuffer::wxStreamBuffer(wxStreamBase& stream, BufMode mode) { Init(); @@ -88,32 +98,13 @@ wxStreamBuffer::wxStreamBuffer(wxStreamBase& stream, BufMode mode) m_mode = mode; m_flushable = TRUE; - m_destroystream = FALSE; -} - -wxStreamBuffer::wxStreamBuffer(BufMode mode) -{ - Init(); - - wxASSERT_MSG(mode != read_write, wxT("you have to use the other ctor for read_write mode") ); - if ( mode == read ) - m_stream = new wxInputStream; - else if ( mode == write) - m_stream = new wxOutputStream; - else - m_stream = NULL; - - m_mode = mode; - - m_flushable = FALSE; - m_destroystream = TRUE; } wxStreamBuffer::wxStreamBuffer(const wxStreamBuffer& buffer) { - // doing this has big chances to lead to a crashwhen the source buffer is + // doing this has big chances to lead to a crash when the source buffer is // destroyed (otherwise assume the caller knows what he does) - wxASSERT_MSG( !buffer.m_destroybuf && !buffer.m_destroystream, + wxASSERT_MSG( !buffer.m_destroybuf, _T("it's a bad idea to copy this buffer") ); m_buffer_start = buffer.m_buffer_start; @@ -125,7 +116,6 @@ wxStreamBuffer::wxStreamBuffer(const wxStreamBuffer& buffer) m_stream = buffer.m_stream; m_mode = buffer.m_mode; m_destroybuf = FALSE; - m_destroystream = FALSE; } void wxStreamBuffer::FreeBuffer() @@ -137,9 +127,6 @@ void wxStreamBuffer::FreeBuffer() wxStreamBuffer::~wxStreamBuffer() { FreeBuffer(); - - if ( m_destroystream ) - delete m_stream; } wxInputStream *wxStreamBuffer::GetInputStream() const @@ -195,14 +182,15 @@ void wxStreamBuffer::SetBufferIO(size_t bufsize) void wxStreamBuffer::ResetBuffer() { - wxCHECK_RET( m_stream, _T("should have a stream in wxStreamBuffer") ); + if ( m_stream ) + { + m_stream->Reset(); + m_stream->m_lastcount = 0; + } - m_stream->m_lasterror = wxStream_NOERROR; - m_stream->m_lastcount = 0; - if (m_mode == read && m_flushable) - m_buffer_pos = m_buffer_end; - else - m_buffer_pos = m_buffer_start; + m_buffer_pos = m_mode == read && m_flushable + ? m_buffer_end + : m_buffer_start; } // fill the buffer with as much data as possible (only for read buffers) @@ -210,7 +198,9 @@ bool wxStreamBuffer::FillBuffer() { wxInputStream *inStream = GetInputStream(); - wxCHECK_MSG( inStream, FALSE, _T("should have a stream in wxStreamBuffer") ); + // It's legal to have no stream, so we don't complain about it just return FALSE + if ( !inStream ) + return FALSE; size_t count = inStream->OnSysRead(m_buffer_start, m_buffer_size); if ( !count ) @@ -271,6 +261,7 @@ void wxStreamBuffer::GetFromBuffer(void *buffer, size_t size) void wxStreamBuffer::PutToBuffer(const void *buffer, size_t size) { size_t left = GetBytesLeft(); + if ( size > left ) { if ( m_fixed ) @@ -315,7 +306,7 @@ void wxStreamBuffer::PutChar(char c) // if we don't have buffer at all, just forward this call to the stream, if ( !HasBuffer() ) { - outStream->OnSysWrite(&c, 1); + outStream->OnSysWrite(&c, sizeof(c)); } else { @@ -323,11 +314,11 @@ void wxStreamBuffer::PutChar(char c) if ( !GetDataLeft() && !FlushBuffer() ) { // we don't - SetError(wxStream_WRITE_ERR); + SetError(wxSTREAM_WRITE_ERROR); } else { - PutToBuffer(&c, 1); + PutToBuffer(&c, sizeof(c)); m_stream->m_lastcount = 1; } } @@ -340,12 +331,12 @@ char wxStreamBuffer::Peek() if ( !GetDataLeft() ) { - SetError(wxStream_READ_ERR); + SetError(wxSTREAM_READ_ERROR); return 0; } char c; - GetFromBuffer(&c, 1); + GetFromBuffer(&c, sizeof(c)); m_buffer_pos--; return c; @@ -360,18 +351,18 @@ char wxStreamBuffer::GetChar() char c; if ( !HasBuffer() ) { - inStream->OnSysRead(&c, 1); + inStream->OnSysRead(&c, sizeof(c)); } else { if ( !GetDataLeft() ) { - SetError(wxStream_READ_ERR); + SetError(wxSTREAM_READ_ERROR); c = 0; } else { - GetFromBuffer(&c, 1); + GetFromBuffer(&c, sizeof(c)); m_stream->m_lastcount = 1; } } @@ -381,16 +372,18 @@ char wxStreamBuffer::GetChar() size_t wxStreamBuffer::Read(void *buffer, size_t size) { - wxInputStream *inStream = GetInputStream(); - - wxCHECK_MSG( inStream, 0, _T("should have a stream in wxStreamBuffer") ); - // lasterror is reset before all new IO calls - m_stream->m_lasterror = wxStream_NOERROR; + if ( m_stream ) + m_stream->Reset(); + size_t read; if ( !HasBuffer() ) { - m_stream->m_lastcount = inStream->OnSysRead(buffer, size); + wxInputStream *inStream = GetInputStream(); + + wxCHECK_MSG( inStream, 0, _T("should have a stream in wxStreamBuffer") ); + + read = inStream->OnSysRead(buffer, size); } else // we have a buffer, use it { @@ -410,7 +403,7 @@ size_t wxStreamBuffer::Read(void *buffer, size_t size) if ( !FillBuffer() ) { - SetError(wxStream_EOF); + SetError(wxSTREAM_EOF); break; } } @@ -421,10 +414,13 @@ size_t wxStreamBuffer::Read(void *buffer, size_t size) } } - m_stream->m_lastcount = orig_size - size; + read = orig_size - size; } - return m_stream->m_lastcount; + if ( m_stream ) + m_stream->m_lastcount = read; + + return read; } // this should really be called "Copy()" @@ -452,17 +448,22 @@ size_t wxStreamBuffer::Read(wxStreamBuffer *dbuf) size_t wxStreamBuffer::Write(const void *buffer, size_t size) { - wxOutputStream *outStream = GetOutputStream(); + if (m_stream) + { + // lasterror is reset before all new IO calls + m_stream->Reset(); + } - wxCHECK_MSG( outStream, 0, _T("should have a stream in wxStreamBuffer") ); - - // lasterror is reset before all new IO calls - m_stream->m_lasterror = wxStream_NOERROR; + size_t ret = 0; if ( !HasBuffer() && m_fixed ) { + wxOutputStream *outStream = GetOutputStream(); + + wxCHECK_MSG( outStream, 0, _T("should have a stream in wxStreamBuffer") ); + // no buffer, just forward the call to the stream - m_stream->m_lastcount = outStream->OnSysWrite(buffer, size); + ret = outStream->OnSysWrite(buffer, size); } else // we [may] have a buffer, use it { @@ -480,6 +481,7 @@ size_t wxStreamBuffer::Write(const void *buffer, size_t size) // // FIXME: fine, but if it fails we should (re)try writing it by // chunks as this will (hopefully) always work (VZ) + if ( size > left && m_fixed ) { PutToBuffer(buffer, left); @@ -488,7 +490,7 @@ size_t wxStreamBuffer::Write(const void *buffer, size_t size) if ( !FlushBuffer() ) { - SetError(wxStream_WRITE_ERR); + SetError(wxSTREAM_WRITE_ERROR); break; } @@ -502,10 +504,16 @@ size_t wxStreamBuffer::Write(const void *buffer, size_t size) } } - m_stream->m_lastcount = orig_size - size; + ret = orig_size - size; } - return m_stream->m_lastcount; + if (m_stream) + { + // i am not entirely sure what we do this for + m_stream->m_lastcount = ret; + } + + return ret; } size_t wxStreamBuffer::Write(wxStreamBuffer *sbuf) @@ -615,10 +623,8 @@ off_t wxStreamBuffer::Tell() const { off_t pos; - // only ask the stream for position if we have a real stream and not a - // dummy one which we created ourselves, otherwise we'd call - // wxStream::OnSysTell() which would always return wxInvalidOffset - if ( !m_destroystream ) + // ask the stream for position if we have a real one + if ( m_stream ) { pos = m_stream->OnSysTell(); if ( pos == wxInvalidOffset ) @@ -643,7 +649,7 @@ off_t wxStreamBuffer::Tell() const wxStreamBase::wxStreamBase() { - m_lasterror = wxStream_NOERROR; + m_lasterror = wxSTREAM_NO_ERROR; m_lastcount = 0; } @@ -677,31 +683,19 @@ wxInputStream::~wxInputStream() free(m_wback); } -size_t wxInputStream::OnSysRead(void * WXUNUSED(buffer), - size_t WXUNUSED(bufsize)) +bool wxInputStream::CanRead() const { - return 0; + // we don't know if there is anything to read or not and by default we + // prefer to be optimistic and try to read data unless we know for sure + // there is no more of it + return m_lasterror != wxSTREAM_EOF; } bool wxInputStream::Eof() const { - wxInputStream *self = wxConstCast(this, wxInputStream); - - char c; - self->Read(&c, 1); - - // some streams can know that they're at EOF before actually trying to - // read beyond the end of stream (e.g. files) while others have no way of - // knowing it, so to provide the same behaviour in all cases we only - // return TRUE from here if the character really couldn't be read - if ( !self->LastRead() && GetLastError() == wxSTREAM_EOF ) - { - return TRUE; - } - - self->Ungetch(c); - - return FALSE; + // the only way the base class can know we're at EOF is when we'd already + // tried to read beyond it in which case last error is set accordingly + return GetLastError() == wxSTREAM_EOF; } char *wxInputStream::AllocSpaceWBack(size_t needed_size) @@ -730,7 +724,7 @@ char *wxInputStream::AllocSpaceWBack(size_t needed_size) return m_wback; } -size_t wxInputStream::GetWBack(void *buf, size_t bsize) +size_t wxInputStream::GetWBack(void *buf, size_t size) { if (!m_wback) return 0; @@ -738,13 +732,13 @@ size_t wxInputStream::GetWBack(void *buf, size_t bsize) // how many bytes do we have in the buffer? size_t toget = m_wbacksize - m_wbackcur; - if ( bsize < toget ) + if ( size < toget ) { // we won't read everything - toget = bsize; + toget = size; } - // copy the data from the cache + // copy the data from the cache memcpy(buf, m_wback + m_wbackcur, toget); m_wbackcur += toget; @@ -783,13 +777,13 @@ size_t wxInputStream::Ungetch(const void *buf, size_t bufsize) bool wxInputStream::Ungetch(char c) { - return Ungetch(&c, sizeof(char)) != 0; + return Ungetch(&c, sizeof(c)) != 0; } char wxInputStream::GetC() { char c; - Read(&c, 1); + Read(&c, sizeof(c)); return c; } @@ -811,6 +805,13 @@ wxInputStream& wxInputStream::Read(void *buf, size_t size) break; } + if ( p != buf && !CanRead() ) + { + // we have already read something and we would block in OnSysRead() + // now: don't do it but return immediately + break; + } + read = OnSysRead(p, size); if ( !read ) { @@ -825,8 +826,8 @@ wxInputStream& wxInputStream::Read(void *buf, size_t size) char wxInputStream::Peek() { char c; - Read(&c, 1); - if (m_lasterror == wxStream_NOERROR) + Read(&c, sizeof(c)); + if (m_lasterror == wxSTREAM_NO_ERROR) { Ungetch(c); return c; @@ -838,13 +839,17 @@ char wxInputStream::Peek() wxInputStream& wxInputStream::Read(wxOutputStream& stream_out) { char buf[BUF_TEMP_SIZE]; - size_t bytes_read = BUF_TEMP_SIZE; - while (bytes_read == BUF_TEMP_SIZE) + for ( ;; ) { - bytes_read = Read(buf, bytes_read).LastRead(); - bytes_read = stream_out.Write(buf, bytes_read).LastWrite(); + size_t bytes_read = Read(buf, WXSIZEOF(buf)).LastRead(); + if ( !bytes_read ) + break; + + if ( stream_out.Write(buf, bytes_read).LastWrite() != bytes_read ) + break; } + return *this; } @@ -857,7 +862,7 @@ off_t wxInputStream::SeekI(off_t pos, wxSeekMode mode) // I don't know whether it should be put as well in wxFileInputStream::OnSysSeek if (m_lasterror==wxSTREAM_EOF) - m_lasterror=wxSTREAM_NOERROR; + m_lasterror=wxSTREAM_NO_ERROR; /* RR: A call to SeekI() will automatically invalidate any previous call to Ungetch(), otherwise it would be possible to SeekI() to @@ -868,11 +873,11 @@ off_t wxInputStream::SeekI(off_t pos, wxSeekMode mode) buffer if possible, but is it really needed? It would only work when seeking in wxFromCurrent mode, else it would invalidate anyway... */ - + if (m_wback) { wxLogDebug( wxT("Seeking in stream which has data written back to it.") ); - + free(m_wback); m_wback = NULL; m_wbacksize = 0; @@ -913,7 +918,7 @@ size_t wxOutputStream::OnSysWrite(const void * WXUNUSED(buffer), void wxOutputStream::PutC(char c) { - Write(&c, 1); + Write(&c, sizeof(c)); } wxOutputStream& wxOutputStream::Write(const void *buffer, size_t size) @@ -1072,7 +1077,7 @@ char wxBufferedInputStream::Peek() wxInputStream& wxBufferedInputStream::Read(void *buf, size_t size) { // reset the error flag - m_lasterror = wxStream_NOERROR; + Reset(); // first read from the already cached data m_lastcount = GetWBack(buf, size); @@ -1100,18 +1105,18 @@ off_t wxBufferedInputStream::SeekI(off_t pos, wxSeekMode mode) // RR: Look at wxInputStream for comments. if (m_lasterror==wxSTREAM_EOF) - m_lasterror=wxSTREAM_NOERROR; + Reset(); if (m_wback) { wxLogDebug( wxT("Seeking in stream which has data written back to it.") ); - + free(m_wback); m_wback = NULL; m_wbacksize = 0; m_wbackcur = 0; } - + return m_i_streambuf->Seek(pos, mode); } @@ -1121,7 +1126,7 @@ off_t wxBufferedInputStream::TellI() const if (pos != wxInvalidOffset) pos -= (m_wbacksize - m_wbackcur); - + return pos; } diff --git a/src/common/string.cpp b/src/common/string.cpp index 32a0adab79..b120724457 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -229,24 +229,38 @@ wxString::wxString(const void *pStart, const void *pEnd) // from multibyte string wxString::wxString(const char *psz, wxMBConv& conv, size_t nLength) { - // first get necessary size - size_t nLen = psz ? conv.MB2WC((wchar_t *) NULL, psz, 0) : 0; - - // nLength is number of *Unicode* characters here! - if ((nLen != (size_t)-1) && (nLen > nLength)) - nLen = nLength; - - // empty? - if ( (nLen != 0) && (nLen != (size_t)-1) ) { - if ( !AllocBuffer(nLen) ) { - wxFAIL_MSG( _T("out of memory in wxString::wxString") ); - return; + // first get the size of the buffer we need + size_t nLen; + if ( psz ) + { + // calculate the needed size ourselves or use a provide one + nLen = nLength == wxSTRING_MAXLEN ? conv.MB2WC(NULL, psz, 0) : nLength; } - conv.MB2WC(m_pchData, psz, nLen); - } - else { + else + { + // nothing to convert + nLen = 0; + } + + // anything to do? + if ( (nLen != 0) && (nLen != (size_t)-1) ) + { + if ( !AllocBuffer(nLen) ) + { + wxFAIL_MSG( _T("out of memory in wxString::wxString") ); + return; + } + + // MB2WC wants the buffer size, not the string length + if ( conv.MB2WC(m_pchData, psz, nLen + 1) != (size_t)-1 ) + { + // initialized ok + return; + } + //else: the conversion failed -- leave the string empty (what else?) + } + Init(); - } } #else // ANSI @@ -255,27 +269,38 @@ wxString::wxString(const char *psz, wxMBConv& conv, size_t nLength) // from wide string wxString::wxString(const wchar_t *pwz, wxMBConv& conv, size_t nLength) { - // first get necessary size - size_t nLen = 0; - if (pwz) - { - if (nLength == wxSTRING_MAXLEN) - nLen = conv.WC2MB((char *) NULL, pwz, 0); - else - nLen = nLength; - } - - // empty? - if ( (nLen != 0) && (nLen != (size_t)-1) ) { - if ( !AllocBuffer(nLen) ) { - wxFAIL_MSG( _T("out of memory in wxString::wxString") ); - return; + // first get the size of the buffer we need + size_t nLen; + if ( pwz ) + { + // calculate the needed size ourselves or use a provide one + nLen = nLength == wxSTRING_MAXLEN ? conv.WC2MB(NULL, pwz, 0) : nLength; } - conv.WC2MB(m_pchData, pwz, nLen); - } - else { + else + { + // nothing to convert + nLen = 0; + } + + // anything to do? + if ( (nLen != 0) && (nLen != (size_t)-1) ) + { + if ( !AllocBuffer(nLen) ) + { + wxFAIL_MSG( _T("out of memory in wxString::wxString") ); + return; + } + + // WC2MB wants the buffer size, not the string length + if ( conv.WC2MB(m_pchData, pwz, nLen + 1) != (size_t)-1 ) + { + // initialized ok + return; + } + //else: the conversion failed -- leave the string empty (what else?) + } + Init(); - } } #endif // wxUSE_WCHAR_T @@ -730,6 +755,16 @@ wxString wxString::FromAscii(const char *ascii) return res; } +wxString wxString::FromAscii(const char ascii) +{ + // What do we do with '\0' ? + + wxString res; + res += (wchar_t)(unsigned char) ascii; + + return res; +} + const wxCharBuffer wxString::ToAscii() const { // this will allocate enough space for the terminating NUL too @@ -1752,7 +1787,7 @@ void wxArrayString::Copy(const wxArrayString& src) void wxArrayString::Grow(size_t nIncrement) { // only do it if no more place - if ( m_nCount == m_nSize ) { + if ( (m_nSize - m_nCount) < nIncrement ) { // if ARRAY_DEFAULT_INITIAL_SIZE were set to 0, the initially empty would // be never resized! #if ARRAY_DEFAULT_INITIAL_SIZE == 0 diff --git a/src/common/sysopt.cpp b/src/common/sysopt.cpp index c8d4539f37..39849e7fa9 100644 --- a/src/common/sysopt.cpp +++ b/src/common/sysopt.cpp @@ -46,7 +46,7 @@ // singleton class so it can't be done in the dtor) class wxSystemOptionsModule : public wxModule { - friend class wxSystemOptions; + friend class WXDLLEXPORT wxSystemOptions; public: virtual bool OnInit(); virtual void OnExit(); diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 5f4b02fa90..da745d66bc 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -212,12 +212,20 @@ wxControl *wxToolBarBase::FindControl( int id ) node; node = node->GetNext() ) { - wxControl *control = node->GetData()->GetControl(); - - if (control) + const wxToolBarToolBase * const tool = node->GetData(); + if ( tool->IsControl() ) { - if (control->GetId() == id) + wxControl * const control = tool->GetControl(); + + if ( !control ) + { + wxFAIL_MSG( _T("NULL control in toolbar?") ); + } + else if ( control->GetId() == id ) + { + // found return control; + } } } diff --git a/src/common/timercmn.cpp b/src/common/timercmn.cpp index 3bf88317e8..28f69dae3b 100644 --- a/src/common/timercmn.cpp +++ b/src/common/timercmn.cpp @@ -36,6 +36,7 @@ #ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/log.h" + #include "wx/thread.h" #endif #include "wx/timer.h" @@ -131,6 +132,13 @@ void wxTimerBase::Notify() bool wxTimerBase::Start(int milliseconds, bool oneShot) { + // under MSW timers only work when they're started from the main thread so + // let the caller know about it +#if wxUSE_THREADS + wxASSERT_MSG( wxThread::IsMain(), + _T("timer can only be started from the main thread") ); +#endif // wxUSE_THREADS + if ( IsRunning() ) { // not stopping the already running timer might work for some diff --git a/src/common/txtstrm.cpp b/src/common/txtstrm.cpp index 14b8e4a626..62f2e5f72c 100644 --- a/src/common/txtstrm.cpp +++ b/src/common/txtstrm.cpp @@ -38,10 +38,17 @@ // wxTextInputStream // ---------------------------------------------------------------------------- +#if wxUSE_UNICODE +wxTextInputStream::wxTextInputStream(wxInputStream &s, const wxString &sep, wxMBConv& conv) + : m_input(s), m_separators(sep), m_conv(conv) +{ +} +#else wxTextInputStream::wxTextInputStream(wxInputStream &s, const wxString &sep) : m_input(s), m_separators(sep) { } +#endif wxTextInputStream::~wxTextInputStream() { @@ -234,12 +241,23 @@ wxString wxTextInputStream::ReadString() wxString wxTextInputStream::ReadLine() { - wxChar c; wxString line; while ( !m_input.Eof() ) { - c = m_input.GetC(); +#if wxUSE_UNICODE + // FIXME: this is only works for single byte encodings + // How-to read a single char in an unkown encoding??? + char buf[10]; + buf[0] = m_input.GetC(); + buf[1] = 0; + + wxChar wbuf[2]; + m_conv.MB2WC( wbuf, buf, 2 ); + wxChar c = wbuf[0]; +#else + char c = m_input.GetC(); +#endif if ( !m_input ) break; @@ -343,8 +361,15 @@ wxTextInputStream& wxTextInputStream::operator>>(float& f) return *this; } + + +#if wxUSE_UNICODE +wxTextOutputStream::wxTextOutputStream(wxOutputStream& s, wxEOL mode, wxMBConv& conv) + : m_output(s), m_conv(conv) +#else wxTextOutputStream::wxTextOutputStream(wxOutputStream& s, wxEOL mode) : m_output(s) +#endif { m_mode = mode; if (m_mode == wxEOL_NATIVE) @@ -445,8 +470,13 @@ void wxTextOutputStream::WriteString(const wxString& string) out << c; } - // NB: we don't need to write the trailing NUL here - m_output.Write(out.c_str(), out.length() * sizeof(wxChar)); + // We must not write the trailing NULL here +#if wxUSE_UNICODE + wxCharBuffer buffer = m_conv.cWC2MB( out ); + m_output.Write( (const char*) buffer, strlen( (const char*) buffer ) ); +#else + m_output.Write(out.c_str(), out.length() ); +#endif } wxTextOutputStream& wxTextOutputStream::operator<<(const wxChar *string) @@ -463,12 +493,8 @@ wxTextOutputStream& wxTextOutputStream::operator<<(const wxString& string) wxTextOutputStream& wxTextOutputStream::operator<<(char c) { - // these strange manipulations are needed in Unicode mode - char buf[2]; - buf[0] = c; - buf[1] = 0; - - WriteString( wxString(buf) ); + WriteString( wxString::FromAscii(c) ); + return *this; } diff --git a/src/common/unzip.h b/src/common/unzip.h index 78dee0ee4d..acb137bc66 100644 --- a/src/common/unzip.h +++ b/src/common/unzip.h @@ -52,17 +52,37 @@ $Id$ extern "C" { #endif +/* include zlib.h if not done yet */ #ifndef _ZLIB_H -//#include "zlib.h" -// normally, the compiler options should contain -I../zlib, but it is -// apparently not the case for all MSW makefiles and so, unless we use -// configure (which defines __WX_SETUP_H__) or it is explicitly overridden by -// the user (who can define wxUSE_ZLIB_H_IN_PATH), we hardcode the path here -#if defined(__WXMSW__) && !defined(__WX_SETUP_H__) && !defined(wxUSE_ZLIB_H_IN_PATH) - #include "../zlib/zlib.h" -#else - #include "zlib.h" + /* + normally, the compiler options should contain -I../zlib, but it is + apparently not the case for all MSW makefiles and so, unless we use + configure (which defines __WX_SETUP_H__) or it is explicitly overridden + by the user (who can define wxUSE_ZLIB_H_IN_PATH), we hardcode the path + here + */ +# if defined(__WXMSW__) && !defined(__WX_SETUP_H__) && !defined(wxUSE_ZLIB_H_IN_PATH) +# include "../zlib/zlib.h" +# else +# include "zlib.h" +# endif +#endif /* _ZLIB_H */ + +/* + Some system zlib.h headers are modified to not define the OF() macro but use + the (standard) __P() instead (example: NetBSD 1.6), work around this if + needed assuming that we deal with an ANSI C compiler (which is a natural + assumption in 21st century!) + */ +#ifndef OF +# define OF(args) args #endif + +/* + And on some systems ZEXPORT is not defined neither -- work around this too + */ +#ifndef ZEXPORT +# define ZEXPORT #endif #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) diff --git a/src/common/url.cpp b/src/common/url.cpp index 8ae14ec4e9..16e2689e9a 100644 --- a/src/common/url.cpp +++ b/src/common/url.cpp @@ -65,7 +65,7 @@ wxURL::wxURL(const wxString& url) #if wxUSE_SOCKETS if ( ms_useDefaultProxy && !ms_proxyDefault ) { - SetDefaultProxy(getenv("HTTP_PROXY")); + SetDefaultProxy( wxGetenv(wxT("HTTP_PROXY")) ); if ( !ms_proxyDefault ) { diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index d88d0e5206..ee22bc1b48 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -98,134 +98,10 @@ const wxChar *wxFatalErrorStr = wxT("wxWindows Fatal Error"); #endif // WXWIN_COMPATIBILITY_2_2 -// ---------------------------------------------------------------------------- -// function protoypes -// ---------------------------------------------------------------------------- - // ============================================================================ // implementation // ============================================================================ -// ---------------------------------------------------------------------------- -// string functions -// ---------------------------------------------------------------------------- - -#if defined(__WXMAC__) && !defined(__DARWIN__) -int strcasecmp(const char *str_1, const char *str_2) -{ - register char c1, c2; - do { - c1 = tolower(*str_1++); - c2 = tolower(*str_2++); - } while ( c1 && (c1 == c2) ); - - return c1 - c2; -} - -int strncasecmp(const char *str_1, const char *str_2, size_t maxchar) -{ - - register char c1, c2; - while( maxchar--) - { - c1 = tolower(*str_1++); - c2 = tolower(*str_2++); - - if ( !c1 || c1!=c2 ) - return c1 - c2; - - } ; - - return 0 ; - -} -#endif // __WXMAC__ && !__DARWIN__ - -#if defined( __VMS__ ) && ( __VMS_VER < 70000000 ) -// we have no strI functions under VMS, therefore I have implemented -// an inefficient but portable version: convert copies of strings to lowercase -// and then use the normal comparison -static void myLowerString(char *s) -{ - while(*s){ - if(isalpha(*s)) *s = (char)tolower(*s); - s++; - } -} - -int strcasecmp(const char *str_1, const char *str_2) -{ - char *temp1 = new char[strlen(str_1)+1]; - char *temp2 = new char[strlen(str_2)+1]; - strcpy(temp1,str_1); - strcpy(temp2,str_2); - myLowerString(temp1); - myLowerString(temp2); - - int result = wxStrcmp(temp1,temp2); - delete[] temp1; - delete[] temp2; - - return(result); -} - -int strncasecmp(const char *str_1, const char *str_2, size_t maxchar) -{ - char *temp1 = new char[strlen(str_1)+1]; - char *temp2 = new char[strlen(str_2)+1]; - strcpy(temp1,str_1); - strcpy(temp2,str_2); - myLowerString(temp1); - myLowerString(temp2); - - int result = strncmp(temp1,temp2,maxchar); - delete[] temp1; - delete[] temp2; - - return(result); -} -#endif // __VMS__ - -#if defined(__WINDOWS__) && !defined(__WXMICROWIN__) && !defined(__WXWINE__) - -#ifndef __GNUWIN32__ -#ifndef __MWERKS__ -#define strcasecmp stricmp -#define strncasecmp strnicmp -#else -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#endif -#endif - -#else - -#ifdef __EMX__ -#define strcasecmp stricmp -#define strncasecmp strnicmp -#endif - -// This declaration is missing in SunOS! -// (Yes, I know it is NOT ANSI-C but its in BSD libc) -#if defined(__xlC) || defined(__AIX__) || defined(__GNUG__) -extern "C" -{ - int strcasecmp (const char *, const char *); - int strncasecmp (const char *, const char *, size_t); -} -#endif -#endif /* __WXMSW__ */ - -#ifdef __WXPM__ -#define strcasecmp stricmp -#define strncasecmp strnicmp -#endif - -#ifdef __WATCOMC__ -#define strcasecmp stricmp -#define strncasecmp strnicmp -#endif - wxChar * copystring (const wxChar *s) { @@ -360,9 +236,9 @@ wxString wxDecToHex(int dec) return wxString(buf); } -// Match a string INDEPENDENT OF CASE +#if WXWIN_COMPATIBILITY_2 bool -StringMatch (const char *str1, const char *str2, bool subString, bool exact) +StringMatch (const wxChar *str1, const wxChar *str2, bool subString, bool exact) { if (str1 == NULL || str2 == NULL) return FALSE; @@ -371,43 +247,44 @@ StringMatch (const char *str1, const char *str2, bool subString, bool exact) if (subString) { - int len1 = strlen (str1); - int len2 = strlen (str2); + int len1 = wxStrlen (str1); + int len2 = wxStrlen (str2); int i; // Search for str1 in str2 // Slow .... but acceptable for short strings for (i = 0; i <= len2 - len1; i++) { - if (strncasecmp (str1, str2 + i, len1) == 0) + if (wxStrnicmp (str1, str2 + i, len1) == 0) return TRUE; } } else if (exact) { - if (strcasecmp (str1, str2) == 0) + if (wxStricmp (str1, str2) == 0) return TRUE; } else { - int len1 = strlen (str1); - int len2 = strlen (str2); + int len1 = wxStrlen (str1); + int len2 = wxStrlen (str2); - if (strncasecmp (str1, str2, wxMin (len1, len2)) == 0) + if (wxStrnicmp (str1, str2, wxMin (len1, len2)) == 0) return TRUE; } return FALSE; } +#endif // Return the current date/time // [volatile] wxString wxNow() { - time_t now = time((time_t *) NULL); - char *date = ctime(&now); - date[24] = '\0'; - return wxString(date); + time_t now = time((time_t *) NULL); + char *date = ctime(&now); + date[24] = '\0'; + return wxString::FromAscii(date); } #if wxUSE_GUI @@ -995,11 +872,15 @@ wxWindowDisabler::~wxWindowDisabler() // Yield to other apps/messages and disable user input to all windows except // the given one -bool wxSafeYield(wxWindow *win) +bool wxSafeYield(wxWindow *win, bool onlyIfNeeded) { wxWindowDisabler wd(win); - bool rc = wxYield(); + bool rc; + if (onlyIfNeeded) + rc = wxYieldIfNeeded(); + else + rc = wxYield(); return rc; } @@ -1023,13 +904,13 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) ) const wxChar *wxGetInstallPrefix() { wxString prefix; - + if ( wxGetEnv(wxT("WXPREFIX"), &prefix) ) return prefix.c_str(); - + #ifdef wxINSTALL_PREFIX return wxT(wxINSTALL_PREFIX); -#else +#else return wxT(""); #endif } @@ -1185,6 +1066,38 @@ wxString wxGetCurrentDir() // wxExecute // ---------------------------------------------------------------------------- +// wxDoExecuteWithCapture() helper: reads an entire stream into one array +// +// returns TRUE if ok, FALSE if error +static bool ReadAll(wxInputStream *is, wxArrayString& output) +{ + wxCHECK_MSG( is, FALSE, _T("NULL stream in wxExecute()?") ); + + // the stream could be already at EOF or in wxSTREAM_BROKEN_PIPE state + is->Reset(); + + wxTextInputStream tis(*is); + + bool cont = TRUE; + while ( cont ) + { + wxString line = tis.ReadLine(); + if ( is->Eof() ) + break; + + if ( !*is ) + { + cont = FALSE; + } + else + { + output.Add(line); + } + } + + return cont; +} + // this is a private function because it hasn't a clean interface: the first // array is passed by reference, the second by pointer - instead we have 2 // public versions of wxExecute() below @@ -1206,51 +1119,15 @@ static long wxDoExecuteWithCapture(const wxString& command, #if wxUSE_STREAMS if ( rc != -1 ) { - wxInputStream* is = process->GetInputStream(); - wxCHECK_MSG( is, -1, _T("if wxExecute() succeded, stream can't be NULL") ); - wxTextInputStream tis(*is); + if ( !ReadAll(process->GetInputStream(), output) ) + rc = -1; - wxTextInputStream *tes = NULL; - wxInputStream *es = NULL; if ( error ) { - es = process->GetErrorStream(); - - wxCHECK_MSG( es, -1, _T("stderr can't be NULL") ); - - tes = new wxTextInputStream(*es); + if ( !ReadAll(process->GetErrorStream(), *error) ) + rc = -1; } - bool cont; - do - { - cont = FALSE; - - if ( !is->Eof() && is->IsOk() ) - { - wxString line = tis.ReadLine(); - if ( is->LastError() ) - break; - - cont = TRUE; - - output.Add(line); - } - - if ( error && !es->Eof() && es->IsOk() ) - { - wxString line = tes->ReadLine(); - if ( es->LastError() ) - break; - - cont = TRUE; - - error->Add(line); - } - } - while ( cont ); - - delete tes; } #endif // wxUSE_STREAMS diff --git a/src/common/wfstream.cpp b/src/common/wfstream.cpp index 2b2e68dc6f..d460dd61ab 100644 --- a/src/common/wfstream.cpp +++ b/src/common/wfstream.cpp @@ -71,19 +71,23 @@ size_t wxFileInputStream::OnSysRead(void *buffer, size_t size) { off_t ret = m_file->Read(buffer, size); - switch ( ret ) + // NB: we can't use a switch here because HP-UX CC doesn't allow + // switching over long long (which off_t is in 64bit mode) + + if ( !ret ) { - case 0: - m_lasterror = wxSTREAM_EOF; - break; - - case wxInvalidOffset: - m_lasterror = wxSTREAM_READ_ERROR; - ret = 0; - break; - - default: - m_lasterror = wxSTREAM_NO_ERROR; + // nothing read, so nothing more to read + m_lasterror = wxSTREAM_EOF; + } + else if ( ret == wxInvalidOffset ) + { + m_lasterror = wxSTREAM_READ_ERROR; + ret = 0; + } + else + { + // normal case + m_lasterror = wxSTREAM_NO_ERROR; } return ret; @@ -235,10 +239,10 @@ size_t wxFFileInputStream::OnSysRead(void *buffer, size_t size) ret = m_file->Read(buffer, size); if (m_file->Eof()) - m_lasterror = wxStream_EOF; + m_lasterror = wxSTREAM_EOF; if (ret == wxInvalidOffset) { - m_lasterror = wxStream_READ_ERR; + m_lasterror = wxSTREAM_READ_ERROR; ret = 0; } @@ -307,9 +311,9 @@ size_t wxFFileOutputStream::OnSysWrite(const void *buffer, size_t size) { size_t ret = m_file->Write(buffer, size); if (m_file->Error()) - m_lasterror = wxStream_WRITE_ERR; + m_lasterror = wxSTREAM_WRITE_ERROR; else - m_lasterror = wxStream_NOERROR; + m_lasterror = wxSTREAM_NO_ERROR; return ret; } diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 205402dd18..1fc2138406 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -219,7 +219,7 @@ bool wxWindowBase::CreateBase(wxWindowBase *parent, // dialog/frame and all children will inherit it by defult if ( parent && (parent->GetExtraStyle() & wxWS_EX_VALIDATE_RECURSIVELY) ) { - SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY); + SetExtraStyle(GetExtraStyle() | wxWS_EX_VALIDATE_RECURSIVELY); } return TRUE; @@ -470,6 +470,15 @@ void wxWindowBase::Fit() //else: do nothing if we have no children } +// fits virtual size (ie. scrolled area etc.) around children +void wxWindowBase::FitInside() +{ + if ( GetChildren().GetCount() > 0 ) + { + SetVirtualSize( GetBestVirtualSize() ); + } +} + // return the size best suited for the current window wxSize wxWindowBase::DoGetBestSize() const { @@ -593,8 +602,6 @@ void wxWindowBase::SetVirtualSizeHints( int minW, int minH, m_maxVirtualWidth = maxW; m_minVirtualHeight = minH; m_maxVirtualHeight = maxH; - - SetVirtualSize( GetClientSize() ); } void wxWindowBase::DoSetVirtualSize( int x, int y ) @@ -1757,10 +1764,16 @@ void wxWindowBase::UpdateWindowUI() #if wxUSE_TEXTCTRL wxTextCtrl *text = wxDynamicCast(control, wxTextCtrl); if ( text ) - text->SetValue(event.GetText()); + { + if ( event.GetText() != text->GetValue() ) + text->SetValue(event.GetText()); + } else #endif // wxUSE_TEXTCTRL - control->SetLabel(event.GetText()); + { + if ( event.GetText() != control->GetLabel() ) + control->SetLabel(event.GetText()); + } } } @@ -1859,27 +1872,27 @@ void wxWindowBase::OnMiddleClick( wxMouseEvent& event ) switch ( wxGetOsVersion() ) { - case wxMOTIF_X: port = _T("Motif"); break; + case wxMOTIF_X: port += _T("Motif"); break; case wxMAC: - case wxMAC_DARWIN: port = _T("Mac"); break; - case wxBEOS: port = _T("BeOS"); break; + case wxMAC_DARWIN: port += _T("Mac"); break; + case wxBEOS: port += _T("BeOS"); break; case wxGTK: case wxGTK_WIN32: case wxGTK_OS2: - case wxGTK_BEOS: port = _T("GTK"); break; + case wxGTK_BEOS: port += _T("GTK"); break; case wxWINDOWS: case wxPENWINDOWS: case wxWINDOWS_NT: case wxWIN32S: case wxWIN95: - case wxWIN386: port = _T("MS Windows"); break; + case wxWIN386: port += _T("MS Windows"); break; case wxMGL_UNIX: case wxMGL_X: case wxMGL_WIN32: - case wxMGL_OS2: port = _T("MGL"); break; + case wxMGL_OS2: port += _T("MGL"); break; case wxWINDOWS_OS2: - case wxOS2_PM: port = _T("OS/2"); break; - default: port = _T("unknown"); break; + case wxOS2_PM: port += _T("OS/2"); break; + default: port += _T("unknown"); break; } wxMessageBox(wxString::Format( diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index bca67b1228..cffcebd01b 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -50,40 +50,56 @@ #if wxUSE_WCHAR_T size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n) { + // assume that we have mbsrtowcs() too if we have wcsrtombs() +#if HAVE_WCSRTOMBS + mbstate_t mbstate; + memset(&mbstate, 0, sizeof(mbstate_t)); +#endif + if (buf) { if (!n || !*psz) { if (n) *buf = wxT('\0'); return 0; } +#ifdef HAVE_WCSRTOMBS + return mbsrtowcs(buf, &psz, n, &mbstate); +#else return mbstowcs(buf, psz, n); +#endif } - // assume that we have mbsrtowcs() too if we have wcsrtombs() #ifdef HAVE_WCSRTOMBS - mbstate_t mbstate; return mbsrtowcs((wchar_t *) NULL, &psz, 0, &mbstate); -#else // !GNU libc +#else return mbstowcs((wchar_t *) NULL, psz, 0); -#endif // GNU +#endif } size_t WXDLLEXPORT wxWC2MB(char *buf, const wchar_t *pwz, size_t n) { +#if HAVE_WCSRTOMBS + mbstate_t mbstate; + memset(&mbstate, 0, sizeof(mbstate_t)); +#endif + if (buf) { if (!n || !*pwz) { // glibc2.1 chokes on null input if (n) *buf = '\0'; return 0; } +#if HAVE_WCSRTOMBS + return wcsrtombs(buf, &pwz, n, &mbstate); +#else return wcstombs(buf, pwz, n); +#endif } #if HAVE_WCSRTOMBS - mbstate_t mbstate; return wcsrtombs((char *) NULL, &pwz, 0, &mbstate); -#else // !GNU libc +#else return wcstombs((char *) NULL, pwz, 0); -#endif // GNU +#endif } #endif // wxUSE_WCHAR_T diff --git a/src/common/wxexpr.cpp b/src/common/wxexpr.cpp index d868716226..3db96de17a 100644 --- a/src/common/wxexpr.cpp +++ b/src/common/wxexpr.cpp @@ -20,7 +20,7 @@ #pragma hdrstop #endif -#if 1 // wxUSE_PROLOGIO +#if wxUSE_PROLOGIO #include #include diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index e2aaefa573..ad80cbf883 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -143,7 +143,7 @@ wxImage wxXPMDecoder::ReadFile(wxInputStream& stream) wxCharBuffer buffer(length); char *xpm_buffer = (char *)buffer.data(); - if ( stream.Read(xpm_buffer, length).LastError() == wxSTREAM_READ_ERROR ) + if ( stream.Read(xpm_buffer, length).GetLastError() == wxSTREAM_READ_ERROR ) return wxNullImage; xpm_buffer[length] = '\0'; @@ -657,7 +657,7 @@ struct wxXPMColourMapData { unsigned char R,G,B; }; -WX_DECLARE_STRING_HASH_MAP(wxXPMColourMapData, wxXPMColourMap) +WX_DECLARE_STRING_HASH_MAP(wxXPMColourMapData, wxXPMColourMap); wxImage wxXPMDecoder::ReadData(const char **xpm_data) { diff --git a/src/common/zipstrm.cpp b/src/common/zipstrm.cpp index 9fbff10320..1ed942c0ea 100644 --- a/src/common/zipstrm.cpp +++ b/src/common/zipstrm.cpp @@ -43,12 +43,12 @@ wxZipInputStream::wxZipInputStream(const wxString& archive, const wxString& file m_Archive = (void*) unzOpen(archive.mb_str()); if (m_Archive == NULL) { - m_lasterror = wxStream_READ_ERR; + m_lasterror = wxSTREAM_READ_ERROR; return; } if (unzLocateFile((unzFile)m_Archive, file.mb_str(), 0) != UNZ_OK) { - m_lasterror = wxStream_READ_ERR; + m_lasterror = wxSTREAM_READ_ERROR; return; } @@ -56,7 +56,7 @@ wxZipInputStream::wxZipInputStream(const wxString& archive, const wxString& file if (unzOpenCurrentFile((unzFile)m_Archive) != UNZ_OK) { - m_lasterror = wxStream_READ_ERR; + m_lasterror = wxSTREAM_READ_ERROR; return; } m_Size = (size_t)zinfo.uncompressed_size; @@ -90,7 +90,7 @@ size_t wxZipInputStream::OnSysRead(void *buffer, size_t bufsize) if ( m_Pos >= (off_t)m_Size ) { - m_lasterror = wxStream_EOF; + m_lasterror = wxSTREAM_EOF; return 0; } @@ -132,7 +132,7 @@ off_t wxZipInputStream::OnSysSeek(off_t seek, wxSeekMode mode) unzCloseCurrentFile((unzFile)m_Archive); if (unzOpenCurrentFile((unzFile)m_Archive) != UNZ_OK) { - m_lasterror = wxStream_READ_ERR; + m_lasterror = wxSTREAM_READ_ERROR; return m_Pos; } toskip = nextpos; diff --git a/src/common/zstream.cpp b/src/common/zstream.cpp index 4c7a7bf0ec..f1380d5b64 100644 --- a/src/common/zstream.cpp +++ b/src/common/zstream.cpp @@ -89,17 +89,17 @@ size_t wxZlibInputStream::OnSysRead(void *buffer, size_t size) m_inflate->next_in = m_z_buffer; m_inflate->avail_in = m_parent_i_stream->LastRead(); - if (m_parent_i_stream->LastError() != wxStream_NOERROR && - m_parent_i_stream->LastError() != wxStream_EOF) + wxStreamError err = m_parent_i_stream->GetLastError(); + if ( err != wxSTREAM_NO_ERROR && err != wxSTREAM_EOF) { - m_lasterror = m_parent_i_stream->LastError(); + m_lasterror = err; return 0; // failed to read anything } if ( m_inflate->avail_in == 0 ) { // EOF - m_lasterror = wxStream_EOF; + m_lasterror = wxSTREAM_EOF; break; } } @@ -210,7 +210,7 @@ size_t wxZlibOutputStream::OnSysWrite(const void *buffer, size_t size) if (m_deflate->avail_out == 0) { m_parent_o_stream->Write(m_z_buffer, m_z_size); - if (m_parent_o_stream->LastError() != wxStream_NOERROR) + if ( !*m_parent_o_stream ) return (size - m_deflate->avail_in); m_deflate->next_out = m_z_buffer; diff --git a/src/files.lst b/src/files.lst index 5819cb2fb6..e7729aea61 100644 --- a/src/files.lst +++ b/src/files.lst @@ -180,6 +180,7 @@ ALL_HEADERS = \ unix/gsockunx.h \ unix/mimetype.h \ msw/dde.h \ + msw/gccpriv.h \ msw/mimetype.h \ msw/winundef.h \ protocol/file.h \ diff --git a/src/generic/busyinfo.cpp b/src/generic/busyinfo.cpp index 5acc107333..e85e99151a 100644 --- a/src/generic/busyinfo.cpp +++ b/src/generic/busyinfo.cpp @@ -12,7 +12,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -105,9 +105,13 @@ wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent) { m_InfoFrame = new wxInfoFrame( parent, message); m_InfoFrame->Show(TRUE); +#ifdef __WXMAC__ + m_InfoFrame->Update(); +#else wxYield(); m_InfoFrame->Refresh(); wxYield(); +#endif } wxBusyInfo::~wxBusyInfo() diff --git a/src/generic/calctrl.cpp b/src/generic/calctrl.cpp index 61eeb94708..b1e3317091 100644 --- a/src/generic/calctrl.cpp +++ b/src/generic/calctrl.cpp @@ -155,6 +155,19 @@ wxYearSpinCtrl::wxYearSpinCtrl(wxCalendarCtrl *cal) // wxCalendarCtrl // ---------------------------------------------------------------------------- +wxCalendarCtrl::wxCalendarCtrl(wxWindow *parent, + wxWindowID id, + const wxDateTime& date, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) +{ + Init(); + + (void)Create(parent, id, date, pos, size, style, name); +} + void wxCalendarCtrl::Init() { m_comboMonth = NULL; diff --git a/src/generic/choicdgg.cpp b/src/generic/choicdgg.cpp index 7c2f597f56..db7973f6ad 100644 --- a/src/generic/choicdgg.cpp +++ b/src/generic/choicdgg.cpp @@ -454,10 +454,7 @@ void wxSingleChoiceDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { m_selection = m_listbox->GetSelection(); m_stringSelection = m_listbox->GetStringSelection(); - // TODO! -#ifndef __WXMOTIF__ if ( m_listbox->HasClientUntypedData() ) -#endif SetClientData(m_listbox->GetClientData(m_selection)); EndModal(wxID_OK); } @@ -467,10 +464,7 @@ void wxSingleChoiceDialog::OnListBoxDClick(wxCommandEvent& WXUNUSED(event)) m_selection = m_listbox->GetSelection(); m_stringSelection = m_listbox->GetStringSelection(); - // TODO! -#ifndef __WXMOTIF__ if ( m_listbox->HasClientUntypedData() ) -#endif SetClientData(m_listbox->GetClientData(m_selection)); EndModal(wxID_OK); @@ -510,11 +504,6 @@ void wxMultiChoiceDialog::SetSelections(const wxArrayInt& selections) bool wxMultiChoiceDialog::TransferDataFromWindow() { - // VZ: I hate to do it but I can't fix wxMotif right now (FIXME) -#ifdef __WXMOTIF__ - #define IsSelected Selected -#endif - m_selections.Empty(); size_t count = m_listbox->GetCount(); for ( size_t n = 0; n < count; n++ ) diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index c3d1807494..36e8e4c748 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -204,7 +204,8 @@ static const char *wxPostScriptHeaderColourImage = "\ } ifelse %% end of 'false' case\n\ "; -#ifndef __WXGTK20__ +#if wxUSE_PANGO +#else static char wxPostScriptHeaderReencodeISO1[] = "\n/reencodeISO {\n" "dup dup findfont dup length dict begin\n" @@ -253,7 +254,7 @@ static char wxPostScriptHeaderReencodeISO2[] = IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC) -float wxPostScriptDC::ms_PSScaleFactor = 10.0; +float wxPostScriptDC::ms_PSScaleFactor = 1.0; void wxPostScriptDC::SetResolution(int ppi) { @@ -886,7 +887,8 @@ void wxPostScriptDC::SetFont( const wxFont& font ) m_font = font; -#ifndef __WXGTK20__ +#if wxUSE_PANGO +#else int Style = m_font.GetStyle(); int Weight = m_font.GetWeight(); @@ -1117,13 +1119,18 @@ void wxPostScriptDC::SetBrush( const wxBrush& brush ) } } -#ifdef __WXGTK20__ +#if wxUSE_PANGO #define PANGO_ENABLE_ENGINE +#ifdef __WXGTK20__ #include "wx/gtk/private.h" -#include "wx/fontutil.h" #include "gtk/gtk.h" +#else +#include "wx/x11/private.h" +#endif + +#include "wx/fontutil.h" #include #include @@ -1194,8 +1201,8 @@ void draw_bezier_outline(FILE *file, FT_UInt glyph_index, int pos_x, int pos_y, - int scale_x, - int scale_y ) + double scale_x, + double scale_y ) { FT_Int load_flags = FT_LOAD_NO_BITMAP; FT_Glyph glyph; @@ -1213,16 +1220,20 @@ void draw_bezier_outline(FILE *file, fprintf(file, "gsave\n"); fprintf(file, "%d %d translate\n", pos_x, pos_y ); - // FT2 scales outlines to 26.6 pixels so the code below - // should read 26600 instead of the 60000. - fprintf(file, "%d 60000 div %d 60000 div scale\n", scale_x, scale_y ); - fprintf(file, "0 0 0 setrgbcolor\n"); + + // We have to replace the "," from the German + // locale with the Englich "." for PostScript + char buf[100]; + sprintf(buf, "%.8f %.8f scale\n", scale_x, scale_y ); + for (size_t i = 0; i < strlen(buf); i++) + if (buf[i] == ',') buf[i] = '.'; + fprintf(file, buf); FT_Load_Glyph(face, glyph_index, load_flags); FT_Get_Glyph (face->glyph, &glyph); FT_Outline_Decompose (&(((FT_OutlineGlyph)glyph)->outline), &outlinefunc, &outline_info); - fprintf(file, "closepath fill grestore \n"); + fprintf(file, "closepath fill grestore\n"); FT_Done_Glyph (glyph); } @@ -1233,78 +1244,6 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) { wxCHECK_RET( m_ok && m_pstream, wxT("invalid postscript dc") ); -#ifdef __WXGTK20__ - int dpi = GetResolution(); - dpi = 300; - PangoContext *context = pango_ft2_get_context ( dpi, dpi ); - - pango_context_set_language (context, pango_language_from_string ("en_US")); - pango_context_set_base_dir (context, PANGO_DIRECTION_LTR ); - - pango_context_set_font_description (context, m_font.GetNativeFontInfo()->description ); - - PangoLayout *layout = pango_layout_new (context); -#if wxUSE_UNICODE - wxCharBuffer buffer = wxConvUTF8.cWC2MB( text ); -#else - wxCharBuffer buffer = wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ); -#endif - pango_layout_set_text( layout, (const char*) buffer, strlen(buffer) ); - - PangoRectangle rect; - pango_layout_get_extents(layout, NULL, &rect); - - int xx = x * PANGO_SCALE; - int yy = y * PANGO_SCALE + (rect.height*2/3); - - int scale_x = LogicalToDeviceXRel( 1000 ); - int scale_y = LogicalToDeviceYRel( 1000 ); - - // Loop over lines in layout - int num_lines = pango_layout_get_line_count( layout ); - for (int i = 0; i < num_lines; i++) - { - PangoLayoutLine *line = pango_layout_get_line( layout, i ); - - // Loop over runs in line - GSList *runs_list = line->runs; - while (runs_list) - { - PangoLayoutRun *run = (PangoLayoutRun*) runs_list->data; - PangoItem *item = run->item; - PangoGlyphString *glyphs = run->glyphs; - PangoAnalysis *analysis = &item->analysis; - PangoFont *font = analysis->font; - FT_Face ft_face = pango_ft2_font_get_face(font); - - int num_glyphs = glyphs->num_glyphs; - for (int glyph_idx = 0; glyph_idx < num_glyphs; glyph_idx++) - { - PangoGlyphGeometry geometry = glyphs->glyphs[glyph_idx].geometry; - int pos_x = xx + geometry.x_offset; - int pos_y = yy - geometry.y_offset; - xx += geometry.width; - - draw_bezier_outline( m_pstream, ft_face, - (FT_UInt)(glyphs->glyphs[glyph_idx].glyph), - LogicalToDeviceX( pos_x / PANGO_SCALE ), - LogicalToDeviceY( pos_y / PANGO_SCALE ), - scale_x, scale_y ); - } - runs_list = runs_list->next; - } - } - - g_object_unref( G_OBJECT( layout ) ); -#else - wxCoord text_w, text_h, text_descent; - - GetTextExtent(text, &text_w, &text_h, &text_descent); - - // VZ: this seems to be unnecessary, so taking it out for now, if it - // doesn't create any problems, remove this comment entirely - //SetFont( m_font ); - if (m_textForegroundColour.Ok()) { unsigned char red = m_textForegroundColour.Red(); @@ -1345,6 +1284,90 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) } } +#if wxUSE_PANGO + int ps_dpi = 72; + int pango_dpi = 600; + PangoContext *context = pango_ft2_get_context ( pango_dpi, pango_dpi ); + + double scale = (double)pango_dpi / (double)ps_dpi; + scale /= m_userScaleY; + + pango_context_set_language (context, pango_language_from_string ("en_US")); + pango_context_set_base_dir (context, PANGO_DIRECTION_LTR ); + + pango_context_set_font_description (context, m_font.GetNativeFontInfo()->description ); + + PangoLayout *layout = pango_layout_new (context); +#if wxUSE_UNICODE + wxCharBuffer buffer = wxConvUTF8.cWC2MB( text ); +#else + wxCharBuffer buffer = wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ); +#endif + pango_layout_set_text( layout, (const char*) buffer, strlen(buffer) ); + + fprintf( m_pstream, "%%%% %s\n", (const char*)buffer ); + + PangoRectangle rect; + pango_layout_get_extents(layout, NULL, &rect); + + int xx = LogicalToDeviceX( x ); + int yy = LogicalToDeviceY( y ); + + int xxx = xx * PANGO_SCALE; + int yyy = yy * PANGO_SCALE - (int)(rect.height * 0.66 / scale); // Move down by estimated baseline. HACK. + +#define ps_kludge_factor 2.8 + + // Loop over lines in layout + int num_lines = pango_layout_get_line_count( layout ); + for (int i = 0; i < num_lines; i++) + { + PangoLayoutLine *line = pango_layout_get_line( layout, i ); + + // width of glyphs already printed + int all_width = 0; + + // Loop over runs in line + GSList *runs_list = line->runs; + while (runs_list) + { + PangoLayoutRun *run = (PangoLayoutRun*) runs_list->data; + PangoItem *item = run->item; + PangoGlyphString *glyphs = run->glyphs; + PangoAnalysis *analysis = &item->analysis; + PangoFont *font = analysis->font; + FT_Face ft_face = pango_ft2_font_get_face(font); + + int num_glyphs = glyphs->num_glyphs; + for (int glyph_idx = 0; glyph_idx < num_glyphs; glyph_idx++) + { + PangoGlyphGeometry geometry = glyphs->glyphs[glyph_idx].geometry; + int pos_x = xxx + (int)((double)(all_width+geometry.x_offset) / scale); + int pos_y = yyy + (int)((double)geometry.y_offset / scale ); + all_width += geometry.width; + + draw_bezier_outline( m_pstream, ft_face, + (FT_UInt)(glyphs->glyphs[glyph_idx].glyph), + pos_x / PANGO_SCALE, + pos_y / PANGO_SCALE, + 1.0/(ps_kludge_factor * scale * 26.6), + 1.0/(ps_kludge_factor * scale * 26.6) ); + } + runs_list = runs_list->next; + } + } + + g_object_unref( G_OBJECT( layout ) ); + g_object_unref( G_OBJECT( context ) ); +#else + wxCoord text_w, text_h, text_descent; + + GetTextExtent(text, &text_w, &text_h, &text_descent); + + // VZ: this seems to be unnecessary, so taking it out for now, if it + // doesn't create any problems, remove this comment entirely + //SetFont( m_font ); + int size = m_font.GetPointSize(); // wxCoord by = y + (wxCoord)floor( double(size) * 2.0 / 3.0 ); // approximate baseline @@ -1699,9 +1722,9 @@ bool wxPostScriptDC::StartDoc( const wxString& message ) { wxCHECK_MSG( m_ok, FALSE, wxT("invalid postscript dc") ); - if (m_printData.GetFilename() == "") + if (m_printData.GetFilename() == wxT("")) { - wxString filename = wxGetTempFileName("ps"); + wxString filename = wxGetTempFileName( wxT("ps") ); m_printData.SetFilename(filename); } @@ -1754,7 +1777,8 @@ bool wxPostScriptDC::StartDoc( const wxString& message ) fprintf( m_pstream, wxPostScriptHeaderEllipse ); fprintf( m_pstream, wxPostScriptHeaderEllipticArc ); fprintf( m_pstream, wxPostScriptHeaderColourImage ); -#ifndef __WXGTK20__ +#if wxUSE_PANGO +#else fprintf( m_pstream, wxPostScriptHeaderReencodeISO1 ); fprintf( m_pstream, wxPostScriptHeaderReencodeISO2 ); #endif @@ -1972,9 +1996,13 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, return; } -#ifdef __WXGTK20__ - int dpi = GetResolution(); - PangoContext *context = pango_ft2_get_context ( dpi, dpi ); +#if wxUSE_PANGO + int wx_dpi = GetResolution(); + int pango_dpi = 600; + PangoContext *context = pango_ft2_get_context ( pango_dpi, pango_dpi ); + + double scale = pango_dpi / wx_dpi; + scale /= m_userScaleY; pango_context_set_language (context, pango_language_from_string ("en_US")); pango_context_set_base_dir (context, PANGO_DIRECTION_LTR ); @@ -1984,20 +2012,19 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, PangoFontDescription *desc = fontToUse->GetNativeFontInfo()->description; pango_layout_set_font_description(layout, desc); #if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); #else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); + const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); #endif + pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; PangoRectangle rect; pango_layout_line_get_extents(line, NULL, &rect); - if (x) (*x) = (wxCoord) ( m_scaleX * rect.width / PANGO_SCALE ); - if (y) (*y) = (wxCoord) ( m_scaleY * rect.height / PANGO_SCALE ); + if (x) (*x) = (wxCoord) ( rect.width / PANGO_SCALE / scale ); + if (y) (*y) = (wxCoord) ( rect.height / PANGO_SCALE / scale ); if (descent) { // Do something about metrics here @@ -2093,40 +2120,40 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, lastStyle = Style; lastWeight = Weight; - const char *name = NULL; + const wxChar *name = NULL; switch (Family) { case wxMODERN: case wxTELETYPE: { - if ((Style == wxITALIC) && (Weight == wxBOLD)) name = "CourBoO.afm"; - else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = "CourBo.afm"; - else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = "CourO.afm"; - else name = "Cour.afm"; + if ((Style == wxITALIC) && (Weight == wxBOLD)) name = wxT("CourBoO.afm"); + else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = wxT("CourBo.afm"); + else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = wxT("CourO.afm"); + else name = wxT("Cour.afm"); break; } case wxROMAN: { - if ((Style == wxITALIC) && (Weight == wxBOLD)) name = "TimesBoO.afm"; - else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = "TimesBo.afm"; - else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = "TimesO.afm"; - else name = "TimesRo.afm"; + if ((Style == wxITALIC) && (Weight == wxBOLD)) name = wxT("TimesBoO.afm"); + else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = wxT("TimesBo.afm"); + else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = wxT("TimesO.afm"); + else name = wxT("TimesRo.afm"); break; } case wxSCRIPT: { - name = "Zapf.afm"; + name = wxT("Zapf.afm"); Style = wxNORMAL; Weight = wxNORMAL; } case wxSWISS: default: { - if ((Style == wxITALIC) && (Weight == wxBOLD)) name = "HelvBoO.afm"; - else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = "HelvBo.afm"; - else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = "HelvO.afm"; - else name = "Helv.afm"; + if ((Style == wxITALIC) && (Weight == wxBOLD)) name = wxT("HelvBoO.afm"); + else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = wxT("HelvBo.afm"); + else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = wxT("HelvO.afm"); + else name = wxT("Helv.afm"); break; } } diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index c7ed4450aa..26940cd0b5 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -70,7 +70,9 @@ #define INCL_BASE #include +#ifndef __EMX__ #include +#endif #include #include @@ -685,7 +687,7 @@ void wxGenericDirCtrl::OnBeginEditItem(wxTreeEvent &event) } // don't rename the individual sections - if (m_treeCtrl->GetParent( event.GetItem() ) == m_rootId) + if (m_treeCtrl->GetItemParent( event.GetItem() ) == m_rootId) { event.Veto(); return; diff --git a/src/generic/dirdlgg.cpp b/src/generic/dirdlgg.cpp index 2900942781..d7c41a3386 100644 --- a/src/generic/dirdlgg.cpp +++ b/src/generic/dirdlgg.cpp @@ -250,14 +250,14 @@ void wxGenericDirDialog::OnShowHidden( wxCommandEvent& event ) if (!m_dirCtrl) return; - m_dirCtrl->ShowHidden( event.GetInt() ); + m_dirCtrl->ShowHidden( event.GetInt() != 0 ); } void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) ) { wxTreeItemId id = m_dirCtrl->GetTreeCtrl()->GetSelection(); if ((id == m_dirCtrl->GetTreeCtrl()->GetRootItem()) || - (m_dirCtrl->GetTreeCtrl()->GetParent(id) == m_dirCtrl->GetTreeCtrl()->GetRootItem())) + (m_dirCtrl->GetTreeCtrl()->GetItemParent(id) == m_dirCtrl->GetTreeCtrl()->GetRootItem())) { wxMessageDialog msg(this, _("You cannot add a new directory to this section."), _("Create directory"), wxOK | wxICON_INFORMATION ); @@ -265,7 +265,7 @@ void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) ) return; } - wxTreeItemId parent = id ; // m_dirCtrl->GetTreeCtrl()->GetParent( id ); + wxTreeItemId parent = id ; // m_dirCtrl->GetTreeCtrl()->GetItemParent( id ); wxDirItemData *data = (wxDirItemData*)m_dirCtrl->GetTreeCtrl()->GetItemData( parent ); wxASSERT( data ); diff --git a/src/generic/dragimgg.cpp b/src/generic/dragimgg.cpp index d625524ed3..8e89afe823 100644 --- a/src/generic/dragimgg.cpp +++ b/src/generic/dragimgg.cpp @@ -139,12 +139,12 @@ bool wxGenericDragImage::Create(const wxString& str, const wxCursor& cursor) dc.SetFont(wxNullFont); wxMemoryDC dc2; - dc2.SetFont(font); // Sometimes GetTextExtent isn't accurate enough, so make it longer wxBitmap bitmap((int) ((w+2) * 1.5), (int) h+2); dc2.SelectObject(bitmap); + dc2.SetFont(font); dc2.SetBackground(* wxWHITE_BRUSH); dc2.Clear(); dc2.SetBackgroundMode(wxTRANSPARENT); diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp index 3890805a6d..bcb998dbce 100644 --- a/src/generic/filedlgg.cpp +++ b/src/generic/filedlgg.cpp @@ -30,8 +30,8 @@ #if wxUSE_FILEDLG -#if !defined(__UNIX__) && !defined(__DOS__) -#error wxFileDialog currently only supports Unix and DOS +#if !defined(__UNIX__) && !defined(__DOS__) && !defined(__WIN32__) +#error wxFileDialog currently only supports Unix, win32 and DOS #endif #include "wx/checkbox.h" @@ -76,7 +76,9 @@ #endif #include +#if defined(__UNIX__) || defined(__DOS__) #include +#endif // ---------------------------------------------------------------------------- // constants @@ -140,6 +142,7 @@ class wxFileCtrl : public wxListCtrl public: wxFileCtrl(); wxFileCtrl( wxWindow *win, + wxStaticText *labelDir, wxWindowID id, const wxString &wild, bool showHidden, @@ -183,6 +186,9 @@ private: wxWindow *m_goToParentControl; wxWindow *m_newDirControl; + // the label showing the current directory + wxStaticText *m_labelDir; + DECLARE_DYNAMIC_CLASS(wxFileCtrl); DECLARE_EVENT_TABLE() }; @@ -248,7 +254,7 @@ wxFileIconsTable::wxFileIconsTable() : static wxBitmap CreateAntialiasedBitmap(const wxImage& img) { - wxImage small(16, 16); + wxImage smallimg (16, 16); unsigned char *p1, *p2, *ps; unsigned char mr = img.GetMaskRed(), mg = img.GetMaskGreen(), @@ -257,8 +263,8 @@ static wxBitmap CreateAntialiasedBitmap(const wxImage& img) unsigned x, y; unsigned sr, sg, sb, smask; - p1 = img.GetData(), p2 = img.GetData() + 3 * 32, ps = small.GetData(); - small.SetMaskColour(mr, mr, mr); + p1 = img.GetData(), p2 = img.GetData() + 3 * 32, ps = smallimg.GetData(); + smallimg.SetMaskColour(mr, mr, mr); for (y = 0; y < 16; y++) { @@ -291,7 +297,7 @@ static wxBitmap CreateAntialiasedBitmap(const wxImage& img) p1 += 32 * 3, p2 += 32 * 3; } - return wxBitmap(small); + return wxBitmap(smallimg); } // finds empty borders and return non-empty area of image: @@ -360,7 +366,16 @@ int wxFileIconsTable::GetIconID(const wxString& extension, const wxString& mime) m_HashTable.Put(extension, new wxFileIconEntry(newid)); return newid; } +#ifdef __WIN32__ + wxBitmap myBitmap (ic.GetWidth(), ic.GetHeight() ) ; + wxMemoryDC memDC; + memDC.SelectObject( myBitmap ); + memDC.DrawIcon(ic,0,0); + memDC.SelectObject( wxNullBitmap ); + wxImage img = myBitmap.ConvertToImage(); +#else wxImage img = ic.ConvertToImage(); +#endif delete ft; int id = m_ImageList.GetImageCount(); @@ -392,7 +407,7 @@ int wxFileIconsTable::GetIconID(const wxString& extension, const wxString& mime) // ---------------------------------------------------------------------------- static -int ListCompare( long data1, long data2, long WXUNUSED(data) ) +int ListCompare( long data1, long data2, long WXUNUSED(data)) { wxFileData *fd1 = (wxFileData*)data1 ; wxFileData *fd2 = (wxFileData*)data2 ; @@ -452,8 +467,12 @@ wxFileData::wxFileData( const wxString &name, const wxString &fname ) // struct passwd *user = getpwuid( buff.st_uid ); // struct group *grp = getgrgid( buff.st_gid ); - m_isDir = S_ISDIR( buff.st_mode ); - m_isExe = ((buff.st_mode & S_IXUSR ) == S_IXUSR ); +#ifdef __VISUALC__ + m_isDir = ((buff.st_mode & _S_IFDIR ) == _S_IFDIR ); +#else + m_isDir = S_ISDIR( buff.st_mode ); +#endif // VC++ + m_isExe = ((buff.st_mode & wxS_IXUSR ) == wxS_IXUSR ); m_size = buff.st_size; @@ -466,9 +485,9 @@ wxFileData::wxFileData( const wxString &name, const wxString &fname ) char buffer[10]; sprintf( buffer, "%c%c%c", - ((( buff.st_mode & S_IRUSR ) == S_IRUSR ) ? 'r' : '-'), - ((( buff.st_mode & S_IWUSR ) == S_IWUSR ) ? 'w' : '-'), - ((( buff.st_mode & S_IXUSR ) == S_IXUSR ) ? 'x' : '-') ); + ((( buff.st_mode & wxS_IRUSR ) == wxS_IRUSR ) ? 'r' : '-'), + ((( buff.st_mode & wxS_IWUSR ) == wxS_IWUSR ) ? 'w' : '-'), + ((( buff.st_mode & wxS_IXUSR ) == wxS_IXUSR ) ? 'x' : '-') ); #if wxUSE_UNICODE m_permissions = wxConvUTF8.cMB2WC( buffer ); #else @@ -494,13 +513,13 @@ wxString wxFileData::GetFullName() const wxString wxFileData::GetHint() const { wxString s = m_fileName; - s += " "; - if (m_isDir) s += _(" "); - else if (m_isLink) s += _(" "); + s += wxT(" "); + if (m_isDir) s += wxT(" "); + else if (m_isLink) s += wxT(" "); else { s += LongToString( m_size ); - s += _(" bytes "); + s += wxT(" bytes "); } s += IntToString( m_day ); s += wxT("."); @@ -605,6 +624,7 @@ wxFileCtrl::wxFileCtrl() } wxFileCtrl::wxFileCtrl(wxWindow *win, + wxStaticText *labelDir, wxWindowID id, const wxString& wild, bool showHidden, @@ -625,6 +645,8 @@ wxFileCtrl::wxFileCtrl(wxWindow *win, m_goToParentControl = m_newDirControl = NULL; + m_labelDir = labelDir; + m_showHidden = showHidden; } @@ -673,6 +695,10 @@ long wxFileCtrl::Add( wxFileData *fd, wxListItem &item ) void wxFileCtrl::UpdateFiles() { + // don't do anything before ShowModal() call which sets m_dirName + if ( m_dirName.empty() ) + return; + wxBusyCursor bcur; // this may take a while... long my_style = GetWindowStyleFlag(); @@ -777,7 +803,7 @@ void wxFileCtrl::UpdateFiles() } } - SortItems(ListCompare, 0); + SortItems((wxListCtrlCompare)ListCompare, 0); if ( my_style & wxLC_REPORT ) { @@ -840,7 +866,7 @@ void wxFileCtrl::MakeDir() if (id != -1) { - SortItems( ListCompare, 0 ); + SortItems( (wxListCtrlCompare) ListCompare, 0 ); id = FindItem( 0, (long)fd ); EnsureVisible( id ); EditLabel( id ); @@ -867,6 +893,8 @@ void wxFileCtrl::GoToParentDir() SetItemState( id, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); EnsureVisible( id ); } + + m_labelDir->SetLabel(m_dirName); } } @@ -882,6 +910,8 @@ void wxFileCtrl::GoToDir( const wxString &dir ) UpdateFiles(); SetItemState( 0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); EnsureVisible( 0 ); + + m_labelDir->SetLabel(dir); } void wxFileCtrl::GetDir( wxString &dir ) @@ -988,8 +1018,9 @@ BEGIN_EVENT_TABLE(wxFileDialog,wxDialog) EVT_BUTTON(wxID_OK, wxFileDialog::OnListOk) EVT_LIST_ITEM_SELECTED(ID_LIST_CTRL, wxFileDialog::OnSelected) EVT_LIST_ITEM_ACTIVATED(ID_LIST_CTRL, wxFileDialog::OnActivated) - EVT_CHOICE(ID_CHOICE,wxFileDialog::OnChoice) + EVT_CHOICE(ID_CHOICE,wxFileDialog::OnChoiceFilter) EVT_TEXT_ENTER(ID_TEXT,wxFileDialog::OnTextEnter) + EVT_TEXT(ID_TEXT,wxFileDialog::OnTextChange) EVT_CHECKBOX(ID_CHECK,wxFileDialog::OnCheck) END_EVENT_TABLE() @@ -1061,9 +1092,12 @@ wxFileDialog::wxFileDialog(wxWindow *parent, } if ( firstWild.Left( 2 ) == wxT("*.") ) m_filterExtension = firstWild.Mid( 1 ); - if ( m_filterExtension == ".*" ) m_filterExtension = wxEmptyString; + if ( m_filterExtension == wxT(".*") ) + m_filterExtension = wxEmptyString; // layout + + bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL ); @@ -1114,13 +1148,13 @@ wxFileDialog::wxFileDialog(wxWindow *parent, #endif buttonsizer->Add( butNewDir, 0, wxALL, 5 ); - if (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA) + if (is_pda) mainsizer->Add( buttonsizer, 0, wxALL | wxEXPAND, 0 ); else mainsizer->Add( buttonsizer, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer *staticsizer = new wxBoxSizer( wxHORIZONTAL ); - if (wxSystemSettings::GetScreenType() > wxSYS_SCREEN_PDA) + if (is_pda) staticsizer->Add( new wxStaticText( this, -1, _("Current directory:") ), 0, wxRIGHT, 10 ); m_static = new wxStaticText( this, -1, m_dir ); staticsizer->Add( m_static, 1 ); @@ -1130,14 +1164,15 @@ wxFileDialog::wxFileDialog(wxWindow *parent, if ( !(m_dialogStyle & wxMULTIPLE) ) style2 |= wxLC_SINGLE_SEL; - m_list = new wxFileCtrl( this, ID_LIST_CTRL, firstWild, ms_lastShowHidden, + m_list = new wxFileCtrl( this, m_static, ID_LIST_CTRL, + firstWild, ms_lastShowHidden, wxDefaultPosition, wxSize(540,200), style2); m_list->SetNewDirControl(butNewDir); m_list->SetGoToParentControl(butDirUp); - if (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA) + if (is_pda) { // PDAs have a different screen layout mainsizer->Add( m_list, 1, wxEXPAND | wxLEFT|wxRIGHT, 5 ); @@ -1215,31 +1250,38 @@ wxFileDialog::~wxFileDialog() int wxFileDialog::ShowModal() { m_list->GoToDir(m_dir); + m_text->SetValue(m_fileName); return wxDialog::ShowModal(); } +void wxFileDialog::DoSetFilterIndex(int filterindex) +{ + wxString *str = (wxString*) m_choice->GetClientData( filterindex ); + m_list->SetWild( *str ); + m_filterIndex = filterindex; + if ( str->Left(2) == wxT("*.") ) + { + m_filterExtension = str->Mid(1); + if (m_filterExtension == _T(".*")) + m_filterExtension.clear(); + } + else + { + m_filterExtension.clear(); + } +} + void wxFileDialog::SetFilterIndex( int filterindex ) { m_choice->SetSelection( filterindex ); - wxCommandEvent event; - event.SetInt( filterindex ); - OnChoice( event ); + + DoSetFilterIndex(filterindex); } -void wxFileDialog::OnChoice( wxCommandEvent &event ) +void wxFileDialog::OnChoiceFilter( wxCommandEvent &event ) { - int index = (int)event.GetInt(); - wxString *str = (wxString*) m_choice->GetClientData( index ); - m_list->SetWild( *str ); - m_filterIndex = index; - if ( str -> Left( 2 ) == wxT("*.") ) - { - m_filterExtension = str -> Mid( 1 ); - if (m_filterExtension == ".*") m_filterExtension = wxEmptyString; - } - else - m_filterExtension = wxEmptyString; + DoSetFilterIndex((int)event.GetInt()); } void wxFileDialog::OnCheck( wxCommandEvent &event ) @@ -1259,6 +1301,27 @@ void wxFileDialog::OnTextEnter( wxCommandEvent &WXUNUSED(event) ) GetEventHandler()->ProcessEvent( cevent ); } +static bool ignoreChanges = FALSE; + +void wxFileDialog::OnTextChange( wxCommandEvent &WXUNUSED(event) ) +{ + if (!ignoreChanges) + { + // Clear selections. Otherwise when the user types in a value they may + // not get the file whose name they typed. + if (m_list->GetSelectedItemCount() > 0) + { + long item = m_list->GetNextItem(-1, wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + while ( item != -1 ) + { + m_list->SetItemState(item,0, wxLIST_STATE_SELECTED); + item = m_list->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + } + } + } +} + void wxFileDialog::OnSelected( wxListEvent &event ) { wxString filename( event.m_item.m_text ); @@ -1271,7 +1334,9 @@ void wxFileDialog::OnSelected( wxListEvent &event ) dir += filename; if (wxDirExists(dir)) return; + ignoreChanges = TRUE; m_text->SetValue( filename ); + ignoreChanges = FALSE; } void wxFileDialog::HandleAction( const wxString &fn ) @@ -1286,8 +1351,6 @@ void wxFileDialog::HandleAction( const wxString &fn ) { m_list->GoToParentDir(); m_list->SetFocus(); - m_list->GetDir( dir ); - m_static->SetLabel( dir ); return; } @@ -1296,8 +1359,6 @@ void wxFileDialog::HandleAction( const wxString &fn ) { m_list->GoToHomeDir(); m_list->SetFocus(); - m_list->GetDir( dir ); - m_static->SetLabel( dir ); return; } @@ -1334,42 +1395,43 @@ void wxFileDialog::HandleAction( const wxString &fn ) if (wxDirExists(filename)) { m_list->GoToDir( filename ); - m_list->GetDir( dir ); - m_static->SetLabel( dir ); return; } - - if ( (m_dialogStyle & wxSAVE) && (m_dialogStyle & wxOVERWRITE_PROMPT) ) + // append the default extension to the filename if it doesn't have any + // + // VZ: the logic of testing for !wxFileExists() only for the open file + // dialog is not entirely clear to me, why don't we allow saving to a + // file without extension as well? + if ( !(m_dialogStyle & wxOPEN) || !wxFileExists(filename) ) { - if (filename.Find( wxT('.') ) == wxNOT_FOUND || - filename.AfterLast( wxT('.') ).Find( wxFILE_SEP_PATH ) != wxNOT_FOUND) - filename << m_filterExtension; - if (wxFileExists( filename )) + wxString ext; + wxSplitPath(filename, NULL, NULL, &ext); + if ( ext.empty() ) { - wxString msg; - msg.Printf( _("File '%s' already exists, do you really want to " - "overwrite it?"), filename.c_str() ); - - if (wxMessageBox(msg, _("Confirm"), wxYES_NO) != wxYES) - return; + // append the first extension of the filter string + filename += m_filterExtension.BeforeFirst(_T(';')); } } - else if ( m_dialogStyle & wxOPEN ) - { - if ( !wxFileExists( filename ) ) - if (filename.Find( wxT('.') ) == wxNOT_FOUND || - filename.AfterLast( wxT('.') ).Find( wxFILE_SEP_PATH ) != wxNOT_FOUND) - filename << m_filterExtension; - if ( m_dialogStyle & wxFILE_MUST_EXIST ) - { - if ( !wxFileExists( filename ) ) - { - wxMessageBox(_("Please choose an existing file."), _("Error"), wxOK | wxICON_ERROR ); - return; - } - } + // check that the file [doesn't] exist if necessary + if ( (m_dialogStyle & wxSAVE) && + (m_dialogStyle & wxOVERWRITE_PROMPT) && + wxFileExists( filename ) ) + { + wxString msg; + msg.Printf( _("File '%s' already exists, do you really want to " + "overwrite it?"), filename.c_str() ); + + if (wxMessageBox(msg, _("Confirm"), wxYES_NO) != wxYES) + return; + } + else if ( (m_dialogStyle & wxOPEN) && + (m_dialogStyle & wxFILE_MUST_EXIST) && + !wxFileExists(filename) ) + { + wxMessageBox(_("Please choose an existing file."), _("Error"), + wxOK | wxICON_ERROR ); } SetPath( filename ); @@ -1413,20 +1475,12 @@ void wxFileDialog::OnUp( wxCommandEvent &WXUNUSED(event) ) { m_list->GoToParentDir(); m_list->SetFocus(); - wxString dir; - m_list->GetDir( dir ); - m_static->SetLabel( dir ); } void wxFileDialog::OnHome( wxCommandEvent &WXUNUSED(event) ) { m_list->GoToHomeDir(); m_list->SetFocus(); - wxString dir; - m_list->GetDir( dir ); - m_static->SetLabel( dir ); - - m_text->SetFocus(); } void wxFileDialog::OnNew( wxCommandEvent &WXUNUSED(event) ) diff --git a/src/generic/fontdlgg.cpp b/src/generic/fontdlgg.cpp index 359424e7ec..13f1ca45cd 100644 --- a/src/generic/fontdlgg.cpp +++ b/src/generic/fontdlgg.cpp @@ -74,14 +74,14 @@ void wxFontPreviewer::OnPaint(wxPaintEvent& WXUNUSED(event)) if ( font.Ok() ) { - dc.SetFont(GetFont()); + dc.SetFont(font); // Calculate vertical centre long w, h; - dc.GetTextExtent("X", &w, &h); + dc.GetTextExtent( wxT("X"), &w, &h); dc.SetTextForeground(GetForegroundColour()); dc.SetClippingRegion(2, 2, size.x-4, size.y-4); dc.DrawText(_("ABCDEFGabcdefg12345"), - 10, h/2 + size.y/2); + 10, size.y/2 - h/2); dc.DestroyClippingRegion(); } } @@ -191,6 +191,10 @@ bool wxGenericFontDialog::DoCreate(wxWindow *parent) InitializeFont(); CreateWidgets(); + // sets initial font in preview area + wxCommandEvent dummy; + OnChangeFont(dummy); + return TRUE; } @@ -237,8 +241,8 @@ void wxGenericFontDialog::CreateWidgets() int i; for ( i = 0; i < 40; i++) { - char buf[5]; - sprintf(buf, "%d", i + 1); + wxChar buf[5]; + wxSprintf(buf, wxT("%d"), i + 1); pointSizes[i] = buf; } @@ -248,7 +252,7 @@ void wxGenericFontDialog::CreateWidgets() m_previewer = new wxFontPreviewer(this); wxButton *okButton = new wxButton(this, wxID_OK, _("OK")); - wxButton *cancelButton = new wxButton(this, wxID_OK, _("Cancel")); + wxButton *cancelButton = new wxButton(this, wxID_CANCEL, _("Cancel")); familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) ); styleChoice->SetStringSelection(wxFontStyleIntToString(dialogFont.GetStyle())); diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 8e541e67f2..04cf4dba2a 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -203,6 +203,8 @@ public: void ScrollWindow( int dx, int dy, const wxRect *rect ); + wxGrid* GetOwner() { return m_owner; } + private: wxGrid *m_owner; wxGridRowLabelWindow *m_rowLabelWin; @@ -424,6 +426,7 @@ static inline int GetScrollY(int y) wxGridCellEditor::wxGridCellEditor() { m_control = NULL; + m_attr = NULL; } @@ -445,6 +448,9 @@ void wxGridCellEditor::PaintBackground(const wxRect& rectCell, { // erase the background because we might not fill the cell wxClientDC dc(m_control->GetParent()); + wxGridWindow* gridWindow = wxDynamicCast(m_control->GetParent(), wxGridWindow); + if (gridWindow) + gridWindow->GetOwner()->PrepareDC(dc); dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(wxBrush(attr->GetBackgroundColour(), wxSOLID)); dc.DrawRectangle(rectCell); @@ -1193,7 +1199,31 @@ void wxGridCellBoolEditor::SetSize(const wxRect& r) size.y -= 2; #endif - m_control->Move(r.x + r.width/2 - size.x/2, r.y + r.height/2 - size.y/2); + int hAlign = wxALIGN_CENTRE; + int vAlign = wxALIGN_CENTRE; + if (GetCellAttr()) + GetCellAttr()->GetAlignment(& hAlign, & vAlign); + + int x = 0, y = 0; + if (hAlign == wxALIGN_LEFT) + { + x = r.x + 2; +#ifdef __WXMSW__ + x += 2; +#endif + y = r.y + r.height/2 - size.y/2; + } + else if (hAlign == wxALIGN_RIGHT) + { + x = r.x + r.width - size.x - 2; + y = r.y + r.height/2 - size.y/2; + } + else if (hAlign == wxALIGN_CENTRE) + { + x = r.x + r.width/2 - size.x/2; + y = r.y + r.height/2 - size.y/2; + } + m_control->Move(x, y); } void wxGridCellBoolEditor::Show(bool show, wxGridCellAttr *attr) @@ -1353,15 +1383,15 @@ void wxGridCellChoiceEditor::BeginEdit(int row, int col, wxGrid* grid) m_startValue = grid->GetTable()->GetValue(row, col); - Combo()->SetValue(m_startValue); - size_t count = m_choices.GetCount(); - for (size_t i=0; iSetValue(m_startValue); + else { - if (m_startValue == m_choices[i]) - { - Combo()->SetSelection(i); - break; - } + // find the right position, or default to the first if not found + int pos = Combo()->FindString(m_startValue); + if (pos == -1) + pos = 0; + Combo()->SetSelection(pos); } Combo()->SetInsertionPointEnd(); Combo()->SetFocus(); @@ -1377,7 +1407,10 @@ bool wxGridCellChoiceEditor::EndEdit(int row, int col, grid->GetTable()->SetValue(row, col, value); m_startValue = wxEmptyString; - Combo()->SetValue(m_startValue); + if (m_allowOthers) + Combo()->SetValue(m_startValue); + else + Combo()->SetSelection(0); return changed; } @@ -1482,13 +1515,21 @@ void wxGridCellRenderer::Draw(wxGrid& grid, { dc.SetBackgroundMode( wxSOLID ); - if ( isSelected ) + // grey out fields if the grid is disabled + if( grid.IsEnabled() ) { - dc.SetBrush( wxBrush(grid.GetSelectionBackground(), wxSOLID) ); + if ( isSelected ) + { + dc.SetBrush( wxBrush(grid.GetSelectionBackground(), wxSOLID) ); + } + else + { + dc.SetBrush( wxBrush(attr.GetBackgroundColour(), wxSOLID) ); + } } else { - dc.SetBrush( wxBrush(attr.GetBackgroundColour(), wxSOLID) ); + dc.SetBrush(wxBrush(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNFACE), wxSOLID)); } dc.SetPen( *wxTRANSPARENT_PEN ); @@ -1577,15 +1618,15 @@ void wxGridCellStringRenderer::Draw(wxGrid& grid, int i, c_cols, c_rows; for (i = col+cell_cols; i < cols; i++) { - bool is_empty = TRUE; + bool is_empty = TRUE; for (int j=row; j 0) c_rows = 0; - if (grid.GetTable()->IsEmptyCell(row+c_rows, i)) + if (!grid.GetTable()->IsEmptyCell(j+c_rows, i)) { - is_empty = FALSE; + is_empty = FALSE; break; } } @@ -1597,20 +1638,20 @@ void wxGridCellStringRenderer::Draw(wxGrid& grid, break; } if (rect.width >= best_width) break; - } + } overflowCols = i - col - cell_cols + 1; - if (overflowCols >= cols) overflowCols = cols - 1; + if (overflowCols >= cols) overflowCols = cols - 1; } if (overflowCols > 0) // redraw overflow cells w/ proper hilight { hAlign = wxALIGN_LEFT; // if oveflowed then it's left aligned - wxRect clip = rect; + wxRect clip = rect; clip.x += rectCell.width; // draw each overflow cell individually int col_end = col+cell_cols+overflowCols; if (col_end >= grid.GetNumberCols()) - col_end = grid.GetNumberCols() - 1; + col_end = grid.GetNumberCols() - 1; for (int i = col+cell_cols; i <= col_end; i++) { clip.width = grid.GetColSize(i) - 1; @@ -1618,15 +1659,15 @@ void wxGridCellStringRenderer::Draw(wxGrid& grid, dc.SetClippingRegion(clip); SetTextColoursAndFont(grid, attr, dc, - grid.IsInSelection(row,i)); + grid.IsInSelection(row,i)); grid.DrawTextRectangle(dc, grid.GetCellValue(row, col), - rect, hAlign, vAlign); + rect, hAlign, vAlign); clip.x += grid.GetColSize(i) - 1; } rect = rectCell; - rect.Inflate(-1); + rect.Inflate(-1); rect.width++; dc.DestroyClippingRegion(); } @@ -1735,9 +1776,9 @@ wxString wxGridCellFloatRenderer::GetString(wxGrid& grid, int row, int col) { if ( m_precision == -1 ) { - // default width/precision - m_format = _T("%f"); - } + // default width/precision + m_format = _T("%f"); + } else { m_format.Printf(_T("%%.%df"), m_precision); @@ -1894,11 +1935,31 @@ void wxGridCellBoolRenderer::Draw(wxGrid& grid, } // draw a border around checkmark + int vAlign, hAlign; + attr.GetAlignment(& hAlign, &vAlign); + wxRect rectBorder; - rectBorder.x = rect.x + rect.width/2 - size.x/2; - rectBorder.y = rect.y + rect.height/2 - size.y/2; - rectBorder.width = size.x; - rectBorder.height = size.y; + if (hAlign == wxALIGN_CENTRE) + { + rectBorder.x = rect.x + rect.width/2 - size.x/2; + rectBorder.y = rect.y + rect.height/2 - size.y/2; + rectBorder.width = size.x; + rectBorder.height = size.y; + } + else if (hAlign == wxALIGN_LEFT) + { + rectBorder.x = rect.x + 2; + rectBorder.y = rect.y + rect.height/2 - size.y/2; + rectBorder.width = size.x; + rectBorder.height = size.y; + } + else if (hAlign == wxALIGN_RIGHT) + { + rectBorder.x = rect.x + rect.width - size.x - 2; + rectBorder.y = rect.y + rect.height/2 - size.y/2; + rectBorder.width = size.x; + rectBorder.height = size.y; + } bool value; if ( grid.GetTable()->CanGetValueAs(row, col, wxGRID_VALUE_BOOL) ) @@ -3832,11 +3893,13 @@ void wxGrid::Init() // init attr cache m_attrCache.row = -1; + m_attrCache.col = -1; + m_attrCache.attr = NULL; // TODO: something better than this ? // m_labelFont = this->GetFont(); - m_labelFont.SetWeight( m_labelFont.GetWeight() + 2 ); + m_labelFont.SetWeight( wxBOLD ); m_rowLabelHorizAlign = wxALIGN_LEFT; m_rowLabelVertAlign = wxALIGN_CENTRE; @@ -3909,7 +3972,7 @@ void wxGrid::InitRowHeights() m_rowBottoms.Alloc( m_numRows ); int rowBottom = 0; - + m_rowHeights.Add( m_defaultRowHeight, m_numRows ); for ( int i = 0; i < m_numRows; i++ ) @@ -3985,6 +4048,26 @@ void wxGrid::CalcDimensions() int w = m_numCols > 0 ? GetColRight(m_numCols - 1) + m_extraWidth + 1 : 0; int h = m_numRows > 0 ? GetRowBottom(m_numRows - 1) + m_extraHeight + 1 : 0; + // take into account editor if shown + if( IsCellEditControlShown() ) + { + int w2, h2; + int r = m_currentCellCoords.GetRow(); + int c = m_currentCellCoords.GetCol(); + int x = GetColLeft(c); + int y = GetRowTop(r); + + // how big is the editor + wxGridCellAttr* attr = GetCellAttr(r, c); + wxGridCellEditor* editor = attr->GetEditor(this, r, c); + editor->GetControl()->GetSize(&w2, &h2); + w2 += x; + h2 += y; + if( w2 > w ) w = w2; + if( h2 > h ) h = h2; + editor->DecRef(); + attr->DecRef(); + } // preserve (more or less) the previous position int x, y; GetViewStart( &x, &y ); @@ -5898,7 +5981,7 @@ void wxGrid::Refresh(bool eraseb, const wxRect* rect) else { m_cornerLabelWin->Refresh(eraseb, NULL); - m_colLabelWin->Refresh(eraseb, NULL); + m_colLabelWin->Refresh(eraseb, NULL); m_rowLabelWin->Refresh(eraseb, NULL); m_gridWin->Refresh(eraseb, NULL); } @@ -6106,15 +6189,15 @@ void wxGrid::OnKeyDown( wxKeyEvent& event ) if ( (event.KeyCode() == WXK_F2 && !event.HasModifiers()) || editor->IsAcceptedKey(event) ) { + // ensure cell is visble + MakeCellVisible(row, col); EnableCellEditControl(); - // the editor could be not shown for a variety of - // reasons (i.e. blocked by the app or whatever), so - // check if it really was created - if ( m_cellEditCtrlEnabled ) - { - editor->StartingKey(event); - } + // a problem can arise if the cell is not completely + // visible (even after calling MakeCellVisible the + // control is not created and calling StartingKey will + // crash the app + if( editor->IsCreated() && m_cellEditCtrlEnabled ) editor->StartingKey(event); } else { @@ -6258,7 +6341,7 @@ void wxGrid::HighlightBlock( int topRow, int leftCol, int bottomRow, int rightCo wxRect rect; rect = BlockToDeviceRect( wxGridCellCoords ( topRow, leftCol ), wxGridCellCoords ( bottomRow, rightCol ) ); - m_gridWin->Refresh( FALSE, &rect ); + m_gridWin->Refresh( FALSE, &rect ); } // Now handle changing an existing selection area. else if ( m_selectingTopLeft != updateTopLeft || @@ -7262,8 +7345,6 @@ void wxGrid::ShowCellEditControl() GetEventHandler()->ProcessEvent(evt); } - editor->Show( TRUE, attr ); - // resize editor to overflow into righthand cells if allowed int maxWidth = rect.width; wxString value = GetCellValue(row, col); @@ -7271,38 +7352,45 @@ void wxGrid::ShowCellEditControl() { int y; GetTextExtent(value, &maxWidth, &y, - NULL, NULL, &attr->GetFont()); + NULL, NULL, &attr->GetFont()); if (maxWidth < rect.width) maxWidth = rect.width; } int client_right = m_gridWin->GetClientSize().GetWidth(); if (rect.x+maxWidth > client_right) - maxWidth = client_right - rect.x; + maxWidth = client_right - rect.x; - if ((maxWidth > rect.width) && (col < m_numCols) && m_table) - { + if ((maxWidth > rect.width) && (col < m_numCols) && m_table) + { GetCellSize( row, col, &cell_rows, &cell_cols ); - // may have changed earlier - for (int i = col+cell_cols; i < m_numCols; i++) - { + // may have changed earlier + for (int i = col+cell_cols; i < m_numCols; i++) + { int c_rows, c_cols; GetCellSize( row, i, &c_rows, &c_cols ); - // looks weird going over a multicell - if (m_table->IsEmptyCell(row,i) && - (rect.width < maxWidth) && (c_rows == 1)) - rect.width += GetColWidth(i); - else - break; - } + // looks weird going over a multicell + if (m_table->IsEmptyCell(row,i) && + (rect.width < maxWidth) && (c_rows == 1)) + rect.width += GetColWidth(i); + else + break; + } if (rect.GetRight() > client_right) - rect.SetRight(client_right-1); + rect.SetRight(client_right-1); } + editor->SetCellAttr(attr); editor->SetSize( rect ); + editor->Show( TRUE, attr ); + + // recalc dimensions in case we need to + // expand the scrolled window to account for editor + CalcDimensions(); editor->BeginEdit(row, col, this); + editor->SetCellAttr(NULL); editor->DecRef(); attr->DecRef(); - } + } } } @@ -8635,13 +8723,16 @@ void wxGrid::ClearAttrCache() void wxGrid::CacheAttr(int row, int col, wxGridCellAttr *attr) const { - wxGrid *self = (wxGrid *)this; // const_cast + if ( attr != NULL ) + { + wxGrid *self = (wxGrid *)this; // const_cast - self->ClearAttrCache(); - self->m_attrCache.row = row; - self->m_attrCache.col = col; - self->m_attrCache.attr = attr; - wxSafeIncRef(attr); + self->ClearAttrCache(); + self->m_attrCache.row = row; + self->m_attrCache.col = col; + self->m_attrCache.attr = attr; + wxSafeIncRef(attr); + } } bool wxGrid::LookupAttr(int row, int col, wxGridCellAttr **attr) const @@ -9282,13 +9373,17 @@ void wxGrid::AutoSize() // round up the size to a multiple of scroll step - this ensures that we // won't get the scrollbars if we're sized exactly to this width - wxSize sizeFit(GetScrollX(size.x) * GRID_SCROLL_LINE_X, - GetScrollY(size.y) * GRID_SCROLL_LINE_Y); + // CalcDimension adds m_extraWidth + 1 etc. to calculate the necessary + // scrollbar steps + wxSize sizeFit(GetScrollX(size.x + m_extraWidth + 1) * GRID_SCROLL_LINE_X, + GetScrollY(size.y + m_extraHeight + 1) * GRID_SCROLL_LINE_Y); - // distribute the extra space between teh columns/rows to avoid having + // distribute the extra space between the columns/rows to avoid having // extra white space - wxCoord diff = sizeFit.x - size.x; - if ( diff ) + + // Remove the extra m_extraWidth + 1 added above + wxCoord diff = sizeFit.x - size.x + (m_extraWidth + 1); + if ( diff && m_numCols ) { // try to resize the columns uniformly wxCoord diffPerCol = diff / m_numCols; @@ -9312,8 +9407,8 @@ void wxGrid::AutoSize() } // same for rows - diff = sizeFit.y - size.y; - if ( diff ) + diff = sizeFit.y - size.y - (m_extraHeight + 1); + if ( diff && m_numRows ) { // try to resize the columns uniformly wxCoord diffPerRow = diff / m_numRows; diff --git a/src/generic/gridsel.cpp b/src/generic/gridsel.cpp index 2781694fb5..bac2f8950b 100644 --- a/src/generic/gridsel.cpp +++ b/src/generic/gridsel.cpp @@ -4,7 +4,7 @@ // Author: Stefan Neis // Modified by: // Created: 20/02/1999 -// RCS-ID: $$ +// RCS-ID: $Id$ // Copyright: (c) Stefan Neis (Stefan.Neis@t-online.de) // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -165,7 +165,7 @@ void wxGridSelection::SetSelectionMode(wxGrid::wxGridSelectionModes selmode) m_blockSelectionBottomRight.RemoveAt(n); SelectBlock( topRow, 0, bottomRow, m_grid->GetNumberCols() - 1, - 0, FALSE ); + FALSE, FALSE, FALSE, FALSE, FALSE ); } } else // selmode == wxGridSelectColumns) @@ -176,7 +176,7 @@ void wxGridSelection::SetSelectionMode(wxGrid::wxGridSelectionModes selmode) m_blockSelectionBottomRight.RemoveAt(n); SelectBlock( 0, leftCol, m_grid->GetNumberRows() - 1, rightCol, - 0, FALSE ); + FALSE, FALSE, FALSE, FALSE, FALSE ); } } } @@ -522,13 +522,13 @@ void wxGridSelection::SelectCell( int row, int col, if ( m_selectionMode == wxGrid::wxGridSelectRows ) { SelectBlock(row, 0, row, m_grid->GetNumberCols() - 1, - ControlDown, ShiftDown, AltDown, MetaDown); + ControlDown, ShiftDown, AltDown, MetaDown, sendEvent); return; } else if ( m_selectionMode == wxGrid::wxGridSelectColumns ) { SelectBlock(0, col, m_grid->GetNumberRows() - 1, col, - ControlDown, ShiftDown, AltDown, MetaDown); + ControlDown, ShiftDown, AltDown, MetaDown, sendEvent); return; } else if ( IsInSelection ( row, col ) ) @@ -647,18 +647,20 @@ void wxGridSelection::ToggleCellSelection( int row, int col, if ( m_selectionMode != wxGrid::wxGridSelectColumns ) { if ( topRow < row ) - SelectBlock( topRow, leftCol, - row - 1, rightCol, 0, FALSE ); + SelectBlock( topRow, leftCol, row - 1, rightCol, + FALSE, FALSE, FALSE, FALSE, FALSE ); if ( bottomRow > row ) - SelectBlock( row + 1, leftCol, - bottomRow, rightCol, 0, FALSE ); + SelectBlock( row + 1, leftCol, bottomRow, rightCol, + FALSE, FALSE, FALSE, FALSE, FALSE ); } if ( m_selectionMode != wxGrid::wxGridSelectRows ) { if ( leftCol < col ) - SelectBlock( row, leftCol, row, col - 1, 0, FALSE ); + SelectBlock( row, leftCol, row, col - 1, + FALSE, FALSE, FALSE, FALSE, FALSE ); if ( rightCol > col ) - SelectBlock( row, col + 1, row, rightCol, 0, FALSE ); + SelectBlock( row, col + 1, row, rightCol, + FALSE, FALSE, FALSE, FALSE, FALSE ); } } } @@ -676,11 +678,12 @@ void wxGridSelection::ToggleCellSelection( int row, int col, if (m_selectionMode == wxGrid::wxGridSelectCells) { if ( col > 0 ) - SelectBlock( row, 0, row, col - 1, 0, FALSE ); + SelectBlock( row, 0, row, col - 1, + FALSE, FALSE, FALSE, FALSE, FALSE ); if ( col < m_grid->GetNumberCols() - 1 ) SelectBlock( row, col + 1, row, m_grid->GetNumberCols() - 1, - 0, FALSE ); + FALSE, FALSE, FALSE, FALSE, FALSE ); } } } @@ -699,11 +702,12 @@ void wxGridSelection::ToggleCellSelection( int row, int col, if (m_selectionMode == wxGrid::wxGridSelectCells) { if ( row > 0 ) - SelectBlock( 0, col, row - 1, col, 0, FALSE ); + SelectBlock( 0, col, row - 1, col, + FALSE, FALSE, FALSE, FALSE, FALSE ); if ( row < m_grid->GetNumberRows() - 1 ) SelectBlock( row + 1, col, m_grid->GetNumberRows() - 1, col, - 0, FALSE ); + FALSE, FALSE, FALSE, FALSE, FALSE ); } } } diff --git a/src/generic/helpext.cpp b/src/generic/helpext.cpp index bfd3efb403..f6e3add7b5 100644 --- a/src/generic/helpext.cpp +++ b/src/generic/helpext.cpp @@ -47,9 +47,9 @@ IMPLEMENT_CLASS(wxExtHelpController, wxHTMLHelpControllerBase) /// Name of environment variable to set help browser. -#define WXEXTHELP_ENVVAR_BROWSER "WX_HELPBROWSER" +#define WXEXTHELP_ENVVAR_BROWSER wxT("WX_HELPBROWSER") /// Is browser a netscape browser? -#define WXEXTHELP_ENVVAR_BROWSERISNETSCAPE "WX_HELPBROWSER_NS" +#define WXEXTHELP_ENVVAR_BROWSERISNETSCAPE wxT("WX_HELPBROWSER_NS") /** This class implements help via an external browser. @@ -62,18 +62,17 @@ wxExtHelpController::wxExtHelpController(void) m_BrowserName = WXEXTHELP_DEFAULTBROWSER; m_BrowserIsNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE; - char *browser = getenv(WXEXTHELP_ENVVAR_BROWSER); + wxChar *browser = wxGetenv(WXEXTHELP_ENVVAR_BROWSER); if(browser) { m_BrowserName = browser; - browser = getenv(WXEXTHELP_ENVVAR_BROWSERISNETSCAPE); - m_BrowserIsNetscape = browser && (atoi(browser) != 0); + browser = wxGetenv(WXEXTHELP_ENVVAR_BROWSERISNETSCAPE); + m_BrowserIsNetscape = browser && (wxAtoi(browser) != 0); } } -void -wxExtHelpController::SetBrowser(wxString const & browsername, bool isNetscape) +void wxExtHelpController::SetBrowser(wxString const & browsername, bool isNetscape) { m_BrowserName = browsername; m_BrowserIsNetscape = isNetscape; diff --git a/src/generic/helphtml.cpp b/src/generic/helphtml.cpp index 8aa2840806..9f106ae59c 100644 --- a/src/generic/helphtml.cpp +++ b/src/generic/helphtml.cpp @@ -195,15 +195,15 @@ wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) break; // error for(i=0; isdigit(buffer[i])||isspace(buffer[i])||buffer[i]=='-'; i++) ; // find begin of URL - url = ""; + url = wxT(""); while(buffer[i] && ! isspace(buffer[i]) && buffer[i] != WXEXTHELP_COMMENTCHAR) - url << buffer[i++]; + url << (wxChar) buffer[i++]; while(buffer[i] && buffer[i] != WXEXTHELP_COMMENTCHAR) i++; - doc = ""; + doc = wxT(""); if(buffer[i]) - doc = (buffer + i + 1); // skip the comment character + doc = wxString::FromAscii( (buffer + i + 1) ); // skip the comment character m_MapList->Append(new wxExtHelpMapEntry(id,url,doc)); m_NumOfEntries++; } @@ -312,7 +312,7 @@ wxHTMLHelpControllerBase::KeywordSearch(const wxString& k) // choices[idx] = (**i).doc.Contains((**i).doc.Before(WXEXTHELP_COMMENTCHAR)); //if(choices[idx].IsEmpty()) // didn't contain the ';' // choices[idx] = (**i).doc; - choices[idx] = ""; + choices[idx] = wxT(""); for(j=0;entry->doc.c_str()[j] && entry->doc.c_str()[j] != WXEXTHELP_COMMENTCHAR; j++) choices[idx] << entry->doc.c_str()[j]; diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 911612205e..76c1a290e8 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -47,17 +47,27 @@ #include "wx/textctrl.h" #endif -// Include wx/listctrl.h (with wxListView declaration) -// only when wxGenericListCtrl is the only -// implementation, and therefore wxListView needs -// to be derived from the 'generic' version. - +// under Win32 we always use the native version and also may use the generic +// one, however some things should be done only if we use only the generic +// version #if defined(__WIN32__) && !defined(__WXUNIVERSAL__) - #include "wx/generic/listctrl.h" -#else - #include "wx/listctrl.h" + #define HAVE_NATIVE_LISTCTRL #endif +// if we have the native control, wx/listctrl.h declares it and not this one +#ifdef HAVE_NATIVE_LISTCTRL + #include "wx/generic/listctrl.h" +#else // !HAVE_NATIVE_LISTCTRL + #include "wx/listctrl.h" + + // if we have a native version, its implementation file does all this + IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxListView, wxListCtrl) + IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxNotifyEvent) + + IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxGenericListCtrl) +#endif // HAVE_NATIVE_LISTCTRL/!HAVE_NATIVE_LISTCTRL + #if defined(__WXGTK__) #include #include "wx/gtk/win_gtk.h" @@ -421,6 +431,10 @@ private: const wxListItemAttr *attr, bool highlight); + // draw the text on the DC with the correct justification; also add an + // ellipsis if the text is too large to fit in the current width + void DrawTextFormatted(wxDC *dc, const wxString &text, int col, int x, int y, int width); + // these are only used by GetImage/SetImage above, we don't support images // with subitems at the public API level yet void SetImage( int index, int image ); @@ -462,7 +476,7 @@ public: const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, - const wxString &name = "wxlistctrlcolumntitles" ); + const wxString &name = wxT("wxlistctrlcolumntitles") ); virtual ~wxListHeaderWindow(); @@ -879,6 +893,8 @@ private: DECLARE_DYNAMIC_CLASS(wxListMainWindow) DECLARE_EVENT_TABLE() + + friend class wxGenericListCtrl; }; // ============================================================================ @@ -1736,15 +1752,69 @@ void wxListLineData::DrawInReportMode( wxDC *dc, width -= ix; } - wxDCClipper clipper(*dc, xOld, y, width, rect.height); + wxDCClipper clipper(*dc, xOld, y, width - 8, rect.height); if ( item->HasText() ) { - dc->DrawText( item->GetText(), xOld, y ); + DrawTextFormatted(dc, item->GetText(), col, xOld, y, width - 8); } } } +void wxListLineData::DrawTextFormatted(wxDC *dc, + const wxString &text, + int col, + int x, + int y, + int width) +{ + wxString drawntext, ellipsis; + wxCoord w, h, base_w; + wxListItem item; + + // determine if the string can fit inside the current width + dc->GetTextExtent(text, &w, &h); + + // if it can, draw it + if (w <= width) + { + m_owner->GetColumn(col, item); + if (item.m_format == wxLIST_FORMAT_LEFT) + dc->DrawText(text, x, y); + else if (item.m_format == wxLIST_FORMAT_RIGHT) + dc->DrawText(text, x + width - w, y); + else if (item.m_format == wxLIST_FORMAT_CENTER) + dc->DrawText(text, x + ((width - w) / 2), y); + } + else // otherwise, truncate and add an ellipsis if possible + { + // determine the base width + ellipsis = wxString(wxT("...")); + dc->GetTextExtent(ellipsis, &base_w, &h); + + // continue until we have enough space or only one character left + drawntext = text.Left(text.Length() - 1); + while (drawntext.Length() > 1) + { + dc->GetTextExtent(drawntext, &w, &h); + if (w + base_w <= width) + break; + drawntext = drawntext.Left(drawntext.Length() - 1); + } + + // if still not enough space, remove ellipsis characters + while (ellipsis.Length() > 0 && w + base_w > width) + { + ellipsis = ellipsis.Left(ellipsis.Length() - 1); + dc->GetTextExtent(ellipsis, &base_w, &h); + } + + // now draw the text + dc->DrawText(drawntext, x, y); + dc->DrawText(ellipsis, x + w, y); + } +} + bool wxListLineData::Highlight( bool on ) { wxCHECK_MSG( !m_owner->IsVirtual(), FALSE, _T("unexpected call to Highlight") ); @@ -1811,6 +1881,11 @@ wxListHeaderWindow::~wxListHeaderWindow() delete m_resizeCursor; } +#ifdef __WXUNIVERSAL__ +#include "wx/univ/renderer.h" +#include "wx/univ/theme.h" +#endif + void wxListHeaderWindow::DoDrawRect( wxDC *dc, int x, int y, int w, int h ) { #if defined(__WXGTK__) && !defined(__WXUNIVERSAL__) @@ -1824,7 +1899,11 @@ void wxListHeaderWindow::DoDrawRect( wxDC *dc, int x, int y, int w, int h ) (GdkRectangle*) NULL, m_wxwindow, (char *)"button", // const_cast x-1, y-1, w+2, h+2); -#elif defined( __WXMAC__ ) +#elif defined(__WXUNIVERSAL__) + wxTheme *theme = wxTheme::Get(); + wxRenderer *renderer = theme->GetRenderer(); + renderer->DrawBorder( *dc, wxBORDER_RAISED, wxRect(x,y,w,h), 0 ); +#elif defined(__WXMAC__) const int m_corner = 1; dc->SetBrush( *wxTRANSPARENT_BRUSH ); @@ -2448,8 +2527,16 @@ wxCoord wxListMainWindow::GetLineHeight() const if ( y < SCROLL_UNIT_Y ) y = SCROLL_UNIT_Y; - y += EXTRA_HEIGHT; + if ( m_small_image_list && m_small_image_list->GetImageCount() ) + { + int iw = 0; + int ih = 0; + m_small_image_list->GetSize(0, iw, ih); + y = wxMax(y, ih); + } + + y += EXTRA_HEIGHT; self->m_lineHeight = y + LINE_SPACING; } @@ -3078,15 +3165,7 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) m_renameTimer->Stop(); m_lastOnSame = FALSE; -#ifdef __WXGTK__ - // FIXME: wxGTK generates bad sequence of events prior to doubleclick - // ("down, up, down, double, up" while other ports - // do "down, up, double, up"). We have to have this hack - // in place till somebody fixes wxGTK... - if ( current == m_lineBeforeLastClicked ) -#else if ( current == m_lineLastClicked ) -#endif { SendNotify( current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED ); @@ -3562,6 +3641,7 @@ void wxListMainWindow::SetImageList( wxImageListType *imageList, int which ) { m_small_image_list = imageList; m_small_spacing = width + 14; + m_lineHeight = 0; // ensure that the line height will be recalc'd } } @@ -4359,7 +4439,10 @@ void wxListMainWindow::InsertItem( wxListItem &item ) int mode = 0; if ( HasFlag(wxLC_REPORT) ) + { mode = wxLC_REPORT; + ResetVisibleLinesRange(); + } else if ( HasFlag(wxLC_LIST) ) mode = wxLC_LIST; else if ( HasFlag(wxLC_ICON) ) @@ -4507,40 +4590,17 @@ void wxListMainWindow::GetVisibleLinesRange(size_t *from, size_t *to) *to = m_lineTo; } -// ------------------------------------------------------------------------------------- -// wxListItem -// ------------------------------------------------------------------------------------- - -#if !defined(__WIN32__) -IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) -#endif - // ------------------------------------------------------------------------------------- // wxGenericListCtrl // ------------------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxGenericListCtrl, wxControl) -#if !defined(__WIN32__) -IMPLEMENT_DYNAMIC_CLASS(wxListView, wxListCtrl) - -IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxNotifyEvent) -#endif - BEGIN_EVENT_TABLE(wxGenericListCtrl,wxControl) EVT_SIZE(wxGenericListCtrl::OnSize) EVT_IDLE(wxGenericListCtrl::OnIdle) END_EVENT_TABLE() -#if !defined(__WXMSW__) || defined(__WIN16__) || defined(__WXUNIVERSAL__) -/* - * wxListCtrl has to be a real class or we have problems with - * the run-time information. - */ - -IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxGenericListCtrl) -#endif - wxGenericListCtrl::wxGenericListCtrl() { m_imageListNormal = (wxImageListType *) NULL; @@ -4882,7 +4942,9 @@ void wxGenericListCtrl::SetTextColour(const wxColour& col) long wxGenericListCtrl::GetTopItem() const { - return 0; + size_t top; + m_mainWin->GetVisibleLinesRange(&top, NULL); + return (long)top; } long wxGenericListCtrl::GetNextItem( long item, int geom, int state ) const diff --git a/src/generic/mdig.cpp b/src/generic/mdig.cpp index 69445c6b27..ea08482ba2 100644 --- a/src/generic/mdig.cpp +++ b/src/generic/mdig.cpp @@ -31,11 +31,12 @@ #ifndef WX_PRECOMP #include "wx/panel.h" #include "wx/menu.h" + #include "wx/intl.h" #endif //WX_PRECOMP #include "wx/generic/mdig.h" -enum MDI_MENU_ID +enum MDI_MENU_ID { wxWINDOWCLOSE = 4001, wxWINDOWCLOSEALL, @@ -53,9 +54,9 @@ BEGIN_EVENT_TABLE(wxGenericMDIParentFrame, wxFrame) EVT_MENU (-1, wxGenericMDIParentFrame::DoHandleMenu) END_EVENT_TABLE() -wxGenericMDIParentFrame::wxGenericMDIParentFrame() -{ - Init(); +wxGenericMDIParentFrame::wxGenericMDIParentFrame() +{ + Init(); } wxGenericMDIParentFrame::wxGenericMDIParentFrame(wxWindow *parent, @@ -67,22 +68,22 @@ wxGenericMDIParentFrame::wxGenericMDIParentFrame(wxWindow *parent, const wxString& name) { Init(); - + (void)Create(parent, id, title, pos, size, style, name); } wxGenericMDIParentFrame::~wxGenericMDIParentFrame() -{ +{ // Make sure the client window is destructed before the menu bars are! wxDELETE(m_pClientWindow); -#if wxUSE_MENUS +#if wxUSE_MENUS if (m_pMyMenuBar) { delete m_pMyMenuBar; m_pMyMenuBar = (wxMenuBar *) NULL; } - + RemoveWindowMenu(GetMenuBar()); if (m_pWindowMenu) @@ -108,11 +109,11 @@ bool wxGenericMDIParentFrame::Create(wxWindow *parent, #if wxUSE_MENUS m_pWindowMenu = new wxMenu; - m_pWindowMenu->Append(wxWINDOWCLOSE, _T("Cl&ose")); - m_pWindowMenu->Append(wxWINDOWCLOSEALL, _T("Close Al&l")); + m_pWindowMenu->Append(wxWINDOWCLOSE, _("Cl&ose")); + m_pWindowMenu->Append(wxWINDOWCLOSEALL, _("Close All")); m_pWindowMenu->AppendSeparator(); - m_pWindowMenu->Append(wxWINDOWNEXT, _T("&Next")); - m_pWindowMenu->Append(wxWINDOWPREV, _T("&Previouse")); + m_pWindowMenu->Append(wxWINDOWNEXT, _("&Next")); + m_pWindowMenu->Append(wxWINDOWPREV, _("&Previous")); #endif // wxUSE_MENUS } @@ -162,7 +163,7 @@ void wxGenericMDIParentFrame::SetChildMenuBar(wxGenericMDIChildFrame *pChild) { // No Child, set Our menu bar back. SetMenuBar(m_pMyMenuBar); - + // Make sure we know our menu bar is in use m_pMyMenuBar = (wxMenuBar*) NULL; } @@ -195,11 +196,11 @@ bool wxGenericMDIParentFrame::ProcessEvent(wxEvent& event) // Let the active child (if any) process the event first. bool res = FALSE; - if (m_pActiveChild && event.IsKindOf(CLASSINFO(wxCommandEvent)) + if (m_pActiveChild && event.IsKindOf(CLASSINFO(wxCommandEvent)) #if 0 /* This is sure to not give problems... */ && (event.GetEventType() == wxEVT_COMMAND_MENU_SELECTED || - event.GetEventType() == wxEVT_UPDATE_UI )) + event.GetEventType() == wxEVT_UPDATE_UI ) #else /* This was tested on wxMSW and worked... */ && event.GetEventObject() != m_pClientWindow @@ -208,8 +209,9 @@ bool wxGenericMDIParentFrame::ProcessEvent(wxEvent& event) event.GetEventType() == wxEVT_KILL_FOCUS || event.GetEventType() == wxEVT_CHILD_FOCUS || event.GetEventType() == wxEVT_COMMAND_SET_FOCUS || - event.GetEventType() == wxEVT_COMMAND_KILL_FOCUS )) + event.GetEventType() == wxEVT_COMMAND_KILL_FOCUS ) #endif + ) { res = m_pActiveChild->GetEventHandler()->ProcessEvent(event); } @@ -290,7 +292,7 @@ void wxGenericMDIParentFrame::RemoveWindowMenu(wxMenuBar *pMenuBar) if (pMenuBar && m_pWindowMenu) { // Remove old window menu - int pos = pMenuBar->FindMenu(_T("&Window")); + int pos = pMenuBar->FindMenu(_("&Window")); if (pos != wxNOT_FOUND) { wxASSERT(m_pWindowMenu == pMenuBar->GetMenu(pos)); // DBG:: We're going to delete the wrong menu!!! @@ -302,15 +304,15 @@ void wxGenericMDIParentFrame::RemoveWindowMenu(wxMenuBar *pMenuBar) void wxGenericMDIParentFrame::AddWindowMenu(wxMenuBar *pMenuBar) { if (pMenuBar && m_pWindowMenu) - { - int pos = pMenuBar->FindMenu(_T("Help")); + { + int pos = pMenuBar->FindMenu(_("Help")); if (pos == wxNOT_FOUND) { - pMenuBar->Append(m_pWindowMenu, _T("&Window")); + pMenuBar->Append(m_pWindowMenu, _("&Window")); } else { - pMenuBar->Insert(pos, m_pWindowMenu, _T("&Window")); + pMenuBar->Insert(pos, m_pWindowMenu, _("&Window")); } } } @@ -319,7 +321,7 @@ void wxGenericMDIParentFrame::DoHandleMenu(wxCommandEvent &event) { switch (event.GetId()) { - case wxWINDOWCLOSE: + case wxWINDOWCLOSE: if (m_pActiveChild) { m_pActiveChild->Close(); @@ -327,7 +329,7 @@ void wxGenericMDIParentFrame::DoHandleMenu(wxCommandEvent &event) break; case wxWINDOWCLOSEALL: { -#if 0 // code is only needed if next #if is set to 0! +#if 0 // code is only needed if next #if is set to 0! wxGenericMDIChildFrame *pFirstActiveChild = m_pActiveChild; #endif while (m_pActiveChild) @@ -340,7 +342,7 @@ void wxGenericMDIParentFrame::DoHandleMenu(wxCommandEvent &event) { #if 1 // What's best? Delayed deleting or immediate deleting? delete m_pActiveChild; -#else +#else ActivateNext(); if (pFirstActiveChild == m_pActiveChild) @@ -425,7 +427,7 @@ wxGenericMDIChildFrame::~wxGenericMDIChildFrame() break; } } - + if (bActive) { // Set the new selection to the a remaining page @@ -453,10 +455,10 @@ bool wxGenericMDIChildFrame::Create( wxGenericMDIParentFrame *parent, { wxGenericMDIClientWindow* pClientWindow = parent->GetClientWindow(); - wxASSERT_MSG((pClientWindow != (wxWindow*) NULL), "Missing MDI client window."); + wxASSERT_MSG((pClientWindow != (wxWindow*) NULL), wxT("Missing MDI client window.") ); wxPanel::Create(pClientWindow, id, wxDefaultPosition, size, style, name); - + SetMDIParentFrame(parent); // This is the currently active child @@ -471,7 +473,7 @@ bool wxGenericMDIChildFrame::Create( wxGenericMDIParentFrame *parent, return TRUE; } -#if wxUSE_MENUS +#if wxUSE_MENUS void wxGenericMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) { wxMenuBar *pOldMenuBar = m_pMenuBar; @@ -480,7 +482,7 @@ void wxGenericMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) if (m_pMenuBar) { wxGenericMDIParentFrame *pParentFrame = GetMDIParentFrame(); - + if (pParentFrame != NULL) { m_pMenuBar->SetParent(pParentFrame); @@ -500,20 +502,20 @@ wxMenuBar *wxGenericMDIChildFrame::GetMenuBar() const { return m_pMenuBar; } -#endif // wxUSE_MENUS +#endif // wxUSE_MENUS void wxGenericMDIChildFrame::SetTitle(const wxString& title) { m_Title = title; wxGenericMDIParentFrame *pParentFrame = GetMDIParentFrame(); - + if (pParentFrame != NULL) { wxGenericMDIClientWindow * pClientWindow = pParentFrame->GetClientWindow(); - + if (pClientWindow != NULL) - { + { int pos; for (pos = 0; pos < pClientWindow->GetPageCount(); pos++) { @@ -522,12 +524,12 @@ void wxGenericMDIChildFrame::SetTitle(const wxString& title) pClientWindow->SetPageText(pos, m_Title); break; } - } + } } } } -wxString wxGenericMDIChildFrame::GetTitle() +wxString wxGenericMDIChildFrame::GetTitle() const { return m_Title; } @@ -560,7 +562,7 @@ void wxGenericMDIChildFrame::OnMenuHighlight(wxMenuEvent& event) #if wxUSE_STATUSBAR if ( m_pMDIParentFrame) { - // we don't have any help text for this item, + // we don't have any help text for this item, // but may be the MDI frame does? m_pMDIParentFrame->OnMenuHighlight(event); } @@ -633,14 +635,14 @@ void wxGenericMDIChildFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) Destroy(); } -void wxGenericMDIChildFrame::SetMDIParentFrame(wxGenericMDIParentFrame* parentFrame) -{ - m_pMDIParentFrame = parentFrame; +void wxGenericMDIChildFrame::SetMDIParentFrame(wxGenericMDIParentFrame* parentFrame) +{ + m_pMDIParentFrame = parentFrame; } -wxGenericMDIParentFrame* wxGenericMDIChildFrame::GetMDIParentFrame() const -{ - return m_pMDIParentFrame; +wxGenericMDIParentFrame* wxGenericMDIChildFrame::GetMDIParentFrame() const +{ + return m_pMDIParentFrame; } void wxGenericMDIChildFrame::Init() @@ -648,11 +650,11 @@ void wxGenericMDIChildFrame::Init() m_pMDIParentFrame = (wxGenericMDIParentFrame *) NULL; #if wxUSE_MENUS m_pMenuBar = (wxMenuBar *) NULL; -#endif // wxUSE_MENUS +#endif // wxUSE_MENUS } void wxGenericMDIChildFrame::DoMoveWindow(int x, int y, int width, int height) -{ +{ m_MDIRect = wxRect(x, y, width, height); } @@ -714,7 +716,7 @@ int wxGenericMDIClientWindow::SetSelection(int nPage) { int oldSelection = wxNotebook::SetSelection(nPage); -#if !defined(__WXMSW__) // No need to do this for wxMSW as wxNotebook::SetSelection() +#if !defined(__WXMSW__) // No need to do this for wxMSW as wxNotebook::SetSelection() // will already cause this to be done! // Handle the page change. PageChanged(oldSelection, nPage); @@ -793,6 +795,16 @@ void wxGenericMDIClientWindow::OnSize(wxSizeEvent& event) #if wxUSE_GENERIC_MDI_AS_NATIVE +wxMDIChildFrame * wxMDIParentFrame::GetActiveChild() const + { + wxGenericMDIChildFrame *pGFrame = wxGenericMDIParentFrame::GetActiveChild(); + wxMDIChildFrame *pFrame = wxDynamicCast(pGFrame, wxMDIChildFrame); + + wxASSERT_MSG(!(pFrame == NULL && pGFrame != NULL), wxT("Active frame is class not derived from wxMDIChildFrame!")); + + return pFrame; + } + IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxGenericMDIParentFrame) IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxGenericMDIChildFrame) IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxGenericMDIClientWindow) diff --git a/src/generic/msgdlgg.cpp b/src/generic/msgdlgg.cpp index 2b1b8b33db..467ce46b18 100644 --- a/src/generic/msgdlgg.cpp +++ b/src/generic/msgdlgg.cpp @@ -40,6 +40,7 @@ #include "wx/generic/msgdlgg.h" #include "wx/artprov.h" +#include "wx/settings.h" #if wxUSE_STATLINE #include "wx/statline.h" @@ -66,6 +67,8 @@ wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent, { m_dialogStyle = style; + bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA); + wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer *icon_text = new wxBoxSizer( wxHORIZONTAL ); @@ -97,13 +100,16 @@ wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent, break; } wxStaticBitmap *icon = new wxStaticBitmap(this, -1, bitmap); - icon_text->Add( icon, 0, wxCENTER ); + if (is_pda) + topsizer->Add( icon, 0, wxTOP|wxLEFT|wxRIGHT | wxALIGN_LEFT, 10 ); + else + icon_text->Add( icon, 0, wxCENTER ); } // 2) text icon_text->Add( CreateTextSizer( message ), 0, wxCENTER | wxLEFT, 10 ); - topsizer->Add( icon_text, 0, wxCENTER | wxLEFT|wxRIGHT|wxTOP, 10 ); + topsizer->Add( icon_text, 1, wxCENTER | wxLEFT|wxRIGHT|wxTOP, 10 ); #if wxUSE_STATLINE // 3) static line @@ -140,8 +146,8 @@ void wxGenericMessageDialog::OnNo(wxCommandEvent& WXUNUSED(event)) void wxGenericMessageDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) { - /* Allow cancellation via ESC/Close button except if - only YES and NO are specified. */ + // Allow cancellation via ESC/Close button except if + // only YES and NO are specified. if ( (m_dialogStyle & wxYES_NO) != wxYES_NO || (m_dialogStyle & wxCANCEL) ) { EndModal( wxID_CANCEL ); diff --git a/src/generic/panelg.cpp b/src/generic/panelg.cpp index 0c7b85fb42..d7f69ce937 100644 --- a/src/generic/panelg.cpp +++ b/src/generic/panelg.cpp @@ -107,22 +107,20 @@ void wxPanel::OnSize(wxSizeEvent& event) #if wxUSE_CONSTRAINTS if (GetAutoLayout()) Layout(); -#endif // wxUSE_CONSTRAINTS - - // - // Need to properly move child windows under OS/2 - // #if defined(__WXPM__) else { + // Need to properly move child windows under OS/2 + PSWP pWinSwp = GetSwp(); if (pWinSwp->cx == 0 && pWinSwp->cy == 0 && pWinSwp->fl == 0) - // + { // Uninitialized - // + ::WinQueryWindowPos(GetHWND(), pWinSwp); - else + } + else { SWP vSwp; int nYDiff; @@ -135,6 +133,8 @@ void wxPanel::OnSize(wxSizeEvent& event) } } #endif +#endif // wxUSE_CONSTRAINTS + event.Skip(); } diff --git a/src/generic/prntdlgg.cpp b/src/generic/prntdlgg.cpp index 6f4584b82a..6d270a3bdf 100644 --- a/src/generic/prntdlgg.cpp +++ b/src/generic/prntdlgg.cpp @@ -182,16 +182,16 @@ void wxGenericPrintDialog::Init(wxWindow * WXUNUSED(parent)) if (m_printDialogData.GetFromPage() != 0) { bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("From:") ), 0, wxCENTER|wxALL, 5 ); - m_fromText = new wxTextCtrl(this, wxPRINTID_FROM, "", wxDefaultPosition, wxSize(40, -1)); + m_fromText = new wxTextCtrl(this, wxPRINTID_FROM, wxT(""), wxDefaultPosition, wxSize(40, -1)); bottomsizer->Add( m_fromText, 1, wxCENTER|wxRIGHT, 10 ); bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("To:") ), 0, wxCENTER|wxALL, 5); - m_toText = new wxTextCtrl(this, wxPRINTID_TO, "", wxDefaultPosition, wxSize(40, -1)); + m_toText = new wxTextCtrl(this, wxPRINTID_TO, wxT(""), wxDefaultPosition, wxSize(40, -1)); bottomsizer->Add( m_toText, 1, wxCENTER|wxRIGHT, 10 ); } bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("Copies:") ), 0, wxCENTER|wxALL, 5 ); - m_noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, "", wxPoint(252, 130), wxSize(40, -1)); + m_noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, wxT(""), wxPoint(252, 130), wxSize(40, -1)); bottomsizer->Add( m_noCopiesText, 1, wxCENTER|wxRIGHT, 10 ); mainsizer->Add( bottomsizer, 0, wxTOP|wxLEFT|wxRIGHT, 12 ); @@ -443,11 +443,11 @@ void wxGenericPrintSetupDialog::Init(wxPrintData* data) (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer command:"), wxPoint(340, 30)); - m_printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, "", wxPoint(360, 55), wxSize(150, -1)); + m_printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, wxT(""), wxPoint(360, 55), wxSize(150, -1)); (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer options:"), wxPoint(340, 110)); - m_printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, "", wxPoint(360, 135), wxSize(150, -1)); + m_printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, wxT(""), wxPoint(360, 135), wxSize(150, -1)); wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(130, 200), wxSize(80, -1)); (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(320, 200), wxSize(80, -1)); @@ -504,7 +504,7 @@ bool wxGenericPrintSetupDialog::TransferDataFromWindow() if (m_paperTypeChoice) { wxString val(m_paperTypeChoice->GetStringSelection()); - if (!val.IsNull() && val != "") + if (!val.IsNull() && val != wxT("")) m_printData.SetPaperId(wxThePrintPaperDatabase->ConvertNameToId(val)); } @@ -634,8 +634,8 @@ wxDialog(parent, -1, _("Page Setup"), wxPoint(0, 0), wxSize(600, 600), wxDIALOG_ table->Add( column1, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer *column2 = new wxBoxSizer( wxVERTICAL ); - m_marginLeftText = new wxTextCtrl(this, wxPRINTID_LEFTMARGIN, "", wxDefaultPosition, wxSize(textWidth, -1)); - m_marginTopText = new wxTextCtrl(this, wxPRINTID_TOPMARGIN, "", wxDefaultPosition, wxSize(textWidth, -1)); + m_marginLeftText = new wxTextCtrl(this, wxPRINTID_LEFTMARGIN, wxT(""), wxDefaultPosition, wxSize(textWidth, -1)); + m_marginTopText = new wxTextCtrl(this, wxPRINTID_TOPMARGIN, wxT(""), wxDefaultPosition, wxSize(textWidth, -1)); column2->Add( m_marginLeftText, 1, wxALL, 5 ); column2->Add( m_marginTopText, 1, wxALL, 5 ); table->Add( column2, 0, wxRIGHT|wxTOP|wxBOTTOM | wxEXPAND, 5 ); @@ -646,8 +646,8 @@ wxDialog(parent, -1, _("Page Setup"), wxPoint(0, 0), wxSize(600, 600), wxDIALOG_ table->Add( column3, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer *column4 = new wxBoxSizer( wxVERTICAL ); - m_marginRightText = new wxTextCtrl(this, wxPRINTID_RIGHTMARGIN, "", wxDefaultPosition, wxSize(textWidth, -1)); - m_marginBottomText = new wxTextCtrl(this, wxPRINTID_BOTTOMMARGIN, "", wxDefaultPosition, wxSize(textWidth, -1)); + m_marginRightText = new wxTextCtrl(this, wxPRINTID_RIGHTMARGIN, wxT(""), wxDefaultPosition, wxSize(textWidth, -1)); + m_marginBottomText = new wxTextCtrl(this, wxPRINTID_BOTTOMMARGIN, wxT(""), wxDefaultPosition, wxSize(textWidth, -1)); column4->Add( m_marginRightText, 1, wxALL, 5 ); column4->Add( m_marginBottomText, 1, wxALL, 5 ); table->Add( column4, 0, wxRIGHT|wxTOP|wxBOTTOM | wxEXPAND, 5 ); diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index 169a7ea949..a7c9e246b0 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -322,7 +322,7 @@ wxProgressDialog::Update(int value, const wxString& newmsg) wxASSERT_MSG( value <= m_maximum, wxT("invalid progress value") ); - if ( m_gauge ) + if ( m_gauge && value < m_maximum ) { m_gauge->SetValue(value + 1); } @@ -337,7 +337,8 @@ wxProgressDialog::Update(int value, const wxString& newmsg) if ( (m_elapsed || m_remaining || m_estimated) && (value != 0) ) { unsigned long elapsed = wxGetCurrentTime() - m_timeStart; - unsigned long estimated = elapsed * m_maximum / value; + unsigned long estimated = (unsigned long)( ( (double) elapsed * m_maximum ) + / ((double)value) ) ; unsigned long remaining = estimated - elapsed; SetTimeLabel(elapsed, m_elapsed); @@ -406,6 +407,17 @@ void wxProgressDialog::Resume() m_btnAbort->Enable(); } +bool wxProgressDialog::Show( bool show ) +{ + // reenable other windows before hiding this one because otherwise + // Windows wouldn't give the focus back to the window which had + // been previously focused because it would still be disabled + if(!show) + ReenableOtherWindows(); + + return wxDialog::Show(show); +} + // ---------------------------------------------------------------------------- // event handlers // ---------------------------------------------------------------------------- diff --git a/src/generic/propform.cpp b/src/generic/propform.cpp index bfa779c272..b8469214eb 100644 --- a/src/generic/propform.cpp +++ b/src/generic/propform.cpp @@ -518,9 +518,9 @@ bool wxIntegerFormValidator::OnCheckValue(wxProperty *property, wxPropertyFormVi if (val < m_integerMin || val > m_integerMax) { - char buf[200]; - sprintf(buf, "Value must be an integer between %ld and %ld!", m_integerMin, m_integerMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxChar buf[200]; + wxSprintf(buf, wxT("Value must be an integer between %ld and %ld!"), m_integerMin, m_integerMax); + wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } return TRUE; @@ -645,10 +645,10 @@ bool wxStringFormValidator::OnCheckValue(wxProperty *property, wxPropertyFormVie wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; if (!m_strings->Member(text->GetValue())) { - wxString s("Value "); - s += text->GetValue(); - s += " is not valid."; - wxMessageBox(s, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxString str( wxT("Value ") ); + str += text->GetValue(); + str += wxT(" is not valid."); + wxMessageBox(str, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } } @@ -719,7 +719,7 @@ bool wxStringFormValidator::OnDisplayValue(wxProperty *property, wxPropertyFormV wxNode *node = m_strings->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); lbox->Append(s); node = node->Next(); } @@ -736,7 +736,6 @@ bool wxStringFormValidator::OnDisplayValue(wxProperty *property, wxPropertyFormV else if (m_propertyWindow->IsKindOf(CLASSINFO(wxChoice))) { wxChoice *choice = (wxChoice *)m_propertyWindow; -#ifndef __XVIEW__ if (choice->GetCount() == 0 && m_strings) { // Try to initialize the choice item from 'strings' @@ -744,12 +743,11 @@ bool wxStringFormValidator::OnDisplayValue(wxProperty *property, wxPropertyFormV wxNode *node = m_strings->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); choice->Append(s); node = node->Next(); } } -#endif choice->SetStringSelection(property->GetValue().StringValue()); } else diff --git a/src/generic/proplist.cpp b/src/generic/proplist.cpp index a9e3b83c39..cd6af4d9c1 100644 --- a/src/generic/proplist.cpp +++ b/src/generic/proplist.cpp @@ -149,7 +149,7 @@ bool wxPropertyListView::UpdatePropertyList(bool clearEditArea) if (clearEditArea) { m_valueList->Clear(); - m_valueText->SetValue(_T("")); + m_valueText->SetValue( wxT("") ); } wxNode *node = m_propertySheet->GetProperties().First(); @@ -223,7 +223,7 @@ wxString wxPropertyListView::MakeNameValueString(wxString name, wxString value) if (GetFlags() & wxPROP_SHOWVALUES) { // Want to pad with spaces - theString.Append(' ', padWith); + theString.Append( wxT(' '), padWith); theString += value; } @@ -241,7 +241,7 @@ bool wxPropertyListView::ShowProperty(wxProperty *property, bool select) } m_valueList->Clear(); - m_valueText->SetValue(_T("")); + m_valueText->SetValue( wxT("") ); if (property) { @@ -894,9 +894,9 @@ bool wxRealListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropert if (val < m_realMin || val > m_realMax) { - char buf[200]; - sprintf(buf, "Value must be a real number between %.2f and %.2f!", m_realMin, m_realMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxChar buf[200]; + wxSprintf(buf, wxT("Value must be a real number between %.2f and %.2f!"), m_realMin, m_realMax); + wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } return TRUE; @@ -1129,10 +1129,10 @@ bool wxStringListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPrope if (!m_strings->Member(value.GetData())) { - wxString s("Value "); - s += value.GetData(); - s += " is not valid."; - wxMessageBox(s.GetData(), "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxString str( wxT("Value ") ); + str += value.GetData(); + str += wxT(" is not valid."); + wxMessageBox( str.GetData(), wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } return TRUE; @@ -1563,7 +1563,7 @@ class wxPropertyStringListEditorDialog: public wxDialog public: wxPropertyStringListEditorDialog(wxWindow *parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = "stringEditorDialogBox"): + long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("stringEditorDialogBox")): wxDialog(parent, -1, title, pos, size, windowStyle, name) { m_stringList = NULL; @@ -1613,7 +1613,7 @@ class wxPropertyStringListEditorText: public wxTextCtrl public: wxPropertyStringListEditorText(wxWindow *parent, wxWindowID id, const wxString& val, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long windowStyle = 0, const wxString& name = "text"): + long windowStyle = 0, const wxString& name = wxT("text")): wxTextCtrl(parent, id, val, pos, size, windowStyle, wxDefaultValidator, name) { } @@ -1642,14 +1642,14 @@ bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList wxPoint(-1, -1), wxSize(-1, -1), 0, NULL, wxLB_SINGLE); dialog->m_stringText = new wxPropertyStringListEditorText(dialog, - wxID_PROP_SL_TEXT, "", wxPoint(5, 240), + wxID_PROP_SL_TEXT, wxT(""), wxPoint(5, 240), wxSize(300, -1), wxPROCESS_ENTER); dialog->m_stringText->Enable(FALSE); - wxButton *addButton = new wxButton(dialog, wxID_PROP_SL_ADD, "Add", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - wxButton *deleteButton = new wxButton(dialog, wxID_PROP_SL_DELETE, "Delete", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - wxButton *cancelButton = new wxButton(dialog, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - wxButton *okButton = new wxButton(dialog, wxID_OK, "OK", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); + wxButton *addButton = new wxButton(dialog, wxID_PROP_SL_ADD, wxT("Add"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); + wxButton *deleteButton = new wxButton(dialog, wxID_PROP_SL_DELETE, wxT("Delete"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); + wxButton *cancelButton = new wxButton(dialog, wxID_CANCEL, wxT("Cancel"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); + wxButton *okButton = new wxButton(dialog, wxID_OK, wxT("OK"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); #ifndef __WXGTK__ okButton->SetDefault(); @@ -1701,9 +1701,9 @@ bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList wxNode *node = stringList->First(); while (node) { - char *str = (char *)node->Data(); + wxChar *str = (wxChar *)node->Data(); // Save node as client data for each listbox item - dialog->m_listBox->Append(str, (char *)node); + dialog->m_listBox->Append(str, (wxChar *)node); node = node->Next(); } @@ -1807,21 +1807,21 @@ void wxPropertyStringListEditorDialog::SaveCurrentSelection() wxString txt(m_stringText->GetValue()); if (node->Data()) - delete[] (char *)node->Data(); - node->SetData((wxObject *)copystring(txt)); + delete[] (wxChar *)node->Data(); + node->SetData((wxObject *)wxStrdup(txt)); - m_listBox->SetString(m_currentSelection, (char *)node->Data()); + m_listBox->SetString(m_currentSelection, (wxChar *)node->Data()); } void wxPropertyStringListEditorDialog::ShowCurrentSelection() { if (m_currentSelection == -1) { - m_stringText->SetValue(_T("")); + m_stringText->SetValue(wxT("")); return; } wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(m_currentSelection); - char *txt = (char *)node->Data(); + wxChar *txt = (wxChar *)node->Data(); m_stringText->SetValue(txt); m_stringText->Enable(TRUE); } diff --git a/src/generic/sashwin.cpp b/src/generic/sashwin.cpp index 90bc832b39..6f0fc70c24 100644 --- a/src/generic/sashwin.cpp +++ b/src/generic/sashwin.cpp @@ -46,6 +46,10 @@ BEGIN_EVENT_TABLE(wxSashWindow, wxWindow) EVT_PAINT(wxSashWindow::OnPaint) EVT_SIZE(wxSashWindow::OnSize) EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent) +#ifdef __WXMSW__ + EVT_SET_CURSOR(wxSashWindow::OnSetCursor) +#endif // wxMSW + END_EVENT_TABLE() bool wxSashWindow::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, @@ -77,6 +81,7 @@ void wxSashWindow::Init() m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE); m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS); m_mouseCaptured = FALSE; + m_currentCursor = NULL; // Eventually, we'll respond to colour change messages InitColours(); @@ -86,9 +91,7 @@ void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); - // if ( m_borderSize > 0 ) DrawBorders(dc); - DrawSashes(dc); } @@ -99,15 +102,6 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) wxSashEdgePosition sashHit = SashHitTest(x, y); - // reset the cursor -#if defined(__WXMOTIF__) || defined(__WXGTK__) - // Not necessary and in fact inhibits proper cursor setting (JACS 8/2000) - //SetCursor(* wxSTANDARD_CURSOR); -#endif -#ifdef __WXMSW__ - SetCursor(wxNullCursor); -#endif - if (event.LeftDown()) { CaptureMouse(); @@ -139,11 +133,19 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) if ( (sashHit == wxSASH_LEFT) || (sashHit == wxSASH_RIGHT) ) { - SetCursor(*m_sashCursorWE); + if (m_currentCursor != m_sashCursorWE) + { + SetCursor(*m_sashCursorWE); + } + m_currentCursor = m_sashCursorWE; } else { - SetCursor(*m_sashCursorNS); + if (m_currentCursor != m_sashCursorNS) + { + SetCursor(*m_sashCursorNS); + } + m_currentCursor = m_sashCursorNS; } } } @@ -296,16 +298,25 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) { if ( (sashHit == wxSASH_LEFT) || (sashHit == wxSASH_RIGHT) ) { - SetCursor(*m_sashCursorWE); + if (m_currentCursor != m_sashCursorWE) + { + SetCursor(*m_sashCursorWE); + } + m_currentCursor = m_sashCursorWE; } else { - SetCursor(*m_sashCursorNS); + if (m_currentCursor != m_sashCursorNS) + { + SetCursor(*m_sashCursorNS); + } + m_currentCursor = m_sashCursorNS; } } else { SetCursor(wxNullCursor); + m_currentCursor = NULL; } } else if ( event.Dragging() && @@ -314,11 +325,19 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) { if ( (m_draggingEdge == wxSASH_LEFT) || (m_draggingEdge == wxSASH_RIGHT) ) { - SetCursor(*m_sashCursorWE); + if (m_currentCursor != m_sashCursorWE) + { + SetCursor(*m_sashCursorWE); + } + m_currentCursor = m_sashCursorWE; } else { - SetCursor(*m_sashCursorNS); + if (m_currentCursor != m_sashCursorNS) + { + SetCursor(*m_sashCursorNS); + } + m_currentCursor = m_sashCursorNS; } if (m_dragMode == wxSASH_DRAG_LEFT_DOWN) @@ -683,4 +702,23 @@ void wxSashWindow::SetSashVisible(wxSashEdgePosition edge, bool sash) m_sashes[edge].m_margin = 0; } +#ifdef __WXMSW__ + +// this is currently called (and needed) under MSW only... +void wxSashWindow::OnSetCursor(wxSetCursorEvent& event) +{ + // if we don't do it, the resizing cursor might be set for child window: + // and like this we explicitly say that our cursor should not be used for + // children windows which overlap us + + if ( SashHitTest(event.GetX(), event.GetY()) != wxSASH_NONE) + { + // default processing is ok + event.Skip(); + } + //else: do nothing, in particular, don't call Skip() +} + +#endif // wxMSW + #endif // wxUSE_SASH diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index ae4107a1fa..d1863b286a 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -340,16 +340,36 @@ void wxScrollHelper::SetScrollbars(int pixelsPerUnitX, m_xScrollPosition = xPos; m_yScrollPosition = yPos; - m_targetWindow->SetVirtualSizeHints( noUnitsX * pixelsPerUnitX, noUnitsY * pixelsPerUnitY ); + // For better backward compatibility we set persisting limits + // here not just the size. It makes SetScrollbars 'sticky' + // emulating the old non-autoscroll behaviour. - AdjustScrollbars(); + wxSize sz = m_targetWindow->GetClientSize(); +#if 1 + int x = wxMax(noUnitsX * pixelsPerUnitX, sz.x); + int y = wxMax(noUnitsY * pixelsPerUnitY, sz.y); +#else + int x = noUnitsX * pixelsPerUnitX; + int y = noUnitsY * pixelsPerUnitY; +#endif + m_targetWindow->SetVirtualSizeHints( x, y ); + + // The above should arguably be deprecated, this however we still need. + + m_targetWindow->SetVirtualSize( x, y ); if (do_refresh && !noRefresh) m_targetWindow->Refresh(TRUE, GetRect()); + // TODO: check if we can use AdjustScrollbars always. +#ifdef __WXUNIVERSAL__ + AdjustScrollbars(); +#else + // This is also done by AdjustScrollbars, above #ifdef __WXMAC__ m_targetWindow->MacUpdateImmediately() ; #endif +#endif } // ---------------------------------------------------------------------------- @@ -867,17 +887,19 @@ void wxScrollHelper::DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) co // Default OnSize resets scrollbars, if any void wxScrollHelper::HandleOnSize(wxSizeEvent& WXUNUSED(event)) { - if ( m_targetWindow != m_win ) - m_targetWindow->SetVirtualSize( m_targetWindow->GetClientSize() ); + if( m_win->GetAutoLayout() ) + { + if ( m_targetWindow != m_win ) + m_targetWindow->FitInside(); - m_win->SetVirtualSize( m_win->GetClientSize() ); - - AdjustScrollbars(); + m_win->FitInside(); #if wxUSE_CONSTRAINTS - if (m_win->GetAutoLayout()) m_win->Layout(); #endif + } + else + AdjustScrollbars(); } // This calls OnDraw, having adjusted the origin according to the current @@ -1171,6 +1193,17 @@ bool wxGenericScrolledWindow::Layout() return wxPanel::Layout(); } +void wxGenericScrolledWindow::DoSetVirtualSize(int x, int y) +{ + wxPanel::DoSetVirtualSize( x, y ); + AdjustScrollbars(); + +#if wxUSE_CONSTRAINTS + if (GetAutoLayout()) + Layout(); +#endif +} + void wxGenericScrolledWindow::OnPaint(wxPaintEvent& event) { // the user code didn't really draw the window if we got here, so set this diff --git a/src/generic/splash.cpp b/src/generic/splash.cpp index fa641bdf1e..7f3af1d427 100644 --- a/src/generic/splash.cpp +++ b/src/generic/splash.cpp @@ -70,7 +70,7 @@ wxSplashScreen::wxSplashScreen(const wxBitmap& bitmap, long splashStyle, int mil Show(TRUE); m_window->SetFocus(); -#ifdef __WXMSW__ +#if defined(__WXMSW__) || defined(__WXMAC__) Update(); // Without this, you see a blank screen for an instant #else wxYieldIfNeeded(); // Should eliminate this diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index c79934a3ea..c5d099a54c 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -21,19 +21,22 @@ #endif #ifndef WX_PRECOMP + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/log.h" + + #include "wx/dcscreen.h" + #include "wx/window.h" #include "wx/dialog.h" #include "wx/frame.h" + + #include "wx/settings.h" #endif -#include - -#include "wx/string.h" #include "wx/splitter.h" -#include "wx/dcscreen.h" -#include "wx/settings.h" -#include "wx/log.h" -#include "wx/utils.h" + +#include DEFINE_EVENT_TYPE(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING) @@ -107,8 +110,8 @@ void wxSplitterWindow::Init() m_oldY = 0; m_firstX = 0; m_firstY = 0; - m_sashSize = 7; - m_borderSize = 2; + m_sashSize = 3; + m_borderSize = 0; m_sashPosition = m_requestedSashPosition = 0; m_minimumPaneSize = 0; m_sashCursorWE = wxCursor(wxCURSOR_SIZEWE); @@ -121,9 +124,6 @@ void wxSplitterWindow::Init() m_facePen = (wxPen *) NULL; m_hilightPen = (wxPen *) NULL; - m_borderSize = 0; - m_sashSize = 3; - InitColours(); m_needUpdating = FALSE; @@ -169,7 +169,7 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) y = (int)event.GetY(); // reset the cursor -#if defined( __WXMOTIF__ ) || defined( __WXMAC__ ) +#if defined( __WXMOTIF__ ) || defined( __WXGTK__ ) || defined( __WXMAC__ ) SetCursor(* wxSTANDARD_CURSOR); #elif defined(__WXMSW__) SetCursor(wxCursor()); @@ -214,6 +214,12 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) m_dragMode = wxSPLIT_DRAG_NONE; ReleaseMouse(); + // exit if unsplit after doubleclick + if ( !IsSplit() ) + { + return; + } + // Erase old tracker if ( !isLive ) { @@ -537,7 +543,7 @@ void wxSplitterWindow::DrawSash(wxDC& dc) dc.DrawLine(m_sashPosition+1, h-m_borderSize-1, m_sashPosition+m_sashSize-1, h-m_borderSize-1); } } - else + else // wxSPLIT_HORIZONTAL { dc.SetPen(*m_facePen); if (HasFlag( wxSP_SASH_AQUA )) @@ -577,12 +583,12 @@ void wxSplitterWindow::DrawSash(wxDC& dc) } } } - else + else // !wxSP_3DSASH { + dc.SetPen(*wxTRANSPARENT_PEN); + dc.SetBrush(*m_faceBrush); if ( m_splitMode == wxSPLIT_VERTICAL ) { - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxBLACK_BRUSH); int h1 = h-1; int y1 = 0; if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER ) @@ -593,10 +599,8 @@ void wxSplitterWindow::DrawSash(wxDC& dc) } dc.DrawRectangle(m_sashPosition, y1, m_sashSize, h1); } - else + else // wxSPLIT_HORIZONTAL { - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxBLACK_BRUSH); int w1 = w-1; int x1 = 0; if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER ) @@ -607,7 +611,6 @@ void wxSplitterWindow::DrawSash(wxDC& dc) } dc.DrawRectangle(x1, m_sashPosition, w1, m_sashSize); } - } dc.SetPen(wxNullPen); @@ -754,7 +757,8 @@ void wxSplitterWindow::SizeWindows() DoSetSashPosition(newSashPosition); } - if ( newSashPosition == m_sashPosition ) + if ( newSashPosition <= m_sashPosition + && newSashPosition >= m_sashPosition - GetBorderSize() ) { // don't update it any more m_requestedSashPosition = INT_MAX; @@ -805,7 +809,7 @@ void wxSplitterWindow::SizeWindows() // Set pane for unsplit window void wxSplitterWindow::Initialize(wxWindow *window) { - wxASSERT_MSG( window->GetParent() == this, + wxASSERT_MSG( window && window->GetParent() == this, _T("windows in the splitter should have it as parent!") ); m_windowOne = window; @@ -823,7 +827,10 @@ bool wxSplitterWindow::DoSplit(wxSplitMode mode, if ( IsSplit() ) return FALSE; - wxASSERT_MSG( window1->GetParent() == this && window2->GetParent() == this, + wxCHECK_MSG( window1 && window2, FALSE, + _T("can not split with NULL window(s)") ); + + wxCHECK_MSG( window1->GetParent() == this && window2->GetParent() == this, FALSE, _T("windows in the splitter should have it as parent!") ); m_splitMode = mode; diff --git a/src/generic/statusbr.cpp b/src/generic/statusbr.cpp index c5128995c8..4b204e06e9 100644 --- a/src/generic/statusbr.cpp +++ b/src/generic/statusbr.cpp @@ -29,6 +29,11 @@ #include "wx/dcclient.h" #endif +#ifdef __WXGTK20__ +#include "wx/gtk/private.h" +#include "wx/gtk/win_gtk.h" +#endif + #include "wx/statusbr.h" // we only have to do it here when we use wxStatusBarGeneric in addition to the @@ -44,8 +49,8 @@ BEGIN_EVENT_TABLE(wxStatusBarGeneric, wxWindow) EVT_PAINT(wxStatusBarGeneric::OnPaint) - EVT_SIZE(wxStatusBarGeneric::OnSize) - + EVT_LEFT_DOWN(wxStatusBarGeneric::OnLeftDown) + EVT_RIGHT_DOWN(wxStatusBarGeneric::OnRightDown) EVT_SYS_COLOUR_CHANGED(wxStatusBarGeneric::OnSysColourChanged) END_EVENT_TABLE() @@ -99,6 +104,8 @@ bool wxStatusBarGeneric::Create(wxWindow *parent, SetSize(-1, -1, -1, height); + SetFieldsCount(1); + return TRUE; } @@ -168,28 +175,41 @@ void wxStatusBarGeneric::SetStatusWidths(int n, const int widths_field[]) void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) { - wxPaintDC dc(this); + wxPaintDC dc(this); +#ifdef __WXGTK20__ + // Draw grip first + if (HasFlag( wxST_SIZEGRIP )) + { + int width, height; + GetClientSize(&width, &height); + + gtk_paint_resize_grip( m_widget->style, + GTK_PIZZA(m_wxwindow)->bin_window, + (GtkStateType) GTK_WIDGET_STATE (m_widget), + NULL, + m_widget, + "statusbar", + GDK_WINDOW_EDGE_SOUTH_EAST, + width-height-2, 1, height-2, height-3 ); + + } +#endif + + if (GetFont().Ok()) + dc.SetFont(GetFont()); - int i; - if ( GetFont().Ok() ) - dc.SetFont(GetFont()); dc.SetBackgroundMode(wxTRANSPARENT); #ifdef __WXPM__ - wxColour vColor; + wxColour vColor; vColor = wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR); ::WinFillRect(dc.m_hPS, &dc.m_vRclPaint, vColor.GetPixel()); #endif - for ( i = 0; i < m_nFields; i ++ ) - DrawField(dc, i); - - // VZ: again, what is this for? -#ifdef __WXMSW__ - dc.SetFont(wxNullFont); -#endif // MSW + for (int i = 0; i < m_nFields; i ++) + DrawField(dc, i); } void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i) @@ -222,8 +242,8 @@ void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i) void wxStatusBarGeneric::DrawField(wxDC& dc, int i) { - wxRect rect; - GetFieldRect(i, rect); + wxRect rect; + GetFieldRect(i, rect); // Draw border // Have grey background, plus 3-d border - @@ -280,12 +300,15 @@ bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const GetClientSize(&width, &height); #endif - // we cache m_widthsAbs between calls normally but it's cleared when the - // status widths change so recompute it if needed - if ( m_widthsAbs.IsEmpty() ) + // we cache m_widthsAbs between calls and recompute it if client + // width has changed (or when it is initially empty) + if ( m_widthsAbs.IsEmpty() || (m_lastClientWidth != width) ) { wxConstCast(this, wxStatusBarGeneric)-> m_widthsAbs = CalculateAbsWidths(width); + // remember last width for which we have recomputed the widths in pixels + wxConstCast(this, wxStatusBarGeneric)-> + m_lastClientWidth = width; } rect.x = 0; @@ -351,7 +374,7 @@ void wxStatusBarGeneric::SetMinHeight(int height) // current font wxClientDC dc(this); wxCoord y; - dc.GetTextExtent( _T("X"), NULL, &y ); + dc.GetTextExtent( wxT("X"), NULL, &y ); if ( height > (11*y)/10 ) { @@ -359,12 +382,73 @@ void wxStatusBarGeneric::SetMinHeight(int height) } } -void wxStatusBarGeneric::OnSize(wxSizeEvent& event) +void wxStatusBarGeneric::OnLeftDown(wxMouseEvent& event) { - // have to recompute the widths in pixels - m_widthsAbs.Empty(); +#ifdef __WXGTK20__ + int width, height; + GetClientSize(&width, &height); - event.Skip(); + if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height)) + { + GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget ); + + if (!GTK_IS_WINDOW (ancestor)) + return; + + GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window; + + int org_x = 0; + int org_y = 0; + gdk_window_get_origin( source, &org_x, &org_y ); + + gtk_window_begin_resize_drag (GTK_WINDOW (ancestor), + GDK_WINDOW_EDGE_SOUTH_EAST, + 1, + org_x + event.GetX(), + org_y + event.GetY(), + 0); + } + else + { + event.Skip( TRUE ); + } +#else + event.Skip( TRUE ); +#endif +} + +void wxStatusBarGeneric::OnRightDown(wxMouseEvent& event) +{ +#ifdef __WXGTK20__ + int width, height; + GetClientSize(&width, &height); + + if (HasFlag( wxST_SIZEGRIP ) && (event.GetX() > width-height)) + { + GtkWidget *ancestor = gtk_widget_get_toplevel( m_widget ); + + if (!GTK_IS_WINDOW (ancestor)) + return; + + GdkWindow *source = GTK_PIZZA(m_wxwindow)->bin_window; + + int org_x = 0; + int org_y = 0; + gdk_window_get_origin( source, &org_x, &org_y ); + + gtk_window_begin_move_drag (GTK_WINDOW (ancestor), + 2, + org_x + event.GetX(), + org_y + event.GetY(), + 0); + } + else + { + event.Skip( TRUE ); + } +#else + event.Skip( TRUE ); +#endif } #endif // wxUSE_STATUSBAR diff --git a/src/generic/tbarsmpl.cpp b/src/generic/tbarsmpl.cpp index 522736e77f..054fc30003 100644 --- a/src/generic/tbarsmpl.cpp +++ b/src/generic/tbarsmpl.cpp @@ -86,7 +86,7 @@ public: IMPLEMENT_DYNAMIC_CLASS(wxToolBarSimple, wxToolBarBase) -#if !wxUSE_TOOLBAR_NATIVE +#if !defined(wxUSE_TOOLBAR_NATIVE) && !defined(__WXUNIVERSAL__) #include "wx/toolbar.h" IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarSimple) @@ -356,13 +356,15 @@ bool wxToolBarSimple::Realize() } if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - m_maxWidth += maxToolWidth; - else m_maxHeight += maxToolHeight; + else + m_maxWidth += maxToolWidth; m_maxWidth += m_xMargin; m_maxHeight += m_yMargin; + SetSize(m_maxWidth, m_maxHeight); + return TRUE; } diff --git a/src/generic/timer.cpp b/src/generic/timer.cpp index c46854c9e9..259a0ebe0e 100644 --- a/src/generic/timer.cpp +++ b/src/generic/timer.cpp @@ -90,7 +90,7 @@ void wxTimerScheduler::QueueTimer(wxTimerDesc *desc, unsigned long when) desc->shotTime = when; desc->running = TRUE; - wxLogTrace("timer", "queued timer %p at tick %ld", + wxLogTrace( wxT("timer"), wxT("queued timer %p at tick %ld"), desc->timer, (long) when); if ( m_timers ) @@ -143,7 +143,7 @@ void wxTimerScheduler::NotifyTimers() if ( !timerDeleted ) { - wxLogTrace("timer", "notified timer %p sheduled for %ld", + wxLogTrace( wxT("timer"), wxT("notified timer %p sheduled for %ld"), desc->timer, (long) desc->shotTime); desc->deleteFlag = NULL; @@ -172,7 +172,7 @@ void wxTimer::Init() wxTimer::~wxTimer() { - wxLogTrace("timer", "destroying timer %p...", this); + wxLogTrace( wxT("timer"), wxT("destroying timer %p..."), this); if ( IsRunning() ) Stop(); @@ -184,7 +184,7 @@ wxTimer::~wxTimer() *m_desc->deleteFlag = TRUE; delete m_desc; - wxLogTrace("timer", " ...done destroying timer %p...", this); + wxLogTrace( wxT("timer"), wxT(" ...done destroying timer %p..."), this); } bool wxTimer::IsRunning() const @@ -194,7 +194,7 @@ bool wxTimer::IsRunning() const bool wxTimer::Start(int millisecs, bool oneShot) { - wxLogTrace("timer", "started timer %p: %i ms, oneshot=%i", + wxLogTrace( wxT("timer"), wxT("started timer %p: %i ms, oneshot=%i"), this, millisecs, oneShot); if ( !wxTimerBase::Start(millisecs, oneShot) ) diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 3fb31eb750..edc1b0d090 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -38,6 +38,10 @@ #include "wx/settings.h" #include "wx/dcclient.h" +#ifdef __WXMAC__ + #include "wx/mac/private.h" +#endif + // ----------------------------------------------------------------------------- // array types // ----------------------------------------------------------------------------- @@ -287,7 +291,7 @@ private: short m_images[wxTreeItemIcon_Max]; wxCoord m_x; // (virtual) offset from top - short m_y; // (virtual) offset from left + wxCoord m_y; // (virtual) offset from left short m_width; // width of this item unsigned char m_height; // height of this item @@ -427,6 +431,8 @@ void wxTreeTextCtrl::Finish() { if ( !m_finished ) { + m_owner->ResetTextControl(); + wxPendingDelete.Append(this); m_finished = TRUE; @@ -755,6 +761,7 @@ void wxGenericTreeCtrl::Init() m_dragCount = 0; m_isDragging = FALSE; m_dropTarget = m_oldSelection = (wxGenericTreeItem *)NULL; + m_textCtrl = NULL; m_renameTimer = NULL; m_findTimer = NULL; @@ -762,11 +769,13 @@ void wxGenericTreeCtrl::Init() m_lastOnSame = FALSE; m_normalFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ); - m_boldFont = wxFont( m_normalFont.GetPointSize(), - m_normalFont.GetFamily(), - m_normalFont.GetStyle(), - wxBOLD, - m_normalFont.GetUnderlined()); + m_boldFont = wxFont(m_normalFont.GetPointSize(), + m_normalFont.GetFamily(), + m_normalFont.GetStyle(), + wxBOLD, + m_normalFont.GetUnderlined(), + m_normalFont.GetFaceName(), + m_normalFont.GetEncoding()); } bool wxGenericTreeCtrl::Create(wxWindow *parent, @@ -919,6 +928,30 @@ wxTreeItemData *wxGenericTreeCtrl::GetItemData(const wxTreeItemId& item) const return ((wxGenericTreeItem*) item.m_pItem)->GetData(); } +wxColour wxGenericTreeCtrl::GetItemTextColour(const wxTreeItemId& item) const +{ + wxCHECK_MSG( item.IsOk(), wxNullColour, wxT("invalid tree item") ); + + wxGenericTreeItem *pItem = (wxGenericTreeItem*) item.m_pItem; + return pItem->Attr().GetTextColour(); +} + +wxColour wxGenericTreeCtrl::GetItemBackgroundColour(const wxTreeItemId& item) const +{ + wxCHECK_MSG( item.IsOk(), wxNullColour, wxT("invalid tree item") ); + + wxGenericTreeItem *pItem = (wxGenericTreeItem*) item.m_pItem; + return pItem->Attr().GetBackgroundColour(); +} + +wxFont wxGenericTreeCtrl::GetItemFont(const wxTreeItemId& item) const +{ + wxCHECK_MSG( item.IsOk(), wxNullFont, wxT("invalid tree item") ); + + wxGenericTreeItem *pItem = (wxGenericTreeItem*) item.m_pItem; + return pItem->Attr().GetFont(); +} + void wxGenericTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text) { wxCHECK_RET( item.IsOk(), wxT("invalid tree item") ); @@ -1007,11 +1040,13 @@ bool wxGenericTreeCtrl::SetFont( const wxFont &font ) wxScrolledWindow::SetFont(font); m_normalFont = font ; - m_boldFont = wxFont( m_normalFont.GetPointSize(), - m_normalFont.GetFamily(), - m_normalFont.GetStyle(), - wxBOLD, - m_normalFont.GetUnderlined()); + m_boldFont = wxFont(m_normalFont.GetPointSize(), + m_normalFont.GetFamily(), + m_normalFont.GetStyle(), + wxBOLD, + m_normalFont.GetUnderlined(), + m_normalFont.GetFaceName(), + m_normalFont.GetEncoding()); return TRUE; } @@ -1090,7 +1125,7 @@ bool wxGenericTreeCtrl::IsBold(const wxTreeItemId& item) const // navigation // ----------------------------------------------------------------------------- -wxTreeItemId wxGenericTreeCtrl::GetParent(const wxTreeItemId& item) const +wxTreeItemId wxGenericTreeCtrl::GetItemParent(const wxTreeItemId& item) const { wxCHECK_MSG( item.IsOk(), wxTreeItemId(), wxT("invalid tree item") ); @@ -1190,7 +1225,7 @@ wxTreeItemId wxGenericTreeCtrl::GetNext(const wxTreeItemId& item) const do { toFind = GetNextSibling(p); - p = GetParent(p); + p = GetItemParent(p); } while (p.IsOk() && !toFind.IsOk()); return toFind; } @@ -1237,6 +1272,12 @@ wxTreeItemId wxGenericTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const return wxTreeItemId(); } +// called by wxTextTreeCtrl when it marks itself for deletion +void wxGenericTreeCtrl::ResetTextControl() +{ + m_textCtrl = NULL; +} + // find the first item starting with the given prefix after the given item wxTreeItemId wxGenericTreeCtrl::FindItem(const wxTreeItemId& idParent, const wxString& prefixOrig) const @@ -1729,13 +1770,13 @@ void wxGenericTreeCtrl::SelectItem(const wxTreeItemId& itemId, if ( GetEventHandler()->ProcessEvent( event ) && !event.IsAllowed() ) return; - wxTreeItemId parent = GetParent( itemId ); + wxTreeItemId parent = GetItemParent( itemId ); while (parent.IsOk()) { if (!IsExpanded(parent)) Expand( parent ); - parent = GetParent( parent ); + parent = GetItemParent( parent ); } EnsureVisible( itemId ); @@ -2084,7 +2125,20 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) if ( item->IsSelected() ) { +// under mac selections are only a rectangle in case they don't have the focus +#ifdef __WXMAC__ + if ( !m_hasFocus ) + { + dc.SetBrush( *wxTRANSPARENT_BRUSH ) ; + dc.SetPen( wxPen( wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHT ) , 1 , wxSOLID ) ) ; + } + else + { + dc.SetBrush( *m_hilightBrush ) ; + } +#else dc.SetBrush(*(m_hasFocus ? m_hilightBrush : m_hilightUnfocusedBrush)); +#endif } else { @@ -2265,10 +2319,25 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level if (HasFlag(wxTR_AQUA_BUTTONS)) { +#ifdef __WXMAC__ + wxMacPortSetter helper(&dc) ; + wxMacWindowClipper clipper(this) ; + wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ; + + int loc_x = x - 5 ; + int loc_y = y_mid - 6 ; + MacWindowToRootWindow( & loc_x , & loc_y ) ; + Rect bounds = { loc_y , loc_x , loc_y + 18 , loc_x + 12 } ; + ThemeButtonDrawInfo info = { kThemeStateActive , item->IsExpanded() ? kThemeDisclosureDown : kThemeDisclosureRight , + kThemeAdornmentNone }; + DrawThemeButton( &bounds, kThemeDisclosureButton , + &info , NULL , NULL , NULL , NULL ) ; +#else if (item->IsExpanded()) dc.DrawBitmap( *m_arrowDown, x-5, y_mid-6, TRUE ); else dc.DrawBitmap( *m_arrowRight, x-5, y_mid-6, TRUE ); +#endif } else { @@ -2341,7 +2410,23 @@ void wxGenericTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level // draw line down to last child oldY += GetLineHeight(children[n-1])>>1; if (HasButtons()) y_mid += 5; - dc.DrawLine(x, y_mid, x, oldY); + + // Only draw the portion of the line that is visible, in case it is huge + wxCoord xOrigin=0, yOrigin=0, width, height; + dc.GetDeviceOrigin(&xOrigin, &yOrigin); + yOrigin = abs(yOrigin); + GetClientSize(&width, &height); + + // Move end points to the begining/end of the view? + if (y_mid < yOrigin) + y_mid = yOrigin; + if (oldY > yOrigin + height) + oldY = yOrigin + height; + + // after the adjustments if y_mid is larger than oldY then the line + // isn't visible at all so don't draw anything + if (y_mid < oldY) + dc.DrawLine(x, y_mid, x, oldY); } } } @@ -2539,7 +2624,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) wxTreeItemId prev = GetPrevSibling( m_key_current ); if (!prev) { - prev = GetParent( m_key_current ); + prev = GetItemParent( m_key_current ); if ((prev == GetRootItem()) && HasFlag(wxTR_HIDE_ROOT)) { break; // don't go to root if it is hidden @@ -2578,7 +2663,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) // left arrow goes to the parent case WXK_LEFT: { - wxTreeItemId prev = GetParent( m_current ); + wxTreeItemId prev = GetItemParent( m_current ); if ((prev == GetRootItem()) && HasFlag(wxTR_HIDE_ROOT)) { // don't go to root if it is hidden @@ -2614,7 +2699,7 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) wxTreeItemId current = m_key_current; while (current && !next) { - current = GetParent( current ); + current = GetItemParent( current ); if (current) next = GetNextSibling( current ); } } @@ -2781,9 +2866,17 @@ void wxGenericTreeCtrl::Edit( const wxTreeItemId& item ) if ( m_dirty ) wxYieldIfNeeded(); - wxTreeTextCtrl *text = new wxTreeTextCtrl(this, itemEdit); + m_textCtrl = new wxTreeTextCtrl(this, itemEdit); - text->SetFocus(); + m_textCtrl->SetFocus(); +} + +// returns a pointer to the text edit control if the item is being +// edited, NULL otherwise (it's assumed that no more than one item may +// be edited simultaneously) +wxTextCtrl* wxGenericTreeCtrl::GetEditControl() const +{ + return m_textCtrl; } bool wxGenericTreeCtrl::OnRenameAccept(wxGenericTreeItem *item, diff --git a/src/generic/treelay.cpp b/src/generic/treelay.cpp index 701a0f14b7..43aae86378 100644 --- a/src/generic/treelay.cpp +++ b/src/generic/treelay.cpp @@ -270,7 +270,7 @@ void wxTreeLayoutStored::Initialize(int n) int i; for (i = 0; i < n; i++) { - m_nodes[i].m_name = ""; + m_nodes[i].m_name = wxT(""); m_nodes[i].m_active = FALSE; m_nodes[i].m_parentId = -1; m_nodes[i].m_x = 0; @@ -464,7 +464,7 @@ wxString wxTreeLayoutStored::HitTest(wxMouseEvent& event, wxDC& dc) } } - return wxString(""); + return wxString( wxT("") ); } #endif diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index 0b99d25e0c..fbc3fc7d5b 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -57,6 +57,7 @@ WX_DEFINE_ARRAY(wxPanel *, wxArrayPages); DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING) DEFINE_EVENT_TYPE(wxEVT_WIZARD_CANCEL) +DEFINE_EVENT_TYPE(wxEVT_WIZARD_FINISHED) DEFINE_EVENT_TYPE(wxEVT_WIZARD_HELP) BEGIN_EVENT_TABLE(wxWizard, wxDialog) @@ -68,6 +69,7 @@ BEGIN_EVENT_TABLE(wxWizard, wxDialog) EVT_WIZARD_PAGE_CHANGED(-1, wxWizard::OnWizEvent) EVT_WIZARD_PAGE_CHANGING(-1, wxWizard::OnWizEvent) EVT_WIZARD_CANCEL(-1, wxWizard::OnWizEvent) + EVT_WIZARD_FINISHED(-1, wxWizard::OnWizEvent) EVT_WIZARD_HELP(-1, wxWizard::OnWizEvent) END_EVENT_TABLE() @@ -348,7 +350,7 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) m_page->Hide(); - btnLabelWasNext = m_page->GetNext() != (wxWizardPage *)NULL; + btnLabelWasNext = HasNextPage(m_page); // Get the bitmap of the previous page (if it exists) if ( m_page->GetBitmap().Ok() ) @@ -365,6 +367,11 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) { // terminate successfully EndModal(wxID_OK); + if ( !IsModal() ) + { + wxWizardEvent event(wxEVT_WIZARD_FINISHED, GetId(),FALSE, 0); + (void)GetEventHandler()->ProcessEvent(event); + } return TRUE; } @@ -395,9 +402,9 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) } // and update the buttons state - m_btnPrev->Enable(m_page->GetPrev() != (wxWizardPage *)NULL); + m_btnPrev->Enable(HasPrevPage(m_page)); - bool hasNext = m_page->GetNext() != (wxWizardPage *)NULL; + bool hasNext = HasNextPage(m_page); if ( btnLabelWasNext != hasNext ) { // need to update diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 20d8961d6c..eccbb52d0a 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -26,6 +26,7 @@ #include "wx/dialog.h" #include "wx/msgdlg.h" #include "wx/file.h" +#include "wx/filename.h" #if wxUSE_WX_RESOURCES #include "wx/resource.h" @@ -44,13 +45,32 @@ #endif #include -#if defined(__DARWIN__) -# warning "FIXME: select must be used instead of poll (GD)" -#elif defined(__VMS) -# include -#else -# include -#endif + +#ifdef HAVE_POLL + #if defined(__VMS) + #include + #else + // bug in the OpenBSD headers: at least in 3.1 there is no extern "C" + // in neither poll.h nor sys/poll.h which results in link errors later + #ifdef __OPENBSD__ + extern "C" + { + #endif + + #include + + #ifdef __OPENBSD__ + }; + #endif + #endif // platform +#else // !HAVE_POLL + // we implement poll() ourselves using select() which is supposed exist in + // all modern Unices + #include + #include + #include +#endif // HAVE_POLL/!HAVE_POLL + #include "wx/gtk/win_gtk.h" #include @@ -250,22 +270,82 @@ static gint wxapp_idle_callback( gpointer WXUNUSED(data) ) #if wxUSE_THREADS +#ifdef HAVE_POLL + #define wxPoll poll + #define wxPollFd pollfd +#else // !HAVE_POLL + +typedef GPollFD wxPollFd; + +int wxPoll(wxPollFd *ufds, unsigned int nfds, int timeout) +{ + // convert timeout from ms to struct timeval (s/us) + timeval tv_timeout; + tv_timeout.tv_sec = timeout/1000; + tv_timeout.tv_usec = (timeout%1000)*1000; + + // remember the highest fd used here + int fdMax = -1; + + // and fill the sets for select() + fd_set readfds; + fd_set writefds; + fd_set exceptfds; + FD_ZERO(&readfds); + FD_ZERO(&writefds); + FD_ZERO(&exceptfds); + + unsigned int i; + for ( i = 0; i < nfds; i++ ) + { + wxASSERT_MSG( ufds[i].fd < FD_SETSIZE, _T("fd out of range") ); + + if ( ufds[i].events & G_IO_IN ) + FD_SET(ufds[i].fd, &readfds); + + if ( ufds[i].events & G_IO_PRI ) + FD_SET(ufds[i].fd, &exceptfds); + + if ( ufds[i].events & G_IO_OUT ) + FD_SET(ufds[i].fd, &writefds); + + if ( ufds[i].fd > fdMax ) + fdMax = ufds[i].fd; + } + + fdMax++; + int res = select(fdMax, &readfds, &writefds, &exceptfds, &tv_timeout); + + // translate the results back + for ( i = 0; i < nfds; i++ ) + { + ufds[i].revents = 0; + + if ( FD_ISSET(ufds[i].fd, &readfds ) ) + ufds[i].revents |= G_IO_IN; + + if ( FD_ISSET(ufds[i].fd, &exceptfds ) ) + ufds[i].revents |= G_IO_PRI; + + if ( FD_ISSET(ufds[i].fd, &writefds ) ) + ufds[i].revents |= G_IO_OUT; + } + + return res; +} + +#endif // HAVE_POLL/!HAVE_POLL + static gint wxapp_poll_func( GPollFD *ufds, guint nfds, gint timeout ) { - gint res; gdk_threads_enter(); wxMutexGuiLeave(); g_mainThreadLocked = TRUE; -#ifdef __DARWIN__ - // FIXME: poll is not available under Darwin/Mac OS X and this needs - // to be implemented using select instead (GD) - // what about other BSD derived systems? - res = -1; -#else - res = poll( (struct pollfd*) ufds, nfds, timeout ); -#endif + // we rely on the fact that glib GPollFD struct is really just pollfd but + // I wonder how wise is this in the long term (VZ) + gint res = wxPoll( (wxPollFd *) ufds, nfds, timeout ); wxMutexGuiEnter(); g_mainThreadLocked = FALSE; @@ -463,6 +543,16 @@ GdkVisual *wxApp::GetGdkVisual() bool wxApp::ProcessIdle() { + wxWindowList::Node* node = wxTopLevelWindows.GetFirst(); + node = wxTopLevelWindows.GetFirst(); + while (node) + { + wxWindow* win = node->GetData(); + CallInternalIdle( win ); + + node = node->GetNext(); + } + wxIdleEvent event; event.SetEventObject( this ); ProcessEvent( event ); @@ -510,14 +600,6 @@ bool wxApp::SendIdleEvents() node = node->GetNext(); } - node = wxTopLevelWindows.GetFirst(); - while (node) - { - wxWindow* win = node->GetData(); - CallInternalIdle( win ); - - node = node->GetNext(); - } return needMore; } @@ -545,7 +627,7 @@ bool wxApp::SendIdleEvents( wxWindow* win ) event.SetEventObject(win); win->GetEventHandler()->ProcessEvent(event); - + if (event.MoreRequested()) needMore = TRUE; @@ -609,10 +691,6 @@ bool wxApp::Initialize() { wxClassInfo::InitializeClasses(); -#if wxUSE_INTL - wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); -#endif - // GL: I'm annoyed ... I don't know where to put this and I don't want to // create a module for that as it's part of the core. #if wxUSE_THREADS @@ -631,7 +709,12 @@ bool wxApp::Initialize() #endif wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) return FALSE; + if (!wxModule::InitializeModules()) + return FALSE; + +#if wxUSE_INTL + wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); +#endif return TRUE; } @@ -810,9 +893,11 @@ int wxEntry( int argc, char *argv[] ) wxTheApp->argv = argv; #endif - wxString name(wxFileNameFromPath(argv[0])); - wxStripExtension( name ); - wxTheApp->SetAppName( name ); + if (wxTheApp->argc > 0) + { + wxFileName fname( wxTheApp->argv[0] ); + wxTheApp->SetAppName( fname.GetName() ); + } int retValue; retValue = wxEntryInitGui(); diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 033071565e..d2e9fda7f0 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -344,7 +344,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth ) m_refData = new wxBitmapRefData(); // ------ - // convertion to mono bitmap: + // conversion to mono bitmap: // ------ if (depth == 1) { @@ -440,7 +440,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth ) } // ------ - // convertion to colour bitmap: + // conversion to colour bitmap: // ------ else { diff --git a/src/gtk/button.cpp b/src/gtk/button.cpp index 711b64f16c..fae04c1372 100644 --- a/src/gtk/button.cpp +++ b/src/gtk/button.cpp @@ -188,6 +188,15 @@ bool wxButton::Enable( bool enable ) return TRUE; } +bool wxButton::IsOwnGtkWindow( GdkWindow *window ) +{ +#ifdef __WXGTK20__ + return GTK_BUTTON(m_widget)->event_window; +#else + return (window == m_widget->window); +#endif +} + void wxButton::ApplyWidgetStyle() { SetWidgetStyle(); diff --git a/src/gtk/choice.cpp b/src/gtk/choice.cpp index c9e3cceac2..9b3b464160 100644 --- a/src/gtk/choice.cpp +++ b/src/gtk/choice.cpp @@ -448,14 +448,11 @@ wxSize wxChoice::DoGetBestSize() const ret.x = 0; if ( m_widget ) { - GdkFont *font = m_font.GetInternalFont(); - - wxCoord width; + int width; size_t count = GetCount(); for ( size_t n = 0; n < count; n++ ) { - // FIXME GTK 2.0 - width = (wxCoord)gdk_string_width(font, wxGTK_CONV( GetString(n) ) ); + GetTextExtent( GetString(n), &width, NULL, NULL, NULL, &m_font ); if ( width > ret.x ) ret.x = width; } @@ -477,7 +474,7 @@ wxSize wxChoice::DoGetBestSize() const if ( ret.x < 80 ) ret.x = 80; - ret.y = 16 + gdk_char_height(GET_STYLE_FONT( m_widget->style ), 'H' ); + ret.y = 16 + GetCharHeight(); return ret; } diff --git a/src/gtk/colour.cpp b/src/gtk/colour.cpp index 84c790a329..21d852e55d 100644 --- a/src/gtk/colour.cpp +++ b/src/gtk/colour.cpp @@ -13,6 +13,7 @@ #endif #include "wx/gdicmn.h" +#include "wx/gtk/private.h" #include #include @@ -167,7 +168,7 @@ void wxColour::InitFromName( const wxString &colourName ) { m_refData = new wxColourRefData(); - if (!gdk_color_parse( colourName.mb_str(), &M_COLDATA->m_color )) + if (!gdk_color_parse( wxGTK_CONV( colourName ), &M_COLDATA->m_color )) { // VZ: asserts are good in general but this one is triggered by // calling wxColourDatabase::FindColour() with an @@ -217,11 +218,13 @@ void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue ) { AllocExclusive(); - m_refData = new wxColourRefData(); M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; M_COLDATA->m_color.pixel = 0; + + M_COLDATA->m_colormap = (GdkColormap*) NULL; + M_COLDATA->m_hasPixel = FALSE; } unsigned char wxColour::Red() const diff --git a/src/gtk/combobox.cpp b/src/gtk/combobox.cpp index a03df573b1..d719f40bc9 100644 --- a/src/gtk/combobox.cpp +++ b/src/gtk/combobox.cpp @@ -36,34 +36,25 @@ extern bool g_isIdle; extern bool g_blockEventsOnDrag; //----------------------------------------------------------------------------- -// "select" +// "select-child" - click/cursor get select-child, changed, select-child //----------------------------------------------------------------------------- static void -gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) +gtk_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(widget), wxComboBox *combo ) { if (g_isIdle) wxapp_install_idle_handler(); if (!combo->m_hasVMT) return; - + if (g_blockEventsOnDrag) return; - if (combo->m_alreadySent) - { - combo->m_alreadySent = FALSE; - return; - } - - combo->m_alreadySent = TRUE; - int curSelection = combo->GetSelection(); - + if (combo->m_prevSelection != curSelection) { GtkWidget *list = GTK_COMBO(combo->m_widget)->list; gtk_list_unselect_item( GTK_LIST(list), combo->m_prevSelection ); } - combo->m_prevSelection = curSelection; wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() ); @@ -75,7 +66,8 @@ gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) } //----------------------------------------------------------------------------- -// "changed" +// "changed" - typing and list item matches get changed, select-child +// if it doesn't match an item then just get a single changed //----------------------------------------------------------------------------- static void @@ -91,6 +83,12 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) combo->GetEventHandler()->ProcessEvent( event ); } +static void +gtk_dummy_callback(GtkEntry *WXUNUSED(entry), GtkCombo *WXUNUSED(combo)) +{ +} + + //----------------------------------------------------------------------------- // wxComboBox //----------------------------------------------------------------------------- @@ -121,6 +119,13 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, } m_widget = gtk_combo_new(); + GtkCombo *combo = GTK_COMBO(m_widget); + + // Disable GTK's broken events ... + gtk_signal_disconnect( GTK_OBJECT(combo->entry), combo->entry_change_id ); + // ... and add surogate handler. + combo->entry_change_id = gtk_signal_connect (GTK_OBJECT (combo->entry), "changed", + (GtkSignalFunc) gtk_dummy_callback, combo); // make it more useable gtk_combo_set_use_arrows_always( GTK_COMBO(m_widget), TRUE ); @@ -128,7 +133,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, // and case-sensitive gtk_combo_set_case_sensitive( GTK_COMBO(m_widget), TRUE ); - GtkWidget *list = GTK_COMBO(m_widget)->list; #ifndef __WXGTK20__ @@ -137,10 +141,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, for (int i = 0; i < n; i++) { - /* don't send first event, which GTK sends aways when - inserting the first item */ - m_alreadySent = TRUE; - GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); @@ -148,27 +148,29 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, gtk_container_add( GTK_CONTAINER(list), list_item ); - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - gtk_widget_show( list_item ); } m_parent->DoAddChild( this ); - m_focusWidget = GTK_COMBO(m_widget)->entry; + m_focusWidget = combo->entry; PostCreation(); - ConnectWidget( GTK_COMBO(m_widget)->button ); + ConnectWidget( combo->button ); - if (!value.IsNull()) SetValue( value ); + // MSW's combo box shows the value and the selection is -1 + gtk_entry_set_text( GTK_ENTRY(combo->entry), wxGTK_CONV(value) ); + gtk_list_unselect_all( GTK_LIST(combo->list) ); if (style & wxCB_READONLY) - gtk_entry_set_editable( GTK_ENTRY( GTK_COMBO(m_widget)->entry ), FALSE ); + gtk_entry_set_editable( GTK_ENTRY( combo->entry ), FALSE ); - gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed", - GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this); + gtk_signal_connect( GTK_OBJECT(combo->entry), "changed", + GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); + + gtk_signal_connect( GTK_OBJECT(combo->list), "select-child", + GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); wxSize size_best( DoGetBestSize() ); wxSize new_size( size ); @@ -186,7 +188,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, gtk_widget_set_usize( m_widget, new_size.x, new_size.y ); } - SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); SetForegroundColour( parent->GetForegroundColour() ); @@ -209,19 +210,29 @@ wxComboBox::~wxComboBox() m_clientDataList.Clear(); } +void wxComboBox::SetFocus() +{ + if ( m_hasFocus ) + { + // don't do anything if we already have focus + return; + } + + gtk_widget_grab_focus( m_focusWidget ); +} + void wxComboBox::AppendCommon( const wxString &item ) { wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); + DisableEvents(); + GtkWidget *list = GTK_COMBO(m_widget)->list; GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( item ) ); gtk_container_add( GTK_CONTAINER(list), list_item ); - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_realize( list_item ); @@ -231,6 +242,8 @@ void wxComboBox::AppendCommon( const wxString &item ) } gtk_widget_show( list_item ); + + EnableEvents(); } void wxComboBox::Append( const wxString &item ) @@ -304,6 +317,8 @@ void wxComboBox::Clear() { wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); + DisableEvents(); + GtkWidget *list = GTK_COMBO(m_widget)->list; gtk_list_clear_items( GTK_LIST(list), 0, Number() ); @@ -317,6 +332,8 @@ void wxComboBox::Clear() m_clientObjectList.Clear(); m_clientDataList.Clear(); + + EnableEvents(); } void wxComboBox::Delete( int n ) @@ -333,6 +350,8 @@ void wxComboBox::Delete( int n ) return; } + DisableEvents(); + GList *list = g_list_append( (GList*) NULL, child->data ); gtk_list_remove_items( listbox, list ); g_list_free( list ); @@ -347,9 +366,9 @@ void wxComboBox::Delete( int n ) node = m_clientDataList.Nth( n ); if (node) - { m_clientDataList.DeleteNode( node ); - } + + EnableEvents(); } int wxComboBox::FindString( const wxString &item ) @@ -364,8 +383,14 @@ int wxComboBox::FindString( const wxString &item ) { GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); - if (item == wxString(label->label,*wxConvCurrent)) +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + if (item == str) return count; + count++; child = child->next; } @@ -408,7 +433,7 @@ wxString wxComboBox::GetString( int n ) const GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); #ifdef __WXGTK20__ - str = wxGTK_CONV_BACK( gtk_label_get_text( label) ); + str = wxGTK_CONV_BACK( gtk_label_get_text(label) ); #else str = wxString( label->label ); #endif @@ -431,7 +456,12 @@ wxString wxComboBox::GetStringSelection() const if (selection) { GtkBin *bin = GTK_BIN( selection->data ); - wxString tmp = wxString(GTK_LABEL( bin->child )->label,*wxConvCurrent); + GtkLabel *label = GTK_LABEL( bin->child ); +#ifdef __WXGTK20__ + wxString tmp( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString tmp( label->label ); +#endif return tmp; } @@ -594,55 +624,33 @@ void wxComboBox::OnChar( wxKeyEvent &event ) { if ( event.KeyCode() == WXK_RETURN ) { - wxString value = GetValue(); - - if ( Number() == 0 ) + // GTK automatically selects an item if its in the list + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, GetId()); + event.SetString( GetValue() ); + event.SetInt( GetSelection() ); + event.SetEventObject( this ); + + if (!GetEventHandler()->ProcessEvent( event )) { - // make Enter generate "selected" event if there is only one item - // in the combobox - without it, it's impossible to select it at - // all! - wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() ); - event.SetInt( 0 ); - event.SetString( value ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - } - else - { - // add the item to the list if it's not there yet - if ( FindString(value) == wxNOT_FOUND ) - { - Append(value); - SetStringSelection(value); - - // and generate the selected event for it - wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() ); - event.SetInt( Number() - 1 ); - event.SetString( value ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - } - // This will invoke the dialog default action, such // as the clicking the default button. wxWindow *top_frame = m_parent; while (top_frame->GetParent() && !(top_frame->IsTopLevel())) - top_frame = top_frame->GetParent(); - + top_frame = top_frame->GetParent(); + if (top_frame && GTK_IS_WINDOW(top_frame->m_widget)) { GtkWindow *window = GTK_WINDOW(top_frame->m_widget); if (window->default_widget) - { gtk_widget_activate (window->default_widget); - return; - } } - - return; } + + // Catch GTK event so that GTK doesn't open the drop + // down list upon RETURN. + return; } event.Skip(); @@ -650,28 +658,18 @@ void wxComboBox::OnChar( wxKeyEvent &event ) void wxComboBox::DisableEvents() { - GtkList *list = GTK_LIST( GTK_COMBO(m_widget)->list ); - GList *child = list->children; - while (child) - { - gtk_signal_disconnect_by_func( GTK_OBJECT(child->data), - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - - child = child->next; - } + gtk_signal_disconnect_by_func( GTK_OBJECT(GTK_COMBO(m_widget)->list), + GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); + gtk_signal_disconnect_by_func( GTK_OBJECT(GTK_COMBO(m_widget)->entry), + GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); } void wxComboBox::EnableEvents() { - GtkList *list = GTK_LIST( GTK_COMBO(m_widget)->list ); - GList *child = list->children; - while (child) - { - gtk_signal_connect( GTK_OBJECT(child->data), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - - child = child->next; - } + gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->list), "select-child", + GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); + gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed", + GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); } void wxComboBox::OnSize( wxSizeEvent &event ) @@ -728,13 +726,11 @@ wxSize wxComboBox::DoGetBestSize() const ret.x = 0; if ( m_widget ) { - GdkFont *font = m_font.GetInternalFont(); - - wxCoord width; - size_t count = Number(); + int width; + size_t count = GetCount(); for ( size_t n = 0; n < count; n++ ) { - width = (wxCoord)gdk_string_width(font, wxGTK_CONV( GetString(n) ) ); + GetTextExtent( GetString(n), &width, NULL, NULL, NULL, &m_font ); if ( width > ret.x ) ret.x = width; } @@ -747,3 +743,4 @@ wxSize wxComboBox::DoGetBestSize() const } #endif + diff --git a/src/gtk/cursor.cpp b/src/gtk/cursor.cpp index dc03ce10db..a7ce14cfb5 100644 --- a/src/gtk/cursor.cpp +++ b/src/gtk/cursor.cpp @@ -370,7 +370,7 @@ void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) ) wxSetCursor( wxCursor(wxCURSOR_WATCH) ); if (wxTheApp) - wxTheApp->SendIdleEvents(); + wxTheApp->ProcessIdle(); gdk_flush(); } diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index ca8fb4dbd6..2b0f4f43ae 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -158,6 +158,11 @@ wxDataObject::wxDataObject() { } +wxDataObject::~wxDataObject() +{ + // dtor is empty but needed for Darwin and AIX -- otherwise it doesn't link +} + bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, Direction dir) const { size_t nFormatCount = GetFormatCount(dir); diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index 8a33377614..2ef77d4f3b 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -330,12 +330,7 @@ wxWindowDC::wxWindowDC( wxWindow *window ) wxASSERT_MSG( widget, wxT("DC needs a widget") ); #ifdef __WXGTK20__ - m_context = gtk_widget_get_pango_context( widget ); - - // Always take Xft context to get matching fonts - // for display and printing. - // m_context = pango_xft_get_context (GDK_DISPLAY (), DefaultScreen (GDK_DISPLAY ())); - + m_context = window->GtkGetPangoDefaultContext(); m_fontdesc = widget->style->font_desc; #endif @@ -399,6 +394,14 @@ void wxWindowDC::SetUpDC() m_bgGC = wxGetPoolGC( m_window, wxBG_COLOUR ); } +#ifdef __WXGTK20__ + if (m_isMemDC) + { + m_context = gdk_pango_context_get(); + m_fontdesc = pango_context_get_font_description(m_context); + } +#endif + /* background colour */ m_backgroundBrush = *wxWHITE_BRUSH; m_backgroundBrush.GetColour().CalcPixel( m_cmap ); @@ -1414,38 +1417,76 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) wxCHECK_RET( Ok(), wxT("invalid window dc") ); if (!m_window) return; + + if (text.empty()) return; +#ifndef __WXGTK20__ GdkFont *font = m_font.GetInternalFont( m_scaleY ); wxCHECK_RET( font, wxT("invalid font") ); +#endif -#if defined(__WXGTK20__) +#ifdef __WXGTK20__ wxCHECK_RET( m_context, wxT("no Pango context") ); #endif x = XLOG2DEV(x); y = YLOG2DEV(y); -#if defined(__WXGTK20__) +#ifdef __WXGTK20__ // TODO: the layout engine should be abstracted at a higher level! PangoLayout *layout = pango_layout_new(m_context); - pango_layout_set_font_description(layout, m_fontdesc); - { + #if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( text ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxCharBuffer data = wxConvUTF8.cWC2MB( text ); #else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( text ); - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxWCharBuffer wdata = wxConvLocal.cMB2WC( text ); + const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); #endif + + pango_layout_set_text( layout, (const char*)data, strlen((const char*)data) ); + + if (m_scaleY != 1.0) + { + // If there is a user or actually any scale applied to + // the device context, scale the font. + + // scale font description + gint oldSize = pango_font_description_get_size( m_fontdesc ); + double size = oldSize; + size = size * m_scaleY; + pango_font_description_set_size( m_fontdesc, (gint)size ); + + // actually apply scaled font + pango_layout_set_font_description( layout, m_fontdesc ); + + // Draw layout. + gdk_draw_layout( m_window, m_textGC, x, y, layout ); + + // reset unscaled size + pango_font_description_set_size( m_fontdesc, oldSize ); } - PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; - PangoRectangle rect; - pango_layout_line_get_extents(line, NULL, &rect); - wxCoord width = rect.width; - wxCoord height = rect.height; - gdk_draw_layout( m_window, m_textGC, x, y, layout ); + else + { + // actually apply font + pango_layout_set_font_description( layout, m_fontdesc ); + + // Draw layout. + gdk_draw_layout( m_window, m_textGC, x, y, layout ); + } + +#if 0 + // Measure layout + int w,h; + pango_layout_get_pixel_size( m_layout, &w, &h ); +#else + int w = 10; + int h = 10; +#endif + wxCoord width = w; + wxCoord height = h; + + g_object_unref( G_OBJECT( layout ) ); #else // GTK+ 1.x wxCoord width = gdk_string_width( font, text.mbc_str() ); wxCoord height = font->ascent + font->descent; @@ -1469,9 +1510,6 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) } #endif // GTK+ 2.0/1.x -#if defined(__WXGTK20__) - g_object_unref( G_OBJECT( layout ) ); -#endif width = wxCoord(width / m_scaleX); height = wxCoord(height / m_scaleY); @@ -1596,8 +1634,6 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, wxCoord *descent, wxCoord *externalLeading, wxFont *theFont) const { - wxFont fontToUse = m_font; - if (theFont) fontToUse = *theFont; if (string.IsEmpty()) { if (width) (*width) = 0; @@ -1606,34 +1642,40 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, } #ifdef __WXGTK20__ - PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description; - PangoLayout *layout = pango_layout_new(m_context); - pango_layout_set_font_description(layout, desc); + // Create layout and set font description + PangoLayout *layout = pango_layout_new( m_context ); + if (theFont) + pango_layout_set_font_description( layout, theFont->GetNativeFontInfo()->description ); + else + pango_layout_set_font_description( layout, m_fontdesc ); + + // Set layout's text #if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); #else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); + const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); #endif - PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + pango_layout_set_text( layout, (const char*) data, strlen((const char*)data) ); - PangoRectangle rect; - pango_layout_line_get_extents(line, NULL, &rect); - + // Measure text. + int w,h; + pango_layout_get_pixel_size( layout, &w, &h ); - if (width) (*width) = (wxCoord) (rect.width / PANGO_SCALE); - if (height) (*height) = (wxCoord) (rect.height / PANGO_SCALE); + if (width) (*width) = (wxCoord) w; + if (height) (*height) = (wxCoord) h; if (descent) { - // Do something about metrics here + // Do something about metrics here. TODO. (*descent) = 0; } if (externalLeading) (*externalLeading) = 0; // ?? g_object_unref( G_OBJECT( layout ) ); #else + wxFont fontToUse = m_font; + if (theFont) fontToUse = *theFont; + GdkFont *font = fontToUse.GetInternalFont( m_scaleY ); if (width) (*width) = wxCoord(gdk_string_width( font, string.mbc_str() ) / m_scaleX); if (height) (*height) = wxCoord((font->ascent + font->descent) / m_scaleY); @@ -1644,18 +1686,40 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, wxCoord wxWindowDC::GetCharWidth() const { +#ifdef __WXGTK20__ + // There should be an easier way. + PangoLayout *layout = pango_layout_new(m_context); + pango_layout_set_font_description(layout, m_fontdesc); + pango_layout_set_text(layout, "H", 1 ); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + return w; +#else GdkFont *font = m_font.GetInternalFont( m_scaleY ); wxCHECK_MSG( font, -1, wxT("invalid font") ); return wxCoord(gdk_string_width( font, "H" ) / m_scaleX); +#endif } wxCoord wxWindowDC::GetCharHeight() const { +#ifdef __WXGTK20__ + // There should be an easier way. + PangoLayout *layout = pango_layout_new(m_context); + pango_layout_set_font_description(layout, m_fontdesc); + pango_layout_set_text(layout, "H", 1); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + return h; +#else GdkFont *font = m_font.GetInternalFont( m_scaleY ); wxCHECK_MSG( font, -1, wxT("invalid font") ); return wxCoord((font->ascent + font->descent) / m_scaleY); +#endif } void wxWindowDC::Clear() @@ -1704,7 +1768,18 @@ void wxWindowDC::SetFont( const wxFont &font ) m_font = font; #ifdef __WXGTK20__ - m_fontdesc = m_font.GetNativeFontInfo()->description; + if (m_font.Ok()) + { + m_fontdesc = m_font.GetNativeFontInfo()->description; + + if (m_owner) + { + if (m_font.GetNoAntiAliasing()) + m_context = m_owner->GtkGetPangoX11Context(); + else + m_context = m_owner->GtkGetPangoDefaultContext(); + } + } #endif } @@ -1816,7 +1891,7 @@ void wxWindowDC::SetPen( const wxPen &pen ) gdk_gc_set_dashes( m_penGC, 0, (wxGTKDash*)req_dash, req_nb_dash ); } } -#endif +#endif // GTK+ > 1.0 GdkCapStyle capStyle = GDK_CAP_ROUND; switch (m_pen.GetCap()) @@ -1955,12 +2030,12 @@ void wxWindowDC::SetLogicalFunction( int function ) if (!m_window) return; - GdkFunction mode = GDK_COPY; + GdkFunction mode; switch (function) { case wxXOR: mode = GDK_XOR; break; case wxINVERT: mode = GDK_INVERT; break; -#if (GTK_MINOR_VERSION > 0) +#if (GTK_MINOR_VERSION > 0) || (GTK_MAJOR_VERSION > 1) case wxOR_REVERSE: mode = GDK_OR_REVERSE; break; case wxAND_REVERSE: mode = GDK_AND_REVERSE; break; case wxCLEAR: mode = GDK_CLEAR; break; @@ -1977,12 +2052,10 @@ void wxWindowDC::SetLogicalFunction( int function ) // unsupported by GTK case wxNOR: mode = GDK_COPY; break; -#endif +#endif // GTK+ > 1.0 default: - { wxFAIL_MSG( wxT("unsupported logical function") ); - break; - } + mode = GDK_COPY; } m_logicalFunction = function; diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 68a991a371..4c95d23682 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -30,8 +30,6 @@ extern void wxapp_install_idle_handler(); extern bool g_isIdle; extern int g_openDialogs; - - //----------------------------------------------------------------------------- // wxDialog //----------------------------------------------------------------------------- @@ -209,9 +207,11 @@ int wxDialog::ShowModal() } wxBusyCursorSuspender cs; // temporarily suppress the busy cursor - + Show( TRUE ); + SetFocus(); + m_modalShowing = TRUE; g_openDialogs++; diff --git a/src/gtk/files.lst b/src/gtk/files.lst index 68e2a7dacd..03398c6f5f 100644 --- a/src/gtk/files.lst +++ b/src/gtk/files.lst @@ -265,7 +265,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -434,6 +433,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -636,7 +636,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -984,7 +983,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index 31345187cb..23a8b2b1f0 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -93,6 +93,9 @@ public: void SetFaceName(const wxString& facename); void SetEncoding(wxFontEncoding encoding); + void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; } + bool GetNoAntiAliasing() { return m_noAA; } + // and this one also modifies all the other font data fields void SetNativeFontInfo(const wxNativeFontInfo& info); @@ -130,17 +133,14 @@ protected: void InitFromNative(); private: -#ifdef __WXGTK20__ - void ClearGdkFonts() { } -#else // GTK 1.x - // clear m_scaled_xfonts + // clear m_scaled_xfonts if any void ClearGdkFonts(); +#ifndef __WXGTK20__ // the map of font sizes to "GdkFont *" wxScaledFontList m_scaled_xfonts; #endif // GTK 2.0/1.x - // the broken down font parameters int m_pointSize; int m_family, m_style, @@ -148,6 +148,7 @@ private: bool m_underlined; wxString m_faceName; wxFontEncoding m_encoding; // Unused under GTK 2.0 + bool m_noAA; // No anti-aliasing // The native font info, basicly an XFLD under GTK 1.2 and // the pango font description under GTK 2.0. @@ -156,12 +157,8 @@ private: friend class wxFont; }; -// ============================================================================ -// wxFontRefData implementation -// ============================================================================ - // ---------------------------------------------------------------------------- -// wxFontRefData creation +// wxFontRefData // ---------------------------------------------------------------------------- void wxFontRefData::Init(int pointSize, @@ -189,24 +186,36 @@ void wxFontRefData::Init(int pointSize, m_underlined = underlined; m_encoding = encoding; + m_noAA = FALSE; + #ifdef __WXGTK20__ // Create native font info m_nativeFontInfo.description = pango_font_description_new(); // And set its values - switch (m_family) + if (!m_faceName.empty()) { - case wxFONTFAMILY_MODERN: - case wxFONTFAMILY_TELETYPE: - pango_font_description_set_family( m_nativeFontInfo.description, "monospace" ); - break; - case wxFONTFAMILY_SWISS: - pango_font_description_set_family( m_nativeFontInfo.description, "serif" ); - break; - default: - pango_font_description_set_family( m_nativeFontInfo.description, "sans" ); - break; + pango_font_description_set_family( m_nativeFontInfo.description, wxGTK_CONV(m_faceName) ); } + else + { + switch (m_family) + { + case wxFONTFAMILY_MODERN: + case wxFONTFAMILY_TELETYPE: + pango_font_description_set_family( m_nativeFontInfo.description, "monospace" ); + break; + case wxFONTFAMILY_ROMAN: + pango_font_description_set_family( m_nativeFontInfo.description, "serif" ); + break; + case wxFONTFAMILY_SWISS: + // SWISS = sans serif + default: + pango_font_description_set_family( m_nativeFontInfo.description, "sans" ); + break; + } + } + SetStyle( m_style ); SetPointSize( m_pointSize ); SetWeight( m_weight ); @@ -215,6 +224,8 @@ void wxFontRefData::Init(int pointSize, void wxFontRefData::InitFromNative() { + m_noAA = FALSE; + #ifdef __WXGTK20__ // Get native info PangoFontDescription *desc = m_nativeFontInfo.description; @@ -267,6 +278,10 @@ void wxFontRefData::InitFromNative() { m_family = wxFONTFAMILY_SWISS; } + else if (m_faceName == wxT("serif")) + { + m_family = wxFONTFAMILY_ROMAN; + } else { m_family = wxFONTFAMILY_UNKNOWN; @@ -391,7 +406,12 @@ wxFontRefData::wxFontRefData( const wxFontRefData& data ) m_faceName = data.m_faceName; m_encoding = data.m_encoding; - m_nativeFontInfo = data.m_nativeFontInfo; + m_noAA = data.m_noAA; + + // Forces a copy of the internal data. wxNativeFontInfo should probably + // have a copy ctor and assignment operator to fix this properly but that + // would break binary compatibility... + m_nativeFontInfo.FromString(data.m_nativeFontInfo.ToString()); } wxFontRefData::wxFontRefData(int size, int family, int style, @@ -414,9 +434,9 @@ wxFontRefData::wxFontRefData(const wxString& fontname) InitFromNative(); } -#ifndef __WXGTK20__ void wxFontRefData::ClearGdkFonts() { +#ifndef __WXGTK20__ for ( wxScaledFontList::iterator i = m_scaled_xfonts.begin(); i != m_scaled_xfonts.end(); ++i ) @@ -426,8 +446,8 @@ void wxFontRefData::ClearGdkFonts() } m_scaled_xfonts.clear(); -} #endif // GTK 1.x +} wxFontRefData::~wxFontRefData() { @@ -522,7 +542,27 @@ void wxFontRefData::SetWeight(int weight) { m_weight = weight; -#ifndef __WXGTK20__ +#ifdef __WXGTK20__ + PangoFontDescription *desc = m_nativeFontInfo.description; + switch ( weight ) + { + case wxFONTWEIGHT_BOLD: + pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD); + break; + + case wxFONTWEIGHT_LIGHT: + pango_font_description_set_weight(desc, PANGO_WEIGHT_LIGHT); + break; + + default: + wxFAIL_MSG( _T("unknown font weight") ); + // fall through + + case wxFONTWEIGHT_NORMAL: + // unspecified + pango_font_description_set_weight(desc, PANGO_WEIGHT_NORMAL); + } +#else //!__WXGTK20__ if ( HasNativeFont() ) { wxString boldness; @@ -597,10 +637,6 @@ void wxFontRefData::SetNativeFontInfo(const wxNativeFontInfo& info) InitFromNative(); } -// ============================================================================ -// wxFont implementation -// ============================================================================ - // ---------------------------------------------------------------------------- // wxFont creation // ---------------------------------------------------------------------------- @@ -624,7 +660,7 @@ wxFont::wxFont(const wxNativeFontInfo& info) info.GetFaceName(), info.GetEncoding() ); #else - Create(info.GetXFontName()); + (void) Create(info.GetXFontName()); #endif } @@ -636,6 +672,8 @@ bool wxFont::Create( int pointSize, const wxString& face, wxFontEncoding encoding) { + UnRef(); + m_refData = new wxFontRefData(pointSize, family, style, weight, underlined, face, encoding); @@ -679,9 +717,6 @@ wxFont::~wxFont() // accessors // ---------------------------------------------------------------------------- -// all accessors are just forwarded to wxFontRefData which has everything we -// need - int wxFont::GetPointSize() const { wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); @@ -731,6 +766,13 @@ wxFontEncoding wxFont::GetEncoding() const return M_FONTDATA->m_encoding; } +bool wxFont::GetNoAntiAliasing() +{ + wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, wxT("invalid font") ); + + return M_FONTDATA->m_noAA; +} + wxNativeFontInfo *wxFont::GetNativeFontInfo() const { wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") ); @@ -814,11 +856,18 @@ void wxFont::SetEncoding(wxFontEncoding encoding) M_FONTDATA->SetEncoding(encoding); } -void wxFont::SetNativeFontInfo(const wxNativeFontInfo& info) +void wxFont::SetNativeFontInfo( const wxNativeFontInfo& info ) { Unshare(); - M_FONTDATA->SetNativeFontInfo(info); + M_FONTDATA->SetNativeFontInfo( info ); +} + +void wxFont::SetNoAntiAliasing( bool no ) +{ + Unshare(); + + M_FONTDATA->SetNoAntiAliasing( no ); } // ---------------------------------------------------------------------------- diff --git a/src/gtk/fontdlg.cpp b/src/gtk/fontdlg.cpp index 4582a5c002..244094a850 100644 --- a/src/gtk/fontdlg.cpp +++ b/src/gtk/fontdlg.cpp @@ -64,6 +64,8 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial wxapp_install_idle_handler(); GtkFontSelectionDialog *fontdlg = GTK_FONT_SELECTION_DIALOG(dialog->m_widget); + +#ifndef __WXGTK20__ GdkFont *gfont = gtk_font_selection_dialog_get_font(fontdlg); if (!gfont) @@ -72,13 +74,10 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial wxOK | wxICON_ERROR); return; } +#endif - gchar *fontname = gtk_font_selection_dialog_get_font_name(fontdlg); - - // printf( "font %s\n", fontname ); - - dialog->SetChosenFont(fontname); - + gchar *fontname = gtk_font_selection_dialog_get_font_name( fontdlg ); + dialog->SetChosenFont( fontname); g_free( fontname ); wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK); @@ -181,7 +180,7 @@ wxFontDialog::~wxFontDialog() void wxFontDialog::SetChosenFont(const char *fontname) { - m_fontData.SetChosenFont(wxFont(fontname)); + m_fontData.SetChosenFont(wxFont( wxString::FromAscii(fontname) )); } #endif // wxUSE_FONTDLG diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index acad4c3355..7e1ed2b2ba 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -45,7 +45,6 @@ // constants // ---------------------------------------------------------------------------- -const int wxMENU_HEIGHT = 27; const int wxSTATUS_HEIGHT = 25; const int wxPLACE_HOLDER = 0; @@ -165,7 +164,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) child->m_y, child->m_width, child->m_height ); - + #if wxUSE_TOOLBAR_NATIVE // We connect to these events for recalculating the client area // space when the toolbar is floating @@ -193,7 +192,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) child->m_width, child->m_height ); } - + // Resize on OnInternalIdle parent->GtkUpdateSize(); } @@ -206,6 +205,7 @@ void wxFrame::Init() { m_menuBarDetached = FALSE; m_toolBarDetached = FALSE; + m_menuBarHeight = 2; } bool wxFrame::Create( wxWindow *parent, @@ -219,6 +219,7 @@ bool wxFrame::Create( wxWindow *parent, bool rt = wxTopLevelWindow::Create(parent, id, title, pos, sizeOrig, style, name); m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame; + return rt; } @@ -245,7 +246,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const if (m_frameMenuBar) { if (!m_menuBarDetached) - (*height) -= wxMENU_HEIGHT; + (*height) -= m_menuBarHeight; else (*height) -= wxPLACE_HOLDER; } @@ -292,7 +293,7 @@ void wxFrame::DoSetClientSize( int width, int height ) if (m_frameMenuBar) { if (!m_menuBarDetached) - height += wxMENU_HEIGHT; + height += m_menuBarHeight; else height += wxPLACE_HOLDER; } @@ -396,7 +397,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int xx = m_miniEdge; int yy = m_miniEdge + m_miniTitle; int ww = m_width - 2*m_miniEdge; - int hh = wxMENU_HEIGHT; + int hh = m_menuBarHeight; if (m_menuBarDetached) hh = wxPLACE_HOLDER; m_frameMenuBar->m_x = xx; m_frameMenuBar->m_y = yy; @@ -419,7 +420,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), if (m_frameMenuBar) { if (!m_menuBarDetached) - yy += wxMENU_HEIGHT; + yy += m_menuBarHeight; else yy += wxPLACE_HOLDER; } @@ -576,11 +577,34 @@ void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) gtk_signal_connect( GTK_OBJECT(menuBar->m_widget), "child_detached", GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this ); } - + m_frameMenuBar->Show( TRUE ); - } - // resize window in OnInternalIdle + UpdateMenuBarSize(); + } + else + { + m_menuBarHeight = 2; + GtkUpdateSize(); // resize window in OnInternalIdle + } +} + +void wxFrame::UpdateMenuBarSize() +{ + wxASSERT_MSG( m_frameMenuBar, _T("Updating non existant menubar?") ); + + GtkRequisition req; + + req.width = 2; + req.height = 2; + + (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_frameMenuBar->m_widget) )->size_request ) + (m_frameMenuBar->m_widget, &req ); + + m_menuBarHeight = req.height; + + // resize window in OnInternalIdle + GtkUpdateSize(); } diff --git a/src/gtk/gauge.cpp b/src/gtk/gauge.cpp index 917ab60307..f180206c79 100644 --- a/src/gtk/gauge.cpp +++ b/src/gtk/gauge.cpp @@ -15,18 +15,22 @@ #if wxUSE_GAUGE -#include #include //----------------------------------------------------------------------------- // wxGauge //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) +bool wxGauge::Create( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name ) { m_needParent = TRUE; @@ -38,12 +42,13 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, } m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; m_widget = gtk_progress_bar_new(); - if( style & wxGA_VERTICAL) - gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget) , GTK_PROGRESS_BOTTOM_TO_TOP ); + if ( style & wxGA_VERTICAL ) + { + gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget), + GTK_PROGRESS_BOTTOM_TO_TOP ); + } m_parent->DoAddChild( this ); @@ -54,20 +59,31 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, return TRUE; } -void wxGauge::SetRange( int r ) +void wxGauge::DoSetGauge() { - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax, + _T("invalid gauge position in DoSetGauge()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), + m_rangeMax ? ((float)m_gaugePos)/m_rangeMax : 0.); +} + +void wxGauge::SetRange( int range ) +{ + m_rangeMax = range; + if (m_gaugePos > m_rangeMax) + m_gaugePos = m_rangeMax; + + DoSetGauge(); } void wxGauge::SetValue( int pos ) { - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxCHECK_RET( pos <= m_rangeMax, _T("invalid value in wxGauge::SetValue()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + m_gaugePos = pos; + + DoSetGauge(); } int wxGauge::GetRange() const diff --git a/src/gtk/glcanvas.cpp b/src/gtk/glcanvas.cpp index e46cac9e32..ff037160c6 100644 --- a/src/gtk/glcanvas.cpp +++ b/src/gtk/glcanvas.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.cpp +// Name: gtk/glcanvas.cpp // Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWindows and GTK // Author: Robert Roebling // Modified by: // Created: 17/08/98 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -24,7 +24,8 @@ #include "wx/module.h" #include "wx/app.h" -extern "C" { +extern "C" +{ #include "gtk/gtk.h" #include "gdk/gdk.h" #include "gdk/gdkx.h" @@ -58,16 +59,16 @@ wxGLContext::wxGLContext( bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& wxGLCanvas *gc = (wxGLCanvas*) win; XVisualInfo *vi = (XVisualInfo *) gc->m_vi; - - wxCHECK_RET( vi, "invalid visual for OpenGl" ); - + + wxCHECK_RET( vi, _T("invalid visual for OpenGl") ); + m_glContext = glXCreateContext( GDK_DISPLAY(), vi, None, GL_TRUE ); - - wxCHECK_RET( m_glContext, "Couldn't create OpenGl context" ); + + wxCHECK_RET( m_glContext, _T("Couldn't create OpenGl context") ); } -wxGLContext::wxGLContext( - bool WXUNUSED(isRGB), wxWindow *win, +wxGLContext::wxGLContext( + bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& WXUNUSED(palette), const wxGLContext *other /* for sharing display lists */ ) @@ -77,26 +78,28 @@ wxGLContext::wxGLContext( wxGLCanvas *gc = (wxGLCanvas*) win; XVisualInfo *vi = (XVisualInfo *) gc->m_vi; - - wxCHECK_RET( vi, "invalid visual for OpenGl" ); - - if( other != 0 ) - m_glContext = glXCreateContext( GDK_DISPLAY(), vi, other->m_glContext, GL_TRUE ); - else - m_glContext = glXCreateContext( GDK_DISPLAY(), vi, None, GL_TRUE ); - - wxCHECK_RET( m_glContext, "Couldn't create OpenGl context" ); + + wxCHECK_RET( vi, _T("invalid visual for OpenGl") ); + + m_glContext = glXCreateContext( GDK_DISPLAY(), vi, + other ? other->m_glContext : None, + GL_TRUE ); + + if ( !m_glContext ) + { + wxFAIL_MSG( _T("Couldn't create OpenGl context") ); + } } wxGLContext::~wxGLContext() { if (!m_glContext) return; - + if (m_glContext == glXGetCurrentContext()) { glXMakeCurrent( GDK_DISPLAY(), None, NULL); } - + glXDestroyContext( GDK_DISPLAY(), m_glContext ); } @@ -111,14 +114,14 @@ void wxGLContext::SwapBuffers() void wxGLContext::SetCurrent() { - if (m_glContext) - { + if (m_glContext) + { GdkWindow *window = GTK_PIZZA(m_widget)->bin_window; glXMakeCurrent( GDK_DISPLAY(), GDK_WINDOW_XWINDOW(window), m_glContext ); } } -void wxGLContext::SetColour(const char *colour) +void wxGLContext::SetColour(const wxChar *colour) { float r = 0.0; float g = 0.0; @@ -185,10 +188,10 @@ gtk_glwindow_map_callback( GtkWidget * WXUNUSED(widget), wxGLCanvas *win ) // "expose_event" of m_wxwindow //----------------------------------------------------------------------------- -static void +static void gtk_glwindow_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_event, wxGLCanvas *win ) { - if (g_isIdle) + if (g_isIdle) wxapp_install_idle_handler(); win->m_exposed = TRUE; @@ -203,10 +206,10 @@ gtk_glwindow_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_e // "draw" of m_wxwindow //----------------------------------------------------------------------------- -static void +static void gtk_glwindow_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxGLCanvas *win ) { - if (g_isIdle) + if (g_isIdle) wxapp_install_idle_handler(); win->m_exposed = TRUE; @@ -219,7 +222,7 @@ gtk_glwindow_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxG // "size_allocate" of m_wxwindow //----------------------------------------------------------------------------- -static void +static void gtk_glcanvas_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxGLCanvas *win ) { if (g_isIdle) @@ -244,77 +247,80 @@ BEGIN_EVENT_TABLE(wxGLCanvas, wxWindow) END_EVENT_TABLE() wxGLCanvas::wxGLCanvas( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette ) { Create( parent, NULL, NULL, id, pos, size, style, name, attribList, palette ); } -wxGLCanvas::wxGLCanvas( wxWindow *parent, +wxGLCanvas::wxGLCanvas( wxWindow *parent, const wxGLContext *shared, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) -{ + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette ) +{ Create( parent, shared, NULL, id, pos, size, style, name, attribList, palette ); } -wxGLCanvas::wxGLCanvas( wxWindow *parent, +wxGLCanvas::wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) -{ + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette ) +{ Create( parent, NULL, shared, id, pos, size, style, name, attribList, palette ); } -bool wxGLCanvas::Create( wxWindow *parent, +bool wxGLCanvas::Create( wxWindow *parent, const wxGLContext *shared, const wxGLCanvas *shared_context_of, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette) + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette) { m_sharedContext = (wxGLContext*)shared; // const_cast m_sharedContextOf = (wxGLCanvas*)shared_context_of; // const_cast m_glContext = (wxGLContext*) NULL; - + m_exposed = FALSE; m_noExpose = TRUE; m_nativeSizeEvent = TRUE; - + XVisualInfo *vi = NULL; - if (wxTheApp->m_glVisualInfo != NULL) { - vi = (XVisualInfo *) wxTheApp->m_glVisualInfo; + if (wxTheApp->m_glVisualInfo != NULL) + { + vi = (XVisualInfo *) wxTheApp->m_glVisualInfo; m_canFreeVi = FALSE; // owned by wxTheApp - don't free upon destruction - } else { + } + else + { vi = (XVisualInfo *) ChooseGLVisual(attribList); m_canFreeVi = TRUE; } m_vi = vi; // save for later use - - wxCHECK_MSG( m_vi, FALSE, "required visual couldn't be found" ); + + wxCHECK_MSG( m_vi, FALSE, _T("required visual couldn't be found") ); GdkVisual *visual = gdkx_visual_get( vi->visualid ); GdkColormap *colormap = gdk_colormap_new( gdkx_visual_get(vi->visualid), TRUE ); - + gtk_widget_push_colormap( colormap ); gtk_widget_push_visual( visual ); wxWindow::Create( parent, id, pos, size, style, name ); m_glWidget = m_wxwindow; - + gtk_pizza_set_clear( GTK_PIZZA(m_wxwindow), FALSE ); - + gtk_signal_connect( GTK_OBJECT(m_wxwindow), "realize", GTK_SIGNAL_FUNC(gtk_glwindow_realized_callback), (gpointer) this ); @@ -326,26 +332,26 @@ bool wxGLCanvas::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw", GTK_SIGNAL_FUNC(gtk_glwindow_draw_callback), (gpointer)this ); - + gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", GTK_SIGNAL_FUNC(gtk_glcanvas_size_callback), (gpointer)this ); gtk_widget_pop_visual(); gtk_widget_pop_colormap(); - + if (GTK_WIDGET_REALIZED(m_wxwindow)) gtk_glwindow_realized_callback( m_wxwindow, this ); - + if (GTK_WIDGET_MAPPED(m_wxwindow)) gtk_glwindow_map_callback( m_wxwindow, this ); - + return TRUE; } wxGLCanvas::~wxGLCanvas() { XVisualInfo *vi = (XVisualInfo *) m_vi; - + if (vi && m_canFreeVi) XFree( vi ); if (m_glContext) delete m_glContext; } @@ -365,12 +371,12 @@ void* wxGLCanvas::ChooseGLVisual(int *attribList) data[10] = GLX_ALPHA_SIZE; data[11] = 0; data[12] = None; - attribList = (int*) data; + attribList = (int*) data; } else { int arg=0, p=0; - + while( (attribList[arg]!=0) && (p<510) ) { switch( attribList[arg++] ) @@ -392,9 +398,9 @@ void* wxGLCanvas::ChooseGLVisual(int *attribList) data[p++]=GLX_BLUE_SIZE; data[p++]=attribList[arg++]; break; case WX_GL_MIN_ALPHA: data[p++]=GLX_ALPHA_SIZE; data[p++]=attribList[arg++]; break; - case WX_GL_DEPTH_SIZE: + case WX_GL_DEPTH_SIZE: data[p++]=GLX_DEPTH_SIZE; data[p++]=attribList[arg++]; break; - case WX_GL_STENCIL_SIZE: + case WX_GL_STENCIL_SIZE: data[p++]=GLX_STENCIL_SIZE; data[p++]=attribList[arg++]; break; case WX_GL_MIN_ACCUM_RED: data[p++]=GLX_ACCUM_RED_SIZE; data[p++]=attribList[arg++]; break; @@ -407,21 +413,22 @@ void* wxGLCanvas::ChooseGLVisual(int *attribList) default: break; } - } - data[p] = 0; + } + data[p] = 0; attribList = (int*) data; } - - + + Display *dpy = GDK_DISPLAY(); - + return glXChooseVisual( dpy, DefaultScreen(dpy), attribList ); } void wxGLCanvas::SwapBuffers() { - if (m_glContext) m_glContext->SwapBuffers(); + if (m_glContext) + m_glContext->SwapBuffers(); } void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event)) @@ -430,12 +437,14 @@ void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event)) void wxGLCanvas::SetCurrent() { - if (m_glContext) m_glContext->SetCurrent(); + if (m_glContext) + m_glContext->SetCurrent(); } -void wxGLCanvas::SetColour( const char *colour ) +void wxGLCanvas::SetColour( const wxChar *colour ) { - if (m_glContext) m_glContext->SetColour( colour ); + if (m_glContext) + m_glContext->SetColour( colour ); } void wxGLCanvas::OnInternalIdle() @@ -449,7 +458,7 @@ void wxGLCanvas::OnInternalIdle() m_exposed = FALSE; GetUpdateRegion().Clear(); } - + wxWindow::OnInternalIdle(); } @@ -460,17 +469,21 @@ void wxGLCanvas::OnInternalIdle() //--------------------------------------------------------------------------- IMPLEMENT_CLASS(wxGLApp, wxApp) - + wxGLApp::~wxGLApp() { - if (m_glVisualInfo) XFree(m_glVisualInfo); + if (m_glVisualInfo) + XFree(m_glVisualInfo); } bool wxGLApp::InitGLVisual(int *attribList) { - if (m_glVisualInfo) XFree(m_glVisualInfo); + if (m_glVisualInfo) + XFree(m_glVisualInfo); + m_glVisualInfo = wxGLCanvas::ChooseGLVisual(attribList); - return (m_glVisualInfo != NULL); + + return m_glVisualInfo != NULL; } #endif diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index 3ad658a264..46808ec081 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -1057,7 +1057,7 @@ wxSize wxListBox::DoGetBestSize() const // And just a bit more int cx, cy; - GetTextExtent("X", &cx, &cy); + GetTextExtent( wxT("X"), &cx, &cy); lbWidth += 3 * cx; // don't make the listbox too tall (limit height to around 10 items) but don't diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 886522158e..91a51708db 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -113,9 +113,16 @@ static wxString wxReplaceUnderscore( const wxString& title ) /* GTK 1.2 wants to have "_" instead of "&" for accelerators */ wxString str; - for ( pc = title; *pc != wxT('\0'); pc++ ) + pc = title; + while (*pc != wxT('\0')) { - if (*pc == wxT('&')) + if ((*pc == wxT('&')) && (*(pc+1) == wxT('&'))) + { + // "&" is doubled to indicate "&" instead of accelerator + ++pc; + str << wxT('&'); + } + else if (*pc == wxT('&')) { #if GTK_CHECK_VERSION(1, 2, 0) str << wxT('_'); @@ -138,7 +145,7 @@ static wxString wxReplaceUnderscore( const wxString& title ) #endif else { -#if __WXGTK12__ +#ifdef __WXGTK12__ if ( *pc == wxT('_') ) { // underscores must be doubled to prevent them from being @@ -149,10 +156,29 @@ static wxString wxReplaceUnderscore( const wxString& title ) str << *pc; } + ++pc; } return str; } +//----------------------------------------------------------------------------- +// activate message from GTK +//----------------------------------------------------------------------------- + +static void gtk_menu_open_callback( GtkWidget *widget, wxMenu *menu ) +{ + if (g_isIdle) wxapp_install_idle_handler(); + + wxMenuEvent event( wxEVT_MENU_OPEN, -1 ); + event.SetEventObject( menu ); + + if (menu->GetEventHandler()->ProcessEvent(event)) + return; + + wxWindow *win = menu->GetInvokingWindow(); + if (win) win->GetEventHandler()->ProcessEvent( event ); +} + //----------------------------------------------------------------------------- // wxMenuBar //----------------------------------------------------------------------------- @@ -384,11 +410,28 @@ bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title) #endif + gtk_signal_connect( GTK_OBJECT(menu->m_owner), "activate", + GTK_SIGNAL_FUNC(gtk_menu_open_callback), + (gpointer)menu ); + // m_invokingWindow is set after wxFrame::SetMenuBar(). This call enables - // adding menu later on. + // addings menu later on. if (m_invokingWindow) + { wxMenubarSetInvokingWindow( menu, m_invokingWindow ); + // OPTIMISE ME: we should probably cache this, or pass it + // directly, but for now this is a minimal + // change to validate the new dynamic sizing. + // see (and refactor :) similar code in Remove + // below. + + wxFrame *frame = wxDynamicCast( m_invokingWindow, wxFrame ); + + if( frame ) + frame->UpdateMenuBarSize(); + } + return TRUE; } @@ -427,6 +470,36 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) return menuOld; } +static wxMenu *CopyMenu (wxMenu *menu) +{ + wxMenu *menucopy = new wxMenu (); + wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); + while (node) + { + wxMenuItem *item = node->GetData(); + int itemid = item->GetId(); + wxString text = item->GetText(); + text.Replace(wxT("_"), wxT("&")); + wxMenu *submenu = item->GetSubMenu(); + if (!submenu) + { + wxMenuItem* itemcopy = new wxMenuItem(menucopy, + itemid, text, + menu->GetHelpString(itemid)); + itemcopy->SetBitmap(item->GetBitmap()); + itemcopy->SetCheckable(item->IsCheckable()); + menucopy->Append(itemcopy); + } + else + menucopy->Append (itemid, text, CopyMenu(submenu), + menu->GetHelpString(itemid)); + + node = node->GetNext(); + } + + return menucopy; +} + wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); @@ -440,18 +513,32 @@ wxMenu *wxMenuBar::Remove(size_t pos) printf( "menu shell entries before %d\n", (int)g_list_length( menu_shell->children ) ); */ + wxMenu *menucopy = CopyMenu( menu ); + // unparent calls unref() and that would delete the widget so we raise // the ref count to 2 artificially before invoking unparent. gtk_widget_ref( menu->m_menu ); gtk_widget_unparent( menu->m_menu ); gtk_widget_destroy( menu->m_owner ); + delete menu; + menu = menucopy; /* printf( "factory entries after %d\n", (int)g_slist_length(m_factory->items) ); printf( "menu shell entries after %d\n", (int)g_list_length( menu_shell->children ) ); */ + if (m_invokingWindow) + { + // OPTIMISE ME: see comment in GtkAppend + + wxFrame *frame = wxDynamicCast( m_invokingWindow, wxFrame ); + + if( frame ) + frame->UpdateMenuBarSize(); + } + return menu; } @@ -554,13 +641,15 @@ wxString wxMenuBar::GetLabelTop( size_t pos ) const wxString text( menu->GetTitle() ); for ( const wxChar *pc = text.c_str(); *pc; pc++ ) { - if ( *pc == wxT('_') || *pc == wxT('&') ) + if ( *pc == wxT('_') ) { - // '_' is the escape character for GTK+ and '&' is the one for - // wxWindows - skip both of them + // '_' is the escape character for GTK+ continue; } + // don't remove ampersands '&' since if we have them in the menu title + // it means that they were doubled to indicate "&" instead of accelerator + label += *pc; } @@ -748,23 +837,33 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text) for ( const wxChar *pc = text.c_str(); *pc; pc++ ) { - if ( *pc == wxT('_') ) + if ( *pc == wxT('_') ) { - // wxGTK escapes "xxx_xxx" to "xxx__xxx" + // GTK 1.2 escapes "xxx_xxx" to "xxx__xxx" pc++; label += *pc; continue; } - if ( *pc == wxT('&') ) +#if GTK_CHECK_VERSION(2, 0, 0) + if ( *pc == wxT('\\') ) { - // wxMSW escapes & + // GTK 2.0 escapes "xxx/xxx" to "xxx\/xxx" + pc++; + label += *pc; continue; } +#endif + if ( (*pc == wxT('&')) && (*(pc+1) != wxT('&')) ) + { + // wxMSW escapes "&" + // "&" is doubled to indicate "&" instead of accelerator + continue; + } + label += *pc; } - return label; } @@ -784,42 +883,54 @@ void wxMenuItem::SetText( const wxString& str ) { GtkLabel *label; if (m_labelWidget) - label = (GtkLabel*) m_labelWidget; + label = (GtkLabel*) m_labelWidget; else - label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); + label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); - /* set new text */ +#if GTK_CHECK_VERSION(2, 0, 0) + // We have to imitate item_factory_unescape_label here + wxString tmp; + for (size_t n = 0; n < m_text.Len(); n++) + { + if (m_text[n] != wxT('\\')) + tmp += m_text[n]; + } + + gtk_label_set_text_with_mnemonic( GTK_LABEL(label), wxGTK_CONV(tmp) ); +#else + // set new text gtk_label_set( label, wxGTK_CONV( m_text ) ); - /* reparse key accel */ - (void)gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV( m_text ) ); + // reparse key accel + (void)gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV(m_text) ); gtk_accel_label_refetch( GTK_ACCEL_LABEL(label) ); +#endif } } // it's valid for this function to be called even if m_menuItem == NULL void wxMenuItem::DoSetText( const wxString& str ) { - /* '\t' is the deliminator indicating a hot key */ + // '\t' is the deliminator indicating a hot key m_text.Empty(); const wxChar *pc = str; - for (; (*pc != wxT('\0')) && (*pc != wxT('\t')); pc++ ) + while ( (*pc != wxT('\0')) && (*pc != wxT('\t')) ) { -#if GTK_CHECK_VERSION(1, 2, 0) - if (*pc == wxT('&')) + if ((*pc == wxT('&')) && (*(pc+1) == wxT('&'))) + { + // "&" is doubled to indicate "&" instead of accelerator + ++pc; + m_text << wxT('&'); + } + else if (*pc == wxT('&')) { m_text << wxT('_'); } +#if GTK_CHECK_VERSION(2, 0, 0) else if ( *pc == wxT('_') ) // escape underscores { - m_text << wxT("__"); + m_text << wxT("__"); } -#else // GTK+ < 1.2.0 - if (*pc == wxT('&')) - { - } -#endif -#if GTK_CHECK_VERSION(2, 0, 0) else if (*pc == wxT('/')) // we have to escape slashes { m_text << wxT("\\/"); @@ -828,16 +939,22 @@ void wxMenuItem::DoSetText( const wxString& str ) { m_text << wxT("\\\\"); } -#elif GTK_CHECK_VERSION(1, 2, 0) +#else + else if ( *pc == wxT('_') ) // escape underscores + { + m_text << wxT("__"); + } else if (*pc == wxT('/')) /* we have to filter out slashes ... */ { m_text << wxT('\\'); /* ... and replace them with back slashes */ } #endif - else + else { m_text << *pc; + } + ++pc; } - + m_hotKey = wxT(""); if(*pc == wxT('\t')) @@ -913,12 +1030,19 @@ wxString wxMenuItem::GetFactoryPath() const for ( const wxChar *pc = m_text.c_str(); *pc; pc++ ) { - if ( *pc == wxT('_') || *pc == wxT('&') ) + if ( *pc == wxT('_') ) { - // remove '_' and '&' unconditionally +#ifdef __WXGTK20__ + pc++; +#else + // remove '_' unconditionally continue; +#endif } + // don't remove ampersands '&' since if we have them in the menu item title + // it means that they were doubled to indicate "&" instead of accelerator + path += *pc; } @@ -1042,7 +1166,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) guint accel_key = gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV( text ) ); gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), menuItem); if (accel_key != GDK_VoidSymbol) - { + { gtk_widget_add_accelerator (menuItem, "activate_item", gtk_menu_ensure_uline_accel_group (GTK_MENU (m_menu)), @@ -1060,6 +1184,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) gtk_signal_connect( GTK_OBJECT(menuItem), "activate", GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), (gpointer)this ); + gtk_menu_append( GTK_MENU(m_menu), menuItem ); gtk_widget_show( menuItem ); @@ -1097,7 +1222,9 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) { // start of a new radio group item_type = ""; - m_pathLastRadio = bufPath + 1; + wxString tmp( wxGTK_CONV_BACK( bufPath ) ); + tmp.Remove(0,1); + m_pathLastRadio = tmp; } else // continue the radio group { @@ -1143,10 +1270,15 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) wxString path( mitem->GetFactoryPath() ); menuItem = gtk_item_factory_get_widget( m_factory, wxGTK_CONV( path ) ); + + if (!menuItem) + wxLogError( wxT("Wrong menu path: %s\n"), path.c_str() ); } if ( !mitem->IsSeparator() ) { + wxASSERT_MSG( menuItem, wxT("invalid menuitem") ); + gtk_signal_connect( GTK_OBJECT(menuItem), "select", GTK_SIGNAL_FUNC(gtk_menu_hilight_callback), (gpointer)this ); @@ -1283,6 +1415,33 @@ static wxString GetHotKey( const wxMenuItem& item ) case WXK_DELETE: hotkey << wxT("Delete" ); break; + case WXK_UP: + hotkey << wxT("Up" ); + break; + case WXK_DOWN: + hotkey << wxT("Down" ); + break; + case WXK_PAGEUP: + hotkey << wxT("Prior" ); + break; + case WXK_PAGEDOWN: + hotkey << wxT("Next" ); + break; + case WXK_LEFT: + hotkey << wxT("Left" ); + break; + case WXK_RIGHT: + hotkey << wxT("Right" ); + break; + case WXK_HOME: + hotkey << wxT("Home" ); + break; + case WXK_END: + hotkey << wxT("End" ); + break; + case WXK_RETURN: + hotkey << wxT("Return" ); + break; // if there are any other keys wxGetAccelFromString() may // return, we should process them here @@ -1290,7 +1449,7 @@ static wxString GetHotKey( const wxMenuItem& item ) default: if ( code < 127 ) { - gchar *name = gdk_keyval_name((guint)code); + wxString name = wxGTK_CONV_BACK( gdk_keyval_name((guint)code) ); if ( name ) { hotkey << name; diff --git a/src/gtk/minifram.cpp b/src/gtk/minifram.cpp index 2e98dd832e..c23782237b 100644 --- a/src/gtk/minifram.cpp +++ b/src/gtk/minifram.cpp @@ -82,28 +82,28 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g 0, 0, win->m_width, win->m_height ); - if (!win->m_title.IsEmpty() && + if (!win->GetTitle().IsEmpty() && ((win->GetWindowStyle() & wxCAPTION) || (win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) || (win->GetWindowStyle() & wxTINY_CAPTION_VERT))) { + wxClientDC dc(win); + dc.SetFont( *wxSMALL_FONT ); + int height = dc.GetCharHeight(); + GdkGC *gc = gdk_gc_new( pizza->bin_window ); - GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0); - gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] ); gdk_draw_rectangle( pizza->bin_window, gc, TRUE, 3, 3, win->m_width - 7, - font->ascent + font->descent+1 ); - - gdk_gc_set_foreground( gc, &widget->style->fg[GTK_STATE_SELECTED] ); - gdk_draw_string( pizza->bin_window, font, gc, - 6, - 3+font->ascent, - wxGTK_CONV( win->m_title ) ); - + height+1 ); gdk_gc_unref( gc ); + + // Hack alert + dc.m_window = pizza->bin_window; + dc.SetTextForeground( *wxWHITE ); + dc.DrawText( win->GetTitle(), 6, 3 ); } } @@ -111,6 +111,7 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g // "draw" of m_mainWidget //----------------------------------------------------------------------------- +#ifndef __WXGTK20__ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNUSED(rect), wxFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -131,25 +132,26 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU (win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) || (win->GetWindowStyle() & wxTINY_CAPTION_VERT))) { + wxClientDC dc(win); + dc.SetFont( *wxSMALL_FONT ); + int height = dc.GetCharHeight(); + GdkGC *gc = gdk_gc_new( pizza->bin_window ); - GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0); - gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] ); gdk_draw_rectangle( pizza->bin_window, gc, TRUE, 3, 3, win->m_width - 7, - font->ascent + font->descent+1 ); - - gdk_gc_set_foreground( gc, &widget->style->fg[GTK_STATE_SELECTED] ); - gdk_draw_string( pizza->bin_window, font, gc, - 6, - 3+font->ascent, - wxGTK_CONV( win->m_title ) ); - + height+1 ); gdk_gc_unref( gc ); + + // Hack alert + dc.m_window = pizza->bin_window; + dc.SetTextForeground( *wxWHITE ); + dc.DrawText( win->GetTitle(), 6, 3 ); } } +#endif //----------------------------------------------------------------------------- // "button_press_event" of m_mainWidget @@ -167,9 +169,11 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton GtkPizza *pizza = GTK_PIZZA(widget); if (gdk_event->window != pizza->bin_window) return TRUE; + + wxClientDC dc(win); + dc.SetFont( *wxSMALL_FONT ); + int height = dc.GetCharHeight() + 1; - GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0); - int height = font->ascent + font->descent+1; if (gdk_event->y > height) return TRUE; gdk_window_raise( win->m_widget->window ); @@ -364,8 +368,10 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title gtk_signal_connect( GTK_OBJECT(m_mainWidget), "expose_event", GTK_SIGNAL_FUNC(gtk_window_own_expose_callback), (gpointer)this ); +#ifndef __WXGTK20__ gtk_signal_connect( GTK_OBJECT(m_mainWidget), "draw", GTK_SIGNAL_FUNC(gtk_window_own_draw_callback), (gpointer)this ); +#endif /* these are required for dragging the mini frame around */ gtk_signal_connect( GTK_OBJECT(m_mainWidget), "button_press_event", diff --git a/src/gtk/notebook.cpp b/src/gtk/notebook.cpp index fe5e541720..78d7159a87 100644 --- a/src/gtk/notebook.cpp +++ b/src/gtk/notebook.cpp @@ -86,14 +86,12 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), gint page, wxNotebook *notebook ) { - static bool s_inPageChange = FALSE; - // are you trying to call SetSelection() from a notebook event handler? // you shouldn't! - wxCHECK_RET( !s_inPageChange, + wxCHECK_RET( !notebook->m_inSwitchPage, _T("gtk_notebook_page_change_callback reentered") ); - s_inPageChange = TRUE; + notebook->m_inSwitchPage = TRUE; if (g_isIdle) wxapp_install_idle_handler(); @@ -123,7 +121,7 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), notebook->GetEventHandler()->ProcessEvent( eventChanged ); } - s_inPageChange = FALSE; + notebook->m_inSwitchPage = FALSE; } //----------------------------------------------------------------------------- @@ -186,10 +184,13 @@ static gint gtk_notebook_key_press_callback( GtkWidget *widget, GdkEventKey *gdk if (!win->m_hasVMT) return FALSE; if (g_blockEventsOnDrag) return FALSE; - /* win is a control: tab can be propagated up */ + // win is a control: tab can be propagated up if ((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) { int sel = win->GetSelection(); + if (sel == -1) + return TRUE; + wxGtkNotebookPage *nb_page = win->GetNotebookPage(sel); wxCHECK_MSG( nb_page, FALSE, _T("invalid selection in wxNotebook") ); @@ -236,6 +237,8 @@ END_EVENT_TABLE() void wxNotebook::Init() { m_padding = 0; + m_inSwitchPage = FALSE; + m_imageList = (wxImageList *) NULL; m_pagesData.DeleteContents( TRUE ); m_selection = -1; diff --git a/src/gtk/popupwin.cpp b/src/gtk/popupwin.cpp index 923a68bbd1..236a69d036 100644 --- a/src/gtk/popupwin.cpp +++ b/src/gtk/popupwin.cpp @@ -160,7 +160,7 @@ bool wxPopupWindow::Create( wxWindow *parent, int style ) m_needParent = FALSE; if (!PreCreation( parent, wxDefaultPosition, wxDefaultSize ) || - !CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, "popup" )) + !CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, wxT("popup") )) { wxFAIL_MSG( wxT("wxPopupWindow creation failed") ); return FALSE; diff --git a/src/gtk/radiobox.cpp b/src/gtk/radiobox.cpp index 26240cc004..5bc55111c2 100644 --- a/src/gtk/radiobox.cpp +++ b/src/gtk/radiobox.cpp @@ -418,7 +418,7 @@ bool wxRadioBox::Show( bool show ) return TRUE; } -int wxRadioBox::FindString( const wxString &s ) const +int wxRadioBox::FindString( const wxString &find ) const { wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid radiobox") ); @@ -428,7 +428,12 @@ int wxRadioBox::FindString( const wxString &s ) const while (node) { GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->Data()) ); - if (s == label->label) +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + if (find == str) return count; count++; @@ -505,7 +510,13 @@ wxString wxRadioBox::GetString( int n ) const GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->Data()) ); - return wxString( label->label ); +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + + return str; } void wxRadioBox::SetLabel( const wxString& label ) @@ -592,7 +603,12 @@ wxString wxRadioBox::GetStringSelection() const { GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->Data()) ); - return label->label; +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + return str; } node = node->Next(); } diff --git a/src/gtk/region.cpp b/src/gtk/region.cpp index 7ca7653e2a..f9ac057cbe 100644 --- a/src/gtk/region.cpp +++ b/src/gtk/region.cpp @@ -191,25 +191,20 @@ bool wxRegion::Union( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) if ( !width || !height ) return TRUE; - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - - if (!m_refData) + if ( !m_refData ) { - m_refData = new wxRegionRefData(); -#ifdef __WXGTK20__ - M_REGIONDATA->m_region = gdk_region_rectangle( &rect ); -#else - M_REGIONDATA->m_region = gdk_region_union_with_rect(wxGdkRegion(), &rect); -#endif + InitRect(x, y, width, height); } else { AllocExclusive(); + GdkRectangle rect; + rect.x = x; + rect.y = y; + rect.width = width; + rect.height = height; + #ifdef __WXGTK20__ gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect ); #else @@ -274,16 +269,11 @@ bool wxRegion::Intersect( const wxRegion& region ) if (!m_refData) { - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); + // intersecting with invalid region doesn't make sense + return FALSE; + } - // leave here - return TRUE; - } - else - { - AllocExclusive(); - } + AllocExclusive(); #ifdef __WXGTK20__ gdk_region_intersect( M_REGIONDATA->m_region, region.GetRegion() ); @@ -315,14 +305,12 @@ bool wxRegion::Subtract( const wxRegion& region ) if (!m_refData) { - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); - } - else - { - AllocExclusive(); + // subtracting from an invalid region doesn't make sense + return FALSE; } + AllocExclusive(); + #ifdef __WXGTK20__ gdk_region_subtract( M_REGIONDATA->m_region, region.GetRegion() ); #else @@ -353,14 +341,11 @@ bool wxRegion::Xor( const wxRegion& region ) if (!m_refData) { - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); - } - else - { - AllocExclusive(); + return FALSE; } + AllocExclusive(); + #ifdef __WXGTK20__ gdk_region_xor( M_REGIONDATA->m_region, region.GetRegion() ); #else @@ -372,6 +357,18 @@ bool wxRegion::Xor( const wxRegion& region ) return TRUE; } +bool wxRegion::Offset( wxCoord x, wxCoord y ) +{ + if (!m_refData) + return FALSE; + + AllocExclusive(); + + gdk_region_offset( M_REGIONDATA->m_region, x, y ); + + return TRUE; +} + // ---------------------------------------------------------------------------- // wxRegion tests // ---------------------------------------------------------------------------- @@ -403,18 +400,6 @@ wxRect wxRegion::GetBox() const return wxRect( x, y, w, h ); } -bool wxRegion::Offset( wxCoord x, wxCoord y ) -{ - if (!m_refData) - return FALSE; - - AllocExclusive(); - - gdk_region_offset( M_REGIONDATA->m_region, x, y ); - - return TRUE; -} - bool wxRegion::Empty() const { if (!m_refData) @@ -495,7 +480,7 @@ struct _XRegion { _XBox *rects, extents; }; -#endif +#endif // GTK+ 1.x class wxRIRefData: public wxObjectRefData { @@ -592,42 +577,48 @@ bool wxRegionIterator::HaveRects() const return m_current < ((wxRIRefData*)m_refData)->m_numRects; } -wxRegionIterator::operator bool () const +wxRegionIterator& wxRegionIterator::operator ++ () { - return HaveRects(); + if (HaveRects()) + ++m_current; + + return *this; } -void wxRegionIterator::operator ++ () +wxRegionIterator wxRegionIterator::operator ++ (int) { - if (HaveRects()) ++m_current; -} + wxRegionIterator tmp = *this; + if (HaveRects()) + ++m_current; -void wxRegionIterator::operator ++ (int) -{ - if (HaveRects()) ++m_current; + return tmp; } wxCoord wxRegionIterator::GetX() const { - if( !HaveRects() ) return 0; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].x; } wxCoord wxRegionIterator::GetY() const { - if( !HaveRects() ) return 0; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].y; } wxCoord wxRegionIterator::GetW() const { - if( !HaveRects() ) return -1; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].width; } wxCoord wxRegionIterator::GetH() const { - if( !HaveRects() ) return -1; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].height; } diff --git a/src/gtk/scrolbar.cpp b/src/gtk/scrolbar.cpp index 14530aef24..8f13066bf3 100644 --- a/src/gtk/scrolbar.cpp +++ b/src/gtk/scrolbar.cpp @@ -180,6 +180,8 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, PostCreation(); + SetBestSize(size); + SetBackgroundColour( parent->GetBackgroundColour() ); Show( TRUE ); diff --git a/src/gtk/scrolwin.cpp b/src/gtk/scrolwin.cpp index a072691442..a18ec663f7 100644 --- a/src/gtk/scrolwin.cpp +++ b/src/gtk/scrolwin.cpp @@ -313,7 +313,7 @@ bool wxScrolledWindow::Create(wxWindow *parent, PostCreation(); Show( TRUE ); - + return TRUE; } @@ -349,8 +349,12 @@ void wxScrolledWindow::SetScrollbars( int pixelsPerUnitX, int pixelsPerUnitY, m_hAdjust->value = m_xScrollPosition = xPos; m_vAdjust->value = m_yScrollPosition = yPos; + // Setting hints here should arguably be deprecated, but without it + // a sizer might override this manual scrollbar setting in old code. m_targetWindow->SetVirtualSizeHints( noUnitsX * pixelsPerUnitX, noUnitsY * pixelsPerUnitY ); + m_targetWindow->SetVirtualSize( noUnitsX * pixelsPerUnitX, noUnitsY * pixelsPerUnitY ); + if (!noRefresh) { int new_x = m_xScrollPixelsPerLine * m_xScrollPosition; @@ -381,13 +385,16 @@ void wxScrolledWindow::AdjustScrollbars() // If the scrollbar hits the right side, move the window // right to keep it from over extending. - if( m_hAdjust->value + m_hAdjust->page_size > m_hAdjust->upper ) + if ((m_hAdjust->value != 0.0) && (m_hAdjust->value + m_hAdjust->page_size > m_hAdjust->upper)) { + m_hAdjust->value = m_hAdjust->upper - m_hAdjust->page_size; + if (m_hAdjust->value < 0.0) + m_hAdjust->value = 0.0; + if (GetChildren().GetCount() == 0) - { - m_hAdjust->value = m_hAdjust->upper - m_hAdjust->page_size; - m_xScrollPosition = (int)m_hAdjust->value; - } + m_xScrollPosition = (int)m_hAdjust->value; // This is enough without child windows + else + gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" ); // Actually scroll window } } @@ -401,13 +408,16 @@ void wxScrolledWindow::AdjustScrollbars() m_vAdjust->upper = vh / m_yScrollPixelsPerLine; m_vAdjust->page_size = (h / m_yScrollPixelsPerLine); - if( m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper ) + if ((m_vAdjust->value != 0.0) && (m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper)) { + m_vAdjust->value = m_vAdjust->upper - m_vAdjust->page_size; + if (m_vAdjust->value < 0.0) + m_vAdjust->value = 0.0; + if (GetChildren().GetCount() == 0) - { - m_vAdjust->value = m_vAdjust->upper - m_vAdjust->page_size; - m_yScrollPosition = (int)m_vAdjust->value; - } + m_yScrollPosition = (int)m_vAdjust->value; + else + gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" ); } } @@ -823,10 +833,17 @@ bool wxScrolledWindow::Layout() // Default OnSize resets scrollbars, if any void wxScrolledWindow::OnSize(wxSizeEvent& WXUNUSED(event)) { - if( m_targetWindow != this ) - m_targetWindow->SetVirtualSize( m_targetWindow->GetClientSize() ); + if( GetAutoLayout() ) + { + if( m_targetWindow != this ) + m_targetWindow->FitInside(); - SetVirtualSize( GetClientSize() ); + FitInside(); + } + else + { + AdjustScrollbars(); + } } // This calls OnDraw, having adjusted the origin according to the current @@ -849,7 +866,7 @@ void wxScrolledWindow::OnChar(wxKeyEvent& event) szx, szy, // view size (total) clix, cliy; // view size (on screen) - ViewStart(&stx, &sty); + GetViewStart(&stx, &sty); GetClientSize(&clix, &cliy); GetVirtualSize(&szx, &szy); diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index 9aed45b5a9..227599ef0b 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -16,6 +16,7 @@ #include "wx/debug.h" #include "wx/module.h" #include "wx/cmndata.h" +#include "wx/fontutil.h" #include #include @@ -326,8 +327,12 @@ wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) { if (!g_systemFont) { +#ifdef __WXGTK20__ + const gchar *font_name = _gtk_rc_context_get_default_font_name (gtk_settings_get_default ()); + g_systemFont = new wxFont( wxString::FromAscii( font_name ) ); +#else g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL ); - +#endif } return *g_systemFont; } diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index 9f59575679..799f21d2b1 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -255,14 +255,15 @@ int wxSlider::GetLineSize() const bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) { GtkRange *range = GTK_RANGE(m_widget); +#ifdef __WXGTK20__ + return (range->event_window == window); +#else return ( (window == GTK_WIDGET(range)->window) -#ifndef __WXGTK20__ || (window == range->trough) || (window == range->slider) || (window == range->step_forw) - || (window == range->step_back) -#endif // GTK+ 1.x - ); + || (window == range->step_back) ); +#endif } void wxSlider::ApplyWidgetStyle() diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index 235319eb16..2ce4bc754c 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -278,6 +278,10 @@ bool wxToolBar::Create( wxWindow *parent, #ifdef __WXGTK20__ m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() ); GtkSetStyle(); + + // Doesn't work this way. + // GtkToolbarSpaceStyle space_style = GTK_TOOLBAR_SPACE_EMPTY; + // gtk_widget_style_set (GTK_WIDGET (m_toolbar), "space_style", &space_style, NULL); #else GtkOrientation orient; GtkToolbarStyle gtkStyle; @@ -339,8 +343,6 @@ bool wxToolBar::Create( wxWindow *parent, g_style->bg[GTK_STATE_NORMAL] = *m_bg; - SET_STYLE_FONT(g_style, GtkGetDefaultGuiFont()); - gtk_widget_set_style( GTK_TOOLBAR(m_toolbar)->tooltips->tip_window, g_style ); m_parent->DoAddChild( this ); @@ -374,37 +376,44 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) { wxToolBarTool *tool = (wxToolBarTool *)toolBase; +#ifndef __WXGTK20__ // if we have inserted a space before all the tools we must change the GTK // index by 1 size_t posGtk = m_xMargin > 1 ? pos + 1 : pos; +#else + size_t posGtk = pos; +#endif if ( tool->IsButton() ) { - wxBitmap bitmap = tool->GetNormalBitmap(); + if ( !HasFlag(wxTB_NOICONS) ) + { + wxBitmap bitmap = tool->GetNormalBitmap(); - wxCHECK_MSG( bitmap.Ok(), FALSE, - wxT("invalid bitmap for wxToolBar icon") ); + wxCHECK_MSG( bitmap.Ok(), FALSE, + wxT("invalid bitmap for wxToolBar icon") ); - wxCHECK_MSG( bitmap.GetBitmap() == NULL, FALSE, - wxT("wxToolBar doesn't support GdkBitmap") ); + wxCHECK_MSG( bitmap.GetBitmap() == NULL, FALSE, + wxT("wxToolBar doesn't support GdkBitmap") ); - wxCHECK_MSG( bitmap.GetPixmap() != NULL, FALSE, - wxT("wxToolBar::Add needs a wxBitmap") ); + wxCHECK_MSG( bitmap.GetPixmap() != NULL, FALSE, + wxT("wxToolBar::Add needs a wxBitmap") ); - GtkWidget *tool_pixmap = (GtkWidget *)NULL; + GtkWidget *tool_pixmap = (GtkWidget *)NULL; - GdkPixmap *pixmap = bitmap.GetPixmap(); + GdkPixmap *pixmap = bitmap.GetPixmap(); - GdkBitmap *mask = (GdkBitmap *)NULL; - if ( bitmap.GetMask() ) - mask = bitmap.GetMask()->GetBitmap(); + GdkBitmap *mask = (GdkBitmap *)NULL; + if ( bitmap.GetMask() ) + mask = bitmap.GetMask()->GetBitmap(); - tool_pixmap = gtk_pixmap_new( pixmap, mask ); - gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE ); + tool_pixmap = gtk_pixmap_new( pixmap, mask ); + gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE ); - gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); + gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); - tool->m_pixmap = tool_pixmap; + tool->m_pixmap = tool_pixmap; + } } switch ( tool->GetStyle() ) @@ -464,7 +473,7 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) return FALSE; } - + gtk_signal_connect( GTK_OBJECT(tool->m_item), "enter_notify_event", GTK_SIGNAL_FUNC(gtk_toolbar_tool_callback), @@ -587,8 +596,10 @@ void wxToolBar::SetMargins( int x, int y ) wxCHECK_RET( GetToolsCount() == 0, wxT("wxToolBar::SetMargins must be called before adding tools.") ); +#ifndef __WXGTK20__ if (x > 1) gtk_toolbar_append_space( m_toolbar ); // oh well +#endif m_xMargin = x; m_yMargin = y; diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 034a4cce4a..1afca19c49 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -18,6 +18,7 @@ #include "wx/settings.h" #include "wx/panel.h" #include "wx/strconv.h" +#include "wx/fontutil.h" // for wxNativeFontInfo (GetNativeFontInfo()) #include #include @@ -46,7 +47,48 @@ extern wxWindowGTK *g_delayedFocus; // helpers // ---------------------------------------------------------------------------- -#ifndef __WXGTK20__ +#ifdef __WXGTK20__ +static void wxGtkTextInsert(GtkWidget *text, + GtkTextBuffer *text_buffer, + const wxTextAttr& attr, + wxCharBuffer buffer) + +{ + PangoFontDescription *font_description = attr.HasFont() + ? attr.GetFont().GetNativeFontInfo()->description + : NULL; + + GdkColor *colFg = attr.HasTextColour() ? attr.GetTextColour().GetColor() + : NULL; + + GdkColor *colBg = attr.HasBackgroundColour() + ? attr.GetBackgroundColour().GetColor() + : NULL; + + GtkTextIter start, end; + GtkTextMark *mark; + // iterators are invalidated by any mutation that affects 'indexable' buffer contents, + // so we save current position in a mark + // we need a mark of left gravity, so we cannot use + // mark = gtk_text_buffer_get_insert (text_buffer) + + gtk_text_buffer_get_iter_at_mark( text_buffer, &start, + gtk_text_buffer_get_insert (text_buffer) ); + mark = gtk_text_buffer_create_mark( text_buffer, NULL, &start, TRUE/*left gravity*/ ); + + gtk_text_buffer_insert_at_cursor( text_buffer, buffer, strlen(buffer) ); + + gtk_text_buffer_get_iter_at_mark( text_buffer, &end, + gtk_text_buffer_get_insert (text_buffer) ); + gtk_text_buffer_get_iter_at_mark( text_buffer, &start, mark ); + + GtkTextTag *tag; + tag = gtk_text_buffer_create_tag( text_buffer, NULL, "font-desc", font_description, + "foreground-gdk", colFg, + "background-gdk", colBg, NULL ); + gtk_text_buffer_apply_tag( text_buffer, tag, &start, &end ); +} +#else static void wxGtkTextInsert(GtkWidget *text, const wxTextAttr& attr, const char *txt, @@ -424,10 +466,8 @@ bool wxTextCtrl::Create( wxWindow *parent, m_cursor = wxCursor( wxCURSOR_IBEAM ); -#ifndef __WXGTK20__ wxTextAttr attrDef( colFg, m_backgroundColour, parent->GetFont() ); SetDefaultStyle( attrDef ); -#endif Show( TRUE ); @@ -475,7 +515,7 @@ wxString wxTextCtrl::GetValue() const GtkTextIter end; gtk_text_buffer_get_end_iter( text_buffer, &end ); gchar *text = gtk_text_buffer_get_text( text_buffer, &start, &end, TRUE ); - + #if wxUSE_UNICODE wxWCharBuffer buffer( wxConvUTF8.cMB2WX( text ) ); #else @@ -552,7 +592,14 @@ void wxTextCtrl::WriteText( const wxString &text ) wxCharBuffer buffer( wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ) ); #endif GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); - gtk_text_buffer_insert_at_cursor( text_buffer, buffer, strlen(buffer) ); + + // TODO: Call whatever is needed to delete the selection. + wxGtkTextInsert( m_text, text_buffer, m_defaultStyle, buffer ); + + // Scroll to cursor. + GtkTextIter iter; + gtk_text_buffer_get_iter_at_mark( text_buffer, &iter, gtk_text_buffer_get_insert( text_buffer ) ); + gtk_text_view_scroll_to_iter( GTK_TEXT_VIEW(m_text), &iter, 0.0, FALSE, 0.0, 1.0 ); #else // GTK 1.x // After cursor movements, gtk_text_get_point() is wrong by one. @@ -561,6 +608,7 @@ void wxTextCtrl::WriteText( const wxString &text ) // always use m_defaultStyle, even if it is empty as otherwise // resetting the style and appending some more text wouldn't work: if // we don't specify the style explicitly, the old style would be used + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); wxGtkTextInsert(m_text, m_defaultStyle, text.c_str(), text.Len()); // Bring editable's cursor back uptodate. @@ -569,6 +617,9 @@ void wxTextCtrl::WriteText( const wxString &text ) } else // single line { + // First remove the selection if there is one + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); + // This moves the cursor pos to behind the inserted text. gint len = GET_EDITABLE_POS(m_text); @@ -585,9 +636,6 @@ void wxTextCtrl::WriteText( const wxString &text ) gtk_editable_insert_text( GTK_EDITABLE(m_text), text.c_str(), text.Len(), &len ); #endif - // Bring editable's cursor uptodate. - len += text.Len(); - // Bring entry's cursor uptodate. gtk_entry_set_position( GTK_ENTRY(m_text), len ); } @@ -928,6 +976,12 @@ void wxTextCtrl::SetSelection( long from, long to ) { wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") ); + if (from == -1 && to == -1) + { + from = 0; + to = GetValue().Length(); + } + #ifndef __WXGTK20__ if ( (m_windowStyle & wxTE_MULTILINE) && !GTK_TEXT(m_text)->line_start_cache ) @@ -1318,17 +1372,51 @@ bool wxTextCtrl::SetBackgroundColour( const wxColour &colour ) bool wxTextCtrl::SetStyle( long start, long end, const wxTextAttr& style ) { - /* VERY dirty way to do that - removes the required text and re-adds it - with styling (FIXME) */ if ( m_windowStyle & wxTE_MULTILINE ) { -#ifndef __WXGTK20__ if ( style.IsDefault() ) { // nothing to do return TRUE; } +#ifdef __WXGTK20__ + GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); + gint l = gtk_text_buffer_get_char_count( text_buffer ); + wxCHECK_MSG( start >= 0 && end <= l, FALSE, + _T("invalid range in wxTextCtrl::SetStyle") ); + + GtkTextIter starti, endi; + gtk_text_buffer_get_iter_at_offset( text_buffer, &starti, start ); + gtk_text_buffer_get_iter_at_offset( text_buffer, &endi, end ); + + // use the attributes from style which are set in it and fall back + // first to the default style and then to the text control default + // colours for the others + wxTextAttr attr = wxTextAttr::Combine(style, m_defaultStyle, this); + + PangoFontDescription *font_description = attr.HasFont() + ? attr.GetFont().GetNativeFontInfo()->description + : NULL; + + GdkColor *colFg = attr.HasTextColour() ? attr.GetTextColour().GetColor() + : NULL; + + GdkColor *colBg = attr.HasBackgroundColour() + ? attr.GetBackgroundColour().GetColor() + : NULL; + + GtkTextTag *tag; + tag = gtk_text_buffer_create_tag( text_buffer, NULL, "font-desc", font_description, + "foreground-gdk", colFg, + "background-gdk", colBg, NULL ); + gtk_text_buffer_apply_tag( text_buffer, tag, &starti, &endi ); + + return TRUE; +#else + // VERY dirty way to do that - removes the required text and re-adds it + // with styling (FIXME) + gint l = gtk_text_get_length( GTK_TEXT(m_text) ); wxCHECK_MSG( start >= 0 && end <= l, FALSE, diff --git a/src/gtk/tooltip.cpp b/src/gtk/tooltip.cpp index d6577bfb93..a8e42e4d07 100644 --- a/src/gtk/tooltip.cpp +++ b/src/gtk/tooltip.cpp @@ -76,8 +76,6 @@ void wxToolTip::Apply( wxWindow *win ) g_style->fg[GTK_STATE_NORMAL] = ss_fg; g_style->bg[GTK_STATE_NORMAL] = ss_bg; - SET_STYLE_FONT( g_style, GtkGetDefaultGuiFont() ); - gtk_widget_set_style( ss_tooltips->tip_window, g_style ); #else // GTK+ 1.0 gtk_tooltips_set_colors( ss_tooltips, &ss_bg, &ss_fg ); diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 1ca2768d11..ee33e1ef40 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -25,6 +25,7 @@ #include "wx/defs.h" +#include "wx/log.h" #include "wx/dialog.h" #include "wx/control.h" #include "wx/app.h" @@ -446,15 +447,16 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, else { m_gdkDecor = (long) GDK_DECOR_BORDER; - m_gdkFunc = (long) GDK_FUNC_MOVE; + m_gdkFunc = (long) GDK_FUNC_MOVE | GDK_FUNC_CLOSE; // All this is for Motif Window Manager "hints" and is supposed to be // recognized by other WMs as well. if ((style & wxCAPTION) != 0) + { m_gdkDecor |= GDK_DECOR_TITLE; + } if ((style & wxSYSTEM_MENU) != 0) { - m_gdkFunc |= GDK_FUNC_CLOSE; m_gdkDecor |= GDK_DECOR_MENU; } if ((style & wxMINIMIZE_BOX) != 0) @@ -835,6 +837,11 @@ void wxTopLevelWindowGTK::OnInternalIdle() if ( g_delayedFocus && wxGetTopLevelParent((wxWindow*)g_delayedFocus) == this ) { + wxLogTrace(_T("focus"), + _T("Setting focus from wxTLW::OnIdle() to %s(%s)"), + g_delayedFocus->GetClassInfo()->GetClassName(), + g_delayedFocus->GetLabel().c_str()); + g_delayedFocus->SetFocus(); g_delayedFocus = NULL; } diff --git a/src/gtk/treegtk.cpp b/src/gtk/treegtk.cpp index 0b0799b56b..98f7fa7893 100644 --- a/src/gtk/treegtk.cpp +++ b/src/gtk/treegtk.cpp @@ -315,7 +315,7 @@ wxTreeItemId wxTreeCtrl::GetSelection() const { return p; } -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const { +wxTreeItemId wxTreeCtrl::GetItemParent(const wxTreeItemId& item) const { if (item.IsOk()) return (GtkTreeItem *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "parent"); diff --git a/src/gtk/win_gtk.c b/src/gtk/win_gtk.c index 27e2d156bb..fecb23b7f5 100644 --- a/src/gtk/win_gtk.c +++ b/src/gtk/win_gtk.c @@ -310,11 +310,11 @@ gtk_pizza_put (GtkPizza *pizza, pizza->children = g_list_append (pizza->children, child_info); - gtk_widget_set_parent (widget, GTK_WIDGET (pizza)); - if (GTK_WIDGET_REALIZED (pizza)) gtk_widget_set_parent_window (widget, pizza->bin_window); + gtk_widget_set_parent (widget, GTK_WIDGET (pizza)); + #ifndef __WXGTK20__ /* FIXME? */ if (!IS_ONSCREEN (x, y)) GTK_PRIVATE_SET_FLAG (widget, GTK_IS_OFFSCREEN); diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 6411fca957..146a2d37ae 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -67,6 +67,10 @@ #include "wx/gtk/win_gtk.h" +#ifdef __WXGTK20__ +#include +#endif + #ifdef __WXGTK20__ #define SET_CONTAINER_FOCUS(w, d) gtk_widget_child_focus((w), (d)) #else @@ -262,7 +266,7 @@ extern bool g_mainThreadLocked; //----------------------------------------------------------------------------- #ifndef __WXGTK20__ -#define DISABLE_STYLE_IF_BROKEN_THEME 1 +#define DISABLE_STYLE_IF_BROKEN_THEME 0 #endif #ifdef __WXDEBUG__ @@ -501,10 +505,10 @@ static int gtk_window_expose_callback( GtkWidget *widget, // This callback gets called in drawing-idle time under // GTK 2.0, so we don't need to defer anything to idle // time anymore. - + GtkPizza *pizza = GTK_PIZZA( widget ); if (gdk_event->window != pizza->bin_window) return FALSE; - + #if 0 if (win->GetName()) { @@ -522,13 +526,14 @@ static int gtk_window_expose_callback( GtkWidget *widget, win->GtkSendPaintEvents(); + // Let parent window draw window less widgets (* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event); #else // This gets called immediately after an expose event // under GTK 1.2 so we collect the calls and wait for // the idle handler to pick things up. - + win->GetUpdateRegion().Union( gdk_event->area.x, gdk_event->area.y, gdk_event->area.width, @@ -1060,6 +1065,7 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, return TRUE; } +#ifndef __WXGTK20__ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) @@ -1130,7 +1136,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, wxLogTrace(TRACE_KEYS, _T("Char event: %ld"), key_code); event.m_keyCode = key_code; - + // Implement OnCharHook by checking ancesteror top level windows wxWindow *parent = win; while (parent && !parent->IsTopLevel()) @@ -1207,45 +1213,184 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, } } - // Doesn't work. -#if 0 - // Pressing F10 will activate the menu bar of the top frame - if ( (!ret) && - (gdk_event->keyval == GDK_F10) ) + if (ret) { - wxWindowGTK *ancestor = win; - while (ancestor) + gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); + return TRUE; + } + + return FALSE; +} +#endif + +#ifdef __WXGTK20__ +static gint gtk_window_key_press_callback( GtkWidget *widget, + GdkEventKey *gdk_event, + wxWindow *win ) +{ + if (g_isIdle) + wxapp_install_idle_handler(); + + if (!win->m_hasVMT) + return FALSE; + if (g_blockEventsOnDrag) + return FALSE; + + bool ret = FALSE; + bool dont_use_IM = FALSE; + + wxKeyEvent event( wxEVT_KEY_DOWN ); + long keycode = wxTranslateKeySymToWXKey( gdk_event->keyval, FALSE ); + if (keycode) + { + // We were able to decode the key press without + // any input method, so don't use it. + dont_use_IM = TRUE; + + // now fill all the other fields + int x = 0; + int y = 0; + GdkModifierType state; + if (gdk_event->window) + gdk_window_get_pointer(gdk_event->window, &x, &y, &state); + + event.SetTimestamp( gdk_event->time ); + event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK) != 0; + event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK) != 0; + event.m_altDown = (gdk_event->state & GDK_MOD1_MASK) != 0; + event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK) != 0; + event.m_keyCode = keycode; + event.m_scanCode = gdk_event->keyval; + event.m_rawCode = (wxUint32) gdk_event->keyval; + event.m_rawFlags = 0; + event.m_x = x; + event.m_y = y; + event.SetEventObject( win ); + + // send key down event + ret = win->GetEventHandler()->ProcessEvent( event ); + + if (!ret) { - if (wxIsKindOf(ancestor,wxFrame)) + // Implement OnCharHook by checking ancesteror top level windows + wxWindow *parent = win; + while (parent && !parent->IsTopLevel()) + parent = parent->GetParent(); + if (parent) { - wxFrame *frame = (wxFrame*) ancestor; - wxMenuBar *menubar = frame->GetMenuBar(); - if (menubar) - { - wxNode *node = menubar->GetMenus().First(); - if (node) - { - wxMenu *firstMenu = (wxMenu*) node->Data(); - gtk_menu_item_select( GTK_MENU_ITEM(firstMenu->m_owner) ); - ret = TRUE; - break; - } - } + event.SetEventType( wxEVT_CHAR_HOOK ); + ret = parent->GetEventHandler()->ProcessEvent( event ); + } + + if (!ret) + { + event.SetEventType(wxEVT_CHAR); + ret = win->GetEventHandler()->ProcessEvent( event ); + } + } + + // win is a control: tab can be propagated up + if ( !ret && + ((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) && + win->GetParent() && (win->GetParent()->HasFlag( wxTAB_TRAVERSAL)) ) + { + wxNavigationKeyEvent new_event; + new_event.SetEventObject( win->GetParent() ); + // GDK reports GDK_ISO_Left_Tab for SHIFT-TAB + new_event.SetDirection( (gdk_event->keyval == GDK_Tab) ); + // CTRL-TAB changes the (parent) window, i.e. switch notebook page + new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) ); + new_event.SetCurrentFocus( win ); + ret = win->GetParent()->GetEventHandler()->ProcessEvent( new_event ); + } + + if ( !ret && + (gdk_event->keyval == GDK_Escape) ) + { + wxWindow *winForCancel = win, *btnCancel = NULL; + while ( winForCancel ) + { + btnCancel = winForCancel->FindWindow(wxID_CANCEL); + if ( btnCancel ) break; + + if ( winForCancel->IsTopLevel() ) break; + + winForCancel = winForCancel->GetParent(); + } + + if ( btnCancel ) + { + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); + event.SetEventObject(btnCancel); + ret = btnCancel->GetEventHandler()->ProcessEvent(event); } - ancestor = ancestor->GetParent(); } } -#endif // 0 if (ret) { gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); return TRUE; } - + + if (!dont_use_IM && win->m_imContext) + { + // In GTK 2.0, we need to hand over the key + // event to an input method and the IM will + // emit a "commit" event containing the + // actual utf8 character. + gtk_im_context_filter_keypress ( (GtkIMContext*) win->m_imContext, gdk_event ); + + return TRUE; + } + return FALSE; } +static void gtk_wxwindow_commit_cb (GtkIMContext *context, + const gchar *str, + wxWindow *window) +{ + bool ret = FALSE; + + wxKeyEvent event( wxEVT_KEY_DOWN ); + +#if wxUSE_UNICODE + event.m_uniChar = g_utf8_get_char( str ); + + // Backward compatible for ISO-8859 + if (event.m_uniChar < 256) + event.m_keyCode = event.m_uniChar; +#else + gunichar uniChar = g_utf8_get_char( str ); + // We cannot handle Unicode in non-Unicode mode + if (uniChar > 255) return; + + event.m_keyCode = uniChar; +#endif + + if (!ret) + { + // Implement OnCharHook by checking ancesteror top level windows + wxWindow *parent = window; + while (parent && !parent->IsTopLevel()) + parent = parent->GetParent(); + if (parent) + { + event.SetEventType( wxEVT_CHAR_HOOK ); + ret = parent->GetEventHandler()->ProcessEvent( event ); + } + + if (!ret) + { + event.SetEventType(wxEVT_CHAR); + ret = window->GetEventHandler()->ProcessEvent( event ); + } + } +} +#endif + + //----------------------------------------------------------------------------- // "key_release_event" from any window //----------------------------------------------------------------------------- @@ -1303,6 +1448,13 @@ static gint gtk_window_key_release_callback( GtkWidget *widget, event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); \ event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); \ event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); \ + if (event.GetEventType()==wxEVT_MOUSEWHEEL) \ + { \ + if (((GdkEventButton*)gdk_event)->button == 4) \ + event.m_wheelRotation = 120; \ + else if (((GdkEventButton*)gdk_event)->button == 5) \ + event.m_wheelRotation = -120; \ + } \ \ wxPoint pt = win->GetClientAreaOrigin(); \ event.m_x = (wxCoord)gdk_event->x - pt.x; \ @@ -1447,6 +1599,26 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, */ } + // GDK sends surplus button down event + // before a double click event. We + // need to filter these out. + if (gdk_event->type == GDK_BUTTON_PRESS) + { + GdkEvent *peek_event = gdk_event_peek(); + if (peek_event) + { + if (peek_event->type == GDK_2BUTTON_PRESS) + { + gdk_event_free( peek_event ); + return TRUE; + } + else + { + gdk_event_free( peek_event ); + } + } + } + wxEventType event_type = wxEVT_NULL; if (gdk_event->button == 1) @@ -1476,6 +1648,22 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, default: break; } } + else if (gdk_event->button == 4) + { + switch (gdk_event->type) + { + case GDK_BUTTON_PRESS: event_type = wxEVT_MOUSEWHEEL; break; + default: break; + } + } + else if (gdk_event->button == 5) + { + switch (gdk_event->type) + { + case GDK_BUTTON_PRESS: event_type = wxEVT_MOUSEWHEEL; break; + default: break; + } + } if ( event_type == wxEVT_NULL ) { @@ -1507,6 +1695,20 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, wxPrintf( wxT(".\n") ); */ +#ifndef __WXGTK20__ + if (event_type == wxEVT_LEFT_DCLICK) + { + // GTK 1.2 crashes when intercepting double + // click events from both wxSpinButton and + // wxSpinCtrl + if (GTK_IS_SPIN_BUTTON(win->m_widget)) + { + // Just disable this event for now. + return FALSE; + } + } +#endif + if (win->GetEventHandler()->ProcessEvent( event )) { gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" ); @@ -1520,7 +1722,9 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, // "button_release_event" //----------------------------------------------------------------------------- -static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindowGTK *win ) +static gint gtk_window_button_release_callback( GtkWidget *widget, + GdkEventButton *gdk_event, + wxWindowGTK *win ) { DEBUG_MAIN_THREAD @@ -1533,21 +1737,25 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE; -/* - printf( "OnButtonRelease from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - wxEventType event_type = wxEVT_NULL; switch (gdk_event->button) { - case 1: event_type = wxEVT_LEFT_UP; break; - case 2: event_type = wxEVT_MIDDLE_UP; break; - case 3: event_type = wxEVT_RIGHT_UP; break; - default: return FALSE; + case 1: + event_type = wxEVT_LEFT_UP; + break; + + case 2: + event_type = wxEVT_MIDDLE_UP; + break; + + case 3: + event_type = wxEVT_RIGHT_UP; + break; + + default: + // unknwon button, don't process + return FALSE; } wxMouseEvent event( event_type ); @@ -1558,6 +1766,20 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto // same wxListBox hack as above win->FixUpMouseEvent(widget, event.m_x, event.m_y); + if ( event_type == wxEVT_RIGHT_UP ) + { + // generate a "context menu" event: this is similar to wxEVT_RIGHT_UP + // except that: + // + // (a) it's a command event and so is propagated to the parent + // (b) under MSW it can be generated from kbd too + // (c) it uses screen coords (because of (a)) + wxContextMenuEvent evtCtx(wxEVT_CONTEXT_MENU, + win->GetId(), + win->ClientToScreen(event.GetPosition())); + (void)win->GetEventHandler()->ProcessEvent(evtCtx); + } + if ( !g_captureWindow ) win = FindWindowForMouseEvent(win, event.m_x, event.m_y); @@ -1706,7 +1928,7 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, #endif // wxUSE_CARET g_activeFrameLostFocus = FALSE; - + wxWindowGTK *active = wxGetTopLevelParent(win); if ( active != g_activeFrame ) { @@ -1723,7 +1945,7 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, wxActivateEvent event(wxEVT_ACTIVATE, TRUE, g_activeFrame->GetId()); event.SetEventObject(g_activeFrame); g_activeFrame->GetEventHandler()->ProcessEvent(event); - + // Don't send focus events in addition to activate // if (win == g_activeFrame) // return TRUE; @@ -2077,7 +2299,7 @@ static void gtk_window_destroy_callback( GtkWidget* widget, wxWindow *win ) been realized, so we do this directly after realization. */ static gint -gtk_window_realized_callback( GtkWidget *WXUNUSED(m_widget), wxWindow *win ) +gtk_window_realized_callback( GtkWidget *m_widget, wxWindow *win ) { DEBUG_MAIN_THREAD @@ -2090,6 +2312,14 @@ gtk_window_realized_callback( GtkWidget *WXUNUSED(m_widget), wxWindow *win ) if (win->m_delayedForegroundColour) win->GtkSetForegroundColour( win->GetForegroundColour() ); +#ifdef __WXGTK20__ + if (win->m_imContext) + { + GtkPizza *pizza = GTK_PIZZA( m_widget ); + gtk_im_context_set_client_window( (GtkIMContext*) win->m_imContext, pizza->bin_window ); + } +#endif + wxWindowCreateEvent event( win ); event.SetEventObject( win ); win->GetEventHandler()->ProcessEvent( event ); @@ -2349,10 +2579,15 @@ void wxWindowGTK::Init() m_delayedForegroundColour = FALSE; m_delayedBackgroundColour = FALSE; +#ifdef __WXGTK20__ + m_imContext = NULL; + m_x11Context = NULL; +#else #ifdef HAVE_XIM m_ic = (GdkIC*) NULL; m_icattr = (GdkICAttr*) NULL; #endif +#endif } wxWindowGTK::wxWindowGTK() @@ -2387,9 +2622,9 @@ bool wxWindowGTK::Create( wxWindow *parent, } m_insertCallback = wxInsertChildInWindow; - + // always needed for background clearing - m_delayedBackgroundColour = TRUE; + m_delayedBackgroundColour = TRUE; m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); @@ -2473,6 +2708,17 @@ bool wxWindowGTK::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed", (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this ); +#ifdef __WXGTK20__ + // Create input method handler + m_imContext = (GtkIMMulticontext*) gtk_im_multicontext_new (); + + // Cannot handle drawing preedited text yet + gtk_im_context_set_use_preedit( (GtkIMContext*) m_imContext, FALSE ); + + g_signal_connect (G_OBJECT (m_imContext), "commit", + G_CALLBACK (gtk_wxwindow_commit_cb), this); +#endif + gtk_widget_show( m_wxwindow ); if (m_parent) @@ -2489,6 +2735,11 @@ bool wxWindowGTK::Create( wxWindow *parent, wxWindowGTK::~wxWindowGTK() { + // Send destroy event + wxWindowDestroyEvent destroyEvent(this); + destroyEvent.SetId(GetId()); + GetEventHandler()->ProcessEvent(destroyEvent); + if (g_focusWindow == this) g_focusWindow = NULL; @@ -2596,7 +2847,18 @@ void wxWindowGTK::PostCreation() GTK_SIGNAL_FUNC(gtk_window_event_event_callback), (gpointer)this ); } #else - gtk_widget_set_redraw_on_allocate( GTK_WIDGET(m_wxwindow), HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ) ); + // gtk_widget_set_redraw_on_allocate( GTK_WIDGET(m_wxwindow), HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ) ); +#endif + +#ifdef __WXGTK20__ + // Create input method handler + m_imContext = (GtkIMMulticontext*) gtk_im_multicontext_new (); + + // Cannot handle drawing preedited text yet + gtk_im_context_set_use_preedit( (GtkIMContext*) m_imContext, FALSE ); + + g_signal_connect (G_OBJECT (m_imContext), "commit", + G_CALLBACK (gtk_wxwindow_commit_cb), this); #endif } @@ -2683,7 +2945,7 @@ void wxWindowGTK::ConnectWidget( GtkWidget *widget ) gtk_signal_connect( GTK_OBJECT(widget), "leave_notify_event", GTK_SIGNAL_FUNC(gtk_window_leave_callback), (gpointer)this ); - + // This keeps crashing on me. RR. // // gtk_signal_connect( GTK_OBJECT(widget), "destroy", @@ -2842,7 +3104,7 @@ void wxWindowGTK::OnInternalIdle() } g_activeFrameLostFocus = FALSE; } - + wxCursor cursor = m_cursor; if (g_globalCursor.Ok()) cursor = g_globalCursor; @@ -3113,6 +3375,11 @@ bool wxWindowGTK::Show( bool show ) else gtk_widget_hide( m_widget ); + wxShowEvent eventShow(GetId(), show); + eventShow.m_eventObject = this; + + GetEventHandler()->ProcessEvent(eventShow); + return TRUE; } @@ -3158,9 +3425,31 @@ int wxWindowGTK::GetCharHeight() const wxCHECK_MSG( m_font.Ok(), 12, wxT("invalid font") ); +#ifdef __WXGTK20__ + PangoContext *context = NULL; + if (m_widget) + context = gtk_widget_get_pango_context( m_widget ); + + if (!context) + return 0; + + PangoFontDescription *desc = m_font.GetNativeFontInfo()->description; + PangoLayout *layout = pango_layout_new(context); + pango_layout_set_font_description(layout, desc); + pango_layout_set_text(layout, "H", 1); + PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + + PangoRectangle rect; + pango_layout_line_get_extents(line, NULL, &rect); + + g_object_unref( G_OBJECT( layout ) ); + + return (int) (rect.height / PANGO_SCALE); +#else GdkFont *font = m_font.GetInternalFont( 1.0 ); return font->ascent + font->descent; +#endif } int wxWindowGTK::GetCharWidth() const @@ -3169,9 +3458,31 @@ int wxWindowGTK::GetCharWidth() const wxCHECK_MSG( m_font.Ok(), 8, wxT("invalid font") ); +#ifdef __WXGTK20__ + PangoContext *context = NULL; + if (m_widget) + context = gtk_widget_get_pango_context( m_widget ); + + if (!context) + return 0; + + PangoFontDescription *desc = m_font.GetNativeFontInfo()->description; + PangoLayout *layout = pango_layout_new(context); + pango_layout_set_font_description(layout, desc); + pango_layout_set_text(layout, "H", 1); + PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + + PangoRectangle rect; + pango_layout_line_get_extents(line, NULL, &rect); + + g_object_unref( G_OBJECT( layout ) ); + + return (int) (rect.width / PANGO_SCALE); +#else GdkFont *font = m_font.GetInternalFont( 1.0 ); return gdk_string_width( font, "H" ); +#endif } void wxWindowGTK::GetTextExtent( const wxString& string, @@ -3185,26 +3496,26 @@ void wxWindowGTK::GetTextExtent( const wxString& string, if (theFont) fontToUse = *theFont; wxCHECK_RET( fontToUse.Ok(), wxT("invalid font") ); - + if (string.IsEmpty()) { if (x) (*x) = 0; if (y) (*y) = 0; return; } -#ifdef __WXGTK20__ +#ifdef __WXGTK20__ PangoContext *context = NULL; if (m_widget) - gtk_widget_get_pango_context( m_widget ); - + context = gtk_widget_get_pango_context( m_widget ); + if (!context) { if (x) (*x) = 0; if (y) (*y) = 0; return; } - + PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description; PangoLayout *layout = pango_layout_new(context); pango_layout_set_font_description(layout, desc); @@ -3219,10 +3530,10 @@ void wxWindowGTK::GetTextExtent( const wxString& string, #endif } PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; - + PangoRectangle rect; pango_layout_line_get_extents(line, NULL, &rect); - + if (x) (*x) = (wxCoord) (rect.width / PANGO_SCALE); if (y) (*y) = (wxCoord) (rect.height / PANGO_SCALE); if (descent) @@ -3231,7 +3542,7 @@ void wxWindowGTK::GetTextExtent( const wxString& string, (*descent) = 0; } if (externalLeading) (*externalLeading) = 0; // ?? - + g_object_unref( G_OBJECT( layout ) ); #else GdkFont *font = fontToUse.GetInternalFont( 1.0 ); @@ -3408,11 +3719,11 @@ void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect ) { if (!m_widget) return; if (!m_widget->window) return; - + #ifndef __WXGTK20__ if (g_isIdle) wxapp_install_idle_handler(); - + if (eraseBackground && m_wxwindow && m_wxwindow->window) { if (rect) @@ -3498,7 +3809,7 @@ void wxWindowGTK::GtkSendPaintEvents() { if (!m_wxwindow) { -#ifndef __WXGTK20__ +#ifndef __WXGTK20__ m_clearRegion.Clear(); #endif m_updateRegion.Clear(); @@ -3511,7 +3822,7 @@ void wxWindowGTK::GtkSendPaintEvents() #ifndef __WXGTK20__ // widget to draw on GtkPizza *pizza = GTK_PIZZA (m_wxwindow); - + // later for GTK 2.0, too. if (GetThemeEnabled()) { @@ -3521,7 +3832,7 @@ void wxWindowGTK::GtkSendPaintEvents() parent = parent->GetParent(); if (!parent) parent = (wxWindow*)this; - + wxRegionIterator upd( m_updateRegion ); while (upd) { @@ -3530,7 +3841,7 @@ void wxWindowGTK::GtkSendPaintEvents() rect.y = upd.GetY(); rect.width = upd.GetWidth(); rect.height = upd.GetHeight(); - + gtk_paint_flat_box( parent->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL, @@ -3539,7 +3850,7 @@ void wxWindowGTK::GtkSendPaintEvents() parent->m_widget, (char *)"base", 0, 0, -1, -1 ); - + upd ++; } } @@ -3610,7 +3921,7 @@ void wxWindowGTK::GtkSendPaintEvents() { GtkPizzaChild *child = (GtkPizzaChild*) children->data; children = children->next; - + if (GTK_WIDGET_NO_WINDOW (child->widget) && GTK_WIDGET_DRAWABLE (child->widget)) { @@ -3656,7 +3967,7 @@ void wxWindowGTK::Clear() m_clearRegion.Clear(); wxSize size( GetClientSize() ); m_clearRegion.Union( 0,0,size.x,size.y ); - + // Better do this in idle? GtkUpdate(); } @@ -3687,10 +3998,10 @@ void wxWindowGTK::GtkSetBackgroundColour( const wxColour &colour ) window = GetConnectWidget()->window; wxASSERT( window ); - + // We need the pixel value e.g. for background clearing. m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - + if (m_wxwindow) { // wxMSW doesn't clear the window here, either. @@ -3774,6 +4085,21 @@ bool wxWindowGTK::SetForegroundColour( const wxColour &colour ) return TRUE; } +#ifdef __WXGTK20__ +PangoContext *wxWindowGTK::GtkGetPangoDefaultContext() +{ + return gtk_widget_get_pango_context( m_widget ); +} + +PangoContext *wxWindowGTK::GtkGetPangoX11Context() +{ + if (!m_x11Context) + m_x11Context = pango_x_get_context( gdk_display ); + + return m_x11Context; +} +#endif + GtkStyle *wxWindowGTK::GetWidgetStyle() { if (m_widgetStyle) @@ -3826,7 +4152,13 @@ void wxWindowGTK::SetWidgetStyle() if (m_font != wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT )) { - SET_STYLE_FONT(style, m_font.GetInternalFont( 1.0 )); +#ifdef __WXGTK20__ + pango_font_description_free( style->font_desc ); + pango_font_description_copy( m_font.GetNativeFontInfo()->description ); +#else + gdk_font_unref( style->font ); + style->font = gdk_font_ref( m_font.GetInternalFont( 1.0 ) ); +#endif } if (m_foregroundColour.Ok()) @@ -4271,7 +4603,7 @@ void wxWindowGTK::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) ) wxCHECK_RET( m_widget != NULL, wxT("invalid window") ); wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") ); - + // No scrolling requested. if ((dx == 0) && (dy == 0)) return; @@ -4328,10 +4660,8 @@ wxPoint wxGetMousePosition() int x, y; GdkWindow* windowAtPtr = gdk_window_at_pointer(& x, & y); - if (!windowAtPtr) - return wxPoint(-999, -999); - Display *display = GDK_WINDOW_XDISPLAY(windowAtPtr); + Display *display = windowAtPtr ? GDK_WINDOW_XDISPLAY(windowAtPtr) : GDK_DISPLAY(); Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display)); Window rootReturn, childReturn; int rootX, rootY, winX, winY; diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 20d8961d6c..eccbb52d0a 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -26,6 +26,7 @@ #include "wx/dialog.h" #include "wx/msgdlg.h" #include "wx/file.h" +#include "wx/filename.h" #if wxUSE_WX_RESOURCES #include "wx/resource.h" @@ -44,13 +45,32 @@ #endif #include -#if defined(__DARWIN__) -# warning "FIXME: select must be used instead of poll (GD)" -#elif defined(__VMS) -# include -#else -# include -#endif + +#ifdef HAVE_POLL + #if defined(__VMS) + #include + #else + // bug in the OpenBSD headers: at least in 3.1 there is no extern "C" + // in neither poll.h nor sys/poll.h which results in link errors later + #ifdef __OPENBSD__ + extern "C" + { + #endif + + #include + + #ifdef __OPENBSD__ + }; + #endif + #endif // platform +#else // !HAVE_POLL + // we implement poll() ourselves using select() which is supposed exist in + // all modern Unices + #include + #include + #include +#endif // HAVE_POLL/!HAVE_POLL + #include "wx/gtk/win_gtk.h" #include @@ -250,22 +270,82 @@ static gint wxapp_idle_callback( gpointer WXUNUSED(data) ) #if wxUSE_THREADS +#ifdef HAVE_POLL + #define wxPoll poll + #define wxPollFd pollfd +#else // !HAVE_POLL + +typedef GPollFD wxPollFd; + +int wxPoll(wxPollFd *ufds, unsigned int nfds, int timeout) +{ + // convert timeout from ms to struct timeval (s/us) + timeval tv_timeout; + tv_timeout.tv_sec = timeout/1000; + tv_timeout.tv_usec = (timeout%1000)*1000; + + // remember the highest fd used here + int fdMax = -1; + + // and fill the sets for select() + fd_set readfds; + fd_set writefds; + fd_set exceptfds; + FD_ZERO(&readfds); + FD_ZERO(&writefds); + FD_ZERO(&exceptfds); + + unsigned int i; + for ( i = 0; i < nfds; i++ ) + { + wxASSERT_MSG( ufds[i].fd < FD_SETSIZE, _T("fd out of range") ); + + if ( ufds[i].events & G_IO_IN ) + FD_SET(ufds[i].fd, &readfds); + + if ( ufds[i].events & G_IO_PRI ) + FD_SET(ufds[i].fd, &exceptfds); + + if ( ufds[i].events & G_IO_OUT ) + FD_SET(ufds[i].fd, &writefds); + + if ( ufds[i].fd > fdMax ) + fdMax = ufds[i].fd; + } + + fdMax++; + int res = select(fdMax, &readfds, &writefds, &exceptfds, &tv_timeout); + + // translate the results back + for ( i = 0; i < nfds; i++ ) + { + ufds[i].revents = 0; + + if ( FD_ISSET(ufds[i].fd, &readfds ) ) + ufds[i].revents |= G_IO_IN; + + if ( FD_ISSET(ufds[i].fd, &exceptfds ) ) + ufds[i].revents |= G_IO_PRI; + + if ( FD_ISSET(ufds[i].fd, &writefds ) ) + ufds[i].revents |= G_IO_OUT; + } + + return res; +} + +#endif // HAVE_POLL/!HAVE_POLL + static gint wxapp_poll_func( GPollFD *ufds, guint nfds, gint timeout ) { - gint res; gdk_threads_enter(); wxMutexGuiLeave(); g_mainThreadLocked = TRUE; -#ifdef __DARWIN__ - // FIXME: poll is not available under Darwin/Mac OS X and this needs - // to be implemented using select instead (GD) - // what about other BSD derived systems? - res = -1; -#else - res = poll( (struct pollfd*) ufds, nfds, timeout ); -#endif + // we rely on the fact that glib GPollFD struct is really just pollfd but + // I wonder how wise is this in the long term (VZ) + gint res = wxPoll( (wxPollFd *) ufds, nfds, timeout ); wxMutexGuiEnter(); g_mainThreadLocked = FALSE; @@ -463,6 +543,16 @@ GdkVisual *wxApp::GetGdkVisual() bool wxApp::ProcessIdle() { + wxWindowList::Node* node = wxTopLevelWindows.GetFirst(); + node = wxTopLevelWindows.GetFirst(); + while (node) + { + wxWindow* win = node->GetData(); + CallInternalIdle( win ); + + node = node->GetNext(); + } + wxIdleEvent event; event.SetEventObject( this ); ProcessEvent( event ); @@ -510,14 +600,6 @@ bool wxApp::SendIdleEvents() node = node->GetNext(); } - node = wxTopLevelWindows.GetFirst(); - while (node) - { - wxWindow* win = node->GetData(); - CallInternalIdle( win ); - - node = node->GetNext(); - } return needMore; } @@ -545,7 +627,7 @@ bool wxApp::SendIdleEvents( wxWindow* win ) event.SetEventObject(win); win->GetEventHandler()->ProcessEvent(event); - + if (event.MoreRequested()) needMore = TRUE; @@ -609,10 +691,6 @@ bool wxApp::Initialize() { wxClassInfo::InitializeClasses(); -#if wxUSE_INTL - wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); -#endif - // GL: I'm annoyed ... I don't know where to put this and I don't want to // create a module for that as it's part of the core. #if wxUSE_THREADS @@ -631,7 +709,12 @@ bool wxApp::Initialize() #endif wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) return FALSE; + if (!wxModule::InitializeModules()) + return FALSE; + +#if wxUSE_INTL + wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); +#endif return TRUE; } @@ -810,9 +893,11 @@ int wxEntry( int argc, char *argv[] ) wxTheApp->argv = argv; #endif - wxString name(wxFileNameFromPath(argv[0])); - wxStripExtension( name ); - wxTheApp->SetAppName( name ); + if (wxTheApp->argc > 0) + { + wxFileName fname( wxTheApp->argv[0] ); + wxTheApp->SetAppName( fname.GetName() ); + } int retValue; retValue = wxEntryInitGui(); diff --git a/src/gtk1/bitmap.cpp b/src/gtk1/bitmap.cpp index 033071565e..d2e9fda7f0 100644 --- a/src/gtk1/bitmap.cpp +++ b/src/gtk1/bitmap.cpp @@ -344,7 +344,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth ) m_refData = new wxBitmapRefData(); // ------ - // convertion to mono bitmap: + // conversion to mono bitmap: // ------ if (depth == 1) { @@ -440,7 +440,7 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth ) } // ------ - // convertion to colour bitmap: + // conversion to colour bitmap: // ------ else { diff --git a/src/gtk1/button.cpp b/src/gtk1/button.cpp index 711b64f16c..fae04c1372 100644 --- a/src/gtk1/button.cpp +++ b/src/gtk1/button.cpp @@ -188,6 +188,15 @@ bool wxButton::Enable( bool enable ) return TRUE; } +bool wxButton::IsOwnGtkWindow( GdkWindow *window ) +{ +#ifdef __WXGTK20__ + return GTK_BUTTON(m_widget)->event_window; +#else + return (window == m_widget->window); +#endif +} + void wxButton::ApplyWidgetStyle() { SetWidgetStyle(); diff --git a/src/gtk1/choice.cpp b/src/gtk1/choice.cpp index c9e3cceac2..9b3b464160 100644 --- a/src/gtk1/choice.cpp +++ b/src/gtk1/choice.cpp @@ -448,14 +448,11 @@ wxSize wxChoice::DoGetBestSize() const ret.x = 0; if ( m_widget ) { - GdkFont *font = m_font.GetInternalFont(); - - wxCoord width; + int width; size_t count = GetCount(); for ( size_t n = 0; n < count; n++ ) { - // FIXME GTK 2.0 - width = (wxCoord)gdk_string_width(font, wxGTK_CONV( GetString(n) ) ); + GetTextExtent( GetString(n), &width, NULL, NULL, NULL, &m_font ); if ( width > ret.x ) ret.x = width; } @@ -477,7 +474,7 @@ wxSize wxChoice::DoGetBestSize() const if ( ret.x < 80 ) ret.x = 80; - ret.y = 16 + gdk_char_height(GET_STYLE_FONT( m_widget->style ), 'H' ); + ret.y = 16 + GetCharHeight(); return ret; } diff --git a/src/gtk1/colour.cpp b/src/gtk1/colour.cpp index 84c790a329..21d852e55d 100644 --- a/src/gtk1/colour.cpp +++ b/src/gtk1/colour.cpp @@ -13,6 +13,7 @@ #endif #include "wx/gdicmn.h" +#include "wx/gtk/private.h" #include #include @@ -167,7 +168,7 @@ void wxColour::InitFromName( const wxString &colourName ) { m_refData = new wxColourRefData(); - if (!gdk_color_parse( colourName.mb_str(), &M_COLDATA->m_color )) + if (!gdk_color_parse( wxGTK_CONV( colourName ), &M_COLDATA->m_color )) { // VZ: asserts are good in general but this one is triggered by // calling wxColourDatabase::FindColour() with an @@ -217,11 +218,13 @@ void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue ) { AllocExclusive(); - m_refData = new wxColourRefData(); M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; M_COLDATA->m_color.pixel = 0; + + M_COLDATA->m_colormap = (GdkColormap*) NULL; + M_COLDATA->m_hasPixel = FALSE; } unsigned char wxColour::Red() const diff --git a/src/gtk1/combobox.cpp b/src/gtk1/combobox.cpp index a03df573b1..d719f40bc9 100644 --- a/src/gtk1/combobox.cpp +++ b/src/gtk1/combobox.cpp @@ -36,34 +36,25 @@ extern bool g_isIdle; extern bool g_blockEventsOnDrag; //----------------------------------------------------------------------------- -// "select" +// "select-child" - click/cursor get select-child, changed, select-child //----------------------------------------------------------------------------- static void -gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) +gtk_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(widget), wxComboBox *combo ) { if (g_isIdle) wxapp_install_idle_handler(); if (!combo->m_hasVMT) return; - + if (g_blockEventsOnDrag) return; - if (combo->m_alreadySent) - { - combo->m_alreadySent = FALSE; - return; - } - - combo->m_alreadySent = TRUE; - int curSelection = combo->GetSelection(); - + if (combo->m_prevSelection != curSelection) { GtkWidget *list = GTK_COMBO(combo->m_widget)->list; gtk_list_unselect_item( GTK_LIST(list), combo->m_prevSelection ); } - combo->m_prevSelection = curSelection; wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() ); @@ -75,7 +66,8 @@ gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) } //----------------------------------------------------------------------------- -// "changed" +// "changed" - typing and list item matches get changed, select-child +// if it doesn't match an item then just get a single changed //----------------------------------------------------------------------------- static void @@ -91,6 +83,12 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) combo->GetEventHandler()->ProcessEvent( event ); } +static void +gtk_dummy_callback(GtkEntry *WXUNUSED(entry), GtkCombo *WXUNUSED(combo)) +{ +} + + //----------------------------------------------------------------------------- // wxComboBox //----------------------------------------------------------------------------- @@ -121,6 +119,13 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, } m_widget = gtk_combo_new(); + GtkCombo *combo = GTK_COMBO(m_widget); + + // Disable GTK's broken events ... + gtk_signal_disconnect( GTK_OBJECT(combo->entry), combo->entry_change_id ); + // ... and add surogate handler. + combo->entry_change_id = gtk_signal_connect (GTK_OBJECT (combo->entry), "changed", + (GtkSignalFunc) gtk_dummy_callback, combo); // make it more useable gtk_combo_set_use_arrows_always( GTK_COMBO(m_widget), TRUE ); @@ -128,7 +133,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, // and case-sensitive gtk_combo_set_case_sensitive( GTK_COMBO(m_widget), TRUE ); - GtkWidget *list = GTK_COMBO(m_widget)->list; #ifndef __WXGTK20__ @@ -137,10 +141,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, for (int i = 0; i < n; i++) { - /* don't send first event, which GTK sends aways when - inserting the first item */ - m_alreadySent = TRUE; - GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); @@ -148,27 +148,29 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, gtk_container_add( GTK_CONTAINER(list), list_item ); - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - gtk_widget_show( list_item ); } m_parent->DoAddChild( this ); - m_focusWidget = GTK_COMBO(m_widget)->entry; + m_focusWidget = combo->entry; PostCreation(); - ConnectWidget( GTK_COMBO(m_widget)->button ); + ConnectWidget( combo->button ); - if (!value.IsNull()) SetValue( value ); + // MSW's combo box shows the value and the selection is -1 + gtk_entry_set_text( GTK_ENTRY(combo->entry), wxGTK_CONV(value) ); + gtk_list_unselect_all( GTK_LIST(combo->list) ); if (style & wxCB_READONLY) - gtk_entry_set_editable( GTK_ENTRY( GTK_COMBO(m_widget)->entry ), FALSE ); + gtk_entry_set_editable( GTK_ENTRY( combo->entry ), FALSE ); - gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed", - GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this); + gtk_signal_connect( GTK_OBJECT(combo->entry), "changed", + GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); + + gtk_signal_connect( GTK_OBJECT(combo->list), "select-child", + GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); wxSize size_best( DoGetBestSize() ); wxSize new_size( size ); @@ -186,7 +188,6 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, gtk_widget_set_usize( m_widget, new_size.x, new_size.y ); } - SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); SetForegroundColour( parent->GetForegroundColour() ); @@ -209,19 +210,29 @@ wxComboBox::~wxComboBox() m_clientDataList.Clear(); } +void wxComboBox::SetFocus() +{ + if ( m_hasFocus ) + { + // don't do anything if we already have focus + return; + } + + gtk_widget_grab_focus( m_focusWidget ); +} + void wxComboBox::AppendCommon( const wxString &item ) { wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); + DisableEvents(); + GtkWidget *list = GTK_COMBO(m_widget)->list; GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( item ) ); gtk_container_add( GTK_CONTAINER(list), list_item ); - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_realize( list_item ); @@ -231,6 +242,8 @@ void wxComboBox::AppendCommon( const wxString &item ) } gtk_widget_show( list_item ); + + EnableEvents(); } void wxComboBox::Append( const wxString &item ) @@ -304,6 +317,8 @@ void wxComboBox::Clear() { wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); + DisableEvents(); + GtkWidget *list = GTK_COMBO(m_widget)->list; gtk_list_clear_items( GTK_LIST(list), 0, Number() ); @@ -317,6 +332,8 @@ void wxComboBox::Clear() m_clientObjectList.Clear(); m_clientDataList.Clear(); + + EnableEvents(); } void wxComboBox::Delete( int n ) @@ -333,6 +350,8 @@ void wxComboBox::Delete( int n ) return; } + DisableEvents(); + GList *list = g_list_append( (GList*) NULL, child->data ); gtk_list_remove_items( listbox, list ); g_list_free( list ); @@ -347,9 +366,9 @@ void wxComboBox::Delete( int n ) node = m_clientDataList.Nth( n ); if (node) - { m_clientDataList.DeleteNode( node ); - } + + EnableEvents(); } int wxComboBox::FindString( const wxString &item ) @@ -364,8 +383,14 @@ int wxComboBox::FindString( const wxString &item ) { GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); - if (item == wxString(label->label,*wxConvCurrent)) +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + if (item == str) return count; + count++; child = child->next; } @@ -408,7 +433,7 @@ wxString wxComboBox::GetString( int n ) const GtkBin *bin = GTK_BIN( child->data ); GtkLabel *label = GTK_LABEL( bin->child ); #ifdef __WXGTK20__ - str = wxGTK_CONV_BACK( gtk_label_get_text( label) ); + str = wxGTK_CONV_BACK( gtk_label_get_text(label) ); #else str = wxString( label->label ); #endif @@ -431,7 +456,12 @@ wxString wxComboBox::GetStringSelection() const if (selection) { GtkBin *bin = GTK_BIN( selection->data ); - wxString tmp = wxString(GTK_LABEL( bin->child )->label,*wxConvCurrent); + GtkLabel *label = GTK_LABEL( bin->child ); +#ifdef __WXGTK20__ + wxString tmp( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString tmp( label->label ); +#endif return tmp; } @@ -594,55 +624,33 @@ void wxComboBox::OnChar( wxKeyEvent &event ) { if ( event.KeyCode() == WXK_RETURN ) { - wxString value = GetValue(); - - if ( Number() == 0 ) + // GTK automatically selects an item if its in the list + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, GetId()); + event.SetString( GetValue() ); + event.SetInt( GetSelection() ); + event.SetEventObject( this ); + + if (!GetEventHandler()->ProcessEvent( event )) { - // make Enter generate "selected" event if there is only one item - // in the combobox - without it, it's impossible to select it at - // all! - wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() ); - event.SetInt( 0 ); - event.SetString( value ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - } - else - { - // add the item to the list if it's not there yet - if ( FindString(value) == wxNOT_FOUND ) - { - Append(value); - SetStringSelection(value); - - // and generate the selected event for it - wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() ); - event.SetInt( Number() - 1 ); - event.SetString( value ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - } - // This will invoke the dialog default action, such // as the clicking the default button. wxWindow *top_frame = m_parent; while (top_frame->GetParent() && !(top_frame->IsTopLevel())) - top_frame = top_frame->GetParent(); - + top_frame = top_frame->GetParent(); + if (top_frame && GTK_IS_WINDOW(top_frame->m_widget)) { GtkWindow *window = GTK_WINDOW(top_frame->m_widget); if (window->default_widget) - { gtk_widget_activate (window->default_widget); - return; - } } - - return; } + + // Catch GTK event so that GTK doesn't open the drop + // down list upon RETURN. + return; } event.Skip(); @@ -650,28 +658,18 @@ void wxComboBox::OnChar( wxKeyEvent &event ) void wxComboBox::DisableEvents() { - GtkList *list = GTK_LIST( GTK_COMBO(m_widget)->list ); - GList *child = list->children; - while (child) - { - gtk_signal_disconnect_by_func( GTK_OBJECT(child->data), - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - - child = child->next; - } + gtk_signal_disconnect_by_func( GTK_OBJECT(GTK_COMBO(m_widget)->list), + GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); + gtk_signal_disconnect_by_func( GTK_OBJECT(GTK_COMBO(m_widget)->entry), + GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); } void wxComboBox::EnableEvents() { - GtkList *list = GTK_LIST( GTK_COMBO(m_widget)->list ); - GList *child = list->children; - while (child) - { - gtk_signal_connect( GTK_OBJECT(child->data), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - - child = child->next; - } + gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->list), "select-child", + GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); + gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed", + GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); } void wxComboBox::OnSize( wxSizeEvent &event ) @@ -728,13 +726,11 @@ wxSize wxComboBox::DoGetBestSize() const ret.x = 0; if ( m_widget ) { - GdkFont *font = m_font.GetInternalFont(); - - wxCoord width; - size_t count = Number(); + int width; + size_t count = GetCount(); for ( size_t n = 0; n < count; n++ ) { - width = (wxCoord)gdk_string_width(font, wxGTK_CONV( GetString(n) ) ); + GetTextExtent( GetString(n), &width, NULL, NULL, NULL, &m_font ); if ( width > ret.x ) ret.x = width; } @@ -747,3 +743,4 @@ wxSize wxComboBox::DoGetBestSize() const } #endif + diff --git a/src/gtk1/cursor.cpp b/src/gtk1/cursor.cpp index dc03ce10db..a7ce14cfb5 100644 --- a/src/gtk1/cursor.cpp +++ b/src/gtk1/cursor.cpp @@ -370,7 +370,7 @@ void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) ) wxSetCursor( wxCursor(wxCURSOR_WATCH) ); if (wxTheApp) - wxTheApp->SendIdleEvents(); + wxTheApp->ProcessIdle(); gdk_flush(); } diff --git a/src/gtk1/dataobj.cpp b/src/gtk1/dataobj.cpp index ca8fb4dbd6..2b0f4f43ae 100644 --- a/src/gtk1/dataobj.cpp +++ b/src/gtk1/dataobj.cpp @@ -158,6 +158,11 @@ wxDataObject::wxDataObject() { } +wxDataObject::~wxDataObject() +{ + // dtor is empty but needed for Darwin and AIX -- otherwise it doesn't link +} + bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, Direction dir) const { size_t nFormatCount = GetFormatCount(dir); diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index 8a33377614..2ef77d4f3b 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -330,12 +330,7 @@ wxWindowDC::wxWindowDC( wxWindow *window ) wxASSERT_MSG( widget, wxT("DC needs a widget") ); #ifdef __WXGTK20__ - m_context = gtk_widget_get_pango_context( widget ); - - // Always take Xft context to get matching fonts - // for display and printing. - // m_context = pango_xft_get_context (GDK_DISPLAY (), DefaultScreen (GDK_DISPLAY ())); - + m_context = window->GtkGetPangoDefaultContext(); m_fontdesc = widget->style->font_desc; #endif @@ -399,6 +394,14 @@ void wxWindowDC::SetUpDC() m_bgGC = wxGetPoolGC( m_window, wxBG_COLOUR ); } +#ifdef __WXGTK20__ + if (m_isMemDC) + { + m_context = gdk_pango_context_get(); + m_fontdesc = pango_context_get_font_description(m_context); + } +#endif + /* background colour */ m_backgroundBrush = *wxWHITE_BRUSH; m_backgroundBrush.GetColour().CalcPixel( m_cmap ); @@ -1414,38 +1417,76 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) wxCHECK_RET( Ok(), wxT("invalid window dc") ); if (!m_window) return; + + if (text.empty()) return; +#ifndef __WXGTK20__ GdkFont *font = m_font.GetInternalFont( m_scaleY ); wxCHECK_RET( font, wxT("invalid font") ); +#endif -#if defined(__WXGTK20__) +#ifdef __WXGTK20__ wxCHECK_RET( m_context, wxT("no Pango context") ); #endif x = XLOG2DEV(x); y = YLOG2DEV(y); -#if defined(__WXGTK20__) +#ifdef __WXGTK20__ // TODO: the layout engine should be abstracted at a higher level! PangoLayout *layout = pango_layout_new(m_context); - pango_layout_set_font_description(layout, m_fontdesc); - { + #if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( text ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxCharBuffer data = wxConvUTF8.cWC2MB( text ); #else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( text ); - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxWCharBuffer wdata = wxConvLocal.cMB2WC( text ); + const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); #endif + + pango_layout_set_text( layout, (const char*)data, strlen((const char*)data) ); + + if (m_scaleY != 1.0) + { + // If there is a user or actually any scale applied to + // the device context, scale the font. + + // scale font description + gint oldSize = pango_font_description_get_size( m_fontdesc ); + double size = oldSize; + size = size * m_scaleY; + pango_font_description_set_size( m_fontdesc, (gint)size ); + + // actually apply scaled font + pango_layout_set_font_description( layout, m_fontdesc ); + + // Draw layout. + gdk_draw_layout( m_window, m_textGC, x, y, layout ); + + // reset unscaled size + pango_font_description_set_size( m_fontdesc, oldSize ); } - PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; - PangoRectangle rect; - pango_layout_line_get_extents(line, NULL, &rect); - wxCoord width = rect.width; - wxCoord height = rect.height; - gdk_draw_layout( m_window, m_textGC, x, y, layout ); + else + { + // actually apply font + pango_layout_set_font_description( layout, m_fontdesc ); + + // Draw layout. + gdk_draw_layout( m_window, m_textGC, x, y, layout ); + } + +#if 0 + // Measure layout + int w,h; + pango_layout_get_pixel_size( m_layout, &w, &h ); +#else + int w = 10; + int h = 10; +#endif + wxCoord width = w; + wxCoord height = h; + + g_object_unref( G_OBJECT( layout ) ); #else // GTK+ 1.x wxCoord width = gdk_string_width( font, text.mbc_str() ); wxCoord height = font->ascent + font->descent; @@ -1469,9 +1510,6 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) } #endif // GTK+ 2.0/1.x -#if defined(__WXGTK20__) - g_object_unref( G_OBJECT( layout ) ); -#endif width = wxCoord(width / m_scaleX); height = wxCoord(height / m_scaleY); @@ -1596,8 +1634,6 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, wxCoord *descent, wxCoord *externalLeading, wxFont *theFont) const { - wxFont fontToUse = m_font; - if (theFont) fontToUse = *theFont; if (string.IsEmpty()) { if (width) (*width) = 0; @@ -1606,34 +1642,40 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, } #ifdef __WXGTK20__ - PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description; - PangoLayout *layout = pango_layout_new(m_context); - pango_layout_set_font_description(layout, desc); + // Create layout and set font description + PangoLayout *layout = pango_layout_new( m_context ); + if (theFont) + pango_layout_set_font_description( layout, theFont->GetNativeFontInfo()->description ); + else + pango_layout_set_font_description( layout, m_fontdesc ); + + // Set layout's text #if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); #else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); - pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); + const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); #endif - PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + pango_layout_set_text( layout, (const char*) data, strlen((const char*)data) ); - PangoRectangle rect; - pango_layout_line_get_extents(line, NULL, &rect); - + // Measure text. + int w,h; + pango_layout_get_pixel_size( layout, &w, &h ); - if (width) (*width) = (wxCoord) (rect.width / PANGO_SCALE); - if (height) (*height) = (wxCoord) (rect.height / PANGO_SCALE); + if (width) (*width) = (wxCoord) w; + if (height) (*height) = (wxCoord) h; if (descent) { - // Do something about metrics here + // Do something about metrics here. TODO. (*descent) = 0; } if (externalLeading) (*externalLeading) = 0; // ?? g_object_unref( G_OBJECT( layout ) ); #else + wxFont fontToUse = m_font; + if (theFont) fontToUse = *theFont; + GdkFont *font = fontToUse.GetInternalFont( m_scaleY ); if (width) (*width) = wxCoord(gdk_string_width( font, string.mbc_str() ) / m_scaleX); if (height) (*height) = wxCoord((font->ascent + font->descent) / m_scaleY); @@ -1644,18 +1686,40 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, wxCoord wxWindowDC::GetCharWidth() const { +#ifdef __WXGTK20__ + // There should be an easier way. + PangoLayout *layout = pango_layout_new(m_context); + pango_layout_set_font_description(layout, m_fontdesc); + pango_layout_set_text(layout, "H", 1 ); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + return w; +#else GdkFont *font = m_font.GetInternalFont( m_scaleY ); wxCHECK_MSG( font, -1, wxT("invalid font") ); return wxCoord(gdk_string_width( font, "H" ) / m_scaleX); +#endif } wxCoord wxWindowDC::GetCharHeight() const { +#ifdef __WXGTK20__ + // There should be an easier way. + PangoLayout *layout = pango_layout_new(m_context); + pango_layout_set_font_description(layout, m_fontdesc); + pango_layout_set_text(layout, "H", 1); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + return h; +#else GdkFont *font = m_font.GetInternalFont( m_scaleY ); wxCHECK_MSG( font, -1, wxT("invalid font") ); return wxCoord((font->ascent + font->descent) / m_scaleY); +#endif } void wxWindowDC::Clear() @@ -1704,7 +1768,18 @@ void wxWindowDC::SetFont( const wxFont &font ) m_font = font; #ifdef __WXGTK20__ - m_fontdesc = m_font.GetNativeFontInfo()->description; + if (m_font.Ok()) + { + m_fontdesc = m_font.GetNativeFontInfo()->description; + + if (m_owner) + { + if (m_font.GetNoAntiAliasing()) + m_context = m_owner->GtkGetPangoX11Context(); + else + m_context = m_owner->GtkGetPangoDefaultContext(); + } + } #endif } @@ -1816,7 +1891,7 @@ void wxWindowDC::SetPen( const wxPen &pen ) gdk_gc_set_dashes( m_penGC, 0, (wxGTKDash*)req_dash, req_nb_dash ); } } -#endif +#endif // GTK+ > 1.0 GdkCapStyle capStyle = GDK_CAP_ROUND; switch (m_pen.GetCap()) @@ -1955,12 +2030,12 @@ void wxWindowDC::SetLogicalFunction( int function ) if (!m_window) return; - GdkFunction mode = GDK_COPY; + GdkFunction mode; switch (function) { case wxXOR: mode = GDK_XOR; break; case wxINVERT: mode = GDK_INVERT; break; -#if (GTK_MINOR_VERSION > 0) +#if (GTK_MINOR_VERSION > 0) || (GTK_MAJOR_VERSION > 1) case wxOR_REVERSE: mode = GDK_OR_REVERSE; break; case wxAND_REVERSE: mode = GDK_AND_REVERSE; break; case wxCLEAR: mode = GDK_CLEAR; break; @@ -1977,12 +2052,10 @@ void wxWindowDC::SetLogicalFunction( int function ) // unsupported by GTK case wxNOR: mode = GDK_COPY; break; -#endif +#endif // GTK+ > 1.0 default: - { wxFAIL_MSG( wxT("unsupported logical function") ); - break; - } + mode = GDK_COPY; } m_logicalFunction = function; diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index 68a991a371..4c95d23682 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -30,8 +30,6 @@ extern void wxapp_install_idle_handler(); extern bool g_isIdle; extern int g_openDialogs; - - //----------------------------------------------------------------------------- // wxDialog //----------------------------------------------------------------------------- @@ -209,9 +207,11 @@ int wxDialog::ShowModal() } wxBusyCursorSuspender cs; // temporarily suppress the busy cursor - + Show( TRUE ); + SetFocus(); + m_modalShowing = TRUE; g_openDialogs++; diff --git a/src/gtk1/files.lst b/src/gtk1/files.lst index 68e2a7dacd..03398c6f5f 100644 --- a/src/gtk1/files.lst +++ b/src/gtk1/files.lst @@ -265,7 +265,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -434,6 +433,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -636,7 +636,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -984,7 +983,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp index 31345187cb..23a8b2b1f0 100644 --- a/src/gtk1/font.cpp +++ b/src/gtk1/font.cpp @@ -93,6 +93,9 @@ public: void SetFaceName(const wxString& facename); void SetEncoding(wxFontEncoding encoding); + void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; } + bool GetNoAntiAliasing() { return m_noAA; } + // and this one also modifies all the other font data fields void SetNativeFontInfo(const wxNativeFontInfo& info); @@ -130,17 +133,14 @@ protected: void InitFromNative(); private: -#ifdef __WXGTK20__ - void ClearGdkFonts() { } -#else // GTK 1.x - // clear m_scaled_xfonts + // clear m_scaled_xfonts if any void ClearGdkFonts(); +#ifndef __WXGTK20__ // the map of font sizes to "GdkFont *" wxScaledFontList m_scaled_xfonts; #endif // GTK 2.0/1.x - // the broken down font parameters int m_pointSize; int m_family, m_style, @@ -148,6 +148,7 @@ private: bool m_underlined; wxString m_faceName; wxFontEncoding m_encoding; // Unused under GTK 2.0 + bool m_noAA; // No anti-aliasing // The native font info, basicly an XFLD under GTK 1.2 and // the pango font description under GTK 2.0. @@ -156,12 +157,8 @@ private: friend class wxFont; }; -// ============================================================================ -// wxFontRefData implementation -// ============================================================================ - // ---------------------------------------------------------------------------- -// wxFontRefData creation +// wxFontRefData // ---------------------------------------------------------------------------- void wxFontRefData::Init(int pointSize, @@ -189,24 +186,36 @@ void wxFontRefData::Init(int pointSize, m_underlined = underlined; m_encoding = encoding; + m_noAA = FALSE; + #ifdef __WXGTK20__ // Create native font info m_nativeFontInfo.description = pango_font_description_new(); // And set its values - switch (m_family) + if (!m_faceName.empty()) { - case wxFONTFAMILY_MODERN: - case wxFONTFAMILY_TELETYPE: - pango_font_description_set_family( m_nativeFontInfo.description, "monospace" ); - break; - case wxFONTFAMILY_SWISS: - pango_font_description_set_family( m_nativeFontInfo.description, "serif" ); - break; - default: - pango_font_description_set_family( m_nativeFontInfo.description, "sans" ); - break; + pango_font_description_set_family( m_nativeFontInfo.description, wxGTK_CONV(m_faceName) ); } + else + { + switch (m_family) + { + case wxFONTFAMILY_MODERN: + case wxFONTFAMILY_TELETYPE: + pango_font_description_set_family( m_nativeFontInfo.description, "monospace" ); + break; + case wxFONTFAMILY_ROMAN: + pango_font_description_set_family( m_nativeFontInfo.description, "serif" ); + break; + case wxFONTFAMILY_SWISS: + // SWISS = sans serif + default: + pango_font_description_set_family( m_nativeFontInfo.description, "sans" ); + break; + } + } + SetStyle( m_style ); SetPointSize( m_pointSize ); SetWeight( m_weight ); @@ -215,6 +224,8 @@ void wxFontRefData::Init(int pointSize, void wxFontRefData::InitFromNative() { + m_noAA = FALSE; + #ifdef __WXGTK20__ // Get native info PangoFontDescription *desc = m_nativeFontInfo.description; @@ -267,6 +278,10 @@ void wxFontRefData::InitFromNative() { m_family = wxFONTFAMILY_SWISS; } + else if (m_faceName == wxT("serif")) + { + m_family = wxFONTFAMILY_ROMAN; + } else { m_family = wxFONTFAMILY_UNKNOWN; @@ -391,7 +406,12 @@ wxFontRefData::wxFontRefData( const wxFontRefData& data ) m_faceName = data.m_faceName; m_encoding = data.m_encoding; - m_nativeFontInfo = data.m_nativeFontInfo; + m_noAA = data.m_noAA; + + // Forces a copy of the internal data. wxNativeFontInfo should probably + // have a copy ctor and assignment operator to fix this properly but that + // would break binary compatibility... + m_nativeFontInfo.FromString(data.m_nativeFontInfo.ToString()); } wxFontRefData::wxFontRefData(int size, int family, int style, @@ -414,9 +434,9 @@ wxFontRefData::wxFontRefData(const wxString& fontname) InitFromNative(); } -#ifndef __WXGTK20__ void wxFontRefData::ClearGdkFonts() { +#ifndef __WXGTK20__ for ( wxScaledFontList::iterator i = m_scaled_xfonts.begin(); i != m_scaled_xfonts.end(); ++i ) @@ -426,8 +446,8 @@ void wxFontRefData::ClearGdkFonts() } m_scaled_xfonts.clear(); -} #endif // GTK 1.x +} wxFontRefData::~wxFontRefData() { @@ -522,7 +542,27 @@ void wxFontRefData::SetWeight(int weight) { m_weight = weight; -#ifndef __WXGTK20__ +#ifdef __WXGTK20__ + PangoFontDescription *desc = m_nativeFontInfo.description; + switch ( weight ) + { + case wxFONTWEIGHT_BOLD: + pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD); + break; + + case wxFONTWEIGHT_LIGHT: + pango_font_description_set_weight(desc, PANGO_WEIGHT_LIGHT); + break; + + default: + wxFAIL_MSG( _T("unknown font weight") ); + // fall through + + case wxFONTWEIGHT_NORMAL: + // unspecified + pango_font_description_set_weight(desc, PANGO_WEIGHT_NORMAL); + } +#else //!__WXGTK20__ if ( HasNativeFont() ) { wxString boldness; @@ -597,10 +637,6 @@ void wxFontRefData::SetNativeFontInfo(const wxNativeFontInfo& info) InitFromNative(); } -// ============================================================================ -// wxFont implementation -// ============================================================================ - // ---------------------------------------------------------------------------- // wxFont creation // ---------------------------------------------------------------------------- @@ -624,7 +660,7 @@ wxFont::wxFont(const wxNativeFontInfo& info) info.GetFaceName(), info.GetEncoding() ); #else - Create(info.GetXFontName()); + (void) Create(info.GetXFontName()); #endif } @@ -636,6 +672,8 @@ bool wxFont::Create( int pointSize, const wxString& face, wxFontEncoding encoding) { + UnRef(); + m_refData = new wxFontRefData(pointSize, family, style, weight, underlined, face, encoding); @@ -679,9 +717,6 @@ wxFont::~wxFont() // accessors // ---------------------------------------------------------------------------- -// all accessors are just forwarded to wxFontRefData which has everything we -// need - int wxFont::GetPointSize() const { wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); @@ -731,6 +766,13 @@ wxFontEncoding wxFont::GetEncoding() const return M_FONTDATA->m_encoding; } +bool wxFont::GetNoAntiAliasing() +{ + wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, wxT("invalid font") ); + + return M_FONTDATA->m_noAA; +} + wxNativeFontInfo *wxFont::GetNativeFontInfo() const { wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") ); @@ -814,11 +856,18 @@ void wxFont::SetEncoding(wxFontEncoding encoding) M_FONTDATA->SetEncoding(encoding); } -void wxFont::SetNativeFontInfo(const wxNativeFontInfo& info) +void wxFont::SetNativeFontInfo( const wxNativeFontInfo& info ) { Unshare(); - M_FONTDATA->SetNativeFontInfo(info); + M_FONTDATA->SetNativeFontInfo( info ); +} + +void wxFont::SetNoAntiAliasing( bool no ) +{ + Unshare(); + + M_FONTDATA->SetNoAntiAliasing( no ); } // ---------------------------------------------------------------------------- diff --git a/src/gtk1/fontdlg.cpp b/src/gtk1/fontdlg.cpp index 4582a5c002..244094a850 100644 --- a/src/gtk1/fontdlg.cpp +++ b/src/gtk1/fontdlg.cpp @@ -64,6 +64,8 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial wxapp_install_idle_handler(); GtkFontSelectionDialog *fontdlg = GTK_FONT_SELECTION_DIALOG(dialog->m_widget); + +#ifndef __WXGTK20__ GdkFont *gfont = gtk_font_selection_dialog_get_font(fontdlg); if (!gfont) @@ -72,13 +74,10 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial wxOK | wxICON_ERROR); return; } +#endif - gchar *fontname = gtk_font_selection_dialog_get_font_name(fontdlg); - - // printf( "font %s\n", fontname ); - - dialog->SetChosenFont(fontname); - + gchar *fontname = gtk_font_selection_dialog_get_font_name( fontdlg ); + dialog->SetChosenFont( fontname); g_free( fontname ); wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK); @@ -181,7 +180,7 @@ wxFontDialog::~wxFontDialog() void wxFontDialog::SetChosenFont(const char *fontname) { - m_fontData.SetChosenFont(wxFont(fontname)); + m_fontData.SetChosenFont(wxFont( wxString::FromAscii(fontname) )); } #endif // wxUSE_FONTDLG diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp index acad4c3355..7e1ed2b2ba 100644 --- a/src/gtk1/frame.cpp +++ b/src/gtk1/frame.cpp @@ -45,7 +45,6 @@ // constants // ---------------------------------------------------------------------------- -const int wxMENU_HEIGHT = 27; const int wxSTATUS_HEIGHT = 25; const int wxPLACE_HOLDER = 0; @@ -165,7 +164,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) child->m_y, child->m_width, child->m_height ); - + #if wxUSE_TOOLBAR_NATIVE // We connect to these events for recalculating the client area // space when the toolbar is floating @@ -193,7 +192,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child ) child->m_width, child->m_height ); } - + // Resize on OnInternalIdle parent->GtkUpdateSize(); } @@ -206,6 +205,7 @@ void wxFrame::Init() { m_menuBarDetached = FALSE; m_toolBarDetached = FALSE; + m_menuBarHeight = 2; } bool wxFrame::Create( wxWindow *parent, @@ -219,6 +219,7 @@ bool wxFrame::Create( wxWindow *parent, bool rt = wxTopLevelWindow::Create(parent, id, title, pos, sizeOrig, style, name); m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame; + return rt; } @@ -245,7 +246,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const if (m_frameMenuBar) { if (!m_menuBarDetached) - (*height) -= wxMENU_HEIGHT; + (*height) -= m_menuBarHeight; else (*height) -= wxPLACE_HOLDER; } @@ -292,7 +293,7 @@ void wxFrame::DoSetClientSize( int width, int height ) if (m_frameMenuBar) { if (!m_menuBarDetached) - height += wxMENU_HEIGHT; + height += m_menuBarHeight; else height += wxPLACE_HOLDER; } @@ -396,7 +397,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int xx = m_miniEdge; int yy = m_miniEdge + m_miniTitle; int ww = m_width - 2*m_miniEdge; - int hh = wxMENU_HEIGHT; + int hh = m_menuBarHeight; if (m_menuBarDetached) hh = wxPLACE_HOLDER; m_frameMenuBar->m_x = xx; m_frameMenuBar->m_y = yy; @@ -419,7 +420,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), if (m_frameMenuBar) { if (!m_menuBarDetached) - yy += wxMENU_HEIGHT; + yy += m_menuBarHeight; else yy += wxPLACE_HOLDER; } @@ -576,11 +577,34 @@ void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) gtk_signal_connect( GTK_OBJECT(menuBar->m_widget), "child_detached", GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this ); } - + m_frameMenuBar->Show( TRUE ); - } - // resize window in OnInternalIdle + UpdateMenuBarSize(); + } + else + { + m_menuBarHeight = 2; + GtkUpdateSize(); // resize window in OnInternalIdle + } +} + +void wxFrame::UpdateMenuBarSize() +{ + wxASSERT_MSG( m_frameMenuBar, _T("Updating non existant menubar?") ); + + GtkRequisition req; + + req.width = 2; + req.height = 2; + + (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_frameMenuBar->m_widget) )->size_request ) + (m_frameMenuBar->m_widget, &req ); + + m_menuBarHeight = req.height; + + // resize window in OnInternalIdle + GtkUpdateSize(); } diff --git a/src/gtk1/gauge.cpp b/src/gtk1/gauge.cpp index 917ab60307..f180206c79 100644 --- a/src/gtk1/gauge.cpp +++ b/src/gtk1/gauge.cpp @@ -15,18 +15,22 @@ #if wxUSE_GAUGE -#include #include //----------------------------------------------------------------------------- // wxGauge //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) +bool wxGauge::Create( wxWindow *parent, + wxWindowID id, + int range, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name ) { m_needParent = TRUE; @@ -38,12 +42,13 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, } m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; m_widget = gtk_progress_bar_new(); - if( style & wxGA_VERTICAL) - gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget) , GTK_PROGRESS_BOTTOM_TO_TOP ); + if ( style & wxGA_VERTICAL ) + { + gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR(m_widget), + GTK_PROGRESS_BOTTOM_TO_TOP ); + } m_parent->DoAddChild( this ); @@ -54,20 +59,31 @@ bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, return TRUE; } -void wxGauge::SetRange( int r ) +void wxGauge::DoSetGauge() { - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxASSERT_MSG( 0 <= m_gaugePos && m_gaugePos <= m_rangeMax, + _T("invalid gauge position in DoSetGauge()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), + m_rangeMax ? ((float)m_gaugePos)/m_rangeMax : 0.); +} + +void wxGauge::SetRange( int range ) +{ + m_rangeMax = range; + if (m_gaugePos > m_rangeMax) + m_gaugePos = m_rangeMax; + + DoSetGauge(); } void wxGauge::SetValue( int pos ) { - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; + wxCHECK_RET( pos <= m_rangeMax, _T("invalid value in wxGauge::SetValue()") ); - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); + m_gaugePos = pos; + + DoSetGauge(); } int wxGauge::GetRange() const diff --git a/src/gtk1/glcanvas.cpp b/src/gtk1/glcanvas.cpp index e46cac9e32..ff037160c6 100644 --- a/src/gtk1/glcanvas.cpp +++ b/src/gtk1/glcanvas.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.cpp +// Name: gtk/glcanvas.cpp // Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWindows and GTK // Author: Robert Roebling // Modified by: // Created: 17/08/98 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -24,7 +24,8 @@ #include "wx/module.h" #include "wx/app.h" -extern "C" { +extern "C" +{ #include "gtk/gtk.h" #include "gdk/gdk.h" #include "gdk/gdkx.h" @@ -58,16 +59,16 @@ wxGLContext::wxGLContext( bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& wxGLCanvas *gc = (wxGLCanvas*) win; XVisualInfo *vi = (XVisualInfo *) gc->m_vi; - - wxCHECK_RET( vi, "invalid visual for OpenGl" ); - + + wxCHECK_RET( vi, _T("invalid visual for OpenGl") ); + m_glContext = glXCreateContext( GDK_DISPLAY(), vi, None, GL_TRUE ); - - wxCHECK_RET( m_glContext, "Couldn't create OpenGl context" ); + + wxCHECK_RET( m_glContext, _T("Couldn't create OpenGl context") ); } -wxGLContext::wxGLContext( - bool WXUNUSED(isRGB), wxWindow *win, +wxGLContext::wxGLContext( + bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& WXUNUSED(palette), const wxGLContext *other /* for sharing display lists */ ) @@ -77,26 +78,28 @@ wxGLContext::wxGLContext( wxGLCanvas *gc = (wxGLCanvas*) win; XVisualInfo *vi = (XVisualInfo *) gc->m_vi; - - wxCHECK_RET( vi, "invalid visual for OpenGl" ); - - if( other != 0 ) - m_glContext = glXCreateContext( GDK_DISPLAY(), vi, other->m_glContext, GL_TRUE ); - else - m_glContext = glXCreateContext( GDK_DISPLAY(), vi, None, GL_TRUE ); - - wxCHECK_RET( m_glContext, "Couldn't create OpenGl context" ); + + wxCHECK_RET( vi, _T("invalid visual for OpenGl") ); + + m_glContext = glXCreateContext( GDK_DISPLAY(), vi, + other ? other->m_glContext : None, + GL_TRUE ); + + if ( !m_glContext ) + { + wxFAIL_MSG( _T("Couldn't create OpenGl context") ); + } } wxGLContext::~wxGLContext() { if (!m_glContext) return; - + if (m_glContext == glXGetCurrentContext()) { glXMakeCurrent( GDK_DISPLAY(), None, NULL); } - + glXDestroyContext( GDK_DISPLAY(), m_glContext ); } @@ -111,14 +114,14 @@ void wxGLContext::SwapBuffers() void wxGLContext::SetCurrent() { - if (m_glContext) - { + if (m_glContext) + { GdkWindow *window = GTK_PIZZA(m_widget)->bin_window; glXMakeCurrent( GDK_DISPLAY(), GDK_WINDOW_XWINDOW(window), m_glContext ); } } -void wxGLContext::SetColour(const char *colour) +void wxGLContext::SetColour(const wxChar *colour) { float r = 0.0; float g = 0.0; @@ -185,10 +188,10 @@ gtk_glwindow_map_callback( GtkWidget * WXUNUSED(widget), wxGLCanvas *win ) // "expose_event" of m_wxwindow //----------------------------------------------------------------------------- -static void +static void gtk_glwindow_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_event, wxGLCanvas *win ) { - if (g_isIdle) + if (g_isIdle) wxapp_install_idle_handler(); win->m_exposed = TRUE; @@ -203,10 +206,10 @@ gtk_glwindow_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_e // "draw" of m_wxwindow //----------------------------------------------------------------------------- -static void +static void gtk_glwindow_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxGLCanvas *win ) { - if (g_isIdle) + if (g_isIdle) wxapp_install_idle_handler(); win->m_exposed = TRUE; @@ -219,7 +222,7 @@ gtk_glwindow_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxG // "size_allocate" of m_wxwindow //----------------------------------------------------------------------------- -static void +static void gtk_glcanvas_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxGLCanvas *win ) { if (g_isIdle) @@ -244,77 +247,80 @@ BEGIN_EVENT_TABLE(wxGLCanvas, wxWindow) END_EVENT_TABLE() wxGLCanvas::wxGLCanvas( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette ) { Create( parent, NULL, NULL, id, pos, size, style, name, attribList, palette ); } -wxGLCanvas::wxGLCanvas( wxWindow *parent, +wxGLCanvas::wxGLCanvas( wxWindow *parent, const wxGLContext *shared, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) -{ + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette ) +{ Create( parent, shared, NULL, id, pos, size, style, name, attribList, palette ); } -wxGLCanvas::wxGLCanvas( wxWindow *parent, +wxGLCanvas::wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) -{ + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette ) +{ Create( parent, NULL, shared, id, pos, size, style, name, attribList, palette ); } -bool wxGLCanvas::Create( wxWindow *parent, +bool wxGLCanvas::Create( wxWindow *parent, const wxGLContext *shared, const wxGLCanvas *shared_context_of, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette) + const wxPoint& pos, const wxSize& size, + long style, const wxString& name, + int *attribList, + const wxPalette& palette) { m_sharedContext = (wxGLContext*)shared; // const_cast m_sharedContextOf = (wxGLCanvas*)shared_context_of; // const_cast m_glContext = (wxGLContext*) NULL; - + m_exposed = FALSE; m_noExpose = TRUE; m_nativeSizeEvent = TRUE; - + XVisualInfo *vi = NULL; - if (wxTheApp->m_glVisualInfo != NULL) { - vi = (XVisualInfo *) wxTheApp->m_glVisualInfo; + if (wxTheApp->m_glVisualInfo != NULL) + { + vi = (XVisualInfo *) wxTheApp->m_glVisualInfo; m_canFreeVi = FALSE; // owned by wxTheApp - don't free upon destruction - } else { + } + else + { vi = (XVisualInfo *) ChooseGLVisual(attribList); m_canFreeVi = TRUE; } m_vi = vi; // save for later use - - wxCHECK_MSG( m_vi, FALSE, "required visual couldn't be found" ); + + wxCHECK_MSG( m_vi, FALSE, _T("required visual couldn't be found") ); GdkVisual *visual = gdkx_visual_get( vi->visualid ); GdkColormap *colormap = gdk_colormap_new( gdkx_visual_get(vi->visualid), TRUE ); - + gtk_widget_push_colormap( colormap ); gtk_widget_push_visual( visual ); wxWindow::Create( parent, id, pos, size, style, name ); m_glWidget = m_wxwindow; - + gtk_pizza_set_clear( GTK_PIZZA(m_wxwindow), FALSE ); - + gtk_signal_connect( GTK_OBJECT(m_wxwindow), "realize", GTK_SIGNAL_FUNC(gtk_glwindow_realized_callback), (gpointer) this ); @@ -326,26 +332,26 @@ bool wxGLCanvas::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw", GTK_SIGNAL_FUNC(gtk_glwindow_draw_callback), (gpointer)this ); - + gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", GTK_SIGNAL_FUNC(gtk_glcanvas_size_callback), (gpointer)this ); gtk_widget_pop_visual(); gtk_widget_pop_colormap(); - + if (GTK_WIDGET_REALIZED(m_wxwindow)) gtk_glwindow_realized_callback( m_wxwindow, this ); - + if (GTK_WIDGET_MAPPED(m_wxwindow)) gtk_glwindow_map_callback( m_wxwindow, this ); - + return TRUE; } wxGLCanvas::~wxGLCanvas() { XVisualInfo *vi = (XVisualInfo *) m_vi; - + if (vi && m_canFreeVi) XFree( vi ); if (m_glContext) delete m_glContext; } @@ -365,12 +371,12 @@ void* wxGLCanvas::ChooseGLVisual(int *attribList) data[10] = GLX_ALPHA_SIZE; data[11] = 0; data[12] = None; - attribList = (int*) data; + attribList = (int*) data; } else { int arg=0, p=0; - + while( (attribList[arg]!=0) && (p<510) ) { switch( attribList[arg++] ) @@ -392,9 +398,9 @@ void* wxGLCanvas::ChooseGLVisual(int *attribList) data[p++]=GLX_BLUE_SIZE; data[p++]=attribList[arg++]; break; case WX_GL_MIN_ALPHA: data[p++]=GLX_ALPHA_SIZE; data[p++]=attribList[arg++]; break; - case WX_GL_DEPTH_SIZE: + case WX_GL_DEPTH_SIZE: data[p++]=GLX_DEPTH_SIZE; data[p++]=attribList[arg++]; break; - case WX_GL_STENCIL_SIZE: + case WX_GL_STENCIL_SIZE: data[p++]=GLX_STENCIL_SIZE; data[p++]=attribList[arg++]; break; case WX_GL_MIN_ACCUM_RED: data[p++]=GLX_ACCUM_RED_SIZE; data[p++]=attribList[arg++]; break; @@ -407,21 +413,22 @@ void* wxGLCanvas::ChooseGLVisual(int *attribList) default: break; } - } - data[p] = 0; + } + data[p] = 0; attribList = (int*) data; } - - + + Display *dpy = GDK_DISPLAY(); - + return glXChooseVisual( dpy, DefaultScreen(dpy), attribList ); } void wxGLCanvas::SwapBuffers() { - if (m_glContext) m_glContext->SwapBuffers(); + if (m_glContext) + m_glContext->SwapBuffers(); } void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event)) @@ -430,12 +437,14 @@ void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event)) void wxGLCanvas::SetCurrent() { - if (m_glContext) m_glContext->SetCurrent(); + if (m_glContext) + m_glContext->SetCurrent(); } -void wxGLCanvas::SetColour( const char *colour ) +void wxGLCanvas::SetColour( const wxChar *colour ) { - if (m_glContext) m_glContext->SetColour( colour ); + if (m_glContext) + m_glContext->SetColour( colour ); } void wxGLCanvas::OnInternalIdle() @@ -449,7 +458,7 @@ void wxGLCanvas::OnInternalIdle() m_exposed = FALSE; GetUpdateRegion().Clear(); } - + wxWindow::OnInternalIdle(); } @@ -460,17 +469,21 @@ void wxGLCanvas::OnInternalIdle() //--------------------------------------------------------------------------- IMPLEMENT_CLASS(wxGLApp, wxApp) - + wxGLApp::~wxGLApp() { - if (m_glVisualInfo) XFree(m_glVisualInfo); + if (m_glVisualInfo) + XFree(m_glVisualInfo); } bool wxGLApp::InitGLVisual(int *attribList) { - if (m_glVisualInfo) XFree(m_glVisualInfo); + if (m_glVisualInfo) + XFree(m_glVisualInfo); + m_glVisualInfo = wxGLCanvas::ChooseGLVisual(attribList); - return (m_glVisualInfo != NULL); + + return m_glVisualInfo != NULL; } #endif diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 3ad658a264..46808ec081 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -1057,7 +1057,7 @@ wxSize wxListBox::DoGetBestSize() const // And just a bit more int cx, cy; - GetTextExtent("X", &cx, &cy); + GetTextExtent( wxT("X"), &cx, &cy); lbWidth += 3 * cx; // don't make the listbox too tall (limit height to around 10 items) but don't diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index 886522158e..91a51708db 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -113,9 +113,16 @@ static wxString wxReplaceUnderscore( const wxString& title ) /* GTK 1.2 wants to have "_" instead of "&" for accelerators */ wxString str; - for ( pc = title; *pc != wxT('\0'); pc++ ) + pc = title; + while (*pc != wxT('\0')) { - if (*pc == wxT('&')) + if ((*pc == wxT('&')) && (*(pc+1) == wxT('&'))) + { + // "&" is doubled to indicate "&" instead of accelerator + ++pc; + str << wxT('&'); + } + else if (*pc == wxT('&')) { #if GTK_CHECK_VERSION(1, 2, 0) str << wxT('_'); @@ -138,7 +145,7 @@ static wxString wxReplaceUnderscore( const wxString& title ) #endif else { -#if __WXGTK12__ +#ifdef __WXGTK12__ if ( *pc == wxT('_') ) { // underscores must be doubled to prevent them from being @@ -149,10 +156,29 @@ static wxString wxReplaceUnderscore( const wxString& title ) str << *pc; } + ++pc; } return str; } +//----------------------------------------------------------------------------- +// activate message from GTK +//----------------------------------------------------------------------------- + +static void gtk_menu_open_callback( GtkWidget *widget, wxMenu *menu ) +{ + if (g_isIdle) wxapp_install_idle_handler(); + + wxMenuEvent event( wxEVT_MENU_OPEN, -1 ); + event.SetEventObject( menu ); + + if (menu->GetEventHandler()->ProcessEvent(event)) + return; + + wxWindow *win = menu->GetInvokingWindow(); + if (win) win->GetEventHandler()->ProcessEvent( event ); +} + //----------------------------------------------------------------------------- // wxMenuBar //----------------------------------------------------------------------------- @@ -384,11 +410,28 @@ bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title) #endif + gtk_signal_connect( GTK_OBJECT(menu->m_owner), "activate", + GTK_SIGNAL_FUNC(gtk_menu_open_callback), + (gpointer)menu ); + // m_invokingWindow is set after wxFrame::SetMenuBar(). This call enables - // adding menu later on. + // addings menu later on. if (m_invokingWindow) + { wxMenubarSetInvokingWindow( menu, m_invokingWindow ); + // OPTIMISE ME: we should probably cache this, or pass it + // directly, but for now this is a minimal + // change to validate the new dynamic sizing. + // see (and refactor :) similar code in Remove + // below. + + wxFrame *frame = wxDynamicCast( m_invokingWindow, wxFrame ); + + if( frame ) + frame->UpdateMenuBarSize(); + } + return TRUE; } @@ -427,6 +470,36 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) return menuOld; } +static wxMenu *CopyMenu (wxMenu *menu) +{ + wxMenu *menucopy = new wxMenu (); + wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); + while (node) + { + wxMenuItem *item = node->GetData(); + int itemid = item->GetId(); + wxString text = item->GetText(); + text.Replace(wxT("_"), wxT("&")); + wxMenu *submenu = item->GetSubMenu(); + if (!submenu) + { + wxMenuItem* itemcopy = new wxMenuItem(menucopy, + itemid, text, + menu->GetHelpString(itemid)); + itemcopy->SetBitmap(item->GetBitmap()); + itemcopy->SetCheckable(item->IsCheckable()); + menucopy->Append(itemcopy); + } + else + menucopy->Append (itemid, text, CopyMenu(submenu), + menu->GetHelpString(itemid)); + + node = node->GetNext(); + } + + return menucopy; +} + wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); @@ -440,18 +513,32 @@ wxMenu *wxMenuBar::Remove(size_t pos) printf( "menu shell entries before %d\n", (int)g_list_length( menu_shell->children ) ); */ + wxMenu *menucopy = CopyMenu( menu ); + // unparent calls unref() and that would delete the widget so we raise // the ref count to 2 artificially before invoking unparent. gtk_widget_ref( menu->m_menu ); gtk_widget_unparent( menu->m_menu ); gtk_widget_destroy( menu->m_owner ); + delete menu; + menu = menucopy; /* printf( "factory entries after %d\n", (int)g_slist_length(m_factory->items) ); printf( "menu shell entries after %d\n", (int)g_list_length( menu_shell->children ) ); */ + if (m_invokingWindow) + { + // OPTIMISE ME: see comment in GtkAppend + + wxFrame *frame = wxDynamicCast( m_invokingWindow, wxFrame ); + + if( frame ) + frame->UpdateMenuBarSize(); + } + return menu; } @@ -554,13 +641,15 @@ wxString wxMenuBar::GetLabelTop( size_t pos ) const wxString text( menu->GetTitle() ); for ( const wxChar *pc = text.c_str(); *pc; pc++ ) { - if ( *pc == wxT('_') || *pc == wxT('&') ) + if ( *pc == wxT('_') ) { - // '_' is the escape character for GTK+ and '&' is the one for - // wxWindows - skip both of them + // '_' is the escape character for GTK+ continue; } + // don't remove ampersands '&' since if we have them in the menu title + // it means that they were doubled to indicate "&" instead of accelerator + label += *pc; } @@ -748,23 +837,33 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text) for ( const wxChar *pc = text.c_str(); *pc; pc++ ) { - if ( *pc == wxT('_') ) + if ( *pc == wxT('_') ) { - // wxGTK escapes "xxx_xxx" to "xxx__xxx" + // GTK 1.2 escapes "xxx_xxx" to "xxx__xxx" pc++; label += *pc; continue; } - if ( *pc == wxT('&') ) +#if GTK_CHECK_VERSION(2, 0, 0) + if ( *pc == wxT('\\') ) { - // wxMSW escapes & + // GTK 2.0 escapes "xxx/xxx" to "xxx\/xxx" + pc++; + label += *pc; continue; } +#endif + if ( (*pc == wxT('&')) && (*(pc+1) != wxT('&')) ) + { + // wxMSW escapes "&" + // "&" is doubled to indicate "&" instead of accelerator + continue; + } + label += *pc; } - return label; } @@ -784,42 +883,54 @@ void wxMenuItem::SetText( const wxString& str ) { GtkLabel *label; if (m_labelWidget) - label = (GtkLabel*) m_labelWidget; + label = (GtkLabel*) m_labelWidget; else - label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); + label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); - /* set new text */ +#if GTK_CHECK_VERSION(2, 0, 0) + // We have to imitate item_factory_unescape_label here + wxString tmp; + for (size_t n = 0; n < m_text.Len(); n++) + { + if (m_text[n] != wxT('\\')) + tmp += m_text[n]; + } + + gtk_label_set_text_with_mnemonic( GTK_LABEL(label), wxGTK_CONV(tmp) ); +#else + // set new text gtk_label_set( label, wxGTK_CONV( m_text ) ); - /* reparse key accel */ - (void)gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV( m_text ) ); + // reparse key accel + (void)gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV(m_text) ); gtk_accel_label_refetch( GTK_ACCEL_LABEL(label) ); +#endif } } // it's valid for this function to be called even if m_menuItem == NULL void wxMenuItem::DoSetText( const wxString& str ) { - /* '\t' is the deliminator indicating a hot key */ + // '\t' is the deliminator indicating a hot key m_text.Empty(); const wxChar *pc = str; - for (; (*pc != wxT('\0')) && (*pc != wxT('\t')); pc++ ) + while ( (*pc != wxT('\0')) && (*pc != wxT('\t')) ) { -#if GTK_CHECK_VERSION(1, 2, 0) - if (*pc == wxT('&')) + if ((*pc == wxT('&')) && (*(pc+1) == wxT('&'))) + { + // "&" is doubled to indicate "&" instead of accelerator + ++pc; + m_text << wxT('&'); + } + else if (*pc == wxT('&')) { m_text << wxT('_'); } +#if GTK_CHECK_VERSION(2, 0, 0) else if ( *pc == wxT('_') ) // escape underscores { - m_text << wxT("__"); + m_text << wxT("__"); } -#else // GTK+ < 1.2.0 - if (*pc == wxT('&')) - { - } -#endif -#if GTK_CHECK_VERSION(2, 0, 0) else if (*pc == wxT('/')) // we have to escape slashes { m_text << wxT("\\/"); @@ -828,16 +939,22 @@ void wxMenuItem::DoSetText( const wxString& str ) { m_text << wxT("\\\\"); } -#elif GTK_CHECK_VERSION(1, 2, 0) +#else + else if ( *pc == wxT('_') ) // escape underscores + { + m_text << wxT("__"); + } else if (*pc == wxT('/')) /* we have to filter out slashes ... */ { m_text << wxT('\\'); /* ... and replace them with back slashes */ } #endif - else + else { m_text << *pc; + } + ++pc; } - + m_hotKey = wxT(""); if(*pc == wxT('\t')) @@ -913,12 +1030,19 @@ wxString wxMenuItem::GetFactoryPath() const for ( const wxChar *pc = m_text.c_str(); *pc; pc++ ) { - if ( *pc == wxT('_') || *pc == wxT('&') ) + if ( *pc == wxT('_') ) { - // remove '_' and '&' unconditionally +#ifdef __WXGTK20__ + pc++; +#else + // remove '_' unconditionally continue; +#endif } + // don't remove ampersands '&' since if we have them in the menu item title + // it means that they were doubled to indicate "&" instead of accelerator + path += *pc; } @@ -1042,7 +1166,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) guint accel_key = gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV( text ) ); gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), menuItem); if (accel_key != GDK_VoidSymbol) - { + { gtk_widget_add_accelerator (menuItem, "activate_item", gtk_menu_ensure_uline_accel_group (GTK_MENU (m_menu)), @@ -1060,6 +1184,7 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) gtk_signal_connect( GTK_OBJECT(menuItem), "activate", GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), (gpointer)this ); + gtk_menu_append( GTK_MENU(m_menu), menuItem ); gtk_widget_show( menuItem ); @@ -1097,7 +1222,9 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) { // start of a new radio group item_type = ""; - m_pathLastRadio = bufPath + 1; + wxString tmp( wxGTK_CONV_BACK( bufPath ) ); + tmp.Remove(0,1); + m_pathLastRadio = tmp; } else // continue the radio group { @@ -1143,10 +1270,15 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) wxString path( mitem->GetFactoryPath() ); menuItem = gtk_item_factory_get_widget( m_factory, wxGTK_CONV( path ) ); + + if (!menuItem) + wxLogError( wxT("Wrong menu path: %s\n"), path.c_str() ); } if ( !mitem->IsSeparator() ) { + wxASSERT_MSG( menuItem, wxT("invalid menuitem") ); + gtk_signal_connect( GTK_OBJECT(menuItem), "select", GTK_SIGNAL_FUNC(gtk_menu_hilight_callback), (gpointer)this ); @@ -1283,6 +1415,33 @@ static wxString GetHotKey( const wxMenuItem& item ) case WXK_DELETE: hotkey << wxT("Delete" ); break; + case WXK_UP: + hotkey << wxT("Up" ); + break; + case WXK_DOWN: + hotkey << wxT("Down" ); + break; + case WXK_PAGEUP: + hotkey << wxT("Prior" ); + break; + case WXK_PAGEDOWN: + hotkey << wxT("Next" ); + break; + case WXK_LEFT: + hotkey << wxT("Left" ); + break; + case WXK_RIGHT: + hotkey << wxT("Right" ); + break; + case WXK_HOME: + hotkey << wxT("Home" ); + break; + case WXK_END: + hotkey << wxT("End" ); + break; + case WXK_RETURN: + hotkey << wxT("Return" ); + break; // if there are any other keys wxGetAccelFromString() may // return, we should process them here @@ -1290,7 +1449,7 @@ static wxString GetHotKey( const wxMenuItem& item ) default: if ( code < 127 ) { - gchar *name = gdk_keyval_name((guint)code); + wxString name = wxGTK_CONV_BACK( gdk_keyval_name((guint)code) ); if ( name ) { hotkey << name; diff --git a/src/gtk1/minifram.cpp b/src/gtk1/minifram.cpp index 2e98dd832e..c23782237b 100644 --- a/src/gtk1/minifram.cpp +++ b/src/gtk1/minifram.cpp @@ -82,28 +82,28 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g 0, 0, win->m_width, win->m_height ); - if (!win->m_title.IsEmpty() && + if (!win->GetTitle().IsEmpty() && ((win->GetWindowStyle() & wxCAPTION) || (win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) || (win->GetWindowStyle() & wxTINY_CAPTION_VERT))) { + wxClientDC dc(win); + dc.SetFont( *wxSMALL_FONT ); + int height = dc.GetCharHeight(); + GdkGC *gc = gdk_gc_new( pizza->bin_window ); - GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0); - gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] ); gdk_draw_rectangle( pizza->bin_window, gc, TRUE, 3, 3, win->m_width - 7, - font->ascent + font->descent+1 ); - - gdk_gc_set_foreground( gc, &widget->style->fg[GTK_STATE_SELECTED] ); - gdk_draw_string( pizza->bin_window, font, gc, - 6, - 3+font->ascent, - wxGTK_CONV( win->m_title ) ); - + height+1 ); gdk_gc_unref( gc ); + + // Hack alert + dc.m_window = pizza->bin_window; + dc.SetTextForeground( *wxWHITE ); + dc.DrawText( win->GetTitle(), 6, 3 ); } } @@ -111,6 +111,7 @@ static void gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *g // "draw" of m_mainWidget //----------------------------------------------------------------------------- +#ifndef __WXGTK20__ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNUSED(rect), wxFrame *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -131,25 +132,26 @@ static void gtk_window_own_draw_callback( GtkWidget *widget, GdkRectangle *WXUNU (win->GetWindowStyle() & wxTINY_CAPTION_HORIZ) || (win->GetWindowStyle() & wxTINY_CAPTION_VERT))) { + wxClientDC dc(win); + dc.SetFont( *wxSMALL_FONT ); + int height = dc.GetCharHeight(); + GdkGC *gc = gdk_gc_new( pizza->bin_window ); - GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0); - gdk_gc_set_foreground( gc, &widget->style->bg[GTK_STATE_SELECTED] ); gdk_draw_rectangle( pizza->bin_window, gc, TRUE, 3, 3, win->m_width - 7, - font->ascent + font->descent+1 ); - - gdk_gc_set_foreground( gc, &widget->style->fg[GTK_STATE_SELECTED] ); - gdk_draw_string( pizza->bin_window, font, gc, - 6, - 3+font->ascent, - wxGTK_CONV( win->m_title ) ); - + height+1 ); gdk_gc_unref( gc ); + + // Hack alert + dc.m_window = pizza->bin_window; + dc.SetTextForeground( *wxWHITE ); + dc.DrawText( win->GetTitle(), 6, 3 ); } } +#endif //----------------------------------------------------------------------------- // "button_press_event" of m_mainWidget @@ -167,9 +169,11 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton GtkPizza *pizza = GTK_PIZZA(widget); if (gdk_event->window != pizza->bin_window) return TRUE; + + wxClientDC dc(win); + dc.SetFont( *wxSMALL_FONT ); + int height = dc.GetCharHeight() + 1; - GdkFont *font = wxSMALL_FONT->GetInternalFont(1.0); - int height = font->ascent + font->descent+1; if (gdk_event->y > height) return TRUE; gdk_window_raise( win->m_widget->window ); @@ -364,8 +368,10 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title gtk_signal_connect( GTK_OBJECT(m_mainWidget), "expose_event", GTK_SIGNAL_FUNC(gtk_window_own_expose_callback), (gpointer)this ); +#ifndef __WXGTK20__ gtk_signal_connect( GTK_OBJECT(m_mainWidget), "draw", GTK_SIGNAL_FUNC(gtk_window_own_draw_callback), (gpointer)this ); +#endif /* these are required for dragging the mini frame around */ gtk_signal_connect( GTK_OBJECT(m_mainWidget), "button_press_event", diff --git a/src/gtk1/notebook.cpp b/src/gtk1/notebook.cpp index fe5e541720..78d7159a87 100644 --- a/src/gtk1/notebook.cpp +++ b/src/gtk1/notebook.cpp @@ -86,14 +86,12 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), gint page, wxNotebook *notebook ) { - static bool s_inPageChange = FALSE; - // are you trying to call SetSelection() from a notebook event handler? // you shouldn't! - wxCHECK_RET( !s_inPageChange, + wxCHECK_RET( !notebook->m_inSwitchPage, _T("gtk_notebook_page_change_callback reentered") ); - s_inPageChange = TRUE; + notebook->m_inSwitchPage = TRUE; if (g_isIdle) wxapp_install_idle_handler(); @@ -123,7 +121,7 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), notebook->GetEventHandler()->ProcessEvent( eventChanged ); } - s_inPageChange = FALSE; + notebook->m_inSwitchPage = FALSE; } //----------------------------------------------------------------------------- @@ -186,10 +184,13 @@ static gint gtk_notebook_key_press_callback( GtkWidget *widget, GdkEventKey *gdk if (!win->m_hasVMT) return FALSE; if (g_blockEventsOnDrag) return FALSE; - /* win is a control: tab can be propagated up */ + // win is a control: tab can be propagated up if ((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) { int sel = win->GetSelection(); + if (sel == -1) + return TRUE; + wxGtkNotebookPage *nb_page = win->GetNotebookPage(sel); wxCHECK_MSG( nb_page, FALSE, _T("invalid selection in wxNotebook") ); @@ -236,6 +237,8 @@ END_EVENT_TABLE() void wxNotebook::Init() { m_padding = 0; + m_inSwitchPage = FALSE; + m_imageList = (wxImageList *) NULL; m_pagesData.DeleteContents( TRUE ); m_selection = -1; diff --git a/src/gtk1/popupwin.cpp b/src/gtk1/popupwin.cpp index 923a68bbd1..236a69d036 100644 --- a/src/gtk1/popupwin.cpp +++ b/src/gtk1/popupwin.cpp @@ -160,7 +160,7 @@ bool wxPopupWindow::Create( wxWindow *parent, int style ) m_needParent = FALSE; if (!PreCreation( parent, wxDefaultPosition, wxDefaultSize ) || - !CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, "popup" )) + !CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, wxT("popup") )) { wxFAIL_MSG( wxT("wxPopupWindow creation failed") ); return FALSE; diff --git a/src/gtk1/radiobox.cpp b/src/gtk1/radiobox.cpp index 26240cc004..5bc55111c2 100644 --- a/src/gtk1/radiobox.cpp +++ b/src/gtk1/radiobox.cpp @@ -418,7 +418,7 @@ bool wxRadioBox::Show( bool show ) return TRUE; } -int wxRadioBox::FindString( const wxString &s ) const +int wxRadioBox::FindString( const wxString &find ) const { wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid radiobox") ); @@ -428,7 +428,12 @@ int wxRadioBox::FindString( const wxString &s ) const while (node) { GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->Data()) ); - if (s == label->label) +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + if (find == str) return count; count++; @@ -505,7 +510,13 @@ wxString wxRadioBox::GetString( int n ) const GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->Data()) ); - return wxString( label->label ); +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + + return str; } void wxRadioBox::SetLabel( const wxString& label ) @@ -592,7 +603,12 @@ wxString wxRadioBox::GetStringSelection() const { GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->Data()) ); - return label->label; +#ifdef __WXGTK20__ + wxString str( wxGTK_CONV_BACK( gtk_label_get_text(label) ) ); +#else + wxString str( label->label ); +#endif + return str; } node = node->Next(); } diff --git a/src/gtk1/region.cpp b/src/gtk1/region.cpp index 7ca7653e2a..f9ac057cbe 100644 --- a/src/gtk1/region.cpp +++ b/src/gtk1/region.cpp @@ -191,25 +191,20 @@ bool wxRegion::Union( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) if ( !width || !height ) return TRUE; - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - - if (!m_refData) + if ( !m_refData ) { - m_refData = new wxRegionRefData(); -#ifdef __WXGTK20__ - M_REGIONDATA->m_region = gdk_region_rectangle( &rect ); -#else - M_REGIONDATA->m_region = gdk_region_union_with_rect(wxGdkRegion(), &rect); -#endif + InitRect(x, y, width, height); } else { AllocExclusive(); + GdkRectangle rect; + rect.x = x; + rect.y = y; + rect.width = width; + rect.height = height; + #ifdef __WXGTK20__ gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect ); #else @@ -274,16 +269,11 @@ bool wxRegion::Intersect( const wxRegion& region ) if (!m_refData) { - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); + // intersecting with invalid region doesn't make sense + return FALSE; + } - // leave here - return TRUE; - } - else - { - AllocExclusive(); - } + AllocExclusive(); #ifdef __WXGTK20__ gdk_region_intersect( M_REGIONDATA->m_region, region.GetRegion() ); @@ -315,14 +305,12 @@ bool wxRegion::Subtract( const wxRegion& region ) if (!m_refData) { - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); - } - else - { - AllocExclusive(); + // subtracting from an invalid region doesn't make sense + return FALSE; } + AllocExclusive(); + #ifdef __WXGTK20__ gdk_region_subtract( M_REGIONDATA->m_region, region.GetRegion() ); #else @@ -353,14 +341,11 @@ bool wxRegion::Xor( const wxRegion& region ) if (!m_refData) { - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); - } - else - { - AllocExclusive(); + return FALSE; } + AllocExclusive(); + #ifdef __WXGTK20__ gdk_region_xor( M_REGIONDATA->m_region, region.GetRegion() ); #else @@ -372,6 +357,18 @@ bool wxRegion::Xor( const wxRegion& region ) return TRUE; } +bool wxRegion::Offset( wxCoord x, wxCoord y ) +{ + if (!m_refData) + return FALSE; + + AllocExclusive(); + + gdk_region_offset( M_REGIONDATA->m_region, x, y ); + + return TRUE; +} + // ---------------------------------------------------------------------------- // wxRegion tests // ---------------------------------------------------------------------------- @@ -403,18 +400,6 @@ wxRect wxRegion::GetBox() const return wxRect( x, y, w, h ); } -bool wxRegion::Offset( wxCoord x, wxCoord y ) -{ - if (!m_refData) - return FALSE; - - AllocExclusive(); - - gdk_region_offset( M_REGIONDATA->m_region, x, y ); - - return TRUE; -} - bool wxRegion::Empty() const { if (!m_refData) @@ -495,7 +480,7 @@ struct _XRegion { _XBox *rects, extents; }; -#endif +#endif // GTK+ 1.x class wxRIRefData: public wxObjectRefData { @@ -592,42 +577,48 @@ bool wxRegionIterator::HaveRects() const return m_current < ((wxRIRefData*)m_refData)->m_numRects; } -wxRegionIterator::operator bool () const +wxRegionIterator& wxRegionIterator::operator ++ () { - return HaveRects(); + if (HaveRects()) + ++m_current; + + return *this; } -void wxRegionIterator::operator ++ () +wxRegionIterator wxRegionIterator::operator ++ (int) { - if (HaveRects()) ++m_current; -} + wxRegionIterator tmp = *this; + if (HaveRects()) + ++m_current; -void wxRegionIterator::operator ++ (int) -{ - if (HaveRects()) ++m_current; + return tmp; } wxCoord wxRegionIterator::GetX() const { - if( !HaveRects() ) return 0; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].x; } wxCoord wxRegionIterator::GetY() const { - if( !HaveRects() ) return 0; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].y; } wxCoord wxRegionIterator::GetW() const { - if( !HaveRects() ) return -1; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].width; } wxCoord wxRegionIterator::GetH() const { - if( !HaveRects() ) return -1; + wxCHECK_MSG( HaveRects(), 0, _T("invalid wxRegionIterator") ); + return ((wxRIRefData*)m_refData)->m_rects[m_current].height; } diff --git a/src/gtk1/scrolbar.cpp b/src/gtk1/scrolbar.cpp index 14530aef24..8f13066bf3 100644 --- a/src/gtk1/scrolbar.cpp +++ b/src/gtk1/scrolbar.cpp @@ -180,6 +180,8 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, PostCreation(); + SetBestSize(size); + SetBackgroundColour( parent->GetBackgroundColour() ); Show( TRUE ); diff --git a/src/gtk1/scrolwin.cpp b/src/gtk1/scrolwin.cpp index a072691442..a18ec663f7 100644 --- a/src/gtk1/scrolwin.cpp +++ b/src/gtk1/scrolwin.cpp @@ -313,7 +313,7 @@ bool wxScrolledWindow::Create(wxWindow *parent, PostCreation(); Show( TRUE ); - + return TRUE; } @@ -349,8 +349,12 @@ void wxScrolledWindow::SetScrollbars( int pixelsPerUnitX, int pixelsPerUnitY, m_hAdjust->value = m_xScrollPosition = xPos; m_vAdjust->value = m_yScrollPosition = yPos; + // Setting hints here should arguably be deprecated, but without it + // a sizer might override this manual scrollbar setting in old code. m_targetWindow->SetVirtualSizeHints( noUnitsX * pixelsPerUnitX, noUnitsY * pixelsPerUnitY ); + m_targetWindow->SetVirtualSize( noUnitsX * pixelsPerUnitX, noUnitsY * pixelsPerUnitY ); + if (!noRefresh) { int new_x = m_xScrollPixelsPerLine * m_xScrollPosition; @@ -381,13 +385,16 @@ void wxScrolledWindow::AdjustScrollbars() // If the scrollbar hits the right side, move the window // right to keep it from over extending. - if( m_hAdjust->value + m_hAdjust->page_size > m_hAdjust->upper ) + if ((m_hAdjust->value != 0.0) && (m_hAdjust->value + m_hAdjust->page_size > m_hAdjust->upper)) { + m_hAdjust->value = m_hAdjust->upper - m_hAdjust->page_size; + if (m_hAdjust->value < 0.0) + m_hAdjust->value = 0.0; + if (GetChildren().GetCount() == 0) - { - m_hAdjust->value = m_hAdjust->upper - m_hAdjust->page_size; - m_xScrollPosition = (int)m_hAdjust->value; - } + m_xScrollPosition = (int)m_hAdjust->value; // This is enough without child windows + else + gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" ); // Actually scroll window } } @@ -401,13 +408,16 @@ void wxScrolledWindow::AdjustScrollbars() m_vAdjust->upper = vh / m_yScrollPixelsPerLine; m_vAdjust->page_size = (h / m_yScrollPixelsPerLine); - if( m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper ) + if ((m_vAdjust->value != 0.0) && (m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper)) { + m_vAdjust->value = m_vAdjust->upper - m_vAdjust->page_size; + if (m_vAdjust->value < 0.0) + m_vAdjust->value = 0.0; + if (GetChildren().GetCount() == 0) - { - m_vAdjust->value = m_vAdjust->upper - m_vAdjust->page_size; - m_yScrollPosition = (int)m_vAdjust->value; - } + m_yScrollPosition = (int)m_vAdjust->value; + else + gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" ); } } @@ -823,10 +833,17 @@ bool wxScrolledWindow::Layout() // Default OnSize resets scrollbars, if any void wxScrolledWindow::OnSize(wxSizeEvent& WXUNUSED(event)) { - if( m_targetWindow != this ) - m_targetWindow->SetVirtualSize( m_targetWindow->GetClientSize() ); + if( GetAutoLayout() ) + { + if( m_targetWindow != this ) + m_targetWindow->FitInside(); - SetVirtualSize( GetClientSize() ); + FitInside(); + } + else + { + AdjustScrollbars(); + } } // This calls OnDraw, having adjusted the origin according to the current @@ -849,7 +866,7 @@ void wxScrolledWindow::OnChar(wxKeyEvent& event) szx, szy, // view size (total) clix, cliy; // view size (on screen) - ViewStart(&stx, &sty); + GetViewStart(&stx, &sty); GetClientSize(&clix, &cliy); GetVirtualSize(&szx, &szy); diff --git a/src/gtk1/settings.cpp b/src/gtk1/settings.cpp index 9aed45b5a9..227599ef0b 100644 --- a/src/gtk1/settings.cpp +++ b/src/gtk1/settings.cpp @@ -16,6 +16,7 @@ #include "wx/debug.h" #include "wx/module.h" #include "wx/cmndata.h" +#include "wx/fontutil.h" #include #include @@ -326,8 +327,12 @@ wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) { if (!g_systemFont) { +#ifdef __WXGTK20__ + const gchar *font_name = _gtk_rc_context_get_default_font_name (gtk_settings_get_default ()); + g_systemFont = new wxFont( wxString::FromAscii( font_name ) ); +#else g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL ); - +#endif } return *g_systemFont; } diff --git a/src/gtk1/slider.cpp b/src/gtk1/slider.cpp index 9f59575679..799f21d2b1 100644 --- a/src/gtk1/slider.cpp +++ b/src/gtk1/slider.cpp @@ -255,14 +255,15 @@ int wxSlider::GetLineSize() const bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) { GtkRange *range = GTK_RANGE(m_widget); +#ifdef __WXGTK20__ + return (range->event_window == window); +#else return ( (window == GTK_WIDGET(range)->window) -#ifndef __WXGTK20__ || (window == range->trough) || (window == range->slider) || (window == range->step_forw) - || (window == range->step_back) -#endif // GTK+ 1.x - ); + || (window == range->step_back) ); +#endif } void wxSlider::ApplyWidgetStyle() diff --git a/src/gtk1/tbargtk.cpp b/src/gtk1/tbargtk.cpp index 235319eb16..2ce4bc754c 100644 --- a/src/gtk1/tbargtk.cpp +++ b/src/gtk1/tbargtk.cpp @@ -278,6 +278,10 @@ bool wxToolBar::Create( wxWindow *parent, #ifdef __WXGTK20__ m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() ); GtkSetStyle(); + + // Doesn't work this way. + // GtkToolbarSpaceStyle space_style = GTK_TOOLBAR_SPACE_EMPTY; + // gtk_widget_style_set (GTK_WIDGET (m_toolbar), "space_style", &space_style, NULL); #else GtkOrientation orient; GtkToolbarStyle gtkStyle; @@ -339,8 +343,6 @@ bool wxToolBar::Create( wxWindow *parent, g_style->bg[GTK_STATE_NORMAL] = *m_bg; - SET_STYLE_FONT(g_style, GtkGetDefaultGuiFont()); - gtk_widget_set_style( GTK_TOOLBAR(m_toolbar)->tooltips->tip_window, g_style ); m_parent->DoAddChild( this ); @@ -374,37 +376,44 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) { wxToolBarTool *tool = (wxToolBarTool *)toolBase; +#ifndef __WXGTK20__ // if we have inserted a space before all the tools we must change the GTK // index by 1 size_t posGtk = m_xMargin > 1 ? pos + 1 : pos; +#else + size_t posGtk = pos; +#endif if ( tool->IsButton() ) { - wxBitmap bitmap = tool->GetNormalBitmap(); + if ( !HasFlag(wxTB_NOICONS) ) + { + wxBitmap bitmap = tool->GetNormalBitmap(); - wxCHECK_MSG( bitmap.Ok(), FALSE, - wxT("invalid bitmap for wxToolBar icon") ); + wxCHECK_MSG( bitmap.Ok(), FALSE, + wxT("invalid bitmap for wxToolBar icon") ); - wxCHECK_MSG( bitmap.GetBitmap() == NULL, FALSE, - wxT("wxToolBar doesn't support GdkBitmap") ); + wxCHECK_MSG( bitmap.GetBitmap() == NULL, FALSE, + wxT("wxToolBar doesn't support GdkBitmap") ); - wxCHECK_MSG( bitmap.GetPixmap() != NULL, FALSE, - wxT("wxToolBar::Add needs a wxBitmap") ); + wxCHECK_MSG( bitmap.GetPixmap() != NULL, FALSE, + wxT("wxToolBar::Add needs a wxBitmap") ); - GtkWidget *tool_pixmap = (GtkWidget *)NULL; + GtkWidget *tool_pixmap = (GtkWidget *)NULL; - GdkPixmap *pixmap = bitmap.GetPixmap(); + GdkPixmap *pixmap = bitmap.GetPixmap(); - GdkBitmap *mask = (GdkBitmap *)NULL; - if ( bitmap.GetMask() ) - mask = bitmap.GetMask()->GetBitmap(); + GdkBitmap *mask = (GdkBitmap *)NULL; + if ( bitmap.GetMask() ) + mask = bitmap.GetMask()->GetBitmap(); - tool_pixmap = gtk_pixmap_new( pixmap, mask ); - gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE ); + tool_pixmap = gtk_pixmap_new( pixmap, mask ); + gtk_pixmap_set_build_insensitive( GTK_PIXMAP(tool_pixmap), TRUE ); - gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); + gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); - tool->m_pixmap = tool_pixmap; + tool->m_pixmap = tool_pixmap; + } } switch ( tool->GetStyle() ) @@ -464,7 +473,7 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase) return FALSE; } - + gtk_signal_connect( GTK_OBJECT(tool->m_item), "enter_notify_event", GTK_SIGNAL_FUNC(gtk_toolbar_tool_callback), @@ -587,8 +596,10 @@ void wxToolBar::SetMargins( int x, int y ) wxCHECK_RET( GetToolsCount() == 0, wxT("wxToolBar::SetMargins must be called before adding tools.") ); +#ifndef __WXGTK20__ if (x > 1) gtk_toolbar_append_space( m_toolbar ); // oh well +#endif m_xMargin = x; m_yMargin = y; diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index 034a4cce4a..1afca19c49 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -18,6 +18,7 @@ #include "wx/settings.h" #include "wx/panel.h" #include "wx/strconv.h" +#include "wx/fontutil.h" // for wxNativeFontInfo (GetNativeFontInfo()) #include #include @@ -46,7 +47,48 @@ extern wxWindowGTK *g_delayedFocus; // helpers // ---------------------------------------------------------------------------- -#ifndef __WXGTK20__ +#ifdef __WXGTK20__ +static void wxGtkTextInsert(GtkWidget *text, + GtkTextBuffer *text_buffer, + const wxTextAttr& attr, + wxCharBuffer buffer) + +{ + PangoFontDescription *font_description = attr.HasFont() + ? attr.GetFont().GetNativeFontInfo()->description + : NULL; + + GdkColor *colFg = attr.HasTextColour() ? attr.GetTextColour().GetColor() + : NULL; + + GdkColor *colBg = attr.HasBackgroundColour() + ? attr.GetBackgroundColour().GetColor() + : NULL; + + GtkTextIter start, end; + GtkTextMark *mark; + // iterators are invalidated by any mutation that affects 'indexable' buffer contents, + // so we save current position in a mark + // we need a mark of left gravity, so we cannot use + // mark = gtk_text_buffer_get_insert (text_buffer) + + gtk_text_buffer_get_iter_at_mark( text_buffer, &start, + gtk_text_buffer_get_insert (text_buffer) ); + mark = gtk_text_buffer_create_mark( text_buffer, NULL, &start, TRUE/*left gravity*/ ); + + gtk_text_buffer_insert_at_cursor( text_buffer, buffer, strlen(buffer) ); + + gtk_text_buffer_get_iter_at_mark( text_buffer, &end, + gtk_text_buffer_get_insert (text_buffer) ); + gtk_text_buffer_get_iter_at_mark( text_buffer, &start, mark ); + + GtkTextTag *tag; + tag = gtk_text_buffer_create_tag( text_buffer, NULL, "font-desc", font_description, + "foreground-gdk", colFg, + "background-gdk", colBg, NULL ); + gtk_text_buffer_apply_tag( text_buffer, tag, &start, &end ); +} +#else static void wxGtkTextInsert(GtkWidget *text, const wxTextAttr& attr, const char *txt, @@ -424,10 +466,8 @@ bool wxTextCtrl::Create( wxWindow *parent, m_cursor = wxCursor( wxCURSOR_IBEAM ); -#ifndef __WXGTK20__ wxTextAttr attrDef( colFg, m_backgroundColour, parent->GetFont() ); SetDefaultStyle( attrDef ); -#endif Show( TRUE ); @@ -475,7 +515,7 @@ wxString wxTextCtrl::GetValue() const GtkTextIter end; gtk_text_buffer_get_end_iter( text_buffer, &end ); gchar *text = gtk_text_buffer_get_text( text_buffer, &start, &end, TRUE ); - + #if wxUSE_UNICODE wxWCharBuffer buffer( wxConvUTF8.cMB2WX( text ) ); #else @@ -552,7 +592,14 @@ void wxTextCtrl::WriteText( const wxString &text ) wxCharBuffer buffer( wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ) ); #endif GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); - gtk_text_buffer_insert_at_cursor( text_buffer, buffer, strlen(buffer) ); + + // TODO: Call whatever is needed to delete the selection. + wxGtkTextInsert( m_text, text_buffer, m_defaultStyle, buffer ); + + // Scroll to cursor. + GtkTextIter iter; + gtk_text_buffer_get_iter_at_mark( text_buffer, &iter, gtk_text_buffer_get_insert( text_buffer ) ); + gtk_text_view_scroll_to_iter( GTK_TEXT_VIEW(m_text), &iter, 0.0, FALSE, 0.0, 1.0 ); #else // GTK 1.x // After cursor movements, gtk_text_get_point() is wrong by one. @@ -561,6 +608,7 @@ void wxTextCtrl::WriteText( const wxString &text ) // always use m_defaultStyle, even if it is empty as otherwise // resetting the style and appending some more text wouldn't work: if // we don't specify the style explicitly, the old style would be used + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); wxGtkTextInsert(m_text, m_defaultStyle, text.c_str(), text.Len()); // Bring editable's cursor back uptodate. @@ -569,6 +617,9 @@ void wxTextCtrl::WriteText( const wxString &text ) } else // single line { + // First remove the selection if there is one + gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); + // This moves the cursor pos to behind the inserted text. gint len = GET_EDITABLE_POS(m_text); @@ -585,9 +636,6 @@ void wxTextCtrl::WriteText( const wxString &text ) gtk_editable_insert_text( GTK_EDITABLE(m_text), text.c_str(), text.Len(), &len ); #endif - // Bring editable's cursor uptodate. - len += text.Len(); - // Bring entry's cursor uptodate. gtk_entry_set_position( GTK_ENTRY(m_text), len ); } @@ -928,6 +976,12 @@ void wxTextCtrl::SetSelection( long from, long to ) { wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") ); + if (from == -1 && to == -1) + { + from = 0; + to = GetValue().Length(); + } + #ifndef __WXGTK20__ if ( (m_windowStyle & wxTE_MULTILINE) && !GTK_TEXT(m_text)->line_start_cache ) @@ -1318,17 +1372,51 @@ bool wxTextCtrl::SetBackgroundColour( const wxColour &colour ) bool wxTextCtrl::SetStyle( long start, long end, const wxTextAttr& style ) { - /* VERY dirty way to do that - removes the required text and re-adds it - with styling (FIXME) */ if ( m_windowStyle & wxTE_MULTILINE ) { -#ifndef __WXGTK20__ if ( style.IsDefault() ) { // nothing to do return TRUE; } +#ifdef __WXGTK20__ + GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) ); + gint l = gtk_text_buffer_get_char_count( text_buffer ); + wxCHECK_MSG( start >= 0 && end <= l, FALSE, + _T("invalid range in wxTextCtrl::SetStyle") ); + + GtkTextIter starti, endi; + gtk_text_buffer_get_iter_at_offset( text_buffer, &starti, start ); + gtk_text_buffer_get_iter_at_offset( text_buffer, &endi, end ); + + // use the attributes from style which are set in it and fall back + // first to the default style and then to the text control default + // colours for the others + wxTextAttr attr = wxTextAttr::Combine(style, m_defaultStyle, this); + + PangoFontDescription *font_description = attr.HasFont() + ? attr.GetFont().GetNativeFontInfo()->description + : NULL; + + GdkColor *colFg = attr.HasTextColour() ? attr.GetTextColour().GetColor() + : NULL; + + GdkColor *colBg = attr.HasBackgroundColour() + ? attr.GetBackgroundColour().GetColor() + : NULL; + + GtkTextTag *tag; + tag = gtk_text_buffer_create_tag( text_buffer, NULL, "font-desc", font_description, + "foreground-gdk", colFg, + "background-gdk", colBg, NULL ); + gtk_text_buffer_apply_tag( text_buffer, tag, &starti, &endi ); + + return TRUE; +#else + // VERY dirty way to do that - removes the required text and re-adds it + // with styling (FIXME) + gint l = gtk_text_get_length( GTK_TEXT(m_text) ); wxCHECK_MSG( start >= 0 && end <= l, FALSE, diff --git a/src/gtk1/tooltip.cpp b/src/gtk1/tooltip.cpp index d6577bfb93..a8e42e4d07 100644 --- a/src/gtk1/tooltip.cpp +++ b/src/gtk1/tooltip.cpp @@ -76,8 +76,6 @@ void wxToolTip::Apply( wxWindow *win ) g_style->fg[GTK_STATE_NORMAL] = ss_fg; g_style->bg[GTK_STATE_NORMAL] = ss_bg; - SET_STYLE_FONT( g_style, GtkGetDefaultGuiFont() ); - gtk_widget_set_style( ss_tooltips->tip_window, g_style ); #else // GTK+ 1.0 gtk_tooltips_set_colors( ss_tooltips, &ss_bg, &ss_fg ); diff --git a/src/gtk1/toplevel.cpp b/src/gtk1/toplevel.cpp index 1ca2768d11..ee33e1ef40 100644 --- a/src/gtk1/toplevel.cpp +++ b/src/gtk1/toplevel.cpp @@ -25,6 +25,7 @@ #include "wx/defs.h" +#include "wx/log.h" #include "wx/dialog.h" #include "wx/control.h" #include "wx/app.h" @@ -446,15 +447,16 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, else { m_gdkDecor = (long) GDK_DECOR_BORDER; - m_gdkFunc = (long) GDK_FUNC_MOVE; + m_gdkFunc = (long) GDK_FUNC_MOVE | GDK_FUNC_CLOSE; // All this is for Motif Window Manager "hints" and is supposed to be // recognized by other WMs as well. if ((style & wxCAPTION) != 0) + { m_gdkDecor |= GDK_DECOR_TITLE; + } if ((style & wxSYSTEM_MENU) != 0) { - m_gdkFunc |= GDK_FUNC_CLOSE; m_gdkDecor |= GDK_DECOR_MENU; } if ((style & wxMINIMIZE_BOX) != 0) @@ -835,6 +837,11 @@ void wxTopLevelWindowGTK::OnInternalIdle() if ( g_delayedFocus && wxGetTopLevelParent((wxWindow*)g_delayedFocus) == this ) { + wxLogTrace(_T("focus"), + _T("Setting focus from wxTLW::OnIdle() to %s(%s)"), + g_delayedFocus->GetClassInfo()->GetClassName(), + g_delayedFocus->GetLabel().c_str()); + g_delayedFocus->SetFocus(); g_delayedFocus = NULL; } diff --git a/src/gtk1/treegtk.cpp b/src/gtk1/treegtk.cpp index 0b0799b56b..98f7fa7893 100644 --- a/src/gtk1/treegtk.cpp +++ b/src/gtk1/treegtk.cpp @@ -315,7 +315,7 @@ wxTreeItemId wxTreeCtrl::GetSelection() const { return p; } -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const { +wxTreeItemId wxTreeCtrl::GetItemParent(const wxTreeItemId& item) const { if (item.IsOk()) return (GtkTreeItem *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "parent"); diff --git a/src/gtk1/win_gtk.c b/src/gtk1/win_gtk.c index 27e2d156bb..fecb23b7f5 100644 --- a/src/gtk1/win_gtk.c +++ b/src/gtk1/win_gtk.c @@ -310,11 +310,11 @@ gtk_pizza_put (GtkPizza *pizza, pizza->children = g_list_append (pizza->children, child_info); - gtk_widget_set_parent (widget, GTK_WIDGET (pizza)); - if (GTK_WIDGET_REALIZED (pizza)) gtk_widget_set_parent_window (widget, pizza->bin_window); + gtk_widget_set_parent (widget, GTK_WIDGET (pizza)); + #ifndef __WXGTK20__ /* FIXME? */ if (!IS_ONSCREEN (x, y)) GTK_PRIVATE_SET_FLAG (widget, GTK_IS_OFFSCREEN); diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 6411fca957..146a2d37ae 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -67,6 +67,10 @@ #include "wx/gtk/win_gtk.h" +#ifdef __WXGTK20__ +#include +#endif + #ifdef __WXGTK20__ #define SET_CONTAINER_FOCUS(w, d) gtk_widget_child_focus((w), (d)) #else @@ -262,7 +266,7 @@ extern bool g_mainThreadLocked; //----------------------------------------------------------------------------- #ifndef __WXGTK20__ -#define DISABLE_STYLE_IF_BROKEN_THEME 1 +#define DISABLE_STYLE_IF_BROKEN_THEME 0 #endif #ifdef __WXDEBUG__ @@ -501,10 +505,10 @@ static int gtk_window_expose_callback( GtkWidget *widget, // This callback gets called in drawing-idle time under // GTK 2.0, so we don't need to defer anything to idle // time anymore. - + GtkPizza *pizza = GTK_PIZZA( widget ); if (gdk_event->window != pizza->bin_window) return FALSE; - + #if 0 if (win->GetName()) { @@ -522,13 +526,14 @@ static int gtk_window_expose_callback( GtkWidget *widget, win->GtkSendPaintEvents(); + // Let parent window draw window less widgets (* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event); #else // This gets called immediately after an expose event // under GTK 1.2 so we collect the calls and wait for // the idle handler to pick things up. - + win->GetUpdateRegion().Union( gdk_event->area.x, gdk_event->area.y, gdk_event->area.width, @@ -1060,6 +1065,7 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event, return TRUE; } +#ifndef __WXGTK20__ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) @@ -1130,7 +1136,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, wxLogTrace(TRACE_KEYS, _T("Char event: %ld"), key_code); event.m_keyCode = key_code; - + // Implement OnCharHook by checking ancesteror top level windows wxWindow *parent = win; while (parent && !parent->IsTopLevel()) @@ -1207,45 +1213,184 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, } } - // Doesn't work. -#if 0 - // Pressing F10 will activate the menu bar of the top frame - if ( (!ret) && - (gdk_event->keyval == GDK_F10) ) + if (ret) { - wxWindowGTK *ancestor = win; - while (ancestor) + gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); + return TRUE; + } + + return FALSE; +} +#endif + +#ifdef __WXGTK20__ +static gint gtk_window_key_press_callback( GtkWidget *widget, + GdkEventKey *gdk_event, + wxWindow *win ) +{ + if (g_isIdle) + wxapp_install_idle_handler(); + + if (!win->m_hasVMT) + return FALSE; + if (g_blockEventsOnDrag) + return FALSE; + + bool ret = FALSE; + bool dont_use_IM = FALSE; + + wxKeyEvent event( wxEVT_KEY_DOWN ); + long keycode = wxTranslateKeySymToWXKey( gdk_event->keyval, FALSE ); + if (keycode) + { + // We were able to decode the key press without + // any input method, so don't use it. + dont_use_IM = TRUE; + + // now fill all the other fields + int x = 0; + int y = 0; + GdkModifierType state; + if (gdk_event->window) + gdk_window_get_pointer(gdk_event->window, &x, &y, &state); + + event.SetTimestamp( gdk_event->time ); + event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK) != 0; + event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK) != 0; + event.m_altDown = (gdk_event->state & GDK_MOD1_MASK) != 0; + event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK) != 0; + event.m_keyCode = keycode; + event.m_scanCode = gdk_event->keyval; + event.m_rawCode = (wxUint32) gdk_event->keyval; + event.m_rawFlags = 0; + event.m_x = x; + event.m_y = y; + event.SetEventObject( win ); + + // send key down event + ret = win->GetEventHandler()->ProcessEvent( event ); + + if (!ret) { - if (wxIsKindOf(ancestor,wxFrame)) + // Implement OnCharHook by checking ancesteror top level windows + wxWindow *parent = win; + while (parent && !parent->IsTopLevel()) + parent = parent->GetParent(); + if (parent) { - wxFrame *frame = (wxFrame*) ancestor; - wxMenuBar *menubar = frame->GetMenuBar(); - if (menubar) - { - wxNode *node = menubar->GetMenus().First(); - if (node) - { - wxMenu *firstMenu = (wxMenu*) node->Data(); - gtk_menu_item_select( GTK_MENU_ITEM(firstMenu->m_owner) ); - ret = TRUE; - break; - } - } + event.SetEventType( wxEVT_CHAR_HOOK ); + ret = parent->GetEventHandler()->ProcessEvent( event ); + } + + if (!ret) + { + event.SetEventType(wxEVT_CHAR); + ret = win->GetEventHandler()->ProcessEvent( event ); + } + } + + // win is a control: tab can be propagated up + if ( !ret && + ((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) && + win->GetParent() && (win->GetParent()->HasFlag( wxTAB_TRAVERSAL)) ) + { + wxNavigationKeyEvent new_event; + new_event.SetEventObject( win->GetParent() ); + // GDK reports GDK_ISO_Left_Tab for SHIFT-TAB + new_event.SetDirection( (gdk_event->keyval == GDK_Tab) ); + // CTRL-TAB changes the (parent) window, i.e. switch notebook page + new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) ); + new_event.SetCurrentFocus( win ); + ret = win->GetParent()->GetEventHandler()->ProcessEvent( new_event ); + } + + if ( !ret && + (gdk_event->keyval == GDK_Escape) ) + { + wxWindow *winForCancel = win, *btnCancel = NULL; + while ( winForCancel ) + { + btnCancel = winForCancel->FindWindow(wxID_CANCEL); + if ( btnCancel ) break; + + if ( winForCancel->IsTopLevel() ) break; + + winForCancel = winForCancel->GetParent(); + } + + if ( btnCancel ) + { + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); + event.SetEventObject(btnCancel); + ret = btnCancel->GetEventHandler()->ProcessEvent(event); } - ancestor = ancestor->GetParent(); } } -#endif // 0 if (ret) { gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); return TRUE; } - + + if (!dont_use_IM && win->m_imContext) + { + // In GTK 2.0, we need to hand over the key + // event to an input method and the IM will + // emit a "commit" event containing the + // actual utf8 character. + gtk_im_context_filter_keypress ( (GtkIMContext*) win->m_imContext, gdk_event ); + + return TRUE; + } + return FALSE; } +static void gtk_wxwindow_commit_cb (GtkIMContext *context, + const gchar *str, + wxWindow *window) +{ + bool ret = FALSE; + + wxKeyEvent event( wxEVT_KEY_DOWN ); + +#if wxUSE_UNICODE + event.m_uniChar = g_utf8_get_char( str ); + + // Backward compatible for ISO-8859 + if (event.m_uniChar < 256) + event.m_keyCode = event.m_uniChar; +#else + gunichar uniChar = g_utf8_get_char( str ); + // We cannot handle Unicode in non-Unicode mode + if (uniChar > 255) return; + + event.m_keyCode = uniChar; +#endif + + if (!ret) + { + // Implement OnCharHook by checking ancesteror top level windows + wxWindow *parent = window; + while (parent && !parent->IsTopLevel()) + parent = parent->GetParent(); + if (parent) + { + event.SetEventType( wxEVT_CHAR_HOOK ); + ret = parent->GetEventHandler()->ProcessEvent( event ); + } + + if (!ret) + { + event.SetEventType(wxEVT_CHAR); + ret = window->GetEventHandler()->ProcessEvent( event ); + } + } +} +#endif + + //----------------------------------------------------------------------------- // "key_release_event" from any window //----------------------------------------------------------------------------- @@ -1303,6 +1448,13 @@ static gint gtk_window_key_release_callback( GtkWidget *widget, event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); \ event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); \ event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); \ + if (event.GetEventType()==wxEVT_MOUSEWHEEL) \ + { \ + if (((GdkEventButton*)gdk_event)->button == 4) \ + event.m_wheelRotation = 120; \ + else if (((GdkEventButton*)gdk_event)->button == 5) \ + event.m_wheelRotation = -120; \ + } \ \ wxPoint pt = win->GetClientAreaOrigin(); \ event.m_x = (wxCoord)gdk_event->x - pt.x; \ @@ -1447,6 +1599,26 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, */ } + // GDK sends surplus button down event + // before a double click event. We + // need to filter these out. + if (gdk_event->type == GDK_BUTTON_PRESS) + { + GdkEvent *peek_event = gdk_event_peek(); + if (peek_event) + { + if (peek_event->type == GDK_2BUTTON_PRESS) + { + gdk_event_free( peek_event ); + return TRUE; + } + else + { + gdk_event_free( peek_event ); + } + } + } + wxEventType event_type = wxEVT_NULL; if (gdk_event->button == 1) @@ -1476,6 +1648,22 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, default: break; } } + else if (gdk_event->button == 4) + { + switch (gdk_event->type) + { + case GDK_BUTTON_PRESS: event_type = wxEVT_MOUSEWHEEL; break; + default: break; + } + } + else if (gdk_event->button == 5) + { + switch (gdk_event->type) + { + case GDK_BUTTON_PRESS: event_type = wxEVT_MOUSEWHEEL; break; + default: break; + } + } if ( event_type == wxEVT_NULL ) { @@ -1507,6 +1695,20 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, wxPrintf( wxT(".\n") ); */ +#ifndef __WXGTK20__ + if (event_type == wxEVT_LEFT_DCLICK) + { + // GTK 1.2 crashes when intercepting double + // click events from both wxSpinButton and + // wxSpinCtrl + if (GTK_IS_SPIN_BUTTON(win->m_widget)) + { + // Just disable this event for now. + return FALSE; + } + } +#endif + if (win->GetEventHandler()->ProcessEvent( event )) { gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" ); @@ -1520,7 +1722,9 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, // "button_release_event" //----------------------------------------------------------------------------- -static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindowGTK *win ) +static gint gtk_window_button_release_callback( GtkWidget *widget, + GdkEventButton *gdk_event, + wxWindowGTK *win ) { DEBUG_MAIN_THREAD @@ -1533,21 +1737,25 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE; -/* - printf( "OnButtonRelease from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - wxEventType event_type = wxEVT_NULL; switch (gdk_event->button) { - case 1: event_type = wxEVT_LEFT_UP; break; - case 2: event_type = wxEVT_MIDDLE_UP; break; - case 3: event_type = wxEVT_RIGHT_UP; break; - default: return FALSE; + case 1: + event_type = wxEVT_LEFT_UP; + break; + + case 2: + event_type = wxEVT_MIDDLE_UP; + break; + + case 3: + event_type = wxEVT_RIGHT_UP; + break; + + default: + // unknwon button, don't process + return FALSE; } wxMouseEvent event( event_type ); @@ -1558,6 +1766,20 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto // same wxListBox hack as above win->FixUpMouseEvent(widget, event.m_x, event.m_y); + if ( event_type == wxEVT_RIGHT_UP ) + { + // generate a "context menu" event: this is similar to wxEVT_RIGHT_UP + // except that: + // + // (a) it's a command event and so is propagated to the parent + // (b) under MSW it can be generated from kbd too + // (c) it uses screen coords (because of (a)) + wxContextMenuEvent evtCtx(wxEVT_CONTEXT_MENU, + win->GetId(), + win->ClientToScreen(event.GetPosition())); + (void)win->GetEventHandler()->ProcessEvent(evtCtx); + } + if ( !g_captureWindow ) win = FindWindowForMouseEvent(win, event.m_x, event.m_y); @@ -1706,7 +1928,7 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, #endif // wxUSE_CARET g_activeFrameLostFocus = FALSE; - + wxWindowGTK *active = wxGetTopLevelParent(win); if ( active != g_activeFrame ) { @@ -1723,7 +1945,7 @@ static gint gtk_window_focus_in_callback( GtkWidget *widget, wxActivateEvent event(wxEVT_ACTIVATE, TRUE, g_activeFrame->GetId()); event.SetEventObject(g_activeFrame); g_activeFrame->GetEventHandler()->ProcessEvent(event); - + // Don't send focus events in addition to activate // if (win == g_activeFrame) // return TRUE; @@ -2077,7 +2299,7 @@ static void gtk_window_destroy_callback( GtkWidget* widget, wxWindow *win ) been realized, so we do this directly after realization. */ static gint -gtk_window_realized_callback( GtkWidget *WXUNUSED(m_widget), wxWindow *win ) +gtk_window_realized_callback( GtkWidget *m_widget, wxWindow *win ) { DEBUG_MAIN_THREAD @@ -2090,6 +2312,14 @@ gtk_window_realized_callback( GtkWidget *WXUNUSED(m_widget), wxWindow *win ) if (win->m_delayedForegroundColour) win->GtkSetForegroundColour( win->GetForegroundColour() ); +#ifdef __WXGTK20__ + if (win->m_imContext) + { + GtkPizza *pizza = GTK_PIZZA( m_widget ); + gtk_im_context_set_client_window( (GtkIMContext*) win->m_imContext, pizza->bin_window ); + } +#endif + wxWindowCreateEvent event( win ); event.SetEventObject( win ); win->GetEventHandler()->ProcessEvent( event ); @@ -2349,10 +2579,15 @@ void wxWindowGTK::Init() m_delayedForegroundColour = FALSE; m_delayedBackgroundColour = FALSE; +#ifdef __WXGTK20__ + m_imContext = NULL; + m_x11Context = NULL; +#else #ifdef HAVE_XIM m_ic = (GdkIC*) NULL; m_icattr = (GdkICAttr*) NULL; #endif +#endif } wxWindowGTK::wxWindowGTK() @@ -2387,9 +2622,9 @@ bool wxWindowGTK::Create( wxWindow *parent, } m_insertCallback = wxInsertChildInWindow; - + // always needed for background clearing - m_delayedBackgroundColour = TRUE; + m_delayedBackgroundColour = TRUE; m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); @@ -2473,6 +2708,17 @@ bool wxWindowGTK::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed", (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this ); +#ifdef __WXGTK20__ + // Create input method handler + m_imContext = (GtkIMMulticontext*) gtk_im_multicontext_new (); + + // Cannot handle drawing preedited text yet + gtk_im_context_set_use_preedit( (GtkIMContext*) m_imContext, FALSE ); + + g_signal_connect (G_OBJECT (m_imContext), "commit", + G_CALLBACK (gtk_wxwindow_commit_cb), this); +#endif + gtk_widget_show( m_wxwindow ); if (m_parent) @@ -2489,6 +2735,11 @@ bool wxWindowGTK::Create( wxWindow *parent, wxWindowGTK::~wxWindowGTK() { + // Send destroy event + wxWindowDestroyEvent destroyEvent(this); + destroyEvent.SetId(GetId()); + GetEventHandler()->ProcessEvent(destroyEvent); + if (g_focusWindow == this) g_focusWindow = NULL; @@ -2596,7 +2847,18 @@ void wxWindowGTK::PostCreation() GTK_SIGNAL_FUNC(gtk_window_event_event_callback), (gpointer)this ); } #else - gtk_widget_set_redraw_on_allocate( GTK_WIDGET(m_wxwindow), HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ) ); + // gtk_widget_set_redraw_on_allocate( GTK_WIDGET(m_wxwindow), HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ) ); +#endif + +#ifdef __WXGTK20__ + // Create input method handler + m_imContext = (GtkIMMulticontext*) gtk_im_multicontext_new (); + + // Cannot handle drawing preedited text yet + gtk_im_context_set_use_preedit( (GtkIMContext*) m_imContext, FALSE ); + + g_signal_connect (G_OBJECT (m_imContext), "commit", + G_CALLBACK (gtk_wxwindow_commit_cb), this); #endif } @@ -2683,7 +2945,7 @@ void wxWindowGTK::ConnectWidget( GtkWidget *widget ) gtk_signal_connect( GTK_OBJECT(widget), "leave_notify_event", GTK_SIGNAL_FUNC(gtk_window_leave_callback), (gpointer)this ); - + // This keeps crashing on me. RR. // // gtk_signal_connect( GTK_OBJECT(widget), "destroy", @@ -2842,7 +3104,7 @@ void wxWindowGTK::OnInternalIdle() } g_activeFrameLostFocus = FALSE; } - + wxCursor cursor = m_cursor; if (g_globalCursor.Ok()) cursor = g_globalCursor; @@ -3113,6 +3375,11 @@ bool wxWindowGTK::Show( bool show ) else gtk_widget_hide( m_widget ); + wxShowEvent eventShow(GetId(), show); + eventShow.m_eventObject = this; + + GetEventHandler()->ProcessEvent(eventShow); + return TRUE; } @@ -3158,9 +3425,31 @@ int wxWindowGTK::GetCharHeight() const wxCHECK_MSG( m_font.Ok(), 12, wxT("invalid font") ); +#ifdef __WXGTK20__ + PangoContext *context = NULL; + if (m_widget) + context = gtk_widget_get_pango_context( m_widget ); + + if (!context) + return 0; + + PangoFontDescription *desc = m_font.GetNativeFontInfo()->description; + PangoLayout *layout = pango_layout_new(context); + pango_layout_set_font_description(layout, desc); + pango_layout_set_text(layout, "H", 1); + PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + + PangoRectangle rect; + pango_layout_line_get_extents(line, NULL, &rect); + + g_object_unref( G_OBJECT( layout ) ); + + return (int) (rect.height / PANGO_SCALE); +#else GdkFont *font = m_font.GetInternalFont( 1.0 ); return font->ascent + font->descent; +#endif } int wxWindowGTK::GetCharWidth() const @@ -3169,9 +3458,31 @@ int wxWindowGTK::GetCharWidth() const wxCHECK_MSG( m_font.Ok(), 8, wxT("invalid font") ); +#ifdef __WXGTK20__ + PangoContext *context = NULL; + if (m_widget) + context = gtk_widget_get_pango_context( m_widget ); + + if (!context) + return 0; + + PangoFontDescription *desc = m_font.GetNativeFontInfo()->description; + PangoLayout *layout = pango_layout_new(context); + pango_layout_set_font_description(layout, desc); + pango_layout_set_text(layout, "H", 1); + PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + + PangoRectangle rect; + pango_layout_line_get_extents(line, NULL, &rect); + + g_object_unref( G_OBJECT( layout ) ); + + return (int) (rect.width / PANGO_SCALE); +#else GdkFont *font = m_font.GetInternalFont( 1.0 ); return gdk_string_width( font, "H" ); +#endif } void wxWindowGTK::GetTextExtent( const wxString& string, @@ -3185,26 +3496,26 @@ void wxWindowGTK::GetTextExtent( const wxString& string, if (theFont) fontToUse = *theFont; wxCHECK_RET( fontToUse.Ok(), wxT("invalid font") ); - + if (string.IsEmpty()) { if (x) (*x) = 0; if (y) (*y) = 0; return; } -#ifdef __WXGTK20__ +#ifdef __WXGTK20__ PangoContext *context = NULL; if (m_widget) - gtk_widget_get_pango_context( m_widget ); - + context = gtk_widget_get_pango_context( m_widget ); + if (!context) { if (x) (*x) = 0; if (y) (*y) = 0; return; } - + PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description; PangoLayout *layout = pango_layout_new(context); pango_layout_set_font_description(layout, desc); @@ -3219,10 +3530,10 @@ void wxWindowGTK::GetTextExtent( const wxString& string, #endif } PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; - + PangoRectangle rect; pango_layout_line_get_extents(line, NULL, &rect); - + if (x) (*x) = (wxCoord) (rect.width / PANGO_SCALE); if (y) (*y) = (wxCoord) (rect.height / PANGO_SCALE); if (descent) @@ -3231,7 +3542,7 @@ void wxWindowGTK::GetTextExtent( const wxString& string, (*descent) = 0; } if (externalLeading) (*externalLeading) = 0; // ?? - + g_object_unref( G_OBJECT( layout ) ); #else GdkFont *font = fontToUse.GetInternalFont( 1.0 ); @@ -3408,11 +3719,11 @@ void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect ) { if (!m_widget) return; if (!m_widget->window) return; - + #ifndef __WXGTK20__ if (g_isIdle) wxapp_install_idle_handler(); - + if (eraseBackground && m_wxwindow && m_wxwindow->window) { if (rect) @@ -3498,7 +3809,7 @@ void wxWindowGTK::GtkSendPaintEvents() { if (!m_wxwindow) { -#ifndef __WXGTK20__ +#ifndef __WXGTK20__ m_clearRegion.Clear(); #endif m_updateRegion.Clear(); @@ -3511,7 +3822,7 @@ void wxWindowGTK::GtkSendPaintEvents() #ifndef __WXGTK20__ // widget to draw on GtkPizza *pizza = GTK_PIZZA (m_wxwindow); - + // later for GTK 2.0, too. if (GetThemeEnabled()) { @@ -3521,7 +3832,7 @@ void wxWindowGTK::GtkSendPaintEvents() parent = parent->GetParent(); if (!parent) parent = (wxWindow*)this; - + wxRegionIterator upd( m_updateRegion ); while (upd) { @@ -3530,7 +3841,7 @@ void wxWindowGTK::GtkSendPaintEvents() rect.y = upd.GetY(); rect.width = upd.GetWidth(); rect.height = upd.GetHeight(); - + gtk_paint_flat_box( parent->m_widget->style, pizza->bin_window, GTK_STATE_NORMAL, @@ -3539,7 +3850,7 @@ void wxWindowGTK::GtkSendPaintEvents() parent->m_widget, (char *)"base", 0, 0, -1, -1 ); - + upd ++; } } @@ -3610,7 +3921,7 @@ void wxWindowGTK::GtkSendPaintEvents() { GtkPizzaChild *child = (GtkPizzaChild*) children->data; children = children->next; - + if (GTK_WIDGET_NO_WINDOW (child->widget) && GTK_WIDGET_DRAWABLE (child->widget)) { @@ -3656,7 +3967,7 @@ void wxWindowGTK::Clear() m_clearRegion.Clear(); wxSize size( GetClientSize() ); m_clearRegion.Union( 0,0,size.x,size.y ); - + // Better do this in idle? GtkUpdate(); } @@ -3687,10 +3998,10 @@ void wxWindowGTK::GtkSetBackgroundColour( const wxColour &colour ) window = GetConnectWidget()->window; wxASSERT( window ); - + // We need the pixel value e.g. for background clearing. m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - + if (m_wxwindow) { // wxMSW doesn't clear the window here, either. @@ -3774,6 +4085,21 @@ bool wxWindowGTK::SetForegroundColour( const wxColour &colour ) return TRUE; } +#ifdef __WXGTK20__ +PangoContext *wxWindowGTK::GtkGetPangoDefaultContext() +{ + return gtk_widget_get_pango_context( m_widget ); +} + +PangoContext *wxWindowGTK::GtkGetPangoX11Context() +{ + if (!m_x11Context) + m_x11Context = pango_x_get_context( gdk_display ); + + return m_x11Context; +} +#endif + GtkStyle *wxWindowGTK::GetWidgetStyle() { if (m_widgetStyle) @@ -3826,7 +4152,13 @@ void wxWindowGTK::SetWidgetStyle() if (m_font != wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT )) { - SET_STYLE_FONT(style, m_font.GetInternalFont( 1.0 )); +#ifdef __WXGTK20__ + pango_font_description_free( style->font_desc ); + pango_font_description_copy( m_font.GetNativeFontInfo()->description ); +#else + gdk_font_unref( style->font ); + style->font = gdk_font_ref( m_font.GetInternalFont( 1.0 ) ); +#endif } if (m_foregroundColour.Ok()) @@ -4271,7 +4603,7 @@ void wxWindowGTK::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) ) wxCHECK_RET( m_widget != NULL, wxT("invalid window") ); wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") ); - + // No scrolling requested. if ((dx == 0) && (dy == 0)) return; @@ -4328,10 +4660,8 @@ wxPoint wxGetMousePosition() int x, y; GdkWindow* windowAtPtr = gdk_window_at_pointer(& x, & y); - if (!windowAtPtr) - return wxPoint(-999, -999); - Display *display = GDK_WINDOW_XDISPLAY(windowAtPtr); + Display *display = windowAtPtr ? GDK_WINDOW_XDISPLAY(windowAtPtr) : GDK_DISPLAY(); Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display)); Window rootReturn, childReturn; int rootX, rootY, winX, winY; diff --git a/src/html/descrip.mms b/src/html/descrip.mms index c03594367b..503f51c556 100644 --- a/src/html/descrip.mms +++ b/src/html/descrip.mms @@ -41,13 +41,13 @@ OBJECTS = \ helpctrl.obj,helpdata.obj,helpfrm.obj,htmlcell.obj,htmlfilt.obj,\ htmlpars.obj,htmltag.obj,htmlwin.obj,htmprint.obj,m_dflist.obj,\ m_fonts.obj,m_hline.obj,m_image.obj,m_layout.obj,m_links.obj,\ - m_list.obj,m_meta.obj,m_pre.obj,m_tables.obj,winpars.obj + m_list.obj,m_pre.obj,m_tables.obj,winpars.obj SOURCES = \ helpctrl.cpp,helpdata.cpp,helpfrm.cpp,htmlcell.cpp,htmlfilt.cpp,\ htmlpars.cpp,htmltag.cpp,htmlwin.cpp,htmprint.cpp,m_dflist.cpp,\ m_fonts.cpp,m_hline.cpp,m_image.cpp,m_layout.cpp,m_links.cpp,\ - m_list.cpp,m_meta.cpp,m_pre.cpp,m_tables.cpp,winpars.cpp + m_list.cpp,m_pre.cpp,m_tables.cpp,winpars.cpp all : $(SOURCES) $(MMS)$(MMSQUALIFIERS) $(OBJECTS) @@ -79,7 +79,6 @@ m_image.obj : m_image.cpp m_layout.obj : m_layout.cpp m_links.obj : m_links.cpp m_list.obj : m_list.cpp -m_meta.obj : m_meta.cpp m_pre.obj : m_pre.cpp m_tables.obj : m_tables.cpp winpars.obj : winpars.cpp diff --git a/src/html/helpctrl.cpp b/src/html/helpctrl.cpp index b55d11fcb9..1748fef73d 100644 --- a/src/html/helpctrl.cpp +++ b/src/html/helpctrl.cpp @@ -84,6 +84,11 @@ void wxHtmlHelpController::SetTitleFormat(const wxString& title) } +bool wxHtmlHelpController::AddBook(const wxFileName& book_file, bool show_wait_msg) +{ + return AddBook(wxFileSystem::FileNameToURL(book_file), show_wait_msg); +} + bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg) { wxBusyCursor cur; @@ -171,7 +176,7 @@ bool wxHtmlHelpController::Initialize(const wxString& file) wxSplitPath(file, & dir, & filename, & ext); if (!dir.IsEmpty()) - dir = dir + wxString(wxT("/")); + dir = dir + wxFILE_SEP_PATH; // Try to find a suitable file wxString actualFilename = dir + filename + wxString(wxT(".zip")); @@ -186,7 +191,7 @@ bool wxHtmlHelpController::Initialize(const wxString& file) } } - return AddBook(actualFilename); + return AddBook(wxFileName(actualFilename)); } bool wxHtmlHelpController::LoadFile(const wxString& WXUNUSED(file)) diff --git a/src/html/helpdata.cpp b/src/html/helpdata.cpp index 4dcef850cf..82c9ec07d0 100644 --- a/src/html/helpdata.cpp +++ b/src/html/helpdata.cpp @@ -40,6 +40,7 @@ #include "wx/log.h" #include "wx/html/htmlpars.h" #include "wx/html/htmldefs.h" +#include "wx/html/htmlfilt.h" #include "wx/filename.h" #include "wx/arrimpl.cpp" @@ -250,12 +251,10 @@ wxHtmlHelpData::~wxHtmlHelpData() } } -// defined in htmlfilt.cpp -void wxPrivate_ReadString(wxString& str, wxInputStream* s); - bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, const wxString& indexfile, const wxString& contentsfile) { wxFSFile *f; + wxHtmlFilterHTML filter; wxString buf; wxString string; @@ -267,27 +266,31 @@ bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, c if (f) { buf.clear(); - wxPrivate_ReadString(buf, f->GetStream()); + buf = filter.ReadFile(*f); delete f; handler->ReadIn(m_Contents, m_ContentsCnt); parser.Parse(buf); handler->WriteOut(m_Contents, m_ContentsCnt); } else + { wxLogError(_("Cannot open contents file: %s"), contentsfile.c_str()); + } f = ( indexfile.IsEmpty() ? (wxFSFile*) NULL : fsys.OpenFile(indexfile) ); if (f) { buf.clear(); - wxPrivate_ReadString(buf, f->GetStream()); + buf = filter.ReadFile(*f); delete f; handler->ReadIn(m_Index, m_IndexCnt); parser.Parse(buf); handler->WriteOut(m_Index, m_IndexCnt); } else if (!indexfile.IsEmpty()) + { wxLogError(_("Cannot open index file: %s"), indexfile.c_str()); + } return TRUE; } @@ -307,22 +310,39 @@ inline static wxInt32 CacheReadInt32(wxInputStream *f) } inline static void CacheWriteString(wxOutputStream *f, const wxChar *str) -{ - size_t len = wxStrlen(str)+1; +{ +#if wxUSE_UNICODE + wxWX2MBbuf mbstr(wxConvUTF8.cWX2MB(str)); +#else + const wxChar *mbstr = str; +#endif + size_t len = strlen(mbstr)+1; CacheWriteInt32(f, len); - f->Write(str, len * sizeof(wxChar)); + f->Write(mbstr, len); } -inline static wxChar *CacheReadString(wxInputStream *f) +inline static wxChar* CacheReadString(wxInputStream *f) { - wxChar *str; + char *str; size_t len = (size_t)CacheReadInt32(f); - str = new wxChar[len]; - f->Read(str, len * sizeof(wxChar)); + str = new char[len]; + f->Read(str, len); +#if !wxUSE_UNICODE return str; +#else + wxMB2WXbuf wxstr(wxConvUTF8.cMB2WX(str)); + wxChar *outstr = new wxChar[wxStrlen(wxstr)+1]; + wxStrcpy(outstr, wxstr); + return outstr; +#endif } -#define CURRENT_CACHED_BOOK_VERSION 2 +#define CURRENT_CACHED_BOOK_VERSION 4 + +// Additional flags to detect incompatibilities of the runtime environment: +#define CACHED_BOOK_FORMAT_FLAGS \ + (wxUSE_UNICODE << 0) + bool wxHtmlHelpData::LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f) { @@ -331,7 +351,7 @@ bool wxHtmlHelpData::LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f) /* load header - version info : */ version = CacheReadInt32(f); - + if (version != CURRENT_CACHED_BOOK_VERSION) { // NB: We can just silently return FALSE here and don't worry about @@ -341,6 +361,9 @@ bool wxHtmlHelpData::LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f) return FALSE; } + if (CacheReadInt32(f) != CACHED_BOOK_FORMAT_FLAGS) + return FALSE; + /* load contents : */ st = m_ContentsCnt; m_ContentsCnt += CacheReadInt32(f); @@ -378,6 +401,7 @@ bool wxHtmlHelpData::SaveCachedBook(wxHtmlBookRecord *book, wxOutputStream *f) /* save header - version info : */ CacheWriteInt32(f, CURRENT_CACHED_BOOK_VERSION); + CacheWriteInt32(f, CACHED_BOOK_FORMAT_FLAGS); /* save contents : */ for (cnt = 0, i = 0; i < m_ContentsCnt; i++) @@ -555,8 +579,6 @@ bool wxHtmlHelpData::AddBook(const wxString& book) { wxFSFile *fi; wxFileSystem fsys; - wxInputStream *s; - wxString bookFull; wxString title = _("noname"), safetitle, @@ -565,37 +587,26 @@ bool wxHtmlHelpData::AddBook(const wxString& book) index = wxEmptyString, charset = wxEmptyString; -#if defined(__WXMAC__) && !defined(__DARWIN__) - if (wxIsAbsolutePath(book)) bookFull = book; - else bookFull = wxGetCwd() + book; // no slash or dot - wxFileName fn( bookFull ); - bookFull = fn.GetFullPath( wxPATH_UNIX ); -#else - if (wxIsAbsolutePath(book)) bookFull = book; - else bookFull = wxGetCwd() + "/" + book; -#endif - - fi = fsys.OpenFile(bookFull); + fi = fsys.OpenFile(book); if (fi == NULL) { - wxLogError(_("Cannot open HTML help book: %s"), bookFull.c_str()); + wxLogError(_("Cannot open HTML help book: %s"), book.c_str()); return FALSE; } - fsys.ChangePathTo(bookFull); - s = fi->GetStream(); + fsys.ChangePathTo(book); const wxChar *lineptr; wxChar linebuf[300]; wxString tmp; - - wxPrivate_ReadString(tmp, s); + wxHtmlFilterPlainText filter; + tmp = filter.ReadFile(*fi); lineptr = tmp.c_str(); do { lineptr = ReadLine(lineptr, linebuf, 300); - for (wxChar *ch = linebuf; *ch != '\0' && *ch != '='; ch++) + for (wxChar *ch = linebuf; *ch != wxT('\0') && *ch != wxT('='); ch++) *ch = tolower(*ch); if (wxStrstr(linebuf, _T("title=")) == linebuf) @@ -773,7 +784,7 @@ bool wxHtmlSearchStatus::Search() file = fsys.OpenFile(m_Data->m_Contents[i].m_Book->GetFullPath(thepage)); if (file) { - if (m_Engine.Scan(file->GetStream())) + if (m_Engine.Scan(*file)) { m_Name = m_Data->m_Contents[i].m_Name; m_ContentsItem = m_Data->m_Contents + i; @@ -792,10 +803,10 @@ bool wxHtmlSearchStatus::Search() //-------------------------------------------------------------------------------- -// wxSearchEngine +// wxHtmlSearchEngine //-------------------------------------------------------------------------------- -void wxSearchEngine::LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only) +void wxHtmlSearchEngine::LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only) { m_CaseSensitive = case_sensitive; m_WholeWords = whole_words_only; @@ -819,15 +830,15 @@ static inline bool WHITESPACE(wxChar c) return c == _T(' ') || c == _T('\n') || c == _T('\r') || c == _T('\t'); } -bool wxSearchEngine::Scan(wxInputStream *stream) +bool wxHtmlSearchEngine::Scan(const wxFSFile& file) { - wxASSERT_MSG(m_Keyword != NULL, wxT("wxSearchEngine::LookFor must be called before scanning!")); + wxASSERT_MSG(m_Keyword != NULL, wxT("wxHtmlSearchEngine::LookFor must be called before scanning!")); int i, j; int wrd = wxStrlen(m_Keyword); bool found = FALSE; - wxString tmp; - wxPrivate_ReadString(tmp, stream); + wxHtmlFilterHTML filter; + wxString tmp = filter.ReadFile(file); int lng = tmp.length(); const wxChar *buf = tmp.c_str(); diff --git a/src/html/helpfrm.cpp b/src/html/helpfrm.cpp index 4e1c99dcc4..31eab70e8c 100644 --- a/src/html/helpfrm.cpp +++ b/src/html/helpfrm.cpp @@ -878,10 +878,15 @@ void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path cfg->Write(wxT("hcNavigPanel"), m_Cfg.navig_on); cfg->Write(wxT("hcSashPos"), (long)m_Cfg.sashpos); - cfg->Write(wxT("hcX"), (long)m_Cfg.x); - cfg->Write(wxT("hcY"), (long)m_Cfg.y); - cfg->Write(wxT("hcW"), (long)m_Cfg.w); - cfg->Write(wxT("hcH"), (long)m_Cfg.h); + if ( !IsIconized() ) + { + // Don't write if iconized as this would make the window + // disappear next time it is shown! + cfg->Write(wxT("hcX"), (long)m_Cfg.x); + cfg->Write(wxT("hcY"), (long)m_Cfg.y); + cfg->Write(wxT("hcW"), (long)m_Cfg.w); + cfg->Write(wxT("hcH"), (long)m_Cfg.h); + } cfg->Write(wxT("hcFixedFace"), m_FixedFace); cfg->Write(wxT("hcNormalFace"), m_NormalFace); cfg->Write(wxT("hcBaseFontSize"), (long)m_FontSize); @@ -1015,13 +1020,17 @@ Normal face
    (and underlined. Italic face. \ { UpdateTestWin(); } + void OnUpdateSpin(wxSpinEvent& WXUNUSED(event)) + { + UpdateTestWin(); + } DECLARE_EVENT_TABLE() }; BEGIN_EVENT_TABLE(wxHtmlHelpFrameOptionsDialog, wxDialog) EVT_COMBOBOX(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) - EVT_SPINCTRL(-1, wxHtmlHelpFrameOptionsDialog::OnUpdate) + EVT_SPINCTRL(-1, wxHtmlHelpFrameOptionsDialog::OnUpdateSpin) END_EVENT_TABLE() @@ -1120,8 +1129,12 @@ void wxHtmlHelpFrame::OnActivate(wxActivateEvent& event) { // This saves one mouse click when using the // wxHTML for context sensitive help systems +#ifndef __WXGTK__ + // NB: wxActivateEvent is a bit broken in wxGTK + // and is sometimes sent when it should not be if (event.GetActive() && m_HtmlWin) m_HtmlWin->SetFocus(); +#endif event.Skip(); } diff --git a/src/html/htmlcell.cpp b/src/html/htmlcell.cpp index 6a7f93f0c0..e7d104e8c0 100644 --- a/src/html/htmlcell.cpp +++ b/src/html/htmlcell.cpp @@ -17,7 +17,7 @@ #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -255,8 +255,8 @@ void wxHtmlContainerCell::Layout(int w) m_Width = 0; for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext()) cell->Layout(0); - // this does two things: it recursively calls this code on all child - // contrainers and resets children's position to (0,0) + // this does two things: it recursively calls this code on all + // child contrainers and resets children's position to (0,0) return; } @@ -408,9 +408,8 @@ void wxHtmlContainerCell::Layout(int w) void wxHtmlContainerCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) { // container visible, draw it: - if ((y + m_PosY < view_y2) && (y + m_PosY + m_Height > view_y1)) + if ((y + m_PosY <= view_y2) && (y + m_PosY + m_Height > view_y1)) { - if (m_UseBkColour) { wxBrush myb = wxBrush(m_BkColour, wxSOLID); @@ -430,10 +429,10 @@ void wxHtmlContainerCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) dc.SetPen(mypen1); dc.DrawLine(x + m_PosX, y + m_PosY, x + m_PosX, y + m_PosY + m_Height - 1); - dc.DrawLine(x + m_PosX, y + m_PosY, x + m_PosX + m_Width - 1, y + m_PosY); + dc.DrawLine(x + m_PosX, y + m_PosY, x + m_PosX + m_Width, y + m_PosY); dc.SetPen(mypen2); dc.DrawLine(x + m_PosX + m_Width - 1, y + m_PosY, x + m_PosX + m_Width - 1, y + m_PosY + m_Height - 1); - dc.DrawLine(x + m_PosX, y + m_PosY + m_Height - 1, x + m_PosX + m_Width - 1, y + m_PosY + m_Height - 1); + dc.DrawLine(x + m_PosX, y + m_PosY + m_Height - 1, x + m_PosX + m_Width, y + m_PosY + m_Height - 1); } if (m_Cells) @@ -465,6 +464,15 @@ void wxHtmlContainerCell::DrawInvisible(wxDC& dc, int x, int y) } +wxColour wxHtmlContainerCell::GetBackgroundColour() +{ + if (m_UseBkColour) + return m_BkColour; + else + return wxNullColour; +} + + wxHtmlLinkInfo *wxHtmlContainerCell::GetLink(int x, int y) const { diff --git a/src/html/htmlfilt.cpp b/src/html/htmlfilt.cpp index 0482dc49cd..7e1dc3c178 100644 --- a/src/html/htmlfilt.cpp +++ b/src/html/htmlfilt.cpp @@ -17,7 +17,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -26,15 +26,16 @@ #include "wx/intl.h" #endif +#include "wx/strconv.h" #include "wx/html/htmlfilt.h" #include "wx/html/htmlwin.h" // utility function: read a wxString from a wxInputStream -void wxPrivate_ReadString(wxString& str, wxInputStream* s) +static void ReadString(wxString& str, wxInputStream* s, wxMBConv& conv) { size_t streamSize = s->GetSize(); - if(streamSize == ~(size_t)0) + if (streamSize == ~(size_t)0) { const size_t bufSize = 4095; char buffer[bufSize+1]; @@ -45,17 +46,17 @@ void wxPrivate_ReadString(wxString& str, wxInputStream* s) s->Read(buffer, bufSize); lastRead = s->LastRead(); buffer[lastRead] = 0; - str.Append(buffer); + str.Append(wxString(buffer, conv)); } - while(lastRead == bufSize); + while (lastRead == bufSize); } else { char* src = new char[streamSize+1]; s->Read(src, streamSize); src[streamSize] = 0; - str = src; - delete [] src; + str = wxString(src, conv); + delete[] src; } } @@ -87,12 +88,12 @@ wxString wxHtmlFilterPlainText::ReadFile(const wxFSFile& file) const wxString doc, doc2; if (s == NULL) return wxEmptyString; - wxPrivate_ReadString(doc, s); + ReadString(doc, s, wxConvISO8859_1); doc.Replace(wxT("&"), wxT("&"), TRUE); doc.Replace(wxT("<"), wxT("<"), TRUE); doc.Replace(wxT(">"), wxT(">"), TRUE); - doc2 = "
    \n" + doc + "\n
    "; + doc2 = wxT("
    \n") + doc + wxT("\n
    "); return doc2; } @@ -127,26 +128,18 @@ bool wxHtmlFilterImage::CanRead(const wxFSFile& file) const wxString wxHtmlFilterImage::ReadFile(const wxFSFile& file) const { - return (""); + wxString res = wxT(""); + return res; } //-------------------------------------------------------------------------------- -// wxHtmlFilterPlainText -// filter for text/plain or uknown +// wxHtmlFilterHTML +// filter for text/html //-------------------------------------------------------------------------------- -class wxHtmlFilterHTML : public wxHtmlFilter -{ - DECLARE_DYNAMIC_CLASS(wxHtmlFilterHTML) - - public: - virtual bool CanRead(const wxFSFile& file) const; - virtual wxString ReadFile(const wxFSFile& file) const; -}; - IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterHTML, wxHtmlFilter) @@ -171,15 +164,43 @@ wxString wxHtmlFilterHTML::ReadFile(const wxFSFile& file) const wxLogError(_("Cannot open HTML document: %s"), file.GetLocation().c_str()); return wxEmptyString; } - wxPrivate_ReadString(doc, s); - // add meta tag if we obtained this through http: - if (file.GetMimeType().Find(_T("; charset=")) == 0) + // NB: We convert input file to wchar_t here in Unicode mode, based on + // either Content-Type header or tags. In ANSI mode, we don't + // do it as it is done by wxHtmlParser (for this reason, we add + // tag if we used Content-Type header). +#if wxUSE_UNICODE + int charsetPos; + if ((charsetPos = file.GetMimeType().Find(_T("; charset="))) != wxNOT_FOUND) { - wxString s(_T(""); - return s+doc; + wxString charset = file.GetMimeType().Mid(charsetPos + 10); + wxCSConv conv(charset); + ReadString(doc, s, conv); } + else + { + wxString tmpdoc; + ReadString(tmpdoc, s, wxConvISO8859_1); + wxString charset = wxHtmlParser::ExtractCharsetInformation(tmpdoc); + if (charset.empty()) + doc = tmpdoc; + else + { + wxCSConv conv(charset); + doc = wxString(tmpdoc.mb_str(wxConvISO8859_1), conv); + } + } +#else // !wxUSE_UNICODE + ReadString(doc, s, wxConvLibc); + // add meta tag if we obtained this through http: + if (!file.GetMimeType().empty()) + { + wxString hdr; + wxString mime = file.GetMimeType(); + hdr.Printf(_T(""), mime.c_str()); + return hdr+doc; + } +#endif return doc; } diff --git a/src/html/htmlfilter.cpp b/src/html/htmlfilter.cpp deleted file mode 100644 index 57508b1069..0000000000 --- a/src/html/htmlfilter.cpp +++ /dev/null @@ -1,172 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filter.cpp -// Purpose: wxHtmlFilter - input filter for translating into HTML format -// Author: Vaclav Slavik -// Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "htmlfilter.h" -#endif - -#include "wx/wxprec.h" - -#if wxUSE_HTML - -#ifdef __BORDLANDC__ -#pragma hdrstop -#endif - -#ifndef WXPRECOMP -#endif - -#include "wx/html/htmlfilter.h" -#include "wx/html/htmlwin.h" - - -/* - -There is code for several default filters: - -*/ - -IMPLEMENT_ABSTRACT_CLASS(wxHtmlFilter, wxObject) - -//-------------------------------------------------------------------------------- -// wxHtmlFilterPlainText -// filter for text/plain or uknown -//-------------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterPlainText, wxHtmlFilter) - -bool wxHtmlFilterPlainText::CanRead(const wxFSFile& WXUNUSED(file)) const -{ - return TRUE; -} - - - -wxString wxHtmlFilterPlainText::ReadFile(const wxFSFile& file) const -{ - wxInputStream *s = file.GetStream(); - char *src; - wxString doc, doc2; - - if (s == NULL) return wxEmptyString; - src = new char[s -> GetSize()+1]; - src[s -> GetSize()] = 0; - s -> Read(src, s -> GetSize()); - doc = src; - delete [] src; - - doc.Replace(_T("<"), _T("<"), TRUE); - doc.Replace(_T(">"), _T(">"), TRUE); - doc2 = _T("
    \n") + doc + _T("\n
    "); - return doc2; -} - - - - - -//-------------------------------------------------------------------------------- -// wxHtmlFilterImage -// filter for image/* -//-------------------------------------------------------------------------------- - -class wxHtmlFilterImage : public wxHtmlFilter -{ - DECLARE_DYNAMIC_CLASS(wxHtmlFilterImage) - - public: - virtual bool CanRead(const wxFSFile& file) const; - virtual wxString ReadFile(const wxFSFile& file) const; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterImage, wxHtmlFilter) - - - -bool wxHtmlFilterImage::CanRead(const wxFSFile& file) const -{ - return (file.GetMimeType().Left(6) == "image/"); -} - - - -wxString wxHtmlFilterImage::ReadFile(const wxFSFile& file) const -{ - return (""); -} - - - - -//-------------------------------------------------------------------------------- -// wxHtmlFilterPlainText -// filter for text/plain or uknown -//-------------------------------------------------------------------------------- - -class wxHtmlFilterHTML : public wxHtmlFilter -{ - DECLARE_DYNAMIC_CLASS(wxHtmlFilterHTML) - - public: - virtual bool CanRead(const wxFSFile& file) const; - virtual wxString ReadFile(const wxFSFile& file) const; -}; - - -IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterHTML, wxHtmlFilter) - -bool wxHtmlFilterHTML::CanRead(const wxFSFile& file) const -{ -// return (file.GetMimeType() == "text/html"); -// This is true in most case but some page can return: -// "text/html; char-encoding=...." -// So we use Find instead - return (file.GetMimeType().Find(_T("text/html")) == 0); -} - - - -wxString wxHtmlFilterHTML::ReadFile(const wxFSFile& file) const -{ - wxInputStream *s = file.GetStream(); - char *src; - wxString doc; - - if (s == NULL) return wxEmptyString; - src = new char[s -> GetSize() + 1]; - src[s -> GetSize()] = 0; - s -> Read(src, s -> GetSize()); - doc = src; - delete[] src; - - return doc; -} - - - - -///// Module: - -class wxHtmlFilterModule : public wxModule -{ - DECLARE_DYNAMIC_CLASS(wxHtmlFilterModule) - - public: - virtual bool OnInit() - { - wxHtmlWindow::AddFilter(new wxHtmlFilterHTML); - wxHtmlWindow::AddFilter(new wxHtmlFilterImage); - return TRUE; - } - virtual void OnExit() {} -}; - -IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterModule, wxModule) - -#endif diff --git a/src/html/htmlhelp.cpp b/src/html/htmlhelp.cpp deleted file mode 100644 index 8ea6466640..0000000000 --- a/src/html/htmlhelp.cpp +++ /dev/null @@ -1,839 +0,0 @@ -// Name: htmlhelp.cpp -// Purpose: Help controller -// Author: Vaclav Slavik -// Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - -#error This file should not be compiled! Update your build system! \ -(configure users, rerun configure to get a new Makefile) \ -Instead of htmlhelp[_io], use helpdata, helpfrm and helpctrl. This \ -file is only left to point out the problem and will be removed r.s.n. - -#ifdef __GNUG__ -#pragma implementation "htmlhelp.h" -#endif - -#include "wx/wxprec.h" - -#if wxUSE_HTML - -#ifdef __BORDLANDC__ -#pragma hdrstop -#endif - -#ifndef WXPRECOMP -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#if !((wxVERSION_NUMBER < 2100) || ((wxVERSION_NUMBER == 2100) && (wxBETA_NUMBER < 7))) -#include -#endif - - -// Bitmaps: - -#ifndef __WXMSW__ - // XPM hack: make the arrays const - #define static static const - - #include "bitmaps/panel.xpm" - #include "bitmaps/back.xpm" - #include "bitmaps/forward.xpm" - #include "bitmaps/book.xpm" - #include "bitmaps/folder.xpm" - #include "bitmaps/page.xpm" - - #undef static -#endif - -#include "search.h" - - - - -#include -WX_DEFINE_OBJARRAY(HtmlBookRecArray) - - - - - - - - - -//----------------------------------------------------------------------------- -// wxHtmlHelpController -//----------------------------------------------------------------------------- - - -IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxEvtHandler) - - -wxHtmlHelpController::wxHtmlHelpController() : wxEvtHandler() -{ - m_Frame = NULL; - m_Config = NULL; - m_ConfigRoot = wxEmptyString; - m_TitleFormat = _("Help : %s"); - m_TempPath = wxEmptyString; - - m_Cfg.x = m_Cfg.y = 0; - m_Cfg.w = 700; m_Cfg.h = 480; - m_Cfg.sashpos = 240; - m_Cfg.navig_on = TRUE; - - m_ContentsImageList = new wxImageList(12, 12); - m_ContentsImageList -> Add(wxICON(book)); - m_ContentsImageList -> Add(wxICON(folder)); - m_ContentsImageList -> Add(wxICON(page)); - - m_Contents = NULL; - m_ContentsCnt = 0; - m_Index = NULL; - m_IndexCnt = 0; - - m_IndexBox = NULL; - m_ContentsBox = NULL; - m_SearchList = NULL; - m_SearchText = NULL; - m_SearchButton = NULL; - m_HtmlWin = NULL; - m_Splitter = NULL; - m_NavigPan = NULL; -} - - - -wxHtmlHelpController::~wxHtmlHelpController() -{ - int i; - - m_BookRecords.Empty(); - delete m_ContentsImageList; - if (m_Contents) { - for (i = 0; i < m_ContentsCnt; i++) { - delete[] m_Contents[i].m_Page; - delete[] m_Contents[i].m_Name; - } - free(m_Contents); - } - if (m_Index) { - for (i = 0; i < m_IndexCnt; i++) { - delete[] m_Index[i].m_Page; - delete[] m_Index[i].m_Name; - } - free(m_Index); - } -} - - - -void wxHtmlHelpController::SetTempDir(const wxString& path) -{ - if (path == wxEmptyString) m_TempPath = path; - else { - if (wxIsAbsolutePath(path)) m_TempPath = path; - else m_TempPath = wxGetCwd() + "/" + path; - - if (m_TempPath[m_TempPath.Length() - 1] != '/') - m_TempPath << "/"; - } -} - - - - -// Reads one line, stores it into buf and returns pointer to new line or NULL. -static char* ReadLine(char *line, char *buf) -{ - char *writeptr = buf, *readptr = line; - - while (*readptr != 0 && *readptr != '\r' && *readptr != '\n') *(writeptr++) = *(readptr++); - *writeptr = 0; - while (*readptr == '\r' || *readptr == '\n') readptr++; - if (*readptr == 0) return NULL; - else return readptr; -} - - -static wxString SafeFileName(const wxString& s) -{ - wxString res = s; - res.Replace(_T(":"), _T("_"), TRUE); - res.Replace(_T(" "), _T("_"), TRUE); - res.Replace(_T("/"), _T("_"), TRUE); - res.Replace(_T("\\"), _T("_"), TRUE); - res.Replace(_T("#"), _T("_"), TRUE); - res.Replace(_T("."), _T("_"), TRUE); - return res; -} - - -static int IndexCompareFunc(const void *a, const void *b) -{ - return strcmp(((HtmlContentsItem*)a) -> m_Name, ((HtmlContentsItem*)b) -> m_Name); -} - - - -bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg) -{ - wxFSFile *fi; - wxFileSystem fsys; - wxInputStream *s; - HtmlBookRecord *bookr; - wxString bookFull; - - int sz; - char *buff, *lineptr; - char linebuf[300]; - - wxString title = _("noname"), - safetitle, - start = wxEmptyString, - contents = wxEmptyString, index = wxEmptyString; - - if (wxIsAbsolutePath(book)) bookFull = book; - else bookFull = wxGetCwd() + "/" + book; - - fi = fsys.OpenFile(bookFull); - if (fi == NULL) return FALSE; - fsys.ChangePathTo(bookFull); - s = fi -> GetStream(); - sz = s -> GetSize(); - buff = new char[sz+1]; - buff[sz] = 0; - s -> Read(buff, sz); - lineptr = buff; - delete fi; - - while ((lineptr = ReadLine(lineptr, linebuf)) != NULL) { - if (strstr(linebuf, "Title=") == linebuf) - title = linebuf + strlen("Title="); - if (strstr(linebuf, "Default topic=") == linebuf) - start = linebuf + strlen("Default topic="); - if (strstr(linebuf, "Index file=") == linebuf) - index = linebuf + strlen("Index file="); - if (strstr(linebuf, "Contents file=") == linebuf) - contents = linebuf + strlen("Contents file="); - } - delete[] buff; - - bookr = new HtmlBookRecord(fsys.GetPath(), title, start); - - if (m_ContentsCnt % HTML_REALLOC_STEP == 0) - m_Contents = (HtmlContentsItem*) realloc(m_Contents, (m_ContentsCnt + HTML_REALLOC_STEP) * sizeof(HtmlContentsItem)); - m_Contents[m_ContentsCnt].m_Level = 0; - m_Contents[m_ContentsCnt].m_ID = 0; - m_Contents[m_ContentsCnt].m_Page = new char[start.Length() + 1]; - strcpy(m_Contents[m_ContentsCnt].m_Page, start.c_str()); - m_Contents[m_ContentsCnt].m_Name = new char [title.Length() + 1]; - strcpy(m_Contents[m_ContentsCnt].m_Name, title.c_str()); - m_Contents[m_ContentsCnt].m_Book = bookr; - m_ContentsCnt++; - - // Try to find cached binary versions: - safetitle = SafeFileName(title); - fi = fsys.OpenFile(safetitle + ".cached"); - if (fi == NULL) fi = fsys.OpenFile(m_TempPath + safetitle + ".cached"); - if ((fi == NULL) || (m_TempPath == wxEmptyString)) { - LoadMSProject(bookr, fsys, index, contents, show_wait_msg); - if (m_TempPath != wxEmptyString) { - wxFileOutputStream *outs = new wxFileOutputStream(m_TempPath + safetitle + ".cached"); - SaveCachedBook(bookr, outs); - delete outs; - } - } - else { - LoadCachedBook(bookr, fi -> GetStream()); - delete fi; - } - - m_BookRecords.Add(bookr); - if (m_IndexCnt > 0) - qsort(m_Index, m_IndexCnt, sizeof(HtmlContentsItem), IndexCompareFunc); - - return TRUE; -} - - - - -void wxHtmlHelpController::Display(const wxString& x) -{ - int cnt; - int i; - wxFileSystem fsys; - wxFSFile *f; - - CreateHelpWindow(); - - /* 1. try to open given file: */ - - cnt = m_BookRecords.GetCount(); - for (i = 0; i < cnt; i++) { - f = fsys.OpenFile(m_BookRecords[i].GetBasePath() + x); - if (f) { - m_HtmlWin -> LoadPage(m_BookRecords[i].GetBasePath() + x); - delete f; - return; - } - } - - - /* 2. try to find a book: */ - - for (i = 0; i < cnt; i++) { - if (m_BookRecords[i].GetTitle() == x) { - m_HtmlWin -> LoadPage(m_BookRecords[i].GetBasePath() + m_BookRecords[i].GetStart()); - return; - } - } - - /* 3. try to find in contents: */ - - cnt = m_ContentsCnt; - for (i = 0; i < cnt; i++) { - if (strcmp(m_Contents[i].m_Name, x) == 0) { - m_HtmlWin -> LoadPage(m_Contents[i].m_Book -> GetBasePath() + m_Contents[i].m_Page); - return; - } - } - - - /* 4. try to find in index: */ - - cnt = m_IndexCnt; - for (i = 0; i < cnt; i++) { - if (strcmp(m_Index[i].m_Name, x) == 0) { - m_HtmlWin -> LoadPage(m_Index[i].m_Book -> GetBasePath() + m_Index[i].m_Page); - return; - } - } - - - /* 5. if everything failed, search the documents: */ - - KeywordSearch(x); -} - - - -void wxHtmlHelpController::Display(const int id) -{ - CreateHelpWindow(); - - for (int i = 0; i < m_ContentsCnt; i++) { - if (m_Contents[i].m_ID == id) { - m_HtmlWin -> LoadPage(m_Contents[i].m_Book -> GetBasePath() + m_Contents[i].m_Page); - return; - } - } -} - - - -void wxHtmlHelpController::DisplayContents() -{ - CreateHelpWindow(); - m_Frame -> Raise(); - if (!m_Splitter -> IsSplit()) { - m_NavigPan -> Show(TRUE); - m_HtmlWin -> Show(TRUE); - m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos); - } - m_NavigPan -> SetSelection(0); -} - - - -void wxHtmlHelpController::DisplayIndex() -{ - CreateHelpWindow(); - m_Frame -> Raise(); - if (!m_Splitter -> IsSplit()) { - m_NavigPan -> Show(TRUE); - m_HtmlWin -> Show(TRUE); - m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos); - } - m_NavigPan -> SetSelection(1); -} - - - - -#if (wxVERSION_NUMBER < 2100) || ((wxVERSION_NUMBER == 2100) && (wxBETA_NUMBER < 7)) - -class MyProgressDlg : public wxDialog -{ - public: - bool m_Canceled; - - MyProgressDlg(wxWindow *parent) : wxDialog(parent, -1, - _("Searching..."), - wxPoint(0, 0), -#ifdef __WXGTK__ - wxSize(300, 110) -#else - wxSize(300, 130) -#endif - ) - {m_Canceled = FALSE;} - void OnCancel(wxCommandEvent& event) {m_Canceled = TRUE;} - DECLARE_EVENT_TABLE() -}; -BEGIN_EVENT_TABLE(MyProgressDlg, wxDialog) - EVT_BUTTON(wxID_CANCEL, MyProgressDlg::OnCancel) -END_EVENT_TABLE() - -#endif - - -bool wxHtmlHelpController::KeywordSearch(const wxString& keyword) -{ - int foundcnt = 0; - CreateHelpWindow(); - // if these are not set, we can't continue - if (! (m_SearchList && m_HtmlWin)) - return FALSE; - m_Frame -> Raise(); - if (m_Splitter && m_NavigPan && m_SearchButton) { - if (!m_Splitter -> IsSplit()) { - m_NavigPan -> Show(TRUE); - m_HtmlWin -> Show(TRUE); - m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos); - } - m_NavigPan -> SetSelection(2); - m_SearchList -> Clear(); - m_SearchText -> SetValue(keyword); - m_SearchButton -> Enable(FALSE); - } - { - int cnt = m_ContentsCnt; - wxSearchEngine engine; - wxFileSystem fsys; - wxFSFile *file; - wxString lastpage = wxEmptyString; - wxString foundstr; - -#if (wxVERSION_NUMBER < 2100) || ((wxVERSION_NUMBER == 2100) && (wxBETA_NUMBER < 7)) - MyProgressDlg progress(m_Frame); - - wxStaticText *prompt = new wxStaticText(&progress, -1, "", wxPoint(20, 50), wxSize(260, 25), wxALIGN_CENTER); - wxGauge *gauge = new wxGauge(&progress, -1, cnt, wxPoint(20, 20), wxSize(260, 25)); - wxButton *btn = new wxButton(&progress, wxID_CANCEL, _("Cancel"), wxPoint(110, 70), wxSize(80, 25)); - btn = btn; /* fool compiler :-) */ - prompt -> SetLabel(_("No matching page found yet")); - - progress.Centre(wxBOTH); - progress.Show(TRUE); -#else - wxProgressDialog progress(_("Searching..."), _("No matching page found yet"), cnt, m_Frame, wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE); -#endif - - engine.LookFor(keyword); - - for (int i = 0; i < cnt; i++) { -#if (wxVERSION_NUMBER < 2100) || ((wxVERSION_NUMBER == 2100) && (wxBETA_NUMBER < 7)) - gauge -> SetValue(i); - if (progress.m_Canceled) break; -#else - if (progress.Update(i) == FALSE) break; -#endif - wxYield(); - - file = fsys.OpenFile(m_Contents[i].m_Book -> GetBasePath() + m_Contents[i].m_Page); - if (file) { - if (lastpage != file -> GetLocation()) { - lastpage = file -> GetLocation(); - if (engine.Scan(file -> GetStream())) { - foundstr.Printf(_("Found %i matches"), ++foundcnt); -#if (wxVERSION_NUMBER < 2100) || ((wxVERSION_NUMBER == 2100) && (wxBETA_NUMBER < 7)) - prompt -> SetLabel(foundstr); -#else - progress.Update(i, foundstr); -#endif - wxYield(); - m_SearchList -> Append(m_Contents[i].m_Name, (char*)(m_Contents + i)); - } - } - delete file; - } - } - -#if (wxVERSION_NUMBER < 2100) || ((wxVERSION_NUMBER == 2100) && (wxBETA_NUMBER < 7)) - progress.Close(TRUE); -#endif - } - if (m_SearchButton) - m_SearchButton -> Enable(TRUE); - if (m_SearchText) { - m_SearchText -> SetSelection(0, keyword.Length()); - m_SearchText -> SetFocus(); - } - if (foundcnt) { - HtmlContentsItem *it = (HtmlContentsItem*) m_SearchList -> GetClientData(0); - if (it) m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page); - } - return (foundcnt > 0); -} - - - - - - -void wxHtmlHelpController::CreateHelpWindow() -{ - wxBusyCursor cur; - wxString oldpath; - wxStatusBar *sbar; - - if (m_Frame) { - m_Frame -> Raise(); - m_Frame -> Show(TRUE); - return; - } - -#if wxUSE_BUSYINFO - wxBusyInfo busyinfo(_("Preparing help window...")); -#endif - - if (m_Config) ReadCustomization(m_Config, m_ConfigRoot); - - m_Frame = new wxFrame(NULL, -1, "", wxPoint(m_Cfg.x, m_Cfg.y), wxSize(m_Cfg.w, m_Cfg.h)); - m_Frame -> PushEventHandler(this); - sbar = m_Frame -> CreateStatusBar(); - - { - wxToolBar *toolBar; - toolBar = m_Frame -> CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL | wxTB_FLAT | wxTB_DOCKABLE); - toolBar -> SetMargins(2, 2); - wxBitmap* toolBarBitmaps[3]; - -#ifdef __WXMSW__ - toolBarBitmaps[0] = new wxBitmap("panel"); - toolBarBitmaps[1] = new wxBitmap("back"); - toolBarBitmaps[2] = new wxBitmap("forward"); - int width = 24; -#else - toolBarBitmaps[0] = new wxBitmap(panel_xpm); - toolBarBitmaps[1] = new wxBitmap(back_xpm); - toolBarBitmaps[2] = new wxBitmap(forward_xpm); - int width = 16; -#endif - - int currentX = 5; - - toolBar -> AddTool(wxID_HTML_PANEL, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _("Show/hide navigation panel")); - currentX += width + 5; - toolBar -> AddSeparator(); - toolBar -> AddTool(wxID_HTML_BACK, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _("Go back to the previous HTML page")); - currentX += width + 5; - toolBar -> AddTool(wxID_HTML_FORWARD, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, _("Go forward to the next HTML page")); - currentX += width + 5; - - toolBar -> Realize(); - - // Can delete the bitmaps since they're reference counted - for (int i = 0; i < 3; i++) delete toolBarBitmaps[i]; - } - - - { - m_Splitter = new wxSplitterWindow(m_Frame); - - m_HtmlWin = new wxHtmlWindow(m_Splitter); - m_HtmlWin -> SetRelatedFrame(m_Frame, m_TitleFormat); - m_HtmlWin -> SetRelatedStatusBar(0); - if (m_Config) m_HtmlWin -> ReadCustomization(m_Config, m_ConfigRoot); - - m_NavigPan = new wxNotebook(m_Splitter, wxID_HTML_NOTEBOOK, wxDefaultPosition, wxDefaultSize); - { - m_ContentsBox = new wxTreeCtrl(m_NavigPan, wxID_HTML_TREECTRL, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxSUNKEN_BORDER); - m_ContentsBox -> SetImageList(m_ContentsImageList); - m_NavigPan -> AddPage(m_ContentsBox, _("Contents")); - } - - { - wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_INDEXPAGE); - wxLayoutConstraints *b1 = new wxLayoutConstraints; - b1 -> top.SameAs (dummy, wxTop, 0); - b1 -> left.SameAs (dummy, wxLeft, 0); - b1 -> width.PercentOf (dummy, wxWidth, 100); - b1 -> bottom.SameAs (dummy, wxBottom, 0); - m_IndexBox = new wxListBox(dummy, wxID_HTML_INDEXLIST, wxDefaultPosition, wxDefaultSize, 0); - m_IndexBox -> SetConstraints(b1); - dummy -> SetAutoLayout(TRUE); - m_NavigPan -> AddPage(dummy, _("Index")); - } - - { - wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_SEARCHPAGE); - - wxLayoutConstraints *b1 = new wxLayoutConstraints; - m_SearchText = new wxTextCtrl(dummy, wxID_HTML_SEARCHTEXT); - b1 -> top.SameAs (dummy, wxTop, 0); - b1 -> left.SameAs (dummy, wxLeft, 0); - b1 -> right.SameAs (dummy, wxRight, 0); - b1 -> height.AsIs(); - m_SearchText -> SetConstraints(b1); - - wxLayoutConstraints *b2 = new wxLayoutConstraints; - m_SearchButton = new wxButton(dummy, wxID_HTML_SEARCHBUTTON, _("Search!")); - b2 -> top.Below (m_SearchText, 10); - b2 -> right.SameAs (dummy, wxRight, 10); - b2 -> width.AsIs(); - b2 -> height.AsIs(); - m_SearchButton -> SetConstraints(b2); - - wxLayoutConstraints *b3 = new wxLayoutConstraints; - m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST, wxDefaultPosition, wxDefaultSize, 0); - b3 -> top.Below (m_SearchButton, 10); - b3 -> left.SameAs (dummy, wxLeft, 0); - b3 -> right.SameAs (dummy, wxRight, 0); - b3 -> bottom.SameAs (dummy, wxBottom, 0); - m_SearchList -> SetConstraints(b3); - - dummy -> SetAutoLayout(TRUE); - dummy -> Layout(); - m_NavigPan -> AddPage(dummy, _("Search")); - } - - RefreshLists(); - m_NavigPan -> Show(TRUE); - m_HtmlWin -> Show(TRUE); - m_Splitter -> SetMinimumPaneSize(20); - m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos); - if (!m_Cfg.navig_on) m_Splitter -> Unsplit(m_NavigPan); - wxYield(); - } - - m_Frame -> Show(TRUE); - wxYield(); -} - - - -#define MAX_ROOTS 64 - -void wxHtmlHelpController::CreateContents() -{ - HtmlContentsItem *it; - wxTreeItemId roots[MAX_ROOTS]; - bool imaged[MAX_ROOTS]; - int count = m_ContentsCnt; - - m_ContentsBox -> DeleteAllItems(); - roots[0] = m_ContentsBox -> AddRoot(_("(Help)")); - imaged[0] = TRUE; - - for (int i = 0; i < count; i++) { - it = m_Contents + i; - roots[it -> m_Level + 1] = m_ContentsBox -> AppendItem(roots[it -> m_Level], it -> m_Name, IMG_Page, -1, new wxHtmlHelpTreeItemData(it)); - if (it -> m_Level == 0) { - m_ContentsBox -> SetItemBold(roots[1], TRUE); - m_ContentsBox -> SetItemImage(roots[1], IMG_Book); - m_ContentsBox -> SetItemSelectedImage(roots[1], IMG_Book); - imaged[1] = TRUE; - } - else imaged[it -> m_Level + 1] = FALSE; - - if (!imaged[it -> m_Level]) { - m_ContentsBox -> SetItemImage(roots[it -> m_Level], IMG_Folder); - m_ContentsBox -> SetItemSelectedImage(roots[it -> m_Level], IMG_Folder); - imaged[it -> m_Level] = TRUE; - } - } - - m_ContentsBox -> Expand(roots[0]); -} - - - - -void wxHtmlHelpController::CreateIndex() -{ - m_IndexBox -> Clear(); - - for (int i = 0; i < m_IndexCnt; i++) - m_IndexBox -> Append(m_Index[i].m_Name, (char*)(m_Index + i)); -} - - - -void wxHtmlHelpController::RefreshLists() -{ - if (m_Frame) { - CreateContents(); - CreateIndex(); - m_SearchList -> Clear(); - } -} - - - - - - - -void wxHtmlHelpController::ReadCustomization(wxConfigBase *cfg, wxString path) -{ - wxString oldpath; - wxString tmp; - - if (path != wxEmptyString) { - oldpath = cfg -> GetPath(); - cfg -> SetPath(path); - } - - m_Cfg.navig_on = cfg -> Read("hcNavigPanel", m_Cfg.navig_on) != 0; - m_Cfg.sashpos = cfg -> Read("hcSashPos", m_Cfg.sashpos); - m_Cfg.x = cfg -> Read("hcX", m_Cfg.x); - m_Cfg.y = cfg -> Read("hcY", m_Cfg.y); - m_Cfg.w = cfg -> Read("hcW", m_Cfg.w); - m_Cfg.h = cfg -> Read("hcH", m_Cfg.h); - - if (path != wxEmptyString) - cfg -> SetPath(oldpath); -} - - - -void wxHtmlHelpController::WriteCustomization(wxConfigBase *cfg, wxString path) -{ - wxString oldpath; - wxString tmp; - - if (path != wxEmptyString) { - oldpath = cfg -> GetPath(); - cfg -> SetPath(path); - } - - cfg -> Write("hcNavigPanel", m_Cfg.navig_on); - cfg -> Write("hcSashPos", (long)m_Cfg.sashpos); - cfg -> Write("hcX", (long)m_Cfg.x); - cfg -> Write("hcY", (long)m_Cfg.y); - cfg -> Write("hcW", (long)m_Cfg.w); - cfg -> Write("hcH", (long)m_Cfg.h); - - if (path != wxEmptyString) - cfg -> SetPath(oldpath); -} - - - - - -/* -EVENT HANDLING : -*/ - - -void wxHtmlHelpController::OnToolbar(wxCommandEvent& event) -{ - switch (event.GetId()) { - case wxID_HTML_BACK : - m_HtmlWin -> HistoryBack(); - break; - case wxID_HTML_FORWARD : - m_HtmlWin -> HistoryForward(); - break; - case wxID_HTML_PANEL : - if (m_Splitter -> IsSplit()) { - m_Cfg.sashpos = m_Splitter -> GetSashPosition(); - m_Splitter -> Unsplit(m_NavigPan); - } - else { - m_NavigPan -> Show(TRUE); - m_HtmlWin -> Show(TRUE); - m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos); - } - break; - } -} - - - -void wxHtmlHelpController::OnContentsSel(wxTreeEvent& event) -{ - wxHtmlHelpTreeItemData *pg; - - pg = (wxHtmlHelpTreeItemData*) m_ContentsBox -> GetItemData(event.GetItem()); - if (pg) m_HtmlWin -> LoadPage(pg -> GetPage()); -} - - - -void wxHtmlHelpController::OnIndexSel(wxCommandEvent& event) -{ - HtmlContentsItem *it = (HtmlContentsItem*) m_IndexBox -> GetClientData(m_IndexBox -> GetSelection()); - if (it) m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page); -} - - - -void wxHtmlHelpController::OnSearchSel(wxCommandEvent& event) -{ - HtmlContentsItem *it = (HtmlContentsItem*) m_SearchList -> GetClientData(m_SearchList -> GetSelection()); - if (it) m_HtmlWin -> LoadPage(it -> m_Book -> GetBasePath() + it -> m_Page); -} - - - -void wxHtmlHelpController::OnCloseWindow(wxCloseEvent& event) -{ - int a, b; - - m_Cfg.navig_on = m_Splitter -> IsSplit(); - if (m_Cfg.navig_on) - m_Cfg.sashpos = m_Splitter -> GetSashPosition(); - m_Frame -> GetPosition(&a, &b); - m_Cfg.x = a, m_Cfg.y = b; - m_Frame -> GetSize(&a, &b); - m_Cfg.w = a, m_Cfg.h = b; - - if (m_Config) { - WriteCustomization(m_Config, m_ConfigRoot); - m_HtmlWin -> WriteCustomization(m_Config, m_ConfigRoot); - } - m_Frame = NULL; - - event.Skip(); -} - - - -void wxHtmlHelpController::OnSearch(wxCommandEvent& event) -{ - wxString sr = m_SearchText -> GetLineText(0); - - if (sr != wxEmptyString) KeywordSearch(sr); -} - - - -BEGIN_EVENT_TABLE(wxHtmlHelpController, wxEvtHandler) - EVT_TOOL_RANGE(wxID_HTML_PANEL, wxID_HTML_FORWARD, wxHtmlHelpController::OnToolbar) - EVT_TREE_SEL_CHANGED(wxID_HTML_TREECTRL, wxHtmlHelpController::OnContentsSel) - EVT_LISTBOX(wxID_HTML_INDEXLIST, wxHtmlHelpController::OnIndexSel) - EVT_LISTBOX(wxID_HTML_SEARCHLIST, wxHtmlHelpController::OnSearchSel) - EVT_CLOSE(wxHtmlHelpController::OnCloseWindow) - EVT_BUTTON(wxID_HTML_SEARCHBUTTON, wxHtmlHelpController::OnSearch) - EVT_TEXT_ENTER(wxID_HTML_SEARCHTEXT, wxHtmlHelpController::OnSearch) -END_EVENT_TABLE() - - - -#endif - diff --git a/src/html/htmlpars.cpp b/src/html/htmlpars.cpp index 50b878f4da..9ed716fe81 100644 --- a/src/html/htmlpars.cpp +++ b/src/html/htmlpars.cpp @@ -17,7 +17,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -92,11 +92,9 @@ wxHtmlParser::~wxHtmlParser() wxObject* wxHtmlParser::Parse(const wxString& source) { - wxObject *result; - InitParser(source); DoParsing(); - result = GetProduct(); + wxObject *result = GetProduct(); DoneParser(); return result; } @@ -104,6 +102,7 @@ wxObject* wxHtmlParser::Parse(const wxString& source) void wxHtmlParser::InitParser(const wxString& source) { SetSource(source); + m_stopParsing = FALSE; } void wxHtmlParser::DoneParser() @@ -292,6 +291,8 @@ void wxHtmlParser::DoParsing(int begin_pos, int end_pos) wxHtmlTag *t = m_CurTag; m_CurTag = m_CurTag->GetNextTag(); AddTag(*t); + if (m_stopParsing) + return; } else break; } @@ -304,7 +305,11 @@ void wxHtmlParser::AddTag(const wxHtmlTag& tag) h = (wxHtmlTagHandler*) m_HandlersHash.Get(tag.GetName()); if (h) + { inner = h->HandleTag(tag); + if (m_stopParsing) + return; + } if (!inner) { if (tag.HasEnding()) @@ -432,11 +437,15 @@ wxHtmlEntitiesParser::~wxHtmlEntitiesParser() void wxHtmlEntitiesParser::SetEncoding(wxFontEncoding encoding) { #if wxUSE_WCHAR_T && !wxUSE_UNICODE - if (encoding == m_encoding) return; + if (encoding == m_encoding) + return; + delete m_conv; - m_conv = NULL; + m_encoding = encoding; - if (m_encoding != wxFONTENCODING_SYSTEM) + if (m_encoding == wxFONTENCODING_SYSTEM) + m_conv = NULL; + else m_conv = new wxCSConv(wxFontMapper::GetEncodingName(m_encoding)); #else (void) encoding; @@ -496,11 +505,10 @@ extern "C" int LINKAGEMODE wxHtmlEntityCompare(const void *key, const void *item return wxStrcmp((wxChar*)key, ((wxHtmlEntityInfo*)item)->name); } +#if !wxUSE_UNICODE wxChar wxHtmlEntitiesParser::GetCharForCode(unsigned code) { -#if wxUSE_UNICODE - return (wxChar)code; -#elif wxUSE_WCHAR_T +#if wxUSE_WCHAR_T char buf[2]; wchar_t wbuf[2]; wbuf[0] = (wchar_t)code; @@ -513,6 +521,7 @@ wxChar wxHtmlEntitiesParser::GetCharForCode(unsigned code) return (code < 256) ? (wxChar)code : '?'; #endif } +#endif wxChar wxHtmlEntitiesParser::GetEntityChar(const wxString& entity) { @@ -818,4 +827,62 @@ wxFSFile *wxHtmlParser::OpenURL(wxHtmlURLType WXUNUSED(type), return GetFS()->OpenFile(url); } + +//----------------------------------------------------------------------------- +// wxHtmlParser::ExtractCharsetInformation +//----------------------------------------------------------------------------- + +class wxMetaTagParser : public wxHtmlParser +{ +public: + wxObject* GetProduct() { return NULL; } +protected: + virtual void AddText(const wxChar* WXUNUSED(txt)) {} +}; + +class wxMetaTagHandler : public wxHtmlTagHandler +{ +public: + wxMetaTagHandler(wxString *retval) : wxHtmlTagHandler(), m_retval(retval) {} + wxString GetSupportedTags() { return wxT("META,BODY"); } + bool HandleTag(const wxHtmlTag& tag); + +private: + wxString *m_retval; +}; + +bool wxMetaTagHandler::HandleTag(const wxHtmlTag& tag) +{ + if (tag.GetName() == _T("BODY")) + { + m_Parser->StopParsing(); + return FALSE; + } + + if (tag.HasParam(_T("HTTP-EQUIV")) && + tag.GetParam(_T("HTTP-EQUIV")) == _T("Content-Type") && + tag.HasParam(_T("CONTENT"))) + { + wxString content = tag.GetParam(_T("CONTENT")); + if (content.Left(19) == _T("text/html; charset=")) + { + *m_retval = content.Mid(19); + m_Parser->StopParsing(); + } + } + return FALSE; +} + + +/*static*/ +wxString wxHtmlParser::ExtractCharsetInformation(const wxString& markup) +{ + wxString charset; + wxMetaTagParser parser; + parser.AddTagHandler(new wxMetaTagHandler(&charset)); + parser.Parse(markup); + return charset; +} + + #endif diff --git a/src/html/htmltag.cpp b/src/html/htmltag.cpp index 33607f7ada..47ac16a2e4 100644 --- a/src/html/htmltag.cpp +++ b/src/html/htmltag.cpp @@ -17,7 +17,7 @@ #include "wx/defs.h" #if wxUSE_HTML -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index ebb83bd452..1f5ed0f2f2 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -18,7 +18,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -592,14 +592,12 @@ wxHtmlProcessorList *wxHtmlWindow::m_GlobalProcessors = NULL; void wxHtmlWindow::CleanUpStatics() { - delete m_DefaultFilter; - m_DefaultFilter = NULL; + wxDELETE(m_DefaultFilter); m_Filters.DeleteContents(TRUE); m_Filters.Clear(); - delete m_GlobalProcessors; - m_GlobalProcessors = NULL; - delete s_cur_hand; - delete s_cur_arrow; + wxDELETE(m_GlobalProcessors); + wxDELETE(s_cur_hand); + wxDELETE(s_cur_arrow); } diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index 117e2261c4..a2dfa82097 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -269,9 +269,6 @@ void wxHtmlPrintout::SetHtmlText(const wxString& html, const wxString &basepath, m_BasePathIsDir = isdir; } -// defined in htmlfilt.cpp -void wxPrivate_ReadString(wxString& str, wxInputStream* s); - void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile) { wxFileSystem fs; @@ -283,13 +280,11 @@ void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile) return; } - wxInputStream *st = ff->GetStream(); - wxString doc; - wxPrivate_ReadString(doc, st); - - delete ff; - + wxHtmlFilterHTML filter; + wxString doc = filter.ReadFile(*ff); + SetHtmlText(doc, htmlfile, FALSE); + delete ff; } diff --git a/src/html/m_dflist.cpp b/src/html/m_dflist.cpp index 634a31786b..e113412e7a 100644 --- a/src/html/m_dflist.cpp +++ b/src/html/m_dflist.cpp @@ -17,7 +17,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -34,7 +34,7 @@ FORCE_LINK_ME(m_dflist) -TAG_HANDLER_BEGIN(DEFLIST, "DL,DT,DD") +TAG_HANDLER_BEGIN(DEFLIST, "DL,DT,DD" ) TAG_HANDLER_PROC(tag) { diff --git a/src/html/m_fonts.cpp b/src/html/m_fonts.cpp index 0014a38ed8..8582927cf7 100644 --- a/src/html/m_fonts.cpp +++ b/src/html/m_fonts.cpp @@ -16,7 +16,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -31,7 +31,7 @@ FORCE_LINK_ME(m_fonts) -TAG_HANDLER_BEGIN(FONT, "FONT") +TAG_HANDLER_BEGIN(FONT, "FONT" ) TAG_HANDLER_VARS wxArrayString m_Faces; diff --git a/src/html/m_hline.cpp b/src/html/m_hline.cpp index b9df229000..d0a1b033bc 100644 --- a/src/html/m_hline.cpp +++ b/src/html/m_hline.cpp @@ -16,7 +16,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/m_image.cpp b/src/html/m_image.cpp index 7458ddf792..aaf6a8fa4a 100644 --- a/src/html/m_image.cpp +++ b/src/html/m_image.cpp @@ -16,7 +16,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/m_layout.cpp b/src/html/m_layout.cpp index e828f01e1d..aeb0478d49 100644 --- a/src/html/m_layout.cpp +++ b/src/html/m_layout.cpp @@ -15,7 +15,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/m_links.cpp b/src/html/m_links.cpp index 588180f01e..dd0c0eae07 100644 --- a/src/html/m_links.cpp +++ b/src/html/m_links.cpp @@ -16,7 +16,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -52,19 +52,19 @@ TAG_HANDLER_BEGIN(A, "A") TAG_HANDLER_PROC(tag) { - if (tag.HasParam("NAME")) + if (tag.HasParam( wxT("NAME") )) { - m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam("NAME"))); + m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam( wxT("NAME") ))); } - if (tag.HasParam("HREF")) + if (tag.HasParam( wxT("HREF") )) { wxHtmlLinkInfo oldlnk = m_WParser->GetLink(); wxColour oldclr = m_WParser->GetActualColor(); int oldund = m_WParser->GetFontUnderlined(); - wxString name(tag.GetParam("HREF")), target; + wxString name(tag.GetParam( wxT("HREF") )), target; - if (tag.HasParam("TARGET")) target = tag.GetParam("TARGET"); + if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") ); m_WParser->SetActualColor(m_WParser->GetLinkColor()); m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(m_WParser->GetLinkColor())); m_WParser->SetFontUnderlined(TRUE); diff --git a/src/html/m_list.cpp b/src/html/m_list.cpp index 44cad981ed..0549463eab 100644 --- a/src/html/m_list.cpp +++ b/src/html/m_list.cpp @@ -16,7 +16,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/m_meta.cpp b/src/html/m_meta.cpp deleted file mode 100644 index 9ad9eb7c4b..0000000000 --- a/src/html/m_meta.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: m_meta.cpp -// Purpose: wxHtml module for parsing tag -// Author: Vaclav Slavik -// RCS-ID: $Id$ -// Copyright: (c) 2000 Vaclav Slavik -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wxprec.h" - - -#include "wx/defs.h" -#if wxUSE_HTML && wxUSE_STREAMS - -#ifdef __BORDLANDC__ -#pragma hdrstop -#endif - -#ifndef WXPRECOMP -#endif - -#include "wx/fontmap.h" -#include "wx/html/forcelnk.h" -#include "wx/html/m_templ.h" -#include "wx/html/htmlcell.h" - -FORCE_LINK_ME(m_meta) - - - - -TAG_HANDLER_BEGIN(META, "META") - - TAG_HANDLER_PROC(tag) - { - if (tag.HasParam(_T("HTTP-EQUIV")) && - tag.GetParam(_T("HTTP-EQUIV")) == _T("Content-Type") && - tag.HasParam(_T("CONTENT"))) - { - wxString content = tag.GetParam(_T("CONTENT")); - if (content.Left(19) == _T("text/html; charset=")) - { - wxFontEncoding enc = - wxFontMapper::Get()->CharsetToEncoding(content.Mid(19)); - if (enc == wxFONTENCODING_SYSTEM) return FALSE; - if (enc == m_WParser->GetInputEncoding()) return FALSE; - - m_WParser->SetInputEncoding(enc); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - } - return FALSE; - } - -TAG_HANDLER_END(META) - - -TAGS_MODULE_BEGIN(MetaTag) - - TAGS_MODULE_ADD(META) - -TAGS_MODULE_END(MetaTag) - -#endif diff --git a/src/html/m_pre.cpp b/src/html/m_pre.cpp index f1c064e755..313d8a88bc 100644 --- a/src/html/m_pre.cpp +++ b/src/html/m_pre.cpp @@ -15,7 +15,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/m_style.cpp b/src/html/m_style.cpp index 9355867e81..9913b83703 100644 --- a/src/html/m_style.cpp +++ b/src/html/m_style.cpp @@ -17,7 +17,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/m_tables.cpp b/src/html/m_tables.cpp index 7d125edf1c..07aa795bac 100644 --- a/src/html/m_tables.cpp +++ b/src/html/m_tables.cpp @@ -15,7 +15,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif diff --git a/src/html/search.cpp b/src/html/search.cpp deleted file mode 100644 index 85a59a2b2e..0000000000 --- a/src/html/search.cpp +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: search.cpp -// Purpose: search engine -// Author: Vaclav Slavik -// RCS-ID: $Id$ -// Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - - - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wxprec.h" - -#include "wx/defs.h" -#if wxUSE_HTML - -#ifdef __BORDLANDC__ -#pragma hdrstop -#endif - -#ifndef WXPRECOMP -#endif - -#include "wx/html/helpdata.h" - - -//-------------------------------------------------------------------------------- -// wxSearchEngine -//-------------------------------------------------------------------------------- - -void wxSearchEngine::LookFor(const wxString& keyword) -{ - if (m_Keyword) delete[] m_Keyword; - m_Keyword = new wxChar[keyword.Length() + 1]; - wxStrcpy(m_Keyword, keyword.c_str()); - for (int i = wxStrlen(m_Keyword) - 1; i >= 0; i--) - if ((m_Keyword[i] >= wxT('A')) && (m_Keyword[i] <= wxT('Z'))) - m_Keyword[i] += wxT('a') - wxT('A'); -} - - - -bool wxSearchEngine::Scan(wxInputStream *stream) -{ - wxASSERT_MSG(m_Keyword != NULL, _("wxSearchEngine::LookFor must be called before scanning!")); - - int i, j; - int lng = stream ->GetSize(); - int wrd = wxStrlen(m_Keyword); - bool found = FALSE; - char *buf = new char[lng + 1]; - stream -> Read(buf, lng); - buf[lng] = 0; - - for (i = 0; i < lng; i++) - if ((buf[i] >= 'A') && (buf[i] <= 'Z')) buf[i] += 'a' - 'A'; - - for (i = 0; i < lng - wrd; i++) { - j = 0; - while ((j < wrd) && (buf[i + j] == m_Keyword[j])) j++; - if (j == wrd) {found = TRUE; break;} - } - - delete[] buf; - return found; -} - -#endif diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 4c6943463a..1d4af2c3fc 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -17,7 +17,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -49,8 +49,11 @@ wxHtmlWinParser::wxHtmlWinParser(wxHtmlWindow *wnd) : wxHtmlParser() m_DC = NULL; m_CharHeight = m_CharWidth = 0; m_UseLink = FALSE; +#if !wxUSE_UNICODE m_EncConv = NULL; - m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT; + m_InputEnc = wxFONTENCODING_ISO8859_1; + m_OutputEnc = wxFONTENCODING_DEFAULT; +#endif { int i, j, k, l, m; @@ -62,7 +65,9 @@ wxHtmlWinParser::wxHtmlWinParser(wxHtmlWindow *wnd) : wxHtmlParser() { m_FontsTable[i][j][k][l][m] = NULL; m_FontsFacesTable[i][j][k][l][m] = wxEmptyString; +#if !wxUSE_UNICODE m_FontsEncTable[i][j][k][l][m] = wxFONTENCODING_DEFAULT; +#endif } #ifdef __WXMSW__ static int default_sizes[7] = {7, 8, 10, 12, 16, 22, 30}; @@ -71,7 +76,7 @@ wxHtmlWinParser::wxHtmlWinParser(wxHtmlWindow *wnd) : wxHtmlParser() #else static int default_sizes[7] = {10, 12, 14, 16, 19, 24, 32}; #endif - SetFonts("", "", default_sizes); + SetFonts(wxT(""), wxT(""), default_sizes); } // fill in wxHtmlParser's tables: @@ -97,7 +102,9 @@ wxHtmlWinParser::~wxHtmlWinParser() if (m_FontsTable[i][j][k][l][m] != NULL) delete m_FontsTable[i][j][k][l][m]; } +#if !wxUSE_UNICODE delete m_EncConv; +#endif delete[] m_tmpStrBuf; } @@ -119,7 +126,9 @@ void wxHtmlWinParser::SetFonts(wxString normal_face, wxString fixed_face, const m_FontFaceFixed = fixed_face; m_FontFaceNormal = normal_face; +#if !wxUSE_UNICODE SetInputEncoding(m_InputEnc); +#endif for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) @@ -137,26 +146,36 @@ void wxHtmlWinParser::SetFonts(wxString normal_face, wxString fixed_face, const void wxHtmlWinParser::InitParser(const wxString& source) { wxHtmlParser::InitParser(source); - wxASSERT_MSG(m_DC != NULL, _T("no DC assigned to wxHtmlWinParser!!")); + wxASSERT_MSG(m_DC != NULL, wxT("no DC assigned to wxHtmlWinParser!!")); m_FontBold = m_FontItalic = m_FontUnderlined = m_FontFixed = FALSE; m_FontSize = 3; //default one CreateCurrentFont(); // we're selecting default font into - m_DC->GetTextExtent("H", &m_CharWidth, &m_CharHeight); + m_DC->GetTextExtent( wxT("H"), &m_CharWidth, &m_CharHeight); /* NOTE : we're not using GetCharWidth/Height() because of differences under X and win */ m_UseLink = FALSE; - m_Link = wxHtmlLinkInfo("", ""); + m_Link = wxHtmlLinkInfo( wxT(""), wxT("") ); m_LinkColor.Set(0, 0, 0xFF); m_ActualColor.Set(0, 0, 0); m_Align = wxHTML_ALIGN_LEFT; m_tmpLastWasSpace = FALSE; OpenContainer(); - OpenContainer(); + +#if !wxUSE_UNICODE + wxString charset = ExtractCharsetInformation(source); + if (!charset.empty()) + { + wxFontEncoding enc = wxFontMapper::Get()->CharsetToEncoding(charset); + if (enc != wxFONTENCODING_SYSTEM) + SetInputEncoding(enc); + } +#endif + m_Container->InsertCell(new wxHtmlColourCell(m_ActualColor)); m_Container->InsertCell(new wxHtmlFontCell(CreateCurrentFont())); } @@ -164,7 +183,9 @@ void wxHtmlWinParser::InitParser(const wxString& source) void wxHtmlWinParser::DoneParser() { m_Container = NULL; - SetInputEncoding(wxFONTENCODING_DEFAULT); // for next call +#if !wxUSE_UNICODE + SetInputEncoding(wxFONTENCODING_ISO8859_1); // for next call +#endif wxHtmlParser::DoneParser(); } @@ -253,8 +274,10 @@ void wxHtmlWinParser::AddText(const wxChar* txt) if (templen == 1) continue; #endif templen = 0; +#if !wxUSE_UNICODE if (m_EncConv) m_EncConv->Convert(temp); +#endif size_t len = wxStrlen(temp); for (size_t j = 0; j < len; j++) if (temp[j] == nbsp) @@ -270,8 +293,10 @@ void wxHtmlWinParser::AddText(const wxChar* txt) if (templen && (templen > 1 || temp[0] != wxT(' '))) { temp[templen] = 0; +#if !wxUSE_UNICODE if (m_EncConv) m_EncConv->Convert(temp); +#endif size_t len = wxStrlen(temp); for (size_t j = 0; j < len; j++) if (temp[j] == nbsp) @@ -333,9 +358,15 @@ wxFont* wxHtmlWinParser::CreateCurrentFont() wxString face = ff ? m_FontFaceFixed : m_FontFaceNormal; wxString *faceptr = &(m_FontsFacesTable[fb][fi][fu][ff][fs]); wxFont **fontptr = &(m_FontsTable[fb][fi][fu][ff][fs]); +#if !wxUSE_UNICODE wxFontEncoding *encptr = &(m_FontsEncTable[fb][fi][fu][ff][fs]); +#endif - if (*fontptr != NULL && (*faceptr != face || *encptr != m_OutputEnc)) + if (*fontptr != NULL && (*faceptr != face +#if !wxUSE_UNICODE + || *encptr != m_OutputEnc +#endif + )) { delete *fontptr; *fontptr = NULL; @@ -344,14 +375,18 @@ wxFont* wxHtmlWinParser::CreateCurrentFont() if (*fontptr == NULL) { *faceptr = face; - *encptr = m_OutputEnc; *fontptr = new wxFont( (int) (m_FontsSizes[fs] * m_PixelScale), ff ? wxMODERN : wxSWISS, fi ? wxITALIC : wxNORMAL, fb ? wxBOLD : wxNORMAL, - fu ? TRUE : FALSE, face, - m_OutputEnc); + fu ? TRUE : FALSE, face +#if wxUSE_UNICODE + ); +#else + , m_OutputEnc); + *encptr = m_OutputEnc; +#endif } m_DC->SetFont(**fontptr); return (*fontptr); @@ -371,12 +406,15 @@ void wxHtmlWinParser::SetFontFace(const wxString& face) if (GetFontFixed()) m_FontFaceFixed = face; else m_FontFaceNormal = face; +#if !wxUSE_UNICODE if (m_InputEnc != wxFONTENCODING_DEFAULT) SetInputEncoding(m_InputEnc); +#endif } +#if !wxUSE_UNICODE void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc) { m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT; @@ -434,7 +472,7 @@ void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc) m_EncConv = NULL; } } - +#endif diff --git a/src/jpeg/jctrans.c b/src/jpeg/jctrans.c index 0e6d70769d..28270aaa0c 100644 --- a/src/jpeg/jctrans.c +++ b/src/jpeg/jctrans.c @@ -21,6 +21,12 @@ LOCAL(void) transencode_master_selection LOCAL(void) transencode_coef_controller JPP((j_compress_ptr cinfo, jvirt_barray_ptr * coef_arrays)); +#if defined(__VISAGECPP__) +/* Visual Age fixups for multiple declarations */ +# define start_pass_coef start_pass_coef2 /* already in jccoeft.c */ +# define compress_output compress_output2 /* already in jccoeft.c */ +#endif + /* * Compression initialization for writing raw-coefficient data. @@ -246,7 +252,6 @@ start_iMCU_row (j_compress_ptr cinfo) coef->MCU_vert_offset = 0; } - /* * Initialize for a processing pass. */ @@ -386,3 +391,12 @@ transencode_coef_controller (j_compress_ptr cinfo, coef->dummy_buffer[i] = buffer + i; } } + +#if defined(__VISAGECPP__) +# ifdef start_pass_coef2 +# undef start_pass_coef2 +# endif +# ifdef compress_output2 +# undef compress_output2 +# endif +#endif diff --git a/src/jpeg/jdcoefct.c b/src/jpeg/jdcoefct.c index 4b89b62d24..5b5b3bbd49 100644 --- a/src/jpeg/jdcoefct.c +++ b/src/jpeg/jdcoefct.c @@ -104,13 +104,16 @@ start_iMCU_row (j_decompress_ptr cinfo) */ METHODDEF(void) +#if defined(__VISAGECPP__) +start_input_pass2 (j_decompress_ptr cinfo) +#else start_input_pass (j_decompress_ptr cinfo) +#endif { cinfo->input_iMCU_row = 0; start_iMCU_row(cinfo); } - /* * Initialize for an output processing pass. */ @@ -681,7 +684,12 @@ jinit_d_coef_controller (j_decompress_ptr cinfo, boolean need_full_buffer) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, SIZEOF(my_coef_controller)); cinfo->coef = (struct jpeg_d_coef_controller *) coef; +#if defined(__VISAGECPP__) + coef->pub.start_input_pass2 = start_input_pass2; +#else coef->pub.start_input_pass = start_input_pass; +#endif + coef->pub.start_output_pass = start_output_pass; #ifdef BLOCK_SMOOTHING_SUPPORTED coef->coef_bits_latch = NULL; @@ -734,3 +742,4 @@ jinit_d_coef_controller (j_decompress_ptr cinfo, boolean need_full_buffer) coef->pub.coef_arrays = NULL; /* flag for no virtual arrays */ } } + diff --git a/src/jpeg/jdcolor.c b/src/jpeg/jdcolor.c index c518544960..cca2842297 100644 --- a/src/jpeg/jdcolor.c +++ b/src/jpeg/jdcolor.c @@ -12,6 +12,11 @@ #include "jinclude.h" #include "jpeglib.h" +#if defined(__VISAGECPP__) +/* Visual Age fixups for multiple declarations */ +# define null_convert null_convert2 /* already in jcmaint.c */ +# define grayscale_convert grayscale_convert2 /* already in jcmaint.c */ +#endif /* Private subobject */ @@ -394,3 +399,12 @@ jinit_color_deconverter (j_decompress_ptr cinfo) else cinfo->output_components = cinfo->out_color_components; } + +#if defined(__VISAGECPP__) +# ifdef null_convert2 +# undef null_convert2 +# endif +# ifdef grayscale_convert2 +# undef grayscale_convert2 +# endif +#endif diff --git a/src/jpeg/jdinput.c b/src/jpeg/jdinput.c index 0c2ac8f120..942a99c141 100644 --- a/src/jpeg/jdinput.c +++ b/src/jpeg/jdinput.c @@ -15,7 +15,6 @@ #include "jinclude.h" #include "jpeglib.h" - /* Private state */ typedef struct { @@ -124,16 +123,16 @@ per_scan_setup (j_decompress_ptr cinfo) { int ci, mcublks, tmp; jpeg_component_info *compptr; - + if (cinfo->comps_in_scan == 1) { - + /* Noninterleaved (single-component) scan */ compptr = cinfo->cur_comp_info[0]; - + /* Overall image size in MCUs */ cinfo->MCUs_per_row = compptr->width_in_blocks; cinfo->MCU_rows_in_scan = compptr->height_in_blocks; - + /* For noninterleaved scan, always one block per MCU */ compptr->MCU_width = 1; compptr->MCU_height = 1; @@ -146,18 +145,18 @@ per_scan_setup (j_decompress_ptr cinfo) tmp = (int) (compptr->height_in_blocks % compptr->v_samp_factor); if (tmp == 0) tmp = compptr->v_samp_factor; compptr->last_row_height = tmp; - + /* Prepare array describing MCU composition */ cinfo->blocks_in_MCU = 1; cinfo->MCU_membership[0] = 0; - + } else { - + /* Interleaved (multi-component) scan */ if (cinfo->comps_in_scan <= 0 || cinfo->comps_in_scan > MAX_COMPS_IN_SCAN) ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->comps_in_scan, MAX_COMPS_IN_SCAN); - + /* Overall image size in MCUs */ cinfo->MCUs_per_row = (JDIMENSION) jdiv_round_up((long) cinfo->image_width, @@ -165,9 +164,9 @@ per_scan_setup (j_decompress_ptr cinfo) cinfo->MCU_rows_in_scan = (JDIMENSION) jdiv_round_up((long) cinfo->image_height, (long) (cinfo->max_v_samp_factor*DCTSIZE)); - + cinfo->blocks_in_MCU = 0; - + for (ci = 0; ci < cinfo->comps_in_scan; ci++) { compptr = cinfo->cur_comp_info[ci]; /* Sampling factors give # of blocks of component in each MCU */ @@ -190,7 +189,7 @@ per_scan_setup (j_decompress_ptr cinfo) cinfo->MCU_membership[cinfo->blocks_in_MCU++] = ci; } } - + } } @@ -256,7 +255,11 @@ start_input_pass (j_decompress_ptr cinfo) per_scan_setup(cinfo); latch_quant_tables(cinfo); (*cinfo->entropy->start_pass) (cinfo); +#if defined(__VISAGECPP__) + (*cinfo->coef->start_input_pass2) (cinfo); +#else (*cinfo->coef->start_input_pass) (cinfo); +#endif cinfo->inputctl->consume_input = cinfo->coef->consume_data; } @@ -379,3 +382,4 @@ jinit_input_controller (j_decompress_ptr cinfo) inputctl->pub.eoi_reached = FALSE; inputctl->inheaders = TRUE; } + diff --git a/src/jpeg/jdmainct.c b/src/jpeg/jdmainct.c index 1c88b075e9..a188bef0e4 100644 --- a/src/jpeg/jdmainct.c +++ b/src/jpeg/jdmainct.c @@ -141,6 +141,12 @@ typedef my_main_controller * my_main_ptr; #define CTX_POSTPONED_ROW 2 /* feeding postponed row group */ +#if defined(__VISAGECPP__) +/* Visual Age fixups for multiple declarations */ +# define start_pass_main start_pass_main2 /* already in jcmaint.c */ +# define process_data_simple_main process_data_simple_main2 /* already in jcmaint.c */ +#endif + /* Forward declarations */ METHODDEF(void) process_data_simple_main JPP((j_decompress_ptr cinfo, JSAMPARRAY output_buf, @@ -512,3 +518,12 @@ jinit_d_main_controller (j_decompress_ptr cinfo, boolean need_full_buffer) (JDIMENSION) (rgroup * ngroups)); } } + +#if defined(__VISAGECPP__) +# ifdef start_pass_main2 +# undef start_pass_main2 +# endif +# ifdef process_data_simple_main2 +# undef process_data_simple_main2 +# endif +#endif diff --git a/src/jpeg/jdmaster.c b/src/jpeg/jdmaster.c index 2802c5b7b2..8a5abc71fa 100644 --- a/src/jpeg/jdmaster.c +++ b/src/jpeg/jdmaster.c @@ -15,7 +15,6 @@ #include "jinclude.h" #include "jpeglib.h" - /* Private state */ typedef struct { @@ -217,7 +216,7 @@ jpeg_calc_output_dimensions (j_decompress_ptr cinfo) * For most steps we can mathematically guarantee that the initial value * of x is within MAXJSAMPLE+1 of the legal range, so a table running from * -(MAXJSAMPLE+1) to 2*MAXJSAMPLE+1 is sufficient. But for the initial - * limiting step (just after the IDCT), a wildly out-of-range value is + * limiting step (just after the IDCT), a wildly out-of-range value is * possible if the input data is corrupt. To avoid any chance of indexing * off the end of memory and getting a bad-pointer trap, we perform the * post-IDCT limiting thus: @@ -555,3 +554,4 @@ jinit_master_decompress (j_decompress_ptr cinfo) master_selection(cinfo); } + diff --git a/src/jpeg/jdtrans.c b/src/jpeg/jdtrans.c index 6c0ab715d3..d22388684f 100644 --- a/src/jpeg/jdtrans.c +++ b/src/jpeg/jdtrans.c @@ -121,7 +121,6 @@ transdecode_master_selection (j_decompress_ptr cinfo) /* Initialize input side of decompressor to consume first scan. */ (*cinfo->inputctl->start_input_pass) (cinfo); - /* Initialize progress monitoring. */ if (cinfo->progress != NULL) { int nscans; @@ -141,3 +140,4 @@ transdecode_master_selection (j_decompress_ptr cinfo) cinfo->progress->total_passes = 1; } } + diff --git a/src/jpeg/jpeg.dsp b/src/jpeg/jpeg.dsp index 6f88fd2c02..8ec7e89f34 100644 --- a/src/jpeg/jpeg.dsp +++ b/src/jpeg/jpeg.dsp @@ -23,8 +23,8 @@ CFG=jpeg - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "JpegVC" -# PROP Scc_LocalPath "." +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe diff --git a/src/jpeg/jpeg.dsw b/src/jpeg/jpeg.dsw index 31caaf9876..eb703255ee 100644 --- a/src/jpeg/jpeg.dsw +++ b/src/jpeg/jpeg.dsw @@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00 ############################################################################### -Project: "jpeg"=.\JpegVC.dsp - Package Owner=<4> +Project: "jpeg"=.\jpeg.dsp - Package Owner=<4> Package=<5> {{{ diff --git a/src/jpeg/jpegint.h b/src/jpeg/jpegint.h index 51aa6c1f29..4b0ee7a240 100644 --- a/src/jpeg/jpegint.h +++ b/src/jpeg/jpegint.h @@ -142,6 +142,7 @@ struct jpeg_decomp_master { boolean is_dummy_pass; /* True during 1st pass for 2-pass quant */ }; + /* Input control module */ struct jpeg_input_controller { JMETHOD(int, consume_input, (j_decompress_ptr cinfo)); @@ -154,6 +155,7 @@ struct jpeg_input_controller { boolean eoi_reached; /* True when EOI has been consumed */ }; + /* Main buffer control (downsampled-data buffer) */ struct jpeg_d_main_controller { JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)); @@ -164,7 +166,15 @@ struct jpeg_d_main_controller { /* Coefficient buffer control */ struct jpeg_d_coef_controller { +#if defined(__VISAGECPP__) + /* the start input pass in jdcoeft must have a different name than the + // one in jdtrans under VisualAge or else we get a dup symbol error + */ + JMETHOD(void, start_input_pass2, (j_decompress_ptr cinfo)); +#else JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo)); +#endif + JMETHOD(int, consume_data, (j_decompress_ptr cinfo)); JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo)); JMETHOD(int, decompress_data, (j_decompress_ptr cinfo, diff --git a/src/jpeg/makefile.wat b/src/jpeg/makefile.wat index d1f309c5b3..88ed70b0c4 100644 --- a/src/jpeg/makefile.wat +++ b/src/jpeg/makefile.wat @@ -3,6 +3,7 @@ # File: makefile.wat # Author: Julian Smart # Created: 1998 +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch # # Makefile : Builds JPEG library for Watcom C++, WIN32 @@ -13,81 +14,83 @@ EXTRACPPFLAGS=-i=..\zlib WXLIB = $(WXDIR)\lib -LIBTARGET = $(WXLIB)\jpeg.lib +LIBTARGET = $(WXLIB)\jpeg$(WATCOM_SUFFIX).lib -SYSDEPMEM= jmemnobs.obj - -# source files: JPEG library proper -LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c & - jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c & - jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c & - jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c & - jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c & - jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c & - jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c & - jquant2.c jutils.c jmemmgr.c -# memmgr back ends: compile only one of these into a working library -SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c -# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom -APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c & - rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c & - rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c -SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES) -# files included by source files -INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h & - jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h -# documentation, test, and support files -DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 & - wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc & - coderules.doc filelist.doc change.log -MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc & - makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds & - makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st & - maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms & - makvms.opt -CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat & - jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas & - jconfig.vms -CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh -OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm -TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg & - testimgp.jpg -DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) & - $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES) # library object files common to compression and decompression -COMOBJECTS= jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM) +COMOBJECTS = & + $(OUTPUTDIR)\jcomapi.obj & + $(OUTPUTDIR)\jutils.obj & + $(OUTPUTDIR)\jerror.obj & + $(OUTPUTDIR)\jmemmgr.obj & + $(OUTPUTDIR)\jmemnobs.obj + # compression library object files -CLIBOBJECTS= jcapimin.obj jcapistd.obj jctrans.obj jcparam.obj jdatadst.obj & - jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj jcprepct.obj & - jccoefct.obj jccolor.obj jcsample.obj jchuff.obj jcphuff.obj & - jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj +CLIBOBJECTS = & + $(OUTPUTDIR)\jcapimin.obj & + $(OUTPUTDIR)\jcapistd.obj & + $(OUTPUTDIR)\jctrans.obj & + $(OUTPUTDIR)\jcparam.obj & + $(OUTPUTDIR)\jdatadst.obj & + $(OUTPUTDIR)\jcinit.obj & + $(OUTPUTDIR)\jcmaster.obj & + $(OUTPUTDIR)\jcmarker.obj & + $(OUTPUTDIR)\jcmainct.obj & + $(OUTPUTDIR)\jcprepct.obj & + $(OUTPUTDIR)\jccoefct.obj & + $(OUTPUTDIR)\jccolor.obj & + $(OUTPUTDIR)\jcsample.obj & + $(OUTPUTDIR)\jchuff.obj & + $(OUTPUTDIR)\jcphuff.obj & + $(OUTPUTDIR)\jcdctmgr.obj & + $(OUTPUTDIR)\jfdctfst.obj & + $(OUTPUTDIR)\jfdctflt.obj & + $(OUTPUTDIR)\jfdctint.obj + # decompression library object files -DLIBOBJECTS= jdapimin.obj jdapistd.obj jdtrans.obj jdatasrc.obj & - jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdphuff.obj & - jdmainct.obj jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj & - jidctflt.obj jidctint.obj jidctred.obj jdsample.obj jdcolor.obj & - jquant1.obj jquant2.obj jdmerge.obj +DLIBOBJECTS = & + $(OUTPUTDIR)\jdapimin.obj & + $(OUTPUTDIR)\jdapistd.obj & + $(OUTPUTDIR)\jdtrans.obj & + $(OUTPUTDIR)\jdatasrc.obj & + $(OUTPUTDIR)\jdmaster.obj & + $(OUTPUTDIR)\jdinput.obj & + $(OUTPUTDIR)\jdmarker.obj & + $(OUTPUTDIR)\jdhuff.obj & + $(OUTPUTDIR)\jdphuff.obj & + $(OUTPUTDIR)\jdmainct.obj & + $(OUTPUTDIR)\jdcoefct.obj & + $(OUTPUTDIR)\jdpostct.obj & + $(OUTPUTDIR)\jddctmgr.obj & + $(OUTPUTDIR)\jidctfst.obj & + $(OUTPUTDIR)\jidctflt.obj & + $(OUTPUTDIR)\jidctint.obj & + $(OUTPUTDIR)\jidctred.obj & + $(OUTPUTDIR)\jdsample.obj & + $(OUTPUTDIR)\jdcolor.obj & + $(OUTPUTDIR)\jquant1.obj & + $(OUTPUTDIR)\jquant2.obj & + $(OUTPUTDIR)\jdmerge.obj + # These objectfiles are included in libjpeg.lib -OBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS) -# object files for sample applications (excluding library files) -COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj & - rdswitch.obj cdjpeg.obj -DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj & - rdcolmap.obj cdjpeg.obj -TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj -all: $(OBJECTS) $(LIBTARGET) +OBJECTS = $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS) +all: $(OUTPUTDIR) $(LIBTARGET) .SYMBOLIC + +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ + +LBCFILE=$(OUTPUTDIR)\jpeg.lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) -clean: .SYMBOLIC - -erase *.obj +clean: .SYMBOLIC + -erase $(OUTPUTDIR)\*.obj -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -erase *.lbc + -erase $(OUTPUTDIR)\*.pch + -erase $(OUTPUTDIR)\*.err + -erase $(OUTPUTDIR)\*.lbc cleanall: clean diff --git a/src/mac/app.cpp b/src/mac/app.cpp index 587cdeb344..8cf752487c 100644 --- a/src/mac/app.cpp +++ b/src/mac/app.cpp @@ -73,6 +73,8 @@ extern wxList wxPendingDelete; extern wxList *wxWinMacWindowList; extern wxList *wxWinMacControlList; +static long sleepTime = 0 ; + wxApp *wxTheApp = NULL; #if !USE_SHARED_LIBRARY @@ -99,14 +101,17 @@ long wxApp::s_lastModifiers = 0 ; bool wxApp::s_macDefaultEncodingIsPC = true ; -bool wxApp::s_macSupportPCMenuShortcuts = true ; +bool wxApp::s_macSupportPCMenuShortcuts = false ; long wxApp::s_macAboutMenuItemId = wxID_ABOUT ; +long wxApp::s_macPreferencesMenuItemId = 0 ; +long wxApp::s_macExitMenuItemId = wxID_EXIT ; wxString wxApp::s_macHelpMenuTitleName = "&Help" ; pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandlePreferences( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long WXUNUSED(refcon) ) @@ -133,6 +138,22 @@ pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long WX return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ; } +pascal OSErr AEHandlePreferences( const AppleEvent *event , AppleEvent *reply , long WXUNUSED(refcon) ) +{ + // GD: UNUSED wxApp* app = (wxApp*) refcon ; + + wxMenuBar* mbar = wxMenuBar::MacGetInstalledMenuBar() ; + wxMenu* menu = NULL ; + wxMenuItem* item = NULL ; + if ( mbar ) + { + item = mbar->FindItem( wxApp::s_macPreferencesMenuItemId , &menu ) ; + } + if ( item != NULL && menu != NULL && mbar != NULL ) + menu->SendEvent( wxApp::s_macPreferencesMenuItemId , -1 ) ; + return noErr ; +} + // new virtual public method in wxApp void wxApp::MacOpenFile(const wxString & WXUNUSED(fileName) ) { @@ -788,6 +809,9 @@ void wxStAppResource::OpenSharedLibraryResource(const void *initBlock) theModule = NSModuleForSymbol(theSymbol); theLibPath = NSLibraryNameForModule(theModule); + wxLogDebug( wxT("wxMac library installation name is '%s'"), + theLibPath ); + // allocate copy to replace .dylib.* extension with .rsrc theResPath = strdup(theLibPath); if (theResPath != NULL) { @@ -801,7 +825,8 @@ void wxStAppResource::OpenSharedLibraryResource(const void *initBlock) // overwrite extension with ".rsrc" strcpy(theExt, ".rsrc"); - wxLogDebug( theResPath ); + wxLogDebug( wxT("wxMac resources file name is '%s'"), + theResPath ); theErr = FSPathMakeRef((UInt8 *) theResPath, &theResRef, false); if (theErr != noErr) { @@ -809,14 +834,18 @@ void wxStAppResource::OpenSharedLibraryResource(const void *initBlock) theErr = FSPathMakeRef((UInt8 *) theName, &theResRef, false); } - // free duplicated resource file path - free(theResPath); - // open the resource file if (theErr == noErr) { theErr = FSOpenResourceFile( &theResRef, 0, NULL, fsRdPerm, &gSharedLibraryResource); } + if (theErr != noErr) { + wxLogDebug( wxT("unable to open wxMac resource file '%s'"), + theResPath ); + } + + // free duplicated resource file path + free(theResPath); } } #endif /* __DARWIN__ */ @@ -923,10 +952,7 @@ int wxEntry( int argc, char *argv[] , bool enterLoop ) // application (otherwise applications would need to handle it) if (argc > 1) { - char theArg[6] = ""; - strncpy(theArg, argv[1], 5); - - if (strcmp(theArg, "-psn_") == 0) { + if (strncmp(argv[1], "-psn_", 5) == 0) { // assume the argument is always the only one and remove it --argc; } @@ -1147,6 +1173,18 @@ int wxApp::MainLoop() { m_keepGoing = TRUE; +#if TARGET_CARBON + if ( UMAGetSystemVersion() >= 0x1000 ) + { + if ( s_macPreferencesMenuItemId ) + { + EnableMenuCommand( NULL , kHICommandPreferences ) ; + AEInstallEventHandler( kCoreEventClass , kAEShowPreferences , + NewAEEventHandlerUPP(AEHandlePreferences) , + (long) wxTheApp , FALSE ) ; + } + } +#endif while (m_keepGoing) { MacDoOneEvent() ; @@ -1334,16 +1372,19 @@ bool wxApp::Yield(bool onlyIfNeeded) #endif EventRecord event ; - long sleepTime = 1 ; //::GetCaretTime(); + // having a larger value here leads to large performance slowdowns + // so we cannot give background apps more processor time here + // we do so however having a large sleep value in the main event loop + sleepTime = 0 ; - while ( !wxTheApp->IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, (RgnHandle) wxApp::s_macCursorRgn)) + while ( !IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, (RgnHandle) wxApp::s_macCursorRgn)) { - wxTheApp->MacHandleModifierEvents( &event ) ; - wxTheApp->MacHandleOneEvent( &event ); + MacHandleModifierEvents( &event ) ; + MacHandleOneEvent( &event ); if ( event.what != kHighLevelEvent ) SetRectRgn( (RgnHandle) wxApp::s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; } - wxTheApp->MacHandleModifierEvents( &event ) ; + MacHandleModifierEvents( &event ) ; wxMacProcessNotifierAndPendingEvents() ; @@ -1412,12 +1453,11 @@ void wxApp::MacDoOneEvent() { EventRecord event ; - long sleepTime = 1; // GetCaretTime() / 4 ; - if (WaitNextEvent(everyEvent, &event, sleepTime, (RgnHandle) s_macCursorRgn)) { MacHandleModifierEvents( &event ) ; MacHandleOneEvent( &event ); + sleepTime = 0 ; } else { @@ -1427,7 +1467,10 @@ void wxApp::MacDoOneEvent() if ( window ) ::IdleControls( window ) ; - wxTheApp->ProcessIdle() ; + if ( wxTheApp->ProcessIdle() ) + sleepTime = 0 ; + else + sleepTime = GetCaretTime() / 2 ; } if ( event.what != kHighLevelEvent ) SetRectRgn( (RgnHandle) s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; @@ -1443,7 +1486,9 @@ void wxApp::MacHandleModifierEvents( WXEVENTREF evr ) EventRecord* ev = (EventRecord*) evr ; #if TARGET_CARBON if ( ev->what == mouseDown || ev->what == mouseUp || ev->what == activateEvt || - ev->what == keyDown || ev->what == autoKey || ev->what == keyUp || ev->what == nullEvent ) + ev->what == keyDown || ev->what == autoKey || ev->what == keyUp || ev->what == kHighLevelEvent || + ev->what == nullEvent + ) { // in these cases the modifiers are already correctly setup by carbon } @@ -1628,23 +1673,28 @@ void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr ) break; case inGrow: { - int growResult = GrowWindow(window , ev->where, &screenBits.bounds); - if (growResult != 0) + Rect newContentRect ; + Rect constraintRect ; + constraintRect.top = win->GetMinHeight() ; + if ( constraintRect.top == -1 ) + constraintRect.top = 0 ; + constraintRect.left = win->GetMinWidth() ; + if ( constraintRect.left == -1 ) + constraintRect.left = 0 ; + constraintRect.right = win->GetMaxWidth() ; + if ( constraintRect.right == -1 ) + constraintRect.right = 32000 ; + constraintRect.bottom = win->GetMaxHeight() ; + if ( constraintRect.bottom == -1 ) + constraintRect.bottom = 32000 ; + + Boolean growResult = ResizeWindow( window , ev->where , + &constraintRect , &newContentRect ) ; + if ( growResult ) { - int newWidth = LoWord(growResult); - int newHeight = HiWord(growResult); - int oldWidth, oldHeight; - - - if (win) - { - win->GetSize(&oldWidth, &oldHeight); - if (newWidth == 0) - newWidth = oldWidth; - if (newHeight == 0) - newHeight = oldHeight; - win->SetSize( -1, -1 , newWidth, newHeight, wxSIZE_USE_EXISTING); - } + win->SetSize( newContentRect.left , newContentRect.top , + newContentRect.right - newContentRect.left , + newContentRect.bottom - newContentRect.top, wxSIZE_USE_EXISTING); } s_lastMouseDown = 0; } @@ -1682,31 +1732,32 @@ void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr ) GrafPtr port ; GetPort( &port ) ; SetPortWindowPort(window) ; + + if ( window != frontWindow && wxTheApp->s_captureWindow == NULL ) + { + if ( s_macIsInModalLoop ) + { + SysBeep ( 30 ) ; + } + else if ( UMAIsWindowFloating( window ) ) + { + if ( win ) + win->MacMouseDown( ev , windowPart ) ; + } + else + { + if ( win ) + win->MacMouseDown( ev , windowPart ) ; + ::SelectWindow( window ) ; + } + } + else + { + if ( win ) + win->MacMouseDown( ev , windowPart ) ; + } SetPort( port ) ; } - if ( window != frontWindow && wxTheApp->s_captureWindow == NULL ) - { - if ( s_macIsInModalLoop ) - { - SysBeep ( 30 ) ; - } - else if ( UMAIsWindowFloating( window ) ) - { - if ( win ) - win->MacMouseDown( ev , windowPart ) ; - } - else - { - if ( win ) - win->MacMouseDown( ev , windowPart ) ; - ::SelectWindow( window ) ; - } - } - else - { - if ( win ) - win->MacMouseDown( ev , windowPart ) ; - } break ; default: @@ -2309,35 +2360,31 @@ void wxApp::MacHandleMenuSelect( int macMenuId , int macMenuItemNum ) } else { + MenuCommand id ; + GetMenuItemCommandID( GetMenuHandle(macMenuId) , macMenuItemNum , &id ) ; + wxMenuBar* mbar = wxMenuBar::MacGetInstalledMenuBar() ; + wxMenu* menu = NULL ; + wxMenuItem* item = NULL ; + if ( mbar ) + { + item = mbar->FindItem( id , &menu ) ; + } + wxCHECK_RET( item != NULL && menu != NULL && mbar != NULL, wxT("error in menu item callback") ); + + if (item->IsCheckable()) + { + item->Check( !item->IsChecked() ) ; + } + + menu->SendEvent( id , item->IsCheckable() ? item->IsChecked() : -1 ) ; + /* wxWindow* frontwindow = wxFindWinFromMacWindow( ::FrontWindow() ) ; - if ( frontwindow && wxMenuBar::MacGetInstalledMenuBar() ) - wxMenuBar::MacGetInstalledMenuBar()->MacMenuSelect( frontwindow->GetEventHandler() , 0 , macMenuId , macMenuItemNum ) ; + wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, id ); + event.m_timeStamp = ((EventRecord*) MacGetCurrentEvent())->when ; + event.SetEventObject(menu); + event.SetInt(item->IsCheckable() ? item->IsChecked() : -1); + frontwindow->GetEventHandler()->ProcessEvent(event); + */ } HiliteMenu(0); } - -/* -long wxApp::MacTranslateKey(char key, int mods) -{ -} - -void wxApp::MacAdjustCursor() -{ -} - -*/ -/* -void -wxApp::macAdjustCursor() -{ - if (ev->what != kHighLevelEvent) - { - wxWindow* theMacWxFrame = wxFrame::MacFindFrameOrDialog(::FrontWindow()); - if (theMacWxFrame) - { - if (!theMacWxFrame->MacAdjustCursor(ev->where)) - ::SetCursor(&(qd.arrow)); - } - } -} -*/ diff --git a/src/mac/bitmap.cpp b/src/mac/bitmap.cpp index 08590d1006..78a8bd0b68 100644 --- a/src/mac/bitmap.cpp +++ b/src/mac/bitmap.cpp @@ -272,14 +272,19 @@ PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) SetGWorld( wp , NULL ) ; Rect portRect ; - GetPortBounds( wp , &portRect ) ; - + if ( clipRgn ) + GetRegionBounds( clipRgn , &portRect ) ; + else + GetPortBounds( wp , &portRect ) ; pict = OpenPicture(&portRect); if(pict) { RGBForeColor( &black ) ; RGBBackColor( &white ) ; - + + if ( clipRgn ) + SetClip( clipRgn ) ; + LockPixels( GetGWorldPixMap( wp ) ) ; CopyBits(GetPortBitMapForCopyBits(wp), GetPortBitMapForCopyBits(wp), @@ -290,10 +295,12 @@ PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) ClosePicture(); } SetGWorld( origPort , origDev ) ; + if ( clipRgn ) + DisposeRgn( clipRgn ) ; return pict; } -void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , bool forceColorIcon ) +void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType ) { memset( info , 0 , sizeof(ControlButtonContentInfo) ) ; if ( bitmap.Ok() ) @@ -309,7 +316,7 @@ void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bi } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { - if ( (forceColorIcon || bmap->m_width == bmap->m_height) && ((bmap->m_width & 0x3) == 0) ) + if ( (forceType == kControlContentCIconHandle || ( bmap->m_width == bmap->m_height && forceType != kControlContentPictHandle ) ) && ((bmap->m_width & 0x3) == 0) ) { info->contentType = kControlContentCIconHandle ; if ( bitmap.GetMask() ) @@ -362,6 +369,9 @@ wxBitmapRefData::wxBitmapRefData() // TODO move this to a public function of Bitmap Ref static void DisposeBitmapRefData(wxBitmapRefData *data) { + if ( !data ) + return ; + switch (data->m_bitmapType) { case kMacBitmapTypePict : @@ -630,11 +640,38 @@ int wxBitmap::GetBitmapType() const void wxBitmap::SetHBITMAP(WXHBITMAP bmp) { - DisposeBitmapRefData( M_BITMAPDATA ) ; + if (!M_BITMAPDATA) + m_refData = new wxBitmapRefData; + else + DisposeBitmapRefData( M_BITMAPDATA ) ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_hBitmap = bmp ; - M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ; + M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ; +} + +void wxBitmap::SetHICON(WXHICON ico) +{ + if (!M_BITMAPDATA) + m_refData = new wxBitmapRefData; + else + DisposeBitmapRefData( M_BITMAPDATA ) ; + + M_BITMAPDATA->m_bitmapType = kMacBitmapTypeIcon ; + M_BITMAPDATA->m_hIcon = ico ; + M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hIcon != NULL ) ; +} + +void wxBitmap::SetPict(WXHMETAFILE pict) +{ + if (!M_BITMAPDATA) + m_refData = new wxBitmapRefData; + else + DisposeBitmapRefData( M_BITMAPDATA ) ; + + M_BITMAPDATA->m_bitmapType = kMacBitmapTypePict ; + M_BITMAPDATA->m_hPict = pict ; + M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hPict != NULL ) ; } bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type) @@ -771,6 +808,8 @@ wxImage wxBitmap::ConvertToImage() const GWorldPtr origPort; GDHandle origDevice; + RgnHandle maskRgn = NULL ; + GWorldPtr tempPort = NULL ; int index; RGBColor color; // background color set to RGB(16,16,16) in consistent with wxGTK @@ -779,9 +818,28 @@ wxImage wxBitmap::ConvertToImage() const wxMask *mask = GetMask(); GetGWorld( &origPort, &origDevice ); - LockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP())); - SetGWorld( (GWorldPtr) GetHBITMAP(), NULL); - + if ( GetBitmapType() != kMacBitmapTypeGrafWorld ) + { + tempPort = wxMacCreateGWorld( width , height , -1) ; + } + else + { + tempPort = (GWorldPtr) GetHBITMAP() ; + } + LockPixels(GetGWorldPixMap(tempPort)); + SetGWorld( tempPort, NULL); + if ( GetBitmapType() == kMacBitmapTypePict || GetBitmapType() == kMacBitmapTypeIcon ) + { + Rect bitmaprect = { 0 , 0 , height, width }; + if ( GetBitmapType() == kMacBitmapTypeIcon ) + { + ::PlotCIconHandle( &bitmaprect , atNone , ttNone , MAC_WXHICON(GetHICON()) ) ; + maskRgn = NewRgn() ; + BitMapToRegion( maskRgn , &(**(MAC_WXHICON(GetHICON()))).iconMask ) ; + } + else + ::DrawPicture( (PicHandle) GetPict(), &bitmaprect ) ; + } // Copy data into image index = 0; for (int yy = 0; yy < height; yy++) @@ -795,27 +853,50 @@ wxImage wxBitmap::ConvertToImage() const data[index ] = r; data[index + 1] = g; data[index + 2] = b; - if (mask) - { - if (mask->PointMasked(xx,yy)) - { + if ( maskRgn ) + { + Point pt ; + pt.h = xx ; + pt.v = yy ; + if ( !PtInRgn( pt , maskRgn ) ) + { data[index ] = mask_r; data[index + 1] = mask_g; data[index + 2] = mask_b; - } + } + } + else + { + if (mask) + { + if (mask->PointMasked(xx,yy)) + { + data[index ] = mask_r; + data[index + 1] = mask_g; + data[index + 2] = mask_b; + } + } } index += 3; } } - if (mask) + if (mask || maskRgn ) { image.SetMaskColour( mask_r, mask_g, mask_b ); image.SetMask( true ); } // Free resources - UnlockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP())); + UnlockPixels(GetGWorldPixMap( tempPort )); SetGWorld(origPort, origDevice); + if ( GetBitmapType() != kMacBitmapTypeGrafWorld ) + { + wxMacDestroyGWorld( tempPort ) ; + } + if ( maskRgn ) + { + DisposeRgn( maskRgn ) ; + } return image; } @@ -957,94 +1038,30 @@ WXHBITMAP wxBitmap::GetHBITMAP() const WXHMETAFILE wxBitmap::GetPict() const { - wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); + wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); - PicHandle picture; // This is the returned picture + PicHandle picture = NULL ; // This is the returned picture - // If bitmap already in Pict format return pointer - if(M_BITMAPDATA->m_bitmapType == kMacBitmapTypePict) { - return M_BITMAPDATA->m_hPict; - } - else if(M_BITMAPDATA->m_bitmapType != kMacBitmapTypeGrafWorld) { - // Invalid bitmap - return NULL; - } - - RGBColor gray = { 0xCCCC ,0xCCCC , 0xCCCC } ; - RGBColor white = { 0xffff ,0xffff , 0xffff } ; - RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; - CGrafPtr origPort; - GDHandle origDev ; - wxMask *mask; - Rect portRect ; - - GetPortBounds( (GWorldPtr) GetHBITMAP() , &portRect ) ; - int width = portRect.right - portRect.left ; - int height = portRect.bottom - portRect.top ; - - LockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ; - GetGWorld( &origPort , &origDev ) ; - - mask = GetMask(); - - SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ; - - picture = OpenPicture(&portRect); // open a picture, this disables drawing - if(!picture) { - return NULL; - } - - if( mask ) - { -#ifdef __DARWIN__ - RGBColor trans = white; -#else - RGBBackColor( &gray ); - EraseRect( &portRect ); - RGBColor trans = gray; -#endif - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - PenMode(transparent); - - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - if ( !mask->PointMasked(x,y) ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - SetCPixel( x + portRect.left , y + portRect.top , &col ) ; - } - else { - // With transparency this sets a blank pixel - SetCPixel( x + portRect.left , y + portRect.top , &trans); - } - } - } - } - else - { - RGBBackColor( &gray ) ; - EraseRect(&portRect); - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - - CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()), - // src PixMap - we copy image over itself - - GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()), - // dst PixMap - no drawing occurs - &portRect, // srcRect - it will be recorded and compressed - - &portRect, // dstRect - into the picture that is open - - srcCopy,NULL); // copyMode and no clip region - } - ClosePicture(); // We are done recording the picture - UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ; - SetGWorld( origPort , origDev ) ; - - return picture; // return our groovy pict handle + // If bitmap already in Pict format return pointer + if(M_BITMAPDATA->m_bitmapType == kMacBitmapTypePict) { + return M_BITMAPDATA->m_hPict; + } + else if(M_BITMAPDATA->m_bitmapType != kMacBitmapTypeGrafWorld) { + // Invalid bitmap + return NULL; + } + else + { + if ( GetMask() ) + { + picture = wxMacCreatePict( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , MAC_WXHBITMAP(GetMask()->GetMaskBitmap() ) ) ; + } + else + { + picture = wxMacCreatePict( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , NULL ) ; + } + } + return picture ; } /* diff --git a/src/mac/button.cpp b/src/mac/button.cpp index cbc1d846d9..f8dc40f7df 100644 --- a/src/mac/button.cpp +++ b/src/mac/button.cpp @@ -25,6 +25,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) #include "wx/mac/uma.h" // Button +static const int kMacOSXHorizontalBorder = 1 ; +static const int kMacOSXVerticalBorder = 1 ; bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxPoint& pos, @@ -34,6 +36,12 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, { Rect bounds ; Str255 title ; + + if ( UMAHasAquaLayout() ) + { + m_macHorizontalBorder = kMacOSXHorizontalBorder; + m_macVerticalBorder = kMacOSXVerticalBorder; + } MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; @@ -76,19 +84,23 @@ wxSize wxButton::DoGetBestSize() const { wxSize sz = GetDefaultSize() ; - int wBtn = m_label.Length() * 8 + 12 ; - int hBtn = 20 ; + int wBtn = m_label.Length() * 8 + 12 + 2 * kMacOSXHorizontalBorder ; if (wBtn > sz.x) sz.x = wBtn; - if (hBtn > sz.y) sz.y = hBtn; return sz ; } wxSize wxButton::GetDefaultSize() { - int wBtn = 70 /* + 2 * m_macHorizontalBorder */ ; - int hBtn = 20 /* + 2 * m_macVerticalBorder */ ; + int wBtn = 70 ; + int hBtn = 20 ; + + if ( UMAHasAquaLayout() ) + { + wBtn += 2 * kMacOSXHorizontalBorder ; + hBtn += 2 * kMacOSXVerticalBorder ; + } return wxSize(wBtn, hBtn); } diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp index 587cdeb344..8cf752487c 100644 --- a/src/mac/carbon/app.cpp +++ b/src/mac/carbon/app.cpp @@ -73,6 +73,8 @@ extern wxList wxPendingDelete; extern wxList *wxWinMacWindowList; extern wxList *wxWinMacControlList; +static long sleepTime = 0 ; + wxApp *wxTheApp = NULL; #if !USE_SHARED_LIBRARY @@ -99,14 +101,17 @@ long wxApp::s_lastModifiers = 0 ; bool wxApp::s_macDefaultEncodingIsPC = true ; -bool wxApp::s_macSupportPCMenuShortcuts = true ; +bool wxApp::s_macSupportPCMenuShortcuts = false ; long wxApp::s_macAboutMenuItemId = wxID_ABOUT ; +long wxApp::s_macPreferencesMenuItemId = 0 ; +long wxApp::s_macExitMenuItemId = wxID_EXIT ; wxString wxApp::s_macHelpMenuTitleName = "&Help" ; pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandlePreferences( const AppleEvent *event , AppleEvent *reply , long refcon ) ; pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long WXUNUSED(refcon) ) @@ -133,6 +138,22 @@ pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long WX return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ; } +pascal OSErr AEHandlePreferences( const AppleEvent *event , AppleEvent *reply , long WXUNUSED(refcon) ) +{ + // GD: UNUSED wxApp* app = (wxApp*) refcon ; + + wxMenuBar* mbar = wxMenuBar::MacGetInstalledMenuBar() ; + wxMenu* menu = NULL ; + wxMenuItem* item = NULL ; + if ( mbar ) + { + item = mbar->FindItem( wxApp::s_macPreferencesMenuItemId , &menu ) ; + } + if ( item != NULL && menu != NULL && mbar != NULL ) + menu->SendEvent( wxApp::s_macPreferencesMenuItemId , -1 ) ; + return noErr ; +} + // new virtual public method in wxApp void wxApp::MacOpenFile(const wxString & WXUNUSED(fileName) ) { @@ -788,6 +809,9 @@ void wxStAppResource::OpenSharedLibraryResource(const void *initBlock) theModule = NSModuleForSymbol(theSymbol); theLibPath = NSLibraryNameForModule(theModule); + wxLogDebug( wxT("wxMac library installation name is '%s'"), + theLibPath ); + // allocate copy to replace .dylib.* extension with .rsrc theResPath = strdup(theLibPath); if (theResPath != NULL) { @@ -801,7 +825,8 @@ void wxStAppResource::OpenSharedLibraryResource(const void *initBlock) // overwrite extension with ".rsrc" strcpy(theExt, ".rsrc"); - wxLogDebug( theResPath ); + wxLogDebug( wxT("wxMac resources file name is '%s'"), + theResPath ); theErr = FSPathMakeRef((UInt8 *) theResPath, &theResRef, false); if (theErr != noErr) { @@ -809,14 +834,18 @@ void wxStAppResource::OpenSharedLibraryResource(const void *initBlock) theErr = FSPathMakeRef((UInt8 *) theName, &theResRef, false); } - // free duplicated resource file path - free(theResPath); - // open the resource file if (theErr == noErr) { theErr = FSOpenResourceFile( &theResRef, 0, NULL, fsRdPerm, &gSharedLibraryResource); } + if (theErr != noErr) { + wxLogDebug( wxT("unable to open wxMac resource file '%s'"), + theResPath ); + } + + // free duplicated resource file path + free(theResPath); } } #endif /* __DARWIN__ */ @@ -923,10 +952,7 @@ int wxEntry( int argc, char *argv[] , bool enterLoop ) // application (otherwise applications would need to handle it) if (argc > 1) { - char theArg[6] = ""; - strncpy(theArg, argv[1], 5); - - if (strcmp(theArg, "-psn_") == 0) { + if (strncmp(argv[1], "-psn_", 5) == 0) { // assume the argument is always the only one and remove it --argc; } @@ -1147,6 +1173,18 @@ int wxApp::MainLoop() { m_keepGoing = TRUE; +#if TARGET_CARBON + if ( UMAGetSystemVersion() >= 0x1000 ) + { + if ( s_macPreferencesMenuItemId ) + { + EnableMenuCommand( NULL , kHICommandPreferences ) ; + AEInstallEventHandler( kCoreEventClass , kAEShowPreferences , + NewAEEventHandlerUPP(AEHandlePreferences) , + (long) wxTheApp , FALSE ) ; + } + } +#endif while (m_keepGoing) { MacDoOneEvent() ; @@ -1334,16 +1372,19 @@ bool wxApp::Yield(bool onlyIfNeeded) #endif EventRecord event ; - long sleepTime = 1 ; //::GetCaretTime(); + // having a larger value here leads to large performance slowdowns + // so we cannot give background apps more processor time here + // we do so however having a large sleep value in the main event loop + sleepTime = 0 ; - while ( !wxTheApp->IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, (RgnHandle) wxApp::s_macCursorRgn)) + while ( !IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, (RgnHandle) wxApp::s_macCursorRgn)) { - wxTheApp->MacHandleModifierEvents( &event ) ; - wxTheApp->MacHandleOneEvent( &event ); + MacHandleModifierEvents( &event ) ; + MacHandleOneEvent( &event ); if ( event.what != kHighLevelEvent ) SetRectRgn( (RgnHandle) wxApp::s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; } - wxTheApp->MacHandleModifierEvents( &event ) ; + MacHandleModifierEvents( &event ) ; wxMacProcessNotifierAndPendingEvents() ; @@ -1412,12 +1453,11 @@ void wxApp::MacDoOneEvent() { EventRecord event ; - long sleepTime = 1; // GetCaretTime() / 4 ; - if (WaitNextEvent(everyEvent, &event, sleepTime, (RgnHandle) s_macCursorRgn)) { MacHandleModifierEvents( &event ) ; MacHandleOneEvent( &event ); + sleepTime = 0 ; } else { @@ -1427,7 +1467,10 @@ void wxApp::MacDoOneEvent() if ( window ) ::IdleControls( window ) ; - wxTheApp->ProcessIdle() ; + if ( wxTheApp->ProcessIdle() ) + sleepTime = 0 ; + else + sleepTime = GetCaretTime() / 2 ; } if ( event.what != kHighLevelEvent ) SetRectRgn( (RgnHandle) s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; @@ -1443,7 +1486,9 @@ void wxApp::MacHandleModifierEvents( WXEVENTREF evr ) EventRecord* ev = (EventRecord*) evr ; #if TARGET_CARBON if ( ev->what == mouseDown || ev->what == mouseUp || ev->what == activateEvt || - ev->what == keyDown || ev->what == autoKey || ev->what == keyUp || ev->what == nullEvent ) + ev->what == keyDown || ev->what == autoKey || ev->what == keyUp || ev->what == kHighLevelEvent || + ev->what == nullEvent + ) { // in these cases the modifiers are already correctly setup by carbon } @@ -1628,23 +1673,28 @@ void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr ) break; case inGrow: { - int growResult = GrowWindow(window , ev->where, &screenBits.bounds); - if (growResult != 0) + Rect newContentRect ; + Rect constraintRect ; + constraintRect.top = win->GetMinHeight() ; + if ( constraintRect.top == -1 ) + constraintRect.top = 0 ; + constraintRect.left = win->GetMinWidth() ; + if ( constraintRect.left == -1 ) + constraintRect.left = 0 ; + constraintRect.right = win->GetMaxWidth() ; + if ( constraintRect.right == -1 ) + constraintRect.right = 32000 ; + constraintRect.bottom = win->GetMaxHeight() ; + if ( constraintRect.bottom == -1 ) + constraintRect.bottom = 32000 ; + + Boolean growResult = ResizeWindow( window , ev->where , + &constraintRect , &newContentRect ) ; + if ( growResult ) { - int newWidth = LoWord(growResult); - int newHeight = HiWord(growResult); - int oldWidth, oldHeight; - - - if (win) - { - win->GetSize(&oldWidth, &oldHeight); - if (newWidth == 0) - newWidth = oldWidth; - if (newHeight == 0) - newHeight = oldHeight; - win->SetSize( -1, -1 , newWidth, newHeight, wxSIZE_USE_EXISTING); - } + win->SetSize( newContentRect.left , newContentRect.top , + newContentRect.right - newContentRect.left , + newContentRect.bottom - newContentRect.top, wxSIZE_USE_EXISTING); } s_lastMouseDown = 0; } @@ -1682,31 +1732,32 @@ void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr ) GrafPtr port ; GetPort( &port ) ; SetPortWindowPort(window) ; + + if ( window != frontWindow && wxTheApp->s_captureWindow == NULL ) + { + if ( s_macIsInModalLoop ) + { + SysBeep ( 30 ) ; + } + else if ( UMAIsWindowFloating( window ) ) + { + if ( win ) + win->MacMouseDown( ev , windowPart ) ; + } + else + { + if ( win ) + win->MacMouseDown( ev , windowPart ) ; + ::SelectWindow( window ) ; + } + } + else + { + if ( win ) + win->MacMouseDown( ev , windowPart ) ; + } SetPort( port ) ; } - if ( window != frontWindow && wxTheApp->s_captureWindow == NULL ) - { - if ( s_macIsInModalLoop ) - { - SysBeep ( 30 ) ; - } - else if ( UMAIsWindowFloating( window ) ) - { - if ( win ) - win->MacMouseDown( ev , windowPart ) ; - } - else - { - if ( win ) - win->MacMouseDown( ev , windowPart ) ; - ::SelectWindow( window ) ; - } - } - else - { - if ( win ) - win->MacMouseDown( ev , windowPart ) ; - } break ; default: @@ -2309,35 +2360,31 @@ void wxApp::MacHandleMenuSelect( int macMenuId , int macMenuItemNum ) } else { + MenuCommand id ; + GetMenuItemCommandID( GetMenuHandle(macMenuId) , macMenuItemNum , &id ) ; + wxMenuBar* mbar = wxMenuBar::MacGetInstalledMenuBar() ; + wxMenu* menu = NULL ; + wxMenuItem* item = NULL ; + if ( mbar ) + { + item = mbar->FindItem( id , &menu ) ; + } + wxCHECK_RET( item != NULL && menu != NULL && mbar != NULL, wxT("error in menu item callback") ); + + if (item->IsCheckable()) + { + item->Check( !item->IsChecked() ) ; + } + + menu->SendEvent( id , item->IsCheckable() ? item->IsChecked() : -1 ) ; + /* wxWindow* frontwindow = wxFindWinFromMacWindow( ::FrontWindow() ) ; - if ( frontwindow && wxMenuBar::MacGetInstalledMenuBar() ) - wxMenuBar::MacGetInstalledMenuBar()->MacMenuSelect( frontwindow->GetEventHandler() , 0 , macMenuId , macMenuItemNum ) ; + wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, id ); + event.m_timeStamp = ((EventRecord*) MacGetCurrentEvent())->when ; + event.SetEventObject(menu); + event.SetInt(item->IsCheckable() ? item->IsChecked() : -1); + frontwindow->GetEventHandler()->ProcessEvent(event); + */ } HiliteMenu(0); } - -/* -long wxApp::MacTranslateKey(char key, int mods) -{ -} - -void wxApp::MacAdjustCursor() -{ -} - -*/ -/* -void -wxApp::macAdjustCursor() -{ - if (ev->what != kHighLevelEvent) - { - wxWindow* theMacWxFrame = wxFrame::MacFindFrameOrDialog(::FrontWindow()); - if (theMacWxFrame) - { - if (!theMacWxFrame->MacAdjustCursor(ev->where)) - ::SetCursor(&(qd.arrow)); - } - } -} -*/ diff --git a/src/mac/carbon/bitmap.cpp b/src/mac/carbon/bitmap.cpp index 08590d1006..78a8bd0b68 100644 --- a/src/mac/carbon/bitmap.cpp +++ b/src/mac/carbon/bitmap.cpp @@ -272,14 +272,19 @@ PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) SetGWorld( wp , NULL ) ; Rect portRect ; - GetPortBounds( wp , &portRect ) ; - + if ( clipRgn ) + GetRegionBounds( clipRgn , &portRect ) ; + else + GetPortBounds( wp , &portRect ) ; pict = OpenPicture(&portRect); if(pict) { RGBForeColor( &black ) ; RGBBackColor( &white ) ; - + + if ( clipRgn ) + SetClip( clipRgn ) ; + LockPixels( GetGWorldPixMap( wp ) ) ; CopyBits(GetPortBitMapForCopyBits(wp), GetPortBitMapForCopyBits(wp), @@ -290,10 +295,12 @@ PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) ClosePicture(); } SetGWorld( origPort , origDev ) ; + if ( clipRgn ) + DisposeRgn( clipRgn ) ; return pict; } -void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , bool forceColorIcon ) +void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType ) { memset( info , 0 , sizeof(ControlButtonContentInfo) ) ; if ( bitmap.Ok() ) @@ -309,7 +316,7 @@ void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bi } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { - if ( (forceColorIcon || bmap->m_width == bmap->m_height) && ((bmap->m_width & 0x3) == 0) ) + if ( (forceType == kControlContentCIconHandle || ( bmap->m_width == bmap->m_height && forceType != kControlContentPictHandle ) ) && ((bmap->m_width & 0x3) == 0) ) { info->contentType = kControlContentCIconHandle ; if ( bitmap.GetMask() ) @@ -362,6 +369,9 @@ wxBitmapRefData::wxBitmapRefData() // TODO move this to a public function of Bitmap Ref static void DisposeBitmapRefData(wxBitmapRefData *data) { + if ( !data ) + return ; + switch (data->m_bitmapType) { case kMacBitmapTypePict : @@ -630,11 +640,38 @@ int wxBitmap::GetBitmapType() const void wxBitmap::SetHBITMAP(WXHBITMAP bmp) { - DisposeBitmapRefData( M_BITMAPDATA ) ; + if (!M_BITMAPDATA) + m_refData = new wxBitmapRefData; + else + DisposeBitmapRefData( M_BITMAPDATA ) ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_hBitmap = bmp ; - M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ; + M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ; +} + +void wxBitmap::SetHICON(WXHICON ico) +{ + if (!M_BITMAPDATA) + m_refData = new wxBitmapRefData; + else + DisposeBitmapRefData( M_BITMAPDATA ) ; + + M_BITMAPDATA->m_bitmapType = kMacBitmapTypeIcon ; + M_BITMAPDATA->m_hIcon = ico ; + M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hIcon != NULL ) ; +} + +void wxBitmap::SetPict(WXHMETAFILE pict) +{ + if (!M_BITMAPDATA) + m_refData = new wxBitmapRefData; + else + DisposeBitmapRefData( M_BITMAPDATA ) ; + + M_BITMAPDATA->m_bitmapType = kMacBitmapTypePict ; + M_BITMAPDATA->m_hPict = pict ; + M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hPict != NULL ) ; } bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type) @@ -771,6 +808,8 @@ wxImage wxBitmap::ConvertToImage() const GWorldPtr origPort; GDHandle origDevice; + RgnHandle maskRgn = NULL ; + GWorldPtr tempPort = NULL ; int index; RGBColor color; // background color set to RGB(16,16,16) in consistent with wxGTK @@ -779,9 +818,28 @@ wxImage wxBitmap::ConvertToImage() const wxMask *mask = GetMask(); GetGWorld( &origPort, &origDevice ); - LockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP())); - SetGWorld( (GWorldPtr) GetHBITMAP(), NULL); - + if ( GetBitmapType() != kMacBitmapTypeGrafWorld ) + { + tempPort = wxMacCreateGWorld( width , height , -1) ; + } + else + { + tempPort = (GWorldPtr) GetHBITMAP() ; + } + LockPixels(GetGWorldPixMap(tempPort)); + SetGWorld( tempPort, NULL); + if ( GetBitmapType() == kMacBitmapTypePict || GetBitmapType() == kMacBitmapTypeIcon ) + { + Rect bitmaprect = { 0 , 0 , height, width }; + if ( GetBitmapType() == kMacBitmapTypeIcon ) + { + ::PlotCIconHandle( &bitmaprect , atNone , ttNone , MAC_WXHICON(GetHICON()) ) ; + maskRgn = NewRgn() ; + BitMapToRegion( maskRgn , &(**(MAC_WXHICON(GetHICON()))).iconMask ) ; + } + else + ::DrawPicture( (PicHandle) GetPict(), &bitmaprect ) ; + } // Copy data into image index = 0; for (int yy = 0; yy < height; yy++) @@ -795,27 +853,50 @@ wxImage wxBitmap::ConvertToImage() const data[index ] = r; data[index + 1] = g; data[index + 2] = b; - if (mask) - { - if (mask->PointMasked(xx,yy)) - { + if ( maskRgn ) + { + Point pt ; + pt.h = xx ; + pt.v = yy ; + if ( !PtInRgn( pt , maskRgn ) ) + { data[index ] = mask_r; data[index + 1] = mask_g; data[index + 2] = mask_b; - } + } + } + else + { + if (mask) + { + if (mask->PointMasked(xx,yy)) + { + data[index ] = mask_r; + data[index + 1] = mask_g; + data[index + 2] = mask_b; + } + } } index += 3; } } - if (mask) + if (mask || maskRgn ) { image.SetMaskColour( mask_r, mask_g, mask_b ); image.SetMask( true ); } // Free resources - UnlockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP())); + UnlockPixels(GetGWorldPixMap( tempPort )); SetGWorld(origPort, origDevice); + if ( GetBitmapType() != kMacBitmapTypeGrafWorld ) + { + wxMacDestroyGWorld( tempPort ) ; + } + if ( maskRgn ) + { + DisposeRgn( maskRgn ) ; + } return image; } @@ -957,94 +1038,30 @@ WXHBITMAP wxBitmap::GetHBITMAP() const WXHMETAFILE wxBitmap::GetPict() const { - wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); + wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); - PicHandle picture; // This is the returned picture + PicHandle picture = NULL ; // This is the returned picture - // If bitmap already in Pict format return pointer - if(M_BITMAPDATA->m_bitmapType == kMacBitmapTypePict) { - return M_BITMAPDATA->m_hPict; - } - else if(M_BITMAPDATA->m_bitmapType != kMacBitmapTypeGrafWorld) { - // Invalid bitmap - return NULL; - } - - RGBColor gray = { 0xCCCC ,0xCCCC , 0xCCCC } ; - RGBColor white = { 0xffff ,0xffff , 0xffff } ; - RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; - CGrafPtr origPort; - GDHandle origDev ; - wxMask *mask; - Rect portRect ; - - GetPortBounds( (GWorldPtr) GetHBITMAP() , &portRect ) ; - int width = portRect.right - portRect.left ; - int height = portRect.bottom - portRect.top ; - - LockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ; - GetGWorld( &origPort , &origDev ) ; - - mask = GetMask(); - - SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ; - - picture = OpenPicture(&portRect); // open a picture, this disables drawing - if(!picture) { - return NULL; - } - - if( mask ) - { -#ifdef __DARWIN__ - RGBColor trans = white; -#else - RGBBackColor( &gray ); - EraseRect( &portRect ); - RGBColor trans = gray; -#endif - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - PenMode(transparent); - - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - if ( !mask->PointMasked(x,y) ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - SetCPixel( x + portRect.left , y + portRect.top , &col ) ; - } - else { - // With transparency this sets a blank pixel - SetCPixel( x + portRect.left , y + portRect.top , &trans); - } - } - } - } - else - { - RGBBackColor( &gray ) ; - EraseRect(&portRect); - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - - CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()), - // src PixMap - we copy image over itself - - GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()), - // dst PixMap - no drawing occurs - &portRect, // srcRect - it will be recorded and compressed - - &portRect, // dstRect - into the picture that is open - - srcCopy,NULL); // copyMode and no clip region - } - ClosePicture(); // We are done recording the picture - UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ; - SetGWorld( origPort , origDev ) ; - - return picture; // return our groovy pict handle + // If bitmap already in Pict format return pointer + if(M_BITMAPDATA->m_bitmapType == kMacBitmapTypePict) { + return M_BITMAPDATA->m_hPict; + } + else if(M_BITMAPDATA->m_bitmapType != kMacBitmapTypeGrafWorld) { + // Invalid bitmap + return NULL; + } + else + { + if ( GetMask() ) + { + picture = wxMacCreatePict( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , MAC_WXHBITMAP(GetMask()->GetMaskBitmap() ) ) ; + } + else + { + picture = wxMacCreatePict( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , NULL ) ; + } + } + return picture ; } /* diff --git a/src/mac/carbon/button.cpp b/src/mac/carbon/button.cpp index cbc1d846d9..f8dc40f7df 100644 --- a/src/mac/carbon/button.cpp +++ b/src/mac/carbon/button.cpp @@ -25,6 +25,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) #include "wx/mac/uma.h" // Button +static const int kMacOSXHorizontalBorder = 1 ; +static const int kMacOSXVerticalBorder = 1 ; bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxPoint& pos, @@ -34,6 +36,12 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, { Rect bounds ; Str255 title ; + + if ( UMAHasAquaLayout() ) + { + m_macHorizontalBorder = kMacOSXHorizontalBorder; + m_macVerticalBorder = kMacOSXVerticalBorder; + } MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; @@ -76,19 +84,23 @@ wxSize wxButton::DoGetBestSize() const { wxSize sz = GetDefaultSize() ; - int wBtn = m_label.Length() * 8 + 12 ; - int hBtn = 20 ; + int wBtn = m_label.Length() * 8 + 12 + 2 * kMacOSXHorizontalBorder ; if (wBtn > sz.x) sz.x = wBtn; - if (hBtn > sz.y) sz.y = hBtn; return sz ; } wxSize wxButton::GetDefaultSize() { - int wBtn = 70 /* + 2 * m_macHorizontalBorder */ ; - int hBtn = 20 /* + 2 * m_macVerticalBorder */ ; + int wBtn = 70 ; + int hBtn = 20 ; + + if ( UMAHasAquaLayout() ) + { + wBtn += 2 * kMacOSXHorizontalBorder ; + hBtn += 2 * kMacOSXVerticalBorder ; + } return wxSize(wBtn, hBtn); } diff --git a/src/mac/carbon/checklst.cpp b/src/mac/carbon/checklst.cpp index bba473b606..3bb48dec08 100644 --- a/src/mac/carbon/checklst.cpp +++ b/src/mac/carbon/checklst.cpp @@ -271,7 +271,7 @@ bool wxCheckListBox::Create(wxWindow *parent, } else { - options = lOnlyOne ; + options = (OptionBits) lOnlyOne ; } SetListSelectionFlags((ListHandle)m_macList, options); diff --git a/src/mac/carbon/choice.cpp b/src/mac/carbon/choice.cpp index bc008702f4..630cb59b8b 100644 --- a/src/mac/carbon/choice.cpp +++ b/src/mac/carbon/choice.cpp @@ -27,7 +27,15 @@ extern MenuHandle NewUniqueMenu() ; wxChoice::~wxChoice() { - // DeleteMenu( m_macPopUpMenuId ) ; + if ( HasClientObjectData() ) + { + size_t i, max = GetCount(); + + for ( i = 0; i < max; ++i ) + delete GetClientObject(i); + } + + // DeleteMenu( m_macPopUpMenuId ) ; // DisposeMenu( m_macPopUpMenuHandle ) ; } @@ -72,7 +80,10 @@ int wxChoice::DoAppend(const wxString& item) { Str255 label; wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false); - AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ; + MacAppendMenu(MAC_WXHMENU( m_macPopUpMenuHandle ) , "\pA"); + SetMenuItemText(MAC_WXHMENU( m_macPopUpMenuHandle ) , + (SInt16) ::CountMenuItems(MAC_WXHMENU( m_macPopUpMenuHandle ) ), label); + // was AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ; m_strings.Add( item ) ; m_datas.Add( NULL ) ; int index = m_strings.GetCount() - 1 ; @@ -203,22 +214,67 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) { wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(GetStringSelection()); - ProcessCommand(event); + + int n = GetSelection(); + // actually n should be made sure by the os to be a valid selection, but ... + if ( n > -1 ) + { + event.SetInt( n ); + event.SetString(GetStringSelection()); + event.SetEventObject(this); + + if ( HasClientObjectData() ) + event.SetClientObject( GetClientObject(n) ); + else if ( HasClientUntypedData() ) + event.SetClientData( GetClientData(n) ); + + ProcessCommand(event); + } } wxSize wxChoice::DoGetBestSize() const { - // TODO should modify this to take into account string length ala wxGTK - return wxSize(100,20); + int lbWidth = 100; // some defaults + int lbHeight = 20; + int wLine; +#if TARGET_CARBON + long metric ; + GetThemeMetric(kThemeMetricPopupButtonHeight , &metric ); + lbHeight = metric ; +#endif + { + wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetRootWindow() ) ) ; + + wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; + + if ( font ) + { + ::TextFont( font->m_macFontNum ) ; + ::TextSize( short(font->m_macFontSize) ) ; + ::TextFace( font->m_macFontStyle ) ; + } + else + { + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + } + + // Find the widest line + for(int i = 0; i < GetCount(); i++) { + wxString str(GetString(i)); + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; + lbWidth = wxMax(lbWidth, wLine); + } + + // Add room for the popup arrow + lbWidth += 2 * lbHeight ; + + // And just a bit more + int cx = ::TextWidth( "X" , 0 , 1 ) ; + lbWidth += cx ; + + } + return wxSize(lbWidth, lbHeight); } -/* -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} -*/ diff --git a/src/mac/carbon/clipbrd.cpp b/src/mac/carbon/clipbrd.cpp index 76952a442e..f5d014c371 100644 --- a/src/mac/carbon/clipbrd.cpp +++ b/src/mac/carbon/clipbrd.cpp @@ -23,10 +23,10 @@ #include "wx/intl.h" #include "wx/log.h" -#include "wx/mac/private.h" #ifndef __DARWIN__ #include #endif +#include "wx/mac/uma.h" #define wxUSE_DATAOBJ 1 @@ -44,7 +44,8 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) #else OSStatus err = noErr ; #endif - void * data = NULL ; + void * data = NULL ; + Size byteCount; switch (dataFormat.GetType()) { @@ -54,6 +55,9 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) case wxDF_TEXT: break; + case wxDF_BITMAP : + case wxDF_METAFILE : + break ; default: { wxLogError(_("Unsupported clipboard format.")); @@ -68,7 +72,6 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) if ( err != noTypeErr && err != memFullErr ) { ScrapFlavorFlags flavorFlags; - Size byteCount; if (( err = GetScrapFlavorFlags( scrapRef, dataFormat.GetFormatId(), &flavorFlags )) == noErr) { @@ -101,7 +104,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) HUnlock( datahandle ) ; if ( GetHandleSize( datahandle ) > 0 ) { - long byteCount = GetHandleSize( datahandle ) ; + byteCount = GetHandleSize( datahandle ) ; if ( dataFormat.GetType() == wxDF_TEXT ) data = new char[ byteCount + 1] ; else @@ -122,7 +125,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) } if ( dataFormat.GetType() == wxDF_TEXT && wxApp::s_macDefaultEncodingIsPC ) { - wxMacConvertToPC((char*)data) ; + wxMacConvertToPC((char*)data,(char*)data,byteCount) ; } return data; } @@ -240,43 +243,38 @@ bool wxClipboard::AddData( wxDataObject *data ) { mac = textDataObject->GetText() ; } - #if !TARGET_CARBON - err = PutScrap( mac.Length() , 'TEXT' , mac.c_str() ) ; - #else - ScrapRef scrap; - err = GetCurrentScrap (&scrap); - if ( !err ) - { - err = PutScrapFlavor (scrap, 'TEXT', 0, mac.Length(), mac.c_str()); - } - #endif + err = UMAPutScrap( mac.Length() , 'TEXT' , (void*) mac.c_str() ) ; } break ; #if wxUSE_DRAG_AND_DROP case wxDF_METAFILE: { - wxMetafileDataObject* metaFileDataObject = + wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject*) data; - wxMetafile metaFile = metaFileDataObject->GetMetafile(); - PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ; - HLock( (Handle) pict ) ; - #if !TARGET_CARBON - err = PutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; - #else - ScrapRef scrap; - err = GetCurrentScrap (&scrap); - if ( !err ) - { - err = PutScrapFlavor (scrap, 'PICT', 0, GetHandleSize((Handle) pict), *pict); - } - #endif - HUnlock( (Handle) pict ) ; + wxMetafile metaFile = metaFileDataObject->GetMetafile(); + PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ; + HLock( (Handle) pict ) ; + err = UMAPutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; + HUnlock( (Handle) pict ) ; } break ; #endif case wxDF_BITMAP: case wxDF_DIB: + { + PicHandle pict = NULL ; + + wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data ; + bool created = bitmapDataObject->GetBitmap().GetBitmapType() != kMacBitmapTypePict ; + pict = (PicHandle) bitmapDataObject->GetBitmap().GetPict() ; + + HLock( (Handle) pict ) ; + err = UMAPutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; + HUnlock( (Handle) pict ) ; + if ( created && pict) + KillPicture( pict ) ; + } default: break ; } @@ -375,8 +373,10 @@ bool wxClipboard::GetData( wxDataObject& data ) switch ( format.GetType() ) { - case wxDF_TEXT: - case wxDF_OEMTEXT: + case wxDF_TEXT : + case wxDF_OEMTEXT : + case wxDF_BITMAP : + case wxDF_METAFILE : { long len ; char* s = (char*)wxGetClipboardData(format, &len ); diff --git a/src/mac/carbon/combobox.cpp b/src/mac/carbon/combobox.cpp index 22924613ea..2341937b42 100644 --- a/src/mac/carbon/combobox.cpp +++ b/src/mac/carbon/combobox.cpp @@ -205,7 +205,7 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height) { } else { - wxCoord wText = width - POPUPWIDTH; + wxCoord wText = width - POPUPWIDTH - MARGIN ; m_text->SetSize(0, 0, wText, height); m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, -1); } @@ -311,7 +311,12 @@ wxString wxComboBox::GetValue() const void wxComboBox::SetValue(const wxString& value) { - SetStringSelection( value ) ; + int s = FindString (value); + if (s == wxNOT_FOUND && !HasFlag(wxCB_READONLY) ) + { + m_choice->Append(value) ; + } + SetStringSelection( value ) ; } // Clipboard operations @@ -408,6 +413,10 @@ void wxComboBox::Append(const wxString& item) void wxComboBox::Delete(int n) { + if ( HasClientObjectData() ) + { + SetClientObject(n, NULL); + } m_choice->Delete( n ); } diff --git a/src/mac/carbon/control.cpp b/src/mac/carbon/control.cpp index 5998a660fc..368db51b8a 100644 --- a/src/mac/carbon/control.cpp +++ b/src/mac/carbon/control.cpp @@ -35,9 +35,9 @@ IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) BEGIN_EVENT_TABLE(wxControl, wxWindow) - EVT_MOUSE_EVENTS( wxControl::OnMouseEvent ) -// EVT_CHAR( wxControl::OnKeyDown ) - EVT_PAINT( wxControl::OnPaint ) + EVT_MOUSE_EVENTS( wxControl::OnMouseEvent ) +// EVT_CHAR( wxControl::OnKeyDown ) + EVT_PAINT( wxControl::OnPaint ) END_EVENT_TABLE() #endif @@ -89,7 +89,7 @@ ControlDefUPP wxMacControlActionUPP = NULL ; pascal SInt32 wxMacControlDefintion(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param) { - + wxControl* wx = (wxControl*) wxFindControlFromMacControl( theControl ) ; if ( wx != NULL && wx->IsKindOf( CLASSINFO( wxControl ) ) ) { @@ -129,7 +129,7 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa } return status ; } - + wxControl::wxControl() { m_macControl = NULL ; @@ -161,7 +161,7 @@ bool wxControl::Create(wxWindow *parent, wxWindowID id, m_macControl = NULL ; m_macHorizontalBorder = 0 ; // additional pixels around the real control m_macVerticalBorder = 0 ; - + bool rval = wxWindow::Create(parent, id, pos, size, style, name); if ( parent ) { @@ -203,12 +203,12 @@ void wxControl::SetLabel(const wxString& title) { Str255 maclabel ; wxString label ; - + if( wxApp::s_macDefaultEncodingIsPC ) label = wxMacMakeMacStringFromPC( m_label ) ; else label = m_label ; - + #if TARGET_CARBON c2pstrcpy( (StringPtr) maclabel , label ) ; #else @@ -239,7 +239,7 @@ wxSize wxControl::DoGetBestSize() const } else if ( IsKindOf( CLASSINFO( wxSpinButton ) ) ) { - bestsize.bottom = 24 ; + bestsize.bottom = 24 ; } } @@ -255,7 +255,7 @@ wxSize wxControl::DoGetBestSize() const } else bestWidth = bestsize.right - bestsize.left ; - + bestWidth += 2 * m_macHorizontalBorder ; bestHeight = bestsize.bottom - bestsize.top ; @@ -264,7 +264,7 @@ wxSize wxControl::DoGetBestSize() const bestHeight += 2 * m_macVerticalBorder; - + return wxSize(bestWidth, bestHeight); } @@ -313,16 +313,14 @@ void wxRemoveMacControlAssociation(wxControl *control) wxWinMacControlList->DeleteObject(control); } -void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString label , +void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString label , const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, - const wxString& name , WXRECTPTR outBounds , unsigned char* maclabel ) + const wxString& name , WXRECTPTR outBounds , unsigned char* maclabel ) { m_label = label ; SetName(name); - if ( &validator ) - SetValidator(validator); m_windowStyle = style; parent->AddChild(this); @@ -341,7 +339,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l m_height = size.y ; m_x = pos.x ; m_y = pos.y ; - + ((Rect*)outBounds)->top = -10; ((Rect*)outBounds)->left = -10; ((Rect*)outBounds)->bottom = 0; @@ -365,7 +363,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l void wxControl::MacPostControlCreate() { wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ; - + if ( IsKindOf( CLASSINFO( wxScrollBar ) ) ) { // no font @@ -375,7 +373,7 @@ void wxControl::MacPostControlCreate() ControlFontStyleRec controlstyle ; controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallBoldSystemFont ; - + ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ; } else @@ -383,7 +381,7 @@ void wxControl::MacPostControlCreate() ControlFontStyleRec controlstyle ; controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallSystemFont ; - + ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ; } ControlHandle container = (ControlHandle) GetParent()->MacGetContainerForEmbedding() ; @@ -400,6 +398,10 @@ void wxControl::MacPostControlCreate() { wxMacControlActionUPP = NewControlDefUPP( wxMacControlDefintion ) ; } + // The following block of code is responsible for crashes when switching + // back to windows, which can be seen in the dialogs sample. + // It is disabled until a proper solution can be found. +#if 0 #if TARGET_CARBON /* only working under classic carbon @@ -417,37 +419,41 @@ void wxControl::MacPostControlCreate() (**cdef).function = (void(*)()) wxMacControlActionUPP; (**(ControlHandle)m_macControl).contrlDefProc = (Handle) cdef ; } +#endif #endif SetControlColorProc( (ControlHandle) m_macControl , wxMacSetupControlBackgroundUPP ) ; - + // Adjust the controls size and position wxPoint pos(m_x, m_y); wxSize best_size( DoGetBestSize() ); wxSize new_size( m_width, m_height ); - + m_x = m_y = m_width = m_height = -1; // Forces SetSize to move/size the control - + if (new_size.x == -1) { new_size.x = best_size.x; } if (new_size.y == -1) { new_size.y = best_size.y; } - + SetSize(pos.x, pos.y, new_size.x, new_size.y); - + UMAShowControl( (ControlHandle) m_macControl ) ; + + SetCursor( *wxSTANDARD_CURSOR ) ; + Refresh() ; } -void wxControl::MacAdjustControlRect() +void wxControl::MacAdjustControlRect() { wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ; if ( m_width == -1 || m_height == -1 ) { Rect bestsize = { 0 , 0 , 0 , 0 } ; short baselineoffset ; - + ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ; if ( EmptyRect( &bestsize ) ) @@ -462,7 +468,7 @@ void wxControl::MacAdjustControlRect() } else if ( IsKindOf( CLASSINFO( wxSpinButton ) ) ) { - bestsize.bottom = 24 ; + bestsize.bottom = 24 ; } } @@ -480,7 +486,7 @@ void wxControl::MacAdjustControlRect() } else m_width = bestsize.right - bestsize.left ; - + m_width += 2 * m_macHorizontalBorder + MacGetLeftBorderSize() + MacGetRightBorderSize() ; } if ( m_height == -1 ) @@ -491,12 +497,12 @@ void wxControl::MacAdjustControlRect() m_height += 2 * m_macVerticalBorder + MacGetTopBorderSize() + MacGetBottomBorderSize() ; } - MacUpdateDimensions() ; + MacUpdateDimensions() ; // UMASizeControl( (ControlHandle) m_macControl , m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ; } } -WXWidget wxControl::MacGetContainerForEmbedding() +WXWidget wxControl::MacGetContainerForEmbedding() { if ( m_macControl ) return m_macControl ; @@ -504,29 +510,29 @@ WXWidget wxControl::MacGetContainerForEmbedding() return wxWindow::MacGetContainerForEmbedding() ; } -void wxControl::MacUpdateDimensions() +void wxControl::MacUpdateDimensions() { // actually in the current systems this should never be possible, but later reparenting // may become a reality - + if ( (ControlHandle) m_macControl == NULL ) return ; - + if ( GetParent() == NULL ) return ; - + WindowRef rootwindow = (WindowRef) MacGetRootWindow() ; if ( rootwindow == NULL ) return ; - - Rect oldBounds ; - GetControlBounds( (ControlHandle) m_macControl , &oldBounds ) ; - + + Rect oldBounds ; + GetControlBounds( (ControlHandle) m_macControl , &oldBounds ) ; + int new_x = m_x + MacGetLeftBorderSize() + m_macHorizontalBorder ; int new_y = m_y + MacGetTopBorderSize() + m_macVerticalBorder ; int new_width = m_width - MacGetLeftBorderSize() - MacGetRightBorderSize() - 2 * m_macHorizontalBorder ; int new_height = m_height - MacGetTopBorderSize() - MacGetBottomBorderSize() - 2 * m_macVerticalBorder ; - + GetParent()->MacWindowToRootWindow( & new_x , & new_y ) ; bool doMove = new_x != oldBounds.left || new_y != oldBounds.top ; bool doResize = ( oldBounds.right - oldBounds.left ) != new_width || (oldBounds.bottom - oldBounds.top ) != new_height ; @@ -544,19 +550,19 @@ void wxControl::MacUpdateDimensions() } } -void wxControl::MacSuperChangedPosition() +void wxControl::MacSuperChangedPosition() { MacUpdateDimensions() ; wxWindow::MacSuperChangedPosition() ; } -void wxControl::MacSuperEnabled( bool enabled ) +void wxControl::MacSuperEnabled( bool enabled ) { Refresh(FALSE) ; wxWindow::MacSuperEnabled( enabled ) ; } -void wxControl::MacSuperShown( bool show ) +void wxControl::MacSuperShown( bool show ) { if ( (ControlHandle) m_macControl ) { @@ -577,7 +583,7 @@ void wxControl::MacSuperShown( bool show ) } } } - + wxWindow::MacSuperShown( show ) ; } @@ -598,12 +604,12 @@ void wxControl::DoSetSize(int x, int y, Rect oldbounds; int new_x, new_y, new_width, new_height; int mac_x, mac_y; - + new_x = m_x; new_y = m_y; new_width = m_width; new_height = m_height; - + if (sizeFlags & wxSIZE_ALLOW_MINUS_ONE) { new_x = x; @@ -618,7 +624,7 @@ void wxControl::DoSetSize(int x, int y, if (width != -1) new_width = width; if (height != -1) new_height = height; } - + if(sizeFlags & wxSIZE_AUTO) { wxSize size = GetBestSize(); @@ -632,7 +638,7 @@ void wxControl::DoSetSize(int x, int y, } } AdjustForParentClientOrigin(new_x, new_y, sizeFlags); - + mac_x = new_x; mac_y = new_y; if(GetParent()) { @@ -641,10 +647,10 @@ void wxControl::DoSetSize(int x, int y, GetControlBounds( (ControlHandle) m_macControl, &oldbounds); oldbounds.right = oldbounds.left + m_width; oldbounds.bottom = oldbounds.top + m_height; - + bool doMove = false; bool doResize = false; - + if ( mac_x != (oldbounds.left - m_macHorizontalBorder) || mac_y != (oldbounds.top - m_macVerticalBorder) ) { @@ -655,11 +661,11 @@ void wxControl::DoSetSize(int x, int y, { doResize = true ; } - + if ( doMove || doResize ) { Refresh() ; - + // Ensure resize is within constraints if ((m_minWidth != -1) && (new_width < m_minWidth)) { new_width = m_minWidth; @@ -673,12 +679,12 @@ void wxControl::DoSetSize(int x, int y, if ((m_maxHeight != -1) && (new_height > m_maxHeight)) { new_height = m_maxHeight; } - + if ( doMove ) { m_x = new_x; m_y = new_y; - + UMAMoveControl( (ControlHandle) m_macControl, mac_x + m_macHorizontalBorder, mac_y + m_macVerticalBorder); @@ -690,27 +696,27 @@ void wxControl::DoSetSize(int x, int y, { m_width = new_width; m_height = new_height; - + UMASizeControl( (ControlHandle) m_macControl, m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ; - - + + wxSizeEvent event(wxSize(m_width, m_height), m_windowId); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } - + Refresh() ; } */ } -bool wxControl::Show(bool show) +bool wxControl::Show(bool show) { if ( !wxWindow::Show( show ) ) return FALSE ; - + if ( (ControlHandle) m_macControl ) { if ( !show ) @@ -733,7 +739,7 @@ bool wxControl::Show(bool show) return TRUE ; } -bool wxControl::Enable(bool enable) +bool wxControl::Enable(bool enable) { if ( !wxWindow::Enable(enable) ) return FALSE; @@ -782,15 +788,15 @@ void wxControl::OnPaint(wxPaintEvent& event) } void wxControl::OnEraseBackground(wxEraseEvent& event) { - wxWindow::OnEraseBackground( event ) ; + wxWindow::OnEraseBackground( event ) ; } -void wxControl::OnKeyDown( wxKeyEvent &event ) +void wxControl::OnKeyDown( wxKeyEvent &event ) { if ( (ControlHandle) m_macControl == NULL ) return ; - + EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ; short keycode ; short keychar ; @@ -800,43 +806,43 @@ void wxControl::OnKeyDown( wxKeyEvent &event ) ::HandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers ) ; } -void wxControl::OnMouseEvent( wxMouseEvent &event ) +void wxControl::OnMouseEvent( wxMouseEvent &event ) { if ( (ControlHandle) m_macControl == NULL ) { event.Skip() ; return ; } - + if (event.GetEventType() == wxEVT_LEFT_DOWN || event.GetEventType() == wxEVT_LEFT_DCLICK ) { - + int x = event.m_x ; int y = event.m_y ; - + MacClientToRootWindow( &x , &y ) ; - + ControlHandle control ; Point localwhere ; SInt16 controlpart ; - + localwhere.h = x ; localwhere.v = y ; - + short modifiers = 0; - + if ( !event.m_leftDown && !event.m_rightDown ) modifiers |= btnState ; - + if ( event.m_shiftDown ) modifiers |= shiftKey ; - + if ( event.m_controlDown ) modifiers |= controlKey ; - + if ( event.m_altDown ) modifiers |= optionKey ; - + if ( event.m_metaDown ) modifiers |= cmdKey ; { @@ -846,8 +852,8 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) { controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; wxTheApp->s_lastMouseDown = 0 ; - if ( control && controlpart != kControlNoPart && - ! IsKindOf( CLASSINFO( wxScrollBar ) ) + if ( control && controlpart != kControlNoPart && + ! IsKindOf( CLASSINFO( wxScrollBar ) ) ) // otherwise we will get the event twice for scrollbar { MacHandleControlClick( control , controlpart ) ; @@ -860,14 +866,14 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) bool wxControl::MacCanFocus() const { - { if ( (ControlHandle) m_macControl == NULL ) - return true ; + { if ( (ControlHandle) m_macControl == NULL ) + return true ; else - return false ; + return false ; } } -void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) +void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) { wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ; } diff --git a/src/mac/carbon/corersrc.r b/src/mac/carbon/corersrc.r index 2193043cd6..eddad02847 100644 --- a/src/mac/carbon/corersrc.r +++ b/src/mac/carbon/corersrc.r @@ -22,27 +22,204 @@ resource 'ldes' ( 128 ) } } ; -resource 'CURS' (9, "Hand") { - $"0380 04C0 04C0 04C0 04C0 04C0 74F8 9CAE" - $"4CAB 240B 2403 1003 0803 0806 0406 0406", - $"0380 07C0 07C0 07C0 07C0 07C0 77F8 FFFE" - $"7FFF 3FFF 3FFF 1FFF 0FFF 0FFE 07FE 07FE", - {0, 7} +resource 'ldes' ( 129 ) +{ + versionZero + { + 0 , + 0 , + 0 , + 0 , + hasVertScroll , + hasHorizScroll , + 0 , + noGrowSpace , + } +} ; + +data 'CURS' (10) { + $"0000 03E0 0630 0808 1004 31C6 2362 2222" + $"2362 31C6 1004 0808 0630 03E0 0000 0000" + $"0000 03E0 07F0 0FF8 1FFC 3FFE 3FFE 3FFE" + $"3FFE 3FFE 1FFC 0FF8 07F0 03E0 0000 0000" + $"0007 0008" }; -resource 'CURS' (10, "SizeWE") { - $"0000 0180 0180 0180 0180 1188 318C 7FFE" - $"318C 1188 0180 0180 0180 0180", - $"03C0 03C0 03C0 03C0 1BD8 3BDC 7BFE FFFF" - $"7FFE 3BDC 1BD8 03C0 03C0 03C0 03C0", - {7, 7} +data 'CURS' (11) { + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000" }; -resource 'CURS' (11, "Size NS") { - $"0000 0080 01C0 03E0 0080 0080 0080 3FFE" - $"3FFE 0080 0080 0080 03E0 01C0 0080", - $"0080 01C0 03E0 07F0 07F0 0180 7FFF 7FFF" - $"7FFF 7FFF 01C0 07F0 07F0 03E0 01C0 0080", - {7, 7} +data 'CURS' (12) { + $"00F0 0088 0108 0190 0270 0220 0440 0440" + $"0880 0880 1100 1E00 1C00 1800 1000 0000" + $"00F0 00F8 01F8 01F0 03F0 03E0 07C0 07C0" + $"0F80 0F80 1F00 1E00 1C00 1800 1000 0000" + $"000E 0003" }; +data 'CURS' (13) { + $"0000 1E00 2100 4080 4080 4080 4080 2180" + $"1FC0 00E0 0070 0038 001C 000E 0006 0000" + $"3F00 7F80 FFC0 FFC0 FFC0 FFC0 FFC0 7FC0" + $"3FE0 1FF0 00F8 007C 003E 001F 000F 0007" + $"0004 0004" +}; + +data 'CURS' (14) { + $"0000 07E0 1FF0 3838 3C0C 6E0E 6706 6386" + $"61C6 60E6 7076 303C 1C1C 0FF8 07E0 0000" + $"0540 0FF0 3FF8 3C3C 7E0E FF0F 6F86 E7C7" + $"63E6 E1F7 70FE 707E 3C3C 1FFC 0FF0 0540" + $"0007 0007" +}; + +data 'CURS' (15) { + $"0000 0380 0380 0380 0380 0380 0380 0FE0" + $"1FF0 1FF0 0000 1FF0 1FF0 1550 1550 1550" + $"07C0 07C0 07C0 07C0 07C0 07C0 0FE0 1FF0" + $"3FF8 3FF8 3FF8 3FF8 3FF8 3FF8 3FF8 3FF8" + $"000B 0007" +}; + +data 'CURS' (16) { + $"00C0 0140 0640 08C0 3180 47FE 8001 8001" + $"81FE 8040 01C0 0040 03C0 C080 3F80 0000" + $"00C0 01C0 07C0 0FC0 3F80 7FFE FFFF FFFF" + $"FFFE FFC0 FFC0 FFC0 FFC0 FF80 3F80 0000" + $"0006 000F" +}; + +data 'CURS' (17) { + $"0100 0280 0260 0310 018C 7FE3 8000 8000" + $"7F80 0200 0380 0200 03C0 0107 01F8 0000" + $"0100 0380 03E0 03F0 01FC 7FFF FFFF FFFF" + $"FFFF 03FF 03FF 03FF 03FF 01FF 01F8 0000" + $"0006 0000" +}; + +data 'CURS' (18) { + $"0000 4078 60FC 71CE 7986 7C06 7E0E 7F1C" + $"7FB8 7C30 6C30 4600 0630 0330 0300 0000" + $"C078 E0FC F1FE FBFF FFCF FF8F FF1F FFBE" + $"FFFC FE78 FF78 EFF8 CFF8 87F8 07F8 0300" + $"0001 0001" +}; + +data 'CURS' (19) { + $"0000 0002 0006 000E 001E 003E 007E 00FE" + $"01FE 003E 0036 0062 0060 00C0 00C0 0000" + $"0003 0007 000F 001F 003F 007F 00FF 01FF" + $"03FF 07FF 007F 00F7 00F3 01E1 01E0 01C0" + $"0001 000E" +}; + +data 'CURS' (20) { + $"0000 0080 01C0 03E0 0080 0080 0080 1FFC" + $"1FFC 0080 0080 0080 03E0 01C0 0080 0000" + $"0080 01C0 03E0 07F0 0FF8 01C0 3FFE 3FFE" + $"3FFE 3FFE 01C0 0FF8 07F0 03E0 01C0 0080" + $"0007 0008" +}; + +data 'CURS' (21) { + $"0000 0080 01C0 03E0 0080 0888 188C 3FFE" + $"188C 0888 0080 03E0 01C0 0080 0000 0000" + $"0080 01C0 03E0 07F0 0BE8 1DDC 3FFE 7FFF" + $"3FFE 1DDC 0BE8 07F0 03E0 01C0 0080 0000" + $"0007 0008" +}; + +data 'CURS' (22) { + $"0000 001E 000E 060E 0712 03A0 01C0 00E0" + $"0170 1238 1C18 1C00 1E00 0000 0000 0000" + $"007F 003F 0E1F 0F0F 0F97 07E3 03E1 21F0" + $"31F8 3A7C 3C3C 3E1C 3F00 3F80 0000 0000" + $"0006 0009" +}; + +data 'CURS' (23) { + $"0000 7800 7000 7060 48E0 05C0 0380 0700" + $"0E80 1C48 1838 0038 0078 0000 0000 0000" + $"FE00 FC00 F870 F0F0 E9F0 C7E0 87C0 0F84" + $"1F8C 3E5C 3C3C 387C 00FC 01FC 0000 0000" + $"0006 0006" +}; + +data 'CURS' (24) { + $"0006 000E 001C 0018 0020 0040 00F8 0004" + $"1FF4 200C 2AA8 1FF0 1F80 3800 6000 8000" + $"000F 001F 003E 007C 0070 00E0 01FC 3FF6" + $"7FF6 7FFE 7FFC 7FF8 3FF0 7FC0 F800 E000" + $"000A 0006" +}; + +resource 'ICN#' (128) { + { /* array: 2 elements */ + /* [1] */ + $"0000 0000 0041 C000 00A2 F000 03A5 FC00" + $"064B FF00 1CD7 FFC0 F1FF FFF0 E000 FFFC" + $"80FF FFFF 80FF FFFF 803F FFFE 80FF FFFE" + $"803F FFFA C0FF FFF6 7FFF FFEE 5FFF FFDE" + $"FFFF FFBE CFFF FF7F F3FF FEFF E4FF FDFE" + $"E13F FBFC E04F F7F8 E013 EFF0 7804 DFE0" + $"1E01 3FC0 0780 3F80 01E0 3F00 0078 3E00" + $"001E 3C00 0007 B800 0001 F000 0000 60", + /* [2] */ + $"0000 0000 0041 C000 00E3 F000 03E7 FC00" + $"07CF FF00 1FDF FFC0 FFFF FFF0 FFFF FFFC" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF 7FFF FFFF 7FFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE" + $"FFFF FFFC FFFF FFF8 FFFF FFF0 7FFF FFE0" + $"1FFF FFC0 07FF FF80 01FF FF00 007F FE00" + $"001F FC00 0007 F800 0001 F000 0000 60" + } +}; + +resource 'ics#' (128) { + { /* array: 2 elements */ + /* [1] */ + $"09C0 15F0 EBFC 8EFF AFFE 97FE DFFE EFFA" + $"BFE7 8BE6 C5DC 30D8 1C30 0760 03C0", + /* [2] */ + $"09C0 1DF0 FFFC FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFE FFFC 3FF8 0FF0 03E0 02C0" + } +}; + +resource 'ics4' (128) { + $"0000 EC0D 6FC0 0000 00DE BDD6 666F C000" + $"DEBB EE65 6666 6FC0 E2CD BEBB 6666 666E" + $"EC2C A566 6666 6660 E1C2 A666 6666 66D0" + $"BDBD E666 6666 6DC0 FFF6 6666 6666 5CC0" + $"ECDF 6666 666D 0DFF FC0C DF66 6650 DFFC" + $"5DC0 0CDF 6D0D FFC0 0C75 C00C D0DF FC00" + $"000D 6DC0 0DFF C000 0000 CE65 CFFC 0000" + $"0000 00DD 6FC0" +}; + +resource 'ics8' (128) { + $"0000 00F5 81F7 017F EBF1 2BF5 0000 0000" + $"0000 F888 8256 7FD2 D2D2 ECF1 F800 0000" + $"F9FB 5E5E FD82 EFB0 ECD2 D2D2 ECF1 F7F5" + $"AD5D 3333 5E87 5E82 D3D2 D2D2 D2D2 EBFD" + $"820F 3333 ACD5 D2EB D2D2 D2D2 D2D2 D2F5" + $"8808 3333 5FEF D2D2 D2D2 D2D2 D2D2 8000" + $"FB5E 5D5D D5D2 D2D2 D2D2 D2D2 D280 F600" + $"FDFF D6EC D2D2 D2D2 D2D2 D2D2 802B 2BF5" + $"FEF7 81F4 EFEB D2D2 D2D2 D280 F6F9 FFFD" + $"FEF6 002B 57FE F0EB D2D2 80F6 56FF FFF7" + $"7EAA F600 00F7 57F3 EC80 2B56 FFFF F700" + $"0031 CD86 F600 00F7 FA2B 56FF FFF7 0000" + $"0000 F57A EB80 F600 0056 FFFF F700 0000" + $"0000 0000 2AAB EC80 2BFF FFF7 0000 0000" + $"0000 0000 0000 5BAB F0FD F700 0000 0000" + $"0000 0000 0000 0000 01" +}; + + + diff --git a/src/mac/carbon/cursor.cpp b/src/mac/carbon/cursor.cpp index 23b9eb4c0c..c796592d9c 100644 --- a/src/mac/carbon/cursor.cpp +++ b/src/mac/carbon/cursor.cpp @@ -18,44 +18,59 @@ #include "wx/app.h" #include "wx/cursor.h" #include "wx/icon.h" +#include "wx/image.h" +#include "wx/xpmdecod.h" + #include "wx/mac/private.h" #if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) #endif -const short kwxCursorHandId = 9 ; -const short kwxCursorSizeWEId = 10 ; -const short kwxCursorSizeNSId = 11 ; -#if !TARGET_CARBON -Cursor* MacArrowCursorPtr = &qd.arrow ; -CursHandle MacArrowCursor = &MacArrowCursorPtr ; -#else -bool MacArrowInstalled = false ; -Cursor MacArrow ; -Cursor* MacArrowCursorPtr = &MacArrow ; -CursHandle MacArrowCursor = &MacArrowCursorPtr ; -#endif -CursHandle gMacCurrentCursor = NULL ; +const short kwxCursorBullseye = 10 ; +const short kwxCursorBlank = 11 ; +const short kwxCursorPencil = 12 ; +const short kwxCursorMagnifier = 13 ; +const short kwxCursorNoEntry = 14 ; +const short kwxCursorPaintBrush = 15 ; +const short kwxCursorPointRight = 16 ; +const short kwxCursorPointLeft = 17 ; +const short kwxCursorQuestionArrow = 18 ; +const short kwxCursorRightArrow = 19 ; +const short kwxCursorSizeNS = 20 ; +const short kwxCursorSize = 21 ; +const short kwxCursorSizeNESW = 22 ; +const short kwxCursorSizeNWSE = 23 ; +const short kwxCursorRoller = 24 ; + +wxCursor gMacCurrentCursor ; wxCursorRefData::wxCursorRefData() { -#if TARGET_CARBON - if ( !MacArrowInstalled ) - { - MacArrowCursorPtr = GetQDGlobalsArrow( &MacArrow ) ; - MacArrowInstalled = true ; - } -#endif - m_width = 32; - m_height = 32; + m_width = 16; + m_height = 16; m_hCursor = NULL ; + m_disposeHandle = false ; + m_releaseHandle = false ; + m_isColorCursor = false ; + m_themeCursor = -1 ; } wxCursorRefData::~wxCursorRefData() { -// if ( m_hCursor && ( m_hCursor != MacArrowCursor ) ) -// ::ReleaseResource( (Handle) m_hCursor ) ; + if ( m_isColorCursor ) + { + ::DisposeCCursor( (CCrsrHandle) m_hCursor ) ; + } + else if ( m_disposeHandle ) + { + ::DisposeHandle( (Handle ) m_hCursor ) ; + } + else if ( m_releaseHandle ) + { + // we don't release the resource since it may already + // be in use again + } } // Cursors @@ -68,11 +83,262 @@ wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSE { } -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) +wxCursor::wxCursor( const wxImage &image ) +{ + CreateFromImage( image ) ; +} + +wxCursor::wxCursor(const char **bits) +{ + (void) CreateFromXpm(bits); +} + +wxCursor::wxCursor(char **bits) +{ + (void) CreateFromXpm((const char **)bits); +} + +bool wxCursor::CreateFromXpm(const char **bits) +{ + wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid cursor data") ) + wxXPMDecoder decoder; + wxImage img = decoder.ReadData(bits); + wxCHECK_MSG( img.Ok(), FALSE, wxT("invalid cursor data") ) + CreateFromImage( img ) ; + return TRUE; +} + +short GetCTabIndex( CTabHandle colors , RGBColor *col ) +{ + short retval = 0 ; + unsigned long bestdiff = 0xFFFF ; + for ( int i = 0 ; i < (**colors).ctSize ; ++i ) + { + unsigned long diff = abs(col->red - (**colors).ctTable[i].rgb.red ) + + abs(col->green - (**colors).ctTable[i].rgb.green ) + + abs(col->blue - (**colors).ctTable[i].rgb.blue ) ; + if ( diff < bestdiff ) + { + bestdiff = diff ; + retval = (**colors).ctTable[i].value ; + } + } + return retval ; +} + +void wxCursor::CreateFromImage(const wxImage & image) { m_refData = new wxCursorRefData; - // TODO: create cursor from a file + wxImage image16 = image.Scale(16,16) ; + unsigned char * rgbBits = image16.GetData(); + + + int w = image16.GetWidth() ; + int h = image16.GetHeight() ; + bool bHasMask = image16.HasMask() ; + + int hotSpotX = image16.GetOptionInt(wxCUR_HOTSPOT_X); + int hotSpotY = image16.GetOptionInt(wxCUR_HOTSPOT_Y); + if (hotSpotX < 0 || hotSpotX >= w) + hotSpotX = 0; + if (hotSpotY < 0 || hotSpotY >= h) + hotSpotY = 0; + +#if 0 + // monochrome implementation + M_CURSORDATA->m_hCursor = NewHandle( sizeof( Cursor ) ) ; + M_CURSORDATA->m_disposeHandle = true ; + HLock( (Handle) M_CURSORDATA->m_hCursor ) ; + CursPtr cp = *(CursHandle)M_CURSORDATA->m_hCursor ; + memset( cp->data , 0 , sizeof( Bits16 ) ) ; + memset( cp->mask , 0 , sizeof( Bits16 ) ) ; + + unsigned char mr = image16.GetMaskRed() ; + unsigned char mg = image16.GetMaskGreen() ; + unsigned char mb = image16.GetMaskBlue() ; + for ( int y = 0 ; y < h ; ++y ) + { + short rowbits = 0 ; + short maskbits = 0 ; + + for ( int x = 0 ; x < w ; ++x ) + { + long pos = (y * w + x) * 3; + + unsigned char r = rgbBits[pos] ; + unsigned char g = rgbBits[pos+1] ; + unsigned char b = rgbBits[pos+2] ; + if ( bHasMask && r==mr && g==mg && b==mb ) + { + // masked area, does not appear anywhere + } + else + { + if ( (int)r + (int)g + (int)b < 0x0200 ) + { + rowbits |= ( 1 << (15-x) ) ; + } + maskbits |= ( 1 << (15-x) ) ; + } + } + cp->data[y] = rowbits ; + cp->mask[y] = maskbits ; + } + if ( !bHasMask ) + { + memcpy( cp->mask , cp->data , sizeof( Bits16) ) ; + } + cp->hotSpot.h = hotSpotX ; + cp->hotSpot.v = hotSpotY ; + HUnlock( (Handle) M_CURSORDATA->m_hCursor ) ; +#else + PixMapHandle pm = (PixMapHandle) NewHandleClear( sizeof (PixMap)) ; + short extent = 16 ; + short bytesPerPixel = 1 ; + short depth = 8 ; + Rect bounds = { 0 , 0 , extent , extent } ; + CCrsrHandle ch = (CCrsrHandle) NewHandleClear ( sizeof( CCrsr ) ) ; + CTabHandle newColors = GetCTable( 8 ) ; + HandToHand((Handle *) &newColors); + // set the values to the indices + for ( int i = 0 ; i < (**newColors).ctSize ; ++i ) + { + (**newColors).ctTable[i].value = i ; + } + HLock( (Handle) ch) ; + (**ch).crsrType = 0x8001 ; // color cursors + (**ch).crsrMap = pm ; + short bytesPerRow = bytesPerPixel * extent ; + + (**pm).baseAddr = 0; + (**pm).rowBytes = bytesPerRow | 0x8000; + (**pm).bounds = bounds; + (**pm).pmVersion = 0; + (**pm).packType = 0; + (**pm).packSize = 0; + (**pm).hRes = 0x00480000; /* 72 DPI default res */ + (**pm).vRes = 0x00480000; /* 72 DPI default res */ + (**pm).pixelSize = depth; + (**pm).pixelType = 0; + (**pm).cmpCount = 1; + (**pm).cmpSize = depth; + (**pm).pmTable = newColors; + + (**ch).crsrData = NewHandleClear( extent * bytesPerRow ) ; + (**ch).crsrXData = NULL ; + (**ch).crsrXValid = 0; + (**ch).crsrXHandle = NULL; + + (**ch).crsrHotSpot.h = hotSpotX ; + (**ch).crsrHotSpot.v = hotSpotY ; + (**ch).crsrXTable = NULL ; + (**ch).crsrID = GetCTSeed() ; + + memset( (**ch).crsr1Data , 0 , sizeof( Bits16 ) ) ; + memset( (**ch).crsrMask , 0 , sizeof( Bits16 ) ) ; + + unsigned char mr = image16.GetMaskRed() ; + unsigned char mg = image16.GetMaskGreen() ; + unsigned char mb = image16.GetMaskBlue() ; + for ( int y = 0 ; y < h ; ++y ) + { + short rowbits = 0 ; + short maskbits = 0 ; + + for ( int x = 0 ; x < w ; ++x ) + { + long pos = (y * w + x) * 3; + + unsigned char r = rgbBits[pos] ; + unsigned char g = rgbBits[pos+1] ; + unsigned char b = rgbBits[pos+2] ; + RGBColor col = { 0xFFFF ,0xFFFF, 0xFFFF } ; + + if ( bHasMask && r==mr && g==mg && b==mb ) + { + // masked area, does not appear anywhere + } + else + { + if ( (int)r + (int)g + (int)b < 0x0200 ) + { + rowbits |= ( 1 << (15-x) ) ; + } + maskbits |= ( 1 << (15-x) ) ; + + col = *((RGBColor*) wxColor( r , g , b ).GetPixel()) ; + } + *((*(**ch).crsrData) + y * bytesPerRow + x) = + GetCTabIndex( newColors , &col) ; + } + (**ch).crsr1Data[y] = rowbits ; + (**ch).crsrMask[y] = maskbits ; + } + if ( !bHasMask ) + { + memcpy( (**ch).crsrMask , (**ch).crsr1Data , sizeof( Bits16) ) ; + } + + HUnlock((Handle) ch) ; + M_CURSORDATA->m_hCursor = ch ; + M_CURSORDATA->m_isColorCursor = true ; +#endif +} + +wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) +{ + m_refData = new wxCursorRefData; + if ( flags == wxBITMAP_TYPE_MACCURSOR_RESOURCE ) + { + Str255 theName ; + + #if TARGET_CARBON + c2pstrcpy( (StringPtr) theName , cursor_file ) ; + #else + strcpy( (char *) theName , cursor_file ) ; + c2pstr( (char *) theName ) ; + #endif + + wxStAppResource resload ; + Handle resHandle = ::GetNamedResource( 'crsr' , theName ) ; + if ( resHandle ) + { + short theId = -1 ; + OSType theType ; + GetResInfo( resHandle , &theId , &theType , theName ) ; + ReleaseResource( resHandle ) ; + M_CURSORDATA->m_hCursor = GetCCursor( theId ) ; + if ( M_CURSORDATA->m_hCursor ) + M_CURSORDATA->m_isColorCursor = true ; + } + else + { + Handle resHandle = ::GetNamedResource( 'CURS' , theName ) ; + if ( resHandle ) + { + short theId = -1 ; + OSType theType ; + GetResInfo( resHandle , &theId , &theType , theName ) ; + ReleaseResource( resHandle ) ; + M_CURSORDATA->m_hCursor = GetCursor( theId ) ; + if ( M_CURSORDATA->m_hCursor ) + M_CURSORDATA->m_releaseHandle = true ; + } + } + } + else + { + wxImage image ; + image.LoadFile( cursor_file , flags ) ; + if( image.Ok() ) + { + image.SetOption(wxCUR_HOTSPOT_X,hotSpotX ) ; + image.SetOption(wxCUR_HOTSPOT_Y,hotSpotY ) ; + delete m_refData ; + CreateFromImage(image) ; + } + } } // Cursors by stock number @@ -80,150 +346,155 @@ wxCursor::wxCursor(int cursor_type) { m_refData = new wxCursorRefData; - switch (cursor_type) - { + { + case wxCURSOR_COPY_ARROW: + M_CURSORDATA->m_themeCursor = kThemeCopyArrowCursor ; + break; case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = ::GetCursor(watchCursor); + M_CURSORDATA->m_themeCursor = kThemeWatchCursor ; break; case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = ::GetCursor(iBeamCursor); + M_CURSORDATA->m_themeCursor = kThemeIBeamCursor ; break; case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = ::GetCursor(crossCursor); + M_CURSORDATA->m_themeCursor = kThemeCrossCursor; break; case wxCURSOR_SIZENWSE: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNWSE); } break; case wxCURSOR_SIZENESW: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNESW); } break; case wxCURSOR_SIZEWE: { - wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); + M_CURSORDATA->m_themeCursor = kThemeResizeLeftRightCursor; } break; case wxCURSOR_SIZENS: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNSId); - } - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNS); } + break; + case wxCURSOR_SIZING: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSize); + } + break; case wxCURSOR_HAND: { - wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_themeCursor = kThemePointingHandCursor; } break; case wxCURSOR_BULLSEYE: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorBullseye); } break; case wxCURSOR_PENCIL: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPencil); } break; case wxCURSOR_MAGNIFIER: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorMagnifier); } break; case wxCURSOR_NO_ENTRY: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorNoEntry); } break; - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } case wxCURSOR_WATCH: { - M_CURSORDATA->m_hCursor = ::GetCursor(watchCursor); + M_CURSORDATA->m_themeCursor = kThemeWatchCursor; + break; + } + case wxCURSOR_PAINT_BRUSH: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPaintBrush); + break; + } + case wxCURSOR_POINT_LEFT: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPointLeft); + break; + } + case wxCURSOR_POINT_RIGHT: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPointRight); + break; + } + case wxCURSOR_QUESTION_ARROW: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorQuestionArrow); + break; + } + case wxCURSOR_BLANK: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorBlank); + break; + } + case wxCURSOR_RIGHT_ARROW: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorRightArrow); break; } case wxCURSOR_SPRAYCAN: { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - default: + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorRoller); + break; + } + case wxCURSOR_CHAR: case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } + case wxCURSOR_LEFT_BUTTON: + case wxCURSOR_RIGHT_BUTTON: + case wxCURSOR_MIDDLE_BUTTON: + default: + M_CURSORDATA->m_themeCursor = kThemeArrowCursor ; + break; + } + if ( M_CURSORDATA->m_themeCursor == -1 ) + M_CURSORDATA->m_releaseHandle = true ; } void wxCursor::MacInstall() const { - if ( m_refData && M_CURSORDATA->m_hCursor ) - { - ::SetCursor( *((CursHandle)M_CURSORDATA->m_hCursor) ) ; - gMacCurrentCursor = (CursHandle)M_CURSORDATA->m_hCursor ; - } - else - { - ::SetCursor( *MacArrowCursor ) ; - gMacCurrentCursor = NULL ; + gMacCurrentCursor = *this ; + if ( m_refData && M_CURSORDATA->m_themeCursor != -1 ) + { + SetThemeCursor( M_CURSORDATA->m_themeCursor ) ; + } + else if ( m_refData && M_CURSORDATA->m_hCursor ) + { + if ( M_CURSORDATA->m_isColorCursor ) + ::SetCCursor( (CCrsrHandle) M_CURSORDATA->m_hCursor ) ; + else + ::SetCursor( * (CursHandle) M_CURSORDATA->m_hCursor ) ; + } + else + { + SetThemeCursor( kThemeArrowCursor ) ; } } diff --git a/src/mac/carbon/dataobj.cpp b/src/mac/carbon/dataobj.cpp index c2f75326c0..049622ffb3 100644 --- a/src/mac/carbon/dataobj.cpp +++ b/src/mac/carbon/dataobj.cpp @@ -230,34 +230,51 @@ wxBitmapDataObject::wxBitmapDataObject( : wxBitmapDataObjectBase(rBitmap) { Init(); - - DoConvertToPng(); + if ( m_bitmap.Ok() ) + { + m_pngData = m_bitmap.GetPict() ; + m_pngSize = GetHandleSize( (Handle) m_pngData ) ; + } } wxBitmapDataObject::~wxBitmapDataObject() { - Clear(); + if ( m_pngData && m_bitmap.GetBitmapType() != kMacBitmapTypePict ) + { + KillPicture( (PicHandle) m_pngData ) ; + } + m_pngData = NULL ; + m_pngSize = 0 ; } void wxBitmapDataObject::SetBitmap( const wxBitmap& rBitmap ) { - ClearAll(); + if ( m_pngData && m_bitmap.GetBitmapType() != kMacBitmapTypePict ) + { + KillPicture( (PicHandle) m_pngData ) ; + } + m_pngData = NULL ; + m_pngSize = 0 ; wxBitmapDataObjectBase::SetBitmap(rBitmap); - DoConvertToPng(); + if ( m_bitmap.Ok() ) + { + m_pngData = m_bitmap.GetPict() ; + m_pngSize = GetHandleSize( (Handle) m_pngData ) ; + } } bool wxBitmapDataObject::GetDataHere( void* pBuf ) const { - if (!m_pngSize) + if (!m_pngData) { wxFAIL_MSG(wxT("attempt to copy empty bitmap failed")); return FALSE; } - memcpy(pBuf, m_pngData, m_pngSize); + memcpy(pBuf, *(Handle)m_pngData, GetHandleSize((Handle)m_pngData)); return TRUE; } @@ -267,41 +284,14 @@ bool wxBitmapDataObject::SetData( ) { Clear(); - m_pngSize = nSize; - m_pngData = malloc(m_pngSize); - - memcpy(m_pngData, pBuf, m_pngSize); - - wxMemoryInputStream vMstream((char*)m_pngData, m_pngSize); - wxImage vImage; - wxPNGHandler vHandler; - - if (!vHandler.LoadFile(&vImage, vMstream)) - { - return FALSE; - } - - m_bitmap = wxBitmap( vImage ) ; + PicHandle picHandle = (PicHandle) NewHandle( nSize ) ; + memcpy( *picHandle , pBuf , nSize ) ; + m_pngData = picHandle ; + m_pngSize = GetHandleSize( (Handle) picHandle ) ; + Rect frame = (**picHandle).picFrame ; + + m_bitmap.SetPict( m_pngData ) ; + m_bitmap.SetWidth( frame.right - frame.left ) ; + m_bitmap.SetHeight( frame.bottom - frame.top ) ; return m_bitmap.Ok(); } - -void wxBitmapDataObject::DoConvertToPng() -{ - if (!m_bitmap.Ok()) - return; - - wxCHECK_RET( wxImage::FindHandler(wxBITMAP_TYPE_PNG) != NULL, - wxT("You must call wxImage::AddHandler(new wxPNGHandler); to be able to use clipboard with bitmaps!") ); - - wxImage image = m_bitmap.ConvertToImage(); - - wxCountingOutputStream count; - image.SaveFile(count, wxBITMAP_TYPE_PNG); - - m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ??? - m_pngData = malloc(m_pngSize); - - wxMemoryOutputStream mstream((char*) m_pngData, m_pngSize); - image.SaveFile(mstream, wxBITMAP_TYPE_PNG); -} - diff --git a/src/mac/carbon/dc.cpp b/src/mac/carbon/dc.cpp index 14ced3443b..b98c6ef4df 100644 --- a/src/mac/carbon/dc.cpp +++ b/src/mac/carbon/dc.cpp @@ -8,38 +8,32 @@ // Copyright: (c) AUTHOR // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifdef __GNUG__ #pragma implementation "dc.h" #endif - #include "wx/dc.h" #include "wx/app.h" #include "wx/mac/uma.h" #include "wx/dcmemory.h" +#include "wx/dcprint.h" #include "wx/region.h" #include "wx/image.h" #include "wx/log.h" - #if __MSL__ >= 0x6000 #include "math.h" using namespace std ; #endif - #include "wx/mac/private.h" #include "ATSUnicode.h" #include "TextCommon.h" #include "TextEncodingConverter.h" - #if !USE_SHARED_LIBRARY IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) #endif - //----------------------------------------------------------------------------- // constants //----------------------------------------------------------------------------- - #define mm2inches 0.0393700787402 #define inches2mm 25.4 #define mm2twips 56.6929133859 @@ -52,7 +46,6 @@ const double M_PI = 3.14159265358979 ; const double RAD2DEG = 180.0 / M_PI; const short kEmulatedMode = -1 ; const short kUnsupportedMode = -2 ; - wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : m_ph( (GrafPtr) dc->m_macPort ) { @@ -60,60 +53,59 @@ wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : m_dc = dc ; dc->MacSetupPort(&m_ph) ; } - wxMacPortSetter::~wxMacPortSetter() { m_dc->MacCleanupPort(&m_ph) ; } - -wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) +wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) { m_formerClip = NewRgn() ; m_newClip = NewRgn() ; GetClip( m_formerClip ) ; - + if ( win ) { +#if 0 + // this clipping area was set to the parent window's drawing area, lead to problems + // with MacOSX controls drawing outside their wx' rectangle RgnHandle insidergn = NewRgn() ; int x = 0 , y = 0; wxWindow *parent = win->GetParent() ; parent->MacWindowToRootWindow( &x,&y ) ; - wxSize size = parent->GetSize() ; - SetRectRgn( insidergn , parent->MacGetLeftBorderSize() , parent->MacGetTopBorderSize() , - size.x - parent->MacGetLeftBorderSize() - parent->MacGetRightBorderSize(), - size.y - parent->MacGetTopBorderSize() - parent->MacGetBottomBorderSize()) ; - + SetRectRgn( insidergn , parent->MacGetLeftBorderSize() , parent->MacGetTopBorderSize() , + size.x - parent->MacGetRightBorderSize(), + size.y - parent->MacGetBottomBorderSize()) ; CopyRgn( (RgnHandle) parent->MacGetVisibleRegion(false).GetWXHRGN() , m_newClip ) ; SectRgn( m_newClip , insidergn , m_newClip ) ; OffsetRgn( m_newClip , x , y ) ; SetClip( m_newClip ) ; DisposeRgn( insidergn ) ; +#endif + int x = 0 , y = 0; + win->MacWindowToRootWindow( &x,&y ) ; + CopyRgn( (RgnHandle) ((wxWindow*)win)->MacGetVisibleRegion().GetWXHRGN() , m_newClip ) ; + OffsetRgn( m_newClip , x , y ) ; + SetClip( m_newClip ) ; } } - -wxMacWindowClipper::~wxMacWindowClipper() +wxMacWindowClipper::~wxMacWindowClipper() { SetClip( m_formerClip ) ; DisposeRgn( m_newClip ) ; DisposeRgn( m_formerClip ) ; } - //----------------------------------------------------------------------------- // Local functions //----------------------------------------------------------------------------- - static inline double dmin(double a, double b) { return a < b ? a : b; } static inline double dmax(double a, double b) { return a > b ? a : b; } static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; } - //----------------------------------------------------------------------------- // wxDC //----------------------------------------------------------------------------- - // this function emulates all wx colour manipulations, used to verify the implementation // by setting the mode in the blitting functions to kEmulatedMode - void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor ) ; void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor ) { @@ -197,47 +189,36 @@ void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColo dstColor.blue = dstColor.blue ^ srcColor.blue ; break ; } - } - wxDC::wxDC() { m_ok = FALSE; m_colour = TRUE; - m_mm_to_pix_x = mm2pt; m_mm_to_pix_y = mm2pt; - m_internalDeviceOriginX = 0; m_internalDeviceOriginY = 0; m_externalDeviceOriginX = 0; m_externalDeviceOriginY = 0; - m_logicalScaleX = 1.0; m_logicalScaleY = 1.0; m_userScaleX = 1.0; m_userScaleY = 1.0; m_scaleX = 1.0; m_scaleY = 1.0; - m_needComputeScaleX = FALSE; m_needComputeScaleY = FALSE; - m_macPort = NULL ; m_macMask = NULL ; m_ok = FALSE ; - m_macFontInstalled = false ; m_macBrushInstalled = false ; m_macPenInstalled = false ; - m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ; m_macBoundaryClipRgn = NewRgn() ; m_macCurrentClipRgn = NewRgn() ; - SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ; SetRectRgn( (RgnHandle) m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ; - m_pen = *wxBLACK_PEN; m_font = *wxNORMAL_FONT; m_brush = *wxWHITE_BRUSH; @@ -247,7 +228,6 @@ wxDC::wxDC() m_macForegroundPixMap = NULL ; m_macBackgroundPixMap = NULL ; } - wxDC::~wxDC(void) { DisposeRgn( (RgnHandle) m_macBoundaryClipRgn ) ; @@ -258,12 +238,10 @@ void wxDC::MacSetupPort(wxMacPortStateHelper* help) const wxASSERT( m_macCurrentPortStateHelper == NULL ) ; m_macCurrentPortStateHelper = help ; SetClip( (RgnHandle) m_macCurrentClipRgn); - m_macFontInstalled = false ; m_macBrushInstalled = false ; m_macPenInstalled = false ; } - void wxDC::MacCleanupPort(wxMacPortStateHelper* help) const { wxASSERT( m_macCurrentPortStateHelper == help ) ; @@ -293,22 +271,17 @@ void wxDC::MacCleanupPort(wxMacPortStateHelper* help) const m_macBackgroundPixMap = NULL ; } } - void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask ) { wxCHECK_RET( Ok(), wxT("invalid window dc") ); - wxCHECK_RET( bmp.Ok(), wxT("invalid bitmap") ); - wxMacPortSetter helper(this) ; - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord w = bmp.GetWidth(); wxCoord h = bmp.GetHeight(); wxCoord ww = XLOG2DEVREL(w); wxCoord hh = YLOG2DEVREL(h); - // Set up drawing mode short mode = (m_logicalFunction == wxCOPY ? srcCopy : //m_logicalFunction == wxCLEAR ? WHITENESS : @@ -323,7 +296,6 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask //m_logicalFunction == wxSRC_OR ? srcOr : //m_logicalFunction == wxSRC_AND ? SRCAND : srcCopy ); - if ( bmp.GetBitmapType() == kMacBitmapTypePict ) { Rect bitmaprect = { 0 , 0 , hh, ww }; ::OffsetRect( &bitmaprect, xx, yy ) ; @@ -333,7 +305,6 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask { GWorldPtr bmapworld = MAC_WXHBITMAP( bmp.GetHBITMAP() ); PixMapHandle bmappixels ; - // Set foreground and background colours (for bitmaps depth = 1) if(bmp.GetDepth() == 1) { @@ -349,15 +320,11 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask RGBForeColor( &black ) ; RGBBackColor( &white ) ; } - bmappixels = GetGWorldPixMap( bmapworld ) ; - wxCHECK_RET(LockPixels(bmappixels), wxT("DoDrawBitmap: Unable to lock pixels")); - Rect source = { 0, 0, h, w }; Rect dest = { yy, xx, yy + hh, xx + ww }; - if ( useMask && bmp.GetMask() ) { if( LockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())))) @@ -388,30 +355,23 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask m_macPenInstalled = false ; m_macBrushInstalled = false ; m_macFontInstalled = false ; - } - void wxDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ) { wxCHECK_RET(Ok(), wxT("Invalid dc wxDC::DoDrawIcon")); - wxCHECK_RET(icon.Ok(), wxT("Invalid icon wxDC::DoDrawIcon")); - DoDrawBitmap( icon , x , y , icon.GetMask() != NULL ) ; } void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) { wxCHECK_RET(Ok(), wxT("wxDC::DoSetClippingRegion Invalid DC")); wxCoord xx, yy, ww, hh; - xx = XLOG2DEVMAC(x); yy = YLOG2DEVMAC(y); ww = XLOG2DEVREL(width); hh = YLOG2DEVREL(height); - SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ; SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ; - if( m_clipping ) { m_clipX1 = wxMax( m_clipX1 , xx ); @@ -427,31 +387,25 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei m_clipX2 = xx + ww; m_clipY2 = yy + hh; } - } void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion ) { wxCHECK_RET( Ok(), wxT("invalid window dc") ) ; - wxMacPortSetter helper(this) ; if (region.Empty()) { DestroyClippingRegion(); return; } - wxCoord x, y, w, h; region.GetBox( x, y, w, h ); wxCoord xx, yy, ww, hh; - xx = XLOG2DEVMAC(x); yy = YLOG2DEVMAC(y); ww = XLOG2DEVREL(w); hh = YLOG2DEVREL(h); - // if we have a scaling that we cannot map onto native regions // we must use the box - if ( ww != w || hh != h ) { wxDC::DoSetClippingRegion( x, y, w, h ); @@ -480,9 +434,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion ) m_clipY2 = yy + hh; } } - } - void wxDC::DestroyClippingRegion() { wxMacPortSetter helper(this) ; @@ -567,7 +519,6 @@ void wxDC::SetDeviceOrigin( wxCoord x, wxCoord y ) m_externalDeviceOriginY = y; ComputeScaleAndOrigin(); } - #if 0 void wxDC::SetInternalDeviceOrigin( long x, long y ) { @@ -587,12 +538,10 @@ void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) m_signY = (yBottomUp ? -1 : 1); ComputeScaleAndOrigin(); } - wxSize wxDC::GetPPI() const { return wxSize(72, 72); } - int wxDC::GetDepth() const { if ( IsPortColor( (CGrafPtr) m_macPort ) ) @@ -601,19 +550,15 @@ int wxDC::GetDepth() const } return 1 ; } - void wxDC::ComputeScaleAndOrigin() { // CMB: copy scale to see if it changes double origScaleX = m_scaleX; double origScaleY = m_scaleY; - m_scaleX = m_logicalScaleX * m_userScaleX; m_scaleY = m_logicalScaleY * m_userScaleY; - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - // CMB: if scale has changed call SetPen to recalulate the line width if (m_scaleX != origScaleX || m_scaleY != origScaleY) { @@ -628,103 +573,79 @@ void wxDC::ComputeScaleAndOrigin() void wxDC::SetPalette( const wxPalette& palette ) { } - void wxDC::SetBackgroundMode( int mode ) { m_backgroundMode = mode ; } - void wxDC::SetFont( const wxFont &font ) { m_font = font; m_macFontInstalled = false ; } - void wxDC::SetPen( const wxPen &pen ) { if ( m_pen == pen ) return ; - m_pen = pen; - m_macPenInstalled = false ; } - void wxDC::SetBrush( const wxBrush &brush ) { if (m_brush == brush) return; - m_brush = brush; m_macBrushInstalled = false ; } - void wxDC::SetBackground( const wxBrush &brush ) { if (m_backgroundBrush == brush) return; - m_backgroundBrush = brush; - if (!m_backgroundBrush.Ok()) return; m_macBrushInstalled = false ; } - void wxDC::SetLogicalFunction( int function ) { if (m_logicalFunction == function) return; - m_logicalFunction = function ; m_macFontInstalled = false ; m_macBrushInstalled = false ; m_macPenInstalled = false ; } - extern bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, const wxColour & col, int style); - bool wxDC::DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style) { return wxDoFloodFill(this, x, y, col, style); } - bool wxDC::DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const { wxCHECK_MSG( Ok(), false, wxT("wxDC::DoGetPixel Invalid DC") ); wxMacPortSetter helper(this) ; - RGBColor colour; - GetCPixel( XLOG2DEVMAC(x), YLOG2DEVMAC(y), &colour ); - // Convert from Mac colour to wx col->Set( colour.red >> 8, colour.green >> 8, colour.blue >> 8); - return true ; } - void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; wxCoord offset = ( (m_pen.GetWidth() == 0 ? 1 : m_pen.GetWidth() ) * (wxCoord)m_scaleX - 1) / 2; - wxCoord xx1 = XLOG2DEVMAC(x1) - offset; wxCoord yy1 = YLOG2DEVMAC(y1) - offset; wxCoord xx2 = XLOG2DEVMAC(x2) - offset; wxCoord yy2 = YLOG2DEVMAC(y2) - offset; - if ((m_pen.GetCap() == wxCAP_ROUND) && (m_pen.GetWidth() <= 1)) { @@ -745,17 +666,14 @@ void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) xx2++; } } - ::MoveTo(xx1, yy1); ::LineTo(xx2, yy2); } } - void wxDC::DoCrossHair( wxCoord x, wxCoord y ) { wxCHECK_RET( Ok(), wxT("wxDC::DoCrossHair Invalid window dc") ); wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() != wxTRANSPARENT) { int w = 0; @@ -763,19 +681,15 @@ void wxDC::DoCrossHair( wxCoord x, wxCoord y ) GetSize( &w, &h ); wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); - MacInstallPen(); ::MoveTo( XLOG2DEVMAC(0), yy ); ::LineTo( XLOG2DEVMAC(w), yy ); ::MoveTo( xx, YLOG2DEVMAC(0) ); ::LineTo( xx, YLOG2DEVMAC(h) ); - CalcBoundingBox(x, y); CalcBoundingBox(x+w, y+h); - } } - /* * To draw arcs properly the angles need to be converted from the WX style: * Angles start on the +ve X axis and go anti-clockwise (As you would draw on @@ -783,41 +697,20 @@ void wxDC::DoCrossHair( wxCoord x, wxCoord y ) * TO * the Mac style: * Angles start on the +ve y axis and go clockwise. - * To achive this I work out which quadrant the angle lies in then map this to - * the equivalent quadrant on the Mac. (Sin and Cos values reveal which - * quadrant you are in). */ static double wxConvertWXangleToMACangle(double angle) { - double sin_a, cos_a; - - sin_a = sin(angle / RAD2DEG); - cos_a = cos(angle / RAD2DEG); - - if( (sin_a >= 0.0) && (cos_a >= 0.0) ) { - angle = acos(sin_a) * RAD2DEG; - } - else if( (sin_a >= 0.0) && (cos_a <= 0.0) ) { - sin_a *= -1; - angle = acos(sin_a) * RAD2DEG + 180; - } - else if( (sin_a <= 0.0) && (cos_a >= 0.0) ) { - angle = acos(sin_a) * RAD2DEG + 180; - } - else if( (sin_a < 0.0) && (cos_a < 0.0) ) { - sin_a *= -1; - angle = acos(sin_a) * RAD2DEG + 180; - } - return angle; + double newAngle = 90 - angle ; + if ( newAngle < 0 ) + newAngle += 360 ; + return newAngle ; } - void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc ) { wxCHECK_RET(Ok(), wxT("wxDC::DoDrawArc Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord xx1 = XLOG2DEVMAC(x1); wxCoord yy1 = YLOG2DEVMAC(y1); wxCoord xx2 = XLOG2DEVMAC(x2); @@ -829,7 +722,6 @@ void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, double radius = sqrt((double)(dx*dx+dy*dy)); wxCoord rad = (wxCoord)radius; double radius1, radius2; - if (xx1 == xx2 && yy1 == yy2) { radius1 = 0.0; @@ -853,9 +745,7 @@ void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, if( (xx1 > xx2) || (yy1 > yy2) ) { alpha2 *= -1; } - Rect r = { yyc - rad, xxc - rad, yyc + rad, xxc + rad }; - if(m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush(); PaintArc(&r, alpha1, alpha2); @@ -865,32 +755,28 @@ void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, FrameArc(&r, alpha1, alpha2); } } - void wxDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h, double sa, double ea ) { wxCHECK_RET(Ok(), wxT("wxDC::DoDrawEllepticArc Invalid DC")); wxMacPortSetter helper(this) ; - Rect r; double angle = sa - ea; // Order important Mac in opposite direction to wx - + // we have to make sure that the filling is always counter-clockwise + if ( angle > 0 ) + angle -= 360 ; wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(w); wxCoord hh = m_signY * YLOG2DEVREL(h); - // handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } if (hh < 0) { hh = -hh; yy = yy - hh; } - sa = wxConvertWXangleToMACangle(sa); - r.top = yy; r.left = xx; r.bottom = yy + hh; r.right = xx + ww; - if(m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush(); PaintArc(&r, (short)sa, (short)angle); @@ -900,13 +786,10 @@ void wxDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h, FrameArc(&r, (short)sa, (short)angle); } } - void wxDC::DoDrawPoint( wxCoord x, wxCoord y ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() != wxTRANSPARENT) { wxCoord xx1 = XLOG2DEVMAC(x); @@ -916,26 +799,20 @@ void wxDC::DoDrawPoint( wxCoord x, wxCoord y ) CalcBoundingBox(x, y); } } - void wxDC::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() == wxTRANSPARENT) return; - MacInstallPen() ; - wxCoord offset = ( (m_pen.GetWidth() == 0 ? 1 : m_pen.GetWidth() ) * (wxCoord)m_scaleX - 1) / 2 ; - wxCoord x1, x2 , y1 , y2 ; x1 = XLOG2DEVMAC(points[0].x + xoffset); y1 = YLOG2DEVMAC(points[0].y + yoffset); ::MoveTo(x1 - offset, y1 - offset ); - for (int i = 0; i < n-1; i++) { x2 = XLOG2DEVMAC(points[i+1].x + xoffset); @@ -943,182 +820,143 @@ void wxDC::DoDrawLines(int n, wxPoint points[], ::LineTo( x2 - offset, y2 - offset ); } } - void wxDC::DoDrawPolygon(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord x1, x2 , y1 , y2 ; - if ( m_brush.GetStyle() == wxTRANSPARENT && m_pen.GetStyle() == wxTRANSPARENT ) return ; - PolyHandle polygon = OpenPoly(); - x2 = x1 = XLOG2DEVMAC(points[0].x + xoffset); y2 = y1 = YLOG2DEVMAC(points[0].y + yoffset); ::MoveTo(x1,y1); - for (int i = 1; i < n; i++) { x2 = XLOG2DEVMAC(points[i].x + xoffset); y2 = YLOG2DEVMAC(points[i].y + yoffset); ::LineTo(x2, y2); } - // close the polyline if necessary if ( x1 != x2 || y1 != y2 ) { ::LineTo(x1,y1 ) ; } - ClosePoly(); - if (m_brush.GetStyle() != wxTRANSPARENT) { - MacInstallBrush(); ::PaintPoly( polygon ); - } - if (m_pen.GetStyle() != wxTRANSPARENT) { - MacInstallPen() ; ::FramePoly( polygon ) ; - } KillPoly( polygon ); } - void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(width); wxCoord hh = m_signY * YLOG2DEVREL(height); - // CMB: draw nothing if transformed w or h is 0 if (ww == 0 || hh == 0) return; - // CMB: handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - Rect rect = { yy , xx , yy + hh , xx + ww } ; - if (m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush() ; ::PaintRect( &rect ) ; } - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; ::FrameRect( &rect ) ; } } - void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(width); wxCoord hh = m_signY * YLOG2DEVREL(height); - // CMB: draw nothing if transformed w or h is 0 if (ww == 0 || hh == 0) return; - // CMB: handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - Rect rect = { yy , xx , yy + hh , xx + ww } ; - if (m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush() ; ::PaintRoundRect( &rect , int(radius * 2) , int(radius * 2) ) ; } - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; ::FrameRoundRect( &rect , int(radius * 2) , int(radius * 2) ) ; } } - void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(width); wxCoord hh = m_signY * YLOG2DEVREL(height); - // CMB: draw nothing if transformed w or h is 0 if (ww == 0 || hh == 0) return; - // CMB: handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - Rect rect = { yy , xx , yy + hh , xx + ww } ; - if (m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush() ; ::PaintOval( &rect ) ; } - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; @@ -1127,33 +965,26 @@ void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height) } - bool wxDC::CanDrawBitmap(void) const { return true ; } - bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, wxDC *source, wxCoord xsrc, wxCoord ysrc, int logical_func , bool useMask, wxCoord xsrcMask, wxCoord ysrcMask ) { wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc")); wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC")); - if ( logical_func == wxNO_OP ) return TRUE ; - if (xsrcMask == -1 && ysrcMask == -1) { xsrcMask = xsrc; ysrcMask = ysrc; } - // correct the parameter in case this dc does not have a mask at all - if ( useMask && !source->m_macMask ) useMask = false ; - Rect srcrect , dstrect ; srcrect.top = source->YLOG2DEVMAC(ysrc) ; srcrect.left = source->XLOG2DEVMAC(xsrc) ; @@ -1163,7 +994,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, dstrect.left = XLOG2DEVMAC(xdest) ; dstrect.bottom = YLOG2DEVMAC(ydest + height ) ; dstrect.right = XLOG2DEVMAC(xdest + width ) ; - short mode = kUnsupportedMode ; bool invertDestinationFirst = false ; switch ( logical_func ) @@ -1220,24 +1050,19 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, case wxXOR: // src XOR dst mode = notSrcXor ; // ok break ; - default : break ; - } - if ( mode == kUnsupportedMode ) { wxFAIL_MSG("unsupported blitting mode" ); return FALSE ; } - CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ; PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ; if ( LockPixels(bmappixels) ) { wxMacPortSetter helper(this) ; - if ( source->GetDepth() == 1 ) { RGBForeColor( &MAC_WXCOLORREF(m_textForegroundColour.GetPixel()) ) ; @@ -1251,7 +1076,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, RGBForeColor( &black ) ; RGBBackColor( &white ) ; } - if ( useMask && source->m_macMask ) { if ( mode == srcCopy ) @@ -1304,12 +1128,10 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, { RGBColor srcColor ; RGBColor dstColor ; - SetPort( (GrafPtr) sourcePort ) ; GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ; SetPort( (GrafPtr) m_macPort ) ; GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; - wxMacCalculateColour( logical_func , srcColor , dstColor ) ; SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; } @@ -1362,23 +1184,19 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, { Point dstPoint = { dstrect.top + y , dstrect.left + x } ; Point srcPoint = { srcrect.top + y , srcrect.left + x } ; - { RGBColor srcColor ; RGBColor dstColor ; - SetPort( (GrafPtr) sourcePort ) ; GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ; SetPort( (GrafPtr) m_macPort ) ; GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; - wxMacCalculateColour( logical_func , srcColor , dstColor ) ; SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; } } } } - } else { @@ -1394,37 +1212,33 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, } UnlockPixels( bmappixels ) ; } - m_macPenInstalled = false ; m_macBrushInstalled = false ; m_macFontInstalled = false ; - return TRUE; } - inline Fixed IntToFixed( int inInt ) { return (((SInt32) inInt) << 16); } - +inline int FixedToInt( Fixed inFixed ) + { + return (((SInt32) inFixed) >> 16); + } void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, double angle) { wxCHECK_RET( Ok(), wxT("wxDC::DoDrawRotatedText Invalid window dc") ); - if (angle == 0.0 ) { DrawText(str, x, y); return; } - if ( str.Length() == 0 ) return ; - wxMacPortSetter helper(this) ; MacInstallFont() ; - wxString text ; if ( wxApp::s_macDefaultEncodingIsPC ) { @@ -1434,7 +1248,6 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, { text = str ; } - wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; if ( 0 ) { @@ -1442,66 +1255,80 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, SetAntiAliasedTextEnabled(true, SInt16(m_scaleY * font->m_macFontSize)); m_macAliasWasEnabled = true ; } - OSStatus status = noErr ; - TECObjectRef ec; status = TECCreateConverter(&ec, kTextEncodingMacRoman, kTextEncodingUnicodeDefault); wxASSERT_MSG( status == noErr , "couldn't start converter" ) ; - ByteCount byteOutLen ; ByteCount byteInLen = text.Length() ; ByteCount byteBufferLen = byteInLen *2 ; char* buf = new char[byteBufferLen] ; - status = TECConvertText(ec, (ConstTextPtr)text.c_str() , byteInLen, &byteInLen, (TextPtr)buf, byteBufferLen, &byteOutLen); - wxASSERT_MSG( status == noErr , "couldn't convert text" ) ; status = TECDisposeConverter(ec); wxASSERT_MSG( status == noErr , "couldn't dispose converter" ) ; - ATSUTextLayout atsuLayout ; UniCharCount chars = byteOutLen / 2 ; status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) buf , 0 , byteOutLen / 2 , byteOutLen / 2 , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; wxASSERT_MSG( status == noErr , "couldn't create the layout of the rotated text" ); - int iAngle = int( angle ); + int drawX = XLOG2DEVMAC(x) ; + int drawY = YLOG2DEVMAC(y) ; + + ATSUTextMeasurement textBefore ; + ATSUTextMeasurement textAfter ; + ATSUTextMeasurement ascent ; + ATSUTextMeasurement descent ; + + if ( abs(iAngle) > 0 ) { Fixed atsuAngle = IntToFixed( iAngle ) ; - ByteCount angleSize = sizeof(Fixed) ; - ATSUAttributeTag rotationTag = kATSULineRotationTag ; - ATSUAttributeValuePtr angleValue = &atsuAngle ; - status = ::ATSUSetLayoutControls(atsuLayout , 1 , &rotationTag , &angleSize , &angleValue ) ; + ATSUAttributeTag atsuTags[] = + { + kATSULineRotationTag , + } ; + ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = + { + sizeof( Fixed ) , + } ; + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = + { + &atsuAngle , + } ; + status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag), + atsuTags, atsuSizes, atsuValues ) ; } + status = ::ATSUMeasureText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, + &textBefore , &textAfter, &ascent , &descent ); + drawX += (int)( sin(angle/RAD2DEG) * FixedToInt(ascent) ) ; + drawY += (int)( cos(angle/RAD2DEG) * FixedToInt(ascent) ) ; status = ::ATSUDrawText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, - IntToFixed(XLOG2DEVMAC(x) ) , IntToFixed(YLOG2DEVMAC(y) ) ); + IntToFixed(drawX) , IntToFixed(drawY) ); wxASSERT_MSG( status == noErr , "couldn't draw the rotated text" ); Rect rect ; status = ::ATSUMeasureTextImage( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, - IntToFixed(XLOG2DEVMAC(x) ) , IntToFixed(YLOG2DEVMAC(y) ) , &rect ); + IntToFixed(drawX) , IntToFixed(drawY) , &rect ); wxASSERT_MSG( status == noErr , "couldn't measure the rotated text" ); - OffsetRect( &rect , -m_macLocalOrigin.x , -m_macLocalOrigin.y ) ; CalcBoundingBox(XDEV2LOG(rect.left), YDEV2LOG(rect.top) ); CalcBoundingBox(XDEV2LOG(rect.right), YDEV2LOG(rect.bottom) ); ::ATSUDisposeTextLayout(atsuLayout); delete[] buf ; } - void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) { wxCHECK_RET(Ok(), wxT("wxDC::DoDrawText Invalid DC")); wxMacPortSetter helper(this) ; - long xx = XLOG2DEVMAC(x); long yy = YLOG2DEVMAC(y); #if TARGET_CARBON bool useDrawThemeText = ( DrawThemeTextBox != (void*) kUnresolvedCFragSymbolAddress ) ; - useDrawThemeText = false ; + if ( IsKindOf(CLASSINFO( wxPrinterDC ) ) || m_font.GetNoAntiAliasing() ) + useDrawThemeText = false ; #endif MacInstallFont() ; if ( 0 ) @@ -1510,15 +1337,12 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) SetAntiAliasedTextEnabled(true, 8); m_macAliasWasEnabled = true ; } - FontInfo fi ; ::GetFontInfo( &fi ) ; - #if TARGET_CARBON if ( !useDrawThemeText ) #endif yy += fi.ascent ; - ::MoveTo( xx , yy ); if ( m_backgroundMode == wxTRANSPARENT ) { @@ -1528,11 +1352,9 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) { ::TextMode( srcCopy ) ; } - const char *text = NULL ; int length = 0 ; wxString macText ; - if ( wxApp::s_macDefaultEncodingIsPC ) { macText = wxMacMakeMacStringFromPC( strtext ) ; @@ -1544,13 +1366,10 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) text = strtext ; length = strtext.Length() ; } - int laststop = 0 ; int i = 0 ; int line = 0 ; - { - while( i < length ) { if( text[i] == 13 || text[i] == 10) @@ -1558,8 +1377,23 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) #if TARGET_CARBON if ( useDrawThemeText ) { - Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 1000 } ; + Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 10000 } ; CFStringRef mString = CFStringCreateWithBytes( NULL , (UInt8*) text + laststop , i - laststop , CFStringGetSystemEncoding(), false ) ; + if ( m_backgroundMode != wxTRANSPARENT ) + { + Point bounds={0,0} ; + Rect background = frame ; + SInt16 baseline ; + ::GetThemeTextDimensions( mString, + kThemeCurrentPortFont, + kThemeStateActive, + false, + &bounds, + &baseline ); + background.right = background.left + bounds.h ; + background.bottom = background.top + bounds.v ; + ::EraseRect( &background ) ; + } ::DrawThemeTextBox( mString, kThemeCurrentPortFont, kThemeStateActive, @@ -1584,8 +1418,23 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) #if TARGET_CARBON if ( useDrawThemeText ) { - Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 1000 } ; + Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 10000 } ; CFStringRef mString = CFStringCreateWithCString( NULL , text + laststop , kCFStringEncodingMacRoman ) ; + if ( m_backgroundMode != wxTRANSPARENT ) + { + Point bounds={0,0} ; + Rect background = frame ; + SInt16 baseline ; + ::GetThemeTextDimensions( mString, + kThemeCurrentPortFont, + kThemeStateActive, + false, + &bounds, + &baseline ); + background.right = background.left + bounds.h ; + background.bottom = background.top + bounds.v ; + ::EraseRect( &background ) ; + } ::DrawThemeTextBox( mString, kThemeCurrentPortFont, kThemeStateActive, @@ -1603,45 +1452,37 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) } ::TextMode( srcOr ) ; } - bool wxDC::CanGetTextExtent() const { wxCHECK_MSG(Ok(), false, wxT("Invalid DC")); - return true ; } - void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *height, wxCoord *descent, wxCoord *externalLeading , wxFont *theFont ) const { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxFont formerFont = m_font ; - if ( theFont ) { // work around the constness *((wxFont*)(&m_font)) = *theFont ; } - MacInstallFont() ; - FontInfo fi ; ::GetFontInfo( &fi ) ; -#if TARGET_CARBON +#if TARGET_CARBON bool useGetThemeText = ( GetThemeTextDimensions != (void*) kUnresolvedCFragSymbolAddress ) ; - useGetThemeText = false ; + if ( IsKindOf(CLASSINFO( wxPrinterDC ) ) || ((wxFont*)&m_font)->GetNoAntiAliasing() ) + useGetThemeText = false ; #endif - if ( height ) *height = YDEV2LOGREL( fi.descent + fi.ascent ) ; if ( descent ) *descent =YDEV2LOGREL( fi.descent ); if ( externalLeading ) *externalLeading = YDEV2LOGREL( fi.leading ) ; - const char *text = NULL ; int length = 0 ; wxString macText ; @@ -1650,20 +1491,18 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he macText = wxMacMakeMacStringFromPC( string ) ; text = macText ; length = macText.Length() ; - } + } else { text = string ; length = string.Length() ; } - int laststop = 0 ; int i = 0 ; int curwidth = 0 ; if ( width ) { *width = 0 ; - while( i < length ) { if( text[i] == 13 || text[i] == 10) @@ -1696,7 +1535,7 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he } i++ ; } - + #if TARGET_CARBON if ( useGetThemeText ) { @@ -1720,7 +1559,6 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he if ( curwidth > *width ) *width = XDEV2LOGREL( curwidth ) ; } - if ( theFont ) { // work around the constness @@ -1728,40 +1566,54 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he m_macFontInstalled = false ; } } - wxCoord wxDC::GetCharWidth(void) const { wxCHECK_MSG(Ok(), 1, wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - MacInstallFont() ; - - int width = ::TextWidth( "n" , 0 , 1 ) ; - + int width = 0 ; +#if TARGET_CARBON + bool useGetThemeText = ( GetThemeTextDimensions != (void*) kUnresolvedCFragSymbolAddress ) ; + if ( ((wxFont*)&m_font)->GetNoAntiAliasing() ) + useGetThemeText = false ; +#endif + char text[] = "H" ; +#if TARGET_CARBON + if ( useGetThemeText ) + { + Point bounds={0,0} ; + SInt16 baseline ; + CFStringRef mString = CFStringCreateWithBytes( NULL , (UInt8*) text , 1 , CFStringGetSystemEncoding(), false ) ; + ::GetThemeTextDimensions( mString, + kThemeCurrentPortFont, + kThemeStateActive, + false, + &bounds, + &baseline ); + CFRelease( mString ) ; + width = bounds.h ; + } + else +#endif + { + width = ::TextWidth( text , 0 , 1 ) ; + } return YDEV2LOGREL(width) ; } - wxCoord wxDC::GetCharHeight(void) const { wxCHECK_MSG(Ok(), 1, wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - MacInstallFont() ; - FontInfo fi ; ::GetFontInfo( &fi ) ; - return YDEV2LOGREL( fi.descent + fi.ascent ); } - void wxDC::Clear(void) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; Rect rect = { -31000 , -31000 , 31000 , 31000 } ; - if (m_backgroundBrush.GetStyle() != wxTRANSPARENT) { ::PenNormal() ; @@ -1770,28 +1622,22 @@ void wxDC::Clear(void) ::EraseRect( &rect ) ; } } - void wxDC::MacInstallFont() const { wxCHECK_RET(Ok(), wxT("Invalid DC")); // if ( m_macFontInstalled ) // return ; Pattern blackColor ; - MacSetupBackgroundForCurrentPort(m_backgroundBrush) ; - wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; - if ( font ) { ::TextFont( font->m_macFontNum ) ; ::TextSize( short(m_scaleY * font->m_macFontSize) ) ; ::TextFace( font->m_macFontStyle ) ; - m_macFontInstalled = true ; m_macBrushInstalled = false ; m_macPenInstalled = false ; - RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()); ::RGBForeColor( &forecolor ); @@ -1805,27 +1651,20 @@ void wxDC::MacInstallFont() const Style fontStyle ; GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; GetFNum( fontName, &fontId ); - ::TextFont( fontId ) ; ::TextSize( short(m_scaleY * fontSize) ) ; ::TextFace( fontStyle ) ; - // todo reset after spacing changes - or store the current spacing somewhere - m_macFontInstalled = true ; m_macBrushInstalled = false ; m_macPenInstalled = false ; - RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()); ::RGBForeColor( &forecolor ); ::RGBBackColor( &backcolor ); } - short mode = patCopy ; - // todo : - switch( m_logicalFunction ) { case wxCOPY: // src @@ -1844,9 +1683,7 @@ void wxDC::MacInstallFont() const case wxSRC_INVERT: // (NOT src) mode = notPatCopy ; break ; - // unsupported TODO - case wxCLEAR: // 0 case wxAND_REVERSE:// src AND (NOT dst) case wxAND: // src AND dst @@ -1863,76 +1700,59 @@ void wxDC::MacInstallFont() const break ; } ::PenMode( mode ) ; - OSStatus status = noErr ; - Fixed atsuSize = IntToFixed( int(m_scaleY * font->m_macFontSize) ) ; - Style qdStyle = font->m_macFontStyle ; ATSUFontID atsuFont = font->m_macATSUFontID ; - status = ::ATSUCreateStyle(&(ATSUStyle)m_macATSUIStyle) ; wxASSERT_MSG( status == noErr , "couldn't create ATSU style" ) ; - ATSUAttributeTag atsuTags[] = { kATSUFontTag , kATSUSizeTag , // kATSUColorTag , - kATSUBaselineClassTag , +// kATSUBaselineClassTag , kATSUVerticalCharacterTag, - kATSUQDBoldfaceTag , kATSUQDItalicTag , kATSUQDUnderlineTag , kATSUQDCondensedTag , kATSUQDExtendedTag , - } ; - ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { sizeof( ATSUFontID ) , sizeof( Fixed ) , // sizeof( RGBColor ) , - sizeof( BslnBaselineClass ) , +// sizeof( BslnBaselineClass ) , sizeof( ATSUVerticalCharacterType), - sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , - } ; - Boolean kTrue = true ; Boolean kFalse = false ; - BslnBaselineClass kBaselineDefault = kBSLNHangingBaseline ; - +// BslnBaselineClass kBaselineDefault = kBSLNHangingBaseline ; ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal; - ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { &atsuFont , &atsuSize , // &MAC_WXCOLORREF( m_textForegroundColour.GetPixel() ) , - &kBaselineDefault , +// &kBaselineDefault , &kHorizontal, - (qdStyle & bold) ? &kTrue : &kFalse , (qdStyle & italic) ? &kTrue : &kFalse , (qdStyle & underline) ? &kTrue : &kFalse , (qdStyle & condense) ? &kTrue : &kFalse , (qdStyle & extend) ? &kTrue : &kFalse , } ; - status = ::ATSUSetAttributes((ATSUStyle)m_macATSUIStyle, sizeof(atsuTags)/sizeof(ATSUAttributeTag), atsuTags, atsuSizes, atsuValues); wxASSERT_MSG( status == noErr , "couldn't set create ATSU style" ) ; - } - Pattern gHatchPatterns[] = { { { 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF } }, @@ -1941,13 +1761,11 @@ Pattern gHatchPatterns[] = { { 0x10 , 0x10 , 0x10 , 0xFF , 0x10 , 0x10 , 0x10 , 0x10 } }, { { 0x00 , 0x00 , 0x00 , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 } }, { { 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 } }, - { { 0x81 , 0x42 , 0x24 , 0x18 , 0x18 , 0x24 , 0x42 , 0x81 } } + { { 0x81 , 0x42 , 0x24 , 0x18 , 0x18 , 0x24 , 0x42 , 0x81 } } } ; - static void wxMacGetHatchPattern(int hatchStyle, Pattern *pattern) { int theIndex = 1 ; - switch(hatchStyle) { case wxBDIAGONAL_HATCH: @@ -1974,31 +1792,23 @@ static void wxMacGetHatchPattern(int hatchStyle, Pattern *pattern) } *pattern = gHatchPatterns[theIndex-1] ; } - void wxDC::MacInstallPen() const { wxCHECK_RET(Ok(), wxT("Invalid DC")); - Pattern blackColor; - // if ( m_macPenInstalled ) // return ; - RGBColor forecolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel()); RGBColor backcolor = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()); ::RGBForeColor( &forecolor ); ::RGBBackColor( &backcolor ); - ::PenNormal() ; int penWidth = m_pen.GetWidth() * (int) m_scaleX ; - // null means only one pixel, at whatever resolution if ( penWidth == 0 ) penWidth = 1 ; ::PenSize(penWidth, penWidth); - int penStyle = m_pen.GetStyle(); - if (penStyle == wxSOLID) { ::PenPat(GetQDGlobalsBlack(&blackColor)); @@ -2041,9 +1851,9 @@ void wxDC::MacInstallPen() const case wxUSER_DASH : { wxDash* dash ; - int number = m_pen.GetDashes(&dash) ; + m_pen.GetDashes(&dash) ; // right now we don't allocate larger pixmaps - // int number = + // int number = m_pen.GetDashes(&dash) ; for ( int i = 0 ; i < 8 ; ++i ) { @@ -2054,11 +1864,8 @@ void wxDC::MacInstallPen() const } ::PenPat(&pat); } - short mode = patCopy ; - // todo : - switch( m_logicalFunction ) { case wxCOPY: // only foreground color, leave background (thus not patCopy) @@ -2077,9 +1884,7 @@ void wxDC::MacInstallPen() const case wxSRC_INVERT: // (NOT src) mode = notPatCopy ; break ; - // unsupported TODO - case wxCLEAR: // 0 case wxAND_REVERSE:// src AND (NOT dst) case wxAND: // src AND dst @@ -2100,7 +1905,6 @@ void wxDC::MacInstallPen() const m_macBrushInstalled = false ; m_macFontInstalled = false ; } - void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background ) { Pattern whiteColor ; @@ -2138,22 +1942,16 @@ void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background ) } } } - void wxDC::MacInstallBrush() const { wxCHECK_RET(Ok(), wxT("Invalid DC")); - Pattern blackColor ; // if ( m_macBrushInstalled ) // return ; - // foreground - bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ; - ::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) ); ::RGBBackColor( &MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()) ); - int brushStyle = m_brush.GetStyle(); if (brushStyle == wxSOLID) { @@ -2174,23 +1972,18 @@ void wxDC::MacInstallBrush() const int width = bitmap->GetWidth() ; int height = bitmap->GetHeight() ; GWorldPtr gw = NULL ; - if ( m_brush.GetStyle() == wxSTIPPLE ) gw = MAC_WXHBITMAP(bitmap->GetHBITMAP()) ; else gw = MAC_WXHBITMAP(bitmap->GetMask()->GetMaskBitmap()) ; - PixMapHandle gwpixmaphandle = GetGWorldPixMap( gw ) ; LockPixels( gwpixmaphandle ) ; - bool isMonochrome = !IsPortColor( gw ) ; - if ( !isMonochrome ) { if ( (**gwpixmaphandle).pixelSize == 1 ) isMonochrome = true ; } - if ( isMonochrome && width == 8 && height == 8 ) { ::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) ); @@ -2213,12 +2006,10 @@ void wxDC::MacInstallBrush() const Handle image; long imageSize; PixPatHandle pixpat = NewPixPat() ; - CopyPixMap(gwpixmaphandle, (**pixpat).patMap); imageSize = GetPixRowBytes((**pixpat).patMap) * ((**(**pixpat).patMap).bounds.bottom - (**(**pixpat).patMap).bounds.top); - PtrToHand( (**gwpixmaphandle).baseAddr, &image, imageSize ); (**pixpat).patData = image; if ( isMonochrome ) @@ -2246,7 +2037,6 @@ void wxDC::MacInstallBrush() const { ::PenPat(GetQDGlobalsBlack(&blackColor)); } - short mode = patCopy ; switch( m_logicalFunction ) { @@ -2272,9 +2062,7 @@ void wxDC::MacInstallBrush() const case wxSRC_INVERT: // (NOT src) mode = notPatCopy ; break ; - // unsupported TODO - case wxCLEAR: // 0 case wxAND_REVERSE:// src AND (NOT dst) case wxAND: // src AND dst @@ -2295,47 +2083,38 @@ void wxDC::MacInstallBrush() const m_macPenInstalled = false ; m_macFontInstalled = false ; } - // --------------------------------------------------------------------------- // coordinates transformations // --------------------------------------------------------------------------- - wxCoord wxDCBase::DeviceToLogicalX(wxCoord x) const { return ((wxDC *)this)->XDEV2LOG(x); } - wxCoord wxDCBase::DeviceToLogicalY(wxCoord y) const { return ((wxDC *)this)->YDEV2LOG(y); } - wxCoord wxDCBase::DeviceToLogicalXRel(wxCoord x) const { return ((wxDC *)this)->XDEV2LOGREL(x); } - wxCoord wxDCBase::DeviceToLogicalYRel(wxCoord y) const { return ((wxDC *)this)->YDEV2LOGREL(y); } - wxCoord wxDCBase::LogicalToDeviceX(wxCoord x) const { return ((wxDC *)this)->XLOG2DEV(x); } - wxCoord wxDCBase::LogicalToDeviceY(wxCoord y) const { return ((wxDC *)this)->YLOG2DEV(y); } - wxCoord wxDCBase::LogicalToDeviceXRel(wxCoord x) const { return ((wxDC *)this)->XLOG2DEVREL(x); } - wxCoord wxDCBase::LogicalToDeviceYRel(wxCoord y) const { return ((wxDC *)this)->YLOG2DEVREL(y); diff --git a/src/mac/carbon/dcprint.cpp b/src/mac/carbon/dcprint.cpp index 6c32de8ad0..8d809ced36 100644 --- a/src/mac/carbon/dcprint.cpp +++ b/src/mac/carbon/dcprint.cpp @@ -46,14 +46,16 @@ GrafPtr macPrintFormerPort = NULL ; wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) { - OSStatus err ; + OSStatus err = noErr ; wxString message ; m_printData = printdata ; m_printData.ConvertToNative() ; #if TARGET_CARBON && PM_USE_SESSION_APIS - err = UMAPrOpen(&m_macPrintSessionPort) ; + m_macPrintSessionPort = printdata.m_macPrintSession ; + PMRetain( m_macPrintSessionPort ) ; + if ( err != noErr || m_macPrintSessionPort == kPMNoData ) #else err = UMAPrOpen(NULL) ; @@ -64,7 +66,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; + PMRelease( m_macPrintSessionPort ) ; #else UMAPrClose(NULL) ; #endif @@ -75,8 +77,13 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) #if !TARGET_CARBON if ( ::PrValidate( (THPrint) m_printData.m_macPrintSettings ) ) { - ::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) ; // the driver has changed in the mean time, should we pop up a page setup dialog ? + if ( !::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) ) + { + UMAPrClose(NULL) ; + m_ok = FALSE; + return; + } } err = PrError() ; if ( err != noErr ) @@ -89,6 +96,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) return; } ::GetPort( &macPrintFormerPort ) ; + /* m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ; err = PrError() ; if ( err ) @@ -102,7 +110,9 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) } // sets current port m_macPort = (GrafPtr ) m_macPrintSessionPort ; + */ #else + /* #if PM_USE_SESSION_APIS err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort, (PMPrintSettings)m_printData.m_macPrintSettings, @@ -121,7 +131,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; + PMRelease(&m_macPrintSessionPort) ; #else UMAPrClose(NULL) ; #endif @@ -130,6 +140,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) } // sets current port ::GetPort( (GrafPtr *)&m_macPort ) ; + */ #endif m_ok = TRUE ; m_minY = m_minX = 0 ; @@ -143,7 +154,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; + PMRelease(&m_macPrintSessionPort) ; #else UMAPrClose(NULL) ; #endif @@ -160,11 +171,12 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxPrinterDC::~wxPrinterDC(void) { - OSStatus err ; +// OSStatus err ; wxString message ; #if !TARGET_CARBON if ( m_ok ) { + /* ::PrCloseDoc( (TPPrPort) m_macPrintSessionPort ) ; err = PrError() ; @@ -182,6 +194,119 @@ wxPrinterDC::~wxPrinterDC(void) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } + */ + ::UMAPrClose(NULL) ; +// ::SetPort( macPrintFormerPort ) ; + ::SetPort( LMGetWMgrPort() ) ; + } +#else + if ( m_ok ) + { +/* + #if PM_USE_SESSION_APIS + err = PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort); + #else + err = PMEndDocument(m_macPrintSessionPort); + #endif + if ( err != noErr ) + { + message.Printf( "Print Error %ld", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + } + */ + #if TARGET_CARBON && PM_USE_SESSION_APIS + PMRelease(&m_macPrintSessionPort) ; + #else + UMAPrClose(NULL) ; + #endif + } +#endif +} + +bool wxPrinterDC::StartDoc( const wxString& WXUNUSED(message) ) +{ + OSStatus err = noErr ; + wxString message ; + +#if !TARGET_CARBON + m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ; + err = PrError() ; + if ( err ) + { + message.Printf( "Print Error %d", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + UMAPrClose(NULL) ; + m_ok = FALSE; + return false ; + } + // sets current port + m_macPort = (GrafPtr ) m_macPrintSessionPort ; +#else + #if PM_USE_SESSION_APIS + err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort, + (PMPrintSettings)m_printData.m_macPrintSettings, + (PMPageFormat)m_printData.m_macPageFormat); + if ( err != noErr ) + #else + m_macPrintSessionPort = kPMNoReference ; + err = PMBeginDocument( + m_printData.m_macPrintSettings, + m_printData.m_macPageFormat, + &m_macPrintSessionPort); + if ( err != noErr || m_macPrintSessionPort == kPMNoReference ) + #endif + { + message.Printf( "Print Error %ld", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + #if TARGET_CARBON && PM_USE_SESSION_APIS + PMRelease(&m_macPrintSessionPort) ; + #else + UMAPrClose(NULL) ; + #endif + m_ok = FALSE; + return m_ok; + } + // sets current port + ::GetPort( (GrafPtr *)&m_macPort ) ; +#endif + m_ok = TRUE ; + m_minY = m_minX = 0 ; +#if TARGET_CARBON + PMRect rPaper; + + err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper); + if ( err != noErr ) + { + message.Printf( "Print Error %ld", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + #if TARGET_CARBON && PM_USE_SESSION_APIS + PMRelease(&m_macPrintSessionPort) ; + #else + UMAPrClose(NULL) ; + #endif + m_ok = FALSE; + return m_ok; + } + m_maxX = (wxCoord)(rPaper.right - rPaper.left) ; + m_maxY = (wxCoord)(rPaper.bottom - rPaper.top) ; +#else + m_maxX = (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ; + m_maxY = (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ; +#endif + return m_ok ; +} + +void wxPrinterDC::EndDoc(void) +{ + OSStatus err ; + wxString message ; +#if !TARGET_CARBON + if ( m_ok ) + { ::UMAPrClose(NULL) ; // ::SetPort( macPrintFormerPort ) ; ::SetPort( LMGetWMgrPort() ) ; @@ -200,24 +325,10 @@ wxPrinterDC::~wxPrinterDC(void) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } - #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; - #else - UMAPrClose(NULL) ; - #endif } #endif } -bool wxPrinterDC::StartDoc( const wxString& WXUNUSED(message) ) -{ - return m_ok ; -} - -void wxPrinterDC::EndDoc(void) -{ -} - void wxPrinterDC::StartPage(void) { if ( !m_ok ) @@ -286,6 +397,14 @@ void wxPrinterDC::StartPage(void) ::SetPort( macPrintFormerPort ) ; m_ok = FALSE ; } + PMRect rPaper; + + err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper); + if ( !err ) + { + m_macLocalOrigin.x = (int) (rPaper.left) ; + m_macLocalOrigin.y = (int) (rPaper.top) ; + } #endif } diff --git a/src/mac/carbon/dnd.cpp b/src/mac/carbon/dnd.cpp index 5369a1cf34..598284893d 100644 --- a/src/mac/carbon/dnd.cpp +++ b/src/mac/carbon/dnd.cpp @@ -173,6 +173,7 @@ bool wxDropTarget::GetData() { UInt16 items ; OSErr result; + bool firstFileAdded = false ; CountDragItems((DragReference)m_currentDrag, &items); for (UInt16 index = 1; index <= items; ++index) { @@ -195,7 +196,11 @@ bool wxDropTarget::GetData() Ptr theData ; GetFlavorDataSize((DragReference)m_currentDrag, theItem, theType, &dataSize); if ( theType == 'TEXT' ) + { + // this increment is only valid for allocating, on the next GetFlavorData + // call it is reset again to the original value dataSize++ ; + } theData = new char[dataSize]; GetFlavorData((DragReference)m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); if( theType == 'TEXT' ) @@ -203,7 +208,7 @@ bool wxDropTarget::GetData() theData[dataSize]=0 ; if ( wxApp::s_macDefaultEncodingIsPC ) { - wxMacConvertToPC((char*)theData) ; + wxMacConvertToPC((char*)theData,(char*)theData,dataSize) ; } m_dataObject->SetData( format, dataSize, theData ); } @@ -211,7 +216,13 @@ bool wxDropTarget::GetData() { HFSFlavor* theFile = (HFSFlavor*) theData ; wxString name = wxMacFSSpec2MacFilename( &theFile->fileSpec ) ; - ((wxFileDataObject*)m_dataObject)->AddFile( name ) ; + if ( firstFileAdded ) + ((wxFileDataObject*)m_dataObject)->AddFile( name ) ; + else + { + ((wxFileDataObject*)m_dataObject)->SetData( 0 , name.c_str() ) ; + firstFileAdded = true ; + } } else { @@ -234,6 +245,28 @@ bool wxDropTarget::GetData() //----------------------------------------------------------------------------- // drag request +wxDropSource::wxDropSource(wxWindow *win, + const wxCursor &cursorCopy, + const wxCursor &cursorMove, + const wxCursor &cursorStop) + : wxDropSourceBase(cursorCopy, cursorMove, cursorStop) +{ + wxMacEnsureTrackingHandlersInstalled() ; + m_window = win; +} + +wxDropSource::wxDropSource(wxDataObject& data, + wxWindow *win, + const wxCursor &cursorCopy, + const wxCursor &cursorMove, + const wxCursor &cursorStop) + : wxDropSourceBase(cursorCopy, cursorMove, cursorStop) +{ + wxMacEnsureTrackingHandlersInstalled() ; + SetData( data ); + m_window = win; +} + wxDropSource::wxDropSource(wxWindow *win, const wxIcon &iconCopy, const wxIcon &iconMove, @@ -365,6 +398,21 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) return wxDragCopy ; } +bool wxDropSource::MacInstallDefaultCursor(wxDragResult effect) +{ + const wxCursor& cursor = GetCursor(effect); + if ( cursor.Ok() ) + { + cursor.MacInstall() ; + + return TRUE; + } + else + { + return FALSE; + } +} + bool gTrackingGlobalsInstalled = false ; // passing the globals via refcon is not needed by the CFM and later architectures anymore @@ -446,11 +494,46 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind // this window is entered trackingGlobals->m_currentTargetWindow = win ; trackingGlobals->m_currentTarget = win->GetDropTarget() ; - if ( trackingGlobals->m_currentTarget ) { - trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ; - if ( trackingGlobals->m_currentTarget->OnEnter( - localx , localy , wxDragCopy ) != wxDragNone ) + wxDragResult result = wxDragNone ; + if ( trackingGlobals->m_currentTarget ) + { + trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ; + result = trackingGlobals->m_currentTarget->OnEnter( + localx , localy , wxDragCopy ) ; + } + + if ( trackingGlobals->m_currentSource && trackingGlobals->m_currentSource->GiveFeedback( result ) == FALSE ) + { + if ( trackingGlobals->m_currentSource->MacInstallDefaultCursor( result ) == FALSE ) + { + switch( result ) + { + case wxDragCopy : + { + wxCursor cursor(wxCURSOR_COPY_ARROW) ; + cursor.MacInstall() ; + } + break ; + case wxDragMove : + { + wxCursor cursor(wxCURSOR_ARROW) ; + cursor.MacInstall() ; + } + break ; + case wxDragNone : + { + wxCursor cursor(wxCURSOR_NO_ENTRY) ; + cursor.MacInstall() ; + } + break ; + default : + break ; + } + } + } + + if ( result != wxDragNone ) { int x , y ; x = y = 0 ; diff --git a/src/mac/carbon/filedlg.cpp b/src/mac/carbon/filedlg.cpp index cef71e0136..f290292a75 100644 --- a/src/mac/carbon/filedlg.cpp +++ b/src/mac/carbon/filedlg.cpp @@ -8,11 +8,9 @@ // Copyright: (c) AUTHOR // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifdef __GNUG__ #pragma implementation "filedlg.h" #endif - #include "wx/defs.h" #include "wx/app.h" #include "wx/utils.h" @@ -20,81 +18,84 @@ #include "wx/filedlg.h" #include "wx/intl.h" #include "wx/tokenzr.h" - #ifndef __DARWIN__ #include "PLStringFuncs.h" #endif - #if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxFileDialog, wxDialog) #endif - // begin wxmac - #include "wx/mac/private.h" - #include - #include "MoreFiles.h" #include "MoreFilesExtras.h" - extern bool gUseNavServices ; - // the data we need to pass to our standard file hook routine // includes a pointer to the dialog, a pointer to the standard // file reply record (so we can inspect the current selection) // and a copy of the "previous" file spec of the reply record // so we can see if the selection has changed - -const int kwxMacFileTypes = 10 ; - struct OpenUserDataRec { int currentfilter ; - wxString name [kwxMacFileTypes] ; - wxString extensions[kwxMacFileTypes] ; - OSType filtermactypes[kwxMacFileTypes] ; - int numfilters ; + bool saveMode ; + wxArrayString name ; + wxArrayString extensions ; + wxArrayLong filtermactypes ; + NavMenuItemSpecArrayHandle menuitems ; }; typedef struct OpenUserDataRec OpenUserDataRec, *OpenUserDataRecPtr; - static pascal void NavEventProc( NavEventCallbackMessage inSelector, NavCBRecPtr ioParams, NavCallBackUserData ioUserData); - #if TARGET_CARBON static NavEventUPP sStandardNavEventFilter = NewNavEventUPP(NavEventProc); #else static NavEventUPP sStandardNavEventFilter = NewNavEventProc(NavEventProc); #endif - static pascal void NavEventProc( NavEventCallbackMessage inSelector, NavCBRecPtr ioParams, NavCallBackUserData ioUserData ) { - OpenUserDataRec * data = ( OpenUserDataRec *) ioUserData ; + OpenUserDataRec * data = ( OpenUserDataRec *) ioUserData ; if (inSelector == kNavCBEvent) { - // In Universal Headers 3.2, Apple changed the definition of - /* - #if UNIVERSAL_INTERFACES_VERSION >= 0x0320 // Universal Headers 3.2 - UModalAlerts::ProcessModalEvent(*(ioParams->eventData.eventDataParms.event)); - - #else - UModalAlerts::ProcessModalEvent(*(ioParams->eventData.event)); - #endif - */ - wxTheApp->MacHandleOneEvent(ioParams->eventData.eventDataParms.event); - } else if ( inSelector == kNavCBPopupMenuSelect ) + } + else if ( inSelector == kNavCBStart ) { - NavMenuItemSpec * menu = (NavMenuItemSpec *) ioParams->eventData.eventDataParms.param ; - data->currentfilter = menu->menuType ; + if ( data->menuitems ) + NavCustomControl(ioParams->context, kNavCtlSelectCustomType, &(*data->menuitems)[data->currentfilter]); + } + else if ( inSelector == kNavCBPopupMenuSelect ) + { + NavMenuItemSpec * menu = (NavMenuItemSpec *) ioParams->eventData.eventDataParms.param ; + if ( menu->menuCreator == 'WXNG' ) + { + data->currentfilter = menu->menuType ; + if ( data->saveMode ) + { + int i = menu->menuType ; + wxString extension = data->extensions[i].AfterLast('.') ; + extension.MakeLower() ; + Str255 filename ; + // get the current filename + NavCustomControl(ioParams->context, kNavCtlGetEditFileName, &filename); + CopyPascalStringToC( filename , (char*) filename ) ; + wxString sfilename( filename ) ; + int pos = sfilename.Find('.',TRUE) ; + if ( pos != wxNOT_FOUND ) + { + sfilename = sfilename.Left(pos+1)+extension ; + CopyCStringToPascal( sfilename.c_str() , filename ) ; + NavCustomControl(ioParams->context, kNavCtlSetEditFileName, &filename); + } + } + } } } - const char * gfilters[] = { "*.TXT" , @@ -103,7 +104,6 @@ const char * gfilters[] = NULL } ; - OSType gfiltersmac[] = { 'TEXT' , @@ -114,26 +114,27 @@ OSType gfiltersmac[] = } ; - void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) { - myData->currentfilter = 0 ; - + myData->menuitems = NULL ; + myData->currentfilter = 0 ; + myData->saveMode = FALSE ; + if ( filter && filter[0] ) { wxString filter2(filter) ; int filterIndex = 0; bool isName = true ; wxString current ; - for( unsigned int i = 0; i < filter2.Len(); i++ ) + for( unsigned int i = 0; i < filter2.Len() ; i++ ) { if( filter2.GetChar(i) == wxT('|') ) { if( isName ) { - myData->name[filterIndex] = current ; + myData->name.Add( current ) ; } else { - myData->extensions[filterIndex] = current.MakeUpper() ; + myData->extensions.Add( current.MakeUpper() ) ; ++filterIndex ; } isName = !isName ; @@ -149,37 +150,33 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) wxASSERT_MSG( filterIndex == 0 || !isName , "incorrect format of format string" ) ; if ( current.IsEmpty() ) - myData->extensions[filterIndex] = myData->name[filterIndex] ; + myData->extensions.Add( myData->name[filterIndex] ) ; else - myData->extensions[filterIndex] = current.MakeUpper() ; + myData->extensions.Add( current.MakeUpper() ) ; + if ( filterIndex == 0 || isName ) + myData->name.Add( current.MakeUpper() ) ; + ++filterIndex ; - - myData->numfilters = filterIndex ; - for ( int i = 0 ; i < myData->numfilters ; i++ ) + const size_t extCount = myData->extensions.GetCount(); + for ( size_t i = 0 ; i < extCount; i++ ) { int j ; for ( j = 0 ; gfilters[j] ; j++ ) { if ( strcmp( myData->extensions[i] , gfilters[j] ) == 0 ) { - myData->filtermactypes[i] = gfiltersmac[j] ; + myData->filtermactypes.Add( gfiltersmac[j] ) ; break ; } } if( gfilters[j] == NULL ) { - myData->filtermactypes[i] = '****' ; + myData->filtermactypes.Add( '****' ) ; } } } - else - { - myData->numfilters = 0 ; - } - } - static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data) { Str255 filename ; @@ -193,7 +190,7 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP wxString file(filename) ; file.MakeUpper() ; - if ( data->numfilters > 0 ) + if ( data->extensions.GetCount() > 0 ) { //for ( int i = 0 ; i < data->numfilters ; ++i ) int i = data->currentfilter ; @@ -201,7 +198,7 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP return true ; { - if ( type == data->filtermactypes[i] ) + if ( type == (OSType)data->filtermactypes[i] ) return true ; wxStringTokenizer tokenizer( data->extensions[i] , ";" ) ; @@ -219,13 +216,11 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP } return true ; } - #ifndef __DARWIN__ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dataPtr) { OpenUserDataRecPtr data = (OpenUserDataRecPtr) dataPtr ; // return true if this item is invisible or a file - Boolean visibleFlag; Boolean folderFlag; @@ -246,9 +241,7 @@ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dat return false ; } #endif - // end wxmac - wxString wxFileSelector(const char *title, const char *defaultDir, const char *defaultFileName, const char *defaultExtension, const char *filter, int flags, @@ -256,36 +249,29 @@ wxString wxFileSelector(const char *title, { // If there's a default extension specified but no filter, we create a suitable // filter. - wxString filter2(""); if ( defaultExtension && !filter ) filter2 = wxString("*.") + wxString(defaultExtension) ; else if ( filter ) filter2 = filter; - wxString defaultDirString; if (defaultDir) defaultDirString = defaultDir; else defaultDirString = ""; - wxString defaultFilenameString; if (defaultFileName) defaultFilenameString = defaultFileName; else defaultFilenameString = ""; - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - if ( fileDialog.ShowModal() == wxID_OK ) { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; + return fileDialog.GetPath(); } else return wxGetEmptyString(); } - WXDLLEXPORT wxString wxFileSelectorEx(const char *title, const char *defaultDir, const char *defaultFileName, @@ -295,26 +281,22 @@ WXDLLEXPORT wxString wxFileSelectorEx(const char *title, wxWindow* parent, int x, int y) - { wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - if ( fileDialog.ShowModal() == wxID_OK ) { *defaultFilterIndex = fileDialog.GetFilterIndex(); - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; + return fileDialog.GetPath(); } else return wxGetEmptyString(); } - wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, long style, const wxPoint& pos) { - wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ; + wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ; m_message = message; m_dialogStyle = style; m_parent = parent; @@ -322,10 +304,9 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, m_fileName = defaultFileName; m_dir = defaultDir; m_wildCard = wildCard; - m_filterIndex = 1; + m_filterIndex = 0; } - pascal Boolean CrossPlatformFilterCallback ( AEDesc *theItem, void *info, @@ -335,7 +316,6 @@ pascal Boolean CrossPlatformFilterCallback ( { bool display = true; OpenUserDataRecPtr data = (OpenUserDataRecPtr) callBackUD ; - if (filterMode == kNavFilteringBrowserList) { NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ; @@ -346,94 +326,79 @@ pascal Boolean CrossPlatformFilterCallback ( display = CheckFile( spec.name , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ; } } - return display; } - int wxFileDialog::ShowModal() { - NavDialogOptions mNavOptions; - NavObjectFilterUPP mNavFilterUPP = NULL; - NavPreviewUPP mNavPreviewUPP = NULL ; - NavReplyRecord mNavReply; - AEDesc mDefaultLocation ; - bool mSelectDefault = false ; + NavDialogOptions mNavOptions; + NavObjectFilterUPP mNavFilterUPP = NULL; + NavPreviewUPP mNavPreviewUPP = NULL ; + NavReplyRecord mNavReply; + AEDesc mDefaultLocation ; + bool mSelectDefault = false ; - ::NavGetDefaultDialogOptions(&mNavOptions); + // setup dialog + ::NavGetDefaultDialogOptions(&mNavOptions); + mNavFilterUPP = nil; + mNavPreviewUPP = nil; + mSelectDefault = false; + mNavReply.validRecord = false; + mNavReply.replacing = false; + mNavReply.isStationery = false; + mNavReply.translationNeeded = false; + mNavReply.selection.descriptorType = typeNull; + mNavReply.selection.dataHandle = nil; + mNavReply.keyScript = smSystemScript; + mNavReply.fileTranslation = nil; - mNavFilterUPP = nil; - mNavPreviewUPP = nil; - mSelectDefault = false; - mNavReply.validRecord = false; - mNavReply.replacing = false; - mNavReply.isStationery = false; - mNavReply.translationNeeded = false; - mNavReply.selection.descriptorType = typeNull; - mNavReply.selection.dataHandle = nil; - mNavReply.keyScript = smSystemScript; - mNavReply.fileTranslation = nil; + // Set default location, the location + // that's displayed when the dialog + // first appears + + FSSpec location ; + wxMacFilename2FSSpec( m_dir , &location ) ; + OSErr err = noErr ; + + mDefaultLocation.descriptorType = typeNull; + mDefaultLocation.dataHandle = nil; + err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation ); + if ( mDefaultLocation.dataHandle ) { - // Set default location, the location - // that's displayed when the dialog - // first appears - - FSSpec location ; - wxMacFilename2FSSpec( m_dir , &location ) ; - OSErr err = noErr ; - - mDefaultLocation.descriptorType = typeNull; - mDefaultLocation.dataHandle = nil; - - err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation ); - - if ( mDefaultLocation.dataHandle ) { - - if (mSelectDefault) { - mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation; - } else { - mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation; - } + if (mSelectDefault) { + mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation; + } else { + mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation; } - + } + #if TARGET_CARBON - c2pstrcpy((StringPtr)mNavOptions.message, m_message) ; + c2pstrcpy((StringPtr)mNavOptions.message, m_message) ; #else - strcpy((char *)mNavOptions.message, m_message) ; - c2pstr((char *)mNavOptions.message ) ; + strcpy((char *)mNavOptions.message, m_message) ; + c2pstr((char *)mNavOptions.message ) ; #endif #if TARGET_CARBON - c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ; + c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ; #else - strcpy((char *)mNavOptions.savedFileName, m_fileName) ; - c2pstr((char *)mNavOptions.savedFileName ) ; + strcpy((char *)mNavOptions.savedFileName, m_fileName) ; + c2pstr((char *)mNavOptions.savedFileName ) ; #endif + // zero all data + + m_path = wxEmptyString ; + m_fileName = wxEmptyString ; + m_paths.Empty(); + m_fileNames.Empty(); - if ( m_dialogStyle & wxSAVE ) - { - - mNavOptions.dialogOptionFlags |= kNavNoTypePopup ; - mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ; - mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ; - - err = ::NavPutFile( - &mDefaultLocation, - &mNavReply, - &mNavOptions, - sStandardNavEventFilter , - 'TEXT', - 'TEXT', - 0L); // User Data - } - else - { - OpenUserDataRec myData; - MakeUserDataRec( &myData , m_wildCard ) ; - NavTypeListHandle typelist = NULL ; - - if ( myData.numfilters > 0 ) + OpenUserDataRec myData; + MakeUserDataRec( &myData , m_wildCard ) ; + myData.currentfilter = m_filterIndex ; + if ( myData.extensions.GetCount() > 0 ) + { + mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ; + myData.menuitems = mNavOptions.popupExtension ; + for ( int i = 0 ; i < myData.extensions.GetCount() ; ++i ) { - mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.numfilters ) ; - for ( int i = 0 ; i < myData.numfilters ; ++i ) { (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ; (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ; (*mNavOptions.popupExtension)[i].menuType = i ; @@ -443,73 +408,87 @@ int wxFileDialog::ShowModal() strcpy((char *)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ; c2pstr((char *)(*mNavOptions.popupExtension)[i].menuItemName ) ; #endif - } - } - - mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ; - if ( m_dialogStyle & wxMULTIPLE ) - mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ; - else - mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ; - - err = ::NavGetFile( - &mDefaultLocation, - &mNavReply, - &mNavOptions, - sStandardNavEventFilter , - mNavPreviewUPP, - mNavFilterUPP, - typelist /*inFileTypes.TypeListHandle() */, - &myData); // User Data - if ( typelist ) - DisposeHandle( (Handle) typelist ) ; - } + } + } + if ( m_dialogStyle & wxSAVE ) + { + myData.saveMode = true ; + mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ; + mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ; - DisposeNavObjectFilterUPP(mNavFilterUPP); - if ( mDefaultLocation.dataHandle != nil ) + err = ::NavPutFile( + &mDefaultLocation, + &mNavReply, + &mNavOptions, + sStandardNavEventFilter , + NULL, + kNavGenericSignature, + &myData); // User Data + m_filterIndex = myData.currentfilter ; + } + else + { + myData.saveMode = false ; + mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ; + if ( m_dialogStyle & wxMULTIPLE ) + mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ; + else + mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ; + + err = ::NavGetFile( + &mDefaultLocation, + &mNavReply, + &mNavOptions, + sStandardNavEventFilter , + mNavPreviewUPP, + mNavFilterUPP, + NULL , + &myData); + m_filterIndex = myData.currentfilter ; + } + + DisposeNavObjectFilterUPP(mNavFilterUPP); + if ( mDefaultLocation.dataHandle != nil ) + { + ::AEDisposeDesc(&mDefaultLocation); + } + + if ( (err != noErr) && (err != userCanceledErr) ) { + return wxID_CANCEL ; + } + if (mNavReply.validRecord) { + + FSSpec outFileSpec ; + AEDesc specDesc ; + AEKeyword keyWord ; + + long count ; + ::AECountItems( &mNavReply.selection , &count ) ; + for ( long i = 1 ; i <= count ; ++i ) { - ::AEDisposeDesc(&mDefaultLocation); - } - - if ( (err != noErr) && (err != userCanceledErr) ) { - m_path = "" ; - return wxID_CANCEL ; - } - - if (mNavReply.validRecord) { - - FSSpec outFileSpec ; - AEDesc specDesc ; - AEKeyword keyWord ; - - long count ; - ::AECountItems( &mNavReply.selection , &count ) ; - for ( long i = 1 ; i <= count ; ++i ) - { - OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc); - if ( err != noErr ) { - m_path = "" ; - return wxID_CANCEL ; - } - outFileSpec = **(FSSpec**) specDesc.dataHandle; - if (specDesc.dataHandle != nil) { - ::AEDisposeDesc(&specDesc); - } - m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; - m_paths.Add( m_path ) ; - m_fileName = wxFileNameFromPath(m_path); - m_fileNames.Add(m_fileName); - } - // set these to the first hit - m_path = m_paths[ 0 ] ; + OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc); + if ( err != noErr ) { + m_path = "" ; + return wxID_CANCEL ; + } + outFileSpec = **(FSSpec**) specDesc.dataHandle; + if (specDesc.dataHandle != nil) { + ::AEDisposeDesc(&specDesc); + } + m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; + m_paths.Add( m_path ) ; m_fileName = wxFileNameFromPath(m_path); - m_dir = wxPathOnly(m_path); - NavDisposeReply( &mNavReply ) ; - return wxID_OK ; - } - return wxID_CANCEL; + m_fileNames.Add(m_fileName); + } + // set these to the first hit + m_path = m_paths[ 0 ] ; + m_fileName = wxFileNameFromPath(m_path); + m_dir = wxPathOnly(m_path); + NavDisposeReply( &mNavReply ) ; + return wxID_OK ; + } + return wxID_CANCEL; } - // Generic file load/save dialog static wxString wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) @@ -523,14 +502,11 @@ wxDefaultFileSelector(bool load, const char *what, const char *extension, const else str = "Save %s file"; sprintf(prompt, wxGetTranslation(str), what); - if (*ext == '.') ext++; char wild[60]; sprintf(wild, "*.%s", ext); - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); } - // Generic file load dialog wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) @@ -538,12 +514,9 @@ wxLoadFileSelector(const char *what, const char *extension, const char *default_ return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); } - // Generic file save dialog wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) { return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - +} \ No newline at end of file diff --git a/src/mac/carbon/files.lst b/src/mac/carbon/files.lst index 009570dcbb..2d26d23708 100644 --- a/src/mac/carbon/files.lst +++ b/src/mac/carbon/files.lst @@ -271,7 +271,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -440,6 +439,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -621,7 +621,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -665,7 +665,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -953,7 +952,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/mac/carbon/font.cpp b/src/mac/carbon/font.cpp index eec71c52ee..d1b4798cc4 100644 --- a/src/mac/carbon/font.cpp +++ b/src/mac/carbon/font.cpp @@ -89,6 +89,10 @@ void wxFontRefData::MacFindFont() ::GetFNum( "\pMonaco" , &m_macFontNum) ; break ; } + Str255 name ; + GetFontName( m_macFontNum , name ) ; + CopyPascalStringToC( name , (char*) name ) ; + m_faceName = (char*) name ; } else { diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index 4d83421744..7f1860a837 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -231,9 +231,35 @@ void wxFrame::OnActivate(wxActivateEvent& event) { m_frameMenuBar->MacInstallMenuBar() ; } + else if (wxTheApp->GetTopWindow() && wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame))) + { + // Trying toplevel frame menbar + if( ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar() ) + ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar()->MacInstallMenuBar(); + } } } +void wxFrame::DetachMenuBar() +{ + if ( m_frameMenuBar ) + { + m_frameMenuBar->UnsetInvokingWindow(); + } + + wxFrameBase::DetachMenuBar(); +} + +void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) +{ + wxFrameBase::AttachMenuBar(menuBar); + + if (m_frameMenuBar) + { + m_frameMenuBar->SetInvokingWindow( this ); + } +} + void wxFrame::DoGetClientSize(int *x, int *y) const { wxWindow::DoGetClientSize( x , y ) ; diff --git a/src/mac/carbon/gsocket.c b/src/mac/carbon/gsocket.c index b96cd92358..f3985aee92 100644 --- a/src/mac/carbon/gsocket.c +++ b/src/mac/carbon/gsocket.c @@ -36,7 +36,7 @@ #include #include #endif -#if TARGET_CARBON +#if TARGET_CARBON && !defined(OTAssert) #define OTAssert( str , cond ) /* does not exists in Carbon */ #endif @@ -87,6 +87,7 @@ extern pascal void OTDebugStr(const char* str); #endif InetSvcRef gInetSvcRef = 0 ; int gOTInited = 0 ; +OTNotifyUPP gOTNotifierUPP = NULL ; OSStatus DoNegotiateIPReuseAddrOption(EndpointRef ep, Boolean enableReuseIPMode); @@ -185,7 +186,7 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data ) junk = OTSetBlocking(ep); OTAssert("SetDefaultEndpointModes: Could not set blocking", junk == noErr); */ - junk = OTInstallNotifier(ep, OTInetEventHandler, data); + junk = OTInstallNotifier(ep, gOTNotifierUPP, data); OTAssert("SetDefaultEndpointModes: Could not install notifier", junk == noErr); /* junk = OTUseSyncIdleEvents(ep, true); @@ -229,6 +230,7 @@ int GSocket_Verify_Inited() OTAssert("Could not open Inet Services", err == noErr); return FALSE ; } + gOTNotifierUPP = NewOTNotifyUPP( OTInetEventHandler ) ; return TRUE ; } @@ -243,6 +245,8 @@ void GSocket_Cleanup() #else CloseOpenTransport() ; #endif + if ( gOTNotifierUPP ) + DisposeOTNotifyUPP( gOTNotifierUPP ) ; } } diff --git a/src/mac/carbon/listbox.cpp b/src/mac/carbon/listbox.cpp index 8c2e856246..120a417fbf 100644 --- a/src/mac/carbon/listbox.cpp +++ b/src/mac/carbon/listbox.cpp @@ -105,16 +105,34 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect ClipRect( drawRect ); EraseRect( drawRect ); + wxFontRefData * font = (wxFontRefData*) list->GetFont().GetRefData() ; + + if ( font ) + { + ::TextFont( font->m_macFontNum ) ; + ::TextSize( short(font->m_macFontSize) ) ; + ::TextFace( font->m_macFontStyle ) ; + } + else + { + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + } + #if TARGET_CARBON bool useDrawThemeText = ( DrawThemeTextBox != (void*) kUnresolvedCFragSymbolAddress ) ; if ( useDrawThemeText ) { Rect frame = { drawRect->top, drawRect->left + 4, - drawRect->top + kwxMacListItemHeight, drawRect->right} ; - CFStringRef mString = CFStringCreateWithBytes( NULL , (UInt8*) text.c_str(), text.Length(), CFStringGetSystemEncoding(), false ) ; + drawRect->top + kwxMacListItemHeight, drawRect->right + 10000 } ; + CFStringRef sString = CFStringCreateWithBytes( NULL , (UInt8*) text.c_str(), text.Length(), CFStringGetSystemEncoding(), false ) ; + CFMutableStringRef mString = CFStringCreateMutableCopy( NULL , 0 , sString ) ; + CFRelease( sString ) ; + ::TruncateThemeText( mString , kThemeCurrentPortFont, kThemeStateActive, drawRect->right - drawRect->left , truncEnd , NULL ) ; ::DrawThemeTextBox( mString, - kThemeViewsFont, + kThemeCurrentPortFont, kThemeStateActive, false, &frame, @@ -126,9 +144,6 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect #endif { MoveTo(drawRect->left + 4 , drawRect->top + 10 ); - ::TextFont( kFontIDMonaco ) ; - ::TextSize( 9 ); - ::TextFace( 0 ) ; DrawText(text, 0 , text.Length()); } @@ -166,7 +181,9 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect } extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ; +// resources ldef ids const short kwxMacListWithVerticalScrollbar = 128 ; +const short kwxMacListWithVerticalAndHorizontalScrollbar = 129 ; // ============================================================================ // list box control implementation @@ -206,11 +223,24 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, } listDef.u.userProc = macListDefUPP ; + Str255 fontName ; + SInt16 fontSize ; + Style fontStyle ; + SInt16 fontNum ; +#if TARGET_CARBON + GetThemeFont(kThemeViewsFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; +#else + GetFontName( kFontIDMonaco , fontName ) ; + fontSize = 9 ; + fontStyle = normal ; +#endif + CopyPascalStringToC( fontName , (char*) fontName ) ; + SetFont( wxFont (fontSize, wxSWISS, wxNORMAL, wxNORMAL , false , fontName ) ) ; #if TARGET_CARBON Size asize; - CreateListBoxControl( MAC_WXHWND(parent->MacGetRootWindow()), &bounds, false, 0, 1, false, true, + CreateListBoxControl( MAC_WXHWND(parent->MacGetRootWindow()), &bounds, false, 0, 1, (style & wxLB_HSCROLL), true, kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, (ControlRef *)&m_macControl ); GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag, @@ -224,8 +254,8 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, long result ; wxStAppResource resload ; m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , - kwxMacListWithVerticalScrollbar , 0 , 0, - kControlListBoxProc , (long) this ) ; + (style & wxLB_HSCROLL) ? kwxMacListWithVerticalAndHorizontalScrollbar : kwxMacListWithVerticalScrollbar , + 0 , 0, kControlListBoxProc , (long) this ) ; ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag , sizeof( ListHandle ) , (char*) &m_macList , &result ) ; @@ -255,17 +285,17 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, } else { - options = lOnlyOne ; + options = (OptionBits) lOnlyOne ; } SetListSelectionFlags((ListHandle)m_macList, options); - MacPostControlCreate() ; - for ( int i = 0 ; i < n ; i++ ) { Append( choices[i] ) ; } + MacPostControlCreate() ; + LSetDrawingMode( true , (ListHandle)m_macList ) ; return TRUE; @@ -616,7 +646,49 @@ void wxListBox::SetString(int N, const wxString& s) wxSize wxListBox::DoGetBestSize() const { - return wxSize(100, 100); + int lbWidth = 100; // some defaults + int lbHeight = 110; + int wLine; + + { + wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetRootWindow() ) ) ; + Rect drawRect ; + + wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; + + if ( font ) + { + ::TextFont( font->m_macFontNum ) ; + ::TextSize( short(font->m_macFontSize) ) ; + ::TextFace( font->m_macFontStyle ) ; + } + else + { + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + } + + // Find the widest line + for(int i = 0; i < GetCount(); i++) { + wxString str(GetString(i)); + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; + lbWidth = wxMax(lbWidth, wLine); + } + + // Add room for the scrollbar + lbWidth += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X); + + // And just a bit more + int cy = 12 ; + int cx = ::TextWidth( "X" , 0 , 1 ) ; + lbWidth += cx ; + + // don't make the listbox too tall (limit height to around 10 items) but don't + // make it too small neither + lbHeight = (cy+4) * wxMin(wxMax(GetCount(), 3), 10); + } + return wxSize(lbWidth, lbHeight); } int wxListBox::GetCount() const @@ -661,6 +733,7 @@ wxOwnerDrawn *wxListBox::CreateItem(size_t n) // list box control implementation // ============================================================================ +/* void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) { wxListBox* list; @@ -675,7 +748,7 @@ void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refC DrawText(text, 0 , text.Length()); } - +*/ void wxListBox::MacDelete( int N ) { LDelRow( 1 , N , (ListHandle)m_macList) ; diff --git a/src/mac/carbon/menu.cpp b/src/mac/carbon/menu.cpp index caadf18ce3..d0ba511b85 100644 --- a/src/mac/carbon/menu.cpp +++ b/src/mac/carbon/menu.cpp @@ -28,6 +28,7 @@ #include "wx/window.h" #include "wx/log.h" #include "wx/utils.h" +#include "wx/frame.h" #include "wx/mac/uma.h" @@ -50,7 +51,8 @@ const short kwxMacAppleMenuId = 1 ; // ============================================================================ // implementation // ============================================================================ - +static void wxMenubarUnsetInvokingWindow( wxMenu *menu ) ; +static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win ); // Menus @@ -193,6 +195,12 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) { UMAInsertSubMenuItem(MAC_WXHMENU(m_hMenu), label , pos, pSubMenu->m_macMenuId); } + + // if adding a submenu to a menu already existing in the menu bar, we + // must set invoking window to allow processing events from this + // submenu + if ( m_invokingWindow ) + wxMenubarSetInvokingWindow(pSubMenu, m_invokingWindow); } else { @@ -209,10 +217,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) if ( pos == (size_t)-1 ) { UMAAppendMenuItem(MAC_WXHMENU(m_hMenu), label,key,modifiers); + SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , CountMenuItems(MAC_WXHMENU(m_hMenu)) , pItem->GetId() ) ; if ( pItem->GetBitmap().Ok() ) { ControlButtonContentInfo info ; - wxMacCreateBitmapButton( &info , pItem->GetBitmap() , true ) ; + wxMacCreateBitmapButton( &info , pItem->GetBitmap() , kControlContentCIconHandle ) ; if ( info.contentType != kControlNoContent ) { if ( info.contentType == kControlContentCIconHandle ) @@ -225,10 +234,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) else { UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), label , pos,key,modifiers); + SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , pos , pItem->GetId() ) ; if ( pItem->GetBitmap().Ok() ) { ControlButtonContentInfo info ; - wxMacCreateBitmapButton( &info , pItem->GetBitmap() , true ) ; + wxMacCreateBitmapButton( &info , pItem->GetBitmap() , kControlContentCIconHandle ) ; if ( info.contentType != kControlNoContent ) { if ( info.contentType == kControlContentCIconHandle ) @@ -429,114 +439,6 @@ void wxMenu::MacEnableMenu( bool bDoEnable ) ::DrawMenuBar() ; } -bool wxMenu::MacMenuSelect( wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum ) -{ - int pos; - wxNode *node; - - if ( m_macMenuId == macMenuId ) - { - node = GetMenuItems().Nth(macMenuItemNum-1); - if (node) - { - wxMenuItem *pItem = (wxMenuItem*)node->Data(); - - if (pItem->IsCheckable()) - pItem->Check(! pItem->IsChecked()); - - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, pItem->GetId()); - event.m_timeStamp = when; - event.SetEventObject(handler); - event.SetInt( pItem->GetId() ); - { - bool processed = false ; - -#if WXWIN_COMPATIBILITY - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } -#endif - // Try the menu's event handler - if ( !processed && handler) - { - processed = handler->ProcessEvent(event); - } - - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->GetEventHandler()->ProcessEvent(event); - } - return true ; - } - } - else if ( macMenuId == kHMHelpMenuID ) - { - int menuItem = firstUserHelpMenuItem-1 ; - for (pos = 0, node = GetMenuItems().First(); node; node = node->Next(), pos++) - { - wxMenuItem * pItem = (wxMenuItem *) node->Data() ; - - wxMenu *pSubMenu = pItem->GetSubMenu() ; - if ( pSubMenu != NULL ) - { - } - else - { - if ( pItem->GetId() != wxApp::s_macAboutMenuItemId ) - ++menuItem ; - - if ( menuItem == macMenuItemNum ) - { - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, pItem->GetId()); - event.m_timeStamp = when; - event.SetEventObject(handler); - event.SetInt( pItem->GetId() ); - { - bool processed = false ; -#if WXWIN_COMPATIBILITY - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } -#endif - // Try the menu's event handler - if ( !processed && handler) - { - processed = handler->ProcessEvent(event); - } - - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->GetEventHandler()->ProcessEvent(event); - } - return true ; - } - } - } - } - - for (pos = 0, node = GetMenuItems().First(); node; node = node->Next(), pos++) - { - wxMenuItem * pItem = (wxMenuItem *) node->Data() ; - - wxMenu *pSubMenu = pItem->GetSubMenu() ; - if ( pSubMenu != NULL ) - { - if ( pSubMenu->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) - return true ; - } - } - - return false ; -} - // Menu Bar /* @@ -562,6 +464,7 @@ void wxMenuBar::Init() { m_eventHandler = this; m_menuBarFrame = NULL; + m_invokingWindow = (wxWindow*) NULL; } wxMenuBar::wxMenuBar() @@ -662,91 +565,104 @@ void wxMenuBar::MacInstallMenuBar() } #endif + // clean-up the help menu before adding new items + MenuHandle mh = NULL ; + if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) == noErr ) + { + for ( int i = CountMenuItems( mh ) ; i >= firstUserHelpMenuItem ; --i ) + { + DeleteMenuItem( mh , i ) ; + } + } + else + { + mh = NULL ; + } + + for (size_t i = 0; i < m_menus.GetCount(); i++) { - Str255 label; - wxNode *node; - wxMenuItem *item; - int pos ; - wxMenu* menu = m_menus[i] , *subMenu = NULL ; - - if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) - { - MenuHandle mh = NULL ; - if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) != noErr ) - { - continue ; - } + Str255 label; + wxNode *node; + wxMenuItem *item; + int pos ; + wxMenu* menu = m_menus[i] , *subMenu = NULL ; - for ( int i = CountMenuItems( mh ) ; i >= firstUserHelpMenuItem ; --i ) - { - DeleteMenuItem( mh , i ) ; - } - - for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) - { - item = (wxMenuItem *)node->Data(); - subMenu = item->GetSubMenu() ; - if (subMenu) + if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) + { + if ( mh == NULL ) + { + continue ; + } + + for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) + { + item = (wxMenuItem *)node->Data(); + subMenu = item->GetSubMenu() ; + if (subMenu) + { + // we don't support hierarchical menus in the help menu yet + } + else + { + if ( item->IsSeparator() ) { - // we don't support hierarchical menus in the help menu yet + if ( mh ) + MacAppendMenu(mh, "\p-" ); } - else + else { - if ( item->IsSeparator() ) + Str255 label ; + UInt8 modifiers ; + SInt16 key ; + wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu + if ( label[0] == 0 ) { - if ( mh ) - MacAppendMenu(mh, "\p-" ); + // we cannot add empty menus on mac + label[0] = 1 ; + label[1] = ' ' ; } + if ( item->GetId() == wxApp::s_macAboutMenuItemId ) + { + ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); + UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); + SetMenuItemCommandID( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetId() ) ; + } else { - Str255 label ; - UInt8 modifiers ; - SInt16 key ; - wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu - if ( label[0] == 0 ) + if ( mh ) { - // we cannot add empty menus on mac - label[0] = 1 ; - label[1] = ' ' ; - } - if ( item->GetId() == wxApp::s_macAboutMenuItemId ) - { - ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); - UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); - } - else - { - if ( mh ) - UMAAppendMenuItem(mh, label , key , modifiers ); + UMAAppendMenuItem(mh, label , key , modifiers ); + SetMenuItemCommandID( mh , CountMenuItems(mh) , item->GetId() ) ; } } } } } - else - { - wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false ); - UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , label ) ; - wxArrayPtrVoid submenus ; - - for (pos = 0, node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) - { - item = (wxMenuItem *)node->Data(); - subMenu = item->GetSubMenu() ; - if (subMenu) - { - submenus.Add(subMenu) ; - } - } - ::InsertMenu(MAC_WXHMENU(m_menus[i]->GetHMenu()), 0); - for ( size_t i = 0 ; i < submenus.GetCount() ; ++i ) + } + else + { + wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false ); + UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , label ) ; + wxArrayPtrVoid submenus ; + + for (pos = 0, node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) + { + item = (wxMenuItem *)node->Data(); + subMenu = item->GetSubMenu() ; + if (subMenu) { - wxMenu* submenu = (wxMenu*) submenus[i] ; - wxNode *subnode; - wxMenuItem *subitem; - int subpos ; - for ( subpos = 0 , subnode = submenu->GetMenuItems().First(); subnode; subnode = subnode->Next(), subpos++) + submenus.Add(subMenu) ; + } + } + ::InsertMenu(MAC_WXHMENU(m_menus[i]->GetHMenu()), 0); + for ( size_t i = 0 ; i < submenus.GetCount() ; ++i ) + { + wxMenu* submenu = (wxMenu*) submenus[i] ; + wxNode *subnode; + wxMenuItem *subitem; + int subpos ; + for ( subpos = 0 , subnode = submenu->GetMenuItems().First(); subnode; subnode = subnode->Next(), subpos++) { subitem = (wxMenuItem *)subnode->Data(); wxMenu* itsSubMenu = subitem->GetSubMenu() ; @@ -755,11 +671,11 @@ void wxMenuBar::MacInstallMenuBar() submenus.Add(itsSubMenu) ; } } - ::InsertMenu( MAC_WXHMENU(submenu->GetHMenu()) , -1 ) ; - } - } + ::InsertMenu( MAC_WXHMENU(submenu->GetHMenu()) , -1 ) ; + } } - ::DrawMenuBar() ; + } + ::DrawMenuBar() ; s_macInstalledMenuBar = this; } @@ -900,44 +816,6 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title) return TRUE; } -void wxMenuBar::MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum) -{ - // first scan fast for direct commands, i.e. menus which have these commands directly in their own list - - if ( macMenuId == kwxMacAppleMenuId && macMenuItemNum == 1 ) - { - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, wxApp::s_macAboutMenuItemId ); - event.m_timeStamp = when; - event.SetEventObject(handler); - event.SetInt( wxApp::s_macAboutMenuItemId ); - handler->ProcessEvent(event); - } - else - { - for (size_t i = 0; i < m_menus.GetCount() ; i++) - { - if ( m_menus[i]->MacGetMenuId() == macMenuId || ( macMenuId == kHMHelpMenuID && ( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) ) ) - { - if ( m_menus[i]->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) - return ; - else - { - //TODO flag this as an error since it must contain the item - return ; - } - } - } - - for (size_t i = 0; i < m_menus.GetCount(); i++) - { - if ( m_menus[i]->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) - { - break ; - } - } - } -} - wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); @@ -1001,9 +879,66 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title) Refresh(); } + // m_invokingWindow is set after wxFrame::SetMenuBar(). This call enables + // adding menu later on. + if (m_invokingWindow) + wxMenubarSetInvokingWindow( menu, m_invokingWindow ); + return TRUE; } +static void wxMenubarUnsetInvokingWindow( wxMenu *menu ) +{ + menu->SetInvokingWindow( (wxWindow*) NULL ); + + wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); + while (node) + { + wxMenuItem *menuitem = node->GetData(); + if (menuitem->IsSubMenu()) + wxMenubarUnsetInvokingWindow( menuitem->GetSubMenu() ); + node = node->GetNext(); + } +} + +static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win ) +{ + menu->SetInvokingWindow( win ); + + wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); + while (node) + { + wxMenuItem *menuitem = node->GetData(); + if (menuitem->IsSubMenu()) + wxMenubarSetInvokingWindow( menuitem->GetSubMenu() , win ); + node = node->GetNext(); + } +} + +void wxMenuBar::UnsetInvokingWindow() +{ + m_invokingWindow = (wxWindow*) NULL; + wxMenuList::Node *node = m_menus.GetFirst(); + while (node) + { + wxMenu *menu = node->GetData(); + wxMenubarUnsetInvokingWindow( menu ); + node = node->GetNext(); + } +} + +void wxMenuBar::SetInvokingWindow(wxFrame *frame) +{ + m_invokingWindow = frame; + wxMenuList::Node *node = m_menus.GetFirst(); + while (node) + { + wxMenu *menu = node->GetData(); + wxMenubarSetInvokingWindow( menu, frame ); + node = node->GetNext(); + } +} + void wxMenuBar::Detach() { wxMenuBarBase::Detach() ; @@ -1012,7 +947,6 @@ void wxMenuBar::Detach() void wxMenuBar::Attach(wxFrame *frame) { wxMenuBarBase::Attach( frame ) ; - #if wxUSE_ACCEL RebuildAccelTable(); #endif // wxUSE_ACCEL diff --git a/src/mac/carbon/menuitem.cpp b/src/mac/carbon/menuitem.cpp index 544bfd6004..6c41427f76 100644 --- a/src/mac/carbon/menuitem.cpp +++ b/src/mac/carbon/menuitem.cpp @@ -46,7 +46,7 @@ int wxMenuItem::MacBuildMenuString(StringPtr outMacItemText, SInt16 *outMacShort { char *p = (char *) &outMacItemText[1] ; short macModifiers = 0 ; - char macShortCut = 0 ; + SInt16 macShortCut = 0 ; const char *inItemName ; wxString inItemTextMac ; @@ -72,31 +72,6 @@ int wxMenuItem::MacBuildMenuString(StringPtr outMacItemText, SInt16 *outMacShort { switch ( *inItemName ) { - // special characters for macintosh menus -> use some replacement - case ';' : - *p++ = ',' ; - break ; - case '^' : - *p++ = ' ' ; - break ; - case '!' : - *p++ = ' ' ; - break ; - case '<' : - *p++ = '[' ; - break ; - case '>' : - *p++ = ']' ; - break ; - case '/' : - *p++ = '|' ; - break ; - case '(' : - *p++ = '[' ; - break ; - case ')' : - *p++ = ']' ; - break ; // shortcuts case '&' : { @@ -115,43 +90,71 @@ int wxMenuItem::MacBuildMenuString(StringPtr outMacItemText, SInt16 *outMacShort case '\t' : { ++inItemName ; - while( *inItemName ) + bool skip = false ; + bool explicitCommandKey = false ; + while( *inItemName && !skip ) { - if (strncmp("Ctrl", inItemName, 4) == 0) + if (wxStrnicmp("Ctrl", inItemName, 4) == 0) { inItemName = inItemName + 5; - macShortCut = *inItemName; + explicitCommandKey = true ; } - else if (strncmp("Cntrl", inItemName, 5) == 0) + else if (wxStrnicmp("Cntrl", inItemName, 5) == 0) { inItemName = inItemName + 6; - macShortCut = *inItemName; + explicitCommandKey = true ; } - else if (strncmp("Alt", inItemName, 3) == 0) + else if (wxStrnicmp("Alt", inItemName, 3) == 0) { inItemName = inItemName + 4; macModifiers |= kMenuOptionModifier ; - macShortCut = *inItemName ; } - else if (strncmp("Shift", inItemName, 5) == 0) + else if (wxStrnicmp("Shift", inItemName, 5) == 0) { inItemName = inItemName + 6; macModifiers |= kMenuShiftModifier ; - macShortCut = *inItemName ; - } - else if (strncmp("F", inItemName, 1) == 0) - { - inItemName += strlen( inItemName ) ; - // no function keys at the moment - // macModifiers |= kMenuShiftModifier ; - // macShortCut = *inItemName ; } else { - break ; + skip = true ; } } - + if ( *inItemName ) + { + if ( strlen(inItemName) == 1 ) + { + macShortCut = *inItemName; + } + else if ( !wxStricmp( inItemName , "Delete" ) || !wxStricmp( inItemName , "Del" ) ) + { + macShortCut = WXK_DELETE ; + } + else if ( !wxStricmp( inItemName , "Back" ) || !wxStricmp( inItemName , "Backspace" ) ) + { + macShortCut = WXK_BACK ; + } + else if ( !wxStricmp( inItemName , "Return" ) ) + { + macShortCut = WXK_RETURN ; + } + else if ( !wxStricmp( inItemName , "Enter" ) ) + { + macShortCut = kEnterCharCode ; + } + else if ( *inItemName == 'F' ) + { + int fkey = atol(inItemName+1) ; + if (fkey >= 1 && fkey < 15 ) + { + macShortCut = WXK_F1 + fkey - 1 ; + } + if ( !explicitCommandKey ) + macModifiers |= kMenuNoCommandModifier ; + } + } + + inItemName += strlen( inItemName ) ; + if ( *inItemName == 0 ) --inItemName ; diff --git a/src/mac/carbon/notebmac.cpp b/src/mac/carbon/notebmac.cpp index 7c72298654..4f590e8b6c 100644 --- a/src/mac/carbon/notebmac.cpp +++ b/src/mac/carbon/notebmac.cpp @@ -132,8 +132,17 @@ bool wxNotebook::Create(wxWindow *parent, MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; + int tabstyle = kControlTabSmallNorthProc ; + if ( HasFlag(wxNB_LEFT) ) + tabstyle = kControlTabSmallWestProc ; + else if ( HasFlag( wxNB_RIGHT ) ) + tabstyle = kControlTabSmallEastProc ; + else if ( HasFlag( wxNB_BOTTOM ) ) + tabstyle = kControlTabSmallSouthProc ; + + m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1, - kControlTabSmallProc , (long) this ) ; + tabstyle , (long) this ) ; MacPostControlCreate() ; return TRUE ; @@ -207,6 +216,7 @@ int wxNotebook::SetSelection(int nPage) ChangePage(m_nSelection, nPage); SetControl32BitValue( (ControlHandle) m_macControl , m_nSelection + 1 ) ; + Refresh(); return m_nSelection; } @@ -233,7 +243,7 @@ int wxNotebook::GetPageImage(int nPage) const { wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, _T("invalid notebook page") ); - return 0 ; + return m_images[nPage]; } bool wxNotebook::SetPageImage(int nPage, int nImage) @@ -243,7 +253,17 @@ bool wxNotebook::SetPageImage(int nPage, int nImage) wxCHECK_MSG( m_imageList && nImage < m_imageList->GetImageCount(), FALSE, _T("invalid image index in SetPageImage()") ); - return FALSE; + if ( nImage != m_images[nPage] ) + { + // if the item didn't have an icon before or, on the contrary, did have + // it but has lost it now, its size will change - but if the icon just + // changes, it won't + m_images[nPage] = nImage; + + MacSetupTabs() ; + } + + return TRUE; } // ---------------------------------------------------------------------------- @@ -295,6 +315,8 @@ bool wxNotebook::InsertPage(int nPage, // save the pointer to the page m_pages.Insert(pPage, nPage); + m_images.Insert(imageId, nPage); + MacSetupTabs(); if ( bSelect ) { @@ -332,7 +354,8 @@ void wxNotebook::MacSetupTabs() wxNotebookPage *page; ControlTabInfoRec info; - Boolean enabled = true; + + OSStatus err = noErr ; for(int ii = 0; ii < GetPageCount(); ii++) { page = m_pages[ii]; @@ -346,8 +369,35 @@ void wxNotebook::MacSetupTabs() #endif SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabInfoTag, sizeof( ControlTabInfoRec) , (char*) &info ) ; - SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabEnabledFlagTag, - sizeof( Boolean ), (Ptr)&enabled ); + SetTabEnabled( (ControlHandle) m_macControl , ii+1 , true ) ; + +#if TARGET_CARBON + if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 ) + { + // tab controls only support very specific types of images, therefore we are doing an odyssee + // accross the icon worlds (even Apple DTS did not find a shorter path) + // in order not to pollute the icon registry we put every icon into (OSType) 1 and immediately + // afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we + // unregister it) in case this will ever lead to having the same icon everywhere add some kind + // of static counter + ControlButtonContentInfo info ; + wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ; + IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ; + err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ; + wxASSERT_MSG( err == noErr , "Error when adding bitmap" ) ; + IconRef iconRef ; + err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ; + wxASSERT_MSG( err == noErr , "Error when adding bitmap" ) ; + info.contentType = kControlContentIconRef ; + info.u.iconRef = iconRef ; + SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag, + sizeof( info ), (Ptr)&info ); + wxASSERT_MSG( err == noErr , "Error when setting icon on tab" ) ; + UnregisterIconRef( 'WXNG' , (OSType) 1 ) ; + ReleaseIconRef( iconRef ) ; + DisposeHandle( (Handle) iconFamily ) ; + } +#endif } Rect bounds; GetControlBounds((ControlHandle)m_macControl, &bounds); diff --git a/src/mac/carbon/printdlg.cpp b/src/mac/carbon/printdlg.cpp index ec13b97455..1b18c1d49b 100644 --- a/src/mac/carbon/printdlg.cpp +++ b/src/mac/carbon/printdlg.cpp @@ -104,11 +104,8 @@ int wxPrintDialog::ShowModal() ::UMAPrClose(NULL) ; #else #if PM_USE_SESSION_APIS - PMPrintSession macPrintSession = kPMNoReference; Boolean accepted; - err = ::UMAPrOpen(&macPrintSession) ; - if ( err == noErr ) { m_printDialogData.ConvertToNative() ; @@ -123,13 +120,13 @@ int wxPrintDialog::ShowModal() if ((err == noErr) && (m_printDialogData.GetPrintData().m_macPageFormat != kPMNoPageFormat)) { - err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession, + err = PMSessionDefaultPageFormat((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat); } } else { - err = PMSessionValidatePageFormat((PMPrintSession)macPrintSession, + err = PMSessionValidatePageFormat((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat, kPMDontWantBoolean); } @@ -145,13 +142,13 @@ int wxPrintDialog::ShowModal() if ((err == noErr) && (m_printDialogData.GetPrintData().m_macPrintSettings != kPMNoPrintSettings)) { - err = PMSessionDefaultPrintSettings((PMPrintSession)macPrintSession, + err = PMSessionDefaultPrintSettings((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings); } } else { - err = PMSessionValidatePrintSettings((PMPrintSession)macPrintSession, + err = PMSessionValidatePrintSettings((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings, kPMDontWantBoolean); } @@ -165,7 +162,7 @@ int wxPrintDialog::ShowModal() // Display the Print dialog. if (err == noErr) { - err = PMSessionPrintDialog((PMPrintSession)macPrintSession, + err = PMSessionPrintDialog((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings, (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat, &accepted); @@ -186,7 +183,6 @@ int wxPrintDialog::ShowModal() wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } - ::UMAPrClose(&macPrintSession) ; #else #pragma warning "TODO: Printing for carbon without session apis" #endif @@ -256,11 +252,8 @@ int wxPageSetupDialog::ShowModal() ::UMAPrClose(NULL) ; #else #if PM_USE_SESSION_APIS - PMPrintSession macPrintSession = kPMNoReference; Boolean accepted; - err = ::UMAPrOpen(&macPrintSession) ; - if ( err == noErr ) { m_pageSetupData.ConvertToNative() ; @@ -275,13 +268,13 @@ int wxPageSetupDialog::ShowModal() if ((err == noErr) && (m_pageSetupData.GetPrintData().m_macPageFormat != kPMNoPageFormat)) { - err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession, + err = PMSessionDefaultPageFormat((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession, (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat); } } else { - err = PMSessionValidatePageFormat((PMPrintSession)macPrintSession, + err = PMSessionValidatePageFormat((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession, (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat, kPMDontWantBoolean); } @@ -289,7 +282,7 @@ int wxPageSetupDialog::ShowModal() // Display the Page Setup dialog. if (err == noErr) { - err = PMSessionPageSetupDialog((PMPrintSession)macPrintSession, + err = PMSessionPageSetupDialog((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession, (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat, &accepted); if ((err == noErr) && !accepted) @@ -312,7 +305,6 @@ int wxPageSetupDialog::ShowModal() wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } - ::UMAPrClose(&macPrintSession) ; #else #pragma warning "TODO: Printing for carbon without session apis" #endif diff --git a/src/mac/carbon/printmac.cpp b/src/mac/carbon/printmac.cpp index 33506c4548..1240fd6622 100644 --- a/src/mac/carbon/printmac.cpp +++ b/src/mac/carbon/printmac.cpp @@ -276,7 +276,7 @@ void wxMacPrintPreview::DetermineScaling(void) m_previewPrintout->SetPPIScreen( 72 , 72 ) ; m_previewPrintout->SetPPIPrinter( 72 , 72 ) ; - m_previewPrintout->SetPageSizeMM( 8 * 25.6 , 11 * 25.6 ) ; + m_previewPrintout->SetPageSizeMM( (int) (8.0 * 25.6), (int) (11.0 * 25.6) ); m_previewPrintout->SetPageSizePixels( 8 * 72 , 11 * 72 ) ; m_pageWidth = 8 * 72 ; m_pageHeight = 11 * 72 ; @@ -295,7 +295,10 @@ void wxMacPrintPreview::DetermineScaling(void) m_pageWidth = x ; m_pageHeight = y ; m_isOk = true ; - + } + else + { + m_isOk = false ; } // At 100%, the page should look about page-size on the screen. // m_previewScale = (float)((float)screenWidth/(float)printerWidth); diff --git a/src/mac/carbon/scrolbar.cpp b/src/mac/carbon/scrolbar.cpp index 9073f70995..68d403ae26 100644 --- a/src/mac/carbon/scrolbar.cpp +++ b/src/mac/carbon/scrolbar.cpp @@ -140,7 +140,7 @@ void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart scrollEvent = wxEVT_SCROLL_THUMBTRACK; break ; default : - wxLogError(_("illegal scrollbar selector %d"), controlpart); + wxFAIL_MSG(wxT("illegal scrollbar selector")); break ; } diff --git a/src/mac/carbon/statbrma.cpp b/src/mac/carbon/statbrma.cpp index 59f6573dae..c06702058d 100644 --- a/src/mac/carbon/statbrma.cpp +++ b/src/mac/carbon/statbrma.cpp @@ -94,53 +94,42 @@ void wxStatusBarMac::SetStatusText(const wxString& text, int number) m_statusStrings[number] = text; wxRect rect; GetFieldRect(number, rect); + rect.y=0; + rect.height = m_height ; Refresh( TRUE , &rect ) ; - /* - // TODO make clear work again also when using themes - wxClientDC dc(this); - dc.SetBackground( wxBrush(GetBackgroundColour(), wxSOLID) ); - dc.SetClippingRegion( rect.x+1, rect.y+1, rect.width-1, rect.height-1 ); - dc.Clear(); - dc.DestroyClippingRegion(); - DrawFieldText( dc, number ); - */ - } void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) ) { wxPaintDC dc(this); - - if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) ) - { - wxPen black( wxBLACK , 1 , wxSOLID ) ; - wxPen white( wxWHITE , 1 , wxSOLID ) ; - - dc.SetPen(black); - dc.DrawLine(0, 0 , - m_width , 0); - dc.SetPen(white); - dc.DrawLine(0, 1 , - m_width , 1); - } - else - { - dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID)); - dc.DrawLine(0, 0 , - m_width , 0); - } + dc.Clear() ; - int i; - if ( GetFont().Ok() ) - dc.SetFont(GetFont()); - dc.SetBackgroundMode(wxTRANSPARENT); + if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) ) + { + wxPen black( wxBLACK , 1 , wxSOLID ) ; + wxPen white( wxWHITE , 1 , wxSOLID ) ; - for ( i = 0; i < m_nFields; i ++ ) - DrawField(dc, i); + dc.SetPen(black); + dc.DrawLine(0, 0 , + m_width , 0); + dc.SetPen(white); + dc.DrawLine(0, 1 , + m_width , 1); + } + else + { + dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID)); + dc.DrawLine(0, 0 , + m_width , 0); + } -# ifdef __WXMSW__ - dc.SetFont(wxNullFont); -# endif // MSW + int i; + if ( GetFont().Ok() ) + dc.SetFont(GetFont()); + dc.SetBackgroundMode(wxTRANSPARENT); + + for ( i = 0; i < m_nFields; i ++ ) + DrawField(dc, i); } void wxStatusBarMac::MacSuperEnabled( bool enabled ) diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index 4f8d67ae6d..8aea55ba4b 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -23,7 +23,14 @@ #else #include #endif -#include + +#if wxUSE_STD_IOSTREAM + #if wxUSE_IOSTREAMH + #include + #else + #include + #endif +#endif #include "wx/app.h" #include "wx/dc.h" @@ -209,7 +216,7 @@ static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart InvalWindowRect( GetControlOwner( theControl ) , &oldbounds ) ; SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); - SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , + SetRect(&varsp->fRTextArea, bounds.left + (varsp->fMultiline ? 0 : 2) , bounds.top + (varsp->fMultiline ? 0 : 2) , bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline); TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left, @@ -332,12 +339,18 @@ static pascal void TPPaneIdleProc(ControlHandle theControl) { RectRgn((theRgn = NewRgn()), &varsp->fRTextArea); TXNAdjustCursor(varsp->fTXNRec, theRgn); DisposeRgn(theRgn); - } else SetThemeCursor(kThemeArrowCursor); + } + else + { + // SetThemeCursor(kThemeArrowCursor); + } } else { /* if it's in our bounds, set the cursor */ GetControlBounds(theControl, &bounds); if (PtInRect(mousep, &bounds)) - SetThemeCursor(kThemeArrowCursor); + { + // SetThemeCursor(kThemeArrowCursor); + } } HSetState((Handle) tpvars, state); @@ -514,7 +527,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle ) GetControlBounds(theControl, &bounds); SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); - SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , + SetRect(&varsp->fRTextArea, bounds.left + (varsp->fMultiline ? 0 : 2) , bounds.top + (varsp->fMultiline ? 0 : 2) , bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); /* calculate the background region for the text. In this case, it's kindof and irregular region because we're setting the scroll bar a little ways inside @@ -529,29 +542,30 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle ) TXNFrameOptions frameOptions = kTXNDontDrawCaretWhenInactiveMask ; if ( ! ( wxStyle & wxTE_NOHIDESEL ) ) - frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ; - - if ( wxStyle & wxTE_MULTILINE ) - { - if ( ! ( wxStyle & wxTE_DONTWRAP ) ) - frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; - else - { - frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; - frameOptions |= kTXNWantHScrollBarMask ; - } - - if ( !(wxStyle & wxTE_NO_VSCROLL ) ) - frameOptions |= kTXNWantVScrollBarMask ; - } - else - frameOptions |= kTXNSingleLineOnlyMask ; - - if ( wxStyle & wxTE_READONLY ) - frameOptions |= kTXNReadOnlyMask ; + frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ; + + if ( wxStyle & wxTE_MULTILINE ) + { + if ( ! ( wxStyle & wxTE_DONTWRAP ) ) + frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; + else + { + // in case entry becomes impossible, remove the comment on the line below + // frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; + frameOptions |= kTXNWantHScrollBarMask ; + } + + if ( !(wxStyle & wxTE_NO_VSCROLL ) ) + frameOptions |= kTXNWantVScrollBarMask ; + } + else + frameOptions |= kTXNSingleLineOnlyMask ; + + if ( wxStyle & wxTE_READONLY ) + frameOptions |= kTXNReadOnlyMask ; TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea, - frameOptions , + frameOptions , kTXNTextEditStyleFrameType, kTXNTextensionFile, kTXNSystemDefaultEncoding, @@ -715,7 +729,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, /* create the control */ m_macControl = NewControl(MAC_WXHWND(parent->MacGetRootWindow()), &bounds, "\p", true, featurSet, 0, featurSet, kControlUserPaneProc, 0); /* set up the mUP specific features and data */ - mUPOpenControl((ControlHandle) m_macControl, m_windowStyle ); + mUPOpenControl((ControlHandle) m_macControl, m_windowStyle ); if ( parent ) { parent->MacGetTopLevelWindow()->MacInstallEventHandler() ; @@ -745,7 +759,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, m_macTXN = (**tpvars).fTXNRec ; m_macTXNvars = tpvars ; m_macUsesTXN = true ; - TXNSetSelection( (TXNObject) m_macTXN, 0, 0); + TXNSetSelection( (TXNObject) m_macTXN, 0, 0); TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart); } @@ -754,44 +768,53 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, wxString wxTextCtrl::GetValue() const { - Size actualsize; - + Size actualSize = 0; + wxString result ; + OSStatus err ; if ( !m_macUsesTXN ) { - ::GetControlData( (ControlHandle) m_macControl, 0, - ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, - 32767 , wxBuffer , &actualsize ) ; + err = ::GetControlDataSize((ControlHandle) m_macControl, 0, + ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, &actualSize ) ; + + if ( err ) + return wxEmptyString ; + + if ( actualSize > 0 ) + { + wxChar *ptr = result.GetWriteBuf(actualSize) ; + + ::GetControlData( (ControlHandle) m_macControl, 0, + ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, + actualSize , ptr , &actualSize ) ; + ptr[actualSize] = 0 ; + result.UngetWriteBuf(actualSize) ; + } + } else { Handle theText ; - OSStatus err = TXNGetDataEncoded( ((TXNObject) m_macTXN), kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); + err = TXNGetDataEncoded( ((TXNObject) m_macTXN), kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); // all done if ( err ) { - actualsize = 0 ; + actualSize = 0 ; } else { - actualsize = GetHandleSize( theText ) ; - if (actualsize != 0) - strncpy( wxBuffer , *theText , actualsize ) ; - DisposeHandle( theText ) ; + actualSize = GetHandleSize( theText ) ; + if ( actualSize > 0 ) + { + wxChar *ptr = result.GetWriteBuf(actualSize) ; + strncpy( ptr , *theText , actualSize ) ; + ptr[actualSize] = 0 ; + result.UngetWriteBuf( actualSize ) ; + } + DisposeHandle( theText ) ; } } - wxBuffer[actualsize] = 0 ; - - wxString value; - - if( wxApp::s_macDefaultEncodingIsPC ) - value = wxMacMakePCStringFromMac( wxBuffer ) ; - else - value = wxBuffer; - - value.Replace( "\r", "\n" ); - - return value; + return wxMacMakeStringFromMacString( result ) ; } void wxTextCtrl::GetSelection(long* from, long* to) const @@ -812,11 +835,13 @@ void wxTextCtrl::SetValue(const wxString& st) wxString value; if( wxApp::s_macDefaultEncodingIsPC ) + { value = wxMacMakeMacStringFromPC( st ) ; + // value.Replace( "\n", "\r" ); TODO this should be handled by the conversion + } else value = st; - value.Replace( "\n", "\r" ); if ( !m_macUsesTXN ) { @@ -825,12 +850,14 @@ void wxTextCtrl::SetValue(const wxString& st) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; - TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), - kTXNStartOffset, kTXNEndOffset); - TXNSetSelection( (TXNObject) m_macTXN, 0, 0); + if ( !formerEditable ) + SetEditable(true) ; + TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), + kTXNStartOffset, kTXNEndOffset); + TXNSetSelection( (TXNObject) m_macTXN, 0, 0); TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart); - SetEditable(formerEditable) ; + if ( !formerEditable ) + SetEditable(formerEditable) ; } MacRedrawControl() ; } @@ -845,45 +872,46 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style) if ( m_macUsesTXN ) { bool formerEditable = IsEditable() ; - SetEditable(true) ; - TXNTypeAttributes typeAttr[4] ; - Str255 fontName = "\pMonaco" ; - SInt16 fontSize = 12 ; - Style fontStyle = normal ; - RGBColor color ; - int attrCounter = 0 ; - if ( style.HasFont() ) - { - const wxFont &font = style.GetFont() ; - CopyCStringToPascal( font.GetFaceName().c_str() , fontName ) ; - fontSize = font.GetPointSize() ; - if ( font.GetUnderlined() ) - fontStyle |= underline ; - if ( font.GetWeight() == wxBOLD ) - fontStyle |= bold ; - if ( font.GetStyle() == wxITALIC ) - fontStyle |= italic ; - - typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ; - typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ; - typeAttr[attrCounter].data.dataPtr = (void*) fontName ; - typeAttr[attrCounter+1].tag = kTXNQDFontSizeAttribute ; - typeAttr[attrCounter+1].size = kTXNFontSizeAttributeSize ; - typeAttr[attrCounter+1].data.dataValue = (fontSize << 16) ; - typeAttr[attrCounter+2].tag = kTXNQDFontStyleAttribute ; - typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; - typeAttr[attrCounter+2].data.dataValue = fontStyle ; - attrCounter += 3 ; - - } - if ( style.HasTextColour() ) - { - typeAttr[attrCounter].tag = kTXNQDFontColorAttribute ; - typeAttr[attrCounter].size = kTXNQDFontColorAttributeSize ; - typeAttr[attrCounter].data.dataPtr = (void*) &color ; - color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ; - attrCounter += 1 ; - } + if ( !formerEditable ) + SetEditable(true) ; + TXNTypeAttributes typeAttr[4] ; + Str255 fontName = "\pMonaco" ; + SInt16 fontSize = 12 ; + Style fontStyle = normal ; + RGBColor color ; + int attrCounter = 0 ; + if ( style.HasFont() ) + { + const wxFont &font = style.GetFont() ; + CopyCStringToPascal( font.GetFaceName().c_str() , fontName ) ; + fontSize = font.GetPointSize() ; + if ( font.GetUnderlined() ) + fontStyle |= underline ; + if ( font.GetWeight() == wxBOLD ) + fontStyle |= bold ; + if ( font.GetStyle() == wxITALIC ) + fontStyle |= italic ; + + typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ; + typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ; + typeAttr[attrCounter].data.dataPtr = (void*) fontName ; + typeAttr[attrCounter+1].tag = kTXNQDFontSizeAttribute ; + typeAttr[attrCounter+1].size = kTXNFontSizeAttributeSize ; + typeAttr[attrCounter+1].data.dataValue = (fontSize << 16) ; + typeAttr[attrCounter+2].tag = kTXNQDFontStyleAttribute ; + typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; + typeAttr[attrCounter+2].data.dataValue = fontStyle ; + attrCounter += 3 ; + + } + if ( style.HasTextColour() ) + { + typeAttr[attrCounter].tag = kTXNQDFontColorAttribute ; + typeAttr[attrCounter].size = kTXNQDFontColorAttributeSize ; + typeAttr[attrCounter].data.dataPtr = (void*) &color ; + color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ; + attrCounter += 1 ; + } if ( attrCounter > 0 ) { @@ -891,7 +919,8 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style) start,end); wxASSERT_MSG( status == noErr , "Couldn't set text attributes" ) ; } - SetEditable(formerEditable) ; + if ( !formerEditable ) + SetEditable(formerEditable) ; } return TRUE ; } @@ -1034,9 +1063,9 @@ void wxTextCtrl::SetEditable(bool editable) if ( !m_macUsesTXN ) { if ( editable ) - UMAActivateControl( (ControlHandle) m_macControl ) ; + UMAActivateControl( (ControlHandle) m_macControl ) ; else - UMADeactivateControl((ControlHandle) m_macControl ) ; + UMADeactivateControl((ControlHandle) m_macControl ) ; } else { @@ -1106,12 +1135,14 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; - TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; - TXNClear( ((TXNObject) m_macTXN) ) ; - TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), - kTXNUseCurrentSelection, kTXNUseCurrentSelection); - SetEditable( formerEditable ) ; + if ( !formerEditable ) + SetEditable(true) ; + TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; + TXNClear( ((TXNObject) m_macTXN) ) ; + TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), + kTXNUseCurrentSelection, kTXNUseCurrentSelection); + if ( !formerEditable ) + SetEditable( formerEditable ) ; } Refresh() ; } @@ -1130,10 +1161,12 @@ void wxTextCtrl::Remove(long from, long to) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; + if ( !formerEditable ) + SetEditable(true) ; TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; TXNClear( ((TXNObject) m_macTXN) ) ; - SetEditable( formerEditable ) ; + if ( !formerEditable ) + SetEditable( formerEditable ) ; } Refresh() ; } @@ -1178,9 +1211,13 @@ void wxTextCtrl::WriteText(const wxString& text) { wxString value ; if( wxApp::s_macDefaultEncodingIsPC ) + { value = wxMacMakeMacStringFromPC( text ) ; + // value.Replace( "\n", "\r" ); // TODO this should be handled by the conversion + } else value = text ; + if ( !m_macUsesTXN ) { TEInsert( value , value.Length() , ((TEHandle) m_macTE) ) ; @@ -1188,14 +1225,16 @@ void wxTextCtrl::WriteText(const wxString& text) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; - long start , end , dummy ; - GetSelection( &start , &dummy ) ; + if ( !formerEditable ) + SetEditable(true) ; + long start , end , dummy ; + GetSelection( &start , &dummy ) ; TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*) (const char*)value, value.Length(), kTXNUseCurrentSelection, kTXNUseCurrentSelection); - GetSelection( &dummy , &end ) ; + GetSelection( &dummy , &end ) ; SetStyle( start , end , GetDefaultStyle() ) ; - SetEditable( formerEditable ) ; + if ( !formerEditable ) + SetEditable( formerEditable ) ; } MacRedrawControl() ; } @@ -1539,7 +1578,7 @@ bool wxTextCtrl::Show(bool show) bool retval = wxControl::Show( show ) ; - if ( former != m_macControlIsShown ) + if ( former != m_macControlIsShown && m_macUsesTXN ) { if ( m_macControlIsShown ) TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, @@ -1606,7 +1645,13 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) event.Enable( CanRedo() ); } - +bool wxTextCtrl::MacSetupCursor( const wxPoint& pt ) +{ + if ( m_macUsesTXN ) + return true ; + else + return wxWindow::MacSetupCursor( pt ) ; +} #endif // wxUSE_TEXTCTRL diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp index 0ed2cc6b55..c1d36f4122 100644 --- a/src/mac/carbon/toolbar.cpp +++ b/src/mac/carbon/toolbar.cpp @@ -159,6 +159,13 @@ bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons wxToolBar::~wxToolBar() { + size_t index = 0 ; + for ( index = 0 ; index < m_macToolHandles.Count() ; ++index ) + { + // Delete the control as we get ghosts otherwise + ::DisposeControl( (ControlHandle) m_macToolHandles[index] ); + } + // we must refresh the frame size when the toolbar is deleted but the frame // is not - otherwise toolbar leaves a hole in the place it used to occupy } diff --git a/src/mac/carbon/tooltip.cpp b/src/mac/carbon/tooltip.cpp index 5f71f00425..2fbce9c667 100644 --- a/src/mac/carbon/tooltip.cpp +++ b/src/mac/carbon/tooltip.cpp @@ -190,7 +190,10 @@ void wxMacToolTip::Setup( WindowRef win , wxString text , wxPoint localPosition m_mark++ ; Clear() ; m_position = localPosition ; - m_label = wxMacMakeMacStringFromPC( text ) ; + if( wxApp::s_macDefaultEncodingIsPC ) + m_label = wxMacMakeMacStringFromPC( text ) ; + else + m_label = text ; m_window =win; s_ToolTipWindowRef = m_window ; m_backpict = NULL ; @@ -287,16 +290,38 @@ void wxMacToolTip::Draw() m_rect.right += kTipBorder ; #endif m_rect.bottom = m_rect.top + height + 2 * kTipBorder; + Rect r ; + GetPortBounds( GetWindowPort( m_window ) , &r ) ; + if ( m_rect.top < 0 ) + { + m_rect.bottom += -m_rect.top ; + m_rect.top = 0 ; + } + if ( m_rect.left < 0 ) + { + m_rect.right += -m_rect.left ; + m_rect.left = 0 ; + } + if ( m_rect.right > r.right ) + { + m_rect.left -= (m_rect.right - r.right ) ; + m_rect.right = r.right ; + } + if ( m_rect.bottom > r.bottom ) + { + m_rect.top -= (m_rect.bottom - r.bottom) ; + m_rect.bottom = r.bottom ; + } ClipRect( &m_rect ) ; BackColor( whiteColor ) ; ForeColor(blackColor ) ; - GWorldPtr port ; - NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ; - CGrafPtr origPort ; - GDHandle origDevice ; - - GetGWorld( &origPort , &origDevice ) ; - SetGWorld( port , NULL ) ; + GWorldPtr port ; + NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ; + CGrafPtr origPort ; + GDHandle origDevice ; + + GetGWorld( &origPort , &origDevice ) ; + SetGWorld( port , NULL ) ; m_backpict = OpenPicture(&m_rect); diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index efcf1a737d..2ce4b8da97 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -59,9 +59,6 @@ wxWindowList wxModelessWindows; static Point gs_lastWhere; static long gs_lastWhen = 0; -// cursor stuff -extern int wxBusyCursorCount; - // ============================================================================ // wxTopLevelWindowMac implementation @@ -235,7 +232,7 @@ pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef { wxTheApp->m_macCurrentEvent = &rec ; wxWindow* focus = wxWindow::FindFocus() ; - if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent( focus , rec.message , rec.modifiers , rec.when , rec.where.h , rec.where.v ) ) + if ( (focus != NULL) && !UMAMenuEvent(&rec) && wxTheApp->MacSendKeyDownEvent( focus , rec.message , rec.modifiers , rec.when , rec.where.h , rec.where.v ) ) { // was handled internally result = noErr ; @@ -322,7 +319,11 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, } else { +#if TARGET_CARBON wclass = kPlainWindowClass ; +#else + wclass = kFloatingWindowClass ; +#endif } } else if ( HasFlag( wxCAPTION ) ) @@ -345,7 +346,11 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, } else { +#if TARGET_CARBON wclass = kPlainWindowClass ; +#else + wclass = kModalWindowClass ; +#endif } } @@ -431,7 +436,7 @@ void wxTopLevelWindowMac::MacUpdate( long timestamp) // Raise the window to the top of the Z order void wxTopLevelWindowMac::Raise() { - ::BringToFront( (WindowRef)m_macWindow ) ; + ::SelectWindow( (WindowRef)m_macWindow ) ; } // Lower the window to the bottom of the Z order @@ -527,7 +532,7 @@ void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr ) if ( ev->what == mouseUp ) { wxTheApp->s_captureWindow = NULL ; - if ( wxBusyCursorCount == 0 ) + if ( !wxIsBusy() ) { m_cursor.MacInstall() ; } @@ -577,7 +582,13 @@ void wxTopLevelWindowMac::MacActivate( WXEVENTREF ev , bool inIsActivating ) UMAHighlightAndActivateWindow( (WindowRef)m_macWindow , inIsActivating ) ; - MacSuperEnabled( inIsActivating ) ; + // Early versions of MacOS X don't refresh backgrounds properly, + // so refresh the whole window on activation and deactivation. + long osVersion = UMAGetSystemVersion(); + if (osVersion >= 0x1000 && osVersion < 0x1020) + Refresh(TRUE); + else + MacSuperEnabled( inIsActivating ) ; } void wxTopLevelWindowMac::MacKeyDown( WXEVENTREF ev ) @@ -604,8 +615,8 @@ bool wxTopLevelWindowMac::Show(bool show) return FALSE; if (show) - { - ::ShowWindow( (WindowRef)m_macWindow ) ; + { + ::TransitionWindow((WindowRef)m_macWindow,kWindowZoomTransitionEffect,kWindowShowTransitionAction,nil); ::SelectWindow( (WindowRef)m_macWindow ) ; // no need to generate events here, they will get them triggered by macos // actually they should be , but apparently they are not @@ -616,7 +627,7 @@ bool wxTopLevelWindowMac::Show(bool show) } else { - ::HideWindow( (WindowRef)m_macWindow ) ; + ::TransitionWindow((WindowRef)m_macWindow,kWindowZoomTransitionEffect,kWindowHideTransitionAction,nil); } if ( !show ) @@ -675,9 +686,13 @@ void wxTopLevelWindowMac::DoMoveWindow(int x, int y, int width, int height) if ( doResize ) ::SizeWindow((WindowRef)m_macWindow, m_width, m_height , true); + + // the OS takes care of invalidating and erasing the new area so we only have to + // take care of refreshing for full repaints + + if ( doResize && !HasFlag(wxNO_FULL_REPAINT_ON_RESIZE) ) + Refresh() ; - // the OS takes care of invalidating and erasing the new area - // we have erased the old one if ( IsKindOf( CLASSINFO( wxFrame ) ) ) { diff --git a/src/mac/carbon/treectrl.cpp b/src/mac/carbon/treectrl.cpp index 67ccc4f022..5a50bd157d 100644 --- a/src/mac/carbon/treectrl.cpp +++ b/src/mac/carbon/treectrl.cpp @@ -123,7 +123,7 @@ long wxTreeCtrl::GetChild(long item) const return 0; } -long wxTreeCtrl::GetParent(long item) const +long wxTreeCtrl::GetItemParent(long item) const { // TODO return 0; diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index 7f12124698..197b7249c5 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -1,5 +1,8 @@ #include "wx/defs.h" #include "wx/dc.h" +#ifndef __DARWIN__ +#include +#endif #include "wx/mac/uma.h" #include @@ -23,12 +26,14 @@ static bool sUMAHasAppearance = false ; static long sUMAAppearanceVersion = 0 ; +static long sUMASystemVersion = 0 ; static bool sUMAHasAquaLayout = false ; static bool sUMASystemInitialized = false ; extern int gAGABackgroundColor ; bool UMAHasAppearance() { return sUMAHasAppearance ; } long UMAGetAppearanceVersion() { return sUMAAppearanceVersion ; } +long UMAGetSystemVersion() { return sUMASystemVersion ; } static bool sUMAHasWindowManager = false ; static long sUMAWindowManagerAttr = 0 ; @@ -71,6 +76,9 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls ) InitCursor(); #endif + if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr) + sUMASystemVersion = 0x0000 ; + long theAppearance ; if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) { @@ -232,33 +240,157 @@ void UMAInsertSubMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SIn SetMenuItemHierarchicalID( menu , item , id ) ; } +void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , SInt16 key , UInt8 modifiers ) +{ + if ( key ) + { + SInt16 glyph = 0 ; + SInt16 macKey = key ; + if ( key >= WXK_F1 && key <= WXK_F15 ) + { + macKey = kFunctionKeyCharCode ; + glyph = kMenuF1Glyph + ( key - WXK_F1 ) ; + if ( key >= WXK_F13 ) + glyph += 13 ; + switch( key ) + { + case WXK_F1 : + macKey += ( 0x7a << 8 ) ; + break ; + case WXK_F2 : + macKey += ( 0x78 << 8 ) ; + break ; + case WXK_F3 : + macKey += ( 0x63 << 8 ) ; + break ; + case WXK_F4 : + macKey += ( 0x76 << 8 ) ; + break ; + case WXK_F5 : + macKey += ( 0x60 << 8 ) ; + break ; + case WXK_F6 : + macKey += ( 0x61 << 8 ) ; + break ; + case WXK_F7 : + macKey += ( 0x62 << 8 ) ; + break ; + case WXK_F8 : + macKey += ( 0x64 << 8 ) ; + break ; + case WXK_F9 : + macKey += ( 0x65 << 8 ) ; + break ; + case WXK_F10 : + macKey += ( 0x6D << 8 ) ; + break ; + case WXK_F11 : + macKey += ( 0x67 << 8 ) ; + break ; + case WXK_F12 : + macKey += ( 0x6F << 8 ) ; + break ; + case WXK_F13 : + macKey += ( 0x69 << 8 ) ; + break ; + case WXK_F14 : + macKey += ( 0x6B << 8 ) ; + break ; + case WXK_F15 : + macKey += ( 0x71 << 8 ) ; + break ; + default : + break ; + } ; + // unfortunately this does not yet trigger the right key , + // for some reason mac justs picks the first function key menu + // defined, so we turn this off + macKey = 0 ; + glyph = 0 ; + } + else + { + switch( key ) + { + case WXK_BACK : + macKey = kBackspaceCharCode ; + glyph = kMenuDeleteLeftGlyph ; + break ; + case WXK_TAB : + macKey = kTabCharCode ; + glyph = kMenuTabRightGlyph ; + break ; + case kEnterCharCode : + macKey = kEnterCharCode ; + glyph = kMenuEnterGlyph ; + break ; + case WXK_RETURN : + macKey = kReturnCharCode ; + glyph = kMenuReturnGlyph ; + break ; + case WXK_ESCAPE : + macKey = kEscapeCharCode ; + glyph = kMenuEscapeGlyph ; + break ; + case WXK_SPACE : + macKey = ' ' ; + glyph = kMenuSpaceGlyph ; + break ; + case WXK_DELETE : + macKey = kDeleteCharCode ; + glyph = kMenuDeleteRightGlyph ; + break ; + case WXK_CLEAR : + macKey = kClearCharCode ; + glyph = kMenuClearGlyph ; + break ; + case WXK_PRIOR : // PAGE UP + macKey = kPageUpCharCode ; + glyph = kMenuPageUpGlyph ; + break ; + case WXK_NEXT : + macKey = kPageDownCharCode ; + glyph = kMenuPageDownGlyph ; + break ; + case WXK_LEFT : + macKey = kLeftArrowCharCode ; + glyph = kMenuLeftArrowGlyph ; + break ; + case WXK_UP : + macKey = kUpArrowCharCode ; + glyph = kMenuUpArrowGlyph ; + break ; + case WXK_RIGHT : + macKey = kRightArrowCharCode ; + glyph = kMenuRightArrowGlyph ; + break ; + case WXK_DOWN : + macKey = kDownArrowCharCode ; + glyph = kMenuDownArrowGlyph ; + break ; + } + } + + SetItemCmd( menu, item , macKey ); + SetMenuItemModifiers(menu, item , modifiers ) ; + + if ( glyph ) + SetMenuItemKeyGlyph(menu, item , glyph ) ; + } +} void UMAAppendMenuItem( MenuRef menu , StringPtr l , SInt16 key, UInt8 modifiers ) { - Str255 label ; - memcpy( label , l , l[0]+1 ) ; - if ( key ) - { - int pos = label[0] ; - label[++pos] = '/'; - label[++pos] = toupper( key ); - label[0] = pos ; - } - MacAppendMenu( menu , label ) ; + MacAppendMenu(menu, "\pA"); + SetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), l); + UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), key , modifiers ) ; } void UMAInsertMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SInt16 key, UInt8 modifiers ) { - Str255 label ; - memcpy( label , l , l[0]+1 ) ; - if ( key ) - { - int pos = label[0] ; - label[++pos] = '/'; - label[++pos] = toupper( key ); - label[0] = pos ; - } - MacInsertMenuItem( menu , label , item) ; + MacInsertMenuItem( menu , "\p" , item) ; + SetMenuItemText(menu, item , l); + UMASetMenuItemShortcut( menu , item , key , modifiers ) ; } // quickdraw @@ -659,3 +791,18 @@ wxMacPortStateHelper::~wxMacPortStateHelper() } } +OSStatus UMAPutScrap( Size size , OSType type , void *data ) +{ + OSStatus err = noErr ; +#if !TARGET_CARBON + err = PutScrap( size , type , data ) ; +#else + ScrapRef scrap; + err = GetCurrentScrap (&scrap); + if ( !err ) + { + err = PutScrapFlavor (scrap, type , 0, size, data); + } +#endif + return err ; +} diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index 1d0252c810..2cb2825106 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -158,7 +158,7 @@ void wxUsleep(unsigned long milliseconds) do { YieldToAnyThread() ; - } while( clock() - start < milliseconds / CLOCKS_PER_SEC ) ; + } while( clock() - start < milliseconds / 1000.0 * CLOCKS_PER_SEC ) ; } void wxSleep(int nSecs) @@ -313,49 +313,38 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c } #endif // wxUSE_RESOURCES -int wxBusyCursorCount = 0; -extern CursHandle gMacCurrentCursor ; -CursHandle gMacStoredActiveCursor = NULL ; +int gs_wxBusyCursorCount = 0; +extern wxCursor gMacCurrentCursor ; +wxCursor gMacStoredActiveCursor ; // Set the cursor to the busy cursor for all windows void wxBeginBusyCursor(wxCursor *cursor) { - wxBusyCursorCount ++; - if (wxBusyCursorCount == 1) + if (gs_wxBusyCursorCount++ == 0) { gMacStoredActiveCursor = gMacCurrentCursor ; - ::SetCursor( *::GetCursor( watchCursor ) ) ; - } - else - { - // TODO - } + cursor->MacInstall() ; + } + //else: nothing to do, already set } // Restore cursor to normal void wxEndBusyCursor() { - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount --; - if (wxBusyCursorCount == 0) - { - if ( gMacStoredActiveCursor ) - ::SetCursor( *gMacStoredActiveCursor ) ; - else + wxCHECK_RET( gs_wxBusyCursorCount > 0, + wxT("no matching wxBeginBusyCursor() for wxEndBusyCursor()") ); + + if (--gs_wxBusyCursorCount == 0) { - Cursor MacArrow ; - ::SetCursor( GetQDGlobalsArrow( &MacArrow ) ) ; - } - gMacStoredActiveCursor = NULL ; + gMacStoredActiveCursor.MacInstall() ; + gMacStoredActiveCursor = wxNullCursor ; } } // TRUE if we're between the above two calls bool wxIsBusy() { - return (wxBusyCursorCount > 0); + return (gs_wxBusyCursorCount > 0); } wxString wxMacFindFolder( short vol, @@ -461,7 +450,11 @@ int wxDisplayDepth() // Get size of display void wxDisplaySize(int *width, int *height) { - wxClientDisplayRect( NULL , NULL , width , height ) ; + BitMap screenBits; + GetQDGlobalsScreenBits( &screenBits ); + + *width = screenBits.bounds.right - screenBits.bounds.left ; + *height = screenBits.bounds.bottom - screenBits.bounds.top ; } void wxDisplaySizeMM(int *width, int *height) diff --git a/src/mac/carbon/wave.cpp b/src/mac/carbon/wave.cpp index 01c7b9b035..499d5ab28b 100644 --- a/src/mac/carbon/wave.cpp +++ b/src/mac/carbon/wave.cpp @@ -17,6 +17,8 @@ #include "wx/string.h" #include "wx/wave.h" +#if wxUSE_WAVE + #ifdef __WXMAC__ #include "wx/mac/private.h" #ifndef __DARWIN__ @@ -57,7 +59,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) ret = true; else { /* - if (sndChan) + if (sndChan) { // we're playing FSClose(SndRefNum); SndRefNum = 0; @@ -66,7 +68,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan = 0; KillTimer(0,timerID); } - + if (!lpSnd) return true; @@ -81,14 +83,14 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan->qLength = 128; - if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0)) + if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0)) { free(sndChan); sndChan = 0; return false; } - if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd))) + if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd))) { SndDisposeChannel(sndChan, TRUE); free(sndChan); @@ -102,7 +104,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) if (fdwSound & SND_ASYNC) async = true; - if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr) + if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr) { FSClose (SndRefNum); SndRefNum = 0; @@ -112,11 +114,11 @@ bool wxWave::Create(const wxString& fileName, bool isResource) return false; } - if (async) + if (async) { // haven't finish yet timerID = SetTimer(0, 0, 250, TimerCallBack); - } - else + } + else { FSClose (SndRefNum); SndRefNum = 0; @@ -125,7 +127,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan = 0; }*/ } - + return ret; } @@ -135,8 +137,8 @@ bool wxWave::Play(bool async, bool looped) const { char lpSnd[32]; bool ret = false; - - if (m_isResource) + + if (m_isResource) { #if TARGET_CARBON c2pstrcpy((unsigned char *)lpSnd, m_sndname); @@ -145,13 +147,13 @@ bool wxWave::Play(bool async, bool looped) const c2pstr((char *) lpSnd); #endif SndListHandle hSnd; - + hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd); if ((hSnd != NULL) && (SndPlay((SndChannelPtr)m_sndChan, (SndListHandle) hSnd, async) == noErr)) ret = true; - } - + } + return ret; } @@ -159,7 +161,7 @@ bool wxWave::Play(bool async, bool looped) const bool wxWave::FreeData() { bool ret = false; - + if (m_isResource) { m_sndname.Empty(); @@ -167,9 +169,9 @@ bool wxWave::FreeData() } else { - //TODO, + //TODO, } - + return ret; } @@ -188,7 +190,7 @@ bool wxWave::FreeData() // first, get the volume reference number for the file. Start by // making a Pstring with just the volume name strcpy ((char *) name, path); - if (c = strchr ((char *) name, ':')) + if (c = strchr ((char *) name, ':')) { c++; *c = '\0'; @@ -220,7 +222,7 @@ bool wxWave::FreeData() void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) { - if(!sndChan) + if(!sndChan) { KillTimer(0,timerID); return; @@ -243,3 +245,4 @@ void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) }*/ +#endif diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index bc83a282a2..e536644618 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -133,6 +133,11 @@ void wxWindowMac::Init() // Destructor wxWindowMac::~wxWindowMac() { + // Send destroy event + wxWindowDestroyEvent destroyEvent(this); + destroyEvent.SetId(GetId()); + GetEventHandler()->ProcessEvent(destroyEvent); + // deleting a window while it is shown invalidates the region if ( IsShown() ) { wxWindowMac* iter = this ; @@ -169,7 +174,7 @@ wxWindowMac::~wxWindowMac() { s_lastMouseWindow = NULL ; } - + wxFrame* frame = wxDynamicCast( wxGetTopLevelParent( this ) , wxFrame ) ; if ( frame ) { @@ -182,10 +187,23 @@ wxWindowMac::~wxWindowMac() gFocusWindow = NULL ; } + // CS: copied from MSW : + // VS: destroy children first and _then_ detach *this from its parent. + // If we'd do it the other way around, children wouldn't be able + // find their parent frame (see above). + DestroyChildren(); + if ( m_parent ) m_parent->RemoveChild(this); - DestroyChildren(); + // delete our drop target if we've got one +#if wxUSE_DRAG_AND_DROP + if ( m_dropTarget != NULL ) + { + delete m_dropTarget; + m_dropTarget = NULL; + } +#endif // wxUSE_DRAG_AND_DROP } // Constructor @@ -227,24 +245,32 @@ void wxWindowMac::SetFocus() { if (gFocusWindow ) { - #if wxUSE_CARET +#if wxUSE_CARET // Deal with caret if ( gFocusWindow->m_caret ) { gFocusWindow->m_caret->OnKillFocus(); } - #endif // wxUSE_CARET - #ifndef __WXUNIVERSAL__ +#endif // wxUSE_CARET +#ifndef __WXUNIVERSAL__ wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ; if ( control && control->GetMacControl() ) { UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNoPart ) ; control->MacRedrawControl() ; } - #endif - wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId); - event.SetEventObject(gFocusWindow); - gFocusWindow->GetEventHandler()->ProcessEvent(event) ; +#endif + // Without testing the window id, for some reason + // a kill focus event can still be sent to + // the control just being focussed. + int thisId = this->m_windowId; + int gFocusWindowId = gFocusWindow->m_windowId; + if (gFocusWindowId != thisId) + { + wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId); + event.SetEventObject(gFocusWindow); + gFocusWindow->GetEventHandler()->ProcessEvent(event) ; + } } gFocusWindow = this ; { @@ -353,7 +379,17 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y) ::InsertMenu( (MenuHandle) menu->GetHMenu() , -1 ) ; long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() ,y,x, 0) ; - menu->MacMenuSelect( this , TickCount() , HiWord(menuResult) , LoWord(menuResult) ) ; + if ( HiWord(menuResult) != 0 ) + { + MenuCommand id ; + GetMenuItemCommandID( GetMenuHandle(HiWord(menuResult)) , LoWord(menuResult) , &id ) ; + + wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, id ); + event.m_timeStamp = TickCount() ; + event.SetEventObject(this->GetEventHandler()); + event.SetInt( id ); + GetEventHandler()->ProcessEvent(event); + } ::DeleteMenu( menu->MacGetMenuId() ) ; menu->SetInvokingWindow(NULL); @@ -381,9 +417,9 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const MacRootWindowToWindow( x , y ) ; if ( x ) - x -= MacGetLeftBorderSize() ; + *x -= MacGetLeftBorderSize() ; if ( y ) - y -= MacGetTopBorderSize() ; + *y -= MacGetTopBorderSize() ; } void wxWindowMac::DoClientToScreen(int *x, int *y) const @@ -391,9 +427,9 @@ void wxWindowMac::DoClientToScreen(int *x, int *y) const WindowRef window = (WindowRef) MacGetRootWindow() ; if ( x ) - x += MacGetLeftBorderSize() ; + *x += MacGetLeftBorderSize() ; if ( y ) - y += MacGetTopBorderSize() ; + *y += MacGetTopBorderSize() ; MacWindowToRootWindow( x , y ) ; @@ -595,7 +631,35 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height) { // erase former position - Refresh() ; + bool partialRepaint = false ; + + if ( HasFlag(wxNO_FULL_REPAINT_ON_RESIZE) ) + { + wxPoint oldPos( m_x , m_y ) ; + wxPoint newPos( actualX , actualY ) ; + MacWindowToRootWindow( &oldPos.x , &oldPos.y ) ; + MacWindowToRootWindow( &newPos.x , &newPos.y ) ; + if ( oldPos == newPos ) + { + partialRepaint = true ; + RgnHandle oldRgn,newRgn,diffRgn ; + oldRgn = NewRgn() ; + newRgn = NewRgn() ; + diffRgn = NewRgn() ; + SetRectRgn(oldRgn , oldPos.x , oldPos.y , oldPos.x + m_width , oldPos.y + m_height ) ; + SetRectRgn(newRgn , newPos.x , newPos.y , newPos.x + actualWidth , newPos.y + actualHeight ) ; + DiffRgn( newRgn , oldRgn , diffRgn ) ; + InvalWindowRgn( (WindowRef) MacGetRootWindow() , diffRgn ) ; + DiffRgn( oldRgn , newRgn , diffRgn ) ; + InvalWindowRgn( (WindowRef) MacGetRootWindow() , diffRgn ) ; + DisposeRgn(oldRgn) ; + DisposeRgn(newRgn) ; + DisposeRgn(diffRgn) ; + } + } + + if ( !partialRepaint ) + Refresh() ; m_x = actualX ; m_y = actualY ; @@ -607,7 +671,8 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height) MacUpdateDimensions() ; // erase new position - Refresh() ; + if ( !partialRepaint ) + Refresh() ; if ( doMove ) wxWindowMac::MacSuperChangedPosition() ; // like this only children will be notified @@ -1206,7 +1271,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect) if (child == m_vScrollBar) continue; if (child == m_hScrollBar) continue; if (child->IsTopLevel()) continue; - + int x,y; child->GetPosition( &x, &y ); int w,h; @@ -1439,18 +1504,17 @@ bool wxWindowMac::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindowMa return FALSE ; } -extern int wxBusyCursorCount ; static wxWindow *gs_lastWhich = NULL; -bool wxWindowMac::MacSetupCursor( const wxPoint& pt) +bool wxWindowMac::MacSetupCursor( const wxPoint& pt) { // first trigger a set cursor event - + wxPoint clientorigin = GetClientAreaOrigin() ; wxSize clientsize = GetClientSize() ; wxCursor cursor ; if ( wxRect2DInt( clientorigin.x , clientorigin.y , clientsize.x , clientsize.y ).Contains( wxPoint2DInt( pt ) ) ) - { + { wxSetCursorEvent event( pt.x , pt.y ); bool processedEvtSetCursor = GetEventHandler()->ProcessEvent(event); @@ -1460,7 +1524,7 @@ bool wxWindowMac::MacSetupCursor( const wxPoint& pt) } else { - + // the test for processedEvtSetCursor is here to prevent using m_cursor // if the user code caught EVT_SET_CURSOR() and returned nothing from // it - this is a way to say that our cursor shouldn't be used for this @@ -1600,6 +1664,7 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling { RgnHandle visRgn = NewRgn() ; RgnHandle tempRgn = NewRgn() ; + RgnHandle tempStaticBoxRgn = NewRgn() ; SetRectRgn( visRgn , 0 , 0 , m_width , m_height ) ; @@ -1609,8 +1674,8 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling int borderTop = 14 ; int borderOther = 4 ; - SetRectRgn( tempRgn , borderOther , borderTop , m_width - borderOther , m_height - borderOther ) ; - DiffRgn( visRgn , tempRgn , visRgn ) ; + SetRectRgn( tempStaticBoxRgn , borderOther , borderTop , m_width - borderOther , m_height - borderOther ) ; + DiffRgn( visRgn , tempStaticBoxRgn , visRgn ) ; } if ( !IsTopLevel() ) @@ -1624,10 +1689,10 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling parent->MacWindowToRootWindow( &x, &y ) ; MacRootWindowToWindow( &x , &y ) ; - SetRectRgn( tempRgn , - x + parent->MacGetLeftBorderSize() , y + parent->MacGetTopBorderSize() , - x + size.x - parent->MacGetLeftBorderSize() - parent->MacGetRightBorderSize(), - y + size.y - parent->MacGetTopBorderSize() - parent->MacGetBottomBorderSize()) ; + SetRectRgn( tempRgn , + x + parent->MacGetLeftBorderSize() , y + parent->MacGetTopBorderSize() , + x + size.x - parent->MacGetRightBorderSize(), + y + size.y - parent->MacGetBottomBorderSize()) ; SectRgn( visRgn , tempRgn , visRgn ) ; if ( parent->IsTopLevel() ) @@ -1646,6 +1711,14 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling if ( !child->IsTopLevel() && child->IsShown() ) { SetRectRgn( tempRgn , child->m_x , child->m_y , child->m_x + child->m_width , child->m_y + child->m_height ) ; + if ( child->IsKindOf( CLASSINFO( wxStaticBox ) ) ) + { + int borderTop = 14 ; + int borderOther = 4 ; + + SetRectRgn( tempStaticBoxRgn , child->m_x + borderOther , child->m_y + borderTop , child->m_x + child->m_width - borderOther , child->m_y + child->m_height - borderOther ) ; + DiffRgn( tempRgn , tempStaticBoxRgn , tempRgn ) ; + } DiffRgn( visRgn , tempRgn , visRgn ) ; } } @@ -1670,6 +1743,14 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling if ( !sibling->IsTopLevel() && sibling->IsShown() ) { SetRectRgn( tempRgn , sibling->m_x - m_x , sibling->m_y - m_y , sibling->m_x + sibling->m_width - m_x , sibling->m_y + sibling->m_height - m_y ) ; + if ( sibling->IsKindOf( CLASSINFO( wxStaticBox ) ) ) + { + int borderTop = 14 ; + int borderOther = 4 ; + + SetRectRgn( tempStaticBoxRgn , sibling->m_x - m_x + borderOther , sibling->m_y - m_y + borderTop , sibling->m_x + sibling->m_width - m_x - borderOther , sibling->m_y + sibling->m_height - m_y - borderOther ) ; + DiffRgn( tempRgn , tempStaticBoxRgn , tempRgn ) ; + } DiffRgn( visRgn , tempRgn , visRgn ) ; } } @@ -1678,6 +1759,7 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling m_macVisibleRegion = visRgn ; DisposeRgn( visRgn ) ; DisposeRgn( tempRgn ) ; + DisposeRgn( tempStaticBoxRgn ) ; return m_macVisibleRegion ; } diff --git a/src/mac/checklst.cpp b/src/mac/checklst.cpp index bba473b606..3bb48dec08 100644 --- a/src/mac/checklst.cpp +++ b/src/mac/checklst.cpp @@ -271,7 +271,7 @@ bool wxCheckListBox::Create(wxWindow *parent, } else { - options = lOnlyOne ; + options = (OptionBits) lOnlyOne ; } SetListSelectionFlags((ListHandle)m_macList, options); diff --git a/src/mac/choice.cpp b/src/mac/choice.cpp index bc008702f4..630cb59b8b 100644 --- a/src/mac/choice.cpp +++ b/src/mac/choice.cpp @@ -27,7 +27,15 @@ extern MenuHandle NewUniqueMenu() ; wxChoice::~wxChoice() { - // DeleteMenu( m_macPopUpMenuId ) ; + if ( HasClientObjectData() ) + { + size_t i, max = GetCount(); + + for ( i = 0; i < max; ++i ) + delete GetClientObject(i); + } + + // DeleteMenu( m_macPopUpMenuId ) ; // DisposeMenu( m_macPopUpMenuHandle ) ; } @@ -72,7 +80,10 @@ int wxChoice::DoAppend(const wxString& item) { Str255 label; wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false); - AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ; + MacAppendMenu(MAC_WXHMENU( m_macPopUpMenuHandle ) , "\pA"); + SetMenuItemText(MAC_WXHMENU( m_macPopUpMenuHandle ) , + (SInt16) ::CountMenuItems(MAC_WXHMENU( m_macPopUpMenuHandle ) ), label); + // was AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ; m_strings.Add( item ) ; m_datas.Add( NULL ) ; int index = m_strings.GetCount() - 1 ; @@ -203,22 +214,67 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) { wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(GetStringSelection()); - ProcessCommand(event); + + int n = GetSelection(); + // actually n should be made sure by the os to be a valid selection, but ... + if ( n > -1 ) + { + event.SetInt( n ); + event.SetString(GetStringSelection()); + event.SetEventObject(this); + + if ( HasClientObjectData() ) + event.SetClientObject( GetClientObject(n) ); + else if ( HasClientUntypedData() ) + event.SetClientData( GetClientData(n) ); + + ProcessCommand(event); + } } wxSize wxChoice::DoGetBestSize() const { - // TODO should modify this to take into account string length ala wxGTK - return wxSize(100,20); + int lbWidth = 100; // some defaults + int lbHeight = 20; + int wLine; +#if TARGET_CARBON + long metric ; + GetThemeMetric(kThemeMetricPopupButtonHeight , &metric ); + lbHeight = metric ; +#endif + { + wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetRootWindow() ) ) ; + + wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; + + if ( font ) + { + ::TextFont( font->m_macFontNum ) ; + ::TextSize( short(font->m_macFontSize) ) ; + ::TextFace( font->m_macFontStyle ) ; + } + else + { + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + } + + // Find the widest line + for(int i = 0; i < GetCount(); i++) { + wxString str(GetString(i)); + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; + lbWidth = wxMax(lbWidth, wLine); + } + + // Add room for the popup arrow + lbWidth += 2 * lbHeight ; + + // And just a bit more + int cx = ::TextWidth( "X" , 0 , 1 ) ; + lbWidth += cx ; + + } + return wxSize(lbWidth, lbHeight); } -/* -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} -*/ diff --git a/src/mac/clipbrd.cpp b/src/mac/clipbrd.cpp index 76952a442e..f5d014c371 100644 --- a/src/mac/clipbrd.cpp +++ b/src/mac/clipbrd.cpp @@ -23,10 +23,10 @@ #include "wx/intl.h" #include "wx/log.h" -#include "wx/mac/private.h" #ifndef __DARWIN__ #include #endif +#include "wx/mac/uma.h" #define wxUSE_DATAOBJ 1 @@ -44,7 +44,8 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) #else OSStatus err = noErr ; #endif - void * data = NULL ; + void * data = NULL ; + Size byteCount; switch (dataFormat.GetType()) { @@ -54,6 +55,9 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) case wxDF_TEXT: break; + case wxDF_BITMAP : + case wxDF_METAFILE : + break ; default: { wxLogError(_("Unsupported clipboard format.")); @@ -68,7 +72,6 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) if ( err != noTypeErr && err != memFullErr ) { ScrapFlavorFlags flavorFlags; - Size byteCount; if (( err = GetScrapFlavorFlags( scrapRef, dataFormat.GetFormatId(), &flavorFlags )) == noErr) { @@ -101,7 +104,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) HUnlock( datahandle ) ; if ( GetHandleSize( datahandle ) > 0 ) { - long byteCount = GetHandleSize( datahandle ) ; + byteCount = GetHandleSize( datahandle ) ; if ( dataFormat.GetType() == wxDF_TEXT ) data = new char[ byteCount + 1] ; else @@ -122,7 +125,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) } if ( dataFormat.GetType() == wxDF_TEXT && wxApp::s_macDefaultEncodingIsPC ) { - wxMacConvertToPC((char*)data) ; + wxMacConvertToPC((char*)data,(char*)data,byteCount) ; } return data; } @@ -240,43 +243,38 @@ bool wxClipboard::AddData( wxDataObject *data ) { mac = textDataObject->GetText() ; } - #if !TARGET_CARBON - err = PutScrap( mac.Length() , 'TEXT' , mac.c_str() ) ; - #else - ScrapRef scrap; - err = GetCurrentScrap (&scrap); - if ( !err ) - { - err = PutScrapFlavor (scrap, 'TEXT', 0, mac.Length(), mac.c_str()); - } - #endif + err = UMAPutScrap( mac.Length() , 'TEXT' , (void*) mac.c_str() ) ; } break ; #if wxUSE_DRAG_AND_DROP case wxDF_METAFILE: { - wxMetafileDataObject* metaFileDataObject = + wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject*) data; - wxMetafile metaFile = metaFileDataObject->GetMetafile(); - PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ; - HLock( (Handle) pict ) ; - #if !TARGET_CARBON - err = PutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; - #else - ScrapRef scrap; - err = GetCurrentScrap (&scrap); - if ( !err ) - { - err = PutScrapFlavor (scrap, 'PICT', 0, GetHandleSize((Handle) pict), *pict); - } - #endif - HUnlock( (Handle) pict ) ; + wxMetafile metaFile = metaFileDataObject->GetMetafile(); + PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ; + HLock( (Handle) pict ) ; + err = UMAPutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; + HUnlock( (Handle) pict ) ; } break ; #endif case wxDF_BITMAP: case wxDF_DIB: + { + PicHandle pict = NULL ; + + wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data ; + bool created = bitmapDataObject->GetBitmap().GetBitmapType() != kMacBitmapTypePict ; + pict = (PicHandle) bitmapDataObject->GetBitmap().GetPict() ; + + HLock( (Handle) pict ) ; + err = UMAPutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; + HUnlock( (Handle) pict ) ; + if ( created && pict) + KillPicture( pict ) ; + } default: break ; } @@ -375,8 +373,10 @@ bool wxClipboard::GetData( wxDataObject& data ) switch ( format.GetType() ) { - case wxDF_TEXT: - case wxDF_OEMTEXT: + case wxDF_TEXT : + case wxDF_OEMTEXT : + case wxDF_BITMAP : + case wxDF_METAFILE : { long len ; char* s = (char*)wxGetClipboardData(format, &len ); diff --git a/src/mac/combobox.cpp b/src/mac/combobox.cpp index 22924613ea..2341937b42 100644 --- a/src/mac/combobox.cpp +++ b/src/mac/combobox.cpp @@ -205,7 +205,7 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height) { } else { - wxCoord wText = width - POPUPWIDTH; + wxCoord wText = width - POPUPWIDTH - MARGIN ; m_text->SetSize(0, 0, wText, height); m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, -1); } @@ -311,7 +311,12 @@ wxString wxComboBox::GetValue() const void wxComboBox::SetValue(const wxString& value) { - SetStringSelection( value ) ; + int s = FindString (value); + if (s == wxNOT_FOUND && !HasFlag(wxCB_READONLY) ) + { + m_choice->Append(value) ; + } + SetStringSelection( value ) ; } // Clipboard operations @@ -408,6 +413,10 @@ void wxComboBox::Append(const wxString& item) void wxComboBox::Delete(int n) { + if ( HasClientObjectData() ) + { + SetClientObject(n, NULL); + } m_choice->Delete( n ); } diff --git a/src/mac/control.cpp b/src/mac/control.cpp index 5998a660fc..368db51b8a 100644 --- a/src/mac/control.cpp +++ b/src/mac/control.cpp @@ -35,9 +35,9 @@ IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) BEGIN_EVENT_TABLE(wxControl, wxWindow) - EVT_MOUSE_EVENTS( wxControl::OnMouseEvent ) -// EVT_CHAR( wxControl::OnKeyDown ) - EVT_PAINT( wxControl::OnPaint ) + EVT_MOUSE_EVENTS( wxControl::OnMouseEvent ) +// EVT_CHAR( wxControl::OnKeyDown ) + EVT_PAINT( wxControl::OnPaint ) END_EVENT_TABLE() #endif @@ -89,7 +89,7 @@ ControlDefUPP wxMacControlActionUPP = NULL ; pascal SInt32 wxMacControlDefintion(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param) { - + wxControl* wx = (wxControl*) wxFindControlFromMacControl( theControl ) ; if ( wx != NULL && wx->IsKindOf( CLASSINFO( wxControl ) ) ) { @@ -129,7 +129,7 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa } return status ; } - + wxControl::wxControl() { m_macControl = NULL ; @@ -161,7 +161,7 @@ bool wxControl::Create(wxWindow *parent, wxWindowID id, m_macControl = NULL ; m_macHorizontalBorder = 0 ; // additional pixels around the real control m_macVerticalBorder = 0 ; - + bool rval = wxWindow::Create(parent, id, pos, size, style, name); if ( parent ) { @@ -203,12 +203,12 @@ void wxControl::SetLabel(const wxString& title) { Str255 maclabel ; wxString label ; - + if( wxApp::s_macDefaultEncodingIsPC ) label = wxMacMakeMacStringFromPC( m_label ) ; else label = m_label ; - + #if TARGET_CARBON c2pstrcpy( (StringPtr) maclabel , label ) ; #else @@ -239,7 +239,7 @@ wxSize wxControl::DoGetBestSize() const } else if ( IsKindOf( CLASSINFO( wxSpinButton ) ) ) { - bestsize.bottom = 24 ; + bestsize.bottom = 24 ; } } @@ -255,7 +255,7 @@ wxSize wxControl::DoGetBestSize() const } else bestWidth = bestsize.right - bestsize.left ; - + bestWidth += 2 * m_macHorizontalBorder ; bestHeight = bestsize.bottom - bestsize.top ; @@ -264,7 +264,7 @@ wxSize wxControl::DoGetBestSize() const bestHeight += 2 * m_macVerticalBorder; - + return wxSize(bestWidth, bestHeight); } @@ -313,16 +313,14 @@ void wxRemoveMacControlAssociation(wxControl *control) wxWinMacControlList->DeleteObject(control); } -void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString label , +void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString label , const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, - const wxString& name , WXRECTPTR outBounds , unsigned char* maclabel ) + const wxString& name , WXRECTPTR outBounds , unsigned char* maclabel ) { m_label = label ; SetName(name); - if ( &validator ) - SetValidator(validator); m_windowStyle = style; parent->AddChild(this); @@ -341,7 +339,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l m_height = size.y ; m_x = pos.x ; m_y = pos.y ; - + ((Rect*)outBounds)->top = -10; ((Rect*)outBounds)->left = -10; ((Rect*)outBounds)->bottom = 0; @@ -365,7 +363,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l void wxControl::MacPostControlCreate() { wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ; - + if ( IsKindOf( CLASSINFO( wxScrollBar ) ) ) { // no font @@ -375,7 +373,7 @@ void wxControl::MacPostControlCreate() ControlFontStyleRec controlstyle ; controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallBoldSystemFont ; - + ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ; } else @@ -383,7 +381,7 @@ void wxControl::MacPostControlCreate() ControlFontStyleRec controlstyle ; controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallSystemFont ; - + ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ; } ControlHandle container = (ControlHandle) GetParent()->MacGetContainerForEmbedding() ; @@ -400,6 +398,10 @@ void wxControl::MacPostControlCreate() { wxMacControlActionUPP = NewControlDefUPP( wxMacControlDefintion ) ; } + // The following block of code is responsible for crashes when switching + // back to windows, which can be seen in the dialogs sample. + // It is disabled until a proper solution can be found. +#if 0 #if TARGET_CARBON /* only working under classic carbon @@ -417,37 +419,41 @@ void wxControl::MacPostControlCreate() (**cdef).function = (void(*)()) wxMacControlActionUPP; (**(ControlHandle)m_macControl).contrlDefProc = (Handle) cdef ; } +#endif #endif SetControlColorProc( (ControlHandle) m_macControl , wxMacSetupControlBackgroundUPP ) ; - + // Adjust the controls size and position wxPoint pos(m_x, m_y); wxSize best_size( DoGetBestSize() ); wxSize new_size( m_width, m_height ); - + m_x = m_y = m_width = m_height = -1; // Forces SetSize to move/size the control - + if (new_size.x == -1) { new_size.x = best_size.x; } if (new_size.y == -1) { new_size.y = best_size.y; } - + SetSize(pos.x, pos.y, new_size.x, new_size.y); - + UMAShowControl( (ControlHandle) m_macControl ) ; + + SetCursor( *wxSTANDARD_CURSOR ) ; + Refresh() ; } -void wxControl::MacAdjustControlRect() +void wxControl::MacAdjustControlRect() { wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ; if ( m_width == -1 || m_height == -1 ) { Rect bestsize = { 0 , 0 , 0 , 0 } ; short baselineoffset ; - + ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ; if ( EmptyRect( &bestsize ) ) @@ -462,7 +468,7 @@ void wxControl::MacAdjustControlRect() } else if ( IsKindOf( CLASSINFO( wxSpinButton ) ) ) { - bestsize.bottom = 24 ; + bestsize.bottom = 24 ; } } @@ -480,7 +486,7 @@ void wxControl::MacAdjustControlRect() } else m_width = bestsize.right - bestsize.left ; - + m_width += 2 * m_macHorizontalBorder + MacGetLeftBorderSize() + MacGetRightBorderSize() ; } if ( m_height == -1 ) @@ -491,12 +497,12 @@ void wxControl::MacAdjustControlRect() m_height += 2 * m_macVerticalBorder + MacGetTopBorderSize() + MacGetBottomBorderSize() ; } - MacUpdateDimensions() ; + MacUpdateDimensions() ; // UMASizeControl( (ControlHandle) m_macControl , m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ; } } -WXWidget wxControl::MacGetContainerForEmbedding() +WXWidget wxControl::MacGetContainerForEmbedding() { if ( m_macControl ) return m_macControl ; @@ -504,29 +510,29 @@ WXWidget wxControl::MacGetContainerForEmbedding() return wxWindow::MacGetContainerForEmbedding() ; } -void wxControl::MacUpdateDimensions() +void wxControl::MacUpdateDimensions() { // actually in the current systems this should never be possible, but later reparenting // may become a reality - + if ( (ControlHandle) m_macControl == NULL ) return ; - + if ( GetParent() == NULL ) return ; - + WindowRef rootwindow = (WindowRef) MacGetRootWindow() ; if ( rootwindow == NULL ) return ; - - Rect oldBounds ; - GetControlBounds( (ControlHandle) m_macControl , &oldBounds ) ; - + + Rect oldBounds ; + GetControlBounds( (ControlHandle) m_macControl , &oldBounds ) ; + int new_x = m_x + MacGetLeftBorderSize() + m_macHorizontalBorder ; int new_y = m_y + MacGetTopBorderSize() + m_macVerticalBorder ; int new_width = m_width - MacGetLeftBorderSize() - MacGetRightBorderSize() - 2 * m_macHorizontalBorder ; int new_height = m_height - MacGetTopBorderSize() - MacGetBottomBorderSize() - 2 * m_macVerticalBorder ; - + GetParent()->MacWindowToRootWindow( & new_x , & new_y ) ; bool doMove = new_x != oldBounds.left || new_y != oldBounds.top ; bool doResize = ( oldBounds.right - oldBounds.left ) != new_width || (oldBounds.bottom - oldBounds.top ) != new_height ; @@ -544,19 +550,19 @@ void wxControl::MacUpdateDimensions() } } -void wxControl::MacSuperChangedPosition() +void wxControl::MacSuperChangedPosition() { MacUpdateDimensions() ; wxWindow::MacSuperChangedPosition() ; } -void wxControl::MacSuperEnabled( bool enabled ) +void wxControl::MacSuperEnabled( bool enabled ) { Refresh(FALSE) ; wxWindow::MacSuperEnabled( enabled ) ; } -void wxControl::MacSuperShown( bool show ) +void wxControl::MacSuperShown( bool show ) { if ( (ControlHandle) m_macControl ) { @@ -577,7 +583,7 @@ void wxControl::MacSuperShown( bool show ) } } } - + wxWindow::MacSuperShown( show ) ; } @@ -598,12 +604,12 @@ void wxControl::DoSetSize(int x, int y, Rect oldbounds; int new_x, new_y, new_width, new_height; int mac_x, mac_y; - + new_x = m_x; new_y = m_y; new_width = m_width; new_height = m_height; - + if (sizeFlags & wxSIZE_ALLOW_MINUS_ONE) { new_x = x; @@ -618,7 +624,7 @@ void wxControl::DoSetSize(int x, int y, if (width != -1) new_width = width; if (height != -1) new_height = height; } - + if(sizeFlags & wxSIZE_AUTO) { wxSize size = GetBestSize(); @@ -632,7 +638,7 @@ void wxControl::DoSetSize(int x, int y, } } AdjustForParentClientOrigin(new_x, new_y, sizeFlags); - + mac_x = new_x; mac_y = new_y; if(GetParent()) { @@ -641,10 +647,10 @@ void wxControl::DoSetSize(int x, int y, GetControlBounds( (ControlHandle) m_macControl, &oldbounds); oldbounds.right = oldbounds.left + m_width; oldbounds.bottom = oldbounds.top + m_height; - + bool doMove = false; bool doResize = false; - + if ( mac_x != (oldbounds.left - m_macHorizontalBorder) || mac_y != (oldbounds.top - m_macVerticalBorder) ) { @@ -655,11 +661,11 @@ void wxControl::DoSetSize(int x, int y, { doResize = true ; } - + if ( doMove || doResize ) { Refresh() ; - + // Ensure resize is within constraints if ((m_minWidth != -1) && (new_width < m_minWidth)) { new_width = m_minWidth; @@ -673,12 +679,12 @@ void wxControl::DoSetSize(int x, int y, if ((m_maxHeight != -1) && (new_height > m_maxHeight)) { new_height = m_maxHeight; } - + if ( doMove ) { m_x = new_x; m_y = new_y; - + UMAMoveControl( (ControlHandle) m_macControl, mac_x + m_macHorizontalBorder, mac_y + m_macVerticalBorder); @@ -690,27 +696,27 @@ void wxControl::DoSetSize(int x, int y, { m_width = new_width; m_height = new_height; - + UMASizeControl( (ControlHandle) m_macControl, m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ; - - + + wxSizeEvent event(wxSize(m_width, m_height), m_windowId); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } - + Refresh() ; } */ } -bool wxControl::Show(bool show) +bool wxControl::Show(bool show) { if ( !wxWindow::Show( show ) ) return FALSE ; - + if ( (ControlHandle) m_macControl ) { if ( !show ) @@ -733,7 +739,7 @@ bool wxControl::Show(bool show) return TRUE ; } -bool wxControl::Enable(bool enable) +bool wxControl::Enable(bool enable) { if ( !wxWindow::Enable(enable) ) return FALSE; @@ -782,15 +788,15 @@ void wxControl::OnPaint(wxPaintEvent& event) } void wxControl::OnEraseBackground(wxEraseEvent& event) { - wxWindow::OnEraseBackground( event ) ; + wxWindow::OnEraseBackground( event ) ; } -void wxControl::OnKeyDown( wxKeyEvent &event ) +void wxControl::OnKeyDown( wxKeyEvent &event ) { if ( (ControlHandle) m_macControl == NULL ) return ; - + EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ; short keycode ; short keychar ; @@ -800,43 +806,43 @@ void wxControl::OnKeyDown( wxKeyEvent &event ) ::HandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers ) ; } -void wxControl::OnMouseEvent( wxMouseEvent &event ) +void wxControl::OnMouseEvent( wxMouseEvent &event ) { if ( (ControlHandle) m_macControl == NULL ) { event.Skip() ; return ; } - + if (event.GetEventType() == wxEVT_LEFT_DOWN || event.GetEventType() == wxEVT_LEFT_DCLICK ) { - + int x = event.m_x ; int y = event.m_y ; - + MacClientToRootWindow( &x , &y ) ; - + ControlHandle control ; Point localwhere ; SInt16 controlpart ; - + localwhere.h = x ; localwhere.v = y ; - + short modifiers = 0; - + if ( !event.m_leftDown && !event.m_rightDown ) modifiers |= btnState ; - + if ( event.m_shiftDown ) modifiers |= shiftKey ; - + if ( event.m_controlDown ) modifiers |= controlKey ; - + if ( event.m_altDown ) modifiers |= optionKey ; - + if ( event.m_metaDown ) modifiers |= cmdKey ; { @@ -846,8 +852,8 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) { controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; wxTheApp->s_lastMouseDown = 0 ; - if ( control && controlpart != kControlNoPart && - ! IsKindOf( CLASSINFO( wxScrollBar ) ) + if ( control && controlpart != kControlNoPart && + ! IsKindOf( CLASSINFO( wxScrollBar ) ) ) // otherwise we will get the event twice for scrollbar { MacHandleControlClick( control , controlpart ) ; @@ -860,14 +866,14 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) bool wxControl::MacCanFocus() const { - { if ( (ControlHandle) m_macControl == NULL ) - return true ; + { if ( (ControlHandle) m_macControl == NULL ) + return true ; else - return false ; + return false ; } } -void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) +void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart ) { wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ; } diff --git a/src/mac/corersrc.r b/src/mac/corersrc.r index 2193043cd6..eddad02847 100644 --- a/src/mac/corersrc.r +++ b/src/mac/corersrc.r @@ -22,27 +22,204 @@ resource 'ldes' ( 128 ) } } ; -resource 'CURS' (9, "Hand") { - $"0380 04C0 04C0 04C0 04C0 04C0 74F8 9CAE" - $"4CAB 240B 2403 1003 0803 0806 0406 0406", - $"0380 07C0 07C0 07C0 07C0 07C0 77F8 FFFE" - $"7FFF 3FFF 3FFF 1FFF 0FFF 0FFE 07FE 07FE", - {0, 7} +resource 'ldes' ( 129 ) +{ + versionZero + { + 0 , + 0 , + 0 , + 0 , + hasVertScroll , + hasHorizScroll , + 0 , + noGrowSpace , + } +} ; + +data 'CURS' (10) { + $"0000 03E0 0630 0808 1004 31C6 2362 2222" + $"2362 31C6 1004 0808 0630 03E0 0000 0000" + $"0000 03E0 07F0 0FF8 1FFC 3FFE 3FFE 3FFE" + $"3FFE 3FFE 1FFC 0FF8 07F0 03E0 0000 0000" + $"0007 0008" }; -resource 'CURS' (10, "SizeWE") { - $"0000 0180 0180 0180 0180 1188 318C 7FFE" - $"318C 1188 0180 0180 0180 0180", - $"03C0 03C0 03C0 03C0 1BD8 3BDC 7BFE FFFF" - $"7FFE 3BDC 1BD8 03C0 03C0 03C0 03C0", - {7, 7} +data 'CURS' (11) { + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000" }; -resource 'CURS' (11, "Size NS") { - $"0000 0080 01C0 03E0 0080 0080 0080 3FFE" - $"3FFE 0080 0080 0080 03E0 01C0 0080", - $"0080 01C0 03E0 07F0 07F0 0180 7FFF 7FFF" - $"7FFF 7FFF 01C0 07F0 07F0 03E0 01C0 0080", - {7, 7} +data 'CURS' (12) { + $"00F0 0088 0108 0190 0270 0220 0440 0440" + $"0880 0880 1100 1E00 1C00 1800 1000 0000" + $"00F0 00F8 01F8 01F0 03F0 03E0 07C0 07C0" + $"0F80 0F80 1F00 1E00 1C00 1800 1000 0000" + $"000E 0003" }; +data 'CURS' (13) { + $"0000 1E00 2100 4080 4080 4080 4080 2180" + $"1FC0 00E0 0070 0038 001C 000E 0006 0000" + $"3F00 7F80 FFC0 FFC0 FFC0 FFC0 FFC0 7FC0" + $"3FE0 1FF0 00F8 007C 003E 001F 000F 0007" + $"0004 0004" +}; + +data 'CURS' (14) { + $"0000 07E0 1FF0 3838 3C0C 6E0E 6706 6386" + $"61C6 60E6 7076 303C 1C1C 0FF8 07E0 0000" + $"0540 0FF0 3FF8 3C3C 7E0E FF0F 6F86 E7C7" + $"63E6 E1F7 70FE 707E 3C3C 1FFC 0FF0 0540" + $"0007 0007" +}; + +data 'CURS' (15) { + $"0000 0380 0380 0380 0380 0380 0380 0FE0" + $"1FF0 1FF0 0000 1FF0 1FF0 1550 1550 1550" + $"07C0 07C0 07C0 07C0 07C0 07C0 0FE0 1FF0" + $"3FF8 3FF8 3FF8 3FF8 3FF8 3FF8 3FF8 3FF8" + $"000B 0007" +}; + +data 'CURS' (16) { + $"00C0 0140 0640 08C0 3180 47FE 8001 8001" + $"81FE 8040 01C0 0040 03C0 C080 3F80 0000" + $"00C0 01C0 07C0 0FC0 3F80 7FFE FFFF FFFF" + $"FFFE FFC0 FFC0 FFC0 FFC0 FF80 3F80 0000" + $"0006 000F" +}; + +data 'CURS' (17) { + $"0100 0280 0260 0310 018C 7FE3 8000 8000" + $"7F80 0200 0380 0200 03C0 0107 01F8 0000" + $"0100 0380 03E0 03F0 01FC 7FFF FFFF FFFF" + $"FFFF 03FF 03FF 03FF 03FF 01FF 01F8 0000" + $"0006 0000" +}; + +data 'CURS' (18) { + $"0000 4078 60FC 71CE 7986 7C06 7E0E 7F1C" + $"7FB8 7C30 6C30 4600 0630 0330 0300 0000" + $"C078 E0FC F1FE FBFF FFCF FF8F FF1F FFBE" + $"FFFC FE78 FF78 EFF8 CFF8 87F8 07F8 0300" + $"0001 0001" +}; + +data 'CURS' (19) { + $"0000 0002 0006 000E 001E 003E 007E 00FE" + $"01FE 003E 0036 0062 0060 00C0 00C0 0000" + $"0003 0007 000F 001F 003F 007F 00FF 01FF" + $"03FF 07FF 007F 00F7 00F3 01E1 01E0 01C0" + $"0001 000E" +}; + +data 'CURS' (20) { + $"0000 0080 01C0 03E0 0080 0080 0080 1FFC" + $"1FFC 0080 0080 0080 03E0 01C0 0080 0000" + $"0080 01C0 03E0 07F0 0FF8 01C0 3FFE 3FFE" + $"3FFE 3FFE 01C0 0FF8 07F0 03E0 01C0 0080" + $"0007 0008" +}; + +data 'CURS' (21) { + $"0000 0080 01C0 03E0 0080 0888 188C 3FFE" + $"188C 0888 0080 03E0 01C0 0080 0000 0000" + $"0080 01C0 03E0 07F0 0BE8 1DDC 3FFE 7FFF" + $"3FFE 1DDC 0BE8 07F0 03E0 01C0 0080 0000" + $"0007 0008" +}; + +data 'CURS' (22) { + $"0000 001E 000E 060E 0712 03A0 01C0 00E0" + $"0170 1238 1C18 1C00 1E00 0000 0000 0000" + $"007F 003F 0E1F 0F0F 0F97 07E3 03E1 21F0" + $"31F8 3A7C 3C3C 3E1C 3F00 3F80 0000 0000" + $"0006 0009" +}; + +data 'CURS' (23) { + $"0000 7800 7000 7060 48E0 05C0 0380 0700" + $"0E80 1C48 1838 0038 0078 0000 0000 0000" + $"FE00 FC00 F870 F0F0 E9F0 C7E0 87C0 0F84" + $"1F8C 3E5C 3C3C 387C 00FC 01FC 0000 0000" + $"0006 0006" +}; + +data 'CURS' (24) { + $"0006 000E 001C 0018 0020 0040 00F8 0004" + $"1FF4 200C 2AA8 1FF0 1F80 3800 6000 8000" + $"000F 001F 003E 007C 0070 00E0 01FC 3FF6" + $"7FF6 7FFE 7FFC 7FF8 3FF0 7FC0 F800 E000" + $"000A 0006" +}; + +resource 'ICN#' (128) { + { /* array: 2 elements */ + /* [1] */ + $"0000 0000 0041 C000 00A2 F000 03A5 FC00" + $"064B FF00 1CD7 FFC0 F1FF FFF0 E000 FFFC" + $"80FF FFFF 80FF FFFF 803F FFFE 80FF FFFE" + $"803F FFFA C0FF FFF6 7FFF FFEE 5FFF FFDE" + $"FFFF FFBE CFFF FF7F F3FF FEFF E4FF FDFE" + $"E13F FBFC E04F F7F8 E013 EFF0 7804 DFE0" + $"1E01 3FC0 0780 3F80 01E0 3F00 0078 3E00" + $"001E 3C00 0007 B800 0001 F000 0000 60", + /* [2] */ + $"0000 0000 0041 C000 00E3 F000 03E7 FC00" + $"07CF FF00 1FDF FFC0 FFFF FFF0 FFFF FFFC" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF 7FFF FFFF 7FFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE" + $"FFFF FFFC FFFF FFF8 FFFF FFF0 7FFF FFE0" + $"1FFF FFC0 07FF FF80 01FF FF00 007F FE00" + $"001F FC00 0007 F800 0001 F000 0000 60" + } +}; + +resource 'ics#' (128) { + { /* array: 2 elements */ + /* [1] */ + $"09C0 15F0 EBFC 8EFF AFFE 97FE DFFE EFFA" + $"BFE7 8BE6 C5DC 30D8 1C30 0760 03C0", + /* [2] */ + $"09C0 1DF0 FFFC FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFE FFFC 3FF8 0FF0 03E0 02C0" + } +}; + +resource 'ics4' (128) { + $"0000 EC0D 6FC0 0000 00DE BDD6 666F C000" + $"DEBB EE65 6666 6FC0 E2CD BEBB 6666 666E" + $"EC2C A566 6666 6660 E1C2 A666 6666 66D0" + $"BDBD E666 6666 6DC0 FFF6 6666 6666 5CC0" + $"ECDF 6666 666D 0DFF FC0C DF66 6650 DFFC" + $"5DC0 0CDF 6D0D FFC0 0C75 C00C D0DF FC00" + $"000D 6DC0 0DFF C000 0000 CE65 CFFC 0000" + $"0000 00DD 6FC0" +}; + +resource 'ics8' (128) { + $"0000 00F5 81F7 017F EBF1 2BF5 0000 0000" + $"0000 F888 8256 7FD2 D2D2 ECF1 F800 0000" + $"F9FB 5E5E FD82 EFB0 ECD2 D2D2 ECF1 F7F5" + $"AD5D 3333 5E87 5E82 D3D2 D2D2 D2D2 EBFD" + $"820F 3333 ACD5 D2EB D2D2 D2D2 D2D2 D2F5" + $"8808 3333 5FEF D2D2 D2D2 D2D2 D2D2 8000" + $"FB5E 5D5D D5D2 D2D2 D2D2 D2D2 D280 F600" + $"FDFF D6EC D2D2 D2D2 D2D2 D2D2 802B 2BF5" + $"FEF7 81F4 EFEB D2D2 D2D2 D280 F6F9 FFFD" + $"FEF6 002B 57FE F0EB D2D2 80F6 56FF FFF7" + $"7EAA F600 00F7 57F3 EC80 2B56 FFFF F700" + $"0031 CD86 F600 00F7 FA2B 56FF FFF7 0000" + $"0000 F57A EB80 F600 0056 FFFF F700 0000" + $"0000 0000 2AAB EC80 2BFF FFF7 0000 0000" + $"0000 0000 0000 5BAB F0FD F700 0000 0000" + $"0000 0000 0000 0000 01" +}; + + + diff --git a/src/mac/cursor.cpp b/src/mac/cursor.cpp index 23b9eb4c0c..c796592d9c 100644 --- a/src/mac/cursor.cpp +++ b/src/mac/cursor.cpp @@ -18,44 +18,59 @@ #include "wx/app.h" #include "wx/cursor.h" #include "wx/icon.h" +#include "wx/image.h" +#include "wx/xpmdecod.h" + #include "wx/mac/private.h" #if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) #endif -const short kwxCursorHandId = 9 ; -const short kwxCursorSizeWEId = 10 ; -const short kwxCursorSizeNSId = 11 ; -#if !TARGET_CARBON -Cursor* MacArrowCursorPtr = &qd.arrow ; -CursHandle MacArrowCursor = &MacArrowCursorPtr ; -#else -bool MacArrowInstalled = false ; -Cursor MacArrow ; -Cursor* MacArrowCursorPtr = &MacArrow ; -CursHandle MacArrowCursor = &MacArrowCursorPtr ; -#endif -CursHandle gMacCurrentCursor = NULL ; +const short kwxCursorBullseye = 10 ; +const short kwxCursorBlank = 11 ; +const short kwxCursorPencil = 12 ; +const short kwxCursorMagnifier = 13 ; +const short kwxCursorNoEntry = 14 ; +const short kwxCursorPaintBrush = 15 ; +const short kwxCursorPointRight = 16 ; +const short kwxCursorPointLeft = 17 ; +const short kwxCursorQuestionArrow = 18 ; +const short kwxCursorRightArrow = 19 ; +const short kwxCursorSizeNS = 20 ; +const short kwxCursorSize = 21 ; +const short kwxCursorSizeNESW = 22 ; +const short kwxCursorSizeNWSE = 23 ; +const short kwxCursorRoller = 24 ; + +wxCursor gMacCurrentCursor ; wxCursorRefData::wxCursorRefData() { -#if TARGET_CARBON - if ( !MacArrowInstalled ) - { - MacArrowCursorPtr = GetQDGlobalsArrow( &MacArrow ) ; - MacArrowInstalled = true ; - } -#endif - m_width = 32; - m_height = 32; + m_width = 16; + m_height = 16; m_hCursor = NULL ; + m_disposeHandle = false ; + m_releaseHandle = false ; + m_isColorCursor = false ; + m_themeCursor = -1 ; } wxCursorRefData::~wxCursorRefData() { -// if ( m_hCursor && ( m_hCursor != MacArrowCursor ) ) -// ::ReleaseResource( (Handle) m_hCursor ) ; + if ( m_isColorCursor ) + { + ::DisposeCCursor( (CCrsrHandle) m_hCursor ) ; + } + else if ( m_disposeHandle ) + { + ::DisposeHandle( (Handle ) m_hCursor ) ; + } + else if ( m_releaseHandle ) + { + // we don't release the resource since it may already + // be in use again + } } // Cursors @@ -68,11 +83,262 @@ wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSE { } -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) +wxCursor::wxCursor( const wxImage &image ) +{ + CreateFromImage( image ) ; +} + +wxCursor::wxCursor(const char **bits) +{ + (void) CreateFromXpm(bits); +} + +wxCursor::wxCursor(char **bits) +{ + (void) CreateFromXpm((const char **)bits); +} + +bool wxCursor::CreateFromXpm(const char **bits) +{ + wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid cursor data") ) + wxXPMDecoder decoder; + wxImage img = decoder.ReadData(bits); + wxCHECK_MSG( img.Ok(), FALSE, wxT("invalid cursor data") ) + CreateFromImage( img ) ; + return TRUE; +} + +short GetCTabIndex( CTabHandle colors , RGBColor *col ) +{ + short retval = 0 ; + unsigned long bestdiff = 0xFFFF ; + for ( int i = 0 ; i < (**colors).ctSize ; ++i ) + { + unsigned long diff = abs(col->red - (**colors).ctTable[i].rgb.red ) + + abs(col->green - (**colors).ctTable[i].rgb.green ) + + abs(col->blue - (**colors).ctTable[i].rgb.blue ) ; + if ( diff < bestdiff ) + { + bestdiff = diff ; + retval = (**colors).ctTable[i].value ; + } + } + return retval ; +} + +void wxCursor::CreateFromImage(const wxImage & image) { m_refData = new wxCursorRefData; - // TODO: create cursor from a file + wxImage image16 = image.Scale(16,16) ; + unsigned char * rgbBits = image16.GetData(); + + + int w = image16.GetWidth() ; + int h = image16.GetHeight() ; + bool bHasMask = image16.HasMask() ; + + int hotSpotX = image16.GetOptionInt(wxCUR_HOTSPOT_X); + int hotSpotY = image16.GetOptionInt(wxCUR_HOTSPOT_Y); + if (hotSpotX < 0 || hotSpotX >= w) + hotSpotX = 0; + if (hotSpotY < 0 || hotSpotY >= h) + hotSpotY = 0; + +#if 0 + // monochrome implementation + M_CURSORDATA->m_hCursor = NewHandle( sizeof( Cursor ) ) ; + M_CURSORDATA->m_disposeHandle = true ; + HLock( (Handle) M_CURSORDATA->m_hCursor ) ; + CursPtr cp = *(CursHandle)M_CURSORDATA->m_hCursor ; + memset( cp->data , 0 , sizeof( Bits16 ) ) ; + memset( cp->mask , 0 , sizeof( Bits16 ) ) ; + + unsigned char mr = image16.GetMaskRed() ; + unsigned char mg = image16.GetMaskGreen() ; + unsigned char mb = image16.GetMaskBlue() ; + for ( int y = 0 ; y < h ; ++y ) + { + short rowbits = 0 ; + short maskbits = 0 ; + + for ( int x = 0 ; x < w ; ++x ) + { + long pos = (y * w + x) * 3; + + unsigned char r = rgbBits[pos] ; + unsigned char g = rgbBits[pos+1] ; + unsigned char b = rgbBits[pos+2] ; + if ( bHasMask && r==mr && g==mg && b==mb ) + { + // masked area, does not appear anywhere + } + else + { + if ( (int)r + (int)g + (int)b < 0x0200 ) + { + rowbits |= ( 1 << (15-x) ) ; + } + maskbits |= ( 1 << (15-x) ) ; + } + } + cp->data[y] = rowbits ; + cp->mask[y] = maskbits ; + } + if ( !bHasMask ) + { + memcpy( cp->mask , cp->data , sizeof( Bits16) ) ; + } + cp->hotSpot.h = hotSpotX ; + cp->hotSpot.v = hotSpotY ; + HUnlock( (Handle) M_CURSORDATA->m_hCursor ) ; +#else + PixMapHandle pm = (PixMapHandle) NewHandleClear( sizeof (PixMap)) ; + short extent = 16 ; + short bytesPerPixel = 1 ; + short depth = 8 ; + Rect bounds = { 0 , 0 , extent , extent } ; + CCrsrHandle ch = (CCrsrHandle) NewHandleClear ( sizeof( CCrsr ) ) ; + CTabHandle newColors = GetCTable( 8 ) ; + HandToHand((Handle *) &newColors); + // set the values to the indices + for ( int i = 0 ; i < (**newColors).ctSize ; ++i ) + { + (**newColors).ctTable[i].value = i ; + } + HLock( (Handle) ch) ; + (**ch).crsrType = 0x8001 ; // color cursors + (**ch).crsrMap = pm ; + short bytesPerRow = bytesPerPixel * extent ; + + (**pm).baseAddr = 0; + (**pm).rowBytes = bytesPerRow | 0x8000; + (**pm).bounds = bounds; + (**pm).pmVersion = 0; + (**pm).packType = 0; + (**pm).packSize = 0; + (**pm).hRes = 0x00480000; /* 72 DPI default res */ + (**pm).vRes = 0x00480000; /* 72 DPI default res */ + (**pm).pixelSize = depth; + (**pm).pixelType = 0; + (**pm).cmpCount = 1; + (**pm).cmpSize = depth; + (**pm).pmTable = newColors; + + (**ch).crsrData = NewHandleClear( extent * bytesPerRow ) ; + (**ch).crsrXData = NULL ; + (**ch).crsrXValid = 0; + (**ch).crsrXHandle = NULL; + + (**ch).crsrHotSpot.h = hotSpotX ; + (**ch).crsrHotSpot.v = hotSpotY ; + (**ch).crsrXTable = NULL ; + (**ch).crsrID = GetCTSeed() ; + + memset( (**ch).crsr1Data , 0 , sizeof( Bits16 ) ) ; + memset( (**ch).crsrMask , 0 , sizeof( Bits16 ) ) ; + + unsigned char mr = image16.GetMaskRed() ; + unsigned char mg = image16.GetMaskGreen() ; + unsigned char mb = image16.GetMaskBlue() ; + for ( int y = 0 ; y < h ; ++y ) + { + short rowbits = 0 ; + short maskbits = 0 ; + + for ( int x = 0 ; x < w ; ++x ) + { + long pos = (y * w + x) * 3; + + unsigned char r = rgbBits[pos] ; + unsigned char g = rgbBits[pos+1] ; + unsigned char b = rgbBits[pos+2] ; + RGBColor col = { 0xFFFF ,0xFFFF, 0xFFFF } ; + + if ( bHasMask && r==mr && g==mg && b==mb ) + { + // masked area, does not appear anywhere + } + else + { + if ( (int)r + (int)g + (int)b < 0x0200 ) + { + rowbits |= ( 1 << (15-x) ) ; + } + maskbits |= ( 1 << (15-x) ) ; + + col = *((RGBColor*) wxColor( r , g , b ).GetPixel()) ; + } + *((*(**ch).crsrData) + y * bytesPerRow + x) = + GetCTabIndex( newColors , &col) ; + } + (**ch).crsr1Data[y] = rowbits ; + (**ch).crsrMask[y] = maskbits ; + } + if ( !bHasMask ) + { + memcpy( (**ch).crsrMask , (**ch).crsr1Data , sizeof( Bits16) ) ; + } + + HUnlock((Handle) ch) ; + M_CURSORDATA->m_hCursor = ch ; + M_CURSORDATA->m_isColorCursor = true ; +#endif +} + +wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) +{ + m_refData = new wxCursorRefData; + if ( flags == wxBITMAP_TYPE_MACCURSOR_RESOURCE ) + { + Str255 theName ; + + #if TARGET_CARBON + c2pstrcpy( (StringPtr) theName , cursor_file ) ; + #else + strcpy( (char *) theName , cursor_file ) ; + c2pstr( (char *) theName ) ; + #endif + + wxStAppResource resload ; + Handle resHandle = ::GetNamedResource( 'crsr' , theName ) ; + if ( resHandle ) + { + short theId = -1 ; + OSType theType ; + GetResInfo( resHandle , &theId , &theType , theName ) ; + ReleaseResource( resHandle ) ; + M_CURSORDATA->m_hCursor = GetCCursor( theId ) ; + if ( M_CURSORDATA->m_hCursor ) + M_CURSORDATA->m_isColorCursor = true ; + } + else + { + Handle resHandle = ::GetNamedResource( 'CURS' , theName ) ; + if ( resHandle ) + { + short theId = -1 ; + OSType theType ; + GetResInfo( resHandle , &theId , &theType , theName ) ; + ReleaseResource( resHandle ) ; + M_CURSORDATA->m_hCursor = GetCursor( theId ) ; + if ( M_CURSORDATA->m_hCursor ) + M_CURSORDATA->m_releaseHandle = true ; + } + } + } + else + { + wxImage image ; + image.LoadFile( cursor_file , flags ) ; + if( image.Ok() ) + { + image.SetOption(wxCUR_HOTSPOT_X,hotSpotX ) ; + image.SetOption(wxCUR_HOTSPOT_Y,hotSpotY ) ; + delete m_refData ; + CreateFromImage(image) ; + } + } } // Cursors by stock number @@ -80,150 +346,155 @@ wxCursor::wxCursor(int cursor_type) { m_refData = new wxCursorRefData; - switch (cursor_type) - { + { + case wxCURSOR_COPY_ARROW: + M_CURSORDATA->m_themeCursor = kThemeCopyArrowCursor ; + break; case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = ::GetCursor(watchCursor); + M_CURSORDATA->m_themeCursor = kThemeWatchCursor ; break; case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = ::GetCursor(iBeamCursor); + M_CURSORDATA->m_themeCursor = kThemeIBeamCursor ; break; case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = ::GetCursor(crossCursor); + M_CURSORDATA->m_themeCursor = kThemeCrossCursor; break; case wxCURSOR_SIZENWSE: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNWSE); } break; case wxCURSOR_SIZENESW: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNESW); } break; case wxCURSOR_SIZEWE: { - wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); + M_CURSORDATA->m_themeCursor = kThemeResizeLeftRightCursor; } break; case wxCURSOR_SIZENS: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNSId); - } - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNS); } + break; + case wxCURSOR_SIZING: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSize); + } + break; case wxCURSOR_HAND: { - wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_themeCursor = kThemePointingHandCursor; } break; case wxCURSOR_BULLSEYE: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorBullseye); } break; case wxCURSOR_PENCIL: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPencil); } break; case wxCURSOR_MAGNIFIER: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorMagnifier); } break; case wxCURSOR_NO_ENTRY: { wxStAppResource resload ; - M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorNoEntry); } break; - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } case wxCURSOR_WATCH: { - M_CURSORDATA->m_hCursor = ::GetCursor(watchCursor); + M_CURSORDATA->m_themeCursor = kThemeWatchCursor; + break; + } + case wxCURSOR_PAINT_BRUSH: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPaintBrush); + break; + } + case wxCURSOR_POINT_LEFT: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPointLeft); + break; + } + case wxCURSOR_POINT_RIGHT: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorPointRight); + break; + } + case wxCURSOR_QUESTION_ARROW: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorQuestionArrow); + break; + } + case wxCURSOR_BLANK: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorBlank); + break; + } + case wxCURSOR_RIGHT_ARROW: + { + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorRightArrow); break; } case wxCURSOR_SPRAYCAN: { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } - default: + wxStAppResource resload ; + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorRoller); + break; + } + case wxCURSOR_CHAR: case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = MacArrowCursor; - break; - } + case wxCURSOR_LEFT_BUTTON: + case wxCURSOR_RIGHT_BUTTON: + case wxCURSOR_MIDDLE_BUTTON: + default: + M_CURSORDATA->m_themeCursor = kThemeArrowCursor ; + break; + } + if ( M_CURSORDATA->m_themeCursor == -1 ) + M_CURSORDATA->m_releaseHandle = true ; } void wxCursor::MacInstall() const { - if ( m_refData && M_CURSORDATA->m_hCursor ) - { - ::SetCursor( *((CursHandle)M_CURSORDATA->m_hCursor) ) ; - gMacCurrentCursor = (CursHandle)M_CURSORDATA->m_hCursor ; - } - else - { - ::SetCursor( *MacArrowCursor ) ; - gMacCurrentCursor = NULL ; + gMacCurrentCursor = *this ; + if ( m_refData && M_CURSORDATA->m_themeCursor != -1 ) + { + SetThemeCursor( M_CURSORDATA->m_themeCursor ) ; + } + else if ( m_refData && M_CURSORDATA->m_hCursor ) + { + if ( M_CURSORDATA->m_isColorCursor ) + ::SetCCursor( (CCrsrHandle) M_CURSORDATA->m_hCursor ) ; + else + ::SetCursor( * (CursHandle) M_CURSORDATA->m_hCursor ) ; + } + else + { + SetThemeCursor( kThemeArrowCursor ) ; } } diff --git a/src/mac/dataobj.cpp b/src/mac/dataobj.cpp index c2f75326c0..049622ffb3 100644 --- a/src/mac/dataobj.cpp +++ b/src/mac/dataobj.cpp @@ -230,34 +230,51 @@ wxBitmapDataObject::wxBitmapDataObject( : wxBitmapDataObjectBase(rBitmap) { Init(); - - DoConvertToPng(); + if ( m_bitmap.Ok() ) + { + m_pngData = m_bitmap.GetPict() ; + m_pngSize = GetHandleSize( (Handle) m_pngData ) ; + } } wxBitmapDataObject::~wxBitmapDataObject() { - Clear(); + if ( m_pngData && m_bitmap.GetBitmapType() != kMacBitmapTypePict ) + { + KillPicture( (PicHandle) m_pngData ) ; + } + m_pngData = NULL ; + m_pngSize = 0 ; } void wxBitmapDataObject::SetBitmap( const wxBitmap& rBitmap ) { - ClearAll(); + if ( m_pngData && m_bitmap.GetBitmapType() != kMacBitmapTypePict ) + { + KillPicture( (PicHandle) m_pngData ) ; + } + m_pngData = NULL ; + m_pngSize = 0 ; wxBitmapDataObjectBase::SetBitmap(rBitmap); - DoConvertToPng(); + if ( m_bitmap.Ok() ) + { + m_pngData = m_bitmap.GetPict() ; + m_pngSize = GetHandleSize( (Handle) m_pngData ) ; + } } bool wxBitmapDataObject::GetDataHere( void* pBuf ) const { - if (!m_pngSize) + if (!m_pngData) { wxFAIL_MSG(wxT("attempt to copy empty bitmap failed")); return FALSE; } - memcpy(pBuf, m_pngData, m_pngSize); + memcpy(pBuf, *(Handle)m_pngData, GetHandleSize((Handle)m_pngData)); return TRUE; } @@ -267,41 +284,14 @@ bool wxBitmapDataObject::SetData( ) { Clear(); - m_pngSize = nSize; - m_pngData = malloc(m_pngSize); - - memcpy(m_pngData, pBuf, m_pngSize); - - wxMemoryInputStream vMstream((char*)m_pngData, m_pngSize); - wxImage vImage; - wxPNGHandler vHandler; - - if (!vHandler.LoadFile(&vImage, vMstream)) - { - return FALSE; - } - - m_bitmap = wxBitmap( vImage ) ; + PicHandle picHandle = (PicHandle) NewHandle( nSize ) ; + memcpy( *picHandle , pBuf , nSize ) ; + m_pngData = picHandle ; + m_pngSize = GetHandleSize( (Handle) picHandle ) ; + Rect frame = (**picHandle).picFrame ; + + m_bitmap.SetPict( m_pngData ) ; + m_bitmap.SetWidth( frame.right - frame.left ) ; + m_bitmap.SetHeight( frame.bottom - frame.top ) ; return m_bitmap.Ok(); } - -void wxBitmapDataObject::DoConvertToPng() -{ - if (!m_bitmap.Ok()) - return; - - wxCHECK_RET( wxImage::FindHandler(wxBITMAP_TYPE_PNG) != NULL, - wxT("You must call wxImage::AddHandler(new wxPNGHandler); to be able to use clipboard with bitmaps!") ); - - wxImage image = m_bitmap.ConvertToImage(); - - wxCountingOutputStream count; - image.SaveFile(count, wxBITMAP_TYPE_PNG); - - m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ??? - m_pngData = malloc(m_pngSize); - - wxMemoryOutputStream mstream((char*) m_pngData, m_pngSize); - image.SaveFile(mstream, wxBITMAP_TYPE_PNG); -} - diff --git a/src/mac/dc.cpp b/src/mac/dc.cpp index 14ced3443b..b98c6ef4df 100644 --- a/src/mac/dc.cpp +++ b/src/mac/dc.cpp @@ -8,38 +8,32 @@ // Copyright: (c) AUTHOR // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifdef __GNUG__ #pragma implementation "dc.h" #endif - #include "wx/dc.h" #include "wx/app.h" #include "wx/mac/uma.h" #include "wx/dcmemory.h" +#include "wx/dcprint.h" #include "wx/region.h" #include "wx/image.h" #include "wx/log.h" - #if __MSL__ >= 0x6000 #include "math.h" using namespace std ; #endif - #include "wx/mac/private.h" #include "ATSUnicode.h" #include "TextCommon.h" #include "TextEncodingConverter.h" - #if !USE_SHARED_LIBRARY IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) #endif - //----------------------------------------------------------------------------- // constants //----------------------------------------------------------------------------- - #define mm2inches 0.0393700787402 #define inches2mm 25.4 #define mm2twips 56.6929133859 @@ -52,7 +46,6 @@ const double M_PI = 3.14159265358979 ; const double RAD2DEG = 180.0 / M_PI; const short kEmulatedMode = -1 ; const short kUnsupportedMode = -2 ; - wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : m_ph( (GrafPtr) dc->m_macPort ) { @@ -60,60 +53,59 @@ wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : m_dc = dc ; dc->MacSetupPort(&m_ph) ; } - wxMacPortSetter::~wxMacPortSetter() { m_dc->MacCleanupPort(&m_ph) ; } - -wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) +wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) { m_formerClip = NewRgn() ; m_newClip = NewRgn() ; GetClip( m_formerClip ) ; - + if ( win ) { +#if 0 + // this clipping area was set to the parent window's drawing area, lead to problems + // with MacOSX controls drawing outside their wx' rectangle RgnHandle insidergn = NewRgn() ; int x = 0 , y = 0; wxWindow *parent = win->GetParent() ; parent->MacWindowToRootWindow( &x,&y ) ; - wxSize size = parent->GetSize() ; - SetRectRgn( insidergn , parent->MacGetLeftBorderSize() , parent->MacGetTopBorderSize() , - size.x - parent->MacGetLeftBorderSize() - parent->MacGetRightBorderSize(), - size.y - parent->MacGetTopBorderSize() - parent->MacGetBottomBorderSize()) ; - + SetRectRgn( insidergn , parent->MacGetLeftBorderSize() , parent->MacGetTopBorderSize() , + size.x - parent->MacGetRightBorderSize(), + size.y - parent->MacGetBottomBorderSize()) ; CopyRgn( (RgnHandle) parent->MacGetVisibleRegion(false).GetWXHRGN() , m_newClip ) ; SectRgn( m_newClip , insidergn , m_newClip ) ; OffsetRgn( m_newClip , x , y ) ; SetClip( m_newClip ) ; DisposeRgn( insidergn ) ; +#endif + int x = 0 , y = 0; + win->MacWindowToRootWindow( &x,&y ) ; + CopyRgn( (RgnHandle) ((wxWindow*)win)->MacGetVisibleRegion().GetWXHRGN() , m_newClip ) ; + OffsetRgn( m_newClip , x , y ) ; + SetClip( m_newClip ) ; } } - -wxMacWindowClipper::~wxMacWindowClipper() +wxMacWindowClipper::~wxMacWindowClipper() { SetClip( m_formerClip ) ; DisposeRgn( m_newClip ) ; DisposeRgn( m_formerClip ) ; } - //----------------------------------------------------------------------------- // Local functions //----------------------------------------------------------------------------- - static inline double dmin(double a, double b) { return a < b ? a : b; } static inline double dmax(double a, double b) { return a > b ? a : b; } static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; } - //----------------------------------------------------------------------------- // wxDC //----------------------------------------------------------------------------- - // this function emulates all wx colour manipulations, used to verify the implementation // by setting the mode in the blitting functions to kEmulatedMode - void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor ) ; void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor ) { @@ -197,47 +189,36 @@ void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColo dstColor.blue = dstColor.blue ^ srcColor.blue ; break ; } - } - wxDC::wxDC() { m_ok = FALSE; m_colour = TRUE; - m_mm_to_pix_x = mm2pt; m_mm_to_pix_y = mm2pt; - m_internalDeviceOriginX = 0; m_internalDeviceOriginY = 0; m_externalDeviceOriginX = 0; m_externalDeviceOriginY = 0; - m_logicalScaleX = 1.0; m_logicalScaleY = 1.0; m_userScaleX = 1.0; m_userScaleY = 1.0; m_scaleX = 1.0; m_scaleY = 1.0; - m_needComputeScaleX = FALSE; m_needComputeScaleY = FALSE; - m_macPort = NULL ; m_macMask = NULL ; m_ok = FALSE ; - m_macFontInstalled = false ; m_macBrushInstalled = false ; m_macPenInstalled = false ; - m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ; m_macBoundaryClipRgn = NewRgn() ; m_macCurrentClipRgn = NewRgn() ; - SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ; SetRectRgn( (RgnHandle) m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ; - m_pen = *wxBLACK_PEN; m_font = *wxNORMAL_FONT; m_brush = *wxWHITE_BRUSH; @@ -247,7 +228,6 @@ wxDC::wxDC() m_macForegroundPixMap = NULL ; m_macBackgroundPixMap = NULL ; } - wxDC::~wxDC(void) { DisposeRgn( (RgnHandle) m_macBoundaryClipRgn ) ; @@ -258,12 +238,10 @@ void wxDC::MacSetupPort(wxMacPortStateHelper* help) const wxASSERT( m_macCurrentPortStateHelper == NULL ) ; m_macCurrentPortStateHelper = help ; SetClip( (RgnHandle) m_macCurrentClipRgn); - m_macFontInstalled = false ; m_macBrushInstalled = false ; m_macPenInstalled = false ; } - void wxDC::MacCleanupPort(wxMacPortStateHelper* help) const { wxASSERT( m_macCurrentPortStateHelper == help ) ; @@ -293,22 +271,17 @@ void wxDC::MacCleanupPort(wxMacPortStateHelper* help) const m_macBackgroundPixMap = NULL ; } } - void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask ) { wxCHECK_RET( Ok(), wxT("invalid window dc") ); - wxCHECK_RET( bmp.Ok(), wxT("invalid bitmap") ); - wxMacPortSetter helper(this) ; - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord w = bmp.GetWidth(); wxCoord h = bmp.GetHeight(); wxCoord ww = XLOG2DEVREL(w); wxCoord hh = YLOG2DEVREL(h); - // Set up drawing mode short mode = (m_logicalFunction == wxCOPY ? srcCopy : //m_logicalFunction == wxCLEAR ? WHITENESS : @@ -323,7 +296,6 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask //m_logicalFunction == wxSRC_OR ? srcOr : //m_logicalFunction == wxSRC_AND ? SRCAND : srcCopy ); - if ( bmp.GetBitmapType() == kMacBitmapTypePict ) { Rect bitmaprect = { 0 , 0 , hh, ww }; ::OffsetRect( &bitmaprect, xx, yy ) ; @@ -333,7 +305,6 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask { GWorldPtr bmapworld = MAC_WXHBITMAP( bmp.GetHBITMAP() ); PixMapHandle bmappixels ; - // Set foreground and background colours (for bitmaps depth = 1) if(bmp.GetDepth() == 1) { @@ -349,15 +320,11 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask RGBForeColor( &black ) ; RGBBackColor( &white ) ; } - bmappixels = GetGWorldPixMap( bmapworld ) ; - wxCHECK_RET(LockPixels(bmappixels), wxT("DoDrawBitmap: Unable to lock pixels")); - Rect source = { 0, 0, h, w }; Rect dest = { yy, xx, yy + hh, xx + ww }; - if ( useMask && bmp.GetMask() ) { if( LockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())))) @@ -388,30 +355,23 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask m_macPenInstalled = false ; m_macBrushInstalled = false ; m_macFontInstalled = false ; - } - void wxDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ) { wxCHECK_RET(Ok(), wxT("Invalid dc wxDC::DoDrawIcon")); - wxCHECK_RET(icon.Ok(), wxT("Invalid icon wxDC::DoDrawIcon")); - DoDrawBitmap( icon , x , y , icon.GetMask() != NULL ) ; } void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) { wxCHECK_RET(Ok(), wxT("wxDC::DoSetClippingRegion Invalid DC")); wxCoord xx, yy, ww, hh; - xx = XLOG2DEVMAC(x); yy = YLOG2DEVMAC(y); ww = XLOG2DEVREL(width); hh = YLOG2DEVREL(height); - SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ; SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ; - if( m_clipping ) { m_clipX1 = wxMax( m_clipX1 , xx ); @@ -427,31 +387,25 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei m_clipX2 = xx + ww; m_clipY2 = yy + hh; } - } void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion ) { wxCHECK_RET( Ok(), wxT("invalid window dc") ) ; - wxMacPortSetter helper(this) ; if (region.Empty()) { DestroyClippingRegion(); return; } - wxCoord x, y, w, h; region.GetBox( x, y, w, h ); wxCoord xx, yy, ww, hh; - xx = XLOG2DEVMAC(x); yy = YLOG2DEVMAC(y); ww = XLOG2DEVREL(w); hh = YLOG2DEVREL(h); - // if we have a scaling that we cannot map onto native regions // we must use the box - if ( ww != w || hh != h ) { wxDC::DoSetClippingRegion( x, y, w, h ); @@ -480,9 +434,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion ) m_clipY2 = yy + hh; } } - } - void wxDC::DestroyClippingRegion() { wxMacPortSetter helper(this) ; @@ -567,7 +519,6 @@ void wxDC::SetDeviceOrigin( wxCoord x, wxCoord y ) m_externalDeviceOriginY = y; ComputeScaleAndOrigin(); } - #if 0 void wxDC::SetInternalDeviceOrigin( long x, long y ) { @@ -587,12 +538,10 @@ void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) m_signY = (yBottomUp ? -1 : 1); ComputeScaleAndOrigin(); } - wxSize wxDC::GetPPI() const { return wxSize(72, 72); } - int wxDC::GetDepth() const { if ( IsPortColor( (CGrafPtr) m_macPort ) ) @@ -601,19 +550,15 @@ int wxDC::GetDepth() const } return 1 ; } - void wxDC::ComputeScaleAndOrigin() { // CMB: copy scale to see if it changes double origScaleX = m_scaleX; double origScaleY = m_scaleY; - m_scaleX = m_logicalScaleX * m_userScaleX; m_scaleY = m_logicalScaleY * m_userScaleY; - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - // CMB: if scale has changed call SetPen to recalulate the line width if (m_scaleX != origScaleX || m_scaleY != origScaleY) { @@ -628,103 +573,79 @@ void wxDC::ComputeScaleAndOrigin() void wxDC::SetPalette( const wxPalette& palette ) { } - void wxDC::SetBackgroundMode( int mode ) { m_backgroundMode = mode ; } - void wxDC::SetFont( const wxFont &font ) { m_font = font; m_macFontInstalled = false ; } - void wxDC::SetPen( const wxPen &pen ) { if ( m_pen == pen ) return ; - m_pen = pen; - m_macPenInstalled = false ; } - void wxDC::SetBrush( const wxBrush &brush ) { if (m_brush == brush) return; - m_brush = brush; m_macBrushInstalled = false ; } - void wxDC::SetBackground( const wxBrush &brush ) { if (m_backgroundBrush == brush) return; - m_backgroundBrush = brush; - if (!m_backgroundBrush.Ok()) return; m_macBrushInstalled = false ; } - void wxDC::SetLogicalFunction( int function ) { if (m_logicalFunction == function) return; - m_logicalFunction = function ; m_macFontInstalled = false ; m_macBrushInstalled = false ; m_macPenInstalled = false ; } - extern bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, const wxColour & col, int style); - bool wxDC::DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style) { return wxDoFloodFill(this, x, y, col, style); } - bool wxDC::DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const { wxCHECK_MSG( Ok(), false, wxT("wxDC::DoGetPixel Invalid DC") ); wxMacPortSetter helper(this) ; - RGBColor colour; - GetCPixel( XLOG2DEVMAC(x), YLOG2DEVMAC(y), &colour ); - // Convert from Mac colour to wx col->Set( colour.red >> 8, colour.green >> 8, colour.blue >> 8); - return true ; } - void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; wxCoord offset = ( (m_pen.GetWidth() == 0 ? 1 : m_pen.GetWidth() ) * (wxCoord)m_scaleX - 1) / 2; - wxCoord xx1 = XLOG2DEVMAC(x1) - offset; wxCoord yy1 = YLOG2DEVMAC(y1) - offset; wxCoord xx2 = XLOG2DEVMAC(x2) - offset; wxCoord yy2 = YLOG2DEVMAC(y2) - offset; - if ((m_pen.GetCap() == wxCAP_ROUND) && (m_pen.GetWidth() <= 1)) { @@ -745,17 +666,14 @@ void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) xx2++; } } - ::MoveTo(xx1, yy1); ::LineTo(xx2, yy2); } } - void wxDC::DoCrossHair( wxCoord x, wxCoord y ) { wxCHECK_RET( Ok(), wxT("wxDC::DoCrossHair Invalid window dc") ); wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() != wxTRANSPARENT) { int w = 0; @@ -763,19 +681,15 @@ void wxDC::DoCrossHair( wxCoord x, wxCoord y ) GetSize( &w, &h ); wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); - MacInstallPen(); ::MoveTo( XLOG2DEVMAC(0), yy ); ::LineTo( XLOG2DEVMAC(w), yy ); ::MoveTo( xx, YLOG2DEVMAC(0) ); ::LineTo( xx, YLOG2DEVMAC(h) ); - CalcBoundingBox(x, y); CalcBoundingBox(x+w, y+h); - } } - /* * To draw arcs properly the angles need to be converted from the WX style: * Angles start on the +ve X axis and go anti-clockwise (As you would draw on @@ -783,41 +697,20 @@ void wxDC::DoCrossHair( wxCoord x, wxCoord y ) * TO * the Mac style: * Angles start on the +ve y axis and go clockwise. - * To achive this I work out which quadrant the angle lies in then map this to - * the equivalent quadrant on the Mac. (Sin and Cos values reveal which - * quadrant you are in). */ static double wxConvertWXangleToMACangle(double angle) { - double sin_a, cos_a; - - sin_a = sin(angle / RAD2DEG); - cos_a = cos(angle / RAD2DEG); - - if( (sin_a >= 0.0) && (cos_a >= 0.0) ) { - angle = acos(sin_a) * RAD2DEG; - } - else if( (sin_a >= 0.0) && (cos_a <= 0.0) ) { - sin_a *= -1; - angle = acos(sin_a) * RAD2DEG + 180; - } - else if( (sin_a <= 0.0) && (cos_a >= 0.0) ) { - angle = acos(sin_a) * RAD2DEG + 180; - } - else if( (sin_a < 0.0) && (cos_a < 0.0) ) { - sin_a *= -1; - angle = acos(sin_a) * RAD2DEG + 180; - } - return angle; + double newAngle = 90 - angle ; + if ( newAngle < 0 ) + newAngle += 360 ; + return newAngle ; } - void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc ) { wxCHECK_RET(Ok(), wxT("wxDC::DoDrawArc Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord xx1 = XLOG2DEVMAC(x1); wxCoord yy1 = YLOG2DEVMAC(y1); wxCoord xx2 = XLOG2DEVMAC(x2); @@ -829,7 +722,6 @@ void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, double radius = sqrt((double)(dx*dx+dy*dy)); wxCoord rad = (wxCoord)radius; double radius1, radius2; - if (xx1 == xx2 && yy1 == yy2) { radius1 = 0.0; @@ -853,9 +745,7 @@ void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, if( (xx1 > xx2) || (yy1 > yy2) ) { alpha2 *= -1; } - Rect r = { yyc - rad, xxc - rad, yyc + rad, xxc + rad }; - if(m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush(); PaintArc(&r, alpha1, alpha2); @@ -865,32 +755,28 @@ void wxDC::DoDrawArc( wxCoord x1, wxCoord y1, FrameArc(&r, alpha1, alpha2); } } - void wxDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h, double sa, double ea ) { wxCHECK_RET(Ok(), wxT("wxDC::DoDrawEllepticArc Invalid DC")); wxMacPortSetter helper(this) ; - Rect r; double angle = sa - ea; // Order important Mac in opposite direction to wx - + // we have to make sure that the filling is always counter-clockwise + if ( angle > 0 ) + angle -= 360 ; wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(w); wxCoord hh = m_signY * YLOG2DEVREL(h); - // handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } if (hh < 0) { hh = -hh; yy = yy - hh; } - sa = wxConvertWXangleToMACangle(sa); - r.top = yy; r.left = xx; r.bottom = yy + hh; r.right = xx + ww; - if(m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush(); PaintArc(&r, (short)sa, (short)angle); @@ -900,13 +786,10 @@ void wxDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h, FrameArc(&r, (short)sa, (short)angle); } } - void wxDC::DoDrawPoint( wxCoord x, wxCoord y ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() != wxTRANSPARENT) { wxCoord xx1 = XLOG2DEVMAC(x); @@ -916,26 +799,20 @@ void wxDC::DoDrawPoint( wxCoord x, wxCoord y ) CalcBoundingBox(x, y); } } - void wxDC::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - if (m_pen.GetStyle() == wxTRANSPARENT) return; - MacInstallPen() ; - wxCoord offset = ( (m_pen.GetWidth() == 0 ? 1 : m_pen.GetWidth() ) * (wxCoord)m_scaleX - 1) / 2 ; - wxCoord x1, x2 , y1 , y2 ; x1 = XLOG2DEVMAC(points[0].x + xoffset); y1 = YLOG2DEVMAC(points[0].y + yoffset); ::MoveTo(x1 - offset, y1 - offset ); - for (int i = 0; i < n-1; i++) { x2 = XLOG2DEVMAC(points[i+1].x + xoffset); @@ -943,182 +820,143 @@ void wxDC::DoDrawLines(int n, wxPoint points[], ::LineTo( x2 - offset, y2 - offset ); } } - void wxDC::DoDrawPolygon(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle ) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord x1, x2 , y1 , y2 ; - if ( m_brush.GetStyle() == wxTRANSPARENT && m_pen.GetStyle() == wxTRANSPARENT ) return ; - PolyHandle polygon = OpenPoly(); - x2 = x1 = XLOG2DEVMAC(points[0].x + xoffset); y2 = y1 = YLOG2DEVMAC(points[0].y + yoffset); ::MoveTo(x1,y1); - for (int i = 1; i < n; i++) { x2 = XLOG2DEVMAC(points[i].x + xoffset); y2 = YLOG2DEVMAC(points[i].y + yoffset); ::LineTo(x2, y2); } - // close the polyline if necessary if ( x1 != x2 || y1 != y2 ) { ::LineTo(x1,y1 ) ; } - ClosePoly(); - if (m_brush.GetStyle() != wxTRANSPARENT) { - MacInstallBrush(); ::PaintPoly( polygon ); - } - if (m_pen.GetStyle() != wxTRANSPARENT) { - MacInstallPen() ; ::FramePoly( polygon ) ; - } KillPoly( polygon ); } - void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(width); wxCoord hh = m_signY * YLOG2DEVREL(height); - // CMB: draw nothing if transformed w or h is 0 if (ww == 0 || hh == 0) return; - // CMB: handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - Rect rect = { yy , xx , yy + hh , xx + ww } ; - if (m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush() ; ::PaintRect( &rect ) ; } - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; ::FrameRect( &rect ) ; } } - void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(width); wxCoord hh = m_signY * YLOG2DEVREL(height); - // CMB: draw nothing if transformed w or h is 0 if (ww == 0 || hh == 0) return; - // CMB: handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - Rect rect = { yy , xx , yy + hh , xx + ww } ; - if (m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush() ; ::PaintRoundRect( &rect , int(radius * 2) , int(radius * 2) ) ; } - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; ::FrameRoundRect( &rect , int(radius * 2) , int(radius * 2) ) ; } } - void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxCoord xx = XLOG2DEVMAC(x); wxCoord yy = YLOG2DEVMAC(y); wxCoord ww = m_signX * XLOG2DEVREL(width); wxCoord hh = m_signY * YLOG2DEVREL(height); - // CMB: draw nothing if transformed w or h is 0 if (ww == 0 || hh == 0) return; - // CMB: handle -ve width and/or height if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - Rect rect = { yy , xx , yy + hh , xx + ww } ; - if (m_brush.GetStyle() != wxTRANSPARENT) { MacInstallBrush() ; ::PaintOval( &rect ) ; } - if (m_pen.GetStyle() != wxTRANSPARENT) { MacInstallPen() ; @@ -1127,33 +965,26 @@ void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height) } - bool wxDC::CanDrawBitmap(void) const { return true ; } - bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, wxDC *source, wxCoord xsrc, wxCoord ysrc, int logical_func , bool useMask, wxCoord xsrcMask, wxCoord ysrcMask ) { wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc")); wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC")); - if ( logical_func == wxNO_OP ) return TRUE ; - if (xsrcMask == -1 && ysrcMask == -1) { xsrcMask = xsrc; ysrcMask = ysrc; } - // correct the parameter in case this dc does not have a mask at all - if ( useMask && !source->m_macMask ) useMask = false ; - Rect srcrect , dstrect ; srcrect.top = source->YLOG2DEVMAC(ysrc) ; srcrect.left = source->XLOG2DEVMAC(xsrc) ; @@ -1163,7 +994,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, dstrect.left = XLOG2DEVMAC(xdest) ; dstrect.bottom = YLOG2DEVMAC(ydest + height ) ; dstrect.right = XLOG2DEVMAC(xdest + width ) ; - short mode = kUnsupportedMode ; bool invertDestinationFirst = false ; switch ( logical_func ) @@ -1220,24 +1050,19 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, case wxXOR: // src XOR dst mode = notSrcXor ; // ok break ; - default : break ; - } - if ( mode == kUnsupportedMode ) { wxFAIL_MSG("unsupported blitting mode" ); return FALSE ; } - CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ; PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ; if ( LockPixels(bmappixels) ) { wxMacPortSetter helper(this) ; - if ( source->GetDepth() == 1 ) { RGBForeColor( &MAC_WXCOLORREF(m_textForegroundColour.GetPixel()) ) ; @@ -1251,7 +1076,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, RGBForeColor( &black ) ; RGBBackColor( &white ) ; } - if ( useMask && source->m_macMask ) { if ( mode == srcCopy ) @@ -1304,12 +1128,10 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, { RGBColor srcColor ; RGBColor dstColor ; - SetPort( (GrafPtr) sourcePort ) ; GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ; SetPort( (GrafPtr) m_macPort ) ; GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; - wxMacCalculateColour( logical_func , srcColor , dstColor ) ; SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; } @@ -1362,23 +1184,19 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, { Point dstPoint = { dstrect.top + y , dstrect.left + x } ; Point srcPoint = { srcrect.top + y , srcrect.left + x } ; - { RGBColor srcColor ; RGBColor dstColor ; - SetPort( (GrafPtr) sourcePort ) ; GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ; SetPort( (GrafPtr) m_macPort ) ; GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; - wxMacCalculateColour( logical_func , srcColor , dstColor ) ; SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ; } } } } - } else { @@ -1394,37 +1212,33 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, } UnlockPixels( bmappixels ) ; } - m_macPenInstalled = false ; m_macBrushInstalled = false ; m_macFontInstalled = false ; - return TRUE; } - inline Fixed IntToFixed( int inInt ) { return (((SInt32) inInt) << 16); } - +inline int FixedToInt( Fixed inFixed ) + { + return (((SInt32) inFixed) >> 16); + } void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, double angle) { wxCHECK_RET( Ok(), wxT("wxDC::DoDrawRotatedText Invalid window dc") ); - if (angle == 0.0 ) { DrawText(str, x, y); return; } - if ( str.Length() == 0 ) return ; - wxMacPortSetter helper(this) ; MacInstallFont() ; - wxString text ; if ( wxApp::s_macDefaultEncodingIsPC ) { @@ -1434,7 +1248,6 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, { text = str ; } - wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; if ( 0 ) { @@ -1442,66 +1255,80 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, SetAntiAliasedTextEnabled(true, SInt16(m_scaleY * font->m_macFontSize)); m_macAliasWasEnabled = true ; } - OSStatus status = noErr ; - TECObjectRef ec; status = TECCreateConverter(&ec, kTextEncodingMacRoman, kTextEncodingUnicodeDefault); wxASSERT_MSG( status == noErr , "couldn't start converter" ) ; - ByteCount byteOutLen ; ByteCount byteInLen = text.Length() ; ByteCount byteBufferLen = byteInLen *2 ; char* buf = new char[byteBufferLen] ; - status = TECConvertText(ec, (ConstTextPtr)text.c_str() , byteInLen, &byteInLen, (TextPtr)buf, byteBufferLen, &byteOutLen); - wxASSERT_MSG( status == noErr , "couldn't convert text" ) ; status = TECDisposeConverter(ec); wxASSERT_MSG( status == noErr , "couldn't dispose converter" ) ; - ATSUTextLayout atsuLayout ; UniCharCount chars = byteOutLen / 2 ; status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) buf , 0 , byteOutLen / 2 , byteOutLen / 2 , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; wxASSERT_MSG( status == noErr , "couldn't create the layout of the rotated text" ); - int iAngle = int( angle ); + int drawX = XLOG2DEVMAC(x) ; + int drawY = YLOG2DEVMAC(y) ; + + ATSUTextMeasurement textBefore ; + ATSUTextMeasurement textAfter ; + ATSUTextMeasurement ascent ; + ATSUTextMeasurement descent ; + + if ( abs(iAngle) > 0 ) { Fixed atsuAngle = IntToFixed( iAngle ) ; - ByteCount angleSize = sizeof(Fixed) ; - ATSUAttributeTag rotationTag = kATSULineRotationTag ; - ATSUAttributeValuePtr angleValue = &atsuAngle ; - status = ::ATSUSetLayoutControls(atsuLayout , 1 , &rotationTag , &angleSize , &angleValue ) ; + ATSUAttributeTag atsuTags[] = + { + kATSULineRotationTag , + } ; + ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = + { + sizeof( Fixed ) , + } ; + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = + { + &atsuAngle , + } ; + status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag), + atsuTags, atsuSizes, atsuValues ) ; } + status = ::ATSUMeasureText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, + &textBefore , &textAfter, &ascent , &descent ); + drawX += (int)( sin(angle/RAD2DEG) * FixedToInt(ascent) ) ; + drawY += (int)( cos(angle/RAD2DEG) * FixedToInt(ascent) ) ; status = ::ATSUDrawText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, - IntToFixed(XLOG2DEVMAC(x) ) , IntToFixed(YLOG2DEVMAC(y) ) ); + IntToFixed(drawX) , IntToFixed(drawY) ); wxASSERT_MSG( status == noErr , "couldn't draw the rotated text" ); Rect rect ; status = ::ATSUMeasureTextImage( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, - IntToFixed(XLOG2DEVMAC(x) ) , IntToFixed(YLOG2DEVMAC(y) ) , &rect ); + IntToFixed(drawX) , IntToFixed(drawY) , &rect ); wxASSERT_MSG( status == noErr , "couldn't measure the rotated text" ); - OffsetRect( &rect , -m_macLocalOrigin.x , -m_macLocalOrigin.y ) ; CalcBoundingBox(XDEV2LOG(rect.left), YDEV2LOG(rect.top) ); CalcBoundingBox(XDEV2LOG(rect.right), YDEV2LOG(rect.bottom) ); ::ATSUDisposeTextLayout(atsuLayout); delete[] buf ; } - void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) { wxCHECK_RET(Ok(), wxT("wxDC::DoDrawText Invalid DC")); wxMacPortSetter helper(this) ; - long xx = XLOG2DEVMAC(x); long yy = YLOG2DEVMAC(y); #if TARGET_CARBON bool useDrawThemeText = ( DrawThemeTextBox != (void*) kUnresolvedCFragSymbolAddress ) ; - useDrawThemeText = false ; + if ( IsKindOf(CLASSINFO( wxPrinterDC ) ) || m_font.GetNoAntiAliasing() ) + useDrawThemeText = false ; #endif MacInstallFont() ; if ( 0 ) @@ -1510,15 +1337,12 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) SetAntiAliasedTextEnabled(true, 8); m_macAliasWasEnabled = true ; } - FontInfo fi ; ::GetFontInfo( &fi ) ; - #if TARGET_CARBON if ( !useDrawThemeText ) #endif yy += fi.ascent ; - ::MoveTo( xx , yy ); if ( m_backgroundMode == wxTRANSPARENT ) { @@ -1528,11 +1352,9 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) { ::TextMode( srcCopy ) ; } - const char *text = NULL ; int length = 0 ; wxString macText ; - if ( wxApp::s_macDefaultEncodingIsPC ) { macText = wxMacMakeMacStringFromPC( strtext ) ; @@ -1544,13 +1366,10 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) text = strtext ; length = strtext.Length() ; } - int laststop = 0 ; int i = 0 ; int line = 0 ; - { - while( i < length ) { if( text[i] == 13 || text[i] == 10) @@ -1558,8 +1377,23 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) #if TARGET_CARBON if ( useDrawThemeText ) { - Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 1000 } ; + Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 10000 } ; CFStringRef mString = CFStringCreateWithBytes( NULL , (UInt8*) text + laststop , i - laststop , CFStringGetSystemEncoding(), false ) ; + if ( m_backgroundMode != wxTRANSPARENT ) + { + Point bounds={0,0} ; + Rect background = frame ; + SInt16 baseline ; + ::GetThemeTextDimensions( mString, + kThemeCurrentPortFont, + kThemeStateActive, + false, + &bounds, + &baseline ); + background.right = background.left + bounds.h ; + background.bottom = background.top + bounds.v ; + ::EraseRect( &background ) ; + } ::DrawThemeTextBox( mString, kThemeCurrentPortFont, kThemeStateActive, @@ -1584,8 +1418,23 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) #if TARGET_CARBON if ( useDrawThemeText ) { - Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 1000 } ; + Rect frame = { yy + line*(fi.descent + fi.ascent + fi.leading) ,xx , yy + (line+1)*(fi.descent + fi.ascent + fi.leading) , xx + 10000 } ; CFStringRef mString = CFStringCreateWithCString( NULL , text + laststop , kCFStringEncodingMacRoman ) ; + if ( m_backgroundMode != wxTRANSPARENT ) + { + Point bounds={0,0} ; + Rect background = frame ; + SInt16 baseline ; + ::GetThemeTextDimensions( mString, + kThemeCurrentPortFont, + kThemeStateActive, + false, + &bounds, + &baseline ); + background.right = background.left + bounds.h ; + background.bottom = background.top + bounds.v ; + ::EraseRect( &background ) ; + } ::DrawThemeTextBox( mString, kThemeCurrentPortFont, kThemeStateActive, @@ -1603,45 +1452,37 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) } ::TextMode( srcOr ) ; } - bool wxDC::CanGetTextExtent() const { wxCHECK_MSG(Ok(), false, wxT("Invalid DC")); - return true ; } - void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *height, wxCoord *descent, wxCoord *externalLeading , wxFont *theFont ) const { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; - wxFont formerFont = m_font ; - if ( theFont ) { // work around the constness *((wxFont*)(&m_font)) = *theFont ; } - MacInstallFont() ; - FontInfo fi ; ::GetFontInfo( &fi ) ; -#if TARGET_CARBON +#if TARGET_CARBON bool useGetThemeText = ( GetThemeTextDimensions != (void*) kUnresolvedCFragSymbolAddress ) ; - useGetThemeText = false ; + if ( IsKindOf(CLASSINFO( wxPrinterDC ) ) || ((wxFont*)&m_font)->GetNoAntiAliasing() ) + useGetThemeText = false ; #endif - if ( height ) *height = YDEV2LOGREL( fi.descent + fi.ascent ) ; if ( descent ) *descent =YDEV2LOGREL( fi.descent ); if ( externalLeading ) *externalLeading = YDEV2LOGREL( fi.leading ) ; - const char *text = NULL ; int length = 0 ; wxString macText ; @@ -1650,20 +1491,18 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he macText = wxMacMakeMacStringFromPC( string ) ; text = macText ; length = macText.Length() ; - } + } else { text = string ; length = string.Length() ; } - int laststop = 0 ; int i = 0 ; int curwidth = 0 ; if ( width ) { *width = 0 ; - while( i < length ) { if( text[i] == 13 || text[i] == 10) @@ -1696,7 +1535,7 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he } i++ ; } - + #if TARGET_CARBON if ( useGetThemeText ) { @@ -1720,7 +1559,6 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he if ( curwidth > *width ) *width = XDEV2LOGREL( curwidth ) ; } - if ( theFont ) { // work around the constness @@ -1728,40 +1566,54 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he m_macFontInstalled = false ; } } - wxCoord wxDC::GetCharWidth(void) const { wxCHECK_MSG(Ok(), 1, wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - MacInstallFont() ; - - int width = ::TextWidth( "n" , 0 , 1 ) ; - + int width = 0 ; +#if TARGET_CARBON + bool useGetThemeText = ( GetThemeTextDimensions != (void*) kUnresolvedCFragSymbolAddress ) ; + if ( ((wxFont*)&m_font)->GetNoAntiAliasing() ) + useGetThemeText = false ; +#endif + char text[] = "H" ; +#if TARGET_CARBON + if ( useGetThemeText ) + { + Point bounds={0,0} ; + SInt16 baseline ; + CFStringRef mString = CFStringCreateWithBytes( NULL , (UInt8*) text , 1 , CFStringGetSystemEncoding(), false ) ; + ::GetThemeTextDimensions( mString, + kThemeCurrentPortFont, + kThemeStateActive, + false, + &bounds, + &baseline ); + CFRelease( mString ) ; + width = bounds.h ; + } + else +#endif + { + width = ::TextWidth( text , 0 , 1 ) ; + } return YDEV2LOGREL(width) ; } - wxCoord wxDC::GetCharHeight(void) const { wxCHECK_MSG(Ok(), 1, wxT("Invalid DC")); - wxMacPortSetter helper(this) ; - MacInstallFont() ; - FontInfo fi ; ::GetFontInfo( &fi ) ; - return YDEV2LOGREL( fi.descent + fi.ascent ); } - void wxDC::Clear(void) { wxCHECK_RET(Ok(), wxT("Invalid DC")); wxMacPortSetter helper(this) ; Rect rect = { -31000 , -31000 , 31000 , 31000 } ; - if (m_backgroundBrush.GetStyle() != wxTRANSPARENT) { ::PenNormal() ; @@ -1770,28 +1622,22 @@ void wxDC::Clear(void) ::EraseRect( &rect ) ; } } - void wxDC::MacInstallFont() const { wxCHECK_RET(Ok(), wxT("Invalid DC")); // if ( m_macFontInstalled ) // return ; Pattern blackColor ; - MacSetupBackgroundForCurrentPort(m_backgroundBrush) ; - wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; - if ( font ) { ::TextFont( font->m_macFontNum ) ; ::TextSize( short(m_scaleY * font->m_macFontSize) ) ; ::TextFace( font->m_macFontStyle ) ; - m_macFontInstalled = true ; m_macBrushInstalled = false ; m_macPenInstalled = false ; - RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()); ::RGBForeColor( &forecolor ); @@ -1805,27 +1651,20 @@ void wxDC::MacInstallFont() const Style fontStyle ; GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; GetFNum( fontName, &fontId ); - ::TextFont( fontId ) ; ::TextSize( short(m_scaleY * fontSize) ) ; ::TextFace( fontStyle ) ; - // todo reset after spacing changes - or store the current spacing somewhere - m_macFontInstalled = true ; m_macBrushInstalled = false ; m_macPenInstalled = false ; - RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()); ::RGBForeColor( &forecolor ); ::RGBBackColor( &backcolor ); } - short mode = patCopy ; - // todo : - switch( m_logicalFunction ) { case wxCOPY: // src @@ -1844,9 +1683,7 @@ void wxDC::MacInstallFont() const case wxSRC_INVERT: // (NOT src) mode = notPatCopy ; break ; - // unsupported TODO - case wxCLEAR: // 0 case wxAND_REVERSE:// src AND (NOT dst) case wxAND: // src AND dst @@ -1863,76 +1700,59 @@ void wxDC::MacInstallFont() const break ; } ::PenMode( mode ) ; - OSStatus status = noErr ; - Fixed atsuSize = IntToFixed( int(m_scaleY * font->m_macFontSize) ) ; - Style qdStyle = font->m_macFontStyle ; ATSUFontID atsuFont = font->m_macATSUFontID ; - status = ::ATSUCreateStyle(&(ATSUStyle)m_macATSUIStyle) ; wxASSERT_MSG( status == noErr , "couldn't create ATSU style" ) ; - ATSUAttributeTag atsuTags[] = { kATSUFontTag , kATSUSizeTag , // kATSUColorTag , - kATSUBaselineClassTag , +// kATSUBaselineClassTag , kATSUVerticalCharacterTag, - kATSUQDBoldfaceTag , kATSUQDItalicTag , kATSUQDUnderlineTag , kATSUQDCondensedTag , kATSUQDExtendedTag , - } ; - ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { sizeof( ATSUFontID ) , sizeof( Fixed ) , // sizeof( RGBColor ) , - sizeof( BslnBaselineClass ) , +// sizeof( BslnBaselineClass ) , sizeof( ATSUVerticalCharacterType), - sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , - } ; - Boolean kTrue = true ; Boolean kFalse = false ; - BslnBaselineClass kBaselineDefault = kBSLNHangingBaseline ; - +// BslnBaselineClass kBaselineDefault = kBSLNHangingBaseline ; ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal; - ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { &atsuFont , &atsuSize , // &MAC_WXCOLORREF( m_textForegroundColour.GetPixel() ) , - &kBaselineDefault , +// &kBaselineDefault , &kHorizontal, - (qdStyle & bold) ? &kTrue : &kFalse , (qdStyle & italic) ? &kTrue : &kFalse , (qdStyle & underline) ? &kTrue : &kFalse , (qdStyle & condense) ? &kTrue : &kFalse , (qdStyle & extend) ? &kTrue : &kFalse , } ; - status = ::ATSUSetAttributes((ATSUStyle)m_macATSUIStyle, sizeof(atsuTags)/sizeof(ATSUAttributeTag), atsuTags, atsuSizes, atsuValues); wxASSERT_MSG( status == noErr , "couldn't set create ATSU style" ) ; - } - Pattern gHatchPatterns[] = { { { 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF } }, @@ -1941,13 +1761,11 @@ Pattern gHatchPatterns[] = { { 0x10 , 0x10 , 0x10 , 0xFF , 0x10 , 0x10 , 0x10 , 0x10 } }, { { 0x00 , 0x00 , 0x00 , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 } }, { { 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 } }, - { { 0x81 , 0x42 , 0x24 , 0x18 , 0x18 , 0x24 , 0x42 , 0x81 } } + { { 0x81 , 0x42 , 0x24 , 0x18 , 0x18 , 0x24 , 0x42 , 0x81 } } } ; - static void wxMacGetHatchPattern(int hatchStyle, Pattern *pattern) { int theIndex = 1 ; - switch(hatchStyle) { case wxBDIAGONAL_HATCH: @@ -1974,31 +1792,23 @@ static void wxMacGetHatchPattern(int hatchStyle, Pattern *pattern) } *pattern = gHatchPatterns[theIndex-1] ; } - void wxDC::MacInstallPen() const { wxCHECK_RET(Ok(), wxT("Invalid DC")); - Pattern blackColor; - // if ( m_macPenInstalled ) // return ; - RGBColor forecolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel()); RGBColor backcolor = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()); ::RGBForeColor( &forecolor ); ::RGBBackColor( &backcolor ); - ::PenNormal() ; int penWidth = m_pen.GetWidth() * (int) m_scaleX ; - // null means only one pixel, at whatever resolution if ( penWidth == 0 ) penWidth = 1 ; ::PenSize(penWidth, penWidth); - int penStyle = m_pen.GetStyle(); - if (penStyle == wxSOLID) { ::PenPat(GetQDGlobalsBlack(&blackColor)); @@ -2041,9 +1851,9 @@ void wxDC::MacInstallPen() const case wxUSER_DASH : { wxDash* dash ; - int number = m_pen.GetDashes(&dash) ; + m_pen.GetDashes(&dash) ; // right now we don't allocate larger pixmaps - // int number = + // int number = m_pen.GetDashes(&dash) ; for ( int i = 0 ; i < 8 ; ++i ) { @@ -2054,11 +1864,8 @@ void wxDC::MacInstallPen() const } ::PenPat(&pat); } - short mode = patCopy ; - // todo : - switch( m_logicalFunction ) { case wxCOPY: // only foreground color, leave background (thus not patCopy) @@ -2077,9 +1884,7 @@ void wxDC::MacInstallPen() const case wxSRC_INVERT: // (NOT src) mode = notPatCopy ; break ; - // unsupported TODO - case wxCLEAR: // 0 case wxAND_REVERSE:// src AND (NOT dst) case wxAND: // src AND dst @@ -2100,7 +1905,6 @@ void wxDC::MacInstallPen() const m_macBrushInstalled = false ; m_macFontInstalled = false ; } - void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background ) { Pattern whiteColor ; @@ -2138,22 +1942,16 @@ void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background ) } } } - void wxDC::MacInstallBrush() const { wxCHECK_RET(Ok(), wxT("Invalid DC")); - Pattern blackColor ; // if ( m_macBrushInstalled ) // return ; - // foreground - bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ; - ::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) ); ::RGBBackColor( &MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()) ); - int brushStyle = m_brush.GetStyle(); if (brushStyle == wxSOLID) { @@ -2174,23 +1972,18 @@ void wxDC::MacInstallBrush() const int width = bitmap->GetWidth() ; int height = bitmap->GetHeight() ; GWorldPtr gw = NULL ; - if ( m_brush.GetStyle() == wxSTIPPLE ) gw = MAC_WXHBITMAP(bitmap->GetHBITMAP()) ; else gw = MAC_WXHBITMAP(bitmap->GetMask()->GetMaskBitmap()) ; - PixMapHandle gwpixmaphandle = GetGWorldPixMap( gw ) ; LockPixels( gwpixmaphandle ) ; - bool isMonochrome = !IsPortColor( gw ) ; - if ( !isMonochrome ) { if ( (**gwpixmaphandle).pixelSize == 1 ) isMonochrome = true ; } - if ( isMonochrome && width == 8 && height == 8 ) { ::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) ); @@ -2213,12 +2006,10 @@ void wxDC::MacInstallBrush() const Handle image; long imageSize; PixPatHandle pixpat = NewPixPat() ; - CopyPixMap(gwpixmaphandle, (**pixpat).patMap); imageSize = GetPixRowBytes((**pixpat).patMap) * ((**(**pixpat).patMap).bounds.bottom - (**(**pixpat).patMap).bounds.top); - PtrToHand( (**gwpixmaphandle).baseAddr, &image, imageSize ); (**pixpat).patData = image; if ( isMonochrome ) @@ -2246,7 +2037,6 @@ void wxDC::MacInstallBrush() const { ::PenPat(GetQDGlobalsBlack(&blackColor)); } - short mode = patCopy ; switch( m_logicalFunction ) { @@ -2272,9 +2062,7 @@ void wxDC::MacInstallBrush() const case wxSRC_INVERT: // (NOT src) mode = notPatCopy ; break ; - // unsupported TODO - case wxCLEAR: // 0 case wxAND_REVERSE:// src AND (NOT dst) case wxAND: // src AND dst @@ -2295,47 +2083,38 @@ void wxDC::MacInstallBrush() const m_macPenInstalled = false ; m_macFontInstalled = false ; } - // --------------------------------------------------------------------------- // coordinates transformations // --------------------------------------------------------------------------- - wxCoord wxDCBase::DeviceToLogicalX(wxCoord x) const { return ((wxDC *)this)->XDEV2LOG(x); } - wxCoord wxDCBase::DeviceToLogicalY(wxCoord y) const { return ((wxDC *)this)->YDEV2LOG(y); } - wxCoord wxDCBase::DeviceToLogicalXRel(wxCoord x) const { return ((wxDC *)this)->XDEV2LOGREL(x); } - wxCoord wxDCBase::DeviceToLogicalYRel(wxCoord y) const { return ((wxDC *)this)->YDEV2LOGREL(y); } - wxCoord wxDCBase::LogicalToDeviceX(wxCoord x) const { return ((wxDC *)this)->XLOG2DEV(x); } - wxCoord wxDCBase::LogicalToDeviceY(wxCoord y) const { return ((wxDC *)this)->YLOG2DEV(y); } - wxCoord wxDCBase::LogicalToDeviceXRel(wxCoord x) const { return ((wxDC *)this)->XLOG2DEVREL(x); } - wxCoord wxDCBase::LogicalToDeviceYRel(wxCoord y) const { return ((wxDC *)this)->YLOG2DEVREL(y); diff --git a/src/mac/dcprint.cpp b/src/mac/dcprint.cpp index 6c32de8ad0..8d809ced36 100644 --- a/src/mac/dcprint.cpp +++ b/src/mac/dcprint.cpp @@ -46,14 +46,16 @@ GrafPtr macPrintFormerPort = NULL ; wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) { - OSStatus err ; + OSStatus err = noErr ; wxString message ; m_printData = printdata ; m_printData.ConvertToNative() ; #if TARGET_CARBON && PM_USE_SESSION_APIS - err = UMAPrOpen(&m_macPrintSessionPort) ; + m_macPrintSessionPort = printdata.m_macPrintSession ; + PMRetain( m_macPrintSessionPort ) ; + if ( err != noErr || m_macPrintSessionPort == kPMNoData ) #else err = UMAPrOpen(NULL) ; @@ -64,7 +66,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; + PMRelease( m_macPrintSessionPort ) ; #else UMAPrClose(NULL) ; #endif @@ -75,8 +77,13 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) #if !TARGET_CARBON if ( ::PrValidate( (THPrint) m_printData.m_macPrintSettings ) ) { - ::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) ; // the driver has changed in the mean time, should we pop up a page setup dialog ? + if ( !::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) ) + { + UMAPrClose(NULL) ; + m_ok = FALSE; + return; + } } err = PrError() ; if ( err != noErr ) @@ -89,6 +96,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) return; } ::GetPort( &macPrintFormerPort ) ; + /* m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ; err = PrError() ; if ( err ) @@ -102,7 +110,9 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) } // sets current port m_macPort = (GrafPtr ) m_macPrintSessionPort ; + */ #else + /* #if PM_USE_SESSION_APIS err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort, (PMPrintSettings)m_printData.m_macPrintSettings, @@ -121,7 +131,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; + PMRelease(&m_macPrintSessionPort) ; #else UMAPrClose(NULL) ; #endif @@ -130,6 +140,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) } // sets current port ::GetPort( (GrafPtr *)&m_macPort ) ; + */ #endif m_ok = TRUE ; m_minY = m_minX = 0 ; @@ -143,7 +154,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; + PMRelease(&m_macPrintSessionPort) ; #else UMAPrClose(NULL) ; #endif @@ -160,11 +171,12 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata) wxPrinterDC::~wxPrinterDC(void) { - OSStatus err ; +// OSStatus err ; wxString message ; #if !TARGET_CARBON if ( m_ok ) { + /* ::PrCloseDoc( (TPPrPort) m_macPrintSessionPort ) ; err = PrError() ; @@ -182,6 +194,119 @@ wxPrinterDC::~wxPrinterDC(void) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } + */ + ::UMAPrClose(NULL) ; +// ::SetPort( macPrintFormerPort ) ; + ::SetPort( LMGetWMgrPort() ) ; + } +#else + if ( m_ok ) + { +/* + #if PM_USE_SESSION_APIS + err = PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort); + #else + err = PMEndDocument(m_macPrintSessionPort); + #endif + if ( err != noErr ) + { + message.Printf( "Print Error %ld", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + } + */ + #if TARGET_CARBON && PM_USE_SESSION_APIS + PMRelease(&m_macPrintSessionPort) ; + #else + UMAPrClose(NULL) ; + #endif + } +#endif +} + +bool wxPrinterDC::StartDoc( const wxString& WXUNUSED(message) ) +{ + OSStatus err = noErr ; + wxString message ; + +#if !TARGET_CARBON + m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ; + err = PrError() ; + if ( err ) + { + message.Printf( "Print Error %d", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + UMAPrClose(NULL) ; + m_ok = FALSE; + return false ; + } + // sets current port + m_macPort = (GrafPtr ) m_macPrintSessionPort ; +#else + #if PM_USE_SESSION_APIS + err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort, + (PMPrintSettings)m_printData.m_macPrintSettings, + (PMPageFormat)m_printData.m_macPageFormat); + if ( err != noErr ) + #else + m_macPrintSessionPort = kPMNoReference ; + err = PMBeginDocument( + m_printData.m_macPrintSettings, + m_printData.m_macPageFormat, + &m_macPrintSessionPort); + if ( err != noErr || m_macPrintSessionPort == kPMNoReference ) + #endif + { + message.Printf( "Print Error %ld", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + #if TARGET_CARBON && PM_USE_SESSION_APIS + PMRelease(&m_macPrintSessionPort) ; + #else + UMAPrClose(NULL) ; + #endif + m_ok = FALSE; + return m_ok; + } + // sets current port + ::GetPort( (GrafPtr *)&m_macPort ) ; +#endif + m_ok = TRUE ; + m_minY = m_minX = 0 ; +#if TARGET_CARBON + PMRect rPaper; + + err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper); + if ( err != noErr ) + { + message.Printf( "Print Error %ld", err ) ; + wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; + dialog.ShowModal(); + #if TARGET_CARBON && PM_USE_SESSION_APIS + PMRelease(&m_macPrintSessionPort) ; + #else + UMAPrClose(NULL) ; + #endif + m_ok = FALSE; + return m_ok; + } + m_maxX = (wxCoord)(rPaper.right - rPaper.left) ; + m_maxY = (wxCoord)(rPaper.bottom - rPaper.top) ; +#else + m_maxX = (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ; + m_maxY = (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ; +#endif + return m_ok ; +} + +void wxPrinterDC::EndDoc(void) +{ + OSStatus err ; + wxString message ; +#if !TARGET_CARBON + if ( m_ok ) + { ::UMAPrClose(NULL) ; // ::SetPort( macPrintFormerPort ) ; ::SetPort( LMGetWMgrPort() ) ; @@ -200,24 +325,10 @@ wxPrinterDC::~wxPrinterDC(void) wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } - #if TARGET_CARBON && PM_USE_SESSION_APIS - UMAPrClose(&m_macPrintSessionPort) ; - #else - UMAPrClose(NULL) ; - #endif } #endif } -bool wxPrinterDC::StartDoc( const wxString& WXUNUSED(message) ) -{ - return m_ok ; -} - -void wxPrinterDC::EndDoc(void) -{ -} - void wxPrinterDC::StartPage(void) { if ( !m_ok ) @@ -286,6 +397,14 @@ void wxPrinterDC::StartPage(void) ::SetPort( macPrintFormerPort ) ; m_ok = FALSE ; } + PMRect rPaper; + + err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper); + if ( !err ) + { + m_macLocalOrigin.x = (int) (rPaper.left) ; + m_macLocalOrigin.y = (int) (rPaper.top) ; + } #endif } diff --git a/src/mac/dnd.cpp b/src/mac/dnd.cpp index 5369a1cf34..598284893d 100644 --- a/src/mac/dnd.cpp +++ b/src/mac/dnd.cpp @@ -173,6 +173,7 @@ bool wxDropTarget::GetData() { UInt16 items ; OSErr result; + bool firstFileAdded = false ; CountDragItems((DragReference)m_currentDrag, &items); for (UInt16 index = 1; index <= items; ++index) { @@ -195,7 +196,11 @@ bool wxDropTarget::GetData() Ptr theData ; GetFlavorDataSize((DragReference)m_currentDrag, theItem, theType, &dataSize); if ( theType == 'TEXT' ) + { + // this increment is only valid for allocating, on the next GetFlavorData + // call it is reset again to the original value dataSize++ ; + } theData = new char[dataSize]; GetFlavorData((DragReference)m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); if( theType == 'TEXT' ) @@ -203,7 +208,7 @@ bool wxDropTarget::GetData() theData[dataSize]=0 ; if ( wxApp::s_macDefaultEncodingIsPC ) { - wxMacConvertToPC((char*)theData) ; + wxMacConvertToPC((char*)theData,(char*)theData,dataSize) ; } m_dataObject->SetData( format, dataSize, theData ); } @@ -211,7 +216,13 @@ bool wxDropTarget::GetData() { HFSFlavor* theFile = (HFSFlavor*) theData ; wxString name = wxMacFSSpec2MacFilename( &theFile->fileSpec ) ; - ((wxFileDataObject*)m_dataObject)->AddFile( name ) ; + if ( firstFileAdded ) + ((wxFileDataObject*)m_dataObject)->AddFile( name ) ; + else + { + ((wxFileDataObject*)m_dataObject)->SetData( 0 , name.c_str() ) ; + firstFileAdded = true ; + } } else { @@ -234,6 +245,28 @@ bool wxDropTarget::GetData() //----------------------------------------------------------------------------- // drag request +wxDropSource::wxDropSource(wxWindow *win, + const wxCursor &cursorCopy, + const wxCursor &cursorMove, + const wxCursor &cursorStop) + : wxDropSourceBase(cursorCopy, cursorMove, cursorStop) +{ + wxMacEnsureTrackingHandlersInstalled() ; + m_window = win; +} + +wxDropSource::wxDropSource(wxDataObject& data, + wxWindow *win, + const wxCursor &cursorCopy, + const wxCursor &cursorMove, + const wxCursor &cursorStop) + : wxDropSourceBase(cursorCopy, cursorMove, cursorStop) +{ + wxMacEnsureTrackingHandlersInstalled() ; + SetData( data ); + m_window = win; +} + wxDropSource::wxDropSource(wxWindow *win, const wxIcon &iconCopy, const wxIcon &iconMove, @@ -365,6 +398,21 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) return wxDragCopy ; } +bool wxDropSource::MacInstallDefaultCursor(wxDragResult effect) +{ + const wxCursor& cursor = GetCursor(effect); + if ( cursor.Ok() ) + { + cursor.MacInstall() ; + + return TRUE; + } + else + { + return FALSE; + } +} + bool gTrackingGlobalsInstalled = false ; // passing the globals via refcon is not needed by the CFM and later architectures anymore @@ -446,11 +494,46 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind // this window is entered trackingGlobals->m_currentTargetWindow = win ; trackingGlobals->m_currentTarget = win->GetDropTarget() ; - if ( trackingGlobals->m_currentTarget ) { - trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ; - if ( trackingGlobals->m_currentTarget->OnEnter( - localx , localy , wxDragCopy ) != wxDragNone ) + wxDragResult result = wxDragNone ; + if ( trackingGlobals->m_currentTarget ) + { + trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ; + result = trackingGlobals->m_currentTarget->OnEnter( + localx , localy , wxDragCopy ) ; + } + + if ( trackingGlobals->m_currentSource && trackingGlobals->m_currentSource->GiveFeedback( result ) == FALSE ) + { + if ( trackingGlobals->m_currentSource->MacInstallDefaultCursor( result ) == FALSE ) + { + switch( result ) + { + case wxDragCopy : + { + wxCursor cursor(wxCURSOR_COPY_ARROW) ; + cursor.MacInstall() ; + } + break ; + case wxDragMove : + { + wxCursor cursor(wxCURSOR_ARROW) ; + cursor.MacInstall() ; + } + break ; + case wxDragNone : + { + wxCursor cursor(wxCURSOR_NO_ENTRY) ; + cursor.MacInstall() ; + } + break ; + default : + break ; + } + } + } + + if ( result != wxDragNone ) { int x , y ; x = y = 0 ; diff --git a/src/mac/filedlg.cpp b/src/mac/filedlg.cpp index cef71e0136..f290292a75 100644 --- a/src/mac/filedlg.cpp +++ b/src/mac/filedlg.cpp @@ -8,11 +8,9 @@ // Copyright: (c) AUTHOR // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifdef __GNUG__ #pragma implementation "filedlg.h" #endif - #include "wx/defs.h" #include "wx/app.h" #include "wx/utils.h" @@ -20,81 +18,84 @@ #include "wx/filedlg.h" #include "wx/intl.h" #include "wx/tokenzr.h" - #ifndef __DARWIN__ #include "PLStringFuncs.h" #endif - #if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxFileDialog, wxDialog) #endif - // begin wxmac - #include "wx/mac/private.h" - #include - #include "MoreFiles.h" #include "MoreFilesExtras.h" - extern bool gUseNavServices ; - // the data we need to pass to our standard file hook routine // includes a pointer to the dialog, a pointer to the standard // file reply record (so we can inspect the current selection) // and a copy of the "previous" file spec of the reply record // so we can see if the selection has changed - -const int kwxMacFileTypes = 10 ; - struct OpenUserDataRec { int currentfilter ; - wxString name [kwxMacFileTypes] ; - wxString extensions[kwxMacFileTypes] ; - OSType filtermactypes[kwxMacFileTypes] ; - int numfilters ; + bool saveMode ; + wxArrayString name ; + wxArrayString extensions ; + wxArrayLong filtermactypes ; + NavMenuItemSpecArrayHandle menuitems ; }; typedef struct OpenUserDataRec OpenUserDataRec, *OpenUserDataRecPtr; - static pascal void NavEventProc( NavEventCallbackMessage inSelector, NavCBRecPtr ioParams, NavCallBackUserData ioUserData); - #if TARGET_CARBON static NavEventUPP sStandardNavEventFilter = NewNavEventUPP(NavEventProc); #else static NavEventUPP sStandardNavEventFilter = NewNavEventProc(NavEventProc); #endif - static pascal void NavEventProc( NavEventCallbackMessage inSelector, NavCBRecPtr ioParams, NavCallBackUserData ioUserData ) { - OpenUserDataRec * data = ( OpenUserDataRec *) ioUserData ; + OpenUserDataRec * data = ( OpenUserDataRec *) ioUserData ; if (inSelector == kNavCBEvent) { - // In Universal Headers 3.2, Apple changed the definition of - /* - #if UNIVERSAL_INTERFACES_VERSION >= 0x0320 // Universal Headers 3.2 - UModalAlerts::ProcessModalEvent(*(ioParams->eventData.eventDataParms.event)); - - #else - UModalAlerts::ProcessModalEvent(*(ioParams->eventData.event)); - #endif - */ - wxTheApp->MacHandleOneEvent(ioParams->eventData.eventDataParms.event); - } else if ( inSelector == kNavCBPopupMenuSelect ) + } + else if ( inSelector == kNavCBStart ) { - NavMenuItemSpec * menu = (NavMenuItemSpec *) ioParams->eventData.eventDataParms.param ; - data->currentfilter = menu->menuType ; + if ( data->menuitems ) + NavCustomControl(ioParams->context, kNavCtlSelectCustomType, &(*data->menuitems)[data->currentfilter]); + } + else if ( inSelector == kNavCBPopupMenuSelect ) + { + NavMenuItemSpec * menu = (NavMenuItemSpec *) ioParams->eventData.eventDataParms.param ; + if ( menu->menuCreator == 'WXNG' ) + { + data->currentfilter = menu->menuType ; + if ( data->saveMode ) + { + int i = menu->menuType ; + wxString extension = data->extensions[i].AfterLast('.') ; + extension.MakeLower() ; + Str255 filename ; + // get the current filename + NavCustomControl(ioParams->context, kNavCtlGetEditFileName, &filename); + CopyPascalStringToC( filename , (char*) filename ) ; + wxString sfilename( filename ) ; + int pos = sfilename.Find('.',TRUE) ; + if ( pos != wxNOT_FOUND ) + { + sfilename = sfilename.Left(pos+1)+extension ; + CopyCStringToPascal( sfilename.c_str() , filename ) ; + NavCustomControl(ioParams->context, kNavCtlSetEditFileName, &filename); + } + } + } } } - const char * gfilters[] = { "*.TXT" , @@ -103,7 +104,6 @@ const char * gfilters[] = NULL } ; - OSType gfiltersmac[] = { 'TEXT' , @@ -114,26 +114,27 @@ OSType gfiltersmac[] = } ; - void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) { - myData->currentfilter = 0 ; - + myData->menuitems = NULL ; + myData->currentfilter = 0 ; + myData->saveMode = FALSE ; + if ( filter && filter[0] ) { wxString filter2(filter) ; int filterIndex = 0; bool isName = true ; wxString current ; - for( unsigned int i = 0; i < filter2.Len(); i++ ) + for( unsigned int i = 0; i < filter2.Len() ; i++ ) { if( filter2.GetChar(i) == wxT('|') ) { if( isName ) { - myData->name[filterIndex] = current ; + myData->name.Add( current ) ; } else { - myData->extensions[filterIndex] = current.MakeUpper() ; + myData->extensions.Add( current.MakeUpper() ) ; ++filterIndex ; } isName = !isName ; @@ -149,37 +150,33 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) wxASSERT_MSG( filterIndex == 0 || !isName , "incorrect format of format string" ) ; if ( current.IsEmpty() ) - myData->extensions[filterIndex] = myData->name[filterIndex] ; + myData->extensions.Add( myData->name[filterIndex] ) ; else - myData->extensions[filterIndex] = current.MakeUpper() ; + myData->extensions.Add( current.MakeUpper() ) ; + if ( filterIndex == 0 || isName ) + myData->name.Add( current.MakeUpper() ) ; + ++filterIndex ; - - myData->numfilters = filterIndex ; - for ( int i = 0 ; i < myData->numfilters ; i++ ) + const size_t extCount = myData->extensions.GetCount(); + for ( size_t i = 0 ; i < extCount; i++ ) { int j ; for ( j = 0 ; gfilters[j] ; j++ ) { if ( strcmp( myData->extensions[i] , gfilters[j] ) == 0 ) { - myData->filtermactypes[i] = gfiltersmac[j] ; + myData->filtermactypes.Add( gfiltersmac[j] ) ; break ; } } if( gfilters[j] == NULL ) { - myData->filtermactypes[i] = '****' ; + myData->filtermactypes.Add( '****' ) ; } } } - else - { - myData->numfilters = 0 ; - } - } - static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data) { Str255 filename ; @@ -193,7 +190,7 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP wxString file(filename) ; file.MakeUpper() ; - if ( data->numfilters > 0 ) + if ( data->extensions.GetCount() > 0 ) { //for ( int i = 0 ; i < data->numfilters ; ++i ) int i = data->currentfilter ; @@ -201,7 +198,7 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP return true ; { - if ( type == data->filtermactypes[i] ) + if ( type == (OSType)data->filtermactypes[i] ) return true ; wxStringTokenizer tokenizer( data->extensions[i] , ";" ) ; @@ -219,13 +216,11 @@ static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecP } return true ; } - #ifndef __DARWIN__ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dataPtr) { OpenUserDataRecPtr data = (OpenUserDataRecPtr) dataPtr ; // return true if this item is invisible or a file - Boolean visibleFlag; Boolean folderFlag; @@ -246,9 +241,7 @@ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dat return false ; } #endif - // end wxmac - wxString wxFileSelector(const char *title, const char *defaultDir, const char *defaultFileName, const char *defaultExtension, const char *filter, int flags, @@ -256,36 +249,29 @@ wxString wxFileSelector(const char *title, { // If there's a default extension specified but no filter, we create a suitable // filter. - wxString filter2(""); if ( defaultExtension && !filter ) filter2 = wxString("*.") + wxString(defaultExtension) ; else if ( filter ) filter2 = filter; - wxString defaultDirString; if (defaultDir) defaultDirString = defaultDir; else defaultDirString = ""; - wxString defaultFilenameString; if (defaultFileName) defaultFilenameString = defaultFileName; else defaultFilenameString = ""; - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - if ( fileDialog.ShowModal() == wxID_OK ) { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; + return fileDialog.GetPath(); } else return wxGetEmptyString(); } - WXDLLEXPORT wxString wxFileSelectorEx(const char *title, const char *defaultDir, const char *defaultFileName, @@ -295,26 +281,22 @@ WXDLLEXPORT wxString wxFileSelectorEx(const char *title, wxWindow* parent, int x, int y) - { wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - if ( fileDialog.ShowModal() == wxID_OK ) { *defaultFilterIndex = fileDialog.GetFilterIndex(); - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; + return fileDialog.GetPath(); } else return wxGetEmptyString(); } - wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, long style, const wxPoint& pos) { - wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ; + wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ; m_message = message; m_dialogStyle = style; m_parent = parent; @@ -322,10 +304,9 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, m_fileName = defaultFileName; m_dir = defaultDir; m_wildCard = wildCard; - m_filterIndex = 1; + m_filterIndex = 0; } - pascal Boolean CrossPlatformFilterCallback ( AEDesc *theItem, void *info, @@ -335,7 +316,6 @@ pascal Boolean CrossPlatformFilterCallback ( { bool display = true; OpenUserDataRecPtr data = (OpenUserDataRecPtr) callBackUD ; - if (filterMode == kNavFilteringBrowserList) { NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ; @@ -346,94 +326,79 @@ pascal Boolean CrossPlatformFilterCallback ( display = CheckFile( spec.name , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ; } } - return display; } - int wxFileDialog::ShowModal() { - NavDialogOptions mNavOptions; - NavObjectFilterUPP mNavFilterUPP = NULL; - NavPreviewUPP mNavPreviewUPP = NULL ; - NavReplyRecord mNavReply; - AEDesc mDefaultLocation ; - bool mSelectDefault = false ; + NavDialogOptions mNavOptions; + NavObjectFilterUPP mNavFilterUPP = NULL; + NavPreviewUPP mNavPreviewUPP = NULL ; + NavReplyRecord mNavReply; + AEDesc mDefaultLocation ; + bool mSelectDefault = false ; - ::NavGetDefaultDialogOptions(&mNavOptions); + // setup dialog + ::NavGetDefaultDialogOptions(&mNavOptions); + mNavFilterUPP = nil; + mNavPreviewUPP = nil; + mSelectDefault = false; + mNavReply.validRecord = false; + mNavReply.replacing = false; + mNavReply.isStationery = false; + mNavReply.translationNeeded = false; + mNavReply.selection.descriptorType = typeNull; + mNavReply.selection.dataHandle = nil; + mNavReply.keyScript = smSystemScript; + mNavReply.fileTranslation = nil; - mNavFilterUPP = nil; - mNavPreviewUPP = nil; - mSelectDefault = false; - mNavReply.validRecord = false; - mNavReply.replacing = false; - mNavReply.isStationery = false; - mNavReply.translationNeeded = false; - mNavReply.selection.descriptorType = typeNull; - mNavReply.selection.dataHandle = nil; - mNavReply.keyScript = smSystemScript; - mNavReply.fileTranslation = nil; + // Set default location, the location + // that's displayed when the dialog + // first appears + + FSSpec location ; + wxMacFilename2FSSpec( m_dir , &location ) ; + OSErr err = noErr ; + + mDefaultLocation.descriptorType = typeNull; + mDefaultLocation.dataHandle = nil; + err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation ); + if ( mDefaultLocation.dataHandle ) { - // Set default location, the location - // that's displayed when the dialog - // first appears - - FSSpec location ; - wxMacFilename2FSSpec( m_dir , &location ) ; - OSErr err = noErr ; - - mDefaultLocation.descriptorType = typeNull; - mDefaultLocation.dataHandle = nil; - - err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation ); - - if ( mDefaultLocation.dataHandle ) { - - if (mSelectDefault) { - mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation; - } else { - mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation; - } + if (mSelectDefault) { + mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation; + } else { + mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation; } - + } + #if TARGET_CARBON - c2pstrcpy((StringPtr)mNavOptions.message, m_message) ; + c2pstrcpy((StringPtr)mNavOptions.message, m_message) ; #else - strcpy((char *)mNavOptions.message, m_message) ; - c2pstr((char *)mNavOptions.message ) ; + strcpy((char *)mNavOptions.message, m_message) ; + c2pstr((char *)mNavOptions.message ) ; #endif #if TARGET_CARBON - c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ; + c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ; #else - strcpy((char *)mNavOptions.savedFileName, m_fileName) ; - c2pstr((char *)mNavOptions.savedFileName ) ; + strcpy((char *)mNavOptions.savedFileName, m_fileName) ; + c2pstr((char *)mNavOptions.savedFileName ) ; #endif + // zero all data + + m_path = wxEmptyString ; + m_fileName = wxEmptyString ; + m_paths.Empty(); + m_fileNames.Empty(); - if ( m_dialogStyle & wxSAVE ) - { - - mNavOptions.dialogOptionFlags |= kNavNoTypePopup ; - mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ; - mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ; - - err = ::NavPutFile( - &mDefaultLocation, - &mNavReply, - &mNavOptions, - sStandardNavEventFilter , - 'TEXT', - 'TEXT', - 0L); // User Data - } - else - { - OpenUserDataRec myData; - MakeUserDataRec( &myData , m_wildCard ) ; - NavTypeListHandle typelist = NULL ; - - if ( myData.numfilters > 0 ) + OpenUserDataRec myData; + MakeUserDataRec( &myData , m_wildCard ) ; + myData.currentfilter = m_filterIndex ; + if ( myData.extensions.GetCount() > 0 ) + { + mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ; + myData.menuitems = mNavOptions.popupExtension ; + for ( int i = 0 ; i < myData.extensions.GetCount() ; ++i ) { - mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.numfilters ) ; - for ( int i = 0 ; i < myData.numfilters ; ++i ) { (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ; (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ; (*mNavOptions.popupExtension)[i].menuType = i ; @@ -443,73 +408,87 @@ int wxFileDialog::ShowModal() strcpy((char *)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ; c2pstr((char *)(*mNavOptions.popupExtension)[i].menuItemName ) ; #endif - } - } - - mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ; - if ( m_dialogStyle & wxMULTIPLE ) - mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ; - else - mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ; - - err = ::NavGetFile( - &mDefaultLocation, - &mNavReply, - &mNavOptions, - sStandardNavEventFilter , - mNavPreviewUPP, - mNavFilterUPP, - typelist /*inFileTypes.TypeListHandle() */, - &myData); // User Data - if ( typelist ) - DisposeHandle( (Handle) typelist ) ; - } + } + } + if ( m_dialogStyle & wxSAVE ) + { + myData.saveMode = true ; + mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ; + mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ; - DisposeNavObjectFilterUPP(mNavFilterUPP); - if ( mDefaultLocation.dataHandle != nil ) + err = ::NavPutFile( + &mDefaultLocation, + &mNavReply, + &mNavOptions, + sStandardNavEventFilter , + NULL, + kNavGenericSignature, + &myData); // User Data + m_filterIndex = myData.currentfilter ; + } + else + { + myData.saveMode = false ; + mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ; + if ( m_dialogStyle & wxMULTIPLE ) + mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ; + else + mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ; + + err = ::NavGetFile( + &mDefaultLocation, + &mNavReply, + &mNavOptions, + sStandardNavEventFilter , + mNavPreviewUPP, + mNavFilterUPP, + NULL , + &myData); + m_filterIndex = myData.currentfilter ; + } + + DisposeNavObjectFilterUPP(mNavFilterUPP); + if ( mDefaultLocation.dataHandle != nil ) + { + ::AEDisposeDesc(&mDefaultLocation); + } + + if ( (err != noErr) && (err != userCanceledErr) ) { + return wxID_CANCEL ; + } + if (mNavReply.validRecord) { + + FSSpec outFileSpec ; + AEDesc specDesc ; + AEKeyword keyWord ; + + long count ; + ::AECountItems( &mNavReply.selection , &count ) ; + for ( long i = 1 ; i <= count ; ++i ) { - ::AEDisposeDesc(&mDefaultLocation); - } - - if ( (err != noErr) && (err != userCanceledErr) ) { - m_path = "" ; - return wxID_CANCEL ; - } - - if (mNavReply.validRecord) { - - FSSpec outFileSpec ; - AEDesc specDesc ; - AEKeyword keyWord ; - - long count ; - ::AECountItems( &mNavReply.selection , &count ) ; - for ( long i = 1 ; i <= count ; ++i ) - { - OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc); - if ( err != noErr ) { - m_path = "" ; - return wxID_CANCEL ; - } - outFileSpec = **(FSSpec**) specDesc.dataHandle; - if (specDesc.dataHandle != nil) { - ::AEDisposeDesc(&specDesc); - } - m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; - m_paths.Add( m_path ) ; - m_fileName = wxFileNameFromPath(m_path); - m_fileNames.Add(m_fileName); - } - // set these to the first hit - m_path = m_paths[ 0 ] ; + OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc); + if ( err != noErr ) { + m_path = "" ; + return wxID_CANCEL ; + } + outFileSpec = **(FSSpec**) specDesc.dataHandle; + if (specDesc.dataHandle != nil) { + ::AEDisposeDesc(&specDesc); + } + m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; + m_paths.Add( m_path ) ; m_fileName = wxFileNameFromPath(m_path); - m_dir = wxPathOnly(m_path); - NavDisposeReply( &mNavReply ) ; - return wxID_OK ; - } - return wxID_CANCEL; + m_fileNames.Add(m_fileName); + } + // set these to the first hit + m_path = m_paths[ 0 ] ; + m_fileName = wxFileNameFromPath(m_path); + m_dir = wxPathOnly(m_path); + NavDisposeReply( &mNavReply ) ; + return wxID_OK ; + } + return wxID_CANCEL; } - // Generic file load/save dialog static wxString wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) @@ -523,14 +502,11 @@ wxDefaultFileSelector(bool load, const char *what, const char *extension, const else str = "Save %s file"; sprintf(prompt, wxGetTranslation(str), what); - if (*ext == '.') ext++; char wild[60]; sprintf(wild, "*.%s", ext); - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); } - // Generic file load dialog wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) @@ -538,12 +514,9 @@ wxLoadFileSelector(const char *what, const char *extension, const char *default_ return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); } - // Generic file save dialog wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) { return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - +} \ No newline at end of file diff --git a/src/mac/files.lst b/src/mac/files.lst index 009570dcbb..2d26d23708 100644 --- a/src/mac/files.lst +++ b/src/mac/files.lst @@ -271,7 +271,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -440,6 +439,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -621,7 +621,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -665,7 +665,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -953,7 +952,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/mac/font.cpp b/src/mac/font.cpp index eec71c52ee..d1b4798cc4 100644 --- a/src/mac/font.cpp +++ b/src/mac/font.cpp @@ -89,6 +89,10 @@ void wxFontRefData::MacFindFont() ::GetFNum( "\pMonaco" , &m_macFontNum) ; break ; } + Str255 name ; + GetFontName( m_macFontNum , name ) ; + CopyPascalStringToC( name , (char*) name ) ; + m_faceName = (char*) name ; } else { diff --git a/src/mac/frame.cpp b/src/mac/frame.cpp index 4d83421744..7f1860a837 100644 --- a/src/mac/frame.cpp +++ b/src/mac/frame.cpp @@ -231,9 +231,35 @@ void wxFrame::OnActivate(wxActivateEvent& event) { m_frameMenuBar->MacInstallMenuBar() ; } + else if (wxTheApp->GetTopWindow() && wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame))) + { + // Trying toplevel frame menbar + if( ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar() ) + ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar()->MacInstallMenuBar(); + } } } +void wxFrame::DetachMenuBar() +{ + if ( m_frameMenuBar ) + { + m_frameMenuBar->UnsetInvokingWindow(); + } + + wxFrameBase::DetachMenuBar(); +} + +void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) +{ + wxFrameBase::AttachMenuBar(menuBar); + + if (m_frameMenuBar) + { + m_frameMenuBar->SetInvokingWindow( this ); + } +} + void wxFrame::DoGetClientSize(int *x, int *y) const { wxWindow::DoGetClientSize( x , y ) ; diff --git a/src/mac/gsocket.c b/src/mac/gsocket.c index b96cd92358..f3985aee92 100644 --- a/src/mac/gsocket.c +++ b/src/mac/gsocket.c @@ -36,7 +36,7 @@ #include #include #endif -#if TARGET_CARBON +#if TARGET_CARBON && !defined(OTAssert) #define OTAssert( str , cond ) /* does not exists in Carbon */ #endif @@ -87,6 +87,7 @@ extern pascal void OTDebugStr(const char* str); #endif InetSvcRef gInetSvcRef = 0 ; int gOTInited = 0 ; +OTNotifyUPP gOTNotifierUPP = NULL ; OSStatus DoNegotiateIPReuseAddrOption(EndpointRef ep, Boolean enableReuseIPMode); @@ -185,7 +186,7 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data ) junk = OTSetBlocking(ep); OTAssert("SetDefaultEndpointModes: Could not set blocking", junk == noErr); */ - junk = OTInstallNotifier(ep, OTInetEventHandler, data); + junk = OTInstallNotifier(ep, gOTNotifierUPP, data); OTAssert("SetDefaultEndpointModes: Could not install notifier", junk == noErr); /* junk = OTUseSyncIdleEvents(ep, true); @@ -229,6 +230,7 @@ int GSocket_Verify_Inited() OTAssert("Could not open Inet Services", err == noErr); return FALSE ; } + gOTNotifierUPP = NewOTNotifyUPP( OTInetEventHandler ) ; return TRUE ; } @@ -243,6 +245,8 @@ void GSocket_Cleanup() #else CloseOpenTransport() ; #endif + if ( gOTNotifierUPP ) + DisposeOTNotifyUPP( gOTNotifierUPP ) ; } } diff --git a/src/mac/listbox.cpp b/src/mac/listbox.cpp index 8c2e856246..120a417fbf 100644 --- a/src/mac/listbox.cpp +++ b/src/mac/listbox.cpp @@ -105,16 +105,34 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect ClipRect( drawRect ); EraseRect( drawRect ); + wxFontRefData * font = (wxFontRefData*) list->GetFont().GetRefData() ; + + if ( font ) + { + ::TextFont( font->m_macFontNum ) ; + ::TextSize( short(font->m_macFontSize) ) ; + ::TextFace( font->m_macFontStyle ) ; + } + else + { + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + } + #if TARGET_CARBON bool useDrawThemeText = ( DrawThemeTextBox != (void*) kUnresolvedCFragSymbolAddress ) ; if ( useDrawThemeText ) { Rect frame = { drawRect->top, drawRect->left + 4, - drawRect->top + kwxMacListItemHeight, drawRect->right} ; - CFStringRef mString = CFStringCreateWithBytes( NULL , (UInt8*) text.c_str(), text.Length(), CFStringGetSystemEncoding(), false ) ; + drawRect->top + kwxMacListItemHeight, drawRect->right + 10000 } ; + CFStringRef sString = CFStringCreateWithBytes( NULL , (UInt8*) text.c_str(), text.Length(), CFStringGetSystemEncoding(), false ) ; + CFMutableStringRef mString = CFStringCreateMutableCopy( NULL , 0 , sString ) ; + CFRelease( sString ) ; + ::TruncateThemeText( mString , kThemeCurrentPortFont, kThemeStateActive, drawRect->right - drawRect->left , truncEnd , NULL ) ; ::DrawThemeTextBox( mString, - kThemeViewsFont, + kThemeCurrentPortFont, kThemeStateActive, false, &frame, @@ -126,9 +144,6 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect #endif { MoveTo(drawRect->left + 4 , drawRect->top + 10 ); - ::TextFont( kFontIDMonaco ) ; - ::TextSize( 9 ); - ::TextFace( 0 ) ; DrawText(text, 0 , text.Length()); } @@ -166,7 +181,9 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect } extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ; +// resources ldef ids const short kwxMacListWithVerticalScrollbar = 128 ; +const short kwxMacListWithVerticalAndHorizontalScrollbar = 129 ; // ============================================================================ // list box control implementation @@ -206,11 +223,24 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, } listDef.u.userProc = macListDefUPP ; + Str255 fontName ; + SInt16 fontSize ; + Style fontStyle ; + SInt16 fontNum ; +#if TARGET_CARBON + GetThemeFont(kThemeViewsFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; +#else + GetFontName( kFontIDMonaco , fontName ) ; + fontSize = 9 ; + fontStyle = normal ; +#endif + CopyPascalStringToC( fontName , (char*) fontName ) ; + SetFont( wxFont (fontSize, wxSWISS, wxNORMAL, wxNORMAL , false , fontName ) ) ; #if TARGET_CARBON Size asize; - CreateListBoxControl( MAC_WXHWND(parent->MacGetRootWindow()), &bounds, false, 0, 1, false, true, + CreateListBoxControl( MAC_WXHWND(parent->MacGetRootWindow()), &bounds, false, 0, 1, (style & wxLB_HSCROLL), true, kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, (ControlRef *)&m_macControl ); GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag, @@ -224,8 +254,8 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, long result ; wxStAppResource resload ; m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , - kwxMacListWithVerticalScrollbar , 0 , 0, - kControlListBoxProc , (long) this ) ; + (style & wxLB_HSCROLL) ? kwxMacListWithVerticalAndHorizontalScrollbar : kwxMacListWithVerticalScrollbar , + 0 , 0, kControlListBoxProc , (long) this ) ; ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag , sizeof( ListHandle ) , (char*) &m_macList , &result ) ; @@ -255,17 +285,17 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, } else { - options = lOnlyOne ; + options = (OptionBits) lOnlyOne ; } SetListSelectionFlags((ListHandle)m_macList, options); - MacPostControlCreate() ; - for ( int i = 0 ; i < n ; i++ ) { Append( choices[i] ) ; } + MacPostControlCreate() ; + LSetDrawingMode( true , (ListHandle)m_macList ) ; return TRUE; @@ -616,7 +646,49 @@ void wxListBox::SetString(int N, const wxString& s) wxSize wxListBox::DoGetBestSize() const { - return wxSize(100, 100); + int lbWidth = 100; // some defaults + int lbHeight = 110; + int wLine; + + { + wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetRootWindow() ) ) ; + Rect drawRect ; + + wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; + + if ( font ) + { + ::TextFont( font->m_macFontNum ) ; + ::TextSize( short(font->m_macFontSize) ) ; + ::TextFace( font->m_macFontStyle ) ; + } + else + { + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + } + + // Find the widest line + for(int i = 0; i < GetCount(); i++) { + wxString str(GetString(i)); + wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ; + lbWidth = wxMax(lbWidth, wLine); + } + + // Add room for the scrollbar + lbWidth += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X); + + // And just a bit more + int cy = 12 ; + int cx = ::TextWidth( "X" , 0 , 1 ) ; + lbWidth += cx ; + + // don't make the listbox too tall (limit height to around 10 items) but don't + // make it too small neither + lbHeight = (cy+4) * wxMin(wxMax(GetCount(), 3), 10); + } + return wxSize(lbWidth, lbHeight); } int wxListBox::GetCount() const @@ -661,6 +733,7 @@ wxOwnerDrawn *wxListBox::CreateItem(size_t n) // list box control implementation // ============================================================================ +/* void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) { wxListBox* list; @@ -675,7 +748,7 @@ void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refC DrawText(text, 0 , text.Length()); } - +*/ void wxListBox::MacDelete( int N ) { LDelRow( 1 , N , (ListHandle)m_macList) ; diff --git a/src/mac/menu.cpp b/src/mac/menu.cpp index caadf18ce3..d0ba511b85 100644 --- a/src/mac/menu.cpp +++ b/src/mac/menu.cpp @@ -28,6 +28,7 @@ #include "wx/window.h" #include "wx/log.h" #include "wx/utils.h" +#include "wx/frame.h" #include "wx/mac/uma.h" @@ -50,7 +51,8 @@ const short kwxMacAppleMenuId = 1 ; // ============================================================================ // implementation // ============================================================================ - +static void wxMenubarUnsetInvokingWindow( wxMenu *menu ) ; +static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win ); // Menus @@ -193,6 +195,12 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) { UMAInsertSubMenuItem(MAC_WXHMENU(m_hMenu), label , pos, pSubMenu->m_macMenuId); } + + // if adding a submenu to a menu already existing in the menu bar, we + // must set invoking window to allow processing events from this + // submenu + if ( m_invokingWindow ) + wxMenubarSetInvokingWindow(pSubMenu, m_invokingWindow); } else { @@ -209,10 +217,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) if ( pos == (size_t)-1 ) { UMAAppendMenuItem(MAC_WXHMENU(m_hMenu), label,key,modifiers); + SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , CountMenuItems(MAC_WXHMENU(m_hMenu)) , pItem->GetId() ) ; if ( pItem->GetBitmap().Ok() ) { ControlButtonContentInfo info ; - wxMacCreateBitmapButton( &info , pItem->GetBitmap() , true ) ; + wxMacCreateBitmapButton( &info , pItem->GetBitmap() , kControlContentCIconHandle ) ; if ( info.contentType != kControlNoContent ) { if ( info.contentType == kControlContentCIconHandle ) @@ -225,10 +234,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) else { UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), label , pos,key,modifiers); + SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , pos , pItem->GetId() ) ; if ( pItem->GetBitmap().Ok() ) { ControlButtonContentInfo info ; - wxMacCreateBitmapButton( &info , pItem->GetBitmap() , true ) ; + wxMacCreateBitmapButton( &info , pItem->GetBitmap() , kControlContentCIconHandle ) ; if ( info.contentType != kControlNoContent ) { if ( info.contentType == kControlContentCIconHandle ) @@ -429,114 +439,6 @@ void wxMenu::MacEnableMenu( bool bDoEnable ) ::DrawMenuBar() ; } -bool wxMenu::MacMenuSelect( wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum ) -{ - int pos; - wxNode *node; - - if ( m_macMenuId == macMenuId ) - { - node = GetMenuItems().Nth(macMenuItemNum-1); - if (node) - { - wxMenuItem *pItem = (wxMenuItem*)node->Data(); - - if (pItem->IsCheckable()) - pItem->Check(! pItem->IsChecked()); - - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, pItem->GetId()); - event.m_timeStamp = when; - event.SetEventObject(handler); - event.SetInt( pItem->GetId() ); - { - bool processed = false ; - -#if WXWIN_COMPATIBILITY - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } -#endif - // Try the menu's event handler - if ( !processed && handler) - { - processed = handler->ProcessEvent(event); - } - - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->GetEventHandler()->ProcessEvent(event); - } - return true ; - } - } - else if ( macMenuId == kHMHelpMenuID ) - { - int menuItem = firstUserHelpMenuItem-1 ; - for (pos = 0, node = GetMenuItems().First(); node; node = node->Next(), pos++) - { - wxMenuItem * pItem = (wxMenuItem *) node->Data() ; - - wxMenu *pSubMenu = pItem->GetSubMenu() ; - if ( pSubMenu != NULL ) - { - } - else - { - if ( pItem->GetId() != wxApp::s_macAboutMenuItemId ) - ++menuItem ; - - if ( menuItem == macMenuItemNum ) - { - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, pItem->GetId()); - event.m_timeStamp = when; - event.SetEventObject(handler); - event.SetInt( pItem->GetId() ); - { - bool processed = false ; -#if WXWIN_COMPATIBILITY - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } -#endif - // Try the menu's event handler - if ( !processed && handler) - { - processed = handler->ProcessEvent(event); - } - - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->GetEventHandler()->ProcessEvent(event); - } - return true ; - } - } - } - } - - for (pos = 0, node = GetMenuItems().First(); node; node = node->Next(), pos++) - { - wxMenuItem * pItem = (wxMenuItem *) node->Data() ; - - wxMenu *pSubMenu = pItem->GetSubMenu() ; - if ( pSubMenu != NULL ) - { - if ( pSubMenu->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) - return true ; - } - } - - return false ; -} - // Menu Bar /* @@ -562,6 +464,7 @@ void wxMenuBar::Init() { m_eventHandler = this; m_menuBarFrame = NULL; + m_invokingWindow = (wxWindow*) NULL; } wxMenuBar::wxMenuBar() @@ -662,91 +565,104 @@ void wxMenuBar::MacInstallMenuBar() } #endif + // clean-up the help menu before adding new items + MenuHandle mh = NULL ; + if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) == noErr ) + { + for ( int i = CountMenuItems( mh ) ; i >= firstUserHelpMenuItem ; --i ) + { + DeleteMenuItem( mh , i ) ; + } + } + else + { + mh = NULL ; + } + + for (size_t i = 0; i < m_menus.GetCount(); i++) { - Str255 label; - wxNode *node; - wxMenuItem *item; - int pos ; - wxMenu* menu = m_menus[i] , *subMenu = NULL ; - - if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) - { - MenuHandle mh = NULL ; - if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) != noErr ) - { - continue ; - } + Str255 label; + wxNode *node; + wxMenuItem *item; + int pos ; + wxMenu* menu = m_menus[i] , *subMenu = NULL ; - for ( int i = CountMenuItems( mh ) ; i >= firstUserHelpMenuItem ; --i ) - { - DeleteMenuItem( mh , i ) ; - } - - for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) - { - item = (wxMenuItem *)node->Data(); - subMenu = item->GetSubMenu() ; - if (subMenu) + if( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) + { + if ( mh == NULL ) + { + continue ; + } + + for (pos = 0 , node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) + { + item = (wxMenuItem *)node->Data(); + subMenu = item->GetSubMenu() ; + if (subMenu) + { + // we don't support hierarchical menus in the help menu yet + } + else + { + if ( item->IsSeparator() ) { - // we don't support hierarchical menus in the help menu yet + if ( mh ) + MacAppendMenu(mh, "\p-" ); } - else + else { - if ( item->IsSeparator() ) + Str255 label ; + UInt8 modifiers ; + SInt16 key ; + wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu + if ( label[0] == 0 ) { - if ( mh ) - MacAppendMenu(mh, "\p-" ); + // we cannot add empty menus on mac + label[0] = 1 ; + label[1] = ' ' ; } + if ( item->GetId() == wxApp::s_macAboutMenuItemId ) + { + ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); + UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); + SetMenuItemCommandID( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetId() ) ; + } else { - Str255 label ; - UInt8 modifiers ; - SInt16 key ; - wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu - if ( label[0] == 0 ) + if ( mh ) { - // we cannot add empty menus on mac - label[0] = 1 ; - label[1] = ' ' ; - } - if ( item->GetId() == wxApp::s_macAboutMenuItemId ) - { - ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); - UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); - } - else - { - if ( mh ) - UMAAppendMenuItem(mh, label , key , modifiers ); + UMAAppendMenuItem(mh, label , key , modifiers ); + SetMenuItemCommandID( mh , CountMenuItems(mh) , item->GetId() ) ; } } } } } - else - { - wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false ); - UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , label ) ; - wxArrayPtrVoid submenus ; - - for (pos = 0, node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) - { - item = (wxMenuItem *)node->Data(); - subMenu = item->GetSubMenu() ; - if (subMenu) - { - submenus.Add(subMenu) ; - } - } - ::InsertMenu(MAC_WXHMENU(m_menus[i]->GetHMenu()), 0); - for ( size_t i = 0 ; i < submenus.GetCount() ; ++i ) + } + else + { + wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false ); + UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , label ) ; + wxArrayPtrVoid submenus ; + + for (pos = 0, node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) + { + item = (wxMenuItem *)node->Data(); + subMenu = item->GetSubMenu() ; + if (subMenu) { - wxMenu* submenu = (wxMenu*) submenus[i] ; - wxNode *subnode; - wxMenuItem *subitem; - int subpos ; - for ( subpos = 0 , subnode = submenu->GetMenuItems().First(); subnode; subnode = subnode->Next(), subpos++) + submenus.Add(subMenu) ; + } + } + ::InsertMenu(MAC_WXHMENU(m_menus[i]->GetHMenu()), 0); + for ( size_t i = 0 ; i < submenus.GetCount() ; ++i ) + { + wxMenu* submenu = (wxMenu*) submenus[i] ; + wxNode *subnode; + wxMenuItem *subitem; + int subpos ; + for ( subpos = 0 , subnode = submenu->GetMenuItems().First(); subnode; subnode = subnode->Next(), subpos++) { subitem = (wxMenuItem *)subnode->Data(); wxMenu* itsSubMenu = subitem->GetSubMenu() ; @@ -755,11 +671,11 @@ void wxMenuBar::MacInstallMenuBar() submenus.Add(itsSubMenu) ; } } - ::InsertMenu( MAC_WXHMENU(submenu->GetHMenu()) , -1 ) ; - } - } + ::InsertMenu( MAC_WXHMENU(submenu->GetHMenu()) , -1 ) ; + } } - ::DrawMenuBar() ; + } + ::DrawMenuBar() ; s_macInstalledMenuBar = this; } @@ -900,44 +816,6 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title) return TRUE; } -void wxMenuBar::MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum) -{ - // first scan fast for direct commands, i.e. menus which have these commands directly in their own list - - if ( macMenuId == kwxMacAppleMenuId && macMenuItemNum == 1 ) - { - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, wxApp::s_macAboutMenuItemId ); - event.m_timeStamp = when; - event.SetEventObject(handler); - event.SetInt( wxApp::s_macAboutMenuItemId ); - handler->ProcessEvent(event); - } - else - { - for (size_t i = 0; i < m_menus.GetCount() ; i++) - { - if ( m_menus[i]->MacGetMenuId() == macMenuId || ( macMenuId == kHMHelpMenuID && ( m_titles[i] == "?" || m_titles[i] == "&?" || m_titles[i] == wxApp::s_macHelpMenuTitleName ) ) ) - { - if ( m_menus[i]->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) - return ; - else - { - //TODO flag this as an error since it must contain the item - return ; - } - } - } - - for (size_t i = 0; i < m_menus.GetCount(); i++) - { - if ( m_menus[i]->MacMenuSelect( handler , when , macMenuId , macMenuItemNum ) ) - { - break ; - } - } - } -} - wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); @@ -1001,9 +879,66 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title) Refresh(); } + // m_invokingWindow is set after wxFrame::SetMenuBar(). This call enables + // adding menu later on. + if (m_invokingWindow) + wxMenubarSetInvokingWindow( menu, m_invokingWindow ); + return TRUE; } +static void wxMenubarUnsetInvokingWindow( wxMenu *menu ) +{ + menu->SetInvokingWindow( (wxWindow*) NULL ); + + wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); + while (node) + { + wxMenuItem *menuitem = node->GetData(); + if (menuitem->IsSubMenu()) + wxMenubarUnsetInvokingWindow( menuitem->GetSubMenu() ); + node = node->GetNext(); + } +} + +static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win ) +{ + menu->SetInvokingWindow( win ); + + wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); + while (node) + { + wxMenuItem *menuitem = node->GetData(); + if (menuitem->IsSubMenu()) + wxMenubarSetInvokingWindow( menuitem->GetSubMenu() , win ); + node = node->GetNext(); + } +} + +void wxMenuBar::UnsetInvokingWindow() +{ + m_invokingWindow = (wxWindow*) NULL; + wxMenuList::Node *node = m_menus.GetFirst(); + while (node) + { + wxMenu *menu = node->GetData(); + wxMenubarUnsetInvokingWindow( menu ); + node = node->GetNext(); + } +} + +void wxMenuBar::SetInvokingWindow(wxFrame *frame) +{ + m_invokingWindow = frame; + wxMenuList::Node *node = m_menus.GetFirst(); + while (node) + { + wxMenu *menu = node->GetData(); + wxMenubarSetInvokingWindow( menu, frame ); + node = node->GetNext(); + } +} + void wxMenuBar::Detach() { wxMenuBarBase::Detach() ; @@ -1012,7 +947,6 @@ void wxMenuBar::Detach() void wxMenuBar::Attach(wxFrame *frame) { wxMenuBarBase::Attach( frame ) ; - #if wxUSE_ACCEL RebuildAccelTable(); #endif // wxUSE_ACCEL diff --git a/src/mac/menuitem.cpp b/src/mac/menuitem.cpp index 544bfd6004..6c41427f76 100644 --- a/src/mac/menuitem.cpp +++ b/src/mac/menuitem.cpp @@ -46,7 +46,7 @@ int wxMenuItem::MacBuildMenuString(StringPtr outMacItemText, SInt16 *outMacShort { char *p = (char *) &outMacItemText[1] ; short macModifiers = 0 ; - char macShortCut = 0 ; + SInt16 macShortCut = 0 ; const char *inItemName ; wxString inItemTextMac ; @@ -72,31 +72,6 @@ int wxMenuItem::MacBuildMenuString(StringPtr outMacItemText, SInt16 *outMacShort { switch ( *inItemName ) { - // special characters for macintosh menus -> use some replacement - case ';' : - *p++ = ',' ; - break ; - case '^' : - *p++ = ' ' ; - break ; - case '!' : - *p++ = ' ' ; - break ; - case '<' : - *p++ = '[' ; - break ; - case '>' : - *p++ = ']' ; - break ; - case '/' : - *p++ = '|' ; - break ; - case '(' : - *p++ = '[' ; - break ; - case ')' : - *p++ = ']' ; - break ; // shortcuts case '&' : { @@ -115,43 +90,71 @@ int wxMenuItem::MacBuildMenuString(StringPtr outMacItemText, SInt16 *outMacShort case '\t' : { ++inItemName ; - while( *inItemName ) + bool skip = false ; + bool explicitCommandKey = false ; + while( *inItemName && !skip ) { - if (strncmp("Ctrl", inItemName, 4) == 0) + if (wxStrnicmp("Ctrl", inItemName, 4) == 0) { inItemName = inItemName + 5; - macShortCut = *inItemName; + explicitCommandKey = true ; } - else if (strncmp("Cntrl", inItemName, 5) == 0) + else if (wxStrnicmp("Cntrl", inItemName, 5) == 0) { inItemName = inItemName + 6; - macShortCut = *inItemName; + explicitCommandKey = true ; } - else if (strncmp("Alt", inItemName, 3) == 0) + else if (wxStrnicmp("Alt", inItemName, 3) == 0) { inItemName = inItemName + 4; macModifiers |= kMenuOptionModifier ; - macShortCut = *inItemName ; } - else if (strncmp("Shift", inItemName, 5) == 0) + else if (wxStrnicmp("Shift", inItemName, 5) == 0) { inItemName = inItemName + 6; macModifiers |= kMenuShiftModifier ; - macShortCut = *inItemName ; - } - else if (strncmp("F", inItemName, 1) == 0) - { - inItemName += strlen( inItemName ) ; - // no function keys at the moment - // macModifiers |= kMenuShiftModifier ; - // macShortCut = *inItemName ; } else { - break ; + skip = true ; } } - + if ( *inItemName ) + { + if ( strlen(inItemName) == 1 ) + { + macShortCut = *inItemName; + } + else if ( !wxStricmp( inItemName , "Delete" ) || !wxStricmp( inItemName , "Del" ) ) + { + macShortCut = WXK_DELETE ; + } + else if ( !wxStricmp( inItemName , "Back" ) || !wxStricmp( inItemName , "Backspace" ) ) + { + macShortCut = WXK_BACK ; + } + else if ( !wxStricmp( inItemName , "Return" ) ) + { + macShortCut = WXK_RETURN ; + } + else if ( !wxStricmp( inItemName , "Enter" ) ) + { + macShortCut = kEnterCharCode ; + } + else if ( *inItemName == 'F' ) + { + int fkey = atol(inItemName+1) ; + if (fkey >= 1 && fkey < 15 ) + { + macShortCut = WXK_F1 + fkey - 1 ; + } + if ( !explicitCommandKey ) + macModifiers |= kMenuNoCommandModifier ; + } + } + + inItemName += strlen( inItemName ) ; + if ( *inItemName == 0 ) --inItemName ; diff --git a/src/mac/notebmac.cpp b/src/mac/notebmac.cpp index 7c72298654..4f590e8b6c 100644 --- a/src/mac/notebmac.cpp +++ b/src/mac/notebmac.cpp @@ -132,8 +132,17 @@ bool wxNotebook::Create(wxWindow *parent, MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; + int tabstyle = kControlTabSmallNorthProc ; + if ( HasFlag(wxNB_LEFT) ) + tabstyle = kControlTabSmallWestProc ; + else if ( HasFlag( wxNB_RIGHT ) ) + tabstyle = kControlTabSmallEastProc ; + else if ( HasFlag( wxNB_BOTTOM ) ) + tabstyle = kControlTabSmallSouthProc ; + + m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1, - kControlTabSmallProc , (long) this ) ; + tabstyle , (long) this ) ; MacPostControlCreate() ; return TRUE ; @@ -207,6 +216,7 @@ int wxNotebook::SetSelection(int nPage) ChangePage(m_nSelection, nPage); SetControl32BitValue( (ControlHandle) m_macControl , m_nSelection + 1 ) ; + Refresh(); return m_nSelection; } @@ -233,7 +243,7 @@ int wxNotebook::GetPageImage(int nPage) const { wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, _T("invalid notebook page") ); - return 0 ; + return m_images[nPage]; } bool wxNotebook::SetPageImage(int nPage, int nImage) @@ -243,7 +253,17 @@ bool wxNotebook::SetPageImage(int nPage, int nImage) wxCHECK_MSG( m_imageList && nImage < m_imageList->GetImageCount(), FALSE, _T("invalid image index in SetPageImage()") ); - return FALSE; + if ( nImage != m_images[nPage] ) + { + // if the item didn't have an icon before or, on the contrary, did have + // it but has lost it now, its size will change - but if the icon just + // changes, it won't + m_images[nPage] = nImage; + + MacSetupTabs() ; + } + + return TRUE; } // ---------------------------------------------------------------------------- @@ -295,6 +315,8 @@ bool wxNotebook::InsertPage(int nPage, // save the pointer to the page m_pages.Insert(pPage, nPage); + m_images.Insert(imageId, nPage); + MacSetupTabs(); if ( bSelect ) { @@ -332,7 +354,8 @@ void wxNotebook::MacSetupTabs() wxNotebookPage *page; ControlTabInfoRec info; - Boolean enabled = true; + + OSStatus err = noErr ; for(int ii = 0; ii < GetPageCount(); ii++) { page = m_pages[ii]; @@ -346,8 +369,35 @@ void wxNotebook::MacSetupTabs() #endif SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabInfoTag, sizeof( ControlTabInfoRec) , (char*) &info ) ; - SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabEnabledFlagTag, - sizeof( Boolean ), (Ptr)&enabled ); + SetTabEnabled( (ControlHandle) m_macControl , ii+1 , true ) ; + +#if TARGET_CARBON + if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 ) + { + // tab controls only support very specific types of images, therefore we are doing an odyssee + // accross the icon worlds (even Apple DTS did not find a shorter path) + // in order not to pollute the icon registry we put every icon into (OSType) 1 and immediately + // afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we + // unregister it) in case this will ever lead to having the same icon everywhere add some kind + // of static counter + ControlButtonContentInfo info ; + wxMacCreateBitmapButton( &info , *GetImageList()->GetBitmap( GetPageImage(ii ) ) , kControlContentPictHandle) ; + IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ; + err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ; + wxASSERT_MSG( err == noErr , "Error when adding bitmap" ) ; + IconRef iconRef ; + err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1 , iconFamily, &iconRef ) ; + wxASSERT_MSG( err == noErr , "Error when adding bitmap" ) ; + info.contentType = kControlContentIconRef ; + info.u.iconRef = iconRef ; + SetControlData( (ControlHandle) m_macControl, ii+1,kControlTabImageContentTag, + sizeof( info ), (Ptr)&info ); + wxASSERT_MSG( err == noErr , "Error when setting icon on tab" ) ; + UnregisterIconRef( 'WXNG' , (OSType) 1 ) ; + ReleaseIconRef( iconRef ) ; + DisposeHandle( (Handle) iconFamily ) ; + } +#endif } Rect bounds; GetControlBounds((ControlHandle)m_macControl, &bounds); diff --git a/src/mac/printdlg.cpp b/src/mac/printdlg.cpp index ec13b97455..1b18c1d49b 100644 --- a/src/mac/printdlg.cpp +++ b/src/mac/printdlg.cpp @@ -104,11 +104,8 @@ int wxPrintDialog::ShowModal() ::UMAPrClose(NULL) ; #else #if PM_USE_SESSION_APIS - PMPrintSession macPrintSession = kPMNoReference; Boolean accepted; - err = ::UMAPrOpen(&macPrintSession) ; - if ( err == noErr ) { m_printDialogData.ConvertToNative() ; @@ -123,13 +120,13 @@ int wxPrintDialog::ShowModal() if ((err == noErr) && (m_printDialogData.GetPrintData().m_macPageFormat != kPMNoPageFormat)) { - err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession, + err = PMSessionDefaultPageFormat((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat); } } else { - err = PMSessionValidatePageFormat((PMPrintSession)macPrintSession, + err = PMSessionValidatePageFormat((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat, kPMDontWantBoolean); } @@ -145,13 +142,13 @@ int wxPrintDialog::ShowModal() if ((err == noErr) && (m_printDialogData.GetPrintData().m_macPrintSettings != kPMNoPrintSettings)) { - err = PMSessionDefaultPrintSettings((PMPrintSession)macPrintSession, + err = PMSessionDefaultPrintSettings((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings); } } else { - err = PMSessionValidatePrintSettings((PMPrintSession)macPrintSession, + err = PMSessionValidatePrintSettings((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings, kPMDontWantBoolean); } @@ -165,7 +162,7 @@ int wxPrintDialog::ShowModal() // Display the Print dialog. if (err == noErr) { - err = PMSessionPrintDialog((PMPrintSession)macPrintSession, + err = PMSessionPrintDialog((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession, (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings, (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat, &accepted); @@ -186,7 +183,6 @@ int wxPrintDialog::ShowModal() wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } - ::UMAPrClose(&macPrintSession) ; #else #pragma warning "TODO: Printing for carbon without session apis" #endif @@ -256,11 +252,8 @@ int wxPageSetupDialog::ShowModal() ::UMAPrClose(NULL) ; #else #if PM_USE_SESSION_APIS - PMPrintSession macPrintSession = kPMNoReference; Boolean accepted; - err = ::UMAPrOpen(&macPrintSession) ; - if ( err == noErr ) { m_pageSetupData.ConvertToNative() ; @@ -275,13 +268,13 @@ int wxPageSetupDialog::ShowModal() if ((err == noErr) && (m_pageSetupData.GetPrintData().m_macPageFormat != kPMNoPageFormat)) { - err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession, + err = PMSessionDefaultPageFormat((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession, (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat); } } else { - err = PMSessionValidatePageFormat((PMPrintSession)macPrintSession, + err = PMSessionValidatePageFormat((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession, (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat, kPMDontWantBoolean); } @@ -289,7 +282,7 @@ int wxPageSetupDialog::ShowModal() // Display the Page Setup dialog. if (err == noErr) { - err = PMSessionPageSetupDialog((PMPrintSession)macPrintSession, + err = PMSessionPageSetupDialog((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession, (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat, &accepted); if ((err == noErr) && !accepted) @@ -312,7 +305,6 @@ int wxPageSetupDialog::ShowModal() wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; dialog.ShowModal(); } - ::UMAPrClose(&macPrintSession) ; #else #pragma warning "TODO: Printing for carbon without session apis" #endif diff --git a/src/mac/printmac.cpp b/src/mac/printmac.cpp index 33506c4548..1240fd6622 100644 --- a/src/mac/printmac.cpp +++ b/src/mac/printmac.cpp @@ -276,7 +276,7 @@ void wxMacPrintPreview::DetermineScaling(void) m_previewPrintout->SetPPIScreen( 72 , 72 ) ; m_previewPrintout->SetPPIPrinter( 72 , 72 ) ; - m_previewPrintout->SetPageSizeMM( 8 * 25.6 , 11 * 25.6 ) ; + m_previewPrintout->SetPageSizeMM( (int) (8.0 * 25.6), (int) (11.0 * 25.6) ); m_previewPrintout->SetPageSizePixels( 8 * 72 , 11 * 72 ) ; m_pageWidth = 8 * 72 ; m_pageHeight = 11 * 72 ; @@ -295,7 +295,10 @@ void wxMacPrintPreview::DetermineScaling(void) m_pageWidth = x ; m_pageHeight = y ; m_isOk = true ; - + } + else + { + m_isOk = false ; } // At 100%, the page should look about page-size on the screen. // m_previewScale = (float)((float)screenWidth/(float)printerWidth); diff --git a/src/mac/scrolbar.cpp b/src/mac/scrolbar.cpp index 9073f70995..68d403ae26 100644 --- a/src/mac/scrolbar.cpp +++ b/src/mac/scrolbar.cpp @@ -140,7 +140,7 @@ void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart scrollEvent = wxEVT_SCROLL_THUMBTRACK; break ; default : - wxLogError(_("illegal scrollbar selector %d"), controlpart); + wxFAIL_MSG(wxT("illegal scrollbar selector")); break ; } diff --git a/src/mac/statbrma.cpp b/src/mac/statbrma.cpp index 59f6573dae..c06702058d 100644 --- a/src/mac/statbrma.cpp +++ b/src/mac/statbrma.cpp @@ -94,53 +94,42 @@ void wxStatusBarMac::SetStatusText(const wxString& text, int number) m_statusStrings[number] = text; wxRect rect; GetFieldRect(number, rect); + rect.y=0; + rect.height = m_height ; Refresh( TRUE , &rect ) ; - /* - // TODO make clear work again also when using themes - wxClientDC dc(this); - dc.SetBackground( wxBrush(GetBackgroundColour(), wxSOLID) ); - dc.SetClippingRegion( rect.x+1, rect.y+1, rect.width-1, rect.height-1 ); - dc.Clear(); - dc.DestroyClippingRegion(); - DrawFieldText( dc, number ); - */ - } void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) ) { wxPaintDC dc(this); - - if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) ) - { - wxPen black( wxBLACK , 1 , wxSOLID ) ; - wxPen white( wxWHITE , 1 , wxSOLID ) ; - - dc.SetPen(black); - dc.DrawLine(0, 0 , - m_width , 0); - dc.SetPen(white); - dc.DrawLine(0, 1 , - m_width , 1); - } - else - { - dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID)); - dc.DrawLine(0, 0 , - m_width , 0); - } + dc.Clear() ; - int i; - if ( GetFont().Ok() ) - dc.SetFont(GetFont()); - dc.SetBackgroundMode(wxTRANSPARENT); + if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) ) + { + wxPen black( wxBLACK , 1 , wxSOLID ) ; + wxPen white( wxWHITE , 1 , wxSOLID ) ; - for ( i = 0; i < m_nFields; i ++ ) - DrawField(dc, i); + dc.SetPen(black); + dc.DrawLine(0, 0 , + m_width , 0); + dc.SetPen(white); + dc.DrawLine(0, 1 , + m_width , 1); + } + else + { + dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID)); + dc.DrawLine(0, 0 , + m_width , 0); + } -# ifdef __WXMSW__ - dc.SetFont(wxNullFont); -# endif // MSW + int i; + if ( GetFont().Ok() ) + dc.SetFont(GetFont()); + dc.SetBackgroundMode(wxTRANSPARENT); + + for ( i = 0; i < m_nFields; i ++ ) + DrawField(dc, i); } void wxStatusBarMac::MacSuperEnabled( bool enabled ) diff --git a/src/mac/textctrl.cpp b/src/mac/textctrl.cpp index 4f8d67ae6d..8aea55ba4b 100644 --- a/src/mac/textctrl.cpp +++ b/src/mac/textctrl.cpp @@ -23,7 +23,14 @@ #else #include #endif -#include + +#if wxUSE_STD_IOSTREAM + #if wxUSE_IOSTREAMH + #include + #else + #include + #endif +#endif #include "wx/app.h" #include "wx/dc.h" @@ -209,7 +216,7 @@ static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart InvalWindowRect( GetControlOwner( theControl ) , &oldbounds ) ; SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); - SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , + SetRect(&varsp->fRTextArea, bounds.left + (varsp->fMultiline ? 0 : 2) , bounds.top + (varsp->fMultiline ? 0 : 2) , bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline); TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left, @@ -332,12 +339,18 @@ static pascal void TPPaneIdleProc(ControlHandle theControl) { RectRgn((theRgn = NewRgn()), &varsp->fRTextArea); TXNAdjustCursor(varsp->fTXNRec, theRgn); DisposeRgn(theRgn); - } else SetThemeCursor(kThemeArrowCursor); + } + else + { + // SetThemeCursor(kThemeArrowCursor); + } } else { /* if it's in our bounds, set the cursor */ GetControlBounds(theControl, &bounds); if (PtInRect(mousep, &bounds)) - SetThemeCursor(kThemeArrowCursor); + { + // SetThemeCursor(kThemeArrowCursor); + } } HSetState((Handle) tpvars, state); @@ -514,7 +527,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle ) GetControlBounds(theControl, &bounds); SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); - SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , + SetRect(&varsp->fRTextArea, bounds.left + (varsp->fMultiline ? 0 : 2) , bounds.top + (varsp->fMultiline ? 0 : 2) , bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); /* calculate the background region for the text. In this case, it's kindof and irregular region because we're setting the scroll bar a little ways inside @@ -529,29 +542,30 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle ) TXNFrameOptions frameOptions = kTXNDontDrawCaretWhenInactiveMask ; if ( ! ( wxStyle & wxTE_NOHIDESEL ) ) - frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ; - - if ( wxStyle & wxTE_MULTILINE ) - { - if ( ! ( wxStyle & wxTE_DONTWRAP ) ) - frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; - else - { - frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; - frameOptions |= kTXNWantHScrollBarMask ; - } - - if ( !(wxStyle & wxTE_NO_VSCROLL ) ) - frameOptions |= kTXNWantVScrollBarMask ; - } - else - frameOptions |= kTXNSingleLineOnlyMask ; - - if ( wxStyle & wxTE_READONLY ) - frameOptions |= kTXNReadOnlyMask ; + frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ; + + if ( wxStyle & wxTE_MULTILINE ) + { + if ( ! ( wxStyle & wxTE_DONTWRAP ) ) + frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; + else + { + // in case entry becomes impossible, remove the comment on the line below + // frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; + frameOptions |= kTXNWantHScrollBarMask ; + } + + if ( !(wxStyle & wxTE_NO_VSCROLL ) ) + frameOptions |= kTXNWantVScrollBarMask ; + } + else + frameOptions |= kTXNSingleLineOnlyMask ; + + if ( wxStyle & wxTE_READONLY ) + frameOptions |= kTXNReadOnlyMask ; TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea, - frameOptions , + frameOptions , kTXNTextEditStyleFrameType, kTXNTextensionFile, kTXNSystemDefaultEncoding, @@ -715,7 +729,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, /* create the control */ m_macControl = NewControl(MAC_WXHWND(parent->MacGetRootWindow()), &bounds, "\p", true, featurSet, 0, featurSet, kControlUserPaneProc, 0); /* set up the mUP specific features and data */ - mUPOpenControl((ControlHandle) m_macControl, m_windowStyle ); + mUPOpenControl((ControlHandle) m_macControl, m_windowStyle ); if ( parent ) { parent->MacGetTopLevelWindow()->MacInstallEventHandler() ; @@ -745,7 +759,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, m_macTXN = (**tpvars).fTXNRec ; m_macTXNvars = tpvars ; m_macUsesTXN = true ; - TXNSetSelection( (TXNObject) m_macTXN, 0, 0); + TXNSetSelection( (TXNObject) m_macTXN, 0, 0); TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart); } @@ -754,44 +768,53 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, wxString wxTextCtrl::GetValue() const { - Size actualsize; - + Size actualSize = 0; + wxString result ; + OSStatus err ; if ( !m_macUsesTXN ) { - ::GetControlData( (ControlHandle) m_macControl, 0, - ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, - 32767 , wxBuffer , &actualsize ) ; + err = ::GetControlDataSize((ControlHandle) m_macControl, 0, + ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, &actualSize ) ; + + if ( err ) + return wxEmptyString ; + + if ( actualSize > 0 ) + { + wxChar *ptr = result.GetWriteBuf(actualSize) ; + + ::GetControlData( (ControlHandle) m_macControl, 0, + ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, + actualSize , ptr , &actualSize ) ; + ptr[actualSize] = 0 ; + result.UngetWriteBuf(actualSize) ; + } + } else { Handle theText ; - OSStatus err = TXNGetDataEncoded( ((TXNObject) m_macTXN), kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); + err = TXNGetDataEncoded( ((TXNObject) m_macTXN), kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); // all done if ( err ) { - actualsize = 0 ; + actualSize = 0 ; } else { - actualsize = GetHandleSize( theText ) ; - if (actualsize != 0) - strncpy( wxBuffer , *theText , actualsize ) ; - DisposeHandle( theText ) ; + actualSize = GetHandleSize( theText ) ; + if ( actualSize > 0 ) + { + wxChar *ptr = result.GetWriteBuf(actualSize) ; + strncpy( ptr , *theText , actualSize ) ; + ptr[actualSize] = 0 ; + result.UngetWriteBuf( actualSize ) ; + } + DisposeHandle( theText ) ; } } - wxBuffer[actualsize] = 0 ; - - wxString value; - - if( wxApp::s_macDefaultEncodingIsPC ) - value = wxMacMakePCStringFromMac( wxBuffer ) ; - else - value = wxBuffer; - - value.Replace( "\r", "\n" ); - - return value; + return wxMacMakeStringFromMacString( result ) ; } void wxTextCtrl::GetSelection(long* from, long* to) const @@ -812,11 +835,13 @@ void wxTextCtrl::SetValue(const wxString& st) wxString value; if( wxApp::s_macDefaultEncodingIsPC ) + { value = wxMacMakeMacStringFromPC( st ) ; + // value.Replace( "\n", "\r" ); TODO this should be handled by the conversion + } else value = st; - value.Replace( "\n", "\r" ); if ( !m_macUsesTXN ) { @@ -825,12 +850,14 @@ void wxTextCtrl::SetValue(const wxString& st) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; - TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), - kTXNStartOffset, kTXNEndOffset); - TXNSetSelection( (TXNObject) m_macTXN, 0, 0); + if ( !formerEditable ) + SetEditable(true) ; + TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), + kTXNStartOffset, kTXNEndOffset); + TXNSetSelection( (TXNObject) m_macTXN, 0, 0); TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart); - SetEditable(formerEditable) ; + if ( !formerEditable ) + SetEditable(formerEditable) ; } MacRedrawControl() ; } @@ -845,45 +872,46 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style) if ( m_macUsesTXN ) { bool formerEditable = IsEditable() ; - SetEditable(true) ; - TXNTypeAttributes typeAttr[4] ; - Str255 fontName = "\pMonaco" ; - SInt16 fontSize = 12 ; - Style fontStyle = normal ; - RGBColor color ; - int attrCounter = 0 ; - if ( style.HasFont() ) - { - const wxFont &font = style.GetFont() ; - CopyCStringToPascal( font.GetFaceName().c_str() , fontName ) ; - fontSize = font.GetPointSize() ; - if ( font.GetUnderlined() ) - fontStyle |= underline ; - if ( font.GetWeight() == wxBOLD ) - fontStyle |= bold ; - if ( font.GetStyle() == wxITALIC ) - fontStyle |= italic ; - - typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ; - typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ; - typeAttr[attrCounter].data.dataPtr = (void*) fontName ; - typeAttr[attrCounter+1].tag = kTXNQDFontSizeAttribute ; - typeAttr[attrCounter+1].size = kTXNFontSizeAttributeSize ; - typeAttr[attrCounter+1].data.dataValue = (fontSize << 16) ; - typeAttr[attrCounter+2].tag = kTXNQDFontStyleAttribute ; - typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; - typeAttr[attrCounter+2].data.dataValue = fontStyle ; - attrCounter += 3 ; - - } - if ( style.HasTextColour() ) - { - typeAttr[attrCounter].tag = kTXNQDFontColorAttribute ; - typeAttr[attrCounter].size = kTXNQDFontColorAttributeSize ; - typeAttr[attrCounter].data.dataPtr = (void*) &color ; - color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ; - attrCounter += 1 ; - } + if ( !formerEditable ) + SetEditable(true) ; + TXNTypeAttributes typeAttr[4] ; + Str255 fontName = "\pMonaco" ; + SInt16 fontSize = 12 ; + Style fontStyle = normal ; + RGBColor color ; + int attrCounter = 0 ; + if ( style.HasFont() ) + { + const wxFont &font = style.GetFont() ; + CopyCStringToPascal( font.GetFaceName().c_str() , fontName ) ; + fontSize = font.GetPointSize() ; + if ( font.GetUnderlined() ) + fontStyle |= underline ; + if ( font.GetWeight() == wxBOLD ) + fontStyle |= bold ; + if ( font.GetStyle() == wxITALIC ) + fontStyle |= italic ; + + typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ; + typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ; + typeAttr[attrCounter].data.dataPtr = (void*) fontName ; + typeAttr[attrCounter+1].tag = kTXNQDFontSizeAttribute ; + typeAttr[attrCounter+1].size = kTXNFontSizeAttributeSize ; + typeAttr[attrCounter+1].data.dataValue = (fontSize << 16) ; + typeAttr[attrCounter+2].tag = kTXNQDFontStyleAttribute ; + typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; + typeAttr[attrCounter+2].data.dataValue = fontStyle ; + attrCounter += 3 ; + + } + if ( style.HasTextColour() ) + { + typeAttr[attrCounter].tag = kTXNQDFontColorAttribute ; + typeAttr[attrCounter].size = kTXNQDFontColorAttributeSize ; + typeAttr[attrCounter].data.dataPtr = (void*) &color ; + color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ; + attrCounter += 1 ; + } if ( attrCounter > 0 ) { @@ -891,7 +919,8 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style) start,end); wxASSERT_MSG( status == noErr , "Couldn't set text attributes" ) ; } - SetEditable(formerEditable) ; + if ( !formerEditable ) + SetEditable(formerEditable) ; } return TRUE ; } @@ -1034,9 +1063,9 @@ void wxTextCtrl::SetEditable(bool editable) if ( !m_macUsesTXN ) { if ( editable ) - UMAActivateControl( (ControlHandle) m_macControl ) ; + UMAActivateControl( (ControlHandle) m_macControl ) ; else - UMADeactivateControl((ControlHandle) m_macControl ) ; + UMADeactivateControl((ControlHandle) m_macControl ) ; } else { @@ -1106,12 +1135,14 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; - TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; - TXNClear( ((TXNObject) m_macTXN) ) ; - TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), - kTXNUseCurrentSelection, kTXNUseCurrentSelection); - SetEditable( formerEditable ) ; + if ( !formerEditable ) + SetEditable(true) ; + TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; + TXNClear( ((TXNObject) m_macTXN) ) ; + TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*)value.c_str(), value.Length(), + kTXNUseCurrentSelection, kTXNUseCurrentSelection); + if ( !formerEditable ) + SetEditable( formerEditable ) ; } Refresh() ; } @@ -1130,10 +1161,12 @@ void wxTextCtrl::Remove(long from, long to) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; + if ( !formerEditable ) + SetEditable(true) ; TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; TXNClear( ((TXNObject) m_macTXN) ) ; - SetEditable( formerEditable ) ; + if ( !formerEditable ) + SetEditable( formerEditable ) ; } Refresh() ; } @@ -1178,9 +1211,13 @@ void wxTextCtrl::WriteText(const wxString& text) { wxString value ; if( wxApp::s_macDefaultEncodingIsPC ) + { value = wxMacMakeMacStringFromPC( text ) ; + // value.Replace( "\n", "\r" ); // TODO this should be handled by the conversion + } else value = text ; + if ( !m_macUsesTXN ) { TEInsert( value , value.Length() , ((TEHandle) m_macTE) ) ; @@ -1188,14 +1225,16 @@ void wxTextCtrl::WriteText(const wxString& text) else { bool formerEditable = IsEditable() ; - SetEditable(true) ; - long start , end , dummy ; - GetSelection( &start , &dummy ) ; + if ( !formerEditable ) + SetEditable(true) ; + long start , end , dummy ; + GetSelection( &start , &dummy ) ; TXNSetData( ((TXNObject) m_macTXN), kTXNTextData, (void*) (const char*)value, value.Length(), kTXNUseCurrentSelection, kTXNUseCurrentSelection); - GetSelection( &dummy , &end ) ; + GetSelection( &dummy , &end ) ; SetStyle( start , end , GetDefaultStyle() ) ; - SetEditable( formerEditable ) ; + if ( !formerEditable ) + SetEditable( formerEditable ) ; } MacRedrawControl() ; } @@ -1539,7 +1578,7 @@ bool wxTextCtrl::Show(bool show) bool retval = wxControl::Show( show ) ; - if ( former != m_macControlIsShown ) + if ( former != m_macControlIsShown && m_macUsesTXN ) { if ( m_macControlIsShown ) TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, @@ -1606,7 +1645,13 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) event.Enable( CanRedo() ); } - +bool wxTextCtrl::MacSetupCursor( const wxPoint& pt ) +{ + if ( m_macUsesTXN ) + return true ; + else + return wxWindow::MacSetupCursor( pt ) ; +} #endif // wxUSE_TEXTCTRL diff --git a/src/mac/toolbar.cpp b/src/mac/toolbar.cpp index 0ed2cc6b55..c1d36f4122 100644 --- a/src/mac/toolbar.cpp +++ b/src/mac/toolbar.cpp @@ -159,6 +159,13 @@ bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons wxToolBar::~wxToolBar() { + size_t index = 0 ; + for ( index = 0 ; index < m_macToolHandles.Count() ; ++index ) + { + // Delete the control as we get ghosts otherwise + ::DisposeControl( (ControlHandle) m_macToolHandles[index] ); + } + // we must refresh the frame size when the toolbar is deleted but the frame // is not - otherwise toolbar leaves a hole in the place it used to occupy } diff --git a/src/mac/tooltip.cpp b/src/mac/tooltip.cpp index 5f71f00425..2fbce9c667 100644 --- a/src/mac/tooltip.cpp +++ b/src/mac/tooltip.cpp @@ -190,7 +190,10 @@ void wxMacToolTip::Setup( WindowRef win , wxString text , wxPoint localPosition m_mark++ ; Clear() ; m_position = localPosition ; - m_label = wxMacMakeMacStringFromPC( text ) ; + if( wxApp::s_macDefaultEncodingIsPC ) + m_label = wxMacMakeMacStringFromPC( text ) ; + else + m_label = text ; m_window =win; s_ToolTipWindowRef = m_window ; m_backpict = NULL ; @@ -287,16 +290,38 @@ void wxMacToolTip::Draw() m_rect.right += kTipBorder ; #endif m_rect.bottom = m_rect.top + height + 2 * kTipBorder; + Rect r ; + GetPortBounds( GetWindowPort( m_window ) , &r ) ; + if ( m_rect.top < 0 ) + { + m_rect.bottom += -m_rect.top ; + m_rect.top = 0 ; + } + if ( m_rect.left < 0 ) + { + m_rect.right += -m_rect.left ; + m_rect.left = 0 ; + } + if ( m_rect.right > r.right ) + { + m_rect.left -= (m_rect.right - r.right ) ; + m_rect.right = r.right ; + } + if ( m_rect.bottom > r.bottom ) + { + m_rect.top -= (m_rect.bottom - r.bottom) ; + m_rect.bottom = r.bottom ; + } ClipRect( &m_rect ) ; BackColor( whiteColor ) ; ForeColor(blackColor ) ; - GWorldPtr port ; - NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ; - CGrafPtr origPort ; - GDHandle origDevice ; - - GetGWorld( &origPort , &origDevice ) ; - SetGWorld( port , NULL ) ; + GWorldPtr port ; + NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ; + CGrafPtr origPort ; + GDHandle origDevice ; + + GetGWorld( &origPort , &origDevice ) ; + SetGWorld( port , NULL ) ; m_backpict = OpenPicture(&m_rect); diff --git a/src/mac/toplevel.cpp b/src/mac/toplevel.cpp index efcf1a737d..2ce4b8da97 100644 --- a/src/mac/toplevel.cpp +++ b/src/mac/toplevel.cpp @@ -59,9 +59,6 @@ wxWindowList wxModelessWindows; static Point gs_lastWhere; static long gs_lastWhen = 0; -// cursor stuff -extern int wxBusyCursorCount; - // ============================================================================ // wxTopLevelWindowMac implementation @@ -235,7 +232,7 @@ pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef { wxTheApp->m_macCurrentEvent = &rec ; wxWindow* focus = wxWindow::FindFocus() ; - if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent( focus , rec.message , rec.modifiers , rec.when , rec.where.h , rec.where.v ) ) + if ( (focus != NULL) && !UMAMenuEvent(&rec) && wxTheApp->MacSendKeyDownEvent( focus , rec.message , rec.modifiers , rec.when , rec.where.h , rec.where.v ) ) { // was handled internally result = noErr ; @@ -322,7 +319,11 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, } else { +#if TARGET_CARBON wclass = kPlainWindowClass ; +#else + wclass = kFloatingWindowClass ; +#endif } } else if ( HasFlag( wxCAPTION ) ) @@ -345,7 +346,11 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, } else { +#if TARGET_CARBON wclass = kPlainWindowClass ; +#else + wclass = kModalWindowClass ; +#endif } } @@ -431,7 +436,7 @@ void wxTopLevelWindowMac::MacUpdate( long timestamp) // Raise the window to the top of the Z order void wxTopLevelWindowMac::Raise() { - ::BringToFront( (WindowRef)m_macWindow ) ; + ::SelectWindow( (WindowRef)m_macWindow ) ; } // Lower the window to the bottom of the Z order @@ -527,7 +532,7 @@ void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr ) if ( ev->what == mouseUp ) { wxTheApp->s_captureWindow = NULL ; - if ( wxBusyCursorCount == 0 ) + if ( !wxIsBusy() ) { m_cursor.MacInstall() ; } @@ -577,7 +582,13 @@ void wxTopLevelWindowMac::MacActivate( WXEVENTREF ev , bool inIsActivating ) UMAHighlightAndActivateWindow( (WindowRef)m_macWindow , inIsActivating ) ; - MacSuperEnabled( inIsActivating ) ; + // Early versions of MacOS X don't refresh backgrounds properly, + // so refresh the whole window on activation and deactivation. + long osVersion = UMAGetSystemVersion(); + if (osVersion >= 0x1000 && osVersion < 0x1020) + Refresh(TRUE); + else + MacSuperEnabled( inIsActivating ) ; } void wxTopLevelWindowMac::MacKeyDown( WXEVENTREF ev ) @@ -604,8 +615,8 @@ bool wxTopLevelWindowMac::Show(bool show) return FALSE; if (show) - { - ::ShowWindow( (WindowRef)m_macWindow ) ; + { + ::TransitionWindow((WindowRef)m_macWindow,kWindowZoomTransitionEffect,kWindowShowTransitionAction,nil); ::SelectWindow( (WindowRef)m_macWindow ) ; // no need to generate events here, they will get them triggered by macos // actually they should be , but apparently they are not @@ -616,7 +627,7 @@ bool wxTopLevelWindowMac::Show(bool show) } else { - ::HideWindow( (WindowRef)m_macWindow ) ; + ::TransitionWindow((WindowRef)m_macWindow,kWindowZoomTransitionEffect,kWindowHideTransitionAction,nil); } if ( !show ) @@ -675,9 +686,13 @@ void wxTopLevelWindowMac::DoMoveWindow(int x, int y, int width, int height) if ( doResize ) ::SizeWindow((WindowRef)m_macWindow, m_width, m_height , true); + + // the OS takes care of invalidating and erasing the new area so we only have to + // take care of refreshing for full repaints + + if ( doResize && !HasFlag(wxNO_FULL_REPAINT_ON_RESIZE) ) + Refresh() ; - // the OS takes care of invalidating and erasing the new area - // we have erased the old one if ( IsKindOf( CLASSINFO( wxFrame ) ) ) { diff --git a/src/mac/treectrl.cpp b/src/mac/treectrl.cpp index 67ccc4f022..5a50bd157d 100644 --- a/src/mac/treectrl.cpp +++ b/src/mac/treectrl.cpp @@ -123,7 +123,7 @@ long wxTreeCtrl::GetChild(long item) const return 0; } -long wxTreeCtrl::GetParent(long item) const +long wxTreeCtrl::GetItemParent(long item) const { // TODO return 0; diff --git a/src/mac/uma.cpp b/src/mac/uma.cpp index 7f12124698..197b7249c5 100644 --- a/src/mac/uma.cpp +++ b/src/mac/uma.cpp @@ -1,5 +1,8 @@ #include "wx/defs.h" #include "wx/dc.h" +#ifndef __DARWIN__ +#include +#endif #include "wx/mac/uma.h" #include @@ -23,12 +26,14 @@ static bool sUMAHasAppearance = false ; static long sUMAAppearanceVersion = 0 ; +static long sUMASystemVersion = 0 ; static bool sUMAHasAquaLayout = false ; static bool sUMASystemInitialized = false ; extern int gAGABackgroundColor ; bool UMAHasAppearance() { return sUMAHasAppearance ; } long UMAGetAppearanceVersion() { return sUMAAppearanceVersion ; } +long UMAGetSystemVersion() { return sUMASystemVersion ; } static bool sUMAHasWindowManager = false ; static long sUMAWindowManagerAttr = 0 ; @@ -71,6 +76,9 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls ) InitCursor(); #endif + if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr) + sUMASystemVersion = 0x0000 ; + long theAppearance ; if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) { @@ -232,33 +240,157 @@ void UMAInsertSubMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SIn SetMenuItemHierarchicalID( menu , item , id ) ; } +void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , SInt16 key , UInt8 modifiers ) +{ + if ( key ) + { + SInt16 glyph = 0 ; + SInt16 macKey = key ; + if ( key >= WXK_F1 && key <= WXK_F15 ) + { + macKey = kFunctionKeyCharCode ; + glyph = kMenuF1Glyph + ( key - WXK_F1 ) ; + if ( key >= WXK_F13 ) + glyph += 13 ; + switch( key ) + { + case WXK_F1 : + macKey += ( 0x7a << 8 ) ; + break ; + case WXK_F2 : + macKey += ( 0x78 << 8 ) ; + break ; + case WXK_F3 : + macKey += ( 0x63 << 8 ) ; + break ; + case WXK_F4 : + macKey += ( 0x76 << 8 ) ; + break ; + case WXK_F5 : + macKey += ( 0x60 << 8 ) ; + break ; + case WXK_F6 : + macKey += ( 0x61 << 8 ) ; + break ; + case WXK_F7 : + macKey += ( 0x62 << 8 ) ; + break ; + case WXK_F8 : + macKey += ( 0x64 << 8 ) ; + break ; + case WXK_F9 : + macKey += ( 0x65 << 8 ) ; + break ; + case WXK_F10 : + macKey += ( 0x6D << 8 ) ; + break ; + case WXK_F11 : + macKey += ( 0x67 << 8 ) ; + break ; + case WXK_F12 : + macKey += ( 0x6F << 8 ) ; + break ; + case WXK_F13 : + macKey += ( 0x69 << 8 ) ; + break ; + case WXK_F14 : + macKey += ( 0x6B << 8 ) ; + break ; + case WXK_F15 : + macKey += ( 0x71 << 8 ) ; + break ; + default : + break ; + } ; + // unfortunately this does not yet trigger the right key , + // for some reason mac justs picks the first function key menu + // defined, so we turn this off + macKey = 0 ; + glyph = 0 ; + } + else + { + switch( key ) + { + case WXK_BACK : + macKey = kBackspaceCharCode ; + glyph = kMenuDeleteLeftGlyph ; + break ; + case WXK_TAB : + macKey = kTabCharCode ; + glyph = kMenuTabRightGlyph ; + break ; + case kEnterCharCode : + macKey = kEnterCharCode ; + glyph = kMenuEnterGlyph ; + break ; + case WXK_RETURN : + macKey = kReturnCharCode ; + glyph = kMenuReturnGlyph ; + break ; + case WXK_ESCAPE : + macKey = kEscapeCharCode ; + glyph = kMenuEscapeGlyph ; + break ; + case WXK_SPACE : + macKey = ' ' ; + glyph = kMenuSpaceGlyph ; + break ; + case WXK_DELETE : + macKey = kDeleteCharCode ; + glyph = kMenuDeleteRightGlyph ; + break ; + case WXK_CLEAR : + macKey = kClearCharCode ; + glyph = kMenuClearGlyph ; + break ; + case WXK_PRIOR : // PAGE UP + macKey = kPageUpCharCode ; + glyph = kMenuPageUpGlyph ; + break ; + case WXK_NEXT : + macKey = kPageDownCharCode ; + glyph = kMenuPageDownGlyph ; + break ; + case WXK_LEFT : + macKey = kLeftArrowCharCode ; + glyph = kMenuLeftArrowGlyph ; + break ; + case WXK_UP : + macKey = kUpArrowCharCode ; + glyph = kMenuUpArrowGlyph ; + break ; + case WXK_RIGHT : + macKey = kRightArrowCharCode ; + glyph = kMenuRightArrowGlyph ; + break ; + case WXK_DOWN : + macKey = kDownArrowCharCode ; + glyph = kMenuDownArrowGlyph ; + break ; + } + } + + SetItemCmd( menu, item , macKey ); + SetMenuItemModifiers(menu, item , modifiers ) ; + + if ( glyph ) + SetMenuItemKeyGlyph(menu, item , glyph ) ; + } +} void UMAAppendMenuItem( MenuRef menu , StringPtr l , SInt16 key, UInt8 modifiers ) { - Str255 label ; - memcpy( label , l , l[0]+1 ) ; - if ( key ) - { - int pos = label[0] ; - label[++pos] = '/'; - label[++pos] = toupper( key ); - label[0] = pos ; - } - MacAppendMenu( menu , label ) ; + MacAppendMenu(menu, "\pA"); + SetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), l); + UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), key , modifiers ) ; } void UMAInsertMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SInt16 key, UInt8 modifiers ) { - Str255 label ; - memcpy( label , l , l[0]+1 ) ; - if ( key ) - { - int pos = label[0] ; - label[++pos] = '/'; - label[++pos] = toupper( key ); - label[0] = pos ; - } - MacInsertMenuItem( menu , label , item) ; + MacInsertMenuItem( menu , "\p" , item) ; + SetMenuItemText(menu, item , l); + UMASetMenuItemShortcut( menu , item , key , modifiers ) ; } // quickdraw @@ -659,3 +791,18 @@ wxMacPortStateHelper::~wxMacPortStateHelper() } } +OSStatus UMAPutScrap( Size size , OSType type , void *data ) +{ + OSStatus err = noErr ; +#if !TARGET_CARBON + err = PutScrap( size , type , data ) ; +#else + ScrapRef scrap; + err = GetCurrentScrap (&scrap); + if ( !err ) + { + err = PutScrapFlavor (scrap, type , 0, size, data); + } +#endif + return err ; +} diff --git a/src/mac/utils.cpp b/src/mac/utils.cpp index 1d0252c810..2cb2825106 100644 --- a/src/mac/utils.cpp +++ b/src/mac/utils.cpp @@ -158,7 +158,7 @@ void wxUsleep(unsigned long milliseconds) do { YieldToAnyThread() ; - } while( clock() - start < milliseconds / CLOCKS_PER_SEC ) ; + } while( clock() - start < milliseconds / 1000.0 * CLOCKS_PER_SEC ) ; } void wxSleep(int nSecs) @@ -313,49 +313,38 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c } #endif // wxUSE_RESOURCES -int wxBusyCursorCount = 0; -extern CursHandle gMacCurrentCursor ; -CursHandle gMacStoredActiveCursor = NULL ; +int gs_wxBusyCursorCount = 0; +extern wxCursor gMacCurrentCursor ; +wxCursor gMacStoredActiveCursor ; // Set the cursor to the busy cursor for all windows void wxBeginBusyCursor(wxCursor *cursor) { - wxBusyCursorCount ++; - if (wxBusyCursorCount == 1) + if (gs_wxBusyCursorCount++ == 0) { gMacStoredActiveCursor = gMacCurrentCursor ; - ::SetCursor( *::GetCursor( watchCursor ) ) ; - } - else - { - // TODO - } + cursor->MacInstall() ; + } + //else: nothing to do, already set } // Restore cursor to normal void wxEndBusyCursor() { - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount --; - if (wxBusyCursorCount == 0) - { - if ( gMacStoredActiveCursor ) - ::SetCursor( *gMacStoredActiveCursor ) ; - else + wxCHECK_RET( gs_wxBusyCursorCount > 0, + wxT("no matching wxBeginBusyCursor() for wxEndBusyCursor()") ); + + if (--gs_wxBusyCursorCount == 0) { - Cursor MacArrow ; - ::SetCursor( GetQDGlobalsArrow( &MacArrow ) ) ; - } - gMacStoredActiveCursor = NULL ; + gMacStoredActiveCursor.MacInstall() ; + gMacStoredActiveCursor = wxNullCursor ; } } // TRUE if we're between the above two calls bool wxIsBusy() { - return (wxBusyCursorCount > 0); + return (gs_wxBusyCursorCount > 0); } wxString wxMacFindFolder( short vol, @@ -461,7 +450,11 @@ int wxDisplayDepth() // Get size of display void wxDisplaySize(int *width, int *height) { - wxClientDisplayRect( NULL , NULL , width , height ) ; + BitMap screenBits; + GetQDGlobalsScreenBits( &screenBits ); + + *width = screenBits.bounds.right - screenBits.bounds.left ; + *height = screenBits.bounds.bottom - screenBits.bounds.top ; } void wxDisplaySizeMM(int *width, int *height) diff --git a/src/mac/wave.cpp b/src/mac/wave.cpp index 01c7b9b035..499d5ab28b 100644 --- a/src/mac/wave.cpp +++ b/src/mac/wave.cpp @@ -17,6 +17,8 @@ #include "wx/string.h" #include "wx/wave.h" +#if wxUSE_WAVE + #ifdef __WXMAC__ #include "wx/mac/private.h" #ifndef __DARWIN__ @@ -57,7 +59,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) ret = true; else { /* - if (sndChan) + if (sndChan) { // we're playing FSClose(SndRefNum); SndRefNum = 0; @@ -66,7 +68,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan = 0; KillTimer(0,timerID); } - + if (!lpSnd) return true; @@ -81,14 +83,14 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan->qLength = 128; - if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0)) + if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0)) { free(sndChan); sndChan = 0; return false; } - if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd))) + if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd))) { SndDisposeChannel(sndChan, TRUE); free(sndChan); @@ -102,7 +104,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) if (fdwSound & SND_ASYNC) async = true; - if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr) + if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr) { FSClose (SndRefNum); SndRefNum = 0; @@ -112,11 +114,11 @@ bool wxWave::Create(const wxString& fileName, bool isResource) return false; } - if (async) + if (async) { // haven't finish yet timerID = SetTimer(0, 0, 250, TimerCallBack); - } - else + } + else { FSClose (SndRefNum); SndRefNum = 0; @@ -125,7 +127,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan = 0; }*/ } - + return ret; } @@ -135,8 +137,8 @@ bool wxWave::Play(bool async, bool looped) const { char lpSnd[32]; bool ret = false; - - if (m_isResource) + + if (m_isResource) { #if TARGET_CARBON c2pstrcpy((unsigned char *)lpSnd, m_sndname); @@ -145,13 +147,13 @@ bool wxWave::Play(bool async, bool looped) const c2pstr((char *) lpSnd); #endif SndListHandle hSnd; - + hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd); if ((hSnd != NULL) && (SndPlay((SndChannelPtr)m_sndChan, (SndListHandle) hSnd, async) == noErr)) ret = true; - } - + } + return ret; } @@ -159,7 +161,7 @@ bool wxWave::Play(bool async, bool looped) const bool wxWave::FreeData() { bool ret = false; - + if (m_isResource) { m_sndname.Empty(); @@ -167,9 +169,9 @@ bool wxWave::FreeData() } else { - //TODO, + //TODO, } - + return ret; } @@ -188,7 +190,7 @@ bool wxWave::FreeData() // first, get the volume reference number for the file. Start by // making a Pstring with just the volume name strcpy ((char *) name, path); - if (c = strchr ((char *) name, ':')) + if (c = strchr ((char *) name, ':')) { c++; *c = '\0'; @@ -220,7 +222,7 @@ bool wxWave::FreeData() void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) { - if(!sndChan) + if(!sndChan) { KillTimer(0,timerID); return; @@ -243,3 +245,4 @@ void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) }*/ +#endif diff --git a/src/mac/window.cpp b/src/mac/window.cpp index bc83a282a2..e536644618 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -133,6 +133,11 @@ void wxWindowMac::Init() // Destructor wxWindowMac::~wxWindowMac() { + // Send destroy event + wxWindowDestroyEvent destroyEvent(this); + destroyEvent.SetId(GetId()); + GetEventHandler()->ProcessEvent(destroyEvent); + // deleting a window while it is shown invalidates the region if ( IsShown() ) { wxWindowMac* iter = this ; @@ -169,7 +174,7 @@ wxWindowMac::~wxWindowMac() { s_lastMouseWindow = NULL ; } - + wxFrame* frame = wxDynamicCast( wxGetTopLevelParent( this ) , wxFrame ) ; if ( frame ) { @@ -182,10 +187,23 @@ wxWindowMac::~wxWindowMac() gFocusWindow = NULL ; } + // CS: copied from MSW : + // VS: destroy children first and _then_ detach *this from its parent. + // If we'd do it the other way around, children wouldn't be able + // find their parent frame (see above). + DestroyChildren(); + if ( m_parent ) m_parent->RemoveChild(this); - DestroyChildren(); + // delete our drop target if we've got one +#if wxUSE_DRAG_AND_DROP + if ( m_dropTarget != NULL ) + { + delete m_dropTarget; + m_dropTarget = NULL; + } +#endif // wxUSE_DRAG_AND_DROP } // Constructor @@ -227,24 +245,32 @@ void wxWindowMac::SetFocus() { if (gFocusWindow ) { - #if wxUSE_CARET +#if wxUSE_CARET // Deal with caret if ( gFocusWindow->m_caret ) { gFocusWindow->m_caret->OnKillFocus(); } - #endif // wxUSE_CARET - #ifndef __WXUNIVERSAL__ +#endif // wxUSE_CARET +#ifndef __WXUNIVERSAL__ wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ; if ( control && control->GetMacControl() ) { UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNoPart ) ; control->MacRedrawControl() ; } - #endif - wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId); - event.SetEventObject(gFocusWindow); - gFocusWindow->GetEventHandler()->ProcessEvent(event) ; +#endif + // Without testing the window id, for some reason + // a kill focus event can still be sent to + // the control just being focussed. + int thisId = this->m_windowId; + int gFocusWindowId = gFocusWindow->m_windowId; + if (gFocusWindowId != thisId) + { + wxFocusEvent event(wxEVT_KILL_FOCUS, gFocusWindow->m_windowId); + event.SetEventObject(gFocusWindow); + gFocusWindow->GetEventHandler()->ProcessEvent(event) ; + } } gFocusWindow = this ; { @@ -353,7 +379,17 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y) ::InsertMenu( (MenuHandle) menu->GetHMenu() , -1 ) ; long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() ,y,x, 0) ; - menu->MacMenuSelect( this , TickCount() , HiWord(menuResult) , LoWord(menuResult) ) ; + if ( HiWord(menuResult) != 0 ) + { + MenuCommand id ; + GetMenuItemCommandID( GetMenuHandle(HiWord(menuResult)) , LoWord(menuResult) , &id ) ; + + wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, id ); + event.m_timeStamp = TickCount() ; + event.SetEventObject(this->GetEventHandler()); + event.SetInt( id ); + GetEventHandler()->ProcessEvent(event); + } ::DeleteMenu( menu->MacGetMenuId() ) ; menu->SetInvokingWindow(NULL); @@ -381,9 +417,9 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const MacRootWindowToWindow( x , y ) ; if ( x ) - x -= MacGetLeftBorderSize() ; + *x -= MacGetLeftBorderSize() ; if ( y ) - y -= MacGetTopBorderSize() ; + *y -= MacGetTopBorderSize() ; } void wxWindowMac::DoClientToScreen(int *x, int *y) const @@ -391,9 +427,9 @@ void wxWindowMac::DoClientToScreen(int *x, int *y) const WindowRef window = (WindowRef) MacGetRootWindow() ; if ( x ) - x += MacGetLeftBorderSize() ; + *x += MacGetLeftBorderSize() ; if ( y ) - y += MacGetTopBorderSize() ; + *y += MacGetTopBorderSize() ; MacWindowToRootWindow( x , y ) ; @@ -595,7 +631,35 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height) { // erase former position - Refresh() ; + bool partialRepaint = false ; + + if ( HasFlag(wxNO_FULL_REPAINT_ON_RESIZE) ) + { + wxPoint oldPos( m_x , m_y ) ; + wxPoint newPos( actualX , actualY ) ; + MacWindowToRootWindow( &oldPos.x , &oldPos.y ) ; + MacWindowToRootWindow( &newPos.x , &newPos.y ) ; + if ( oldPos == newPos ) + { + partialRepaint = true ; + RgnHandle oldRgn,newRgn,diffRgn ; + oldRgn = NewRgn() ; + newRgn = NewRgn() ; + diffRgn = NewRgn() ; + SetRectRgn(oldRgn , oldPos.x , oldPos.y , oldPos.x + m_width , oldPos.y + m_height ) ; + SetRectRgn(newRgn , newPos.x , newPos.y , newPos.x + actualWidth , newPos.y + actualHeight ) ; + DiffRgn( newRgn , oldRgn , diffRgn ) ; + InvalWindowRgn( (WindowRef) MacGetRootWindow() , diffRgn ) ; + DiffRgn( oldRgn , newRgn , diffRgn ) ; + InvalWindowRgn( (WindowRef) MacGetRootWindow() , diffRgn ) ; + DisposeRgn(oldRgn) ; + DisposeRgn(newRgn) ; + DisposeRgn(diffRgn) ; + } + } + + if ( !partialRepaint ) + Refresh() ; m_x = actualX ; m_y = actualY ; @@ -607,7 +671,8 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height) MacUpdateDimensions() ; // erase new position - Refresh() ; + if ( !partialRepaint ) + Refresh() ; if ( doMove ) wxWindowMac::MacSuperChangedPosition() ; // like this only children will be notified @@ -1206,7 +1271,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect) if (child == m_vScrollBar) continue; if (child == m_hScrollBar) continue; if (child->IsTopLevel()) continue; - + int x,y; child->GetPosition( &x, &y ); int w,h; @@ -1439,18 +1504,17 @@ bool wxWindowMac::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindowMa return FALSE ; } -extern int wxBusyCursorCount ; static wxWindow *gs_lastWhich = NULL; -bool wxWindowMac::MacSetupCursor( const wxPoint& pt) +bool wxWindowMac::MacSetupCursor( const wxPoint& pt) { // first trigger a set cursor event - + wxPoint clientorigin = GetClientAreaOrigin() ; wxSize clientsize = GetClientSize() ; wxCursor cursor ; if ( wxRect2DInt( clientorigin.x , clientorigin.y , clientsize.x , clientsize.y ).Contains( wxPoint2DInt( pt ) ) ) - { + { wxSetCursorEvent event( pt.x , pt.y ); bool processedEvtSetCursor = GetEventHandler()->ProcessEvent(event); @@ -1460,7 +1524,7 @@ bool wxWindowMac::MacSetupCursor( const wxPoint& pt) } else { - + // the test for processedEvtSetCursor is here to prevent using m_cursor // if the user code caught EVT_SET_CURSOR() and returned nothing from // it - this is a way to say that our cursor shouldn't be used for this @@ -1600,6 +1664,7 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling { RgnHandle visRgn = NewRgn() ; RgnHandle tempRgn = NewRgn() ; + RgnHandle tempStaticBoxRgn = NewRgn() ; SetRectRgn( visRgn , 0 , 0 , m_width , m_height ) ; @@ -1609,8 +1674,8 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling int borderTop = 14 ; int borderOther = 4 ; - SetRectRgn( tempRgn , borderOther , borderTop , m_width - borderOther , m_height - borderOther ) ; - DiffRgn( visRgn , tempRgn , visRgn ) ; + SetRectRgn( tempStaticBoxRgn , borderOther , borderTop , m_width - borderOther , m_height - borderOther ) ; + DiffRgn( visRgn , tempStaticBoxRgn , visRgn ) ; } if ( !IsTopLevel() ) @@ -1624,10 +1689,10 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling parent->MacWindowToRootWindow( &x, &y ) ; MacRootWindowToWindow( &x , &y ) ; - SetRectRgn( tempRgn , - x + parent->MacGetLeftBorderSize() , y + parent->MacGetTopBorderSize() , - x + size.x - parent->MacGetLeftBorderSize() - parent->MacGetRightBorderSize(), - y + size.y - parent->MacGetTopBorderSize() - parent->MacGetBottomBorderSize()) ; + SetRectRgn( tempRgn , + x + parent->MacGetLeftBorderSize() , y + parent->MacGetTopBorderSize() , + x + size.x - parent->MacGetRightBorderSize(), + y + size.y - parent->MacGetBottomBorderSize()) ; SectRgn( visRgn , tempRgn , visRgn ) ; if ( parent->IsTopLevel() ) @@ -1646,6 +1711,14 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling if ( !child->IsTopLevel() && child->IsShown() ) { SetRectRgn( tempRgn , child->m_x , child->m_y , child->m_x + child->m_width , child->m_y + child->m_height ) ; + if ( child->IsKindOf( CLASSINFO( wxStaticBox ) ) ) + { + int borderTop = 14 ; + int borderOther = 4 ; + + SetRectRgn( tempStaticBoxRgn , child->m_x + borderOther , child->m_y + borderTop , child->m_x + child->m_width - borderOther , child->m_y + child->m_height - borderOther ) ; + DiffRgn( tempRgn , tempStaticBoxRgn , tempRgn ) ; + } DiffRgn( visRgn , tempRgn , visRgn ) ; } } @@ -1670,6 +1743,14 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling if ( !sibling->IsTopLevel() && sibling->IsShown() ) { SetRectRgn( tempRgn , sibling->m_x - m_x , sibling->m_y - m_y , sibling->m_x + sibling->m_width - m_x , sibling->m_y + sibling->m_height - m_y ) ; + if ( sibling->IsKindOf( CLASSINFO( wxStaticBox ) ) ) + { + int borderTop = 14 ; + int borderOther = 4 ; + + SetRectRgn( tempStaticBoxRgn , sibling->m_x - m_x + borderOther , sibling->m_y - m_y + borderTop , sibling->m_x + sibling->m_width - m_x - borderOther , sibling->m_y + sibling->m_height - m_y - borderOther ) ; + DiffRgn( tempRgn , tempStaticBoxRgn , tempRgn ) ; + } DiffRgn( visRgn , tempRgn , visRgn ) ; } } @@ -1678,6 +1759,7 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion( bool respectChildrenAndSibling m_macVisibleRegion = visRgn ; DisposeRgn( visRgn ) ; DisposeRgn( tempRgn ) ; + DisposeRgn( tempStaticBoxRgn ) ; return m_macVisibleRegion ; } diff --git a/src/make.env.in b/src/make.env.in index 2cc978aa50..94a973aeef 100644 --- a/src/make.env.in +++ b/src/make.env.in @@ -12,7 +12,7 @@ ####################### GENERAL SETTINGS ############################ # see comment near LDFLAGS at the end of file -EXTRALIBS = @LDFLAGS@ @LIBS@ @DMALLOC_LIBS@ +EXTRALIBS = @LDFLAGS@ @LDFLAGS_VERSIONING@ @LIBS@ @DMALLOC_LIBS@ OPENGLLIBS = @OPENGL_LIBS@ LDLIBS = ${APPEXTRALIBS} ${top_builddir}/lib/@WX_TARGET_LIBRARY@ ${EXTRALIBS} @@ -21,6 +21,7 @@ TOOLKITDIR = @TOOLKIT_DIR@ WXLIB = @WX_LIBRARY_NAME_STATIC@ WXSHLIB = @WX_LIBRARY_NAME_SHARED@ +WXLIBBASE = @WX_LIBRARY_BASENAME@ ########################### VERSION ################################# diff --git a/src/makeb32.env b/src/makeb32.env index 0f942ef87d..857e503f62 100644 --- a/src/makeb32.env +++ b/src/makeb32.env @@ -15,6 +15,8 @@ BCCDIR=$(MAKEDIR)\.. ARCHINCDIR=$(WXDIR)\lib\msw ARCHSETUPH=$(ARCHINCDIR)\wx\setup.h +#see below for SETUPSRCDIR + # Using a config file isn't compatible across all BC++ versions # LNKCFG=$(WXDIR)\src\msw\bclnk32.cfg @@ -81,6 +83,20 @@ WXLIBNAME=wx32 WXLIBNAME=wx32 !endif +## Use this if you want to use the UNIV controls set rather than the native ones +## make -f makefile.b32 WXUSINGUNIV=1 +!if "$(WXUSINGUNIV)" == "1" +USE_UNIV="UNIV" +CFG=$(CFG)v +WXLIBNAME=$(WXLIBNAME)v +ARCHINCDIR=$(ARCHINCDIR)v +SETUPSRCDIR=$(WXDIR)\include\wx\univ +PORT=__WXUNIVERSAL__ +!else +USE_UNIV="" +PORT=__WXMSW__ +SETUPSRCDIR=$(WXDIR)\include\wx\msw +!endif #not sure what to do with unicode builds - we need to define something ? #!if "$(UNICODE)" == "1" diff --git a/src/makeg95.env b/src/makeg95.env index 39f402da26..8560dad92f 100644 --- a/src/makeg95.env +++ b/src/makeg95.env @@ -10,16 +10,57 @@ # CVS_ID: $Id$ # -# If using Cygwin beta, set this to 0. -# If using Mingw32 or Cygwin 1.0 or later, set this to 1. +# The MINGW32 and MINGW32VERSION variables are preconfigured for +# MinGW gcc version 3.x and must both be changed for any version +# earlier than 3.0 or for cygwin. Editing this file is one way to +# change them. An easier way, at least with GNU make, is to override +# them on the command line, e.g. +# make MINGW32=0 MINGW32VERSION=2.8 -f makefile.g95 + +# If using Mingw32 (any version), set this to 1. +# If using Cygwin (any version), set this to 0. +# +# This agrees with the instructions given in docs/msw/install.txt . +# Earlier versions of this makefile suggested setting MINGW32=1 for +# recent versions of cygwin, but that would give the wrong dll entry +# point in src/msw/makefile.g95 . +# +# With cygwin, there are still some problems compiling wxWindows +# this way; './configure && make' may work better. +# MINGW32=1 -# Set to the version you have -#MINGW32VERSION=2.95 +# Set to your gcc version. Generally 'gcc --version' tells you +# which version you have. But it cannot distinguish between +# 2.95.2-1 and earlier suffix versions of 2.95 . In that case, +# inspect the dates of bin/gcc.exe and bin/ld.exe ; if they +# are at least +# 2000-01-21 for gcc.exe and +# 2000-02-04 for ld.exe +# then use '2.95-late'. +# +# gcc 2.8.x and earlier require struct-return workaround +#MINGW32VERSION=2.8 +# +# gcc 2.95.2 and earlier requires special thunk option +#MINGW32VERSION=2.9-early +# +# mingw gcc-2.95.2-1 supports '-shared' +# windres provided with gcc-2.95.2-1 supports temp file option +#MINGW32VERSION=2.95-late +# +# gcc 3.x provides a win32api.h header MINGW32VERSION=3.0 +# If we're using MSYS, or other utilities that use forward slashes, +# you need to set this when invoking the makefile from DOS, or the +# wrong separators will be assumed. However, if you're using MSYS, +# you really ought to invoke the makefile from MSYS--or, even better, +# use the './configure && make' technique that MSYS is designed for. +#OSTYPE=msys + # If building DLL, the version -WXVERSION=233 +WXVERSION=240 ifndef UNICODE UNICODE=0 @@ -33,12 +74,6 @@ ifndef wxUSE_GUI wxUSE_GUI=1 endif -# Say yes if you have a "modern" linker that supports --shared option. -# Note that you're probably going to wait forever for dlltool/gcc/etc -# to build the DLL, so you should really use a newer linker that -# supports --shared. -LD_SUPPORTS_SHARED=yes - # Set to the appropriate remove command (must support forward slashes) # You can get a suitable rm.exe from ports/mingw32/extra.zip on the ftp site. RM=rm -f @@ -49,65 +84,102 @@ COPY=cp ########################## Compiler ################################## -# C++ compiler -# Put a comment before --pipe for Cygwin, remove comment for Mingw32 2.95 - -# _GCC295 means GCC is GCC 2.95 -# _GCC3 mans GCC is 3.x or better (can actually just be 3.1 or better -# for Cygwin/MinGW) -ifneq (,$(findstring 2.95, $(MINGW32VERSION))) - _GCC295=1 -endif -ifneq (,$(findstring 3., $(MINGW32VERSION))) - _GCC3=1 -endif - -ifeq ($(MINGW32),1) - ifneq "$(_GCC295)$(_GCC3)" "" - ifeq ($(_GCC3),1) - CC = gcc --pipe - else - CC = gcc --pipe -fvtable-thunks - endif - else - CC = gcc +ifneq (,$(findstring $(MINGW32VERSION),2.8)) +# According to Guillermo Rodriguez Garcia , the +# -fno-pcc-struct-return option is needed to make the standard div() +# function work - otherwise it returns absolutely incorrect results +# which breaks the wxImage class. This was fixed on 1998-08-14 for +# mingw and cygwin. It is preferable not to use this option where it +# is not required, because it is documented to cause binary API +# incompatibility. + _STRUCT_RETURN_WORKAROUND=-fno-pcc-struct-return +# Really old versions of cygwin are thought to require extra headers. + ifneq ($(MINGW32),1) + GNUWIN32EXTRA=-I$(WXDIR)/include/wx/msw/gnuwin32 endif -else - CC = gcc endif -# C compiler for pure C programs -CCC = $(CC) +ifneq (,$(findstring $(MINGW32VERSION),2.8 2.9-early)) +# Earlier versions of this makefile defined the following macros +# explicitly; mingw versions since at least '2.95-late' define +# them already. + OBSOLETE_DEFINES = -D_X86_=1 -DWIN32 -D_WIN32 -D__WIN32__ +endif +# But cygwin doesn't define them, at least through its version +# 2.95.3-4 of gcc. +ifneq ($(MINGW32),1) + OBSOLETE_DEFINES = -D_X86_=1 -DWIN32 -D_WIN32 -D__WIN32__ +endif + +ifneq (,$(findstring $(MINGW32VERSION),2.8 2.9-early 2.95-late)) +# Versions prior to 3.0 require -fvtable-thunks for OLE support. +# All code must be built with this option, even C++ libraries you +# only link to, including system libraries. This option can cause +# subtle problems with multiple inheritance. + _THUNK_WORKAROUND=-fvtable-thunks +endif + +ifeq (,$(findstring $(MINGW32VERSION),2.8 2.9-early)) +# Versions since 2.95.2-1 support '-shared', which makes linking +# a dll *much* faster; and the accompanying windres supports +# '--use-temp-file', which is more robust. + LD_SUPPORTS_SHARED=yes + _USE_TEMP_FILE_IF_SUPPORTED=--use-temp-file +# Use the WIN32 wxDirDialog only if we have a recent mingw version + RECENT_MINGW=yes +endif + +ifeq (,$(findstring $(MINGW32VERSION),2.8 2.9-early 2.95-late)) +# Versions since 3.0 provide win32api.h . An old comment said to +# define this 'if you have w32api >= 0.5', but mingw 2.95.2-1 +# has no such header. + _USE_W32API_HEADER_IF_SUPPORTED = -DHAVE_W32API_H +# +# Revision 1.70.2.6 of this file suggested '--pipe' for mingw but +# not for cygwin, and only for version 3.0 or later. Since then, +# the advice given here +# http://mail.gnu.org/pipermail/autoconf/2000-July/005479.html +# is followed, and '--pipe' is not used unless you specify it on +# the make command line, e.g. +# make CXXFLAGS=--pipe CFLAGS=--pipe -f makefile.g95 +# +endif + +# C compiler +CXX = g++ + +# C compiler +CC = gcc # Compiler used for LEX generated C -CCLEX=gcc +# For now at least, it can be the same as the regular C compiler +CCLEX = $(CC) # This shouldn't be needed as make is supposed to define this # variable itself. Uncomment it if your make complains. #MAKE=make # LEX (currently unused) -LEX=flex # -t -L +# LEX=flex # -t -L # YACC (currently unused) -YACC=byacc -#YACC=bison +# YACC=byacc +# YACC=bison # Settings for Cyginw/Mingw32 # Some versions of windres cannot cope with the --preprocessor # option. Uncomment the RCPREPROCESSOR line below if yours can. -RESCOMP=windres +RESCOMP=windres $(_USE_TEMP_FILE_IF_SUPPORTED) RCINPUTSWITCH=-i RCOUTPUTSWITCH=-o RCINCSWITCH=--include-dir RCDEFSWITCH=--define # Note that this can cause windres to fail (Win95/98 problem?) # but commenting out RCPREPROCESSOR then does the trick. -#RCPREPROCESSOR=--preprocessor "$(CC) -c -E -xc-header -DRC_INVOKED" +#RCPREPROCESSOR=--preprocessor "$(CXX) -c -E -xc-header -DRC_INVOKED" # Don't make this too long (e.g. by adding contrib/include/wx) because it will # truncate the command line -# Note: --use-temp-file removed since Mingw32 2.95.2 doesn't recognise it RESFLAGS=$(RCPREPROCESSOR) $(RCINCSWITCH) $(WXDIR)/include $(RCEXTRAINC) $(RCDEFSWITCH) __WIN32__ $(RCDEFSWITCH) __WIN95__ $(RCDEFSWITCH) __GNUWIN32__ # Needed to build a DLL if your linker does not support --shared option. @@ -116,10 +188,15 @@ DLLTOOL = dlltool ########################## Compiler flags ############################# +# Unicode defines +ifeq ($(UNICODE),1) + UNICODE_OPT = -D_UNICODE -DUNICODE -DwxUSE_UNICODE=1 +else + UNICODE_OPT = +endif + # Miscellaneous compiler options -# GRG: the __MINGW32__ option is not needed anymore -# add "-DHAVE_W32API_H" if you have w32api >= 0.5 -OPTIONS = -DSTRICT # -D__MINGW32__ +OPTIONS = -DSTRICT $(_USE_W32API_HEADER_IF_SUPPORTED) # Add "-mthreads" if you want to have threads under mingw32 COMMON_THREADFLAGS = @@ -136,14 +213,15 @@ ifeq ($(WIN95),0) # With 4.0, you'll have to follow Win95 procedures for icons or you'll get the # default Windows icon. APPVER=3.50 -WINVERSION=-DWINVER=0x0350 -D__GNUWIN32__ -D__WIN32__ # Generic WIN32 +WINVERSION=-DWINVER=0x0350 -D__GNUWIN32__ # Generic WIN32 else APPVER=4.0 # 3.50 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ +# This means 'enable Windows 95 features' (in wxWindows and in the compiler). +WINVERSION=-DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ endif -CPU=i386 +# This is never used and should be expunged. +# CPU=i386 # Suffixes OBJSUFF=o @@ -166,22 +244,15 @@ else GUI = -D__WXMSW__ -D__WINDOWS__ -DwxUSE_GUI=0 endif - -# According to Guillermo Rodriguez Garcia , the -# -fno-pcc-struct-return option is needed to make the standard div() -# function work - otherwise it returns absolutely incorrect results -# which breaks the wxImage class. This is true at least for -# mingw32-gcc2.8.1, don't know about others. ifeq ($(FINAL),1) - OPT = -fno-pcc-struct-return -O2 -fno-rtti -fno-exceptions + OPT = -O2 -fno-rtti -fno-exceptions else - OPT = -fno-pcc-struct-return -fno-rtti -fno-exceptions + OPT = -fno-rtti -fno-exceptions endif # Options for ar archiver -# AROPTIONS = crs # For IRIX and Solaris (both SYSVR4). -AR = ar AROPTIONS = ruv +AR = ar RANLIB = ranlib # Extra compiler libraries @@ -212,21 +283,13 @@ WXSRC=$(WXDIR)/src/msw WXINC=$(WXDIR)/include WXBASESRC=$(WXDIR)/src/common -GNUWIN32EXTRA=-I$(WXDIR)/include/wx/msw/gnuwin32 - -ifeq ($(MINGW32),1) - ifneq "$(findstring 2.95, $(MINGW32VERSION))" "" - GNUWIN32EXTRA= - endif -endif - #ifeq ($(MINGW32),1) #INC = -I$(WXINC) -I$(WXDIR)/contrib/include -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff $(EXTRAINC) $(COMPPATHS) #else -INC = -I$(WXDIR)/lib/$(TOOLKIT)$(INCEXT) -I$(WXINC) -I$(WXDIR)/contrib/include -I$(WXDIR)/src/regex -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff $(EXTRAINC) $(COMPPATHS) -I$(WXDIR)/include/wx/msw/gnuwin32 +INC = -I$(WXDIR)/lib/$(TOOLKIT)$(INCEXT) -I$(WXINC) -I$(WXDIR)/contrib/include -I$(WXDIR)/src/regex -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff $(EXTRAINC) $(COMPPATHS) $(GNUWIN32EXTRA) #endif -RCLFLAGS=-cpp "cpp -lang-c++ -DWIN32 -D_WIN32 -DRCL_INVOKED -I$(WXWIN)/include" +RCLFLAGS=-cpp "cpp -lang-c++ $(OBSOLETE_DEFINES) -DRCL_INVOKED -I$(WXWIN)/include" ifdef WXUSINGDLL # png, jpeg, etc are exported from wx dll, so skip and save on link time. @@ -235,7 +298,7 @@ else LIBS = $(EXTRALIBS) $(WXLIB) -lregex -lpng -ljpeg -lzlib -ltiff $(WINLIBS) $(COMPLIBS) endif -WINFLAGS=-D_X86_=1 -DWIN32 -D_WIN32 $(WINVERSION) +WINFLAGS = $(OBSOLETE_DEFINES) $(WINVERSION) #for windows 95 XINCLUDE=$(WINFLAGS) @@ -277,24 +340,60 @@ ifdef WXUSINGDLL endif -# You shouldn't need to change these... -CPPFLAGS = $(XINCLUDE) $(INC) $(COMMON_THREADFLAGS) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) $(EXTRACPPFLAGS) $(EXTRADLLFLAGS) -CFLAGS = $(XINCLUDE) $(INC) $(COMMON_THREADFLAGS) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) $(EXTRACFLAGS) -DWIN32_LEAN_AND_MEAN ifeq ($(wxUSE_GUI),1) - WINDOWSLDFLAGS=-Wl,--subsystem,windows -mwindows + WINDOWSLDFLAGS=-Wl,--subsystem,windows + WINDOWSLDLIBS=-mwindows endif -LDFLAGS = $(WINDOWSLDFLAGS) $(COMMON_THREADFLAGS) -L$(WXDIR)/lib -L$(WXDIR)/contrib/lib $(EXTRALDFLAGS) -.SUFFIXES: .rc .$(RESSUFF) .$(RSCSUFF) .cpp .cxx .c +# Note: WIN32_LEAN_AND_MEAN is defined only for C and not for C++ compiles. +# Defining this macro means that a great deal of less commonly used stuff +# is ignored in the windows headers, resulting in faster compiles. It can't +# be used with some C++ source files. It just so happens that it can be +# used with all C source files. + +CFLAGS = -DWIN32_LEAN_AND_MEAN + +WXLIBDIRS = -L$(WXDIR)/lib -L$(WXDIR)/contrib/lib + +# You shouldn't need to change these flags, which are merely composed of +# the options selected above. You can add more flags by specifying them on +# the make command line, e.g. +# make CXXFLAGS='-O3 -march=i686' -f makefile.g95 +# The gnu make manual says +# 'Users expect to be able to specify CFLAGS freely themselves' +# That was unsafe with older versions of this makefile, but now it works. +# +# C preprocessor flags +# Some makefiles pass extra flags in $(EXTRACPPFLAGS); although earlier +# versions of this file used CPPFLAGS as C++ compiler flags (instead of +# as C preprocessor flags), it is OK to add them to the preprocessor +# flags, which are always used for C++ compiles. Because other makefiles +# use this method to override these flags, they are added after $(CPPFLAGS), +# which would normally come last. +ALL_CPPFLAGS = $(XINCLUDE) $(INC) $(CPPFLAGS) $(EXTRACPPFLAGS) +# C and C++ compiler flags for compatibility with old gcc versions +REQUIRED_GCC_FLAGS = $(_STRUCT_RETURN_WORKAROUND) $(_THUNK_WORKAROUND) +# C++ compiler flags +ALL_CXXFLAGS = $(COMMON_THREADFLAGS) $(REQUIRED_GCC_FLAGS) $(UNICODE_OPT) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) $(EXTRADLLFLAGS) $(CXXFLAGS) +# C compiler flags +ALL_CFLAGS = $(COMMON_THREADFLAGS) $(REQUIRED_GCC_FLAGS) $(UNICODE_OPT) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) $(EXTRADLLFLAGS) $(CFLAGS) +# Linker flags +ALL_LDFLAGS = $(COMMON_THREADFLAGS) $(WINDOWSLDFLAGS) $(WINDOWSLDLIBS) $(WXLIBDIRS) $(EXTRALDFLAGS) $(LDFLAGS) +# under Cygwin, Dlls must not be linked with subsystem=windows +ALL_LDFLAGS_DLL = $(COMMON_THREADFLAGS) $(WINDOWSLDLIBS) $(WXLIBDIRS) $(EXTRALDFLAGS) $(LDFLAGS) + +.SUFFIXES: .rc .$(RESSUFF) .$(RSCSUFF) .cpp .cxx .cc .c .c.o: - $(CC) -c $(CFLAGS) -o $@ $*.c + $(CC) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) -o $@ $*.c + +.cc.o: + $(CXX) -c $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -o $@ $*.cc .cxx.o: - $(CC) -c $(CPPFLAGS) -o $@ $*.cxx + $(CXX) -c $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -o $@ $*.cxx +# This '.cpp.o' rule is apparently written this way because +# the 'tmake' file g95.t expects it. .$(SRCSUFF).$(OBJSUFF): - $(CC) -c $(CPPFLAGS) -o $@ $*.$(SRCSUFF) - - - + $(CXX) -c $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -o $@ $*.$(SRCSUFF) diff --git a/src/makelib.env.in b/src/makelib.env.in index 3da9676922..daf3f6b710 100644 --- a/src/makelib.env.in +++ b/src/makelib.env.in @@ -41,6 +41,8 @@ TARGETLIB_LINK2 = $(TARGET_LIBNAME).so TARGETLIB_SONAME = @WX_TARGET_LIBRARY_SONAME@ +LDFLAGS_VERSIONING = @LDFLAGS_VERSIONING@ + # NB: see remark in Makefile.in as to why we don't use %.foo: %.bar rules .SUFFIXES: .o .c .cpp .cxx @@ -68,7 +70,7 @@ libtype_a: $(top_builddir)/lib/$(TARGETLIB_STATIC) $(top_builddir)/lib/$(TARGETLIB_SHARED): $(OBJECTS) @$(INSTALL) -d $(top_builddir)/lib - $(SHARED_LD) $@ $(TARGETLIB_SONAME) $(OBJECTS) + $(SHARED_LD) $@ $(TARGETLIB_SONAME) $(OBJECTS) $(LDFLAGS_VERSIONING) cd $(top_builddir)/lib \ && $(RM) $(TARGETLIB_LINK1) $(TARGETLIB_LINK2) \ && $(LN_S) $(TARGETLIB_SHARED) $(TARGETLIB_LINK1) \ diff --git a/src/makelib.g95 b/src/makelib.g95 index 7fb95c9b3c..882d560429 100644 --- a/src/makelib.g95 +++ b/src/makelib.g95 @@ -7,8 +7,6 @@ # # Include file for Cygwin/Mingw32 libraries -WXDIR = $(WXWIN) - # All common UNIX compiler flags and options are now in # this central makefile. include $(WXDIR)/src/makeg95.env @@ -23,4 +21,4 @@ clean: -$(RM) $(OBJECTS) core *.rsc *.res cleanall: clean - -$(RM) $(LIBTARGET) \ No newline at end of file + -$(RM) $(LIBTARGET) diff --git a/src/makelib.wat b/src/makelib.wat index 74cc16dc7b..3c6bcce4cd 100644 --- a/src/makelib.wat +++ b/src/makelib.wat @@ -1,26 +1,30 @@ -WXDIR = $(%WXWIN) +# +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch +# !include $(WXDIR)\src\makewat.env -WXLIB = $(WXDIR)\lib -LNK = tmp.lbc +all: $(OUTPUTDIR) $(LIBTARGET) -all: $(LIBTARGET) +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ +# the name of the file containing the objects to be put in the library +LBCFILE=$(OUTPUTDIR)$(LIBTARGET).lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + $(LIB) /b /c /n /p=512 $^@ @$(LBCFILE) clean: .SYMBOLIC - -erase *.obj - -erase *.bak - -erase *.err - -erase *.pch - -erase *.lib - -erase *.lbc - -erase *.res - -erase *.exe - -erase *.lbc + -erase $(OUTPUTDIR)*.obj + -erase $(OUTPUTDIR)*.bak + -erase $(OUTPUTDIR)*.err + -erase $(OUTPUTDIR)*.pch + -erase $(OUTPUTDIR)*.lib + -erase $(OUTPUTDIR)*.lbc + -erase $(OUTPUTDIR)*.res + -erase $(OUTPUTDIR)*.exe + -erase $(OUTPUTDIR)*.lbc -erase $(LIBTARGET) diff --git a/src/makeprog.b32 b/src/makeprog.b32 index 67c9a6854d..2afd2304d6 100644 --- a/src/makeprog.b32 +++ b/src/makeprog.b32 @@ -14,10 +14,16 @@ WXDIR = $(WXWIN) !include $(WXDIR)\src\makeb32.env -!if "$(WXUSINGDLL)" == "1" -LIBS=$(WXLIB) $(EXTRALIBS) cw32mti import32 ole2w32 winpng regex zlib jpeg tiff odbc32 +!if "$(wxUSE_GUI)" == "0" +IMGLIBS= !else -LIBS=$(WXLIB) $(EXTRALIBS) cw32mt import32 ole2w32 winpng regex zlib jpeg tiff odbc32 +IMGLIBS= winpng jpeg tiff +!endif + +!if "$(WXUSINGDLL)" == "1" +LIBS=$(WXLIB) $(EXTRALIBS) cw32mti import32 ole2w32 regex zlib $(IMGLIBS) odbc32 +!else +LIBS=$(WXLIB) $(EXTRALIBS) cw32mt import32 ole2w32 regex zlib $(IMGLIBS) odbc32 !endif # Note: you may need to remove some libraries for earlier versions of BC++, as below diff --git a/src/makeprog.g95 b/src/makeprog.g95 index 98287d1450..adc0ab2928 100644 --- a/src/makeprog.g95 +++ b/src/makeprog.g95 @@ -14,7 +14,7 @@ include $(WXDIR)/src/makeg95.env all: $(TARGET)$(GUISUFFIX)$(EXESUFF) $(TARGET)_resources.$(OBJSUFF) $(EXTRATARGETS) $(TARGET)$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(TARGET)_resources.$(OBJSUFF) $(WXLIB) - $(CC) $(LDFLAGS) -o $(TARGET)$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(TARGET)_resources.$(OBJSUFF) $(LDLIBS) + $(CXX) $(ALL_LDFLAGS) -o $(TARGET)$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(TARGET)_resources.$(OBJSUFF) $(LDLIBS) $(TARGET)_resources.o: $(TARGET).rc $(RESCOMP) $(RCINPUTSWITCH) $(TARGET).rc $(RCOUTPUTSWITCH) $(TARGET)_resources.o $(RESFLAGS) @@ -22,10 +22,11 @@ $(TARGET)_resources.o: $(TARGET).rc clean: -$(RM) *.o -$(RM) $(TARGET)_resources.o - -$(RM) core + -$(RM) core -$(RM) *.rsc -$(RM) *.res -$(RM) *.exe cleanall: clean - -$(RM) $(TARGET).exe + -$(RM) $(TARGET).exe + diff --git a/src/makeprog.vc b/src/makeprog.vc index 1a4c5ef2bf..e2c76535c4 100644 --- a/src/makeprog.vc +++ b/src/makeprog.vc @@ -13,7 +13,9 @@ # Set WXDIR for your system WXDIR = $(WXWIN) +!ifndef WXUSINGDLL WXUSINGDLL=0 +!endif !include $(WXDIR)\src\makevc.env @@ -69,7 +71,7 @@ $(LIBS) clean: - -$(RM) $(OBJECTS) + -$(RM) *.obj -$(RM) *.exe -$(RM) *.res -$(RM) *.map diff --git a/src/makeprog.wat b/src/makeprog.wat index 99b984842e..e9968c8ec3 100644 --- a/src/makeprog.wat +++ b/src/makeprog.wat @@ -1,39 +1,64 @@ +# +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch +# + WXDIR = $(%WXWIN) +!ifndef EXEDIR +OUTPUTDIR = $(THISDIR)\Watcom +!else +OUTPUTDIR = $(THISDIR)\$(EXEDIR) +!ifeq EXEDIR "." +OUTPUTDIR = $(THISDIR) +!endif +!endif !include $(WXDIR)\src\makewat.env WXLIB = $(WXDIR)\lib -LNK = $(PROGRAM).lnk +LNK = $(OUTPUTDIR)\$(PROGRAM).lnk -all: $(PROGRAM).exe $(EXTRATARGETS) +all: MAKEDIR $(OUTPUTDIR)\$(PROGRAM).exe $(EXTRATARGETS) .SYMBOLIC -$(PROGRAM).exe : $(OBJECTS) $(PROGRAM).res $(LNK) $(WXLIB)\wx.lib +MAKEDIR: .SYMBOLIC + @if not exist $(OUTPUTDIR) mkdir $(OUTPUTDIR) + +!ifeq wxUSE_GUI 0 +RESFILE= +!else +RESFILE=$(OUTPUTDIR)\$(PROGRAM).res +!endif + +$(OUTPUTDIR)\$(PROGRAM).exe : $(OBJECTS) $(RESFILE) $(LNK) $(WXLIB)\$(LIBNAME).lib wlink @$(LNK) - $(BINDCOMMAND) $(PROGRAM).res +!ifneq wxUSE_GUI 0 + $(BINDCOMMAND) $(RESFILE) +!endif -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(RC) $(RESFLAGS1) $(PROGRAM).rc +!ifneq wxUSE_GUI 0 +$(RESFILE): $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc + $(RC) $(RESFLAGS) /fo=$(RESFILE) $(PROGRAM).rc +!endif $(LNK) : makefile.wat %create $(LNK) - @%append $(LNK) debug all - @%append $(LNK) system $(LINKOPTION) + @%append $(LNK) $(LDFLAGS) + @%append $(LNK) $(DEBUGINFO) + @%append $(LNK) system $(LINKSYSTEM) @%append $(LNK) $(STACK) - @%append $(LNK) name $(PROGRAM).exe + @%append $(LNK) name $(OUTPUTDIR)\$(PROGRAM).exe @for %i in ($(OBJECTS)) do @%append $(LNK) file %i @for %i in ($(LIBS)) do @%append $(LNK) lib %i @for %i in ($(EXTRALIBS)) do @%append $(LNK) lib %i -# @%append $(LNK) $(MINDATA) -# @%append $(LNK) $(MAXDATA) clean: .SYMBOLIC - -erase *.obj - -erase *.bak - -erase *.err - -erase *.pch - -erase *.lib + -erase $(OUTPUTDIR)\*.obj + -erase $(OUTPUTDIR)\*.bak + -erase $(OUTPUTDIR)\*.err + -erase $(OUTPUTDIR)\*.pch + -erase $(OUTPUTDIR)\*.lib -erase $(LNK) - -erase *.res - -erase *.exe - -erase *.lbc + -erase $(OUTPUTDIR)\*.res + -erase $(OUTPUTDIR)\*.exe + -erase $(OUTPUTDIR)\*.lbc + -rmdir $(OUTPUTDIR) diff --git a/src/makeva.env b/src/makeva.env index eafd3a48a1..143a2a8cee 100644 --- a/src/makeva.env +++ b/src/makeva.env @@ -37,9 +37,9 @@ RC=rc #-------------------------------------------------------------------- # Normal application - - - wx.lib # -# wxWin as DLL Defined - Defined wx23.lib +# wxWin as DLL Defined - Defined wx24.lib # -# App using wxWin DLL - Defined - wx23.lib +# App using wxWin DLL - Defined - wx24.lib # # App built as one DLL Defined - - wx.lib # @@ -91,7 +91,7 @@ DLL=0 # wx200 (DLL release), wx200_d (DLL debug) !if "$(WXMAKINGDLL)" == "1" || "$(WXUSINGDLL)" == "1" -WXLIBNAME=wx23 +WXLIBNAME=wx24 !else WXLIBNAME=wx !endif @@ -116,17 +116,17 @@ D=DebugOS2 WXLIB=$(WXDIR)\lib\$(WXLIBNAME).lib -INC=-I$(WXINC) -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/xpm -I$(WXDIR)/src/tiff -I$(WXDIR)/src/png -I$(EXTRAINC) +INC=-I$(WXINC) -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff -I$(WXDIR)/src/png -I$(EXTRAINC) !if "$(WXMAKINGDLL)" == "1" || "$(WXUSINGDLL)" == "1" LINKLIBS=CPPOM30I.LIB CPPOOC3I.LIB OS2386.LIB $(UPMLIB)\UPM32.LIB $(NETLIB)\NETAPI32.LIB $(TCPIP)\TCP32DLL.LIB $(TCPIP)\SO32DLL.LIB $(TCPIP)\TCPIP32.LIB $(TCPIP)\R0LIB32.LIB -EXTRALIBS=$(WXDIR)\lib\os2pngd.lib $(WXDIR)\lib\os2zlibd.lib $(WXDIR)\lib\os2jpegd.lib $(WXDIR)\lib\os2xpmd.lib $(WXDIR)\lib\os2tiffd.lib +EXTRALIBS=$(WXDIR)\lib\os2pngd.lib $(WXDIR)\lib\os2zlibd.lib $(WXDIR)\lib\os2jpegd.lib $(WXDIR)\lib\os2tiffd.lib !if "$(WXUSINGDLL)" == "1" EXTRALIBS=$(EXTRALIBS) $(WXLIB) !endif LIBS=$(LINKLIBS) $(EXTRALIBS) !else LINKLIBS=CPPOM30.LIB CPPOOC3.LIB OS2386.LIB $(UPMLIB)\UPM32.LIB $(NETLIB)\NETAPI32.LIB $(TCPIP)\TCP32DLL.LIB $(TCPIP)\SO32DLL.LIB $(TCPIP)\TCPIP32.LIB $(TCPIP)\R0LIB32.LIB -EXTRALIBS=$(WXDIR)\lib\os2png.lib $(WXDIR)\lib\os2zlib.lib $(WXDIR)\lib\os2jpeg.lib $(WXDIR)\lib\os2xpm.lib $(WXDIR)\lib\os2tiff.lib +EXTRALIBS=$(WXDIR)\lib\os2png.lib $(WXDIR)\lib\os2zlib.lib $(WXDIR)\lib\os2jpeg.lib $(WXDIR)\lib\os2tiff.lib LIBS=$(WXLIB) $(LINKLIBS) $(EXTRALIBS) !endif diff --git a/src/makevc.env b/src/makevc.env index 7fb8a0bb85..630efce87e 100644 --- a/src/makevc.env +++ b/src/makevc.env @@ -12,7 +12,11 @@ RM= erase !endif -WXVERSION=233 +# read version numbers +!include "version.mak" +WXVERSION=$(wxMAJOR_VERSION)$(wxMINOR_VERSION)$(wxRELEASE_NUMBER_IFUNSTABLE) + +# WIN95 means "all systems newer than Win95", i.e. Win9x and NT 4+ WIN95=1 !if "$(WIN95)" == "0" @@ -22,7 +26,7 @@ WIN95=1 APPVER=3.50 WINVERSION=-DWINVER=0x0350 # Generic WIN32 !else -APPVER=3.50 # 4.0 +APPVER=4.0 # This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). WINVERSION=-DWINVER=0x0400 /D__WIN95__ !endif @@ -42,7 +46,7 @@ WINFLAGS=-c -W3 -nologo -DWIN32 -D__WIN32__ -D_WINDOWS $(WINVERSION) -DSTRICT WINLINKFLAGS=/INCREMENTAL:NO /NOLOGO -machine:$(CPU) -subsystem:windows,$(APPVER) BASELINKFLAGS=/INCREMENTAL:NO /NOLOGO -machine:$(CPU) -subsystem:console,$(APPVER) WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib\ - comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib # libci.lib # libci.lib required for VC++ 4.2 + comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib # libci.lib # libci.lib required for VC++ 4.2 # Set a WXWIN environment variable be the path to your WXWIN directory WXDIR=$(WXWIN) diff --git a/src/makewat.env b/src/makewat.env index b12d76e5d9..a5ddc677b9 100644 --- a/src/makewat.env +++ b/src/makewat.env @@ -1,95 +1,177 @@ -# File: makewat.env +############################################################################### +# File: src/makewat.env # Purpose: Watcom environments for wxWindows makefiles. # Author: Julian Smart and others -# -# The main things to change are: +# Version: $Id$ +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch +############################################################################### + +# The following environment variables must be set: # # WATCOM: set to where the compiler is installed -# WXDIR: set to where the wxWindows is installed -# MODE: set to windows [16 bit windows], nt [win32s], or win386 [32-bit non-WIN32] +# WXWIN: set to where the wxWindows is installed +# PATH: set correctly, i.e. contains all Watcom directories +# LIB: same as PATH +# INCLUDE: same as PATH +# set wxUSE_GUI=0 to build wxBase instead of (default) wxMSW +!ifndef wxUSE_GUI +wxUSE_GUI=1 +!endif + +# set FINAL=1 to disable debug and enable optimizations +!ifndef FINAL FINAL=0 -WATCOMDIR=$(%WATCOM) +!endif + +# set WATCOM_SUFFIX to nothing if you use only Watcom compiler, set it to +# something Watcom-specific if you want to build wxWindows with more than one +# compiler +WATCOM_SUFFIX=_w + +# change/remove this if you want to create programs for older Windows versions, +# increase the version to be able to use more Win2K+-only features +WINVERFLAGS = /dWINVER=0x400 /d_WIN32_IE=0x0300 + +# optimize for space/time: /os or /ot +!ifeq FINAL 1 +OPTFLAGS=/oails /5r +!else +OPTFLAGS=/od +!endif + + +############################################################################### +# You shouldn't have to modify anything after this point +############################################################################### .EXTENSIONS: .EXTENSIONS: .exe .obj .c .cc .cpp .res .rc .def -#WXDIR = d:\wx2\wxwind~1 +!ifndef %WATCOM +!error WATCOM environment variable must be set! +!endif +WATCOMDIR=$(%WATCOM) + +!ifndef %WXWIN +!error WXWIN environment variable must be set! +!endif WXDIR = $(%WXWIN) -WXINC = $(WXDIR)\include # Suffixes OBJSUFF=obj SRCSUFF=cpp +!ifeq FINAL 1 WXDEBUG=0 - -!ifneq NOPRECOMP 1 -PRECOMP = /fh=$(WXDIR)\src\msw\watcom.pch +!else +WXDEBUG=1 !endif !ifeq WXDEBUG 1 -DEBUGFLAGS = /D__WXDEBUG__ /o1 +DEBUGFLAGS = /D__WXDEBUG__ +DEBUGCFLAGS = $(DEBUGFLAGS) /d2 +DEBUGCXXFLAGS = $(DEBUGFLAGS) /d2i DEBUGINFO = debug all +DEBUGSUFFIX = d !else -DEBUGFLAGS = +DEBUGCFLAGS = +DEBUGCXXFLAGS = DEBUGINFO = +DEBUGSUFFIX = !endif -RC = wrc +# TOOLKIT is used as the name of lib subdir containing wx/setup.h +# BASEDIRPREFIX is used to construct OUTPUTDIR +!ifeq wxUSE_GUI 0 +TOOLKIT = base +BASEDIRPREFIX = Base +LINKSYSTEM = nt +!else +TOOLKIT = msw +LINKSYSTEM = nt_win +BASEDIRPREFIX = +!endif +ARCHINCDIR=$(WXDIR)\lib\$(TOOLKIT)$(DEBUGSUFFIX) + +# set the things which depend on debug/release +# +# note that the values for LIBPAGESIZE are minimal possible, the library +# doesn't link (Error! Library too large) with values smaller than given +!ifeq FINAL 1 +CONFIGURATION=Release +LIBPAGESIZE=/p=1024 +!else +CONFIGURATION=Debug +LIBPAGESIZE=/p=2048 +!endif + +# set OUTPUTDIR to the directory to be used for the .obj files created during +# the build (under $WXWIN) +!ifndef OUTPUTDIR +OUTPUTDIR=$(WXDIR)\$(BASEDIRPREFIX)$(CONFIGURATION)Watcom +# no trailing slash for win98 +!endif + +!ifneq NOPRECOMP 1 +PRECOMP = /fh=$(OUTPUTDIR)\watcom.pch +!endif + +# the basename of the library +LIBNAME=wx$(TOOLKIT)$(DEBUGSUFFIX)$(WATCOM_SUFFIX) + +# only LEVEL=386 is currently supported, 16 bit compilation is probably broken LEVEL = 386 -CCC = wpp$(LEVEL) -CC = wcc$(LEVEL) -OS_TARGET = nt_win -MODEL = -# If you use win95, assumptions will be made about Win95 icon format etc. -# so nt_win is probably better for simultaneous Win32s/Win95/NT operation. -LINKOPTION = nt_win # win95 -WINVERFLAGS = /dWINVER=0x400 /d__WIN95__ +CXX = wpp$(LEVEL) +CC = wcc$(LEVEL) +LIB = wlib /q +RC = wrc BINDCOMMAND = wrc WATLIBDIR = $(WATCOMDIR)\lib386\nt -MINDATA = -MAXDATA = STACK = option stack=64k -LIBS = $(WXDIR)\lib\wx.lib $(WXDIR)\lib\regex.lib $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\png.lib $(WXDIR)\lib\tiff.lib $(WXDIR)\lib\jpeg.lib & - $(WATLIBDIR)\comctl32.lib $(WATLIBDIR)\comdlg32.lib & - $(WATLIBDIR)\ole32.lib $(WATLIBDIR)\oleaut32.lib $(WATLIBDIR)\opengl32.lib & - $(WATLIBDIR)\uuid.lib $(WXDIR)\lib\watcom\odbc32.lib -IFLAGS = -i=$(WXDIR)\lib\msw -i=$(WXINC) -i=$(WXDIR)\contrib\include -i=$(%watcom)\h;$(%watcom)\h\nt;$(WXDIR)\src\regex;$(WXDIR)\src\png;$(WXDIR)\src\zlib;$(WXDIR)\src\jpeg;$(WXDIR)\src\tiff;$(WXDIR)\include\wx\msw\gnuwin32 -RESFLAGS1 = -r -bt=nt /i$(WXDIR)\include /i$(WXDIR)\contrib\include $(WINVERFLAGS) -RESFLAGS2 = -R $(name) /i$(WXDIR)\include /i$(WXDIR)\contrib\include $(WINVERFLAGS) +LIBS = $(WXDIR)\lib\$(LIBNAME).lib & + $(WXDIR)\lib\regex$(WATCOM_SUFFIX).lib & + $(WXDIR)\lib\zlib$(WATCOM_SUFFIX).lib & +!ifneq wxUSE_GUI 0 + $(WXDIR)\lib\png$(WATCOM_SUFFIX).lib & + $(WXDIR)\lib\tiff$(WATCOM_SUFFIX).lib & + $(WXDIR)\lib\jpeg$(WATCOM_SUFFIX).lib & +!endif + $(WATLIBDIR)\comctl32.lib & + $(WATLIBDIR)\comdlg32.lib & + $(WATLIBDIR)\odbc32.lib & + $(WATLIBDIR)\ole32.lib & + $(WATLIBDIR)\oleaut32.lib & + $(WATLIBDIR)\opengl32.lib & + $(WATLIBDIR)\uuid.lib +IFLAGS = -i=$(ARCHINCDIR);$(WXDIR)\include & + -i=$(%watcom)\h;$(%watcom)\h\nt & + -i=$(WXDIR)\src\regex;$(WXDIR)\src\png;$(WXDIR)\src\zlib;$(WXDIR)\src\jpeg;$(WXDIR)\src\tiff & + -i=$(WXDIR)\include\wx\msw\gnuwin32 +RESFLAGS = -q -r -bt=nt /i$(WXDIR)\include /i$(WXDIR)\contrib\include $(WINVERFLAGS) -# Here are some possible optimization flags: -# /5r Pentium timings -# /fp5 /fpi87 Inline 80x87 instructions optimized for Pentium: coprocessor must be present -# /ox Standard optimizations -# /or Reordering for Pentium timings (included in /ox) -# The Watcom-recommended flags for optimum Pentium speed are: -# /oneatx /zp4 /5 /fpi87 /fp5 - -OPTFLAGS=/ox /5r - -# /d1 for line numbers only: anything else produces an enormous wx32.lib -# # NB: /bm switch is needed for thread-safe runtime, if you don't use # wxThread you may remove it -CPPFLAGS = /bt=nt /w1 /DWIN32 /bm /zq $(OPTFLAGS) $(MODEL) $(PRECOMP) $(DEBUGFLAGS) /d__WXMSW__ $(WINVERFLAGS) $(EXTRACPPFLAGS) # /d__WATCOMC__ +CPPFLAGS = /dWIN32 /bm /fo=$(OUTPUTDIR)\ /fr /zq $(IFLAGS) $(OPTFLAGS) $(WINVERFLAGS) $(EXTRACPPFLAGS) +!ifeq wxUSE_GUI 0 +CPPFLAGS += /dwxUSE_GUI=0 +!endif + +# zm and zv as well as the liker options below are used to make the resulting +# .exe smaller +CFLAGS = $(CPPFLAGS) $(DEBUGCFLAGS) $(EXTRACFLAGS) /zm +CXXFLAGS = $(CPPFLAGS) $(DEBUGCXXFLAGS) $(PRECOMP) /zm /zv /w=8 $(EXTRACXXFLAGS) +LDFLAGS = option eliminate, vfremoval .cpp.obj: # $< # .AUTODEPEND - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< + *$(CXX) $(CXXFLAGS) $< .c.obj: # $< # .AUTODEPEND - *$(CC) $(CPPFLAGS) $(IFLAGS) $< + *$(CC) $(CFLAGS) $< -# This doesn't work for wcc -# %create tmp.lbc -# @%append tmp.lbc $(CPPFLAGS) $(IFLAGS) $< -# echo $< -# $(CC) @tmp.lbc - -dummy: .SYMBOLIC - @echo Please give a target for wxWin makefiles: the usual one is 'all'. +defaulttarget: all .SYMBOLIC erasepch: .SYMBOLIC - -erase $(WXDIR)\src\msw\watcom.pch + -erase $(OUTPUTDIR)\watcom.pch + diff --git a/src/mgl/cursor.cpp b/src/mgl/cursor.cpp index 5420979189..0bb3bdac4a 100644 --- a/src/mgl/cursor.cpp +++ b/src/mgl/cursor.cpp @@ -57,7 +57,7 @@ wxCursorRefData::~wxCursorRefData() //----------------------------------------------------------------------------- -WX_DECLARE_HASH_MAP(int, wxCursor, wxIntegerHash, wxIntegerEqual, wxCursorsHash) +WX_DECLARE_HASH_MAP(int, wxCursor, wxIntegerHash, wxIntegerEqual, wxCursorsHash); static wxCursorsHash *gs_cursorsHash = NULL; diff --git a/src/mgl/files.lst b/src/mgl/files.lst index ff689b82fe..929077e80a 100644 --- a/src/mgl/files.lst +++ b/src/mgl/files.lst @@ -227,7 +227,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -396,6 +395,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -474,6 +474,27 @@ ALL_HEADERS = \ xpmdecod.h \ zipstrm.h \ zstream.h \ + mgl/app.h \ + mgl/bitmap.h \ + mgl/brush.h \ + mgl/clipbrd.h \ + mgl/colour.h \ + mgl/cursor.h \ + mgl/dc.h \ + mgl/dcclient.h \ + mgl/dcmemory.h \ + mgl/dcscreen.h \ + mgl/font.h \ + mgl/fontutil.h \ + mgl/gdiobj.h \ + mgl/icon.h \ + mgl/palette.h \ + mgl/pen.h \ + mgl/popupwin.h \ + mgl/private.h \ + mgl/region.h \ + mgl/toplevel.h \ + mgl/window.h \ generic/accel.h \ generic/calctrl.h \ generic/caret.h \ @@ -494,7 +515,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -538,7 +559,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -773,7 +793,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/mgl/makefile.wat b/src/mgl/makefile.wat index 08f8c4e1ff..cbac28a96f 100644 --- a/src/mgl/makefile.wat +++ b/src/mgl/makefile.wat @@ -303,7 +303,6 @@ HTMLOBJS = helpctrl.obj & m_layout.obj & m_links.obj & m_list.obj & - m_meta.obj & m_pre.obj & m_style.obj & m_tables.obj & @@ -1140,9 +1139,6 @@ m_links.obj: $(HTMLDIR)\m_links.cpp m_list.obj: $(HTMLDIR)\m_list.cpp *$(CCC) $(CPPFLAGS) $(IFLAGS) $< -m_meta.obj: $(HTMLDIR)\m_meta.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - m_pre.obj: $(HTMLDIR)\m_pre.cpp *$(CCC) $(CPPFLAGS) $(IFLAGS) $< diff --git a/src/mgl/window.cpp b/src/mgl/window.cpp index 1b6606e260..06fa0055d9 100644 --- a/src/mgl/window.cpp +++ b/src/mgl/window.cpp @@ -64,9 +64,9 @@ winmng_t *g_winMng = NULL; MGLDevCtx *g_displayDC = NULL; -// the window that has keyboard focus: +// the window that has keyboard focus: static wxWindowMGL *gs_focusedWindow = NULL; -// the window that is about to be focused after currently focused +// the window that is about to be focused after currently focused // one looses focus: static wxWindow *gs_toBeFocusedWindow = NULL; // the window that is currently under mouse cursor: @@ -81,7 +81,7 @@ static wxWindowMGL *gs_activeFrame = NULL; // constants // --------------------------------------------------------------------------- -// Custom identifiers used to distinguish between various event handlers +// Custom identifiers used to distinguish between various event handlers // and capture handlers passed to MGL_wm enum { @@ -113,23 +113,24 @@ static void wxCaptureScreenshot(bool activeWindowOnly) #endif static int screenshot_num = 0; wxString screenshot; - - do + + do { screenshot.Printf(SCREENSHOT_FILENAME, screenshot_num++); } while ( wxFileExists(screenshot) && screenshot_num < 1000 ); - + wxRect r(0, 0, g_displayDC->sizex(), g_displayDC->sizey()); if ( activeWindowOnly && gs_activeFrame ) { r.Intersect(gs_activeFrame->GetRect()); } - - g_displayDC->savePNGFromDC(screenshot.mb_str(), + + g_displayDC->savePNGFromDC(screenshot.mb_str(), r.x, r. y, r.x+r.width, r.y+r.height); - - wxMessageBox(_("Screenshot captured: ") + wxString(screenshot)); + + wxMessageBox(wxString::Format(_T("Screenshot captured: %s"), + screenshot.c_str())); } // --------------------------------------------------------------------------- @@ -139,7 +140,7 @@ static void wxCaptureScreenshot(bool activeWindowOnly) static void MGLAPI wxWindowPainter(window_t *wnd, MGLDC *dc) { wxWindowMGL *w = (wxWindow*) wnd->userData; - + if ( w && !(w->GetWindowStyle() & wxTRANSPARENT_WINDOW) ) { MGLDevCtx ctx(dc); @@ -152,18 +153,18 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e) wxWindowMGL *win = (wxWindowMGL*)MGL_wmGetWindowUserData(wnd); wxPoint orig(win->GetClientAreaOrigin()); wxPoint where; - - MGL_wmCoordGlobalToLocal(win->GetHandle(), + + MGL_wmCoordGlobalToLocal(win->GetHandle(), e->where_x, e->where_y, &where.x, &where.y); for (wxWindowMGL *w = win; w; w = w->GetParent()) { - if ( !w->IsEnabled() ) + if ( !w->IsEnabled() ) return FALSE; if ( w->IsTopLevel() ) break; } - + wxEventType type = wxEVT_NULL; wxMouseEvent event; event.SetEventObject(win); @@ -177,7 +178,7 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e) event.m_leftDown = e->modifiers & EVT_LEFTBUT; event.m_middleDown = e->modifiers & EVT_MIDDLEBUT; event.m_rightDown = e->modifiers & EVT_RIGHTBUT; - + switch (e->what) { case EVT_MOUSEDOWN: @@ -223,8 +224,8 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e) if ( gs_windowUnderMouse ) { wxMouseEvent event2(event); - MGL_wmCoordGlobalToLocal(gs_windowUnderMouse->GetHandle(), - e->where_x, e->where_y, + MGL_wmCoordGlobalToLocal(gs_windowUnderMouse->GetHandle(), + e->where_x, e->where_y, &event2.m_x, &event2.m_y); wxPoint orig(gs_windowUnderMouse->GetClientAreaOrigin()); @@ -245,28 +246,28 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e) } else // gs_mouseCapture { - bool inside = (where.x >= 0 && + bool inside = (where.x >= 0 && where.y >= 0 && where.x < win->GetSize().x && where.y < win->GetSize().y); if ( (inside && gs_windowUnderMouse != win) || (!inside && gs_windowUnderMouse == win) ) { - wxMouseEvent evt(inside ? + wxMouseEvent evt(inside ? wxEVT_ENTER_WINDOW : wxEVT_LEAVE_WINDOW); evt.SetEventObject(win); win->GetEventHandler()->ProcessEvent(evt); gs_windowUnderMouse = inside ? win : NULL; } } - + type = wxEVT_MOTION; break; default: break; } - + if ( type == wxEVT_NULL ) { return FALSE; @@ -292,11 +293,11 @@ static long wxScanToKeyCode(event_t *event, bool translate) break; #else #define KEY(mgl_key,wx_key) \ - case mgl_key: key = wx_key; break; + case mgl_key: key = wx_key; break; #endif long key = 0; - + if ( translate ) { switch ( EVT_scanCode(event->message) ) @@ -370,7 +371,7 @@ static long wxScanToKeyCode(event_t *event, bool translate) default: break; } } - + if ( key == 0 ) { switch ( EVT_scanCode(event->message) ) @@ -414,10 +415,10 @@ static long wxScanToKeyCode(event_t *event, bool translate) KEY (KB_esc, WXK_ESCAPE) KEY (KB_backspace, WXK_BACK) KEY (KB_tab, WXK_TAB) - KEY (KB_enter, WXK_RETURN) + KEY (KB_enter, WXK_RETURN) - default: - key = EVT_asciiCode(event->message); + default: + key = EVT_asciiCode(event->message); break; } } @@ -432,15 +433,15 @@ static bool wxHandleSpecialKeys(wxKeyEvent& event) // Add an easy way to capture screenshots: if ( event.m_keyCode == WXK_SNAPSHOT #ifdef __WXDEBUG__ // FIXME_MGL - remove when KB_sysReq works in MGL! - || (event.m_keyCode == WXK_F1 && - event.m_shiftDown && event.m_controlDown) + || (event.m_keyCode == WXK_F1 && + event.m_shiftDown && event.m_controlDown) #endif ) { wxCaptureScreenshot(event.m_altDown/*only active wnd?*/); return TRUE; } - + return FALSE; } @@ -451,9 +452,9 @@ static ibool MGLAPI wxWindowKeybHandler(window_t *wnd, event_t *e) if ( !win->IsEnabled() ) return FALSE; wxPoint where; - MGL_wmCoordGlobalToLocal(win->GetHandle(), + MGL_wmCoordGlobalToLocal(win->GetHandle(), e->where_x, e->where_y, &where.x, &where.y); - + wxKeyEvent event; event.SetEventObject(win); event.SetTimestamp(e->when); @@ -478,7 +479,7 @@ static ibool MGLAPI wxWindowKeybHandler(window_t *wnd, event_t *e) event.SetEventType(wxEVT_KEY_DOWN); event2 = event; - + ret = win->GetEventHandler()->ProcessEvent(event); // wxMSW doesn't send char events with Alt pressed @@ -490,7 +491,7 @@ static ibool MGLAPI wxWindowKeybHandler(window_t *wnd, event_t *e) event2.SetEventType(wxEVT_CHAR); ret = win->GetEventHandler()->ProcessEvent(event2); } - + // Synthetize navigation key event, but do it only if the TAB key // wasn't handled yet: if ( !ret && event.m_keyCode == WXK_TAB && @@ -505,12 +506,12 @@ static ibool MGLAPI wxWindowKeybHandler(window_t *wnd, event_t *e) navEvent.SetCurrentFocus(wxStaticCast(win, wxWindow)); ret = win->GetParent()->GetEventHandler()->ProcessEvent(navEvent); } - - // Finally, process special meaning keys that are usually + + // Finally, process special meaning keys that are usually // a responsibility of OS or window manager: if ( !ret ) ret = wxHandleSpecialKeys(event); - + return ret; } } @@ -562,6 +563,11 @@ void wxWindowMGL::Init() // Destructor wxWindowMGL::~wxWindowMGL() { + // Send destroy event + wxWindowDestroyEvent destroyEvent(this); + destroyEvent.SetId(GetId()); + GetEventHandler()->ProcessEvent(destroyEvent); + m_isBeingDeleted = TRUE; if ( gs_mouseCapture == this ) @@ -582,7 +588,7 @@ wxWindowMGL::~wxWindowMGL() win->SetFocus(); } } - + if ( gs_focusedWindow == this ) KillFocus(); @@ -624,7 +630,7 @@ bool wxWindowMGL::Create(wxWindow *parent, AdjustForParentClientOrigin(x, y, 0); w = WidthDefault(size.x); h = HeightDefault(size.y); - + long mgl_style = 0; window_t *wnd_parent = parent ? parent->GetHandle() : NULL; @@ -648,7 +654,7 @@ bool wxWindowMGL::Create(wxWindow *parent, MGL_wmSetWindowFlags(wnd, mgl_style); MGL_wmShowWindow(wnd, m_isShown); - + SetMGLwindow_t(wnd); return TRUE; @@ -661,7 +667,7 @@ void wxWindowMGL::SetMGLwindow_t(struct window_t *wnd) m_wnd = wnd; if ( !m_wnd ) return; - + m_isShown = m_wnd->visible; MGL_wmSetWindowUserData(m_wnd, (void*) this); @@ -691,9 +697,9 @@ void wxWindowMGL::SetFocus() gs_focusedWindow->KillFocus(); gs_toBeFocusedWindow = NULL; } - + gs_focusedWindow = this; - + MGL_wmCaptureEvents(GetHandle(), EVT_KEYEVT, wxMGL_CAPTURE_KEYB); wxWindowMGL *active = wxGetTopLevelParent(this); @@ -711,7 +717,7 @@ void wxWindowMGL::SetFocus() event.SetEventObject(gs_activeFrame); gs_activeFrame->GetEventHandler()->ProcessEvent(event); } - + wxFocusEvent event(wxEVT_SET_FOCUS, GetId()); event.SetEventObject(this); event.SetWindow((wxWindow*)oldFocusedWindow); @@ -731,7 +737,7 @@ void wxWindowMGL::KillFocus() gs_focusedWindow = NULL; if ( m_isBeingDeleted ) return; - + MGL_wmUncaptureEvents(GetHandle(), wxMGL_CAPTURE_KEYB); #if wxUSE_CARET @@ -762,7 +768,7 @@ bool wxWindowMGL::Show(bool show) return FALSE; MGL_wmShowWindow(m_wnd, show); - + if (!show && gs_activeFrame == this) { // activate next frame in Z-order: @@ -809,7 +815,7 @@ void wxWindowMGL::DoCaptureMouse() void wxWindowMGL::DoReleaseMouse() { wxASSERT_MSG( gs_mouseCapture == this, wxT("attempt to release mouse, but this window hasn't captured it") ); - + MGL_wmUncaptureEvents(m_wnd, wxMGL_CAPTURE_MOUSE); gs_mouseCapture = NULL; } @@ -849,7 +855,7 @@ void wxWindowMGL::WarpPointer(int x, int y) x = w-1; if ( y >= h ) y = h-1; - + EVT_setMousePos(x, y); } @@ -935,7 +941,7 @@ void wxWindowMGL::DragAcceptFiles(bool accept) void wxWindowMGL::DoGetSize(int *x, int *y) const { wxASSERT_MSG( m_wnd, wxT("invalid window") ); - + if (x) *x = m_wnd->width; if (y) *y = m_wnd->height; } @@ -945,7 +951,7 @@ void wxWindowMGL::DoGetPosition(int *x, int *y) const wxASSERT_MSG( m_wnd, wxT("invalid window") ); int pX = 0, pY = 0; - AdjustForParentClientOrigin(pX, pY, 0); + AdjustForParentClientOrigin(pX, pY, 0); if (x) *x = m_wnd->x - pX; if (y) *y = m_wnd->y - pY; @@ -1026,7 +1032,7 @@ void wxWindowMGL::DoSetSize(int x, int y, int width, int height, int sizeFlags) width = currentW; } } - + if ( height == -1 ) { if ( sizeFlags & wxSIZE_AUTO_HEIGHT ) @@ -1045,18 +1051,18 @@ void wxWindowMGL::DoSetSize(int x, int y, int width, int height, int sizeFlags) height = currentH; } } - + int maxWidth = GetMaxWidth(), - minWidth = GetMinWidth(), + minWidth = GetMinWidth(), maxHeight = GetMaxHeight(), minHeight = GetMinHeight(); - + if ( minWidth != -1 && width < minWidth ) width = minWidth; if ( maxWidth != -1 && width > maxWidth ) width = maxWidth; if ( minHeight != -1 && height < minHeight ) height = minHeight; if ( maxHeight != -1 && height > maxHeight ) height = maxHeight; - if ( m_wnd->x != x || m_wnd->y != y || + if ( m_wnd->x != x || m_wnd->y != y || (int)m_wnd->width != width || (int)m_wnd->height != height ) { DoMoveWindow(x, y, width, height); @@ -1163,7 +1169,7 @@ void wxWindowMGL::Refresh(bool eraseBack, const wxRect *rect) m_eraseBackground = eraseBack; else m_eraseBackground |= eraseBack; - + if ( rect ) { rect_t r; @@ -1198,12 +1204,12 @@ void wxWindowMGL::HandlePaint(MGLDevCtx *dc) { if ( m_frozen ) { - // Don't paint anything if the window is frozen. + // Don't paint anything if the window is frozen. m_refreshAfterThaw = TRUE; return; } - -#ifdef __WXDEBUG__ + +#ifdef __WXDEBUG__ // FIXME_MGL -- debugging stuff, to be removed! static int debugPaintEvents = -1; if ( debugPaintEvents == -1 ) @@ -1240,7 +1246,7 @@ void wxWindowMGL::HandlePaint(MGLDevCtx *dc) wxNcPaintEvent eventNc(GetId()); eventNc.SetEventObject(this); GetEventHandler()->ProcessEvent(eventNc); - + wxPaintEvent eventPt(GetId()); eventPt.SetEventObject(this); GetEventHandler()->ProcessEvent(eventPt); diff --git a/src/microwin/files.lst b/src/microwin/files.lst index aeb212d346..c042cd61e0 100644 --- a/src/microwin/files.lst +++ b/src/microwin/files.lst @@ -227,7 +227,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -396,6 +395,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -589,7 +589,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -868,7 +868,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/motif/checklst.cpp b/src/motif/checklst.cpp index 54e230848e..7546ec3927 100644 --- a/src/motif/checklst.cpp +++ b/src/motif/checklst.cpp @@ -57,16 +57,6 @@ static void CopyStringsAddingPrefix(const wxArrayString& orig, copy.Add( Prefix(FALSE) + orig[i] ); } -static wxString* CopyStringsAddingPrefix(size_t n, const wxString choices[]) -{ - wxString* copy = new wxString[n]; - - for(size_t i = 0; i < n; ++i ) - copy[i] = Prefix(FALSE) + choices[i]; - - return copy; -} - // def ctor: use Create() to really create the control wxCheckListBox::wxCheckListBox() : wxCheckListBoxBase() { @@ -92,10 +82,9 @@ bool wxCheckListBox::Create(wxWindow *parent, wxWindowID id, const wxValidator& validator, const wxString& name) { - wxString* chs = CopyStringsAddingPrefix(n, choices); - bool retVal = wxListBox::Create(parent, id, pos, size, n, chs, + // wxListBox::Create calls set, which adds the prefixes + bool retVal = wxListBox::Create(parent, id, pos, size, n, choices, style, validator, name); - delete[] chs; return retVal; } diff --git a/src/motif/combobox.cpp b/src/motif/combobox.cpp index d1c470999e..e8e5fd66c7 100644 --- a/src/motif/combobox.cpp +++ b/src/motif/combobox.cpp @@ -44,8 +44,8 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, SetValidator(validator); m_noStrings = n; m_windowStyle = style; - // m_backgroundColour = parent->GetBackgroundColour(); - m_backgroundColour = * wxWHITE; + m_backgroundColour = parent->GetBackgroundColour(); + // m_backgroundColour = * wxWHITE; m_foregroundColour = parent->GetForegroundColour(); if (parent) parent->AddChild(this); diff --git a/src/motif/data.cpp b/src/motif/data.cpp index b094b7389e..ae0b7368c6 100644 --- a/src/motif/data.cpp +++ b/src/motif/data.cpp @@ -86,47 +86,45 @@ wxFont wxNullFont; wxColour wxNullColour; // Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -#if 0 // this is defined in string.cpp -const char *wxEmptyString = ""; -#endif -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxDirDialogNameStr = "wxDirCtrl"; -const char *wxDirDialogDefaultFolderStr = "/"; +const wxChar *wxButtonNameStr = wxT("button"); +const wxChar *wxCanvasNameStr = wxT("canvas"); +const wxChar *wxCheckBoxNameStr = wxT("check"); +const wxChar *wxChoiceNameStr = wxT("choice"); +const wxChar *wxComboBoxNameStr = wxT("comboBox"); +const wxChar *wxDialogNameStr = wxT("dialog"); +const wxChar *wxFrameNameStr = wxT("frame"); +const wxChar *wxGaugeNameStr = wxT("gauge"); +const wxChar *wxStaticBoxNameStr = wxT("groupBox"); +const wxChar *wxListBoxNameStr = wxT("listBox"); +const wxChar *wxStaticTextNameStr = wxT("message"); +const wxChar *wxStaticBitmapNameStr = wxT("message"); +const wxChar *wxMultiTextNameStr = wxT("multitext"); +const wxChar *wxPanelNameStr = wxT("panel"); +const wxChar *wxRadioBoxNameStr = wxT("radioBox"); +const wxChar *wxRadioButtonNameStr = wxT("radioButton"); +const wxChar *wxBitmapRadioButtonNameStr = wxT("radioButton"); +const wxChar *wxScrollBarNameStr = wxT("scrollBar"); +const wxChar *wxSliderNameStr = wxT("slider"); +const wxChar *wxStaticNameStr = wxT("static"); +const wxChar *wxTextCtrlWindowNameStr = wxT("textWindow"); +const wxChar *wxTextCtrlNameStr = wxT("text"); +const wxChar *wxVirtListBoxNameStr = wxT("virtListBox"); +const wxChar *wxButtonBarNameStr = wxT("buttonbar"); +const wxChar *wxEnhDialogNameStr = wxT("Shell"); +const wxChar *wxToolBarNameStr = wxT("toolbar"); +const wxChar *wxStatusLineNameStr = wxT("status_line"); + +const wxChar *wxGetTextFromUserPromptStr = wxT("Input Text"); +const wxChar *wxMessageBoxCaptionStr = wxT("Message"); +const wxChar *wxFileSelectorPromptStr = wxT("Select a file"); +const wxChar *wxFileSelectorDefaultWildcardStr = wxT("*.*"); const wxChar *wxTreeCtrlNameStr = wxT("wxTreeCtrl"); +const wxChar *wxDirDialogNameStr = wxT("wxDirCtrl"); +const wxChar *wxDirDialogDefaultFolderStr = wxT("/"); // See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; +const wxChar *wxFloatToStringStr = wxT("%.2f"); +const wxChar *wxDoubleToStringStr = wxT("%.2f"); const wxSize wxDefaultSize(-1, -1); diff --git a/src/motif/dcmemory.cpp b/src/motif/dcmemory.cpp index bdbd68f727..8ac24c411e 100644 --- a/src/motif/dcmemory.cpp +++ b/src/motif/dcmemory.cpp @@ -114,7 +114,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) gcvalues.graphics_exposures = False; gcvalues.subwindow_mode = IncludeInferiors; gcvalues.line_width = 1; - m_gc = (WXGC) XCreateGC (display, RootWindow (display, DefaultScreen (display)), + m_gc = (WXGC) XCreateGC (display, (Drawable)m_pixmap/* RootWindow (display, DefaultScreen (display)) */, GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth | GCSubwindowMode, &gcvalues); diff --git a/src/motif/filedlg.cpp b/src/motif/filedlg.cpp index 91f301028c..9336136f94 100644 --- a/src/motif/filedlg.cpp +++ b/src/motif/filedlg.cpp @@ -26,6 +26,7 @@ #include "wx/intl.h" #include "wx/app.h" #include "wx/settings.h" +#include "wx/tokenzr.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -118,6 +119,14 @@ wxString wxFileSelectorEx(const char *title, wxString wxFileDialog::m_fileSelectorAnswer = ""; bool wxFileDialog::m_fileSelectorReturned = FALSE; +static void wxFileSelClose(Widget WXUNUSED(w), + void* WXUNUSED(client_data), + XmAnyCallbackStruct *WXUNUSED(call_data)) +{ + wxFileDialog::m_fileSelectorAnswer = ""; + wxFileDialog::m_fileSelectorReturned = TRUE; +} + void wxFileSelCancel( Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSelectionBoxCallbackStruct *WXUNUSED(cbs) ) { @@ -140,6 +149,26 @@ void wxFileSelOk(Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSel } } +static wxString ParseWildCard( const wxString& wild ) +{ + static const wxChar* msg = + _T("Motif file dialog does not understand this ") + _T("wildcard syntax"); + + wxStringTokenizer tok( wild, _T("|") ); + + wxCHECK_MSG( tok.CountTokens() <= 2, _T("*.*"), msg ); + + if( tok.CountTokens() == 1 ) return wild; + + // CountTokens == 2 + tok.GetNextToken(); + wxStringTokenizer tok2( tok.GetNextToken(), _T(";") ); + + wxCHECK_MSG( tok2.CountTokens() == 1, tok2.GetNextToken(), msg ); + return tok2.GetNextToken(); +} + wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, long style, const wxPoint& pos) @@ -161,7 +190,9 @@ static void wxChangeListBoxColours(wxWindow* WXUNUSED(win), Widget widget) // Change colour of the scrolled areas of the listboxes Widget listParent = XtParent (widget); +#if 0 wxWindow::DoChangeBackgroundColour((WXWidget) listParent, *wxWHITE, TRUE); +#endif Widget hsb = (Widget) 0; Widget vsb = (Widget) 0; @@ -248,20 +279,17 @@ int wxFileDialog::ShowModal() entirePath = m_fileName; } - if (entirePath != "") - { - XmTextSetString(selectionWidget, (char*) (const char*) entirePath); - } - if (m_wildCard != "") { - wxString filter(""); + // return something understandable by Motif + wxString wildCard = ParseWildCard( m_wildCard ); + wxString filter; if (m_dir != "") - filter = m_dir + wxString("/") + m_wildCard; + filter = m_dir + wxString("/") + wildCard; else - filter = m_wildCard; + filter = wildCard; - XmTextSetString(filterWidget, (char*) (const char*) filter); + XmTextSetString(filterWidget, (char*)filter.c_str()); XmFileSelectionDoSearch(fileSel, NULL); } @@ -269,18 +297,22 @@ int wxFileDialog::ShowModal() // file selector on Solaris 1.5.1. if ( m_dir != "" ) { - XmString thePath = XmStringCreateLtoR ((char*) (const char*) m_dir, - XmSTRING_DEFAULT_CHARSET); + wxXmString thePath( m_dir ); XtVaSetValues (fileSel, - XmNdirectory, thePath, + XmNdirectory, thePath(), NULL); + } - XmStringFree(thePath); + if (entirePath != "") + { + XmTextSetString(selectionWidget, (char*)entirePath.c_str()); } XtAddCallback(fileSel, XmNcancelCallback, (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL); XtAddCallback(fileSel, XmNokCallback, (XtCallbackProc)wxFileSelOk, (XtPointer)NULL); + XtAddCallback(fileSel, XmNunmapCallback, + (XtCallbackProc)wxFileSelClose, (XtPointer)this); //#if XmVersion > 1000 // I'm not sure about what you mean with XmVersion. diff --git a/src/motif/files.lst b/src/motif/files.lst index 4e74793472..e666cec58d 100644 --- a/src/motif/files.lst +++ b/src/motif/files.lst @@ -257,7 +257,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -426,6 +425,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -583,7 +583,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -627,7 +627,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -893,7 +892,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/motif/frame.cpp b/src/motif/frame.cpp index 5092f9fa1a..2d07cc18c0 100644 --- a/src/motif/frame.cpp +++ b/src/motif/frame.cpp @@ -383,6 +383,12 @@ wxFrame::~wxFrame() m_frameStatusBar = NULL; } + if (m_frameToolBar) + { + delete m_frameToolBar; + m_frameToolBar = NULL; + } + DestroyChildren(); if (m_workArea) @@ -392,6 +398,11 @@ wxFrame::~wxFrame() XtDestroyWidget ((Widget) m_workArea); } + // We need to destroy the base class icons here before we stop + // the event loop. This is a hack until we have a real top level + // window (which would be responsible for killing the event loop). + m_icons.m_icons.Empty(); + if (m_frameWidget) { wxDeleteWindowFromTable((Widget) m_frameWidget); diff --git a/src/motif/listbox.cpp b/src/motif/listbox.cpp index 2107f2e894..d8b12adf8a 100644 --- a/src/motif/listbox.cpp +++ b/src/motif/listbox.cpp @@ -617,7 +617,7 @@ void wxListBoxCallback (Widget WXUNUSED(w), XtPointer clientData, event.SetString( item->GetString( n ) ); int x = -1; - if( cbs->event->type == ButtonRelease ) + if( NULL != cbs->event && cbs->event->type == ButtonRelease ) { XButtonEvent* evt = (XButtonEvent*)cbs->event; diff --git a/src/motif/menu.cpp b/src/motif/menu.cpp index dbb71ac00c..b7e9194893 100644 --- a/src/motif/menu.cpp +++ b/src/motif/menu.cpp @@ -139,10 +139,10 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item) bool wxMenu::DoInsert(size_t pos, wxMenuItem *item) { - if ( !wxMenuBase::DoInsert(pos, item) ) - return FALSE; + if ( wxMenuBase::DoInsert(pos, item) ) + return TRUE; - wxFAIL_MSG(wxT("not implemented")); + wxFAIL_MSG(wxT("DoInsert not implemented; or error in wxMenuBase::DoInsert")); return FALSE; } diff --git a/src/motif/radiobox.cpp b/src/motif/radiobox.cpp index 8598837d8d..9076292ca0 100644 --- a/src/motif/radiobox.cpp +++ b/src/motif/radiobox.cpp @@ -119,6 +119,8 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, // TODO: check this still looks OK for Motif 1.2. #if (XmVersion > 1200) XmNframeChildType, XmFRAME_TITLE_CHILD, +#else + XmNchildType, XmFRAME_TITLE_CHILD, #endif XmNchildVerticalAlignment, XmALIGNMENT_CENTER, NULL); diff --git a/src/motif/spinbutt.cpp b/src/motif/spinbutt.cpp index ba88785d9b..d48978ec07 100644 --- a/src/motif/spinbutt.cpp +++ b/src/motif/spinbutt.cpp @@ -279,10 +279,10 @@ bool wxSpinButton::Create( wxWindow *parent, wxWindowID id, wxPoint pt1, pt2; wxSize sz1, sz2; CalcSizes( wxPoint(0,0), newSize, pt1, sz1, pt2, sz2, isVert ); - m_up = new wxArrowButton( this, -1, isVert ? wxARROW_UP : wxARROW_LEFT, + m_up = new wxArrowButton( this, -1, isVert ? wxARROW_UP : wxARROW_RIGHT, pt1, sz1, 1 ); m_down = new wxArrowButton( this, -1, - isVert ? wxARROW_DOWN : wxARROW_RIGHT, + isVert ? wxARROW_DOWN : wxARROW_LEFT, pt2, sz2, -1 ); return TRUE; @@ -331,14 +331,14 @@ void wxSpinButton::Increment( int delta ) if( npos < m_min ) { - if( GetWindowStyle() && wxSP_WRAP ) + if( GetWindowStyle() & wxSP_WRAP ) npos = m_max; else npos = m_min; } if( npos > m_max ) { - if( GetWindowStyle() && wxSP_WRAP ) + if( GetWindowStyle() & wxSP_WRAP ) npos = m_min; else npos = m_max; diff --git a/src/motif/statbox.cpp b/src/motif/statbox.cpp index 4258f52c1c..46f69f1189 100644 --- a/src/motif/statbox.cpp +++ b/src/motif/statbox.cpp @@ -48,7 +48,6 @@ END_EVENT_TABLE() wxStaticBox::wxStaticBox() { - m_formWidget = (WXWidget) 0; m_labelWidget = (WXWidget) 0; } @@ -59,8 +58,6 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, long style, const wxString& name) { - m_formWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; m_backgroundColour = parent->GetBackgroundColour(); m_foregroundColour = parent->GetForegroundColour(); m_font = parent->GetFont(); @@ -76,59 +73,35 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, m_windowStyle = style; - bool hasLabel = (!label.IsNull() && !label.IsEmpty()) ; - Widget parentWidget = (Widget) parent->GetClientWidget(); - Widget formWidget = XtVaCreateManagedWidget ((char*) (const char*) name, - xmFormWidgetClass, parentWidget, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - NULL); - - - if (hasLabel) - { - XmFontList fontList = (XmFontList) m_font.GetFontList(1.0, XtDisplay(parentWidget)); - - wxString label1(wxStripMenuCodes(label)); - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - m_labelWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) label1, - xmLabelWidgetClass, formWidget, - XmNfontList, fontList, - XmNlabelString, text, - NULL); - XmStringFree (text); - } - - Widget frameWidget = XtVaCreateManagedWidget ("frame", - xmFrameWidgetClass, formWidget, + m_mainWidget = XtVaCreateManagedWidget ("staticboxframe", + xmFrameWidgetClass, parentWidget, XmNshadowType, XmSHADOW_IN, //XmNmarginHeight, 0, //XmNmarginWidth, 0, NULL); + bool hasLabel = (!label.IsNull() && !label.IsEmpty()) ; if (hasLabel) - XtVaSetValues ((Widget) m_labelWidget, - XmNtopAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - XmNalignment, XmALIGNMENT_BEGINNING, + { + XmFontList fontList = (XmFontList) m_font.GetFontList(1.0, XtDisplay(parentWidget)); + wxString label1(wxStripMenuCodes(label)); + wxXmString text(label1); + m_labelWidget = (WXWidget) XtVaCreateManagedWidget (label1.c_str(), + xmLabelWidgetClass, (Widget)m_mainWidget, + XmNfontList, fontList, + XmNlabelString, text(), +#if (XmVersion > 1200) + XmNframeChildType, XmFRAME_TITLE_CHILD, +#else + XmNchildType, XmFRAME_TITLE_CHILD, +#endif NULL); - - XtVaSetValues (frameWidget, - XmNtopAttachment, hasLabel ? XmATTACH_WIDGET : XmATTACH_FORM, - XmNtopWidget, hasLabel ? (Widget) m_labelWidget : formWidget, - XmNbottomAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - NULL); - - m_mainWidget = (WXWidget) frameWidget; - m_formWidget = (WXWidget) formWidget; - + } + SetCanAddEventHandler(TRUE); - AttachWidget (parent, (WXWidget) frameWidget, (WXWidget) formWidget, pos.x, pos.y, size.x, size.y); + AttachWidget (parent, m_mainWidget, NULL, pos.x, pos.y, size.x, size.y); ChangeBackgroundColour(); return TRUE; @@ -136,16 +109,11 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, wxStaticBox::~wxStaticBox() { - DetachWidget(m_formWidget); DetachWidget(m_mainWidget); XtDestroyWidget((Widget) m_mainWidget); - if (m_labelWidget) - XtDestroyWidget((Widget) m_labelWidget); - XtDestroyWidget((Widget) m_formWidget); m_mainWidget = (WXWidget) 0; m_labelWidget = (WXWidget) 0; - m_formWidget = (WXWidget) 0; } void wxStaticBox::SetLabel(const wxString& label) @@ -157,12 +125,11 @@ void wxStaticBox::SetLabel(const wxString& label) { wxString label1(wxStripMenuCodes(label)); - XmString text = XmStringCreateSimple ((char*) (const char*) label1); + wxXmString text(label1); XtVaSetValues ((Widget) m_labelWidget, - XmNlabelString, text, + XmNlabelString, text(), XmNlabelType, XmSTRING, NULL); - XmStringFree (text); } } @@ -192,40 +159,9 @@ wxString wxStaticBox::GetLabel() const } } -void wxStaticBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxControl::DoSetSize (x, y, width, height, sizeFlags); - - if (m_labelWidget) - { - Dimension xx, yy; - XtVaGetValues ((Widget) m_labelWidget, XmNwidth, &xx, XmNheight, &yy, NULL); - - if (width > -1) - XtVaSetValues ((Widget) m_mainWidget, XmNwidth, width, - NULL); - if (height > -1) - XtVaSetValues ((Widget) m_mainWidget, XmNheight, height - yy, - NULL); - } -} - void wxStaticBox::ChangeFont(bool keepOriginalSize) { wxWindow::ChangeFont(keepOriginalSize); } -void wxStaticBox::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - if (m_labelWidget) - DoChangeBackgroundColour(m_labelWidget, m_backgroundColour); -} - -void wxStaticBox::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); - if (m_labelWidget) - DoChangeForegroundColour(m_labelWidget, m_foregroundColour); -} diff --git a/src/motif/toolbar.cpp b/src/motif/toolbar.cpp index f62b739ad0..5f920cc7a1 100644 --- a/src/motif/toolbar.cpp +++ b/src/motif/toolbar.cpp @@ -164,9 +164,8 @@ wxToolBarTool::~wxToolBarTool() { if ( m_widget ) XtDestroyWidget(m_widget); - if ( m_pixmap ) - XmDestroyPixmap(DefaultScreenOfDisplay((Display*)wxGetDisplay()), - m_pixmap); + // note: do not delete m_pixmap here because it will be deleted + // by the base class when the bitmap is destroyed. } // ---------------------------------------------------------------------------- diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp index bf93a2a23f..179a3a43d6 100644 --- a/src/motif/utils.cpp +++ b/src/motif/utils.cpp @@ -17,14 +17,1241 @@ // headers // ---------------------------------------------------------------------------- -#include "wx/setup.h" - #ifdef __VMS #define XtDisplay XTDISPLAY -#include "[-.x11]utils.cpp" -#else - -#include "../src/x11/utils.cpp" #endif -//#error no longer needed - wxX11 utils.cpp used instead +#include "wx/setup.h" +#include "wx/utils.h" +#include "wx/app.h" +#include "wx/msgdlg.h" +#include "wx/cursor.h" +#include "wx/window.h" // for wxTopLevelWindows +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +#include + +#if (defined(__SUNCC__) || defined(__CLCC__)) + #include +#endif + +#ifdef __VMS__ +#pragma message disable nosimpint +#endif + +#include "wx/unix/execute.h" + +#ifdef __WXMOTIF__ +#include +#include "wx/motif/private.h" +#endif + +#ifdef __WXX11__ +#include "wx/x11/private.h" +#endif + +#if wxUSE_RESOURCES +#include "X11/Xresource.h" +#endif + +#include "X11/Xutil.h" + +#ifdef __VMS__ +#pragma message enable nosimpint +#endif + +// ---------------------------------------------------------------------------- +// private functions +// ---------------------------------------------------------------------------- + +// Yuck this is really BOTH site and platform dependent +// so we should use some other strategy! +#ifdef sun + #define DEFAULT_XRESOURCE_DIR "/usr/openwin/lib/app-defaults" +#else + #define DEFAULT_XRESOURCE_DIR "/usr/lib/X11/app-defaults" +#endif + +static char *GetIniFile (char *dest, const char *filename); + +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// async event processing +// ---------------------------------------------------------------------------- + +// Consume all events until no more left +void wxFlushEvents() +{ + Display *display = (Display*) wxGetDisplay(); + + XSync (display, FALSE); + +#ifdef __WXMOTIF__ + // XtAppPending returns availability of events AND timers/inputs, which + // are processed via callbacks, so XtAppNextEvent will not return if + // there are no events. So added '& XtIMXEvent' - Sergey. + while (XtAppPending ((XtAppContext) wxTheApp->GetAppContext()) & XtIMXEvent) + { + XFlush (XtDisplay ((Widget) wxTheApp->GetTopLevelWidget())); + // Jan Lessner: works better when events are non-X events + XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMXEvent); + } +#endif +#ifdef __WXX11__ + // TODO for X11 + // ?? +#endif +} + +// Check whether this window wants to process messages, e.g. Stop button +// in long calculations. +bool wxCheckForInterrupt(wxWindow *wnd) +{ +#ifdef __WXMOTIF__ + wxCHECK_MSG( wnd, FALSE, "NULL window in wxCheckForInterrupt" ); + + Display *dpy=(Display*) wnd->GetXDisplay(); + Window win=(Window) wnd->GetXWindow(); + XEvent event; + XFlush(dpy); + if (wnd->GetMainWidget()) + { + XmUpdateDisplay((Widget)(wnd->GetMainWidget())); + } + + bool hadEvents = FALSE; + while( XCheckMaskEvent(dpy, + ButtonPressMask|ButtonReleaseMask|ButtonMotionMask| + PointerMotionMask|KeyPressMask|KeyReleaseMask, + &event) ) + { + if ( event.xany.window == win ) + { + hadEvents = TRUE; + + XtDispatchEvent(&event); + } + } + + return hadEvents; +#else + wxASSERT_MSG(FALSE, "wxCheckForInterrupt not yet implemented."); + return FALSE; +#endif +} + +// ---------------------------------------------------------------------------- +// wxExecute stuff +// ---------------------------------------------------------------------------- +#ifdef __WXMOTIF__ +static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid), + XtInputId *id) +{ + wxEndProcessData *proc_data = (wxEndProcessData *)data; + + wxHandleProcessTermination(proc_data); + + // VZ: I think they should be the same... + wxASSERT( (int)*id == proc_data->tag ); + + XtRemoveInput(*id); +} +#endif + +int wxAddProcessCallback(wxEndProcessData *proc_data, int fd) +{ +#ifdef __WXMOTIF__ + XtInputId id = XtAppAddInput((XtAppContext) wxTheApp->GetAppContext(), + fd, + (XtPointer *) XtInputReadMask, + (XtInputCallbackProc) xt_notify_end_process, + (XtPointer) proc_data); + + return (int)id; +#endif +#ifdef __WXX11__ + // TODO + return 0; +#endif +} + +// ---------------------------------------------------------------------------- +// misc +// ---------------------------------------------------------------------------- + +// Emit a beeeeeep +void wxBell() +{ + // Use current setting for the bell + XBell ((Display*) wxGetDisplay(), 0); +} + +int wxGetOsVersion(int *majorVsn, int *minorVsn) +{ +#ifdef __WXMOTIF__ + // FIXME TODO + // This code is WRONG!! Does NOT return the + // Motif version of the libs but the X protocol + // version! + Display *display = XtDisplay ((Widget) wxTheApp->GetTopLevelWidget()); + if (majorVsn) + *majorVsn = ProtocolVersion (display); + if (minorVsn) + *minorVsn = ProtocolRevision (display); + + return wxMOTIF_X; +#endif +#ifdef __WXX11__ + if (majorVsn) + *majorVsn = 0; + if (minorVsn) + *minorVsn = 0; + return wxX11; +#endif +} + +// ---------------------------------------------------------------------------- +// Reading and writing resources (eg WIN.INI, .Xdefaults) +// ---------------------------------------------------------------------------- + +// Read $HOME for what it says is home, if not +// read $USER or $LOGNAME for user name else determine +// the Real User, then determine the Real home dir. +static char * GetIniFile (char *dest, const char *filename) +{ + char *home = NULL; + if (filename && wxIsAbsolutePath(filename)) + { + strcpy(dest, filename); + } + else if ((home = wxGetUserHome("")) != NULL) + { + strcpy(dest, home); + if (dest[strlen(dest) - 1] != '/') + strcat (dest, "/"); + if (filename == NULL) + { + if ((filename = getenv ("XENVIRONMENT")) == NULL) + filename = ".Xdefaults"; + } + else if (*filename != '.') + strcat (dest, "."); + strcat (dest, filename); + } else + { + dest[0] = '\0'; + } + return dest; +} + +#if wxUSE_RESOURCES + +static char *GetResourcePath(char *buf, const char *name, bool create = FALSE) +{ + if (create && wxFileExists (name) ) { + strcpy(buf, name); + return buf; // Exists so ... + } + + if (*name == '/') + strcpy(buf, name); + else { + // Put in standard place for resource files if not absolute + strcpy (buf, DEFAULT_XRESOURCE_DIR); + strcat (buf, "/"); + strcat (buf, (const char*) wxFileNameFromPath (name)); + } + + if (create) { + // Touch the file to create it + FILE *fd = fopen (buf, "w"); + if (fd) fclose (fd); + } + return buf; +} + +/* +* We have a cache for writing different resource files, +* which will only get flushed when we call wxFlushResources(). +* Build up a list of resource databases waiting to be written. +* +*/ + +wxList wxResourceCache (wxKEY_STRING); + +void +wxFlushResources (void) +{ + char nameBuffer[512]; + + wxNode *node = wxResourceCache.First (); + while (node) + { + const char *file = node->GetKeyString(); + // If file doesn't exist, create it first. + (void)GetResourcePath(nameBuffer, file, TRUE); + + XrmDatabase database = (XrmDatabase) node->Data (); + XrmPutFileDatabase (database, nameBuffer); + XrmDestroyDatabase (database); + wxNode *next = node->Next (); + delete node; + node = next; + } +} + +static XrmDatabase wxResourceDatabase = 0; + +void wxXMergeDatabases (wxApp * theApp, Display * display); + +bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) +{ + char buffer[500]; + + (void) GetIniFile (buffer, file); + + XrmDatabase database; + wxNode *node = wxResourceCache.Find (buffer); + if (node) + database = (XrmDatabase) node->Data (); + else + { + database = XrmGetFileDatabase (buffer); + wxResourceCache.Append (buffer, (wxObject *) database); + } + + char resName[300]; + strcpy (resName, (const char*) section); + strcat (resName, "."); + strcat (resName, (const char*) entry); + + XrmPutStringResource (&database, resName, value); + return TRUE; +} + +bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) +{ + char buf[50]; + sprintf(buf, "%.4f", value); + return wxWriteResource(section, entry, buf, file); +} + +bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) +{ + char buf[50]; + sprintf(buf, "%ld", value); + return wxWriteResource(section, entry, buf, file); +} + +bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) +{ + char buf[50]; + sprintf(buf, "%d", value); + return wxWriteResource(section, entry, buf, file); +} + +bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) +{ + if (!wxResourceDatabase) + { + Display *display = (Display*) wxGetDisplay(); + wxXMergeDatabases (wxTheApp, display); + } + + XrmDatabase database; + + if (file != "") + { + char buffer[500]; + + // Is this right? Trying to get it to look in the user's + // home directory instead of current directory -- JACS + (void) GetIniFile (buffer, file); + + wxNode *node = wxResourceCache.Find (buffer); + if (node) + database = (XrmDatabase) node->Data (); + else + { + database = XrmGetFileDatabase (buffer); + wxResourceCache.Append (buffer, (wxObject *) database); + } + } + else + database = wxResourceDatabase; + + XrmValue xvalue; + char *str_type[20]; + char buf[150]; + strcpy (buf, section); + strcat (buf, "."); + strcat (buf, entry); + + Bool success = XrmGetResource (database, buf, "*", str_type, + &xvalue); + // Try different combinations of upper/lower case, just in case... + if (!success) + { + buf[0] = (isupper (buf[0]) ? tolower (buf[0]) : toupper (buf[0])); + success = XrmGetResource (database, buf, "*", str_type, + &xvalue); + } + if (success) + { + if (*value) + delete[] *value; + + *value = new char[xvalue.size + 1]; + strncpy (*value, xvalue.addr, (int) xvalue.size); + return TRUE; + } + return FALSE; +} + +bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) +{ + char *s = NULL; + bool succ = wxGetResource(section, entry, (char **)&s, file); + if (succ) + { + *value = (float)strtod(s, NULL); + delete[] s; + return TRUE; + } + else return FALSE; +} + +bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) +{ + char *s = NULL; + bool succ = wxGetResource(section, entry, (char **)&s, file); + if (succ) + { + *value = strtol(s, NULL, 10); + delete[] s; + return TRUE; + } + else return FALSE; +} + +bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) +{ + char *s = NULL; + bool succ = wxGetResource(section, entry, (char **)&s, file); + if (succ) + { + // Handle True, False here + // True, Yes, Enables, Set or Activated + if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') + *value = TRUE; + // False, No, Disabled, Reset, Cleared, Deactivated + else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') + *value = FALSE; + // Handle as Integer + else + *value = (int) strtol (s, NULL, 10); + delete[] s; + return TRUE; + } + else + return FALSE; +} + +void wxXMergeDatabases (wxApp * theApp, Display * display) +{ + XrmDatabase homeDB, serverDB, applicationDB; + char filenamebuf[1024]; + + char *filename = &filenamebuf[0]; + char *environment; + wxString classname = theApp->GetClassName(); + char name[256]; + (void) strcpy (name, "/usr/lib/X11/app-defaults/"); + (void) strcat (name, (const char*) classname); + + /* Get application defaults file, if any */ + applicationDB = XrmGetFileDatabase (name); + (void) XrmMergeDatabases (applicationDB, &wxResourceDatabase); + + /* Merge server defaults, created by xrdb, loaded as a property of the root + * window when the server initializes and loaded into the display + * structure on XOpenDisplay; + * if not defined, use .Xdefaults + */ + + if (XResourceManagerString (display) != NULL) + { + serverDB = XrmGetStringDatabase (XResourceManagerString (display)); + } + else + { + (void) GetIniFile (filename, NULL); + serverDB = XrmGetFileDatabase (filename); + } + XrmMergeDatabases (serverDB, &wxResourceDatabase); + + /* Open XENVIRONMENT file, or if not defined, the .Xdefaults, + * and merge into existing database + */ + + if ((environment = getenv ("XENVIRONMENT")) == NULL) + { + size_t len; + environment = GetIniFile (filename, NULL); + len = strlen (environment); + wxString hostname = wxGetHostName(); + if ( !!hostname ) + strncat(environment, hostname, 1024 - len); + } + homeDB = XrmGetFileDatabase (environment); + XrmMergeDatabases (homeDB, &wxResourceDatabase); +} + +#if 0 + +/* +* Not yet used but may be useful. +* +*/ +void +wxSetDefaultResources (const Widget w, const char **resourceSpec, const char *name) +{ + int i; + Display *dpy = XtDisplay (w); // Retrieve the display pointer + + XrmDatabase rdb = NULL; // A resource data base + + // Create an empty resource database + rdb = XrmGetStringDatabase (""); + + // Add the Component resources, prepending the name of the component + + i = 0; + while (resourceSpec[i] != NULL) + { + char buf[1000]; + + sprintf (buf, "*%s%s", name, resourceSpec[i++]); + XrmPutLineResource (&rdb, buf); + } + + // Merge them into the Xt database, with lowest precendence + + if (rdb) + { +#if (XlibSpecificationRelease>=5) + XrmDatabase db = XtDatabase (dpy); + XrmCombineDatabase (rdb, &db, FALSE); +#else + XrmMergeDatabases (dpy->db, &rdb); + dpy->db = rdb; +#endif + } +} +#endif +// 0 + +#endif // wxUSE_RESOURCES + +// ---------------------------------------------------------------------------- +// display info +// ---------------------------------------------------------------------------- + +void wxGetMousePosition( int* x, int* y ) +{ +#if wxUSE_NANOX + // TODO + *x = 0; + *y = 0; +#else + XMotionEvent xev; + Window root, child; + XQueryPointer((Display*) wxGetDisplay(), + DefaultRootWindow((Display*) wxGetDisplay()), + &root, &child, + &(xev.x_root), &(xev.y_root), + &(xev.x), &(xev.y), + &(xev.state)); + *x = xev.x_root; + *y = xev.y_root; +#endif +}; + +// Return TRUE if we have a colour display +bool wxColourDisplay() +{ + return wxDisplayDepth() > 1; +} + +// Returns depth of screen +int wxDisplayDepth() +{ + Display *dpy = (Display*) wxGetDisplay(); + + return DefaultDepth (dpy, DefaultScreen (dpy)); +} + +// Get size of display +void wxDisplaySize(int *width, int *height) +{ + Display *dpy = (Display*) wxGetDisplay(); + + if ( width ) + *width = DisplayWidth (dpy, DefaultScreen (dpy)); + if ( height ) + *height = DisplayHeight (dpy, DefaultScreen (dpy)); +} + +void wxDisplaySizeMM(int *width, int *height) +{ + Display *dpy = (Display*) wxGetDisplay(); + + if ( width ) + *width = DisplayWidthMM(dpy, DefaultScreen (dpy)); + if ( height ) + *height = DisplayHeightMM(dpy, DefaultScreen (dpy)); +} + +void wxClientDisplayRect(int *x, int *y, int *width, int *height) +{ + // This is supposed to return desktop dimensions minus any window + // manager panels, menus, taskbars, etc. If there is a way to do that + // for this platform please fix this function, otherwise it defaults + // to the entire desktop. + if (x) *x = 0; + if (y) *y = 0; + wxDisplaySize(width, height); +} + + +// Configurable display in wxX11 and wxMotif +static WXDisplay *gs_currentDisplay = NULL; +static wxString gs_displayName; + +WXDisplay *wxGetDisplay() +{ + if (gs_currentDisplay) + return gs_currentDisplay; +#ifdef __WXMOTIF__ + if (wxTheApp && wxTheApp->GetTopLevelWidget()) + return XtDisplay ((Widget) wxTheApp->GetTopLevelWidget()); + else if (wxTheApp) + return wxTheApp->GetInitialDisplay(); + return NULL; +#endif +#ifdef __WXX11__ + return wxApp::GetDisplay(); +#endif +} + +bool wxSetDisplay(const wxString& display_name) +{ + gs_displayName = display_name; + + if ( display_name.IsEmpty() ) + { + gs_currentDisplay = NULL; + + return TRUE; + } + else + { +#ifdef __WXMOTIF__ + Cardinal argc = 0; + + Display *display = XtOpenDisplay((XtAppContext) wxTheApp->GetAppContext(), + (const char*) display_name, + (const char*) wxTheApp->GetAppName(), + (const char*) wxTheApp->GetClassName(), + NULL, +#if XtSpecificationRelease < 5 + 0, &argc, +#else + 0, (int *)&argc, +#endif + NULL); + + if (display) + { + gs_currentDisplay = (WXDisplay*) display; + return TRUE; + } + else + return FALSE; +#endif +#ifdef __WXX11__ + Display* display = XOpenDisplay((char*) display_name.c_str()); + + if (display) + { + gs_currentDisplay = (WXDisplay*) display; + return TRUE; + } + else + return FALSE; +#endif + } +} + +wxString wxGetDisplayName() +{ + return gs_displayName; +} + +wxWindow* wxFindWindowAtPoint(const wxPoint& pt) +{ + return wxGenericFindWindowAtPoint(pt); +} + +// ---------------------------------------------------------------------------- +// keycode translations +// ---------------------------------------------------------------------------- + +#include + +// FIXME what about tables?? + +int wxCharCodeXToWX(KeySym keySym) +{ + int id; + switch (keySym) + { + case XK_Shift_L: + case XK_Shift_R: + id = WXK_SHIFT; break; + case XK_Control_L: + case XK_Control_R: + id = WXK_CONTROL; break; + case XK_BackSpace: + id = WXK_BACK; break; + case XK_Delete: + id = WXK_DELETE; break; + case XK_Clear: + id = WXK_CLEAR; break; + case XK_Tab: + id = WXK_TAB; break; + case XK_numbersign: + id = '#'; break; + case XK_Return: + id = WXK_RETURN; break; + case XK_Escape: + id = WXK_ESCAPE; break; + case XK_Pause: + case XK_Break: + id = WXK_PAUSE; break; + case XK_Num_Lock: + id = WXK_NUMLOCK; break; + case XK_Scroll_Lock: + id = WXK_SCROLL; break; + + case XK_Home: + id = WXK_HOME; break; + case XK_End: + id = WXK_END; break; + case XK_Left: + id = WXK_LEFT; break; + case XK_Right: + id = WXK_RIGHT; break; + case XK_Up: + id = WXK_UP; break; + case XK_Down: + id = WXK_DOWN; break; + case XK_Next: + id = WXK_NEXT; break; + case XK_Prior: + id = WXK_PRIOR; break; + case XK_Menu: + id = WXK_MENU; break; + case XK_Select: + id = WXK_SELECT; break; + case XK_Cancel: + id = WXK_CANCEL; break; + case XK_Print: + id = WXK_PRINT; break; + case XK_Execute: + id = WXK_EXECUTE; break; + case XK_Insert: + id = WXK_INSERT; break; + case XK_Help: + id = WXK_HELP; break; + + case XK_KP_Multiply: + id = WXK_MULTIPLY; break; + case XK_KP_Add: + id = WXK_ADD; break; + case XK_KP_Subtract: + id = WXK_SUBTRACT; break; + case XK_KP_Divide: + id = WXK_DIVIDE; break; + case XK_KP_Decimal: + id = WXK_DECIMAL; break; + case XK_KP_Equal: + id = '='; break; + case XK_KP_Space: + id = ' '; break; + case XK_KP_Tab: + id = WXK_TAB; break; + case XK_KP_Enter: + id = WXK_RETURN; break; + case XK_KP_0: + id = WXK_NUMPAD0; break; + case XK_KP_1: + id = WXK_NUMPAD1; break; + case XK_KP_2: + id = WXK_NUMPAD2; break; + case XK_KP_3: + id = WXK_NUMPAD3; break; + case XK_KP_4: + id = WXK_NUMPAD4; break; + case XK_KP_5: + id = WXK_NUMPAD5; break; + case XK_KP_6: + id = WXK_NUMPAD6; break; + case XK_KP_7: + id = WXK_NUMPAD7; break; + case XK_KP_8: + id = WXK_NUMPAD8; break; + case XK_KP_9: + id = WXK_NUMPAD9; break; + case XK_F1: + id = WXK_F1; break; + case XK_F2: + id = WXK_F2; break; + case XK_F3: + id = WXK_F3; break; + case XK_F4: + id = WXK_F4; break; + case XK_F5: + id = WXK_F5; break; + case XK_F6: + id = WXK_F6; break; + case XK_F7: + id = WXK_F7; break; + case XK_F8: + id = WXK_F8; break; + case XK_F9: + id = WXK_F9; break; + case XK_F10: + id = WXK_F10; break; + case XK_F11: + id = WXK_F11; break; + case XK_F12: + id = WXK_F12; break; + case XK_F13: + id = WXK_F13; break; + case XK_F14: + id = WXK_F14; break; + case XK_F15: + id = WXK_F15; break; + case XK_F16: + id = WXK_F16; break; + case XK_F17: + id = WXK_F17; break; + case XK_F18: + id = WXK_F18; break; + case XK_F19: + id = WXK_F19; break; + case XK_F20: + id = WXK_F20; break; + case XK_F21: + id = WXK_F21; break; + case XK_F22: + id = WXK_F22; break; + case XK_F23: + id = WXK_F23; break; + case XK_F24: + id = WXK_F24; break; + default: + id = (keySym <= 255) ? (int)keySym : -1; + } + + return id; +} + +KeySym wxCharCodeWXToX(int id) +{ + KeySym keySym; + + switch (id) + { + case WXK_CANCEL: keySym = XK_Cancel; break; + case WXK_BACK: keySym = XK_BackSpace; break; + case WXK_TAB: keySym = XK_Tab; break; + case WXK_CLEAR: keySym = XK_Clear; break; + case WXK_RETURN: keySym = XK_Return; break; + case WXK_SHIFT: keySym = XK_Shift_L; break; + case WXK_CONTROL: keySym = XK_Control_L; break; + case WXK_MENU : keySym = XK_Menu; break; + case WXK_PAUSE: keySym = XK_Pause; break; + case WXK_ESCAPE: keySym = XK_Escape; break; + case WXK_SPACE: keySym = ' '; break; + case WXK_PRIOR: keySym = XK_Prior; break; + case WXK_NEXT : keySym = XK_Next; break; + case WXK_END: keySym = XK_End; break; + case WXK_HOME : keySym = XK_Home; break; + case WXK_LEFT : keySym = XK_Left; break; + case WXK_UP: keySym = XK_Up; break; + case WXK_RIGHT: keySym = XK_Right; break; + case WXK_DOWN : keySym = XK_Down; break; + case WXK_SELECT: keySym = XK_Select; break; + case WXK_PRINT: keySym = XK_Print; break; + case WXK_EXECUTE: keySym = XK_Execute; break; + case WXK_INSERT: keySym = XK_Insert; break; + case WXK_DELETE: keySym = XK_Delete; break; + case WXK_HELP : keySym = XK_Help; break; + case WXK_NUMPAD0: keySym = XK_KP_0; break; + case WXK_NUMPAD1: keySym = XK_KP_1; break; + case WXK_NUMPAD2: keySym = XK_KP_2; break; + case WXK_NUMPAD3: keySym = XK_KP_3; break; + case WXK_NUMPAD4: keySym = XK_KP_4; break; + case WXK_NUMPAD5: keySym = XK_KP_5; break; + case WXK_NUMPAD6: keySym = XK_KP_6; break; + case WXK_NUMPAD7: keySym = XK_KP_7; break; + case WXK_NUMPAD8: keySym = XK_KP_8; break; + case WXK_NUMPAD9: keySym = XK_KP_9; break; + case WXK_MULTIPLY: keySym = XK_KP_Multiply; break; + case WXK_ADD: keySym = XK_KP_Add; break; + case WXK_SUBTRACT: keySym = XK_KP_Subtract; break; + case WXK_DECIMAL: keySym = XK_KP_Decimal; break; + case WXK_DIVIDE: keySym = XK_KP_Divide; break; + case WXK_F1: keySym = XK_F1; break; + case WXK_F2: keySym = XK_F2; break; + case WXK_F3: keySym = XK_F3; break; + case WXK_F4: keySym = XK_F4; break; + case WXK_F5: keySym = XK_F5; break; + case WXK_F6: keySym = XK_F6; break; + case WXK_F7: keySym = XK_F7; break; + case WXK_F8: keySym = XK_F8; break; + case WXK_F9: keySym = XK_F9; break; + case WXK_F10: keySym = XK_F10; break; + case WXK_F11: keySym = XK_F11; break; + case WXK_F12: keySym = XK_F12; break; + case WXK_F13: keySym = XK_F13; break; + case WXK_F14: keySym = XK_F14; break; + case WXK_F15: keySym = XK_F15; break; + case WXK_F16: keySym = XK_F16; break; + case WXK_F17: keySym = XK_F17; break; + case WXK_F18: keySym = XK_F18; break; + case WXK_F19: keySym = XK_F19; break; + case WXK_F20: keySym = XK_F20; break; + case WXK_F21: keySym = XK_F21; break; + case WXK_F22: keySym = XK_F22; break; + case WXK_F23: keySym = XK_F23; break; + case WXK_F24: keySym = XK_F24; break; + case WXK_NUMLOCK: keySym = XK_Num_Lock; break; + case WXK_SCROLL: keySym = XK_Scroll_Lock; break; + default: keySym = id <= 255 ? (KeySym)id : 0; + } + + return keySym; +} + +// ---------------------------------------------------------------------------- +// Some colour manipulation routines +// ---------------------------------------------------------------------------- + +void wxHSVToXColor(wxHSV *hsv,XColor *rgb) +{ + int h = hsv->h; + int s = hsv->s; + int v = hsv->v; + int r = 0, g = 0, b = 0; + int i, f; + int p, q, t; + s = (s * wxMAX_RGB) / wxMAX_SV; + v = (v * wxMAX_RGB) / wxMAX_SV; + if (h == 360) h = 0; + if (s == 0) { h = 0; r = g = b = v; } + i = h / 60; + f = h % 60; + p = v * (wxMAX_RGB - s) / wxMAX_RGB; + q = v * (wxMAX_RGB - s * f / 60) / wxMAX_RGB; + t = v * (wxMAX_RGB - s * (60 - f) / 60) / wxMAX_RGB; + switch (i) + { + case 0: r = v, g = t, b = p; break; + case 1: r = q, g = v, b = p; break; + case 2: r = p, g = v, b = t; break; + case 3: r = p, g = q, b = v; break; + case 4: r = t, g = p, b = v; break; + case 5: r = v, g = p, b = q; break; + } + rgb->red = r << 8; + rgb->green = g << 8; + rgb->blue = b << 8; +} + +void wxXColorToHSV(wxHSV *hsv,XColor *rgb) +{ + int r = rgb->red >> 8; + int g = rgb->green >> 8; + int b = rgb->blue >> 8; + int maxv = wxMax3(r, g, b); + int minv = wxMin3(r, g, b); + int h = 0, s, v; + v = maxv; + if (maxv) s = (maxv - minv) * wxMAX_RGB / maxv; + else s = 0; + if (s == 0) h = 0; + else + { + int rc, gc, bc, hex = 0; + rc = (maxv - r) * wxMAX_RGB / (maxv - minv); + gc = (maxv - g) * wxMAX_RGB / (maxv - minv); + bc = (maxv - b) * wxMAX_RGB / (maxv - minv); + if (r == maxv) { h = bc - gc, hex = 0; } + else if (g == maxv) { h = rc - bc, hex = 2; } + else if (b == maxv) { h = gc - rc, hex = 4; } + h = hex * 60 + (h * 60 / wxMAX_RGB); + if (h < 0) h += 360; + } + hsv->h = h; + hsv->s = (s * wxMAX_SV) / wxMAX_RGB; + hsv->v = (v * wxMAX_SV) / wxMAX_RGB; +} + +void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc) +{ +#if !wxUSE_NANOX + int llp; + + int screen = DefaultScreen(d); + int num_colors = DisplayCells(d,screen); + + XColor *color_defs = new XColor[num_colors]; + for(llp = 0;llp < num_colors;llp++) color_defs[llp].pixel = llp; + XQueryColors(d,cmp,color_defs,num_colors); + + wxHSV hsv_defs, hsv; + wxXColorToHSV(&hsv,xc); + + int diff, min_diff = 0, pixel = 0; + + for(llp = 0;llp < num_colors;llp++) + { + wxXColorToHSV(&hsv_defs,&color_defs[llp]); + diff = wxSIGN(wxH_WEIGHT * (hsv.h - hsv_defs.h)) + + wxSIGN(wxS_WEIGHT * (hsv.s - hsv_defs.s)) + + wxSIGN(wxV_WEIGHT * (hsv.v - hsv_defs.v)); + if (llp == 0) min_diff = diff; + if (min_diff > diff) { min_diff = diff; pixel = llp; } + if (min_diff == 0) break; + } + + xc -> red = color_defs[pixel].red; + xc -> green = color_defs[pixel].green; + xc -> blue = color_defs[pixel].blue; + xc -> flags = DoRed | DoGreen | DoBlue; + +/* FIXME, TODO + if (!XAllocColor(d,cmp,xc)) + cout << "wxAllocNearestColor : Warning : Cannot find nearest color !\n"; +*/ + + delete[] color_defs; +#endif +} + +void wxAllocColor(Display *d,Colormap cmp,XColor *xc) +{ + if (!XAllocColor(d,cmp,xc)) + { + // cout << "wxAllocColor : Warning : Can not allocate color, attempt find nearest !\n"; + wxAllocNearestColor(d,cmp,xc); + } +} + +#ifdef __WXDEBUG__ +wxString wxGetXEventName(XEvent& event) +{ +#if wxUSE_NANOX + wxString str(wxT("(some event)")); + return str; +#else + int type = event.xany.type; + static char* event_name[] = { + "", "unknown(-)", // 0-1 + "KeyPress", "KeyRelease", "ButtonPress", "ButtonRelease", // 2-5 + "MotionNotify", "EnterNotify", "LeaveNotify", "FocusIn", // 6-9 + "FocusOut", "KeymapNotify", "Expose", "GraphicsExpose", // 10-13 + "NoExpose", "VisibilityNotify", "CreateNotify", // 14-16 + "DestroyNotify", "UnmapNotify", "MapNotify", "MapRequest",// 17-20 + "ReparentNotify", "ConfigureNotify", "ConfigureRequest", // 21-23 + "GravityNotify", "ResizeRequest", "CirculateNotify", // 24-26 + "CirculateRequest", "PropertyNotify", "SelectionClear", // 27-29 + "SelectionRequest", "SelectionNotify", "ColormapNotify", // 30-32 + "ClientMessage", "MappingNotify", // 33-34 + "unknown(+)"}; // 35 + type = wxMin(35, type); type = wxMax(1, type); + wxString str(event_name[type]); + return str; +#endif +} +#endif + +#ifdef __WXMOTIF__ +// ---------------------------------------------------------------------------- +// accelerators +// ---------------------------------------------------------------------------- + +// Find the letter corresponding to the mnemonic, for Motif +char wxFindMnemonic (const char *s) +{ + char mnem = 0; + int len = strlen (s); + int i; + for (i = 0; i < len; i++) + { + if (s[i] == '&') + { + // Carefully handle && + if ((i + 1) <= len && s[i + 1] == '&') + i++; + else + { + mnem = s[i + 1]; + break; + } + } + } + return mnem; +} + +char * wxFindAccelerator (const char *s) +{ + // VZ: this function returns incorrect keysym which completely breaks kbd + // handling + return NULL; + +#if 0 + // The accelerator text is after the \t char. + while (*s && *s != '\t') + s++; + if (*s == '\0') + return (NULL); + s++; + /* + Now we need to format it as X standard: + + input output + + F7 --> F7 + Ctrl+N --> CtrlN + Alt+k --> Metak + Ctrl+Shift+A --> Ctrl ShiftA + + */ + + static char buf[256]; + buf[0] = '\0'; + char *tmp = copystring (s); + s = tmp; + char *p = tmp; + + while (1) + { + while (*p && *p != '+') + p++; + if (*p) + { + *p = '\0'; + if (buf[0]) + strcat (buf, " "); + if (strcmp (s, "Alt")) + strcat (buf, s); + else + strcat (buf, "Meta"); + s = p++; + } + else + { + strcat (buf, ""); + strcat (buf, s); + break; + } + } + delete[]tmp; + return buf; +#endif +} + +XmString wxFindAcceleratorText (const char *s) +{ + // VZ: this function returns incorrect keysym which completely breaks kbd + // handling + return NULL; + +#if 0 + // The accelerator text is after the \t char. + while (*s && *s != '\t') + s++; + if (*s == '\0') + return (NULL); + s++; + XmString text = XmStringCreateSimple ((char *)s); + return text; +#endif +} + + +// These functions duplicate those in wxWindow, but are needed +// for use outside of wxWindow (e.g. wxMenu, wxMenuBar). + +// Change a widget's foreground and background colours. + +void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour) +{ + // When should we specify the foreground, if it's calculated + // by wxComputeColours? + // Solution: say we start with the default (computed) foreground colour. + // If we call SetForegroundColour explicitly for a control or window, + // then the foreground is changed. + // Therefore SetBackgroundColour computes the foreground colour, and + // SetForegroundColour changes the foreground colour. The ordering is + // important. + + XtVaSetValues ((Widget) widget, + XmNforeground, foregroundColour.AllocColour(XtDisplay((Widget) widget)), + NULL); +} + +void wxDoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour) +{ + wxComputeColours (XtDisplay((Widget) widget), & backgroundColour, + (wxColour*) NULL); + + XtVaSetValues ((Widget) widget, + XmNbackground, g_itemColors[wxBACK_INDEX].pixel, + XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel, + XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel, + XmNforeground, g_itemColors[wxFORE_INDEX].pixel, + NULL); + + if (changeArmColour) + XtVaSetValues ((Widget) widget, + XmNarmColor, g_itemColors[wxSELE_INDEX].pixel, + NULL); +} + +#endif + // __WXMOTIF__ + +bool wxWindowIsVisible(Window win) +{ + XWindowAttributes wa; + XGetWindowAttributes(wxGlobalDisplay(), win, &wa); + + return (wa.map_state == IsViewable); +} diff --git a/src/motif/window.cpp b/src/motif/window.cpp index 0314491eb7..15a5f5240f 100644 --- a/src/motif/window.cpp +++ b/src/motif/window.cpp @@ -404,7 +404,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id, wxWindow::~wxWindow() { if (g_captureWindow == this) - g_captureWindow = NULL; + g_captureWindow = NULL; m_isBeingDeleted = TRUE; @@ -437,7 +437,7 @@ wxWindow::~wxWindow() if (w) { XtDestroyWidget(w); - m_drawingArea = (WXWidget) 0; + m_drawingArea = (WXWidget) 0; } // Only if we're _really_ a canvas (not a dialog box/panel) @@ -449,18 +449,18 @@ wxWindow::~wxWindow() if (m_hScrollBar) { wxDeleteWindowFromTable((Widget) m_hScrollBar); - XtUnmanageChild((Widget) m_hScrollBar); + XtUnmanageChild((Widget) m_hScrollBar); } if (m_vScrollBar) { wxDeleteWindowFromTable((Widget) m_vScrollBar); - XtUnmanageChild((Widget) m_vScrollBar); + XtUnmanageChild((Widget) m_vScrollBar); } if (m_hScrollBar) - XtDestroyWidget((Widget) m_hScrollBar); + XtDestroyWidget((Widget) m_hScrollBar); if (m_vScrollBar) - XtDestroyWidget((Widget) m_vScrollBar); + XtDestroyWidget((Widget) m_vScrollBar); UnmanageAndDestroy(m_scrolledWindow); @@ -958,12 +958,12 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) while (cnode) { wxWindow *child = (wxWindow*) cnode->Data(); - int sx = 0; - int sy = 0; - child->GetSize( &sx, &sy ); + int sx = 0; + int sy = 0; + child->GetSize( &sx, &sy ); wxPoint pos( child->GetPosition() ); - child->SetSize( pos.x + dx, pos.y + dy, sx, sy, wxSIZE_ALLOW_MINUS_ONE ); - cnode = cnode->Next(); + child->SetSize( pos.x + dx, pos.y + dy, sx, sy, wxSIZE_ALLOW_MINUS_ONE ); + cnode = cnode->Next(); } int x1 = (dx >= 0) ? x : x - dx; @@ -1207,15 +1207,15 @@ bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y) XmMenuPosition (menuWidget, &event); XtManageChild (menuWidget); - XEvent x_event; - // The ID of a pop-up menu is 1 when active, and is set to 0 by the + XEvent x_event; + // The ID of a pop-up menu is 1 when active, and is set to 0 by the // idle-time destroy routine. - // Waiting until this ID changes causes this function to block until + // Waiting until this ID changes causes this function to block until // the menu has been dismissed and the widgets cleaned up. // In other words, once this routine returns, it is safe to delete // the menu object. // Ian Brown - while (menu->GetId() == 1) + while (menu->GetId() == 1) { XtAppNextEvent( (XtAppContext) wxTheApp->GetAppContext(), &x_event); @@ -1732,7 +1732,7 @@ bool wxWindow::ProcessAccelerator(wxKeyEvent& event) if (entry->MatchesEvent(event)) { // Bingo, we have a match. Now find a control that matches the - // entry command id. + // entry command id. // Need to go up to the top of the window hierarchy, since it might // be e.g. a menu item @@ -2201,33 +2201,8 @@ static void wxCanvasInputEvent(Widget drawingArea, } case KeyPress: { - KeySym keySym; - static char buf[100]; -#if 0 - XComposeStatus compose; - (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, &compose); -#endif // 0 - - (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, NULL); - int id = wxCharCodeXToWX (keySym); - - wxEventType eventType = wxEVT_CHAR; - - wxKeyEvent event (eventType); - - if (local_event.xkey.state & ShiftMask) - event.m_shiftDown = TRUE; - if (local_event.xkey.state & ControlMask) - event.m_controlDown = TRUE; - if (local_event.xkey.state & Mod3Mask) - event.m_altDown = TRUE; - if (local_event.xkey.state & Mod1Mask) - event.m_metaDown = TRUE; - event.SetEventObject(canvas); - event.m_keyCode = id; - event.SetTimestamp(local_event.xkey.time); - - if (id > -1) + wxKeyEvent event (wxEVT_CHAR); + if (wxTranslateKeyEvent (event, canvas, (Widget) 0, &local_event)) { // Implement wxFrame::OnCharHook by checking ancestor. wxWindow *parent = canvas->GetParent(); @@ -2256,26 +2231,8 @@ static void wxCanvasInputEvent(Widget drawingArea, } case KeyRelease: { - static char buf[100]; - KeySym keySym; - (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, NULL); - int id = wxCharCodeXToWX (keySym); - wxKeyEvent event (wxEVT_KEY_UP); - - if (local_event.xkey.state & ShiftMask) - event.m_shiftDown = TRUE; - if (local_event.xkey.state & ControlMask) - event.m_controlDown = TRUE; - if (local_event.xkey.state & Mod3Mask) - event.m_altDown = TRUE; - if (local_event.xkey.state & Mod1Mask) - event.m_metaDown = TRUE; - event.SetEventObject(canvas); - event.m_keyCode = id; - event.SetTimestamp(local_event.xkey.time); - - if (id > -1) + if (wxTranslateKeyEvent (event, canvas, (Widget) 0, &local_event)) { canvas->GetEventHandler()->ProcessEvent (event); } @@ -2828,6 +2785,10 @@ bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Widget WXUNUSED(wid #endif // 0 (void) XLookupString ((XKeyEvent *) xevent, buf, 20, &keySym, NULL); int id = wxCharCodeXToWX (keySym); + // id may be WXK_xxx code - these are outside ASCII range, so we + // can't just use toupper() on id + if (id >= 'a' && id <= 'z') + id = toupper(id); if (xevent->xkey.state & ShiftMask) wxevent.m_shiftDown = TRUE; @@ -3075,8 +3036,8 @@ wxPoint wxGetMousePosition() unsigned int maskReturn; XQueryPointer (display, - rootWindow, - &rootReturn, + rootWindow, + &rootReturn, &childReturn, &rootX, &rootY, &winX, &winY, &maskReturn); return wxPoint(rootX, rootY); diff --git a/src/motif/xmcombo/xmcombo.c b/src/motif/xmcombo/xmcombo.c index b5e148b629..6519996ac5 100644 --- a/src/motif/xmcombo/xmcombo.c +++ b/src/motif/xmcombo/xmcombo.c @@ -1268,24 +1268,32 @@ static struct { String Resource; int Flag; } static int UpdateColors(XmComboBoxWidget w, int flags) { - Pixel Color; + Pixel Color, White, Black, EditCol; int i, size = XtNumber(ColorResources); Widget ScrolledWin, ScrollBar; ScrolledWin = XtParent(w->combobox.ListCtrl); XtVaGetValues(ScrolledWin, XmNverticalScrollBar, &ScrollBar, NULL); + White = WhitePixel(XtDisplay(w), WidgetToScreen((Widget) w)); + Black = BlackPixel(XtDisplay(w), WidgetToScreen((Widget) w)); for ( i=0; icombobox.ListCtrl, - ColorResources[i].Resource, Color, NULL); - XtVaSetValues(ScrolledWin, - ColorResources[i].Resource, Color, NULL); XtVaSetValues(ScrollBar, ColorResources[i].Resource, Color, NULL); - XtVaSetValues(w->combobox.EditCtrl, - ColorResources[i].Resource, Color, NULL); + XtVaSetValues(w->combobox.ListCtrl, + ColorResources[i].Resource, EditCol, NULL); + XtVaSetValues(w->combobox.EditCtrl, + ColorResources[i].Resource, EditCol, NULL); + XtVaSetValues(ScrolledWin, + ColorResources[i].Resource, Color, NULL); XtVaSetValues(w->combobox.LabelCtrl, ColorResources[i].Resource, Color, NULL); XtVaSetValues(w->combobox.ArrowCtrl, diff --git a/src/msw/app.cpp b/src/msw/app.cpp index cfaf7b34e9..dbdba5bbe8 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -712,7 +712,7 @@ int wxEntry(WXHINSTANCE hInstance, if ( enterLoop ) { // run the main loop - retValue = wxTheApp->OnRun(); + wxTheApp->OnRun(); } else { @@ -739,7 +739,7 @@ int wxEntry(WXHINSTANCE hInstance, } } - wxTheApp->OnExit(); + retValue = wxTheApp->OnExit(); wxEntryCleanup(); @@ -1066,15 +1066,21 @@ bool wxApp::ProcessMessage(WXMSG *wxmsg) return FALSE; } +// this is a temporary hack and will be replaced by using wxEventLoop in the +// future +// +// it is needed to allow other event loops (currently only one: the modal +// dialog one) to reset the OnIdle() semaphore because otherwise OnIdle() +// wouldn't do anything while a modal dialog shown from OnIdle() call is shown. +bool wxIsInOnIdleFlag = FALSE; + void wxApp::OnIdle(wxIdleEvent& event) { - static bool s_inOnIdle = FALSE; - // Avoid recursion (via ProcessEvent default case) - if ( s_inOnIdle ) + if ( wxIsInOnIdleFlag ) return; - s_inOnIdle = TRUE; + wxIsInOnIdleFlag = TRUE; // If there are pending events, we must process them: pending events // are either events to the threads other than main or events posted @@ -1109,7 +1115,7 @@ void wxApp::OnIdle(wxIdleEvent& event) event.RequestMore(TRUE); } - s_inOnIdle = FALSE; + wxIsInOnIdleFlag = FALSE; } // Send idle event to all top-level windows diff --git a/src/msw/brush.cpp b/src/msw/brush.cpp index c201a55748..e47a77f3b1 100644 --- a/src/msw/brush.cpp +++ b/src/msw/brush.cpp @@ -293,11 +293,11 @@ wxBitmap *wxBrush::GetStipple() const return M_BRUSHDATA->GetStipple(); } -WXHBRUSH wxBrush::GetResourceHandle() const +WXHANDLE wxBrush::GetResourceHandle() const { wxCHECK_MSG( Ok(), FALSE, _T("invalid brush") ); - return (WXHBRUSH)M_BRUSHDATA->GetHBRUSH(); + return (WXHANDLE)M_BRUSHDATA->GetHBRUSH(); } // ---------------------------------------------------------------------------- diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 6f5cb6782d..81c588c5be 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -352,9 +352,18 @@ bool wxButton::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) bool processed = FALSE; switch ( param ) { + // NOTE: Apparently older versions (NT 4?) of the common controls send + // BN_DOUBLECLICKED but not a second BN_CLICKED for owner-drawn + // buttons, so in order to send two EVET_BUTTON events we should + // catch both types. Currently (Feb 2003) up-to-date versions of + // win98, win2k and winXP all send two BN_CLICKED messages for + // all button types, so we don't catch BN_DOUBLECLICKED anymore + // in order to not get 3 EVT_BUTTON events. If this is a problem + // then we need to figure out which version of the comctl32 changed + // this behaviour and test for it. + case 1: // message came from an accelerator case BN_CLICKED: // normal buttons send this - case BN_DOUBLECLICKED: // owner-drawn ones also send this processed = SendClickEvent(); break; } diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index bc4e9e8393..f1e29a2395 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp +// Name: msw/checkbox.cpp // Purpose: wxCheckBox // Author: Julian Smart // Modified by: @@ -39,17 +39,16 @@ #include "wx/msw/private.h" -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) +#ifndef BST_CHECKED + #define BST_CHECKED 0x0001 +#endif // ============================================================================ // implementation // ============================================================================ +IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) + // ---------------------------------------------------------------------------- // wxCheckBox // ---------------------------------------------------------------------------- @@ -123,87 +122,15 @@ void wxCheckBox::SetValue(bool val) SendMessage(GetHwnd(), BM_SETCHECK, val, 0); } -#ifndef BST_CHECKED -#define BST_CHECKED 0x0001 -#endif - bool wxCheckBox::GetValue() const { -#ifdef __WIN32__ - return (SendMessage(GetHwnd(), BM_GETCHECK, 0, 0) == BST_CHECKED); -#else - return ((0x001 & SendMessage(GetHwnd(), BM_GETCHECK, 0, 0)) == 0x001); -#endif + return (SendMessage(GetHwnd(), BM_GETCHECK, 0, 0) & BST_CHECKED) != 0; } -void wxCheckBox::Command (wxCommandEvent & event) +void wxCheckBox::Command(wxCommandEvent& event) { - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -// ---------------------------------------------------------------------------- -// wxBitmapCheckBox -// ---------------------------------------------------------------------------- - -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *WXUNUSED(label), - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); -#if wxUSE_VALIDATORS - SetValidator(validator); -#endif // wxUSE_VALIDATORS - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - checkWidth = -1 ; - checkHeight = -1 ; - long msStyle = CHECK_FLAGS; - - HWND wx_button = CreateWindowEx(MakeExtendedStyle(m_windowStyle), CHECK_CLASS, wxT("toggle"), - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - -#if wxUSE_CTL3D - if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) - { - Ctl3dSubclassCtl(wx_button); - m_useCtl3D = TRUE; - } -#endif - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)wx_button); - - SetSize(x, y, width, height); - - ShowWindow(wx_button, SW_SHOW); - - return TRUE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap& WXUNUSED(bitmap)) -{ - wxFAIL_MSG(wxT("not implemented")); + SetValue(event.GetInt() != 0); + ProcessCommand(event); } #endif // wxUSE_CHECKBOX diff --git a/src/msw/checklst.cpp b/src/msw/checklst.cpp index d72f1c609e..1b95e98a2a 100644 --- a/src/msw/checklst.cpp +++ b/src/msw/checklst.cpp @@ -73,7 +73,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) class wxCheckListBoxItem : public wxOwnerDrawn { -friend class wxCheckListBox; +friend class WXDLLEXPORT wxCheckListBox; public: // ctor wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex); @@ -93,7 +93,7 @@ private: }; wxCheckListBoxItem::wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex) - : wxOwnerDrawn("", TRUE) // checkable + : wxOwnerDrawn(wxEmptyString, TRUE) // checkable { m_bChecked = FALSE; m_pParent = pParent; @@ -298,7 +298,7 @@ bool wxCheckListBox::Create(wxWindow *parent, wxWindowID id, return wxListBox::Create(parent, id, pos, size, n, choices, style | wxLB_OWNERDRAW, validator, name); } - + void wxCheckListBox::Delete(int N) @@ -329,7 +329,7 @@ bool wxCheckListBox::SetFont( const wxFont &font ) // -------------------- // create a check list box item -wxOwnerDrawn *wxCheckListBox::CreateItem(size_t nIndex) +wxOwnerDrawn *wxCheckListBox::CreateLboxItem(size_t nIndex) { wxCheckListBoxItem *pItem = new wxCheckListBoxItem(this, nIndex); return pItem; @@ -408,15 +408,19 @@ void wxCheckListBox::OnKeyDown(wxKeyEvent& event) if ( oper != None ) { wxArrayInt selections; - int count; + int count = 0; if ( HasMultipleSelection() ) { count = GetSelections(selections); } else { - count = 1; - selections.Add(GetSelection()); + int sel = GetSelection(); + if (sel != -1) + { + count = 1; + selections.Add(sel); + } } for ( int i = 0; i < count; i++ ) diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index f57a180cac..58a2f6a17d 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -193,9 +193,31 @@ int wxChoice::FindString(const wxString& s) const void wxChoice::SetString(int n, const wxString& s) { - wxCHECK_RET( (n>=0)&&(n= 0 && n < GetCount(), + wxT("invalid item index in wxChoice::SetString") ); + + // we have to delete and add back the string as there is no way to change a + // string in place + + // we need to preserve the client data + void *data; + if ( m_clientDataItemsType != wxClientData_None ) + { + data = DoGetItemClientData(n); + } + else // no client data + { + data = NULL; + } + + ::SendMessage(GetHwnd(), CB_DELETESTRING, n, 0); + ::SendMessage(GetHwnd(), CB_INSERTSTRING, n, (LPARAM)s.c_str() ); + + if ( data ) + { + DoSetItemClientData(n, data); + } + //else: it's already NULL by default } wxString wxChoice::GetString(int n) const @@ -228,7 +250,8 @@ wxString wxChoice::GetString(int n) const void wxChoice::DoSetItemClientData( int n, void* clientData ) { - if ( SendMessage(GetHwnd(), CB_SETITEMDATA, n, (LPARAM)clientData) == CB_ERR ) + if ( ::SendMessage(GetHwnd(), CB_SETITEMDATA, + n, (LPARAM)clientData) == CB_ERR ) { wxLogLastError(wxT("CB_SETITEMDATA")); } diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 283eab16ac..4acd9c73bd 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -33,6 +33,8 @@ #ifndef WX_PRECOMP #include "wx/settings.h" #include "wx/log.h" + // for wxEVT_COMMAND_TEXT_ENTER + #include "wx/textctrl.h" #endif #include "wx/combobox.h" @@ -133,7 +135,7 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd, wxCHECK_MSG( win, 0, _T("should have a parent") ); NMHDR* hdr = (NMHDR *)lParam; - if ( (int)hdr->code == TTN_NEEDTEXT ) + if ( hdr->code == TTN_NEEDTEXT ) { wxToolTip *tooltip = win->GetToolTip(); if ( tooltip ) @@ -201,6 +203,17 @@ bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam) switch ( msg ) { case WM_CHAR: + // for compatibility with wxTextCtrl, generate a special message + // when Enter is pressed + if ( wParam == VK_RETURN ) + { + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); + InitCommandEvent(event); + event.SetString(GetValue()); + event.SetInt(GetSelection()); + ProcessCommand(event); + } + return HandleChar(wParam, lParam, TRUE /* isASCII */); case WM_KEYDOWN: @@ -371,63 +384,28 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, return TRUE; } -// TODO: update and clear all this horrible mess (VZ) - void wxComboBox::SetValue(const wxString& value) { - // If newlines are denoted by just 10, must stick 13 in front. - size_t singletons = 0; - size_t len = value.Length(); - size_t i; - for (i = 0; i < len; i ++) - { - if ((i > 0) && (value[i] == 10) && (value[i-1] != 13)) - singletons ++; - } - if (singletons > 0) - { - wxString tmp; - tmp.Alloc(len + singletons); - size_t j = 0; - for (i = 0; i < len; i ++) - { - if ((i > 0) && (value[i] == 10) && (value[i-1] != 13)) - { - tmp[j] = 13; - j ++; - } - tmp[j] = value[i]; - j ++; - } - if (GetWindowStyle() & wxCB_READONLY) - SetStringSelection(tmp); + if ( HasFlag(wxCB_READONLY) ) + SetStringSelection(value); else - SetWindowText(GetHwnd(), tmp.c_str()); - } - else - if (GetWindowStyle() & wxCB_READONLY) - SetStringSelection(value); - else - SetWindowText(GetHwnd(), value.c_str()); + SetWindowText(GetHwnd(), value.c_str()); } // Clipboard operations void wxComboBox::Copy() { - HWND hWnd = GetHwnd(); - SendMessage(hWnd, WM_COPY, 0, 0L); + SendMessage(GetHwnd(), WM_COPY, 0, 0L); } void wxComboBox::Cut() { - HWND hWnd = GetHwnd(); - SendMessage(hWnd, WM_CUT, 0, 0L); + SendMessage(GetHwnd(), WM_CUT, 0, 0L); } void wxComboBox::Paste() { - HWND hWnd = GetHwnd(); - SendMessage(hWnd, WM_PASTE, 0, 0L); + SendMessage(GetHwnd(), WM_PASTE, 0, 0L); } void wxComboBox::SetEditable(bool WXUNUSED(editable)) diff --git a/src/msw/data.cpp b/src/msw/data.cpp index 8642adb452..65120bb896 100644 --- a/src/msw/data.cpp +++ b/src/msw/data.cpp @@ -22,6 +22,7 @@ #ifndef WX_PRECOMP #include "wx/wx.h" +#include "wx/treectrl.h" #endif #include "wx/prntbase.h" @@ -103,48 +104,48 @@ wxFont wxNullFont; wxColour wxNullColour; // Default window names -const wxChar *wxControlNameStr = wxT("control"); -const wxChar *wxButtonNameStr = wxT("button"); -const wxChar *wxCanvasNameStr = wxT("canvas"); -const wxChar *wxCheckBoxNameStr = wxT("check"); -const wxChar *wxChoiceNameStr = wxT("choice"); -const wxChar *wxComboBoxNameStr = wxT("comboBox"); -const wxChar *wxDialogNameStr = wxT("dialog"); -const wxChar *wxFrameNameStr = wxT("frame"); -const wxChar *wxGaugeNameStr = wxT("gauge"); -const wxChar *wxStaticBoxNameStr = wxT("groupBox"); -const wxChar *wxListBoxNameStr = wxT("listBox"); -const wxChar *wxStaticTextNameStr = wxT("message"); -const wxChar *wxStaticBitmapNameStr = wxT("message"); -const wxChar *wxMultiTextNameStr = wxT("multitext"); -const wxChar *wxPanelNameStr = wxT("panel"); -const wxChar *wxRadioBoxNameStr = wxT("radioBox"); -const wxChar *wxRadioButtonNameStr = wxT("radioButton"); -const wxChar *wxBitmapRadioButtonNameStr = wxT("radioButton"); -const wxChar *wxScrollBarNameStr = wxT("scrollBar"); -const wxChar *wxSliderNameStr = wxT("slider"); -const wxChar *wxStaticNameStr = wxT("static"); -const wxChar *wxTextCtrlWindowNameStr = wxT("textWindow"); -const wxChar *wxTextCtrlNameStr = wxT("text"); -const wxChar *wxVirtListBoxNameStr = wxT("virtListBox"); -const wxChar *wxButtonBarNameStr = wxT("buttonbar"); -const wxChar *wxEnhDialogNameStr = wxT("Shell"); -const wxChar *wxToolBarNameStr = wxT("toolbar"); -const wxChar *wxStatusLineNameStr = wxT("status_line"); -const wxChar *wxGetTextFromUserPromptStr = wxT("Input Text"); -const wxChar *wxMessageBoxCaptionStr = wxT("Message"); -const wxChar *wxFileSelectorPromptStr = wxT("Select a file"); -const wxChar *wxFileSelectorDefaultWildcardStr = wxT("*.*"); -const wxChar *wxTreeCtrlNameStr = wxT("treeCtrl"); -const wxChar *wxDirDialogNameStr = wxT("wxDirCtrl"); -const wxChar *wxDirDialogDefaultFolderStr = wxT("/"); +WXDLLEXPORT_DATA(const wxChar *) wxControlNameStr = wxT("control"); +WXDLLEXPORT_DATA(const wxChar *) wxButtonNameStr = wxT("button"); +WXDLLEXPORT_DATA(const wxChar *) wxCanvasNameStr = wxT("canvas"); +WXDLLEXPORT_DATA(const wxChar *) wxCheckBoxNameStr = wxT("check"); +WXDLLEXPORT_DATA(const wxChar *) wxChoiceNameStr = wxT("choice"); +WXDLLEXPORT_DATA(const wxChar *) wxComboBoxNameStr = wxT("comboBox"); +WXDLLEXPORT_DATA(const wxChar *) wxDialogNameStr = wxT("dialog"); +WXDLLEXPORT_DATA(const wxChar *) wxFrameNameStr = wxT("frame"); +WXDLLEXPORT_DATA(const wxChar *) wxGaugeNameStr = wxT("gauge"); +WXDLLEXPORT_DATA(const wxChar *) wxStaticBoxNameStr = wxT("groupBox"); +WXDLLEXPORT_DATA(const wxChar *) wxListBoxNameStr = wxT("listBox"); +WXDLLEXPORT_DATA(const wxChar *) wxStaticTextNameStr = wxT("message"); +WXDLLEXPORT_DATA(const wxChar *) wxStaticBitmapNameStr = wxT("message"); +WXDLLEXPORT_DATA(const wxChar *) wxMultiTextNameStr = wxT("multitext"); +WXDLLEXPORT_DATA(const wxChar *) wxPanelNameStr = wxT("panel"); +WXDLLEXPORT_DATA(const wxChar *) wxRadioBoxNameStr = wxT("radioBox"); +WXDLLEXPORT_DATA(const wxChar *) wxRadioButtonNameStr = wxT("radioButton"); +WXDLLEXPORT_DATA(const wxChar *) wxBitmapRadioButtonNameStr = wxT("radioButton"); +WXDLLEXPORT_DATA(const wxChar *) wxScrollBarNameStr = wxT("scrollBar"); +WXDLLEXPORT_DATA(const wxChar *) wxSliderNameStr = wxT("slider"); +WXDLLEXPORT_DATA(const wxChar *) wxStaticNameStr = wxT("static"); +WXDLLEXPORT_DATA(const wxChar *) wxTextCtrlWindowNameStr = wxT("textWindow"); +WXDLLEXPORT_DATA(const wxChar *) wxTextCtrlNameStr = wxT("text"); +WXDLLEXPORT_DATA(const wxChar *) wxVirtListBoxNameStr = wxT("virtListBox"); +WXDLLEXPORT_DATA(const wxChar *) wxButtonBarNameStr = wxT("buttonbar"); +WXDLLEXPORT_DATA(const wxChar *) wxEnhDialogNameStr = wxT("Shell"); +WXDLLEXPORT_DATA(const wxChar *) wxToolBarNameStr = wxT("toolbar"); +WXDLLEXPORT_DATA(const wxChar *) wxStatusLineNameStr = wxT("status_line"); +WXDLLEXPORT_DATA(const wxChar *) wxGetTextFromUserPromptStr = wxT("Input Text"); +WXDLLEXPORT_DATA(const wxChar *) wxMessageBoxCaptionStr = wxT("Message"); +WXDLLEXPORT_DATA(const wxChar *) wxFileSelectorPromptStr = wxT("Select a file"); +WXDLLEXPORT_DATA(const wxChar *) wxFileSelectorDefaultWildcardStr = wxT("*.*"); +WXDLLEXPORT_DATA(const wxChar *) wxTreeCtrlNameStr = wxT("treeCtrl"); +WXDLLEXPORT_DATA(const wxChar *) wxDirDialogNameStr = wxT("wxDirCtrl"); +WXDLLEXPORT_DATA(const wxChar *) wxDirDialogDefaultFolderStr = wxT("/"); // See wx/utils.h -const wxChar *wxFloatToStringStr = wxT("%.2f"); -const wxChar *wxDoubleToStringStr = wxT("%.2f"); +WXDLLEXPORT_DATA(const wxChar *) wxFloatToStringStr = wxT("%.2f"); +WXDLLEXPORT_DATA(const wxChar *) wxDoubleToStringStr = wxT("%.2f"); #ifdef __WXMSW__ -const wxChar *wxUserResourceStr = wxT("TEXT"); +WXDLLEXPORT_DATA(const wxChar *) wxUserResourceStr = wxT("TEXT"); #endif diff --git a/src/msw/dcclient.cpp b/src/msw/dcclient.cpp index 720398ea5d..687253ddc8 100644 --- a/src/msw/dcclient.cpp +++ b/src/msw/dcclient.cpp @@ -276,9 +276,10 @@ wxPaintDCInfo *wxPaintDC::FindInCache(size_t *index) const size_t nCache = ms_cache.GetCount(); for ( size_t n = 0; n < nCache; n++ ) { - info = &ms_cache[n]; - if ( info->hwnd == m_canvas->GetHWND() ) + wxPaintDCInfo *info1 = &ms_cache[n]; + if ( info1->hwnd == m_canvas->GetHWND() ) { + info = info1; if ( index ) *index = n; break; diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index ed38d9fe64..07c5a86513 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -435,7 +435,7 @@ void wxPrinterDC::DoDrawBitmap(const wxBitmap &bmp, memset( info, 0, sizeof( BITMAPINFOHEADER ) ); #if wxUSE_DRAWBITMAP_24BITS - int iBitsSize = ((width + 3 ) & ~3 ) * height * 3; + int iBitsSize = (((width * 3) + 3 ) & ~3 ) * height; #else int iBitsSize = ((width + 3 ) & ~3 ) * height ; #endif @@ -530,7 +530,11 @@ bool wxPrinterDC::DoBlit(wxCoord xdest, wxCoord ydest, height = bmp.GetHeight(); BITMAPINFO *info = (BITMAPINFO *) malloc( sizeof( BITMAPINFOHEADER ) + 256 * sizeof(RGBQUAD ) ); - int iBitsSize = ((width + 3 ) & ~3 ) * height; +#if wxUSE_DRAWBITMAP_24BITS + int iBitsSize = (((width * 3) + 3 ) & ~3 ) * height; +#else + int iBitsSize = ((width + 3 ) & ~3 ) * height ; +#endif void* bits = malloc( iBitsSize ); @@ -540,7 +544,11 @@ bool wxPrinterDC::DoBlit(wxCoord xdest, wxCoord ydest, info->bmiHeader.biWidth = width; info->bmiHeader.biHeight = height; info->bmiHeader.biPlanes = 1; +#if wxUSE_DRAWBITMAP_24BITS + info->bmiHeader.biBitCount = 24; +#else info->bmiHeader.biBitCount = 8; +#endif info->bmiHeader.biCompression = BI_RGB; ScreenHDC display; diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp index 748ef0595f..214bfb1dd4 100644 --- a/src/msw/dialog.cpp +++ b/src/msw/dialog.cpp @@ -247,6 +247,12 @@ void wxDialog::DoShowModal() m_windowDisabler = new wxWindowDisabler(this); + // before entering the modal loop, reset the "is in OnIdle()" flag (see + // comment in app.cpp) + extern bool wxIsInOnIdleFlag; + bool wasInOnIdle = wxIsInOnIdleFlag; + wxIsInOnIdleFlag = FALSE; + // enter the modal loop while ( IsModalShowing() ) { @@ -261,6 +267,8 @@ void wxDialog::DoShowModal() wxTheApp->DoMessage(); } + wxIsInOnIdleFlag = wasInOnIdle; + // and restore focus // Note that this code MUST NOT access the dialog object's data // in case the object has been deleted (which will be the case @@ -296,6 +304,14 @@ bool wxDialog::Show(bool show) if ( show ) { + // dialogs don't get WM_SIZE message after creation unlike most (all?) + // other windows and so could start their life non laid out correctly + // if we didn't call Layout() from here + // + // NB: normally we should call it just the first time but doing it + // every time is simpler than keeping a flag + Layout(); + // usually will result in TransferDataToWindow() being called InitDialog(); } diff --git a/src/msw/dir.cpp b/src/msw/dir.cpp index 7d505e56bc..6e51506f8b 100644 --- a/src/msw/dir.cpp +++ b/src/msw/dir.cpp @@ -458,3 +458,36 @@ bool wxDir::GetNext(wxString *filename) const return M_DIR->Read(filename); } + +// ---------------------------------------------------------------------------- +// wxGetDirectoryTimes: used by wxFileName::GetTimes() +// ---------------------------------------------------------------------------- + +#ifdef __WIN32__ + +extern bool +wxGetDirectoryTimes(const wxString& dirname, + FILETIME *ftAccess, FILETIME *ftCreate, FILETIME *ftMod) +{ + // FindFirst() is going to fail + wxASSERT_MSG( !dirname.empty() && dirname.Last() != _T('\\'), + _T("incorrect directory name format in wxGetDirectoryTimes") ); + + FIND_STRUCT fs; + FIND_DATA fd = FindFirst(dirname, &fs); + if ( !IsFindDataOk(fd) ) + { + return FALSE; + } + + *ftAccess = fs.ftLastAccessTime; + *ftCreate = fs.ftCreationTime; + *ftMod = fs.ftLastWriteTime; + + FindClose(fd); + + return TRUE; +} + +#endif // __WIN32__ + diff --git a/src/msw/dragimag.cpp b/src/msw/dragimag.cpp index b80fac16b7..ae349c83fd 100644 --- a/src/msw/dragimag.cpp +++ b/src/msw/dragimag.cpp @@ -129,8 +129,12 @@ bool wxDragImage::Create(const wxBitmap& image, const wxCursor& cursor) flags = ILC_COLOR32; bool mask = (image.GetMask() != 0); - if ( mask ) - flags |= ILC_MASK; + + // Curiously, even if the image doesn't have a mask, + // we still have to use ILC_MASK or the image won't show + // up when dragged. +// if ( mask ) + flags |= ILC_MASK; m_hImageList = (WXHIMAGELIST) ImageList_Create(image.GetWidth(), image.GetHeight(), flags, 1, 1); diff --git a/src/msw/filedlg.cpp b/src/msw/filedlg.cpp index 94a4e60b58..7df3db8961 100644 --- a/src/msw/filedlg.cpp +++ b/src/msw/filedlg.cpp @@ -35,6 +35,7 @@ #include "wx/msgdlg.h" #include "wx/dialog.h" #include "wx/filedlg.h" + #include "wx/filefn.h" #include "wx/intl.h" #include "wx/log.h" #include "wx/app.h" @@ -61,7 +62,7 @@ // ---------------------------------------------------------------------------- #ifdef __WIN32__ -# define wxMAXPATH 4096 +# define wxMAXPATH 65534 #else # define wxMAXPATH 1024 #endif @@ -197,9 +198,13 @@ wxString wxFileSelectorEx(const wxChar *title, return filename; } -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& WXUNUSED(pos)) +wxFileDialog::wxFileDialog(wxWindow *parent, + const wxString& message, + const wxString& defaultDir, + const wxString& defaultFileName, + const wxString& wildCard, + long style, + const wxPoint& WXUNUSED(pos)) { m_message = message; m_dialogStyle = style; @@ -228,6 +233,14 @@ void wxFileDialog::GetPaths(wxArrayString& paths) const } } +void wxFileDialog::SetPath(const wxString& path) +{ + wxString ext; + wxSplitPath(path, &m_dir, &m_fileName, &ext); + if ( !ext.empty() ) + m_fileName << _T('.') << ext; +} + int wxFileDialog::ShowModal() { HWND hWnd = 0; diff --git a/src/msw/files.lst b/src/msw/files.lst index a4d6e527bf..64d30bf394 100644 --- a/src/msw/files.lst +++ b/src/msw/files.lst @@ -288,7 +288,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -457,6 +456,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -658,7 +658,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -702,7 +702,6 @@ ALL_HEADERS = \ protocol/protocol.h COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -988,6 +987,7 @@ GUI_LOWLEVEL_OBJS = \ dcprint.o \ dcscreen.o \ dde.o \ + dialup.o \ dib.o \ evtloop.o \ font.o \ @@ -995,8 +995,12 @@ GUI_LOWLEVEL_OBJS = \ fontutil.o \ gdiimage.o \ gdiobj.o \ + glcanvas.o \ + helpbest.o \ + helpchm.o \ + helpwin.o \ icon.o \ - imaglist.o \ + joystick.o \ main.o \ palette.o \ pen.o \ @@ -1006,11 +1010,14 @@ GUI_LOWLEVEL_OBJS = \ registry.o \ settings.o \ snglinst.o \ + taskbar.o \ thread.o \ timer.o \ + tooltip.o \ toplevel.o \ utils.o \ utilsexc.o \ + wave.o \ window.o HTMLOBJS = \ @@ -1030,7 +1037,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/msw/font.cpp b/src/msw/font.cpp index 4cd6532a0c..dc601f5af8 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -742,9 +742,9 @@ bool wxFont::FreeResource(bool WXUNUSED(force)) return FALSE; } -WXHANDLE wxFont::GetResourceHandle() +WXHANDLE wxFont::GetResourceHandle() const { - return GetHFONT(); + return (WXHANDLE)GetHFONT(); } WXHFONT wxFont::GetHFONT() const diff --git a/src/msw/gdiimage.cpp b/src/msw/gdiimage.cpp index 6f904e43d7..1b5000fa5e 100644 --- a/src/msw/gdiimage.cpp +++ b/src/msw/gdiimage.cpp @@ -208,7 +208,7 @@ bool wxGDIImage::FreeResource(bool WXUNUSED(force)) return TRUE; } -WXHANDLE wxGDIImage::GetResourceHandle() +WXHANDLE wxGDIImage::GetResourceHandle() const { return GetHandle(); } @@ -424,6 +424,27 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon, nameReal = name.BeforeLast(wxT(';')); } +#if 0 + // If we don't know what size icon we're looking for, + // try to find out what's there. + // Unfortunately this doesn't work, because ExtractIconEx + // will scale the icon to the 'desired' size, even if that + // size of icon isn't explicitly stored. So we would have + // to parse the icon file outselves. + if ( desiredWidth == -1 && + desiredHeight == -1) + { + // Try loading a large icon first + if ( ::ExtractIconEx(nameReal, iconIndex, &hicon, NULL, 1) == 1) + { + } + // Then try loading a small icon + else if ( ::ExtractIconEx(nameReal, iconIndex, NULL, &hicon, 1) == 1) + { + } + } + else +#endif // were we asked for a large icon? if ( desiredWidth == ::GetSystemMetrics(SM_CXICON) && desiredHeight == ::GetSystemMetrics(SM_CYICON) ) diff --git a/src/msw/glcanvas.cpp b/src/msw/glcanvas.cpp index 5cbfd68cfb..44ac48b0b9 100644 --- a/src/msw/glcanvas.cpp +++ b/src/msw/glcanvas.cpp @@ -104,7 +104,7 @@ void wxGLContext::SetCurrent() */ } -void wxGLContext::SetColour(const char *colour) +void wxGLContext::SetColour(const wxChar *colour) { float r = 0.0; float g = 0.0; @@ -522,7 +522,7 @@ void wxGLCanvas::SetCurrent() } } -void wxGLCanvas::SetColour(const char *colour) +void wxGLCanvas::SetColour(const wxChar *colour) { if (m_glContext) m_glContext->SetColour(colour); diff --git a/src/msw/gsocket.c b/src/msw/gsocket.c index ed9f746283..dbdbe90fe6 100644 --- a/src/msw/gsocket.c +++ b/src/msw/gsocket.c @@ -712,22 +712,51 @@ GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags) FD_SET(socket->m_fd, &writefds); FD_SET(socket->m_fd, &exceptfds); - /* Check known state first */ - result |= (GSOCK_CONNECTION_FLAG & socket->m_detected & flags); - result |= (GSOCK_LOST_FLAG & socket->m_detected & flags); + /* Check 'sticky' CONNECTION flag first */ + result |= (GSOCK_CONNECTION_FLAG & socket->m_detected); + + /* If we have already detected a LOST event, then don't try + * to do any further processing. + */ + if ((socket->m_detected & GSOCK_LOST_FLAG) != 0) + { + socket->m_establishing = FALSE; + + return (GSOCK_LOST_FLAG & flags); + } /* Try select now */ if (select(socket->m_fd + 1, &readfds, &writefds, &exceptfds, &tv) <= 0) - return result; + { + /* What to do here? */ + return (result & flags); + } /* Check for readability */ if (FD_ISSET(socket->m_fd, &readfds)) { - /* Assume that closure of the socket is always reported via exceptfds */ - if (socket->m_server && socket->m_stream) - result |= (GSOCK_CONNECTION_FLAG & flags); + char c; + + if (recv(socket->m_fd, &c, 1, MSG_PEEK) > 0) + { + result |= GSOCK_INPUT_FLAG; + } else - result |= (GSOCK_INPUT_FLAG & flags); + { + if (socket->m_server && socket->m_stream) + { + result |= GSOCK_CONNECTION_FLAG; + socket->m_detected |= GSOCK_CONNECTION_FLAG; + } + else + { + socket->m_detected = GSOCK_LOST_FLAG; + socket->m_establishing = FALSE; + + /* LOST event: Abort any further processing */ + return (GSOCK_LOST_FLAG & flags); + } + } } /* Check for writability */ @@ -735,23 +764,43 @@ GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags) { if (socket->m_establishing && !socket->m_server) { - result |= (GSOCK_CONNECTION_FLAG & flags); + int error; + SOCKLEN_T len = sizeof(error); + socket->m_establishing = FALSE; - socket->m_detected |= GSOCK_CONNECTION_FLAG; + + getsockopt(socket->m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len); + + if (error) + { + socket->m_detected = GSOCK_LOST_FLAG; + + /* LOST event: Abort any further processing */ + return (GSOCK_LOST_FLAG & flags); + } + else + { + result |= GSOCK_CONNECTION_FLAG; + socket->m_detected |= GSOCK_CONNECTION_FLAG; + } } else - result |= (GSOCK_OUTPUT_FLAG & flags); + { + result |= GSOCK_OUTPUT_FLAG; + } } - /* Check for exceptions and errors */ + /* Check for exceptions and errors (is this useful in Unices?) */ if (FD_ISSET(socket->m_fd, &exceptfds)) { - result |= (GSOCK_LOST_FLAG & flags); socket->m_establishing = FALSE; socket->m_detected = GSOCK_LOST_FLAG; + + /* LOST event: Abort any further processing */ + return (GSOCK_LOST_FLAG & flags); } - return result; + return (result & flags); #else diff --git a/src/msw/helpbest.cpp b/src/msw/helpbest.cpp index 0efbdded53..6fb956a0d7 100644 --- a/src/msw/helpbest.cpp +++ b/src/msw/helpbest.cpp @@ -76,18 +76,18 @@ wxString wxBestHelpController::GetValidFilename( const wxString& filename ) cons switch( m_helpControllerType ) { case wxUseChmHelp: - if( ::wxFileExists( tmp + ".chm" ) ) - return tmp + ".chm"; + if( ::wxFileExists( tmp + wxT(".chm") ) ) + return tmp + wxT(".chm"); return filename; case wxUseHtmlHelp: - if( ::wxFileExists( tmp + ".htb" ) ) - return tmp + ".htb"; - if( ::wxFileExists( tmp + ".zip" ) ) - return tmp + ".zip"; - if( ::wxFileExists( tmp + ".hhp" ) ) - return tmp + ".hhp"; + if( ::wxFileExists( tmp + wxT(".htb") ) ) + return tmp + wxT(".htb"); + if( ::wxFileExists( tmp + wxT(".zip") ) ) + return tmp + wxT(".zip"); + if( ::wxFileExists( tmp + wxT(".hhp") ) ) + return tmp + wxT(".hhp"); return filename; diff --git a/src/msw/helpchm.cpp b/src/msw/helpchm.cpp index 20e0bbc27e..2871a9f782 100644 --- a/src/msw/helpchm.cpp +++ b/src/msw/helpchm.cpp @@ -42,10 +42,10 @@ #ifndef UNICODE typedef HWND ( WINAPI * HTMLHELP )( HWND, LPCSTR, UINT, DWORD ); - #define HTMLHELP_NAME "HtmlHelpA" + #define HTMLHELP_NAME wxT("HtmlHelpA") #else // ANSI typedef HWND ( WINAPI * HTMLHELP )( HWND, LPCWSTR, UINT, DWORD ); - #define HTMLHELP_NAME "HtmlHelpW" + #define HTMLHELP_NAME wxT("HtmlHelpW") #endif // dll symbol handle diff --git a/src/msw/joystick.cpp b/src/msw/joystick.cpp index 1faaa0caf6..1cfed85842 100644 --- a/src/msw/joystick.cpp +++ b/src/msw/joystick.cpp @@ -306,7 +306,7 @@ wxString wxJoystick::GetProductName() const { JOYCAPS joyCaps; if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return wxString(""); + return wxEmptyString; else return wxString(joyCaps.szPname); } diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index 2eeafd8a78..a274222a8a 100644 --- a/src/msw/listbox.cpp +++ b/src/msw/listbox.cpp @@ -93,7 +93,7 @@ class wxListBoxItem : public wxOwnerDrawn { public: - wxListBoxItem(const wxString& str = ""); + wxListBoxItem(const wxString& str = wxEmptyString); }; wxListBoxItem::wxListBoxItem(const wxString& str) : wxOwnerDrawn(str, FALSE) @@ -102,7 +102,7 @@ wxListBoxItem::wxListBoxItem(const wxString& str) : wxOwnerDrawn(str, FALSE) SetMarginWidth(0); } -wxOwnerDrawn *wxListBox::CreateItem(size_t WXUNUSED(n)) +wxOwnerDrawn *wxListBox::CreateLboxItem(size_t WXUNUSED(n)) { return new wxListBoxItem(); } @@ -161,6 +161,10 @@ bool wxListBox::Create(wxWindow *parent, wxASSERT_MSG( !(style & wxLB_MULTIPLE) || !(style & wxLB_EXTENDED), _T("only one of listbox selection modes can be specified") ); + + if ( (m_windowStyle & wxBORDER_MASK) == wxBORDER_DEFAULT ) + m_windowStyle |= wxBORDER_SUNKEN; + if ( m_windowStyle & wxCLIP_SIBLINGS ) wstyle |= WS_CLIPSIBLINGS; @@ -272,7 +276,7 @@ void wxListBox::Delete(int N) SendMessage(GetHwnd(), LB_DELETESTRING, N, 0); m_noItems--; - SetHorizontalExtent(""); + SetHorizontalExtent(wxEmptyString); } int wxListBox::DoAppend(const wxString& item) @@ -282,7 +286,7 @@ int wxListBox::DoAppend(const wxString& item) #if wxUSE_OWNER_DRAWN if ( m_windowStyle & wxLB_OWNERDRAW ) { - wxOwnerDrawn *pNewItem = CreateItem(index); // dummy argument + wxOwnerDrawn *pNewItem = CreateLboxItem(index); // dummy argument pNewItem->SetName(item); m_aItems.Insert(pNewItem, index); ListBox_SetItemData(GetHwnd(), index, pNewItem); @@ -313,16 +317,7 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData) ListBox_AddString(GetHwnd(), choices[i]); if ( clientData ) { -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) - { - wxASSERT_MSG(clientData[i] == NULL, - wxT("Can't use client data with owner-drawn listboxes")); - } - ListBox_SetItemData(GetHwnd(), i, clientData[i]); -#else // !wxUSE_OWNER_DRAWN - ListBox_SetItemData(GetHwnd(), i, clientData[i]); -#endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN + SetClientData(i, clientData[i]); } } @@ -333,7 +328,7 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData) // then create new ones for ( size_t ui = 0; ui < (size_t)m_noItems; ui++ ) { - wxOwnerDrawn *pNewItem = CreateItem(ui); + wxOwnerDrawn *pNewItem = CreateLboxItem(ui); pNewItem->SetName(choices[ui]); m_aItems.Add(pNewItem); ListBox_SetItemData(GetHwnd(), ui, pNewItem); @@ -502,7 +497,7 @@ int wxListBox::GetSelection() const // Find string for position wxString wxListBox::GetString(int N) const { - wxCHECK_MSG( N >= 0 && N < m_noItems, "", + wxCHECK_MSG( N >= 0 && N < m_noItems, wxEmptyString, wxT("invalid index in wxListBox::GetClientData") ); int len = ListBox_GetTextLen(GetHwnd(), N); @@ -529,7 +524,7 @@ wxListBox::DoInsertItems(const wxArrayString& items, int pos) #if wxUSE_OWNER_DRAWN if ( m_windowStyle & wxLB_OWNERDRAW ) { - wxOwnerDrawn *pNewItem = CreateItem(idx); + wxOwnerDrawn *pNewItem = CreateLboxItem(idx); pNewItem->SetName(items[i]); pNewItem->SetFont(GetFont()); m_aItems.Insert(pNewItem, idx); diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 524a9413f4..8b0f7e438f 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -53,6 +53,24 @@ #include "wx/msw/missing.h" + +// ---------------------------------------------------------------------------- +// private globals (yuck!) +// ---------------------------------------------------------------------------- + +// Some versions of comctl32.dll don't do what MSDN says it should and still +// sends LVN_DELETEITEM after LVN_DELETEALLITEMS has returned TRUE. This flag +// will be used to enable us to ignore the LVN_DELETEITEM message in these cases. +// Also note that sometimes when there are large numbers of items in the listctrl +// and items have attribute data then when the data is being deleted a +// LVN_ITEMCHANGING message can be sent that will have a bogus value, causing a +// memory fault. This flag will also be used to ignore those change messages. +// +// 2.5 will have a better fix that avoids the use of a global. It was unavoidable +// for 2.4.x because of binary compatibility concerns. +static bool gs_ignoreChangeDeleteItem = FALSE; + + // ---------------------------------------------------------------------------- // private functions // ---------------------------------------------------------------------------- @@ -104,10 +122,19 @@ public: private: wxMB2WXbuf *m_buf; -#else +#else // !wxUSE_UNICODE wxLV_ITEM(LV_ITEMW &item) { m_item = new LV_ITEM((LV_ITEM&)item); + + // the code below doesn't compile without wxUSE_WCHAR_T and as I don't + // know if it's useful to have it at all (do we ever get Unicode + // notifications in ANSI mode? I don't think so...) I'm not going to + // write alternative implementation right now + // + // but if it is indeed used, we should simply directly use + // ::WideCharToMultiByte() here +#if wxUSE_WCHAR_T if ( (item.mask & LVIF_TEXT) && item.pszText ) { #ifdef __WXWINE__ @@ -119,12 +146,13 @@ private: m_item->pszText = (wxChar*)m_buf->data(); } else +#endif // wxUSE_WCHAR_T m_buf = NULL; } wxLV_ITEM(LV_ITEMA &item) : m_buf(NULL), m_item(&item) {} private: wxWC2WXbuf *m_buf; -#endif +#endif // wxUSE_UNICODE/!wxUSE_UNICODE LV_ITEM *m_item; }; @@ -378,12 +406,14 @@ void wxListCtrl::FreeAllInternalData() wxListCtrl::~wxListCtrl() { + gs_ignoreChangeDeleteItem = TRUE; FreeAllInternalData(); + gs_ignoreChangeDeleteItem = FALSE; if ( m_textCtrl ) { - m_textCtrl->SetHWND(0); m_textCtrl->UnsubclassWin(); + m_textCtrl->SetHWND(0); delete m_textCtrl; m_textCtrl = NULL; } @@ -915,7 +945,7 @@ wxString wxListCtrl::GetItemText(long item) const info.m_itemId = item; if (!GetItem(info)) - return wxString(""); + return wxEmptyString; return info.m_text; } @@ -1223,7 +1253,11 @@ bool wxListCtrl::DeleteItem(long item) // Deletes all items bool wxListCtrl::DeleteAllItems() { - return ListView_DeleteAllItems(GetHwnd()) != 0; + gs_ignoreChangeDeleteItem = TRUE; + FreeAllInternalData(); + bool rval = ListView_DeleteAllItems(GetHwnd()) != 0; + gs_ignoreChangeDeleteItem = FALSE; + return rval; } // Deletes all items @@ -1270,20 +1304,33 @@ wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) // ListView_EditLabel requires that the list has focus. SetFocus(); - WXHWND hWnd = (WXHWND) ListView_EditLabel(GetHwnd(), item); - if (m_textCtrl) + WXHWND hWnd = (WXHWND) ListView_EditLabel(GetHwnd(), item); + if ( !hWnd ) + { + // failed to start editing + return NULL; + } + + // [re]create the text control wrapping the HWND we got + if ( m_textCtrl ) { - m_textCtrl->SetHWND(0); m_textCtrl->UnsubclassWin(); + m_textCtrl->SetHWND(0); delete m_textCtrl; } - m_textCtrl = (wxTextCtrl*) textControlClass->CreateObject(); + m_textCtrl = (wxTextCtrl *)textControlClass->CreateObject(); m_textCtrl->SetHWND(hWnd); m_textCtrl->SubclassWin(hWnd); m_textCtrl->SetParent(this); + // we must disallow TABbing away from the control while the edit contol is + // shown because this leaves it in some strange state (just try removing + // this line and then pressing TAB while editing an item in listctrl + // inside a panel) + m_textCtrl->SetWindowStyle(m_textCtrl->GetWindowStyle() | wxTE_PROCESS_TAB); + return m_textCtrl; } @@ -1522,14 +1569,18 @@ long wxListCtrl::InsertColumn(long col, return InsertColumn(col, item); } -// Scrolls the list control. If in icon, small icon or report view mode, -// x specifies the number of pixels to scroll. If in list view mode, x -// specifies the number of columns to scroll. -// If in icon, small icon or list view mode, y specifies the number of pixels -// to scroll. If in report view mode, y specifies the number of lines to scroll. +// scroll the control by the given number of pixels (exception: in list view, +// dx is interpreted as number of columns) bool wxListCtrl::ScrollList(int dx, int dy) { - return (ListView_Scroll(GetHwnd(), dx, dy) != 0); + if ( !ListView_Scroll(GetHwnd(), dx, dy) ) + { + wxLogDebug(_T("ListView_Scroll(%d, %d) failed"), dx, dy); + + return FALSE; + } + + return TRUE; } // Sort items. @@ -1613,6 +1664,7 @@ bool wxListCtrl::MSWCommand(WXUINT cmd, WXWORD id) return FALSE; } + bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) { // prepare the event @@ -1623,7 +1675,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) wxEventType eventType = wxEVT_NULL; - NMHDR *nmhdr = (NMHDR *)lParam; + NMHDR *nmhdr = (NMHDR *)lParam; // if your compiler is as broken as this, you should really change it: this // code is needed for normal operation! #ifdef below is only useful for @@ -1649,6 +1701,11 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) // work around is to simply catch both versions and hope that it // works (why should this message exist in ANSI and Unicode is // beyond me as it doesn't deal with strings at all...) + // + // note that fr HDN_TRACK another possibility could be to use + // HDN_ITEMCHANGING but it is sent even after HDN_ENDTRACK and when + // something other than the item width changes so we'd have to + // filter out the unwanted events then case HDN_BEGINTRACKA: case HDN_BEGINTRACKW: eventType = wxEVT_COMMAND_LIST_COL_BEGIN_DRAG; @@ -1664,6 +1721,8 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) case HDN_ENDTRACKW: if ( eventType == wxEVT_NULL ) eventType = wxEVT_COMMAND_LIST_COL_END_DRAG; + + event.m_item.m_width = nmHDR->pitem->cxy; event.m_col = nmHDR->iItem; break; @@ -1708,19 +1767,57 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) } break; + case HDN_GETDISPINFOW: + { + LPNMHDDISPINFOW info = (LPNMHDDISPINFOW) lParam; + // This is a fix for a strange bug under XP. + // Normally, info->iItem is a valid index, but + // sometimes this is a silly (large) number + // and when we return FALSE via wxControl::MSWOnNotify + // to indicate that it hasn't yet been processed, + // there's a GPF in Windows. + // By returning TRUE here, we avoid further processing + // of this strange message. + if ( info->iItem >= GetColumnCount() ) + return TRUE; + } + // fall through + default: return wxControl::MSWOnNotify(idCtrl, lParam, result); } } else #endif // defined(HDN_BEGINTRACKA) - if ( nmhdr->hwndFrom == GetHwnd() ) + if ( nmhdr->hwndFrom == GetHwnd() ) { // almost all messages use NM_LISTVIEW NM_LISTVIEW *nmLV = (NM_LISTVIEW *)nmhdr; - // this is true for almost all events - event.m_item.m_data = nmLV->lParam; + const int iItem = nmLV->iItem; + + + // FreeAllInternalData will cause LVN_ITEMCHANG* messages, which can be + // ignored for efficiency. It is done here because the internal data is in the + // process of being deleted so we don't want to try and access it below. + if ( gs_ignoreChangeDeleteItem && + ( (nmLV->hdr.code == LVN_ITEMCHANGED) || (nmLV->hdr.code == LVN_ITEMCHANGING))) + { + return TRUE; + } + + + // If we have a valid item then check if there is a data value + // associated with it and put it in the event. + if ( iItem >= 0 && iItem < GetItemCount() ) + { + wxListItemInternalData *internaldata = + wxGetInternalData(GetHwnd(), iItem); + + if ( internaldata ) + event.m_item.m_data = internaldata->lParam; + } + switch ( nmhdr->code ) { @@ -1734,7 +1831,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) eventType = wxEVT_COMMAND_LIST_BEGIN_DRAG; } - event.m_itemIndex = nmLV->iItem; + event.m_itemIndex = iItem; event.m_pointDrag.x = nmLV->ptAction.x; event.m_pointDrag.y = nmLV->ptAction.y; break; @@ -1795,10 +1892,13 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) break; case LVN_DELETEITEM: + if ( gs_ignoreChangeDeleteItem ) + return FALSE; + eventType = wxEVT_COMMAND_LIST_DELETE_ITEM; - event.m_itemIndex = nmLV->iItem; + event.m_itemIndex = iItem; // delete the assoicated internal data - wxDeleteInternalData(this, nmLV->iItem); + wxDeleteInternalData(this, iItem); break; case LVN_SETDISPINFO: @@ -1811,25 +1911,33 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) case LVN_INSERTITEM: eventType = wxEVT_COMMAND_LIST_INSERT_ITEM; - event.m_itemIndex = nmLV->iItem; + event.m_itemIndex = iItem; break; case LVN_ITEMCHANGED: // we translate this catch all message into more interesting // (and more easy to process) wxWindows events - // first of all, we deal with the state change events only - if ( nmLV->uChanged & LVIF_STATE ) + // first of all, we deal with the state change events only and + // only for valid items (item == -1 for the virtual list + // control) + if ( nmLV->uChanged & LVIF_STATE && iItem != -1 ) { // temp vars for readability const UINT stOld = nmLV->uOldState; const UINT stNew = nmLV->uNewState; + event.m_item.SetId(iItem); + event.m_item.SetMask(wxLIST_MASK_TEXT | + wxLIST_MASK_IMAGE | + wxLIST_MASK_DATA); + GetItem(event.m_item); + // has the focus changed? if ( !(stOld & LVIS_FOCUSED) && (stNew & LVIS_FOCUSED) ) { eventType = wxEVT_COMMAND_LIST_ITEM_FOCUSED; - event.m_itemIndex = nmLV->iItem; + event.m_itemIndex = iItem; } if ( (stNew & LVIS_SELECTED) != (stOld & LVIS_SELECTED) ) @@ -1846,7 +1954,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) { // then need to set m_itemIndex as it wasn't done // above - event.m_itemIndex = nmLV->iItem; + event.m_itemIndex = iItem; } eventType = stNew & LVIS_SELECTED @@ -1914,16 +2022,16 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) // else translate it into wxEVT_COMMAND_LIST_ITEM_ACTIVATED event // if it happened on an item (and not on empty place) - if ( nmLV->iItem == -1 ) + if ( iItem == -1 ) { // not on item return FALSE; } eventType = wxEVT_COMMAND_LIST_ITEM_ACTIVATED; - event.m_itemIndex = nmLV->iItem; - event.m_item.m_text = GetItemText(nmLV->iItem); - event.m_item.m_data = GetItemData(nmLV->iItem); + event.m_itemIndex = iItem; + event.m_item.m_text = GetItemText(iItem); + event.m_item.m_data = GetItemData(iItem); break; case NM_RCLICK: @@ -2030,8 +2138,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) event.SetEventType(eventType); - if ( !GetEventHandler()->ProcessEvent(event) ) - return FALSE; + bool processed = GetEventHandler()->ProcessEvent(event); // post processing // --------------- @@ -2051,12 +2158,24 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) // logic here is inversed compared to all the other messages *result = event.IsAllowed(); + // don't keep a stale wxTextCtrl around + if ( m_textCtrl ) + { + // EDIT control will be deleted by the list control itself so + // prevent us from deleting it as well + m_textCtrl->UnsubclassWin(); + m_textCtrl->SetHWND(0); + delete m_textCtrl; + m_textCtrl = NULL; + } + return TRUE; } - *result = !event.IsAllowed(); + if ( processed ) + *result = !event.IsAllowed(); - return TRUE; + return processed; } #if defined(_WIN32_IE) && _WIN32_IE >= 0x300 @@ -2226,7 +2345,7 @@ wxString wxListCtrl::OnGetItemText(long WXUNUSED(item), long WXUNUSED(col)) cons { // this is a pure virtual function, in fact - which is not really pure // because the controls which are not virtual don't need to implement it - wxFAIL_MSG( _T("not supposed to be called") ); + wxFAIL_MSG( _T("wxListCtrl::OnGetItemText not supposed to be called") ); return wxEmptyString; } @@ -2234,7 +2353,7 @@ wxString wxListCtrl::OnGetItemText(long WXUNUSED(item), long WXUNUSED(col)) cons int wxListCtrl::OnGetItemImage(long WXUNUSED(item)) const { // same as above - wxFAIL_MSG( _T("not supposed to be called") ); + wxFAIL_MSG( _T("wxListCtrl::OnGetItemImage not supposed to be called") ); return -1; } diff --git a/src/msw/main.cpp b/src/msw/main.cpp index 6803110d50..00736a1394 100644 --- a/src/msw/main.cpp +++ b/src/msw/main.cpp @@ -33,6 +33,12 @@ #include "wx/msw/private.h" +// Don't implement WinMain if we're building an MFC/wxWindows +// hybrid app. +#if wxUSE_MFC && !defined(NOMAIN) +#define NOMAIN 1 +#endif + // from src/msw/app.cpp extern void WXDLLEXPORT wxEntryCleanup(); diff --git a/src/msw/makebase.b32 b/src/msw/makebase.b32 index a277518f99..5bbba8fbea 100644 --- a/src/msw/makebase.b32 +++ b/src/msw/makebase.b32 @@ -37,8 +37,8 @@ wxUSE_GUI=0 !include $(WXDIR)\src\makeb32.env PERIPH_LIBS= -PERIPH_TARGET=zlib png jpeg tiff regex $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_zlib clean_png clean_jpeg clean_tiff clean_regex $(PERIPH_CLEAN_TARGET) +PERIPH_TARGET=zlib regex $(PERIPH_TARGET) +PERIPH_CLEAN_TARGET=clean_zlib clean_regex $(PERIPH_CLEAN_TARGET) !if "$(DLL)" == "0" DUMMY=dummy @@ -58,7 +58,6 @@ MSWDIR=. DOCDIR = $(WXDIR)\docs COMMONOBJS = \ - $(MSWDIR)\y_tab.obj \ $(MSWDIR)\appcmn.obj \ $(MSWDIR)\clntdata.obj \ $(MSWDIR)\cmdline.obj \ @@ -193,19 +192,6 @@ dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\includ version.res: brc32 -r -i$(WXDIR)\include\ $(MSWDIR)\version.rc -$(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -# cl @<< -# $(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -# << - -$(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 - - $(MSWDIR)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) $(MSWDIR)\dir.obj: $(MSWDIR)\dir.$(SRCSUFF) @@ -472,8 +458,6 @@ clean: $(PERIPH_CLEAN_TARGET) -erase *.pch -erase *.csm -erase "wx32.#??" - -erase ..\common\y_tab.c - -erase ..\common\lex_yy.c cleanall: clean diff --git a/src/msw/makebase.wat b/src/msw/makebase.wat new file mode 100644 index 0000000000..3dbf7a052e --- /dev/null +++ b/src/msw/makebase.wat @@ -0,0 +1,412 @@ +#!/binb/wmake.exe + +# This file was automatically generated by tmake +# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE WATBASE.T! + +############################################################################## +# Name: makebase.wat +# Purpose: Builds wxBase library for Watcom C++ under Win32 +# Author: Vadim Zeitlin +# Created: 21.01.03 +# RCS-ID: $Id$ +# Copyright: (c) 2003 Vadim Zeitlin +# Licence: wxWindows licence +############################################################################## + +wxUSE_GUI=0 + +!include ..\makewat.env + +LIBTARGET = $(WXDIR)\lib\$(LIBNAME).lib + +EXTRATARGETS = zlib regex +EXTRATARGETSCLEAN = clean_zlib clean_regex +COMMDIR=$(WXDIR)\src\common +MSWDIR=$(WXDIR)\src\msw +OLEDIR=$(MSWDIR)\ole + +COMMONOBJS = & + $(OUTPUTDIR)\appcmn.obj & + $(OUTPUTDIR)\clntdata.obj & + $(OUTPUTDIR)\cmdline.obj & + $(OUTPUTDIR)\config.obj & + $(OUTPUTDIR)\datetime.obj & + $(OUTPUTDIR)\datstrm.obj & + $(OUTPUTDIR)\db.obj & + $(OUTPUTDIR)\dbtable.obj & + $(OUTPUTDIR)\dircmn.obj & + $(OUTPUTDIR)\dynarray.obj & + $(OUTPUTDIR)\dynlib.obj & + $(OUTPUTDIR)\dynload.obj & + $(OUTPUTDIR)\encconv.obj & + $(OUTPUTDIR)\event.obj & + $(OUTPUTDIR)\extended.obj & + $(OUTPUTDIR)\ffile.obj & + $(OUTPUTDIR)\file.obj & + $(OUTPUTDIR)\fileconf.obj & + $(OUTPUTDIR)\filefn.obj & + $(OUTPUTDIR)\filename.obj & + $(OUTPUTDIR)\filesys.obj & + $(OUTPUTDIR)\fontmap.obj & + $(OUTPUTDIR)\fs_inet.obj & + $(OUTPUTDIR)\fs_mem.obj & + $(OUTPUTDIR)\fs_zip.obj & + $(OUTPUTDIR)\ftp.obj & + $(OUTPUTDIR)\hash.obj & + $(OUTPUTDIR)\hashmap.obj & + $(OUTPUTDIR)\http.obj & + $(OUTPUTDIR)\intl.obj & + $(OUTPUTDIR)\ipcbase.obj & + $(OUTPUTDIR)\list.obj & + $(OUTPUTDIR)\log.obj & + $(OUTPUTDIR)\longlong.obj & + $(OUTPUTDIR)\memory.obj & + $(OUTPUTDIR)\mimecmn.obj & + $(OUTPUTDIR)\module.obj & + $(OUTPUTDIR)\msgout.obj & + $(OUTPUTDIR)\mstream.obj & + $(OUTPUTDIR)\object.obj & + $(OUTPUTDIR)\process.obj & + $(OUTPUTDIR)\protocol.obj & + $(OUTPUTDIR)\regex.obj & + $(OUTPUTDIR)\sckaddr.obj & + $(OUTPUTDIR)\sckfile.obj & + $(OUTPUTDIR)\sckipc.obj & + $(OUTPUTDIR)\sckstrm.obj & + $(OUTPUTDIR)\socket.obj & + $(OUTPUTDIR)\strconv.obj & + $(OUTPUTDIR)\stream.obj & + $(OUTPUTDIR)\string.obj & + $(OUTPUTDIR)\sysopt.obj & + $(OUTPUTDIR)\textbuf.obj & + $(OUTPUTDIR)\textfile.obj & + $(OUTPUTDIR)\timercmn.obj & + $(OUTPUTDIR)\tokenzr.obj & + $(OUTPUTDIR)\txtstrm.obj & + $(OUTPUTDIR)\unzip.obj & + $(OUTPUTDIR)\url.obj & + $(OUTPUTDIR)\utilscmn.obj & + $(OUTPUTDIR)\variant.obj & + $(OUTPUTDIR)\wfstream.obj & + $(OUTPUTDIR)\wxchar.obj & + $(OUTPUTDIR)\zipstrm.obj & + $(OUTPUTDIR)\zstream.obj & + $(OUTPUTDIR)\init.obj + +MSWOBJS = & + $(OUTPUTDIR)\dde.obj & + $(OUTPUTDIR)\dir.obj & + $(OUTPUTDIR)\gsocket.obj & + $(OUTPUTDIR)\gsockmsw.obj & + $(OUTPUTDIR)\main.obj & + $(OUTPUTDIR)\mimetype.obj & + $(OUTPUTDIR)\regconf.obj & + $(OUTPUTDIR)\registry.obj & + $(OUTPUTDIR)\snglinst.obj & + $(OUTPUTDIR)\thread.obj & + $(OUTPUTDIR)\utils.obj & + $(OUTPUTDIR)\utilsexc.obj & + $(OUTPUTDIR)\volume.obj + +OBJECTS = $(COMMONOBJS) $(MSWOBJS) + +SETUP_H=$(ARCHINCDIR)\wx\setup.h + +all: $(SETUP_H) $(OUTPUTDIR) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC + +$(ARCHINCDIR)\wx: + mkdir $(ARCHINCDIR) + mkdir $(ARCHINCDIR)\wx + +$(OUTPUTDIR): + mkdir $(OUTPUTDIR) + +$(SETUP_H): $(WXDIR)\include\wx\msw\setup.h $(ARCHINCDIR)\wx + copy $(WXDIR)\include\wx\msw\setup.h $@ + +LBCFILE=$(OUTPUTDIR)\wx$(TOOLKIT).lbc +$(LIBTARGET) : $(OBJECTS) + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) + + +clean: .SYMBOLIC $(EXTRATARGETSCLEAN) + -erase $(OUTPUTDIR)\*.obj + -erase $(LIBTARGET) + -erase $(OUTPUTDIR)\*.pch + -erase $(OUTPUTDIR)\*.err + -erase $(OUTPUTDIR)\*.lbc + +cleanall: clean + -erase $(LBCFILE) + +$(OUTPUTDIR)\dde.obj: $(MSWDIR)\dde.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\dir.obj: $(MSWDIR)\dir.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\gsocket.obj: $(MSWDIR)\gsocket.c + *$(CC) $(CFLAGS) $< + +$(OUTPUTDIR)\gsockmsw.obj: $(MSWDIR)\gsockmsw.c + *$(CC) $(CFLAGS) $< + +$(OUTPUTDIR)\main.obj: $(MSWDIR)\main.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\mimetype.obj: $(MSWDIR)\mimetype.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\regconf.obj: $(MSWDIR)\regconf.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\registry.obj: $(MSWDIR)\registry.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\snglinst.obj: $(MSWDIR)\snglinst.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\thread.obj: $(MSWDIR)\thread.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\utils.obj: $(MSWDIR)\utils.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\volume.obj: $(MSWDIR)\volume.cpp + *$(CXX) $(CXXFLAGS) $< + + + +######################################################## +# Common objects (always compiled) + +$(OUTPUTDIR)\appcmn.obj: $(COMMDIR)\appcmn.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\clntdata.obj: $(COMMDIR)\clntdata.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\cmdline.obj: $(COMMDIR)\cmdline.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\config.obj: $(COMMDIR)\config.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\datetime.obj: $(COMMDIR)\datetime.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\datstrm.obj: $(COMMDIR)\datstrm.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\db.obj: $(COMMDIR)\db.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\dbtable.obj: $(COMMDIR)\dbtable.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\dircmn.obj: $(COMMDIR)\dircmn.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\dynarray.obj: $(COMMDIR)\dynarray.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\dynlib.obj: $(COMMDIR)\dynlib.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\dynload.obj: $(COMMDIR)\dynload.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\encconv.obj: $(COMMDIR)\encconv.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\event.obj: $(COMMDIR)\event.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\extended.obj: $(COMMDIR)\extended.c + *$(CC) $(CFLAGS) $< + +$(OUTPUTDIR)\ffile.obj: $(COMMDIR)\ffile.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\file.obj: $(COMMDIR)\file.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\fileconf.obj: $(COMMDIR)\fileconf.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\filefn.obj: $(COMMDIR)\filefn.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\filename.obj: $(COMMDIR)\filename.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\filesys.obj: $(COMMDIR)\filesys.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\fontmap.obj: $(COMMDIR)\fontmap.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\fs_inet.obj: $(COMMDIR)\fs_inet.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\fs_mem.obj: $(COMMDIR)\fs_mem.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\fs_zip.obj: $(COMMDIR)\fs_zip.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\ftp.obj: $(COMMDIR)\ftp.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\hash.obj: $(COMMDIR)\hash.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\hashmap.obj: $(COMMDIR)\hashmap.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\http.obj: $(COMMDIR)\http.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\intl.obj: $(COMMDIR)\intl.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\ipcbase.obj: $(COMMDIR)\ipcbase.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\list.obj: $(COMMDIR)\list.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\log.obj: $(COMMDIR)\log.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\longlong.obj: $(COMMDIR)\longlong.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\memory.obj: $(COMMDIR)\memory.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\mimecmn.obj: $(COMMDIR)\mimecmn.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\module.obj: $(COMMDIR)\module.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\msgout.obj: $(COMMDIR)\msgout.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\mstream.obj: $(COMMDIR)\mstream.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\object.obj: $(COMMDIR)\object.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\process.obj: $(COMMDIR)\process.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\protocol.obj: $(COMMDIR)\protocol.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\regex.obj: $(COMMDIR)\regex.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\sckaddr.obj: $(COMMDIR)\sckaddr.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\sckfile.obj: $(COMMDIR)\sckfile.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\sckipc.obj: $(COMMDIR)\sckipc.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\sckstrm.obj: $(COMMDIR)\sckstrm.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\socket.obj: $(COMMDIR)\socket.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\strconv.obj: $(COMMDIR)\strconv.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\stream.obj: $(COMMDIR)\stream.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\string.obj: $(COMMDIR)\string.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\sysopt.obj: $(COMMDIR)\sysopt.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\textbuf.obj: $(COMMDIR)\textbuf.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\textfile.obj: $(COMMDIR)\textfile.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\timercmn.obj: $(COMMDIR)\timercmn.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\txtstrm.obj: $(COMMDIR)\txtstrm.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\unzip.obj: $(COMMDIR)\unzip.c + *$(CC) $(CFLAGS) $< + +$(OUTPUTDIR)\url.obj: $(COMMDIR)\url.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\variant.obj: $(COMMDIR)\variant.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\wfstream.obj: $(COMMDIR)\wfstream.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\wxchar.obj: $(COMMDIR)\wxchar.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\zipstrm.obj: $(COMMDIR)\zipstrm.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\zstream.obj: $(COMMDIR)\zstream.cpp + *$(CXX) $(CXXFLAGS) $< + +$(OUTPUTDIR)\init.obj: $(COMMDIR)\init.cpp + *$(CXX) $(CXXFLAGS) $< + + + +zlib: .SYMBOLIC + cd $(WXDIR)\src\zlib + wmake -f makefile.wat all + cd $(WXDIR)\src\msw + +clean_zlib: .SYMBOLIC + cd $(WXDIR)\src\zlib + 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=watbase +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 makebase.wat + copy makebase.wat $(WXDIR)\src\msw diff --git a/src/msw/makefile.b32 b/src/msw/makefile.b32 index f8164b3a3f..46d24ca1e8 100644 --- a/src/msw/makefile.b32 +++ b/src/msw/makefile.b32 @@ -24,6 +24,7 @@ WXDIR = $(WXWIN) THISDIR = $(WXDIR)\src\msw + # Set all these to 1 if you want to build a dynamic library !if "$(DLL)" == "1" WXMAKINGDLL=1 @@ -65,6 +66,8 @@ GENDIR=..\generic COMMDIR=..\common HTMLDIR=..\html OLEDIR=.\ole +UNIVDIR=..\univ +UNIVTHEMEDIR=..\univ\themes MSWDIR=. DOCDIR = $(WXDIR)\docs @@ -101,15 +104,274 @@ GENERICOBJS= $(MSWDIR)\busyinfo.obj \ $(MSWDIR)\treelay.obj \ $(MSWDIR)\wizard.obj -# Not needed: -# $(MSWDIR)\colrdlgg.obj \ -# $(MSWDIR)\fontdlgg.obj \ -# $(MSWDIR)\msgdlgg.obj \ -# $(MSWDIR)\printps.obj \ -# $(MSWDIR)\prntdlgg.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\treectrl.obj +MSWOBJS = $(MSWDIR)\accel.obj \ + $(MSWDIR)\app.obj \ + $(MSWDIR)\automtn.obj \ + $(MSWDIR)\bitmap.obj \ + $(MSWDIR)\bmpbuttn.obj \ + $(MSWDIR)\brush.obj \ + $(MSWDIR)\button.obj \ + $(MSWDIR)\caret.obj \ + $(MSWDIR)\checkbox.obj \ + $(MSWDIR)\checklst.obj \ + $(MSWDIR)\choice.obj \ + $(MSWDIR)\clipbrd.obj \ + $(MSWDIR)\colordlg.obj \ + $(MSWDIR)\colour.obj \ + $(MSWDIR)\combobox.obj \ + $(MSWDIR)\control.obj \ + $(MSWDIR)\curico.obj \ + $(MSWDIR)\cursor.obj \ + $(MSWDIR)\data.obj \ + $(MSWDIR)\dataobj.obj \ + $(MSWDIR)\dc.obj \ + $(MSWDIR)\dcclient.obj \ + $(MSWDIR)\dcmemory.obj \ + $(MSWDIR)\dcprint.obj \ + $(MSWDIR)\dcscreen.obj \ + $(MSWDIR)\dde.obj \ + $(MSWDIR)\dialog.obj \ + $(MSWDIR)\dialup.obj \ + $(MSWDIR)\dib.obj \ + $(MSWDIR)\dibutils.obj \ + $(MSWDIR)\dir.obj \ + $(MSWDIR)\dirdlg.obj \ + $(MSWDIR)\dragimag.obj \ + $(MSWDIR)\dropsrc.obj \ + $(MSWDIR)\droptgt.obj \ + $(MSWDIR)\enhmeta.obj \ + $(MSWDIR)\evtloop.obj \ + $(MSWDIR)\fdrepdlg.obj \ + $(MSWDIR)\filedlg.obj \ + $(MSWDIR)\font.obj \ + $(MSWDIR)\fontdlg.obj \ + $(MSWDIR)\fontenum.obj \ + $(MSWDIR)\fontutil.obj \ + $(MSWDIR)\frame.obj \ + $(MSWDIR)\gauge95.obj \ + $(MSWDIR)\gdiimage.obj \ + $(MSWDIR)\gdiobj.obj \ + $(MSWDIR)\glcanvas.obj \ + $(MSWDIR)\gsocket.obj \ + $(MSWDIR)\gsockmsw.obj \ + $(MSWDIR)\helpbest.obj \ + $(MSWDIR)\helpchm.obj \ + $(MSWDIR)\helpwin.obj \ + $(MSWDIR)\icon.obj \ + $(MSWDIR)\imaglist.obj \ + $(MSWDIR)\iniconf.obj \ + $(MSWDIR)\joystick.obj \ + $(MSWDIR)\listbox.obj \ + $(MSWDIR)\listctrl.obj \ + $(MSWDIR)\main.obj \ + $(MSWDIR)\mdi.obj \ + $(MSWDIR)\menu.obj \ + $(MSWDIR)\menuitem.obj \ + $(MSWDIR)\metafile.obj \ + $(MSWDIR)\mimetype.obj \ + $(MSWDIR)\minifram.obj \ + $(MSWDIR)\msgdlg.obj \ + $(MSWDIR)\mslu.obj \ + $(MSWDIR)\nativdlg.obj \ + $(MSWDIR)\notebook.obj \ + $(MSWDIR)\oleutils.obj \ + $(MSWDIR)\ownerdrw.obj \ + $(MSWDIR)\palette.obj \ + $(MSWDIR)\pen.obj \ + $(MSWDIR)\penwin.obj \ + $(MSWDIR)\popupwin.obj \ + $(MSWDIR)\printdlg.obj \ + $(MSWDIR)\printwin.obj \ + $(MSWDIR)\radiobox.obj \ + $(MSWDIR)\radiobut.obj \ + $(MSWDIR)\regconf.obj \ + $(MSWDIR)\region.obj \ + $(MSWDIR)\registry.obj \ + $(MSWDIR)\scrolbar.obj \ + $(MSWDIR)\settings.obj \ + $(MSWDIR)\slider95.obj \ + $(MSWDIR)\snglinst.obj \ + $(MSWDIR)\spinbutt.obj \ + $(MSWDIR)\spinctrl.obj \ + $(MSWDIR)\statbmp.obj \ + $(MSWDIR)\statbox.obj \ + $(MSWDIR)\statbr95.obj \ + $(MSWDIR)\statline.obj \ + $(MSWDIR)\stattext.obj \ + $(MSWDIR)\tabctrl.obj \ + $(MSWDIR)\taskbar.obj \ + $(MSWDIR)\tbar95.obj \ + $(MSWDIR)\textctrl.obj \ + $(MSWDIR)\tglbtn.obj \ + $(MSWDIR)\thread.obj \ + $(MSWDIR)\timer.obj \ + $(MSWDIR)\tooltip.obj \ + $(MSWDIR)\toplevel.obj \ + $(MSWDIR)\treectrl.obj \ + $(MSWDIR)\utils.obj \ + $(MSWDIR)\utilsexc.obj \ + $(MSWDIR)\uuid.obj \ + $(MSWDIR)\volume.obj \ + $(MSWDIR)\wave.obj \ + $(MSWDIR)\window.obj + +GENERICUNIVOBJS= $(MSWDIR)\accel.obj \ + $(MSWDIR)\busyinfo.obj \ + $(MSWDIR)\calctrl.obj \ + $(MSWDIR)\choicdgg.obj \ + $(MSWDIR)\colrdlgg.obj \ + $(MSWDIR)\dcbuffer.obj \ + $(MSWDIR)\dcpsg.obj \ + $(MSWDIR)\dirctrlg.obj \ + $(MSWDIR)\dirdlgg.obj \ + $(MSWDIR)\dragimgg.obj \ + $(MSWDIR)\fdrepdlg.obj \ + $(MSWDIR)\filedlgg.obj \ + $(MSWDIR)\fontdlgg.obj \ + $(MSWDIR)\grid.obj \ + $(MSWDIR)\gridctrl.obj \ + $(MSWDIR)\gridsel.obj \ + $(MSWDIR)\helpext.obj \ + $(MSWDIR)\helphtml.obj \ + $(MSWDIR)\imaglist.obj \ + $(MSWDIR)\laywin.obj \ + $(MSWDIR)\listctrl.obj \ + $(MSWDIR)\logg.obj \ + $(MSWDIR)\mdig.obj \ + $(MSWDIR)\msgdlgg.obj \ + $(MSWDIR)\numdlgg.obj \ + $(MSWDIR)\panelg.obj \ + $(MSWDIR)\printps.obj \ + $(MSWDIR)\prntdlgg.obj \ + $(MSWDIR)\progdlgg.obj \ + $(MSWDIR)\prop.obj \ + $(MSWDIR)\propform.obj \ + $(MSWDIR)\proplist.obj \ + $(MSWDIR)\sashwin.obj \ + $(MSWDIR)\scrlwing.obj \ + $(MSWDIR)\spinctlg.obj \ + $(MSWDIR)\splash.obj \ + $(MSWDIR)\splitter.obj \ + $(MSWDIR)\tabg.obj \ + $(MSWDIR)\tbarsmpl.obj \ + $(MSWDIR)\textdlgg.obj \ + $(MSWDIR)\tipdlg.obj \ + $(MSWDIR)\tipwin.obj \ + $(MSWDIR)\treectlg.obj \ + $(MSWDIR)\treelay.obj \ + $(MSWDIR)\wizard.obj + +MSWUNIVOBJS = $(MSWDIR)\app.obj \ + $(MSWDIR)\bitmap.obj \ + $(MSWDIR)\brush.obj \ + $(MSWDIR)\caret.obj \ + $(MSWDIR)\clipbrd.obj \ + $(MSWDIR)\colour.obj \ + $(MSWDIR)\cursor.obj \ + $(MSWDIR)\data.obj \ + $(MSWDIR)\dc.obj \ + $(MSWDIR)\dcclient.obj \ + $(MSWDIR)\dcmemory.obj \ + $(MSWDIR)\dcprint.obj \ + $(MSWDIR)\dcscreen.obj \ + $(MSWDIR)\dde.obj \ + $(MSWDIR)\dialup.obj \ + $(MSWDIR)\dib.obj \ + $(MSWDIR)\dir.obj \ + $(MSWDIR)\evtloop.obj \ + $(MSWDIR)\font.obj \ + $(MSWDIR)\fontenum.obj \ + $(MSWDIR)\fontutil.obj \ + $(MSWDIR)\gdiimage.obj \ + $(MSWDIR)\gdiobj.obj \ + $(MSWDIR)\glcanvas.obj \ + $(MSWDIR)\gsocket.obj \ + $(MSWDIR)\gsockmsw.obj \ + $(MSWDIR)\helpbest.obj \ + $(MSWDIR)\helpchm.obj \ + $(MSWDIR)\helpwin.obj \ + $(MSWDIR)\icon.obj \ + $(MSWDIR)\joystick.obj \ + $(MSWDIR)\main.obj \ + $(MSWDIR)\mimetype.obj \ + $(MSWDIR)\palette.obj \ + $(MSWDIR)\pen.obj \ + $(MSWDIR)\popupwin.obj \ + $(MSWDIR)\regconf.obj \ + $(MSWDIR)\region.obj \ + $(MSWDIR)\registry.obj \ + $(MSWDIR)\settings.obj \ + $(MSWDIR)\snglinst.obj \ + $(MSWDIR)\taskbar.obj \ + $(MSWDIR)\thread.obj \ + $(MSWDIR)\timer.obj \ + $(MSWDIR)\tooltip.obj \ + $(MSWDIR)\toplevel.obj \ + $(MSWDIR)\utils.obj \ + $(MSWDIR)\utilsexc.obj \ + $(MSWDIR)\volume.obj \ + $(MSWDIR)\wave.obj \ + $(MSWDIR)\window.obj + +UNIVOBJS = $(MSWDIR)\bmpbuttn.obj \ + $(MSWDIR)\button.obj \ + $(MSWDIR)\checkbox.obj \ + $(MSWDIR)\checklst.obj \ + $(MSWDIR)\choice.obj \ + $(MSWDIR)\colschem.obj \ + $(MSWDIR)\combobox.obj \ + $(MSWDIR)\control.obj \ + $(MSWDIR)\dialog.obj \ + $(MSWDIR)\framuniv.obj \ + $(MSWDIR)\gauge.obj \ + $(MSWDIR)\inpcons.obj \ + $(MSWDIR)\inphand.obj \ + $(MSWDIR)\listbox.obj \ + $(MSWDIR)\menu.obj \ + $(MSWDIR)\notebook.obj \ + $(MSWDIR)\radiobox.obj \ + $(MSWDIR)\radiobut.obj \ + $(MSWDIR)\renderer.obj \ + $(MSWDIR)\scrarrow.obj \ + $(MSWDIR)\scrolbar.obj \ + $(MSWDIR)\scrthumb.obj \ + $(MSWDIR)\slider.obj \ + $(MSWDIR)\spinbutt.obj \ + $(MSWDIR)\statbmp.obj \ + $(MSWDIR)\statbox.obj \ + $(MSWDIR)\statline.obj \ + $(MSWDIR)\stattext.obj \ + $(MSWDIR)\statusbr.obj \ + $(MSWDIR)\textctrl.obj \ + $(MSWDIR)\theme.obj \ + $(MSWDIR)\toolbar.obj \ + $(MSWDIR)\topluniv.obj \ + $(MSWDIR)\winuniv.obj + +UNIVTHEMEOBJS = $(MSWDIR)\gtk.obj \ + $(MSWDIR)\metal.obj \ + $(MSWDIR)\win32.obj + +HTMLOBJS = $(MSWDIR)\helpctrl.obj \ + $(MSWDIR)\helpdata.obj \ + $(MSWDIR)\helpfrm.obj \ + $(MSWDIR)\htmlcell.obj \ + $(MSWDIR)\htmlfilt.obj \ + $(MSWDIR)\htmlpars.obj \ + $(MSWDIR)\htmltag.obj \ + $(MSWDIR)\htmlwin.obj \ + $(MSWDIR)\htmprint.obj \ + $(MSWDIR)\m_dflist.obj \ + $(MSWDIR)\m_fonts.obj \ + $(MSWDIR)\m_hline.obj \ + $(MSWDIR)\m_image.obj \ + $(MSWDIR)\m_layout.obj \ + $(MSWDIR)\m_links.obj \ + $(MSWDIR)\m_list.obj \ + $(MSWDIR)\m_pre.obj \ + $(MSWDIR)\m_style.obj \ + $(MSWDIR)\m_tables.obj \ + $(MSWDIR)\winpars.obj COMMONOBJS = \ $(MSWDIR)\y_tab.obj \ @@ -244,140 +506,11 @@ COMMONOBJS = \ $(MSWDIR)\zipstrm.obj \ $(MSWDIR)\zstream.obj -MSWOBJS = $(MSWDIR)\accel.obj \ - $(MSWDIR)\app.obj \ - $(MSWDIR)\automtn.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\caret.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colordlg.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\curico.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dataobj.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\dialup.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\dibutils.obj \ - $(MSWDIR)\dir.obj \ - $(MSWDIR)\dirdlg.obj \ - $(MSWDIR)\dragimag.obj \ - $(MSWDIR)\dropsrc.obj \ - $(MSWDIR)\droptgt.obj \ - $(MSWDIR)\enhmeta.obj \ - $(MSWDIR)\evtloop.obj \ - $(MSWDIR)\fdrepdlg.obj \ - $(MSWDIR)\filedlg.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontdlg.obj \ - $(MSWDIR)\fontenum.obj \ - $(MSWDIR)\fontutil.obj \ - $(MSWDIR)\frame.obj \ - $(MSWDIR)\gauge95.obj \ - $(MSWDIR)\gdiimage.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\glcanvas.obj \ - $(MSWDIR)\gsocket.obj \ - $(MSWDIR)\gsockmsw.obj \ - $(MSWDIR)\helpbest.obj \ - $(MSWDIR)\helpchm.obj \ - $(MSWDIR)\helpwin.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\imaglist.obj \ - $(MSWDIR)\iniconf.obj \ - $(MSWDIR)\joystick.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\listctrl.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mdi.obj \ - $(MSWDIR)\menu.obj \ - $(MSWDIR)\menuitem.obj \ - $(MSWDIR)\metafile.obj \ - $(MSWDIR)\mimetype.obj \ - $(MSWDIR)\minifram.obj \ - $(MSWDIR)\msgdlg.obj \ - $(MSWDIR)\mslu.obj \ - $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\notebook.obj \ - $(MSWDIR)\oleutils.obj \ - $(MSWDIR)\ownerdrw.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\penwin.obj \ - $(MSWDIR)\popupwin.obj \ - $(MSWDIR)\printdlg.obj \ - $(MSWDIR)\printwin.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\regconf.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\registry.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\slider95.obj \ - $(MSWDIR)\snglinst.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\spinctrl.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\statbr95.obj \ - $(MSWDIR)\statline.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\tabctrl.obj \ - $(MSWDIR)\taskbar.obj \ - $(MSWDIR)\tbar95.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\tglbtn.obj \ - $(MSWDIR)\thread.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\tooltip.obj \ - $(MSWDIR)\toplevel.obj \ - $(MSWDIR)\treectrl.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(MSWDIR)\uuid.obj \ - $(MSWDIR)\volume.obj \ - $(MSWDIR)\wave.obj \ - $(MSWDIR)\window.obj - -HTMLOBJS = $(MSWDIR)\helpctrl.obj \ - $(MSWDIR)\helpdata.obj \ - $(MSWDIR)\helpfrm.obj \ - $(MSWDIR)\htmlcell.obj \ - $(MSWDIR)\htmlfilt.obj \ - $(MSWDIR)\htmlpars.obj \ - $(MSWDIR)\htmltag.obj \ - $(MSWDIR)\htmlwin.obj \ - $(MSWDIR)\htmprint.obj \ - $(MSWDIR)\m_dflist.obj \ - $(MSWDIR)\m_fonts.obj \ - $(MSWDIR)\m_hline.obj \ - $(MSWDIR)\m_image.obj \ - $(MSWDIR)\m_layout.obj \ - $(MSWDIR)\m_links.obj \ - $(MSWDIR)\m_list.obj \ - $(MSWDIR)\m_meta.obj \ - $(MSWDIR)\m_pre.obj \ - $(MSWDIR)\m_style.obj \ - $(MSWDIR)\m_tables.obj \ - $(MSWDIR)\winpars.obj - +!if "$(WXUSINGUNIV)" == "1" +OBJECTS = $(COMMONOBJS) $(GENERICUNIVOBJS) $(MSWUNIVOBJS) $(HTMLOBJS) $(UNIVOBJS) $(UNIVTHEMEOBJS) +!else OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS) +!endif default: wx @@ -393,7 +526,7 @@ makesetuph: # Copy include\wx\msw\setup.h to the architecture-specific location makearchsetuph: - copy $(WXDIR)\include\wx\msw\setup.h $(ARCHSETUPH) + copy $(SETUPSRCDIR)\setup.h $(ARCHSETUPH) cd $(WXDIR)\src\msw $(ARCHINCDIR)\wx: @@ -444,6 +577,119 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c # $(OBJECTS): $(WXDIR)\include\wx\setup.h +!if "$(WXUSINGUNIV)" == "1" +######################################################## +# MSW objects (compile Native or UNIV) - UNIV + +$(MSWDIR)\app.obj: $(MSWDIR)\app.$(SRCSUFF) + +$(MSWDIR)\bitmap.obj: $(MSWDIR)\bitmap.$(SRCSUFF) + +$(MSWDIR)\brush.obj: $(MSWDIR)\brush.$(SRCSUFF) + +$(MSWDIR)\caret.obj: $(MSWDIR)\caret.$(SRCSUFF) + +$(MSWDIR)\clipbrd.obj: $(MSWDIR)\clipbrd.$(SRCSUFF) + +$(MSWDIR)\colour.obj: $(MSWDIR)\colour.$(SRCSUFF) + +$(MSWDIR)\cursor.obj: $(MSWDIR)\cursor.$(SRCSUFF) + +$(MSWDIR)\data.obj: $(MSWDIR)\data.$(SRCSUFF) + +$(MSWDIR)\dc.obj: $(MSWDIR)\dc.$(SRCSUFF) + +$(MSWDIR)\dcclient.obj: $(MSWDIR)\dcclient.$(SRCSUFF) + +$(MSWDIR)\dcmemory.obj: $(MSWDIR)\dcmemory.$(SRCSUFF) + +$(MSWDIR)\dcprint.obj: $(MSWDIR)\dcprint.$(SRCSUFF) + +$(MSWDIR)\dcscreen.obj: $(MSWDIR)\dcscreen.$(SRCSUFF) + +$(MSWDIR)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) + +$(MSWDIR)\dialup.obj: $(MSWDIR)\dialup.$(SRCSUFF) + +$(MSWDIR)\dib.obj: $(MSWDIR)\dib.$(SRCSUFF) + +$(MSWDIR)\dir.obj: $(MSWDIR)\dir.$(SRCSUFF) + +$(MSWDIR)\evtloop.obj: $(MSWDIR)\evtloop.$(SRCSUFF) + +$(MSWDIR)\font.obj: $(MSWDIR)\font.$(SRCSUFF) + +$(MSWDIR)\fontenum.obj: $(MSWDIR)\fontenum.$(SRCSUFF) + +$(MSWDIR)\fontutil.obj: $(MSWDIR)\fontutil.$(SRCSUFF) + +$(MSWDIR)\gdiimage.obj: $(MSWDIR)\gdiimage.$(SRCSUFF) + +$(MSWDIR)\gdiobj.obj: $(MSWDIR)\gdiobj.$(SRCSUFF) + +$(MSWDIR)\glcanvas.obj: $(MSWDIR)\glcanvas.$(SRCSUFF) + +$(MSWDIR)\gsocket.obj: $(MSWDIR)\gsocket.c + +$(MSWDIR)\gsockmsw.obj: $(MSWDIR)\gsockmsw.c + +$(MSWDIR)\helpbest.obj: $(MSWDIR)\helpbest.$(SRCSUFF) + +$(MSWDIR)\helpchm.obj: $(MSWDIR)\helpchm.$(SRCSUFF) + +$(MSWDIR)\helpwin.obj: $(MSWDIR)\helpwin.$(SRCSUFF) + +$(MSWDIR)\icon.obj: $(MSWDIR)\icon.$(SRCSUFF) + +$(MSWDIR)\joystick.obj: $(MSWDIR)\joystick.$(SRCSUFF) + +$(MSWDIR)\main.obj: $(MSWDIR)\main.$(SRCSUFF) + +$(MSWDIR)\mimetype.obj: $(MSWDIR)\mimetype.$(SRCSUFF) + +$(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF) + +$(MSWDIR)\pen.obj: $(MSWDIR)\pen.$(SRCSUFF) + +$(MSWDIR)\popupwin.obj: $(MSWDIR)\popupwin.$(SRCSUFF) + +$(MSWDIR)\regconf.obj: $(MSWDIR)\regconf.$(SRCSUFF) + +$(MSWDIR)\region.obj: $(MSWDIR)\region.$(SRCSUFF) + +$(MSWDIR)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF) + +$(MSWDIR)\settings.obj: $(MSWDIR)\settings.$(SRCSUFF) + +$(MSWDIR)\snglinst.obj: $(MSWDIR)\snglinst.$(SRCSUFF) + +$(MSWDIR)\taskbar.obj: $(MSWDIR)\taskbar.$(SRCSUFF) + +$(MSWDIR)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF) + +$(MSWDIR)\timer.obj: $(MSWDIR)\timer.$(SRCSUFF) + +$(MSWDIR)\tooltip.obj: $(MSWDIR)\tooltip.$(SRCSUFF) + +$(MSWDIR)\toplevel.obj: $(MSWDIR)\toplevel.$(SRCSUFF) + +$(MSWDIR)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF) + +$(MSWDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF) + +$(MSWDIR)\volume.obj: $(MSWDIR)\volume.$(SRCSUFF) + +$(MSWDIR)\wave.obj: $(MSWDIR)\wave.$(SRCSUFF) + +$(MSWDIR)\window.obj: $(MSWDIR)\window.$(SRCSUFF) + + + + +!else +######################################################## +# MSW objects (compile Native or UNIV) - Native + $(MSWDIR)\accel.obj: $(MSWDIR)\accel.$(SRCSUFF) $(MSWDIR)\app.obj: $(MSWDIR)\app.$(SRCSUFF) @@ -665,6 +911,94 @@ $(MSWDIR)\wave.obj: $(MSWDIR)\wave.$(SRCSUFF) $(MSWDIR)\window.obj: $(MSWDIR)\window.$(SRCSUFF) +!endif + +!if "$(WXUSINGUNIV)" == "1" +######################################################## +# UNIV objects +$(MSWDIR)\bmpbuttn.obj: $(UNIVDIR)\bmpbuttn.$(SRCSUFF) + +$(MSWDIR)\button.obj: $(UNIVDIR)\button.$(SRCSUFF) + +$(MSWDIR)\checkbox.obj: $(UNIVDIR)\checkbox.$(SRCSUFF) + +$(MSWDIR)\checklst.obj: $(UNIVDIR)\checklst.$(SRCSUFF) + +$(MSWDIR)\choice.obj: $(UNIVDIR)\choice.$(SRCSUFF) + +$(MSWDIR)\colschem.obj: $(UNIVDIR)\colschem.$(SRCSUFF) + +$(MSWDIR)\combobox.obj: $(UNIVDIR)\combobox.$(SRCSUFF) + +$(MSWDIR)\control.obj: $(UNIVDIR)\control.$(SRCSUFF) + +$(MSWDIR)\dialog.obj: $(UNIVDIR)\dialog.$(SRCSUFF) + +$(MSWDIR)\framuniv.obj: $(UNIVDIR)\framuniv.$(SRCSUFF) + +$(MSWDIR)\gauge.obj: $(UNIVDIR)\gauge.$(SRCSUFF) + +$(MSWDIR)\inpcons.obj: $(UNIVDIR)\inpcons.$(SRCSUFF) + +$(MSWDIR)\inphand.obj: $(UNIVDIR)\inphand.$(SRCSUFF) + +$(MSWDIR)\listbox.obj: $(UNIVDIR)\listbox.$(SRCSUFF) + +$(MSWDIR)\menu.obj: $(UNIVDIR)\menu.$(SRCSUFF) + +$(MSWDIR)\notebook.obj: $(UNIVDIR)\notebook.$(SRCSUFF) + +$(MSWDIR)\radiobox.obj: $(UNIVDIR)\radiobox.$(SRCSUFF) + +$(MSWDIR)\radiobut.obj: $(UNIVDIR)\radiobut.$(SRCSUFF) + +$(MSWDIR)\renderer.obj: $(UNIVDIR)\renderer.$(SRCSUFF) + +$(MSWDIR)\scrarrow.obj: $(UNIVDIR)\scrarrow.$(SRCSUFF) + +$(MSWDIR)\scrolbar.obj: $(UNIVDIR)\scrolbar.$(SRCSUFF) + +$(MSWDIR)\scrthumb.obj: $(UNIVDIR)\scrthumb.$(SRCSUFF) + +$(MSWDIR)\slider.obj: $(UNIVDIR)\slider.$(SRCSUFF) + +$(MSWDIR)\spinbutt.obj: $(UNIVDIR)\spinbutt.$(SRCSUFF) + +$(MSWDIR)\statbmp.obj: $(UNIVDIR)\statbmp.$(SRCSUFF) + +$(MSWDIR)\statbox.obj: $(UNIVDIR)\statbox.$(SRCSUFF) + +$(MSWDIR)\statline.obj: $(UNIVDIR)\statline.$(SRCSUFF) + +$(MSWDIR)\stattext.obj: $(UNIVDIR)\stattext.$(SRCSUFF) + +$(MSWDIR)\statusbr.obj: $(UNIVDIR)\statusbr.$(SRCSUFF) + +$(MSWDIR)\textctrl.obj: $(UNIVDIR)\textctrl.$(SRCSUFF) + +$(MSWDIR)\theme.obj: $(UNIVDIR)\theme.$(SRCSUFF) + +$(MSWDIR)\toolbar.obj: $(UNIVDIR)\toolbar.$(SRCSUFF) + +$(MSWDIR)\topluniv.obj: $(UNIVDIR)\topluniv.$(SRCSUFF) + +$(MSWDIR)\winuniv.obj: $(UNIVDIR)\winuniv.$(SRCSUFF) + + + + +######################################################## +# UNIV THEME objects + +$(MSWDIR)\gtk.obj: $(UNIVTHEMEDIR)\gtk.$(SRCSUFF) + +$(MSWDIR)\metal.obj: $(UNIVTHEMEDIR)\metal.$(SRCSUFF) + +$(MSWDIR)\win32.obj: $(UNIVTHEMEDIR)\win32.$(SRCSUFF) + + + +!endif ######################################################## # Common objects (always compiled) @@ -931,9 +1265,110 @@ $(MSWDIR)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF) +!if "$(WXUSINGUNIV)" == "1" ######################################################## # Generic objects (not always compiled, depending on # whether platforms have native implementations) +# Native + + +$(MSWDIR)\accel.obj: $(GENDIR)\accel.$(SRCSUFF) + +$(MSWDIR)\busyinfo.obj: $(GENDIR)\busyinfo.$(SRCSUFF) + +$(MSWDIR)\calctrl.obj: $(GENDIR)\calctrl.$(SRCSUFF) + +$(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF) + +$(MSWDIR)\colrdlgg.obj: $(GENDIR)\colrdlgg.$(SRCSUFF) + +$(MSWDIR)\dcbuffer.obj: $(GENDIR)\dcbuffer.$(SRCSUFF) + +$(MSWDIR)\dcpsg.obj: $(GENDIR)\dcpsg.$(SRCSUFF) + +$(MSWDIR)\dirctrlg.obj: $(GENDIR)\dirctrlg.$(SRCSUFF) + +$(MSWDIR)\dirdlgg.obj: $(GENDIR)\dirdlgg.$(SRCSUFF) + +$(MSWDIR)\dragimgg.obj: $(GENDIR)\dragimgg.$(SRCSUFF) + +$(MSWDIR)\fdrepdlg.obj: $(GENDIR)\fdrepdlg.$(SRCSUFF) + +$(MSWDIR)\filedlgg.obj: $(GENDIR)\filedlgg.$(SRCSUFF) + +$(MSWDIR)\fontdlgg.obj: $(GENDIR)\fontdlgg.$(SRCSUFF) + +$(MSWDIR)\grid.obj: $(GENDIR)\grid.$(SRCSUFF) + +$(MSWDIR)\gridctrl.obj: $(GENDIR)\gridctrl.$(SRCSUFF) + +$(MSWDIR)\gridsel.obj: $(GENDIR)\gridsel.$(SRCSUFF) + +$(MSWDIR)\helpext.obj: $(GENDIR)\helpext.$(SRCSUFF) + +$(MSWDIR)\helphtml.obj: $(GENDIR)\helphtml.$(SRCSUFF) + +$(MSWDIR)\imaglist.obj: $(GENDIR)\imaglist.$(SRCSUFF) + +$(MSWDIR)\laywin.obj: $(GENDIR)\laywin.$(SRCSUFF) + +$(MSWDIR)\listctrl.obj: $(GENDIR)\listctrl.$(SRCSUFF) + +$(MSWDIR)\logg.obj: $(GENDIR)\logg.$(SRCSUFF) + +$(MSWDIR)\mdig.obj: $(GENDIR)\mdig.$(SRCSUFF) + +$(MSWDIR)\msgdlgg.obj: $(GENDIR)\msgdlgg.$(SRCSUFF) + +$(MSWDIR)\numdlgg.obj: $(GENDIR)\numdlgg.$(SRCSUFF) + +$(MSWDIR)\panelg.obj: $(GENDIR)\panelg.$(SRCSUFF) + +$(MSWDIR)\printps.obj: $(GENDIR)\printps.$(SRCSUFF) + +$(MSWDIR)\prntdlgg.obj: $(GENDIR)\prntdlgg.$(SRCSUFF) + +$(MSWDIR)\progdlgg.obj: $(GENDIR)\progdlgg.$(SRCSUFF) + +$(MSWDIR)\prop.obj: $(GENDIR)\prop.$(SRCSUFF) + +$(MSWDIR)\propform.obj: $(GENDIR)\propform.$(SRCSUFF) + +$(MSWDIR)\proplist.obj: $(GENDIR)\proplist.$(SRCSUFF) + +$(MSWDIR)\sashwin.obj: $(GENDIR)\sashwin.$(SRCSUFF) + +$(MSWDIR)\scrlwing.obj: $(GENDIR)\scrlwing.$(SRCSUFF) + +$(MSWDIR)\spinctlg.obj: $(GENDIR)\spinctlg.$(SRCSUFF) + +$(MSWDIR)\splash.obj: $(GENDIR)\splash.$(SRCSUFF) + +$(MSWDIR)\splitter.obj: $(GENDIR)\splitter.$(SRCSUFF) + +$(MSWDIR)\tabg.obj: $(GENDIR)\tabg.$(SRCSUFF) + +$(MSWDIR)\tbarsmpl.obj: $(GENDIR)\tbarsmpl.$(SRCSUFF) + +$(MSWDIR)\textdlgg.obj: $(GENDIR)\textdlgg.$(SRCSUFF) + +$(MSWDIR)\tipdlg.obj: $(GENDIR)\tipdlg.$(SRCSUFF) + +$(MSWDIR)\tipwin.obj: $(GENDIR)\tipwin.$(SRCSUFF) + +$(MSWDIR)\treectlg.obj: $(GENDIR)\treectlg.$(SRCSUFF) + +$(MSWDIR)\treelay.obj: $(GENDIR)\treelay.$(SRCSUFF) + +$(MSWDIR)\wizard.obj: $(GENDIR)\wizard.$(SRCSUFF) + + + +!else +######################################################## +# Generic objects (not always compiled, depending on +# whether platforms have native implementations) +# Native $(MSWDIR)\busyinfo.obj: $(GENDIR)\busyinfo.$(SRCSUFF) @@ -998,6 +1433,7 @@ $(MSWDIR)\treelay.obj: $(GENDIR)\treelay.$(SRCSUFF) $(MSWDIR)\wizard.obj: $(GENDIR)\wizard.$(SRCSUFF) +!endif ######################################################## # HTML objects (always compiled) @@ -1034,8 +1470,6 @@ $(MSWDIR)\m_links.obj: $(HTMLDIR)\m_links.$(SRCSUFF) $(MSWDIR)\m_list.obj: $(HTMLDIR)\m_list.$(SRCSUFF) -$(MSWDIR)\m_meta.obj: $(HTMLDIR)\m_meta.$(SRCSUFF) - $(MSWDIR)\m_pre.obj: $(HTMLDIR)\m_pre.$(SRCSUFF) $(MSWDIR)\m_style.obj: $(HTMLDIR)\m_style.$(SRCSUFF) @@ -1064,7 +1498,7 @@ all_execs: png: $(CFG) cd $(WXDIR)\src\png - ${MAKE} -f makefile.b32 + ${MAKE} -f makefile.b32 FINAL=$(FINAL) cd $(WXDIR)\src\msw clean_png: @@ -1074,7 +1508,7 @@ clean_png: zlib: $(CFG) cd $(WXDIR)\src\zlib - ${MAKE} -f makefile.b32 lib + ${MAKE} -f makefile.b32 FINAL=$(FINAL) lib cd $(WXDIR)\src\msw clean_zlib: @@ -1084,7 +1518,7 @@ clean_zlib: jpeg: $(CFG) cd $(WXDIR)\src\jpeg - ${MAKE} -f makefile.b32 + ${MAKE} -f makefile.b32 FINAL=$(FINAL) cd $(WXDIR)\src\msw clean_jpeg: @@ -1094,7 +1528,7 @@ clean_jpeg: regex: $(CFG) cd $(WXDIR)\src\regex - ${MAKE} -f makefile.b32 lib + ${MAKE} -f makefile.b32 FINAL=$(FINAL) lib cd $(WXDIR)\src\msw clean_regex: @@ -1104,7 +1538,7 @@ clean_regex: tiff: $(CFG) cd $(WXDIR)\src\tiff - ${MAKE} -f makefile.b32 lib + ${MAKE} -f makefile.b32 FINAL=$(FINAL) lib cd $(WXDIR)\src\msw clean_tiff: @@ -1131,7 +1565,7 @@ $(CFG): makefile.b32 -L$(BCCDIR)\lib;$(BCCDIR)\lib\psdk -D__WXWIN__ --D__WXMSW__ +-D$(PORT) -D__WINDOWS__ -DWIN32 $(OPT) diff --git a/src/msw/makefile.g95 b/src/msw/makefile.g95 index 1043e14499..d269f6c5a2 100644 --- a/src/msw/makefile.g95 +++ b/src/msw/makefile.g95 @@ -31,7 +31,7 @@ DLL_BASE_LDLIBS = $(DLL_EXTRA_LIBS) -lstdc++ -lwsock32 ifeq ($(wxUSE_GUI),0) DLL_LDLIBS = $(DLL_BASE_LDLIBS) else - DLL_LDLIBS = -mwindows -lcomctl32 -lctl3d32 -lole32 -loleaut32 \ + DLL_LDLIBS = -lcomctl32 -lctl3d32 -lole32 -loleaut32 \ -luuid -lrpcrt4 -lodbc32 -lwinmm -lopengl32 \ $(DLL_BASE_LDLIBS) endif @@ -62,15 +62,12 @@ DOCDIR = $(WXDIR)/docs # Only use the WIN32 wxDirDialog if we have a recent # version of Mingw32 -ifeq ($(MINGW32),1) - ifneq "$(_GCC295)$(_GCC3)" "" +ifeq "$(strip $(RECENT_MINGW))" "yes" DIRDLGOBJ = $(MSWDIR)/dirdlg.$(OBJSUFF) - else - DIRDLGOBJ = $(GENDIR)/dirdlgg.$(OBJSUFF) - endif else DIRDLGOBJ = $(GENDIR)/dirdlgg.$(OBJSUFF) endif + ifeq ($(wxUSE_GUI),0) DIRDLGOBJ = endif @@ -266,7 +263,6 @@ HTMLOBJS = \ $(HTMLDIR)/m_layout.$(OBJSUFF) \ $(HTMLDIR)/m_links.$(OBJSUFF) \ $(HTMLDIR)/m_list.$(OBJSUFF) \ - $(HTMLDIR)/m_meta.$(OBJSUFF) \ $(HTMLDIR)/m_pre.$(OBJSUFF) \ $(HTMLDIR)/m_style.$(OBJSUFF) \ $(HTMLDIR)/m_tables.$(OBJSUFF) \ @@ -508,12 +504,8 @@ TIFFOBJS = $(TIFFDIR)/tif_aux.o \ $(TIFFDIR)/tif_write.o \ $(TIFFDIR)/tif_zip.o -ifeq ($(MINGW32),1) - ifneq "$(_GCC295)$(_GCC3)" "" - OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) $(ADVANCEDOBJS) - else - OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) - endif +ifeq "$(strip $(RECENT_MINGW))" "yes" + OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) $(ADVANCEDOBJS) else OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) endif @@ -546,9 +538,12 @@ $(ARCHINCDIR)/wx: mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR)) mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR)/wx) -$(SETUP_H): $(ARCHINCDIR)/wx - $(COPY) $(WXDIR)/include/wx/msw/setup.h $@ +# Copy ALWAYS uses forward slashes now. +$(SETUP_H): $(ARCHINCDIR)/wx $(WXDIR)/include/wx/msw/setup.h + $(COPY) $(WXDIR)/include/wx/msw/setup.h $(subst $(BACKSLASH),/,$@) + +# $(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 @@ -564,11 +559,12 @@ else ifeq "$(strip $(LD_SUPPORTS_SHARED))" "yes" $(WXDLL): $(OBJECTS) $(EXTRAOBJS) - $(CC) -shared -o $@ \ + $(CXX) -shared -o $@ \ -Wl,--output-def,$(WXDEF) \ -Wl,--out-implib,$(WXLIB) \ $(OBJECTS) $(EXTRAOBJS) \ - $(DLL_LDFLAGS) $(DLL_LDLIBS) + $(DLL_LDFLAGS) $(DLL_LDLIBS) \ + $(ALL_LDFLAGS_DLL) else ifeq ($(MINGW32),1) @@ -589,11 +585,11 @@ $(WXDEF) $(WXLIB): $(OBJECTS) $(EXTRAOBJS) $(OBJECTS) $(EXTRAOBJS) $(DLL_EXTRA_LIBS) $(WXDLL): $(OBJECTS) $(EXTRAOBJS) $(WXDEF) - $(CC) -mdll -Wl,--base-file,wx.base -s -o $@ $(LD_STUFF) + $(CC) -mdll -Wl,--base-file,wx.base -s -o $@ $(LD_STUFF) $(ALL_LDFLAGS_DLL) $(DLLTOOL) $(DLL_STUFF) - $(CC) -mdll -Wl,--base-file,wx.base wx.exp -s -o $@ $(LD_STUFF) + $(CC) -mdll -Wl,--base-file,wx.base wx.exp -s -o $@ $(LD_STUFF) $(ALL_LDFLAGS_DLL) $(DLLTOOL) $(DLL_STUFF) - $(CC) -mdll wx.exp -o $@ $(LD_STUFF) + $(CC) -mdll wx.exp -o $@ $(LD_STUFF) $(ALL_LDFLAGS_DLL) -$(RM) wx.base -$(RM) wx.exp @@ -624,7 +620,7 @@ $(REGEXLIB): $(OBJECTS): $(WXINC)/wx/defs.h $(WXINC)/wx/object.h $(ARCHINCDIR)/wx/setup.h $(COMMDIR)/y_tab.$(OBJSUFF): $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c - $(CCLEX) -c $(CPPFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c + $(CCLEX) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c $(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c $(COPY) ../common/dosyacc.c ../common/y_tab.c diff --git a/src/msw/makefile.vc b/src/msw/makefile.vc index b765ac772b..96b7f055e7 100644 --- a/src/msw/makefile.vc +++ b/src/msw/makefile.vc @@ -35,7 +35,7 @@ PERIPH_CLEAN_TARGET= # Set to 0 if not using GLCanvas (only affects DLL build) USE_GLCANVAS=1 -# Set to 0 if you are using MSVC 5 +# Set to 1 if you are using MSVC 5 USE_MSVC_5=0 # These are absolute paths, so that the compiler @@ -124,6 +124,7 @@ GENERICOBJS= $(GENDIR)\$D\busyinfo.obj \ # but sometimes it's useful to do so for testing purposes. NONESSENTIALOBJS= $(GENDIR)\$D\colrdlgg.obj \ $(GENDIR)\$D\dirdlgg.obj \ + $(GENDIR)\$D\filedlgg.obj \ $(GENDIR)\$D\fontdlgg.obj \ $(GENDIR)\$D\helpext.obj \ $(GENDIR)\$D\helphtml.obj \ @@ -394,7 +395,6 @@ HTMLOBJS = $(HTMLDIR)\$D\helpctrl.obj \ $(HTMLDIR)\$D\m_layout.obj \ $(HTMLDIR)\$D\m_links.obj \ $(HTMLDIR)\$D\m_list.obj \ - $(HTMLDIR)\$D\m_meta.obj \ $(HTMLDIR)\$D\m_pre.obj \ $(HTMLDIR)\$D\m_style.obj \ $(HTMLDIR)\$D\m_tables.obj \ @@ -535,7 +535,7 @@ $(WXDIR)\lib\$(WXLIBNAME).dll: $(DUMMYOBJ) $(OBJECTS) $(link) @<< $(LINKFLAGS) $(INCREMENTAL) -out:$(WXDIR)\lib\$(WXLIBNAME).dll - $(DUMMYOBJ) $(OBJECTS) $(MSLU_LIBS) $(guilibsdll) shell32.lib comctl32.lib ctl3d32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib odbc32.lib advapi32.lib winmm.lib $(GL_LIBS) $(WXDIR)\lib\png$(LIBEXT).lib $(WXDIR)\lib\zlib$(LIBEXT).lib $(WXDIR)\lib\jpeg$(LIBEXT).lib $(WXDIR)\lib\tiff$(LIBEXT).lib $(WXDIR)\lib\regex$(LIBEXT).lib $(DELAY_LOAD) + $(DUMMYOBJ) $(OBJECTS) $(MSLU_LIBS) $(guilibsdll) shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib odbc32.lib advapi32.lib winmm.lib $(GL_LIBS) $(WXDIR)\lib\png$(LIBEXT).lib $(WXDIR)\lib\zlib$(LIBEXT).lib $(WXDIR)\lib\jpeg$(LIBEXT).lib $(WXDIR)\lib\tiff$(LIBEXT).lib $(WXDIR)\lib\regex$(LIBEXT).lib $(DELAY_LOAD) << !endif @@ -830,23 +830,30 @@ $(DOCDIR)/pdf/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/ -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/pdf/wx.rtf -twice -rtf cd $(THISDIR) +# This target does two sets of HTML: one using a style sheet, for +# the purposes of the CHM file, and one without. $(DOCDIR)\html\wx\wx.htm: $(DOCDIR)\latex\wx\classes.tex $(DOCDIR)\latex\wx\body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)\latex\wx\manual.tex cd $(DOCDIR)\latex\wx -mkdir $(DOCDIR)\html\wx copy *.gif $(DOCDIR)\html\wx -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\html\wx\wx.htm -twice -html + -mkdir $(DOCDIR)\mshtml + -mkdir $(DOCDIR)\mshtml\wx + copy *.gif $(DOCDIR)\mshtml\wx + -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\mshtml\wx\wx.htm -twice -html -macros $(DOCDIR)\latex\wx\tex2rtf_css.ini -erase $(DOCDIR)\html\wx\*.con -erase $(DOCDIR)\html\wx\*.ref -erase $(DOCDIR)\latex\wx\*.con -erase $(DOCDIR)\latex\wx\*.ref cd $(THISDIR) -$(DOCDIR)\htmlhelp\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\html\wx\wx.hhp - cd $(DOCDIR)\html\wx +$(DOCDIR)\htmlhelp\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\mshtml\wx\wx.htm $(DOCDIR)\mshtml\wx\wx.hhp + cd $(DOCDIR)\mshtml\wx + copy $(DOCDIR)\latex\wx\wx.css . -hhc wx.hhp - -mkdir ..\..\htmlhelp - -erase $(DOCDIR)\htmlhelp\wx.chm - move wx.chm ..\..\htmlhelp + -mkdir ..\..\htmlhelp + -erase $(DOCDIR)\htmlhelp\wx.chm + move wx.chm ..\..\htmlhelp cd $(THISDIR) $(WXDIR)\docs\latex\wx\manual.dvi: $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/manual.tex diff --git a/src/msw/makefile.wat b/src/msw/makefile.wat index d3ccc4b0e0..07e3a525c6 100644 --- a/src/msw/makefile.wat +++ b/src/msw/makefile.wat @@ -9,25 +9,9 @@ # Created: 1998 # # Makefile : Builds wxWindows library for Watcom C++, WIN32 -# -# 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: -# -# - OLE-related files such as oleutils.cpp should have 'ole\' prepended -# to the path. -# - extended.c, gsocket.c, unzip.c must be compiled using $(CC), not $(CCC). -# They may also be wrongly specified as extended.cpp, etc. +!include ..\makewat.env -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib - -LIBTARGET = $(WXLIB)\wx.lib -DUMMY=dummydll -# ODBCLIB = ..\..\contrib\odbc\odbc32.lib +LIBTARGET = $(WXDIR)\lib\$(LIBNAME).lib EXTRATARGETS = png zlib jpeg tiff regex EXTRATARGETSCLEAN = clean_png clean_zlib clean_jpeg clean_tiff clean_regex @@ -41,354 +25,348 @@ HTMLDIR=$(WXDIR)\src\html DOCDIR = $(WXDIR)\docs -GENERICOBJS= busyinfo.obj & - calctrl.obj & - choicdgg.obj & - dcbuffer.obj & - dcpsg.obj & - dirctrlg.obj & - dragimgg.obj & - grid.obj & - gridctrl.obj & - gridsel.obj & - laywin.obj & - logg.obj & - numdlgg.obj & - panelg.obj & - progdlgg.obj & - prop.obj & - propform.obj & - proplist.obj & - sashwin.obj & - scrlwing.obj & - spinctlg.obj & - splash.obj & - splitter.obj & - statusbr.obj & - tbarsmpl.obj & - textdlgg.obj & - tipdlg.obj & - tipwin.obj & - treectlg.obj & - treelay.obj & - wizard.obj +GENERICOBJS= $(OUTPUTDIR)\busyinfo.obj & + $(OUTPUTDIR)\calctrl.obj & + $(OUTPUTDIR)\choicdgg.obj & + $(OUTPUTDIR)\dcbuffer.obj & + $(OUTPUTDIR)\dcpsg.obj & + $(OUTPUTDIR)\dirctrlg.obj & + $(OUTPUTDIR)\dragimgg.obj & + $(OUTPUTDIR)\grid.obj & + $(OUTPUTDIR)\gridctrl.obj & + $(OUTPUTDIR)\gridsel.obj & + $(OUTPUTDIR)\laywin.obj & + $(OUTPUTDIR)\logg.obj & + $(OUTPUTDIR)\numdlgg.obj & + $(OUTPUTDIR)\panelg.obj & + $(OUTPUTDIR)\progdlgg.obj & + $(OUTPUTDIR)\prop.obj & + $(OUTPUTDIR)\propform.obj & + $(OUTPUTDIR)\proplist.obj & + $(OUTPUTDIR)\sashwin.obj & + $(OUTPUTDIR)\scrlwing.obj & + $(OUTPUTDIR)\spinctlg.obj & + $(OUTPUTDIR)\splash.obj & + $(OUTPUTDIR)\splitter.obj & + $(OUTPUTDIR)\statusbr.obj & + $(OUTPUTDIR)\tbarsmpl.obj & + $(OUTPUTDIR)\textdlgg.obj & + $(OUTPUTDIR)\tipdlg.obj & + $(OUTPUTDIR)\tipwin.obj & + $(OUTPUTDIR)\treectlg.obj & + $(OUTPUTDIR)\treelay.obj & + $(OUTPUTDIR)\wizard.obj # These are generic things that don't need to be compiled on MSW, # but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= accel.obj & - caret.obj & - colrdlgg.obj & - dirdlgg.obj & - fdrepdlg.obj & - filedlgg.obj & - fontdlgg.obj & - helpext.obj & - helphtml.obj & - imaglist.obj & - listctrl.obj & - mdig.obj & - msgdlgg.obj & - notebook.obj & - paletteg.obj & - printps.obj & - prntdlgg.obj & - statline.obj & - tabg.obj & - timer.obj +NONESSENTIALOBJS= $(OUTPUTDIR)\accel.obj & + $(OUTPUTDIR)\caret.obj & + $(OUTPUTDIR)\colrdlgg.obj & + $(OUTPUTDIR)\dirdlgg.obj & + $(OUTPUTDIR)\fdrepdlg.obj & + $(OUTPUTDIR)\filedlgg.obj & + $(OUTPUTDIR)\fontdlgg.obj & + $(OUTPUTDIR)\helpext.obj & + $(OUTPUTDIR)\helphtml.obj & + $(OUTPUTDIR)\imaglist.obj & + $(OUTPUTDIR)\listctrl.obj & + $(OUTPUTDIR)\mdig.obj & + $(OUTPUTDIR)\msgdlgg.obj & + $(OUTPUTDIR)\notebook.obj & + $(OUTPUTDIR)\paletteg.obj & + $(OUTPUTDIR)\printps.obj & + $(OUTPUTDIR)\prntdlgg.obj & + $(OUTPUTDIR)\statline.obj & + $(OUTPUTDIR)\tabg.obj & + $(OUTPUTDIR)\timer.obj COMMONOBJS = & - y_tab.obj & - appcmn.obj & - artprov.obj & - artstd.obj & - choiccmn.obj & - clipcmn.obj & - clntdata.obj & - cmdline.obj & - cmdproc.obj & - cmndata.obj & - config.obj & - containr.obj & - cshelp.obj & - ctrlcmn.obj & - ctrlsub.obj & - datetime.obj & - datstrm.obj & - db.obj & - dbgrid.obj & - dbtable.obj & - dcbase.obj & - dircmn.obj & - dlgcmn.obj & - dndcmn.obj & - dobjcmn.obj & - docmdi.obj & - docview.obj & - dseldlg.obj & - dynarray.obj & - dynlib.obj & - dynload.obj & - effects.obj & - encconv.obj & - event.obj & - extended.obj & - fddlgcmn.obj & - ffile.obj & - file.obj & - fileconf.obj & - filefn.obj & - filename.obj & - filesys.obj & - fontcmn.obj & - fontmap.obj & - framecmn.obj & - fs_inet.obj & - fs_mem.obj & - fs_zip.obj & - ftp.obj & - gaugecmn.obj & - gdicmn.obj & - geometry.obj & - gifdecod.obj & - hash.obj & - hashmap.obj & - helpbase.obj & - http.obj & - iconbndl.obj & - imagall.obj & - imagbmp.obj & - image.obj & - imagfill.obj & - imaggif.obj & - imagiff.obj & - imagjpeg.obj & - imagpcx.obj & - imagpng.obj & - imagpnm.obj & - imagtiff.obj & - imagxpm.obj & - intl.obj & - ipcbase.obj & - layout.obj & - lboxcmn.obj & - list.obj & - log.obj & - longlong.obj & - matrix.obj & - memory.obj & - menucmn.obj & - mimecmn.obj & - module.obj & - msgout.obj & - mstream.obj & - nbkbase.obj & - object.obj & - odbc.obj & - paper.obj & - popupcmn.obj & - prntbase.obj & - process.obj & - protocol.obj & - quantize.obj & - radiocmn.obj & - regex.obj & - resource.obj & - sckaddr.obj & - sckfile.obj & - sckipc.obj & - sckstrm.obj & - settcmn.obj & - sizer.obj & - socket.obj & - statbar.obj & - strconv.obj & - stream.obj & - string.obj & - sysopt.obj & - tbarbase.obj & - textbuf.obj & - textcmn.obj & - textfile.obj & - timercmn.obj & - tokenzr.obj & - toplvcmn.obj & - treebase.obj & - txtstrm.obj & - unzip.obj & - url.obj & - utilscmn.obj & - valgen.obj & - validate.obj & - valtext.obj & - variant.obj & - wfstream.obj & - wincmn.obj & - wxchar.obj & - wxexpr.obj & - xpmdecod.obj & - zipstrm.obj & - zstream.obj + $(OUTPUTDIR)\y_tab.obj & + $(OUTPUTDIR)\appcmn.obj & + $(OUTPUTDIR)\artprov.obj & + $(OUTPUTDIR)\artstd.obj & + $(OUTPUTDIR)\choiccmn.obj & + $(OUTPUTDIR)\clipcmn.obj & + $(OUTPUTDIR)\clntdata.obj & + $(OUTPUTDIR)\cmdline.obj & + $(OUTPUTDIR)\cmdproc.obj & + $(OUTPUTDIR)\cmndata.obj & + $(OUTPUTDIR)\config.obj & + $(OUTPUTDIR)\containr.obj & + $(OUTPUTDIR)\cshelp.obj & + $(OUTPUTDIR)\ctrlcmn.obj & + $(OUTPUTDIR)\ctrlsub.obj & + $(OUTPUTDIR)\datetime.obj & + $(OUTPUTDIR)\datstrm.obj & + $(OUTPUTDIR)\db.obj & + $(OUTPUTDIR)\dbgrid.obj & + $(OUTPUTDIR)\dbtable.obj & + $(OUTPUTDIR)\dcbase.obj & + $(OUTPUTDIR)\dircmn.obj & + $(OUTPUTDIR)\dlgcmn.obj & + $(OUTPUTDIR)\dndcmn.obj & + $(OUTPUTDIR)\dobjcmn.obj & + $(OUTPUTDIR)\docmdi.obj & + $(OUTPUTDIR)\docview.obj & + $(OUTPUTDIR)\dseldlg.obj & + $(OUTPUTDIR)\dynarray.obj & + $(OUTPUTDIR)\dynlib.obj & + $(OUTPUTDIR)\dynload.obj & + $(OUTPUTDIR)\effects.obj & + $(OUTPUTDIR)\encconv.obj & + $(OUTPUTDIR)\event.obj & + $(OUTPUTDIR)\extended.obj & + $(OUTPUTDIR)\fddlgcmn.obj & + $(OUTPUTDIR)\ffile.obj & + $(OUTPUTDIR)\file.obj & + $(OUTPUTDIR)\fileconf.obj & + $(OUTPUTDIR)\filefn.obj & + $(OUTPUTDIR)\filename.obj & + $(OUTPUTDIR)\filesys.obj & + $(OUTPUTDIR)\fontcmn.obj & + $(OUTPUTDIR)\fontmap.obj & + $(OUTPUTDIR)\framecmn.obj & + $(OUTPUTDIR)\fs_inet.obj & + $(OUTPUTDIR)\fs_mem.obj & + $(OUTPUTDIR)\fs_zip.obj & + $(OUTPUTDIR)\ftp.obj & + $(OUTPUTDIR)\gaugecmn.obj & + $(OUTPUTDIR)\gdicmn.obj & + $(OUTPUTDIR)\geometry.obj & + $(OUTPUTDIR)\gifdecod.obj & + $(OUTPUTDIR)\hash.obj & + $(OUTPUTDIR)\hashmap.obj & + $(OUTPUTDIR)\helpbase.obj & + $(OUTPUTDIR)\http.obj & + $(OUTPUTDIR)\iconbndl.obj & + $(OUTPUTDIR)\imagall.obj & + $(OUTPUTDIR)\imagbmp.obj & + $(OUTPUTDIR)\image.obj & + $(OUTPUTDIR)\imagfill.obj & + $(OUTPUTDIR)\imaggif.obj & + $(OUTPUTDIR)\imagiff.obj & + $(OUTPUTDIR)\imagjpeg.obj & + $(OUTPUTDIR)\imagpcx.obj & + $(OUTPUTDIR)\imagpng.obj & + $(OUTPUTDIR)\imagpnm.obj & + $(OUTPUTDIR)\imagtiff.obj & + $(OUTPUTDIR)\imagxpm.obj & + $(OUTPUTDIR)\intl.obj & + $(OUTPUTDIR)\ipcbase.obj & + $(OUTPUTDIR)\layout.obj & + $(OUTPUTDIR)\lboxcmn.obj & + $(OUTPUTDIR)\list.obj & + $(OUTPUTDIR)\log.obj & + $(OUTPUTDIR)\longlong.obj & + $(OUTPUTDIR)\matrix.obj & + $(OUTPUTDIR)\memory.obj & + $(OUTPUTDIR)\menucmn.obj & + $(OUTPUTDIR)\mimecmn.obj & + $(OUTPUTDIR)\module.obj & + $(OUTPUTDIR)\msgout.obj & + $(OUTPUTDIR)\mstream.obj & + $(OUTPUTDIR)\nbkbase.obj & + $(OUTPUTDIR)\object.obj & + $(OUTPUTDIR)\odbc.obj & + $(OUTPUTDIR)\paper.obj & + $(OUTPUTDIR)\popupcmn.obj & + $(OUTPUTDIR)\prntbase.obj & + $(OUTPUTDIR)\process.obj & + $(OUTPUTDIR)\protocol.obj & + $(OUTPUTDIR)\quantize.obj & + $(OUTPUTDIR)\radiocmn.obj & + $(OUTPUTDIR)\regex.obj & + $(OUTPUTDIR)\resource.obj & + $(OUTPUTDIR)\sckaddr.obj & + $(OUTPUTDIR)\sckfile.obj & + $(OUTPUTDIR)\sckipc.obj & + $(OUTPUTDIR)\sckstrm.obj & + $(OUTPUTDIR)\settcmn.obj & + $(OUTPUTDIR)\sizer.obj & + $(OUTPUTDIR)\socket.obj & + $(OUTPUTDIR)\statbar.obj & + $(OUTPUTDIR)\strconv.obj & + $(OUTPUTDIR)\stream.obj & + $(OUTPUTDIR)\string.obj & + $(OUTPUTDIR)\sysopt.obj & + $(OUTPUTDIR)\tbarbase.obj & + $(OUTPUTDIR)\textbuf.obj & + $(OUTPUTDIR)\textcmn.obj & + $(OUTPUTDIR)\textfile.obj & + $(OUTPUTDIR)\timercmn.obj & + $(OUTPUTDIR)\tokenzr.obj & + $(OUTPUTDIR)\toplvcmn.obj & + $(OUTPUTDIR)\treebase.obj & + $(OUTPUTDIR)\txtstrm.obj & + $(OUTPUTDIR)\unzip.obj & + $(OUTPUTDIR)\url.obj & + $(OUTPUTDIR)\utilscmn.obj & + $(OUTPUTDIR)\valgen.obj & + $(OUTPUTDIR)\validate.obj & + $(OUTPUTDIR)\valtext.obj & + $(OUTPUTDIR)\variant.obj & + $(OUTPUTDIR)\wfstream.obj & + $(OUTPUTDIR)\wincmn.obj & + $(OUTPUTDIR)\wxchar.obj & + $(OUTPUTDIR)\wxexpr.obj & + $(OUTPUTDIR)\xpmdecod.obj & + $(OUTPUTDIR)\zipstrm.obj & + $(OUTPUTDIR)\zstream.obj -MSWOBJS = accel.obj & - app.obj & - automtn.obj & - bitmap.obj & - bmpbuttn.obj & - brush.obj & - button.obj & - caret.obj & - checkbox.obj & - checklst.obj & - choice.obj & - clipbrd.obj & - colordlg.obj & - colour.obj & - combobox.obj & - control.obj & - curico.obj & - cursor.obj & - data.obj & - dataobj.obj & - dc.obj & - dcclient.obj & - dcmemory.obj & - dcprint.obj & - dcscreen.obj & - dde.obj & - dialog.obj & - dialup.obj & - dib.obj & - dibutils.obj & - dir.obj & - dirdlg.obj & - dragimag.obj & - dropsrc.obj & - droptgt.obj & - enhmeta.obj & - evtloop.obj & - fdrepdlg.obj & - filedlg.obj & - font.obj & - fontdlg.obj & - fontenum.obj & - fontutil.obj & - frame.obj & - gauge95.obj & - gaugemsw.obj & - gdiimage.obj & - gdiobj.obj & - glcanvas.obj & - gsocket.obj & - gsockmsw.obj & - helpbest.obj & - helpchm.obj & - helpwin.obj & - icon.obj & - imaglist.obj & - iniconf.obj & - joystick.obj & - listbox.obj & - listctrl.obj & - main.obj & - mdi.obj & - menu.obj & - menuitem.obj & - metafile.obj & - mimetype.obj & - minifram.obj & - msgdlg.obj & - mslu.obj & - nativdlg.obj & - notebook.obj & - oleutils.obj & - ownerdrw.obj & - palette.obj & - pen.obj & - penwin.obj & - popupwin.obj & - printdlg.obj & - printwin.obj & - radiobox.obj & - radiobut.obj & - regconf.obj & - region.obj & - registry.obj & - scrolbar.obj & - settings.obj & - slider95.obj & - slidrmsw.obj & - snglinst.obj & - spinbutt.obj & - spinctrl.obj & - statbmp.obj & - statbox.obj & - statbr95.obj & - statline.obj & - stattext.obj & - tabctrl.obj & - taskbar.obj & - tbar95.obj & - tbarmsw.obj & - textctrl.obj & - tglbtn.obj & - thread.obj & - timer.obj & - tooltip.obj & - toplevel.obj & - treectrl.obj & - utils.obj & - utilsexc.obj & - uuid.obj & - volume.obj & - wave.obj & - window.obj +MSWOBJS = $(OUTPUTDIR)\accel.obj & + $(OUTPUTDIR)\app.obj & + $(OUTPUTDIR)\automtn.obj & + $(OUTPUTDIR)\bitmap.obj & + $(OUTPUTDIR)\bmpbuttn.obj & + $(OUTPUTDIR)\brush.obj & + $(OUTPUTDIR)\button.obj & + $(OUTPUTDIR)\caret.obj & + $(OUTPUTDIR)\checkbox.obj & + $(OUTPUTDIR)\checklst.obj & + $(OUTPUTDIR)\choice.obj & + $(OUTPUTDIR)\clipbrd.obj & + $(OUTPUTDIR)\colordlg.obj & + $(OUTPUTDIR)\colour.obj & + $(OUTPUTDIR)\combobox.obj & + $(OUTPUTDIR)\control.obj & + $(OUTPUTDIR)\curico.obj & + $(OUTPUTDIR)\cursor.obj & + $(OUTPUTDIR)\data.obj & + $(OUTPUTDIR)\dataobj.obj & + $(OUTPUTDIR)\dc.obj & + $(OUTPUTDIR)\dcclient.obj & + $(OUTPUTDIR)\dcmemory.obj & + $(OUTPUTDIR)\dcprint.obj & + $(OUTPUTDIR)\dcscreen.obj & + $(OUTPUTDIR)\dde.obj & + $(OUTPUTDIR)\dialog.obj & + $(OUTPUTDIR)\dialup.obj & + $(OUTPUTDIR)\dib.obj & + $(OUTPUTDIR)\dibutils.obj & + $(OUTPUTDIR)\dir.obj & + $(OUTPUTDIR)\dirdlg.obj & + $(OUTPUTDIR)\dragimag.obj & + $(OUTPUTDIR)\dropsrc.obj & + $(OUTPUTDIR)\droptgt.obj & + $(OUTPUTDIR)\enhmeta.obj & + $(OUTPUTDIR)\evtloop.obj & + $(OUTPUTDIR)\fdrepdlg.obj & + $(OUTPUTDIR)\filedlg.obj & + $(OUTPUTDIR)\font.obj & + $(OUTPUTDIR)\fontdlg.obj & + $(OUTPUTDIR)\fontenum.obj & + $(OUTPUTDIR)\fontutil.obj & + $(OUTPUTDIR)\frame.obj & + $(OUTPUTDIR)\gauge95.obj & + $(OUTPUTDIR)\gdiimage.obj & + $(OUTPUTDIR)\gdiobj.obj & + $(OUTPUTDIR)\glcanvas.obj & + $(OUTPUTDIR)\gsocket.obj & + $(OUTPUTDIR)\gsockmsw.obj & + $(OUTPUTDIR)\helpbest.obj & + $(OUTPUTDIR)\helpchm.obj & + $(OUTPUTDIR)\helpwin.obj & + $(OUTPUTDIR)\icon.obj & + $(OUTPUTDIR)\imaglist.obj & + $(OUTPUTDIR)\iniconf.obj & + $(OUTPUTDIR)\joystick.obj & + $(OUTPUTDIR)\listbox.obj & + $(OUTPUTDIR)\listctrl.obj & + $(OUTPUTDIR)\main.obj & + $(OUTPUTDIR)\mdi.obj & + $(OUTPUTDIR)\menu.obj & + $(OUTPUTDIR)\menuitem.obj & + $(OUTPUTDIR)\metafile.obj & + $(OUTPUTDIR)\mimetype.obj & + $(OUTPUTDIR)\minifram.obj & + $(OUTPUTDIR)\msgdlg.obj & + $(OUTPUTDIR)\mslu.obj & + $(OUTPUTDIR)\nativdlg.obj & + $(OUTPUTDIR)\notebook.obj & + $(OUTPUTDIR)\oleutils.obj & + $(OUTPUTDIR)\ownerdrw.obj & + $(OUTPUTDIR)\palette.obj & + $(OUTPUTDIR)\pen.obj & + $(OUTPUTDIR)\penwin.obj & + $(OUTPUTDIR)\popupwin.obj & + $(OUTPUTDIR)\printdlg.obj & + $(OUTPUTDIR)\printwin.obj & + $(OUTPUTDIR)\radiobox.obj & + $(OUTPUTDIR)\radiobut.obj & + $(OUTPUTDIR)\regconf.obj & + $(OUTPUTDIR)\region.obj & + $(OUTPUTDIR)\registry.obj & + $(OUTPUTDIR)\scrolbar.obj & + $(OUTPUTDIR)\settings.obj & + $(OUTPUTDIR)\slider95.obj & + $(OUTPUTDIR)\snglinst.obj & + $(OUTPUTDIR)\spinbutt.obj & + $(OUTPUTDIR)\spinctrl.obj & + $(OUTPUTDIR)\statbmp.obj & + $(OUTPUTDIR)\statbox.obj & + $(OUTPUTDIR)\statbr95.obj & + $(OUTPUTDIR)\statline.obj & + $(OUTPUTDIR)\stattext.obj & + $(OUTPUTDIR)\tabctrl.obj & + $(OUTPUTDIR)\taskbar.obj & + $(OUTPUTDIR)\tbar95.obj & + $(OUTPUTDIR)\textctrl.obj & + $(OUTPUTDIR)\tglbtn.obj & + $(OUTPUTDIR)\thread.obj & + $(OUTPUTDIR)\timer.obj & + $(OUTPUTDIR)\tooltip.obj & + $(OUTPUTDIR)\toplevel.obj & + $(OUTPUTDIR)\treectrl.obj & + $(OUTPUTDIR)\utils.obj & + $(OUTPUTDIR)\utilsexc.obj & + $(OUTPUTDIR)\uuid.obj & + $(OUTPUTDIR)\volume.obj & + $(OUTPUTDIR)\wave.obj & + $(OUTPUTDIR)\window.obj -HTMLOBJS = helpctrl.obj & - helpdata.obj & - helpfrm.obj & - htmlcell.obj & - htmlfilt.obj & - htmlpars.obj & - htmltag.obj & - htmlwin.obj & - htmprint.obj & - m_dflist.obj & - m_fonts.obj & - m_hline.obj & - m_image.obj & - m_layout.obj & - m_links.obj & - m_list.obj & - m_meta.obj & - m_pre.obj & - m_style.obj & - m_tables.obj & - winpars.obj +HTMLOBJS = $(OUTPUTDIR)\helpctrl.obj & + $(OUTPUTDIR)\helpdata.obj & + $(OUTPUTDIR)\helpfrm.obj & + $(OUTPUTDIR)\htmlcell.obj & + $(OUTPUTDIR)\htmlfilt.obj & + $(OUTPUTDIR)\htmlpars.obj & + $(OUTPUTDIR)\htmltag.obj & + $(OUTPUTDIR)\htmlwin.obj & + $(OUTPUTDIR)\htmprint.obj & + $(OUTPUTDIR)\m_dflist.obj & + $(OUTPUTDIR)\m_fonts.obj & + $(OUTPUTDIR)\m_hline.obj & + $(OUTPUTDIR)\m_image.obj & + $(OUTPUTDIR)\m_layout.obj & + $(OUTPUTDIR)\m_links.obj & + $(OUTPUTDIR)\m_list.obj & + $(OUTPUTDIR)\m_pre.obj & + $(OUTPUTDIR)\m_style.obj & + $(OUTPUTDIR)\m_tables.obj & + $(OUTPUTDIR)\winpars.obj # Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS) -ARCHINCDIR=$(WXDIR)\lib\msw SETUP_H=$(ARCHINCDIR)\wx\setup.h -all: $(SETUP_H) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC +all: $(SETUP_H) $(OUTPUTDIR) $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) .SYMBOLIC $(ARCHINCDIR)\wx: - mkdir $(ARCHINCDIR) - mkdir $(ARCHINCDIR)\wx + mkdir $(ARCHINCDIR) + mkdir $(ARCHINCDIR)\wx + +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ $(SETUP_H): $(WXDIR)\include\wx\msw\setup.h $(ARCHINCDIR)\wx - copy $(WXDIR)\include\wx\msw\setup.h $@ + copy $(WXDIR)\include\wx\msw\setup.h $@ +LBCFILE=wx$(TOOLKIT).lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc - -#test : $(OBJECTS) -# %create tmp.lbc -# @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i -# wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /b /c /n $(LIBPAGESIZE) $^@ @$(LBCFILE) clean: .SYMBOLIC $(EXTRATARGETSCLEAN) @@ -400,746 +378,735 @@ clean: .SYMBOLIC $(EXTRATARGETSCLEAN) cleanall: clean -accel.obj: $(MSWDIR)\accel.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\accel.obj: $(MSWDIR)\accel.cpp + *$(CXX) $(CXXFLAGS) $< -app.obj: $(MSWDIR)\app.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\app.obj: $(MSWDIR)\app.cpp + *$(CXX) $(CXXFLAGS) $< -automtn.obj: $(OLEDIR)\automtn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\automtn.obj: $(OLEDIR)\automtn.cpp + *$(CXX) $(CXXFLAGS) $< -bitmap.obj: $(MSWDIR)\bitmap.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\bitmap.obj: $(MSWDIR)\bitmap.cpp + *$(CXX) $(CXXFLAGS) $< -bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp + *$(CXX) $(CXXFLAGS) $< -brush.obj: $(MSWDIR)\brush.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\brush.obj: $(MSWDIR)\brush.cpp + *$(CXX) $(CXXFLAGS) $< -button.obj: $(MSWDIR)\button.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\button.obj: $(MSWDIR)\button.cpp + *$(CXX) $(CXXFLAGS) $< -caret.obj: $(MSWDIR)\caret.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\caret.obj: $(MSWDIR)\caret.cpp + *$(CXX) $(CXXFLAGS) $< -checkbox.obj: $(MSWDIR)\checkbox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\checkbox.obj: $(MSWDIR)\checkbox.cpp + *$(CXX) $(CXXFLAGS) $< -checklst.obj: $(MSWDIR)\checklst.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\checklst.obj: $(MSWDIR)\checklst.cpp + *$(CXX) $(CXXFLAGS) $< -choice.obj: $(MSWDIR)\choice.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\choice.obj: $(MSWDIR)\choice.cpp + *$(CXX) $(CXXFLAGS) $< -clipbrd.obj: $(MSWDIR)\clipbrd.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\clipbrd.obj: $(MSWDIR)\clipbrd.cpp + *$(CXX) $(CXXFLAGS) $< -colordlg.obj: $(MSWDIR)\colordlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\colordlg.obj: $(MSWDIR)\colordlg.cpp + *$(CXX) $(CXXFLAGS) $< -colour.obj: $(MSWDIR)\colour.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\colour.obj: $(MSWDIR)\colour.cpp + *$(CXX) $(CXXFLAGS) $< -combobox.obj: $(MSWDIR)\combobox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\combobox.obj: $(MSWDIR)\combobox.cpp + *$(CXX) $(CXXFLAGS) $< -control.obj: $(MSWDIR)\control.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\control.obj: $(MSWDIR)\control.cpp + *$(CXX) $(CXXFLAGS) $< -curico.obj: $(MSWDIR)\curico.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\curico.obj: $(MSWDIR)\curico.cpp + *$(CXX) $(CXXFLAGS) $< -cursor.obj: $(MSWDIR)\cursor.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\cursor.obj: $(MSWDIR)\cursor.cpp + *$(CXX) $(CXXFLAGS) $< -data.obj: $(MSWDIR)\data.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\data.obj: $(MSWDIR)\data.cpp + *$(CXX) $(CXXFLAGS) $< -dataobj.obj: $(OLEDIR)\dataobj.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dataobj.obj: $(OLEDIR)\dataobj.cpp + *$(CXX) $(CXXFLAGS) $< -dc.obj: $(MSWDIR)\dc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dc.obj: $(MSWDIR)\dc.cpp + *$(CXX) $(CXXFLAGS) $< -dcclient.obj: $(MSWDIR)\dcclient.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcclient.obj: $(MSWDIR)\dcclient.cpp + *$(CXX) $(CXXFLAGS) $< -dcmemory.obj: $(MSWDIR)\dcmemory.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcmemory.obj: $(MSWDIR)\dcmemory.cpp + *$(CXX) $(CXXFLAGS) $< -dcprint.obj: $(MSWDIR)\dcprint.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcprint.obj: $(MSWDIR)\dcprint.cpp + *$(CXX) $(CXXFLAGS) $< -dcscreen.obj: $(MSWDIR)\dcscreen.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcscreen.obj: $(MSWDIR)\dcscreen.cpp + *$(CXX) $(CXXFLAGS) $< -dde.obj: $(MSWDIR)\dde.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dde.obj: $(MSWDIR)\dde.cpp + *$(CXX) $(CXXFLAGS) $< -dialog.obj: $(MSWDIR)\dialog.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dialog.obj: $(MSWDIR)\dialog.cpp + *$(CXX) $(CXXFLAGS) $< -dialup.obj: $(MSWDIR)\dialup.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dialup.obj: $(MSWDIR)\dialup.cpp + *$(CXX) $(CXXFLAGS) $< -dib.obj: $(MSWDIR)\dib.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dib.obj: $(MSWDIR)\dib.cpp + *$(CXX) $(CXXFLAGS) $< -dibutils.obj: $(MSWDIR)\dibutils.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dibutils.obj: $(MSWDIR)\dibutils.cpp + *$(CXX) $(CXXFLAGS) $< -dir.obj: $(MSWDIR)\dir.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dir.obj: $(MSWDIR)\dir.cpp + *$(CXX) $(CXXFLAGS) $< -dirdlg.obj: $(MSWDIR)\dirdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dirdlg.obj: $(MSWDIR)\dirdlg.cpp + *$(CXX) $(CXXFLAGS) $< -dragimag.obj: $(MSWDIR)\dragimag.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dragimag.obj: $(MSWDIR)\dragimag.cpp + *$(CXX) $(CXXFLAGS) $< -dropsrc.obj: $(OLEDIR)\dropsrc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dropsrc.obj: $(OLEDIR)\dropsrc.cpp + *$(CXX) $(CXXFLAGS) $< -droptgt.obj: $(OLEDIR)\droptgt.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\droptgt.obj: $(OLEDIR)\droptgt.cpp + *$(CXX) $(CXXFLAGS) $< -enhmeta.obj: $(MSWDIR)\enhmeta.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\enhmeta.obj: $(MSWDIR)\enhmeta.cpp + *$(CXX) $(CXXFLAGS) $< -evtloop.obj: $(MSWDIR)\evtloop.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\evtloop.obj: $(MSWDIR)\evtloop.cpp + *$(CXX) $(CXXFLAGS) $< -fdrepdlg.obj: $(MSWDIR)\fdrepdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fdrepdlg.obj: $(MSWDIR)\fdrepdlg.cpp + *$(CXX) $(CXXFLAGS) $< -filedlg.obj: $(MSWDIR)\filedlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\filedlg.obj: $(MSWDIR)\filedlg.cpp + *$(CXX) $(CXXFLAGS) $< -font.obj: $(MSWDIR)\font.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\font.obj: $(MSWDIR)\font.cpp + *$(CXX) $(CXXFLAGS) $< -fontdlg.obj: $(MSWDIR)\fontdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fontdlg.obj: $(MSWDIR)\fontdlg.cpp + *$(CXX) $(CXXFLAGS) $< -fontenum.obj: $(MSWDIR)\fontenum.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fontenum.obj: $(MSWDIR)\fontenum.cpp + *$(CXX) $(CXXFLAGS) $< -fontutil.obj: $(MSWDIR)\fontutil.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fontutil.obj: $(MSWDIR)\fontutil.cpp + *$(CXX) $(CXXFLAGS) $< -frame.obj: $(MSWDIR)\frame.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\frame.obj: $(MSWDIR)\frame.cpp + *$(CXX) $(CXXFLAGS) $< -gauge95.obj: $(MSWDIR)\gauge95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gauge95.obj: $(MSWDIR)\gauge95.cpp + *$(CXX) $(CXXFLAGS) $< -gaugemsw.obj: $(MSWDIR)\gaugemsw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gdiimage.obj: $(MSWDIR)\gdiimage.cpp + *$(CXX) $(CXXFLAGS) $< -gdiimage.obj: $(MSWDIR)\gdiimage.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gdiobj.obj: $(MSWDIR)\gdiobj.cpp + *$(CXX) $(CXXFLAGS) $< -gdiobj.obj: $(MSWDIR)\gdiobj.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\glcanvas.obj: $(MSWDIR)\glcanvas.cpp + *$(CXX) $(CXXFLAGS) $< -glcanvas.obj: $(MSWDIR)\glcanvas.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gsocket.obj: $(MSWDIR)\gsocket.c + *$(CC) $(CFLAGS) $< -gsocket.obj: $(MSWDIR)\gsocket.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gsockmsw.obj: $(MSWDIR)\gsockmsw.c + *$(CC) $(CFLAGS) $< -gsockmsw.obj: $(MSWDIR)\gsockmsw.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpbest.obj: $(MSWDIR)\helpbest.cpp + *$(CXX) $(CXXFLAGS) $< -helpbest.obj: $(MSWDIR)\helpbest.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpchm.obj: $(MSWDIR)\helpchm.cpp + *$(CXX) $(CXXFLAGS) $< -helpchm.obj: $(MSWDIR)\helpchm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpwin.obj: $(MSWDIR)\helpwin.cpp + *$(CXX) $(CXXFLAGS) $< -helpwin.obj: $(MSWDIR)\helpwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\icon.obj: $(MSWDIR)\icon.cpp + *$(CXX) $(CXXFLAGS) $< -icon.obj: $(MSWDIR)\icon.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imaglist.obj: $(MSWDIR)\imaglist.cpp + *$(CXX) $(CXXFLAGS) $< -imaglist.obj: $(MSWDIR)\imaglist.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\iniconf.obj: $(MSWDIR)\iniconf.cpp + *$(CXX) $(CXXFLAGS) $< -iniconf.obj: $(MSWDIR)\iniconf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\joystick.obj: $(MSWDIR)\joystick.cpp + *$(CXX) $(CXXFLAGS) $< -joystick.obj: $(MSWDIR)\joystick.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\listbox.obj: $(MSWDIR)\listbox.cpp + *$(CXX) $(CXXFLAGS) $< -listbox.obj: $(MSWDIR)\listbox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\listctrl.obj: $(MSWDIR)\listctrl.cpp + *$(CXX) $(CXXFLAGS) $< -listctrl.obj: $(MSWDIR)\listctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\main.obj: $(MSWDIR)\main.cpp + *$(CXX) $(CXXFLAGS) $< -main.obj: $(MSWDIR)\main.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\mdi.obj: $(MSWDIR)\mdi.cpp + *$(CXX) $(CXXFLAGS) $< -mdi.obj: $(MSWDIR)\mdi.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\menu.obj: $(MSWDIR)\menu.cpp + *$(CXX) $(CXXFLAGS) $< -menu.obj: $(MSWDIR)\menu.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\menuitem.obj: $(MSWDIR)\menuitem.cpp + *$(CXX) $(CXXFLAGS) $< -menuitem.obj: $(MSWDIR)\menuitem.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\metafile.obj: $(MSWDIR)\metafile.cpp + *$(CXX) $(CXXFLAGS) $< -metafile.obj: $(MSWDIR)\metafile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\mimetype.obj: $(MSWDIR)\mimetype.cpp + *$(CXX) $(CXXFLAGS) $< -mimetype.obj: $(MSWDIR)\mimetype.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\minifram.obj: $(MSWDIR)\minifram.cpp + *$(CXX) $(CXXFLAGS) $< -minifram.obj: $(MSWDIR)\minifram.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\msgdlg.obj: $(MSWDIR)\msgdlg.cpp + *$(CXX) $(CXXFLAGS) $< -msgdlg.obj: $(MSWDIR)\msgdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\mslu.obj: $(MSWDIR)\mslu.cpp + *$(CXX) $(CXXFLAGS) $< -mslu.obj: $(MSWDIR)\mslu.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\nativdlg.obj: $(MSWDIR)\nativdlg.cpp + *$(CXX) $(CXXFLAGS) $< -nativdlg.obj: $(MSWDIR)\nativdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\notebook.obj: $(MSWDIR)\notebook.cpp + *$(CXX) $(CXXFLAGS) $< -notebook.obj: $(MSWDIR)\notebook.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\oleutils.obj: $(OLEDIR)\oleutils.cpp + *$(CXX) $(CXXFLAGS) $< -oleutils.obj: $(OLEDIR)\oleutils.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp + *$(CXX) $(CXXFLAGS) $< -ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\palette.obj: $(MSWDIR)\palette.cpp + *$(CXX) $(CXXFLAGS) $< -palette.obj: $(MSWDIR)\palette.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\pen.obj: $(MSWDIR)\pen.cpp + *$(CXX) $(CXXFLAGS) $< -pen.obj: $(MSWDIR)\pen.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\penwin.obj: $(MSWDIR)\penwin.cpp + *$(CXX) $(CXXFLAGS) $< -penwin.obj: $(MSWDIR)\penwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\popupwin.obj: $(MSWDIR)\popupwin.cpp + *$(CXX) $(CXXFLAGS) $< -popupwin.obj: $(MSWDIR)\popupwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\printdlg.obj: $(MSWDIR)\printdlg.cpp + *$(CXX) $(CXXFLAGS) $< -printdlg.obj: $(MSWDIR)\printdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\printwin.obj: $(MSWDIR)\printwin.cpp + *$(CXX) $(CXXFLAGS) $< -printwin.obj: $(MSWDIR)\printwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\radiobox.obj: $(MSWDIR)\radiobox.cpp + *$(CXX) $(CXXFLAGS) $< -radiobox.obj: $(MSWDIR)\radiobox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\radiobut.obj: $(MSWDIR)\radiobut.cpp + *$(CXX) $(CXXFLAGS) $< -radiobut.obj: $(MSWDIR)\radiobut.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\regconf.obj: $(MSWDIR)\regconf.cpp + *$(CXX) $(CXXFLAGS) $< -regconf.obj: $(MSWDIR)\regconf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\region.obj: $(MSWDIR)\region.cpp + *$(CXX) $(CXXFLAGS) $< -region.obj: $(MSWDIR)\region.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\registry.obj: $(MSWDIR)\registry.cpp + *$(CXX) $(CXXFLAGS) $< -registry.obj: $(MSWDIR)\registry.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\scrolbar.obj: $(MSWDIR)\scrolbar.cpp + *$(CXX) $(CXXFLAGS) $< -scrolbar.obj: $(MSWDIR)\scrolbar.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\settings.obj: $(MSWDIR)\settings.cpp + *$(CXX) $(CXXFLAGS) $< -settings.obj: $(MSWDIR)\settings.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\slider95.obj: $(MSWDIR)\slider95.cpp + *$(CXX) $(CXXFLAGS) $< -slider95.obj: $(MSWDIR)\slider95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\snglinst.obj: $(MSWDIR)\snglinst.cpp + *$(CXX) $(CXXFLAGS) $< -slidrmsw.obj: $(MSWDIR)\slidrmsw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\spinbutt.obj: $(MSWDIR)\spinbutt.cpp + *$(CXX) $(CXXFLAGS) $< -snglinst.obj: $(MSWDIR)\snglinst.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\spinctrl.obj: $(MSWDIR)\spinctrl.cpp + *$(CXX) $(CXXFLAGS) $< -spinbutt.obj: $(MSWDIR)\spinbutt.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\statbmp.obj: $(MSWDIR)\statbmp.cpp + *$(CXX) $(CXXFLAGS) $< -spinctrl.obj: $(MSWDIR)\spinctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\statbox.obj: $(MSWDIR)\statbox.cpp + *$(CXX) $(CXXFLAGS) $< -statbmp.obj: $(MSWDIR)\statbmp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\statbr95.obj: $(MSWDIR)\statbr95.cpp + *$(CXX) $(CXXFLAGS) $< -statbox.obj: $(MSWDIR)\statbox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\statline.obj: $(MSWDIR)\statline.cpp + *$(CXX) $(CXXFLAGS) $< -statbr95.obj: $(MSWDIR)\statbr95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\stattext.obj: $(MSWDIR)\stattext.cpp + *$(CXX) $(CXXFLAGS) $< -statline.obj: $(MSWDIR)\statline.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tabctrl.obj: $(MSWDIR)\tabctrl.cpp + *$(CXX) $(CXXFLAGS) $< -stattext.obj: $(MSWDIR)\stattext.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\taskbar.obj: $(MSWDIR)\taskbar.cpp + *$(CXX) $(CXXFLAGS) $< -tabctrl.obj: $(MSWDIR)\tabctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tbar95.obj: $(MSWDIR)\tbar95.cpp + *$(CXX) $(CXXFLAGS) $< -taskbar.obj: $(MSWDIR)\taskbar.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\textctrl.obj: $(MSWDIR)\textctrl.cpp + *$(CXX) $(CXXFLAGS) $< -tbar95.obj: $(MSWDIR)\tbar95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tglbtn.obj: $(MSWDIR)\tglbtn.cpp + *$(CXX) $(CXXFLAGS) $< -tbarmsw.obj: $(MSWDIR)\tbarmsw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\thread.obj: $(MSWDIR)\thread.cpp + *$(CXX) $(CXXFLAGS) $< -textctrl.obj: $(MSWDIR)\textctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\timer.obj: $(MSWDIR)\timer.cpp + *$(CXX) $(CXXFLAGS) $< -tglbtn.obj: $(MSWDIR)\tglbtn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tooltip.obj: $(MSWDIR)\tooltip.cpp + *$(CXX) $(CXXFLAGS) $< -thread.obj: $(MSWDIR)\thread.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\toplevel.obj: $(MSWDIR)\toplevel.cpp + *$(CXX) $(CXXFLAGS) $< -timer.obj: $(MSWDIR)\timer.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\treectrl.obj: $(MSWDIR)\treectrl.cpp + *$(CXX) $(CXXFLAGS) $< -tooltip.obj: $(MSWDIR)\tooltip.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\utils.obj: $(MSWDIR)\utils.cpp + *$(CXX) $(CXXFLAGS) $< -toplevel.obj: $(MSWDIR)\toplevel.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.cpp + *$(CXX) $(CXXFLAGS) $< -treectrl.obj: $(MSWDIR)\treectrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\uuid.obj: $(OLEDIR)\uuid.cpp + *$(CXX) $(CXXFLAGS) $< -utils.obj: $(MSWDIR)\utils.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\volume.obj: $(MSWDIR)\volume.cpp + *$(CXX) $(CXXFLAGS) $< -utilsexc.obj: $(MSWDIR)\utilsexc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\wave.obj: $(MSWDIR)\wave.cpp + *$(CXX) $(CXXFLAGS) $< -uuid.obj: $(OLEDIR)\uuid.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -volume.obj: $(MSWDIR)\volume.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -wave.obj: $(MSWDIR)\wave.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -window.obj: $(MSWDIR)\window.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\window.obj: $(MSWDIR)\window.cpp + *$(CXX) $(CXXFLAGS) $< ######################################################## # Common objects (always compiled) -appcmn.obj: $(COMMDIR)\appcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\appcmn.obj: $(COMMDIR)\appcmn.cpp + *$(CXX) $(CXXFLAGS) $< -artprov.obj: $(COMMDIR)\artprov.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\artprov.obj: $(COMMDIR)\artprov.cpp + *$(CXX) $(CXXFLAGS) $< -artstd.obj: $(COMMDIR)\artstd.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\artstd.obj: $(COMMDIR)\artstd.cpp + *$(CXX) $(CXXFLAGS) $< -choiccmn.obj: $(COMMDIR)\choiccmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\choiccmn.obj: $(COMMDIR)\choiccmn.cpp + *$(CXX) $(CXXFLAGS) $< -clipcmn.obj: $(COMMDIR)\clipcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\clipcmn.obj: $(COMMDIR)\clipcmn.cpp + *$(CXX) $(CXXFLAGS) $< -clntdata.obj: $(COMMDIR)\clntdata.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\clntdata.obj: $(COMMDIR)\clntdata.cpp + *$(CXX) $(CXXFLAGS) $< -cmdline.obj: $(COMMDIR)\cmdline.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\cmdline.obj: $(COMMDIR)\cmdline.cpp + *$(CXX) $(CXXFLAGS) $< -cmdproc.obj: $(COMMDIR)\cmdproc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\cmdproc.obj: $(COMMDIR)\cmdproc.cpp + *$(CXX) $(CXXFLAGS) $< -cmndata.obj: $(COMMDIR)\cmndata.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\cmndata.obj: $(COMMDIR)\cmndata.cpp + *$(CXX) $(CXXFLAGS) $< -config.obj: $(COMMDIR)\config.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\config.obj: $(COMMDIR)\config.cpp + *$(CXX) $(CXXFLAGS) $< -containr.obj: $(COMMDIR)\containr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\containr.obj: $(COMMDIR)\containr.cpp + *$(CXX) $(CXXFLAGS) $< -cshelp.obj: $(COMMDIR)\cshelp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\cshelp.obj: $(COMMDIR)\cshelp.cpp + *$(CXX) $(CXXFLAGS) $< -ctrlcmn.obj: $(COMMDIR)\ctrlcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\ctrlcmn.obj: $(COMMDIR)\ctrlcmn.cpp + *$(CXX) $(CXXFLAGS) $< -ctrlsub.obj: $(COMMDIR)\ctrlsub.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\ctrlsub.obj: $(COMMDIR)\ctrlsub.cpp + *$(CXX) $(CXXFLAGS) $< -datetime.obj: $(COMMDIR)\datetime.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\datetime.obj: $(COMMDIR)\datetime.cpp + *$(CXX) $(CXXFLAGS) $< -datstrm.obj: $(COMMDIR)\datstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\datstrm.obj: $(COMMDIR)\datstrm.cpp + *$(CXX) $(CXXFLAGS) $< -db.obj: $(COMMDIR)\db.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\db.obj: $(COMMDIR)\db.cpp + *$(CXX) $(CXXFLAGS) $< -dbgrid.obj: $(COMMDIR)\dbgrid.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dbgrid.obj: $(COMMDIR)\dbgrid.cpp + *$(CXX) $(CXXFLAGS) $< -dbtable.obj: $(COMMDIR)\dbtable.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dbtable.obj: $(COMMDIR)\dbtable.cpp + *$(CXX) $(CXXFLAGS) $< -dcbase.obj: $(COMMDIR)\dcbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcbase.obj: $(COMMDIR)\dcbase.cpp + *$(CXX) $(CXXFLAGS) $< -dircmn.obj: $(COMMDIR)\dircmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dircmn.obj: $(COMMDIR)\dircmn.cpp + *$(CXX) $(CXXFLAGS) $< -dlgcmn.obj: $(COMMDIR)\dlgcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dlgcmn.obj: $(COMMDIR)\dlgcmn.cpp + *$(CXX) $(CXXFLAGS) $< -dndcmn.obj: $(COMMDIR)\dndcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dndcmn.obj: $(COMMDIR)\dndcmn.cpp + *$(CXX) $(CXXFLAGS) $< -dobjcmn.obj: $(COMMDIR)\dobjcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dobjcmn.obj: $(COMMDIR)\dobjcmn.cpp + *$(CXX) $(CXXFLAGS) $< -docmdi.obj: $(COMMDIR)\docmdi.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\docmdi.obj: $(COMMDIR)\docmdi.cpp + *$(CXX) $(CXXFLAGS) $< -docview.obj: $(COMMDIR)\docview.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\docview.obj: $(COMMDIR)\docview.cpp + *$(CXX) $(CXXFLAGS) $< -dseldlg.obj: $(COMMDIR)\dseldlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dseldlg.obj: $(COMMDIR)\dseldlg.cpp + *$(CXX) $(CXXFLAGS) $< -dynarray.obj: $(COMMDIR)\dynarray.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dynarray.obj: $(COMMDIR)\dynarray.cpp + *$(CXX) $(CXXFLAGS) $< -dynlib.obj: $(COMMDIR)\dynlib.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dynlib.obj: $(COMMDIR)\dynlib.cpp + *$(CXX) $(CXXFLAGS) $< -dynload.obj: $(COMMDIR)\dynload.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dynload.obj: $(COMMDIR)\dynload.cpp + *$(CXX) $(CXXFLAGS) $< -effects.obj: $(COMMDIR)\effects.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\effects.obj: $(COMMDIR)\effects.cpp + *$(CXX) $(CXXFLAGS) $< -encconv.obj: $(COMMDIR)\encconv.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\encconv.obj: $(COMMDIR)\encconv.cpp + *$(CXX) $(CXXFLAGS) $< -event.obj: $(COMMDIR)\event.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\event.obj: $(COMMDIR)\event.cpp + *$(CXX) $(CXXFLAGS) $< -extended.obj: $(COMMDIR)\extended.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\extended.obj: $(COMMDIR)\extended.c + *$(CC) $(CFLAGS) $< -fddlgcmn.obj: $(COMMDIR)\fddlgcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fddlgcmn.obj: $(COMMDIR)\fddlgcmn.cpp + *$(CXX) $(CXXFLAGS) $< -ffile.obj: $(COMMDIR)\ffile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\ffile.obj: $(COMMDIR)\ffile.cpp + *$(CXX) $(CXXFLAGS) $< -file.obj: $(COMMDIR)\file.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\file.obj: $(COMMDIR)\file.cpp + *$(CXX) $(CXXFLAGS) $< -fileconf.obj: $(COMMDIR)\fileconf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fileconf.obj: $(COMMDIR)\fileconf.cpp + *$(CXX) $(CXXFLAGS) $< -filefn.obj: $(COMMDIR)\filefn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\filefn.obj: $(COMMDIR)\filefn.cpp + *$(CXX) $(CXXFLAGS) $< -filename.obj: $(COMMDIR)\filename.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\filename.obj: $(COMMDIR)\filename.cpp + *$(CXX) $(CXXFLAGS) $< -filesys.obj: $(COMMDIR)\filesys.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\filesys.obj: $(COMMDIR)\filesys.cpp + *$(CXX) $(CXXFLAGS) $< -fontcmn.obj: $(COMMDIR)\fontcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fontcmn.obj: $(COMMDIR)\fontcmn.cpp + *$(CXX) $(CXXFLAGS) $< -fontmap.obj: $(COMMDIR)\fontmap.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fontmap.obj: $(COMMDIR)\fontmap.cpp + *$(CXX) $(CXXFLAGS) $< -framecmn.obj: $(COMMDIR)\framecmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\framecmn.obj: $(COMMDIR)\framecmn.cpp + *$(CXX) $(CXXFLAGS) $< -fs_inet.obj: $(COMMDIR)\fs_inet.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fs_inet.obj: $(COMMDIR)\fs_inet.cpp + *$(CXX) $(CXXFLAGS) $< -fs_mem.obj: $(COMMDIR)\fs_mem.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fs_mem.obj: $(COMMDIR)\fs_mem.cpp + *$(CXX) $(CXXFLAGS) $< -fs_zip.obj: $(COMMDIR)\fs_zip.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\fs_zip.obj: $(COMMDIR)\fs_zip.cpp + *$(CXX) $(CXXFLAGS) $< -ftp.obj: $(COMMDIR)\ftp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\ftp.obj: $(COMMDIR)\ftp.cpp + *$(CXX) $(CXXFLAGS) $< -gaugecmn.obj: $(COMMDIR)\gaugecmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gaugecmn.obj: $(COMMDIR)\gaugecmn.cpp + *$(CXX) $(CXXFLAGS) $< -gdicmn.obj: $(COMMDIR)\gdicmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gdicmn.obj: $(COMMDIR)\gdicmn.cpp + *$(CXX) $(CXXFLAGS) $< -geometry.obj: $(COMMDIR)\geometry.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\geometry.obj: $(COMMDIR)\geometry.cpp + *$(CXX) $(CXXFLAGS) $< -gifdecod.obj: $(COMMDIR)\gifdecod.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gifdecod.obj: $(COMMDIR)\gifdecod.cpp + *$(CXX) $(CXXFLAGS) $< -hash.obj: $(COMMDIR)\hash.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\hash.obj: $(COMMDIR)\hash.cpp + *$(CXX) $(CXXFLAGS) $< -hashmap.obj: $(COMMDIR)\hashmap.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\hashmap.obj: $(COMMDIR)\hashmap.cpp + *$(CXX) $(CXXFLAGS) $< -helpbase.obj: $(COMMDIR)\helpbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpbase.obj: $(COMMDIR)\helpbase.cpp + *$(CXX) $(CXXFLAGS) $< -http.obj: $(COMMDIR)\http.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\http.obj: $(COMMDIR)\http.cpp + *$(CXX) $(CXXFLAGS) $< -iconbndl.obj: $(COMMDIR)\iconbndl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\iconbndl.obj: $(COMMDIR)\iconbndl.cpp + *$(CXX) $(CXXFLAGS) $< -imagall.obj: $(COMMDIR)\imagall.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagall.obj: $(COMMDIR)\imagall.cpp + *$(CXX) $(CXXFLAGS) $< -imagbmp.obj: $(COMMDIR)\imagbmp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagbmp.obj: $(COMMDIR)\imagbmp.cpp + *$(CXX) $(CXXFLAGS) $< -image.obj: $(COMMDIR)\image.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\image.obj: $(COMMDIR)\image.cpp + *$(CXX) $(CXXFLAGS) $< -imagfill.obj: $(COMMDIR)\imagfill.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagfill.obj: $(COMMDIR)\imagfill.cpp + *$(CXX) $(CXXFLAGS) $< -imaggif.obj: $(COMMDIR)\imaggif.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imaggif.obj: $(COMMDIR)\imaggif.cpp + *$(CXX) $(CXXFLAGS) $< -imagiff.obj: $(COMMDIR)\imagiff.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagiff.obj: $(COMMDIR)\imagiff.cpp + *$(CXX) $(CXXFLAGS) $< -imagjpeg.obj: $(COMMDIR)\imagjpeg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagjpeg.obj: $(COMMDIR)\imagjpeg.cpp + *$(CXX) $(CXXFLAGS) $< -imagpcx.obj: $(COMMDIR)\imagpcx.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagpcx.obj: $(COMMDIR)\imagpcx.cpp + *$(CXX) $(CXXFLAGS) $< -imagpng.obj: $(COMMDIR)\imagpng.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagpng.obj: $(COMMDIR)\imagpng.cpp + *$(CXX) $(CXXFLAGS) $< -imagpnm.obj: $(COMMDIR)\imagpnm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagpnm.obj: $(COMMDIR)\imagpnm.cpp + *$(CXX) $(CXXFLAGS) $< -imagtiff.obj: $(COMMDIR)\imagtiff.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagtiff.obj: $(COMMDIR)\imagtiff.cpp + *$(CXX) $(CXXFLAGS) $< -imagxpm.obj: $(COMMDIR)\imagxpm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\imagxpm.obj: $(COMMDIR)\imagxpm.cpp + *$(CXX) $(CXXFLAGS) $< -intl.obj: $(COMMDIR)\intl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\intl.obj: $(COMMDIR)\intl.cpp + *$(CXX) $(CXXFLAGS) $< -ipcbase.obj: $(COMMDIR)\ipcbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\ipcbase.obj: $(COMMDIR)\ipcbase.cpp + *$(CXX) $(CXXFLAGS) $< -layout.obj: $(COMMDIR)\layout.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\layout.obj: $(COMMDIR)\layout.cpp + *$(CXX) $(CXXFLAGS) $< -lboxcmn.obj: $(COMMDIR)\lboxcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\lboxcmn.obj: $(COMMDIR)\lboxcmn.cpp + *$(CXX) $(CXXFLAGS) $< -list.obj: $(COMMDIR)\list.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\list.obj: $(COMMDIR)\list.cpp + *$(CXX) $(CXXFLAGS) $< -log.obj: $(COMMDIR)\log.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\log.obj: $(COMMDIR)\log.cpp + *$(CXX) $(CXXFLAGS) $< -longlong.obj: $(COMMDIR)\longlong.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\longlong.obj: $(COMMDIR)\longlong.cpp + *$(CXX) $(CXXFLAGS) $< -matrix.obj: $(COMMDIR)\matrix.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\matrix.obj: $(COMMDIR)\matrix.cpp + *$(CXX) $(CXXFLAGS) $< -memory.obj: $(COMMDIR)\memory.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\memory.obj: $(COMMDIR)\memory.cpp + *$(CXX) $(CXXFLAGS) $< -menucmn.obj: $(COMMDIR)\menucmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\menucmn.obj: $(COMMDIR)\menucmn.cpp + *$(CXX) $(CXXFLAGS) $< -mimecmn.obj: $(COMMDIR)\mimecmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\mimecmn.obj: $(COMMDIR)\mimecmn.cpp + *$(CXX) $(CXXFLAGS) $< -module.obj: $(COMMDIR)\module.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\module.obj: $(COMMDIR)\module.cpp + *$(CXX) $(CXXFLAGS) $< -msgout.obj: $(COMMDIR)\msgout.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\msgout.obj: $(COMMDIR)\msgout.cpp + *$(CXX) $(CXXFLAGS) $< -mstream.obj: $(COMMDIR)\mstream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\mstream.obj: $(COMMDIR)\mstream.cpp + *$(CXX) $(CXXFLAGS) $< -nbkbase.obj: $(COMMDIR)\nbkbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\nbkbase.obj: $(COMMDIR)\nbkbase.cpp + *$(CXX) $(CXXFLAGS) $< -object.obj: $(COMMDIR)\object.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\object.obj: $(COMMDIR)\object.cpp + *$(CXX) $(CXXFLAGS) $< -odbc.obj: $(COMMDIR)\odbc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\odbc.obj: $(COMMDIR)\odbc.cpp + *$(CXX) $(CXXFLAGS) $< -paper.obj: $(COMMDIR)\paper.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\paper.obj: $(COMMDIR)\paper.cpp + *$(CXX) $(CXXFLAGS) $< -popupcmn.obj: $(COMMDIR)\popupcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\popupcmn.obj: $(COMMDIR)\popupcmn.cpp + *$(CXX) $(CXXFLAGS) $< -prntbase.obj: $(COMMDIR)\prntbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\prntbase.obj: $(COMMDIR)\prntbase.cpp + *$(CXX) $(CXXFLAGS) $< -process.obj: $(COMMDIR)\process.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\process.obj: $(COMMDIR)\process.cpp + *$(CXX) $(CXXFLAGS) $< -protocol.obj: $(COMMDIR)\protocol.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\protocol.obj: $(COMMDIR)\protocol.cpp + *$(CXX) $(CXXFLAGS) $< -quantize.obj: $(COMMDIR)\quantize.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\quantize.obj: $(COMMDIR)\quantize.cpp + *$(CXX) $(CXXFLAGS) $< -radiocmn.obj: $(COMMDIR)\radiocmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\radiocmn.obj: $(COMMDIR)\radiocmn.cpp + *$(CXX) $(CXXFLAGS) $< -regex.obj: $(COMMDIR)\regex.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\regex.obj: $(COMMDIR)\regex.cpp + *$(CXX) $(CXXFLAGS) $< -resource.obj: $(COMMDIR)\resource.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\resource.obj: $(COMMDIR)\resource.cpp + *$(CXX) $(CXXFLAGS) $< -sckaddr.obj: $(COMMDIR)\sckaddr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sckaddr.obj: $(COMMDIR)\sckaddr.cpp + *$(CXX) $(CXXFLAGS) $< -sckfile.obj: $(COMMDIR)\sckfile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sckfile.obj: $(COMMDIR)\sckfile.cpp + *$(CXX) $(CXXFLAGS) $< -sckipc.obj: $(COMMDIR)\sckipc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sckipc.obj: $(COMMDIR)\sckipc.cpp + *$(CXX) $(CXXFLAGS) $< -sckstrm.obj: $(COMMDIR)\sckstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sckstrm.obj: $(COMMDIR)\sckstrm.cpp + *$(CXX) $(CXXFLAGS) $< -settcmn.obj: $(COMMDIR)\settcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\settcmn.obj: $(COMMDIR)\settcmn.cpp + *$(CXX) $(CXXFLAGS) $< -sizer.obj: $(COMMDIR)\sizer.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sizer.obj: $(COMMDIR)\sizer.cpp + *$(CXX) $(CXXFLAGS) $< -socket.obj: $(COMMDIR)\socket.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\socket.obj: $(COMMDIR)\socket.cpp + *$(CXX) $(CXXFLAGS) $< -statbar.obj: $(COMMDIR)\statbar.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\statbar.obj: $(COMMDIR)\statbar.cpp + *$(CXX) $(CXXFLAGS) $< -strconv.obj: $(COMMDIR)\strconv.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\strconv.obj: $(COMMDIR)\strconv.cpp + *$(CXX) $(CXXFLAGS) $< -stream.obj: $(COMMDIR)\stream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\stream.obj: $(COMMDIR)\stream.cpp + *$(CXX) $(CXXFLAGS) $< -string.obj: $(COMMDIR)\string.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\string.obj: $(COMMDIR)\string.cpp + *$(CXX) $(CXXFLAGS) $< -sysopt.obj: $(COMMDIR)\sysopt.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sysopt.obj: $(COMMDIR)\sysopt.cpp + *$(CXX) $(CXXFLAGS) $< -tbarbase.obj: $(COMMDIR)\tbarbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.cpp + *$(CXX) $(CXXFLAGS) $< -textbuf.obj: $(COMMDIR)\textbuf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\textbuf.obj: $(COMMDIR)\textbuf.cpp + *$(CXX) $(CXXFLAGS) $< -textcmn.obj: $(COMMDIR)\textcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\textcmn.obj: $(COMMDIR)\textcmn.cpp + *$(CXX) $(CXXFLAGS) $< -textfile.obj: $(COMMDIR)\textfile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\textfile.obj: $(COMMDIR)\textfile.cpp + *$(CXX) $(CXXFLAGS) $< -timercmn.obj: $(COMMDIR)\timercmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\timercmn.obj: $(COMMDIR)\timercmn.cpp + *$(CXX) $(CXXFLAGS) $< -tokenzr.obj: $(COMMDIR)\tokenzr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.cpp + *$(CXX) $(CXXFLAGS) $< -toplvcmn.obj: $(COMMDIR)\toplvcmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\toplvcmn.obj: $(COMMDIR)\toplvcmn.cpp + *$(CXX) $(CXXFLAGS) $< -treebase.obj: $(COMMDIR)\treebase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\treebase.obj: $(COMMDIR)\treebase.cpp + *$(CXX) $(CXXFLAGS) $< -txtstrm.obj: $(COMMDIR)\txtstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\txtstrm.obj: $(COMMDIR)\txtstrm.cpp + *$(CXX) $(CXXFLAGS) $< -unzip.obj: $(COMMDIR)\unzip.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\unzip.obj: $(COMMDIR)\unzip.c + *$(CC) $(CFLAGS) $< -url.obj: $(COMMDIR)\url.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\url.obj: $(COMMDIR)\url.cpp + *$(CXX) $(CXXFLAGS) $< -utilscmn.obj: $(COMMDIR)\utilscmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.cpp + *$(CXX) $(CXXFLAGS) $< -valgen.obj: $(COMMDIR)\valgen.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\valgen.obj: $(COMMDIR)\valgen.cpp + *$(CXX) $(CXXFLAGS) $< -validate.obj: $(COMMDIR)\validate.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\validate.obj: $(COMMDIR)\validate.cpp + *$(CXX) $(CXXFLAGS) $< -valtext.obj: $(COMMDIR)\valtext.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\valtext.obj: $(COMMDIR)\valtext.cpp + *$(CXX) $(CXXFLAGS) $< -variant.obj: $(COMMDIR)\variant.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\variant.obj: $(COMMDIR)\variant.cpp + *$(CXX) $(CXXFLAGS) $< -wfstream.obj: $(COMMDIR)\wfstream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\wfstream.obj: $(COMMDIR)\wfstream.cpp + *$(CXX) $(CXXFLAGS) $< -wincmn.obj: $(COMMDIR)\wincmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\wincmn.obj: $(COMMDIR)\wincmn.cpp + *$(CXX) $(CXXFLAGS) $< -wxchar.obj: $(COMMDIR)\wxchar.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\wxchar.obj: $(COMMDIR)\wxchar.cpp + *$(CXX) $(CXXFLAGS) $< -wxexpr.obj: $(COMMDIR)\wxexpr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\wxexpr.obj: $(COMMDIR)\wxexpr.cpp + *$(CXX) $(CXXFLAGS) $< -xpmdecod.obj: $(COMMDIR)\xpmdecod.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\xpmdecod.obj: $(COMMDIR)\xpmdecod.cpp + *$(CXX) $(CXXFLAGS) $< -zipstrm.obj: $(COMMDIR)\zipstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\zipstrm.obj: $(COMMDIR)\zipstrm.cpp + *$(CXX) $(CXXFLAGS) $< -zstream.obj: $(COMMDIR)\zstream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\zstream.obj: $(COMMDIR)\zstream.cpp + *$(CXX) $(CXXFLAGS) $< -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 +$(OUTPUTDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c + *$(CC) $(CFLAGS) -DUSE_DEFINE $(COMMDIR)\y_tab.c $(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c @@ -1151,98 +1118,98 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c # Generic objects (not always compiled, depending on # whether platforms have native implementations) -busyinfo.obj: $(GENDIR)\busyinfo.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\busyinfo.obj: $(GENDIR)\busyinfo.cpp + *$(CXX) $(CXXFLAGS) $< -calctrl.obj: $(GENDIR)\calctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\calctrl.obj: $(GENDIR)\calctrl.cpp + *$(CXX) $(CXXFLAGS) $< -choicdgg.obj: $(GENDIR)\choicdgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\choicdgg.obj: $(GENDIR)\choicdgg.cpp + *$(CXX) $(CXXFLAGS) $< -dcbuffer.obj: $(GENDIR)\dcbuffer.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcbuffer.obj: $(GENDIR)\dcbuffer.cpp + *$(CXX) $(CXXFLAGS) $< -dcpsg.obj: $(GENDIR)\dcpsg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dcpsg.obj: $(GENDIR)\dcpsg.cpp + *$(CXX) $(CXXFLAGS) $< -dirctrlg.obj: $(GENDIR)\dirctrlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dirctrlg.obj: $(GENDIR)\dirctrlg.cpp + *$(CXX) $(CXXFLAGS) $< -dragimgg.obj: $(GENDIR)\dragimgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\dragimgg.obj: $(GENDIR)\dragimgg.cpp + *$(CXX) $(CXXFLAGS) $< -grid.obj: $(GENDIR)\grid.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\grid.obj: $(GENDIR)\grid.cpp + *$(CXX) $(CXXFLAGS) $< -gridctrl.obj: $(GENDIR)\gridctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gridctrl.obj: $(GENDIR)\gridctrl.cpp + *$(CXX) $(CXXFLAGS) $< -gridsel.obj: $(GENDIR)\gridsel.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\gridsel.obj: $(GENDIR)\gridsel.cpp + *$(CXX) $(CXXFLAGS) $< -laywin.obj: $(GENDIR)\laywin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\laywin.obj: $(GENDIR)\laywin.cpp + *$(CXX) $(CXXFLAGS) $< -logg.obj: $(GENDIR)\logg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\logg.obj: $(GENDIR)\logg.cpp + *$(CXX) $(CXXFLAGS) $< -numdlgg.obj: $(GENDIR)\numdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\numdlgg.obj: $(GENDIR)\numdlgg.cpp + *$(CXX) $(CXXFLAGS) $< -panelg.obj: $(GENDIR)\panelg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\panelg.obj: $(GENDIR)\panelg.cpp + *$(CXX) $(CXXFLAGS) $< -progdlgg.obj: $(GENDIR)\progdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\progdlgg.obj: $(GENDIR)\progdlgg.cpp + *$(CXX) $(CXXFLAGS) $< -prop.obj: $(GENDIR)\prop.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\prop.obj: $(GENDIR)\prop.cpp + *$(CXX) $(CXXFLAGS) $< -propform.obj: $(GENDIR)\propform.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\propform.obj: $(GENDIR)\propform.cpp + *$(CXX) $(CXXFLAGS) $< -proplist.obj: $(GENDIR)\proplist.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\proplist.obj: $(GENDIR)\proplist.cpp + *$(CXX) $(CXXFLAGS) $< -sashwin.obj: $(GENDIR)\sashwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\sashwin.obj: $(GENDIR)\sashwin.cpp + *$(CXX) $(CXXFLAGS) $< -scrlwing.obj: $(GENDIR)\scrlwing.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\scrlwing.obj: $(GENDIR)\scrlwing.cpp + *$(CXX) $(CXXFLAGS) $< -spinctlg.obj: $(GENDIR)\spinctlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\spinctlg.obj: $(GENDIR)\spinctlg.cpp + *$(CXX) $(CXXFLAGS) $< -splash.obj: $(GENDIR)\splash.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\splash.obj: $(GENDIR)\splash.cpp + *$(CXX) $(CXXFLAGS) $< -splitter.obj: $(GENDIR)\splitter.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\splitter.obj: $(GENDIR)\splitter.cpp + *$(CXX) $(CXXFLAGS) $< -statusbr.obj: $(GENDIR)\statusbr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\statusbr.obj: $(GENDIR)\statusbr.cpp + *$(CXX) $(CXXFLAGS) $< -tbarsmpl.obj: $(GENDIR)\tbarsmpl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tbarsmpl.obj: $(GENDIR)\tbarsmpl.cpp + *$(CXX) $(CXXFLAGS) $< -textdlgg.obj: $(GENDIR)\textdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\textdlgg.obj: $(GENDIR)\textdlgg.cpp + *$(CXX) $(CXXFLAGS) $< -tipdlg.obj: $(GENDIR)\tipdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tipdlg.obj: $(GENDIR)\tipdlg.cpp + *$(CXX) $(CXXFLAGS) $< -tipwin.obj: $(GENDIR)\tipwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\tipwin.obj: $(GENDIR)\tipwin.cpp + *$(CXX) $(CXXFLAGS) $< -treectlg.obj: $(GENDIR)\treectlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\treectlg.obj: $(GENDIR)\treectlg.cpp + *$(CXX) $(CXXFLAGS) $< -treelay.obj: $(GENDIR)\treelay.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\treelay.obj: $(GENDIR)\treelay.cpp + *$(CXX) $(CXXFLAGS) $< -wizard.obj: $(GENDIR)\wizard.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\wizard.obj: $(GENDIR)\wizard.cpp + *$(CXX) $(CXXFLAGS) $< @@ -1250,68 +1217,65 @@ wizard.obj: $(GENDIR)\wizard.cpp ######################################################## # HTML objects (always compiled) -helpctrl.obj: $(HTMLDIR)\helpctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpctrl.obj: $(HTMLDIR)\helpctrl.cpp + *$(CXX) $(CXXFLAGS) $< -helpdata.obj: $(HTMLDIR)\helpdata.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpdata.obj: $(HTMLDIR)\helpdata.cpp + *$(CXX) $(CXXFLAGS) $< -helpfrm.obj: $(HTMLDIR)\helpfrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\helpfrm.obj: $(HTMLDIR)\helpfrm.cpp + *$(CXX) $(CXXFLAGS) $< -htmlcell.obj: $(HTMLDIR)\htmlcell.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\htmlcell.obj: $(HTMLDIR)\htmlcell.cpp + *$(CXX) $(CXXFLAGS) $< -htmlfilt.obj: $(HTMLDIR)\htmlfilt.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\htmlfilt.obj: $(HTMLDIR)\htmlfilt.cpp + *$(CXX) $(CXXFLAGS) $< -htmlpars.obj: $(HTMLDIR)\htmlpars.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\htmlpars.obj: $(HTMLDIR)\htmlpars.cpp + *$(CXX) $(CXXFLAGS) $< -htmltag.obj: $(HTMLDIR)\htmltag.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\htmltag.obj: $(HTMLDIR)\htmltag.cpp + *$(CXX) $(CXXFLAGS) $< -htmlwin.obj: $(HTMLDIR)\htmlwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\htmlwin.obj: $(HTMLDIR)\htmlwin.cpp + *$(CXX) $(CXXFLAGS) $< -htmprint.obj: $(HTMLDIR)\htmprint.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\htmprint.obj: $(HTMLDIR)\htmprint.cpp + *$(CXX) $(CXXFLAGS) $< -m_dflist.obj: $(HTMLDIR)\m_dflist.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_dflist.obj: $(HTMLDIR)\m_dflist.cpp + *$(CXX) $(CXXFLAGS) $< -m_fonts.obj: $(HTMLDIR)\m_fonts.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_fonts.obj: $(HTMLDIR)\m_fonts.cpp + *$(CXX) $(CXXFLAGS) $< -m_hline.obj: $(HTMLDIR)\m_hline.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_hline.obj: $(HTMLDIR)\m_hline.cpp + *$(CXX) $(CXXFLAGS) $< -m_image.obj: $(HTMLDIR)\m_image.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_image.obj: $(HTMLDIR)\m_image.cpp + *$(CXX) $(CXXFLAGS) $< -m_layout.obj: $(HTMLDIR)\m_layout.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_layout.obj: $(HTMLDIR)\m_layout.cpp + *$(CXX) $(CXXFLAGS) $< -m_links.obj: $(HTMLDIR)\m_links.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_links.obj: $(HTMLDIR)\m_links.cpp + *$(CXX) $(CXXFLAGS) $< -m_list.obj: $(HTMLDIR)\m_list.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_list.obj: $(HTMLDIR)\m_list.cpp + *$(CXX) $(CXXFLAGS) $< -m_meta.obj: $(HTMLDIR)\m_meta.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_pre.obj: $(HTMLDIR)\m_pre.cpp + *$(CXX) $(CXXFLAGS) $< -m_pre.obj: $(HTMLDIR)\m_pre.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_style.obj: $(HTMLDIR)\m_style.cpp + *$(CXX) $(CXXFLAGS) $< -m_style.obj: $(HTMLDIR)\m_style.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\m_tables.obj: $(HTMLDIR)\m_tables.cpp + *$(CXX) $(CXXFLAGS) $< -m_tables.obj: $(HTMLDIR)\m_tables.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -winpars.obj: $(HTMLDIR)\winpars.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< +$(OUTPUTDIR)\winpars.obj: $(HTMLDIR)\winpars.cpp + *$(CXX) $(CXXFLAGS) $< diff --git a/src/msw/makeuniv.b32 b/src/msw/makeuniv.b32 deleted file mode 100644 index 5fb75864a3..0000000000 --- a/src/msw/makeuniv.b32 +++ /dev/null @@ -1,1397 +0,0 @@ - - -# This file was automatically generated by tmake -# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE B32.T! - -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for MS Windows, -# and Borland C++ (32-bit). - -# BCCDIR now defined in ../makeb32.env - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) -THISDIR = $(WXDIR)\src\msw - -# Set all these to 1 if you want to build a dynamic library -!if "$(DLL)" == "1" -WXMAKINGDLL=1 -WXBUILDDLL=1 -!endif - -!include $(WXDIR)\src\makeb32.env - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib -USE_CTL3D=0 - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -!if "$(USE_CTL3D)" == "1" -#Use WIN32S/WIN95 32 bit version ctl3d32.dll under win95 (Andre Beltman) -PERIPH_LIBS=$(WXDIR)\lib\ctl3d32.lib $(PERIPH_LIBS) -PERIPH_TARGET=ctl3d $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_ctl3d $(PERIPH_CLEAN_TARGET) -!endif - -#PERIPH_LIBS=$(WXDIR)\lib\zlib.lib $(WXDIR)\lib\winpng.lib $(WXDIR)\lib\jpeg.lib $(WXDIR)\lib\tiff.lib $(PERIPH_LIBS) -PERIPH_LIBS= -PERIPH_TARGET=zlib png jpeg tiff regex $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_zlib clean_png clean_jpeg clean_tiff clean_regex $(PERIPH_CLEAN_TARGET) - -!if "$(DLL)" == "0" -DUMMY=dummy -!else -DUMMY=dummydll -LIBS= cw32mti import32 ole2w32 odbc32 zlib winpng jpeg tiff regex -!endif - -LIBTARGET=$(WXLIB) - -GENDIR=..\generic -COMMDIR=..\common -HTMLDIR=..\html -OLEDIR=.\ole -UNIVDIR=..\univ -UNIVTHEMEDIR=..\univ\themes -MSWDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= $(MSWDIR)\accel.obj \ - $(MSWDIR)\busyinfo.obj \ - $(MSWDIR)\calctrl.obj \ - $(MSWDIR)\choicdgg.obj \ - $(MSWDIR)\colrdlgg.obj \ - $(MSWDIR)\dcbuffer.obj \ - $(MSWDIR)\dcpsg.obj \ - $(MSWDIR)\dirctrlg.obj \ - $(MSWDIR)\dirdlgg.obj \ - $(MSWDIR)\dragimgg.obj \ - $(MSWDIR)\fdrepdlg.obj \ - $(MSWDIR)\filedlgg.obj \ - $(MSWDIR)\fontdlgg.obj \ - $(MSWDIR)\grid.obj \ - $(MSWDIR)\gridctrl.obj \ - $(MSWDIR)\gridsel.obj \ - $(MSWDIR)\helpext.obj \ - $(MSWDIR)\helphtml.obj \ - $(MSWDIR)\laywin.obj \ - $(MSWDIR)\listctrl.obj \ - $(MSWDIR)\logg.obj \ - $(MSWDIR)\mdig.obj \ - $(MSWDIR)\msgdlgg.obj \ - $(MSWDIR)\numdlgg.obj \ - $(MSWDIR)\panelg.obj \ - $(MSWDIR)\printps.obj \ - $(MSWDIR)\prntdlgg.obj \ - $(MSWDIR)\progdlgg.obj \ - $(MSWDIR)\prop.obj \ - $(MSWDIR)\propform.obj \ - $(MSWDIR)\proplist.obj \ - $(MSWDIR)\sashwin.obj \ - $(MSWDIR)\scrlwing.obj \ - $(MSWDIR)\spinctlg.obj \ - $(MSWDIR)\splash.obj \ - $(MSWDIR)\splitter.obj \ - $(MSWDIR)\tabg.obj \ - $(MSWDIR)\tbarsmpl.obj \ - $(MSWDIR)\textdlgg.obj \ - $(MSWDIR)\tipdlg.obj \ - $(MSWDIR)\tipwin.obj \ - $(MSWDIR)\treectlg.obj \ - $(MSWDIR)\treelay.obj \ - $(MSWDIR)\wizard.obj - -# Not needed: -# $(MSWDIR)\colrdlgg.obj \ -# $(MSWDIR)\fontdlgg.obj \ -# $(MSWDIR)\msgdlgg.obj \ -# $(MSWDIR)\printps.obj \ -# $(MSWDIR)\prntdlgg.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\treectrl.obj - -COMMONOBJS = \ - $(MSWDIR)\y_tab.obj \ - $(MSWDIR)\appcmn.obj \ - $(MSWDIR)\artprov.obj \ - $(MSWDIR)\artstd.obj \ - $(MSWDIR)\choiccmn.obj \ - $(MSWDIR)\clipcmn.obj \ - $(MSWDIR)\clntdata.obj \ - $(MSWDIR)\cmdline.obj \ - $(MSWDIR)\cmdproc.obj \ - $(MSWDIR)\cmndata.obj \ - $(MSWDIR)\config.obj \ - $(MSWDIR)\containr.obj \ - $(MSWDIR)\cshelp.obj \ - $(MSWDIR)\ctrlcmn.obj \ - $(MSWDIR)\ctrlsub.obj \ - $(MSWDIR)\datetime.obj \ - $(MSWDIR)\datstrm.obj \ - $(MSWDIR)\db.obj \ - $(MSWDIR)\dbgrid.obj \ - $(MSWDIR)\dbtable.obj \ - $(MSWDIR)\dcbase.obj \ - $(MSWDIR)\dircmn.obj \ - $(MSWDIR)\dlgcmn.obj \ - $(MSWDIR)\dndcmn.obj \ - $(MSWDIR)\dobjcmn.obj \ - $(MSWDIR)\docmdi.obj \ - $(MSWDIR)\docview.obj \ - $(MSWDIR)\dseldlg.obj \ - $(MSWDIR)\dynarray.obj \ - $(MSWDIR)\dynlib.obj \ - $(MSWDIR)\dynload.obj \ - $(MSWDIR)\effects.obj \ - $(MSWDIR)\encconv.obj \ - $(MSWDIR)\event.obj \ - $(MSWDIR)\extended.obj \ - $(MSWDIR)\fddlgcmn.obj \ - $(MSWDIR)\ffile.obj \ - $(MSWDIR)\file.obj \ - $(MSWDIR)\fileconf.obj \ - $(MSWDIR)\filefn.obj \ - $(MSWDIR)\filename.obj \ - $(MSWDIR)\filesys.obj \ - $(MSWDIR)\fontcmn.obj \ - $(MSWDIR)\fontmap.obj \ - $(MSWDIR)\framecmn.obj \ - $(MSWDIR)\fs_inet.obj \ - $(MSWDIR)\fs_mem.obj \ - $(MSWDIR)\fs_zip.obj \ - $(MSWDIR)\ftp.obj \ - $(MSWDIR)\gaugecmn.obj \ - $(MSWDIR)\gdicmn.obj \ - $(MSWDIR)\geometry.obj \ - $(MSWDIR)\gifdecod.obj \ - $(MSWDIR)\hash.obj \ - $(MSWDIR)\hashmap.obj \ - $(MSWDIR)\helpbase.obj \ - $(MSWDIR)\http.obj \ - $(MSWDIR)\iconbndl.obj \ - $(MSWDIR)\imagall.obj \ - $(MSWDIR)\imagbmp.obj \ - $(MSWDIR)\image.obj \ - $(MSWDIR)\imagfill.obj \ - $(MSWDIR)\imaggif.obj \ - $(MSWDIR)\imagiff.obj \ - $(MSWDIR)\imagjpeg.obj \ - $(MSWDIR)\imagpcx.obj \ - $(MSWDIR)\imagpng.obj \ - $(MSWDIR)\imagpnm.obj \ - $(MSWDIR)\imagtiff.obj \ - $(MSWDIR)\imagxpm.obj \ - $(MSWDIR)\intl.obj \ - $(MSWDIR)\ipcbase.obj \ - $(MSWDIR)\layout.obj \ - $(MSWDIR)\lboxcmn.obj \ - $(MSWDIR)\list.obj \ - $(MSWDIR)\log.obj \ - $(MSWDIR)\longlong.obj \ - $(MSWDIR)\matrix.obj \ - $(MSWDIR)\memory.obj \ - $(MSWDIR)\menucmn.obj \ - $(MSWDIR)\mimecmn.obj \ - $(MSWDIR)\module.obj \ - $(MSWDIR)\msgout.obj \ - $(MSWDIR)\mstream.obj \ - $(MSWDIR)\nbkbase.obj \ - $(MSWDIR)\object.obj \ - $(MSWDIR)\odbc.obj \ - $(MSWDIR)\paper.obj \ - $(MSWDIR)\popupcmn.obj \ - $(MSWDIR)\prntbase.obj \ - $(MSWDIR)\process.obj \ - $(MSWDIR)\protocol.obj \ - $(MSWDIR)\quantize.obj \ - $(MSWDIR)\radiocmn.obj \ - $(MSWDIR)\regex.obj \ - $(MSWDIR)\resource.obj \ - $(MSWDIR)\sckaddr.obj \ - $(MSWDIR)\sckfile.obj \ - $(MSWDIR)\sckipc.obj \ - $(MSWDIR)\sckstrm.obj \ - $(MSWDIR)\settcmn.obj \ - $(MSWDIR)\sizer.obj \ - $(MSWDIR)\socket.obj \ - $(MSWDIR)\statbar.obj \ - $(MSWDIR)\strconv.obj \ - $(MSWDIR)\stream.obj \ - $(MSWDIR)\string.obj \ - $(MSWDIR)\sysopt.obj \ - $(MSWDIR)\tbarbase.obj \ - $(MSWDIR)\textbuf.obj \ - $(MSWDIR)\textcmn.obj \ - $(MSWDIR)\textfile.obj \ - $(MSWDIR)\timercmn.obj \ - $(MSWDIR)\tokenzr.obj \ - $(MSWDIR)\toplvcmn.obj \ - $(MSWDIR)\treebase.obj \ - $(MSWDIR)\txtstrm.obj \ - $(MSWDIR)\unzip.obj \ - $(MSWDIR)\url.obj \ - $(MSWDIR)\utilscmn.obj \ - $(MSWDIR)\valgen.obj \ - $(MSWDIR)\validate.obj \ - $(MSWDIR)\valtext.obj \ - $(MSWDIR)\variant.obj \ - $(MSWDIR)\wfstream.obj \ - $(MSWDIR)\wincmn.obj \ - $(MSWDIR)\wxchar.obj \ - $(MSWDIR)\wxexpr.obj \ - $(MSWDIR)\xpmdecod.obj \ - $(MSWDIR)\zipstrm.obj \ - $(MSWDIR)\zstream.obj - -MSWOBJS = $(MSWDIR)\app.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\caret.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\dir.obj \ - $(MSWDIR)\evtloop.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontenum.obj \ - $(MSWDIR)\fontutil.obj \ - $(MSWDIR)\gdiimage.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\gsocket.obj \ - $(MSWDIR)\gsockmsw.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\imaglist.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mimetype.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\popupwin.obj \ - $(MSWDIR)\regconf.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\registry.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\snglinst.obj \ - $(MSWDIR)\thread.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\toplevel.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(MSWDIR)\volume.obj \ - $(MSWDIR)\window.obj - -HTMLOBJS = $(MSWDIR)\helpctrl.obj \ - $(MSWDIR)\helpdata.obj \ - $(MSWDIR)\helpfrm.obj \ - $(MSWDIR)\htmlcell.obj \ - $(MSWDIR)\htmlfilt.obj \ - $(MSWDIR)\htmlpars.obj \ - $(MSWDIR)\htmltag.obj \ - $(MSWDIR)\htmlwin.obj \ - $(MSWDIR)\htmprint.obj \ - $(MSWDIR)\m_dflist.obj \ - $(MSWDIR)\m_fonts.obj \ - $(MSWDIR)\m_hline.obj \ - $(MSWDIR)\m_image.obj \ - $(MSWDIR)\m_layout.obj \ - $(MSWDIR)\m_links.obj \ - $(MSWDIR)\m_list.obj \ - $(MSWDIR)\m_meta.obj \ - $(MSWDIR)\m_pre.obj \ - $(MSWDIR)\m_style.obj \ - $(MSWDIR)\m_tables.obj \ - $(MSWDIR)\winpars.obj - -UNIVOBJS = $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\colschem.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\framuniv.obj \ - $(MSWDIR)\gauge.obj \ - $(MSWDIR)\inpcons.obj \ - $(MSWDIR)\inphand.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\menu.obj \ - $(MSWDIR)\notebook.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\renderer.obj \ - $(MSWDIR)\scrarrow.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\scrthumb.obj \ - $(MSWDIR)\slider.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\statline.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\statusbr.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\theme.obj \ - $(MSWDIR)\toolbar.obj \ - $(MSWDIR)\topluniv.obj \ - $(MSWDIR)\winuniv.obj - -UNIVTHEMEOBJS = $(MSWDIR)\gtk.obj \ - $(MSWDIR)\metal.obj \ - $(MSWDIR)\win32.obj - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(HTMLOBJS) $(UNIVOBJS) $(UNIVTHEMEOBJS) - -default: wx - -wx: $(ARCHINCDIR)\wx makesetuph makearchsetuph $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -all: wx - -# Copy the in-CVS setup0.h to setup.h if necessary -makesetuph: - cd $(WXDIR)\include\wx\msw - if not exist setup.h copy setup0.h setup.h - cd $(WXDIR)\src\msw - -# Copy include\wx\univ\setup.h to the architecture-specific location -makearchsetuph: - copy $(WXDIR)\include\wx\univ\setup.h $(ARCHSETUPH) - cd $(WXDIR)\src\msw - -$(ARCHINCDIR)\wx: - -mkdir $(ARCHINCDIR) - -mkdir $(ARCHINCDIR)\wx - -!if "$(DLL)" == "0" - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - -erase $(LIBTARGET) - tlib "$(LIBTARGET)" /P1024 @&&! -+$(OBJECTS:.obj =.obj +) +$(PERIPH_LIBS:.lib =.lib +) -! - -!else - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - -erase $(LIBTARGET) - -erase $(WXLIBDIR)\wx.dll - $(LINK) $(LINK_FLAGS) /L$(WXLIBDIR);$(BCCDIR)\lib;$(BCCDIR)\lib\psdk /v @&&! -c0d32.obj $(OBJECTS) -$(WXLIBDIR)\wx -nul -$(PERIPH_LIBS) $(LIBS) -wxb32 -! - -erase $(WXLIBDIR)\version.res - brc32 -r -i$(WXDIR)\include\ $(MSWDIR)\version.rc - implib -c $(LIBTARGET) $(WXLIBDIR)\wx.dll - -!endif - -dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h -dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h version.res - -$(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -# cl @<< -# $(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -# << - -$(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 - -# $(OBJECTS): $(WXDIR)\include\wx\setup.h - -$(MSWDIR)\app.obj: $(MSWDIR)\app.$(SRCSUFF) - -$(MSWDIR)\bitmap.obj: $(MSWDIR)\bitmap.$(SRCSUFF) - -$(MSWDIR)\brush.obj: $(MSWDIR)\brush.$(SRCSUFF) - -$(MSWDIR)\caret.obj: $(MSWDIR)\caret.$(SRCSUFF) - -$(MSWDIR)\clipbrd.obj: $(MSWDIR)\clipbrd.$(SRCSUFF) - -$(MSWDIR)\colour.obj: $(MSWDIR)\colour.$(SRCSUFF) - -$(MSWDIR)\cursor.obj: $(MSWDIR)\cursor.$(SRCSUFF) - -$(MSWDIR)\data.obj: $(MSWDIR)\data.$(SRCSUFF) - -$(MSWDIR)\dc.obj: $(MSWDIR)\dc.$(SRCSUFF) - -$(MSWDIR)\dcclient.obj: $(MSWDIR)\dcclient.$(SRCSUFF) - -$(MSWDIR)\dcmemory.obj: $(MSWDIR)\dcmemory.$(SRCSUFF) - -$(MSWDIR)\dcprint.obj: $(MSWDIR)\dcprint.$(SRCSUFF) - -$(MSWDIR)\dcscreen.obj: $(MSWDIR)\dcscreen.$(SRCSUFF) - -$(MSWDIR)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) - -$(MSWDIR)\dib.obj: $(MSWDIR)\dib.$(SRCSUFF) - -$(MSWDIR)\dir.obj: $(MSWDIR)\dir.$(SRCSUFF) - -$(MSWDIR)\evtloop.obj: $(MSWDIR)\evtloop.$(SRCSUFF) - -$(MSWDIR)\font.obj: $(MSWDIR)\font.$(SRCSUFF) - -$(MSWDIR)\fontenum.obj: $(MSWDIR)\fontenum.$(SRCSUFF) - -$(MSWDIR)\fontutil.obj: $(MSWDIR)\fontutil.$(SRCSUFF) - -$(MSWDIR)\gdiimage.obj: $(MSWDIR)\gdiimage.$(SRCSUFF) - -$(MSWDIR)\gdiobj.obj: $(MSWDIR)\gdiobj.$(SRCSUFF) - -$(MSWDIR)\gsocket.obj: $(MSWDIR)\gsocket.c - -$(MSWDIR)\gsockmsw.obj: $(MSWDIR)\gsockmsw.c - -$(MSWDIR)\icon.obj: $(MSWDIR)\icon.$(SRCSUFF) - -$(MSWDIR)\imaglist.obj: $(MSWDIR)\imaglist.$(SRCSUFF) - -$(MSWDIR)\main.obj: $(MSWDIR)\main.$(SRCSUFF) - -$(MSWDIR)\mimetype.obj: $(MSWDIR)\mimetype.$(SRCSUFF) - -$(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF) - -$(MSWDIR)\pen.obj: $(MSWDIR)\pen.$(SRCSUFF) - -$(MSWDIR)\popupwin.obj: $(MSWDIR)\popupwin.$(SRCSUFF) - -$(MSWDIR)\regconf.obj: $(MSWDIR)\regconf.$(SRCSUFF) - -$(MSWDIR)\region.obj: $(MSWDIR)\region.$(SRCSUFF) - -$(MSWDIR)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF) - -$(MSWDIR)\settings.obj: $(MSWDIR)\settings.$(SRCSUFF) - -$(MSWDIR)\snglinst.obj: $(MSWDIR)\snglinst.$(SRCSUFF) - -$(MSWDIR)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF) - -$(MSWDIR)\timer.obj: $(MSWDIR)\timer.$(SRCSUFF) - -$(MSWDIR)\toplevel.obj: $(MSWDIR)\toplevel.$(SRCSUFF) - -$(MSWDIR)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF) - -$(MSWDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF) - -$(MSWDIR)\volume.obj: $(MSWDIR)\volume.$(SRCSUFF) - -$(MSWDIR)\window.obj: $(MSWDIR)\window.$(SRCSUFF) - - - -######################################################## -# Common objects (always compiled) - -$(MSWDIR)\appcmn.obj: $(COMMDIR)\appcmn.$(SRCSUFF) - -$(MSWDIR)\artprov.obj: $(COMMDIR)\artprov.$(SRCSUFF) - -$(MSWDIR)\artstd.obj: $(COMMDIR)\artstd.$(SRCSUFF) - -$(MSWDIR)\choiccmn.obj: $(COMMDIR)\choiccmn.$(SRCSUFF) - -$(MSWDIR)\clipcmn.obj: $(COMMDIR)\clipcmn.$(SRCSUFF) - -$(MSWDIR)\clntdata.obj: $(COMMDIR)\clntdata.$(SRCSUFF) - -$(MSWDIR)\cmdline.obj: $(COMMDIR)\cmdline.$(SRCSUFF) - -$(MSWDIR)\cmdproc.obj: $(COMMDIR)\cmdproc.$(SRCSUFF) - -$(MSWDIR)\cmndata.obj: $(COMMDIR)\cmndata.$(SRCSUFF) - -$(MSWDIR)\config.obj: $(COMMDIR)\config.$(SRCSUFF) - -$(MSWDIR)\containr.obj: $(COMMDIR)\containr.$(SRCSUFF) - -$(MSWDIR)\cshelp.obj: $(COMMDIR)\cshelp.$(SRCSUFF) - -$(MSWDIR)\ctrlcmn.obj: $(COMMDIR)\ctrlcmn.$(SRCSUFF) - -$(MSWDIR)\ctrlsub.obj: $(COMMDIR)\ctrlsub.$(SRCSUFF) - -$(MSWDIR)\datetime.obj: $(COMMDIR)\datetime.$(SRCSUFF) - -$(MSWDIR)\datstrm.obj: $(COMMDIR)\datstrm.$(SRCSUFF) - -$(MSWDIR)\db.obj: $(COMMDIR)\db.$(SRCSUFF) - -$(MSWDIR)\dbgrid.obj: $(COMMDIR)\dbgrid.$(SRCSUFF) - -$(MSWDIR)\dbtable.obj: $(COMMDIR)\dbtable.$(SRCSUFF) - -$(MSWDIR)\dcbase.obj: $(COMMDIR)\dcbase.$(SRCSUFF) - -$(MSWDIR)\dircmn.obj: $(COMMDIR)\dircmn.$(SRCSUFF) - -$(MSWDIR)\dlgcmn.obj: $(COMMDIR)\dlgcmn.$(SRCSUFF) - -$(MSWDIR)\dndcmn.obj: $(COMMDIR)\dndcmn.$(SRCSUFF) - -$(MSWDIR)\dobjcmn.obj: $(COMMDIR)\dobjcmn.$(SRCSUFF) - -$(MSWDIR)\docmdi.obj: $(COMMDIR)\docmdi.$(SRCSUFF) - -$(MSWDIR)\docview.obj: $(COMMDIR)\docview.$(SRCSUFF) - -$(MSWDIR)\dseldlg.obj: $(COMMDIR)\dseldlg.$(SRCSUFF) - -$(MSWDIR)\dynarray.obj: $(COMMDIR)\dynarray.$(SRCSUFF) - -$(MSWDIR)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF) - -$(MSWDIR)\dynload.obj: $(COMMDIR)\dynload.$(SRCSUFF) - -$(MSWDIR)\effects.obj: $(COMMDIR)\effects.$(SRCSUFF) - -$(MSWDIR)\encconv.obj: $(COMMDIR)\encconv.$(SRCSUFF) - -$(MSWDIR)\event.obj: $(COMMDIR)\event.$(SRCSUFF) - -$(MSWDIR)\extended.obj: $(COMMDIR)\extended.c - -$(MSWDIR)\fddlgcmn.obj: $(COMMDIR)\fddlgcmn.$(SRCSUFF) - -$(MSWDIR)\ffile.obj: $(COMMDIR)\ffile.$(SRCSUFF) - -$(MSWDIR)\file.obj: $(COMMDIR)\file.$(SRCSUFF) - -$(MSWDIR)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF) - -$(MSWDIR)\filefn.obj: $(COMMDIR)\filefn.$(SRCSUFF) - -$(MSWDIR)\filename.obj: $(COMMDIR)\filename.$(SRCSUFF) - -$(MSWDIR)\filesys.obj: $(COMMDIR)\filesys.$(SRCSUFF) - -$(MSWDIR)\fontcmn.obj: $(COMMDIR)\fontcmn.$(SRCSUFF) - -$(MSWDIR)\fontmap.obj: $(COMMDIR)\fontmap.$(SRCSUFF) - -$(MSWDIR)\framecmn.obj: $(COMMDIR)\framecmn.$(SRCSUFF) - -$(MSWDIR)\fs_inet.obj: $(COMMDIR)\fs_inet.$(SRCSUFF) - -$(MSWDIR)\fs_mem.obj: $(COMMDIR)\fs_mem.$(SRCSUFF) - -$(MSWDIR)\fs_zip.obj: $(COMMDIR)\fs_zip.$(SRCSUFF) - -$(MSWDIR)\ftp.obj: $(COMMDIR)\ftp.$(SRCSUFF) - -$(MSWDIR)\gaugecmn.obj: $(COMMDIR)\gaugecmn.$(SRCSUFF) - -$(MSWDIR)\gdicmn.obj: $(COMMDIR)\gdicmn.$(SRCSUFF) - -$(MSWDIR)\geometry.obj: $(COMMDIR)\geometry.$(SRCSUFF) - -$(MSWDIR)\gifdecod.obj: $(COMMDIR)\gifdecod.$(SRCSUFF) - -$(MSWDIR)\hash.obj: $(COMMDIR)\hash.$(SRCSUFF) - -$(MSWDIR)\hashmap.obj: $(COMMDIR)\hashmap.$(SRCSUFF) - -$(MSWDIR)\helpbase.obj: $(COMMDIR)\helpbase.$(SRCSUFF) - -$(MSWDIR)\http.obj: $(COMMDIR)\http.$(SRCSUFF) - -$(MSWDIR)\iconbndl.obj: $(COMMDIR)\iconbndl.$(SRCSUFF) - -$(MSWDIR)\imagall.obj: $(COMMDIR)\imagall.$(SRCSUFF) - -$(MSWDIR)\imagbmp.obj: $(COMMDIR)\imagbmp.$(SRCSUFF) - -$(MSWDIR)\image.obj: $(COMMDIR)\image.$(SRCSUFF) - -$(MSWDIR)\imagfill.obj: $(COMMDIR)\imagfill.$(SRCSUFF) - -$(MSWDIR)\imaggif.obj: $(COMMDIR)\imaggif.$(SRCSUFF) - -$(MSWDIR)\imagiff.obj: $(COMMDIR)\imagiff.$(SRCSUFF) - -$(MSWDIR)\imagjpeg.obj: $(COMMDIR)\imagjpeg.$(SRCSUFF) - -$(MSWDIR)\imagpcx.obj: $(COMMDIR)\imagpcx.$(SRCSUFF) - -$(MSWDIR)\imagpng.obj: $(COMMDIR)\imagpng.$(SRCSUFF) - -$(MSWDIR)\imagpnm.obj: $(COMMDIR)\imagpnm.$(SRCSUFF) - -$(MSWDIR)\imagtiff.obj: $(COMMDIR)\imagtiff.$(SRCSUFF) - -$(MSWDIR)\imagxpm.obj: $(COMMDIR)\imagxpm.$(SRCSUFF) - -$(MSWDIR)\intl.obj: $(COMMDIR)\intl.$(SRCSUFF) - -$(MSWDIR)\ipcbase.obj: $(COMMDIR)\ipcbase.$(SRCSUFF) - -$(MSWDIR)\layout.obj: $(COMMDIR)\layout.$(SRCSUFF) - -$(MSWDIR)\lboxcmn.obj: $(COMMDIR)\lboxcmn.$(SRCSUFF) - -$(MSWDIR)\list.obj: $(COMMDIR)\list.$(SRCSUFF) - -$(MSWDIR)\log.obj: $(COMMDIR)\log.$(SRCSUFF) - -$(MSWDIR)\longlong.obj: $(COMMDIR)\longlong.$(SRCSUFF) - -$(MSWDIR)\matrix.obj: $(COMMDIR)\matrix.$(SRCSUFF) - -$(MSWDIR)\memory.obj: $(COMMDIR)\memory.$(SRCSUFF) - -$(MSWDIR)\menucmn.obj: $(COMMDIR)\menucmn.$(SRCSUFF) - -$(MSWDIR)\mimecmn.obj: $(COMMDIR)\mimecmn.$(SRCSUFF) - -$(MSWDIR)\module.obj: $(COMMDIR)\module.$(SRCSUFF) - -$(MSWDIR)\msgout.obj: $(COMMDIR)\msgout.$(SRCSUFF) - -$(MSWDIR)\mstream.obj: $(COMMDIR)\mstream.$(SRCSUFF) - -$(MSWDIR)\nbkbase.obj: $(COMMDIR)\nbkbase.$(SRCSUFF) - -$(MSWDIR)\object.obj: $(COMMDIR)\object.$(SRCSUFF) - -$(MSWDIR)\odbc.obj: $(COMMDIR)\odbc.$(SRCSUFF) - -$(MSWDIR)\paper.obj: $(COMMDIR)\paper.$(SRCSUFF) - -$(MSWDIR)\popupcmn.obj: $(COMMDIR)\popupcmn.$(SRCSUFF) - -$(MSWDIR)\prntbase.obj: $(COMMDIR)\prntbase.$(SRCSUFF) - -$(MSWDIR)\process.obj: $(COMMDIR)\process.$(SRCSUFF) - -$(MSWDIR)\protocol.obj: $(COMMDIR)\protocol.$(SRCSUFF) - -$(MSWDIR)\quantize.obj: $(COMMDIR)\quantize.$(SRCSUFF) - -$(MSWDIR)\radiocmn.obj: $(COMMDIR)\radiocmn.$(SRCSUFF) - -$(MSWDIR)\regex.obj: $(COMMDIR)\regex.$(SRCSUFF) - -$(MSWDIR)\resource.obj: $(COMMDIR)\resource.$(SRCSUFF) - -$(MSWDIR)\sckaddr.obj: $(COMMDIR)\sckaddr.$(SRCSUFF) - -$(MSWDIR)\sckfile.obj: $(COMMDIR)\sckfile.$(SRCSUFF) - -$(MSWDIR)\sckipc.obj: $(COMMDIR)\sckipc.$(SRCSUFF) - -$(MSWDIR)\sckstrm.obj: $(COMMDIR)\sckstrm.$(SRCSUFF) - -$(MSWDIR)\settcmn.obj: $(COMMDIR)\settcmn.$(SRCSUFF) - -$(MSWDIR)\sizer.obj: $(COMMDIR)\sizer.$(SRCSUFF) - -$(MSWDIR)\socket.obj: $(COMMDIR)\socket.$(SRCSUFF) - -$(MSWDIR)\statbar.obj: $(COMMDIR)\statbar.$(SRCSUFF) - -$(MSWDIR)\strconv.obj: $(COMMDIR)\strconv.$(SRCSUFF) - -$(MSWDIR)\stream.obj: $(COMMDIR)\stream.$(SRCSUFF) - -$(MSWDIR)\string.obj: $(COMMDIR)\string.$(SRCSUFF) - -$(MSWDIR)\sysopt.obj: $(COMMDIR)\sysopt.$(SRCSUFF) - -$(MSWDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.$(SRCSUFF) - -$(MSWDIR)\textbuf.obj: $(COMMDIR)\textbuf.$(SRCSUFF) - -$(MSWDIR)\textcmn.obj: $(COMMDIR)\textcmn.$(SRCSUFF) - -$(MSWDIR)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF) - -$(MSWDIR)\timercmn.obj: $(COMMDIR)\timercmn.$(SRCSUFF) - -$(MSWDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF) - -$(MSWDIR)\toplvcmn.obj: $(COMMDIR)\toplvcmn.$(SRCSUFF) - -$(MSWDIR)\treebase.obj: $(COMMDIR)\treebase.$(SRCSUFF) - -$(MSWDIR)\txtstrm.obj: $(COMMDIR)\txtstrm.$(SRCSUFF) - -$(MSWDIR)\unzip.obj: $(COMMDIR)\unzip.c - -$(MSWDIR)\url.obj: $(COMMDIR)\url.$(SRCSUFF) - -$(MSWDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF) - -$(MSWDIR)\valgen.obj: $(COMMDIR)\valgen.$(SRCSUFF) - -$(MSWDIR)\validate.obj: $(COMMDIR)\validate.$(SRCSUFF) - -$(MSWDIR)\valtext.obj: $(COMMDIR)\valtext.$(SRCSUFF) - -$(MSWDIR)\variant.obj: $(COMMDIR)\variant.$(SRCSUFF) - -$(MSWDIR)\wfstream.obj: $(COMMDIR)\wfstream.$(SRCSUFF) - -$(MSWDIR)\wincmn.obj: $(COMMDIR)\wincmn.$(SRCSUFF) - -$(MSWDIR)\wxchar.obj: $(COMMDIR)\wxchar.$(SRCSUFF) - -$(MSWDIR)\wxexpr.obj: $(COMMDIR)\wxexpr.$(SRCSUFF) - -$(MSWDIR)\xpmdecod.obj: $(COMMDIR)\xpmdecod.$(SRCSUFF) - -$(MSWDIR)\zipstrm.obj: $(COMMDIR)\zipstrm.$(SRCSUFF) - -$(MSWDIR)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF) - - - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(MSWDIR)\accel.obj: $(GENDIR)\accel.$(SRCSUFF) - -$(MSWDIR)\busyinfo.obj: $(GENDIR)\busyinfo.$(SRCSUFF) - -$(MSWDIR)\calctrl.obj: $(GENDIR)\calctrl.$(SRCSUFF) - -$(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF) - -$(MSWDIR)\colrdlgg.obj: $(GENDIR)\colrdlgg.$(SRCSUFF) - -$(MSWDIR)\dcbuffer.obj: $(GENDIR)\dcbuffer.$(SRCSUFF) - -$(MSWDIR)\dcpsg.obj: $(GENDIR)\dcpsg.$(SRCSUFF) - -$(MSWDIR)\dirctrlg.obj: $(GENDIR)\dirctrlg.$(SRCSUFF) - -$(MSWDIR)\dirdlgg.obj: $(GENDIR)\dirdlgg.$(SRCSUFF) - -$(MSWDIR)\dragimgg.obj: $(GENDIR)\dragimgg.$(SRCSUFF) - -$(MSWDIR)\fdrepdlg.obj: $(GENDIR)\fdrepdlg.$(SRCSUFF) - -$(MSWDIR)\filedlgg.obj: $(GENDIR)\filedlgg.$(SRCSUFF) - -$(MSWDIR)\fontdlgg.obj: $(GENDIR)\fontdlgg.$(SRCSUFF) - -$(MSWDIR)\grid.obj: $(GENDIR)\grid.$(SRCSUFF) - -$(MSWDIR)\gridctrl.obj: $(GENDIR)\gridctrl.$(SRCSUFF) - -$(MSWDIR)\gridsel.obj: $(GENDIR)\gridsel.$(SRCSUFF) - -$(MSWDIR)\helpext.obj: $(GENDIR)\helpext.$(SRCSUFF) - -$(MSWDIR)\helphtml.obj: $(GENDIR)\helphtml.$(SRCSUFF) - -$(MSWDIR)\laywin.obj: $(GENDIR)\laywin.$(SRCSUFF) - -$(MSWDIR)\listctrl.obj: $(GENDIR)\listctrl.$(SRCSUFF) - -$(MSWDIR)\logg.obj: $(GENDIR)\logg.$(SRCSUFF) - -$(MSWDIR)\mdig.obj: $(GENDIR)\mdig.$(SRCSUFF) - -$(MSWDIR)\msgdlgg.obj: $(GENDIR)\msgdlgg.$(SRCSUFF) - -$(MSWDIR)\numdlgg.obj: $(GENDIR)\numdlgg.$(SRCSUFF) - -$(MSWDIR)\panelg.obj: $(GENDIR)\panelg.$(SRCSUFF) - -$(MSWDIR)\printps.obj: $(GENDIR)\printps.$(SRCSUFF) - -$(MSWDIR)\prntdlgg.obj: $(GENDIR)\prntdlgg.$(SRCSUFF) - -$(MSWDIR)\progdlgg.obj: $(GENDIR)\progdlgg.$(SRCSUFF) - -$(MSWDIR)\prop.obj: $(GENDIR)\prop.$(SRCSUFF) - -$(MSWDIR)\propform.obj: $(GENDIR)\propform.$(SRCSUFF) - -$(MSWDIR)\proplist.obj: $(GENDIR)\proplist.$(SRCSUFF) - -$(MSWDIR)\sashwin.obj: $(GENDIR)\sashwin.$(SRCSUFF) - -$(MSWDIR)\scrlwing.obj: $(GENDIR)\scrlwing.$(SRCSUFF) - -$(MSWDIR)\spinctlg.obj: $(GENDIR)\spinctlg.$(SRCSUFF) - -$(MSWDIR)\splash.obj: $(GENDIR)\splash.$(SRCSUFF) - -$(MSWDIR)\splitter.obj: $(GENDIR)\splitter.$(SRCSUFF) - -$(MSWDIR)\tabg.obj: $(GENDIR)\tabg.$(SRCSUFF) - -$(MSWDIR)\tbarsmpl.obj: $(GENDIR)\tbarsmpl.$(SRCSUFF) - -$(MSWDIR)\textdlgg.obj: $(GENDIR)\textdlgg.$(SRCSUFF) - -$(MSWDIR)\tipdlg.obj: $(GENDIR)\tipdlg.$(SRCSUFF) - -$(MSWDIR)\tipwin.obj: $(GENDIR)\tipwin.$(SRCSUFF) - -$(MSWDIR)\treectlg.obj: $(GENDIR)\treectlg.$(SRCSUFF) - -$(MSWDIR)\treelay.obj: $(GENDIR)\treelay.$(SRCSUFF) - -$(MSWDIR)\wizard.obj: $(GENDIR)\wizard.$(SRCSUFF) - - - -######################################################## -# HTML objects (always compiled) - -$(MSWDIR)\helpctrl.obj: $(HTMLDIR)\helpctrl.$(SRCSUFF) - -$(MSWDIR)\helpdata.obj: $(HTMLDIR)\helpdata.$(SRCSUFF) - -$(MSWDIR)\helpfrm.obj: $(HTMLDIR)\helpfrm.$(SRCSUFF) - -$(MSWDIR)\htmlcell.obj: $(HTMLDIR)\htmlcell.$(SRCSUFF) - -$(MSWDIR)\htmlfilt.obj: $(HTMLDIR)\htmlfilt.$(SRCSUFF) - -$(MSWDIR)\htmlpars.obj: $(HTMLDIR)\htmlpars.$(SRCSUFF) - -$(MSWDIR)\htmltag.obj: $(HTMLDIR)\htmltag.$(SRCSUFF) - -$(MSWDIR)\htmlwin.obj: $(HTMLDIR)\htmlwin.$(SRCSUFF) - -$(MSWDIR)\htmprint.obj: $(HTMLDIR)\htmprint.$(SRCSUFF) - -$(MSWDIR)\m_dflist.obj: $(HTMLDIR)\m_dflist.$(SRCSUFF) - -$(MSWDIR)\m_fonts.obj: $(HTMLDIR)\m_fonts.$(SRCSUFF) - -$(MSWDIR)\m_hline.obj: $(HTMLDIR)\m_hline.$(SRCSUFF) - -$(MSWDIR)\m_image.obj: $(HTMLDIR)\m_image.$(SRCSUFF) - -$(MSWDIR)\m_layout.obj: $(HTMLDIR)\m_layout.$(SRCSUFF) - -$(MSWDIR)\m_links.obj: $(HTMLDIR)\m_links.$(SRCSUFF) - -$(MSWDIR)\m_list.obj: $(HTMLDIR)\m_list.$(SRCSUFF) - -$(MSWDIR)\m_meta.obj: $(HTMLDIR)\m_meta.$(SRCSUFF) - -$(MSWDIR)\m_pre.obj: $(HTMLDIR)\m_pre.$(SRCSUFF) - -$(MSWDIR)\m_style.obj: $(HTMLDIR)\m_style.$(SRCSUFF) - -$(MSWDIR)\m_tables.obj: $(HTMLDIR)\m_tables.$(SRCSUFF) - -$(MSWDIR)\winpars.obj: $(HTMLDIR)\winpars.$(SRCSUFF) - - - - -######################################################## -# UNIV objects (always compiled) - -$(MSWDIR)\bmpbuttn.obj: $(UNIVDIR)\bmpbuttn.$(SRCSUFF) - -$(MSWDIR)\button.obj: $(UNIVDIR)\button.$(SRCSUFF) - -$(MSWDIR)\checkbox.obj: $(UNIVDIR)\checkbox.$(SRCSUFF) - -$(MSWDIR)\checklst.obj: $(UNIVDIR)\checklst.$(SRCSUFF) - -$(MSWDIR)\choice.obj: $(UNIVDIR)\choice.$(SRCSUFF) - -$(MSWDIR)\colschem.obj: $(UNIVDIR)\colschem.$(SRCSUFF) - -$(MSWDIR)\combobox.obj: $(UNIVDIR)\combobox.$(SRCSUFF) - -$(MSWDIR)\control.obj: $(UNIVDIR)\control.$(SRCSUFF) - -$(MSWDIR)\dialog.obj: $(UNIVDIR)\dialog.$(SRCSUFF) - -$(MSWDIR)\framuniv.obj: $(UNIVDIR)\framuniv.$(SRCSUFF) - -$(MSWDIR)\gauge.obj: $(UNIVDIR)\gauge.$(SRCSUFF) - -$(MSWDIR)\inpcons.obj: $(UNIVDIR)\inpcons.$(SRCSUFF) - -$(MSWDIR)\inphand.obj: $(UNIVDIR)\inphand.$(SRCSUFF) - -$(MSWDIR)\listbox.obj: $(UNIVDIR)\listbox.$(SRCSUFF) - -$(MSWDIR)\menu.obj: $(UNIVDIR)\menu.$(SRCSUFF) - -$(MSWDIR)\notebook.obj: $(UNIVDIR)\notebook.$(SRCSUFF) - -$(MSWDIR)\radiobox.obj: $(UNIVDIR)\radiobox.$(SRCSUFF) - -$(MSWDIR)\radiobut.obj: $(UNIVDIR)\radiobut.$(SRCSUFF) - -$(MSWDIR)\renderer.obj: $(UNIVDIR)\renderer.$(SRCSUFF) - -$(MSWDIR)\scrarrow.obj: $(UNIVDIR)\scrarrow.$(SRCSUFF) - -$(MSWDIR)\scrolbar.obj: $(UNIVDIR)\scrolbar.$(SRCSUFF) - -$(MSWDIR)\scrthumb.obj: $(UNIVDIR)\scrthumb.$(SRCSUFF) - -$(MSWDIR)\slider.obj: $(UNIVDIR)\slider.$(SRCSUFF) - -$(MSWDIR)\spinbutt.obj: $(UNIVDIR)\spinbutt.$(SRCSUFF) - -$(MSWDIR)\statbmp.obj: $(UNIVDIR)\statbmp.$(SRCSUFF) - -$(MSWDIR)\statbox.obj: $(UNIVDIR)\statbox.$(SRCSUFF) - -$(MSWDIR)\statline.obj: $(UNIVDIR)\statline.$(SRCSUFF) - -$(MSWDIR)\stattext.obj: $(UNIVDIR)\stattext.$(SRCSUFF) - -$(MSWDIR)\statusbr.obj: $(UNIVDIR)\statusbr.$(SRCSUFF) - -$(MSWDIR)\textctrl.obj: $(UNIVDIR)\textctrl.$(SRCSUFF) - -$(MSWDIR)\theme.obj: $(UNIVDIR)\theme.$(SRCSUFF) - -$(MSWDIR)\toolbar.obj: $(UNIVDIR)\toolbar.$(SRCSUFF) - -$(MSWDIR)\topluniv.obj: $(UNIVDIR)\topluniv.$(SRCSUFF) - -$(MSWDIR)\winuniv.obj: $(UNIVDIR)\winuniv.$(SRCSUFF) - - - - -######################################################## -# UNIV THEME objects (always compiled) - -$(MSWDIR)\gtk.obj: $(UNIVTHEMEDIR)\gtk.$(SRCSUFF) - -$(MSWDIR)\metal.obj: $(UNIVTHEMEDIR)\metal.$(SRCSUFF) - -$(MSWDIR)\win32.obj: $(UNIVTHEMEDIR)\win32.$(SRCSUFF) - - - - -all_utils: - cd $(WXDIR)\utils - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_samples: - cd $(WXDIR)\samples - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_execs: - cd $(WXDIR)\utils - make -f makefile.b32 all_execs - cd $(WXDIR)\src\msw - -png: $(CFG) - cd $(WXDIR)\src\png - make -f makefile.b32 - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -zlib: $(CFG) - cd $(WXDIR)\src\zlib - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -jpeg: $(CFG) - cd $(WXDIR)\src\jpeg - make -f makefile.b32 - cd $(WXDIR)\src\msw - -clean_jpeg: - cd $(WXDIR)\src\jpeg - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -regex: $(CFG) - cd $(WXDIR)\src\regex - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_regex: - cd $(WXDIR)\src\regex - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -tiff: $(CFG) - cd $(WXDIR)\src\tiff - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_tiff: - cd $(WXDIR)\src\tiff - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -$(CFG): makeuniv.b32 - copy &&! --Hc --H=$(WXDIR)\src\msw\wx32.csm --3 --d --a1 # byte alignment --R- --X --w-par --w-aus --w-hid # virtual function A hides virtual function B --tWM - --I$(ARCHINCDIR);$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/tiff --I$(WXDIR)\include\wx\msw\gnuwin32 - --L$(BCCDIR)\lib;$(BCCDIR)\lib\psdk --D__WXWIN__ --D__WINDOWS__ --D__WXUNIVERSAL__ --D_WIN32 --DWIN32 -$(OPT) -$(DEBUG_FLAGS) -$(WIN95FLAG) -! $(CFG) - -clean: $(PERIPH_CLEAN_TARGET) - -erase $(LIBTARGET) - -erase $(WXLIBDIR)\wx.dll - -erase $(WXLIBDIR)\wx.tds - -erase $(WXLIBDIR)\wx.il? - -erase *.obj - -erase *.pch - -erase *.csm - -erase *.cfg - -erase "wx32.#??" - -erase ..\common\y_tab.c - -erase ..\common\lex_yy.c - -cleanall: clean - - -# Making documents -docs: allhlp allhtml allpdfrtf -alldocs: docs -hlp: wxhlp portinghlp -wxhlp: $(DOCDIR)/winhelp/wx.hlp -prophlp: $(DOCDIR)/winhelp/prop.hlp -refhlp: $(DOCDIR)/winhelp/techref.hlp -rtf: $(DOCDIR)/winhelp/wx.rtf -proprtf: $(DOCDIR)/winhelp/prop.rtf -pdfrtf: $(DOCDIR)/pdf/wx.rtf -proppdfrtf: $(DOCDIR)/pdf/prop.rtf -refpdfrtf: $(DOCDIR)/pdf/techref.rtf -html: wxhtml portinghtml -wxhtml: $(DOCDIR)\html\wx\wx.htm -htmlhelp: $(DOCDIR)\html\wx\wx.chm -prophtml: $(DOCDIR)\html\proplist\prop.htm -ps: wxps referencps -wxps: $(WXDIR)\docs\ps\wx.ps -propps: $(WXDIR)\docs\ps\prop.ps -referencps: $(WXDIR)\docs\ps\referenc.ps - -portinghtml: $(DOCDIR)\html\porting\port.htm -portingrtf: $(DOCDIR)/winhelp/porting.rtf -portinghlp: $(DOCDIR)/winhelp/porting.hlp -portingpdfrtf: $(DOCDIR)/pdf/porting.rtf -portingps: $(WXDIR)\docs\ps\porting.ps - -allhlp: wxhlp portinghlp prophlp - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 hlp - cd $(THISDIR) - -# cd $(WXDIR)\utils\wxhelp\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\tex2rtf\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxgraph\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxchart\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxtree\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxbuild\src -# make -f makefile.b32 hlp -# cd $(WXDIR)\utils\wxgrid\src -# make -f makefile.b32 hlp - -allhtml: wxhtml portinghtml prophtml - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 html - cd $(THISDIR) - -# make -f makefile.b32 html -# cd $(WXDIR)\utils\dialoged\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\hytext\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxhelp\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\tex2rtf\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxgraph\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxchart\src -# make -f makefile.b32 html -# cd $(WXDIR)\utils\wxtree\src -# make -f makefile.b32 html - -allps: wxps referencps portingps propps - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 ps - cd $(THISDIR) - -allpdfrtf: pdfrtf portingpdfrtf proppdfrtf - cd $(WXDIR)\utils\dialoged\src - make -f makefile.b32 pdfrtf - cd $(THISDIR) - -# cd $(WXDIR)\utils\wxhelp\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\tex2rtf\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\wxgraph\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\wxchart\src -# make -f makefile.b32 ps -# cd $(WXDIR)\utils\wxtree\src -# make -f makefile.b32 ps -# cd $(THISDIR) - -$(DOCDIR)/winhelp/wx.hlp: $(DOCDIR)/latex/wx/wx.rtf $(DOCDIR)/latex/wx/wx.hpj - cd $(DOCDIR)/latex/wx - -erase wx.ph - hc wx - move wx.hlp $(DOCDIR)\winhelp\wx.hlp - move wx.cnt $(DOCDIR)\winhelp\wx.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/porting.hlp: $(DOCDIR)/latex/porting/porting.rtf $(DOCDIR)/latex/porting/porting.hpj - cd $(DOCDIR)/latex/porting - -erase porting.ph - hc porting - move porting.hlp $(DOCDIR)\winhelp\porting.hlp - move porting.cnt $(DOCDIR)\winhelp\porting.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/prop.hlp: $(DOCDIR)/latex/proplist/prop.rtf $(DOCDIR)/latex/proplist/prop.hpj - cd $(DOCDIR)/latex/proplist - -erase prop.ph - hc prop - move prop.hlp $(DOCDIR)\winhelp\prop.hlp - move prop.cnt $(DOCDIR)\winhelp\prop.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/techref.hlp: $(DOCDIR)/latex/techref/techref.rtf $(DOCDIR)/latex/techref/techref.hpj - cd $(DOCDIR)/latex/techref - -erase techref.ph - hc techref - move techref.hlp $(DOCDIR)\winhelp\techref.hlp - move techref.cnt $(DOCDIR)\winhelp\techref.cnt - cd $(THISDIR) - -$(DOCDIR)/latex/wx/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex - cd $(DOCDIR)\latex\wx - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/latex/wx/wx.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/porting/porting.rtf: $(DOCDIR)/latex/porting/porting.tex - cd $(DOCDIR)\latex\porting - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/porting/porting.tex $(DOCDIR)/latex/porting/porting.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/proplist/prop.rtf: $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/body.tex $(DOCDIR)/latex/proplist/classes.tex $(DOCDIR)/latex/proplist/changes.tex - cd $(DOCDIR)\latex\proplist - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/prop.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/techref/techref.rtf: $(DOCDIR)/latex/techref/techref.tex - cd $(DOCDIR)\latex\techref - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/latex/techref/techref.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/pdf/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex - cd $(DOCDIR)\latex\wx - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/pdf/wx.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/porting.rtf: $(DOCDIR)/latex/porting/porting.tex - cd $(DOCDIR)\latex\porting - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/porting/porting.tex $(DOCDIR)/pdf/porting.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/prop.rtf: $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/body.tex $(DOCDIR)/latex/proplist/classes.tex $(DOCDIR)/latex/proplist/changes.tex - cd $(DOCDIR)\latex\proplist - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/pdf/prop.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/techref.rtf: $(DOCDIR)/latex/techref/techref.tex - cd $(DOCDIR)\latex\techref - -copy *.wmf $(DOCDIR)\pdf - -copy *.bmp $(DOCDIR)\pdf - -start $(WAITFLAG) tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/pdf/techref.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\wx\wx.htm: $(DOCDIR)\latex\wx\classes.tex $(DOCDIR)\latex\wx\body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)\latex\wx\manual.tex - cd $(DOCDIR)\latex\wx - -mkdir $(DOCDIR)\html\wx - -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\html\wx\wx.htm -twice -html - -erase $(DOCDIR)\html\wx\*.con - -erase $(DOCDIR)\html\wx\*.ref - -erase $(DOCDIR)\latex\wx\*.con - -erase $(DOCDIR)\latex\wx\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\wx\wx.chm : $(DOCDIR)\html\wx\wx.htm $(DOCDIR)\html\wx\wx.hhp - cd $(DOCDIR)\html\wx - -hhc wx.hhp - cd $(THISDIR) - - -$(DOCDIR)\html\porting\port.htm: $(DOCDIR)\latex\porting\porting.tex - cd $(DOCDIR)\latex\porting - -mkdir $(DOCDIR)\html\porting - -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\porting\porting.tex $(DOCDIR)\html\porting\port.htm -twice -html - -erase $(DOCDIR)\html\porting\*.con - -erase $(DOCDIR)\html\porting\*.ref - -erase $(DOCDIR)\latex\porting\*.con - -erase $(DOCDIR)\latex\porting\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\proplist\prop.htm: $(DOCDIR)\latex\proplist\prop.tex $(DOCDIR)\latex\proplist\body.tex $(DOCDIR)\latex\proplist\classes.tex $(DOCDIR)\latex\proplist\changes.tex - cd $(DOCDIR)\latex\proplist - -mkdir $(DOCDIR)\html\proplist - -start $(WAITFLAG) tex2rtf $(DOCDIR)\latex\proplist\prop.tex $(DOCDIR)\html\proplist\prop.htm -twice -html - -erase $(DOCDIR)\html\proplist\*.con - -erase $(DOCDIR)\html\proplist\*.ref - -erase $(DOCDIR)\latex\proplist\*.con - -erase $(DOCDIR)\latex\proplist\*.ref - cd $(THISDIR) - -$(WXDIR)\docs\latex\wx\manual.dvi: $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/manual.tex - cd $(WXDIR)\docs\latex\wx - -latex manual - -latex manual - -makeindx manual - -bibtex manual - -latex manual - -latex manual - cd $(THISDIR) - -$(WXDIR)\docs\latex\porting\porting.dvi: $(DOCDIR)/latex/porting/porting.tex - cd $(WXDIR)\docs\latex\porting - -latex porting - -latex porting - -makeindx porting - -bibtex porting - -latex porting - -latex porting - cd $(THISDIR) - -$(WXDIR)\docs\ps\wx.ps: $(WXDIR)\docs\latex\wx\manual.dvi - cd $(WXDIR)\docs\latex\wx - -dvips32 -o wx.ps manual - move wx.ps $(WXDIR)\docs\ps\wx.ps - cd $(THISDIR) - -$(WXDIR)\docs\ps\porting.ps: $(WXDIR)\docs\latex\porting\porting.dvi - cd $(WXDIR)\docs\latex\porting - -dvips32 -o porting.ps porting - move porting.ps $(WXDIR)\docs\ps\porting.ps - cd $(THISDIR) - -$(WXDIR)\docs\latex\wx\referenc.dvi: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/referenc.tex - cd $(WXDIR)\docs\latex\wx - -latex referenc - -latex referenc - -makeindx referenc - -bibtex referenc - -latex referenc - -latex referenc - cd $(THISDIR) - -$(WXDIR)\docs\ps\referenc.ps: $(WXDIR)\docs\latex\wx\referenc.dvi - cd $(WXDIR)\docs\latex\wx - -dvips32 -o referenc.ps referenc - move referenc.ps $(WXDIR)\docs\ps\referenc.ps - cd $(THISDIR) - -# In order to force document reprocessing -touchmanual: - -touch $(WXDIR)\docs\latex\wx\manual.tex - -updatedocs: touchmanual alldocs - -# Start Word, running the GeneratePDF macro. MakeManual.dot should be in the -# Office StartUp folder, and PDFMaker should be installed. -updatepdf: # touchmanual pdfrtf - start $(WAITFLAG) "winword d:\wx2\wxWindows\docs\latex\pdf\wx.rtf /mGeneratePDF" - - -MFTYPE=b32 -# Can't use this or we'll have to distribute all tmake files with wxWindows -# makefile.$(MFTYPE) : $(WXWIN)\distrib\msw\tmake\filelist.txt $(WXWIN)\distrib\msw\tmake\$(MFTYPE).t - -self: - cd $(WXWIN)\distrib\msw\tmake - tmake -t $(MFTYPE) wxwin.pro -o makefile.$(MFTYPE) - copy makefile.$(MFTYPE) $(WXWIN)\src\msw - diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index eb78604c7d..6420604cc5 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -557,6 +557,13 @@ wxMenuBar::wxMenuBar(int count, wxMenu *menus[], const wxString titles[]) wxMenuBar::~wxMenuBar() { + // we should free Windows resources only if Windows doesn't do it for us + // which happens if we're attached to a frame + if (m_hMenu && !IsAttached()) + { + ::DestroyMenu((HMENU)m_hMenu); + m_hMenu = (WXHMENU)NULL; + } } // --------------------------------------------------------------------------- @@ -838,8 +845,6 @@ void wxMenuBar::Attach(wxFrame *frame) void wxMenuBar::Detach() { - m_hMenu = (WXHMENU)NULL; - wxMenuBarBase::Detach(); } diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp index aae20373f7..74a82794de 100644 --- a/src/msw/menuitem.cpp +++ b/src/msw/menuitem.cpp @@ -104,7 +104,7 @@ wxMenuItem::wxMenuItem(wxMenu *parentMenu, : wxMenuItemBase(parentMenu, id, text, help, isCheckable ? wxITEM_CHECK : wxITEM_NORMAL, subMenu) #if wxUSE_OWNER_DRAWN - , wxOwnerDrawn(text, isCheckable) + , wxOwnerDrawn(text, isCheckable) #endif // owner drawn { Init(); @@ -300,6 +300,10 @@ void wxMenuItem::SetText(const wxString& text) wxMenuItemBase::SetText(text); OWNER_DRAWN_ONLY( wxOwnerDrawn::SetName(text) ); +#if wxUSE_OWNER_DRAWN + // tell the owner drawing code to to show the accel string as well + SetAccelString(text.AfterFirst(_T('\t'))); +#endif HMENU hMenu = GetHMenuOf(m_parentMenu); wxCHECK_RET( hMenu, wxT("menuitem without menu") ); diff --git a/src/msw/mimetype.cpp b/src/msw/mimetype.cpp index c5d5039212..a453c99079 100644 --- a/src/msw/mimetype.cpp +++ b/src/msw/mimetype.cpp @@ -88,7 +88,7 @@ void wxFileTypeImpl::Init(const wxString& strFileType, const wxString& ext) m_strFileType = strFileType; if ( !strFileType ) { - m_strFileType = m_ext.AfterFirst('.') + "_auto_file"; + m_strFileType = m_ext.AfterFirst('.') + _T("_auto_file"); } } @@ -237,6 +237,9 @@ wxString wxFileTypeImpl::GetCommand(const wxChar *verb) const wxRegKey(wxRegKey::HKCR, strKey + _T("\\Topic")). QueryValue(_T(""), ddeTopic); + if (ddeTopic.IsEmpty()) + ddeTopic = wxT("System"); + // HACK: we use a special feature of wxExecute which exists // just because we need it here: it will establish DDE // conversation with the program it just launched diff --git a/src/msw/mslu.cpp b/src/msw/mslu.cpp index 6975dc0ded..be480f683f 100644 --- a/src/msw/mslu.cpp +++ b/src/msw/mslu.cpp @@ -46,10 +46,6 @@ #include #include -#ifdef __GNUWIN32__ - #include -#endif - #ifdef __VISUALC__ #include #endif @@ -76,7 +72,7 @@ WXDLLEXPORT int wxMSLU_DrawStateW(WXHDC dc, WXHBRUSH br, WXFARPROC outputFunc, if ( wxUsingUnicowsDll() ) { - return DrawStateA((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, + return DrawStateA((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, (LPARAM)(const char*) wxConvLocal.cWX2MB((const wxChar*)lData), wData, x, y, cx, cy, flags); diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index d8a82f4809..d492f461cb 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -161,7 +161,7 @@ WXDWORD wxNotebook::MSWGetStyle(long style, WXDWORD *exstyle) const tabStyle |= WS_TABSTOP | TCS_TABS; - if ( style & wxTC_MULTILINE ) + if ( style & wxNB_MULTILINE ) tabStyle |= TCS_MULTILINE; if ( style & wxNB_FIXEDWIDTH ) tabStyle |= TCS_FIXEDWIDTH; @@ -205,9 +205,23 @@ int wxNotebook::SetSelection(int nPage) { wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, wxT("notebook page out of range") ); - ChangePage(m_nSelection, nPage); + if ( nPage != m_nSelection ) + { + wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId); + event.SetSelection(nPage); + event.SetOldSelection(m_nSelection); + event.SetEventObject(this); + if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() ) + { + // program allows the page change + event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); + (void)GetEventHandler()->ProcessEvent(event); - return TabCtrl_SetCurSel(m_hwnd, nPage); + TabCtrl_SetCurSel(m_hwnd, nPage); + } + } + + return m_nSelection; } bool wxNotebook::SetPageText(int nPage, const wxString& strText) @@ -631,44 +645,4 @@ bool wxNotebook::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM* result) return processed; } -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// generate the page changing and changed events, hide the currently active -// panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - // MT-FIXME should use a real semaphore - static bool s_bInsideChangePage = FALSE; - - // when we call ProcessEvent(), our own OnSelChange() is called which calls - // this function - break the infinite loop - if ( s_bInsideChangePage ) - return; - - // it's not an error (the message may be generated by the tab control itself) - // and it may happen - just do nothing - if ( nSel == nOldSel ) - return; - - s_bInsideChangePage = TRUE; - - wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId); - event.SetSelection(nSel); - event.SetOldSelection(nOldSel); - event.SetEventObject(this); - if ( GetEventHandler()->ProcessEvent(event) && !event.IsAllowed() ) - { - // program doesn't allow the page change - s_bInsideChangePage = FALSE; - return; - } - - event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); - GetEventHandler()->ProcessEvent(event); - - s_bInsideChangePage = FALSE; -} - #endif // wxUSE_NOTEBOOK diff --git a/src/msw/ole/automtn.cpp b/src/msw/ole/automtn.cpp index 826bfe2cb3..157a4200bb 100644 --- a/src/msw/ole/automtn.cpp +++ b/src/msw/ole/automtn.cpp @@ -183,6 +183,8 @@ bool wxAutomationObject::Invoke(const wxString& member, int action, if (FAILED(hr)) { // ShowException(szMember, hr, NULL, 0); + delete[] argNames; + delete[] dispIds; return FALSE; } @@ -201,7 +203,12 @@ bool wxAutomationObject::Invoke(const wxString& member, int action, { // Again, reverse args if (!ConvertVariantToOle(INVOKEARG((noArgs-1) - i), oleArgs[i])) - return FALSE; // TODO: clean up memory at this point + { + delete[] argNames; + delete[] dispIds; + delete[] oleArgs; + return FALSE; + } } dispparams.rgdispidNamedArgs = dispIds + 1; @@ -833,12 +840,15 @@ static BSTR ConvertStringToOle(const wxString& str) static wxString ConvertStringFromOle(BSTR bStr) { +#if wxUSE_UNICODE + wxString str(bStr); +#else int len = SysStringLen(bStr) + 1; char *buf = new char[len]; (void)wcstombs( buf, bStr, len); - - wxString str(buf); + wxString str(buf); delete[] buf; +#endif return str; } diff --git a/src/msw/ole/dataobj.cpp b/src/msw/ole/dataobj.cpp index a909b3e85e..0591defd8b 100644 --- a/src/msw/ole/dataobj.cpp +++ b/src/msw/ole/dataobj.cpp @@ -474,7 +474,7 @@ STDMETHODIMP wxIDataObject::SetData(FORMATETC *pformatetc, || ( defined(__MWERKS__) && defined(__WXMSW__) ) size = std::wcslen((const wchar_t *)pBuf) * sizeof(wchar_t); #else - size = ::wcslen((const wchar_t *)pBuf) * sizeof(wchar_t); + size = ::wxWcslen((const wchar_t *)pBuf) * sizeof(wchar_t); #endif break; #endif @@ -1098,7 +1098,7 @@ protected: // CFSTR_SHELLURL is _always_ ANSI! wxCharBuffer char_buffer( GetDataSize() ); wxCustomDataObject::GetDataHere( (void*)char_buffer.data() ); - wxString unicode_buffer( char_buffer ); + wxString unicode_buffer( char_buffer, wxConvLibc ); memcpy( buffer, unicode_buffer.c_str(), ( unicode_buffer.length() + 1 ) * sizeof(wxChar) ); diff --git a/src/msw/ownerdrw.cpp b/src/msw/ownerdrw.cpp index 40aad406ba..0598126882 100644 --- a/src/msw/ownerdrw.cpp +++ b/src/msw/ownerdrw.cpp @@ -98,14 +98,22 @@ size_t wxOwnerDrawn::ms_nLastMarginWidth = 0; // ------- // get size of the item +// The item size includes the menu string, the accel string, +// the bitmap and size for a submenu expansion arrow... bool wxOwnerDrawn::OnMeasureItem(size_t *pwidth, size_t *pheight) { wxMemoryDC dc; wxString str = wxStripMenuCodes(m_strName); - // # without this menu items look too tightly packed (at least under Windows) - str += wxT('W'); // 'W' is typically the widest letter + // if we have a valid accel string, then pad out + // the menu string so the menu and accel string are not + // placed ontop of eachother. + if ( !m_strAccel.empty() ) + { + str.Pad(str.Length()%8); + str += m_strAccel; + } if (m_font.Ok()) dc.SetFont(GetFont()); @@ -121,9 +129,13 @@ bool wxOwnerDrawn::OnMeasureItem(size_t *pwidth, size_t *pheight) int accel_width, accel_height; dc.GetTextExtent(m_strAccel, &accel_width, &accel_height); - *pwidth += (accel_width + 16); + *pwidth += accel_width; } + // add space at the end of the menu for the submenu expansion arrow + // this will also allow offsetting the accel string from the right edge + *pwidth += (size_t) (GetDefaultMarginWidth() * 1.5); + // JACS: items still look too tightly packed, so adding 5 pixels. (*pheight) = (*pheight) + 5; @@ -143,14 +155,19 @@ bool wxOwnerDrawn::OnMeasureItem(size_t *pwidth, size_t *pheight) // Does BMP encroach on default check menu position? size_t adjustedWidth = m_bmpChecked.GetWidth() + (wxSystemSettings::GetMetric(wxSYS_EDGE_X) * 2); - if (ms_nDefaultMarginWidth < adjustedWidth) - *pwidth += adjustedWidth - ms_nDefaultMarginWidth; // Do we need to widen margin to fit BMP? if ((size_t)GetMarginWidth() < adjustedWidth) SetMarginWidth(adjustedWidth); + + // add the size of the bitmap to our total size... + *pwidth += GetMarginWidth(); } + // add the size of the bitmap to our total size - even if we don't have + // a bitmap we leave room for one... + *pwidth += GetMarginWidth(); + // make sure that this item is at least as // tall as the user's system settings specify if (*pheight < m_nMinHeight) @@ -241,8 +258,6 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, FillRect(hdc, &rectFill, hbr); - DeleteObject(hbr); - // use default font if no font set HFONT hfont; if ( m_font.Ok() ) { @@ -257,27 +272,33 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, wxString strMenuText = m_strName.BeforeFirst('\t'); + SIZE sizeRect; + GetTextExtentPoint32(hdc,strMenuText.c_str(), strMenuText.Length(),&sizeRect); ::DrawState(hdc, NULL, NULL, (LPARAM)strMenuText.c_str(), strMenuText.length(), - x, rc.y + 1, rc.GetWidth(), rc.GetHeight(), + x, rc.y+( (int) ((rc.GetHeight()-sizeRect.cy)/2.0) )-1, // centre text vertically + rc.GetWidth()-GetMarginWidth(), sizeRect.cy, DST_PREFIXTEXT | (((st & wxODDisabled) && !(st & wxODSelected)) ? DSS_DISABLED : 0)); if ( !m_strAccel.empty() ) { - int accel_width, accel_height; - dc.GetTextExtent(m_strAccel, &accel_width, &accel_height); - + // right align accel string with right edge of menu ( offset by the margin width ) + ::SetTextAlign(hdc, TA_RIGHT); ::DrawState(hdc, NULL, NULL, (LPARAM)m_strAccel.c_str(), m_strAccel.length(), - rc.GetRight() - accel_width - 16, rc.y + 1, 0, 0, + rc.GetWidth()-(GetMarginWidth()), rc.y+(int) ((rc.GetHeight()-sizeRect.cy)/2.0), + rc.GetWidth()-GetMarginWidth(), sizeRect.cy, DST_TEXT | (((st & wxODDisabled) && !(st & wxODSelected)) ? DSS_DISABLED : 0)); + ::SetTextAlign(hdc, TA_LEFT); } (void)SelectObject(hdc, hPrevBrush); (void)SelectObject(hdc, hPrevFont); (void)SetBkMode(hdc, nPrevMode); + + DeleteObject(hbr); #else dc.SetFont(GetFont()); dc.DrawText(wxStripMenuCodes(m_strName), x, rc.y); @@ -337,7 +358,13 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, &dcMem, 0, 0, wxCOPY, TRUE /* use mask */); if ( st & wxODSelected ) { - + #ifdef O_DRAW_NATIVE_API + RECT rectBmp = { rc.GetLeft(), rc.GetTop(), + rc.GetLeft() + GetMarginWidth(), + rc.GetTop() + m_nHeight-1 }; + SetBkColor(hdc, colBack); + DrawEdge(hdc, &rectBmp, EDGE_RAISED, BF_SOFT | BF_RECT); + #else int x1, y1, x2, y2; x1 = rc.x; y1 = rc.y; @@ -350,6 +377,7 @@ bool wxOwnerDrawn::OnDrawItem(wxDC& dc, dc.SetPen(*wxGREY_PEN); dc.DrawLine(x1, y2-1, x2, y2-1); dc.DrawLine(x2, y1, x2, y2); + #endif //O_DRAW_NATIVE_API } } } diff --git a/src/msw/pen.cpp b/src/msw/pen.cpp index 599d747603..993af83b62 100644 --- a/src/msw/pen.cpp +++ b/src/msw/pen.cpp @@ -278,7 +278,7 @@ bool wxPen::RealizeResource() return FALSE; } -WXHANDLE wxPen::GetResourceHandle() +WXHANDLE wxPen::GetResourceHandle() const { if ( !M_PENDATA ) return 0; diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index e125e57e59..f5bc5e6c6f 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -884,7 +884,7 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd, case WM_NOTIFY: { NMHDR* hdr = (NMHDR *)lParam; - if ( (int)hdr->code == TTN_NEEDTEXT ) + if ( hdr->code == TTN_NEEDTEXT ) { wxRadioBox *radiobox = (wxRadioBox *) ::GetWindowLong(hwnd, GWL_USERDATA); diff --git a/src/msw/radiobut.cpp b/src/msw/radiobut.cpp index f038fd099a..d3729c2951 100644 --- a/src/msw/radiobut.cpp +++ b/src/msw/radiobut.cpp @@ -66,9 +66,22 @@ bool wxRadioButton::Create(wxWindow *parent, if ( !CreateControl(parent, id, pos, size, style, validator, name) ) return FALSE; - long msStyle = HasFlag(wxRB_GROUP) ? WS_GROUP : 0; + long msStyle = WS_TABSTOP; + if ( HasFlag(wxRB_GROUP) ) + msStyle |= WS_GROUP; - msStyle |= BS_AUTORADIOBUTTON; + /* + wxRB_SINGLE is a temporary workaround for the following problem: if you + have 2 radiobuttons in the same group but which are not consecutive in + the dialog, Windows can enter an infinite loop! The simplest way to + reproduce it is to create radio button, then a panel and then another + radio button: then checking the last button hangs the app. + + Ideally, we'd detect (and avoid) such situation automatically but for + now, as I don't know how to do it, just allow the user to create + BS_RADIOBUTTON buttons for such situations. + */ + msStyle |= HasFlag(wxRB_SINGLE) ? BS_RADIOBUTTON : BS_AUTORADIOBUTTON; if ( HasFlag(wxCLIP_SIBLINGS) ) msStyle |= WS_CLIPSIBLINGS; @@ -93,8 +106,58 @@ bool wxRadioButton::Create(wxWindow *parent, void wxRadioButton::SetValue(bool value) { // BST_CHECKED is defined as 1, BST_UNCHECKED as 0, so we can just pass - // value as is (we don't sue BST_XXX here as they're not defined for Win16) + // value as is (we don't use BST_XXX here as they're not defined for Win16) (void)::SendMessage(GetHwnd(), BM_SETCHECK, (WPARAM)value, 0L); + + // if we set the value of one radio button we also must clear all the other + // buttons in the same group: Windows doesn't do it automatically + if ( value ) + { + const wxWindowList& siblings = GetParent()->GetChildren(); + wxWindowList::Node *nodeThis = siblings.Find(this); + wxCHECK_RET( nodeThis, _T("radio button not a child of its parent?") ); + + // turn off all radio buttons before this one + for ( wxWindowList::Node *nodeBefore = nodeThis->GetPrevious(); + nodeBefore; + nodeBefore = nodeBefore->GetPrevious() ) + { + wxRadioButton *btn = wxDynamicCast(nodeBefore->GetData(), + wxRadioButton); + if ( !btn ) + { + // the radio buttons in a group must be consecutive, so there + // are no more of them + break; + } + + btn->SetValue(FALSE); + + if ( btn->HasFlag(wxRB_GROUP) ) + { + // even if there are other radio buttons before this one, + // they're not in the same group with us + break; + } + } + + // ... and all after this one + for ( wxWindowList::Node *nodeAfter = nodeThis->GetNext(); + nodeAfter; + nodeAfter = nodeAfter->GetNext() ) + { + wxRadioButton *btn = wxDynamicCast(nodeAfter->GetData(), + wxRadioButton); + + if ( !btn || btn->HasFlag(wxRB_GROUP) ) + { + // no more buttons or the first button of the next group + break; + } + + btn->SetValue(FALSE); + } + } } bool wxRadioButton::GetValue() const @@ -123,7 +186,7 @@ void wxRadioButton::SetFocus() // generates BN_CLICKED which leads to showing another dialog and so on // without end! // - // to aviod this, we drop the pseudo BN_CLICKED events generated when the + // to avoid this, we drop the pseudo BN_CLICKED events generated when the // button gains focus m_focusJustSet = TRUE; @@ -142,9 +205,20 @@ bool wxRadioButton::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) } else // a real clicked event { + bool isChecked = GetValue(); + + if ( HasFlag(wxRB_SINGLE) ) + { + // when we use a "manual" radio button, we have to check the button + // ourselves -- but it's reset to unchecked state by the user code + // (presumably when another button is pressed) + if ( !isChecked ) + SetValue(TRUE); + } + wxCommandEvent event(wxEVT_COMMAND_RADIOBUTTON_SELECTED, GetId()); event.SetEventObject( this ); - event.SetInt( GetValue() ); + event.SetInt(isChecked); ProcessCommand(event); } @@ -200,7 +274,7 @@ long wxRadioButton::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) return ret; } - return wxControl::MSWWindowProc(nMsg, wParam, lParam); + return wxControl::MSWWindowProc(nMsg, wParam, lParam); } #endif // wxUSE_RADIOBTN diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 6494b321f7..d9c5fd5aae 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -43,7 +43,7 @@ // ---------------------------------------------------------------------------- // we put our data in HKLM\SOFTWARE_KEY\appname -#define SOFTWARE_KEY wxString("Software\\") +#define SOFTWARE_KEY wxString(wxT("Software\\")) // ---------------------------------------------------------------------------- // global functions @@ -696,7 +696,7 @@ bool wxRegConfig::DeleteEntry(const wxString& value, bool WXUNUSED(bGroupIfEmpty if ( m_keyLocal.IsEmpty() ) { wxString strKey = GetPath().AfterLast(wxCONFIG_PATH_SEPARATOR); - SetPath(".."); // changes m_keyLocal + SetPath(_T("..")); // changes m_keyLocal return LocalKey().DeleteKey(strKey); } } diff --git a/src/msw/region.cpp b/src/msw/region.cpp index dc33bc15a2..4da2054b10 100644 --- a/src/msw/region.cpp +++ b/src/msw/region.cpp @@ -1,16 +1,24 @@ ///////////////////////////////////////////////////////////////////////////// // Name: msw/region.cpp -// Purpose: Region handling for wxWindows/X11 -// Author: Markus Holzem +// Purpose: wxRegion implementation using Win32 API +// Author: Markus Holzem, Vadim Zeitlin // Modified by: // Created: Fri Oct 24 10:46:34 MET 1997 // RCS-ID: $Id$ -// Copyright: (c) 1997 Julian Smart and Markus Holzem +// Copyright: (c) 1997-2002 wxWindows team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "region.h" + #pragma implementation "region.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -20,18 +28,17 @@ #pragma hdrstop #endif -#include "wx/msw/region.h" +#include "wx/region.h" #include "wx/gdicmn.h" -#include "wx/window.h" #include "wx/msw/private.h" IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- // wxRegionRefData implementation -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { @@ -56,7 +63,7 @@ public: #endif } - ~wxRegionRefData() + virtual ~wxRegionRefData() { ::DeleteObject(m_region); m_region = 0; @@ -68,13 +75,14 @@ public: #define M_REGION (((wxRegionRefData*)m_refData)->m_region) #define M_REGION_OF(rgn) (((wxRegionRefData*)(rgn.m_refData))->m_region) -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- +// ============================================================================ +// wxRegion implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// ctors and dtor +// ---------------------------------------------------------------------------- -/* - * Create an empty region. - */ wxRegion::wxRegion() { m_refData = (wxRegionRefData *)NULL; @@ -135,9 +143,9 @@ wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const return new wxRegionRefData(*(wxRegionRefData *)data); } -//----------------------------------------------------------------------------- -// Modify region -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// wxRegion operations +// ---------------------------------------------------------------------------- // Clear current region void wxRegion::Clear() @@ -195,6 +203,8 @@ bool wxRegion::Combine(const wxRegion& rgn, wxRegionOp op) } else // we have a valid region { + AllocExclusive(); + int mode; switch ( op ) { @@ -248,9 +258,9 @@ bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) rect.GetWidth(), rect.GetHeight(), op); } -//----------------------------------------------------------------------------- -// Information on region -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// wxRegion bounding box +// ---------------------------------------------------------------------------- // Outer bounds of region void wxRegion::GetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const @@ -286,9 +296,9 @@ bool wxRegion::Empty() const return (w == 0) && (h == 0); } -//----------------------------------------------------------------------------- -// Tests -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// wxRegion hit testing +// ---------------------------------------------------------------------------- // Does the region contain the point (x,y)? wxRegionContain wxRegion::Contains(wxCoord x, wxCoord y) const @@ -296,26 +306,18 @@ wxRegionContain wxRegion::Contains(wxCoord x, wxCoord y) const if (!m_refData) return wxOutRegion; - if (::PtInRegion(M_REGION, (int) x, (int) y)) - return wxInRegion; - else - return wxOutRegion; + return ::PtInRegion(M_REGION, (int) x, (int) y) ? wxInRegion : wxOutRegion; } // Does the region contain the point pt? wxRegionContain wxRegion::Contains(const wxPoint& pt) const { - if (!m_refData) - return wxOutRegion; - - if (::PtInRegion(M_REGION, (int) pt.x, (int) pt.y)) - return wxInRegion; - else - return wxOutRegion; + return Contains(pt.x, pt.y); } // Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(wxCoord x, wxCoord y, wxCoord w, wxCoord h) const +wxRegionContain wxRegion::Contains(wxCoord x, wxCoord y, + wxCoord w, wxCoord h) const { if (!m_refData) return wxOutRegion; @@ -326,56 +328,43 @@ wxRegionContain wxRegion::Contains(wxCoord x, wxCoord y, wxCoord w, wxCoord h) c rect.right = x + w; rect.bottom = y + h; - if (::RectInRegion(M_REGION, & rect)) - return wxInRegion; - else - return wxOutRegion; + return ::RectInRegion(M_REGION, &rect) ? wxInRegion : wxOutRegion; } // Does the region contain the rectangle rect wxRegionContain wxRegion::Contains(const wxRect& rect) const { - if (!m_refData) - return wxOutRegion; - - wxCoord x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); + return Contains(rect.x, rect.y, rect.width, rect.height); } // Get internal region handle WXHRGN wxRegion::GetHRGN() const { - if (!m_refData) - return (WXHRGN) 0; - return (WXHRGN) M_REGION; + return (WXHRGN)(m_refData ? M_REGION : 0); } -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// +// ============================================================================ +// wxRegionIterator implementation +// ============================================================================ -/* - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL) +// ---------------------------------------------------------------------------- +// wxRegionIterator ctors/dtor +// ---------------------------------------------------------------------------- + +void wxRegionIterator::Init() { + m_current = + m_numRects = 0; + + m_rects = NULL; } wxRegionIterator::~wxRegionIterator() { - if (m_rects) - delete[] m_rects; + delete [] m_rects; } -/* - * Initialize iterator for region - */ +// Initialize iterator for region wxRegionIterator::wxRegionIterator(const wxRegion& region) { m_rects = NULL; @@ -383,18 +372,42 @@ wxRegionIterator::wxRegionIterator(const wxRegion& region) Reset(region); } -/* - * Reset iterator for a new /e region. - */ +wxRegionIterator& wxRegionIterator::operator=(const wxRegionIterator& ri) +{ + delete [] m_rects; + + m_current = ri.m_current; + m_numRects = ri.m_numRects; + if ( m_numRects ) + { + m_rects = new wxRect[m_numRects]; + for ( long n = 0; n < m_numRects; n++ ) + m_rects[n] = ri.m_rects[n]; + } + else + { + m_rects = NULL; + } + + return *this; +} + +// ---------------------------------------------------------------------------- +// wxRegionIterator operations +// ---------------------------------------------------------------------------- + +// Reset iterator for a new region. void wxRegionIterator::Reset(const wxRegion& region) { m_current = 0; m_region = region; if (m_rects) + { delete[] m_rects; - m_rects = NULL; + m_rects = NULL; + } if (m_region.Empty()) m_numRects = 0; @@ -421,7 +434,7 @@ void wxRegionIterator::Reset(const wxRegion& region) m_numRects = header->nCount; delete[] (char*) rgnData; -#else +#else // Win16 RECT rect; ::GetRgnBox(((wxRegionRefData*)region.m_refData)->m_region, &rect); m_rects = new wxRect[1]; @@ -431,55 +444,56 @@ void wxRegionIterator::Reset(const wxRegion& region) m_rects[0].height = rect.bottom - rect.top; m_numRects = 1; -#endif +#endif // Win32/16 } } -/* - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ () +wxRegionIterator& wxRegionIterator::operator++() { if (m_current < m_numRects) ++m_current; + + return *this; } -/* - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) +wxRegionIterator wxRegionIterator::operator ++ (int) { + wxRegionIterator tmp = *this; if (m_current < m_numRects) ++m_current; + + return tmp; } +// ---------------------------------------------------------------------------- +// wxRegionIterator accessors +// ---------------------------------------------------------------------------- + wxCoord wxRegionIterator::GetX() const { - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; + wxCHECK_MSG( m_current < m_numRects, 0, _T("invalid wxRegionIterator") ); + + return m_rects[m_current].x; } wxCoord wxRegionIterator::GetY() const { - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; + wxCHECK_MSG( m_current < m_numRects, 0, _T("invalid wxRegionIterator") ); + + return m_rects[m_current].y; } wxCoord wxRegionIterator::GetW() const { - if (m_current < m_numRects) - return m_rects[m_current].width; - return 0; + wxCHECK_MSG( m_current < m_numRects, 0, _T("invalid wxRegionIterator") ); + + return m_rects[m_current].width; } wxCoord wxRegionIterator::GetH() const { - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; + wxCHECK_MSG( m_current < m_numRects, 0, _T("invalid wxRegionIterator") ); + + return m_rects[m_current].height; } diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index ca0f62ace8..4d3dc28b9b 100644 --- a/src/msw/registry.cpp +++ b/src/msw/registry.cpp @@ -299,11 +299,11 @@ bool wxRegKey::Exists() const // returns the full name of the key (prefix is abbreviated if bShortPrefix) wxString wxRegKey::GetName(bool bShortPrefix) const { - StdKey key = GetStdKeyFromHkey((StdKey) m_hRootKey); + StdKey key = GetStdKeyFromHkey((WXHKEY) m_hRootKey); wxString str = bShortPrefix ? aStdKeys[key].szShortName : aStdKeys[key].szName; if ( !m_strKey.IsEmpty() ) - str << "\\" << m_strKey; + str << _T("\\") << m_strKey; return str; } diff --git a/src/msw/scrolbar.cpp b/src/msw/scrolbar.cpp index 7c32db671e..d10d08daad 100644 --- a/src/msw/scrolbar.cpp +++ b/src/msw/scrolbar.cpp @@ -122,9 +122,40 @@ wxScrollBar::~wxScrollBar(void) bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, WXWORD pos, WXHWND control) { - int position = ::GetScrollPos((HWND) control, SB_CTL); - int minPos, maxPos; - ::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos); + // current and max positions + int position, + maxPos, trackPos = pos; + +#ifdef __WIN32__ + // when we're dragging the scrollbar we can't use pos parameter because it + // is limited to 16 bits + if ( wParam == SB_THUMBPOSITION || wParam == SB_THUMBTRACK ) + { + SCROLLINFO scrollInfo; + wxZeroMemory(scrollInfo); + scrollInfo.cbSize = sizeof(SCROLLINFO); + + // also get the range if we call GetScrollInfo() anyhow -- this is less + // expensive than call it once here and then call GetScrollRange() + // below + scrollInfo.fMask = SIF_RANGE | SIF_POS | SIF_TRACKPOS; + + if ( !::GetScrollInfo(GetHwnd(), SB_CTL, &scrollInfo) ) + { + wxLogLastError(_T("GetScrollInfo")); + } + + trackPos = scrollInfo.nTrackPos; + position = scrollInfo.nPos; + maxPos = scrollInfo.nMax; + } + else +#endif // Win32 + { + position = ::GetScrollPos((HWND) control, SB_CTL); + int minPos; + ::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos); + } #if defined(__WIN95__) // A page size greater than one has the effect of reducing the effective @@ -170,12 +201,12 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, break; case SB_THUMBPOSITION: - nScrollInc = pos - position; + nScrollInc = trackPos - position; scrollEvent = wxEVT_SCROLL_THUMBRELEASE; break; case SB_THUMBTRACK: - nScrollInc = pos - position; + nScrollInc = trackPos - position; scrollEvent = wxEVT_SCROLL_THUMBTRACK; break; @@ -217,16 +248,16 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, void wxScrollBar::SetThumbPosition(int viewStart) { #if defined(__WIN95__) - SCROLLINFO info; - info.cbSize = sizeof(SCROLLINFO); - info.nPage = 0; - info.nMin = 0; - info.nPos = viewStart; - info.fMask = SIF_POS ; + SCROLLINFO info; + info.cbSize = sizeof(SCROLLINFO); + info.nPage = 0; + info.nMin = 0; + info.nPos = viewStart; + info.fMask = SIF_POS ; - ::SetScrollInfo((HWND) GetHWND(), SB_CTL, &info, TRUE); + ::SetScrollInfo((HWND) GetHWND(), SB_CTL, &info, TRUE); #else - ::SetScrollPos((HWND) GetHWND(), SB_CTL, viewStart, TRUE); + ::SetScrollPos((HWND) GetHWND(), SB_CTL, viewStart, TRUE); #endif } diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index 213f6b0b67..61eb07927b 100644 --- a/src/msw/slider95.cpp +++ b/src/msw/slider95.cpp @@ -109,13 +109,14 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, ); // Now create min static control - wxSprintf(wxBuffer, wxT("%d"), minValue); + wxString minLabel; + minLabel.Printf(wxT("%d"), minValue); wstyle = STATIC_FLAGS; if ( m_windowStyle & wxCLIP_SIBLINGS ) msStyle |= WS_CLIPSIBLINGS; m_staticMin = (WXHWND) CreateWindowEx ( - 0, wxT("STATIC"), wxBuffer, + 0, wxT("STATIC"), minLabel, wstyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL @@ -153,7 +154,7 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, HWND scroll_bar = CreateWindowEx ( - MakeExtendedStyle(m_windowStyle), TRACKBAR_CLASS, wxBuffer, + MakeExtendedStyle(m_windowStyle), TRACKBAR_CLASS, wxT(""), msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL @@ -179,7 +180,8 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, if ( m_windowStyle & wxSL_LABELS ) { // Finally, create max value static item - wxSprintf(wxBuffer, wxT("%d"), maxValue); + wxString maxLabel; + maxLabel.Printf(wxT("%d"), maxValue); wstyle = STATIC_FLAGS; if ( m_windowStyle & wxCLIP_SIBLINGS ) @@ -187,7 +189,7 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, m_staticMax = (WXHWND) CreateWindowEx ( - 0, wxT("STATIC"), wxBuffer, + 0, wxT("STATIC"), maxLabel, wstyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL @@ -319,8 +321,9 @@ void wxSlider95::SetValue(int value) if (m_staticValue) { - wxSprintf(wxBuffer, wxT("%d"), value); - ::SetWindowText((HWND) m_staticValue, wxBuffer); + wxString str; + str.Printf(wxT("%d"), value); + ::SetWindowText((HWND) m_staticValue, str); } } diff --git a/src/msw/slidrmsw.cpp b/src/msw/slidrmsw.cpp index 9824dafd2a..af096e87f3 100644 --- a/src/msw/slidrmsw.cpp +++ b/src/msw/slidrmsw.cpp @@ -92,11 +92,12 @@ bool wxSliderMSW::Create(wxWindow *parent, wxWindowID id, wxGetInstance(), NULL); // Now create min static control - wxSprintf(wxBuffer, wxT("%d"), minValue); + wxString buf; + buf.Printf(wxT("%d"), minValue); DWORD wstyle = STATIC_FLAGS; if ( m_windowStyle & wxCLIP_SIBLINGS ) wstyle |= WS_CLIPSIBLINGS; - m_staticMin = (WXHWND) CreateWindowEx(0, wxT("STATIC"), wxBuffer, + m_staticMin = (WXHWND) CreateWindowEx(0, wxT("STATIC"), buf, wstyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); @@ -107,7 +108,7 @@ bool wxSliderMSW::Create(wxWindow *parent, wxWindowID id, else msStyle = SBS_HORZ | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(m_windowStyle), wxT("SCROLLBAR"), wxBuffer, + HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(m_windowStyle), wxT("SCROLLBAR"), wxT(""), msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); @@ -126,11 +127,11 @@ bool wxSliderMSW::Create(wxWindow *parent, wxWindowID id, SubclassWin(GetHWND()); // Finally, create max value static item - wxSprintf(wxBuffer, wxT("%d"), maxValue); + buf.Printf(wxT("%d"), maxValue); wstyle = STATIC_FLAGS; if ( m_windowStyle & wxCLIP_SIBLINGS ) wstyle |= WS_CLIPSIBLINGS; - m_staticMax = (WXHWND) CreateWindowEx(0, wxT("STATIC"), wxBuffer, + m_staticMax = (WXHWND) CreateWindowEx(0, wxT("STATIC"), buf, wstyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); @@ -261,8 +262,9 @@ void wxSliderMSW::SetValue(int value) ::SetScrollPos(GetHwnd(), SB_CTL, value, TRUE); if (m_staticValue) { - wxSprintf(wxBuffer, wxT("%d"), value); - SetWindowText((HWND) m_staticValue, wxBuffer); + wxString buf; + buf.Printf(wxT("%d"), value); + SetWindowText((HWND) m_staticValue, buf); } } diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index 6057edf837..d5253b263f 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -214,6 +214,10 @@ bool wxSpinCtrl::Create(wxWindow *parent, // know whether this is a horizontal or vertical control (we're always // vertical) style |= wxSP_VERTICAL; + + if ( (style & wxBORDER_MASK) == wxBORDER_DEFAULT ) + style |= wxBORDER_SUNKEN; + SetWindowStyle(style); // calculate the sizes: the size given is the toal size for both controls diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp index 4b33ade2c9..1c0810694c 100644 --- a/src/msw/stattext.cpp +++ b/src/msw/stattext.cpp @@ -170,16 +170,4 @@ bool wxStaticText::SetFont(const wxFont& font) return ret; } -long wxStaticText::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - // Ensure that static items get messages. Some controls don't like this - // message to be intercepted (e.g. RichEdit), hence the tests. - // Messes up display with Windows XP, apparently, so have to - // do explicit hit-testing in wxWindowMSW. -#if 0 - if (nMsg == WM_NCHITTEST) - return (long)HTCLIENT; -#endif - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -} #endif // wxUSE_STATTEXT diff --git a/src/msw/tabctrl.cpp b/src/msw/tabctrl.cpp index 1e4e378ac0..128ffff8cc 100644 --- a/src/msw/tabctrl.cpp +++ b/src/msw/tabctrl.cpp @@ -45,6 +45,7 @@ #include "wx/msw/imaglist.h" IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxNotifyEvent) DEFINE_EVENT_TYPE(wxEVT_COMMAND_TAB_SEL_CHANGED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_TAB_SEL_CHANGING) @@ -76,15 +77,8 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons m_windowStyle = style; - SetFont(* (wxTheFontList->FindOrCreateFont(11, wxSWISS, wxNORMAL, wxNORMAL))); - SetParent(parent); - DWORD msflags = 0; - if (style & wxBORDER) - msflags |= WS_BORDER; - msflags |= WS_CHILD | WS_VISIBLE; - if (width <= 0) width = 100; if (height <= 0) @@ -96,7 +90,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons m_windowId = (id < 0 ? NewControlId() : id); - long tabStyle = 0; + long tabStyle = WS_CHILD; if (m_windowStyle & wxTC_MULTILINE) tabStyle |= TCS_MULTILINE; if (m_windowStyle & wxTC_RIGHTJUSTIFY) @@ -105,6 +99,8 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons tabStyle |= TCS_FIXEDWIDTH; if (m_windowStyle & wxTC_OWNERDRAW) tabStyle |= TCS_OWNERDRAWFIXED; + if (m_windowStyle & wxBORDER) + tabStyle |= WS_BORDER; tabStyle |= TCS_TOOLTIPS; @@ -112,7 +108,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons HWND hWndTabCtrl = CreateWindowEx(0L, // No extended styles. WC_TABCONTROL, // Class name for the tab control wxT(""), // No default text. - WS_CHILD | WS_BORDER | WS_VISIBLE | tabStyle, // Styles and defaults. + tabStyle, // Styles and defaults. x, y, width, height, // Standard size and position. (HWND) parent->GetHWND(), // Parent window (HMENU)m_windowId, // ID. @@ -124,6 +120,8 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons SubclassWin((WXHWND) hWndTabCtrl); + SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); + return TRUE; } @@ -161,6 +159,7 @@ bool wxTabCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) event.SetEventObject( this ); event.SetEventType(eventType); event.SetInt(idCtrl) ; + event.SetSelection(idCtrl); return ProcessEvent(event); } @@ -442,14 +441,5 @@ void wxMapBitmap(HBITMAP hBitmap, int width, int height) } #endif -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ -} - - #endif // __WIN95__ diff --git a/src/msw/taskbar.cpp b/src/msw/taskbar.cpp index f17654653b..d422b3c214 100644 --- a/src/msw/taskbar.cpp +++ b/src/msw/taskbar.cpp @@ -180,7 +180,7 @@ bool wxTaskBarIcon::PopupMenu(wxMenu *menu) //, int x, int y); wxGetMousePosition(&x, &y); // is wxFrame the best window type to use??? - win = new wxFrame(NULL, -1, "", wxPoint(x,y), wxSize(-1,-1), 0); + win = new wxFrame(NULL, -1, wxEmptyString, wxPoint(x,y), wxSize(-1,-1), 0); win->PushEventHandler(this); // Remove from record of top-level windows, or will confuse wxWindows diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index 8777634b70..5716e1a76f 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -472,6 +472,15 @@ bool wxToolBar::Realize() const bool isVertical = HasFlag(wxTB_VERTICAL); + // delete all old buttons, if any + for ( size_t pos = 0; pos < m_nButtons; pos++ ) + { + if ( !::SendMessage(GetHwnd(), TB_DELETEBUTTON, 0, 0) ) + { + wxLogDebug(wxT("TB_DELETEBUTTON failed")); + } + } + // First, add the bitmap: we use one bitmap for all toolbar buttons // ---------------------------------------------------------------- @@ -612,15 +621,6 @@ bool wxToolBar::Realize() bitmapId = m_nButtons; } - - // Now delete all the buttons - for ( size_t pos = 0; pos < m_nButtons; pos++ ) - { - if ( !::SendMessage(GetHwnd(), TB_DELETEBUTTON, 0, 0) ) - { - wxLogDebug(wxT("TB_DELETEBUTTON failed")); - } - } } if ( addBitmap ) // no old bitmap or we can't replace it @@ -1197,7 +1197,7 @@ bool wxToolBar::HandleSize(WXWPARAM wParam, WXLPARAM lParam) // FIXME: 6 is hardcoded separator line height... //h += 6; if (HasFlag(wxTB_NODIVIDER)) - h += 3; + h += 4; else h += 6; h *= m_maxRows; diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 9cb0a4f03a..cae21829e3 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -38,6 +38,7 @@ #include "wx/intl.h" #include "wx/log.h" #include "wx/app.h" + #include "wx/menu.h" #endif #include "wx/module.h" @@ -149,17 +150,25 @@ BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) EVT_CHAR(wxTextCtrl::OnChar) EVT_DROP_FILES(wxTextCtrl::OnDropFiles) +#if wxUSE_RICHEDIT + EVT_RIGHT_UP(wxTextCtrl::OnRightClick) +#endif + EVT_MENU(wxID_CUT, wxTextCtrl::OnCut) EVT_MENU(wxID_COPY, wxTextCtrl::OnCopy) EVT_MENU(wxID_PASTE, wxTextCtrl::OnPaste) EVT_MENU(wxID_UNDO, wxTextCtrl::OnUndo) EVT_MENU(wxID_REDO, wxTextCtrl::OnRedo) + EVT_MENU(wxID_CLEAR, wxTextCtrl::OnDelete) + EVT_MENU(wxID_SELECTALL, wxTextCtrl::OnSelectAll) EVT_UPDATE_UI(wxID_CUT, wxTextCtrl::OnUpdateCut) EVT_UPDATE_UI(wxID_COPY, wxTextCtrl::OnUpdateCopy) EVT_UPDATE_UI(wxID_PASTE, wxTextCtrl::OnUpdatePaste) EVT_UPDATE_UI(wxID_UNDO, wxTextCtrl::OnUpdateUndo) EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo) + EVT_UPDATE_UI(wxID_CLEAR, wxTextCtrl::OnUpdateDelete) + EVT_UPDATE_UI(wxID_SELECTALL, wxTextCtrl::OnUpdateSelectAll) #ifdef __WIN16__ EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) #endif @@ -177,9 +186,19 @@ void wxTextCtrl::Init() { #if wxUSE_RICHEDIT m_verRichEdit = 0; - - m_suppressNextUpdate = FALSE; #endif // wxUSE_RICHEDIT + + m_privateContextMenu = NULL; + m_suppressNextUpdate = FALSE; +} + +wxTextCtrl::~wxTextCtrl() +{ + if (m_privateContextMenu) + { + delete m_privateContextMenu; + m_privateContextMenu = NULL; + } } bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, @@ -425,6 +444,9 @@ WXDWORD wxTextCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const void wxTextCtrl::SetWindowStyleFlag(long style) { + if ( (style & wxBORDER_MASK) == wxBORDER_DEFAULT ) + style |= wxBORDER_SUNKEN; + #if wxUSE_RICHEDIT // we have to deal with some styles separately because they can't be // changed by simply calling SetWindowLong(GWL_STYLE) but can be changed @@ -570,7 +592,7 @@ bool wxTextCtrl::StreamIn(const wxString& value, { return FALSE; } -#else +#else // !__WXWINE__ #if wxUSE_UNICODE_MSLU bool wxTextCtrl::StreamIn(const wxString& value, @@ -584,7 +606,7 @@ bool wxTextCtrl::StreamIn(const wxString& value, bool selectionOnly) { // we have to use EM_STREAMIN to force richedit control 2.0+ to show any - // text in the non default charset - otherwise it thinks it knows better + // text in the non default charset -- otherwise it thinks it knows better // than we do and always shows it in the default one // first get the Windows code page for this encoding @@ -620,6 +642,14 @@ bool wxTextCtrl::StreamIn(const wxString& value, // the cast below is needed for broken (very) old mingw32 headers eds.pfnCallback = (EDITSTREAMCALLBACK)wxRichEditStreamIn; + // we're going to receive 2 EN_CHANGE notifications if we got any selection + // (same problem as in DoWriteText()) + if ( selectionOnly && HasSelection() ) + { + // so suppress one of them + m_suppressNextUpdate = TRUE; + } + if ( !::SendMessage(GetHwnd(), EM_STREAMIN, SF_TEXT | SF_UNICODE | @@ -636,8 +666,7 @@ bool wxTextCtrl::StreamIn(const wxString& value, return TRUE; } -#endif - // __WXWINE__ +#endif // __WXWINE__/!__WXWINE__ #endif // wxUSE_RICHEDIT @@ -700,18 +729,35 @@ void wxTextCtrl::DoWriteText(const wxString& value, bool selectionOnly) if ( !done ) #endif // wxUSE_RICHEDIT { + // in some cases we get 2 EN_CHANGE notifications after the SendMessage + // call below which is confusing for the client code and so should be + // avoided + // + // these cases are: (a) plain EDIT controls if EM_REPLACESEL is used + // and there is a non empty selection currently and (b) rich text + // controls in any case + if ( #if wxUSE_RICHEDIT - // rich edit text control sends us 2 EN_CHANGE events when we send - // WM_SETTEXT to it, we have to suppress one of them to make wxTextCtrl - // behaviour consistent - if ( IsRich() ) + IsRich() || +#endif // wxUSE_RICHEDIT + (selectionOnly && HasSelection()) ) { m_suppressNextUpdate = TRUE; } -#endif // wxUSE_RICHEDIT ::SendMessage(GetHwnd(), selectionOnly ? EM_REPLACESEL : WM_SETTEXT, 0, (LPARAM)valueDos.c_str()); + + // OTOH, non rich text controls don't generate any events at all when + // we use WM_SETTEXT -- have to emulate them here + if ( !selectionOnly +#if wxUSE_RICHEDIT + && !IsRich() +#endif // wxUSE_RICHEDIT + ) + { + SendUpdateEvent(); + } } AdjustSpaceLimit(); @@ -722,6 +768,15 @@ void wxTextCtrl::AppendText(const wxString& text) SetInsertionPointEnd(); WriteText(text); + +#if wxUSE_RICHEDIT + if ( IsMultiLine() && GetRichVersion() > 1 ) + { + // setting the caret to the end and showing it simply doesn't work for + // RichEdit 2.0 -- force it to still do what we want + ::SendMessage(GetHwnd(), EM_LINESCROLL, 0, GetNumberOfLines()); + } +#endif // wxUSE_RICHEDIT } void wxTextCtrl::Clear() @@ -786,14 +841,19 @@ void wxTextCtrl::Paste() } } -bool wxTextCtrl::CanCopy() const +bool wxTextCtrl::HasSelection() const { - // Can copy if there's a selection long from, to; GetSelection(&from, &to); return from != to; } +bool wxTextCtrl::CanCopy() const +{ + // Can copy if there's a selection + return HasSelection(); +} + bool wxTextCtrl::CanCut() const { return CanCopy() && IsEditable(); @@ -1286,11 +1346,13 @@ long wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) if ( nMsg == WM_GETDLGCODE ) { + // we always want the chars and the arrows: the arrows for navigation + // and the chars because we want Ctrl-C to work even in a read only + // control + long lDlgCode = DLGC_WANTCHARS | DLGC_WANTARROWS; + if ( IsEditable() ) { - // we always want the chars and the arrows - long lDlgCode = DLGC_WANTCHARS | DLGC_WANTARROWS; - // we may have several different cases: // 1. normal case: both TAB and ENTER are used for dlg navigation // 2. ctrl which wants TAB for itself: ENTER is used to pass to the @@ -1311,15 +1373,11 @@ long wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) } else // !editable { - // when the control can't be edited by user, it doesn't need any - // extra keys changing its contents at all -- but it still needs - // the arrows to allow navigating in it - // // NB: use "=", not "|=" as the base class version returns the // same flags is this state as usual (i.e. including // DLGC_WANTMESSAGE). This is strange (how does it work in the // native Win32 apps?) but for now live with it. - lRc = DLGC_WANTARROWS; + lRc = lDlgCode; } } @@ -1509,8 +1567,10 @@ bool wxTextCtrl::AdjustSpaceLimit() bool wxTextCtrl::AcceptsFocus() const { - // we don't want focus if we can't be edited - return IsEditable() && wxControl::AcceptsFocus(); + // we don't want focus if we can't be edited unless we're a multiline + // control because then it might be still nice to get focus from keyboard + // to be able to scroll it without mouse + return (IsEditable() || IsMultiLine()) && wxControl::AcceptsFocus(); } wxSize wxTextCtrl::DoGetBestSize() const @@ -1559,6 +1619,19 @@ void wxTextCtrl::OnRedo(wxCommandEvent& WXUNUSED(event)) Redo(); } +void wxTextCtrl::OnDelete(wxCommandEvent& event) +{ + long from, to; + GetSelection(& from, & to); + if (from != -1 && to != -1) + Remove(from, to); +} + +void wxTextCtrl::OnSelectAll(wxCommandEvent& event) +{ + SetSelection(-1, -1); +} + void wxTextCtrl::OnUpdateCut(wxUpdateUIEvent& event) { event.Enable( CanCut() ); @@ -1584,6 +1657,44 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) event.Enable( CanRedo() ); } +void wxTextCtrl::OnUpdateDelete(wxUpdateUIEvent& event) +{ + long from, to; + GetSelection(& from, & to); + event.Enable(from != -1 && to != -1 && from != to && IsEditable()) ; +} + +void wxTextCtrl::OnUpdateSelectAll(wxUpdateUIEvent& event) +{ + event.Enable(GetLastPosition() > 0); +} + +void wxTextCtrl::OnRightClick(wxMouseEvent& event) +{ +#if wxUSE_RICHEDIT + if (IsRich()) + { + if (!m_privateContextMenu) + { + m_privateContextMenu = new wxMenu; + m_privateContextMenu->Append(wxID_UNDO, _("&Undo")); + m_privateContextMenu->Append(wxID_REDO, _("&Redo")); + m_privateContextMenu->AppendSeparator(); + m_privateContextMenu->Append(wxID_CUT, _("Cu&t")); + m_privateContextMenu->Append(wxID_COPY, _("&Copy")); + m_privateContextMenu->Append(wxID_PASTE, _("&Paste")); + m_privateContextMenu->Append(wxID_CLEAR, _("&Delete")); + m_privateContextMenu->AppendSeparator(); + m_privateContextMenu->Append(wxID_SELECTALL, _("Select &All")); + } + PopupMenu(m_privateContextMenu, event.GetPosition()); + return; + } + else +#endif + event.Skip(); +} + // the rest of the file only deals with the rich edit controls #if wxUSE_RICHEDIT diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp index d93d017704..4cbf5710d5 100644 --- a/src/msw/thread.cpp +++ b/src/msw/thread.cpp @@ -243,7 +243,7 @@ wxMutexError wxMutexInternal::Unlock() { if ( !::ReleaseMutex(m_mutex) ) { - wxLogLastError(_("ReleaseMutex()")); + wxLogLastError(_T("ReleaseMutex()")); return wxMUTEX_MISC_ERROR; } diff --git a/src/msw/tooltip.cpp b/src/msw/tooltip.cpp index 930748cdbf..78b93e424c 100644 --- a/src/msw/tooltip.cpp +++ b/src/msw/tooltip.cpp @@ -77,7 +77,7 @@ static WNDPROC gs_wndprocToolTip = (WNDPROC)NULL; class wxToolInfo : public TOOLINFO { public: - wxToolInfo(HWND hwnd) + wxToolInfo(HWND hwndOwner) { // initialize all members ::ZeroMemory(this, sizeof(TOOLINFO)); @@ -95,8 +95,9 @@ public: cbSize = sizeof(TOOLINFO); #endif // compile-time comctl32.dll version + hwnd = hwndOwner; uFlags = TTF_IDISHWND; - uId = (UINT)hwnd; + uId = (UINT)hwndOwner; } }; @@ -274,12 +275,14 @@ void wxToolTip::Add(WXHWND hWnd) wxToolInfo ti(hwnd); - // as we store our text anyhow, it seems useless to waste system memory - // by asking the tooltip ctrl to remember it too - instead it will send - // us TTN_NEEDTEXT (via WM_NOTIFY) when it is about to be shown + // another possibility would be to specify LPSTR_TEXTCALLBACK here as we + // store the tooltip text ourselves anyhow, and provide it in response to + // TTN_NEEDTEXT (sent via WM_NOTIFY), but then we would be limited to 79 + // character tooltips as this is the size of the szText buffer in + // NMTTDISPINFO struct -- and setting the tooltip here we can have tooltips + // of any length ti.hwnd = hwnd; - ti.lpszText = LPSTR_TEXTCALLBACK; - // instead of: ti.lpszText = (char *)m_text.c_str(); + ti.lpszText = (wxChar *)m_text.c_str(); // const_cast if ( !SendTooltipMessage(GetToolTipCtrl(), TTM_ADDTOOL, 0, &ti) ) { @@ -309,7 +312,7 @@ void wxToolTip::Add(WXHWND hWnd) } } - HDC hdc = CreateCompatibleDC(NULL); + MemoryHDC hdc; if ( !hdc ) { wxLogLastError(wxT("CreateCompatibleDC(NULL)")); @@ -326,8 +329,6 @@ void wxToolTip::Add(WXHWND hWnd) wxLogLastError(wxT("GetTextExtentPoint")); } - DeleteDC(hdc); - SendTooltipMessage(GetToolTipCtrl(), TTM_SETMAXTIPWIDTH, 0, (void *)sz.cx); } @@ -351,7 +352,7 @@ void wxToolTip::SetWindow(wxWindow *win) { Add(m_window->GetHWND()); } - +#if !defined(__WXUNIVERSAL__) // and all of its subcontrols (e.g. radiobuttons in a radiobox) as well wxControl *control = wxDynamicCast(m_window, wxControl); if ( control ) @@ -392,6 +393,7 @@ void wxToolTip::SetWindow(wxWindow *win) Add(hwndComboEdit); } } +#endif // !defined(__WXUNIVERSAL__) } void wxToolTip::SetTip(const wxString& tip) @@ -400,7 +402,7 @@ void wxToolTip::SetTip(const wxString& tip) if ( m_window ) { - // update it immediately + // update the tip text shown by the control wxToolInfo ti(GetHwndOf(m_window)); ti.lpszText = (wxChar *)m_text.c_str(); diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 6d5605551f..4ed7b93ce4 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -38,6 +38,8 @@ #include "wx/containr.h" // wxSetFocusToChild() #endif //WX_PRECOMP +#include "wx/module.h" + #include "wx/msw/private.h" #include "wx/popupwin.h" @@ -76,8 +78,32 @@ wxWindowList wxModelessWindows; // the name of the default wxWindows class extern const wxChar *wxCanvasClassName; -// the hidden parent for wxFRAME_NO_TASKBAR unowned frames -wxWindow *wxTopLevelWindowMSW::ms_hiddenParent = NULL; +// ---------------------------------------------------------------------------- +// wxTLWHiddenParentModule: used to manage the hidden parent window (we need a +// module to ensure that the window is always deleted) +// ---------------------------------------------------------------------------- + +class wxTLWHiddenParentModule : public wxModule +{ +public: + // module init/finalize + virtual bool OnInit(); + virtual void OnExit(); + + // get the hidden window (creates on demand) + static HWND GetHWND(); + +private: + // the HWND of the hidden parent + static HWND ms_hwnd; + + // the class used to create it + static const wxChar *ms_className; + + DECLARE_DYNAMIC_CLASS(wxTLWHiddenParentModule) +}; + +IMPLEMENT_DYNAMIC_CLASS(wxTLWHiddenParentModule, wxModule) // ============================================================================ // wxTopLevelWindowMSW implementation @@ -213,38 +239,32 @@ WXHWND wxTopLevelWindowMSW::MSWGetParent() const // parent HWND or it would be always on top of its parent which is not what // we usually want (in fact, we only want it for frames with the // wxFRAME_FLOAT_ON_PARENT flag) - wxWindow *parent; + HWND hwndParent = NULL; if ( HasFlag(wxFRAME_FLOAT_ON_PARENT) ) { - parent = GetParent(); + const wxWindow *parent = GetParent(); - // this flag doesn't make sense then and will be ignored - wxASSERT_MSG( parent, - _T("wxFRAME_FLOAT_ON_PARENT but no parent?") ); - } - else // don't float on parent, must not be owned - { - parent = NULL; + if ( !parent ) + { + // this flag doesn't make sense then and will be ignored + wxFAIL_MSG( _T("wxFRAME_FLOAT_ON_PARENT but no parent?") ); + } + else + { + hwndParent = GetHwndOf(parent); + } } + //else: don't float on parent, must not be owned // now deal with the 2nd taskbar-related problem (see comments above in // MSWGetStyle()) - if ( HasFlag(wxFRAME_NO_TASKBAR) && !parent ) + if ( HasFlag(wxFRAME_NO_TASKBAR) && !hwndParent ) { - if ( !ms_hiddenParent ) - { - ms_hiddenParent = new wxTopLevelWindowMSW(NULL, -1, _T("")); - - // we shouldn't leave it in wxTopLevelWindows or we wouldn't - // terminate the app when the last user-created frame is deleted -- - // see ~wxTopLevelWindowMSW - wxTopLevelWindows.DeleteObject(ms_hiddenParent); - } - - parent = ms_hiddenParent; + // use hidden parent + hwndParent = wxTLWHiddenParentModule::GetHWND(); } - return parent ? parent->GetHWND() : WXHWND(NULL); + return (WXHWND)hwndParent; } bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate, @@ -290,9 +310,9 @@ bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate, if ( !m_hWnd ) { - wxFAIL_MSG(_("Failed to create dialog. Incorrect DLGTEMPLATE?")); + wxFAIL_MSG(wxT("Failed to create dialog. Incorrect DLGTEMPLATE?")); - wxLogSysError(_("Can't create dialog using memory template")); + wxLogSysError(wxT("Can't create dialog using memory template")); return FALSE; } @@ -451,15 +471,6 @@ bool wxTopLevelWindowMSW::Create(wxWindow *parent, wxTopLevelWindowMSW::~wxTopLevelWindowMSW() { - if ( this == ms_hiddenParent ) - { - // stop [infinite] recursion which would otherwise happen when we do - // "delete ms_hiddenParent" below -- and we're not interested in doing - // anything of the rest below for that window because the rest of - // wxWindows doesn't even know about it - return; - } - if ( wxModelessWindows.Find(this) ) wxModelessWindows.DeleteObject(this); @@ -475,17 +486,6 @@ wxTopLevelWindowMSW::~wxTopLevelWindowMSW() ::BringWindowToTop(GetHwndOf(parent)); } } - - // if this is the last top-level window, we're going to exit and we should - // delete ms_hiddenParent now to avoid leaking it - if ( IsLastBeforeExit() ) - { - if ( ms_hiddenParent ) - { - delete ms_hiddenParent; - ms_hiddenParent = NULL; - } - } } // ---------------------------------------------------------------------------- @@ -796,3 +796,79 @@ wxDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) } } +// ============================================================================ +// wxTLWHiddenParentModule implementation +// ============================================================================ + +HWND wxTLWHiddenParentModule::ms_hwnd = NULL; + +const wxChar *wxTLWHiddenParentModule::ms_className = NULL; + +bool wxTLWHiddenParentModule::OnInit() +{ + ms_hwnd = NULL; + ms_className = NULL; + + return TRUE; +} + +void wxTLWHiddenParentModule::OnExit() +{ + if ( ms_hwnd ) + { + if ( !::DestroyWindow(ms_hwnd) ) + { + wxLogLastError(_T("DestroyWindow(hidden TLW parent)")); + } + + ms_hwnd = NULL; + } + + if ( ms_className ) + { + if ( !::UnregisterClass(ms_className, wxGetInstance()) ) + { + wxLogLastError(_T("UnregisterClass(\"wxTLWHiddenParent\")")); + } + + ms_className = NULL; + } +} + +/* static */ +HWND wxTLWHiddenParentModule::GetHWND() +{ + if ( !ms_hwnd ) + { + if ( !ms_className ) + { + static const wxChar *HIDDEN_PARENT_CLASS = _T("wxTLWHiddenParent"); + + WNDCLASS wndclass; + wxZeroMemory(wndclass); + + wndclass.lpfnWndProc = DefWindowProc; + wndclass.hInstance = wxGetInstance(); + wndclass.lpszClassName = HIDDEN_PARENT_CLASS; + + if ( !::RegisterClass(&wndclass) ) + { + wxLogLastError(_T("RegisterClass(\"wxTLWHiddenParent\")")); + } + else + { + ms_className = HIDDEN_PARENT_CLASS; + } + } + + ms_hwnd = ::CreateWindow(ms_className, _T(""), 0, 0, 0, 0, 0, NULL, + (HMENU)NULL, wxGetInstance(), NULL); + if ( !ms_hwnd ) + { + wxLogLastError(_T("CreateWindow(hidden TLW parent)")); + } + } + + return ms_hwnd; +} + diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 97348c58ff..6bafa07e1a 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -1181,6 +1181,42 @@ void wxTreeCtrl::RefreshItem(const wxTreeItemId& item) } } +wxColour wxTreeCtrl::GetItemTextColour(const wxTreeItemId& item) const +{ + long id = (long)(WXHTREEITEM)item; + wxTreeItemAttr *attr = (wxTreeItemAttr *)m_attrs.Get(id); + if ( !attr ) + { + return wxNullColour; + } + + return attr->GetTextColour(); +} + +wxColour wxTreeCtrl::GetItemBackgroundColour(const wxTreeItemId& item) const +{ + long id = (long)(WXHTREEITEM)item; + wxTreeItemAttr *attr = (wxTreeItemAttr *)m_attrs.Get(id); + if ( !attr ) + { + return wxNullColour; + } + + return attr->GetBackgroundColour(); +} + +wxFont wxTreeCtrl::GetItemFont(const wxTreeItemId& item) const +{ + long id = (long)(WXHTREEITEM)item; + wxTreeItemAttr *attr = (wxTreeItemAttr *)m_attrs.Get(id); + if ( !attr ) + { + return wxNullFont; + } + + return attr->GetFont(); +} + void wxTreeCtrl::SetItemTextColour(const wxTreeItemId& item, const wxColour& col) { @@ -1240,6 +1276,12 @@ void wxTreeCtrl::SetItemFont(const wxTreeItemId& item, const wxFont& font) bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const { + if ( item == wxTreeItemId(TVI_ROOT) ) + { + // virtual (hidden) root is never visible + return FALSE; + } + // Bug in Gnu-Win32 headers, so don't use the macro TreeView_GetItemRect RECT rect; @@ -1307,7 +1349,7 @@ wxTreeItemId wxTreeCtrl::GetSelection() const return wxTreeItemId((WXHTREEITEM) TreeView_GetSelection(GetHwnd())); } -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const +wxTreeItemId wxTreeCtrl::GetItemParent(const wxTreeItemId& item) const { HTREEITEM hItem; @@ -1617,9 +1659,14 @@ void wxTreeCtrl::DeleteChildren(const wxTreeItemId& item) void wxTreeCtrl::DeleteAllItems() { - // delete stored root item. - delete GET_VIRTUAL_ROOT(); + // delete the "virtual" root item. + if ( GET_VIRTUAL_ROOT() ) + { + delete GET_VIRTUAL_ROOT(); + m_pVirtualRoot = NULL; + } + // and all the real items if ( !TreeView_DeleteAllItems(GetHwnd()) ) { wxLogLastError(wxT("TreeView_DeleteAllItems")); @@ -2302,8 +2349,8 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) break; } - int how = (int)hdr->code == TVN_ITEMEXPANDING ? IDX_DOING - : IDX_DONE; + int how = hdr->code == TVN_ITEMEXPANDING ? IDX_DOING + : IDX_DONE; eventType = gs_expandEvents[what][how]; @@ -2355,20 +2402,34 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) } break; - case TVN_SELCHANGED: + // NB: MSLU is broken and sends TVN_SELCHANGEDA instead of + // TVN_SELCHANGEDW in Unicode mode under Win98. Therefore + // we have to handle both messages: + case TVN_SELCHANGEDA: + case TVN_SELCHANGEDW: eventType = wxEVT_COMMAND_TREE_SEL_CHANGED; // fall through - case TVN_SELCHANGING: + case TVN_SELCHANGINGA: + case TVN_SELCHANGINGW: { if ( eventType == wxEVT_NULL ) eventType = wxEVT_COMMAND_TREE_SEL_CHANGING; //else: already set above - NM_TREEVIEW* tv = (NM_TREEVIEW *)lParam; - - event.m_item = (WXHTREEITEM) tv->itemNew.hItem; - event.m_itemOld = (WXHTREEITEM) tv->itemOld.hItem; + if (hdr->code == TVN_SELCHANGINGW || + hdr->code == TVN_SELCHANGEDW) + { + NM_TREEVIEWW* tv = (NM_TREEVIEWW *)lParam; + event.m_item = (WXHTREEITEM) tv->itemNew.hItem; + event.m_itemOld = (WXHTREEITEM) tv->itemOld.hItem; + } + else + { + NM_TREEVIEWA* tv = (NM_TREEVIEWA *)lParam; + event.m_item = (WXHTREEITEM) tv->itemNew.hItem; + event.m_itemOld = (WXHTREEITEM) tv->itemOld.hItem; + } } break; diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 047ef9a22e..fa9c9d6468 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -199,7 +199,7 @@ bool wxGetFullHostName(wxChar *buf, int maxSize) if ( pHostEnt ) { - host = pHostEnt->h_name; + host = wxString::FromAscii(pHostEnt->h_name); } } } @@ -870,7 +870,7 @@ bool wxShell(const wxString& command) return wxExecute(cmd, wxEXEC_SYNC) == 0; } -// Shutdown or reboot the PC +// Shutdown or reboot the PC bool wxShutdown(wxShutdownFlags wFlags) { #ifdef __WIN32__ @@ -878,28 +878,28 @@ bool wxShutdown(wxShutdownFlags wFlags) if ( wxGetOsVersion(NULL, NULL) == wxWINDOWS_NT ) // if is NT or 2K { - // Get a token for this process. - HANDLE hToken; + // Get a token for this process. + HANDLE hToken; bOK = ::OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) != 0; #ifndef __WXWINE__ if ( bOK ) { - TOKEN_PRIVILEGES tkp; + TOKEN_PRIVILEGES tkp; - // Get the LUID for the shutdown privilege. + // Get the LUID for the shutdown privilege. ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, - &tkp.Privileges[0].Luid); + &tkp.Privileges[0].Luid); - tkp.PrivilegeCount = 1; // one privilege to set - tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + tkp.PrivilegeCount = 1; // one privilege to set + tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - // Get the shutdown privilege for this process. + // Get the shutdown privilege for this process. ::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, - (PTOKEN_PRIVILEGES)NULL, 0); + (PTOKEN_PRIVILEGES)NULL, 0); - // Cannot test the return value of AdjustTokenPrivileges. + // Cannot test the return value of AdjustTokenPrivileges. bOK = ::GetLastError() == ERROR_SUCCESS; } #endif @@ -923,7 +923,7 @@ bool wxShutdown(wxShutdownFlags wFlags) return FALSE; } - bOK = ::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_REBOOT, 0) != 0; + bOK = ::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_REBOOT, 0) != 0; } return bOK; @@ -1104,6 +1104,8 @@ void wxUsleep(unsigned long milliseconds) #else // !Win32 if (gs_inTimer) return; + if (miliseconds <= 0) + return; wxTheSleepTimer = new wxSleepTimer; gs_inTimer = TRUE; @@ -1122,6 +1124,8 @@ void wxSleep(int nSecs) { if (gs_inTimer) return; + if (nSecs <= 0) + return; wxTheSleepTimer = new wxSleepTimer; gs_inTimer = TRUE; diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp index 58b26f2c07..ae26542774 100644 --- a/src/msw/utilsexc.cpp +++ b/src/msw/utilsexc.cpp @@ -139,7 +139,7 @@ public: bool IsOpened() const { return m_hInput != INVALID_HANDLE_VALUE; } // returns TRUE if there is any data to be read from the pipe - bool IsAvailable() const; + virtual bool CanRead() const; protected: size_t OnSysRead(void *buffer, size_t len); @@ -341,12 +341,12 @@ wxPipeInputStream::~wxPipeInputStream() ::CloseHandle(m_hInput); } -bool wxPipeInputStream::IsAvailable() const +bool wxPipeInputStream::CanRead() const { // FIXME #ifdef __WXWINE__ return FALSE; -#else +#else // !Wine if ( !IsOpened() ) return FALSE; @@ -374,37 +374,36 @@ bool wxPipeInputStream::IsAvailable() const // it had been closed ::CloseHandle(m_hInput); - wxConstCast(this, wxPipeInputStream)->m_hInput = INVALID_HANDLE_VALUE; + wxPipeInputStream *self = wxConstCast(this, wxPipeInputStream); - return FALSE; + self->m_hInput = INVALID_HANDLE_VALUE; + self->m_lasterror = wxSTREAM_EOF; + + nAvailable = 0; } return nAvailable != 0; -#endif +#endif // Wine/!Wine } size_t wxPipeInputStream::OnSysRead(void *buffer, size_t len) { - // reading from a pipe may block if there is no more data, always check for - // EOF first - if ( !IsAvailable() ) + if ( !IsOpened() ) { m_lasterror = wxSTREAM_EOF; return 0; } - m_lasterror = wxSTREAM_NOERROR; - DWORD bytesRead; if ( !::ReadFile(m_hInput, buffer, len, &bytesRead, NULL) ) { - if ( ::GetLastError() == ERROR_BROKEN_PIPE ) - m_lasterror = wxSTREAM_EOF; - else - m_lasterror = wxSTREAM_READ_ERROR; + m_lasterror = ::GetLastError() == ERROR_BROKEN_PIPE + ? wxSTREAM_EOF + : wxSTREAM_READ_ERROR; } + // bytesRead is set to 0, as desired, if an error occured return bytesRead; } @@ -424,18 +423,17 @@ wxPipeOutputStream::~wxPipeOutputStream() size_t wxPipeOutputStream::OnSysWrite(const void *buffer, size_t len) { - DWORD bytesRead; + DWORD bytesWritten; - m_lasterror = wxSTREAM_NOERROR; - if ( !::WriteFile(m_hOutput, buffer, len, &bytesRead, NULL) ) + m_lasterror = wxSTREAM_NO_ERROR; + if ( !::WriteFile(m_hOutput, buffer, len, &bytesWritten, NULL) ) { - if ( ::GetLastError() == ERROR_BROKEN_PIPE ) - m_lasterror = wxSTREAM_EOF; - else - m_lasterror = wxSTREAM_READ_ERROR; + m_lasterror = ::GetLastError() == ERROR_BROKEN_PIPE + ? wxSTREAM_EOF + : wxSTREAM_WRITE_ERROR; } - return bytesRead; + return bytesWritten; } #endif // wxUSE_STREAMS @@ -453,7 +451,7 @@ static bool wxExecuteDDE(const wxString& ddeServer, const wxString& ddeTopic, const wxString& ddeCommand) { - bool ok; + bool ok = FALSE; wxDDEClient client; wxConnectionBase *conn = client.MakeConnection(_T(""), @@ -470,17 +468,17 @@ static bool wxExecuteDDE(const wxString& ddeServer, // important ones - like IE and other MS stuff - use // XTYP_REQUEST! // - // so we try it first and then the other one if it + // so we try one first and then the other one if it // failed { wxLogNull noErrors; - ok = conn->Request(ddeCommand) != NULL; + ok = conn->Execute(ddeCommand); } if ( !ok ) { - // now try execute - but show the errors - ok = conn->Execute(ddeCommand); + // now try request - but show the errors + ok = conn->Request(ddeCommand) != NULL; } } diff --git a/src/msw/volume.cpp b/src/msw/volume.cpp index e1b4db737d..628dc4e66c 100644 --- a/src/msw/volume.cpp +++ b/src/msw/volume.cpp @@ -102,7 +102,7 @@ static WNetCloseEnumPtr s_pWNetCloseEnum; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ static long s_cancelSearch = FALSE; -struct FileInfo : public wxObject +struct FileInfo { FileInfo(unsigned flag=0, wxFSVolumeKind type=wxFS_VOL_OTHER) : m_flags(flag), m_type(type) {} @@ -119,7 +119,14 @@ struct FileInfo : public wxObject wxFSVolumeKind m_type; }; WX_DECLARE_STRING_HASH_MAP(FileInfo, FileInfoMap); -static FileInfoMap s_fileInfo(25); +// Cygwin bug (?) destructor for global s_fileInfo is called twice... +static FileInfoMap& GetFileInfoMap() +{ + static FileInfoMap s_fileInfo(25); + + return s_fileInfo; +} +#define s_fileInfo (GetFileInfoMap()) //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Other initialization. @@ -422,7 +429,7 @@ wxArrayString wxFSVolume::GetVolumes(int flagsSet, int flagsUnset) { #ifdef UNICODE s_pWNetOpenEnum = (WNetOpenEnumPtr)s_mprLib.GetSymbol(_T("WNetOpenEnumW")); - s_pWNetEnumResource = (WNetEnumResourcePtr)s_mprLib.GetSymbol("WNetEnumResourceW"); + s_pWNetEnumResource = (WNetEnumResourcePtr)s_mprLib.GetSymbol(_T("WNetEnumResourceW")); #else s_pWNetOpenEnum = (WNetOpenEnumPtr)s_mprLib.GetSymbol(_T("WNetOpenEnumA")); s_pWNetEnumResource = (WNetEnumResourcePtr)s_mprLib.GetSymbol(_T("WNetEnumResourceA")); diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 07d4a17190..47f023602f 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1471,7 +1471,7 @@ void wxWindowMSW::Update() wxLogLastError(_T("UpdateWindow")); } #endif - + #if defined(__WIN32__) && !defined(__WXMICROWIN__) // just calling UpdateWindow() is not enough, what we did in our WM_PAINT // handler needs to be really drawn right now @@ -1519,7 +1519,7 @@ void wxWindowMSW::DoSetToolTip(wxToolTip *tooltip) wxWindowBase::DoSetToolTip(tooltip); if ( m_tooltip ) - m_tooltip->SetWindow(this); + m_tooltip->SetWindow((wxWindow *)this); } #endif // wxUSE_TOOLTIPS @@ -1891,6 +1891,10 @@ static void wxYieldForCommandsOnly() { wxTheApp->DoMessage((WXMSG *)&msg); } + + // If we retrieved a WM_QUIT, insert back into the message queue. + if (msg.message == WM_QUIT) + ::PostQuitMessage(0); } bool wxWindowMSW::DoPopupMenu(wxMenu *menu, int x, int y) @@ -1961,6 +1965,14 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg) if ( !bCtrlDown ) { lDlgCode = ::SendMessage(msg->hwnd, WM_GETDLGCODE, 0, 0); + + // surprizingly, DLGC_WANTALLKEYS bit mask doesn't contain the + // DLGC_WANTTAB nor DLGC_WANTARROWS bits although, logically, + // it, of course, implies them + if ( lDlgCode & DLGC_WANTALLKEYS ) + { + lDlgCode |= DLGC_WANTTAB | DLGC_WANTARROWS; + } } bool bForward = TRUE, @@ -2050,6 +2062,12 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg) // eat the Enter events sometimes return FALSE; } + else if (!IsTopLevel()) + { + // if not a top level window, let parent + // handle it + return FALSE; + } //else: treat Enter as TAB: pass to the next // control as this is the best thing to do // if the text doesn't handle Enter itself @@ -2483,14 +2501,6 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam break; #endif // __WXMICROWIN__ - // VZ: if you find a situation when this is needed, tell - // me about it, do *not* uncomment this code as it - // causes other strange problems -#if 0 - if ( message == WM_LBUTTONDOWN && AcceptsFocus() ) - SetFocus(); -#endif // 0 - int x = GET_X_LPARAM(lParam), y = GET_Y_LPARAM(lParam); @@ -2506,6 +2516,20 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam else { win = FindWindowForMouseEvent(this, &x, &y); + + // this should never happen + wxCHECK_MSG( win, 0, + _T("FindWindowForMouseEvent() returned NULL") ); + + // for the standard classes their WndProc sets the focus to + // them anyhow and doing it from here results in some weird + // problems, but for our windows we want them to acquire + // focus when clicked + if ( !win->IsOfStandardClass() ) + { + if ( message == WM_LBUTTONDOWN && win->AcceptsFocus() ) + win->SetFocus(); + } } processed = win->HandleMouseEvent(message, x, y, wParam); @@ -2598,71 +2622,73 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam if ( m_lastKeydownProcessed ) { processed = TRUE; - break; } - switch ( wParam ) + if ( !processed ) { - // we consider these message "not interesting" to OnChar, so - // just don't do anything more with them - case VK_SHIFT: - case VK_CONTROL: - case VK_MENU: - case VK_CAPITAL: - case VK_NUMLOCK: - case VK_SCROLL: - processed = TRUE; - break; + switch ( wParam ) + { + // we consider these message "not interesting" to OnChar, so + // just don't do anything more with them + case VK_SHIFT: + case VK_CONTROL: + case VK_MENU: + case VK_CAPITAL: + case VK_NUMLOCK: + case VK_SCROLL: + processed = TRUE; + break; - // avoid duplicate messages to OnChar for these ASCII keys: - // they will be translated by TranslateMessage() and received - // in WM_CHAR - case VK_ESCAPE: - case VK_SPACE: - case VK_RETURN: - case VK_BACK: - case VK_TAB: - case VK_ADD: - case VK_SUBTRACT: - case VK_MULTIPLY: - case VK_DIVIDE: - case VK_OEM_1: - case VK_OEM_2: - case VK_OEM_3: - case VK_OEM_4: - case VK_OEM_5: - case VK_OEM_6: - case VK_OEM_7: - case VK_OEM_PLUS: - case VK_OEM_COMMA: - case VK_OEM_MINUS: - case VK_OEM_PERIOD: - // but set processed to FALSE, not TRUE to still pass them - // to the control's default window proc - otherwise - // built-in keyboard handling won't work - processed = FALSE; - - break; + // avoid duplicate messages to OnChar for these ASCII keys: + // they will be translated by TranslateMessage() and received + // in WM_CHAR + case VK_ESCAPE: + case VK_SPACE: + case VK_RETURN: + case VK_BACK: + case VK_TAB: + case VK_ADD: + case VK_SUBTRACT: + case VK_MULTIPLY: + case VK_DIVIDE: + case VK_OEM_1: + case VK_OEM_2: + case VK_OEM_3: + case VK_OEM_4: + case VK_OEM_5: + case VK_OEM_6: + case VK_OEM_7: + case VK_OEM_PLUS: + case VK_OEM_COMMA: + case VK_OEM_MINUS: + case VK_OEM_PERIOD: + // but set processed to FALSE, not TRUE to still pass them + // to the control's default window proc - otherwise + // built-in keyboard handling won't work + processed = FALSE; + break; #ifdef VK_APPS - // special case of VK_APPS: treat it the same as right mouse - // click because both usually pop up a context menu - case VK_APPS: - { - WPARAM flags; - int x, y; + // special case of VK_APPS: treat it the same as right mouse + // click because both usually pop up a context menu + case VK_APPS: + { + WPARAM flags; + int x, y; - TranslateKbdEventToMouse(this, &x, &y, &flags); - processed = HandleMouseEvent(WM_RBUTTONDOWN, x, y, flags); - } - break; + TranslateKbdEventToMouse(this, &x, &y, &flags); + processed = HandleMouseEvent(WM_RBUTTONDOWN, x, y, flags); + } + break; #endif // VK_APPS - default: - // do generate a CHAR event - processed = HandleChar((WORD)wParam, lParam); - + default: + // do generate a CHAR event + processed = HandleChar((WORD)wParam, lParam); + } } + if (message == WM_SYSKEYDOWN) // Let Windows still handle the SYSKEYs + processed = FALSE; break; case WM_SYSKEYUP: @@ -3116,16 +3142,22 @@ bool wxWindowMSW::HandleTooltipNotify(WXUINT code, LPTOOLTIPTEXT ttText = (LPTOOLTIPTEXT)lParam; +#if !wxUSE_UNICODE if ( code == (WXUINT) TTN_NEEDTEXTA ) { - ttText->lpszText = (wxChar *)ttip.c_str(); + // we pass just the pointer as we store the string internally anyhow + ttText->lpszText = (char *)ttip.c_str(); } - else + else // TTN_NEEDTEXTW +#endif // !Unicode { #if wxUSE_UNICODE + // in Unicode mode this is just what we need ttText->lpszText = (wxChar *)ttip.c_str(); #else // !Unicode - size_t lenAnsi = ttip.length(); + // in ANSI mode we have to convert the string and put it into the + // provided buffer: be careful not to overrun it + const size_t lenAnsi = ttip.length(); // some compilers (MetroWerks and Cygwin) don't like calling mbstowcs // with NULL argument @@ -3140,6 +3172,13 @@ bool wxWindowMSW::HandleTooltipNotify(WXUINT code, wchar_t *dst = (wchar_t *)ttText->szText, *pwz = new wchar_t[lenUnicode + 1]; mbstowcs(pwz, ttip, lenAnsi + 1); + + // stay inside the buffer (-1 because it must be NUL-terminated) + if ( lenUnicode > WXSIZEOF(ttText->szText) - 1 ) + { + lenUnicode = WXSIZEOF(ttText->szText) - 1; + } + memcpy(dst, pwz, lenUnicode*sizeof(wchar_t)); // put the terminating wide NUL @@ -3259,6 +3298,7 @@ bool wxWindowMSW::HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate) bool wxWindowMSW::HandleDestroy() { wxWindowDestroyEvent event((wxWindow *)this); + event.SetId(GetId()); (void)GetEventHandler()->ProcessEvent(event); // delete our drop target if we've got one @@ -3499,6 +3539,8 @@ bool wxWindowMSW::HandleSetCursor(WXHWND WXUNUSED(hWnd), if ( hcursor ) { +// wxLogDebug("HandleSetCursor: Setting cursor %ld", (long) hcursor); + ::SetCursor(hcursor); // cursor set, stop here @@ -4378,9 +4420,18 @@ bool wxWindowMSW::HandleChar(WXWPARAM wParam, WXLPARAM lParam, bool isASCII) } wxKeyEvent event(CreateKeyEvent(wxEVT_CHAR, id, lParam, wParam)); - if ( ctrlDown ) + + // the alphanumeric keys produced by pressing AltGr+something on European + // keyboards have both Ctrl and Alt modifiers which may confuse the user + // code as, normally, keys with Ctrl and/or Alt don't result in anything + // alphanumeric, so pretend that there are no modifiers at all (the + // KEY_DOWN event would still have the correct modifiers if they're really + // needed) + if ( event.m_controlDown && event.m_altDown && + (id >= 32 && id < 256) ) { - event.m_controlDown = TRUE; + event.m_controlDown = + event.m_altDown = FALSE; } return GetEventHandler()->ProcessEvent(event); @@ -5434,9 +5485,10 @@ static TEXTMETRIC wxGetTextMetrics(const wxWindowMSW *win) // Find the wxWindow at the current mouse position, returning the mouse // position. -wxWindow* wxFindWindowAtPointer(wxPoint& WXUNUSED(pt)) +wxWindow* wxFindWindowAtPointer(wxPoint& pt) { - return wxFindWindowAtPoint(wxGetMousePosition()); + pt = wxGetMousePosition(); + return wxFindWindowAtPoint(pt); } wxWindow* wxFindWindowAtPoint(const wxPoint& pt) diff --git a/src/os2/app.cpp b/src/os2/app.cpp index 31c1d49629..4bebb62925 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -613,7 +613,7 @@ int wxEntry( { if (wxTheApp->OnInit()) { - nRetValue = wxTheApp->OnRun(); + wxTheApp->OnRun(); } // Normal exit wxWindow* pTopWindow = wxTheApp->GetTopWindow(); @@ -641,7 +641,7 @@ int wxEntry( printf("wxTheApp->OnExit "); fflush(stdout); #endif - wxTheApp->OnExit(); + nRetValue = wxTheApp->OnExit(); #if wxUSE_CONSOLEDEBUG printf("wxApp::CleanUp "); fflush(stdout); @@ -836,13 +836,13 @@ int wxApp::MainLoop() while (!Pending() && ProcessIdle()) { HandleSockets(); - wxUsleep(10000); + wxUsleep(10); } HandleSockets(); if (Pending()) DoMessage(); else - wxUsleep(10000); + wxUsleep(10); } return (int)svCurrentMsg.mp1; @@ -965,19 +965,20 @@ bool wxApp::ProcessMessage( return FALSE; } // end of wxApp::ProcessMessage +bool gbInOnIdle = FALSE; + void wxApp::OnIdle( wxIdleEvent& rEvent ) { - static bool sbInOnIdle = FALSE; // // Avoid recursion (via ProcessEvent default case) // - if (sbInOnIdle) + if (gbInOnIdle) return; - sbInOnIdle = TRUE; + gbInOnIdle = TRUE; // // If there are pending events, we must process them: pending events @@ -1019,7 +1020,7 @@ void wxApp::OnIdle( // rEvent.RequestMore(TRUE); } - sbInOnIdle = FALSE; + gbInOnIdle = FALSE; } // end of wxApp::OnIdle // Send idle event to all top-level windows diff --git a/src/os2/bitmap.cpp b/src/os2/bitmap.cpp index 8727225de8..76b31572f2 100644 --- a/src/os2/bitmap.cpp +++ b/src/os2/bitmap.cpp @@ -508,7 +508,7 @@ bool wxBitmap::SaveFile( // ---------------------------------------------------------------------------- -// wxImage-wxBitmap convertion +// wxImage-wxBitmap conversion // ---------------------------------------------------------------------------- bool wxBitmap::CreateFromImage ( diff --git a/src/os2/bmpbuttn.cpp b/src/os2/bmpbuttn.cpp index e3ae729688..6697e119b7 100644 --- a/src/os2/bmpbuttn.cpp +++ b/src/os2/bmpbuttn.cpp @@ -32,9 +32,7 @@ bool wxBitmapButton::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/button.cpp b/src/os2/button.cpp index 61b0d68fa4..397ee99eda 100644 --- a/src/os2/button.cpp +++ b/src/os2/button.cpp @@ -47,9 +47,7 @@ bool wxButton::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/checkbox.cpp b/src/os2/checkbox.cpp index bfc9f835ad..83480a8ef2 100644 --- a/src/os2/checkbox.cpp +++ b/src/os2/checkbox.cpp @@ -62,9 +62,7 @@ bool wxCheckBox::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -76,9 +74,7 @@ bool wxCheckBox::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName )) return FALSE; @@ -192,9 +188,7 @@ bool wxBitmapCheckBox::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/checklst.cpp b/src/os2/checklst.cpp index 0a5befdb84..ec5776444d 100644 --- a/src/os2/checklst.cpp +++ b/src/os2/checklst.cpp @@ -274,9 +274,7 @@ wxCheckListBox::wxCheckListBox ( , int nStrings , const wxString asChoices[] , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rVal -#endif , const wxString& rsName ) : wxListBox() @@ -288,9 +286,7 @@ wxCheckListBox::wxCheckListBox ( ,nStrings ,asChoices ,lStyle | wxLB_OWNERDRAW -#if wxUSE_VALIDATORS ,rVal -#endif ,rsName ); } // end of wxCheckListBox::wxCheckListBox diff --git a/src/os2/choice.cpp b/src/os2/choice.cpp index f3f95b2a91..5ae8def9d9 100644 --- a/src/os2/choice.cpp +++ b/src/os2/choice.cpp @@ -31,9 +31,7 @@ bool wxChoice::Create( , int n , const wxString asChoices[] , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -44,9 +42,7 @@ bool wxChoice::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName )) return FALSE; @@ -189,6 +185,16 @@ void wxChoice::SetString( ) { SHORT nIndexType = 0; + void* pData; + + if ( m_clientDataItemsType != wxClientData_None ) + { + pData = DoGetItemClientData(n); + } + else // no client data + { + pData = NULL; + } ::WinSendMsg(GetHwnd(), LM_DELETEITEM, (MPARAM)n, 0); @@ -201,6 +207,13 @@ void wxChoice::SetString( ,(MPARAM)nIndexType ,(MPARAM)rsStr.c_str() ); + + if (pData) + { + DoSetItemClientData( n + ,pData + ); + } } // end of wxChoice::SetString wxString wxChoice::GetString( diff --git a/src/os2/combobox.cpp b/src/os2/combobox.cpp index 038fa35ec5..90a8241fae 100644 --- a/src/os2/combobox.cpp +++ b/src/os2/combobox.cpp @@ -95,9 +95,7 @@ bool wxComboBox::Create( , int n , const wxString asChoices[] , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -108,9 +106,7 @@ bool wxComboBox::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName )) return FALSE; @@ -173,37 +169,8 @@ void wxComboBox::SetValue( const wxString& rsValue ) { - // - // If newlines are denoted by just 10, must stick 13 in front. - // - int nSingletons = 0; - int nLen = rsValue.Length(); - int i; - - for (i = 0; i < nLen; i ++) - { - if ((i > 0) && (rsValue[i] == 10) && (rsValue[i - 1] != 13)) - nSingletons ++; - } - if (nSingletons > 0) - { - wxChar* zTmp = new wxChar[nLen + nSingletons + 1]; - int j = 0; - - for (i = 0; i < nLen; i ++) - { - if ((i > 0) && (rsValue[i] == 10) && (rsValue[i - 1] != 13)) - { - zTmp[j] = 13; - j++; - } - zTmp[j] = rsValue[i]; - j++; - } - zTmp[j] = 0; - ::WinSetWindowText(GetHwnd(), zTmp); - delete[] zTmp; - } + if ( HasFlag(wxCB_READONLY) ) + SetStringSelection(rsValue); else ::WinSetWindowText(GetHwnd(), rsValue.c_str()); } // end of wxComboBox::SetValue diff --git a/src/os2/control.cpp b/src/os2/control.cpp index b7e9f82af7..ed246a1d4e 100644 --- a/src/os2/control.cpp +++ b/src/os2/control.cpp @@ -47,9 +47,7 @@ bool wxControl::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/dialog.cpp b/src/os2/dialog.cpp index eb635379c9..1ab046a28e 100644 --- a/src/os2/dialog.cpp +++ b/src/os2/dialog.cpp @@ -206,6 +206,15 @@ void wxDialog::DoShowModal() // ::WinProcessDlg((HWND)GetHwnd()); + // + // Before entering the modal loop, reset the "is in OnIdle()" flag (see + // comment in app.cpp) + // + extern bool gbInOnIdle; + bool bWasInOnIdle = gbInOnIdle; + + gbInOnIdle = FALSE; + // // Enter the modal loop // @@ -221,6 +230,7 @@ void wxDialog::DoShowModal() // a message came or no more idle processing to do wxTheApp->DoMessage(); } + gbInOnIdle = bWasInOnIdle; // // Snd restore focus diff --git a/src/os2/file.lst b/src/os2/file.lst index d9b38dacc3..8f2f489186 100644 --- a/src/os2/file.lst +++ b/src/os2/file.lst @@ -1,77 +1,39 @@ -List of files yet to be implemented. As you finish a file, delete it from the list +List of files yet to be implemented. As you finish a file, delete it from the list. - ..\os2\$D\accel.obj \ - ..\os2\$D\app.obj \ - ..\os2\$D\bitmap.obj \ - ..\os2\$D\bmpbuttn.obj \ - ..\os2\$D\brush.obj \ - ..\os2\$D\button.obj \ - ..\os2\$D\checkbox.obj \ - ..\os2\$D\checklst.obj \ - ..\os2\$D\choice.obj \ - ..\os2\$D\clipbrd.obj \ - ..\os2\$D\colour.obj \ - ..\os2\$D\combobox.obj \ - ..\os2\$D\control.obj \ - ..\os2\$D\cursor.obj \ - ..\os2\$D\data.obj \ - ..\os2\$D\dc.obj \ - ..\os2\$D\dcclient.obj \ - ..\os2\$D\dcmemory.obj \ ..\os2\$D\dcprint.obj \ - ..\os2\$D\dcscreen.obj \ - ..\os2\$D\dialog.obj \ - ..\os2\$D\dirdlg.obj \ ..\os2\$D\dnd.obj \ - ..\os2\$D\filedlg.obj \ - ..\os2\$D\font.obj \ - ..\os2\$D\fontdlg.obj \ - ..\os2\$D\frame.obj \ - ..\os2\$D\gauge.obj \ - ..\os2\$D\gdiobj.obj \ - ..\os2\$D\gsocket.obj \ ..\os2\$D\helpwin.obj \ - ..\os2\$D\icon.obj \ - ..\os2\$D\imaglist.obj \ - ..\os2\$D\iniconf.obj \ ..\os2\$D\joystick.obj \ - ..\os2\$D\listbox.obj \ - ..\os2\$D\listctrl.obj \ - ..\os2\$D\main.obj \ - ..\os2\$D\mdi.obj \ - ..\os2\$D\menu.obj \ - ..\os2\$D\menuitem.obj \ ..\os2\$D\metafile.obj \ - ..\os2\$D\minifram.obj \ - ..\os2\$D\msgdlg.obj \ - ..\os2\$D\nativdlg.obj \ - ..\os2\$D\notebook.obj \ - ..\os2\$D\ownerdrw.obj \ - ..\os2\$D\palette.obj \ - ..\os2\$D\pen.obj \ - ..\os2\$D\pnghand.obj \ ..\os2\$D\print.obj \ - ..\os2\$D\radiobox.obj \ - ..\os2\$D\radiobut.obj \ - ..\os2\$D\region.obj \ - ..\os2\$D\scrolbar.obj \ - ..\os2\$D\settings.obj \ - ..\os2\$D\slider.obj \ - ..\os2\$D\spinbutt.obj \ - ..\os2\$D\spinctrl.obj \ - ..\os2\$D\statbmp.obj \ - ..\os2\$D\statbox.obj \ - ..\os2\$D\stattext.obj \ - ..\os2\$D\statbrpm.obj \ - ..\os2\$D\tabctrl.obj \ ..\os2\$D\taskbar.obj \ - ..\os2\$D\textctrl.obj \ - ..\os2\$D\thread.obj \ - ..\os2\$D\toolbar.obj \ - ..\os2\$D\tooltip.obj \ - ..\os2\$D\treectrl.obj \ - ..\os2\$D\utils.obj \ - ..\os2\$D\utilsexc.obj \ ..\os2\$D\wave.obj \ - ..\os2\$D\window.obj + + +List of things that still need doing, include the above files. Some are more difficult than others. + +DND is a needed component of the tree control. + +The tree control is a component of the list and dirctrl's. These are, in turn, components of the dirdlgg. + +DDE isn't used much anymore as an IPC protocol, but if OS/2 needs DDE, it should be straight forward. + +Printing is an untouched area, but should not be too difficult to finish. + +Not sure what good a taskbar control is but the other ports have one. + +The wave file is for OS/2 to be able to simply play back a .wav file. I have not touched +multimedia as of yet. + +There is a problem with TIFF right now for some reason. + +The color sliders in the color dialog do not seem to display correctly. + +Dialogs are generally not resizable, but in wxOS2, resizing a dialog leaves the title bar un-resized. + +Static bitmap controls need some work as they are non-wx standard, requiring a resource. Probably need +a "roll-our-own" control that is a simple window with an icon or bitmap drawn directly in it. + + + diff --git a/src/os2/files.lst b/src/os2/files.lst index 475e44ca76..9d528c5849 100644 --- a/src/os2/files.lst +++ b/src/os2/files.lst @@ -20,6 +20,7 @@ ALL_SOURCES = \ generic/laywin.cpp \ generic/listctrl.cpp \ generic/logg.cpp \ + generic/mdig.cpp \ generic/msgdlgg.cpp \ generic/numdlgg.cpp \ generic/panelg.cpp \ @@ -212,12 +213,10 @@ ALL_SOURCES = \ os2/joystick.cpp \ os2/listbox.cpp \ os2/main.cpp \ - os2/mdi.cpp \ os2/menu.cpp \ os2/menuitem.cpp \ os2/metafile.cpp \ os2/mimetype.cpp \ - os2/minifram.cpp \ os2/msgdlg.cpp \ os2/nativdlg.cpp \ os2/notebook.cpp \ @@ -265,7 +264,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -336,6 +334,7 @@ ALL_HEADERS = \ dynarray.h \ dynlib.h \ dynload.h \ + effects.h \ encconv.h \ event.h \ expr.h \ @@ -433,6 +432,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -548,7 +548,6 @@ ALL_HEADERS = \ os2/iniconf.h \ os2/joystick.h \ os2/listbox.h \ - os2/mdi.h \ os2/menu.h \ os2/menuitem.h \ os2/metafile.h \ @@ -603,7 +602,7 @@ ALL_HEADERS = \ generic/imaglist.h \ generic/laywin.h \ generic/listctrl.h \ - generic/mdig.cpp \ + generic/mdig.h \ generic/msgdlgg.h \ generic/notebook.h \ generic/paletteg.h \ @@ -793,6 +792,7 @@ GENERICOBJS = \ laywin.o \ listctrl.o \ logg.o \ + mdig.o \ msgdlgg.o \ numdlgg.o \ panelg.o \ @@ -858,12 +858,10 @@ GUIOBJS = \ joystick.o \ listbox.o \ main.o \ - mdi.o \ menu.o \ menuitem.o \ metafile.o \ mimetype.o \ - minifram.o \ msgdlg.o \ nativdlg.o \ notebook.o \ @@ -915,7 +913,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/os2/gauge.cpp b/src/os2/gauge.cpp index 05685686b1..0cedb8047f 100644 --- a/src/os2/gauge.cpp +++ b/src/os2/gauge.cpp @@ -140,9 +140,7 @@ bool wxGauge::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/listbox.cpp b/src/os2/listbox.cpp index 5714ca119c..69ba786869 100644 --- a/src/os2/listbox.cpp +++ b/src/os2/listbox.cpp @@ -93,9 +93,7 @@ bool wxListBox::Create( , int n , const wxString asChoices[] , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/makefile.va b/src/os2/makefile.va index 7f384a8e98..c6b03a341f 100644 --- a/src/os2/makefile.va +++ b/src/os2/makefile.va @@ -515,7 +515,6 @@ OS2OBJS = \ ..\os2\$D\menuitem.obj \ ..\os2\$D\metafile.obj \ ..\os2\$D\mimetype.obj \ - ..\os2\$D\minifram.obj \ ..\os2\$D\msgdlg.obj \ ..\os2\$D\nativdlg.obj \ ..\os2\$D\notebook.obj \ @@ -597,7 +596,6 @@ OS2LIBOBJS1 = \ mimetype.obj OS2LIBOBJS2 = \ - minifram.obj \ msgdlg.obj \ nativdlg.obj \ notebook.obj \ @@ -648,7 +646,6 @@ HTMLOBJS = \ ..\html\$D\m_layout.obj \ ..\html\$D\m_links.obj \ ..\html\$D\m_list.obj \ - ..\html\$D\m_meta.obj \ ..\html\$D\m_pre.obj \ ..\html\$D\m_style.obj \ ..\html\$D\m_tables.obj \ @@ -671,7 +668,6 @@ HTMLLIBOBJS = \ m_layout.obj \ m_links.obj \ m_list.obj \ - m_meta.obj \ m_pre.obj \ m_style.obj \ m_tables.obj \ @@ -862,6 +858,7 @@ $(GENLIBOBJS): copy ..\generic\$D\laywin.obj copy ..\generic\$D\listctrl.obj copy ..\generic\$D\logg.obj + copy ..\generic\$D\mdig.obj copy ..\generic\$D\numdlgg.obj copy ..\generic\$D\panelg.obj copy ..\generic\$D\printps.obj @@ -901,7 +898,6 @@ $(HTMLLIBOBJS): copy ..\html\$D\m_layout.obj copy ..\html\$D\m_links.obj copy ..\html\$D\m_list.obj - copy ..\html\$D\m_meta.obj copy ..\html\$D\m_pre.obj copy ..\html\$D\m_style.obj copy ..\html\$D\m_tables.obj @@ -955,7 +951,6 @@ $(OS2LIBOBJS1): copy ..\os2\$D\mimetype.obj $(OS2LIBOBJS2): - copy ..\os2\$D\minifram.obj copy ..\os2\$D\msgdlg.obj copy ..\os2\$D\nativdlg.obj copy ..\os2\$D\notebook.obj @@ -1118,15 +1113,15 @@ $(WXDIR)\lib\wx.lib: \ !else # Update the dynamic link library -$(WXDIR)\lib\wx23.dll: $(OBJECTS) +$(WXDIR)\lib\wx24.dll: $(OBJECTS) icc @<< /B" $(LINKFLAGS)" /Fe$@ $(LIBS) $(DUMMYOBJ) $(OBJECTS) - $(WXDIR)\src\os2\wx23.def + $(WXDIR)\src\os2\wx24.def << - implib $(WXDIR)\lib\wx23.lib $(WXDIR)\src\os2\wx23.def + implib $(WXDIR)\lib\wx24.lib $(WXDIR)\src\os2\wx24.def !endif @@ -1205,7 +1200,7 @@ clean: $(PERIPH_CLEAN_TARGET) clean_png clean_zlib clean_jpeg clean_tiff rd ..\os2\$D del $(LIBTARGET) !if "$(WXMAKINGDLL)" == "1" - erase /N ..\..\lib\wx23.lib + erase /N ..\..\lib\wx24.lib !endif erase /N $(COMMDIR)\y_tab.c erase /N $(COMMDIR)\lex_yy.c diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index 8ca65be64b..8007899907 100644 --- a/src/os2/menu.cpp +++ b/src/os2/menu.cpp @@ -750,6 +750,15 @@ wxMenuBar::wxMenuBar( wxMenuBar::~wxMenuBar() { + // + // We should free PM's resources only if PM doesn't do it for us + // which happens if we're attached to a frame + // + if (m_hMenu && !IsAttached()) + { + ::WinDestroyWindow((HMENU)m_hMenu); + m_hMenu = (WXHMENU)NULL; + } } // end of wxMenuBar::~wxMenuBar // --------------------------------------------------------------------------- diff --git a/src/os2/menuitem.cpp b/src/os2/menuitem.cpp index ca9fc82f00..91c6e9d975 100644 --- a/src/os2/menuitem.cpp +++ b/src/os2/menuitem.cpp @@ -423,6 +423,9 @@ void wxMenuItem::SetText( wxMenuItemBase::SetText(sText); OWNER_DRAWN_ONLY(wxOwnerDrawn::SetName(sText)); +#if wxUSE_OWNER_DRAWN + SetAccelString(rText.AfterFirst(_T('\t'))); +#endif // wxUSE_OWNER_DRAWN HWND hMenu = GetHmenuOf(m_parentMenu); diff --git a/src/os2/notebook.cpp b/src/os2/notebook.cpp index dbf582f6d4..fe64de1281 100644 --- a/src/os2/notebook.cpp +++ b/src/os2/notebook.cpp @@ -212,19 +212,34 @@ int wxNotebook::SetSelection( ) { wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, wxT("notebook page out of range") ); - int nOldPage = GetSelection(); - ChangePage( m_nSelection - ,nPage - ); + if (nPage != m_nSelection) + { + wxNotebookEvent vEvent( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING + ,m_windowId + ); - ULONG ulPageId = (ULONG)m_alPageId[nPage]; + vEvent.SetSelection(nPage); + vEvent.SetOldSelection(m_nSelection); + vEvent.SetEventObject(this); + if (!GetEventHandler()->ProcessEvent(vEvent) || vEvent.IsAllowed()) + { - ::WinSendMsg( GetHWND() - ,BKM_TURNTOPAGE - ,MPFROMLONG((ULONG)m_alPageId[nPage]) - ,(MPARAM)0 - ); + // + // Program allows the page change + // + vEvent.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); + GetEventHandler()->ProcessEvent(vEvent); + + ULONG ulPageId = (ULONG)m_alPageId[nPage]; + + ::WinSendMsg( GetHWND() + ,BKM_TURNTOPAGE + ,MPFROMLONG((ULONG)m_alPageId[nPage]) + ,(MPARAM)0 + ); + } + } m_nSelection = nPage; return nPage; } // end of wxNotebook::SetSelection @@ -891,56 +906,5 @@ bool wxNotebook::OS2OnScroll ( ); } // end of wxNotebook::OS2OnScroll -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// -// Generate the page changing and changed events, hide the currently active -// panel and show the new one -// -void wxNotebook::ChangePage ( - int nOldSel -, int nSel -) -{ - static bool sbInsideChangePage = FALSE; - - // - // When we call ProcessEvent(), our own OnSelChange() is called which calls - // this function - break the infinite loop - // - if (sbInsideChangePage) - return; - - // - // It's not an error (the message may be generated by the tab control itself) - // and it may happen - just do nothing - // - if (nSel == nOldSel) - return; - - sbInsideChangePage = TRUE; - - wxNotebookEvent rEvent( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING - ,m_windowId - ); - - rEvent.SetSelection(nSel); - rEvent.SetOldSelection(nOldSel); - rEvent.SetEventObject(this); - if (GetEventHandler()->ProcessEvent(rEvent) && !rEvent.IsAllowed()) - { - // - // Program doesn't allow the page change - // - sbInsideChangePage = FALSE; - return; - } - rEvent.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); - GetEventHandler()->ProcessEvent(rEvent); - sbInsideChangePage = FALSE; -} // end of wxNotebook::ChangePage - #endif // wxUSE_NOTEBOOK diff --git a/src/os2/os2jpeg.def b/src/os2/os2jpeg.def index 26031aa10b..b4f69492fb 100644 --- a/src/os2/os2jpeg.def +++ b/src/os2/os2jpeg.def @@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL CODE LOADONCALL EXPORTS -;From library: H:\Dev\Wx2\WxWindows\lib\os2jpeg.lib +;From library: H:\Dev\wx24\WxWindows\lib\os2jpeg.lib ;From object file: ..\jpeg\jcomapi.c ;PUBDEFs (Symbols available from object file): jpeg_destroy diff --git a/src/os2/os2png.def b/src/os2/os2png.def index e892ecfd43..fee334e465 100644 --- a/src/os2/os2png.def +++ b/src/os2/os2png.def @@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL CODE LOADONCALL EXPORTS -;From library: F:\DEV\WX2\WXWINDOWS\LIB\os2png.lib +;From library: H:\Dev\wx24\WxWindows\lib\os2png.lib ;From object file: ..\png\png.c ;PUBDEFs (Symbols available from object file): png_free_data @@ -20,7 +20,6 @@ EXPORTS png_info_init png_destroy_info_struct png_get_io_ptr - png_libpng_ver png_get_libpng_ver png_set_sig_bytes png_check_sig diff --git a/src/os2/ownerdrw.cpp b/src/os2/ownerdrw.cpp index 9e9dd6568d..3d8eb95ce0 100644 --- a/src/os2/ownerdrw.cpp +++ b/src/os2/ownerdrw.cpp @@ -18,12 +18,13 @@ #ifndef WX_PRECOMP #include "wx/window.h" - #include "wx/msw/private.h" + #include "wx/os2/private.h" #include "wx/font.h" #include "wx/bitmap.h" #include "wx/dcmemory.h" #include "wx/menu.h" #include "wx/utils.h" + #include "wx/settings.h" #endif #if wxUSE_OWNER_DRAWN @@ -71,17 +72,100 @@ bool wxOwnerDrawn::OnMeasureItem( { wxMemoryDC vDC; - vDC.SetFont(GetFont()); wxString sStr = wxStripMenuCodes(m_strName); + // + // If we have a valid accel string, then pad out + // the menu string so the menu and accel string are not + // placed ontop of eachother. + if (!m_strAccel.empty() ) + { + sStr.Pad(sStr.Length()%8); + sStr += m_strAccel; + } + vDC.SetFont(GetFont()); vDC.GetTextExtent( sStr ,(long *)pWidth ,(long *)pHeight ); + if (!m_strAccel.IsEmpty()) + { + // + // Measure the accelerator string, and add it's width to + // the total item width, plus 16 (Accelerators are right justified, + // with the right edge of the text rectangle 16 pixels left of + // the right edge of the menu) + // + int nAccelWidth; + int nAccelHeight; - (*pHeight) = (*pHeight) + 2; - m_nHeight = *pHeight; // remember height for use in OnDrawItem + vDC.GetTextExtent( m_strAccel + ,&nAccelWidth + ,&nAccelHeight + ); + *pWidth += nAccelWidth; + } + + // + // Add space at the end of the menu for the submenu expansion arrow + // this will also allow offsetting the accel string from the right edge + // + *pWidth += GetDefaultMarginWidth() * 1.5; + + // + // JACS: items still look too tightly packed, so adding 5 pixels. + // + (*pHeight) += 5; + + // + // Ray Gilbert's changes - Corrects the problem of a BMP + // being placed next to text in a menu item, and the BMP does + // not match the size expected by the system. This will + // resize the space so the BMP will fit. Without this, BMPs + // must be no larger or smaller than 16x16. + // + if (m_bmpChecked.Ok()) + { + // + // Is BMP height larger then text height? + // + size_t nAdjustedHeight = m_bmpChecked.GetHeight() + + wxSystemSettings::GetMetric(wxSYS_EDGE_Y); + if (*pHeight < nAdjustedHeight) + *pHeight = nAdjustedHeight; + + // + // Does BMP encroach on default check menu position? + // + size_t nAdjustedWidth = m_bmpChecked.GetWidth() + + (wxSystemSettings::GetMetric(wxSYS_EDGE_X) * 2); + + // + // Do we need to widen margin to fit BMP? + // + if ((size_t)GetMarginWidth() < nAdjustedWidth) + SetMarginWidth(nAdjustedWidth); + + // + // Add the size of the bitmap to our total size... + // + *pWidth += GetMarginWidth(); + } + + // + // Add the size of the bitmap to our total size - even if we don't have + // a bitmap we leave room for one... + // + *pWidth += GetMarginWidth(); + + // + // Make sure that this item is at least as + // tall as the user's system settings specify + // + if (*pHeight < m_nMinHeight) + *pHeight = m_nMinHeight; + m_nHeight = *pHeight; // remember height for use in OnDrawItem return TRUE; } // end of wxOwnerDrawn::OnMeasureItem diff --git a/src/os2/radiobox.cpp b/src/os2/radiobox.cpp index 01871f8e90..b0d640ae17 100644 --- a/src/os2/radiobox.cpp +++ b/src/os2/radiobox.cpp @@ -263,9 +263,7 @@ bool wxRadioBox::Create( , const wxString asChoices[] , int nMajorDim , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rVal -#endif , const wxString& rsName ) { @@ -288,9 +286,7 @@ bool wxRadioBox::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rVal -#endif ,rsName )) return FALSE; diff --git a/src/os2/radiobut.cpp b/src/os2/radiobut.cpp index 0b8784621c..540bb7deff 100644 --- a/src/os2/radiobut.cpp +++ b/src/os2/radiobut.cpp @@ -53,9 +53,7 @@ bool wxRadioButton::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -64,15 +62,27 @@ bool wxRadioButton::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName)) return FALSE; - long lSstyle = HasFlag(wxRB_GROUP) ? WS_GROUP : 0; + long lSstyle = WS_TABSTOP; - lSstyle |= BS_AUTORADIOBUTTON; + if (HasFlag(wxRB_GROUP)) + lSstyle |= WS_GROUP; + + // + // wxRB_SINGLE is a temporary workaround for the following problem: if you + // have 2 radiobuttons in the same group but which are not consecutive in + // the dialog, Windows can enter an infinite loop! The simplest way to + // reproduce it is to create radio button, then a panel and then another + // radio button: then checking the last button hangs the app. + // + // Ideally, we'd detect (and avoid) such situation automatically but for + // now, as I don't know how to do it, just allow the user to create + // BS_RADIOBUTTON buttons for such situations. + // + lSstyle |= HasFlag(wxRB_SINGLE) ? BS_RADIOBUTTON : BS_AUTORADIOBUTTON; if (HasFlag(wxCLIP_SIBLINGS)) lSstyle |= WS_CLIPSIBLINGS; @@ -148,18 +158,38 @@ bool wxRadioButton::OS2Command( , WXWORD wId ) { - if (wParam == BN_CLICKED) + if (wParam != BN_CLICKED) + return FALSE; + + if (m_bFocusJustSet) { + // + // See above: we want to ignore this event + // + m_bFocusJustSet = FALSE; + } + else + { + bool bIsChecked = GetValue(); + + if (HasFlag(wxRB_SINGLE)) + { + // + // When we use a "manual" radio button, we have to check the button + // ourselves -- but it's reset to unchecked state by the user code + // (presumably when another button is pressed) + // + if (!bIsChecked ) + SetValue(TRUE); + } wxCommandEvent rEvent( wxEVT_COMMAND_RADIOBUTTON_SELECTED ,m_windowId ); rEvent.SetEventObject(this); ProcessCommand(rEvent); - return TRUE; } - else - return FALSE; + return TRUE; } // end of wxRadioButton::OS2Command void wxRadioButton::SetFocus() @@ -190,6 +220,63 @@ void wxRadioButton::SetValue( ) { ::WinSendMsg((HWND)GetHWND(), BM_SETCHECK, (MPARAM)bValue, (MPARAM)0); + if (bValue) + { + const wxWindowList& rSiblings = GetParent()->GetChildren(); + wxWindowList::Node* pNodeThis = rSiblings.Find(this); + + wxCHECK_RET(pNodeThis, _T("radio button not a child of its parent?")); + + // + // Turn off all radio buttons before this one + // + for ( wxWindowList::Node* pNodeBefore = pNodeThis->GetPrevious(); + pNodeBefore; + pNodeBefore = pNodeBefore->GetPrevious() ) + { + wxRadioButton* pBtn = wxDynamicCast( pNodeBefore->GetData() + ,wxRadioButton + ); + if (!pBtn) + { + // + // The radio buttons in a group must be consecutive, so there + // are no more of them + // + break; + } + pBtn->SetValue(FALSE); + if (pBtn->HasFlag(wxRB_GROUP)) + { + // + // Even if there are other radio buttons before this one, + // they're not in the same group with us + // + break; + } + } + + // + // ... and all after this one + // + for (wxWindowList::Node* pNodeAfter = pNodeThis->GetNext(); + pNodeAfter; + pNodeAfter = pNodeAfter->GetNext()) + { + wxRadioButton* pBtn = wxDynamicCast( pNodeAfter->GetData() + ,wxRadioButton + ); + + if (!pBtn || pBtn->HasFlag(wxRB_GROUP) ) + { + // + // No more buttons or the first button of the next group + // + break; + } + pBtn->SetValue(FALSE); + } + } } // end of wxRadioButton::SetValue MRESULT wxRadioButton::OS2WindowProc( diff --git a/src/os2/scrolbar.cpp b/src/os2/scrolbar.cpp index e77bcbdb26..741bd991e3 100644 --- a/src/os2/scrolbar.cpp +++ b/src/os2/scrolbar.cpp @@ -22,252 +22,289 @@ IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) -BEGIN_EVENT_TABLE(wxScrollBar, wxControl) -#if WXWIN_COMPATIBILITY - EVT_SCROLL(wxScrollBar::OnScroll) -#endif -END_EVENT_TABLE() - - // Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, -#if wxUSE_VALIDATORS - const wxValidator& validator, -#endif - const wxString& name) +bool wxScrollBar::Create ( + wxWindow* pParent +, wxWindowID vId +, const wxPoint& rPos +, const wxSize& rSize +, long lStyle +, const wxValidator& rValidator +, const wxString& rsName +) { - if (!parent) + int nX = rPos.x; + int nY = rPos.y; + int nWidth = rSize.x; + int nHeight = rSize.y; + + if (!pParent) return FALSE; - parent->AddChild(this); - SetName(name); + pParent->AddChild(this); + SetName(rsName); #if wxUSE_VALIDATORS - SetValidator(validator); + SetValidator(rValidator); #endif + SetBackgroundColour(pParent->GetBackgroundColour()) ; + SetForegroundColour(pParent->GetForegroundColour()) ; - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - m_windowStyle = style; - - if ( id == -1 ) + if (vId == -1L) m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = vId; - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (width == -1) + if (nWidth == -1) { - if (style & wxHORIZONTAL) - width = 140; + if (lStyle & wxHORIZONTAL) + nWidth = 140; else - width = 14; + nWidth = 14; } - if (height == -1) + if (nHeight == -1) { - if (style & wxVERTICAL) - height = 140; + if (lStyle & wxVERTICAL) + nHeight = 140; else - height = 14; + nHeight = 14; } - // TODO create scrollbar + DWORD dwStyle = WS_VISIBLE; - m_pageSize = 1; - m_viewSize = 1; - m_objectSize = 1; + if (GetWindowStyleFlag() & wxCLIP_SIBLINGS) + dwStyle |= WS_CLIPSIBLINGS; - SetFont(parent->GetFont()); + DWORD dwDirection = (lStyle & wxHORIZONTAL) ? SBS_HORZ: SBS_VERT; - m_hWnd = 0; // TODO: (WXHWND)scroll_bar; + HWND hScrollBar = ::WinCreateWindow( (HWND)GetHwndOf(pParent) + ,WC_SCROLLBAR + ,(PSZ)NULL + ,dwDirection | dwStyle + ,0, 0, 0, 0 + ,(HWND)GetHwndOf(pParent) + ,HWND_TOP + ,(HMENU)m_windowId + ,NULL + ,NULL + ); - HWND scroll_bar = 0; // temporary + m_nPageSize = 1; + m_nViewSize = 1; + m_nObjectSize = 1; + ::WinSendMsg( hScrollBar + ,SBM_SETSCROLLBAR + ,(MPARAM)0 + ,MPFROM2SHORT(0,1) + ); + ::WinShowWindow( hScrollBar + ,TRUE + ); + SetFont(*wxSMALL_FONT); + m_hWnd = hScrollBar; + + // // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND) scroll_bar); - - SetSize(x, y, width, height); - + // + SubclassWin((WXHWND)hScrollBar); + SetSize( nX + ,nY + ,nWidth + ,nHeight + ); return TRUE; -} +} // end of wxScrollBar::Create wxScrollBar::~wxScrollBar() { } -bool wxScrollBar::OS2OnScroll(int WXUNUSED(orientation), WXWORD wParam, - WXWORD pos, WXHWND control) +bool wxScrollBar::OS2OnScroll ( + int nOrientation +, WXWORD wParam +, WXWORD wPos +, WXHWND hControl +) { - // TODO: -/* - int position = ::GetScrollPos((HWND) control, SB_CTL); - int minPos, maxPos; - ::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos); + int nPosition; + int nMaxPos; + int nTrackPos = wPos; + int nMinPos; + int nScrollInc; + wxEventType vScrollEvent = wxEVT_NULL; -#if defined(__WIN95__) + MRESULT vRange; + + // + // When we're dragging the scrollbar we can't use pos parameter because it + // is limited to 16 bits + // + if (wParam == SB_SLIDERPOSITION || wParam == SB_SLIDERTRACK) + { + SBCDATA vScrollInfo; + + vScrollInfo.sHilite = SB_SLIDERTRACK; + + ::WinSendMsg((HWND)GetHwnd(), WM_QUERYWINDOWPARAMS, (PVOID)&vScrollInfo, NULL); + + nTrackPos = vScrollInfo.posThumb; + nPosition = vScrollInfo.posFirst; + nMaxPos = vScrollInfo.posLast; + } + else + { + nPosition = (int)(MRESULT)::WinSendMsg((HWND)GetHwnd(), SBM_QUERYPOS, (MPARAM)NULL, (MPARAM)NULL); + vRange = ::WinSendMsg((HWND)GetHwnd(), SBM_QUERYRANGE, (MPARAM)NULL, (MPARAM)NULL); + nMinPos = SHORT1FROMMR(vRange); + nMaxPos = SHORT2FROMMR(vRange); + } + // // A page size greater than one has the effect of reducing the effective // range, therefore the range has already been boosted artificially - so // reduce it again. - if ( m_pageSize > 1 ) - maxPos -= (m_pageSize - 1); -#endif // __WIN95__ - - wxEventType scrollEvent = wxEVT_NULL; - - int nScrollInc; - switch ( wParam ) + // + if (m_nPageSize > 1) + nMaxPos -= (m_nPageSize - 1); + switch (wParam) { - case SB_TOP: - nScrollInc = maxPos - position; - scrollEvent = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - nScrollInc = - position; - scrollEvent = wxEVT_SCROLL_BOTTOM; - break; - case SB_LINEUP: - nScrollInc = -1; - scrollEvent = wxEVT_SCROLL_LINEUP; + nScrollInc = -1; + vScrollEvent = wxEVT_SCROLL_LINEUP; break; case SB_LINEDOWN: - nScrollInc = 1; - scrollEvent = wxEVT_SCROLL_LINEDOWN; + nScrollInc = 1; + vScrollEvent = wxEVT_SCROLL_LINEDOWN; break; case SB_PAGEUP: - nScrollInc = -GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEUP; + nScrollInc = -GetPageSize(); + vScrollEvent = wxEVT_SCROLL_PAGEUP; break; case SB_PAGEDOWN: - nScrollInc = GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEDOWN; + nScrollInc = GetPageSize(); + vScrollEvent = wxEVT_SCROLL_PAGEDOWN; break; - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - nScrollInc = pos - position; - scrollEvent = wxEVT_SCROLL_THUMBTRACK; + case SB_SLIDERTRACK: + nScrollInc = nTrackPos - nPosition; + vScrollEvent = wxEVT_SCROLL_THUMBTRACK; + break; + + case SB_ENDSCROLL: + nScrollInc = 0; + vScrollEvent = wxEVT_SCROLL_ENDSCROLL; break; default: nScrollInc = 0; } - - if ( nScrollInc == 0 ) + if (nScrollInc) { - // no event to process, so don't process it + nPosition += nScrollInc; + + if (nPosition < 0) + nPosition = 0; + if (nPosition > nMaxPos) + nPosition = nMaxPos; + SetThumbPosition(nPosition); + } + else if ( vScrollEvent != wxEVT_SCROLL_THUMBRELEASE && + vScrollEvent != wxEVT_SCROLL_ENDSCROLL + ) + { + // + // Don't process the event if there is no displacement, + // unless this is a thumb release or end scroll event. + // return FALSE; } - int new_pos = position + nScrollInc; + wxScrollEvent vEvent( vScrollEvent + ,m_windowId + ); - if (new_pos < 0) - new_pos = 0; - if (new_pos > maxPos) - new_pos = maxPos; + vEvent.SetPosition(nPosition); + vEvent.SetEventObject(this); + return GetEventHandler()->ProcessEvent(vEvent); +} // end of wxScrollBar::OS2OnScroll - SetThumbPosition(new_pos); - wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(new_pos); - event.SetEventObject( this ); - - return GetEventHandler()->ProcessEvent(event); -*/ - return FALSE; -} - -void wxScrollBar::SetThumbPosition(int viewStart) +void wxScrollBar::SetThumbPosition ( + int nViewStart +) { - // TODO -} + SBCDATA vInfo; + + memset(&vInfo, '\0', sizeof(SBCDATA)); + vInfo.cb = sizeof(SBCDATA); + vInfo.posThumb = nViewStart; + + ::WinSendMsg((HWND)GetHwnd(), WM_SETWINDOWPARAMS, (MPARAM)&vInfo, (MPARAM)NULL); + ::WinSendMsg((HWND)GetHwnd(), SBM_SETPOS, (MPARAM)nViewStart, (MPARAM)NULL); +} // end of wxScrollBar::SetThumbPosition int wxScrollBar::GetThumbPosition() const { - // TODO - return 0; -} + return((int)(MRESULT)::WinSendMsg((HWND)GetHwnd(), SBM_QUERYPOS, (MPARAM)NULL, (MPARAM)NULL)); +} // end of wxScrollBar::GetThumbPosition -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) +void wxScrollBar::SetScrollbar ( + int nPosition +, int nThumbSize +, int nRange +, int nPageSize +, bool bRefresh +) { - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; + SBCDATA vInfo; + // + // The lRange (number of scroll steps) is the + // object length minus the page size. + // + int nRange1 = wxMax((m_nObjectSize - m_nPageSize), 0); - // TODO -} + m_nViewSize = nPageSize; + m_nPageSize = nThumbSize; + m_nObjectSize = nRange; -#if WXWIN_COMPATIBILITY -void wxScrollBar::SetPageSize(int pageLength) -{ - m_pageSize = pageLength; - // TODO: -} - -void wxScrollBar::SetObjectLength(int objectLength) -{ - m_objectSize = objectLength; - - // The range (number of scroll steps) is the - // object length minus the view size. - int range = wxMax((objectLength - m_viewSize), 0) ; - - // TODO: -} - -void wxScrollBar::SetViewLength(int viewLength) -{ - m_viewSize = viewLength; -} - -void wxScrollBar::GetValues(int *viewStart, int *viewLength, int *objectLength, - int *pageLength) const -{ -// TODO: -/* - *viewStart = ::GetScrollPos((HWND)m_hWnd, SB_CTL); - *viewLength = m_viewSize; - *objectLength = m_objectSize; - *pageLength = m_pageSize; -*/ -} -#endif - -WXHBRUSH wxScrollBar::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - return 0; -} - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetThumbPosition(event.m_commandInt); - ProcessCommand(event); -} - -#if WXWIN_COMPATIBILITY -// Backward compatibility -void wxScrollBar::OnScroll(wxScrollEvent& event) -{ - // TODO: -/* - wxEventType oldEvent = event.GetEventType(); - event.SetEventType( wxEVT_COMMAND_SCROLLBAR_UPDATED ); - if ( !GetEventHandler()->ProcessEvent(event) ) + // + // Try to adjust the lRange to cope with page size > 1 + // (see comment for SetPageLength) + // + if (m_nPageSize > 1 ) { - event.SetEventType( oldEvent ); - if (!GetParent()->GetEventHandler()->ProcessEvent(event)) - event.Skip(); + nRange1 += (m_nPageSize - 1); } -*/ -} -#endif + vInfo.cb = sizeof(SBCDATA); + vInfo.cVisible = m_nPageSize; + vInfo.posFirst = 0; + vInfo.posLast = nRange1; + vInfo.posThumb = nPosition; + + ::WinSendMsg((HWND)GetHwnd(), WM_SETWINDOWPARAMS, (MPARAM)&vInfo, (MPARAM)NULL); +} // end of wxScrollBar::SetScrollbar + +WXHBRUSH wxScrollBar::OnCtlColor ( + WXHDC hDC +, WXHWND hWnd +, WXUINT uCtlColor +, WXUINT uMessage +, WXWPARAM wParam +, WXLPARAM lParam +) +{ + // + // Does nothing under OS/2 + // + return 0; +} // end of wxScrollBar::OnCtlColor + +void wxScrollBar::Command ( + wxCommandEvent& rEvent +) +{ + SetThumbPosition(rEvent.m_commandInt); + ProcessCommand(rEvent); +} // end of wxScrollBar::Command + diff --git a/src/os2/slider.cpp b/src/os2/slider.cpp index c8584fc44f..0a6eb8f985 100644 --- a/src/os2/slider.cpp +++ b/src/os2/slider.cpp @@ -204,9 +204,7 @@ bool wxSlider::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { diff --git a/src/os2/statbox.cpp b/src/os2/statbox.cpp index 998c4d9dd3..a30d967d59 100644 --- a/src/os2/statbox.cpp +++ b/src/os2/statbox.cpp @@ -39,9 +39,7 @@ bool wxStaticBox::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,wxDefaultValidator -#endif ,rsName )) { diff --git a/src/os2/textctrl.cpp b/src/os2/textctrl.cpp index 9d38365087..3b2b97719a 100644 --- a/src/os2/textctrl.cpp +++ b/src/os2/textctrl.cpp @@ -86,6 +86,10 @@ wxTextCtrl::wxTextCtrl() { } +wxTextCtrl::~wxTextCtrl() +{ +} + bool wxTextCtrl::Create( wxWindow* pParent , wxWindowID vId @@ -93,9 +97,7 @@ bool wxTextCtrl::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -110,9 +112,7 @@ bool wxTextCtrl::Create( ,rPos ,rSize ,lStyle -#if wxUSE_VALIDATORS ,rValidator -#endif ,rsName )) return FALSE; @@ -1171,9 +1171,11 @@ void wxTextCtrl::AdjustSpaceLimit() bool wxTextCtrl::AcceptsFocus() const { // - // We don't want focus if we can't be edited + // We don't want focus if we can't be edited unless we're a multiline + // control because then it might be still nice to get focus from keyboard + // to be able to scroll it without mouse // - return IsEditable() && wxControl::AcceptsFocus(); + return (IsEditable() || IsMultiLine()) && wxControl::AcceptsFocus(); } // end of wxTextCtrl::Command wxSize wxTextCtrl::DoGetBestSize() const @@ -1233,6 +1235,29 @@ void wxTextCtrl::OnRedo( Redo(); } // end of wxTextCtrl::OnRedo +void wxTextCtrl::OnDelete( + wxCommandEvent& rEvent +) +{ + long lFrom; + long lTo; + + GetSelection( &lFrom + ,&lTo + ); + if (lFrom != -1 && lTo != -1) + Remove( lFrom + ,lTo + ); +} // end of wxTextCtrl::OnDelete + +void wxTextCtrl::OnSelectAll( + wxCommandEvent& rEvent +) +{ + SetSelection(-1, -1); +} // end of wxTextCtrl::OnSelectAll + void wxTextCtrl::OnUpdateCut( wxUpdateUIEvent& rEvent ) @@ -1268,6 +1293,26 @@ void wxTextCtrl::OnUpdateRedo( rEvent.Enable(CanRedo()); } // end of wxTextCtrl::OnUpdateRedo +void wxTextCtrl::OnUpdateDelete( + wxUpdateUIEvent& rEvent +) +{ + long lFrom; + long lTo; + + GetSelection( &lFrom + ,&lTo + ); + rEvent.Enable( lFrom != -1L && lTo != -1L && lFrom != lTo && IsEditable()) ; +} // end of wxTextCtrl::OnUpdateDelete + +void wxTextCtrl::OnUpdateSelectAll( + wxUpdateUIEvent& rEvent +) +{ + rEvent.Enable(GetLastPosition() > 0); +} // end of wxTextCtrl::OnUpdateSelectAll + bool wxTextCtrl::SetBackgroundColour( const wxColour& rColour ) diff --git a/src/os2/thread.cpp b/src/os2/thread.cpp index db6ba06510..ad67a34b11 100644 --- a/src/os2/thread.cpp +++ b/src/os2/thread.cpp @@ -9,6 +9,10 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#ifdef __GNUG__ + #pragma implementation "thread.h" +#endif + // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- @@ -30,8 +34,9 @@ #define INCL_DOSPROCESS #define INCL_ERRORS #include +#ifndef __EMX__ #include - +#endif // the possible states of the thread ("=>" shows all possible transitions from // this state) enum wxThreadState diff --git a/src/os2/toplevel.cpp b/src/os2/toplevel.cpp index badfc61835..f30cb9c990 100644 --- a/src/os2/toplevel.cpp +++ b/src/os2/toplevel.cpp @@ -37,6 +37,7 @@ #include "wx/frame.h" #include "wx/control.h" #include "wx/containr.h" // wxSetFocusToChild() + #include "wx/module.h" // wxSetFocusToChild() #endif //WX_PRECOMP #include "wx/os2/private.h" @@ -97,6 +98,40 @@ MRESULT EXPENTRY wxDlgProc( HWND WXUNUSED(hWnd) } } // end of wxDlgProc +// ---------------------------------------------------------------------------- +// wxTLWHiddenParentModule: used to manage the hidden parent window (we need a +// module to ensure that the window is always deleted) +// ---------------------------------------------------------------------------- + +class wxTLWHiddenParentModule : public wxModule +{ +public: + // + // Module init/finalize + // + virtual bool OnInit(void); + virtual void OnExit(void); + + // + // Get the hidden window (creates on demand) + // + static HWND GetHWND(void); + +private: + // + // The HWND of the hidden parent + // + static HWND m_shWnd; + + // + // The class used to create it + // + static const wxChar* m_szClassName; + DECLARE_DYNAMIC_CLASS(wxTLWHiddenParentModule) +}; // end of CLASS wxTLWHiddenParentModule + +IMPLEMENT_DYNAMIC_CLASS(wxTLWHiddenParentModule, wxModule) + // ---------------------------------------------------------------------------- // wxTopLevelWindowOS2 creation // ---------------------------------------------------------------------------- @@ -235,42 +270,44 @@ WXDWORD wxTopLevelWindowOS2::OS2GetStyle( WXHWND wxTopLevelWindowOS2::OS2GetParent() const { + HWND hWndParent = NULL; + // // For the frames without wxFRAME_FLOAT_ON_PARENT style we should use NULL // parent HWND or it would be always on top of its parent which is not what // we usually want (in fact, we only want it for frames with the // wxFRAME_FLOAT_ON_PARENT flag) // - wxWindow* pParent; - if (HasFlag(wxFRAME_FLOAT_ON_PARENT) ) { - pParent = GetParent(); + const wxWindow* pParent = GetParent(); - // this flag doesn't make sense then and will be ignored - wxASSERT_MSG( pParent, - _T("wxFRAME_FLOAT_ON_PARENT but no parent?") ); - } - else // don't float on parent, must not be owned - { - pParent = NULL; - } - if (HasFlag(wxFRAME_NO_TASKBAR) && !pParent) - { - if (!m_spHiddenParent) + if (!pParent) { - m_spHiddenParent = new wxTopLevelWindowOS2(NULL, -1, _T("")); - // - // We shouldn't leave it in wxTopLevelWindows or we wouldn't - // terminate the app when the last user-created frame is deleted -- - // see ~wxTopLevelWindowMSW + // This flag doesn't make sense then and will be ignored // - wxTopLevelWindows.DeleteObject(m_spHiddenParent); + wxFAIL_MSG( _T("wxFRAME_FLOAT_ON_PARENT but no parent?") ); + } + else + { + hWndParent = GetHwndOf(pParent); } - pParent = m_spHiddenParent; } - return pParent ? pParent->GetHWND() : NULL; + //else: don't float on parent, must not be owned + + // + // Now deal with the 2nd taskbar-related problem (see comments above in + // OS2GetStyle()) + // + if (HasFlag(wxFRAME_NO_TASKBAR) && !hWndParent) + { + // + // Use hidden parent + // + hWndParent = wxTLWHiddenParentModule::GetHWND(); + } + return (WXHWND)hWndParent; } // end of wxTopLevelWindowOS2::OS2GetParent bool wxTopLevelWindowOS2::CreateDialog( @@ -327,9 +364,9 @@ bool wxTopLevelWindowOS2::CreateDialog( if ( !m_hWnd ) { - wxFAIL_MSG(_("Did you forget to include wx/os2/wx.rc in your resources?")); + wxFAIL_MSG(wxT("Did you forget to include wx/os2/wx.rc in your resources?")); - wxLogSysError(_("Can't create dialog using template '%ul'"), ulDlgTemplate); + wxLogSysError(wxT("Can't create dialog using template '%ul'"), ulDlgTemplate); return FALSE; } @@ -593,17 +630,6 @@ bool wxTopLevelWindowOS2::Create( wxTopLevelWindowOS2::~wxTopLevelWindowOS2() { - if (this == m_spHiddenParent) - { - // - // Stop [infinite] recursion which would otherwise happen when we do - // "delete ms_hiddenParent" below -- and we're not interested in doing - // anything of the rest below for that window because the rest of - // wxWindows doesn't even know about it - // - return; - } - if (wxModelessWindows.Find(this)) wxModelessWindows.DeleteObject(this); @@ -626,19 +652,6 @@ wxTopLevelWindowOS2::~wxTopLevelWindowOS2() ); } } - - // - // If this is the last top-level window, we're going to exit and we should - // delete ms_hiddenParent now to avoid leaking it - // - if (IsLastBeforeExit()) - { - if (m_spHiddenParent) - { - delete m_spHiddenParent; - m_spHiddenParent = NULL; - } - } } // end of wxTopLevelWindowOS2::~wxTopLevelWindowOS2 // ---------------------------------------------------------------------------- @@ -706,6 +719,14 @@ bool wxTopLevelWindowOS2::Show( SWP vSwp; RECTL vRect; + if (bShow != IsShown() ) + { + m_isShown = bShow; + } + else + { + return FALSE; + } if (bShow) { if (m_bMaximizeOnShow) @@ -1023,3 +1044,75 @@ bool wxTopLevelWindowOS2::EnableCloseButton( return TRUE; } // end of wxTopLevelWindowOS2::EnableCloseButton +// ============================================================================ +// wxTLWHiddenParentModule implementation +// ============================================================================ + +HWND wxTLWHiddenParentModule::m_shWnd = NULL; +const wxChar* wxTLWHiddenParentModule::m_szClassName = NULL; + +bool wxTLWHiddenParentModule::OnInit() +{ + m_shWnd = NULL; + m_szClassName = NULL; + return TRUE; +} // end of wxTLWHiddenParentModule::OnInit + +void wxTLWHiddenParentModule::OnExit() +{ + if (m_shWnd) + { + if (!::WinDestroyWindow(m_shWnd)) + { + wxLogLastError(_T("DestroyWindow(hidden TLW parent)")); + } + m_shWnd = NULL; + } + + m_szClassName = NULL; +} // end of wxTLWHiddenParentModule::OnExit + +/* static */ +HWND wxTLWHiddenParentModule::GetHWND() +{ + if (!m_shWnd) + { + if (!m_szClassName) + { + static const wxChar* zHIDDEN_PARENT_CLASS = _T("wxTLWHiddenParent"); + + if (!::WinRegisterClass( wxGetInstance() + ,zHIDDEN_PARENT_CLASS + ,NULL + ,0 + ,sizeof(ULONG) + )) + { + wxLogLastError(_T("RegisterClass(\"wxTLWHiddenParent\")")); + } + else + { + m_szClassName = zHIDDEN_PARENT_CLASS; + } + } + m_shWnd = ::WinCreateWindow( HWND_DESKTOP + ,m_szClassName + ,"" + ,0L + ,(LONG)0L + ,(LONG)0L + ,(LONG)0L + ,(LONG)0L + ,NULLHANDLE + ,HWND_TOP + ,0L + ,NULL + ,NULL + ); + if (!m_shWnd) + { + wxLogLastError(_T("CreateWindow(hidden TLW parent)")); + } + } + return m_shWnd; +} // end of wxTLWHiddenParentModule::GetHWND diff --git a/src/os2/utils.cpp b/src/os2/utils.cpp index 4ff213b9de..c2c6d6ef20 100644 --- a/src/os2/utils.cpp +++ b/src/os2/utils.cpp @@ -282,7 +282,7 @@ void wxUsleep( unsigned long ulMilliseconds ) { - ::DosSleep(ulMilliseconds/1000l); + ::DosSleep(ulMilliseconds); } void wxSleep( @@ -710,7 +710,7 @@ wxChar* wxGetUserHome ( if ((zHome = wxGetenv(_T("HOME"))) != NULL) { wxStrcpy(wxBuffer, zHome); - Unix2DosFilename(wxBuffer); + wxUnix2DosFilename(wxBuffer); wxStrcpy(zHome, wxBuffer); delete[] wxBuffer; return zHome; diff --git a/src/os2/window.cpp b/src/os2/window.cpp index 3c6e0b747e..88965e664a 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -33,6 +33,7 @@ #include "wx/frame.h" #include "wx/listbox.h" #include "wx/button.h" + #include "wx/bmpbuttn.h" #include "wx/msgdlg.h" #include "wx/scrolwin.h" #include "wx/radiobox.h" @@ -2233,6 +2234,8 @@ static void wxYieldForCommandsOnly() { wxTheApp->DoMessage((WXMSG*)&vMsg); } + if (vMsg.msg == WM_QUIT) + ::WinPostMsg(NULL, WM_QUIT, 0, 0); } #endif // wxUSE_MENUS_NATIVE @@ -2426,6 +2429,14 @@ bool wxWindowOS2::OS2ProcessMessage( pBtn->OS2Command(BN_CLICKED, 0 /* unused */); return TRUE; } + else if (!IsTopLevel()) + { + // + // if not a top level window, let parent + // handle it + // + return FALSE; + } // else: but if it does not it makes sense to make // it work like a TAB - and that's what we do. // Note that Ctrl-Enter always works this way. @@ -2814,6 +2825,11 @@ MRESULT wxWindowOS2::OS2WindowProc( ,&nX ,&nY ); + if (!pWin->IsOfStandardClass()) + { + if (uMsg == WM_BUTTON1DOWN && pWin->AcceptsFocus() ) + pWin->SetFocus(); + } bProcessed = pWin->HandleMouseEvent( uMsg ,nX ,nY @@ -3505,7 +3521,7 @@ bool wxWindowOS2::HandleCreate( bool wxWindowOS2::HandleDestroy() { wxWindowDestroyEvent vEvent((wxWindow*)this); - + vEvent.SetId(GetId()); (void)GetEventHandler()->ProcessEvent(vEvent); // diff --git a/src/os2/wx23.def b/src/os2/wx24.def similarity index 98% rename from src/os2/wx23.def rename to src/os2/wx24.def index fefe5ab4c4..ac4d785b34 100644 --- a/src/os2/wx23.def +++ b/src/os2/wx24.def @@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL CODE LOADONCALL EXPORTS -;From library: F:\DEV\WX2\WXWINDOWS\LIB\wx.lib +;From library: H:\DEV\WX24\WXWINDOWS\LIB\wx.lib ;From object file: dummy.cpp ;PUBDEFs (Symbols available from object file): wxDummyChar @@ -44,13 +44,11 @@ EXPORTS ;From object file: ..\common\artstd.cpp ;PUBDEFs (Symbols available from object file): g_ArtProviderModule - ;wxDefaultArtProviderModule::sm_classwxDefaultArtProviderModule - sm_classwxDefaultArtProviderModule__26wxDefaultArtProviderModule __vft20wxDefaultArtProvider8wxObject ;wxDefaultArtProvider::CreateBitmap(const wxString&,const wxString&,const wxSize&) CreateBitmap__20wxDefaultArtProviderFRC8wxStringT1RC6wxSize - ;wxConstructorForwxDefaultArtProviderModule() - wxConstructorForwxDefaultArtProviderModule__Fv + ;wxArtProvider::InitStdProvider() + InitStdProvider__13wxArtProviderFv ;From object file: ..\common\appcmn.cpp ;PUBDEFs (Symbols available from object file): ;wxAssert(int,const char*,int,const char*,const char*) @@ -327,6 +325,10 @@ EXPORTS __ct__18wxCommandProcessorFi ;wxConstructorForwxCommandProcessor() wxConstructorForwxCommandProcessor__Fv + ;wxCommandProcessor::GetUndoMenuLabel() const + GetUndoMenuLabel__18wxCommandProcessorCFv + ;wxCommandProcessor::GetRedoMenuLabel() const + GetRedoMenuLabel__18wxCommandProcessorCFv ;wxCommandProcessor::DoCommand(wxCommand&) DoCommand__18wxCommandProcessorFR9wxCommand ;wxCommand::sm_classwxCommand @@ -608,10 +610,12 @@ EXPORTS DoEmpty__15wxDateTimeArrayFv ;wxDateTime::Add(const wxTimeSpan&) const Add__10wxDateTimeCFRC10wxTimeSpan - ;wxDateTime::SetMinute(unsigned short) - SetMinute__10wxDateTimeFUs + ;wxDateTime::SetToWeekDayInSameWeek(wxDateTime::WeekDay,wxDateTime::WeekFlags) + SetToWeekDayInSameWeek__10wxDateTimeFQ2_10wxDateTime7WeekDayQ2_10wxDateTime9WeekFlags ;wxDateTime::SetSecond(unsigned short) SetSecond__10wxDateTimeFUs + ;wxDateTime::SetMinute(unsigned short) + SetMinute__10wxDateTimeFUs ;wxDateTime::MakeTimezone(const wxDateTime::TimeZone&,unsigned long) MakeTimezone__10wxDateTimeFRCQ2_10wxDateTime8TimeZoneUl ;wxTimeSpan::wxTimeSpan(long,long,long,long) @@ -648,10 +652,12 @@ EXPORTS GetCurrentYear__10wxDateTimeFQ2_10wxDateTime8Calendar ;wxDateSpan::Add(const wxDateSpan&) Add__10wxDateSpanFRC10wxDateSpan - ;wxDateTime::SetDay(unsigned short) - SetDay__10wxDateTimeFUs + ;wxDateTime::SetToTheWeek(unsigned short,wxDateTime::WeekDay,wxDateTime::WeekFlags) + SetToTheWeek__10wxDateTimeFUsQ2_10wxDateTime7WeekDayQ2_10wxDateTime9WeekFlags ;wxDateTime::SetHour(unsigned short) SetHour__10wxDateTimeFUs + ;wxDateTime::SetDay(unsigned short) + SetDay__10wxDateTimeFUs ;wxDateTime::wxDateTime(long) __ct__10wxDateTimeFl ;wxDateTime::Set(double) @@ -684,8 +690,6 @@ EXPORTS IsEqualTo__10wxDateTimeCFRC10wxDateTime ;wxDateTime::IsBetween(const wxDateTime&,const wxDateTime&) const IsBetween__10wxDateTimeCFRC10wxDateTimeT1 - ;wxDateTime::GetWeek(unsigned short,wxDateTime::WeekDay) const - GetWeek__10wxDateTimeCFUsQ2_10wxDateTime7WeekDay ;wxDateTime::GetLastWeekDay(wxDateTime::WeekDay,wxDateTime::Month,int) GetLastWeekDay__10wxDateTimeFQ2_10wxDateTime7WeekDayQ2_10wxDateTime5Monthi ;wxDateTime::GetEndDST(int,wxDateTime::Country) @@ -733,10 +737,6 @@ EXPORTS TIME_T_FACTOR__10wxDateTime ;wxDateTime::Subtract(const wxDateTime&) const Subtract__10wxDateTimeCFRC10wxDateTime - ;wxDateTime::SetToWeekDayInSameWeek(wxDateTime::WeekDay) - SetToWeekDayInSameWeek__10wxDateTimeFQ2_10wxDateTime7WeekDay - ;wxDateTime::SetToTheWeek(unsigned short,wxDateTime::WeekDay) - SetToTheWeek__10wxDateTimeFUsQ2_10wxDateTime7WeekDay ;wxDateTime::SetToPrevWeekDay(wxDateTime::WeekDay) SetToPrevWeekDay__10wxDateTimeFQ2_10wxDateTime7WeekDay ;wxDateTime::IsSameTime(const wxDateTime&) const @@ -777,8 +777,8 @@ EXPORTS Add__10wxDateTimeFRC10wxTimeSpan ;wxDateTime::Add(const wxDateSpan&) const Add__10wxDateTimeCFRC10wxDateSpan - ;wxDateTime::GetMonthName(wxDateTime::Month,wxDateTime::NameFlags) - GetMonthName__10wxDateTimeFQ2_10wxDateTime5MonthQ2_10wxDateTime9NameFlags + ;wxDateTime::GetWeek(unsigned short,wxDateTime::WeekDay,wxDateTime::WeekFlags) const + GetWeek__10wxDateTimeCFUsQ2_10wxDateTime7WeekDayQ2_10wxDateTime9WeekFlags ;wxDateTime::SetMillisecond(unsigned short) SetMillisecond__10wxDateTimeFUs ;wxDateTime::ParseDate(const char*) @@ -787,10 +787,14 @@ EXPORTS ParseDateTime__10wxDateTimeFPCc ;wxDateTime::GetWeekDayName(wxDateTime::WeekDay,wxDateTime::NameFlags) GetWeekDayName__10wxDateTimeFQ2_10wxDateTime7WeekDayQ2_10wxDateTime9NameFlags + ;wxDateTime::GetMonthName(wxDateTime::Month,wxDateTime::NameFlags) + GetMonthName__10wxDateTimeFQ2_10wxDateTime5MonthQ2_10wxDateTime9NameFlags ;wxDateTime::Set(long) Set__10wxDateTimeFl ;wxDateTime::ToTimezone(const wxDateTime::TimeZone&,unsigned long) const ToTimezone__10wxDateTimeCFRCQ2_10wxDateTime8TimeZoneUl + ;wxDateTime::SetFromDOS(unsigned long) + SetFromDOS__10wxDateTimeFUl ;wxDateTimeArray::Index(const wxDateTime&,unsigned long) const Index__15wxDateTimeArrayCFRC10wxDateTimeUl ;wxDateTime::wxDateTime(unsigned short,wxDateTime::Month,int,unsigned short,unsigned short,unsigned short,unsigned short) @@ -810,8 +814,6 @@ EXPORTS IsEarlierThan__10wxDateTimeCFRC10wxDateTime ;wxDateTime::GetWeekOfMonth(wxDateTime::WeekFlags,const wxDateTime::TimeZone&) const GetWeekOfMonth__10wxDateTimeCFQ2_10wxDateTime9WeekFlagsRCQ2_10wxDateTime8TimeZone - ;wxDateTime::GetWeekDayInSameWeek(wxDateTime::WeekDay) const - GetWeekDayInSameWeek__10wxDateTimeCFQ2_10wxDateTime7WeekDay ;wxDateTimeArray::DoCopy(const wxDateTimeArray&) DoCopy__15wxDateTimeArrayFRC15wxDateTimeArray ;wxDateTime::IsInStdRange() const @@ -838,16 +840,20 @@ EXPORTS GetValue__10wxDateTimeCFv ;wxDateTime::GetRataDie() const GetRataDie__10wxDateTimeCFv + ;wxDateTime::GetAsDOS() const + GetAsDOS__10wxDateTimeCFv ;wxTimeSpan::Add(const wxTimeSpan&) const Add__10wxTimeSpanCFRC10wxTimeSpan ;wxDateTime::Add(const wxDateSpan&) Add__10wxDateTimeFRC10wxDateSpan ;wxTimeSpan::Abs() const Abs__10wxTimeSpanCFv - ;wxDateTime::GetYearDay(unsigned short) const - GetYearDay__10wxDateTimeCFUs + ;wxDateTime::GetWeekDayInSameWeek(wxDateTime::WeekDay,wxDateTime::WeekFlags) const + GetWeekDayInSameWeek__10wxDateTimeCFQ2_10wxDateTime7WeekDayQ2_10wxDateTime9WeekFlags ;wxDateTime::SetToYearDay(unsigned short) SetToYearDay__10wxDateTimeFUs + ;wxDateTime::GetYearDay(unsigned short) const + GetYearDay__10wxDateTimeCFUs ;wxTimeSpan::Format(const char*) const Format__10wxTimeSpanCFPCc ;From object file: ..\common\datstrm.cpp @@ -1848,6 +1854,8 @@ EXPORTS sm_classwxEvent__7wxEvent ;wxEraseEvent::sm_classwxEraseEvent sm_classwxEraseEvent__12wxEraseEvent + ;wxKeyEvent::wxKeyEvent(const wxKeyEvent&) + __ct__10wxKeyEventFRC10wxKeyEvent ;wxEvtHandler::SearchEventTable(wxEventTable&,wxEvent&) SearchEventTable__12wxEvtHandlerFR12wxEventTableR7wxEvent ;wxEvtHandler::ProcessEvent(wxEvent&) @@ -1965,7 +1973,7 @@ EXPORTS wxEVT_NC_LEFT_DCLICK wxEVT_INIT_DIALOG wxEVT_COMMAND_SET_FOCUS - ;From object file: F:\DEV\WX2\WXWINDOWS\src\common\extended.c + ;From object file: H:\DEV\WX24\WXWINDOWS\src\common\extended.c ;PUBDEFs (Symbols available from object file): ConvertToIeeeExtended ConvertFromIeeeExtended @@ -2256,10 +2264,10 @@ EXPORTS GetTimes__10wxFileNameCFP10wxDateTimeN21 ;wxFileName::Clear() Clear__10wxFileNameFv - ;wxFileName::wxFileExists() - wxFileExists__10wxFileNameFv ;wxFileName::GetFullName() const GetFullName__10wxFileNameCFv + ;wxFileName::DirExists() + DirExists__10wxFileNameFv ;wxFileName::AssignHomeDir() AssignHomeDir__10wxFileNameFv ;wxFileName::PrependDir(const wxString&) @@ -2276,26 +2284,26 @@ EXPORTS Touch__10wxFileNameFv ;wxFileName::FileName(const wxString&) FileName__10wxFileNameFRC8wxString - ;wxFileName::wxPathExists(const wxString&) - wxPathExists__10wxFileNameFRC8wxString ;wxFileName::SetFullName(const wxString&) SetFullName__10wxFileNameFRC8wxString ;wxFileName::GetCwd(const wxString&) GetCwd__10wxFileNameFRC8wxString + ;wxFileName::DirExists(const wxString&) + DirExists__10wxFileNameFRC8wxString ;wxFileName::AssignCwd(const wxString&) AssignCwd__10wxFileNameFRC8wxString ;wxFileName::Assign(const wxString&,const wxString&,const wxString&,const wxString&,wxPathFormat) Assign__10wxFileNameFRC8wxStringN3112wxPathFormat - ;wxFileName::SameAs(const wxFileName&,wxPathFormat) - SameAs__10wxFileNameFRC10wxFileName12wxPathFormat + ;wxFileName::SameAs(const wxFileName&,wxPathFormat) const + SameAs__10wxFileNameCFRC10wxFileName12wxPathFormat ;wxFileName::IsAbsolute(wxPathFormat) const IsAbsolute__10wxFileNameCF12wxPathFormat ;wxFileName::GetVolumeSeparator(wxPathFormat) GetVolumeSeparator__10wxFileNameF12wxPathFormat ;wxFileName::RemoveDir(int) RemoveDir__10wxFileNameFi - ;wxFileName::wxPathExists() - wxPathExists__10wxFileNameFv + ;wxFileName::FileExists() + FileExists__10wxFileNameFv ;wxFileName::SetCwd() SetCwd__10wxFileNameFv ;wxFileName::GetShortPath() const @@ -2320,8 +2328,6 @@ EXPORTS Rmdir__10wxFileNameFv ;wxFileName::GetLongPath() const GetLongPath__10wxFileNameCFv - ;wxFileName::wxFileExists(const wxString&) - wxFileExists__10wxFileNameFRC8wxString ;wxFileName::InsertDir(int,const wxString&) InsertDir__10wxFileNameFiRC8wxString ;wxFileName::Assign(const wxString&,const wxString&,wxPathFormat) @@ -2346,6 +2352,8 @@ EXPORTS SetCwd__10wxFileNameFRC8wxString ;wxFileName::Rmdir(const wxString&) Rmdir__10wxFileNameFRC8wxString + ;wxFileName::FileExists(const wxString&) + FileExists__10wxFileNameFRC8wxString ;From object file: ..\common\filesys.cpp ;PUBDEFs (Symbols available from object file): __vft19wxFileSystemHandler8wxObject @@ -2360,6 +2368,8 @@ EXPORTS ms_root__16wxLocalFSHandler ;wxFileSystemHandler::GetMimeTypeFromExt(const wxString&) GetMimeTypeFromExt__19wxFileSystemHandlerFRC8wxString + ;wxFileSystem::URLToFileName(const wxString&) + URLToFileName__12wxFileSystemFRC8wxString ;wxFSFile::sm_classwxFSFile sm_classwxFSFile__8wxFSFile ;wxFileSystemModule::sm_classwxFileSystemModule @@ -2372,6 +2382,8 @@ EXPORTS CleanUpHandlers__12wxFileSystemFv ;wxFileSystemHandler::GetLeftLocation(const wxString&) const GetLeftLocation__19wxFileSystemHandlerCFRC8wxString + ;wxFileSystem::FileNameToURL(const wxFileName&) + FileNameToURL__12wxFileSystemFRC10wxFileName ;wxConstructorForwxFileSystem() wxConstructorForwxFileSystem__Fv ;wxFileSystemHandler::GetProtocol(const wxString&) const @@ -2623,8 +2635,8 @@ EXPORTS Close__5wxFTPFv ;wxFTP::MkDir(const wxString&) MkDir__5wxFTPFRC8wxString - ;wxFTP::wxFileExists(const wxString&) - wxFileExists__5wxFTPFRC8wxString + ;wxFTP::FileExists(const wxString&) + FileExists__5wxFTPFRC8wxString ;wxFTP::Rename(const wxString&,const wxString&) Rename__5wxFTPFRC8wxStringT1 ;wxFTP::wxFTP() @@ -2813,6 +2825,8 @@ EXPORTS Union__14wxRect2DDoubleFRC14wxRect2DDoubleT1P14wxRect2DDouble ;wxRect2DDouble::Intersects(const wxRect2DDouble&) const Intersects__14wxRect2DDoubleCFRC14wxRect2DDouble + ;wxPoint2DInt::GetVectorAngle() const + GetVectorAngle__12wxPoint2DIntCFv ;wxRect2DInt::Union(const wxRect2DInt&,const wxRect2DInt&,wxRect2DInt*) Union__11wxRect2DIntFRC11wxRect2DIntT1P11wxRect2DInt ;wxPoint2DInt::SetVectorAngle(double) @@ -2827,8 +2841,6 @@ EXPORTS Intersects__11wxRect2DIntCFRC11wxRect2DInt ;wxPoint2DInt::WriteTo(wxDataOutputStream&) const WriteTo__12wxPoint2DIntCFR18wxDataOutputStream - ;wxPoint2DInt::GetVectorAngle() - GetVectorAngle__12wxPoint2DIntFv ;From object file: ..\common\gifdecod.cpp ;PUBDEFs (Symbols available from object file): ;wxGIFDecoder::wxGIFDecoder(wxInputStream*,unsigned long) @@ -3739,6 +3751,8 @@ EXPORTS Flush__10wxLogChainFv ;wxVLogTrace(const char*,char*) wxVLogTrace__FPCcPc + ;wxLog::ms_logLevel + ms_logLevel__5wxLog ;wxLog::ms_doLog ms_doLog__5wxLog ;wxLog::SetActiveTarget(wxLog*) @@ -5125,9 +5139,11 @@ EXPORTS SetScreenType__16wxSystemSettingsF18wxSystemScreenType ;From object file: ..\common\sizer.cpp ;PUBDEFs (Symbols available from object file): + ;wxSizer::Show(wxSizer*,unsigned long) + Show__7wxSizerFP7wxSizerUl + __vft11wxGridSizer8wxObject ;wxSizerItem::wxSizerItem(int,int,int,int,int,wxObject*) __ct__11wxSizerItemFiN41P8wxObject - __vft11wxGridSizer8wxObject ;wxSizerItem::wxSizerItem(wxSizer*,int,int,int,wxObject*) __ct__11wxSizerItemFP7wxSizeriN22P8wxObject ;wxSizer::Insert(int,wxSizer*,int,int,int,wxObject*) @@ -5198,6 +5214,8 @@ EXPORTS RecalcSizes__16wxStaticBoxSizerFv ;wxSizerItem::IsWindow() IsWindow__11wxSizerItemFv + ;wxSizer::IsShown(wxSizer*) + IsShown__7wxSizerFP7wxSizer ;wxSizerItem::GetSize() GetSize__11wxSizerItemFv ;wxNotebookSizer::CalcMin() @@ -5208,10 +5226,14 @@ EXPORTS Remove__7wxSizerFP8wxWindow ;wxSizer::FitSize(wxWindow*) FitSize__7wxSizerFP8wxWindow - ;wxSizer::Clear(unsigned long) - Clear__7wxSizerFUl + ;wxSizer::Show(wxWindow*,unsigned long) + Show__7wxSizerFP8wxWindowUl __vft7wxSizer8wxObject __vft15wxNotebookSizer8wxObject + ;wxSizer::ShowItems(unsigned long) + ShowItems__7wxSizerFUl + ;wxSizer::Clear(unsigned long) + Clear__7wxSizerFUl ;wxSizer::Remove(int) Remove__7wxSizerFi ;wxSizer::GetMinSize() @@ -5258,6 +5280,8 @@ EXPORTS DeleteWindows__11wxSizerItemFv ;wxSizer::GetMinClientSize(wxWindow*) GetMinClientSize__7wxSizerFP8wxWindow + ;wxSizer::IsShown(wxWindow*) + IsShown__7wxSizerFP8wxWindow ;wxSizer::GetMaxClientSize(wxWindow*) GetMaxClientSize__7wxSizerFP8wxWindow ;wxSizerItem::wxSizerItem(wxWindow*,int,int,int,wxObject*) @@ -5453,12 +5477,15 @@ EXPORTS SetName__8wxCSConvFPCc ;wxMBConvUTF7::MB2WC(wchar_t*,const char*,unsigned int) const MB2WC__12wxMBConvUTF7CFPwPCcUi + wxConvISO8859_1 ;wxStrConvModule::sm_classwxStrConvModule sm_classwxStrConvModule__15wxStrConvModule ;wxMBConvUTF8::WC2MB(char*,const wchar_t*,unsigned int) const WC2MB__12wxMBConvUTF8CFPcPCwUi ;wxMBConvUTF8::MB2WC(wchar_t*,const char*,unsigned int) const MB2WC__12wxMBConvUTF8CFPwPCcUi + ;wxMBConv::~wxMBConv() + __dt__8wxMBConvFv __vft12wxMBConvUTF88wxMBConv wxConvCurrent ;wxMBConv::WC2MB(char*,const wchar_t*,unsigned int) const @@ -5494,22 +5521,20 @@ EXPORTS ;PUBDEFs (Symbols available from object file): ;wxStreamBuffer::SetBufferIO(void*,unsigned int,unsigned long) SetBufferIO__14wxStreamBufferFPvUiUl - ;wxStreamBuffer::wxStreamBuffer(wxStreamBase&,wxStreamBuffer::BufMode) - __ct__14wxStreamBufferFR12wxStreamBaseQ2_14wxStreamBuffer7BufMode + ;wxStreamBuffer::wxStreamBuffer(wxStreamBuffer::BufMode) + __ct__14wxStreamBufferFQ2_14wxStreamBuffer7BufMode ;wxEndL(wxOutputStream&) wxEndL__FR14wxOutputStream __vft22wxBufferedOutputStream12wxStreamBase __vft14wxOutputStream12wxStreamBase - ;wxStreamBuffer::wxStreamBuffer(wxStreamBuffer::BufMode) - __ct__14wxStreamBufferFQ2_14wxStreamBuffer7BufMode + ;wxStreamBuffer::wxStreamBuffer(wxStreamBase&,wxStreamBuffer::BufMode) + __ct__14wxStreamBufferFR12wxStreamBaseQ2_14wxStreamBuffer7BufMode ;wxStreamBuffer::Write(const void*,unsigned int) Write__14wxStreamBufferFPCvUi ;wxInputStream::SeekI(long,wxSeekMode) SeekI__13wxInputStreamFl10wxSeekMode ;wxBufferedInputStream::OnSysRead(void*,unsigned int) OnSysRead__21wxBufferedInputStreamFPvUi - ;wxInputStream::OnSysRead(void*,unsigned int) - OnSysRead__13wxInputStreamFPvUi ;wxOutputStream::~wxOutputStream() __dt__14wxOutputStreamFv ;wxInputStream::~wxInputStream() @@ -5636,6 +5661,8 @@ EXPORTS Init__14wxStreamBufferFv ;wxStreamBuffer::GetInputStream() const GetInputStream__14wxStreamBufferCFv + ;wxInputStream::CanRead() const + CanRead__13wxInputStreamCFv ;wxStreamBuffer::PutChar(char) PutChar__14wxStreamBufferFc ;wxInputStream::Read(wxOutputStream&) @@ -5657,14 +5684,14 @@ EXPORTS GetFromBuffer__14wxStreamBufferFPvUi ;wxInputStream::AllocSpaceWBack(unsigned int) AllocSpaceWBack__13wxInputStreamFUi + ;wxStreamBuffer::ResetBuffer() + ResetBuffer__14wxStreamBufferFv ;wxOutputStream::wxOutputStream() __ct__14wxOutputStreamFv ;wxBufferedInputStream::TellI() const TellI__21wxBufferedInputStreamCFv ;wxBufferedOutputStream::Sync() Sync__22wxBufferedOutputStreamFv - ;wxStreamBuffer::ResetBuffer() - ResetBuffer__14wxStreamBufferFv ;wxStreamBuffer::Read(wxStreamBuffer*) Read__14wxStreamBufferFP14wxStreamBuffer ;wxBufferedInputStream::Peek() @@ -6261,7 +6288,7 @@ EXPORTS Read32__17wxTextInputStreamFv ;wxTextInputStream::SkipIfEndOfLine(char) SkipIfEndOfLine__17wxTextInputStreamFc - ;From object file: F:\DEV\WX2\WXWINDOWS\src\common\unzip.c + ;From object file: H:\DEV\WX24\WXWINDOWS\src\common\unzip.c ;PUBDEFs (Symbols available from object file): unzReadCurrentFile unzGetCurrentFileInfo @@ -6367,6 +6394,8 @@ EXPORTS wxExecute__FRC8wxStringR13wxArrayString ;LongToString(long) LongToString__Fl + ;wxSafeYield(wxWindow*,unsigned long) + wxSafeYield__FP8wxWindowUl ;wxGetFontFromUser(wxWindow*,const wxFont&) wxGetFontFromUser__FP8wxWindowRC6wxFont ;wxGetCurrentId() @@ -6403,10 +6432,6 @@ EXPORTS wxStripMenuCodes__FRC8wxString ;wxStripMenuCodes(const char*,char*) wxStripMenuCodes__FPCcPc - ;wxSafeYield(wxWindow*) - wxSafeYield__FP8wxWindow - ;StringMatch(const char*,const char*,unsigned long,unsigned long) - StringMatch__FPCcT1UlT3 ;wxFindMenuItemId(wxFrame*,const wxString&,const wxString&) wxFindMenuItemId__FP7wxFrameRC8wxStringT2 ;wxGetUserName() @@ -7167,8 +7192,8 @@ EXPORTS DoSetVirtualSize__12wxWindowBaseFiT1 ;wxWindowBase::DoHitTest(int,int) const DoHitTest__12wxWindowBaseCFiT1 - ;wxWindowBase::DoGetBestSize() const - DoGetBestSize__12wxWindowBaseCFv + ;wxWindowBase::FitInside() + FitInside__12wxWindowBaseFv ;wxWindowBase::TransferDataFromWindow() TransferDataFromWindow__12wxWindowBaseFv ;wxWindowBase::IsTopLevel() const @@ -7179,6 +7204,8 @@ EXPORTS GetHelpText__12wxWindowBaseCFv ;wxWindowBase::GetAncestorWithCustomPalette() const GetAncestorWithCustomPalette__12wxWindowBaseCFv + ;wxWindowBase::DoGetBestSize() const + DoGetBestSize__12wxWindowBaseCFv ;wxWindowBase::FindWindowByLabel(const wxString&,const wxWindow*) FindWindowByLabel__12wxWindowBaseFRC8wxStringPC8wxWindow ;wxWindowBase::FindWindowByName(const wxString&,const wxWindow*) @@ -7531,6 +7558,8 @@ EXPORTS HitTest__14wxCalendarCtrlFRC7wxPointP10wxDateTimePQ2_10wxDateTime7WeekDay ;wxCalendarCtrl::DoGetPosition(int*,int*) const DoGetPosition__14wxCalendarCtrlCFPiT1 + ;wxCalendarCtrl::wxCalendarCtrl(wxWindow*,int,const wxDateTime&,const wxPoint&,const wxSize&,long,const wxString&) + __ct__14wxCalendarCtrlFP8wxWindowiRC10wxDateTimeRC7wxPointRC6wxSizelRC8wxString ;wxCalendarCtrl::Enable(unsigned long) Enable__14wxCalendarCtrlFUl wxEVT_CALENDAR_WEEKDAY_CLICKED @@ -7903,13 +7932,13 @@ EXPORTS ;wxGenericDirCtrl::OnEndEditItem(wxTreeEvent&) OnEndEditItem__16wxGenericDirCtrlFR11wxTreeEvent __vft13wxDirItemData12wxClientData - ;wxGenericDirCtrl::Init() - Init__16wxGenericDirCtrlFv - __vft19wxDirFilterListCtrl15wxItemContainer ;wxDirItemData::~wxDirItemData() __dt__13wxDirItemDataFv + __vft19wxDirFilterListCtrl15wxItemContainer ;wxGenericDirCtrl::ParseFilter(const wxString&,wxArrayString&,wxArrayString&) ParseFilter__16wxGenericDirCtrlFRC8wxStringR13wxArrayStringT2 + ;wxGenericDirCtrl::Init() + Init__16wxGenericDirCtrlFv ;wxDirFilterListCtrl::GetEventTable() const GetEventTable__19wxDirFilterListCtrlCFv ;wxGenericDirCtrl::ExpandDir(wxTreeItemId) @@ -7918,14 +7947,14 @@ EXPORTS sm_eventTableEntries__19wxDirFilterListCtrl ;wxDirFilterListCtrl::OnSelFilter(wxCommandEvent&) OnSelFilter__19wxDirFilterListCtrlFR14wxCommandEvent - ;wxGenericDirCtrl::SetFilterIndex(int) - SetFilterIndex__16wxGenericDirCtrlFi ;wxDirFilterListCtrl::FillFilterList(const wxString&,int) FillFilterList__19wxDirFilterListCtrlFRC8wxStringi - ;wxGenericDirCtrl::ReCreateTree() - ReCreateTree__16wxGenericDirCtrlFv + ;wxGenericDirCtrl::SetFilterIndex(int) + SetFilterIndex__16wxGenericDirCtrlFi ;wxGenericDirCtrl::SetupSections() SetupSections__16wxGenericDirCtrlFv + ;wxGenericDirCtrl::ReCreateTree() + ReCreateTree__16wxGenericDirCtrlFv ;wxGenericDirCtrl::ShowHidden(unsigned long) ShowHidden__16wxGenericDirCtrlFUl ;wxGenericDirCtrl::OnCollapseItem(wxTreeEvent&) @@ -9144,9 +9173,9 @@ EXPORTS LayoutFrame__17wxLayoutAlgorithmFP7wxFrameP8wxWindow ;wxSashLayoutWindow::sm_classwxSashLayoutWindow sm_classwxSashLayoutWindow__18wxSashLayoutWindow + wxEVT_CALCULATE_LAYOUT ;wxCalculateLayoutEvent::sm_classwxCalculateLayoutEvent sm_classwxCalculateLayoutEvent__22wxCalculateLayoutEvent - wxEVT_CALCULATE_LAYOUT ;wxConstructorForwxQueryLayoutInfoEvent() wxConstructorForwxQueryLayoutInfoEvent__Fv wxEVT_QUERY_LAYOUT_INFO @@ -9366,6 +9395,8 @@ EXPORTS __ct__17wxListRenameTimerFP16wxListMainWindow ;wxGenericListCtrl::InsertColumn(long,const wxString&,int,int) InsertColumn__17wxGenericListCtrlFlRC8wxStringiT3 + ;wxListLineData::DrawTextFormatted(wxDC*,const wxString&,int,int,int,int) + DrawTextFormatted__14wxListLineDataFP4wxDCRC8wxStringiN33 ;wxListLineDataArray::Index(const wxListLineData&,unsigned long) const Index__19wxListLineDataArrayCFRC14wxListLineDataUl ;wxGenericListCtrl::sm_eventTableEntries @@ -9670,8 +9701,6 @@ EXPORTS GetColumnWidth__16wxListMainWindowCFi ;wxListLineDataArray::Add(const wxListLineData&,unsigned int) Add__19wxListLineDataArrayFRC14wxListLineDataUi - ;wxListLineDataArray::DoEmpty() - DoEmpty__19wxListLineDataArrayFv ;wxConstructorForwxListView() wxConstructorForwxListView__Fv ;wxConstructorForwxListHeaderWindow() @@ -9700,6 +9729,8 @@ EXPORTS GetCountPerPage__16wxListMainWindowCFv ;wxListHeaderWindow::DrawCurrent() DrawCurrent__18wxListHeaderWindowFv + ;wxListLineDataArray::DoEmpty() + DoEmpty__19wxListLineDataArrayFv ;wxListItemData::wxListItemData(wxListMainWindow*) __ct__14wxListItemDataFP16wxListMainWindow wxEVT_COMMAND_LIST_COL_END_DRAG @@ -9795,6 +9826,143 @@ EXPORTS __ct__10wxLogFrameFP7wxFrameP11wxLogWindowPCc ;wxLogWindow::wxLogWindow(wxFrame*,const char*,unsigned long,unsigned long) __ct__11wxLogWindowFP7wxFramePCcUlT3 + ;From object file: ..\generic\mdig.cpp + ;PUBDEFs (Symbols available from object file): + ;wxGenericMDIClientWindow::CreateClient(wxGenericMDIParentFrame*,long) + CreateClient__24wxGenericMDIClientWindowFP23wxGenericMDIParentFramel + ;wxGenericMDIChildFrame::DoMoveWindow(int,int,int,int) + DoMoveWindow__22wxGenericMDIChildFrameFiN31 + ;wxConstructorForwxGenericMDIParentFrame() + wxConstructorForwxGenericMDIParentFrame__Fv + ;wxGenericMDIParentFrame::RemoveWindowMenu(wxMenuBar*) + RemoveWindowMenu__23wxGenericMDIParentFrameFP9wxMenuBar + ;wxGenericMDIParentFrame::OnCreateClient() + OnCreateClient__23wxGenericMDIParentFrameFv + ;wxGenericMDIParentFrame::ActivatePrevious() + ActivatePrevious__23wxGenericMDIParentFrameFv + ;wxGenericMDIParentFrame::ActivateNext() + ActivateNext__23wxGenericMDIParentFrameFv + ;wxMDIClientWindow::sm_classwxMDIClientWindow + sm_classwxMDIClientWindow__17wxMDIClientWindow + ;wxGenericMDIClientWindow::sm_eventTable + sm_eventTable__24wxGenericMDIClientWindow + ;wxGenericMDIClientWindow::wxGenericMDIClientWindow(wxGenericMDIParentFrame*,long) + __ct__24wxGenericMDIClientWindowFP23wxGenericMDIParentFramel + __vft24wxGenericMDIClientWindow8wxObject + ;wxGenericMDIClientWindow::OnPageChanged(wxNotebookEvent&) + OnPageChanged__24wxGenericMDIClientWindowFR15wxNotebookEvent + ;wxGenericMDIParentFrame::SetChildMenuBar(wxGenericMDIChildFrame*) + SetChildMenuBar__23wxGenericMDIParentFrameFP22wxGenericMDIChildFrame + ;wxGenericMDIChildFrame::sm_eventTableEntries + sm_eventTableEntries__22wxGenericMDIChildFrame + ;wxMDIParentFrame::sm_classwxMDIParentFrame + sm_classwxMDIParentFrame__16wxMDIParentFrame + ;wxGenericMDIParentFrame::sm_classwxGenericMDIParentFrame + sm_classwxGenericMDIParentFrame__23wxGenericMDIParentFrame + ;wxGenericMDIClientWindow::SetSelection(int) + SetSelection__24wxGenericMDIClientWindowFi + ;wxGenericMDIChildFrame::wxGenericMDIChildFrame() + __ct__22wxGenericMDIChildFrameFv + ;wxGenericMDIClientWindow::wxGenericMDIClientWindow() + __ct__24wxGenericMDIClientWindowFv + ;wxGenericMDIParentFrame::SetMenuBar(wxMenuBar*) + SetMenuBar__23wxGenericMDIParentFrameFP9wxMenuBar + ;wxGenericMDIParentFrame::AddWindowMenu(wxMenuBar*) + AddWindowMenu__23wxGenericMDIParentFrameFP9wxMenuBar + ;wxGenericMDIParentFrame::ProcessEvent(wxEvent&) + ProcessEvent__23wxGenericMDIParentFrameFR7wxEvent + __vft23wxGenericMDIParentFrame8wxObject + ;wxGenericMDIParentFrame::DoHandleMenu(wxCommandEvent&) + DoHandleMenu__23wxGenericMDIParentFrameFR14wxCommandEvent + ;wxGenericMDIChildFrame::sm_classwxGenericMDIChildFrame + sm_classwxGenericMDIChildFrame__22wxGenericMDIChildFrame + ;wxGenericMDIChildFrame::sm_eventTable + sm_eventTable__22wxGenericMDIChildFrame + ;wxMDIChildFrame::sm_classwxMDIChildFrame + sm_classwxMDIChildFrame__15wxMDIChildFrame + ;wxGenericMDIChildFrame::~wxGenericMDIChildFrame() + __dt__22wxGenericMDIChildFrameFv + ;wxGenericMDIClientWindow::~wxGenericMDIClientWindow() + __dt__24wxGenericMDIClientWindowFv + ;wxGenericMDIChildFrame::SetMenuBar(wxMenuBar*) + SetMenuBar__22wxGenericMDIChildFrameFP9wxMenuBar + ;wxGenericMDIChildFrame::GetMenuBar() const + GetMenuBar__22wxGenericMDIChildFrameCFv + ;wxGenericMDIParentFrame::GetActiveChild() const + GetActiveChild__23wxGenericMDIParentFrameCFv + ;wxGenericMDIChildFrame::Activate() + Activate__22wxGenericMDIChildFrameFv + ;wxGenericMDIParentFrame::wxGenericMDIParentFrame(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) + __ct__23wxGenericMDIParentFrameFP8wxWindowiRC8wxStringRC7wxPointRC6wxSizelT3 + ;wxGenericMDIClientWindow::sm_classwxGenericMDIClientWindow + sm_classwxGenericMDIClientWindow__24wxGenericMDIClientWindow + ;wxGenericMDIChildFrame::OnSize(wxSizeEvent&) + OnSize__22wxGenericMDIChildFrameFR11wxSizeEvent + __vft22wxGenericMDIChildFrame8wxObject + ;wxGenericMDIClientWindow::OnSize(wxSizeEvent&) + OnSize__24wxGenericMDIClientWindowFR11wxSizeEvent + ;wxGenericMDIChildFrame::OnCloseWindow(wxCloseEvent&) + OnCloseWindow__22wxGenericMDIChildFrameFR12wxCloseEvent + ;wxGenericMDIParentFrame::SetWindowMenu(wxMenu*) + SetWindowMenu__23wxGenericMDIParentFrameFP6wxMenu + ;wxGenericMDIParentFrame::sm_eventTableEntries + sm_eventTableEntries__23wxGenericMDIParentFrame + ;wxGenericMDIChildFrame::SetMDIParentFrame(wxGenericMDIParentFrame*) + SetMDIParentFrame__22wxGenericMDIChildFrameFP23wxGenericMDIParentFrame + ;wxGenericMDIParentFrame::DoGetClientSize(int*,int*) const + DoGetClientSize__23wxGenericMDIParentFrameCFPiT1 + ;wxGenericMDIParentFrame::wxGenericMDIParentFrame() + __ct__23wxGenericMDIParentFrameFv + ;wxConstructorForwxGenericMDIClientWindow() + wxConstructorForwxGenericMDIClientWindow__Fv + ;wxConstructorForwxGenericMDIChildFrame() + wxConstructorForwxGenericMDIChildFrame__Fv + ;wxGenericMDIParentFrame::Init() + Init__23wxGenericMDIParentFrameFv + ;wxGenericMDIChildFrame::GetMDIParentFrame() const + GetMDIParentFrame__22wxGenericMDIChildFrameCFv + ;wxGenericMDIClientWindow::GetEventTable() const + GetEventTable__24wxGenericMDIClientWindowCFv + ;wxGenericMDIParentFrame::GetEventTable() const + GetEventTable__23wxGenericMDIParentFrameCFv + ;wxGenericMDIParentFrame::GetClientWindow() const + GetClientWindow__23wxGenericMDIParentFrameCFv + ;wxMDIParentFrame::GetActiveChild() const + GetActiveChild__16wxMDIParentFrameCFv + ;wxGenericMDIChildFrame::Create(wxGenericMDIParentFrame*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) + Create__22wxGenericMDIChildFrameFP23wxGenericMDIParentFrameiRC8wxStringRC7wxPointRC6wxSizelT3 + ;wxGenericMDIChildFrame::OnMenuHighlight(wxMenuEvent&) + OnMenuHighlight__22wxGenericMDIChildFrameFR11wxMenuEvent + ;wxGenericMDIChildFrame::OnActivate(wxActivateEvent&) + OnActivate__22wxGenericMDIChildFrameFR15wxActivateEvent + ;wxGenericMDIClientWindow::PageChanged(int,int) + PageChanged__24wxGenericMDIClientWindowFiT1 + ;wxGenericMDIParentFrame::sm_eventTable + sm_eventTable__23wxGenericMDIParentFrame + ;wxGenericMDIParentFrame::~wxGenericMDIParentFrame() + __dt__23wxGenericMDIParentFrameFv + ;wxConstructorForwxMDIParentFrame() + wxConstructorForwxMDIParentFrame__Fv + ;wxConstructorForwxMDIClientWindow() + wxConstructorForwxMDIClientWindow__Fv + ;wxConstructorForwxMDIChildFrame() + wxConstructorForwxMDIChildFrame__Fv + ;wxGenericMDIChildFrame::Init() + Init__22wxGenericMDIChildFrameFv + ;wxGenericMDIChildFrame::GetTitle() const + GetTitle__22wxGenericMDIChildFrameCFv + ;wxGenericMDIChildFrame::GetEventTable() const + GetEventTable__22wxGenericMDIChildFrameCFv + ;wxGenericMDIChildFrame::ApplyMDIChildFrameRect() + ApplyMDIChildFrameRect__22wxGenericMDIChildFrameFv + ;wxGenericMDIChildFrame::wxGenericMDIChildFrame(wxGenericMDIParentFrame*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) + __ct__22wxGenericMDIChildFrameFP23wxGenericMDIParentFrameiRC8wxStringRC7wxPointRC6wxSizelT3 + ;wxGenericMDIClientWindow::sm_eventTableEntries + sm_eventTableEntries__24wxGenericMDIClientWindow + ;wxGenericMDIChildFrame::SetTitle(const wxString&) + SetTitle__22wxGenericMDIChildFrameFRC8wxString + ;wxGenericMDIParentFrame::Create(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) + Create__23wxGenericMDIParentFrameFP8wxWindowiRC8wxStringRC7wxPointRC6wxSizelT3 ;From object file: ..\generic\numdlgg.cpp ;PUBDEFs (Symbols available from object file): ;wxGetNumberFromUser(const wxString&,const wxString&,const wxString&,long,long,long,wxWindow*,const wxPoint&) @@ -9975,6 +10143,8 @@ EXPORTS sm_eventTable__16wxProgressDialog ;wxProgressDialog::sm_eventTableEntries sm_eventTableEntries__16wxProgressDialog + ;wxProgressDialog::Show(unsigned long) + Show__16wxProgressDialogFUl ;wxProgressDialog::OnCancel(wxCommandEvent&) OnCancel__16wxProgressDialogFR14wxCommandEvent ;wxProgressDialog::ReenableOtherWindows() @@ -10058,6 +10228,8 @@ EXPORTS GetScrollPixelsPerUnit__14wxScrollHelperCFPiT1 ;wxScrollHelper::Scroll(int,int) Scroll__14wxScrollHelperFiT1 + ;wxGenericScrolledWindow::DoSetVirtualSize(int,int) + DoSetVirtualSize__23wxGenericScrolledWindowFiT1 ;wxScrollHelper::~wxScrollHelper() __dt__14wxScrollHelperFv ;wxConstructorForwxGenericScrolledWindow() @@ -10217,8 +10389,12 @@ EXPORTS OnUnsplit__16wxSplitterWindowFP8wxWindow ;From object file: ..\generic\statusbr.cpp ;PUBDEFs (Symbols available from object file): + ;wxStatusBar::OnRightDown(wxMouseEvent&) + OnRightDown__11wxStatusBarFR12wxMouseEvent ;wxStatusBar::GetFieldRect(int,wxRect&) const GetFieldRect__11wxStatusBarCFiR6wxRect + ;wxStatusBar::OnLeftDown(wxMouseEvent&) + OnLeftDown__11wxStatusBarFR12wxMouseEvent ;wxStatusBar::SetStatusWidths(int,const int*) SetStatusWidths__11wxStatusBarFiPCi ;wxStatusBar::DrawField(wxDC&,int) @@ -10233,8 +10409,6 @@ EXPORTS Create__11wxStatusBarFP8wxWindowilRC8wxString ;wxStatusBar::OnPaint(wxPaintEvent&) OnPaint__11wxStatusBarFR12wxPaintEvent - ;wxStatusBar::OnSize(wxSizeEvent&) - OnSize__11wxStatusBarFR11wxSizeEvent ;wxStatusBar::GetStatusText(int) const GetStatusText__11wxStatusBarCFi ;wxStatusBar::SetFieldsCount(int,const int*) @@ -10473,8 +10647,6 @@ EXPORTS OnSetFocus__17wxGenericTreeCtrlFR12wxFocusEvent ;wxGenericTreeCtrl::IsVisible(const wxTreeItemId&) const IsVisible__17wxGenericTreeCtrlCFRC12wxTreeItemId - ;wxGenericTreeCtrl::GetParent(const wxTreeItemId&) const - GetParent__17wxGenericTreeCtrlCFRC12wxTreeItemId ;wxGenericTreeCtrl::GetBoundingRect(const wxTreeItemId&,wxRect&,unsigned long) const GetBoundingRect__17wxGenericTreeCtrlCFRC12wxTreeItemIdR6wxRectUl ;wxGenericTreeCtrl::DrawLine(const wxTreeItemId&,unsigned long) @@ -10576,6 +10748,8 @@ EXPORTS GetNextChild__17wxGenericTreeCtrlCFRC12wxTreeItemIdRl ;wxGenericTreeCtrl::GetItemText(const wxTreeItemId&) const GetItemText__17wxGenericTreeCtrlCFRC12wxTreeItemId + ;wxGenericTreeCtrl::GetItemBackgroundColour(const wxTreeItemId&) const + GetItemBackgroundColour__17wxGenericTreeCtrlCFRC12wxTreeItemId ;wxGenericTreeCtrl::GetFirstChild(const wxTreeItemId&,long&) const GetFirstChild__17wxGenericTreeCtrlCFRC12wxTreeItemIdRl ;wxGenericTreeCtrl::GetChildrenCount(const wxTreeItemId&,unsigned long) @@ -10637,6 +10811,8 @@ EXPORTS GetPrevSibling__17wxGenericTreeCtrlCFRC12wxTreeItemId ;wxGenericTreeCtrl::GetLastChild(const wxTreeItemId&) const GetLastChild__17wxGenericTreeCtrlCFRC12wxTreeItemId + ;wxGenericTreeCtrl::GetItemTextColour(const wxTreeItemId&) const + GetItemTextColour__17wxGenericTreeCtrlCFRC12wxTreeItemId ;wxGenericTreeCtrl::Expand(const wxTreeItemId&) Expand__17wxGenericTreeCtrlFRC12wxTreeItemId ;wxGenericTreeItem::DeleteChildren(wxGenericTreeCtrl*) @@ -10667,6 +10843,8 @@ EXPORTS SetItemImage__17wxGenericTreeCtrlFRC12wxTreeItemIdi14wxTreeItemIcon ;wxGenericTreeCtrl::SelectItem(const wxTreeItemId&,unsigned long,unsigned long) SelectItem__17wxGenericTreeCtrlFRC12wxTreeItemIdUlT2 + ;wxGenericTreeCtrl::ResetTextControl() + ResetTextControl__17wxGenericTreeCtrlFv ;wxGenericTreeCtrl::GetButtonsImageList() const GetButtonsImageList__17wxGenericTreeCtrlCFv ;wxTreeTextCtrl::AcceptChanges() @@ -10686,6 +10864,10 @@ EXPORTS SetWindowStyle__17wxGenericTreeCtrlFCl ;wxGenericTreeCtrl::GetNextVisible(const wxTreeItemId&) const GetNextVisible__17wxGenericTreeCtrlCFRC12wxTreeItemId + ;wxGenericTreeCtrl::GetItemParent(const wxTreeItemId&) const + GetItemParent__17wxGenericTreeCtrlCFRC12wxTreeItemId + ;wxGenericTreeCtrl::GetItemFont(const wxTreeItemId&) const + GetItemFont__17wxGenericTreeCtrlCFRC12wxTreeItemId ;wxGenericTreeCtrl::GetItemData(const wxTreeItemId&) const GetItemData__17wxGenericTreeCtrlCFRC12wxTreeItemId ;wxGenericTreeCtrl::EnsureVisible(const wxTreeItemId&) @@ -10713,6 +10895,8 @@ EXPORTS SetItemBackgroundColour__17wxGenericTreeCtrlFRC12wxTreeItemIdRC8wxColour ;wxTreeTextCtrl::GetEventTable() const GetEventTable__14wxTreeTextCtrlCFv + ;wxGenericTreeCtrl::GetEditControl() const + GetEditControl__17wxGenericTreeCtrlCFv ;wxTreeTextCtrl::Finish() Finish__14wxTreeTextCtrlFv ;wxGenericTreeCtrl::FillArray(wxGenericTreeItem*,wxArrayTreeItemIds&) const @@ -10764,6 +10948,8 @@ EXPORTS __dt__20wxHtmlHelpControllerFv ;wxHtmlHelpController::OnCloseFrame(wxCloseEvent&) OnCloseFrame__20wxHtmlHelpControllerFR12wxCloseEvent + ;wxHtmlHelpController::AddBook(const wxFileName&,unsigned long) + AddBook__20wxHtmlHelpControllerFRC10wxFileNameUl ;wxHtmlHelpController::wxHtmlHelpController(int) __ct__20wxHtmlHelpControllerFi ;wxHtmlHelpController::DisplayContents() @@ -10776,14 +10962,15 @@ EXPORTS LoadFile__20wxHtmlHelpControllerFRC8wxString ;From object file: ..\html\helpdata.cpp ;PUBDEFs (Symbols available from object file): + __vft18wxHtmlSearchEngine8wxObject ;wxHtmlBookRecArray::Add(const wxHtmlBookRecord&,unsigned int) Add__18wxHtmlBookRecArrayFRC16wxHtmlBookRecordUi ;wxHtmlBookRecArray::RemoveAt(unsigned int,unsigned int) RemoveAt__18wxHtmlBookRecArrayFUiT1 ;wxHtmlHelpData::wxHtmlHelpData() __ct__14wxHtmlHelpDataFv - ;wxSearchEngine::LookFor(const wxString&,unsigned long,unsigned long) - LookFor__14wxSearchEngineFRC8wxStringUlT2 + ;wxHtmlSearchEngine::LookFor(const wxString&,unsigned long,unsigned long) + LookFor__18wxHtmlSearchEngineFRC8wxStringUlT2 ;HP_TagHandler::HandleTag(const wxHtmlTag&) HandleTag__13HP_TagHandlerFRC9wxHtmlTag ;wxHtmlBookRecArray::Index(const wxHtmlBookRecord&,unsigned long) const @@ -10798,14 +10985,14 @@ EXPORTS __ct__18wxHtmlBookRecArrayFRC18wxHtmlBookRecArray ;HP_TagHandler::WriteOut(wxHtmlContentsItem*&,int&) WriteOut__13HP_TagHandlerFRP18wxHtmlContentsItemRi + ;wxHtmlSearchEngine::Scan(const wxFSFile&) + Scan__18wxHtmlSearchEngineFRC8wxFSFile ;wxHtmlBookRecArray::DoEmpty() DoEmpty__18wxHtmlBookRecArrayFv ;wxHtmlBookRecArray::Insert(const wxHtmlBookRecord&,unsigned int,unsigned int) Insert__18wxHtmlBookRecArrayFRC16wxHtmlBookRecordUiT2 ;wxHtmlHelpData::SaveCachedBook(wxHtmlBookRecord*,wxOutputStream*) SaveCachedBook__14wxHtmlHelpDataFP16wxHtmlBookRecordP14wxOutputStream - ;wxSearchEngine::Scan(wxInputStream*) - Scan__14wxSearchEngineFP13wxInputStream ;wxHtmlHelpData::FindPageById(int) FindPageById__14wxHtmlHelpDataFi ;wxConstructorForwxHtmlHelpData() @@ -10816,7 +11003,6 @@ EXPORTS GetFullPath__16wxHtmlBookRecordCFRC8wxString ;wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord*,wxFileSystem&,const wxString&,const wxString&) LoadMSProject__14wxHtmlHelpDataFP16wxHtmlBookRecordR12wxFileSystemRC8wxStringT3 - __vft14wxSearchEngine8wxObject ;wxHtmlBookRecArray::DoCopy(const wxHtmlBookRecArray&) DoCopy__18wxHtmlBookRecArrayFRC18wxHtmlBookRecArray ;wxHtmlBookRecArray::~wxHtmlBookRecArray() @@ -10964,6 +11150,8 @@ EXPORTS FindCellByPos__10wxHtmlCellCFiT1 ;wxHtmlWordCell::Draw(wxDC&,int,int,int,int) Draw__14wxHtmlWordCellFR4wxDCiN32 + ;wxHtmlContainerCell::GetBackgroundColour() + GetBackgroundColour__19wxHtmlContainerCellFv ;wxHtmlContainerCell::Draw(wxDC&,int,int,int,int) Draw__19wxHtmlContainerCellFR4wxDCiN32 ;wxHtmlWidgetCell::Draw(wxDC&,int,int,int,int) @@ -11011,8 +11199,6 @@ EXPORTS wxConstructorForwxHtmlFilterHTML__Fv ;wxHtmlFilterHTML::sm_classwxHtmlFilterHTML sm_classwxHtmlFilterHTML__16wxHtmlFilterHTML - ;wxPrivate_ReadString(wxString&,wxInputStream*) - wxPrivate_ReadString__FR8wxStringP13wxInputStream ;wxHtmlFilterPlainText::ReadFile(const wxFSFile&) const ReadFile__21wxHtmlFilterPlainTextCFRC8wxFSFile ;wxHtmlFilterHTML::ReadFile(const wxFSFile&) const @@ -11047,9 +11233,12 @@ EXPORTS DoCopy__16wxHtmlTextPiecesFRC16wxHtmlTextPieces ;wxHtmlEntitiesParser::GetEntityChar(const wxString&) GetEntityChar__20wxHtmlEntitiesParserFRC8wxString + ;wxHtmlParser::ExtractCharsetInformation(const wxString&) + ExtractCharsetInformation__12wxHtmlParserFRC8wxString ;wxHtmlTextPieces::Index(const wxHtmlTextPiece&,unsigned long) const Index__16wxHtmlTextPiecesCFRC15wxHtmlTextPieceUl __vft20wxHtmlEntitiesParser8wxObject + __vft16wxMetaTagHandler8wxObject ;wxHtmlParser::DoParsing() DoParsing__12wxHtmlParserFv ;wxHtmlParser::RestoreState() @@ -11060,6 +11249,8 @@ EXPORTS __ct__16wxHtmlTextPiecesFRC16wxHtmlTextPieces ;wxHtmlParser::SetSource(const wxString&) SetSource__12wxHtmlParserFRC8wxString + ;wxMetaTagHandler::HandleTag(const wxHtmlTag&) + HandleTag__16wxMetaTagHandlerFRC9wxHtmlTag ;wxHtmlTextPieces::RemoveAt(unsigned int,unsigned int) RemoveAt__16wxHtmlTextPiecesFUiT1 ;wxHtmlTextPieces::DoEmpty() @@ -11438,14 +11629,6 @@ EXPORTS __ct__18wxHtmlListmarkCellFP4wxDCRC8wxColour ;wxHtmlListmarkCell::Draw(wxDC&,int,int,int,int) Draw__18wxHtmlListmarkCellFR4wxDCiN32 - ;From object file: ..\html\m_meta.cpp - ;PUBDEFs (Symbols available from object file): - ;wxConstructorForHTML_ModuleMetaTag() - wxConstructorForHTML_ModuleMetaTag__Fv - ;HTML_ModuleMetaTag::sm_classHTML_ModuleMetaTag - sm_classHTML_ModuleMetaTag__18HTML_ModuleMetaTag - ;_link_dummy_func_m_meta() - _link_dummy_func_m_meta__Fv ;From object file: ..\html\m_pre.cpp ;PUBDEFs (Symbols available from object file): ;HTML_ModulePre::sm_classHTML_ModulePre @@ -11595,6 +11778,7 @@ EXPORTS sm_classwxApp__5wxApp ;wxAppRemoveSocketHandler(int) wxAppRemoveSocketHandler__Fi + gbInOnIdle ;wxAppAddSocketHandler(int,int,void(*)(void*),void*) wxAppAddSocketHandler__FiT1PFPv_vPv ;wxWakeUpIdle() @@ -13369,111 +13553,6 @@ EXPORTS ;From object file: ..\os2\main.cpp ;PUBDEFs (Symbols available from object file): main - ;From object file: ..\os2\mdi.cpp - ;PUBDEFs (Symbols available from object file): - ;wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent&) - OnSysColourChanged__16wxMDIParentFrameFR23wxSysColourChangedEvent - ;wxMDIClientWindow::GetEventTable() const - GetEventTable__17wxMDIClientWindowCFv - ;wxMDIChildFrame::~wxMDIChildFrame() - __dt__15wxMDIChildFrameFv - ;wxMDIParentFrame::ArrangeIcons() - ArrangeIcons__16wxMDIParentFrameFv - ;wxMDIParentFrame::ActivatePrevious() - ActivatePrevious__16wxMDIParentFrameFv - ;wxMDIClientWindow::sm_classwxMDIClientWindow - sm_classwxMDIClientWindow__17wxMDIClientWindow - ;wxMDIParentFrame::OnSize(wxSizeEvent&) - OnSize__16wxMDIParentFrameFR11wxSizeEvent - ;wxMDIChildFrame::Maximize(unsigned long) - Maximize__15wxMDIChildFrameFUl - ;wxMDIClientWindow::CreateClient(wxMDIParentFrame*,long) - CreateClient__17wxMDIClientWindowFP16wxMDIParentFramel - ;wxMDIChildFrame::DoSetClientSize(int,int) - DoSetClientSize__15wxMDIChildFrameFiT1 - ;wxMDIParentFrame::sm_classwxMDIParentFrame - sm_classwxMDIParentFrame__16wxMDIParentFrame - ;wxMDIParentFrame::GetEventTable() const - GetEventTable__16wxMDIParentFrameCFv - ;wxMDIParentFrame::~wxMDIParentFrame() - __dt__16wxMDIParentFrameFv - ;wxMDIParentFrame::Tile() - Tile__16wxMDIParentFrameFv - ;wxMDIChildFrame::Restore() - Restore__15wxMDIChildFrameFv - ;wxMDIParentFrame::OS2WindowProc(unsigned int,void*,void*) - OS2WindowProc__16wxMDIParentFrameFUiPvT2 - ;wxMDIParentFrame::OS2TranslateMessage(void**) - OS2TranslateMessage__16wxMDIParentFrameFPPv - ;wxMDIParentFrame::OS2DefWindowProc(unsigned int,void*,void*) - OS2DefWindowProc__16wxMDIParentFrameFUiPvT2 - ;wxMDIParentFrame::InternalSetMenuBar() - InternalSetMenuBar__16wxMDIParentFrameFv - ;wxMDIChildFrame::HandleWindowPosChanging(void*) - HandleWindowPosChanging__15wxMDIChildFrameFPv - ;wxMDIParentFrame::Cascade() - Cascade__16wxMDIParentFrameFv - ;wxMDIParentFrame::HandleCommand(unsigned short,unsigned short,unsigned long) - HandleCommand__16wxMDIParentFrameFUsT1Ul - ;wxMDIClientWindow::OnScroll(wxScrollEvent&) - OnScroll__17wxMDIClientWindowFR13wxScrollEvent - ;wxMDIChildFrame::HandleCommand(unsigned short,unsigned short,unsigned long) - HandleCommand__15wxMDIChildFrameFUsT1Ul - ;wxMDIChildFrame::sm_classwxMDIChildFrame - sm_classwxMDIChildFrame__15wxMDIChildFrame - ;wxMDIParentFrame::wxMDIParentFrame() - __ct__16wxMDIParentFrameFv - ;wxMDIChildFrame::OS2TranslateMessage(void**) - OS2TranslateMessage__15wxMDIChildFrameFPPv - ;wxMDIChildFrame::InternalSetMenuBar() - InternalSetMenuBar__15wxMDIChildFrameFv - ;wxMDIParentFrame::Create(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) - Create__16wxMDIParentFrameFP8wxWindowiRC8wxStringRC7wxPointRC6wxSizelT3 - __vft16wxMDIParentFrame8wxObject - ;wxMDIChildFrame::HandleSize(int,int,unsigned int) - HandleSize__15wxMDIChildFrameFiT1Ui - ;wxMDIParentFrame::sm_eventTable - sm_eventTable__16wxMDIParentFrame - ;wxMDIParentFrame::sm_eventTableEntries - sm_eventTableEntries__16wxMDIParentFrame - ;wxMDIParentFrame::GetActiveChild() const - GetActiveChild__16wxMDIParentFrameCFv - ;wxMDIParentFrame::OnCreateClient() - OnCreateClient__16wxMDIParentFrameFv - ;wxMDIChildFrame::OS2WindowProc(unsigned int,void*,void*) - OS2WindowProc__15wxMDIChildFrameFUiPvT2 - ;wxMDIChildFrame::OS2DestroyWindow() - OS2DestroyWindow__15wxMDIChildFrameFv - ;wxMDIParentFrame::HandleActivate(int,unsigned long,unsigned long) - HandleActivate__16wxMDIParentFrameFiUlT2 - ;wxMDIClientWindow::sm_eventTableEntries - sm_eventTableEntries__17wxMDIClientWindow - __vft15wxMDIChildFrame8wxObject - __vft17wxMDIClientWindow8wxObject - ;wxMDIChildFrame::DoGetPosition(int*,int*) const - DoGetPosition__15wxMDIChildFrameCFPiT1 - ;wxConstructorForwxMDIParentFrame() - wxConstructorForwxMDIParentFrame__Fv - ;wxConstructorForwxMDIClientWindow() - wxConstructorForwxMDIClientWindow__Fv - ;wxConstructorForwxMDIChildFrame() - wxConstructorForwxMDIChildFrame__Fv - ;wxMDIChildFrame::wxMDIChildFrame() - __ct__15wxMDIChildFrameFv - ;wxMDIChildFrame::ResetWindowStyle(void*) - ResetWindowStyle__15wxMDIChildFrameFPv - ;wxMDIChildFrame::OS2DefWindowProc(unsigned int,void*,void*) - OS2DefWindowProc__15wxMDIChildFrameFUiPvT2 - ;wxMDIChildFrame::HandleMDIActivate(long,unsigned long,unsigned long) - HandleMDIActivate__15wxMDIChildFrameFlUlT2 - ;wxMDIChildFrame::Activate() - Activate__15wxMDIChildFrameFv - ;wxMDIParentFrame::ActivateNext() - ActivateNext__16wxMDIParentFrameFv - ;wxMDIChildFrame::Create(wxMDIParentFrame*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) - Create__15wxMDIChildFrameFP16wxMDIParentFrameiRC8wxStringRC7wxPointRC6wxSizelT3 - ;wxMDIClientWindow::sm_eventTable - sm_eventTable__17wxMDIClientWindow ;From object file: ..\os2\menu.cpp ;PUBDEFs (Symbols available from object file): ;wxMenuBar::wxMenuBar(long) @@ -13665,12 +13744,6 @@ EXPORTS GetFileTypeFromMimeType__22wxMimeTypesManagerImplFRC8wxString ;wxFileTypeImpl::GetExtensions(wxArrayString&) GetExtensions__14wxFileTypeImplFR13wxArrayString - ;From object file: ..\os2\minifram.cpp - ;PUBDEFs (Symbols available from object file): - ;wxMiniFrame::sm_classwxMiniFrame - sm_classwxMiniFrame__11wxMiniFrame - ;wxConstructorForwxMiniFrame() - wxConstructorForwxMiniFrame__Fv ;From object file: ..\os2\msgdlg.cpp ;PUBDEFs (Symbols available from object file): ;wxMessageDialog::ShowModal() @@ -13709,12 +13782,10 @@ EXPORTS ;wxNotebook::SetPageText(int,const wxString&) SetPageText__10wxNotebookFiRC8wxString wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED - ;wxNotebook::ChangePage(int,int) - ChangePage__10wxNotebookFiT1 - ;wxNotebook::SetTabSize(const wxSize&) - SetTabSize__10wxNotebookFRC6wxSize ;wxNotebook::SetPageSize(const wxSize&) SetPageSize__10wxNotebookFRC6wxSize + ;wxNotebook::SetTabSize(const wxSize&) + SetTabSize__10wxNotebookFRC6wxSize ;wxNotebook::AddPage(wxWindow*,const wxString&,unsigned long,int) AddPage__10wxNotebookFP8wxWindowRC8wxStringUli ;wxNotebook::OS2GetStyle(long,unsigned long*) const @@ -14104,8 +14175,6 @@ EXPORTS wxConstructorForwxScrollBar__Fv ;wxScrollBar::~wxScrollBar() __dt__11wxScrollBarFv - ;wxScrollBar::GetEventTable() const - GetEventTable__11wxScrollBarCFv ;wxScrollBar::Create(wxWindow*,int,const wxPoint&,const wxSize&,long,const wxValidator&,const wxString&) Create__11wxScrollBarFP8wxWindowiRC7wxPointRC6wxSizelRC11wxValidatorRC8wxString ;wxScrollBar::SetScrollbar(int,int,int,int,unsigned long) @@ -14113,14 +14182,10 @@ EXPORTS ;wxScrollBar::GetThumbPosition() const GetThumbPosition__11wxScrollBarCFv __vft11wxScrollBar8wxObject - ;wxScrollBar::sm_eventTableEntries - sm_eventTableEntries__11wxScrollBar ;wxScrollBar::sm_classwxScrollBar sm_classwxScrollBar__11wxScrollBar ;wxScrollBar::Command(wxCommandEvent&) Command__11wxScrollBarFR14wxCommandEvent - ;wxScrollBar::sm_eventTable - sm_eventTable__11wxScrollBar ;From object file: ..\os2\settings.cpp ;PUBDEFs (Symbols available from object file): ;wxSystemSettingsModule::sm_classwxSystemSettingsModule @@ -14513,16 +14578,20 @@ EXPORTS OnRedo__10wxTextCtrlFR14wxCommandEvent ;wxTextCtrl::OnPaste(wxCommandEvent&) OnPaste__10wxTextCtrlFR14wxCommandEvent + ;wxTextCtrl::OnDelete(wxCommandEvent&) + OnDelete__10wxTextCtrlFR14wxCommandEvent ;wxTextCtrl::OnChar(wxKeyEvent&) OnChar__10wxTextCtrlFR10wxKeyEvent ;wxTextCtrl::Remove(long,long) Remove__10wxTextCtrlFlT1 ;wxTextCtrl::SetSelection(long,long) SetSelection__10wxTextCtrlFlT1 - ;wxTextCtrl::Copy() - Copy__10wxTextCtrlFv + ;wxTextCtrl::~wxTextCtrl() + __dt__10wxTextCtrlFv ;wxTextCtrl::SetStyle(long,long,const wxTextAttr&) SetStyle__10wxTextCtrlFlT1RC10wxTextAttr + ;wxTextCtrl::Copy() + Copy__10wxTextCtrlFv ;wxTextCtrl::CanRedo() const CanRedo__10wxTextCtrlCFv ;wxTextCtrl::OS2GetStyle(long,unsigned long*) const @@ -14536,6 +14605,8 @@ EXPORTS SetWindowStyleFlag__10wxTextCtrlFl ;wxTextCtrl::SetEditable(unsigned long) SetEditable__10wxTextCtrlFUl + ;wxTextCtrl::OnUpdateSelectAll(wxUpdateUIEvent&) + OnUpdateSelectAll__10wxTextCtrlFR15wxUpdateUIEvent ;wxTextCtrl::OnUpdateCopy(wxUpdateUIEvent&) OnUpdateCopy__10wxTextCtrlFR15wxUpdateUIEvent ;wxTextCtrl::OnCut(wxCommandEvent&) @@ -14568,6 +14639,8 @@ EXPORTS Create__10wxTextCtrlFP8wxWindowiRC8wxStringRC7wxPointRC6wxSizelRC11wxValidatorT3 ;wxTextCtrl::SetInsertionPoint(long) SetInsertionPoint__10wxTextCtrlFl + ;wxTextCtrl::OnUpdateDelete(wxUpdateUIEvent&) + OnUpdateDelete__10wxTextCtrlFR15wxUpdateUIEvent ;wxTextCtrl::GetLineLength(long) const GetLineLength__10wxTextCtrlCFl ;wxTextCtrl::Cut() @@ -14598,6 +14671,8 @@ EXPORTS sm_eventTableEntries__10wxTextCtrl ;wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent&) OnUpdateRedo__10wxTextCtrlFR15wxUpdateUIEvent + ;wxTextCtrl::OnSelectAll(wxCommandEvent&) + OnSelectAll__10wxTextCtrlFR14wxCommandEvent ;wxTextCtrl::OnDropFiles(wxDropFilesEvent&) OnDropFiles__10wxTextCtrlFR16wxDropFilesEvent ;wxTextCtrl::OnCtlColor(unsigned long,unsigned long,unsigned int,unsigned int,void*,void*) @@ -14857,14 +14932,23 @@ EXPORTS __vft19wxTopLevelWindowOS28wxObject ;wxTopLevelWindowOS2::CreateFrame(const wxString&,const wxPoint&,const wxSize&) CreateFrame__19wxTopLevelWindowOS2FRC8wxStringRC7wxPointRC6wxSize + ;wxTLWHiddenParentModule::m_shWnd + m_shWnd__23wxTLWHiddenParentModule ;wxTopLevelWindowOS2::~wxTopLevelWindowOS2() __dt__19wxTopLevelWindowOS2Fv ;wxTopLevelWindowOS2::sm_eventTableEntries sm_eventTableEntries__19wxTopLevelWindowOS2 + ;wxTLWHiddenParentModule::OnInit() + OnInit__23wxTLWHiddenParentModuleFv + ;wxTLWHiddenParentModule::GetHWND() + GetHWND__23wxTLWHiddenParentModuleFv ;wxTopLevelWindowOS2::ShowFullScreen(unsigned long,long) ShowFullScreen__19wxTopLevelWindowOS2FUll + __vft23wxTLWHiddenParentModule8wxObject ;wxTopLevelWindowOS2::CreateDialog(unsigned long,const wxString&,const wxPoint&,const wxSize&) CreateDialog__19wxTopLevelWindowOS2FUlRC8wxStringRC7wxPointRC6wxSize + ;wxTLWHiddenParentModule::sm_classwxTLWHiddenParentModule + sm_classwxTLWHiddenParentModule__23wxTLWHiddenParentModule ;wxTopLevelWindowOS2::DoShowWindow(int) DoShowWindow__19wxTopLevelWindowOS2Fi ;wxTopLevelWindowOS2::Init() @@ -14879,6 +14963,8 @@ EXPORTS Iconize__19wxTopLevelWindowOS2FUl ;wxTopLevelWindowOS2::DoSetClientSize(int,int) DoSetClientSize__19wxTopLevelWindowOS2FiT1 + ;wxTLWHiddenParentModule::m_szClassName + m_szClassName__23wxTLWHiddenParentModule ;wxTopLevelWindowOS2::IsMaximized() const IsMaximized__19wxTopLevelWindowOS2CFv ;wxTopLevelWindowOS2::m_spHiddenParent @@ -14887,6 +14973,8 @@ EXPORTS SetIcon__19wxTopLevelWindowOS2FRC6wxIcon ;wxTopLevelWindowOS2::Restore() Restore__19wxTopLevelWindowOS2Fv + ;wxTLWHiddenParentModule::OnExit() + OnExit__23wxTLWHiddenParentModuleFv ;wxTopLevelWindowOS2::OnActivate(wxActivateEvent&) OnActivate__19wxTopLevelWindowOS2FR15wxActivateEvent ;wxTopLevelWindowOS2::Maximize(unsigned long) @@ -14895,6 +14983,8 @@ EXPORTS EnableCloseButton__19wxTopLevelWindowOS2FUl ;wxTopLevelWindowOS2::DoGetClientSize(int*,int*) const DoGetClientSize__19wxTopLevelWindowOS2CFPiT1 + ;wxConstructorForwxTLWHiddenParentModule() + wxConstructorForwxTLWHiddenParentModule__Fv ;wxTopLevelWindowOS2::Create(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&) Create__19wxTopLevelWindowOS2FP8wxWindowiRC8wxStringRC7wxPointRC6wxSizelT3 ;wxTopLevelWindowOS2::Show(unsigned long) diff --git a/src/png/ANNOUNCE b/src/png/ANNOUNCE index 425cdeed6b..91c7ab01be 100644 --- a/src/png/ANNOUNCE +++ b/src/png/ANNOUNCE @@ -1,28 +1,35 @@ -Libpng 1.2.4 - July 8, 2002 +Libpng 1.2.5rc3 - September 18, 2002 -This is a public release of libpng, intended for use in production codes. +This is not intended to be a public release. It will be replaced +within a few weeks by a public version or by another test version. -Changes since the last public release (1.2.3): +Changes since the last public release (1.2.4): - Added libpng.pc and libpng-config to "all:" target in 16 makefiles. - Fixed bug in 16 makefiles: $(DESTDIR)/$(LIBPATH) to $(DESTDIR)$(LIBPATH) - Added missing "\" before closing double quote in makefile.gcmmx. - Plugged various memory leaks; added png_malloc_warn() and png_set_text_2() - functions. - Plugged memory leak of png_ptr->current_text (Matt Holgate). - Check for buffer overflow before reading CRC in pngpread.c (Warwick Allison) - Added -soname to the loader flags in makefile.dec, makefile.sgi, and - makefile.sggcc. - Added "test-installed" targets to makefile.linux, makefile.gcmmx, - makefile.sgi, makefile.sggcc, makefile.32sunu, makefile.64sunu, - makefile.beos, makefile.darwin, makefile.dec, makefile.macosx, - makefile.solaris, makefile.sco, makefile.cygwin, makefile.hpux, - makefile.hpgcc, and makefile.so9. - Plugged memory leak of row_buf in pngtest.c when there is a png_error(). - Detect buffer overflow in pngpread.c when IDAT is corrupted with extra data. - Revised pnggccrd.c to be able to back out version 1.0.x via PNG_1_0_X macro. - Changed png_warning() to png_error() when width is too large to process. +version 1.2.4patch01 [July 20, 2002] + Revised makefile.cygwin to use DLL number 12 instead of 13. +version 1.2.5beta1 [August 6, 2002] + Added code to contrib/gregbook/readpng2.c to ignore unused chunks. + Replaced toucan.png in contrib/gregbook (it has been corrupt since 1.0.11) + Removed some stray *.o files from contrib/gregbook. + Changed png_error() to png_warning() about "Too much data" in pngpread.c + and about "Extra compressed data" in pngrutil.c. + Prevent png_ptr->pass from exceeding 7 in png_push_finish_row(). + Updated makefile.hggcc + Updated png.c and pnggccrd.c handling of return from png_mmx_support() +version 1.2.5beta2 [August 15, 2002] + Only issue png_warning() about "Too much data" in pngpread.c when avail_in + is nonzero. + Updated makefiles to install a separate libpng.so.3 with its own rpath. +version 1.2.5rc1 and 1.0.15rc1 [August 24, 2002] + Revised makefiles to not remove previous minor versions of shared libraries. +version 1.2.5rc2 and 1.0.15rc2 [September 16, 2002] + Revised 13 makefiles to remove "-lz" and "-L$(ZLIBLIB)", etc., from shared + library loader directive. + Added missing "$OBJSDLL" line to makefile.gcmmx. + Added missing "; fi" to makefile.32sunu. +version 1.2.5rc3 and 1.0.15rc3 [September 18, 2002] + Revised libpng-config script. Send comments/corrections/commendations to png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu diff --git a/src/png/CHANGES b/src/png/CHANGES index 7cebe0e803..d526aee119 100644 --- a/src/png/CHANGES +++ b/src/png/CHANGES @@ -1144,11 +1144,35 @@ version 1.2.4beta3 [June 28, 2002] Added "test-installed" target to makefile.32sunu, makefile.64sunu, makefile.beos, makefile.darwin, makefile.dec, makefile.macosx, makefile.solaris, makefile.hpux, makefile.hpgcc, and makefile.so9. -version 1.2.4rc1 [July 2, 2002] +version 1.2.4rc1 and 1.0.14rc1 [July 2, 2002] Added "test-installed" target to makefile.cygwin and makefile.sco. Revised pnggccrd.c to be able to back out version 1.0.x via PNG_1_0_X macro. -version 1.2.4 [July 8, 2002] +version 1.2.4 and 1.0.14 [July 8, 2002] Changed png_warning() to png_error() when width is too large to process. +version 1.2.4patch01 [July 20, 2002] + Revised makefile.cygwin to use DLL number 12 instead of 13. +version 1.2.5beta1 [August 6, 2002] + Added code to contrib/gregbook/readpng2.c to ignore unused chunks. + Replaced toucan.png in contrib/gregbook (it has been corrupt since 1.0.11) + Removed some stray *.o files from contrib/gregbook. + Changed png_error() to png_warning() about "Too much data" in pngpread.c + and about "Extra compressed data" in pngrutil.c. + Prevent png_ptr->pass from exceeding 7 in png_push_finish_row(). + Updated makefile.hpgcc + Updated png.c and pnggccrd.c handling of return from png_mmx_support() +version 1.2.5beta2 [August 15, 2002] + Only issue png_warning() about "Too much data" in pngpread.c when avail_in + is nonzero. + Updated makefiles to install a separate libpng.so.3 with its own rpath. +version 1.2.5rc1 and 1.0.15rc1 [August 24, 2002] + Revised makefiles to not remove previous minor versions of shared libraries. +version 1.2.5rc2 and 1.0.15rc2 [September 16, 2002] + Revised 13 makefiles to remove "-lz" and "-L$(ZLIBLIB)", etc., from shared + library loader directive. + Added missing "$OBJSDLL" line to makefile.gcmmx. + Added missing "; fi" to makefile.32sunu. +version 1.2.5rc3 and 1.0.15rc3 [September 18, 2002] + Revised libpng-config script. Send comments/corrections/commendations to png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu diff --git a/src/png/INSTALL b/src/png/INSTALL index 9dde2fe7b1..08e54b133d 100644 --- a/src/png/INSTALL +++ b/src/png/INSTALL @@ -1,5 +1,5 @@ -Installing libpng version 1.2.4 - July 8, 2002 +Installing libpng version 1.2.5rc3 - September 18, 2002 Before installing libpng, you must first install zlib. zlib can usually be found wherever you got libpng. zlib can be @@ -10,7 +10,7 @@ zlib.h and zconf.h include files that correspond to the version of zlib that's installed. You can rename the directories that you downloaded (they -might be called "libpng-1.2.4" or "lpng109" and "zlib-1.1.4" +might be called "libpng-1.2.5rc3" or "lpng109" and "zlib-1.1.4" or "zlib114") so that you have directories called "zlib" and "libpng". Your directory structure should look like this: @@ -68,8 +68,8 @@ The files that are presently available in the scripts directory include makefile.std => Generic UNIX makefile (cc, creates static libpng.a) - makefile.linux => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.4) - makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.4, + makefile.linux => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.5rc3) + makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.5rc3, uses assembler code tuned for Intel MMX platform) makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.knr => Archaic UNIX Makefile that converts files with @@ -90,10 +90,10 @@ include makefile.ne0bsd => NetBSD/cc makefile, uses PNGGCCRD, makes libpng0.so makefile.openbsd => OpenBSD makefile makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) - makefile.sggcc => Silicon Graphics (gcc, creates libpng12.so.0.1.2.4) + makefile.sggcc => Silicon Graphics (gcc, creates libpng12.so.0.1.2.5rc3) makefile.sunos => Sun makefile - makefile.solaris => Solaris 2.X makefile (gcc, creates libpng12.so.0.1.2.4) - makefile.so9 => Solaris 9 makefile (gcc, creates libpng12.so.0.1.2.4) + makefile.solaris => Solaris 2.X makefile (gcc, creates libpng12.so.0.1.2.5rc3) + makefile.so9 => Solaris 9 makefile (gcc, creates libpng12.so.0.1.2.5rc3) makefile.32sunu => Sun Ultra 32-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc @@ -158,9 +158,9 @@ in the scripts directory when you run "make", "make install", or mangle.in => Function-decoration macros added to png.h by the makefiles. makefile.linux => Linux/ELF makefile - (gcc, creates libpng12m.so.0.1.2.4) + (gcc, creates libpng12m.so.0.1.2.5rc3) makefile.gcmmx => Linux/ELF makefile (gcc, creates - libpng12.so.0m.1.2.4, uses assembler code + libpng12.so.0m.1.2.5rc3, uses assembler code tuned for Intel MMX platform) makefile.sgi => Silicon Graphics (cc, creates libpng12m.so) makefile.sggcc => Silicon Graphics (gcc, creates libpng12m.so) diff --git a/src/png/KNOWNBUG b/src/png/KNOWNBUG index e5b7510287..1bce9c9c05 100644 --- a/src/png/KNOWNBUG +++ b/src/png/KNOWNBUG @@ -1,5 +1,5 @@ -Known bugs in libpng version 1.2.4 +Known bugs in libpng version 1.2.5rc3 1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when reading interlaced PNG files, when assembler code is enabled but running diff --git a/src/png/LICENSE b/src/png/LICENSE index 84e459435b..1f3a2537e4 100644 --- a/src/png/LICENSE +++ b/src/png/LICENSE @@ -8,7 +8,7 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: If you modify libpng you may insert additional notices immediately following this sentence. -libpng versions 1.0.7, July 1, 2000, through 1.2.4, July 8, 2002, are +libpng versions 1.0.7, July 1, 2000, through 1.2.5rc3, September 18, 2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors @@ -99,4 +99,4 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson randeg@alum.rpi.edu -July 8, 2002 +September 18, 2002 diff --git a/src/png/README b/src/png/README index 56f2d5e2bd..101a75a4af 100644 --- a/src/png/README +++ b/src/png/README @@ -1,4 +1,4 @@ -README for libpng 1.2.4 - July 8, 2002 (shared library 12.0) +README for libpng 1.2.5rc3 - September 18, 2002 (shared library 12.0) See the note about version numbers near the top of png.h See INSTALL for instructions on how to install libpng. @@ -187,9 +187,9 @@ Files in this distribution: descrip.mms => VMS makefile for MMS or MMK makefile.std => Generic UNIX makefile (cc, creates static libpng.a) makefile.linux => Linux/ELF makefile - (gcc, creates libpng12.so.0.1.2.4) + (gcc, creates libpng12.so.0.1.2.5rc3) makefile.gcmmx => Linux/ELF makefile (gcc, creates - libpng12.so.0.1.2.4, uses assembler code + libpng12.so.0.1.2.5rc3, uses assembler code tuned for Intel MMX platform) makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.knr => Archaic UNIX Makefile that converts files with @@ -210,12 +210,12 @@ Files in this distribution: makefile.ne0bsd => NetBSD/cc makefile, PNGGCCRD, makes libpng0.so makefile.openbsd => OpenBSD makefile makefile.sgi => Silicon Graphics IRIX (cc, creates static lib) - makefile.sggcc => Silicon Graphics (gcc, creates libpng12.so.0.1.2.4) + makefile.sggcc => Silicon Graphics (gcc, creates libpng12.so.0.1.2.5rc3) makefile.sunos => Sun makefile makefile.solaris => Solaris 2.X makefile - (gcc, creates libpng12.so.0.1.2.4) + (gcc, creates libpng12.so.0.1.2.5rc3) makefile.so9 => Solaris 9 makefile - (gcc, creates libpng12.so.0.1.2.4) + (gcc, creates libpng12.so.0.1.2.5rc3) makefile.32sunu => Sun Ultra 32-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc @@ -248,9 +248,9 @@ Files in this distribution: mangle.in => Function-decoration macros added to png.h by the makefiles. makefile.linux => Linux/ELF makefile - (gcc, creates libpng12m.so.0.1.2.4) + (gcc, creates libpng12m.so.0.1.2.5rc3) makefile.gcmmx => Linux/ELF makefile (gcc, creates - libpng12.so.0m.1.2.4, uses assembler code + libpng12.so.0m.1.2.5rc3, uses assembler code tuned for Intel MMX platform) makefile.sgi => Silicon Graphics (cc, creates libpng12m.so) makefile.sggcc => Silicon Graphics (gcc, creates libpng12m.so) diff --git a/src/png/Y2KINFO b/src/png/Y2KINFO index f550bc09b7..0615d559b0 100644 --- a/src/png/Y2KINFO +++ b/src/png/Y2KINFO @@ -1,13 +1,13 @@ Y2K compliance in libpng: ========================= - July 8, 2002 + September 18, 2002 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and - upward through 1.2.4 are Y2K compliant. It is my belief that earlier + upward through 1.2.5rc3 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer diff --git a/src/png/configure b/src/png/configure index ac209826a4..4621afffdc 100755 --- a/src/png/configure +++ b/src/png/configure @@ -1,5 +1,5 @@ echo " - There is no \"configure\" script for Libpng-1.2.4. Instead, please + There is no \"configure\" script for Libpng-1.2.5rc3. Instead, please copy the appropriate makefile for your system from the \"scripts\" directory. Read the INSTALL file for more details. " diff --git a/src/png/example.c b/src/png/example.c index 1cc450f80e..7956cf7abd 100644 --- a/src/png/example.c +++ b/src/png/example.c @@ -282,7 +282,7 @@ void read_png(FILE *fp, unsigned int sig_read) /* file is already open */ /* This reduces the image to the palette supplied in the file */ else if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) { - png_uint_16p histogram; + png_uint_16p histogram = NULL; png_get_hIST(png_ptr, info_ptr, &histogram); diff --git a/src/png/libpng.3 b/src/png/libpng.3 index 3451612f4b..c9e96ab6a4 100644 --- a/src/png/libpng.3 +++ b/src/png/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "July 8, 2002" +.TH LIBPNG 3 "September 18, 2002" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.2.4 +libpng \- Portable Network Graphics (PNG) Reference Library 1.2.5rc3 .SH SYNOPSIS \fI\fB @@ -791,7 +791,7 @@ Following is a copy of the libpng.txt file that accompanies libpng. .SH LIBPNG.TXT libpng.txt - A description on how to use and modify libpng - libpng version 1.2.4 - July 8, 2002 + libpng version 1.2.5rc3 - September 18, 2002 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2002 Glenn Randers-Pehrson @@ -1774,7 +1774,7 @@ histogram, it may not do as good a job. if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) { - png_uint_16p histogram; + png_uint_16p histogram = NULL; png_get_hIST(png_ptr, info_ptr, &histogram); @@ -3641,13 +3641,13 @@ application: .SH IX. Y2K Compliance in libpng -July 8, 2002 +September 18, 2002 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and -upward through 1.2.4 are Y2K compliant. It is my belief that earlier +upward through 1.2.5rc3 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer that @@ -3782,6 +3782,9 @@ the first widely used release: 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 1.0.14 10 10014 10.so.0.1.0.14 1.2.4 13 10204 12.so.0.1.2.4 + 1.2.5beta1,2 13 10205 12.so.0.1.2.5beta1,2 + 1.2.5rc1,3 13 10205 12.so.0.1.2.5rc1,3 + 1.0.15rc1,3 10 10015 10.so.0.1.0.15rc1,3 Henceforth the source version will match the shared-library minor and patch numbers; the shared-library major version number will be @@ -3839,7 +3842,7 @@ possible without all of you. Thanks to Frank J. T. Wojcik for helping with the documentation. -Libpng version 1.2.4 - July 8, 2002: +Libpng version 1.2.5rc3 - September 18, 2002: Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu). @@ -3856,7 +3859,7 @@ included in the libpng distribution, the latter shall prevail.) If you modify libpng you may insert additional notices immediately following this sentence. -libpng versions 1.0.7, July 1, 2000, through 1.2.4, July 8, 2002, are +libpng versions 1.0.7, July 1, 2000, through 1.2.5rc3, September 18, 2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors @@ -3948,7 +3951,7 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson randeg@alum.rpi.edu -July 8, 2002 +September 18, 2002 .\" end of man page diff --git a/src/png/libpng.txt b/src/png/libpng.txt index 66c89dc51d..07fc3cd287 100644 --- a/src/png/libpng.txt +++ b/src/png/libpng.txt @@ -1,6 +1,6 @@ libpng.txt - A description on how to use and modify libpng - libpng version 1.2.4 - July 8, 2002 + libpng version 1.2.5rc3 - September 18, 2002 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2002 Glenn Randers-Pehrson @@ -983,7 +983,7 @@ histogram, it may not do as good a job. if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) { - png_uint_16p histogram; + png_uint_16p histogram = NULL; png_get_hIST(png_ptr, info_ptr, &histogram); @@ -2850,13 +2850,13 @@ application: IX. Y2K Compliance in libpng -July 8, 2002 +September 18, 2002 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and -upward through 1.2.4 are Y2K compliant. It is my belief that earlier +upward through 1.2.5rc3 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer that diff --git a/src/png/libpngpf.3 b/src/png/libpngpf.3 index d4037d596e..4f6d3d6ed6 100644 --- a/src/png/libpngpf.3 +++ b/src/png/libpngpf.3 @@ -1,6 +1,6 @@ -.TH LIBPNGPF 3 "July 8, 2002" +.TH LIBPNGPF 3 "September 18, 2002" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.2.4 +libpng \- Portable Network Graphics (PNG) Reference Library 1.2.5rc3 (private functions) .SH SYNOPSIS \fB#include \fP diff --git a/src/png/makefile.nt b/src/png/makefile.nt deleted file mode 100644 index ab823c8fc9..0000000000 --- a/src/png/makefile.nt +++ /dev/null @@ -1,68 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds winpng.lib library for Windows 3.1 - -# Change WXDIR or WXWIN to wherever wxWindows is found -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib\wx.lib -WXINC = $(WXDIR)\include - -WINPNGDIR = ..\png -WINPNGINC = $(WINPNGDIR) -WINPNGLIB = ..\..\lib\winpng.lib - -INC = /I..\zlib - -FINAL=1 - -# Set this to nothing if your compiler is MS C++ 7 -ZOPTION= - -!ifndef FINAL -FINAL=0 -!endif - -PRECOMP=/YuWX.H - -!if "$(FINAL)" == "0" -OPT = /Od -CPPFLAGS= /W4 /Zi /MD /GX- $(ZOPTION) $(OPT) /Dwx_msw $(INC) # $(PRECOMP) /Fp$(WXDIR)\src\msw\wx.pch -CFLAGS= /W4 /Zi /MD /GX- /Od /Dwx_msw $(INC) -LINKFLAGS=/NOD /CO /ONERROR:NOEXE -!else -# /Ox for real FINAL version -OPT = /O2 -CPPFLAGS= /W4 /MD /GX- /Dwx_msw $(INC) # $(PRECOMP) /Fp$(WXDIR)\src\msw\wx.pch -CFLAGS= /W4 /MD /GX- /Dwx_msw $(INC) -LINKFLAGS=/NOD /ONERROR:NOEXE -!endif - -OBJECTS = png.obj pngread.obj pngrtran.obj pngrutil.obj \ - pngpread.obj pngtrans.obj pngwrite.obj pngwtran.obj pngwutil.obj \ - pngerror.obj pngmem.obj pngwio.obj pngrio.obj pngget.obj pngset.obj - -all: $(WINPNGLIB) - -$(WINPNGLIB): $(OBJECTS) - erase $(WINPNGLIB) - lib @<< --out:$(WINPNGLIB) -$(OBJECTS) -<< - -.c.obj: - cl -DWIN32 $(OPT) $(CFLAGS) /c $*.c - -clean: - erase *.obj - erase *.exe - erase *.lib - -cleanall: clean diff --git a/src/png/makefile.wat b/src/png/makefile.wat index c6c6c8ae48..8d5b96706f 100644 --- a/src/png/makefile.wat +++ b/src/png/makefile.wat @@ -3,6 +3,7 @@ # File: makefile.wat # Author: Julian Smart # Created: 1998 +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch # # Makefile : Builds PNG library for Watcom C++, WIN32 @@ -13,25 +14,42 @@ EXTRACPPFLAGS=-i=..\zlib WXLIB = $(WXDIR)\lib -LIBTARGET = $(WXLIB)\png.lib +LIBTARGET = $(WXLIB)\png$(WATCOM_SUFFIX).lib -OBJECTS = png.obj pngread.obj pngrtran.obj pngrutil.obj & - pngpread.obj pngtrans.obj pngwrite.obj pngwtran.obj pngwutil.obj & - pngerror.obj pngmem.obj pngwio.obj pngrio.obj pngget.obj pngset.obj +OBJECTS = & + $(OUTPUTDIR)\png.obj & + $(OUTPUTDIR)\pngread.obj & + $(OUTPUTDIR)\pngrtran.obj & + $(OUTPUTDIR)\pngrutil.obj & + $(OUTPUTDIR)\pngpread.obj & + $(OUTPUTDIR)\pngtrans.obj & + $(OUTPUTDIR)\pngwrite.obj & + $(OUTPUTDIR)\pngwtran.obj & + $(OUTPUTDIR)\pngwutil.obj & + $(OUTPUTDIR)\pngerror.obj & + $(OUTPUTDIR)\pngmem.obj & + $(OUTPUTDIR)\pngwio.obj & + $(OUTPUTDIR)\pngrio.obj & + $(OUTPUTDIR)\pngget.obj & + $(OUTPUTDIR)\pngset.obj -all: $(OBJECTS) $(LIBTARGET) +all: $(OUTPUTDIR) $(LIBTARGET) .SYMBOLIC +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ + +LBCFILE=$(OUTPUTDIR)\png.lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) clean: .SYMBOLIC - -erase *.obj + -erase $(OUTPUTDIR)\*.obj -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -erase *.lbc + -erase $(OUTPUTDIR)\*.pch + -erase $(OUTPUTDIR)\*.err + -erase $(OUTPUTDIR)\*.lbc cleanall: clean diff --git a/src/png/png.5 b/src/png/png.5 index 70e8cd0865..c5bb09c5ff 100644 --- a/src/png/png.5 +++ b/src/png/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "July 8, 2002" +.TH PNG 5 "September 18, 2002" .SH NAME png \- Portable Network Graphics (PNG) format .SH DESCRIPTION diff --git a/src/png/png.c b/src/png/png.c index 68c7d1adb8..74b3032d7d 100644 --- a/src/png/png.c +++ b/src/png/png.c @@ -1,7 +1,7 @@ /* png.c - location for general purpose libpng functions * - * libpng version 1.2.4 - July 8, 2002 + * libpng version 1.2.5rc3 - September 18, 2002 * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -13,14 +13,14 @@ #include "png.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef version_1_2_4 Your_png_h_is_not_version_1_2_4; +typedef version_1_2_5rc3 Your_png_h_is_not_version_1_2_5rc3; /* Version information for C files. This had better match the version * string defined in png.h. */ #ifdef PNG_USE_GLOBAL_ARRAYS /* png_libpng_ver was changed to a function in version 1.0.5c */ -const char png_libpng_ver[18] = "1.2.4"; +const char png_libpng_ver[18] = "1.2.5rc3"; /* png_sig was changed to a function in version 1.0.5c */ /* Place to hold the signature string for a PNG file. */ @@ -82,10 +82,6 @@ const int FARDATA png_pass_dsp_mask[] #endif -#ifdef __VISAGECPP__ -const char png_libpng_ver[18] = "1.2.4"; -#endif - /* Tells libpng that we have already handled the first "num_bytes" bytes * of the PNG file signature. If the PNG data is embedded into another * stream we can set num_bytes = 8 so that libpng will not attempt to read @@ -140,7 +136,7 @@ png_check_sig(png_bytep sig, int num) /* Function to allocate memory for zlib and clear it to 0. */ #ifdef PNG_1_0_X -void PNGAPI +voidpf PNGAPI #else voidpf /* private */ #endif @@ -148,7 +144,7 @@ png_zalloc(voidpf png_ptr, uInt items, uInt size) { png_uint_32 num_bytes = (png_uint_32)items * size; png_voidp ptr; - png_structp p=(png_structp)png_ptr; + png_structp p=(png_struct*)png_ptr; png_uint_32 save_flags=p->flags; p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK; @@ -675,7 +671,7 @@ png_charp PNGAPI png_get_copyright(png_structp png_ptr) { if (png_ptr != NULL || png_ptr == NULL) /* silence compiler warning */ - return ((png_charp) "\n libpng version 1.2.4 - July 8, 2002\n\ + return ((png_charp) "\n libpng version 1.2.5rc3 - September 18, 2002\n\ Copyright (c) 1998-2002 Glenn Randers-Pehrson\n\ Copyright (c) 1996-1997 Andreas Dilger\n\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n"); @@ -693,8 +689,8 @@ png_get_libpng_ver(png_structp png_ptr) { /* Version of *.c files used when building libpng */ if(png_ptr != NULL) /* silence compiler warning about unused png_ptr */ - return((png_charp) "1.2.4"); - return((png_charp) "1.2.4"); + return((png_charp) "1.2.5rc3"); + return((png_charp) "1.2.5rc3"); } png_charp PNGAPI @@ -744,7 +740,7 @@ png_uint_32 PNGAPI png_access_version_number(void) { /* Version of *.c files used when building libpng */ - return((png_uint_32) 10204L); + return((png_uint_32) 10205L); } @@ -762,7 +758,7 @@ png_init_mmx_flags (png_structp png_ptr) png_ptr->asm_flags |= PNG_ASM_FLAG_MMX_SUPPORT_COMPILED; - if (png_mmx_support()) { + if (png_mmx_support() > 0) { png_ptr->asm_flags |= PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU # ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW | PNG_ASM_FLAG_MMX_READ_COMBINE_ROW diff --git a/src/png/png.dsp b/src/png/png.dsp index c902fbf749..b2458bfde4 100644 --- a/src/png/png.dsp +++ b/src/png/png.dsp @@ -23,8 +23,8 @@ CFG=png - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "PngVC" -# PROP Scc_LocalPath "." +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe diff --git a/src/png/png.dsw b/src/png/png.dsw index 58c98b69e6..81564033ad 100644 --- a/src/png/png.dsw +++ b/src/png/png.dsw @@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00 ############################################################################### -Project: "png"=.\PngVC.dsp - Package Owner=<4> +Project: "png"=.\png.dsp - Package Owner=<4> Package=<5> {{{ diff --git a/src/png/png.h b/src/png/png.h index 365c80b392..a570d9a29a 100644 --- a/src/png/png.h +++ b/src/png/png.h @@ -1,6 +1,6 @@ /* png.h - header file for PNG reference library * - * libpng version 1.2.4 - July 8, 2002 + * libpng version 1.2.5rc3 - September 18, 2002 * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -8,7 +8,7 @@ * Authors and maintainers: * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.2.4 - July 8, 2002: Glenn + * libpng versions 0.97, January 1998, through 1.2.5rc3 - September 18, 2002: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -93,6 +93,9 @@ * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 * 1.0.14 10 10014 10.so.0.1.0.14 * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 * * Henceforth the source version will match the shared-library major * and minor numbers; the shared-library major version number will be @@ -122,7 +125,7 @@ * If you modify libpng you may insert additional notices immediately following * this sentence. * - * libpng versions 1.0.7, July 1, 2000, through 1.2.4, July 8, 2002, are + * libpng versions 1.0.7, July 1, 2000, through 1.2.5rc3, September 18, 2002, are * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are * distributed according to the same disclaimer and license as libpng-1.0.6 * with the following individuals added to the list of Contributing Authors @@ -227,13 +230,13 @@ * Y2K compliance in libpng: * ========================= * - * July 8, 2002 + * September 18, 2002 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. * * This is your unofficial assurance that libpng from version 0.71 and - * upward through 1.2.4 are Y2K compliant. It is my belief that earlier + * upward through 1.2.5rc3 are Y2K compliant. It is my belief that earlier * versions were also Y2K compliant. * * Libpng only has three year fields. One is a 2-byte unsigned integer @@ -289,7 +292,7 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.2.4" +#define PNG_LIBPNG_VER_STRING "1.2.5rc3" #define PNG_LIBPNG_VER_SONUM 0 #define PNG_LIBPNG_VER_DLLNUM %DLLNUM% @@ -297,11 +300,11 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 2 -#define PNG_LIBPNG_VER_RELEASE 4 +#define PNG_LIBPNG_VER_RELEASE 5 /* This should match the numeric part of the final component of * PNG_LIBPNG_VER_STRING, omitting any leading zero: */ -#define PNG_LIBPNG_VER_BUILD 0 +#define PNG_LIBPNG_VER_BUILD 3 #define PNG_LIBPNG_BUILD_ALPHA 1 #define PNG_LIBPNG_BUILD_BETA 2 @@ -309,14 +312,14 @@ #define PNG_LIBPNG_BUILD_STABLE 4 #define PNG_LIBPNG_BUILD_TYPEMASK 7 #define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with STABLE only */ -#define PNG_LIBPNG_BUILD_TYPE 4 +#define PNG_LIBPNG_BUILD_TYPE 3 /* Careful here. At one time, Guy wanted to use 082, but that would be octal. * We must not include leading zeros. * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only * version 1.0.0 was mis-numbered 100 instead of 10000). From * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */ -#define PNG_LIBPNG_VER 10204 /* 1.2.4 */ +#define PNG_LIBPNG_VER 10205 /* 1.2.5 */ #ifndef PNG_VERSION_INFO_ONLY @@ -1279,9 +1282,9 @@ struct png_struct_def /* This prevents a compiler error in png.c if png.c and png.h are both at - version 1.2.4 + version 1.2.5rc3 */ -typedef png_structp version_1_2_4; +typedef png_structp version_1_2_5rc3; typedef png_struct FAR * FAR * png_structpp; @@ -2421,7 +2424,7 @@ extern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp /* Maintainer: Put new public prototypes here ^, in libpng.3, and project defs */ #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.2.4 - July 8, 2002 (header)\n" + " libpng version 1.2.5rc3 - September 18, 2002 (header)\n" #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED /* With these routines we avoid an integer divide, which will be slower on diff --git a/src/png/pngasmrd.h b/src/png/pngasmrd.h index a19d4ae5ac..a2bf8f29ca 100644 --- a/src/png/pngasmrd.h +++ b/src/png/pngasmrd.h @@ -1,6 +1,6 @@ /* pngasmrd.h - assembler version of utilities to read a PNG file * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 2002 Glenn Randers-Pehrson * diff --git a/src/png/pngconf.h b/src/png/pngconf.h index 46fc4d8114..738a43a44c 100644 --- a/src/png/pngconf.h +++ b/src/png/pngconf.h @@ -1,6 +1,6 @@ /* pngconf.h - machine configurable file for libpng * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -1228,7 +1228,7 @@ typedef z_stream FAR * png_zstreamp; # endif # endif /* PNG_IMPEXP */ #else /* !(DLL || non-cygwin WINDOWS) */ -# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# if (defined(__IBMC__) || defined(IBMCPP__)) && defined(__OS2__) # define PNGAPI _System # define PNG_IMPEXP # else @@ -1242,7 +1242,7 @@ typedef z_stream FAR * png_zstreamp; #endif #if defined(__VISAGECPP__) -/* I don't compile with _System linkage, ever! */ +/* I don't compile with this _System linkage for wxWindows */ # ifdef PNGAPI # undef PNGAPI # endif diff --git a/src/png/pngerror.c b/src/png/pngerror.c index e6c197357f..38938a66d8 100644 --- a/src/png/pngerror.c +++ b/src/png/pngerror.c @@ -1,7 +1,7 @@ /* pngerror.c - stub functions for i/o and memory allocation * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pnggccrd.c b/src/png/pnggccrd.c index 2d1d1d3b36..5dbe52568e 100644 --- a/src/png/pnggccrd.c +++ b/src/png/pnggccrd.c @@ -6,7 +6,7 @@ * and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm * for Intel's performance analysis of the MMX vs. non-MMX code. * - * libpng version 1.2.4 - July 8, 2002 + * libpng version 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation @@ -5075,7 +5075,9 @@ png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep if (_mmx_supported == 2) { /* this should have happened in png_init_mmx_flags() already */ +#if !defined(PNG_1_0_X) png_warning(png_ptr, "asm_flags may not have been initialized"); +#endif png_mmx_support(); } #endif /* PNG_ASSEMBLER_CODE_SUPPORTED */ @@ -5345,13 +5347,13 @@ png_mmx_support(void) "pushl %%ecx \n\t" // save original Eflag to stack "popfl \n\t" // restore original Eflag "xorl %%ecx, %%eax \n\t" // compare new Eflag with original Eflag - "jz .NOT_SUPPORTED \n\t" // if same, CPUID instr. is not supported + "jz 0f \n\t" // if same, CPUID instr. is not supported "xorl %%eax, %%eax \n\t" // set eax to zero // ".byte 0x0f, 0xa2 \n\t" // CPUID instruction (two-byte opcode) "cpuid \n\t" // get the CPU identification info "cmpl $1, %%eax \n\t" // make sure eax return non-zero value - "jl .NOT_SUPPORTED \n\t" // if eax is zero, MMX is not supported + "jl 0f \n\t" // if eax is zero, MMX is not supported "xorl %%eax, %%eax \n\t" // set eax to zero and... "incl %%eax \n\t" // ...increment eax to 1. This pair is @@ -5359,14 +5361,14 @@ png_mmx_support(void) "cpuid \n\t" // get the CPU identification info again "andl $0x800000, %%edx \n\t" // mask out all bits but MMX bit (23) "cmpl $0, %%edx \n\t" // 0 = MMX not supported - "jz .NOT_SUPPORTED \n\t" // non-zero = yes, MMX IS supported + "jz 0f \n\t" // non-zero = yes, MMX IS supported "movl $1, %%eax \n\t" // set return value to 1 - "jmp .RETURN \n\t" // DONE: have MMX support + "jmp 1f \n\t" // DONE: have MMX support - ".NOT_SUPPORTED: \n\t" // target label for jump instructions + "0: \n\t" // .NOT_SUPPORTED: target label for jump instructions "movl $0, %%eax \n\t" // set return value to 0 - ".RETURN: \n\t" // target label for jump instructions + "1: \n\t" // .RETURN: target label for jump instructions "movl %%eax, _mmx_supported \n\t" // save in global static variable, too "popl %%edx \n\t" // restore edx "popl %%ecx \n\t" // restore ecx diff --git a/src/png/pngget.c b/src/png/pngget.c index d3805a6e06..46ca030e69 100644 --- a/src/png/pngget.c +++ b/src/png/pngget.c @@ -1,7 +1,7 @@ /* pngget.c - retrieval of values from info struct * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngmem.c b/src/png/pngmem.c index feb8a5dfc5..02a8e337d1 100644 --- a/src/png/pngmem.c +++ b/src/png/pngmem.c @@ -1,7 +1,7 @@ /* pngmem.c - stub functions for memory allocation * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngpread.c b/src/png/pngpread.c index 9a5b54dfb0..cadbc922d4 100644 --- a/src/png/pngpread.c +++ b/src/png/pngpread.c @@ -1,7 +1,7 @@ /* pngpread.c - read a png file in push mode * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -668,8 +668,8 @@ png_push_read_IDAT(png_structp png_ptr) save_size = png_ptr->save_buffer_size; png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); - png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); - + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) + png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); png_ptr->idat_size -= save_size; png_ptr->buffer_size -= save_size; png_ptr->save_buffer_size -= save_size; @@ -690,7 +690,8 @@ png_push_read_IDAT(png_structp png_ptr) save_size = png_ptr->current_buffer_size; png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); - png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) + png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); png_ptr->idat_size -= save_size; png_ptr->buffer_size -= save_size; @@ -707,6 +708,7 @@ png_push_read_IDAT(png_structp png_ptr) png_crc_finish(png_ptr, 0); png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + png_ptr->mode |= PNG_AFTER_IDAT; } } @@ -752,7 +754,12 @@ png_process_IDAT_data(png_structp png_ptr, png_bytep buffer, (!png_ptr->interlaced && #endif png_ptr->row_number == png_ptr->num_rows-1)) - png_error(png_ptr, "Too much data in IDAT chunks"); + { + if (png_ptr->zstream.avail_in) + png_warning(png_ptr, "Too much data in IDAT chunks"); + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } png_push_process_row(png_ptr); png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; png_ptr->zstream.next_out = png_ptr->row_buf; @@ -987,6 +994,8 @@ png_read_push_finish_row(png_structp png_ptr) (png_ptr->pass == 5 && png_ptr->width < 2)) png_ptr->pass++; + if (png_ptr->pass > 7) + png_ptr->pass--; if (png_ptr->pass >= 7) break; diff --git a/src/png/pngread.c b/src/png/pngread.c index 24ddeb5c7b..31019304c0 100644 --- a/src/png/pngread.c +++ b/src/png/pngread.c @@ -1,7 +1,7 @@ /* pngread.c - read a PNG file * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -789,7 +789,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row) * not called png_set_interlace_handling(), the display_row buffer will * be ignored, so pass NULL to it. * - * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.4 + * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.5rc3 */ void PNGAPI @@ -837,7 +837,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row, * only call this function once. If you desire to have an image for * each pass of a interlaced image, use png_read_rows() instead. * - * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.4 + * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.5rc3 */ void PNGAPI png_read_image(png_structp png_ptr, png_bytepp image) diff --git a/src/png/pngrio.c b/src/png/pngrio.c index bb4197d2ba..d88324a49b 100644 --- a/src/png/pngrio.c +++ b/src/png/pngrio.c @@ -1,7 +1,7 @@ /* pngrio.c - functions for data input * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngrtran.c b/src/png/pngrtran.c index 5ec3ee524a..ed02e10fe5 100644 --- a/src/png/pngrtran.c +++ b/src/png/pngrtran.c @@ -1,7 +1,7 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -16,15 +16,6 @@ #define PNG_INTERNAL #include "png.h" -#if defined(_MSC_VER) && !defined(__MWERKS__) -#define __VISUALC__ _MSC_VER -#endif -#ifdef __VISUALC__ -#ifndef WIN32 -#pragma warning(disable:4135) -#endif -#endif - /* Set the action on getting a CRC error for an ancillary or critical chunk. */ void PNGAPI png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action) diff --git a/src/png/pngrutil.c b/src/png/pngrutil.c index 9740063112..d0a4964cd1 100644 --- a/src/png/pngrutil.c +++ b/src/png/pngrutil.c @@ -1,7 +1,7 @@ /* pngrutil.c - utilities to read a PNG file * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -2883,7 +2883,7 @@ png_read_finish_row(png_structp png_ptr) { if (!(png_ptr->zstream.avail_out) || png_ptr->zstream.avail_in || png_ptr->idat_size) - png_error(png_ptr, "Extra compressed data"); + png_warning(png_ptr, "Extra compressed data"); png_ptr->mode |= PNG_AFTER_IDAT; png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; break; @@ -2893,14 +2893,19 @@ png_read_finish_row(png_structp png_ptr) "Decompression Error"); if (!(png_ptr->zstream.avail_out)) - png_error(png_ptr, "Extra compressed data"); + { + png_warning(png_ptr, "Extra compressed data."); + png_ptr->mode |= PNG_AFTER_IDAT; + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } } png_ptr->zstream.avail_out = 0; } if (png_ptr->idat_size || png_ptr->zstream.avail_in) - png_error(png_ptr, "Extra compression data"); + png_warning(png_ptr, "Extra compression data"); inflateReset(&png_ptr->zstream); diff --git a/src/png/pngset.c b/src/png/pngset.c index c691f9e60f..bc3465ed5d 100644 --- a/src/png/pngset.c +++ b/src/png/pngset.c @@ -1,7 +1,7 @@ /* pngset.c - storage of image information into info struct * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngtest.c b/src/png/pngtest.c index 3b0519ab40..1430f0f395 100644 --- a/src/png/pngtest.c +++ b/src/png/pngtest.c @@ -1,7 +1,7 @@ /* pngtest.c - a simple test program to test libpng * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -1538,4 +1538,4 @@ main(int argc, char *argv[]) } /* Generate a compiler error if there is an old png.h in the search path. */ -typedef version_1_2_4 your_png_h_is_not_version_1_2_4; +typedef version_1_2_5rc3 your_png_h_is_not_version_1_2_5rc3; diff --git a/src/png/pngtrans.c b/src/png/pngtrans.c index d850ee7ac2..59bd606b3b 100644 --- a/src/png/pngtrans.c +++ b/src/png/pngtrans.c @@ -1,7 +1,7 @@ /* pngtrans.c - transforms the data in a row (used by both readers and writers) * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngvcrd.c b/src/png/pngvcrd.c index 72c4412131..cab9aa4791 100644 --- a/src/png/pngvcrd.c +++ b/src/png/pngvcrd.c @@ -2,7 +2,7 @@ * * For Intel x86 CPU and Microsoft Visual C++ compiler * - * libpng version 1.2.4 - July 8, 2002 + * libpng version 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation diff --git a/src/png/pngwio.c b/src/png/pngwio.c index f356b7d4a7..e4f5e11336 100644 --- a/src/png/pngwio.c +++ b/src/png/pngwio.c @@ -1,7 +1,7 @@ /* pngwio.c - functions for data output * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngwrite.c b/src/png/pngwrite.c index ff62395cf4..17444bbe3e 100644 --- a/src/png/pngwrite.c +++ b/src/png/pngwrite.c @@ -1,7 +1,7 @@ /* pngwrite.c - general routines to write a PNG file * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngwtran.c b/src/png/pngwtran.c index d15c0c55ca..1ce2a6d447 100644 --- a/src/png/pngwtran.c +++ b/src/png/pngwtran.c @@ -1,7 +1,7 @@ /* pngwtran.c - transforms the data in a row for PNG writers * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/png/pngwutil.c b/src/png/pngwutil.c index 22155e93f9..0ecaae5a23 100644 --- a/src/png/pngwutil.c +++ b/src/png/pngwutil.c @@ -1,7 +1,7 @@ /* pngwutil.c - utilities to write a PNG file * - * libpng 1.2.4 - July 8, 2002 + * libpng 1.2.5rc3 - September 18, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/regex/COPYRIGHT b/src/regex/COPYRIGHT index 65aaadd6cf..30c1f7a488 100644 --- a/src/regex/COPYRIGHT +++ b/src/regex/COPYRIGHT @@ -1,166 +1,20 @@ -This regular expression package was originally developed by Henry Spencer. -It bears the following copyright notice: +Copyright 1992, 1993, 1994, 1997 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. -********************************************************************** +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: -Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. -Development of this software was funded, in part, by Cray Research Inc., -UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics -Corporation, none of whom are responsible for the results. The author -thanks all of them. +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. -Redistribution and use in source and binary forms -- with or without -modification -- are permitted for any purpose, provided that -redistributions in source form retain this entire copyright notice and -indicate the origin and nature of any modifications. - -I'd appreciate being given credit for this package in the documentation -of software which uses it, but that is not a requirement. - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -********************************************************************** - -PostgreSQL adopted the code out of Tcl 8.4.1. Portions of regc_locale.c -and re_syntax.n were developed by Tcl developers other than Henry; these -files bear the Tcl copyright and license notice: - -********************************************************************** - -This software is copyrighted by the Regents of the University of -California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState -Corporation and other parties. The following terms apply to all files -associated with the software unless explicitly disclaimed in -individual files. - -The authors hereby grant permission to use, copy, modify, distribute, -and license this software and its documentation for any purpose, provided -that existing copyright notices are retained in all copies and that this -notice is included verbatim in any distributions. No written agreement, -license, or royalty fee is required for any of the authorized uses. -Modifications to this software may be copyrighted by their authors -and need not follow the licensing terms described here, provided that -the new terms are clearly indicated on the first page of each file where -they apply. - -IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY -FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY -DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE -IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE -NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -MODIFICATIONS. - -GOVERNMENT USE: If you are acquiring this software on behalf of the -U.S. government, the Government shall have only "Restricted Rights" -in the software and related documentation as defined in the Federal -Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you -are acquiring the software on behalf of the Department of Defense, the -software shall be classified as "Commercial Computer Software" and the -Government shall have only "Restricted Rights" as defined in Clause -252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the -authors grant the U.S. Government and others acting in its behalf -permission to use and distribute the software in accordance with the -terms specified in this license. - -********************************************************************** - -Subsequent modifications to the code by the PostgreSQL project follow -the same license terms as the rest of PostgreSQL. -(License follows) -**************************************************************************** -PostgreSQL Database Management System -(formerly known as Postgres, then as Postgres95) - -Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group - -Portions Copyright (c) 1994, The Regents of the University of California - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose, without fee, and without a written agreement -is hereby granted, provided that the above copyright notice and this -paragraph and the following two paragraphs appear in all copies. - -IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING -LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS -DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO -PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -**************************************************************************** -And if that's not enough, changes made from wxWindows are put under the -wxWindows license: -**************************************************************************** - wxWindows Library Licence, Version 3 - ==================================== - - Copyright (C) 1998 Julian Smart, Robert Roebling [, ...] - - Everyone is permitted to copy and distribute verbatim copies - of this licence document, but changing it is not allowed. - - WXWINDOWS LIBRARY LICENCE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public Licence as published by - the Free Software Foundation; either version 2 of the Licence, or (at - your option) any later version. - - This library is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library - General Public Licence for more details. - - You should have received a copy of the GNU Library General Public Licence - along with this software, usually in a file named COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA. - - EXCEPTION NOTICE - - 1. As a special exception, the copyright holders of this library give - permission for additional uses of the text contained in this release of - the library as licenced under the wxWindows Library Licence, applying - either version 3 of the Licence, or (at your option) any later version of - the Licence as published by the copyright holders of version 3 of the - Licence document. - - 2. The exception is that you may use, copy, link, modify and distribute - under the user's own terms, binary object code versions of works based - on the Library. - - 3. If you copy code from files distributed under the terms of the GNU - General Public Licence or the GNU Library General Public Licence into a - copy of this library, as this licence permits, the exception does not - apply to the code that you add in this way. To avoid misleading anyone as - to the status of such modified files, you must delete this exception - notice from such code and/or adjust the licensing conditions notice - accordingly. - - 4. If you write modifications of your own for this library, it is your - choice whether to permit this exception to apply to your modifications. - If you do not wish that, you must delete the exception notice from such - code and/or adjust the licensing conditions notice accordingly. -**************************************************************************** +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. +4. This notice may not be removed or altered. diff --git a/src/regex/Makefile b/src/regex/Makefile index cb76d37ea7..ce20561fa9 100644 --- a/src/regex/Makefile +++ b/src/regex/Makefile @@ -1,28 +1,130 @@ -#------------------------------------------------------------------------- -# -# Makefile-- -# Makefile for backend/regex -# -# IDENTIFICATION -# $Header: /projects/cvsroot/pgsql-server/src/backend/regex/Makefile,v 1.20 2003/02/05 17:41:32 tgl Exp $ -# -#------------------------------------------------------------------------- +# You probably want to take -DREDEBUG out of CFLAGS, and put something like +# -O in, *after* testing (-DREDEBUG strengthens testing by enabling a lot of +# internal assertion checking and some debugging facilities). +# Put -Dconst= in for a pre-ANSI compiler. +# Do not take -DPOSIX_MISTAKE out. +# REGCFLAGS isn't important to you (it's for my use in some special contexts). +CFLAGS=-I. -DPOSIX_MISTAKE -DREDEBUG $(REGCFLAGS) -subdir = src/backend/regex -top_builddir = ../../.. -include $(top_builddir)/src/Makefile.global +# If you have a pre-ANSI compiler, put -o into MKHFLAGS. If you want +# the Berkeley __P macro, put -b in. +MKHFLAGS= -OBJS = regcomp.o regerror.o regexec.o regfree.o +# Flags for linking but not compiling, if any. +LDFLAGS= -all: SUBSYS.o +# Extra libraries for linking, if any. +LIBS= -SUBSYS.o: $(OBJS) - $(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS) +# Internal stuff, should not need changing. +OBJPRODN=regcomp.o regexec.o regerror.o regfree.o +OBJS=$(OBJPRODN) split.o debug.o re_main.o +H=cclass.h cname.h regex2.h utils.h +REGSRC=regcomp.c regerror.c regexec.c regfree.c +ALLSRC=$(REGSRC) engine.c debug.c re_main.c split.c -# mark inclusion dependencies between .c files explicitly -regcomp.o: regcomp.c regc_lex.c regc_color.c regc_nfa.c regc_cvec.c regc_locale.c +# Stuff that matters only if you're trying to lint the package. +LINTFLAGS=-I. -Dstatic= -Dconst= -DREDEBUG +LINTC=regcomp.c regexec.c regerror.c regfree.c debug.c re_main.c +JUNKLINT=possible pointer alignment|null effect -regexec.o: regexec.c rege_dfa.c +# arrangements to build forward-reference header files +.SUFFIXES: .ih .h +.c.ih: + sh ./mkh $(MKHFLAGS) -p $< >$@ -clean: - rm -f SUBSYS.o $(OBJS) +default: r + +lib: purge $(OBJPRODN) + rm -f libregex.a + ar crv libregex.a $(OBJPRODN) + +purge: + rm -f *.o + +# stuff to build regex.h +REGEXH=regex.h +REGEXHSRC=regex2.h $(REGSRC) +$(REGEXH): $(REGEXHSRC) mkh + sh ./mkh $(MKHFLAGS) -i _REGEX_H_ $(REGEXHSRC) >regex.tmp + cmp -s regex.tmp regex.h 2>/dev/null || cp regex.tmp regex.h + rm -f regex.tmp + +# dependencies +$(OBJPRODN) debug.o: utils.h regex.h regex2.h +regcomp.o: cclass.h cname.h regcomp.ih +regexec.o: engine.c engine.ih +regerror.o: regerror.ih +debug.o: debug.ih +re_main.o: re_main.ih + +# tester +re: $(OBJS) + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $@ + +# regression test +r: re tests + ./re &1 | egrep -v '$(JUNKLINT)' | tee lint + +fullprint: + ti README WHATSNEW notes todo | list + ti *.h | list + list *.c + list regex.3 regex.7 + +print: + ti README WHATSNEW notes todo | list + ti *.h | list + list reg*.c engine.c + + +mf.tmp: Makefile + sed '/^REGEXH=/s/=.*/=regex.h/' Makefile | sed '/#DEL$$/d' >$@ + +DTRH=cclass.h cname.h regex2.h utils.h +PRE=COPYRIGHT README WHATSNEW +POST=mkh regex.3 regex.7 tests $(DTRH) $(ALLSRC) fake/*.[ch] +FILES=$(PRE) Makefile $(POST) +DTR=$(PRE) Makefile=mf.tmp $(POST) +dtr: $(FILES) mf.tmp + makedtr $(DTR) >$@ + rm mf.tmp + +cio: $(FILES) + cio $(FILES) + +rdf: $(FILES) + rcsdiff -c $(FILES) 2>&1 | p + +# various forms of cleanup +tidy: + rm -f junk* core core.* *.core dtr *.tmp lint + +clean: tidy + rm -f *.o *.s *.ih re libregex.a + +# don't do this one unless you know what you're doing +spotless: clean + rm -f mkh regex.h diff --git a/src/regex/cclass.h b/src/regex/cclass.h new file mode 100644 index 0000000000..2b50a76197 --- /dev/null +++ b/src/regex/cclass.h @@ -0,0 +1,20 @@ +/* character-class table */ +static struct cclass { + char *name; + char *chars; + char *multis; +} cclasses[] = { + { "alnum", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "" }, + { "alpha", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "" }, + { "blank", " \t", "" }, + { "cntrl", "\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\177", "" }, + { "digit", "0123456789", "" }, + { "graph", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", "" }, + { "lower", "abcdefghijklmnopqrstuvwxyz", "" }, + { "print", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ", "" }, + { "punct", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", "" }, + { "space", "\t\n\v\f\r ", "" }, + { "upper", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "" }, + { "xdigit", "0123456789ABCDEFabcdef", "" }, + { NULL, 0, "" } +}; diff --git a/src/regex/cname.h b/src/regex/cname.h new file mode 100644 index 0000000000..c1a6dd5656 --- /dev/null +++ b/src/regex/cname.h @@ -0,0 +1,102 @@ +/* character-name table */ +static struct cname { + char *name; + char code; +} cnames[] = { + { "NUL", '\0' }, + { "SOH", '\001' }, + { "STX", '\002' }, + { "ETX", '\003' }, + { "EOT", '\004' }, + { "ENQ", '\005' }, + { "ACK", '\006' }, + { "BEL", '\007' }, + { "alert", '\007' }, + { "BS", '\010' }, + { "backspace", '\b' }, + { "HT", '\011' }, + { "tab", '\t' }, + { "LF", '\012' }, + { "newline", '\n' }, + { "VT", '\013' }, + { "vertical-tab", '\v' }, + { "FF", '\014' }, + { "form-feed", '\f' }, + { "CR", '\015' }, + { "carriage-return", '\r' }, + { "SO", '\016' }, + { "SI", '\017' }, + { "DLE", '\020' }, + { "DC1", '\021' }, + { "DC2", '\022' }, + { "DC3", '\023' }, + { "DC4", '\024' }, + { "NAK", '\025' }, + { "SYN", '\026' }, + { "ETB", '\027' }, + { "CAN", '\030' }, + { "EM", '\031' }, + { "SUB", '\032' }, + { "ESC", '\033' }, + { "IS4", '\034' }, + { "FS", '\034' }, + { "IS3", '\035' }, + { "GS", '\035' }, + { "IS2", '\036' }, + { "RS", '\036' }, + { "IS1", '\037' }, + { "US", '\037' }, + { "space", ' ' }, + { "exclamation-mark", '!' }, + { "quotation-mark", '"' }, + { "number-sign", '#' }, + { "dollar-sign", '$' }, + { "percent-sign", '%' }, + { "ampersand", '&' }, + { "apostrophe", '\'' }, + { "left-parenthesis", '(' }, + { "right-parenthesis", ')' }, + { "asterisk", '*' }, + { "plus-sign", '+' }, + { "comma", ',' }, + { "hyphen", '-' }, + { "hyphen-minus", '-' }, + { "period", '.' }, + { "full-stop", '.' }, + { "slash", '/' }, + { "solidus", '/' }, + { "zero", '0' }, + { "one", '1' }, + { "two", '2' }, + { "three", '3' }, + { "four", '4' }, + { "five", '5' }, + { "six", '6' }, + { "seven", '7' }, + { "eight", '8' }, + { "nine", '9' }, + { "colon", ':' }, + { "semicolon", ';' }, + { "less-than-sign", '<' }, + { "equals-sign", '=' }, + { "greater-than-sign", '>' }, + { "question-mark", '?' }, + { "commercial-at", '@' }, + { "left-square-bracket", '[' }, + { "backslash", '\\' }, + { "reverse-solidus", '\\' }, + { "right-square-bracket", ']' }, + { "circumflex", '^' }, + { "circumflex-accent", '^' }, + { "underscore", '_' }, + { "low-line", '_' }, + { "grave-accent", '`' }, + { "left-brace", '{' }, + { "left-curly-bracket", '{' }, + { "vertical-line", '|' }, + { "right-brace", '}' }, + { "right-curly-bracket", '}' }, + { "tilde", '~' }, + { "DEL", '\177' }, + { NULL, 0 }, +}; diff --git a/src/regex/debug.c b/src/regex/debug.c new file mode 100644 index 0000000000..bf40bbb3bd --- /dev/null +++ b/src/regex/debug.c @@ -0,0 +1,242 @@ +#include +#include +#include +#include +#include +#include +#include "regex.h" + +#include "utils.h" +#include "regex2.h" +#include "debug.ih" + +/* + - regprint - print a regexp for debugging + == void regprint(regex_t *r, FILE *d); + */ +void +regprint(r, d) +regex_t *r; +FILE *d; +{ + register struct re_guts *g = r->re_g; + register int i; + register int c; + register int last; + int nincat[NC]; + + fprintf(d, "%ld states, %d categories", (long)g->nstates, + g->ncategories); + fprintf(d, ", first %ld last %ld", (long)g->firststate, + (long)g->laststate); + if (g->iflags&USEBOL) + fprintf(d, ", USEBOL"); + if (g->iflags&USEEOL) + fprintf(d, ", USEEOL"); + if (g->iflags&BAD) + fprintf(d, ", BAD"); + if (g->nsub > 0) + fprintf(d, ", nsub=%ld", (long)g->nsub); + if (g->must != NULL) + fprintf(d, ", must(%ld) `%*s'", (long)g->mlen, (int)g->mlen, + g->must); + if (g->backrefs) + fprintf(d, ", backrefs"); + if (g->nplus > 0) + fprintf(d, ", nplus %ld", (long)g->nplus); + fprintf(d, "\n"); + s_print(g, d); + for (i = 0; i < g->ncategories; i++) { + nincat[i] = 0; + for (c = CHAR_MIN; c <= CHAR_MAX; c++) + if (g->categories[c] == i) + nincat[i]++; + } + fprintf(d, "cc0#%d", nincat[0]); + for (i = 1; i < g->ncategories; i++) + if (nincat[i] == 1) { + for (c = CHAR_MIN; c <= CHAR_MAX; c++) + if (g->categories[c] == i) + break; + fprintf(d, ", %d=%s", i, regchar(c)); + } + fprintf(d, "\n"); + for (i = 1; i < g->ncategories; i++) + if (nincat[i] != 1) { + fprintf(d, "cc%d\t", i); + last = -1; + for (c = CHAR_MIN; c <= CHAR_MAX+1; c++) /* +1 does flush */ + if (c <= CHAR_MAX && g->categories[c] == i) { + if (last < 0) { + fprintf(d, "%s", regchar(c)); + last = c; + } + } else { + if (last >= 0) { + if (last != c-1) + fprintf(d, "-%s", + regchar(c-1)); + last = -1; + } + } + fprintf(d, "\n"); + } +} + +/* + - s_print - print the strip for debugging + == static void s_print(register struct re_guts *g, FILE *d); + */ +static void +s_print(g, d) +register struct re_guts *g; +FILE *d; +{ + register sop *s; + register cset *cs; + register int i; + register int done = 0; + register sop opnd; + register int col = 0; + register int last; + register sopno offset = 2; +# define GAP() { if (offset % 5 == 0) { \ + if (col > 40) { \ + fprintf(d, "\n\t"); \ + col = 0; \ + } else { \ + fprintf(d, " "); \ + col++; \ + } \ + } else \ + col++; \ + offset++; \ + } + + if (OP(g->strip[0]) != OEND) + fprintf(d, "missing initial OEND!\n"); + for (s = &g->strip[1]; !done; s++) { + opnd = OPND(*s); + switch (OP(*s)) { + case OEND: + fprintf(d, "\n"); + done = 1; + break; + case OCHAR: + if (strchr("\\|()^$.[+*?{}!<> ", (char)opnd) != NULL) + fprintf(d, "\\%c", (char)opnd); + else + fprintf(d, "%s", regchar((char)opnd)); + break; + case OBOL: + fprintf(d, "^"); + break; + case OEOL: + fprintf(d, "$"); + break; + case OBOW: + fprintf(d, "\\{"); + break; + case OEOW: + fprintf(d, "\\}"); + break; + case OANY: + fprintf(d, "."); + break; + case OANYOF: + fprintf(d, "[(%ld)", (long)opnd); + cs = &g->sets[opnd]; + last = -1; + for (i = 0; i < g->csetsize+1; i++) /* +1 flushes */ + if (CHIN(cs, i) && i < g->csetsize) { + if (last < 0) { + fprintf(d, "%s", regchar(i)); + last = i; + } + } else { + if (last >= 0) { + if (last != i-1) + fprintf(d, "-%s", + regchar(i-1)); + last = -1; + } + } + fprintf(d, "]"); + break; + case OBACK_: + fprintf(d, "(\\<%ld>", (long)opnd); + break; + case O_BACK: + fprintf(d, "<%ld>\\)", (long)opnd); + break; + case OPLUS_: + fprintf(d, "(+"); + if (OP(*(s+opnd)) != O_PLUS) + fprintf(d, "<%ld>", (long)opnd); + break; + case O_PLUS: + if (OP(*(s-opnd)) != OPLUS_) + fprintf(d, "<%ld>", (long)opnd); + fprintf(d, "+)"); + break; + case OQUEST_: + fprintf(d, "(?"); + if (OP(*(s+opnd)) != O_QUEST) + fprintf(d, "<%ld>", (long)opnd); + break; + case O_QUEST: + if (OP(*(s-opnd)) != OQUEST_) + fprintf(d, "<%ld>", (long)opnd); + fprintf(d, "?)"); + break; + case OLPAREN: + fprintf(d, "((<%ld>", (long)opnd); + break; + case ORPAREN: + fprintf(d, "<%ld>))", (long)opnd); + break; + case OCH_: + fprintf(d, "<"); + if (OP(*(s+opnd)) != OOR2) + fprintf(d, "<%ld>", (long)opnd); + break; + case OOR1: + if (OP(*(s-opnd)) != OOR1 && OP(*(s-opnd)) != OCH_) + fprintf(d, "<%ld>", (long)opnd); + fprintf(d, "|"); + break; + case OOR2: + fprintf(d, "|"); + if (OP(*(s+opnd)) != OOR2 && OP(*(s+opnd)) != O_CH) + fprintf(d, "<%ld>", (long)opnd); + break; + case O_CH: + if (OP(*(s-opnd)) != OOR1) + fprintf(d, "<%ld>", (long)opnd); + fprintf(d, ">"); + break; + default: + fprintf(d, "!%d(%d)!", OP(*s), opnd); + break; + } + if (!done) + GAP(); + } +} + +/* + - regchar - make a character printable + == static char *regchar(int ch); + */ +static char * /* -> representation */ +regchar(ch) +int ch; +{ + static char buf[10]; + + if (isprint(ch) || ch == ' ') + sprintf(buf, "%c", ch); + else + sprintf(buf, "\\%o", ch); + return(buf); +} diff --git a/src/regex/engine.c b/src/regex/engine.c new file mode 100644 index 0000000000..0b88dcf1ed --- /dev/null +++ b/src/regex/engine.c @@ -0,0 +1,1019 @@ +/* + * The matching engine and friends. This file is #included by regexec.c + * after suitable #defines of a variety of macros used herein, so that + * different state representations can be used without duplicating masses + * of code. + */ + +#ifdef SNAMES +#define matcher smatcher +#define fast sfast +#define slow sslow +#define dissect sdissect +#define backref sbackref +#define step sstep +#define print sprint +#define at sat +#define match smat +#endif +#ifdef LNAMES +#define matcher lmatcher +#define fast lfast +#define slow lslow +#define dissect ldissect +#define backref lbackref +#define step lstep +#define print lprint +#define at lat +#define match lmat +#endif + +/* another structure passed up and down to avoid zillions of parameters */ +struct match { + struct re_guts *g; + int eflags; + regmatch_t *pmatch; /* [nsub+1] (0 element unused) */ + char *offp; /* offsets work from here */ + char *beginp; /* start of string -- virtual NUL precedes */ + char *endp; /* end of string -- virtual NUL here */ + char *coldp; /* can be no match starting before here */ + char **lastpos; /* [nplus+1] */ + STATEVARS; + states st; /* current states */ + states fresh; /* states for a fresh start */ + states tmp; /* temporary */ + states empty; /* empty set of states */ +}; + +#include "engine.ih" + +#ifdef REDEBUG +#define SP(t, s, c) print(m, t, s, c, stdout) +#define AT(t, p1, p2, s1, s2) at(m, t, p1, p2, s1, s2) +#define NOTE(str) { if (m->eflags®_TRACE) printf("=%s\n", (str)); } +#else +#define SP(t, s, c) /* nothing */ +#define AT(t, p1, p2, s1, s2) /* nothing */ +#define NOTE(s) /* nothing */ +#endif + +/* + - matcher - the actual matching engine + == static int matcher(register struct re_guts *g, char *string, \ + == size_t nmatch, regmatch_t pmatch[], int eflags); + */ +static int /* 0 success, REG_NOMATCH failure */ +matcher(g, string, nmatch, pmatch, eflags) +register struct re_guts *g; +char *string; +size_t nmatch; +regmatch_t pmatch[]; +int eflags; +{ + register char *endp; + register size_t i; + struct match mv; + register struct match *m = &mv; + register char *dp; + const register sopno gf = g->firststate+1; /* +1 for OEND */ + const register sopno gl = g->laststate; + char *start; + char *stop; + + /* simplify the situation where possible */ + if (g->cflags®_NOSUB) + nmatch = 0; + if (eflags®_STARTEND) { + start = string + pmatch[0].rm_so; + stop = string + pmatch[0].rm_eo; + } else { + start = string; + stop = start + strlen(start); + } + if (stop < start) + return(REG_INVARG); + + /* prescreening; this does wonders for this rather slow code */ + if (g->must != NULL) { + for (dp = start; dp < stop; dp++) + if (*dp == g->must[0] && stop - dp >= g->mlen && + memcmp(dp, g->must, (size_t)g->mlen) == 0) + break; + if (dp == stop) /* we didn't find g->must */ + return(REG_NOMATCH); + } + + /* match struct setup */ + m->g = g; + m->eflags = eflags; + m->pmatch = NULL; + m->lastpos = NULL; + m->offp = string; + m->beginp = start; + m->endp = stop; + STATESETUP(m, 4); + SETUP(m->st); + SETUP(m->fresh); + SETUP(m->tmp); + SETUP(m->empty); + CLEAR(m->empty); + + /* this loop does only one repetition except for backrefs */ + for (;;) { + endp = fast(m, start, stop, gf, gl); + if (endp == NULL) { /* a miss */ + STATETEARDOWN(m); + return(REG_NOMATCH); + } + if (nmatch == 0 && !g->backrefs) + break; /* no further info needed */ + + /* where? */ + assert(m->coldp != NULL); + for (;;) { + NOTE("finding start"); + endp = slow(m, m->coldp, stop, gf, gl); + if (endp != NULL) + break; + assert(m->coldp < m->endp); + m->coldp++; + } + if (nmatch == 1 && !g->backrefs) + break; /* no further info needed */ + + /* oh my, he wants the subexpressions... */ + if (m->pmatch == NULL) + m->pmatch = (regmatch_t *)malloc((m->g->nsub + 1) * + sizeof(regmatch_t)); + if (m->pmatch == NULL) { + STATETEARDOWN(m); + return(REG_ESPACE); + } + for (i = 1; i <= m->g->nsub; i++) + m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1; + if (!g->backrefs && !(m->eflags®_BACKR)) { + NOTE("dissecting"); + dp = dissect(m, m->coldp, endp, gf, gl); + } else { + if (g->nplus > 0 && m->lastpos == NULL) + m->lastpos = (char **)malloc((g->nplus+1) * + sizeof(char *)); + if (g->nplus > 0 && m->lastpos == NULL) { + free(m->pmatch); + STATETEARDOWN(m); + return(REG_ESPACE); + } + NOTE("backref dissect"); + dp = backref(m, m->coldp, endp, gf, gl, (sopno)0); + } + if (dp != NULL) + break; + + /* uh-oh... we couldn't find a subexpression-level match */ + assert(g->backrefs); /* must be back references doing it */ + assert(g->nplus == 0 || m->lastpos != NULL); + for (;;) { + if (dp != NULL || endp <= m->coldp) + break; /* defeat */ + NOTE("backoff"); + endp = slow(m, m->coldp, endp-1, gf, gl); + if (endp == NULL) + break; /* defeat */ + /* try it on a shorter possibility */ +#ifndef NDEBUG + for (i = 1; i <= m->g->nsub; i++) { + assert(m->pmatch[i].rm_so == -1); + assert(m->pmatch[i].rm_eo == -1); + } +#endif + NOTE("backoff dissect"); + dp = backref(m, m->coldp, endp, gf, gl, (sopno)0); + } + assert(dp == NULL || dp == endp); + if (dp != NULL) /* found a shorter one */ + break; + + /* despite initial appearances, there is no match here */ + NOTE("false alarm"); + start = m->coldp + 1; /* recycle starting later */ + assert(start <= stop); + } + + /* fill in the details if requested */ + if (nmatch > 0) { + pmatch[0].rm_so = m->coldp - m->offp; + pmatch[0].rm_eo = endp - m->offp; + } + if (nmatch > 1) { + assert(m->pmatch != NULL); + for (i = 1; i < nmatch; i++) + if (i <= m->g->nsub) + pmatch[i] = m->pmatch[i]; + else { + pmatch[i].rm_so = -1; + pmatch[i].rm_eo = -1; + } + } + + if (m->pmatch != NULL) + free((char *)m->pmatch); + if (m->lastpos != NULL) + free((char *)m->lastpos); + STATETEARDOWN(m); + return(0); +} + +/* + - dissect - figure out what matched what, no back references + == static char *dissect(register struct match *m, char *start, \ + == char *stop, sopno startst, sopno stopst); + */ +static char * /* == stop (success) always */ +dissect(m, start, stop, startst, stopst) +register struct match *m; +char *start; +char *stop; +sopno startst; +sopno stopst; +{ + register int i; + register sopno ss; /* start sop of current subRE */ + register sopno es; /* end sop of current subRE */ + register char *sp; /* start of string matched by it */ + register char *stp; /* string matched by it cannot pass here */ + register char *rest; /* start of rest of string */ + register char *tail; /* string unmatched by rest of RE */ + register sopno ssub; /* start sop of subsubRE */ + register sopno esub; /* end sop of subsubRE */ + register char *ssp; /* start of string matched by subsubRE */ + register char *sep; /* end of string matched by subsubRE */ + register char *oldssp; /* previous ssp */ + register char *dp; + + AT("diss", start, stop, startst, stopst); + sp = start; + for (ss = startst; ss < stopst; ss = es) { + /* identify end of subRE */ + es = ss; + switch (OP(m->g->strip[es])) { + case OPLUS_: + case OQUEST_: + es += OPND(m->g->strip[es]); + break; + case OCH_: + while (OP(m->g->strip[es]) != O_CH) + es += OPND(m->g->strip[es]); + break; + } + es++; + + /* figure out what it matched */ + switch (OP(m->g->strip[ss])) { + case OEND: + assert(nope); + break; + case OCHAR: + sp++; + break; + case OBOL: + case OEOL: + case OBOW: + case OEOW: + break; + case OANY: + case OANYOF: + sp++; + break; + case OBACK_: + case O_BACK: + assert(nope); + break; + /* cases where length of match is hard to find */ + case OQUEST_: + stp = stop; + for (;;) { + /* how long could this one be? */ + rest = slow(m, sp, stp, ss, es); + assert(rest != NULL); /* it did match */ + /* could the rest match the rest? */ + tail = slow(m, rest, stop, es, stopst); + if (tail == stop) + break; /* yes! */ + /* no -- try a shorter match for this one */ + stp = rest - 1; + assert(stp >= sp); /* it did work */ + } + ssub = ss + 1; + esub = es - 1; + /* did innards match? */ + if (slow(m, sp, rest, ssub, esub) != NULL) { + dp = dissect(m, sp, rest, ssub, esub); + assert(dp == rest); + } else /* no */ + assert(sp == rest); + sp = rest; + break; + case OPLUS_: + stp = stop; + for (;;) { + /* how long could this one be? */ + rest = slow(m, sp, stp, ss, es); + assert(rest != NULL); /* it did match */ + /* could the rest match the rest? */ + tail = slow(m, rest, stop, es, stopst); + if (tail == stop) + break; /* yes! */ + /* no -- try a shorter match for this one */ + stp = rest - 1; + assert(stp >= sp); /* it did work */ + } + ssub = ss + 1; + esub = es - 1; + ssp = sp; + oldssp = ssp; + for (;;) { /* find last match of innards */ + sep = slow(m, ssp, rest, ssub, esub); + if (sep == NULL || sep == ssp) + break; /* failed or matched null */ + oldssp = ssp; /* on to next try */ + ssp = sep; + } + if (sep == NULL) { + /* last successful match */ + sep = ssp; + ssp = oldssp; + } + assert(sep == rest); /* must exhaust substring */ + assert(slow(m, ssp, sep, ssub, esub) == rest); + dp = dissect(m, ssp, sep, ssub, esub); + assert(dp == sep); + sp = rest; + break; + case OCH_: + stp = stop; + for (;;) { + /* how long could this one be? */ + rest = slow(m, sp, stp, ss, es); + assert(rest != NULL); /* it did match */ + /* could the rest match the rest? */ + tail = slow(m, rest, stop, es, stopst); + if (tail == stop) + break; /* yes! */ + /* no -- try a shorter match for this one */ + stp = rest - 1; + assert(stp >= sp); /* it did work */ + } + ssub = ss + 1; + esub = ss + OPND(m->g->strip[ss]) - 1; + assert(OP(m->g->strip[esub]) == OOR1); + for (;;) { /* find first matching branch */ + if (slow(m, sp, rest, ssub, esub) == rest) + break; /* it matched all of it */ + /* that one missed, try next one */ + assert(OP(m->g->strip[esub]) == OOR1); + esub++; + assert(OP(m->g->strip[esub]) == OOR2); + ssub = esub + 1; + esub += OPND(m->g->strip[esub]); + if (OP(m->g->strip[esub]) == OOR2) + esub--; + else + assert(OP(m->g->strip[esub]) == O_CH); + } + dp = dissect(m, sp, rest, ssub, esub); + assert(dp == rest); + sp = rest; + break; + case O_PLUS: + case O_QUEST: + case OOR1: + case OOR2: + case O_CH: + assert(nope); + break; + case OLPAREN: + i = OPND(m->g->strip[ss]); + assert(0 < i && i <= m->g->nsub); + m->pmatch[i].rm_so = sp - m->offp; + break; + case ORPAREN: + i = OPND(m->g->strip[ss]); + assert(0 < i && i <= m->g->nsub); + m->pmatch[i].rm_eo = sp - m->offp; + break; + default: /* uh oh */ + assert(nope); + break; + } + } + + assert(sp == stop); + return(sp); +} + +/* + - backref - figure out what matched what, figuring in back references + == static char *backref(register struct match *m, char *start, \ + == char *stop, sopno startst, sopno stopst, sopno lev); + */ +static char * /* == stop (success) or NULL (failure) */ +backref(m, start, stop, startst, stopst, lev) +register struct match *m; +char *start; +char *stop; +sopno startst; +sopno stopst; +sopno lev; /* PLUS nesting level */ +{ + register int i; + register sopno ss; /* start sop of current subRE */ + register char *sp; /* start of string matched by it */ + register sopno ssub; /* start sop of subsubRE */ + register sopno esub; /* end sop of subsubRE */ + register char *ssp; /* start of string matched by subsubRE */ + register char *dp; + register size_t len; + register int hard; + register sop s; + register regoff_t offsave; + register cset *cs; + + AT("back", start, stop, startst, stopst); + sp = start; + + /* get as far as we can with easy stuff */ + hard = 0; + for (ss = startst; !hard && ss < stopst; ss++) + switch (OP(s = m->g->strip[ss])) { + case OCHAR: + if (sp == stop || *sp++ != (char)OPND(s)) + return(NULL); + break; + case OANY: + if (sp == stop) + return(NULL); + sp++; + break; + case OANYOF: + cs = &m->g->sets[OPND(s)]; + if (sp == stop || !CHIN(cs, *sp++)) + return(NULL); + break; + case OBOL: + if ( (sp == m->beginp && !(m->eflags®_NOTBOL)) || + (sp < m->endp && *(sp-1) == '\n' && + (m->g->cflags®_NEWLINE)) ) + { /* yes */ } + else + return(NULL); + break; + case OEOL: + if ( (sp == m->endp && !(m->eflags®_NOTEOL)) || + (sp < m->endp && *sp == '\n' && + (m->g->cflags®_NEWLINE)) ) + { /* yes */ } + else + return(NULL); + break; + case OBOW: + if (( (sp == m->beginp && !(m->eflags®_NOTBOL)) || + (sp < m->endp && *(sp-1) == '\n' && + (m->g->cflags®_NEWLINE)) || + (sp > m->beginp && + !ISWORD(*(sp-1))) ) && + (sp < m->endp && ISWORD(*sp)) ) + { /* yes */ } + else + return(NULL); + break; + case OEOW: + if (( (sp == m->endp && !(m->eflags®_NOTEOL)) || + (sp < m->endp && *sp == '\n' && + (m->g->cflags®_NEWLINE)) || + (sp < m->endp && !ISWORD(*sp)) ) && + (sp > m->beginp && ISWORD(*(sp-1))) ) + { /* yes */ } + else + return(NULL); + break; + case O_QUEST: + break; + case OOR1: /* matches null but needs to skip */ + ss++; + s = m->g->strip[ss]; + do { + assert(OP(s) == OOR2); + ss += OPND(s); + } while (OP(s = m->g->strip[ss]) != O_CH); + /* note that the ss++ gets us past the O_CH */ + break; + default: /* have to make a choice */ + hard = 1; + break; + } + if (!hard) { /* that was it! */ + if (sp != stop) + return(NULL); + return(sp); + } + ss--; /* adjust for the for's final increment */ + + /* the hard stuff */ + AT("hard", sp, stop, ss, stopst); + s = m->g->strip[ss]; + switch (OP(s)) { + case OBACK_: /* the vilest depths */ + i = OPND(s); + assert(0 < i && i <= m->g->nsub); + if (m->pmatch[i].rm_eo == -1) + return(NULL); + assert(m->pmatch[i].rm_so != -1); + len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so; + assert(stop - m->beginp >= len); + if (sp > stop - len) + return(NULL); /* not enough left to match */ + ssp = m->offp + m->pmatch[i].rm_so; + if (memcmp(sp, ssp, len) != 0) + return(NULL); + while (m->g->strip[ss] != SOP(O_BACK, i)) + ss++; + return(backref(m, sp+len, stop, ss+1, stopst, lev)); + break; + case OQUEST_: /* to null or not */ + dp = backref(m, sp, stop, ss+1, stopst, lev); + if (dp != NULL) + return(dp); /* not */ + return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev)); + break; + case OPLUS_: + assert(m->lastpos != NULL); + assert(lev+1 <= m->g->nplus); + m->lastpos[lev+1] = sp; + return(backref(m, sp, stop, ss+1, stopst, lev+1)); + break; + case O_PLUS: + if (sp == m->lastpos[lev]) /* last pass matched null */ + return(backref(m, sp, stop, ss+1, stopst, lev-1)); + /* try another pass */ + m->lastpos[lev] = sp; + dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev); + if (dp == NULL) + return(backref(m, sp, stop, ss+1, stopst, lev-1)); + else + return(dp); + break; + case OCH_: /* find the right one, if any */ + ssub = ss + 1; + esub = ss + OPND(s) - 1; + assert(OP(m->g->strip[esub]) == OOR1); + for (;;) { /* find first matching branch */ + dp = backref(m, sp, stop, ssub, esub, lev); + if (dp != NULL) + return(dp); + /* that one missed, try next one */ + if (OP(m->g->strip[esub]) == O_CH) + return(NULL); /* there is none */ + esub++; + assert(OP(m->g->strip[esub]) == OOR2); + ssub = esub + 1; + esub += OPND(m->g->strip[esub]); + if (OP(m->g->strip[esub]) == OOR2) + esub--; + else + assert(OP(m->g->strip[esub]) == O_CH); + } + break; + case OLPAREN: /* must undo assignment if rest fails */ + i = OPND(s); + assert(0 < i && i <= m->g->nsub); + offsave = m->pmatch[i].rm_so; + m->pmatch[i].rm_so = sp - m->offp; + dp = backref(m, sp, stop, ss+1, stopst, lev); + if (dp != NULL) + return(dp); + m->pmatch[i].rm_so = offsave; + return(NULL); + break; + case ORPAREN: /* must undo assignment if rest fails */ + i = OPND(s); + assert(0 < i && i <= m->g->nsub); + offsave = m->pmatch[i].rm_eo; + m->pmatch[i].rm_eo = sp - m->offp; + dp = backref(m, sp, stop, ss+1, stopst, lev); + if (dp != NULL) + return(dp); + m->pmatch[i].rm_eo = offsave; + return(NULL); + break; + default: /* uh oh */ + assert(nope); + break; + } + + /* "can't happen" */ + assert(nope); + /* NOTREACHED */ + return((char *)NULL); /* dummy */ +} + +/* + - fast - step through the string at top speed + == static char *fast(register struct match *m, char *start, \ + == char *stop, sopno startst, sopno stopst); + */ +static char * /* where tentative match ended, or NULL */ +fast(m, start, stop, startst, stopst) +register struct match *m; +char *start; +char *stop; +sopno startst; +sopno stopst; +{ + register states st = m->st; + register states fresh = m->fresh; + register states tmp = m->tmp; + register char *p = start; + register int c = (start == m->beginp) ? OUT : *(start-1); + register int lastc; /* previous c */ + register int flagch; + register int i; + register char *coldp; /* last p after which no match was underway */ + + CLEAR(st); + SET1(st, startst); + st = step(m->g, startst, stopst, st, NOTHING, st); + ASSIGN(fresh, st); + SP("start", st, *p); + coldp = NULL; + for (;;) { + /* next character */ + lastc = c; + c = (p == m->endp) ? OUT : *p; + if (EQ(st, fresh)) + coldp = p; + + /* is there an EOL and/or BOL between lastc and c? */ + flagch = '\0'; + i = 0; + if ( (lastc == '\n' && m->g->cflags®_NEWLINE) || + (lastc == OUT && !(m->eflags®_NOTBOL)) ) { + flagch = BOL; + i = m->g->nbol; + } + if ( (c == '\n' && m->g->cflags®_NEWLINE) || + (c == OUT && !(m->eflags®_NOTEOL)) ) { + flagch = (flagch == BOL) ? BOLEOL : EOL; + i += m->g->neol; + } + if (i != 0) { + for (; i > 0; i--) + st = step(m->g, startst, stopst, st, flagch, st); + SP("boleol", st, c); + } + + /* how about a word boundary? */ + if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) && + (c != OUT && ISWORD(c)) ) { + flagch = BOW; + } + if ( (lastc != OUT && ISWORD(lastc)) && + (flagch == EOL || (c != OUT && !ISWORD(c))) ) { + flagch = EOW; + } + if (flagch == BOW || flagch == EOW) { + st = step(m->g, startst, stopst, st, flagch, st); + SP("boweow", st, c); + } + + /* are we done? */ + if (ISSET(st, stopst) || p == stop) + break; /* NOTE BREAK OUT */ + + /* no, we must deal with this character */ + ASSIGN(tmp, st); + ASSIGN(st, fresh); + assert(c != OUT); + st = step(m->g, startst, stopst, tmp, c, st); + SP("aft", st, c); + assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st)); + p++; + } + + assert(coldp != NULL); + m->coldp = coldp; + if (ISSET(st, stopst)) + return(p+1); + else + return(NULL); +} + +/* + - slow - step through the string more deliberately + == static char *slow(register struct match *m, char *start, \ + == char *stop, sopno startst, sopno stopst); + */ +static char * /* where it ended */ +slow(m, start, stop, startst, stopst) +register struct match *m; +char *start; +char *stop; +sopno startst; +sopno stopst; +{ + register states st = m->st; + register states empty = m->empty; + register states tmp = m->tmp; + register char *p = start; + register int c = (start == m->beginp) ? OUT : *(start-1); + register int lastc; /* previous c */ + register int flagch; + register int i; + register char *matchp; /* last p at which a match ended */ + + AT("slow", start, stop, startst, stopst); + CLEAR(st); + SET1(st, startst); + SP("sstart", st, *p); + st = step(m->g, startst, stopst, st, NOTHING, st); + matchp = NULL; + for (;;) { + /* next character */ + lastc = c; + c = (p == m->endp) ? OUT : *p; + + /* is there an EOL and/or BOL between lastc and c? */ + flagch = '\0'; + i = 0; + if ( (lastc == '\n' && m->g->cflags®_NEWLINE) || + (lastc == OUT && !(m->eflags®_NOTBOL)) ) { + flagch = BOL; + i = m->g->nbol; + } + if ( (c == '\n' && m->g->cflags®_NEWLINE) || + (c == OUT && !(m->eflags®_NOTEOL)) ) { + flagch = (flagch == BOL) ? BOLEOL : EOL; + i += m->g->neol; + } + if (i != 0) { + for (; i > 0; i--) + st = step(m->g, startst, stopst, st, flagch, st); + SP("sboleol", st, c); + } + + /* how about a word boundary? */ + if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) && + (c != OUT && ISWORD(c)) ) { + flagch = BOW; + } + if ( (lastc != OUT && ISWORD(lastc)) && + (flagch == EOL || (c != OUT && !ISWORD(c))) ) { + flagch = EOW; + } + if (flagch == BOW || flagch == EOW) { + st = step(m->g, startst, stopst, st, flagch, st); + SP("sboweow", st, c); + } + + /* are we done? */ + if (ISSET(st, stopst)) + matchp = p; + if (EQ(st, empty) || p == stop) + break; /* NOTE BREAK OUT */ + + /* no, we must deal with this character */ + ASSIGN(tmp, st); + ASSIGN(st, empty); + assert(c != OUT); + st = step(m->g, startst, stopst, tmp, c, st); + SP("saft", st, c); + assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st)); + p++; + } + + return(matchp); +} + + +/* + - step - map set of states reachable before char to set reachable after + == static states step(register struct re_guts *g, sopno start, sopno stop, \ + == register states bef, int ch, register states aft); + == #define BOL (OUT+1) + == #define EOL (BOL+1) + == #define BOLEOL (BOL+2) + == #define NOTHING (BOL+3) + == #define BOW (BOL+4) + == #define EOW (BOL+5) + == #define CODEMAX (BOL+5) // highest code used + == #define NONCHAR(c) ((c) > CHAR_MAX) + == #define NNONCHAR (CODEMAX-CHAR_MAX) + */ +static states +step(g, start, stop, bef, ch, aft) +register struct re_guts *g; +sopno start; /* start state within strip */ +sopno stop; /* state after stop state within strip */ +register states bef; /* states reachable before */ +int ch; /* character or NONCHAR code */ +register states aft; /* states already known reachable after */ +{ + register cset *cs; + register sop s; + register sopno pc; + register onestate here; /* note, macros know this name */ + register sopno look; + register long i; + + for (pc = start, INIT(here, pc); pc != stop; pc++, INC(here)) { + s = g->strip[pc]; + switch (OP(s)) { + case OEND: + assert(pc == stop-1); + break; + case OCHAR: + /* only characters can match */ + assert(!NONCHAR(ch) || ch != (char)OPND(s)); + if (ch == (char)OPND(s)) + FWD(aft, bef, 1); + break; + case OBOL: + if (ch == BOL || ch == BOLEOL) + FWD(aft, bef, 1); + break; + case OEOL: + if (ch == EOL || ch == BOLEOL) + FWD(aft, bef, 1); + break; + case OBOW: + if (ch == BOW) + FWD(aft, bef, 1); + break; + case OEOW: + if (ch == EOW) + FWD(aft, bef, 1); + break; + case OANY: + if (!NONCHAR(ch)) + FWD(aft, bef, 1); + break; + case OANYOF: + cs = &g->sets[OPND(s)]; + if (!NONCHAR(ch) && CHIN(cs, ch)) + FWD(aft, bef, 1); + break; + case OBACK_: /* ignored here */ + case O_BACK: + FWD(aft, aft, 1); + break; + case OPLUS_: /* forward, this is just an empty */ + FWD(aft, aft, 1); + break; + case O_PLUS: /* both forward and back */ + FWD(aft, aft, 1); + i = ISSETBACK(aft, OPND(s)); + BACK(aft, aft, OPND(s)); + if (!i && ISSETBACK(aft, OPND(s))) { + /* oho, must reconsider loop body */ + pc -= OPND(s) + 1; + INIT(here, pc); + } + break; + case OQUEST_: /* two branches, both forward */ + FWD(aft, aft, 1); + FWD(aft, aft, OPND(s)); + break; + case O_QUEST: /* just an empty */ + FWD(aft, aft, 1); + break; + case OLPAREN: /* not significant here */ + case ORPAREN: + FWD(aft, aft, 1); + break; + case OCH_: /* mark the first two branches */ + FWD(aft, aft, 1); + assert(OP(g->strip[pc+OPND(s)]) == OOR2); + FWD(aft, aft, OPND(s)); + break; + case OOR1: /* done a branch, find the O_CH */ + if (ISSTATEIN(aft, here)) { + for (look = 1; + OP(s = g->strip[pc+look]) != O_CH; + look += OPND(s)) + assert(OP(s) == OOR2); + FWD(aft, aft, look); + } + break; + case OOR2: /* propagate OCH_'s marking */ + FWD(aft, aft, 1); + if (OP(g->strip[pc+OPND(s)]) != O_CH) { + assert(OP(g->strip[pc+OPND(s)]) == OOR2); + FWD(aft, aft, OPND(s)); + } + break; + case O_CH: /* just empty */ + FWD(aft, aft, 1); + break; + default: /* ooooops... */ + assert(nope); + break; + } + } + + return(aft); +} + +#ifdef REDEBUG +/* + - print - print a set of states + == #ifdef REDEBUG + == static void print(struct match *m, char *caption, states st, \ + == int ch, FILE *d); + == #endif + */ +static void +print(m, caption, st, ch, d) +struct match *m; +char *caption; +states st; +int ch; +FILE *d; +{ + register struct re_guts *g = m->g; + register int i; + register int first = 1; + + if (!(m->eflags®_TRACE)) + return; + + fprintf(d, "%s", caption); + if (ch != '\0') + fprintf(d, " %s", pchar(ch)); + for (i = 0; i < g->nstates; i++) + if (ISSET(st, i)) { + fprintf(d, "%s%d", (first) ? "\t" : ", ", i); + first = 0; + } + fprintf(d, "\n"); +} + +/* + - at - print current situation + == #ifdef REDEBUG + == static void at(struct match *m, char *title, char *start, char *stop, \ + == sopno startst, sopno stopst); + == #endif + */ +static void +at(m, title, start, stop, startst, stopst) +struct match *m; +char *title; +char *start; +char *stop; +sopno startst; +sopno stopst; +{ + if (!(m->eflags®_TRACE)) + return; + + printf("%s %s-", title, pchar(*start)); + printf("%s ", pchar(*stop)); + printf("%ld-%ld\n", (long)startst, (long)stopst); +} + +#ifndef PCHARDONE +#define PCHARDONE /* never again */ +/* + - pchar - make a character printable + == #ifdef REDEBUG + == static char *pchar(int ch); + == #endif + * + * Is this identical to regchar() over in debug.c? Well, yes. But a + * duplicate here avoids having a debugging-capable regexec.o tied to + * a matching debug.o, and this is convenient. It all disappears in + * the non-debug compilation anyway, so it doesn't matter much. + */ +static char * /* -> representation */ +pchar(ch) +int ch; +{ + static char pbuf[10]; + + if (isprint(ch) || ch == ' ') + sprintf(pbuf, "%c", ch); + else + sprintf(pbuf, "\\%o", ch); + return(pbuf); +} +#endif +#endif + +#undef matcher +#undef fast +#undef slow +#undef dissect +#undef backref +#undef step +#undef print +#undef at +#undef match diff --git a/src/regex/makefile.wat b/src/regex/makefile.wat index b73464c60c..ba3b063441 100644 --- a/src/regex/makefile.wat +++ b/src/regex/makefile.wat @@ -3,6 +3,7 @@ # File: makefile.wat # Author: Julian Smart # Created: 1998 +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch # # Makefile : Builds REGEX library for Watcom C++, WIN32 @@ -13,20 +14,24 @@ EXTRACPPFLAGS=-DPOSIX_MISTAKE WXLIB = $(WXDIR)\lib -LIBTARGET = $(WXLIB)\regex.lib +LIBTARGET = $(WXLIB)\regex$(WATCOM_SUFFIX).lib -OBJECTS= & - regcomp.obj & - regexec.obj & - regerror.obj & - regfree.obj +OBJECTS = & + $(OUTPUTDIR)\regcomp.obj & + $(OUTPUTDIR)\regexec.obj & + $(OUTPUTDIR)\regerror.obj & + $(OUTPUTDIR)\regfree.obj -all: $(OBJECTS) $(LIBTARGET) +all: $(OUTPUTDIR) $(LIBTARGET) .SYMBOLIC +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ + +LBCFILE=$(OUTPUTDIR)\regex.lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) clean: .SYMBOLIC -erase *.obj diff --git a/src/regex/re_main.c b/src/regex/re_main.c new file mode 100644 index 0000000000..0221e7713d --- /dev/null +++ b/src/regex/re_main.c @@ -0,0 +1,510 @@ +#include +#include +#include +#include +#include + +#include "main.ih" + +char *progname; +int debug = 0; +int line = 0; +int status = 0; + +int copts = REG_EXTENDED; +int eopts = 0; +regoff_t startoff = 0; +regoff_t endoff = 0; + + +extern int split(); +extern void regprint(); + +/* + - main - do the simple case, hand off to regress() for regression + */ +main(argc, argv) +int argc; +char *argv[]; +{ + regex_t re; +# define NS 10 + regmatch_t subs[NS]; + char erbuf[100]; + int err; + size_t len; + int c; + int errflg = 0; + register int i; + extern int optind; + extern char *optarg; + + progname = argv[0]; + + while ((c = getopt(argc, argv, "c:e:S:E:x")) != EOF) + switch (c) { + case 'c': /* compile options */ + copts = options('c', optarg); + break; + case 'e': /* execute options */ + eopts = options('e', optarg); + break; + case 'S': /* start offset */ + startoff = (regoff_t)atoi(optarg); + break; + case 'E': /* end offset */ + endoff = (regoff_t)atoi(optarg); + break; + case 'x': /* Debugging. */ + debug++; + break; + case '?': + default: + errflg++; + break; + } + if (errflg) { + fprintf(stderr, "usage: %s ", progname); + fprintf(stderr, "[-c copt][-C][-d] [re]\n"); + exit(2); + } + + if (optind >= argc) { + regress(stdin); + exit(status); + } + + err = regcomp(&re, argv[optind++], copts); + if (err) { + len = regerror(err, &re, erbuf, sizeof(erbuf)); + fprintf(stderr, "error %s, %d/%d `%s'\n", + eprint(err), len, sizeof(erbuf), erbuf); + exit(status); + } + regprint(&re, stdout); + + if (optind >= argc) { + regfree(&re); + exit(status); + } + + if (eopts®_STARTEND) { + subs[0].rm_so = startoff; + subs[0].rm_eo = strlen(argv[optind]) - endoff; + } + err = regexec(&re, argv[optind], (size_t)NS, subs, eopts); + if (err) { + len = regerror(err, &re, erbuf, sizeof(erbuf)); + fprintf(stderr, "error %s, %d/%d `%s'\n", + eprint(err), len, sizeof(erbuf), erbuf); + exit(status); + } + if (!(copts®_NOSUB)) { + len = (int)(subs[0].rm_eo - subs[0].rm_so); + if (subs[0].rm_so != -1) { + if (len != 0) + printf("match `%.*s'\n", len, + argv[optind] + subs[0].rm_so); + else + printf("match `'@%.1s\n", + argv[optind] + subs[0].rm_so); + } + for (i = 1; i < NS; i++) + if (subs[i].rm_so != -1) + printf("(%d) `%.*s'\n", i, + (int)(subs[i].rm_eo - subs[i].rm_so), + argv[optind] + subs[i].rm_so); + } + exit(status); +} + +/* + - regress - main loop of regression test + == void regress(FILE *in); + */ +void +regress(in) +FILE *in; +{ + char inbuf[1000]; +# define MAXF 10 + char *f[MAXF]; + int nf; + int i; + char erbuf[100]; + size_t ne; + char *badpat = "invalid regular expression"; +# define SHORT 10 + char *bpname = "REG_BADPAT"; + regex_t re; + + while (fgets(inbuf, sizeof(inbuf), in) != NULL) { + line++; + if (inbuf[0] == '#' || inbuf[0] == '\n') + continue; /* NOTE CONTINUE */ + inbuf[strlen(inbuf)-1] = '\0'; /* get rid of stupid \n */ + if (debug) + fprintf(stdout, "%d:\n", line); + nf = split(inbuf, f, MAXF, "\t\t"); + if (nf < 3) { + fprintf(stderr, "bad input, line %d\n", line); + exit(1); + } + for (i = 0; i < nf; i++) + if (strcmp(f[i], "\"\"") == 0) + f[i] = ""; + if (nf <= 3) + f[3] = NULL; + if (nf <= 4) + f[4] = NULL; + try(f[0], f[1], f[2], f[3], f[4], options('c', f[1])); + if (opt('&', f[1])) /* try with either type of RE */ + try(f[0], f[1], f[2], f[3], f[4], + options('c', f[1]) &~ REG_EXTENDED); + } + + ne = regerror(REG_BADPAT, (regex_t *)NULL, erbuf, sizeof(erbuf)); + if (strcmp(erbuf, badpat) != 0 || ne != strlen(badpat)+1) { + fprintf(stderr, "end: regerror() test gave `%s' not `%s'\n", + erbuf, badpat); + status = 1; + } + ne = regerror(REG_BADPAT, (regex_t *)NULL, erbuf, (size_t)SHORT); + if (strncmp(erbuf, badpat, SHORT-1) != 0 || erbuf[SHORT-1] != '\0' || + ne != strlen(badpat)+1) { + fprintf(stderr, "end: regerror() short test gave `%s' not `%.*s'\n", + erbuf, SHORT-1, badpat); + status = 1; + } + ne = regerror(REG_ITOA|REG_BADPAT, (regex_t *)NULL, erbuf, sizeof(erbuf)); + if (strcmp(erbuf, bpname) != 0 || ne != strlen(bpname)+1) { + fprintf(stderr, "end: regerror() ITOA test gave `%s' not `%s'\n", + erbuf, bpname); + status = 1; + } + re.re_endp = bpname; + ne = regerror(REG_ATOI, &re, erbuf, sizeof(erbuf)); + if (atoi(erbuf) != (int)REG_BADPAT) { + fprintf(stderr, "end: regerror() ATOI test gave `%s' not `%ld'\n", + erbuf, (long)REG_BADPAT); + status = 1; + } else if (ne != strlen(erbuf)+1) { + fprintf(stderr, "end: regerror() ATOI test len(`%s') = %ld\n", + erbuf, (long)REG_BADPAT); + status = 1; + } +} + +/* + - try - try it, and report on problems + == void try(char *f0, char *f1, char *f2, char *f3, char *f4, int opts); + */ +void +try(f0, f1, f2, f3, f4, opts) +char *f0; +char *f1; +char *f2; +char *f3; +char *f4; +int opts; /* may not match f1 */ +{ + regex_t re; +# define NSUBS 10 + regmatch_t subs[NSUBS]; +# define NSHOULD 15 + char *should[NSHOULD]; + int nshould; + char erbuf[100]; + int err; + int len; + char *type = (opts & REG_EXTENDED) ? "ERE" : "BRE"; + register int i; + char *grump; + char f0copy[1000]; + char f2copy[1000]; + + strcpy(f0copy, f0); + re.re_endp = (opts®_PEND) ? f0copy + strlen(f0copy) : NULL; + fixstr(f0copy); + err = regcomp(&re, f0copy, opts); + if (err != 0 && (!opt('C', f1) || err != efind(f2))) { + /* unexpected error or wrong error */ + len = regerror(err, &re, erbuf, sizeof(erbuf)); + fprintf(stderr, "%d: %s error %s, %d/%d `%s'\n", + line, type, eprint(err), len, + sizeof(erbuf), erbuf); + status = 1; + } else if (err == 0 && opt('C', f1)) { + /* unexpected success */ + fprintf(stderr, "%d: %s should have given REG_%s\n", + line, type, f2); + status = 1; + err = 1; /* so we won't try regexec */ + } + + if (err != 0) { + regfree(&re); + return; + } + + strcpy(f2copy, f2); + fixstr(f2copy); + + if (options('e', f1)®_STARTEND) { + if (strchr(f2, '(') == NULL || strchr(f2, ')') == NULL) + fprintf(stderr, "%d: bad STARTEND syntax\n", line); + subs[0].rm_so = strchr(f2, '(') - f2 + 1; + subs[0].rm_eo = strchr(f2, ')') - f2; + } + err = regexec(&re, f2copy, NSUBS, subs, options('e', f1)); + + if (err != 0 && (f3 != NULL || err != REG_NOMATCH)) { + /* unexpected error or wrong error */ + len = regerror(err, &re, erbuf, sizeof(erbuf)); + fprintf(stderr, "%d: %s exec error %s, %d/%d `%s'\n", + line, type, eprint(err), len, + sizeof(erbuf), erbuf); + status = 1; + } else if (err != 0) { + /* nothing more to check */ + } else if (f3 == NULL) { + /* unexpected success */ + fprintf(stderr, "%d: %s exec should have failed\n", + line, type); + status = 1; + err = 1; /* just on principle */ + } else if (opts®_NOSUB) { + /* nothing more to check */ + } else if ((grump = check(f2, subs[0], f3)) != NULL) { + fprintf(stderr, "%d: %s %s\n", line, type, grump); + status = 1; + err = 1; + } + + if (err != 0 || f4 == NULL) { + regfree(&re); + return; + } + + for (i = 1; i < NSHOULD; i++) + should[i] = NULL; + nshould = split(f4, should+1, NSHOULD-1, ","); + if (nshould == 0) { + nshould = 1; + should[1] = ""; + } + for (i = 1; i < NSUBS; i++) { + grump = check(f2, subs[i], should[i]); + if (grump != NULL) { + fprintf(stderr, "%d: %s $%d %s\n", line, + type, i, grump); + status = 1; + err = 1; + } + } + + regfree(&re); +} + +/* + - options - pick options out of a regression-test string + == int options(int type, char *s); + */ +int +options(type, s) +int type; /* 'c' compile, 'e' exec */ +char *s; +{ + register char *p; + register int o = (type == 'c') ? copts : eopts; + register char *legal = (type == 'c') ? "bisnmp" : "^$#tl"; + + for (p = s; *p != '\0'; p++) + if (strchr(legal, *p) != NULL) + switch (*p) { + case 'b': + o &= ~REG_EXTENDED; + break; + case 'i': + o |= REG_ICASE; + break; + case 's': + o |= REG_NOSUB; + break; + case 'n': + o |= REG_NEWLINE; + break; + case 'm': + o &= ~REG_EXTENDED; + o |= REG_NOSPEC; + break; + case 'p': + o |= REG_PEND; + break; + case '^': + o |= REG_NOTBOL; + break; + case '$': + o |= REG_NOTEOL; + break; + case '#': + o |= REG_STARTEND; + break; + case 't': /* trace */ + o |= REG_TRACE; + break; + case 'l': /* force long representation */ + o |= REG_LARGE; + break; + case 'r': /* force backref use */ + o |= REG_BACKR; + break; + } + return(o); +} + +/* + - opt - is a particular option in a regression string? + == int opt(int c, char *s); + */ +int /* predicate */ +opt(c, s) +int c; +char *s; +{ + return(strchr(s, c) != NULL); +} + +/* + - fixstr - transform magic characters in strings + == void fixstr(register char *p); + */ +void +fixstr(p) +register char *p; +{ + if (p == NULL) + return; + + for (; *p != '\0'; p++) + if (*p == 'N') + *p = '\n'; + else if (*p == 'T') + *p = '\t'; + else if (*p == 'S') + *p = ' '; + else if (*p == 'Z') + *p = '\0'; +} + +/* + - check - check a substring match + == char *check(char *str, regmatch_t sub, char *should); + */ +char * /* NULL or complaint */ +check(str, sub, should) +char *str; +regmatch_t sub; +char *should; +{ + register int len; + register int shlen; + register char *p; + static char grump[500]; + register char *at = NULL; + + if (should != NULL && strcmp(should, "-") == 0) + should = NULL; + if (should != NULL && should[0] == '@') { + at = should + 1; + should = ""; + } + + /* check rm_so and rm_eo for consistency */ + if (sub.rm_so > sub.rm_eo || (sub.rm_so == -1 && sub.rm_eo != -1) || + (sub.rm_so != -1 && sub.rm_eo == -1) || + (sub.rm_so != -1 && sub.rm_so < 0) || + (sub.rm_eo != -1 && sub.rm_eo < 0) ) { + sprintf(grump, "start %ld end %ld", (long)sub.rm_so, + (long)sub.rm_eo); + return(grump); + } + + /* check for no match */ + if (sub.rm_so == -1 && should == NULL) + return(NULL); + if (sub.rm_so == -1) + return("did not match"); + + /* check for in range */ + if (sub.rm_eo > strlen(str)) { + sprintf(grump, "start %ld end %ld, past end of string", + (long)sub.rm_so, (long)sub.rm_eo); + return(grump); + } + + len = (int)(sub.rm_eo - sub.rm_so); + shlen = (int)strlen(should); + p = str + sub.rm_so; + + /* check for not supposed to match */ + if (should == NULL) { + sprintf(grump, "matched `%.*s'", len, p); + return(grump); + } + + /* check for wrong match */ + if (len != shlen || strncmp(p, should, (size_t)shlen) != 0) { + sprintf(grump, "matched `%.*s' instead", len, p); + return(grump); + } + if (shlen > 0) + return(NULL); + + /* check null match in right place */ + if (at == NULL) + return(NULL); + shlen = strlen(at); + if (shlen == 0) + shlen = 1; /* force check for end-of-string */ + if (strncmp(p, at, shlen) != 0) { + sprintf(grump, "matched null at `%.20s'", p); + return(grump); + } + return(NULL); +} + +/* + - eprint - convert error number to name + == static char *eprint(int err); + */ +static char * +eprint(err) +int err; +{ + static char epbuf[100]; + size_t len; + + len = regerror(REG_ITOA|err, (regex_t *)NULL, epbuf, sizeof(epbuf)); + assert(len <= sizeof(epbuf)); + return(epbuf); +} + +/* + - efind - convert error name to number + == static int efind(char *name); + */ +static int +efind(name) +char *name; +{ + static char efbuf[100]; + size_t n; + regex_t re; + + sprintf(efbuf, "REG_%s", name); + assert(strlen(efbuf) < sizeof(efbuf)); + re.re_endp = efbuf; + (void) regerror(REG_ATOI, &re, efbuf, sizeof(efbuf)); + return(atoi(efbuf)); +} diff --git a/src/regex/re_syntax.n b/src/regex/re_syntax.n deleted file mode 100644 index f37bb85abd..0000000000 --- a/src/regex/re_syntax.n +++ /dev/null @@ -1,970 +0,0 @@ -'\" -'\" Copyright (c) 1998 Sun Microsystems, Inc. -'\" Copyright (c) 1999 Scriptics Corporation -'\" -'\" This software is copyrighted by the Regents of the University of -'\" California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState -'\" Corporation and other parties. The following terms apply to all files -'\" associated with the software unless explicitly disclaimed in -'\" individual files. -'\" -'\" The authors hereby grant permission to use, copy, modify, distribute, -'\" and license this software and its documentation for any purpose, provided -'\" that existing copyright notices are retained in all copies and that this -'\" notice is included verbatim in any distributions. No written agreement, -'\" license, or royalty fee is required for any of the authorized uses. -'\" Modifications to this software may be copyrighted by their authors -'\" and need not follow the licensing terms described here, provided that -'\" the new terms are clearly indicated on the first page of each file where -'\" they apply. -'\" -'\" IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY -'\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -'\" ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY -'\" DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE -'\" POSSIBILITY OF SUCH DAMAGE. -'\" -'\" THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, -'\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, -'\" FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE -'\" IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE -'\" NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -'\" MODIFICATIONS. -'\" -'\" GOVERNMENT USE: If you are acquiring this software on behalf of the -'\" U.S. government, the Government shall have only "Restricted Rights" -'\" in the software and related documentation as defined in the Federal -'\" Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you -'\" are acquiring the software on behalf of the Department of Defense, the -'\" software shall be classified as "Commercial Computer Software" and the -'\" Government shall have only "Restricted Rights" as defined in Clause -'\" 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the -'\" authors grant the U.S. Government and others acting in its behalf -'\" permission to use and distribute the software in accordance with the -'\" terms specified in this license. -'\" -'\" RCS: @(#) Id: re_syntax.n,v 1.3 1999/07/14 19:09:36 jpeek Exp -'\" -.so man.macros -.TH re_syntax n "8.1" Tcl "Tcl Built-In Commands" -.BS -.SH NAME -re_syntax \- Syntax of Tcl regular expressions. -.BE - -.SH DESCRIPTION -.PP -A \fIregular expression\fR describes strings of characters. -It's a pattern that matches certain strings and doesn't match others. - -.SH "DIFFERENT FLAVORS OF REs" -Regular expressions (``RE''s), as defined by POSIX, come in two -flavors: \fIextended\fR REs (``EREs'') and \fIbasic\fR REs (``BREs''). -EREs are roughly those of the traditional \fIegrep\fR, while BREs are -roughly those of the traditional \fIed\fR. This implementation adds -a third flavor, \fIadvanced\fR REs (``AREs''), basically EREs with -some significant extensions. -.PP -This manual page primarily describes AREs. BREs mostly exist for -backward compatibility in some old programs; they will be discussed at -the end. POSIX EREs are almost an exact subset of AREs. Features of -AREs that are not present in EREs will be indicated. - -.SH "REGULAR EXPRESSION SYNTAX" -.PP -Tcl regular expressions are implemented using the package written by -Henry Spencer, based on the 1003.2 spec and some (not quite all) of -the Perl5 extensions (thanks, Henry!). Much of the description of -regular expressions below is copied verbatim from his manual entry. -.PP -An ARE is one or more \fIbranches\fR, -separated by `\fB|\fR', -matching anything that matches any of the branches. -.PP -A branch is zero or more \fIconstraints\fR or \fIquantified atoms\fR, -concatenated. -It matches a match for the first, followed by a match for the second, etc; -an empty branch matches the empty string. -.PP -A quantified atom is an \fIatom\fR possibly followed -by a single \fIquantifier\fR. -Without a quantifier, it matches a match for the atom. -The quantifiers, -and what a so-quantified atom matches, are: -.RS 2 -.TP 6 -\fB*\fR -a sequence of 0 or more matches of the atom -.TP -\fB+\fR -a sequence of 1 or more matches of the atom -.TP -\fB?\fR -a sequence of 0 or 1 matches of the atom -.TP -\fB{\fIm\fB}\fR -a sequence of exactly \fIm\fR matches of the atom -.TP -\fB{\fIm\fB,}\fR -a sequence of \fIm\fR or more matches of the atom -.TP -\fB{\fIm\fB,\fIn\fB}\fR -a sequence of \fIm\fR through \fIn\fR (inclusive) matches of the atom; -\fIm\fR may not exceed \fIn\fR -.TP -\fB*? +? ?? {\fIm\fB}? {\fIm\fB,}? {\fIm\fB,\fIn\fB}?\fR -\fInon-greedy\fR quantifiers, -which match the same possibilities, -but prefer the smallest number rather than the largest number -of matches (see MATCHING) -.RE -.PP -The forms using -\fB{\fR and \fB}\fR -are known as \fIbound\fRs. -The numbers -\fIm\fR and \fIn\fR are unsigned decimal integers -with permissible values from 0 to 255 inclusive. -.PP -An atom is one of: -.RS 2 -.TP 6 -\fB(\fIre\fB)\fR -(where \fIre\fR is any regular expression) -matches a match for -\fIre\fR, with the match noted for possible reporting -.TP -\fB(?:\fIre\fB)\fR -as previous, -but does no reporting -(a ``non-capturing'' set of parentheses) -.TP -\fB()\fR -matches an empty string, -noted for possible reporting -.TP -\fB(?:)\fR -matches an empty string, -without reporting -.TP -\fB[\fIchars\fB]\fR -a \fIbracket expression\fR, -matching any one of the \fIchars\fR (see BRACKET EXPRESSIONS for more detail) -.TP - \fB.\fR -matches any single character -.TP -\fB\e\fIk\fR -(where \fIk\fR is a non-alphanumeric character) -matches that character taken as an ordinary character, -e.g. \e\e matches a backslash character -.TP -\fB\e\fIc\fR -where \fIc\fR is alphanumeric -(possibly followed by other characters), -an \fIescape\fR (AREs only), -see ESCAPES below -.TP -\fB{\fR -when followed by a character other than a digit, -matches the left-brace character `\fB{\fR'; -when followed by a digit, it is the beginning of a -\fIbound\fR (see above) -.TP -\fIx\fR -where \fIx\fR is -a single character with no other significance, matches that character. -.RE -.PP -A \fIconstraint\fR matches an empty string when specific conditions -are met. -A constraint may not be followed by a quantifier. -The simple constraints are as follows; some more constraints are -described later, under ESCAPES. -.RS 2 -.TP 8 -\fB^\fR -matches at the beginning of a line -.TP -\fB$\fR -matches at the end of a line -.TP -\fB(?=\fIre\fB)\fR -\fIpositive lookahead\fR (AREs only), matches at any point -where a substring matching \fIre\fR begins -.TP -\fB(?!\fIre\fB)\fR -\fInegative lookahead\fR (AREs only), matches at any point -where no substring matching \fIre\fR begins -.RE -.PP -The lookahead constraints may not contain back references (see later), -and all parentheses within them are considered non-capturing. -.PP -An RE may not end with `\fB\e\fR'. - -.SH "BRACKET EXPRESSIONS" -A \fIbracket expression\fR is a list of characters enclosed in `\fB[\|]\fR'. -It normally matches any single character from the list (but see below). -If the list begins with `\fB^\fR', -it matches any single character -(but see below) \fInot\fR from the rest of the list. -.PP -If two characters in the list are separated by `\fB\-\fR', -this is shorthand -for the full \fIrange\fR of characters between those two (inclusive) in the -collating sequence, -e.g. -\fB[0\-9]\fR -in ASCII matches any decimal digit. -Two ranges may not share an -endpoint, so e.g. -\fBa\-c\-e\fR -is illegal. -Ranges are very collating-sequence-dependent, -and portable programs should avoid relying on them. -.PP -To include a literal -\fB]\fR -or -\fB\-\fR -in the list, -the simplest method is to -enclose it in -\fB[.\fR and \fB.]\fR -to make it a collating element (see below). -Alternatively, -make it the first character -(following a possible `\fB^\fR'), -or (AREs only) precede it with `\fB\e\fR'. -Alternatively, for `\fB\-\fR', -make it the last character, -or the second endpoint of a range. -To use a literal -\fB\-\fR -as the first endpoint of a range, -make it a collating element -or (AREs only) precede it with `\fB\e\fR'. -With the exception of these, some combinations using -\fB[\fR -(see next -paragraphs), and escapes, -all other special characters lose their -special significance within a bracket expression. -.PP -Within a bracket expression, a collating element (a character, -a multi-character sequence that collates as if it were a single character, -or a collating-sequence name for either) -enclosed in -\fB[.\fR and \fB.]\fR -stands for the -sequence of characters of that collating element. -The sequence is a single element of the bracket expression's list. -A bracket expression in a locale that has -multi-character collating elements -can thus match more than one character. -.VS 8.2 -So (insidiously), a bracket expression that starts with \fB^\fR -can match multi-character collating elements even if none of them -appear in the bracket expression! -(\fINote:\fR Tcl currently has no multi-character collating elements. -This information is only for illustration.) -.PP -For example, assume the collating sequence includes a \fBch\fR -multi-character collating element. -Then the RE \fB[[.ch.]]*c\fR (zero or more \fBch\fP's followed by \fBc\fP) -matches the first five characters of `\fBchchcc\fR'. -Also, the RE \fB[^c]b\fR matches all of `\fBchb\fR' -(because \fB[^c]\fR matches the multi-character \fBch\fR). -.VE 8.2 -.PP -Within a bracket expression, a collating element enclosed in -\fB[=\fR -and -\fB=]\fR -is an equivalence class, standing for the sequences of characters -of all collating elements equivalent to that one, including itself. -(If there are no other equivalent collating elements, -the treatment is as if the enclosing delimiters were `\fB[.\fR'\& -and `\fB.]\fR'.) -For example, if -\fBo\fR -and -\fB\o'o^'\fR -are the members of an equivalence class, -then `\fB[[=o=]]\fR', `\fB[[=\o'o^'=]]\fR', -and `\fB[o\o'o^']\fR'\& -are all synonymous. -An equivalence class may not be an endpoint -of a range. -.VS 8.2 -(\fINote:\fR -Tcl currently implements only the Unicode locale. -It doesn't define any equivalence classes. -The examples above are just illustrations.) -.VE 8.2 -.PP -Within a bracket expression, the name of a \fIcharacter class\fR enclosed -in -\fB[:\fR -and -\fB:]\fR -stands for the list of all characters -(not all collating elements!) -belonging to that -class. -Standard character classes are: -.PP -.RS -.ne 5 -.nf -.ta 3c -\fBalpha\fR A letter. -\fBupper\fR An upper-case letter. -\fBlower\fR A lower-case letter. -\fBdigit\fR A decimal digit. -\fBxdigit\fR A hexadecimal digit. -\fBalnum\fR An alphanumeric (letter or digit). -\fBprint\fR An alphanumeric (same as alnum). -\fBblank\fR A space or tab character. -\fBspace\fR A character producing white space in displayed text. -\fBpunct\fR A punctuation character. -\fBgraph\fR A character with a visible representation. -\fBcntrl\fR A control character. -.fi -.RE -.PP -A locale may provide others. -.VS 8.2 -(Note that the current Tcl implementation has only one locale: -the Unicode locale.) -.VE 8.2 -A character class may not be used as an endpoint of a range. -.PP -There are two special cases of bracket expressions: -the bracket expressions -\fB[[:<:]]\fR -and -\fB[[:>:]]\fR -are constraints, matching empty strings at -the beginning and end of a word respectively. -'\" note, discussion of escapes below references this definition of word -A word is defined as a sequence of -word characters -that is neither preceded nor followed by -word characters. -A word character is an -\fIalnum\fR -character -or an underscore -(\fB_\fR). -These special bracket expressions are deprecated; -users of AREs should use constraint escapes instead (see below). -.SH ESCAPES -Escapes (AREs only), which begin with a -\fB\e\fR -followed by an alphanumeric character, -come in several varieties: -character entry, class shorthands, constraint escapes, and back references. -A -\fB\e\fR -followed by an alphanumeric character but not constituting -a valid escape is illegal in AREs. -In EREs, there are no escapes: -outside a bracket expression, -a -\fB\e\fR -followed by an alphanumeric character merely stands for that -character as an ordinary character, -and inside a bracket expression, -\fB\e\fR -is an ordinary character. -(The latter is the one actual incompatibility between EREs and AREs.) -.PP -Character-entry escapes (AREs only) exist to make it easier to specify -non-printing and otherwise inconvenient characters in REs: -.RS 2 -.TP 5 -\fB\ea\fR -alert (bell) character, as in C -.TP -\fB\eb\fR -backspace, as in C -.TP -\fB\eB\fR -synonym for -\fB\e\fR -to help reduce backslash doubling in some -applications where there are multiple levels of backslash processing -.TP -\fB\ec\fIX\fR -(where X is any character) the character whose -low-order 5 bits are the same as those of -\fIX\fR, -and whose other bits are all zero -.TP -\fB\ee\fR -the character whose collating-sequence name -is `\fBESC\fR', -or failing that, the character with octal value 033 -.TP -\fB\ef\fR -formfeed, as in C -.TP -\fB\en\fR -newline, as in C -.TP -\fB\er\fR -carriage return, as in C -.TP -\fB\et\fR -horizontal tab, as in C -.TP -\fB\eu\fIwxyz\fR -(where -\fIwxyz\fR -is exactly four hexadecimal digits) -the Unicode character -\fBU+\fIwxyz\fR -in the local byte ordering -.TP -\fB\eU\fIstuvwxyz\fR -(where -\fIstuvwxyz\fR -is exactly eight hexadecimal digits) -reserved for a somewhat-hypothetical Unicode extension to 32 bits -.TP -\fB\ev\fR -vertical tab, as in C -are all available. -.TP -\fB\ex\fIhhh\fR -(where -\fIhhh\fR -is any sequence of hexadecimal digits) -the character whose hexadecimal value is -\fB0x\fIhhh\fR -(a single character no matter how many hexadecimal digits are used). -.TP -\fB\e0\fR -the character whose value is -\fB0\fR -.TP -\fB\e\fIxy\fR -(where -\fIxy\fR -is exactly two octal digits, -and is not a -\fIback reference\fR (see below)) -the character whose octal value is -\fB0\fIxy\fR -.TP -\fB\e\fIxyz\fR -(where -\fIxyz\fR -is exactly three octal digits, -and is not a -back reference (see below)) -the character whose octal value is -\fB0\fIxyz\fR -.RE -.PP -Hexadecimal digits are `\fB0\fR'-`\fB9\fR', `\fBa\fR'-`\fBf\fR', -and `\fBA\fR'-`\fBF\fR'. -Octal digits are `\fB0\fR'-`\fB7\fR'. -.PP -The character-entry escapes are always taken as ordinary characters. -For example, -\fB\e135\fR -is -\fB]\fR -in ASCII, -but -\fB\e135\fR -does not terminate a bracket expression. -Beware, however, that some applications (e.g., C compilers) interpret -such sequences themselves before the regular-expression package -gets to see them, which may require doubling (quadrupling, etc.) the `\fB\e\fR'. -.PP -Class-shorthand escapes (AREs only) provide shorthands for certain commonly-used -character classes: -.RS 2 -.TP 10 -\fB\ed\fR -\fB[[:digit:]]\fR -.TP -\fB\es\fR -\fB[[:space:]]\fR -.TP -\fB\ew\fR -\fB[[:alnum:]_]\fR -(note underscore) -.TP -\fB\eD\fR -\fB[^[:digit:]]\fR -.TP -\fB\eS\fR -\fB[^[:space:]]\fR -.TP -\fB\eW\fR -\fB[^[:alnum:]_]\fR -(note underscore) -.RE -.PP -Within bracket expressions, `\fB\ed\fR', `\fB\es\fR', -and `\fB\ew\fR'\& -lose their outer brackets, -and `\fB\eD\fR', `\fB\eS\fR', -and `\fB\eW\fR'\& -are illegal. -.VS 8.2 -(So, for example, \fB[a-c\ed]\fR is equivalent to \fB[a-c[:digit:]]\fR. -Also, \fB[a-c\eD]\fR, which is equivalent to \fB[a-c^[:digit:]]\fR, is illegal.) -.VE 8.2 -.PP -A constraint escape (AREs only) is a constraint, -matching the empty string if specific conditions are met, -written as an escape: -.RS 2 -.TP 6 -\fB\eA\fR -matches only at the beginning of the string -(see MATCHING, below, for how this differs from `\fB^\fR') -.TP -\fB\em\fR -matches only at the beginning of a word -.TP -\fB\eM\fR -matches only at the end of a word -.TP -\fB\ey\fR -matches only at the beginning or end of a word -.TP -\fB\eY\fR -matches only at a point that is not the beginning or end of a word -.TP -\fB\eZ\fR -matches only at the end of the string -(see MATCHING, below, for how this differs from `\fB$\fR') -.TP -\fB\e\fIm\fR -(where -\fIm\fR -is a nonzero digit) a \fIback reference\fR, see below -.TP -\fB\e\fImnn\fR -(where -\fIm\fR -is a nonzero digit, and -\fInn\fR -is some more digits, -and the decimal value -\fImnn\fR -is not greater than the number of closing capturing parentheses seen so far) -a \fIback reference\fR, see below -.RE -.PP -A word is defined as in the specification of -\fB[[:<:]]\fR -and -\fB[[:>:]]\fR -above. -Constraint escapes are illegal within bracket expressions. -.PP -A back reference (AREs only) matches the same string matched by the parenthesized -subexpression specified by the number, -so that (e.g.) -\fB([bc])\e1\fR -matches -\fBbb\fR -or -\fBcc\fR -but not `\fBbc\fR'. -The subexpression must entirely precede the back reference in the RE. -Subexpressions are numbered in the order of their leading parentheses. -Non-capturing parentheses do not define subexpressions. -.PP -There is an inherent historical ambiguity between octal character-entry -escapes and back references, which is resolved by heuristics, -as hinted at above. -A leading zero always indicates an octal escape. -A single non-zero digit, not followed by another digit, -is always taken as a back reference. -A multi-digit sequence not starting with a zero is taken as a back -reference if it comes after a suitable subexpression -(i.e. the number is in the legal range for a back reference), -and otherwise is taken as octal. -.SH "METASYNTAX" -In addition to the main syntax described above, there are some special -forms and miscellaneous syntactic facilities available. -.PP -Normally the flavor of RE being used is specified by -application-dependent means. -However, this can be overridden by a \fIdirector\fR. -If an RE of any flavor begins with `\fB***:\fR', -the rest of the RE is an ARE. -If an RE of any flavor begins with `\fB***=\fR', -the rest of the RE is taken to be a literal string, -with all characters considered ordinary characters. -.PP -An ARE may begin with \fIembedded options\fR: -a sequence -\fB(?\fIxyz\fB)\fR -(where -\fIxyz\fR -is one or more alphabetic characters) -specifies options affecting the rest of the RE. -These supplement, and can override, -any options specified by the application. -The available option letters are: -.RS 2 -.TP 3 -\fBb\fR -rest of RE is a BRE -.TP 3 -\fBc\fR -case-sensitive matching (usual default) -.TP 3 -\fBe\fR -rest of RE is an ERE -.TP 3 -\fBi\fR -case-insensitive matching (see MATCHING, below) -.TP 3 -\fBm\fR -historical synonym for -\fBn\fR -.TP 3 -\fBn\fR -newline-sensitive matching (see MATCHING, below) -.TP 3 -\fBp\fR -partial newline-sensitive matching (see MATCHING, below) -.TP 3 -\fBq\fR -rest of RE is a literal (``quoted'') string, all ordinary characters -.TP 3 -\fBs\fR -non-newline-sensitive matching (usual default) -.TP 3 -\fBt\fR -tight syntax (usual default; see below) -.TP 3 -\fBw\fR -inverse partial newline-sensitive (``weird'') matching (see MATCHING, below) -.TP 3 -\fBx\fR -expanded syntax (see below) -.RE -.PP -Embedded options take effect at the -\fB)\fR -terminating the sequence. -They are available only at the start of an ARE, -and may not be used later within it. -.PP -In addition to the usual (\fItight\fR) RE syntax, in which all characters are -significant, there is an \fIexpanded\fR syntax, -available in all flavors of RE -with the \fB-expanded\fR switch, or in AREs with the embedded x option. -In the expanded syntax, -white-space characters are ignored -and all characters between a -\fB#\fR -and the following newline (or the end of the RE) are ignored, -permitting paragraphing and commenting a complex RE. -There are three exceptions to that basic rule: -.RS 2 -.PP -a white-space character or `\fB#\fR' preceded by `\fB\e\fR' is retained -.PP -white space or `\fB#\fR' within a bracket expression is retained -.PP -white space and comments are illegal within multi-character symbols -like the ARE `\fB(?:\fR' or the BRE `\fB\e(\fR' -.RE -.PP -Expanded-syntax white-space characters are blank, tab, newline, and -.VS 8.2 -any character that belongs to the \fIspace\fR character class. -.VE 8.2 -.PP -Finally, in an ARE, -outside bracket expressions, the sequence `\fB(?#\fIttt\fB)\fR' -(where -\fIttt\fR -is any text not containing a `\fB)\fR') -is a comment, -completely ignored. -Again, this is not allowed between the characters of -multi-character symbols like `\fB(?:\fR'. -Such comments are more a historical artifact than a useful facility, -and their use is deprecated; -use the expanded syntax instead. -.PP -\fINone\fR of these metasyntax extensions is available if the application -(or an initial -\fB***=\fR -director) -has specified that the user's input be treated as a literal string -rather than as an RE. -.SH MATCHING -In the event that an RE could match more than one substring of a given -string, -the RE matches the one starting earliest in the string. -If the RE could match more than one substring starting at that point, -its choice is determined by its \fIpreference\fR: -either the longest substring, or the shortest. -.PP -Most atoms, and all constraints, have no preference. -A parenthesized RE has the same preference (possibly none) as the RE. -A quantified atom with quantifier -\fB{\fIm\fB}\fR -or -\fB{\fIm\fB}?\fR -has the same preference (possibly none) as the atom itself. -A quantified atom with other normal quantifiers (including -\fB{\fIm\fB,\fIn\fB}\fR -with -\fIm\fR -equal to -\fIn\fR) -prefers longest match. -A quantified atom with other non-greedy quantifiers (including -\fB{\fIm\fB,\fIn\fB}?\fR -with -\fIm\fR -equal to -\fIn\fR) -prefers shortest match. -A branch has the same preference as the first quantified atom in it -which has a preference. -An RE consisting of two or more branches connected by the -\fB|\fR -operator prefers longest match. -.PP -Subject to the constraints imposed by the rules for matching the whole RE, -subexpressions also match the longest or shortest possible substrings, -based on their preferences, -with subexpressions starting earlier in the RE taking priority over -ones starting later. -Note that outer subexpressions thus take priority over -their component subexpressions. -.PP -Note that the quantifiers -\fB{1,1}\fR -and -\fB{1,1}?\fR -can be used to force longest and shortest preference, respectively, -on a subexpression or a whole RE. -.PP -Match lengths are measured in characters, not collating elements. -An empty string is considered longer than no match at all. -For example, -\fBbb*\fR -matches the three middle characters of `\fBabbbc\fR', -\fB(week|wee)(night|knights)\fR -matches all ten characters of `\fBweeknights\fR', -when -\fB(.*).*\fR -is matched against -\fBabc\fR -the parenthesized subexpression -matches all three characters, and -when -\fB(a*)*\fR -is matched against -\fBbc\fR -both the whole RE and the parenthesized -subexpression match an empty string. -.PP -If case-independent matching is specified, -the effect is much as if all case distinctions had vanished from the -alphabet. -When an alphabetic that exists in multiple cases appears as an -ordinary character outside a bracket expression, it is effectively -transformed into a bracket expression containing both cases, -so that -\fBx\fR -becomes `\fB[xX]\fR'. -When it appears inside a bracket expression, all case counterparts -of it are added to the bracket expression, so that -\fB[x]\fR -becomes -\fB[xX]\fR -and -\fB[^x]\fR -becomes `\fB[^xX]\fR'. -.PP -If newline-sensitive matching is specified, \fB.\fR -and bracket expressions using -\fB^\fR -will never match the newline character -(so that matches will never cross newlines unless the RE -explicitly arranges it) -and -\fB^\fR -and -\fB$\fR -will match the empty string after and before a newline -respectively, in addition to matching at beginning and end of string -respectively. -ARE -\fB\eA\fR -and -\fB\eZ\fR -continue to match beginning or end of string \fIonly\fR. -.PP -If partial newline-sensitive matching is specified, -this affects \fB.\fR -and bracket expressions -as with newline-sensitive matching, but not -\fB^\fR -and `\fB$\fR'. -.PP -If inverse partial newline-sensitive matching is specified, -this affects -\fB^\fR -and -\fB$\fR -as with -newline-sensitive matching, -but not \fB.\fR -and bracket expressions. -This isn't very useful but is provided for symmetry. -.SH "LIMITS AND COMPATIBILITY" -No particular limit is imposed on the length of REs. -Programs intended to be highly portable should not employ REs longer -than 256 bytes, -as a POSIX-compliant implementation can refuse to accept such REs. -.PP -The only feature of AREs that is actually incompatible with -POSIX EREs is that -\fB\e\fR -does not lose its special -significance inside bracket expressions. -All other ARE features use syntax which is illegal or has -undefined or unspecified effects in POSIX EREs; -the -\fB***\fR -syntax of directors likewise is outside the POSIX -syntax for both BREs and EREs. -.PP -Many of the ARE extensions are borrowed from Perl, but some have -been changed to clean them up, and a few Perl extensions are not present. -Incompatibilities of note include `\fB\eb\fR', `\fB\eB\fR', -the lack of special treatment for a trailing newline, -the addition of complemented bracket expressions to the things -affected by newline-sensitive matching, -the restrictions on parentheses and back references in lookahead constraints, -and the longest/shortest-match (rather than first-match) matching semantics. -.PP -The matching rules for REs containing both normal and non-greedy quantifiers -have changed since early beta-test versions of this package. -(The new rules are much simpler and cleaner, -but don't work as hard at guessing the user's real intentions.) -.PP -Henry Spencer's original 1986 \fIregexp\fR package, -still in widespread use (e.g., in pre-8.1 releases of Tcl), -implemented an early version of today's EREs. -There are four incompatibilities between \fIregexp\fR's near-EREs -(`RREs' for short) and AREs. -In roughly increasing order of significance: -.PP -.RS -In AREs, -\fB\e\fR -followed by an alphanumeric character is either an -escape or an error, -while in RREs, it was just another way of writing the -alphanumeric. -This should not be a problem because there was no reason to write -such a sequence in RREs. -.PP -\fB{\fR -followed by a digit in an ARE is the beginning of a bound, -while in RREs, -\fB{\fR -was always an ordinary character. -Such sequences should be rare, -and will often result in an error because following characters -will not look like a valid bound. -.PP -In AREs, -\fB\e\fR -remains a special character within `\fB[\|]\fR', -so a literal -\fB\e\fR -within -\fB[\|]\fR -must be written `\fB\e\e\fR'. -\fB\e\e\fR -also gives a literal -\fB\e\fR -within -\fB[\|]\fR -in RREs, -but only truly paranoid programmers routinely doubled the backslash. -.PP -AREs report the longest/shortest match for the RE, -rather than the first found in a specified search order. -This may affect some RREs which were written in the expectation that -the first match would be reported. -(The careful crafting of RREs to optimize the search order for fast -matching is obsolete (AREs examine all possible matches -in parallel, and their performance is largely insensitive to their -complexity) but cases where the search order was exploited to deliberately -find a match which was \fInot\fR the longest/shortest will need rewriting.) -.RE - -.SH "BASIC REGULAR EXPRESSIONS" -BREs differ from EREs in several respects. `\fB|\fR', `\fB+\fR', -and -\fB?\fR -are ordinary characters and there is no equivalent -for their functionality. -The delimiters for bounds are -\fB\e{\fR -and `\fB\e}\fR', -with -\fB{\fR -and -\fB}\fR -by themselves ordinary characters. -The parentheses for nested subexpressions are -\fB\e(\fR -and `\fB\e)\fR', -with -\fB(\fR -and -\fB)\fR -by themselves ordinary characters. -\fB^\fR -is an ordinary character except at the beginning of the -RE or the beginning of a parenthesized subexpression, -\fB$\fR -is an ordinary character except at the end of the -RE or the end of a parenthesized subexpression, -and -\fB*\fR -is an ordinary character if it appears at the beginning of the -RE or the beginning of a parenthesized subexpression -(after a possible leading `\fB^\fR'). -Finally, -single-digit back references are available, -and -\fB\e<\fR -and -\fB\e>\fR -are synonyms for -\fB[[:<:]]\fR -and -\fB[[:>:]]\fR -respectively; -no other escapes are available. - -.SH "SEE ALSO" -RegExp(3), regexp(n), regsub(n), lsearch(n), switch(n), text(n) - -.SH KEYWORDS -match, regular expression, string diff --git a/src/regex/regc_color.c b/src/regex/regc_color.c deleted file mode 100644 index 5376af2ed5..0000000000 --- a/src/regex/regc_color.c +++ /dev/null @@ -1,780 +0,0 @@ -/* - * colorings of characters - * This file is #included by regcomp.c. - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Header$ - * - * - * Note that there are some incestuous relationships between this code and - * NFA arc maintenance, which perhaps ought to be cleaned up sometime. - */ - - - -#define CISERR() VISERR(cm->v) -#define CERR(e) VERR(cm->v, (e)) - - - -/* - * initcm - set up new colormap - */ -static void -initcm(struct vars * v, - struct colormap * cm) -{ - int i; - int j; - union tree *t; - union tree *nextt; - struct colordesc *cd; - - cm->magic = CMMAGIC; - cm->v = v; - - cm->ncds = NINLINECDS; - cm->cd = cm->cdspace; - cm->max = 0; - cm->free = 0; - - cd = cm->cd; /* cm->cd[WHITE] */ - cd->sub = NOSUB; - cd->arcs = NULL; - cd->flags = 0; - cd->nchrs = CHR_MAX - CHR_MIN + 1; - - /* upper levels of tree */ - for (t = &cm->tree[0], j = NBYTS - 1; j > 0; t = nextt, j--) - { - nextt = t + 1; - for (i = BYTTAB - 1; i >= 0; i--) - t->tptr[i] = nextt; - } - /* bottom level is solid white */ - t = &cm->tree[NBYTS - 1]; - for (i = BYTTAB - 1; i >= 0; i--) - t->tcolor[i] = WHITE; - cd->block = t; -} - -/* - * freecm - free dynamically-allocated things in a colormap - */ -static void -freecm(struct colormap * cm) -{ - size_t i; - union tree *cb; - - cm->magic = 0; - if (NBYTS > 1) - cmtreefree(cm, cm->tree, 0); - for (i = 1; i <= cm->max; i++) /* skip WHITE */ - if (!UNUSEDCOLOR(&cm->cd[i])) - { - cb = cm->cd[i].block; - if (cb != NULL) - FREE(cb); - } - if (cm->cd != cm->cdspace) - FREE(cm->cd); -} - -/* - * cmtreefree - free a non-terminal part of a colormap tree - */ -static void -cmtreefree(struct colormap * cm, - union tree * tree, - int level) /* level number (top == 0) of this block */ -{ - int i; - union tree *t; - union tree *fillt = &cm->tree[level + 1]; - union tree *cb; - - assert(level < NBYTS - 1); /* this level has pointers */ - for (i = BYTTAB - 1; i >= 0; i--) - { - t = tree->tptr[i]; - assert(t != NULL); - if (t != fillt) - { - if (level < NBYTS - 2) - { /* more pointer blocks below */ - cmtreefree(cm, t, level + 1); - FREE(t); - } - else - { /* color block below */ - cb = cm->cd[t->tcolor[0]].block; - if (t != cb) /* not a solid block */ - FREE(t); - } - } - } -} - -/* - * setcolor - set the color of a character in a colormap - */ -static color /* previous color */ -setcolor(struct colormap * cm, - chr c, - pcolor co) -{ - uchr uc = c; - int shift; - int level; - int b; - int bottom; - union tree *t; - union tree *newt; - union tree *fillt; - union tree *lastt; - union tree *cb; - color prev; - - assert(cm->magic == CMMAGIC); - if (CISERR() || co == COLORLESS) - return COLORLESS; - - t = cm->tree; - for (level = 0, shift = BYTBITS * (NBYTS - 1); shift > 0; - level++, shift -= BYTBITS) - { - b = (uc >> shift) & BYTMASK; - lastt = t; - t = lastt->tptr[b]; - assert(t != NULL); - fillt = &cm->tree[level + 1]; - bottom = (shift <= BYTBITS) ? 1 : 0; - cb = (bottom) ? cm->cd[t->tcolor[0]].block : fillt; - if (t == fillt || t == cb) - { /* must allocate a new block */ - newt = (union tree *) MALLOC((bottom) ? - sizeof(struct colors) : sizeof(struct ptrs)); - if (newt == NULL) - { - CERR(REG_ESPACE); - return COLORLESS; - } - if (bottom) - memcpy(VS(newt->tcolor), VS(t->tcolor), - BYTTAB * sizeof(color)); - else - memcpy(VS(newt->tptr), VS(t->tptr), - BYTTAB * sizeof(union tree *)); - t = newt; - lastt->tptr[b] = t; - } - } - - b = uc & BYTMASK; - prev = t->tcolor[b]; - t->tcolor[b] = (color) co; - return prev; -} - -/* - * maxcolor - report largest color number in use - */ -static color -maxcolor(struct colormap * cm) -{ - if (CISERR()) - return COLORLESS; - - return (color) cm->max; -} - -/* - * newcolor - find a new color (must be subject of setcolor at once) - * Beware: may relocate the colordescs. - */ -static color /* COLORLESS for error */ -newcolor(struct colormap * cm) -{ - struct colordesc *cd; - struct colordesc *new; - size_t n; - - if (CISERR()) - return COLORLESS; - - if (cm->free != 0) - { - assert(cm->free > 0); - assert((size_t) cm->free < cm->ncds); - cd = &cm->cd[cm->free]; - assert(UNUSEDCOLOR(cd)); - assert(cd->arcs == NULL); - cm->free = cd->sub; - } - else if (cm->max < cm->ncds - 1) - { - cm->max++; - cd = &cm->cd[cm->max]; - } - else - { - /* oops, must allocate more */ - n = cm->ncds * 2; - if (cm->cd == cm->cdspace) - { - new = (struct colordesc *) MALLOC(n * - sizeof(struct colordesc)); - if (new != NULL) - memcpy(VS(new), VS(cm->cdspace), cm->ncds * - sizeof(struct colordesc)); - } - else - new = (struct colordesc *) REALLOC(cm->cd, - n * sizeof(struct colordesc)); - if (new == NULL) - { - CERR(REG_ESPACE); - return COLORLESS; - } - cm->cd = new; - cm->ncds = n; - assert(cm->max < cm->ncds - 1); - cm->max++; - cd = &cm->cd[cm->max]; - } - - cd->nchrs = 0; - cd->sub = NOSUB; - cd->arcs = NULL; - cd->flags = 0; - cd->block = NULL; - - return (color) (cd - cm->cd); -} - -/* - * freecolor - free a color (must have no arcs or subcolor) - */ -static void -freecolor(struct colormap * cm, - pcolor co) -{ - struct colordesc *cd = &cm->cd[co]; - color pco, - nco; /* for freelist scan */ - - assert(co >= 0); - if (co == WHITE) - return; - - assert(cd->arcs == NULL); - assert(cd->sub == NOSUB); - assert(cd->nchrs == 0); - cd->flags = FREECOL; - if (cd->block != NULL) - { - FREE(cd->block); - cd->block = NULL; /* just paranoia */ - } - - if ((size_t) co == cm->max) - { - while (cm->max > WHITE && UNUSEDCOLOR(&cm->cd[cm->max])) - cm->max--; - assert(cm->free >= 0); - while ((size_t) cm->free > cm->max) - cm->free = cm->cd[cm->free].sub; - if (cm->free > 0) - { - assert(cm->free < cm->max); - pco = cm->free; - nco = cm->cd[pco].sub; - while (nco > 0) - if ((size_t) nco > cm->max) - { - /* take this one out of freelist */ - nco = cm->cd[nco].sub; - cm->cd[pco].sub = nco; - } - else - { - assert(nco < cm->max); - pco = nco; - nco = cm->cd[pco].sub; - } - } - } - else - { - cd->sub = cm->free; - cm->free = (color) (cd - cm->cd); - } -} - -/* - * pseudocolor - allocate a false color, to be managed by other means - */ -static color -pseudocolor(struct colormap * cm) -{ - color co; - - co = newcolor(cm); - if (CISERR()) - return COLORLESS; - cm->cd[co].nchrs = 1; - cm->cd[co].flags = PSEUDO; - return co; -} - -/* - * subcolor - allocate a new subcolor (if necessary) to this chr - */ -static color -subcolor(struct colormap * cm, chr c) -{ - color co; /* current color of c */ - color sco; /* new subcolor */ - - co = GETCOLOR(cm, c); - sco = newsub(cm, co); - if (CISERR()) - return COLORLESS; - assert(sco != COLORLESS); - - if (co == sco) /* already in an open subcolor */ - return co; /* rest is redundant */ - cm->cd[co].nchrs--; - cm->cd[sco].nchrs++; - setcolor(cm, c, sco); - return sco; -} - -/* - * newsub - allocate a new subcolor (if necessary) for a color - */ -static color -newsub(struct colormap * cm, - pcolor co) -{ - color sco; /* new subcolor */ - - sco = cm->cd[co].sub; - if (sco == NOSUB) - { /* color has no open subcolor */ - if (cm->cd[co].nchrs == 1) /* optimization */ - return co; - sco = newcolor(cm); /* must create subcolor */ - if (sco == COLORLESS) - { - assert(CISERR()); - return COLORLESS; - } - cm->cd[co].sub = sco; - cm->cd[sco].sub = sco; /* open subcolor points to self */ - } - assert(sco != NOSUB); - - return sco; -} - -/* - * subrange - allocate new subcolors to this range of chrs, fill in arcs - */ -static void -subrange(struct vars * v, - chr from, - chr to, - struct state * lp, - struct state * rp) -{ - uchr uf; - int i; - - assert(from <= to); - - /* first, align "from" on a tree-block boundary */ - uf = (uchr) from; - i = (int) (((uf + BYTTAB - 1) & (uchr) ~BYTMASK) - uf); - for (; from <= to && i > 0; i--, from++) - newarc(v->nfa, PLAIN, subcolor(v->cm, from), lp, rp); - if (from > to) /* didn't reach a boundary */ - return; - - /* deal with whole blocks */ - for (; to - from >= BYTTAB; from += BYTTAB) - subblock(v, from, lp, rp); - - /* clean up any remaining partial table */ - for (; from <= to; from++) - newarc(v->nfa, PLAIN, subcolor(v->cm, from), lp, rp); -} - -/* - * subblock - allocate new subcolors for one tree block of chrs, fill in arcs - */ -static void -subblock(struct vars * v, - chr start, /* first of BYTTAB chrs */ - struct state * lp, - struct state * rp) -{ - uchr uc = start; - struct colormap *cm = v->cm; - int shift; - int level; - int i; - int b; - union tree *t; - union tree *cb; - union tree *fillt; - union tree *lastt; - int previ; - int ndone; - color co; - color sco; - - assert((uc % BYTTAB) == 0); - - /* find its color block, making new pointer blocks as needed */ - t = cm->tree; - fillt = NULL; - for (level = 0, shift = BYTBITS * (NBYTS - 1); shift > 0; - level++, shift -= BYTBITS) - { - b = (uc >> shift) & BYTMASK; - lastt = t; - t = lastt->tptr[b]; - assert(t != NULL); - fillt = &cm->tree[level + 1]; - if (t == fillt && shift > BYTBITS) - { /* need new ptr block */ - t = (union tree *) MALLOC(sizeof(struct ptrs)); - if (t == NULL) - { - CERR(REG_ESPACE); - return; - } - memcpy(VS(t->tptr), VS(fillt->tptr), - BYTTAB * sizeof(union tree *)); - lastt->tptr[b] = t; - } - } - - /* special cases: fill block or solid block */ - co = t->tcolor[0]; - cb = cm->cd[co].block; - if (t == fillt || t == cb) - { - /* either way, we want a subcolor solid block */ - sco = newsub(cm, co); - t = cm->cd[sco].block; - if (t == NULL) - { /* must set it up */ - t = (union tree *) MALLOC(sizeof(struct colors)); - if (t == NULL) - { - CERR(REG_ESPACE); - return; - } - for (i = 0; i < BYTTAB; i++) - t->tcolor[i] = sco; - cm->cd[sco].block = t; - } - /* find loop must have run at least once */ - lastt->tptr[b] = t; - newarc(v->nfa, PLAIN, sco, lp, rp); - cm->cd[co].nchrs -= BYTTAB; - cm->cd[sco].nchrs += BYTTAB; - return; - } - - /* general case, a mixed block to be altered */ - i = 0; - while (i < BYTTAB) - { - co = t->tcolor[i]; - sco = newsub(cm, co); - newarc(v->nfa, PLAIN, sco, lp, rp); - previ = i; - do - { - t->tcolor[i++] = sco; - } while (i < BYTTAB && t->tcolor[i] == co); - ndone = i - previ; - cm->cd[co].nchrs -= ndone; - cm->cd[sco].nchrs += ndone; - } -} - -/* - * okcolors - promote subcolors to full colors - */ -static void -okcolors(struct nfa * nfa, - struct colormap * cm) -{ - struct colordesc *cd; - struct colordesc *end = CDEND(cm); - struct colordesc *scd; - struct arc *a; - color co; - color sco; - - for (cd = cm->cd, co = 0; cd < end; cd++, co++) - { - sco = cd->sub; - if (UNUSEDCOLOR(cd) || sco == NOSUB) - { - /* has no subcolor, no further action */ - } - else if (sco == co) - { - /* is subcolor, let parent deal with it */ - } - else if (cd->nchrs == 0) - { - /* parent empty, its arcs change color to subcolor */ - cd->sub = NOSUB; - scd = &cm->cd[sco]; - assert(scd->nchrs > 0); - assert(scd->sub == sco); - scd->sub = NOSUB; - while ((a = cd->arcs) != NULL) - { - assert(a->co == co); - /* uncolorchain(cm, a); */ - cd->arcs = a->colorchain; - a->co = sco; - /* colorchain(cm, a); */ - a->colorchain = scd->arcs; - scd->arcs = a; - } - freecolor(cm, co); - } - else - { - /* parent's arcs must gain parallel subcolor arcs */ - cd->sub = NOSUB; - scd = &cm->cd[sco]; - assert(scd->nchrs > 0); - assert(scd->sub == sco); - scd->sub = NOSUB; - for (a = cd->arcs; a != NULL; a = a->colorchain) - { - assert(a->co == co); - newarc(nfa, a->type, sco, a->from, a->to); - } - } - } -} - -/* - * colorchain - add this arc to the color chain of its color - */ -static void -colorchain(struct colormap * cm, - struct arc * a) -{ - struct colordesc *cd = &cm->cd[a->co]; - - a->colorchain = cd->arcs; - cd->arcs = a; -} - -/* - * uncolorchain - delete this arc from the color chain of its color - */ -static void -uncolorchain(struct colormap * cm, - struct arc * a) -{ - struct colordesc *cd = &cm->cd[a->co]; - struct arc *aa; - - aa = cd->arcs; - if (aa == a) /* easy case */ - cd->arcs = a->colorchain; - else - { - for (; aa != NULL && aa->colorchain != a; aa = aa->colorchain) - continue; - assert(aa != NULL); - aa->colorchain = a->colorchain; - } - a->colorchain = NULL; /* paranoia */ -} - -/* - * singleton - is this character in its own color? - */ -static int /* predicate */ -singleton(struct colormap * cm, - chr c) -{ - color co; /* color of c */ - - co = GETCOLOR(cm, c); - if (cm->cd[co].nchrs == 1 && cm->cd[co].sub == NOSUB) - return 1; - return 0; -} - -/* - * rainbow - add arcs of all full colors (but one) between specified states - */ -static void -rainbow(struct nfa * nfa, - struct colormap * cm, - int type, - pcolor but, /* COLORLESS if no exceptions */ - struct state * from, - struct state * to) -{ - struct colordesc *cd; - struct colordesc *end = CDEND(cm); - color co; - - for (cd = cm->cd, co = 0; cd < end && !CISERR(); cd++, co++) - if (!UNUSEDCOLOR(cd) && cd->sub != co && co != but && - !(cd->flags & PSEUDO)) - newarc(nfa, type, co, from, to); -} - -/* - * colorcomplement - add arcs of complementary colors - * - * The calling sequence ought to be reconciled with cloneouts(). - */ -static void -colorcomplement(struct nfa * nfa, - struct colormap * cm, - int type, - struct state * of, /* complements of this guy's PLAIN - * outarcs */ - struct state * from, - struct state * to) -{ - struct colordesc *cd; - struct colordesc *end = CDEND(cm); - color co; - - assert(of != from); - for (cd = cm->cd, co = 0; cd < end && !CISERR(); cd++, co++) - if (!UNUSEDCOLOR(cd) && !(cd->flags & PSEUDO)) - if (findarc(of, PLAIN, co) == NULL) - newarc(nfa, type, co, from, to); -} - - -#ifdef REG_DEBUG - -/* - * dumpcolors - debugging output - */ -static void -dumpcolors(struct colormap * cm, - FILE *f) -{ - struct colordesc *cd; - struct colordesc *end; - color co; - chr c; - char *has; - - fprintf(f, "max %ld\n", (long) cm->max); - if (NBYTS > 1) - fillcheck(cm, cm->tree, 0, f); - end = CDEND(cm); - for (cd = cm->cd + 1, co = 1; cd < end; cd++, co++) /* skip 0 */ - if (!UNUSEDCOLOR(cd)) - { - assert(cd->nchrs > 0); - has = (cd->block != NULL) ? "#" : ""; - if (cd->flags & PSEUDO) - fprintf(f, "#%2ld%s(ps): ", (long) co, has); - else - fprintf(f, "#%2ld%s(%2d): ", (long) co, - has, cd->nchrs); - /* it's hard to do this more efficiently */ - for (c = CHR_MIN; c < CHR_MAX; c++) - if (GETCOLOR(cm, c) == co) - dumpchr(c, f); - assert(c == CHR_MAX); - if (GETCOLOR(cm, c) == co) - dumpchr(c, f); - fprintf(f, "\n"); - } -} - -/* - * fillcheck - check proper filling of a tree - */ -static void -fillcheck(struct colormap * cm, - union tree * tree, - int level, /* level number (top == 0) of this block */ - FILE *f) -{ - int i; - union tree *t; - union tree *fillt = &cm->tree[level + 1]; - - assert(level < NBYTS - 1); /* this level has pointers */ - for (i = BYTTAB - 1; i >= 0; i--) - { - t = tree->tptr[i]; - if (t == NULL) - fprintf(f, "NULL found in filled tree!\n"); - else if (t == fillt) - { - } - else if (level < NBYTS - 2) /* more pointer blocks below */ - fillcheck(cm, t, level + 1, f); - } -} - -/* - * dumpchr - print a chr - * - * Kind of char-centric but works well enough for debug use. - */ -static void -dumpchr(chr c, - FILE *f) -{ - if (c == '\\') - fprintf(f, "\\\\"); - else if (c > ' ' && c <= '~') - putc((char) c, f); - else - fprintf(f, "\\u%04lx", (long) c); -} - -#endif /* REG_DEBUG */ diff --git a/src/regex/regc_cvec.c b/src/regex/regc_cvec.c deleted file mode 100644 index b6aa8c98f1..0000000000 --- a/src/regex/regc_cvec.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Utility functions for handling cvecs - * This file is #included by regcomp.c. - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Header$ - * - */ - -/* - * newcvec - allocate a new cvec - */ -static struct cvec * -newcvec(int nchrs, /* to hold this many chrs... */ - int nranges, /* ... and this many ranges... */ - int nmcces) /* ... and this many MCCEs */ -{ - size_t n; - size_t nc; - struct cvec *cv; - - nc = (size_t) nchrs + (size_t) nmcces *(MAXMCCE + 1) + (size_t) nranges *2; - - n = sizeof(struct cvec) + (size_t) (nmcces - 1) * sizeof(chr *) - + nc * sizeof(chr); - cv = (struct cvec *) MALLOC(n); - if (cv == NULL) - return NULL; - cv->chrspace = nchrs; - cv->chrs = (chr *) &cv->mcces[nmcces]; /* chrs just after MCCE - * ptrs */ - cv->mccespace = nmcces; - cv->ranges = cv->chrs + nchrs + nmcces * (MAXMCCE + 1); - cv->rangespace = nranges; - return clearcvec(cv); -} - -/* - * clearcvec - clear a possibly-new cvec - * Returns pointer as convenience. - */ -static struct cvec * -clearcvec(struct cvec * cv) -{ - int i; - - assert(cv != NULL); - cv->nchrs = 0; - assert(cv->chrs == (chr *) &cv->mcces[cv->mccespace]); - cv->nmcces = 0; - cv->nmccechrs = 0; - cv->nranges = 0; - for (i = 0; i < cv->mccespace; i++) - cv->mcces[i] = NULL; - - return cv; -} - -/* - * addchr - add a chr to a cvec - */ -static void -addchr(struct cvec * cv, /* character vector */ - chr c) /* character to add */ -{ - assert(cv->nchrs < cv->chrspace - cv->nmccechrs); - cv->chrs[cv->nchrs++] = (chr) c; -} - -/* - * addrange - add a range to a cvec - */ -static void -addrange(struct cvec * cv, /* character vector */ - chr from, /* first character of range */ - chr to) /* last character of range */ -{ - assert(cv->nranges < cv->rangespace); - cv->ranges[cv->nranges * 2] = (chr) from; - cv->ranges[cv->nranges * 2 + 1] = (chr) to; - cv->nranges++; -} - -/* - * addmcce - add an MCCE to a cvec - */ -static void -addmcce(struct cvec * cv, /* character vector */ - chr *startp, /* beginning of text */ - chr *endp) /* just past end of text */ -{ - int len; - int i; - chr *s; - chr *d; - - if (startp == NULL && endp == NULL) - return; - len = endp - startp; - assert(len > 0); - assert(cv->nchrs + len < cv->chrspace - cv->nmccechrs); - assert(cv->nmcces < cv->mccespace); - d = &cv->chrs[cv->chrspace - cv->nmccechrs - len - 1]; - cv->mcces[cv->nmcces++] = d; - for (s = startp, i = len; i > 0; s++, i--) - *d++ = *s; - *d++ = 0; /* endmarker */ - assert(d == &cv->chrs[cv->chrspace - cv->nmccechrs]); - cv->nmccechrs += len + 1; -} - -/* - * haschr - does a cvec contain this chr? - */ -static int /* predicate */ -haschr(struct cvec * cv, /* character vector */ - chr c) /* character to test for */ -{ - int i; - chr *p; - - for (p = cv->chrs, i = cv->nchrs; i > 0; p++, i--) - { - if (*p == c) - return 1; - } - for (p = cv->ranges, i = cv->nranges; i > 0; p += 2, i--) - { - if ((*p <= c) && (c <= *(p + 1))) - return 1; - } - return 0; -} - -/* - * getcvec - get a cvec, remembering it as v->cv - */ -static struct cvec * -getcvec(struct vars * v, /* context */ - int nchrs, /* to hold this many chrs... */ - int nranges, /* ... and this many ranges... */ - int nmcces) /* ... and this many MCCEs */ -{ - if (v->cv != NULL && nchrs <= v->cv->chrspace && - nranges <= v->cv->rangespace && nmcces <= v->cv->mccespace) - return clearcvec(v->cv); - - if (v->cv != NULL) - freecvec(v->cv); - v->cv = newcvec(nchrs, nranges, nmcces); - if (v->cv == NULL) - ERR(REG_ESPACE); - - return v->cv; -} - -/* - * freecvec - free a cvec - */ -static void -freecvec(struct cvec * cv) -{ - FREE(cv); -} diff --git a/src/regex/regc_lex.c b/src/regex/regc_lex.c deleted file mode 100644 index a24290d1a1..0000000000 --- a/src/regex/regc_lex.c +++ /dev/null @@ -1,1146 +0,0 @@ -/* - * lexical analyzer - * This file is #included by regcomp.c. - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Header$ - * - */ - -/* scanning macros (know about v) */ -#define ATEOS() (v->now >= v->stop) -#define HAVE(n) (v->stop - v->now >= (n)) -#define NEXT1(c) (!ATEOS() && *v->now == CHR(c)) -#define NEXT2(a,b) (HAVE(2) && *v->now == CHR(a) && *(v->now+1) == CHR(b)) -#define NEXT3(a,b,c) (HAVE(3) && *v->now == CHR(a) && \ - *(v->now+1) == CHR(b) && \ - *(v->now+2) == CHR(c)) -#define SET(c) (v->nexttype = (c)) -#define SETV(c, n) (v->nexttype = (c), v->nextvalue = (n)) -#define RET(c) return (SET(c), 1) -#define RETV(c, n) return (SETV(c, n), 1) -#define FAILW(e) return (ERR(e), 0) /* ERR does SET(EOS) */ -#define LASTTYPE(t) (v->lasttype == (t)) - -/* lexical contexts */ -#define L_ERE 1 /* mainline ERE/ARE */ -#define L_BRE 2 /* mainline BRE */ -#define L_Q 3 /* REG_QUOTE */ -#define L_EBND 4 /* ERE/ARE bound */ -#define L_BBND 5 /* BRE bound */ -#define L_BRACK 6 /* brackets */ -#define L_CEL 7 /* collating element */ -#define L_ECL 8 /* equivalence class */ -#define L_CCL 9 /* character class */ -#define INTOCON(c) (v->lexcon = (c)) -#define INCON(con) (v->lexcon == (con)) - -/* construct pointer past end of chr array */ -#define ENDOF(array) ((array) + sizeof(array)/sizeof(chr)) - -/* - * lexstart - set up lexical stuff, scan leading options - */ -static void -lexstart(struct vars * v) -{ - prefixes(v); /* may turn on new type bits etc. */ - NOERR(); - - if (v->cflags & REG_QUOTE) - { - assert(!(v->cflags & (REG_ADVANCED | REG_EXPANDED | REG_NEWLINE))); - INTOCON(L_Q); - } - else if (v->cflags & REG_EXTENDED) - { - assert(!(v->cflags & REG_QUOTE)); - INTOCON(L_ERE); - } - else - { - assert(!(v->cflags & (REG_QUOTE | REG_ADVF))); - INTOCON(L_BRE); - } - - v->nexttype = EMPTY; /* remember we were at the start */ - next(v); /* set up the first token */ -} - -/* - * prefixes - implement various special prefixes - */ -static void -prefixes(struct vars * v) -{ - /* literal string doesn't get any of this stuff */ - if (v->cflags & REG_QUOTE) - return; - - /* initial "***" gets special things */ - if (HAVE(4) && NEXT3('*', '*', '*')) - switch (*(v->now + 3)) - { - case CHR('?'): /* "***?" error, msg shows version */ - ERR(REG_BADPAT); - return; /* proceed no further */ - break; - case CHR('='): /* "***=" shifts to literal string */ - NOTE(REG_UNONPOSIX); - v->cflags |= REG_QUOTE; - v->cflags &= ~(REG_ADVANCED | REG_EXPANDED | REG_NEWLINE); - v->now += 4; - return; /* and there can be no more prefixes */ - break; - case CHR(':'): /* "***:" shifts to AREs */ - NOTE(REG_UNONPOSIX); - v->cflags |= REG_ADVANCED; - v->now += 4; - break; - default: /* otherwise *** is just an error */ - ERR(REG_BADRPT); - return; - break; - } - - /* BREs and EREs don't get embedded options */ - if ((v->cflags & REG_ADVANCED) != REG_ADVANCED) - return; - - /* embedded options (AREs only) */ - if (HAVE(3) && NEXT2('(', '?') && iscalpha(*(v->now + 2))) - { - NOTE(REG_UNONPOSIX); - v->now += 2; - for (; !ATEOS() && iscalpha(*v->now); v->now++) - switch (*v->now) - { - case CHR('b'): /* BREs (but why???) */ - v->cflags &= ~(REG_ADVANCED | REG_QUOTE); - break; - case CHR('c'): /* case sensitive */ - v->cflags &= ~REG_ICASE; - break; - case CHR('e'): /* plain EREs */ - v->cflags |= REG_EXTENDED; - v->cflags &= ~(REG_ADVF | REG_QUOTE); - break; - case CHR('i'): /* case insensitive */ - v->cflags |= REG_ICASE; - break; - case CHR('m'): /* Perloid synonym for n */ - case CHR('n'): /* \n affects ^ $ . [^ */ - v->cflags |= REG_NEWLINE; - break; - case CHR('p'): /* ~Perl, \n affects . [^ */ - v->cflags |= REG_NLSTOP; - v->cflags &= ~REG_NLANCH; - break; - case CHR('q'): /* literal string */ - v->cflags |= REG_QUOTE; - v->cflags &= ~REG_ADVANCED; - break; - case CHR('s'): /* single line, \n ordinary */ - v->cflags &= ~REG_NEWLINE; - break; - case CHR('t'): /* tight syntax */ - v->cflags &= ~REG_EXPANDED; - break; - case CHR('w'): /* weird, \n affects ^ $ only */ - v->cflags &= ~REG_NLSTOP; - v->cflags |= REG_NLANCH; - break; - case CHR('x'): /* expanded syntax */ - v->cflags |= REG_EXPANDED; - break; - default: - ERR(REG_BADOPT); - return; - } - if (!NEXT1(')')) - { - ERR(REG_BADOPT); - return; - } - v->now++; - if (v->cflags & REG_QUOTE) - v->cflags &= ~(REG_EXPANDED | REG_NEWLINE); - } -} - -/* - * lexnest - "call a subroutine", interpolating string at the lexical level - * - * Note, this is not a very general facility. There are a number of - * implicit assumptions about what sorts of strings can be subroutines. - */ -static void -lexnest(struct vars * v, - chr *beginp, /* start of interpolation */ - chr *endp) /* one past end of interpolation */ -{ - assert(v->savenow == NULL); /* only one level of nesting */ - v->savenow = v->now; - v->savestop = v->stop; - v->now = beginp; - v->stop = endp; -} - -/* - * string constants to interpolate as expansions of things like \d - */ -static chr backd[] = { /* \d */ - CHR('['), CHR('['), CHR(':'), - CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'), - CHR(':'), CHR(']'), CHR(']') -}; -static chr backD[] = { /* \D */ - CHR('['), CHR('^'), CHR('['), CHR(':'), - CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'), - CHR(':'), CHR(']'), CHR(']') -}; -static chr brbackd[] = { /* \d within brackets */ - CHR('['), CHR(':'), - CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'), - CHR(':'), CHR(']') -}; -static chr backs[] = { /* \s */ - CHR('['), CHR('['), CHR(':'), - CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'), - CHR(':'), CHR(']'), CHR(']') -}; -static chr backS[] = { /* \S */ - CHR('['), CHR('^'), CHR('['), CHR(':'), - CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'), - CHR(':'), CHR(']'), CHR(']') -}; -static chr brbacks[] = { /* \s within brackets */ - CHR('['), CHR(':'), - CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'), - CHR(':'), CHR(']') -}; -static chr backw[] = { /* \w */ - CHR('['), CHR('['), CHR(':'), - CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'), - CHR(':'), CHR(']'), CHR('_'), CHR(']') -}; -static chr backW[] = { /* \W */ - CHR('['), CHR('^'), CHR('['), CHR(':'), - CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'), - CHR(':'), CHR(']'), CHR('_'), CHR(']') -}; -static chr brbackw[] = { /* \w within brackets */ - CHR('['), CHR(':'), - CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'), - CHR(':'), CHR(']'), CHR('_') -}; - -/* - * lexword - interpolate a bracket expression for word characters - * Possibly ought to inquire whether there is a "word" character class. - */ -static void -lexword(struct vars * v) -{ - lexnest(v, backw, ENDOF(backw)); -} - -/* - * next - get next token - */ -static int /* 1 normal, 0 failure */ -next(struct vars * v) -{ - chr c; - - /* errors yield an infinite sequence of failures */ - if (ISERR()) - return 0; /* the error has set nexttype to EOS */ - - /* remember flavor of last token */ - v->lasttype = v->nexttype; - - /* REG_BOSONLY */ - if (v->nexttype == EMPTY && (v->cflags & REG_BOSONLY)) - { - /* at start of a REG_BOSONLY RE */ - RETV(SBEGIN, 0); /* same as \A */ - } - - /* if we're nested and we've hit end, return to outer level */ - if (v->savenow != NULL && ATEOS()) - { - v->now = v->savenow; - v->stop = v->savestop; - v->savenow = v->savestop = NULL; - } - - /* skip white space etc. if appropriate (not in literal or []) */ - if (v->cflags & REG_EXPANDED) - switch (v->lexcon) - { - case L_ERE: - case L_BRE: - case L_EBND: - case L_BBND: - skip(v); - break; - } - - /* handle EOS, depending on context */ - if (ATEOS()) - { - switch (v->lexcon) - { - case L_ERE: - case L_BRE: - case L_Q: - RET(EOS); - break; - case L_EBND: - case L_BBND: - FAILW(REG_EBRACE); - break; - case L_BRACK: - case L_CEL: - case L_ECL: - case L_CCL: - FAILW(REG_EBRACK); - break; - } - assert(NOTREACHED); - } - - /* okay, time to actually get a character */ - c = *v->now++; - - /* deal with the easy contexts, punt EREs to code below */ - switch (v->lexcon) - { - case L_BRE: /* punt BREs to separate function */ - return brenext(v, c); - break; - case L_ERE: /* see below */ - break; - case L_Q: /* literal strings are easy */ - RETV(PLAIN, c); - break; - case L_BBND: /* bounds are fairly simple */ - case L_EBND: - switch (c) - { - case CHR('0'): - case CHR('1'): - case CHR('2'): - case CHR('3'): - case CHR('4'): - case CHR('5'): - case CHR('6'): - case CHR('7'): - case CHR('8'): - case CHR('9'): - RETV(DIGIT, (chr) DIGITVAL(c)); - break; - case CHR(','): - RET(','); - break; - case CHR('}'): /* ERE bound ends with } */ - if (INCON(L_EBND)) - { - INTOCON(L_ERE); - if ((v->cflags & REG_ADVF) && NEXT1('?')) - { - v->now++; - NOTE(REG_UNONPOSIX); - RETV('}', 0); - } - RETV('}', 1); - } - else - FAILW(REG_BADBR); - break; - case CHR('\\'): /* BRE bound ends with \} */ - if (INCON(L_BBND) && NEXT1('}')) - { - v->now++; - INTOCON(L_BRE); - RET('}'); - } - else - FAILW(REG_BADBR); - break; - default: - FAILW(REG_BADBR); - break; - } - assert(NOTREACHED); - break; - case L_BRACK: /* brackets are not too hard */ - switch (c) - { - case CHR(']'): - if (LASTTYPE('[')) - RETV(PLAIN, c); - else - { - INTOCON((v->cflags & REG_EXTENDED) ? - L_ERE : L_BRE); - RET(']'); - } - break; - case CHR('\\'): - NOTE(REG_UBBS); - if (!(v->cflags & REG_ADVF)) - RETV(PLAIN, c); - NOTE(REG_UNONPOSIX); - if (ATEOS()) - FAILW(REG_EESCAPE); - (DISCARD) lexescape(v); - switch (v->nexttype) - { /* not all escapes okay here */ - case PLAIN: - return 1; - break; - case CCLASS: - switch (v->nextvalue) - { - case 'd': - lexnest(v, brbackd, ENDOF(brbackd)); - break; - case 's': - lexnest(v, brbacks, ENDOF(brbacks)); - break; - case 'w': - lexnest(v, brbackw, ENDOF(brbackw)); - break; - default: - FAILW(REG_EESCAPE); - break; - } - /* lexnest done, back up and try again */ - v->nexttype = v->lasttype; - return next(v); - break; - } - /* not one of the acceptable escapes */ - FAILW(REG_EESCAPE); - break; - case CHR('-'): - if (LASTTYPE('[') || NEXT1(']')) - RETV(PLAIN, c); - else - RETV(RANGE, c); - break; - case CHR('['): - if (ATEOS()) - FAILW(REG_EBRACK); - switch (*v->now++) - { - case CHR('.'): - INTOCON(L_CEL); - /* might or might not be locale-specific */ - RET(COLLEL); - break; - case CHR('='): - INTOCON(L_ECL); - NOTE(REG_ULOCALE); - RET(ECLASS); - break; - case CHR(':'): - INTOCON(L_CCL); - NOTE(REG_ULOCALE); - RET(CCLASS); - break; - default: /* oops */ - v->now--; - RETV(PLAIN, c); - break; - } - assert(NOTREACHED); - break; - default: - RETV(PLAIN, c); - break; - } - assert(NOTREACHED); - break; - case L_CEL: /* collating elements are easy */ - if (c == CHR('.') && NEXT1(']')) - { - v->now++; - INTOCON(L_BRACK); - RETV(END, '.'); - } - else - RETV(PLAIN, c); - break; - case L_ECL: /* ditto equivalence classes */ - if (c == CHR('=') && NEXT1(']')) - { - v->now++; - INTOCON(L_BRACK); - RETV(END, '='); - } - else - RETV(PLAIN, c); - break; - case L_CCL: /* ditto character classes */ - if (c == CHR(':') && NEXT1(']')) - { - v->now++; - INTOCON(L_BRACK); - RETV(END, ':'); - } - else - RETV(PLAIN, c); - break; - default: - assert(NOTREACHED); - break; - } - - /* that got rid of everything except EREs and AREs */ - assert(INCON(L_ERE)); - - /* deal with EREs and AREs, except for backslashes */ - switch (c) - { - case CHR('|'): - RET('|'); - break; - case CHR('*'): - if ((v->cflags & REG_ADVF) && NEXT1('?')) - { - v->now++; - NOTE(REG_UNONPOSIX); - RETV('*', 0); - } - RETV('*', 1); - break; - case CHR('+'): - if ((v->cflags & REG_ADVF) && NEXT1('?')) - { - v->now++; - NOTE(REG_UNONPOSIX); - RETV('+', 0); - } - RETV('+', 1); - break; - case CHR('?'): - if ((v->cflags & REG_ADVF) && NEXT1('?')) - { - v->now++; - NOTE(REG_UNONPOSIX); - RETV('?', 0); - } - RETV('?', 1); - break; - case CHR('{'): /* bounds start or plain character */ - if (v->cflags & REG_EXPANDED) - skip(v); - if (ATEOS() || !iscdigit(*v->now)) - { - NOTE(REG_UBRACES); - NOTE(REG_UUNSPEC); - RETV(PLAIN, c); - } - else - { - NOTE(REG_UBOUNDS); - INTOCON(L_EBND); - RET('{'); - } - assert(NOTREACHED); - break; - case CHR('('): /* parenthesis, or advanced extension */ - if ((v->cflags & REG_ADVF) && NEXT1('?')) - { - NOTE(REG_UNONPOSIX); - v->now++; - switch (*v->now++) - { - case CHR(':'): /* non-capturing paren */ - RETV('(', 0); - break; - case CHR('#'): /* comment */ - while (!ATEOS() && *v->now != CHR(')')) - v->now++; - if (!ATEOS()) - v->now++; - assert(v->nexttype == v->lasttype); - return next(v); - break; - case CHR('='): /* positive lookahead */ - NOTE(REG_ULOOKAHEAD); - RETV(LACON, 1); - break; - case CHR('!'): /* negative lookahead */ - NOTE(REG_ULOOKAHEAD); - RETV(LACON, 0); - break; - default: - FAILW(REG_BADRPT); - break; - } - assert(NOTREACHED); - } - if (v->cflags & REG_NOSUB) - RETV('(', 0); /* all parens non-capturing */ - else - RETV('(', 1); - break; - case CHR(')'): - if (LASTTYPE('(')) - NOTE(REG_UUNSPEC); - RETV(')', c); - break; - case CHR('['): /* easy except for [[:<:]] and [[:>:]] */ - if (HAVE(6) && *(v->now + 0) == CHR('[') && - *(v->now + 1) == CHR(':') && - (*(v->now + 2) == CHR('<') || - *(v->now + 2) == CHR('>')) && - *(v->now + 3) == CHR(':') && - *(v->now + 4) == CHR(']') && - *(v->now + 5) == CHR(']')) - { - c = *(v->now + 2); - v->now += 6; - NOTE(REG_UNONPOSIX); - RET((c == CHR('<')) ? '<' : '>'); - } - INTOCON(L_BRACK); - if (NEXT1('^')) - { - v->now++; - RETV('[', 0); - } - RETV('[', 1); - break; - case CHR('.'): - RET('.'); - break; - case CHR('^'): - RET('^'); - break; - case CHR('$'): - RET('$'); - break; - case CHR('\\'): /* mostly punt backslashes to code below */ - if (ATEOS()) - FAILW(REG_EESCAPE); - break; - default: /* ordinary character */ - RETV(PLAIN, c); - break; - } - - /* ERE/ARE backslash handling; backslash already eaten */ - assert(!ATEOS()); - if (!(v->cflags & REG_ADVF)) - { /* only AREs have non-trivial escapes */ - if (iscalnum(*v->now)) - { - NOTE(REG_UBSALNUM); - NOTE(REG_UUNSPEC); - } - RETV(PLAIN, *v->now++); - } - (DISCARD) lexescape(v); - if (ISERR()) - FAILW(REG_EESCAPE); - if (v->nexttype == CCLASS) - { /* fudge at lexical level */ - switch (v->nextvalue) - { - case 'd': - lexnest(v, backd, ENDOF(backd)); - break; - case 'D': - lexnest(v, backD, ENDOF(backD)); - break; - case 's': - lexnest(v, backs, ENDOF(backs)); - break; - case 'S': - lexnest(v, backS, ENDOF(backS)); - break; - case 'w': - lexnest(v, backw, ENDOF(backw)); - break; - case 'W': - lexnest(v, backW, ENDOF(backW)); - break; - default: - assert(NOTREACHED); - FAILW(REG_ASSERT); - break; - } - /* lexnest done, back up and try again */ - v->nexttype = v->lasttype; - return next(v); - } - /* otherwise, lexescape has already done the work */ - return !ISERR(); -} - -/* - * lexescape - parse an ARE backslash escape (backslash already eaten) - * Note slightly nonstandard use of the CCLASS type code. - */ -static int /* not actually used, but convenient for - * RETV */ -lexescape(struct vars * v) -{ - chr c; - static chr alert[] = { - CHR('a'), CHR('l'), CHR('e'), CHR('r'), CHR('t') - }; - static chr esc[] = { - CHR('E'), CHR('S'), CHR('C') - }; - chr *save; - - assert(v->cflags & REG_ADVF); - - assert(!ATEOS()); - c = *v->now++; - if (!iscalnum(c)) - RETV(PLAIN, c); - - NOTE(REG_UNONPOSIX); - switch (c) - { - case CHR('a'): - RETV(PLAIN, chrnamed(v, alert, ENDOF(alert), CHR('\007'))); - break; - case CHR('A'): - RETV(SBEGIN, 0); - break; - case CHR('b'): - RETV(PLAIN, CHR('\b')); - break; - case CHR('B'): - RETV(PLAIN, CHR('\\')); - break; - case CHR('c'): - NOTE(REG_UUNPORT); - if (ATEOS()) - FAILW(REG_EESCAPE); - RETV(PLAIN, (chr) (*v->now++ & 037)); - break; - case CHR('d'): - NOTE(REG_ULOCALE); - RETV(CCLASS, 'd'); - break; - case CHR('D'): - NOTE(REG_ULOCALE); - RETV(CCLASS, 'D'); - break; - case CHR('e'): - NOTE(REG_UUNPORT); - RETV(PLAIN, chrnamed(v, esc, ENDOF(esc), CHR('\033'))); - break; - case CHR('f'): - RETV(PLAIN, CHR('\f')); - break; - case CHR('m'): - RET('<'); - break; - case CHR('M'): - RET('>'); - break; - case CHR('n'): - RETV(PLAIN, CHR('\n')); - break; - case CHR('r'): - RETV(PLAIN, CHR('\r')); - break; - case CHR('s'): - NOTE(REG_ULOCALE); - RETV(CCLASS, 's'); - break; - case CHR('S'): - NOTE(REG_ULOCALE); - RETV(CCLASS, 'S'); - break; - case CHR('t'): - RETV(PLAIN, CHR('\t')); - break; - case CHR('u'): - c = lexdigits(v, 16, 4, 4); - if (ISERR()) - FAILW(REG_EESCAPE); - RETV(PLAIN, c); - break; - case CHR('U'): - c = lexdigits(v, 16, 8, 8); - if (ISERR()) - FAILW(REG_EESCAPE); - RETV(PLAIN, c); - break; - case CHR('v'): - RETV(PLAIN, CHR('\v')); - break; - case CHR('w'): - NOTE(REG_ULOCALE); - RETV(CCLASS, 'w'); - break; - case CHR('W'): - NOTE(REG_ULOCALE); - RETV(CCLASS, 'W'); - break; - case CHR('x'): - NOTE(REG_UUNPORT); - c = lexdigits(v, 16, 1, 255); /* REs >255 long outside - * spec */ - if (ISERR()) - FAILW(REG_EESCAPE); - RETV(PLAIN, c); - break; - case CHR('y'): - NOTE(REG_ULOCALE); - RETV(WBDRY, 0); - break; - case CHR('Y'): - NOTE(REG_ULOCALE); - RETV(NWBDRY, 0); - break; - case CHR('Z'): - RETV(SEND, 0); - break; - case CHR('1'): - case CHR('2'): - case CHR('3'): - case CHR('4'): - case CHR('5'): - case CHR('6'): - case CHR('7'): - case CHR('8'): - case CHR('9'): - save = v->now; - v->now--; /* put first digit back */ - c = lexdigits(v, 10, 1, 255); /* REs >255 long outside - * spec */ - if (ISERR()) - FAILW(REG_EESCAPE); - /* ugly heuristic (first test is "exactly 1 digit?") */ - if (v->now - save == 0 || (int) c <= v->nsubexp) - { - NOTE(REG_UBACKREF); - RETV(BACKREF, (chr) c); - } - /* oops, doesn't look like it's a backref after all... */ - v->now = save; - /* and fall through into octal number */ - case CHR('0'): - NOTE(REG_UUNPORT); - v->now--; /* put first digit back */ - c = lexdigits(v, 8, 1, 3); - if (ISERR()) - FAILW(REG_EESCAPE); - RETV(PLAIN, c); - break; - default: - assert(iscalpha(c)); - FAILW(REG_EESCAPE); /* unknown alphabetic escape */ - break; - } - assert(NOTREACHED); -} - -/* - * lexdigits - slurp up digits and return chr value - */ -static chr /* chr value; errors signalled via ERR */ -lexdigits(struct vars * v, - int base, - int minlen, - int maxlen) -{ - uchr n; /* unsigned to avoid overflow misbehavior */ - int len; - chr c; - int d; - const uchr ub = (uchr) base; - - n = 0; - for (len = 0; len < maxlen && !ATEOS(); len++) - { - c = *v->now++; - switch (c) - { - case CHR('0'): - case CHR('1'): - case CHR('2'): - case CHR('3'): - case CHR('4'): - case CHR('5'): - case CHR('6'): - case CHR('7'): - case CHR('8'): - case CHR('9'): - d = DIGITVAL(c); - break; - case CHR('a'): - case CHR('A'): - d = 10; - break; - case CHR('b'): - case CHR('B'): - d = 11; - break; - case CHR('c'): - case CHR('C'): - d = 12; - break; - case CHR('d'): - case CHR('D'): - d = 13; - break; - case CHR('e'): - case CHR('E'): - d = 14; - break; - case CHR('f'): - case CHR('F'): - d = 15; - break; - default: - v->now--; /* oops, not a digit at all */ - d = -1; - break; - } - - if (d >= base) - { /* not a plausible digit */ - v->now--; - d = -1; - } - if (d < 0) - break; /* NOTE BREAK OUT */ - n = n * ub + (uchr) d; - } - if (len < minlen) - ERR(REG_EESCAPE); - - return (chr) n; -} - -/* - * brenext - get next BRE token - * - * This is much like EREs except for all the stupid backslashes and the - * context-dependency of some things. - */ -static int /* 1 normal, 0 failure */ -brenext(struct vars * v, - chr pc) -{ - chr c = (chr) pc; - - switch (c) - { - case CHR('*'): - if (LASTTYPE(EMPTY) || LASTTYPE('(') || LASTTYPE('^')) - RETV(PLAIN, c); - RET('*'); - break; - case CHR('['): - if (HAVE(6) && *(v->now + 0) == CHR('[') && - *(v->now + 1) == CHR(':') && - (*(v->now + 2) == CHR('<') || - *(v->now + 2) == CHR('>')) && - *(v->now + 3) == CHR(':') && - *(v->now + 4) == CHR(']') && - *(v->now + 5) == CHR(']')) - { - c = *(v->now + 2); - v->now += 6; - NOTE(REG_UNONPOSIX); - RET((c == CHR('<')) ? '<' : '>'); - } - INTOCON(L_BRACK); - if (NEXT1('^')) - { - v->now++; - RETV('[', 0); - } - RETV('[', 1); - break; - case CHR('.'): - RET('.'); - break; - case CHR('^'): - if (LASTTYPE(EMPTY)) - RET('^'); - if (LASTTYPE('(')) - { - NOTE(REG_UUNSPEC); - RET('^'); - } - RETV(PLAIN, c); - break; - case CHR('$'): - if (v->cflags & REG_EXPANDED) - skip(v); - if (ATEOS()) - RET('$'); - if (NEXT2('\\', ')')) - { - NOTE(REG_UUNSPEC); - RET('$'); - } - RETV(PLAIN, c); - break; - case CHR('\\'): - break; /* see below */ - default: - RETV(PLAIN, c); - break; - } - - assert(c == CHR('\\')); - - if (ATEOS()) - FAILW(REG_EESCAPE); - - c = *v->now++; - switch (c) - { - case CHR('{'): - INTOCON(L_BBND); - NOTE(REG_UBOUNDS); - RET('{'); - break; - case CHR('('): - RETV('(', 1); - break; - case CHR(')'): - RETV(')', c); - break; - case CHR('<'): - NOTE(REG_UNONPOSIX); - RET('<'); - break; - case CHR('>'): - NOTE(REG_UNONPOSIX); - RET('>'); - break; - case CHR('1'): - case CHR('2'): - case CHR('3'): - case CHR('4'): - case CHR('5'): - case CHR('6'): - case CHR('7'): - case CHR('8'): - case CHR('9'): - NOTE(REG_UBACKREF); - RETV(BACKREF, (chr) DIGITVAL(c)); - break; - default: - if (iscalnum(c)) - { - NOTE(REG_UBSALNUM); - NOTE(REG_UUNSPEC); - } - RETV(PLAIN, c); - break; - } - - assert(NOTREACHED); -} - -/* - * skip - skip white space and comments in expanded form - */ -static void -skip(struct vars * v) -{ - chr *start = v->now; - - assert(v->cflags & REG_EXPANDED); - - for (;;) - { - while (!ATEOS() && iscspace(*v->now)) - v->now++; - if (ATEOS() || *v->now != CHR('#')) - break; /* NOTE BREAK OUT */ - assert(NEXT1('#')); - while (!ATEOS() && *v->now != CHR('\n')) - v->now++; - /* leave the newline to be picked up by the iscspace loop */ - } - - if (v->now != start) - NOTE(REG_UNONPOSIX); -} - -/* - * newline - return the chr for a newline - * - * This helps confine use of CHR to this source file. - */ -static chr -newline(void) -{ - return CHR('\n'); -} - -/* - * chrnamed - return the chr known by a given (chr string) name - * - * The code is a bit clumsy, but this routine gets only such specialized - * use that it hardly matters. - */ -static chr -chrnamed(struct vars * v, - chr *startp, /* start of name */ - chr *endp, /* just past end of name */ - chr lastresort) /* what to return if name lookup fails */ -{ - celt c; - int errsave; - int e; - struct cvec *cv; - - errsave = v->err; - v->err = 0; - c = element(v, startp, endp); - e = v->err; - v->err = errsave; - - if (e != 0) - return (chr) lastresort; - - cv = range(v, c, c, 0); - if (cv->nchrs == 0) - return (chr) lastresort; - return cv->chrs[0]; -} diff --git a/src/regex/regc_locale.c b/src/regex/regc_locale.c deleted file mode 100644 index 4e13b8488b..0000000000 --- a/src/regex/regc_locale.c +++ /dev/null @@ -1,838 +0,0 @@ -/* - * regc_locale.c -- - * - * This file contains locale-specific regexp routines. - * This file is #included by regcomp.c. - * - * Copyright (c) 1998 by Scriptics Corporation. - * - * This software is copyrighted by the Regents of the University of - * California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState - * Corporation and other parties. The following terms apply to all files - * associated with the software unless explicitly disclaimed in - * individual files. - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - * - * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY - * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY - * DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE - * IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE - * NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR - * MODIFICATIONS. - * - * GOVERNMENT USE: If you are acquiring this software on behalf of the - * U.S. government, the Government shall have only "Restricted Rights" - * in the software and related documentation as defined in the Federal - * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you - * are acquiring the software on behalf of the Department of Defense, the - * software shall be classified as "Commercial Computer Software" and the - * Government shall have only "Restricted Rights" as defined in Clause - * 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the - * authors grant the U.S. Government and others acting in its behalf - * permission to use and distribute the software in accordance with the - * terms specified in this license. - * - * $Header$ - */ - -int char_and_wchar_strncmp (const char* cp, const wx_wchar* wp, size_t nNum) -{ - while(*cp++ == (const char)*wp++ && --nNum){} - - return nNum; -} - -/* ASCII character-name table */ - -static struct cname -{ - char *name; - char code; -} cnames[] = - -{ - { - "NUL", '\0' - }, - { - "SOH", '\001' - }, - { - "STX", '\002' - }, - { - "ETX", '\003' - }, - { - "EOT", '\004' - }, - { - "ENQ", '\005' - }, - { - "ACK", '\006' - }, - { - "BEL", '\007' - }, - { - "alert", '\007' - }, - { - "BS", '\010' - }, - { - "backspace", '\b' - }, - { - "HT", '\011' - }, - { - "tab", '\t' - }, - { - "LF", '\012' - }, - { - "newline", '\n' - }, - { - "VT", '\013' - }, - { - "vertical-tab", '\v' - }, - { - "FF", '\014' - }, - { - "form-feed", '\f' - }, - { - "CR", '\015' - }, - { - "carriage-return", '\r' - }, - { - "SO", '\016' - }, - { - "SI", '\017' - }, - { - "DLE", '\020' - }, - { - "DC1", '\021' - }, - { - "DC2", '\022' - }, - { - "DC3", '\023' - }, - { - "DC4", '\024' - }, - { - "NAK", '\025' - }, - { - "SYN", '\026' - }, - { - "ETB", '\027' - }, - { - "CAN", '\030' - }, - { - "EM", '\031' - }, - { - "SUB", '\032' - }, - { - "ESC", '\033' - }, - { - "IS4", '\034' - }, - { - "FS", '\034' - }, - { - "IS3", '\035' - }, - { - "GS", '\035' - }, - { - "IS2", '\036' - }, - { - "RS", '\036' - }, - { - "IS1", '\037' - }, - { - "US", '\037' - }, - { - "space", ' ' - }, - { - "exclamation-mark", '!' - }, - { - "quotation-mark", '"' - }, - { - "number-sign", '#' - }, - { - "dollar-sign", '$' - }, - { - "percent-sign", '%' - }, - { - "ampersand", '&' - }, - { - "apostrophe", '\'' - }, - { - "left-parenthesis", '(' - }, - { - "right-parenthesis", ')' - }, - { - "asterisk", '*' - }, - { - "plus-sign", '+' - }, - { - "comma", ',' - }, - { - "hyphen", '-' - }, - { - "hyphen-minus", '-' - }, - { - "period", '.' - }, - { - "full-stop", '.' - }, - { - "slash", '/' - }, - { - "solidus", '/' - }, - { - "zero", '0' - }, - { - "one", '1' - }, - { - "two", '2' - }, - { - "three", '3' - }, - { - "four", '4' - }, - { - "five", '5' - }, - { - "six", '6' - }, - { - "seven", '7' - }, - { - "eight", '8' - }, - { - "nine", '9' - }, - { - "colon", ':' - }, - { - "semicolon", ';' - }, - { - "less-than-sign", '<' - }, - { - "equals-sign", '=' - }, - { - "greater-than-sign", '>' - }, - { - "question-mark", '?' - }, - { - "commercial-at", '@' - }, - { - "left-square-bracket", '[' - }, - { - "backslash", '\\' - }, - { - "reverse-solidus", '\\' - }, - { - "right-square-bracket", ']' - }, - { - "circumflex", '^' - }, - { - "circumflex-accent", '^' - }, - { - "underscore", '_' - }, - { - "low-line", '_' - }, - { - "grave-accent", '`' - }, - { - "left-brace", '{' - }, - { - "left-curly-bracket", '{' - }, - { - "vertical-line", '|' - }, - { - "right-brace", '}' - }, - { - "right-curly-bracket", '}' - }, - { - "tilde", '~' - }, - { - "DEL", '\177' - }, - { - NULL, 0 - } -}; - -/* - * some ctype functions with non-ascii-char guard - */ -static int -wx_isdigit(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && isdigit((unsigned char) c)); -} - -static int -wx_isalpha(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && isalpha((unsigned char) c)); -} - -static int -wx_isalnum(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && isalnum((unsigned char) c)); -} - -static int -wx_isupper(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && isupper((unsigned char) c)); -} - -static int -wx_islower(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && islower((unsigned char) c)); -} - -static int -wx_isgraph(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && isgraph((unsigned char) c)); -} - -static int -wx_ispunct(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && ispunct((unsigned char) c)); -} - -static int -wx_isspace(wx_wchar c) -{ - return (c >= 0 && c <= UCHAR_MAX && isspace((unsigned char) c)); -} - -static wx_wchar -wx_toupper(wx_wchar c) -{ - if (c >= 0 && c <= UCHAR_MAX) - return toupper((unsigned char) c); - return c; -} - -static wx_wchar -wx_tolower(wx_wchar c) -{ - if (c >= 0 && c <= UCHAR_MAX) - return tolower((unsigned char) c); - return c; -} - - -/* - * nmcces - how many distinct MCCEs are there? - */ -static int -nmcces(struct vars * v) -{ - /* - * No multi-character collating elements defined at the moment. - */ - return 0; -} - -/* - * nleaders - how many chrs can be first chrs of MCCEs? - */ -static int -nleaders(struct vars * v) -{ - return 0; -} - -/* - * allmcces - return a cvec with all the MCCEs of the locale - */ -static struct cvec * -allmcces(struct vars * v, /* context */ - struct cvec * cv) /* this is supposed to have enough room */ -{ - return clearcvec(cv); -} - -/* - * element - map collating-element name to celt - */ -static celt -element(struct vars * v, /* context */ - chr *startp, /* points to start of name */ - chr *endp) /* points just past end of name */ -{ - struct cname *cn; - size_t len; - - /* generic: one-chr names stand for themselves */ - assert(startp < endp); - len = endp - startp; - if (len == 1) - return *startp; - - NOTE(REG_ULOCALE); - - /* search table */ - for (cn = cnames; cn->name != NULL; cn++) - { - if (strlen(cn->name) == len && - char_and_wchar_strncmp(cn->name, startp, len) == 0) - { - break; /* NOTE BREAK OUT */ - } - } - if (cn->name != NULL) - return CHR(cn->code); - - /* couldn't find it */ - ERR(REG_ECOLLATE); - return 0; -} - -/* - * range - supply cvec for a range, including legality check - */ -static struct cvec * -range(struct vars * v, /* context */ - celt a, /* range start */ - celt b, /* range end, might equal a */ - int cases) /* case-independent? */ -{ - int nchrs; - struct cvec *cv; - celt c, - lc, - uc; - - if (a != b && !before(a, b)) - { - ERR(REG_ERANGE); - return NULL; - } - - if (!cases) - { /* easy version */ - cv = getcvec(v, 0, 1, 0); - NOERRN(); - addrange(cv, a, b); - return cv; - } - - /* - * When case-independent, it's hard to decide when cvec ranges are - * usable, so for now at least, we won't try. We allocate enough - * space for two case variants plus a little extra for the two title - * case variants. - */ - - nchrs = (b - a + 1) * 2 + 4; - - cv = getcvec(v, nchrs, 0, 0); - NOERRN(); - - for (c = a; c <= b; c++) - { - addchr(cv, c); - lc = wx_tolower((chr) c); - if (c != lc) - addchr(cv, lc); - uc = wx_toupper((chr) c); - if (c != uc) - addchr(cv, uc); - } - - return cv; -} - -/* - * before - is celt x before celt y, for purposes of range legality? - */ -static int /* predicate */ -before(celt x, celt y) -{ - /* trivial because no MCCEs */ - if (x < y) - return 1; - return 0; -} - -/* - * eclass - supply cvec for an equivalence class - * Must include case counterparts on request. - */ -static struct cvec * -eclass(struct vars * v, /* context */ - celt c, /* Collating element representing the - * equivalence class. */ - int cases) /* all cases? */ -{ - struct cvec *cv; - - /* crude fake equivalence class for testing */ - if ((v->cflags & REG_FAKE) && c == 'x') - { - cv = getcvec(v, 4, 0, 0); - addchr(cv, (chr) 'x'); - addchr(cv, (chr) 'y'); - if (cases) - { - addchr(cv, (chr) 'X'); - addchr(cv, (chr) 'Y'); - } - return cv; - } - - /* otherwise, none */ - if (cases) - return allcases(v, c); - cv = getcvec(v, 1, 0, 0); - assert(cv != NULL); - addchr(cv, (chr) c); - return cv; -} - -/* - * cclass - supply cvec for a character class - * - * Must include case counterparts on request. - */ -static struct cvec * -cclass(struct vars * v, /* context */ - chr *startp, /* where the name starts */ - chr *endp, /* just past the end of the name */ - int cases) /* case-independent? */ -{ - size_t len; - struct cvec *cv = NULL; - char **namePtr; - int i, - index; - - /* - * The following arrays define the valid character class names. - */ - - static char *classNames[] = { - "alnum", "alpha", "ascii", "blank", "cntrl", "digit", "graph", - "lower", "print", "punct", "space", "upper", "xdigit", NULL - }; - - enum classes - { - CC_ALNUM, CC_ALPHA, CC_ASCII, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH, - CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_XDIGIT - }; - - /* - * Map the name to the corresponding enumerated value. - */ - len = endp - startp; - index = -1; - for (namePtr = classNames, i = 0; *namePtr != NULL; namePtr++, i++) - { - if (strlen(*namePtr) == len && - char_and_wchar_strncmp(*namePtr, startp, len) == 0) - { - index = i; - break; - } - } - if (index == -1) - { - ERR(REG_ECTYPE); - return NULL; - } - - /* - * Remap lower and upper to alpha if the match is case insensitive. - */ - - if (cases && - ((enum classes) index == CC_LOWER || - (enum classes) index == CC_UPPER)) - index = (int) CC_ALPHA; - - /* - * Now compute the character class contents. - * - * For the moment, assume that only char codes < 256 can be in these - * classes. - */ - - switch ((enum classes) index) - { - case CC_PRINT: - case CC_ALNUM: - cv = getcvec(v, UCHAR_MAX, 1, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_isalpha((chr) i)) - addchr(cv, (chr) i); - } - addrange(cv, (chr) '0', (chr) '9'); - } - break; - case CC_ALPHA: - cv = getcvec(v, UCHAR_MAX, 0, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_isalpha((chr) i)) - addchr(cv, (chr) i); - } - } - break; - case CC_ASCII: - cv = getcvec(v, 0, 1, 0); - if (cv) - addrange(cv, 0, 0x7f); - break; - case CC_BLANK: - cv = getcvec(v, 2, 0, 0); - addchr(cv, '\t'); - addchr(cv, ' '); - break; - case CC_CNTRL: - cv = getcvec(v, 0, 2, 0); - addrange(cv, 0x0, 0x1f); - addrange(cv, 0x7f, 0x9f); - break; - case CC_DIGIT: - cv = getcvec(v, 0, 1, 0); - if (cv) - addrange(cv, (chr) '0', (chr) '9'); - break; - case CC_PUNCT: - cv = getcvec(v, UCHAR_MAX, 0, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_ispunct((chr) i)) - addchr(cv, (chr) i); - } - } - break; - case CC_XDIGIT: - cv = getcvec(v, 0, 3, 0); - if (cv) - { - addrange(cv, '0', '9'); - addrange(cv, 'a', 'f'); - addrange(cv, 'A', 'F'); - } - break; - case CC_SPACE: - cv = getcvec(v, UCHAR_MAX, 0, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_isspace((chr) i)) - addchr(cv, (chr) i); - } - } - break; - case CC_LOWER: - cv = getcvec(v, UCHAR_MAX, 0, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_islower((chr) i)) - addchr(cv, (chr) i); - } - } - break; - case CC_UPPER: - cv = getcvec(v, UCHAR_MAX, 0, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_isupper((chr) i)) - addchr(cv, (chr) i); - } - } - break; - case CC_GRAPH: - cv = getcvec(v, UCHAR_MAX, 0, 0); - if (cv) - { - for (i = 0; i <= UCHAR_MAX; i++) - { - if (wx_isgraph((chr) i)) - addchr(cv, (chr) i); - } - } - break; - } - if (cv == NULL) - ERR(REG_ESPACE); - return cv; -} - -/* - * allcases - supply cvec for all case counterparts of a chr (including itself) - * - * This is a shortcut, preferably an efficient one, for simple characters; - * messy cases are done via range(). - */ -static struct cvec * -allcases(struct vars * v, /* context */ - chr pc) /* character to get case equivs of */ -{ - struct cvec *cv; - chr c = (chr) pc; - chr lc, - uc; - - lc = wx_tolower((chr) c); - uc = wx_toupper((chr) c); - - cv = getcvec(v, 2, 0, 0); - addchr(cv, lc); - if (lc != uc) - addchr(cv, uc); - return cv; -} - -/* - * cmp - chr-substring compare - * - * Backrefs need this. It should preferably be efficient. - * Note that it does not need to report anything except equal/unequal. - * Note also that the length is exact, and the comparison should not - * stop at embedded NULs! - */ -static int /* 0 for equal, nonzero for unequal */ -cmp(const chr *x, const chr *y, /* strings to compare */ - size_t len) /* exact length of comparison */ -{ - return memcmp(VS(x), VS(y), len * sizeof(chr)); -} - -/* - * casecmp - case-independent chr-substring compare - * - * REG_ICASE backrefs need this. It should preferably be efficient. - * Note that it does not need to report anything except equal/unequal. - * Note also that the length is exact, and the comparison should not - * stop at embedded NULs! - */ -static int /* 0 for equal, nonzero for unequal */ -casecmp(const chr *x, const chr *y, /* strings to compare */ - size_t len) /* exact length of comparison */ -{ - for (; len > 0; len--, x++, y++) - { - if ((*x != *y) && (wx_tolower(*x) != wx_tolower(*y))) - return 1; - } - return 0; -} diff --git a/src/regex/regc_nfa.c b/src/regex/regc_nfa.c deleted file mode 100644 index cc9f6ea2f9..0000000000 --- a/src/regex/regc_nfa.c +++ /dev/null @@ -1,1559 +0,0 @@ -/* - * NFA utilities. - * This file is #included by regcomp.c. - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Header$ - * - * - * One or two things that technically ought to be in here - * are actually in color.c, thanks to some incestuous relationships in - * the color chains. - */ - -#define NISERR() VISERR(nfa->v) -#define NERR(e) VERR(nfa->v, (e)) - - -/* - * newnfa - set up an NFA - */ -static struct nfa * /* the NFA, or NULL */ -newnfa(struct vars * v, - struct colormap * cm, - struct nfa * parent) /* NULL if primary NFA */ -{ - struct nfa *nfa; - - nfa = (struct nfa *) MALLOC(sizeof(struct nfa)); - if (nfa == NULL) - return NULL; - - nfa->states = NULL; - nfa->slast = NULL; - nfa->free = NULL; - nfa->nstates = 0; - nfa->cm = cm; - nfa->v = v; - nfa->bos[0] = nfa->bos[1] = COLORLESS; - nfa->eos[0] = nfa->eos[1] = COLORLESS; - nfa->post = newfstate(nfa, '@'); /* number 0 */ - nfa->pre = newfstate(nfa, '>'); /* number 1 */ - nfa->parent = parent; - - nfa->init = newstate(nfa); /* may become invalid later */ - nfa->final = newstate(nfa); - if (ISERR()) - { - freenfa(nfa); - return NULL; - } - rainbow(nfa, nfa->cm, PLAIN, COLORLESS, nfa->pre, nfa->init); - newarc(nfa, '^', 1, nfa->pre, nfa->init); - newarc(nfa, '^', 0, nfa->pre, nfa->init); - rainbow(nfa, nfa->cm, PLAIN, COLORLESS, nfa->final, nfa->post); - newarc(nfa, '$', 1, nfa->final, nfa->post); - newarc(nfa, '$', 0, nfa->final, nfa->post); - - if (ISERR()) - { - freenfa(nfa); - return NULL; - } - return nfa; -} - -/* - * freenfa - free an entire NFA - */ -static void -freenfa(struct nfa * nfa) -{ - struct state *s; - - while ((s = nfa->states) != NULL) - { - s->nins = s->nouts = 0; /* don't worry about arcs */ - freestate(nfa, s); - } - while ((s = nfa->free) != NULL) - { - nfa->free = s->next; - destroystate(nfa, s); - } - - nfa->slast = NULL; - nfa->nstates = -1; - nfa->pre = NULL; - nfa->post = NULL; - FREE(nfa); -} - -/* - * newstate - allocate an NFA state, with zero flag value - */ -static struct state * /* NULL on error */ -newstate(struct nfa * nfa) -{ - struct state *s; - - if (nfa->free != NULL) - { - s = nfa->free; - nfa->free = s->next; - } - else - { - s = (struct state *) MALLOC(sizeof(struct state)); - if (s == NULL) - { - NERR(REG_ESPACE); - return NULL; - } - s->oas.next = NULL; - s->free = NULL; - s->noas = 0; - } - - assert(nfa->nstates >= 0); - s->no = nfa->nstates++; - s->flag = 0; - if (nfa->states == NULL) - nfa->states = s; - s->nins = 0; - s->ins = NULL; - s->nouts = 0; - s->outs = NULL; - s->tmp = NULL; - s->next = NULL; - if (nfa->slast != NULL) - { - assert(nfa->slast->next == NULL); - nfa->slast->next = s; - } - s->prev = nfa->slast; - nfa->slast = s; - return s; -} - -/* - * newfstate - allocate an NFA state with a specified flag value - */ -static struct state * /* NULL on error */ -newfstate(struct nfa * nfa, int flag) -{ - struct state *s; - - s = newstate(nfa); - if (s != NULL) - s->flag = (char) flag; - return s; -} - -/* - * dropstate - delete a state's inarcs and outarcs and free it - */ -static void -dropstate(struct nfa * nfa, - struct state * s) -{ - struct arc *a; - - while ((a = s->ins) != NULL) - freearc(nfa, a); - while ((a = s->outs) != NULL) - freearc(nfa, a); - freestate(nfa, s); -} - -/* - * freestate - free a state, which has no in-arcs or out-arcs - */ -static void -freestate(struct nfa * nfa, - struct state * s) -{ - assert(s != NULL); - assert(s->nins == 0 && s->nouts == 0); - - s->no = FREESTATE; - s->flag = 0; - if (s->next != NULL) - s->next->prev = s->prev; - else - { - assert(s == nfa->slast); - nfa->slast = s->prev; - } - if (s->prev != NULL) - s->prev->next = s->next; - else - { - assert(s == nfa->states); - nfa->states = s->next; - } - s->prev = NULL; - s->next = nfa->free; /* don't delete it, put it on the free - * list */ - nfa->free = s; -} - -/* - * destroystate - really get rid of an already-freed state - */ -static void -destroystate(struct nfa * nfa, - struct state * s) -{ - struct arcbatch *ab; - struct arcbatch *abnext; - - assert(s->no == FREESTATE); - for (ab = s->oas.next; ab != NULL; ab = abnext) - { - abnext = ab->next; - FREE(ab); - } - s->ins = NULL; - s->outs = NULL; - s->next = NULL; - FREE(s); -} - -/* - * newarc - set up a new arc within an NFA - */ -static void -newarc(struct nfa * nfa, - int t, - pcolor co, - struct state * from, - struct state * to) -{ - struct arc *a; - - assert(from != NULL && to != NULL); - - /* check for duplicates */ - for (a = from->outs; a != NULL; a = a->outchain) - if (a->to == to && a->co == co && a->type == t) - return; - - a = allocarc(nfa, from); - if (NISERR()) - return; - assert(a != NULL); - - a->type = t; - a->co = (color) co; - a->to = to; - a->from = from; - - /* - * Put the new arc on the beginning, not the end, of the chains. Not - * only is this easier, it has the very useful side effect that - * deleting the most-recently-added arc is the cheapest case rather - * than the most expensive one. - */ - a->inchain = to->ins; - to->ins = a; - a->outchain = from->outs; - from->outs = a; - - from->nouts++; - to->nins++; - - if (COLORED(a) && nfa->parent == NULL) - colorchain(nfa->cm, a); - - return; -} - -/* - * allocarc - allocate a new out-arc within a state - */ -static struct arc * /* NULL for failure */ -allocarc(struct nfa * nfa, - struct state * s) -{ - struct arc *a; - struct arcbatch *new; - int i; - - /* shortcut */ - if (s->free == NULL && s->noas < ABSIZE) - { - a = &s->oas.a[s->noas]; - s->noas++; - return a; - } - - /* if none at hand, get more */ - if (s->free == NULL) - { - new = (struct arcbatch *) MALLOC(sizeof(struct arcbatch)); - if (new == NULL) - { - NERR(REG_ESPACE); - return NULL; - } - new->next = s->oas.next; - s->oas.next = new; - - for (i = 0; i < ABSIZE; i++) - { - new->a[i].type = 0; - new->a[i].freechain = &new->a[i + 1]; - } - new->a[ABSIZE - 1].freechain = NULL; - s->free = &new->a[0]; - } - assert(s->free != NULL); - - a = s->free; - s->free = a->freechain; - return a; -} - -/* - * freearc - free an arc - */ -static void -freearc(struct nfa * nfa, - struct arc * victim) -{ - struct state *from = victim->from; - struct state *to = victim->to; - struct arc *a; - - assert(victim->type != 0); - - /* take it off color chain if necessary */ - if (COLORED(victim) && nfa->parent == NULL) - uncolorchain(nfa->cm, victim); - - /* take it off source's out-chain */ - assert(from != NULL); - assert(from->outs != NULL); - a = from->outs; - if (a == victim) /* simple case: first in chain */ - from->outs = victim->outchain; - else - { - for (; a != NULL && a->outchain != victim; a = a->outchain) - continue; - assert(a != NULL); - a->outchain = victim->outchain; - } - from->nouts--; - - /* take it off target's in-chain */ - assert(to != NULL); - assert(to->ins != NULL); - a = to->ins; - if (a == victim) /* simple case: first in chain */ - to->ins = victim->inchain; - else - { - for (; a != NULL && a->inchain != victim; a = a->inchain) - continue; - assert(a != NULL); - a->inchain = victim->inchain; - } - to->nins--; - - /* clean up and place on free list */ - victim->type = 0; - victim->from = NULL; /* precautions... */ - victim->to = NULL; - victim->inchain = NULL; - victim->outchain = NULL; - victim->freechain = from->free; - from->free = victim; -} - -/* - * findarc - find arc, if any, from given source with given type and color - * If there is more than one such arc, the result is random. - */ -static struct arc * -findarc(struct state * s, - int type, - pcolor co) -{ - struct arc *a; - - for (a = s->outs; a != NULL; a = a->outchain) - if (a->type == type && a->co == co) - return a; - return NULL; -} - -/* - * cparc - allocate a new arc within an NFA, copying details from old one - */ -static void -cparc(struct nfa * nfa, - struct arc * oa, - struct state * from, - struct state * to) -{ - newarc(nfa, oa->type, oa->co, from, to); -} - -/* - * moveins - move all in arcs of a state to another state - * - * You might think this could be done better by just updating the - * existing arcs, and you would be right if it weren't for the desire - * for duplicate suppression, which makes it easier to just make new - * ones to exploit the suppression built into newarc. - */ -static void -moveins(struct nfa * nfa, - struct state * old, - struct state * new) -{ - struct arc *a; - - assert(old != new); - - while ((a = old->ins) != NULL) - { - cparc(nfa, a, a->from, new); - freearc(nfa, a); - } - assert(old->nins == 0); - assert(old->ins == NULL); -} - -/* - * copyins - copy all in arcs of a state to another state - */ -static void -copyins(struct nfa * nfa, - struct state * old, - struct state * new) -{ - struct arc *a; - - assert(old != new); - - for (a = old->ins; a != NULL; a = a->inchain) - cparc(nfa, a, a->from, new); -} - -/* - * moveouts - move all out arcs of a state to another state - */ -static void -moveouts(struct nfa * nfa, - struct state * old, - struct state * new) -{ - struct arc *a; - - assert(old != new); - - while ((a = old->outs) != NULL) - { - cparc(nfa, a, new, a->to); - freearc(nfa, a); - } -} - -/* - * copyouts - copy all out arcs of a state to another state - */ -static void -copyouts(struct nfa * nfa, - struct state * old, - struct state * new) -{ - struct arc *a; - - assert(old != new); - - for (a = old->outs; a != NULL; a = a->outchain) - cparc(nfa, a, new, a->to); -} - -/* - * cloneouts - copy out arcs of a state to another state pair, modifying type - */ -static void -cloneouts(struct nfa * nfa, - struct state * old, - struct state * from, - struct state * to, - int type) -{ - struct arc *a; - - assert(old != from); - - for (a = old->outs; a != NULL; a = a->outchain) - newarc(nfa, type, a->co, from, to); -} - -/* - * delsub - delete a sub-NFA, updating subre pointers if necessary - * - * This uses a recursive traversal of the sub-NFA, marking already-seen - * states using their tmp pointer. - */ -static void -delsub(struct nfa * nfa, - struct state * lp, /* the sub-NFA goes from here... */ - struct state * rp) /* ...to here, *not* inclusive */ -{ - assert(lp != rp); - - rp->tmp = rp; /* mark end */ - - deltraverse(nfa, lp, lp); - assert(lp->nouts == 0 && rp->nins == 0); /* did the job */ - assert(lp->no != FREESTATE && rp->no != FREESTATE); /* no more */ - - rp->tmp = NULL; /* unmark end */ - lp->tmp = NULL; /* and begin, marked by deltraverse */ -} - -/* - * deltraverse - the recursive heart of delsub - * This routine's basic job is to destroy all out-arcs of the state. - */ -static void -deltraverse(struct nfa * nfa, - struct state * leftend, - struct state * s) -{ - struct arc *a; - struct state *to; - - if (s->nouts == 0) - return; /* nothing to do */ - if (s->tmp != NULL) - return; /* already in progress */ - - s->tmp = s; /* mark as in progress */ - - while ((a = s->outs) != NULL) - { - to = a->to; - deltraverse(nfa, leftend, to); - assert(to->nouts == 0 || to->tmp != NULL); - freearc(nfa, a); - if (to->nins == 0 && to->tmp == NULL) - { - assert(to->nouts == 0); - freestate(nfa, to); - } - } - - assert(s->no != FREESTATE); /* we're still here */ - assert(s == leftend || s->nins != 0); /* and still reachable */ - assert(s->nouts == 0); /* but have no outarcs */ - - s->tmp = NULL; /* we're done here */ -} - -/* - * dupnfa - duplicate sub-NFA - * - * Another recursive traversal, this time using tmp to point to duplicates - * as well as mark already-seen states. (You knew there was a reason why - * it's a state pointer, didn't you? :-)) - */ -static void -dupnfa(struct nfa * nfa, - struct state * start, /* duplicate of subNFA starting here */ - struct state * stop, /* and stopping here */ - struct state * from, /* stringing duplicate from here */ - struct state * to) /* to here */ -{ - if (start == stop) - { - newarc(nfa, EMPTY, 0, from, to); - return; - } - - stop->tmp = to; - duptraverse(nfa, start, from); - /* done, except for clearing out the tmp pointers */ - - stop->tmp = NULL; - cleartraverse(nfa, start); -} - -/* - * duptraverse - recursive heart of dupnfa - */ -static void -duptraverse(struct nfa * nfa, - struct state * s, - struct state * stmp) /* s's duplicate, or NULL */ -{ - struct arc *a; - - if (s->tmp != NULL) - return; /* already done */ - - s->tmp = (stmp == NULL) ? newstate(nfa) : stmp; - if (s->tmp == NULL) - { - assert(NISERR()); - return; - } - - for (a = s->outs; a != NULL && !NISERR(); a = a->outchain) - { - duptraverse(nfa, a->to, (struct state *) NULL); - assert(a->to->tmp != NULL); - cparc(nfa, a, s->tmp, a->to->tmp); - } -} - -/* - * cleartraverse - recursive cleanup for algorithms that leave tmp ptrs set - */ -static void -cleartraverse(struct nfa * nfa, - struct state * s) -{ - struct arc *a; - - if (s->tmp == NULL) - return; - s->tmp = NULL; - - for (a = s->outs; a != NULL; a = a->outchain) - cleartraverse(nfa, a->to); -} - -/* - * specialcolors - fill in special colors for an NFA - */ -static void -specialcolors(struct nfa * nfa) -{ - /* false colors for BOS, BOL, EOS, EOL */ - if (nfa->parent == NULL) - { - nfa->bos[0] = pseudocolor(nfa->cm); - nfa->bos[1] = pseudocolor(nfa->cm); - nfa->eos[0] = pseudocolor(nfa->cm); - nfa->eos[1] = pseudocolor(nfa->cm); - } - else - { - assert(nfa->parent->bos[0] != COLORLESS); - nfa->bos[0] = nfa->parent->bos[0]; - assert(nfa->parent->bos[1] != COLORLESS); - nfa->bos[1] = nfa->parent->bos[1]; - assert(nfa->parent->eos[0] != COLORLESS); - nfa->eos[0] = nfa->parent->eos[0]; - assert(nfa->parent->eos[1] != COLORLESS); - nfa->eos[1] = nfa->parent->eos[1]; - } -} - -/* - * optimize - optimize an NFA - */ -static long /* re_info bits */ -optimize(struct nfa * nfa, - FILE *f) /* for debug output; NULL none */ -{ -#ifdef REG_DEBUG - int verbose = (f != NULL) ? 1 : 0; - - if (verbose) - fprintf(f, "\ninitial cleanup:\n"); -#endif - cleanup(nfa); /* may simplify situation */ -#ifdef REG_DEBUG - if (verbose) - dumpnfa(nfa, f); - if (verbose) - fprintf(f, "\nempties:\n"); -#endif - fixempties(nfa, f); /* get rid of EMPTY arcs */ -#ifdef REG_DEBUG - if (verbose) - fprintf(f, "\nconstraints:\n"); -#endif - pullback(nfa, f); /* pull back constraints backward */ - pushfwd(nfa, f); /* push fwd constraints forward */ -#ifdef REG_DEBUG - if (verbose) - fprintf(f, "\nfinal cleanup:\n"); -#endif - cleanup(nfa); /* final tidying */ - return analyze(nfa); /* and analysis */ -} - -/* - * pullback - pull back constraints backward to (with luck) eliminate them - */ -static void -pullback(struct nfa * nfa, - FILE *f) /* for debug output; NULL none */ -{ - struct state *s; - struct state *nexts; - struct arc *a; - struct arc *nexta; - int progress; - - /* find and pull until there are no more */ - do - { - progress = 0; - for (s = nfa->states; s != NULL && !NISERR(); s = nexts) - { - nexts = s->next; - for (a = s->outs; a != NULL && !NISERR(); a = nexta) - { - nexta = a->outchain; - if (a->type == '^' || a->type == BEHIND) - if (pull(nfa, a)) - progress = 1; - assert(nexta == NULL || s->no != FREESTATE); - } - } - if (progress && f != NULL) - dumpnfa(nfa, f); - } while (progress && !NISERR()); - if (NISERR()) - return; - - for (a = nfa->pre->outs; a != NULL; a = nexta) - { - nexta = a->outchain; - if (a->type == '^') - { - assert(a->co == 0 || a->co == 1); - newarc(nfa, PLAIN, nfa->bos[a->co], a->from, a->to); - freearc(nfa, a); - } - } -} - -/* - * pull - pull a back constraint backward past its source state - * A significant property of this function is that it deletes at most - * one state -- the constraint's from state -- and only if the constraint - * was that state's last outarc. - */ -static int /* 0 couldn't, 1 could */ -pull(struct nfa * nfa, - struct arc * con) -{ - struct state *from = con->from; - struct state *to = con->to; - struct arc *a; - struct arc *nexta; - struct state *s; - - if (from == to) - { /* circular constraint is pointless */ - freearc(nfa, con); - return 1; - } - if (from->flag) /* can't pull back beyond start */ - return 0; - if (from->nins == 0) - { /* unreachable */ - freearc(nfa, con); - return 1; - } - - /* first, clone from state if necessary to avoid other outarcs */ - if (from->nouts > 1) - { - s = newstate(nfa); - if (NISERR()) - return 0; - assert(to != from); /* con is not an inarc */ - copyins(nfa, from, s); /* duplicate inarcs */ - cparc(nfa, con, s, to); /* move constraint arc */ - freearc(nfa, con); - from = s; - con = from->outs; - } - assert(from->nouts == 1); - - /* propagate the constraint into the from state's inarcs */ - for (a = from->ins; a != NULL; a = nexta) - { - nexta = a->inchain; - switch (combine(con, a)) - { - case INCOMPATIBLE: /* destroy the arc */ - freearc(nfa, a); - break; - case SATISFIED: /* no action needed */ - break; - case COMPATIBLE: /* swap the two arcs, more or less */ - s = newstate(nfa); - if (NISERR()) - return 0; - cparc(nfa, a, s, to); /* anticipate move */ - cparc(nfa, con, a->from, s); - if (NISERR()) - return 0; - freearc(nfa, a); - break; - default: - assert(NOTREACHED); - break; - } - } - - /* remaining inarcs, if any, incorporate the constraint */ - moveins(nfa, from, to); - dropstate(nfa, from); /* will free the constraint */ - return 1; -} - -/* - * pushfwd - push forward constraints forward to (with luck) eliminate them - */ -static void -pushfwd(struct nfa * nfa, - FILE *f) /* for debug output; NULL none */ -{ - struct state *s; - struct state *nexts; - struct arc *a; - struct arc *nexta; - int progress; - - /* find and push until there are no more */ - do - { - progress = 0; - for (s = nfa->states; s != NULL && !NISERR(); s = nexts) - { - nexts = s->next; - for (a = s->ins; a != NULL && !NISERR(); a = nexta) - { - nexta = a->inchain; - if (a->type == '$' || a->type == AHEAD) - if (push(nfa, a)) - progress = 1; - assert(nexta == NULL || s->no != FREESTATE); - } - } - if (progress && f != NULL) - dumpnfa(nfa, f); - } while (progress && !NISERR()); - if (NISERR()) - return; - - for (a = nfa->post->ins; a != NULL; a = nexta) - { - nexta = a->inchain; - if (a->type == '$') - { - assert(a->co == 0 || a->co == 1); - newarc(nfa, PLAIN, nfa->eos[a->co], a->from, a->to); - freearc(nfa, a); - } - } -} - -/* - * push - push a forward constraint forward past its destination state - * A significant property of this function is that it deletes at most - * one state -- the constraint's to state -- and only if the constraint - * was that state's last inarc. - */ -static int /* 0 couldn't, 1 could */ -push(struct nfa * nfa, - struct arc * con) -{ - struct state *from = con->from; - struct state *to = con->to; - struct arc *a; - struct arc *nexta; - struct state *s; - - if (to == from) - { /* circular constraint is pointless */ - freearc(nfa, con); - return 1; - } - if (to->flag) /* can't push forward beyond end */ - return 0; - if (to->nouts == 0) - { /* dead end */ - freearc(nfa, con); - return 1; - } - - /* first, clone to state if necessary to avoid other inarcs */ - if (to->nins > 1) - { - s = newstate(nfa); - if (NISERR()) - return 0; - copyouts(nfa, to, s); /* duplicate outarcs */ - cparc(nfa, con, from, s); /* move constraint */ - freearc(nfa, con); - to = s; - con = to->ins; - } - assert(to->nins == 1); - - /* propagate the constraint into the to state's outarcs */ - for (a = to->outs; a != NULL; a = nexta) - { - nexta = a->outchain; - switch (combine(con, a)) - { - case INCOMPATIBLE: /* destroy the arc */ - freearc(nfa, a); - break; - case SATISFIED: /* no action needed */ - break; - case COMPATIBLE: /* swap the two arcs, more or less */ - s = newstate(nfa); - if (NISERR()) - return 0; - cparc(nfa, con, s, a->to); /* anticipate move */ - cparc(nfa, a, from, s); - if (NISERR()) - return 0; - freearc(nfa, a); - break; - default: - assert(NOTREACHED); - break; - } - } - - /* remaining outarcs, if any, incorporate the constraint */ - moveouts(nfa, to, from); - dropstate(nfa, to); /* will free the constraint */ - return 1; -} - -/* - * combine - constraint lands on an arc, what happens? - * - * #def INCOMPATIBLE 1 // destroys arc - * #def SATISFIED 2 // constraint satisfied - * #def COMPATIBLE 3 // compatible but not satisfied yet - */ -static int -combine(struct arc * con, - struct arc * a) -{ -#define CA(ct,at) (((ct)<type, a->type)) - { - case CA('^', PLAIN): /* newlines are handled separately */ - case CA('$', PLAIN): - return INCOMPATIBLE; - break; - case CA(AHEAD, PLAIN): /* color constraints meet colors */ - case CA(BEHIND, PLAIN): - if (con->co == a->co) - return SATISFIED; - return INCOMPATIBLE; - break; - case CA('^', '^'): /* collision, similar constraints */ - case CA('$', '$'): - case CA(AHEAD, AHEAD): - case CA(BEHIND, BEHIND): - if (con->co == a->co) /* true duplication */ - return SATISFIED; - return INCOMPATIBLE; - break; - case CA('^', BEHIND): /* collision, dissimilar constraints */ - case CA(BEHIND, '^'): - case CA('$', AHEAD): - case CA(AHEAD, '$'): - return INCOMPATIBLE; - break; - case CA('^', '$'): /* constraints passing each other */ - case CA('^', AHEAD): - case CA(BEHIND, '$'): - case CA(BEHIND, AHEAD): - case CA('$', '^'): - case CA('$', BEHIND): - case CA(AHEAD, '^'): - case CA(AHEAD, BEHIND): - case CA('^', LACON): - case CA(BEHIND, LACON): - case CA('$', LACON): - case CA(AHEAD, LACON): - return COMPATIBLE; - break; - } - assert(NOTREACHED); - return INCOMPATIBLE; /* for benefit of blind compilers */ -} - -/* - * fixempties - get rid of EMPTY arcs - */ -static void -fixempties(struct nfa * nfa, - FILE *f) /* for debug output; NULL none */ -{ - struct state *s; - struct state *nexts; - struct arc *a; - struct arc *nexta; - int progress; - - /* find and eliminate empties until there are no more */ - do - { - progress = 0; - for (s = nfa->states; s != NULL && !NISERR(); s = nexts) - { - nexts = s->next; - for (a = s->outs; a != NULL && !NISERR(); a = nexta) - { - nexta = a->outchain; - if (a->type == EMPTY && unempty(nfa, a)) - progress = 1; - assert(nexta == NULL || s->no != FREESTATE); - } - } - if (progress && f != NULL) - dumpnfa(nfa, f); - } while (progress && !NISERR()); -} - -/* - * unempty - optimize out an EMPTY arc, if possible - * - * Actually, as it stands this function always succeeds, but the return - * value is kept with an eye on possible future changes. - */ -static int /* 0 couldn't, 1 could */ -unempty(struct nfa * nfa, - struct arc * a) -{ - struct state *from = a->from; - struct state *to = a->to; - int usefrom; /* work on from, as opposed to to? */ - - assert(a->type == EMPTY); - assert(from != nfa->pre && to != nfa->post); - - if (from == to) - { /* vacuous loop */ - freearc(nfa, a); - return 1; - } - - /* decide which end to work on */ - usefrom = 1; /* default: attack from */ - if (from->nouts > to->nins) - usefrom = 0; - else if (from->nouts == to->nins) - { - /* decide on secondary issue: move/copy fewest arcs */ - if (from->nins > to->nouts) - usefrom = 0; - } - - freearc(nfa, a); - if (usefrom) - { - if (from->nouts == 0) - { - /* was the state's only outarc */ - moveins(nfa, from, to); - freestate(nfa, from); - } - else - copyins(nfa, from, to); - } - else - { - if (to->nins == 0) - { - /* was the state's only inarc */ - moveouts(nfa, to, from); - freestate(nfa, to); - } - else - copyouts(nfa, to, from); - } - - return 1; -} - -/* - * cleanup - clean up NFA after optimizations - */ -static void -cleanup(struct nfa * nfa) -{ - struct state *s; - struct state *nexts; - int n; - - /* clear out unreachable or dead-end states */ - /* use pre to mark reachable, then post to mark can-reach-post */ - markreachable(nfa, nfa->pre, (struct state *) NULL, nfa->pre); - markcanreach(nfa, nfa->post, nfa->pre, nfa->post); - for (s = nfa->states; s != NULL; s = nexts) - { - nexts = s->next; - if (s->tmp != nfa->post && !s->flag) - dropstate(nfa, s); - } - assert(nfa->post->nins == 0 || nfa->post->tmp == nfa->post); - cleartraverse(nfa, nfa->pre); - assert(nfa->post->nins == 0 || nfa->post->tmp == NULL); - /* the nins==0 (final unreachable) case will be caught later */ - - /* renumber surviving states */ - n = 0; - for (s = nfa->states; s != NULL; s = s->next) - s->no = n++; - nfa->nstates = n; -} - -/* - * markreachable - recursive marking of reachable states - */ -static void -markreachable(struct nfa * nfa, - struct state * s, - struct state * okay, /* consider only states with this - * mark */ - struct state * mark) /* the value to mark with */ -{ - struct arc *a; - - if (s->tmp != okay) - return; - s->tmp = mark; - - for (a = s->outs; a != NULL; a = a->outchain) - markreachable(nfa, a->to, okay, mark); -} - -/* - * markcanreach - recursive marking of states which can reach here - */ -static void -markcanreach(struct nfa * nfa, - struct state * s, - struct state * okay, /* consider only states with this - * mark */ - struct state * mark) /* the value to mark with */ -{ - struct arc *a; - - if (s->tmp != okay) - return; - s->tmp = mark; - - for (a = s->ins; a != NULL; a = a->inchain) - markcanreach(nfa, a->from, okay, mark); -} - -/* - * analyze - ascertain potentially-useful facts about an optimized NFA - */ -static long /* re_info bits to be ORed in */ -analyze(struct nfa * nfa) -{ - struct arc *a; - struct arc *aa; - - if (nfa->pre->outs == NULL) - return REG_UIMPOSSIBLE; - for (a = nfa->pre->outs; a != NULL; a = a->outchain) - for (aa = a->to->outs; aa != NULL; aa = aa->outchain) - if (aa->to == nfa->post) - return REG_UEMPTYMATCH; - return 0; -} - -/* - * compact - compact an NFA - */ -static void -compact(struct nfa * nfa, - struct cnfa * cnfa) -{ - struct state *s; - struct arc *a; - size_t nstates; - size_t narcs; - struct carc *ca; - struct carc *first; - - assert(!NISERR()); - - nstates = 0; - narcs = 0; - for (s = nfa->states; s != NULL; s = s->next) - { - nstates++; - narcs += 1 + s->nouts + 1; - /* 1 as a fake for flags, nouts for arcs, 1 as endmarker */ - } - - cnfa->states = (struct carc **) MALLOC(nstates * sizeof(struct carc *)); - cnfa->arcs = (struct carc *) MALLOC(narcs * sizeof(struct carc)); - if (cnfa->states == NULL || cnfa->arcs == NULL) - { - if (cnfa->states != NULL) - FREE(cnfa->states); - if (cnfa->arcs != NULL) - FREE(cnfa->arcs); - NERR(REG_ESPACE); - return; - } - cnfa->nstates = nstates; - cnfa->pre = nfa->pre->no; - cnfa->post = nfa->post->no; - cnfa->bos[0] = nfa->bos[0]; - cnfa->bos[1] = nfa->bos[1]; - cnfa->eos[0] = nfa->eos[0]; - cnfa->eos[1] = nfa->eos[1]; - cnfa->ncolors = maxcolor(nfa->cm) + 1; - cnfa->flags = 0; - - ca = cnfa->arcs; - for (s = nfa->states; s != NULL; s = s->next) - { - assert((size_t) s->no < nstates); - cnfa->states[s->no] = ca; - ca->co = 0; /* clear and skip flags "arc" */ - ca++; - first = ca; - for (a = s->outs; a != NULL; a = a->outchain) - switch (a->type) - { - case PLAIN: - ca->co = a->co; - ca->to = a->to->no; - ca++; - break; - case LACON: - assert(s->no != cnfa->pre); - ca->co = (color) (cnfa->ncolors + a->co); - ca->to = a->to->no; - ca++; - cnfa->flags |= HASLACONS; - break; - default: - assert(NOTREACHED); - break; - } - carcsort(first, ca - 1); - ca->co = COLORLESS; - ca->to = 0; - ca++; - } - assert(ca == &cnfa->arcs[narcs]); - assert(cnfa->nstates != 0); - - /* mark no-progress states */ - for (a = nfa->pre->outs; a != NULL; a = a->outchain) - cnfa->states[a->to->no]->co = 1; - cnfa->states[nfa->pre->no]->co = 1; -} - -/* - * carcsort - sort compacted-NFA arcs by color - * - * Really dumb algorithm, but if the list is long enough for that to matter, - * you're in real trouble anyway. - */ -static void -carcsort(struct carc * first, - struct carc * last) -{ - struct carc *p; - struct carc *q; - struct carc tmp; - - if (last - first <= 1) - return; - - for (p = first; p <= last; p++) - for (q = p; q <= last; q++) - if (p->co > q->co || - (p->co == q->co && p->to > q->to)) - { - assert(p != q); - tmp = *p; - *p = *q; - *q = tmp; - } -} - -/* - * freecnfa - free a compacted NFA - */ -static void -freecnfa(struct cnfa * cnfa) -{ - assert(cnfa->nstates != 0); /* not empty already */ - cnfa->nstates = 0; - FREE(cnfa->states); - FREE(cnfa->arcs); -} - -/* - * dumpnfa - dump an NFA in human-readable form - */ -static void -dumpnfa(struct nfa * nfa, - FILE *f) -{ -#ifdef REG_DEBUG - struct state *s; - - fprintf(f, "pre %d, post %d", nfa->pre->no, nfa->post->no); - if (nfa->bos[0] != COLORLESS) - fprintf(f, ", bos [%ld]", (long) nfa->bos[0]); - if (nfa->bos[1] != COLORLESS) - fprintf(f, ", bol [%ld]", (long) nfa->bos[1]); - if (nfa->eos[0] != COLORLESS) - fprintf(f, ", eos [%ld]", (long) nfa->eos[0]); - if (nfa->eos[1] != COLORLESS) - fprintf(f, ", eol [%ld]", (long) nfa->eos[1]); - fprintf(f, "\n"); - for (s = nfa->states; s != NULL; s = s->next) - dumpstate(s, f); - if (nfa->parent == NULL) - dumpcolors(nfa->cm, f); - fflush(f); -#endif -} - -#ifdef REG_DEBUG /* subordinates of dumpnfa */ - -/* - * dumpstate - dump an NFA state in human-readable form - */ -static void -dumpstate(struct state * s, - FILE *f) -{ - struct arc *a; - - fprintf(f, "%d%s%c", s->no, (s->tmp != NULL) ? "T" : "", - (s->flag) ? s->flag : '.'); - if (s->prev != NULL && s->prev->next != s) - fprintf(f, "\tstate chain bad\n"); - if (s->nouts == 0) - fprintf(f, "\tno out arcs\n"); - else - dumparcs(s, f); - fflush(f); - for (a = s->ins; a != NULL; a = a->inchain) - { - if (a->to != s) - fprintf(f, "\tlink from %d to %d on %d's in-chain\n", - a->from->no, a->to->no, s->no); - } -} - -/* - * dumparcs - dump out-arcs in human-readable form - */ -static void -dumparcs(struct state * s, - FILE *f) -{ - int pos; - - assert(s->nouts > 0); - /* printing arcs in reverse order is usually clearer */ - pos = dumprarcs(s->outs, s, f, 1); - if (pos != 1) - fprintf(f, "\n"); -} - -/* - * dumprarcs - dump remaining outarcs, recursively, in reverse order - */ -static int /* resulting print position */ -dumprarcs(struct arc * a, - struct state * s, - FILE *f, - int pos) /* initial print position */ -{ - if (a->outchain != NULL) - pos = dumprarcs(a->outchain, s, f, pos); - dumparc(a, s, f); - if (pos == 5) - { - fprintf(f, "\n"); - pos = 1; - } - else - pos++; - return pos; -} - -/* - * dumparc - dump one outarc in readable form, including prefixing tab - */ -static void -dumparc(struct arc * a, - struct state * s, - FILE *f) -{ - struct arc *aa; - struct arcbatch *ab; - - fprintf(f, "\t"); - switch (a->type) - { - case PLAIN: - fprintf(f, "[%ld]", (long) a->co); - break; - case AHEAD: - fprintf(f, ">%ld>", (long) a->co); - break; - case BEHIND: - fprintf(f, "<%ld<", (long) a->co); - break; - case LACON: - fprintf(f, ":%ld:", (long) a->co); - break; - case '^': - case '$': - fprintf(f, "%c%d", a->type, (int) a->co); - break; - case EMPTY: - break; - default: - fprintf(f, "0x%x/0%lo", a->type, (long) a->co); - break; - } - if (a->from != s) - fprintf(f, "?%d?", a->from->no); - for (ab = &a->from->oas; ab != NULL; ab = ab->next) - { - for (aa = &ab->a[0]; aa < &ab->a[ABSIZE]; aa++) - if (aa == a) - break; /* NOTE BREAK OUT */ - if (aa < &ab->a[ABSIZE]) /* propagate break */ - break; /* NOTE BREAK OUT */ - } - if (ab == NULL) - fprintf(f, "?!?"); /* not in allocated space */ - fprintf(f, "->"); - if (a->to == NULL) - { - fprintf(f, "NULL"); - return; - } - fprintf(f, "%d", a->to->no); - for (aa = a->to->ins; aa != NULL; aa = aa->inchain) - if (aa == a) - break; /* NOTE BREAK OUT */ - if (aa == NULL) - fprintf(f, "?!?"); /* missing from in-chain */ -} -#endif /* REG_DEBUG */ - -/* - * dumpcnfa - dump a compacted NFA in human-readable form - */ -#ifdef REG_DEBUG -static void -dumpcnfa(struct cnfa * cnfa, - FILE *f) -{ - int st; - - fprintf(f, "pre %d, post %d", cnfa->pre, cnfa->post); - if (cnfa->bos[0] != COLORLESS) - fprintf(f, ", bos [%ld]", (long) cnfa->bos[0]); - if (cnfa->bos[1] != COLORLESS) - fprintf(f, ", bol [%ld]", (long) cnfa->bos[1]); - if (cnfa->eos[0] != COLORLESS) - fprintf(f, ", eos [%ld]", (long) cnfa->eos[0]); - if (cnfa->eos[1] != COLORLESS) - fprintf(f, ", eol [%ld]", (long) cnfa->eos[1]); - if (cnfa->flags & HASLACONS) - fprintf(f, ", haslacons"); - fprintf(f, "\n"); - for (st = 0; st < cnfa->nstates; st++) - dumpcstate(st, cnfa->states[st], cnfa, f); - fflush(f); -} -#endif - -#ifdef REG_DEBUG /* subordinates of dumpcnfa */ - -/* - * dumpcstate - dump a compacted-NFA state in human-readable form - */ -static void -dumpcstate(int st, - struct carc * ca, - struct cnfa * cnfa, - FILE *f) -{ - int i; - int pos; - - fprintf(f, "%d%s", st, (ca[0].co) ? ":" : "."); - pos = 1; - for (i = 1; ca[i].co != COLORLESS; i++) - { - if (ca[i].co < cnfa->ncolors) - fprintf(f, "\t[%ld]->%d", (long) ca[i].co, ca[i].to); - else - fprintf(f, "\t:%ld:->%d", (long) ca[i].co - cnfa->ncolors, - ca[i].to); - if (pos == 5) - { - fprintf(f, "\n"); - pos = 1; - } - else - pos++; - } - if (i == 1 || pos != 1) - fprintf(f, "\n"); - fflush(f); -} - -#endif /* REG_DEBUG */ diff --git a/src/regex/rege_dfa.c b/src/regex/rege_dfa.c deleted file mode 100644 index 5347b90d73..0000000000 --- a/src/regex/rege_dfa.c +++ /dev/null @@ -1,699 +0,0 @@ -/* - * DFA routines - * This file is #included by regexec.c. - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Header$ - * - */ - -/* - * longest - longest-preferred matching engine - */ -static chr * /* endpoint, or NULL */ -longest(struct vars * v, /* used only for debug and exec flags */ - struct dfa * d, - chr *start, /* where the match should start */ - chr *stop, /* match must end at or before here */ - int *hitstopp) /* record whether hit v->stop, if non-NULL */ -{ - chr *cp; - chr *realstop = (stop == v->stop) ? stop : stop + 1; - color co; - struct sset *css; - struct sset *ss; - chr *post; - int i; - struct colormap *cm = d->cm; - - /* initialize */ - css = initialize(v, d, start); - cp = start; - if (hitstopp != NULL) - *hitstopp = 0; - - /* startup */ - FDEBUG(("+++ startup +++\n")); - if (cp == v->start) - { - co = d->cnfa->bos[(v->eflags & REG_NOTBOL) ? 0 : 1]; - FDEBUG(("color %ld\n", (long) co)); - } - else - { - co = GETCOLOR(cm, *(cp - 1)); - FDEBUG(("char %c, color %ld\n", (char) *(cp - 1), (long) co)); - } - css = miss(v, d, css, co, cp, start); - if (css == NULL) - return NULL; - css->lastseen = cp; - - /* main loop */ - if (v->eflags & REG_FTRACE) - while (cp < realstop) - { - FDEBUG(("+++ at c%d +++\n", css - d->ssets)); - co = GETCOLOR(cm, *cp); - FDEBUG(("char %c, color %ld\n", (char) *cp, (long) co)); - ss = css->outs[co]; - if (ss == NULL) - { - ss = miss(v, d, css, co, cp + 1, start); - if (ss == NULL) - break; /* NOTE BREAK OUT */ - } - cp++; - ss->lastseen = cp; - css = ss; - } - else - while (cp < realstop) - { - co = GETCOLOR(cm, *cp); - ss = css->outs[co]; - if (ss == NULL) - { - ss = miss(v, d, css, co, cp + 1, start); - if (ss == NULL) - break; /* NOTE BREAK OUT */ - } - cp++; - ss->lastseen = cp; - css = ss; - } - - /* shutdown */ - FDEBUG(("+++ shutdown at c%d +++\n", css - d->ssets)); - if (cp == v->stop && stop == v->stop) - { - if (hitstopp != NULL) - *hitstopp = 1; - co = d->cnfa->eos[(v->eflags & REG_NOTEOL) ? 0 : 1]; - FDEBUG(("color %ld\n", (long) co)); - ss = miss(v, d, css, co, cp, start); - /* special case: match ended at eol? */ - if (ss != NULL && (ss->flags & POSTSTATE)) - return cp; - else if (ss != NULL) - ss->lastseen = cp; /* to be tidy */ - } - - /* find last match, if any */ - post = d->lastpost; - for (ss = d->ssets, i = d->nssused; i > 0; ss++, i--) - if ((ss->flags & POSTSTATE) && post != ss->lastseen && - (post == NULL || post < ss->lastseen)) - post = ss->lastseen; - if (post != NULL) /* found one */ - return post - 1; - - return NULL; -} - -/* - * shortest - shortest-preferred matching engine - */ -static chr * /* endpoint, or NULL */ -shortest(struct vars * v, - struct dfa * d, - chr *start, /* where the match should start */ - chr *min, /* match must end at or after here */ - chr *max, /* match must end at or before here */ - chr **coldp, /* store coldstart pointer here, if - * nonNULL */ - int *hitstopp) /* record whether hit v->stop, if non-NULL */ -{ - chr *cp; - chr *realmin = (min == v->stop) ? min : min + 1; - chr *realmax = (max == v->stop) ? max : max + 1; - color co; - struct sset *css; - struct sset *ss; - struct colormap *cm = d->cm; - - /* initialize */ - css = initialize(v, d, start); - cp = start; - if (hitstopp != NULL) - *hitstopp = 0; - - /* startup */ - FDEBUG(("--- startup ---\n")); - if (cp == v->start) - { - co = d->cnfa->bos[(v->eflags & REG_NOTBOL) ? 0 : 1]; - FDEBUG(("color %ld\n", (long) co)); - } - else - { - co = GETCOLOR(cm, *(cp - 1)); - FDEBUG(("char %c, color %ld\n", (char) *(cp - 1), (long) co)); - } - css = miss(v, d, css, co, cp, start); - if (css == NULL) - return NULL; - css->lastseen = cp; - ss = css; - - /* main loop */ - if (v->eflags & REG_FTRACE) - while (cp < realmax) - { - FDEBUG(("--- at c%d ---\n", css - d->ssets)); - co = GETCOLOR(cm, *cp); - FDEBUG(("char %c, color %ld\n", (char) *cp, (long) co)); - ss = css->outs[co]; - if (ss == NULL) - { - ss = miss(v, d, css, co, cp + 1, start); - if (ss == NULL) - break; /* NOTE BREAK OUT */ - } - cp++; - ss->lastseen = cp; - css = ss; - if ((ss->flags & POSTSTATE) && cp >= realmin) - break; /* NOTE BREAK OUT */ - } - else - while (cp < realmax) - { - co = GETCOLOR(cm, *cp); - ss = css->outs[co]; - if (ss == NULL) - { - ss = miss(v, d, css, co, cp + 1, start); - if (ss == NULL) - break; /* NOTE BREAK OUT */ - } - cp++; - ss->lastseen = cp; - css = ss; - if ((ss->flags & POSTSTATE) && cp >= realmin) - break; /* NOTE BREAK OUT */ - } - - if (ss == NULL) - return NULL; - - if (coldp != NULL) /* report last no-progress state set, if - * any */ - *coldp = lastcold(v, d); - - if ((ss->flags & POSTSTATE) && cp > min) - { - assert(cp >= realmin); - cp--; - } - else if (cp == v->stop && max == v->stop) - { - co = d->cnfa->eos[(v->eflags & REG_NOTEOL) ? 0 : 1]; - FDEBUG(("color %ld\n", (long) co)); - ss = miss(v, d, css, co, cp, start); - /* match might have ended at eol */ - if ((ss == NULL || !(ss->flags & POSTSTATE)) && hitstopp != NULL) - *hitstopp = 1; - } - - if (ss == NULL || !(ss->flags & POSTSTATE)) - return NULL; - - return cp; -} - -/* - * lastcold - determine last point at which no progress had been made - */ -static chr * /* endpoint, or NULL */ -lastcold(struct vars * v, - struct dfa * d) -{ - struct sset *ss; - chr *nopr; - int i; - - nopr = d->lastnopr; - if (nopr == NULL) - nopr = v->start; - for (ss = d->ssets, i = d->nssused; i > 0; ss++, i--) - if ((ss->flags & NOPROGRESS) && nopr < ss->lastseen) - nopr = ss->lastseen; - return nopr; -} - -/* - * newdfa - set up a fresh DFA - */ -static struct dfa * -newdfa(struct vars * v, - struct cnfa * cnfa, - struct colormap * cm, - struct smalldfa * small) /* preallocated space, may be NULL */ -{ - struct dfa *d; - size_t nss = cnfa->nstates * 2; - int wordsper = (cnfa->nstates + UBITS - 1) / UBITS; - struct smalldfa *smallwas = small; - - assert(cnfa != NULL && cnfa->nstates != 0); - - if (nss <= FEWSTATES && cnfa->ncolors <= FEWCOLORS) - { - assert(wordsper == 1); - if (small == NULL) - { - small = (struct smalldfa *) MALLOC( - sizeof(struct smalldfa)); - if (small == NULL) - { - ERR(REG_ESPACE); - return NULL; - } - } - d = &small->dfa; - d->ssets = small->ssets; - d->statesarea = small->statesarea; - d->work = &d->statesarea[nss]; - d->outsarea = small->outsarea; - d->incarea = small->incarea; - d->cptsmalloced = 0; - d->mallocarea = (smallwas == NULL) ? (char *) small : NULL; - } - else - { - d = (struct dfa *) MALLOC(sizeof(struct dfa)); - if (d == NULL) - { - ERR(REG_ESPACE); - return NULL; - } - d->ssets = (struct sset *) MALLOC(nss * sizeof(struct sset)); - d->statesarea = (unsigned *) MALLOC((nss + WORK) * wordsper * - sizeof(unsigned)); - d->work = &d->statesarea[nss * wordsper]; - d->outsarea = (struct sset **) MALLOC(nss * cnfa->ncolors * - sizeof(struct sset *)); - d->incarea = (struct arcp *) MALLOC(nss * cnfa->ncolors * - sizeof(struct arcp)); - d->cptsmalloced = 1; - d->mallocarea = (char *) d; - if (d->ssets == NULL || d->statesarea == NULL || - d->outsarea == NULL || d->incarea == NULL) - { - freedfa(d); - ERR(REG_ESPACE); - return NULL; - } - } - - d->nssets = (v->eflags & REG_SMALL) ? 7 : nss; - d->nssused = 0; - d->nstates = cnfa->nstates; - d->ncolors = cnfa->ncolors; - d->wordsper = wordsper; - d->cnfa = cnfa; - d->cm = cm; - d->lastpost = NULL; - d->lastnopr = NULL; - d->search = d->ssets; - - /* initialization of sset fields is done as needed */ - - return d; -} - -/* - * freedfa - free a DFA - */ -static void -freedfa(struct dfa * d) -{ - if (d->cptsmalloced) - { - if (d->ssets != NULL) - FREE(d->ssets); - if (d->statesarea != NULL) - FREE(d->statesarea); - if (d->outsarea != NULL) - FREE(d->outsarea); - if (d->incarea != NULL) - FREE(d->incarea); - } - - if (d->mallocarea != NULL) - FREE(d->mallocarea); -} - -/* - * hash - construct a hash code for a bitvector - * - * There are probably better ways, but they're more expensive. - */ -static unsigned -hash(unsigned *uv, - int n) -{ - int i; - unsigned h; - - h = 0; - for (i = 0; i < n; i++) - h ^= uv[i]; - return h; -} - -/* - * initialize - hand-craft a cache entry for startup, otherwise get ready - */ -static struct sset * -initialize(struct vars * v, /* used only for debug flags */ - struct dfa * d, - chr *start) -{ - struct sset *ss; - int i; - - /* is previous one still there? */ - if (d->nssused > 0 && (d->ssets[0].flags & STARTER)) - ss = &d->ssets[0]; - else - { /* no, must (re)build it */ - ss = getvacant(v, d, start, start); - for (i = 0; i < d->wordsper; i++) - ss->states[i] = 0; - BSET(ss->states, d->cnfa->pre); - ss->hash = HASH(ss->states, d->wordsper); - assert(d->cnfa->pre != d->cnfa->post); - ss->flags = STARTER | LOCKED | NOPROGRESS; - /* lastseen dealt with below */ - } - - for (i = 0; i < d->nssused; i++) - d->ssets[i].lastseen = NULL; - ss->lastseen = start; /* maybe untrue, but harmless */ - d->lastpost = NULL; - d->lastnopr = NULL; - return ss; -} - -/* - * miss - handle a cache miss - */ -static struct sset * /* NULL if goes to empty set */ -miss(struct vars * v, /* used only for debug flags */ - struct dfa * d, - struct sset * css, - pcolor co, - chr *cp, /* next chr */ - chr *start) /* where the attempt got started */ -{ - struct cnfa *cnfa = d->cnfa; - int i; - unsigned h; - struct carc *ca; - struct sset *p; - int ispost; - int noprogress; - int gotstate; - int dolacons; - int sawlacons; - - /* for convenience, we can be called even if it might not be a miss */ - if (css->outs[co] != NULL) - { - FDEBUG(("hit\n")); - return css->outs[co]; - } - FDEBUG(("miss\n")); - - /* first, what set of states would we end up in? */ - for (i = 0; i < d->wordsper; i++) - d->work[i] = 0; - ispost = 0; - noprogress = 1; - gotstate = 0; - for (i = 0; i < d->nstates; i++) - if (ISBSET(css->states, i)) - for (ca = cnfa->states[i] + 1; ca->co != COLORLESS; ca++) - if (ca->co == co) - { - BSET(d->work, ca->to); - gotstate = 1; - if (ca->to == cnfa->post) - ispost = 1; - if (!cnfa->states[ca->to]->co) - noprogress = 0; - FDEBUG(("%d -> %d\n", i, ca->to)); - } - dolacons = (gotstate) ? (cnfa->flags & HASLACONS) : 0; - sawlacons = 0; - while (dolacons) - { /* transitive closure */ - dolacons = 0; - for (i = 0; i < d->nstates; i++) - if (ISBSET(d->work, i)) - for (ca = cnfa->states[i] + 1; ca->co != COLORLESS; - ca++) - { - if (ca->co <= cnfa->ncolors) - continue; /* NOTE CONTINUE */ - sawlacons = 1; - if (ISBSET(d->work, ca->to)) - continue; /* NOTE CONTINUE */ - if (!lacon(v, cnfa, cp, ca->co)) - continue; /* NOTE CONTINUE */ - BSET(d->work, ca->to); - dolacons = 1; - if (ca->to == cnfa->post) - ispost = 1; - if (!cnfa->states[ca->to]->co) - noprogress = 0; - FDEBUG(("%d :> %d\n", i, ca->to)); - } - } - if (!gotstate) - return NULL; - h = HASH(d->work, d->wordsper); - - /* next, is that in the cache? */ - for (p = d->ssets, i = d->nssused; i > 0; p++, i--) - if (HIT(h, d->work, p, d->wordsper)) - { - FDEBUG(("cached c%d\n", p - d->ssets)); - break; /* NOTE BREAK OUT */ - } - if (i == 0) - { /* nope, need a new cache entry */ - p = getvacant(v, d, cp, start); - assert(p != css); - for (i = 0; i < d->wordsper; i++) - p->states[i] = d->work[i]; - p->hash = h; - p->flags = (ispost) ? POSTSTATE : 0; - if (noprogress) - p->flags |= NOPROGRESS; - /* lastseen to be dealt with by caller */ - } - - if (!sawlacons) - { /* lookahead conds. always cache miss */ - FDEBUG(("c%d[%d]->c%d\n", css - d->ssets, co, p - d->ssets)); - css->outs[co] = p; - css->inchain[co] = p->ins; - p->ins.ss = css; - p->ins.co = (color) co; - } - return p; -} - -/* - * lacon - lookahead-constraint checker for miss() - */ -static int /* predicate: constraint satisfied? */ -lacon(struct vars * v, - struct cnfa * pcnfa, /* parent cnfa */ - chr *cp, - pcolor co) /* "color" of the lookahead constraint */ -{ - int n; - struct subre *sub; - struct dfa *d; - struct smalldfa sd; - chr *end; - - n = co - pcnfa->ncolors; - assert(n < v->g->nlacons && v->g->lacons != NULL); - FDEBUG(("=== testing lacon %d\n", n)); - sub = &v->g->lacons[n]; - d = newdfa(v, &sub->cnfa, &v->g->cmap, &sd); - if (d == NULL) - { - ERR(REG_ESPACE); - return 0; - } - end = longest(v, d, cp, v->stop, (int *) NULL); - freedfa(d); - FDEBUG(("=== lacon %d match %d\n", n, (end != NULL))); - return (sub->subno) ? (end != NULL) : (end == NULL); -} - -/* - * getvacant - get a vacant state set - * This routine clears out the inarcs and outarcs, but does not otherwise - * clear the innards of the state set -- that's up to the caller. - */ -static struct sset * -getvacant(struct vars * v, /* used only for debug flags */ - struct dfa * d, - chr *cp, - chr *start) -{ - int i; - struct sset *ss; - struct sset *p; - struct arcp ap; - struct arcp lastap; - color co; - - ss = pickss(v, d, cp, start); - assert(!(ss->flags & LOCKED)); - - /* clear out its inarcs, including self-referential ones */ - ap = ss->ins; - while ((p = ap.ss) != NULL) - { - co = ap.co; - FDEBUG(("zapping c%d's %ld outarc\n", p - d->ssets, (long) co)); - p->outs[co] = NULL; - ap = p->inchain[co]; - p->inchain[co].ss = NULL; /* paranoia */ - } - ss->ins.ss = NULL; - - /* take it off the inarc chains of the ssets reached by its outarcs */ - for (i = 0; i < d->ncolors; i++) - { - p = ss->outs[i]; - assert(p != ss); /* not self-referential */ - if (p == NULL) - continue; /* NOTE CONTINUE */ - FDEBUG(("del outarc %d from c%d's in chn\n", i, p - d->ssets)); - if (p->ins.ss == ss && p->ins.co == i) - p->ins = ss->inchain[i]; - else - { - assert(p->ins.ss != NULL); - for (ap = p->ins; ap.ss != NULL && - !(ap.ss == ss && ap.co == i); - ap = ap.ss->inchain[ap.co]) - lastap = ap; - assert(ap.ss != NULL); - lastap.ss->inchain[lastap.co] = ss->inchain[i]; - } - ss->outs[i] = NULL; - ss->inchain[i].ss = NULL; - } - - /* if ss was a success state, may need to remember location */ - if ((ss->flags & POSTSTATE) && ss->lastseen != d->lastpost && - (d->lastpost == NULL || d->lastpost < ss->lastseen)) - d->lastpost = ss->lastseen; - - /* likewise for a no-progress state */ - if ((ss->flags & NOPROGRESS) && ss->lastseen != d->lastnopr && - (d->lastnopr == NULL || d->lastnopr < ss->lastseen)) - d->lastnopr = ss->lastseen; - - return ss; -} - -/* - * pickss - pick the next stateset to be used - */ -static struct sset * -pickss(struct vars * v, /* used only for debug flags */ - struct dfa * d, - chr *cp, - chr *start) -{ - int i; - struct sset *ss; - struct sset *end; - chr *ancient; - - /* shortcut for cases where cache isn't full */ - if (d->nssused < d->nssets) - { - i = d->nssused; - d->nssused++; - ss = &d->ssets[i]; - FDEBUG(("new c%d\n", i)); - /* set up innards */ - ss->states = &d->statesarea[i * d->wordsper]; - ss->flags = 0; - ss->ins.ss = NULL; - ss->ins.co = WHITE; /* give it some value */ - ss->outs = &d->outsarea[i * d->ncolors]; - ss->inchain = &d->incarea[i * d->ncolors]; - for (i = 0; i < d->ncolors; i++) - { - ss->outs[i] = NULL; - ss->inchain[i].ss = NULL; - } - return ss; - } - - /* look for oldest, or old enough anyway */ - if (cp - start > d->nssets * 2 / 3) /* oldest 33% are expendable */ - ancient = cp - d->nssets * 2 / 3; - else - ancient = start; - for (ss = d->search, end = &d->ssets[d->nssets]; ss < end; ss++) - if ((ss->lastseen == NULL || ss->lastseen < ancient) && - !(ss->flags & LOCKED)) - { - d->search = ss + 1; - FDEBUG(("replacing c%d\n", ss - d->ssets)); - return ss; - } - for (ss = d->ssets, end = d->search; ss < end; ss++) - if ((ss->lastseen == NULL || ss->lastseen < ancient) && - !(ss->flags & LOCKED)) - { - d->search = ss + 1; - FDEBUG(("replacing c%d\n", ss - d->ssets)); - return ss; - } - - /* nobody's old enough?!? -- something's really wrong */ - FDEBUG(("can't find victim to replace!\n")); - assert(NOTREACHED); - ERR(REG_ASSERT); - return d->ssets; -} diff --git a/src/regex/regerrs.h b/src/regex/regerrs.h deleted file mode 100644 index f99dbf4f73..0000000000 --- a/src/regex/regerrs.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * $Id$ - */ - -{ - REG_OKAY, "REG_OKAY", "no errors detected" -}, - -{ - REG_NOMATCH, "REG_NOMATCH", "failed to match" -}, - -{ - REG_BADPAT, "REG_BADPAT", "invalid regexp (reg version 0.8)" -}, - -{ - REG_ECOLLATE, "REG_ECOLLATE", "invalid collating element" -}, - -{ - REG_ECTYPE, "REG_ECTYPE", "invalid character class" -}, - -{ - REG_EESCAPE, "REG_EESCAPE", "invalid escape \\ sequence" -}, - -{ - REG_ESUBREG, "REG_ESUBREG", "invalid backreference number" -}, - -{ - REG_EBRACK, "REG_EBRACK", "brackets [] not balanced" -}, - -{ - REG_EPAREN, "REG_EPAREN", "parentheses () not balanced" -}, - -{ - REG_EBRACE, "REG_EBRACE", "braces {} not balanced" -}, - -{ - REG_BADBR, "REG_BADBR", "invalid repetition count(s)" -}, - -{ - REG_ERANGE, "REG_ERANGE", "invalid character range" -}, - -{ - REG_ESPACE, "REG_ESPACE", "out of memory" -}, - -{ - REG_BADRPT, "REG_BADRPT", "quantifier operand invalid" -}, - -{ - REG_ASSERT, "REG_ASSERT", "\"can't happen\" -- you found a bug" -}, - -{ - REG_INVARG, "REG_INVARG", "invalid argument to regex function" -}, - -{ - REG_MIXED, "REG_MIXED", "character widths of regex and string differ" -}, - -{ - REG_BADOPT, "REG_BADOPT", "invalid embedded option" -}, diff --git a/src/regex/regex.7 b/src/regex/regex.7 new file mode 100644 index 0000000000..0fa180269e --- /dev/null +++ b/src/regex/regex.7 @@ -0,0 +1,235 @@ +.TH REGEX 7 "25 Oct 1995" +.BY "Henry Spencer" +.SH NAME +regex \- POSIX 1003.2 regular expressions +.SH DESCRIPTION +Regular expressions (``RE''s), +as defined in POSIX 1003.2, come in two forms: +modern REs (roughly those of +.IR egrep ; +1003.2 calls these ``extended'' REs) +and obsolete REs (roughly those of +.IR ed ; +1003.2 ``basic'' REs). +Obsolete REs mostly exist for backward compatibility in some old programs; +they will be discussed at the end. +1003.2 leaves some aspects of RE syntax and semantics open; +`\(dg' marks decisions on these aspects that +may not be fully portable to other 1003.2 implementations. +.PP +A (modern) RE is one\(dg or more non-empty\(dg \fIbranches\fR, +separated by `|'. +It matches anything that matches one of the branches. +.PP +A branch is one\(dg or more \fIpieces\fR, concatenated. +It matches a match for the first, followed by a match for the second, etc. +.PP +A piece is an \fIatom\fR possibly followed +by a single\(dg `*', `+', `?', or \fIbound\fR. +An atom followed by `*' matches a sequence of 0 or more matches of the atom. +An atom followed by `+' matches a sequence of 1 or more matches of the atom. +An atom followed by `?' matches a sequence of 0 or 1 matches of the atom. +.PP +A \fIbound\fR is `{' followed by an unsigned decimal integer, +possibly followed by `,' +possibly followed by another unsigned decimal integer, +always followed by `}'. +The integers must lie between 0 and RE_DUP_MAX (255\(dg) inclusive, +and if there are two of them, the first may not exceed the second. +An atom followed by a bound containing one integer \fIi\fR +and no comma matches +a sequence of exactly \fIi\fR matches of the atom. +An atom followed by a bound +containing one integer \fIi\fR and a comma matches +a sequence of \fIi\fR or more matches of the atom. +An atom followed by a bound +containing two integers \fIi\fR and \fIj\fR matches +a sequence of \fIi\fR through \fIj\fR (inclusive) matches of the atom. +.PP +An atom is a regular expression enclosed in `()' (matching a match for the +regular expression), +an empty set of `()' (matching the null string)\(dg, +a \fIbracket expression\fR (see below), `.' +(matching any single character), `^' (matching the null string at the +beginning of a line), `$' (matching the null string at the +end of a line), a `\e' followed by one of the characters +`^.[$()|*+?{\e' +(matching that character taken as an ordinary character), +a `\e' followed by any other character\(dg +(matching that character taken as an ordinary character, +as if the `\e' had not been present\(dg), +or a single character with no other significance (matching that character). +A `{' followed by a character other than a digit is an ordinary +character, not the beginning of a bound\(dg. +It is illegal to end an RE with `\e'. +.PP +A \fIbracket expression\fR is a list of characters enclosed in `[]'. +It normally matches any single character from the list (but see below). +If the list begins with `^', +it matches any single character +(but see below) \fInot\fR from the rest of the list. +If two characters in the list are separated by `\-', this is shorthand +for the full \fIrange\fR of characters between those two (inclusive) in the +collating sequence, +e.g. `[0\-9]' in ASCII matches any decimal digit. +It is illegal\(dg for two ranges to share an +endpoint, e.g. `a\-c\-e'. +Ranges are very collating-sequence-dependent, +and portable programs should avoid relying on them. +.PP +To include a literal `]' in the list, make it the first character +(following a possible `^'). +To include a literal `\-', make it the first or last character, +or the second endpoint of a range. +To use a literal `\-' as the first endpoint of a range, +enclose it in `[.' and `.]' to make it a collating element (see below). +With the exception of these and some combinations using `[' (see next +paragraphs), all other special characters, including `\e', lose their +special significance within a bracket expression. +.PP +Within a bracket expression, a collating element (a character, +a multi-character sequence that collates as if it were a single character, +or a collating-sequence name for either) +enclosed in `[.' and `.]' stands for the +sequence of characters of that collating element. +The sequence is a single element of the bracket expression's list. +A bracket expression containing a multi-character collating element +can thus match more than one character, +e.g. if the collating sequence includes a `ch' collating element, +then the RE `[[.ch.]]*c' matches the first five characters +of `chchcc'. +.PP +Within a bracket expression, a collating element enclosed in `[=' and +`=]' is an equivalence class, standing for the sequences of characters +of all collating elements equivalent to that one, including itself. +(If there are no other equivalent collating elements, +the treatment is as if the enclosing delimiters were `[.' and `.]'.) +For example, if o and \o'o^' are the members of an equivalence class, +then `[[=o=]]', `[[=\o'o^'=]]', and `[o\o'o^']' are all synonymous. +An equivalence class may not\(dg be an endpoint +of a range. +.PP +Within a bracket expression, the name of a \fIcharacter class\fR enclosed +in `[:' and `:]' stands for the list of all characters belonging to that +class. +Standard character class names are: +.PP +.RS +.nf +.ta 3c 6c 9c +alnum digit punct +alpha graph space +blank lower upper +cntrl print xdigit +.fi +.RE +.PP +These stand for the character classes defined in +.IR ctype (3). +A locale may provide others. +A character class may not be used as an endpoint of a range. +.PP +There are two special cases\(dg of bracket expressions: +the bracket expressions `[[:<:]]' and `[[:>:]]' match the null string at +the beginning and end of a word respectively. +A word is defined as a sequence of +word characters +which is neither preceded nor followed by +word characters. +A word character is an +.I alnum +character (as defined by +.IR ctype (3)) +or an underscore. +This is an extension, +compatible with but not specified by POSIX 1003.2, +and should be used with +caution in software intended to be portable to other systems. +.PP +In the event that an RE could match more than one substring of a given +string, +the RE matches the one starting earliest in the string. +If the RE could match more than one substring starting at that point, +it matches the longest. +Subexpressions also match the longest possible substrings, subject to +the constraint that the whole match be as long as possible, +with subexpressions starting earlier in the RE taking priority over +ones starting later. +Note that higher-level subexpressions thus take priority over +their lower-level component subexpressions. +.PP +Match lengths are measured in characters, not collating elements. +A null string is considered longer than no match at all. +For example, +`bb*' matches the three middle characters of `abbbc', +`(wee|week)(knights|nights)' matches all ten characters of `weeknights', +when `(.*).*' is matched against `abc' the parenthesized subexpression +matches all three characters, and +when `(a*)*' is matched against `bc' both the whole RE and the parenthesized +subexpression match the null string. +.PP +If case-independent matching is specified, +the effect is much as if all case distinctions had vanished from the +alphabet. +When an alphabetic that exists in multiple cases appears as an +ordinary character outside a bracket expression, it is effectively +transformed into a bracket expression containing both cases, +e.g. `x' becomes `[xX]'. +When it appears inside a bracket expression, all case counterparts +of it are added to the bracket expression, so that (e.g.) `[x]' +becomes `[xX]' and `[^x]' becomes `[^xX]'. +.PP +No particular limit is imposed on the length of REs\(dg. +Programs intended to be portable should not employ REs longer +than 256 bytes, +as an implementation can refuse to accept such REs and remain +POSIX-compliant. +.PP +Obsolete (``basic'') regular expressions differ in several respects. +`|', `+', and `?' are ordinary characters and there is no equivalent +for their functionality. +The delimiters for bounds are `\e{' and `\e}', +with `{' and `}' by themselves ordinary characters. +The parentheses for nested subexpressions are `\e(' and `\e)', +with `(' and `)' by themselves ordinary characters. +`^' is an ordinary character except at the beginning of the +RE or\(dg the beginning of a parenthesized subexpression, +`$' is an ordinary character except at the end of the +RE or\(dg the end of a parenthesized subexpression, +and `*' is an ordinary character if it appears at the beginning of the +RE or the beginning of a parenthesized subexpression +(after a possible leading `^'). +Finally, there is one new type of atom, a \fIback reference\fR: +`\e' followed by a non-zero decimal digit \fId\fR +matches the same sequence of characters +matched by the \fId\fRth parenthesized subexpression +(numbering subexpressions by the positions of their opening parentheses, +left to right), +so that (e.g.) `\e([bc]\e)\e1' matches `bb' or `cc' but not `bc'. +.SH SEE ALSO +regex(3) +.PP +POSIX 1003.2, section 2.8 (Regular Expression Notation). +.SH HISTORY +Written by Henry Spencer, based on the 1003.2 spec. +.SH BUGS +Having two kinds of REs is a botch. +.PP +The current 1003.2 spec says that `)' is an ordinary character in +the absence of an unmatched `('; +this was an unintentional result of a wording error, +and change is likely. +Avoid relying on it. +.PP +Back references are a dreadful botch, +posing major problems for efficient implementations. +They are also somewhat vaguely defined +(does +`a\e(\e(b\e)*\e2\e)*d' match `abbbd'?). +Avoid using them. +.PP +1003.2's specification of case-independent matching is vague. +The ``one case implies all cases'' definition given above +is current consensus among implementors as to the right interpretation. +.PP +The syntax for word boundaries is incredibly ugly. diff --git a/src/regex/regex.dsp b/src/regex/regex.dsp index 2ad6670446..3e4ca71463 100644 --- a/src/regex/regex.dsp +++ b/src/regex/regex.dsp @@ -23,8 +23,8 @@ CFG=regex - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "regexVC" -# PROP Scc_LocalPath "." +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe diff --git a/src/regex/regex.dsw b/src/regex/regex.dsw index 0b31c25aa5..89e43f486b 100644 --- a/src/regex/regex.dsw +++ b/src/regex/regex.dsw @@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00 ############################################################################### -Project: "regex"=.\RegexVC.dsp - Package Owner=<4> +Project: "regex"=.\regex.dsp - Package Owner=<4> Package=<5> {{{ diff --git a/src/regex/regex.h b/src/regex/regex.h index a1fcec2e1c..d094d072d5 100644 --- a/src/regex/regex.h +++ b/src/regex/regex.h @@ -1,202 +1,74 @@ #ifndef _REGEX_H_ #define _REGEX_H_ /* never again */ -/* - * regular expressions - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id$ - */ - -/* - * Add your own defines, if needed, here. - */ +/* ========= begin header generated by ./mkh ========= */ #ifdef __cplusplus extern "C" { #endif -#include -#include -#include - -#ifndef wxCHECK_GCC_VERSION -#define wxCHECK_GCC_VERSION( major, minor ) \ - ( defined(__GNUC__) && defined(__GNUC_MINOR__) \ - && ( ( __GNUC__ > (major) ) \ - || ( __GNUC__ == (major) && __GNUC_MINOR__ >= (minor) ) ) ) -#endif - -#if !wxUSE_UNICODE -# define wx_wchar char -#else // Unicode - #if (defined(__GNUC__) && !wxCHECK_GCC_VERSION(2, 96)) -# define wx_wchar __WCHAR_TYPE__ - #else // __WCHAR_TYPE__ and gcc < 2.96 - // standard case -# define wx_wchar wchar_t - #endif // __WCHAR_TYPE__ -#endif // ASCII/Unicode - -/* - * interface types etc. - */ - -/* - * regoff_t has to be large enough to hold either off_t or ssize_t, - * and must be signed; it's only a guess that long is suitable. - */ -typedef long regoff_t; - -/* - * other interface types - */ - -/* the biggie, a compiled RE (or rather, a front end to same) */ -typedef struct -{ - int re_magic; /* magic number */ - size_t re_nsub; /* number of subexpressions */ - long re_info; /* information about RE */ -#define REG_UBACKREF 000001 -#define REG_ULOOKAHEAD 000002 -#define REG_UBOUNDS 000004 -#define REG_UBRACES 000010 -#define REG_UBSALNUM 000020 -#define REG_UPBOTCH 000040 -#define REG_UBBS 000100 -#define REG_UNONPOSIX 000200 -#define REG_UUNSPEC 000400 -#define REG_UUNPORT 001000 -#define REG_ULOCALE 002000 -#define REG_UEMPTYMATCH 004000 -#define REG_UIMPOSSIBLE 010000 -#define REG_USHORTEST 020000 - int re_csize; /* sizeof(character) */ - char *re_endp; /* backward compatibility kludge */ - /* the rest is opaque pointers to hidden innards */ - char *re_guts; /* `char *' is more portable than `void *' */ - char *re_fns; +/* === regex2.h === */ +typedef off_t regoff_t; +typedef struct { + int re_magic; + size_t re_nsub; /* number of parenthesized subexpressions */ + const char *re_endp; /* end pointer for REG_PEND */ + struct re_guts *re_g; /* none of your business :-) */ } regex_t; - -/* result reporting (may acquire more fields later) */ -typedef struct -{ - regoff_t rm_so; /* start of substring */ - regoff_t rm_eo; /* end of substring */ +typedef struct { + regoff_t rm_so; /* start of match */ + regoff_t rm_eo; /* end of match */ } regmatch_t; -/* supplementary control and reporting */ -typedef struct -{ - regmatch_t rm_extend; /* see REG_EXPECT */ -} rm_detail_t; + +/* === regcomp.c === */ +extern int regcomp(regex_t *, const char *, int); +#define REG_BASIC 0000 +#define REG_EXTENDED 0001 +#define REG_ICASE 0002 +#define REG_NOSUB 0004 +#define REG_NEWLINE 0010 +#define REG_NOSPEC 0020 +#define REG_PEND 0040 +#define REG_DUMP 0200 - -/* - * regex compilation flags - */ -#define REG_BASIC 000000 /* BREs (convenience) */ -#define REG_EXTENDED 000001 /* EREs */ -#define REG_ADVF 000002 /* advanced features in EREs */ -#define REG_ADVANCED 000003 /* AREs (which are also EREs) */ -#define REG_QUOTE 000004 /* no special characters, none */ -#define REG_NOSPEC REG_QUOTE /* historical synonym */ -#define REG_ICASE 000010 /* ignore case */ -#define REG_NOSUB 000020 /* don't care about subexpressions */ -#define REG_EXPANDED 000040 /* expanded format, white space & comments */ -#define REG_NLSTOP 000100 /* \n doesn't match . or [^ ] */ -#define REG_NLANCH 000200 /* ^ matches after \n, $ before */ -#define REG_NEWLINE 000300 /* newlines are line terminators */ -#define REG_PEND 000400 /* ugh -- backward-compatibility hack */ -#define REG_EXPECT 001000 /* report details on partial/limited - * matches */ -#define REG_BOSONLY 002000 /* temporary kludge for BOS-only matches */ -#define REG_DUMP 004000 /* none of your business :-) */ -#define REG_FAKE 010000 /* none of your business :-) */ -#define REG_PROGRESS 020000 /* none of your business :-) */ - - - -/* - * regex execution flags - */ -#define REG_NOTBOL 0001 /* BOS is not BOL */ -#define REG_NOTEOL 0002 /* EOS is not EOL */ -#define REG_STARTEND 0004 /* backward compatibility kludge */ -#define REG_FTRACE 0010 /* none of your business */ -#define REG_MTRACE 0020 /* none of your business */ -#define REG_SMALL 0040 /* none of your business */ - - -/* - * error reporting - * Be careful if modifying the list of error codes -- the table used by - * regerror() is generated automatically from this file! - */ -#define REG_OKAY 0 /* no errors detected */ -#define REG_NOMATCH 1 /* failed to match */ -#define REG_BADPAT 2 /* invalid regexp */ -#define REG_ECOLLATE 3 /* invalid collating element */ -#define REG_ECTYPE 4 /* invalid character class */ -#define REG_EESCAPE 5 /* invalid escape \ sequence */ -#define REG_ESUBREG 6 /* invalid backreference number */ -#define REG_EBRACK 7 /* brackets [] not balanced */ -#define REG_EPAREN 8 /* parentheses () not balanced */ -#define REG_EBRACE 9 /* braces {} not balanced */ -#define REG_BADBR 10 /* invalid repetition count(s) */ -#define REG_ERANGE 11 /* invalid character range */ -#define REG_ESPACE 12 /* out of memory */ -#define REG_BADRPT 13 /* quantifier operand invalid */ -#define REG_ASSERT 15 /* "can't happen" -- you found a bug */ -#define REG_INVARG 16 /* invalid argument to regex function */ -#define REG_MIXED 17 /* character widths of regex and string - * differ */ -#define REG_BADOPT 18 /* invalid embedded option */ -/* two specials for debugging and testing */ -#define REG_ATOI 101 /* convert error-code name to number */ -#define REG_ITOA 102 /* convert error-code number to name */ - - - -/* - * the prototypes for exported functions - */ -extern int wx_regcomp(regex_t *, const wx_wchar *, size_t, int); -extern int regcomp(regex_t *, const wx_wchar *, int); -extern int wx_regexec(regex_t *, const wx_wchar *, size_t, rm_detail_t *, size_t, regmatch_t[], int); -extern int regexec(regex_t *, const wx_wchar *, size_t, regmatch_t[], int); -extern void regfree(regex_t *); +/* === regerror.c === */ +#define REG_OKAY 0 +#define REG_NOMATCH 1 +#define REG_BADPAT 2 +#define REG_ECOLLATE 3 +#define REG_ECTYPE 4 +#define REG_EESCAPE 5 +#define REG_ESUBREG 6 +#define REG_EBRACK 7 +#define REG_EPAREN 8 +#define REG_EBRACE 9 +#define REG_BADBR 10 +#define REG_ERANGE 11 +#define REG_ESPACE 12 +#define REG_BADRPT 13 +#define REG_EMPTY 14 +#define REG_ASSERT 15 +#define REG_INVARG 16 +#define REG_ATOI 255 /* convert name to number (!) */ +#define REG_ITOA 0400 /* convert number to name (!) */ extern size_t regerror(int, const regex_t *, char *, size_t); -extern void wx_regfree(regex_t *); -extern size_t wx_regerror(int, const regex_t *, char *, size_t); + + +/* === regexec.c === */ +extern int regexec(const regex_t *, const char *, size_t, regmatch_t [], int); +#define REG_NOTBOL 00001 +#define REG_NOTEOL 00002 +#define REG_STARTEND 00004 +#define REG_TRACE 00400 /* tracing of execution */ +#define REG_LARGE 01000 /* force large representation */ +#define REG_BACKR 02000 /* force use of backref code */ + + +/* === regfree.c === */ +extern void regfree(regex_t *); #ifdef __cplusplus } #endif - -#endif /* _REGEX_H_ */ +/* ========= end header generated by ./mkh ========= */ +#endif diff --git a/src/regex/regex2.h b/src/regex/regex2.h new file mode 100644 index 0000000000..58fd8d8a43 --- /dev/null +++ b/src/regex/regex2.h @@ -0,0 +1,134 @@ +/* + * First, the stuff that ends up in the outside-world include file + = typedef off_t regoff_t; + = typedef struct { + = int re_magic; + = size_t re_nsub; // number of parenthesized subexpressions + = const char *re_endp; // end pointer for REG_PEND + = struct re_guts *re_g; // none of your business :-) + = } regex_t; + = typedef struct { + = regoff_t rm_so; // start of match + = regoff_t rm_eo; // end of match + = } regmatch_t; + */ +/* + * internals of regex_t + */ +#define MAGIC1 ((('r'^0200)<<8) | 'e') + +/* + * The internal representation is a *strip*, a sequence of + * operators ending with an endmarker. (Some terminology etc. is a + * historical relic of earlier versions which used multiple strips.) + * Certain oddities in the representation are there to permit running + * the machinery backwards; in particular, any deviation from sequential + * flow must be marked at both its source and its destination. Some + * fine points: + * + * - OPLUS_ and O_PLUS are *inside* the loop they create. + * - OQUEST_ and O_QUEST are *outside* the bypass they create. + * - OCH_ and O_CH are *outside* the multi-way branch they create, while + * OOR1 and OOR2 are respectively the end and the beginning of one of + * the branches. Note that there is an implicit OOR2 following OCH_ + * and an implicit OOR1 preceding O_CH. + * + * In state representations, an operator's bit is on to signify a state + * immediately *preceding* "execution" of that operator. + */ +typedef long sop; /* strip operator */ +typedef long sopno; +#define OPRMASK 0x7c000000 +#define OPDMASK 0x03ffffff +#define OPSHIFT (26) +#define OP(n) ((n)&OPRMASK) +#define OPND(n) ((n)&OPDMASK) +#define SOP(op, opnd) ((op)|(opnd)) +/* operators meaning operand */ +/* (back, fwd are offsets) */ +#define OEND (1< uch [csetsize] */ + uch mask; /* bit within array */ + uch hash; /* hash code */ + size_t smultis; + char *multis; /* -> char[smulti] ab\0cd\0ef\0\0 */ +} cset; +/* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */ +#define CHadd(cs, c) ((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (c)) +#define CHsub(cs, c) ((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (c)) +#define CHIN(cs, c) ((cs)->ptr[(uch)(c)] & (cs)->mask) +#define MCadd(p, cs, cp) mcadd(p, cs, cp) /* regcomp() internal fns */ +#define MCsub(p, cs, cp) mcsub(p, cs, cp) +#define MCin(p, cs, cp) mcin(p, cs, cp) + +/* stuff for character categories */ +typedef unsigned char cat_t; + +/* + * main compiled-expression structure + */ +struct re_guts { + int magic; +# define MAGIC2 ((('R'^0200)<<8)|'E') + sop *strip; /* malloced area for strip */ + int csetsize; /* number of bits in a cset vector */ + int ncsets; /* number of csets in use */ + cset *sets; /* -> cset [ncsets] */ + uch *setbits; /* -> uch[csetsize][ncsets/CHAR_BIT] */ + int cflags; /* copy of regcomp() cflags argument */ + sopno nstates; /* = number of sops */ + sopno firststate; /* the initial OEND (normally 0) */ + sopno laststate; /* the final OEND */ + int iflags; /* internal flags */ +# define USEBOL 01 /* used ^ */ +# define USEEOL 02 /* used $ */ +# define BAD 04 /* something wrong */ + int nbol; /* number of ^ used */ + int neol; /* number of $ used */ + int ncategories; /* how many character categories */ + cat_t *categories; /* ->catspace[-CHAR_MIN] */ + char *must; /* match must contain this string */ + int mlen; /* length of must */ + size_t nsub; /* copy of re_nsub */ + int backrefs; /* does it use back references? */ + sopno nplus; /* how deep does it nest +s? */ + /* catspace must be last */ + cat_t catspace[1]; /* actually [NC] */ +}; + +/* misc utilities */ +#define OUT (CHAR_MAX+1) /* a non-character value */ +#define ISWORD(c) (isalnum(c) || (c) == '_') diff --git a/src/regex/regexM7.mcp b/src/regex/regexM7.mcp new file mode 100755 index 0000000000..5772fb50fb Binary files /dev/null and b/src/regex/regexM7.mcp differ diff --git a/src/regex/regfronts.c b/src/regex/regfronts.c deleted file mode 100644 index 82f48e2abc..0000000000 --- a/src/regex/regfronts.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * regcomp and regexec - front ends to re_ routines - * - * Mostly for implementation of backward-compatibility kludges. Note - * that these routines exist ONLY in char versions. - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#include "regguts.h" - -/* - - regcomp - compile regular expression - */ -int -regcomp(re, str, flags) -regex_t *re; -CONST char *str; -int flags; -{ - size_t len; - int f = flags; - - if (f®_PEND) { - len = re->re_endp - str; - f &= ~REG_PEND; - } else - len = strlen(str); - - return re_comp(re, str, len, f); -} - -/* - - regexec - execute regular expression - */ -int -regexec(re, str, nmatch, pmatch, flags) -regex_t *re; -CONST char *str; -size_t nmatch; -regmatch_t pmatch[]; -int flags; -{ - CONST char *start; - size_t len; - int f = flags; - - if (f®_STARTEND) { - start = str + pmatch[0].rm_so; - len = pmatch[0].rm_eo - pmatch[0].rm_so; - f &= ~REG_STARTEND; - } else { - start = str; - len = strlen(str); - } - - return re_exec(re, start, len, nmatch, pmatch, f); -} diff --git a/src/regex/regguts.h b/src/regex/regguts.h deleted file mode 100644 index aa12dbf445..0000000000 --- a/src/regex/regguts.h +++ /dev/null @@ -1,417 +0,0 @@ -/* - * Internal interface definitions, etc., for the reg package - * - * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. - * - * Development of this software was funded, in part, by Cray Research Inc., - * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics - * Corporation, none of whom are responsible for the results. The author - * thanks all of them. - * - * Redistribution and use in source and binary forms -- with or without - * modification -- are permitted for any purpose, provided that - * redistributions in source form retain this entire copyright notice and - * indicate the origin and nature of any modifications. - * - * I'd appreciate being given credit for this package in the documentation - * of software which uses it, but that is not a requirement. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id$ - */ - - - -/* - * Environmental customization. It should not (I hope) be necessary to - * alter the file you are now reading -- regcustom.h should handle it all, - * given care here and elsewhere. - */ -#include "regcustom.h" - - - -/* - * Things that regcustom.h might override. - */ - -/* assertions */ -#ifndef assert -#ifndef REG_DEBUG -# ifndef NDEBUG -# define NDEBUG /* no assertions */ -# endif -#endif -#include -#endif - -/* voids */ -#ifndef DISCARD -#define DISCARD void /* for throwing values away */ -#endif -#ifndef VS -#define VS(x) ((void *)(x)) /* cast something to generic ptr */ -#endif - -/* function-pointer declarator */ -#ifndef FUNCPTR -#define FUNCPTR(name, args) (*name) args -#endif - -/* memory allocation */ -#ifndef MALLOC -#define MALLOC(n) malloc(n) -#endif -#ifndef REALLOC -#define REALLOC(p, n) realloc(VS(p), n) -#endif -#ifndef FREE -#define FREE(p) free(VS(p)) -#endif - -/* want size of a char in bits, and max value in bounded quantifiers */ -#ifndef CHAR_BIT -#include -#endif -#ifndef _POSIX2_RE_DUP_MAX -#define _POSIX2_RE_DUP_MAX 255 /* normally from */ -#endif - - - -/* - * misc - */ - -#define NOTREACHED 0 -#define xxx 1 - -#define DUPMAX _POSIX2_RE_DUP_MAX -#define INFINITY (DUPMAX+1) - -#define REMAGIC 0xfed7 /* magic number for main struct */ - - - -/* - * debugging facilities - */ -#ifdef REG_DEBUG -/* FDEBUG does finite-state tracing */ -#define FDEBUG(arglist) { if (v->eflags®_FTRACE) printf arglist; } -/* MDEBUG does higher-level tracing */ -#define MDEBUG(arglist) { if (v->eflags®_MTRACE) printf arglist; } -#else -#define FDEBUG(arglist) {} -#define MDEBUG(arglist) {} -#endif - - - -/* - * bitmap manipulation - */ -#define UBITS (CHAR_BIT * sizeof(unsigned)) -#define BSET(uv, sn) ((uv)[(sn)/UBITS] |= (unsigned)1 << ((sn)%UBITS)) -#define ISBSET(uv, sn) ((uv)[(sn)/UBITS] & ((unsigned)1 << ((sn)%UBITS))) - - - -/* - * We dissect a chr into byts for colormap table indexing. Here we define - * a byt, which will be the same as a byte on most machines... The exact - * size of a byt is not critical, but about 8 bits is good, and extraction - * of 8-bit chunks is sometimes especially fast. - */ -#ifndef BYTBITS -#define BYTBITS 8 /* bits in a byt */ -#endif -#define BYTTAB (1<flags&FREECOL) - union tree *block; /* block of solid color, if any */ -}; - -/* the color map itself */ -struct colormap -{ - int magic; -#define CMMAGIC 0x876 - struct vars *v; /* for compile error reporting */ - size_t ncds; /* number of colordescs */ - size_t max; /* highest in use */ - color free; /* beginning of free chain (if non-0) */ - struct colordesc *cd; -#define CDEND(cm) (&(cm)->cd[(cm)->max + 1]) -#define NINLINECDS ((size_t)10) - struct colordesc cdspace[NINLINECDS]; - union tree tree[NBYTS]; /* tree top, plus fill blocks */ -}; - -/* optimization magic to do fast chr->color mapping */ -#define B0(c) ((c) & BYTMASK) -#define B1(c) (((c)>>BYTBITS) & BYTMASK) -#define B2(c) (((c)>>(2*BYTBITS)) & BYTMASK) -#define B3(c) (((c)>>(3*BYTBITS)) & BYTMASK) -#if NBYTS == 1 -#define GETCOLOR(cm, c) ((cm)->tree->tcolor[B0(c)]) -#endif -/* beware, for NBYTS>1, GETCOLOR() is unsafe -- 2nd arg used repeatedly */ -#if NBYTS == 2 -#define GETCOLOR(cm, c) ((cm)->tree->tptr[B1(c)]->tcolor[B0(c)]) -#endif -#if NBYTS == 4 -#define GETCOLOR(cm, c) ((cm)->tree->tptr[B3(c)]->tptr[B2(c)]->tptr[B1(c)]->tcolor[B0(c)]) -#endif - - - -/* - * Interface definitions for locale-interface functions in locale.c. - * Multi-character collating elements (MCCEs) cause most of the trouble. - */ -struct cvec -{ - int nchrs; /* number of chrs */ - int chrspace; /* number of chrs possible */ - chr *chrs; /* pointer to vector of chrs */ - int nranges; /* number of ranges (chr pairs) */ - int rangespace; /* number of chrs possible */ - chr *ranges; /* pointer to vector of chr pairs */ - int nmcces; /* number of MCCEs */ - int mccespace; /* number of MCCEs possible */ - int nmccechrs; /* number of chrs used for MCCEs */ - chr *mcces[1]; /* pointers to 0-terminated MCCEs */ - /* and both batches of chrs are on the end */ -}; - -/* caution: this value cannot be changed easily */ -#define MAXMCCE 2 /* length of longest MCCE */ - - - -/* - * definitions for NFA internal representation - * - * Having a "from" pointer within each arc may seem redundant, but it - * saves a lot of hassle. - */ -struct state; - -struct arc -{ - int type; -#define ARCFREE '\0' - color co; - struct state *from; /* where it's from (and contained within) */ - struct state *to; /* where it's to */ - struct arc *outchain; /* *from's outs chain or free chain */ -#define freechain outchain - struct arc *inchain; /* *to's ins chain */ - struct arc *colorchain; /* color's arc chain */ -}; - -struct arcbatch -{ /* for bulk allocation of arcs */ - struct arcbatch *next; -#define ABSIZE 10 - struct arc a[ABSIZE]; -}; - -struct state -{ - int no; -#define FREESTATE (-1) - char flag; /* marks special states */ - int nins; /* number of inarcs */ - struct arc *ins; /* chain of inarcs */ - int nouts; /* number of outarcs */ - struct arc *outs; /* chain of outarcs */ - struct arc *free; /* chain of free arcs */ - struct state *tmp; /* temporary for traversal algorithms */ - struct state *next; /* chain for traversing all */ - struct state *prev; /* back chain */ - struct arcbatch oas; /* first arcbatch, avoid malloc in easy - * case */ - int noas; /* number of arcs used in first arcbatch */ -}; - -struct nfa -{ - struct state *pre; /* pre-initial state */ - struct state *init; /* initial state */ - struct state *final; /* final state */ - struct state *post; /* post-final state */ - int nstates; /* for numbering states */ - struct state *states; /* state-chain header */ - struct state *slast; /* tail of the chain */ - struct state *free; /* free list */ - struct colormap *cm; /* the color map */ - color bos[2]; /* colors, if any, assigned to BOS and BOL */ - color eos[2]; /* colors, if any, assigned to EOS and EOL */ - struct vars *v; /* simplifies compile error reporting */ - struct nfa *parent; /* parent NFA, if any */ -}; - - - -/* - * definitions for compacted NFA - */ -struct carc -{ - color co; /* COLORLESS is list terminator */ - int to; /* state number */ -}; - -struct cnfa -{ - int nstates; /* number of states */ - int ncolors; /* number of colors */ - int flags; -#define HASLACONS 01 /* uses lookahead constraints */ - int pre; /* setup state number */ - int post; /* teardown state number */ - color bos[2]; /* colors, if any, assigned to BOS and BOL */ - color eos[2]; /* colors, if any, assigned to EOS and EOL */ - struct carc **states; /* vector of pointers to outarc lists */ - struct carc *arcs; /* the area for the lists */ -}; - -#define ZAPCNFA(cnfa) ((cnfa).nstates = 0) -#define NULLCNFA(cnfa) ((cnfa).nstates == 0) - - - -/* - * subexpression tree - */ -struct subre -{ - char op; /* '|', '.' (concat), 'b' (backref), '(', - * '=' */ - char flags; -#define LONGER 01 /* prefers longer match */ -#define SHORTER 02 /* prefers shorter match */ -#define MIXED 04 /* mixed preference below */ -#define CAP 010 /* capturing parens below */ -#define BACKR 020 /* back reference below */ -#define INUSE 0100 /* in use in final tree */ -#define LOCAL 03 /* bits which may not propagate up */ -#define LMIX(f) ((f)<<2) /* LONGER -> MIXED */ -#define SMIX(f) ((f)<<1) /* SHORTER -> MIXED */ -#define UP(f) (((f)&~LOCAL) | (LMIX(f) & SMIX(f) & MIXED)) -#define MESSY(f) ((f)&(MIXED|CAP|BACKR)) -#define PREF(f) ((f)&LOCAL) -#define PREF2(f1, f2) ((PREF(f1) != 0) ? PREF(f1) : PREF(f2)) -#define COMBINE(f1, f2) (UP((f1)|(f2)) | PREF2(f1, f2)) - short retry; /* index into retry memory */ - int subno; /* subexpression number (for 'b' and '(') */ - short min; /* min repetitions, for backref only */ - short max; /* max repetitions, for backref only */ - struct subre *left; /* left child, if any (also freelist - * chain) */ - struct subre *right; /* right child, if any */ - struct state *begin; /* outarcs from here... */ - struct state *end; /* ...ending in inarcs here */ - struct cnfa cnfa; /* compacted NFA, if any */ - struct subre *chain; /* for bookkeeping and error cleanup */ -}; - - - -/* - * table of function pointers for generic manipulation functions - * A regex_t's re_fns points to one of these. - */ -struct fns -{ - void FUNCPTR(free, (regex_t *)); -}; - - - -/* - * the insides of a regex_t, hidden behind a void * - */ -struct guts -{ - int magic; -#define GUTSMAGIC 0xfed9 - int cflags; /* copy of compile flags */ - long info; /* copy of re_info */ - size_t nsub; /* copy of re_nsub */ - struct subre *tree; - struct cnfa search; /* for fast preliminary search */ - int ntree; - struct colormap cmap; - int FUNCPTR(compare, (const chr *, const chr *, size_t)); - struct subre *lacons; /* lookahead-constraint vector */ - int nlacons; /* size of lacons */ -}; diff --git a/src/regex/split.c b/src/regex/split.c new file mode 100644 index 0000000000..188bdb775b --- /dev/null +++ b/src/regex/split.c @@ -0,0 +1,316 @@ +#include +#include + +/* + - split - divide a string into fields, like awk split() + = int split(char *string, char *fields[], int nfields, char *sep); + */ +int /* number of fields, including overflow */ +split(string, fields, nfields, sep) +char *string; +char *fields[]; /* list is not NULL-terminated */ +int nfields; /* number of entries available in fields[] */ +char *sep; /* "" white, "c" single char, "ab" [ab]+ */ +{ + register char *p = string; + register char c; /* latest character */ + register char sepc = sep[0]; + register char sepc2; + register int fn; + register char **fp = fields; + register char *sepp; + register int trimtrail; + + /* white space */ + if (sepc == '\0') { + while ((c = *p++) == ' ' || c == '\t') + continue; + p--; + trimtrail = 1; + sep = " \t"; /* note, code below knows this is 2 long */ + sepc = ' '; + } else + trimtrail = 0; + sepc2 = sep[1]; /* now we can safely pick this up */ + + /* catch empties */ + if (*p == '\0') + return(0); + + /* single separator */ + if (sepc2 == '\0') { + fn = nfields; + for (;;) { + *fp++ = p; + fn--; + if (fn == 0) + break; + while ((c = *p++) != sepc) + if (c == '\0') + return(nfields - fn); + *(p-1) = '\0'; + } + /* we have overflowed the fields vector -- just count them */ + fn = nfields; + for (;;) { + while ((c = *p++) != sepc) + if (c == '\0') + return(fn); + fn++; + } + /* not reached */ + } + + /* two separators */ + if (sep[2] == '\0') { + fn = nfields; + for (;;) { + *fp++ = p; + fn--; + while ((c = *p++) != sepc && c != sepc2) + if (c == '\0') { + if (trimtrail && **(fp-1) == '\0') + fn++; + return(nfields - fn); + } + if (fn == 0) + break; + *(p-1) = '\0'; + while ((c = *p++) == sepc || c == sepc2) + continue; + p--; + } + /* we have overflowed the fields vector -- just count them */ + fn = nfields; + while (c != '\0') { + while ((c = *p++) == sepc || c == sepc2) + continue; + p--; + fn++; + while ((c = *p++) != '\0' && c != sepc && c != sepc2) + continue; + } + /* might have to trim trailing white space */ + if (trimtrail) { + p--; + while ((c = *--p) == sepc || c == sepc2) + continue; + p++; + if (*p != '\0') { + if (fn == nfields+1) + *p = '\0'; + fn--; + } + } + return(fn); + } + + /* n separators */ + fn = 0; + for (;;) { + if (fn < nfields) + *fp++ = p; + fn++; + for (;;) { + c = *p++; + if (c == '\0') + return(fn); + sepp = sep; + while ((sepc = *sepp++) != '\0' && sepc != c) + continue; + if (sepc != '\0') /* it was a separator */ + break; + } + if (fn < nfields) + *(p-1) = '\0'; + for (;;) { + c = *p++; + sepp = sep; + while ((sepc = *sepp++) != '\0' && sepc != c) + continue; + if (sepc == '\0') /* it wasn't a separator */ + break; + } + p--; + } + + /* not reached */ +} + +#ifdef TEST_SPLIT + + +/* + * test program + * pgm runs regression + * pgm sep splits stdin lines by sep + * pgm str sep splits str by sep + * pgm str sep n splits str by sep n times + */ +int +main(argc, argv) +int argc; +char *argv[]; +{ + char buf[512]; + register int n; +# define MNF 10 + char *fields[MNF]; + + if (argc > 4) + for (n = atoi(argv[3]); n > 0; n--) { + (void) strcpy(buf, argv[1]); + } + else if (argc > 3) + for (n = atoi(argv[3]); n > 0; n--) { + (void) strcpy(buf, argv[1]); + (void) split(buf, fields, MNF, argv[2]); + } + else if (argc > 2) + dosplit(argv[1], argv[2]); + else if (argc > 1) + while (fgets(buf, sizeof(buf), stdin) != NULL) { + buf[strlen(buf)-1] = '\0'; /* stomp newline */ + dosplit(buf, argv[1]); + } + else + regress(); + + exit(0); +} + +dosplit(string, seps) +char *string; +char *seps; +{ +# define NF 5 + char *fields[NF]; + register int nf; + + nf = split(string, fields, NF, seps); + print(nf, NF, fields); +} + +print(nf, nfp, fields) +int nf; +int nfp; +char *fields[]; +{ + register int fn; + register int bound; + + bound = (nf > nfp) ? nfp : nf; + printf("%d:\t", nf); + for (fn = 0; fn < bound; fn++) + printf("\"%s\"%s", fields[fn], (fn+1 < nf) ? ", " : "\n"); +} + +#define RNF 5 /* some table entries know this */ +struct { + char *str; + char *seps; + int nf; + char *fi[RNF]; +} tests[] = { + "", " ", 0, { "" }, + " ", " ", 2, { "", "" }, + "x", " ", 1, { "x" }, + "xy", " ", 1, { "xy" }, + "x y", " ", 2, { "x", "y" }, + "abc def g ", " ", 5, { "abc", "def", "", "g", "" }, + " a bcd", " ", 4, { "", "", "a", "bcd" }, + "a b c d e f", " ", 6, { "a", "b", "c", "d", "e f" }, + " a b c d ", " ", 6, { "", "a", "b", "c", "d " }, + + "", " _", 0, { "" }, + " ", " _", 2, { "", "" }, + "x", " _", 1, { "x" }, + "x y", " _", 2, { "x", "y" }, + "ab _ cd", " _", 2, { "ab", "cd" }, + " a_b c ", " _", 5, { "", "a", "b", "c", "" }, + "a b c_d e f", " _", 6, { "a", "b", "c", "d", "e f" }, + " a b c d ", " _", 6, { "", "a", "b", "c", "d " }, + + "", " _~", 0, { "" }, + " ", " _~", 2, { "", "" }, + "x", " _~", 1, { "x" }, + "x y", " _~", 2, { "x", "y" }, + "ab _~ cd", " _~", 2, { "ab", "cd" }, + " a_b c~", " _~", 5, { "", "a", "b", "c", "" }, + "a b_c d~e f", " _~", 6, { "a", "b", "c", "d", "e f" }, + "~a b c d ", " _~", 6, { "", "a", "b", "c", "d " }, + + "", " _~-", 0, { "" }, + " ", " _~-", 2, { "", "" }, + "x", " _~-", 1, { "x" }, + "x y", " _~-", 2, { "x", "y" }, + "ab _~- cd", " _~-", 2, { "ab", "cd" }, + " a_b c~", " _~-", 5, { "", "a", "b", "c", "" }, + "a b_c-d~e f", " _~-", 6, { "a", "b", "c", "d", "e f" }, + "~a-b c d ", " _~-", 6, { "", "a", "b", "c", "d " }, + + "", " ", 0, { "" }, + " ", " ", 2, { "", "" }, + "x", " ", 1, { "x" }, + "xy", " ", 1, { "xy" }, + "x y", " ", 2, { "x", "y" }, + "abc def g ", " ", 4, { "abc", "def", "g", "" }, + " a bcd", " ", 3, { "", "a", "bcd" }, + "a b c d e f", " ", 6, { "a", "b", "c", "d", "e f" }, + " a b c d ", " ", 6, { "", "a", "b", "c", "d " }, + + "", "", 0, { "" }, + " ", "", 0, { "" }, + "x", "", 1, { "x" }, + "xy", "", 1, { "xy" }, + "x y", "", 2, { "x", "y" }, + "abc def g ", "", 3, { "abc", "def", "g" }, + "\t a bcd", "", 2, { "a", "bcd" }, + " a \tb\t c ", "", 3, { "a", "b", "c" }, + "a b c d e ", "", 5, { "a", "b", "c", "d", "e" }, + "a b\tc d e f", "", 6, { "a", "b", "c", "d", "e f" }, + " a b c d e f ", "", 6, { "a", "b", "c", "d", "e f " }, + + NULL, NULL, 0, { NULL }, +}; + +regress() +{ + char buf[512]; + register int n; + char *fields[RNF+1]; + register int nf; + register int i; + register int printit; + register char *f; + + for (n = 0; tests[n].str != NULL; n++) { + (void) strcpy(buf, tests[n].str); + fields[RNF] = NULL; + nf = split(buf, fields, RNF, tests[n].seps); + printit = 0; + if (nf != tests[n].nf) { + printf("split `%s' by `%s' gave %d fields, not %d\n", + tests[n].str, tests[n].seps, nf, tests[n].nf); + printit = 1; + } else if (fields[RNF] != NULL) { + printf("split() went beyond array end\n"); + printit = 1; + } else { + for (i = 0; i < nf && i < RNF; i++) { + f = fields[i]; + if (f == NULL) + f = "(NULL)"; + if (strcmp(f, tests[n].fi[i]) != 0) { + printf("split `%s' by `%s', field %d is `%s', not `%s'\n", + tests[n].str, tests[n].seps, + i, fields[i], tests[n].fi[i]); + printit = 1; + } + } + } + if (printit) + print(nf, RNF, fields); + } +} +#endif diff --git a/src/regex/tclUniData.c b/src/regex/tclUniData.c deleted file mode 100644 index 9f0c6e05ae..0000000000 --- a/src/regex/tclUniData.c +++ /dev/null @@ -1,904 +0,0 @@ -/* - * tclUniData.c -- - * - * Declarations of Unicode character information tables. This file is - * automatically generated by the tools/uniParse.tcl script. Do not - * modify this file by hand. - * - * Copyright (c) 1998 by Scriptics Corporation. - * All rights reserved. - * - * RCS: @(#) $Id$ - */ - -/* - * A 16-bit Unicode character is split into two parts in order to index - * into the following tables. The lower OFFSET_BITS comprise an offset - * into a page of characters. The upper bits comprise the page number. - */ - -#define OFFSET_BITS 5 - -/* - * The pageMap is indexed by page number and returns an alternate page number - * that identifies a unique page of characters. Many Unicode characters map - * to the same alternate page number. - */ - -static unsigned char pageMap[] = { - 0, 1, 2, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 7, 15, 16, 17, - 18, 19, 20, 21, 22, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 7, 32, - 7, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 47, - 48, 49, 50, 51, 52, 35, 47, 53, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 58, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 80, 81, - 84, 85, 80, 86, 87, 88, 89, 90, 91, 92, 35, 93, 94, 95, 35, 96, 97, - 98, 99, 100, 101, 102, 35, 47, 103, 104, 35, 35, 105, 106, 107, 47, - 47, 108, 47, 47, 109, 47, 110, 111, 47, 112, 47, 113, 114, 115, 116, - 114, 47, 117, 118, 35, 47, 47, 119, 90, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 120, 121, 47, 47, 122, - 35, 35, 35, 35, 47, 123, 124, 125, 126, 47, 127, 128, 47, 129, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 7, 7, 7, 7, 130, 7, 7, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 156, 156, 156, 156, 156, 156, - 157, 158, 159, 160, 161, 162, 35, 35, 35, 160, 163, 164, 165, 166, - 167, 168, 169, 160, 160, 160, 160, 170, 171, 172, 173, 174, 160, 160, - 175, 35, 35, 35, 35, 176, 177, 178, 179, 180, 181, 35, 35, 160, 160, - 160, 160, 160, 160, 160, 160, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 182, 160, 160, 155, 160, 160, 160, 160, 160, 160, 170, 183, 184, 185, - 90, 47, 186, 90, 47, 187, 188, 189, 47, 47, 190, 128, 35, 35, 191, - 192, 193, 194, 192, 195, 196, 197, 160, 160, 160, 198, 160, 160, 199, - 197, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 200, 35, 35, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 201, 35, 35, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 202, 203, 204, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 205, 35, 35, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 47, 47, 47, 47, 47, 47, 47, 47, 47, 208, 35, 35, 35, 35, - 35, 35, 209, 210, 211, 47, 47, 212, 213, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 214, 215, 47, 216, 47, 217, 218, 35, 219, 220, 221, 47, - 47, 47, 222, 223, 2, 224, 225, 226, 227, 228, 229, 230, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 231, 35, 232, 233, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 208, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 47, 234, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 235, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 236, 207, 207, 207, 207, 207, 207, 207, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35 -}; - -/* - * The groupMap is indexed by combining the alternate page number with - * the page offset and returns a group number that identifies a unique - * set of character attributes. - */ - -static unsigned char groupMap[] = { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 3, 3, 3, 5, 6, 3, 7, 3, 8, - 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 3, 7, 7, 7, 3, 3, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 5, 3, 6, 11, 12, 11, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 5, 7, 6, 7, 1, 2, 3, 4, 4, 4, 4, 14, 14, 11, 14, 15, 16, - 7, 8, 14, 11, 14, 7, 17, 17, 11, 18, 14, 3, 11, 17, 15, 19, 17, 17, - 17, 3, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 10, 10, 10, 15, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 7, 13, 13, 13, 13, 13, 13, 13, 20, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 23, 24, 21, 22, 21, - 22, 21, 22, 15, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, - 22, 21, 22, 15, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 25, - 21, 22, 21, 22, 21, 22, 26, 15, 27, 21, 22, 21, 22, 28, 21, 22, 29, - 29, 21, 22, 15, 30, 31, 32, 21, 22, 29, 33, 34, 35, 36, 21, 22, 15, - 15, 35, 37, 15, 38, 21, 22, 21, 22, 21, 22, 39, 21, 22, 39, 15, 15, - 21, 22, 39, 21, 22, 40, 40, 21, 22, 21, 22, 41, 21, 22, 15, 42, 21, - 22, 15, 43, 42, 42, 42, 42, 44, 45, 46, 44, 45, 46, 44, 45, 46, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 47, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 15, 44, 45, 46, 21, 22, 48, 49, 21, 22, 21, 22, 21, 22, 21, 22, 0, - 0, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 50, 51, 15, 52, 52, 15, 53, 15, - 54, 15, 15, 15, 15, 52, 15, 15, 55, 15, 15, 15, 15, 56, 57, 15, 15, - 15, 15, 15, 57, 15, 15, 58, 15, 15, 59, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 60, 15, 15, 60, 15, 15, 15, 15, 60, 15, 61, 61, 15, 15, - 15, 15, 15, 15, 62, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 11, 11, 63, 63, 63, 63, 63, 63, 63, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 63, 63, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 63, 63, 63, 63, - 63, 11, 11, 11, 11, 11, 11, 11, 11, 11, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, - 0, 0, 0, 0, 63, 0, 0, 0, 3, 0, 0, 0, 0, 0, 11, 11, 66, 3, 67, 67, 67, - 0, 68, 0, 69, 69, 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 70, 71, - 71, 71, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 72, 13, 13, 13, 13, 13, 13, 13, 13, 13, 73, 74, 74, 0, - 75, 76, 77, 77, 77, 78, 79, 15, 0, 0, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 80, 81, 47, - 15, 82, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 21, 22, 14, 64, 64, 64, 64, 0, 85, 85, 0, 0, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, - 22, 77, 21, 22, 21, 22, 0, 0, 21, 22, 0, 0, 21, 22, 0, 0, 0, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 0, 0, 63, 3, 3, 3, 3, 3, 3, 0, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 15, 0, 3, 8, 0, 0, - 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 3, 64, 3, 64, - 64, 3, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 0, 0, 0, 0, 0, 42, 42, 42, 3, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 0, 0, 0, 0, 0, 63, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 3, 3, 3, 0, 0, 64, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 3, 42, 64, - 64, 64, 64, 64, 64, 64, 85, 85, 64, 64, 64, 64, 64, 64, 63, 63, 64, - 64, 14, 64, 64, 64, 64, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 42, 42, - 42, 14, 14, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 88, 42, - 64, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 64, 89, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 0, 0, 64, 42, 89, 89, 89, 64, 64, 64, 64, 64, 64, - 64, 64, 89, 89, 89, 89, 64, 0, 0, 42, 64, 64, 64, 64, 0, 0, 0, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 64, 64, 3, 3, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 89, 89, 0, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 42, 42, 0, 0, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 0, 42, 0, 0, 0, 42, - 42, 42, 42, 0, 0, 64, 0, 89, 89, 89, 64, 64, 64, 64, 0, 0, 89, 89, - 0, 0, 89, 89, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 42, 42, - 0, 42, 42, 42, 64, 64, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 42, 42, - 4, 4, 17, 17, 17, 17, 17, 17, 14, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 42, - 42, 42, 42, 42, 42, 0, 0, 0, 0, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, - 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 0, 42, 42, 0, 42, 42, 0, 0, - 64, 0, 89, 89, 89, 64, 64, 0, 0, 0, 0, 64, 64, 0, 0, 64, 64, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 0, 42, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 64, 64, 42, 42, 42, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 89, 0, 42, 42, 42, 42, 42, 42, 42, - 0, 42, 0, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, - 42, 42, 0, 42, 42, 0, 42, 42, 42, 42, 42, 0, 0, 64, 42, 89, 89, 89, - 64, 64, 64, 64, 64, 0, 64, 64, 89, 0, 89, 89, 64, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 0, 42, - 42, 0, 0, 42, 42, 42, 42, 0, 0, 64, 42, 89, 64, 89, 64, 64, 64, 0, - 0, 0, 89, 89, 0, 0, 89, 89, 64, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89, 0, - 0, 0, 0, 42, 42, 0, 42, 42, 42, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89, - 0, 42, 42, 42, 42, 42, 42, 0, 0, 0, 42, 42, 42, 0, 42, 42, 42, 42, - 0, 0, 0, 42, 42, 0, 42, 0, 42, 42, 0, 0, 0, 42, 42, 0, 0, 0, 42, 42, - 42, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 0, 0, 0, - 0, 89, 89, 64, 89, 89, 0, 0, 0, 89, 89, 89, 0, 89, 89, 89, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 89, 89, 0, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, - 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 0, 42, 42, 42, 42, 42, 0, 0, 0, 0, 64, 64, 64, 89, 89, - 89, 89, 0, 64, 64, 64, 0, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 64, - 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 89, 0, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 0, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, - 42, 42, 0, 0, 0, 0, 89, 64, 89, 89, 89, 89, 89, 0, 64, 89, 89, 0, 89, - 89, 64, 64, 0, 0, 0, 0, 0, 0, 0, 89, 89, 0, 0, 0, 0, 0, 0, 0, 42, 0, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 89, 89, 89, 64, 64, - 64, 0, 0, 89, 89, 89, 0, 89, 89, 89, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 0, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 0, 0, - 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 64, 0, 0, 0, 0, 89, 89, 89, 64, - 64, 64, 0, 64, 0, 89, 89, 89, 89, 89, 89, 89, 89, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 64, 42, 42, 64, 64, 64, 64, 64, 64, 64, 0, 0, 0, 0, 4, 42, 42, - 42, 42, 42, 42, 63, 64, 64, 64, 64, 64, 64, 64, 64, 3, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 3, 3, 0, 0, 0, 0, 0, 42, 42, 0, 42, 0, 0, 42, 42, - 0, 42, 0, 0, 42, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 0, 42, 42, 42, 42, - 42, 42, 42, 0, 42, 42, 42, 0, 42, 0, 42, 0, 0, 42, 42, 0, 42, 42, 42, - 42, 64, 42, 42, 64, 64, 64, 64, 64, 64, 0, 64, 64, 42, 0, 0, 42, 42, - 42, 42, 42, 0, 63, 0, 64, 64, 64, 64, 64, 64, 0, 0, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 0, 0, 42, 42, 0, 0, 42, 14, 14, 14, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 14, 14, 14, 14, 14, 64, 64, 14, 14, 14, - 14, 14, 14, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 14, 64, 14, 64, 14, 64, 5, 6, 5, 6, 89, 89, 42, 42, 42, - 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 89, 64, 64, 64, 64, 64, 3, 64, 64, 42, - 42, 42, 42, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 0, 14, 14, 14, 14, 14, 14, 14, 14, 64, 14, 14, 14, 14, 14, 14, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 0, 42, - 42, 42, 42, 42, 0, 42, 42, 0, 89, 64, 64, 64, 64, 89, 64, 0, 0, 0, - 64, 64, 89, 64, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, - 3, 3, 3, 3, 3, 42, 42, 42, 42, 42, 42, 89, 89, 64, 64, 0, 0, 0, 0, - 0, 0, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, - 0, 0, 0, 0, 42, 42, 42, 42, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 42, 42, 42, - 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 0, 42, 0, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, 42, - 0, 42, 0, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, 42, 0, 42, - 0, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 0, 42, 0, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, - 42, 0, 42, 0, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, 42, 0, - 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, - 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 3, 3, 42, 42, 42, 42, 42, - 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 5, 6, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 3, 3, 3, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 89, 89, 89, 64, 64, 64, 64, 64, 64, 64, 89, 89, 89, 89, 89, - 89, 89, 89, 64, 89, 89, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 3, 3, 3, 3, 3, 3, 3, 4, 3, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, - 3, 3, 3, 3, 8, 3, 3, 3, 3, 88, 88, 88, 88, 0, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 0, 0, 0, 0, 0, 0, 42, 42, 42, 63, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 21, 22, 21, 22, 21, - 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 15, 15, - 15, 15, 15, 91, 0, 0, 0, 0, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, - 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 0, - 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, - 93, 93, 93, 92, 92, 92, 92, 92, 92, 0, 0, 93, 93, 93, 93, 93, 93, 0, - 0, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, - 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 92, - 92, 92, 92, 92, 92, 0, 0, 93, 93, 93, 93, 93, 93, 0, 0, 15, 92, 15, - 92, 15, 92, 15, 92, 0, 93, 0, 93, 0, 93, 0, 93, 92, 92, 92, 92, 92, - 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 94, 94, 95, 95, 95, 95, - 96, 96, 97, 97, 98, 98, 99, 99, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, - 100, 100, 100, 100, 100, 100, 100, 100, 92, 92, 92, 92, 92, 92, 92, - 92, 100, 100, 100, 100, 100, 100, 100, 100, 92, 92, 92, 92, 92, 92, - 92, 92, 100, 100, 100, 100, 100, 100, 100, 100, 92, 92, 15, 101, 15, - 0, 15, 15, 93, 93, 102, 102, 103, 11, 104, 11, 11, 11, 15, 101, 15, - 0, 15, 15, 105, 105, 105, 105, 103, 11, 11, 11, 92, 92, 15, 15, 0, - 0, 15, 15, 93, 93, 106, 106, 0, 11, 11, 11, 92, 92, 15, 15, 15, 107, - 15, 15, 93, 93, 108, 108, 109, 11, 11, 11, 0, 0, 15, 101, 15, 0, 15, - 15, 110, 110, 111, 111, 103, 11, 11, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 88, 88, 88, 88, 8, 8, 8, 8, 8, 8, 3, 3, 16, 19, 5, 16, 16, - 19, 5, 16, 3, 3, 3, 3, 3, 3, 3, 3, 112, 113, 88, 88, 88, 88, 88, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 16, 19, 3, 3, 3, 3, 12, 12, 3, 3, 3, 7, - 5, 6, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 88, 88, 88, 17, - 0, 0, 0, 17, 17, 17, 17, 17, 17, 7, 7, 7, 5, 6, 15, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 7, 7, 7, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 85, 85, 85, 85, 64, 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 77, - 14, 14, 14, 14, 77, 14, 14, 15, 77, 77, 77, 15, 15, 77, 77, 77, 15, - 14, 77, 14, 14, 14, 77, 77, 77, 77, 77, 14, 14, 14, 14, 14, 14, 77, - 14, 114, 14, 77, 14, 115, 116, 77, 77, 14, 15, 77, 77, 14, 77, 15, - 42, 42, 42, 42, 15, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 90, 90, 90, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 7, 7, 14, 14, - 14, 14, 7, 14, 14, 7, 14, 14, 7, 14, 14, 14, 14, 14, 14, 14, 7, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7, 7, 14, 14, 7, - 14, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 7, 7, 7, 7, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 7, 7, 14, 14, 14, 14, 14, 14, 14, 5, 6, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 7, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 14, 14, 14, 0, 14, 14, 14, 14, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 0, 14, 0, 14, 14, 14, 14, 0, 0, 0, 14, 0, 14, 14, - 14, 14, 14, 14, 14, 0, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 14, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 0, 0, 0, 2, 3, 3, 3, 14, 63, 42, 90, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, - 14, 14, 5, 6, 5, 6, 5, 6, 5, 6, 8, 5, 6, 6, 14, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 64, 64, 64, 64, 64, 64, 8, 63, 63, 63, 63, 63, 14, - 14, 90, 90, 90, 0, 0, 0, 14, 14, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 64, 64, - 11, 11, 63, 63, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 12, 63, - 63, 63, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 14, 14, 17, 17, 17, - 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, - 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 0, - 0, 0, 0, 0, 42, 64, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 7, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 42, 42, 42, 42, - 42, 0, 42, 0, 42, 42, 0, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 64, 64, 64, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 8, 8, 12, 12, 5, 6, 5, 6, 5, - 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 0, 0, 3, 3, 3, 3, 12, 12, 12, - 3, 3, 3, 0, 3, 3, 3, 3, 8, 5, 6, 5, 6, 5, 6, 3, 3, 3, 7, 8, 7, 7, 7, - 0, 3, 4, 3, 3, 0, 0, 0, 0, 42, 42, 42, 0, 42, 0, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 0, 0, 88, 0, 3, 3, 3, 4, 3, 3, 3, 5, 6, 3, 7, 3, 8, 3, 3, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 3, 3, 7, 7, 7, 3, 11, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 5, 7, 6, 7, 0, 0, 3, 5, 6, 3, 12, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 63, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 63, - 63, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, - 42, 42, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, 0, 0, 42, 42, - 42, 42, 42, 42, 0, 0, 42, 42, 42, 0, 0, 0, 4, 4, 7, 11, 14, 4, 4, 0, - 14, 7, 7, 7, 7, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 14, - 14, 42, 17, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, - 126, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 89, 64, 14, 14, 14, - 14, 14, 0, 0, 77, 77, 15, 15, 77, 15, 15, 77, 77, 15, 77, 77, 15, 77, - 77, 15, 15, 77, 15, 15, 77, 77, 15, 77, 77, 15, 77, 77, 15, 15, 77, - 15, 15, 77, 77, 15, 77, 77, 15, 77, 77, 15, 15, 77, 77, 15, 15, 77, - 15, 15, 77, 77, 15, 15, 77, 15, 15, 77, 77, 15, 15, 9, 9, 9, 42, 42, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 0, 88, 88, 88, 88, 88, 88, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122 -}; - -/* - * Each group represents a unique set of character attributes. The attributes - * are encoded into a 32-bit value as follows: - * - * Bits 0-4 Character category: see the constants listed below. - * - * Bits 5-7 Case delta type: 000 = identity - * 010 = add delta for lower - * 011 = add delta for lower, add 1 for title - * 100 = sutract delta for title/upper - * 101 = sub delta for upper, sub 1 for title - * 110 = sub delta for upper, add delta for lower - * - * Bits 8-21 Reserved for future use. - * - * Bits 22-31 Case delta: delta for case conversions. This should be the - * highest field so we can easily sign extend. - */ - -static int groups[] = { - 0, 15, 12, 25, 27, 21, 22, 26, 20, 9, 134217793, 28, 19, 134217858, - 29, 2, 23, 11, 1178599554, 24, -507510654, 4194369, 4194434, -834666431, - 973078658, -507510719, 1258291330, 880803905, 864026689, 859832385, - 331350081, 847249473, 851443777, 868220993, -406847358, 884998209, - 876609601, 893386817, 897581121, 914358337, 910164033, 918552641, - 5, -234880894, 8388705, 4194499, 8388770, 331350146, -406847423, - -234880959, 880803970, 864026754, 859832450, 847249538, 851443842, - 868221058, 876609666, 884998274, 893386882, 897581186, 914358402, - 910164098, 918552706, 4, 6, -352321402, 159383617, 155189313, - 268435521, 264241217, 159383682, 155189378, 130023554, 268435586, - 264241282, 260046978, 239075458, 1, 197132418, 226492546, 360710274, - 335544450, -251658175, 402653314, 335544385, 7, 201326657, 201326722, - 16, 8, 10, 247464066, -33554302, -33554367, -310378366, -360710014, - -419430270, -536870782, -469761918, -528482174, -33554365, -37748606, - -310378431, -37748669, 155189378, -360710079, -419430335, -29359998, - -469761983, -29360063, -536870847, -528482239, 13, 14, -1463812031, - -801111999, -293601215, 67108938, 67109002, 109051997, 109052061, - 18, 17, 8388673, 12582977, 8388738, 12583042 -}; - -/* - * The following constants are used to determine the category of a - * Unicode character. - */ - -#define UNICODE_CATEGORY_MASK 0X1F - -enum { - UNASSIGNED, - UPPERCASE_LETTER, - LOWERCASE_LETTER, - TITLECASE_LETTER, - MODIFIER_LETTER, - OTHER_LETTER, - NON_SPACING_MARK, - ENCLOSING_MARK, - COMBINING_SPACING_MARK, - DECIMAL_DIGIT_NUMBER, - LETTER_NUMBER, - OTHER_NUMBER, - SPACE_SEPARATOR, - LINE_SEPARATOR, - PARAGRAPH_SEPARATOR, - CONTROL, - FORMAT, - PRIVATE_USE, - SURROGATE, - CONNECTOR_PUNCTUATION, - DASH_PUNCTUATION, - OPEN_PUNCTUATION, - CLOSE_PUNCTUATION, - INITIAL_QUOTE_PUNCTUATION, - FINAL_QUOTE_PUNCTUATION, - OTHER_PUNCTUATION, - MATH_SYMBOL, - CURRENCY_SYMBOL, - MODIFIER_SYMBOL, - OTHER_SYMBOL -}; - -/* - * The following macros extract the fields of the character info. The - * GetDelta() macro is complicated because we can't rely on the C compiler - * to do sign extension on right shifts. - */ - -#define GetCaseType(info) (((info) & 0xE0) >> 5) -#define GetCategory(info) ((info) & 0x1F) -#define GetDelta(info) (((info) > 0) ? ((info) >> 22) : (~(~((info)) >> 22))) - -/* - * This macro extracts the information about a character from the - * Unicode character tables. - */ - -#define GetUniCharInfo(ch) (groups[groupMap[(pageMap[(((int)(ch)) & 0xffff) >> OFFSET_BITS] << OFFSET_BITS) | ((ch) & ((1 << OFFSET_BITS)-1))]]) - diff --git a/src/regex/utils.h b/src/regex/utils.h new file mode 100644 index 0000000000..1a997ac8fc --- /dev/null +++ b/src/regex/utils.h @@ -0,0 +1,22 @@ +/* utility definitions */ +#ifdef _POSIX2_RE_DUP_MAX +#define DUPMAX _POSIX2_RE_DUP_MAX +#else +#define DUPMAX 255 +#endif +#define INFINITY (DUPMAX + 1) +#define NC (CHAR_MAX - CHAR_MIN + 1) +typedef unsigned char uch; + +/* switch off assertions (if not already off) if no REDEBUG */ +#ifndef REDEBUG +#ifndef NDEBUG +#define NDEBUG /* no assertions please */ +#endif +#endif +#include + +/* for old systems with bcopy() but no memmove() */ +#ifdef USEBCOPY +#define memmove(d, s, c) bcopy(s, d, c) +#endif diff --git a/src/stc/Makefile.in b/src/stc/Makefile.in index 01b2877cb8..042da17f87 100644 --- a/src/stc/Makefile.in +++ b/src/stc/Makefile.in @@ -9,13 +9,13 @@ top_srcdir = @top_srcdir@/.. top_builddir = ../../.. scintilla_dir = $(top_srcdir)/contrib/src/stc/scintilla -libsrc_dir = contrib/src/stc@PATH_IFS@$(scintilla_dir)/src +libsrc_dir = contrib/src/stc/scintilla/src:$(top_srcdir)/contrib/src/stc -TARGET_LIBNAME=libstc +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_stc-@WX_RELEASE@ -LIBVERSION_CURRENT=1 -LIBVERSION_REVISION=0 -LIBVERSION_AGE=0 +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=stc diff --git a/src/stc/PlatWX.cpp b/src/stc/PlatWX.cpp index 8abff4b97d..d80aef709f 100644 --- a/src/stc/PlatWX.cpp +++ b/src/stc/PlatWX.cpp @@ -430,9 +430,11 @@ int SurfaceImpl::WidthText(Font &font, const char *s, int len) { void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positions) { + wxString str = stc2wx(s, len); SetFont(font); +#ifndef __WXMAC__ // Calculate the position of each character based on the widths of // the previous characters int* tpos = new int[len]; @@ -444,9 +446,26 @@ void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positio totalWidth += w; tpos[i] = totalWidth; } +#else + // Instead of a running total, remeasure from the begining of the + // text for each character's position. This is because with AA fonts + // on OS X widths can be fractions of pixels wide when more than one + // are drawn together, so the sum of all character widths is not necessariy + // (and probably not) the same as the whole string width. + int* tpos = new int[len]; + size_t i; + for (i=0; iGetTextExtent(str.Left(i+1), &w, &h); + tpos[i] = w; + } +#endif + #if wxUSE_UNICODE // Map the widths for UCS-2 characters back to the UTF-8 input string + // NOTE: I don't think this is right for when sizeof(wxChar) > 2, ie wxGTK2 + // so figure it out and fix it! i = 0; size_t ui = 0; while (i < len) { @@ -804,7 +823,7 @@ void ListBox::Clear() { } void ListBox::Append(char *s) { - GETLB(id)->Append(s); + GETLB(id)->Append(stc2wx(s)); } int ListBox::Length() { @@ -812,12 +831,17 @@ int ListBox::Length() { } void ListBox::Select(int n) { - GETLB(id)->SetSelection(n); + bool select = TRUE; + if (n == -1) { + n = 0; + select = FALSE; + } + GETLB(id)->SetSelection(n, select); #ifdef __WXGTK__ if (n > 4) n = n - 4; else - n = 1; + n = 0; GETLB(id)->SetFirstItem(n); #endif } diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp index f1c0e43a0a..78a4da2099 100644 --- a/src/stc/ScintillaWX.cpp +++ b/src/stc/ScintillaWX.cpp @@ -223,7 +223,7 @@ void ScintillaWX::SetTicking(bool on) { void ScintillaWX::SetMouseCapture(bool on) { if (on && !capturedMouse) stc->CaptureMouse(); - else if (!on && capturedMouse) + else if (!on && capturedMouse && stc->HasCapture()) stc->ReleaseMouse(); capturedMouse = on; } @@ -338,7 +338,7 @@ void ScintillaWX::Copy() { SelectionText st; CopySelectionRange(&st); if (wxTheClipboard->Open()) { - wxTheClipboard->UsePrimarySelection(); + wxTheClipboard->UsePrimarySelection(FALSE); wxString text = stc2wx(st.s, st.len); wxTheClipboard->SetData(new wxTextDataObject(text)); wxTheClipboard->Close(); @@ -355,7 +355,7 @@ void ScintillaWX::Paste() { bool gotData = FALSE; if (wxTheClipboard->Open()) { - wxTheClipboard->UsePrimarySelection(); + wxTheClipboard->UsePrimarySelection(FALSE); gotData = wxTheClipboard->GetData(data); wxTheClipboard->Close(); } @@ -380,7 +380,7 @@ bool ScintillaWX::CanPaste() { wxTheClipboard->Open(); if (wxTheClipboard->IsOpened()) { - wxTheClipboard->UsePrimarySelection(); + wxTheClipboard->UsePrimarySelection(FALSE); canPaste = wxTheClipboard->IsSupported(wxUSE_UNICODE ? wxDF_UNICODETEXT : wxDF_TEXT); if (didOpen) wxTheClipboard->Close(); @@ -405,8 +405,28 @@ void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) { } +// This is called by the Editor base class whenever something is selected void ScintillaWX::ClaimSelection() { - +#if 0 + // Until wxGTK is able to support using both the primary selection and the + // clipboard at the same time I think it causes more problems than it is + // worth to implement this method. Selecting text should not clear the + // clipboard. --Robin +#ifdef __WXGTK__ + // Put the selected text in the PRIMARY selection + if (currentPos != anchor) { + SelectionText st; + CopySelectionRange(&st); + if (wxTheClipboard->Open()) { + wxTheClipboard->UsePrimarySelection(TRUE); + wxString text = stc2wx(st.s, st.len); + wxTheClipboard->SetData(new wxTextDataObject(text)); + wxTheClipboard->UsePrimarySelection(FALSE); + wxTheClipboard->Close(); + } + } +#endif +#endif } @@ -415,13 +435,59 @@ long ScintillaWX::DefWndProc(unsigned int /*iMessage*/, unsigned long /*wParam*/ } long ScintillaWX::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) { -// switch (iMessage) { -// case EM_CANPASTE: -// return CanPaste(); -// default: - return ScintillaBase::WndProc(iMessage, wParam, lParam); -// } -// return 0; + switch (iMessage) { + case SCI_CALLTIPSHOW: { + // NOTE: This is copied here from scintilla/src/ScintillaBase.cxx + // because of the little tweak that needs done below. When updating + // new versions double check that this is still needed, and that any + // new code there is copied here too. + AutoCompleteCancel(); + if (!ct.wCallTip.Created()) { + Point pt = LocationFromPosition(wParam); + pt.y += vs.lineHeight; + PRectangle rc = ct.CallTipStart(currentPos, pt, + reinterpret_cast(lParam), + vs.styles[STYLE_DEFAULT].fontName, + vs.styles[STYLE_DEFAULT].sizeZoomed, + IsUnicodeMode()); + // If the call-tip window would be out of the client + // space, adjust so it displays above the text. + PRectangle rcClient = GetClientRectangle(); + if (rc.bottom > rcClient.bottom) { +#ifdef __WXGTK__ + int offset = int(vs.lineHeight * 1.25) + rc.Height(); +#else + int offset = vs.lineHeight + rc.Height(); +#endif + rc.top -= offset; + rc.bottom -= offset; + } + // Now display the window. + CreateCallTipWindow(rc); + ct.wCallTip.SetPositionRelative(rc, wMain); + ct.wCallTip.Show(); + } + break; + } + + case SCI_SETCARETWIDTH: + // NOTE: Allows a caet width of zero. This one has been added to + // Scintilla CVS so it can be removed from here when we update to + // version 1.50. + if (wParam <= 0) + vs.caretWidth = 0; + else if (wParam >= 3) + vs.caretWidth = 3; + else + vs.caretWidth = wParam; + InvalidateStyleRedraw(); + break; + + + default: + return ScintillaBase::WndProc(iMessage, wParam, lParam); + } + return 0; } @@ -513,6 +579,8 @@ void ScintillaWX::DoMouseWheel(int rotation, int delta, } } else { // otherwise just scroll the window + if ( !delta ) + delta = 120; wheelRotation += rotation; lines = wheelRotation / delta; wheelRotation -= lines * delta; @@ -547,23 +615,63 @@ void ScintillaWX::DoSysColourChange() { InvalidateStyleData(); } -void ScintillaWX::DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) { +void ScintillaWX::DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) { ButtonDown(pt, curTime, shift, ctrl, alt); } -void ScintillaWX::DoButtonUp(Point pt, unsigned int curTime, bool ctrl) { +void ScintillaWX::DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl) { ButtonUp(pt, curTime, ctrl); } -void ScintillaWX::DoButtonMove(Point pt) { +void ScintillaWX::DoLeftButtonMove(Point pt) { ButtonMove(pt); } +void ScintillaWX::DoMiddleButtonUp(Point pt) { +#ifdef __WXGTK__ + // Set the current position to the mouse click point and + // then paste in the PRIMARY selection, if any. wxGTK only. + int newPos = PositionFromLocation(pt); + MovePositionTo(newPos, 0, 1); + + pdoc->BeginUndoAction(); + wxTextDataObject data; + bool gotData = FALSE; + if (wxTheClipboard->Open()) { + wxTheClipboard->UsePrimarySelection(TRUE); + gotData = wxTheClipboard->GetData(data); + wxTheClipboard->UsePrimarySelection(FALSE); + wxTheClipboard->Close(); + } + if (gotData) { + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(data.GetText()); + int len = strlen(buf); + pdoc->InsertString(currentPos, buf, len); + SetEmptySelection(currentPos + len); + } + pdoc->EndUndoAction(); + NotifyChange(); + Redraw(); + + ShowCaretAtCurrentPosition(); + EnsureCaretVisible(); +#endif +} + void ScintillaWX::DoAddChar(int key) { +#if wxUSE_UNICODE + wxChar wszChars[2]; + wszChars[0] = key; + wszChars[1] = 0; + wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(wszChars); + AddCharUTF((char*)buf.data(), strlen(buf)); +#else AddChar(key); +#endif } + int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* consumed) { #if defined(__WXGTK__) || defined(__WXMAC__) // Ctrl chars (A-Z) end up with the wrong keycode on wxGTK... @@ -578,7 +686,9 @@ int ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* cons case WXK_RIGHT: key = SCK_RIGHT; break; case WXK_HOME: key = SCK_HOME; break; case WXK_END: key = SCK_END; break; + case WXK_PAGEUP: // fall through case WXK_PRIOR: key = SCK_PRIOR; break; + case WXK_PAGEDOWN: // fall through case WXK_NEXT: key = SCK_NEXT; break; case WXK_DELETE: key = SCK_DELETE; break; case WXK_INSERT: key = SCK_INSERT; break; diff --git a/src/stc/ScintillaWX.h b/src/stc/ScintillaWX.h index 5f87911952..d904fc3c18 100644 --- a/src/stc/ScintillaWX.h +++ b/src/stc/ScintillaWX.h @@ -122,9 +122,10 @@ public: void DoLoseFocus(); void DoGainFocus(); void DoSysColourChange(); - void DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt); - void DoButtonUp(Point pt, unsigned int curTime, bool ctrl); - void DoButtonMove(Point pt); + void DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt); + void DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl); + void DoLeftButtonMove(Point pt); + void DoMiddleButtonUp(Point pt); void DoMouseWheel(int rotation, int delta, int linesPerAction, int ctrlDown, bool isPageScroll); void DoAddChar(int key); int DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* consumed); diff --git a/src/stc/StcVC.dsp b/src/stc/StcVC.dsp index 97dc8f7f9f..a6c2c4ce95 100644 --- a/src/stc/StcVC.dsp +++ b/src/stc/StcVC.dsp @@ -1,34 +1,35 @@ -# Microsoft Developer Studio Project File - Name="StcVC" - Package Owner=<4> +# Microsoft Developer Studio Project File - Name="stcVC" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=StcVC - Win32 Debug +CFG=stcVC - Win32 Release DLL !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 "StcVC.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 NMAKE /f "StcVC.mak" CFG="StcVC - Win32 Debug" -!MESSAGE +!MESSAGE +!MESSAGE NMAKE /f "StcVC.mak" CFG="stcVC - Win32 Release DLL" +!MESSAGE !MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "StcVC - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "StcVC - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE +!MESSAGE +!MESSAGE "stcVC - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "stcVC - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "stcVC - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "stcVC - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe -!IF "$(CFG)" == "StcVC - Win32 Release" +!IF "$(CFG)" == "stcVC - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -40,9 +41,11 @@ RSC=rc.exe # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" +LINK32=link.exe +CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /I "../../../lib/msw" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /FD /c -# SUBTRACT CPP /YX +# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/msw" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__HACK_MY_MSDEV40__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +RSC=rc.exe # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 BSC32=bscmake.exe @@ -52,7 +55,7 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\..\..\lib\stc.lib" -!ELSEIF "$(CFG)" == "StcVC - Win32 Debug" +!ELSEIF "$(CFG)" == "stcVC - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -64,9 +67,11 @@ LIB32=link.exe -lib # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" +LINK32=link.exe +CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../../include" /I "../../include" /I "scintilla/include" /I "scintilla/src" /I "../../../lib/mswd" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /FD /c -# SUBTRACT CPP /YX +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +RSC=rc.exe # ADD BASE RSC /l 0x809 # ADD RSC /l 0x809 BSC32=bscmake.exe @@ -76,15 +81,85 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\..\..\lib\stcd.lib" -!ENDIF +!ELSEIF "$(CFG)" == "stcVC - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_DLL" +# PROP BASE Intermediate_Dir "Debug_DLL" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\lib" +# PROP Intermediate_Dir "Debug_DLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +# ADD LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXMAKING_STC_DLL" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +# SUBTRACT CPP /u +MTL=midl.exe +RSC=rc.exe +# ADD BASE RSC /l 0x809 +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /machine:IX86 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw250d.lib /nologo /version:1.0 /dll /debug /machine:IX86 /out:"../../../lib/stcdlld.dll" /libpath:"../../../lib" +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "stcVC - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "stcVC___Win32_Release_DLL" +# PROP BASE Intermediate_Dir "stcVC___Win32_Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\lib" +# PROP Intermediate_Dir "Release_DLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +# ADD LIB32 /nologo /out:"..\..\..\lib\stcd.lib" +CPP=cl.exe +# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /I "../../../lib/mswdlld" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /D "WXBUILD_STC_DLL" /YX /FD /c +# SUBTRACT BASE CPP /u +# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Ob2 /I "../../../include" /I "../../include" /I "../../../lib/mswdll" /I "./scintilla/include/" /I "./scintilla/src" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D "WXUSINGDLL" /D "WXMAKING_STC_DLL" /D "SCI_LEXER" /D "LINK_LEXERS" /D "__WX__" /YX /FD /c +# SUBTRACT CPP /u +MTL=midl.exe +RSC=rc.exe +# ADD BASE RSC /l 0x809 +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw250d.lib /nologo /version:1.0 /dll /debug /machine:IX86 /out:"../../../lib/stcdlld.dll" /libpath:"../../../lib" +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib wxmsw250.lib /nologo /version:1.0 /dll /machine:IX86 /out:"../../../lib/stcdll.dll" /libpath:"../../../lib" +# SUBTRACT LINK32 /pdb:none /incremental:no /debug + +!ENDIF # Begin Target -# Name "StcVC - Win32 Release" -# Name "StcVC - Win32 Debug" -# Begin Group "Stc" +# Name "stcVC - Win32 Release" +# Name "stcVC - Win32 Debug" +# Name "stcVC - Win32 Debug DLL" +# Name "stcVC - Win32 Release DLL" +# Begin Group "wxStyledTextCtrl Src" -# PROP Default_Filter "" +# PROP Default_Filter "*.cpp" # Begin Source File SOURCE=.\PlatWX.cpp @@ -95,11 +170,23 @@ SOURCE=.\ScintillaWX.cpp # End Source File # Begin Source File +SOURCE=.\stc.cpp +# End Source File +# End Group +# Begin Group "wxStyledTextCtrl Headers" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\PlatWX.h +# End Source File +# Begin Source File + SOURCE=.\ScintillaWX.h # End Source File # Begin Source File -SOURCE=.\stc.cpp +SOURCE=..\..\include\wx\stc\stc.h # End Source File # End Group # Begin Group "Scintilla" @@ -107,6 +194,10 @@ SOURCE=.\stc.cpp # PROP Default_Filter "" # Begin Source File +SOURCE=.\scintilla\include\Accessor.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\AutoComplete.cxx # End Source File # Begin Source File @@ -151,6 +242,10 @@ SOURCE=.\scintilla\src\DocumentAccessor.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\src\DocumentAccessor.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\Editor.cxx # End Source File # Begin Source File @@ -179,6 +274,10 @@ SOURCE=.\scintilla\src\KeyWords.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\include\KeyWords.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\LexAda.cxx # End Source File # Begin Source File @@ -263,14 +362,34 @@ SOURCE=.\scintilla\src\LineMarker.h # End Source File # Begin Source File +SOURCE=.\scintilla\include\Platform.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\PropSet.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\include\PropSet.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\RESearch.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\src\RESearch.h +# End Source File +# Begin Source File + +SOURCE=.\scintilla\include\SciLexer.h +# End Source File +# Begin Source File + +SOURCE=.\scintilla\include\Scintilla.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\ScintillaBase.cxx # End Source File # Begin Source File @@ -279,6 +398,14 @@ SOURCE=.\scintilla\src\ScintillaBase.h # End Source File # Begin Source File +SOURCE=.\scintilla\include\ScintillaWidget.h +# End Source File +# Begin Source File + +SOURCE=.\scintilla\include\SString.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\Style.cxx # End Source File # Begin Source File @@ -291,10 +418,22 @@ SOURCE=.\scintilla\src\StyleContext.cxx # End Source File # Begin Source File +SOURCE=.\scintilla\src\StyleContext.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\SVector.h # End Source File # Begin Source File +SOURCE=.\scintilla\src\UniConversion.cxx +# End Source File +# Begin Source File + +SOURCE=.\scintilla\src\UniConversion.h +# End Source File +# Begin Source File + SOURCE=.\scintilla\src\ViewStyle.cxx # End Source File # Begin Source File @@ -305,6 +444,10 @@ SOURCE=.\scintilla\src\ViewStyle.h SOURCE=.\scintilla\src\WindowAccessor.cxx # End Source File +# Begin Source File + +SOURCE=.\scintilla\include\WindowAccessor.h +# End Source File # End Group # End Target # End Project diff --git a/src/stc/gen_iface.py b/src/stc/gen_iface.py index b5342b73e6..6689380466 100644 --- a/src/stc/gen_iface.py +++ b/src/stc/gen_iface.py @@ -36,7 +36,13 @@ valPrefixes = [('SCI_', ''), ] # Message function values that should have a CMD_ constant as well -cmdValues = [ (2300, 2350), 2011, 2013, (2176, 2180) ] +cmdValues = [ (2300, 2349), + 2011, + 2013, + (2176, 2180), + (2390, 2393), + (2395, 2396), + ] # Map some generic typenames to wx types, using return value syntax @@ -420,6 +426,54 @@ methodOverrideMap = { 0), + 'GetDocPointer' : (0, + 'void* %s();', + '''void* %s() { + return (void*)SendMsg(%s);''', + 0), + + 'SetDocPointer' : (0, + 'void %s(void* docPointer);', + '''void %s(void* docPointer) { + SendMsg(%s, 0, (long)docPointer);''', + 0), + + 'CreateDocument' : (0, + 'void* %s();', + '''void* %s() { + return (void*)SendMsg(%s);''', + 0), + + 'AddRefDocument' : (0, + 'void %s(void* docPointer);', + '''void %s(void* docPointer) { + SendMsg(%s, 0, (long)docPointer);''', + 0), + + 'ReleaseDocument' : (0, + 'void %s(void* docPointer);', + '''void %s(void* docPointer) { + SendMsg(%s, 0, (long)docPointer);''', + 0), + 'SetCodePage' : (0, + 0, + '''void %s(int codePage) { +#if wxUSE_UNICODE + wxASSERT_MSG(codePage == wxSTC_CP_UTF8, + wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on.")); +#else + wxASSERT_MSG(codePage != wxSTC_CP_UTF8, + wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off.")); +#endif + SendMsg(%s, codePage);''', + ("Set the code page used to interpret the bytes of the document as characters.",) ), + + + 'GrabFocus' : (None, 0, 0, 0), + 'SetFocus' : ('SetSTCFocus', 0, 0, 0), + 'GetFocus' : ('GetSTCFocus', 0, 0, 0), + + # Remove all methods that are key commands since they can be # executed with CmdKeyExecute @@ -470,53 +524,6 @@ methodOverrideMap = { 'DeleteBackNotLine' : (None, 0, 0, 0), - 'GetDocPointer' : (0, - 'void* %s();', - '''void* %s() { - return (void*)SendMsg(%s);''', - 0), - - 'SetDocPointer' : (0, - 'void %s(void* docPointer);', - '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', - 0), - - 'CreateDocument' : (0, - 'void* %s();', - '''void* %s() { - return (void*)SendMsg(%s);''', - 0), - - 'AddRefDocument' : (0, - 'void %s(void* docPointer);', - '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', - 0), - - 'ReleaseDocument' : (0, - 'void %s(void* docPointer);', - '''void %s(void* docPointer) { - SendMsg(%s, 0, (long)docPointer);''', - 0), - 'SetCodePage' : (0, - 0, - '''void %s(int codePage) { -#if wxUSE_UNICODE - wxASSERT_MSG(codePage == wxSTC_CP_UTF8, - wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on.")); -#else - wxASSERT_MSG(codePage != wxSTC_CP_UTF8, - wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off.")); -#endif - SendMsg(%s, codePage);''', - ("Set the code page used to interpret the bytes of the document as characters.",) ), - - - 'GrabFocus' : (None, 0, 0, 0), - 'SetFocus' : ('SetSTCFocus', 0, 0, 0), - 'GetFocus' : ('GetSTCFocus', 0, 0, 0), - '' : ('', 0, 0, 0), @@ -529,6 +536,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest): curDocStrings = [] values = [] methods = [] + cmds = [] # parse iface file fi = FileInput(iface) @@ -547,7 +555,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest): curDocStrings = [] elif op == 'fun ' or op == 'set ' or op == 'get ': - parseFun(line[4:], methods, curDocStrings, values) + parseFun(line[4:], methods, curDocStrings, cmds) curDocStrings = [] elif op == 'cat ': @@ -570,6 +578,7 @@ def processIface(iface, h_tmplt, cpp_tmplt, h_dest, cpp_dest): # process templates data = {} data['VALUES'] = processVals(values) + data['CMDS'] = processVals(cmds) defs, imps = processMethods(methods) data['METHOD_DEFS'] = defs data['METHOD_IMPS'] = imps @@ -747,10 +756,10 @@ def parseFun(line, methods, docs, values): param1 = parseParam(param1) param2 = parseParam(param2) - # Special case. For the key command functionss we want a value defined too + # Special case. For the key command functions we want a value defined too num = string.atoi(number) for v in cmdValues: - if (type(v) == type(()) and v[0] <= num < v[1]) or v == num: + if (type(v) == type(()) and v[0] <= num <= v[1]) or v == num: parseVal('CMD_%s=%s' % (string.upper(name), number), values, docs) #if retType == 'void' and not param1 and not param2: diff --git a/src/stc/makefile.b32 b/src/stc/makefile.b32 index 0ac8176647..5a9843f863 100644 --- a/src/stc/makefile.b32 +++ b/src/stc/makefile.b32 @@ -89,7 +89,6 @@ $(STCCFG): makefile.b32 -w-par -w-aus -w-hid # virtual function A hides virtual function B --WE -tWM -I$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/generic;$(WXDIR)/src/png;$(WXDIR)/src/jpeg;$(WXDIR)/src/zlib;$(WXDIR)/src/xpm;$(WXDIR)/src/tiff diff --git a/src/stc/scintilla/include/SString.h b/src/stc/scintilla/include/SString.h index 6bfe50fccd..3c7ccc33a5 100644 --- a/src/stc/scintilla/include/SString.h +++ b/src/stc/scintilla/include/SString.h @@ -369,7 +369,11 @@ public: */ inline char *StringDup( const char *s, ///< The string to duplicate - SString::lenpos_t len=SString::measure_length) ///< The length of memory to allocate. Optional. + /* gcc 2.96 doesn't seem to like this syntax: gives + 'non-local function uses anonymous type' + SString::lenpos_t len=SString::measure_length) ///< The length of memory to allocate. Optional. + */ + SString::lenpos_t len=0xffffffffU) ///< The length of memory to allocate. Optional. { return SString::StringAllocate(s, len); } diff --git a/src/stc/scintilla/include/Scintilla.iface b/src/stc/scintilla/include/Scintilla.iface index 776fe8f2b7..d6383b103b 100644 --- a/src/stc/scintilla/include/Scintilla.iface +++ b/src/stc/scintilla/include/Scintilla.iface @@ -1130,14 +1130,14 @@ fun void DeleteBackNotLine=2344(,) # Move caret to first position on display line. fun void HomeDisplay=2345(,) -# Move caret to first position on display line extending selection to +# Move caret to first position on display line extending selection to # new caret position. fun void HomeDisplayExtend=2346(,) # Move caret to last position on display line. fun void LineEndDisplay=2347(,) -# Move caret to last position on display line extending selection to new +# Move caret to last position on display line extending selection to new # caret position. fun void LineEndDisplayExtend=2348(,) diff --git a/src/stc/scintilla/src/ScintillaBase.cxx b/src/stc/scintilla/src/ScintillaBase.cxx index a5e5a065d1..ab6e9a19b4 100644 --- a/src/stc/scintilla/src/ScintillaBase.cxx +++ b/src/stc/scintilla/src/ScintillaBase.cxx @@ -70,7 +70,7 @@ void ScintillaBase::AddCharUTF(char *s, unsigned int len, bool treatAsDBCS) { } if (ac.Active()) { AutoCompleteCharacterAdded(s[0]); - // For fill ups add the character after the autocompletion has + // For fill ups add the character after the autocompletion has // triggered so containers see the key so can display a calltip. if (isFillUp) { Editor::AddCharUTF(s, len, treatAsDBCS); @@ -317,6 +317,7 @@ void ScintillaBase::AutoCompleteCompleted() { scn.nmhdr.code = SCN_USERLISTSELECTION; scn.message = 0; scn.wParam = listType; + scn.listType = listType; scn.lParam = 0; scn.text = userListSelected.c_str(); NotifyParent(scn); diff --git a/src/stc/stc.cpp b/src/stc/stc.cpp index d675e8da9d..17cf6ee406 100644 --- a/src/stc/stc.cpp +++ b/src/stc/stc.cpp @@ -90,10 +90,8 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_SCROLL (wxStyledTextCtrl::OnScroll) EVT_SIZE (wxStyledTextCtrl::OnSize) EVT_LEFT_DOWN (wxStyledTextCtrl::OnMouseLeftDown) -#if defined(__WXMSW__) || defined(__WXMAC__) // Let Scintilla see the double click as a second click EVT_LEFT_DCLICK (wxStyledTextCtrl::OnMouseLeftDown) -#endif EVT_MOTION (wxStyledTextCtrl::OnMouseMove) EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp) #if defined(__WXGTK__) || defined(__WXMAC__) @@ -102,6 +100,7 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu) #endif EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel) + EVT_MIDDLE_UP (wxStyledTextCtrl::OnMouseMiddleUp) EVT_CHAR (wxStyledTextCtrl::OnChar) EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown) EVT_KILL_FOCUS (wxStyledTextCtrl::OnLoseFocus) @@ -1478,7 +1477,7 @@ void wxStyledTextCtrl::HomeDisplay() { SendMsg(2345, 0, 0); } -// Move caret to first position on display line extending selection to +// Move caret to first position on display line extending selection to // new caret position. void wxStyledTextCtrl::HomeDisplayExtend() { SendMsg(2346, 0, 0); @@ -1489,7 +1488,7 @@ void wxStyledTextCtrl::LineEndDisplay() { SendMsg(2347, 0, 0); } -// Move caret to last position on display line extending selection to new +// Move caret to last position on display line extending selection to new // caret position. void wxStyledTextCtrl::LineEndDisplayExtend() { SendMsg(2348, 0, 0); @@ -1959,18 +1958,18 @@ void wxStyledTextCtrl::OnSize(wxSizeEvent& evt) { void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) { SetFocus(); wxPoint pt = evt.GetPosition(); - m_swx->DoButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ShiftDown(), evt.ControlDown(), evt.AltDown()); } void wxStyledTextCtrl::OnMouseMove(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonMove(Point(pt.x, pt.y)); + m_swx->DoLeftButtonMove(Point(pt.x, pt.y)); } void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ControlDown()); } @@ -1981,6 +1980,11 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) { } +void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent& evt) { + wxPoint pt = evt.GetPosition(); + m_swx->DoMiddleButtonUp(Point(pt.x, pt.y)); +} + void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) { wxPoint pt = evt.GetPosition(); ScreenToClient(&pt.x, &pt.y); @@ -1998,8 +2002,6 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { - int key = evt.GetKeyCode(); - // On (some?) non-US keyboards the AltGr key is required to enter some // common characters. It comes to us as both Alt and Ctrl down so we need // to let the char through in that case, otherwise if only ctrl or only @@ -2008,10 +2010,13 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { bool alt = evt.AltDown(); bool skip = ((ctrl || alt) && ! (ctrl && alt)); + int key = evt.GetKeyCode(); + // printf("OnChar key:%d consumed:%d ctrl:%d alt:%d skip:%d\n", // key, m_lastKeyDownConsumed, ctrl, alt, skip); - if (key <= WXK_START && /*key >= 32 &&*/ !m_lastKeyDownConsumed && !skip) { + if ( (key <= WXK_START || key > WXK_NUMPAD_DIVIDE) && + !m_lastKeyDownConsumed && !skip) { m_swx->DoAddChar(key); return; } @@ -2076,6 +2081,20 @@ void wxStyledTextCtrl::NotifyChange() { GetEventHandler()->ProcessEvent(evt); } + +static void SetEventText(wxStyledTextEvent& evt, const char* text, + size_t length) { + if(!text) return; + + // The unicode conversion MUST have a null byte to terminate the + // string so move it into a buffer first and give it one. + wxMemoryBuffer buf(length+1); + buf.AppendData((void*)text, length); + buf.AppendByte(0); + evt.SetText(stc2wx(buf)); +} + + void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { SCNotification& scn = *_scn; wxStyledTextEvent evt(0, GetId()); @@ -2121,14 +2140,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_MODIFIED: evt.SetEventType(wxEVT_STC_MODIFIED); evt.SetModificationType(scn.modificationType); - if (scn.text) { - // The unicode conversion MUST have a null byte to terminate the - // string so move it into a buffer first and give it one. - wxMemoryBuffer buf(scn.length+1); - buf.AppendData((void*)scn.text, scn.length); - buf.AppendByte(0); - evt.SetText(stc2wx(buf)); - } + SetEventText(evt, scn.text, scn.length); evt.SetLength(scn.length); evt.SetLinesAdded(scn.linesAdded); evt.SetLine(scn.line); @@ -2160,12 +2172,12 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_USERLISTSELECTION: evt.SetEventType(wxEVT_STC_USERLISTSELECTION); evt.SetListType(scn.listType); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_URIDROPPED: evt.SetEventType(wxEVT_STC_URIDROPPED); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_DWELLSTART: diff --git a/src/stc/stc.cpp.in b/src/stc/stc.cpp.in index 3e1b761faf..0ab9afdc5e 100644 --- a/src/stc/stc.cpp.in +++ b/src/stc/stc.cpp.in @@ -90,10 +90,8 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_SCROLL (wxStyledTextCtrl::OnScroll) EVT_SIZE (wxStyledTextCtrl::OnSize) EVT_LEFT_DOWN (wxStyledTextCtrl::OnMouseLeftDown) -#if defined(__WXMSW__) || defined(__WXMAC__) // Let Scintilla see the double click as a second click EVT_LEFT_DCLICK (wxStyledTextCtrl::OnMouseLeftDown) -#endif EVT_MOTION (wxStyledTextCtrl::OnMouseMove) EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp) #if defined(__WXGTK__) || defined(__WXMAC__) @@ -102,6 +100,7 @@ BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl) EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu) #endif EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel) + EVT_MIDDLE_UP (wxStyledTextCtrl::OnMouseMiddleUp) EVT_CHAR (wxStyledTextCtrl::OnChar) EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown) EVT_KILL_FOCUS (wxStyledTextCtrl::OnLoseFocus) @@ -337,18 +336,18 @@ void wxStyledTextCtrl::OnSize(wxSizeEvent& evt) { void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) { SetFocus(); wxPoint pt = evt.GetPosition(); - m_swx->DoButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ShiftDown(), evt.ControlDown(), evt.AltDown()); } void wxStyledTextCtrl::OnMouseMove(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonMove(Point(pt.x, pt.y)); + m_swx->DoLeftButtonMove(Point(pt.x, pt.y)); } void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) { wxPoint pt = evt.GetPosition(); - m_swx->DoButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), + m_swx->DoLeftButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(), evt.ControlDown()); } @@ -359,6 +358,11 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) { } +void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent& evt) { + wxPoint pt = evt.GetPosition(); + m_swx->DoMiddleButtonUp(Point(pt.x, pt.y)); +} + void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) { wxPoint pt = evt.GetPosition(); ScreenToClient(&pt.x, &pt.y); @@ -376,8 +380,6 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { - int key = evt.GetKeyCode(); - // On (some?) non-US keyboards the AltGr key is required to enter some // common characters. It comes to us as both Alt and Ctrl down so we need // to let the char through in that case, otherwise if only ctrl or only @@ -386,10 +388,13 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { bool alt = evt.AltDown(); bool skip = ((ctrl || alt) && ! (ctrl && alt)); + int key = evt.GetKeyCode(); + // printf("OnChar key:%%d consumed:%%d ctrl:%%d alt:%%d skip:%%d\n", // key, m_lastKeyDownConsumed, ctrl, alt, skip); - if (key <= WXK_START && /*key >= 32 &&*/ !m_lastKeyDownConsumed && !skip) { + if ( (key <= WXK_START || key > WXK_NUMPAD_DIVIDE) && + !m_lastKeyDownConsumed && !skip) { m_swx->DoAddChar(key); return; } @@ -454,6 +459,20 @@ void wxStyledTextCtrl::NotifyChange() { GetEventHandler()->ProcessEvent(evt); } + +static void SetEventText(wxStyledTextEvent& evt, const char* text, + size_t length) { + if(!text) return; + + // The unicode conversion MUST have a null byte to terminate the + // string so move it into a buffer first and give it one. + wxMemoryBuffer buf(length+1); + buf.AppendData((void*)text, length); + buf.AppendByte(0); + evt.SetText(stc2wx(buf)); +} + + void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { SCNotification& scn = *_scn; wxStyledTextEvent evt(0, GetId()); @@ -499,14 +518,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_MODIFIED: evt.SetEventType(wxEVT_STC_MODIFIED); evt.SetModificationType(scn.modificationType); - if (scn.text) { - // The unicode conversion MUST have a null byte to terminate the - // string so move it into a buffer first and give it one. - wxMemoryBuffer buf(scn.length+1); - buf.AppendData((void*)scn.text, scn.length); - buf.AppendByte(0); - evt.SetText(stc2wx(buf)); - } + SetEventText(evt, scn.text, scn.length); evt.SetLength(scn.length); evt.SetLinesAdded(scn.linesAdded); evt.SetLine(scn.line); @@ -538,12 +550,12 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_USERLISTSELECTION: evt.SetEventType(wxEVT_STC_USERLISTSELECTION); evt.SetListType(scn.listType); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_URIDROPPED: evt.SetEventType(wxEVT_STC_URIDROPPED); - evt.SetText(scn.text); + SetEventText(evt, scn.text, strlen(scn.text)); break; case SCN_DWELLSTART: diff --git a/src/stc/stc.h.in b/src/stc/stc.h.in index 157a7bfc23..7a54289b2c 100644 --- a/src/stc/stc.h.in +++ b/src/stc/stc.h.in @@ -24,6 +24,30 @@ #include #include +#ifndef SWIG +/* + * If we're using wx in Dynamic Library format do we + * want wxStyledTextCtrl to be in DLL form as well? + */ +#if defined(WXUSINGDLL) && \ + (defined(WXMAKING_STC_DLL) || defined(WXUSING_STC_DLL)) + +#if defined(WXMAKING_STC_DLL) + // When building the DLL WXSTC_DECLSPEC exports classes +# define WXSTC_DECLSPEC WXEXPORT +#elif defined(WXUSING_STC_DLL) + // When using the DLL WXSTC_DECLSPEC imports classes +# define WXSTC_DECLSPEC WXIMPORT +#endif // defined(WXBUILD_STC_DLL) + +#else +// When building the static library nullify the effect of WXSTC_DECLSPEC +#define WXSTC_DECLSPEC +#endif // WXUSINGDLL && (WXMAKING_STC_DLL || WXUSING_STC_DLL) + +#endif // SWIG + + //---------------------------------------------------------------------- // Should a wxPopupWindow be used for the call tips and autocomplete windows? @@ -38,6 +62,12 @@ %(VALUES)s + +//----------------------------------------- +// Commands that can be bound to keystrokes +%(CMDS)s + + // END of generated section //---------------------------------------------------------------------- @@ -45,8 +75,11 @@ class ScintillaWX; // forward declare class WordList; struct SCNotification; - -extern const wxChar* wxSTCNameStr; +#ifndef SWIG +extern WXSTC_DECLSPEC const wxChar* wxSTCNameStr; +class WXSTC_DECLSPEC wxStyledTextCtrl; +class WXSTC_DECLSPEC wxStyledTextEvent; +#endif //---------------------------------------------------------------------- @@ -175,6 +208,7 @@ private: void OnMouseMove(wxMouseEvent& evt); void OnMouseLeftUp(wxMouseEvent& evt); void OnMouseRightUp(wxMouseEvent& evt); + void OnMouseMiddleUp(wxMouseEvent& evt); void OnContextMenu(wxContextMenuEvent& evt); void OnMouseWheel(wxMouseEvent& evt); void OnChar(wxKeyEvent& evt); @@ -210,7 +244,7 @@ private: //---------------------------------------------------------------------- -// SWIG can't handle "#if" type of conditionals, onlu "#ifdef" +// SWIG can't handle "#if" type of conditionals, only "#ifdef" #ifdef SWIG #define STC_USE_DND 1 #else diff --git a/src/tiff/makefile.wat b/src/tiff/makefile.wat index 4f8d5cfc38..f84784545a 100644 --- a/src/tiff/makefile.wat +++ b/src/tiff/makefile.wat @@ -3,6 +3,7 @@ # File: makefile.wat # Author: Julian Smart # Created: 1998 +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch # # Makefile : Builds TIFF library for Watcom C++, WIN32 # This makefile has to rename files because apparently Watcom C++ @@ -14,45 +15,63 @@ EXTRACPPFLAGS=-i=..\zlib !include $(WXDIR)\src\makewat.env +# set RENAME to 1 to rename the files to the short names -- this is needed +# with older Watcom versions +# RENAME=1 + +!ifeq RENAME 1 +TIFF= +EXTRACPPFLAGS+=-dwxUSE_SHORTNAMES +!else +TIFF=tif_ +!endif + WXLIB = $(WXDIR)\lib -LIBTARGET = $(WXLIB)\tiff.lib +LIBTARGET = $(WXLIB)\tiff$(WATCOM_SUFFIX).lib OBJECTS= & - _aux.obj & - close.obj & - codec.obj & - compress.obj & - dir.obj & - dirinfo.obj & - dirread.obj & - dirwrite.obj & - dumpmode.obj & - error.obj & - fax3.obj & - fax3sm.obj & - flush.obj & - getimage.obj & - jpeg.obj & - luv.obj & - lzw.obj & - next.obj & - open.obj & - packbits.obj & - pixarlog.obj & - predict.obj & - print.obj & - read.obj & - strip.obj & - swab.obj & - thunder.obj & - tile.obj & - version.obj & - warning.obj & - win32.obj & - write.obj & - zip.obj +!ifeq RENAME 1 + $(OUTPUTDIR)\_aux.obj & +!else + $(OUTPUTDIR)\tif_aux.obj & +!endif + $(OUTPUTDIR)\$(TIFF)close.obj & + $(OUTPUTDIR)\$(TIFF)codec.obj & + $(OUTPUTDIR)\$(TIFF)compress.obj & + $(OUTPUTDIR)\$(TIFF)dir.obj & + $(OUTPUTDIR)\$(TIFF)dirinfo.obj & + $(OUTPUTDIR)\$(TIFF)dirread.obj & + $(OUTPUTDIR)\$(TIFF)dirwrite.obj & + $(OUTPUTDIR)\$(TIFF)dumpmode.obj & + $(OUTPUTDIR)\$(TIFF)error.obj & + $(OUTPUTDIR)\$(TIFF)fax3.obj & + $(OUTPUTDIR)\$(TIFF)fax3sm.obj & + $(OUTPUTDIR)\$(TIFF)flush.obj & + $(OUTPUTDIR)\$(TIFF)getimage.obj & + $(OUTPUTDIR)\$(TIFF)jpeg.obj & + $(OUTPUTDIR)\$(TIFF)luv.obj & + $(OUTPUTDIR)\$(TIFF)lzw.obj & + $(OUTPUTDIR)\$(TIFF)next.obj & + $(OUTPUTDIR)\$(TIFF)open.obj & + $(OUTPUTDIR)\$(TIFF)packbits.obj & + $(OUTPUTDIR)\$(TIFF)pixarlog.obj & + $(OUTPUTDIR)\$(TIFF)predict.obj & + $(OUTPUTDIR)\$(TIFF)print.obj & + $(OUTPUTDIR)\$(TIFF)read.obj & + $(OUTPUTDIR)\$(TIFF)strip.obj & + $(OUTPUTDIR)\$(TIFF)swab.obj & + $(OUTPUTDIR)\$(TIFF)thunder.obj & + $(OUTPUTDIR)\$(TIFF)tile.obj & + $(OUTPUTDIR)\$(TIFF)version.obj & + $(OUTPUTDIR)\$(TIFF)warning.obj & + $(OUTPUTDIR)\$(TIFF)win32.obj & + $(OUTPUTDIR)\$(TIFF)write.obj & + $(OUTPUTDIR)\$(TIFF)zip.obj +all: $(OUTPUTDIR) $(RENAME) $(LIBTARGET) .SYMBOLIC + +!ifeq RENAME 1 rename: .SYMBOLIC copy tif_predict.h tif_pred.h copy tif_aux.c _aux.c @@ -88,13 +107,16 @@ rename: .SYMBOLIC copy tif_win32.c win32.c copy tif_write.c write.c copy tif_zip.c zip.c +!endif -all: rename $(OBJECTS) $(LIBTARGET) +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ +LBCFILE=$(OUTPUTDIR)\tiff.lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) clean: .SYMBOLIC -erase *.obj @@ -102,6 +124,7 @@ clean: .SYMBOLIC -erase *.pch -erase *.err -erase *.lbc +!ifeq RENAME 1 -erase tif_pred.h -erase _aux.c -erase close.c @@ -136,6 +159,7 @@ clean: .SYMBOLIC -erase win32.c -erase write.c -erase zip.c +!endif cleanall: clean diff --git a/src/tiff/tif_fax3.c b/src/tiff/tif_fax3.c index a5471618f7..8f100d87aa 100644 --- a/src/tiff/tif_fax3.c +++ b/src/tiff/tif_fax3.c @@ -499,32 +499,7 @@ Fax3SetupState(TIFF* tif) uint32 nruns = needsRefLine ? 2*TIFFroundup(rowpixels,32) : rowpixels; -#if 0 - dsp->runs = (uint32*) _TIFFmalloc(nruns*sizeof (uint16)); -#endif - /* -Problem -------- - -Decoding the file frle_bug.tif causes a crash (such as with tiff2rgba). - -In particular the array dsp->runs allocated in Fax3SetupState() is overrun -by 4-8 bytes. This occurs when Fax3DecodeRLE() processes the first -scanline. The EXPAND1D() macro advances "pa" to be thisrun+512 (an -alias for dsp->runs), pointing just beyond the end of the array. Then -the call to _TIFFFax3fillruns() does an "*erun++ = 0;" which writes beyond -the end of the array. - -In the short term I have modified the dsp->runs allocation to add eight -extra bytes to the runs buffer; however, I am only doing this because I -don't understand the algorithm well enough to change it without risking -more adverse side effects. - -Frank Warmerdam (warmerda@home.com) - - */ - - dsp->runs = (uint32*) _TIFFmalloc(8+nruns*sizeof (uint32)); + dsp->runs = (uint32*) _TIFFmalloc((2*nruns+3)*sizeof (uint32)); if (dsp->runs == NULL) { TIFFError("Fax3SetupState", diff --git a/src/tiff/tif_lzw.c b/src/tiff/tif_lzw.c index d739e6f18d..16c2b7422f 100644 --- a/src/tiff/tif_lzw.c +++ b/src/tiff/tif_lzw.c @@ -37,7 +37,7 @@ * The original Berkeley copyright notice appears below in its entirety. */ /* Watcom C++ (or its make utility) doesn't like long filenames */ -#ifdef __WATCOMC__ +#ifdef wxUSE_SHORTNAMES #include "tif_pred.h" #else #include "tif_predict.h" diff --git a/src/tiff/tif_predict.c b/src/tiff/tif_predict.c index 137a2fb3a4..e47331f321 100644 --- a/src/tiff/tif_predict.c +++ b/src/tiff/tif_predict.c @@ -31,7 +31,7 @@ */ #include "tiffiop.h" /* Watcom C++ (or its make utility) doesn't like long filenames */ -#ifdef __WATCOMC__ +#ifdef wxUSE_SHORTNAMES #include "tif_pred.h" #else #include "tif_predict.h" diff --git a/src/tiff/tiff.dsp b/src/tiff/tiff.dsp index 70a153f707..43f826b113 100644 --- a/src/tiff/tiff.dsp +++ b/src/tiff/tiff.dsp @@ -23,8 +23,8 @@ CFG=tiff - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "TiffVC" -# PROP Scc_LocalPath "." +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe diff --git a/src/tiff/tiff.dsw b/src/tiff/tiff.dsw index 8e9111524c..95529cb365 100644 --- a/src/tiff/tiff.dsw +++ b/src/tiff/tiff.dsw @@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00 ############################################################################### -Project: "tiff"=.\TiffVC.dsp - Package Owner=<4> +Project: "tiff"=.\tiff.dsp - Package Owner=<4> Package=<5> {{{ diff --git a/src/univ/combobox.cpp b/src/univ/combobox.cpp index 2e0af935fa..74b01d4174 100644 --- a/src/univ/combobox.cpp +++ b/src/univ/combobox.cpp @@ -41,6 +41,7 @@ #include "wx/validate.h" #endif +#include "wx/tooltip.h" #include "wx/popupwin.h" #include "wx/univ/renderer.h" @@ -55,6 +56,12 @@ 3. which passes them to the popup window if it is popped up */ +// constants +// ---------------------------------------------------------------------------- + +// the margin between the text control and the combo button +static const wxCoord g_comboMargin = 2; + // ---------------------------------------------------------------------------- // wxComboButton is just a normal button except that it sends commands to the // combobox and not its parent @@ -294,7 +301,7 @@ wxSize wxComboControl::DoGetBestClientSize() const wxSize sizeBtn = m_btn->GetBestSize(), sizeText = m_text->GetBestSize(); - return wxSize(sizeBtn.x + sizeText.x, wxMax(sizeBtn.y, sizeText.y)); + return wxSize(sizeText.x + g_comboMargin + sizeBtn.x, wxMax(sizeBtn.y, sizeText.y)); } void wxComboControl::DoMoveWindow(int x, int y, int width, int height) @@ -345,6 +352,29 @@ bool wxComboControl::Show(bool show) return TRUE; } +#if wxUSE_TOOLTIPS +void wxComboControl::DoSetToolTip(wxToolTip *tooltip) +{ + wxControl::DoSetToolTip(tooltip); + + // Set tool tip for button and text box + if (m_text && m_btn) + { + if (tooltip) + { + const wxString &tip = tooltip->GetTip(); + m_text->SetToolTip(tip); + m_btn->SetToolTip(tip); + } + else + { + m_text->SetToolTip(NULL); + m_btn->SetToolTip(NULL); + } + } +} +#endif // wxUSE_TOOLTIPS + // ---------------------------------------------------------------------------- // popup window handling // ---------------------------------------------------------------------------- @@ -718,10 +748,16 @@ void wxComboBox::SetEditable(bool editable) void wxComboBox::Clear() { GetLBox()->Clear(); + GetText()->SetValue(wxEmptyString); } void wxComboBox::Delete(int n) { + wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Delete") ); + + if (GetSelection() == n) + GetText()->SetValue(wxEmptyString); + GetLBox()->Delete(n); } @@ -732,11 +768,15 @@ int wxComboBox::GetCount() const wxString wxComboBox::GetString(int n) const { + wxCHECK_MSG( (n >= 0) && (n < GetCount()), wxEmptyString, _T("invalid index in wxComboBox::GetString") ); + return GetLBox()->GetString(n); } void wxComboBox::SetString(int n, const wxString& s) { + wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::SetString") ); + GetLBox()->SetString(n, s); } @@ -747,7 +787,7 @@ int wxComboBox::FindString(const wxString& s) const void wxComboBox::Select(int n) { - wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid combobox index") ); + wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Select") ); GetLBox()->SetSelection(n); GetText()->SetValue(GetLBox()->GetString(n)); @@ -755,8 +795,15 @@ void wxComboBox::Select(int n) int wxComboBox::GetSelection() const { +#if 1 // FIXME:: What is the correct behavior? // if the current value isn't one of the listbox strings, return -1 + return GetLBox()->GetSelection(); +#else + // Why oh why is this done this way? + // It is not because the value displayed in the text can be found + // in the list that it is the item that is selected! return FindString(GetText()->GetValue()); +#endif } int wxComboBox::DoAppend(const wxString& item) diff --git a/src/univ/listbox.cpp b/src/univ/listbox.cpp index 725eafa5ec..f0f783992a 100644 --- a/src/univ/listbox.cpp +++ b/src/univ/listbox.cpp @@ -1007,7 +1007,7 @@ void wxListBox::ExtendSelection(int itemTo) } } -void wxListBox::Select(bool sel, int item) +void wxListBox::DoSelect(int item, bool sel) { if ( item != -1 ) { @@ -1027,7 +1027,7 @@ void wxListBox::Select(bool sel, int item) void wxListBox::SelectAndNotify(int item) { - Select(TRUE, item); + DoSelect(item); SendEvent(wxEVT_COMMAND_LISTBOX_SELECTED); } @@ -1046,7 +1046,7 @@ void wxListBox::Activate(int item) if ( item != -1 ) { - Select(TRUE, item); + DoSelect(item); SendEvent(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED); } @@ -1089,7 +1089,7 @@ bool wxListBox::PerformAction(const wxControlAction& action, item = m_current; if ( IsSelected(item) ) - Unselect(item); + DoUnselect(item); else SelectAndNotify(item); } @@ -1100,12 +1100,12 @@ bool wxListBox::PerformAction(const wxControlAction& action, if ( strArg.empty() ) SelectAndNotify(item); else - Select(TRUE, item); + DoSelect(item); } else if ( action == wxACTION_LISTBOX_SELECTADD ) - Select(TRUE, item); + DoSelect(item); else if ( action == wxACTION_LISTBOX_UNSELECT ) - Select(FALSE, item); + DoUnselect(item); else if ( action == wxACTION_LISTBOX_MOVEDOWN ) ChangeCurrent(1); else if ( action == wxACTION_LISTBOX_MOVEUP ) diff --git a/src/univ/notebook.cpp b/src/univ/notebook.cpp index 4c19121069..da6d4b486f 100644 --- a/src/univ/notebook.cpp +++ b/src/univ/notebook.cpp @@ -330,6 +330,7 @@ bool wxNotebook::InsertPage(int nPage, bSelect = TRUE; Relayout(); + Refresh(); } else // not the first tab { @@ -518,10 +519,20 @@ void wxNotebook::DoDraw(wxControlRenderer *renderer) wxSize sizeSpinBtn = m_spinbtn->GetSize(); if ( IsVertical() ) + { rectTabs.height -= sizeSpinBtn.y; + + // Allow for erasing the line under selected tab + rectTabs.width += 2; + } else + { rectTabs.width -= sizeSpinBtn.x; + // Allow for erasing the line under selected tab + rectTabs.height += 2; + } + dc.SetClippingRegion(rectTabs); } @@ -566,6 +577,8 @@ void wxNotebook::DoDraw(wxControlRenderer *renderer) { DoDrawTab(dc, rectSel, m_sel); } + + dc.DestroyClippingRegion(); } // ---------------------------------------------------------------------------- diff --git a/src/univ/radiobox.cpp b/src/univ/radiobox.cpp index 249fba0b25..3ad1c07304 100644 --- a/src/univ/radiobox.cpp +++ b/src/univ/radiobox.cpp @@ -36,6 +36,8 @@ #include "wx/validate.h" #endif +#include "wx/tooltip.h" + #include "wx/univ/theme.h" #include "wx/univ/renderer.h" #include "wx/univ/inphand.h" @@ -341,6 +343,23 @@ void wxRadioBox::SetLabel(const wxString& label) wxStaticBox::SetLabel(label); } +#if wxUSE_TOOLTIPS +void wxRadioBox::DoSetToolTip(wxToolTip *tooltip) +{ + wxControl::DoSetToolTip(tooltip); + + // Also set them for all Radio Buttons + size_t count = m_buttons.GetCount(); + for ( size_t n = 0; n < count; n++ ) + { + if (tooltip) + m_buttons[n]->SetToolTip(tooltip->GetTip()); + else + m_buttons[n]->SetToolTip(NULL); + } +} +#endif // wxUSE_TOOLTIPS + // ---------------------------------------------------------------------------- // buttons positioning // ---------------------------------------------------------------------------- diff --git a/src/univ/slider.cpp b/src/univ/slider.cpp index 8361ab7d54..8381f531a6 100644 --- a/src/univ/slider.cpp +++ b/src/univ/slider.cpp @@ -787,14 +787,15 @@ bool wxSlider::PerformAction(const wxControlAction& action, wxScrollThumb::Shaft wxSlider::HitTest(const wxPoint& pt) const { wxRect rectShaft = GetShaftRect(); - if ( !rectShaft.Inside(pt) ) + wxRect rectThumb; + CalcThumbRect(&rectShaft, &rectThumb, NULL); + + // check for possible shaft or thumb hit + if (!rectShaft.Inside(pt) && !rectThumb.Inside(pt)) { return wxScrollThumb::Shaft_None; } - // inside the shaft, where is it relatively to the thumb? - wxRect rectThumb; - CalcThumbRect(&rectShaft, &rectThumb, NULL); // the position to test and the start and end of the thumb wxCoord x, x1, x2; diff --git a/src/univ/spinbutt.cpp b/src/univ/spinbutt.cpp index 07808d336a..08edc83639 100644 --- a/src/univ/spinbutt.cpp +++ b/src/univ/spinbutt.cpp @@ -144,14 +144,14 @@ int wxSpinButton::NormalizeValue(int value) const if ( value > m_max ) { if ( GetWindowStyleFlag() & wxSP_WRAP ) - value = m_min + (value - m_max) % (m_max - m_min); + value = m_min + (value - m_max - 1) % (m_max - m_min + 1); else value = m_max; } else if ( value < m_min ) { if ( GetWindowStyleFlag() & wxSP_WRAP ) - value = m_max - (m_min - value) % (m_max - m_min); + value = m_max - (m_min - value - 1) % (m_max - m_min + 1); else value = m_min; } diff --git a/src/univ/themes/gtk.cpp b/src/univ/themes/gtk.cpp index ab9a0db5b4..5c4f87e74c 100644 --- a/src/univ/themes/gtk.cpp +++ b/src/univ/themes/gtk.cpp @@ -2810,7 +2810,7 @@ int wxGTKRenderer::HitTestFrame(const wxRect& rect, const wxPoint& pt, int flags // standard icons // ---------------------------------------------------------------------------- -static char *error_xpm[] = { +static const char *error_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 537 2", " c Gray0", @@ -3401,7 +3401,7 @@ static char *error_xpm[] = { "W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+" }; -static char *info_xpm[] = { +static const char *info_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 478 2", " c Gray0", @@ -3934,7 +3934,7 @@ static char *info_xpm[] = { }; /* XPM */ -static char *warning_xpm[] = { +static const char *warning_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 270 2", " c Gray0", @@ -4259,7 +4259,7 @@ static char *warning_xpm[] = { }; /* XPM */ -static char *question_xpm[] = { +static const char *question_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 101 2", " c Gray0", diff --git a/src/univ/themes/metal.cpp b/src/univ/themes/metal.cpp index dc580faaf0..3e78e38391 100644 --- a/src/univ/themes/metal.cpp +++ b/src/univ/themes/metal.cpp @@ -157,7 +157,7 @@ private: bool GetOrCreateTheme() { if ( !m_win32Theme ) - m_win32Theme = wxTheme::Create("win32"); + m_win32Theme = wxTheme::Create( wxT("win32") ); return m_win32Theme != NULL; } private: diff --git a/src/univ/toolbar.cpp b/src/univ/toolbar.cpp index 1d68c60857..f8e1944a72 100644 --- a/src/univ/toolbar.cpp +++ b/src/univ/toolbar.cpp @@ -38,6 +38,7 @@ #include "wx/univ/renderer.h" +#include "wx/frame.h" #include "wx/toolbar.h" #include "wx/image.h" #include "wx/log.h" @@ -156,6 +157,8 @@ bool wxToolBar::Create(wxWindow *parent, wxToolBar::~wxToolBar() { + // Make sure the toolbar is removed from the parent. + SetSize(0,0); } void wxToolBar::SetMargins(int x, int y) @@ -423,6 +426,39 @@ wxSize wxToolBar::DoGetBestClientSize() const return wxSize(m_maxWidth, m_maxHeight); } +void wxToolBar::DoSetSize(int x, int y, int width, int height, int sizeFlags) +{ + int old_width, old_height; + GetSize(&old_width, &old_height); + + wxToolBarBase::DoSetSize(x, y, width, height, sizeFlags); + + // Correct width and height if needed. + if ( width == -1 || height == -1 ) + { + int tmp_width, tmp_height; + GetSize(&tmp_width, &tmp_height); + + if ( width == -1 ) + width = tmp_width; + if ( height == -1 ) + height = tmp_height; + } + + // We must refresh the frame size when the toolbar changes size + // otherwise the toolbar can be shown incorrectly + if ( old_width != width || old_height != height ) + { + // But before we send the size event check it + // we have a frame that is not being deleted. + wxFrame *frame = wxDynamicCast(GetParent(), wxFrame); + if ( frame && !frame->IsBeingDeleted() ) + { + frame->SendSizeEvent(); + } + } +} + // ---------------------------------------------------------------------------- // wxToolBar drawing // ---------------------------------------------------------------------------- @@ -663,10 +699,13 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer, m_winCapture = NULL; } - if ( tool == m_toolCapture ) - consumer->PerformAction( wxACTION_BUTTON_TOGGLE, m_toolCapture->GetId() ); - else - consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() ); + if (m_toolCapture) + { + if ( tool == m_toolCapture ) + consumer->PerformAction( wxACTION_BUTTON_TOGGLE, m_toolCapture->GetId() ); + else + consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() ); + } m_toolCapture = NULL; diff --git a/src/univ/winuniv.cpp b/src/univ/winuniv.cpp index 3b0a025004..1fbcf71f96 100644 --- a/src/univ/winuniv.cpp +++ b/src/univ/winuniv.cpp @@ -109,7 +109,7 @@ void wxWindow::Init() m_isCurrent = FALSE; m_renderer = wxTheme::Get()->GetRenderer(); - + m_oldSize.x = -1; m_oldSize.y = -1; } @@ -240,7 +240,7 @@ void wxWindow::OnErase(wxEraseEvent& event) return; } - + DoDrawBackground(*event.GetDC()); // if we have both scrollbars, we also have a square in the corner between @@ -267,41 +267,45 @@ void wxWindow::OnErase(wxEraseEvent& event) bool wxWindow::DoDrawBackground(wxDC& dc) { wxRect rect; - + wxSize size = GetSize(); // Why not GetClientSize() ? rect.x = 0; rect.y = 0; rect.width = size.x; rect.height = size.y; - - if (HasTransparentBackground() && GetParent() && GetParent()->ProvidesBackground()) + + wxWindow * const parent = GetParent(); + if ( HasTransparentBackground() && parent && parent->ProvidesBackground() ) { wxASSERT( !IsTopLevel() ); - + wxPoint pos = GetPosition(); - + AdjustForParentClientOrigin( pos.x, pos.y, 0 ); - + // Adjust DC logical origin - wxCoord x,y; - dc.GetLogicalOrigin( &x, &y ); - x += pos.x; - y += pos.y; + wxCoord org_x, org_y, x, y; + dc.GetLogicalOrigin( &org_x, &org_y ); + x = org_x + pos.x; + y = org_y + pos.y; dc.SetLogicalOrigin( x, y ); - + // Adjust draw rect rect.x = pos.x; rect.y = pos.y; - + // Let parent draw the background - GetParent()->EraseBackground( dc, rect ); + parent->EraseBackground( dc, rect ); + + // Restore DC logical origin + dc.SetLogicalOrigin( org_x, org_y ); } else { // Draw background ouselves - EraseBackground( dc, rect ); + EraseBackground( dc, rect ); } - + return TRUE; } @@ -315,10 +319,10 @@ void wxWindow::EraseBackground(wxDC& dc, const wxRect& rect) wxBitmap bmp = GetBackgroundBitmap(&alignment, &stretch); wxControlRenderer::DrawBitmap(dc, bmp, rect, alignment, stretch); } - else + else { // Just fill it with bg colour if no bitmap - + m_renderer->DrawBackground(dc, wxTHEME_BG_COLOUR(this), rect, GetStateFlags()); } @@ -478,28 +482,28 @@ int wxWindow::GetStateFlags() const void wxWindow::OnSize(wxSizeEvent& event) { event.Skip(); - + if ( m_scrollbarVert || m_scrollbarHorz ) { PositionScrollbars(); } - + #if 0 // ndef __WXMSW__ // Refresh the area (strip) previously occupied by the border - + if (HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ) && IsShown()) { // This code assumes that wxSizeEvent.GetSize() returns // the area of the entire window, not just the client // area. wxSize newSize = event.GetSize(); - + if (m_oldSize.x == -1 && m_oldSize.y == -1) { m_oldSize = newSize; return; } - + if (HasFlag( wxSIMPLE_BORDER )) { if (newSize.y > m_oldSize.y) @@ -520,7 +524,7 @@ void wxWindow::OnSize(wxSizeEvent& event) rect.width = newSize.x; wxWindowNative::Refresh( TRUE, &rect ); } - + if (newSize.x > m_oldSize.x) { wxRect rect; @@ -561,7 +565,7 @@ void wxWindow::OnSize(wxSizeEvent& event) rect.width = newSize.x; wxWindowNative::Refresh( TRUE, &rect ); } - + if (newSize.x > m_oldSize.x) { wxRect rect; @@ -581,7 +585,7 @@ void wxWindow::OnSize(wxSizeEvent& event) wxWindowNative::Refresh( TRUE, &rect ); } } - + m_oldSize = newSize; } #endif @@ -915,7 +919,7 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) wxWindowNative::ScrollWindow(dx, dy, rect); -#else +#else // !wxX11 // before scrolling it, ensure that we don't have any unpainted areas Update(); @@ -933,11 +937,11 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) r = ScrollNoRefresh(0, dy, rect); Refresh(TRUE /* erase bkgnd */, &r); } - - // scroll children accordingly: + + // scroll children accordingly: wxPoint offset(dx, dy); - - for (wxWindowList::Node *node = GetChildren().GetFirst(); + + for (wxWindowList::Node *node = GetChildren().GetFirst(); node; node = node->GetNext()) { wxWindow *child = node->GetData(); @@ -945,13 +949,13 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) continue; // VS: Scrolling children has non-trivial semantics. If rect=NULL then - // it is easy: we scroll all children. Otherwise it gets + // it is easy: we scroll all children. Otherwise it gets // complicated: // 1. if scrolling in one direction only, scroll only // those children that intersect shaft defined by the rectangle // and scrolling direction // 2. if scrolling in both axes, scroll all children - + if ( rect && (dx * dy == 0 /* moving in only one of x, y axis */) ) { wxRect childRect = child->GetRect(); @@ -970,8 +974,8 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) { child->Move(child->GetPosition() + offset); } - } -#endif + } +#endif // wxX11/!wxX11 } wxRect wxWindow::ScrollNoRefresh(int dx, int dy, const wxRect *rectTotal) diff --git a/src/unix/dialup.cpp b/src/unix/dialup.cpp index 8d6a76058e..f0bb49e961 100644 --- a/src/unix/dialup.cpp +++ b/src/unix/dialup.cpp @@ -676,26 +676,26 @@ wxDialUpManagerImpl::CheckIfconfig() wxASSERT_MSG( m_IfconfigPath.length(), _T("can't use ifconfig if it wasn't found") ); - wxString tmpfile = wxGetTempFileName("_wxdialuptest"); - wxString cmd = "/bin/sh -c \'"; + wxString tmpfile = wxGetTempFileName( wxT("_wxdialuptest") ); + wxString cmd = wxT("/bin/sh -c \'"); cmd << m_IfconfigPath; #if defined(__SOLARIS__) || defined (__SUNOS__) // need to add -a flag - cmd << " -a"; + cmd << wxT(" -a"); #elif defined(__LINUX__) || defined(__SGI__) // nothing to be added to ifconfig #elif defined(__FREEBSD__) || defined(__DARWIN__) // add -l flag - cmd << " -l"; + cmd << wxT(" -l"); #elif defined(__HPUX__) // VZ: a wild guess (but without it, ifconfig fails completely) - cmd << _T(" ppp0"); + cmd << wxT(" ppp0"); #else # pragma warning "No ifconfig information for this OS." m_CanUseIfconfig = 0; return -1; #endif - cmd << " >" << tmpfile << '\''; + cmd << wxT(" >") << tmpfile << wxT('\''); /* I tried to add an option to wxExecute() to not close stdout, so we could let ifconfig write directly to the tmpfile, but this does not work. That should be faster, as it doesn´t call @@ -754,41 +754,41 @@ wxDialUpManagerImpl::CheckIfconfig() wxDialUpManagerImpl::NetConnection wxDialUpManagerImpl::CheckPing() { - // First time check for ping location. We only use the variant - // which does not take arguments, a la GNU. - if(m_CanUsePing == -1) // unknown - { + // First time check for ping location. We only use the variant + // which does not take arguments, a la GNU. + if(m_CanUsePing == -1) // unknown + { #ifdef __VMS - if(wxFileExists("SYS$SYSTEM:TCPIP$PING.EXE")) - m_PingPath = "$SYS$SYSTEM:TCPIP$PING"; + if (wxFileExists( wxT("SYS$SYSTEM:TCPIP$PING.EXE") )) + m_PingPath = wxT("$SYS$SYSTEM:TCPIP$PING"); #else - if(wxFileExists("/bin/ping")) - m_PingPath = "/bin/ping"; - else if(wxFileExists("/usr/sbin/ping")) - m_PingPath = "/usr/sbin/ping"; + if (wxFileExists( wxT("/bin/ping") )) + m_PingPath = wxT("/bin/ping"); + else if (wxFileExists( wxT("/usr/sbin/ping") )) + m_PingPath = wxT("/usr/sbin/ping"); #endif - if(! m_PingPath) - { - m_CanUsePing = 0; - } - } + if (!m_PingPath) + { + m_CanUsePing = 0; + } + } - if(! m_CanUsePing) - { + if(! m_CanUsePing) + { // we didn't find ping return Net_Unknown; - } + } wxLogNull ln; // suppress all error messages wxASSERT(m_PingPath.length()); wxString cmd; - cmd << m_PingPath << ' '; + cmd << m_PingPath << wxT(' '); #if defined(__SOLARIS__) || defined (__SUNOS__) // nothing to add to ping command -#elif defined(__LINUX__) || defined ( __FREEBSD__) || defined(__DARWIN__) || defined( __VMS ) - cmd << "-c 1 "; // only ping once +#elif defined(__LINUX__) || defined (__BSD__) || defined( __VMS ) + cmd << wxT("-c 1 "); // only ping once #elif defined(__HPUX__) - cmd << "64 1 "; // only ping once (need also specify the packet size) + cmd << wxT("64 1 "); // only ping once (need also specify the packet size) #else # pragma warning "No Ping information for this OS." m_CanUsePing = 0; diff --git a/src/unix/dir.cpp b/src/unix/dir.cpp index 4680a338ce..2e283dfc4d 100644 --- a/src/unix/dir.cpp +++ b/src/unix/dir.cpp @@ -172,13 +172,9 @@ bool wxDirData::Read(wxString *filename) } else { -#if wxUSE_UNICODE - matches = TRUE; // FIXME -#else // test against the pattern matches = wxMatchWild(m_filespec, de_d_name, !(m_flags & wxDIR_HIDDEN)); -#endif } } diff --git a/src/unix/fontenum.cpp b/src/unix/fontenum.cpp index 5ce2b4e93d..9f5618be99 100644 --- a/src/unix/fontenum.cpp +++ b/src/unix/fontenum.cpp @@ -26,58 +26,126 @@ #include "wx/string.h" #include "wx/regex.h" #include "wx/utils.h" - +#include "wx/app.h" #include "wx/fontmap.h" #include "wx/fontenum.h" #include "wx/fontutil.h" // ---------------------------------------------------------------------------- -// GTK 2.0 +// Pango // ---------------------------------------------------------------------------- +#if wxUSE_PANGO + +#include "pango/pango.h" + #ifdef __WXGTK20__ - -#include "wx/gtk/private.h" - +#include "gtk/gtk.h" extern GtkWidget *wxGetRootWindow(); +#endif static int cmp_families (const void *a, const void *b) { - const char *a_name = pango_font_family_get_name (*(PangoFontFamily **)a); - const char *b_name = pango_font_family_get_name (*(PangoFontFamily **)b); + const char *a_name = pango_font_family_get_name (*(PangoFontFamily **)a); + const char *b_name = pango_font_family_get_name (*(PangoFontFamily **)b); - return g_utf8_collate (a_name, b_name); + return g_utf8_collate (a_name, b_name); +} + +static PangoLanguage *font_test_language; + +static gboolean font_is_latin( PangoContext *context, PangoFontDescription *desc ) +{ + PangoFont *font = pango_context_load_font( context, desc ); + if (!font) return FALSE; + + font_test_language = pango_language_from_string( "eng" ); + + PangoCoverage *coverage =pango_font_get_coverage( font, font_test_language ); + if (!coverage) return FALSE; + + if ((pango_coverage_get(coverage, 'i') == PANGO_COVERAGE_EXACT) && + (pango_coverage_get(coverage, 'W') == PANGO_COVERAGE_EXACT)) + { + return TRUE; + } + + return FALSE; } -// I admit I don't yet understand encodings with Pango bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding, bool fixedWidthOnly) { - if ( fixedWidthOnly ) - { - OnFacename( wxT("monospace") ); - } - else - { - PangoFontFamily **families = NULL; - gint n_families = 0; - pango_context_list_families ( - gtk_widget_get_pango_context( wxGetRootWindow() ), - &families, &n_families ); - qsort (families, n_families, sizeof (PangoFontFamily *), cmp_families); + PangoContext *context = +#ifdef __WXGTK20__ + gtk_widget_get_pango_context( wxGetRootWindow() ); +#else + wxTheApp->GetPangoContext(); +#endif + PangoFontFamily **families = NULL; + gint n_families = 0; + pango_context_list_families( context, &families, &n_families ); + qsort (families, n_families, sizeof (PangoFontFamily *), cmp_families); - for (int i=0; i X foundry, anyone? + wxFAIL_MSG( _T("not implemented") ); + + // SetXFontComponent(wxXLFD_FOUNDRY, ...); +} + +void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) +{ + wxNativeEncodingInfo info; + if ( wxGetNativeFontEncoding(encoding, &info) ) + { + SetXFontComponent(wxXLFD_ENCODING, info.xencoding); + SetXFontComponent(wxXLFD_REGISTRY, info.xregistry); + } +} + // ---------------------------------------------------------------------------- // common functions // ---------------------------------------------------------------------------- @@ -495,6 +662,11 @@ bool wxGetNativeFontEncoding(wxFontEncoding encoding, info->xencoding = wxT("*"); break; + case wxFONTENCODING_GB2312: + info->xregistry = wxT("GB2312"); // or the otherway round? + info->xencoding = wxT("*"); + break; + case wxFONTENCODING_KOI8: info->xregistry = wxT("koi8"); @@ -806,7 +978,7 @@ static wxNativeFont wxLoadQueryFont(int pointSize, // An alternative: assume that the screen is 72 dpi. //int pixelHeight = (int) (((float)pointSize / 720.0) * 72.0) ; //int pixelHeight = (int) ((float)pointSize / 10.0) ; - + GR_LOGFONT logFont; logFont.lfHeight = pixelHeight; logFont.lfWidth = 0; @@ -833,7 +1005,7 @@ static wxNativeFont wxLoadQueryFont(int pointSize, fontInfo->fid = GrCreateFont((GR_CHAR*) facename.c_str(), pixelHeight, & logFont); GrGetFontInfo(fontInfo->fid, & fontInfo->info); return (wxNativeFont) fontInfo; - + #else wxString fontSpec; if (!facename.IsEmpty()) @@ -1044,5 +1216,5 @@ void wxFontModule::OnExit() g_fontHash = (wxHashTable *)NULL; } -#endif - // not GTK 2.0 +#endif // GTK 2.0/1.x + diff --git a/src/unix/mimetype.cpp b/src/unix/mimetype.cpp index faf0bd2d6c..23c23a983e 100644 --- a/src/unix/mimetype.cpp +++ b/src/unix/mimetype.cpp @@ -364,21 +364,21 @@ bool wxMimeTypesManagerImpl::CheckGnomeDirsExist () wxString gnomedir; wxGetHomeDir( &gnomedir ); wxString sTmp = gnomedir; - sTmp = sTmp + "/.gnome"; + sTmp = sTmp + wxT("/.gnome"); if (! wxDir::Exists ( sTmp ) ) { if (!wxMkdir ( sTmp )) { - wxFAIL_MSG (wxString ("Failed to create directory\n.gnome in \nCheckGnomeDirsExist") + sTmp ); + wxLogError(_("Failed to create directory %s/.gnome."), sTmp.c_str()); return FALSE; } } - sTmp = sTmp + "/mime-info"; + sTmp = sTmp + wxT("/mime-info"); if (! wxDir::Exists ( sTmp ) ) { if (!wxMkdir ( sTmp )) { - wxFAIL_MSG (wxString ("Failed to create directory\nmime-info in \nCheckGnomeDirsExist") + sTmp ); + wxLogError(_("Failed to create directory %s/mime-info."), sTmp.c_str()); return FALSE; } } @@ -393,11 +393,15 @@ bool wxMimeTypesManagerImpl::WriteGnomeKeyFile(int index, bool delete_index) wxString gnomedir; wxGetHomeDir( &gnomedir ); - wxMimeTextFile outfile ( gnomedir + "/.gnome/mime-info/user.keys"); + wxMimeTextFile outfile ( gnomedir + wxT("/.gnome/mime-info/user.keys")); // if this fails probably Gnome is not installed ?? // create it anyway as a private mime store +#if defined(__WXGTK20__) && wxUSE_UNICODE + if (! outfile.Open ( wxConvUTF8) ) +#else if (! outfile.Open () ) +#endif { if (delete_index) return FALSE; if (!CheckGnomeDirsExist() ) return FALSE; @@ -462,13 +466,13 @@ bool wxMimeTypesManagerImpl::WriteGnomeKeyFile(int index, bool delete_index) } //sOld should also contain the icon if ( !m_aIcons[index].empty() ) - sOld.AddOrReplaceVerb ( wxT( "icon-filename"), m_aIcons[index] ); + sOld.AddOrReplaceVerb ( wxT("icon-filename"), m_aIcons[index] ); for (i=0; i < sOld.GetCount(); i++) { sTmp = sOld.GetVerbCmd(i); sTmp.Replace( wxT("%s"), wxT("%f") ); - sTmp = wxT ( "\t") + sTmp; + sTmp = wxT("\t") + sTmp; nIndex ++; outfile.InsertLine ( sTmp, nIndex ); } @@ -484,7 +488,7 @@ bool wxMimeTypesManagerImpl::WriteGnomeMimeFile(int index, bool delete_index) wxString gnomedir; wxGetHomeDir( &gnomedir ); - wxMimeTextFile outfile ( gnomedir + "/.gnome/mime-info/user.mime"); + wxMimeTextFile outfile ( gnomedir + wxT("/.gnome/mime-info/user.mime")); // if this fails probably Gnome is not installed ?? // create it anyway as a private mime store if (! outfile.Open () ) @@ -498,7 +502,7 @@ bool wxMimeTypesManagerImpl::WriteGnomeMimeFile(int index, bool delete_index) if ( nIndex == wxNOT_FOUND ) { outfile.AddLine ( strType ); - outfile.AddLine ( wxT( "\text:") + m_aExtensions.Item(index) ); + outfile.AddLine ( wxT("\text:") + m_aExtensions.Item(index) ); } else { @@ -510,13 +514,13 @@ bool wxMimeTypesManagerImpl::WriteGnomeMimeFile(int index, bool delete_index) else {// check for next line being the right one to replace ?? wxString sOld = outfile.GetLine(nIndex+1); - if (sOld.Contains(wxT("\text: "))) + if (sOld.Contains( wxT("\text: "))) { - outfile.GetLine(nIndex+1) = wxT( "\text: ") + m_aExtensions.Item(index); + outfile.GetLine(nIndex+1) = wxT("\text: ") + m_aExtensions.Item(index); } else { - outfile.InsertLine(wxT( "\text: ") + m_aExtensions.Item(index), nIndex + 1 ); + outfile.InsertLine( wxT("\text: ") + m_aExtensions.Item(index), nIndex + 1 ); } } } @@ -528,7 +532,11 @@ bool wxMimeTypesManagerImpl::WriteGnomeMimeFile(int index, bool delete_index) void wxMimeTypesManagerImpl::LoadGnomeDataFromKeyFile(const wxString& filename) { wxTextFile textfile(filename); +#if defined(__WXGTK20__) && wxUSE_UNICODE + if ( !textfile.Open( wxConvUTF8) ) +#else if ( !textfile.Open() ) +#endif return; wxLogTrace(TRACE_MIME, wxT("--- Opened Gnome file %s ---"), filename.c_str()); @@ -615,7 +623,11 @@ void wxMimeTypesManagerImpl::LoadGnomeDataFromKeyFile(const wxString& filename) void wxMimeTypesManagerImpl::LoadGnomeMimeTypesFromMimeFile(const wxString& filename) { wxTextFile textfile(filename); +#if defined(__WXGTK20__) && wxUSE_UNICODE + if ( !textfile.Open( wxConvUTF8) ) +#else if ( !textfile.Open() ) +#endif return; wxLogTrace(TRACE_MIME, wxT("--- Opened Gnome file %s ---"), filename.c_str()); @@ -630,7 +642,7 @@ void wxMimeTypesManagerImpl::LoadGnomeMimeTypesFromMimeFile(const wxString& file if ( nLine < nLineCount ) { pc = textfile[nLine].c_str(); - if ( *pc == _T('#') ) + if ( *pc == wxT('#') ) { // skip comments continue; @@ -665,13 +677,13 @@ void wxMimeTypesManagerImpl::LoadGnomeMimeTypesFromMimeFile(const wxString& file } // what do we have here? - if ( *pc == _T('\t') ) + if ( *pc == wxT('\t') ) { // this is a field=value ling pc++; // skip leading TAB static const int lenField = 4; // strlen("ext:") - if ( wxStrncmp(pc, _T("ext:"), lenField) == 0 ) + if ( wxStrncmp(pc, wxT("ext:"), lenField) == 0 ) { // skip ' ' which follows and take everything left until the end // of line @@ -690,7 +702,7 @@ void wxMimeTypesManagerImpl::LoadGnomeMimeTypesFromMimeFile(const wxString& file curMimeType.Empty(); - while ( *pc != _T(':') && *pc != _T('\0') ) + while ( *pc != wxT(':') && *pc != wxT('\0') ) { curMimeType += *pc++; } @@ -705,7 +717,7 @@ void wxMimeTypesManagerImpl::LoadGnomeMimeFilesFromDir(const wxString& dirbase) _T("base directory shouldn't end with a slash") ); wxString dirname = dirbase; - dirname << _T("/mime-info"); + dirname << wxT("/mime-info"); if ( !wxDir::Exists(dirname) ) return; @@ -715,7 +727,7 @@ void wxMimeTypesManagerImpl::LoadGnomeMimeFilesFromDir(const wxString& dirbase) return; // we will concatenate it with filename to get the full path below - dirname += _T('/'); + dirname += wxT('/'); wxString filename; bool cont = dir.GetFirst(&filename, _T("*.mime"), wxDIR_FILES); @@ -742,12 +754,12 @@ void wxMimeTypesManagerImpl::GetGnomeMimeInfo(const wxString& sExtraDir) { wxArrayString dirs; - dirs.Add(_T("/usr/share")); - dirs.Add(_T("/usr/local/share")); + dirs.Add(wxT("/usr/share")); + dirs.Add(wxT("/usr/local/share")); wxString gnomedir; wxGetHomeDir( &gnomedir ); - gnomedir += _T("/.gnome"); + gnomedir += wxT("/.gnome"); dirs.Add( gnomedir ); if (!sExtraDir.empty()) dirs.Add( sExtraDir ); @@ -913,12 +925,12 @@ void wxMimeTypesManagerImpl::LoadKDELinksForMimeSubtype(const wxString& dirbase, wxArrayString sExts; wxString mimetype, mime_desc, strIcon; - int nIndex = file.pIndexOf ("MimeType="); + int nIndex = file.pIndexOf( wxT("MimeType=") ); if (nIndex == wxNOT_FOUND) { // construct mimetype from the directory name and the basename of the // file (it always has .kdelnk extension) - mimetype << subdir << _T('/') << filename.BeforeLast(_T('.')); + mimetype << subdir << wxT('/') << filename.BeforeLast( wxT('.') ); } else mimetype = file.GetCmd (nIndex); @@ -1085,15 +1097,15 @@ void wxMimeTypesManagerImpl::GetKDEMimeInfo(const wxString& sExtraDir) wxArrayString icondirs; // settings in ~/.kde have maximal priority - dirs.Add(wxGetHomeDir() + _T("/.kde/share")); - icondirs.Add(wxGetHomeDir() + _T("/.kde/share/icons/")); + dirs.Add(wxGetHomeDir() + wxT("/.kde/share")); + icondirs.Add(wxGetHomeDir() + wxT("/.kde/share/icons/")); // the variable KDEDIR is set when KDE is running - const char *kdedir = getenv("KDEDIR"); + const wxChar *kdedir = wxGetenv( wxT("KDEDIR") ); if ( kdedir ) { - dirs.Add(wxString(kdedir) + _T("/share")); - icondirs.Add(wxString(kdedir) + _T("/share/icons/")); + dirs.Add( wxString(kdedir) + wxT("/share") ); + icondirs.Add( wxString(kdedir) + wxT("/share/icons/") ); } else { @@ -1346,6 +1358,7 @@ void wxMimeTypesManagerImpl::ClearData() m_aExtensions.Clear (); m_aDescriptions.Clear (); + WX_CLEAR_ARRAY(m_aEntries); m_aEntries.Empty(); m_mailcapStylesInited = 0; @@ -1354,8 +1367,6 @@ void wxMimeTypesManagerImpl::ClearData() wxMimeTypesManagerImpl::~wxMimeTypesManagerImpl() { ClearData(); - - WX_CLEAR_ARRAY(m_aEntries); } @@ -2033,7 +2044,11 @@ bool wxMimeTypesManagerImpl::ReadMimeTypes(const wxString& strFileName) strFileName.c_str()); wxTextFile file(strFileName); +#if defined(__WXGTK20__) && wxUSE_UNICODE + if ( !file.Open( wxConvUTF8) ) +#else if ( !file.Open() ) +#endif return FALSE; // the information we extract @@ -2041,7 +2056,8 @@ bool wxMimeTypesManagerImpl::ReadMimeTypes(const wxString& strFileName) size_t nLineCount = file.GetLineCount(); const wxChar *pc = NULL; - for ( size_t nLine = 0; nLine < nLineCount; nLine++ ) { + for ( size_t nLine = 0; nLine < nLineCount; nLine++ ) + { if ( pc == NULL ) { // now we're at the start of the line pc = file[nLine].c_str(); @@ -2307,7 +2323,11 @@ bool wxMimeTypesManagerImpl::ReadMailcap(const wxString& strFileName, strFileName.c_str()); wxTextFile file(strFileName); +#if defined(__WXGTK20__) && wxUSE_UNICODE + if ( !file.Open( wxConvUTF8) ) +#else if ( !file.Open() ) +#endif return FALSE; // indices of MIME types (in m_aTypes) we already found in this file @@ -2367,11 +2387,11 @@ bool wxMimeTypesManagerImpl::ReadMailcap(const wxString& strFileName, // something is wrong, bail out cont = FALSE; - wxLogDebug(wxT("Mailcap file %s, line %d: " + wxLogDebug(wxT("Mailcap file %s, line %lu: " "'\\' on the end of the last line " "ignored."), strFileName.c_str(), - nLine + 1); + (unsigned long)nLine + 1); } else { @@ -2433,11 +2453,11 @@ bool wxMimeTypesManagerImpl::ReadMailcap(const wxString& strFileName, // this might be useful for the programmer wxLogDebug ( - wxT("Mailcap file %s, line %d: " + wxT("Mailcap file %s, line %lu: " "unknown field '%s' for the " "MIME type '%s' ignored."), strFileName.c_str(), - nLine + 1, + (unsigned long)nLine + 1, curField.c_str(), data.type.c_str() ); @@ -2504,7 +2524,8 @@ bool wxMimeTypesManagerImpl::ReadMailcap(const wxString& strFileName, if ( data.needsterminal ) { - data.cmdOpen.Printf(_T("xterm -e sh -c '%s'"), data.cmdOpen.c_str()); + data.cmdOpen = wxString::Format(_T("xterm -e sh -c '%s'"), + data.cmdOpen.c_str()); } if ( !data.cmdOpen.empty() ) diff --git a/src/unix/net.cpp b/src/unix/net.cpp deleted file mode 100644 index 8fff0bfdd1..0000000000 --- a/src/unix/net.cpp +++ /dev/null @@ -1,422 +0,0 @@ -// -*- c++ -*- /////////////////////////////////////////////////////////////// -// Name: unix/net.cpp -// Purpose: Network related wxWindows classes and functions -// Author: Karsten Ballüder -// Modified by: -// Created: 03.10.99 -// RCS-ID: $Id$ -// Copyright: (c) Karsten Ballüder -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/setup.h" - -#if wxUSE_DIALUP_MANAGER - -#ifndef WX_PRECOMP -# include "wx/defs.h" -#endif // !PCH - -#include "wx/string.h" -#include "wx/event.h" -#include "wx/net.h" -#include "wx/timer.h" -#include "wx/filefn.h" -#include "wx/utils.h" -#include "wx/log.h" -#include "wx/file.h" - -#include -#include -#include -#include -#define __STRICT_ANSI__ -#include -#include -#include -#include -#include -#include - -// ---------------------------------------------------------------------------- -// A class which groups functions dealing with connecting to the network from a -// workstation using dial-up access to the net. There is at most one instance -// of this class in the program accessed via GetDialUpManager(). -// ---------------------------------------------------------------------------- - -/* TODO - * - * 1. more configurability for Unix: i.e. how to initiate the connection, how - * to check for online status, &c. - * 2. add a "long Dial(long connectionId = -1)" function which asks the user - * about which connection to dial (this may be done using native dialogs - * under NT, need generic dialogs for all others) and returns the identifier - * of the selected connection (it's opaque to the application) - it may be - * reused later to dial the same connection later (or use strings instead of - * longs may be?) - * 3. add an async version of dialing functions which notify the caller about - * the progress (or may be even start another thread to monitor it) - * 4. the static creation/accessor functions are not MT-safe - but is this - * really crucial? I think we may suppose they're always called from the - * main thread? - */ - -class WXDLLEXPORT wxDialUpManagerImpl : public wxDialUpManager -{ -public: - wxDialUpManagerImpl() - { - m_IsOnline = -1; // unknown - m_timer = NULL; - m_CanUseIfconfig = -1; // unknown - m_BeaconHost = WXDIALUP_MANAGER_DEFAULT_BEACONHOST; - m_BeaconPort = 80; - } - - /** Could the dialup manager be initialized correctly? If this function - returns FALSE, no other functions will work neither, so it's a good idea - to call this function and check its result before calling any other - wxDialUpManager methods. - */ - virtual bool IsOk() const - { return TRUE; } - - /** The simplest way to initiate a dial up: this function dials the given - ISP (exact meaning of the parameter depends on the platform), returns - TRUE on success or FALSE on failure and logs the appropriate error - message in the latter case. - @param nameOfISP optional paramater for dial program - @param username unused - @param password unused - */ - virtual bool Dial(const wxString& nameOfISP, - const wxString& WXUNUSED(username), - const wxString& WXUNUSED(password)); - - /// Hang up the currently active dial up connection. - virtual bool HangUp(); - - // returns TRUE if the computer is connected to the network: under Windows, - // this just means that a RAS connection exists, under Unix we check that - // the "well-known host" (as specified by SetWellKnownHost) is reachable - virtual bool IsOnline() const - { - if( (! m_timer) // we are not polling, so test now: - || m_IsOnline == -1 - ) - CheckStatus(); - return m_IsOnline != 0; - } - - // sometimes the built-in logic for determining the online status may fail, - // so, in general, the user should be allowed to override it. This function - // allows to forcefully set the online status - whatever our internal - // algorithm may think about it. - virtual void SetOnlineStatus(bool isOnline = TRUE) - { m_IsOnline = isOnline; } - - // set misc wxDialUpManager options - // -------------------------------- - - // enable automatical checks for the connection status and sending of - // wxEVT_DIALUP_CONNECTED/wxEVT_DIALUP_DISCONNECTED events. The interval - // parameter is only for Unix where we do the check manually: under - // Windows, the notification about the change of connection status is - // instantenous. - // - // Returns FALSE if couldn't set up automatic check for online status. - virtual bool EnableAutoCheckOnlineStatus(size_t nSeconds); - - // disable automatic check for connection status change - notice that the - // wxEVT_DIALUP_XXX events won't be sent any more neither. - virtual void DisableAutoCheckOnlineStatus(); - - // under Unix, the value of well-known host is used to check whether we're - // connected to the internet. It's unused under Windows, but this function - // is always safe to call. The default value is www.yahoo.com. - virtual void SetWellKnownHost(const wxString& hostname, - int portno = 80); - /** Sets the commands to start up the network and to hang up - again. Used by the Unix implementations only. - */ - virtual void SetConnectCommand(const wxString &command, const wxString &hupcmd) - { m_ConnectCommand = command; m_HangUpCommand = hupcmd; } - -private: - /// -1: don´t know, 0 = no, 1 = yes - int m_IsOnline; - - /// Can we use ifconfig to list active devices? - int m_CanUseIfconfig; - /// The path to ifconfig - wxString m_IfconfigPath; - - /// beacon host: - wxString m_BeaconHost; - /// beacon host portnumber for connect: - int m_BeaconPort; - - /// command to connect to network - wxString m_ConnectCommand; - /// command to hang up - wxString m_HangUpCommand; - /// name of ISP - wxString m_ISPname; - /// a timer for regular testing - class AutoCheckTimer *m_timer; - - friend class AutoCheckTimer; - /// determine status - void CheckStatus(void) const; - - /// real status check - void CheckStatusInternal(void); -}; - - -class AutoCheckTimer : public wxTimer -{ -public: - AutoCheckTimer(wxDialUpManagerImpl *dupman) - { - m_dupman = dupman; - m_started = FALSE; - } - - virtual bool Start( int millisecs = -1 ) - { m_started = TRUE; return wxTimer::Start(millisecs, FALSE); } - - virtual void Notify() - { wxLogTrace("Checking dial up network status."); m_dupman->CheckStatus(); } - - virtual void Stop() - { if ( m_started ) wxTimer::Stop(); } -public: - bool m_started; - wxDialUpManagerImpl *m_dupman; -}; - -bool -wxDialUpManagerImpl::Dial(const wxString &isp, - const wxString & WXUNUSED(username), - const wxString & WXUNUSED(password)) -{ - if(m_IsOnline == 1) - return FALSE; - m_IsOnline = -1; - m_ISPname = isp; - wxString cmd; - if(m_ConnectCommand.Find("%s")) - cmd.Printf(m_ConnectCommand,m_ISPname.c_str()); - else - cmd = m_ConnectCommand; - return wxExecute(cmd, /* sync */ TRUE) == 0; -} - -bool -wxDialUpManagerImpl::HangUp(void) -{ - if(m_IsOnline == 0) - return FALSE; - m_IsOnline = -1; - wxString cmd; - if(m_HangUpCommand.Find("%s")) - cmd.Printf(m_HangUpCommand,m_ISPname.c_str()); - else - cmd = m_HangUpCommand; - return wxExecute(cmd, /* sync */ TRUE) == 0; -} - - -bool -wxDialUpManagerImpl::EnableAutoCheckOnlineStatus(size_t nSeconds) -{ - wxASSERT(m_timer == NULL); - m_timer = new AutoCheckTimer(this); - bool rc = m_timer->Start(nSeconds*1000); - if(! rc) - { - delete m_timer; - m_timer = NULL; - } - return rc; -} - -void -wxDialUpManagerImpl::DisableAutoCheckOnlineStatus() -{ - wxASSERT(m_timer != NULL); - m_timer->Stop(); - delete m_timer; - m_timer = NULL; -} - - -void -wxDialUpManagerImpl::SetWellKnownHost(const wxString& hostname, int portno) -{ - /// does hostname contain a port number? - wxString port = hostname.After(':'); - if(port.Length()) - { - m_BeaconHost = hostname.Before(':'); - m_BeaconPort = atoi(port); - } - else - { - m_BeaconHost = hostname; - m_BeaconPort = portno; - } -} - - -void -wxDialUpManagerImpl::CheckStatus(void) const -{ - // This function calls the CheckStatusInternal() helper function - // which is OS - specific and then sends the events. - - int oldIsOnline = m_IsOnline; - ( /* non-const */ (wxDialUpManagerImpl *)this)->CheckStatusInternal(); - - // now send the events as appropriate: - if(m_IsOnline != oldIsOnline) - { - if(m_IsOnline) - ; // send ev - else - ; // send ev - } -} - -/* - We have three methods that we can use: - - 1. test via /sbin/ifconfig and grep for "sl", "ppp", "pl" - --> should be fast enough for regular polling - 2. test if we can reach the well known beacon host - --> too slow for polling - 3. check /proc/net/dev on linux?? - This method should be preferred, if possible. Need to do more - testing. - -*/ - -void -wxDialUpManagerImpl::CheckStatusInternal(void) -{ - m_IsOnline = -1; - - // First time check for ifconfig location. We only use the variant - // which does not take arguments, a la GNU. - if(m_CanUseIfconfig == -1) // unknown - { - if(wxFileExists("/sbin/ifconfig")) - m_IfconfigPath = "/sbin/ifconfig"; - else if(wxFileExists("/usr/sbin/ifconfig")) - m_IfconfigPath = "/usr/sbin/ifconfig"; - } - - wxLogNull ln; // suppress all error messages - // Let´s try the ifconfig method first, should be fastest: - if(m_CanUseIfconfig != 0) // unknown or yes - { - wxASSERT(m_IfconfigPath.length()); - - wxString tmpfile = wxGetTempFileName("_wxdialuptest"); - wxString cmd = "/bin/sh -c \'"; - cmd << m_IfconfigPath << " >" << tmpfile << '\''; - /* I tried to add an option to wxExecute() to not close stdout, - so we could let ifconfig write directly to the tmpfile, but - this does not work. That should be faster, as it doesn´t call - the shell first. I have no idea why. :-( (KB) */ -#if 0 - // temporarily redirect stdout/stderr: - int - new_stdout = dup(STDOUT_FILENO), - new_stderr = dup(STDERR_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); - - int - // new stdout: - output_fd = open(tmpfile, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR), - // new stderr: - null_fd = open("/dev/null", O_CREAT, S_IRUSR|S_IWUSR); - // verify well behaved unix behaviour: - wxASSERT(output_fd == STDOUT_FILENO); - wxASSERT(null_fd == STDERR_FILENO); - int rc = wxExecute(m_IfconfigPath,TRUE /* sync */,NULL ,wxEXECUTE_DONT_CLOSE_FDS); - close(null_fd); close(output_fd); - // restore old stdout, stderr: - int test; - test = dup(new_stdout); close(new_stdout); wxASSERT(test == STDOUT_FILENO); - test = dup(new_stderr); close(new_stderr); wxASSERT(test == STDERR_FILENO); - if(rc == 0) -#endif - if(wxExecute(cmd,TRUE /* sync */) == 0) - { - m_CanUseIfconfig = 1; - wxFile file; - if( file.Open(tmpfile) ) - { - char *output = new char [file.Length()+1]; - output[file.Length()] = '\0'; - if(file.Read(output,file.Length()) == file.Length()) - { - if(strstr(output,"ppp") // ppp - || strstr(output,"sl") // slip - || strstr(output,"pl") // plip - ) - m_IsOnline = 1; - else - m_IsOnline = 0; - } - file.Close(); - delete [] output; - } - // else m_IsOnline remains -1 as we don't know for sure - } - else // could not run ifconfig correctly - m_CanUseIfconfig = 0; // don´t try again - (void) wxRemoveFile(tmpfile); - if(m_IsOnline != -1) // we are done - return; - } - - // second method: try to connect to well known host: - // This can be used under Win 9x, too! - struct hostent *hp; - struct sockaddr_in serv_addr; - int sockfd; - - m_IsOnline = 0; // assume false - if((hp = gethostbyname(m_BeaconHost)) == NULL) - return; // no DNS no net - - serv_addr.sin_family = hp->h_addrtype; - memcpy(&serv_addr.sin_addr,hp->h_addr, hp->h_length); - serv_addr.sin_port = htons(m_BeaconPort); - if( ( sockfd = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) - { - // sys_error("cannot create socket for gw"); - return; - } - if( connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) - { - //sys_error("cannot connect to server"); - return; - } - //connected! - close(sockfd); -} - - -/* static */ -wxDialUpManager * -wxDialUpManager::wxDialUpManager::Create(void) -{ - return new wxDialUpManagerImpl; -} - -#endif // wxUSE_DIALUP_MANAGER diff --git a/src/unix/threadpsx.cpp b/src/unix/threadpsx.cpp index 47e9a41e62..b4b91685b9 100644 --- a/src/unix/threadpsx.cpp +++ b/src/unix/threadpsx.cpp @@ -495,8 +495,8 @@ wxSemaError wxSemaphoreInternal::Wait() return wxSEMA_MISC_ERROR; wxLogTrace(TRACE_SEMA, - "Thread %ld finished waiting for semaphore, count = %u", - wxThread::GetCurrentId(), m_count); + "Thread %ld finished waiting for semaphore, count = %lu", + wxThread::GetCurrentId(), (unsigned long)m_count); } m_count--; @@ -553,9 +553,9 @@ wxSemaError wxSemaphoreInternal::Post() m_count++; wxLogTrace(TRACE_SEMA, - "Thread %ld about to signal semaphore, count = %u", - wxThread::GetCurrentId(), m_count); - + "Thread %ld about to signal semaphore, count = %lu", + wxThread::GetCurrentId(), (unsigned long)m_count); + return m_cond.Signal() == wxCOND_NO_ERROR ? wxSEMA_NO_ERROR : wxSEMA_MISC_ERROR; } @@ -620,7 +620,7 @@ public: }; wxLogTrace(TRACE_THREADS, _T("Thread %ld: %s => %s."), - GetId(), stateNames[m_state], stateNames[state]); + (long)GetId(), stateNames[m_state], stateNames[state]); #endif // __WXDEBUG__ m_state = state; @@ -696,8 +696,12 @@ void *wxThreadInternal::PthreadStart(wxThread *thread) { wxThreadInternal *pthread = thread->m_internal; - wxLogTrace(TRACE_THREADS, _T("Thread %ld started."), pthread->GetId()); - +#ifdef __VMS + wxLogTrace(TRACE_THREADS, _T("Thread %ld started."), (long long)pthread->GetId()); +#else + wxLogTrace(TRACE_THREADS, _T("Thread %ld started."), (long)pthread->GetId()); +#endif + // associate the thread pointer with the newly created thread so that // wxThread::This() will work int rc = pthread_setspecific(gs_keySelf, thread); @@ -734,13 +738,21 @@ void *wxThreadInternal::PthreadStart(wxThread *thread) { // call the main entry wxLogTrace(TRACE_THREADS, _T("Thread %ld about to enter its Entry()."), - pthread->GetId()); - +#ifdef __VMS + (long long)pthread->GetId()); +#else + (long)pthread->GetId()); +#endif + pthread->m_exitcode = thread->Entry(); wxLogTrace(TRACE_THREADS, _T("Thread %ld Entry() returned %lu."), - pthread->GetId(), (unsigned long)pthread->m_exitcode); - +#ifdef __VMS + (long long)pthread->GetId(), (unsigned long)pthread->m_exitcode); +#else + (long)pthread->GetId(), (unsigned long)pthread->m_exitcode); +#endif + { wxCriticalSectionLocker lock(thread->m_critsect); @@ -849,8 +861,12 @@ void wxThreadInternal::Wait() wxMutexGuiLeave(); wxLogTrace(TRACE_THREADS, - _T("Starting to wait for thread %ld to exit."), GetId()); - +#ifdef __VMS + _T("Starting to wait for thread %ld to exit."), (long long)GetId()); +#else + _T("Starting to wait for thread %ld to exit."), (long)GetId()); +#endif + // to avoid memory leaks we should call pthread_join(), but it must only be // done once so use a critical section to serialize the code below { @@ -862,7 +878,7 @@ void wxThreadInternal::Wait() // we're cancelled inside pthread_join(), things will almost // certainly break - but if we disable the cancellation, we // might deadlock - if ( pthread_join((pthread_t)GetId(), &m_exitcode) != 0 ) + if ( pthread_join(GetId(), &m_exitcode) != 0 ) { // this is a serious problem, so use wxLogError and not // wxLogDebug: it is possible to bring the system to its knees @@ -888,8 +904,12 @@ void wxThreadInternal::Pause() wxCHECK_RET( m_state == STATE_PAUSED, wxT("thread must first be paused with wxThread::Pause().") ); - wxLogTrace(TRACE_THREADS, _T("Thread %ld goes to sleep."), GetId()); - +#ifdef __VMS + wxLogTrace(TRACE_THREADS, _T("Thread %ld goes to sleep."), (long long)GetId()); +#else + wxLogTrace(TRACE_THREADS, _T("Thread %ld goes to sleep."), (long)GetId()); +#endif + // wait until the semaphore is Post()ed from Resume() m_semSuspend.Wait(); } @@ -903,8 +923,12 @@ void wxThreadInternal::Resume() // TestDestroy() since the last call to Pause() for example if ( IsReallyPaused() ) { - wxLogTrace(TRACE_THREADS, _T("Waking up thread %ld"), GetId()); - +#ifdef __VMS + wxLogTrace(TRACE_THREADS, _T("Waking up thread %ld"), (long long)GetId()); +#else + wxLogTrace(TRACE_THREADS, _T("Waking up thread %ld"), (long)GetId()); +#endif + // wake up Pause() m_semSuspend.Post(); @@ -914,7 +938,11 @@ void wxThreadInternal::Resume() else { wxLogTrace(TRACE_THREADS, _T("Thread %ld is not yet really paused"), - GetId()); +#ifdef __VMS + (long long)GetId()); +#else + (long)GetId()); +#endif } SetState(STATE_RUNNING); @@ -1598,8 +1626,9 @@ void wxThreadModule::OnExit() if ( nThreadsBeingDeleted > 0 ) { - wxLogTrace(TRACE_THREADS, _T("Waiting for %u threads to disappear"), - nThreadsBeingDeleted); + wxLogTrace(TRACE_THREADS, + _T("Waiting for %lu threads to disappear"), + (unsigned long)nThreadsBeingDeleted); // have to wait until all of them disappear gs_condAllDeleted->Wait(); @@ -1610,8 +1639,8 @@ void wxThreadModule::OnExit() size_t count = gs_allThreads.GetCount(); if ( count != 0u ) { - wxLogDebug(wxT("%u threads were not terminated by the application."), - count); + wxLogDebug(wxT("%lu threads were not terminated by the application."), + (unsigned long)count); } for ( size_t n = 0u; n < count; n++ ) @@ -1645,8 +1674,8 @@ static void ScheduleThreadForDeletion() gs_nThreadsBeingDeleted++; - wxLogTrace(TRACE_THREADS, _T("%u thread%s waiting to be deleted"), - gs_nThreadsBeingDeleted, + wxLogTrace(TRACE_THREADS, _T("%lu thread%s waiting to be deleted"), + (unsigned long)gs_nThreadsBeingDeleted, gs_nThreadsBeingDeleted == 1 ? "" : "s"); } @@ -1663,8 +1692,8 @@ static void DeleteThread(wxThread *This) wxCHECK_RET( gs_nThreadsBeingDeleted > 0, _T("no threads scheduled for deletion, yet we delete one?") ); - wxLogTrace(TRACE_THREADS, _T("%u scheduled for deletion threads left."), - gs_nThreadsBeingDeleted - 1); + wxLogTrace(TRACE_THREADS, _T("%lu scheduled for deletion threads left."), + (unsigned long)gs_nThreadsBeingDeleted - 1); if ( !--gs_nThreadsBeingDeleted ) { diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 445f88b9fa..c375770794 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -28,26 +28,32 @@ #include "wx/wfstream.h" +// not only the statfs syscall is called differently depending on platform, but +// one of its incarnations, statvfs(), takes different arguments under +// different platforms and even different versions of the same system (Solaris +// 7 and 8): if you want to test for this, don't forget that the problems only +// appear if the large files support is enabled #ifdef HAVE_STATFS -# ifdef __BSD__ -# include -# include -# else -# include -# endif + #ifdef __BSD__ + #include + #include + #else // !__BSD__ + #include + #endif // __BSD__/!__BSD__ + + #define wxStatfs statfs #endif // HAVE_STATFS -// not only the statfs syscall is called differently depending on platform, but -// we also can't use "struct statvfs" under Solaris because it breaks down if -// HAVE_LARGEFILE_SUPPORT == 1 and we must use statvfs_t instead #ifdef HAVE_STATVFS #include - #define statfs statvfs - #define wxStatFs statvfs_t -#elif HAVE_STATFS - #define wxStatFs struct statfs -#endif // HAVE_STAT[V]FS + #define wxStatfs statvfs +#endif // HAVE_STATVFS + +#if defined(HAVE_STATFS) || defined(HAVE_STATVFS) + // WX_STATFS_T is detected by configure + #define wxStatfs_t WX_STATFS_T +#endif #if wxUSE_GUI #include "wx/unix/execute.h" @@ -362,10 +368,10 @@ public: bool IsOpened() const { return !Eof(); } // return TRUE if we have anything to read, don't block - bool IsAvailable() const; + virtual bool CanRead() const; }; -bool wxPipeInputStream::IsAvailable() const +bool wxPipeInputStream::CanRead() const { if ( m_lasterror == wxSTREAM_EOF ) return FALSE; @@ -800,7 +806,12 @@ char *wxGetUserHome( const wxString &user ) if ((ptr = wxGetenv(wxT("HOME"))) != NULL) { +#if wxUSE_UNICODE + wxWCharBuffer buffer( ptr ); + return buffer; +#else return ptr; +#endif } if ((ptr = wxGetenv(wxT("USER"))) != NULL || (ptr = wxGetenv(wxT("LOGNAME"))) != NULL) { @@ -947,7 +958,7 @@ wxString wxGetOsDescription() #ifndef WXWIN_OS_DESCRIPTION #error WXWIN_OS_DESCRIPTION should be defined in config.h by configure #else - return WXWIN_OS_DESCRIPTION; + return wxString::FromAscii( WXWIN_OS_DESCRIPTION ); #endif } #endif @@ -1015,8 +1026,8 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) { #if defined(HAVE_STATFS) || defined(HAVE_STATVFS) // the case to "char *" is needed for AIX 4.3 - wxStatFs fs; - if ( statfs((char *)(const char*)path.fn_str(), &fs) != 0 ) + wxStatfs_t fs; + if ( wxStatfs((char *)(const char*)path.fn_str(), &fs) != 0 ) { wxLogSysError( wxT("Failed to get file system statistics") ); diff --git a/src/version.mak b/src/version.mak new file mode 100644 index 0000000000..40194d0f2c --- /dev/null +++ b/src/version.mak @@ -0,0 +1,25 @@ +############################################################################## +# Name: src/version.mak +# Purpose: file defining wxWindows version used by all other makefiles +# Author: Vadim Zeitlin +# Modified by: +# Created: 25.02.03 +# RCS-ID: $Id$ +# Copyright: (c) 2003 Vadim Zeitlin +# Licence: wxWindows license +############################################################################## + +wxMAJOR_VERSION=2 +wxMINOR_VERSION=4 +wxRELEASE_NUMBER=0 + +# release number if used in the DLL file names only for the unstable branch as +# for the stable branches the micro releases are supposed to be backwards +# compatible and so should have the same name or otherwise it would be +# impossible to use them without recompiling the applications (which is the +# whole goal of keeping them backwards compatible in the first place) +# +# As 2.4 is a stable branch, wxRELEASE_NUMBER_IFUNSTABLE should be empty +# so we end up with DLLs with only "24" in the name. Unstable branches +# should set it to $wxRELEASE_NUMBER +wxRELEASE_NUMBER_IFUNSTABLE= diff --git a/src/wxBase.dsp b/src/wxBase.dsp index bcc38cda8e..998c45807f 100644 --- a/src/wxBase.dsp +++ b/src/wxBase.dsp @@ -2,8 +2,8 @@ # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 # TARGTYPE "Win32 (x86) Static Library" 0x0104 +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=wxBase - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, @@ -32,6 +32,8 @@ CFG=wxBase - Win32 Debug # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe !IF "$(CFG)" == "wxBase - Win32 Release Unicode DLL" @@ -46,21 +48,18 @@ CFG=wxBase - Win32 Debug # PROP Intermediate_Dir "../BaseReleaseUnicodeDll" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MD /W4 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "WXBASEDLL_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W4 /O2 /I "../lib/basedllu" /I "../include" /I "./regex" /I "./zlib" /D "NDEBUG" /D wxUSE_GUI=0 /D "WIN32" /D WINVER=0x400 /D "WXMAKINGDLL" /D "_UNICODE" /D "UNICODE" /Yu"wx/wxprec.h" /FD /c -MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /i "../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase233u.dll" -# ADD LINK32 ../lib/zlib.lib ../lib/regex.lib kernel32.lib user32.lib advapi32.lib wsock32.lib shell32.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxbase233u.dll" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase24u.dll" +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlib.lib ../lib/regex.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxbase24u.dll" !ELSEIF "$(CFG)" == "wxBase - Win32 Debug Unicode DLL" @@ -75,22 +74,18 @@ LINK32=link.exe # PROP Intermediate_Dir "../BaseDebugUnicodeDll" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MDd /W4 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "WXBASEDLL_EXPORTS" /YX /FD /c # ADD CPP /nologo /MDd /W4 /Zi /Od /I "../lib/basedllud" /I "../include" /I "./regex" /I "./zlib" /D "_DEBUG" /D wxUSE_GUI=0 /D "WIN32" /D WINVER=0x400 /D "WXMAKINGDLL" /D "_UNICODE" /D "UNICODE" /Yu"wx/wxprec.h" /FD /c -MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /i "../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../lib/wxbase233ud.dll" /pdbtype:sept -# ADD LINK32 ../lib/zlibd.lib ../lib/regexd.lib kernel32.lib user32.lib advapi32.lib wsock32.lib shell32.lib /nologo /version:2.2 /dll /debug /machine:I386 /out:"../lib/wxbase233ud.dll" /pdbtype:sept - +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase24ud.dll" +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlibd.lib ../lib/regexd.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxbase24ud.dll" !ELSEIF "$(CFG)" == "wxBase - Win32 Release Unicode" # PROP BASE Use_MFC 0 @@ -103,10 +98,8 @@ LINK32=link.exe # PROP Output_Dir "..\lib" # PROP Intermediate_Dir "..\BaseReleaseUnicode" # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MD /W4 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MD /W4 /O2 /I "../lib/baseu" /I "../include" /I "./regex" /I "./zlib" /D "NDEBUG" /D wxUSE_GUI=0 /D "WIN32" /D WINVER=0x400 /D "_UNICODE" /D "UNICODE" /Yu"wx/wxprec.h" /FD /c -RSC=rc.exe # ADD BASE RSC /l 0x409 # ADD RSC /l 0x409 BSC32=bscmake.exe @@ -128,15 +121,13 @@ LIB32=link.exe -lib # PROP Output_Dir "..\lib" # PROP Intermediate_Dir "..\BaseDebugUnicode" # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MDd /W4 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MDd /W4 /Zi /Od /I "../lib/baseud" /I "../include" /I "./regex" /I "./zlib" /D "_DEBUG" /D wxUSE_GUI=0 /D "WIN32" /D "__WXDEBUG__" /D WINVER=0x400 /D "_UNICODE" /D "UNICODE" /Yu"wx/wxprec.h" /FD /c -RSC=rc.exe # ADD BASE RSC /l 0x409 # ADD RSC /l 0x409 BSC32=bscmake.exe # ADD BASE BSC32 /nologo -# ADD BSC32 /nologo +# ADD BSC32 /nologo /o"../lib/wxbase.bsc" LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\wxbaseud.lib" @@ -154,21 +145,18 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "../BaseReleaseDll" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MD /W4 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "WXBASEDLL_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W4 /O2 /I "../lib/basedll" /I "../include" /I "./regex" /I "./zlib" /D "NDEBUG" /D wxUSE_GUI=0 /D "WIN32" /D WINVER=0x400 /D "WXMAKINGDLL" /Yu"wx/wxprec.h" /FD /c -MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /i "../include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase233.dll" -# ADD LINK32 ../lib/zlib.lib ../lib/regex.lib kernel32.lib user32.lib advapi32.lib wsock32.lib shell32.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxbase233.dll" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../lib/wxbase24.dll" +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlib.lib ../lib/regex.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxbase24.dll" !ELSEIF "$(CFG)" == "wxBase - Win32 Debug DLL" @@ -183,21 +171,18 @@ LINK32=link.exe # PROP Intermediate_Dir "../BaseDebugDll" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MDd /W4 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "WXBASEDLL_EXPORTS" /YX /FD /c # ADD CPP /nologo /MDd /W4 /Zi /Od /I "../lib/basedlld" /I "../include" /I "./regex" /I "./zlib" /D "_DEBUG" /D wxUSE_GUI=0 /D "WIN32" /D WINVER=0x400 /D "WXMAKINGDLL" /Yu"wx/wxprec.h" /FD /c -MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /i "../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../lib/wxbase233d.dll" /pdbtype:sept -# ADD LINK32 ../lib/zlibd.lib ../lib/regexd.lib kernel32.lib user32.lib advapi32.lib wsock32.lib shell32.lib /nologo /version:2.2 /dll /debug /machine:I386 /out:"../lib/wxbase233d.dll" /pdbtype:sept +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxbase24d.dll" +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ../lib/zlibd.lib ../lib/regexd.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxbase24d.dll" !ELSEIF "$(CFG)" == "wxBase - Win32 Release" @@ -211,10 +196,8 @@ LINK32=link.exe # PROP Output_Dir "..\lib" # PROP Intermediate_Dir "..\BaseRelease" # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MD /W4 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MD /W4 /O2 /I "../lib/base" /I "../include" /I "./regex" /I "./zlib" /D "NDEBUG" /D wxUSE_GUI=0 /D "WIN32" /D WINVER=0x400 /Yu"wx/wxprec.h" /FD /c -RSC=rc.exe # ADD BASE RSC /l 0x409 # ADD RSC /l 0x409 BSC32=bscmake.exe @@ -222,7 +205,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo +# ADD LIB32 /nologo /out:"..\lib\wxbase.lib" !ELSEIF "$(CFG)" == "wxBase - Win32 Debug" @@ -236,15 +219,13 @@ LIB32=link.exe -lib # PROP Output_Dir "..\lib" # PROP Intermediate_Dir "..\BaseDebug" # PROP Target_Dir "" -CPP=cl.exe # ADD BASE CPP /nologo /MDd /W4 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MDd /W4 /Zi /Od /I "../lib/based" /I "../include" /I "./regex" /I "./zlib" /D "_DEBUG" /D wxUSE_GUI=0 /D "WIN32" /D "__WXDEBUG__" /D WINVER=0x400 /Yu"wx/wxprec.h" /FD /c -RSC=rc.exe # ADD BASE RSC /l 0x409 # ADD RSC /l 0x409 BSC32=bscmake.exe # ADD BASE BSC32 /nologo -# ADD BSC32 /nologo +# ADD BSC32 /nologo /o"../lib/wxbase.bsc" LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\lib\wxbased.lib" @@ -261,6 +242,7 @@ LIB32=link.exe -lib # Name "wxBase - Win32 Debug DLL" # Name "wxBase - Win32 Release" # Name "wxBase - Win32 Debug" + # Begin Group "Common Files" # PROP Default_Filter "" @@ -322,11 +304,6 @@ SOURCE=.\common\event.cpp # End Source File # Begin Source File -SOURCE=.\common\extended.c -# SUBTRACT CPP /YX /Yc /Yu -# End Source File -# Begin Source File - SOURCE=.\common\ffile.cpp # End Source File # Begin Source File @@ -383,10 +360,6 @@ SOURCE=.\common\http.cpp # End Source File # Begin Source File -SOURCE=.\common\init.cpp -# End Source File -# Begin Source File - SOURCE=.\common\intl.cpp # End Source File # Begin Source File @@ -499,11 +472,6 @@ SOURCE=.\common\txtstrm.cpp # End Source File # Begin Source File -SOURCE=.\common\unzip.c -# SUBTRACT CPP /YX /Yc /Yu -# End Source File -# Begin Source File - SOURCE=.\common\url.cpp # End Source File # Begin Source File @@ -530,32 +498,38 @@ SOURCE=.\common\zipstrm.cpp SOURCE=.\common\zstream.cpp # End Source File +# Begin Source File + +SOURCE=.\common\init.cpp +# End Source File + +# Begin Source File + +SOURCE=.\common\extended.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=.\common\unzip.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File + # End Group # Begin Group "MSW Files" # PROP Default_Filter "" # Begin Source File -SOURCE=.\msw\dde.cpp -# End Source File -# Begin Source File - -SOURCE=.\msw\dir.cpp -# End Source File -# Begin Source File - SOURCE=.\msw\dummy.cpp # ADD CPP /Yc"wx/wxprec.h" # End Source File # Begin Source File -SOURCE=.\msw\gsocket.c -# SUBTRACT CPP /YX /Yc /Yu +SOURCE=.\msw\dde.cpp # End Source File # Begin Source File -SOURCE=.\msw\gsockmsw.c -# SUBTRACT CPP /YX /Yc /Yu +SOURCE=.\msw\dir.cpp # End Source File # Begin Source File @@ -593,6 +567,18 @@ SOURCE=.\msw\utilsexc.cpp SOURCE=.\msw\volume.cpp # End Source File + +# Begin Source File + +SOURCE=.\msw\gsocket.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=.\msw\gsockmsw.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File + # End Group # Begin Group "Headers" @@ -603,9 +589,7 @@ SOURCE=.\msw\volume.cpp # Begin Source File SOURCE=..\include\wx\msw\setup.h - !IF "$(CFG)" == "wxBase - Win32 Release Unicode DLL" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h @@ -613,19 +597,14 @@ InputPath=..\include\wx\msw\setup.h copy "$(InputPath)" ..\lib\basedllu\wx\setup.h # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Debug Unicode DLL" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h "../lib/basedllud/wx/setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" copy "$(InputPath)" ..\lib\basedllud\wx\setup.h - # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Release Unicode" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h @@ -633,9 +612,7 @@ InputPath=..\include\wx\msw\setup.h copy "$(InputPath)" ..\lib\baseu\wx\setup.h # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Debug Unicode" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h @@ -643,9 +620,7 @@ InputPath=..\include\wx\msw\setup.h copy "$(InputPath)" ..\lib\baseud\wx\setup.h # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Release DLL" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h @@ -653,19 +628,14 @@ InputPath=..\include\wx\msw\setup.h copy "$(InputPath)" ..\lib\basedll\wx\setup.h # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Debug DLL" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h "../lib/basedlld/wx/setup.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" copy "$(InputPath)" ..\lib\basedlld\wx\setup.h - # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Release" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h @@ -673,9 +643,7 @@ InputPath=..\include\wx\msw\setup.h copy "$(InputPath)" ..\lib\base\wx\setup.h # End Custom Build - !ELSEIF "$(CFG)" == "wxBase - Win32 Debug" - # Begin Custom Build - Copying $(InputPath) to $(TargetDir) InputPath=..\include\wx\msw\setup.h @@ -683,7 +651,6 @@ InputPath=..\include\wx\msw\setup.h copy "$(InputPath)" ..\lib\based\wx\setup.h # End Custom Build - !ENDIF # End Source File @@ -745,6 +712,10 @@ SOURCE=..\include\wx\db.h # End Source File # Begin Source File +SOURCE=..\include\wx\dbkeyg.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\dbtable.h # End Source File # Begin Source File @@ -1035,6 +1006,7 @@ SOURCE=..\include\wx\zipstrm.h SOURCE=..\include\wx\zstream.h # End Source File + # End Group # Begin Group "MSW" @@ -1045,12 +1017,17 @@ SOURCE=..\include\wx\msw\dde.h # End Source File # Begin Source File +SOURCE=..\include\wx\msw\gccpriv.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\msw\mimetype.h # End Source File # Begin Source File SOURCE=..\include\wx\msw\winundef.h # End Source File + # End Group # End Group # End Target diff --git a/src/wxUniv.dsp b/src/wxUniv.dsp index b168384a27..439a974655 100644 --- a/src/wxUniv.dsp +++ b/src/wxUniv.dsp @@ -49,7 +49,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo +# ADD LIB32 /nologo /out:"..\lib\wxuniv.lib" !ELSEIF "$(CFG)" == "wxUniv - Win32 Debug" @@ -221,11 +221,6 @@ SOURCE=.\common\event.cpp # End Source File # Begin Source File -SOURCE=.\common\extended.c -# SUBTRACT CPP /YX /Yc /Yu -# End Source File -# Begin Source File - SOURCE=.\common\fddlgcmn.cpp # End Source File # Begin Source File @@ -554,11 +549,6 @@ SOURCE=.\common\txtstrm.cpp # End Source File # Begin Source File -SOURCE=.\common\unzip.c -# SUBTRACT CPP /YX /Yc /Yu -# End Source File -# Begin Source File - SOURCE=.\common\url.cpp # End Source File # Begin Source File @@ -609,6 +599,18 @@ SOURCE=.\common\zipstrm.cpp SOURCE=.\common\zstream.cpp # End Source File + +# Begin Source File + +SOURCE=.\common\extended.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=.\common\unzip.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File + # End Group # Begin Group "Generic Files" @@ -793,6 +795,7 @@ SOURCE=.\generic\treelay.cpp SOURCE=.\generic\wizard.cpp # End Source File + # End Group # Begin Group "wxHTML Files" @@ -863,10 +866,6 @@ SOURCE=.\html\m_list.cpp # End Source File # Begin Source File -SOURCE=.\html\m_meta.cpp -# End Source File -# Begin Source File - SOURCE=.\html\m_pre.cpp # End Source File # Begin Source File @@ -881,12 +880,18 @@ SOURCE=.\html\m_tables.cpp SOURCE=.\html\winpars.cpp # End Source File + # End Group # Begin Group "MSW Files" # PROP Default_Filter "" # Begin Source File +SOURCE=.\msw\dummy.cpp +# ADD CPP /Yc"wx/wxprec.h" +# End Source File +# Begin Source File + SOURCE=.\msw\app.cpp # End Source File # Begin Source File @@ -943,6 +948,10 @@ SOURCE=.\msw\dde.cpp # End Source File # Begin Source File +SOURCE=.\msw\dialup.cpp +# End Source File +# Begin Source File + SOURCE=.\msw\dib.cpp # End Source File # Begin Source File @@ -951,11 +960,6 @@ SOURCE=.\msw\dir.cpp # End Source File # Begin Source File -SOURCE=.\msw\dummy.cpp -# ADD CPP /Yc"wx/wxprec.h" -# End Source File -# Begin Source File - SOURCE=.\msw\evtloop.cpp # End Source File # Begin Source File @@ -980,13 +984,19 @@ SOURCE=.\msw\gdiobj.cpp # End Source File # Begin Source File -SOURCE=.\msw\gsocket.c -# SUBTRACT CPP /YX /Yc /Yu +SOURCE=.\msw\glcanvas.cpp # End Source File # Begin Source File -SOURCE=.\msw\gsockmsw.c -# SUBTRACT CPP /YX /Yc /Yu +SOURCE=.\msw\helpbest.cpp +# End Source File +# Begin Source File + +SOURCE=.\msw\helpchm.cpp +# End Source File +# Begin Source File + +SOURCE=.\msw\helpwin.cpp # End Source File # Begin Source File @@ -994,6 +1004,10 @@ SOURCE=.\msw\icon.cpp # End Source File # Begin Source File +SOURCE=.\msw\joystick.cpp +# End Source File +# Begin Source File + SOURCE=.\msw\main.cpp # End Source File # Begin Source File @@ -1034,6 +1048,10 @@ SOURCE=.\msw\snglinst.cpp # End Source File # Begin Source File +SOURCE=.\msw\taskbar.cpp +# End Source File +# Begin Source File + SOURCE=.\msw\thread.cpp # End Source File # Begin Source File @@ -1042,6 +1060,10 @@ SOURCE=.\msw\timer.cpp # End Source File # Begin Source File +SOURCE=.\msw\tooltip.cpp +# End Source File +# Begin Source File + SOURCE=.\msw\toplevel.cpp # End Source File # Begin Source File @@ -1058,28 +1080,28 @@ SOURCE=.\msw\volume.cpp # End Source File # Begin Source File +SOURCE=.\msw\wave.cpp +# End Source File +# Begin Source File + SOURCE=.\msw\window.cpp # End Source File + +# Begin Source File + +SOURCE=.\msw\gsocket.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=.\msw\gsockmsw.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File + # End Group # Begin Group "Universal Files" # PROP Default_Filter "" -# Begin Group "Theme Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\univ\themes\gtk.cpp -# End Source File -# Begin Source File - -SOURCE=.\univ\themes\metal.cpp -# End Source File -# Begin Source File - -SOURCE=.\univ\themes\win32.cpp -# End Source File -# End Group # Begin Source File SOURCE=.\univ\bmpbuttn.cpp @@ -1216,6 +1238,24 @@ SOURCE=.\univ\topluniv.cpp SOURCE=.\univ\winuniv.cpp # End Source File + +# Begin Group "Theme Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\univ\themes\gtk.cpp +# End Source File +# Begin Source File + +SOURCE=.\univ\themes\metal.cpp +# End Source File +# Begin Source File + +SOURCE=.\univ\themes\win32.cpp +# End Source File + +# End Group # End Group # Begin Group "Headers" @@ -1226,9 +1266,7 @@ SOURCE=.\univ\winuniv.cpp # Begin Source File SOURCE=..\include\wx\univ\setup.h - !IF "$(CFG)" == "wxUniv - Win32 Release" - # Begin Custom Build - Creating lib\univ\wx\setup.h from $(InputPath) InputPath=..\include\wx\univ\setup.h @@ -1236,9 +1274,7 @@ InputPath=..\include\wx\univ\setup.h copy "$(InputPath)" ..\lib\univ\wx\setup.h # End Custom Build - !ELSEIF "$(CFG)" == "wxUniv - Win32 Debug" - # Begin Custom Build - Creating lib\univd\wx\setup.h from $(InputPath) InputPath=..\include\wx\univ\setup.h @@ -1246,9 +1282,7 @@ InputPath=..\include\wx\univ\setup.h copy "$(InputPath)" ..\lib\univd\wx\setup.h # End Custom Build - !ENDIF - # End Source File # End Group # Begin Group "Common" @@ -1896,6 +1930,10 @@ SOURCE=..\include\wx\proplist.h # End Source File # Begin Source File +SOURCE=..\include\wx\quantize.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\radiobox.h # End Source File # Begin Source File @@ -2202,6 +2240,7 @@ SOURCE=..\include\wx\zipstrm.h SOURCE=..\include\wx\zstream.h # End Source File + # End Group # Begin Group "MSW" @@ -2292,6 +2331,10 @@ SOURCE=..\include\wx\generic\listctrl.h # End Source File # Begin Source File +SOURCE=..\include\wx\generic\mdig.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\generic\msgdlgg.h # End Source File # Begin Source File @@ -2366,6 +2409,7 @@ SOURCE=..\include\wx\generic\treectlg.h SOURCE=..\include\wx\generic\wizard.h # End Source File + # End Group # Begin Group "HTML" @@ -2422,6 +2466,7 @@ SOURCE=..\include\wx\html\m_templ.h SOURCE=..\include\wx\html\winpars.h # End Source File + # End Group # Begin Group "Universal" diff --git a/src/wxWindows.dsp b/src/wxWindows.dsp index c4c81f4046..998b94c1e9 100644 --- a/src/wxWindows.dsp +++ b/src/wxWindows.dsp @@ -58,8 +58,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw233u.dll" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxmsw233u.dll" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw24u.dll" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxmsw24u.dll" !ELSEIF "$(CFG)" == "wxWindows - Win32 Debug Unicode DLL" @@ -84,8 +84,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw233ud.dll" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo /version:2.3 /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw233ud.dll" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw24ud.dll" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxmsw24ud.dll" !ELSEIF "$(CFG)" == "wxWindows - Win32 Release Unicode" @@ -156,8 +156,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw233.dll" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /version:2.3 /dll /machine:I386 /out:"../lib/wxmsw233.dll" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /dll /machine:I386 /out:"../lib/wxmsw24.dll" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpeg.lib ..\lib\tiff.lib ..\lib\png.lib ..\lib\regex.lib ..\lib\zlib.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxmsw24.dll" !ELSEIF "$(CFG)" == "wxWindows - Win32 Debug DLL" @@ -182,8 +182,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw233d.dll" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo /version:2.3 /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw233d.dll" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /dll /debug /machine:I386 /pdbtype:sept /out:"../lib/wxmsw24d.dll" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib odbc32.lib uuid.lib rpcrt4.lib comctl32.lib wsock32.lib winmm.lib ..\lib\jpegd.lib ..\lib\tiffd.lib ..\lib\pngd.lib ..\lib\regexd.lib ..\lib\zlibd.lib /nologo /version:2.4 /dll /machine:I386 /out:"../lib/wxmsw24d.dll" !ELSEIF "$(CFG)" == "wxWindows - Win32 Release" @@ -975,10 +975,6 @@ SOURCE=.\html\m_list.cpp # End Source File # Begin Source File -SOURCE=.\html\m_meta.cpp -# End Source File -# Begin Source File - SOURCE=.\html\m_pre.cpp # End Source File # Begin Source File @@ -1005,6 +1001,37 @@ SOURCE=.\msw\dummy.cpp # End Source File # Begin Source File +SOURCE=.\msw\version.rc + +!IF "$(CFG)" == "wxWindows - Win32 Release Unicode DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug Unicode DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Release DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug DLL" + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "wxWindows - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + SOURCE=.\msw\accel.cpp # End Source File # Begin Source File @@ -1423,7 +1450,6 @@ SOURCE=.\msw\gsockmsw.c # SUBTRACT CPP /YX /Yc /Yu # End Source File -# End Group # Begin Group "OLE Files" # PROP Default_Filter "" @@ -1452,6 +1478,7 @@ SOURCE=.\msw\ole\oleutils.cpp SOURCE=.\msw\ole\uuid.cpp # End Source File +# End Group # End Group # Begin Group "Headers" @@ -2174,6 +2201,10 @@ SOURCE=..\include\wx\proplist.h # End Source File # Begin Source File +SOURCE=..\include\wx\quantize.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\radiobox.h # End Source File # Begin Source File @@ -2948,6 +2979,10 @@ SOURCE=..\include\wx\generic\listctrl.h # End Source File # Begin Source File +SOURCE=..\include\wx\generic\mdig.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\generic\msgdlgg.h # End Source File # Begin Source File diff --git a/src/wxWindows.pbproj/project.pbxproj b/src/wxWindows.pbproj/project.pbxproj index 203a80f71b..323083eb5c 100644 --- a/src/wxWindows.pbproj/project.pbxproj +++ b/src/wxWindows.pbproj/project.pbxproj @@ -29,6 +29,7 @@ 4F0BB7EC011F40E904CA0E50, 4F0BB7ED011F40E904CA0E50, ); + hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 0867D691FE84028FC02AAC07; productRefGroup = 034768DDFF38A45A11DB9C8B; @@ -122,6 +123,7 @@ refType = 0; }; F58E04FD02F11FA701A8020C = { + fileEncoding = 5; isa = PBXFileReference; path = msgout.cpp; refType = 4; @@ -147,8 +149,9 @@ isa = PBXShellScriptBuildPhase; neededFileNames = ( ); + runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# Create wx include directory if necessary\nif [ ! -d \"$SYMROOT/include/wx\" ]; then\n mkdir -p \"$SYMROOT/include/wx\" || exit 1\nfi\n# Copy setup0.h to setup.h\nif [ ! -f \"$SYMROOT/include/wx/setup.h\" ]; then\n cp \"$SRCROOT/../include/wx/mac/setup0.h\" \"$SYMROOT/include/wx/setup.h\" || exit 1\nfi\n# Generate lexer\nif [ ! -f \"$SYMROOT/lexer.c\" -o \"$SYMROOT/lexer.c\" -ot \"$SRCROOT/common/lexer.l\" ]; then\n flex \"$SRCROOT/common/lexer.l\" || exit 1\n sed -e \"s;$SRCROOT/common/lex.yy.c;lexer.l;g\" < lex.yy.c | \\\n sed -e \"s/yy/PROIO_yy/g\" | \\\n sed -e \"s/input/PROIO_input/g\" | \\\n sed -e \"s/unput/PROIO_unput/g\" > \"$SYMROOT/lexer.c\" || exit 1\n rm -f lex.yy.c\nfi\n# Generate parser\nif [ ! -f \"$SYMROOT/parser.c\" -o \"$SYMROOT/parser.c\" -ot \"$SRCROOT/common/parser.y\" ]; then\n bison -y \"$SRCROOT/common/parser.y\" || exit 1\n sed -e \"s;$SRCROOT/common/y.tab.c;parser.y;g\" < y.tab.c | \\\n sed -e \"s/BUFSIZ/5000/g\" | \\\n sed -e \"s/YYLMAX 200/YYLMAX 5000/g\" | \\\n sed -e \"s/yy/PROIO_yy/g\" | \\\n sed -e \"s/input/PROIO_input/g\" | \\\n sed -e \"s/unput/PROIO_unput/g\" > \"$SYMROOT/parser.c\" || exit 1\n rm -f y.tab.c\nfi"; + shellScript = "# Create wx include directory if necessary\nif [ ! -d \"$SYMROOT/include/wx\" ]; then\n mkdir -p \"$SYMROOT/include/wx\" || exit 1\nfi\n# Copy setup0.h to setup.h\nif [ ! -f \"$SYMROOT/include/wx/setup.h\" ]; then\n cp \"$SRCROOT/../include/wx/mac/setup0.h\" \"$SYMROOT/include/wx/setup.h\" || exit 1\nfi\n# Generate lexer\nif [ ! -f \"$SYMROOT/lexer.c\" -o \"$SYMROOT/lexer.c\" -ot \"$SRCROOT/common/lexer.l\" ]; then\n flex \"$SRCROOT/common/lexer.l\" || exit 1\n sed -e \"s;$SRCROOT/common/lex.yy.c;lexer.l;g\" < lex.yy.c | \\\n sed -e \"s/yy/PROIO_yy/g\" | \\\n sed -e \"s/input/PROIO_input/g\" | \\\n sed -e \"s/unput/PROIO_unput/g\" > \"$SYMROOT/lexer.c\" || exit 1\n rm -f lex.yy.c\nfi\n# Generate parser\nif [ ! -f \"$SYMROOT/parser.c\" -o \"$SYMROOT/parser.c\" -ot \"$SRCROOT/common/parser.y\" ]; then\n bison -y \"$SRCROOT/common/parser.y\" || exit 1\n sed -e \"s;$SRCROOT/common/y.tab.c;parser.y;g\" < y.tab.c | \\\n sed -e \"s/BUFSIZ/5000/g\" | \\\n sed -e \"s/YYLMAX 200/YYLMAX 5000/g\" | \\\n sed -e \"s/yy/PROIO_yy/g\" | \\\n sed -e \"s/input/PROIO_input/g\" | \\\n sed -e \"s/unput/PROIO_unput/g\" > \"$SYMROOT/parser.c\" || exit 1\n rm -f y.tab.c\nfi"; }; F5955E9D02CBA8B501000133 = { fileRef = F5A8619E01FA022C0175ACA7; @@ -1248,12 +1251,6 @@ settings = { }; }; - F5955F5D02CBAB2701000133 = { - fileRef = F5A8611401FA022C0175ACA7; - isa = PBXBuildFile; - settings = { - }; - }; F5955F5E02CBAB2701000133 = { fileRef = F5A8611301FA022C0175ACA7; isa = PBXBuildFile; @@ -3534,12 +3531,6 @@ settings = { }; }; - F5A0C5E802CF70D701000133 = { - fileRef = F5A8611401FA022C0175ACA7; - isa = PBXBuildFile; - settings = { - }; - }; F5A0C5E902CF70D701000133 = { fileRef = F5A8611301FA022C0175ACA7; isa = PBXBuildFile; @@ -4666,10 +4657,12 @@ F5A85C1E01FA022A0175ACA7, F5A85C1F01FA022A0175ACA7, F5A85C2001FA022A0175ACA7, + F5CC83D90379C17C01000133, F5A85C2101FA022A0175ACA7, F5A85C2201FA022A0175ACA7, F5A85C2301FA022A0175ACA7, F5A85C2401FA022A0175ACA7, + F5CC83DA0379C17C01000133, F5A85C2501FA022A0175ACA7, F5A85C2601FA022A0175ACA7, F5A85C2701FA022A0175ACA7, @@ -4703,6 +4696,7 @@ F5A85C4401FA022A0175ACA7, F5A85C4501FA022A0175ACA7, F5A85C4601FA022A0175ACA7, + F5CC83DF0379C20901000133, F5A85C4701FA022A0175ACA7, F5A85C4801FA022A0175ACA7, F5A85C4901FA022A0175ACA7, @@ -4716,6 +4710,7 @@ F5A85C5101FA022A0175ACA7, F5A85C5201FA022A0175ACA7, F5A85C5301FA022A0175ACA7, + F5CC83E00379C20901000133, F5A85C5401FA022A0175ACA7, F5A85C5501FA022A0175ACA7, F5A85C5601FA022A0175ACA7, @@ -4729,6 +4724,7 @@ F5A85C5E01FA022A0175ACA7, F5A85C5F01FA022A0175ACA7, F5A85C6001FA022A0175ACA7, + F5CC83E10379C20901000133, F5A85C6101FA022A0175ACA7, F5A85C6201FA022A0175ACA7, F5A85C6301FA022A0175ACA7, @@ -4756,12 +4752,14 @@ F5A85CB301FA022A0175ACA7, F5A85CB401FA022A0175ACA7, F5A85CF901FA022B0175ACA7, + F5CC83E20379C20901000133, F5A85CFA01FA022B0175ACA7, F5A85CFB01FA022B0175ACA7, F5A85CFC01FA022B0175ACA7, F5A85CFD01FA022B0175ACA7, F5A85CFF01FA022B0175ACA7, F5A85D2101FA022B0175ACA7, + F5CC83E30379C20901000133, F5A85D2201FA022B0175ACA7, F5A85D2301FA022B0175ACA7, F5A85D2401FA022B0175ACA7, @@ -4775,6 +4773,7 @@ F5A85D2C01FA022B0175ACA7, F5A85D2D01FA022B0175ACA7, F5A85D2E01FA022B0175ACA7, + F5CC83E40379C20901000133, F5A85D2F01FA022B0175ACA7, F5A85D3001FA022B0175ACA7, F5A85D3101FA022B0175ACA7, @@ -4782,6 +4781,7 @@ F5A85D3301FA022B0175ACA7, F5A85D3401FA022B0175ACA7, F5A85D3501FA022B0175ACA7, + F5CC83E50379C20901000133, F5A85D3601FA022B0175ACA7, F5A85D3701FA022B0175ACA7, F5A8703A01FA0B7F0175ACA7, @@ -4800,6 +4800,7 @@ F5A85DAE01FA022B0175ACA7, F5A85DAF01FA022B0175ACA7, F5A85DF101FA022B0175ACA7, + F5CC83E60379C20901000133, F5A85DF201FA022B0175ACA7, F5A85E9701FA022B0175ACA7, F5A85E9801FA022B0175ACA7, @@ -4820,6 +4821,7 @@ F5A85F0C01FA022B0175ACA7, F5A85F0D01FA022B0175ACA7, F5A85F0E01FA022B0175ACA7, + F5CC83E70379C20901000133, F5A85F1401FA022B0175ACA7, F5A85F1501FA022B0175ACA7, F5A85F1601FA022B0175ACA7, @@ -4863,6 +4865,7 @@ F5A85F3D01FA022B0175ACA7, F5A85F3E01FA022B0175ACA7, F5A85F3F01FA022B0175ACA7, + F5CC83E80379C20901000133, F5A85F4001FA022B0175ACA7, F5A85F4101FA022B0175ACA7, F5A85F4201FA022B0175ACA7, @@ -4885,6 +4888,7 @@ F5A85F7E01FA022B0175ACA7, F5A85F7F01FA022B0175ACA7, F5A85F8001FA022B0175ACA7, + F5CC83E90379C20901000133, F5A85F8201FA022B0175ACA7, F5A85F8301FA022B0175ACA7, F5A85F8401FA022B0175ACA7, @@ -4904,431 +4908,517 @@ refType = 4; }; F5A85C1E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = accel.h; refType = 4; }; F5A85C1F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = app.h; refType = 4; }; F5A85C2001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = arrimpl.cpp; refType = 4; }; F5A85C2101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = bitmap.h; refType = 4; }; F5A85C2201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = bmpbuttn.h; refType = 4; }; F5A85C2301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = brush.h; refType = 4; }; F5A85C2401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = buffer.h; refType = 4; }; F5A85C2501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = busyinfo.h; refType = 4; }; F5A85C2601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = button.h; refType = 4; }; F5A85C2701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = calctrl.h; refType = 4; }; F5A85C2801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = caret.h; refType = 4; }; F5A85C2901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = checkbox.h; refType = 4; }; F5A85C2A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = checklst.h; refType = 4; }; F5A85C2B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = chkconf.h; refType = 4; }; F5A85C2C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = choicdlg.h; refType = 4; }; F5A85C2D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = choice.h; refType = 4; }; F5A85C2E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = clipbrd.h; refType = 4; }; F5A85C2F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = clntdata.h; refType = 4; }; F5A85C3001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cmdline.h; refType = 4; }; F5A85C3101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cmdproc.h; refType = 4; }; F5A85C3201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cmndata.h; refType = 4; }; F5A85C3301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colordlg.h; refType = 4; }; F5A85C3401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colour.h; refType = 4; }; F5A85C3501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = combobox.h; refType = 4; }; F5A85C3601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = confbase.h; refType = 4; }; F5A85C3701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = config.h; refType = 4; }; F5A85C3801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = containr.h; refType = 4; }; F5A85C3901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = control.h; refType = 4; }; F5A85C3A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cshelp.h; refType = 4; }; F5A85C3B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = ctrlsub.h; refType = 4; }; F5A85C3C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cursor.h; refType = 4; }; F5A85C3D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dataobj.h; refType = 4; }; F5A85C3E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = date.h; refType = 4; }; F5A85C3F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = datetime.h; refType = 4; }; F5A85C4101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = datstrm.h; refType = 4; }; F5A85C4201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = db.h; refType = 4; }; F5A85C4301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dbgrid.h; refType = 4; }; F5A85C4401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dbkeyg.h; refType = 4; }; F5A85C4501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dbtable.h; refType = 4; }; F5A85C4601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dc.h; refType = 4; }; F5A85C4701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcclient.h; refType = 4; }; F5A85C4801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcmemory.h; refType = 4; }; F5A85C4901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcprint.h; refType = 4; }; F5A85C4A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcps.h; refType = 4; }; F5A85C4B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcscreen.h; refType = 4; }; F5A85C4C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dde.h; refType = 4; }; F5A85C4D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = debug.h; refType = 4; }; F5A85C4E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = defs.h; refType = 4; }; F5A85C4F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dialog.h; refType = 4; }; F5A85C5001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dialup.h; refType = 4; }; F5A85C5101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dir.h; refType = 4; }; F5A85C5201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirctrl.h; refType = 4; }; F5A85C5301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirdlg.h; refType = 4; }; F5A85C5401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dnd.h; refType = 4; }; F5A85C5501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = docmdi.h; refType = 4; }; F5A85C5601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = docview.h; refType = 4; }; F5A85C5701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dragimag.h; refType = 4; }; F5A85C5801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dynarray.h; refType = 4; }; F5A85C5901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dynlib.h; refType = 4; }; F5A85C5A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dynload.h; refType = 4; }; F5A85C5B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = effects.h; refType = 4; }; F5A85C5C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = encconv.h; refType = 4; }; F5A85C5D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = event.h; refType = 4; }; F5A85C5E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = evtloop.h; refType = 4; }; F5A85C5F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = expr.h; refType = 4; }; F5A85C6001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fdrepdlg.h; refType = 4; }; F5A85C6101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = ffile.h; refType = 4; }; F5A85C6201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = file.h; refType = 4; }; F5A85C6301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fileconf.h; refType = 4; }; F5A85C6401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filedlg.h; refType = 4; }; F5A85C6501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filefn.h; refType = 4; }; F5A85C6601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filename.h; refType = 4; }; F5A85C6701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filesys.h; refType = 4; }; F5A85C6801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = font.h; refType = 4; }; F5A85C6901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontdlg.h; refType = 4; }; F5A85C6A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontenc.h; refType = 4; }; F5A85C6B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontenum.h; refType = 4; }; F5A85C6C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontmap.h; refType = 4; }; F5A85C6D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontutil.h; refType = 4; }; F5A85C6E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = frame.h; refType = 4; }; F5A85C6F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fs_inet.h; refType = 4; }; F5A85C7001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fs_mem.h; refType = 4; }; F5A85C7101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fs_zip.h; refType = 4; }; F5A85C7201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gauge.h; refType = 4; }; F5A85C7301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gdicmn.h; refType = 4; }; F5A85C7401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gdiobj.h; refType = 4; @@ -5383,261 +5473,313 @@ refType = 4; }; F5A85C7701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = accel.h; refType = 4; }; F5A85C7801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = calctrl.h; refType = 4; }; F5A85C7901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = caret.h; refType = 4; }; F5A85C7A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = choicdgg.h; refType = 4; }; F5A85C7B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colrdlgg.h; refType = 4; }; F5A85C7D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcpsg.h; refType = 4; }; F5A85C8001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirctrlg.h; refType = 4; }; F5A85C8101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirdlgg.h; refType = 4; }; F5A85C8201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dragimgg.h; refType = 4; }; F5A85C8501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fdrepdlg.h; refType = 4; }; F5A85C8601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filedlgg.h; refType = 4; }; F5A85C8801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontdlgg.h; refType = 4; }; F5A85C8901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = grid.h; refType = 4; }; F5A85C8A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gridctrl.h; refType = 4; }; F5A85C8B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gridg.h; refType = 4; }; F5A85C8C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gridsel.h; refType = 4; }; F5A85C8D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpext.h; refType = 4; }; F5A85C8E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helphtml.h; refType = 4; }; F5A85C8F01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpwxht.h; refType = 4; }; F5A85C9001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpxlp.h; refType = 4; }; F5A85C9201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imaglist.h; refType = 4; }; F5A85C9401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = laywin.h; refType = 4; }; F5A85C9501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listctrl.h; refType = 4; }; F5A85C9701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = msgdlgg.h; refType = 4; }; F5A85C9901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = notebook.h; refType = 4; }; F5A85C9A01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = paletteg.h; refType = 4; }; F5A85C9B01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = panelg.h; refType = 4; }; F5A85C9C01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printps.h; refType = 4; }; F5A85C9D01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = prntdlgg.h; refType = 4; }; F5A85C9E01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = progdlgg.h; refType = 4; }; F5A85CA101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sashwin.h; refType = 4; }; F5A85CA201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = scrolwin.h; refType = 4; }; F5A85CA301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spinctlg.h; refType = 4; }; F5A85CA401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = splash.h; refType = 4; }; F5A85CA501FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = splitter.h; refType = 4; }; F5A85CA601FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statline.h; refType = 4; }; F5A85CA701FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statusbr.h; refType = 4; }; F5A85CA801FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tabg.h; refType = 4; }; F5A85CA901FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textdlgg.h; refType = 4; }; F5A85CAC01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treectlg.h; refType = 4; }; F5A85CAD01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treelay.h; refType = 4; }; F5A85CAF01FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wizard.h; refType = 4; }; F5A85CB001FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = geometry.h; refType = 4; }; F5A85CB101FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gifdecod.h; refType = 4; }; F5A85CB201FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = glcanvas.h; refType = 4; }; F5A85CB301FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = grid.h; refType = 4; }; F5A85CB401FA022A0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gsocket.h; refType = 4; }; F5A85CF901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = hash.h; refType = 4; }; F5A85CFA01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = help.h; refType = 4; }; F5A85CFB01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpbase.h; refType = 4; }; F5A85CFC01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helphtml.h; refType = 4; }; F5A85CFD01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpwin.h; refType = 4; @@ -5664,196 +5806,235 @@ refType = 4; }; F5A85D0101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = forcelnk.h; refType = 4; }; F5A85D0201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpctrl.h; refType = 4; }; F5A85D0301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpdata.h; refType = 4; }; F5A85D0401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpfrm.h; refType = 4; }; F5A85D0501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlcell.h; refType = 4; }; F5A85D0601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmldefs.h; refType = 4; }; F5A85D0701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlfilt.h; refType = 4; }; F5A85D0801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlpars.h; refType = 4; }; F5A85D0901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlproc.h; refType = 4; }; F5A85D0A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmltag.h; refType = 4; }; F5A85D0B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlwin.h; refType = 4; }; F5A85D0C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmprint.h; refType = 4; }; F5A85D0D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_templ.h; refType = 4; }; F5A85D2001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = winpars.h; refType = 4; }; F5A85D2101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = icon.h; refType = 4; }; F5A85D2201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagbmp.h; refType = 4; }; F5A85D2301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = image.h; refType = 4; }; F5A85D2401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imaggif.h; refType = 4; }; F5A85D2501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagiff.h; refType = 4; }; F5A85D2601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagjpeg.h; refType = 4; }; F5A85D2701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imaglist.h; refType = 4; }; F5A85D2801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagpcx.h; refType = 4; }; F5A85D2901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagpng.h; refType = 4; }; F5A85D2A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagpnm.h; refType = 4; }; F5A85D2B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagtiff.h; refType = 4; }; F5A85D2C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imagxpm.h; refType = 4; }; F5A85D2D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = intl.h; refType = 4; }; F5A85D2E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = ioswrap.h; refType = 4; }; F5A85D2F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = ipcbase.h; refType = 4; }; F5A85D3001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = isql.h; refType = 4; }; F5A85D3101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = isqlext.h; refType = 4; }; F5A85D3201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = joystick.h; refType = 4; }; F5A85D3301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = layout.h; refType = 4; }; F5A85D3401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = laywin.h; refType = 4; }; F5A85D3501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = list.h; refType = 4; }; F5A85D3601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listbox.h; refType = 4; }; F5A85D3701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listctrl.h; refType = 4; }; F5A85D3901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = log.h; refType = 4; }; F5A85D3A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = longlong.h; refType = 4; @@ -5947,561 +6128,673 @@ refType = 4; }; F5A85D3C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = accel.h; refType = 4; }; F5A85D3D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = aga.h; refType = 4; }; F5A85D3E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = app.h; refType = 4; }; F5A85D3F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = bitmap.h; refType = 4; }; F5A85D4001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = bmpbuttn.h; refType = 4; }; F5A85D4101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = brush.h; refType = 4; }; F5A85D4201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = button.h; refType = 4; }; F5A85D4301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = checkbox.h; refType = 4; }; F5A85D4401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = checklst.h; refType = 4; }; F5A85D4501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = choice.h; refType = 4; }; F5A85D4601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = clipbrd.h; refType = 4; }; F5A85D4701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colordlg.h; refType = 4; }; F5A85D4801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colour.h; refType = 4; }; F5A85D4901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = combobox.h; refType = 4; }; F5A85D4A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = control.h; refType = 4; }; F5A85D4B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cursor.h; refType = 4; }; F5A85D4C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dataform.h; refType = 4; }; F5A85D4D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dataobj.h; refType = 4; }; F5A85D4E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dataobj2.h; refType = 4; }; F5A85D4F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dc.h; refType = 4; }; F5A85D5001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcclient.h; refType = 4; }; F5A85D5101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcmemory.h; refType = 4; }; F5A85D5201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcprint.h; refType = 4; }; F5A85D5301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcscreen.h; refType = 4; }; F5A85D5401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dialog.h; refType = 4; }; F5A85D5501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirdlg.h; refType = 4; }; F5A85D5601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dnd.h; refType = 4; }; F5A85D5701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filedlg.h; refType = 4; }; F5A85D5801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = font.h; refType = 4; }; F5A85D5901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontdlg.h; refType = 4; }; F5A85D5A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = frame.h; refType = 4; }; F5A85D5B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gauge.h; refType = 4; }; F5A85D5C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gdiobj.h; refType = 4; }; F5A85D5D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = glcanvas.h; refType = 4; }; F5A85D5E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gsockmac.h; refType = 4; }; F5A85D6001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = icon.h; refType = 4; }; F5A85D6101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imaglist.h; refType = 4; }; F5A85D6201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = joystick.h; refType = 4; }; F5A85D6301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listbox.h; refType = 4; }; F5A85D6401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listctrl.h; refType = 4; }; F5A85D6501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = macnotfy.h; refType = 4; }; F5A85D6601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = macsock.h; refType = 4; }; F5A85D6701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mdi.h; refType = 4; }; F5A85D6801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = menu.h; refType = 4; }; F5A85D6901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = menuitem.h; refType = 4; }; F5A85D6A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = metafile.h; refType = 4; }; F5A85D6B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mimetype.h; refType = 4; }; F5A85D6C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = minifram.h; refType = 4; }; F5A85D6D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = msgdlg.h; refType = 4; }; F5A85D6E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = notebook.h; refType = 4; }; F5A85D6F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = palette.h; refType = 4; }; F5A85D7001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pen.h; refType = 4; }; F5A85D7101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pnghand.h; refType = 4; }; F5A85D7201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngread.h; refType = 4; }; F5A85D7301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = print.h; refType = 4; }; F5A85D7401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printdlg.h; refType = 4; }; F5A85D7501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printmac.h; refType = 4; }; F5A85D7601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = private.h; refType = 4; }; F5A85D7701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = radiobox.h; refType = 4; }; F5A85D7801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = radiobut.h; refType = 4; }; F5A85D7901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = region.h; refType = 4; }; F5A85D7A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = scrolbar.h; refType = 4; }; F5A85D7B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = setup0.h; refType = 4; }; F5A85D7C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = slider.h; refType = 4; }; F5A85D7D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spinbutt.h; refType = 4; }; F5A85D7E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbmp.h; refType = 4; }; F5A85D7F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbox.h; refType = 4; }; F5A85D8001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statline.h; refType = 4; }; F5A85D8101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = stattext.h; refType = 4; }; F5A85D8201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statusbr.h; refType = 4; }; F5A85D8301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tabctrl.h; refType = 4; }; F5A85D8401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = taskbar.h; refType = 4; }; F5A85D8501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textctrl.h; refType = 4; }; F5A85D8601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = timer.h; refType = 4; }; F5A85D8701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toolbar.h; refType = 4; }; F5A85D8801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tooltip.h; refType = 4; }; F5A85D8901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toplevel.h; refType = 4; }; F5A85D8A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treectrl.h; refType = 4; }; F5A85D8B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = uma.h; refType = 4; }; F5A85D8C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wave.h; refType = 4; }; F5A85D8D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = window.h; refType = 4; }; F5A85D8E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = matrix.h; refType = 4; }; F5A85D8F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mdi.h; refType = 4; }; F5A85D9001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = memconf.h; refType = 4; }; F5A85D9101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = memory.h; refType = 4; }; F5A85D9201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = memtext.h; refType = 4; }; F5A85D9301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = menu.h; refType = 4; }; F5A85D9401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = menuitem.h; refType = 4; }; F5A85D9501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = metafile.h; refType = 4; }; F5A85DAD01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mimetype.h; refType = 4; }; F5A85DAE01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = minifram.h; refType = 4; }; F5A85DAF01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = module.h; refType = 4; }; F5A85DF101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = msgdlg.h; refType = 4; }; F5A85DF201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mstream.h; refType = 4; }; F5A85E9701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = notebook.h; refType = 4; }; F5A85E9801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = object.h; refType = 4; }; F5A85E9901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = odbc.h; refType = 4; }; F5A85EFF01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = ownerdrw.h; refType = 4; }; F5A85F0001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = palette.h; refType = 4; }; F5A85F0101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = panel.h; refType = 4; }; F5A85F0201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = paper.h; refType = 4; }; F5A85F0301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pen.h; refType = 4; }; F5A85F0401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = platform.h; refType = 4; }; F5A85F0501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = popupwin.h; refType = 4; }; F5A85F0601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = print.h; refType = 4; }; F5A85F0701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printdlg.h; refType = 4; }; F5A85F0801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = prntbase.h; refType = 4; }; F5A85F0901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = process.h; refType = 4; }; F5A85F0A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = progdlg.h; refType = 4; }; F5A85F0B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = prop.h; refType = 4; }; F5A85F0C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = propform.h; refType = 4; }; F5A85F0D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = proplist.h; refType = 4; @@ -6518,301 +6811,361 @@ refType = 4; }; F5A85F1001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = file.h; refType = 4; }; F5A85F1101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = ftp.h; refType = 4; }; F5A85F1201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = http.h; refType = 4; }; F5A85F1301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = protocol.h; refType = 4; }; F5A85F1401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = quantize.h; refType = 4; }; F5A85F1501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = radiobox.h; refType = 4; }; F5A85F1601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = radiobut.h; refType = 4; }; F5A85F1701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = regex.h; refType = 4; }; F5A85F1801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = region.h; refType = 4; }; F5A85F1901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = resource.h; refType = 4; }; F5A85F1A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sashwin.h; refType = 4; }; F5A85F1B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sckaddr.h; refType = 4; }; F5A85F1C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sckipc.h; refType = 4; }; F5A85F1D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sckstrm.h; refType = 4; }; F5A85F1E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = scrolbar.h; refType = 4; }; F5A85F1F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = scrolwin.h; refType = 4; }; F5A85F2001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = settings.h; refType = 4; }; F5A85F2201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sizer.h; refType = 4; }; F5A85F2301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = slider.h; refType = 4; }; F5A85F2401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = snglinst.h; refType = 4; }; F5A85F2501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = socket.h; refType = 4; }; F5A85F2601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spawnbrowser.h; refType = 4; }; F5A85F2701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spinbutt.h; refType = 4; }; F5A85F2801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spinctrl.h; refType = 4; }; F5A85F2901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = splash.h; refType = 4; }; F5A85F2A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = splitter.h; refType = 4; }; F5A85F2B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = stack.h; refType = 4; }; F5A85F2C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbmp.h; refType = 4; }; F5A85F2D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbox.h; refType = 4; }; F5A85F2E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statline.h; refType = 4; }; F5A85F2F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = stattext.h; refType = 4; }; F5A85F3001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statusbr.h; refType = 4; }; F5A85F3101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = strconv.h; refType = 4; }; F5A85F3201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = stream.h; refType = 4; }; F5A85F3301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = string.h; refType = 4; }; F5A85F3401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sysopt.h; refType = 4; }; F5A85F3501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tab.h; refType = 4; }; F5A85F3601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tabctrl.h; refType = 4; }; F5A85F3701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = taskbar.h; refType = 4; }; F5A85F3801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tbarbase.h; refType = 4; }; F5A85F3901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tbarsmpl.h; refType = 4; }; F5A85F3A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textbuf.h; refType = 4; }; F5A85F3B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textctrl.h; refType = 4; }; F5A85F3C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textdlg.h; refType = 4; }; F5A85F3D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textfile.h; refType = 4; }; F5A85F3E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tglbtn.h; refType = 4; }; F5A85F3F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = thread.h; refType = 4; }; F5A85F4001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = time.h; refType = 4; }; F5A85F4101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = timer.h; refType = 4; }; F5A85F4201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tipdlg.h; refType = 4; }; F5A85F4301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tipwin.h; refType = 4; }; F5A85F4401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tokenzr.h; refType = 4; }; F5A85F4501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toolbar.h; refType = 4; }; F5A85F4601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tooltip.h; refType = 4; }; F5A85F4701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toplevel.h; refType = 4; }; F5A85F4801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treebase.h; refType = 4; }; F5A85F4901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treectrl.h; refType = 4; }; F5A85F4A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treelay.h; refType = 4; }; F5A85F4B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = txtstrm.h; refType = 4; }; F5A85F4C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = types.h; refType = 4; @@ -6829,126 +7182,151 @@ refType = 4; }; F5A85F7501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = execute.h; refType = 4; }; F5A85F7601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontutil.h; refType = 4; }; F5A85F7701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gsockunx.h; refType = 4; }; F5A85F7801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mimetype.h; refType = 4; }; F5A85F7901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = url.h; refType = 4; }; F5A85F7A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = utils.h; refType = 4; }; F5A85F7B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = valgen.h; refType = 4; }; F5A85F7C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = validate.h; refType = 4; }; F5A85F7D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = valtext.h; refType = 4; }; F5A85F7E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = variant.h; refType = 4; }; F5A85F7F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = vector.h; refType = 4; }; F5A85F8001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = version.h; refType = 4; }; F5A85F8201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wave.h; refType = 4; }; F5A85F8301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wfstream.h; refType = 4; }; F5A85F8401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = window.h; refType = 4; }; F5A85F8501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wizard.h; refType = 4; }; F5A85F8601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wx.h; refType = 4; }; F5A85F8D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wxchar.h; refType = 4; }; F5A85F8E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wxexpr.h; refType = 4; }; F5A85F8F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wxhtml.h; refType = 4; }; F5A85F9001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wxprec.h; refType = 4; }; F5A85F9101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = xpmdecod.h; refType = 4; }; F5A85F9201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = xpmhand.h; refType = 4; }; F5A85F9301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = zipstrm.h; refType = 4; }; F5A85F9401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = zstream.h; refType = 4; @@ -7004,6 +7382,7 @@ F5A8600201FA022B0175ACA7, F5A8600301FA022B0175ACA7, F5A8600401FA022B0175ACA7, + F5AC2EDC03803A3601000133, F5A8600501FA022B0175ACA7, F5A8600601FA022B0175ACA7, F5A8600701FA022B0175ACA7, @@ -7063,12 +7442,14 @@ F5A8603F01FA022C0175ACA7, F5A8604001FA022C0175ACA7, F5A8604101FA022C0175ACA7, + F5AC2EDD03803A3601000133, F5A8604301FA022C0175ACA7, F5A8604501FA022C0175ACA7, F5A8604601FA022C0175ACA7, F5A8604701FA022C0175ACA7, F5A8604801FA022C0175ACA7, F5A8604901FA022C0175ACA7, + F5AC2EDE03803A3601000133, F5A8604A01FA022C0175ACA7, F5A8604B01FA022C0175ACA7, F5A8604C01FA022C0175ACA7, @@ -7105,716 +7486,838 @@ refType = 4; }; F5A85FDF01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = appcmn.cpp; path = common/appcmn.cpp; refType = 2; }; F5A85FE101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = bmpbase.cpp; path = common/bmpbase.cpp; refType = 2; }; F5A85FE201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = choiccmn.cpp; path = common/choiccmn.cpp; refType = 2; }; F5A85FE301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = clipcmn.cpp; path = common/clipcmn.cpp; refType = 2; }; F5A85FE401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = clntdata.cpp; path = common/clntdata.cpp; refType = 2; }; F5A85FE501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = cmdline.cpp; path = common/cmdline.cpp; refType = 2; }; F5A85FE601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = cmdproc.cpp; path = common/cmdproc.cpp; refType = 2; }; F5A85FE701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = cmndata.cpp; path = common/cmndata.cpp; refType = 2; }; F5A85FE801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = config.cpp; path = common/config.cpp; refType = 2; }; F5A85FE901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = containr.cpp; path = common/containr.cpp; refType = 2; }; F5A85FEA01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = cshelp.cpp; path = common/cshelp.cpp; refType = 2; }; F5A85FEB01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = ctrlcmn.cpp; path = common/ctrlcmn.cpp; refType = 2; }; F5A85FEC01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = ctrlsub.cpp; path = common/ctrlsub.cpp; refType = 2; }; F5A85FEF01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = datetime.cpp; path = common/datetime.cpp; refType = 2; }; F5A85FF001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = datstrm.cpp; path = common/datstrm.cpp; refType = 2; }; F5A85FF101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = db.cpp; path = common/db.cpp; refType = 2; }; F5A85FF301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dbtable.cpp; path = common/dbtable.cpp; refType = 2; }; F5A85FF401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dcbase.cpp; path = common/dcbase.cpp; refType = 2; }; F5A85FF601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dircmn.cpp; path = common/dircmn.cpp; refType = 2; }; F5A85FF701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dlgcmn.cpp; path = common/dlgcmn.cpp; refType = 2; }; F5A85FF801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dndcmn.cpp; path = common/dndcmn.cpp; refType = 2; }; F5A85FF901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dobjcmn.cpp; path = common/dobjcmn.cpp; refType = 2; }; F5A85FFA01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = docmdi.cpp; path = common/docmdi.cpp; refType = 2; }; F5A85FFB01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = docview.cpp; path = common/docview.cpp; refType = 2; }; F5A85FFE01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dseldlg.cpp; path = common/dseldlg.cpp; refType = 2; }; F5A85FFF01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dynarray.cpp; path = common/dynarray.cpp; refType = 2; }; F5A8600001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dynlib.cpp; path = common/dynlib.cpp; refType = 2; }; F5A8600101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = dynload.cpp; path = common/dynload.cpp; refType = 2; }; F5A8600201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = effects.cpp; path = common/effects.cpp; refType = 2; }; F5A8600301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = encconv.cpp; path = common/encconv.cpp; refType = 2; }; F5A8600401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = event.cpp; path = common/event.cpp; refType = 2; }; F5A8600501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = extended.c; path = common/extended.c; refType = 2; }; F5A8600601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fddlgcmn.cpp; path = common/fddlgcmn.cpp; refType = 2; }; F5A8600701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = ffile.cpp; path = common/ffile.cpp; refType = 2; }; F5A8600801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = file.cpp; path = common/file.cpp; refType = 2; }; F5A8600901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fileconf.cpp; path = common/fileconf.cpp; refType = 2; }; F5A8600A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = filefn.cpp; path = common/filefn.cpp; refType = 2; }; F5A8600B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = filename.cpp; path = common/filename.cpp; refType = 2; }; F5A8600C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = filesys.cpp; path = common/filesys.cpp; refType = 2; }; F5A8600D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fontcmn.cpp; path = common/fontcmn.cpp; refType = 2; }; F5A8600E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fontmap.cpp; path = common/fontmap.cpp; refType = 2; }; F5A8600F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = framecmn.cpp; path = common/framecmn.cpp; refType = 2; }; F5A8601001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fs_inet.cpp; path = common/fs_inet.cpp; refType = 2; }; F5A8601101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fs_mem.cpp; path = common/fs_mem.cpp; refType = 2; }; F5A8601201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = fs_zip.cpp; path = common/fs_zip.cpp; refType = 2; }; F5A8601301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = ftp.cpp; path = common/ftp.cpp; refType = 2; }; F5A8601401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = gaugecmn.cpp; path = common/gaugecmn.cpp; refType = 2; }; F5A8601501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = gdicmn.cpp; path = common/gdicmn.cpp; refType = 2; }; F5A8601601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = geometry.cpp; path = common/geometry.cpp; refType = 2; }; F5A8601701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = gifdecod.cpp; path = common/gifdecod.cpp; refType = 2; }; F5A8601901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = hash.cpp; path = common/hash.cpp; refType = 2; }; F5A8601A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = helpbase.cpp; path = common/helpbase.cpp; refType = 2; }; F5A8601B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = http.cpp; path = common/http.cpp; refType = 2; }; F5A8601C01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagall.cpp; path = common/imagall.cpp; refType = 2; }; F5A8601D01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagbmp.cpp; path = common/imagbmp.cpp; refType = 2; }; F5A8601E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = image.cpp; path = common/image.cpp; refType = 2; }; F5A8601F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imaggif.cpp; path = common/imaggif.cpp; refType = 2; }; F5A8602001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagiff.cpp; path = common/imagiff.cpp; refType = 2; }; F5A8602101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagjpeg.cpp; path = common/imagjpeg.cpp; refType = 2; }; F5A8602201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagpcx.cpp; path = common/imagpcx.cpp; refType = 2; }; F5A8602301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagpng.cpp; path = common/imagpng.cpp; refType = 2; }; F5A8602401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagpnm.cpp; path = common/imagpnm.cpp; refType = 2; }; F5A8602501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagtiff.cpp; path = common/imagtiff.cpp; refType = 2; }; F5A8602601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = imagxpm.cpp; path = common/imagxpm.cpp; refType = 2; }; F5A8602801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = intl.cpp; path = common/intl.cpp; refType = 2; }; F5A8602901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = ipcbase.cpp; path = common/ipcbase.cpp; refType = 2; }; F5A8602A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = layout.cpp; path = common/layout.cpp; refType = 2; }; F5A8602B01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = lboxcmn.cpp; path = common/lboxcmn.cpp; refType = 2; }; F5A8602E01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = list.cpp; path = common/list.cpp; refType = 2; }; F5A8602F01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = log.cpp; path = common/log.cpp; refType = 2; }; F5A8603001FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = longlong.cpp; path = common/longlong.cpp; refType = 2; }; F5A8603101FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = matrix.cpp; path = common/matrix.cpp; refType = 2; }; F5A8603201FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = memory.cpp; path = common/memory.cpp; refType = 2; }; F5A8603301FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = menucmn.cpp; path = common/menucmn.cpp; refType = 2; }; F5A8603401FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = mimecmn.cpp; path = common/mimecmn.cpp; refType = 2; }; F5A8603501FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = module.cpp; path = common/module.cpp; refType = 2; }; F5A8603601FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = mstream.cpp; path = common/mstream.cpp; refType = 2; }; F5A8603701FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = nbkbase.cpp; path = common/nbkbase.cpp; refType = 2; }; F5A8603801FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = object.cpp; path = common/object.cpp; refType = 2; }; F5A8603901FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = odbc.cpp; path = common/odbc.cpp; refType = 2; }; F5A8603A01FA022B0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = paper.cpp; path = common/paper.cpp; refType = 2; }; F5A8603D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = popupcmn.cpp; path = common/popupcmn.cpp; refType = 2; }; F5A8603E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = prntbase.cpp; path = common/prntbase.cpp; refType = 2; }; F5A8603F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = process.cpp; path = common/process.cpp; refType = 2; }; F5A8604001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = protocol.cpp; path = common/protocol.cpp; refType = 2; }; F5A8604101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = quantize.cpp; path = common/quantize.cpp; refType = 2; }; F5A8604301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = regex.cpp; path = common/regex.cpp; refType = 2; }; F5A8604501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = resource.cpp; path = common/resource.cpp; refType = 2; }; F5A8604601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = sckaddr.cpp; path = common/sckaddr.cpp; refType = 2; }; F5A8604701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = sckfile.cpp; path = common/sckfile.cpp; refType = 2; }; F5A8604801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = sckipc.cpp; path = common/sckipc.cpp; refType = 2; }; F5A8604901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = sckstrm.cpp; path = common/sckstrm.cpp; refType = 2; }; F5A8604A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = sizer.cpp; path = common/sizer.cpp; refType = 2; }; F5A8604B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = socket.cpp; path = common/socket.cpp; refType = 2; }; F5A8604C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = statbar.cpp; path = common/statbar.cpp; refType = 2; }; F5A8604D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = strconv.cpp; path = common/strconv.cpp; refType = 2; }; F5A8604E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = stream.cpp; path = common/stream.cpp; refType = 2; }; F5A8604F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = string.cpp; path = common/string.cpp; refType = 2; }; F5A8605001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = sysopt.cpp; path = common/sysopt.cpp; refType = 2; }; F5A8605101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = tbarbase.cpp; path = common/tbarbase.cpp; refType = 2; }; F5A8605201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = textbuf.cpp; path = common/textbuf.cpp; refType = 2; }; F5A8605301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = textcmn.cpp; path = common/textcmn.cpp; refType = 2; }; F5A8605401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = textfile.cpp; path = common/textfile.cpp; refType = 2; }; F5A8605501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = timercmn.cpp; path = common/timercmn.cpp; refType = 2; }; F5A8605601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = tokenzr.cpp; path = common/tokenzr.cpp; refType = 2; }; F5A8605701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toplvcmn.cpp; refType = 4; }; F5A8605801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treebase.cpp; refType = 4; }; F5A8605901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = txtstrm.cpp; refType = 4; }; F5A8605B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = unzip.c; refType = 4; }; F5A8605D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = url.cpp; refType = 4; }; F5A8605E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = utilscmn.cpp; refType = 4; }; F5A8605F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = valgen.cpp; refType = 4; }; F5A8606001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = validate.cpp; refType = 4; }; F5A8606101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = valtext.cpp; refType = 4; }; F5A8606201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = variant.cpp; refType = 4; }; F5A8606301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wfstream.cpp; refType = 4; }; F5A8606401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wincmn.cpp; refType = 4; }; F5A8606501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wxchar.cpp; refType = 4; }; F5A8606601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wxexpr.cpp; refType = 4; }; F5A8606701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = xpmdecod.cpp; refType = 4; }; F5A8606801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = zipstrm.cpp; refType = 4; }; F5A8606901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = zstream.cpp; refType = 4; @@ -7870,216 +8373,259 @@ refType = 4; }; F5A8607001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = busyinfo.cpp; refType = 4; }; F5A8607101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = calctrl.cpp; refType = 4; }; F5A8607201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = caret.cpp; refType = 4; }; F5A8607301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = choicdgg.cpp; refType = 4; }; F5A8607401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colrdlgg.cpp; refType = 4; }; F5A8607501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcpsg.cpp; refType = 4; }; F5A8607701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirctrlg.cpp; refType = 4; }; F5A8607801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirdlgg.cpp; refType = 4; }; F5A8607901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dragimgg.cpp; refType = 4; }; F5A8607A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fdrepdlg.cpp; refType = 4; }; F5A8607C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontdlgg.cpp; refType = 4; }; F5A8607D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = grid.cpp; refType = 4; }; F5A8607E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gridctrl.cpp; refType = 4; }; F5A8608001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gridsel.cpp; refType = 4; }; F5A8608101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpext.cpp; refType = 4; }; F5A8608201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helphtml.cpp; refType = 4; }; F5A8608501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = imaglist.cpp; refType = 4; }; F5A8608601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = laywin.cpp; refType = 4; }; F5A8608701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listctrl.cpp; refType = 4; }; F5A8608801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = logg.cpp; refType = 4; }; F5A8608901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = msgdlgg.cpp; refType = 4; }; F5A8608B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = numdlgg.cpp; refType = 4; }; F5A8608D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = panelg.cpp; refType = 4; }; F5A8608E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printps.cpp; refType = 4; }; F5A8608F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = prntdlgg.cpp; refType = 4; }; F5A8609001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = progdlgg.cpp; refType = 4; }; F5A8609101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = prop.cpp; refType = 4; }; F5A8609201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = propform.cpp; refType = 4; }; F5A8609301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = proplist.cpp; refType = 4; }; F5A8609401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = sashwin.cpp; refType = 4; }; F5A8609501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = scrlwing.cpp; refType = 4; }; F5A8609601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spinctlg.cpp; refType = 4; }; F5A8609701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = splash.cpp; refType = 4; }; F5A8609801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = splitter.cpp; refType = 4; }; F5A8609A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statusbr.cpp; refType = 4; }; F5A8609B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tabg.cpp; refType = 4; }; F5A8609C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tbarsmpl.cpp; refType = 4; }; F5A8609D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textdlgg.cpp; refType = 4; }; F5A8609E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tipdlg.cpp; refType = 4; }; F5A8609F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tipwin.cpp; refType = 4; }; F5A860A001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treectlg.cpp; refType = 4; }; F5A860A101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = treelay.cpp; refType = 4; }; F5A860A201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wizard.cpp; refType = 4; @@ -8102,7 +8648,6 @@ F5A8611101FA022C0175ACA7, F5A8611201FA022C0175ACA7, F5A8611301FA022C0175ACA7, - F5A8611401FA022C0175ACA7, F5A8611501FA022C0175ACA7, F5A8611601FA022C0175ACA7, F5A8611701FA022C0175ACA7, @@ -8112,101 +8657,115 @@ refType = 4; }; F5A8610401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpctrl.cpp; refType = 4; }; F5A8610501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpdata.cpp; refType = 4; }; F5A8610601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = helpfrm.cpp; refType = 4; }; F5A8610701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlcell.cpp; refType = 4; }; F5A8610801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlfilt.cpp; refType = 4; }; F5A8610901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlpars.cpp; refType = 4; }; F5A8610A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmltag.cpp; refType = 4; }; F5A8610B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmlwin.cpp; refType = 4; }; F5A8610C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = htmprint.cpp; refType = 4; }; F5A8610D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_dflist.cpp; refType = 4; }; F5A8610E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_fonts.cpp; refType = 4; }; F5A8610F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_hline.cpp; refType = 4; }; F5A8611001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_image.cpp; refType = 4; }; F5A8611101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_layout.cpp; refType = 4; }; F5A8611201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_links.cpp; refType = 4; }; F5A8611301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_list.cpp; refType = 4; }; - F5A8611401FA022C0175ACA7 = { - isa = PBXFileReference; - path = m_meta.cpp; - refType = 4; - }; F5A8611501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_pre.cpp; refType = 4; }; F5A8611601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = m_tables.cpp; refType = 4; }; F5A8611701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = winpars.cpp; refType = 4; @@ -8265,231 +8824,277 @@ refType = 4; }; F5A8614301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcapimin.c; refType = 4; }; F5A8614401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcapistd.c; refType = 4; }; F5A8614501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jccoefct.c; refType = 4; }; F5A8614601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jccolor.c; refType = 4; }; F5A8614701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcdctmgr.c; refType = 4; }; F5A8614801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jchuff.c; refType = 4; }; F5A8614A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcinit.c; refType = 4; }; F5A8614B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcmainct.c; refType = 4; }; F5A8614C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcmarker.c; refType = 4; }; F5A8614D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcmaster.c; refType = 4; }; F5A8614E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcomapi.c; refType = 4; }; F5A8615101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcparam.c; refType = 4; }; F5A8615201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcphuff.c; refType = 4; }; F5A8615301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcprepct.c; refType = 4; }; F5A8615401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jcsample.c; refType = 4; }; F5A8615501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jctrans.c; refType = 4; }; F5A8615601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdapimin.c; refType = 4; }; F5A8615701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdapistd.c; refType = 4; }; F5A8615801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdatadst.c; refType = 4; }; F5A8615901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdatasrc.c; refType = 4; }; F5A8615A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdcoefct.c; refType = 4; }; F5A8615B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdcolor.c; refType = 4; }; F5A8615D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jddctmgr.c; refType = 4; }; F5A8615E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdhuff.c; refType = 4; }; F5A8616001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdinput.c; refType = 4; }; F5A8616101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdmainct.c; refType = 4; }; F5A8616201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdmarker.c; refType = 4; }; F5A8616301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdmaster.c; refType = 4; }; F5A8616401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdmerge.c; refType = 4; }; F5A8616501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdphuff.c; refType = 4; }; F5A8616601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdpostct.c; refType = 4; }; F5A8616701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdsample.c; refType = 4; }; F5A8616801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jdtrans.c; refType = 4; }; F5A8616901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jerror.c; refType = 4; }; F5A8616B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jfdctflt.c; refType = 4; }; F5A8616C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jfdctfst.c; refType = 4; }; F5A8616D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jfdctint.c; refType = 4; }; F5A8616E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jidctflt.c; refType = 4; }; F5A8616F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jidctfst.c; refType = 4; }; F5A8617001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jidctint.c; refType = 4; }; F5A8617101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jidctred.c; refType = 4; }; F5A8617701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jmemmgr.c; refType = 4; }; F5A8617901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jmemnobs.c; refType = 4; }; F5A8618D01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jquant1.c; refType = 4; }; F5A8618E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jquant2.c; refType = 4; }; F5A8618F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = jutils.c; refType = 4; @@ -8585,246 +9190,295 @@ refType = 4; }; F5A8619A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = accel.cpp; refType = 4; }; F5A8619B01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = aga.cpp; refType = 4; }; F5A8619C01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = app.cpp; refType = 4; }; F5A8619E01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = apprsrc.r; refType = 4; }; F5A8619F01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = bitmap.cpp; refType = 4; }; F5A861A001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = bmpbuttn.cpp; refType = 4; }; F5A861A101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = brush.cpp; refType = 4; }; F5A861A201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = button.cpp; refType = 4; }; F5A861A301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = carbrsrc.r; refType = 4; }; F5A861A401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = checkbox.cpp; refType = 4; }; F5A861A501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = checklst.cpp; refType = 4; }; F5A861A601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = choice.cpp; refType = 4; }; F5A861A701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = clipbrd.cpp; refType = 4; }; F5A861A801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colordlg.cpp; refType = 4; }; F5A861A901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = colour.cpp; refType = 4; }; F5A861AA01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = combobox.cpp; refType = 4; }; F5A861AB01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = control.cpp; refType = 4; }; F5A861AC01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = corersrc.r; refType = 4; }; F5A861AD01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = cursor.cpp; refType = 4; }; F5A861AE01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = data.cpp; refType = 4; }; F5A861AF01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dataobj.cpp; refType = 4; }; F5A861B001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dc.cpp; refType = 4; }; F5A861B101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcclient.cpp; refType = 4; }; F5A861B201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcmemory.cpp; refType = 4; }; F5A861B301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcprint.cpp; refType = 4; }; F5A861B401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dcscreen.cpp; refType = 4; }; F5A861B501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dialog.cpp; refType = 4; }; F5A861B601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirdlg.cpp; refType = 4; }; F5A861B701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dirmac.cpp; refType = 4; }; F5A861B801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = dnd.cpp; refType = 4; }; F5A861B901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = filedlg.cpp; refType = 4; }; F5A861BB01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = font.cpp; refType = 4; }; F5A861BC01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontdlg.cpp; refType = 4; }; F5A861BD01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontenum.cpp; refType = 4; }; F5A861BE01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = fontutil.cpp; refType = 4; }; F5A861BF01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = frame.cpp; refType = 4; }; F5A861C001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gauge.cpp; refType = 4; }; F5A861C101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gdiobj.cpp; refType = 4; }; F5A861C301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = gsocket.c; refType = 4; }; F5A861C501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = icon.cpp; refType = 4; }; F5A861C601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = joystick.cpp; refType = 4; }; F5A861C701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = listbox.cpp; refType = 4; }; F5A861C801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = macnotfy.cpp; refType = 4; }; F5A861CC01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mdi.cpp; refType = 4; }; F5A861CD01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = menu.cpp; refType = 4; }; F5A861CE01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = menuitem.cpp; refType = 4; }; F5A861CF01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = metafile.cpp; refType = 4; }; F5A861D001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = mimetmac.cpp; refType = 4; }; F5A861D101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = minifram.cpp; refType = 4; @@ -8846,211 +9500,253 @@ refType = 4; }; F5A861D301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = DirectoryCopy.c; refType = 4; }; F5A861D501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = FileCopy.c; refType = 4; }; F5A861D701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = FSpCompat.c; refType = 4; }; F5A861D901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = FullPath.c; refType = 4; }; F5A861DB01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = IterateDirectory.c; refType = 4; }; F5A861DD01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = MoreDesktopMgr.c; refType = 4; }; F5A861DF01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = MoreFiles.c; refType = 4; }; F5A861E101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = MoreFilesExtras.c; refType = 4; }; F5A861E501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = Search.c; refType = 4; }; F5A861E701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = msgdlg.cpp; refType = 4; }; F5A861E801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = notebmac.cpp; refType = 4; }; F5A861E901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = palette.cpp; refType = 4; }; F5A861EA01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pen.cpp; refType = 4; }; F5A861EB01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pnghand.cpp; refType = 4; }; F5A861EC01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = print.cpp; refType = 4; }; F5A861ED01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printdlg.cpp; refType = 4; }; F5A861EE01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = printmac.cpp; refType = 4; }; F5A861EF01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = radiobox.cpp; refType = 4; }; F5A861F001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = radiobut.cpp; refType = 4; }; F5A861F101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = region.cpp; refType = 4; }; F5A861F201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = scrolbar.cpp; refType = 4; }; F5A861F301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = settings.cpp; refType = 4; }; F5A861F401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = slider.cpp; refType = 4; }; F5A861F501FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = spinbutt.cpp; refType = 4; }; F5A861F701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbmp.cpp; refType = 4; }; F5A861F801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbox.cpp; refType = 4; }; F5A861F901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statbrma.cpp; refType = 4; }; F5A861FB01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = statlmac.cpp; refType = 4; }; F5A861FC01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = stattext.cpp; refType = 4; }; F5A861FD01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tabctrl.cpp; refType = 4; }; F5A861FE01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = taskbar.cpp; refType = 4; }; F5A861FF01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = textctrl.cpp; refType = 4; }; F5A8620001FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = thread.cpp; refType = 4; }; F5A8620101FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = timer.cpp; refType = 4; }; F5A8620201FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toolbar.cpp; refType = 4; }; F5A8620301FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tooltip.cpp; refType = 4; }; F5A8620401FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = toplevel.cpp; refType = 4; }; F5A8620601FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = uma.cpp; refType = 4; }; F5A8620701FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = utils.cpp; refType = 4; }; F5A8620801FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = utilsexc.cpp; refType = 4; }; F5A8620901FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = wave.cpp; refType = 4; }; F5A8620A01FA022C0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = window.cpp; refType = 4; @@ -9079,81 +9775,97 @@ refType = 4; }; F5A863BF01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = png.c; refType = 4; }; F5A863C401FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngerror.c; refType = 4; }; F5A863C501FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngget.c; refType = 4; }; F5A863D101FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngmem.c; refType = 4; }; F5A863D201FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngpread.c; refType = 4; }; F5A863D301FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngread.c; refType = 4; }; F5A863D401FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngrio.c; refType = 4; }; F5A863D501FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngrtran.c; refType = 4; }; F5A863D601FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngrutil.c; refType = 4; }; F5A863D701FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngset.c; refType = 4; }; F5A863D801FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngtest.c; refType = 4; }; F5A863D901FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngtrans.c; refType = 4; }; F5A863DA01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngwio.c; refType = 4; }; F5A863DB01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngwrite.c; refType = 4; }; F5A863DC01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngwtran.c; refType = 4; }; F5A863DD01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = pngwutil.c; refType = 4; @@ -9199,166 +9911,199 @@ refType = 4; }; F5A8642601FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_aux.c; refType = 4; }; F5A8642701FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_close.c; refType = 4; }; F5A8642801FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_codec.c; refType = 4; }; F5A8642901FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_compress.c; refType = 4; }; F5A8642A01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_dir.c; refType = 4; }; F5A8642C01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_dirinfo.c; refType = 4; }; F5A8642D01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_dirread.c; refType = 4; }; F5A8642E01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_dirwrite.c; refType = 4; }; F5A8642F01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_dumpmode.c; refType = 4; }; F5A8643001FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_error.c; refType = 4; }; F5A8643101FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_fax3.c; refType = 4; }; F5A8643301FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_fax3sm.c; refType = 4; }; F5A8643401FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_flush.c; refType = 4; }; F5A8643501FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_getimage.c; refType = 4; }; F5A8643601FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_jpeg.c; refType = 4; }; F5A8643701FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_luv.c; refType = 4; }; F5A8643801FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_lzw.c; refType = 4; }; F5A8643A01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_next.c; refType = 4; }; F5A8643B01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_open.c; refType = 4; }; F5A8643D01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_packbits.c; refType = 4; }; F5A8643E01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_pixarlog.c; refType = 4; }; F5A8643F01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_predict.c; refType = 4; }; F5A8644101FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_print.c; refType = 4; }; F5A8644201FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_read.c; refType = 4; }; F5A8644301FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_strip.c; refType = 4; }; F5A8644401FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_swab.c; refType = 4; }; F5A8644501FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_thunder.c; refType = 4; }; F5A8644601FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_tile.c; refType = 4; }; F5A8644701FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_unix.c; refType = 4; }; F5A8644801FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_version.c; refType = 4; }; F5A8644A01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_warning.c; refType = 4; }; F5A8644D01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_write.c; refType = 4; }; F5A8644E01FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = tif_zip.c; refType = 4; @@ -9373,21 +10118,66 @@ refType = 4; }; F5A8649201FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = snglinst.cpp; refType = 4; }; F5A8649401FA022D0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; path = utilsunx.cpp; refType = 4; }; F5A8703A01FA0B7F0175ACA7 = { + fileEncoding = 5; isa = PBXFileReference; name = listimpl.cpp; path = ../include/wx/listimpl.cpp; refType = 2; }; + F5AC2EDC03803A3601000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = execcmn.cpp; + refType = 4; + }; + F5AC2EDD03803A3601000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = radiocmn.cpp; + refType = 4; + }; + F5AC2EDE03803A3601000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = settcmn.cpp; + refType = 4; + }; + F5AC2EE003803A3601000133 = { + fileRef = F5AC2EDD03803A3601000133; + isa = PBXBuildFile; + settings = { + }; + }; + F5AC2EE103803A3601000133 = { + fileRef = F5AC2EDE03803A3601000133; + isa = PBXBuildFile; + settings = { + }; + }; + F5AC2EE303803A3601000133 = { + fileRef = F5AC2EDD03803A3601000133; + isa = PBXBuildFile; + settings = { + }; + }; + F5AC2EE403803A3601000133 = { + fileRef = F5AC2EDE03803A3601000133; + isa = PBXBuildFile; + settings = { + }; + }; F5C5D3DF01FA2D0A01D0F0BA = { isa = PBXFrameworkReference; name = System.framework; @@ -9417,7 +10207,6 @@ OTHER_LDFLAGS = ""; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = "-d __UNIX__"; - PRECOMPILE_PREFIX_HEADER = YES; PREFIX_HEADER = ../include/wx_pb.h; PRODUCT_NAME = libwx_macd.a; REZ_EXECUTABLE = NO; @@ -9430,14 +10219,13 @@ name = wxStaticDebug; productName = "wx library"; productReference = F5C6AC47020C2B0F01000133; - shouldUseHeadermap = 0; }; F5C6AC49020C2B1001000133 = { buildActionMask = 2147483647; files = ( - F5FD822202CCECE601000133, ); isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5C6AC4A020C2B1001000133 = { buildActionMask = 2147483647; @@ -9622,7 +10410,6 @@ F5955F5A02CBAB2501000133, F5955F5B02CBAB2601000133, F5955F5C02CBAB2601000133, - F5955F5D02CBAB2701000133, F5955F5E02CBAB2701000133, F5955F5F02CBAB2801000133, F5955F6002CBAB2801000133, @@ -9810,7 +10597,6 @@ F595601602CBAB9801000133, F595601702CBAB9801000133, F595601802CBAB9901000133, - F5D0E30A02CCEA1D01000133, F5F5A6A002CDB27401000133, F5F5A6A502CDB6CA01000133, F5F5A6A602CDB6CA01000133, @@ -9819,14 +10605,18 @@ F5F5A6A902CDB91E01000133, F5F5A6AA02CDB92001000133, F58E04FE02F11FA701A8020C, + F5AC2EE003803A3601000133, + F5AC2EE103803A3601000133, ); isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5C6AC4B020C2B1001000133 = { buildActionMask = 2147483647; files = ( ); isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5C6AC4C020C2B1001000133 = { buildActionMask = 2147483647; @@ -9836,6 +10626,113 @@ F5955E9F02CBA8B901000133, ); isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + F5CC83C20379B1A901000133 = { + buildActionMask = 2147483647; + files = ( + ); + generatedFileNames = ( + ); + isa = PBXShellScriptBuildPhase; + neededFileNames = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Create wx include directory if necessary\nif [ ! -d \"$SYMROOT/include/wx\" ]; then\n mkdir -p \"$SYMROOT/include/wx\" || exit 1\nfi\n# Copy setup0.h to setup.h\nif [ ! -f \"$SYMROOT/include/wx/setup.h\" ]; then\n cp \"$SRCROOT/../include/wx/mac/setup0.h\" \"$SYMROOT/include/wx/setup.h\" || exit 1\nfi\n# Generate lexer\nif [ ! -f \"$SYMROOT/lexer.c\" -o \"$SYMROOT/lexer.c\" -ot \"$SRCROOT/common/lexer.l\" ]; then\n flex \"$SRCROOT/common/lexer.l\" || exit 1\n sed -e \"s;$SRCROOT/common/lex.yy.c;lexer.l;g\" < lex.yy.c | \\\n sed -e \"s/yy/PROIO_yy/g\" | \\\n sed -e \"s/input/PROIO_input/g\" | \\\n sed -e \"s/unput/PROIO_unput/g\" > \"$SYMROOT/lexer.c\" || exit 1\n rm -f lex.yy.c\nfi\n# Generate parser\nif [ ! -f \"$SYMROOT/parser.c\" -o \"$SYMROOT/parser.c\" -ot \"$SRCROOT/common/parser.y\" ]; then\n bison -y \"$SRCROOT/common/parser.y\" || exit 1\n sed -e \"s;$SRCROOT/common/y.tab.c;parser.y;g\" < y.tab.c | \\\n sed -e \"s/BUFSIZ/5000/g\" | \\\n sed -e \"s/YYLMAX 200/YYLMAX 5000/g\" | \\\n sed -e \"s/yy/PROIO_yy/g\" | \\\n sed -e \"s/input/PROIO_input/g\" | \\\n sed -e \"s/unput/PROIO_unput/g\" > \"$SYMROOT/parser.c\" || exit 1\n rm -f y.tab.c\nfi"; + }; + F5CC83C30379B20901000133 = { + fileRef = F5A8604501FA022C0175ACA7; + isa = PBXBuildFile; + settings = { + }; + }; + F5CC83D90379C17C01000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = artprov.h; + refType = 4; + }; + F5CC83DA0379C17C01000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = build.h; + refType = 4; + }; + F5CC83DF0379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = dcbuffer.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/dcbuffer.h; + refType = 0; + }; + F5CC83E00379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = display.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/display.h; + refType = 0; + }; + F5CC83E10379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = features.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/features.h; + refType = 0; + }; + F5CC83E20379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = hashmap.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/hashmap.h; + refType = 0; + }; + F5CC83E30379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = iconbndl.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/iconbndl.h; + refType = 0; + }; + F5CC83E40379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = ipc.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/ipc.h; + refType = 0; + }; + F5CC83E50379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = listbase.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/listbase.h; + refType = 0; + }; + F5CC83E60379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = msgout.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/msgout.h; + refType = 0; + }; + F5CC83E70379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + name = ptr_scpd.h; + path = /Volumes/Users/gilles/cvs/wxWindows/include/wx/ptr_scpd.h; + refType = 0; + }; + F5CC83E80379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = thrimpl.cpp; + refType = 4; + }; + F5CC83E90379C20901000133 = { + fileEncoding = 5; + isa = PBXFileReference; + path = volume.h; + refType = 4; }; F5D00F2901FDFB8401000133 = { isa = PBXFileReference; @@ -9844,23 +10741,20 @@ refType = 0; }; F5D0E30702CCEA1D01000133 = { + fileEncoding = 5; isa = PBXFileReference; path = lexer.c; refType = 3; }; F5D0E30802CCEA1D01000133 = { + fileEncoding = 5; isa = PBXFileReference; name = parser.c; path = build/parser.c; refType = 2; }; - F5D0E30A02CCEA1D01000133 = { - fileRef = F5D0E30802CCEA1D01000133; - isa = PBXBuildFile; - settings = { - }; - }; F5F5A69F02CDB27401000133 = { + fileEncoding = 5; isa = PBXFileReference; name = hashmap.cpp; path = common/hashmap.cpp; @@ -9873,24 +10767,28 @@ }; }; F5F5A6A102CDB6CA01000133 = { + fileEncoding = 5; isa = PBXFileReference; name = artprov.cpp; path = common/artprov.cpp; refType = 2; }; F5F5A6A202CDB6CA01000133 = { + fileEncoding = 5; isa = PBXFileReference; name = artstd.cpp; path = common/artstd.cpp; refType = 2; }; F5F5A6A302CDB6CA01000133 = { + fileEncoding = 5; isa = PBXFileReference; name = iconbndl.cpp; path = common/iconbndl.cpp; refType = 2; }; F5F5A6A402CDB6CA01000133 = { + fileEncoding = 5; isa = PBXFileReference; name = imagfill.cpp; path = common/imagfill.cpp; @@ -9937,6 +10835,7 @@ files = ( ); isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5F5A6B702CDD62501000133 = { buildActionMask = 2147483647; @@ -10134,7 +11033,6 @@ F5A0C5E502CF70D501000133, F5A0C5E602CF70D601000133, F5A0C5E702CF70D601000133, - F5A0C5E802CF70D701000133, F5A0C5E902CF70D701000133, F5A0C5EA02CF70D701000133, F5A0C5EB02CF70D801000133, @@ -10318,14 +11216,19 @@ F5A0C6A102CF714801000133, F5A0C6A202CF714801000133, F58E04FF02F11FA701A8020C, + F5CC83C30379B20901000133, + F5AC2EE303803A3601000133, + F5AC2EE403803A3601000133, ); isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5F5A6B802CDD62501000133 = { buildActionMask = 2147483647; files = ( ); isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5F5A6B902CDD62501000133 = { buildActionMask = 2147483647; @@ -10335,9 +11238,11 @@ F5A0C69F02CF714701000133, ); isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; }; F5F5A6BA02CDD62501000133 = { buildPhases = ( + F5CC83C20379B1A901000133, F5F5A6B602CDD62501000133, F5F5A6B702CDD62501000133, F5F5A6B802CDD62501000133, @@ -10354,7 +11259,6 @@ OTHER_LDFLAGS = ""; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = "-d __UNIX__"; - PRECOMPILE_PREFIX_HEADER = YES; PREFIX_HEADER = ../include/wx_pb.h; PRODUCT_NAME = libwx_mac.a; REZ_EXECUTABLE = NO; @@ -10368,7 +11272,6 @@ productInstallPath = /usr/local/lib; productName = wxStaticRelease; productReference = F5F5A6BB02CDD62501000133; - shouldUseHeadermap = 0; }; F5F5A6BB02CDD62501000133 = { isa = PBXLibraryReference; @@ -10376,23 +11279,19 @@ refType = 3; }; F5FD821D02CCEB8C01000133 = { + fileEncoding = 5; isa = PBXFileReference; name = wx_pb.h; path = ../include/wx_pb.h; refType = 2; }; F5FD822102CCECE601000133 = { + fileEncoding = 5; isa = PBXFileReference; name = setup.h; path = build/include/wx/setup.h; refType = 2; }; - F5FD822202CCECE601000133 = { - fileRef = F5FD822102CCECE601000133; - isa = PBXBuildFile; - settings = { - }; - }; }; rootObject = 0867D690FE84028FC02AAC07; } diff --git a/src/wxWindowsM7.mcp b/src/wxWindowsM7.mcp index c88d91f436..8692cc6f2c 100644 Binary files a/src/wxWindowsM7.mcp and b/src/wxWindowsM7.mcp differ diff --git a/src/wxWindowsW7.xml b/src/wxWindowsW7.xml index c18136deb3..32e46d784d 100644 --- a/src/wxWindowsW7.xml +++ b/src/wxWindowsW7.xml @@ -145,16 +145,6 @@ FrameworkPathfalse HostFlagsAll - - SearchPath - Pathiodbc - PathFormatWindows - PathRootProject - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - SearchPath Pathtiff @@ -999,15 +989,6 @@ Text Debug - - PathRelative - Project - common - cwy_tab.c - Windows - Text - Debug - PathRelative Project @@ -2484,15 +2465,6 @@ Text Debug - - PathRelative - Project - html - m_meta.cpp - Windows - Text - Debug - PathRelative Project @@ -3560,6 +3532,15 @@ Text Debug + + PathRelative + Project + common + settcmn.cpp + Windows + Text + Debug + @@ -3674,13 +3655,6 @@ ctrlsub.cpp Windows - - PathRelative - Project - common - cwy_tab.c - Windows - PathRelative Project @@ -4269,6 +4243,13 @@ sckstrm.cpp Windows + + PathRelative + Project + common + settcmn.cpp + Windows + PathRelative Project @@ -4815,13 +4796,6 @@ m_list.cpp Windows - - PathRelative - Project - html - m_meta.cpp - Windows - PathRelative Project @@ -10474,16 +10448,6 @@ FrameworkPathfalse HostFlagsAll - - SearchPath - Pathiodbc - PathFormatWindows - PathRootProject - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - SearchPath Pathtiff @@ -11328,15 +11292,6 @@ Text Debug - - PathRelative - Project - common - cwy_tab.c - Windows - Text - Debug - PathRelative Project @@ -12795,15 +12750,6 @@ Text Debug - - PathRelative - Project - html - m_meta.cpp - Windows - Text - Debug - PathRelative Project @@ -13889,6 +13835,15 @@ Text Debug + + PathRelative + Project + common + settcmn.cpp + Windows + Text + Debug + @@ -14003,13 +13958,6 @@ ctrlsub.cpp Windows - - PathRelative - Project - common - cwy_tab.c - Windows - PathRelative Project @@ -14598,6 +14546,13 @@ sckstrm.cpp Windows + + PathRelative + Project + common + settcmn.cpp + Windows + PathRelative Project @@ -15144,13 +15099,6 @@ m_list.cpp Windows - - PathRelative - Project - html - m_meta.cpp - Windows - PathRelative Project @@ -17212,14 +17160,6 @@ ctrlsub.cpp Windows - - wxlib Win32 debug - PathRelative - Project - common - cwy_tab.c - Windows - wxlib Win32 debug PathRelative @@ -17900,6 +17840,14 @@ sckstrm.cpp Windows + + wxlib Win32 debug + PathRelative + Project + common + settcmn.cpp + Windows + wxlib Win32 debug PathRelative @@ -18563,14 +18511,6 @@ m_list.cpp Windows - - wxlib Win32 debug - PathRelative - Project - html - m_meta.cpp - Windows - wxlib Win32 debug PathRelative diff --git a/src/wxwindowsM5.xml b/src/wxwindowsM5.xml index 84e65c1e06..b8ed6d1d98 100644 --- a/src/wxwindowsM5.xml +++ b/src/wxwindowsM5.xml @@ -153,6 +153,15 @@ Recursivetrue HostFlagsAll + + SearchPath + Path:regex: + PathFormatMacOS + PathRootProject + + Recursivetrue + HostFlagsAll + SearchPath Path:tiff: @@ -606,9 +615,9 @@ MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources - ‡þÀ - %#H - %8* + + ñ + @@ -2643,15 +2652,6 @@ Text Debug - - PathRelative - Project - :html: - :m_meta.cpp - MacOS - Text - Debug - PathRelative Project @@ -4806,13 +4806,6 @@ :treectlg.cpp MacOS - - PathRelative - Project - :html: - :m_meta.cpp - MacOS - PathRelative Project @@ -5440,6 +5433,15 @@ Recursivetrue HostFlagsAll + + SearchPath + Path:regex: + PathFormatMacOS + PathRootProject + + Recursivetrue + HostFlagsAll + SearchPath Path:tiff: @@ -5875,9 +5877,9 @@ MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources - ‡þÀ - %#H - %8* + + ñ + @@ -8303,13 +8305,6 @@ Text Debug - - Name - m_meta.cpp - MacOS - Text - Debug - Name m_pre.cpp @@ -10332,11 +10327,6 @@ m_list.cpp MacOS - - Name - m_meta.cpp - MacOS - Name m_pre.cpp @@ -10700,9 +10690,9 @@ MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources - ‡þÀ - %#H - %8* + + ñ + @@ -11332,6 +11322,15 @@ Recursivetrue HostFlagsAll + + SearchPath + Path:regex: + PathFormatMacOS + PathRootProject + + Recursivetrue + HostFlagsAll + SearchPath Path:tiff: @@ -11776,9 +11775,9 @@ MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources - ‡þÀ - %#H - %8* + + ñ + @@ -13804,15 +13803,6 @@ Text Debug - - PathRelative - Project - :html: - :m_meta.cpp - MacOS - Text - Debug - PathRelative Project @@ -15967,13 +15957,6 @@ :treectlg.cpp MacOS - - PathRelative - Project - :html: - :m_meta.cpp - MacOS - PathRelative Project @@ -16597,6 +16580,15 @@ Recursivetrue HostFlagsAll + + SearchPath + Path:regex: + PathFormatMacOS + PathRootProject + + Recursivetrue + HostFlagsAll + SearchPath Path:tiff: @@ -17041,9 +17033,9 @@ MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources - ‡þÀ - %#H - %8* + + ñ + @@ -19073,15 +19065,6 @@ Text Debug - - PathRelative - Project - :html: - :m_meta.cpp - MacOS - Text - Debug - PathRelative Project @@ -21238,13 +21221,6 @@ :treectlg.cpp MacOS - - PathRelative - Project - :html: - :m_meta.cpp - MacOS - PathRelative Project @@ -23695,14 +23671,6 @@ :m_list.cpp MacOS - - Classic Debug - PathRelative - Project - :html: - :m_meta.cpp - MacOS - Classic Debug PathRelative diff --git a/src/x11/app.cpp b/src/x11/app.cpp index 74fb19c9af..fbbbdd1d50 100644 --- a/src/x11/app.cpp +++ b/src/x11/app.cpp @@ -26,6 +26,7 @@ #include "wx/intl.h" #include "wx/evtloop.h" #include "wx/timer.h" +#include "wx/filename.h" #include "wx/univ/theme.h" #include "wx/univ/renderer.h" @@ -57,8 +58,6 @@ wxApp *wxTheApp = NULL; // This is set within wxEntryStart -- too early on // to put these in wxTheApp -static int g_newArgc = 0; -static wxChar** g_newArgv = NULL; static bool g_showIconic = FALSE; static wxSize g_initialSize = wxDefaultSize; @@ -136,10 +135,6 @@ bool wxApp::Initialize() void wxApp::CleanUp() { - if (g_newArgv) - delete[] g_newArgv; - g_newArgv = NULL; - delete wxWidgetHashTable; wxWidgetHashTable = NULL; delete wxClientWidgetHashTable; @@ -197,20 +192,13 @@ int wxEntryStart( int& argc, char *argv[] ) #endif #endif // __WXDEBUG__ - wxString displayName; + char *displayName = NULL; bool syncDisplay = FALSE; - // Parse the arguments. - // We can't use wxCmdLineParser or OnInitCmdLine and friends because - // we have to create the Display earlier. If we can find a way to - // use the wxAppBase API then I'll be quite happy to change it. - g_newArgv = new wxChar*[argc + 1]; - g_newArgc = 0; int i; for (i = 0; i < argc; i++) { - wxString arg(argv[i]); - if (arg == wxT("-display")) + if (strcmp( argv[i], "-display") == 0) { if (i < (argc - 1)) { @@ -219,16 +207,15 @@ int wxEntryStart( int& argc, char *argv[] ) continue; } } - else if (arg == wxT("-geometry")) + else if (strcmp( argv[i], "-geometry") == 0) { if (i < (argc - 1)) { i ++; - wxString windowGeometry = argv[i]; int w, h; - if (wxSscanf(windowGeometry.c_str(), _T("%dx%d"), &w, &h) != 2) + if (sscanf(argv[i], "%dx%d", &w, &h) != 2) { - wxLogError(_("Invalid geometry specification '%s'"), windowGeometry.c_str()); + wxLogError( _("Invalid geometry specification '%s'"), wxString::FromAscii(argv[i]).c_str() ); } else { @@ -237,30 +224,22 @@ int wxEntryStart( int& argc, char *argv[] ) continue; } } - else if (arg == wxT("-sync")) + else if (strcmp( argv[i], "-sync") == 0) { syncDisplay = TRUE; continue; } - else if (arg == wxT("-iconic")) + else if (strcmp( argv[i], "-iconic") == 0) { g_showIconic = TRUE; continue; } - // Not eaten by wxWindows, so pass through - g_newArgv[g_newArgc] = argv[i]; - g_newArgc ++; } - g_newArgv[g_newArgc] = NULL; - - Display* xdisplay = NULL; - if (displayName.IsEmpty()) - xdisplay = XOpenDisplay(NULL); - else - xdisplay = XOpenDisplay((char*) displayName.c_str()); + // X11 display stuff + Display* xdisplay = XOpenDisplay( displayName ); if (!xdisplay) { wxLogError( _("wxWindows could not open display. Exiting.") ); @@ -268,16 +247,20 @@ int wxEntryStart( int& argc, char *argv[] ) } if (syncDisplay) - { XSynchronize(xdisplay, True); - } wxApp::ms_display = (WXDisplay*) xdisplay; - + XSelectInput( xdisplay, XDefaultRootWindow(xdisplay), PropertyChangeMask); + // Misc. wxSetDetectableAutoRepeat( TRUE ); +#if wxUSE_UNICODE + // Glib's type system required by Pango + g_type_init(); +#endif + if (!wxApp::Initialize()) return -1; @@ -316,32 +299,39 @@ int wxEntry( int argc, char *argv[] ) { printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); return 0; - }; + } wxTheApp = (wxApp*) (* wxApp::GetInitializerFunction()) (); - }; + } if (!wxTheApp) { printf( "wxWindows error: wxTheApp == NULL\n" ); return 0; - }; - - wxTheApp->SetClassName(wxFileNameFromPath(argv[0])); - wxTheApp->SetAppName(wxFileNameFromPath(argv[0])); - - // The command line may have been changed - // by stripping out -display etc. - if (g_newArgc > 0) - { - wxTheApp->argc = g_newArgc; - wxTheApp->argv = g_newArgv; } - else + + // Command line argument stuff + wxTheApp->argc = argc; +#if wxUSE_UNICODE + wxTheApp->argv = new wxChar*[argc+1]; + int mb_argc = 0; + while (mb_argc < argc) { - wxTheApp->argc = argc; - wxTheApp->argv = argv; + wxString tmp = wxString::FromAscii( argv[mb_argc] ); + wxTheApp->argv[mb_argc] = wxStrdup( tmp.c_str() ); + mb_argc++; } + wxTheApp->argv[mb_argc] = (wxChar *)NULL; +#else + wxTheApp->argv = argv; +#endif + + if (wxTheApp->argc > 0) + { + wxFileName fname( wxTheApp->argv[0] ); + wxTheApp->SetAppName( fname.GetName() ); + } + wxTheApp->m_showIconic = g_showIconic; wxTheApp->m_initialSize = g_initialSize; @@ -603,6 +593,9 @@ bool wxApp::ProcessXEvent(WXEvent* _event) return TRUE; keyEvent.SetEventType(wxEVT_CHAR); + // Do the translation again, retaining the ASCII + // code. + wxTranslateKeyEvent(keyEvent, win, window, event, TRUE); if (win->GetEventHandler()->ProcessEvent( keyEvent )) return TRUE; @@ -1112,6 +1105,42 @@ bool wxApp::OnInitGui() return TRUE; } +#if wxUSE_UNICODE + +#include +#include +#include + +PangoContext* wxApp::GetPangoContext() +{ + static PangoContext *ret = NULL; + if (ret) + return ret; + + Display *xdisplay = (Display*) wxApp::GetDisplay(); + +#if 1 + int xscreen = DefaultScreen(xdisplay); + static int use_xft = -1; + if (use_xft == -1) + { + wxString val = wxGetenv( L"GDK_USE_XFT" ); + use_xft = (val == L"1"); + } + + if (use_xft) + ret = pango_xft_get_context( xdisplay, xscreen ); + else +#endif + ret = pango_x_get_context( xdisplay ); + + if (!PANGO_IS_CONTEXT(ret)) + wxLogError( wxT("No pango context.") ); + + return ret; +} +#endif + WXColormap wxApp::GetMainColormap(WXDisplay* display) { if (!display) /* Must be called first with non-NULL display */ @@ -1205,6 +1234,10 @@ bool wxApp::Yield(bool onlyIfNeeded) wxEventLoop::SetActive(newEventLoop); } + // Call dispatch at least once so that sockets + // can be tested + wxTheApp->Dispatch(); + while (wxTheApp && wxTheApp->Pending()) wxTheApp->Dispatch(); diff --git a/src/x11/bitmap.cpp b/src/x11/bitmap.cpp index 38f8aba90a..8663744e46 100644 --- a/src/x11/bitmap.cpp +++ b/src/x11/bitmap.cpp @@ -91,7 +91,7 @@ bool wxMask::Create( const wxBitmap& bitmap, m_display = bitmap.GetDisplay(); - wxImage image( bitmap ); + wxImage image = bitmap.ConvertToImage(); if (!image.Ok()) return FALSE; m_display = bitmap.GetDisplay(); @@ -1022,7 +1022,7 @@ bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(pal // Try to save the bitmap via wxImage handlers: { - wxImage image( *this ); + wxImage image(this->ConvertToImage()) ; if (image.Ok()) return image.SaveFile( name, type ); } @@ -1111,7 +1111,7 @@ bool wxBitmap::LoadFile( const wxString &name, int type ) { wxImage image; if (!image.LoadFile( name, type )) return FALSE; - if (image.Ok()) *this = image.ConvertToBitmap(); + if (image.Ok()) *this = wxBitmap(image); else return FALSE; } diff --git a/src/x11/data.cpp b/src/x11/data.cpp index 3cbdf91ef4..ffd29c7587 100644 --- a/src/x11/data.cpp +++ b/src/x11/data.cpp @@ -85,46 +85,46 @@ wxPalette wxNullPalette; wxFont wxNullFont; wxColour wxNullColour; -// Default window names -const char *wxControlNameStr = "control"; -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxDirDialogNameStr = "wxDirCtrl"; -const char *wxDirDialogDefaultFolderStr = "/"; +/* Default window names */ +const wxChar *wxControlNameStr = wxT("control"); +const wxChar *wxButtonNameStr = wxT("button"); +const wxChar *wxCanvasNameStr = wxT("canvas"); +const wxChar *wxCheckBoxNameStr = wxT("check"); +const wxChar *wxChoiceNameStr = wxT("choice"); +const wxChar *wxComboBoxNameStr = wxT("comboBox"); +const wxChar *wxDialogNameStr = wxT("dialog"); +const wxChar *wxFrameNameStr = wxT("frame"); +const wxChar *wxGaugeNameStr = wxT("gauge"); +const wxChar *wxStaticBoxNameStr = wxT("groupBox"); +const wxChar *wxListBoxNameStr = wxT("listBox"); +const wxChar *wxStaticTextNameStr = wxT("message"); +const wxChar *wxStaticBitmapNameStr = wxT("message"); +const wxChar *wxMultiTextNameStr = wxT("multitext"); +const wxChar *wxPanelNameStr = wxT("panel"); +const wxChar *wxRadioBoxNameStr = wxT("radioBox"); +const wxChar *wxRadioButtonNameStr = wxT("radioButton"); +const wxChar *wxBitmapRadioButtonNameStr = wxT("radioButton"); +const wxChar *wxScrollBarNameStr = wxT("scrollBar"); +const wxChar *wxSliderNameStr = wxT("slider"); +const wxChar *wxStaticNameStr = wxT("static"); +const wxChar *wxTextCtrlWindowNameStr = wxT("textWindow"); +const wxChar *wxTextCtrlNameStr = wxT("text"); +const wxChar *wxVirtListBoxNameStr = wxT("virtListBox"); +const wxChar *wxButtonBarNameStr = wxT("buttonbar"); +const wxChar *wxEnhDialogNameStr = wxT("Shell"); +const wxChar *wxToolBarNameStr = wxT("toolbar"); +const wxChar *wxStatusLineNameStr = wxT("status_line"); +const wxChar *wxGetTextFromUserPromptStr = wxT("Input Text"); +const wxChar *wxMessageBoxCaptionStr = wxT("Message"); +const wxChar *wxFileSelectorPromptStr = wxT("Select a file"); +const wxChar *wxFileSelectorDefaultWildcardStr = wxT("*"); +const wxChar *wxDirDialogNameStr = wxT("wxDirCtrl"); +const wxChar *wxDirDialogDefaultFolderStr = wxT("/"); const wxChar *wxTreeCtrlNameStr = wxT("wxTreeCtrl"); -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; +/* See wx/utils.h */ +const wxChar *wxFloatToStringStr = wxT("%.2f"); +const wxChar *wxDoubleToStringStr = wxT("%.2f"); const wxSize wxDefaultSize(-1, -1); diff --git a/src/x11/dataobj.cpp b/src/x11/dataobj.cpp index 21e8776a29..548bbe151f 100644 --- a/src/x11/dataobj.cpp +++ b/src/x11/dataobj.cpp @@ -102,7 +102,7 @@ wxString wxDataFormat::GetId() const return wxEmptyString; #else char *t = XGetAtomName ((Display*) wxGetDisplay(), m_format); - wxString ret( t ); // this will convert from ascii to Unicode + wxString ret = wxString::FromAscii( t ); if (t) XFree( t ); return ret; @@ -132,7 +132,7 @@ void wxDataFormat::SetId( const wxChar *id ) PrepareFormats(); m_type = wxDF_PRIVATE; wxString tmp( id ); - m_format = XInternAtom( (Display*) wxGetDisplay(), wxMBSTRINGCAST tmp.mbc_str(), FALSE ); // what is the string cast for? + m_format = XInternAtom( (Display*) wxGetDisplay(), tmp.ToAscii(), FALSE ); #endif } @@ -351,7 +351,7 @@ bool wxBitmapDataObject::SetData(size_t size, const void *buf) return FALSE; } - m_bitmap = image.ConvertToBitmap(); + m_bitmap = image; return m_bitmap.Ok(); #else @@ -365,7 +365,7 @@ void wxBitmapDataObject::DoConvertToPng() if (!m_bitmap.Ok()) return; - wxImage image( m_bitmap ); + wxImage image = m_bitmap.ConvertToImage(); wxPNGHandler handler; wxCountingOutputStream count; diff --git a/src/x11/dcclient.cpp b/src/x11/dcclient.cpp index 1eb072f8aa..162a8c7153 100644 --- a/src/x11/dcclient.cpp +++ b/src/x11/dcclient.cpp @@ -19,11 +19,20 @@ #include "wx/app.h" #include "wx/image.h" #include "wx/module.h" +#include "wx/fontutil.h" #include "wx/x11/private.h" #include +#if wxUSE_UNICODE +#include "glib.h" +#include "pango/pangox.h" +#include "pango/pangoxft.h" + +#include "pango_x.cpp" +#endif + //----------------------------------------------------------------------------- // local defines //----------------------------------------------------------------------------- @@ -163,6 +172,11 @@ wxWindowDC::wxWindowDC() m_isMemDC = FALSE; m_isScreenDC = FALSE; m_owner = (wxWindow *)NULL; + +#if wxUSE_UNICODE + m_context = (PangoContext *)NULL; + m_fontdesc = (PangoFontDescription *)NULL; +#endif } wxWindowDC::wxWindowDC( wxWindow *window ) @@ -193,6 +207,11 @@ wxWindowDC::wxWindowDC( wxWindow *window ) m_display = (WXDisplay *) wxGlobalDisplay(); +#if wxUSE_UNICODE + m_context = wxTheApp->GetPangoContext(); + m_fontdesc = window->GetFont().GetNativeFontInfo()->description; +#endif + int screen = DefaultScreen( (Display*) m_display ); m_cmap = (WXColormap) DefaultColormap( (Display*) m_display, screen ); @@ -332,7 +351,7 @@ bool wxWindowDC::DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const memdc.SelectObject(bitmap); memdc.Blit(0, 0, 1, 1, (wxDC*) this, x1, y1); memdc.SelectObject(wxNullBitmap); - wxImage image(bitmap); + wxImage image(bitmap.ConvertToImage()); col->Set(image.GetRed(0, 0), image.GetGreen(0, 0), image.GetBlue(0, 0)); return TRUE; } @@ -344,8 +363,19 @@ void wxWindowDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) if (m_pen.GetStyle() != wxTRANSPARENT) { if (m_window) - XDrawLine( (Display*) m_display, (Window) m_window, - (GC) m_penGC, XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) ); + { + // This hack is for the iPaq: XDrawLine draws + // nothing, whereas XDrawLines works... + wxPoint points[2]; + points[0].x = x1; + points[0].y = y1; + points[1].x = x2; + points[1].y = y2; + DrawLines( 2, points, 0, 0 ); + + // XDrawLine( (Display*) m_display, (Window) m_window, + // (GC) m_penGC, XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) ); + } CalcBoundingBox(x1, y1); CalcBoundingBox(x2, y2); @@ -884,14 +914,14 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, wxBitmap use_bitmap; if ((w != ww) || (h != hh)) { - wxImage image( bitmap ); + wxImage image( bitmap.ConvertToImage() ); image.Rescale( ww, hh ); #if 0 if (is_mono) use_bitmap = image.ConvertToMonoBitmap(255,255,255); else #endif - use_bitmap = image.ConvertToBitmap(); + use_bitmap = image; } else { @@ -1003,14 +1033,14 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, wxBitmap use_bitmap; if ((w != ww) || (h != hh)) { - wxImage image( bitmap ); + wxImage image( bitmap.ConvertToImage() ); image.Rescale( ww, hh ); #if 0 if (is_mono) use_bitmap = image.ConvertToMonoBitmap(255,255,255); else #endif - use_bitmap = image.ConvertToBitmap(); + use_bitmap = image; } else { @@ -1206,7 +1236,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he if ((bm_width != bm_ww) || (bm_height != bm_hh)) { - wxImage image( memDC->m_selected ); + wxImage image( memDC->m_selected.ConvertToImage() ); image = image.Scale( bm_ww, bm_hh ); #if 0 @@ -1214,7 +1244,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he use_bitmap = image.ConvertToMonoBitmap(255,255,255); else #endif - use_bitmap = image.ConvertToBitmap(); + use_bitmap = image; } else { @@ -1325,11 +1355,11 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he XSetSubwindowMode( (Display*) m_display, (GC) m_penGC, ClipByChildren ); // scale image - wxImage image( bitmap ); + wxImage image( bitmap.ConvertToImage() ); image = image.Scale( ww, hh ); // convert to bitmap - bitmap = image.ConvertToBitmap(); + bitmap = image; // draw scaled bitmap XCopyArea( (Display*) m_display, (Window) bitmap.GetPixmap(), (Window) m_window, @@ -1358,13 +1388,34 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) if (!m_window) return; - XFontStruct *xfont = (XFontStruct*) m_font.GetFontStruct( m_scaleY, m_display ); - - wxCHECK_RET( xfont, wxT("invalid font") ); - x = XLOG2DEV(x); y = YLOG2DEV(y); +#if wxUSE_UNICODE + PangoLayout *layout = pango_layout_new(m_context); + pango_layout_set_font_description(layout, m_fontdesc); + + const wxCharBuffer data = wxConvUTF8.cWC2MB( text ); + pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + + // Measure layout. + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + wxCoord width = w; + wxCoord height = h; + + // Draw layout. + x11_draw_layout( (Drawable) m_window, (GC) m_textGC, x, y, layout, m_textForegroundColour ); + + g_object_unref( G_OBJECT( layout ) ); + + CalcBoundingBox (x + width, y + height); + CalcBoundingBox (x, y); +#else + XFontStruct *xfont = (XFontStruct*) m_font.GetFontStruct( m_scaleY, m_display ); + + wxCHECK_RET( xfont, wxT("invalid font") ); + // First draw a rectangle representing the text background, if a text // background is specified if (m_textBackgroundColour.Ok () && (m_backgroundMode != wxTRANSPARENT)) @@ -1415,6 +1466,7 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) CalcBoundingBox (x + width, y + height); CalcBoundingBox (x, y); #endif +#endif } void wxWindowDC::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y, double angle ) @@ -1428,6 +1480,39 @@ void wxWindowDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoor { wxCHECK_RET( Ok(), "invalid dc" ); + if (string.IsEmpty()) + { + if (width) (*width) = 0; + if (height) (*height) = 0; + return; + } + +#if wxUSE_UNICODE + PangoLayout *layout = pango_layout_new( m_context ); + + if (font) + pango_layout_set_font_description( layout, font->GetNativeFontInfo()->description ); + else + pango_layout_set_font_description(layout, m_fontdesc); + + const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); + pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + + // Measure text. + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + + if (width) (*width) = (wxCoord) w; + if (height) (*height) = (wxCoord) h; + if (descent) + { + // Do something about metrics here. TODO. + (*descent) = 0; + } + if (externalLeading) (*externalLeading) = 0; // ?? + + g_object_unref( G_OBJECT( layout ) ); +#else wxFont fontToUse = m_font; if (font) fontToUse = *font; @@ -1451,12 +1536,30 @@ void wxWindowDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoor *descent = (wxCoord)(descent2 / m_scaleY ); if (externalLeading) *externalLeading = 0; // ?? +#endif } wxCoord wxWindowDC::GetCharWidth() const { wxCHECK_MSG( Ok(), 0, "invalid dc" ); +#if wxUSE_UNICODE + PangoLayout *layout = pango_layout_new( m_context ); + + if (!m_fontdesc) + { + char *crash = NULL; + *crash = 0; + } + + pango_layout_set_font_description(layout, m_fontdesc); + pango_layout_set_text(layout, "H", 1 ); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + + return w; +#else wxCHECK_MSG( m_font.Ok(), 0, "invalid font" ); XFontStruct *xfont = (XFontStruct*) m_font.GetFontStruct( m_scaleY, m_display ); @@ -1469,12 +1572,31 @@ wxCoord wxWindowDC::GetCharWidth() const XTextExtents( xfont, "H", 1, &direction, &ascent, &descent, &overall ); return (wxCoord)(overall.width / m_scaleX); +#endif } wxCoord wxWindowDC::GetCharHeight() const { wxCHECK_MSG( Ok(), 0, "invalid dc" ); +#if wxUSE_UNICODE + PangoLayout *layout = pango_layout_new( m_context ); + + if (!m_fontdesc) + { + char *crash = NULL; + *crash = 0; + } + + pango_layout_set_font_description(layout, m_fontdesc); + + pango_layout_set_text(layout, "H", 1 ); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + + return h; +#else wxCHECK_MSG( m_font.Ok(), 0, "invalid font" ); XFontStruct *xfont = (XFontStruct*) m_font.GetFontStruct( m_scaleY, m_display ); @@ -1487,6 +1609,7 @@ wxCoord wxWindowDC::GetCharHeight() const XTextExtents( xfont, "H", 1, &direction, &ascent, &descent, &overall ); return (wxCoord)((ascent+descent) / m_scaleY); +#endif } void wxWindowDC::Clear() @@ -2047,7 +2170,7 @@ wxClientDC::wxClientDC( wxWindow *window ) m_window = (WXWindow*) window->GetClientAreaWindow(); - // Adjust the client area when the wxWindow is not using 2 X windows. + // Adjust the client area when the wxWindow is not using 2 X11 windows. if (m_window == (WXWindow*) window->GetMainWindow()) { wxPoint ptOrigin = window->GetClientAreaOrigin(); diff --git a/src/x11/dcscreen.cpp b/src/x11/dcscreen.cpp index 0efabc519c..58f24d50ca 100644 --- a/src/x11/dcscreen.cpp +++ b/src/x11/dcscreen.cpp @@ -17,6 +17,8 @@ #include "wx/frame.h" #include "wx/dcscreen.h" #include "wx/utils.h" +#include "wx/app.h" +#include "wx/fontutil.h" #include "wx/x11/private.h" @@ -47,6 +49,11 @@ wxScreenDC::wxScreenDC() m_isScreenDC = TRUE; +#if wxUSE_UNICODE + m_context = wxTheApp->GetPangoContext(); + m_fontdesc = wxNORMAL_FONT->GetNativeFontInfo()->description; +#endif + SetUpDC(); XSetSubwindowMode( (Display*) m_display, (GC) m_penGC, IncludeInferiors ); @@ -86,24 +93,23 @@ bool wxScreenDC::StartDrawingOnTop( wxWindow *window ) return StartDrawingOnTop( &rect ); } -bool wxScreenDC::StartDrawingOnTop( wxRect *rect ) +bool wxScreenDC::StartDrawingOnTop( wxRect *rectIn ) { - int x = 0; - int y = 0; + // VZ: should we do the same thing that wxMotif wxScreenDC does here? #if 0 - int width = gdk_screen_width(); - int height = gdk_screen_height(); -#else - int width = 1024; - int height = 768; -#endif - if (rect) + wxRect rect; + if ( rectIn ) { - x = rect->x; - y = rect->y; - width = rect->width; - height = rect->height; + rect = *rectIn; } + else + { + rect.x = + rect.y = 0; + + DoGetSize(&rect.width, &rect.height); + } +#endif // 0 return TRUE; } diff --git a/src/x11/evtloop.cpp b/src/x11/evtloop.cpp index f15fe04516..aaf03464a3 100644 --- a/src/x11/evtloop.cpp +++ b/src/x11/evtloop.cpp @@ -175,7 +175,7 @@ void wxSocketTable::FillSets(fd_set* readset, fd_set* writeset, int* highest) while (node) { wxSocketTableEntry* entry = (wxSocketTableEntry*) node->Data(); - + if (entry->m_fdInput != -1) { FD_SET(entry->m_fdInput, readset); @@ -201,7 +201,7 @@ void wxSocketTable::ProcessEvents(fd_set* readset, fd_set* writeset) while (node) { wxSocketTableEntry* entry = (wxSocketTableEntry*) node->Data(); - + if (entry->m_fdInput != -1 && FD_ISSET(entry->m_fdInput, readset)) { (entry->m_callbackInput) (entry->m_fdInput, entry->m_dataInput); @@ -375,7 +375,7 @@ int wxEventLoop::Run() while ( m_impl->m_keepGoing ) { #if 0 // wxUSE_THREADS - wxMutexGuiLeaveOrEnter(); + wxMutexGuiLeaveOrEnter(); #endif // wxUSE_THREADS // generate and process idle events for as long as we don't have @@ -387,7 +387,7 @@ int wxEventLoop::Run() #endif if (!m_impl->SendIdleEvent()) { -#if wxUSE_THREADS +#if 0 // wxUSE_THREADS // leave the main loop to give other threads a chance to // perform their GUI work wxMutexGuiLeave(); @@ -430,8 +430,8 @@ void wxEventLoop::Exit(int rc) bool wxEventLoop::Pending() const { - XFlush((Display*) wxGetDisplay()); - return (XPending((Display*) wxGetDisplay()) > 0); + XFlush( wxGlobalDisplay() ); + return (XPending( wxGlobalDisplay() ) > 0); } bool wxEventLoop::Dispatch() @@ -447,7 +447,7 @@ bool wxEventLoop::Dispatch() // often, so we should probably limit idle processing to // not be repeated more than every N milliseconds. - if (XPending((Display*) wxGetDisplay()) == 0) + if (XPending( wxGlobalDisplay() ) == 0) { #if wxUSE_NANOX GR_TIMEOUT timeout = 10; // Milliseconds @@ -462,7 +462,8 @@ bool wxEventLoop::Dispatch() struct timeval tv; tv.tv_sec=0; tv.tv_usec=10000; // TODO make this configurable - int fd = ConnectionNumber((Display*) wxGetDisplay()); + int fd = ConnectionNumber( wxGlobalDisplay() ); + fd_set readset; fd_set writeset; int highest = fd; @@ -473,10 +474,10 @@ bool wxEventLoop::Dispatch() #if wxUSE_SOCKETS if (wxTheSocketTable) - wxTheSocketTable->FillSets(& readset, & writeset, & highest); + wxTheSocketTable->FillSets( &readset, &writeset, &highest ); #endif - if (select(highest+1, &readset, &writeset, NULL, & tv) == 0) + if (select( highest+1, &readset, &writeset, NULL, &tv ) == 0) { // Timed out, so no event to process return TRUE; @@ -484,23 +485,25 @@ bool wxEventLoop::Dispatch() else { // An X11 event was pending, so get it - if (FD_ISSET(fd, & readset)) - XNextEvent((Display*) wxGetDisplay(), & event); + if (FD_ISSET( fd, &readset )) + XNextEvent( wxGlobalDisplay(), &event ); #if wxUSE_SOCKETS // Check if any socket events were pending, // and if so, call their callbacks if (wxTheSocketTable) - wxTheSocketTable->ProcessEvents(& readset, & writeset); + wxTheSocketTable->ProcessEvents( &readset, &writeset ); #endif } #endif - } else + } + else { - XNextEvent((Display*) wxGetDisplay(), & event); + XNextEvent( wxGlobalDisplay(), &event ); } - (void) m_impl->ProcessEvent(& event); + + (void) m_impl->ProcessEvent( &event ); return TRUE; } diff --git a/src/x11/files.lst b/src/x11/files.lst index b9d0947941..c06c7c0ecf 100644 --- a/src/x11/files.lst +++ b/src/x11/files.lst @@ -236,7 +236,6 @@ ALL_SOURCES = \ html/m_layout.cpp \ html/m_links.cpp \ html/m_list.cpp \ - html/m_meta.cpp \ html/m_pre.cpp \ html/m_style.cpp \ html/m_tables.cpp \ @@ -405,6 +404,7 @@ ALL_HEADERS = \ prop.h \ propform.h \ proplist.h \ + quantize.h \ radiobox.h \ radiobut.h \ regex.h \ @@ -648,7 +648,6 @@ GUI_LOWLEVEL_OBJS = \ window.o COMMONOBJS = \ - parser.o \ appcmn.o \ artprov.o \ artstd.o \ @@ -859,7 +858,6 @@ HTMLOBJS = \ m_layout.o \ m_links.o \ m_list.o \ - m_meta.o \ m_pre.o \ m_style.o \ m_tables.o \ diff --git a/src/x11/font.cpp b/src/x11/font.cpp index 6f6db81d0c..8cd3bba65c 100644 --- a/src/x11/font.cpp +++ b/src/x11/font.cpp @@ -38,12 +38,23 @@ #include "wx/fontutil.h" // for wxNativeFontInfo #include "wx/tokenzr.h" #include "wx/settings.h" + #include "wx/x11/private.h" IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) // ---------------------------------------------------------------------------- -// private classes +// constants +// ---------------------------------------------------------------------------- + +// the default size (in points) for the fonts +static const int wxDEFAULT_FONT_SIZE = 12; + + +#if wxUSE_UNICODE +#else +// ---------------------------------------------------------------------------- +// wxXFont // ---------------------------------------------------------------------------- // For every wxFont, there must be a font for each display and scale requested. @@ -59,63 +70,6 @@ public: int m_scale; // Scale * 100 }; -class wxFontRefData: public wxGDIRefData -{ -friend class wxFont; - -public: - wxFontRefData(int size = wxDEFAULT, - int family = wxDEFAULT, - int style = wxDEFAULT, - int weight = wxDEFAULT, - bool underlined = FALSE, - const wxString& faceName = wxEmptyString, - wxFontEncoding encoding = wxFONTENCODING_DEFAULT) - { - Init(size, family, style, weight, underlined, faceName, encoding); - } - - wxFontRefData(const wxFontRefData& data) - { - Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight, - data.m_underlined, data.m_faceName, data.m_encoding); - } - - ~wxFontRefData(); - -protected: - // common part of all ctors - void Init(int size, - int family, - int style, - int weight, - bool underlined, - const wxString& faceName, - wxFontEncoding encoding); - - // font attributes - int m_pointSize; - int m_family; - int m_style; - int m_weight; - bool m_underlined; - wxString m_faceName; - wxFontEncoding m_encoding; - - wxNativeFontInfo m_nativeFontInfo; - - // A list of wxXFonts - wxList m_fonts; -}; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxXFont -// ---------------------------------------------------------------------------- - wxXFont::wxXFont() { m_fontStruct = (WXFontStructPtr) 0; @@ -130,6 +84,83 @@ wxXFont::~wxXFont() // XFontStruct* fontStruct = (XFontStruct*) m_fontStruct; // XFreeFont((Display*) m_display, fontStruct); } +#endif + +// ---------------------------------------------------------------------------- +// wxFontRefData +// ---------------------------------------------------------------------------- + +class wxFontRefData: public wxObjectRefData +{ +friend class wxFont; + +public: + wxFontRefData(int size = wxDEFAULT, + int family = wxDEFAULT, + int style = wxDEFAULT, + int weight = wxDEFAULT, + bool underlined = FALSE, + const wxString& faceName = wxEmptyString, + wxFontEncoding encoding = wxFONTENCODING_DEFAULT); + + // copy cstr + wxFontRefData(const wxFontRefData& data); + + // from XFLD + wxFontRefData(const wxString& fontname); + + // dstr + virtual ~wxFontRefData(); + + // setters: all of them also take care to modify m_nativeFontInfo if we + // have it so as to not lose the information not carried by our fields + void SetPointSize(int pointSize); + void SetFamily(int family); + void SetStyle(int style); + void SetWeight(int weight); + void SetUnderlined(bool underlined); + void SetFaceName(const wxString& facename); + void SetEncoding(wxFontEncoding encoding); + + void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; } + bool GetNoAntiAliasing() { return m_noAA; } + + // and this one also modifies all the other font data fields + void SetNativeFontInfo(const wxNativeFontInfo& info); + +protected: + // common part of all ctors + void Init(int size, + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + wxFontEncoding encoding); + + // set all fields from (already initialized and valid) m_nativeFontInfo + void InitFromNative(); + + // font attributes + int m_pointSize; + int m_family; + int m_style; + int m_weight; + bool m_underlined; + wxString m_faceName; + wxFontEncoding m_encoding; // Unused in Unicode mode + bool m_noAA; // No anti-aliasing + + wxNativeFontInfo m_nativeFontInfo; + + void ClearX11Fonts(); + +#if wxUSE_UNICODE +#else + // A list of wxXFonts + wxList m_fonts; +#endif +}; // ---------------------------------------------------------------------------- // wxFontRefData @@ -143,34 +174,256 @@ void wxFontRefData::Init(int pointSize, const wxString& faceName, wxFontEncoding encoding) { - if (family == wxDEFAULT) - m_family = wxSWISS; - else - m_family = family; + m_family = family == wxFONTFAMILY_DEFAULT ? wxFONTFAMILY_SWISS : family; m_faceName = faceName; - if (style == wxDEFAULT) - m_style = wxNORMAL; - else - m_style = style; + // we accept both wxDEFAULT and wxNORMAL here - should we? + m_style = style == wxDEFAULT ? wxFONTSTYLE_NORMAL : style; + m_weight = weight == wxDEFAULT ? wxFONTWEIGHT_NORMAL : weight; - if (weight == wxDEFAULT) - m_weight = wxNORMAL; - else - m_weight = weight; - - if (pointSize == wxDEFAULT) - m_pointSize = 12; - else - m_pointSize = pointSize; + // and here, do we really want to forbid creation of the font of the size + // 90 (the value of wxDEFAULT)?? + m_pointSize = pointSize == wxDEFAULT || pointSize == -1 + ? wxDEFAULT_FONT_SIZE + : pointSize; m_underlined = underlined; m_encoding = encoding; + +#if wxUSE_UNICODE + // Create native font info + m_nativeFontInfo.description = pango_font_description_new(); + + // And set its values + switch (m_family) + { + case wxFONTFAMILY_MODERN: + case wxFONTFAMILY_TELETYPE: + pango_font_description_set_family( m_nativeFontInfo.description, "monospace" ); + break; + case wxFONTFAMILY_SWISS: + pango_font_description_set_family( m_nativeFontInfo.description, "serif" ); + break; + default: + pango_font_description_set_family( m_nativeFontInfo.description, "sans" ); + break; + } + SetStyle( m_style ); + SetPointSize( m_pointSize ); + SetWeight( m_weight ); +#endif } -wxFontRefData::~wxFontRefData() +void wxFontRefData::InitFromNative() { + m_noAA = FALSE; + +#if wxUSE_UNICODE + // Get native info + PangoFontDescription *desc = m_nativeFontInfo.description; + + // init fields + m_faceName = wxGTK_CONV_BACK( pango_font_description_get_family( desc ) ); + + m_pointSize = pango_font_description_get_size( desc ) / PANGO_SCALE; + + switch (pango_font_description_get_style( desc )) + { + case PANGO_STYLE_NORMAL: + m_style = wxFONTSTYLE_NORMAL; + break; + case PANGO_STYLE_ITALIC: + m_style = wxFONTSTYLE_ITALIC; + break; + case PANGO_STYLE_OBLIQUE: + m_style = wxFONTSTYLE_SLANT; + break; + } + + switch (pango_font_description_get_weight( desc )) + { + case PANGO_WEIGHT_ULTRALIGHT: + m_weight = wxFONTWEIGHT_LIGHT; + break; + case PANGO_WEIGHT_LIGHT: + m_weight = wxFONTWEIGHT_LIGHT; + break; + case PANGO_WEIGHT_NORMAL: + m_weight = wxFONTWEIGHT_NORMAL; + break; + case PANGO_WEIGHT_BOLD: + m_weight = wxFONTWEIGHT_BOLD; + break; + case PANGO_WEIGHT_ULTRABOLD: + m_weight = wxFONTWEIGHT_BOLD; + break; + case PANGO_WEIGHT_HEAVY: + m_weight = wxFONTWEIGHT_BOLD; + break; + } + + if (m_faceName == wxT("monospace")) + { + m_family = wxFONTFAMILY_TELETYPE; + } + else if (m_faceName == wxT("sans")) + { + m_family = wxFONTFAMILY_SWISS; + } + else + { + m_family = wxFONTFAMILY_UNKNOWN; + } + + // Pango description are never underlined (?) + m_underlined = FALSE; + + // Cannot we choose that + m_encoding = wxFONTENCODING_SYSTEM; +#else // X11 + // get the font parameters from the XLFD + // ------------------------------------- + + m_faceName = m_nativeFontInfo.GetXFontComponent(wxXLFD_FAMILY); + + m_weight = wxFONTWEIGHT_NORMAL; + + wxString w = m_nativeFontInfo.GetXFontComponent(wxXLFD_WEIGHT).Upper(); + if ( !w.empty() && w != _T('*') ) + { + // the test below catches all of BOLD, EXTRABOLD, DEMIBOLD, ULTRABOLD + // and BLACK + if ( ((w[0u] == _T('B') && (!wxStrcmp(w.c_str() + 1, wxT("OLD")) || + !wxStrcmp(w.c_str() + 1, wxT("LACK"))))) || + wxStrstr(w.c_str() + 1, _T("BOLD")) ) + { + m_weight = wxFONTWEIGHT_BOLD; + } + else if ( w == _T("LIGHT") || w == _T("THIN") ) + { + m_weight = wxFONTWEIGHT_LIGHT; + } + } + + switch ( wxToupper(*m_nativeFontInfo. + GetXFontComponent(wxXLFD_SLANT).c_str()) ) + { + case _T('I'): // italique + m_style = wxFONTSTYLE_ITALIC; + break; + + case _T('O'): // oblique + m_style = wxFONTSTYLE_SLANT; + break; + + default: + m_style = wxFONTSTYLE_NORMAL; + } + + long ptSize; + if ( m_nativeFontInfo.GetXFontComponent(wxXLFD_POINTSIZE).ToLong(&ptSize) ) + { + // size in XLFD is in 10 point units + m_pointSize = (int)(ptSize / 10); + } + else + { + m_pointSize = wxDEFAULT_FONT_SIZE; + } + + // examine the spacing: if the font is monospaced, assume wxTELETYPE + // family for compatibility with the old code which used it instead of + // IsFixedWidth() + if ( m_nativeFontInfo.GetXFontComponent(wxXLFD_SPACING).Upper() == _T('M') ) + { + m_family = wxFONTFAMILY_TELETYPE; + } + else // not monospaceed + { + // don't even try guessing it, it doesn't work for too many fonts + // anyhow + m_family = wxFONTFAMILY_UNKNOWN; + } + + // X fonts are never underlined... + m_underlined = FALSE; + + // deal with font encoding + wxString + registry = m_nativeFontInfo.GetXFontComponent(wxXLFD_REGISTRY).Upper(), + encoding = m_nativeFontInfo.GetXFontComponent(wxXLFD_ENCODING).Upper(); + + if ( registry == _T("ISO8859") ) + { + int cp; + if ( wxSscanf(encoding, wxT("%d"), &cp) == 1 ) + { + m_encoding = (wxFontEncoding)(wxFONTENCODING_ISO8859_1 + cp - 1); + } + } + else if ( registry == _T("MICROSOFT") ) + { + int cp; + if ( wxSscanf(encoding, wxT("cp125%d"), &cp) == 1 ) + { + m_encoding = (wxFontEncoding)(wxFONTENCODING_CP1250 + cp); + } + } + else if ( registry == _T("KOI8") ) + { + m_encoding = wxFONTENCODING_KOI8; + } + else // unknown encoding + { + // may be give a warning here? or use wxFontMapper? + m_encoding = wxFONTENCODING_SYSTEM; + } +#endif // Pango/X11 +} + +wxFontRefData::wxFontRefData( const wxFontRefData& data ) + : wxObjectRefData() +{ + m_pointSize = data.m_pointSize; + m_family = data.m_family; + m_style = data.m_style; + m_weight = data.m_weight; + + m_underlined = data.m_underlined; + + m_faceName = data.m_faceName; + m_encoding = data.m_encoding; + + m_noAA = data.m_noAA; + + m_nativeFontInfo = data.m_nativeFontInfo; +} + +wxFontRefData::wxFontRefData(int size, int family, int style, + int weight, bool underlined, + const wxString& faceName, + wxFontEncoding encoding) +{ + Init(size, family, style, weight, underlined, faceName, encoding); +} + +wxFontRefData::wxFontRefData(const wxString& fontname) +{ + // VZ: FromString() should really work in both cases, doesn't it? +#if wxUSE_UNICODE + m_nativeFontInfo.FromString( fontname ); +#else + m_nativeFontInfo.SetXFontName(fontname); +#endif + + InitFromNative(); +} + +void wxFontRefData::ClearX11Fonts() +{ +#if wxUSE_UNICODE +#else wxNode* node = m_fonts.First(); while (node) { @@ -179,21 +432,119 @@ wxFontRefData::~wxFontRefData() node = node->Next(); } m_fonts.Clear(); +#endif +} + +wxFontRefData::~wxFontRefData() +{ + ClearX11Fonts(); +} + +// ---------------------------------------------------------------------------- +// wxFontRefData SetXXX() +// ---------------------------------------------------------------------------- + +void wxFontRefData::SetPointSize(int pointSize) +{ + m_pointSize = pointSize; + +#if wxUSE_UNICODE + // Get native info + PangoFontDescription *desc = m_nativeFontInfo.description; + + pango_font_description_set_size( desc, m_pointSize * PANGO_SCALE ); +#endif +} + +void wxFontRefData::SetFamily(int family) +{ + m_family = family; + + // TODO: what are we supposed to do with m_nativeFontInfo here? +} + +void wxFontRefData::SetStyle(int style) +{ + m_style = style; + +#if wxUSE_UNICODE + // Get native info + PangoFontDescription *desc = m_nativeFontInfo.description; + + switch ( style ) + { + case wxFONTSTYLE_ITALIC: + pango_font_description_set_style( desc, PANGO_STYLE_ITALIC ); + break; + case wxFONTSTYLE_SLANT: + pango_font_description_set_style( desc, PANGO_STYLE_OBLIQUE ); + break; + default: + wxFAIL_MSG( _T("unknown font style") ); + // fall through + case wxFONTSTYLE_NORMAL: + pango_font_description_set_style( desc, PANGO_STYLE_NORMAL ); + break; + } +#endif +} + +void wxFontRefData::SetWeight(int weight) +{ + m_weight = weight; +} + +void wxFontRefData::SetUnderlined(bool underlined) +{ + m_underlined = underlined; + + // the XLFD doesn't have "underlined" field anyhow +} + +void wxFontRefData::SetFaceName(const wxString& facename) +{ + m_faceName = facename; +} + +void wxFontRefData::SetEncoding(wxFontEncoding encoding) +{ + m_encoding = encoding; +} + +void wxFontRefData::SetNativeFontInfo(const wxNativeFontInfo& info) +{ + // previously cached fonts shouldn't be used + ClearX11Fonts(); + + m_nativeFontInfo = info; + + // set all the other font parameters from the native font info + InitFromNative(); } // ---------------------------------------------------------------------------- // wxFont // ---------------------------------------------------------------------------- +void wxFont::Init() +{ +} + wxFont::wxFont(const wxNativeFontInfo& info) { Init(); - (void)Create(info.GetXFontName()); -} - -void wxFont::Init() -{ +#if wxUSE_UNICODE + Create( info.GetPointSize(), + info.GetFamily(), + info.GetStyle(), + info.GetWeight(), + info.GetUnderlined(), + info.GetFaceName(), + info.GetEncoding() ); +#else + (void) Create(info.GetXFontName()); +#endif } bool wxFont::Create(int pointSize, @@ -205,14 +556,15 @@ bool wxFont::Create(int pointSize, wxFontEncoding encoding) { UnRef(); + m_refData = new wxFontRefData(pointSize, family, style, weight, underlined, faceName, encoding); - RealizeResource(); - return TRUE; } +#if wxUSE_UNICODE +#else bool wxFont::Create(const wxString& fontname, wxFontEncoding enc) { if( !fontname ) @@ -315,6 +667,7 @@ bool wxFont::Create(const wxString& fontname, wxFontEncoding enc) } return TRUE; } +#endif wxFont::~wxFont() { @@ -339,90 +692,14 @@ void wxFont::Unshare() } } -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -void wxFont::SetEncoding(wxFontEncoding encoding) -{ - Unshare(); - - M_FONTDATA->m_encoding = encoding; - M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - - RealizeResource(); -} - -void wxFont::SetNativeFontInfo(const wxNativeFontInfo& info) -{ - Unshare(); - - M_FONTDATA->m_nativeFontInfo = info; -} - // ---------------------------------------------------------------------------- -// query font attributes +// accessors // ---------------------------------------------------------------------------- int wxFont::GetPointSize() const { wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); - + return M_FONTDATA->m_pointSize; } @@ -430,7 +707,7 @@ wxString wxFont::GetFaceName() const { wxCHECK_MSG( Ok(), wxT(""), wxT("invalid font") ); - return M_FONTDATA->m_faceName ; + return M_FONTDATA->m_faceName; } int wxFont::GetFamily() const @@ -468,18 +745,119 @@ wxFontEncoding wxFont::GetEncoding() const return M_FONTDATA->m_encoding; } +bool wxFont::GetNoAntiAliasing() +{ + wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, wxT("invalid font") ); + + return M_FONTDATA->m_noAA; +} + wxNativeFontInfo *wxFont::GetNativeFontInfo() const { wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") ); - if(M_FONTDATA->m_nativeFontInfo.GetXFontName().IsEmpty()) +#if wxUSE_UNICODE +#else + if ( M_FONTDATA->m_nativeFontInfo.GetXFontName().empty() ) GetInternalFont(); +#endif return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo); } +bool wxFont::IsFixedWidth() const +{ + wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") ); + +#if wxUSE_UNICODE +#else + // Robert, is this right? HasNativeFont doesn't exist. + if ( TRUE ) + // if ( M_FONTDATA->HasNativeFont() ) + { + // the monospace fonts are supposed to have "M" in the spacing field + wxString spacing = M_FONTDATA-> + m_nativeFontInfo.GetXFontComponent(wxXLFD_SPACING); + + return spacing.Upper() == _T('M'); + } +#endif + + return wxFontBase::IsFixedWidth(); +} + // ---------------------------------------------------------------------------- -// real implementation +// change font attributes +// ---------------------------------------------------------------------------- + +void wxFont::SetPointSize(int pointSize) +{ + Unshare(); + + M_FONTDATA->SetPointSize(pointSize); +} + +void wxFont::SetFamily(int family) +{ + Unshare(); + + M_FONTDATA->SetFamily(family); +} + +void wxFont::SetStyle(int style) +{ + Unshare(); + + M_FONTDATA->SetStyle(style); +} + +void wxFont::SetWeight(int weight) +{ + Unshare(); + + M_FONTDATA->SetWeight(weight); +} + +void wxFont::SetFaceName(const wxString& faceName) +{ + Unshare(); + + M_FONTDATA->SetFaceName(faceName); +} + +void wxFont::SetUnderlined(bool underlined) +{ + Unshare(); + + M_FONTDATA->SetUnderlined(underlined); +} + +void wxFont::SetEncoding(wxFontEncoding encoding) +{ + Unshare(); + + M_FONTDATA->SetEncoding(encoding); +} + +void wxFont::SetNativeFontInfo( const wxNativeFontInfo& info ) +{ + Unshare(); + + M_FONTDATA->SetNativeFontInfo( info ); +} + +void wxFont::SetNoAntiAliasing( bool no ) +{ + Unshare(); + + M_FONTDATA->SetNoAntiAliasing( no ); +} + +#if wxUSE_UNICODE +#else + +// ---------------------------------------------------------------------------- +// X11 implementation // ---------------------------------------------------------------------------- // Find an existing, or create a new, XFontStruct @@ -536,3 +914,4 @@ WXFontStructPtr wxFont::GetFontStruct(double scale, WXDisplay* display) const return (f ? f->m_fontStruct : (WXFontStructPtr) 0); } +#endif diff --git a/src/x11/glcanvas.cpp b/src/x11/glcanvas.cpp index f45784eeab..cac1674d9f 100644 --- a/src/x11/glcanvas.cpp +++ b/src/x11/glcanvas.cpp @@ -238,8 +238,8 @@ bool wxGLCanvas::Create( wxWindow *parent, // Check for the presence of the GLX extension if(!glXQueryExtension(display, NULL, NULL)) { - wxDebugMsg("wxGLCanvas: GLX extension is missing\n"); - return false; + wxLogDebug("wxGLCanvas: GLX extension is missing\n"); + return FALSE; } if(attribList) { @@ -287,7 +287,7 @@ bool wxGLCanvas::Create( wxWindow *parent, attribList = (int*) data; // Get an appropriate visual vi = glXChooseVisual(display, DefaultScreen(display), attribList); - if(!vi) return false; + if(!vi) return FALSE; // Here we should make sure that vi is the same visual as the // one used by the xwindow drawable in wxCanvas. However, @@ -298,9 +298,9 @@ bool wxGLCanvas::Create( wxWindow *parent, XGetWindowAttributes(display, (Window) GetClientAreaWindow(), &xwa); vi_templ.visualid = XVisualIDFromVisual(xwa.visual); vi = XGetVisualInfo(display, VisualIDMask, &vi_templ, &n); - if(!vi) return false; + if(!vi) return FALSE; glXGetConfig(display, vi, GLX_USE_GL, &val); - if(!val) return false; + if(!val) return FALSE; // Basically, this is it. It should be possible to use vi // in glXCreateContext() below. But this fails with Mesa. // I notified the Mesa author about it; there may be a fix. @@ -327,7 +327,7 @@ bool wxGLCanvas::Create( wxWindow *parent, a_list[n] = None; // XFree(vi); vi = glXChooseVisual(display, DefaultScreen(display), a_list); - if(!vi) return false; + if(!vi) return FALSE; #endif /* OLD_MESA */ } @@ -348,7 +348,7 @@ bool wxGLCanvas::Create( wxWindow *parent, #endif SetCurrent(); - return true; + return TRUE; } wxGLCanvas::~wxGLCanvas(void) diff --git a/src/x11/gsockx11.c b/src/x11/gsockx11.c index 1eabbedac9..6fc3464ec7 100644 --- a/src/x11/gsockx11.c +++ b/src/x11/gsockx11.c @@ -30,7 +30,7 @@ void wxUnregisterSocketCallback(int fd, wxSocketTableType socketType); static void _GSocket_X11_Input(int *fid, void* data) { GSocket *socket = (GSocket *)data; - + _GSocket_Detected_Read(socket); } @@ -76,8 +76,10 @@ void _GSocket_Install_Callback(GSocket *socket, GSocketEvent event) default: return; } - // if (m_id[c] != -1) - // XtRemoveInput(m_id[c]); +#if 0 + if (m_id[c] != -1) + XtRemoveInput(m_id[c]); +#endif /* 0 */ if (c == 0) { diff --git a/src/x11/pango_x.cpp b/src/x11/pango_x.cpp new file mode 100644 index 0000000000..e3e12e3dec --- /dev/null +++ b/src/x11/pango_x.cpp @@ -0,0 +1,290 @@ +/** + * This file gets included from dcclient.cpp and implements + * the X11 interface to Pango. + * Copyright (C) Owen Taylor and Robert Roebling. + */ + +/* Declaration */ + +void +x11_draw_glyphs( Drawable drawable, + GC gc, + PangoFont *font, + int x, + int y, + PangoGlyphString *glyphs, + wxColour &colour ); + +void +x11_draw_layout_line_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayoutLine *line, + wxColour &colour ); + +void +x11_draw_layout_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout, + wxColour &colour ); + +void +x11_draw_layout( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout, + wxColour &colour); + +void +x11_pango_get_item_properties( PangoItem *item, + PangoUnderline *uline, + gboolean *strikethrough, + gint *rise, + PangoColor *fg_color, + gboolean *fg_set, + PangoColor *bg_color, + gboolean *bg_set, + gboolean *shape_set, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + +/* Implementation */ + +void +x11_draw_glyphs( Drawable drawable, + GC gc, + PangoFont *font, + int x, + int y, + PangoGlyphString *glyphs, + wxColour &colour ) +{ + if (PANGO_XFT_IS_FONT (font)) + { + Display* xdisplay = wxGlobalDisplay(); + int xscreen = DefaultScreen( xdisplay ); + Visual* xvisual = DefaultVisual( xdisplay, xscreen ); + + Colormap xcolormap = DefaultColormapOfScreen( XScreenOfDisplay( xdisplay, xscreen ) ); + + XftDraw *draw = XftDrawCreate( xdisplay, drawable, xvisual, xcolormap ); + XftColor color; + color.pixel = 0; + color.color.red = colour.Red() << 8; + color.color.green = colour.Green() << 8; + color.color.blue = colour.Blue() << 8; + color.color.alpha = 65000; + pango_xft_render( draw, &color, font, glyphs, x, y ); + + XftDrawDestroy( draw ); + } + else + { + pango_x_render( wxGlobalDisplay(), drawable, gc, font, glyphs, x, y ); + } +} + +void +x11_draw_layout_line_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayoutLine *line, + wxColour &colour ) +{ + PangoRectangle overall_rect; + PangoRectangle logical_rect; + PangoRectangle ink_rect; + PangoContext *context; + gint x_off = 0; + gint rise = 0; + + context = pango_layout_get_context (line->layout); + + pango_layout_line_get_extents (line,NULL, &overall_rect); + + GSList *tmp_list = line->runs; + while (tmp_list) + { + PangoUnderline uline = PANGO_UNDERLINE_NONE; + PangoLayoutRun *run = (PangoLayoutRun *) tmp_list->data; + PangoColor fg_color, bg_color; + gboolean strike, fg_set, bg_set, shape_set; + gint risen_y; + + tmp_list = tmp_list->next; + + x11_pango_get_item_properties (run->item, &uline, + &strike, &rise, &fg_color, &fg_set, &bg_color, &bg_set, + &shape_set, &ink_rect, &logical_rect); + + /* we subtract the rise because X coordinates are upside down */ + risen_y = y - rise / PANGO_SCALE; + + if (!shape_set) + { + if (uline == PANGO_UNDERLINE_NONE) + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, NULL, &logical_rect); + else + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, &ink_rect, &logical_rect); + } + +#if 0 + XDrawRectangle( drawable, gc, TRUE, + x + (x_off + logical_rect.x) / PANGO_SCALE, + risen_y + overall_rect.y / PANGO_SCALE, + logical_rect.width / PANGO_SCALE, + overall_rect.height / PANGO_SCALE); +#endif + + if (!shape_set) + { + int gx = x + x_off / PANGO_SCALE; + int gy = risen_y; + + x11_draw_glyphs( drawable, gc, run->item->analysis.font, gx, gy, run->glyphs, colour ); + } + + if (uline == PANGO_UNDERLINE_SINGLE) + { + XDrawLine( wxGlobalDisplay(), drawable, gc, + x + (x_off + ink_rect.x) / PANGO_SCALE - 1, + risen_y + 1, + x + (x_off + ink_rect.x + ink_rect.width) / PANGO_SCALE, + risen_y + 1); + } + + x_off += logical_rect.width; + } +} + +void +x11_draw_layout_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout, + wxColour &colour ) +{ + PangoLayoutIter *iter = pango_layout_get_iter (layout); + + do + { + PangoLayoutLine *line = pango_layout_iter_get_line (iter); + + PangoRectangle logical_rect; + pango_layout_iter_get_line_extents (iter, NULL, &logical_rect); + + int baseline = pango_layout_iter_get_baseline (iter); + + x11_draw_layout_line_with_colors( drawable, gc, + x + logical_rect.x / PANGO_SCALE, + y + baseline / PANGO_SCALE, + line, + colour ); + + } while (pango_layout_iter_next_line (iter)); + + pango_layout_iter_free (iter); +} + +void +x11_draw_layout( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout, + wxColour &colour) +{ + wxCHECK_RET( layout, wxT("No layout") ); + + x11_draw_layout_with_colors (drawable, gc, x, y, layout, colour ); +} + +void +x11_pango_get_item_properties( PangoItem *item, + PangoUnderline *uline, + gboolean *strikethrough, + gint *rise, + PangoColor *fg_color, + gboolean *fg_set, + PangoColor *bg_color, + gboolean *bg_set, + gboolean *shape_set, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect) +{ + GSList *tmp_list = item->analysis.extra_attrs; + + if (strikethrough) + *strikethrough = FALSE; + + if (fg_set) + *fg_set = FALSE; + + if (bg_set) + *bg_set = FALSE; + + if (shape_set) + *shape_set = FALSE; + + if (rise) + *rise = 0; + + while (tmp_list) + { + PangoAttribute *attr = (PangoAttribute *) tmp_list->data; + + switch (attr->klass->type) + { + case PANGO_ATTR_UNDERLINE: + if (uline) + *uline = (PangoUnderline) ((PangoAttrInt *)attr)->value; + break; + + case PANGO_ATTR_STRIKETHROUGH: + if (strikethrough) + *strikethrough = ((PangoAttrInt *)attr)->value; + break; + + case PANGO_ATTR_FOREGROUND: + if (fg_color) + *fg_color = ((PangoAttrColor *)attr)->color; + if (fg_set) + *fg_set = TRUE; + + break; + + case PANGO_ATTR_BACKGROUND: + if (bg_color) + *bg_color = ((PangoAttrColor *)attr)->color; + if (bg_set) + *bg_set = TRUE; + + break; + + case PANGO_ATTR_SHAPE: + if (shape_set) + *shape_set = TRUE; + if (logical_rect) + *logical_rect = ((PangoAttrShape *)attr)->logical_rect; + if (ink_rect) + *ink_rect = ((PangoAttrShape *)attr)->ink_rect; + break; + + case PANGO_ATTR_RISE: + if (rise) + *rise = ((PangoAttrInt *)attr)->value; + break; + + default: + break; + } + tmp_list = tmp_list->next; + } +} + diff --git a/src/x11/pangox11.cpp b/src/x11/pangox11.cpp new file mode 100644 index 0000000000..17108cf60b --- /dev/null +++ b/src/x11/pangox11.cpp @@ -0,0 +1,276 @@ +/** + * This file gets included from dcclient.cpp and implements + * the X11 interface to Pango. + * Copyright (C) Owen Taylor and Robert Roebling. + */ + +/* Declaration */ + +void +x11_draw_glyphs( Drawable drawable, + GC gc, + PangoFont *font, + int x, + int y, + PangoGlyphString *glyphs); + +void +x11_draw_layout_line_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayoutLine *line, + XColor *foreground, + XColor *background); + +void +x11_draw_layout_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout, + XColor *foreground, + XColor *background); + +void +x11_draw_layout( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout); + +void +x11_pango_get_item_properties( PangoItem *item, + PangoUnderline *uline, + gboolean *strikethrough, + gint *rise, + PangoColor *fg_color, + gboolean *fg_set, + PangoColor *bg_color, + gboolean *bg_set, + gboolean *shape_set, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + +/* Implementation */ + +void +x11_draw_glyphs( Drawable drawable, + GC gc, + PangoFont *font, + int x, + int y, + PangoGlyphString *glyphs) +{ + if (PANGO_XFT_IS_FONT (font)) + { + pango_xft_picture_render( wxGlobalDisplay(), drawable, drawable, font, glyphs, x, y ); + } + else + { + pango_x_render( wxGlobalDisplay(), drawable, gc, font, glyphs, x, y ); + } +} + +void +x11_draw_layout_line_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayoutLine *line, + XColor *foreground, + XColor *background) +{ + PangoRectangle overall_rect; + PangoRectangle logical_rect; + PangoRectangle ink_rect; + PangoContext *context; + gint x_off = 0; + gint rise = 0; + + context = pango_layout_get_context (line->layout); + + pango_layout_line_get_extents (line,NULL, &overall_rect); + + GSList *tmp_list = line->runs; + while (tmp_list) + { + PangoUnderline uline = PANGO_UNDERLINE_NONE; + PangoLayoutRun *run = (PangoLayoutRun *) tmp_list->data; + PangoColor fg_color, bg_color; + gboolean strike, fg_set, bg_set, shape_set; + gint risen_y; + + tmp_list = tmp_list->next; + + x11_pango_get_item_properties (run->item, &uline, + &strike, &rise, &fg_color, &fg_set, &bg_color, &bg_set, + &shape_set, &ink_rect, &logical_rect); + + /* we subtract the rise because X coordinates are upside down */ + risen_y = y - rise / PANGO_SCALE; + + if (!shape_set) + { + if (uline == PANGO_UNDERLINE_NONE) + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, NULL, &logical_rect); + else + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, &ink_rect, &logical_rect); + } + +#if 0 + XDrawRectangle( drawable, gc, TRUE, + x + (x_off + logical_rect.x) / PANGO_SCALE, + risen_y + overall_rect.y / PANGO_SCALE, + logical_rect.width / PANGO_SCALE, + overall_rect.height / PANGO_SCALE); +#endif + + if (!shape_set) + { + int gx = x + x_off / PANGO_SCALE; + int gy = risen_y; + + x11_draw_glyphs( drawable, gc, run->item->analysis.font, gx, gy, run->glyphs); + } + + if (uline == PANGO_UNDERLINE_SINGLE) + { + XDrawLine( wxGlobalDisplay(), drawable, gc, + x + (x_off + ink_rect.x) / PANGO_SCALE - 1, + risen_y + 1, + x + (x_off + ink_rect.x + ink_rect.width) / PANGO_SCALE, + risen_y + 1); + } + + x_off += logical_rect.width; + } +} + +void +x11_draw_layout_with_colors( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout, + XColor *foreground, + XColor *background) +{ + PangoLayoutIter *iter = pango_layout_get_iter (layout); + + do + { + PangoLayoutLine *line = pango_layout_iter_get_line (iter); + + PangoRectangle logical_rect; + pango_layout_iter_get_line_extents (iter, NULL, &logical_rect); + + int baseline = pango_layout_iter_get_baseline (iter); + + x11_draw_layout_line_with_colors( drawable, gc, + x + logical_rect.x / PANGO_SCALE, + y + baseline / PANGO_SCALE, + line, + foreground, + background); + + } while (pango_layout_iter_next_line (iter)); + + pango_layout_iter_free (iter); +} + +void +x11_draw_layout( Drawable drawable, + GC gc, + int x, + int y, + PangoLayout *layout) +{ + wxCHECK_RET( layout, wxT("No layout") ); + + x11_draw_layout_with_colors (drawable, gc, x, y, layout, NULL, NULL); +} + +void +x11_pango_get_item_properties( PangoItem *item, + PangoUnderline *uline, + gboolean *strikethrough, + gint *rise, + PangoColor *fg_color, + gboolean *fg_set, + PangoColor *bg_color, + gboolean *bg_set, + gboolean *shape_set, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect) +{ + GSList *tmp_list = item->analysis.extra_attrs; + + if (strikethrough) + *strikethrough = FALSE; + + if (fg_set) + *fg_set = FALSE; + + if (bg_set) + *bg_set = FALSE; + + if (shape_set) + *shape_set = FALSE; + + if (rise) + *rise = 0; + + while (tmp_list) + { + PangoAttribute *attr = (PangoAttribute *) tmp_list->data; + + switch (attr->klass->type) + { + case PANGO_ATTR_UNDERLINE: + if (uline) + *uline = (PangoUnderline) ((PangoAttrInt *)attr)->value; + break; + + case PANGO_ATTR_STRIKETHROUGH: + if (strikethrough) + *strikethrough = ((PangoAttrInt *)attr)->value; + break; + + case PANGO_ATTR_FOREGROUND: + if (fg_color) + *fg_color = ((PangoAttrColor *)attr)->color; + if (fg_set) + *fg_set = TRUE; + + break; + + case PANGO_ATTR_BACKGROUND: + if (bg_color) + *bg_color = ((PangoAttrColor *)attr)->color; + if (bg_set) + *bg_set = TRUE; + + break; + + case PANGO_ATTR_SHAPE: + if (shape_set) + *shape_set = TRUE; + if (logical_rect) + *logical_rect = ((PangoAttrShape *)attr)->logical_rect; + if (ink_rect) + *ink_rect = ((PangoAttrShape *)attr)->ink_rect; + break; + + case PANGO_ATTR_RISE: + if (rise) + *rise = ((PangoAttrInt *)attr)->value; + break; + + default: + break; + } + tmp_list = tmp_list->next; + } +} + diff --git a/src/x11/popupwin.cpp b/src/x11/popupwin.cpp index 2fbf352a72..89991df729 100644 --- a/src/x11/popupwin.cpp +++ b/src/x11/popupwin.cpp @@ -17,6 +17,7 @@ #include "wx/popupwin.h" #include "wx/app.h" +#include "wx/settings.h" #include "wx/x11/private.h" #include "X11/Xatom.h" @@ -33,7 +34,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxPopupWindow, wxWindow) bool wxPopupWindow::Create( wxWindow *parent, int style ) { - if (!CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, "popup" )) + if (!CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, wxT("popup") )) { wxFAIL_MSG( wxT("wxPopupWindow creation failed") ); return FALSE; diff --git a/src/x11/reparent.cpp b/src/x11/reparent.cpp index bbeedaea5d..50eb66f560 100644 --- a/src/x11/reparent.cpp +++ b/src/x11/reparent.cpp @@ -21,10 +21,11 @@ #pragma implementation "reparent.h" #endif -#include "wx/x11/reparent.h" +#include "wx/setup.h" #if !wxUSE_NANOX +#include "wx/x11/reparent.h" #include "wx/evtloop.h" #include "wx/log.h" #include "wx/app.h" @@ -295,13 +296,13 @@ WXWindow wxReparenter::FindAClientWindow(WXWindow window, const wxString& name) XFetchName((Display*) wxGetDisplay(), (Window) window, &clientName); wxString str1(name); - wxString str2(clientName); + wxString str2 = wxString::FromAscii(clientName); str1.Lower(); str2.Lower(); bool matches; if (sm_exactMatch) - matches = (name == clientName); + matches = (name == wxString::FromAscii(clientName)); else matches = (str1.Contains(str2) || str2.Contains(str1)); @@ -315,7 +316,8 @@ WXWindow wxReparenter::FindAClientWindow(WXWindow window, const wxString& name) old = XSetErrorHandler(ErrorHandler); if (!XQueryTree((Display*) wxGetDisplay(), (Window) window, &returnroot, &returnparent, - &children, &numchildren) || Xerror) { + &children, &numchildren) || Xerror) + { XSetErrorHandler(old); return NULL; } diff --git a/src/x11/settings.cpp b/src/x11/settings.cpp index f7d484b3d6..ef5de6e208 100644 --- a/src/x11/settings.cpp +++ b/src/x11/settings.cpp @@ -19,6 +19,7 @@ #include "wx/settings.h" #include "wx/gdicmn.h" +#include "wx/x11/private.h" wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) { @@ -123,11 +124,11 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index) // TODO return 0; case wxSYS_SCREEN_X: - // TODO - return 0; + return DisplayWidth( wxGlobalDisplay(), 0 ); + case wxSYS_SCREEN_Y: - // TODO - return 0; + return DisplayHeight( wxGlobalDisplay(), 0 ); + case wxSYS_FRAMESIZE_X: // TODO return 0; diff --git a/src/x11/textctrl.cpp b/src/x11/textctrl.cpp index c65341d997..c3b1b6411f 100644 --- a/src/x11/textctrl.cpp +++ b/src/x11/textctrl.cpp @@ -52,7 +52,7 @@ wxSourceUndoStep::wxSourceUndoStep( wxSourceUndo type, int y1, int y2, wxTextCtr for (int i = m_y1; i < m_y2+2; i++) { if (i >= (int)m_owner->m_lines.GetCount()) - m_lines.Add( "" ); + m_lines.Add( wxT("") ); else m_lines.Add( m_owner->m_lines[i].m_text ); } @@ -469,184 +469,6 @@ void wxTextCtrl::SetLanguage( wxSourceLanguage lang ) m_lang = lang; m_keywords.Clear(); - - if (m_lang == wxSOURCE_LANG_PYTHON) - { - m_keywords.Add( "class" ); - m_keywords.Add( "__init__" ); - m_keywords.Add( "return" ); - m_keywords.Add( "def" ); - m_keywords.Add( "try" ); - m_keywords.Add( "except" ); - m_keywords.Add( "if" ); - m_keywords.Add( "else" ); - m_keywords.Add( "finally" ); - m_keywords.Add( "for" ); - m_keywords.Add( "if" ); - m_keywords.Add( "elif" ); - m_keywords.Add( "in" ); - m_keywords.Add( "and" ); - m_keywords.Add( "del" ); - m_keywords.Add( "is" ); - m_keywords.Add( "raise" ); - m_keywords.Add( "assert" ); - m_keywords.Add( "lambda" ); - m_keywords.Add( "break" ); - m_keywords.Add( "global" ); - m_keywords.Add( "not" ); - m_keywords.Add( "or" ); - m_keywords.Add( "while" ); - m_keywords.Add( "continue" ); - m_keywords.Add( "exec" ); - m_keywords.Add( "pass" ); - m_keywords.Add( "print" ); - } else - if (m_lang == wxSOURCE_LANG_PERL) - { - m_keywords.Add( "main" ); - m_keywords.Add( "sub" ); - m_keywords.Add( "shift" ); - m_keywords.Add( "push" ); - m_keywords.Add( "split" ); - m_keywords.Add( "join" ); - m_keywords.Add( "chop" ); - m_keywords.Add( "grep" ); - m_keywords.Add( "open" ); - m_keywords.Add( "print" ); - m_keywords.Add( "sprint" ); - m_keywords.Add( "printf" ); - m_keywords.Add( "sprintf" ); - m_keywords.Add( "my" ); - m_keywords.Add( "local" ); - m_keywords.Add( "exit" ); - m_keywords.Add( "die" ); - m_keywords.Add( "return" ); - m_keywords.Add( "for" ); - m_keywords.Add( "foreach" ); - m_keywords.Add( "while" ); - m_keywords.Add( "unless" ); - m_keywords.Add( "if" ); - m_keywords.Add( "next" ); - m_keywords.Add( "last" ); - m_keywords.Add( "else" ); - m_keywords.Add( "elsif" ); - m_keywords.Add( "ne" ); - m_keywords.Add( "qe" ); - } - else - if (m_lang == wxSOURCE_LANG_CPP) - { - m_keywords.Add( "class" ); - m_keywords.Add( "return" ); - m_keywords.Add( "if" ); - m_keywords.Add( "then" ); - m_keywords.Add( "else" ); - m_keywords.Add( "struct" ); - m_keywords.Add( "enum" ); - m_keywords.Add( "while" ); - m_keywords.Add( "do" ); - m_keywords.Add( "for" ); - m_keywords.Add( "continue" ); - m_keywords.Add( "break" ); - m_keywords.Add( "switch" ); - m_keywords.Add( "case" ); - m_keywords.Add( "goto" ); - m_keywords.Add( "label" ); - m_keywords.Add( "inline" ); - m_keywords.Add( "operator" ); - m_keywords.Add( "virtual" ); - m_keywords.Add( "private" ); - m_keywords.Add( "public" ); - m_keywords.Add( "protected" ); - m_keywords.Add( "friend" ); - m_keywords.Add( "exception" ); - m_keywords.Add( "throw" ); - m_keywords.Add( "catch" ); - m_keywords.Add( "delete" ); - m_keywords.Add( "new" ); - m_keywords.Add( "default" ); - m_keywords.Add( "overload" ); - m_keywords.Add( "using" ); - m_keywords.Add( "template" ); - m_keywords.Add( "try" ); - m_keywords.Add( "typedef" ); - m_keywords.Add( "union" ); - m_keywords.Add( "volatile" ); - m_keywords.Add( "asm" ); - } - - m_defines.Clear(); - - if (m_lang == wxSOURCE_LANG_PYTHON) - { - m_defines.Add( "from" ); - m_defines.Add( "import" ); - } else - if (m_lang == wxSOURCE_LANG_PERL) - { - m_defines.Add( "use" ); - m_defines.Add( "do" ); - m_defines.Add( "package" ); - m_defines.Add( "defined" ); - } else - if (m_lang == wxSOURCE_LANG_CPP) - { - m_defines.Add( "#define" ); - m_defines.Add( "#if" ); - m_defines.Add( "#ifndef" ); - m_defines.Add( "#ifdef" ); - m_defines.Add( "#else" ); - m_defines.Add( "#elif" ); - m_defines.Add( "#endif" ); - m_defines.Add( "#pragma" ); - m_defines.Add( "#include" ); - } - - m_variables.Clear(); - - if (m_lang == wxSOURCE_LANG_PYTHON) - { - m_variables.Add( "nil" ); - m_variables.Add( "None" ); - m_variables.Add( "self" ); - m_variables.Add( "false" ); - m_variables.Add( "true" ); - } else - if (m_lang == wxSOURCE_LANG_PERL) - { - m_variables.Add( "undef" ); - m_variables.Add( "class" ); - m_variables.Add( "this" ); - m_variables.Add( "IN" ); - m_variables.Add( "OUT" ); - m_variables.Add( "STDIN" ); - m_variables.Add( "STDOUT" ); - m_variables.Add( "STDERR" ); - } else - if (m_lang == wxSOURCE_LANG_CPP) - { - m_variables.Add( "int" ); - m_variables.Add( "bool" ); - m_variables.Add( "void" ); - m_variables.Add( "long" ); - m_variables.Add( "short" ); - m_variables.Add( "const" ); - m_variables.Add( "signed" ); - m_variables.Add( "unsigned" ); - m_variables.Add( "char" ); - m_variables.Add( "size_t" ); - m_variables.Add( "wchar_t" ); - m_variables.Add( "NULL" ); - m_variables.Add( "this" ); - m_variables.Add( "TRUE" ); - m_variables.Add( "FALSE" ); - m_variables.Add( "float" ); - m_variables.Add( "double" ); - m_variables.Add( "register" ); - m_variables.Add( "extern" ); - m_variables.Add( "static" ); - m_variables.Add( "sizeof" ); - } } void wxTextCtrl::WriteText(const wxString& text2) @@ -862,12 +684,12 @@ void wxTextCtrl::Copy() { tmp.Remove( 0, selStartX ); sel = tmp; - sel.Append( "\n" ); + sel.Append( wxT("\n") ); } for (int i = selStartY+1; i < selEndY; i++) { sel.Append( m_lines[i].m_text ); - sel.Append( "\n" ); + sel.Append( wxT("\n") ); } tmp = m_lines[selEndY].m_text; if (selEndX > (int)tmp.Len()) @@ -2169,7 +1991,7 @@ void wxTextCtrl::Indent() for (int i = startY; i <= endY; i++) { - m_lines[i].m_text.insert( 0u, " " ); + m_lines[i].m_text.insert( 0u, wxT(" ") ); RefreshLine( i ); } } @@ -2196,7 +2018,7 @@ void wxTextCtrl::Unindent() { for (int n = 0; n < 4; n++) { - if (m_lines[i].m_text[0u] == ' ') + if (m_lines[i].m_text[0u] == wxT(' ')) m_lines[i].m_text.erase(0u,1u); } RefreshLine( i ); diff --git a/src/x11/toplevel.cpp b/src/x11/toplevel.cpp index c9babe3825..21fdac3bac 100644 --- a/src/x11/toplevel.cpp +++ b/src/x11/toplevel.cpp @@ -410,10 +410,18 @@ void wxTopLevelWindowX11::SetTitle(const wxString& title) if (GetMainWindow()) { +#if wxUSE_UNICODE + // I wonder of e.g. Metacity takes UTF-8 here + XStoreName(wxGlobalDisplay(), (Window) GetMainWindow(), + (const char*) title.ToAscii() ); + XSetIconName(wxGlobalDisplay(), (Window) GetMainWindow(), + (const char*) title.ToAscii() ); +#else XStoreName(wxGlobalDisplay(), (Window) GetMainWindow(), (const char*) title); XSetIconName(wxGlobalDisplay(), (Window) GetMainWindow(), (const char*) title); +#endif } } @@ -660,8 +668,8 @@ bool wxSetWMDecorations(Window w, long style) #if wxUSE_NANOX GR_WM_PROPERTIES wmProp; - wmProp.flags = 0; - wmProp.props = 0; + wmProp.props = GR_WM_PROPS_CLOSEBOX ; + wmProp.flags = GR_WM_FLAGS_PROPS ; if (style & wxRESIZE_BORDER) { @@ -669,12 +677,6 @@ bool wxSetWMDecorations(Window w, long style) wmProp.flags |= GR_WM_FLAGS_PROPS ; } - if (style & wxSYSTEM_MENU) - { - wmProp.props |= GR_WM_PROPS_CLOSEBOX ; - wmProp.flags |= GR_WM_FLAGS_PROPS ; - } - if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT)) @@ -737,14 +739,13 @@ bool wxSetWMDecorations(Window w, long style) else { hints.decorations = MWM_DECOR_BORDER; - hints.functions = MWM_FUNC_MOVE; + hints.functions = MWM_FUNC_MOVE | MWM_FUNC_CLOSE; if ((style & wxCAPTION) != 0) hints.decorations |= MWM_DECOR_TITLE; if ((style & wxSYSTEM_MENU) != 0) { - hints.functions |= MWM_FUNC_CLOSE; hints.decorations |= MWM_DECOR_MENU; } diff --git a/src/x11/utils.cpp b/src/x11/utils.cpp index fc15ff0ce1..d0360712e4 100644 --- a/src/x11/utils.cpp +++ b/src/x11/utils.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +// #include #include #if (defined(__SUNCC__) || defined(__CLCC__)) @@ -47,18 +47,7 @@ #include "wx/unix/execute.h" -#ifdef __WXMOTIF__ -#include -#include "wx/motif/private.h" -#endif - -#ifdef __WXX11__ #include "wx/x11/private.h" -#endif - -#if wxUSE_RESOURCES -#include "X11/Xresource.h" -#endif #include "X11/Xutil.h" @@ -66,24 +55,6 @@ #pragma message enable nosimpint #endif -// ---------------------------------------------------------------------------- -// private functions -// ---------------------------------------------------------------------------- - -// Yuck this is really BOTH site and platform dependent -// so we should use some other strategy! -#ifdef sun - #define DEFAULT_XRESOURCE_DIR "/usr/openwin/lib/app-defaults" -#else - #define DEFAULT_XRESOURCE_DIR "/usr/lib/X11/app-defaults" -#endif - -static char *GetIniFile (char *dest, const char *filename); - -// ============================================================================ -// implementation -// ============================================================================ - // ---------------------------------------------------------------------------- // async event processing // ---------------------------------------------------------------------------- @@ -112,8 +83,6 @@ void wxFlushEvents() #endif } -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. bool wxCheckForInterrupt(wxWindow *wnd) { #ifdef __WXMOTIF__ @@ -152,20 +121,6 @@ bool wxCheckForInterrupt(wxWindow *wnd) // ---------------------------------------------------------------------------- // wxExecute stuff // ---------------------------------------------------------------------------- -#ifdef __WXMOTIF__ -static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid), - XtInputId *id) -{ - wxEndProcessData *proc_data = (wxEndProcessData *)data; - - wxHandleProcessTermination(proc_data); - - // VZ: I think they should be the same... - wxASSERT( (int)*id == proc_data->tag ); - - XtRemoveInput(*id); -} -#endif int wxAddProcessCallback(wxEndProcessData *proc_data, int fd) { @@ -197,371 +152,17 @@ void wxBell() int wxGetOsVersion(int *majorVsn, int *minorVsn) { -#ifdef __WXMOTIF__ - // FIXME TODO - // This code is WRONG!! Does NOT return the - // Motif version of the libs but the X protocol - // version! - Display *display = XtDisplay ((Widget) wxTheApp->GetTopLevelWidget()); - if (majorVsn) - *majorVsn = ProtocolVersion (display); - if (minorVsn) - *minorVsn = ProtocolRevision (display); - - return wxMOTIF_X; -#endif #ifdef __WXX11__ if (majorVsn) *majorVsn = 0; + if (minorVsn) *minorVsn = 0; + return wxX11; #endif } -// ---------------------------------------------------------------------------- -// Reading and writing resources (eg WIN.INI, .Xdefaults) -// ---------------------------------------------------------------------------- - -// Read $HOME for what it says is home, if not -// read $USER or $LOGNAME for user name else determine -// the Real User, then determine the Real home dir. -static char * GetIniFile (char *dest, const char *filename) -{ - char *home = NULL; - if (filename && wxIsAbsolutePath(filename)) - { - strcpy(dest, filename); - } - else if ((home = wxGetUserHome("")) != NULL) - { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') - strcat (dest, "/"); - if (filename == NULL) - { - if ((filename = getenv ("XENVIRONMENT")) == NULL) - filename = ".Xdefaults"; - } - else if (*filename != '.') - strcat (dest, "."); - strcat (dest, filename); - } else - { - dest[0] = '\0'; - } - return dest; -} - -#if wxUSE_RESOURCES - -static char *GetResourcePath(char *buf, const char *name, bool create = FALSE) -{ - if (create && wxFileExists (name) ) { - strcpy(buf, name); - return buf; // Exists so ... - } - - if (*name == '/') - strcpy(buf, name); - else { - // Put in standard place for resource files if not absolute - strcpy (buf, DEFAULT_XRESOURCE_DIR); - strcat (buf, "/"); - strcat (buf, (const char*) wxFileNameFromPath (name)); - } - - if (create) { - // Touch the file to create it - FILE *fd = fopen (buf, "w"); - if (fd) fclose (fd); - } - return buf; -} - -/* -* We have a cache for writing different resource files, -* which will only get flushed when we call wxFlushResources(). -* Build up a list of resource databases waiting to be written. -* -*/ - -wxList wxResourceCache (wxKEY_STRING); - -void -wxFlushResources (void) -{ - char nameBuffer[512]; - - wxNode *node = wxResourceCache.First (); - while (node) - { - const char *file = node->GetKeyString(); - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase) node->Data (); - XrmPutFileDatabase (database, nameBuffer); - XrmDestroyDatabase (database); - wxNode *next = node->Next (); - delete node; - node = next; - } -} - -static XrmDatabase wxResourceDatabase = 0; - -void wxXMergeDatabases (wxApp * theApp, Display * display); - -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) -{ - char buffer[500]; - - (void) GetIniFile (buffer, file); - - XrmDatabase database; - wxNode *node = wxResourceCache.Find (buffer); - if (node) - database = (XrmDatabase) node->Data (); - else - { - database = XrmGetFileDatabase (buffer); - wxResourceCache.Append (buffer, (wxObject *) database); - } - - char resName[300]; - strcpy (resName, (const char*) section); - strcat (resName, "."); - strcat (resName, (const char*) entry); - - XrmPutStringResource (&database, resName, value); - return TRUE; -} - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) -{ - if (!wxResourceDatabase) - { - Display *display = (Display*) wxGetDisplay(); - wxXMergeDatabases (wxTheApp, display); - } - - XrmDatabase database; - - if (file != "") - { - char buffer[500]; - - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void) GetIniFile (buffer, file); - - wxNode *node = wxResourceCache.Find (buffer); - if (node) - database = (XrmDatabase) node->Data (); - else - { - database = XrmGetFileDatabase (buffer); - wxResourceCache.Append (buffer, (wxObject *) database); - } - } - else - database = wxResourceDatabase; - - XrmValue xvalue; - char *str_type[20]; - char buf[150]; - strcpy (buf, section); - strcat (buf, "."); - strcat (buf, entry); - - Bool success = XrmGetResource (database, buf, "*", str_type, - &xvalue); - // Try different combinations of upper/lower case, just in case... - if (!success) - { - buf[0] = (isupper (buf[0]) ? tolower (buf[0]) : toupper (buf[0])); - success = XrmGetResource (database, buf, "*", str_type, - &xvalue); - } - if (success) - { - if (*value) - delete[] *value; - - *value = new char[xvalue.size + 1]; - strncpy (*value, xvalue.addr, (int) xvalue.size); - return TRUE; - } - return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (float)strtod(s, NULL); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int) strtol (s, NULL, 10); - delete[] s; - return TRUE; - } - else - return FALSE; -} - -void wxXMergeDatabases (wxApp * theApp, Display * display) -{ - XrmDatabase homeDB, serverDB, applicationDB; - char filenamebuf[1024]; - - char *filename = &filenamebuf[0]; - char *environment; - wxString classname = theApp->GetClassName(); - char name[256]; - (void) strcpy (name, "/usr/lib/X11/app-defaults/"); - (void) strcat (name, (const char*) classname); - - /* Get application defaults file, if any */ - applicationDB = XrmGetFileDatabase (name); - (void) XrmMergeDatabases (applicationDB, &wxResourceDatabase); - - /* Merge server defaults, created by xrdb, loaded as a property of the root - * window when the server initializes and loaded into the display - * structure on XOpenDisplay; - * if not defined, use .Xdefaults - */ - - if (XResourceManagerString (display) != NULL) - { - serverDB = XrmGetStringDatabase (XResourceManagerString (display)); - } - else - { - (void) GetIniFile (filename, NULL); - serverDB = XrmGetFileDatabase (filename); - } - XrmMergeDatabases (serverDB, &wxResourceDatabase); - - /* Open XENVIRONMENT file, or if not defined, the .Xdefaults, - * and merge into existing database - */ - - if ((environment = getenv ("XENVIRONMENT")) == NULL) - { - size_t len; - environment = GetIniFile (filename, NULL); - len = strlen (environment); - wxString hostname = wxGetHostName(); - if ( !!hostname ) - strncat(environment, hostname, 1024 - len); - } - homeDB = XrmGetFileDatabase (environment); - XrmMergeDatabases (homeDB, &wxResourceDatabase); -} - -#if 0 - -/* -* Not yet used but may be useful. -* -*/ -void -wxSetDefaultResources (const Widget w, const char **resourceSpec, const char *name) -{ - int i; - Display *dpy = XtDisplay (w); // Retrieve the display pointer - - XrmDatabase rdb = NULL; // A resource data base - - // Create an empty resource database - rdb = XrmGetStringDatabase (""); - - // Add the Component resources, prepending the name of the component - - i = 0; - while (resourceSpec[i] != NULL) - { - char buf[1000]; - - sprintf (buf, "*%s%s", name, resourceSpec[i++]); - XrmPutLineResource (&rdb, buf); - } - - // Merge them into the Xt database, with lowest precendence - - if (rdb) - { -#if (XlibSpecificationRelease>=5) - XrmDatabase db = XtDatabase (dpy); - XrmCombineDatabase (rdb, &db, FALSE); -#else - XrmMergeDatabases (dpy->db, &rdb); - dpy->db = rdb; -#endif - } -} -#endif -// 0 - -#endif // wxUSE_RESOURCES - // ---------------------------------------------------------------------------- // display info // ---------------------------------------------------------------------------- @@ -665,30 +266,6 @@ bool wxSetDisplay(const wxString& display_name) } else { -#ifdef __WXMOTIF__ - Cardinal argc = 0; - - Display *display = XtOpenDisplay((XtAppContext) wxTheApp->GetAppContext(), - (const char*) display_name, - (const char*) wxTheApp->GetAppName(), - (const char*) wxTheApp->GetClassName(), - NULL, -#if XtSpecificationRelease < 5 - 0, &argc, -#else - 0, (int *)&argc, -#endif - NULL); - - if (display) - { - gs_currentDisplay = (WXDisplay*) display; - return TRUE; - } - else - return FALSE; -#endif -#ifdef __WXX11__ Display* display = XOpenDisplay((char*) display_name.c_str()); if (display) @@ -698,7 +275,6 @@ bool wxSetDisplay(const wxString& display_name) } else return FALSE; -#endif } } @@ -1098,153 +674,6 @@ wxString wxGetXEventName(XEvent& event) } #endif -#ifdef __WXMOTIF__ -// ---------------------------------------------------------------------------- -// accelerators -// ---------------------------------------------------------------------------- - -// Find the letter corresponding to the mnemonic, for Motif -char wxFindMnemonic (const char *s) -{ - char mnem = 0; - int len = strlen (s); - int i; - for (i = 0; i < len; i++) - { - if (s[i] == '&') - { - // Carefully handle && - if ((i + 1) <= len && s[i + 1] == '&') - i++; - else - { - mnem = s[i + 1]; - break; - } - } - } - return mnem; -} - -char * wxFindAccelerator (const char *s) -{ - // VZ: this function returns incorrect keysym which completely breaks kbd - // handling - return NULL; - -#if 0 - // The accelerator text is after the \t char. - while (*s && *s != '\t') - s++; - if (*s == '\0') - return (NULL); - s++; - /* - Now we need to format it as X standard: - - input output - - F7 --> F7 - Ctrl+N --> CtrlN - Alt+k --> Metak - Ctrl+Shift+A --> Ctrl ShiftA - - */ - - static char buf[256]; - buf[0] = '\0'; - char *tmp = copystring (s); - s = tmp; - char *p = tmp; - - while (1) - { - while (*p && *p != '+') - p++; - if (*p) - { - *p = '\0'; - if (buf[0]) - strcat (buf, " "); - if (strcmp (s, "Alt")) - strcat (buf, s); - else - strcat (buf, "Meta"); - s = p++; - } - else - { - strcat (buf, ""); - strcat (buf, s); - break; - } - } - delete[]tmp; - return buf; -#endif -} - -XmString wxFindAcceleratorText (const char *s) -{ - // VZ: this function returns incorrect keysym which completely breaks kbd - // handling - return NULL; - -#if 0 - // The accelerator text is after the \t char. - while (*s && *s != '\t') - s++; - if (*s == '\0') - return (NULL); - s++; - XmString text = XmStringCreateSimple ((char *)s); - return text; -#endif -} - - -// These functions duplicate those in wxWindow, but are needed -// for use outside of wxWindow (e.g. wxMenu, wxMenuBar). - -// Change a widget's foreground and background colours. - -void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour) -{ - // When should we specify the foreground, if it's calculated - // by wxComputeColours? - // Solution: say we start with the default (computed) foreground colour. - // If we call SetForegroundColour explicitly for a control or window, - // then the foreground is changed. - // Therefore SetBackgroundColour computes the foreground colour, and - // SetForegroundColour changes the foreground colour. The ordering is - // important. - - XtVaSetValues ((Widget) widget, - XmNforeground, foregroundColour.AllocColour(XtDisplay((Widget) widget)), - NULL); -} - -void wxDoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour) -{ - wxComputeColours (XtDisplay((Widget) widget), & backgroundColour, - (wxColour*) NULL); - - XtVaSetValues ((Widget) widget, - XmNbackground, g_itemColors[wxBACK_INDEX].pixel, - XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel, - XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel, - XmNforeground, g_itemColors[wxFORE_INDEX].pixel, - NULL); - - if (changeArmColour) - XtVaSetValues ((Widget) widget, - XmNarmColor, g_itemColors[wxSELE_INDEX].pixel, - NULL); -} - -#endif - // __WXMOTIF__ - bool wxWindowIsVisible(Window win) { XWindowAttributes wa; diff --git a/src/x11/window.cpp b/src/x11/window.cpp index 1df4868f14..d47e7cde11 100644 --- a/src/x11/window.cpp +++ b/src/x11/window.cpp @@ -40,6 +40,7 @@ #include "wx/module.h" #include "wx/menuitem.h" #include "wx/log.h" +#include "wx/fontutil.h" #include "wx/univ/renderer.h" #if wxUSE_DRAG_AND_DROP @@ -105,7 +106,7 @@ void wxWindowX11::Init() m_clientWindow = (WXWindow) 0; m_insertIntoMain = FALSE; m_updateNcArea = FALSE; - + m_winCaptured = FALSE; m_needsInputFocus = FALSE; m_isShown = TRUE; @@ -133,36 +134,36 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, Colormap cm = DefaultColormap( xdisplay, xscreen ); m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); - m_backgroundColour.CalcPixel( (WXColormap) cm ); - + m_backgroundColour.CalcPixel( (WXColormap) cm ); + m_foregroundColour = *wxBLACK; - m_foregroundColour.CalcPixel( (WXColormap) cm ); + m_foregroundColour.CalcPixel( (WXColormap) cm ); Window xparent = (Window) parent->GetClientAreaWindow(); - + // Add window's own scrollbars to main window, not to client window if (parent->GetInsertIntoMain()) { // wxLogDebug( "Inserted into main: %s", GetName().c_str() ); xparent = (Window) parent->GetMainWindow(); } - + // Size (not including the border) must be nonzero (or a Value error results)! // Note: The Xlib manual doesn't mention this restriction of XCreateWindow. wxSize size2(size); if (size2.x <= 0) - size2.x = 20; + size2.x = 20; if (size2.y <= 0) - size2.y = 20; + size2.y = 20; wxPoint pos2(pos); if (pos2.x == -1) - pos2.x = 0; + pos2.x = 0; if (pos2.y == -1) - pos2.y = 0; - + pos2.y = 0; + #if wxUSE_TWO_WINDOWS - bool need_two_windows = + bool need_two_windows = ((( wxSUNKEN_BORDER | wxRAISED_BORDER | wxSIMPLE_BORDER | wxHSCROLL | wxVSCROLL ) & m_windowStyle) != 0); #else bool need_two_windows = FALSE; @@ -173,50 +174,50 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, #else XSetWindowAttributes xattributes; long xattributes_mask = 0; - + xattributes_mask |= CWBackPixel; xattributes.background_pixel = m_backgroundColour.GetPixel(); - + xattributes_mask |= CWBorderPixel; xattributes.border_pixel = BlackPixel( xdisplay, xscreen ); - + xattributes_mask |= CWEventMask; #endif - + if (need_two_windows) { #if wxUSE_NANOX long backColor, foreColor; backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue()); foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue()); - - Window xwindow = XCreateWindowWithColor( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, + + Window xwindow = XCreateWindowWithColor( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, 0, 0, InputOutput, xvisual, backColor, foreColor); XSelectInput( xdisplay, xwindow, GR_EVENT_MASK_CLOSE_REQ | ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask | PropertyChangeMask ); - + #else // Normal X11 - xattributes.event_mask = + xattributes.event_mask = ExposureMask | StructureNotifyMask | ColormapChangeMask; - Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, + Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, 0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes ); #endif - + XSetWindowBackgroundPixmap( xdisplay, xwindow, None ); - + m_mainWindow = (WXWindow) xwindow; wxAddWindowToTable( xwindow, (wxWindow*) this ); - + XMapWindow( xdisplay, xwindow ); -#if !wxUSE_NANOX - xattributes.event_mask = +#if !wxUSE_NANOX + xattributes.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask | @@ -228,21 +229,21 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, xattributes.bit_gravity = StaticGravity; } #endif - + if (HasFlag( wxSUNKEN_BORDER) || HasFlag( wxRAISED_BORDER)) { pos2.x = 2; pos2.y = 2; size2.x -= 4; size2.y -= 4; - } + } else if (HasFlag( wxSIMPLE_BORDER )) { pos2.x = 1; pos2.y = 1; size2.x -= 2; size2.y -= 2; - } + } else { pos2.x = 0; @@ -255,28 +256,28 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, if (size2.y <= 0) size2.y = 1; -#if wxUSE_NANOX +#if wxUSE_NANOX backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue()); foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue()); - - xwindow = XCreateWindowWithColor( xdisplay, xwindow, pos2.x, pos2.y, size2.x, size2.y, + + xwindow = XCreateWindowWithColor( xdisplay, xwindow, pos2.x, pos2.y, size2.x, size2.y, 0, 0, InputOutput, xvisual, backColor, foreColor); XSelectInput( xdisplay, xwindow, GR_EVENT_MASK_CLOSE_REQ | ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask | PropertyChangeMask ); - + #else - xwindow = XCreateWindow( xdisplay, xwindow, pos2.x, pos2.y, size2.x, size2.y, + xwindow = XCreateWindow( xdisplay, xwindow, pos2.x, pos2.y, size2.x, size2.y, 0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes ); #endif - + XSetWindowBackgroundPixmap( xdisplay, xwindow, None ); - + m_clientWindow = (WXWindow) xwindow; wxAddClientWindowToTable( xwindow, (wxWindow*) this ); - + XMapWindow( xdisplay, xwindow ); } else @@ -286,17 +287,17 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, long backColor, foreColor; backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue()); foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue()); - - Window xwindow = XCreateWindowWithColor( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, + + Window xwindow = XCreateWindowWithColor( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, 0, 0, InputOutput, xvisual, backColor, foreColor); XSelectInput( xdisplay, xwindow, GR_EVENT_MASK_CLOSE_REQ | ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask | PropertyChangeMask ); - + #else - xattributes.event_mask = + xattributes.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask | @@ -308,16 +309,16 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, xattributes.bit_gravity = NorthWestGravity; } - Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, + Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y, 0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes ); #endif - + XSetWindowBackgroundPixmap( xdisplay, xwindow, None ); - + m_mainWindow = (WXWindow) xwindow; m_clientWindow = m_mainWindow; wxAddWindowToTable( xwindow, (wxWindow*) this ); - + XMapWindow( xdisplay, xwindow ); } @@ -339,11 +340,16 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, // Destructor wxWindowX11::~wxWindowX11() { + // Send destroy event + wxWindowDestroyEvent destroyEvent((wxWindow*) this); + destroyEvent.SetId(GetId()); + GetEventHandler()->ProcessEvent(destroyEvent); + if (g_captureWindow == this) - g_captureWindow = NULL; - + g_captureWindow = NULL; + m_isBeingDeleted = TRUE; - + if (m_parent) m_parent->RemoveChild( this ); @@ -357,7 +363,7 @@ wxWindowX11::~wxWindowX11() XDestroyWindow( wxGlobalDisplay(), xwindow ); m_clientWindow = NULL; } - + // Destroy the window Window xwindow = (Window) m_mainWindow; wxDeleteWindowFromTable( xwindow ); @@ -372,11 +378,11 @@ wxWindowX11::~wxWindowX11() void wxWindowX11::SetFocus() { Window xwindow = (Window) m_clientWindow; - + wxCHECK_RET( xwindow, wxT("invalid window") ); - + wxCHECK_RET( AcceptsFocus(), wxT("set focus on window that doesn't accept the focus") ); - + #if 0 if (GetName() == "scrollBar") { @@ -384,7 +390,7 @@ void wxWindowX11::SetFocus() *crash = 0; } #endif - + if (wxWindowIsVisible(xwindow)) { wxLogTrace( _T("focus"), _T("wxWindowX11::SetFocus: %s"), GetClassInfo()->GetClassName()); @@ -425,7 +431,7 @@ bool wxWindowX11::Enable(bool enable) { if ( !wxWindowBase::Enable(enable) ) return FALSE; - + return TRUE; } @@ -474,14 +480,14 @@ void wxWindowX11::DoCaptureMouse() (*tmp) = 1; return; } - + if (m_winCaptured) return; Window xwindow = (Window) m_clientWindow; wxCHECK_RET( xwindow, wxT("invalid window") ); - + g_captureWindow = (wxWindow*) this; if (xwindow) @@ -490,7 +496,7 @@ void wxWindowX11::DoCaptureMouse() FALSE, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask, GrabModeAsync, - GrabModeAsync, + GrabModeAsync, None, None, /* cursor */ // TODO: This may need to be set to the cursor of this window CurrentTime ); @@ -498,12 +504,11 @@ void wxWindowX11::DoCaptureMouse() if (res != GrabSuccess) { wxString msg; - msg.Printf("Failed to grab pointer for window %s", this->GetClassInfo()->GetClassName()); + msg.Printf(wxT("Failed to grab pointer for window %s"), this->GetClassInfo()->GetClassName()); wxLogDebug(msg); if (res == GrabNotViewable) - { - wxLogDebug("This is not a viewable window - perhaps not shown yet?"); - } + wxLogDebug( wxT("This is not a viewable window - perhaps not shown yet?") ); + g_captureWindow = NULL; return; } @@ -515,7 +520,7 @@ void wxWindowX11::DoCaptureMouse() void wxWindowX11::DoReleaseMouse() { g_captureWindow = NULL; - + if ( !m_winCaptured ) return; @@ -525,7 +530,7 @@ void wxWindowX11::DoReleaseMouse() { XUngrabPointer( wxGlobalDisplay(), CurrentTime ); } - + // wxLogDebug( "Ungrabbed pointer in %s", GetName().c_str() ); m_winCaptured = FALSE; @@ -553,7 +558,7 @@ bool wxWindowX11::SetCursor(const wxCursor& cursor) Window xwindow = (Window) m_clientWindow; wxCHECK_MSG( xwindow, FALSE, wxT("invalid window") ); - + wxCursor cursorToUse; if (m_cursor.Ok()) cursorToUse = m_cursor; @@ -573,7 +578,7 @@ void wxWindowX11::WarpPointer (int x, int y) Window xwindow = (Window) m_clientWindow; wxCHECK_RET( xwindow, wxT("invalid window") ); - + XWarpPointer( wxGlobalDisplay(), None, xwindow, 0, 0, 0, 0, x, y); } @@ -582,27 +587,27 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) { // No scrolling requested. if ((dx == 0) && (dy == 0)) return; - + if (!m_updateRegion.IsEmpty()) { m_updateRegion.Offset( dx, dy ); - + int cw = 0; int ch = 0; GetSize( &cw, &ch ); // GetClientSize() ?? m_updateRegion.Intersect( 0, 0, cw, ch ); } - + if (!m_clearRegion.IsEmpty()) { m_clearRegion.Offset( dx, dy ); - + int cw = 0; int ch = 0; GetSize( &cw, &ch ); // GetClientSize() ?? m_clearRegion.Intersect( 0, 0, cw, ch ); } - + Window xwindow = (Window) GetClientAreaWindow(); wxCHECK_RET( xwindow, wxT("invalid window") ); @@ -620,7 +625,7 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) { s_x = rect->x; s_y = rect->y; - + cw = rect->width; ch = rect->height; } @@ -630,7 +635,7 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) s_y = 0; GetClientSize( &cw, &ch ); } - + #if wxUSE_TWO_WINDOWS wxPoint offset( 0,0 ); #else @@ -638,10 +643,10 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) s_x += offset.x; s_y += offset.y; #endif - + int w = cw - abs(dx); int h = ch - abs(dy); - + if ((h < 0) || (w < 0)) { Refresh(); @@ -653,17 +658,17 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) if (dy < 0) rect.y = ch+dy + offset.y; else rect.y = s_y; if (dy != 0) rect.width = cw; else rect.width = abs(dx); if (dx != 0) rect.height = ch; else rect.height = abs(dy); - + int d_x = s_x; int d_y = s_y; - + if (dx < 0) s_x += -dx; if (dy < 0) s_y += -dy; if (dx > 0) d_x = dx + offset.x; if (dy > 0) d_y = dy + offset.y; XCopyArea( xdisplay, xwindow, xwindow, xgc, s_x, s_y, w, h, d_x, d_y ); - + // wxLogDebug( "Copy: s_x %d s_y %d w %d h %d d_x %d d_y %d", s_x, s_y, w, h, d_x, d_y ); // wxLogDebug( "Update: %d %d %d %d", rect.x, rect.y, rect.width, rect.height ); @@ -671,7 +676,7 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) m_updateRegion.Union( rect ); m_clearRegion.Union( rect ); } - + XFreeGC( xdisplay, xgc ); } @@ -722,13 +727,13 @@ void wxWindowX11::DoGetSize(int *x, int *y) const Window xwindow = (Window) m_mainWindow; wxCHECK_RET( xwindow, wxT("invalid window") ); - + //XSync(wxGlobalDisplay(), False); XWindowAttributes attr; Status status = XGetWindowAttributes( wxGlobalDisplay(), xwindow, &attr ); wxASSERT(status); - + if (status) { *x = attr.width /* + 2*m_borderSize */ ; @@ -745,12 +750,12 @@ void wxWindowX11::DoGetPosition(int *x, int *y) const XWindowAttributes attr; Status status = XGetWindowAttributes(wxGlobalDisplay(), window, & attr); wxASSERT(status); - + if (status) { *x = attr.x; *y = attr.y; - + // We may be faking the client origin. So a window that's really at (0, 30) // may appear (to wxWin apps) to be at (0, 0). if (GetParent()) @@ -798,7 +803,7 @@ void wxWindowX11::DoGetClientSize(int *x, int *y) const XWindowAttributes attr; Status status = XGetWindowAttributes( wxGlobalDisplay(), window, &attr ); wxASSERT(status); - + if (status) { *x = attr.width ; @@ -810,7 +815,7 @@ void wxWindowX11::DoGetClientSize(int *x, int *y) const void wxWindowX11::DoSetSize(int x, int y, int width, int height, int sizeFlags) { // wxLogDebug("DoSetSize: %s (%ld) %d, %d %dx%d", GetClassInfo()->GetClassName(), GetId(), x, y, width, height); - + Window xwindow = (Window) m_mainWindow; wxCHECK_RET( xwindow, wxT("invalid window") ); @@ -818,12 +823,12 @@ void wxWindowX11::DoSetSize(int x, int y, int width, int height, int sizeFlags) XWindowAttributes attr; Status status = XGetWindowAttributes( wxGlobalDisplay(), xwindow, &attr ); wxCHECK_RET( status, wxT("invalid window attributes") ); - + int new_x = attr.x; int new_y = attr.y; int new_w = attr.width; int new_h = attr.height; - + if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) { int yy = 0; @@ -848,24 +853,24 @@ void wxWindowX11::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (new_h <= 0) new_h = 20; } - + DoMoveWindow( new_x, new_y, new_w, new_h ); } void wxWindowX11::DoSetClientSize(int width, int height) { // wxLogDebug("DoSetClientSize: %s (%ld) %dx%d", GetClassInfo()->GetClassName(), GetId(), width, height); - + Window xwindow = (Window) m_mainWindow; wxCHECK_RET( xwindow, wxT("invalid window") ); XResizeWindow( wxGlobalDisplay(), xwindow, width, height ); - + if (m_mainWindow != m_clientWindow) { xwindow = (Window) m_clientWindow; - + wxWindow *window = (wxWindow*) this; wxRenderer *renderer = window->GetRenderer(); if (renderer) @@ -874,7 +879,7 @@ void wxWindowX11::DoSetClientSize(int width, int height) width -= border.x + border.width; height -= border.y + border.height; } - + XResizeWindow( wxGlobalDisplay(), xwindow, width, height ); } } @@ -898,7 +903,7 @@ void wxWindowX11::DoMoveWindow(int x, int y, int width, int height) if (m_mainWindow != m_clientWindow) { xwindow = (Window) m_clientWindow; - + wxWindow *window = (wxWindow*) this; wxRenderer *renderer = window->GetRenderer(); if (renderer) @@ -914,7 +919,7 @@ void wxWindowX11::DoMoveWindow(int x, int y, int width, int height) x = 0; y = 0; } - + wxScrollBar *sb = window->GetScrollbar( wxHORIZONTAL ); if (sb && sb->IsShown()) { @@ -927,11 +932,11 @@ void wxWindowX11::DoMoveWindow(int x, int y, int width, int height) wxSize size = sb->GetSize(); width -= size.x; } - + XMoveResizeWindow( wxGlobalDisplay(), xwindow, x, y, wxMax(1, width), wxMax(1, height) ); } - -#else + +#else XWindowChanges windowChanges; windowChanges.x = x; @@ -942,7 +947,7 @@ void wxWindowX11::DoMoveWindow(int x, int y, int width, int height) int valueMask = CWX | CWY | CWWidth | CWHeight; XConfigureWindow( wxGlobalDisplay(), xwindow, valueMask, &windowChanges ); - + #endif } @@ -956,7 +961,7 @@ void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, #if !wxUSE_NANOX XSizeHints sizeHints; sizeHints.flags = 0; - + if (minW > -1 && minH > -1) { sizeHints.flags |= PMinSize; @@ -988,6 +993,17 @@ int wxWindowX11::GetCharHeight() const { wxCHECK_MSG( m_font.Ok(), 0, "valid window font needed" ); +#if wxUSE_UNICODE + // There should be an easier way. + PangoLayout *layout = pango_layout_new( wxTheApp->GetPangoContext() ); + pango_layout_set_font_description( layout, GetFont().GetNativeFontInfo()->description ); + pango_layout_set_text(layout, "H", 1 ); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + + return h; +#else WXFontStructPtr pFontStruct = m_font.GetFontStruct(1.0, wxGlobalDisplay()); int direction, ascent, descent; @@ -997,12 +1013,24 @@ int wxWindowX11::GetCharHeight() const // return (overall.ascent + overall.descent); return (ascent + descent); +#endif } int wxWindowX11::GetCharWidth() const { wxCHECK_MSG( m_font.Ok(), 0, "valid window font needed" ); +#if wxUSE_UNICODE + // There should be an easier way. + PangoLayout *layout = pango_layout_new( wxTheApp->GetPangoContext() ); + pango_layout_set_font_description( layout, GetFont().GetNativeFontInfo()->description ); + pango_layout_set_text(layout, "H", 1 ); + int w,h; + pango_layout_get_pixel_size(layout, &w, &h); + g_object_unref( G_OBJECT( layout ) ); + + return w; +#else WXFontStructPtr pFontStruct = m_font.GetFontStruct(1.0, wxGlobalDisplay()); int direction, ascent, descent; @@ -1011,6 +1039,7 @@ int wxWindowX11::GetCharWidth() const &descent, &overall); return overall.width; +#endif } void wxWindowX11::GetTextExtent(const wxString& string, @@ -1023,18 +1052,45 @@ void wxWindowX11::GetTextExtent(const wxString& string, wxCHECK_RET( fontToUse.Ok(), wxT("invalid font") ); + if (string.IsEmpty()) + { + if (x) (*x) = 0; + if (y) (*y) = 0; + return; + } + +#if wxUSE_UNICODE + PangoLayout *layout = pango_layout_new( wxTheApp->GetPangoContext() ); + + PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description; + pango_layout_set_font_description(layout, desc); + + const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); + pango_layout_set_text(layout, (const char*) data, strlen( (const char*) data )); + + PangoLayoutLine *line = (PangoLayoutLine *)pango_layout_get_lines(layout)->data; + + + PangoRectangle rect; + pango_layout_line_get_extents(line, NULL, &rect); + + if (x) (*x) = (wxCoord) (rect.width / PANGO_SCALE); + if (y) (*y) = (wxCoord) (rect.height / PANGO_SCALE); + if (descent) + { + // Do something about metrics here + (*descent) = 0; + } + if (externalLeading) (*externalLeading) = 0; // ?? + + g_object_unref( G_OBJECT( layout ) ); +#else WXFontStructPtr pFontStruct = fontToUse.GetFontStruct(1.0, wxGlobalDisplay()); int direction, ascent, descent2; XCharStruct overall; int slen = string.Len(); -#if 0 - if (use16) - XTextExtents16((XFontStruct*) pFontStruct, (XChar2b *) (char*) (const char*) string, slen, &direction, - &ascent, &descent2, &overall); -#endif - XTextExtents((XFontStruct*) pFontStruct, (char*) string.c_str(), slen, &direction, &ascent, &descent2, &overall); @@ -1046,7 +1102,7 @@ void wxWindowX11::GetTextExtent(const wxString& string, *descent = descent2; if (externalLeading) *externalLeading = 0; - +#endif } // ---------------------------------------------------------------------------- @@ -1066,7 +1122,7 @@ void wxWindowX11::Refresh(bool eraseBack, const wxRect *rect) { int height,width; GetSize( &width, &height ); - + // Schedule for later Updating in ::Update() or ::OnInternalIdle(). m_clearRegion.Clear(); m_clearRegion.Union( 0, 0, width, height ); @@ -1082,7 +1138,7 @@ void wxWindowX11::Refresh(bool eraseBack, const wxRect *rect) { int height,width; GetSize( &width, &height ); - + // Schedule for later Updating in ::Update() or ::OnInternalIdle(). m_updateRegion.Clear(); m_updateRegion.Union( 0, 0, width, height ); @@ -1097,13 +1153,13 @@ void wxWindowX11::Update() // Send nc paint events. SendNcPaintEvents(); } - + if (!m_updateRegion.IsEmpty()) { // wxLogDebug("wxWindowX11::Update: %s", GetClassInfo()->GetClassName()); // Actually send erase events. SendEraseEvents(); - + // Actually send paint events. SendPaintEvents(); } @@ -1120,10 +1176,10 @@ void wxWindowX11::Clear() void wxWindowX11::SendEraseEvents() { if (m_clearRegion.IsEmpty()) return; - + wxClientDC dc( (wxWindow*)this ); dc.SetClippingRegion( m_clearRegion ); - + wxEraseEvent erase_event( GetId(), &dc ); erase_event.SetEventObject( this ); @@ -1132,7 +1188,7 @@ void wxWindowX11::SendEraseEvents() Display *xdisplay = wxGlobalDisplay(); Window xwindow = (Window) GetClientAreaWindow(); XSetForeground( xdisplay, g_eraseGC, m_backgroundColour.GetPixel() ); - + wxRegionIterator upd( m_clearRegion ); while (upd) { @@ -1141,7 +1197,7 @@ void wxWindowX11::SendEraseEvents() upd ++; } } - + m_clearRegion.Clear(); } @@ -1150,13 +1206,13 @@ void wxWindowX11::SendPaintEvents() // wxLogDebug("SendPaintEvents: %s (%ld)", GetClassInfo()->GetClassName(), GetId()); m_clipPaintRegion = TRUE; - + wxPaintEvent paint_event( GetId() ); paint_event.SetEventObject( this ); GetEventHandler()->ProcessEvent( paint_event ); - + m_updateRegion.Clear(); - + m_clipPaintRegion = FALSE; } @@ -1174,7 +1230,7 @@ void wxWindowX11::SendNcPaintEvents() { height = sb->GetSize().y; y = sb->GetPosition().y; - + sb = window->GetScrollbar( wxVERTICAL ); if (sb && sb->IsShown()) { @@ -1186,17 +1242,17 @@ void wxWindowX11::SendNcPaintEvents() Colormap cm = (Colormap) wxTheApp->GetMainColormap( wxGetDisplay() ); wxColour colour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE); colour.CalcPixel( (WXColormap) cm ); - + XSetForeground( xdisplay, g_eraseGC, colour.GetPixel() ); - + XFillRectangle( xdisplay, xwindow, g_eraseGC, x, y, width, height ); } } - + wxNcPaintEvent nc_paint_event( GetId() ); nc_paint_event.SetEventObject( this ); GetEventHandler()->ProcessEvent( nc_paint_event ); - + m_updateNcArea = FALSE; } @@ -1230,7 +1286,7 @@ void wxWindowX11::OnInternalIdle() { // Update invalidated regions. Update(); - + // This calls the UI-update mechanism (querying windows for // menu/toolbar/control state information) UpdateWindowUI(); @@ -1242,8 +1298,9 @@ void wxWindowX11::OnInternalIdle() wxString msg; msg.Printf("Setting focus for %s from OnInternalIdle\n", GetClassInfo()->GetClassName()); printf(msg.c_str()); -#endif - SetFocus(); +#endif + SetFocus(); + // If it couldn't set the focus now, there's // no point in trying again. m_needsInputFocus = FALSE; @@ -1260,15 +1317,15 @@ bool wxAddWindowToTable(Window w, wxWindow *win) wxWindow *oldItem = NULL; if ((oldItem = (wxWindow *)wxWidgetHashTable->Get ((long) w))) { - wxLogDebug("Widget table clash: new widget is %ld, %s", - (long)w, win->GetClassInfo()->GetClassName()); + wxLogDebug( wxT("Widget table clash: new widget is %ld, %s"), + (long)w, win->GetClassInfo()->GetClassName()); return FALSE; } wxWidgetHashTable->Put((long) w, win); - wxLogTrace("widget", "XWindow 0x%08x <-> window %p (%s)", - (unsigned int) w, win, win->GetClassInfo()->GetClassName()); + wxLogTrace( wxT("widget"), wxT("XWindow 0x%08x <-> window %p (%s)"), + (unsigned int) w, win, win->GetClassInfo()->GetClassName()); return TRUE; } @@ -1292,15 +1349,15 @@ bool wxAddClientWindowToTable(Window w, wxWindow *win) wxWindow *oldItem = NULL; if ((oldItem = (wxWindow *)wxClientWidgetHashTable->Get ((long) w))) { - wxLogDebug("Client window table clash: new window is %ld, %s", - (long)w, win->GetClassInfo()->GetClassName()); + wxLogDebug( wxT("Client window table clash: new window is %ld, %s"), + (long)w, win->GetClassInfo()->GetClassName()); return FALSE; } wxClientWidgetHashTable->Put((long) w, win); - wxLogTrace("widget", "XWindow 0x%08x <-> window %p (%s)", - (unsigned int) w, win, win->GetClassInfo()->GetClassName()); + wxLogTrace( wxT("widget"), wxT("XWindow 0x%08x <-> window %p (%s)"), + (unsigned int) w, win, win->GetClassInfo()->GetClassName()); return TRUE; } @@ -1462,7 +1519,7 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, return FALSE; } -bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win), XEvent *xevent) +bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win), XEvent *xevent, bool isAscii) { switch (XEventGetType(xevent)) { @@ -1474,23 +1531,27 @@ bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win KeySym keySym; (void) XLookupString ((XKeyEvent *) xevent, buf, 20, &keySym, NULL); int id = wxCharCodeXToWX (keySym); + // id may be WXK_xxx code - these are outside ASCII range, so we + // can't just use toupper() on id. + // Only change this if we want the raw key that was pressed, + // and don't change it if we want an ASCII value. + if (!isAscii && (id >= 'a' && id <= 'z')) + { + id = id + 'A' - 'a'; + } wxevent.m_shiftDown = XKeyEventShiftIsDown(xevent); wxevent.m_controlDown = XKeyEventCtrlIsDown(xevent); wxevent.m_altDown = XKeyEventAltIsDown(xevent); wxevent.m_metaDown = XKeyEventMetaIsDown(xevent); wxevent.SetEventObject(win); - wxevent.m_keyCode = toupper(id); + wxevent.m_keyCode = id; wxevent.SetTimestamp(XKeyEventGetTime(xevent)); wxevent.m_x = XKeyEventGetX(xevent); wxevent.m_y = XKeyEventGetY(xevent); - if (id > -1) - return TRUE; - else - return FALSE; - break; + return id > -1; } default: break; @@ -1511,11 +1572,11 @@ bool wxWindowX11::SetBackgroundColour(const wxColour& col) Colormap cm = DefaultColormap( xdisplay, xscreen ); m_backgroundColour.CalcPixel( (WXColormap) cm ); - + // We don't set the background colour as we paint // the background ourselves. // XSetWindowBackground( xdisplay, (Window) m_clientWindow, m_backgroundColour.GetPixel() ); - + return TRUE; } @@ -1566,8 +1627,8 @@ wxPoint wxGetMousePosition() unsigned int maskReturn; XQueryPointer (display, - rootWindow, - &rootReturn, + rootWindow, + &rootReturn, &childReturn, &rootX, &rootY, &winX, &winY, &maskReturn); return wxPoint(rootX, rootY); @@ -1605,7 +1666,7 @@ bool wxWinModule::OnInit() Window xroot = RootWindow( xdisplay, xscreen ); g_eraseGC = XCreateGC( xdisplay, xroot, 0, NULL ); XSetFillStyle( xdisplay, g_eraseGC, FillSolid ); - + return TRUE; } diff --git a/src/xrc/Makefile.in b/src/xrc/Makefile.in index f645274010..ca0f650ca8 100644 --- a/src/xrc/Makefile.in +++ b/src/xrc/Makefile.in @@ -7,11 +7,11 @@ expat_dir = $(top_srcdir)/contrib/src/xrc/expat libsrc_dir = contrib/src/xrc@PATH_IFS@$(expat_dir)/xmlparse@PATH_IFS@$(expat_dir)/xmltok -TARGET_LIBNAME=libwxxrc +TARGET_LIBNAME=lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@ -LIBVERSION_CURRENT=0 -LIBVERSION_REVISION=1 -LIBVERSION_AGE=0 +LIBVERSION_CURRENT=@WX_CURRENT@ +LIBVERSION_REVISION=@WX_REVISION@ +LIBVERSION_AGE=@WX_AGE@ HEADER_PATH=$(top_srcdir)/contrib/include/wx HEADER_SUBDIR=xrc @@ -22,9 +22,9 @@ EXPAT_OBJECTS=xmltok.o xmlrole.o xmlparse.o HEADERS=xh_all.h xh_bttn.h xh_chckb.h xh_chckl.h xh_choic.h xh_combo.h \ xh_dlg.h xh_gauge.h xh_html.h xh_menu.h xh_notbk.h xh_panel.h \ xh_radbt.h xh_radbx.h xh_sizer.h xh_slidr.h xh_spin.h xh_stbmp.h \ - xh_sttxt.h xh_text.h xh_listb.h xml.h xmlio.h xmlres.h xh_toolb.h \ + xh_sttxt.h xh_text.h xh_listb.h xml.h xmlres.h xh_toolb.h \ xh_bmpbt.h xh_cald.h xh_listc.h xh_scrol.h xh_stbox.h xh_tree.h \ - xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h + xh_stlin.h xh_bmp.h xh_unkwn.h xh_frame.h xh_gdctl.h xh_scwin.h OBJECTS=$(EXPAT_OBJECTS) \ xml.o xmlres.o xmlrsall.o \ @@ -33,7 +33,7 @@ OBJECTS=$(EXPAT_OBJECTS) \ xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \ xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \ xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \ - xh_frame.o xh_gdctl.o + xh_frame.o xh_gdctl.o xh_scwin.o DEPFILES=$(OBJECTS:.o=.d) APPEXTRADEFS=-I$(top_srcdir)/contrib/include $(EXPAT_DEFS) diff --git a/src/xrc/XrcVC.dsp b/src/xrc/XrcVC.dsp index 44c9ba9a78..174c339711 100644 --- a/src/xrc/XrcVC.dsp +++ b/src/xrc/XrcVC.dsp @@ -184,6 +184,10 @@ SOURCE=.\xh_scrol.cpp # End Source File # Begin Source File +SOURCE=.\xh_scwin.cpp +# End Source File +# Begin Source File + SOURCE=.\xh_sizer.cpp # End Source File # Begin Source File diff --git a/src/xrc/makefile.b32 b/src/xrc/makefile.b32 index dc7d4fa68a..2024abb133 100644 --- a/src/xrc/makefile.b32 +++ b/src/xrc/makefile.b32 @@ -27,7 +27,7 @@ OBJECTS=$(EXPAT_OBJECTS) \ xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj \ xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj \ xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj \ - xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj + xh_tree.obj xh_unkwn.obj xh_frame.obj xh_gdctl.obj xh_scwin.obj !include $(WXDIR)\src\makelib.b32 diff --git a/src/xrc/makefile.g95 b/src/xrc/makefile.g95 index 8a4bfb322f..00b31580dc 100644 --- a/src/xrc/makefile.g95 +++ b/src/xrc/makefile.g95 @@ -28,7 +28,7 @@ OBJECTS= $(XMLPARSEDIR_OBJECTS) $(XMLTOKDIR_OBJECTS) \ xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \ xh_text.o xh_listb.o xh_toolb.o xh_stlin.o xh_bmp.o xh_unkwn.o \ xh_bmpbt.o xh_cald.o xh_listc.o xh_scrol.o xh_stbox.o xh_tree.o \ - xh_frame.o xh_gdctl.o + xh_frame.o xh_gdctl.o xh_scwin.o include $(WXDIR)/src/makelib.g95 diff --git a/src/xrc/makefile.vc b/src/xrc/makefile.vc index 51bf90f9b4..6065d42e49 100644 --- a/src/xrc/makefile.vc +++ b/src/xrc/makefile.vc @@ -57,7 +57,7 @@ OBJECTS=$(EXPAT_OBJS) \ $(D)\xh_text.obj $(D)\xh_listb.obj $(D)\xh_toolb.obj \ $(D)\xh_bmpbt.obj $(D)\xh_cald.obj $(D)\xh_listc.obj $(D)\xh_scrol.obj \ $(D)\xh_stbox.obj $(D)\xh_tree.obj $(D)\xh_stlin.obj $(D)\xh_bmp.obj \ - $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj + $(D)\xh_unkwn.obj $(D)\xh_gdctl.obj $(D)\xh_scwin.obj !include $(WXDIR)\src\makelib.vc diff --git a/src/xrc/makefile.wat b/src/xrc/makefile.wat index 43cfc46647..364f55a256 100644 --- a/src/xrc/makefile.wat +++ b/src/xrc/makefile.wat @@ -2,12 +2,16 @@ WXDIR = ..\..\.. -EXTRACPPFLAGS=/Id:\libxml\libxml2-2.1.1 +#XMLDIR= +!error modify makefile.wat to include the path to the XML library + +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include;-I$(XMLDIR)\libxml2-2.1.1 !include $(WXDIR)\src\makewat.env -WXXMLLIB = $(WXDIR)\lib\wxxrc.lib +WXXMLLIB = $(WXDIR)\lib\wxxrc_w.lib THISDIR = $(WXDIR)\contrib\src\xrc +OUTPUTDIR = $(THISDIR)\ NAME = wxxrc LNK = $(name).lnk @@ -18,14 +22,19 @@ OBJECTS=xml.obj xmlres.obj xmlrsall.obj & xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj & xh_text.obj xh_listb.obj xh_toolb.obj xh_stlin.obj xh_bmp.obj & xh_bmpbt.obj xh_cald.obj xh_listc.obj xh_scrol.obj xh_stbox.obj & - xh_tree.obj xh_unkwn.obj xh_frame.obj + xh_tree.obj xh_unkwn.obj xh_frame.obj xh_scwin.obj xh_split.obj -all: $(WXXMLLIB) +all: $(WXXMLLIB) .SYMBOLIC $(WXXMLLIB): $(OBJECTS) *wlib /b /c /n /P=256 $(WXXMLLIB) $(OBJECTS) clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch $(WXXMLLIB) *.lbc + -erase *.obj + -erase *.bak + -erase *.err + -erase *.pch + -erase $(WXXMLLIB) + -erase *.lbc diff --git a/src/xrc/xh_dlg.cpp b/src/xrc/xh_dlg.cpp index d44ad16a91..3c916a9e1d 100644 --- a/src/xrc/xh_dlg.cpp +++ b/src/xrc/xh_dlg.cpp @@ -41,6 +41,8 @@ wxDialogXmlHandler::wxDialogXmlHandler() : wxXmlResourceHandler() XRC_ADD_STYLE(wxTAB_TRAVERSAL); XRC_ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY); XRC_ADD_STYLE(wxCLIP_CHILDREN); + XRC_ADD_STYLE(wxMAXIMIZE_BOX); + XRC_ADD_STYLE(wxMINIMIZE_BOX); AddWindowStyles(); } diff --git a/src/xrc/xh_scwin.cpp b/src/xrc/xh_scwin.cpp new file mode 100644 index 0000000000..9aedfefe57 --- /dev/null +++ b/src/xrc/xh_scwin.cpp @@ -0,0 +1,52 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xh_scwin.cpp +// Purpose: XRC resource for wxScrolledWindow +// Author: Vaclav Slavik +// Created: 2002/10/18 +// RCS-ID: $Id$ +// Copyright: (c) 2002 Vaclav Slavik +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifdef __GNUG__ +#pragma implementation "xh_scwin.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/xrc/xh_scwin.h" +#include "wx/scrolwin.h" + + +wxScrolledWindowXmlHandler::wxScrolledWindowXmlHandler() +: wxXmlResourceHandler() +{ + XRC_ADD_STYLE(wxHSCROLL); + XRC_ADD_STYLE(wxVSCROLL); + AddWindowStyles(); +} + +wxObject *wxScrolledWindowXmlHandler::DoCreateResource() +{ + XRC_MAKE_INSTANCE(control, wxScrolledWindow) + + control->Create(m_parentAsWindow, + GetID(), + GetPosition(), GetSize(), + GetStyle(wxT("style"), wxHSCROLL | wxVSCROLL), + GetName()); + + SetupWindow(control); + + return control; +} + +bool wxScrolledWindowXmlHandler::CanHandle(wxXmlNode *node) +{ + return IsOfClass(node, wxT("wxScrolledWindow")); +} diff --git a/src/xrc/xh_sizer.cpp b/src/xrc/xh_sizer.cpp index 278cc09631..fa5cbdccfb 100644 --- a/src/xrc/xh_sizer.cpp +++ b/src/xrc/xh_sizer.cpp @@ -150,7 +150,12 @@ wxObject *wxSizerXmlHandler::DoCreateResource() else if (m_class == wxT("wxStaticBoxSizer")) { sizer = new wxStaticBoxSizer( - new wxStaticBox(m_parentAsWindow, -1, GetText(wxT("label"))), + new wxStaticBox(m_parentAsWindow, + GetID(), + GetText(wxT("label")), + wxDefaultPosition, wxDefaultSize, + 0/*style*/, + GetName()), GetStyle(wxT("orient"), wxHORIZONTAL)); } diff --git a/src/xrc/xml.cpp b/src/xrc/xml.cpp index a1c6a01796..dac3341329 100644 --- a/src/xrc/xml.cpp +++ b/src/xrc/xml.cpp @@ -10,7 +10,6 @@ #ifdef __GNUG__ #pragma implementation "xml.h" -#pragma implementation "xmlio.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -274,6 +273,14 @@ bool wxXmlNode::DeleteProperty(const wxString& name) // wxXmlDocument //----------------------------------------------------------------------------- +wxXmlDocument::wxXmlDocument() + : m_version(wxT("1.0")), m_fileEncoding(wxT("utf-8")), m_root(NULL) +{ +#if !wxUSE_UNICODE + m_encoding = wxT("UTF-8"); +#endif +} + wxXmlDocument::wxXmlDocument(const wxString& filename, const wxString& encoding) : wxObject(), m_root(NULL) { @@ -353,9 +360,9 @@ inline static wxString CharToString(wxMBConv *conv, wchar_t *buf = new wchar_t[nLen+1]; wxConvUTF8.MB2WC(buf, s, nLen); buf[nLen] = 0; - wxString s(buf, *conv, len); + wxString str(buf, *conv, len); delete[] buf; - return s; + return str; } else return wxString(s, len); @@ -465,26 +472,29 @@ static void DefaultHnd(void *userData, const char *s, int len) } static int UnknownEncodingHnd(void * WXUNUSED(encodingHandlerData), - const XML_Char *name, XML_Encoding *info) + const XML_Char *name, XML_Encoding *info) { // We must build conversion table for expat. The easiest way to do so // is to let wxCSConv convert as string containing all characters to // wide character representation: wxCSConv conv(wxString(name, wxConvLibc)); - char mbBuf[255]; - wchar_t wcBuf[255]; + char mbBuf[2]; + wchar_t wcBuf[10]; size_t i; - for (i = 0; i < 255; i++) - mbBuf[i] = (char) (i+1); - mbBuf[255] = 0; - conv.MB2WC(wcBuf, mbBuf, 255); - wcBuf[255] = 0; - + mbBuf[1] = 0; info->map[0] = 0; for (i = 0; i < 255; i++) - info->map[i+1] = (int)wcBuf[i]; - + { + mbBuf[0] = (char)(i+1); + if (conv.MB2WC(wcBuf, mbBuf, 2) == (size_t)-1) + { + // invalid/undefined byte in the encoding: + info->map[i+1] = -1; + } + info->map[i+1] = (int)wcBuf[0]; + } + info->data = NULL; info->convert = NULL; info->release = NULL; diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index 0a1b72cd3a..6e2ab13778 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -146,7 +146,6 @@ void wxXmlResource::ClearHandlers() } - wxMenu *wxXmlResource::LoadMenu(const wxString& name) { return (wxMenu*)CreateResFromNode(FindResource(name, wxT("wxMenu")), NULL, NULL); @@ -261,7 +260,7 @@ static void ProcessPlatformProperty(wxXmlNode *node) isok = TRUE; else { - wxStringTokenizer tkn(s, " |"); + wxStringTokenizer tkn(s, wxT(" |")); while (tkn.HasMoreTokens()) { @@ -408,10 +407,25 @@ wxXmlNode *wxXmlResource::DoFindResource(wxXmlNode *parent, if ( node->GetType() == wxXML_ELEMENT_NODE && (node->GetName() == wxT("object") || node->GetName() == wxT("object_ref")) && - (!classname || - node->GetPropVal(wxT("class"), wxEmptyString) == classname) && - node->GetPropVal(wxT("name"), &dummy) && dummy == name ) - return node; + node->GetPropVal(wxT("name"), &dummy) && dummy == name ) + { + wxString cls(node->GetPropVal(wxT("class"), wxEmptyString)); + if (!classname || cls == classname) + return node; + // object_ref may not have 'class' property: + if (cls.empty() && node->GetName() == wxT("object_ref")) + { + wxString refName = node->GetPropVal(wxT("ref"), wxEmptyString); + if (refName.empty()) + continue; + wxXmlNode* refNode = FindResource(refName, wxEmptyString, TRUE); + if (refNode && + refNode->GetPropVal(wxT("class"), wxEmptyString) == classname) + { + return node; + } + } + } } if ( recursive ) @@ -487,7 +501,7 @@ static void MergeNodes(wxXmlNode& dest, wxXmlNode& with) for (dnode = dest.GetChildren(); dnode; dnode = dnode->GetNext() ) { if ( dnode->GetName() == node->GetName() && - dnode->GetPropVal("name", wxEmptyString) == name && + dnode->GetPropVal(wxT("name"), wxEmptyString) == name && dnode->GetType() == node->GetType() ) { MergeNodes(*dnode, *node); @@ -547,6 +561,40 @@ wxObject *wxXmlResource::CreateResFromNode(wxXmlNode *node, wxObject *parent, wx } +#include "wx/listimpl.cpp" +WX_DECLARE_LIST(wxXmlSubclassFactory, wxXmlSubclassFactoriesList); +WX_DEFINE_LIST(wxXmlSubclassFactoriesList); + +wxXmlSubclassFactoriesList *wxXmlResource::ms_subclassFactories = NULL; + +/*static*/ void wxXmlResource::AddSubclassFactory(wxXmlSubclassFactory *factory) +{ + if (!ms_subclassFactories) + { + ms_subclassFactories = new wxXmlSubclassFactoriesList; + ms_subclassFactories->DeleteContents(TRUE); + } + ms_subclassFactories->Append(factory); +} + +class wxXmlSubclassFactoryCXX : public wxXmlSubclassFactory +{ +public: + ~wxXmlSubclassFactoryCXX() {} + + wxObject *Create(const wxString& className) + { + wxClassInfo* classInfo = wxClassInfo::FindClass(className); + + if (classInfo) + return classInfo->CreateObject(); + else + return NULL; + } +}; + + + wxXmlResourceHandler::wxXmlResourceHandler() @@ -568,18 +616,23 @@ wxObject *wxXmlResourceHandler::CreateResource(wxXmlNode *node, wxObject *parent !(m_resource->GetFlags() & wxXRC_NO_SUBCLASSING)) { wxString subclass = node->GetPropVal(wxT("subclass"), wxEmptyString); - wxClassInfo* classInfo = wxClassInfo::FindClass(subclass); - - if (classInfo) - m_instance = classInfo->CreateObject(); - - if (!m_instance) + if (!subclass.empty()) { - wxLogError(_("Subclass '%s' not found for resource '%s', not subclassing!"), - subclass.c_str(), node->GetPropVal(wxT("name"), wxEmptyString).c_str()); - } + for (wxXmlSubclassFactoriesList::Node *i = wxXmlResource::ms_subclassFactories->GetFirst(); + i; i = i->GetNext()) + { + m_instance = i->GetData()->Create(subclass); + if (m_instance) + break; + } - m_instance = classInfo->CreateObject(); + if (!m_instance) + { + wxString name = node->GetPropVal(wxT("name"), wxEmptyString); + wxLogError(_("Subclass '%s' not found for resource '%s', not subclassing!"), + subclass.c_str(), name.c_str()); + } + } } m_node = node; @@ -634,7 +687,7 @@ int wxXmlResourceHandler::GetStyle(const wxString& param, int defaults) if (!s) return defaults; - wxStringTokenizer tkn(s, wxT("| "), wxTOKEN_STRTOK); + wxStringTokenizer tkn(s, wxT("| \t\n"), wxTOKEN_STRTOK); int style = 0; int index; wxString fl; @@ -733,6 +786,7 @@ int wxXmlResourceHandler::GetID() stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD); stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP); stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT); + stdID(wxID_CLOSE_ALL); #undef stdID else return wxXmlResource::GetXRCID(sid); } @@ -845,6 +899,8 @@ wxIcon wxXmlResourceHandler::GetIcon(const wxString& param, wxXmlNode *wxXmlResourceHandler::GetParamNode(const wxString& param) { + wxCHECK_MSG(m_node, NULL, wxT("You can't access handler data before it was initialized!")); + wxXmlNode *n = m_node->GetChildren(); while (n) @@ -1054,7 +1110,7 @@ void wxXmlResourceHandler::CreateChildren(wxObject *parent, bool this_hnd_only) while (n) { if (n->GetType() == wxXML_ELEMENT_NODE && - n->GetName() == wxT("object")) + (n->GetName() == wxT("object") || n->GetName() == wxT("object_ref"))) { if (this_hnd_only && CanHandle(n)) CreateResource(n, parent, NULL); @@ -1126,10 +1182,21 @@ static XRCID_record *XRCID_Records[XRCID_TABLE_SIZE] = {NULL}; XRCID_record **rec_var = (oldrec == NULL) ? &XRCID_Records[index] : &oldrec->next; *rec_var = new XRCID_record; - (*rec_var)->id = ++XRCID_LastID; (*rec_var)->key = wxStrdup(str_id); (*rec_var)->next = NULL; + wxChar *end; + int asint = wxStrtol(str_id, &end, 10); + if (*str_id && *end == 0) + { + // if str_id was integer, keep it verbosely: + (*rec_var)->id = asint; + } + else + { + (*rec_var)->id = ++XRCID_LastID; + } + return (*rec_var)->id; } @@ -1166,11 +1233,13 @@ public: wxXmlResourceModule() {} bool OnInit() { + wxXmlResource::AddSubclassFactory(new wxXmlSubclassFactoryCXX); return TRUE; } void OnExit() { delete wxXmlResource::Set(NULL); + wxDELETE(wxXmlResource::ms_subclassFactories); CleanXRCID_Records(); } }; diff --git a/src/xrc/xmlrsall.cpp b/src/xrc/xmlrsall.cpp index b55badc9f9..5d933f9490 100644 --- a/src/xrc/xmlrsall.cpp +++ b/src/xrc/xmlrsall.cpp @@ -94,4 +94,5 @@ void wxXmlResource::InitAllHandlers() AddHandler(new wxGenericDirCtrlXmlHandler); #endif AddHandler(new wxFrameXmlHandler); + AddHandler(new wxScrolledWindowXmlHandler); } diff --git a/src/zlib/makefile.wat b/src/zlib/makefile.wat index 3ea09da555..f6fbce4436 100644 --- a/src/zlib/makefile.wat +++ b/src/zlib/makefile.wat @@ -1,103 +1,53 @@ -# Makefile for zlib -# Watcom 10a +############################################################################## +# Name: src/zlib/makefile.wat +# Purpose: build zlib using Watcom 11.0+ compiler +# Author: Vadim Zeitlin +# Created: 21.01.03 +# RCS-ID: $Id$ +# Copyright: (c) 2003 Vadim Zeitlin +# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch +# Licence: wxWindows licence +############################################################################## -# This version of the zlib makefile was adapted by Chris Young for use -# with Watcom 10a 32-bit protected mode flat memory model. It was created -# for use with POV-Ray ray tracer and you may choose to edit the CFLAGS to -# suit your needs but the -DMSDOS is required. -# -- Chris Young 76702.1655@compuserve.com +WXDIR = ..\.. +OUTPUTDIR=watcom -# To use, do "wmake -f makefile.wat" +!include $(WXDIR)\src\makewat.env -# See zconf.h for details about the memory requirements. - -# ------------- Watcom 10a ------------- -MODEL=-mf -CFLAGS= $(MODEL) -fpi87 -fp5 -zp4 -5r -w5 -oneatx -DWIN32 -CC=wcc386 -LD=wcl386 -LIB=wlib -b -c -LDFLAGS= -O=.obj -LIBTARGET=..\..\lib\zlib.lib +LIBTARGET=$(WXDIR)\lib\zlib$(WATCOM_SUFFIX).lib # variables -OBJECTS=adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) & - trees$(O) zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) & - infutil$(O) inffast$(O) +OBJECTS = & + $(OUTPUTDIR)\adler32.obj & + $(OUTPUTDIR)\compress.obj & + $(OUTPUTDIR)\crc32.obj & + $(OUTPUTDIR)\gzio.obj & + $(OUTPUTDIR)\uncompr.obj & + $(OUTPUTDIR)\deflate.obj & + $(OUTPUTDIR)\trees.obj & + $(OUTPUTDIR)\zutil.obj & + $(OUTPUTDIR)\inflate.obj & + $(OUTPUTDIR)\infblock.obj & + $(OUTPUTDIR)\inftrees.obj & + $(OUTPUTDIR)\infcodes.obj & + $(OUTPUTDIR)\infutil.obj & + $(OUTPUTDIR)\inffast.obj # all: test -all: $(LIBTARGET) +all: $(OUTPUTDIR) $(LIBTARGET) .SYMBOLIC -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h & - infcodes.h infutil.h - $(CC) $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h & - infcodes.h inffast.h - $(CC) $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -example.obj: example.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -minigzip.obj: minigzip.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c +$(OUTPUTDIR): + @if not exist $^@ mkdir $^@ +LBCFILE=$(OUTPUTDIR)\zlib.lbc $(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc - - -example.exe: example.obj $(LIBTARGET) - $(LD) $(LDFLAGS) example.obj $(LIBTARGET) - -minigzip.exe: minigzip.obj $(LIBTARGET) - $(LD) $(LDFLAGS) minigzip.obj $(LIBTARGET) - -test: minigzip.exe example.exe - example - echo hello world | minigzip | minigzip -d >test - type test + %create $(LBCFILE) + @for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i + wlib /q /b /c /n /p=512 $^@ @$(LBCFILE) clean: .SYMBOLIC -erase *.obj -erase *.exe - -erase $(LIBTARGET) + -erase $(LIBTARGET) + diff --git a/src/zlib/zlib.dsp b/src/zlib/zlib.dsp index 38dec3a130..73fff52a14 100644 --- a/src/zlib/zlib.dsp +++ b/src/zlib/zlib.dsp @@ -23,8 +23,8 @@ CFG=zlib - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "ZlibVC" -# PROP Scc_LocalPath "." +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe diff --git a/src/zlib/zlib.dsw b/src/zlib/zlib.dsw index de32c7cf3a..fae86d6c51 100644 --- a/src/zlib/zlib.dsw +++ b/src/zlib/zlib.dsw @@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00 ############################################################################### -Project: "zlib"=.\ZlibVC.dsp - Package Owner=<4> +Project: "zlib"=.\zlib.dsp - Package Owner=<4> Package=<5> {{{ diff --git a/utils/HelpGen/src/HelpGenVC.dsp b/utils/HelpGen/src/HelpGenVC.dsp index 447a4b5833..f72b10763b 100644 --- a/utils/HelpGen/src/HelpGenVC.dsp +++ b/utils/HelpGen/src/HelpGenVC.dsp @@ -110,7 +110,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/helpgen.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/helpgen.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "HelpGenVC - Win32 Release DLL" @@ -137,7 +137,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/helpgen.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/helpgen.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/utils/HelpGen/src/markup.h b/utils/HelpGen/src/markup.h index 13e43a0a8c..7e1ccc6c7c 100644 --- a/utils/HelpGen/src/markup.h +++ b/utils/HelpGen/src/markup.h @@ -48,4 +48,4 @@ MarkupTagsT get_HTML_markup_tags(); // MarkupTagsT get_PostScript_markup_tags(); // MarkupTagsT get_Latex_markup_tags(); -#endif \ No newline at end of file +#endif diff --git a/utils/dialoged/src/DialogEdVC.dsp b/utils/dialoged/src/DialogEdVC.dsp index b91aa17a67..5710ecebae 100644 --- a/utils/dialoged/src/DialogEdVC.dsp +++ b/utils/dialoged/src/DialogEdVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/dialoged.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/dialoged.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "DialogEdVC - Win32 Release DLL" @@ -135,7 +135,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/dialoged.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/dialoged.exe" /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ENDIF diff --git a/utils/dialoged/src/dialoged.cpp b/utils/dialoged/src/dialoged.cpp index 3485d5dae5..3b208d17cd 100644 --- a/utils/dialoged/src/dialoged.cpp +++ b/utils/dialoged/src/dialoged.cpp @@ -28,6 +28,9 @@ #if !wxUSE_PROPSHEET #error Please set wxUSE_PROPSHEET to 1 in setup.h. #endif +#if !wxUSE_RESOURCES +#error Please set wxUSE_RESOURCES to 1 in setup.h. +#endif IMPLEMENT_APP(MyApp) diff --git a/utils/helpview/src/client.cpp b/utils/helpview/src/client.cpp new file mode 100644 index 0000000000..f4ff1e72f1 --- /dev/null +++ b/utils/helpview/src/client.cpp @@ -0,0 +1,298 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: client.cpp +// Purpose: Remote help sample client +// Author: Julian Smart +// Modified by: Eric Dowty +// Created: 25/01/99 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +#define USE_REMOTE 1 + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +#include + +#include "wx/process.h" +#include "wx/helpbase.h" +#include "wx/html/helpfrm.h" +#include "wx/html/helpctrl.h" +#include "wx/config.h" + +// Settings common to both executables: determines whether +// we're using TCP/IP or real DDE. + +//#include "ddesetup.h" +//#define wxUSE_DDE_FOR_IPC 0 +#include + +#if defined(__WXGTK__) || defined(__WXMOTIF__) +#include "mondrian.xpm" +#endif + +#include "remhelp.h" +#include "client.h" + +// ---------------------------------------------------------------------------- +// wxWin macros +// ---------------------------------------------------------------------------- + +IMPLEMENT_APP(MyApp) + +BEGIN_EVENT_TABLE(MyFrame, wxFrame) +EVT_MENU(CLIENT_QUIT, MyFrame::OnExit) +EVT_MENU(CLIENT_HELPMAIN, MyFrame::OnHelp_Main) +EVT_MENU(CLIENT_HELPBOOK1, MyFrame::OnHelp_Book1) +EVT_MENU(CLIENT_HELPBOOK2, MyFrame::OnHelp_Book2) + +EVT_MENU(CLIENT_HELPINDEX, MyFrame::OnHelp_Index) +EVT_MENU(CLIENT_HELPCONTENTS, MyFrame::OnHelp_Contents) +EVT_MENU(CLIENT_HELPSEARCH, MyFrame::OnHelp_Search) +EVT_MENU(CLIENT_HELPTITLE, MyFrame::OnHelp_Title) +EVT_MENU(CLIENT_HELPADDBOOK, MyFrame::OnHelp_Addbook) +EVT_MENU(CLIENT_HELPTEMPDIR, MyFrame::OnHelp_Tempdir) +EVT_MENU(CLIENT_HELPQUIT, MyFrame::OnHelp_Quitserver) + +EVT_MENU(DIALOG_MODAL, MyFrame::ModalDlg) +EVT_BUTTON(BUTTON_MODAL, MyFrame::ModalDlg) +END_EVENT_TABLE() + +// ---------------------------------------------------------------------------- +// globals +// ---------------------------------------------------------------------------- + +wxListBox *the_list = NULL; + +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// MyApp +// ---------------------------------------------------------------------------- + +// The `main program' equivalent, creating the windows and returning the +// main frame +bool MyApp::OnInit() +{ + wxString a_appname, a_service, a_windowname, a_book; + + m_help = NULL; + + // for MSW (DDE classes), a_service is 'service name', apparently an arbitrary string + // for Unix, should be a valid file name (for a nonexistent file) + // for nonMSW, nonUnix, must be port number, for example "4242" (TCP/IP based classes) + // should be unique to the client app + a_service = "/tmp/wxWindows-helpconnection"; + //a_service = "4242"; + a_windowname = "HTML Help Test: %s"; + +#if defined(__WXMSW__) + a_appname = "helpview.exe"; +#else + a_appname = "./helpview"; +#endif + + //a_book = "helpfiles/testing.hhp"; + a_book = "test.zip"; + + wxConfig *conf = (wxConfig*) wxConfig::Get(); + +#if defined(USE_REMOTE) + m_help = new wxRemoteHtmlHelpController(); + m_help->SetServer( a_appname ); + m_help->SetService( a_service ); +#else + m_help = new wxHtmlHelpController(); +#endif + + //this is a dummy for wxRemoteHtmlHelpController + m_help->UseConfig(conf); + + m_help->AddBook( a_book ); + m_help->SetTitleFormat( a_windowname ); + + // Create the main frame window + MyFrame* frame = new MyFrame(NULL, "Help Client"); + frame->Show(TRUE); + + return TRUE; +} + +int MyApp::OnExit() +{ + delete m_help; + delete wxConfig::Set(NULL); + return 0; +} + +// Define my frame constructor +MyFrame::MyFrame(wxFrame *frame, const wxString& title) +: wxFrame(frame, -1, title, wxDefaultPosition, wxSize( 200, 100 ) ) +{ + m_panel = NULL; + + // Give it an icon + SetIcon(wxICON(mondrian)); + + // Make a menubar + wxMenu *file_menu = new wxMenu; + + file_menu->Append(CLIENT_HELPMAIN, "Help - Main"); + file_menu->Append(CLIENT_HELPBOOK1, "Help - Book1"); + file_menu->Append(CLIENT_HELPBOOK2, "Help - Book2"); + + file_menu->Append(CLIENT_HELPINDEX, "Help - DisplayIndex"); + file_menu->Append(CLIENT_HELPCONTENTS, "Help - DisplayContents"); + file_menu->Append(CLIENT_HELPSEARCH, "Help - KeywordSearch"); + file_menu->Append(CLIENT_HELPTITLE, "Help - SetTitleFormat"); + file_menu->Append(CLIENT_HELPADDBOOK, "Help - AddBook"); + file_menu->Append(CLIENT_HELPTEMPDIR, "Help - SetTempDir"); + file_menu->Append(CLIENT_HELPQUIT, "Help - Kill Server"); + + file_menu->Append(DIALOG_MODAL, "Modal dialog"); + file_menu->Append(CLIENT_QUIT, "Quit"); + + wxMenuBar *menu_bar = new wxMenuBar; + + menu_bar->Append(file_menu, "File"); + + // Associate the menu bar with the frame + SetMenuBar(menu_bar); + + // Make a panel + m_panel = new wxPanel(this ); + + m_modalbutton = new wxButton( this, BUTTON_MODAL, "Modal Dialog", + wxPoint(10,10), wxSize(-1, -1) ); +} + +void MyFrame::OnHelp_Book1(wxCommandEvent& event) +{ + wxGetApp().m_help->Display( "book1.htm" ); +} + +void MyFrame::OnHelp_Book2(wxCommandEvent& event) +{ + wxGetApp().m_help->Display( "book2.htm" ); +} + +void MyFrame::OnHelp_Main(wxCommandEvent& event) +{ + wxGetApp().m_help->Display( "main.htm" ); +} + +void MyFrame::OnHelp_Index(wxCommandEvent& event) +{ + wxGetApp().m_help->DisplayIndex( ); +} +void MyFrame::OnHelp_Contents(wxCommandEvent& event) +{ + wxGetApp().m_help->DisplayContents( ); +} + +void MyFrame::OnHelp_Search(wxCommandEvent& event) +{ + wxGetApp().m_help->KeywordSearch( "enjoy" ); +} +void MyFrame::OnHelp_Title(wxCommandEvent& event) +{ + wxGetApp().m_help->SetTitleFormat( "Another_Title: %s" ); +} +void MyFrame::OnHelp_Addbook(wxCommandEvent& event) +{ + wxGetApp().m_help->AddBook("helpfiles/another.hhp" ); +} +void MyFrame::OnHelp_Tempdir(wxCommandEvent& event) +{ + wxGetApp().m_help->SetTempDir( "tempdir" ); +} + +void MyFrame::OnHelp_Quitserver(wxCommandEvent& event) +{ + // if (!wxGetApp().m_help->m_connection->Poke( wxT("--YouAreDead"), wxT("") ) ) + // wxLogError(wxT("wxRemoteHtmlHelpController - YouAreDead Failed")); + + wxGetApp().m_help->Quit(); +} + +void MyFrame::OnExit(wxCommandEvent& event) +{ + Close(); +} + +void MyFrame::ModalDlg(wxCommandEvent& WXUNUSED(event)) +{ + MyModalDialog dlg(this); + dlg.ShowModal(); +} + +BEGIN_EVENT_TABLE(MyModalDialog, wxDialog) +EVT_BUTTON(-1, MyModalDialog::OnButton) +END_EVENT_TABLE() + +// ---------------------------------------------------------------------------- +// MyModalDialog +// ---------------------------------------------------------------------------- + +MyModalDialog::MyModalDialog(wxWindow *parent) +: wxDialog(parent, -1, wxString("Modal dialog")) +{ + wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); + + m_main = new wxButton(this, -1, "Main"); + m_book1 = new wxButton(this, -1, "Book1"); + m_book2 = new wxButton(this, -1, "Book2"); + sizerTop->Add(m_main, 0, wxALIGN_CENTER | wxALL, 5); + sizerTop->Add(m_book1, 0, wxALIGN_CENTER | wxALL, 5); + sizerTop->Add(m_book2, 0, wxALIGN_CENTER | wxALL, 5); + + SetAutoLayout(TRUE); + SetSizer(sizerTop); + + sizerTop->SetSizeHints(this); + sizerTop->Fit(this); + + m_main->SetFocus(); + m_main->SetDefault(); +} + +void MyModalDialog::OnButton(wxCommandEvent& event) +{ + if ( event.GetEventObject() == m_main ) + { + wxGetApp().m_help->Display( "main.htm" ); + } + else if ( event.GetEventObject() == m_book1 ) + { + wxGetApp().m_help->Display( "book1.htm" ); + } + else if ( event.GetEventObject() == m_book2 ) + { + wxGetApp().m_help->Display( "book2.htm" ); + } + else + { + event.Skip(); + } +} + diff --git a/utils/helpview/src/client.dsp b/utils/helpview/src/client.dsp new file mode 100644 index 0000000000..699c9969f2 --- /dev/null +++ b/utils/helpview/src/client.dsp @@ -0,0 +1,167 @@ +# Microsoft Developer Studio Project File - Name="htmlclient" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=htmlclient - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "client.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "client.mak" CFG="htmlclient - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "htmlclient - Win32 Release DLL" (based on "Win32 (x86) Application") +!MESSAGE "htmlclient - Win32 Debug DLL" (based on "Win32 (x86) Application") +!MESSAGE "htmlclient - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "htmlclient - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "htmlclient - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ReleaseDll" +# PROP BASE Intermediate_Dir "ReleaseDll" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdll /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "htmlclient - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DebugDll" +# PROP BASE Intermediate_Dir "DebugDll" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /D "WXUSINGDLL" /YX /FD /I../../..\lib\mswdlld /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "htmlclient - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MD /W4 /O2 /I "../../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /YX /FD /I../../..\lib\msw /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "NDEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\zlib.lib ../../..\lib\regex.lib ../../..\lib\png.lib ../../..\lib\jpeg.lib ../../..\lib\tiff.lib ../../..\lib\wxmsw.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "htmlclient - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W4 /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /YX /FD /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "../../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "__WXDEBUG__" /D WXDEBUG=1 /YX /FD /I../../..\lib\mswd /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /i "../../../include" /d "_DEBUG" +# ADD RSC /l 0x409 /i "../../../include" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\zlibd.lib ../../..\lib\regexd.lib ../../..\lib\pngd.lib ../../..\lib\jpegd.lib ../../..\lib\tiffd.lib ../../..\lib\wxmswd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "htmlclient - Win32 Release DLL" +# Name "htmlclient - Win32 Debug DLL" +# Name "htmlclient - Win32 Release" +# Name "htmlclient - Win32 Debug" +# Begin Source File + +SOURCE=.\client.cpp +# End Source File +# Begin Source File + +SOURCE=.\client.h +# End Source File +# Begin Source File + +SOURCE=.\client.rc +# End Source File +# Begin Source File + +SOURCE=.\remhelp.cpp +# End Source File +# Begin Source File + +SOURCE=.\remhelp.h +# End Source File +# End Target +# End Project diff --git a/utils/helpview/src/client.h b/utils/helpview/src/client.h new file mode 100644 index 0000000000..e5b919adb4 --- /dev/null +++ b/utils/helpview/src/client.h @@ -0,0 +1,87 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: client.h +// Purpose: Remote help sample client +// Author: Julian Smart +// Modified by: Eric Dowty +// Created: 2002-11-18 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// Define a new application +class MyApp: public wxApp +{ +public: + virtual bool OnInit(); + virtual int OnExit(); + +#if defined(USE_REMOTE) + wxRemoteHtmlHelpController *m_help; +#else + wxHtmlHelpController *m_help; +#endif +}; + +DECLARE_APP(MyApp) + +// Define a new frame +class MyFrame: public wxFrame +{ +public: + MyFrame(wxFrame *frame, const wxString& title); + +private: + void OnExit(wxCommandEvent& event); + + void OnHelp_Main(wxCommandEvent& event); + void OnHelp_Book1(wxCommandEvent& event); + void OnHelp_Book2(wxCommandEvent& event); + void OnHelp_Index(wxCommandEvent& event); + void OnHelp_Contents(wxCommandEvent& event); + void OnHelp_Search(wxCommandEvent& event); + void OnHelp_Title(wxCommandEvent& event); + void OnHelp_Addbook(wxCommandEvent& event); + void OnHelp_Tempdir(wxCommandEvent& event); + void OnHelp_Quitserver(wxCommandEvent& event); + + void ModalDlg(wxCommandEvent& event); + + wxPanel *m_panel; + wxButton *m_modalbutton; + + DECLARE_EVENT_TABLE() +}; + +class MyModalDialog : public wxDialog +{ +public: + MyModalDialog(wxWindow *parent); + +private: + void OnButton(wxCommandEvent& event); + + wxButton *m_main; + wxButton *m_book1; + wxButton *m_book2; + + DECLARE_EVENT_TABLE() +}; + + +#define CLIENT_QUIT wxID_EXIT +#define CLIENT_EXECUTE 2 +#define CLIENT_REQUEST 3 +#define CLIENT_POKE 4 +#define CLIENT_HELPMAIN 5 +#define CLIENT_HELPBOOK1 6 +#define CLIENT_HELPBOOK2 7 +#define DIALOG_MODAL 8 +#define BUTTON_MODAL 9 +#define CLIENT_HELPINDEX 10 +#define CLIENT_HELPCONTENTS 11 +#define CLIENT_HELPSEARCH 12 +#define CLIENT_HELPTITLE 13 +#define CLIENT_HELPADDBOOK 14 +#define CLIENT_HELPTEMPDIR 15 +#define CLIENT_HELPQUIT 16 diff --git a/utils/helpview/src/client.rc b/utils/helpview/src/client.rc new file mode 100644 index 0000000000..b86c4e2265 --- /dev/null +++ b/utils/helpview/src/client.rc @@ -0,0 +1 @@ +#include "wx/msw/wx.rc" diff --git a/utils/helpview/src/helpview.cpp b/utils/helpview/src/helpview.cpp index a3ab521e75..4020230846 100644 --- a/utils/helpview/src/helpview.cpp +++ b/utils/helpview/src/helpview.cpp @@ -43,57 +43,201 @@ protected: const wxSize& size); }; -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - - IMPLEMENT_APP(hvApp) +hvApp::hvApp() +{ +#if hvUSE_IPC + m_server = NULL; +#endif +} bool hvApp::OnInit() { #ifdef __WXMOTIF__ delete wxLog::SetActiveTarget(new wxLogStderr); // So dialog boxes aren't used #endif - + wxArtProvider::PushProvider(new AlternateArtProvider); - - wxInitAllImageHandlers(); - wxFileSystem::AddHandler(new wxZipFSHandler); - - SetVendorName("wxWindows"); - SetAppName("wxHTMLHelp"); - wxConfig::Get(); // create an instance - - help = new wxHtmlHelpController( - wxHF_DEFAULT_STYLE|wxHF_FLAT_TOOLBAR|wxHF_OPEN_FILES - ); - - help->SetTitleFormat(wxT("%s")); - if (argc < 2) { - if (!OpenBook(help)) - return FALSE; + + int istyle = wxHF_DEFAULT_STYLE; + + wxString service, windowName, book[10], titleFormat, argStr; + int bookCount = 0; + int i; + bool hasService = FALSE; + bool hasWindowName = FALSE; + bool createServer = FALSE; + +#if hvUSE_IPC + m_server = NULL; +#endif + + // Help books are recognized by extension ".hhp" ".htb" or ".zip". + // Service and window_name can occur anywhere in arguments, + // but service must be first + // Other arguments (topic?) could be added + + // modes of operation: + // 1) no arguments - stand alone, prompt user for book + // 2) books only - stand alone, open books + // 3) "--server" as (any) arg - start connection with default service; + // also open any books passed as other arguments + // 4) at least one argument which is not book, and not "--server" - take first + // such argument as service, second (if present) as window name, + // start service, open any books + + for( i=1; i < argc; i++ ) + { + argStr = argv[i]; + + if ( argStr.Find( wxT(".hhp") ) >= 0 || + argStr.Find( wxT(".htb") ) >= 0 || + argStr.Find( wxT(".zip") ) >= 0 ) { + book[bookCount] = argStr; + bookCount++; + } + else if ( argStr == wxT("--server") ) + { + createServer = TRUE; +#if defined(__WXMSW__) + service = wxT("generic_helpservice"); +#elif defined(__UNIX__) + service = wxT("/tmp/") + wxString(wxT("generic_helpservice")); +#else + service = wxT("4242"); +#endif + } + else if ( !hasService ) + { + service = argStr; + hasService = TRUE; + createServer = TRUE; + } + else if ( !hasWindowName ) + { + windowName = argStr; + hasWindowName = TRUE; + } + else if ( argStr.Find( wxT("--Style") ) >= 0 ) + { + long i; + wxString numb = argStr.AfterLast(wxT('e')); + if ( !(numb.ToLong(&i) ) ) + { + wxLogError( wxT("Integer conversion failed for --Style") ); + } + else + { + istyle = i; + } + } + else + { + //unknown - could be topic? + } } - - for (int i = 1; i < argc; i++) - help -> AddBook(argv[i]); - + + //no book - query user + if ( bookCount < 1 ) + { + wxString s = wxFileSelector( wxT("Open help file"), + wxGetCwd(), + wxEmptyString, + wxEmptyString, + wxT( + "Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|\ + HTML Help Project (*.hhp)|*.hhp"), + wxOPEN | wxFILE_MUST_EXIST, + NULL); + + if (!s.IsEmpty()) + { + book[0] = s; + bookCount = 1; + } + } + +#if hvUSE_IPC + + if ( createServer ) { + // Create a new server + m_server = new hvServer; + + if ( !m_server->Create(service) ) { + wxString wxm = wxT("Server Create failed - service: "); + wxString xxm = wxm << service; + wxLogError( xxm ); + //if MSW quits here, probably another copy already exists + return FALSE; + + } + createServer = FALSE; + } + +#endif // hvUSE_IPC + + //now add help + wxInitAllImageHandlers(); + wxFileSystem::AddHandler(new wxZipFSHandler); + + SetVendorName(wxT("wxWindows") ); + SetAppName(wxT("wxHTMLHelpServer") ); + wxConfig::Get(); // create an instance + + m_helpController = new wxHtmlHelpController( istyle ); + + if ( !hasWindowName ) + titleFormat = wxT("Help: %s") ; + else + { + //remove underscores + windowName.Replace( wxT("_"), wxT(" ") ); + titleFormat = windowName; + } + + m_helpController->SetTitleFormat( titleFormat ); + + for( i=0; i < bookCount; i++ ) + { + wxFileName fileName(book[i]); + m_helpController->AddBook(fileName); + } + #ifdef __WXMOTIF__ delete wxLog::SetActiveTarget(new wxLogGui); #endif - - help -> DisplayContents(); - + + m_helpController -> DisplayContents(); + return TRUE; } int hvApp::OnExit() { - delete help; +#if hvUSE_IPC + wxNode* node = m_connections.First(); + while (node) + { + wxNode* next = node->Next(); + hvConnection* connection = (hvConnection*) node->Data(); + connection->Disconnect(); + delete connection; + node = next; + } + m_connections.Clear(); + + if (m_server) + { + delete m_server; + m_server = NULL; + } +#endif + + delete m_helpController; delete wxConfig::Set(NULL); - + return 0; } @@ -104,18 +248,19 @@ bool hvApp::OpenBook(wxHtmlHelpController* controller) wxEmptyString, wxEmptyString, _( -"Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|\ -HTML Help Project (*.hhp)|*.hhp"), - wxOPEN | wxFILE_MUST_EXIST, - NULL); - + "Help books (*.htb)|*.htb|Help books (*.zip)|*.zip|\ + HTML Help Project (*.hhp)|*.hhp"), + wxOPEN | wxFILE_MUST_EXIST, + NULL); + if (!s.IsEmpty()) { wxString ext = s.Right(4).Lower(); if (ext == _T(".zip") || ext == _T(".htb") || ext == _T(".hhp")) { wxBusyCursor bcur; - controller->AddBook(s); + wxFileName fileName(s); + controller->AddBook(fileName); return TRUE; } } @@ -123,8 +268,8 @@ HTML Help Project (*.hhp)|*.hhp"), } /* - * Art provider class - */ +* Art provider class +*/ // --------------------------------------------------------------------- // helper macros @@ -132,48 +277,48 @@ HTML Help Project (*.hhp)|*.hhp"), // Standard macro for getting a resource from XPM file: #define ART(artId, xpmRc) \ - if ( id == artId ) return wxBitmap(xpmRc##_xpm); +if ( id == artId ) return wxBitmap(xpmRc##_xpm); // Compatibility hack to use wxApp::GetStdIcon of overriden by the user #if WXWIN_COMPATIBILITY_2_2 - #define GET_STD_ICON_FROM_APP(iconId) \ - if ( client == wxART_MESSAGE_BOX ) \ - { \ - wxIcon icon = wxTheApp->GetStdIcon(iconId); \ - if ( icon.Ok() ) \ - { \ - wxBitmap bmp; \ - bmp.CopyFromIcon(icon); \ - return bmp; \ - } \ - } +#define GET_STD_ICON_FROM_APP(iconId) \ + if ( client == wxART_MESSAGE_BOX ) \ +{ \ + wxIcon icon = wxTheApp->GetStdIcon(iconId); \ + if ( icon.Ok() ) \ +{ \ + wxBitmap bmp; \ + bmp.CopyFromIcon(icon); \ + return bmp; \ +} \ +} #else - #define GET_STD_ICON_FROM_APP(iconId) +#define GET_STD_ICON_FROM_APP(iconId) #endif // There are two ways of getting the standard icon: either via XPMs or via // wxIcon ctor. This depends on the platform: #if defined(__WXUNIVERSAL__) - #define CREATE_STD_ICON(iconId, xpmRc) return wxNullBitmap; +#define CREATE_STD_ICON(iconId, xpmRc) return wxNullBitmap; #elif defined(__WXGTK__) || defined(__WXMOTIF__) - #define CREATE_STD_ICON(iconId, xpmRc) return wxBitmap(xpmRc##_xpm); +#define CREATE_STD_ICON(iconId, xpmRc) return wxBitmap(xpmRc##_xpm); #else - #define CREATE_STD_ICON(iconId, xpmRc) \ - { \ - wxIcon icon(_T(iconId)); \ - wxBitmap bmp; \ - bmp.CopyFromIcon(icon); \ - return bmp; \ - } +#define CREATE_STD_ICON(iconId, xpmRc) \ +{ \ + wxIcon icon(_T(iconId)); \ + wxBitmap bmp; \ + bmp.CopyFromIcon(icon); \ + return bmp; \ +} #endif // Macro used in CreateBitmap to get wxICON_FOO icons: #define ART_MSGBOX(artId, iconId, xpmRc) \ if ( id == artId ) \ - { \ - GET_STD_ICON_FROM_APP(iconId) \ - CREATE_STD_ICON(#iconId, xpmRc) \ - } +{ \ + GET_STD_ICON_FROM_APP(iconId) \ + CREATE_STD_ICON(#iconId, xpmRc) \ +} // --------------------------------------------------------------------- // XPMs with the art @@ -205,26 +350,148 @@ wxBitmap AlternateArtProvider::CreateBitmap(const wxArtID& id, const wxSize& WXUNUSED(size)) { ART(wxART_HELP_SIDE_PANEL, helpsidepanel) - ART(wxART_HELP_SETTINGS, helpoptions) - ART(wxART_HELP_BOOK, helpbook) - ART(wxART_HELP_FOLDER, helpbook) - ART(wxART_HELP_PAGE, helppage) - //ART(wxART_ADD_BOOKMARK, addbookm) - //ART(wxART_DEL_BOOKMARK, delbookm) - ART(wxART_GO_BACK, helpback) - ART(wxART_GO_FORWARD, helpforward) - ART(wxART_GO_UP, helpup) - ART(wxART_GO_DOWN, helpdown) - ART(wxART_GO_TO_PARENT, helpuplevel) - ART(wxART_FILE_OPEN, helpopen) - if (client == wxART_HELP_BROWSER) - { - ART(wxART_FRAME_ICON, helpicon) - } - - //ART(wxART_GO_HOME, home) - - // Any wxWindows icons not implemented here - // will be provided by the default art provider. - return wxNullBitmap; + ART(wxART_HELP_SETTINGS, helpoptions) + ART(wxART_HELP_BOOK, helpbook) + ART(wxART_HELP_FOLDER, helpbook) + ART(wxART_HELP_PAGE, helppage) + //ART(wxART_ADD_BOOKMARK, addbookm) + //ART(wxART_DEL_BOOKMARK, delbookm) + ART(wxART_GO_BACK, helpback) + ART(wxART_GO_FORWARD, helpforward) + ART(wxART_GO_UP, helpup) + ART(wxART_GO_DOWN, helpdown) + ART(wxART_GO_TO_PARENT, helpuplevel) + ART(wxART_FILE_OPEN, helpopen) + if (client == wxART_HELP_BROWSER) + { + //ART(wxART_FRAME_ICON, helpicon) + ART(wxART_HELP, helpicon) + } + + //ART(wxART_GO_HOME, home) + + // Any wxWindows icons not implemented here + // will be provided by the default art provider. + return wxNullBitmap; } + +#if hvUSE_IPC + +wxConnectionBase *hvServer::OnAcceptConnection(const wxString& topic) +{ + if (topic == wxT("HELP")) + return new hvConnection(); + else + return NULL; +} + +// ---------------------------------------------------------------------------- +// hvConnection +// ---------------------------------------------------------------------------- + +hvConnection::hvConnection() +: wxConnection() +{ + wxGetApp().GetConnections().Append(this); +} + +hvConnection::~hvConnection() +{ + wxGetApp().GetConnections().DeleteObject(this); +} + +bool hvConnection::OnExecute(const wxString& WXUNUSED(topic), + wxChar *data, + int WXUNUSED(size), + wxIPCFormat WXUNUSED(format)) +{ + // wxLogStatus("Execute command: %s", data); + + if ( !wxStrncmp( data, wxT("--intstring"), 11 ) ) + { + long i; + wxString argStr = data; + wxString numb = argStr.AfterLast(wxT('g')); + if ( !(numb.ToLong(&i) ) ) { + wxLogError( wxT("Integer conversion failed for --intstring") ); + } + else { + wxGetApp().GetHelpController()->Display(int(i)); + } + } + else + { + wxGetApp().GetHelpController()->Display(data); + } + + return TRUE; +} + +bool hvConnection::OnPoke(const wxString& WXUNUSED(topic), + const wxString& item, + wxChar *data, + int WXUNUSED(size), + wxIPCFormat WXUNUSED(format)) +{ + // wxLogStatus("Poke command: %s = %s", item.c_str(), data); + //topic is not tested + + if ( wxGetApp().GetHelpController() ) + { + if ( item == wxT("--AddBook") ) + { + wxGetApp().GetHelpController()->AddBook(data); + } + else if ( item == wxT("--DisplayContents") ) + { + wxGetApp().GetHelpController()->DisplayContents(); + } + else if ( item == wxT("--DisplayIndex") ) + { + wxGetApp().GetHelpController()->DisplayIndex(); + } + else if ( item == wxT("--KeywordSearch") ) + { + wxGetApp().GetHelpController()->KeywordSearch(data); + } + else if ( item == wxT("--SetTitleFormat") ) + { + wxString newname = data; + newname.Replace( wxT("_"), wxT(" ") ); + wxGetApp().GetHelpController()->SetTitleFormat(newname); + //does not redraw title bar? + //wxGetApp().GetHelpController()->ReFresh(); - or something + } + else if ( item == wxT("--SetTempDir") ) + { + wxGetApp().GetHelpController()->SetTempDir(data); + } + else if ( item == wxT("--YouAreDead") ) + { + // don't really know how to kill app from down here... + // use wxKill from client instead + //wxWindow *win = wxTheApp->GetTopWindow(); + //if ( win ) + // win->Destroy(); + } + } + + return TRUE; +} + +wxChar *hvConnection::OnRequest(const wxString& WXUNUSED(topic), + const wxString& WXUNUSED(item), + int * WXUNUSED(size), + wxIPCFormat WXUNUSED(format)) +{ + return NULL; +} + +bool hvConnection::OnStartAdvise(const wxString& WXUNUSED(topic), + const wxString& WXUNUSED(item)) +{ + return TRUE; +} + +#endif + // hvUSE_IPC diff --git a/utils/helpview/src/helpview.dsp b/utils/helpview/src/helpview.dsp index 9300b9df44..e5633dee2a 100644 --- a/utils/helpview/src/helpview.dsp +++ b/utils/helpview/src/helpview.dsp @@ -55,7 +55,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw233.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw240.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "htmlhelpview - Win32 Debug DLL" @@ -81,7 +81,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib ../../..\lib\wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "htmlhelpview - Win32 Release" diff --git a/utils/helpview/src/helpview.h b/utils/helpview/src/helpview.h index d4f90414ce..e49a93031a 100644 --- a/utils/helpview/src/helpview.h +++ b/utils/helpview/src/helpview.h @@ -16,27 +16,83 @@ #pragma interface "help.cpp" #endif -// Define a new application type, each program should derive a class from wxApp +#define hvVERSION 1.02 + +// If 1, start a server to allow this to be used +// as an external help viewer. +#if defined(__WXMAC__) && !defined(__UNIX__) +#define hvUSE_IPC 0 +#else +#define hvUSE_IPC 1 +#endif + +#if hvUSE_IPC +#include + +class hvConnection; +class hvServer; +#endif + +/*! + * The helpview application class. + */ + class hvApp : public wxApp { - public: - // override base class virtuals - // ---------------------------- +public: + hvApp(); - // this one is called on application startup and is a good place for the app - // initialization (doing it here and not in the ctor allows to have an error - // return: if OnInit() returns false, the application terminates) + /// Initialise the application. + virtual bool OnInit(); - virtual bool OnInit(); - virtual int OnExit(); + /// Clean up the application's data. + virtual int OnExit(); + + /// Prompt the user for a book to open + bool OpenBook(wxHtmlHelpController* controller); - // Prompt the user for a book to open - bool OpenBook(wxHtmlHelpController* controller); + /// Returns the help controller. + wxHtmlHelpController* GetHelpController() { return m_helpController; } - private: - wxHtmlHelpController *help; +#if hvUSE_IPC + /// Returns the list of connections. + wxList& GetConnections() { return m_connections; } +#endif + +private: + wxHtmlHelpController* m_helpController; + +#if hvUSE_IPC + wxList m_connections; + hvServer* m_server; +#endif + }; +#if hvUSE_IPC +class hvConnection : public wxConnection +{ +public: + hvConnection(); + ~hvConnection(); + + bool OnExecute(const wxString& topic, wxChar*data, int size, wxIPCFormat format); + wxChar *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format); + bool OnPoke(const wxString& topic, const wxString& item, wxChar *data, int size, wxIPCFormat format); + bool OnStartAdvise(const wxString& topic, const wxString& item); + +private: +}; + +class hvServer: public wxServer +{ +public: + wxConnectionBase *OnAcceptConnection(const wxString& topic); +}; + + +#endif + #endif // _WX_HELPVIEW_H_ diff --git a/utils/helpview/src/readme.txt b/utils/helpview/src/readme.txt new file mode 100644 index 0000000000..45a5b724c3 --- /dev/null +++ b/utils/helpview/src/readme.txt @@ -0,0 +1,35 @@ +The HTML help client-server pair sample consists of three parts: + +1) The Client, derived from Client from the IPC samples and now containing wxRemoteHtmlHelpController +2) The Server, derived from helpview - the app is called helpview +3) The sample help files, specifically called by the Client, which are from the HTML/Help sample + +Normally, the Client is started first, and it will in turn start up the Server (helpview) the first time help is requested with Display. If the Server is to be started first, the default service name ("generic_helpservice" for MSW, "/tmp/generic_helpservice" for Unix or "4242" otherwise) should be used for the connection in the client. + +It is assumed that there will be one copy of the server for each app which uses help. Depending on the OS, it may be possible to use different instances of the same server, or even to use one instance of the server (probably not a good idea) to service more than one app requesting help. + +At the moment, if a connection has been established and if the client is killed, the server is also killed. If the client is started up again, it will use the same connection. + +If USE_REMOTE in client.cpp is undefined, the "client" app will use wxHtmlHelpController instead of wxRemoteHtmlHelpController, that is the remote server will not be used. In MSW, this results in freezing of the help window when called from a modal dialog. In GTK, the window is not frozen, but it must be closed before you can return to the app itself. + +------------------------------------------------ +wxRemoteHtmlHelpController Class + +This class can be added to an application (the client) to provide wxWindows HTML help. It will start up the remote help controller (helpview) the first time the Display member function is called, passing the server the connection name or port number, the name of the help window and the help book (.hhp, .htb, .zip). This class will only work with a particular server app, helpview. + +Most of the functions of wxHtmlHelpController are available - the relevant arguments are just passed to wxHtmlHelpController in the server. The functions involving wxConfig are not implemented - the config parameters (font, windows size and position) are kept in the server. + +Use the members SetServer and SetService to pass the name of the server app and service name or port. This must be done before the first call to the Display member function, or defaults will be used. The default server app is "helpview" and default service depends on the platform: for MSW it is "appname_helpservice" (a service name string); for UNIX platforms it is "/tmp/appname_helpservice" (a file name) and otherwise it is "4242" (a TCP/IP port number), where "appname" is the name of the application without extension. + +A wxRemoteHtmlHelpController can be created in wxApp::OnInit, or some high level window like a mainframe. It should be deleted explicitly, for example in wxApp::OnExit, or else the various connection objects are deleted in the wrong order. Using a wxRemoteHtmlHelpController member of wxApp does not work because of problems on exit. + +This has been tested on wxMSW and wxGTK. It does not work on wxMac because the connection classes, as well as wxExecute, are not fully supported. + +---------------------------------------------- + +Changes to helpview sample + +The constructor now tests the command-line arguments, looking first for help books (containing .hhp, .htb, .zip). Then it looks for "--server". If arguments not falling in these categories are present, they are taken to be 1) the service name or 2) the window name (see wxRemoteHtmlHelpController for the meaning of service name). + +The client passes most functions of wxHtmlHelpController, with argument, to helpview using wxConnection::Poke. The string for the Display function is passed with wxConnection::Execute. + diff --git a/utils/helpview/src/remhelp.cpp b/utils/helpview/src/remhelp.cpp new file mode 100644 index 0000000000..a1d7f23630 --- /dev/null +++ b/utils/helpview/src/remhelp.cpp @@ -0,0 +1,409 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: remhelp.cpp +// Purpose: Remote help controller class +// Author: Eric Dowty +// Modified by: +// Created: 2002-11-18 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma implementation remhelp.h +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +#include + +#include "wx/process.h" +#include "wx/confbase.h" + +// Settings common to both executables: determines whether +// we're using TCP/IP or real DDE. + +//#include "ddesetup.h" +//#define wxUSE_DDE_FOR_IPC 0 + +#if defined(__WXGTK__) || defined(__WXMOTIF__) +#include "mondrian.xpm" +#endif + +#include "remhelp.h" +#include "client.h" + +#if !defined(USE_REMOTE) +#include +#endif + +////////////////// +////////////////// +// helper classes + +rhhcClient::rhhcClient( bool *isconn_a ) +{ + isconn_2 = isconn_a; +} + +wxConnectionBase *rhhcClient::OnMakeConnection() +{ + return new rhhcConnection( isconn_2 ); +} + +rhhcConnection::rhhcConnection( bool *isconn_a ) +: wxConnection() +{ + isconn_3 = isconn_a; + *isconn_3 = TRUE; +} + +rhhcConnection::~rhhcConnection() +{ + *isconn_3 = FALSE; +} + +bool rhhcConnection::OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) +{ + return TRUE; +} + +bool rhhcConnection::OnDisconnect() +{ + *isconn_3 = FALSE; + + return wxConnection::OnDisconnect(); +} + +////////////////////////////////////////// +///////////////////////////////////////// + +// wxRemoteHtmlHelpController class + +IMPLEMENT_CLASS(wxRemoteHtmlHelpController, wxHelpControllerBase) + +wxRemoteHtmlHelpController::wxRemoteHtmlHelpController(int style ) +{ + m_style = style; + m_connection = NULL; + m_client = NULL; + m_pid = 0; + isconn_1 = FALSE; + m_process = NULL; + + // defaults + // + // server app is assumed to be local + // + // for MSW (DDE classes), a_service is 'service name', apparently an arbitrary string + // for Unix, should be a valid file name (for a nonexistent file) + // for nonMSW, nonUnix, must be port number, for example "4242" (TCP/IP based classes) + // should be unique to the client app + + wxString thename = wxGetApp().GetAppName(); +#if defined(__WXMSW__) + m_appname = wxT("helpview.exe"); + m_service = thename + wxString(wxT("_helpservice")); +#elif defined(__UNIX__) + m_appname = wxT("./helpview"); + m_service = wxT("/tmp/") + thename + wxString(wxT("_helpservice")); +#else + m_appname = wxT("./helpview"); + m_service = wxT("4242"); +#endif + + m_book = thename + wxT(".hhp"); // or .htb or .zip + m_windowname = thename + wxT(" Help: %s"); + //underscores for spaces + m_windowname.Replace( wxT(" "), wxT("_") ); +} + +void wxRemoteHtmlHelpController::SetService(wxString& a_service) +{ + m_service = a_service; +} +void wxRemoteHtmlHelpController::SetServer(wxString& a_appname) +{ + m_appname = a_appname; +} + +void wxRemoteHtmlHelpController::OnQuit() +{ + //kill the Server here? + //this function is not called ? +} + +wxRemoteHtmlHelpController::~wxRemoteHtmlHelpController() +{ + if ( isconn_1 ) + { + //if (!m_connection->Poke( wxT("--YouAreDead"), wxT("") ) ) + // wxLogError(wxT("wxRemoteHtmlHelpController - YouAreDead Failed")); + + // Kill the server. This could be an option. + Quit(); + + m_connection->Disconnect(); + delete m_connection; + + delete m_process; + m_process = NULL; + } + if( m_client ) + delete m_client; //should be automatic? + +} + +bool wxRemoteHtmlHelpController::DoConnection() +{ + wxString cmd, blank; + int nsleep; + + blank = wxT(" "); + + // ignored under DDE, host name in TCP/IP based classes + wxString hostName = wxT("localhost"); + + // Create a new client + if( !m_client ) m_client = new rhhcClient(&isconn_1); + + nsleep = 0; + + // suppress the log messages from MakeConnection() + { + wxLogNull nolog; + + //first try to connect assuming server is running + if( !isconn_1 ) + m_connection = (rhhcConnection *)m_client->MakeConnection(hostName, m_service, wxT("HELP") ); + + //if not, start server + if( !isconn_1 ) { + + wxString stylestr; + stylestr.Printf( wxT("--Style%d"), m_style ); + + cmd = m_appname + blank + m_service + blank + m_windowname + blank + m_book + blank + stylestr; + + m_process = new wxProcess(NULL); + m_pid = wxExecute( cmd, FALSE, m_process ); + // leaks - wxExecute itself (if not deleted) and in wxExecute at + // wxExecuteData *data = new wxExecuteData; + if( m_pid <= 0 ) { + wxLogError( wxT("wxRemoteHtmlHelpController - Failed to start Help server") ); + return FALSE; + } + } + + while ( !isconn_1 ) + { + //try every second for a while, then leave it to user + wxSleep(1); + if( nsleep > 4 ) { + if ( wxMessageBox( wxT("Failed to make connection to Help server.\nRetry?") , + wxT("wxRemoteHtmlHelpController Error"), + wxICON_ERROR | wxYES_NO | wxCANCEL ) != wxYES ) + { + // no server + return FALSE; + } + } + nsleep++; + + m_connection = (rhhcConnection *)m_client->MakeConnection(hostName, m_service, wxT("HELP") ); + } + } + + if (!m_connection->StartAdvise(wxT("Item"))) { + wxLogError(wxT("wxRemoteHtmlHelpController - StartAdvise failed") ); + return FALSE; + } + + return TRUE; +} + +bool wxRemoteHtmlHelpController::LoadFile(const wxString& WXUNUSED(file)) +{ + return TRUE; +} +bool wxRemoteHtmlHelpController::DisplaySection(int sectionNo) +{ + Display(sectionNo); + return TRUE; +} +bool wxRemoteHtmlHelpController::DisplayBlock(long blockNo) +{ + return DisplaySection((int)blockNo); +} + +bool wxRemoteHtmlHelpController::Quit() +{ + //this code from exec sample - branches left in for testing + // sig = 3, 6, 9 or 12 all kill server with no apparent problem + // but give error message on MSW - timout? + int sig = 15; //3 = quit; 6 = abort; 9 = kill; 15 = terminate + + /* + switch ( sig ) + { + default: + wxFAIL_MSG( _T("unexpected return value") ); + // fall through + + case -1: + // cancelled + return FALSE; + + case wxSIGNONE: + case wxSIGHUP: + case wxSIGINT: + case wxSIGQUIT: + case wxSIGILL: + case wxSIGTRAP: + case wxSIGABRT: + case wxSIGEMT: + case wxSIGFPE: + case wxSIGKILL: + case wxSIGBUS: + case wxSIGSEGV: + case wxSIGSYS: + case wxSIGPIPE: + case wxSIGALRM: + case wxSIGTERM: + break; + } + */ + + if ( sig == 0 ) + { + if ( wxProcess::Exists(m_pid) ) + wxLogStatus(_T("Process %ld is running."), m_pid); + else + wxLogStatus(_T("No process with pid = %ld."), m_pid); + } + else // not SIGNONE + { + wxKillError rc = wxProcess::Kill(m_pid, (wxSignal)sig); + if ( rc == wxKILL_OK ) + { + wxLogStatus(_T("Process %ld killed with signal %d."), m_pid, sig); + } + else + { + static const wxChar *errorText[] = + { + _T(""), // no error + _T("signal not supported"), + _T("permission denied"), + _T("no such process"), + _T("unspecified error"), + }; + + // sig = 3, 6, 9 or 12 all kill server with no apparent problem + // but give error message on MSW - timout? + // + //wxLogError(_T("Failed to kill process %ld with signal %d: %s"), + // m_pid, sig, errorText[rc]); + } + } + + + return TRUE; +} + +void wxRemoteHtmlHelpController::Display(const wxString& helpfile) +{ + if( !isconn_1 ) { + if( !DoConnection() ) return; + } + + if (!m_connection->Execute( helpfile, -1 ) ) + wxLogError(wxT("wxRemoteHtmlHelpController - Display Failed")); + +} + +void wxRemoteHtmlHelpController::Display(const int id) +{ + if( !isconn_1 ) { + if( !DoConnection() ) return; + } + + wxString intstring; + intstring.Printf( "--intstring%d", id ); + + if (!m_connection->Execute( intstring, -1 ) ) + wxLogError(wxT("wxRemoteHtmlHelpController - Display Failed")); + +} + +bool wxRemoteHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg) +{ + //ignore show_wait_msg - there shouldn't be a delay in this step + //show_wait_msg = TRUE could be transmitted with ++AddBook + m_book = book; + + if( isconn_1 ) { + if (!m_connection->Poke( wxT("--AddBook"), (char*)book.c_str() ) ) + wxLogError(wxT("wxRemoteHtmlHelpController - AddBook Failed")); + return FALSE; + } + + return TRUE; +} + +bool wxRemoteHtmlHelpController::DisplayContents() +{ + if( isconn_1 ) { + if (!m_connection->Poke( wxT("--DisplayContents"), wxT("") ) ) { + wxLogError(wxT("wxRemoteHtmlHelpController - DisplayContents Failed")); + return FALSE; + } + } + return TRUE; +} +void wxRemoteHtmlHelpController::DisplayIndex() +{ + if( isconn_1 ) { + if (!m_connection->Poke( wxT("--DisplayIndex"), wxT("") ) ) + wxLogError(wxT("wxRemoteHtmlHelpController - DisplayIndex Failed")); + } +} +bool wxRemoteHtmlHelpController::KeywordSearch(const wxString& keyword) +{ + if( isconn_1 ) { + if (!m_connection->Poke( wxT("--KeywordSearch"), (char*)keyword.c_str() ) ) { + wxLogError(wxT("wxRemoteHtmlHelpController - KeywordSearch Failed")); + return FALSE; + } + } + return TRUE; +} + +void wxRemoteHtmlHelpController::SetTitleFormat(const wxString& format) +{ + m_windowname = format; + m_windowname.Replace( wxT(" "), wxT("_") ); + + if( isconn_1 ) { + if (!m_connection->Poke( wxT("--SetTitleFormat"), (char*)format.c_str() ) ) + wxLogError(wxT("wxRemoteHtmlHelpController - SetTitleFormat Failed")); + } +} + +void wxRemoteHtmlHelpController::SetTempDir(const wxString& path) +{ + if( isconn_1 ) { + if (!m_connection->Poke( wxT("--SetTempDir"), (char*)path.c_str() ) ) + wxLogError(wxT("wxRemoteHtmlHelpController - SetTempDir Failed")); + } +} + diff --git a/utils/helpview/src/remhelp.h b/utils/helpview/src/remhelp.h new file mode 100644 index 0000000000..b5cdd853fa --- /dev/null +++ b/utils/helpview/src/remhelp.h @@ -0,0 +1,97 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: remhelp.h +// Purpose: Remote help controller class +// Author: Eric Dowty +// Modified by: +// Created: 2002-11-18 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma interface remhelp.h +#endif + +#ifndef _WX_REMHELP_H_ +#define _WX_REMHELP_H_ + +#include +#include +#include + +class WXDLLEXPORT wxConfigBase; + +class rhhcConnection : public wxConnection +{ +public: + rhhcConnection(bool *isconn_a); + ~rhhcConnection(); + + bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format); + bool OnDisconnect(); + bool *isconn_3; + +}; + +class rhhcClient: public wxClient +{ +public: + rhhcClient(bool *isconn_a); + //~rhhcClient( ); + wxConnectionBase *OnMakeConnection(); + bool *isconn_2; +}; + +class wxRemoteHtmlHelpController : public wxHelpControllerBase +{ + DECLARE_CLASS(wxRemoteHtmlHelpController) +public: + wxRemoteHtmlHelpController(int style = wxHF_DEFAULT_STYLE); + ~wxRemoteHtmlHelpController(); + void OnQuit(void); + + void SetService(wxString& a_service); + void SetServer(wxString& a_appname); //could be wxHelpController::SetViewer + + //standard wxHtmlHelpController functions + bool AddBook(const wxString& book, bool show_wait_msg = FALSE); + void Display(const wxString& x); + void Display(const int id); + bool DisplayContents(); + void DisplayIndex(); + bool KeywordSearch(const wxString& keyword); + void SetTempDir(const wxString& path); + void SetTitleFormat(const wxString& format); + + //dummies - config is in server + void UseConfig(wxConfigBase* config, const wxString& rootpath = wxEmptyString) {}; + void ReadCustomization(wxConfigBase* cfg, wxString path = wxEmptyString) {}; + void WriteCustomization(wxConfigBase* cfg, wxString path = wxEmptyString) {}; + + //virtuals from wxHelpControllerBase - not in wxHtmlHelpController + //won't compile without these + bool LoadFile(const class wxString &); //dummy + bool DisplaySection(int); + bool DisplayBlock(long); + bool Quit(void); + +private: + void OnExit(wxCommandEvent& event); + bool DoConnection(); + + rhhcConnection *m_connection; + rhhcClient *m_client; + wxProcess *m_process; + + int m_pid; + int m_style; + wxString m_appname; + wxString m_service; + wxString m_windowname; + wxString m_book; + bool isconn_1; +}; + +#endif + // _WX_REMHELP_H_ diff --git a/utils/tex2rtf/docs/tex2rtf.hpj b/utils/tex2rtf/docs/tex2rtf.hpj index 29fcd8b21b..4c6c663509 100644 --- a/utils/tex2rtf/docs/tex2rtf.hpj +++ b/utils/tex2rtf/docs/tex2rtf.hpj @@ -1,5 +1,5 @@ [OPTIONS] -BMROOT=c:\wx2dev\wxWind~1\utils\tex2rtf\docs ; Assume that bitmaps are where the source is +BMROOT=c:\wx24\wxwind~1\utils\tex2rtf\docs ; Assume that bitmaps are where the source is TITLE=Tex2RTF CONTENTS=Contents COMPRESS=HIGH diff --git a/utils/tex2rtf/src/Tex2RTFVC.dsp b/utils/tex2rtf/src/Tex2RTFVC.dsp index 18b448e46b..78a88065f6 100644 --- a/utils/tex2rtf/src/Tex2RTFVC.dsp +++ b/utils/tex2rtf/src/Tex2RTFVC.dsp @@ -108,7 +108,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/tex2rtf.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/tex2rtf.exe" /pdbtype:sept /libpath:"../../../lib" /libpath:"../../../contrib/lib" !ELSEIF "$(CFG)" == "Tex2RTFVC - Win32 Release DLL" diff --git a/utils/tex2rtf/src/htmlutil.cpp b/utils/tex2rtf/src/htmlutil.cpp index ea8b6efc2e..1029c30603 100644 --- a/utils/tex2rtf/src/htmlutil.cpp +++ b/utils/tex2rtf/src/htmlutil.cpp @@ -191,7 +191,7 @@ void ReopenFile(FILE **fd, char **fileName) else sprintf(buf, "%s%d.html", FileRoot, fileId); if (*fileName) delete[] *fileName; - *fileName = copystring(FileNameFromPath(buf)); + *fileName = copystring(wxFileNameFromPath(buf)); *fd = fopen(buf, "w"); fprintf(*fd, "\n"); } @@ -426,13 +426,13 @@ void AddBrowseButtons(char *upLabel, char *upFilename, if (truncateFilenames) { char buf1[80]; - strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot))); + strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot))); sprintf(buf, "\n%s ", buf1, ConvertCase("htm"), contentsReference); } else { char buf1[80]; - strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot))); + strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot))); sprintf(buf, "\n%s ", buf1, ConvertCase("_contents.html"), contentsReference); } // TexOutput(""); @@ -585,13 +585,16 @@ char *ParseColourString(char *bkStr, bool *isPicture) void OutputFont(void) { - // Output <FONT FACE=...> - TexOutput("<FONT FACE=\""); + // Only output <font face> if explicitly requested by htmlFaceName= directive in + // tex2rtf.ini. Otherwise do NOT set the font because we want to use browser's + // default font: if (htmlFaceName) - TexOutput(htmlFaceName); - else - TexOutput("Times New Roman"); - TexOutput("\">\n"); + { + // Output <FONT FACE=...> + TexOutput("<FONT FACE=\""); + TexOutput(htmlFaceName); + TexOutput("\">\n"); + } } // Output start of <BODY> block @@ -708,9 +711,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start) char titleBuf[200]; if (truncateFilenames) - sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot)); else - sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot)); fprintf(Chapters, "<A NAME=\"%s\"></A>", topicName); @@ -2708,9 +2711,9 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) char titleBuf[150]; if (truncateFilenames) - sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot)); else - sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot)); HTMLHead(); TexOutput("<title>"); @@ -2919,7 +2922,7 @@ bool HTMLGo(void) OnError("Cannot open output file!"); return FALSE; } - AddTexRef("contents", FileNameFromPath(TitlepageName), ContentsNameString); + AddTexRef("contents", wxFileNameFromPath(TitlepageName), ContentsNameString); fprintf(Contents, "<P><P><H2>%s</H2><P><P>\n", ContentsNameString); @@ -3003,7 +3006,7 @@ bool HTMLGo(void) if (contentsString) fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", contentsString); else - fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", FileNameFromPath(FileRoot)); + fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", wxFileNameFromPath(FileRoot)); } // Output frame information @@ -3017,8 +3020,8 @@ bool HTMLGo(void) fprintf(tmpTitle, "<FRAMESET COLS=\"30%%,70%%\">\n"); - fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(FileNameFromPath(contentsFrameName))); - fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(FileNameFromPath(firstFileName))); + fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(wxFileNameFromPath(contentsFrameName))); + fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(wxFileNameFromPath(firstFileName))); fprintf(tmpTitle, "</FRAMESET>\n"); fprintf(tmpTitle, "<NOFRAMES>\n"); @@ -3049,7 +3052,7 @@ bool HTMLGo(void) fprintf(tmpTitle, "\n</HTML>\n"); fclose(tmpTitle); - if (FileExists(TitlepageName)) wxRemoveFile(TitlepageName); + if (wxFileExists(TitlepageName)) wxRemoveFile(TitlepageName); if (!wxRenameFile("title.tmp", TitlepageName)) { wxCopyFile("title.tmp", TitlepageName); @@ -3062,7 +3065,7 @@ bool HTMLGo(void) if (lastTopic) delete[] lastTopic; lastTopic = NULL; - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); + if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName); if (!wxRenameFile(TmpContentsName, ContentsName)) { @@ -3147,11 +3150,11 @@ void GenerateHTMLWorkshopFiles(char *fname) "Default topic=%s\n" "Index file=%s.hhk\n" "Title=", - FileNameFromPath(fname), - FileNameFromPath(fname), - FileNameFromPath(fname), - FileNameFromPath(TitlepageName), - FileNameFromPath(fname) + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(TitlepageName), + wxFileNameFromPath(fname) ); if (DocumentTitle) { @@ -3162,19 +3165,19 @@ void GenerateHTMLWorkshopFiles(char *fname) fprintf(f, "\n\n[WINDOWS]\n" "%sHelp=,\"%s.hhc\",\"%s.hhk\",\"%s\",,,,,,0x2420,,0x380e,,,,,0,,,", - FileNameFromPath(fname), - FileNameFromPath(fname), - FileNameFromPath(fname), - FileNameFromPath(TitlepageName)); + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(TitlepageName)); fprintf(f, "\n\n[FILES]\n"); - fprintf(f, "%s\n", FileNameFromPath(TitlepageName)); + fprintf(f, "%s\n", wxFileNameFromPath(TitlepageName)); for (int i = 1; i <= fileId; i++) { if (truncateFilenames) - sprintf(buf, "%s%d.htm", FileNameFromPath(FileRoot), i); + sprintf(buf, "%s%d.htm", wxFileNameFromPath(FileRoot), i); else - sprintf(buf, "%s%d.html", FileNameFromPath(FileRoot), i); + sprintf(buf, "%s%d.html", wxFileNameFromPath(FileRoot), i); fprintf(f, "%s\n", buf); } fclose(f); @@ -3278,7 +3281,7 @@ void HTMLWorkshopStartContents() "<LI> <OBJECT type=\"text/sitemap\">\n" "<param name=\"Local\" value=\"%s\">\n" "<param name=\"Name\" value=\"Contents\">\n</OBJECT>\n", - FileNameFromPath(TitlepageName) + wxFileNameFromPath(TitlepageName) ); } diff --git a/utils/tex2rtf/src/makengui.nt b/utils/tex2rtf/src/makengui.nt index a4de8c23ca..4526561d62 100644 --- a/utils/tex2rtf/src/makengui.nt +++ b/utils/tex2rtf/src/makengui.nt @@ -11,7 +11,7 @@ # of Tex2RTF, so I set off to give it a try... I found out it would crash # when submitted to a certain LaTeX file I created. I wanted to find out why, # so I went on and worked on compiling on my PC: Windows NT 4.0 beta, Visual -# C++ 4.1a. Since all I was interested on was the convertion utility, I tried +# C++ 4.1a. Since all I was interested on was the conversion utility, I tried # to make it work without a GUI. It didn't compile immediately, but after a # few small changes it now works like a charm. Unfortunately it doesn't crash # anymore, so I can't tell why it used to... Anyway, I wanted to contribute diff --git a/utils/tex2rtf/src/rtfutils.cpp b/utils/tex2rtf/src/rtfutils.cpp index d475d96931..e4e08c30bb 100644 --- a/utils/tex2rtf/src/rtfutils.cpp +++ b/utils/tex2rtf/src/rtfutils.cpp @@ -527,7 +527,7 @@ bool WriteHPJ(char *filename) StripExtension(hpjFilename); strcat(hpjFilename, ".hpj"); - strcpy(helpFile, FileNameFromPath(filename)); + strcpy(helpFile, wxFileNameFromPath(filename)); StripExtension(helpFile); strcpy(rtfFile, helpFile); strcat(helpFile, ".hlp"); @@ -1195,7 +1195,7 @@ void RTFOnMacro(int macroId, int no_args, bool start) fprintf(Chapters, "!{\\footnote DisableButton(\"Up\")}\n"); else fprintf(Chapters, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), "Contents"); + wxFileNameFromPath(FileRoot), "Contents"); } } @@ -1350,12 +1350,12 @@ void RTFOnMacro(int macroId, int no_args, bool start) if (DocumentStyle == LATEX_ARTICLE) { fprintf(Sections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), "Contents"); + wxFileNameFromPath(FileRoot), "Contents"); } else if (CurrentChapterName) { fprintf(Sections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), CurrentChapterName); + wxFileNameFromPath(FileRoot), CurrentChapterName); } } } @@ -1501,7 +1501,7 @@ void RTFOnMacro(int macroId, int no_args, bool start) if (useUpButton && CurrentSectionName) { fprintf(Subsections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), CurrentSectionName); + wxFileNameFromPath(FileRoot), CurrentSectionName); } } if (!winHelp && indexSubsections && useWord) @@ -1647,7 +1647,7 @@ void RTFOnMacro(int macroId, int no_args, bool start) if (useUpButton && CurrentSubsectionName) { fprintf(Subsubsections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), CurrentSubsectionName); + wxFileNameFromPath(FileRoot), CurrentSubsectionName); } } if (!winHelp && indexSubsections && useWord) @@ -4897,7 +4897,7 @@ bool RTFOnArgument(int macroId, int arg_no, bool start) if (useUpButton) { fprintf(Chapters, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), "Contents"); + wxFileNameFromPath(FileRoot), "Contents"); } } @@ -5247,7 +5247,7 @@ bool RTFGo(void) { wxConcatFiles("header.rtf", "chapters.rtf", "tmp1.rtf"); Tex2RTFYield(TRUE); - if (FileExists(OutputFile)) + if (wxFileExists(OutputFile)) wxRemoveFile(OutputFile); char *cwdStr; @@ -5273,7 +5273,7 @@ bool RTFGo(void) wxRemoveFile("tmp1.rtf"); } - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); + if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName); if (!wxRenameFile(TmpContentsName, ContentsName)) { diff --git a/utils/tex2rtf/src/tex2any.cpp b/utils/tex2rtf/src/tex2any.cpp index 2fcb1d64ef..64fee2941b 100644 --- a/utils/tex2rtf/src/tex2any.cpp +++ b/utils/tex2rtf/src/tex2any.cpp @@ -146,7 +146,7 @@ char *followedLinkColourString = NULL; bool combineSubSections = FALSE; bool htmlWorkshopFiles = FALSE; bool ignoreBadRefs = FALSE; -char *htmlFaceName = copystring("Times New Roman"); +char *htmlFaceName = NULL; extern int passNumber; @@ -750,7 +750,7 @@ bool read_a_line(char *buf) fileNameStr.Replace("\\", ""); // Ignore some types of input files (e.g. macro definition files) - char *fileOnly = FileNameFromPath((char*) (const char*) fileNameStr); + char *fileOnly = wxFileNameFromPath((char*) (const char*) fileNameStr); currentFileName = fileOnly; if (IgnorableInputFiles.Member(fileOnly)) return read_a_line(buf); diff --git a/utils/tex2rtf/src/tex2any.h b/utils/tex2rtf/src/tex2any.h index 102dd98508..d194288402 100644 --- a/utils/tex2rtf/src/tex2any.h +++ b/utils/tex2rtf/src/tex2any.h @@ -173,6 +173,10 @@ int GetCurrentColumn(void); // number of characters on current line char *ConvertCase(char *s); // Convert case, according to upperCaseNames setting. extern wxPathList TexPathList; // Path list, can be used for file searching. +#if !WXWIN_COMPATIBILITY_2 +extern bool StringMatch(const wxChar *one, const wxChar *two, bool subString = TRUE, bool exact = FALSE); +#endif + // Define a variable value from the .ini file char *RegisterSetting(char *settingName, char *settingValue, bool interactive = TRUE); diff --git a/utils/tex2rtf/src/tex2rtf.cpp b/utils/tex2rtf/src/tex2rtf.cpp index ba4c550700..281acafa0c 100644 --- a/utils/tex2rtf/src/tex2rtf.cpp +++ b/utils/tex2rtf/src/tex2rtf.cpp @@ -330,7 +330,7 @@ bool MyApp::OnInit() if (InputFile) { - sprintf(buf, "Tex2RTF [%s]", FileNameFromPath(InputFile)); + sprintf(buf, "Tex2RTF [%s]", wxFileNameFromPath(InputFile)); frame->SetTitle(buf); } @@ -967,7 +967,7 @@ bool Go(void) if (InputFile && OutputFile) { - if (!FileExists(InputFile)) + if (!wxFileExists(InputFile)) { OnError("Cannot open input file!"); TexCleanUp(); diff --git a/utils/tex2rtf/src/texutils.cpp b/utils/tex2rtf/src/texutils.cpp index 3c159839a9..be0c83a28c 100644 --- a/utils/tex2rtf/src/texutils.cpp +++ b/utils/tex2rtf/src/texutils.cpp @@ -36,6 +36,7 @@ #else #include <iostream> #include <fstream> +using namespace std; #endif #include <ctype.h> @@ -1143,7 +1144,7 @@ char *RegisterSetting(char *settingName, char *settingValue, bool interactive) else if (StringMatch(settingName, "authorFontSize", FALSE, TRUE)) StringToInt(settingValue, &authorFont); else if (StringMatch(settingName, "ignoreInput", FALSE, TRUE)) - IgnorableInputFiles.Add(FileNameFromPath(settingValue)); + IgnorableInputFiles.Add(wxFileNameFromPath(settingValue)); else if (StringMatch(settingName, "mirrorMargins", FALSE, TRUE)) mirrorMargins = StringTobool(settingValue); else if (StringMatch(settingName, "runTwice", FALSE, TRUE)) @@ -1671,3 +1672,25 @@ char *ConvertCase(char *s) buf[i] = 0; return buf; } + +#if !WXWIN_COMPATIBILITY_2 +// if substring is TRUE, search for str1 in str2 +bool StringMatch(const wxChar *str1, const wxChar *str2, bool subString, + bool exact) +{ + if (subString) + { + wxString Sstr1(str1); + wxString Sstr2(str2); + if (!exact) + { + Sstr1.MakeUpper(); + Sstr2.MakeUpper(); + } + return Sstr2.Index(Sstr1) != wxNOT_FOUND; + } + else + return exact ? wxString(str2).Cmp(str1) == 0 : + wxString(str2).CmpNoCase(str1) == 0; +} +#endif diff --git a/utils/tex2rtf/src/xlputils.cpp b/utils/tex2rtf/src/xlputils.cpp index 8b82f5ac7a..217f0416c9 100644 --- a/utils/tex2rtf/src/xlputils.cpp +++ b/utils/tex2rtf/src/xlputils.cpp @@ -1195,7 +1195,7 @@ bool XLPGo(void) fclose(Subsubsections); Subsubsections = NULL; fclose(Index); Index = NULL; - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); + if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName); if (!wxRenameFile(TmpContentsName, ContentsName)) { diff --git a/utils/tex2rtf/tools/suppresswarnings.sh b/utils/tex2rtf/tools/suppresswarnings.sh new file mode 100644 index 0000000000..07078c807b --- /dev/null +++ b/utils/tex2rtf/tools/suppresswarnings.sh @@ -0,0 +1,3 @@ +# Suppresses some of the more common warnings + +lacheck $1 | sed -e "/possible unwanted/d;/you may need/d;/TAB characyer/d;/Use \`/d;/missing \`\\\/d;/Dots/d;/Whitespace/d" diff --git a/utils/wxprop/src/prop.cpp b/utils/wxprop/src/prop.cpp deleted file mode 100644 index 59802962de..0000000000 --- a/utils/wxprop/src/prop.cpp +++ /dev/null @@ -1,1119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prop.cpp -// Purpose: Propert sheet classes implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "prop.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include <ctype.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include <strstrea.h> -#else -#include <strstream.h> -#endif -#else -#include <strstream> -#endif - -#include "wx/window.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "prop.h" - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyValue, wxObject) - -wxPropertyValue::wxPropertyValue(void) -{ - m_type = wxPropertyValueNull; - m_next = NULL; - m_last = NULL; - m_value.first = NULL; - m_clientData = NULL; - m_modifiedFlag = FALSE; -} - -wxPropertyValue::wxPropertyValue(const wxPropertyValue& copyFrom) -{ - m_modifiedFlag = FALSE; - Copy((wxPropertyValue& )copyFrom); -} - -wxPropertyValue::wxPropertyValue(const char *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueString; - - m_value.string = copystring(val); - m_clientData = NULL; - m_next = NULL; - m_last = NULL; -} - -wxPropertyValue::wxPropertyValue(const wxString& val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueString; - - m_value.string = copystring((const char *)val); - m_clientData = NULL; - m_next = NULL; - m_last = NULL; -} - -wxPropertyValue::wxPropertyValue(long the_integer) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueInteger; - m_value.integer = the_integer; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(bool val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValuebool; - m_value.integer = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(float the_real) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueReal; - m_value.real = the_real; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(double the_real) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueReal; - m_value.real = (float)the_real; - m_clientData = NULL; - m_next = NULL; -} - -// Pointer versions: we have a pointer to the real C++ value. -wxPropertyValue::wxPropertyValue(char **val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueStringPtr; - - m_value.stringPtr = val; - m_clientData = NULL; - m_next = NULL; - m_last = NULL; -} - -wxPropertyValue::wxPropertyValue(long *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueIntegerPtr; - m_value.integerPtr = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(bool *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueboolPtr; - m_value.boolPtr = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(float *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueRealPtr; - m_value.realPtr = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(wxList *the_list) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueList; - m_clientData = NULL; - m_last = NULL; - m_value.first = NULL; - - wxNode *node = the_list->First(); - while (node) - { - wxPropertyValue *expr = (wxPropertyValue *)node->Data(); - Append(expr); - node = node->Next(); - } - - delete the_list; -} - -wxPropertyValue::wxPropertyValue(wxStringList *the_list) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueList; - m_clientData = NULL; - m_last = NULL; - m_value.first = NULL; - - wxNode *node = the_list->First(); - while (node) - { - char *s = (char *)node->Data(); - Append(new wxPropertyValue(s)); - node = node->Next(); - } - delete the_list; -} - -wxPropertyValue::~wxPropertyValue(void) -{ - switch (m_type) - { - case wxPropertyValueInteger: - case wxPropertyValuebool: - case wxPropertyValueReal: - { - break; - } - case wxPropertyValueString: - { - delete[] m_value.string; - break; - } - case wxPropertyValueList: - { - wxPropertyValue *expr = m_value.first; - while (expr) - { - wxPropertyValue *expr1 = expr->m_next; - - delete expr; - expr = expr1; - } - break; - } - default: - case wxPropertyValueNull: break; - } -} - -void wxPropertyValue::Append(wxPropertyValue *expr) -{ - m_modifiedFlag = TRUE; - if (!m_value.first) - m_value.first = expr; - - if (m_last) - m_last->m_next = expr; - m_last = expr; -} - -void wxPropertyValue::Insert(wxPropertyValue *expr) -{ - m_modifiedFlag = TRUE; - expr->m_next = m_value.first; - m_value.first = expr; - - if (!m_last) - m_last = expr; -} - -// Delete from list -void wxPropertyValue::Delete(wxPropertyValue *node) -{ - wxPropertyValue *expr = GetFirst(); - - wxPropertyValue *previous = NULL; - while (expr && (expr != node)) - { - previous = expr; - expr = expr->GetNext(); - } - - if (expr) - { - if (previous) - previous->m_next = expr->m_next; - - // If node was the first in the list, - // make the list point to the NEXT one. - if (GetFirst() == expr) - { - m_value.first = expr->m_next; - } - - // If node was the last in the list, - // make the list 'last' pointer point to the PREVIOUS one. - if (GetLast() == expr) - { - if (previous) - m_last = previous; - else - m_last = NULL; - } - m_modifiedFlag = TRUE; - delete expr; - } - -} - -void wxPropertyValue::ClearList(void) -{ - wxPropertyValue *val = GetFirst(); - if (val) - m_modifiedFlag = TRUE; - - while (val) - { - wxPropertyValue *next = val->GetNext(); - delete val; - val = next; - } - m_value.first = NULL; - m_last = NULL; -} - -wxPropertyValue *wxPropertyValue::NewCopy(void) const -{ - switch (m_type) - { - case wxPropertyValueInteger: - return new wxPropertyValue(m_value.integer); - case wxPropertyValuebool: - return new wxPropertyValue((bool) (m_value.integer != 0)); - case wxPropertyValueReal: - return new wxPropertyValue(m_value.real); - case wxPropertyValueString: - return new wxPropertyValue(m_value.string); - case wxPropertyValueList: - { - wxPropertyValue *expr = m_value.first; - wxPropertyValue *new_list = new wxPropertyValue; - new_list->SetType(wxPropertyValueList); - while (expr) - { - wxPropertyValue *expr2 = expr->NewCopy(); - new_list->Append(expr2); - expr = expr->m_next; - } - return new_list; - } - case wxPropertyValueIntegerPtr: - return new wxPropertyValue(m_value.integerPtr); - case wxPropertyValueRealPtr: - return new wxPropertyValue(m_value.realPtr); - case wxPropertyValueboolPtr: - return new wxPropertyValue(m_value.boolPtr); - case wxPropertyValueStringPtr: - return new wxPropertyValue(m_value.stringPtr); - - case wxPropertyValueNull: -#ifdef __X__ - cerr << "Should never get here!\n"; -#endif - break; - } - return NULL; -} - -void wxPropertyValue::Copy(wxPropertyValue& copyFrom) -{ - m_type = copyFrom.Type(); - - switch (m_type) - { - case wxPropertyValueInteger: - (*this) = copyFrom.IntegerValue(); - return ; - - case wxPropertyValueReal: - (*this) = copyFrom.RealValue(); - return ; - - case wxPropertyValueString: - (*this) = wxString(copyFrom.StringValue()); - return ; - - case wxPropertyValuebool: - (*this) = copyFrom.BoolValue(); - return ; - - // Pointers - case wxPropertyValueboolPtr: - (*this) = copyFrom.BoolValuePtr(); - return ; - case wxPropertyValueRealPtr: - (*this) = copyFrom.RealValuePtr(); - return ; - case wxPropertyValueIntegerPtr: - (*this) = copyFrom.IntegerValuePtr(); - return ; - case wxPropertyValueStringPtr: - { - char** s = copyFrom.StringValuePtr(); - (*this) = s != 0; - return ; - } - - case wxPropertyValueList: - { - m_value.first = NULL; - m_next = NULL; - m_last = NULL; - wxPropertyValue *expr = copyFrom.m_value.first; - while (expr) - { - wxPropertyValue *expr2 = expr->NewCopy(); - Append(expr2); - expr = expr->m_next; - } - return; - } - case wxPropertyValueNull: -#ifdef __X__ - cerr << "Should never get here!\n"; -#endif - break; - } -} - -// Return nth argument of a clause (starting from 1) -wxPropertyValue *wxPropertyValue::Arg(wxPropertyValueType type, int arg) const -{ - wxPropertyValue *expr = m_value.first; - for (int i = 1; i < arg; i++) - if (expr) - expr = expr->m_next; - - if (expr && (expr->m_type == type)) - return expr; - else - return NULL; -} - -// Return nth argument of a list expression (starting from zero) -wxPropertyValue *wxPropertyValue::Nth(int arg) const -{ - if (m_type != wxPropertyValueList) - return NULL; - - wxPropertyValue *expr = m_value.first; - for (int i = 0; i < arg; i++) - if (expr) - expr = expr->m_next; - else return NULL; - - if (expr) - return expr; - else - return NULL; -} - - // Returns the number of elements in a list expression -int wxPropertyValue::Number(void) const -{ - if (m_type != wxPropertyValueList) - return 0; - - int i = 0; - wxPropertyValue *expr = m_value.first; - while (expr) - { - expr = expr->m_next; - i ++; - } - return i; -} - -void wxPropertyValue::WritePropertyClause(ostream& stream) // Write this expression as a top-level clause -{ - if (m_type != wxPropertyValueList) - return; - - wxPropertyValue *node = m_value.first; - if (node) - { - node->WritePropertyType(stream); - stream << "("; - node = node->m_next; - bool first = TRUE; - while (node) - { - if (!first) - stream << " "; - node->WritePropertyType(stream); - node = node->m_next; - if (node) stream << ",\n"; - first = FALSE; - } - stream << ").\n\n"; - } -} - -void wxPropertyValue::WritePropertyType(ostream& stream) // Write as any other subexpression -{ - switch (m_type) - { - case wxPropertyValueInteger: - { - stream << m_value.integer; - break; - } - case wxPropertyValueIntegerPtr: - { - stream << *m_value.integerPtr; - break; - } - case wxPropertyValuebool: - { - if (m_value.integer) - stream << "True"; - else - stream << "False"; - break; - } - case wxPropertyValueboolPtr: - { - if (*m_value.integerPtr) - stream << "True"; - else - stream << "False"; - break; - } - case wxPropertyValueReal: - { - float f = m_value.real; - sprintf(wxBuffer, "%.6g", (double)f); - stream << wxBuffer; - break; - } - case wxPropertyValueRealPtr: - { - float f = *m_value.realPtr; -/* Now the parser can cope with this. - // Prevent printing in 'e' notation. Any better way? - if (fabs(f) < 0.00001) - f = 0.0; -*/ - sprintf(wxBuffer, "%.6g", f); - stream << wxBuffer; - break; - } - case wxPropertyValueString: - { -// stream << "\""; - int i; - int len = strlen(m_value.string); - for (i = 0; i < len; i++) - { - char ch = m_value.string[i]; -// if (ch == '"' || ch == '\\') -// stream << "\\"; - stream << ch; - } - -// stream << "\""; - break; - } - case wxPropertyValueStringPtr: - { - int i; - int len = strlen(*(m_value.stringPtr)); - for (i = 0; i < len; i++) - { - char ch = *(m_value.stringPtr)[i]; - - } - break; - } - case wxPropertyValueList: - { - if (!m_value.first) - stream << "[]"; - else - { - wxPropertyValue *expr = m_value.first; - - stream << "["; - while (expr) - { - expr->WritePropertyType(stream); - expr = expr->m_next; - if (expr) stream << ", "; - } - stream << "]"; - } - break; - } - case wxPropertyValueNull: break; - } -} - -wxString wxPropertyValue::GetStringRepresentation(void) -{ - char buf[500]; - buf[0] = 0; - - ostrstream str((char *)buf, (int)500, ios::out); - WritePropertyType(str); - str << '\0'; - str.flush(); - - wxString theString(buf); - return theString; -} - -void wxPropertyValue::operator=(const wxPropertyValue& val) -{ - m_modifiedFlag = TRUE; - Copy((wxPropertyValue&)val); -} - -// void wxPropertyValue::operator=(const char *val) -void wxPropertyValue::operator=(const wxString& val1) -{ - const char *val = (const char *)val1; - - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValueString; - - if (m_type == wxPropertyValueString) - { - if (val) - m_value.string = copystring(val); - else - m_value.string = NULL; - } - else if (m_type == wxPropertyValueStringPtr) - { - if (*m_value.stringPtr) - delete[] *m_value.stringPtr; - if (val) - *m_value.stringPtr = copystring(val); - else - *m_value.stringPtr = NULL; - } - - m_clientData = NULL; - m_next = NULL; - m_last = NULL; - -} - -void wxPropertyValue::operator=(const long val) -{ - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValueInteger; - - if (m_type == wxPropertyValueInteger) - m_value.integer = val; - else if (m_type == wxPropertyValueIntegerPtr) - *m_value.integerPtr = val; - else if (m_type == wxPropertyValueReal) - m_value.real = (float)val; - else if (m_type == wxPropertyValueRealPtr) - *m_value.realPtr = (float)val; - - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const bool val) -{ - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValuebool; - - if (m_type == wxPropertyValuebool) - m_value.integer = (long)val; - else if (m_type == wxPropertyValueboolPtr) - *m_value.boolPtr = val; - - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const float val) -{ - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValueReal; - - if (m_type == wxPropertyValueInteger) - m_value.integer = (long)val; - else if (m_type == wxPropertyValueIntegerPtr) - *m_value.integerPtr = (long)val; - else if (m_type == wxPropertyValueReal) - m_value.real = val; - else if (m_type == wxPropertyValueRealPtr) - *m_value.realPtr = val; - - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const char **val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueStringPtr; - - if (val) - m_value.stringPtr = (char **)val; - else - m_value.stringPtr = NULL; - m_clientData = NULL; - m_next = NULL; - m_last = NULL; - -} - -void wxPropertyValue::operator=(const long *val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueIntegerPtr; - m_value.integerPtr = (long *)val; - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const bool *val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueboolPtr; - m_value.boolPtr = (bool *)val; - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const float *val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueRealPtr; - m_value.realPtr = (float *)val; - m_clientData = NULL; - m_next = NULL; -} - -long wxPropertyValue::IntegerValue(void) const - { - if (m_type == wxPropertyValueInteger) - return m_value.integer; - else if (m_type == wxPropertyValueReal) - return (long)m_value.real; - else if (m_type == wxPropertyValueIntegerPtr) - return *m_value.integerPtr; - else if (m_type == wxPropertyValueRealPtr) - return (long)(*m_value.realPtr); - else return 0; - } - -long *wxPropertyValue::IntegerValuePtr(void) const -{ - return m_value.integerPtr; -} - -float wxPropertyValue::RealValue(void) const { - if (m_type == wxPropertyValueReal) - return m_value.real; - else if (m_type == wxPropertyValueRealPtr) - return *m_value.realPtr; - else if (m_type == wxPropertyValueInteger) - return (float)m_value.integer; - else if (m_type == wxPropertyValueIntegerPtr) - return (float)*(m_value.integerPtr); - else return 0.0; - } - -float *wxPropertyValue::RealValuePtr(void) const -{ - return m_value.realPtr; -} - -bool wxPropertyValue::BoolValue(void) const { - if (m_type == wxPropertyValueReal) - return (m_value.real != 0.0); - if (m_type == wxPropertyValueRealPtr) - return (*(m_value.realPtr) != 0.0); - else if (m_type == wxPropertyValueInteger) - return (m_value.integer != 0); - else if (m_type == wxPropertyValueIntegerPtr) - return (*(m_value.integerPtr) != 0); - else if (m_type == wxPropertyValuebool) - return (m_value.integer != 0); - else if (m_type == wxPropertyValueboolPtr) - return (*(m_value.boolPtr) != 0); - else return FALSE; - } - -bool *wxPropertyValue::BoolValuePtr(void) const -{ - return m_value.boolPtr; -} - -char *wxPropertyValue::StringValue(void) const { - if (m_type == wxPropertyValueString) - return m_value.string; - else if (m_type == wxPropertyValueStringPtr) - return *(m_value.stringPtr); - else return NULL; - } - -char **wxPropertyValue::StringValuePtr(void) const -{ - return m_value.stringPtr; -} - -/* - * A property (name plus value) - */ - -IMPLEMENT_DYNAMIC_CLASS(wxProperty, wxObject) - -wxProperty::wxProperty(void) -{ - m_propertyRole = (char *)NULL; - m_propertyValidator = NULL; - m_propertyWindow = NULL; - m_enabled = TRUE; -} - -wxProperty::wxProperty(wxProperty& copyFrom) -{ - m_value = copyFrom.GetValue(); - m_name = copyFrom.GetName(); - m_propertyRole = copyFrom.GetRole(); - m_propertyValidator = copyFrom.GetValidator(); - m_enabled = copyFrom.IsEnabled(); - m_propertyWindow = NULL; -} - -wxProperty::wxProperty(wxString nm, wxString role, wxPropertyValidator *ed):m_name(nm), m_propertyRole(role) -{ - m_propertyValidator = ed; - m_propertyWindow = NULL; - m_enabled = TRUE; -} - -wxProperty::wxProperty(wxString nm, const wxPropertyValue& val, wxString role, wxPropertyValidator *ed): - m_name(nm), m_value(val), m_propertyRole(role) -{ - m_propertyValidator = ed; - m_propertyWindow = NULL; - m_enabled = TRUE; -} - -wxProperty::~wxProperty(void) -{ - if (m_propertyValidator) - delete m_propertyValidator; -} - -wxPropertyValue& wxProperty::GetValue(void) const -{ - return (wxPropertyValue&) m_value; -} - -wxPropertyValidator *wxProperty::GetValidator(void) const -{ - return m_propertyValidator; -} - -wxString& wxProperty::GetName(void) const -{ - return (wxString&) m_name; -} - -wxString& wxProperty::GetRole(void) const -{ - return (wxString&) m_propertyRole; -} - -void wxProperty::SetValue(const wxPropertyValue& val) -{ - m_value = val; -} - -void wxProperty::SetValidator(wxPropertyValidator *ed) -{ - m_propertyValidator = ed; -} - -void wxProperty::SetRole(wxString& role) -{ - m_propertyRole = role; -} - -void wxProperty::SetName(wxString& nm) -{ - m_name = nm; -} - -void wxProperty::operator=(const wxPropertyValue& val) -{ - m_value = val; -} - -/* - * Base property view class - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyView, wxEvtHandler) - -wxPropertyView::wxPropertyView(long flags) -{ - m_buttonFlags = flags; - m_propertySheet = NULL; - m_currentValidator = NULL; - m_currentProperty = NULL; -} - -wxPropertyView::~wxPropertyView(void) -{ -} - -void wxPropertyView::AddRegistry(wxPropertyValidatorRegistry *registry) -{ - m_validatorRegistryList.Append(registry); -} - -wxPropertyValidator *wxPropertyView::FindPropertyValidator(wxProperty *property) -{ - if (property->GetValidator()) - return property->GetValidator(); - - wxNode *node = m_validatorRegistryList.First(); - while (node) - { - wxPropertyValidatorRegistry *registry = (wxPropertyValidatorRegistry *)node->Data(); - wxPropertyValidator *validator = registry->GetValidator(property->GetRole()); - if (validator) - return validator; - node = node->Next(); - } - return NULL; -/* - if (!wxDefaultPropertyValidator) - wxDefaultPropertyValidator = new wxPropertyListValidator; - return wxDefaultPropertyValidator; -*/ -} - -/* - * Property sheet - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertySheet, wxObject) - -wxPropertySheet::wxPropertySheet(void):m_properties(wxKEY_STRING) -{ -} - -wxPropertySheet::~wxPropertySheet(void) -{ - Clear(); -} - -bool wxPropertySheet::Save( ostream& WXUNUSED(str) ) -{ - return FALSE; -} - -bool wxPropertySheet::Load( ostream& WXUNUSED(str) ) -{ - return FALSE; -} - -void wxPropertySheet::UpdateAllViews( wxPropertyView *WXUNUSED(thisView) ) -{ -} - -// Add a property -void wxPropertySheet::AddProperty(wxProperty *property) -{ - m_properties.Append((const char*) property->GetName(), property); -} - -// Get property by name -wxProperty *wxPropertySheet::GetProperty(wxString name) -{ - wxNode *node = m_properties.Find((const char*) name); - if (!node) - return NULL; - else - return (wxProperty *)node->Data(); -} - -// Clear all properties -void wxPropertySheet::Clear(void) -{ - wxNode *node = m_properties.First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - wxNode *next = node->Next(); - delete prop; - delete node; - node = next; - } -} - -// Sets/clears the modified flag for each property value -void wxPropertySheet::SetAllModified(bool flag) -{ - wxNode *node = m_properties.First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - prop->GetValue().SetModified(flag); - node = node->Next(); - } -} - -/* - * Property validator registry - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyValidatorRegistry, wxHashTable) - -wxPropertyValidatorRegistry::wxPropertyValidatorRegistry(void):wxHashTable(wxKEY_STRING) -{ -} - -wxPropertyValidatorRegistry::~wxPropertyValidatorRegistry(void) -{ - ClearRegistry(); -} - -void wxPropertyValidatorRegistry::RegisterValidator(const wxString& typeName, wxPropertyValidator *validator) -{ - Put((const char*) typeName, validator); -} - -wxPropertyValidator *wxPropertyValidatorRegistry::GetValidator(const wxString& typeName) -{ - return (wxPropertyValidator *)Get((const char*) typeName); -} - -void wxPropertyValidatorRegistry::ClearRegistry(void) -{ - BeginFind(); - wxNode *node; - while (node = Next()) - { - delete (wxPropertyValidator *)node->Data(); - } -} - - /* - * Property validator - */ - - -IMPLEMENT_ABSTRACT_CLASS(wxPropertyValidator, wxEvtHandler) - -wxPropertyValidator::wxPropertyValidator(long flags) -{ - m_validatorFlags = flags; - m_validatorProperty = NULL; -} - -wxPropertyValidator::~wxPropertyValidator(void) -{} - -bool wxPropertyValidator::StringToFloat (char *s, float *number) { - double num; - bool ok = StringToDouble (s, &num); - *number = (float) num; - return ok; -} - -bool wxPropertyValidator::StringToDouble (char *s, double *number) { - bool ok = TRUE; - char *value_ptr; - *number = strtod (s, &value_ptr); - if (value_ptr) { - int len = strlen (value_ptr); - for (int i = 0; i < len; i++) { - ok = (isspace (value_ptr[i]) != 0); - if (!ok) return FALSE; - } - } - return ok; -} - -bool wxPropertyValidator::StringToInt (char *s, int *number) { - long num; - bool ok = StringToLong (s, &num); - *number = (int) num; - return ok; -} - -bool wxPropertyValidator::StringToLong (char *s, long *number) { - bool ok = TRUE; - char *value_ptr; - *number = strtol (s, &value_ptr, 10); - if (value_ptr) { - int len = strlen (value_ptr); - for (int i = 0; i < len; i++) { - ok = (isspace (value_ptr[i]) != 0); - if (!ok) return FALSE; - } - } - return ok; -} - -char *wxPropertyValidator::FloatToString (float number) { - static char buf[20]; - sprintf (buf, "%.6g", number); - return buf; -} - -char *wxPropertyValidator::DoubleToString (double number) { - static char buf[20]; - sprintf (buf, "%.6g", number); - return buf; -} - -char *wxPropertyValidator::IntToString (int number) { - return ::IntToString (number); -} - -char *wxPropertyValidator::LongToString (long number) { - return ::LongToString (number); - } - - diff --git a/utils/wxrc/Makefile.in b/utils/wxrc/Makefile.in index 9685e6f172..b20802bbb0 100644 --- a/utils/wxrc/Makefile.in +++ b/utils/wxrc/Makefile.in @@ -9,7 +9,7 @@ PROGRAM=wxrc OBJECTS=wxrc.o -APPEXTRALIBS=$(top_builddir)/lib/libwxxrc.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRALIBS=$(top_builddir)/lib/lib@WX_LIBRARY_BASENAME@_xrc-@WX_RELEASE@.@WX_TARGET_LIBRARY_TYPE@ APPEXTRADEFS=-I$(top_srcdir)/contrib/include include $(top_builddir)/src/makeprog.env diff --git a/utils/wxrc/makefile.wat b/utils/wxrc/makefile.wat index 4a5d318872..ac1ff9c3fa 100644 --- a/utils/wxrc/makefile.wat +++ b/utils/wxrc/makefile.wat @@ -4,10 +4,12 @@ # WXDIR = $(%WXWIN) +EXTRACPPFLAGS = -I$(WXDIR)\contrib\include +THISDIR = $(WXDIR)\contrib\utils\wxrc PROGRAM = wxrc -EXTRALIBS = $(WXDIR)\lib\wxxrc.lib -OBJECTS = $(PROGRAM).obj +EXTRALIBS = $(WXDIR)\lib\wxxrc_w.lib +OBJECTS = $(OUTPUTDIR)\$(PROGRAM).obj !include $(WXDIR)\src\makeprog.wat diff --git a/utils/wxrc/wxRcVC.dsp b/utils/wxrc/wxRcVC.dsp index 24ae29e1e7..de7b0fea24 100644 --- a/utils/wxrc/wxRcVC.dsp +++ b/utils/wxrc/wxRcVC.dsp @@ -110,7 +110,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxrc.exe" /pdbtype:sept /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/wxrc.exe" /pdbtype:sept /libpath:"..\..\..\lib" !ELSEIF "$(CFG)" == "wxRcVC - Win32 Release DLL" @@ -137,7 +137,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw233.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxrc.exe" /libpath:"..\..\..\lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw240.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/wxrc.exe" /libpath:"..\..\..\lib" !ENDIF diff --git a/utils/wxrc/wxrc.cpp b/utils/wxrc/wxrc.cpp index 23b27952a7..82ec56fbd3 100644 --- a/utils/wxrc/wxrc.cpp +++ b/utils/wxrc/wxrc.cpp @@ -84,18 +84,18 @@ int XmlResApp::OnRun() { static const wxCmdLineEntryDesc cmdLineDesc[] = { - { wxCMD_LINE_SWITCH, "h", "help", "show help message", + { wxCMD_LINE_SWITCH, _T("h"), _T("help"), _T("show help message"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, - { wxCMD_LINE_SWITCH, "v", "verbose", "be verbose" }, - { wxCMD_LINE_SWITCH, "c", "cpp-code", "output C++ source rather than .rsc file" }, - { wxCMD_LINE_SWITCH, "p", "python-code", "output wxPython source rather than .rsc file" }, - { wxCMD_LINE_SWITCH, "g", "gettext", "output list of translatable strings (to stdout or file if -o used)" }, - { wxCMD_LINE_OPTION, "n", "function", "C++/Python function name (with -c or -p) [InitXmlResource]" }, - { wxCMD_LINE_OPTION, "o", "output", "output file [resource.xrs/cpp]" }, + { wxCMD_LINE_SWITCH, _T("v"), _T("verbose"), _T("be verbose") }, + { wxCMD_LINE_SWITCH, _T("c"), _T("cpp-code"), _T("output C++ source rather than .rsc file") }, + { wxCMD_LINE_SWITCH, _T("p"), _T("python-code"), _T("output wxPython source rather than .rsc file") }, + { wxCMD_LINE_SWITCH, _T("g"), _T("gettext"), _T("output list of translatable strings (to stdout or file if -o used)") }, + { wxCMD_LINE_OPTION, _T("n"), _T("function"), _T("C++/Python function name (with -c or -p) [InitXmlResource]") }, + { wxCMD_LINE_OPTION, _T("o"), _T("output"), _T("output file [resource.xrs/cpp]") }, #if 0 // not yet implemented - { wxCMD_LINE_OPTION, "l", "list-of-handlers", "output list of neccessary handlers to this file" }, + { wxCMD_LINE_OPTION, _T("l"), _T("list-of-handlers", _T("output list of neccessary handlers to this file" }, #endif - { wxCMD_LINE_PARAM, NULL, NULL, "input file(s)", + { wxCMD_LINE_PARAM, NULL, NULL, _T("input file(s)"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_OPTION_MANDATORY }, @@ -139,30 +139,30 @@ int XmlResApp::OnRun() void XmlResApp::ParseParams(const wxCmdLineParser& cmdline) { - flagGettext = cmdline.Found("g"); - flagVerbose = cmdline.Found("v"); - flagCPP = cmdline.Found("c"); - flagPython = cmdline.Found("p"); + flagGettext = cmdline.Found(_T("g")); + flagVerbose = cmdline.Found(_T("v")); + flagCPP = cmdline.Found(_T("c")); + flagPython = cmdline.Found(_T("p")); - if (!cmdline.Found("o", &parOutput)) + if (!cmdline.Found(_T("o"), &parOutput)) { if (flagGettext) parOutput = wxEmptyString; else { if (flagCPP) - parOutput = "resource.cpp"; + parOutput = _T("resource.cpp"); else if (flagPython) - parOutput = "resource.py"; + parOutput = _T("resource.py"); else - parOutput = "resource.xrs"; + parOutput = _T("resource.xrs"); } } parOutputPath = wxPathOnly(parOutput); - if (!parOutputPath) parOutputPath = "."; + if (!parOutputPath) parOutputPath = _T("."); - if (!cmdline.Found("n", &parFuncname)) - parFuncname = "InitXmlResource"; + if (!cmdline.Found(_T("n"), &parFuncname)) + parFuncname = _T("InitXmlResource"); for (size_t i = 0; i < cmdline.GetParamCount(); i++) parFiles.Add(cmdline.GetParam(i)); @@ -194,19 +194,19 @@ void XmlResApp::CompileRes() wxString XmlResApp::GetInternalFileName(const wxString& name, const wxArrayString& flist) { wxString name2 = name; - name2.Replace(":", "_"); - name2.Replace("/", "_"); - name2.Replace("\\", "_"); - name2.Replace("*", "_"); - name2.Replace("?", "_"); + name2.Replace(_T(":"), _T("_")); + name2.Replace(_T("/"), _T("_")); + name2.Replace(_T("\\"), _T("_")); + name2.Replace(_T("*"), _T("_")); + name2.Replace(_T("?"), _T("_")); - wxString s = wxFileNameFromPath(parOutput) + "$" + name2; + wxString s = wxFileNameFromPath(parOutput) + _T("$") + name2; if (wxFileExists(s) && flist.Index(s) == wxNOT_FOUND) { for (int i = 0;; i++) { - s.Printf(wxFileNameFromPath(parOutput) + "$%03i-" + name2, i); + s.Printf(wxFileNameFromPath(parOutput) + _T("$%03i-") + name2, i); if (!wxFileExists(s) || flist.Index(s) != wxNOT_FOUND) break; } @@ -221,13 +221,13 @@ wxArrayString XmlResApp::PrepareTempFiles() for (size_t i = 0; i < parFiles.Count(); i++) { if (flagVerbose) - wxPrintf("processing " + parFiles[i] + "...\n"); + wxPrintf(_T("processing ") + parFiles[i] + _T("...\n")); wxXmlDocument doc; if (!doc.Load(parFiles[i])) { - wxLogError("Error parsing file " + parFiles[i]); + wxLogError(_T("Error parsing file ") + parFiles[i]); retCode = 1; continue; } @@ -239,7 +239,7 @@ wxArrayString XmlResApp::PrepareTempFiles() wxString internalName = GetInternalFileName(parFiles[i], flist); - doc.Save(parOutputPath + "/" + internalName); + doc.Save(parOutputPath + _T("/") + internalName); flist.Add(internalName); } @@ -251,42 +251,55 @@ wxArrayString XmlResApp::PrepareTempFiles() // find all files mentioned in structure, e.g. <bitmap>filename</bitmap> void XmlResApp::FindFilesInXML(wxXmlNode *node, wxArrayString& flist, const wxString& inputPath) { - wxXmlNode *n = node; - if (n == NULL) return; - n = n->GetChildren(); - + // Is 'node' XML node element? + if (node == NULL) return; + if (node->GetType() != wxXML_ELEMENT_NODE) return; + + // Does 'node' contain filename information at all? + bool containsFilename = ( + // Any bitmaps: + (node->GetName() == _T("bitmap")) || + // URLs in wxHtmlWindow: + (node->GetName() == _T("url")) || + // wxBitmapButton: + (node->GetParent() != NULL && + node->GetParent()->GetPropVal(_T("class"), _T("")) == _T("wxBitmapButton") && + (node->GetName() == _T("focus") || + node->GetName() == _T("disabled") || + node->GetName() == _T("selected"))) + ); + + wxXmlNode *n = node->GetChildren(); while (n) { - if ((node->GetType() == wxXML_ELEMENT_NODE) && - // parent is an element, i.e. has subnodes... + if (containsFilename && (n->GetType() == wxXML_TEXT_NODE || - n->GetType() == wxXML_CDATA_SECTION_NODE) && - // ...it is textnode... - ((node/*not n!*/->GetName() == "bitmap") || - (node/*not n!*/->GetName() == "url"))) - // ...and known to contain filename + n->GetType() == wxXML_CDATA_SECTION_NODE)) { wxString fullname; - if (wxIsAbsolutePath(n->GetContent()) || inputPath == "") fullname = n->GetContent(); - else fullname = inputPath + "/" + n->GetContent(); + if (wxIsAbsolutePath(n->GetContent()) || inputPath.empty()) + fullname = n->GetContent(); + else + fullname = inputPath + _T("/") + n->GetContent(); if (flagVerbose) - wxPrintf("adding " + fullname + "...\n"); - + wxPrintf(_T("adding ") + fullname + _T("...\n")); + wxString filename = GetInternalFileName(n->GetContent(), flist); n->SetContent(filename); - flist.Add(filename); + if (flist.Index(filename) == wxNOT_FOUND) + flist.Add(filename); wxFileInputStream sin(fullname); - wxFileOutputStream sout(parOutputPath + "/" + filename); + wxFileOutputStream sout(parOutputPath + _T("/") + filename); sin.Read(sout); // copy the stream } - + // subnodes: if (n->GetType() == wxXML_ELEMENT_NODE) FindFilesInXML(n, flist, inputPath); - + n = n->GetNext(); } } @@ -296,7 +309,7 @@ void XmlResApp::FindFilesInXML(wxXmlNode *node, wxArrayString& flist, const wxSt void XmlResApp::DeleteTempFiles(const wxArrayString& flist) { for (size_t i = 0; i < flist.Count(); i++) - wxRemoveFile(parOutputPath + "/" + flist[i]); + wxRemoveFile(parOutputPath + _T("/") + flist[i]); } @@ -306,17 +319,17 @@ void XmlResApp::MakePackageZIP(const wxArrayString& flist) wxString files; for (size_t i = 0; i < flist.Count(); i++) - files += flist[i] + " "; + files += flist[i] + _T(" "); files.RemoveLast(); if (flagVerbose) - wxPrintf("compressing " + parOutput + "...\n"); + wxPrintf(_T("compressing ") + parOutput + _T("...\n")); - if (wxExecute("zip -9 -j " + wxString(flagVerbose ? "" : "-q ") + - parOutput + " " + files, TRUE) == -1) + if (wxExecute(_T("zip -9 -j ") + wxString(flagVerbose ? _T("") : _T("-q ")) + + parOutput + _T(" ") + files, TRUE) == -1) { - wxLogError("Unable to execute zip program. Make sure it is in the path."); - wxLogError("You can download it at http://www.cdrom.com/pub/infozip/"); + wxLogError(_T("Unable to execute zip program. Make sure it is in the path.")); + wxLogError(_T("You can download it at http://www.cdrom.com/pub/infozip/")); retCode = 1; return; } @@ -333,9 +346,9 @@ static wxString FileToCppArray(wxString filename, int num) wxFFile file(filename, "rb"); size_t lng = file.Length(); - snum.Printf("%i", num); - output.Printf("static size_t xml_res_size_" + snum + " = %i;\n", lng); - output += "static unsigned char xml_res_file_" + snum + "[] = {\n"; + snum.Printf(_T("%i"), num); + output.Printf(_T("static size_t xml_res_size_") + snum + _T(" = %i;\n"), lng); + output += _T("static unsigned char xml_res_file_") + snum + _T("[] = {\n"); // we cannot use string literals because MSVC is dumb wannabe compiler // with arbitrary limitation to 2048 strings :( @@ -344,12 +357,12 @@ static wxString FileToCppArray(wxString filename, int num) for (size_t i = 0, linelng = 0; i < lng; i++) { - tmp.Printf("%i", buffer[i]); - if (i != 0) output << ','; + tmp.Printf(_T("%i"), buffer[i]); + if (i != 0) output << _T(','); if (linelng > 70) { linelng = 0; - output << "\n"; + output << _T("\n"); } output << tmp; linelng += tmp.Length()+1; @@ -357,7 +370,7 @@ static wxString FileToCppArray(wxString filename, int num) delete[] buffer; - output += "};\n\n"; + output += _T("};\n\n"); return output; } @@ -369,61 +382,61 @@ void XmlResApp::MakePackageCPP(const wxArrayString& flist) size_t i; if (flagVerbose) - wxPrintf("creating C++ source file " + parOutput + "...\n"); + wxPrintf(_T("creating C++ source file ") + parOutput + _T("...\n")); - file.Write("\ -//\n\ -// This file was automatically generated by wxrc, do not edit by hand.\n\ -//\n\n\ -#include <wx/wxprec.h>\n\ -\n\ -#ifdef __BORLANDC__\n\ - #pragma hdrstop\n\ -#endif\n\ -\n\ -#ifndef WX_PRECOMP\n\ - #include <wx/wx.h>\n\ -#endif\n\ -\ -#include <wx/filesys.h>\n\ -#include <wx/fs_mem.h>\n\ -#include <wx/xrc/xmlres.h>\n\ -#include <wx/xrc/xh_all.h>\n\ -\n"); + file.Write(_T("") +_T("//\n") +_T("// This file was automatically generated by wxrc, do not edit by hand.\n") +_T("//\n\n") +_T("#include <wx/wxprec.h>\n") +_T("\n") +_T("#ifdef __BORLANDC__\n") +_T(" #pragma hdrstop\n") +_T("#endif\n") +_T("\n") +_T("#ifndef WX_PRECOMP\n") +_T(" #include <wx/wx.h>\n") +_T("#endif\n") +_T("") +_T("#include <wx/filesys.h>\n") +_T("#include <wx/fs_mem.h>\n") +_T("#include <wx/xrc/xmlres.h>\n") +_T("#include <wx/xrc/xh_all.h>\n") +_T("\n")); for (i = 0; i < flist.Count(); i++) file.Write(FileToCppArray(flist[i], i)); - file.Write("\ -void " + parFuncname + "()\n\ -{\n\ -\n\ - // Check for memory FS. If not present, load the handler:\n\ - {\n\ - wxMemoryFSHandler::AddFile(\"XRC_resource/dummy_file\", \"dummy one\");\n\ - wxFileSystem fsys;\n\ - wxFSFile *f = fsys.OpenFile(\"memory:XRC_resource/dummy_file\");\n\ - wxMemoryFSHandler::RemoveFile(\"XRC_resource/dummy_file\");\n\ - if (f) delete f;\n\ - else wxFileSystem::AddHandler(new wxMemoryFSHandler);\n\ - }\n\ -\n"); + file.Write(_T("") +_T("void ") + parFuncname + wxT("()\n") +_T("{\n") +_T("\n") +_T(" // Check for memory FS. If not present, load the handler:\n") +_T(" {\n") +_T(" wxMemoryFSHandler::AddFile(wxT(\"XRC_resource/dummy_file\"), wxT(\"dummy one\"));\n") +_T(" wxFileSystem fsys;\n") +_T(" wxFSFile *f = fsys.OpenFile(wxT(\"memory:XRC_resource/dummy_file\"));\n") +_T(" wxMemoryFSHandler::RemoveFile(wxT(\"XRC_resource/dummy_file\"));\n") +_T(" if (f) delete f;\n") +_T(" else wxFileSystem::AddHandler(new wxMemoryFSHandler);\n") +_T(" }\n") +_T("\n")); for (i = 0; i < flist.Count(); i++) { wxString s; - s.Printf(" wxMemoryFSHandler::AddFile(\"XRC_resource/" + flist[i] + - "\", xml_res_file_%i, xml_res_size_%i);\n", i, i); + s.Printf(_T(" wxMemoryFSHandler::AddFile(wxT(\"XRC_resource/") + flist[i] + + _T("\"), xml_res_file_%i, xml_res_size_%i);\n"), i, i); file.Write(s); } for (i = 0; i < parFiles.Count(); i++) { - file.Write(" wxXmlResource::Get()->Load(\"memory:XRC_resource/" + - GetInternalFileName(parFiles[i], flist) + "\");\n"); + file.Write(_T(" wxXmlResource::Get()->Load(wxT(\"memory:XRC_resource/") + + GetInternalFileName(parFiles[i], flist) + _T("\"));\n")); } - file.Write("}\n"); + file.Write(_T("}\n")); } @@ -436,8 +449,8 @@ static wxString FileToPythonArray(wxString filename, int num) wxFFile file(filename, "rb"); size_t lng = file.Length(); - snum.Printf("%i", num); - output = " xml_res_file_" + snum + " = \"\"\"\\\n"; + snum.Printf(_T("%i"), num); + output = _T(" xml_res_file_") + snum + _T(" = \"\"\"\\\n"); unsigned char *buffer = new unsigned char[lng]; file.Read(buffer, lng); @@ -451,15 +464,15 @@ static wxString FileToPythonArray(wxString filename, int num) linelng = 0; } else if (c < 32 || c > 127) - tmp.Printf("\\x%02x", c); + tmp.Printf(_T("\\x%02x"), c); else if (c == '\\') - tmp = "\\\\"; + tmp = _T("\\\\"); else tmp = (wxChar)c; if (linelng > 70) { linelng = 0; - output << "\\\n"; + output << _T("\\\n"); } output << tmp; linelng += tmp.Length(); @@ -467,7 +480,7 @@ static wxString FileToPythonArray(wxString filename, int num) delete[] buffer; - output += "\"\"\"\n\n"; + output += _T("\"\"\"\n\n"); return output; } @@ -479,18 +492,18 @@ void XmlResApp::MakePackagePython(const wxArrayString& flist) size_t i; if (flagVerbose) - wxPrintf("creating Python source file " + parOutput + "...\n"); + wxPrintf(_T("creating Python source file ") + parOutput + _T("...\n")); file.Write( - "#\n" - "# This file was automatically generated by wxrc, do not edit by hand.\n" - "#\n\n" - "from wxPython.wx import *\n" - "from wxPython.xrc import *\n\n" + _T("#\n") + _T("# This file was automatically generated by wxrc, do not edit by hand.\n") + _T("#\n\n") + _T("from wxPython.wx import *\n") + _T("from wxPython.xrc import *\n\n") ); - file.Write("def " + parFuncname + "():\n"); + file.Write(_T("def ") + parFuncname + _T("():\n")); for (i = 0; i < flist.Count(); i++) file.Write(FileToPythonArray(flist[i], i)); @@ -498,7 +511,7 @@ void XmlResApp::MakePackagePython(const wxArrayString& flist) for (i = 0; i < flist.Count(); i++) { wxString s; - s.Printf(" wxXmlResource_Get().LoadFromString(xml_res_file_%i)\n", i); + s.Printf(_T(" wxXmlResource_Get().LoadFromString(xml_res_file_%i)\n"), i); file.Write(s); } } @@ -511,7 +524,7 @@ void XmlResApp::OutputGettext() wxFFile fout; if (!parOutput) fout.Attach(stdout); - else fout.Open(parOutput, _T("wt")); + else fout.Open(parOutput, "wt"); for (size_t i = 0; i < str.GetCount(); i++) fout.Write(_T("_(\"") + str[i] + _T("\");\n")); @@ -528,12 +541,12 @@ wxArrayString XmlResApp::FindStrings() for (size_t i = 0; i < parFiles.Count(); i++) { if (flagVerbose) - wxPrintf("processing " + parFiles[i] + "...\n"); + wxPrintf(_T("processing ") + parFiles[i] + _T("...\n")); wxXmlDocument doc; if (!doc.Load(parFiles[i])) { - wxLogError("Error parsing file " + parFiles[i]); + wxLogError(_T("Error parsing file ") + parFiles[i]); retCode = 1; continue; } @@ -567,7 +580,13 @@ static wxString ConvertText(const wxString& str) case wxT('\n') : str2 << wxT("\\n"); break; case wxT('\t') : str2 << wxT("\\t"); break; case wxT('\r') : str2 << wxT("\\r"); break; - case wxT('\\') : str2 << wxT("\\\\"); break; + case wxT('\\') : if ((*(dt+1) != 'n') && + (*(dt+1) != 't') && + (*(dt+1) != 'r')) + str2 << wxT("\\\\"); + else + str2 << wxT("\\"); + break; case wxT('"') : str2 << wxT("\\\""); break; default : str2 << *dt; break; } diff --git a/version-script.in b/version-script.in new file mode 100644 index 0000000000..e10ecc0835 --- /dev/null +++ b/version-script.in @@ -0,0 +1,3 @@ +@WX_VERSION_TAG@ { + *; +}; diff --git a/wx-config.in b/wx-config.in index d6e090754c..2a4f02956f 100755 --- a/wx-config.in +++ b/wx-config.in @@ -4,11 +4,13 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ exec_prefix_set=no CC="@CC@" +GCC="@GCC@" CXX="@CXX@" LD="@SHARED_LD@" cross_compiling=@cross_compiling@ target=@host_alias@ static_flag=@STATIC_FLAG@ +inplace_flag=no usage() { @@ -17,12 +19,18 @@ Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--static] [--libs] [--gl-libs] [--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags] [--cc] [--cxx] [--ld] + [--inplace] wx-config returns configuration information about the installed version of wxWindows. It may be used to query its version and installation directories and also retrieve the C and C++ compilers and linker which were used for its building and the corresponding flags. + +The --inplace flag allows wx-config to be used from the wxWindows +build directory and output flags to use the uninstalled version of +the headers and libs in the build directory. (Currently configure +must be invoked via a full path name for this to work correctly.) EOF exit $1 @@ -30,16 +38,36 @@ EOF cppflags() { + # we should never specify -I/usr/include on the compiler command line: this + # is at best useless and at worst breaks compilation on the systems where + # the system headers are non-ANSI because gcc works around this by storing + # the ANSI-fied versions of them in its private directory which is searched + # after all the directories on the cmd line. + # + # the situation is a bit more complicated with -I/usr/local/include: again, + # it shouldn't be specified with gcc which looks there by default anyhow + # and gives warnings (at least 3.1 does) if it is specified explicitly -- + # but this -I switch *is* needed for the other compilers + # + # note that we assume that if we use GNU cc we also use GNU c++ and vice + # versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C + # compiler and non-GNU C++ compiler are used or vice versa -- we'll fix + # this when/if anybody complains about it if test "@includedir@" != "/usr/include" \ -a "@includedir@" != "/usr/include/c++" \ - -a "@includedir@" != "/usr/local/include" \ + -a \( "${GCC}" != "yes" \ + -o "@includedir@" != "/usr/local/include" \) \ -a \( "${cross_compiling}" != "yes" \ -o "@includedir@" != "/usr/${target}/include" \) ; then - includes=-I@includedir@ + includes=" -I@includedir@" fi - includes="-I@libdir@/wx/include/@TOOLCHAIN_NAME@ $includes" + if test $inplace_flag = yes ; then + includes="-I$inplace_builddir/lib/wx/include/@TOOLCHAIN_NAME@ -I$inplace_include" + else + includes="-I@libdir@/wx/include/@TOOLCHAIN_NAME@$includes" + fi if test $static_flag = yes ; then echo $includes @WXDEBUG_DEFINE@ @TOOLCHAIN_DEFS@ @WXCONFIG_INCLUDE@ @WX_LARGEFILE_FLAGS@ @@ -104,6 +132,10 @@ while test $# -gt 0; do libs="-L@libdir@" fi + if test $inplace_flag = yes ; then + libs="-L$inplace_builddir/lib" + fi + if test $static_flag = yes ; then echo "$libs @LDFLAGS@ @WXCONFIG_RPATH@ @libdir@/@WXCONFIG_LIBS_STATIC@ @LIBS@ @DMALLOC_LIBS@" else @@ -117,7 +149,10 @@ while test $# -gt 0; do else gllibs="@WXCONFIG_LIBS_GL@" fi - echo @LDFLAGS_GL@ "$gllibs" + if test $inplace_flag = yes ; then + libdir="-L$inplace_builddir/lib" + fi + echo @LDFLAGS_GL@ $libdir $gllibs ;; --cc) echo $CC @@ -128,6 +163,11 @@ while test $# -gt 0; do --ld) echo $LD ;; + --inplace) + inplace_flag=yes + inplace_builddir=`dirname $0` + inplace_include=@top_srcdir@/include + ;; *) usage 1 1>&2 ;; diff --git a/wxBase.spec b/wxBase.spec index d30e17d1f5..043ca18355 100644 --- a/wxBase.spec +++ b/wxBase.spec @@ -1,6 +1,6 @@ %define pref /usr -%define ver 2.3.3 -%define ver2 2.3 +%define ver 2.4.0 +%define ver2 2.4 %define rel 1 Summary: wxBase library - non-GUI support classes of wxWindows toolkit diff --git a/wxGTK.spec b/wxGTK.spec index 6fbae7bb96..eda06e0c05 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -1,6 +1,6 @@ %define pref /usr -%define ver 2.3.3 -%define ver2 2.3 +%define ver 2.4.0 +%define ver2 2.4 %define rel 1 Summary: The GTK+ 1.2 port of the wxWindows library diff --git a/wxMGL.spec b/wxMGL.spec new file mode 100644 index 0000000000..c00e0dc9c3 --- /dev/null +++ b/wxMGL.spec @@ -0,0 +1,123 @@ +%define pref /usr +%define ver 2.4.0 +%define ver2 2.4 +%define rel 1 + +Summary: The SciTech MGL port of the wxWindows library +Name: wxMGL +Version: %{ver} +Release: %{rel} +Copyright: wxWindows Licence +Group: System/Libraries +Source: wxMGL-%{ver}.tar.bz2 +URL: http://www.wxwindows.org +Packager: Vaclav Slavik <vaclav@wxwindows.org> +Prefix: %{pref} +BuildRoot: /var/tmp/%{name}-root + +# all packages providing an implementation of wxWindows library (regardless of +# the toolkit used) should provide the (virtual) wxwin package, this makes it +# possible to require wxwin instead of requiring "wxgtk or wxmotif or wxuniv..." +Provides: wxwin + +Provides: libwx_mgl.so +Provides: libwx_mgl-%{ver2}.so + +Requires: mgl +BuildRequires: mgl-devel + +%description +wxWindows is a free C++ library for cross-platform GUI development. +With wxWindows, you can create applications for different GUIs (GTK+, +Motif/LessTif, MS Windows, Mac) from the same source code. + +%package devel +Summary: The SciTech MGL port of the wxWindows library +Group: Development/Libraries +Requires: wxMGL = %{ver} + +%description devel +Header files for wxMGL, the SciTech MGL port of the wxWindows library. + +%package static +Summary: wxMGL static libraries +Group: Development/Libraries + +%description static +Static libraries for wxMGL. You need them if you want to link statically against wxMGL. + +%prep +%setup -n wxMGL-%{ver} + +%build +if [ "$SMP" != "" ]; then + export MAKE="make -j$SMP" +else + export MAKE="make" +fi + +mkdir obj-shared +cd obj-shared +../configure --prefix=%{pref} --enable-soname --with-mgl +$MAKE +cd .. + +mkdir obj-static +cd obj-static +../configure --prefix=%{pref} --disable-shared --with-mgl +$MAKE +cd .. + +%install +rm -rf $RPM_BUILD_ROOT +(cd obj-static; make prefix=$RPM_BUILD_ROOT%{pref} install) +(cd obj-shared; make prefix=$RPM_BUILD_ROOT%{pref} install) + +%find_lang wxstd + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +/sbin/ldconfig + +%postun +/sbin/ldconfig + +%post devel +# Install wx-config if there isn't any +if test ! -f %{_bindir}/wx-config ; then + ln -sf wxmgl-%{ver2}-config %{_bindir}/wx-config +fi + +%preun devel +# Remove wx-config if it points to this package +if test -f %{_bindir}/wx-config -a -f /usr/bin/md5sum ; then + SUM1=`md5sum %{_bindir}/wxmgl-%{ver2}-config | cut -c 0-32` + SUM2=`md5sum %{_bindir}/wx-config | cut -c 0-32` + if test "x$SUM1" = "x$SUM2" ; then + rm -f %{_bindir}/wx-config + fi +fi + + +%files -f wxstd.lang +%defattr(-,root,root) +%doc COPYING.LIB *.txt +%dir %{_datadir}/wx +%{_datadir}/wx/* +%{_libdir}/libwx_mgl*-%{ver2}*.so.* + +%files devel +%defattr(-,root,root) +%{_libdir}/libwx_mgl*-%{ver2}*.so +%dir %{_includedir}/wx +%{_includedir}/wx/* +%dir %{_libdir}/wx +%{_libdir}/wx/* +%{_bindir}/wxmgl*-config +%{_datadir}/aclocal/*.m4 + +%files static +%defattr (-,root,root) +%{_libdir}/lib*.a diff --git a/wxMotif.spec b/wxMotif.spec index 2ddead5b12..fe6a8accb8 100644 --- a/wxMotif.spec +++ b/wxMotif.spec @@ -3,8 +3,8 @@ # Note that this is NOT a relocatable package %define pref /usr -%define ver 2.3.3 -%define ver2 2.3 +%define ver 2.4.0 +%define ver2 2.4 %define rel 1 Summary: The Motif/Lesstif port of the wxWindows library diff --git a/wxPython/.cvsignore b/wxPython/.cvsignore index 611f71ef4c..38dfbf734e 100644 --- a/wxPython/.cvsignore +++ b/wxPython/.cvsignore @@ -2,8 +2,12 @@ .emacs.desktop .gdb_history MANIFEST +_build_dmg _build_rpm build +build-gtk +build-gtk2 +build-gtk2.unicode build-pkg build-pkg-debug build.local diff --git a/wxPython/BUILD.osx.txt b/wxPython/BUILD.osx.txt index 1af6b0d189..14bee6102d 100644 --- a/wxPython/BUILD.osx.txt +++ b/wxPython/BUILD.osx.txt @@ -1,57 +1,32 @@ Building wxPython on Mac OS X ----------------------------- -NOTE: OS X support is HIGHLY EXPERIMENTAL at this time. Most things - are working now, but a few still don't. I know about most of - them and am addressing them as I have time. If you have any - ideas about a fix for the stuff that's still broken then - please persue them and send the fixes to me. - -These are the steps I have used for building wxPython on Mac OS X 10.1 +These are the steps I have used for building wxPython on Mac OS X 10.x with the Apple Developer Tools, a.k.a the Darwin version. I assume that you know your way around a command line and that you know how to get things from various CVS repositories as needed. -1. Python 2.2 is required. There is a disk image with an installer - package in the wxPython Sourceforge download area, in this group: +1. "MacPython-OSX" 2.3 is required. There is a disk image with an + installer package in the wxPython Sourceforge download area, in + this group: http://sourceforge.net/project/showfiles.php?group_id=10718&release_id=84730 If, for some reason you need to build your own Python, get the - source from www.python.org and follow theinstructions in the - Mac/OSX/README file to build and install Python.app and the - Python.framework. - - If you build your own Python then you may want to make a symlink or - two in /usr/local/bin so that this version of Python can be found - from the command line. For example: - - cd /usr/local/bin - sudo ln -s /Library/Frameworks/Python.framework/Versions/2.2/bin/python2.2 python2.2 - sudo ln -s python2.2 python - - Also, if you create a /usr/local/bin/pythonw script like the - following then you can run Python GUI apps (like wxPython) directly - from the command line: - - #!/bin/sh - exec /Applications/Python.app/Contents/MacOS/python $@ - - Be sure to give this script execute permissions: - - sudo chmod +x /usr/local/bin/pythonw - - If you would like to make a MachoPython installer from what you - built then you may want to look at the scripts I use to do it - located in wxPython/distrib/mac/buildPython. + source from www.python.org and follow the instructions in the + Mac/OSX/README file to build and install the Python.framework and + Python tools. One last thing, make sure that /usr/local/bin is in your PATH - environment variable. + environment variable since that is where the new python and pythonw + commands will be located. -2. In a wxWindows CVS tree make a build directory. +2. In a wxWindows CVS tree make a build directory. (You can also use + a CVS snapshot located in http://wxwindows.org/snapshots/ or the + released wxPythonSrc-*.tr.gz archive.) cd ~/proj/wxWindows # or wherever you put it mkdir build @@ -69,7 +44,14 @@ get things from various CVS repositories as needed. 5. Build and install wxPython. cd ../wxPython - python setup.py IN_CVS_TREE=1 build install + python setup.py build install + + If you would like to install to someplace besides the Python + site-packages directory (such as to your home directory) then you + can add "--root=<path>" after the "install" command. To use + wxPython like this you'll need to ensure that the directory + containing wxPyrthon is contained in in the PYTHONPATH environment + variable. 6. Test. Just navigate in the Finder to the demo directory and double click demo.py, or simple.py, or whatever you want to run. Or from diff --git a/wxPython/BUILD.unix.txt b/wxPython/BUILD.unix.txt index 32bc8aeee6..a2abfebb32 100644 --- a/wxPython/BUILD.unix.txt +++ b/wxPython/BUILD.unix.txt @@ -1,23 +1,27 @@ Building wxPython on Unix or Unix-like Systems ---------------------------------------------- -The basic steps for building wxPython for Unix or Unix-like systems -are: +NOTE: You should probably look at the ../ README.1st.txt file for +directions for how to build wxPython the "new way." This files +describes the "old way" to build on unix-like systems. The difference +is very simple: The new way uses a private copy of wxGTK while the +old way uses either an existing wxGTK that may be installed and used +by other apps, or you can build a wxGTK that will be accissible by +other apps. - 1. Compile and/or install glib and gtk+ - 2. Compile and/or install wxGTK - 3. Compile and install wxPython -We'll go into more detail of each of these steps below, but first a -few bits of background information on tools. +NOTE 2: I use a tool called SWIG (http://www.swig.org) to help +generate the C++ sources used in the wxPython extension module. +However you don't need to have SWIG unless you want to modify the *.i +files. I've made several modifications to and older version of SWIG +that are specific to wxPython's needs and so the modified sources are +included in the wx CVS at .../wxPython/wxSWIG. But because of the +size and since most people won't need it my SWIG is not included in +the wxPythonSrc tarball. You'll need to get it from CVS or a CVS +snapshot. -I use a tool called SWIG (http://www.swig.org) to help generate the -C++ sources used in the wxPython extension module. However you don't -need to have SWIG unless you want to modify the *.i files. I've made -several modifications to SWIG specific to wxPython's needs and so the -modified sources are included in the wx CVS at .../wxPython/wxSWIG. -If you need to modify the *.i files for wxPython then change to this -directory and run: +If you need to modify the *.i files for wxPython then you will need to +build wxswig. Change to the .../wxPython/wxSWIG directory and run: configure make @@ -46,29 +50,13 @@ A. First of all, check and see if you've already got glib/gtk+ on your gtk-config --version - If you have version 1.2.5 or better then you're all set. You can - skip to step #2. + If you have version 1.2.7 or better then you're all set. Otherwise + either get the pacakges for your unix distribution and install them + or get the sources from www.gtk.org and build and install them. -B. If your system has a binary package mechanism, (RPMs, debs, - whatever...) check and see if binaries for glib abd gtk+ are - available. Be sure to get the runtime library package as well as - the development package, if they are separate. Install them with - your package tool, and skip to step #2. - -C. If all else fails, you can get the source code for glib and gtk+ at - http://www.gtk.org/. Fetch the latest of each in the 1.2.x - series. Compile and install each of them like this: - - gzip -d [package].tar.gz | tar xvf - - cd [package] - ./configure - make - make install - - The last step will probably have to be done as root. Also, if your - system needs anything done to update the dynamic loader for shared - libraries, (such as running ldconfig on Linux) then do it after - each library is installed. + The best version to get is the latest 1.2.x release as the + wxWindows support for GTK 2.x is still beta-level. (Most tings + work great though, and it looks real nice.) @@ -77,30 +65,40 @@ C. If all else fails, you can get the source code for glib and gtk+ at A. You can find the sources and RPMs for wxGTK at http://wxwindows.org/, just follow the download links from the - nevigation panel. You can also check out a current snapshot of the - sources from the CVS server. (Some information about annonymous - CVS access is at http://wxwindows.org/cvs.htm.) The advantage of - using CVS is that you can easily update as soon as the developers - check in new sources or fixes. The advantage of using a released - version is that it usually has had more thorough testing done. You - can decide which method is best for you. + navigation panel. + + Source code for wxGTK is now included with the wxPythonSrc tarball, + and is the recommended way to get released wxGTK source code if you + plan on building both. + + You can also check out a current snapshot of the sources from the + CVS server. (Some information about annonymous CVS access is at + http://wxwindows.org/cvs.htm.) The advantage of using CVS is that + you can easily update as soon as the developers check in new + sources or fixes. The advantage of using a released version is + that it usually has had more thorough testing done. You can decide + which method is best for you. + B. You'll usually want to use a version of wxGTK that has the same version number as the wxPython sources you are using. (Another - advantage of using CVS is that you'll get both at the same time.) + advantage of using wxPythonSrc or CVS is that you'll get both at + the same time.) + C. If using the RPMs be sure to get both the wxGTK and wxGTK-devel RPMs (at a minimum) and then install them as root. rpm -Uhv wxGTK-2.2.2-0.i386.rpm wxGTK-devel-2.2.2-0.i386.rpm + D. If using the sources (either from the tarball or from CVS) then configure it like this: cd wxWindows # or whatever your top-level directory is called mkdir build cd build - ../configure --with-gtk + ../configure --with-gtk --enable-geometry There are gobs and gobs of options for the configure script, run ../configure --help to see them all. I'll describe some that I find @@ -118,32 +116,9 @@ D. If using the sources (either from the tarball or from CVS) then special debugging code in wxWindows by defining the __WXDEBUG__ macro. You'll get some extra asserts, failure logging, etc. - To make a static library and not make a shared library, use the - --disable-shared and --enable-static flags. + If you are using GTK 2.x then you'll want to add --enable-gtk2 and + probably also --enable-unicode. - NOTE: There is a potential type mismatch between Python and wxGTK. - This happens if Python defines some flags that turn on 64-bit file - offset support and wxGTK does not. This causes some basic types, - like off_t, to be typedef'd differently causing the C++ method - signatures to be incompatible and giving link errors at runtime. - If you get errors upon running a wxPython script that looks - something like this: - - SeekI_13wxInputStream10wxSeekMode: referenced symbol not found - - then that is probably the issue. This can be fixed in the current - code by predefining these flags before wxGTK's configure is run, - for example: - - export CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DHAVE_LARGEFILE_SUPPORT" - export CXXFLAGS=$CFLAGS - ../configure --with-gtk --with-opengl --enable-debug - - In the 2.3.3 final release there will be a real configure flag for - it, and it should be enabled by default. You will be able to use - --enable-largefile or --disable-largefile to control it. If you - still get this or a similar error with 2.3.3 then try disabling - largefile support in wxGTK. E. Now just compile and install. You need to use GNU make, so if your system has something else get GNU make and build and install it and @@ -156,6 +131,7 @@ E. Now just compile and install. You need to use GNU make, so if your system needs anything done to update the dynamic loader for shared libraries, (such as running ldconfig on Linux) then do it now. + F. You can test your build by changing to one of the directories under build/samples or build/demos, running make and then running the executable that is built. @@ -167,33 +143,24 @@ F. You can test your build by changing to one of the directories under A. You have the same options (and same advantages/disadvantages) for getting the wxPython source, either a released snapshot or from - CVS. The released version file is named wxPython-[version].tar.gz + CVS. The released version file is named wxPythonSrc-[version].tar.gz and is available at http://wxpython.org/download.php. If you want to use CVS you'll find wxPython in the wxWindows CVS tree (see above) in the wxWindows/wxPython directory. -B. As mentioned previouslly, wxPython is built with the standard - Python Distutils tool. If you are using Python 2.0 or later you - are all set, otherwise you need to download and install Distutils - 1.0 from http://www.python.org/sigs/distutils-sig/. + +B. wxPython is built with the standard Python Distutils tool and + currently includes it's own snapshot of the latest version of + distutils which can also be used with previous versions of Python On Unix systems Distutils figures out what commands and flags to use for the compiler and linker by looking in the Makefile that was used to build Python itself. Most of the time this works okay. If it doesn't, there doesn't seem to be a way to override the values that Distutils uses without hacking either Distutils itself, or - Python's Makefile. (Complain to the distutils-sig about this - please.) For example, on a Solaris system I had to edit - /usr/local/lib/python1.5/config/Makefile and replace - - LDSHARED=ld -G - - with - - LDSHARED=gcc -G - - This particular problem has been fixed in Python 1.6 and beyond, - but there may be similar issues on other platforms. + Python's Makefile. (NOTE: This has been changed with the + distutilsincluded with Python 2.3 but I havn't yet looked into how + best to utilize this in wxPython...) While we're on the subject of how Python was built... Since wxPython is a C++ extension some platforms and/or compilers will @@ -215,13 +182,14 @@ B. As mentioned previouslly, wxPython is built with the standard make install I recently built Python 2.1.3 and Python 2.2.1 on Solaris and did - not have to resort to this workaround so apparently thigns are + not have to resort to this workaround so apparently things are getting better there. I will leave this note here though in case there are similar issues elsewhere. However I did run into a Python build issue that affects the wxPython build when attempting to use SunCC instead of GNU gcc. See the note below titled "Building with non-GNU compilers" if you are interested. + C. Change to the root wxPython directory and look at the setup.py file. This is the script that configures and defines all the information that Distutils needs to build wxPython. There are some @@ -248,18 +216,7 @@ C. Change to the root wxPython directory and look at the setup.py will be executed to regenerate the wrapper C++ and shadow python files. - IN_CVS_TREE If you are using the CVS version of the - wxWindows and wxPython sources then you will - need to set this flag to non-zero. This is - needed because some source files from the - wxWindows tree are copied to be under the - wxPython tree in order to keep Distutils happy. - With this flag set then setup.py will - automatically keep these copied sources up to - date if the original version is ever updated. - If you are using the tar.gz version of the - Python sources then these copied sources are - already present in your source tree. + etc. D. To build and install wxPython you simply need to execute the @@ -269,15 +226,32 @@ D. To build and install wxPython you simply need to execute the site-packages directory you may need to be root to run the install command. - python setup.py build - python setup.py install + python setup.py build install + + If you need to change any of the build flags that can also be done + on the setup.py command line, like this: + + python setup.py BUILD_GLCANVAS=0 build install + + If you are using GTK 2.x then you'll want to add these flags: + + python setup.py WXPORT=gtk2 UNICODE=1 build install + + If you would like to install to someplace besides the Python + site-packages directory (such as to your home directory) then you + can add "--root=<path>" after the "install" command. To use + wxPython like this you'll need to ensure that the directory + containing wxPyrthon is contained in in the PYTHONPATH environment + variable. + E. At this point you should be able to change into the wxPython/demo directory and run the demo: python demo.py -F. If you would like to make a test build that doesn't overwrite the + +F. If you would like to make a test build that doesn't overwrite any installed version of wxPython you can do so with this command instead of the install command above: @@ -360,5 +334,7 @@ before running configure, like this in bash: After making and installing Python with this configuration you should be able to build wxPython as described in the steps above. + + ----------------- robin@alldunn.com diff --git a/wxPython/BUILD.win32.txt b/wxPython/BUILD.win32.txt index 163cc1664c..f0cde57a6b 100644 --- a/wxPython/BUILD.win32.txt +++ b/wxPython/BUILD.win32.txt @@ -8,10 +8,9 @@ your sources from and what your desired end result is, there are several permutations of those steps. At a high level the basic steps are: - 1. Get the wxWindows sources + 1. Get the sources 2. Build the wxWindows DLL - 3. Get the wxPython sources - 4. Build and Install wxPython + 3. Build and Install wxPython We'll go into more detail of each of these steps below, but first a few bits of background information on tools. @@ -20,7 +19,11 @@ I use a tool called SWIG (http://www.swig.org) to help generate the C++ sources used in the wxPython extension module. However you don't need to have SWIG unless you want to modify the *.i files. I've made several modifications to SWIG specific to wxPython's needs and so the -modified sources are included in the wx CVS at .../wxPython/wxSWIG. +modified sources are included in the wx CVS at.../wxPython/wxSWIG. +But because of the size and since most people won't need it my SWIG is +not included in the wxPythonSrc tarball. You'll need to get it from +CVS or a CVS snapshot. + If you need to modify the *.i files for wxPython then change to this directory and run: @@ -42,6 +45,7 @@ If anybody wants to try it I'll take any required patches for the setup script and for these instructions. + UNICODE ------- @@ -69,44 +73,44 @@ And now on to the fun stuff... -1. Get the wxWindows sources ----------------------------- +1. Get the sources +------------------ -A. There are a few possible ways to get sources for wxWindows. You - can download a released version from http://wxwindows.org/ or you - can get current development sources from the CVS server. (Some - information about annonymous CVS access is at the - http://wxwindows.org/cvs.htm site.) The advantage of using CVS is - that you can easily update as soon as the developers check in new - sources or fixes. The advantage of using a released version is - that it usually has had more thorough testing done. You can decide - which method is best for you. +A. You can either use a tarball with the released version of the + source code for wxWindows/wxPython, or you can get current + development sources from the CVS repository. (Some information + about annonymous CVS access is at the http://wxwindows.org/cvs.htm + site.) The advantage of using CVS is that you can easily update as + soon as the developers check in new sources or fixes. The + advantage of using a released version is that it usually has had + more thorough testing done. You can decide which method is best + for you. The released version file is named + wxPythonSrc-[version].tar.gz and is available from the wxPython + website at http://wxpython.org/download.php. You can use WinZip to + unpack it if you don't have tar and gzip. -B. You'll usually want to use wxWindows sources that have the same - version number as the wxPython sources you are using. (Another - advantage of using CVS is that you'll get both at the same time.) -C. Once you get the sources be sure to put them in a path without a +B. Once you get the sources be sure to put them in a path without a space in it (i.e., NOT c:\Program Files\wx) and set an environment - variable named WXWIN to this directory. For example: + variable named WXWIN to the top level directory. For example: - mkdir \wx2 - cd \wx2 - unzip wxMSW-2.2.2.zip - set WXWIN=c:\wx2 + set WXWIN=c:\wx\wxPythonSrc-2.4.0.4 - You'll probably want to add that last line to your autoexec.bat or + You'll probably want to add that line to your autoexec.bat or System Properties depending on the type of system you are on. -D. Change to the wx2\include\wx\msw directory and copy setup0.h to + +C. Change to the %WXWIN%\include\wx\msw directory and copy setup0.h to setup.h and then edit setup.h. This is how you control which parts of wxWindows are compiled into or left out of the build, simply by turning options on or off. I have the following differences from the default setup0.h in my setup.h, but you can experiment with other settings if you like: + WXWIN_COMPATIBILITY_2_2 0 wxDIALOG_UNIT_COMPATIBILITY 0 + wxUSE_DEBUG_CONTEXT 1 wxUSE_MEMORY_TRACING 1 wxUSE_CMDLINE_PARSER 0 wxUSE_FSVOLUME 0 @@ -134,6 +138,7 @@ A. Although MSVC project files are provided I always use the makefiles Python, (and I make sure they stay that way.) You would have to edit the project files a bit to make it work otherwise. + B. There are three different types of wxWindows DLLs that can be produced by the VC makefile simply by providing a flag on the nmake command-line, I call the three types DEBUG, FINAL, and HYBRID. @@ -157,43 +162,41 @@ B. There are three different types of wxWindows DLLs that can be wxmsw[version].dll. This DLL is compiled with optimizations turned on and without debugging information and without __WXDEBUG__. The /MD flag is used which means that you - can use this version with the standard python.exe. This - is the version that I use when making the binary installer - for win32. + can use this version with the standard python.exe. HYBRID Specified with "FINAL=hybrid" and produces a DLL named wxmsw[version]h.dll. This DLL is almost the same as the - DEBUG version except the /MD flag is used which means that - you can use the standard python.exe but you still get the - debugging info and the __WXDEBUG__ code enabled. With the - debugger you can trace through the the code for the - wxPython extension and the wxWindows DLL, but not the - Python interpreter. You might use this version when you - want to deploy a wxPython app with the __WXDEBUG__ code - enabled. I use this mode most of the time during - development simply because it's easier than having to - remember to type python_d all the time. + FINAL version except the __WXDEBUG__ is used which means + that you will get extra runtime assertions and validations + from wxWindows. If any of these fail then they are turned + into a Python exception that you can catch and deal with + in your code. This is the version that I use when making + the binary installer for win32. + Since different DLL names and object file directories are used you can build all three types if you like. -C. Change to the wx2\src\msw directory and type the following command, + +C. Change to the %WXWIN%\src\msw directory and type the following command, using the value for FINAL that you want: - nmake -f makefile.vc dll pch FINAL=hybrid + nmake -f makefile.vc dll FINAL=hybrid Your machine will then crunch away for possibly a long time, depending on your hardware, and when it's done you should have a - DLL and some library files in \wx2\lib. + DLL and some library files in %WXWIN%\lib. -D. You'll either need to add \wx2\lib to the PATH or copy the DLL file - to a directory already on the PATH so the DLL can be found at + +D. You'll either need to add %WXWIN%\lib to the PATH or copy the DLL + file to a directory already on the PATH so the DLL can be found at runtime. Another option is to copy the DLL to the directory that the wxPython pacakge is installed to, for example, c:\Python22\lib\site-packages\wxPython. + E. You can test your build by changing to one of the directories under - \wx2\samples or \wx2\demos and typing (using the right FINAL flag): + %WXWIN%\samples or %WXWIN\demos and typing (using the right FINAL flag): nmake -f makefile.vc FINAL=hybrid WXUSINGDLL=1 @@ -201,20 +204,8 @@ E. You can test your build by changing to one of the directories under -3. Get the wxPython sources ---------------------------- -A. You have the same options (and same advantages/disadvantages) for - getting the wxPython source, either a released snapshot or from - CVS. The released version file is named wxPython-[version].tar.gz - and is available at http://wxpython.org/download.php. You can use - WinZip to unpack it if you don't have tar and gzip. If you want to - use CVS you'll find wxPython in the wxWindows CVS tree (see above) - in the wxWindows/wxPython directory. - - - -4. Build and Install wxPython +3. Build and Install wxPython ----------------------------- A. As mentioned previouslly, wxPython is built with the standard @@ -222,6 +213,7 @@ A. As mentioned previouslly, wxPython is built with the standard are all set, otherwise you need to download and install Distutils 1.0 from http://www.python.org/sigs/distutils-sig/. + B. Change to the root wxPython directory and look at the setup.py file. This is the script that configures and defines all the information that Distutils needs to build wxPython. There are some @@ -246,18 +238,7 @@ B. Change to the root wxPython directory and look at the setup.py will be executed to regenerate the wrapper C++ and shadow python files. - IN_CVS_TREE If you are using the CVS version of the - wxWindows and wxPython sources then you will - need to set this flag to non-zero. This is - needed because some source files from the - wxWindows tree are copied to be under the - wxPython tree in order to keep Distutils happy. - With this flag set then setup.py will - automatically keep these copied sources up to - date if the original version is ever updated. - If you are using the tar.gz version of the - Python sources then these copied sources are - already present in your source tree. + etc. C. To build and install wxPython you simply need to execute the @@ -280,12 +261,20 @@ C. To build and install wxPython you simply need to execute the commented out. Just search for "GX-" and uncomment it so it is put into the cflags list. + If you would like to install to someplace besides the Python + site-packages directory (such as to your home directory) then you + can add "--root=<path>" after the "install" command. To use + wxPython like this you'll need to ensure that the directory + containing wxPyrthon is contained in in the PYTHONPATH environment + variable. + D. At this point you should be able to change into the wxPython\demo directory and run the demo: python demo.py + E. If you would like to make a test build that doesn't overwrite the installed version of wxPython you can do so with one of these commands instead of the install command above: @@ -301,8 +290,8 @@ E. If you would like to make a test build that doesn't overwrite the To run using this test version just add the base wxPython source directory to the PYTHONPATH: - set PYTHONPATH=c:\wx2\wxPython - cd c:\wx2\wxPython\demo + set PYTHONPATH=%WXDIR%\wxPython + cd %WXDIR%\wxPython\demo python demo.py diff --git a/wxPython/CHANGES.txt b/wxPython/CHANGES.txt index eefa6256aa..8886bb0bfe 100644 --- a/wxPython/CHANGES.txt +++ b/wxPython/CHANGES.txt @@ -2,8 +2,232 @@ CHANGES.txt for wxPython ---------------------------------------------------------------------- -2.3.3 ------ +2.4.0.7 +------- +Gave up on generating a warning upon the use of the old true/false or +TRUE/FALSE values. + +Fixed wxGenericTreeCtrl (used on wxGTK and wxMac for wxTreeCtrl) so +that it can successfully handle lots of nodes instead of overflowing +when the virtual height of the widget overflowed a 16-bit value. + +Fixed the typemap that converts strings to wxColours to also accept +unicode. + +Fixed problem where the wrong class name could sometimes be used for +OOR. + +Fixed an interpreter lock problem in the __eq__ and __ne__ methods in +wxSize and etc. + +Updated PyCrust to version 0.9 + +Instead of always logging C++ assertions, added wxPYAPP_ASSERT_LOG +flag to turn it on. In most cases turning it into an exception (the +default behavior) is enough. See below in the 2.3.4.1 notes for more +details. + + + + +2.4.0.6 (a.k.a. the I'm so stupid release) +------- +The new deprecation class for the old true/false symbols can now be +returned from OnInit. And I promise to be sure I am testing what I +think I am testing in the future... + + + +2.4.0.5 (a.k.a. the blame it on Kevin release) +------- +A few little but annoying bug fixes. + +Updated pycolourchooser. + +Updated to 0.9b of PyCrust. + + + +2.4.0.4 +------- +Added missing wxRect methods + +Add OOR support for wxApp objects too. + +Added wxCursorFromImage, which works on wxMSW and wxGTK so far. + +All platforms now send EVT_DESTROY_WINDOW. Be warned that at the time +the event is sent the window is in the process of being deconstructed, +and so calling some (most?) methods of the window itself may cause +problems. + +Fixed SF Bug #689481, a method in the OGL wrappers was using the wrong +return type. + +Fixed SF Bug #689958, an endless loop in printout.py. + +Added EVT_WINDOW_CREATE_ID and EVT_WINDOW_DESTROY_ID so these events +can be associated with a specific window ID and more easily caught by +the parent window. + +Fixed copy-paste error in wxListCtrl.GetFirstSelected. + +Added missing Init method (and an overloading wrapper) to wxLocale +wrapper. + +Added a wxBitmap.SetMaskColour convenience method. + +Changed how the dynamic event tables (used for all Python wx classes, +C++ wx classes typically use static event tables) are searched such +that they behave from a Python perspective more like the static tables +in C++. Namely that if there are identical event bindings in a base +Python class and a derived Python class that the one in the derived +class will be found first and that if Skip is called that the one in +the base class will still be found instead of skipping directly to the +static stable in the C++ class. + +Switched to using True/False in the wxPython lib and demo instead of +true/false or TRUE/FALSE to prepare for the new boolean type and +constants being added to Python. Added code to wx.py to test for the +existence of the new constants and to create suitable values if not +present. + +Added some static wxApp functions that help with integration with the +Mac UI. They are no-ops on other platforms so it doesn't hurt to +always call them. The functions are: + + wxApp_GetMacDefaultEncodingIsPC + wxApp_GetMacSupportPCMenuShortcuts + wxApp_GetMacAboutMenuItemId + wxApp_GetMacPreferencesMenuItemId + wxApp_GetMacExitMenuItemId + wxApp_GetMacHelpMenuTitleName + wxApp_SetMacDefaultEncodingIsPC + wxApp_SetMacSupportPCMenuShortcuts + wxApp_SetMacAboutMenuItemId + wxApp_SetMacPreferencesMenuItemId + wxApp_SetMacExitMenuItemId + wxApp_SetMacHelpMenuTitleName + +Refactored, enhanced and added capabilities for the DrawXXXList +functions, inspired by code from Chris Barker. + +The wxWindows .mo language catalog files are now installed in a +subdirectory of the wxPython package dir on MSW since that platform +doesn't have a standard place for them. + +Added missing deselect methods for wxGrid. + +Fixed typemaps for wxGridCellCoordsArray. + +Updated to the 0.9a version of PyCrust + + + +2.4.0.2 +------- +Several bug fixes. + +Added wxIntCtrl from Will Sadkin. + +Added wxPyColourChooser by Michael Gilfix. + + + + +2.4.0.1 +------- +No major new features since 2.3.4.2, mostly bug fixes and minor +enhancements. + +Added function wrappers for the common dialogs from Kevin Altis. See +wxPython/lib/dialogs.py for more details. + + + +2.3.4.2 +------- +Various bug fixes. + + + +2.3.4.1 +------- +Updated XRCed and wxTimeCtrl contribs. + +Show a couple new wxGrid features in the demo. + +Several bug fixes in wxWindows. + +Added wxHtmlFilter. + +wxASSERT and related C++ runtime diagnostics are now converted to +Python exceptions. When an assert happens a wxPyAssertionError +(which derives from AssertionError) exception is created and when +control returns back to the Python code that invoked the C++ API it +will be raised. The same exception restrictions are in place as +before, namely that exceptions can't cross from one Python layer +through C++ to another Python layer. That simply means that if you +want to catch wxPyAssertionError or any other exception that you need +to do it before control returns to C++ at the end of your event +handler or callback code. There is some test code in demo/wxButton.py +you can use to play with this new feature. + +Added some methods to wxApp (SetAssertMode and GetAssertMode) that let +you control how C++ assertions are processed. Valid modes are: +wxPYAPP_ASSERT_SUPPRESS, wxPYAPP_ASSERT_EXCEPTION, and +wxPYAPP_ASSERT_DIALOG. Using _SUPPRESS will give you behavior like +the old "final" builds and the assert will be ignored, _EXCEPTION is +the new default described above, and _DIALOG is like the default in +2.3.3.1 and prior "hybrid" builds. You can also combine _EXCEPTION +and _DIALOG if you wish, although I don't know why you would. + +You can now overload OnInitGui, OnExit and OnAssert in your classes +derived from wxApp. + +Added GetSelectedCells, GetSelectionBlockTopLeft, +GetSelectionBlockBottomRight, GetSelectedRows, GetSelectedCols nethods +to wxGrid. + +Added Python == and != operators for some basic classes + +Fixed the Python wrappers for wxInputStream so they no longer block +when reading from a wxProcess on wxGTK. They now work more or less as +they did before 2.3.3.1 but the dual meaning of eof() has been +removed. There is now a CanRead() method that lets you know if there +is data waiting to be read from the pipe. + +Fixed method name clash in wxIEHtmlWin, renamed Refresh to RefreshPage. + +Added Throbber from Cliff Wells to the library and the demo. + +Windows installer prompts to uninstall old version first. + +Added wxPython.lib.evtmgr by Robb Shecter, which is an easier, more +"Pythonic" and more OO method of registering handlers for wxWindows +events using the Publish/Subscribe pattern. + +Added wxPython.lib.popupctl by Gerrit van Dyk which is a combobox-like +gizmo for poping up arbitrary controls. It is currently using +wxDialog because of some issues with wxPopupWindow... + +Added wxPython.lib.gridmovers by Gerrit van Dyk which facilitates the +dragging of columns and/or rows in a wxGrid. + +Added wxPython.lib.multisash by Gerrit van Dyk which is a nice +implementation of allowing the user to split a window any number of +times either horizontally or vertically, and to close the split off +windows when desired. + +Added helpviewer tool that displays HTML books similarly to how MS +HTMLHelp viewer does. Changed how the wxPythonDocs tarball is built +and added a script to launch the doc viewer. + + + + +2.3.3.1 +------- Added wxSplashScreen. Added wxGenericDirCtrl. @@ -174,6 +398,9 @@ Added wxXmlResourceHandler which allows you to create custom handlers for nonstandard class types in XRC resources. See the demo for an example. +Added wxPython.lib.mixins.rubberband module from Robb Shecter. + +Added wxTimeCtrl from Will Sadkin. @@ -205,8 +432,8 @@ Added XRCed to the wxPython Tools directory, contributed by Roman Rolinsky. Added a new "constructor" to most of the window classes that calls the -default C++ contructor, (the one with no parameters) and also added the -coresponding Create(...) method. This allows you to do a 2-step +default C++ constructor, (the one with no parameters) and also added the +corresponding Create(...) method. This allows you to do a 2-step creation of windows which is sometimes required for doing things such as setting extended style flags before the window is created, or for passing the object to the XRC resource system to be created from the @@ -742,7 +969,7 @@ methods look like this: toggle=FALSE) -There are also coresponding InsertTool and InsertSimpleTool methods +There are also corresponding InsertTool and InsertSimpleTool methods that additionally take an integer position as the first parameter. Added a wrapper for the new PCX and TIFF ImageHandlers. diff --git a/wxPython/MANIFEST.in b/wxPython/MANIFEST.in index 11ad108fbd..0dbd7d830c 100644 --- a/wxPython/MANIFEST.in +++ b/wxPython/MANIFEST.in @@ -44,11 +44,6 @@ include samples/doodle/*.txt include samples/doodle/*.py include samples/doodle/*.iss include samples/doodle/sample.ddl -include samples/stxview/*.txt -include samples/stxview/*.py -include samples/stxview/*.stx -include samples/stxview/StructuredText/*.py -include samples/stxview/StructuredText/*.txt include samples/wxProject/*.txt include samples/wxProject/*.py include samples/StyleEditor/*.py diff --git a/wxPython/README.txt b/wxPython/README.txt index 278202e0f8..5e3c5b2f0a 100644 --- a/wxPython/README.txt +++ b/wxPython/README.txt @@ -3,58 +3,34 @@ wxPython README Welcome to the wonderful world of wxPython! -Once you have installed the wxPython extension module, you can try it -out by going to the [install dir]\wxPython\demo directory and typing: +So where do you go from here? The best thing to do is to run the demo +and use its source code to help you learn how to use wxPython. Most +of the classes available are demonstrated there, and you can view the +sources directly in the demo so it is designed to help you learn. If +you are on Windows or OS X then you can run the demo just by double +clicking it's icon. If you are on Linux/Unix then change to the +directory containing the demo and type: python demo.py -There are also some other sample files there for you to play with and -learn from. +There are also some sample mini applications available for you to run +and to play with as a learning exercise. -If you selected to install the documentation then point your browser -to [install dir]\wxPython\docs\index.htm and you will then be looking -at the docs for wxWindows. For the most part you can use the C++ docs -as most classes and methods are used identically. Where there are -differences they are documented with a "wxPython Note." +The next thing you should do is join the wxPython-users maillist where +you can interact with a community of other users and developers who +are willing to help you learn, answer questions and solve problems. +To join the mail list just send an email message to the following +address from the account you want to receive the mail messages from +the list: -On Win32 systems the binary self-installer creates a program group on -the Start Menu that contains a link to running the demo and a link to -the help file. To help you save disk space I'm now using Microsoft's -HTML Help format. If your system doesn't know what to do with the help -file, you can install the HTML Help Viewer as part of IE 4+, NT -Service Pack 4+, or the HTML Workshop at + wxPython-users-subscribe@lists.wxwindows.org -http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp - -For some features, the latest common controls library from microsoft -is required. You can get this by installing IE 5.0 or Office 2000. -You can also get it independently from here: - -http://download.microsoft.com/download/platformsdk/Comctl32/5.80.2614.3600/W9XNT4/EN-US/50comupd.exe - -Windows 95 users may also need the WinSock 2.0 and OpenGL libraries. -These can be found at these sites: - - -http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/default.asp - -http://www.opengl.org/Downloads/Downloads.html - - - -Getting Help ------------- - -Since wxPython is a blending of multiple technologies, help comes from -multiple sources. See the http://wxPython.org/ for details on various -sources of help, but probably the best source is the wxPython-users -mail list. You can view the archive or subscribe by going to - - http://lists.wxwindows.org/mailman/listinfo/wxpython-users - -Or you can send mail directly to the list using this address: - - wxpython-users@lists.wxwindows.org +There is also a good set of class reference documentation available +for wxPython, but currently it is geared for the C++ user. This may +be a little daunting at first, but with a little practice you'll +easily be able to "translate" from the C++ shown there to Python. Not +all classes documented are available in Python, but most of the GUI +related classes are. Other Info @@ -62,17 +38,21 @@ Other Info Please also see the following files in this directory: - CHANGES.txt Information about new features, fixes, etc. in - each release. + CHANGES.txt Information about new features, fixes, + etc. in each release. - BUILD.unix.txt Instructions for building wxPython on various - Unix-like platforms. + ../README.1st.txt Instructions for building wxGTK and + wxPython on Unix-like platforms the + "new way." - BUILD.win32.txt Instructions for building wxPython on Windows. + BUILD.unix.txt Instructions for building wxPython on + various Unix-like platforms the "old way." - BUILD.osx.txt Instructions for building wxPython on Mac OS X. + BUILD.win32.txt Instructions for building wxPython on Windows. - licence/* Text of the wxWindows license. + BUILD.osx.txt Instructions for building wxPython on Mac OS X. + + licence/* Text of the wxWindows license. diff --git a/wxPython/b b/wxPython/b index 4f6136fb0a..b66448d124 100755 --- a/wxPython/b +++ b/wxPython/b @@ -9,6 +9,8 @@ function getpyver { PYVER=2.1 elif [ "$1" = "22" ]; then PYVER=2.2 + elif [ "$1" = "23" ]; then + PYVER=2.3 else echo You must specify Python version as first parameter. exit @@ -30,7 +32,7 @@ OTHERFLAGS="" # "c" --> clean if [ "$1" = "c" ]; then shift - CMD="$SETUP $FLAGS $OTHERFLAGS clean" + CMD="$SETUP $FLAGS $OTHERFLAGS clean $*" OTHERCMD="rm -f wxPython/*.so" # "d" --> clean extension modules only @@ -47,12 +49,12 @@ elif [ "$1" = "t" ]; then # "i" --> install elif [ "$1" = "i" ]; then shift - CMD="$SETUP $FLAGS $OTHERFLAGS install" + CMD="$SETUP $FLAGS $OTHERFLAGS build_ext install $*" # "s" --> source dist elif [ "$1" = "s" ]; then shift - CMD="$SETUP $OTHERFLAGS sdist" + CMD="$SETUP $OTHERFLAGS sdist $*" # "r" --> rpm dist elif [ "$1" = "r" ]; then diff --git a/wxPython/b.bat b/wxPython/b.bat index 22f0042c1e..79c75bddc0 100755 --- a/wxPython/b.bat +++ b/wxPython/b.bat @@ -8,7 +8,7 @@ set FLAGS=USE_SWIG=1 IN_CVS_TREE=1 rem Use non-default python? -iff "%1" == "15" .or. "%1" == "20" .or. "%1" == "21" .or. "%1" == "22" then +iff "%1" == "15" .or. "%1" == "20" .or. "%1" == "21" .or. "%1" == "22" .or. "%1" == "23" then set VER=%1 set PYTHON=%TOOLS%\python%1%\python.exe shift @@ -71,29 +71,26 @@ elseiff "%1" == "a" then shift set CMD=echo Finished! - call b.bat 15 c - call b.bat 15 f - cd demo - p15 encode_bitmaps.py - cd - - call b.bat 15 r - call b.bat 15 c - call b.bat 15 h - call b.bat 15 r - - call b.bat 21 c - call b.bat 21 f - call b.bat 21 r - call b.bat 21 c + call b.bat 21 d call b.bat 21 h call b.bat 21 r + call b.bat 21 d UNICODE=1 + call b.bat 21 h UNICODE=1 + call b.bat 21 r UNICODE=1 - call b.bat 22 c - call b.bat 22 f - call b.bat 22 r - call b.bat 22 c + call b.bat 22 d call b.bat 22 h call b.bat 22 r + call b.bat 22 d UNICODE=1 + call b.bat 22 h UNICODE=1 + call b.bat 22 r UNICODE=1 + + call b.bat 23 d + call b.bat 23 h + call b.bat 23 r + call b.bat 23 d UNICODE=1 + call b.bat 23 h UNICODE=1 + call b.bat 23 r UNICODE=1 rem "b" --> both debug and hybrid builds diff --git a/wxPython/contrib/dllwidget/dllwidget.py b/wxPython/contrib/dllwidget/dllwidget.py index 63b7609f9c..df51cc6a54 100644 --- a/wxPython/contrib/dllwidget/dllwidget.py +++ b/wxPython/contrib/dllwidget/dllwidget.py @@ -1,5 +1,5 @@ # The SWIG module is named dllwidget_ to avoid name clashes, so -# this stub just imports everything in it so the firendly module +# this stub just imports everything in it so the friendly module # name can be used elsewhere. from dllwidget_ import * diff --git a/wxPython/contrib/dllwidget/dllwidget_.cpp b/wxPython/contrib/dllwidget/dllwidget_.cpp index 9137b4dab8..9eec61d582 100644 --- a/wxPython/contrib/dllwidget/dllwidget_.cpp +++ b/wxPython/contrib/dllwidget/dllwidget_.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -314,7 +313,7 @@ static PyObject *_wrap_wxDllWidget_GetDllExt(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/contrib/gizmos/gizmos.cpp b/wxPython/contrib/gizmos/gizmos.cpp index f92d609908..0abd1ec076 100644 --- a/wxPython/contrib/gizmos/gizmos.cpp +++ b/wxPython/contrib/gizmos/gizmos.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -110,8 +109,8 @@ public: wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "DrawItem"))) { PyObject* dcobj = wxPyMake_wxObject(&dc); - PyObject* idobj = wxPyConstructObject((void*)&id, "wxTreeItemId", FALSE); - PyObject* recobj= wxPyConstructObject((void*)&rect, "wxRect", FALSE); + PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), FALSE); + PyObject* recobj= wxPyConstructObject((void*)&rect, wxT("wxRect"), FALSE); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", dcobj, idobj, recobj)); Py_DECREF(dcobj); Py_DECREF(idobj); @@ -659,11 +658,10 @@ static PyObject *_wrap_wxEditableListBox_SetStrings(PyObject *self, PyObject *ar PyObject* item = PySequence_GetItem(_obj1, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg1->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg1->Add(PyString_AsString(str)); #endif + _arg1->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -1790,7 +1788,7 @@ static PyObject *_wrap_wxLEDNumberCtrl_GetValue(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/contrib/gizmos/gizmos.i b/wxPython/contrib/gizmos/gizmos.i index 48b33f4e7c..1af639a5b7 100644 --- a/wxPython/contrib/gizmos/gizmos.i +++ b/wxPython/contrib/gizmos/gizmos.i @@ -272,8 +272,8 @@ public: wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "DrawItem"))) { PyObject* dcobj = wxPyMake_wxObject(&dc); - PyObject* idobj = wxPyConstructObject((void*)&id, "wxTreeItemId", FALSE); - PyObject* recobj= wxPyConstructObject((void*)&rect, "wxRect", FALSE); + PyObject* idobj = wxPyConstructObject((void*)&id, wxT("wxTreeItemId"), FALSE); + PyObject* recobj= wxPyConstructObject((void*)&rect, wxT("wxRect"), FALSE); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", dcobj, idobj, recobj)); Py_DECREF(dcobj); Py_DECREF(idobj); diff --git a/wxPython/contrib/glcanvas/glcanvas.i b/wxPython/contrib/glcanvas/glcanvas.i index 3b15de59f9..cdd8e7fbff 100644 --- a/wxPython/contrib/glcanvas/glcanvas.i +++ b/wxPython/contrib/glcanvas/glcanvas.i @@ -69,7 +69,7 @@ public: ~wxGLContext(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxString& colour); void SwapBuffers(); #ifdef __WXGTK__ @@ -151,7 +151,7 @@ public: %pragma(python) addtomethod = "wxGLCanvasWithContext:val._setOORInfo(self)" void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxString& colour); void SwapBuffers(); wxGLContext* GetContext(); diff --git a/wxPython/contrib/glcanvas/gtk/glcanvas.cpp b/wxPython/contrib/glcanvas/gtk/glcanvas.cpp index 9131be07ce..aba8e8edbe 100644 --- a/wxPython/contrib/glcanvas/gtk/glcanvas.cpp +++ b/wxPython/contrib/glcanvas/gtk/glcanvas.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -129,8 +128,7 @@ static PyObject *_wrap_new_wxGLContext(PyObject *self, PyObject *args, PyObject } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxGLContext. Expected _wxPalette_p."); return NULL; } @@ -211,12 +209,13 @@ static PyObject *_wrap_wxGLContext_SetCurrent(PyObject *self, PyObject *args, Py static PyObject *_wrap_wxGLContext_SetColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxGLContext * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","colour", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxGLContext_SetColour",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGLContext_SetColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -225,14 +224,23 @@ static PyObject *_wrap_wxGLContext_SetColour(PyObject *self, PyObject *args, PyO return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxGLContext_SetColour(_arg0,_arg1); + wxGLContext_SetColour(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} return _resultobj; } @@ -312,8 +320,7 @@ static PyObject *_wrap_wxGLContext_SetupPalette(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGLContext_SetupPalette. Expected _wxPalette_p."); return NULL; } @@ -512,8 +519,7 @@ static PyObject *_wrap_new_wxGLCanvas(PyObject *self, PyObject *args, PyObject * } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxGLCanvas. Expected _wxPalette_p."); return NULL; } @@ -616,8 +622,7 @@ static PyObject *_wrap_new_wxGLCanvasWithContext(PyObject *self, PyObject *args, } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxGLCanvasWithContext. Expected _wxPalette_p."); return NULL; } @@ -677,12 +682,13 @@ static PyObject *_wrap_wxGLCanvas_SetCurrent(PyObject *self, PyObject *args, PyO static PyObject *_wrap_wxGLCanvas_SetColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxGLCanvas * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","colour", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxGLCanvas_SetColour",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGLCanvas_SetColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -691,14 +697,23 @@ static PyObject *_wrap_wxGLCanvas_SetColour(PyObject *self, PyObject *args, PyOb return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxGLCanvas_SetColour(_arg0,_arg1); + wxGLCanvas_SetColour(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} return _resultobj; } diff --git a/wxPython/contrib/glcanvas/gtk/glcanvas.py b/wxPython/contrib/glcanvas/gtk/glcanvas.py index 43722496a2..3f0bd13708 100644 --- a/wxPython/contrib/glcanvas/gtk/glcanvas.py +++ b/wxPython/contrib/glcanvas/gtk/glcanvas.py @@ -47,9 +47,12 @@ class wxGLContextPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,glcanvasc=glcanvasc): - if self.thisown == 1 : - glcanvasc.delete_wxGLContext(self) + def __del__(self, delfunc=glcanvasc.delete_wxGLContext): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetCurrent(self, *_args, **_kwargs): val = apply(glcanvasc.wxGLContext_SetCurrent,(self,) + _args, _kwargs) return val diff --git a/wxPython/contrib/glcanvas/mac/glcanvas.cpp b/wxPython/contrib/glcanvas/mac/glcanvas.cpp index 81d2ef305c..a8f8d62870 100644 --- a/wxPython/contrib/glcanvas/mac/glcanvas.cpp +++ b/wxPython/contrib/glcanvas/mac/glcanvas.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -164,12 +163,13 @@ static PyObject *_wrap_wxGLContext_SetCurrent(PyObject *self, PyObject *args, Py static PyObject *_wrap_wxGLContext_SetColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxGLContext * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","colour", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxGLContext_SetColour",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGLContext_SetColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -178,14 +178,23 @@ static PyObject *_wrap_wxGLContext_SetColour(PyObject *self, PyObject *args, PyO return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxGLContext_SetColour(_arg0,_arg1); + wxGLContext_SetColour(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} return _resultobj; } @@ -335,8 +344,7 @@ static PyObject *_wrap_new_wxGLCanvas(PyObject *self, PyObject *args, PyObject * } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxGLCanvas. Expected _wxPalette_p."); return NULL; } @@ -439,8 +447,7 @@ static PyObject *_wrap_new_wxGLCanvasWithContext(PyObject *self, PyObject *args, } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxGLCanvasWithContext. Expected _wxPalette_p."); return NULL; } @@ -500,12 +507,13 @@ static PyObject *_wrap_wxGLCanvas_SetCurrent(PyObject *self, PyObject *args, PyO static PyObject *_wrap_wxGLCanvas_SetColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxGLCanvas * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","colour", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxGLCanvas_SetColour",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGLCanvas_SetColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -514,14 +522,23 @@ static PyObject *_wrap_wxGLCanvas_SetColour(PyObject *self, PyObject *args, PyOb return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxGLCanvas_SetColour(_arg0,_arg1); + wxGLCanvas_SetColour(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} return _resultobj; } diff --git a/wxPython/contrib/glcanvas/mac/glcanvas.py b/wxPython/contrib/glcanvas/mac/glcanvas.py index 2f13317a2b..163eccb7cc 100644 --- a/wxPython/contrib/glcanvas/mac/glcanvas.py +++ b/wxPython/contrib/glcanvas/mac/glcanvas.py @@ -47,9 +47,12 @@ class wxGLContextPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,glcanvasc=glcanvasc): - if self.thisown == 1 : - glcanvasc.delete_wxGLContext(self) + def __del__(self, delfunc=glcanvasc.delete_wxGLContext): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetCurrent(self, *_args, **_kwargs): val = apply(glcanvasc.wxGLContext_SetCurrent,(self,) + _args, _kwargs) return val diff --git a/wxPython/contrib/glcanvas/msw/glcanvas.cpp b/wxPython/contrib/glcanvas/msw/glcanvas.cpp index 5d7ac821aa..7b58b9da64 100644 --- a/wxPython/contrib/glcanvas/msw/glcanvas.cpp +++ b/wxPython/contrib/glcanvas/msw/glcanvas.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -129,8 +128,7 @@ static PyObject *_wrap_new_wxGLContext(PyObject *self, PyObject *args, PyObject } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxGLContext. Expected _wxPalette_p."); return NULL; } @@ -211,12 +209,13 @@ static PyObject *_wrap_wxGLContext_SetCurrent(PyObject *self, PyObject *args, Py static PyObject *_wrap_wxGLContext_SetColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxGLContext * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","colour", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxGLContext_SetColour",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGLContext_SetColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -225,14 +224,23 @@ static PyObject *_wrap_wxGLContext_SetColour(PyObject *self, PyObject *args, PyO return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxGLContext_SetColour(_arg0,_arg1); + wxGLContext_SetColour(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} return _resultobj; } @@ -382,8 +390,7 @@ static PyObject *_wrap_new_wxGLCanvas(PyObject *self, PyObject *args, PyObject * } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxGLCanvas. Expected _wxPalette_p."); return NULL; } @@ -486,8 +493,7 @@ static PyObject *_wrap_new_wxGLCanvasWithContext(PyObject *self, PyObject *args, } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxGLCanvasWithContext. Expected _wxPalette_p."); return NULL; } @@ -547,12 +553,13 @@ static PyObject *_wrap_wxGLCanvas_SetCurrent(PyObject *self, PyObject *args, PyO static PyObject *_wrap_wxGLCanvas_SetColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxGLCanvas * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","colour", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxGLCanvas_SetColour",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGLCanvas_SetColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -561,14 +568,23 @@ static PyObject *_wrap_wxGLCanvas_SetColour(PyObject *self, PyObject *args, PyOb return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxGLCanvas_SetColour(_arg0,_arg1); + wxGLCanvas_SetColour(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } Py_INCREF(Py_None); _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} return _resultobj; } @@ -702,8 +718,7 @@ static PyObject *_wrap_wxGLCanvas_SetupPalette(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGLCanvas_SetupPalette. Expected _wxPalette_p."); return NULL; } diff --git a/wxPython/contrib/glcanvas/msw/glcanvas.py b/wxPython/contrib/glcanvas/msw/glcanvas.py index 6ae845efc3..a7b7b8dd67 100644 --- a/wxPython/contrib/glcanvas/msw/glcanvas.py +++ b/wxPython/contrib/glcanvas/msw/glcanvas.py @@ -47,9 +47,12 @@ class wxGLContextPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,glcanvasc=glcanvasc): - if self.thisown == 1 : - glcanvasc.delete_wxGLContext(self) + def __del__(self, delfunc=glcanvasc.delete_wxGLContext): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetCurrent(self, *_args, **_kwargs): val = apply(glcanvasc.wxGLContext_SetCurrent,(self,) + _args, _kwargs) return val diff --git a/wxPython/contrib/glcanvas/msw/myglcanvas.cpp b/wxPython/contrib/glcanvas/msw/myglcanvas.cpp index 13bab4a35f..59157560fa 100644 --- a/wxPython/contrib/glcanvas/msw/myglcanvas.cpp +++ b/wxPython/contrib/glcanvas/msw/myglcanvas.cpp @@ -27,15 +27,17 @@ #if wxUSE_GLCANVAS #ifndef WX_PRECOMP -#include <wx/frame.h> + #include "wx/frame.h" + #include "wx/settings.h" + #include "wx/intl.h" + #include "wx/log.h" #endif -#include <wx/msw/private.h> -#include <wx/settings.h> -#include <wx/log.h> +#include "wx/msw/private.h" #include "myglcanvas.h" +const wxChar* wxGLCanvasName = wxT("GLcanvas"); static const wxChar *wxGLCanvasClassName = wxT("wxGLCanvasClass"); static const wxChar *wxGLCanvasClassNameNoRedraw = wxT("wxGLCanvasClassNR"); @@ -108,7 +110,7 @@ void wxGLContext::SetCurrent() */ } -void wxGLContext::SetColour(const char *colour) +void wxGLContext::SetColour(const wxChar *colour) { float r = 0.0; float g = 0.0; @@ -403,7 +405,6 @@ static void AdjustPFDForAttributes(PIXELFORMATDESCRIPTOR& pfd, int *attribList) void wxGLCanvas::SetupPixelFormat(int *attribList) // (HDC hDC) { - int pixelFormat; PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), /* size */ 1, /* version */ @@ -427,13 +428,13 @@ void wxGLCanvas::SetupPixelFormat(int *attribList) // (HDC hDC) AdjustPFDForAttributes(pfd, attribList); - pixelFormat = ChoosePixelFormat((HDC) m_hDC, &pfd); + int pixelFormat = ChoosePixelFormat((HDC) m_hDC, &pfd); if (pixelFormat == 0) { - wxLogWarning(_("ChoosePixelFormat failed.")); + wxLogLastError(_T("ChoosePixelFormat")); } else { - if (SetPixelFormat((HDC) m_hDC, pixelFormat, &pfd) != TRUE) { - wxLogWarning(_("SetPixelFormat failed.")); + if ( !::SetPixelFormat((HDC) m_hDC, pixelFormat, &pfd) ) { + wxLogLastError(_T("SetPixelFormat")); } } } @@ -527,7 +528,7 @@ void wxGLCanvas::SetCurrent() } } -void wxGLCanvas::SetColour(const char *colour) +void wxGLCanvas::SetColour(const wxChar *colour) { if (m_glContext) m_glContext->SetColour(colour); @@ -728,7 +729,7 @@ bool wxGLApp::InitGLVisual(int *attribList) AdjustPFDForAttributes(pfd, attribList); // use DC for whole (root) screen, since no windows have yet been created - pixelFormat = ChoosePixelFormat((HDC) ::GetDC(NULL), &pfd); + pixelFormat = ChoosePixelFormat(ScreenHDC(), &pfd); if (pixelFormat == 0) { wxLogError(_("Failed to initialize OpenGL")); diff --git a/wxPython/contrib/glcanvas/msw/myglcanvas.h b/wxPython/contrib/glcanvas/msw/myglcanvas.h index 5dd269da72..2fe7404e2a 100644 --- a/wxPython/contrib/glcanvas/msw/myglcanvas.h +++ b/wxPython/contrib/glcanvas/msw/myglcanvas.h @@ -24,6 +24,7 @@ #include <wx/scrolwin.h> #include <windows.h> +#include "wx/msw/winundef.h" #include <GL/gl.h> @@ -69,7 +70,7 @@ public: ~wxGLContext(); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); @@ -83,21 +84,26 @@ public: wxWindow* m_window; }; + +extern const wxChar* wxGLCanvasName; + + class wxGLCanvas: public wxWindow { DECLARE_CLASS(wxGLCanvas) public: wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette); + const wxString& name = wxGLCanvasName, int *attribList = 0, const wxPalette& palette = wxNullPalette); wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "GLCanvas", + const wxSize& size = wxDefaultSize, long style = 0, const wxString& + name = wxGLCanvasName, int *attribList = (int*) NULL, const wxPalette& palette = wxNullPalette ); wxGLCanvas( wxWindow *parent, const wxGLCanvas *shared = (wxGLCanvas *)NULL, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette ); + const wxString& name = wxGLCanvasName, int *attribList = 0, const wxPalette& palette = wxNullPalette ); ~wxGLCanvas(); @@ -106,7 +112,7 @@ class wxGLCanvas: public wxWindow const wxPoint& pos, const wxSize& size, long style, const wxString& name); void SetCurrent(); - void SetColour(const char *colour); + void SetColour(const wxChar *colour); void SwapBuffers(); void OnSize(wxSizeEvent& event); diff --git a/wxPython/contrib/iewin/IEHtmlWin.cpp b/wxPython/contrib/iewin/IEHtmlWin.cpp index 6214694d96..ad35820d51 100644 --- a/wxPython/contrib/iewin/IEHtmlWin.cpp +++ b/wxPython/contrib/iewin/IEHtmlWin.cpp @@ -37,23 +37,23 @@ private: public: FS_DWebBrowserEvents2(wxIEHtmlWin *iewin) : m_iewin(iewin) {} - virtual ~FS_DWebBrowserEvents2() + virtual ~FS_DWebBrowserEvents2() { } //IDispatch STDMETHODIMP GetIDsOfNames(REFIID r, OLECHAR** o, unsigned int i, LCID l, DISPID* d) - { + { return E_NOTIMPL; }; STDMETHODIMP GetTypeInfo(unsigned int i, LCID l, ITypeInfo** t) - { + { return E_NOTIMPL; }; STDMETHODIMP GetTypeInfoCount(unsigned int* i) - { + { return E_NOTIMPL; }; @@ -72,7 +72,7 @@ public: m_iewin->GetParent()->AddPendingEvent(event); }; - bool Process(WXTYPE etype, wxString text = "", long l1 = 0, long l2 = 0) + bool Process(WXTYPE etype, wxString text = wxEmptyString, long l1 = 0, long l2 = 0) { if (! m_iewin || ! m_iewin->GetParent()) return true; @@ -103,7 +103,7 @@ public: return v.bstrVal; } else - return ""; + return wxEmptyString; }; #define STR_ARG(arg) GetStrArg(pDispParams->rgvarg[arg]) @@ -116,7 +116,7 @@ public: WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, unsigned int * puArgErr) - { + { if (wFlags & DISPATCH_PROPERTYGET) return E_NOTIMPL; @@ -125,21 +125,21 @@ public: case DISPID_BEFORENAVIGATE2: if (Process(wxEVT_COMMAND_MSHTML_BEFORENAVIGATE2, STR_ARG(5))) *pDispParams->rgvarg->pboolVal = VARIANT_FALSE; - else + else *pDispParams->rgvarg->pboolVal = VARIANT_TRUE; break; case DISPID_NEWWINDOW2: if (Process(wxEVT_COMMAND_MSHTML_NEWWINDOW2)) *pDispParams->rgvarg->pboolVal = VARIANT_FALSE; - else + else *pDispParams->rgvarg->pboolVal = VARIANT_TRUE; break; case DISPID_PROGRESSCHANGE: - Post(wxEVT_COMMAND_MSHTML_PROGRESSCHANGE, "", LONG_ARG(1), LONG_ARG(0)); + Post(wxEVT_COMMAND_MSHTML_PROGRESSCHANGE, wxEmptyString, LONG_ARG(1), LONG_ARG(0)); break; - + case DISPID_DOCUMENTCOMPLETE: Post(wxEVT_COMMAND_MSHTML_DOCUMENTCOMPLETE, STR_ARG(0)); break; @@ -183,7 +183,7 @@ wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, - const wxString& name) : + const wxString& name) : wxActiveX(parent, PROGID, id, pos, size, style, name) { SetupBrowser(); @@ -287,12 +287,12 @@ private: istream *m_is; public: - - IStreamAdaptor(istream *is) : IStreamAdaptorBase(), m_is(is) + + IStreamAdaptor(istream *is) : IStreamAdaptorBase(), m_is(is) { wxASSERT(m_is != NULL); } - ~IStreamAdaptor() + ~IStreamAdaptor() { delete m_is; } @@ -314,12 +314,12 @@ private: wxInputStream *m_is; public: - - IwxStreamAdaptor(wxInputStream *is) : IStreamAdaptorBase(), m_is(is) + + IwxStreamAdaptor(wxInputStream *is) : IStreamAdaptorBase(), m_is(is) { wxASSERT(m_is != NULL); } - ~IwxStreamAdaptor() + ~IwxStreamAdaptor() { delete m_is; } @@ -338,7 +338,7 @@ public: void wxIEHtmlWin::LoadUrl(const wxString& url) { VARIANTARG navFlag, targetFrame, postData, headers; - navFlag.vt = VT_EMPTY; + navFlag.vt = VT_EMPTY; navFlag.vt = VT_I2; navFlag.iVal = navNoReadFromCache; targetFrame.vt = VT_EMPTY; @@ -346,8 +346,8 @@ void wxIEHtmlWin::LoadUrl(const wxString& url) headers.vt = VT_EMPTY; HRESULT hret = 0; - hret = m_webBrowser->Navigate((BSTR) (const wchar_t *) url.wc_str(wxConvUTF8), - &navFlag, &targetFrame, &postData, &headers); + hret = m_webBrowser->Navigate((BSTR) (const wchar_t *) url.wc_str(wxConvUTF8), + &navFlag, &targetFrame, &postData, &headers); }; class wxOwnedMemInputStream : public wxMemoryInputStream @@ -358,7 +358,7 @@ public: wxOwnedMemInputStream(char *data, size_t len) : wxMemoryInputStream(data, len), m_data(data) {} - ~wxOwnedMemInputStream() + ~wxOwnedMemInputStream() { free(m_data); } @@ -524,17 +524,17 @@ wxString wxIEHtmlWin::GetStringSelection(bool asHTML) { wxAutoOleInterface<IHTMLTxtRange> tr(GetSelRange(m_oleObject)); if (! tr) - return ""; + return wxEmptyString; BSTR text = NULL; HRESULT hr = E_FAIL; - + if (asHTML) hr = tr->get_htmlText(&text); else hr = tr->get_text(&text); if (hr != S_OK) - return ""; + return wxEmptyString; wxString s = text; SysFreeString(text); @@ -545,41 +545,41 @@ wxString wxIEHtmlWin::GetStringSelection(bool asHTML) wxString wxIEHtmlWin::GetText(bool asHTML) { if (! m_webBrowser.Ok()) - return ""; + return wxEmptyString; // get document dispatch interface IDispatch *iDisp = NULL; HRESULT hr = m_webBrowser->get_Document(&iDisp); if (hr != S_OK) - return ""; + return wxEmptyString; // Query for Document Interface wxAutoOleInterface<IHTMLDocument2> hd(IID_IHTMLDocument2, iDisp); iDisp->Release(); if (! hd.Ok()) - return ""; + return wxEmptyString; // get body element IHTMLElement *_body = NULL; hd->get_body(&_body); if (! _body) - return ""; + return wxEmptyString; wxAutoOleInterface<IHTMLElement> body(_body); // get inner text BSTR text = NULL; hr = E_FAIL; - + if (asHTML) hr = body->get_innerHTML(&text); else hr = body->get_innerText(&text); if (hr != S_OK) - return ""; + return wxEmptyString; wxString s = text; SysFreeString(text); - return s; -}; \ No newline at end of file + return s; +}; diff --git a/wxPython/contrib/iewin/iewin.cpp b/wxPython/contrib/iewin/iewin.cpp index 11fb5ef617..9bd052c734 100644 --- a/wxPython/contrib/iewin/iewin.cpp +++ b/wxPython/contrib/iewin/iewin.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -177,7 +176,7 @@ static PyObject *_wrap_wxMSHTMLEvent_GetText1(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -589,7 +588,7 @@ static PyObject *_wrap_wxIEHtmlWin_GetStringSelection(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -629,7 +628,7 @@ static PyObject *_wrap_wxIEHtmlWin_GetText(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -752,8 +751,8 @@ static PyObject *_wrap_wxIEHtmlWin_GoSearch(PyObject *self, PyObject *args, PyOb return _resultobj; } -#define wxIEHtmlWin_Refresh(_swigobj,_swigarg0) (_swigobj->Refresh(_swigarg0)) -static PyObject *_wrap_wxIEHtmlWin_Refresh(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxIEHtmlWin_RefreshPage(_swigobj,_swigarg0) (_swigobj->Refresh(_swigarg0)) +static PyObject *_wrap_wxIEHtmlWin_RefreshPage(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxIEHtmlWin * _arg0; @@ -762,18 +761,18 @@ static PyObject *_wrap_wxIEHtmlWin_Refresh(PyObject *self, PyObject *args, PyObj char *_kwnames[] = { "self","level", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxIEHtmlWin_Refresh",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxIEHtmlWin_RefreshPage",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIEHtmlWin_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIEHtmlWin_Refresh. Expected _wxIEHtmlWin_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIEHtmlWin_RefreshPage. Expected _wxIEHtmlWin_p."); return NULL; } } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxIEHtmlWin_Refresh(_arg0,_arg1); + _result = (bool )wxIEHtmlWin_RefreshPage(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -811,7 +810,7 @@ static PyObject *_wrap_wxIEHtmlWin_Stop(PyObject *self, PyObject *args, PyObject static PyMethodDef iewincMethods[] = { { "wxIEHtmlWin_Stop", (PyCFunction) _wrap_wxIEHtmlWin_Stop, METH_VARARGS | METH_KEYWORDS }, - { "wxIEHtmlWin_Refresh", (PyCFunction) _wrap_wxIEHtmlWin_Refresh, METH_VARARGS | METH_KEYWORDS }, + { "wxIEHtmlWin_RefreshPage", (PyCFunction) _wrap_wxIEHtmlWin_RefreshPage, METH_VARARGS | METH_KEYWORDS }, { "wxIEHtmlWin_GoSearch", (PyCFunction) _wrap_wxIEHtmlWin_GoSearch, METH_VARARGS | METH_KEYWORDS }, { "wxIEHtmlWin_GoHome", (PyCFunction) _wrap_wxIEHtmlWin_GoHome, METH_VARARGS | METH_KEYWORDS }, { "wxIEHtmlWin_GoForward", (PyCFunction) _wrap_wxIEHtmlWin_GoForward, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/contrib/iewin/iewin.i b/wxPython/contrib/iewin/iewin.i index 8a90a95c0c..76384ee1d0 100644 --- a/wxPython/contrib/iewin/iewin.i +++ b/wxPython/contrib/iewin/iewin.i @@ -117,7 +117,7 @@ public: bool GoForward(); bool GoHome(); bool GoSearch(); - bool Refresh(wxIEHtmlRefreshLevel level); + %name(RefreshPage)bool Refresh(wxIEHtmlRefreshLevel level); bool Stop(); }; diff --git a/wxPython/contrib/iewin/iewin.py b/wxPython/contrib/iewin/iewin.py index 9c3f24f122..1bc59d7e3a 100644 --- a/wxPython/contrib/iewin/iewin.py +++ b/wxPython/contrib/iewin/iewin.py @@ -125,8 +125,8 @@ class wxIEHtmlWinPtr(wxWindowPtr): def GoSearch(self, *_args, **_kwargs): val = apply(iewinc.wxIEHtmlWin_GoSearch,(self,) + _args, _kwargs) return val - def Refresh(self, *_args, **_kwargs): - val = apply(iewinc.wxIEHtmlWin_Refresh,(self,) + _args, _kwargs) + def RefreshPage(self, *_args, **_kwargs): + val = apply(iewinc.wxIEHtmlWin_RefreshPage,(self,) + _args, _kwargs) return val def Stop(self, *_args, **_kwargs): val = apply(iewinc.wxIEHtmlWin_Stop,(self,) + _args, _kwargs) diff --git a/wxPython/contrib/iewin/wxactivex.cpp b/wxPython/contrib/iewin/wxactivex.cpp index 779042ed0b..34fd2b1e2f 100644 --- a/wxPython/contrib/iewin/wxactivex.cpp +++ b/wxPython/contrib/iewin/wxactivex.cpp @@ -33,7 +33,7 @@ END_EVENT_TABLE() class wxActiveX; -class FrameSite : +class FrameSite : public IOleClientSite, public IOleInPlaceSiteEx, public IOleInPlaceFrame, @@ -60,7 +60,7 @@ public: STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS); STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS); STDMETHODIMP SetActiveObject(IOleInPlaceActiveObject*, LPCOLESTR); - + //IOleInPlaceFrame STDMETHODIMP InsertMenus(HMENU, LPOLEMENUGROUPWIDTHS); STDMETHODIMP SetMenu(HMENU, HOLEMENU, HWND); @@ -73,7 +73,7 @@ public: STDMETHODIMP CanInPlaceActivate(); STDMETHODIMP OnInPlaceActivate(); STDMETHODIMP OnUIActivate(); - STDMETHODIMP GetWindowContext(IOleInPlaceFrame**, IOleInPlaceUIWindow**, + STDMETHODIMP GetWindowContext(IOleInPlaceFrame**, IOleInPlaceUIWindow**, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO); STDMETHODIMP Scroll(SIZE); STDMETHODIMP OnUIDeactivate(BOOL); @@ -119,7 +119,7 @@ public: STDMETHODIMP GetObject(LPOLESTR, DWORD, IBindCtx*, REFIID, void**); STDMETHODIMP GetObjectStorage(LPOLESTR, IBindCtx*, REFIID, void**); STDMETHODIMP IsRunning(LPOLESTR); - + //IDispatch STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR**, unsigned int, LCID, DISPID*); STDMETHODIMP GetTypeInfo(unsigned int, LCID, ITypeInfo**); @@ -148,7 +148,7 @@ protected: bool m_bInPlaceActive; bool m_bUIActive; bool m_bWindowless; - + LCID m_nAmbientLocale; @@ -225,14 +225,14 @@ wxActiveX::~wxActiveX() }; m_connections.clear(); - if (m_oleInPlaceObject.Ok()) + if (m_oleInPlaceObject.Ok()) { m_oleInPlaceObject->InPlaceDeactivate(); m_oleInPlaceObject->UIDeactivate(); } - if (m_oleObject.Ok()) + if (m_oleObject.Ok()) { if (m_docAdviseCookie != 0) m_oleObject->Unadvise(m_docAdviseCookie); @@ -268,11 +268,11 @@ void wxActiveX::CreateActiveX(REFCLSID clsid) GetTypeInfo(); // Get IOleObject interface - hret = m_oleObject.QueryInterface(IID_IOleObject, m_ActiveX); + hret = m_oleObject.QueryInterface(IID_IOleObject, m_ActiveX); wxASSERT(SUCCEEDED(hret)); // get IViewObject Interface - hret = m_viewObject.QueryInterface(IID_IViewObject, m_ActiveX); + hret = m_viewObject.QueryInterface(IID_IViewObject, m_ActiveX); wxASSERT(SUCCEEDED(hret)); // document advise @@ -529,23 +529,23 @@ private: public: wxActiveXEvents(wxActiveX *ax) : m_activeX(ax) {} - virtual ~wxActiveXEvents() + virtual ~wxActiveXEvents() { } //IDispatch STDMETHODIMP GetIDsOfNames(REFIID r, OLECHAR** o, unsigned int i, LCID l, DISPID* d) - { + { return E_NOTIMPL; }; STDMETHODIMP GetTypeInfo(unsigned int i, LCID l, ITypeInfo** t) - { + { return E_NOTIMPL; }; STDMETHODIMP GetTypeInfoCount(unsigned int* i) - { + { return E_NOTIMPL; }; @@ -591,7 +591,7 @@ public: if (px.IsOut()) { wxVariant& vx = event.m_params[nArg - i - 1]; - + VariantToMSWVariant(vx, va); }; }; @@ -605,7 +605,7 @@ public: WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, unsigned int * puArgErr) - { + { if (wFlags & (DISPATCH_PROPERTYGET | DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF)) return E_NOTIMPL; @@ -616,7 +616,7 @@ public: if (mid == m_activeX->m_eventsIdx.end()) return S_OK; - int funcIdx = mid->second; + int funcIdx = mid->second; wxActiveX::FuncX &func = m_activeX->m_events[funcIdx]; @@ -697,12 +697,12 @@ wxVariant& wxActiveXEvent::operator[] (wxString name) return m_params[i]; }; - wxString err = "wxActiveXEvent::operator[] invalid name <" + name + ">"; - err += "\r\nValid Names = :\r\n"; + wxString err = wxT("wxActiveXEvent::operator[] invalid name <") + name + wxT(">"); + err += wxT("\r\nValid Names = :\r\n"); for (i = 0; i < m_params.GetCount(); i++) { err += m_params[i].GetName(); - err += "\r\n"; + err += wxT("\r\n"); }; wxASSERT_MSG(false, err); @@ -713,15 +713,15 @@ wxVariant& wxActiveXEvent::operator[] (wxString name) void wxActiveX::GetTypeInfo() { /* - We are currently only interested in the IDispatch interface + We are currently only interested in the IDispatch interface to the control. For dual interfaces (TypeKind = TKIND_INTERFACE) - we should drill down through the inheritance + we should drill down through the inheritance (using TYPEATTR->cImplTypes) and GetRefTypeOfImplType(n) - and retrieve all the func names etc that way, then generate a C++ + and retrieve all the func names etc that way, then generate a C++ header file for it. - But we don't do this and probably never will, so if we have a DUAL - interface then we query for the IDispatch + But we don't do this and probably never will, so if we have a DUAL + interface then we query for the IDispatch via GetRefTypeOfImplType(-1). */ @@ -772,12 +772,12 @@ void wxActiveX::GetTypeInfo() { if (impTypeFlags & IMPLTYPEFLAG_FSOURCE) { - WXOLE_TRACEOUT("Default Event Sink"); + WXOLE_TRACEOUT(wxT("Default Event Sink")); defEventSink = true; } else { - WXOLE_TRACEOUT("Default Interface"); + WXOLE_TRACEOUT(wxT("Default Interface")); } }; @@ -804,7 +804,7 @@ void wxActiveX::GetTypeInfo(ITypeInfo *ti, bool defEventSink) if (ta->typekind == TKIND_DISPATCH) { - WXOLE_TRACEOUT("GUID = " << GetIIDName(ta->guid).c_str()); + WXOLE_TRACEOUT(wxT("GUID = ") << GetIIDName(ta->guid).c_str()); if (defEventSink) { @@ -831,7 +831,7 @@ void wxActiveX::GetTypeInfo(ITypeInfo *ti, bool defEventSink) { wxString name = anames[0]; - WXOLE_TRACEOUT("Name " << i << " = " << name.c_str()); + WXOLE_TRACEOUT(wxT("Name ") << i << wxT(" = ") << name.c_str()); SysFreeString(anames[0]); if (defEventSink) @@ -901,11 +901,11 @@ HRESULT wxActiveX::ConnectAdvise(REFIID riid, IUnknown *events) wxAutoOleInterface<IConnectionPointContainer> cpContainer(IID_IConnectionPointContainer, m_ActiveX); if (! cpContainer.Ok()) return E_FAIL; - + HRESULT hret = cpContainer->FindConnectionPoint(riid, cp.GetRef()); if (! SUCCEEDED(hret)) return hret; - + hret = cp->Advise(events, &adviseCookie); if (SUCCEEDED(hret)) @@ -979,7 +979,7 @@ void wxActiveX::OnSize(wxSizeEvent& event) m_oleObject->SetExtent(DVASPECT_CONTENT, &sz); }; - if (m_oleInPlaceObject.Ok()) + if (m_oleInPlaceObject.Ok()) m_oleInPlaceObject->SetObjectRects(&posRect, &posRect); } @@ -1002,7 +1002,7 @@ void wxActiveX::OnPaint(wxPaintEvent& event) ::RedrawWindow(m_oleObjectHWND, NULL, NULL, RDW_INTERNALPAINT); { RECTL *prcBounds = (RECTL *) &posRect; - m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, + m_viewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, (HDC)dc.GetHDC(), prcBounds, NULL, NULL, 0); } } @@ -1018,11 +1018,11 @@ void wxActiveX::OnPaint(wxPaintEvent& event) void wxActiveX::OnMouse(wxMouseEvent& event) { - if (m_oleObjectHWND == NULL) - { - wxLogTrace(wxT("no oleInPlaceObject")); - event.Skip(); - return; + if (m_oleObjectHWND == NULL) + { + wxLogTrace(wxT("no oleInPlaceObject")); + event.Skip(); + return; } wxLogTrace(wxT("mouse event")); @@ -1031,52 +1031,52 @@ void wxActiveX::OnMouse(wxMouseEvent& event) LPARAM lParam = 0; LRESULT lResult = 0; - if (event.m_metaDown) + if (event.m_metaDown) wParam |= MK_CONTROL; - if (event.m_shiftDown) + if (event.m_shiftDown) wParam |= MK_SHIFT; - if (event.m_leftDown) + if (event.m_leftDown) wParam |= MK_LBUTTON; - if (event.m_middleDown) + if (event.m_middleDown) wParam |= MK_MBUTTON; - if (event.m_rightDown) + if (event.m_rightDown) wParam |= MK_RBUTTON; lParam = event.m_x << 16; lParam |= event.m_y; - if (event.LeftDown()) + if (event.LeftDown()) msg = WM_LBUTTONDOWN; - else if (event.LeftDClick()) + else if (event.LeftDClick()) msg = WM_LBUTTONDBLCLK; - else if (event.LeftUp()) + else if (event.LeftUp()) msg = WM_LBUTTONUP; - else if (event.MiddleDown()) + else if (event.MiddleDown()) msg = WM_MBUTTONDOWN; - else if (event.MiddleDClick()) + else if (event.MiddleDClick()) msg = WM_MBUTTONDBLCLK; - else if (event.MiddleUp()) + else if (event.MiddleUp()) msg = WM_MBUTTONUP; - else if (event.RightDown()) + else if (event.RightDown()) msg = WM_RBUTTONDOWN; - else if (event.RightDClick()) + else if (event.RightDClick()) msg = WM_RBUTTONDBLCLK; - else if (event.RightUp()) + else if (event.RightUp()) msg = WM_RBUTTONUP; - else if (event.Moving() || event.Dragging()) + else if (event.Moving() || event.Dragging()) msg = WM_MOUSEMOVE; wxString log; - if (msg == 0) - { + if (msg == 0) + { wxLogTrace(wxT("no message")); - event.Skip(); return; + event.Skip(); return; }; - if (!::SendMessage(m_oleObjectHWND, msg, wParam, lParam)) - { + if (!::SendMessage(m_oleObjectHWND, msg, wParam, lParam)) + { wxLogTrace(wxT("msg not delivered")); - event.Skip(); - return; + event.Skip(); + return; }; wxLogTrace(wxT("msg sent")); @@ -1106,13 +1106,13 @@ long wxActiveX::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) void wxActiveX::OnSetFocus(wxFocusEvent& event) { - if (m_oleInPlaceActiveObject.Ok()) + if (m_oleInPlaceActiveObject.Ok()) m_oleInPlaceActiveObject->OnFrameWindowActivate(TRUE); } void wxActiveX::OnKillFocus(wxFocusEvent& event) { - if (m_oleInPlaceActiveObject.Ok()) + if (m_oleInPlaceActiveObject.Ok()) m_oleInPlaceActiveObject->OnFrameWindowActivate(FALSE); } @@ -1132,7 +1132,7 @@ FrameSite::FrameSite(wxActiveX * win) m_bAmbientShowHatching = true; m_bAmbientShowGrabHandles = true; m_bAmbientAppearance = true; - + m_hDCBuffer = NULL; m_hWndParent = (HWND)m_window->GetHWND(); } @@ -1175,7 +1175,7 @@ HRESULT FrameSite::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, HRESULT hr; - if (pVarResult == NULL) + if (pVarResult == NULL) return E_INVALIDARG; //The most common case is boolean, use as an initial type @@ -1251,7 +1251,7 @@ HRESULT FrameSite::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, HRESULT FrameSite::GetWindow(HWND * phwnd) { WXOLE_TRACE("IOleWindow::GetWindow"); - if (phwnd == NULL) + if (phwnd == NULL) return E_INVALIDARG; (*phwnd) = m_hWndParent; return S_OK; @@ -1268,7 +1268,7 @@ HRESULT FrameSite::ContextSensitiveHelp(BOOL fEnterMode) HRESULT FrameSite::GetBorder(LPRECT lprectBorder) { WXOLE_TRACE("IOleInPlaceUIWindow::GetBorder"); - if (lprectBorder == NULL) + if (lprectBorder == NULL) return E_INVALIDARG; return INPLACE_E_NOTOOLSPACE; } @@ -1276,7 +1276,7 @@ HRESULT FrameSite::GetBorder(LPRECT lprectBorder) HRESULT FrameSite::RequestBorderSpace(LPCBORDERWIDTHS pborderwidths) { WXOLE_TRACE("IOleInPlaceUIWindow::RequestBorderSpace"); - if (pborderwidths == NULL) + if (pborderwidths == NULL) return E_INVALIDARG; return INPLACE_E_NOTOOLSPACE; } @@ -1373,9 +1373,9 @@ HRESULT FrameSite::GetWindowContext(IOleInPlaceFrame **ppFrame, if (ppFrame == NULL || ppDoc == NULL || lprcPosRect == NULL || lprcClipRect == NULL || lpFrameInfo == NULL) { - if (ppFrame != NULL) + if (ppFrame != NULL) (*ppFrame) = NULL; - if (ppDoc != NULL) + if (ppDoc != NULL) (*ppDoc) = NULL; return E_INVALIDARG; } @@ -1465,7 +1465,7 @@ HRESULT FrameSite::OnInPlaceActivateEx(BOOL * pfNoRedraw, DWORD dwFlags) { WXOLE_TRACE("IOleInPlaceSiteEx::OnInPlaceActivateEx"); OleLockRunning(m_window->m_ActiveX, TRUE, FALSE); - if (pfNoRedraw) + if (pfNoRedraw) (*pfNoRedraw) = FALSE; return S_OK; } @@ -1502,9 +1502,9 @@ HRESULT FrameSite::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, HRESULT FrameSite::GetContainer(LPOLECONTAINER * ppContainer) { WXOLE_TRACE("IOleClientSite::GetContainer"); - if (ppContainer == NULL) + if (ppContainer == NULL) return E_INVALIDARG; - + HRESULT hr = QueryInterface(IID_IOleContainer, (void**)(ppContainer)); wxASSERT(SUCCEEDED(hr)); @@ -1557,26 +1557,26 @@ HRESULT FrameSite::LockContainer(BOOL fLock) //IOleItemContainer -HRESULT FrameSite::GetObject(LPOLESTR pszItem, DWORD dwSpeedNeeded, +HRESULT FrameSite::GetObject(LPOLESTR pszItem, DWORD dwSpeedNeeded, IBindCtx * pbc, REFIID riid, void ** ppvObject) { WXOLE_TRACE("IOleItemContainer::GetObject"); - if (pszItem == NULL) + if (pszItem == NULL) return E_INVALIDARG; - if (ppvObject == NULL) + if (ppvObject == NULL) return E_INVALIDARG; *ppvObject = NULL; return MK_E_NOOBJECT; } -HRESULT FrameSite::GetObjectStorage(LPOLESTR pszItem, IBindCtx * pbc, +HRESULT FrameSite::GetObjectStorage(LPOLESTR pszItem, IBindCtx * pbc, REFIID riid, void ** ppvStorage) { WXOLE_TRACE("IOleItemContainer::GetObjectStorage"); - if (pszItem == NULL) + if (pszItem == NULL) return E_INVALIDARG; - if (ppvStorage == NULL) + if (ppvStorage == NULL) return E_INVALIDARG; *ppvStorage = NULL; @@ -1586,7 +1586,7 @@ HRESULT FrameSite::GetObjectStorage(LPOLESTR pszItem, IBindCtx * pbc, HRESULT FrameSite::IsRunning(LPOLESTR pszItem) { WXOLE_TRACE("IOleItemContainer::IsRunning"); - if (pszItem == NULL) + if (pszItem == NULL) return E_INVALIDARG; return MK_E_NOOBJECT; @@ -1651,7 +1651,7 @@ HRESULT FrameSite::ShowPropertyFrame() //IOleCommandTarget -HRESULT FrameSite::QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds, +HRESULT FrameSite::QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds, OLECMD * prgCmds, OLECMDTEXT * pCmdTet) { WXOLE_TRACE("IOleCommandTarget::QueryStatus"); @@ -1670,8 +1670,8 @@ HRESULT FrameSite::QueryStatus(const GUID * pguidCmdGroup, ULONG cCmds, return S_OK; } -HRESULT FrameSite::Exec(const GUID * pguidCmdGroup, DWORD nCmdID, - DWORD nCmdExecOpt, VARIANTARG * pVaIn, +HRESULT FrameSite::Exec(const GUID * pguidCmdGroup, DWORD nCmdID, + DWORD nCmdExecOpt, VARIANTARG * pVaIn, VARIANTARG * pVaOut) { WXOLE_TRACE("IOleCommandTarget::Exec"); @@ -1775,49 +1775,49 @@ wxString OLEHResultToString(HRESULT hr) switch (hr) { case S_OK: - return ""; + return wxEmptyString; case OLECMDERR_E_UNKNOWNGROUP: - return "The pguidCmdGroup parameter is not NULL but does not specify a recognized command group."; + return wxT("The pguidCmdGroup parameter is not NULL but does not specify a recognized command group."); case OLECMDERR_E_NOTSUPPORTED: - return "The nCmdID parameter is not a valid command in the group identified by pguidCmdGroup."; + return wxT("The nCmdID parameter is not a valid command in the group identified by pguidCmdGroup."); case OLECMDERR_E_DISABLED: - return "The command identified by nCmdID is currently disabled and cannot be executed."; + return wxT("The command identified by nCmdID is currently disabled and cannot be executed."); case OLECMDERR_E_NOHELP: - return "The caller has asked for help on the command identified by nCmdID, but no help is available."; + return wxT("The caller has asked for help on the command identified by nCmdID, but no help is available."); case OLECMDERR_E_CANCELED: - return "The user canceled the execution of the command."; + return wxT("The user canceled the execution of the command."); case E_INVALIDARG: - return "E_INVALIDARG"; + return wxT("E_INVALIDARG"); case E_OUTOFMEMORY: - return "E_OUTOFMEMORY"; + return wxT("E_OUTOFMEMORY"); case E_NOINTERFACE: - return "E_NOINTERFACE"; + return wxT("E_NOINTERFACE"); case E_UNEXPECTED: - return "E_UNEXPECTED"; + return wxT("E_UNEXPECTED"); case STG_E_INVALIDFLAG: - return "STG_E_INVALIDFLAG"; + return wxT("STG_E_INVALIDFLAG"); case E_FAIL: - return "E_FAIL"; + return wxT("E_FAIL"); case E_NOTIMPL: - return "E_NOTIMPL"; + return wxT("E_NOTIMPL"); default: { - char buf[64]; - sprintf(buf, "Unknown - 0x%X", hr); - return wxString(buf); + wxString buf; + buf.Printf(wxT("Unknown - 0x%X"), hr); + return buf; } }; }; @@ -1826,7 +1826,7 @@ wxString OLEHResultToString(HRESULT hr) wxString GetIIDName(REFIID riid) { // an association between symbolic name and numeric value of an IID - struct KNOWN_IID + struct KNOWN_IID { const IID *pIid; const wxChar *szName; @@ -1836,7 +1836,7 @@ wxString GetIIDName(REFIID riid) #define ADD_KNOWN_IID(name) { &IID_I##name, _T(#name) } #define ADD_KNOWN_GUID(name) { &name, _T(#name) } - static const KNOWN_IID aKnownIids[] = + static const KNOWN_IID aKnownIids[] = { ADD_KNOWN_IID(AdviseSink), ADD_KNOWN_IID(AdviseSink2), @@ -1930,9 +1930,9 @@ wxString GetIIDName(REFIID riid) #undef ADD_KNOWN_GUID // try to find the interface in the table - for ( size_t ui = 0; ui < WXSIZEOF(aKnownIids); ui++ ) + for ( size_t ui = 0; ui < WXSIZEOF(aKnownIids); ui++ ) { - if ( riid == *aKnownIids[ui].pIid ) + if ( riid == *aKnownIids[ui].pIid ) { return aKnownIids[ui].szName; } @@ -1948,5 +1948,5 @@ wxString GetIIDName(REFIID riid) return s; } else - return "StringFromIID() error"; + return wxT("StringFromIID() error"); } diff --git a/wxPython/contrib/ogl/ogl.cpp b/wxPython/contrib/ogl/ogl.cpp index da700b564f..e0fd23c7e2 100644 --- a/wxPython/contrib/ogl/ogl.cpp +++ b/wxPython/contrib/ogl/ogl.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/contrib/ogl/oglbasic.cpp b/wxPython/contrib/ogl/oglbasic.cpp index ab32951076..a328db00e5 100644 --- a/wxPython/contrib/ogl/oglbasic.cpp +++ b/wxPython/contrib/ogl/oglbasic.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -467,7 +466,7 @@ static PyObject *_wrap_wxShapeRegion_GetText(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -759,7 +758,7 @@ static PyObject *_wrap_wxShapeRegion_GetName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -796,7 +795,7 @@ static PyObject *_wrap_wxShapeRegion_GetColour(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -904,7 +903,7 @@ static PyObject *_wrap_wxShapeRegion_GetPenColour(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1489,8 +1488,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDraw(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -1526,8 +1524,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawContents(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -1565,8 +1562,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawBranches(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -1603,8 +1599,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMoveLinks(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -1640,8 +1635,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnErase(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -1677,8 +1671,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnEraseContents(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -1714,8 +1707,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnHighlight(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -1884,8 +1876,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMovePre(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -1927,8 +1918,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMovePost(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -2167,8 +2157,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawOutline(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -2204,8 +2193,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnDrawControlPoints(PyObject *se } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -2241,8 +2229,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnEraseControlPoints(PyObject *s } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -2280,8 +2267,7 @@ static PyObject *_wrap_wxPyShapeEvtHandler_base_OnMoveLink(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeEvtHandler_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -4524,8 +4510,7 @@ static PyObject *_wrap_wxPyShape_Move(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Move. Expected _wxDC_p."); return NULL; } @@ -4562,8 +4547,7 @@ static PyObject *_wrap_wxPyShape_Erase(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Erase. Expected _wxDC_p."); return NULL; } @@ -4599,8 +4583,7 @@ static PyObject *_wrap_wxPyShape_EraseContents(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_EraseContents. Expected _wxDC_p."); return NULL; } @@ -4636,8 +4619,7 @@ static PyObject *_wrap_wxPyShape_Draw(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Draw. Expected _wxDC_p."); return NULL; } @@ -4701,8 +4683,7 @@ static PyObject *_wrap_wxPyShape_MoveLinks(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_MoveLinks. Expected _wxDC_p."); return NULL; } @@ -4738,8 +4719,7 @@ static PyObject *_wrap_wxPyShape_DrawContents(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_DrawContents. Expected _wxDC_p."); return NULL; } @@ -5158,8 +5138,7 @@ static PyObject *_wrap_wxPyShape_FormatText(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_FormatText. Expected _wxDC_p."); return NULL; } @@ -5397,7 +5376,7 @@ static PyObject *_wrap_wxPyShape_GetTextColour(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5503,7 +5482,7 @@ static PyObject *_wrap_wxPyShape_GetRegionName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5788,8 +5767,7 @@ static PyObject *_wrap_wxPyShape_FindRegionNames(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxStringList_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxStringList_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_FindRegionNames. Expected _wxStringList_p."); return NULL; } @@ -6173,8 +6151,7 @@ static PyObject *_wrap_wxPyShape_EraseLinks(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_EraseLinks. Expected _wxDC_p."); return NULL; } @@ -6214,8 +6191,7 @@ static PyObject *_wrap_wxPyShape_DrawLinks(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_DrawLinks. Expected _wxDC_p."); return NULL; } @@ -6257,8 +6233,7 @@ static PyObject *_wrap_wxPyShape_MoveLineToNewAttachment(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_MoveLineToNewAttachment. Expected _wxDC_p."); return NULL; } @@ -6889,8 +6864,7 @@ static PyObject *_wrap_wxPyShape_Copy(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Copy. Expected _wxPyShape_p."); return NULL; } @@ -6926,8 +6900,7 @@ static PyObject *_wrap_wxPyShape_CopyWithHandler(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPyShape_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_CopyWithHandler. Expected _wxPyShape_p."); return NULL; } @@ -7050,8 +7023,7 @@ static PyObject *_wrap_wxPyShape_Recentre(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_Recentre. Expected _wxDC_p."); return NULL; } @@ -7087,8 +7059,7 @@ static PyObject *_wrap_wxPyShape_ClearPointList(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxList_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxList_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_ClearPointList. Expected _wxList_p."); return NULL; } @@ -7212,8 +7183,7 @@ static PyObject *_wrap_wxPyShape_base_OnDraw(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -7249,8 +7219,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawContents(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -7288,8 +7257,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawBranches(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -7326,8 +7294,7 @@ static PyObject *_wrap_wxPyShape_base_OnMoveLinks(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -7363,8 +7330,7 @@ static PyObject *_wrap_wxPyShape_base_OnErase(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -7400,8 +7366,7 @@ static PyObject *_wrap_wxPyShape_base_OnEraseContents(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -7437,8 +7402,7 @@ static PyObject *_wrap_wxPyShape_base_OnHighlight(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -7607,8 +7571,7 @@ static PyObject *_wrap_wxPyShape_base_OnMovePre(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -7650,8 +7613,7 @@ static PyObject *_wrap_wxPyShape_base_OnMovePost(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -7890,8 +7852,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawOutline(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -7927,8 +7888,7 @@ static PyObject *_wrap_wxPyShape_base_OnDrawControlPoints(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -7964,8 +7924,7 @@ static PyObject *_wrap_wxPyShape_base_OnEraseControlPoints(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -8003,8 +7962,7 @@ static PyObject *_wrap_wxPyShape_base_OnMoveLink(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } diff --git a/wxPython/contrib/ogl/oglbasic.i b/wxPython/contrib/ogl/oglbasic.i index 806c6b32ec..7220270323 100644 --- a/wxPython/contrib/ogl/oglbasic.i +++ b/wxPython/contrib/ogl/oglbasic.i @@ -303,7 +303,7 @@ public: void ClearText(int regionId = 0); void RemoveLine(wxPyLineShape *line); -#ifdef PROLOGIO +#ifdef wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); void ReadConstraints(wxExpr *clause, wxExprDatabase *database); diff --git a/wxPython/contrib/ogl/oglcanvas.cpp b/wxPython/contrib/ogl/oglcanvas.cpp index 23965c2fc8..83ff03ea0d 100644 --- a/wxPython/contrib/ogl/oglcanvas.cpp +++ b/wxPython/contrib/ogl/oglcanvas.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -199,8 +198,7 @@ static PyObject *_wrap_wxDiagram_Clear(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_Clear. Expected _wxDC_p."); return NULL; } @@ -268,8 +266,7 @@ static PyObject *_wrap_wxDiagram_DrawOutline(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_DrawOutline. Expected _wxDC_p."); return NULL; } @@ -552,156 +549,6 @@ static PyObject *_wrap_wxDiagram_InsertShape(PyObject *self, PyObject *args, PyO return _resultobj; } -#define wxDiagram_LoadFile(_swigobj,_swigarg0) (_swigobj->LoadFile(_swigarg0)) -static PyObject *_wrap_wxDiagram_LoadFile(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxDiagram * _arg0; - wxString * _arg1; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - char *_kwnames[] = { "self","filename", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_LoadFile",_kwnames,&_argo0,&_obj1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_LoadFile. Expected _wxDiagram_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDiagram_LoadFile(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj1) - delete _arg1; -} - return _resultobj; -} - -#define wxDiagram_ReadContainerGeometry(_swigobj,_swigarg0) (_swigobj->ReadContainerGeometry(_swigarg0)) -static PyObject *_wrap_wxDiagram_ReadContainerGeometry(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxDiagram * _arg0; - wxExprDatabase * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","database", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_ReadContainerGeometry",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_ReadContainerGeometry. Expected _wxDiagram_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExprDatabase_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_ReadContainerGeometry. Expected _wxExprDatabase_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxDiagram_ReadContainerGeometry(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - -#define wxDiagram_ReadLines(_swigobj,_swigarg0) (_swigobj->ReadLines(_swigarg0)) -static PyObject *_wrap_wxDiagram_ReadLines(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxDiagram * _arg0; - wxExprDatabase * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","database", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_ReadLines",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_ReadLines. Expected _wxDiagram_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExprDatabase_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_ReadLines. Expected _wxExprDatabase_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxDiagram_ReadLines(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - -#define wxDiagram_ReadNodes(_swigobj,_swigarg0) (_swigobj->ReadNodes(_swigarg0)) -static PyObject *_wrap_wxDiagram_ReadNodes(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxDiagram * _arg0; - wxExprDatabase * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","database", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_ReadNodes",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_ReadNodes. Expected _wxDiagram_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExprDatabase_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_ReadNodes. Expected _wxExprDatabase_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxDiagram_ReadNodes(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - #define wxDiagram_RecentreAll(_swigobj,_swigarg0) (_swigobj->RecentreAll(_swigarg0)) static PyObject *_wrap_wxDiagram_RecentreAll(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -722,8 +569,7 @@ static PyObject *_wrap_wxDiagram_RecentreAll(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_RecentreAll. Expected _wxDC_p."); return NULL; } @@ -759,8 +605,7 @@ static PyObject *_wrap_wxDiagram_Redraw(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDiagram_Redraw. Expected _wxDC_p."); return NULL; } @@ -841,45 +686,6 @@ static PyObject *_wrap_wxDiagram_RemoveShape(PyObject *self, PyObject *args, PyO return _resultobj; } -#define wxDiagram_SaveFile(_swigobj,_swigarg0) (_swigobj->SaveFile(_swigarg0)) -static PyObject *_wrap_wxDiagram_SaveFile(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxDiagram * _arg0; - wxString * _arg1; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - char *_kwnames[] = { "self","filename", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDiagram_SaveFile",_kwnames,&_argo0,&_obj1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDiagram_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDiagram_SaveFile. Expected _wxDiagram_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDiagram_SaveFile(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj1) - delete _arg1; -} - return _resultobj; -} - #define wxDiagram_SetCanvas(_swigobj,_swigarg0) (_swigobj->SetCanvas(_swigarg0)) static PyObject *_wrap_wxDiagram_SetCanvas(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1777,8 +1583,7 @@ static PyObject *_wrap_wxPyShapeCanvas_Redraw(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyShapeCanvas_Redraw. Expected _wxDC_p."); return NULL; } @@ -1948,15 +1753,10 @@ static PyMethodDef oglcanvascMethods[] = { { "wxDiagram_SetMouseTolerance", (PyCFunction) _wrap_wxDiagram_SetMouseTolerance, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_SetGridSpacing", (PyCFunction) _wrap_wxDiagram_SetGridSpacing, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_SetCanvas", (PyCFunction) _wrap_wxDiagram_SetCanvas, METH_VARARGS | METH_KEYWORDS }, - { "wxDiagram_SaveFile", (PyCFunction) _wrap_wxDiagram_SaveFile, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_RemoveShape", (PyCFunction) _wrap_wxDiagram_RemoveShape, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_RemoveAllShapes", (PyCFunction) _wrap_wxDiagram_RemoveAllShapes, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_Redraw", (PyCFunction) _wrap_wxDiagram_Redraw, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_RecentreAll", (PyCFunction) _wrap_wxDiagram_RecentreAll, METH_VARARGS | METH_KEYWORDS }, - { "wxDiagram_ReadNodes", (PyCFunction) _wrap_wxDiagram_ReadNodes, METH_VARARGS | METH_KEYWORDS }, - { "wxDiagram_ReadLines", (PyCFunction) _wrap_wxDiagram_ReadLines, METH_VARARGS | METH_KEYWORDS }, - { "wxDiagram_ReadContainerGeometry", (PyCFunction) _wrap_wxDiagram_ReadContainerGeometry, METH_VARARGS | METH_KEYWORDS }, - { "wxDiagram_LoadFile", (PyCFunction) _wrap_wxDiagram_LoadFile, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_InsertShape", (PyCFunction) _wrap_wxDiagram_InsertShape, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_GetSnapToGrid", (PyCFunction) _wrap_wxDiagram_GetSnapToGrid, METH_VARARGS | METH_KEYWORDS }, { "wxDiagram_GetQuickEditMode", (PyCFunction) _wrap_wxDiagram_GetQuickEditMode, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/contrib/ogl/oglcanvas.i b/wxPython/contrib/ogl/oglcanvas.i index 451ce9a7f1..1845651b65 100644 --- a/wxPython/contrib/ogl/oglcanvas.i +++ b/wxPython/contrib/ogl/oglcanvas.i @@ -71,8 +71,13 @@ public: bool GetQuickEditMode(); bool GetSnapToGrid(); void InsertShape(wxPyShape *shape); - bool LoadFile(const wxString& filename); +#ifdef wxUSE_PROLOGIO + bool LoadFile(const wxString& filename); + bool SaveFile(const wxString& filename); +#endif + +#ifdef wxUSE_PROLOGIO // **** Have to deal with wxExpr and wxExprDatabase first... //void OnDatabaseLoad(wxExprDatabase& database); //void OnDatabaseSave(wxExprDatabase& database); @@ -80,16 +85,18 @@ public: //bool OnHeaderSave(wxExprDatabase& database, wxExpr& expr); //bool OnShapeLoad(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr); //bool OnShapeSave(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr); +#endif - +#ifdef wxUSE_PROLOGIO void ReadContainerGeometry(wxExprDatabase& database); void ReadLines(wxExprDatabase& database); void ReadNodes(wxExprDatabase& database); +#endif + void RecentreAll(wxDC& dc); void Redraw(wxDC& dc); void RemoveAllShapes(); void RemoveShape(wxPyShape* shape); - bool SaveFile(const wxString& filename); void SetCanvas(wxPyShapeCanvas* canvas); void SetGridSpacing(double spacing); void SetMouseTolerance(int tolerance); diff --git a/wxPython/contrib/ogl/oglcanvas.py b/wxPython/contrib/ogl/oglcanvas.py index d0126a265a..6a6a7459bd 100644 --- a/wxPython/contrib/ogl/oglcanvas.py +++ b/wxPython/contrib/ogl/oglcanvas.py @@ -88,18 +88,6 @@ class wxDiagramPtr(wxObjectPtr): def InsertShape(self, *_args, **_kwargs): val = apply(oglcanvasc.wxDiagram_InsertShape,(self,) + _args, _kwargs) return val - def LoadFile(self, *_args, **_kwargs): - val = apply(oglcanvasc.wxDiagram_LoadFile,(self,) + _args, _kwargs) - return val - def ReadContainerGeometry(self, *_args, **_kwargs): - val = apply(oglcanvasc.wxDiagram_ReadContainerGeometry,(self,) + _args, _kwargs) - return val - def ReadLines(self, *_args, **_kwargs): - val = apply(oglcanvasc.wxDiagram_ReadLines,(self,) + _args, _kwargs) - return val - def ReadNodes(self, *_args, **_kwargs): - val = apply(oglcanvasc.wxDiagram_ReadNodes,(self,) + _args, _kwargs) - return val def RecentreAll(self, *_args, **_kwargs): val = apply(oglcanvasc.wxDiagram_RecentreAll,(self,) + _args, _kwargs) return val @@ -112,9 +100,6 @@ class wxDiagramPtr(wxObjectPtr): def RemoveShape(self, *_args, **_kwargs): val = apply(oglcanvasc.wxDiagram_RemoveShape,(self,) + _args, _kwargs) return val - def SaveFile(self, *_args, **_kwargs): - val = apply(oglcanvasc.wxDiagram_SaveFile,(self,) + _args, _kwargs) - return val def SetCanvas(self, *_args, **_kwargs): val = apply(oglcanvasc.wxDiagram_SetCanvas,(self,) + _args, _kwargs) return val diff --git a/wxPython/contrib/ogl/oglshapes.cpp b/wxPython/contrib/ogl/oglshapes.cpp index 7e4c39f2d5..4da8d8a782 100644 --- a/wxPython/contrib/ogl/oglshapes.cpp +++ b/wxPython/contrib/ogl/oglshapes.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -185,8 +184,7 @@ static PyObject *_wrap_wxPseudoMetaFile_Draw(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_Draw. Expected _wxDC_p."); return NULL; } @@ -202,82 +200,6 @@ static PyObject *_wrap_wxPseudoMetaFile_Draw(PyObject *self, PyObject *args, PyO return _resultobj; } -#define wxPseudoMetaFile_WriteAttributes(_swigobj,_swigarg0,_swigarg1) (_swigobj->WriteAttributes(_swigarg0,_swigarg1)) -static PyObject *_wrap_wxPseudoMetaFile_WriteAttributes(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxPseudoMetaFile * _arg0; - wxExpr * _arg1; - int _arg2; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","clause","whichAngle", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi:wxPseudoMetaFile_WriteAttributes",_kwnames,&_argo0,&_argo1,&_arg2)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPseudoMetaFile_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPseudoMetaFile_WriteAttributes. Expected _wxPseudoMetaFile_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExpr_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_WriteAttributes. Expected _wxExpr_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxPseudoMetaFile_WriteAttributes(_arg0,_arg1,_arg2); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - -#define wxPseudoMetaFile_ReadAttributes(_swigobj,_swigarg0,_swigarg1) (_swigobj->ReadAttributes(_swigarg0,_swigarg1)) -static PyObject *_wrap_wxPseudoMetaFile_ReadAttributes(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxPseudoMetaFile * _arg0; - wxExpr * _arg1; - int _arg2; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","clause","whichAngle", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi:wxPseudoMetaFile_ReadAttributes",_kwnames,&_argo0,&_argo1,&_arg2)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPseudoMetaFile_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPseudoMetaFile_ReadAttributes. Expected _wxPseudoMetaFile_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxExpr_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_ReadAttributes. Expected _wxExpr_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxPseudoMetaFile_ReadAttributes(_arg0,_arg1,_arg2); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - #define wxPseudoMetaFile_Clear(_swigobj) (_swigobj->Clear()) static PyObject *_wrap_wxPseudoMetaFile_Clear(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -326,8 +248,7 @@ static PyObject *_wrap_wxPseudoMetaFile_Copy(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPseudoMetaFile_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPseudoMetaFile_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPseudoMetaFile_Copy. Expected _wxPseudoMetaFile_p."); return NULL; } @@ -469,16 +390,17 @@ static PyObject *_wrap_wxPseudoMetaFile_LoadFromMetaFile(PyObject *self, PyObjec PyObject * _resultobj; bool _result; wxPseudoMetaFile * _arg0; - char * _arg1; + wxString * _arg1; double * _arg2; double * _arg3; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; PyObject * _argo2 = 0; PyObject * _argo3 = 0; char *_kwnames[] = { "self","filename","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OsOO:wxPseudoMetaFile_LoadFromMetaFile",_kwnames,&_argo0,&_arg1,&_argo2,&_argo3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxPseudoMetaFile_LoadFromMetaFile",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -487,6 +409,11 @@ static PyObject *_wrap_wxPseudoMetaFile_LoadFromMetaFile(PyObject *self, PyObjec return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} if (_argo2) { if (_argo2 == Py_None) { _arg2 = NULL; } else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_double_p")) { @@ -503,11 +430,15 @@ static PyObject *_wrap_wxPseudoMetaFile_LoadFromMetaFile(PyObject *self, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxPseudoMetaFile_LoadFromMetaFile(_arg0,_arg1,_arg2,_arg3); + _result = (bool )wxPseudoMetaFile_LoadFromMetaFile(_arg0,*_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } _resultobj = Py_BuildValue("i",_result); +{ + if (_obj1) + delete _arg1; +} return _resultobj; } @@ -1886,8 +1817,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDraw(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -1923,8 +1853,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawContents(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -1962,8 +1891,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawBranches(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -2000,8 +1928,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMoveLinks(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -2037,8 +1964,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnErase(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -2074,8 +2000,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnEraseContents(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -2111,8 +2036,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnHighlight(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -2281,8 +2205,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMovePre(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -2324,8 +2247,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMovePost(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -2564,8 +2486,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawOutline(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -2601,8 +2522,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnDrawControlPoints(PyObject *sel } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -2638,8 +2558,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnEraseControlPoints(PyObject *se } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -2677,8 +2596,7 @@ static PyObject *_wrap_wxPyRectangleShape_base_OnMoveLink(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyRectangleShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -3076,8 +2994,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDraw(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -3113,8 +3030,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawContents(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -3152,8 +3068,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawBranches(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -3190,8 +3105,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMoveLinks(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -3227,8 +3141,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnErase(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -3264,8 +3177,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnEraseContents(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -3301,8 +3213,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnHighlight(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -3471,8 +3382,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMovePre(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -3514,8 +3424,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMovePost(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -3754,8 +3663,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawOutline(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -3791,8 +3699,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnDrawControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -3828,8 +3735,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnEraseControlPoints(PyObject *self } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -3867,8 +3773,7 @@ static PyObject *_wrap_wxPyControlPoint_base_OnMoveLink(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControlPoint_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -4229,7 +4134,7 @@ static PyObject *_wrap_wxPyBitmapShape_GetFilename(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4260,8 +4165,7 @@ static PyObject *_wrap_wxPyBitmapShape_SetBitmap(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -4364,8 +4268,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDraw(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -4401,8 +4304,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawContents(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -4440,8 +4342,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawBranches(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -4478,8 +4379,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMoveLinks(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -4515,8 +4415,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnErase(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -4552,8 +4451,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnEraseContents(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -4589,8 +4487,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnHighlight(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -4759,8 +4656,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMovePre(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -4802,8 +4698,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMovePost(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -5042,8 +4937,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawOutline(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -5079,8 +4973,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnDrawControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -5116,8 +5009,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnEraseControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -5155,8 +5047,7 @@ static PyObject *_wrap_wxPyBitmapShape_base_OnMoveLink(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyBitmapShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -6056,12 +5947,13 @@ static PyObject *_wrap_wxPyDrawnShape_LoadFromMetaFile(PyObject *self, PyObject PyObject * _resultobj; bool _result; wxPyDrawnShape * _arg0; - char * _arg1; + wxString * _arg1; PyObject * _argo0 = 0; + PyObject * _obj1 = 0; char *_kwnames[] = { "self","filename", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxPyDrawnShape_LoadFromMetaFile",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyDrawnShape_LoadFromMetaFile",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6070,13 +5962,22 @@ static PyObject *_wrap_wxPyDrawnShape_LoadFromMetaFile(PyObject *self, PyObject return NULL; } } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxPyDrawnShape_LoadFromMetaFile(_arg0,_arg1); + _result = (bool )wxPyDrawnShape_LoadFromMetaFile(_arg0,*_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } _resultobj = Py_BuildValue("i",_result); +{ + if (_obj1) + delete _arg1; +} return _resultobj; } @@ -6533,8 +6434,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDraw(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -6570,8 +6470,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawContents(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -6609,8 +6508,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawBranches(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -6647,8 +6545,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMoveLinks(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -6684,8 +6581,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnErase(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -6721,8 +6617,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnEraseContents(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -6758,8 +6653,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnHighlight(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -6928,8 +6822,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMovePre(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -6971,8 +6864,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMovePost(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -7211,8 +7103,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawOutline(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -7248,8 +7139,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnDrawControlPoints(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -7285,8 +7175,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnEraseControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -7324,8 +7213,7 @@ static PyObject *_wrap_wxPyDrawnShape_base_OnMoveLink(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDrawnShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -8319,8 +8207,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDraw(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -8356,8 +8243,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawContents(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -8395,8 +8281,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawBranches(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -8433,8 +8318,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMoveLinks(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -8470,8 +8354,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnErase(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -8507,8 +8390,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnEraseContents(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -8544,8 +8426,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnHighlight(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -8714,8 +8595,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMovePre(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -8757,8 +8637,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMovePost(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -8997,8 +8876,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawOutline(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -9034,8 +8912,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnDrawControlPoints(PyObject *sel } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -9071,8 +8948,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnEraseControlPoints(PyObject *se } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -9110,8 +8986,7 @@ static PyObject *_wrap_wxPyCompositeShape_base_OnMoveLink(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCompositeShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -9516,8 +9391,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDraw(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -9553,8 +9427,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawContents(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -9592,8 +9465,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawBranches(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -9630,8 +9502,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMoveLinks(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -9667,8 +9538,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnErase(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -9704,8 +9574,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnEraseContents(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -9741,8 +9610,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnHighlight(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -9911,8 +9779,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMovePre(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -9954,8 +9821,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMovePost(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -10194,8 +10060,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawOutline(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -10231,8 +10096,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnDrawControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -10268,8 +10132,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnEraseControlPoints(PyObject *self } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -10307,8 +10170,7 @@ static PyObject *_wrap_wxPyDividedShape_base_OnMoveLink(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDividedShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -10911,7 +10773,7 @@ static PyObject *_wrap_wxPyDivisionShape_GetLeftSideColour(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11506,8 +11368,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDraw(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -11543,8 +11404,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawContents(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -11582,8 +11442,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawBranches(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -11620,8 +11479,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMoveLinks(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -11657,8 +11515,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnErase(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -11694,8 +11551,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnEraseContents(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -11731,8 +11587,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnHighlight(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -11901,8 +11756,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMovePre(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -11944,8 +11798,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMovePost(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -12184,8 +12037,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawOutline(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -12221,8 +12073,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnDrawControlPoints(PyObject *self } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -12258,8 +12109,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnEraseControlPoints(PyObject *sel } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -12297,8 +12147,7 @@ static PyObject *_wrap_wxPyDivisionShape_base_OnMoveLink(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyDivisionShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -12836,8 +12685,6 @@ static PyMethodDef oglshapescMethods[] = { { "wxPseudoMetaFile_Scale", (PyCFunction) _wrap_wxPseudoMetaFile_Scale, METH_VARARGS | METH_KEYWORDS }, { "wxPseudoMetaFile_Copy", (PyCFunction) _wrap_wxPseudoMetaFile_Copy, METH_VARARGS | METH_KEYWORDS }, { "wxPseudoMetaFile_Clear", (PyCFunction) _wrap_wxPseudoMetaFile_Clear, METH_VARARGS | METH_KEYWORDS }, - { "wxPseudoMetaFile_ReadAttributes", (PyCFunction) _wrap_wxPseudoMetaFile_ReadAttributes, METH_VARARGS | METH_KEYWORDS }, - { "wxPseudoMetaFile_WriteAttributes", (PyCFunction) _wrap_wxPseudoMetaFile_WriteAttributes, METH_VARARGS | METH_KEYWORDS }, { "wxPseudoMetaFile_Draw", (PyCFunction) _wrap_wxPseudoMetaFile_Draw, METH_VARARGS | METH_KEYWORDS }, { "delete_wxPseudoMetaFile", (PyCFunction) _wrap_delete_wxPseudoMetaFile, METH_VARARGS | METH_KEYWORDS }, { "new_wxPseudoMetaFile", (PyCFunction) _wrap_new_wxPseudoMetaFile, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/contrib/ogl/oglshapes.i b/wxPython/contrib/ogl/oglshapes.i index 38fd4dab8a..e3e3c114d5 100644 --- a/wxPython/contrib/ogl/oglshapes.i +++ b/wxPython/contrib/ogl/oglshapes.i @@ -46,16 +46,17 @@ public: ~wxPseudoMetaFile(); void Draw(wxDC& dc, double xoffset, double yoffset); - +#ifdef wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause, int whichAngle); void ReadAttributes(wxExpr *clause, int whichAngle); +#endif void Clear(); void Copy(wxPseudoMetaFile& copy); void Scale(double sx, double sy); void ScaleTo(double w, double h); void Translate(double x, double y); void Rotate(double x, double y, double theta); - bool LoadFromMetaFile(char* filename, double *width, double *height); + bool LoadFromMetaFile(const wxString& filename, double *width, double *height); void GetBounds(double *minX, double *minY, double *maxX, double *maxY); void CalculateSize(wxPyDrawnShape* shape); @@ -280,7 +281,7 @@ public: wxPseudoMetaFile& GetMetaFile(); double GetRotation(); - bool LoadFromMetaFile(char * filename); + bool LoadFromMetaFile(const wxString& filename); void Rotate(double x, double y, double theta); void SetClippingRect(const wxRect& rect); void SetDrawnBackgroundColour(const wxColour& colour); diff --git a/wxPython/contrib/ogl/oglshapes.py b/wxPython/contrib/ogl/oglshapes.py index 9f6d7e260f..4090867d08 100644 --- a/wxPython/contrib/ogl/oglshapes.py +++ b/wxPython/contrib/ogl/oglshapes.py @@ -49,18 +49,15 @@ class wxPseudoMetaFilePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,oglshapesc=oglshapesc): - if self.thisown == 1 : - oglshapesc.delete_wxPseudoMetaFile(self) + def __del__(self, delfunc=oglshapesc.delete_wxPseudoMetaFile): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Draw(self, *_args, **_kwargs): val = apply(oglshapesc.wxPseudoMetaFile_Draw,(self,) + _args, _kwargs) return val - def WriteAttributes(self, *_args, **_kwargs): - val = apply(oglshapesc.wxPseudoMetaFile_WriteAttributes,(self,) + _args, _kwargs) - return val - def ReadAttributes(self, *_args, **_kwargs): - val = apply(oglshapesc.wxPseudoMetaFile_ReadAttributes,(self,) + _args, _kwargs) - return val def Clear(self, *_args, **_kwargs): val = apply(oglshapesc.wxPseudoMetaFile_Clear,(self,) + _args, _kwargs) return val diff --git a/wxPython/contrib/ogl/oglshapes2.cpp b/wxPython/contrib/ogl/oglshapes2.cpp index d23ae73f62..52c6257339 100644 --- a/wxPython/contrib/ogl/oglshapes2.cpp +++ b/wxPython/contrib/ogl/oglshapes2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -210,8 +209,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDraw(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -247,8 +245,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawContents(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -286,8 +283,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawBranches(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -324,8 +320,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMoveLinks(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -361,8 +356,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnErase(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -398,8 +392,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnEraseContents(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -435,8 +428,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnHighlight(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -605,8 +597,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMovePre(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -648,8 +639,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMovePost(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -888,8 +878,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawOutline(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -925,8 +914,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnDrawControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -962,8 +950,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnEraseControlPoints(PyObject *self } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -1001,8 +988,7 @@ static PyObject *_wrap_wxPyEllipseShape_base_OnMoveLink(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyEllipseShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -1322,8 +1308,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDraw(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -1359,8 +1344,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawContents(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -1398,8 +1382,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawBranches(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -1436,8 +1419,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMoveLinks(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -1473,8 +1455,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnErase(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -1510,8 +1491,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnEraseContents(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -1547,8 +1527,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnHighlight(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -1717,8 +1696,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMovePre(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -1760,8 +1738,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMovePost(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -2000,8 +1977,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawOutline(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -2037,8 +2013,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnDrawControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -2074,8 +2049,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnEraseControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -2113,8 +2087,7 @@ static PyObject *_wrap_wxPyCircleShape_base_OnMoveLink(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyCircleShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -2628,7 +2601,7 @@ static PyObject *_wrap_wxArrowHead_GetName(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3149,8 +3122,7 @@ static PyObject *_wrap_wxPyLineShape_DrawArrow(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_DrawArrow. Expected _wxDC_p."); return NULL; } @@ -3291,8 +3263,7 @@ static PyObject *_wrap_wxPyLineShape_DrawArrows(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_DrawArrows. Expected _wxDC_p."); return NULL; } @@ -3332,8 +3303,7 @@ static PyObject *_wrap_wxPyLineShape_DrawRegion(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_DrawRegion. Expected _wxDC_p."); return NULL; } @@ -3380,8 +3350,7 @@ static PyObject *_wrap_wxPyLineShape_EraseRegion(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_EraseRegion. Expected _wxDC_p."); return NULL; } @@ -3863,7 +3832,7 @@ static PyObject *_wrap_wxPyLineShape_GetLabelPosition(PyObject *self, PyObject * #define wxPyLineShape_GetNextControlPoint(_swigobj,_swigarg0) (_swigobj->GetNextControlPoint(_swigarg0)) static PyObject *_wrap_wxPyLineShape_GetNextControlPoint(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - wxPoint * _result; + wxRealPoint * _result; wxPyLineShape * _arg0; wxPyShape * _arg1; PyObject * _argo0 = 0; @@ -3890,12 +3859,12 @@ static PyObject *_wrap_wxPyLineShape_GetNextControlPoint(PyObject *self, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxPoint *)wxPyLineShape_GetNextControlPoint(_arg0,_arg1); + _result = (wxRealPoint *)wxPyLineShape_GetNextControlPoint(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; } if (_result) { - SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint_p"); + SWIG_MakePtr(_ptemp, (char *) _result,"_wxRealPoint_p"); _resultobj = Py_BuildValue("s",_ptemp); } else { Py_INCREF(Py_None); @@ -4465,8 +4434,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDraw(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -4502,8 +4470,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawContents(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -4541,8 +4508,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawBranches(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -4579,8 +4545,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMoveLinks(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -4616,8 +4581,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnErase(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -4653,8 +4617,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnEraseContents(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -4690,8 +4653,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnHighlight(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -4860,8 +4822,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMovePre(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -4903,8 +4864,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMovePost(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -5143,8 +5103,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawOutline(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -5180,8 +5139,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnDrawControlPoints(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -5217,8 +5175,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnEraseControlPoints(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -5256,8 +5213,7 @@ static PyObject *_wrap_wxPyLineShape_base_OnMoveLink(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyLineShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -5758,8 +5714,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDraw(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -5795,8 +5750,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawContents(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -5834,8 +5788,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawBranches(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -5872,8 +5825,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMoveLinks(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -5909,8 +5861,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnErase(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -5946,8 +5897,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnEraseContents(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -5983,8 +5933,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnHighlight(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -6153,8 +6102,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMovePre(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -6196,8 +6144,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMovePost(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -6436,8 +6383,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawOutline(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -6473,8 +6419,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnDrawControlPoints(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -6510,8 +6455,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnEraseControlPoints(PyObject *self } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -6549,8 +6493,7 @@ static PyObject *_wrap_wxPyPolygonShape_base_OnMoveLink(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPolygonShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } @@ -6899,8 +6842,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDraw(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDraw. Expected _wxDC_p."); return NULL; } @@ -6936,8 +6878,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawContents(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawContents. Expected _wxDC_p."); return NULL; } @@ -6975,8 +6916,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawBranches(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawBranches. Expected _wxDC_p."); return NULL; } @@ -7013,8 +6953,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMoveLinks(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMoveLinks. Expected _wxDC_p."); return NULL; } @@ -7050,8 +6989,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnErase(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnErase. Expected _wxDC_p."); return NULL; } @@ -7087,8 +7025,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnEraseContents(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnEraseContents. Expected _wxDC_p."); return NULL; } @@ -7124,8 +7061,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnHighlight(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnHighlight. Expected _wxDC_p."); return NULL; } @@ -7294,8 +7230,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMovePre(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMovePre. Expected _wxDC_p."); return NULL; } @@ -7337,8 +7272,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMovePost(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMovePost. Expected _wxDC_p."); return NULL; } @@ -7577,8 +7511,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawOutline(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawOutline. Expected _wxDC_p."); return NULL; } @@ -7614,8 +7547,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnDrawControlPoints(PyObject *self, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnDrawControlPoints. Expected _wxDC_p."); return NULL; } @@ -7651,8 +7583,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnEraseControlPoints(PyObject *self, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnEraseControlPoints. Expected _wxDC_p."); return NULL; } @@ -7690,8 +7621,7 @@ static PyObject *_wrap_wxPyTextShape_base_OnMoveLink(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyTextShape_base_OnMoveLink. Expected _wxDC_p."); return NULL; } diff --git a/wxPython/contrib/ogl/oglshapes2.i b/wxPython/contrib/ogl/oglshapes2.i index 2cb69e5a43..108a423acd 100644 --- a/wxPython/contrib/ogl/oglshapes2.i +++ b/wxPython/contrib/ogl/oglshapes2.i @@ -209,7 +209,7 @@ public: void GetEnds(double *OUTPUT, double *OUTPUT, double *OUTPUT, double *OUTPUT); wxPyShape * GetFrom(); void GetLabelPosition(int position, double *OUTPUT, double *OUTPUT); - wxPoint * GetNextControlPoint(wxPyShape *shape); + wxRealPoint * GetNextControlPoint(wxPyShape *shape); wxPyShape * GetTo(); void Initialise(); void InsertLineControlPoint(wxDC* dc); diff --git a/wxPython/contrib/ogl/oglshapes2.py b/wxPython/contrib/ogl/oglshapes2.py index 25c6516237..60d4c2947e 100644 --- a/wxPython/contrib/ogl/oglshapes2.py +++ b/wxPython/contrib/ogl/oglshapes2.py @@ -257,9 +257,12 @@ class wxArrowHeadPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,oglshapes2c=oglshapes2c): - if self.thisown == 1 : - oglshapes2c.delete_wxArrowHead(self) + def __del__(self, delfunc=oglshapes2c.delete_wxArrowHead): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def _GetType(self, *_args, **_kwargs): val = apply(oglshapes2c.wxArrowHead__GetType,(self,) + _args, _kwargs) return val @@ -393,7 +396,7 @@ class wxPyLineShapePtr(wxPyShapePtr): return val def GetNextControlPoint(self, *_args, **_kwargs): val = apply(oglshapes2c.wxPyLineShape_GetNextControlPoint,(self,) + _args, _kwargs) - if val: val = wxPointPtr(val) + if val: val = wxRealPointPtr(val) return val def GetTo(self, *_args, **_kwargs): val = apply(oglshapes2c.wxPyLineShape_GetTo,(self,) + _args, _kwargs) diff --git a/wxPython/contrib/stc/_stcextras.py b/wxPython/contrib/stc/_stcextras.py index eefe2c4547..dc8f3456ef 100644 --- a/wxPython/contrib/stc/_stcextras.py +++ b/wxPython/contrib/stc/_stcextras.py @@ -3,5 +3,5 @@ wx.wxStyledTextEventPtr = wxStyledTextEventPtr wx.wxStyledTextCtrlPtr = wxStyledTextCtrlPtr - -wxSTC_CARET_CENTER = wxSTC_CARET_STRICT +# This constant no longer exists in Scintilla, but I'll put it here for a while to avoid disrupting user code... +wxSTC_CARET_CENTER = 0 diff --git a/wxPython/contrib/stc/gtk/stc_.cpp b/wxPython/contrib/stc/gtk/stc_.cpp index 037cc4df62..f522a3d620 100644 --- a/wxPython/contrib/stc/gtk/stc_.cpp +++ b/wxPython/contrib/stc/gtk/stc_.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -1015,7 +1014,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetCurLine(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4804,7 +4803,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetLine(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5041,7 +5040,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetSelectedText(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5080,7 +5079,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetTextRange(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5597,7 +5596,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9161,8 +9160,7 @@ static PyObject *_wrap_wxStyledTextCtrl_StyleSetFont(PyObject *self, PyObject *a } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxStyledTextCtrl_StyleSetFont. Expected _wxFont_p."); return NULL; } @@ -10408,7 +10406,7 @@ static PyObject *_wrap_wxStyledTextEvent_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10781,7 +10779,7 @@ static PyObject *_wrap_wxStyledTextEvent_GetDragText(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11450,8 +11448,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_START", PyInt_FromLong((long) 2000)); PyDict_SetItemString(d,"wxSTC_OPTIONAL_START", PyInt_FromLong((long) 3000)); PyDict_SetItemString(d,"wxSTC_LEXER_START", PyInt_FromLong((long) 4000)); - PyDict_SetItemString(d,"wxSTC_CMD_REDO", PyInt_FromLong((long) 2011)); - PyDict_SetItemString(d,"wxSTC_CMD_SELECTALL", PyInt_FromLong((long) 2013)); PyDict_SetItemString(d,"wxSTC_WS_INVISIBLE", PyInt_FromLong((long) 0)); PyDict_SetItemString(d,"wxSTC_WS_VISIBLEALWAYS", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_WS_VISIBLEAFTERINDENT", PyInt_FromLong((long) 2)); @@ -11545,10 +11541,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_FIND_MATCHCASE", PyInt_FromLong((long) 4)); PyDict_SetItemString(d,"wxSTC_FIND_WORDSTART", PyInt_FromLong((long) 0x00100000)); PyDict_SetItemString(d,"wxSTC_FIND_REGEXP", PyInt_FromLong((long) 0x00200000)); - PyDict_SetItemString(d,"wxSTC_CMD_UNDO", PyInt_FromLong((long) 2176)); - PyDict_SetItemString(d,"wxSTC_CMD_CUT", PyInt_FromLong((long) 2177)); - PyDict_SetItemString(d,"wxSTC_CMD_COPY", PyInt_FromLong((long) 2178)); - PyDict_SetItemString(d,"wxSTC_CMD_PASTE", PyInt_FromLong((long) 2179)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELBASE", PyInt_FromLong((long) 0x400)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELWHITEFLAG", PyInt_FromLong((long) 0x1000)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELHEADERFLAG", PyInt_FromLong((long) 0x2000)); @@ -11560,55 +11552,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_CACHE_CARET", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_CACHE_PAGE", PyInt_FromLong((long) 2)); PyDict_SetItemString(d,"wxSTC_CACHE_DOCUMENT", PyInt_FromLong((long) 3)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWN", PyInt_FromLong((long) 2300)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWNEXTEND", PyInt_FromLong((long) 2301)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEUP", PyInt_FromLong((long) 2302)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEUPEXTEND", PyInt_FromLong((long) 2303)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFT", PyInt_FromLong((long) 2304)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFTEXTEND", PyInt_FromLong((long) 2305)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHT", PyInt_FromLong((long) 2306)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHTEXTEND", PyInt_FromLong((long) 2307)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFT", PyInt_FromLong((long) 2308)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFTEXTEND", PyInt_FromLong((long) 2309)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHT", PyInt_FromLong((long) 2310)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHTEXTEND", PyInt_FromLong((long) 2311)); - PyDict_SetItemString(d,"wxSTC_CMD_HOME", PyInt_FromLong((long) 2312)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEEXTEND", PyInt_FromLong((long) 2313)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEEND", PyInt_FromLong((long) 2314)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDEXTEND", PyInt_FromLong((long) 2315)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTART", PyInt_FromLong((long) 2316)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTARTEXTEND", PyInt_FromLong((long) 2317)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTEND", PyInt_FromLong((long) 2318)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTENDEXTEND", PyInt_FromLong((long) 2319)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEUP", PyInt_FromLong((long) 2320)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEUPEXTEND", PyInt_FromLong((long) 2321)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWN", PyInt_FromLong((long) 2322)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWNEXTEND", PyInt_FromLong((long) 2323)); - PyDict_SetItemString(d,"wxSTC_CMD_EDITTOGGLEOVERTYPE", PyInt_FromLong((long) 2324)); - PyDict_SetItemString(d,"wxSTC_CMD_CANCEL", PyInt_FromLong((long) 2325)); - PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACK", PyInt_FromLong((long) 2326)); - PyDict_SetItemString(d,"wxSTC_CMD_TAB", PyInt_FromLong((long) 2327)); - PyDict_SetItemString(d,"wxSTC_CMD_BACKTAB", PyInt_FromLong((long) 2328)); - PyDict_SetItemString(d,"wxSTC_CMD_NEWLINE", PyInt_FromLong((long) 2329)); - PyDict_SetItemString(d,"wxSTC_CMD_FORMFEED", PyInt_FromLong((long) 2330)); - PyDict_SetItemString(d,"wxSTC_CMD_VCHOME", PyInt_FromLong((long) 2331)); - PyDict_SetItemString(d,"wxSTC_CMD_VCHOMEEXTEND", PyInt_FromLong((long) 2332)); - PyDict_SetItemString(d,"wxSTC_CMD_ZOOMIN", PyInt_FromLong((long) 2333)); - PyDict_SetItemString(d,"wxSTC_CMD_ZOOMOUT", PyInt_FromLong((long) 2334)); - PyDict_SetItemString(d,"wxSTC_CMD_DELWORDLEFT", PyInt_FromLong((long) 2335)); - PyDict_SetItemString(d,"wxSTC_CMD_DELWORDRIGHT", PyInt_FromLong((long) 2336)); - PyDict_SetItemString(d,"wxSTC_CMD_LINECUT", PyInt_FromLong((long) 2337)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDELETE", PyInt_FromLong((long) 2338)); - PyDict_SetItemString(d,"wxSTC_CMD_LINETRANSPOSE", PyInt_FromLong((long) 2339)); - PyDict_SetItemString(d,"wxSTC_CMD_LOWERCASE", PyInt_FromLong((long) 2340)); - PyDict_SetItemString(d,"wxSTC_CMD_UPPERCASE", PyInt_FromLong((long) 2341)); - PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLDOWN", PyInt_FromLong((long) 2342)); - PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLUP", PyInt_FromLong((long) 2343)); - PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACKNOTLINE", PyInt_FromLong((long) 2344)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAY", PyInt_FromLong((long) 2345)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAYEXTEND", PyInt_FromLong((long) 2346)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAY", PyInt_FromLong((long) 2347)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAYEXTEND", PyInt_FromLong((long) 2348)); PyDict_SetItemString(d,"wxSTC_EDGE_NONE", PyInt_FromLong((long) 0)); PyDict_SetItemString(d,"wxSTC_EDGE_LINE", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_EDGE_BACKGROUND", PyInt_FromLong((long) 2)); @@ -12030,7 +11973,68 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTDOCKEYWORD", PyInt_FromLong((long) 17)); PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR", PyInt_FromLong((long) 18)); PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTBASIC", PyInt_FromLong((long) 19)); - PyDict_SetItemString(d,"wxSTCNameStr", PyString_FromString("wxSTCNameStr")); + PyDict_SetItemString(d,"wxSTC_CMD_REDO", PyInt_FromLong((long) 2011)); + PyDict_SetItemString(d,"wxSTC_CMD_SELECTALL", PyInt_FromLong((long) 2013)); + PyDict_SetItemString(d,"wxSTC_CMD_UNDO", PyInt_FromLong((long) 2176)); + PyDict_SetItemString(d,"wxSTC_CMD_CUT", PyInt_FromLong((long) 2177)); + PyDict_SetItemString(d,"wxSTC_CMD_COPY", PyInt_FromLong((long) 2178)); + PyDict_SetItemString(d,"wxSTC_CMD_PASTE", PyInt_FromLong((long) 2179)); + PyDict_SetItemString(d,"wxSTC_CMD_CLEAR", PyInt_FromLong((long) 2180)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWN", PyInt_FromLong((long) 2300)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWNEXTEND", PyInt_FromLong((long) 2301)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEUP", PyInt_FromLong((long) 2302)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEUPEXTEND", PyInt_FromLong((long) 2303)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFT", PyInt_FromLong((long) 2304)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFTEXTEND", PyInt_FromLong((long) 2305)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHT", PyInt_FromLong((long) 2306)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHTEXTEND", PyInt_FromLong((long) 2307)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFT", PyInt_FromLong((long) 2308)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFTEXTEND", PyInt_FromLong((long) 2309)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHT", PyInt_FromLong((long) 2310)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHTEXTEND", PyInt_FromLong((long) 2311)); + PyDict_SetItemString(d,"wxSTC_CMD_HOME", PyInt_FromLong((long) 2312)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEEXTEND", PyInt_FromLong((long) 2313)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEEND", PyInt_FromLong((long) 2314)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDEXTEND", PyInt_FromLong((long) 2315)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTART", PyInt_FromLong((long) 2316)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTARTEXTEND", PyInt_FromLong((long) 2317)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTEND", PyInt_FromLong((long) 2318)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTENDEXTEND", PyInt_FromLong((long) 2319)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEUP", PyInt_FromLong((long) 2320)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEUPEXTEND", PyInt_FromLong((long) 2321)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWN", PyInt_FromLong((long) 2322)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWNEXTEND", PyInt_FromLong((long) 2323)); + PyDict_SetItemString(d,"wxSTC_CMD_EDITTOGGLEOVERTYPE", PyInt_FromLong((long) 2324)); + PyDict_SetItemString(d,"wxSTC_CMD_CANCEL", PyInt_FromLong((long) 2325)); + PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACK", PyInt_FromLong((long) 2326)); + PyDict_SetItemString(d,"wxSTC_CMD_TAB", PyInt_FromLong((long) 2327)); + PyDict_SetItemString(d,"wxSTC_CMD_BACKTAB", PyInt_FromLong((long) 2328)); + PyDict_SetItemString(d,"wxSTC_CMD_NEWLINE", PyInt_FromLong((long) 2329)); + PyDict_SetItemString(d,"wxSTC_CMD_FORMFEED", PyInt_FromLong((long) 2330)); + PyDict_SetItemString(d,"wxSTC_CMD_VCHOME", PyInt_FromLong((long) 2331)); + PyDict_SetItemString(d,"wxSTC_CMD_VCHOMEEXTEND", PyInt_FromLong((long) 2332)); + PyDict_SetItemString(d,"wxSTC_CMD_ZOOMIN", PyInt_FromLong((long) 2333)); + PyDict_SetItemString(d,"wxSTC_CMD_ZOOMOUT", PyInt_FromLong((long) 2334)); + PyDict_SetItemString(d,"wxSTC_CMD_DELWORDLEFT", PyInt_FromLong((long) 2335)); + PyDict_SetItemString(d,"wxSTC_CMD_DELWORDRIGHT", PyInt_FromLong((long) 2336)); + PyDict_SetItemString(d,"wxSTC_CMD_LINECUT", PyInt_FromLong((long) 2337)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDELETE", PyInt_FromLong((long) 2338)); + PyDict_SetItemString(d,"wxSTC_CMD_LINETRANSPOSE", PyInt_FromLong((long) 2339)); + PyDict_SetItemString(d,"wxSTC_CMD_LOWERCASE", PyInt_FromLong((long) 2340)); + PyDict_SetItemString(d,"wxSTC_CMD_UPPERCASE", PyInt_FromLong((long) 2341)); + PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLDOWN", PyInt_FromLong((long) 2342)); + PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLUP", PyInt_FromLong((long) 2343)); + PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACKNOTLINE", PyInt_FromLong((long) 2344)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAY", PyInt_FromLong((long) 2345)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAYEXTEND", PyInt_FromLong((long) 2346)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAY", PyInt_FromLong((long) 2347)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAYEXTEND", PyInt_FromLong((long) 2348)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTLEFT", PyInt_FromLong((long) 2390)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTLEFTEXTEND", PyInt_FromLong((long) 2391)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTRIGHT", PyInt_FromLong((long) 2392)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTRIGHTEXTEND", PyInt_FromLong((long) 2393)); + PyDict_SetItemString(d,"wxSTC_CMD_DELLINELEFT", PyInt_FromLong((long) 2395)); + PyDict_SetItemString(d,"wxSTC_CMD_DELLINERIGHT", PyInt_FromLong((long) 2396)); PyDict_SetItemString(d,"STC_USE_DND", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxEVT_STC_CHANGE", PyInt_FromLong((long) wxEVT_STC_CHANGE)); PyDict_SetItemString(d,"wxEVT_STC_STYLENEEDED", PyInt_FromLong((long) wxEVT_STC_STYLENEEDED)); diff --git a/wxPython/contrib/stc/gtk/stc_.py b/wxPython/contrib/stc/gtk/stc_.py index 283ac7527d..a3a4fef4a9 100644 --- a/wxPython/contrib/stc/gtk/stc_.py +++ b/wxPython/contrib/stc/gtk/stc_.py @@ -1046,9 +1046,12 @@ class wxStyledTextEventPtr(wxCommandEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,stc_c=stc_c): - if self.thisown == 1 : - stc_c.delete_wxStyledTextEvent(self) + def __del__(self, delfunc=stc_c.delete_wxStyledTextEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetPosition(self, *_args, **_kwargs): val = apply(stc_c.wxStyledTextEvent_SetPosition,(self,) + _args, _kwargs) return val @@ -1205,8 +1208,6 @@ wxSTC_INVALID_POSITION = stc_c.wxSTC_INVALID_POSITION wxSTC_START = stc_c.wxSTC_START wxSTC_OPTIONAL_START = stc_c.wxSTC_OPTIONAL_START wxSTC_LEXER_START = stc_c.wxSTC_LEXER_START -wxSTC_CMD_REDO = stc_c.wxSTC_CMD_REDO -wxSTC_CMD_SELECTALL = stc_c.wxSTC_CMD_SELECTALL wxSTC_WS_INVISIBLE = stc_c.wxSTC_WS_INVISIBLE wxSTC_WS_VISIBLEALWAYS = stc_c.wxSTC_WS_VISIBLEALWAYS wxSTC_WS_VISIBLEAFTERINDENT = stc_c.wxSTC_WS_VISIBLEAFTERINDENT @@ -1300,10 +1301,6 @@ wxSTC_FIND_WHOLEWORD = stc_c.wxSTC_FIND_WHOLEWORD wxSTC_FIND_MATCHCASE = stc_c.wxSTC_FIND_MATCHCASE wxSTC_FIND_WORDSTART = stc_c.wxSTC_FIND_WORDSTART wxSTC_FIND_REGEXP = stc_c.wxSTC_FIND_REGEXP -wxSTC_CMD_UNDO = stc_c.wxSTC_CMD_UNDO -wxSTC_CMD_CUT = stc_c.wxSTC_CMD_CUT -wxSTC_CMD_COPY = stc_c.wxSTC_CMD_COPY -wxSTC_CMD_PASTE = stc_c.wxSTC_CMD_PASTE wxSTC_FOLDLEVELBASE = stc_c.wxSTC_FOLDLEVELBASE wxSTC_FOLDLEVELWHITEFLAG = stc_c.wxSTC_FOLDLEVELWHITEFLAG wxSTC_FOLDLEVELHEADERFLAG = stc_c.wxSTC_FOLDLEVELHEADERFLAG @@ -1315,55 +1312,6 @@ wxSTC_CACHE_NONE = stc_c.wxSTC_CACHE_NONE wxSTC_CACHE_CARET = stc_c.wxSTC_CACHE_CARET wxSTC_CACHE_PAGE = stc_c.wxSTC_CACHE_PAGE wxSTC_CACHE_DOCUMENT = stc_c.wxSTC_CACHE_DOCUMENT -wxSTC_CMD_LINEDOWN = stc_c.wxSTC_CMD_LINEDOWN -wxSTC_CMD_LINEDOWNEXTEND = stc_c.wxSTC_CMD_LINEDOWNEXTEND -wxSTC_CMD_LINEUP = stc_c.wxSTC_CMD_LINEUP -wxSTC_CMD_LINEUPEXTEND = stc_c.wxSTC_CMD_LINEUPEXTEND -wxSTC_CMD_CHARLEFT = stc_c.wxSTC_CMD_CHARLEFT -wxSTC_CMD_CHARLEFTEXTEND = stc_c.wxSTC_CMD_CHARLEFTEXTEND -wxSTC_CMD_CHARRIGHT = stc_c.wxSTC_CMD_CHARRIGHT -wxSTC_CMD_CHARRIGHTEXTEND = stc_c.wxSTC_CMD_CHARRIGHTEXTEND -wxSTC_CMD_WORDLEFT = stc_c.wxSTC_CMD_WORDLEFT -wxSTC_CMD_WORDLEFTEXTEND = stc_c.wxSTC_CMD_WORDLEFTEXTEND -wxSTC_CMD_WORDRIGHT = stc_c.wxSTC_CMD_WORDRIGHT -wxSTC_CMD_WORDRIGHTEXTEND = stc_c.wxSTC_CMD_WORDRIGHTEXTEND -wxSTC_CMD_HOME = stc_c.wxSTC_CMD_HOME -wxSTC_CMD_HOMEEXTEND = stc_c.wxSTC_CMD_HOMEEXTEND -wxSTC_CMD_LINEEND = stc_c.wxSTC_CMD_LINEEND -wxSTC_CMD_LINEENDEXTEND = stc_c.wxSTC_CMD_LINEENDEXTEND -wxSTC_CMD_DOCUMENTSTART = stc_c.wxSTC_CMD_DOCUMENTSTART -wxSTC_CMD_DOCUMENTSTARTEXTEND = stc_c.wxSTC_CMD_DOCUMENTSTARTEXTEND -wxSTC_CMD_DOCUMENTEND = stc_c.wxSTC_CMD_DOCUMENTEND -wxSTC_CMD_DOCUMENTENDEXTEND = stc_c.wxSTC_CMD_DOCUMENTENDEXTEND -wxSTC_CMD_PAGEUP = stc_c.wxSTC_CMD_PAGEUP -wxSTC_CMD_PAGEUPEXTEND = stc_c.wxSTC_CMD_PAGEUPEXTEND -wxSTC_CMD_PAGEDOWN = stc_c.wxSTC_CMD_PAGEDOWN -wxSTC_CMD_PAGEDOWNEXTEND = stc_c.wxSTC_CMD_PAGEDOWNEXTEND -wxSTC_CMD_EDITTOGGLEOVERTYPE = stc_c.wxSTC_CMD_EDITTOGGLEOVERTYPE -wxSTC_CMD_CANCEL = stc_c.wxSTC_CMD_CANCEL -wxSTC_CMD_DELETEBACK = stc_c.wxSTC_CMD_DELETEBACK -wxSTC_CMD_TAB = stc_c.wxSTC_CMD_TAB -wxSTC_CMD_BACKTAB = stc_c.wxSTC_CMD_BACKTAB -wxSTC_CMD_NEWLINE = stc_c.wxSTC_CMD_NEWLINE -wxSTC_CMD_FORMFEED = stc_c.wxSTC_CMD_FORMFEED -wxSTC_CMD_VCHOME = stc_c.wxSTC_CMD_VCHOME -wxSTC_CMD_VCHOMEEXTEND = stc_c.wxSTC_CMD_VCHOMEEXTEND -wxSTC_CMD_ZOOMIN = stc_c.wxSTC_CMD_ZOOMIN -wxSTC_CMD_ZOOMOUT = stc_c.wxSTC_CMD_ZOOMOUT -wxSTC_CMD_DELWORDLEFT = stc_c.wxSTC_CMD_DELWORDLEFT -wxSTC_CMD_DELWORDRIGHT = stc_c.wxSTC_CMD_DELWORDRIGHT -wxSTC_CMD_LINECUT = stc_c.wxSTC_CMD_LINECUT -wxSTC_CMD_LINEDELETE = stc_c.wxSTC_CMD_LINEDELETE -wxSTC_CMD_LINETRANSPOSE = stc_c.wxSTC_CMD_LINETRANSPOSE -wxSTC_CMD_LOWERCASE = stc_c.wxSTC_CMD_LOWERCASE -wxSTC_CMD_UPPERCASE = stc_c.wxSTC_CMD_UPPERCASE -wxSTC_CMD_LINESCROLLDOWN = stc_c.wxSTC_CMD_LINESCROLLDOWN -wxSTC_CMD_LINESCROLLUP = stc_c.wxSTC_CMD_LINESCROLLUP -wxSTC_CMD_DELETEBACKNOTLINE = stc_c.wxSTC_CMD_DELETEBACKNOTLINE -wxSTC_CMD_HOMEDISPLAY = stc_c.wxSTC_CMD_HOMEDISPLAY -wxSTC_CMD_HOMEDISPLAYEXTEND = stc_c.wxSTC_CMD_HOMEDISPLAYEXTEND -wxSTC_CMD_LINEENDDISPLAY = stc_c.wxSTC_CMD_LINEENDDISPLAY -wxSTC_CMD_LINEENDDISPLAYEXTEND = stc_c.wxSTC_CMD_LINEENDDISPLAYEXTEND wxSTC_EDGE_NONE = stc_c.wxSTC_EDGE_NONE wxSTC_EDGE_LINE = stc_c.wxSTC_EDGE_LINE wxSTC_EDGE_BACKGROUND = stc_c.wxSTC_EDGE_BACKGROUND @@ -1785,7 +1733,68 @@ wxSTC_SCRIPTOL_WORD2 = stc_c.wxSTC_SCRIPTOL_WORD2 wxSTC_SCRIPTOL_COMMENTDOCKEYWORD = stc_c.wxSTC_SCRIPTOL_COMMENTDOCKEYWORD wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR = stc_c.wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR wxSTC_SCRIPTOL_COMMENTBASIC = stc_c.wxSTC_SCRIPTOL_COMMENTBASIC -wxSTCNameStr = stc_c.wxSTCNameStr +wxSTC_CMD_REDO = stc_c.wxSTC_CMD_REDO +wxSTC_CMD_SELECTALL = stc_c.wxSTC_CMD_SELECTALL +wxSTC_CMD_UNDO = stc_c.wxSTC_CMD_UNDO +wxSTC_CMD_CUT = stc_c.wxSTC_CMD_CUT +wxSTC_CMD_COPY = stc_c.wxSTC_CMD_COPY +wxSTC_CMD_PASTE = stc_c.wxSTC_CMD_PASTE +wxSTC_CMD_CLEAR = stc_c.wxSTC_CMD_CLEAR +wxSTC_CMD_LINEDOWN = stc_c.wxSTC_CMD_LINEDOWN +wxSTC_CMD_LINEDOWNEXTEND = stc_c.wxSTC_CMD_LINEDOWNEXTEND +wxSTC_CMD_LINEUP = stc_c.wxSTC_CMD_LINEUP +wxSTC_CMD_LINEUPEXTEND = stc_c.wxSTC_CMD_LINEUPEXTEND +wxSTC_CMD_CHARLEFT = stc_c.wxSTC_CMD_CHARLEFT +wxSTC_CMD_CHARLEFTEXTEND = stc_c.wxSTC_CMD_CHARLEFTEXTEND +wxSTC_CMD_CHARRIGHT = stc_c.wxSTC_CMD_CHARRIGHT +wxSTC_CMD_CHARRIGHTEXTEND = stc_c.wxSTC_CMD_CHARRIGHTEXTEND +wxSTC_CMD_WORDLEFT = stc_c.wxSTC_CMD_WORDLEFT +wxSTC_CMD_WORDLEFTEXTEND = stc_c.wxSTC_CMD_WORDLEFTEXTEND +wxSTC_CMD_WORDRIGHT = stc_c.wxSTC_CMD_WORDRIGHT +wxSTC_CMD_WORDRIGHTEXTEND = stc_c.wxSTC_CMD_WORDRIGHTEXTEND +wxSTC_CMD_HOME = stc_c.wxSTC_CMD_HOME +wxSTC_CMD_HOMEEXTEND = stc_c.wxSTC_CMD_HOMEEXTEND +wxSTC_CMD_LINEEND = stc_c.wxSTC_CMD_LINEEND +wxSTC_CMD_LINEENDEXTEND = stc_c.wxSTC_CMD_LINEENDEXTEND +wxSTC_CMD_DOCUMENTSTART = stc_c.wxSTC_CMD_DOCUMENTSTART +wxSTC_CMD_DOCUMENTSTARTEXTEND = stc_c.wxSTC_CMD_DOCUMENTSTARTEXTEND +wxSTC_CMD_DOCUMENTEND = stc_c.wxSTC_CMD_DOCUMENTEND +wxSTC_CMD_DOCUMENTENDEXTEND = stc_c.wxSTC_CMD_DOCUMENTENDEXTEND +wxSTC_CMD_PAGEUP = stc_c.wxSTC_CMD_PAGEUP +wxSTC_CMD_PAGEUPEXTEND = stc_c.wxSTC_CMD_PAGEUPEXTEND +wxSTC_CMD_PAGEDOWN = stc_c.wxSTC_CMD_PAGEDOWN +wxSTC_CMD_PAGEDOWNEXTEND = stc_c.wxSTC_CMD_PAGEDOWNEXTEND +wxSTC_CMD_EDITTOGGLEOVERTYPE = stc_c.wxSTC_CMD_EDITTOGGLEOVERTYPE +wxSTC_CMD_CANCEL = stc_c.wxSTC_CMD_CANCEL +wxSTC_CMD_DELETEBACK = stc_c.wxSTC_CMD_DELETEBACK +wxSTC_CMD_TAB = stc_c.wxSTC_CMD_TAB +wxSTC_CMD_BACKTAB = stc_c.wxSTC_CMD_BACKTAB +wxSTC_CMD_NEWLINE = stc_c.wxSTC_CMD_NEWLINE +wxSTC_CMD_FORMFEED = stc_c.wxSTC_CMD_FORMFEED +wxSTC_CMD_VCHOME = stc_c.wxSTC_CMD_VCHOME +wxSTC_CMD_VCHOMEEXTEND = stc_c.wxSTC_CMD_VCHOMEEXTEND +wxSTC_CMD_ZOOMIN = stc_c.wxSTC_CMD_ZOOMIN +wxSTC_CMD_ZOOMOUT = stc_c.wxSTC_CMD_ZOOMOUT +wxSTC_CMD_DELWORDLEFT = stc_c.wxSTC_CMD_DELWORDLEFT +wxSTC_CMD_DELWORDRIGHT = stc_c.wxSTC_CMD_DELWORDRIGHT +wxSTC_CMD_LINECUT = stc_c.wxSTC_CMD_LINECUT +wxSTC_CMD_LINEDELETE = stc_c.wxSTC_CMD_LINEDELETE +wxSTC_CMD_LINETRANSPOSE = stc_c.wxSTC_CMD_LINETRANSPOSE +wxSTC_CMD_LOWERCASE = stc_c.wxSTC_CMD_LOWERCASE +wxSTC_CMD_UPPERCASE = stc_c.wxSTC_CMD_UPPERCASE +wxSTC_CMD_LINESCROLLDOWN = stc_c.wxSTC_CMD_LINESCROLLDOWN +wxSTC_CMD_LINESCROLLUP = stc_c.wxSTC_CMD_LINESCROLLUP +wxSTC_CMD_DELETEBACKNOTLINE = stc_c.wxSTC_CMD_DELETEBACKNOTLINE +wxSTC_CMD_HOMEDISPLAY = stc_c.wxSTC_CMD_HOMEDISPLAY +wxSTC_CMD_HOMEDISPLAYEXTEND = stc_c.wxSTC_CMD_HOMEDISPLAYEXTEND +wxSTC_CMD_LINEENDDISPLAY = stc_c.wxSTC_CMD_LINEENDDISPLAY +wxSTC_CMD_LINEENDDISPLAYEXTEND = stc_c.wxSTC_CMD_LINEENDDISPLAYEXTEND +wxSTC_CMD_WORDPARTLEFT = stc_c.wxSTC_CMD_WORDPARTLEFT +wxSTC_CMD_WORDPARTLEFTEXTEND = stc_c.wxSTC_CMD_WORDPARTLEFTEXTEND +wxSTC_CMD_WORDPARTRIGHT = stc_c.wxSTC_CMD_WORDPARTRIGHT +wxSTC_CMD_WORDPARTRIGHTEXTEND = stc_c.wxSTC_CMD_WORDPARTRIGHTEXTEND +wxSTC_CMD_DELLINELEFT = stc_c.wxSTC_CMD_DELLINELEFT +wxSTC_CMD_DELLINERIGHT = stc_c.wxSTC_CMD_DELLINERIGHT STC_USE_DND = stc_c.STC_USE_DND wxEVT_STC_CHANGE = stc_c.wxEVT_STC_CHANGE wxEVT_STC_STYLENEEDED = stc_c.wxEVT_STC_STYLENEEDED @@ -1819,5 +1828,5 @@ wxEVT_STC_ZOOM = stc_c.wxEVT_STC_ZOOM wx.wxStyledTextEventPtr = wxStyledTextEventPtr wx.wxStyledTextCtrlPtr = wxStyledTextCtrlPtr - -wxSTC_CARET_CENTER = wxSTC_CARET_STRICT +# This constant no longer exists in Scintilla, but I'll put it here for a while to avoid disrupting user code... +wxSTC_CARET_CENTER = 0 diff --git a/wxPython/contrib/stc/mac/stc_.cpp b/wxPython/contrib/stc/mac/stc_.cpp index 718e069779..0aa420109b 100644 --- a/wxPython/contrib/stc/mac/stc_.cpp +++ b/wxPython/contrib/stc/mac/stc_.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -1015,7 +1014,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetCurLine(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4804,7 +4803,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetLine(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5041,7 +5040,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetSelectedText(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5080,7 +5079,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetTextRange(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5597,7 +5596,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9161,8 +9160,7 @@ static PyObject *_wrap_wxStyledTextCtrl_StyleSetFont(PyObject *self, PyObject *a } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxStyledTextCtrl_StyleSetFont. Expected _wxFont_p."); return NULL; } @@ -10408,7 +10406,7 @@ static PyObject *_wrap_wxStyledTextEvent_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10781,7 +10779,7 @@ static PyObject *_wrap_wxStyledTextEvent_GetDragText(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11450,8 +11448,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_START", PyInt_FromLong((long) 2000)); PyDict_SetItemString(d,"wxSTC_OPTIONAL_START", PyInt_FromLong((long) 3000)); PyDict_SetItemString(d,"wxSTC_LEXER_START", PyInt_FromLong((long) 4000)); - PyDict_SetItemString(d,"wxSTC_CMD_REDO", PyInt_FromLong((long) 2011)); - PyDict_SetItemString(d,"wxSTC_CMD_SELECTALL", PyInt_FromLong((long) 2013)); PyDict_SetItemString(d,"wxSTC_WS_INVISIBLE", PyInt_FromLong((long) 0)); PyDict_SetItemString(d,"wxSTC_WS_VISIBLEALWAYS", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_WS_VISIBLEAFTERINDENT", PyInt_FromLong((long) 2)); @@ -11545,10 +11541,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_FIND_MATCHCASE", PyInt_FromLong((long) 4)); PyDict_SetItemString(d,"wxSTC_FIND_WORDSTART", PyInt_FromLong((long) 0x00100000)); PyDict_SetItemString(d,"wxSTC_FIND_REGEXP", PyInt_FromLong((long) 0x00200000)); - PyDict_SetItemString(d,"wxSTC_CMD_UNDO", PyInt_FromLong((long) 2176)); - PyDict_SetItemString(d,"wxSTC_CMD_CUT", PyInt_FromLong((long) 2177)); - PyDict_SetItemString(d,"wxSTC_CMD_COPY", PyInt_FromLong((long) 2178)); - PyDict_SetItemString(d,"wxSTC_CMD_PASTE", PyInt_FromLong((long) 2179)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELBASE", PyInt_FromLong((long) 0x400)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELWHITEFLAG", PyInt_FromLong((long) 0x1000)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELHEADERFLAG", PyInt_FromLong((long) 0x2000)); @@ -11560,55 +11552,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_CACHE_CARET", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_CACHE_PAGE", PyInt_FromLong((long) 2)); PyDict_SetItemString(d,"wxSTC_CACHE_DOCUMENT", PyInt_FromLong((long) 3)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWN", PyInt_FromLong((long) 2300)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWNEXTEND", PyInt_FromLong((long) 2301)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEUP", PyInt_FromLong((long) 2302)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEUPEXTEND", PyInt_FromLong((long) 2303)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFT", PyInt_FromLong((long) 2304)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFTEXTEND", PyInt_FromLong((long) 2305)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHT", PyInt_FromLong((long) 2306)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHTEXTEND", PyInt_FromLong((long) 2307)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFT", PyInt_FromLong((long) 2308)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFTEXTEND", PyInt_FromLong((long) 2309)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHT", PyInt_FromLong((long) 2310)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHTEXTEND", PyInt_FromLong((long) 2311)); - PyDict_SetItemString(d,"wxSTC_CMD_HOME", PyInt_FromLong((long) 2312)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEEXTEND", PyInt_FromLong((long) 2313)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEEND", PyInt_FromLong((long) 2314)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDEXTEND", PyInt_FromLong((long) 2315)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTART", PyInt_FromLong((long) 2316)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTARTEXTEND", PyInt_FromLong((long) 2317)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTEND", PyInt_FromLong((long) 2318)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTENDEXTEND", PyInt_FromLong((long) 2319)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEUP", PyInt_FromLong((long) 2320)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEUPEXTEND", PyInt_FromLong((long) 2321)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWN", PyInt_FromLong((long) 2322)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWNEXTEND", PyInt_FromLong((long) 2323)); - PyDict_SetItemString(d,"wxSTC_CMD_EDITTOGGLEOVERTYPE", PyInt_FromLong((long) 2324)); - PyDict_SetItemString(d,"wxSTC_CMD_CANCEL", PyInt_FromLong((long) 2325)); - PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACK", PyInt_FromLong((long) 2326)); - PyDict_SetItemString(d,"wxSTC_CMD_TAB", PyInt_FromLong((long) 2327)); - PyDict_SetItemString(d,"wxSTC_CMD_BACKTAB", PyInt_FromLong((long) 2328)); - PyDict_SetItemString(d,"wxSTC_CMD_NEWLINE", PyInt_FromLong((long) 2329)); - PyDict_SetItemString(d,"wxSTC_CMD_FORMFEED", PyInt_FromLong((long) 2330)); - PyDict_SetItemString(d,"wxSTC_CMD_VCHOME", PyInt_FromLong((long) 2331)); - PyDict_SetItemString(d,"wxSTC_CMD_VCHOMEEXTEND", PyInt_FromLong((long) 2332)); - PyDict_SetItemString(d,"wxSTC_CMD_ZOOMIN", PyInt_FromLong((long) 2333)); - PyDict_SetItemString(d,"wxSTC_CMD_ZOOMOUT", PyInt_FromLong((long) 2334)); - PyDict_SetItemString(d,"wxSTC_CMD_DELWORDLEFT", PyInt_FromLong((long) 2335)); - PyDict_SetItemString(d,"wxSTC_CMD_DELWORDRIGHT", PyInt_FromLong((long) 2336)); - PyDict_SetItemString(d,"wxSTC_CMD_LINECUT", PyInt_FromLong((long) 2337)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDELETE", PyInt_FromLong((long) 2338)); - PyDict_SetItemString(d,"wxSTC_CMD_LINETRANSPOSE", PyInt_FromLong((long) 2339)); - PyDict_SetItemString(d,"wxSTC_CMD_LOWERCASE", PyInt_FromLong((long) 2340)); - PyDict_SetItemString(d,"wxSTC_CMD_UPPERCASE", PyInt_FromLong((long) 2341)); - PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLDOWN", PyInt_FromLong((long) 2342)); - PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLUP", PyInt_FromLong((long) 2343)); - PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACKNOTLINE", PyInt_FromLong((long) 2344)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAY", PyInt_FromLong((long) 2345)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAYEXTEND", PyInt_FromLong((long) 2346)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAY", PyInt_FromLong((long) 2347)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAYEXTEND", PyInt_FromLong((long) 2348)); PyDict_SetItemString(d,"wxSTC_EDGE_NONE", PyInt_FromLong((long) 0)); PyDict_SetItemString(d,"wxSTC_EDGE_LINE", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_EDGE_BACKGROUND", PyInt_FromLong((long) 2)); @@ -12030,7 +11973,68 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTDOCKEYWORD", PyInt_FromLong((long) 17)); PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR", PyInt_FromLong((long) 18)); PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTBASIC", PyInt_FromLong((long) 19)); - PyDict_SetItemString(d,"wxSTCNameStr", PyString_FromString("wxSTCNameStr")); + PyDict_SetItemString(d,"wxSTC_CMD_REDO", PyInt_FromLong((long) 2011)); + PyDict_SetItemString(d,"wxSTC_CMD_SELECTALL", PyInt_FromLong((long) 2013)); + PyDict_SetItemString(d,"wxSTC_CMD_UNDO", PyInt_FromLong((long) 2176)); + PyDict_SetItemString(d,"wxSTC_CMD_CUT", PyInt_FromLong((long) 2177)); + PyDict_SetItemString(d,"wxSTC_CMD_COPY", PyInt_FromLong((long) 2178)); + PyDict_SetItemString(d,"wxSTC_CMD_PASTE", PyInt_FromLong((long) 2179)); + PyDict_SetItemString(d,"wxSTC_CMD_CLEAR", PyInt_FromLong((long) 2180)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWN", PyInt_FromLong((long) 2300)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWNEXTEND", PyInt_FromLong((long) 2301)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEUP", PyInt_FromLong((long) 2302)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEUPEXTEND", PyInt_FromLong((long) 2303)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFT", PyInt_FromLong((long) 2304)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFTEXTEND", PyInt_FromLong((long) 2305)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHT", PyInt_FromLong((long) 2306)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHTEXTEND", PyInt_FromLong((long) 2307)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFT", PyInt_FromLong((long) 2308)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFTEXTEND", PyInt_FromLong((long) 2309)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHT", PyInt_FromLong((long) 2310)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHTEXTEND", PyInt_FromLong((long) 2311)); + PyDict_SetItemString(d,"wxSTC_CMD_HOME", PyInt_FromLong((long) 2312)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEEXTEND", PyInt_FromLong((long) 2313)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEEND", PyInt_FromLong((long) 2314)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDEXTEND", PyInt_FromLong((long) 2315)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTART", PyInt_FromLong((long) 2316)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTARTEXTEND", PyInt_FromLong((long) 2317)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTEND", PyInt_FromLong((long) 2318)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTENDEXTEND", PyInt_FromLong((long) 2319)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEUP", PyInt_FromLong((long) 2320)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEUPEXTEND", PyInt_FromLong((long) 2321)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWN", PyInt_FromLong((long) 2322)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWNEXTEND", PyInt_FromLong((long) 2323)); + PyDict_SetItemString(d,"wxSTC_CMD_EDITTOGGLEOVERTYPE", PyInt_FromLong((long) 2324)); + PyDict_SetItemString(d,"wxSTC_CMD_CANCEL", PyInt_FromLong((long) 2325)); + PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACK", PyInt_FromLong((long) 2326)); + PyDict_SetItemString(d,"wxSTC_CMD_TAB", PyInt_FromLong((long) 2327)); + PyDict_SetItemString(d,"wxSTC_CMD_BACKTAB", PyInt_FromLong((long) 2328)); + PyDict_SetItemString(d,"wxSTC_CMD_NEWLINE", PyInt_FromLong((long) 2329)); + PyDict_SetItemString(d,"wxSTC_CMD_FORMFEED", PyInt_FromLong((long) 2330)); + PyDict_SetItemString(d,"wxSTC_CMD_VCHOME", PyInt_FromLong((long) 2331)); + PyDict_SetItemString(d,"wxSTC_CMD_VCHOMEEXTEND", PyInt_FromLong((long) 2332)); + PyDict_SetItemString(d,"wxSTC_CMD_ZOOMIN", PyInt_FromLong((long) 2333)); + PyDict_SetItemString(d,"wxSTC_CMD_ZOOMOUT", PyInt_FromLong((long) 2334)); + PyDict_SetItemString(d,"wxSTC_CMD_DELWORDLEFT", PyInt_FromLong((long) 2335)); + PyDict_SetItemString(d,"wxSTC_CMD_DELWORDRIGHT", PyInt_FromLong((long) 2336)); + PyDict_SetItemString(d,"wxSTC_CMD_LINECUT", PyInt_FromLong((long) 2337)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDELETE", PyInt_FromLong((long) 2338)); + PyDict_SetItemString(d,"wxSTC_CMD_LINETRANSPOSE", PyInt_FromLong((long) 2339)); + PyDict_SetItemString(d,"wxSTC_CMD_LOWERCASE", PyInt_FromLong((long) 2340)); + PyDict_SetItemString(d,"wxSTC_CMD_UPPERCASE", PyInt_FromLong((long) 2341)); + PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLDOWN", PyInt_FromLong((long) 2342)); + PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLUP", PyInt_FromLong((long) 2343)); + PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACKNOTLINE", PyInt_FromLong((long) 2344)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAY", PyInt_FromLong((long) 2345)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAYEXTEND", PyInt_FromLong((long) 2346)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAY", PyInt_FromLong((long) 2347)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAYEXTEND", PyInt_FromLong((long) 2348)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTLEFT", PyInt_FromLong((long) 2390)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTLEFTEXTEND", PyInt_FromLong((long) 2391)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTRIGHT", PyInt_FromLong((long) 2392)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTRIGHTEXTEND", PyInt_FromLong((long) 2393)); + PyDict_SetItemString(d,"wxSTC_CMD_DELLINELEFT", PyInt_FromLong((long) 2395)); + PyDict_SetItemString(d,"wxSTC_CMD_DELLINERIGHT", PyInt_FromLong((long) 2396)); PyDict_SetItemString(d,"STC_USE_DND", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxEVT_STC_CHANGE", PyInt_FromLong((long) wxEVT_STC_CHANGE)); PyDict_SetItemString(d,"wxEVT_STC_STYLENEEDED", PyInt_FromLong((long) wxEVT_STC_STYLENEEDED)); diff --git a/wxPython/contrib/stc/mac/stc_.py b/wxPython/contrib/stc/mac/stc_.py index 283ac7527d..a3a4fef4a9 100644 --- a/wxPython/contrib/stc/mac/stc_.py +++ b/wxPython/contrib/stc/mac/stc_.py @@ -1046,9 +1046,12 @@ class wxStyledTextEventPtr(wxCommandEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,stc_c=stc_c): - if self.thisown == 1 : - stc_c.delete_wxStyledTextEvent(self) + def __del__(self, delfunc=stc_c.delete_wxStyledTextEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetPosition(self, *_args, **_kwargs): val = apply(stc_c.wxStyledTextEvent_SetPosition,(self,) + _args, _kwargs) return val @@ -1205,8 +1208,6 @@ wxSTC_INVALID_POSITION = stc_c.wxSTC_INVALID_POSITION wxSTC_START = stc_c.wxSTC_START wxSTC_OPTIONAL_START = stc_c.wxSTC_OPTIONAL_START wxSTC_LEXER_START = stc_c.wxSTC_LEXER_START -wxSTC_CMD_REDO = stc_c.wxSTC_CMD_REDO -wxSTC_CMD_SELECTALL = stc_c.wxSTC_CMD_SELECTALL wxSTC_WS_INVISIBLE = stc_c.wxSTC_WS_INVISIBLE wxSTC_WS_VISIBLEALWAYS = stc_c.wxSTC_WS_VISIBLEALWAYS wxSTC_WS_VISIBLEAFTERINDENT = stc_c.wxSTC_WS_VISIBLEAFTERINDENT @@ -1300,10 +1301,6 @@ wxSTC_FIND_WHOLEWORD = stc_c.wxSTC_FIND_WHOLEWORD wxSTC_FIND_MATCHCASE = stc_c.wxSTC_FIND_MATCHCASE wxSTC_FIND_WORDSTART = stc_c.wxSTC_FIND_WORDSTART wxSTC_FIND_REGEXP = stc_c.wxSTC_FIND_REGEXP -wxSTC_CMD_UNDO = stc_c.wxSTC_CMD_UNDO -wxSTC_CMD_CUT = stc_c.wxSTC_CMD_CUT -wxSTC_CMD_COPY = stc_c.wxSTC_CMD_COPY -wxSTC_CMD_PASTE = stc_c.wxSTC_CMD_PASTE wxSTC_FOLDLEVELBASE = stc_c.wxSTC_FOLDLEVELBASE wxSTC_FOLDLEVELWHITEFLAG = stc_c.wxSTC_FOLDLEVELWHITEFLAG wxSTC_FOLDLEVELHEADERFLAG = stc_c.wxSTC_FOLDLEVELHEADERFLAG @@ -1315,55 +1312,6 @@ wxSTC_CACHE_NONE = stc_c.wxSTC_CACHE_NONE wxSTC_CACHE_CARET = stc_c.wxSTC_CACHE_CARET wxSTC_CACHE_PAGE = stc_c.wxSTC_CACHE_PAGE wxSTC_CACHE_DOCUMENT = stc_c.wxSTC_CACHE_DOCUMENT -wxSTC_CMD_LINEDOWN = stc_c.wxSTC_CMD_LINEDOWN -wxSTC_CMD_LINEDOWNEXTEND = stc_c.wxSTC_CMD_LINEDOWNEXTEND -wxSTC_CMD_LINEUP = stc_c.wxSTC_CMD_LINEUP -wxSTC_CMD_LINEUPEXTEND = stc_c.wxSTC_CMD_LINEUPEXTEND -wxSTC_CMD_CHARLEFT = stc_c.wxSTC_CMD_CHARLEFT -wxSTC_CMD_CHARLEFTEXTEND = stc_c.wxSTC_CMD_CHARLEFTEXTEND -wxSTC_CMD_CHARRIGHT = stc_c.wxSTC_CMD_CHARRIGHT -wxSTC_CMD_CHARRIGHTEXTEND = stc_c.wxSTC_CMD_CHARRIGHTEXTEND -wxSTC_CMD_WORDLEFT = stc_c.wxSTC_CMD_WORDLEFT -wxSTC_CMD_WORDLEFTEXTEND = stc_c.wxSTC_CMD_WORDLEFTEXTEND -wxSTC_CMD_WORDRIGHT = stc_c.wxSTC_CMD_WORDRIGHT -wxSTC_CMD_WORDRIGHTEXTEND = stc_c.wxSTC_CMD_WORDRIGHTEXTEND -wxSTC_CMD_HOME = stc_c.wxSTC_CMD_HOME -wxSTC_CMD_HOMEEXTEND = stc_c.wxSTC_CMD_HOMEEXTEND -wxSTC_CMD_LINEEND = stc_c.wxSTC_CMD_LINEEND -wxSTC_CMD_LINEENDEXTEND = stc_c.wxSTC_CMD_LINEENDEXTEND -wxSTC_CMD_DOCUMENTSTART = stc_c.wxSTC_CMD_DOCUMENTSTART -wxSTC_CMD_DOCUMENTSTARTEXTEND = stc_c.wxSTC_CMD_DOCUMENTSTARTEXTEND -wxSTC_CMD_DOCUMENTEND = stc_c.wxSTC_CMD_DOCUMENTEND -wxSTC_CMD_DOCUMENTENDEXTEND = stc_c.wxSTC_CMD_DOCUMENTENDEXTEND -wxSTC_CMD_PAGEUP = stc_c.wxSTC_CMD_PAGEUP -wxSTC_CMD_PAGEUPEXTEND = stc_c.wxSTC_CMD_PAGEUPEXTEND -wxSTC_CMD_PAGEDOWN = stc_c.wxSTC_CMD_PAGEDOWN -wxSTC_CMD_PAGEDOWNEXTEND = stc_c.wxSTC_CMD_PAGEDOWNEXTEND -wxSTC_CMD_EDITTOGGLEOVERTYPE = stc_c.wxSTC_CMD_EDITTOGGLEOVERTYPE -wxSTC_CMD_CANCEL = stc_c.wxSTC_CMD_CANCEL -wxSTC_CMD_DELETEBACK = stc_c.wxSTC_CMD_DELETEBACK -wxSTC_CMD_TAB = stc_c.wxSTC_CMD_TAB -wxSTC_CMD_BACKTAB = stc_c.wxSTC_CMD_BACKTAB -wxSTC_CMD_NEWLINE = stc_c.wxSTC_CMD_NEWLINE -wxSTC_CMD_FORMFEED = stc_c.wxSTC_CMD_FORMFEED -wxSTC_CMD_VCHOME = stc_c.wxSTC_CMD_VCHOME -wxSTC_CMD_VCHOMEEXTEND = stc_c.wxSTC_CMD_VCHOMEEXTEND -wxSTC_CMD_ZOOMIN = stc_c.wxSTC_CMD_ZOOMIN -wxSTC_CMD_ZOOMOUT = stc_c.wxSTC_CMD_ZOOMOUT -wxSTC_CMD_DELWORDLEFT = stc_c.wxSTC_CMD_DELWORDLEFT -wxSTC_CMD_DELWORDRIGHT = stc_c.wxSTC_CMD_DELWORDRIGHT -wxSTC_CMD_LINECUT = stc_c.wxSTC_CMD_LINECUT -wxSTC_CMD_LINEDELETE = stc_c.wxSTC_CMD_LINEDELETE -wxSTC_CMD_LINETRANSPOSE = stc_c.wxSTC_CMD_LINETRANSPOSE -wxSTC_CMD_LOWERCASE = stc_c.wxSTC_CMD_LOWERCASE -wxSTC_CMD_UPPERCASE = stc_c.wxSTC_CMD_UPPERCASE -wxSTC_CMD_LINESCROLLDOWN = stc_c.wxSTC_CMD_LINESCROLLDOWN -wxSTC_CMD_LINESCROLLUP = stc_c.wxSTC_CMD_LINESCROLLUP -wxSTC_CMD_DELETEBACKNOTLINE = stc_c.wxSTC_CMD_DELETEBACKNOTLINE -wxSTC_CMD_HOMEDISPLAY = stc_c.wxSTC_CMD_HOMEDISPLAY -wxSTC_CMD_HOMEDISPLAYEXTEND = stc_c.wxSTC_CMD_HOMEDISPLAYEXTEND -wxSTC_CMD_LINEENDDISPLAY = stc_c.wxSTC_CMD_LINEENDDISPLAY -wxSTC_CMD_LINEENDDISPLAYEXTEND = stc_c.wxSTC_CMD_LINEENDDISPLAYEXTEND wxSTC_EDGE_NONE = stc_c.wxSTC_EDGE_NONE wxSTC_EDGE_LINE = stc_c.wxSTC_EDGE_LINE wxSTC_EDGE_BACKGROUND = stc_c.wxSTC_EDGE_BACKGROUND @@ -1785,7 +1733,68 @@ wxSTC_SCRIPTOL_WORD2 = stc_c.wxSTC_SCRIPTOL_WORD2 wxSTC_SCRIPTOL_COMMENTDOCKEYWORD = stc_c.wxSTC_SCRIPTOL_COMMENTDOCKEYWORD wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR = stc_c.wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR wxSTC_SCRIPTOL_COMMENTBASIC = stc_c.wxSTC_SCRIPTOL_COMMENTBASIC -wxSTCNameStr = stc_c.wxSTCNameStr +wxSTC_CMD_REDO = stc_c.wxSTC_CMD_REDO +wxSTC_CMD_SELECTALL = stc_c.wxSTC_CMD_SELECTALL +wxSTC_CMD_UNDO = stc_c.wxSTC_CMD_UNDO +wxSTC_CMD_CUT = stc_c.wxSTC_CMD_CUT +wxSTC_CMD_COPY = stc_c.wxSTC_CMD_COPY +wxSTC_CMD_PASTE = stc_c.wxSTC_CMD_PASTE +wxSTC_CMD_CLEAR = stc_c.wxSTC_CMD_CLEAR +wxSTC_CMD_LINEDOWN = stc_c.wxSTC_CMD_LINEDOWN +wxSTC_CMD_LINEDOWNEXTEND = stc_c.wxSTC_CMD_LINEDOWNEXTEND +wxSTC_CMD_LINEUP = stc_c.wxSTC_CMD_LINEUP +wxSTC_CMD_LINEUPEXTEND = stc_c.wxSTC_CMD_LINEUPEXTEND +wxSTC_CMD_CHARLEFT = stc_c.wxSTC_CMD_CHARLEFT +wxSTC_CMD_CHARLEFTEXTEND = stc_c.wxSTC_CMD_CHARLEFTEXTEND +wxSTC_CMD_CHARRIGHT = stc_c.wxSTC_CMD_CHARRIGHT +wxSTC_CMD_CHARRIGHTEXTEND = stc_c.wxSTC_CMD_CHARRIGHTEXTEND +wxSTC_CMD_WORDLEFT = stc_c.wxSTC_CMD_WORDLEFT +wxSTC_CMD_WORDLEFTEXTEND = stc_c.wxSTC_CMD_WORDLEFTEXTEND +wxSTC_CMD_WORDRIGHT = stc_c.wxSTC_CMD_WORDRIGHT +wxSTC_CMD_WORDRIGHTEXTEND = stc_c.wxSTC_CMD_WORDRIGHTEXTEND +wxSTC_CMD_HOME = stc_c.wxSTC_CMD_HOME +wxSTC_CMD_HOMEEXTEND = stc_c.wxSTC_CMD_HOMEEXTEND +wxSTC_CMD_LINEEND = stc_c.wxSTC_CMD_LINEEND +wxSTC_CMD_LINEENDEXTEND = stc_c.wxSTC_CMD_LINEENDEXTEND +wxSTC_CMD_DOCUMENTSTART = stc_c.wxSTC_CMD_DOCUMENTSTART +wxSTC_CMD_DOCUMENTSTARTEXTEND = stc_c.wxSTC_CMD_DOCUMENTSTARTEXTEND +wxSTC_CMD_DOCUMENTEND = stc_c.wxSTC_CMD_DOCUMENTEND +wxSTC_CMD_DOCUMENTENDEXTEND = stc_c.wxSTC_CMD_DOCUMENTENDEXTEND +wxSTC_CMD_PAGEUP = stc_c.wxSTC_CMD_PAGEUP +wxSTC_CMD_PAGEUPEXTEND = stc_c.wxSTC_CMD_PAGEUPEXTEND +wxSTC_CMD_PAGEDOWN = stc_c.wxSTC_CMD_PAGEDOWN +wxSTC_CMD_PAGEDOWNEXTEND = stc_c.wxSTC_CMD_PAGEDOWNEXTEND +wxSTC_CMD_EDITTOGGLEOVERTYPE = stc_c.wxSTC_CMD_EDITTOGGLEOVERTYPE +wxSTC_CMD_CANCEL = stc_c.wxSTC_CMD_CANCEL +wxSTC_CMD_DELETEBACK = stc_c.wxSTC_CMD_DELETEBACK +wxSTC_CMD_TAB = stc_c.wxSTC_CMD_TAB +wxSTC_CMD_BACKTAB = stc_c.wxSTC_CMD_BACKTAB +wxSTC_CMD_NEWLINE = stc_c.wxSTC_CMD_NEWLINE +wxSTC_CMD_FORMFEED = stc_c.wxSTC_CMD_FORMFEED +wxSTC_CMD_VCHOME = stc_c.wxSTC_CMD_VCHOME +wxSTC_CMD_VCHOMEEXTEND = stc_c.wxSTC_CMD_VCHOMEEXTEND +wxSTC_CMD_ZOOMIN = stc_c.wxSTC_CMD_ZOOMIN +wxSTC_CMD_ZOOMOUT = stc_c.wxSTC_CMD_ZOOMOUT +wxSTC_CMD_DELWORDLEFT = stc_c.wxSTC_CMD_DELWORDLEFT +wxSTC_CMD_DELWORDRIGHT = stc_c.wxSTC_CMD_DELWORDRIGHT +wxSTC_CMD_LINECUT = stc_c.wxSTC_CMD_LINECUT +wxSTC_CMD_LINEDELETE = stc_c.wxSTC_CMD_LINEDELETE +wxSTC_CMD_LINETRANSPOSE = stc_c.wxSTC_CMD_LINETRANSPOSE +wxSTC_CMD_LOWERCASE = stc_c.wxSTC_CMD_LOWERCASE +wxSTC_CMD_UPPERCASE = stc_c.wxSTC_CMD_UPPERCASE +wxSTC_CMD_LINESCROLLDOWN = stc_c.wxSTC_CMD_LINESCROLLDOWN +wxSTC_CMD_LINESCROLLUP = stc_c.wxSTC_CMD_LINESCROLLUP +wxSTC_CMD_DELETEBACKNOTLINE = stc_c.wxSTC_CMD_DELETEBACKNOTLINE +wxSTC_CMD_HOMEDISPLAY = stc_c.wxSTC_CMD_HOMEDISPLAY +wxSTC_CMD_HOMEDISPLAYEXTEND = stc_c.wxSTC_CMD_HOMEDISPLAYEXTEND +wxSTC_CMD_LINEENDDISPLAY = stc_c.wxSTC_CMD_LINEENDDISPLAY +wxSTC_CMD_LINEENDDISPLAYEXTEND = stc_c.wxSTC_CMD_LINEENDDISPLAYEXTEND +wxSTC_CMD_WORDPARTLEFT = stc_c.wxSTC_CMD_WORDPARTLEFT +wxSTC_CMD_WORDPARTLEFTEXTEND = stc_c.wxSTC_CMD_WORDPARTLEFTEXTEND +wxSTC_CMD_WORDPARTRIGHT = stc_c.wxSTC_CMD_WORDPARTRIGHT +wxSTC_CMD_WORDPARTRIGHTEXTEND = stc_c.wxSTC_CMD_WORDPARTRIGHTEXTEND +wxSTC_CMD_DELLINELEFT = stc_c.wxSTC_CMD_DELLINELEFT +wxSTC_CMD_DELLINERIGHT = stc_c.wxSTC_CMD_DELLINERIGHT STC_USE_DND = stc_c.STC_USE_DND wxEVT_STC_CHANGE = stc_c.wxEVT_STC_CHANGE wxEVT_STC_STYLENEEDED = stc_c.wxEVT_STC_STYLENEEDED @@ -1819,5 +1828,5 @@ wxEVT_STC_ZOOM = stc_c.wxEVT_STC_ZOOM wx.wxStyledTextEventPtr = wxStyledTextEventPtr wx.wxStyledTextCtrlPtr = wxStyledTextCtrlPtr - -wxSTC_CARET_CENTER = wxSTC_CARET_STRICT +# This constant no longer exists in Scintilla, but I'll put it here for a while to avoid disrupting user code... +wxSTC_CARET_CENTER = 0 diff --git a/wxPython/contrib/stc/msw/stc_.cpp b/wxPython/contrib/stc/msw/stc_.cpp index 17c9161e10..70f55c2596 100644 --- a/wxPython/contrib/stc/msw/stc_.cpp +++ b/wxPython/contrib/stc/msw/stc_.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -1015,7 +1014,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetCurLine(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4804,7 +4803,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetLine(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5041,7 +5040,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetSelectedText(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5080,7 +5079,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetTextRange(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5597,7 +5596,7 @@ static PyObject *_wrap_wxStyledTextCtrl_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9161,8 +9160,7 @@ static PyObject *_wrap_wxStyledTextCtrl_StyleSetFont(PyObject *self, PyObject *a } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxStyledTextCtrl_StyleSetFont. Expected _wxFont_p."); return NULL; } @@ -10408,7 +10406,7 @@ static PyObject *_wrap_wxStyledTextEvent_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10781,7 +10779,7 @@ static PyObject *_wrap_wxStyledTextEvent_GetDragText(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11450,8 +11448,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_START", PyInt_FromLong((long) 2000)); PyDict_SetItemString(d,"wxSTC_OPTIONAL_START", PyInt_FromLong((long) 3000)); PyDict_SetItemString(d,"wxSTC_LEXER_START", PyInt_FromLong((long) 4000)); - PyDict_SetItemString(d,"wxSTC_CMD_REDO", PyInt_FromLong((long) 2011)); - PyDict_SetItemString(d,"wxSTC_CMD_SELECTALL", PyInt_FromLong((long) 2013)); PyDict_SetItemString(d,"wxSTC_WS_INVISIBLE", PyInt_FromLong((long) 0)); PyDict_SetItemString(d,"wxSTC_WS_VISIBLEALWAYS", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_WS_VISIBLEAFTERINDENT", PyInt_FromLong((long) 2)); @@ -11545,10 +11541,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_FIND_MATCHCASE", PyInt_FromLong((long) 4)); PyDict_SetItemString(d,"wxSTC_FIND_WORDSTART", PyInt_FromLong((long) 0x00100000)); PyDict_SetItemString(d,"wxSTC_FIND_REGEXP", PyInt_FromLong((long) 0x00200000)); - PyDict_SetItemString(d,"wxSTC_CMD_UNDO", PyInt_FromLong((long) 2176)); - PyDict_SetItemString(d,"wxSTC_CMD_CUT", PyInt_FromLong((long) 2177)); - PyDict_SetItemString(d,"wxSTC_CMD_COPY", PyInt_FromLong((long) 2178)); - PyDict_SetItemString(d,"wxSTC_CMD_PASTE", PyInt_FromLong((long) 2179)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELBASE", PyInt_FromLong((long) 0x400)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELWHITEFLAG", PyInt_FromLong((long) 0x1000)); PyDict_SetItemString(d,"wxSTC_FOLDLEVELHEADERFLAG", PyInt_FromLong((long) 0x2000)); @@ -11560,55 +11552,6 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_CACHE_CARET", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_CACHE_PAGE", PyInt_FromLong((long) 2)); PyDict_SetItemString(d,"wxSTC_CACHE_DOCUMENT", PyInt_FromLong((long) 3)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWN", PyInt_FromLong((long) 2300)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWNEXTEND", PyInt_FromLong((long) 2301)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEUP", PyInt_FromLong((long) 2302)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEUPEXTEND", PyInt_FromLong((long) 2303)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFT", PyInt_FromLong((long) 2304)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFTEXTEND", PyInt_FromLong((long) 2305)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHT", PyInt_FromLong((long) 2306)); - PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHTEXTEND", PyInt_FromLong((long) 2307)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFT", PyInt_FromLong((long) 2308)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFTEXTEND", PyInt_FromLong((long) 2309)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHT", PyInt_FromLong((long) 2310)); - PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHTEXTEND", PyInt_FromLong((long) 2311)); - PyDict_SetItemString(d,"wxSTC_CMD_HOME", PyInt_FromLong((long) 2312)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEEXTEND", PyInt_FromLong((long) 2313)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEEND", PyInt_FromLong((long) 2314)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDEXTEND", PyInt_FromLong((long) 2315)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTART", PyInt_FromLong((long) 2316)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTARTEXTEND", PyInt_FromLong((long) 2317)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTEND", PyInt_FromLong((long) 2318)); - PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTENDEXTEND", PyInt_FromLong((long) 2319)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEUP", PyInt_FromLong((long) 2320)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEUPEXTEND", PyInt_FromLong((long) 2321)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWN", PyInt_FromLong((long) 2322)); - PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWNEXTEND", PyInt_FromLong((long) 2323)); - PyDict_SetItemString(d,"wxSTC_CMD_EDITTOGGLEOVERTYPE", PyInt_FromLong((long) 2324)); - PyDict_SetItemString(d,"wxSTC_CMD_CANCEL", PyInt_FromLong((long) 2325)); - PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACK", PyInt_FromLong((long) 2326)); - PyDict_SetItemString(d,"wxSTC_CMD_TAB", PyInt_FromLong((long) 2327)); - PyDict_SetItemString(d,"wxSTC_CMD_BACKTAB", PyInt_FromLong((long) 2328)); - PyDict_SetItemString(d,"wxSTC_CMD_NEWLINE", PyInt_FromLong((long) 2329)); - PyDict_SetItemString(d,"wxSTC_CMD_FORMFEED", PyInt_FromLong((long) 2330)); - PyDict_SetItemString(d,"wxSTC_CMD_VCHOME", PyInt_FromLong((long) 2331)); - PyDict_SetItemString(d,"wxSTC_CMD_VCHOMEEXTEND", PyInt_FromLong((long) 2332)); - PyDict_SetItemString(d,"wxSTC_CMD_ZOOMIN", PyInt_FromLong((long) 2333)); - PyDict_SetItemString(d,"wxSTC_CMD_ZOOMOUT", PyInt_FromLong((long) 2334)); - PyDict_SetItemString(d,"wxSTC_CMD_DELWORDLEFT", PyInt_FromLong((long) 2335)); - PyDict_SetItemString(d,"wxSTC_CMD_DELWORDRIGHT", PyInt_FromLong((long) 2336)); - PyDict_SetItemString(d,"wxSTC_CMD_LINECUT", PyInt_FromLong((long) 2337)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEDELETE", PyInt_FromLong((long) 2338)); - PyDict_SetItemString(d,"wxSTC_CMD_LINETRANSPOSE", PyInt_FromLong((long) 2339)); - PyDict_SetItemString(d,"wxSTC_CMD_LOWERCASE", PyInt_FromLong((long) 2340)); - PyDict_SetItemString(d,"wxSTC_CMD_UPPERCASE", PyInt_FromLong((long) 2341)); - PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLDOWN", PyInt_FromLong((long) 2342)); - PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLUP", PyInt_FromLong((long) 2343)); - PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACKNOTLINE", PyInt_FromLong((long) 2344)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAY", PyInt_FromLong((long) 2345)); - PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAYEXTEND", PyInt_FromLong((long) 2346)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAY", PyInt_FromLong((long) 2347)); - PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAYEXTEND", PyInt_FromLong((long) 2348)); PyDict_SetItemString(d,"wxSTC_EDGE_NONE", PyInt_FromLong((long) 0)); PyDict_SetItemString(d,"wxSTC_EDGE_LINE", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxSTC_EDGE_BACKGROUND", PyInt_FromLong((long) 2)); @@ -12030,7 +11973,68 @@ SWIGEXPORT(void) initstc_c() { PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTDOCKEYWORD", PyInt_FromLong((long) 17)); PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR", PyInt_FromLong((long) 18)); PyDict_SetItemString(d,"wxSTC_SCRIPTOL_COMMENTBASIC", PyInt_FromLong((long) 19)); - PyDict_SetItemString(d,"wxSTCNameStr", PyString_FromString("wxSTCNameStr")); + PyDict_SetItemString(d,"wxSTC_CMD_REDO", PyInt_FromLong((long) 2011)); + PyDict_SetItemString(d,"wxSTC_CMD_SELECTALL", PyInt_FromLong((long) 2013)); + PyDict_SetItemString(d,"wxSTC_CMD_UNDO", PyInt_FromLong((long) 2176)); + PyDict_SetItemString(d,"wxSTC_CMD_CUT", PyInt_FromLong((long) 2177)); + PyDict_SetItemString(d,"wxSTC_CMD_COPY", PyInt_FromLong((long) 2178)); + PyDict_SetItemString(d,"wxSTC_CMD_PASTE", PyInt_FromLong((long) 2179)); + PyDict_SetItemString(d,"wxSTC_CMD_CLEAR", PyInt_FromLong((long) 2180)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWN", PyInt_FromLong((long) 2300)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDOWNEXTEND", PyInt_FromLong((long) 2301)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEUP", PyInt_FromLong((long) 2302)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEUPEXTEND", PyInt_FromLong((long) 2303)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFT", PyInt_FromLong((long) 2304)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARLEFTEXTEND", PyInt_FromLong((long) 2305)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHT", PyInt_FromLong((long) 2306)); + PyDict_SetItemString(d,"wxSTC_CMD_CHARRIGHTEXTEND", PyInt_FromLong((long) 2307)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFT", PyInt_FromLong((long) 2308)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDLEFTEXTEND", PyInt_FromLong((long) 2309)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHT", PyInt_FromLong((long) 2310)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDRIGHTEXTEND", PyInt_FromLong((long) 2311)); + PyDict_SetItemString(d,"wxSTC_CMD_HOME", PyInt_FromLong((long) 2312)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEEXTEND", PyInt_FromLong((long) 2313)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEEND", PyInt_FromLong((long) 2314)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDEXTEND", PyInt_FromLong((long) 2315)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTART", PyInt_FromLong((long) 2316)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTSTARTEXTEND", PyInt_FromLong((long) 2317)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTEND", PyInt_FromLong((long) 2318)); + PyDict_SetItemString(d,"wxSTC_CMD_DOCUMENTENDEXTEND", PyInt_FromLong((long) 2319)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEUP", PyInt_FromLong((long) 2320)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEUPEXTEND", PyInt_FromLong((long) 2321)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWN", PyInt_FromLong((long) 2322)); + PyDict_SetItemString(d,"wxSTC_CMD_PAGEDOWNEXTEND", PyInt_FromLong((long) 2323)); + PyDict_SetItemString(d,"wxSTC_CMD_EDITTOGGLEOVERTYPE", PyInt_FromLong((long) 2324)); + PyDict_SetItemString(d,"wxSTC_CMD_CANCEL", PyInt_FromLong((long) 2325)); + PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACK", PyInt_FromLong((long) 2326)); + PyDict_SetItemString(d,"wxSTC_CMD_TAB", PyInt_FromLong((long) 2327)); + PyDict_SetItemString(d,"wxSTC_CMD_BACKTAB", PyInt_FromLong((long) 2328)); + PyDict_SetItemString(d,"wxSTC_CMD_NEWLINE", PyInt_FromLong((long) 2329)); + PyDict_SetItemString(d,"wxSTC_CMD_FORMFEED", PyInt_FromLong((long) 2330)); + PyDict_SetItemString(d,"wxSTC_CMD_VCHOME", PyInt_FromLong((long) 2331)); + PyDict_SetItemString(d,"wxSTC_CMD_VCHOMEEXTEND", PyInt_FromLong((long) 2332)); + PyDict_SetItemString(d,"wxSTC_CMD_ZOOMIN", PyInt_FromLong((long) 2333)); + PyDict_SetItemString(d,"wxSTC_CMD_ZOOMOUT", PyInt_FromLong((long) 2334)); + PyDict_SetItemString(d,"wxSTC_CMD_DELWORDLEFT", PyInt_FromLong((long) 2335)); + PyDict_SetItemString(d,"wxSTC_CMD_DELWORDRIGHT", PyInt_FromLong((long) 2336)); + PyDict_SetItemString(d,"wxSTC_CMD_LINECUT", PyInt_FromLong((long) 2337)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEDELETE", PyInt_FromLong((long) 2338)); + PyDict_SetItemString(d,"wxSTC_CMD_LINETRANSPOSE", PyInt_FromLong((long) 2339)); + PyDict_SetItemString(d,"wxSTC_CMD_LOWERCASE", PyInt_FromLong((long) 2340)); + PyDict_SetItemString(d,"wxSTC_CMD_UPPERCASE", PyInt_FromLong((long) 2341)); + PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLDOWN", PyInt_FromLong((long) 2342)); + PyDict_SetItemString(d,"wxSTC_CMD_LINESCROLLUP", PyInt_FromLong((long) 2343)); + PyDict_SetItemString(d,"wxSTC_CMD_DELETEBACKNOTLINE", PyInt_FromLong((long) 2344)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAY", PyInt_FromLong((long) 2345)); + PyDict_SetItemString(d,"wxSTC_CMD_HOMEDISPLAYEXTEND", PyInt_FromLong((long) 2346)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAY", PyInt_FromLong((long) 2347)); + PyDict_SetItemString(d,"wxSTC_CMD_LINEENDDISPLAYEXTEND", PyInt_FromLong((long) 2348)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTLEFT", PyInt_FromLong((long) 2390)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTLEFTEXTEND", PyInt_FromLong((long) 2391)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTRIGHT", PyInt_FromLong((long) 2392)); + PyDict_SetItemString(d,"wxSTC_CMD_WORDPARTRIGHTEXTEND", PyInt_FromLong((long) 2393)); + PyDict_SetItemString(d,"wxSTC_CMD_DELLINELEFT", PyInt_FromLong((long) 2395)); + PyDict_SetItemString(d,"wxSTC_CMD_DELLINERIGHT", PyInt_FromLong((long) 2396)); PyDict_SetItemString(d,"STC_USE_DND", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxEVT_STC_CHANGE", PyInt_FromLong((long) wxEVT_STC_CHANGE)); PyDict_SetItemString(d,"wxEVT_STC_STYLENEEDED", PyInt_FromLong((long) wxEVT_STC_STYLENEEDED)); diff --git a/wxPython/contrib/stc/msw/stc_.py b/wxPython/contrib/stc/msw/stc_.py index 283ac7527d..a3a4fef4a9 100644 --- a/wxPython/contrib/stc/msw/stc_.py +++ b/wxPython/contrib/stc/msw/stc_.py @@ -1046,9 +1046,12 @@ class wxStyledTextEventPtr(wxCommandEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,stc_c=stc_c): - if self.thisown == 1 : - stc_c.delete_wxStyledTextEvent(self) + def __del__(self, delfunc=stc_c.delete_wxStyledTextEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetPosition(self, *_args, **_kwargs): val = apply(stc_c.wxStyledTextEvent_SetPosition,(self,) + _args, _kwargs) return val @@ -1205,8 +1208,6 @@ wxSTC_INVALID_POSITION = stc_c.wxSTC_INVALID_POSITION wxSTC_START = stc_c.wxSTC_START wxSTC_OPTIONAL_START = stc_c.wxSTC_OPTIONAL_START wxSTC_LEXER_START = stc_c.wxSTC_LEXER_START -wxSTC_CMD_REDO = stc_c.wxSTC_CMD_REDO -wxSTC_CMD_SELECTALL = stc_c.wxSTC_CMD_SELECTALL wxSTC_WS_INVISIBLE = stc_c.wxSTC_WS_INVISIBLE wxSTC_WS_VISIBLEALWAYS = stc_c.wxSTC_WS_VISIBLEALWAYS wxSTC_WS_VISIBLEAFTERINDENT = stc_c.wxSTC_WS_VISIBLEAFTERINDENT @@ -1300,10 +1301,6 @@ wxSTC_FIND_WHOLEWORD = stc_c.wxSTC_FIND_WHOLEWORD wxSTC_FIND_MATCHCASE = stc_c.wxSTC_FIND_MATCHCASE wxSTC_FIND_WORDSTART = stc_c.wxSTC_FIND_WORDSTART wxSTC_FIND_REGEXP = stc_c.wxSTC_FIND_REGEXP -wxSTC_CMD_UNDO = stc_c.wxSTC_CMD_UNDO -wxSTC_CMD_CUT = stc_c.wxSTC_CMD_CUT -wxSTC_CMD_COPY = stc_c.wxSTC_CMD_COPY -wxSTC_CMD_PASTE = stc_c.wxSTC_CMD_PASTE wxSTC_FOLDLEVELBASE = stc_c.wxSTC_FOLDLEVELBASE wxSTC_FOLDLEVELWHITEFLAG = stc_c.wxSTC_FOLDLEVELWHITEFLAG wxSTC_FOLDLEVELHEADERFLAG = stc_c.wxSTC_FOLDLEVELHEADERFLAG @@ -1315,55 +1312,6 @@ wxSTC_CACHE_NONE = stc_c.wxSTC_CACHE_NONE wxSTC_CACHE_CARET = stc_c.wxSTC_CACHE_CARET wxSTC_CACHE_PAGE = stc_c.wxSTC_CACHE_PAGE wxSTC_CACHE_DOCUMENT = stc_c.wxSTC_CACHE_DOCUMENT -wxSTC_CMD_LINEDOWN = stc_c.wxSTC_CMD_LINEDOWN -wxSTC_CMD_LINEDOWNEXTEND = stc_c.wxSTC_CMD_LINEDOWNEXTEND -wxSTC_CMD_LINEUP = stc_c.wxSTC_CMD_LINEUP -wxSTC_CMD_LINEUPEXTEND = stc_c.wxSTC_CMD_LINEUPEXTEND -wxSTC_CMD_CHARLEFT = stc_c.wxSTC_CMD_CHARLEFT -wxSTC_CMD_CHARLEFTEXTEND = stc_c.wxSTC_CMD_CHARLEFTEXTEND -wxSTC_CMD_CHARRIGHT = stc_c.wxSTC_CMD_CHARRIGHT -wxSTC_CMD_CHARRIGHTEXTEND = stc_c.wxSTC_CMD_CHARRIGHTEXTEND -wxSTC_CMD_WORDLEFT = stc_c.wxSTC_CMD_WORDLEFT -wxSTC_CMD_WORDLEFTEXTEND = stc_c.wxSTC_CMD_WORDLEFTEXTEND -wxSTC_CMD_WORDRIGHT = stc_c.wxSTC_CMD_WORDRIGHT -wxSTC_CMD_WORDRIGHTEXTEND = stc_c.wxSTC_CMD_WORDRIGHTEXTEND -wxSTC_CMD_HOME = stc_c.wxSTC_CMD_HOME -wxSTC_CMD_HOMEEXTEND = stc_c.wxSTC_CMD_HOMEEXTEND -wxSTC_CMD_LINEEND = stc_c.wxSTC_CMD_LINEEND -wxSTC_CMD_LINEENDEXTEND = stc_c.wxSTC_CMD_LINEENDEXTEND -wxSTC_CMD_DOCUMENTSTART = stc_c.wxSTC_CMD_DOCUMENTSTART -wxSTC_CMD_DOCUMENTSTARTEXTEND = stc_c.wxSTC_CMD_DOCUMENTSTARTEXTEND -wxSTC_CMD_DOCUMENTEND = stc_c.wxSTC_CMD_DOCUMENTEND -wxSTC_CMD_DOCUMENTENDEXTEND = stc_c.wxSTC_CMD_DOCUMENTENDEXTEND -wxSTC_CMD_PAGEUP = stc_c.wxSTC_CMD_PAGEUP -wxSTC_CMD_PAGEUPEXTEND = stc_c.wxSTC_CMD_PAGEUPEXTEND -wxSTC_CMD_PAGEDOWN = stc_c.wxSTC_CMD_PAGEDOWN -wxSTC_CMD_PAGEDOWNEXTEND = stc_c.wxSTC_CMD_PAGEDOWNEXTEND -wxSTC_CMD_EDITTOGGLEOVERTYPE = stc_c.wxSTC_CMD_EDITTOGGLEOVERTYPE -wxSTC_CMD_CANCEL = stc_c.wxSTC_CMD_CANCEL -wxSTC_CMD_DELETEBACK = stc_c.wxSTC_CMD_DELETEBACK -wxSTC_CMD_TAB = stc_c.wxSTC_CMD_TAB -wxSTC_CMD_BACKTAB = stc_c.wxSTC_CMD_BACKTAB -wxSTC_CMD_NEWLINE = stc_c.wxSTC_CMD_NEWLINE -wxSTC_CMD_FORMFEED = stc_c.wxSTC_CMD_FORMFEED -wxSTC_CMD_VCHOME = stc_c.wxSTC_CMD_VCHOME -wxSTC_CMD_VCHOMEEXTEND = stc_c.wxSTC_CMD_VCHOMEEXTEND -wxSTC_CMD_ZOOMIN = stc_c.wxSTC_CMD_ZOOMIN -wxSTC_CMD_ZOOMOUT = stc_c.wxSTC_CMD_ZOOMOUT -wxSTC_CMD_DELWORDLEFT = stc_c.wxSTC_CMD_DELWORDLEFT -wxSTC_CMD_DELWORDRIGHT = stc_c.wxSTC_CMD_DELWORDRIGHT -wxSTC_CMD_LINECUT = stc_c.wxSTC_CMD_LINECUT -wxSTC_CMD_LINEDELETE = stc_c.wxSTC_CMD_LINEDELETE -wxSTC_CMD_LINETRANSPOSE = stc_c.wxSTC_CMD_LINETRANSPOSE -wxSTC_CMD_LOWERCASE = stc_c.wxSTC_CMD_LOWERCASE -wxSTC_CMD_UPPERCASE = stc_c.wxSTC_CMD_UPPERCASE -wxSTC_CMD_LINESCROLLDOWN = stc_c.wxSTC_CMD_LINESCROLLDOWN -wxSTC_CMD_LINESCROLLUP = stc_c.wxSTC_CMD_LINESCROLLUP -wxSTC_CMD_DELETEBACKNOTLINE = stc_c.wxSTC_CMD_DELETEBACKNOTLINE -wxSTC_CMD_HOMEDISPLAY = stc_c.wxSTC_CMD_HOMEDISPLAY -wxSTC_CMD_HOMEDISPLAYEXTEND = stc_c.wxSTC_CMD_HOMEDISPLAYEXTEND -wxSTC_CMD_LINEENDDISPLAY = stc_c.wxSTC_CMD_LINEENDDISPLAY -wxSTC_CMD_LINEENDDISPLAYEXTEND = stc_c.wxSTC_CMD_LINEENDDISPLAYEXTEND wxSTC_EDGE_NONE = stc_c.wxSTC_EDGE_NONE wxSTC_EDGE_LINE = stc_c.wxSTC_EDGE_LINE wxSTC_EDGE_BACKGROUND = stc_c.wxSTC_EDGE_BACKGROUND @@ -1785,7 +1733,68 @@ wxSTC_SCRIPTOL_WORD2 = stc_c.wxSTC_SCRIPTOL_WORD2 wxSTC_SCRIPTOL_COMMENTDOCKEYWORD = stc_c.wxSTC_SCRIPTOL_COMMENTDOCKEYWORD wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR = stc_c.wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR wxSTC_SCRIPTOL_COMMENTBASIC = stc_c.wxSTC_SCRIPTOL_COMMENTBASIC -wxSTCNameStr = stc_c.wxSTCNameStr +wxSTC_CMD_REDO = stc_c.wxSTC_CMD_REDO +wxSTC_CMD_SELECTALL = stc_c.wxSTC_CMD_SELECTALL +wxSTC_CMD_UNDO = stc_c.wxSTC_CMD_UNDO +wxSTC_CMD_CUT = stc_c.wxSTC_CMD_CUT +wxSTC_CMD_COPY = stc_c.wxSTC_CMD_COPY +wxSTC_CMD_PASTE = stc_c.wxSTC_CMD_PASTE +wxSTC_CMD_CLEAR = stc_c.wxSTC_CMD_CLEAR +wxSTC_CMD_LINEDOWN = stc_c.wxSTC_CMD_LINEDOWN +wxSTC_CMD_LINEDOWNEXTEND = stc_c.wxSTC_CMD_LINEDOWNEXTEND +wxSTC_CMD_LINEUP = stc_c.wxSTC_CMD_LINEUP +wxSTC_CMD_LINEUPEXTEND = stc_c.wxSTC_CMD_LINEUPEXTEND +wxSTC_CMD_CHARLEFT = stc_c.wxSTC_CMD_CHARLEFT +wxSTC_CMD_CHARLEFTEXTEND = stc_c.wxSTC_CMD_CHARLEFTEXTEND +wxSTC_CMD_CHARRIGHT = stc_c.wxSTC_CMD_CHARRIGHT +wxSTC_CMD_CHARRIGHTEXTEND = stc_c.wxSTC_CMD_CHARRIGHTEXTEND +wxSTC_CMD_WORDLEFT = stc_c.wxSTC_CMD_WORDLEFT +wxSTC_CMD_WORDLEFTEXTEND = stc_c.wxSTC_CMD_WORDLEFTEXTEND +wxSTC_CMD_WORDRIGHT = stc_c.wxSTC_CMD_WORDRIGHT +wxSTC_CMD_WORDRIGHTEXTEND = stc_c.wxSTC_CMD_WORDRIGHTEXTEND +wxSTC_CMD_HOME = stc_c.wxSTC_CMD_HOME +wxSTC_CMD_HOMEEXTEND = stc_c.wxSTC_CMD_HOMEEXTEND +wxSTC_CMD_LINEEND = stc_c.wxSTC_CMD_LINEEND +wxSTC_CMD_LINEENDEXTEND = stc_c.wxSTC_CMD_LINEENDEXTEND +wxSTC_CMD_DOCUMENTSTART = stc_c.wxSTC_CMD_DOCUMENTSTART +wxSTC_CMD_DOCUMENTSTARTEXTEND = stc_c.wxSTC_CMD_DOCUMENTSTARTEXTEND +wxSTC_CMD_DOCUMENTEND = stc_c.wxSTC_CMD_DOCUMENTEND +wxSTC_CMD_DOCUMENTENDEXTEND = stc_c.wxSTC_CMD_DOCUMENTENDEXTEND +wxSTC_CMD_PAGEUP = stc_c.wxSTC_CMD_PAGEUP +wxSTC_CMD_PAGEUPEXTEND = stc_c.wxSTC_CMD_PAGEUPEXTEND +wxSTC_CMD_PAGEDOWN = stc_c.wxSTC_CMD_PAGEDOWN +wxSTC_CMD_PAGEDOWNEXTEND = stc_c.wxSTC_CMD_PAGEDOWNEXTEND +wxSTC_CMD_EDITTOGGLEOVERTYPE = stc_c.wxSTC_CMD_EDITTOGGLEOVERTYPE +wxSTC_CMD_CANCEL = stc_c.wxSTC_CMD_CANCEL +wxSTC_CMD_DELETEBACK = stc_c.wxSTC_CMD_DELETEBACK +wxSTC_CMD_TAB = stc_c.wxSTC_CMD_TAB +wxSTC_CMD_BACKTAB = stc_c.wxSTC_CMD_BACKTAB +wxSTC_CMD_NEWLINE = stc_c.wxSTC_CMD_NEWLINE +wxSTC_CMD_FORMFEED = stc_c.wxSTC_CMD_FORMFEED +wxSTC_CMD_VCHOME = stc_c.wxSTC_CMD_VCHOME +wxSTC_CMD_VCHOMEEXTEND = stc_c.wxSTC_CMD_VCHOMEEXTEND +wxSTC_CMD_ZOOMIN = stc_c.wxSTC_CMD_ZOOMIN +wxSTC_CMD_ZOOMOUT = stc_c.wxSTC_CMD_ZOOMOUT +wxSTC_CMD_DELWORDLEFT = stc_c.wxSTC_CMD_DELWORDLEFT +wxSTC_CMD_DELWORDRIGHT = stc_c.wxSTC_CMD_DELWORDRIGHT +wxSTC_CMD_LINECUT = stc_c.wxSTC_CMD_LINECUT +wxSTC_CMD_LINEDELETE = stc_c.wxSTC_CMD_LINEDELETE +wxSTC_CMD_LINETRANSPOSE = stc_c.wxSTC_CMD_LINETRANSPOSE +wxSTC_CMD_LOWERCASE = stc_c.wxSTC_CMD_LOWERCASE +wxSTC_CMD_UPPERCASE = stc_c.wxSTC_CMD_UPPERCASE +wxSTC_CMD_LINESCROLLDOWN = stc_c.wxSTC_CMD_LINESCROLLDOWN +wxSTC_CMD_LINESCROLLUP = stc_c.wxSTC_CMD_LINESCROLLUP +wxSTC_CMD_DELETEBACKNOTLINE = stc_c.wxSTC_CMD_DELETEBACKNOTLINE +wxSTC_CMD_HOMEDISPLAY = stc_c.wxSTC_CMD_HOMEDISPLAY +wxSTC_CMD_HOMEDISPLAYEXTEND = stc_c.wxSTC_CMD_HOMEDISPLAYEXTEND +wxSTC_CMD_LINEENDDISPLAY = stc_c.wxSTC_CMD_LINEENDDISPLAY +wxSTC_CMD_LINEENDDISPLAYEXTEND = stc_c.wxSTC_CMD_LINEENDDISPLAYEXTEND +wxSTC_CMD_WORDPARTLEFT = stc_c.wxSTC_CMD_WORDPARTLEFT +wxSTC_CMD_WORDPARTLEFTEXTEND = stc_c.wxSTC_CMD_WORDPARTLEFTEXTEND +wxSTC_CMD_WORDPARTRIGHT = stc_c.wxSTC_CMD_WORDPARTRIGHT +wxSTC_CMD_WORDPARTRIGHTEXTEND = stc_c.wxSTC_CMD_WORDPARTRIGHTEXTEND +wxSTC_CMD_DELLINELEFT = stc_c.wxSTC_CMD_DELLINELEFT +wxSTC_CMD_DELLINERIGHT = stc_c.wxSTC_CMD_DELLINERIGHT STC_USE_DND = stc_c.STC_USE_DND wxEVT_STC_CHANGE = stc_c.wxEVT_STC_CHANGE wxEVT_STC_STYLENEEDED = stc_c.wxEVT_STC_STYLENEEDED @@ -1819,5 +1828,5 @@ wxEVT_STC_ZOOM = stc_c.wxEVT_STC_ZOOM wx.wxStyledTextEventPtr = wxStyledTextEventPtr wx.wxStyledTextCtrlPtr = wxStyledTextCtrlPtr - -wxSTC_CARET_CENTER = wxSTC_CARET_STRICT +# This constant no longer exists in Scintilla, but I'll put it here for a while to avoid disrupting user code... +wxSTC_CARET_CENTER = 0 diff --git a/wxPython/contrib/xrc/_xrcextras.py b/wxPython/contrib/xrc/_xrcextras.py index e4cd16f562..9562aea2eb 100644 --- a/wxPython/contrib/xrc/_xrcextras.py +++ b/wxPython/contrib/xrc/_xrcextras.py @@ -4,3 +4,35 @@ wxTheXmlResource = wxXmlResource_Get() wx.wxXmlNodePtr = wxXmlNodePtr + + + + +#---------------------------------------------------------------------- +# Create a factory for handling the subclass property of the object tag. + + +def _my_import(name): + mod = __import__(name) + components = name.split('.') + for comp in components[1:]: + mod = getattr(mod, comp) + return mod + + +class wxXmlSubclassFactory_Python(wxXmlSubclassFactory): + def __init__(self): + wxXmlSubclassFactory.__init__(self) + + def Create(self, className): + assert className.find('.') != -1, "Module name must be specified!" + mname = className[:className.rfind('.')] + cname = className[className.rfind('.')+1:] + module = _my_import(mname) + klass = getattr(module, cname) + inst = klass() + return inst + + +wxXmlResource_AddSubclassFactory(wxXmlSubclassFactory_Python()) + diff --git a/wxPython/contrib/xrc/xrc.cpp b/wxPython/contrib/xrc/xrc.cpp index e42e2572b8..c9b4c7caba 100644 --- a/wxPython/contrib/xrc/xrc.cpp +++ b/wxPython/contrib/xrc/xrc.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -98,6 +97,16 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { static const wxString wxPyBitmapString(wxT("bitmap")); static const wxString wxPyIconString(wxT("icon")); static const wxString wxPyFontString(wxT("font")); + +class wxPyXmlSubclassFactory : public wxXmlSubclassFactory +{ +public: + wxPyXmlSubclassFactory() {} + DEC_PYCALLBACK_OBJECT_STRING_pure(Create); + PYPRIVATE; +}; + +IMP_PYCALLBACK_OBJECT_STRING_pure(wxPyXmlSubclassFactory, wxXmlSubclassFactory, Create); // C++ version of Python aware wxXmlResourceHandler, for the pure virtual // callbacks, as well as to make some protected things public so they can // be wrapped. @@ -111,34 +120,6 @@ public: DEC_PYCALLBACK_OBJECT__pure(DoCreateResource); DEC_PYCALLBACK_BOOL_NODE_pure(CanHandle); -// wxObject* DoCreateResource() { -// wxObject* rv = NULL; -// wxPyBeginBlockThreads(); -// if (wxPyCBH_findCallback(m_myInst, "DoCreateResource")) { -// PyObject* ro; -// ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); -// if (ro) { -// SWIG_GetPtrObj(ro, (void **)&rv, "_wxObject_p"); -// Py_DECREF(ro); -// } -// } -// wxPyEndBlockThreads(); -// return rv; -// } - -// bool CanHandle(wxXmlNode* a) { -// bool rv=FALSE; -// wxPyBeginBlockThreads(); -// if (wxPyCBH_findCallback(m_myInst, "CanHandle")) { -// PyObject* obj = wxPyConstructObject((void*)a, "wxXmlNode", 0); -// rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); -// Py_DECREF(obj); -// } -// wxPyEndBlockThreads(); -// return rv; -// } - - // accessors for protected members @@ -576,6 +557,33 @@ static PyObject *_wrap_wxXmlResource_ClearHandlers(PyObject *self, PyObject *arg return _resultobj; } +static PyObject *_wrap_wxXmlResource_AddSubclassFactory(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyXmlSubclassFactory * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "factory", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxXmlResource_AddSubclassFactory",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyXmlSubclassFactory_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlResource_AddSubclassFactory. Expected _wxPyXmlSubclassFactory_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxXmlResource::AddSubclassFactory(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxXmlResource_LoadMenu(_swigobj,_swigarg0) (_swigobj->LoadMenu(_swigarg0)) static PyObject *_wrap_wxXmlResource_LoadMenu(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1521,6 +1529,99 @@ static PyObject *_wrap_wxXmlResource_GetFlags(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxXmlResource_SetFlags(_swigobj,_swigarg0) (_swigobj->SetFlags(_swigarg0)) +static PyObject *_wrap_wxXmlResource_SetFlags(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxXmlResource * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","flags", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxXmlResource_SetFlags",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxXmlResource_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlResource_SetFlags. Expected _wxXmlResource_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxXmlResource_SetFlags(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define new_wxXmlSubclassFactory() (new wxPyXmlSubclassFactory()) +static PyObject *_wrap_new_wxXmlSubclassFactory(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyXmlSubclassFactory * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxXmlSubclassFactory",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPyXmlSubclassFactory *)new_wxXmlSubclassFactory(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyXmlSubclassFactory_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxXmlSubclassFactory__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxXmlSubclassFactory__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyXmlSubclassFactory * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxXmlSubclassFactory__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyXmlSubclassFactory_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlSubclassFactory__setCallbackInfo. Expected _wxPyXmlSubclassFactory_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxXmlSubclassFactory__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define new_wxXmlProperty(_swigarg0,_swigarg1,_swigarg2) (new wxXmlProperty(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_new_wxXmlProperty(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1606,7 +1707,7 @@ static PyObject *_wrap_wxXmlProperty_GetName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1643,7 +1744,7 @@ static PyObject *_wrap_wxXmlProperty_GetValue(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2260,7 +2361,7 @@ static PyObject *_wrap_wxXmlNode_GetName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2297,7 +2398,7 @@ static PyObject *_wrap_wxXmlNode_GetContent(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2488,7 +2589,7 @@ static PyObject *_wrap_wxXmlNode_GetPropVal(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3143,8 +3244,7 @@ static PyObject *_wrap_wxXmlDocument_SaveToStream(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxOutputStream_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxOutputStream_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxXmlDocument_SaveToStream. Expected _wxOutputStream_p."); return NULL; } @@ -3248,7 +3348,7 @@ static PyObject *_wrap_wxXmlDocument_GetVersion(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3285,7 +3385,7 @@ static PyObject *_wrap_wxXmlDocument_GetFileEncoding(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3443,7 +3543,7 @@ static PyObject *_wrap_wxXmlDocument_GetEncoding(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3454,6 +3554,51 @@ static PyObject *_wrap_wxXmlDocument_GetEncoding(PyObject *self, PyObject *args, return _resultobj; } +static void wxXmlDocument_SetEncoding(wxXmlDocument *self,const wxString & enc) { + #if wxUSE_UNICODE + // do nothing + #else + self->SetEncoding(enc); + #endif + } +static PyObject *_wrap_wxXmlDocument_SetEncoding(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxXmlDocument * _arg0; + wxString * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","enc", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxXmlDocument_SetEncoding",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxXmlDocument_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxXmlDocument_SetEncoding. Expected _wxXmlDocument_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxXmlDocument_SetEncoding(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + static void *SwigwxPyXmlResourceHandlerTowxObject(void *ptr) { wxPyXmlResourceHandler *src; wxObject *dest; @@ -3714,7 +3859,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetClass(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3920,7 +4065,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetNodeContent(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4049,7 +4194,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetParamValue(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4209,7 +4354,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetText(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4278,7 +4423,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetName(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4569,8 +4714,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetBitmap(PyObject *self, PyObject * return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxXmlResourceHandler_GetBitmap. Expected _wxArtClient_p."); return NULL; } @@ -4629,8 +4773,7 @@ static PyObject *_wrap_wxXmlResourceHandler_GetIcon(PyObject *self, PyObject *ar return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxArtClient_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxXmlResourceHandler_GetIcon. Expected _wxArtClient_p."); return NULL; } @@ -4942,6 +5085,7 @@ static PyMethodDef xrccMethods[] = { { "wxXmlResourceHandler_CreateResource", (PyCFunction) _wrap_wxXmlResourceHandler_CreateResource, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResourceHandler__setCallbackInfo", (PyCFunction) _wrap_wxXmlResourceHandler__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxXmlResourceHandler", (PyCFunction) _wrap_new_wxXmlResourceHandler, METH_VARARGS | METH_KEYWORDS }, + { "wxXmlDocument_SetEncoding", (PyCFunction) _wrap_wxXmlDocument_SetEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxXmlDocument_GetEncoding", (PyCFunction) _wrap_wxXmlDocument_GetEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxXmlDocument_SetFileEncoding", (PyCFunction) _wrap_wxXmlDocument_SetFileEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxXmlDocument_SetVersion", (PyCFunction) _wrap_wxXmlDocument_SetVersion, METH_VARARGS | METH_KEYWORDS }, @@ -4990,6 +5134,9 @@ static PyMethodDef xrccMethods[] = { { "wxXmlProperty_GetValue", (PyCFunction) _wrap_wxXmlProperty_GetValue, METH_VARARGS | METH_KEYWORDS }, { "wxXmlProperty_GetName", (PyCFunction) _wrap_wxXmlProperty_GetName, METH_VARARGS | METH_KEYWORDS }, { "new_wxXmlProperty", (PyCFunction) _wrap_new_wxXmlProperty, METH_VARARGS | METH_KEYWORDS }, + { "wxXmlSubclassFactory__setCallbackInfo", (PyCFunction) _wrap_wxXmlSubclassFactory__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, + { "new_wxXmlSubclassFactory", (PyCFunction) _wrap_new_wxXmlSubclassFactory, METH_VARARGS | METH_KEYWORDS }, + { "wxXmlResource_SetFlags", (PyCFunction) _wrap_wxXmlResource_SetFlags, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_GetFlags", (PyCFunction) _wrap_wxXmlResource_GetFlags, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_Set", (PyCFunction) _wrap_wxXmlResource_Set, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_Get", (PyCFunction) _wrap_wxXmlResource_Get, METH_VARARGS | METH_KEYWORDS }, @@ -5011,6 +5158,7 @@ static PyMethodDef xrccMethods[] = { { "wxXmlResource_LoadMenuBarOnFrame", (PyCFunction) _wrap_wxXmlResource_LoadMenuBarOnFrame, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_LoadMenuBar", (PyCFunction) _wrap_wxXmlResource_LoadMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_LoadMenu", (PyCFunction) _wrap_wxXmlResource_LoadMenu, METH_VARARGS | METH_KEYWORDS }, + { "wxXmlResource_AddSubclassFactory", (PyCFunction) _wrap_wxXmlResource_AddSubclassFactory, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_ClearHandlers", (PyCFunction) _wrap_wxXmlResource_ClearHandlers, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_InsertHandler", (PyCFunction) _wrap_wxXmlResource_InsertHandler, METH_VARARGS | METH_KEYWORDS }, { "wxXmlResource_AddHandler", (PyCFunction) _wrap_wxXmlResource_AddHandler, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/contrib/xrc/xrc.i b/wxPython/contrib/xrc/xrc.i index 037e1eb214..8676043657 100644 --- a/wxPython/contrib/xrc/xrc.i +++ b/wxPython/contrib/xrc/xrc.i @@ -48,6 +48,9 @@ static const wxString wxPyIconString(wxT("icon")); static const wxString wxPyFontString(wxT("font")); %} + +class wxPyXmlSubclassFactory; + //--------------------------------------------------------------------------- enum wxXmlResourceFlags @@ -128,6 +131,12 @@ public: // Removes all handlers void ClearHandlers(); + // Registers subclasses factory for use in XRC. This function is not meant + // for public use, please see the comment above wxXmlSubclassFactory + // definition. + static void AddSubclassFactory(wxPyXmlSubclassFactory *factory); + + // Loads menu from resource. Returns NULL on failure. wxMenu *LoadMenu(const wxString& name); @@ -199,6 +208,9 @@ public: // Returns flags, which may be a bitlist of wxXRC_USE_LOCALE and wxXRC_NO_SUBCLASSING. int GetFlags(); + // Set flags after construction. + void SetFlags(int flags) { m_flags = flags; } + }; //---------------------------------------------------------------------- @@ -215,6 +227,31 @@ XMLCTRL = XRCCTRL " //---------------------------------------------------------------------- +// wxXmlSubclassFactory + + +%{ +class wxPyXmlSubclassFactory : public wxXmlSubclassFactory +{ +public: + wxPyXmlSubclassFactory() {} + DEC_PYCALLBACK_OBJECT_STRING_pure(Create); + PYPRIVATE; +}; + +IMP_PYCALLBACK_OBJECT_STRING_pure(wxPyXmlSubclassFactory, wxXmlSubclassFactory, Create); +%} + + +%name(wxXmlSubclassFactory)class wxPyXmlSubclassFactory { +public: + wxPyXmlSubclassFactory(); + + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxXmlSubclassFactory)" +}; + + //---------------------------------------------------------------------- // In order to provide wrappers for wxXmlResourceHandler we need to also // provide the classes for representing and parsing XML. @@ -374,6 +411,13 @@ public: return self->GetEncoding(); #endif } + void SetEncoding(const wxString& enc) { + #if wxUSE_UNICODE + // do nothing + #else + self->SetEncoding(enc); + #endif + } } }; @@ -396,34 +440,6 @@ public: DEC_PYCALLBACK_OBJECT__pure(DoCreateResource); DEC_PYCALLBACK_BOOL_NODE_pure(CanHandle); -// wxObject* DoCreateResource() { -// wxObject* rv = NULL; -// wxPyBeginBlockThreads(); -// if (wxPyCBH_findCallback(m_myInst, "DoCreateResource")) { -// PyObject* ro; -// ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); -// if (ro) { -// SWIG_GetPtrObj(ro, (void **)&rv, "_wxObject_p"); -// Py_DECREF(ro); -// } -// } -// wxPyEndBlockThreads(); -// return rv; -// } - -// bool CanHandle(wxXmlNode* a) { -// bool rv=FALSE; -// wxPyBeginBlockThreads(); -// if (wxPyCBH_findCallback(m_myInst, "CanHandle")) { -// PyObject* obj = wxPyConstructObject((void*)a, "wxXmlNode", 0); -// rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); -// Py_DECREF(obj); -// } -// wxPyEndBlockThreads(); -// return rv; -// } - - // accessors for protected members diff --git a/wxPython/contrib/xrc/xrc.py b/wxPython/contrib/xrc/xrc.py index 9a10422a35..79f0b6a62c 100644 --- a/wxPython/contrib/xrc/xrc.py +++ b/wxPython/contrib/xrc/xrc.py @@ -56,9 +56,12 @@ class wxXmlResourcePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,xrcc=xrcc): - if self.thisown == 1 : - xrcc.delete_wxXmlResource(self) + def __del__(self, delfunc=xrcc.delete_wxXmlResource): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Load(self, *_args, **_kwargs): val = apply(xrcc.wxXmlResource_Load,(self,) + _args, _kwargs) return val @@ -135,6 +138,9 @@ class wxXmlResourcePtr(wxObjectPtr): def GetFlags(self, *_args, **_kwargs): val = apply(xrcc.wxXmlResource_GetFlags,(self,) + _args, _kwargs) return val + def SetFlags(self, *_args, **_kwargs): + val = apply(xrcc.wxXmlResource_SetFlags,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxXmlResource instance at %s>" % (self.this,) class wxXmlResource(wxXmlResourcePtr): @@ -152,6 +158,24 @@ def wxEmptyXmlResource(*_args,**_kwargs): return val +class wxXmlSubclassFactoryPtr : + def __init__(self,this): + self.this = this + self.thisown = 0 + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(xrcc.wxXmlSubclassFactory__setCallbackInfo,(self,) + _args, _kwargs) + return val + def __repr__(self): + return "<C wxXmlSubclassFactory instance at %s>" % (self.this,) +class wxXmlSubclassFactory(wxXmlSubclassFactoryPtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(xrcc.new_wxXmlSubclassFactory,_args,_kwargs) + self.thisown = 1 + self._setCallbackInfo(self, wxXmlSubclassFactory) + + + + class wxXmlPropertyPtr : def __init__(self,this): self.this = this @@ -189,9 +213,12 @@ class wxXmlNodePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,xrcc=xrcc): - if self.thisown == 1 : - xrcc.delete_wxXmlNode(self) + def __del__(self, delfunc=xrcc.delete_wxXmlNode): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddChild(self, *_args, **_kwargs): val = apply(xrcc.wxXmlNode_AddChild,(self,) + _args, _kwargs) return val @@ -281,9 +308,12 @@ class wxXmlDocumentPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,xrcc=xrcc): - if self.thisown == 1 : - xrcc.delete_wxXmlDocument(self) + def __del__(self, delfunc=xrcc.delete_wxXmlDocument): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Load(self, *_args, **_kwargs): val = apply(xrcc.wxXmlDocument_Load,(self,) + _args, _kwargs) return val @@ -321,6 +351,9 @@ class wxXmlDocumentPtr(wxObjectPtr): def GetEncoding(self, *_args, **_kwargs): val = apply(xrcc.wxXmlDocument_GetEncoding,(self,) + _args, _kwargs) return val + def SetEncoding(self, *_args, **_kwargs): + val = apply(xrcc.wxXmlDocument_SetEncoding,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxXmlDocument instance at %s>" % (self.this,) class wxXmlDocument(wxXmlDocumentPtr): @@ -474,6 +507,8 @@ class wxXmlResourceHandler(wxXmlResourceHandlerPtr): #-------------- FUNCTION WRAPPERS ------------------ +wxXmlResource_AddSubclassFactory = xrcc.wxXmlResource_AddSubclassFactory + wxXmlResource_GetXRCID = xrcc.wxXmlResource_GetXRCID def wxXmlResource_Get(*_args, **_kwargs): @@ -515,3 +550,35 @@ wxXML_HTML_DOCUMENT_NODE = xrcc.wxXML_HTML_DOCUMENT_NODE wxTheXmlResource = wxXmlResource_Get() wx.wxXmlNodePtr = wxXmlNodePtr + + + + +#---------------------------------------------------------------------- +# Create a factory for handling the subclass property of the object tag. + + +def _my_import(name): + mod = __import__(name) + components = name.split('.') + for comp in components[1:]: + mod = getattr(mod, comp) + return mod + + +class wxXmlSubclassFactory_Python(wxXmlSubclassFactory): + def __init__(self): + wxXmlSubclassFactory.__init__(self) + + def Create(self, className): + assert className.find('.') != -1, "Module name must be specified!" + mname = className[:className.rfind('.')] + cname = className[className.rfind('.')+1:] + module = _my_import(mname) + klass = getattr(module, cname) + inst = klass() + return inst + + +wxXmlResource_AddSubclassFactory(wxXmlSubclassFactory_Python()) + diff --git a/wxPython/demo/.cvsignore b/wxPython/demo/.cvsignore index b4a758e078..3648f08aa4 100644 --- a/wxPython/demo/.cvsignore +++ b/wxPython/demo/.cvsignore @@ -1,6 +1,9 @@ *.pyc .DS_Store +._demo.py .emacs.desktop +.gdb_history +.setup.sh b.bat hangman_dict.txt mimetypes_wdr diff --git a/wxPython/demo/About.py b/wxPython/demo/About.py index 0605fa36fa..3e22739553 100644 --- a/wxPython/demo/About.py +++ b/wxPython/demo/About.py @@ -1,4 +1,4 @@ -import sys, string +import sys from wxPython.wx import * from wxPython.html import * @@ -46,12 +46,12 @@ demo item so you can learn how to use the classes yourself.</p> def __init__(self, parent): wxDialog.__init__(self, parent, -1, 'About the wxPython demo',) html = wxHtmlWindow(self, -1, size=(420, -1)) - py_version = string.split(sys.version)[0] + py_version = sys.version.split()[0] html.SetPage(self.text % (wx.__version__, py_version)) btn = html.FindWindowById(wxID_OK) btn.SetDefault() ir = html.GetInternalRepresentation() - html.SetSize( (ir.GetWidth()+5, ir.GetHeight()+5) ) + html.SetSize( (ir.GetWidth()+25, ir.GetHeight()+25) ) self.SetClientSize(html.GetSize()) self.CentreOnParent(wxBOTH) diff --git a/wxPython/demo/ActiveXWrapper_Acrobat.py b/wxPython/demo/ActiveXWrapper_Acrobat.py index 6eb972d109..694f875463 100644 --- a/wxPython/demo/ActiveXWrapper_Acrobat.py +++ b/wxPython/demo/ActiveXWrapper_Acrobat.py @@ -62,7 +62,7 @@ class TestPanel(wxPanel): sizer.Add(btnSizer, 0, wxEXPAND) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_WINDOW_DESTROY(self, self.OnDestroy) @@ -121,7 +121,7 @@ if __name__ == '__main__': app = wxPySimpleApp() frame = TestFrame() - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/ActiveXWrapper_IE.py b/wxPython/demo/ActiveXWrapper_IE.py index 2e23f54545..2e08c8e1a4 100644 --- a/wxPython/demo/ActiveXWrapper_IE.py +++ b/wxPython/demo/ActiveXWrapper_IE.py @@ -101,12 +101,18 @@ class TestPanel(wxWindow): self.location.Append(self.current) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_SIZE(self, self.OnSize) EVT_WINDOW_DESTROY(self, self.OnDestroy) + def ShutdownDemo(self): + # put the frame title back + if self.frame: + self.frame.SetTitle(self.titleBase) + + def OnDestroy(self, evt): if self.ie: self.ie.Cleanup() @@ -224,7 +230,7 @@ if __name__ == '__main__': app = wxPySimpleApp() frame = TestFrame() - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/ColourSelect.py b/wxPython/demo/ColourSelect.py index 0e044e0671..18cdf015a5 100644 --- a/wxPython/demo/ColourSelect.py +++ b/wxPython/demo/ColourSelect.py @@ -18,7 +18,6 @@ from wxPython.wx import * from wxPython.lib.colourselect import * -import string #---------------------------------------------------------------------------- @@ -26,7 +25,7 @@ class TestColourSelect(wxPanel): def __init__(self, parent, log): self.log = log wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) mainSizer = wxBoxSizer(wxVERTICAL) self.SetSizer(mainSizer) t = wxStaticText(self, -1, @@ -86,7 +85,7 @@ class TestColourSelect(wxPanel): colour = button.GetColour() # get the colour selection button result result.append(name + ": " + str(colour)) # create string list for easy viewing of results - out_result = string.joinfields(result, ', ') + out_result = ', '.join(result) self.log.WriteText("Colour Results: " + out_result + "\n") #--------------------------------------------------------------------------- diff --git a/wxPython/demo/ContextHelp.py b/wxPython/demo/ContextHelp.py index 2c2a567ab7..c115f22c44 100644 --- a/wxPython/demo/ContextHelp.py +++ b/wxPython/demo/ContextHelp.py @@ -53,7 +53,7 @@ class TestPanel(wxPanel): border = wxBoxSizer(wxVERTICAL) border.Add(sizer, 0, wxALL, 25) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(border) self.Layout() diff --git a/wxPython/demo/CustomDragAndDrop.py b/wxPython/demo/CustomDragAndDrop.py index 46c3ed5240..3fb49e5d02 100644 --- a/wxPython/demo/CustomDragAndDrop.py +++ b/wxPython/demo/CustomDragAndDrop.py @@ -124,7 +124,8 @@ class DoodleDropTarget(wxPyDropTarget): self.dv = window # specify the type of data we will accept - self.data = wxCustomDataObject(wxCustomDataFormat("DoodleLines")) + self.df = wxCustomDataFormat("DoodleLines") + self.data = wxCustomDataObject(self.df) self.SetDataObject(self.data) @@ -138,7 +139,7 @@ class DoodleDropTarget(wxPyDropTarget): def OnDrop(self, x, y): self.log.WriteText("OnDrop: %d %d\n" % (x, y)) - return true + return True def OnDragOver(self, x, y, d): #self.log.WriteText("OnDragOver: %d, %d, %d\n" % (x, y, d)) @@ -153,7 +154,7 @@ class DoodleDropTarget(wxPyDropTarget): - # Called when OnDrop returns true. We need to get the data and + # Called when OnDrop returns True. We need to get the data and # do something with it. def OnData(self, x, y, d): self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d)) @@ -205,7 +206,7 @@ class CustomDnDPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) - self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false)) + self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False)) # Make the controls text1 = wxStaticText(self, -1, @@ -217,9 +218,9 @@ class CustomDnDPanel(wxPanel): ) rb1 = wxRadioButton(self, -1, "Draw", style=wxRB_GROUP) - rb1.SetValue(true) + rb1.SetValue(True) rb2 = wxRadioButton(self, -1, "Drag") - rb2.SetValue(false) + rb2.SetValue(False) text2 = wxStaticText(self, -1, "The lower window is accepting a\n" @@ -249,7 +250,7 @@ class CustomDnDPanel(wxPanel): sizer.Add(dndsizer, 1, wxEXPAND) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) # Events @@ -269,12 +270,12 @@ class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) sizer = wxBoxSizer(wxVERTICAL) msg = "Custom Drag-And-Drop" text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE) - text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false)) + text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, False)) text.SetLabel(msg) w,h = text.GetTextExtent(msg) text.SetSize(wxSize(w,h+1)) @@ -303,8 +304,9 @@ if __name__ == '__main__': class TestApp(wxApp): def OnInit(self): + wxInitAllImageHandlers() self.MakeFrame() - return true + return True def MakeFrame(self, event=None): frame = wxFrame(None, -1, "Custom Drag and Drop", size=(550,400)) @@ -315,7 +317,7 @@ if __name__ == '__main__': frame.SetMenuBar(mb) EVT_MENU(frame, 6543, self.MakeFrame) panel = TestPanel(frame, DummyLog()) - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) @@ -326,21 +328,20 @@ if __name__ == '__main__': #---------------------------------------------------------------------- +overview = """<html><body> +This demo shows Drag and Drop using a custom data type and a custom +data object. A type called "DoodleLines" is created and a Python +Pickle of a list is actually transfered in the drag and drop +opperation. +A second data object is also created containing a bitmap of the image +and is made available to any drop target that accepts bitmaps, such as +MS Word. - - - - - - - - -overview = """\ -This demo shows Drag and Drop using a custom data type and a custom data object. A type called "DoodleLines" is created and a Python Pickle of a list is actually transfered in the drag and drop opperation. - -A second data object is also created containing a bitmap of the image and is made available to any drop target that accepts bitmaps, such as MS Word. - -The two data objects are combined in a wxDataObjectComposite and the rest is handled by the framework. +The two data objects are combined in a wxDataObjectComposite and the +rest is handled by the framework. +</body></html> """ + + diff --git a/wxPython/demo/DialogUnits.py b/wxPython/demo/DialogUnits.py index eca857897a..78974eb676 100644 --- a/wxPython/demo/DialogUnits.py +++ b/wxPython/demo/DialogUnits.py @@ -88,13 +88,13 @@ if __name__ == "__main__": # Create an instance of our customized Frame class frame = MyFrame(None, -1, "This is a test") - frame.Show(true) + frame.Show(True) # Tell wxWindows that this is our main window self.SetTopWindow(frame) # Return a success flag - return true + return True app = MyApp(0) # Create an instance of the application class @@ -107,7 +107,7 @@ if __name__ == "__main__": def runTest(frame, nb, log): win = MyFrame(frame, -1, "This is a test") frame.otherWin = win - win.Show(true) + win.Show(True) overview = """\ diff --git a/wxPython/demo/DragAndDrop.py b/wxPython/demo/DragAndDrop.py index da17b09299..e99abc3660 100644 --- a/wxPython/demo/DragAndDrop.py +++ b/wxPython/demo/DragAndDrop.py @@ -8,7 +8,7 @@ class ClipTextPanel(wxPanel): wxPanel.__init__(self, parent, -1) self.log = log - #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false)) + #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False)) sizer = wxBoxSizer(wxVERTICAL) sizer.Add(wxStaticText(self, -1, @@ -28,7 +28,7 @@ class ClipTextPanel(wxPanel): EVT_BUTTON(self, 6051, self.OnPaste) EVT_BUTTON(self, 6052, self.OnCopyBitmap) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) @@ -86,7 +86,7 @@ class OtherDropTarget(wxPyDropTarget): def OnDrop(self, x, y): self.log.WriteText("OnDrop: %d %d\n" % (x, y)) - return true + return True def OnData(self, x, y, d): self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d)) @@ -128,7 +128,7 @@ class FileDropPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) - #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false)) + #self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False)) sizer = wxBoxSizer(wxVERTICAL) sizer.Add(wxStaticText(self, -1, " \nDrag some files here:"), @@ -148,7 +148,7 @@ class FileDropPanel(wxPanel): self.text2.SetDropTarget(dt) sizer.Add(self.text2, 1, wxEXPAND) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) @@ -166,12 +166,12 @@ class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) outsideSizer = wxBoxSizer(wxVERTICAL) msg = "Clipboard / Drag-And-Drop" text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE) - text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false)) + text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, False)) text.SetLabel(msg) w,h = text.GetTextExtent(msg) text.SetSize(wxSize(w,h+1)) diff --git a/wxPython/demo/DrawXXXList.py b/wxPython/demo/DrawXXXList.py index 1783ef76e9..776201aa1a 100644 --- a/wxPython/demo/DrawXXXList.py +++ b/wxPython/demo/DrawXXXList.py @@ -46,6 +46,43 @@ def makeRandomLines(num, w, h): return pnts +def makeRandomRectangles(num, W, H): + rects = [] + for i in range(num): + w = whrandom.randint(10, W/2) + h = whrandom.randint(10, H/2) + x = whrandom.randint(0, W - w) + y = whrandom.randint(0, H - h) + rects.append( (x, y, w, h) ) + return rects + + +def makeRandomText(num): + Np = 8 # number of charcters in text + text = [] + for i in range(num): + word = [] + for i in range(Np): + c = chr( whrandom.randint(48, 122) ) + word.append( c ) + text.append( "".join(word) ) + return text + + +def makeRandomPolygons(num, W, H): + Np = 8 # number of points per polygon + polys = [] + for i in range(num): + poly = [] + for i in range(Np): + x = whrandom.randint(0, W) + y = whrandom.randint(0, H) + poly.append( (x,y) ) + polys.append( poly ) + return polys + + + def makeRandomPens(num, cache): pens = [] for i in range(num): @@ -57,62 +94,278 @@ def makeRandomPens(num, cache): return pens -class TestPanel(wxPanel): - def __init__(self, parent, size, log): - wxPanel.__init__(self, parent, -1, size=size) +def makeRandomBrushes(num, cache): + brushes = [] + for i in range(num): + c = whrandom.choice(colours) + if not cache.has_key(c): + cache[c] = wxBrush(c) + brushes.append( cache[c] ) + return brushes + + +def makeRandomColors(num): + colors = [] + for i in range(num): + c = whrandom.choice(colours) + colors.append(wxNamedColor(c)) + return colors + + + +pencache = {} +brushcache = {} +points = None +lines = None +rectangles = None +polygons = None +text = None +pens = None +brushes = None +colors1 = None +colors2 = None + + +def Init(w, h, n): + global pencache + global brushcache + global points + global lines + global rectangles + global polygons + global text + global pens + global brushes + global colors1 + global colors2 + + # make some lists of random shapes + points = makeRandomPoints(n, w, h) + try: + import Numeric + Apoints = Numeric.array(points) + except: + pass + lines = makeRandomLines(n, w, h) + rectangles = makeRandomRectangles(n, w, h) + polygons = makeRandomPolygons(n, w, h) + text = makeRandomText(n) + + # make some random pens and brushes + pens = makeRandomPens(n, pencache) + brushes = makeRandomBrushes(n, brushcache) + # make some random color lists + colors1 = makeRandomColors(n) + colors2 = makeRandomColors(n) + + + +def TestPoints(dc,log): + dc.BeginDrawing() + start = time.time() + dc.SetPen(wxPen("BLACK", 4)) + + dc.DrawPointList(points) + dc.DrawPointList(points, wxPen("RED", 2)) + dc.DrawPointList(points, pens) + + dc.EndDrawing() + log.write("DrawTime: %s seconds with DrawPointList\n" % (time.time() - start)) + + +def TestArrayPoints(dc,log): + try: + import Numeric + + dc.BeginDrawing() + start = time.time() + dc.SetPen(wxPen("BLACK", 1)) + for i in range(1): + dc.DrawPointList(Apoints) + #dc.DrawPointList(Apoints, wxPen("RED", 2)) + #dc.DrawPointList(Apoints, pens) + dc.EndDrawing() + log.write("DrawTime: %s seconds with DrawPointList an Numpy Array\n" % (time.time() - start)) + except ImportError: + log.write("Couldn't import Numeric") + pass + + +def TestLines(dc,log): + dc.BeginDrawing() + start = time.time() + + dc.SetPen(wxPen("BLACK", 2)) + dc.DrawLineList(lines) + dc.DrawLineList(lines, wxPen("RED", 2)) + dc.DrawLineList(lines, pens) + + dc.EndDrawing() + log.write("DrawTime: %s seconds with DrawLineList\n" % (time.time() - start)) + + +def TestRectangles(dc,log): + dc.BeginDrawing() + start = time.time() + + dc.SetPen( wxPen("BLACK",1) ) + dc.SetBrush( wxBrush("RED") ) + + dc.DrawRectangleList(rectangles) + dc.DrawRectangleList(rectangles,pens) + dc.DrawRectangleList(rectangles,pens[0],brushes) + dc.DrawRectangleList(rectangles,pens,brushes[0]) + dc.DrawRectangleList(rectangles,None,brushes) +## for i in range(10): +## #dc.DrawRectangleList(rectangles,pens,brushes) +## dc.DrawRectangleList(rectangles) + + dc.EndDrawing() + log.write("DrawTime: %s seconds with DrawRectanglesList\n" % (time.time() - start)) + + +def TestEllipses(dc,log): + dc.BeginDrawing() + start = time.time() + + dc.SetPen( wxPen("BLACK",1) ) + dc.SetBrush( wxBrush("RED") ) + + dc.DrawEllipseList(rectangles) + dc.DrawEllipseList(rectangles,pens) + dc.DrawEllipseList(rectangles,pens[0],brushes) + dc.DrawEllipseList(rectangles,pens,brushes[0]) + dc.DrawEllipseList(rectangles,None,brushes) + dc.DrawEllipseList(rectangles,pens,brushes) + + dc.EndDrawing() + log.write("DrawTime: %s seconds with DrawEllipsesList\n" % (time.time() - start)) + + +def TestRectanglesArray(dc,log): + try: + import Numeric + Apoints = Numeric.array(rectangles) + + dc.BeginDrawing() + start = time.time() + dc.SetPen(wxPen("BLACK", 1)) + dc.DrawRectangleList(rectangles) + dc.DrawRectangleList(rectangles,pens) + dc.DrawRectangleList(rectangles,pens[0],brushes) + dc.DrawRectangleList(rectangles,pens,brushes[0]) + dc.DrawRectangleList(rectangles,None,brushes) +## for i in range(10): +## #dc.DrawRectangleList(rectangles,pens,brushes) +## dc.DrawRectangleList(rectangles) + + dc.EndDrawing() + log.write("DrawTime: %s seconds with DrawRectangleList and Numpy Array\n" % (time.time() - start)) + except ImportError: + log.write("Couldn't import Numeric") + pass + + +def TestRectanglesLoop(dc,log): + dc.BeginDrawing() + + start = time.time() + dc.DrawRectangleList(rectangles,pens,brushes) + log.write("DrawTime: %s seconds with DrawRectanglesList\n" % (time.time() - start)) + + start = time.time() + for i in range(len(rectangles)): + dc.SetPen( pens[i] ) + dc.SetBrush( brushes[i] ) + dc.DrawRectangle(rectangles[i][0],rectangles[i][1],rectangles[i][2],rectangles[i][3]) + dc.EndDrawing() + log.write("DrawTime: %s seconds with Python loop\n" % (time.time() - start)) + + +def TestPolygons(dc,log): + dc.BeginDrawing() + + start = time.time() + dc.SetPen(wxPen("BLACK", 1)) + dc.DrawPolygonList(polygons) + dc.DrawPolygonList(polygons,pens) + dc.DrawPolygonList(polygons,pens[0],brushes) + dc.DrawPolygonList(polygons,pens,brushes[0]) + dc.DrawPolygonList(polygons,None,brushes) + log.write("DrawTime: %s seconds with DrawPolygonList\n" % (time.time() - start)) + + dc.EndDrawing() + + +def TestText(dc,log): + dc.BeginDrawing() + + start = time.time() + + # NOTE: you need to set BackgroundMode for the background colors to be used. + dc.SetBackgroundMode(wxSOLID) + foreground = colors1 + background = colors2 + dc.DrawTextList(text, points, foreground, background) + + log.write("DrawTime: %s seconds with DrawTextList\n" % (time.time() - start)) + + dc.EndDrawing() + + + +class TestNB(wxNotebook): + def __init__(self, parent, id, log): + style = wxNB_BOTTOM + if wxPlatform == "__WXMAC__": + style = 0 + wxNotebook.__init__(self, parent, id, style=style) self.log = log + + win = DrawPanel(self, TestEllipses, log) + self.AddPage(win, 'Ellipses') + + win = DrawPanel(self, TestText, log) + self.AddPage(win, 'Text') + + win = DrawPanel(self, TestPolygons, log) + self.AddPage(win, 'Polygons') + + win = DrawPanel(self, TestPoints, log) + self.AddPage(win, 'Points') + + win = DrawPanel(self, TestLines, log) + self.AddPage(win, 'Lines') + + win = DrawPanel(self, TestRectangles, log) + self.AddPage(win, 'Rectangles') + + +class DrawPanel(wxPanel): + def __init__(self, parent, drawFun, log): + wxPanel.__init__(self, parent, -1) self.SetBackgroundColour(wxWHITE) - w = size.width - h = size.height - pencache = {} - - # make some lists of random points - self.pnts1 = makeRandomPoints(1000, w, h) - self.pnts2 = makeRandomPoints(1000, w, h) - self.pnts3 = makeRandomPoints(1000, w, h) - self.pens1 = makeRandomPens(1000, pencache) - - # and now some lines - self.lines1 = makeRandomLines(500, w, h) - self.lines2 = makeRandomLines(500, w, h) - self.lines3 = makeRandomLines(500, w, h) - self.pens2 = makeRandomPens(500, pencache) - + self.log = log + self.drawFun = drawFun EVT_PAINT(self, self.OnPaint) def OnPaint(self, evt): dc = wxPaintDC(self) - dc.BeginDrawing() - start = time.time() + dc.Clear() + self.drawFun(dc,self.log) - dc.SetPen(wxPen("BLACK", 1)) - dc.DrawPointList(self.pnts1) - dc.DrawPointList(self.pnts2, wxPen("RED", 2)) - dc.DrawPointList(self.pnts3, self.pens1) - - dc.SetPen(wxPen("BLACK", 1)) - dc.DrawLineList(self.lines1) - dc.DrawLineList(self.lines2, wxPen("RED", 2)) - dc.DrawLineList(self.lines3, self.pens2) - - dc.EndDrawing() - self.log.write("DrawTime: %s seconds\n" % (time.time() - start)) - self.log.write("GetBoundingBox: %s\n" % (dc.GetBoundingBox(), )) #---------------------------------------------------------------------- def runTest(frame, nb, log): w = nb.GetClientSize().width h = nb.GetClientSize().height - if w < 300: w = 300 - if h < 300: h = 300 - win = wxPanel(nb, -1) - tp = TestPanel(win, wxSize(w, h), log) - def OnPanelSize(evt, tp=tp): - tp.SetSize(evt.GetSize()) - EVT_SIZE(win, OnPanelSize) + if w < 600: w = 600 + if h < 400: h = 400 + Init(w, h, 200) + win = TestNB(nb, -1, log) return win #---------------------------------------------------------------------- @@ -136,4 +389,30 @@ drawing routines. Currently they are: (x1,y1, x2,y2) andd pens is either None, a single pen or a list of pens. +<pre> + DrawRectangleList(rectangles, pens=None, brushes=None) +</pre> + + +<pre> + DrawEllipseList(ellipses, pens=None, brushes=None) +</pre> + + +<pre> + DrawPolygonList(polygons, pens=None, brushes=None) +</pre> + + +<pre> + DrawTextList(textList, coords, foregrounds = None, backgrounds = None) +</pre> + """ + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/ErrorDialogs.py b/wxPython/demo/ErrorDialogs.py index 18076f8bc1..db24853b82 100644 --- a/wxPython/demo/ErrorDialogs.py +++ b/wxPython/demo/ErrorDialogs.py @@ -14,14 +14,14 @@ ID_BUTTON_wxPyNonFatalErrorDialog = 10004 ID_BUTTON_wxPyFatalErrorDialogWithTraceback = 10005 ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback = 10006 -def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ): +def ErrorDialogsDemoPanelFunc( parent, call_fit = True, set_sizer = True ): item0 = wxBoxSizer( wxVERTICAL ) - + item1 = wxStaticText( parent, ID_TEXT, "Please select one of the buttons below for an example using explicit errors...", wxDefaultPosition, wxDefaultSize, 0 ) item0.AddWindow( item1, 0, wxALIGN_CENTRE|wxALL, 5 ) item2 = wxFlexGridSizer( 0, 2, 0, 0 ) - + item3 = wxButton( parent, ID_BUTTON_wxPyNonFatalError, "wxPyNonFatalError", wxDefaultPosition, wxDefaultSize, 0 ) item2.AddWindow( item3, 0, wxALIGN_CENTRE|wxALL, 5 ) @@ -34,7 +34,7 @@ def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ): item0.AddWindow( item5, 0, wxALIGN_CENTRE|wxALL, 5 ) item6 = wxFlexGridSizer( 0, 2, 0, 0 ) - + item7 = wxButton( parent, ID_BUTTON_wxPyFatalErrorDialog, "wxPyFatalErrorDialog", wxDefaultPosition, wxDefaultSize, 0 ) item6.AddWindow( item7, 0, wxALIGN_CENTRE|wxALL, 5 ) @@ -51,16 +51,16 @@ def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ): item0.AddSizer( item6, 0, wxALIGN_CENTRE|wxALL, 5 ) item11 = wxFlexGridSizer( 0, 2, 0, 0 ) - + item0.AddSizer( item11, 0, wxALIGN_CENTRE|wxALL, 5 ) - if set_sizer == true: - parent.SetAutoLayout( true ) + if set_sizer == True: + parent.SetAutoLayout( True ) parent.SetSizer( item0 ) - if call_fit == true: + if call_fit == True: item0.Fit( parent ) item0.SetSizeHints( parent ) - + return item0 # Menu bar functions @@ -105,8 +105,8 @@ class MyPanel(wxPanel): EVT_BUTTON(self, ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback, self.DoDialog) - EVT_CLOSE(self,self.OnClose) - + + IndexFromID = { ID_BUTTON_wxPyFatalErrorDialog: 3, ID_BUTTON_wxPyFatalErrorDialogWithTraceback: 2, @@ -138,10 +138,11 @@ class MyPanel(wxPanel): print "%s.DoDialog(): testing %s..." % (self,sys.stderr) this_will_generate_a_NameError_exception - def OnClose(self,evt): + def ShutdownDemo(self): for d in self.dialogs: - d.Destroy () - self.Destroy () + d.Destroy() + + class MyFrame(wxFrame): def __init__(self,parent=None): @@ -158,9 +159,9 @@ class MyFrame(wxFrame): class MyApp(wxApp): def OnInit(self): frame = MyFrame() - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True def runTest(pframe, nb, log): panel = MyPanel(nb) diff --git a/wxPython/demo/EventManager.py b/wxPython/demo/EventManager.py new file mode 100644 index 0000000000..2966b930ff --- /dev/null +++ b/wxPython/demo/EventManager.py @@ -0,0 +1,287 @@ +#--------------------------------------------------------------------------- +# Name: EventManager.py +# Purpose: A module to demonstrate wxPython.lib.evtmgr.EventManager. +# +# Author: Robb Shecter (robb@acm.org) +# +# Created: 16-December-2002 +# Copyright: (c) 2002 by Robb Shecter (robb@acm.org) +# Licence: wxWindows license +#--------------------------------------------------------------------------- + +from wxPython.wx import * +from wxPython.lib.evtmgr import eventManager + +#---------------------------------------------------------------------- + +class TestPanel(wxPanel): + def __init__(self, parent, log): + wxPanel.__init__(self, parent, -1) + self.log = log + + fsize = self.GetFont().GetPointSize() + f1 = wxFont(fsize+0, wxSWISS, wxNORMAL, wxNORMAL) + f2 = wxFont(fsize+2, wxSWISS, wxNORMAL, wxBOLD) + f3 = wxFont(fsize+6, wxSWISS, wxNORMAL, wxBOLD) + + title1 = wxStaticText(self, -1, 'EventManager') + title1.SetFont(f3) + txt = """\ + This demo shows (1) basic uses and features of the EventManager, as well + as (2) how it helps with a real-world task: creating independent, object- + oriented components.""" + message0 = wxStaticText(self, -1, txt) + message0.SetFont(f1) + + title2 = wxStaticText(self, -1, 'Event Listeners') + title2.SetFont(f2) + + txt = """\ + These objects listen to motion events from the target window, using the ability + to register one event with multiple listeners. They also register for mouse events + on themselves to implement toggle-button functionality.""" + message1 = wxStaticText(self, -1, txt) + message1.SetFont(f1) + + title3 = wxStaticText(self, -1, 'Target Window') + title3.SetFont(f2) + + txt = """\ + A passive window that's used as an event generator. Move the mouse over it to + send events to the listeners above.""" + message2 = wxStaticText(self, -1, txt) + message2.SetFont(f1) + + targetPanel = Tile(self, log, bgColor=wxColor(80,10,10), active=0) + buttonPanel = wxPanel(self ,-1) + sizer = wxBoxSizer(wxHORIZONTAL) + target = targetPanel.tile + + sizer.Add(0,0,1) + for factor in [0.2, 0.3, 0.4, 0.5, 0.6, 0.7]: + sizer.Add(Tile(buttonPanel, log, factor-0.05, target), 0, wxALIGN_CENTER) + sizer.Add(0,0,1) + sizer.Add(Tile(buttonPanel, log, factor, target), 0, wxALIGN_CENTER) + sizer.Add(0,0,1) + + buttonPanel.SetAutoLayout(1) + buttonPanel.SetSizer(sizer) + sizer.Fit(buttonPanel) + + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(title1, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, 6) + sizer.Add(message0, 0, wxALIGN_CENTER | wxALL, 6) + sizer.Add(title2, 0, wxALIGN_CENTER | wxLEFT | wxTOP | wxRIGHT, 16) + sizer.Add(message1, 0, wxALIGN_CENTER | wxALL, 6) + sizer.Add(buttonPanel, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 16) + sizer.Add(title3, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, 16) + sizer.Add(message2, 0, wxALIGN_CENTER | wxALL, 6) + sizer.Add(targetPanel, 2, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 16) + self.SetAutoLayout(1) + self.SetSizer(sizer) + + + +class Tile(wxPanel): + """ + This outer class is responsible for changing + its border color in response to certain mouse + events over its contained 'InnerTile'. + """ + normal = wxColor(150,150,150) + active = wxColor(250,245,245) + hover = wxColor(210,220,210) + + def __init__(self, parent, log, factor=1, thingToWatch=None, bgColor=None, active=1, size=(38,38), borderWidth=3): + wxPanel.__init__(self, parent, -1, size=size, style=wxCLIP_CHILDREN) + self.tile = InnerTile(self, log, factor, thingToWatch, bgColor) + self.log = log + sizer = wxBoxSizer(wxHORIZONTAL) + sizer.Add(self.tile, 1, wxEXPAND | wxALL, borderWidth) + self.SetAutoLayout(1) + self.SetSizer(sizer) + self.Layout() + self.SetBackgroundColour(Tile.normal) + if active: + # Register myself for mouse events over self.tile in order to + # create typical button/hyperlink visual effects. + eventManager.Register(self.setHover, EVT_ENTER_WINDOW, self.tile) + eventManager.Register(self.setNormal, EVT_LEAVE_WINDOW, self.tile) + eventManager.Register(self.setActive, EVT_LEFT_DOWN, self.tile) + eventManager.Register(self.setHover, EVT_LEFT_UP, self.tile) + + + def setHover(self, event): + self.SetBackgroundColour(Tile.hover) + self.Refresh() + + + def setActive(self, event): + self.SetBackgroundColour(Tile.active) + self.Refresh() + + + def setNormal(self, event): + self.SetBackgroundColour(Tile.normal) + self.Refresh() + + + +class InnerTile(wxPanel): + IDLE_COLOR = wxColor( 80, 10, 10) + START_COLOR = wxColor(200, 70, 50) + FINAL_COLOR = wxColor( 20, 80,240) + OFF_COLOR = wxColor(185,190,185) + # Some pre-computation. + DELTAS = map(lambda a,b: b-a, START_COLOR.Get(), FINAL_COLOR.Get()) + START_COLOR_TUPLE = START_COLOR.Get() + + """ + This inner panel changes its color in reaction to mouse + events over the 'thingToWatch'. + """ + def __init__(self, parent, log, factor, thingToWatch=None, bgColor=None): + wxPanel.__init__(self, parent, -1) + self.log=log + if bgColor: + self.SetBackgroundColour(bgColor) + if thingToWatch: + self.factor = factor + self.thingToWatch = thingToWatch + self.state = 0 + self.toggleOnOff() + # Watch for the mouse click to enable/disable myself. + eventManager.Register(self.toggleOnOff, EVT_LEFT_UP, self) + + + def toggleOnOff(self, event=None): + # Implement being on or off by registering and + # de-registering self.makeColor() from the event manager. + if self.state: + eventManager.DeregisterListener(self.makeColor) + else: + eventManager.Register(self.makeColor, EVT_MOTION, self.thingToWatch) + self.state = 1 - self.state + self.resetColor() + + + def resetColor(self, event=None): + if self.state: + self.setColor(InnerTile.IDLE_COLOR) + else: + self.setColor(InnerTile.OFF_COLOR) + + + def setColor(self, color): + self.SetBackgroundColour(color) + self.Refresh() + + + def makeColor(self, mouseEvent): + self.makeColorFromTuple(mouseEvent.GetPositionTuple()) + + + def makeColorFromTuple(self, (x, y)): + MAX = 180.0 + scaled = min((x + y) * self.factor, MAX) # In range [0..MAX] + percent = scaled / MAX + r = InnerTile.START_COLOR_TUPLE[0] + (InnerTile.DELTAS[0] * percent) + g = InnerTile.START_COLOR_TUPLE[1] + (InnerTile.DELTAS[1] * percent) + b = InnerTile.START_COLOR_TUPLE[2] + (InnerTile.DELTAS[2] * percent) + self.setColor(wxColor(r,g,b)) + + + + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb, log) + return win + +#---------------------------------------------------------------------- + + + +overview = """<html><body> +<h2>EventManager</h2> + +<p> The goal of the EventManager is to make wxWindows events more +'Pythonic' (ie. object-oriented) and easier to work with, without +impacting performance. It offers these features: + +<p> +<ul> + + <li> Allows any number of listeners to register for a single + event. (In addition to the standard wxPython feature of a single + listener being able to respond to many events.) + + <li> Makes it easy to disconnect and reconnect listeners. This + has the effect of reducing the need for case-based branching in + application code. + + <li> Has an object-oriented API. Programmers register to get + events directly from the objects that generate them, instead of + using ID numbers. + +</ul> + +<h3>Usage</h3> + +<p>The EventManager class has three public methods. First get a +reference to it: + +<PRE> + from wxPython.lib.evtmgr import eventManager +</PRE> + +<p>...and then invoke any of the following methods. These methods are +'safe'; duplicate registrations or de-registrations will have no +effect. + +<p><b>Registering a listener:</b> + +<PRE> + eventManager.Register(listener, event, event-source) +</PRE> + + +<p><b>De-registering by window:</b> + +<PRE> + eventManager.DeregisterWindow(event-source) +</PRE> + + +<p><b>De-registering by listener:</b> + +<PRE> + eventManager.DeregisterListener(listener) +</PRE> + +<p><b>Simple Example:</b> + +<PRE> + from wxPython.lib.evtmgr import eventManager + + aButton = wxButton(somePanel, -1, 'Click me') + eventManager.Register(self.someMethod, EVT_BUTTON, aButton) +</PRE> + +<p> See the demo code as well as the documentation in the source of +<tt>wxPython.lib.evtmgr</tt> for more details. + + +<p> +by Robb Shecter (robb@acm.org) +</body></html> +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/FancyText.py b/wxPython/demo/FancyText.py index edda6ce178..f504ccc21c 100644 --- a/wxPython/demo/FancyText.py +++ b/wxPython/demo/FancyText.py @@ -36,6 +36,5 @@ def runTest(frame, nb, log): -import string -overview = string.replace(fancytext.__doc__, "<", "&lt;") +overview = fancytext.__doc__.replace("<", "&lt;") diff --git a/wxPython/demo/FontEnumerator.py b/wxPython/demo/FontEnumerator.py index 27a1466d94..67b5f6ef10 100644 --- a/wxPython/demo/FontEnumerator.py +++ b/wxPython/demo/FontEnumerator.py @@ -3,44 +3,40 @@ from wxPython.wx import * #---------------------------------------------------------------------- -## class MyFontEnumerator(wxFontEnumerator): -## def __init__(self, list): -## wxFontEnumerator.__init__(self) -## self.list = list - -## def OnFacename(self, face): -## self.list.append(face) -## return true - - class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) -## list = [] -## e = MyFontEnumerator(list) -## e.EnumerateFacenames() - e = wxFontEnumerator() e.EnumerateFacenames() list = e.GetFacenames() list.sort() - wxStaticText(self, -1, "Face names:", (15, 50), (65, 18)) - self.lb1 = wxListBox(self, -1, (80, 50), (200, 250), + s1 = wxStaticText(self, -1, "Face names:") + self.lb1 = wxListBox(self, -1, wxDefaultPosition, (200, 250), list, wxLB_SINGLE) EVT_LISTBOX(self, self.lb1.GetId(), self.OnSelect) self.txt = wxStaticText(self, -1, "Sample text...", (285, 50)) + row = wxBoxSizer(wxHORIZONTAL) + row.Add(s1, 0, wxALL, 5) + row.Add(self.lb1, 0, wxALL, 5) + row.Add(self.txt, 0, wxALL, 5) + + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(row, 0, wxALL, 30) + self.SetSizer(sizer) + self.Layout() + self.lb1.SetSelection(0) def OnSelect(self, evt): face = self.lb1.GetStringSelection() - font = wxFont(28, wxDEFAULT, wxNORMAL, wxNORMAL, false, face) + font = wxFont(28, wxDEFAULT, wxNORMAL, wxNORMAL, False, face) self.txt.SetFont(font) self.txt.SetSize(self.txt.GetBestSize()) @@ -64,9 +60,12 @@ def runTest(frame, nb, log): -overview = """\ -wxFontEnumerator enumerates either all available fonts on the system or only the ones with given attributes - either only fixed-width (suited for use in programs such as terminal emulators and the like) or the fonts available in the given encoding. - +overview = """<html><body> +wxFontEnumerator enumerates either all available fonts on the system or only +the ones with given attributes - either only fixed-width (suited for use in +programs such as terminal emulators and the like) or the fonts available in +the given encoding. +</body></html> """ diff --git a/wxPython/demo/GenericButtons.py b/wxPython/demo/GenericButtons.py index ad30e9752c..c3e7ff4039 100644 --- a/wxPython/demo/GenericButtons.py +++ b/wxPython/demo/GenericButtons.py @@ -28,12 +28,12 @@ class TestPanel(wxPanel): b = wxGenButton(self, -1, 'disabled') EVT_BUTTON(self, b.GetId(), self.OnButton) - b.Enable(false) + b.Enable(False) sizer.Add(b) b = wxGenButton(self, -1, 'bigger') EVT_BUTTON(self, b.GetId(), self.OnBiggerButton) - b.SetFont(wxFont(20, wxSWISS, wxNORMAL, wxBOLD, false)) + b.SetFont(wxFont(20, wxSWISS, wxNORMAL, wxBOLD, False)) b.SetBezelWidth(5) ###b.SetBestSize() b.SetBackgroundColour("Navy") @@ -46,6 +46,12 @@ class TestPanel(wxPanel): EVT_BUTTON(self, b.GetId(), self.OnButton) sizer.Add(b) + bmp = images.getTest2Bitmap() + b = wxGenBitmapButton(self, -1, bmp) + EVT_BUTTON(self, b.GetId(), self.OnButton) + sizer.Add(b) + b.Enable(False) + b = wxGenBitmapButton(self, -1, None) EVT_BUTTON(self, b.GetId(), self.OnButton) bmp = images.getBulb1Bitmap() @@ -58,7 +64,6 @@ class TestPanel(wxPanel): b.SetBitmapSelected(bmp) b.SetBestSize() sizer.Add(b) - sizer.Add(10,10) b = wxGenToggleButton(self, -1, "Toggle Button") EVT_BUTTON(self, b.GetId(), self.OnToggleButton) @@ -74,7 +79,7 @@ class TestPanel(wxPanel): mask = wxMaskColour(bmp, wxBLUE) bmp.SetMask(mask) b.SetBitmapSelected(bmp) - b.SetToggle(true) + b.SetToggle(True) b.SetBestSize() sizer.Add(b) @@ -88,7 +93,7 @@ class TestPanel(wxPanel): mask = wxMaskColour(bmp, wxBLUE) bmp.SetMask(mask) b.SetBitmapSelected(bmp) - b.SetUseFocusIndicator(false) + b.SetUseFocusIndicator(False) b.SetBestSize() sizer.Add(b) @@ -128,3 +133,11 @@ def runTest(frame, nb, log): import wxPython.lib.buttons overview = wxPython.lib.buttons.__doc__ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/GridCustEditor.py b/wxPython/demo/GridCustEditor.py index 27bba1562d..50101e4b60 100644 --- a/wxPython/demo/GridCustEditor.py +++ b/wxPython/demo/GridCustEditor.py @@ -2,6 +2,7 @@ from wxPython.wx import * from wxPython.grid import * +import string #--------------------------------------------------------------------------- class MyCellEditor(wxPyGridCellEditor): """ @@ -86,16 +87,16 @@ class MyCellEditor(wxPyGridCellEditor): def EndEdit(self, row, col, grid): """ - Complete the editing of the current cell. Returns true if the value + Complete the editing of the current cell. Returns True if the value has changed. If necessary, the control may be destroyed. *Must Override* """ self.log.write("MyCellEditor: EndEdit (%d,%d)\n" % (row, col)) - changed = false + changed = False val = self._tc.GetValue() if val != self.startValue: - changed = true + changed = True grid.GetTable().SetValue(row, col, val) # update the table self.startValue = '' @@ -115,7 +116,7 @@ class MyCellEditor(wxPyGridCellEditor): def IsAcceptedKey(self, evt): """ - Return TRUE to allow the given key to start editing: the base class + Return True to allow the given key to start editing: the base class version only checks that the event has no modifiers. F2 is special and will always start the editor. """ @@ -143,12 +144,13 @@ class MyCellEditor(wxPyGridCellEditor): elif key < 256 and key >= 0 and chr(key) in string.printable: ch = chr(key) if not evt.ShiftDown(): - ch = string.lower(ch) + ch = ch.lower() if ch is not None: # For this example, replace the text. Normally we would append it. #self._tc.AppendText(ch) self._tc.SetValue(ch) + self._tc.SetInsertionPointEnd() else: evt.Skip() @@ -226,7 +228,7 @@ if __name__ == '__main__': import sys app = wxPySimpleApp() frame = TestFrame(None, sys.stdout) - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/GridCustTable.py b/wxPython/demo/GridCustTable.py index ff78201fcb..3d4b6b3011 100644 --- a/wxPython/demo/GridCustTable.py +++ b/wxPython/demo/GridCustTable.py @@ -1,8 +1,6 @@ from wxPython.wx import * from wxPython.grid import * -import string - #--------------------------------------------------------------------------- class CustomDataTable(wxPyGridTableBase): @@ -45,7 +43,10 @@ class CustomDataTable(wxPyGridTableBase): return len(self.data[0]) def IsEmptyCell(self, row, col): - return not self.data[row][col] + try: + return not self.data[row][col] + except IndexError: + return true # Get/Set values in the table. The Python version of these # methods can handle any data-type, (as long as the Editor and @@ -90,11 +91,11 @@ class CustomDataTable(wxPyGridTableBase): # editor and renderer. This allows you to enforce some type-safety # in the grid. def CanGetValueAs(self, row, col, typeName): - colType = string.split(self.dataTypes[col], ':')[0] + colType = self.dataTypes[col].split(':')[0] if typeName == colType: return true else: - return false + return False def CanSetValueAs(self, row, col, typeName): return self.CanGetValueAs(row, col, typeName) @@ -120,7 +121,7 @@ class CustTableGrid(wxGrid): self.SetRowLabelSize(0) self.SetMargins(0,0) - self.AutoSizeColumns(false) + self.AutoSizeColumns(False) EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick) @@ -138,8 +139,22 @@ class CustTableGrid(wxGrid): class TestFrame(wxFrame): def __init__(self, parent, log): wxFrame.__init__(self, parent, -1, "Custom Table, data driven Grid Demo", size=(640,480)) - grid = CustTableGrid(self, log) + p = wxPanel(self, -1, style=0) + grid = CustTableGrid(p, log) + b = wxButton(p, -1, "Another Control...") + b.SetDefault() + EVT_BUTTON(self, b.GetId(), self.OnButton) + EVT_SET_FOCUS(b, self.OnButtonFocus) + bs = wxBoxSizer(wxVERTICAL) + bs.Add(grid, 1, wxGROW|wxALL, 5) + bs.Add(b) + p.SetSizer(bs) + def OnButton(self, evt): + print "button selected" + + def OnButtonFocus(self, evt): + print "button focus" #--------------------------------------------------------------------------- diff --git a/wxPython/demo/GridDragable.py b/wxPython/demo/GridDragable.py new file mode 100644 index 0000000000..ea989c6116 --- /dev/null +++ b/wxPython/demo/GridDragable.py @@ -0,0 +1,193 @@ +from wxPython.wx import * +from wxPython.grid import * +from wxPython.lib.gridmovers import wxGridColMover, EVT_GRID_COL_MOVE +from wxPython.lib.gridmovers import wxGridRowMover, EVT_GRID_ROW_MOVE + +#--------------------------------------------------------------------------- + +class CustomDataTable(wxPyGridTableBase): + """ + """ + + def __init__(self, log): + wxPyGridTableBase.__init__(self) + self.log = log + + self.identifiers = ['id','ds','sv','pr','pl','op','fx','ts'] + + self.rowLabels = ['Row1','Row2','Row3'] + + self.colLabels = {'id':'ID','ds':'Description','sv':'Severity', + 'pr':'Priority','pl':'Platform','op':'Opened?', + 'fx':'Fixed?','ts':'Tested?'} + + self.data = [{'id':1010, + 'ds':"The foo doesn't bar", + 'sv':"major", + 'pr':1, + 'pl':'MSW', + 'op':1, + 'fx':1, + 'ts':1 + }, + {'id':1011, + 'ds':"I've got a wicket in my wocket", + 'sv':"wish list", + 'pr':2, + 'pl':'other', + 'op':0, + 'fx':0, + 'ts':0 + }, + {'id':1012, + 'ds':"Rectangle() returns a triangle", + 'sv':"critical", + 'pr':5, + 'pl':'all', + 'op':0, + 'fx':0, + 'ts':0 + } + ] + + #-------------------------------------------------- + # required methods for the wxPyGridTableBase interface + + def GetNumberRows(self): + return len(self.data) + + def GetNumberCols(self): + return len(self.identifiers) + + def IsEmptyCell(self, row, col): + id = self.identifiers[col] + return not self.data[row][id] + + def GetValue(self, row, col): + id = self.identifiers[col] + return self.data[row][id] + + def SetValue(self, row, col, value): + id = self.identifiers[col] + self.data[row][id] = value + + #-------------------------------------------------- + # Some optional methods + + # Called when the grid needs to display column labels + def GetColLabelValue(self, col): + id = self.identifiers[col] + return self.colLabels[id] + + # Called when the grid needs to display row labels + def GetRowLabelValue(self,row): + return self.rowLabels[row] + + #-------------------------------------------------- + # Methods added for demo purposes. + + # The physical moving of the cols/rows is left to the implementer. + # Because of the dynamic nature of a wxGrid the physical moving of + # columns differs from implementation to implementation + + # Move the column + def MoveColumn(self,frm,to): + grid = self.GetView() + if grid: + # Move the identifiers + old = self.identifiers[frm] + del self.identifiers[frm] + if to > frm: + self.identifiers.insert(to-1,old) + else: + self.identifiers.insert(to,old) + + # Notify the grid + grid.BeginBatch() + msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_COLS_DELETED, + frm,1) + grid.ProcessTableMessage(msg) + msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_COLS_INSERTED, + to,1) + grid.ProcessTableMessage(msg) + grid.EndBatch() + + # Move the row + def MoveRow(self,frm,to): + grid = self.GetView() + if grid: + # Move the rowLabels and data rows + oldLabel = self.rowLabels[frm] + oldData = self.data[frm] + del self.rowLabels[frm] + del self.data[frm] + if to > frm: + self.rowLabels.insert(to-1,oldLabel) + self.data.insert(to-1,oldData) + else: + self.rowLabels.insert(to,oldLabel) + self.data.insert(to,oldData) + + # Notify the grid + grid.BeginBatch() + msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_ROWS_DELETED, + frm,1) + grid.ProcessTableMessage(msg) + msg = wxGridTableMessage(self,wxGRIDTABLE_NOTIFY_ROWS_INSERTED, + to,1) + grid.ProcessTableMessage(msg) + grid.EndBatch() + + +#--------------------------------------------------------------------------- + + +class DragableGrid(wxGrid): + def __init__(self, parent, log): + wxGrid.__init__(self, parent, -1) + + table = CustomDataTable(log) + + # The second parameter means that the grid is to take ownership of the + # table and will destroy it when done. Otherwise you would need to keep + # a reference to it and call it's Destroy method later. + self.SetTable(table, True) + + # Enable Column moving + wxGridColMover(self) + EVT_GRID_COL_MOVE(self,self.GetId(),self.OnColMove) + + # Enable Row moving + wxGridRowMover(self) + EVT_GRID_ROW_MOVE(self,self.GetId(),self.OnRowMove) + + # Event method called when a column move needs to take place + def OnColMove(self,evt): + frm = evt.GetMoveColumn() # Column being moved + to = evt.GetBeforeColumn() # Before which column to insert + self.GetTable().MoveColumn(frm,to) + + # Event method called when a row move needs to take place + def OnRowMove(self,evt): + frm = evt.GetMoveRow() # Row being moved + to = evt.GetBeforeRow() # Before which row to insert + self.GetTable().MoveRow(frm,to) + +#--------------------------------------------------------------------------- + +class TestFrame(wxFrame): + def __init__(self, parent, log): + wxFrame.__init__(self, parent, -1, "Custom Table, data driven Grid Demo", size=(640,480)) + grid = DragableGrid(self, log) + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + import sys + app = wxPySimpleApp() + frame = TestFrame(None, sys.stdout) + frame.Show(True) + app.MainLoop() + +#--------------------------------------------------------------------------- diff --git a/wxPython/demo/GridEnterHandler.py b/wxPython/demo/GridEnterHandler.py index 719c622ef0..d6989fbcfe 100644 --- a/wxPython/demo/GridEnterHandler.py +++ b/wxPython/demo/GridEnterHandler.py @@ -55,7 +55,7 @@ if __name__ == '__main__': import sys app = wxPySimpleApp() frame = TestFrame(None, sys.stdout) - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/GridHugeTable.py b/wxPython/demo/GridHugeTable.py index 6c450ec5d7..a2084fb6e3 100644 --- a/wxPython/demo/GridHugeTable.py +++ b/wxPython/demo/GridHugeTable.py @@ -23,7 +23,7 @@ class HugeTable(wxPyGridTableBase): return 10000 def IsEmptyCell(self, row, col): - return false + return False def GetValue(self, row, col): return str( (row, col) ) @@ -45,7 +45,15 @@ class HugeTableGrid(wxGrid): # The second parameter means that the grid is to take ownership of the # table and will destroy it when done. Otherwise you would need to keep # a reference to it and call it's Destroy method later. - self.SetTable(table, true) + self.SetTable(table, True) + + EVT_GRID_CELL_RIGHT_CLICK(self, self.OnRightDown) #added + + def OnRightDown(self, event): #added + print "hello" + print self.GetSelectedRows() #added + + @@ -56,7 +64,7 @@ class TestFrame(wxFrame): wxFrame.__init__(self, parent, -1, "Huge (virtual) Table Demo", size=(640,480)) grid = HugeTableGrid(self, log) - grid.SetReadOnly(5,5, true) + grid.SetReadOnly(5,5, True) #--------------------------------------------------------------------------- @@ -64,7 +72,7 @@ if __name__ == '__main__': import sys app = wxPySimpleApp() frame = TestFrame(None, sys.stdout) - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/GridSimple.py b/wxPython/demo/GridSimple.py index 9857e22ae0..89c2ec6e07 100644 --- a/wxPython/demo/GridSimple.py +++ b/wxPython/demo/GridSimple.py @@ -13,8 +13,8 @@ class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin): EVT_IDLE(self, self.OnIdle) - self.CreateGrid(25, 25) - ##self.EnableEditing(false) + self.CreateGrid(25, 25) #, wxGrid.wxGridSelectRows) + ##self.EnableEditing(False) # simple cell formatting self.SetColSize(3, 200) @@ -26,9 +26,9 @@ class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin): self.SetCellFont(0, 0, wxFont(12, wxROMAN, wxITALIC, wxNORMAL)) self.SetCellTextColour(1, 1, wxRED) self.SetCellBackgroundColour(2, 2, wxCYAN) - self.SetReadOnly(3, 3, true) + self.SetReadOnly(3, 3, True) - self.SetCellEditor(5, 0, wxGridCellNumberEditor()) + self.SetCellEditor(5, 0, wxGridCellNumberEditor(1,1000)) self.SetCellValue(5, 0, "123") self.SetCellEditor(6, 0, wxGridCellFloatEditor()) self.SetCellValue(6, 0, "123.34") @@ -53,6 +53,18 @@ class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin): self.SetColLabelAlignment(wxALIGN_LEFT, wxALIGN_BOTTOM) + #self.SetDefaultCellOverflow(False) + #r = wxGridCellAutoWrapStringRenderer() + #self.SetCellRenderer(9, 1, r) + + # overflow cells + self.SetCellValue( 9, 1, "This default cell will overflow into neighboring cells, but not if you turn overflow off."); + self.SetCellSize(11, 1, 3, 3); + self.SetCellAlignment(11, 1, wxALIGN_CENTRE, wxALIGN_CENTRE); + self.SetCellValue(11, 1, "This cell is set to span 3 rows and 3 columns"); + + + # test all the events EVT_GRID_CELL_LEFT_CLICK(self, self.OnCellLeftClick) EVT_GRID_CELL_RIGHT_CLICK(self, self.OnCellRightClick) @@ -216,7 +228,7 @@ if __name__ == '__main__': import sys app = wxPySimpleApp() frame = TestFrame(None, sys.stdout) - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/GridStdEdRend.py b/wxPython/demo/GridStdEdRend.py index b4a3db3c36..8e43b41729 100644 --- a/wxPython/demo/GridStdEdRend.py +++ b/wxPython/demo/GridStdEdRend.py @@ -1,7 +1,7 @@ from wxPython.wx import * from wxPython.grid import * -import string, random +import random #--------------------------------------------------------------------------- @@ -60,7 +60,7 @@ editorDemoData = [ ('wxGridCellBoolEditor', '1', wxGridCellBoolEditor, ()), ('wxGridCellChoiceEditor', 'one', wxGridCellChoiceEditor, (['one', 'two', 'three', 'four', 'kick', 'Microsoft', 'out the', - 'door'], false)), + 'door'], False)), ] @@ -139,15 +139,15 @@ Renderers used together. attr = wxGridCellAttr() attr.SetFont(font) attr.SetBackgroundColour(wxLIGHT_GREY) - attr.SetReadOnly(true) + attr.SetReadOnly(True) attr.SetAlignment(wxRIGHT, -1) self.SetColAttr(renCol, attr) attr.IncRef() self.SetColAttr(edCol, attr) # There is a bug in wxGTK for this method... - self.AutoSizeColumns(true) - self.AutoSizeRows(true) + self.AutoSizeColumns(True) + self.AutoSizeRows(True) EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick) @@ -174,7 +174,7 @@ if __name__ == '__main__': import sys app = wxPySimpleApp() frame = TestFrame(None, sys.stdout) - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/LayoutAnchors.py b/wxPython/demo/LayoutAnchors.py index b201372a7e..04b0c3f92c 100644 --- a/wxPython/demo/LayoutAnchors.py +++ b/wxPython/demo/LayoutAnchors.py @@ -21,38 +21,38 @@ class AnchorsDemoFrame(wxFrame): self._init_utils() self.mainPanel = wxPanel(size = wxSize(320, 160), parent = self, id = wxID_ANCHORSDEMOFRAMEMAINPANEL, name = 'panel1', style = wxTAB_TRAVERSAL | wxCLIP_CHILDREN, pos = wxPoint(0, 0)) - self.mainPanel.SetAutoLayout(true) + self.mainPanel.SetAutoLayout(True) self.okButton = wxButton(label = 'OK', id = wxID_ANCHORSDEMOFRAMEOKBUTTON, parent = self.mainPanel, name = 'okButton', size = wxSize(72, 24), style = 0, pos = wxPoint(240, 128)) - self.okButton.SetConstraints(LayoutAnchors(self.okButton, false, false, true, true)) + self.okButton.SetConstraints(LayoutAnchors(self.okButton, False, False, True, True)) EVT_BUTTON(self.okButton, wxID_ANCHORSDEMOFRAMEOKBUTTON, self.OnOkButtonButton) self.backgroundPanel = wxPanel(size = wxSize(304, 80), parent = self.mainPanel, id = wxID_ANCHORSDEMOFRAMEBACKGROUNDPANEL, name = 'backgroundPanel', style = wxSIMPLE_BORDER | wxCLIP_CHILDREN, pos = wxPoint(8, 40)) self.backgroundPanel.SetBackgroundColour(wxColour(255, 255, 255)) - self.backgroundPanel.SetConstraints(LayoutAnchors(self.backgroundPanel, true, true, true, true)) + self.backgroundPanel.SetConstraints(LayoutAnchors(self.backgroundPanel, True, True, True, True)) self.anchoredPanel = wxPanel(size = wxSize(88, 48), id = wxID_ANCHORSDEMOFRAMEANCHOREDPANEL, parent = self.backgroundPanel, name = 'anchoredPanel', style = wxSIMPLE_BORDER, pos = wxPoint(104, 16)) self.anchoredPanel.SetBackgroundColour(wxColour(0, 0, 222)) - self.anchoredPanel.SetConstraints(LayoutAnchors(self.anchoredPanel, false, false, false, false)) + self.anchoredPanel.SetConstraints(LayoutAnchors(self.anchoredPanel, False, False, False, False)) self.leftCheckBox = wxCheckBox(label = 'Left', id = wxID_ANCHORSDEMOFRAMELEFTCHECKBOX, parent = self.mainPanel, name = 'leftCheckBox', size = wxSize(40, 16), style = 0, pos = wxPoint(8, 8)) - self.leftCheckBox.SetConstraints(LayoutAnchors(self.leftCheckBox, false, true, false, false)) + self.leftCheckBox.SetConstraints(LayoutAnchors(self.leftCheckBox, False, True, False, False)) EVT_CHECKBOX(self.leftCheckBox, wxID_ANCHORSDEMOFRAMELEFTCHECKBOX, self.OnCheckboxCheckbox) self.topCheckBox = wxCheckBox(label = 'Top', id = wxID_ANCHORSDEMOFRAMETOPCHECKBOX, parent = self.mainPanel, name = 'topCheckBox', size = wxSize(40, 16), style = 0, pos = wxPoint(88, 8)) - self.topCheckBox.SetConstraints(LayoutAnchors(self.topCheckBox, false, true, false, false)) + self.topCheckBox.SetConstraints(LayoutAnchors(self.topCheckBox, False, True, False, False)) EVT_CHECKBOX(self.topCheckBox, wxID_ANCHORSDEMOFRAMETOPCHECKBOX, self.OnCheckboxCheckbox) self.rightCheckBox = wxCheckBox(label = 'Right', id = wxID_ANCHORSDEMOFRAMERIGHTCHECKBOX, parent = self.mainPanel, name = 'rightCheckBox', size = wxSize(48, 16), style = 0, pos = wxPoint(168, 8)) - self.rightCheckBox.SetConstraints(LayoutAnchors(self.rightCheckBox, false, true, false, false)) + self.rightCheckBox.SetConstraints(LayoutAnchors(self.rightCheckBox, False, True, False, False)) EVT_CHECKBOX(self.rightCheckBox, wxID_ANCHORSDEMOFRAMERIGHTCHECKBOX, self.OnCheckboxCheckbox) self.bottomCheckBox = wxCheckBox(label = 'Bottom', id = wxID_ANCHORSDEMOFRAMEBOTTOMCHECKBOX, parent = self.mainPanel, name = 'bottomCheckBox', size = wxSize(56, 16), style = 0, pos = wxPoint(248, 8)) - self.bottomCheckBox.SetConstraints(LayoutAnchors(self.bottomCheckBox, false, true, false, false)) + self.bottomCheckBox.SetConstraints(LayoutAnchors(self.bottomCheckBox, False, True, False, False)) EVT_CHECKBOX(self.bottomCheckBox, wxID_ANCHORSDEMOFRAMEBOTTOMCHECKBOX, self.OnCheckboxCheckbox) self.helpStaticText = wxStaticText(label = 'Select anchor options above, then resize window to see the effect', id = wxID_ANCHORSDEMOFRAMEHELPSTATICTEXT, parent = self.mainPanel, name = 'helpStaticText', size = wxSize(224, 24), style = wxST_NO_AUTORESIZE, pos = wxPoint(8, 128)) - self.helpStaticText.SetConstraints(LayoutAnchors(self.helpStaticText, true, false, true, true)) + self.helpStaticText.SetConstraints(LayoutAnchors(self.helpStaticText, True, False, True, True)) def __init__(self, parent): self._init_ctrls(parent) @@ -71,7 +71,7 @@ class AnchorsDemoFrame(wxFrame): def runTest(frame, nb, log): win = AnchorsDemoFrame(frame) frame.otherWin = win - win.Show(true) + win.Show(True) diff --git a/wxPython/demo/Layoutf.py b/wxPython/demo/Layoutf.py index e5809b60c5..cde4ad405f 100644 --- a/wxPython/demo/Layoutf.py +++ b/wxPython/demo/Layoutf.py @@ -8,7 +8,7 @@ class TestLayoutf(wxPanel): def __init__(self, parent): wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_BUTTON(self, 100, self.OnButton) self.panelA = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize, wxSIMPLE_BORDER) diff --git a/wxPython/demo/MDIDemo.py b/wxPython/demo/MDIDemo.py index 3ae510ea7c..c5298129c1 100644 --- a/wxPython/demo/MDIDemo.py +++ b/wxPython/demo/MDIDemo.py @@ -3,6 +3,9 @@ from wxPython.wx import * from wxScrolledWindow import MyCanvas +import images +SHOW_BACKGROUND = 1 + #---------------------------------------------------------------------- class MyParentFrame(wxMDIParentFrame): @@ -24,16 +27,38 @@ class MyParentFrame(wxMDIParentFrame): EVT_MENU(self, 5000, self.OnNewWindow) EVT_MENU(self, 5001, self.OnExit) + if SHOW_BACKGROUND: + self.bg_bmp = images.getGridBGBitmap() + EVT_ERASE_BACKGROUND(self.GetClientWindow(), self.OnEraseBackground) + def OnExit(self, evt): - self.Close(true) + self.Close(True) def OnNewWindow(self, evt): self.winCount = self.winCount + 1 win = wxMDIChildFrame(self, -1, "Child Window: %d" % self.winCount) canvas = MyCanvas(win) - win.Show(true) + win.Show(True) + + + def OnEraseBackground(self, evt): + dc = evt.GetDC() + if not dc: + dc = wxClientDC(self.GetClientWindow()) + + # tile the background bitmap + sz = self.GetClientSize() + w = self.bg_bmp.GetWidth() + h = self.bg_bmp.GetHeight() + x = 0 + while x < sz.width: + y = 0 + while y < sz.height: + dc.DrawBitmap(self.bg_bmp, x, y) + y = y + h + x = x + w #---------------------------------------------------------------------- @@ -43,9 +68,9 @@ if __name__ == '__main__': def OnInit(self): wxInitAllImageHandlers() frame = MyParentFrame() - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True app = MyApp(0) diff --git a/wxPython/demo/MDISashDemo.py b/wxPython/demo/MDISashDemo.py index dca6516f6a..a5fe68b915 100644 --- a/wxPython/demo/MDISashDemo.py +++ b/wxPython/demo/MDISashDemo.py @@ -44,7 +44,7 @@ class MyParentFrame(wxMDIParentFrame): win.SetOrientation(wxLAYOUT_HORIZONTAL) win.SetAlignment(wxLAYOUT_TOP) win.SetBackgroundColour(wxColour(255, 0, 0)) - win.SetSashVisible(wxSASH_BOTTOM, true) + win.SetSashVisible(wxSASH_BOTTOM, True) self.topWindow = win @@ -55,7 +55,7 @@ class MyParentFrame(wxMDIParentFrame): win.SetOrientation(wxLAYOUT_HORIZONTAL) win.SetAlignment(wxLAYOUT_BOTTOM) win.SetBackgroundColour(wxColour(0, 0, 255)) - win.SetSashVisible(wxSASH_TOP, true) + win.SetSashVisible(wxSASH_TOP, True) self.bottomWindow = win @@ -66,7 +66,7 @@ class MyParentFrame(wxMDIParentFrame): win.SetOrientation(wxLAYOUT_VERTICAL) win.SetAlignment(wxLAYOUT_LEFT) win.SetBackgroundColour(wxColour(0, 255, 0)) - win.SetSashVisible(wxSASH_RIGHT, TRUE) + win.SetSashVisible(wxSASH_RIGHT, True) win.SetExtraBorderSize(10) textWindow = wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxSUNKEN_BORDER) @@ -81,7 +81,7 @@ class MyParentFrame(wxMDIParentFrame): win.SetOrientation(wxLAYOUT_VERTICAL) win.SetAlignment(wxLAYOUT_LEFT) win.SetBackgroundColour(wxColour(0, 255, 255)) - win.SetSashVisible(wxSASH_RIGHT, TRUE) + win.SetSashVisible(wxSASH_RIGHT, True) self.leftWindow2 = win @@ -113,14 +113,14 @@ class MyParentFrame(wxMDIParentFrame): def OnExit(self, evt): - self.Close(true) + self.Close(True) def OnNewWindow(self, evt): self.winCount = self.winCount + 1 win = wxMDIChildFrame(self, -1, "Child Window: %d" % self.winCount) canvas = MyCanvas(win) - win.Show(true) + win.Show(True) #---------------------------------------------------------------------- @@ -130,9 +130,9 @@ if __name__ == '__main__': def OnInit(self): wxInitAllImageHandlers() frame = MyParentFrame() - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True app = MyApp(0) diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 82736b72fe..092e776b87 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -11,7 +11,7 @@ # Licence: wxWindows license #---------------------------------------------------------------------------- -import sys, os, time, string +import sys, os, time from wxPython.wx import * from wxPython.html import wxHtmlWindow @@ -19,27 +19,18 @@ from wxPython.html import wxHtmlWindow import images + #--------------------------------------------------------------------------- _treeList = [ # new stuff - ('New since last release', [ - 'RowColSizer', - 'Unicode', - 'wxFileHistory', - 'wxGenericDirCtrl', - 'wxImageFromStream', - 'wxArtProvider', - 'ScrolledPanel', - 'wxMenu', - 'wxIEHtmlWin', - 'wxKeyEvents', - 'wxWizard', - 'wxXmlResourceHandler', + ('Recent Additions', [ + 'wxIntCtrl', + 'wxPyColourChooser', ]), - # managed windows == things with a caption you can close + # managed windows == things with a (optional) caption you can close ('Base Frames and Dialogs', [ 'wxDialog', 'wxFrame', @@ -88,14 +79,15 @@ _treeList = [ 'wxNotebook', 'wxPopupWindow', 'wxRadioBox', + 'wxRadioButton', 'wxSashWindow', - 'wxSlider', 'wxScrolledWindow', - 'wxSplitterWindow', + 'wxSlider', 'wxSpinButton', 'wxSpinCtrl', - 'wxStaticText', + 'wxSplitterWindow', 'wxStaticBitmap', + 'wxStaticText', 'wxStatusBar', 'wxTextCtrl', 'wxToggleButton', @@ -106,6 +98,9 @@ _treeList = [ # controls coming from other librairies ('More Windows/Controls', [ + #'wxFloatBar', deprecated + #'wxMVCTree', deprecated + #'wxRightTextCtrl', deprecated as we have wxTE_RIGHT now. 'ColourSelect', 'ContextHelp', 'FancyText', @@ -115,20 +110,23 @@ _treeList = [ 'PyCrustWithFilling', 'SplitTree', 'TablePrint', + 'Throbber', 'wxCalendar', 'wxCalendarCtrl', + 'wxPyColourChooser', 'wxDynamicSashWindow', 'wxEditableListBox', 'wxEditor', - #'wxFloatBar', deprecated 'wxHtmlWindow', 'wxIEHtmlWin', + 'wxIntCtrl', 'wxLEDNumberCtrl', 'wxMimeTypesManager', - #'wxMVCTree', deprecated - 'wxRightTextCtrl', + 'wxMultiSash', + 'wxPopupControl', 'wxStyledTextCtrl_1', 'wxStyledTextCtrl_2', + 'wxTimeCtrl', ]), # How to lay out the controls in a frame/dialog @@ -145,13 +143,14 @@ _treeList = [ # ditto ('Process and Events', [ + 'EventManager', 'infoframe', 'OOR', 'PythonEvents', 'Threads', + 'wxKeyEvents', 'wxProcess', 'wxTimer', - 'wxKeyEvents', ]), # Clipboard and DnD @@ -162,12 +161,13 @@ _treeList = [ ]), # Images - ('Images', [ + ('Using Images', [ + 'Throbber', + 'wxArtProvider', 'wxDragImage', 'wxImage', 'wxImageFromStream', 'wxMask', - 'wxArtProvider', ]), # Other stuff @@ -177,6 +177,7 @@ _treeList = [ 'DrawXXXList', 'FontEnumerator', 'PrintFramework', + 'Throbber', 'Unicode', 'wxFileHistory', 'wxJoystick', @@ -212,7 +213,8 @@ class MyLog(wxPyLog): if self.logTime: message = time.strftime("%X", time.localtime(timeStamp)) + \ ": " + message - self.tc.AppendText(message + '\n') + if self.tc: + self.tc.AppendText(message + '\n') class MyTP(wxPyTipProvider): @@ -223,7 +225,7 @@ class MyTP(wxPyTipProvider): def opj(path): """Convert paths to the platform-specific separator""" - return apply(os.path.join, tuple(string.split(path, '/'))) + return apply(os.path.join, tuple(path.split('/'))) #--------------------------------------------------------------------------- @@ -237,6 +239,7 @@ class wxPythonDemo(wxFrame): self.cwd = os.getcwd() self.curOverview = "" + self.window = None icon = images.getMondrianIcon() self.SetIcon(icon) @@ -250,9 +253,9 @@ class wxPythonDemo(wxFrame): EVT_MENU(self.tbicon, self.TBMENU_RESTORE, self.OnTaskBarActivate) EVT_MENU(self.tbicon, self.TBMENU_CLOSE, self.OnTaskBarClose) + wxCallAfter(self.ShowTip) self.otherWin = None - self.showTip = true EVT_IDLE(self, self.OnIdle) EVT_CLOSE(self, self.OnCloseWindow) EVT_ICONIZE(self, self.OnIconfiy) @@ -268,8 +271,8 @@ class wxPythonDemo(wxFrame): EVT_ERASE_BACKGROUND(splitter, EmptyHandler) EVT_ERASE_BACKGROUND(splitter2, EmptyHandler) - # Prevent TreeCtrl from displaying all items after destruction when true - self.dying = false + # Prevent TreeCtrl from displaying all items after destruction when True + self.dying = False # Make a File menu self.mainmenu = wxMenuBar() @@ -277,6 +280,7 @@ class wxPythonDemo(wxFrame): exitID = wxNewId() menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!') EVT_MENU(self, exitID, self.OnFileExit) + wxApp_SetMacExitMenuItemId(exitID) self.mainmenu.Append(menu, '&File') # Make a Demo menu @@ -293,16 +297,33 @@ class wxPythonDemo(wxFrame): # Make a Help menu helpID = wxNewId() + findID = wxNewId() + findnextID = wxNewId() menu = wxMenu() + menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code') + menu.Append(findnextID, 'Find &Next\tF3', 'Find Next') + menu.AppendSeparator() menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!') + wxApp_SetMacAboutMenuItemId(helpID) EVT_MENU(self, helpID, self.OnHelpAbout) + EVT_MENU(self, findID, self.OnHelpFind) + EVT_MENU(self, findnextID, self.OnFindNext) + EVT_COMMAND_FIND(self, -1, self.OnFind) + EVT_COMMAND_FIND_NEXT(self, -1, self.OnFind) + EVT_COMMAND_FIND_CLOSE(self, -1 , self.OnFindClose) self.mainmenu.Append(menu, '&Help') self.SetMenuBar(self.mainmenu) - # set the menu accellerator table... - aTable = wxAcceleratorTable([(wxACCEL_ALT, ord('X'), exitID), - (wxACCEL_CTRL, ord('H'), helpID)]) - self.SetAcceleratorTable(aTable) + self.finddata = wxFindReplaceData() + + if 0: + # This is another way to set Accelerators, in addition to + # using the '\t<key>' syntax in the menu items. + aTable = wxAcceleratorTable([(wxACCEL_ALT, ord('X'), exitID), + (wxACCEL_CTRL, ord('H'), helpID), + (wxACCEL_CTRL, ord('F'), findID), + (wxACCEL_NORMAL, WXK_F3, findnextID)]) + self.SetAcceleratorTable(aTable) # Create a TreeCtrl @@ -358,7 +379,8 @@ class wxPythonDemo(wxFrame): # Set up a TextCtrl on the Demo Code Notebook page self.txt = wxTextCtrl(self.nb, -1, - style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL) + style = wxTE_MULTILINE|wxTE_READONLY| + wxHSCROLL|wxTE_RICH2|wxTE_NOHIDESEL) self.nb.AddPage(self.txt, "Demo Code") @@ -376,16 +398,14 @@ class wxPythonDemo(wxFrame): #wxLog_SetActiveTarget(wxLogStderr()) #wxLog_SetTraceMask(wxTraceMessages) - self.Show(true) + self.Show(True) # add the windows to the splitter and split it. - splitter2.SplitHorizontally(self.nb, self.log) - splitter.SplitVertically(self.tree, splitter2) + splitter2.SplitHorizontally(self.nb, self.log, 450) + splitter.SplitVertically(self.tree, splitter2, 180) - splitter.SetSashPosition(180, true) splitter.SetMinimumPaneSize(20) - splitter2.SetSashPosition(450, true) splitter2.SetMinimumPaneSize(20) @@ -453,6 +473,11 @@ class wxPythonDemo(wxFrame): if self.nb.GetPageCount() == 3: if self.nb.GetSelection() == 2: self.nb.SetSelection(0) + # inform the window that it's time to quit if it cares + if self.window is not None: + if hasattr(self.window, "ShutdownDemo"): + self.window.ShutdownDemo() + wxSafeYield() # in case the page has pending events self.nb.DeletePage(2) if itemText == self.overviewText: @@ -478,7 +503,7 @@ class wxPythonDemo(wxFrame): wxSafeYield() self.window = module.runTest(self, self.nb, self) ### - if self.window: + if self.window is not None: self.nb.AddPage(self.window, 'Demo') self.nb.SetSelection(2) self.nb.Refresh() # without this wxMac has troubles showing the just added page @@ -507,7 +532,7 @@ class wxPythonDemo(wxFrame): self.curOverview = text lead = text[:6] if lead != '<html>' and lead != '<HTML>': - text = string.join(string.split(text, '\n'), '<br>') + text = '<br>'.join(text.split('\n')) self.ovr.SetPage(text) self.nb.SetPageText(0, name) @@ -516,17 +541,61 @@ class wxPythonDemo(wxFrame): def OnFileExit(self, *event): self.Close() - def OnHelpAbout(self, event): from About import MyAboutBox about = MyAboutBox(self) about.ShowModal() about.Destroy() + def OnHelpFind(self, event): + self.nb.SetSelection(1) + self.finddlg = wxFindReplaceDialog(self, self.finddata, "Find", + wxFR_NOUPDOWN | + wxFR_NOMATCHCASE | + wxFR_NOWHOLEWORD) + self.finddlg.Show(True) + + def OnFind(self, event): + self.nb.SetSelection(1) + end = self.txt.GetLastPosition() + textstring = self.txt.GetRange(0, end).lower() + start = self.txt.GetSelection()[1] + findstring = self.finddata.GetFindString().lower() + loc = textstring.find(findstring, start) + if loc == -1 and start != 0: + # string not found, start at beginning + start = 0 + loc = textstring.find(findstring, start) + if loc == -1: + dlg = wxMessageDialog(self, 'Find String Not Found', + 'Find String Not Found in Demo File', + wxOK | wxICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + if self.finddlg: + if loc == -1: + self.finddlg.SetFocus() + return + else: + self.finddlg.Destroy() + self.txt.SetSelection(loc, loc + len(findstring)) + self.txt.ShowPosition(loc) + + + + def OnFindNext(self, event): + if self.finddata.GetFindString(): + self.OnFind(event) + else: + self.OnHelpFind(event) + + def OnFindClose(self, event): + event.GetDialog().Destroy() + #--------------------------------------------- def OnCloseWindow(self, event): - self.dying = true + self.dying = True self.window = None self.mainmenu = None if hasattr(self, "tbicon"): @@ -541,10 +610,6 @@ class wxPythonDemo(wxFrame): self.window = self.otherWin self.otherWin = None - if self.showTip: - self.ShowTip() - self.showTip = false - #--------------------------------------------- def ShowTip(self): @@ -575,9 +640,9 @@ class wxPythonDemo(wxFrame): #--------------------------------------------- def OnTaskBarActivate(self, evt): if self.IsIconized(): - self.Iconize(false) + self.Iconize(False) if not self.IsShown(): - self.Show(true) + self.Show(True) self.Raise() #--------------------------------------------- @@ -628,7 +693,7 @@ class MySplashScreen(wxSplashScreen): def OnClose(self, evt): frame = wxPythonDemo(None, -1, "wxPython: (A Demonstration)") - frame.Show(true) + frame.Show() evt.Skip() # Make sure the default handler runs too... @@ -638,10 +703,15 @@ class MyApp(wxApp): Create and show the splash screen. It will then create and show the main frame when it is time to do so. """ + + #import locale + #self.locale = wxLocale(wxLANGUAGE_FRENCH) + #locale.setlocale(locale.LC_ALL, 'fr') + wxInitAllImageHandlers() splash = MySplashScreen() splash.Show() - return true + return True diff --git a/wxPython/demo/OOR.py b/wxPython/demo/OOR.py index 9b4088fb8d..e0e84b0112 100644 --- a/wxPython/demo/OOR.py +++ b/wxPython/demo/OOR.py @@ -30,7 +30,7 @@ class TestPanel(wxPanel): sizer.Add(btns, 0, wxEXPAND|wxALL, 15) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.sizer = sizer # save it for testing later diff --git a/wxPython/demo/PrintFramework.py b/wxPython/demo/PrintFramework.py index faa33469d0..36c3ea5a2b 100644 --- a/wxPython/demo/PrintFramework.py +++ b/wxPython/demo/PrintFramework.py @@ -33,9 +33,9 @@ class MyPrintout(wxPrintout): def HasPage(self, page): self.log.WriteText("wxPrintout.HasPage: %d\n" % page) if page <= 2: - return true + return True else: - return false + return False def GetPageInfo(self): self.log.WriteText("wxPrintout.GetPageInfo\n") @@ -82,7 +82,7 @@ class MyPrintout(wxPrintout): self.canvas.DoDrawing(dc) dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY) - return true + return True #---------------------------------------------------------------------- @@ -117,14 +117,14 @@ class TestPrintPanel(wxPanel): self.box.Add(subbox, 0, wxGROW) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(self.box) def OnPrintSetup(self, event): printerDialog = wxPrintDialog(self) printerDialog.GetPrintDialogData().SetPrintData(self.printData) - printerDialog.GetPrintDialogData().SetSetupDialog(true) + printerDialog.GetPrintDialogData().SetSetupDialog(True) printerDialog.ShowModal(); self.printData = printerDialog.GetPrintDialogData().GetPrintData() printerDialog.Destroy() @@ -144,7 +144,7 @@ class TestPrintPanel(wxPanel): frame.Initialize() frame.SetPosition(self.frame.GetPosition()) frame.SetSize(self.frame.GetSize()) - frame.Show(true) + frame.Show(True) diff --git a/wxPython/demo/RowColSizer.py b/wxPython/demo/RowColSizer.py index 24921ca057..1a5ac5119e 100644 --- a/wxPython/demo/RowColSizer.py +++ b/wxPython/demo/RowColSizer.py @@ -50,7 +50,7 @@ class TestPanel(wxPanel): sizer.AddSpacer(10,10, pos=(13,1)) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) #---------------------------------------------------------------------- @@ -67,3 +67,9 @@ import wxPython.lib.rcsizer overview = wxPython.lib.rcsizer.__doc__ + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/ScrolledPanel.py b/wxPython/demo/ScrolledPanel.py index 2ff349b8f3..13b5e693a5 100644 --- a/wxPython/demo/ScrolledPanel.py +++ b/wxPython/demo/ScrolledPanel.py @@ -39,7 +39,7 @@ class ScrolledPanel(wxScrolledWindow): # The following is all that is needed to integrate the sizer and the # scrolled window. In this case we will only support vertical scrolling. - self.EnableScrolling(false, true) + self.EnableScrolling(False, True) self.SetScrollRate(0, 20) box.SetVirtualSizeHints(self) EVT_CHILD_FOCUS(self, self.OnChildFocus) diff --git a/wxPython/demo/Sizers.py b/wxPython/demo/Sizers.py index 8278bd0db4..ab95d06fd7 100644 --- a/wxPython/demo/Sizers.py +++ b/wxPython/demo/Sizers.py @@ -479,16 +479,16 @@ class TestFrame(wxFrame): self.SetStatusText("Resize this frame to see how the sizers respond...") self.sizer.Fit(self) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(self.sizer) EVT_CLOSE(self, self.OnCloseWindow) def OnCloseWindow(self, event): - self.MakeModal(false) + self.MakeModal(False) self.Destroy() def OnButton(self, event): - self.Close(true) + self.Close(True) #---------------------------------------------------------------------- @@ -531,8 +531,8 @@ class TestSelectionPanel(wxPanel): if func: win = TestFrame(self, title, func) win.CentreOnParent(wxBOTH) - win.Show(true) - win.MakeModal(true) + win.Show(True) + win.MakeModal(True) #---------------------------------------------------------------------- @@ -555,12 +555,12 @@ if __name__ == '__main__': def __init__(self): wxFrame.__init__(self, None, -1, "Testing...") - self.CreateStatusBar() - mainmenu = wxMenuBar() - menu = wxMenu() - menu.Append(200, 'E&xit', 'Get the heck outta here!') - mainmenu.Append(menu, "&File") - self.SetMenuBar(mainmenu) + self.CreateStatusBar() + mainmenu = wxMenuBar() + menu = wxMenu() + menu.Append(200, 'E&xit', 'Get the heck outta here!') + mainmenu.Append(menu, "&File") + self.SetMenuBar(mainmenu) EVT_MENU(self, 200, self.OnExit) self.panel = TestSelectionPanel(self, self) self.SetSize(wxSize(400, 380)) @@ -570,15 +570,15 @@ if __name__ == '__main__': self.Destroy() def OnExit(self, event): - self.Close(true) + self.Close(True) class TestApp(wxApp): def OnInit(self): frame = MainFrame() - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True app = TestApp(0) app.MainLoop() diff --git a/wxPython/demo/SlashDot.py b/wxPython/demo/SlashDot.py index 03fc98011f..eb0ded644e 100644 --- a/wxPython/demo/SlashDot.py +++ b/wxPython/demo/SlashDot.py @@ -170,22 +170,22 @@ class AppStatusBar(wxStatusBar): # This is a simple timer class to start a function after a short delay; class QuickTimer(wxTimer): def __init__(self, func, wait=100): - wxTimer.__init__(self) - self.callback = func - self.Start(wait); # wait .1 second (.001 second doesn't work. why?) + wxTimer.__init__(self) + self.callback = func + self.Start(wait); # wait .1 second (.001 second doesn't work. why?) def Notify(self): - self.Stop(); - apply(self.callback, ()); + self.Stop(); + apply(self.callback, ()); class AppFrame(wxFrame): def __init__(self, parent, id, title): wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition, wxSize(650, 250)) - # if the window manager closes the window: - EVT_CLOSE(self, self.OnCloseWindow); + # if the window manager closes the window: + EVT_CLOSE(self, self.OnCloseWindow); - # Now Create the menu bar and items + # Now Create the menu bar and items self.mainmenu = wxMenuBar() menu = wxMenu() @@ -201,52 +201,52 @@ class AppFrame(wxFrame): EVT_MENU(self, 212, self.OnViewArticle) self.mainmenu.Append(menu, '&View') menu = wxMenu() - menu.Append(220, '&Internal', 'Use internal text browser',TRUE) - menu.Check(220, true) + menu.Append(220, '&Internal', 'Use internal text browser',True) + menu.Check(220, True) self.UseInternal = 1; EVT_MENU(self, 220, self.OnBrowserInternal) menu.Append(222, '&Settings...', 'External browser Settings') EVT_MENU(self, 222, self.OnBrowserSettings) self.mainmenu.Append(menu, '&Browser') - menu = wxMenu() - menu.Append(230, '&About', 'Some documentation'); - EVT_MENU(self, 230, self.OnAbout) - self.mainmenu.Append(menu, '&Help') + menu = wxMenu() + menu.Append(230, '&About', 'Some documentation'); + EVT_MENU(self, 230, self.OnAbout) + self.mainmenu.Append(menu, '&Help') self.SetMenuBar(self.mainmenu) - if wxPlatform == '__WXGTK__': - # I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts - self.BrowserSettings = "xterm -e lynx %s &" - elif wxPlatform == '__WXMSW__': - # netscape 4.x likes to hang out here... - self.BrowserSettings = '\\progra~1\\Netscape\\Communicator\\Program\\netscape.exe %s' - else: - # a wild guess... - self.BrowserSettings = 'netscape %s' + if wxPlatform == '__WXGTK__': + # I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts + self.BrowserSettings = "xterm -e lynx %s &" + elif wxPlatform == '__WXMSW__': + # netscape 4.x likes to hang out here... + self.BrowserSettings = '\\progra~1\\Netscape\\Communicator\\Program\\netscape.exe %s' + else: + # a wild guess... + self.BrowserSettings = 'netscape %s' - # A status bar to tell people what's happening - self.sb = AppStatusBar(self) + # A status bar to tell people what's happening + self.sb = AppStatusBar(self) self.SetStatusBar(self.sb) self.list = wxListCtrl(self, 1100, style=wxLC_REPORT) - self.list.InsertColumn(0, 'Subject') - self.list.InsertColumn(1, 'Date') - self.list.InsertColumn(2, 'Posted by') - self.list.InsertColumn(3, 'Comments') + self.list.InsertColumn(0, 'Subject') + self.list.InsertColumn(1, 'Date') + self.list.InsertColumn(2, 'Posted by') + self.list.InsertColumn(3, 'Comments') self.list.SetColumnWidth(0, 300) self.list.SetColumnWidth(1, 150) self.list.SetColumnWidth(2, 100) self.list.SetColumnWidth(3, 100) EVT_LIST_ITEM_SELECTED(self, 1100, self.OnItemSelected) - EVT_LEFT_DCLICK(self.list, self.OnLeftDClick) + EVT_LEFT_DCLICK(self.list, self.OnLeftDClick) - self.logprint("Connecting to slashdot... Please wait.") - # wxYield doesn't yet work here. That's why we use a timer - # to make sure that we see some GUI stuff before the slashdot - # file is transfered. - self.timer = QuickTimer(self.DoRefresh, 1000) + self.logprint("Connecting to slashdot... Please wait.") + # wxYield doesn't yet work here. That's why we use a timer + # to make sure that we see some GUI stuff before the slashdot + # file is transfered. + self.timer = QuickTimer(self.DoRefresh, 1000) def logprint(self, x): self.sb.logprint(x) @@ -268,44 +268,44 @@ class AppFrame(wxFrame): self.list.SetStringItem(i, 3, article[6]) self.url.append(article[1]) i = i + 1 - self.logprint("File retrieved OK.") + self.logprint("File retrieved OK.") def OnViewRefresh(self, event): - self.logprint("Connecting to slashdot... Please wait."); - wxYield() - self.DoRefresh() + self.logprint("Connecting to slashdot... Please wait."); + wxYield() + self.DoRefresh() def DoViewIndex(self): if self.UseInternal: self.view = HTMLTextView(self, -1, 'slashdot.org', 'http://slashdot.org') - self.view.Show(true) + self.view.Show(True) else: self.logprint(self.BrowserSettings % ('http://slashdot.org')) #os.system(self.BrowserSettings % ('http://slashdot.org')) wxExecute(self.BrowserSettings % ('http://slashdot.org')) - self.logprint("OK") + self.logprint("OK") def OnViewIndex(self, event): - self.logprint("Starting browser... Please wait.") - wxYield() - self.DoViewIndex() + self.logprint("Starting browser... Please wait.") + wxYield() + self.DoViewIndex() def DoViewArticle(self): if self.current<0: return url = self.url[self.current] if self.UseInternal: self.view = HTMLTextView(self, -1, url, url) - self.view.Show(true) + self.view.Show(True) else: self.logprint(self.BrowserSettings % (url)) os.system(self.BrowserSettings % (url)) - self.logprint("OK") + self.logprint("OK") def OnViewArticle(self, event): - self.logprint("Starting browser... Please wait.") - wxYield() - self.DoViewArticle() + self.logprint("Starting browser... Please wait.") + wxYield() + self.DoViewArticle() def OnBrowserInternal(self, event): if self.mainmenu.Checked(220): @@ -319,28 +319,28 @@ class AppFrame(wxFrame): self.BrowserSettings = dlg.GetValue() def OnAbout(self, event): - dlg = wxMessageDialog(self, __doc__, "wxSlash", wxOK | wxICON_INFORMATION) - dlg.ShowModal() + dlg = wxMessageDialog(self, __doc__, "wxSlash", wxOK | wxICON_INFORMATION) + dlg.ShowModal() def OnItemSelected(self, event): self.current = event.m_itemIndex self.logprint("URL: %s" % (self.url[self.current])) def OnLeftDClick(self, event): - (x,y) = event.Position(); - # Actually, we should convert x,y to logical coords using - # a dc, but only for a wxScrolledWindow widget. - # Now wxGTK derives wxListCtrl from wxScrolledWindow, - # and wxMSW from wxControl... So that doesn't work. - #dc = wxClientDC(self.list) - ##self.list.PrepareDC(dc) - #x = dc.DeviceToLogicalX( event.GetX() ) - #y = dc.DeviceToLogicalY( event.GetY() ) - id = self.list.HitTest(wxPoint(x,y)) - #print "Double click at %d %d" % (x,y), id - # Okay, we got a double click. Let's assume it's the current selection - wxYield() - self.OnViewArticle(event) + (x,y) = event.Position(); + # Actually, we should convert x,y to logical coords using + # a dc, but only for a wxScrolledWindow widget. + # Now wxGTK derives wxListCtrl from wxScrolledWindow, + # and wxMSW from wxControl... So that doesn't work. + #dc = wxClientDC(self.list) + ##self.list.PrepareDC(dc) + #x = dc.DeviceToLogicalX( event.GetX() ) + #y = dc.DeviceToLogicalY( event.GetY() ) + id = self.list.HitTest(wxPoint(x,y)) + #print "Double click at %d %d" % (x,y), id + # Okay, we got a double click. Let's assume it's the current selection + wxYield() + self.OnViewArticle(event) def OnCloseWindow(self, event): self.Destroy() @@ -353,9 +353,9 @@ if __name__ == '__main__': class MyApp(wxApp): def OnInit(self): frame = AppFrame(None, -1, "Slashdot Breaking News") - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True app = MyApp(0) app.MainLoop() @@ -368,7 +368,7 @@ if __name__ == '__main__': def runTest(frame, nb, log): win = AppFrame(None, -1, "Slashdot Breaking News") frame.otherWin = win - win.Show(true) + win.Show(True) overview = __doc__ diff --git a/wxPython/demo/SplitTree.py b/wxPython/demo/SplitTree.py index fddd44f7dc..698d2f639d 100644 --- a/wxPython/demo/SplitTree.py +++ b/wxPython/demo/SplitTree.py @@ -76,23 +76,26 @@ class TestPanel(wxPanel): wxNO_BORDER ) valueWindow = TestValueWindow(splitter, -1, style=wxNO_BORDER) - splitter.SplitVertically(tree, valueWindow) - splitter.SetSashPosition(150) + splitter.SplitVertically(tree, valueWindow, 150) scroller.SetTargetWindow(tree) - scroller.EnableScrolling(FALSE, FALSE) + scroller.EnableScrolling(False, False) valueWindow.SetTreeCtrl(tree) tree.SetCompanionWindow(valueWindow) sizer = wxBoxSizer(wxVERTICAL) sizer.Add(scroller, 1, wxEXPAND|wxALL, 25) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) #---------------------------------------------------------------------- def runTest(frame, nb, log): + if wxPlatform == "__WXMAC__": + wxMessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry") + return + win = TestPanel(nb, log) return win diff --git a/wxPython/demo/TablePrint.py b/wxPython/demo/TablePrint.py index 615222c812..51b075c3da 100644 --- a/wxPython/demo/TablePrint.py +++ b/wxPython/demo/TablePrint.py @@ -31,7 +31,7 @@ class TablePanel(wxPanel): box.Add(btn, 0, wxALIGN_CENTER|wxALL, 15) EVT_BUTTON(self, k, self.OnButton) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(box) def OnButton(self, evt): @@ -47,11 +47,11 @@ class TablePanel(wxPanel): data = [] while 1: text = file.readline() - text = string.strip(text) + text = text.strip() if not text: break - list_val = string.splitfields(text,'\t') + list_val = text.split('\t') data.append(list_val) file.close() diff --git a/wxPython/demo/Threads.py b/wxPython/demo/Threads.py index 0476647c38..4c165eeb89 100644 --- a/wxPython/demo/Threads.py +++ b/wxPython/demo/Threads.py @@ -30,11 +30,11 @@ class CalcBarThread: self.val = val def Start(self): - self.keepGoing = self.running = true + self.keepGoing = self.running = True thread.start_new_thread(self.Run, ()) def Stop(self): - self.keepGoing = false + self.keepGoing = False def IsRunning(self): return self.running @@ -57,7 +57,7 @@ class CalcBarThread: if self.val < 0: self.val = 0 if self.val > 300: self.val = 300 - self.running = false + self.running = False #---------------------------------------------------------------------- @@ -172,7 +172,7 @@ class TestFrame(wxFrame): sizer.Add(self.graph, 1, wxEXPAND) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) sizer.Fit(self) EVT_UPDATE_BARGRAPH(self, self.OnUpdate) @@ -194,7 +194,7 @@ class TestFrame(wxFrame): def OnUpdate(self, evt): self.graph.SetValue(evt.barNum, evt.value) - self.graph.Refresh(false) + self.graph.Refresh(False) def OnCloseWindow(self, evt): @@ -217,7 +217,7 @@ class TestFrame(wxFrame): def runTest(frame, nb, log): win = TestFrame(frame, log) frame.otherWin = win - win.Show(true) + win.Show(True) return None #---------------------------------------------------------------------- diff --git a/wxPython/demo/Throbber.py b/wxPython/demo/Throbber.py new file mode 100644 index 0000000000..2aadab2f90 --- /dev/null +++ b/wxPython/demo/Throbber.py @@ -0,0 +1,180 @@ +# +# Throbber.py - Cliff Wells <clifford.wells@attbi.com> +# + +from wxPython.wx import * +from wxPython.lib.rcsizer import RowColSizer +from wxPython.lib.throbber import Throbber, __doc__ as docString +import throbImages # this was created using a modified version of img2py + +#---------------------------------------------------------------------- + +class TestPanel(wxPanel): + def __init__(self, parent, log): + wxPanel.__init__(self, parent, -1) + self.log = log + + # create the throbbers + self.throbbers = { + 'plain': { 'throbber': None, + 'text': "Plain throbber." }, + 'reverse': { 'throbber': None, + 'text': "This throbber runs in reverse and faster." }, + 'autoreverse': { 'throbber': None, + 'text': "This throbber switches direction." }, + 'label': { 'throbber': None, + 'text': "With a label." }, + 'overlay': { 'throbber': None, + 'text': "With an overlayed image." }, + 'overlay+text': { 'throbber': None, + 'text': "With a label and an overlayed image." }, + } + + images = [throbImages.catalog[i].getBitmap() + for i in throbImages.index + if i not in ['eclouds', 'logo']] + + self.throbbers['plain']['throbber'] = Throbber(self, -1, + images, size=(36, 36), + frameDelay = 0.1) + self.throbbers['reverse']['throbber'] = Throbber(self, -1, images, #size=(36, 36), + frameDelay = 0.07) + self.throbbers['reverse']['throbber'].Reverse() + self.throbbers['autoreverse']['throbber'] = Throbber(self, -1, + images, #size=(36, 36), + frameDelay = 0.1, + reverse = True) + self.throbbers['autoreverse']['throbber'].sequence.append(0) + self.throbbers['label']['throbber'] = Throbber(self, -1, + images, #size=(36, 36), + frameDelay = 0.1, + label = 'Label') + self.throbbers['label']['throbber'].SetFont(wxFont(pointSize = 10, + family = wxDEFAULT, + style = wxNORMAL, + weight = wxBOLD)) + self.throbbers['overlay']['throbber'] = Throbber(self, -1, + images, #size=(36, 36), + frameDelay = 0.1, + overlay = throbImages.catalog['logo'].getBitmap()) + self.throbbers['overlay+text']['throbber'] = Throbber(self, -1, + images, #size=(36, 36), + frameDelay = 0.1, + overlay = throbImages.catalog['logo'].getBitmap(), + label = "Python!") + self.throbbers['overlay+text']['throbber'].SetFont(wxFont(pointSize = 8, + family = wxDEFAULT, + style = wxNORMAL, + weight = wxBOLD)) + + + # this throbber is created using a single, composite image + self.otherThrobber = Throbber(self, -1, + throbImages.catalog['eclouds'].getBitmap(), #size=(48, 48), + frameDelay = 0.15, + frames = 12, + frameWidth = 48, + label = "Stop") + + + EVT_LEFT_DOWN(self.otherThrobber, self.OnClickThrobber) + + box = wxBoxSizer(wxVERTICAL) + sizer = RowColSizer() + box.Add(sizer, 1, wxEXPAND|wxALL, 5) + sizer.AddGrowableCol(1) + + sizer.Add(self.otherThrobber, row = 0, col = 2, rowspan = 4, flag = wxALIGN_CENTER_VERTICAL) + + row = 2 + # use a list so we can keep our order + for t in ['plain', 'reverse', 'autoreverse', 'label', 'overlay', 'overlay+text']: + sizer.Add(self.throbbers[t]['throbber'], row = row, col = 0, flag = wxALIGN_CENTER|wxALL, border=2) + sizer.Add(wxStaticText(self, -1, self.throbbers[t]['text']), row = row, col = 1, + flag = wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT) + row += 1 + + # start and stop buttons + startButton = wxButton(self, -1, "Start") + EVT_BUTTON(self, startButton.GetId(), self.OnStartAnimation) + stopButton = wxButton(self, -1, "Stop") + EVT_BUTTON(self, stopButton.GetId(), self.OnStopAnimation) + + buttonBox = wxBoxSizer(wxHORIZONTAL) + buttonBox.AddMany([ + (startButton, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5), + (stopButton, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5), + ]) + + sizer.Add(buttonBox, + row = len(self.throbbers) + 3, + col = 0, + colspan = 3, + flag = wxALIGN_CENTER) + + self.SetSizer(box) + self.SetAutoLayout(True) + self.Layout() + sizer.SetSizeHints(self) + sizer.Fit(self) + + for t in self.throbbers.keys(): + self.throbbers[t]['throbber'].Start() + self.otherThrobber.Start() + self.otherThrobber.Reverse() + + EVT_WINDOW_DESTROY(self, self.OnDestroy) + + def OnDestroy(self, event): + self.log.write("got destroy event") + event.Skip() + + def OnStartAnimation(self, event): + for t in self.throbbers.keys(): + self.throbbers[t]['throbber'].Start() + + def OnStopAnimation(self, event): + for t in self.throbbers.keys(): + self.throbbers[t]['throbber'].Rest() + + def OnClickThrobber(self, event): + if self.otherThrobber.Running(): + self.otherThrobber.Rest() + self.otherThrobber.SetLabel("Start") + else: + self.otherThrobber.Start() + self.otherThrobber.SetLabel("Stop") + + def ShutdownDemo(self): + self.otherThrobber.Rest() + for t in self.throbbers.keys(): + self.throbbers[t]['throbber'].Rest() + + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + if wxPlatform == "__WXMAC__": + wxMessageBox("This demo currently fails on the Mac.", + "Sorry") + return + else: + win = TestPanel(nb, log) + return win + +#---------------------------------------------------------------------- + + + +overview = """<html><body> +<h4><center>Throbber</center></h4> +<p>%s</p> +</body></html> +""" % docString + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) diff --git a/wxPython/demo/URLDragAndDrop.py b/wxPython/demo/URLDragAndDrop.py index d8c934ece2..16b3b96006 100644 --- a/wxPython/demo/URLDragAndDrop.py +++ b/wxPython/demo/URLDragAndDrop.py @@ -30,12 +30,12 @@ class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) outsideSizer = wxBoxSizer(wxVERTICAL) msg = "Drag-And-Drop of URLs" text = wxStaticText(self, -1, "", style=wxALIGN_CENTRE) - text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, false)) + text.SetFont(wxFont(24, wxSWISS, wxNORMAL, wxBOLD, False)) text.SetLabel(msg) w,h = text.GetTextExtent(msg) text.SetSize(wxSize(w,h+1)) @@ -44,7 +44,7 @@ class TestPanel(wxPanel): outsideSizer.Add(wxStaticLine(self, -1), 0, wxEXPAND) outsideSizer.Add(20,20) - self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, false)) + self.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, False)) inSizer = wxFlexGridSizer(2, 2, 5, 5) inSizer.AddGrowableCol(0) diff --git a/wxPython/demo/Unicode.py b/wxPython/demo/Unicode.py index 2e654b6efd..c6910a05c4 100644 --- a/wxPython/demo/Unicode.py +++ b/wxPython/demo/Unicode.py @@ -56,7 +56,7 @@ class TestPanel(wxPanel): else: f = self.GetFont() - font = wxFont(14, f.GetFamily(), f.GetStyle(), wxBOLD, false, + font = wxFont(14, f.GetFamily(), f.GetStyle(), wxBOLD, False, f.GetFaceName(), f.GetEncoding()) self.AddLine(box) @@ -79,7 +79,7 @@ class TestPanel(wxPanel): border = wxBoxSizer(wxVERTICAL) border.Add(box, 1, wxEXPAND|wxALL, 10) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(border) diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py index ce14928ce8..d57642958e 100644 --- a/wxPython/demo/XMLtreeview.py +++ b/wxPython/demo/XMLtreeview.py @@ -1,5 +1,5 @@ -import string, sys +import sys py2 = sys.version[0] == '2' @@ -11,9 +11,9 @@ try: else: from xml.parsers import pyexpat parsermodule = pyexpat - haveXML = true + haveXML = True except ImportError: - haveXML = false + haveXML = False #---------------------------------------------------------------------- @@ -76,7 +76,7 @@ else: self.nodeStack = self.nodeStack[:-1] def CharacterData(self, data ): - if string.strip(data): + if data.strip(): if py2: data = data.encode() self.AppendItem(self.nodeStack[-1], data) diff --git a/wxPython/demo/bmp_source/001.png b/wxPython/demo/bmp_source/001.png new file mode 100644 index 0000000000..01cbaae2ff Binary files /dev/null and b/wxPython/demo/bmp_source/001.png differ diff --git a/wxPython/demo/bmp_source/002.png b/wxPython/demo/bmp_source/002.png new file mode 100644 index 0000000000..2882268c73 Binary files /dev/null and b/wxPython/demo/bmp_source/002.png differ diff --git a/wxPython/demo/bmp_source/003.png b/wxPython/demo/bmp_source/003.png new file mode 100644 index 0000000000..e118e993a3 Binary files /dev/null and b/wxPython/demo/bmp_source/003.png differ diff --git a/wxPython/demo/bmp_source/004.png b/wxPython/demo/bmp_source/004.png new file mode 100644 index 0000000000..0b78a35102 Binary files /dev/null and b/wxPython/demo/bmp_source/004.png differ diff --git a/wxPython/demo/bmp_source/005.png b/wxPython/demo/bmp_source/005.png new file mode 100644 index 0000000000..8221ef89f4 Binary files /dev/null and b/wxPython/demo/bmp_source/005.png differ diff --git a/wxPython/demo/bmp_source/006.png b/wxPython/demo/bmp_source/006.png new file mode 100644 index 0000000000..d00538469e Binary files /dev/null and b/wxPython/demo/bmp_source/006.png differ diff --git a/wxPython/demo/bmp_source/007.png b/wxPython/demo/bmp_source/007.png new file mode 100644 index 0000000000..6aa133858a Binary files /dev/null and b/wxPython/demo/bmp_source/007.png differ diff --git a/wxPython/demo/bmp_source/008.png b/wxPython/demo/bmp_source/008.png new file mode 100644 index 0000000000..f443e9a387 Binary files /dev/null and b/wxPython/demo/bmp_source/008.png differ diff --git a/wxPython/demo/bmp_source/009.png b/wxPython/demo/bmp_source/009.png new file mode 100644 index 0000000000..2de31d902a Binary files /dev/null and b/wxPython/demo/bmp_source/009.png differ diff --git a/wxPython/demo/bmp_source/010.png b/wxPython/demo/bmp_source/010.png new file mode 100644 index 0000000000..f99a571994 Binary files /dev/null and b/wxPython/demo/bmp_source/010.png differ diff --git a/wxPython/demo/bmp_source/011.png b/wxPython/demo/bmp_source/011.png new file mode 100644 index 0000000000..e4ea809f68 Binary files /dev/null and b/wxPython/demo/bmp_source/011.png differ diff --git a/wxPython/demo/bmp_source/012.png b/wxPython/demo/bmp_source/012.png new file mode 100644 index 0000000000..b9b85b65b0 Binary files /dev/null and b/wxPython/demo/bmp_source/012.png differ diff --git a/wxPython/demo/bmp_source/013.png b/wxPython/demo/bmp_source/013.png new file mode 100644 index 0000000000..457e7a0e7b Binary files /dev/null and b/wxPython/demo/bmp_source/013.png differ diff --git a/wxPython/demo/bmp_source/014.png b/wxPython/demo/bmp_source/014.png new file mode 100644 index 0000000000..0cb6d8b3c1 Binary files /dev/null and b/wxPython/demo/bmp_source/014.png differ diff --git a/wxPython/demo/bmp_source/015.png b/wxPython/demo/bmp_source/015.png new file mode 100644 index 0000000000..f5422be062 Binary files /dev/null and b/wxPython/demo/bmp_source/015.png differ diff --git a/wxPython/demo/bmp_source/016.png b/wxPython/demo/bmp_source/016.png new file mode 100644 index 0000000000..d00538469e Binary files /dev/null and b/wxPython/demo/bmp_source/016.png differ diff --git a/wxPython/demo/bmp_source/017.png b/wxPython/demo/bmp_source/017.png new file mode 100644 index 0000000000..6aa133858a Binary files /dev/null and b/wxPython/demo/bmp_source/017.png differ diff --git a/wxPython/demo/bmp_source/018.png b/wxPython/demo/bmp_source/018.png new file mode 100644 index 0000000000..f443e9a387 Binary files /dev/null and b/wxPython/demo/bmp_source/018.png differ diff --git a/wxPython/demo/bmp_source/019.png b/wxPython/demo/bmp_source/019.png new file mode 100644 index 0000000000..2de31d902a Binary files /dev/null and b/wxPython/demo/bmp_source/019.png differ diff --git a/wxPython/demo/bmp_source/020.png b/wxPython/demo/bmp_source/020.png new file mode 100644 index 0000000000..f99a571994 Binary files /dev/null and b/wxPython/demo/bmp_source/020.png differ diff --git a/wxPython/demo/bmp_source/021.png b/wxPython/demo/bmp_source/021.png new file mode 100644 index 0000000000..e4ea809f68 Binary files /dev/null and b/wxPython/demo/bmp_source/021.png differ diff --git a/wxPython/demo/bmp_source/022.png b/wxPython/demo/bmp_source/022.png new file mode 100644 index 0000000000..b9b85b65b0 Binary files /dev/null and b/wxPython/demo/bmp_source/022.png differ diff --git a/wxPython/demo/bmp_source/023.png b/wxPython/demo/bmp_source/023.png new file mode 100644 index 0000000000..457e7a0e7b Binary files /dev/null and b/wxPython/demo/bmp_source/023.png differ diff --git a/wxPython/demo/bmp_source/024.png b/wxPython/demo/bmp_source/024.png new file mode 100644 index 0000000000..0cb6d8b3c1 Binary files /dev/null and b/wxPython/demo/bmp_source/024.png differ diff --git a/wxPython/demo/bmp_source/025.png b/wxPython/demo/bmp_source/025.png new file mode 100644 index 0000000000..f5422be062 Binary files /dev/null and b/wxPython/demo/bmp_source/025.png differ diff --git a/wxPython/demo/bmp_source/026.png b/wxPython/demo/bmp_source/026.png new file mode 100644 index 0000000000..4bdce914f5 Binary files /dev/null and b/wxPython/demo/bmp_source/026.png differ diff --git a/wxPython/demo/bmp_source/027.png b/wxPython/demo/bmp_source/027.png new file mode 100644 index 0000000000..eb966316ed Binary files /dev/null and b/wxPython/demo/bmp_source/027.png differ diff --git a/wxPython/demo/bmp_source/028.png b/wxPython/demo/bmp_source/028.png new file mode 100644 index 0000000000..ba904b2f88 Binary files /dev/null and b/wxPython/demo/bmp_source/028.png differ diff --git a/wxPython/demo/bmp_source/029.png b/wxPython/demo/bmp_source/029.png new file mode 100644 index 0000000000..9c036ed8ac Binary files /dev/null and b/wxPython/demo/bmp_source/029.png differ diff --git a/wxPython/demo/bmp_source/030.png b/wxPython/demo/bmp_source/030.png new file mode 100644 index 0000000000..8448239d68 Binary files /dev/null and b/wxPython/demo/bmp_source/030.png differ diff --git a/wxPython/demo/bmp_source/eclouds.png b/wxPython/demo/bmp_source/eclouds.png new file mode 100644 index 0000000000..54711b8ed5 Binary files /dev/null and b/wxPython/demo/bmp_source/eclouds.png differ diff --git a/wxPython/demo/bmp_source/logo.png b/wxPython/demo/bmp_source/logo.png new file mode 100644 index 0000000000..4cca130f14 Binary files /dev/null and b/wxPython/demo/bmp_source/logo.png differ diff --git a/wxPython/demo/bmp_source/rest.png b/wxPython/demo/bmp_source/rest.png new file mode 100644 index 0000000000..9c394e56b7 Binary files /dev/null and b/wxPython/demo/bmp_source/rest.png differ diff --git a/wxPython/demo/data/tips.txt b/wxPython/demo/data/tips.txt index b56d78fb01..ca4a6e2d6c 100644 --- a/wxPython/demo/data/tips.txt +++ b/wxPython/demo/data/tips.txt @@ -2,6 +2,6 @@ Each of the leaf items in the tree is a separate demo. Click and learn! Use the source Luke! Many of the demos have some helpful overview text associated with them. Simply click on the first tab in the notebook control after selecting the demo. You can switch back and forth to the demo page as often as you like. You can also view the source code for each demo by clicking on the second notebook tab. -wxPython now has a company providing commercial support, consulting and training. Go to http://wxpros.com for details. You shouldn't pee on an electric fence! -Be sure to subscribe to the mail list. Go to http://wxwindows.org/mailman/listinfo/wxpython-users today! +Be sure to subscribe to the mail list. Go to http://wxpython.org/maillist.php today! +The wxPyWiki is a place where wxPython users can help other users, and is a colaborative documentation system. See http://wiki.wxpython.org. diff --git a/wxPython/demo/data/widgetTest.htm b/wxPython/demo/data/widgetTest.htm index 22d6398914..c88f019b7f 100644 --- a/wxPython/demo/data/widgetTest.htm +++ b/wxPython/demo/data/widgetTest.htm @@ -4,24 +4,30 @@ </head> <body bgcolor="#00CCFF"> <h2>Mixing wxPython and wxHTML</h2> -The widgets on this page were created dynamically on the fly by a custom -wxTagHandler found in wxPython.lib.wxpTag. You can look at the sources -and doc-string <a href="../../lib/wxpTag.py">here</a>. + +The widgets on this page were created dynamically on the fly by a +custom wxTagHandler found in wxPython.lib.wxpTag. You can look at the +sources and doc-string <a href="../../lib/wxpTag.py">here</a>. + <p> The button below is added to the page like this: + <pre> &lt;center>&lt;wxp class="wxButton" width="50%"> &lt;param name="label" value="It works!"> &lt;param name="id" value="wxID_OK"> &lt;/wxp>&lt;/center> </pre> + <hr> + <center> <wxp class="wxButton" width="50%"> <param name="label" value="It works!"> <param name="id" value="wxID_OK"> </wxp> </center> + <p> Notice that the <b>button click</b> event is actually caught by the panel that contains this window, which then logs it in the window below. diff --git a/wxPython/demo/demoMainLoop.py b/wxPython/demo/demoMainLoop.py index 23067e9329..3d66c2ae4c 100755 --- a/wxPython/demo/demoMainLoop.py +++ b/wxPython/demo/demoMainLoop.py @@ -54,7 +54,7 @@ class MyFrame(wxFrame): def OnCloseWindow(self, event): - app.keepGoing = false + app.keepGoing = False self.Destroy() def OnIdle(self, event): @@ -104,12 +104,12 @@ class MyApp(wxApp): def OnInit(self): frame = MyFrame(None, -1, "This is a test") - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - self.keepGoing = true + self.keepGoing = True - return true + return True app = MyApp(0) diff --git a/wxPython/demo/encode_bitmaps.py b/wxPython/demo/encode_bitmaps.py index 489e6f6e64..b3d027eb11 100644 --- a/wxPython/demo/encode_bitmaps.py +++ b/wxPython/demo/encode_bitmaps.py @@ -6,7 +6,7 @@ This is a way to save the startup time when running img2py on lots of files... """ -import sys, string +import sys from wxPython.tools import img2py @@ -60,10 +60,46 @@ command_lines = [ "-a -u -n WizTest1 bmp_source/wiztest1.bmp images.py", "-a -u -n WizTest2 bmp_source/wiztest2.bmp images.py", + + + " -u -c bmp_source/001.png throbImages.py", + "-a -u -c bmp_source/002.png throbImages.py", + "-a -u -c bmp_source/003.png throbImages.py", + "-a -u -c bmp_source/004.png throbImages.py", + "-a -u -c bmp_source/005.png throbImages.py", + "-a -u -c bmp_source/006.png throbImages.py", + "-a -u -c bmp_source/007.png throbImages.py", + "-a -u -c bmp_source/008.png throbImages.py", + "-a -u -c bmp_source/009.png throbImages.py", + "-a -u -c bmp_source/010.png throbImages.py", + "-a -u -c bmp_source/011.png throbImages.py", + "-a -u -c bmp_source/012.png throbImages.py", + "-a -u -c bmp_source/013.png throbImages.py", + "-a -u -c bmp_source/014.png throbImages.py", + "-a -u -c bmp_source/015.png throbImages.py", + "-a -u -c bmp_source/016.png throbImages.py", + "-a -u -c bmp_source/017.png throbImages.py", + "-a -u -c bmp_source/018.png throbImages.py", + "-a -u -c bmp_source/019.png throbImages.py", + "-a -u -c bmp_source/020.png throbImages.py", + "-a -u -c bmp_source/021.png throbImages.py", + "-a -u -c bmp_source/022.png throbImages.py", + "-a -u -c bmp_source/023.png throbImages.py", + "-a -u -c bmp_source/024.png throbImages.py", + "-a -u -c bmp_source/025.png throbImages.py", + "-a -u -c bmp_source/026.png throbImages.py", + "-a -u -c bmp_source/027.png throbImages.py", + "-a -u -c bmp_source/028.png throbImages.py", + "-a -u -c bmp_source/029.png throbImages.py", + "-a -u -c bmp_source/030.png throbImages.py", + + "-a -u -c bmp_source/eclouds.png throbImages.py", + "-a -u -c bmp_source/logo.png throbImages.py", + "-a -u -c bmp_source/rest.png throbImages.py", ] for line in command_lines: - args = string.split(line) + args = line.split() img2py.main(args) diff --git a/wxPython/demo/hangman.py b/wxPython/demo/hangman.py index eb591471a8..f2e09b5bec 100644 --- a/wxPython/demo/hangman.py +++ b/wxPython/demo/hangman.py @@ -14,7 +14,7 @@ Have fun with it, Harm van der Heijden (H.v.d.Heijden@phys.tue.nl)""" -import random,re,string +import random,re from wxPython.wx import * @@ -47,7 +47,7 @@ class WordFetcher: m = reg.search(self.words[index:]) if m and len(m.groups()[0]) >= self.min_length: break n = n - 1 - if n: return string.lower(m.groups()[0]) + if n: return m.groups()[0].lower() return "error" @@ -292,7 +292,7 @@ class MyFrame(wxFrame): menubar = wxMenuBar() menubar.Append(menu, "Game") menu = wxMenu() - #menu.Append(1010, "Internal", "Use internal dictionary", TRUE) + #menu.Append(1010, "Internal", "Use internal dictionary", True) menu.Append(1011, "ASCII File...") urls = [ 'wxPython home', 'http://wxPython.org/', 'slashdot.org', 'http://slashdot.org/', @@ -349,7 +349,7 @@ class MyFrame(wxFrame): def OnGameDemo(self, event): frame = HangmanDemoFrame(self.wf, self, -1, wxDefaultPosition, self.GetSize()) - frame.Show(TRUE) + frame.Show(True) def OnDictFile(self, event): fd = wxFileDialog(self) @@ -433,8 +433,8 @@ class MyApp(wxApp): wf = WordFetcher(defaultfile) frame = MyFrame(None, wf) self.SetTopWindow(frame) - frame.Show(TRUE) - return TRUE + frame.Show(True) + return True @@ -458,7 +458,7 @@ def runTest(frame, nb, log): wf = WordFetcher(defaultfile) win = MyFrame(frame, wf) frame.otherWin = win - win.Show(true) + win.Show(True) #---------------------------------------------------------------------- diff --git a/wxPython/demo/images.py b/wxPython/demo/images.py index 6c68ddafa1..8e35d1c1f2 100644 --- a/wxPython/demo/images.py +++ b/wxPython/demo/images.py @@ -1,5 +1,5 @@ #---------------------------------------------------------------------- -# This file was generated by C:\projects\wx\wxPython\demo\encode_bitmaps.py +# This file was generated by encode_bitmaps.py # from wxPython.wx import wxImageFromStream, wxBitmapFromImage from wxPython.wx import wxEmptyIcon diff --git a/wxPython/demo/infoframe.py b/wxPython/demo/infoframe.py index 99507a6547..7f19771460 100644 --- a/wxPython/demo/infoframe.py +++ b/wxPython/demo/infoframe.py @@ -82,14 +82,14 @@ if __name__ == "__main__": outputWindowClass = wxPyInformationalMessagesFrame def OnInit(self): frame = MyFrame(self.stdioWin) - frame.Show(TRUE) + frame.Show(True) self.SetTopWindow(frame) if isinstance(sys.stdout,wxPyInformationalMessagesFrame): sys.stdout.SetParent(frame) #self.redirectStdio(None)# this is done automatically # by the MyApp(1) call below print "Starting.\n", - return true + return True app = MyApp(1) app.MainLoop() diff --git a/wxPython/demo/pyTree.py b/wxPython/demo/pyTree.py index e463fffa10..72cb2ff317 100644 --- a/wxPython/demo/pyTree.py +++ b/wxPython/demo/pyTree.py @@ -78,7 +78,7 @@ class pyTree(wx.wxTreeCtrl): wx.wxTreeCtrl.__init__(self, parent, id) self.root = self.AddRoot(str(root), -1, -1, wx.wxTreeItemData(root)) if dir(root): - self.SetItemHasChildren(self.root, wx.TRUE) + self.SetItemHasChildren(self.root, wx.True) wx.EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnItemExpanding) wx.EVT_TREE_ITEM_COLLAPSED(self, self.GetId(), self.OnItemCollapsed) wx.EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) @@ -121,7 +121,7 @@ class pyTree(wx.wxTreeCtrl): new_item = self.AppendItem( item, key, -1, -1, wx.wxTreeItemData(new_obj) ) if dir(new_obj): - self.SetItemHasChildren(new_item, wx.TRUE) + self.SetItemHasChildren(new_item, wx.True) def OnItemCollapsed(self, event): """ @@ -205,9 +205,9 @@ if __name__ == '__main__': def OnInit(self): """OnInit. Boring, boring, boring!""" frame = MyFrame() - frame.Show(wx.TRUE) + frame.Show(wx.True) self.SetTopWindow(frame) - return wx.TRUE + return wx.True app = MyApp(0) app.MainLoop() diff --git a/wxPython/demo/run.py b/wxPython/demo/run.py index 82d702bb43..fcf5bd9029 100755 --- a/wxPython/demo/run.py +++ b/wxPython/demo/run.py @@ -25,7 +25,9 @@ from wxPython.wx import * class Log: def WriteText(self, text): - sys.stdout.write(text) + if text[-1:] == '\n': + text = text[:-1] + wxLogMessage(text) write = WriteText @@ -38,7 +40,9 @@ class RunDemoApp(wxApp): def OnInit(self): wxInitAllImageHandlers() - frame = wxFrame(None, -1, "RunDemo: " + self.name, size=(0,0), + wxLog_SetActiveTarget(wxLogStderr()) + + frame = wxFrame(None, -1, "RunDemo: " + self.name, pos=(50,50), size=(0,0), style=wxNO_FULL_REPAINT_ON_RESIZE|wxDEFAULT_FRAME_STYLE) frame.CreateStatusBar() menuBar = wxMenuBar() @@ -47,7 +51,9 @@ class RunDemoApp(wxApp): EVT_MENU(self, 101, self.OnButton) menuBar.Append(menu, "&File") frame.SetMenuBar(menuBar) - frame.Show(true) + frame.Show(True) + EVT_CLOSE(frame, self.OnCloseFrame) + win = self.demoModule.runTest(frame, frame, Log()) # a window will be returned if the demo does not create @@ -56,6 +62,7 @@ class RunDemoApp(wxApp): # so set the frame to a good size for showing stuff frame.SetSize((640, 480)) win.SetFocus() + self.window = win else: # otherwise the demo made its own frame, so just put a @@ -68,17 +75,24 @@ class RunDemoApp(wxApp): # It was probably a dialog or something that is already # gone, so we're done. frame.Destroy() - return true + return True self.SetTopWindow(frame) self.frame = frame #wxLog_SetActiveTarget(wxLogStderr()) #wxLog_SetTraceMask(wxTraceMessages) - return true + return True def OnButton(self, evt): - self.frame.Close(true) + self.frame.Close(True) + + + def OnCloseFrame(self, evt): + if hasattr(self, "window") and hasattr(self.window, "ShutdownDemo"): + self.window.ShutdownDemo() + evt.Skip() + #---------------------------------------------------------------------------- diff --git a/wxPython/demo/simple.py b/wxPython/demo/simple.py index beed3ee0cd..6b28148228 100644 --- a/wxPython/demo/simple.py +++ b/wxPython/demo/simple.py @@ -33,7 +33,7 @@ class MyFrame(wxFrame): sizer.Add(text, 0, wxALL, 10) sizer.Add(btn, 0, wxALL, 10) panel.SetSizer(sizer) - panel.SetAutoLayout(true) + panel.SetAutoLayout(True) panel.Layout() EVT_BUTTON(self, btn.GetId(), self.OnButton) @@ -46,6 +46,6 @@ class MyFrame(wxFrame): app = wxPySimpleApp() frame = MyFrame(None, "Simple wxPython App") -frame.Show(true) +frame.Show(True) app.MainLoop() diff --git a/wxPython/demo/throbImages.py b/wxPython/demo/throbImages.py new file mode 100644 index 0000000000..54535e5bdc --- /dev/null +++ b/wxPython/demo/throbImages.py @@ -0,0 +1,4362 @@ +#---------------------------------------------------------------------- +# This file was generated by encode_bitmaps.py +# +from wxPython.wx import wxImageFromStream, wxBitmapFromImage +import cStringIO + + +catalog = {} +index = [] + +class ImageClass: pass + +def get001Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\x9fIDATx\x9c\xcd\x98_o\xdbF\x16\xc5\x7f\xf7\xce\x0c\xa5\xc8\xb2];N\xea4M\ +\x8a\xc2@\xb6[\xa0E\xd1\xa2o]\xf4#\xef\x17\xd8\xa7}\xeck\x8b\x16}\t\x908\x9b\ +\x7fnc\xc9\x96H\x0e\x87\x9c\xd9\x87\x19QR\xd2\xf7]\x02\xf4P\xb2L\x1e\x9d{\ +\xee9w,@\xe2\xff\xe0\xb0\x00_\x7f\xf7\x0f\xaaj\x82s\x15\xc6Z\x8c\x1aD\r"BJ\ +\x89=\xaci\xb3\xa4\xed\x1bIv~)\xfc\xe5!\xfb\x97\xa9\xfcL)\xf1\xef\x7f\xfd3\ +\x03\xa9\xaa\t\xd3\xe9\x8cj2\x1d\xc1\xe8\x06\x08\tR"E\xe8\x87@S\xaf\xf0M\x8d\ +ok|\xd7\xd2\x87\xc00\xf4\x88\x80\xb1\x15\x93\xc9\x94;\xb3C\xe6\x87\xc7T\x93i\ +~\xb0\xc8\x0e\x08\xc9p\x05RL\xc44l\x19q\xae\xa2\x9aL\x99N\xef\xe0&S\xac\xad0\ +\xaa\x1b\xe8\xf8\xb6aU/\xa9WKbJ\x18\xab\x1c\x1c\x1e2KG\xa4\xd8\x13\xfa\x9e>t\ +\x84\xae\xa3\xa9W,\xde]!\xc6pzz\x9f\xb3\xfb\x0f\x99\x1f\x1doa\xc8\x06\x8e\ +\x90R$\xc6\xb8\x05b\xac\xc5\xb9\n7\x99RU\x85\x15c\x00ay}\xc5\xeav\x811\xca\ +\xe9\xd9}\x9c\xadP\xa3\x00\x0c\xc3@\xdf\x07B\x08\x84\xae\xa3\xebZ|\xdb\xd04k\ +\xda\xa6\xe6\xcd\xabg\\\xbd}\xc9\xa7\x8f.x\xfc\xf9\x17\x88f\x00H\x06\x94Rd\ +\xe8w\x181j0\xd6bm\x95\x01\xb9\x8a\x18#\xcb\xc5\x1ft\xbe\xe6\xe4\xee\x19\xf3\ +\x839\xd3\xd9\x01UUA\x82\xbe\xef\t\x9d\xc7w\x1d\x9d\xf7t\xbe\xa5\xedZ|\xd3\ +\x94\x12OPU\xd6\xab\x1b~\xfd\xf9\'no\x17<\xf9\xf2[f\xb3y\x06\x82@J\x88\xee\ +\x00\x115\xa8\x1a\x8c*\xc6\x18b\x8c\xdc,\xffD$\xf2\xf1\xf9CN\xee\x9eqzr\xca\ +\xc1\xfc\x00\x11\xa1\xa9\x1b\xd6uMS\xd7\xb8\xb6\xc5\xbb\x16k-\xc6Y\xac1\x18c\ +QUT\x15\x11%\xa5\xc4\xb3\xa7\xbf\xd1\xf9\x96\xaf\xbf\xfb\x81\xd9\xec\xb04BD\ +\x07\xdd\x01"\x92\x05U\xea\xb7\\\xfc\x81H\xe4\xde\xd99\xe7\x0f>\xe1\xd1\xe3\ +\xcf8??\xa7\xef\x07\xae\xaf\xff$\x84\x01\xd5\x16U\xc5\x18\xc5ZK\xac\xaa\xd23\ +\x82\xaaA\x8d\xe6u\x04$\xbcy\xf5\x8c\xdf\x7f\x99\xf2\xcd\xf7?"\xa2\x80\x8c\r\ +g\x01RJ\xa5;`y}E\xe7k>>\x7f\xc8\xf9\x83O\xf8\xdb\x17\x7f\xe7\xe2\xe2\x82\x10\ +\x02\xcf\x9f?g\xb9\xbca\xbd^\xe1\xdb\x96\x10:\x86\xa1\xcf\xdfL\r\xceU\xa8Ha$\ +3c\xccf\xb5XW\xf1\x9f\x17O9<>\xe5\xe2\xc9W\xa5\x1bwJCiQ\xdf6\xacn\x17\x9c\ +\xdc=\xe3\xe4\xee\x19\x8f\x1e\x7f\xc6\xc5\xc5\x051&.//y\xfd\xfa5\xcb\xe5\x82\ +\xa6\xae\xf1\x9d\'\x0e\x03\tA\xd5"\x12\xcb\xc3\rj{\xd4\x18\xac\xb5\xa81\x18\ +\xeb\xb0\xd6\xe6\xd7\xaa\xbc|\xf1\x94\xbb\xf7\x1ept\xf4\x11i\xb7k\x00R\x84U\ +\xbd\xc4\x18e~0\xe7\xf4\xe4\x94\xf3\xf3sB\x08\\^^\xf2\xf2\xe5K\x16\x8bk\xea\ +\xba\xa6\x0f\x1d\xa9\x98\x81 \x88&\x12\x8ahD\x06AT1Ewj,\xd6d\x10\xa2\x86TJ\ +\xff\xf6\xd5%\xf3\xf911\xa6} \xfd\x10\xa8WKN\xcf\xee3\x9d\x1dp0?\xa0\xef\x07\ +\x9e?\x7f\xce\xeb\xd7\xaf3\x88\xf5\x9a\xd0\x07J\x15G\x8f\xcc\x80@0\x88U$\xc6\ +\xa2\x8d\xc2\x90\xc9\x806\xc2\x8di`q}E\xd3\xac\xa8\xaa\xe9\x0e\x90\x04M\xbd"\ +\xa6\x84\xb3\x15UU!"\\_\xff\xc9ry\xc3r\xb9\xa0\xae\xeb\x11\xc4\x9es\x8b\x94\ +\xf7\x12I\xb2X\x8d1\xa4\xa4\xa8\xa6\x11\x84)N\x1dcd\x18z\x82\xf7\xdc,\xdeqz\ +\xef|\x9f\x11\xdf\xd4\x18\xab\xd9\xac\x124uC\x08\x03\xeb\xf5\x8a\xa6\x94c\ +\x9b3\xec_\x8cn9\xc2C\x0b>c\x18\xbb\x07 \x0e\x03}\xe8\xf0mC]\xaf8\xd9\xd5H"\ +\xe1\xdb\x9a\x83\xc3\xc3\\\xa6\xbeg]\xd7\xa8\xb6\xf8\xb6\xc5w\x9e\x94> c\x07\ +\xc4\xf6\xc5h\xe1"\xa8\xe4\x98\xc8\x9dc\x80\xec\xc6]\xf0\xdci\x0eh\x9a51\xbd\ +\'V\xdf\xb5\xcc\xd2\x11\xc30\x10:OS\xd7\xa8*!t\xc4a\xc8)\xb5y\xea\x1e\x13\ +\xbbe\xda\x96KTQQD\x15\x01T-\xa9\x00\x99\xfa\x96\xc9d\xc6zuS\xd2}\xa7}\xfb\ +\x10H\xb1\xa7\xef\x03\xbe\xebpm\x8b1\x9a}\xa2\x84\x14\xa4m\x92\xfeU\xdao:I\ +\x04\x15\xc9\x825Y\x1b\xa6L\x08C\xdf\xe3\xaa\t\xd5\xa4B\xd4\xc0\x1e\x90$Y@}O\ +\x08\x81\xce\xfb\xd1\xb6\xb3YYDS\xc9\xee\xbf\x02\xb1_\x92|jq\xde\xdc\xc6\x1b\ +\xcaz\x17p\xae\xc2Z\x875n$w,\x8d\x08c\x94w\xbe\x1dm;\xcf%1\xfb\xc4\xf6k\x7fP\ +\x92m\xaanAh\x01a\xad\x1d\xebf\xac\xdd:\xaf\xb3\xef1B\xc2\xd8j\x8c\xf2\xb6k1\ +.\xd7\xd4\xb9\x02F#\x82)-\xba\xc3B*u\x92\x1d6TF6\xb2\xa3:\x10!\xc5T\xee\x95?\ +\xef\\\xf5\xbeF\x84\xc9d\x9a\xa7\xaf\xb6\xc17\r\xd6\x98\x1c`\x92}A\x06\xc9f\ +\xb5\x81![:d\xe7\xd4\x1dGU\xcd \xac\xcd\x8f\x19\x8c\x969$\x11\xe3\x80\xb5\ +\xd5\xc8\xeaX\x9a;\xb3C\x16\xef\xaeh\x9a5\xd5d\xba\x17\\j\xfb\xac\xfe\x18\ +\xc7\x81i_\x0f\xb9\x1c\x99\t3Z\xbas\x0e\xeb\x1c\xd6XbJ\x90|6\xb4\xbeg\x08=\ +\xce\xb9\xf7\x19\x81\xf9\xe11b\x0cmS\x8fC\xcd\x18\xe5\xc6\x94\xec\xd0\xec\ +\x98\xb2\xdb\xa2;\x9aP\xcd\xd9R@8W\xe1\xacCT\x89!\x14k\xe8\xe8:O\x08\x1d\xd5\ +t\xf6!#\xd5d\xca\xe9\xe9}\xde\xbcz\xb6\xbdia\xc4\x96a:\x9fy~W\xc9>\xb1\x05Pr\ +Ew@8\x87\xb1\x96\x18#\xfd\xd0\xd3u\x1e\xef\xf38\xb9\xf9\xfc\x07\x8c\x00\x9c\ +\xdd\x7f\xc8\xd5\xdb\x97\xacW7\xfb\xed\xb7\xc9\x8br\xbd\xa9\x8e\xec\x01\xd8\ +\n\xd3:\x87\xb3\x19\x04@\x1f\x02m\xd3\xd065M\xbd\xa2\xaeWY\xc0;\xc7N\xfb\n\ +\xf3\xa3c>}t\xc1\xaf?\xffDJ\xa9\x00\xb1y\x9e0v\x04\xb4IU)\x7f\xb7\x07\xc2\ +\xe6\xd8\x17\xd5\xccD\x08\xd4\xcd\x9a\xf5\xfa\x96\xd5\xed\x92\xd5\xed\x12\ +\x11\xc5X\xb7\xed\xbc\x11\xc8\x8e-<\xfe\xfc\x0bno\x17<{\xfa[v\xc4R\x9a<\xe4\ +\xd8Q+\x9b2\x98\xd1\xeeel\xa5\x98\x121\x04\xfa\xa1\xa7m\x1a\xd6\xeb[no\x16\ +\xdc\xdc,\xf0\xdec\xad\xdb\xe4\xe4\xc6F\xf6K\x03\xd9\x03\x9e|\xf9-\x9doy\xf3\ +\xea\x19\xd6U\xe3P#\xa2{\x9b\xa5\x8d\x85l\x00\xa4\x98\x18\x8cB\xf29\xdc:O\ +\xdb\xd4\xacn\x97\xdc\xdc,X\xafnP\x93\xc5\xbb\xc9\xae}F([\x9e\xe2\x90\xb3\ +\xd9\x9c\xaf\xbf\xfb\x81\xdf\x7f\x99\xf2\x9f\x17Os\xb7 \xa5\xff#q\x18\x186g\ +\xdf\xd3\xbb\xb0\xb3;\x84\x18#\xa1\xeb\xf0\xbe\xa5\xa9W\xacn\x97x\xefQ\xe3\ +\xf6JJ\xd9\xf5\x8d@F\x83,\x0e\x89\x08\xb3\xd9!\xdf|\xff#\x87\xc7\xa7\xbc|\ +\xf1\x94\xe5\xe2\x0fb\x1a\x18\x86\xbc\xab\xeb\x82g\xea[\xdcf\xcfl,\xa2\x19\ +\xec\xd0\x97\x0e)3\x87\x88\xe6r\x94$F\xb4L\xf1\xef\x895\xed\xb0\xb1]\xb3?\\<\ +\xf9\x8a\xbb\xf7\x1e\xf0\xf6\xd5%\x8b\xeb+\x82\xcf\x0f\xb8\xd3\x1c0\x99\xcc\ +\xa8&9\xc0T\r\x88\x10\xe3\xc0\x10zB\xe8\xca\x00\xed0\xa3&v\xccoS\x93}\x8d$RL\ +\xa4\x14I)\xe61?\xc5QMGG\x1f1\x9f\x1f\xd34+n\x16\xef\xa8\xeb\x15M\xb3\xcem\ +\xae\x06k\x1c\xc6\xd9\x92\xaa\xd9?\xaa\xe9l\x1c\x862\xd3\xa3\xa0v%\xb9\xef#\ +\x9b\x816\xdb\xef\x80\xe8\x80\x0eJ\x12Hq \xc5H\x8c\x89\xaa\x9arz\xef\x9c\x93\ +\x18\x89)\xe6\x9b\xa4\xf2\x0f\x8a\x94\xc6\x9b\xbe\xbfJ\xe9\x8eq\xbc-L\xa4\ +\x94 \xee\x8d\xe1\xff\xfb\xe3\xbfy1\xf7\xfe\xbevR\x90\x00\x00\x00\x00IEND\ +\xaeB`\x82' + +def get001Bitmap(): + return wxBitmapFromImage(get001Image()) + +def get001Image(): + stream = cStringIO.StringIO(get001Data()) + return wxImageFromStream(stream) + +index.append('001') +catalog['001'] = ImageClass() +catalog['001'].getData = get001Data +catalog['001'].getImage = get001Image +catalog['001'].getBitmap = get001Bitmap + + +#---------------------------------------------------------------------- +def get002Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\x9fIDATx\x9c\xcd\x98Ko\x1b\xc7\x12\x85\xbf~\rI\x89\x8c"?d\xc9Il\xc4N\x10{\ +\x11#\x88\xb3\xcc\xcd_\xbe\x7f\xe0\xae\xee6\xc8\xd2\x80\xb3q\x00\xc9q\x04\ +\xdb\x12\xc5\xd7L\xcf\xa3\xbb\xb2\xe8\xe6p\xa8\xf8\x07\x84\xc0L\x13$f\xe6T\ +\xd59\xa7\xaaG\x01\xc2\xbf\xe0c\x01^\xbc\xfc\x0fE1\xc2\xb9\x02c-F\x1b\x946(\ +\xa5\x10\x11\xf6\xb0\xcav\x91\xdd\x0f\xa2\x06\x7f*>\xf9Q\xfb_%\x9fE\x84\xff\ +\xff\xef\xbf\tHQ\x8c\x18\x8f\x0f(F\xe3\x1e\x8c\xde\x02A@\x04\x89\x10BK\xed7\ +\xd4\xbe\xa4\xae+\xda\xa6\xa6k\x1bB\x08\x08\x821\x0e7\x1a3\x99L9\x9c\x1eQ\ +\x8c\xc6\xe9\xc1J\r@\xa8\x04W\x81D!J\xd8e\xc4\xb9\x82b4f<\x9e\xe0Fc\xac-0Zo\ +\xa1\xd3\xd4\x15\x95_RU+\x140\x1a9&\xe3\x02A\x11\xba\x8e\xaek\xe9\xda\x96\ +\xba\xf1\xd4~\xc3j\xfe\x11\x94\xe6\xe8\xf8\x84{\x0f\x1e2\x9d\x1d\xed`\xa8-\ +\x1c\x85H$\xc6\xb8\x03b\xac\xc5\xb9\x027\x1aS\x149+\xc6\x00\x8a\xf5\xf2\n_-(\ +\n\xcbg\xb3S\\Q\xa0\xb5\x05\x84\x10:\xba\xae\xa3ik\xda\xba\xa1nj|UR\x96\x1b\ +\xca\xcd\x8a\x8f\xef/\xb8\xfa\xf0\x8e\x87_>\xe1\xd1\xd7\xcfP:\x01@%@"\x91\ +\xd0\r2b\xb4\xc1X\x8b\xb5E\x02\xe4\n\xa2\x08\xe5\xea\x1a\x895\'\xf7\x1fp8\ +\x9d1\x99L\x18\x8d\xc6 B\x17:\x9a\xa6\xa1\xaek\x9a\xba\xc6\xd7\x15\x8d\xf7T9\ +\x98\xa2(\xb0\xd6\xb2\\.x\xfd\xeaWV\xeb\x1b\xbe{\xfe#\x93\x83i\x02\x82\x02\ +\x11\x94\x1e\x00Q\xda\xa0\xb5\xc1h\x8d1\x86(B\xb5\xbe\xa6pp|\xf2\x15w\xee\ +\xde\xe3\xce\x9dc\xa6\x87S\x14\x8a\xd2W\x94\x9b\x92\xb2,\xf1\xbe\xc2;\x9f\ +\x03q\x89\xec\xd6a\xacA)\rJ\x03\x91\xf37\xafi\xbc\xe7\xc5\xcb\x9f98\x98e!Dt\ +\xd0\x03 J%B\xe5\xfa\x95\xab\x04\xe2\xe4\xe4\x8c\xb3\xb3/x\xf4\xf81\xa7\xa7\ +\xa7\x84.p}}E\x1b\x02Z{\xb4I\xc0\x9d\xb3\x88\x8czbj\xad1F\xa7L\x1b\x83V\x1a\ +\xd0\xbc\xbf<\xe7\xf7W\xbf\xf1\xc3O\xbf$\x90\xa8^p\x16@D\xb2:`\xbd\xbcBb\xcd\ +\xf1\xc9W\x9c\x9d}\xc1\xb3\xe7\xcfy\xfa\xf4\x1b\xda\xb6\xe1\xfc\xfc\x9c\xc5r\ +\xc9f\xbd\xc6{O\xdb4t]G\x8c\x82\xd6\x86\xa2(2\x08\x8b6\x16c,\xc6\x18\x8c\xb1\ +\xd8\xcc\xc3\xcb?\xdf\xf0\xe6\xe8\x98\'\xdf~\x9f\xd58(\rY\xa2M]\xe1\xab\x05\ +\'\xf7\x1fp\xe7\xee=\x1e=~\xcc\xd3\xa7\xdf \x12\xb9\xb8x\xcb\xe5\xe5%\x8b\ +\x9b\x1b\xca\xb2\xa4njb\x08\xa0T\x8aZ\xebt\xe4\x07\x1bc\xb06\x83\xb1\x0e\xeb\ +\xd2a\x8c\xe1\xaf\xb7\x7fp\xf7\xfe\x19\xb3\xd9\xe7\xc8P5\x00\x12\xa1\xf2K\ +\x8a\xc2r8\x9dq\xe7\xce1\xa7\xa7\xa7\xb4m\xc3\xc5\xc5[\xde\xbd\xfb\x93\x9b\ +\xf9\x9c\xb2\xdc\xd0\xb6m\xb23\xa5\xd0(\xc4(\x10P:\xa2\x82N|3\x99w\xc6f\xfeX\ +\xb4N\xe5\x98_\x7f\xe0\xfd\xe5\x05\x87\x87G\xc4(\xfb@Bh\xa9\xaa\x15\x9f\xcdN\ +\x99L&L\x0f\xa7\x84.p~~\xce\xe5\xe5%7\xf39\x9brC\xd7\xb6\x88\x0c\xcdI\xd2\ +\xaa@\xabd\x82:jb\xceN\xcaJ\x02\xa4\xb4\x06\x81\x18\x02\xcb\xf9\x15U\xb5\xa6\ +(\xc6\x03 \x02\xb5\xdf\xa0\x00W\x14\x8cFc\x14\x8a\xeb\xeb+\x16\xcbe.G\x06\ +\xb1\xf3hP\x03\xa7\xccg\x85\x06\x03Z\x0c\xa2c&l\xe2\xcc\xb6et]G\xddxV\x8b9\ +\xc7\xf7\x1e\xecg\xa4\xf6%\xa3\x91Kf%B\xe9+\xda\x10\xd8\xac\xd7\x94e\x99\xca\ +!\x03\x100\xc8\xcc\xee\x8c\xca\x86\x05\x80\xc6\x08hcPZ\xa3H\xd9h\x9b\x06\xef\ +7x\xbfF\xe2\xfd\x81j\x10\xea\xbab2.\x80dV\xe5\xa6Dk\x8f\xf7\x9e\xba\xa9wmO\ +\xf6\x96\xfd\x16\xb7\x05\x90\xed@\xab\xd4&\x8c\xa4\xf2(\x05!\x04\x9a\xa6\xe6\ +\xe0`\xc6j\xbd"\xca-\xb2\xb6M\x9dzGv\xcc\xb2,\xd1F\xd36M\xaf\x8ed\xcf\xb731\ +\xc0\xd1\xe3QYE\xa6\xf7\xa8\xd42 t\x1d~<a<\x99\xb0\\-rw\x1f\xc8\xb7k\x9b\xdc\ +\xc0:\xea\xba\xc6\xfb\nc\x0c]\xd7\xed\xd4\x91\x89\xf9)\x10\xdb,\xa5\x07\xeb|\ +\xa8\xc4\x0f\xadrY\x15]\x17\x18\x8d*\x8ab\x8c\xd1\xa6\x8f*\x93U\x11B\xa0\xeb\ +Z\x9a6\xf7\x0e\xe7q\xce\x12\xa3`\x8cA\x8c\x1a\x10\xf3v*\xf6K2\xcc\x821&q\x84\ +\xf4[\xeb\x1a\x9cs8\xe7\xb0\xd6\xf6%\xde\xf9\x08B\xd7\xb6\xb4u\x83\xaf+\x8cM\ +\xb6\xadu2\xab\xed\xfc\xf3)(\x9f\x02\xd1\x9b\x9b5X\xe3\xfa\xd9\xc6:\x87\xb1.\ +\xff\xe7ne$\x0f5u\x93\x88\xd9x\x8f\xb5\x0e\xa0\xb7m\xa5#Z\x19\x86\xea\xe8\ +\x05\xf4\t\x10\xdblX\x93"WJ\x11%\xc9Y\xebt\xad\xb5\xc5m\x8e(\xdchL\xed7\xf8\ +\xaa\xa4\x1a\x8d1\xf9\xe2md*\xa4\x9a+\xf4@\x9e\xec\x01\xd8\x96c\x07\xc4b\x9d\ +\xed\x83\xd2!\xf5\x15\x89B\x8c1e\xe4vi&\x93)\xab\xf9G\xcar\x93\x88d]\xdf\xc0\ +\x12\xe1\x0c:&\xb3\xea\xbd\xa2\'\xe6\xa0\x1cZ\xe7q\xc0\xe1l\xe6\x82\xb1\xc4\ +\x1cy\x94H\xd7u\xb4]\x8b6\xf6vF\xe0pz\x04JSnV\x14E\x81\xb1\x06ct\xee\xa2)\ +\xcdQk\xb4\x18\x14;\x89n\x81\x0c\xcba\xac\xa3p\x05\xaeHC\x96R\x8a\xd0\xb6\ +\x84\xd0\xd16\rM\x93\x04al\xf1\xcf\x8c\x14\xa31G\xc7\'||\x7f\x91k\xaa{{\xb6y\ +\x98\xd6&\xd96h\xb4\xda\xf9\xc4V\x19\xdbr8\xebpE\x91\x022\x96\x18c\xf2\xa7l\ +\x0bUU\x12%\xdd\xff\x1f\x19\x01\xb8\xf7\xe0!W\x1f\xde\xb1\\.@\r"\xcc\xe5\xb1\ +y\xaba\xb6}&\xfb\x84\x19\xa8\xc3:\x9b\xe5\x99@\x00\xb4mKUU\x94\xd5\x86r\xb3f\ +\xbdZ\xa2\xb4\xd9S^\x0fD)\xc5tv\xc4\xc3/\x9f\xf0\xfa\xd5\xaf@D+\xdd\xcf\x13f\ +\xd0E\xb51\x18\xd9\x92Y\xa5.\x9b\xd5am\xe2\x84R\x8a\x18c\x02QnX\xafV\xac\x96\ +\x0b\x96\xcb\x1bB\x04m,\xbb\xa9~\x0bd`\x0b\x8f\xbe~\xc6j}\xc3\xf9\x9b\xd7\ +\x80N7\xcf\xe6\xd3w\xd1\x01\x1fD\xe8\xcdj\xbb\x7f\x89"=\'\xaa\xaab\xbdZ\xb1\ +\\\xccY\xdc\xccY\xaf7\xa0\xccv*\xed\xdb\xc5^i@\xa1\xb4\xe2\xbb\xe7?\xd2x\xcf\ +\xfb\xcbs\x9c+\xb0\xcee/\xd9J\x98>\x92\xadz\x04!J\xec%\xba\xe5DYmX-\x17,n\ +\xe6\xcco\xe6D\x92\xb2\xd2\rng\x84mTi\x9d\x1cLy\xf1\xf2g~\x7f\xf5\x1b\x97\ +\x7f\xbe\xe9\xf78i\xa2\x14b\x08\x84\x10ro\n\xb4\xaeI\x8e\x99\xeb\x1e%\xe6V_Q\ +n\xd6,\x977\xac\xd7\x9b\x0cb\xa7\xba\xadO\xf7@v#\x86\xea=\xe2\xe0`\xc6\x0f?\ +\xfd\xc2\x9b\xa3c\xfez\xfb\x07\xf3\xeb\x0f\xc4\x10\x92\x07d\t\xfa\xf1\x84\ +\xd1\xa8\xc2mm[+$\xa6\xc1\xa7ij\xaa\xaad\xbdZ\x12"\xa0\x92\xd1\xa5\x92\xe8<\ +\xc5\xdf"\xab\x0c\xb2\xb1[\x93Y=\xf9\xf6{\xee\xde?\xe3\xfd\xe5\x05\xcb\xf9\ +\x15u\xe3\xf1~\xc3\xc1\xc1\x8c\xf1d\x92w\x86.76\x12A\xbb\x96\xa6\xae\x89\xa2\ +\xd3\x9e\xc9\xd8[\xfdH\xef\xf6\xc3\xfb\x1c\x11$\n"\x11\x91\x98\xc6|\x89=\x9b\ +f\xb3\xcf9<<\xa2\xaa\xd6\xac\x16s\xbc_\xb3Z\xafX\xae\x16\x18\x9d\xe7R\xeb\ +\xd2\x9e\xd9\xbad\x82\xb6\xe8K\x95g\xca\x9c\xfb\xfd\xd7\x02{>"\x92v\xe51\xa6\ +\xbd\xa8\xd2\x01\x1d4\xa2@b@b$F\xa1(\xc6\x1c\xdf{\x80\xc4\xfbD\x89\xe9&\x92_\ +P\x88\xf47\xbd\xbd\xaa\xac\x0e\xa5\xd8\x9b\xf4D\x04bO\x8a\x7f\xc7\x8b\x9a\ +\xbf\x01\xfc\t\xfa\\\xad\xe0v?\x00\x00\x00\x00IEND\xaeB`\x82' + +def get002Bitmap(): + return wxBitmapFromImage(get002Image()) + +def get002Image(): + stream = cStringIO.StringIO(get002Data()) + return wxImageFromStream(stream) + +index.append('002') +catalog['002'] = ImageClass() +catalog['002'].getData = get002Data +catalog['002'].getImage = get002Image +catalog['002'].getBitmap = get002Bitmap + + +#---------------------------------------------------------------------- +def get003Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xabIDATx\x9c\xcd\x98\xddn\xdb\xc6\x16\x85\xbf=3$%YB\x0c9i\x1d\xb7hR$h\x91\ +\x83\xa2(\xda^\xf6\xf4\x95\xcf\x0b\x9c\xabs[\xf42\x17)\n\xa4H\x9c6\xfeQD\xc9\ +\xe2\xffp\xe6\\\xccP\xa2\xdc<@)P\xb4i\x8b\xb3\xb8\xd7\xdakmJ\x00\xcf?`3\x00\ +\xdf\xfe\xf0o\xd24#IR\xb41h\xa5\x11\xa5\x11\x11\xbc\xf7\x1ca\xf5\xc3\xc1\x1f\ +Nx\x19\xfdQ\xf8\xe8&\xc7?\xfa\xf8\xee\xbd\xe7\x7f\xff\xfdO\x00\x92\xa6\x19\ +\x93\xc9\x8c4\x9b\xec\xc1\xa8\x01\x08\x1e\xbc\xc7;\xe8\xfb\x8e\xb6)\xe9\xda\ +\x8a\xb6\xa9\xe9\xba\x06k\x1b\x9cu\xf4\xde\xa3\x95!I\'d\xd3\x19\xb3\xf9)i\ +\x9a\x85\x85EF $\xc0\x15\xf0\xce\xe3|\x7f\xa8H\x92\xa4\xa4\xd9\x84\xc9dJ\x92\ +M0&E+5@\xa7\xebj\x9aj\x87mv\x18\x05\xd9\xc9\x04\x99O\xc1\x83\xed{\xac\xed\ +\xe8\xda\x96\xa6\xa9\xa9\xeb\x8a\xd5\xd5\x8a\x9b\xabK\x1e\x9c>d\xf9\xe8\x82\ +\xf9\xe2\xc1\x01\x86\x0cp\x04\xef\x1d\xce\xb9\x03\x10m\x0cI\x92\x92d\x13\xd2\ +4VEk@(\x8b5}[p2K8[^\x90&\tZ\x1b<\x1eg{:\xdb\xd1\xb6-m\xdbR\xd7\x15UUR\x16\ +\x05Eq\xc7\xea\xe6\x1d\xb7\xd7\x7f\xf2\xf8\xf3g|\xf1\xf4kD\x05\x00H\x00\xe4\ +\xbd\xa3\xb7\xa3\x8ah\xa5\xd1\xc6`L\x1a\x00%)\x1eO[m\xc8t\xcf\xa3\xc7\xe7\ +\xcc\x17\x0bf\xd3\x19i\x16\xcam\xad\xa5mZ\xda\xb6\xa1nj\x9a\xaa\xa6\xaaK\xea\ +r\xcad2%\xcdR\xb46l79\xbf\xbd\xfc\x85\xdd\xdd\x9a\xaf^|\xcft6\x0f@\x10\xf0\ +\x1eQ# \xa24Ji\xb4Rh\xad\xf1xl\xbde61\x9c-?\xe5\xec\xe1#\xce\x96KN\xe6\xe1"U\ +UQ\x16;\xca\xb2\xa2\xae+\x92:\xc5\x98\x04\x93\x18\x8cI\xd0\x89Ak\x8dR\n\x11\ +\xc19\xc7\xdb\xd7\xafh\xea\x9ao\x7f\xf8\x89\xd9l\x11\x1b\xc1\xa1z5\x02"\x12\ +\x04\x15\xf9k\xab\r\xb3\x89\xe1\xfc\xfc1\x17\x17\x9f\xf1\xe4\xc9S\xce\xcf\ +\xcf\xe9\xfb\x9e\xd5\x87\x15\xbd\xed\xa9uXLk\x8d1\x86,\xcd\x82\xa0DP\xf1\x86\ +\xb4Rh\x15\x00)%\xdc^\xbf\xe5\xd5\xcb_\xf9\xee\xc7\x9f\x11Q\x80\xec\x1b\xce\ +\x00x\xefcw@Y\xac\xc9t\xcf\xd9\xf2S..>\xe3\xc5\x8b\x7f\xf1\xec\xf9s\xba\xb6\ +\xe5\xcd\x9b7l7[v\xc5\x8e\xba\xaah\xdb\x16k-\xde{\x94\xd6\xa4i\x86\x12\x851\ +\x06c\x0cZ\'\xc1\x0e\x8c!1\tI\x9aq\xfd\xd7\x1f\xbc\xfe}\xc9\x97\xcf\xbf\x89\ +\xdd8\xa2\x86\xd8\xa2]W\xd3\xb7\x05\x8f\x1e\x9fs\xf6\xf0\x11O\x9e<\xe5\xd9\ +\xf3\xe7x\xe7\xb8\xbc\xbc\xe4\xfd\xd5{\xf2uNY\x164M\x83s="\x82\xd6\x06\xa5\\\ +\xac\x90\xc1\xd8 \xe8\x01\x901\tI\x92b\x92\x04\xad5\xef\xdf\xbdf\xf9\xf0\x9c\ +\xc5\xe2\x14?\xee\x1a\x00\xef\xa0\xa9v\x9c\xcc\x12\xe6\x8b\x05g\xcb%\xe7\xe7\ +\xe7tm\xcb\xe5\xe5%\xef\xde\xbdc\x9d\xaf)\x8b\x82\xaek\xa3\x17(\xc0\xa35x\ +\xafP\xca#\x91\x1a\x15i\xd3\x11L\x92$Q3p{{\xc3\xed\xd5%\'\'\x0fp\xce\x1f\x03\ +\xe9\xfb\x0e\xdb\xec8[^0\x9b\xce8\x99\xcf\xe9\xfb\x9e7o\xde\xf0\xfe\xea=\xeb\ +|M\xb1\xdbE*\xa2\xc1\x8c\x8d3\xeal\x10\xe7X?Z\x07zD\x14x\xe8\xfb\x9e\xedvEU\ +\xefH\x93\xc9\x08\x88\x87\xb6)1\n\xd2$\t-*\xc2\xea\xc3\x8a\xedf\x1b\xe8(\n\ +\xac\xb5q\xd1`\xd122\xec\x11"\xb4(<>tb\xa4K\xeb\x00\xc4{\x8f\xb5\x1dM]\xb3\ +\xdb\xe6\x9c.?9\xaeH\xd7Vd\'\x13\xb4\x0e\xa7\xaa\xaa\xa2\xb7=\xbbbGYF:|4\xa2\ +AV\x03\x80\xc1\xc2C\xd3\x1c:P\x85%\x0e\x91\x11\xaa\xd1\xb6\reY\xd2\xd4\xc5\ +\xb1F<\x9e\xb6\xa9\x91\xf94x\x88\xb5\x94\xc5\x8eZ\x1b\xea\xaa\xa2i\x9a\xb8\ +\xa4\x0fa5 \x19\x83\xe0\x00`\xa0H\x89\n\x15\xf2\xa1\xd5E\xc0\xda\x9e\xb6\xa9\ +\x99\xcf\x17\xac\xf3\x1c\xe7\xef\x89\xb5\xeb\x1a\xf0\xe0lO\xdb\xb4\x94e\x85\ +\xd6\x9a\xb6mcw\xa8\x11\x11\x1f\x01\xb1\x7f\x0bI\xa2$\x08V)AP8\x13\x96\xb2\ +\xd6\xd2\xd43\xa6\xb3\x19y\xbe\x8e\xe9>j_k\x1bl?dGC]\x07 \xd6\xda\x98\x9e~\ +\xbc\xe4\x11\x88\xf1&"\x88R\xd1\xc4Thm\x91\xfd\x80\xd0[K6\x99\x90e\x13\x8c1p\ +\x04\xc4\x0b\xce:l\x0c\xb0\xba\xa9\xa3m\x1b\xbc\xf7Ql\xc3R\xfeo dH\xd5Q\xe7\ +\x88\xc8>2\x02-\xe1\\\xd2u1\xcfB$\x0c\xb7wh_\xef\xe9b\x8a6U\x8d1\tY\x9a\xc5\ +\xf2:\xbcWGs\xc5\xa86\x07\x10\xf1\xa5DPJ\xa3\xb4\xc1h\x8dI\x12 \x0cY\x07\xd7\ +\r;\xf7\xa9\xd1\xca\xec\xe7\x89\xaa.1\x89\x01<i\x9a\xc5\x00\xf3\x07 ~\xd4\ +\x19\x8c@\x8ch\xd1Z\xefA\x18c\xf6!7\x84!\x02Z\xa7\xf75"$\xe9d?O\xd4\xe5\x14c\ +\x92\x10`\xa2\xa2\x07\x0c\xc18\xd00\xd2\xc4\x00$\x02\xf8\x98\xab\x82`m\x0f\ +\x08\xce{\\\xdf#zO\xc8\x81\x9al:cu\xb5\xa2,\n&\x93):1(\x15\x03\xcc\x06{v\xce\ +\xa1E\xfdm\xf1\xd0\xaa\x07k7\xc6`\x92\x84$\x89\x19\x13\xb5&\x02\xce9l\xd7\ +\xd1\xd9\x0eQ\xe6~E`6?\xe5\xe6\xea\x92\xa2\xb8\x8bC\xcd\xb1E\x0fw\xe9\xf1{\ +\xafP\xa2\xf63\xc7\xc1E\x03\x1di\x9a\x86\x81<MQ"t]\x17\x86\xa9\xb6\xa1m\x1a\ +\xaa\xaaF\xd4G*\x92\xa6\x19\x0fN\x1f\xb2\xbay\x17\xd3TE\xd5\'\x11\x8c\x8e\ +\xfcjP\x8c|"\xfc\xdf L\x1d\xa9\x18@\x18\xadq.\x98d\xd34\xd4UEY\x15\xd8\xde\ +\xef-\xff\x08\x08\xc0\xf2\xd1\x05\xb7\xd7\x7f\xb2\xdd\xe4\xb1\xfd\x0e<\xef\ +\x8fZ\x87\x8f\x89\xa0\x94D\xf5\x1f\x0b3I\xd2=\x08\x80\xaek\xc3TW\x86Y6\xcf78\ +\xa7b\x04\xdc\xab\x88\x880_<\xe0\xf1\xe7\xcf\xf8\xed\xe5/8\xe7\xc2\xdd\xc6yb\ +\xdcr\xda\x18\xb47\x08\n%\xb2\xa7c\x10\xa61\xc1\xc4\x9c\xf3t]KY\x16\xdc\xddm\ +\xd8nr6yN\xd3\xf5\xa0\xc2p>4\xa292\x04\xe0\x8b\xa7_\xb3\xbb[\xf3\xf6\xf5+\ +\x94\x920YE\x03\xd2\x83^\xa2\x1e\x9c1q.\x91xQ\xd9\xfb\xc5\xa0\x89\xaa\xaa\ +\xb8\xbb\xdb\x90\xe7k\xd6\xeb\x15\x1f\xd6[\\/\xc4Iq\xb0\x91cj@\x10%|\xf5\xe2\ +{\x9a\xba\xe6\xf6\xfa-I\x9aa\xf6C\xcd\xb0\x1f\xccU"\x10\xef=\xde;\xac\xedc\ +\xb8\x05M\x94e\xc1v\x93\xb3^\xaf\xb8\xbeY\xd1\xf6\x1eQjp\xc1{\x15\xe1`\xd3\ +\x820\x9d\xcd\xf9\xf6\x87\x9fx\xf5\xf2W\xae\xff\xfac\x9f\x9ca\xa2\xf4\xf4}\ +\x8f\xb5=\xd6ZzkI\xban\xa4\x9f0\x18\xb5m\x10fQ\xdc\xb1\xc9s>\xac\xb7\x01\x84\ +\xa8=x\xe2S\xdf\x1e\xc8!\xd2d\x18(\x98\xcd\x16|\xf7\xe3\xcf\xbc\xfe}\xc9\xfb\ +w\xaf\xb9\xbd\xbd\x89\x00\xba\xd8\x825M=#\x9bL\xf6^\xa1\x94\xc2y\x8f\xed:\ +\xda\xa6\xa1\xac\n\xf2|C\xd3\xf5\x91\x0e\x15SZ\xed\xd3\xfcH\xac~T\x8d\xc3Q\ +\x10Q|\xf9\xfc\x1b\x96\x0f\xcf\xb9\xbd\xbad\xbb]\xd1\xd45eY2\x9f/\x98\xcefd\ +\xd9$\xe8G\x1b\x10p1\xc1\xab\xaa\xc6\xf6>v\x87\x8e\x9a8\\w\x1c\x17#j<\xde\ +\x05\x8e\xbdwa\xcc\xf7n\xaf\xa6\xc5\xe2\x94\x93\x93\x07T\xf5\x8e\xdd6\xa7\ +\xa9\x0b\xd6yN\x9e\xaf\xa3\x8b\x0e\x1d\x95"\xda *\xee2\xb4\xe8\xe1\x99\xe9\ +\xfe\xd7\x02G>\xe2}x*w.<\x8b\x8a\xeaQ\xbd\xc2\x0bx\xd7\xe3\x9d\xc39O\x9aL8]~\ +\x12~\xf7.\\\xc4\xc71\xc9\xfb\xfdE\xef\x1f%v\xc7~\xcc\xe4\xa07\xdc^\x14\xff\ +\x8c/j\xfe\x0f\xd8\x1d\x10\x98\x84\xbe&\x9c\x00\x00\x00\x00IEND\xaeB`\x82' + +def get003Bitmap(): + return wxBitmapFromImage(get003Image()) + +def get003Image(): + stream = cStringIO.StringIO(get003Data()) + return wxImageFromStream(stream) + +index.append('003') +catalog['003'] = ImageClass() +catalog['003'].getData = get003Data +catalog['003'].getImage = get003Image +catalog['003'].getBitmap = get003Bitmap + + +#---------------------------------------------------------------------- +def get004Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +\x03IDATx\x9c\xcd\x98[\x8f\xe3D\x1a\x86\x9f:\xdaI:\xdd\xcdL\x0f\x9a\xe9\xa5%\ +\xa6\x01!\xa4\x11\x08\xc1%\xcb_\xde?\xb0W{?w \xc4AB#\x98\x81>\xc49\xda.\xbb\ +\xec\xaa\xbd(\xc7I\xf7\x1e\xae)\xc9q+I\xbb\xde|\xdf{\xf8l\x01D\xfe\x02K\x03|\ +\xfe\xd5\xdf\xb16\xc3\x18\x8b\xd2\x1a%\x15B*\x84\x10\xc4\x18y\x805\xeeO\xf1\ +\xf0F\x14G\x1f\n\xfe\xeb\x12\x0f\xff\x8c\xc3k\x8c\x91\x7f\xfd\xf3\x1f\t\x88\ +\xb5\x19y>\xc5f\xf9\x08F\xee\x81\x10!Fb\x80\x10<\xbeut\xbe\xa6k\x1b\xbcw\xf4\ +\xbe\xa5\xef{B\x00\xa4\xc2\x98\x0c\x9bO\x99\xce\xce06K\x1b\x0bq\x04B$\xb8\ +\x02b\x88\x84\xd8\x1f*b\x8c\xc5f9y>\xc1d9Z[\x94\x94{\xe8t\xbe\xc1\xb7%\xa1+\ +\x99X\x81\x99\xce\x10bN\x04\xfa\xbe\xa3m=m\xdb\xd08G]W\xac\xee\x0b\x167\xbf3\ +?\xbf\xe0\xc9\xc5\x0bf\xf3\xb3\x03\x0c\xb1\x87#\x881\x10B8\x00QZc\x8c\xc5d9\ +\xd6\x0eUQ\n\x10\xb4\xf5\nE\xcd\xc9i\xced\xfa\x84\xdc\xe6h\xa3\x00\x08}\xa4\ +\xf5\r\xdbmI\xdb68\xe7\xa8\xea\x8ai\xb9c\xbb\xdb\xb2Z\xbccq\xf7\x8e\xe7\x97\ +\xd7\\}\xf8)B&\x00\x88\x04(\xc6@\xdf\x1dUDI\x85\xd2\x1a\xadm\x02dl\xda\xa8\ +\xdd2\x9b\x08\xce\xcf?\xe0\xec\xf4\x94\xd9\xec\x84|2AJA\xe8{Z\xdf\xd26-o\xff\ +\xb8\xc5\xb9\x06\x9bU\x18\x9b\x93\xd9\x0cm,Z)\xd6\xeb\x15?\xff\xf0\x9a\xddv\ +\xc5\'\x9f}\xc9dz\x92\x80 F\x84<\x02"\xa4BJ\x85\x92r\xa8\x04\xd0\xed8;\xcdx\ +v\xf1\x01\xef\xbf\xff>\x17\x17\xcf8=\x9b\xa3\x95\xa2i\x1a\xaa\xaa\xc2\xd5%U\ +\xe5X\xac*\x10\x1a!$\x085\x9ce:#\xe8C\xe0\xb77?\xe2\\\xcd\xe7_}\xc3t:\x1f\ +\x84\x10\x90\xbd<\x02"D"\xd4\xd0\xbf\xd0n9;\xcd\xb8\xbc\xfc\x1bWWW\\_\xbf\ +\xe4\xf2\xc5%1\x066\x9b-\xab\xf5\x92\xbe\xef\xe8:\x8f\xb1\x01\xa9\x14\xdahB\ +\xc8\x06\x95\x1d\xae)\xa5@J\x89\x10\x82\xe2\xee-?}\xff\x9a/\xbe\xfev\x04\xb9\ +\x17\x9c\x06\x881\x0e\xea\x80\xb6^1\x9b\x08\x9e]|\xc0\xd5\xd5\x15\xaf^\xbd\ +\xe2\xa3\xeb\x97\xf4\xbd\xe7\xe6\xf6\x8e\xba.\xa9\xab\x8a\xc65x\xef\xe9:O\ +\x8c \xa5F\x9b\x986W\x1a\xa5\x14J+\xa4R(\xa5\xd1\xc6\x90\xd9\x8c\xbb\x9b7\ +\xfc\xfa\xcbw\xbc\xfc\xf8\xd5\xa0\xc6\xa3\xd60H\xb4\xf3\r\x8a\x9a\xf3\xf3\ +\xd4\x8e\xeb\xeb\x97|t\xfd\x92\x18#\xf7\xf7\x05\xcb\xe5\x92\xe5r\xc5n\xb7\ +\xc59G\xe7;\x04\x02\xa5\x14R\x08\x94\x92\xf4Z\'/R\n\xa5\x0cRi\x8c\xb6\x18\ +\x9ba\x8dEk\xc5\xed\xbb7<\xbdx\xce\xc9\xfc\x9cx\xac\x1a\x80\x18\xc0\xb7%\'\ +\xa79g\xa7\xa7\\\\<\xe3\xf2\xc5%}\xef\xb9\xbf/\xb8\xbf\xbf\xa7(\n\xb6\xdb\rM\ +\xd3\x10B@H\x81D"\xa5\x04)\x91! \x84D\n\x99\x04\xa0\x92\x08\x8c6\x18k\xd0*YB\ +\x8c\xb7\xdc\xdf\xbee:;#\x84\xf8\x10H\x08>\xf9\xc4\xf4\t\'\'\'\x9c\x9e\xcd\ +\x891ps{\xc7r\xb9\xa4(\n6\x9b5M\xd3\x8c\xc6\xb4\xb7\xc9\xd4\xef\x08R\xa1\x06\ +\x92J\xa5\x91J\xa3\xb5A\xeb\xd4\x1a\xad\x92I\x86>\xb0^/qn\x871\xf9\x11\x90\ +\x08\xbeuL\xac \xb79Y>A+\xc5f\xb3\xa5\xaeK\x96\xcb\xd5X\x89\xc3\xeeq4\xa8\ +\xe4\xc0\xc93\xf7\x04\x8d\x91\xd4*\xa5\x12g\xb4F\xa9D\xda\xbe\xefh\x1aG\xb9]\ +s\xfa\x9e}X\x91\xce\xd7\x98\xe9\x0cm\x14R\n\x9a\xa6a\xb5^RW\x15\xbb\xdd\xf6!\ +\x88q\xc5\xf1\xbd$\xb8!E\x84\x1c\xdeW(E\xaa\x88\x92(\x99\xc0v]K]W4MI\x0cO\ +\x8fTC\xa4k\x1b\x84\x98\x0f\x8e\xd9SUUB\xee\x92c\x86\x10\x06W<\x0e\xebC{\x88\ +\x1c\xec[\x08\x84\x90\x83%\x08bL\xca\x91R"\x88\xf4]\xc7\xc9I\x89\xbb/\x08\ +\xf1\x11Y\xbdwD\x92m{\xdf\xe2\xea\x92\xae\xf3I\xa2\xbeCH\xc1\x83]\x1f\xa7\ +\xac8\x00\x13"\x118\xf9\x87D\x08\x08:\x0c@\x03}\xd72\x9dN\x902\x8e\xbe3\xca7\ +\xa5hG\xeb\x1b\x9a\xa6\xa5\xaa\x1c\xc6\x06\xba\xce#H\xea\x18b\xe2\xff\xae\ +\xc4\x11\x99\x14%%Rk\xe4\x00P\x8aT\x91\xd05)`\x8d\x86\x07@\xa2\xa0\xef{:\xdf\ +\xd1\xb6-\xce\xd5\xd4.\xa7\x0f=1F\xb4\xd6C^\x1eWe\xbf1<9\x9f\x01"m$D22\xa9\ +\x06\xb5\xa4\xf9\x06\x04\xde\xb7\x94\xbb\rEh\xc7\xf9g\xdf\xe8#\xf9B\xd36\xb4\ +\x8d\xa3\xaak\xf2,\'\x84\x80\xd6z(\xb3\x1a<\xe0P\x95\xfd\xf9\xe9\xf9\xc9\xc8\ +\t)\xc5\xc1;L:\xb46@\xc4\xb9\x86BF\\\xb9\x1b\x00>\xae\xc8\xe0\x01\x8dK \xea\ +\xb2\xa4\xb2\x96H$\xcb2\x94R\xc4\x18\x06\x89\x8a\x11D\x1ax\xf6\xe4\x1crE\xa9\ +\xd1\xcc\xb46\x18c\xd1Z\x0f<\xec\x07\xf3K<\x93Z\x13\x1e\x02\x11\x18\x93QU%eY\ +\xb1\xdd\xed\xb0\xd6"\x04H)\xc7\xaa\x08!\xd9\x87\xf3\xff\x04\xa1\xf6 R[\x8cI\ +\xa6\x16br\xe2@$\x84\x98\xe6\x1016\xe4\xd0\x1a\x9bOY\xdd\x17\x94\xbb\r\xbb\ +\xe9\x04k\rR\xc9\xe1W\x99\x94\'R\r\xa6$\x8fZ!\x91R \xe4\xc1\xd6\x8d\xb1\x18k\ +\xb1\xc3Y+\x8d\xef:b\x08\xf4]G\xe7[\xbc\xf7D\xe4c\xd5\xc0tv\xc6\xe2\xe6w\xd6\ +\x9bM\x9a]\x87\xe02Z\x8f@\x94\xd6G1/Qj\xaf\x10\x85>\xaa\x84\xb1\x96\xccfdy\ +\x861\x86\x18\xa1\xef{\x9a\xd6\xe3\x9c\xa3v\x8e]Y\x11Q\xffY\x11c3\xe6\xe7\ +\x17\xac\x16\xef\xb0\xc6\x8c\xbf\xce\x1a\x83\x1e\x06j\xad\rA)\xb4&\x91R\xa9\ +\x91\x13z\xf8\\\x1b\x8d5v\x04!\xa5\xa2\xeb|\x1a\xa6\xca\x8a\xb2\xac(w;Z\x1f@\ +\xc8\xc7dM\xeb\xc9\xc5\x0b\x16w\xefX.\x8b$C%\xc7\xc02\xc6`\xb4Ak\x95\xfewpO\ +\xad5J\xe9\xa1r\x16cRE\xf6 B\x08\xd4\x95c\xbb\xdd\xb1\xd9\xae\xd9n6,\x8a%m\ +\xc7\x835\x02\x11B0\x9b\x9f\xf1\xfc\xf2\x9a\x9f\x7fxM\x08\x01)e\x02`m\x92\ +\xe3>EM\x87\x89z$\xaa\x1e\x142VEib\x84\xae\xf3\xd4\x95c\xb5^S\x14\x05E\xb1\ +\xa4X.(\xeb\xc4\x8f\xc3T\xbf\x07r\xe4\x96W\x1f~\xcan\xbb\xe2\xb77?\xa6M\x8e\ +\x80hm\xc6\x14U*UB\x073\x98Rz\r1\xe0\xbb.q\xa2i\xd8nw\x14E\x9ag\x16\xf7w\xdc\ +\xdc\x16\xb4>\x0cs\xed\xd8\x99\x87\xad\x01\x81\x90\x82O>\xfb\x12\xe7j\x8a\ +\xbb\xb7dY\x9a\xac\x94\x94\x88\xe1^\'\xc4H\x0c\xc3\x11\xd3\x11\xfa0\xf8\x84 \ +\x84@\xd3z\xaa\xb2b\xb3]S\x14K\x16\xf7w\xbc\xfd\xe3\x86\xca\xf5\x89\x1b\xa3\ +\xfc\x1f\xb7f?[ \x98LO\xf8\xfc\xabo\xf8\xe9\xfb\xd7\xdc\xdd\xbc\x19\'\xfb\ +\x10#}\x1fh\xbd\xa7m[fM\x8bs\x13\xb2,\x1b\xbcF\x11\x86tu\xb5\xa3\xac*\xb6\ +\x9b\r\xc5r\xc1\xcdm1\x82\x10G>\xf4\xc0\xe2\xf7y:\xa6\x9a\x10L\xa7s\xbe\xf8\ +\xfa[~\xfd\xe5;n\xdf\xbd\xe1\xf6\xf6O\xba\xae\xc3\xb7\x1e\xe7j\xaa\xb2f6\xdb\ +1\xc9\'\x98,\xc3(\rR\x10B\xa4\xf3-\xb5s\x94\xbb\x1d\x8bbIY\xfbQ%)\xa4\xf7\ +\xb7\x1a\x8f\xc8\x1a\x8f\xaaq8\'U\xbc\xfc\xf8\x15O/\x9es\x7f\xfb\x96\xd5j\ +\x89s\x8e]\xb9c>?e6\x9b\x92\xe7\xd3\xe1~Y\x01\xc91\xbd\xf7\xec\xca\x8a\xd6\ +\x07\xda\x0e"\xc3\xc6\xe2\xd1\xacr\xa0\xd6!kR\xbf\x031\x864\xe6\xc7\xc0\x9eM\ +\'\xf3s\xa6\xb33\x9c\xdbQn\xd74M\x89\xbb+X,\x16I\xae\xc6\xa2\xa4Fj\rB\'\xc7D\ +%.\x8c\x95\xde\xd7\xfe\xe1c\x81\x07\xce\x1ac\xba+\x0f!\xdd\x8b\n\xd9#{I\x14\ +\x10CO\x0c\x81\x10"\xc6\xe4\x9c\xbeg\x89\xe1)!\x86t\x918<\xa0\x88q\x0c\xb0\ +\xfd\xc5\x19]\xf8\x90\xda\xe3|\x17\x87\xef\x85\x91\x14\x7f\x8d\x075\xff\x06\ +\xd6\xc47q\xb1o)\xe8\x00\x00\x00\x00IEND\xaeB`\x82' + +def get004Bitmap(): + return wxBitmapFromImage(get004Image()) + +def get004Image(): + stream = cStringIO.StringIO(get004Data()) + return wxImageFromStream(stream) + +index.append('004') +catalog['004'] = ImageClass() +catalog['004'].getData = get004Data +catalog['004'].getImage = get004Image +catalog['004'].getBitmap = get004Bitmap + + +#---------------------------------------------------------------------- +def get005Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +\x92IDATx\x9c\xcd\x98[s\x1dG\x15\x85\xbf\xbd\xbb{\xe6\xdc$\xd9V\xe4$\xb6cc\ +\x8a\x90\x84\x82\x90TR\xc5\x0b\x81\'\x8aW\xfe)\x7f\x80\'\n\x9e \xf0\x90\x90\ +\x8b\xc1&\x89#\xcb\xbaKg\xce\xdc\xa7\xbby\xe89G\x92\xe1\x070U\xad9\xd7\xeeu\ +\xf6Z{\xaf\xbd%@\xe4\xff\xe0\xb2\x00\xef\x7f\xf4\tY\x96\xe3\\\x86\xb1\x16\ +\xa3\x06Q\x83\x88\x10c\xe4\x06\xd6\xb8\xbe\xc5\xab\x17\xa2\\{S\xf8\x9f\x97\ +\xdc|\x18\xc7\xbf1F\xfe\xf8\x87\xdf\' Y\x963\x99\xcc\xc8\xf2\xc9\x06\x8c\xae\ +\x81\x10!Fb\x80\x18\x07\x86\xbe\xc6\x0f-C\xdf2t-\x83\xef\xf1C\x8f\xf7\x11\ +\xd4b\xac#\xcb\xe7Lg\xdb\xb8,O\x07\x8b\\\x03!\t\xae@\x0c\x91\x10\xfdUD\x9c\ +\xcb\xc8\xf2\t\x93\xc9\x14\x97O\xb06\xc3\xa8\xae\xa1\x13\x86\x0e\xdfW\x84\ +\xa1f>7X\xbb\x9d6\x8f\xe0C\xa0\xef{\xba\xae\xa5\xa9\x1b\xca\xb2\xa08?\xe0\ +\xecx\x9f\xc5\xf6.\xb7w\xdf`\xbe\xb5s\x05C\xd6p\x84\x18\x03!\x84+ \xc6Z\x9c\ +\xcbp\xf9\x84,\x1b\xa3b\x0c \xf8\xbe@\xe8X\xec,\x98\xcd\xee\x92\xe79\xce9D\ +\x84\x10\x02\xc30\xd0u\x1dm[SU\r\xe5\xaa`\xb9\\r\xb9\xbc\xe0\xfc\xec%\xa7\ +\xc7/x\xfd\xdec\xdez\xf4\x0e\xa2\t\x00\x92\x00\xc5\x18\xf0\xc3\xb5\x88\x185\ +\x18k\xb16K\x80\\\x86\x08H(\xd9\xd9\xb2\xdc\xba\xf5\x90\xed\x9dm\x16\xf3\x05\ +\xb3\xd9t\x04\t\xc300\x0c\x1dM\xd3\xd2\xd45\xab\xb2\xa4(\x96,/\x97\xcc\xce\ +\xe7dY\xce\xe9\xc9\t\xcf\xbe\xfe;\xab\xe5\x05o\xbf\xf7!\xd3\xd9"\x01A FD\xaf\ +\x01\x115\xa8\x1a\x8c*\xc6\x18D\xc0Rs\xe7\xf6\x9c\xbd\xbd=\xee\xee\xed\xb1\ +\xfb\xdak\xec\xdc\xda!w\x19!z\xba\xae\xa3i\x1a\x9a\xa6\xa6\xaa*\xaa\xaab6\ +\x9b2\x9dN\x99N\xa6\xe4\x93\x9c,s\x18c\x18\xbcg\xff\xbb\'4u\xc5\xfb\x1f\x7f\ +\xc2l\xb65&B@\xbd^\x03"\x928_\xf3\x17J\xee\xdc\x9es\xff\xfe}\x1e<x\xc0\xa3G\ +\x8f\xb8\xf7\xe6\x1b\xb8\xcc\xd1\xb5\x1dU]Q\x96+T\x85\x18F\x9e\xd7I$\x82\xaa\ +`\x8c\xc1\x1a\x83\x88RV\x1d!D\xceN\x0f\xf8\xfa\x1f\x7f\xe5\x83\x8f\x7f\x8d\ +\x88\x02\xb2I8\x0b\x10c\x1c\xb3\x03|_\xb0\xb3e\xd9\xdb\xdb\xe3\xc1\x83\x07\ +\xbc\xfb\xee\xbb<~\xfc\x16\xaa\x96\xd5\xaa \x04\x8f\xf7I\x17}\xd7\xe3\xbd\'\ +\x86\x88\x88\xe0\x9c#\xc6\x88Q\x83\xb5\x16\x979\xf6\x0f\x97,\xb6\xef\xa0\xc6\ +\x92\xe59g\xc7\xdf\xf3\xef\x7f~\xc6\xe3\xb7\x7f6f\xe35j\x18S4\x0c\x1dB\xc7\ +\xad[\x0f\xd9\xdb\xdb\xe3\xe1\xc3\x87<zx\x1f\xe72\x96\xcb"Q\xd16,\x97KV\xab\ +\x92\xb6m\x18\x86\x81\x08Xk\x11\x15\xac\xb5\x0cn\xc0:\xcb\xe1\xc9\n4g\xbe\ +\xd8\xc19G\x96eXc9>\xfc\x8e\xdd\xbb\xf7X,v\x88\xd7\xb3\x06 \x06\xf0}\xc5bg\ +\xc1\xd6\xf6\x16\xbb\xbbw\xb8{w\x0f5\x96\xe5\xe5\x92\xaa\xaei\x9a\x86\xf3\ +\xb3s\x8a\xa2\xa0\xeb:\x06? \x92h@\x15\x83!\xf8\x801\x96\xba\x1d8>\xab\x99\ +\xce\xe6)\x11\\\x86\xb5\x16U\x05\x0e9=\xfa\x9e\xd9l\x9b\x10\xe2+@\xe2@\x18j\ +\xa6\xd3=\xe6\xb39\xf3\xc5\x02b`\xb9\\\xa6\xf4l\x1a\xce\xcf\xcfY\x16\x05m\ +\xdb&\xa1\x89\x12\x89\xe8\xa8\r\x00\x15\xc5\x87\xc8W\xcf\x8e\xc9\xf3\x1cc\r\ +\xc6X\xacuXc1F!z\xce\xcf/i\x9a\x12\xe7\xf2k@"\x0c}*V\xa9\xca\xe6\xa8(U\xdd0x\ +O\xd7\xb5,/\x97\xac\xca\x15m\xdb\xa6\xb4\x1bk\xb6\x88 \xaacT\x03"\xc2\x97O\ +\x0f\x19\x06\x8fu\x19j,jl\xb2\x0ec0F z\xba\xb6\xa1*.\xd8\xba\xbdw3"~h1f\x0bk\ +S\x8d\xe8\xba\x96\xd5\xaa \xcb\x1cm\xd3RV%]\xd7\x11c\xd8\x80XGa]\xc0E\x95\ +\xfd\xa3\x0b\xce.\n\xd4\xa4\xac0DL\xb0\x18\x93h1\n\xc2@\xd7T\xd4]uS#\x91\xc8\ +\xd0\xb7\x88l\x13#x\xef\xa9\x9b\x9a\xbc\xca\xe8ZC\xdb\xb5I\x13\x83G\xe5\x15\ +\x10\xa3\r\x00,W\r_=}\x99\xa2\x84n*i4\x11c\x0c\xaa\x8a*\x88x\x16[\xdb\xd4\'g\ +\x84\xf8\x8aX\x87\xaeM\xbe\x12\x06\xba\xb6\xa3\xad\x1b*\xe7PU\x82\xf7\xf4\ +\xc3\xb01\xc1+Z\xb8a\xcc\x9f?\xd9\'x\x9f\x9cD%\x19\xa7j\xfa^\x88\xa8(*\x11\ +\xc53\xcc\xe6\x18=\x1b\xdd\xfdZ\xfa\x0e\xbe\x1f\xf5\xd0\xd3\xf5-u[c\xabT\x0f\ +bLv\x9d\xc2\xbd\xfe\xa57A|\xf9\xf4%\xab\xaaF\x11D\x14\xd5\xf49;\x82\xc1\x90^\ +\x13\x90\xd83\xe4\x13\xf2\xcc\xc1\r Q\xf0C\xbfq\xd1\xbanh\xaa\x06k\xcchpc\ +\xe9\x8f)\n\xff\xd5q\x88p~Y\xa5H\xc8z)\xaa\x065i\x89(j<"\x11\x89\x19\x83\xcb\ +p\x99#\x8c[\xe8F\xac>&+o\x1a\xea\xaa\xa6\xacJ\xea\xba\xa6mZ\x86\xbe\xdf\x88\ +\n\xd8\xf0\xba\x06!\xc0/>x\xcc\xfd7v\xd3sUD\x15\xa3\x06\x1dS\xd79\x8b\xb3\ +\x16\xe7\x1c\xd6fX\x97z\x1e^\xa5\x06\xb54uC]7Tu\xc9\xb4\xcc\xb1\xc6\xa4\xa2K\ +L\xf5 \x981$W\xa9\xcb\x18\x81\xcc(?\xff\xc9[\xdc{\xfd6\x9f=9\x00H~\xe3,\xd6\ +\x8cZS\x0fxpI7\xaa\x8ex\xb3\xa0\t\xc6:\xaajEU\x96\xacV+\xb2,G\x8d\x01I\xdc\ +\x0ev\xd8(_HM\xd3\x86\x06\x95qc\xc3\xfd7\xef\xb0\xb7{\x8b\xbf}\xf1=M\xdbc\ +\x8dM\xbf^\x14\xef\x81`\x88*\xc4\xe0\t\x98M`7Y\x93\xe5s\x96g/(V\x05\x93\xe9\ +\x04\xe7\x1c\xc6(F\x15kSA\xb2\xc6\x8e\xbc+")\xfc\xaa\x8a\x8a\xa0\xc6\x8c\x9f\ +7L\xb7\x1d\xbf\xfd\xf5\xfb<{~\xc6\xd3o\x8f\xb1\xce\x8e\xfa\t\x88\x17\xba\xe0\ +\xf1\xbe\'"\xaff\rLg\xdb\x9c\x1d\xefS\x14\x97\xe4y\x9e\x0e\xd7\x11\x88K\xdc:\ +k\xb1\xd6BL\xcd\x9e\xaabL\x12\xa51)\xc3\xec\xa8\x83I\x9e\xf3\xe1O\x1f\xf3\ +\xc3\x1f\xdc\xe7\xcf\x9f>\xc5\x0f]\xf23<\xc1w\xacV\x15>\xe8\x7fG\xc4e9\x8b\ +\xed].\xce\x0e\xb0\xd6\x8d\x07$CK \xd2\xb2\xceacDT\xc6F\xcab\xad\x19)p\x1b\ +\x97\xcd\xf3\x9cI\x9e3\x9f\xcf\xf9\xddo>\xe0O\x7f\xf9\x8a\x83\x83\x15\xd1\ +\xb7\xb4ME\xd5\x0e\x9bN\xfe\x06\x10\x80\xdb\xbbopz\xfc\x82\xf3\xb3\xf3\r\xff\ +FM: \xcb\xc8\xf2,\x81\x1a\xfb\x0eDF\xeaR\xb4\\\x96\x91\xad\x97K\xddY\x8c\x11\ +\xef=?~t\x87\xae<\xe5\x9b\xd3\x92\x93\x933\xda6p\xbd\x10l\x80\x88\x08\xf3\ +\xad\x1d^\xbf\xf7\x98\xa7_\xfd\r\x1f<"2\x86:m\xee\x9c#s\xd9x\xe0\x15\x18U\ +\x1d{\xdeq\x19\x8b\x88\xe2C\xa0m;../9<:\xa4\xa9.\xa9\xab\x82\xa2l\xf1Q\xb8\ +\xea\xea\xd7@\xaeU\xa8\xb7\x1e\xbd\xc3jy\xc1\xfewOP\x91\x11DN\x9e\xe7\t\x84s\ +\xe8\xd8\x06Z\xe3\xb0\xd6\x10C\xaa\x901F\xc28^\xf4CO\xd7\xf5\x14E\xc1\xf1\ +\xc9\t\x07/\x0ex\xf1\xe2\x80\xe7\xfbGT\x8d\xdf\xb4\xa6\xa3VoR\xc3\xe8\x11o\ +\xbf\xf7!MSsr\xf2\x82|2!\xcb\xd2x\xa1f,\xd7\xe3L\x13b$\xc40\x1ae\xc0\r\x03F\ +\r\x11\xe8\xfb\x9e\xb2\xac\xb8\xb8\xb8\xe0\xe8\xe8\x88\xc3\xc3\x97<\xfbf\x9f\ +\x8b\xa2\xbdV\x8b^\x8d\x08\xe3\xc8#\xe9>\x9d-x\xff\xa3_\xf2\xe4\x8bO9>z\xbe\ +\x99qdL7\xef=}\xd7\xd3\xb6i\x94\x98N\xa7\x1b\xb0\x820xO]\xd7\xacV\x05\x17\ +\x17\x97\x9c\x9c\x9c\xf0|\xff\x88\x8b\xa2\xddX\xa6\x8c@\xd6ve\xd7\xcc\xc45G#\ +\xda\xd9l\x8b\x9f\x7f\xf4+\xbe\xf9\xd7\xe7\x1c\x1f~K\x8c/\t!\xb9p\xdb\xb6\ +\xd4MMY\x96L\x97S&\x93\t\xcef\xa8I@\xbb\xae\xdf\x00yyx\xc2e\xd1P5~c\x07\x88\ +\x8e]\xfc\xd55\xf6#W\xd1\xb8\xba\'\xe3\xfa\xc1\x8f~\xca\x9d\xbd79;\xde\xe7\ +\xe4\xf4\x82\xa6\xae)W+\x8ab\x9b\xf9|1F#\x1f\x1b*\xc1\xfb\x81\xbe\xefY\x16%e\ +\xdd\xd3\xb4\x01\x1f\xe5\x86\x1d\x88\xe8\xd5<|S#\x91\x18"1\x06b\x9a\xb6\xd3}\ +T\xd3b\xb1\xc3l\xb6M\xd3\x94\xd4\xabK\xca\xb6\xa2<<\xc5\xe8)y\xe6p\x99K\x15W\ +\x1d\x01C\x88\x82\x0f:\xd6\x89q\tW\x8f\xaf\xf4p\xb3\xb2\xc6\x98\xa6\xf2\x10\ +\xd2,*\xeaQ\xafD\x81\x18\xfc8DE\x9c\xcb1\xb7^K\xcfcH\x9b\xc4\x88\x07|\x8cD\ +\x9f6]o\xbe!|\xcc\x8eQ\xe3\x9b\xb7b\x8c\x106\xa2\xf8\xff\xf8G\xcd\x7f\x00\ +\xa5^v\xc7\xab\xa1\x84<\x00\x00\x00\x00IEND\xaeB`\x82' + +def get005Bitmap(): + return wxBitmapFromImage(get005Image()) + +def get005Image(): + stream = cStringIO.StringIO(get005Data()) + return wxImageFromStream(stream) + +index.append('005') +catalog['005'] = ImageClass() +catalog['005'].getData = get005Data +catalog['005'].getImage = get005Image +catalog['005'].getBitmap = get005Bitmap + + +#---------------------------------------------------------------------- +def get006Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xd6IDATx\x9c\xcd\x98Yo\xe4\xc6\x15\x85\xbfZ\xb9\xb4\xa4n\x0b\xd2\xb4&\xb05\ +\x8b\xed\x186&\x13\x18\xf3j\xff\xd2\xfc\x81\xbc\xe5\x0f\x04\x08\x92<8O\xf6\ +\x8ba\xc0\x19{4\x98\x99h\x19\xb4\xd4\x8b\x9aM6\xc9\xaa\xca\x03\x17\xb1e\x07y\ +5\x81\xea\xea\x85d\x9d\xbe\xf7\x9csoQ\x00\x81\xdf\xc0\xa1\x01\x9e\xbf\xf8\ +\x1ak#\x8c\xb1(\xadQR!\xa4B\x08A\x08\x81\x1d\xac\xa1\x9b\xc2\xdd\x17A\x0c~\ +\x14\xfc\xea!v\xdf\x86\xf65\x84\xc0?\xfe\xfa\x97\x06\x88\xb5\x11q\x9cb\xa3\ +\xb8\x07#; \x04\x08\x81\xe0\x81P\xe3\xdc\x16_oq\xf5\x96\xba\xde\xe2\xeb\x9a\ +\xba\xae\xa8] \x91\xcablJ<\xda\xc7\x98\xa8YX\x88\x01\x08\xd1\xc0\x15\x10|\ +\xc0\x07w\x17\x11c,6\x8a\x89\xe3\x04\x13\xc5hmQRv\xd0\xf1\xbe\x02\x97#BMl-J%\ +(\xa5\x00\xa8\xeb\x9a\xaa\xaa\xd8n\xb7l6\x1b\xb2,\xe3vu\xc1\xe2\xfa\x9ct\xff\ +\x90\x0f\x0e\xa7\xa4\xfb\xe3;\x18\xa2\x83#\x08\xc1\xe3\xbd\xbf\x03\xa2\xb4\ +\xc6\x18\x8b\x89b\xacm\xa3\xa2Ts\x81\xcb0\xcas\xb07a4\x1a\x11\xc71\xc6\x18\ +\xa4\x948\xe7(\xcb\x92\xb2,\xef@\xdc\xde\xb2\\.Y,\x16\xcc\xe7\x97\xdc\xcc\ +\xcey\xf0\xf01\x1f\x9e~\x86\x90\r\x00D\x03(\x04\x8f\xab\x07\x11QR\xa1\xb4Fk\ +\xdb\x002\x16)\x05F\xe4\x8c\'\x11\x87\x87\x0f\x99L&\x8c\xc7c\x92\xa4\x89F\ +\x08\x81\xaa\xaa(\x8a\x82<\xcf\xc9\xb2\x8c\xf5z\xcdr\xb9doo\x8f$I\xb0\xd62\ +\x9b\xcdx\xf5\xe3w\xac\x97\x0b>\xf9\xfcK\x92t\xaf\x01\x82\x80\x10\x10r\x00DH\ +\x85\x94\n%%J)\xa4\x14\xc4z\xcb\xc9\xd1\x01\xd3\xe9\xb4\x1f\xe3\xf1\x18cL\ +\x0f\xa0\x8bB\x9e\xe7$IB\x1c\xc7DQ\x84\xb5\x16\xad5RJ\x84\x108\xe78\x7f\xf7\ +\x92\xbc\xc8y\xfe\xe2+\xd2t\xbf\x15\x82G:9\x00"DC\xa86\x7fF\xe4\x9c\x1c\x1d\ +\xf0\xd1G\x1fqzz\xca\xd3\xa7O999A\x08AY\x96\xac\xd7kV\xab\x15\xce9\xbc\xf7\ +\x84\x10p\xce\x11BhU\x06RJd\xfb\xc7\x84\x10H)y\xff\xfe\x82\x97?|\xcb\xf3\x17\ +_#\x84\x04D/8\r47 @\x00\xe12\xc6\x93\x88\xe9t\xca\xa3G\x8fx\xf6\xec\x19\xc7\ +\xc7\xc7\x00TUE\x08\x81\xb2,\xa9\xaa\n\xe7\\\x0f@kM\x14E\x08!\xd0Zc\x8c\xe9G\ +\xf7[\x1c\xc7\\^\xbe\xe5\xf5\xcf\xdf\xf3\xf8\xe3g\xad\x1a\x07\xa9\xa1\x95\ +\xa8\xf7\x15Fy\x0e\x0f\x1f2\x9dNy\xf2\xe4\t\xc7\xc7\xc7}x\xeb\xbaf\xb1X\xb0Z\ +\xad\xc8\xf3\x9c\xa2(\xf0\xde\xa3\xb5\xfe\x05\x00k-\xd6Z\xa2(\xeaAX\xdb\x88\ +\xe0\xfa\xea-\x87G\x0f\xd9\xdb\x1b\x13\x86\xaa\x01\x1a\x9fp9\x07{\x13&\x93\t\ +\xd3\xe9\x94\x93\x93\x13\x80^\x1d\xb3\xd9\x8c\xf9|N\x9e\xe7\x94e\x89\x10\xa2\ +\xe5\x94Dk\xdd\x83\x1aF#\x8a\xa2\x1eX\'\xf9\x10\xce\x99\xcf\xceI\xd3\x03\xbc\ +\x0f\xbb@\x085"\xd4\x8cF#\xc6\xe31\xe3\xf1\x18!\x04UUQ\xd75\xb3\xd9\x8c\xeb\ +\xebk\xb2,\xc3{\x8f\x94\xb2\xe7CgX\x1d\x17\x94Rh\xad\xfb\xa8t\xa3\xbb\xc69\ +\xc7\xe5\xd5\x8c\xed6C\xebh\x00$\x80s[bk\x89\xe3\x98$I0\xc6P\x96%!\x84\xd6\ +\x13\xe6dYF\x08\xe1\x17\x0b\x03x\xef\xfb\xef\xa5\x94\x18c\xf0\xde\xf7Q\xe9H\ +\xdbE7\xcb2\xf2l\xc9\xe8\xe0h7"\xbe\xde\xa2T\x03@)EUU\xac\xd7k\xca\xb2\xec91\ +\\lh\xdb\xdd\xe2\xdd1<g\x98\x96\xe5\xed\x86m\xad\x88\xe2\x11\xe3\xc9\x84\xdb\ +\xac\xd8\xe5H \xe0\xeam\x9f\xef\x10\x02EQ\xb0Z\xad\xa8\xaa\xaa\xe7D\xb7\xd8p\ +\xa1.=C\x1b\xe8\xa4+\xa5\xe4\xdd\xc5\x9c\x7f\xbf\xbe\xe2\xa7\xb3\x0b\xb6\xf9\ +-\xa3(\x10%)\x07\x07\x07\xac73|\xb8G\xd6\xba\xde\xf6\xc4\xac\xaa\x8a\xcdf\ +\xd3\xcb\xb3(\x8a~\xd1\xff\x07B\x08\xc1\xd9\xdbk^\xff\xe7\x86WofTu\x89\x08\ +\x10\x82Ci\x8b2\x10[\xcdh\xb4\x87Q\xd7\xfd=z\xf96U\xb4\xa6,K\x8a\xa2\xe8I\ +\xd9\x99V\xc7\xf8.*\xf7A\x9c\xbd\x9dq\xf6\xee\x9aWofx\xef\xda\xc8(\xb42\xed\ +\n\x1a\x85\xc3\x18\xb0\xd6\x91\xc4\tql\xa9w\x80\x04A]WTUEY\x96\xe4yN\x9e\xe7\ +\xbdS\x0e\xed\xfa\xfe!\x84\xe0O\x7f\xfe\'\xae\xaaZw\x16H\xa5\x10R"\x95jz\x1b\ +!A\x04\xa4P-\x10O\x1dY\xac\xb1T\x8d\x9f\rR\xe3\x02\xdb\xed\xb6/`I\x92\xe0\ +\x9c\xdb1+\xa0\x97\xee\x90+\x07\xfb\t\x8by\xddVU\xd9\x80\x90\n%u\xa3\x16%\ +\x11\x80\x96\x01k\x05\xd6:J\xa5\x11RA\xdd\x96\x84.5\x01\xc9f\xb3a\xbd^\xf7\ +\xa3#\xe9\xb0\xa6\xfc\x1a1\xbf\xf8\xf4w; \x84\x90mEW(m0mU\x8f\xac!\x89\r\xc6\ +\xa8\xa6%\x90\xfa\xae6\xb5\xb7E*\xbb\xd3O\xdc\xde\xde\xf6\xf2\xedL\xed\x7f\ +\x01\xf9\xf4\xd1t\x10\x89v(\x85R\x1a\xad5\xdah\x8c\xd1\xc4\xb1%\x8e\x0cJ\xca\ +\x86\x7f\xfeN\xf2}j\x8cM\xb9]]\xf4\xfd\x84\xb5\xb69a`\xd9\x9d\xbc\xefK\xf4\ +\xf0\x83}\x8e\x8f\x0f\xb9Y\xdc\xb6vo\xd0\xda6s{\x9dQ\x814\x16\xc4Q\xa0\xcak\ +\xea\xaa\xa4v\xdc\x8f\x08\xc4\xa3}\xca\xaaq\xd1\x9b\x9b\x1b\xe6\xf39\xab\xd5\ +\x8a,\xcb(\x8a\xa2OQw\x0c\xad\\k\xcd\x1f\xbf8E+\xdd\x830\xc6\xa0m3[\xa3I"C\ +\x9ah\xb4\n\xb8\xbab\xbeX\xf7D\xdd\x8d\x88\x89H\xf7\x0f\x99\xcf/\xfb\xba\xd0\ +Y\xb5\xednhm\xef\xae]\xa1\xeb\xc6\xb3\xcfN\xf9\xe6\xdbWm:\x1a\x10Zk\x8c\xd6\ +\x18\ri,Hl\xc0\x95%y\xbe!\xcb+|h\x9b\xe2!\x10\x80\x0f\x0e\xa7\xdc\xcc\xce\ +\x99\xcdf}e\xedjE\xd7yui\xeax\xd2\xa5\xee(M9\x99>`\xbe\xb8E\x1b\xd3\x02\xd0\ +\x18-\x19\xc50\x8a\x05Zl\xd9\x14\x1b..g\xac7\xf5\x8e\r\xf4@\x84\x10\xa4\xfbc\ +\x1e<|\xcc\xab\x1f\xbf\xc39\xd7/4,\xe5\x1d\xa0\xae\xfb\xee\x00k\xady\xf1\x87\ +\xc7\xfc\xed\x9b\x1f\x9a\xcfJb4\x8cb\xd8K$VV\x14\x9b5\xcb\xc5\x9c\xf9jC\xed\ +\x1b\x91\x88a\x876\xdc\xfc|x\xfa\x19\xeb\xe5\x82\xf3w/\x91R\xee45]\xf1\xea\ +\x16\xee"\xd69\xf0\xef\x9f\x1c\xf3\xf7\x7f\x81Q\x81\xd84\xe9\x18\xc5\x02++\ +\xcab\xcdb~\xc3\xd9\x9b+V\xeb\xce\xfc\xa0\x13\xe2Nj@ \xa4\xe0\x93\xcf\xbf$/r\ +\xde\xbf\xbf\xd8\xe9\xac:\xc5\x84\x10v\xec\xdf9\xd7\x9fsr\xb4OU\x16\xa4\t$6\ +\xa0\xc5\x96b\xb3f\xb1\xb8\xe1\xa7\xb3w\\/\xf2fw%\xc4\xafD\x84v\xcb#\x9a9I\ +\xf7x\xfe\xe2+^\xfe\xf0-\x97\x97o\x07\x9dU\xd3\xd4l\xb7\xdb~\x1b\x91\xa6)I\ +\x92\xf4e\xe0\xc1D\xb1\xba\r\x18U\xe2\xca\x92M\xb1a\xb9\x98s\xf6\xe6\x8a\xeb\ +E\x8e\x0f\x02A\xe7\xca\xa2\xdf\xb8\xea.3\xa1\xcbQ\x8b6M\xf7y\xfe\xe2k^\xff\ +\xfc=\xd7Wo\t\xe1\xbcoj:\x07^\xadV$I\xd2sH\x08\x81\xabj\xaabMQ5\xea\xb8\xb8\ +\x9c1_mX\xad\xabv?\x03\x08\xd9v\xf1\xf7\xc8\x1a\x06\xd1\xb8\x9b\x1b\xcb~\xfc\ +\xf13\x0e\x8f\x1e2\x9f\x9dsy5#\xcb2V\xab\x15\x93\xc9\xa4\xdfH\xdd\xef\xc0\ +\x8a\xa2`\xbeX\x93\xe5\x15\xebMM\xed\xe9\x0bbw\xdf\xbe\x80\xeer$\x10| \x04O\ +\x08\xbei\xf3\x83\xa7c\xd3\xde\xde\x984=`\xbbm\xda\xbb\xe5\xba`\x95]a\xd4{\ +\xe2\xb8\xa9\xa2B*\x84\xd48/\xa9\x1dT\x8e\xd6\'\xbaHw\xb1\xdf},\xb0\xd3\x8f\ +\x84\xd0\xec\xca\xbdo\xf6\xa2B:\xa4\x93\x04\x01\xc1;\x82\xf7x\x1f\xd0:btp\ +\xd4|\x0eM\x11\xacCh\x1c\xb2\xbe\xdb\\\xdd\xd5\xa4\xae\xb9n\xd4!\xc4\xe0\x01\ +Gh\xcf\xf3=)~\x1b\x0fj\xfe\x0bA\xd9\\\x8cd\xf1*\x82\x00\x00\x00\x00IEND\xaeB\ +`\x82' + +def get006Bitmap(): + return wxBitmapFromImage(get006Image()) + +def get006Image(): + stream = cStringIO.StringIO(get006Data()) + return wxImageFromStream(stream) + +index.append('006') +catalog['006'] = ImageClass() +catalog['006'].getData = get006Data +catalog['006'].getImage = get006Image +catalog['006'].getBitmap = get006Bitmap + + +#---------------------------------------------------------------------- +def get007Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xddIDATx\x9c\xcd\x98Yo\x1b\xd7\x19\x86\x9f\xb3\xceB\x8ablK\xb4\x03[u\x15\ +\xa3\x8e[\xd7@\xea\xdb\xe47\x17\xbdk\xd1^\xb4E/\xdb\x18H\xd2\xa0\xa9\x1d/Q*K\ +\x0ee."9$\xe7,\xbd\x98EC5@o3\x005\xa28\xc3\xf3\xe8\xfd\xdeo9#\x80\xc8O\xe0\ +\xd0\x00O\x9e~\x86\xb5\t\xc6X\x94\xd6(\xa9\x10R!\x84 \xc6\xc8\x0eklN\xf1\xea\ +\x0fQt>\x14\xfc\xe8!v\x7f\x8d\xf5\xcf\x18#\x7f\xfd\xd3o+\x10k\x13\xd24\xc7&i\ +\x0b#\x1b\x10"\xc4H\x0c@tx\xbf!\xb8\r\xdempnCp\x0e\xe7J\x9c\x8fD$RY\x8c\xcdI\ +{{\x18\x93T\x0b\x0b\xd1\x81\x10\x15\xae\x80\x18"!\xfa+E\x8c\xb1\xd8$%M3L\x92\ +\xa2\xb5EI\xd9\xa0\x13B\t\xbe@DGj-Je(\xa5\x00p\xceQ\x96%\x9b\xcd\x86\xd5j\ +\xc5r\xb9\xe4r\xfe\x96\xe9\xc5)\xf9\xde\r>\xb81"\xdf\xdb\xbf\xc2\x10\r\x8e \ +\xc6@\x08\xe1\nDi\x8d1\x16\x93\xa4X[\xab\xa2Tu\x83_bT`\xd0\x1f\xd2\xeb\xf5H\ +\xd3\x14k-B\x08B\x08l\xb7[6\x9b\rEQT\x10\x97\x97L\xa7S\xa6\xd3)\x93\xc9\x19\ +\xef\xc7\xa7\x1c\xde\xb9\xcf\xdd\xa3\x87\x08Y\x01 *\xa0\x18\x03\xdeu\x14QR\ +\xa1\xb4Fk[\x01\x19\x8b\x94\x02#\n\xf6\x87\t7o~\xc8p8d0\x18\x90\xe79ZkB\x088\ +\xe7X\xaf\xd7;\x10\xb3\xd9\x8c^\xafG\x96eXk\x19\x8f\xc7\xbc\xfc\xe6\x19\x8b\ +\xd9\x94\x07\x8f>!\xcb\xfb\x15\x08\x02bD\xc8\x0e\x88\x90\n)\x15JJ\x94RH)H\ +\xf5\x86\xdb\xb7\x06\xdc\xbe}\x9b\xd1h\xc4\xe1\xe1!\xc3\xe1\x10c\xcc\x0e\xc0\ +b\xb1\xa0(\n\xb2,#MS\x92$\xc1Z\x8b\xd6\x1a\xa5*\x9fy\xef9\xfd\xfe9\xc5\xba\ +\xe0\xc9\xd3O\xc9\xf3\xbd:\x11\x02\xd2\xcb\x0e\x88\x10\x95\xa1\xea\xf8\x19Qp\ +\xe7`\x9f{\xf7\xeeqtt\xc4\xf1\xf11\xa3\xd1\x08)%eY\xb2\\.\x99\xcf\xe7x\xef\ +\xc9\xf3\x1c\x80\x10\x021\xc6:\xcb@J\xd9\xbe\x84\x10H)y\xf7\xee-\xcf\xbf\xfe\ +\x9c\'O?C\x08\t\x886\xe14P}\x01\x11"\x08\xbfd\x7f\x980\x1a\x8d8::\xe2\xf1\ +\xe3\xc7\x1c\x1c\x1c\xb4\x8b\x95e\xd9\xbeB\x08x\xef\x891\xa2\x94"I\x12\x84\ +\x10h\xad1\xc6`\x8ci\xd5I\x92\x844M9;;\xe1\xf5\xb7_q\xff\xa3\xc7u6vBC\x9d\ +\xa2!\x94\x18\x15\xb8y\xf3CF\xa3\x11\xc7\xc7\xc7\x1c\x1c\x1c\xb4\xf5\xc4{\ +\xcfl6c>\x9f\xb3Z\xadX\xaf\xd7x\xef[\x88\xeb\x00\xd6\xda6T\x8d\xc9\x95R\\\ +\x9c\x9fp\xe3\xd6\x1d\xfa\xfd}b7k\x80\xaaN\xf8\x82A\x7f\xc8p8\xe4\xf0\xf0\ +\x90\xd1hD\xa3\x98\xf7\x9e\xf1x\xccd2a\xb5Z\xb1\xddn\x11B\xd4\x9e\x92\xad\ +\x81\xbb0\xc6\x18\x92$i\xc1\x9a\x94\x8f\xf1\x94\xc9\xf8\x94<\x1f\x10B\xdc\ +\x05!:Dt\xf4z=\x06\x83\x01\xc3\xe1\x10)e+\xffx<\xe6\xe2\xe2\x82\xc5bA\x08\ +\x01)%1F\xa4\x94\xedW4\x9ePJ\xa1\xb5\xfe\x1fU\x9a{\xbc\xf7\x9c\x9d\x8f\xd9l\ +\x96h\x9dt@"x\xbf!\xad%\xcc\xf3\x1ccL\xeb\x85\xd9l\xc6d2a\xb1X\x10cl+ec\xc2\ +\xc6?\xcd{\xa5\x141FB\x08\xad*\xdd\x0c\xdan\xb7,\x97K\x8a\xe5\x8c\xde\xe0\ +\xd6\xae"\xc1mP*k\xcd\xe5\x9cc\xb9\\R\x96e\xeb\x89f\xb1\xebe\xbbQ\xa39\xba\ +\xd74\x8a4pM\x05\x9e\xcf\xe7\xcc\x16\xeb]\x8fD"\xdemZ\xea\x10\x02\xeb\xf5\ +\x9a\xf9|NY\x96\xad\'\x9a\xc5\xba\x0b5\xe9\xda-\x03\xdd\xd4m\xd4RJ\x11B\xa0(\ +\n.//\x19\x0e\x87\xcc\x97\xe7\x84x\xcd\xac\xcem\xda\x9b\x9cs\x14E\x81\xf7\ +\xbe\x85j\x16\xfd\x7f\x10\xdd\xf0h\xad\xdb\xeb\xa5\x94x\xef\x19\x0c\x06\xec\ +\xed\xed\xd1\xef\xf71\xea]\xfb\x1dm\xfaV]\xd4\xb1\xddnY\xaf\xd7,\x16\x0b\xf2\ +<\xc7{\xdf\xa6h\xf7\xbf\xbc\x0e\xd1\xf5L\x17\xa4\x811\xc6\x10Bh\xcb\x7fU\x89\ +-n\x07$\n\x9c+\xdb.Z\x14\x05EQ\xb4\x0b6\x10?v\xbc\xbb\xb8\xe4o\x7f\x7f\xc1\ +\xc3\xe3\xdb<<\xbeM\x9eU~h@\x8c1mX\x9cs\xa4iz\xd5\n\x8c\xa5\xac\xeaY\'4>\xee\ +t\xd1,\xcb\xf0\xde\xb7UQk\xdd\x86\xae\xeb\x95/\xff\xf5\x1f^\xbd9\xe3\xf5w\ +\xe7\xfc\xe1/_\xf0\xe0\xf8.\x8f\x7fq\x97_\x7f|\x8f^\xa7~x\xef\xdbDh\xfb\x90T\ +\xe0\xae\x85&"\xaf\xe6\x89\xcbK\xd24%\xc6\xd8B4\x00\xdd0\x08!89\x9b\xd6}J \ +\x84\xe4\xe5\x9b3^\x9f\xfc\xc0\xef\xff\xfc%\xbf|t\xcco~\xf5s\x9e<\xbaG\x92$\ +\xac\xd7\xeb\x9d\xfe#\xa4\xbe\xee\x11\x81Tv\xa7\x95\'I\xd2\x9a\xd3\x18\x83\ +\xd6z\xc7#B\x08\xe6\x8b5\x17\xef\xa75\x94DH\x89\x14u\xc6(\xc5\x8bWoy}2\xe6w\ +\x7f\xfc\x07\x1f?\xb8\xc7\xcf\xee\xf4\xe8\'\xbe\xf5\x9d\x0fW\xe1nCcl^MV\xd3)\ +\xbd^\x0fkmuA\xa7d7\xb1oL\xf9\xe2\xf5\x0f\xedH)\xa4D\xd4\x10Z\x1b\x94\xb6\ +\xf5Y\xa3\x95\xe2\xcd\xc9\x19\x93\xf7\x92\x0f\xfa\x80[\xb2\xdelp\x9e\xeb\x8a\ +@\xda\xdbczq\xcat:%\xcb\xb2V\x81\xa6O4\xaat\xdb\xfc\x97\xff>m!\xaayF!\x95B\ +\xe9\xfazS{B\t\xf2D\xb0\x97K\xacv,W\x1b&\x93\xcb\xd6\xa8\xbb\x8a\x98\x84|\ +\xef\x06\x93\xc9Yk\xb0\xeb \xd6\xda\xb6\xbaVa\x99#\xeb\xc5\xa5\xd4(\xadPJ\ +\xa3u\x03\xa10Z\x91\x18A?\x97\xf4RAt\x05\xebb\xc5\xb2(\t\xb1\x1e\x8a\xbb \ +\x00\x1f\xdc\x18\xf1~|\xcax<n\xe5oJt\xd3\xb8\x1a\xa0o^\x9e\x83\xe8LwJ\xa1T\ +\xa5\x9a\xaa3\xc3h\x855\x92~&\x19d\x12#K\x16\xeb\x15o\xcf\xc6,Vn\xa7\x0c\xb4\ + B\x08\xf2\xbd}\x0e\xef\xdc\xe7\xe57\xcf\xf0\xde\xb7CN\x03\xd0\x00%I\xc2\xb3\ +\x7f\xbei\xf78\xadQ\xa5D)\x89V\n\xadD\xa5D&\xd9\xef)\x12\xe3\xd8\x16Kf\xb3\t\ +\x93\xf9\n\x17\xaa$\x11\xdd\t\xad\xbb\xf9\xb9{\xf4\x90\xc5l\xca\xe9\xf7\xcf\ +\x91R\xb6\x93U\xd3\xd2\x95R,W[~\x18_\xa0\xb5\x81\xa8\xa9\xb6K\x11Ye1FA\x9eT\ +\xe1\x18d\x92\xd4x\xca\xed\x92\xd9\xf4=\xaf\xbe;g\xbe(\xdb\xd1\xb4)\xd0;\xa1\ +\x01\x81\x90\x82\x07\x8f>\xa1X\x17\xbc{\xf7vg\xb2j\xf2\x7f<\xddb\x94\xaf\xa6\ +\x7f\x19\xd02`4$&\x92\xa6\x82^&\xd9\xcb%y\nV\x96l\x8a\n\xe2\xc5\xab\xef\xb9\ +\x98\x16\x15\xad\x10?\xa2\x08\xf5\x96GT\xe7,\xef\xf3\xe4\xe9\xa7<\xff\xfas\ +\xce\xceN:\x93U=\xa9\xcdJ\xf63\x814\x12\xad\x05\xc6H\x12\xabH3E\x96H\xf2T`\ +\xb5#\xba\xca\x13\xb3\xd9\x84W\xdf\x9ds1-\x08Q h\xfa\x93h7\xae\xba\x89LlbT\ +\xd3\xe6\xf9\x1eO\x9e~\xc6\xebo\xbf\xe2\xe2\xfc\x84\x18O\xdb\xa1F\xdb\x8c,\ +\xeb\x91\xa4\x06k#\xc6F\x12\x1b0\xc6\xa3U\xc4o\x0b\x16\xab\x92uQ\x19s2_1_\ +\x94\xf5~\x06\x10\xb2\x9e\xe2\xaf\x995v\xd4\xb8:W\xd5\xf2\xfeG\x8f\xb9q\xeb\ +\x0e\x93\xf1)g\xe7c\x96\xcb%\xfb\xfb\xd5f\xab\xd7\xeb\xe3\xb3\x94\xe0\x12\ +\xdcF!\x85$DOY\x96L\xa7\x0b\x96E\xc9b\xe5p\x81N\x1b\xa8\xabp\x13\x93]\x8fDb\ +\x88\xc4\x18\x881Tc~\x0c4n\xea\xf7\xf7\xc9\xf3\x01\x9bM5\xde]\xae\xd6,\x8a1F\ +]\x90\xa6\x16kl\xf5\xf4@j|\x908\x0f\xa5\xa7\xae\x13\x8d\xd2\x8d\xf6\xbb\x8f\ +\x05v*k\x8c\xd5\xae<\x84j/*\xa4GzI\x14\x10\x83\'\x86@\x08\x11\xad\x13z\x83[\ +\xd5\xfbXm\xa8\\\x8cU\x85tW\x9b\xab\xabY\xa5\x0ex\x9d\x1dBt\x1ep\xc4\xfa\xba\ +\xd0\x9a\xe2\xa7\xf1\xa0\xe6\xbf\xf1o."\xb9\t8\x10\x00\x00\x00\x00IEND\xaeB`\ +\x82' + +def get007Bitmap(): + return wxBitmapFromImage(get007Image()) + +def get007Image(): + stream = cStringIO.StringIO(get007Data()) + return wxImageFromStream(stream) + +index.append('007') +catalog['007'] = ImageClass() +catalog['007'].getData = get007Data +catalog['007'].getImage = get007Image +catalog['007'].getBitmap = get007Bitmap + + +#---------------------------------------------------------------------- +def get008Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +&IDATx\x9c\xcd\x98K\x8f\xdb\xe6\x19\x85\x9f\xefFR\xd4H\xa3\xd8\x9e\x91\x1d\ +\xd8\x03\xd7\t\x90\x04p\r\x04\xde&\x7f\xa0\x7f\xa4\xcb\xae\xba\xee\xef\xe8\ +\xbe(\xba)R\xf4\x024h\x82\x02A\x03\x14mjo\x8c4\xf1%q\xeazF\x9a\xa1"J#\x89\ +\x92\xf8]\xba\xa0HIN\x80nC@w\x91\xdf\xd1y\xcf9\xef\xfbI\x00\x81\x1f\xc0\xa1\ +\x01\xee\xdd\x7f\x9f(\x8a1&Bi\x8d\x92\n!\x15B\x08B\x08\xeca\r\xf5C\xd8\xbe\ +\x11\xc4\xce\x87\x82\xef=\xc4\xfe\xd3\xb0\xb9\x0f!\xf0\xc9G\x1fT@\xa2(&IR\ +\xa28i\xc0\xc8\x1a\x08\x01B x X\x9c[\xe1\xed\ngWX\xbb\xc2[\x8b\xb5%\xd6\x05\ +\x02\x12\xa9"L\x94\x92\xb4;\x18\x13W\x0b\x0b\xb1\x03BTp\x05\x04\x1f\xf0\xc1m\ +\x191&"\x8a\x13\x92\xa4\x85\x89\x13\xb4\x8ePR\xd6\xd0\xf1\xbe\x04W \x82%\x89\ +"\x94j\xa1\x94\x02\xc0ZKY\x96\xacV+\x16\x8b\x05\xf3\xf9\x9c\xcb\xe9\x19\xf9\ +\xe8\x94\xb4s\x85\xd7\xae\xf4I;\x87[\x18\xa2\x86#\x08\xc1\xe3\xbd\xdf\x02QZc\ +L\x84\x89\x13\xa2h\xc3\x8aR\xd5\tn\x8eQ\x9e\xeeA\x8fv\xbbM\x92$DQ\x84\x10\ +\x02\xef=\xeb\xf5\x9a\xd5jEQ\x14\x15\x88\xcbK\xf2<\'\xcfs\xc6\xe3\x01\xdff\ +\xa7\x1c\xdf\xb8\xcd\xcd\x93\xb7\x10\xb2\x02\x80\xa8\x00\x85\xe0qv\x87\x11%\ +\x15Jk\xb4\x8e*@&BJ\x81\x11\x05\x87\xbd\x98\xabW_\xa7\xd7\xeb\xd1\xedvI\xd3\ +\x14\xad5\xde{\xac\xb5,\x97\xcb=\x10\x93\xc9\x84v\xbbM\xab\xd5"\x8a"\xb2,\ +\xe3\xab/\x1f2\x9b\xe4\xbc\xf9\xce\xbb\xb4\xd2\x83\n\x08\x02B@\xc8\x1d B*\ +\xa4T()QJ!\xa5 \xd1+\xae_\xebr\xfd\xfau\xfa\xfd>\xc7\xc7\xc7\xf4z=\x8c1{\x00\ +f\xb3\x19EQ\xd0j\xb5H\x92\x848\x8e\x89\xa2\x08\xad5JU:s\xceq\xfa\xdf\'\x14\ +\xcb\x82{\xf7\xdf#M;\x1b#x\xa4\x93;@\x84\xa8\x04\xb5\xa9\x9f\x11\x057\x8e\ +\x0e\xb9u\xeb\x16\'\'\'\xdc\xb9s\x87~\xbf\x8f\x94\x92\xb2,\x99\xcf\xe7L\xa7S\ +\x9cs\xa4i\n\x80\xf7\x9e\x10\xc2\xc6e \xa5lnB\x08\xa4\x94\x9c\x9f\x9f\xf1\ +\xe4\xf3\x07\xdc\xbb\xff>BH@4\x86\xd3@u\x01\x02\x04\x10n\xcea/\xa6\xdf\xefsr\ +r\xc2\xdd\xbbw9::j\x16+\xcb\xb2\xb9y\xefq\xce\x11B@)E\x1c\xc7\x08!\xd0Zc\x8c\ +\xc1\x18\xd3\xb0\x13\xc71I\x920\x18\xbc\xe0\xf9\xb3G\xdc~\xe3\xee\xc6\x8d;\ +\xa5acQ\xefK\x8c\xf2\\\xbd\xfa:\xfd~\x9f;w\xeeptt\xd4\xe4\x89s\x8e\xc9d\xc2t\ +:e\xb1X\xb0\\.q\xce5 ^\x05\x10EQS\xaaZ\xe4J)F\xc3\x17\\\xb9v\x83\x83\x83C\ +\xc2\xaek\x80*\'\\A\xf7\xa0G\xaf\xd7\xe3\xf8\xf8\x98~\xbfO\xcd\x98s\x8e,\xcb\ +\x18\x8f\xc7,\x16\x0b\xd6\xeb5B\x88\x8d\xa6d#\xe0]0\xc6\x18\xe28n\x80\xd5\ +\x96\x0f\xe1\x94qvJ\x9av\xf1>\xec\x03!XD\xb0\xb4\xdbm\xba\xdd.\xbd^\x0f)eC\ +\x7f\x96e\x8cF#f\xb3\x19\xde{\xa4\x94\x84\x10\x90R6\x97\xa85\xa1\x94Bk\xfd\ +\x1dV\xeas\x9cs\x0c\x86\x19\xab\xd5\x1c\xad\xe3\x1d \x01\x9c[\x91l(L\xd3\x14\ +cL\xa3\x85\xc9d\xc2x<f6\x9b\x11Bh\x92\xb2\x16a\xad\x9f\xfa\xb5R\x8a\x10\x02\ +\xde\xfb\x86\x95]\x07\xad\xd7k\xe6\xf39\xc5|B\xbb{m\x9f\x11oW(\xd5j\xc4e\xad\ +e>\x9fS\x96e\xa3\x89z\xb1Wc\xbbf\xa3>v\xbfS3R\x83\xab\x13x:\x9d2\x99-\xf75\ +\x12\x088\xbbjP{\xefY.\x97L\xa7S\xca\xb2l4Q/\xb6\xbbPm\xd7\xdd\x18\xd8\xb5n\ +\xcd\x96R\n\xef=EQpyyI\xaf\xd7c:\x1f\xe2\xc3+b\xb5v\xd5\x9cd\xad\xa5(\n\x9cs\ +\r\xa8z\xd1\xff\x07b\xb7<Z\xeb\xe6\xfbRJ\x9cst\xbb]:\x9d\x0e\x07\x07\x07\x18\ +u\xde\\\xa3\xb1o\xd5E-\xeb\xf5\x9a\xe5r\xc9l6#MS\x9cs\x8dEw\x7f\xe5\xab v5\ +\xb3\x0b\xa4\x06c\x8c\xc1{\xdf\xc4\x7f\x95\xc4\x11v\x0fH\x10X[6]\xb4(\n\x8a\ +\xa2h\x16\xacA|\xdf\xf1\xe9\xbf\x9e\xd1\xeb\xb4\xf8\xf1\xdb7\x1bF\x94R\r\x10\ +cLS\x16k-I\x92l[\x81\x89(\xab<\xdb)\x8d\x0b{]\xb4\xd5j\xe1\x9ckRQk\xdd\x94NJ\ +\xc9rU\xf2\xc1\x87\x0fy9\xc80&\xe1\xf6\xad#^;l7 v\x83M)\x85s\xae1B\xd3\x87\ +\xa4\x02\xbbi\tui\x02r;O\\^6\xcdl\xbd^7Z\xa9\xcb\xf1\xe4\xf99\xbf\xfc\xf5\'\ +\x9c\x0eF\x08\x04\xce\xae\xf9\xed\x9f\x1f6,|_\x8e\xd4\xce\xd9\xed?B\xeamo\ +\xdaT\x19\xa9\xa2\xbdV>\x9dN\x99\xcdf\xac\xd7k\xca\xb2\xc4Z\x8b\xf7\x9e\x8f?\ +\xfd7\xbf\xfb\xf0\x9f\x94\xe5\xaa\x16\x08\x08\xc1\xe8\xdb\t\x7f\xf9\xdb\x17\ +\xdfa\xa3\xbe\xd5\x8b\xd7\x01\xe9\x9c\xc3\xf9m\xb9\x9b\xd2\x98(\xad&\xab<\ +\xa7\xddn\x13EQ\xf5\x85M\x9d\xf3\xcb%\x7f\xfd\xfbS\xf2\xc9\x0c!e5c\tY=\x17\ +\x02!%\x0f\x1e}\xcd\xbbwo\xf3\xf6\x9b7\x9b\xdeR\x0fQ\xb5kjC\xacV+\xac\xe3U\ +\xd7@\xd2\xee\x90\x8fN\xc9\xf3\x9cV\xab\x85\xd6\x1a)%\xc6\x18\x1e\x7f}\xc1\ +\xa3\xa7\x17\x08@i\x83D\xc0+ \xaayF\xf1\x9b?>\xe0\x17?;!\x8ecZ\xadV\xa3\x8f\ +\xb2,Y.\x97,\x16\x0b\x16\x8b\x05\xe3\xfc\xb2\x11\xea>#&&\xed\\a<\x1e4\x02\ +\x0b\xc0\xa3\xc7g\x8c&kL\x94`\xa2V5D\xa9\x80\x04\x84\xd8\x04\x97RH\xa9QZ\x11\ +\x82\xe7W\xbf\xff\x8c\x9f\xff\xf4\'h]i\xa0\x0e\xc5\xe9t\xda\x94|\xb6(\xf1a3\ +\x14o5R\x1d\xaf]\xe9\xb3*=Y\x961\x1c\x0e\xf9\xf2\xc97\x8cF\x19\xf85\xceY\x9c\ ++\xab\xf9\xc3o6\x13bg\xbaS\n\xa5\x0cZ\x1b^\x9c^\xf0\xc9?\x9e6 \xea9v<\x1e\ +\x93\xe79/O\xcf\x99-\xec^\x0c4@\x84\x10\xa4\x9dC\x8eo\xdc\xe6\xfc\xfc\x9c\ +\xc1`H1\x9f"\xc3\x1a-\x1d2\x94\x04\xef\x08\xc1\xe2\xbd\xab\xa29\xd4\xe7\xcaM\ +y$JI\xb4R\xfc\xe9\xe3\xcfx\xfe\x9f\x01y\x9e\x93e\x19\xe7\xe7\xe7dYF\x96e|;Y`\ +}\xf5K\x9a\xe4\xdd\x98\xa69n\x9e\xbc\xc5\xf1\xf5\x1fqqqN\x9e\x8fp\xb6\xc0HK\ +\x12\x05\x8crH*0\x04O\x08\x0e6\x1b0A@V\x06\xc2(Hc\xc1\x1f>\xfa\x8c\x97/O9;;c\ +0\x180\x1c\x0e\xf9\xea\x9b\x01\xd3Y\x89\xd8\x18\xee;\x1a\xa9m,\xa4\xe0\xcdw\ +\xde\xa5X\x16\x8c\xb23\x928!\x8eb\xe28\xc2D1B\x01* \x94\xab\xa6\x7f\xe9\xd1\ +\xd2c4\xc4&\x90$\x82vK\xd2I%\x91X\xf0\xc5\xe3g\x94\xab9\xc3\xe1\x90\xc7\xcf^\ +0\xca\x8b\xc6\xf2\xdb}\xce\x0e\x10\xb1yS h\xa5\x07\xdc\xbb\xff\x1eO>\x7f\xc0\ +\xc5\xc5\x8bMHI\x92\xd8\x90\xc4\x11J\x83\xd2\x02i$Z\x0b\x8c\x91\xc4\x91"i)Z\ +\xb1$M\x04\x91\xb6\x04[r1\\0\x9d\xe6|\xf5\xcd\x80Q^\xe0\x83\xd8\xb0Q\x01\t\ +\xbb\x8cl\xb5+\x1a\xb4i\xda\xe1\xde\xfd\xf7y\xfe\xec\x11\xa3\xe1\x0b\xe0|C\ +\x7f\xe0\xa0\x03-\xa3\x88\x13C\x14\x05L\x14\x88#\x8f1\x0e\xad\x02n]0[\x94,\ +\x8b\x05g\x83\x8c\xf1t\xc1tVn\xf63T\xd6\x17\xfb\xbdk3\x8fl\xd9\xd8>V\x81u\ +\xfb\x8d\xbb\\\xb9v\x83qvJ6\x1a\xb3\\\x16\xf4\x8a\x05\xddn\x97v\xfb\x00\xd7J\ +\xf06\xc6\xae\x14RH|\xa82#\xcfg\xcc\x8b\x92\xd9\xc2b\xfd\x86\x01\xb1\xbdn3X\ +\x85\xbd\xd2\x84\xca\x92\xc1\x13\x82\xaf\xc6\xfc\xe0+\x86B\xe0\xe0\xe0\x904\ +\xed\xb2ZU\xe3\xdd\xe5b\xc9\xac\xc80jD\x92DD&\xaa\xfe=\x90\x1a\xe7%\xd6A\xe9\ +\xd8\xe4D\xcdt\xcd\xfd\xfe\xdf\x02{\xc9\x1aB\xb5+\xf7\xbe\xda\x8b\n\xe9\x90N\ +\x12\x04\x95e\xbd\xc7\xfb\x80\xd61\xed\xee\xb5\xeau\xa8\x9a\xa0\r\xa1JH\xbb\ +\xdd\\mg\x95M\xc1\xab\xdfS=\xb2\xfd(\x84\x00\xbe\x11\xc5\x0f\xe3\x8f\x9a\xff\ +\x01k)\xae\n\xd5\xf2\r\xdb\x00\x00\x00\x00IEND\xaeB`\x82' + +def get008Bitmap(): + return wxBitmapFromImage(get008Image()) + +def get008Image(): + stream = cStringIO.StringIO(get008Data()) + return wxImageFromStream(stream) + +index.append('008') +catalog['008'] = ImageClass() +catalog['008'].getData = get008Data +catalog['008'].getImage = get008Image +catalog['008'].getBitmap = get008Bitmap + + +#---------------------------------------------------------------------- +def get009Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xb7IDATx\x9c\xcd\x98\xdbn\xdbV\x16\x86\xbf}")\xca\x96\xd5$\xb6\x92\xa25\x82\ +\xb4@Q \x08P\xe4r\xda\xbby\xdfy\x81\xb9\x9a\x07\xe8\xdc\x14\x05f\x82\x16-2ud\ +\x97\x8a$\x8a\xe2A\xdc\x87\xb9\xe0A\x92;\xc0\xdc\x96\x00MK"\xb9?\xae\xf5\xaf\ +\x7f\xafM\x01\x04\xfe\x04\x9b\x06x\xf3\xf6;\xa2(\xc6\x98\x08\xa55J*\x84T\x08\ +!\x08!p\xc6\x1a\x86C8~\x11\xc4\xc9\x8f\x82\xff\xb9\x89\xf3\x7fC\xff7\x84\xc0\ +?\xfe\xfe\xb7\x0e$\x8ab\x92$%\x8a\x93\x11F\x0e \x04\x08\x81\xe0\x81`q\xae\ +\xc1\xdb\x06g\x1b\xacm\xf0\xd6bm\x8bu\x81\x80D\xaa\x08\x13\xa5$\xd3K\x8c\x89\ +\xbb\x81\x858\x81\x10\x1d\xae\x80\xe0\x03>\xb8cD\x8c\x89\x88\xe2\x84$\x99`\ +\xe2\x04\xad#\x94\x94\x03:\xde\xb7\xe0*D\xb0$Q\x84R\x13\x94R\x00Xki\xdb\x96\ +\xa6i(\xcb\x92\xfd~\xcf.\xff\xc0fuGz\xf9\x84O\x9e,H/\xaf\x8e\x18b\xc0\x11\ +\x84\xe0\xf1\xde\x1fA\x94\xd6\x18\x13a\xe2\x84(\xea\xa3\xa2Tw\x81\xdbc\x94gv\ +1g:\x9d\x92$\tQ\x14!\x84\xc0{\xcf\xe1p\xa0i\x1a\xaa\xaa\xea v;6\x9b\r\x9b\ +\xcd\x86\xf5z\xc9\xc7\xec\x8e\x9b\x17/\xf9\xec\xf6+\x84\xec\x00\x10\x1dP\x08\ +\x1egO"\xa2\xa4Bi\x8d\xd6Q\x07d"\xa4\x14\x18Qq5\x8fy\xfa\xf4S\xe6\xf39\xb3\ +\xd9\x8c4M\xd1Z\xe3\xbd\xc7ZK]\xd7g\x10\xdb\xed\x96\xe9t\xcad2!\x8a"\xb2,\ +\xe3\xe7\x7f\xfd\x93b\xbb\xe1\xcb\xaf\xbfa\x92^t \x08\x08\x01!O@\x84TH\xa9PR\ +\xa2\x94BJA\xa2\x1b\x9e?\x9b\xf1\xfc\xf9s\x16\x8b\x05777\xcc\xe7s\x8c1g\x00E\ +QPU\x15\x93\xc9\x84$I\x88\xe3\x98(\x8a\xd0Z\xa3T\xa73\xe7\x1cw\xffyGUW\xbcy\ +\xfb-iz\xd9\x17\x82G:y\x02"D\'\xa8>\x7fFT\xbc\xb8\xbe\xe2\xf3\xcf?\xe7\xf6\ +\xf6\x96W\xaf^\xb1X,\x90R\xd2\xb6-\xfb\xfd\x9e<\xcfq\xce\x91\xa6)\x00\xde{B\ +\x08}\x95\x81\x94r\xdc\x85\x10H)yx\xf8\xc0\xbb\x1f\xbf\xe7\xcd\xdb\xef\x10B\ +\x02b,8\rt7 @\x00\xe1\xf6\\\xcdc\x16\x8b\x05\xb7\xb7\xb7\xbc~\xfd\x9a\xeb\ +\xeb\xebq\xb0\xb6m\xc7\xdd{\x8fs\x8e\x10\x02J)\xe28F\x08\x81\xd6\x1ac\x0c\ +\xc6\x981:q\x1c\x93$\t\xcb\xe5{~\xf9\xe9\x07^~\xf1\xba\xaf\xc6\x93\xd4\xd0\ +\x97\xa8\xf7-Fy\x9e>\xfd\x94\xc5b\xc1\xabW\xaf\xb8\xbe\xbe\x1e\xfd\xc49\xc7v\ +\xbb%\xcfs\xca\xb2\xa4\xaek\x9cs#\xc4c\x80(\x8a\xc6T\r"WJ\xb1\xba\x7f\xcf\ +\x93g/\xb8\xb8\xb8"\x9cV\r\xd0\xf9\x84\xab\x98]\xcc\x99\xcf\xe7\xdc\xdc\xdc\ +\xb0X,\x18"\xe6\x9c#\xcb2\xd6\xeb5eYr8\x1c\x10B\xf4\x9a\x92\xa3\x80Oa\x8c1\ +\xc4q<\x82\r%\x1f\xc2\x1d\xeb\xec\x8e4\x9d\xe1}8\x07!XD\xb0L\xa7Sf\xb3\x19\ +\xf3\xf9\x1c)\xe5\x18\xfe,\xcbX\xadV\x14E\x81\xf7\x1e)%!\x04\xa4\x94\xe3-\ +\x06M(\xa5\xd0Z\xff!*\xc35\xce9\x96\xf7\x19M\xb3G\xeb\xf8\x04$\x80s\rI\x1f\ +\xc24M1\xc6\x8cZ\xd8n\xb7\xac\xd7k\x8a\xa2 \x840:\xe5 \xc2A?\xc3g\xa5\x14!\ +\x04\xbc\xf7cTN+\xe8p8\xb0\xdf\xef\xa9\xf6[\xa6\xb3g\xe7\x11\xf1\xb6A\xa9\ +\xc9(.k-\xfb\xfd\x9e\xb6mGM\x0c\x83=\xb6\xed!\x1a\xc3vz\xce\x10\x91\x01np\ +\xe0<\xcf\xd9\x16\xf5\xb9F\x02\x01g\x9b\x91\xda{O]\xd7\xe4yN\xdb\xb6\xa3&\ +\x86\xc1N\x07\x1a\xca\xf5\xd4\x06NKw\x88\x96R\n\xef=UU\xb1\xdb\xed\x98\xcf\ +\xe7\xe4\xfb{|x$Vk\x9b\xf1"k-UU\xe1\x9c\x1b\xa1\x86A\xff\x1f\xc4iz\xb4\xd6\ +\xe3\xf9RJ\x9cs\xccf3.//\xb9\xb8\xb8\xc0\xa8\x87\xf1\x1ec\xf9v\xb3\xa8\xe5p8\ +P\xd75EQ\x90\xa6)\xce\xb9\xb1DO\x9f\xf21\xc4\xa9fNA\x06\x18c\x0c\xde\xfb\xd1\ +\xfe;\'\x8e\xb0g A`mKU7\xdc-?\xb2\\[<\xbf\x10\x84\xecLN\x88\xbe?\x91\xc7\x89\ +\xebd\xfb\xeb_\xbefq}5FD)5\x82\x18c\xc6\xb4XkI\x92\xe48\x15\x98\x88\xb6\xf3\ +\xb3\x93\xd4\xb8@S\xd7\x14\xfb\x82vg)[\x81\xf3\x02\x10H\xa5Q\xaa\x0f\xb3\x90\ +G\x90\xfe\xd0\xb4\xee,\x12J\xa93cSJ\xe1\x9c\x1b\x0ba\x9c\x87\xa4\x02\xfb(5\ +\x01IUW\xc4uE\x90\x02w\x10X/@*\xb4\x90H\xe1A\xaa\xae\xad\xe9\xe7\xa5\x01\xe8\ +q:\x1e\xfb\x88\xd6\x1a\xe7\x1cu]\x9f\xcd?B\xea\xe3\xdc4<\x9aT\x11\xe5\xbe\ +\xa4\xa9+l[\xe3\xdd\x81\xd66xg\xbb\xdd{B\xaf\xf0p\xda:\n\x81\xec\xd31@<\xb6\ +\xf9\xc1\xcc\x86\x8a\x1ct\xe7\xfc\xb1\xe4\xc7\xd4\x98(\xa5\xc8?\x90LR&S\x85w\ +\x9a`%6\xf4\xe9\x10\xb2?v\x95#\x10\xbdf$\xba\x1fx\x80\x18&\xb8\x01b\x10\xb1s\ +n,\x88\xa6i\xb0\x8e\xc7U\x03\xc9\xf4\x92\xcd\xea\x8eb\x97#\x95\x06\x99\x10\ +\xbc\xc2\x07\x10B!\xa5FJG\x90\x12I\x0f\xd7?\xa5VzL\x811f\x14\xe3d2\x19\xf5\ +\xd1\xb6-u]S\x96%eY\xb2\xde\xecF\xa1\x9eG\xc4\xc4\xa4\x97O\xd8n\x96(\xad\x89\ +\x13\x0f"&\x08pv(\xddN`R\x05$ D\x97o\xfd(\rQ\x141\x99L\xd0\xba\xd3\xc0`\x8ay\ +\x9e\x93\xe79EQP\x94->\xf4M\xf1Q#\xdd\xf6\xc9\x93\x05\x07\xeb\xd9\xac\xd7T\ +\xe5\x0e\\\x83\x0c-\xf8\x03\xceY\x9ck\xbb\xfe\xc3\xf7*\x11]wg\x8c\xfe\x03\ +\xc8`\xe9m\xdb\x8e}\xecz\xbdf\xb3\xd9\xf0\xdb\xdd\x03Ei\xcf,`\x04\x11B\x90^^\ +q\xf3\xe2%Y\xf6;\xeb\x8f+\x9a\xba@\x86\x03Z:dh\t\xde\x11\x82\xc5{\xd7Ys\xafY\ +)\xd5\x1f\x0cl\xa8\x92\xcdfC\x96e<<<\x90e\x19Y\x96\xf1q[b}\xf7$\x83\x19\xeaS\ +?\x00\xf8\xec\xf6+\x8a\xed\x86\xbb\xff\xbcCH\xc1u\xd4\xcf\x9eQ H\x87\xa0\x83\ +!hBp\x104\xde\xbb\xb1\x12\x9a\xa6\x19[\xca\xb2,\xd9l6<<<\xb0\\.\xb9\xbf\xbf\ +\xe7\xe7_\x97\xe4E;\xb6\xa6\x83A\x1f\xfb\x91\x9eHH\xc1\x97_\x7fCUW\xac\xb2\ +\x0f$qB\x1c\xc5\xc4q\x84\x89b\x84\x02T@(\xd7u\xff\xd2\xd3\xf4]\xfc0\'\r\xd1\ +\xc8\xf3\x9c\xf5zM\x96e\xdc\xdf\xdf\xf3\xef\x9f\xde\xb3\xdaT\xbd\x0f\t\x8e\ +\xeb\x9c\x13\x10\xd1\x7f)\x10L\xd2\x0b\xde\xbc\xfd\x96w?~\xcf\xef\xbf\xbf\ +\xef\xfdA\x92\xc4\x86$\x8eP\x1a\x94\x16H#\xd1Z\xb0\xdbmX.\xc5\xd8HYkGq\x0e\ +\xa9\xf9\xf9\xd7%\xabM\x85\x0f\x9d\r\x8a\x1edp$=d&\x0c9\xeai\xd3\xf4\x927o\ +\xbf\xe3\x97\x9f~`u\xff\x1ex@\x10\x90"pq\t\x13\xa3\x88\x13C\x14\x05V\xd9=M\ +\x95\x8f^q8\x1c(\xcb\x92\xa2(\xf8\xed\xee\x81\x8f\xdb\x92\xbch\xfb\xf5\x0cG_\ +:\xd9\xfa~\xe4\x18\x8d\xe3\xb13\xac\x97_\xbc\xe6\xc9\xb3\x17\xac\xb3;\xb2\ +\xd5\x9a\xba\xae\x98W%\xb3\xd9\x8c\xe9\xf4\x027I\xb8\xfb\xad9\x13i\xd34\xac7\ +;\x8a\xb2\xa5(-\xd6\xf7\x11\x10\xc7\xfb\x8e\x8d\xd5\xb9FBW\x92\xa1\xb7\xf1\ +\x10z;\xef\xd4tqqE\x9a\xceh\x9a\xae\xbd\xdb\x955E\x95a\xd4\x8a$\x89\x88L\xd4\ +\xcd\xceR\xe3\xbc\xc4:h\x1d\xbdO\x0c\x91\x1eb\x7f\xfeZ\xe0\xccYC\xe8V\xe5\ +\xdewkQ!\x1d\xd2I\x82\xa0+Y\xef\xf1>\xa0u\xcct\xf6\xac\xfb\x1c\xba\x05\x95\r\ +\xa1sH{\\\\\x1d{\x95>\xe1}u\x08q\xf2\x82#\xf4\xe7\xf9Q\x14\x7f\x8e\x175\xff\ +\x05g\'\x93\xa3\xa4\x98\xbd\xac\x00\x00\x00\x00IEND\xaeB`\x82' + +def get009Bitmap(): + return wxBitmapFromImage(get009Image()) + +def get009Image(): + stream = cStringIO.StringIO(get009Data()) + return wxImageFromStream(stream) + +index.append('009') +catalog['009'] = ImageClass() +catalog['009'].getData = get009Data +catalog['009'].getImage = get009Image +catalog['009'].getBitmap = get009Bitmap + + +#---------------------------------------------------------------------- +def get010Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +\x1eIDATx\x9c\xcd\x98[\x8f\x1c\xc5\x19\x86\x9f:\xf4az\x0e;\x18\xef\x8e\x1d\ +\xf0b\xd6D\x80p6A\x86(R\xec\x08\t)\x8a\x14\xfe_~\x00\xcae\x84r\x97\x8b\\D(\ +\x17\x91"\xf0\rB"\x96-\xc0\xb0\xde\xd9\x9d\xf5\x9cz\xfa\\U\xb9\xe8\xc3\xcc\ +\xd8\xfc\x00J\xaa\x9d\x9d\xd9\xe9\xaeg\xbfz\xbf\xf7\xfb\xaa\x05\xe0\xf8\x19\ +\x0c\rpz\xef\x01\xbe\x1f\xe0y>Jk\x94T\x08\xa9\x10B\xe0\x9cc\x8f\xd5\xb5/n\ +\xfb\x81\x13;\x7f\x14\xfc\xe4\x10\xfb\xbf\xba\xe6\xa7s\x8e\xcf\xff\xf9Y\r\ +\xe2\xfb\x01a\x18\xe1\x07a\x07#[\x10\x1c8\x87\xb3\x80\xab0&\xc7V9\xa6\xca\ +\xa9\xaa\x1c[UTUIe\x1c\x0e\x89T>\x9e\x1f\x11\xf6\x87x^P/,\xc4\x0e\x84\xa8q\ +\x058\xeb\xb0\xcel#\xe2y>~\x10\x12\x86=\xbc Dk\x1f%e\x8b\x8e\xb5%\x98\x14\ +\xe1*B\xdfG\xa9\x1eJ)\x00\xaa\xaa\xa2,K\xf2<\'I\x126\x9b\r\xeb\xd53\x16WgD\ +\xc3k\xbcrmB4<\xd8b\x88\x16G\xe0\x9c\xc5Z\xbb\x05QZ\xe3y>^\x10\xe2\xfbMT\x94\ +\xaa/0\x1b<e\x19\r\xc6\xf4\xfb}\xc20\xc4\xf7}\x84\x10Xk)\x8a\x82<\xcfI\xd3\ +\xb4\x86X\xafY,\x16,\x16\x0b\xe6\xf3s\x9e\xcf\xce8\xbay\x9b\xd7\x8f\xdfF\xc8\ +\x1a\x00Q\x039g1\xd5ND\x94T(\xad\xd1\xda\xaf\x81<\x1f)\x05\x9eH9\x18\x07\xbc\ +\xfa\xea/\x18\x8f\xc7\x8cF#\xa2(Bk\x8d\xb5\x96\xaa\xaa\xc8\xb2l\x0fb\xb9\\\ +\xd2\xef\xf7\xe9\xf5z\xf8\xbe\xcfl6\xe3\xc97\x0f\x89\x97\x0b\xdez\xf7}z\xd1\ +\xa0\x06A\x80s\x08\xb9\x03"\xa4BJ\x85\x92\x12\xa5\x14R\nB\x9ds\xe3\xfa\x88\ +\x1b7n0\x99L8::b<\x1e\xe3y\xde\x1e@\x1c\xc7\xa4iJ\xaf\xd7#\x0cC\x82 \xc0\xf7\ +}\xb4\xd6(U\xeb\xcc\x18\xc3\xd9\x0f\x8fH\xb3\x94\xd3{\xf7\x89\xa2a\x93\x08\ +\x16i\xe4\x0e\x88\x10\xb5\xa0\x9a\xfd\xf3D\xca\xcd\xc3\x03n\xdd\xba\xc5\xf1\ +\xf11\'\'\'L&\x13\xa4\x94\x94e\xc9f\xb3a\xb5Za\x8c!\x8a"\x00\xac\xb58\xe7\ +\x9a,\x03)e7\x85\x10H)\xb9\xb8x\xc6\xa3\xaf\xbf\xe4\xf4\xde\x03\x84\x90\x80\ +\xe8\x12N\x03\xf5\rp\xe0@\x98\r\x07\xe3\x80\xc9d\xc2\xf1\xf11w\xef\xde\xe5\ +\xf0\xf0\xb0[\xac,\xcbnZk1\xc6\xe0\x9cC)E\x10\x04\x08!\xd0Z\xe3y\x1e\x9e\xe7\ +u\xd1\t\x82\x800\x0c9?\x7f\xca\xb7\x8f\xbf\xe2\xf6\x9d\xbbM6\xeel\rM\x8aZ[\ +\xa2\xa4a8<b0\x1csrr\xc2\xe1\xe1a\xe7\'\xc6\x18\x96\xcb%\xab\xd5\x8a$I\xc8\ +\xb2\x0ccL\x07\xf1"\x80\xef\xfb\xddV\xb5"WJq5}\xca\xb5\xeb7\x19\x0c\x0ep\xbb\ +Y\x03\xd4>aR\x86\xfd\x11a\xafO^)\xbe\xf9~\xcd\x1bo\xd0A\xccf3\xe6\xf39I\x92P\ +\x14\x05B\x88FS\xb2\x13\xf0.\x8c\xe7y\x04A\xd0\x81\xb5)\xef\xdc\x19\xf3\xd9\ +\x19Q4\xc2Z\xb7\x0f\x82\xab\xc0\x96\x84\xe1\x04\xe5\x05\x94V1\xbd\\\xf2\xe9\ +\xdf\x1fr\xef\xbd\t\xaf\xf4\x05WWW\xc4q\x8c\xb5\x16)%\xce9\xa4\x94\xdd-ZM(\ +\xa5\xd0Z\xbf\x14\x95\xf6\x1ac\x0c\xe7\xd3\x19y\xbeA\xeb`\x07\xc4\x8119\x81\ +\xe7!\x95\xa62\x828)\xd8\x14\x0b\xd6\x9b)_|\xf1_^\x9f\x1c\xf0\xe1\xaf^\xc3\ +\xf7T\xe7\x94\xad\x08[\xfd\xb4\xef\x95R8\xe7\xb0\xd6vQ\xd9\xcd\xa0\xa2(\xd8l\ +6\xa4\x9b%\xfd\xd1\xf5\xfd\x88\xd8*G\xaa\x00P\xa4E\x85-cJ\x93\x91\xa4)\xf1z\ +\xcd\xc3\x8b)\x8f\xbf\xfd\x91?\xfd\xe1=\x8e\xae\x8f\xf6l\xbb\x8dF;vA\xdb\x88\ +\xb4p\xad\x03\xafV+\x96q\xb6\xaf\x11\x87\xc3T9RH\x8c\xb5$INn\x1c\xa5\x81,\ +\xcb\xc9\xb2\x94\xaa,\xb9z\xbe\xe0\xd3\xcf\xfe\xcdG\xbf{\x8f\x0fNo\xef\x14\ +\xc5-@\x1b\x95v\xb6\xd1RJa\xad%MS\xd6\xeb5\xe3\xf1\x98\xd5f\x8au/\x88\xb5\ +\xaar\x1cP\x14%\xa6\xcaH\xcb\x82\xca@YV\x94e\x81u\x8ev\xcd\x7f\xfd\xe7k\xbe\ +\x7f6\xe7\xcf\x1f\xdd%\x08\xbc=\x88\xdd\xed\xd1Zw\xd1\x91Rb\x8ca4\x1a1\x1c\ +\x0e\x19\x0c\x06x\xeab\xeb;m\xfa\xd6U\xb4\xa2\xc8\x0b\xd24%I\x12\xd24\xa3(rL\ +U5\xc5\xc9\xd1T-\x9e|\xf7\x8c\xbf\xfc\xf5s\x9e\x9e=\x7fI3\xbb \xad\x7f\xf4\ +\xfb}\xa2(\xea\xec\xbfvb\x1f\xf6@\x9c\xa0\xaaj\x93*\xca\x82"\xcf)\xf2\x8c"\ +\xcf(\x8bb\xc75\xa9/t\xdb(\xfe\xed\x1f\x0f\xc9\xf2r/"J\xa9\x0e\xa4\x15k\x18\ +\x86]\x19\xe8J\x81\xe7w]\xcdvk\x8c\xab\x01\x8a\x9c\xd2\n\xcaR`\xac\x00\x04Ri\ +\x94\x92\x8d\x9aD]\t\x9a\x1e\xe8\xc1\x87o\xd1\x0b\xfd\xbdH(\xa5\xf6\x8cM)\ +\x851\xa6s\xd9\xae\x0eI\x05\xd5\x9e\x8f\xd4MM\x9a\xa5\x04Y\x8a\x93\x02S\x08*\ ++@*\xb4\x90HaA\xaa\xba\xadi\xea\xd2\x9d7n\xf2\xdb\xdf\x9c\xbc\xa4\x8b\x17}Dk\ +\x8d1\x86,\xcb\xf6\xea\x8f\x90\xba\xd3H\x03"\x90\xca\'\xd9$\xf4z)\xd2\x93X\ +\xa3(\r(\xe5c\xa5\xc2\n\x89\x14\x02!\x14\x0e\xc7h0\xe2\x93\x8f\x7f\xdd\xddt\ +\x17\xe2E\x9b\xd7Z\x93\xe7y\xd7\xc3\x18c\xeai\xb7)\xdfm\x8d\xe7G\xc4\xabg\ +\x84\xbd\x88^_a\x8d\xc6U\x92\xca\t\x10\xb2\xae\x96B"\x84C\x08\xc1\'\x1f\x9f\ +\xd2\x8f\xc2\xbd\xedh!ZM\xb4 m\xc4\x8c1uB4\xcdTex1"\x10\xf6\x87,\xae\xce\x88\ +\xd7+\xa4\xd2 C\x9cUX\x07B(\xa4\xd4HipR\xf2\xfb\x0f\xde\xe1\xcd[\x87/\x01\ +\xb4\xe2l\xc5\xd8\xeb\xf5:}\x94eI\x96e$IB\x92$\xcc\x17kJ\xc3OD\xc4\x0b\x88\ +\x86\xd7X.\xceQZ\x13\x84\x16D\x80\x13`*\xd5\xec\xad\xe2\xb5\xd7&<\xf8\xf0\ +\x97]\xa1k\xe7\xeeV\xf8\xbeO\xaf\xd7C\xebZ\x03eYvn\xbaZ\xad\x88\xe3\x988)\ +\xb1\xaei\x8a\xb7>R\x8fW\xaeM(*\xcbb>\'M\xd6`r\xa4+\xc1\x16\x18S!\xa4\xe0\ +\x8f\xf7\xdf\xe9\x1a\xde\xdd\xdec\x17\xa2\xcd\x94\x16\xa2\xedc\xe7\xf39\x8b\ +\xc5\x82\x1f\xcf.\x88\x93jw\xe9-\x88\x10\x82hx\xc0\xd1\xcd\xdb\xccf\x97\xcc\ +\x9f_\x91g1\xd2\x15hi\x90\xae\xe4\xfe\x07o\x12\xfa\x8a\xaa38^\xf2\x8d\xd6M\ +\xdb,Y,\x16\xccf3...\x98\xcdf\xccf3\x9e/\x13*[\'Ik\x86\xbaI\x9an\xbc~\xfc6\ +\xf1r\xc1\xd9\x0f\x8f\x10Rp\xe8\xd7\xe2\xbbqs\xc4A\xa4X\xaf\xd7\xdd\xc2RJ<\ +\xcf\xdb\xcb\x84<\xcf\xbb\x962I\x12\x16\x8b\x05\x17\x17\x17\x9c\x9f\x9f3\x9d\ +Ny\xf2\xdd9\xab\xb8\xecZ\xd3\xb6ll\xfb\x91\x86HH\xc1[\xef\xbeO\x9a\xa5\\\xcd\ +\x9e\x11\x06!\xbd0\xc4W%\x97\x97\x97]\xa1k\x17o\xbby\xdf\xf7\xc9\xb2l/\x1a\ +\xab\xd5\x8a\xf9|\xcel6c:\x9d\xf2\xbf\xc7O\xb9Z\xa4\x8d\x0f\t\xb6\xe7\x9c\ +\x1d\x10\xd1|(\x10\xf4\xa2\x01\xa7\xf7\xee\xf3\xe8\xeb/\xb9\xbc|\x8a\xef{\ +\xf4B\x1f\x01\xdd\x7f\x9d\xa6)\xa3\xd1\xa8;\xebh\xad\x91Rv`\xad8\xdb\xady\ +\xf2\xdd9W\x8b\x14\xebjg\x16\r\xc8\x9e\xc5o\xb5+:\xda(\x1arz\xef\x01\xdf>\ +\xfe\x8a\xab\xe9S\x9c;\xeb\x9a\x9a$IX\xaf\xd7\x0c\x87\xc3\xae~\xb4 \xbb\xdf\ +\x89\xe3\x98\x1f\xcf.x\xbeLX\xc5es\x9ea\xebK;\xa3\xe9G\xb6\xd1\xd8\xbe\n\x84\ +\x90\xdc\xbes\x97k\xd7o2\x9f\x9dq>\x9duG\x89\xf1x\xcc`0\xa0\xd7\xeb\xbd\xd4\ +\x81\xe5y\xce|\xb1&NJ\xe2\xa4\xa2\xb2M\x04\xc4\xf6\xbe]c\xb5\xaf\x11\x87\xb3\ +\x0e\xe7,\xce\xd9\xba\xcdw\x96VM\x83\xc1\x01Q4"\xcf\xeb\xf6n\x19g\xac6S<uA\ +\x18\xfa\xf8\x9e_?=\x90\x1ace\xdd\xc7\x18\x1a\x9fh#\xdd\xc6~\xff\xb1\xc0\x9e\ +\xb3:W\x9f\xca\xad\xad\xcf\xa2B\x1a\xa4\x918\x01\xce\x1a\x9c\xb5X\xeb\xd0:\ +\xa0?\xba^\xbfwukP\xb9\xba\x93\xa3\xda\x1e\xae\xb6][\xb3\xe1Mv\x08\xb1\xf3\ +\x80\xc35\xdf\xb3\x9d(~\x1e\x0fj\xfe\x0f\t\\\xaa\xf77\xc3\x82f\x00\x00\x00\ +\x00IEND\xaeB`\x82' + +def get010Bitmap(): + return wxBitmapFromImage(get010Image()) + +def get010Image(): + stream = cStringIO.StringIO(get010Data()) + return wxImageFromStream(stream) + +index.append('010') +catalog['010'] = ImageClass() +catalog['010'].getData = get010Data +catalog['010'].getImage = get010Image +catalog['010'].getBitmap = get010Bitmap + + +#---------------------------------------------------------------------- +def get011Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xeeIDATx\x9c\xcd\x98Yo\x1b\xe7\x15\x86\x9fo\x99\x85\xc3E\x12\xedH\xb6\x93\ +\xb8vm\xc7\r\x1a\x18\x08|Q\xa0H.\xd2?\xdc?\xd0\xab\xfe\x80\x04(\x82\x04\x8d\ +\x12\xc7\x86c\x89\xa4)q\x9f\xf5[z1\x8bH9\xbd\x0f\x81\xe1\x88\xe4h\xe6\x99s\ +\xde\xf3\x9e\xf3\x8d\x00<\x7f\x80\x97\x06x\xf1\xf2k\xc20"\x08B\x94\xd6(\xa9\ +\x10R!\x84\xc0{\xcf\x01\xabow\xfe\xe6\x0b/\xf6~\x14\xfc\xeeK\x1c\xfe\xe9\x9b\ +w\xef=\xff\xfe\xd7?k\x900\x8c\x88\xe3\x840\x8a;\x18\xd9\x82\xe0\xc1{\xbc\x03\ +\xbc\xc1\xda\x02g\n\xac)0\xa6\xc0\x19\x831\x15\xc6z<\x12\xa9B\x820!\xee\x0f\ +\t\x82\xa8\xbe\xb0\x10{\x10\xa2\xc6\x15\xe0\x9d\xc7y{\x13\x91 \x08\t\xa3\x98\ +8\xee\x11D1Z\x87()[t\x9c\xab\xc0f\xe0*\xe20@\xeb\x1eJ)\x00\x8c1TUEQ\x14\xa4i\ +\xcan\xb7c\xb3\xbedyuA2\x1cs2>#\x19\x1e\xdd`\x88\x16G\xe0\xbd\xc39w\x03\xa2\ +\xb4&\x08B\x82(&\x0c\x9b\xa8(U\xff\x83\xdd\xa1\xa4e\xd8\x1f\x11\xc7gH\x15pr4\ +@J\x89s\x8e\xb2,)\x8a\x82,\xcbj\x88\xcd\x86\xe5r\xc9r\xb9d\xb1\x98p=\xbf\xe0\ +\xf4\xfe#>y\xf8\x1c!k\x00D\r\xe4\xbd\xc3\x9a\xbd\x88(\xa9PZ\xa3uX\x03\x05!R\ +\n\x02\x911:\n\x19\x8dN\x89{}T\x10a\x9c\xe0\xec\xee\t\xe3\xe3\x04c\x0cy\x9e\ +\x1f@\xacV+\xfa\xfd>\xbd^\x8f0\x0c\x99\xcf\xe7\xbc\xfa\xefwlWK\x9e~\xfe%\xbd\ +dP\x83 \xc0{\x84\xdc\x03\x11R!\xa5BI\x89R\n)\x05\xb1.8\xbd3\xe4\xe4\xe4\x0e\ +\xc9\xe0\x08\x1d$TN\xb1MKr\x17\xf1\xe9\xa7\x9f\x92e\x19\xdb\xed\x96,\xcb\xe8\ +\xf5z\xc4qL\x14E\x84a\x88\xd6\x1a\xa5j\x9dYk\xb9\xf8\xed\x9c,\xcfx\xf1\xf2+\ +\x92d\xd8\x14\x82CZ\xb9\x07"D-\xa8&\x7f\x81\xc88\x1d\x0f9=\xbd\xcf\xe8\xf8\ +\x0eq\xff\x04\xa1\x13v\x99aW.y\xf3\xee\x9a\x7f\xfc\xbd\x8f\xb5\x96$I\x00p\ +\xce\xe1\xbdo\xaa\x0c\xa4\x94\xdd&\x84@J\xc9lv\xc9\xf9\x0f\xdf\xf2\xe2\xe5\ +\xd7\x08!\x01\xd1\x15\x9c\x06\xea\x13\xe0\xc1\x83\xb0;FG!\'\xe3;\x0c\x8f\xee\ +p4~@\xdc\x1fc\xbcf\x95\xce\xd8\xec\n\xd2,\xe3\x87\xf3w<\xf8\xa8\x86\xf1\xde\ +\xa3\x94"\x8a"\x84\x10h\xad\t\x82\x80 \x08\xba\xe8DQD\x1c\xc7L&oy\xfd\xcb\ +\xf7<z\xf2ES\x8d{\xa9\xa1)Q\xe7*\x94\xb4\x8cF\xa7$\x83#z\x83\x13\xe2\xfe\x98\ +\xb07b\xfa\xee\x92\xcb\xcb\tWWs\xb6\x9b\r\xff\xf9\xf15\xe3\xe1\x13\xac\xb5\ +\x1d\xc4m\x800\x0c\xbbT\xc5qL\x18\xd6Ep5}\xcb\xf8\xee}\x06\x83#\xfc~\xd5\x00\ +\xb5O\xd8\xac\xae\x8e^\x1f\x1d$\x08\x9d`\xbcf\xfa\xee\x92\xd7\xbf\xbe\xe1\ +\xfd\xfb\x19\x9b\xcd\x9a<\xcf\xf8\xf1\xa7\xdf\xf8\xe6oO\x1bMI\xb4\xd68\xe7\ +\x0e`\x82 \x8a\xa2\x0e\xac-y\xef/X\xcc/H\x92\x11\xce\xf9C\x10\xbc\xa9}">C\ +\x05\x11\x95S\xec2\xc3*\x9dqy9\xe1\xfd\xfb\x19\xeb\xf5\x8a,K\xb1\xb6\x0e\xe7\ +\xcfo\xde\xf3\xf4O\x1fu\xa7h5\xa1\x94Bk\xfdAT\xa4\x94x\xef\xb1\xd62\x99\xce)\ +\x8a\x1dZG{ \x1e\xac-\x88\x82\x00\xa94\xc6\n\xb6i\xc9\xae\\\xb2\xd9\x15\\]\ +\xcd\xd9l\xd6dY\xda\x88\xb2\xb6\xf8\x9f\xdf\xbc\xe7\xf9\x9f\xefubmE\xa9\x94\ +\xc2{\x8fs\xae\x8b\xca~\x05\x95e\xc9n\xb7#\xdb\xad\xe8\x8f\xee\x1eF\xc4\x99\ +\x02\xa9"@\x91\x95\x06Wm\xa9lN\x9ael7\x1b\xf2<k\x84\xd9\x90#8\xffu\x06\xdf\ +\xdcD\xa3\xb3\xf1\xc6\xd2\x85\x10]DZ\xb8\xd6\x81\xd7\xeb5\xabm~\xa8\x11\x8f\ +\xc7\x9a\x02)$\xd69\xd2\xb4\xa0\xb0\x9e\xcaB\x9e\x17\xe4y\x86\xa9*\xdac\xdb\ +\x0efL\xc1\xf9\xeb\x19\xcf\x1e\x9dv\x17n\xa3\xd2nm\xb4\x94R8\xe7\xc8\xb2\x8c\ +\xcdf\xc3\xf1\xf11\xeb\xdd\x14\xe7o\x89\xd5\x98\x02\x0f\x94e\x8559YUb,T\x95\ +\xa1\xaaJ\x9c\xf7M48\xe8\xa4\xe7\xaf\xa7<{t\xdaA\xec\xa7Gk\xddEGJ\x89\xb5\ +\x96\xd1h\xc4p8d0\x18\x10\xa8\xd9\x8d\xef\xb4\xe5[wQCY\x94dYF\x9a\xa6dYNY\ +\x16Xc\x9a\xe6\xe4A\x1c\xb6\xf9\x9f^\xcd\x0eRq[\xb0\xad\x7f\xf4\xfb}\x92$\ +\xe9\xec\xbfv\xe2\x90\xf6\xee\x1a\xb1\n\x8c\xa9\xa8\xaa\x8a\xb2*)\x9d\xa4,\ +\xc1\xbaZ\xe5\xb5\xeb\xd6N(\xda\xd44<\x0f?\x1e\xb3\xdaf\x1c\x0f\x93."J\xa9\ +\x0e$\x08\x82.-\xc6\x18\xe28\xbei\x05AHU\x17\xe0^j\xac\xa7,\n\xca\xb2\xa0r\ +\x82\xaa\x12X\'\x00\x81T\x1a\xa5$\xe0\xd1A\xc4g\x8f\xef\xf1\xec\xf1\x19\x0f\ +\x1f\x8c\x89\xa3\xe0\x83H(\xa5\x0e\x8cM)\x85\xb5\xb6s\xd9\xae\x0fI\x05\xe6\ +\xc0G\xea\xa1&\xcb3\xa2<\xc3K\x81-\x05\xc6\t\x90\x8a8\x88\xf9\xec\xc9\xc7\ +\xfc\xe5\xc9}>{|\xaf\xeb\x1f\xffO\x17\xb7}Dk\x8d\xb5\x96<\xcf\x0f\xfa\x8f\ +\x90\xba\xd3\x88n\xd5\'UH\xbaK\xe9\xf52d \x81\x88\x07\xf7\xc6<{\xfc\t\x7f}\ +\xfe\xb0k\xeb\xfb%\xda\x02\xb4\xe9h!n\xdb\xbc\xd6\x9a\xa2(\x10B\xe0\x9c\xc3Z\ +[o\xee\xa6\xe4\xbb\xd4\x04a\xc2n}I\x7f0\xe0\xech\xc4\xc3O\xcf8>>\xe6\xe4$\ +\xa1,\xcb.\xd7\xad1\xed\x97h\xfb}\x0b\xd1\n\xb4\x05i\x8f\xb7\xd6\xd6\x05\xd1\ +\x0cS\xc6r;"\x10\xf7\x87,\xaf.\xd8n\xd6\x0c\x07}\xae\xaf\xaf\x91Rvw\x16\x04\ +\x01Z\xeb\x836\x7f\x1b\xa0\x15g+\xc6^\xaf\xd7\xe9\xa3\xaa*\xf2<\'MS\xd24e\ +\xb1\xdctB=\x8cH\x10\x91\x0c\xc7,\x16\x93N`\xb7A\xc20<\xb0\xf2Vx-@\x1b\x810\ +\x0c\xe9\xf5z\x1dxUU\x9d\x9b\xae\xd7k\xb6\xdb-\xdb\xb4\xc2\xf9f(\xde\x07\x01\ +8\x19\x9fq=\xbf`>\x9fw\x17k-\xbam\\\xed\x05[\x9d\xfc\x1eD{#-D;\xc7.\x16\x0b\ +\x96\xcb%\xef.flSs\xe0G\x1d\x88\x10\x82dx\xc4\xe9\xfdG\xbc\xfa\xefwXk\xbb\ +\x0b\xb5\x00-P\x14E\xdd\xf4}\xdb7Z7m\xd3\xb1\xd9l\x98\xcf\xe7\xccf3\xe6\xf39\ +\xf3\xf9\x9c\xebU\x8aqu\x91\x88\xfd\tm\xdf\xb2?y\xf8\x9c\xedj\xc9\xc5o\xe7H)\ +?\x10\xde\xbe.\xda\xd4\xedWBQ\x14H)\xbbt,\x97Kf\xb3\x19\x93\xc9\x84\xe9t\xca\ +\xab7\x13\xd6\xdb\xaa\x1bM\xdb\xb6q\x90\x1a\x10\x08)x\xfa\xf9\x97dy\xc6lvy0Y\ +\xb5\xa5\xda\xb6xkm\xe7\x98a\x18\x92\xe7y\x17\x8d<\xcfY\xaf\xd7,\x16\x0b\xe6\ +\xf39\xd3\xe9\x94\x9f~y\xcb\xd52\xab\xdb\x84\x10\xbf\x13\x11\x9a%\x8f\xa8\ +\xf7\xbdd\xc0\x8b\x97_q\xfe\xc3\xb7L&o\xf7&+\xdf\xddu\x96e\x8cF#\xfa\xfd>q\ +\x1c\xa3\xb5\xee\xd6:\xc6\x98N\x9c\xcb\xe5\xb2^R\xbc\x99p\xb5\xccp^ hG\x05\ +\xd1-\\u\x9b\x19\xdf\xe6\xa8\xa1M\x92!/^~\xcd\xeb_\xbe\xe7j\xfa\x16\xef/\xba\ +\xa1&MS6\x9b\r\xc3\xe1\xb0[F\xb4 \xfb\xc7l\xb7[\xde]\xcc\xb8^\xa5\xac\xb7U\ +\xb3\x9e\x01\x84l\xa6\xf8[b\xf5{\xd1\xb8\xd9\x0b\x84\x90<z\xf2\x05\xe3\xbb\ +\xf7Y\xcc/\x98L\xe7\xecv;\xd6\xeb5\xc7\xc7\xc7\x0c\x06\x03z\xbd\xde\x07\x13X\ +Q\x14,\x96\x1b\xb6i\xc565\x18\xd7D@\xdc\x9c\xb7[\x0f\x1fj\xc4\xe3\x9d\xc7{\ +\x87\xf7\xae\x1e\xf3\xbd\xa3U\xd3`pD\x92\x8c(\x8az\xbc[ms\xd6\xbb)\x81\x9a\ +\x11\xc7!a\x10\xd6O\x0f\xa4\xc6:Y\xcf1\x96\xc6\'\xdaH\xb7\xb1?|,p\xe0\xac\ +\xde\xd7\xabr\xe7\xea\xb5\xa8\x90\x16i%^\x80w\x16\xef\x1c\xcey\xb4\x8e\xe8\ +\x8f\xee\xd6\x9f}\xbd\xa02\xbe\x9e\xe407\x8b+\xdfMPM\xc2\x9b\xea\x10b\xef\ +\x01\x87o\x8es\x9d(\xfe\x18\x0fj\xfe\x07\x1e\x08y"\xf0|\xe7<\x00\x00\x00\x00\ +IEND\xaeB`\x82' + +def get011Bitmap(): + return wxBitmapFromImage(get011Image()) + +def get011Image(): + stream = cStringIO.StringIO(get011Data()) + return wxImageFromStream(stream) + +index.append('011') +catalog['011'] = ImageClass() +catalog['011'].getData = get011Data +catalog['011'].getImage = get011Image +catalog['011'].getBitmap = get011Bitmap + + +#---------------------------------------------------------------------- +def get012Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xedIDATx\x9c\xcd\x98\xdbr\xdbF\x16EW7\x80&\x00^D\xd1\x8e\x14\xcbN\xca5v\xa2\ +\xa4\xc6QU\xca\x0f\xf3\x92|\xf3\xfc\xc0<\xcd\x07$/\x99T%\x1e_4\x8e%\x92\xa2L\ +\xf0\x86{w\xcf\x03\xd8\x10(\xe7\x03\xc2*\x08\x12\x05\x12\x0b\xfb\x9c\xbd\xfb\ +\x00\x02\xb0\xfc\x05^>\xc0\xc5\xcb\x1fQ\xaaG\x10(<\xdf\xc7\x93\x1eBz\x08!\ +\xb0\xd6r\xc0j\xdd\xce\xde\xbdaE\xe7\x9f\x82?}\x89\xc3_\xed\xfe\xa7\xb5\x96\ +\x7f\xff\xeb\x9f\r\x88R=\xc20F\xf5\xc2\x16F:\x10,X\x8b5\x80\xad\xd1\xba\xc0\ +\xd4\x05\xba.\xa8\xeb\x02S\xd7\xd4uE\xad-\x16\x89\xf4\x14\x81\x8a\t\xfbC\x82\ +\xa0\xd7\x9cX\x88\x0e\x84hp\x05Xc1V\xdf)\x12\x04\n\xd5\x0b\t\xc3\x88\xa0\x17\ +\xe2\xfb\nOJ\x87\x8e1\x15\xe8\x0cLE/\x08\x90^\x0f)$\x16\xa8\xeb\x9a\xaa\xaa(\ +\x8a\x82<\xcbH\xd3\x94\xdd\xfa\x9a\xe4\xf6\x8ax8\xe1xrJ<<\xba\xc3\x10\x0eG`\ +\xad\xc1\x18s\x07\xe2\xf9>A\xa0\x08z!J\xedU\xf1\xbc\xe6\x03z\x87\'5\xc3\xfe\ +\x880<Ez\x01 \xd1\xc6P\x96\x15eQRV%eY\x10F\x19Q\x9c1\x1c\x0eY\xafW,\x97S>.\ +\xae8y\xf4\x94\'_\x9e#d\x03\x80h\x80\xac5\xe8\xba\xa3\x88\'=<\xdf\xc7\xf7U\ +\x03\x14(\xa4\x14\x04"ct\xa4\x18\x8dN\x08\xa3>^\xd0\xa36\x82\xac\xa8I\xd3\ +\x02]\xe7\x94d\x94FR[\x81\x95\x02\x19H\x9e|6a\xb9\x8cQJ\xb1X,x\xf3\xdb\xcflW\ +\t\xcf\xbf\xfd\x9e(\x1e4 \x08\xb0\x16!; BzH\xe9\xe1I\x89\xe7yH)\x08\xfd\x82\ +\x93\x07C\x8e\x8f\x1f\x10\x0f\x8e\xf0\x83\x98\xcaxl\xd3\x12]l)\xb4%\xabJ\xd2\ +RP\x96PU\x02]\n\x8e\x8f\xc6\x9c\x9e\x8e\x08\x82\x00\xcfk\xfaLk\xcd\xd5\x1f\ +\xaf\xc8\xf2\x8c\x8b\x97?\x10\xc7\xc3\xbd\x11\x0cR\xcb\x0e\x88\x10MC\xed\xeb\ +\x17\x88\x8c\x93\xc9\x90\x93\x93G\x8c\xc6\x0f\x08\xfb\xc7\x08?f\x97\xd5\xec\ +\xca\x84\xda\xe4T\x1a\xea\x1a\xb4\x91\xcd\xa6\x05\xb5\x11<9;e<\xee!\xa5l7!\ +\x04RJ\xe6\xf3k^\xfd\xfa\x13\x17/\x7fD\x08\t\x88\xd6p>\x80\xb5v\xef\x0e\x10z\ +\xc7\xe8Hq<y\xc0\xf0\xe8\x01G\x933\xc2\xfe\x84\xda\xfa\xac\xd29\x9b]A\x9ae\ +\xe4yAU\xd7\x18\xa3\x1b\x8b\x0b\x01\xd2\xe3\xfc\xf9\x17\x18]\x11\x04\x01A\ +\x10\xa0\x94\xc2\xf7}z\xbd\x1ea\x182\x9d\xbe\xe7\xdd\xeb_x\xfa\xec\xc5\xde\ +\x8d\x9d\xd2\xb0\xb7\xa81\x15\x9e\xd4\x8cF\'\xc4\x83#\xa2\xc11a\x7f\x82\x8aF\ +\xcc>\\s}=\xe5\xf6v\xc1v\xb3!\xcf3\xaa\xaa\xc4h\xdd\\\xb1\xe7\xf3\xc5\xe9C&\ +\xc7G\x94e\x89R\n\xa5\x14\xbd^\x0f\xa5\x14a\x18\xa2Tc\x82\xdb\xd9{&\x0f\x1f1\ +\x18\x1ca\xbb\xae\x01\x9a\x9c\xd0Y\xe3\x8e\xa8\x8f\x1f\xc4\x08?\xa6\xb6>\xb3\ +\x0f\xd7\xbc{{\xc9\xcd\xcd\x9c\xcdfM\x9eg\xd4U\x85\xb1\xb6\t&!\xf1<\xc97\xcf\ +\x1f\x13EQ\xabF\x10\x04\xf4z\xbdV\x99\xc6\x89`\xed\x15\xcb\xc5\x15q<\xc2\x18\ +{\x08\x82\xad\xc1T\x84\xe1)^\xd0\xa32\x1e\xbb\xacf\x95\xce\xb9\xbe\x9ers3g\ +\xbd^\x91e)Z\xeb\xfd\x17\xba\xb0j\x02\xe7\x9b\xe7g\xed\t}\xdf\xffD\x15)%\xd6\ +Z\xb4\xd6Lg\x0b\x8ab\x87\xef\xf7: \x16\xb4.\xf6a\xe5Sk\xc16-\xd9\x95\t\x9b]\ +\xc1\xed\xed\x82\xcdfM\x96\xa5\x18c\xb0\xb6\x13\xf1B"\xb0L&\xc7\x8cG}\x00<\ +\xcf\xc3Z\x8b1\xa6U\xa5\xeb\xa0\xb2,\xd9\xedvd\xbb\x15\xfd\xd1\xc3CEL]\x10\ +\x04\x11q\x14\x81\xf4X\xad\xb7T:\'\xcd\xb2\xb6\'\xb4\xd6X\xbb\'Gt\xd6\x0f\ +\xc1\xc5\xf9\x13\xa4\x94\x07\x91.\x84h\x15qpEQ\x90\xa6)\xeb\xf5\x9a\xd56?\ +\xec\x11\x8bE\xd7\x05\x9e\xe7\x11\x85\x8a\xf3g\x9f3\x9e|\xc6mR\xf0\x9f\xdf\ +\xff\xe0\xe6fN]U\xb8c?Y\xd8\x04|\xf5\xb7\x936\x06\xba\xd6\x050\xc6\xe0y\x1e\ +\xc6\x18\xb2,c\xb3\xd90\x1e\x8fY\xeff\x18{\xafY\xeb\xbah?T\xd75\xbe\xb4|\xf1\ +\xf9\x80\xc7\'_\xf3\x8f\x8b3^\xff\xef\x86W\xef\xe6\xbc\xbd\x9c~\xc2\xf1`2f<\ +\x8c\x0f@\\\x9f8u\xa4\x94h\xad\x19\x8dF\x0c\x87C\x06\x83\x01\x817\xdf\xaf\ +\xee\x1d\xfb6\xabhMY\x96\xe4y\xcev\xbb%\x8ec\xb4\xd6x\x12\xbe}\xf69\x7f\xff\ +\xea\x8c\xaa6\xfc\xf7\xf2\x86\xdf\xdfNys9\x05\x0b\xdf\x9d?nK\xe1\x94p \x0e&\ +\x08\x02\x8c1\xf4\xfb}\xa2("\x8a"\xc2PQ\x1f\x80XA]W\xed*\x9ae\x19Y\x96\xed\ +\x9da\xf7\xb1\xdf\xc8\x1c\xf6\x02^|}\xc6\x8b\xaf\xcf(\x8a\x8aW\x977|\xf9x\ +\xd2\xaa!\x84\xc0\xf3\xbc\x16\xc4E\xbdS:\x0cC\xc20l\x9c\x14(\xaa\xc6\x80\x9d\ +\xd2h\xdbB\xecv;\xa2(Bk\xdd\xa6\xa2\xef\xfbm\xe9Z\xa8P\xf1\xdd\xf9\xe3O\x94\ +\xf0<\xef Y=\xcfCk\xdd\xa6\xac\xef\xfb\x8d\x8b\xa4\x07\xf5\xbd\xd2Xd3K\xecvl\ +6\x1b\xc20\xc4Z\xdbB8\x80\xae#\xba[\xb7\x1c\xf7s\xc4\xf7}\xb4\xd6\xe4y~\xb0\ +\xfe\x08\xe9\xdf\xef\x11\x81\xf4T\x0b\xb1Z\xad\xe8\xf5zXk\xdb\xfa\xfa\xbe\ +\x7f\xe0\x84.\x80+\x87\x83\xe8\xaa\xe1@\x8a\xa2@\x08\x811\x06\xadu\xb3\x19\ +\xd96|[\x9a@\xc5l\xd6\xd7$IB\xbf\xdfG)\xd5\x1c\xb0\xaf\xb3\xab\xb5\x0b\xa6\ +\xaeE\xdd\xfb\x0e\xc2-p\x0e\xc4\x1d\xaf\xb5n\rQ\x14\x05\xb5\xe6\xbe"\x10\xf6\ +\x87$\xb7W$IB\x14E\xad\x02\xee\xca\x9c*\xee\x83\x7f\x06\xe0\xa0]3FQ\xd4\xf6G\ +UU\xe4yN\x9a\xa6\xa4i\xca2\xd9\xb4\x8dz\xa8H\xd0#\x1eNX.\xa7m\x83\xdd\x07QJa\ +\x8ci\xaf\xd05\x9e\x03p\n(\xa5\xda\x8b\xb1\xd6RUU\x9b\xa6\xeb\xf5\x9a\xedv\ +\xcb6\xad0v?\x14wA\x00\x8e\'\xa7|\\\\\xb1X,\xda\x93\xb9\x88v\x0b\x97;\xa1\ +\xeb\x93?\x83p\x17\xe2 6\x9b\rI\x92\xb0\\.I\x92\x84\x0fWs\xb6i\xdd=\xf5\x1d\ +\x88\x10\x82xx\xc4\xc9\xa3\xa7\xbc\xf9\xedg\xf4~\xcep\xdd\xefj\xef67}\xdf\ +\xcf\r\x17`\xae\x1c\x9b\xcd\x86\xc5b\xc1|>g\xb1X\xb0X,\xf8\xb8J\xa9Mc\x12\ +\xd1\x9d\xd0\xba\x91\xfd\xe4\xcbs\xb6\xab\x84\xab?^!\xa5\xfc\xa4\xf1\xba}\ +\xe1J\xd7uBQ\x14H)\xdbr$I\xc2|>g:\x9d2\x9b\xcdxs9e\xbd\xad\xda\xd1t\xdfr\x87\ +\xa5\x01\x81\x90\x82\xe7\xdf~O\x96g\xcc\xe7\xd7\x07\x93\x95\xb3\xaa[\xe2\xb5\ +\xd6mb*\xa5\xc8\xf3\xbcU#\xcfs\xd6\xeb5\xcb\xe5\x92\xc5b\xc1l6\xe3\xf7\xd7\ +\xef\xb9M\xb2f\xac\xdc\xcf1\x87\x8a\xb0\xbf\xe5\x11\xcd>\x8a\x07\\\xbc\xfc\ +\x81W\xbf\xfe\xc4t\xfa\xbe3Y\xd9\xf6\xaa\xb3,c4\x1a\xd1\xef\xf7\t\xc3\xb0u\ +\x99\x03s\xcd\x99$IsKq9\xe56\xc90V \xb8\x1b\xa8\xdc\x8d\xab\xef*c]\x8d\xf6\ +\xb4q<\xe4\xe2\xe5\x8f\xbc{\xfd\x0b\xb7\xb3\xf7X{\xd5\x0e5i\x9a\xb2\xd9l\x18\ +\x0e\x87\xfb\xc5\xeb\x0e\xa4{\xccv\xbb\xe5\xc3\xd5\x9c\x8f\xab\x94\xf5\xb6\ +\xda\xdf\xcf\xd0\x0cS\xe2.\xccZ\x10\xdbQ\xe3n/\x10B\xf2\xf4\xd9\x0b&\x0f\x1f\ +\xb1\\\\1\x9d-\xd8\xedv\xac\xd7k\xc6\xe31\x83\xc1\x80(\x8a>\x99\xc0\x8a\xa2`\ +\x99l\xd8\xa6\x15\xdb\xb4\xa66{\x05\xc4\xdd\xf7\xb6\xf7\xc3\x87=b\xb1\xc6b\ +\xad\xc1Z\xd3\x8c\xf9\xd6\xe0\xbai08"\x8eG\x14E3\xde\xad\xb69\xeb\xdd\x8c\ +\xc0\x9b\x13\x86\n\x15\xa8\xe6\xe9\x81\xf4\xd1FRk\xa84\xfb\x9cpJ;\xed\x0f\ +\x1f\x0b\x1c$\xab\xb5\xcd]\xb91\xcd\xbd\xa8\x90\x1a\xa9%V\x805\x1ak\x0c\xc6X\ +|\xbfG\x7f\xf4\xb0\xf9\xdb\x1a\xac\xb5\xd4\xd66\tY\xdb\xf6K\xdd\xbe-\xb8p\ +\x83v\xe7\x01\x87\xdd\x1fg\xda\xa6\xf8k<\xa8\xf9?\xa2\xcax\xb9\xd2zv\x8b\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def get012Bitmap(): + return wxBitmapFromImage(get012Image()) + +def get012Image(): + stream = cStringIO.StringIO(get012Data()) + return wxImageFromStream(stream) + +index.append('012') +catalog['012'] = ImageClass() +catalog['012'].getData = get012Data +catalog['012'].getImage = get012Image +catalog['012'].getBitmap = get012Bitmap + + +#---------------------------------------------------------------------- +def get013Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +HIDATx\x9c\xcd\x98\xdbn\x1b\xd7\x15\x86\xbf\xbd\xf7\x1cy\x12-Kf\x9c\xc4\xaa\ +\xe1\xb8qS\xa8nR\x15\x01\x82\xc6E\x81\xa0@\n\xe4\xaa}\xba\xbe@/z\xd3\x9b^\ +\x16\x08P\xa0g4A\x81 @b\xc4I\xeaD\x96\xe4\x919\x1c\x923\x1c\xce>\xf4b\xb8G\ +\xa4\xeb\x07\x08\x81\xd1H\xe2&\xe7\x9b\xb5\xfe\xf5\xaf\xb5G\x00\x8e\xef\xc0+\ +\x00\xb8\x7f\xf2\x80(\x8a\t\xc3\x08\x15\x04(\xa9\x10R!\x84\xc09\xc7\x0e\xab\ +\xf3\'w\xf5\x0f\'\xb6\xde\x14\xbc\xf0%v\x7fu\x9b\x9f\xce9\xfe\xfc\xa7?\xb4 Q\ +\x14\x93$=\xa28\xe9`\xa4\x07\xc1\x81s8\x0b8\x8d15V\xd7\x18]\xa3u\x8d\xd5\x1a\ +\xad\x1b\xb4q8$RE\x84Q\x8f\xa4?$\x0c\xe3\xf6\xc2BlA\x88\x16W\x80\xb3\x0e\xeb\ +\xccUD\xc20"\x8a\x13\x92$%\x8c\x13\x82 BI\xe9\xd1\xb1\xb6\x01S\x81m\x88\xc3\ +\x10\xa9b\xa4\x908@kM\xd34\xd4u\xcd\xaa\xaa(\xcb\x92E\xf1\x84\xfc\xf2\x94\ +\xdep\x9fk\xfb\x13z\xc3\xbd+\x0c\xe1q\x04\xceY\xac\xb5W *\x08\x08\xc3\x880N\ +\x88\xa2MT\x94j?`\x96(i\x18\xf6G$\xc9\x04\xa9B@b\xace\xbdnX\xd7k\xd6\xcd\x9a\ +\xf5\xba&I+\xd2^E\x92\xf6X\xcc\x0bf\xf9\x19\xcf\xb2Sn\xdc\xbc\xcd\xabG\xf7\ +\x10\xb2\x05@\xb4@\xceY\x8c\xde\x8a\x88\x92\n\x15\x04\x04A\xd4\x02\x85\x11R\ +\nBQ1\xda\x8b\x19\x8dn\x90\xa4}T\x18\xa3\xad\xa0\xaa5eYc\xf4\x8a5\x15k+\xd1N\ +\xe0\xa4@\x86\x92\xb4\xaf\x90*@\x05\x01\xf9t\xca\xa3\xcf>f1\xcb\xb9\xfb\xc6[\ +\xa4\xbdA\x0b\x82\x00\xe7\x10r\x0bDH\x85\x94\n%%J)\xa4\x14$A\xcdK\x07#&\x93\ +\t*\xea\xa3\x82\x94\xc6*\x16\xe5\x1aS/\xa8\x8d\xa3j\xd6\x94k\xc1z\rM#0k\x811\ +\x12g\x02\x90\tqb\x19\xed9\x8c1\x9c~\xf3\x90jUq\xff\xe4]z\xbd\xe1\xa6\x10,\ +\xd2\xc8-\x10!ZAm\xf2\x17\x8a\x8a\x9b\x87{\xdc\xbau\x8b\xa3\xa3#\xae\x1d\xbc\ +\xc4\xa3o\n\x96\x95f\xb9\xce\xd1vEc@k0V\xb6\x87\x11h+h\x8c\xc0i\x89\xb3\nDL\ +\x9c\xc0\xb5}\x81\x90\x82\xcb\xec\t\x0f?\xfd\x88\xfb\'\x0f\x10B\x02\xa2+\xb8\ +\x00\xc09\xb7\xa9\x0e\x10f\xc9\xde8f2\x99ptt\xc4\xf1\xf11\x87\x87\x87\x8c\ +\x0f+>\xfc\xcb\x7f\x98/k\xca\xaab\xb5\xaai\xb4\xc6Z\xd3\x96\xb8\x10 \x15JEh\ +\'\xb0\x9b\xaa\x96J\x90\xf4$\x87QH\x12\'<}\xfa\x98\xaf\xbe\xf8\x84\xdb\xaf\ +\x1do\xaaq+5lJ\xd4\xda\x86PY\xae_\x7f\x99\xc9d\xc2\x9d;w8<<D\x08\xc1\xed\x97\ +R\x9a\xba\xe6\xf22c1\x9f\xb3ZU4\xcd\x1ak\x0cB\x08\xa4\n\x08\x84\xc4J\x05B"\ +\x84\xc2h\x05V!eH\x1c\xc7$qB\x14\x85\\\x9e?f\xff\xe0&\x83\xc1\x1en\xbbj\x80\ +\xd6\'L\xc5h0f<\x1es\xe3\xc6\r&\x93\t>b\xc6\x18\xde>\x9e\xf0\x8f\x7f\xfe\x8b\ +\xd5\xaaB7\r\xd6\xb9\xd6\x98\x84D)\x89\x14\x16+$BH\xa4\x0c\x90RbL\x00\xaea\ +\xffz\x8fA\xea\xb88\x8fp\xee\x94ivJ\xaf7\xc2Z\xb7\x0b\x82\xd3\x08\xa7\xe9\ +\xf7\xfb\x8cF#\xc6\xe31RJ\xac\xb5\x18c\xc8\xb2\x8c@j~\xfa\xa3#>\xfc\xeb\'\ +\x1b@oV\x1b\xc3\x91\n)Z0)\rR*")x\xf3\x07/\xf3\xca\x8d\x1eO\x9f>E\x00\xc6\x18\ +\xce\xce3\xeazI\x10\xc4[ \x0e\x8c\xa9I\xa2\x88$I\xe8\xf5z\x84aH\xd344M\xc3l6\ +c:\x9d\xb2X,x\xf3\x87\xb7\xf8\xf2q\xc6\xa3\xff>\xd9x\x94\xa4\xf5\xdf\xd63\ +\x85P\x08\xe1pRrpp\x9d_\xbe{\x8f\xf10a>\x9f#\x84\xc0\x18\xc3z\xbdf\xb9\\R-g\ +\xf4G\x07\xbb\x11\xb1\xbaF\xa9\x94(\x8a\x08\x82\x00\xad5\xcb\xe5\x92\xa6i(\ +\x8a\x82\xb2,\xb1\xd6"\x84\xe0W\xbf8\xe6\xb7\xbf\x9b\xa2u\xbde\xdc\xado;\x1c\ +B\x08N\x8e_\xe3\xc1\xdb\xdf\'\n\x15Zk\x94R8\xe7\xa8\xeb\x9a\xb2,)\x8a\x82\ +\xd9b\xb5\xab\x11\x87\xc3\xe8\x1a\xa5\xda\xfeb\xade\xb5ZQ\x14\x05M\xd3P\x96%\ +\xeb\xf5\x1a)\xdb\x9aO\x93\x88_\xbf\xff\x16\xbf\xff\xe3\xdf=G\xd7\xef\xa20\ +\xe5\x83\xf7\xee\xf3\xc6\xdd\x97\xbb\xf5\xd6Z\x94RXk\xa9\xaa\x8a\xf9|\xcex<\ +\xa6X\x9ec\xddsb\xf5wg\xadEkMUU\x18c:(\xdf\x89}\x03\xfb\xde+\xd7y\xe7\xe4u\ +\xfe\xf6\xef\xcf;\x98Wo\x1e\xf2\xc1{?f\x7f<@)E\x10\x04\xdd\xfaV\xb8\x86\xd1h\ +\xc4p8d0\x18\x10\xaa\x8bMw\xdf*\xdf\xb6\x8bj\xd6\xeb5\xab\xd5\x8a\xc5bA\xaf\ +\xd7\xc3\x18\x831f\xe3\xb8\xb2\xbbK\xe7\x1c?;\xb9\xcb\xe7_^p\xf9,\xe7\x9d\ +\x93{\xfc\xfc\xed\xd7\xbb5\x1e\xc4\xc3\x84a\x88\xb5\x96~\xbfO\x9a\xa6\xa4iJ\ +\x92D\xe8\x1d\x10\'\xd0\xba\xe9\xbahUUTU\xd5]\xd0C\xbc\xe8\xf5\x9b\xf7\x7fB1\ +\xaf8z\xe5z\xe7\xd0J\xa9\x0e$\x0c\xc3.-Zk\x92$!I\x12\xe28&\n#\x9a\xd6\xcf\ +\xb6Rc\\\x07\xb1\\.I\xd3\x14c\x0cA\x10\x10\xc71A\x10t\xa9\xf3PB\x08\xf6\x86)\ +\xe3Qo\'\x12J)\xc20$\x0cC\xa2\xa8\xed\xe4\xc6\x98\xae\x10\x82 h\xf5(\x15\xe8\ +\xe7R\xe3\x90\x94e\xc9r\xb9d>\x9f\x93$\t\xce\xb9\x0e\xc2\x03\xf8\x9c\xfb\xbb\ +\xf7\xc7v:\xfc9\x8a\xa2\xee\xe2\xc6\x18V\xabU\x07,\x84@\xc8\xe0y\x8d\x08\xa4\ +\x8a:\x88\xd9lF\x1c\xc7\x9d8\xc30$\x08\x82\x1d\x8dl\x03\xf8tx\x88\xedhx\x90\ +\xba\xae\xbb\x8a\xf4\xba3\xf6*\xdd]j\xc2\xa8\xc7\xbcxB\x9e\xe7\xf4\xfb}\xa2(\ +j\x17l\xf2\xecs\xedK\xdcCm\xa7\xc3C\xc4qL\x92$\x1d\x88_o\x8c\xe9\n\xa2\xaek\ +\xb4\xe1\xf9\x88@\xd2\x1f\x92_\x9e\x92\xe79i\x9av\x11\xf0w\xe6\xa3\xe2?\xf8"\ +\x00\x0f\xed\xc5\x98\xa6i\xa7\x8f\xa6iX\xadV\x94eIY\x96L\xf3y\'\xd4\xdd\x88\ +\x841\xbd\xe1>\xd3\xe9Y\'\xb0\xe7A\xa2(\xea\xdcUJ\xd9\t\xcf\x03\xf8\x08DQ\ +\xd4\xdd\x8cs\xae3\xc5\xa2((\x8a\x82\xc5b\xc1\xa2l\xb0\xce;\xe1v\xd3\x03\xae\ +\xedOx\x96\x9d\x92eYw\xb1(\x8a\x88\xe3\xb8-\xb7- \xaf\x93\x17A\xf8\x1b\xf1\ +\x10\xf3\xf9\x9c<\xcf\x99N\xa7\xe4y\xce\xb7\xa7\x17,J\xbdc\x03\x1d\x88\x10\ +\x82\xdep\x8f\x1b7o\xf3\xe8\xb3\x8f1\x9b9\xc3\xab\xdf\xe7\xde\x1f~\xfa~\xde7\ +\xbc\x81\xf9t\xcc\xe7s\xb2,\xe3\xe2\xe2\x82,\xcb\xc8\xb2\x8cg\xb3\x12m\xdb"\ +\x11\xdb\x13\xda\xf6\xe6\xe7\xd5\xa3{,f9\xa7\xdf<DJ\xf9\x7f\xc2\xdb\xd6\x85O\ +\xddv%\xd4u\x8d\x94\xb2KG\x9e\xe7\\\\\\pvv\xc6\xf9\xf99\x8f\xbe>\xa3X4\xddh\ +\xba\x91\xdcnj\xa0\x9d-\xef\xbe\xf1\x16\xd5\xaa\xe2\xe2\xe2I\x07\xe1/\xec{\ +\x8e\xbf\xb8w\xcc(\x8a\xba\x9e\xe4=\xa3(\n\xa6\xd3)Y\x96q~~\xce\xe7_<\xe62\ +\xaf\xda\xb1r3\xc7\xecF\x84\xcd\x96G\xb4\xe7\xb47\xe0\xfe\xc9\xbb<\xfc\xf4#\ +\xce\xce\x1eo\xf68W\x93\x9aw\xe0\xd1hD\xbf\xdf\'I\x92\xae\xca<\x98\x17g\x9e\ +\xe7dY\xc6\xa3\xaf\xcf\xb8\xcc+\xackG\x06?P\xf9\x8dk\xe03\xe3|\x8e6\xb4\xbd\ +\xde\x90\xfb\'\x0f\xf8\xea\x8bO\xb8<\x7f\x8cs\xa7\xddPS\x96%\xf3\xf9\x9c\xe1\ +p\xb8i^W \xdbk\x16\x8b\x05\xdf\x9e^\xf0lVR,\x9a\xcd~\x86\xcdL\xbb\xdb\xbb6\ +\xf3\xc8U4\xae\xce\x02!$\xb7_;f\xff\xe0&\xd3\xec\x94\xb3\xf3\x8c\xe5rIQ\x14\ +\x8c\xc7c\x06\x83\x01i\x9a\x12\xc7qgt>b\xd3|\xce\xa2lX\x94\x1am7\x11\x10W\ +\xdf\xdb\xed\x87w5\xe2p\xd6\xe1\x9c\xc59\xdb\x8e\xf9\xce\xe2\xd54\x18\xec\ +\xd1\xeb\x8d\xa8\xebv\xbc\x9b-V\x14\xcbsBuA\x92DDa\xd4>=\x90\x01\xc6J\xb4\ +\x81\xc6\xb0\xf1\t\x1fi\x1f\xfb\xdd\xc7\x02;\xce\xea\\\xbb+\xb7\xb6\xdd\x8b\ +\ni\x90F\xe2\x048kp\xd6b\xad#\x08b\xfa\xa3\x83\xf6ogq\xce\xa1\x9dk\x1dR\xbb\ +\xeeK\xfd\xb9K\xb8\xf0\x83\xf6\xd6\x03\x0e\xb7Yg;Q|7\x1e\xd4\xfc\x0fU+\x93#\ +\x1a\xd9\x15\x96\x00\x00\x00\x00IEND\xaeB`\x82' + +def get013Bitmap(): + return wxBitmapFromImage(get013Image()) + +def get013Image(): + stream = cStringIO.StringIO(get013Data()) + return wxImageFromStream(stream) + +index.append('013') +catalog['013'] = ImageClass() +catalog['013'].getData = get013Data +catalog['013'].getImage = get013Image +catalog['013'].getBitmap = get013Bitmap + + +#---------------------------------------------------------------------- +def get014Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xc7IDATx\x9c\xcd\x98\xdfn\xdb\xc6\x12\x87\xbf\xd9].)\xca\x96\xd5$\xb6\x92\ +\xa25\x82\xb4\x07E\x81 @\x91^\x1d\xb4\xcf|^\xe0\\\x9d\x07ho\x8a\x02m\xd0\xa0\ +AZ\xc7v\xe9\x88\x92(R\x14\xb9\xbb\xe7\x82\x7f,\xa5y\x80\x12\xa0i[\x12\xf7\ +\xe3\xcco~3+\x01\x02\xff\x80\xc3\x00\xbcx\xf9=\xd6\xc6D\x91E\x1b\x83V\x1aQ\ +\x1a\x11!\x84\xc0\x11k\x18.\xe1\xfe\x1fA\x0e^\x14>z\xc8\xf1\xaf\xa1\xff\x19B\ +\xe0\x7f\xff\xfdO\x07bmL\x92\xa4\xd88\x19a\xd4\x00B\x80\x10\x08\x1e\x08-\xce\ +\xd5\xf8\xb6\xc6\xb55m[\xe3\xdb\x96\xb6mh] \xa0P\xda\x12\xd9\x94dzJ\x14\xc5\ +\xdd\xc2"\x07\x10\xd2\xe1\n\x04\x1f\xf0\xc1\xddG$\x8a,6NH\x92\tQ\x9c`\x8cE+5\ +\xa0\xe3}\x03\xaeBBKb-ZO\xd0Z\x03\xd0\xb6-e\xb5\xa3\xaekvUEY\x96\x14\xebw\ +\xe4wW\xa4\xa7\x0f\xf8\xe4\xc1\x82\xf4\xf4\xec\x1eC\x06\x1c!\x04\x8f\xf7\xfe\ +\x1eD\x1bC\x14Y\xa28\xc1\xda>*Zw\x1fp["\xed\x99\x9d\xcc\x99N\xa7$I\x82\xb5\ +\x16\x11\xc1{\xcf~\xbf\xe7\xf7\xb77\xec\xf75\xc9\xa4b\x92V$\x93\x94b\xb3f\ +\x95_\xf3>\xbb\xe2\xe2\xc9S>\xbb\xfc\nQ\x1d\x00\xd2\x01\x85\xe0q\xedAD\xb4\ +\xd2hc0\xc6v@\x91E)!\x92\x8a\xb3y\xcc\xc3\x87\x9f2\x9f\xcf\x99\xcdf\xa4i\x8a\ +1\x06\xef=m\xdb\xb2\xdb\xed\xf8\xf5\xcd\x8a6\x08A\t*RL\xa6\x1a\xa5\r\xda\x18\ +\xf2\xe5\x92\xd7\xbf\xfcH\xb1\xca\xf9\xf2\xebo\x98\xa4\'\x1d\x08\x02! \xea\ +\x00D\x94F)\x8dV\n\xad5J\t\x89\xa9y\xfch\xc6\xe3\xc7\x8fY,\x16\\\\\\0\x9f\ +\xcf\x89\xa2h\x04\xa8\xaa\x8a\xa2((\xf7\xd04\x82\xdb\x0b\xce)\x823\xa0\x12\ +\xe2\xc43;\x0b8\xe7\xb8\xfa\xe3\x15\xd5\xae\xe2\xc5\xcb\xefH\xd3\xd3\xbe\x10\ +<\xca\xa9\x03\x10\x91NP}\xfe"\xa9xr~\xc6\xe7\x9f\x7f\xce\xe5\xe5%\xcf\x9e=c\ +\xb1X\xa0\x94\xa2i\x1a\xb6\xdb-\xeb\xf5\x1a\xe7\x1ci\x9a\xe2\xbc\xc29\xa1\ +\xf5B\xe3\x84\xd0*\x82\xd7 1q\x02\x9f<\x10D\tw\xd9;^\xfd\xfc\x03/^~\x8f\x88\ +\x02d,8\x03\x10B\xe8\xab\x03\xc4m9\x9b\xc7,\x16\x0b.//y\xfe\xfc9\xe7\xe7\xe7\ +\x00x\xefi\x9af<\xbd\xf78\xe7\xba\x12\x17\x01\xa5\xd1\xda\xd2\x06\xc1\xf7U\ +\xad\xb4\x90\xa4\x8as\x1b\x91\xc4\t\x7f\xfd\xf5\x96\xdf\x7f\xfb\x89\xa7_<\ +\xef\xab\xf1 5\xf4%\xea}C\xa4=\x0f\x1f~\xcab\xb1\xe0\xd9\xb3g\x9c\x9f\x9f\ +\x8f~\xe2\x9cc\xb5Z\xb1^\xaf)\xcb\x92\xddn\x87s\x0e\x11Ai\x83\x11\x85W\x1aD!\ +\xa2q\xad\x06\xafQ*"\x8ecb\x1bc\x8c\xe1\xee\xe6-\x0f\x1e=\xe1\xe4\xe4\x8cpX5\ +@\xe7\x13\xaebv2g>\x9fsqq\xc1b\xb1`\x88\x98s\x8e,\xcbX.\x97\x94e\xc9~\xbfGD\ +\xba\xea\x12\x85\xd6\n%\x1e/\n\x11\x85R\x06\xa5\x14\xce\x19\x08\r\xda\x06\ +\xe2\xd8\xa2\xb5\x02nYfW\xa4\xe9\x0c\xef\xc31\x08\xa1EB\xcbt:e6\x9b1\x9f\xcf\ +QJ\x8d\xe1\xcf\xb2\x8c\xbb\xbb;\x8a\xa2\xc0{\x8fR\x8a\x10\x02J\xa9>\xdf\x01\ +\x94F\x89\x80(\x94r(\xa5Q\xae!\xf8\x88\xa0\x1c\x91\x8d\x89\xadA\x08dwK\xeaz\ +\x8b1\xf1\x01H\x00\xe7j\x12kI\x92\x844M\x89\xa2h\xd4\xc2j\xb5b\xb9\\R\x14\ +\x05!\x84\xd1)E\xa4\x07\x11B\xef\x99"\x1a\x91@P\xaak\x13J\x13B\x8b\xe0\x10\r\ +\x13k\xd1\nv\xbb\x8aj\xbbb:{t\x1c\x11\xdf\xd6h=\xc1Z\x8b1\x86\xb6m\xd9n\xb74\ +M3j\xc2{\x7f\x04q\xd8=\xba\x82\xebZ\x82\x88\xa0\x10\x94\x0ehm\xf0\xdet0:\xa0\ +#8\x89`^\x95l\xca\xdd\xb1F\x02\x01\xd7\xd6h\xadG\xc7\xdc\xedv\xac\xd7k\x9a\ +\xa6\x195\xa1\x94:\x82\x18\x9bb\xdf\n\x90\xc1\xbc\xfb\xf4\x00A\x81\x04\r\xc1\ +\x80vh#L"\xcdl6\xa3\xa82|\xf8@\xacm[\x8f%\xda\xb6-UU\xe1\x9c\x1b\xa1\x86E\ +\xff\x06q\x1f\x94!.\x88(d\xd0\x8e\x80\x0e\x10\x82C+\x8d\x8a\x14q\x121=9!\xca\ +\xee\xc6{\x8c\xe5\xdbu\xd1\x96\xfd~\xcfn\xb7\xa3(\x8a\xce\xac\x9c\xc39\xd7;\ +\xae\x1a\xa3r\x04qx\x88\xf4\x10\xbd~\x94\xee\x970h\xe51F\xb06\xe0\x92\x84$\ +\xb1\xb4G Ah\xdbN\x98u]SU\x15UU\x8d\x0b\x0e\x10\x1f_W\xf8\xf7\xb7_\x01\xf7\ +\xc2\xd5\xc6\xa0\xb5\xc1\x98\xee\x14Q\x10<m\xbb\xc7\xed\xb7\xd4eN\xe6w\xd8\ +\xc8\xd2t~v\x90\x1a\x17F\x88\xedv\xcbd2\xc19\x871\x868\xee\x8chH\xdd\x87Z\ +\xf9\xee\xdb\x7f\x8d\xd1\xd2Z\x13E\x11\xd6\xda\xf1\xd4Z\xe3\x9cc\xbb\xddr}}\ +\xcd\x9b7\x9eu\x9eu\xd1j?HM@Q\x96%\xdb\xed\x96\xcdfC\x92$\x84\x10F\x88\x01\ +\xe0P#\x87\xe7\x00a\x8c\x19\xaf\x03\x881\x06\xe7\x1c\xbb\xddn\x04\x16\x11D\ +\x99\x0f5"(mG\x88\xd5jE\x1c\xc7\xa38\xa3(\xc2\x18s\xa4\x91C\x80\xc1a\x07\x88\ +(\x8a\x8e\xa2b\x8c\xa1\xae\xeb\xb1"\x07\xdd9\x7f\x9f\xee15\x91M\xd9\xac\xdf\ +\x91\xe79\xd3\xe9\x14km\xf7\x06c\xc6\x1bk\xad\xc7\x12\x1f\xa0\x86H\x0cg\x14u\ +}e\x18\xa0\x86!\xaa\xb3{7\x16D]\xd7\xb4\x8e\x0f#\x02\xc9\xf4\x94\xfc\xee\x8a\ +<\xcf\x99L&c\x04\x86\'\x1b\xa22|\xf0c\x00\x03t\x92$\xc4q\xccd2\x19\xf5\xd14\ +\r\xbb\xdd\x8e\xb2,)\xcb\x92e\xbe\x19\x85z\x1c\x91(&=}\xc0ry=\n\xecC\x10k\ +\xed\xe8\xaeJ\xa9\xb1*\x06\x80C\x81\x0e\x0f\x13B\x18Mq\xbd^\xb3^\xaf)\x8a\ +\x82\xa2l\xf0ap\xc2\xc3\xa6\x07|\xf2`\xc1\xfb\xec\x8a,\xcb\xc6\xc5\xac\xb5]\ +\x0b\x8f\xe3#\xa0A\'\x1f\x83\x18\x1ed\x80\xd8l6\xe4y\xcer\xb9$\xcfs\xfe\xbc\ +\xba\xa5(\xdb#\x1b\x18AD\x84\xf4\xf4\x8c\x8b\'Oy\xfd\xcb\x8f\xe3\x9c1\xa8\ +\x7f\xc8\xfdp\x0e\xd3\xf7 \xd4A\xac\x9do\xc8\x98\x8e\xcdfC\x96e\xdc\xde\xde\ +\x92e\x19Y\x96\xf1~U\xd2\xfa\xaeH\xe4pB;\xdc\xfc|v\xf9\x15\xc5*\xe7\xea\x8fW\ +(\xa5\xfe&\xbcC]\x0c\xa9;\xac\x84\xba\xae\xc7\x91\xb2,K\xf2<\xe7\xf6\xf6\x96\ +\xeb\xebknnnx\xfd\xe6\x9au\xd1\x8c\xa3\xe9`\xd0G\xa9\x81n\xb6\xfc\xf2\xebo\ +\xa8v\x15\xb7\xb7\xefF\x88a\xe1\xa1\xc7\x0c\x8b\x0f\xbd\xc9Z;\xf6\xa4\xc13\ +\xd6\xeb5\xcb\xe5\x92,\xcb\xb8\xb9\xb9\xe1\xd7\xdf\xder\x97W\xddX)\xf2\x91\ +\x88\xd0w\xcd\xbeqM\xd2\x13^\xbc\xfc\x8eW?\xff\xc0\xf5\xf5\xdbq35Lj\x83\x03\ +\xcff\xb3q\xaf3T\xd9\x006\x883\xcfs\xb2,\xe3\xf5\x9bk\xee\xf2\n\x1f\xba\xd6(\ +=\xc8\xd0\xb1\xcc\x90\x990\xe4\xa8\xa7M\xd3S^\xbc\xfc\x9e\xdf\x7f\xfb\x89\ +\xbb\x9b\xb7\x84p\x85s\x8e\xfd~OY\x96l6\x1bNOO\x99L&G \x87\xef)\x8a\x82?\xaf\ +ny\xbf*Y\x17M\xbf\x9f\xa1\x9fi\x8f{W?\x8f\xdcG\xe3\xfe*\x88(\x9e~\xf1\x9c\ +\x07\x8f\x9e\xb0\xcc\xae\xb8\xbe\xc9\xc6\xad\xc4|>\xe7\xe4\xe4\x84\xc9dB\x1c\ +\xc7\xa3\xd1\r\x11[\xe6\x1b\x8a\xb2\xa1([Z\xdfG@\xee\xef;\x0eV\xc7\x1a\t\x04\ +\x1f\x08\xc1\x13\x82\xef\xc6\xfc\xe0\x19\xd4trrF\x9a\xce\xa8\xeb-\xd5v\xc5\ +\xaa\xd8\xb1\xde\xde\x10\xe9[\x92\xc4b#\xdb\x8f\x85\x06\xe7\x15\xad\x83\xc6\ +\xd1\xfb\xc4\x10\xe9!\xf6\xc7_\x0b\x1c9k\x08\xdd\xae\xdc\xfbn/*\xca\xa1\x9c"\ +\x08\x04\xef\x08\xde\xe3}\xc0\x98\x98\xe9\xecQ\xf7w\xf0\x84\x10hC\xe8\x1c\ +\xb2\r\xe3M\xefg\x95>\xe1}u\x88\x1c|\xc1\x11\xfa\xf7\xf9Q\x14\xff\x8c/j\xfe\ +\x0f\x14\xf5q\xf5\x0b9\xe5)\x00\x00\x00\x00IEND\xaeB`\x82' + +def get014Bitmap(): + return wxBitmapFromImage(get014Image()) + +def get014Image(): + stream = cStringIO.StringIO(get014Data()) + return wxImageFromStream(stream) + +index.append('014') +catalog['014'] = ImageClass() +catalog['014'].getData = get014Data +catalog['014'].getImage = get014Image +catalog['014'].getBitmap = get014Bitmap + + +#---------------------------------------------------------------------- +def get015Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +9IDATx\x9c\xcd\x98M\x8f\x1cG\x19\xc7\x7fU\xd5U\xfd2\xb3\xb3\x93\xf5\xee\x8e\ +\x1d\x92\xc5r\x0c\xc1\x8ae\x11|\x80C"q\xc8\x05E\x90\x0b\'\xee|\x02\xf8\x08|\ +\r\xce\x08q@\x1c@\x08\x11\t\x82\x02HH\x8e\x90,\xe7\xc58\tl\xb2\xde]\xf7zzfz\ +\xa6g\xa6\xbb\xaa8\xf4\xcb\xceX\xfe\x00\x19\xa9\xb6w\xb7{\xba~\xfd\xbc\xfd\ +\x9f\xa7\x05\xe0\xf9\n|\x02\x80;w\xdf\xc4\x98\x10\xad\r*\x08PR!\xa4B\x08\x81\ +\xf7\x9e-V\xdf\x1e\xfc\xe5?\xbc\xd88)x\xeeGl\xff\xea\x9b\x9f\xde{\xde\xfb\ +\xf3ok\x10cB\xa2(\xc1\x84Q\x07#[\x10<x\x8fw\x80\xaf\xb0v\x85\xabV\xd8jEU\xad\ +pUEU\x95T\xd6\xe3\x91He\xd0&!\xea\xed\xa0uXo,\xc4\x06\x84\xa8q\x05x\xe7q\xde\ +^ZDk\x83\t#\xa2(F\x87\x11A`PR\xb6\xe88W\x82-\x10\xbe"2\x06\xa5b\x94R\x00TUEY\ +\x96\xacV+\x16\x8b\x05\xf3\xf9\x9c\xd9\xf41\xd9\xc5\t\xc9\xce\x1e/\xec\x8dHv\ +v/1D\x8b#\xf0\xde\xe1\x9c\xbb\x04QA\x80\xd6\x06\x1dF\x18\xd3XE\xa9\xfa\x0bv\ +\x8eV\x8eA\x7fH\xaf\xd7#\x8a"\x8c1\x08!p\xce\xb1^\xafY\xadV\x14EQC\xccfdYF\ +\x96e\x8c\xc7\xa7<MO8\xbcv\x9d\x97\x8e^E\xc8\x1a\x00Q\x03y\xef\xb0\xd5\x86E\ +\x94T\xa8 \x08L\r\xa4\rR\n\xb4(\xd8\x1d\x86\\\xb9\xf2"\xc3\xe1\x90\xc1`@\ +\x92$\x04A\x80s\x8e\xaa\xaaX.\x97[\x10\x93\xc9\x84^\xafG\x1c\xc7\x18cH\xd3\ +\x94O?\xfe\x80|\x92q\xf3\xd6\xeb\xc4I\xbf\x06A\x80\xf7\x08\xb9\x01"\xa4BJ\ +\x85\x92\x12\xa5\x14R\n\xa2`\xc5\xd5\xfd\x01W\xaf^e4\x1aqxx\xc8p8Dk\xbd\x05\ +\x90\xe79EQ\x10\xc71Q\x14\x11\x86!\xc6\x18\x82 @)\x85s\x9e\xb2\xac8\xf9\xe2!\ +\xc5\xb2\xe0\xce\xdd7H\x92\x9d&\x11\x1c\xd2\xca\r\x10!\xea\x80j\xfc\xa7E\xc1\ +\xb5\x83]^~\xf9e\x8e\x8e\x8e\xb8q\xe3\x06\xa3\xd1\x08)%eY2\x9f\xcf\x99N\xa7X\ +kI\x92\x04\x00\xe7\x1c\xde\xfb&\xcb@J\x89\x07\xce\xd3\x19/\xec\xed#\xa4\xe0"\ +}\xcc\xc3\x07\xf7\xb8s\xf7M\x84\x90\x80\xe8\x12.\x00\xea\x1b\xe0\xc1\x83\xb0\ +sv\x87!\xa3\xd1\x88\xa3\xa3#n\xdf\xbe\xcd\xc1\xc1A\xb7YY\x96\xddr\xcea\xad\ +\xc5{\x8fR\x8a0\x0c\x11B\x10\x04\x01Zk>x\xf0\x05N\x86D\x89\xe0\xc0h\xa20\xe2\ +\xc9\x93c>\x7ft\x9f\xeb\xaf\xdcn\xb2q\xc354)\xea\\\x89V\x8e+W^d4\x1aq\xe3\ +\xc6\r\x0e\x0e\x0e\xbazb\xade2\x990\x9dNY,\x16,\x97K\xac\xb5\x1dD\x0b\xa0\ +\xb5\xe6\xfe\'\x8f\x99\xce-\xc8\x08)5a\x18\x12\x9a\xfa\x9a\x8b\xb3c\xf6\xf6\ +\xaf\xd1\xef\xef\xe27\xb3\x06\xa8\xeb\x84-\x18\xf4\x87\x0c\x87C\x0e\x0f\x0f\ +\x19\x8dF\xb4\x16\xb3\xd6\x92\xa6)\xe3\xf1\x98\xc5b\xc1z\xbdF\x08\xd1\xc4\ +\x94\xec\x028\x08\x02\xb2\xd9\x92\x07\xff9C\x9b\x08k\x03\xf0%\xcax\xc2\xd0\ +\xa0\x94\x04\xce\x19\xa7\'$\xc9\x00\xe7\xfc6\x08\xbeB\xf8\x8a^\xaf\xc7`0`8\ +\x1c"\xa5\xec\xcc\x9f\xa6)\x17\x17\x17\xe4y\x8es\xae\x8e\x01\xef\x91Rv\xb7\ +\x90R\xb2.-\x7f|\xef\xa3&\xf3\x14\xd2\x96x\xa7\xf1\xd2\xa2MHh\x02\x04\x9e\ +\xf4b\xccj5\'\x08\xc2\r\x10\x0f\xd6\xae\x88\x8c!\x8a"\x92$Ak\xdd\xc5\xc2d2a<\ +\x1e\x93\xe79\xde\xfb\xaeR\n!:\x10\xe7\x1cB\x08\xfe\xf4\xb7\x0f)\x8a%*\xd0\ +\xb5LH\x85\xf7\x15\x02\x8bP\x10\x1b\x83\x92\xb0\\\x16\x14\xf3\t\xbd\xc1\xfe\ +\xb6E\\\xb5B\xa9\xb8K\xbd\xaa\xaa\x98\xcf\xe7\x94e\xd9\xc5D\xbb\xd9\xb3e\xbb\ +\xb5\xc6\xfdON\xf8\xec\xf8\x0c!%\x12\x81T\x1e\xa5\x02\x9c\x0bj\x18\xe5Q\x1a\ +\xfa\x1a\x86\xc5\x82\xd9b\xb9\x1d#\x1e\x8f\xadV(\xa5\xba\x8a\xb9\\.\x99N\xa7\ +\x94e\xd9\xc5D\xfb\xf4\x9b0m\xba\x9e\xa7S\xde}\xff\xc3\xba\x14 @H$\xe0%\x08\ +\xaf\xc0\x07\xa0,*\x10\xc4Z1\x18\x0c\xc8\x8b\x14\xe7\x9f\t\xd6\xaaZu&\xae\ +\xaa\x8a\xa2(\xb0\xd6vP\xed\xa6\xcf\x83\x00\xf8\xfd_\xeeS\x95\xebZE\x84DHY\ +\xd7\n\x01\xca\x83\xf7\x16%\x15RK\xc2H\xd3\xeb\xf7\xd1\xe9Ew\x8f.}k\x15\xadX\ +\xaf\xd7,\x97K\xf2<\'I\x12\xac\xb5]\x8aJ);\xablB\xbc\xfb\xfeG\\<\xcd.uD\xca.\ +~\x84T\xcd\x16\x01J:\x82@`\x8c\xc7F\x11Qd\xa8\xb6@\xbc\xa0\xaa\xcaNE\x8b\xa2\ +\xa0(\x8an\xc3\x16\xe2y\x1f!\x04\xc7\x8f\x9f6\x96h\x05\xad\x86\x91J5\xed\x84\ +\x04<\x81th-\xd1\xc6\xe3\xaa\x10\xa3\r\xa5mb\xacs\x8d\xf5[*:\x9f\xcf\xc9\xf3\ +\x9c\xd5j\x85\xb5\xb6\xdb\xb8\x95\xed\xcdX\xf9\xc9;\xdf\xe5\xb5o}\xbd\x81\ +\xa8\xdd"\xa5B\xca\x00\xa5\x82FP\x03\xb41\x98f)Ug\x14\xad$\xb4\xae\xf1\xc8\ +\xcb~b6\xeb\xc4l\xbd^w\xb1\xb2\xe9\x8eV\x9f\xa4\x94$q\xc8\x8f\xde\xfa6?~\xfb\ +{\x980F\x08\xd9(\xbaB\x05\x9a \xd0hm\x08\x8d&\x8e\rF\x07\x8d\xdb\x82gcD \x95\ +\xd9\x92\xf20\x0c\xbb\xe0\xd4Z\x13\x04\xc1V\x8cl\x82\xb4\x15\xf6\xb5o\xbe\ +\xc4\xd1\xd7\x0e\xf8\xf5\x1f\xee1\x1e\xcfP*hTX"\x04\xc4\x91$\x0e\x05\x81\xf2\ +8g\xb1\xee\xd2\xdd]\xd6h\x93\xd4\x9dU\x96\xd1\xeb\xf50\xc6\xd4\x17l\xe8\x87R\ +\xaaK\xf1\x16J6\xadC\xbb\x0e\xf7c~\xfe\xd3\x1f\xf0\xde\xbf\x1e\xf1\xd7\x7f~T\ +\xbbE)\xb4\x82$\x96\xc4\x11\xb8uAY\x96T\x96g-\x02Qo\x87\xec\xe2\x84,\xcb\x88\ +\xe3\xb8\xb3\x80\xd6\x1acLg\x95M\x99\xdf\x04h\xcfk\xad\x89\xa2\x88\x1f\xbe\ +\xf5\x1d^\xbf}\x93_\xfe\xe6\x1fx\xbb$\t\x05;\x89\xc4\x04\x15\xf3EI\x96\xe5]\ +\xa0n[D\x87$;{\x8c\xc7\xa7]0=\x0bb\x8c\xe9\xaak+t\xedj\xcf\xb7+\x8ecn}c\x87_\ +\xfc\xec\x1d~\xf5\xbb\xbfs~~J/\x12\xf8\xaa`Y,\x98\x17%\xce7M\xf1&\x08\xc0\ +\x0b{#\x9e\xa6\'\xa4i\xdamf\x8c\xa9%\xbc\xe9\xbc\xda\r\xdb8y\x1eD\xfb \xde{\ +\xa4\xf0\xbc\xfd\xfd[\xdc\xfb\xb7\xe0\xe4\xcb/\xc9\x97\x0b\x1e\x9f\xa6\xe4\ +\x8bj\xab\x0ct B\x08\x92\x9d]\x0e\xaf]\xe7\xd3\x8f?\xc0Z\xdbm\xd4\x02\xb4@a\ +\x18vi\xdc\x06\xaaR\xaa\xb3\x8e\x10\x02k-eY2\x9b\xcdH\xd3\x14-K$k&\x931\xe3\ +\xe9\x82\xca\xd5I"6;\xb4\xcd\xe1\xe7\xa5\xa3W\xc9\'\x19\'_<DJI\x18\x86]\xe7\ +\xde>i\xbbZ\xd7\xb5\xad\x82\xb5\x96\xd5j\xd5\xb5\x94\x8b\xc5\x82,\xcb8??\xe7\ +\xf4\xf4\x94\'O\xce\xf9\xec\x7fgL\xf3\xb2kM\xdb\x8a\xb0\xe5\x1a\x10\x08)\xb8\ +y\xebu\x8ae\xc1\xf9\xf9\xe3\x0e\xa2\xdd\xb8\xd5\x98v\xf3V\x9b\x8c1\x9d&Yk;\ +\xd1\x1c\x8f\xc7\xa4i\xca\xd9\xd9\x19\x9f<:\xe6"+\xea\xe9J\x88\xe7X\x84f\xe4\ +\x11\xf51N\xfa\xdc\xb9\xfb\x06\x0f\x1f\xdc\xe3\xf4\xf4\xb8\x1b\xa6\xdaN\xad\ +\xad\xc0\x83\xc1\xa0\x9bu\xda,k\xc1\x16\x8b\x05\xd3\xe9\x94,\xcb\xea\x91\xe2\ +\xbf\xa7\\d\x05\xce\x0b\x04mU\x16\xdd\xe0\x1a\xb4\x9e\xf1\xad\x8f\x1a\xda$\ +\xd9\xe1\xce\xdd7\xf9\xfc\xd1}.\xce\x8e\xf1\xfe\x04k-\xeb\xf5\x9a\xc5b\xc1l6\ +cgg\xa7\x1b#Z\x90\xcdk\xf2<\xe7\xcb\x93s\x9eN\x16L\xf3\xb2\x99g\x00\xd1(\xf3\ +\xb3\xc1\xea7\xacqy\xacu\xe3\xfa+\xb7\xd9\xdb\xbf\xc68=\xe1\xf4,\xedF\x89\ +\xe1pH\xbf\xdf\'\x8ec\xc20\xec\n]k\xb1q6#_\x94\xe4\x8b\x8a\xca\xb1-\x88B^6V\ +\xdb1\xe2\xf1\xce\xe3\xbd\xc3{W\xb7\xf9\xde\xd1FS\xbf\xbfK\x92\x0cX\xad\xe6\ +\x14\xf3\t\x93|\xc9t~\x86V\xe7D\x91\xc1h\xd3\xb4\x85\x01\xd6I*\x0b\xa5\xa5\ +\xa9\x13\xad\xa5[\xdbo\xbf\x16\xd8\xaa\xac\xde\xd7S\xb9s\xf5,*\xa4EZ\x89\x17\ +\xe0\x9d\xc5;\x87s\x9e \x08\xe9\r\xf6\xeb\xbf}-\x82\x95\xf7u\x85\xac.\x87\ +\xabKql\x1c\xded\x87\x10\x1b/8|s\x9d\xeb\x82\xe2\xab\xf1\xa2\xe6\xff\x11%\ +\x81E\xc4\xf0\x00\x1c\x00\x00\x00\x00IEND\xaeB`\x82' + +def get015Bitmap(): + return wxBitmapFromImage(get015Image()) + +def get015Image(): + stream = cStringIO.StringIO(get015Data()) + return wxImageFromStream(stream) + +index.append('015') +catalog['015'] = ImageClass() +catalog['015'].getData = get015Data +catalog['015'].getImage = get015Image +catalog['015'].getBitmap = get015Bitmap + + +#---------------------------------------------------------------------- +def get016Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xd6IDATx\x9c\xcd\x98Yo\xe4\xc6\x15\x85\xbfZ\xb9\xb4\xa4n\x0b\xd2\xb4&\xb05\ +\x8b\xed\x186&\x13\x18\xf3j\xff\xd2\xfc\x81\xbc\xe5\x0f\x04\x08\x92<8O\xf6\ +\x8ba\xc0\x19{4\x98\x99h\x19\xb4\xd4\x8b\x9aM6\xc9\xaa\xca\x03\x17\xb1e\x07y\ +5\x81\xea\xea\x85d\x9d\xbe\xf7\x9csoQ\x00\x81\xdf\xc0\xa1\x01\x9e\xbf\xf8\ +\x1ak#\x8c\xb1(\xadQR!\xa4B\x08A\x08\x81\x1d\xac\xa1\x9b\xc2\xdd\x17A\x0c~\ +\x14\xfc\xea!v\xdf\x86\xf65\x84\xc0?\xfe\xfa\x97\x06\x88\xb5\x11q\x9cb\xa3\ +\xb8\x07#; \x04\x08\x81\xe0\x81P\xe3\xdc\x16_oq\xf5\x96\xba\xde\xe2\xeb\x9a\ +\xba\xae\xa8] \x91\xcablJ<\xda\xc7\x98\xa8YX\x88\x01\x08\xd1\xc0\x15\x10|\ +\xc0\x07w\x17\x11c,6\x8a\x89\xe3\x04\x13\xc5hmQRv\xd0\xf1\xbe\x02\x97#BMl-J%\ +(\xa5\x00\xa8\xeb\x9a\xaa\xaa\xd8n\xb7l6\x1b\xb2,\xe3vu\xc1\xe2\xfa\x9ct\xff\ +\x90\x0f\x0e\xa7\xa4\xfb\xe3;\x18\xa2\x83#\x08\xc1\xe3\xbd\xbf\x03\xa2\xb4\ +\xc6\x18\x8b\x89b\xacm\xa3\xa2Ts\x81\xcb0\xcas\xb07a4\x1a\x11\xc71\xc6\x18\ +\xa4\x948\xe7(\xcb\x92\xb2,\xef@\xdc\xde\xb2\\.Y,\x16\xcc\xe7\x97\xdc\xcc\ +\xcey\xf0\xf01\x1f\x9e~\x86\x90\r\x00D\x03(\x04\x8f\xab\x07\x11QR\xa1\xb4Fk\ +\xdb\x002\x16)\x05F\xe4\x8c\'\x11\x87\x87\x0f\x99L&\x8c\xc7c\x92\xa4\x89F\ +\x08\x81\xaa\xaa(\x8a\x82<\xcf\xc9\xb2\x8c\xf5z\xcdr\xb9doo\x8f$I\xb0\xd62\ +\x9b\xcdx\xf5\xe3w\xac\x97\x0b>\xf9\xfcK\x92t\xaf\x01\x82\x80\x10\x10r\x00DH\ +\x85\x94\n%%J)\xa4\x14\xc4z\xcb\xc9\xd1\x01\xd3\xe9\xb4\x1f\xe3\xf1\x18cL\ +\x0f\xa0\x8bB\x9e\xe7$IB\x1c\xc7DQ\x84\xb5\x16\xad5RJ\x84\x108\xe78\x7f\xf7\ +\x92\xbc\xc8y\xfe\xe2+\xd2t\xbf\x15\x82G:9\x00"DC\xa86\x7fF\xe4\x9c\x1c\x1d\ +\xf0\xd1G\x1fqzz\xca\xd3\xa7O999A\x08AY\x96\xac\xd7kV\xab\x15\xce9\xbc\xf7\ +\x84\x10p\xce\x11BhU\x06RJd\xfb\xc7\x84\x10H)y\xff\xfe\x82\x97?|\xcb\xf3\x17\ +_#\x84\x04D/8\r47 @\x00\xe12\xc6\x93\x88\xe9t\xca\xa3G\x8fx\xf6\xec\x19\xc7\ +\xc7\xc7\x00TUE\x08\x81\xb2,\xa9\xaa\n\xe7\\\x0f@kM\x14E\x08!\xd0Zc\x8c\xe9G\ +\xf7[\x1c\xc7\\^\xbe\xe5\xf5\xcf\xdf\xf3\xf8\xe3g\xad\x1a\x07\xa9\xa1\x95\ +\xa8\xf7\x15Fy\x0e\x0f\x1f2\x9dNy\xf2\xe4\t\xc7\xc7\xc7}x\xeb\xbaf\xb1X\xb0Z\ +\xad\xc8\xf3\x9c\xa2(\xf0\xde\xa3\xb5\xfe\x05\x00k-\xd6Z\xa2(\xeaAX\xdb\x88\ +\xe0\xfa\xea-\x87G\x0f\xd9\xdb\x1b\x13\x86\xaa\x01\x1a\x9fp9\x07{\x13&\x93\t\ +\xd3\xe9\x94\x93\x93\x13\x80^\x1d\xb3\xd9\x8c\xf9|N\x9e\xe7\x94e\x89\x10\xa2\ +\xe5\x94Dk\xdd\x83\x1aF#\x8a\xa2\x1eX\'\xf9\x10\xce\x99\xcf\xceI\xd3\x03\xbc\ +\x0f\xbb@\x085"\xd4\x8cF#\xc6\xe31\xe3\xf1\x18!\x04UUQ\xd75\xb3\xd9\x8c\xeb\ +\xebk\xb2,\xc3{\x8f\x94\xb2\xe7CgX\x1d\x17\x94Rh\xad\xfb\xa8t\xa3\xbb\xc69\ +\xc7\xe5\xd5\x8c\xed6C\xebh\x00$\x80s[bk\x89\xe3\x98$I0\xc6P\x96%!\x84\xd6\ +\x13\xe6dYF\x08\xe1\x17\x0b\x03x\xef\xfb\xef\xa5\x94\x18c\xf0\xde\xf7Q\xe9H\ +\xdbE7\xcb2\xf2l\xc9\xe8\xe0h7"\xbe\xde\xa2T\x03@)EUU\xac\xd7k\xca\xb2\xec91\ +\\lh\xdb\xdd\xe2\xdd1<g\x98\x96\xe5\xed\x86m\xad\x88\xe2\x11\xe3\xc9\x84\xdb\ +\xac\xd8\xe5H \xe0\xeam\x9f\xef\x10\x02EQ\xb0Z\xad\xa8\xaa\xaa\xe7D\xb7\xd8p\ +\xa1.=C\x1b\xe8\xa4+\xa5\xe4\xdd\xc5\x9c\x7f\xbf\xbe\xe2\xa7\xb3\x0b\xb6\xf9\ +-\xa3(\x10%)\x07\x07\x07\xac73|\xb8G\xd6\xba\xde\xf6\xc4\xac\xaa\x8a\xcdf\ +\xd3\xcb\xb3(\x8a~\xd1\xff\x07B\x08\xc1\xd9\xdbk^\xff\xe7\x86WofTu\x89\x08\ +\x10\x82Ci\x8b2\x10[\xcdh\xb4\x87Q\xd7\xfd=z\xf96U\xb4\xa6,K\x8a\xa2\xe8I\ +\xd9\x99V\xc7\xf8.*\xf7A\x9c\xbd\x9dq\xf6\xee\x9aWofx\xef\xda\xc8(\xb42\xed\ +\n\x1a\x85\xc3\x18\xb0\xd6\x91\xc4\tql\xa9w\x80\x04A]WTUEY\x96\xe4yN\x9e\xe7\ +\xbdS\x0e\xed\xfa\xfe!\x84\xe0O\x7f\xfe\'\xae\xaaZw\x16H\xa5\x10R"\x95jz\x1b\ +!A\x04\xa4P-\x10O\x1dY\xac\xb1T\x8d\x9f\rR\xe3\x02\xdb\xed\xb6/`I\x92\xe0\ +\x9c\xdb1+\xa0\x97\xee\x90+\x07\xfb\t\x8by\xddVU\xd9\x80\x90\n%u\xa3\x16%\ +\x11\x80\x96\x01k\x05\xd6:J\xa5\x11RA\xdd\x96\x84.5\x01\xc9f\xb3a\xbd^\xf7\ +\xa3#\xe9\xb0\xa6\xfc\x1a1\xbf\xf8\xf4w; \x84\x90mEW(m0mU\x8f\xac!\x89\r\xc6\ +\xa8\xa6%\x90\xfa\xae6\xb5\xb7E*\xbb\xd3O\xdc\xde\xde\xf6\xf2\xedL\xed\x7f\ +\x01\xf9\xf4\xd1t\x10\x89v(\x85R\x1a\xad5\xdah\x8c\xd1\xc4\xb1%\x8e\x0cJ\xca\ +\x86\x7f\xfeN\xf2}j\x8cM\xb9]]\xf4\xfd\x84\xb5\xb69a`\xd9\x9d\xbc\xefK\xf4\ +\xf0\x83}\x8e\x8f\x0f\xb9Y\xdc\xb6vo\xd0\xda6s{\x9dQ\x814\x16\xc4Q\xa0\xcak\ +\xea\xaa\xa4v\xdc\x8f\x08\xc4\xa3}\xca\xaaq\xd1\x9b\x9b\x1b\xe6\xf39\xab\xd5\ +\x8a,\xcb(\x8a\xa2OQw\x0c\xad\\k\xcd\x1f\xbf8E+\xdd\x830\xc6\xa0m3[\xa3I"C\ +\x9ah\xb4\n\xb8\xbab\xbeX\xf7D\xdd\x8d\x88\x89H\xf7\x0f\x99\xcf/\xfb\xba\xd0\ +Y\xb5\xednhm\xef\xae]\xa1\xeb\xc6\xb3\xcfN\xf9\xe6\xdbWm:\x1a\x10Zk\x8c\xd6\ +\x18\ri,Hl\xc0\x95%y\xbe!\xcb+|h\x9b\xe2!\x10\x80\x0f\x0e\xa7\xdc\xcc\xce\ +\x99\xcdf}e\xedjE\xd7yui\xeax\xd2\xa5\xee(M9\x99>`\xbe\xb8E\x1b\xd3\x02\xd0\ +\x18-\x19\xc50\x8a\x05Zl\xd9\x14\x1b..g\xac7\xf5\x8e\r\xf4@\x84\x10\xa4\xfbc\ +\x1e<|\xcc\xab\x1f\xbf\xc39\xd7/4,\xe5\x1d\xa0\xae\xfb\xee\x00k\xady\xf1\x87\ +\xc7\xfc\xed\x9b\x1f\x9a\xcfJb4\x8cb\xd8K$VV\x14\x9b5\xcb\xc5\x9c\xf9jC\xed\ +\x1b\x91\x88a\x876\xdc\xfc|x\xfa\x19\xeb\xe5\x82\xf3w/\x91R\xee45]\xf1\xea\ +\x16\xee"\xd69\xf0\xef\x9f\x1c\xf3\xf7\x7f\x81Q\x81\xd84\xe9\x18\xc5\x02++\ +\xcab\xcdb~\xc3\xd9\x9b+V\xeb\xce\xfc\xa0\x13\xe2Nj@ \xa4\xe0\x93\xcf\xbf$/r\ +\xde\xbf\xbf\xd8\xe9\xac:\xc5\x84\x10v\xec\xdf9\xd7\x9fsr\xb4OU\x16\xa4\t$6\ +\xa0\xc5\x96b\xb3f\xb1\xb8\xe1\xa7\xb3w\\/\xf2fw%\xc4\xafD\x84v\xcb#\x9a9I\ +\xf7x\xfe\xe2+^\xfe\xf0-\x97\x97o\x07\x9dU\xd3\xd4l\xb7\xdb~\x1b\x91\xa6)I\ +\x92\xf4e\xe0\xc1D\xb1\xba\r\x18U\xe2\xca\x92M\xb1a\xb9\x98s\xf6\xe6\x8a\xeb\ +E\x8e\x0f\x02A\xe7\xca\xa2\xdf\xb8\xea.3\xa1\xcbQ\x8b6M\xf7y\xfe\xe2k^\xff\ +\xfc=\xd7Wo\t\xe1\xbcoj:\x07^\xadV$I\xd2sH\x08\x81\xabj\xaabMQ5\xea\xb8\xb8\ +\x9c1_mX\xad\xabv?\x03\x08\xd9v\xf1\xf7\xc8\x1a\x06\xd1\xb8\x9b\x1b\xcb~\xfc\ +\xf13\x0e\x8f\x1e2\x9f\x9dsy5#\xcb2V\xab\x15\x93\xc9\xa4\xdfH\xdd\xef\xc0\ +\x8a\xa2`\xbeX\x93\xe5\x15\xebMM\xed\xe9\x0bbw\xdf\xbe\x80\xeer$\x10| \x04O\ +\x08\xbei\xf3\x83\xa7c\xd3\xde\xde\x984=`\xbbm\xda\xbb\xe5\xba`\x95]a\xd4{\ +\xe2\xb8\xa9\xa2B*\x84\xd48/\xa9\x1dT\x8e\xd6\'\xbaHw\xb1\xdf},\xb0\xd3\x8f\ +\x84\xd0\xec\xca\xbdo\xf6\xa2B:\xa4\x93\x04\x01\xc1;\x82\xf7x\x1f\xd0:btp\ +\xd4|\x0eM\x11\xacCh\x1c\xb2\xbe\xdb\\\xdd\xd5\xa4\xae\xb9n\xd4!\xc4\xe0\x01\ +Gh\xcf\xf3=)~\x1b\x0fj\xfe\x0bA\xd9\\\x8cd\xf1*\x82\x00\x00\x00\x00IEND\xaeB\ +`\x82' + +def get016Bitmap(): + return wxBitmapFromImage(get016Image()) + +def get016Image(): + stream = cStringIO.StringIO(get016Data()) + return wxImageFromStream(stream) + +index.append('016') +catalog['016'] = ImageClass() +catalog['016'].getData = get016Data +catalog['016'].getImage = get016Image +catalog['016'].getBitmap = get016Bitmap + + +#---------------------------------------------------------------------- +def get017Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xddIDATx\x9c\xcd\x98Yo\x1b\xd7\x19\x86\x9f\xb3\xceB\x8ablK\xb4\x03[u\x15\ +\xa3\x8e[\xd7@\xea\xdb\xe47\x17\xbdk\xd1^\xb4E/\xdb\x18H\xd2\xa0\xa9\x1d/Q*K\ +\x0ee."9$\xe7,\xbd\x98EC5@o3\x005\xa28\xc3\xf3\xe8\xfd\xdeo9#\x80\xc8O\xe0\ +\xd0\x00O\x9e~\x86\xb5\t\xc6X\x94\xd6(\xa9\x10R!\x84 \xc6\xc8\x0eklN\xf1\xea\ +\x0fQt>\x14\xfc\xe8!v\x7f\x8d\xf5\xcf\x18#\x7f\xfd\xd3o+\x10k\x13\xd24\xc7&i\ +\x0b#\x1b\x10"\xc4H\x0c@tx\xbf!\xb8\r\xdempnCp\x0e\xe7J\x9c\x8fD$RY\x8c\xcdI\ +{{\x18\x93T\x0b\x0b\xd1\x81\x10\x15\xae\x80\x18"!\xfa+E\x8c\xb1\xd8$%M3L\x92\ +\xa2\xb5EI\xd9\xa0\x13B\t\xbe@DGj-Je(\xa5\x00p\xceQ\x96%\x9b\xcd\x86\xd5j\ +\xc5r\xb9\xe4r\xfe\x96\xe9\xc5)\xf9\xde\r>\xb81"\xdf\xdb\xbf\xc2\x10\r\x8e \ +\xc6@\x08\xe1\nDi\x8d1\x16\x93\xa4X[\xab\xa2Tu\x83_bT`\xd0\x1f\xd2\xeb\xf5H\ +\xd3\x14k-B\x08B\x08l\xb7[6\x9b\rEQT\x10\x97\x97L\xa7S\xa6\xd3)\x93\xc9\x19\ +\xef\xc7\xa7\x1c\xde\xb9\xcf\xdd\xa3\x87\x08Y\x01 *\xa0\x18\x03\xdeu\x14QR\ +\xa1\xb4Fk[\x01\x19\x8b\x94\x02#\n\xf6\x87\t7o~\xc8p8d0\x18\x90\xe79ZkB\x088\ +\xe7X\xaf\xd7;\x10\xb3\xd9\x8c^\xafG\x96eXk\x19\x8f\xc7\xbc\xfc\xe6\x19\x8b\ +\xd9\x94\x07\x8f>!\xcb\xfb\x15\x08\x02bD\xc8\x0e\x88\x90\n)\x15JJ\x94RH)H\ +\xf5\x86\xdb\xb7\x06\xdc\xbe}\x9b\xd1h\xc4\xe1\xe1!\xc3\xe1\x10c\xcc\x0e\xc0\ +b\xb1\xa0(\n\xb2,#MS\x92$\xc1Z\x8b\xd6\x1a\xa5*\x9fy\xef9\xfd\xfe9\xc5\xba\ +\xe0\xc9\xd3O\xc9\xf3\xbd:\x11\x02\xd2\xcb\x0e\x88\x10\x95\xa1\xea\xf8\x19Qp\ +\xe7`\x9f{\xf7\xeeqtt\xc4\xf1\xf11\xa3\xd1\x08)%eY\xb2\\.\x99\xcf\xe7x\xef\ +\xc9\xf3\x1c\x80\x10\x021\xc6:\xcb@J\xd9\xbe\x84\x10H)y\xf7\xee-\xcf\xbf\xfe\ +\x9c\'O?C\x08\t\x886\xe14P}\x01\x11"\x08\xbfd\x7f\x980\x1a\x8d8::\xe2\xf1\ +\xe3\xc7\x1c\x1c\x1c\xb4\x8b\x95e\xd9\xbeB\x08x\xef\x891\xa2\x94"I\x12\x84\ +\x10h\xad1\xc6`\x8ci\xd5I\x92\x844M9;;\xe1\xf5\xb7_q\xff\xa3\xc7u6vBC\x9d\ +\xa2!\x94\x18\x15\xb8y\xf3CF\xa3\x11\xc7\xc7\xc7\x1c\x1c\x1c\xb4\xf5\xc4{\ +\xcfl6c>\x9f\xb3Z\xadX\xaf\xd7x\xef[\x88\xeb\x00\xd6\xda6T\x8d\xc9\x95R\\\ +\x9c\x9fp\xe3\xd6\x1d\xfa\xfd}b7k\x80\xaaN\xf8\x82A\x7f\xc8p8\xe4\xf0\xf0\ +\x90\xd1hD\xa3\x98\xf7\x9e\xf1x\xccd2a\xb5Z\xb1\xddn\x11B\xd4\x9e\x92\xad\ +\x81\xbb0\xc6\x18\x92$i\xc1\x9a\x94\x8f\xf1\x94\xc9\xf8\x94<\x1f\x10B\xdc\ +\x05!:Dt\xf4z=\x06\x83\x01\xc3\xe1\x10)e+\xffx<\xe6\xe2\xe2\x82\xc5bA\x08\ +\x01)%1F\xa4\x94\xedW4\x9ePJ\xa1\xb5\xfe\x1fU\x9a{\xbc\xf7\x9c\x9d\x8f\xd9l\ +\x96h\x9dt@"x\xbf!\xad%\xcc\xf3\x1ccL\xeb\x85\xd9l\xc6d2a\xb1X\x10cl+ec\xc2\ +\xc6?\xcd{\xa5\x141FB\x08\xad*\xdd\x0c\xdan\xb7,\x97K\x8a\xe5\x8c\xde\xe0\ +\xd6\xae"\xc1mP*k\xcd\xe5\x9cc\xb9\\R\x96e\xeb\x89f\xb1\xebe\xbbQ\xa39\xba\ +\xd74\x8a4pM\x05\x9e\xcf\xe7\xcc\x16\xeb]\x8fD"\xdemZ\xea\x10\x02\xeb\xf5\ +\x9a\xf9|NY\x96\xad\'\x9a\xc5\xba\x0b5\xe9\xda-\x03\xdd\xd4m\xd4RJ\x11B\xa0(\ +\n.//\x19\x0e\x87\xcc\x97\xe7\x84x\xcd\xac\xcem\xda\x9b\x9cs\x14E\x81\xf7\ +\xbe\x85j\x16\xfd\x7f\x10\xdd\xf0h\xad\xdb\xeb\xa5\x94x\xef\x19\x0c\x06\xec\ +\xed\xed\xd1\xef\xf71\xea]\xfb\x1dm\xfaV]\xd4\xb1\xddnY\xaf\xd7,\x16\x0b\xf2\ +<\xc7{\xdf\xa6h\xf7\xbf\xbc\x0e\xd1\xf5L\x17\xa4\x811\xc6\x10Bh\xcb\x7fU\x89\ +-n\x07$\n\x9c+\xdb.Z\x14\x05EQ\xb4\x0b6\x10?v\xbc\xbb\xb8\xe4o\x7f\x7f\xc1\ +\xc3\xe3\xdb<<\xbeM\x9eU~h@\x8c1mX\x9cs\xa4iz\xd5\n\x8c\xa5\xac\xeaY\'4>\xee\ +t\xd1,\xcb\xf0\xde\xb7UQk\xdd\x86\xae\xeb\x95/\xff\xf5\x1f^\xbd9\xe3\xf5w\ +\xe7\xfc\xe1/_\xf0\xe0\xf8.\x8f\x7fq\x97_\x7f|\x8f^\xa7~x\xef\xdbDh\xfb\x90T\ +\xe0\xae\x85&"\xaf\xe6\x89\xcbK\xd24%\xc6\xd8B4\x00\xdd0\x08!89\x9b\xd6}J \ +\x84\xe4\xe5\x9b3^\x9f\xfc\xc0\xef\xff\xfc%\xbf|t\xcco~\xf5s\x9e<\xbaG\x92$\ +\xac\xd7\xeb\x9d\xfe#\xa4\xbe\xee\x11\x81Tv\xa7\x95\'I\xd2\x9a\xd3\x18\x83\ +\xd6z\xc7#B\x08\xe6\x8b5\x17\xef\xa75\x94DH\x89\x14u\xc6(\xc5\x8bWoy}2\xe6w\ +\x7f\xfc\x07\x1f?\xb8\xc7\xcf\xee\xf4\xe8\'\xbe\xf5\x9d\x0fW\xe1nCcl^MV\xd3)\ +\xbd^\x0fkmuA\xa7d7\xb1oL\xf9\xe2\xf5\x0f\xedH)\xa4D\xd4\x10Z\x1b\x94\xb6\ +\xf5Y\xa3\x95\xe2\xcd\xc9\x19\x93\xf7\x92\x0f\xfa\x80[\xb2\xdelp\x9e\xeb\x8a\ +@\xda\xdbczq\xcat:%\xcb\xb2V\x81\xa6O4\xaat\xdb\xfc\x97\xff>m!\xaayF!\x95B\ +\xe9\xfazS{B\t\xf2D\xb0\x97K\xacv,W\x1b&\x93\xcb\xd6\xa8\xbb\x8a\x98\x84|\ +\xef\x06\x93\xc9Yk\xb0\xeb \xd6\xda\xb6\xbaVa\x99#\xeb\xc5\xa5\xd4(\xadPJ\ +\xa3u\x03\xa10Z\x91\x18A?\x97\xf4RAt\x05\xebb\xc5\xb2(\t\xb1\x1e\x8a\xbb \ +\x00\x1f\xdc\x18\xf1~|\xcax<n\xe5oJt\xd3\xb8\x1a\xa0o^\x9e\x83\xe8LwJ\xa1T\ +\xa5\x9a\xaa3\xc3h\x855\x92~&\x19d\x12#K\x16\xeb\x15o\xcf\xc6,Vn\xa7\x0c\xb4\ + B\x08\xf2\xbd}\x0e\xef\xdc\xe7\xe57\xcf\xf0\xde\xb7CN\x03\xd0\x00%I\xc2\xb3\ +\x7f\xbei\xf78\xadQ\xa5D)\x89V\n\xadD\xa5D&\xd9\xef)\x12\xe3\xd8\x16Kf\xb3\t\ +\x93\xf9\n\x17\xaa$\x11\xdd\t\xad\xbb\xf9\xb9{\xf4\x90\xc5l\xca\xe9\xf7\xcf\ +\x91R\xb6\x93U\xd3\xd2\x95R,W[~\x18_\xa0\xb5\x81\xa8\xa9\xb6K\x11Ye1FA\x9eT\ +\xe1\x18d\x92\xd4x\xca\xed\x92\xd9\xf4=\xaf\xbe;g\xbe(\xdb\xd1\xb4)\xd0;\xa1\ +\x01\x81\x90\x82\x07\x8f>\xa1X\x17\xbc{\xf7vg\xb2j\xf2\x7f<\xddb\x94\xaf\xa6\ +\x7f\x19\xd02`4$&\x92\xa6\x82^&\xd9\xcb%y\nV\x96l\x8a\n\xe2\xc5\xab\xef\xb9\ +\x98\x16\x15\xad\x10?\xa2\x08\xf5\x96GT\xe7,\xef\xf3\xe4\xe9\xa7<\xff\xfas\ +\xce\xceN:\x93U=\xa9\xcdJ\xf63\x814\x12\xad\x05\xc6H\x12\xabH3E\x96H\xf2T`\ +\xb5#\xba\xca\x13\xb3\xd9\x84W\xdf\x9ds1-\x08Q h\xfa\x93h7\xae\xba\x89LlbT\ +\xd3\xe6\xf9\x1eO\x9e~\xc6\xebo\xbf\xe2\xe2\xfc\x84\x18O\xdb\xa1F\xdb\x8c,\ +\xeb\x91\xa4\x06k#\xc6F\x12\x1b0\xc6\xa3U\xc4o\x0b\x16\xab\x92uQ\x19s2_1_\ +\x94\xf5~\x06\x10\xb2\x9e\xe2\xaf\x995v\xd4\xb8:W\xd5\xf2\xfeG\x8f\xb9q\xeb\ +\x0e\x93\xf1)g\xe7c\x96\xcb%\xfb\xfb\xd5f\xab\xd7\xeb\xe3\xb3\x94\xe0\x12\ +\xdcF!\x85$DOY\x96L\xa7\x0b\x96E\xc9b\xe5p\x81N\x1b\xa8\xabp\x13\x93]\x8fDb\ +\x88\xc4\x18\x881Tc~\x0c4n\xea\xf7\xf7\xc9\xf3\x01\x9bM5\xde]\xae\xd6,\x8a1F\ +]\x90\xa6\x16kl\xf5\xf4@j|\x908\x0f\xa5\xa7\xae\x13\x8d\xd2\x8d\xf6\xbb\x8f\ +\x05v*k\x8c\xd5\xae<\x84j/*\xa4GzI\x14\x10\x83\'\x86@\x08\x11\xad\x13z\x83[\ +\xd5\xfbXm\xa8\\\x8cU\x85tW\x9b\xab\xabY\xa5\x0ex\x9d\x1dBt\x1ep\xc4\xfa\xba\ +\xd0\x9a\xe2\xa7\xf1\xa0\xe6\xbf\xf1o."\xb9\t8\x10\x00\x00\x00\x00IEND\xaeB`\ +\x82' + +def get017Bitmap(): + return wxBitmapFromImage(get017Image()) + +def get017Image(): + stream = cStringIO.StringIO(get017Data()) + return wxImageFromStream(stream) + +index.append('017') +catalog['017'] = ImageClass() +catalog['017'].getData = get017Data +catalog['017'].getImage = get017Image +catalog['017'].getBitmap = get017Bitmap + + +#---------------------------------------------------------------------- +def get018Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +&IDATx\x9c\xcd\x98K\x8f\xdb\xe6\x19\x85\x9f\xefFR\xd4H\xa3\xd8\x9e\x91\x1d\ +\xd8\x03\xd7\t\x90\x04p\r\x04\xde&\x7f\xa0\x7f\xa4\xcb\xae\xba\xee\xef\xe8\ +\xbe(\xba)R\xf4\x024h\x82\x02A\x03\x14mjo\x8c4\xf1%q\xeazF\x9a\xa1"J#\x89\ +\x92\xf8]\xba\xa0HIN\x80nC@w\x91\xdf\xd1y\xcf9\xef\xfbI\x00\x81\x1f\xc0\xa1\ +\x01\xee\xdd\x7f\x9f(\x8a1&Bi\x8d\x92\n!\x15B\x08B\x08\xeca\r\xf5C\xd8\xbe\ +\x11\xc4\xce\x87\x82\xef=\xc4\xfe\xd3\xb0\xb9\x0f!\xf0\xc9G\x1fT@\xa2(&IR\ +\xa28i\xc0\xc8\x1a\x08\x01B x X\x9c[\xe1\xed\ngWX\xbb\xc2[\x8b\xb5%\xd6\x05\ +\x02\x12\xa9"L\x94\x92\xb4;\x18\x13W\x0b\x0b\xb1\x03BTp\x05\x04\x1f\xf0\xc1m\ +\x191&"\x8a\x13\x92\xa4\x85\x89\x13\xb4\x8ePR\xd6\xd0\xf1\xbe\x04W \x82%\x89\ +"\x94j\xa1\x94\x02\xc0ZKY\x96\xacV+\x16\x8b\x05\xf3\xf9\x9c\xcb\xe9\x19\xf9\ +\xe8\x94\xb4s\x85\xd7\xae\xf4I;\x87[\x18\xa2\x86#\x08\xc1\xe3\xbd\xdf\x02QZc\ +L\x84\x89\x13\xa2h\xc3\x8aR\xd5\tn\x8eQ\x9e\xeeA\x8fv\xbbM\x92$DQ\x84\x10\ +\x02\xef=\xeb\xf5\x9a\xd5jEQ\x14\x15\x88\xcbK\xf2<\'\xcfs\xc6\xe3\x01\xdff\ +\xa7\x1c\xdf\xb8\xcd\xcd\x93\xb7\x10\xb2\x02\x80\xa8\x00\x85\xe0qv\x87\x11%\ +\x15Jk\xb4\x8e*@&BJ\x81\x11\x05\x87\xbd\x98\xabW_\xa7\xd7\xeb\xd1\xedvI\xd3\ +\x14\xad5\xde{\xac\xb5,\x97\xcb=\x10\x93\xc9\x84v\xbbM\xab\xd5"\x8a"\xb2,\ +\xe3\xab/\x1f2\x9b\xe4\xbc\xf9\xce\xbb\xb4\xd2\x83\n\x08\x02B@\xc8\x1d B*\ +\xa4T()QJ!\xa5 \xd1+\xae_\xebr\xfd\xfau\xfa\xfd>\xc7\xc7\xc7\xf4z=\x8c1{\x00\ +f\xb3\x19EQ\xd0j\xb5H\x92\x848\x8e\x89\xa2\x08\xad5JU:s\xceq\xfa\xdf\'\x14\ +\xcb\x82{\xf7\xdf#M;\x1b#x\xa4\x93;@\x84\xa8\x04\xb5\xa9\x9f\x11\x057\x8e\ +\x0e\xb9u\xeb\x16\'\'\'\xdc\xb9s\x87~\xbf\x8f\x94\x92\xb2,\x99\xcf\xe7L\xa7S\ +\x9cs\xa4i\n\x80\xf7\x9e\x10\xc2\xc6e \xa5lnB\x08\xa4\x94\x9c\x9f\x9f\xf1\ +\xe4\xf3\x07\xdc\xbb\xff>BH@4\x86\xd3@u\x01\x02\x04\x10n\xcea/\xa6\xdf\xefsr\ +r\xc2\xdd\xbbw9::j\x16+\xcb\xb2\xb9y\xefq\xce\x11B@)E\x1c\xc7\x08!\xd0Zc\x8c\ +\xc1\x18\xd3\xb0\x13\xc71I\x920\x18\xbc\xe0\xf9\xb3G\xdc~\xe3\xee\xc6\x8d;\ +\xa5acQ\xefK\x8c\xf2\\\xbd\xfa:\xfd~\x9f;w\xeeptt\xd4\xe4\x89s\x8e\xc9d\xc2t\ +:e\xb1X\xb0\\.q\xce5 ^\x05\x10EQS\xaaZ\xe4J)F\xc3\x17\\\xb9v\x83\x83\x83C\ +\xc2\xaek\x80*\'\\A\xf7\xa0G\xaf\xd7\xe3\xf8\xf8\x98~\xbfO\xcd\x98s\x8e,\xcb\ +\x18\x8f\xc7,\x16\x0b\xd6\xeb5B\x88\x8d\xa6d#\xe0]0\xc6\x18\xe28n\x80\xd5\ +\x96\x0f\xe1\x94qvJ\x9av\xf1>\xec\x03!XD\xb0\xb4\xdbm\xba\xdd.\xbd^\x0f)eC\ +\x7f\x96e\x8cF#f\xb3\x19\xde{\xa4\x94\x84\x10\x90R6\x97\xa85\xa1\x94Bk\xfd\ +\x1dV\xeas\x9cs\x0c\x86\x19\xab\xd5\x1c\xad\xe3\x1d \x01\x9c[\x91l(L\xd3\x14\ +cL\xa3\x85\xc9d\xc2x<f6\x9b\x11Bh\x92\xb2\x16a\xad\x9f\xfa\xb5R\x8a\x10\x02\ +\xde\xfb\x86\x95]\x07\xad\xd7k\xe6\xf39\xc5|B\xbb{m\x9f\x11oW(\xd5j\xc4e\xad\ +e>\x9fS\x96e\xa3\x89z\xb1Wc\xbbf\xa3>v\xbfS3R\x83\xab\x13x:\x9d2\x99-\xf75\ +\x12\x088\xbbjP{\xefY.\x97L\xa7S\xca\xb2l4Q/\xb6\xbbPm\xd7\xdd\x18\xd8\xb5n\ +\xcd\x96R\n\xef=EQpyyI\xaf\xd7c:\x1f\xe2\xc3+b\xb5v\xd5\x9cd\xad\xa5(\n\x9cs\ +\r\xa8z\xd1\xff\x07b\xb7<Z\xeb\xe6\xfbRJ\x9cst\xbb]:\x9d\x0e\x07\x07\x07\x18\ +u\xde\\\xa3\xb1o\xd5E-\xeb\xf5\x9a\xe5r\xc9l6#MS\x9cs\x8dEw\x7f\xe5\xab v5\ +\xb3\x0b\xa4\x06c\x8c\xc1{\xdf\xc4\x7f\x95\xc4\x11v\x0fH\x10X[6]\xb4(\n\x8a\ +\xa2h\x16\xacA|\xdf\xf1\xe9\xbf\x9e\xd1\xeb\xb4\xf8\xf1\xdb7\x1bF\x94R\r\x10\ +cLS\x16k-I\x92l[\x81\x89(\xab<\xdb)\x8d\x0b{]\xb4\xd5j\xe1\x9ckRQk\xdd\x94NJ\ +\xc9rU\xf2\xc1\x87\x0fy9\xc80&\xe1\xf6\xad#^;l7 v\x83M)\x85s\xae1B\xd3\x87\ +\xa4\x02\xbbi\tui\x02r;O\\^6\xcdl\xbd^7Z\xa9\xcb\xf1\xe4\xf99\xbf\xfc\xf5\'\ +\x9c\x0eF\x08\x04\xce\xae\xf9\xed\x9f\x1f6,|_\x8e\xd4\xce\xd9\xed?B\xeamo\ +\xdaT\x19\xa9\xa2\xbdV>\x9dN\x99\xcdf\xac\xd7k\xca\xb2\xc4Z\x8b\xf7\x9e\x8f?\ +\xfd7\xbf\xfb\xf0\x9f\x94\xe5\xaa\x16\x08\x08\xc1\xe8\xdb\t\x7f\xf9\xdb\x17\ +\xdfa\xa3\xbe\xd5\x8b\xd7\x01\xe9\x9c\xc3\xf9m\xb9\x9b\xd2\x98(\xad&\xab<\ +\xa7\xddn\x13EQ\xf5\x85M\x9d\xf3\xcb%\x7f\xfd\xfbS\xf2\xc9\x0c!e5c\tY=\x17\ +\x02!%\x0f\x1e}\xcd\xbbwo\xf3\xf6\x9b7\x9b\xdeR\x0fQ\xb5kjC\xacV+\xac\xe3U\ +\xd7@\xd2\xee\x90\x8fN\xc9\xf3\x9cV\xab\x85\xd6\x1a)%\xc6\x18\x1e\x7f}\xc1\ +\xa3\xa7\x17\x08@i\x83D\xc0+ \xaayF\xf1\x9b?>\xe0\x17?;!\x8ecZ\xadV\xa3\x8f\ +\xb2,Y.\x97,\x16\x0b\x16\x8b\x05\xe3\xfc\xb2\x11\xea>#&&\xed\\a<\x1e4\x02\ +\x0b\xc0\xa3\xc7g\x8c&kL\x94`\xa2V5D\xa9\x80\x04\x84\xd8\x04\x97RH\xa9QZ\x11\ +\x82\xe7W\xbf\xff\x8c\x9f\xff\xf4\'h]i\xa0\x0e\xc5\xe9t\xda\x94|\xb6(\xf1a3\ +\x14o5R\x1d\xaf]\xe9\xb3*=Y\x961\x1c\x0e\xf9\xf2\xc97\x8cF\x19\xf85\xceY\x9c\ ++\xab\xf9\xc3o6\x13bg\xbaS\n\xa5\x0cZ\x1b^\x9c^\xf0\xc9?\x9e6 \xea9v<\x1e\ +\x93\xe79/O\xcf\x99-\xec^\x0c4@\x84\x10\xa4\x9dC\x8eo\xdc\xe6\xfc\xfc\x9c\ +\xc1`H1\x9f"\xc3\x1a-\x1d2\x94\x04\xef\x08\xc1\xe2\xbd\xab\xa29\xd4\xe7\xcaM\ +y$JI\xb4R\xfc\xe9\xe3\xcfx\xfe\x9f\x01y\x9e\x93e\x19\xe7\xe7\xe7dYF\x96e|;Y`\ +}\xf5K\x9a\xe4\xdd\x98\xa69n\x9e\xbc\xc5\xf1\xf5\x1fqqqN\x9e\x8fp\xb6\xc0HK\ +\x12\x05\x8crH*0\x04O\x08\x0e6\x1b0A@V\x06\xc2(Hc\xc1\x1f>\xfa\x8c\x97/O9;;c\ +0\x180\x1c\x0e\xf9\xea\x9b\x01\xd3Y\x89\xd8\x18\xee;\x1a\xa9m,\xa4\xe0\xcdw\ +\xde\xa5X\x16\x8c\xb23\x928!\x8eb\xe28\xc2D1B\x01* \x94\xab\xa6\x7f\xe9\xd1\ +\xd2c4\xc4&\x90$\x82vK\xd2I%\x91X\xf0\xc5\xe3g\x94\xab9\xc3\xe1\x90\xc7\xcf^\ +0\xca\x8b\xc6\xf2\xdb}\xce\x0e\x10\xb1yS h\xa5\x07\xdc\xbb\xff\x1eO>\x7f\xc0\ +\xc5\xc5\x8bMHI\x92\xd8\x90\xc4\x11J\x83\xd2\x02i$Z\x0b\x8c\x91\xc4\x91"i)Z\ +\xb1$M\x04\x91\xb6\x04[r1\\0\x9d\xe6|\xf5\xcd\x80Q^\xe0\x83\xd8\xb0Q\x01\t\ +\xbb\x8cl\xb5+\x1a\xb4i\xda\xe1\xde\xfd\xf7y\xfe\xec\x11\xa3\xe1\x0b\xe0|C\ +\x7f\xe0\xa0\x03-\xa3\x88\x13C\x14\x05L\x14\x88#\x8f1\x0e\xad\x02n]0[\x94,\ +\x8b\x05g\x83\x8c\xf1t\xc1tVn\xf63T\xd6\x17\xfb\xbdk3\x8fl\xd9\xd8>V\x81u\ +\xfb\x8d\xbb\\\xb9v\x83qvJ6\x1a\xb3\\\x16\xf4\x8a\x05\xddn\x97v\xfb\x00\xd7J\ +\xf06\xc6\xae\x14RH|\xa82#\xcfg\xcc\x8b\x92\xd9\xc2b\xfd\x86\x01\xb1\xbdn3X\ +\x85\xbd\xd2\x84\xca\x92\xc1\x13\x82\xaf\xc6\xfc\xe0+\x86B\xe0\xe0\xe0\x904\ +\xed\xb2ZU\xe3\xdd\xe5b\xc9\xac\xc80jD\x92DD&\xaa\xfe=\x90\x1a\xe7%\xd6A\xe9\ +\xd8\xe4D\xcdt\xcd\xfd\xfe\xdf\x02{\xc9\x1aB\xb5+\xf7\xbe\xda\x8b\n\xe9\x90N\ +\x12\x04\x95e\xbd\xc7\xfb\x80\xd61\xed\xee\xb5\xeau\xa8\x9a\xa0\r\xa1JH\xbb\ +\xdd\\mg\x95M\xc1\xab\xdfS=\xb2\xfd(\x84\x00\xbe\x11\xc5\x0f\xe3\x8f\x9a\xff\ +\x01k)\xae\n\xd5\xf2\r\xdb\x00\x00\x00\x00IEND\xaeB`\x82' + +def get018Bitmap(): + return wxBitmapFromImage(get018Image()) + +def get018Image(): + stream = cStringIO.StringIO(get018Data()) + return wxImageFromStream(stream) + +index.append('018') +catalog['018'] = ImageClass() +catalog['018'].getData = get018Data +catalog['018'].getImage = get018Image +catalog['018'].getBitmap = get018Bitmap + + +#---------------------------------------------------------------------- +def get019Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xb7IDATx\x9c\xcd\x98\xdbn\xdbV\x16\x86\xbf}")\xca\x96\xd5$\xb6\x92\xa25\x82\ +\xb4@Q \x08P\xe4r\xda\xbby\xdfy\x81\xb9\x9a\x07\xe8\xdc\x14\x05f\x82\x16-2ud\ +\x97\x8a$\x8a\xe2A\xdc\x87\xb9\xe0A\x92;\xc0\xdc\x96\x00MK"\xb9?\xae\xf5\xaf\ +\x7f\xafM\x01\x04\xfe\x04\x9b\x06x\xf3\xf6;\xa2(\xc6\x98\x08\xa55J*\x84T\x08\ +!\x08!p\xc6\x1a\x86C8~\x11\xc4\xc9\x8f\x82\xff\xb9\x89\xf3\x7fC\xff7\x84\xc0\ +?\xfe\xfe\xb7\x0e$\x8ab\x92$%\x8a\x93\x11F\x0e \x04\x08\x81\xe0\x81`q\xae\ +\xc1\xdb\x06g\x1b\xacm\xf0\xd6bm\x8bu\x81\x80D\xaa\x08\x13\xa5$\xd3K\x8c\x89\ +\xbb\x81\x858\x81\x10\x1d\xae\x80\xe0\x03>\xb8cD\x8c\x89\x88\xe2\x84$\x99`\ +\xe2\x04\xad#\x94\x94\x03:\xde\xb7\xe0*D\xb0$Q\x84R\x13\x94R\x00Xki\xdb\x96\ +\xa6i(\xcb\x92\xfd~\xcf.\xff\xc0fuGz\xf9\x84O\x9e,H/\xaf\x8e\x18b\xc0\x11\ +\x84\xe0\xf1\xde\x1fA\x94\xd6\x18\x13a\xe2\x84(\xea\xa3\xa2Tw\x81\xdbc\x94gv\ +1g:\x9d\x92$\tQ\x14!\x84\xc0{\xcf\xe1p\xa0i\x1a\xaa\xaa\xea v;6\x9b\r\x9b\ +\xcd\x86\xf5z\xc9\xc7\xec\x8e\x9b\x17/\xf9\xec\xf6+\x84\xec\x00\x10\x1dP\x08\ +\x1egO"\xa2\xa4Bi\x8d\xd6Q\x07d"\xa4\x14\x18Qq5\x8fy\xfa\xf4S\xe6\xf39\xb3\ +\xd9\x8c4M\xd1Z\xe3\xbd\xc7ZK]\xd7g\x10\xdb\xed\x96\xe9t\xcad2!\x8a"\xb2,\ +\xe3\xe7\x7f\xfd\x93b\xbb\xe1\xcb\xaf\xbfa\x92^t \x08\x08\x01!O@\x84TH\xa9PR\ +\xa2\x94BJA\xa2\x1b\x9e?\x9b\xf1\xfc\xf9s\x16\x8b\x05777\xcc\xe7s\x8c1g\x00E\ +QPU\x15\x93\xc9\x84$I\x88\xe3\x98(\x8a\xd0Z\xa3T\xa73\xe7\x1cw\xffyGUW\xbcy\ +\xfb-iz\xd9\x17\x82G:y\x02"D\'\xa8>\x7fFT\xbc\xb8\xbe\xe2\xf3\xcf?\xe7\xf6\ +\xf6\x96W\xaf^\xb1X,\x90R\xd2\xb6-\xfb\xfd\x9e<\xcfq\xce\x91\xa6)\x00\xde{B\ +\x08}\x95\x81\x94r\xdc\x85\x10H)yx\xf8\xc0\xbb\x1f\xbf\xe7\xcd\xdb\xef\x10B\ +\x02b,8\rt7 @\x00\xe1\xf6\\\xcdc\x16\x8b\x05\xb7\xb7\xb7\xbc~\xfd\x9a\xeb\ +\xeb\xebq\xb0\xb6m\xc7\xdd{\x8fs\x8e\x10\x02J)\xe28F\x08\x81\xd6\x1ac\x0c\ +\xc6\x981:q\x1c\x93$\t\xcb\xe5{~\xf9\xe9\x07^~\xf1\xba\xaf\xc6\x93\xd4\xd0\ +\x97\xa8\xf7-Fy\x9e>\xfd\x94\xc5b\xc1\xabW\xaf\xb8\xbe\xbe\x1e\xfd\xc49\xc7v\ +\xbb%\xcfs\xca\xb2\xa4\xaek\x9cs#\xc4c\x80(\x8a\xc6T\r"WJ\xb1\xba\x7f\xcf\ +\x93g/\xb8\xb8\xb8"\x9cV\r\xd0\xf9\x84\xab\x98]\xcc\x99\xcf\xe7\xdc\xdc\xdc\ +\xb0X,\x18"\xe6\x9c#\xcb2\xd6\xeb5eYr8\x1c\x10B\xf4\x9a\x92\xa3\x80Oa\x8c1\ +\xc4q<\x82\r%\x1f\xc2\x1d\xeb\xec\x8e4\x9d\xe1}8\x07!XD\xb0L\xa7Sf\xb3\x19\ +\xf3\xf9\x1c)\xe5\x18\xfe,\xcbX\xadV\x14E\x81\xf7\x1e)%!\x04\xa4\x94\xe3-\ +\x06M(\xa5\xd0Z\xff!*\xc35\xce9\x96\xf7\x19M\xb3G\xeb\xf8\x04$\x80s\rI\x1f\ +\xc24M1\xc6\x8cZ\xd8n\xb7\xac\xd7k\x8a\xa2 \x840:\xe5 \xc2A?\xc3g\xa5\x14!\ +\x04\xbc\xf7cTN+\xe8p8\xb0\xdf\xef\xa9\xf6[\xa6\xb3g\xe7\x11\xf1\xb6A\xa9\ +\xc9(.k-\xfb\xfd\x9e\xb6mGM\x0c\x83=\xb6\xed!\x1a\xc3vz\xce\x10\x91\x01np\ +\xe0<\xcf\xd9\x16\xf5\xb9F\x02\x01g\x9b\x91\xda{O]\xd7\xe4yN\xdb\xb6\xa3&\ +\x86\xc1N\x07\x1a\xca\xf5\xd4\x06NKw\x88\x96R\n\xef=UU\xb1\xdb\xed\x98\xcf\ +\xe7\xe4\xfb{|x$Vk\x9b\xf1"k-UU\xe1\x9c\x1b\xa1\x86A\xff\x1f\xc4iz\xb4\xd6\ +\xe3\xf9RJ\x9cs\xccf3.//\xb9\xb8\xb8\xc0\xa8\x87\xf1\x1ec\xf9v\xb3\xa8\xe5p8\ +P\xd75EQ\x90\xa6)\xce\xb9\xb1DO\x9f\xf21\xc4\xa9fNA\x06\x18c\x0c\xde\xfb\xd1\ +\xfe;\'\x8e\xb0g A`mKU7\xdc-?\xb2\\[<\xbf\x10\x84\xecLN\x88\xbe?\x91\xc7\x89\ +\xebd\xfb\xeb_\xbefq}5FD)5\x82\x18c\xc6\xb4XkI\x92\xe48\x15\x98\x88\xb6\xf3\ +\xb3\x93\xd4\xb8@S\xd7\x14\xfb\x82vg)[\x81\xf3\x02\x10H\xa5Q\xaa\x0f\xb3\x90\ +G\x90\xfe\xd0\xb4\xee,\x12J\xa93cSJ\xe1\x9c\x1b\x0ba\x9c\x87\xa4\x02\xfb(5\ +\x01IUW\xc4uE\x90\x02w\x10X/@*\xb4\x90H\xe1A\xaa\xae\xad\xe9\xe7\xa5\x01\xe8\ +q:\x1e\xfb\x88\xd6\x1a\xe7\x1cu]\x9f\xcd?B\xea\xe3\xdc4<\x9aT\x11\xe5\xbe\ +\xa4\xa9+l[\xe3\xdd\x81\xd66xg\xbb\xdd{B\xaf\xf0p\xda:\n\x81\xec\xd31@<\xb6\ +\xf9\xc1\xcc\x86\x8a\x1ct\xe7\xfc\xb1\xe4\xc7\xd4\x98(\xa5\xc8?\x90LR&S\x85w\ +\x9a`%6\xf4\xe9\x10\xb2?v\x95#\x10\xbdf$\xba\x1fx\x80\x18&\xb8\x01b\x10\xb1s\ +n,\x88\xa6i\xb0\x8e\xc7U\x03\xc9\xf4\x92\xcd\xea\x8eb\x97#\x95\x06\x99\x10\ +\xbc\xc2\x07\x10B!\xa5FJG\x90\x12I\x0f\xd7?\xa5VzL\x811f\x14\xe3d2\x19\xf5\ +\xd1\xb6-u]S\x96%eY\xb2\xde\xecF\xa1\x9eG\xc4\xc4\xa4\x97O\xd8n\x96(\xad\x89\ +\x13\x0f"&\x08pv(\xddN`R\x05$ D\x97o\xfd(\rQ\x141\x99L\xd0\xba\xd3\xc0`\x8ay\ +\x9e\x93\xe79EQP\x94->\xf4M\xf1Q#\xdd\xf6\xc9\x93\x05\x07\xeb\xd9\xac\xd7T\ +\xe5\x0e\\\x83\x0c-\xf8\x03\xceY\x9ck\xbb\xfe\xc3\xf7*\x11]wg\x8c\xfe\x03\ +\xc8`\xe9m\xdb\x8e}\xecz\xbdf\xb3\xd9\xf0\xdb\xdd\x03Ei\xcf,`\x04\x11B\x90^^\ +q\xf3\xe2%Y\xf6;\xeb\x8f+\x9a\xba@\x86\x03Z:dh\t\xde\x11\x82\xc5{\xd7Ys\xafY\ +)\xd5\x1f\x0cl\xa8\x92\xcdfC\x96e<<<\x90e\x19Y\x96\xf1q[b}\xf7$\x83\x19\xeaS\ +?\x00\xf8\xec\xf6+\x8a\xed\x86\xbb\xff\xbcCH\xc1u\xd4\xcf\x9eQ H\x87\xa0\x83\ +!hBp\x104\xde\xbb\xb1\x12\x9a\xa6\x19[\xca\xb2,\xd9l6<<<\xb0\\.\xb9\xbf\xbf\ +\xe7\xe7_\x97\xe4E;\xb6\xa6\x83A\x1f\xfb\x91\x9eHH\xc1\x97_\x7fCUW\xac\xb2\ +\x0f$qB\x1c\xc5\xc4q\x84\x89b\x84\x02T@(\xd7u\xff\xd2\xd3\xf4]\xfc0\'\r\xd1\ +\xc8\xf3\x9c\xf5zM\x96e\xdc\xdf\xdf\xf3\xef\x9f\xde\xb3\xdaT\xbd\x0f\t\x8e\ +\xeb\x9c\x13\x10\xd1\x7f)\x10L\xd2\x0b\xde\xbc\xfd\x96w?~\xcf\xef\xbf\xbf\ +\xef\xfdA\x92\xc4\x86$\x8eP\x1a\x94\x16H#\xd1Z\xb0\xdbmX.\xc5\xd8HYkGq\x0e\ +\xa9\xf9\xf9\xd7%\xabM\x85\x0f\x9d\r\x8a\x1edp$=d&\x0c9\xeai\xd3\xf4\x927o\ +\xbf\xe3\x97\x9f~`u\xff\x1ex@\x10\x90"pq\t\x13\xa3\x88\x13C\x14\x05V\xd9=M\ +\x95\x8f^q8\x1c(\xcb\x92\xa2(\xf8\xed\xee\x81\x8f\xdb\x92\xbch\xfb\xf5\x0cG_\ +:\xd9\xfa~\xe4\x18\x8d\xe3\xb13\xac\x97_\xbc\xe6\xc9\xb3\x17\xac\xb3;\xb2\ +\xd5\x9a\xba\xae\x98W%\xb3\xd9\x8c\xe9\xf4\x027I\xb8\xfb\xad9\x13i\xd34\xac7\ +;\x8a\xb2\xa5(-\xd6\xf7\x11\x10\xc7\xfb\x8e\x8d\xd5\xb9FBW\x92\xa1\xb7\xf1\ +\x10z;\xef\xd4tqqE\x9a\xceh\x9a\xae\xbd\xdb\x955E\x95a\xd4\x8a$\x89\x88L\xd4\ +\xcd\xceR\xe3\xbc\xc4:h\x1d\xbdO\x0c\x91\x1eb\x7f\xfeZ\xe0\xccYC\xe8V\xe5\ +\xdewkQ!\x1d\xd2I\x82\xa0+Y\xef\xf1>\xa0u\xcct\xf6\xac\xfb\x1c\xba\x05\x95\r\ +\xa1sH{\\\\\x1d{\x95>\xe1}u\x08q\xf2\x82#\xf4\xe7\xf9Q\x14\x7f\x8e\x175\xff\ +\x05g\'\x93\xa3\xa4\x98\xbd\xac\x00\x00\x00\x00IEND\xaeB`\x82' + +def get019Bitmap(): + return wxBitmapFromImage(get019Image()) + +def get019Image(): + stream = cStringIO.StringIO(get019Data()) + return wxImageFromStream(stream) + +index.append('019') +catalog['019'] = ImageClass() +catalog['019'].getData = get019Data +catalog['019'].getImage = get019Image +catalog['019'].getBitmap = get019Bitmap + + +#---------------------------------------------------------------------- +def get020Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +\x1eIDATx\x9c\xcd\x98[\x8f\x1c\xc5\x19\x86\x9f:\xf4az\x0e;\x18\xef\x8e\x1d\ +\xf0b\xd6D\x80p6A\x86(R\xec\x08\t)\x8a\x14\xfe_~\x00\xcae\x84r\x97\x8b\\D(\ +\x17\x91"\xf0\rB"\x96-\xc0\xb0\xde\xd9\x9d\xf5\x9cz\xfa\\U\xb9\xe8\xc3\xcc\ +\xd8\xfc\x00J\xaa\x9d\x9d\xd9\xe9\xaeg\xbfz\xbf\xf7\xfb\xaa\x05\xe0\xf8\x19\ +\x0c\rpz\xef\x01\xbe\x1f\xe0y>Jk\x94T\x08\xa9\x10B\xe0\x9cc\x8f\xd5\xb5/n\ +\xfb\x81\x13;\x7f\x14\xfc\xe4\x10\xfb\xbf\xba\xe6\xa7s\x8e\xcf\xff\xf9Y\r\ +\xe2\xfb\x01a\x18\xe1\x07a\x07#[\x10\x1c8\x87\xb3\x80\xab0&\xc7V9\xa6\xca\ +\xa9\xaa\x1c[UTUIe\x1c\x0e\x89T>\x9e\x1f\x11\xf6\x87x^P/,\xc4\x0e\x84\xa8q\ +\x058\xeb\xb0\xcel#\xe2y>~\x10\x12\x86=\xbc Dk\x1f%e\x8b\x8e\xb5%\x98\x14\ +\xe1*B\xdfG\xa9\x1eJ)\x00\xaa\xaa\xa2,K\xf2<\'I\x126\x9b\r\xeb\xd53\x16WgD\ +\xc3k\xbcrmB4<\xd8b\x88\x16G\xe0\x9c\xc5Z\xbb\x05QZ\xe3y>^\x10\xe2\xfbMT\x94\ +\xaa/0\x1b<e\x19\r\xc6\xf4\xfb}\xc20\xc4\xf7}\x84\x10Xk)\x8a\x82<\xcfI\xd3\ +\xb4\x86X\xafY,\x16,\x16\x0b\xe6\xf3s\x9e\xcf\xce8\xbay\x9b\xd7\x8f\xdfF\xc8\ +\x1a\x00Q\x039g1\xd5ND\x94T(\xad\xd1\xda\xaf\x81<\x1f)\x05\x9eH9\x18\x07\xbc\ +\xfa\xea/\x18\x8f\xc7\x8cF#\xa2(Bk\x8d\xb5\x96\xaa\xaa\xc8\xb2l\x0fb\xb9\\\ +\xd2\xef\xf7\xe9\xf5z\xf8\xbe\xcfl6\xe3\xc97\x0f\x89\x97\x0b\xdez\xf7}z\xd1\ +\xa0\x06A\x80s\x08\xb9\x03"\xa4BJ\x85\x92\x12\xa5\x14R\nB\x9ds\xe3\xfa\x88\ +\x1b7n0\x99L8::b<\x1e\xe3y\xde\x1e@\x1c\xc7\xa4iJ\xaf\xd7#\x0cC\x82 \xc0\xf7\ +}\xb4\xd6(U\xeb\xcc\x18\xc3\xd9\x0f\x8fH\xb3\x94\xd3{\xf7\x89\xa2a\x93\x08\ +\x16i\xe4\x0e\x88\x10\xb5\xa0\x9a\xfd\xf3D\xca\xcd\xc3\x03n\xdd\xba\xc5\xf1\ +\xf11\'\'\'L&\x13\xa4\x94\x94e\xc9f\xb3a\xb5Za\x8c!\x8a"\x00\xac\xb58\xe7\ +\x9a,\x03)e7\x85\x10H)\xb9\xb8x\xc6\xa3\xaf\xbf\xe4\xf4\xde\x03\x84\x90\x80\ +\xe8\x12N\x03\xf5\rp\xe0@\x98\r\x07\xe3\x80\xc9d\xc2\xf1\xf11w\xef\xde\xe5\ +\xf0\xf0\xb0[\xac,\xcbnZk1\xc6\xe0\x9cC)E\x10\x04\x08!\xd0Z\xe3y\x1e\x9e\xe7\ +u\xd1\t\x82\x800\x0c9?\x7f\xca\xb7\x8f\xbf\xe2\xf6\x9d\xbbM6\xeel\rM\x8aZ[\ +\xa2\xa4a8<b0\x1csrr\xc2\xe1\xe1a\xe7\'\xc6\x18\x96\xcb%\xab\xd5\x8a$I\xc8\ +\xb2\x0ccL\x07\xf1"\x80\xef\xfb\xddV\xb5"WJq5}\xca\xb5\xeb7\x19\x0c\x0ep\xbb\ +Y\x03\xd4>aR\x86\xfd\x11a\xafO^)\xbe\xf9~\xcd\x1bo\xd0A\xccf3\xe6\xf39I\x92P\ +\x14\x05B\x88FS\xb2\x13\xf0.\x8c\xe7y\x04A\xd0\x81\xb5)\xef\xdc\x19\xf3\xd9\ +\x19Q4\xc2Z\xb7\x0f\x82\xab\xc0\x96\x84\xe1\x04\xe5\x05\x94V1\xbd\\\xf2\xe9\ +\xdf\x1fr\xef\xbd\t\xaf\xf4\x05WWW\xc4q\x8c\xb5\x16)%\xce9\xa4\x94\xdd-ZM(\ +\xa5\xd0Z\xbf\x14\x95\xf6\x1ac\x0c\xe7\xd3\x19y\xbeA\xeb`\x07\xc4\x8119\x81\ +\xe7!\x95\xa62\x828)\xd8\x14\x0b\xd6\x9b)_|\xf1_^\x9f\x1c\xf0\xe1\xaf^\xc3\ +\xf7T\xe7\x94\xad\x08[\xfd\xb4\xef\x95R8\xe7\xb0\xd6vQ\xd9\xcd\xa0\xa2(\xd8l\ +6\xa4\x9b%\xfd\xd1\xf5\xfd\x88\xd8*G\xaa\x00P\xa4E\x85-cJ\x93\x91\xa4)\xf1z\ +\xcd\xc3\x8b)\x8f\xbf\xfd\x91?\xfd\xe1=\x8e\xae\x8f\xf6l\xbb\x8dF;vA\xdb\x88\ +\xb4p\xad\x03\xafV+\x96q\xb6\xaf\x11\x87\xc3T9RH\x8c\xb5$INn\x1c\xa5\x81,\ +\xcb\xc9\xb2\x94\xaa,\xb9z\xbe\xe0\xd3\xcf\xfe\xcdG\xbf{\x8f\x0fNo\xef\x14\ +\xc5-@\x1b\x95v\xb6\xd1RJa\xad%MS\xd6\xeb5\xe3\xf1\x98\xd5f\x8au/\x88\xb5\ +\xaar\x1cP\x14%\xa6\xcaH\xcb\x82\xca@YV\x94e\x81u\x8ev\xcd\x7f\xfd\xe7k\xbe\ +\x7f6\xe7\xcf\x1f\xdd%\x08\xbc=\x88\xdd\xed\xd1Zw\xd1\x91Rb\x8ca4\x1a1\x1c\ +\x0e\x19\x0c\x06x\xeab\xeb;m\xfa\xd6U\xb4\xa2\xc8\x0b\xd24%I\x12\xd24\xa3(rL\ +U5\xc5\xc9\xd1T-\x9e|\xf7\x8c\xbf\xfc\xf5s\x9e\x9e=\x7fI3\xbb \xad\x7f\xf4\ +\xfb}\xa2(\xea\xec\xbfvb\x1f\xf6@\x9c\xa0\xaaj\x93*\xca\x82"\xcf)\xf2\x8c"\ +\xcf(\x8bb\xc75\xa9/t\xdb(\xfe\xed\x1f\x0f\xc9\xf2r/"J\xa9\x0e\xa4\x15k\x18\ +\x86]\x19\xe8J\x81\xe7w]\xcdvk\x8c\xab\x01\x8a\x9c\xd2\n\xcaR`\xac\x00\x04Ri\ +\x94\x92\x8d\x9aD]\t\x9a\x1e\xe8\xc1\x87o\xd1\x0b\xfd\xbdH(\xa5\xf6\x8cM)\ +\x851\xa6s\xd9\xae\x0eI\x05\xd5\x9e\x8f\xd4MM\x9a\xa5\x04Y\x8a\x93\x02S\x08*\ ++@*\xb4\x90HaA\xaa\xba\xadi\xea\xd2\x9d7n\xf2\xdb\xdf\x9c\xbc\xa4\x8b\x17}Dk\ +\x8d1\x86,\xcb\xf6\xea\x8f\x90\xba\xd3H\x03"\x90\xca\'\xd9$\xf4z)\xd2\x93X\ +\xa3(\r(\xe5c\xa5\xc2\n\x89\x14\x02!\x14\x0e\xc7h0\xe2\x93\x8f\x7f\xdd\xddt\ +\x17\xe2E\x9b\xd7Z\x93\xe7y\xd7\xc3\x18c\xeai\xb7)\xdfm\x8d\xe7G\xc4\xabg\ +\x84\xbd\x88^_a\x8d\xc6U\x92\xca\t\x10\xb2\xae\x96B"\x84C\x08\xc1\'\x1f\x9f\ +\xd2\x8f\xc2\xbd\xedh!ZM\xb4 m\xc4\x8c1uB4\xcdTex1"\x10\xf6\x87,\xae\xce\x88\ +\xd7+\xa4\xd2 C\x9cUX\x07B(\xa4\xd4HipR\xf2\xfb\x0f\xde\xe1\xcd[\x87/\x01\ +\xb4\xe2l\xc5\xd8\xeb\xf5:}\x94eI\x96e$IB\x92$\xcc\x17kJ\xc3OD\xc4\x0b\x88\ +\x86\xd7X.\xceQZ\x13\x84\x16D\x80\x13`*\xd5\xec\xad\xe2\xb5\xd7&<\xf8\xf0\ +\x97]\xa1k\xe7\xeeV\xf8\xbeO\xaf\xd7C\xebZ\x03eYvn\xbaZ\xad\x88\xe3\x988)\ +\xb1\xaei\x8a\xb7>R\x8fW\xaeM(*\xcbb>\'M\xd6`r\xa4+\xc1\x16\x18S!\xa4\xe0\ +\x8f\xf7\xdf\xe9\x1a\xde\xdd\xdec\x17\xa2\xcd\x94\x16\xa2\xedc\xe7\xf39\x8b\ +\xc5\x82\x1f\xcf.\x88\x93jw\xe9-\x88\x10\x82hx\xc0\xd1\xcd\xdb\xccf\x97\xcc\ +\x9f_\x91g1\xd2\x15hi\x90\xae\xe4\xfe\x07o\x12\xfa\x8a\xaa38^\xf2\x8d\xd6M\ +\xdb,Y,\x16\xccf3...\x98\xcdf\xccf3\x9e/\x13*[\'Ik\x86\xbaI\x9an\xbc~\xfc6\ +\xf1r\xc1\xd9\x0f\x8f\x10Rp\xe8\xd7\xe2\xbbqs\xc4A\xa4X\xaf\xd7\xdd\xc2RJ<\ +\xcf\xdb\xcb\x84<\xcf\xbb\x962I\x12\x16\x8b\x05\x17\x17\x17\x9c\x9f\x9f3\x9d\ +Ny\xf2\xdd9\xab\xb8\xecZ\xd3\xb6ll\xfb\x91\x86HH\xc1[\xef\xbeO\x9a\xa5\\\xcd\ +\x9e\x11\x06!\xbd0\xc4W%\x97\x97\x97]\xa1k\x17o\xbby\xdf\xf7\xc9\xb2l/\x1a\ +\xab\xd5\x8a\xf9|\xcel6c:\x9d\xf2\xbf\xc7O\xb9Z\xa4\x8d\x0f\t\xb6\xe7\x9c\ +\x1d\x10\xd1|(\x10\xf4\xa2\x01\xa7\xf7\xee\xf3\xe8\xeb/\xb9\xbc|\x8a\xef{\ +\xf4B\x1f\x01\xdd\x7f\x9d\xa6)\xa3\xd1\xa8;\xebh\xad\x91Rv`\xad8\xdb\xady\ +\xf2\xdd9W\x8b\x14\xebjg\x16\r\xc8\x9e\xc5o\xb5+:\xda(\x1arz\xef\x01\xdf>\ +\xfe\x8a\xab\xe9S\x9c;\xeb\x9a\x9a$IX\xaf\xd7\x0c\x87\xc3\xae~\xb4 \xbb\xdf\ +\x89\xe3\x98\x1f\xcf.x\xbeLX\xc5es\x9ea\xebK;\xa3\xe9G\xb6\xd1\xd8\xbe\n\x84\ +\x90\xdc\xbes\x97k\xd7o2\x9f\x9dq>\x9duG\x89\xf1x\xcc`0\xa0\xd7\xeb\xbd\xd4\ +\x81\xe5y\xce|\xb1&NJ\xe2\xa4\xa2\xb2M\x04\xc4\xf6\xbe]c\xb5\xaf\x11\x87\xb3\ +\x0e\xe7,\xce\xd9\xba\xcdw\x96VM\x83\xc1\x01Q4"\xcf\xeb\xf6n\x19g\xac6S<uA\ +\x18\xfa\xf8\x9e_?=\x90\x1ace\xdd\xc7\x18\x1a\x9fh#\xdd\xc6~\xff\xb1\xc0\x9e\ +\xb3:W\x9f\xca\xad\xad\xcf\xa2B\x1a\xa4\x918\x01\xce\x1a\x9c\xb5X\xeb\xd0:\ +\xa0?\xba^\xbfwukP\xb9\xba\x93\xa3\xda\x1e\xae\xb6][\xb3\xe1Mv\x08\xb1\xf3\ +\x80\xc35\xdf\xb3\x9d(~\x1e\x0fj\xfe\x0f\t\\\xaa\xf77\xc3\x82f\x00\x00\x00\ +\x00IEND\xaeB`\x82' + +def get020Bitmap(): + return wxBitmapFromImage(get020Image()) + +def get020Image(): + stream = cStringIO.StringIO(get020Data()) + return wxImageFromStream(stream) + +index.append('020') +catalog['020'] = ImageClass() +catalog['020'].getData = get020Data +catalog['020'].getImage = get020Image +catalog['020'].getBitmap = get020Bitmap + + +#---------------------------------------------------------------------- +def get021Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xeeIDATx\x9c\xcd\x98Yo\x1b\xe7\x15\x86\x9fo\x99\x85\xc3E\x12\xedH\xb6\x93\ +\xb8vm\xc7\r\x1a\x18\x08|Q\xa0H.\xd2?\xdc?\xd0\xab\xfe\x80\x04(\x82\x04\x8d\ +\x12\xc7\x86c\x89\xa4)q\x9f\xf5[z1\x8bH9\xbd\x0f\x81\xe1\x88\xe4h\xe6\x99s\ +\xde\xf3\x9e\xf3\x8d\x00<\x7f\x80\x97\x06x\xf1\xf2k\xc20"\x08B\x94\xd6(\xa9\ +\x10R!\x84\xc0{\xcf\x01\xabow\xfe\xe6\x0b/\xf6~\x14\xfc\xeeK\x1c\xfe\xe9\x9b\ +w\xef=\xff\xfe\xd7?k\x900\x8c\x88\xe3\x840\x8a;\x18\xd9\x82\xe0\xc1{\xbc\x03\ +\xbc\xc1\xda\x02g\n\xac)0\xa6\xc0\x19\x831\x15\xc6z<\x12\xa9B\x820!\xee\x0f\ +\t\x82\xa8\xbe\xb0\x10{\x10\xa2\xc6\x15\xe0\x9d\xc7y{\x13\x91 \x08\t\xa3\x98\ +8\xee\x11D1Z\x87()[t\x9c\xab\xc0f\xe0*\xe20@\xeb\x1eJ)\x00\x8c1TUEQ\x14\xa4i\ +\xcan\xb7c\xb3\xbedyuA2\x1cs2>#\x19\x1e\xdd`\x88\x16G\xe0\xbd\xc39w\x03\xa2\ +\xb4&\x08B\x82(&\x0c\x9b\xa8(U\xff\x83\xdd\xa1\xa4e\xd8\x1f\x11\xc7gH\x15pr4\ +@J\x89s\x8e\xb2,)\x8a\x82,\xcbj\x88\xcd\x86\xe5r\xc9r\xb9d\xb1\x98p=\xbf\xe0\ +\xf4\xfe#>y\xf8\x1c!k\x00D\r\xe4\xbd\xc3\x9a\xbd\x88(\xa9PZ\xa3uX\x03\x05!R\ +\n\x02\x911:\n\x19\x8dN\x89{}T\x10a\x9c\xe0\xec\xee\t\xe3\xe3\x04c\x0cy\x9e\ +\x1f@\xacV+\xfa\xfd>\xbd^\x8f0\x0c\x99\xcf\xe7\xbc\xfa\xefwlWK\x9e~\xfe%\xbd\ +dP\x83 \xc0{\x84\xdc\x03\x11R!\xa5BI\x89R\n)\x05\xb1.8\xbd3\xe4\xe4\xe4\x0e\ +\xc9\xe0\x08\x1d$TN\xb1MKr\x17\xf1\xe9\xa7\x9f\x92e\x19\xdb\xed\x96,\xcb\xe8\ +\xf5z\xc4qL\x14E\x84a\x88\xd6\x1a\xa5j\x9dYk\xb9\xf8\xed\x9c,\xcfx\xf1\xf2+\ +\x92d\xd8\x14\x82CZ\xb9\x07"D-\xa8&\x7f\x81\xc88\x1d\x0f9=\xbd\xcf\xe8\xf8\ +\x0eq\xff\x04\xa1\x13v\x99aW.y\xf3\xee\x9a\x7f\xfc\xbd\x8f\xb5\x96$I\x00p\ +\xce\xe1\xbdo\xaa\x0c\xa4\x94\xdd&\x84@J\xc9lv\xc9\xf9\x0f\xdf\xf2\xe2\xe5\ +\xd7\x08!\x01\xd1\x15\x9c\x06\xea\x13\xe0\xc1\x83\xb0;FG!\'\xe3;\x0c\x8f\xee\ +p4~@\xdc\x1fc\xbcf\x95\xce\xd8\xec\n\xd2,\xe3\x87\xf3w<\xf8\xa8\x86\xf1\xde\ +\xa3\x94"\x8a"\x84\x10h\xad\t\x82\x80 \x08\xba\xe8DQD\x1c\xc7L&oy\xfd\xcb\ +\xf7<z\xf2ES\x8d{\xa9\xa1)Q\xe7*\x94\xb4\x8cF\xa7$\x83#z\x83\x13\xe2\xfe\x98\ +\xb07b\xfa\xee\x92\xcb\xcb\tWWs\xb6\x9b\r\xff\xf9\xf15\xe3\xe1\x13\xac\xb5\ +\x1d\xc4m\x800\x0c\xbbT\xc5qL\x18\xd6Ep5}\xcb\xf8\xee}\x06\x83#\xfc~\xd5\x00\ +\xb5O\xd8\xac\xae\x8e^\x1f\x1d$\x08\x9d`\xbcf\xfa\xee\x92\xd7\xbf\xbe\xe1\ +\xfd\xfb\x19\x9b\xcd\x9a<\xcf\xf8\xf1\xa7\xdf\xf8\xe6oO\x1bMI\xb4\xd68\xe7\ +\x0e`\x82 \x8a\xa2\x0e\xac-y\xef/X\xcc/H\x92\x11\xce\xf9C\x10\xbc\xa9}">C\ +\x05\x11\x95S\xec2\xc3*\x9dqy9\xe1\xfd\xfb\x19\xeb\xf5\x8a,K\xb1\xb6\x0e\xe7\ +\xcfo\xde\xf3\xf4O\x1fu\xa7h5\xa1\x94Bk\xfdAT\xa4\x94x\xef\xb1\xd62\x99\xce)\ +\x8a\x1dZG{ \x1e\xac-\x88\x82\x00\xa94\xc6\n\xb6i\xc9\xae\\\xb2\xd9\x15\\]\ +\xcd\xd9l\xd6dY\xda\x88\xb2\xb6\xf8\x9f\xdf\xbc\xe7\xf9\x9f\xefubmE\xa9\x94\ +\xc2{\x8fs\xae\x8b\xca~\x05\x95e\xc9n\xb7#\xdb\xad\xe8\x8f\xee\x1eF\xc4\x99\ +\x02\xa9"@\x91\x95\x06Wm\xa9lN\x9ael7\x1b\xf2<k\x84\xd9\x90#8\xffu\x06\xdf\ +\xdcD\xa3\xb3\xf1\xc6\xd2\x85\x10]DZ\xb8\xd6\x81\xd7\xeb5\xabm~\xa8\x11\x8f\ +\xc7\x9a\x02)$\xd69\xd2\xb4\xa0\xb0\x9e\xcaB\x9e\x17\xe4y\x86\xa9*\xdac\xdb\ +\x0efL\xc1\xf9\xeb\x19\xcf\x1e\x9dv\x17n\xa3\xd2nm\xb4\x94R8\xe7\xc8\xb2\x8c\ +\xcdf\xc3\xf1\xf11\xeb\xdd\x14\xe7o\x89\xd5\x98\x02\x0f\x94e\x8559YUb,T\x95\ +\xa1\xaaJ\x9c\xf7M48\xe8\xa4\xe7\xaf\xa7<{t\xdaA\xec\xa7Gk\xddEGJ\x89\xb5\ +\x96\xd1h\xc4p8d0\x18\x10\xa8\xd9\x8d\xef\xb4\xe5[wQCY\x94dYF\x9a\xa6dYNY\ +\x16Xc\x9a\xe6\xe4A\x1c\xb6\xf9\x9f^\xcd\x0eRq[\xb0\xad\x7f\xf4\xfb}\x92$\ +\xe9\xec\xbfv\xe2\x90\xf6\xee\x1a\xb1\n\x8c\xa9\xa8\xaa\x8a\xb2*)\x9d\xa4,\ +\xc1\xbaZ\xe5\xb5\xeb\xd6N(\xda\xd44<\x0f?\x1e\xb3\xdaf\x1c\x0f\x93."J\xa9\ +\x0e$\x08\x82.-\xc6\x18\xe28\xbei\x05AHU\x17\xe0^j\xac\xa7,\n\xca\xb2\xa0r\ +\x82\xaa\x12X\'\x00\x81T\x1a\xa5$\xe0\xd1A\xc4g\x8f\xef\xf1\xec\xf1\x19\x0f\ +\x1f\x8c\x89\xa3\xe0\x83H(\xa5\x0e\x8cM)\x85\xb5\xb6s\xd9\xae\x0fI\x05\xe6\ +\xc0G\xea\xa1&\xcb3\xa2<\xc3K\x81-\x05\xc6\t\x90\x8a8\x88\xf9\xec\xc9\xc7\ +\xfc\xe5\xc9}>{|\xaf\xeb\x1f\xffO\x17\xb7}Dk\x8d\xb5\x96<\xcf\x0f\xfa\x8f\ +\x90\xba\xd3\x88n\xd5\'UH\xbaK\xe9\xf52d \x81\x88\x07\xf7\xc6<{\xfc\t\x7f}\ +\xfe\xb0k\xeb\xfb%\xda\x02\xb4\xe9h!n\xdb\xbc\xd6\x9a\xa2(\x10B\xe0\x9c\xc3Z\ +[o\xee\xa6\xe4\xbb\xd4\x04a\xc2n}I\x7f0\xe0\xech\xc4\xc3O\xcf8>>\xe6\xe4$\ +\xa1,\xcb.\xd7\xad1\xed\x97h\xfb}\x0b\xd1\n\xb4\x05i\x8f\xb7\xd6\xd6\x05\xd1\ +\x0cS\xc6r;"\x10\xf7\x87,\xaf.\xd8n\xd6\x0c\x07}\xae\xaf\xaf\x91Rvw\x16\x04\ +\x01Z\xeb\x836\x7f\x1b\xa0\x15g+\xc6^\xaf\xd7\xe9\xa3\xaa*\xf2<\'MS\xd24e\ +\xb1\xdctB=\x8cH\x10\x91\x0c\xc7,\x16\x93N`\xb7A\xc20<\xb0\xf2Vx-@\x1b\x810\ +\x0c\xe9\xf5z\x1dxUU\x9d\x9b\xae\xd7k\xb6\xdb-\xdb\xb4\xc2\xf9f(\xde\x07\x01\ +8\x19\x9fq=\xbf`>\x9fw\x17k-\xbam\\\xed\x05[\x9d\xfc\x1eD{#-D;\xc7.\x16\x0b\ +\x96\xcb%\xef.flSs\xe0G\x1d\x88\x10\x82dx\xc4\xe9\xfdG\xbc\xfa\xefwXk\xbb\ +\x0b\xb5\x00-P\x14E\xdd\xf4}\xdb7Z7m\xd3\xb1\xd9l\x98\xcf\xe7\xccf3\xe6\xf39\ +\xf3\xf9\x9c\xebU\x8aqu\x91\x88\xfd\tm\xdf\xb2?y\xf8\x9c\xedj\xc9\xc5o\xe7H)\ +?\x10\xde\xbe.\xda\xd4\xedWBQ\x14H)\xbbt,\x97Kf\xb3\x19\x93\xc9\x84\xe9t\xca\ +\xab7\x13\xd6\xdb\xaa\x1bM\xdb\xb6q\x90\x1a\x10\x08)x\xfa\xf9\x97dy\xc6lvy0Y\ +\xb5\xa5\xda\xb6xkm\xe7\x98a\x18\x92\xe7y\x17\x8d<\xcfY\xaf\xd7,\x16\x0b\xe6\ +\xf39\xd3\xe9\x94\x9f~y\xcb\xd52\xab\xdb\x84\x10\xbf\x13\x11\x9a%\x8f\xa8\ +\xf7\xbdd\xc0\x8b\x97_q\xfe\xc3\xb7L&o\xf7&+\xdf\xddu\x96e\x8cF#\xfa\xfd>q\ +\x1c\xa3\xb5\xee\xd6:\xc6\x98N\x9c\xcb\xe5\xb2^R\xbc\x99p\xb5\xccp^ hG\x05\ +\xd1-\\u\x9b\x19\xdf\xe6\xa8\xa1M\x92!/^~\xcd\xeb_\xbe\xe7j\xfa\x16\xef/\xba\ +\xa1&MS6\x9b\r\xc3\xe1\xb0[F\xb4 \xfb\xc7l\xb7[\xde]\xcc\xb8^\xa5\xac\xb7U\ +\xb3\x9e\x01\x84l\xa6\xf8[b\xf5{\xd1\xb8\xd9\x0b\x84\x90<z\xf2\x05\xe3\xbb\ +\xf7Y\xcc/\x98L\xe7\xecv;\xd6\xeb5\xc7\xc7\xc7\x0c\x06\x03z\xbd\xde\x07\x13X\ +Q\x14,\x96\x1b\xb6i\xc565\x18\xd7D@\xdc\x9c\xb7[\x0f\x1fj\xc4\xe3\x9d\xc7{\ +\x87\xf7\xae\x1e\xf3\xbd\xa3U\xd3`pD\x92\x8c(\x8az\xbc[ms\xd6\xbb)\x81\x9a\ +\x11\xc7!a\x10\xd6O\x0f\xa4\xc6:Y\xcf1\x96\xc6\'\xdaH\xb7\xb1?|,p\xe0\xac\ +\xde\xd7\xabr\xe7\xea\xb5\xa8\x90\x16i%^\x80w\x16\xef\x1c\xcey\xb4\x8e\xe8\ +\x8f\xee\xd6\x9f}\xbd\xa02\xbe\x9e\xe407\x8b+\xdfMPM\xc2\x9b\xea\x10b\xef\ +\x01\x87o\x8es\x9d(\xfe\x18\x0fj\xfe\x07\x1e\x08y"\xf0|\xe7<\x00\x00\x00\x00\ +IEND\xaeB`\x82' + +def get021Bitmap(): + return wxBitmapFromImage(get021Image()) + +def get021Image(): + stream = cStringIO.StringIO(get021Data()) + return wxImageFromStream(stream) + +index.append('021') +catalog['021'] = ImageClass() +catalog['021'].getData = get021Data +catalog['021'].getImage = get021Image +catalog['021'].getBitmap = get021Bitmap + + +#---------------------------------------------------------------------- +def get022Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xedIDATx\x9c\xcd\x98\xdbr\xdbF\x16EW7\x80&\x00^D\xd1\x8e\x14\xcbN\xca5v\xa2\ +\xa4\xc6QU\xca\x0f\xf3\x92|\xf3\xfc\xc0<\xcd\x07$/\x99T%\x1e_4\x8e%\x92\xa2L\ +\xf0\x86{w\xcf\x03\xd8\x10(\xe7\x03\xc2*\x08\x12\x05\x12\x0b\xfb\x9c\xbd\xfb\ +\x00\x02\xb0\xfc\x05^>\xc0\xc5\xcb\x1fQ\xaaG\x10(<\xdf\xc7\x93\x1eBz\x08!\ +\xb0\xd6r\xc0j\xdd\xce\xde\xbdaE\xe7\x9f\x82?}\x89\xc3_\xed\xfe\xa7\xb5\x96\ +\x7f\xff\xeb\x9f\r\x88R=\xc20F\xf5\xc2\x16F:\x10,X\x8b5\x80\xad\xd1\xba\xc0\ +\xd4\x05\xba.\xa8\xeb\x02S\xd7\xd4uE\xad-\x16\x89\xf4\x14\x81\x8a\t\xfbC\x82\ +\xa0\xd7\x9cX\x88\x0e\x84hp\x05Xc1V\xdf)\x12\x04\n\xd5\x0b\t\xc3\x88\xa0\x17\ +\xe2\xfb\nOJ\x87\x8e1\x15\xe8\x0cLE/\x08\x90^\x0f)$\x16\xa8\xeb\x9a\xaa\xaa(\ +\x8a\x82<\xcbH\xd3\x94\xdd\xfa\x9a\xe4\xf6\x8ax8\xe1xrJ<<\xba\xc3\x10\x0eG`\ +\xad\xc1\x18s\x07\xe2\xf9>A\xa0\x08z!J\xedU\xf1\xbc\xe6\x03z\x87\'5\xc3\xfe\ +\x880<Ez\x01 \xd1\xc6P\x96\x15eQRV%eY\x10F\x19Q\x9c1\x1c\x0eY\xafW,\x97S>.\ +\xae8y\xf4\x94\'_\x9e#d\x03\x80h\x80\xac5\xe8\xba\xa3\x88\'=<\xdf\xc7\xf7U\ +\x03\x14(\xa4\x14\x04"ct\xa4\x18\x8dN\x08\xa3>^\xd0\xa36\x82\xac\xa8I\xd3\ +\x02]\xe7\x94d\x94FR[\x81\x95\x02\x19H\x9e|6a\xb9\x8cQJ\xb1X,x\xf3\xdb\xcflW\ +\t\xcf\xbf\xfd\x9e(\x1e4 \x08\xb0\x16!; BzH\xe9\xe1I\x89\xe7yH)\x08\xfd\x82\ +\x93\x07C\x8e\x8f\x1f\x10\x0f\x8e\xf0\x83\x98\xcaxl\xd3\x12]l)\xb4%\xabJ\xd2\ +RP\x96PU\x02]\n\x8e\x8f\xc6\x9c\x9e\x8e\x08\x82\x00\xcfk\xfaLk\xcd\xd5\x1f\ +\xaf\xc8\xf2\x8c\x8b\x97?\x10\xc7\xc3\xbd\x11\x0cR\xcb\x0e\x88\x10MC\xed\xeb\ +\x17\x88\x8c\x93\xc9\x90\x93\x93G\x8c\xc6\x0f\x08\xfb\xc7\x08?f\x97\xd5\xec\ +\xca\x84\xda\xe4T\x1a\xea\x1a\xb4\x91\xcd\xa6\x05\xb5\x11<9;e<\xee!\xa5l7!\ +\x04RJ\xe6\xf3k^\xfd\xfa\x13\x17/\x7fD\x08\t\x88\xd6p>\x80\xb5v\xef\x0e\x10z\ +\xc7\xe8Hq<y\xc0\xf0\xe8\x01G\x933\xc2\xfe\x84\xda\xfa\xac\xd29\x9b]A\x9ae\ +\xe4yAU\xd7\x18\xa3\x1b\x8b\x0b\x01\xd2\xe3\xfc\xf9\x17\x18]\x11\x04\x01A\ +\x10\xa0\x94\xc2\xf7}z\xbd\x1ea\x182\x9d\xbe\xe7\xdd\xeb_x\xfa\xec\xc5\xde\ +\x8d\x9d\xd2\xb0\xb7\xa81\x15\x9e\xd4\x8cF\'\xc4\x83#\xa2\xc11a\x7f\x82\x8aF\ +\xcc>\\s}=\xe5\xf6v\xc1v\xb3!\xcf3\xaa\xaa\xc4h\xdd\\\xb1\xe7\xf3\xc5\xe9C&\ +\xc7G\x94e\x89R\n\xa5\x14\xbd^\x0f\xa5\x14a\x18\xa2Tc\x82\xdb\xd9{&\x0f\x1f1\ +\x18\x1ca\xbb\xae\x01\x9a\x9c\xd0Y\xe3\x8e\xa8\x8f\x1f\xc4\x08?\xa6\xb6>\xb3\ +\x0f\xd7\xbc{{\xc9\xcd\xcd\x9c\xcdfM\x9eg\xd4U\x85\xb1\xb6\t&!\xf1<\xc97\xcf\ +\x1f\x13EQ\xabF\x10\x04\xf4z\xbdV\x99\xc6\x89`\xed\x15\xcb\xc5\x15q<\xc2\x18\ +{\x08\x82\xad\xc1T\x84\xe1)^\xd0\xa32\x1e\xbb\xacf\x95\xce\xb9\xbe\x9ers3g\ +\xbd^\x91e)Z\xeb\xfd\x17\xba\xb0j\x02\xe7\x9b\xe7g\xed\t}\xdf\xffD\x15)%\xd6\ +Z\xb4\xd6Lg\x0b\x8ab\x87\xef\xf7: \x16\xb4.\xf6a\xe5Sk\xc16-\xd9\x95\t\x9b]\ +\xc1\xed\xed\x82\xcdfM\x96\xa5\x18c\xb0\xb6\x13\xf1B"\xb0L&\xc7\x8cG}\x00<\ +\xcf\xc3Z\x8b1\xa6U\xa5\xeb\xa0\xb2,\xd9\xedvd\xbb\x15\xfd\xd1\xc3CEL]\x10\ +\x04\x11q\x14\x81\xf4X\xad\xb7T:\'\xcd\xb2\xb6\'\xb4\xd6X\xbb\'Gt\xd6\x0f\ +\xc1\xc5\xf9\x13\xa4\x94\x07\x91.\x84h\x15qpEQ\x90\xa6)\xeb\xf5\x9a\xd56?\ +\xec\x11\x8bE\xd7\x05\x9e\xe7\x11\x85\x8a\xf3g\x9f3\x9e|\xc6mR\xf0\x9f\xdf\ +\xff\xe0\xe6fN]U\xb8c?Y\xd8\x04|\xf5\xb7\x936\x06\xba\xd6\x050\xc6\xe0y\x1e\ +\xc6\x18\xb2,c\xb3\xd90\x1e\x8fY\xeff\x18{\xafY\xeb\xbah?T\xd75\xbe\xb4|\xf1\ +\xf9\x80\xc7\'_\xf3\x8f\x8b3^\xff\xef\x86W\xef\xe6\xbc\xbd\x9c~\xc2\xf1`2f<\ +\x8c\x0f@\\\x9f8u\xa4\x94h\xad\x19\x8dF\x0c\x87C\x06\x83\x01\x817\xdf\xaf\ +\xee\x1d\xfb6\xabhMY\x96\xe4y\xcev\xbb%\x8ec\xb4\xd6x\x12\xbe}\xf69\x7f\xff\ +\xea\x8c\xaa6\xfc\xf7\xf2\x86\xdf\xdfNys9\x05\x0b\xdf\x9d?nK\xe1\x94p \x0e&\ +\x08\x02\x8c1\xf4\xfb}\xa2("\x8a"\xc2PQ\x1f\x80XA]W\xed*\x9ae\x19Y\x96\xed\ +\x9da\xf7\xb1\xdf\xc8\x1c\xf6\x02^|}\xc6\x8b\xaf\xcf(\x8a\x8aW\x977|\xf9x\ +\xd2\xaa!\x84\xc0\xf3\xbc\x16\xc4E\xbdS:\x0cC\xc20l\x9c\x14(\xaa\xc6\x80\x9d\ +\xd2h\xdbB\xecv;\xa2(Bk\xdd\xa6\xa2\xef\xfbm\xe9Z\xa8P\xf1\xdd\xf9\xe3O\x94\ +\xf0<\xef Y=\xcfCk\xdd\xa6\xac\xef\xfb\x8d\x8b\xa4\x07\xf5\xbd\xd2Xd3K\xecvl\ +6\x1b\xc20\xc4Z\xdbB8\x80\xae#\xba[\xb7\x1c\xf7s\xc4\xf7}\xb4\xd6\xe4y~\xb0\ +\xfe\x08\xe9\xdf\xef\x11\x81\xf4T\x0b\xb1Z\xad\xe8\xf5zXk\xdb\xfa\xfa\xbe\ +\x7f\xe0\x84.\x80+\x87\x83\xe8\xaa\xe1@\x8a\xa2@\x08\x811\x06\xadu\xb3\x19\ +\xd96|[\x9a@\xc5l\xd6\xd7$IB\xbf\xdfG)\xd5\x1c\xb0\xaf\xb3\xab\xb5\x0b\xa6\ +\xaeE\xdd\xfb\x0e\xc2-p\x0e\xc4\x1d\xaf\xb5n\rQ\x14\x05\xb5\xe6\xbe"\x10\xf6\ +\x87$\xb7W$IB\x14E\xad\x02\xee\xca\x9c*\xee\x83\x7f\x06\xe0\xa0]3FQ\xd4\xf6G\ +UU\xe4yN\x9a\xa6\xa4i\xca2\xd9\xb4\x8dz\xa8H\xd0#\x1eNX.\xa7m\x83\xdd\x07QJa\ +\x8ci\xaf\xd05\x9e\x03p\n(\xa5\xda\x8b\xb1\xd6RUU\x9b\xa6\xeb\xf5\x9a\xedv\ +\xcb6\xad0v?\x14wA\x00\x8e\'\xa7|\\\\\xb1X,\xda\x93\xb9\x88v\x0b\x97;\xa1\ +\xeb\x93?\x83p\x17\xe2 6\x9b\rI\x92\xb0\\.I\x92\x84\x0fWs\xb6i\xdd=\xf5\x1d\ +\x88\x10\x82xx\xc4\xc9\xa3\xa7\xbc\xf9\xedg\xf4~\xcep\xdd\xefj\xef67}\xdf\ +\xcf\r\x17`\xae\x1c\x9b\xcd\x86\xc5b\xc1|>g\xb1X\xb0X,\xf8\xb8J\xa9Mc\x12\ +\xd1\x9d\xd0\xba\x91\xfd\xe4\xcbs\xb6\xab\x84\xab?^!\xa5\xfc\xa4\xf1\xba}\ +\xe1J\xd7uBQ\x14H)\xdbr$I\xc2|>g:\x9d2\x9b\xcdxs9e\xbd\xad\xda\xd1t\xdfr\x87\ +\xa5\x01\x81\x90\x82\xe7\xdf~O\x96g\xcc\xe7\xd7\x07\x93\x95\xb3\xaa[\xe2\xb5\ +\xd6mb*\xa5\xc8\xf3\xbcU#\xcfs\xd6\xeb5\xcb\xe5\x92\xc5b\xc1l6\xe3\xf7\xd7\ +\xef\xb9M\xb2f\xac\xdc\xcf1\x87\x8a\xb0\xbf\xe5\x11\xcd>\x8a\x07\\\xbc\xfc\ +\x81W\xbf\xfe\xc4t\xfa\xbe3Y\xd9\xf6\xaa\xb3,c4\x1a\xd1\xef\xf7\t\xc3\xb0u\ +\x99\x03s\xcd\x99$IsKq9\xe56\xc90V \xb8\x1b\xa8\xdc\x8d\xab\xef*c]\x8d\xf6\ +\xb4q<\xe4\xe2\xe5\x8f\xbc{\xfd\x0b\xb7\xb3\xf7X{\xd5\x0e5i\x9a\xb2\xd9l\x18\ +\x0e\x87\xfb\xc5\xeb\x0e\xa4{\xccv\xbb\xe5\xc3\xd5\x9c\x8f\xab\x94\xf5\xb6\ +\xda\xdf\xcf\xd0\x0cS\xe2.\xccZ\x10\xdbQ\xe3n/\x10B\xf2\xf4\xd9\x0b&\x0f\x1f\ +\xb1\\\\1\x9d-\xd8\xedv\xac\xd7k\xc6\xe31\x83\xc1\x80(\x8a>\x99\xc0\x8a\xa2`\ +\x99l\xd8\xa6\x15\xdb\xb4\xa66{\x05\xc4\xdd\xf7\xb6\xf7\xc3\x87=b\xb1\xc6b\ +\xad\xc1Z\xd3\x8c\xf9\xd6\xe0\xbai08"\x8eG\x14E3\xde\xad\xb69\xeb\xdd\x8c\ +\xc0\x9b\x13\x86\n\x15\xa8\xe6\xe9\x81\xf4\xd1FRk\xa84\xfb\x9cpJ;\xed\x0f\ +\x1f\x0b\x1c$\xab\xb5\xcd]\xb91\xcd\xbd\xa8\x90\x1a\xa9%V\x805\x1ak\x0c\xc6X\ +|\xbfG\x7f\xf4\xb0\xf9\xdb\x1a\xac\xb5\xd4\xd66\tY\xdb\xf6K\xdd\xbe-\xb8p\ +\x83v\xe7\x01\x87\xdd\x1fg\xda\xa6\xf8k<\xa8\xf9?\xa2\xcax\xb9\xd2zv\x8b\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def get022Bitmap(): + return wxBitmapFromImage(get022Image()) + +def get022Image(): + stream = cStringIO.StringIO(get022Data()) + return wxImageFromStream(stream) + +index.append('022') +catalog['022'] = ImageClass() +catalog['022'].getData = get022Data +catalog['022'].getImage = get022Image +catalog['022'].getBitmap = get022Bitmap + + +#---------------------------------------------------------------------- +def get023Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +HIDATx\x9c\xcd\x98\xdbn\x1b\xd7\x15\x86\xbf\xbd\xf7\x1cy\x12-Kf\x9c\xc4\xaa\ +\xe1\xb8qS\xa8nR\x15\x01\x82\xc6E\x81\xa0@\n\xe4\xaa}\xba\xbe@/z\xd3\x9b^\ +\x16\x08P\xa0g4A\x81 @b\xc4I\xeaD\x96\xe4\x919\x1c\x923\x1c\xce>\xf4b\xb8G\ +\xa4\xeb\x07\x08\x81\xd1H\xe2&\xe7\x9b\xb5\xfe\xf5\xaf\xb5G\x00\x8e\xef\xc0+\ +\x00\xb8\x7f\xf2\x80(\x8a\t\xc3\x08\x15\x04(\xa9\x10R!\x84\xc09\xc7\x0e\xab\ +\xf3\'w\xf5\x0f\'\xb6\xde\x14\xbc\xf0%v\x7fu\x9b\x9f\xce9\xfe\xfc\xa7?\xb4 Q\ +\x14\x93$=\xa28\xe9`\xa4\x07\xc1\x81s8\x0b8\x8d15V\xd7\x18]\xa3u\x8d\xd5\x1a\ +\xad\x1b\xb4q8$RE\x84Q\x8f\xa4?$\x0c\xe3\xf6\xc2BlA\x88\x16W\x80\xb3\x0e\xeb\ +\xccUD\xc20"\x8a\x13\x92$%\x8c\x13\x82 BI\xe9\xd1\xb1\xb6\x01S\x81m\x88\xc3\ +\x10\xa9b\xa4\x908@kM\xd34\xd4u\xcd\xaa\xaa(\xcb\x92E\xf1\x84\xfc\xf2\x94\ +\xdep\x9fk\xfb\x13z\xc3\xbd+\x0c\xe1q\x04\xceY\xac\xb5W *\x08\x08\xc3\x880N\ +\x88\xa2MT\x94j?`\x96(i\x18\xf6G$\xc9\x04\xa9B@b\xace\xbdnX\xd7k\xd6\xcd\x9a\ +\xf5\xba&I+\xd2^E\x92\xf6X\xcc\x0bf\xf9\x19\xcf\xb2Sn\xdc\xbc\xcd\xabG\xf7\ +\x10\xb2\x05@\xb4@\xceY\x8c\xde\x8a\x88\x92\n\x15\x04\x04A\xd4\x02\x85\x11R\ +\nBQ1\xda\x8b\x19\x8dn\x90\xa4}T\x18\xa3\xad\xa0\xaa5eYc\xf4\x8a5\x15k+\xd1N\ +\xe0\xa4@\x86\x92\xb4\xaf\x90*@\x05\x01\xf9t\xca\xa3\xcf>f1\xcb\xb9\xfb\xc6[\ +\xa4\xbdA\x0b\x82\x00\xe7\x10r\x0bDH\x85\x94\n%%J)\xa4\x14$A\xcdK\x07#&\x93\ +\t*\xea\xa3\x82\x94\xc6*\x16\xe5\x1aS/\xa8\x8d\xa3j\xd6\x94k\xc1z\rM#0k\x811\ +\x12g\x02\x90\tqb\x19\xed9\x8c1\x9c~\xf3\x90jUq\xff\xe4]z\xbd\xe1\xa6\x10,\ +\xd2\xc8-\x10!ZAm\xf2\x17\x8a\x8a\x9b\x87{\xdc\xbau\x8b\xa3\xa3#\xae\x1d\xbc\ +\xc4\xa3o\n\x96\x95f\xb9\xce\xd1vEc@k0V\xb6\x87\x11h+h\x8c\xc0i\x89\xb3\nDL\ +\x9c\xc0\xb5}\x81\x90\x82\xcb\xec\t\x0f?\xfd\x88\xfb\'\x0f\x10B\x02\xa2+\xb8\ +\x00\xc09\xb7\xa9\x0e\x10f\xc9\xde8f2\x99ptt\xc4\xf1\xf11\x87\x87\x87\x8c\ +\x0f+>\xfc\xcb\x7f\x98/k\xca\xaab\xb5\xaai\xb4\xc6Z\xd3\x96\xb8\x10 \x15JEh\ +\'\xb0\x9b\xaa\x96J\x90\xf4$\x87QH\x12\'<}\xfa\x98\xaf\xbe\xf8\x84\xdb\xaf\ +\x1do\xaaq+5lJ\xd4\xda\x86PY\xae_\x7f\x99\xc9d\xc2\x9d;w8<<D\x08\xc1\xed\x97\ +R\x9a\xba\xe6\xf22c1\x9f\xb3ZU4\xcd\x1ak\x0cB\x08\xa4\n\x08\x84\xc4J\x05B"\ +\x84\xc2h\x05V!eH\x1c\xc7$qB\x14\x85\\\x9e?f\xff\xe0&\x83\xc1\x1en\xbbj\x80\ +\xd6\'L\xc5h0f<\x1es\xe3\xc6\r&\x93\t>b\xc6\x18\xde>\x9e\xf0\x8f\x7f\xfe\x8b\ +\xd5\xaaB7\r\xd6\xb9\xd6\x98\x84D)\x89\x14\x16+$BH\xa4\x0c\x90RbL\x00\xaea\ +\xffz\x8fA\xea\xb88\x8fp\xee\x94ivJ\xaf7\xc2Z\xb7\x0b\x82\xd3\x08\xa7\xe9\ +\xf7\xfb\x8cF#\xc6\xe31RJ\xac\xb5\x18c\xc8\xb2\x8c@j~\xfa\xa3#>\xfc\xeb\'\ +\x1b@oV\x1b\xc3\x91\n)Z0)\rR*")x\xf3\x07/\xf3\xca\x8d\x1eO\x9f>E\x00\xc6\x18\ +\xce\xce3\xeazI\x10\xc4[ \x0e\x8c\xa9I\xa2\x88$I\xe8\xf5z\x84aH\xd344M\xc3l6\ +c:\x9d\xb2X,x\xf3\x87\xb7\xf8\xf2q\xc6\xa3\xff>\xd9x\x94\xa4\xf5\xdf\xd63\ +\x85P\x08\xe1pRrpp\x9d_\xbe{\x8f\xf10a>\x9f#\x84\xc0\x18\xc3z\xbdf\xb9\\R-g\ +\xf4G\x07\xbb\x11\xb1\xbaF\xa9\x94(\x8a\x08\x82\x00\xad5\xcb\xe5\x92\xa6i(\ +\x8a\x82\xb2,\xb1\xd6"\x84\xe0W\xbf8\xe6\xb7\xbf\x9b\xa2u\xbde\xdc\xado;\x1c\ +B\x08N\x8e_\xe3\xc1\xdb\xdf\'\n\x15Zk\x94R8\xe7\xa8\xeb\x9a\xb2,)\x8a\x82\ +\xd9b\xb5\xab\x11\x87\xc3\xe8\x1a\xa5\xda\xfeb\xade\xb5ZQ\x14\x05M\xd3P\x96%\ +\xeb\xf5\x1a)\xdb\x9aO\x93\x88_\xbf\xff\x16\xbf\xff\xe3\xdf=G\xd7\xef\xa20\ +\xe5\x83\xf7\xee\xf3\xc6\xdd\x97\xbb\xf5\xd6Z\x94RXk\xa9\xaa\x8a\xf9|\xcex<\ +\xa6X\x9ec\xddsb\xf5wg\xadEkMUU\x18c:(\xdf\x89}\x03\xfb\xde+\xd7y\xe7\xe4u\ +\xfe\xf6\xef\xcf;\x98Wo\x1e\xf2\xc1{?f\x7f<@)E\x10\x04\xdd\xfaV\xb8\x86\xd1h\ +\xc4p8d0\x18\x10\xaa\x8bMw\xdf*\xdf\xb6\x8bj\xd6\xeb5\xab\xd5\x8a\xc5bA\xaf\ +\xd7\xc3\x18\x831f\xe3\xb8\xb2\xbbK\xe7\x1c?;\xb9\xcb\xe7_^p\xf9,\xe7\x9d\ +\x93{\xfc\xfc\xed\xd7\xbb5\x1e\xc4\xc3\x84a\x88\xb5\x96~\xbfO\x9a\xa6\xa4iJ\ +\x92D\xe8\x1d\x10\'\xd0\xba\xe9\xbahUUTU\xd5]\xd0C\xbc\xe8\xf5\x9b\xf7\x7fB1\ +\xaf8z\xe5z\xe7\xd0J\xa9\x0e$\x0c\xc3.-Zk\x92$!I\x12\xe28&\n#\x9a\xd6\xcf\ +\xb6Rc\\\x07\xb1\\.I\xd3\x14c\x0cA\x10\x10\xc71A\x10t\xa9\xf3PB\x08\xf6\x86)\ +\xe3Qo\'\x12J)\xc20$\x0cC\xa2\xa8\xed\xe4\xc6\x98\xae\x10\x82 h\xf5(\x15\xe8\ +\xe7R\xe3\x90\x94e\xc9r\xb9d>\x9f\x93$\t\xce\xb9\x0e\xc2\x03\xf8\x9c\xfb\xbb\ +\xf7\xc7v:\xfc9\x8a\xa2\xee\xe2\xc6\x18V\xabU\x07,\x84@\xc8\xe0y\x8d\x08\xa4\ +\x8a:\x88\xd9lF\x1c\xc7\x9d8\xc30$\x08\x82\x1d\x8dl\x03\xf8tx\x88\xedhx\x90\ +\xba\xae\xbb\x8a\xf4\xba3\xf6*\xdd]j\xc2\xa8\xc7\xbcxB\x9e\xe7\xf4\xfb}\xa2(\ +j\x17l\xf2\xecs\xedK\xdcCm\xa7\xc3C\xc4qL\x92$\x1d\x88_o\x8c\xe9\n\xa2\xaek\ +\xb4\xe1\xf9\x88@\xd2\x1f\x92_\x9e\x92\xe79i\x9av\x11\xf0w\xe6\xa3\xe2?\xf8"\ +\x00\x0f\xed\xc5\x98\xa6i\xa7\x8f\xa6iX\xadV\x94eIY\x96L\xf3y\'\xd4\xdd\x88\ +\x841\xbd\xe1>\xd3\xe9Y\'\xb0\xe7A\xa2(\xea\xdcUJ\xd9\t\xcf\x03\xf8\x08DQ\ +\xd4\xdd\x8cs\xae3\xc5\xa2((\x8a\x82\xc5b\xc1\xa2l\xb0\xce;\xe1v\xd3\x03\xae\ +\xedOx\x96\x9d\x92eYw\xb1(\x8a\x88\xe3\xb8-\xb7- \xaf\x93\x17A\xf8\x1b\xf1\ +\x10\xf3\xf9\x9c<\xcf\x99N\xa7\xe4y\xce\xb7\xa7\x17,J\xbdc\x03\x1d\x88\x10\ +\x82\xdep\x8f\x1b7o\xf3\xe8\xb3\x8f1\x9b9\xc3\xab\xdf\xe7\xde\x1f~\xfa~\xde7\ +\xbc\x81\xf9t\xcc\xe7s\xb2,\xe3\xe2\xe2\x82,\xcb\xc8\xb2\x8cg\xb3\x12m\xdb"\ +\x11\xdb\x13\xda\xf6\xe6\xe7\xd5\xa3{,f9\xa7\xdf<DJ\xf9\x7f\xc2\xdb\xd6\x85O\ +\xddv%\xd4u\x8d\x94\xb2KG\x9e\xe7\\\\\\pvv\xc6\xf9\xf99\x8f\xbe>\xa3X4\xddh\ +\xba\x91\xdcnj\xa0\x9d-\xef\xbe\xf1\x16\xd5\xaa\xe2\xe2\xe2I\x07\xe1/\xec{\ +\x8e\xbf\xb8w\xcc(\x8a\xba\x9e\xe4=\xa3(\n\xa6\xd3)Y\x96q~~\xce\xe7_<\xe62\ +\xaf\xda\xb1r3\xc7\xecF\x84\xcd\x96G\xb4\xe7\xb47\xe0\xfe\xc9\xbb<\xfc\xf4#\ +\xce\xce\x1eo\xf68W\x93\x9aw\xe0\xd1hD\xbf\xdf\'I\x92\xae\xca<\x98\x17g\x9e\ +\xe7dY\xc6\xa3\xaf\xcf\xb8\xcc+\xackG\x06?P\xf9\x8dk\xe03\xe3|\x8e6\xb4\xbd\ +\xde\x90\xfb\'\x0f\xf8\xea\x8bO\xb8<\x7f\x8cs\xa7\xddPS\x96%\xf3\xf9\x9c\xe1\ +p\xb8i^W \xdbk\x16\x8b\x05\xdf\x9e^\xf0lVR,\x9a\xcd~\x86\xcdL\xbb\xdb\xbb6\ +\xf3\xc8U4\xae\xce\x02!$\xb7_;f\xff\xe0&\xd3\xec\x94\xb3\xf3\x8c\xe5rIQ\x14\ +\x8c\xc7c\x06\x83\x01i\x9a\x12\xc7qgt>b\xd3|\xce\xa2lX\x94\x1am7\x11\x10W\ +\xdf\xdb\xed\x87w5\xe2p\xd6\xe1\x9c\xc59\xdb\x8e\xf9\xce\xe2\xd54\x18\xec\ +\xd1\xeb\x8d\xa8\xebv\xbc\x9b-V\x14\xcbsBuA\x92DDa\xd4>=\x90\x01\xc6J\xb4\ +\x81\xc6\xb0\xf1\t\x1fi\x1f\xfb\xdd\xc7\x02;\xce\xea\\\xbb+\xb7\xb6\xdd\x8b\ +\ni\x90F\xe2\x048kp\xd6b\xad#\x08b\xfa\xa3\x83\xf6ogq\xce\xa1\x9dk\x1dR\xbb\ +\xeeK\xfd\xb9K\xb8\xf0\x83\xf6\xd6\x03\x0e\xb7Yg;Q|7\x1e\xd4\xfc\x0fU+\x93#\ +\x1a\xd9\x15\x96\x00\x00\x00\x00IEND\xaeB`\x82' + +def get023Bitmap(): + return wxBitmapFromImage(get023Image()) + +def get023Image(): + stream = cStringIO.StringIO(get023Data()) + return wxImageFromStream(stream) + +index.append('023') +catalog['023'] = ImageClass() +catalog['023'].getData = get023Data +catalog['023'].getImage = get023Image +catalog['023'].getBitmap = get023Bitmap + + +#---------------------------------------------------------------------- +def get024Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xc7IDATx\x9c\xcd\x98\xdfn\xdb\xc6\x12\x87\xbf\xd9].)\xca\x96\xd5$\xb6\x92\ +\xa25\x82\xb4\x07E\x81 @\x91^\x1d\xb4\xcf|^\xe0\\\x9d\x07ho\x8a\x02m\xd0\xa0\ +AZ\xc7v\xe9\x88\x92(R\x14\xb9\xbb\xe7\x82\x7f,\xa5y\x80\x12\xa0i[\x12\xf7\ +\xe3\xcco~3+\x01\x02\xff\x80\xc3\x00\xbcx\xf9=\xd6\xc6D\x91E\x1b\x83V\x1aQ\ +\x1a\x11!\x84\xc0\x11k\x18.\xe1\xfe\x1fA\x0e^\x14>z\xc8\xf1\xaf\xa1\xff\x19B\ +\xe0\x7f\xff\xfdO\x07bmL\x92\xa4\xd88\x19a\xd4\x00B\x80\x10\x08\x1e\x08-\xce\ +\xd5\xf8\xb6\xc6\xb55m[\xe3\xdb\x96\xb6mh] \xa0P\xda\x12\xd9\x94dzJ\x14\xc5\ +\xdd\xc2"\x07\x10\xd2\xe1\n\x04\x1f\xf0\xc1\xddG$\x8a,6NH\x92\tQ\x9c`\x8cE+5\ +\xa0\xe3}\x03\xaeBBKb-ZO\xd0Z\x03\xd0\xb6-e\xb5\xa3\xaekvUEY\x96\x14\xebw\ +\xe4wW\xa4\xa7\x0f\xf8\xe4\xc1\x82\xf4\xf4\xec\x1eC\x06\x1c!\x04\x8f\xf7\xfe\ +\x1eD\x1bC\x14Y\xa28\xc1\xda>*Zw\x1fp["\xed\x99\x9d\xcc\x99N\xa7$I\x82\xb5\ +\x16\x11\xc1{\xcf~\xbf\xe7\xf7\xb77\xec\xf75\xc9\xa4b\x92V$\x93\x94b\xb3f\ +\x95_\xf3>\xbb\xe2\xe2\xc9S>\xbb\xfc\nQ\x1d\x00\xd2\x01\x85\xe0q\xedAD\xb4\ +\xd2hc0\xc6v@\x91E)!\x92\x8a\xb3y\xcc\xc3\x87\x9f2\x9f\xcf\x99\xcdf\xa4i\x8a\ +1\x06\xef=m\xdb\xb2\xdb\xed\xf8\xf5\xcd\x8a6\x08A\t*RL\xa6\x1a\xa5\r\xda\x18\ +\xf2\xe5\x92\xd7\xbf\xfcH\xb1\xca\xf9\xf2\xebo\x98\xa4\'\x1d\x08\x02! \xea\ +\x00D\x94F)\x8dV\n\xad5J\t\x89\xa9y\xfch\xc6\xe3\xc7\x8fY,\x16\\\\\\0\x9f\ +\xcf\x89\xa2h\x04\xa8\xaa\x8a\xa2((\xf7\xd04\x82\xdb\x0b\xce)\x823\xa0\x12\ +\xe2\xc43;\x0b8\xe7\xb8\xfa\xe3\x15\xd5\xae\xe2\xc5\xcb\xefH\xd3\xd3\xbe\x10\ +<\xca\xa9\x03\x10\x91NP}\xfe"\xa9xr~\xc6\xe7\x9f\x7f\xce\xe5\xe5%\xcf\x9e=c\ +\xb1X\xa0\x94\xa2i\x1a\xb6\xdb-\xeb\xf5\x1a\xe7\x1ci\x9a\xe2\xbc\xc29\xa1\ +\xf5B\xe3\x84\xd0*\x82\xd7 1q\x02\x9f<\x10D\tw\xd9;^\xfd\xfc\x03/^~\x8f\x88\ +\x02d,8\x03\x10B\xe8\xab\x03\xc4m9\x9b\xc7,\x16\x0b.//y\xfe\xfc9\xe7\xe7\xe7\ +\x00x\xefi\x9af<\xbd\xf78\xe7\xba\x12\x17\x01\xa5\xd1\xda\xd2\x06\xc1\xf7U\ +\xad\xb4\x90\xa4\x8as\x1b\x91\xc4\t\x7f\xfd\xf5\x96\xdf\x7f\xfb\x89\xa7_<\ +\xef\xab\xf1 5\xf4%\xea}C\xa4=\x0f\x1f~\xcab\xb1\xe0\xd9\xb3g\x9c\x9f\x9f\ +\x8f~\xe2\x9cc\xb5Z\xb1^\xaf)\xcb\x92\xddn\x87s\x0e\x11Ai\x83\x11\x85W\x1aD!\ +\xa2q\xad\x06\xafQ*"\x8ecb\x1bc\x8c\xe1\xee\xe6-\x0f\x1e=\xe1\xe4\xe4\x8cpX5\ +@\xe7\x13\xaebv2g>\x9fsqq\xc1b\xb1`\x88\x98s\x8e,\xcbX.\x97\x94e\xc9~\xbfGD\ +\xba\xea\x12\x85\xd6\n%\x1e/\n\x11\x85R\x06\xa5\x14\xce\x19\x08\r\xda\x06\ +\xe2\xd8\xa2\xb5\x02nYfW\xa4\xe9\x0c\xef\xc31\x08\xa1EB\xcbt:e6\x9b1\x9f\xcf\ +QJ\x8d\xe1\xcf\xb2\x8c\xbb\xbb;\x8a\xa2\xc0{\x8fR\x8a\x10\x02J\xa9>\xdf\x01\ +\x94F\x89\x80(\x94r(\xa5Q\xae!\xf8\x88\xa0\x1c\x91\x8d\x89\xadA\x08dwK\xeaz\ +\x8b1\xf1\x01H\x00\xe7j\x12kI\x92\x844M\x89\xa2h\xd4\xc2j\xb5b\xb9\\R\x14\ +\x05!\x84\xd1)E\xa4\x07\x11B\xef\x99"\x1a\x91@P\xaak\x13J\x13B\x8b\xe0\x10\r\ +\x13k\xd1\nv\xbb\x8aj\xbbb:{t\x1c\x11\xdf\xd6h=\xc1Z\x8b1\x86\xb6m\xd9n\xb74\ +M3j\xc2{\x7f\x04q\xd8=\xba\x82\xebZ\x82\x88\xa0\x10\x94\x0ehm\xf0\xdet0:\xa0\ +#8\x89`^\x95l\xca\xdd\xb1F\x02\x01\xd7\xd6h\xadG\xc7\xdc\xedv\xac\xd7k\x9a\ +\xa6\x195\xa1\x94:\x82\x18\x9bb\xdf\n\x90\xc1\xbc\xfb\xf4\x00A\x81\x04\r\xc1\ +\x80vh#L"\xcdl6\xa3\xa82|\xf8@\xacm[\x8f%\xda\xb6-UU\xe1\x9c\x1b\xa1\x86E\ +\xff\x06q\x1f\x94!.\x88(d\xd0\x8e\x80\x0e\x10\x82C+\x8d\x8a\x14q\x121=9!\xca\ +\xee\xc6{\x8c\xe5\xdbu\xd1\x96\xfd~\xcfn\xb7\xa3(\x8a\xce\xac\x9c\xc39\xd7;\ +\xae\x1a\xa3r\x04qx\x88\xf4\x10\xbd~\x94\xee\x970h\xe51F\xb06\xe0\x92\x84$\ +\xb1\xb4G Ah\xdbN\x98u]SU\x15UU\x8d\x0b\x0e\x10\x1f_W\xf8\xf7\xb7_\x01\xf7\ +\xc2\xd5\xc6\xa0\xb5\xc1\x98\xee\x14Q\x10<m\xbb\xc7\xed\xb7\xd4eN\xe6w\xd8\ +\xc8\xd2t~v\x90\x1a\x17F\x88\xedv\xcbd2\xc19\x871\x868\xee\x8chH\xdd\x87Z\ +\xf9\xee\xdb\x7f\x8d\xd1\xd2Z\x13E\x11\xd6\xda\xf1\xd4Z\xe3\x9cc\xbb\xddr}}\ +\xcd\x9b7\x9eu\x9eu\xd1j?HM@Q\x96%\xdb\xed\x96\xcdfC\x92$\x84\x10F\x88\x01\ +\xe0P#\x87\xe7\x00a\x8c\x19\xaf\x03\x881\x06\xe7\x1c\xbb\xddn\x04\x16\x11D\ +\x99\x0f5"(mG\x88\xd5jE\x1c\xc7\xa38\xa3(\xc2\x18s\xa4\x91C\x80\xc1a\x07\x88\ +(\x8a\x8e\xa2b\x8c\xa1\xae\xeb\xb1"\x07\xdd9\x7f\x9f\xee15\x91M\xd9\xac\xdf\ +\x91\xe79\xd3\xe9\x14km\xf7\x06c\xc6\x1bk\xad\xc7\x12\x1f\xa0\x86H\x0cg\x14u\ +}e\x18\xa0\x86!\xaa\xb3{7\x16D]\xd7\xb4\x8e\x0f#\x02\xc9\xf4\x94\xfc\xee\x8a\ +<\xcf\x99L&c\x04\x86\'\x1b\xa22|\xf0c\x00\x03t\x92$\xc4q\xccd2\x19\xf5\xd14\ +\r\xbb\xdd\x8e\xb2,)\xcb\x92e\xbe\x19\x85z\x1c\x91(&=}\xc0ry=\n\xecC\x10k\ +\xed\xe8\xaeJ\xa9\xb1*\x06\x80C\x81\x0e\x0f\x13B\x18Mq\xbd^\xb3^\xaf)\x8a\ +\x82\xa2l\xf0ap\xc2\xc3\xa6\x07|\xf2`\xc1\xfb\xec\x8a,\xcb\xc6\xc5\xac\xb5]\ +\x0b\x8f\xe3#\xa0A\'\x1f\x83\x18\x1ed\x80\xd8l6\xe4y\xcer\xb9$\xcfs\xfe\xbc\ +\xba\xa5(\xdb#\x1b\x18AD\x84\xf4\xf4\x8c\x8b\'Oy\xfd\xcb\x8f\xe3\x9c1\xa8\ +\x7f\xc8\xfdp\x0e\xd3\xf7 \xd4A\xac\x9do\xc8\x98\x8e\xcdfC\x96e\xdc\xde\xde\ +\x92e\x19Y\x96\xf1~U\xd2\xfa\xaeH\xe4pB;\xdc\xfc|v\xf9\x15\xc5*\xe7\xea\x8fW\ +(\xa5\xfe&\xbcC]\x0c\xa9;\xac\x84\xba\xae\xc7\x91\xb2,K\xf2<\xe7\xf6\xf6\x96\ +\xeb\xebknnnx\xfd\xe6\x9au\xd1\x8c\xa3\xe9`\xd0G\xa9\x81n\xb6\xfc\xf2\xebo\ +\xa8v\x15\xb7\xb7\xefF\x88a\xe1\xa1\xc7\x0c\x8b\x0f\xbd\xc9Z;\xf6\xa4\xc13\ +\xd6\xeb5\xcb\xe5\x92,\xcb\xb8\xb9\xb9\xe1\xd7\xdf\xder\x97W\xddX)\xf2\x91\ +\x88\xd0w\xcd\xbeqM\xd2\x13^\xbc\xfc\x8eW?\xff\xc0\xf5\xf5\xdbq35Lj\x83\x03\ +\xcff\xb3q\xaf3T\xd9\x006\x883\xcfs\xb2,\xe3\xf5\x9bk\xee\xf2\n\x1f\xba\xd6(\ +=\xc8\xd0\xb1\xcc\x90\x990\xe4\xa8\xa7M\xd3S^\xbc\xfc\x9e\xdf\x7f\xfb\x89\ +\xbb\x9b\xb7\x84p\x85s\x8e\xfd~OY\x96l6\x1bNOO\x99L&G \x87\xef)\x8a\x82?\xaf\ +ny\xbf*Y\x17M\xbf\x9f\xa1\x9fi\x8f{W?\x8f\xdcG\xe3\xfe*\x88(\x9e~\xf1\x9c\ +\x07\x8f\x9e\xb0\xcc\xae\xb8\xbe\xc9\xc6\xad\xc4|>\xe7\xe4\xe4\x84\xc9dB\x1c\ +\xc7\xa3\xd1\r\x11[\xe6\x1b\x8a\xb2\xa1([Z\xdfG@\xee\xef;\x0eV\xc7\x1a\t\x04\ +\x1f\x08\xc1\x13\x82\xef\xc6\xfc\xe0\x19\xd4trrF\x9a\xce\xa8\xeb-\xd5v\xc5\ +\xaa\xd8\xb1\xde\xde\x10\xe9[\x92\xc4b#\xdb\x8f\x85\x06\xe7\x15\xad\x83\xc6\ +\xd1\xfb\xc4\x10\xe9!\xf6\xc7_\x0b\x1c9k\x08\xdd\xae\xdc\xfbn/*\xca\xa1\x9c"\ +\x08\x04\xef\x08\xde\xe3}\xc0\x98\x98\xe9\xecQ\xf7w\xf0\x84\x10hC\xe8\x1c\ +\xb2\r\xe3M\xefg\x95>\xe1}u\x88\x1c|\xc1\x11\xfa\xf7\xf9Q\x14\xff\x8c/j\xfe\ +\x0f\x14\xf5q\xf5\x0b9\xe5)\x00\x00\x00\x00IEND\xaeB`\x82' + +def get024Bitmap(): + return wxBitmapFromImage(get024Image()) + +def get024Image(): + stream = cStringIO.StringIO(get024Data()) + return wxImageFromStream(stream) + +index.append('024') +catalog['024'] = ImageClass() +catalog['024'].getData = get024Data +catalog['024'].getImage = get024Image +catalog['024'].getBitmap = get024Bitmap + + +#---------------------------------------------------------------------- +def get025Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +9IDATx\x9c\xcd\x98M\x8f\x1cG\x19\xc7\x7fU\xd5U\xfd2\xb3\xb3\x93\xf5\xee\x8e\ +\x1d\x92\xc5r\x0c\xc1\x8ae\x11|\x80C"q\xc8\x05E\x90\x0b\'\xee|\x02\xf8\x08|\ +\r\xce\x08q@\x1c@\x08\x11\t\x82\x02HH\x8e\x90,\xe7\xc58\tl\xb2\xde]\xf7zzfz\ +\xa6g\xa6\xbb\xaa8\xf4\xcb\xceX\xfe\x00\x19\xa9\xb6w\xb7{\xba~\xfd\xbc\xfd\ +\x9f\xa7\x05\xe0\xf9\n|\x02\x80;w\xdf\xc4\x98\x10\xad\r*\x08PR!\xa4B\x08\x81\ +\xf7\x9e-V\xdf\x1e\xfc\xe5?\xbc\xd88)x\xeeGl\xff\xea\x9b\x9f\xde{\xde\xfb\ +\xf3ok\x10cB\xa2(\xc1\x84Q\x07#[\x10<x\x8fw\x80\xaf\xb0v\x85\xabV\xd8jEU\xad\ +pUEU\x95T\xd6\xe3\x91He\xd0&!\xea\xed\xa0uXo,\xc4\x06\x84\xa8q\x05x\xe7q\xde\ +^ZDk\x83\t#\xa2(F\x87\x11A`PR\xb6\xe88W\x82-\x10\xbe"2\x06\xa5b\x94R\x00TUEY\ +\x96\xacV+\x16\x8b\x05\xf3\xf9\x9c\xd9\xf41\xd9\xc5\t\xc9\xce\x1e/\xec\x8dHv\ +v/1D\x8b#\xf0\xde\xe1\x9c\xbb\x04QA\x80\xd6\x06\x1dF\x18\xd3XE\xa9\xfa\x0bv\ +\x8eV\x8eA\x7fH\xaf\xd7#\x8a"\x8c1\x08!p\xce\xb1^\xafY\xadV\x14EQC\xccfdYF\ +\x96e\x8c\xc7\xa7<MO8\xbcv\x9d\x97\x8e^E\xc8\x1a\x00Q\x03y\xef\xb0\xd5\x86E\ +\x94T\xa8 \x08L\r\xa4\rR\n\xb4(\xd8\x1d\x86\\\xb9\xf2"\xc3\xe1\x90\xc1`@\ +\x92$\x04A\x80s\x8e\xaa\xaaX.\x97[\x10\x93\xc9\x84^\xafG\x1c\xc7\x18cH\xd3\ +\x94O?\xfe\x80|\x92q\xf3\xd6\xeb\xc4I\xbf\x06A\x80\xf7\x08\xb9\x01"\xa4BJ\ +\x85\x92\x12\xa5\x14R\n\xa2`\xc5\xd5\xfd\x01W\xaf^e4\x1aqxx\xc8p8Dk\xbd\x05\ +\x90\xe79EQ\x10\xc71Q\x14\x11\x86!\xc6\x18\x82 @)\x85s\x9e\xb2\xac8\xf9\xe2!\ +\xc5\xb2\xe0\xce\xdd7H\x92\x9d&\x11\x1c\xd2\xca\r\x10!\xea\x80j\xfc\xa7E\xc1\ +\xb5\x83]^~\xf9e\x8e\x8e\x8e\xb8q\xe3\x06\xa3\xd1\x08)%eY2\x9f\xcf\x99N\xa7X\ +kI\x92\x04\x00\xe7\x1c\xde\xfb&\xcb@J\x89\x07\xce\xd3\x19/\xec\xed#\xa4\xe0"\ +}\xcc\xc3\x07\xf7\xb8s\xf7M\x84\x90\x80\xe8\x12.\x00\xea\x1b\xe0\xc1\x83\xb0\ +sv\x87!\xa3\xd1\x88\xa3\xa3#n\xdf\xbe\xcd\xc1\xc1A\xb7YY\x96\xddr\xcea\xad\ +\xc5{\x8fR\x8a0\x0c\x11B\x10\x04\x01Zk>x\xf0\x05N\x86D\x89\xe0\xc0h\xa20\xe2\ +\xc9\x93c>\x7ft\x9f\xeb\xaf\xdcn\xb2q\xc354)\xea\\\x89V\x8e+W^d4\x1aq\xe3\ +\xc6\r\x0e\x0e\x0e\xbazb\xade2\x990\x9dNY,\x16,\x97K\xac\xb5\x1dD\x0b\xa0\ +\xb5\xe6\xfe\'\x8f\x99\xce-\xc8\x08)5a\x18\x12\x9a\xfa\x9a\x8b\xb3c\xf6\xf6\ +\xaf\xd1\xef\xef\xe27\xb3\x06\xa8\xeb\x84-\x18\xf4\x87\x0c\x87C\x0e\x0f\x0f\ +\x19\x8dF\xb4\x16\xb3\xd6\x92\xa6)\xe3\xf1\x98\xc5b\xc1z\xbdF\x08\xd1\xc4\ +\x94\xec\x028\x08\x02\xb2\xd9\x92\x07\xff9C\x9b\x08k\x03\xf0%\xcax\xc2\xd0\ +\xa0\x94\x04\xce\x19\xa7\'$\xc9\x00\xe7\xfc6\x08\xbeB\xf8\x8a^\xaf\xc7`0`8\ +\x1c"\xa5\xec\xcc\x9f\xa6)\x17\x17\x17\xe4y\x8es\xae\x8e\x01\xef\x91Rv\xb7\ +\x90R\xb2.-\x7f|\xef\xa3&\xf3\x14\xd2\x96x\xa7\xf1\xd2\xa2MHh\x02\x04\x9e\ +\xf4b\xccj5\'\x08\xc2\r\x10\x0f\xd6\xae\x88\x8c!\x8a"\x92$Ak\xdd\xc5\xc2d2a<\ +\x1e\x93\xe79\xde\xfb\xaeR\n!:\x10\xe7\x1cB\x08\xfe\xf4\xb7\x0f)\x8a%*\xd0\ +\xb5LH\x85\xf7\x15\x02\x8bP\x10\x1b\x83\x92\xb0\\\x16\x14\xf3\t\xbd\xc1\xfe\ +\xb6E\\\xb5B\xa9\xb8K\xbd\xaa\xaa\x98\xcf\xe7\x94e\xd9\xc5D\xbb\xd9\xb3e\xbb\ +\xb5\xc6\xfdON\xf8\xec\xf8\x0c!%\x12\x81T\x1e\xa5\x02\x9c\x0bj\x18\xe5Q\x1a\ +\xfa\x1a\x86\xc5\x82\xd9b\xb9\x1d#\x1e\x8f\xadV(\xa5\xba\x8a\xb9\\.\x99N\xa7\ +\x94e\xd9\xc5D\xfb\xf4\x9b0m\xba\x9e\xa7S\xde}\xff\xc3\xba\x14 @H$\xe0%\x08\ +\xaf\xc0\x07\xa0,*\x10\xc4Z1\x18\x0c\xc8\x8b\x14\xe7\x9f\t\xd6\xaaZu&\xae\ +\xaa\x8a\xa2(\xb0\xd6vP\xed\xa6\xcf\x83\x00\xf8\xfd_\xeeS\x95\xebZE\x84DHY\ +\xd7\n\x01\xca\x83\xf7\x16%\x15RK\xc2H\xd3\xeb\xf7\xd1\xe9Ew\x8f.}k\x15\xadX\ +\xaf\xd7,\x97K\xf2<\'I\x12\xac\xb5]\x8aJ);\xablB\xbc\xfb\xfeG\\<\xcd.uD\xca.\ +~\x84T\xcd\x16\x01J:\x82@`\x8c\xc7F\x11Qd\xa8\xb6@\xbc\xa0\xaa\xcaNE\x8b\xa2\ +\xa0(\x8an\xc3\x16\xe2y\x1f!\x04\xc7\x8f\x9f6\x96h\x05\xad\x86\x91J5\xed\x84\ +\x04<\x81th-\xd1\xc6\xe3\xaa\x10\xa3\r\xa5mb\xacs\x8d\xf5[*:\x9f\xcf\xc9\xf3\ +\x9c\xd5j\x85\xb5\xb6\xdb\xb8\x95\xed\xcdX\xf9\xc9;\xdf\xe5\xb5o}\xbd\x81\ +\xa8\xdd"\xa5B\xca\x00\xa5\x82FP\x03\xb41\x98f)Ug\x14\xad$\xb4\xae\xf1\xc8\ +\xcb~b6\xeb\xc4l\xbd^w\xb1\xb2\xe9\x8eV\x9f\xa4\x94$q\xc8\x8f\xde\xfa6?~\xfb\ +{\x980F\x08\xd9(\xbaB\x05\x9a \xd0hm\x08\x8d&\x8e\rF\x07\x8d\xdb\x82gcD \x95\ +\xd9\x92\xf20\x0c\xbb\xe0\xd4Z\x13\x04\xc1V\x8cl\x82\xb4\x15\xf6\xb5o\xbe\ +\xc4\xd1\xd7\x0e\xf8\xf5\x1f\xee1\x1e\xcfP*hTX"\x04\xc4\x91$\x0e\x05\x81\xf2\ +8g\xb1\xee\xd2\xdd]\xd6h\x93\xd4\x9dU\x96\xd1\xeb\xf50\xc6\xd4\x17l\xe8\x87R\ +\xaaK\xf1\x16J6\xadC\xbb\x0e\xf7c~\xfe\xd3\x1f\xf0\xde\xbf\x1e\xf1\xd7\x7f~T\ +\xbbE)\xb4\x82$\x96\xc4\x11\xb8uAY\x96T\x96g-\x02Qo\x87\xec\xe2\x84,\xcb\x88\ +\xe3\xb8\xb3\x80\xd6\x1acLg\x95M\x99\xdf\x04h\xcfk\xad\x89\xa2\x88\x1f\xbe\ +\xf5\x1d^\xbf}\x93_\xfe\xe6\x1fx\xbb$\t\x05;\x89\xc4\x04\x15\xf3EI\x96\xe5]\ +\xa0n[D\x87$;{\x8c\xc7\xa7]0=\x0bb\x8c\xe9\xaak+t\xedj\xcf\xb7+\x8ecn}c\x87_\ +\xfc\xec\x1d~\xf5\xbb\xbfs~~J/\x12\xf8\xaa`Y,\x98\x17%\xce7M\xf1&\x08\xc0\ +\x0b{#\x9e\xa6\'\xa4i\xdamf\x8c\xa9%\xbc\xe9\xbc\xda\r\xdb8y\x1eD\xfb \xde{\ +\xa4\xf0\xbc\xfd\xfd[\xdc\xfb\xb7\xe0\xe4\xcb/\xc9\x97\x0b\x1e\x9f\xa6\xe4\ +\x8bj\xab\x0ct B\x08\x92\x9d]\x0e\xaf]\xe7\xd3\x8f?\xc0Z\xdbm\xd4\x02\xb4@a\ +\x18vi\xdc\x06\xaaR\xaa\xb3\x8e\x10\x02k-eY2\x9b\xcdH\xd3\x14-K$k&\x931\xe3\ +\xe9\x82\xca\xd5I"6;\xb4\xcd\xe1\xe7\xa5\xa3W\xc9\'\x19\'_<DJI\x18\x86]\xe7\ +\xde>i\xbbZ\xd7\xb5\xad\x82\xb5\x96\xd5j\xd5\xb5\x94\x8b\xc5\x82,\xcb8??\xe7\ +\xf4\xf4\x94\'O\xce\xf9\xec\x7fgL\xf3\xb2kM\xdb\x8a\xb0\xe5\x1a\x10\x08)\xb8\ +y\xebu\x8ae\xc1\xf9\xf9\xe3\x0e\xa2\xdd\xb8\xd5\x98v\xf3V\x9b\x8c1\x9d&Yk;\ +\xd1\x1c\x8f\xc7\xa4i\xca\xd9\xd9\x19\x9f<:\xe6"+\xea\xe9J\x88\xe7X\x84f\xe4\ +\x11\xf51N\xfa\xdc\xb9\xfb\x06\x0f\x1f\xdc\xe3\xf4\xf4\xb8\x1b\xa6\xdaN\xad\ +\xad\xc0\x83\xc1\xa0\x9bu\xda,k\xc1\x16\x8b\x05\xd3\xe9\x94,\xcb\xea\x91\xe2\ +\xbf\xa7\\d\x05\xce\x0b\x04mU\x16\xdd\xe0\x1a\xb4\x9e\xf1\xad\x8f\x1a\xda$\ +\xd9\xe1\xce\xdd7\xf9\xfc\xd1}.\xce\x8e\xf1\xfe\x04k-\xeb\xf5\x9a\xc5b\xc1l6\ +cgg\xa7\x1b#Z\x90\xcdk\xf2<\xe7\xcb\x93s\x9eN\x16L\xf3\xb2\x99g\x00\xd1(\xf3\ +\xb3\xc1\xea7\xacqy\xacu\xe3\xfa+\xb7\xd9\xdb\xbf\xc68=\xe1\xf4,\xedF\x89\ +\xe1pH\xbf\xdf\'\x8ec\xc20\xec\n]k\xb1q6#_\x94\xe4\x8b\x8a\xca\xb1-\x88B^6V\ +\xdb1\xe2\xf1\xce\xe3\xbd\xc3{W\xb7\xf9\xde\xd1FS\xbf\xbfK\x92\x0cX\xad\xe6\ +\x14\xf3\t\x93|\xc9t~\x86V\xe7D\x91\xc1h\xd3\xb4\x85\x01\xd6I*\x0b\xa5\xa5\ +\xa9\x13\xad\xa5[\xdbo\xbf\x16\xd8\xaa\xac\xde\xd7S\xb9s\xf5,*\xa4EZ\x89\x17\ +\xe0\x9d\xc5;\x87s\x9e \x08\xe9\r\xf6\xeb\xbf}-\x82\x95\xf7u\x85\xac.\x87\ +\xabKql\x1c\xded\x87\x10\x1b/8|s\x9d\xeb\x82\xe2\xab\xf1\xa2\xe6\xff\x11%\ +\x81E\xc4\xf0\x00\x1c\x00\x00\x00\x00IEND\xaeB`\x82' + +def get025Bitmap(): + return wxBitmapFromImage(get025Image()) + +def get025Image(): + stream = cStringIO.StringIO(get025Data()) + return wxImageFromStream(stream) + +index.append('025') +catalog['025'] = ImageClass() +catalog['025'].getData = get025Data +catalog['025'].getImage = get025Image +catalog['025'].getBitmap = get025Bitmap + + +#---------------------------------------------------------------------- +def get026Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xdaIDATx\x9c\xcd\x98Ks\xdb\xd6\x19\x86\x9fs\x03@\x90\xa2\x18[\x12\xed4\xd6\ +\xb8vf\xd2L<n3\xee\xa2\x8b\xe4?\xf6\x17\xf4/t\xdb\xced\xa6\x97UWI\x17\x99LS;\ +\xb1\x13\xbb\xb2\xacP\xe2E \x01\x12\xe7\xd2\x05p \xd0I\xa7\xdb`\x06\x82(\x81\ +8\x0f\xdf\xef\xfd.\x87\x02\x08\xfc\x0c\x0e\r\xf0\xf8\xc9\xa7$I\x8a1\tJk\x94T\ +\x08\xa9\x10B\x10B`\x8f5\xc4K\xb8\xf9C\x10\xbd\x7f\n~\xf2\x10\xfb\xbf\x86\ +\xf6g\x08\x81\xbf\x7f\xf6\xc7\x06$IR\xb2,\'I\xb3\x0eFF\x10\x02\x84@\xf0@\xb0\ +8\xb7\xc5\xdb-\xcen\xb1v\x8b\xb7\x16kk\xac\x0b\x04$R%\x98$\'\x1b\x1e`L\xda,,\ +D\x0fB4\xb8\x02\x82\x0f\xf8\xe0n\x141&!I3\xb2l\x80I3\xb4NPRFt\xbc\xaf\xc1\ +\x95\x88`\xc9\x92\x04\xa5\x06(\xa5\x00\xb0\xd6R\xd75\xdb\xed\x96\xcdf\xc3z\ +\xbd\xe6z\xf5\x9a\xc5\xe5\x19\xf9\xc1-\xde\xb95%?8\xbc\xc1\x10\x11G\x10\x82\ +\xc7{\x7f\x03\xa2\xb4\xc6\x98\x04\x93f$I\xab\x8aR\xcd\x1b\xdc\x1a\xa3<\xe3\ +\xd1\x84\xe1pH\x96e$I\x82\x10\x02\xef=\xbb\xdd\x8e\xedvKY\x96\r\xc4\xf55\x8b\ +\xc5\x82\xc5b\xc1|~\xce\xd5\xec\x8c\x93\xbb\xf7y\xef\xf4\x03\x84l\x00\x10\rP\ +\x08\x1eg{\x8a(\xa9PZ\xa3u\xd2\x00\x99\x04)\x05F\x94\x1cNRn\xdf~\x97\xc9d\ +\xc2x<&\xcfs\xb4\xd6x\xef\xb1\xd6RU\xd5\x1e\xc4r\xb9d8\x1c2\x18\x0cH\x92\x84\ +\xd9l\xc6\xb7_\x7fA\xb1\\\xf0\xfe\x87\x1f3\xc8G\r\x08\x02B@\xc8\x1e\x88\x90\ +\n)\x15JJ\x94RH)\xc8\xf4\x96;Gc\xee\xdc\xb9\xc3t:\xe5\xe4\xe4\x84\xc9d\x821f\ +\x0f\xa0(\n\xca\xb2d0\x18\x90e\x19i\x9a\x92$\tZk\x94j|\xe6\x9c\xe3\xec\xd5S\ +\xca\xaa\xe4\xf1\x93O\xc8\xf3\x836\x11<\xd2\xc9\x1e\x88\x10\x8d\xa1\xda\xf8\ +\x19Qr\xf7\xf8\x90{\xf7\xeeqzz\xca\x83\x07\x0f\x98N\xa7H)\xa9\xeb\x9a\xf5z\ +\xcdj\xb5\xc29G\x9e\xe7\x00x\xef\t!\xb4Y\x06R\xca\xee\x14B \xa5\xe4\xe2\xe25\ +O\xbf\xfa\x9c\xc7O>E\x08\t\x88.\xe14\xd0<\x80\x00\x01\x84[s8I\x99N\xa7\x9c\ +\x9e\x9e\xf2\xe8\xd1#\x8e\x8f\x8f\xbb\xc5\xea\xba\xeeN\xef=\xce9B\x08(\xa5H\ +\xd3\x14!\x04Zk\x8c1\x18c:u\xd24%\xcb2\xce\xcf_\xf2\xe2\x9b/\xb9\xff\xf0Q\ +\x9b\x8d\xbd\xd0\xd0\xa6\xa8\xf75Fyn\xdf~\x97\xe9t\xca\x83\x07\x0f8>>\xee\ +\xea\x89s\x8e\xe5r\xc9j\xb5b\xb3\xd9PU\x15\xce\xb9\x0e\xe2m\x80$I\xbaPE\x93+\ +\xa5\xb8|\xf3\x92[Gw\x19\x8d\x0e\t\xfd\xac\x01\x9a:\xe1J\xc6\xa3\t\x93\xc9\ +\x84\x93\x93\x13\xa6\xd3)Q1\xe7\x1c\xb3\xd9\x8c\xf9|\xcef\xb3a\xb7\xdb!\x84h\ +=%;\x03\xf7a\x8c1\xa4i\xda\x81\xc5\x94\x0f\xe1\x8c\xf9\xec\x8c<\x1f\xe3}\xd8\ +\x07!XD\xb0\x0c\x87C\xc6\xe31\x93\xc9\x04)e\'\xffl6\xe3\xf2\xf2\x92\xa2(\xf0\ +\xde#\xa5$\x84\x80\x94\xb2{D\xf4\x84R\n\xad\xf5\x8fT\x89\xefq\xceq\xfef\xc6v\ +\xbbF\xeb\xb4\x07\x12\xc0\xb9-Y+a\x9e\xe7\x18c:/,\x97K\xe6\xf39EQ\x10B\xe8*e\ +4a\xf4O|\xad\x94"\x84\x80\xf7\xbeS\xa5\x9fA\xbb\xdd\x8e\xf5zM\xb9^2\x1c\x1f\ +\xed+\xe2\xed\x16\xa5\x06\x9d\xb9\xac\xb5\xac\xd7k\xea\xba\xee<\x11\x17{\xbb\ +lG5\xe2\xd1\xbf\'*\xa2\x94b\xbe\\S\xd5\x12\x93\xe6\x1c\x1eN\xb8\xdeT\xfb\x1e\ +\t\x04\x9c\xddv\xd4\xde{\xaa\xaab\xb5ZQ\xd7u\xe7\x89\xb8X\x7f\xa1\x98\xae\ +\xfd2\xd0O\xdd\xef^]\xf2\xd5\xb33\xfe\xf5\xec?l\xab\x15\x87\x03\xc1 \xcb\x19\ +\x8f\xc7\x14\xe5\x0c\x1f\xde2\xab\xb5\xdbNbk-eY\xe2\x9c\xeb\xa0\xe2\xa2\xff\ +\x0fB\x08\xc1\xd3\x17?\xf0\xec\xbb\x1f\xf8\xf7\xf3\x0b\xeaz\xdb&\xa5C\xab\ +\x04i$if\x18\x8eF\x98\xd9e\xf7\x8c.}\x9b.j\xd9\xedvTUEQ\x14\xe4y\x8es\xaeK\ +\xd1\xf8)c&\xf5!\x9e\xbe\xb8h\xce\xe7\x178g[e\x14J\x99v\t\x8d\x92\x1e\xad\ +\x05I\x12pYF\x96%\xd8=\x90 \xb0\xb6\xee\xbahY\x96\x94e\xd9-\x18!~\xea\x10B\ +\xf0\xfb?|\x86\xadwmun\x00\x84\x94H\xa5\xdaqB\x02\x01-=\xc6HL\x12\xf06%1\t\ +\xb5k=\xd6\x85\xc6\x85\xbd.\xba^\xaf)\x8a\x82\xedv\x8bs\xae[8\xb6\xed\xbeW\ +\x0e\xc7y\x07!\x84l \xa4BJ\x8dR\xbam\xa8\x1a\xd3\xa6s\xac)B*\x88-!\x86& o\ +\xe6\x89\xeb\xeb\xae\x99\xedv\xbb\xce+\xff\xcb\x98\xbf\xfe\xf0\xde\x1e\x84\ +\x10\xb2\xed\xe8\n\xa5\rZ\x1b\x8cIH\x13\xc3`\x90\x90\x18\xdd\xf4 \xa9ozS\xfb\ +X\xa4J\xf6Z\xf9j\xb5\xa2(\nv\xbb\x1du]c\xad\xfd\x91\x1a\x11\xe4W\x0f\xef\xde\ +(!\xda\x8cQ\n\xa5Z%\x8cF\x1b\xcd K\x19\xa4\x06\xad$\xde;\x9c\xbf\tw\x975&\ +\xc9\x9b\xc9j\xb1`8\x1c\x92$IsC\xafd+\xa5\xba\x14\xef\xa7\xe8\xd1\xad1\xd3\ +\x93#fW\xcb\xb6\xdc\x1b\x94N\xda\xabF+\x85Q\x90\x0f$\x83\x0c\xfc\xael>\x9c\ +\xe3mE \x1b\x1e\xb0\xab\x03\x8b\xc5\x82\xab\xab+\xae\xae\xae:U\xaa\xaa\xeaB\ +\xd4o\xf3\xb1\x94k\xad\xf9\xed\xe3_\xa2\x95\xee \x8c1h\x13\x07-M>0\x1c\xe4\ +\x86D\x0b\x9c\xadY,\x8a\xce\xa8\xfb\x8a\x98\x94\xfc\xe0\x16\xf3\xf9yg&)e\xd7\ +\xb0\xe2\xb5_\xca#\x84\xd6\x9a\xdf|t\x9f\xbf\xfc\xe3\xeb6\x1c\r\x84\xd6\n\ +\xa3\x15\xa9\x11\x8cr\xc90\x13\x04[R\x95\x1b\xd6e\x8d\x0f\xedP\xdc\x07\x01x\ +\xe7\xd6\x94\xab\xd9\x19\xb3\xd9\xac[,\x96\xe8\xd8\xb8"P\xf4I\x0c\xdd\xc9p\ +\xc8\xbbw\xefpy\xb5\xbc\xc9\x12\xadH\x8cd4\x90\x8c\x07\x12#k\x8aj\xc3\xeb\ +\xf3\x19\xc5\xc6\xee\x95\x81\x0eD\x08A~p\xc8\xc9\xdd\xfb|\xfb\xf5\x178\xe7\ +\xba\x85"@\x04J\xd3\xb43n\x1c\x05\x94R\xfc\xee\xe3\x87\xfc\xe9\xaf\xffD+\x85\ +V\xa2Qb 9\x1c*Rc\xd9\x95k\x96\xcb9\xf3\xd5\x06\xeb\x9b$\x11\xfd\t\xad\xbf\ +\xf9y\xef\xf4\x03\x8a\xe5\x82\xb3WO\x91Rv\x93U?\xff\xe3\x19C\x17G\x85\x8f\ +\xde\x9f\xf2\xe7\xbf\xd1\x183m\xc21\x1eH2\xe3\xa8wk\x96\x8b+\x9e\x7f\xff\x86\ +UQw\xa3i\xac\x08{\xa1\x01\x81\x90\x82\xf7?\xfc\x98\xb2*\xb9\xb8x\xbd7Y\xc5\ +\xf93\xb6\xf8X_\xac\xb5\xdd=\xef\xdd\x99\xb0\xdb\x96\x1c\xe4\x92<\x83D\xd6l\ +\xcb\x06\xe2\xd9\xf3W\\.\xcafw%\xc4O(B\xbb\xe5\x11\xcdu\x90\x8fx\xfc\xe4\x13\ +\x9e~\xf59\xe7\xe7/{\x93U3\xd4\xc4\n<\x1e\x8f\xbb\xbd\x8e\xd6M\x91\xfa\xc5m\ +\xc3rU\x91hK\xb0\x8d\'\x96\xcb9\xcf\xbf\x7f\xc3\xe5\xa2\xc4\x07\x81 Ve\xd1m\ +\\u\x8cL\x881ji\xf3\xfc\x80\xc7O>\xe5\xc57_r\xf9\xe6%!\x9cuC\xcdf\xb3\xe1\ +\xfa\xfa\x9a\x83\x83\x83n\x1b\x11AB]\xe3v\xd7\x14\x9b\x9a\xaal\x8c9_mX\x15u\ +\xbb\x9f\x01\x84l\xfb\xcf[f\r=5n\xaeM\xc9\xbe\xff\xf0\x11\xb7\x8e\xee2\x9f\ +\x9dq\xfef\xd6m%&\x93\t\xa3\xd1\x88\xc1`\xf0\xa3\t\xac\xaa*\xe6\x8b\x82uYSl,\ +\xd6\xd3\xebEm+\x881\xd9\xf7H \xf8@\x08\x9e\x10|3\xe6\x07Ot\xd3htH\x9e\x8f\ +\xd9n\x9b\xf1nYT\xac\xd6o0\xea\x82,KHL\xd2|{ 5\xceK\xac\x83\xda\xd1\xd6\x89\ +\xa8t\xd4~\xffk\x81\xbdy$\x84fW\xee}\xb3\x17\x15\xd2!\x9d$\x08\x08\xde\x11\ +\xbc\xc7\xfb\x80\xd6)\xc3\xf1Q\xf3:4M\xd0\x86\xd0TH{\xb3\xb9\xbai\x8em\xc0\ +\xdb\xec\x10\xa2\xf7\x05Gh\xef\xf3\x9d)~\x1e_\xd4\xfc\x17K\x9fQTS\xbe,\xc2\ +\x00\x00\x00\x00IEND\xaeB`\x82' + +def get026Bitmap(): + return wxBitmapFromImage(get026Image()) + +def get026Image(): + stream = cStringIO.StringIO(get026Data()) + return wxImageFromStream(stream) + +index.append('026') +catalog['026'] = ImageClass() +catalog['026'].getData = get026Data +catalog['026'].getImage = get026Image +catalog['026'].getBitmap = get026Bitmap + + +#---------------------------------------------------------------------- +def get027Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xe0IDATx\x9c\xcd\x98\xdbo\xdbF\x1a\xc5\x7fs%)\xc9\x96j\xc4\xb1\xddm\xe3\xa4\ +I\xd1v\x91\rP\xe4\xb5\xfd\x9b\xf7}\xb1\x0f\xc5\xeeC\x81}h\xb1@\xd0m\x90\xb6\ +\xe96\xae/\x89l\xc92)^gf\x1f(\xd2\x94[`_K\x80\xa6,\x91\x9c\xc3\xf3\x9ds\xe6\ +\x1b\n \xf0\x07\xd84\xc0\xb3\xe7_bm\x841\x16\xa55J*\x84T\x08!\x08!\xb0\x855t\ +\x87p\xfbE\x10\x83\x1f\x05\xbf\xbb\x89\xed\x8fa\xf37\x84\xc0?\xfe\xfe\xd7\ +\x16\x88\xb5\x11q<\xc2Fq\x0fFv@\x08\x10\x02\xc1\x03\xa1\xc1\xb9\x12\xdf\x94\ +\xb8\xa6\xa4iJ|\xd3\xd045\x8d\x0b\x04$RY\x8c\x1d\x11\x8fw0&j\x07\x16b\x00B\ +\xb4p\x05\x04\x1f\xf0\xc1\xdd2b\x8c\xc5F1q\x9c`\xa2\x18\xad-J\xca\x0e:\xde\ +\xd7\xe0rDh\x88\xadE\xa9\x04\xa5\x14\x00M\xd3P\xd75eY\xb2^\xaf\xc9\xb2\x8c\ +\x9b\xd5\x19\xcb\xcbSF;{\xbc\xb7w\xc0hgz\x0bCtp\x04!x\xbc\xf7\xb7@\x94\xd6\ +\x18c1Q\x8c\xb5\x1bV\x94j/p\x19Fyv\'3\xc6\xe31q\x1cc\x8cAJ\x89s\x8e\xaa\xaa\ +\xa8\xaa\xea\x16\xc4\xcd\r\xd7\xd7\xd7,\x97K\x16\x8bs\xae\xe6\xa7\xdc?z\xc8\ +\x07\x0f>A\xc8\x16\x00\xa2\x05\x14\x82\xc75\x03F\x94T(\xad\xd1\xda\xb6\x80\ +\x8cEJ\x81\x119\xd3Y\xc4\xde\xde\x11\xb3\xd9\x8c\xe9tJ\x92\xb4l\x84\x10\xa8\ +\xeb\x9a\xa2(\xc8\xf3\x9c,\xcbH\xd3\x94\xeb\xebk&\x93\tI\x92`\xade>\x9f\xf3\ +\xd3\xcboI\xaf\x97<\xf9\xecs\x92\xd1\xa4\x05\x82\x80\x10\x10r\x00DH\x85\x94\ +\n%%J)\xa4\x14\xc4\xba\xe4\xf0\xde.\x07\x07\x07\xfd>\x9dN1\xc6\xf4\x00:\x16\ +\xf2<\'I\x12\xe28&\x8a"\xac\xb5h\xad\x91R"\x84\xc09\xc7\xe9\xc9+\xf2"\xe7\ +\xd9\xf3/\x18\x8dv6F\xf0H\'\x07@\x84h\x05\xb5\xa9\x9f\x119\x87\xf7v\xf9\xf0\ +\xc3\x0fy\xf0\xe0\x01\x1f}\xf4\x11\x87\x87\x87\x08!\xa8\xaa\x8a4MY\xadV8\xe7\ +\xf0\xde\x13B\xc09G\x08a\xe32\x90R"7\x0f&\x84@J\xc9\xdb\xb7g\xbc\xfa\xee\x1b\ +\x9e=\xff\x12!$ z\xc3i\xa0\xbd\x01\x01\x02\x08\x971\x9dE\x1c\x1c\x1cp||\xcc\ +\xd3\xa7O\xd9\xdf\xdf\x07\xa0\xaekB\x08TUE]\xd78\xe7z\x00Zk\xa2(B\x08\x81\ +\xd6\x1acL\xbfw\xbf\xc5q\xcc\xf9\xf9\x1b~\xfe\xf1\x05\x0f\x1f?\xdd\xb8qP\x1a\ +6\x16\xf5\xbe\xc6(\xcf\xde\xde\x11\x07\x07\x07<z\xf4\x88\xfd\xfd\xfd\x9e\xde\ +\xa6iX.\x97\xacV+\xf2<\xa7(\n\xbc\xf7h\xad\x7f\x03\xc0Z\x8b\xb5\x96(\x8az\ +\x10\xd6\xb6&\xb8\xbcx\xc3\xde\xbd#&\x93)a\xe8\x1a\xa0\xcd\t\x97\xb3;\x991\ +\x9b\xcd888\xe0\xf0\xf0\x10\xa0w\xc7|>g\xb1X\x90\xe79UU!\x84\xd8hJ\xa2\xb5\ +\xeeA\r\xd9\x88\xa2\xa8\x07\xd6Y>\x84S\x16\xf3SF\xa3]\xbc\x0f\xdb@\x08\r"4\ +\x8c\xc7c\xa6\xd3)\xd3\xe9\x14!\x04u]\xd34\r\xf3\xf9\x9c\xcb\xcbK\xb2,\xc3{\ +\x8f\x94\xb2\xd7C\x17X\x9d\x16\x94Rh\xad{V\xba\xbd\xbb\xc69\xc7\xf9\xc5\x9c\ +\xb2\xcc\xd0:\x1a\x00\t\xe0\\Il-q\x1c\x93$\t\xc6\x18\xaa\xaa"\x84\xb0\xc9\ +\x84\x05Y\x96\x11B\xf8\xcd\xc0\x00\xde\xfb\xfe{)%\xc6\x18\xbc\xf7=+\x9dh;v\ +\xb3,#\xcf\xae\x19\xef\xde\xdbf\xc47%J\xb5\x00\x94R\xd4uM\x9a\xa6TU\xd5kb8\ +\xd80\xb6\xbb\xc1\xbbmx\xce\xb0,!\x84>\x81W\xab\x15\xd7i\xb1\xad\x91@\xc05e_\ +\xef\x10\x02EQ\xb0Z\xad\xa8\xeb\xba\xd7D7\xd8p\xa0\xae<\xc3\x18\xe8\xac;d\ +\xab\xd3PQ\x14\xa4i\xcal6c\x95]\xe0\xc3\x1d\xb16M\xd9\x0b\xb3\xaek\xd6\xebuo\ +\xcf\xa2(\xfaA\xff\x1f\x88\xbb:\xe9\xceWJ\xe1\x9c#\xcfsV\xab\x15\x93\xc9\x04\ +\xa3\xde\xf6\xf7\xe8\xed\xdb\xce\xa2\rUUQ\x14E/\xca.\xb4:\xc5wOy\x17\xc4P3C \ +\x1d\x98N3\xa3\xd1\x88$I6Ili\xb6\x80\x04A\xd3\xd4\xd4uMUU\xe4yN\x9e\xe7}R\ +\x0e\xe3\xfa\xee6_d\xfc\xeb\xdf\xafyr|\x9f\xc7\xc7\xf7Ib\x85R\xaa\x07\xd2i\ +\xae{\xa8$I\xfal\xb1\xc6R\xb7y6(\x8dk\x85\xd4M`I\x92\xe0\x9c\xdb\n\xab\xae\ +\xdeC\xad|\xff\xc3\x19oN\xdeq\xf2\xeb\x9c\xaf\xbe\xfe\x0f\x0f\x8f\x8f\xf8\ +\xf4\xf1\xfb|\xf6\xe4}\xc6\x83du\xce\xf5sP\x07NH\x05\xcd\x9d\xd2\x04$\xeb\ +\xf5\x9a4MI\xd3\x948\x8e\t!\x10EQ/\xb4~N\x1ah\xe2\xf4\xddj3O\t\x84\x90\xfcr\ +\xf2\x8e\x93\xb3+\xbe\xfa\xfa{>\xf9\xf8\x98\xbf|\xfa\x80?\x7f\xfc\'\xa2(\xa2\ +,\xcb\x9eY!\x04B\xea\xbb\x1a\x11He\xb7\xfa\x89(\x8azqvOu\xd7\xa2iV\xb2X\xac6\ +7\x96\x88\x81[\xa4R\xfc\xfc\xe6-\'g\x0b\xfe\xf6\xcf\x17|\xfc\xe8\x88\xf7\xf7\ +G$\xa6\xee\xcb\xe4\xfc\xed\xfd\xfa\xd2\x18;\xe2fu\xd6\xf7\x13\xd6\xda\xf6\ +\x84Adw\xf6\xeeD\xf9\xfa\xe4\x12\xb9\t*!%B\xc8M\xdc\x1b\xb4\xb6\xedqs\xdd\ +\xc9\xe9;\x96W\x82\x9d$\xe0\xca\x1b\xca\xb2\xa4q\xdce\x04\xe2\xf1\x0e\xcb\ +\xcbS\x96\xcb%I\x92\xf4\x0ct\x81\xd4\xb1b\x8c\xe9\xdd\xf3\xfdO\x17=\x88\xb6\ +\x9fQH\xa56\r\x96A[\x8b\xd1\x1a\xad$\xb1\x81Q\x02ZU\x14U\xc9\xd5\xe2\xa6\x17\ +\xea6#&b\xb4\xb3\xc7bq\xde\xcf\x0bw\x81Xk{\xad\xa4\xeb\x92\xc52En\x06WR\xa3\ +\xb4B)\xdd2\xd1\tSk\x8c\x86Q,Hl\xc0U\x15y\xbe&\xcbk|\xd84\xc5C \x00\xef\xed\ +\x1dp5?e>\x9f\xf73k7Wt\x9dWW\xa6\x1f\xff\xfb\x0e\x04=\x13\xade[\xd6\xb41\x1b\ +\x00\x1a\xa3%\xe3\x18\xc6\xb1@\x8b\x92u\xb1\xe6\xec|N\xban\xb6b\xa0\x07"\x84\ +`\xb43\xe5\xfe\xd1C~z\xf9-\xce\xb9\xde\xb6\xc3\xa9\xbc\x03\xf4\xe2\xe5\xaf\ +\x88\xd0]+\x11\xaa\r\xb1\x96\x15\x85V\x12\xa3a\x1c\xc3$\x91XYS\xacS\xae\x97\ +\x0b\x16\xab5\x8doM"\x86\x1d\xdap\xf1\xf3\xc1\x83OH\xaf\x97\x9c\x9e\xbcBJ\ +\xb9\xd5\xd4t\x93\xd7\xba\xa8\x99_^a\x8c!\xa0A\xb4\xcb%!@\n0*\xb4\x9a\x88\ +\x05\xe3X`eMU\xa4,\x17W\xbc\xfe\xe5\x82UZ\xf7\xadi\x17\xd0[\xa5\x01\x81\x90\ +\x82\'\x9f}N^\xe4\xbc}{\xb6\xd5Yu\x8eY\xdc4h\xe9\x90B\xa1h\x8fZ\x06\xac\xf2D\ +\xb6-\xc3(\x81\xc4\x06\xb4()\xd6)\xcb\xe5\x15?\xbc>\xe1r\x99\xb7\x88\x85\xf8\ +\x1dF\xd8,yD{LF\x13\x9e=\xff\x82W\xdf}\xc3\xf9\xf9\x9bAg\xd565\x8b\xb4a\x1c)\ +\xb4\x05\xad\xc1\x18\x88"A\x1c\t\xe2\x08\xe2(`T\x85\xab*\xd6\xc5\x9a\xeb\xe5\ +\x82\xd7\xbf\\p\xb9\xcc\xf1Al\xd8k\x81t3\x96\xee*\x13\xba\x1am\xd0\x8eF;<{\ +\xfe%?\xff\xf8\x82\xcb\x8b7\x84p\xda75&\x1a\x91\x8c\xc6$Fc\xac\xc3Z\x8f\xb5\ +\x0ec@\xe1\xa8\x0bGQ\xb7\xee8;\x9f\xb3X\xadY\xa5\xf5f=\x03\x08\xb9\xe9\xe2\ +\xef\x885\x0c\xd8\xb8=\xb6i\xf9\xf0\xf1S\xf6\xee\x1d\xb1\x98\x9fr~1\'\xcb2\ +\xa6\xb3\x19\xbb;\xbb\xd4\x93\tI\x9c\xd0D\x96Ji\x84\x14x\xefi\xea\x8a\xc52%\ +\xcbk\xd2uC\xe3\x19L\x03\x9b\x14\xeej\xb2\xad\x91@\xf0\x81\x10<!\xf8\xb6\xcd\ +\x0f\x9eNM\x93\xc9\x94\xd1h\x97\xb2l\xdb\xbb\x9b\xac ]\xcf1\xf3K\xe2\xd8b\ +\x8dm\xdf\x1eH\x8d\xf3\x92\xc6A\xed\xd8\xe4D\xc7t\xc7\xfd\xf6k\x81\xadd\r\ +\xa1]\x95{\xdf\xaeE\x85tH\'\t\x02\x82w\x04\xef\xf1>\xa0u\xc4x\xf7^\xfb\x7fh\ +\x17VM\x08mB6\xb7\x8b\xab\xdb^\xa5k\xae[w\x081x\xc1\x116\xe7\xf9^\x14\x7f\ +\x8c\x175\xff\x03\x89\xa8;\xfaX\x82\xde\xe7\x00\x00\x00\x00IEND\xaeB`\x82' + +def get027Bitmap(): + return wxBitmapFromImage(get027Image()) + +def get027Image(): + stream = cStringIO.StringIO(get027Data()) + return wxImageFromStream(stream) + +index.append('027') +catalog['027'] = ImageClass() +catalog['027'].getData = get027Data +catalog['027'].getImage = get027Image +catalog['027'].getBitmap = get027Bitmap + + +#---------------------------------------------------------------------- +def get028Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +\x83IDATx\x9c\xcd\x98[o[\xc7\x15\x85\xbf\xb9\x9eCJ\xd4\xc5\x8e-_b91\x12\x04)\ +\x92\x18\x81_\xd3\x00}\xec\xaf\xed\x1f\xe8S\x1e[8E\xd145\x9c\x18\xf1U\xb1E\ +\x91\xe2\xf5\xdcgv\x1f\xe6\x90\x92\x9c\xfc\x80\x1c\xe0h(\x92\x18.\xee\xbd\ +\xf6Zk\xa8\x00\xe1\x0fpY\x80\xaf\x1e\xfd\x19\xef3\x9c\xf3\x18k1\xda\xa0\xb4A\ +)\x85\x88p\x05\xabl\x16\xb9xB\xd4\xa5\x17\x15\xbf{\xa9\xab\x0f\xa5\xff+"|\ +\xf7\xf7\xbf% \xdeg\xe4\xf9\x10\x9f\xe5[0z\x03\x04\x01\x11$\x82HG\xd7\x96\ +\x84\xae\xa6kk\xba\xa6\xa6\x0b-\xa1k\tA@[\x8cu\xf8l\x87\xc1p\x0f\xe7\xb3\xf4\ +\xc1J]\x02\xa1\x12\\\x05\x12\x85(\xe1\xa2"\xcey|\x96\x93\xe7\x03\\\x96c\xad\ +\xc7h\xbd\x81N\xec\x1aB[\x10\xbb\x92\xdd]\x8b1\x19J)\x14\x8a.\x04\xda\xb6\ +\xa5\xae+\xaa\xb2\xa2(V,\xa6\'L\xc7o\xd8\xdd\xbb\xce\xe1\xf5[\xec\x8c\xf6/`\ +\xa8\r\x1c\x85H$\xc6x\x01\xc4X\x8bs\x1e\x97\xe5x\xdfW\xc5\x18@\x11\xda%\x8a\ +\x86\xd1\xc1\x88\xe1\xf0\x88,\xcb\xf1\xde\x02\x8a\x18\x03M\xd3\xd245UUR\xacK\ +V\xab\x15\x8b\xe5\x82\xc5b\xc6\xf9\xf4W&\xe3\x13\x8e\xee|\xcc\xbd\xfb\x9f\ +\xa1t\x02\x80J\x80D"\xa1\xbbT\x11\xa3\r\xc6Z\xac\xf5\t\x90\xf3(\x05*\xae\xd9\ +\x1fY\x0e\x0f\xef\xb3\x7f\xb0\xcf\xde\xee\x88\xe1\xce\x00\xad\r1\x06\xda\xa6\ +\xa5ik\xca\xa2\xa2(\xd6[\x10\xc3\xf9\x90<\xcf\xb0\xd61\x9dLy\xf6\xe4{V\x8b\ +\x19\x9f~\xfe5\x83\xe1n\x02\x82\x02\x11\x94\xbe\x04Di\x83\xd6\x06\xa35\xc6\ +\x18\x94\x02K\xc9\xb5\xc3\x1d\x8e\x8enrtt\xc4\xcd\x1b7\xd8?8\xc0YK\xd36\x94e\ +IY\x14\x14eA9(\xc9\x079y\x9e\x93\xe5\x19\xde{\x9c\xb3\xfd^\x9a\x10\x03o^>\ +\xa5\xaaJ\xbez\xf4\r\xc3\xe1\xa8\x1f\x84\x88\x0e\xfa\x12\x10\xa5\x12\xa16\ +\xfd\x8bk\xae\x1d\xeep\xef\xde\x87\x1c\x1f\x1f\xf3\xe0\xc1\x03\xee\xde\xb9\r\ +@Q\x96,\x16\x0b\x00B\x08\xc4\x18{\xd2\xc5\x9e\x86\xa0U\xfaB\xc6\x18\xb4\xd6h\ +\xad\xd0Jqvv\xc2\xd3\x1f\x1f\xf3\xf0\xd1\xb7(\xa5\x01\xb5\x1d8\x0b "\xfdt@h\ +\x97\xec\x8f,GG79>>\xe6\xcb/\xbe\xe4\xf8\xf8.!\n\xcb\xe5\x92\xb6i\xa8\xab\ +\x8a\xa6\xae\xe9\xba\x96.t\x88\x08\xd6X|\x96\xa1\x94\xc6:\x8bs\x16\xe7\x1c\ +\xce\xbam\xbb\xb3<g|\xfa\x8a\xe7?\xff\xc0G\x9f|\xd1O\xe3\xa5\xd6\xd0\x8fh\ +\xec\x1a\x14\r\x87\x87\xf79::\xe2\xc1\x83\x07\x1c\x1f\xdfM\x95(\xd6\x14\xc5\ +\x9a\xd9l\xc6b\xb9\xa0,+\x9a\xbaAD0\xd6\xa2\x94\xc2X\x93>\xdc9\xbc\xf38\xef\ +\xf1\xde\xe33O\x96\xa5\xc7\xc6\x18\xc6\xef^p\xed\xc6mvw\xf7\x91\xcbS\x03 \ +\x11B[0:\x18\xb1\x7f\xb0\xcf\x8d\x1b7\xb8{\xe76!\nE\xb1f\xb9\\19\x9b0\x9b\ +\xcd\xa8\xaa\x8a.t(\xad0\x18\xb4\x160\x86(\x11c,\xd6Z\xacKk\xe2\x8b\xc7;\x8f\ +\xd6i\x12\xe5m\x1a\xef\xe1p\x8f\x18\xe5= \xd2\x11\xbb\x92\xe1\xf0\x88\xbd\ +\xdd\x11\x07\x07\x07\x00,\x97K\x8ab\xcd\xe4l\xc2\xf9\xec\x9c\xb2\xac\x12\xc9\ +\x94N\xed\xd4\xa0$\xf1K\xa1\xd1J\x13\x8c\xc1\x9a\xbe5\xbe\xaf\x8es\xa04"B\ +\x08\x1d\xe3\xb3s\xaaj\x8ds\xd9% \x02]\x9b\xc4*\xcbr\x86;\x03\x9c\xb5\x14eI\ +\xdb4\xccf3f\xb3\x19eY\xa5\x91\xeb\xf5Z\xa1PZ\xf7\x15\x8d\xe9Yc\xd0F#\xd6b\ +\xa3\xc3\xda\x04$\xe9R"x]7\x94EA\xb9\x9ac\x0e>\xb8Z\x91\xd0\xd5\x18\x93\xe1}\ +\x92\xf7\xa6mX,\x16\xd4U\xc5b\xb9\xa0\xaaR%6 \xb8"\xdbl\x01m\xa6p\xf3\x1e\ +\xef\x1d\x9d\xf7hc\x88"4uCQ\x14\xac\x96K\xd6uq\x95#\x82\xd0\xb5u\xbfAR\xcc\ +\xb2,\x01h\xea\x9a\xb2L\x9c\xd0J_\x01\xf1\x1b{\xebe \x8d\xabF\xf76\xe1\\\xc4\ +\x1a\x83D\xa1\xaa*\x96\xeb5\xfb\x07\xfb\xac\xdf\x9e\x11\xe5=\xb2vM\x8d\xeaA\ +\xb4mKY\x14\x84\xd0\xd1u\x1dM\xdd\xa0t2\xc0\x8b\xb6\xfc\x1e\x08\xfa[\xa3\x8d\ +\xc6\x1a\xbb\xad\x941\x96\x10"\xa3r\xc4hg\xc9\xce\xce.F\x9f\xf5\xee~i|\xbb\ +\xd0\xd2\x85\x0b\xef(\xca\x82\x18\xe3V\'\x0c&\x11\xf3R\x0b\xae\xf4\xa6o\xc9\ +\xa6\x12\xc96\x0c\xd6:\x94R8\xe7\x8812\x1c\x0e{\x15\x1e\x90y\x07W\x80\x88"t-\ +m\x9b@\x94EE9(\x91([\x9d\xd0Z\xd2t\xbcW\x8d\x9f_\x8c\x19\x0e\x1cwo]K\xe4U\n\ +\xa35\xda\x98\xed(\x1bc\x10\x11b\x08\xc9\x06\xb2\xde\x06\xbc#\xf4\xfb\\\x905\ +H\xb2\xf2\xaa\xa4(\xd6\xe4\x83\x9c(1\x95W)0\x06T?\x1dZ\xd3v\x81\x7f\xfd\xf8\ +\x8a\xd9|\x85\xb1\x8e\x0f\xae\xed1\x1c\xf8$\xe9\xc6`\xad\xc5\xd94\xc2\xd6Z$F\ +:\xef{suX\x9b\xfc-\xf4\x15\xd1\x9b\xd6\xa0m\xca\x13\xbd\x95\x17\xeb5UY\xd2\ +\xb4\r!\x06\xa2\xc4m&{7Y\xf0\xdd?~b>_%\xf3\n\x81\xef\xff\xfb2\xb5\xc3\x18\ +\x8c\xd1Xc.\x94\xd5oT\xd5&\xa0\xfdPh\xed\xde\xe7\x88\xc2XGQ\xac\xb6V\xee\xb3\ +M\xba\xd28\xe7\xd2&J\xf3\xe4\xf9)\xaf\xdeN\xb7F\xb9\xb9\xd7E\xc5\xff\x9e\xbd\ +\xe3\xe1\x9f\xeea\x8d\xc5\xf6R\x9f\xfc\xc6\xd2v]\xcaYQ\x881\x12BG\xc4l[\xbcm\ +\x8d\xcfvXLO\xb6y\xc2\xfb\x94\xd2lo^e\x1d\xf8\xe9\xf9\x19U\xdd\xa0\xb5\xee\ +\xf9\x90\x88\xa9T\x12\xb6\xd7\xbfN\xf9\xe8\xdeM\xee\xdc\xda\xdd\xf2 \xedc\ +\x081\x12Dh\xbb\x8e\xbaih\x9a\x86(\xea\xfd\x8a\xc0`\xb8\xc7t\xfc\x86\xc5bF\ +\x9eg\xdb<\xe1\x9c\xe5lZ\xf0nZb\x8c\xc6X\x07\xef\x81HV\x9f\xda\xf2\xf8\xbf\ +\xaf\xf9\xf0\xf6M2\xef\xc9\xf3\x1ckm\x9a\xbe.PU\x15EQP\x96%\x8b\xe5\x9a\x10\ +\xf5o+\xe2|\xc6\xee\xdeu\xce\xa7\xbfb\xad\xdb\x86\x9a\xb7\xe3%m4\xe4\xf9\x90\ +,\x1f\xa0\xb4\xc1\x18A+z\x00\xfd\x84h\x8b\xb1\x06\xad\x15\xff\xfc\xe15\x7f\ +\xfd\xcb\xc3\xe4/$Y/\xcb\x92\xe5r\xc5j\xb5d\xbd^RT\xdd6\xc9_"k\xba\x0e\xaf\ +\xdf\xa2\r\xc2t2e<>\xe3\xe5\xab\x13\xce\xa7\xe7\xb4MM\xdb\xb6t]K\x0c\x11\x91\ +\xfe8\xa0\x14\xdaX\x8c\xb1W\xa2\xe6bU\xf0\xec\xe5d\x0bb\xb5*\x98\xcd\xe7\xcc\ +gs\xe6\xf3\x05o\xdfM\xa8\xeaxE\x8a\xb6\x15QJ\xb13\xda\xe7\xe8\xce\xc7<{\xf2=\ +]\xe8\xb8~=\xa2\xb4\xc1:Gp\x96\xaeM\xba\x10\x83E\x8c\xe9\xb3\xf8E"\xb36\xb9\ +\xae5\x96\xff<y\xc1\xf5\x83\x01F\t\xd3\xe9\x94\xb3\xf1\x19\x93\xc9\x98\xc9d\ +\xc2bU\x13Dq\x91\xea7@.)\xd4\xbd\xfb\x9f\xb1Z\xccx\xf3\xf2)Z)\xacK\x84\x93\ +\xe0\x89\xa1!t\x96`,&\xa6\x00-\x98>\x02l\x92\xa6\xa0\xfayx\xfc\xef\x9f8\xbe=\ +b:\x99pz:\xe6\xf4t\xcc\xeb\x931E\x15\xb6\xd1\xb4\xe7\xeaEE6c\xac\xb4\xe2\xd3\ +\xcf\xbf\xa6\xaaJ&\x93\x13\xb2<\'\xcb|\x12\'\xeb Z$\x1ab0\x88\xd1H\xd4 \xba\ +\xef\xb2\xc6\xa0\x12\x7fP\xd4e\xc5/\xbf\x9cS\xac\xe7\x9c\x9e\x8ey\xfe\xf2\ +\x84\xf9\xaaakJ\xbf\xa9\x08}\xb6Pi\x1d\x0cw\xf9\xea\xd17<\xfd\xf11g\xa7\xafR\ +\x08V\x1ak\r\xcei\x9c\xd5\xe8\xa8Q\xa2\xd1\xa2\xd1\xa2\xd0(\x0c\x82\x96\x80\ +\n\x8a\xae\x0b\xb4MEY\xae\x99\xcff\xbc>\x193_5[\xdb\xdc8\xfdF$\xed\xa63\xb2\ +\xe9Q\x8fv8\x1c\xf1\xf0\xd1\xb7<\xff\xf9\x07\xc6\xef^ g\xef\x88\x12\x881\x80\ +th\x15\xb1F@\x070\x01i;\x82hb\x0be\x08\xb4MMY\xae9\x1dOY\xacj\x8a*\xf4\xe7\ +\x19@\xe9>\xc5\xbfGV\xb9T\x8d\x8b5i\xc5G\x9f|\xc1\xb5\x1b\xb7\x99\x8e\xdf0\ +\x9d\xce\xa8\xab\x8a\xaaX3\xda_\xb33\xdc%\xcb\x07x\x9f\xfc$\xc5\x88\x8e\xb6m\ +Y\xae\n\x8a\xaa\xa3\xaa#A6\xc7\x95\x8b}\xb7\xe1\xe9*G\xa4w\xda\x88\xa4\xd3vZ\ +{6\xed\xee\xee3\x1c\xeeQUk\xca\xd5\x9c\xa2)(N\xa7\x18=%\xf3)\x97jm\xd0\xda\ +\x111DQ\x84\xa8{\x9d\xe8o\x05\x97(\xbd\xe1\xc3Ue\x15\x91\xbe\xec\xe9,\xaat@\ +\x07\x8d(\x90\x18\x90\x18\x89Qp.\xc3\x1c|\x90\xfe\x97\x986\x11!\x00A\x04\ti\ +\xd3\xcd\xe6\xdb\x86\xf7\xd3\xa1\xd4\xa5\x1f8\xa4\x7f_\xdc\x92\xe2\x8f\xf1C\ +\xcd\xff\x01,2\x98\xdb\x10\x8a7\xe1\x00\x00\x00\x00IEND\xaeB`\x82' + +def get028Bitmap(): + return wxBitmapFromImage(get028Image()) + +def get028Image(): + stream = cStringIO.StringIO(get028Data()) + return wxImageFromStream(stream) + +index.append('028') +catalog['028'] = ImageClass() +catalog['028'].getData = get028Data +catalog['028'].getImage = get028Image +catalog['028'].getBitmap = get028Bitmap + + +#---------------------------------------------------------------------- +def get029Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08\ +\rIDATx\x9c\xcd\x98[\x8f\xe3T\x16\x85\xbfs\xb5\x93\xd4\x8d\xee\xeaVSCI\xd3\ +\x05\x08!\xb5@\x08\x1e\x19\xfe\xf2\xfc\x81y\x9a\xf7~\x03!.\x12jA\xf7LU%\xce\ +\xd5w\xfb\xecy8\x8e\x934\xf3\x038R*)\'\xf2Y\xdek\xaf\xb5\xb6\xad\x00\xe1/\ +\xb0,\xc0\x17_\xff\x03\xef\x13\x9c\xf3\x18k1\xda\xa0\xb4A)\x85\x88p\x82U\xf6\ +or8 \xea\xe8K\xc5\xff]\xea\xf4\xa3\x0c\x7fE\x84\x7f\xff\xeb\x9f\x11\x88\xf7\ +\ti:\xc5\'\xe9\x08F\xef\x81 \x82\x04\x08\xa1\xa5m*\xba\xb6\xa4kj\xda\xb6\ +\xa2o\x1b\xfa\xbe\'\x04@\x1b\x9cK\xf0\xe9\x94\xe9\xec\x12\xe7\x93\xb8\xb1RG \ +T\x84\xab@\x82\x10\xa4?T\xc49\x8fOR\xd2t\x82KR\xac\xf5\x18\xad\xf7\xd0\xe9\ +\xda\x9a\xb6\xc9\t]\xce\xc4+\xdct\x86R\xe7\x08\xd0\xf7\x1d]\xdbQ75uUQ\x149\ +\xaby\xc6\xe2\xfe\x0f\xce\xaf\xaeyr\xfd!\xb3\xf3\xcb\x03\x0c\xb5\x87\xa3\x10\ +\t\x84\x10\x0e@\x8c\xb58\xe7qI\x8a\xf7CU\x8c\x01\x14M\xb9\xc2Prv\x912\x99>!\ +\xf5)\xd6\x19\x00B/4mM\xd344uEQ\x96\xe4yA\xbe\xdb\xb0\xdelX-\xde\xb1x|\xc7\ +\x8b\x9b;n\xff\xfe\x19JG\x00\xa8\x08H$\xd0wG\x151\xda`\xac\xc5Z\x1f\x019\x1f\ +7j\xb6\xcc&\x8a\xab\xab\x8f\xb8\xbc\xb8`6;#\x9dL\xd0Z\x11\xfa\x9e\xa6mh\xea\ +\x86\xaa*)\xca\x922\xcf\xd9\xeev\xec\xa6\x13|\x92\xe0\x9dc\xb9\xcc\xf8\xe5\ +\xc7\xd7\xec\xb6+>\xfd\xfc+&\xd3\xb3\x08\x04\x05"(}\x04Di\x83\xd6\x06\xa3\ +\xf5P\t\xa0\xdbqy\x91\xf0\xec\xfa#\x9e?\x7f\xce\xf5\xf53..\xcf\xb1\xc6P\xd75\ +EQP\x959EQQV)i\x92Rx\x8f\xf7\x1e\xef\x1d\xceZ\x8c\xb6(\xa5\x08!\xf0\xfb\x9b\ +\x9f\xa8\xaa\x92/\xbe\xfe\x96\xe9\xf4|\x10B@\xf7\xfa\x08\x88R\xb1\xa1\x06\ +\xfeB\xb3\xe5\xf2"\xe1\xe6\xe6o\xdc\xde\xderw\xf7\x92\x9b\x0fo\x10\tl6[V\xeb\ +e\xec\x8d\xae\xc5\xf9@\x1fzB\x08\x08\x82R\xa0M\xbc\xa0\xf8\xd2h\xadQJ\x91=\ +\xbe\xe5\xe7\x1f^\xf3\xe57\xdf\xa1\x94\x06\xd4(8\x0b "\x83:\xa0)W\xcc&\x8ag\ +\xd7\x1fq{{\xcb\xabW\xaf\xf8\xf8\xee%}\xdfr\xff\xf0HY\xe6\x94EA]\xd5\xb4mK\ +\xd7\xb5\x88\x08\xd6Z\x92$Ak\x8d\xb5\xb1"\xde9\xac\xb58\xe7\xb0\xce\x91$\t\ +\x8f\xf7o\xf8\xed\xd7\xefy\xf9\xc9\xabA\x8dG\xd40H\xb4kk\x0c%WW\x91\x8e\xbb\ +\xbb\x97||\xf7\x12\x11a>\xcfX.\x97,\x97+v\xbb-UU\xd1\xb5\x1d\n\x85\xb5\x16=\ +\xd0\xba\xdf8n\xee\xb1\xce\xe1\xbc\xc7y\x8f\x1fD\xf0\xf0\xee\rO\xaf_pv~\x85\ +\x1c\xab\x06@\x02\xb4M\xce\xd9E\xca\xe5\xc5\x05\xd7\xd7\xcf\xb8\xf9\xf0\x86\ +\xbeo\x99\xcf3\xe6\xf39Y\x96\xb1\xddn\xa8\xeb\x9a\x10\x02J+4\x1a\x85Bk\x139\ +\xd7G\xb4\xecA\xd9\xf82:\xf6\xc3\xc3\xc3\x7f\x99?\xbce:\xbb$\x049\x05\x12B\ +\x1b}b\xfa\x84\xb3\xb33..\xcf\x11\t\xdc?<\xb2\\.\xc9\xb2\x8c\xcdfM]\xd7\xa31\ +\xedm2J2\xba\xa5R:6\xbe\xb5\x03E\x91&k\x1dJk\x82\x08]\xd7\xb1Z-\xa9\xaa\x1d\ +\xce\xa5G@\x04\xda\xa6b\xe2\x15\xa9OI\xd2\t\xd6\x186\x9b-e\x99\xb3\\\xae\xc6\ +J\x1cv\x97#\x83\x02\x91\x08\xc8\x180F#"\x04c\xb0\xd6`\x9d\xc3X\x0b\n\xfa>\ +\xd06-UU\x91o\xd7\\|\xe0O+\xd2\xb5%n:\xc3:\x83\xd6\x8a\xba\xaeY\xad\x97\x94E\ +\xc1n\xb7=\x051.\x19\x8f\xa9\xe3,Q\x83$m\x04h]\x871\x9a\x10\x84\xa6m\xa9\xaa\ +\x92]\xbe\xa3\xaes$<=R\rB\xd7\xd4(u\x1ei\xea{\x8a\xa2\xa0\xef;\xea\xaa\xa6\ +\xaa\xaa\xd8\x13c%\xc6-9^J\xed\xad@\x0f\x14E\x17ub1\xc6"Ah\xda\x86"/9?\xbf\ +\xa0z\xcc\x08\xf2^\xb3\xb6m\x85\x10m\xbbm\x1b\xaa2\xa7\xeb\xda(\xd1\xb6Ciu\ +\xb4\xf9\x9fSv\x0f"VGa\x8c\xc2\x183\x80R#\x90Y\xdd0\x9b\xed\x98\xcd\xa6,\x16\ +\x8b!\xdd\x8f\xe4\x1bS\xb4\xa3ik\xea\xba\xa1(*\x9c\x0ft]\x1bUA\x0cAu\xba\xff\ +\x08\xe2@\x91B\xebhbz\x90\xb3R\n\x1b\x1c"BUM\x98\xa4\x13\xd2t\x8as\x03w#\x10\ +Q\xf4}O\xdb\xb4\xec\xf2\x82\xfb\xc7\x8cm\xd1\xc6\x06\x13\xc1\x18\x836\x06\ +\x85\x1e\x1c\xf8\x14\xcd\xf3\'g$\x89\x1b\x1dZk\x85\xd2&f\x98\xb1Xc\x10\xa2q&\ +I\x82K\x921\xd3\xf6D\x1f\xc9\x971\xcaw\xbb\x1d]\x0f\xd6Y\xb4\xb617\x86+C\xe9\ +\x13\xe9\x02\x04a\xa4 \x82\xd0\xd8\xbd\xb9\r\xd2\x05!\xf4!J\xdaX\x8c5\x18\ +\xfd~E\x10\xd0\x86\xba\xaa\xa8\xaa\n\x9f\x94(e\x08!\xc1:\x89y\x11\x02h\x13\ +\xc7\x1au\x98+"5\x87Jh\xb3\xaf\x84\x89\x9b:\x8f\xb5v\xe8\xc3\x1e\xad5\xe8\ +\xd8g\xdaZ\xc2)\x10\x85s\teYP\x94\x05\xce\xa7(m\x10\x11\x94R\xf4\xd6\xa2\x94\ +\xc6\x0cW}\xdc\xac\x7f\x02a\xcch\xf5\xd6Y\x9c\x8b\x15\t\x12\x9d8 \x84 q\x0eQ\ +#!\x07j|:e5\xcf\x98\xe6;\x12\x9f\xa0\x94F\x04\xb4\x89\xb4\xe8#I\xeei\x88\xff\ +\xeb8\xe7\x0e\xb3\xae1&\xf2?d\x8b\xf3\x1ek,m\xd7!!\xd0w\x1d]\xdb\xd0\xb6-\ +\x82~_50\x9d]\xb2\xb8\xff\x83\xedn\x8bu>\xf6\x82R\x87\xdc\xd0\x06m\xec\x9e\ +\xd2\x11\x84\xd2\n\xa3M\xcc\x92}_xO\xe2\x13\x924\xc19\x87\x08\xf4}O=8jYU\xec\ +\xf2\x02\xc1\xfc\xb9"\xce\'\x9c_]\xb3Z\xbc\xc3\x1e\xeb\xdf\x1a\x8cq\x83r,\ +\xc6h\xc0\x9c\xc8t\x8cz\xeb\xb0\xce\xe2\x9d\x1fAhm\xe8\xba6\x0eSy1\x8c\x92;\ +\x9a6\x80\xd2\xef7k\\O\xae?d\xf1\xf8\x8e\xf5z\x05\x1cx\xdf\xd3c\xad\xa37\x86\ +8\xce\x0e\xd4\x8c\xbd\xe0\x06I\xc6\x8a\xecA\x84\x10(\x8b\x8a\xedv\xc7f\xbbf\ +\xbb\xd9\xb0\xc8\x964\xdd\x89\x03\x1c\x80(\xa5\x98\x9d_\xf2\xe2\xe6\x8e_~|M\ +\x1f\xf6\x91nq\xd6\xe3l\x1cr\xb4\xb1Xk\x111q\x1aC\rR\x8d\xdf[\xeb\xb0\x03\ +\x85]\xd7R\x16\x15\xab\xf5\x9a,\xcb\xc8\xb2%\xd9rA^\xc6\xfe8\xce({\xec\x07\ +\x00\xb7\x7f\xff\x8c\xddv\xc5\xefo~\x8a\x8e\xe8\x1c\xce\'8\xef\xc6\x14\xb5&\ +\x02\x0c6\x0c\xe2\xdf+\t\x82\x04\xda\xae\x8b=Q\xd7l\xb7;\xb2,\xce3\x8b\xf9#\ +\xf7\x0f\x19M\x1bb0\xaa\x91\x99Sj@\xa1\xb4\xe2\xd3\xcf\xbf\xa2\xaaJ\xb2\xc7\ +\xb7$>\xc1;\x8f5\xd1\xa4\x8c\xd1\x18\xad\x869\x14\xb4\xd24uMU\xd9\xc1\'\xe2\ +\xb0\\7-E^\xb0\xd9\xae\xc9\xb2%\x8b\xf9#o\xffsOQ\xf5\xb17\xc6\\z\x9f\x9a\xe1\ +\xa0B1\x99\x9e\xf1\xc5\xd7\xdf\xf2\xf3\x0f\xafy\xbc\x7f\x83\xb5f\xc8\x99\xe8\ +\x19\n\x19\xee\xd7\x02\na\xb3Y\xd3\xb5u\xec\t\x84\xbe\xeb\xa8\xca\x8a\xbc(\ +\xd8n6d\xcb\x05\xf7\x0f\xd9\x08Bq\x08\xc8\x13\x8b?\x14V\xedc\x94\xe9\xf4\x9c\ +/\xbf\xf9\x8e\xdf~\xfd\x9e\x87wo\x10y \xf4\x81\xd0wt]C\xdfu\xf4]C\xe8j\x1e\ +\x1eZR\xefA+B\x10\xba\xb6\xa1\xac*\xf2\xdd\x8eE\xb6$/\xdbQ%\xd1\x90\xf58\xb3\ +\x9c4\xab\x1cU\xe3\xf0\x1eU\xf1\xf2\x93W<\xbd~\xc1\xfc\xe1-\xeb\xf5\x92\xba\ +\xae\xb8(\x0b\xce\xcer\xa6\xd3\ti:a\xb3N\xb0\xce\x02\xd11\xdb6\x86g\xd3\x06\ +\x9a\x0e\x84acu8\xefx?|\xda#\x82\x04A$ \x12\xe2\x98/\x81}7\x9d\x9d_1\x9d]RU;\ +\xf2\xed\x9a\xba\xce\xa9\xe6\x19ZK\x94\xab\xf3\x18m\xd1\xd6\x82\xb2\xd111\ +\xb1\x17\xc6J\xefk\x7f\xfaX\xe0\xc4YE\xe2]y\x08\xf1^T\xe9\x1e\xddkD\x81\x84\ +\x1e\t\x81\x10\x04\xe7R.>\xf0HxJ\x90\x10O"\xc3\x03\n\x911\xc0\xf6\'\xdfKB\r\ +\xeaP\xea\xe8\x01\x87\x0c\xbf\x0bcS\xfc5\x1e\xd4\xfc\x0f`\xfc9\x8a\xcf\x1b\ +\xf5\x97\x00\x00\x00\x00IEND\xaeB`\x82' + +def get029Bitmap(): + return wxBitmapFromImage(get029Image()) + +def get029Image(): + stream = cStringIO.StringIO(get029Data()) + return wxImageFromStream(stream) + +index.append('029') +catalog['029'] = ImageClass() +catalog['029'].getData = get029Data +catalog['029'].getImage = get029Image +catalog['029'].getBitmap = get029Bitmap + + +#---------------------------------------------------------------------- +def get030Data(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\xabIDATx\x9c\xcd\x98\xddn\xdb\xc6\x16\x85\xbf=3$%YB\x0c9i\x1d\xb7hR$h\x91\ +\x83\xa2(\xda^\xf6\xf4\x95\xcf\x0b\x9c\xabs[\xf42\x17)\n\xa4H\x9c6\xfeQD\xc9\ +\xe2\xffp\xe6\\\xccP\xa2\xdc<@)P\xb4i\x8b\xb3\xb8\xd7\xdakmJ\x00\xcf?`3\x00\ +\xdf\xfe\xf0o\xd24#IR\xb41h\xa5\x11\xa5\x11\x11\xbc\xf7\x1ca\xf5\xc3\xc1\x1f\ +Nx\x19\xfdQ\xf8\xe8&\xc7?\xfa\xf8\xee\xbd\xe7\x7f\xff\xfdO\x00\x92\xa6\x19\ +\x93\xc9\x8c4\x9b\xec\xc1\xa8\x01\x08\x1e\xbc\xc7;\xe8\xfb\x8e\xb6)\xe9\xda\ +\x8a\xb6\xa9\xe9\xba\x06k\x1b\x9cu\xf4\xde\xa3\x95!I\'d\xd3\x19\xb3\xf9)i\ +\x9a\x85\x85EF $\xc0\x15\xf0\xce\xe3|\x7f\xa8H\x92\xa4\xa4\xd9\x84\xc9dJ\x92\ +M0&E+5@\xa7\xebj\x9aj\x87mv\x18\x05\xd9\xc9\x04\x99O\xc1\x83\xed{\xac\xed\ +\xe8\xda\x96\xa6\xa9\xa9\xeb\x8a\xd5\xd5\x8a\x9b\xabK\x1e\x9c>d\xf9\xe8\x82\ +\xf9\xe2\xc1\x01\x86\x0cp\x04\xef\x1d\xce\xb9\x03\x10m\x0cI\x92\x92d\x13\xd2\ +4VEk@(\x8b5}[p2K8[^\x90&\tZ\x1b<\x1eg{:\xdb\xd1\xb6-m\xdbR\xd7\x15UUR\x16\ +\x05Eq\xc7\xea\xe6\x1d\xb7\xd7\x7f\xf2\xf8\xf3g|\xf1\xf4kD\x05\x00H\x00\xe4\ +\xbd\xa3\xb7\xa3\x8ah\xa5\xd1\xc6`L\x1a\x00%)\x1eO[m\xc8t\xcf\xa3\xc7\xe7\ +\xcc\x17\x0bf\xd3\x19i\x16\xcam\xad\xa5mZ\xda\xb6\xa1nj\x9a\xaa\xa6\xaaK\xea\ +r\xcad2%\xcdR\xb46l79\xbf\xbd\xfc\x85\xdd\xdd\x9a\xaf^|\xcft6\x0f@\x10\xf0\ +\x1eQ# \xa24Ji\xb4Rh\xad\xf1xl\xbde61\x9c-?\xe5\xec\xe1#\xce\x96KN\xe6\xe1"U\ +UQ\x16;\xca\xb2\xa2\xae+\x92:\xc5\x98\x04\x93\x18\x8cI\xd0\x89Ak\x8dR\n\x11\ +\xc19\xc7\xdb\xd7\xafh\xea\x9ao\x7f\xf8\x89\xd9l\x11\x1b\xc1\xa1z5\x02"\x12\ +\x04\x15\xf9k\xab\r\xb3\x89\xe1\xfc\xfc1\x17\x17\x9f\xf1\xe4\xc9S\xce\xcf\ +\xcf\xe9\xfb\x9e\xd5\x87\x15\xbd\xed\xa9uXLk\x8d1\x86,\xcd\x82\xa0DP\xf1\x86\ +\xb4Rh\x15\x00)%\xdc^\xbf\xe5\xd5\xcb_\xf9\xee\xc7\x9f\x11Q\x80\xec\x1b\xce\ +\x00x\xefcw@Y\xac\xc9t\xcf\xd9\xf2S..>\xe3\xc5\x8b\x7f\xf1\xec\xf9s\xba\xb6\ +\xe5\xcd\x9b7l7[v\xc5\x8e\xba\xaah\xdb\x16k-\xde{\x94\xd6\xa4i\x86\x12\x851\ +\x06c\x0cZ\'\xc1\x0e\x8c!1\tI\x9aq\xfd\xd7\x1f\xbc\xfe}\xc9\x97\xcf\xbf\x89\ +\xdd8\xa2\x86\xd8\xa2]W\xd3\xb7\x05\x8f\x1e\x9fs\xf6\xf0\x11O\x9e<\xe5\xd9\ +\xf3\xe7x\xe7\xb8\xbc\xbc\xe4\xfd\xd5{\xf2uNY\x164M\x83s="\x82\xd6\x06\xa5\\\ +\xac\x90\xc1\xd8 \xe8\x01\x901\tI\x92b\x92\x04\xad5\xef\xdf\xbdf\xf9\xf0\x9c\ +\xc5\xe2\x14?\xee\x1a\x00\xef\xa0\xa9v\x9c\xcc\x12\xe6\x8b\x05g\xcb%\xe7\xe7\ +\xe7tm\xcb\xe5\xe5%\xef\xde\xbdc\x9d\xaf)\x8b\x82\xaek\xa3\x17(\xc0\xa35x\ +\xafP\xca#\x91\x1a\x15i\xd3\x11L\x92$Q3p{{\xc3\xed\xd5%\'\'\x0fp\xce\x1f\x03\ +\xe9\xfb\x0e\xdb\xec8[^0\x9b\xce8\x99\xcf\xe9\xfb\x9e7o\xde\xf0\xfe\xea=\xeb\ +|M\xb1\xdbE*\xa2\xc1\x8c\x8d3\xeal\x10\xe7X?Z\x07zD\x14x\xe8\xfb\x9e\xedvEU\ +\xefH\x93\xc9\x08\x88\x87\xb6)1\n\xd2$\t-*\xc2\xea\xc3\x8a\xedf\x1b\xe8(\n\ +\xac\xb5q\xd1`\xd122\xec\x11"\xb4(<>tb\xa4K\xeb\x00\xc4{\x8f\xb5\x1dM]\xb3\ +\xdb\xe6\x9c.?9\xaeH\xd7Vd\'\x13\xb4\x0e\xa7\xaa\xaa\xa2\xb7=\xbbbGYF:|4\xa2\ +AV\x03\x80\xc1\xc2C\xd3\x1c:P\x85%\x0e\x91\x11\xaa\xd1\xb6\reY\xd2\xd4\xc5\ +\xb1F<\x9e\xb6\xa9\x91\xf94x\x88\xb5\x94\xc5\x8eZ\x1b\xea\xaa\xa2i\x9a\xb8\ +\xa4\x0fa5 \x19\x83\xe0\x00`\xa0H\x89\n\x15\xf2\xa1\xd5E\xc0\xda\x9e\xb6\xa9\ +\x99\xcf\x17\xac\xf3\x1c\xe7\xef\x89\xb5\xeb\x1a\xf0\xe0lO\xdb\xb4\x94e\x85\ +\xd6\x9a\xb6mcw\xa8\x11\x11\x1f\x01\xb1\x7f\x0bI\xa2$\x08V)AP8\x13\x96\xb2\ +\xd6\xd2\xd43\xa6\xb3\x19y\xbe\x8e\xe9>j_k\x1bl?dGC]\x07 \xd6\xda\x98\x9e~\ +\xbc\xe4\x11\x88\xf1&"\x88R\xd1\xc4Thm\x91\xfd\x80\xd0[K6\x99\x90e\x13\x8c1p\ +\x04\xc4\x0b\xce:l\x0c\xb0\xba\xa9\xa3m\x1b\xbc\xf7Ql\xc3R\xfeo dH\xd5Q\xe7\ +\x88\xc8>2\x02-\xe1\\\xd2u1\xcfB$\x0c\xb7wh_\xef\xe9b\x8a6U\x8d1\tY\x9a\xc5\ +\xf2:\xbcWGs\xc5\xa86\x07\x10\xf1\xa5DPJ\xa3\xb4\xc1h\x8dI\x12 \x0cY\x07\xd7\ +\r;\xf7\xa9\xd1\xca\xec\xe7\x89\xaa.1\x89\x01<i\x9a\xc5\x00\xf3\x07 ~\xd4\ +\x19\x8c@\x8ch\xd1Z\xefA\x18c\xf6!7\x84!\x02Z\xa7\xf75"$\xe9d?O\xd4\xe5\x14c\ +\x92\x10`\xa2\xa2\x07\x0c\xc18\xd00\xd2\xc4\x00$\x02\xf8\x98\xab\x82`m\x0f\ +\x08\xce{\\\xdf#zO\xc8\x81\x9al:cu\xb5\xa2,\n&\x93):1(\x15\x03\xcc\x06{v\xce\ +\xa1E\xfdm\xf1\xd0\xaa\x07k7\xc6`\x92\x84$\x89\x19\x13\xb5&\x02\xce9l\xd7\ +\xd1\xd9\x0eQ\xe6~E`6?\xe5\xe6\xea\x92\xa2\xb8\x8bC\xcd\xb1E\x0fw\xe9\xf1{\ +\xafP\xa2\xf63\xc7\xc1E\x03\x1di\x9a\x86\x81<MQ"t]\x17\x86\xa9\xb6\xa1m\x1a\ +\xaa\xaaF\xd4G*\x92\xa6\x19\x0fN\x1f\xb2\xbay\x17\xd3TE\xd5\'\x11\x8c\x8e\ +\xfcjP\x8c|"\xfc\xdf L\x1d\xa9\x18@\x18\xadq.\x98d\xd34\xd4UEY\x15\xd8\xde\ +\xef-\xff\x08\x08\xc0\xf2\xd1\x05\xb7\xd7\x7f\xb2\xdd\xe4\xb1\xfd\x0e<\xef\ +\x8fZ\x87\x8f\x89\xa0\x94D\xf5\x1f\x0b3I\xd2=\x08\x80\xaek\xc3TW\x86Y6\xcf78\ +\xa7b\x04\xdc\xab\x88\x880_<\xe0\xf1\xe7\xcf\xf8\xed\xe5/8\xe7\xc2\xdd\xc6yb\ +\xdcr\xda\x18\xb47\x08\n%\xb2\xa7c\x10\xa61\xc1\xc4\x9c\xf3t]KY\x16\xdc\xddm\ +\xd8nr6yN\xd3\xf5\xa0\xc2p>4\xa292\x04\xe0\x8b\xa7_\xb3\xbb[\xf3\xf6\xf5+\ +\x94\x920YE\x03\xd2\x83^\xa2\x1e\x9c1q.\x91xQ\xd9\xfb\xc5\xa0\x89\xaa\xaa\ +\xb8\xbb\xdb\x90\xe7k\xd6\xeb\x15\x1f\xd6[\\/\xc4Iq\xb0\x91cj@\x10%|\xf5\xe2\ +{\x9a\xba\xe6\xf6\xfa-I\x9aa\xf6C\xcd\xb0\x1f\xccU"\x10\xef=\xde;\xac\xedc\ +\xb8\x05M\x94e\xc1v\x93\xb3^\xaf\xb8\xbeY\xd1\xf6\x1eQjp\xc1{\x15\xe1`\xd3\ +\x820\x9d\xcd\xf9\xf6\x87\x9fx\xf5\xf2W\xae\xff\xfac\x9f\x9ca\xa2\xf4\xf4}\ +\x8f\xb5=\xd6ZzkI\xban\xa4\x9f0\x18\xb5m\x10fQ\xdc\xb1\xc9s>\xac\xb7\x01\x84\ +\xa8=x\xe2S\xdf\x1e\xc8!\xd2d\x18(\x98\xcd\x16|\xf7\xe3\xcf\xbc\xfe}\xc9\xfb\ +w\xaf\xb9\xbd\xbd\x89\x00\xba\xd8\x825M=#\x9bL\xf6^\xa1\x94\xc2y\x8f\xed:\ +\xda\xa6\xa1\xac\n\xf2|C\xd3\xf5\x91\x0e\x15SZ\xed\xd3\xfcH\xac~T\x8d\xc3Q\ +\x10Q|\xf9\xfc\x1b\x96\x0f\xcf\xb9\xbd\xbad\xbb]\xd1\xd45eY2\x9f/\x98\xcefd\ +\xd9$\xe8G\x1b\x10p1\xc1\xab\xaa\xc6\xf6>v\x87\x8e\x9a8\\w\x1c\x17#j<\xde\ +\x05\x8e\xbdwa\xcc\xf7n\xaf\xa6\xc5\xe2\x94\x93\x93\x07T\xf5\x8e\xdd6\xa7\ +\xa9\x0b\xd6yN\x9e\xaf\xa3\x8b\x0e\x1d\x95"\xda *\xee2\xb4\xe8\xe1\x99\xe9\ +\xfe\xd7\x02G>\xe2}x*w.<\x8b\x8a\xeaQ\xbd\xc2\x0bx\xd7\xe3\x9d\xc39O\x9aL8]~\ +\x12~\xf7.\\\xc4\xc71\xc9\xfb\xfdE\xef\x1f%v\xc7~\xcc\xe4\xa07\xdc^\x14\xff\ +\x8c/j\xfe\x0f\xd8\x1d\x10\x98\x84\xbe&\x9c\x00\x00\x00\x00IEND\xaeB`\x82' + +def get030Bitmap(): + return wxBitmapFromImage(get030Image()) + +def get030Image(): + stream = cStringIO.StringIO(get030Data()) + return wxImageFromStream(stream) + +index.append('030') +catalog['030'] = ImageClass() +catalog['030'].getData = get030Data +catalog['030'].getImage = get030Image +catalog['030'].getBitmap = get030Bitmap + + +#---------------------------------------------------------------------- +def getecloudsData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x02@\x00\x00\x000\x08\x06\x00\ +\x00\x00\xf9\'\xc5\xde\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ + \x00IDATx\x9c\xec\xbd_\x8cf\xc9u\xd8\xf7\xeb\xee\xea\xee33wfjf\xbf\xdd\xbd\ +\xcb\xfd\xb4\xfcH5\xc9&=\xb6F6e\x0f\xe0\xb5\xb2N\x14\x87qdX\x01\x04D\x08\x04\ +\xc4\x0fy\x08\xf2\xe4G?&oF\xfc\xa2\x87 \xf0\x83\x03\x08\x89\x1f(\xc0\x0fr $\ +\x1b\x98A\x18\x84A\xd6\x0e\x15\x8f\x95\x11\xd5\x14G\xe4G\xb2\xb9{w\xf9\xedL\ +\xcd\xcc\x9d\xee\xd3\xdd\xd5\xddy8Uu\xeb~\xfdg\xd6\xe0\xae\x05%[\xc0L\x7f\ +\xff\xee\xbd\xa7N\x9d:\xff\xcf\xa9\x95\xd5Uw\xca\xa7\xe3\xd3\xf1\xe9\xf8t|:>\ +\x1d\x9f\x8eO\xc7\xff\x8f\xc6\xea\x9f6\x00\x9f\x8eO\xc7\xa7\xe3\xd3\xf1\xe9\ +\xf8t|:>\x1d\xff\xa6\x87\xcb/\xfe\xfeo\xfd\xd6\x9f&\x1c\xff\xda\xe3\xef\xfd\ +\xdd\xbf;z\xff)\xfc\xfff\xc7\xa7\xf0\xff\xe9\x8eO\xe1\xff\xd3\x1d\x9f\xc2\ +\xff\xa7;>\x85\xffOw\xfc\x7f\x05~W\x7f\xf8\xce\\i[\x8f\xf6J\xb7\x08\x84\x10\ +\x00\x10\x11\xb4W"\xe0\x1c\xc4\xb8t\xa1\x03\xfbr\xe9o\xfd=\xc3w1\xda}\x9c\ +\x13bT\x9c\x13\xfbY\xfa]\xfe<\xbfvK\xd7\xbf\xb5\xed\xcf\x9d\xd4;se:m\xe9C\ +\xb8\x10\xfe\x1a\xdc\x02^\x05\xd3\x19\xf8_0\'\xe7d\xc0E\x9a\x13p\x06~q\xa0\ +\x11\x1c\xca\x9b\xdb\xed\x85\xf0\xb7\xad\xa7_t\x84^Y\x84\xe1\x1eQ\xb5\x80QPq\ +\x11\xbc\xd4?:\xfb\xb7\xc6\xffy88\x0f\xff\x19\x86\x17\xe1\x7f\xd6z\xc22\xfd8\ +A\xa3\x12\xe3\xd9k\xdc2\\y\x0e\xe7-\x96[\xbev\xa0\x9f\xfc\x95\x13\xc1\xa1D\ +\xaa\xef\xf2Z\xa5\xcf/\x83\xff\xcf2\xfd\x7f{\x1e\x98\xb6m\xc1\xbf\x86\x80\ +\x92\xf0_\xd1\xcfEtT>?\x0f\xfe\xfa\xa2\xfcq\x86\xbb\xfa\x9dpJtW\xce\xa1\x7f\ +\xa3\x01\xb8\x9c~\xda\xd6s\x1c\xde\xe3\xc7ae\x8c\x7f=K?\xe7\xed\xe32.\xa0\ +\x99z\x1e5\xfd\xe7\xd18\x83\x1f8C?y\\\x86\xffv:;\x9f\xff\xa8\x8ep|\xdeZd\xda\ +\x18\xcdey]\x96F\xa6\xfd\xc8\x8b\xe9\xe7\xa3\xd0\xffg&\xc2\x93^\xf90\xe8\x85\ +\xf8?\x0f\xa5\xd5\x14.\xdc\x0f\xf5<b\xb4\xfb\x8e\xaeCq2\xc0vf\x0eQ\xc1]\x0e\ +\xff\xb4\xf5\xf4\xbd\x12\x16\xef\xd3-\xf6\x8d&\xcf\xa1\x9fsI\xfa2\xde\xb9\ +\xfcy\xbe\xc4-\xcd!\xf1\xfa\xcc\x7f\xc0\x9e_\xaf\xc9\xbf6\xffqB\xafz\xee5\ +\xa3\xb9$\xb8F\xb2lyn\xd5\xbe\x18\xed\xdf\xea{\x97\xd6%\xf3\xfbFl>y\xbc\x08\ +\xff\xcfC\xe0\xbdK\xe8g\x04s\xf5A\x86\xfb\x8c\x1c\xa8>\xcb\xd78Y\xe2\x9d\xf5\ +T\xd3w\xf9\xc7\x99\xce\xce\xa3\xff\xd1\xfa\xb7\x1eV\xa3\xa6\xcd\xaa\x05\x19\ +\xe2\x00I\x8bp\x0eRG\x80\xbb\xf3\xee<\xfelD\xf8K\x0cf\x10\x06y\x820\x9b\xb5\ +\xb4\x13O\xb7\x08\xf4\xe1bB\xf89\xbf\xcaQTb\x1f\x0c\xd9K\xf0g!p\x06\xbcK\xe0\ +?wn#8/\x04\x07\xe7\x04\x11\xe1\x8dVx\xa5m\xe9\xba@\xdf_\x0c\xbfo\x84\x06\xa5\ +\x8b\xc2j|^\x9e\xd94\x82\x82\t\x90e\x06\x99\xe1\\\x9eS=\xc9\xa5\xbf5\xfe\xcb\ +\xbd\xaa\xf99\x8c\xd1,\xe3\x7f\xb1\x08<ND}\x11\xfc8!T\xf87\x02\x04TP\xce\xa7\ +\x9fA \x9d\xf3\xdd\xf2\xeb\x02\xb3\xcdA\xdc\xd9\xef\xeb\xcd*"L[\xcfd\xe2\t!\ +\x10.\xa1\x9f?\xeb\xf4?\xf1\xde\xe8$\xc1\xaf\t~\'\x82@a\xa2#FR\xc1{\xa10Xz\ +\x7fFq\xa8\xbe\xcb\xcaCV\x842\xfc\x13\xefy\xb4\xe8xt1\xf90\xf1\x1e\x01vu\xc5\ +\x00\xcc\xf4c\x1coL?\xcb\x8a\xe8G\xc1\x7f\xf5\xf9\xb2\xf2\xbf\x0c\x7f\xfd\ +\xddG\xc5\xffk\xfe*G\xaa\x03\xb3\xaf\xe1OJ\xf4\x19\xb4\x9eQ*\xcf\xc2{.)\xd5k\ +P\xfd\xe62\xfaY,\x02a\xd1]\x08\xbf\xf7\xc2\x86\x13\x0e4\x80\xee\x97\xcf%\xdd\ +\\\x19-K\xfd\xf8\xa5\x17\xd5\xebj]j\x18\xc74_\x9e\x94.1\xda\x05\xdb+\x19\xfe\ +\x0f\xba\x8e\xfd\x17\xf0O\x87\xd1\x7f\x1f7\x81\xfdr\x0f"g\xf8\xcfh\xdd3-\x95\ +\x8dq\xce\x9c\xd2\xfbe\xfa_\xde\xbf5\x8b\x10\x11>?\xf5\xc6\xff_@?\xbe\x11$*!\ +\xf3\x99\x04K\xd3\x18n4\xed\xdf\xf5\xf8\x98#wk\xac\xb4\x9c\x07\xcf%<h\x99~\ +\xeaE-\x8aER\x1e\xa6\xd3\x96\xb6}1\xfd\xfbFpQ\xd9\x8f\x14\xfa\x17Ir\x10E\xb3\ +\x9cI\x8aH\rO\xbdw\xcf\x93\x03\x83l\xaa\xe79\xc8\xe0\xda\xa84\xe5)\xd1\x98\ +\x83\xd9%\xf0\x8fP\xd4-\x140\xcfC\x8c\xa6\xfd\xb9\xa8\x80\xc7I~\r\xaeB\x96\ +\xc00\xb1eB\x88j\xdfW\xefkM\x18L\xbb\xad\x19\x85F\xb5\xbfj\xc8\xdb\xde\x9aqg\ +\xab\xb5\x8d\xdczbT\x16\xf3\xf9\xb9\x0b\xf0\xe3\xc5\x1e\x1a\xf7\xe8{-\xdaky\ +\x8e$\x0fL\xc5@\x05%:\xd3\x06\xa3\xea\xd9\r\xe1\xce*\x07\xc3\xfcl\xa3-o\x86\ +\xa2\xf5sJ\x04\xb6f-_\xd8j\xb9\xe6`k\xea\x89\x11\xba\x87;\xe7\xc2\x1f\x82\ +\x1a\x93\xea!\xc6\xa3\xc1K\x93\xb5\xf2~<\xa7\xf3\x98x\x8d\xdb\xf3p\xbe\xfc\ +\xda.\xa2Z\xcfS"f\xc17\x02[[3\xeely\x9c\x93\x84\x7fX\xcc/\x82?\xb0Xt\xf4AQ\ +\xa8`\x15\xc3\x7ff^\x89`\x1b\x8c6.\x1b\xcb\xf4\x02\x89f\x92\x92\x96\x99f\xed\ +a\xc8\x0cT\x9c0\x9bz\xbe\xbc=\xe3\xa6@\x8c-\xcf\xa3\xf2\xec\x02\xf8\xff\xac\ +\xd3\x7f\xb7P4\x064t(2b\x1e.\xd1\x7f-\x8cj\xfa9\x8fn\xec\x0b\xa8\x99\xe6\xe8\ +w\x0c\xdf\r\x96\x9a\xa6\xfb\xad N\xd9\xde\xda\xe6\xceVkBh\xd6\xa2\xaa\x17\ +\xd2O\xd7\xcd\x89H\xf1\\\x15a\xe3\xce\xd2O\x99W\xe5q\xbd\xc8\x03\x02i\x7f\ +\xcbx\xbe\xb5\xe7p\xd9j\x07\xb3|g[3\xeen\xb5\xf6\xbam\x891\\\x88\xff\x1f,N\ +\x88\xb13\xfe\x93\xe9\'\xc3\x9f\xf8E\xc6U\x865{\x86\xcf\xb7`\x861\xf6vV\x86\ +\xdc\xb2\xf2_\xd3\x96HE?\xc2l"<gv!\xfd\x87E`\x115\xf1\x9f\x83\xe1\xb9\x08\ +\xe2m]F\xfc3\xc1^\xe6\x00\x85\xde\xc7\xb0\x8f\xe7P\xc3)\xe7\xf0\xcfan\xc2\ +\x9d\xed\x19\xdb\xb3\x8c\x7f\xcf\xf3\xc8\x85\xf0\xf7} \x04\xca\xfe-(\x8dzn\ +\x14\xa0\xc6\xfd\x95\xf8\x18"\x1c\xc9\xads\xef\xbd\xbc\x7f\x07A{\xceo\x0b\ +\xff1\xfe\xf9\xd5\xed\x19\xa0lM[T/\xa6\x9f\xbe\x0ft\x0bF\xf4c8\x11cu\xc9(;\ +\x92[\x95!,e\xdf\x9d\xc7+\xf3oT\xb5\x18^1\x19y\xce\r\xcaa\xa6U\xe7\xecz\xe3C\ +\x03\xfd4\x02\xb3\x89\xd1\xf2\xc5\xf2+\xb0@\xe8C\x87\xea\x80\x1b\x87\xe2\x1a\ +\x8f\xf6\xc1`EF\x1e\xc0z\xef\xbe\x08\xe7\xf9\xf7\xf6}\xfd\xdb\xe1Y\xe4}\xec\ +\x84\xedY\xcb\xdd\xedY\xa1\xff\x08#\xfc\x8f\x1e\x1bz\xb3\\j$\xc6\x84<#x\x132\ +NL\xd3\xd3\xf4}&\x84e 3\xe23\xe3\x11\x0c\xd7fQT\x1a`Q\x99\xf3\xf6\xb1\x05\ +\x97F\xf0^8\xc0\x9e\xedP\xe29n\xeba\x01\x8c\xc0c\x16"\x11\x9cSz\x95\xe4\x86\ +\xa4\x085\x83\xbdr\x85-\xb9\xd4\xa0"(\xc7\x99E\x18\x104`23Q0\x02\xf2\x8d\xd0\ +zX\xcb\x04f\x0f\xba\x10\xfeE\x08#\xd7]\x1e\xaa\xa1\xb8\x86\xcf#\xf2\x11c\x8c\ +\xc3\\jfs\x9e\xbb\x1f\xcc\xe5\xafqe\xe4\xfa\xccp\x8a\x90\xf0/8ls\x88\x83\xc5\ +\x85\xf0\xdb3]\xd4\xd1<\xfb\xbc\xd9\x92\xe2b\nAz\x06\x98\xb7\xe2\xbc\x1bF\ +\x88ha\x92Y\xc11\xf4\x8c\xe7\xa3\xa3\xb9\xdaZH#L\'\x9e\xd3$\xf8ELyyv\x01\xfc\ +\x7f\xf6\xe9?\x9c\x8b\x9b\xbe7e\x16\x96\x84Q\x82\xed"\xa59\xc37\xa2\xb7\xb4&\ +.+\xa11)Zn\x98Wv\xc77\x8d\xd1\x8f\x19\x1e\xc6\x80\x1b\xb9\x98~B\x0fPyI\xd2>\ +\xe8{\xe5\xb6\x1c\x17\x1a\xd7\xc2<\xd3~\xcf\xc6NE\xc3\xb5B\xe6\x9c\x8c\xe6)E\ +1\x19po\x02+3\xe2\xbc\xce\x9eI\xc6?\xf6=\xe2/\x84\xbf\x0f\xe6]\x89\x99\xf9\'\ +\x18\xb4\x1f\xf6/\x0c\xfb3\xf3\x0b\xe7\x06:/J\xfc\xd2\xfade\xda\xc0\x951\x8e\ +\xd2\x18\xf4;\xbbO\x93\xf6o\xa1}1\x0f\xdbG\xa6\xff\x1a\x87\xf1\xb4\x08\xc8\ +\xac4h\xc2\x8b\xf1Y\x19\xc0\xd11\xcf\xcc\xf3\xa9\xffJ\xbdN\x19\xea\x8c\x8f\ +\xb4\xc6M#4\x8d\xc1\xaf\xd1\xf8\x91D\xbd\x10\xfe\xc5b\xe0\xff\xd9+b{p`G#\xa5\ +9\xfc\x08\xb7\xf8\x0e\x00\xa7\xceC\x0c\xacJ\xcb\xc9d\xfb\xcc\xbe\x88Q\x0b\ +\xff\x1a\xd1N6^8EY)\xf8\xcf\xfc\xa7\x9d\x08\xcf\xa3r\xad\xdaw\x17\x8d\x02\ +\x7fe\xbc;g\x9e\xe7\x12Fc\xbcW\xeb\xb1\xbc\x8f\xa9\xee%i>\xeb\xfa\x98\xb8\ +\xf8!h0\xbak^\xc7\xc9u\xb4ii\x9a\xda\xa0T\xa4\x11&\x13\xdb\xbf\x82\x94\xf4\ +\x82\x8bFH\x8a[\xcc\xf2+\xd1HT\x92\xec0\xba,Fc\xc6+I\x11]\x92\xb3\x19\xf6\ +\xb1\xd1U\xf1\xa6Z\x9b\xcd8H{\xa3\xe0\xbf\xf5\x89\x7f\x1a\xfd\x17#\xe4\xec\ +\xa5\xc9mU\x8db\xb5$\x86o\x0bk\x0c\xae0\xfe\xfafK\xcc\x1f\xd2f\xcf\x1b9\xbb\ +\xa5\xe2\xc0$a\xcc\xcc\xf2\xfd\xc5)\xd3\xb6e\xd2\x08kQy\xa2p\xf3\x05\x0bP[\ +\x0e\x9a\x14\x17M\xd6V=\xf1\xe8$q\xa9\xe5\xf9&\xc6\xe7d\xb4a\x97\xbd=\x83\ +\xf5&E0R\xb9\xf5\x1c\xc6p\xda\x89G\x1aO\x04\x9e\xc7\xe1^\x97\r\x01b%`m^\x02i\ +\x13\xc4X\xc1\t\x05\xde\xac\xf1\x9a\xa7KGs\x89Q\x0bS\xc9a\xb9\x8c0e\xa5R\xde\ +j\x1c\xc2$\xe1\xffH\x95\xe7\x027\xf3\xc6\xbf\x08\xff\xf9\xb9\xd5\\\x14\n\xed\ +D(\xd6\xf0 x\x0c\xc6\xac\x08\x917\x89\x13\xa2\x1b\xeb\x07#k\xb1\xfe\xc2\x8d\ +\xbf\xcb\xb45m=\x92$\xff\xf3\x08\xa8\xa6M~\x11\xfcKk\xf13\xd0\xbfMGm=\xfe\r\ +\xd2\xbf\x8bZ\x98I\x8d\xaa\xd0k\xb9wv\x19K\x93,\xc3%Z\xc9s8O\xe9/L\xb0R\xe2j\ +\xc5\xa7V8&\xadg\xd2\xd8\xef\x9fG\xc3\xe1e\x02\x00\xc0\xc5`\xde\xab\x0cx\x1a\ +\x8ft\xcd\xe0r\x82\xb8l\xc9\x8f\x85i\xac\x98\xa5\xc1I\xc1k\x11`\xf5\xa2U\x8c\ +\xda\x0c\xe1\x016\x11\xe13\x13\xc1\'\xfa\x7f\x82\x18\xfe\xcf\xe1\x1b\xf5\xa8\ +q\x9f\x951\x8d\xe0j\xfeQ\xbc\x97\x03\xbe2\xfd\xd6\xca\xfe\xa0(\r\xcaE\x1d\ +\x9e\x18\xe1\xcd\x8dC/\x8d\xe4\xfdk\xd7=Q\xe5Z\xc2\xdd\xc5\xc0\xe7<7\x9bg\ +\xe1C\x9ax\x92\xcb\x9eI\xa1\x0e\xfb\x92\x14\xb4B/\xb5\xd2\xe6\x96\xe8\xa2\ +\x0e\x7f0\xe0j\xa0A[\x87F,\x9f\xc47B\x9f\x8c\xaa\x18\xfd\x99\xf0\xfd\x18\xf7\ +c\xc5\xad(\x94N\xa0\x0f\x88\x13\x84g\xf4\x08+\xfd{\xec\xef\xfe\xdf\x88\x08\ +\x13\xefq",\xfaW8\x89\xcaj\xf7\x0e\'M\x0b~v\x86\xaf\x14\xe5\xb3\xdec\x11\xa2\ +\\)x\xc8\xe1\x97i\xebiD8\x8d\xf0\x1c\xb8\xe9^\xc0\x7f2\x9e\x96rpr\xfeg\xc6SL\ +x\xabq\x99=R\xf9\x1e\xf5>\x00 \xfc\x88\x18\xdeECW\x94@\x11\xa1q\xcf\xe9\xf59\ +\xa2\x8f\x88\xf2\x17\rv\xbb\xb0\xc0\x0f\xc6?r\x8a\xc3\x85\xf0\xc7\x0cS\x82U\ +\x06\xcf`M\x9c5\xef,\xf3\xa9\x0c\x80\x9c\xb38\xec\xe1\n?\x19\xff\x95\x81\x91\ +=c$\x051{]\xa7\xadG\x9c\xe1?\xc3\x7f&\xfd\xe3\xbc7\x8e\x1c\xef5K\xd4>\x1f\ +\xb4\xde\xe5\xa4\xcc\xc1RH\x1a62~\xdf\xc8\x88\xf1\xc5\xda\xcac \xac\x11\x9e\ +\\\n\xb7\xf4\xcau\xa7\xac\x89\xe7\t\xf0\xd2%\x044\x12\x96\t\xd1g~\x93\x99\ +\x13KL\xa4h\xf2\xe7\x08\xd98(;#.\x935V\x86\xb9\x96[9o\xd6\xab*W\x08\xac\x89\ +\'D\x984\x17\x82_6?\x9c#`3\xee\xd3\xeb\xc20\xb3\xc5\x1d\x95\x15}\xcc1\xb0\ +\x0e\xe06\xc1]\x1dY<2\xba\xe1\x00\x7f\x869[\xa5T\x8a\\\xc6\x7f\xc4<)\x13\x7f\ +1\xfe\x97\x99x\xbe\x87\x8dD\x98\x95\xd5T\xffVU\xd9\x08sN\xe2\x11\xb1\x7fNl\ +\xae\xb1\xd2LP\xb9uVp\xe5\xe7I\x05\xfb\xf2\xd4\xd2}{5\xe5\xaf\x11\xa1\xcf^\ +\x8b\x0b\xc6\xc7E\xff \x10~\x84v\xdf)J\xdcJ\xfb\x0b\\\xf3mQ8?\x11\xfa/\xf4\ +\xb3$l+\xc5-3\xef\x1c\xda\xcd8\xcct\xef\x92p\xab\x81[\r;\xec\xf5\x81\x8d\xa4\ +\xd8\x1c\xcbM\xd6\xfckc\xab\xbf\xc00\xc0\xb7\x1a-\x9fA\x92\xe0}\x82\xf0\xd2\ +\x0b\xe9\xdfC\\26\xb2\x10+\x9e\xc5\xf3\x85P\xb6\xf8\xf3W\x19\xaf\xd9\xf2\xc5\ +m\x0e\xd3\x92\xdb\x03/\x10Y\xda\xd6\x8as\x9e\x13\'Iq\x1c\xe6\xf8\xd2e\xfa[\ +\x16BK\xca\xe4(d\x9b\x18u\x0e\xa3\x16\xe5\xa6\xda\xdb\x85\xdf\xa4{\xd6\x86n\ +\x1d\xc6\xab\x85\xdeYX\xbc)\xbe\n\x8e@#\xc2s9\x87\x07,\xc1\x9f\r\xc3\xcc;c2\ +\xaa\xd0\xc0q\xbf\x8f\xeb\x17l\xb8c\xc4\xad\xd3\xeb\t"\x1b\x1c\xb8\x1b\x9c\ +\xc6#\x9c4\xc0j\to\x0c\x82\xba\xa6\x0b)\xefk/\x98\xc6%\xe58\xd1\xbf\xed_\x08\ +\x08~In,\x8f!\x9c\xa3g\xf6A6>\x94\xeb\xb8\x08\x87\xe1}\x9c\x13V\xc5s\xef\xde\ +=\xbc\xf7\xfc\xee\xef\xbd\x8dF\xe5\xc4\t\xab}\xc7\x86\x06trwH\xa2=\x8f\x07U\ +\x86Z\xde\x7f1*"5\xfcf\xbc>\xe1r\x038\xf3\x8e\xa2\x14\x17\x94e\xbe%\x03\xef\ +\xa8\xe9h\xa4\x08\x8d\xe5\xefJ\xff\x1e\xfb\x8b\x1fB\n?e#\xdc9\xa1m_\xe3\xce\ +\xf6\x97\xd8\xdd\xedx\xb0\xb3\x83\xeb?\x00\xffF\xba\x8f\xf1\x81\x90\xbc\xc7\ +\xce\x99\x87\xf6\x85\xf2+\x0ex\xcf\xc6V\x9d\xa3SB\xfe\x95\x11P\xf8+\x83r-\ +\xc9\xf3W\xf4\xa7\x84\xc7\x95\xb8O\x8cG\xa0O\xec\xf7\xf1y\xc93\xea\xfb@t7x\ +\xde\xbc\xc6\xcd\xe9\x97\x0b\xfeq&\x1f{<~I~\x8del\xb2\xeezM.\xbc\xda\xad\x17\ +\xcf^a\xa1\x80}\xd4\xad\x8c\xbfrg~\x9a&\x11\x86\x8d\xc1\xf8\xfe\xc3wR\x90\ +\xa6\x9a*\xa1\xbc i#\xe8%\x1a\xa83s\xdb\x16\xbf&\xb6*$S\x87\xb5\x84\x1c\xfe\ +\t\x1c\xeb>+\xfa\x84\xab\xee\x98+\xb2Q\xeey\xcd\x9d\xa0l"Nx\xde?\xe3\x9a\\7\ +\xe4\xcbUT\x8f\xd3\x82>a\xd3m\xf2\xa3p\xca\x91\xbb\t\xcdm\x9a\x14s\xee\xba\ +\xc0d\xe2i\x12\x01|x\x89\x01f\xde\x13\x1d\x08\xa4\x12\xba\xe7\xe1\x1f\x92\ +\xa5\xb8\xf8\x1eN?\xc4{\xcfdr\x8b\xd3x\xcaA|J\xdf\xef\xb3\x17\xe00\x87\xfa\ +\x9a\x16\xea\x8d\xb5\xc4xj\x0fA#\xd0\xf7\x80\x1b\xf0\x1f\x05>\xec/\x86?o\xb0\ +\x1c_\x1e+\x0bKV}Q8\xd3\x1a\xec\xde\xe7$Y\x80\x93FP\xfd\x10\xf4C6EP\xf9\x0c\ +\xaey\x05D*\xe5j\xb04\x96\xf3\x9b\x9a\xb2!\x06\xfck\xaf\xf8\x06\x9e\xc7\xcb\ +\xe9\xe7\xe3\xa0\x7f\x87\xd2w\xdfA\x1c\xac\x8ag\x03%.\xbe\x8b\xca-*\x8d\xeac\ +\xa7\xff\x9c\x10\xaey\x8e\x89I\x16x#\xdc\x90c\x9e\xc6\xb53s){6\xef\x8f\xf0#N\ +\xfaG\xc40/\xc2pC\x84\x13\x15N\xfb\xc0\x89>\x81\xe9\xdd\xea\xde\x96p\x9a\x13\ +\x9f\x9d\x83\xa7=\xacv\x81\xa6\x91\x94\xe0\x0f\x1f^\x08\xfd@\xffg\\\xdcd\x8f\ +\xc3\xd2\xe7n\x807&\xbc\xa3{\x1c\xc7\x03V\xf5\t\'\xf1\x08\xfa\x9f\xe0\x10\ +\xd6\xaa\xb9\xc6\xa8\xac\x8a\xc7M>\x8f\xf3\xaf\x14\xe5\xbf\xccELa\xd3\x1e\ +\x16NKr\'\xc0\x87\\\x8e\xff\x98\x04\xc7\xa8\xca)\xda\x1c\x006b@\x17\x1d\'\ +\xee*\xabq\x0f\xc0\xe0\x04N\xdc:\'\xf1\x88FV\x13\x1cWX\xe7\x985\xb7\x8e\x97\ +\x15\x94U\x9e\xf7\xcaO\x83\xb2\xd2L\x90\xa6!\xca\xcbeN\x05\x8e\x04\x7f\xdfS\ +\xe8\xdf%/\xd4e\xf0;\x11\x1a\x84\xa8\xc1\xe8F\x03\xa4\xb0\x81\xdb\xdd\xe1ko\ +\xdd\xe3\x97\xdf\xfc\xf7yc:\x03\x8c>\x1f\xf5\x81\xc3\xderJB\x08\x84^S.\x8e\ +\xfd]\xe8\x11!\xec\xf1TO9\x95\x9b\xac\xb9M\x90\xab\xc5\xd34R<\xe3>\xcaJ\n\ +\x95\x1ao\xda\xed\x82y\xd2UI5E\x97\xe0?\xf1O\xa4\xe0|\xa4pTt\xb3\xaa\x1d\x1b\ +btyg{\xbb\x84\x88\xc0\x14\xf7\x1cF\x93\xee\x1d\xf03\x98\xccF\xeb\x9c\xfd\xdb\ +c\x07G\n\xbf\x88\xf1O\xd5\x81\xff\xa0\x99~.\x1e#\xfa\x8f\x83\x0csY\xd9\xa1\ +\xe2\x19\x95\xe15\n\x89\xa6\xf9\xc5>\xa0\xdd\x0e\xf4\xdd\x88\xe7\xe4\xbf1*m\ +\xfb*[\xb3\x19m\xfb\n\xf3\xdd9\xaa\x8f\x817\xd2\xbe\x1a\xf8Ol\xe0\x96X\xf87r\ +~\x05\xd8Y\xf8s\x804=v\x89\xd7\xb8\x9c{[xwR\xd8\xc2{\x10\x8f\x88I\xc1A\x9f\ +\x9bA\x02%\x8dED\x90\xc9\x95D\xe7/\x83\x83&\x85\x08\xfb>\xb0\xf3p\x0e\x0bP\ +\xff\x8bh\x08\xc4(\xf8\xc6\xd3GE\x96\xe4\xef\xb9\xfah&>eele\xe5\x89V\x8c\xbb\ +\xfe\x8d\xa4\xeb\x96\xdf\x0f\xe10\x9f\x84\xdeYy\x92\xbf+\xf21i\x9f\xa0L\xbc\ +\xd0\xab\t\xfb^\xbb\x0b\x17\x00\x8c\xc1\x9f\xb85z3\xe1\x93\x1bNF0g\xa6\xa9\ +\xacp\xb2\xd8\xe1\x8b\xed\x15\xee\xdc\xfd\x12\xed\xc43\x99\xb4l\x08l\xb8\xc1\ +]f\x88\xcep\x0e.\xc2z\xe1\xc0\x92\xd8vv\xe6|\xfd\xed\x7f\xc6\xd3p\x0c\xfeup\ +\x8a\x8f\x06\xfb\xa2\x0b\xe6F\xbc`hTn\xb8c\xf6\xdc5\xb2%0B\xd2\x12\xee\x85S\ +\xe2\xfc\x1d@\x99\xce>\xc7\xf6\xd6\x97\n\x1c1\x82z[\x8b}U\x9e\xf4\x81~\xd1\ +\xb1\x17aO<\x1bn\xc5\x98\xa7\xdc\xc6\xf2\x0f\x06\x0b\xc4`\x11\xe8;\x9ck!\xe5\ +q\x90\x18\xddE#\xbb\xb83\xfd\xd4B\xd5\xb9!\xdc\xe5\xa0l\x14U%\x86\x1f\x15\ +\x05`6m\x01\xcb\x87\xca\xa1\xf0F\xdf%\xf6\xefr\xe0?\x8b6\xaf%+x\x08\x07\xd9\ +\xbd\x07K3W \x84~lU.\x82rK.)CJ\xe3g\xa6\x7f\xec\xf9MRH\x01\x16\x8b\xc7\x9c`\ +\x827}m\xb0\xe7\xbf\x1f\x03\xfdk4\xc6\xeb\x96\x92yK\xee\x0c\xb0\xc75\xf3\xb0\ +$\x86\xdf\xb0G\xcf\xd5t\x03\xe50\xec\xa0\x8by1\x1a\xea\xb0\xadsCNI\xdfw\x10~\ +T,\xc6\xe8\xae\x98\xa5\xebr\x0b\x02\xb3\xbe\x9ah\xfb\xa8WS\xf2j\x0f\xc6y\xe3\ +\x86;\xe6\x90\xb5\xe2:\x1f\xc2p\x83\x02\xe4\x9cZBk\xf8\x80\x93\xb8W\x14\x9d\ +\\\xb9\xb8*\x9e\xd5\xa8l8\xa0\xf1\xc5:\xafW\xb0i<\x8f\xfaw9\x8e\xcfq\x93\xcf\ +\x91\xf3[\xe29\xf4\xef|\n\x05\x05\x0b\x0b]\x86\xff\xec-\x1a%h\x8ay\x14t\xd1q\ +\xd5)7\xbcg"\'\x80\xe1\xe6\xbc\x7fM\xf5:3\xfdUg|\xe90*\xefv\x1d\xff\xec\x1b\ +\xef\xf0\xc3\xb0\x8f\xf3\xaf\x0c\x96v\x05\x7f\xec\x03.yR\xb4\x0f\xe6\xcd\xb9\ +l\xff\xc6}pWL\xd0E\x13x\xc2)\'a\xce\xbf\xfd\xe6]\xfe\xceo\xfeZY\x13\xb0\xaa\ +\x1f\xef}\xe1\x81%\xff\xa3\xf2\xd8\x85\xc43\xfa^y\xd6[i\xf7w\x1f\xcey\xd8utn\ +V\x8c-\xcd9\x86\x0c\x9e\xdb\x18\xd5\x8c\xb6\x89y\x00J\xb2\xf8\x05#2\xecM\x91\ +\xa4\xc8-y\xf4-\xb7$\xa0)\x1c\x9e\xf9z\x1d\x9a\xaa=11\x02\x8b\x1d\x08\x1d\ +\xd2~\x1e\xfc\x1b#\x96\x90\xc3P%\x1c\x95\xd6 \xef\xd7\xc1\x13m\xef\x9bK\xe0\ +\xcfa\xa0\xac\x90_T\xcdu^~\x9ep\x9a\xee\xb0B\xff\xf0\x1d\x9c\x86\xf1o\x97\ +\xf0\xe40\x85\xa5Ikh\xbck\x98\x13\xd1\x94\t\xe7\xc0\xf9\x96gQ\x88A\x89\xf1r\ +\xfe\xe9e\x85\xa0\xa7\x88\xf8\x81\x17\xa6Q\xb7\xc8pq\xdf\x0c_\x8c/\xac\xf6\ +\x1d\xf4\x81M\xb7\xd4\xba\xc4\'^_\xed\xffk"\xac\xb8\x15$yt%\xf1)\xdb/-w\x9c\ +\xf0\x07\x0f\xe7,\x16\x1d\xb8\x96i\xe3\x8b\'k\xb1\x84\xff\x11j-W\xe4\xd4\\z\ +\xce\xac[d\xc5\x18ZNF\x8d\xfbDwe\xa4\xc4dE!\xc7\xef\xf2]\xcb\xfb\xca\xdd\x95\ +\x9f\x9a]w\xb52Q\x90_%\'\xc7\xa8\xa5\xaa+\xe7\xf3L/\xe0A1*\x87n\xad\xb8\xe1\ +\x8a\'(\x19\x04\x12\xf7G9>\xda\xfd1\xf7\xb6Z\xbe\xfa\xd5m\x1a\xf1\x85\xd9\ +\xac2(?M\x15\xbe+\xa5\x9cn\xd88\x11\xb8"\xc2iT\xc4{\xee\xdd\xbb\xcbt\xda\xf2\ +_\xfe\xc3\xdfA\xe3K\xac\xa9%q\xf6A\xe9\xd56\xc2\xf4\\\xb5\xd3\xc6\x1e\xd7\ +\xaa\t\x19\xae\xea\xe4He\xa5l\xf2~\xf1cbT\xbc\xf7lo}\x89\xe2\x00K8\x97\xe4\ +\xe1Yq+\xdcl<\x8d\x0c\xe5\xa5\xaa\xfb\xc4\xfe\x8f\xa1\x87\x03y\x15&_N\x0c\ +\xe4\x80\xe8n\xa6\xc7\x9b\x82\x12\x16\x96\\\xdb\xab)7\x17\xe2?\xe7\xcb0\x84\ +\xd2\xf2f\x1b*\xb4\x06Fe\x86\x8dp\xd8?B\x9cp\xf7\xce6w\xef\xfe\x05\xee\xdf\ +\xff\x03v\xbb\xae\xf2\xd6\xa5D\xd1\xc5w\xa1\x7f\x8f\x83\xe65\x0b\xc1\xe4\x10\ +X\x84F\x96h,\x06"\x9e}\r\x84 \xb8\x18\xe8\xa3\x10^@?\x1f\x07\xfd\xe7\\\x86v\ +\xe2\xb9{\xf7\x17\x00\xf8\xd6;\xef\xf04/\xe9\'D\xff\x06\xc3\x10ZP\x06\x81\ +\x1c\x11\x88f\xd9\xe7H\x81p\x8a\xba\xdb\xc4\xee\x8f\x89\xe1]b\xb2\x16\xcd\ +\x93\xe4Y\x0e\x17\xaa*\xed\xa4\xe5\xce\xf6\x8c\xb7\xbf\xf9\x0e\x8f\xfaG\\\ +\xf5\xafT\xc6\x80/\xf9fY\xf0XO\x16{\xeeB\x15\xe7\xf4B\xf85*\xd1]\xab\xf2uR^\ +\x94\x08\x1b<\xe7i\xda\xbb\xcf\x17\xef\xb1\xb6\xf8na^\xab$:\xca\xa1\xbe8\xe4\ +\xcb\xd5\xde_\xc3/\x89\x9eV\xf8\xca\xac\xe5;\xf3.%Ug\x8b{\xf8m\xa1\xff\xa0\ +\x94\xb6\x02\x97\xc0\x9ffqN\xde\x08h\xe8x\xc3\xaf\xd0\x88\x1f\x85!\xa4\x91\ +\xc4\xc0\xa9\x14\xa0\r\x10\x8a\xd7*\xf3\xab\xfc\x9b\xc6]\xe1\x95I\xcb\x1b\ +\xb3\x19\xff\xe0\xbf\xfe\xefy\xac7\x90\xc6\xdb\xbcbVz\x028_\x94\x8f@R@/\xa1\ +\x1fe\xa5\x84\xf0,O\xcf\xf8\xccI\x98\xf3\xe6\xbd\xdf\xa8<\xc5\xb0\xe2\x12\ +\xcf\xcb\xc6G\xf1\xc6\xd9\xa45\xfd3\x9ej\n\xc9\x86\xc0-\xefym\xdar7\x04\xee\ +\xdf\xdf\xe1~\xef\x891\'\x82Wx\x8bZ\n\x10JqK\x12\xea\xb3\x0b\xc20\xa64\xac$%\ +JS\xbeX\xce+\x19\xdf\x9f$0\xb7\xb7\xb7\xf9ko\xde\xe3\xbd\xc4o\xa0\xeaw\x94\ +\xf9\x0f\xa6\xcc\x1d.\xbe\xcf\xaa\xbcb\xfb\xdd\xe5p\xcf\xa00I\xde\xbbqP\xbc\ +\xfa^\xe9\x17\x1d\xd1Y\x7f"\xe7.\x86?\xe31\xd3/\xd9#\x96\xc3x\xd4\xf6\xd8\ +\x90WY+\x16q\xe7\x9bC\x12:c\x03\xbdL=\xfd\xdd\xdaz\x83\xd9l\xc6\x83\x07;\xc4\ +\x08\x87\xf1\x94\xabi\xef\x9b\x12&\xf4=\xa5uH\xdf+\x8b\xcb\xe0W\x05w\x8a\xb8\ ++#^X\xf3\xcd:/\xcc\xb9\xe4\xf9^\xec\x00\x9a\xc2^\x95\xf2\x93\xee\x9b\xdb`\ +\x80)?\xf5\x10\x91\x91Q\xe2\x1c\xb4\xadg\xb7\x13\x1e\x85@\xf4mi=\xb3\xdb\x85\ +3\xf2k\xec9\xab\xc3\x17$\xab.\xee#\xa2\xc5\xb5Kvq\'\xe6]\\\xbe\x9a\x93\x8e\ +\x07+\x7f\x14\xc7N\x8b0m=\xbb\xddX;\xcdL\xffL~\x893\xfe\xb5\xbb\xdb\x11O\xd6\ +p\xab\xebv\x8f\xe9\xf9\x0b\x90\xe1\x17\x19\xaaT\x8a\xa5\xed\x00V\xb8\xc11\ +\x87i~\x13\x1e\xf1\xd5\xbb\x7f\x19\xdf\x98\xf5]{~\x9c[\xc1\xb9Mr\x05EF\xb6\ +\xc36\x7f\x1e\xeb\xe9of\x08\x0e\x98N[\xfe\xea\xf6\xab\xfc\xcb\x14.\xea\xba\ +\xc1jW\x15\x92\x93\xe3\xdc\x11U\xb9!\xc7\xecq-=wl\x19\r\xe1\x13X,\xde\xc5{\ +\xcfl\xda2\x99x\xfa>\x94kJ\xbf\xa1\xacq\xa4QJW%UG8p\xf1\t\xaa?\xa5\x9d}!\xfd\ +\xbe^\x07e\xde\x85a\x13\xaa^\x0e\x7f%p2#un\xc81\x81\xf4L\xb9eBE\x95U\xedX\ +\x15\xcfl6c{\xeb\xf3<x\xf0\xc7U\xa2\xe5p/\x03\xe7)k\xfa\x94\r}\x1f\xa6\xf7\ +\xca\xfd\x8a\xb5\x9c\x1f\x13\xdbB?\x86\xff\xa4\x14\xa3L/\x90\x00?\x0b\xfd\ +\xd7\xf4.n\x93\xe8`\xcd\t7\x1ba\xdd\xd5I\x7fZBT\x1f7\xfd\xa7K\xa0b0\xe6U|n\ +\x8auA\x8e\x14\xfc\xc6\xc5\xbb\xc4\xce*a\xc6\t\x82\xb5\x0b;\'F\x9bA\xf0j\x9b\ +\xca\xda\x17\x835\xd8H\xda\x1f"\x83\xce\x91\x94\xb1\\\x9e/NXs\xca\xb4\xbdH\ +\x03M\xfb\xd4\r\x8asN\x18>\x8c\xd7\x8ca\x86wM\xf9\xa98W\xe6-\x1b\xe9\xb7\xc5\ +pN\x82)\x8f\xc3\xcak\x18u\x9f\xd9\xec\x17\xe8\x16\x81E\xff\x01\xd2|q)? )`ja\ +\xa4z\\\xc6\x7fF!\x9d\x84\xc3\xd5\xbe\xe3\xb6S6\xeb\xaa\xd3\xac\x04\xe5\xa7%\ +\xfa\xddt\xe0X\xe5\x9a\x13V\x12]o\x08\x15/XAd\x13\xe7\x847\x9a\x96\xff\xe8k\ +\x7f\x8d\xff\xf6\xf7\xfeOd\xd2\xa60\xc0,=@\xd2>V\xe6\xbb\x1d9\xaf\xc9\x92s/\ +\x86\xbf\xf4\x00\xb3\tX\x05\x1b0\x99\xf8\xa2\xf8\x00\xc6\xeb2?\x8c\xf6~\xa5\ +\xf0\xdc\xa4\x0cH\xe5E!\x1b;\x8aCh\xc4s\xf7\xce6\x1f\xdc\xff\x01\xef\xc6\xc1\ +\xeb\x95+um\x91\x12\xfd$\xfe\x19O\xd6\x90\x8du\xeb\x9fq\xce\x18\x0c\xc5\x94w\ +\x96\xfa\x005b\xc2\xdc\xa1\xb8\xb8\x87\xca\xedb\x18d>i\xdeMo^\x83\xfc\xf8\ +\x92\x8f\x93\xaa\xe3zE\xba\xff\x878\xfb%\x84\x94\xb0]\xede\xdf\xf8D\xf7y\r\ +\x8c~v\x17\x00\x1dk\x0eV\x90\x0b\xe1\x87\xe5\xfd{\xa5P\xafs\xe6\x95\x89\xe5G\ +\xd9\xd0L<\x0b8\x9c\xdf\xe70\x87/\xd3(^\xc9\xbc\xb72\xaeDh\'\xb7\x99L<;\x0f\ +\xe7\xc4\xa8\xdc\x90+\x16\xae\x03V\xa2\xb2\x96d\xc4\xee\xee\xbc(\x83"\xfeb\ +\xf8]6\xd0\x07\xde6L\xea\xca`\xece\xe5\x0c\xa5OI\xd99l<\xda\xd7\x0c\xe2k\xd9\ +g n\xb3|\xd80\\\x97\xff^\x13\xe1\x00k\xe5P\xcb\xdf\xa41\x8eA\x1b\xded\x0b\ +\xbe\xfa\xc6])%\xa2\xa5\xc4,\x85 \xc4A\x1f\x81\x94\xb1\x9d\xc3_\xe7x\xdd\n`\ +\xdd"\x8c\xdd\xc3i\xc3\xf8\xc4@\x1b\xef\x07w"@\xb2\x80M\x0bU\xe2\xc9\x1a\x83\ +\xda\xb1\xf4\x8c\xbc\xe9\xca\xf3\xa4 \xda\xee\'\x1c&\xa6\xd2\xef\xfe1w\xeel\ +\xb3\x99\x13\xdc\x10V\x97b\xc6\xe2*\xa1\xe0\xc6\xca\xcf\xe6\xd2\x8a\x1cD\xdb\ +\xe0\xc7\xd1\xa0\x9b\xb6-\xf3\x1f<\xc2\xdd\xfa|\xb1\xc2jfp\xde\xc8Bi/\xa3\ +\xdfe\xcf\x82\x14\xfc\x13A\x1a\xe1\xa4\xff\x10\x17\x03\xe2,lg8\x1e\x9aee\x06\ +\x1b\xfb\xec\xd5Xa\r\xe1yn\xf2\xc7\xa0\x0c\xe1\x04Y\xfc!\xb2\xf5\x05\xfc\xc4\ +\x8f-\xb1\xa4P\xf6\xbdr\x8a\x96\r\x7f\xdeh\x9a\xc4\x10\x92+=[\xd5\xd9\x8a\ +\xcf\xe5\xf0\x19\xb6F\x84.\xc1\xbb\x812\xf1\x9e\xc3\xa8<\x0e\xa1l\x86\xbc1`\ +\xa0\xa1\x18a\xafW\xae\xf6\x1d\x1b)6o\x95G\xe6u\xa9)\\U\xc7\xf8?Y\xbb\x10\ +\xfe\x9f\x85\xfeG\xa3\x82\xf9 Z\xd8\x08\'l\xb0O\xa4\xfd\xc4\xe8\xbf\x91\xa1\ +\xeaB\x9c\xad\x95yF@\x92E\x9c\x132\xedgB\xdc\xfd\x83\x91\xcb?\x81_<)9\xbc\ +\x98\xf7B\x8c\xb0\xee\x84i\xdb\x16\xc6\x92\xdd\xcf\xde[h)\xdf#\xe7\x01\x18\ +\xfc\x00\xca\xf1\x0b\xe8Gc\xe5\x818\xe35V\xa2>\xc59SfVKhl`\x9e\xb1\xeaw2Z\ +\x92\x08W\xdd\x10\x9a\xc9\x95f\xed\xc4\xf3\xee\xfc\x11R\xe1\x7f\xa8\x10\xb5\ +\xb0@T\x0b\xdf\x1c\x97\xbd{\x91\x02M\xf1\x14e\xf8\x1dF#W3\x1c\xacT\xccz\x1cb\ +\x1c\xdd\x87!\xe7!\xc3\xdf4f\x94\x99\xb2m\x9f\xdf\xbd{\x97\x95\x7f\xf26\xe2R\ +\xd9x\xa6\x9fh4\x97\xf7\xaf\xed\x83\xb3\xde\x803x"+\xf1F\x837P\x0e\x13-\xac8\ +S\xd0\x0e\xe2\xc0\x17\x0fb\xe2\x85\x89\xf7\xacW^\xdb\x9c\xccn\x9e\xe9\x03V\ +\xd5\xae\x0b)\xb4\xb2)\xc2\x17\'W\xf8\xd1\xae\xf1\x82\xc6\x9b\x121\x0cM^\x08\ +e\xf1\xe8\x19n\xf5\x18=\x84\x8b\xe8?f\x9cB\x92\xb0W\xd2|m\x1f\xa8\x02b{m7%\ +\x89\xf7}\xe0\xf1\xa2\xa3i<\x13\xef\x07e+)R5m\x99\xc6\xf4\x13\xe0\x97\x86\ +\xfd\x99\xf8Y#\xd0T\xf4?\x00\xa5\x85\xfe\x0f\x0e\x8fp\x97\x9c\xbe\x99\xf7\ +\xaf\xcb\xcf\xcd\xb9Ln\xe0\xa3\xd9\xd8\xb35\xf2V"\xef\x8c\xcf\x1d\xf6\x83\ +\xd7<\x17\xd18\xc6JPyV\xe3\x8b\xc7.wln^\x9e\xd2\xb6-\xb5\xc1\x03\xd0\xf7\xd9\ +\xa0\x16\xf4\xf0\xe8B\xfc\xd7\x05\x08\x99n\x9b\xa4hfM\xc6ZMx\x9cS\x0e\xfbc\\\ +?\'\x87\xdaG\xf7\x82\x11\r\xd9|\xe1 \x1e\xb0\x99B_\xf5\xb6\x89\t\x7fy<\xef\ +\x03\xf8\x9bv\xb2\x82*a\xa1\xc4\x93#\xfa\xbd1\xfc\xa3\xe5\x90\xb2x\xd9\x8d\ +\x9d\'\x068_\xb9\xfe\xf2?\x05\r\x96_\x90\\[\xa5\xeb\xa6\x0ee\x8f\xae\xba_\ +\xddK\xc0\x89\x182\xc4\x92\x145jiH(\xcebvMc\xc4+\xc9%,\x1b\xe7#?\xc3?zV\x9e\ +\x83Kn\xe7*dr\xd8?b\xe2=+K\x9a\xe3\x10K\xdc\xac,!)\xd6O\xad\xf8\x0c\x99\xee\ +\xc2\xb5$8\xd7\x9cYC\x1aOXYo\xf0^\xd2<\xed\xbb\xb5K\xcaP\xa5\xc6\x8d\xab\xe6\ +\xe1 \'\x8d\x99W \xf0\xb4\x7fV`h\x9a\xe46\xaf\xe6\x01U\xd8)\x11\xd0\xba\x03\ +\'\x1e\'W\x92&\x9e\x92}\xb3R\x98\xf2n\n\xee\x85\x11\xfcp9\xfc%l\xe2\xae\x94M\ +\x9bG\x8c\xa1J\n\xb5\x18|<YcCC\xc1y\xb6>>L\xfdl\x06<\x17\x0c\rt\x07l\xe8\xfb\ +EHg\xb8b\nS8g\x02U\x84\x11\xfe77\x8e/\xc6\xff\xcf@\xff\xb9?\x85\xed\x85\x83\ +\x02\xb3o\x92%\xef\xe0\x90+g\xf7\xc2\xc7I\xffYy+\x80\x0f/Ku!\x82&k8\xf6\x8f\ +\x97,t\x9b\xbf\t\xd7\x81\xf9\x97poT\xba`\x9fom\xcd\x92G\xe6\x03\x9c\xcb9\x1b\ +\xc9\r\xce\x00{\r\xffy\xc2\xfe<\xf8s\x19\xabM\xa1\xc6\x97\xe7\xa4\xef\xacb\ +\xb0\x82\xaf\xac\x11Y\x19:K\xa3.3b\xbb\x11\xe2\x8c\xf1\xcff3H9!f\xc0\xa5~E\t\ +\xf6vb\xf0\xaf;I\xfb\xf7r\xf8\x07\xe5\xa8\xda\xcb\x9c 9oA6Kh\xa2^\x9f\x8c\ +\xe3+\x89\xc6\xd6\xf3\xfc\x9dpU\xce\x96\xef\x92\xf8Y;\xf1|e\xd6\xa6\xbc?M\ +\x02\x83\x94xn\xfb7_\xbb\xe6\xf4\xc5\xfc\xa7R\xb8\x00\x0e\x13M,\x16\xa1\xf0\ +\xbeM7\xb6\xf0C\xaf)_\x8d\x12\x16\xcb\xff\xf2\xbd\x9c\xdb\xac\x04\xd9p\xed\ +\xab\x13\x8f\xc4Gh^\x83D?\x99^\xb2W\xb1\xb9\xba\x8esr\xe9\xfe\xf5\xcdYO\xc1\ +\xc8\xd8H\xaf5\n\x1b\x8d\x85k\xb3\xc1(\xce\xbc\\\x85\xa6\x92\xcc\xb0\xeb\x06\ +\xc1n\xd1\x8e\xc1#^W\xb7\xe5\x0e\xec\xe2\xf4\xec\xfem\x8c\xf7\xbc\x88\xfe\ +\xed9g]\x14\xce\x99\x11\xec\x18:\x8d\xc7hk\xeeDp\xfaA\xe5\xf9\x94\x81\xc6\ +\xd2\x18\x0cc\xfb\xd7N<Mcy>}\x1f,d\xb9\xf9\x121\x0e\xfc\xb8\xde\xbf\x99\xc7^\ +\xc6\x7fr\xb5X\xcd;\x97\xe7\x92\x15\xb9\x88p\x18\xde;\xa3\xf8\x80\x197\xe5\ +\x12\x19xA\x1e+n\x05M\x8d:3O\x96\xec\x89w\xa6\xe8\xf6\xaa\xdc\xf2\xd7\xcd\ +\xb0IJ\xf8\xe6\xc61\xcd\xd51\xfc\xa3\xe5\x88\x95\xa5\x9b\xad\xc0:10?\xa0\x94\ +y\x92\x80s \x95\xf5\xe8\xa8\xc3_\x83F\xdcl\xac\x11O\x8e\x89\xceW\xaf\xed\xa2\ +\'\n7Q\xd4\x99\x17\xa9\xf1\xbe<\xb3O%|\xeb\xe7 k4\x96\xe2\xfd8\x9fb\xd9u\x8f\ +\x1e#\x1eA\xad\xba\xa0(<\xb6\xc8!X\x16y\x08\x83\xc0>[>n\x9a\xe9\xa6\x08\x9f\ +\x9b\xcdx\xf3\xde\xbd\xb2\xe4\xceV\x85\xf9\xfcG\\\x9bl\x9b\x801\xd3\x83\xf5\ +\x17\x82\x9f\x1a\xa6\xa9\x96|\x84\xa6\xc2\x7f.!\x8c\x08\'a\xc7\xac\xee\x94\ +\xc4v\x1a\x0f\xcb}N\x9d\x9d\xa3dy4\x0c.\xe9\x1a\xfe\xa5\xb9\x98\x05\xd7\x13\ +\xfa\x00x\xbc\xa8\xad\r|d\xf8\xcd\x83\xe2G\x02h\xe8k3\x1c\xc5\x80\xb3\x86l\ +\xf1\xe4\x98}\xdd\xe74*M\xd3r\xb5\x11\xf6\xfa\xccD\xa8\x04\xea \xd8\x86\xb0\ +\x86\xf2TO\xb9\x91\xe6\xf2\\A",b\xc0{O\xd3hr\xcc\x88%\xec:\xb8~Nb\xde\x08\ +\xff?\x03\xfd\xdb\x0f\xd2\xdc\xdccr\xb1\xdc\xa6H\n\xfd\x08\xd78\xe04\x95\xc7\ +~\x12\xf4\xafQ\xc0).\xe65?\xc0]\xbdM<9\x1e,\xc98\xfc\xd6\xf1\xa8\xe0\x16\xb4\ +xO\xf2\xfa\xa9\xda5.\xe1\xdb9A\xfbn\x94#\x01\x87\xe4\xc6g\xc31/\x86\xb7\xecU\ +\xea\xfbda6\xc9\n\xe7\xfc5\xe8\xcb\xf3\x86\xfbg+\xb5\xb6`\xeb\xf0m\xbdv\xb5\ +\xf0^\xae.\xa9\xbb\xce\xfa\xc6\xd6w\xb1\x08\xdc\xd9\xde\xe6\xb6\x80\xf6\xfb\ +\xa8x\x16\x04\xeb\x0b\xe3\xc0\x0b,z\x19\xd3\x7f\xce/<gd<\x0cV\xaf\xa7q\xca\ +\x89[Me\xbc\x89\x07\x89\xcd\xcb7B\x08\xb9\x82\xaa\x9e\xf3@gy\x88X\x8e\x15\ +\x8c\x12\x0f\x00\x00 \x00IDAT\xdc\xf6\xf6\xf6h\xde+N\xb8{\xf7/\xb0\xf3\xad?\ +\xa1\xef["\xc1\xbc\x19b\t\xdb\xbdb{\xfa#\xd0O\xee\xe1R\xbc\xe7\t\xc6GN\xd8y8\ +\xe7\xad7\xef\r\x02+\xc1\xf8\xdb\xbf\xfdu\xbe\xf9\xadwJqG6\xc8\x06C2\xff\xdc\ +\x8eT\x98\xe6\xf8[V\xf8\x92\xf1\x16\x11\xb4\x87@\xc0\xe3\x8b\xa0V\xcd\xfc3\ +\xb1\xadx67-\x0fM\x1d\x93U\xb5\xe4\xe3H\xb5\x7fk\xcf\xddj\xa2+\x8d\xa9GVc!\ +\xb0l\xb8\xab\x1a\xcerNO\x0es[\xe3\xbe\xa3\xca\xe30\x94\xdck/,\x12\xfe}\x93\ +\nmb\xa2\x9f\xf8b\xfa\xc9\xcd\x1e-\x7fQ\xce\xf0\x1f\x8d\t\xafP\x94\x88\xdc\ +\x13+\xe2\xce\x84\x8aF\x05+9"\x90\xf6P\x93\x12\x9f\xed\xe4\x81dx\xc5\x9e\xc5\ +B\xf1^\xcb\xda\x15\xfe\xf3Q\xe4\x17\x82#\xa4>{u\xf4$}_{\xf5\x81\xe3x\xc4\xd1\ +\x12\xcf\xf1M\xca[K2:\xf3\x0b\xe7\xa0g\xb86\x1b*w\xb6\xb7\xcf\xe4\xd0u\x9d\ +\x19I\xd7\xfc+\x80\x10\x12\xff_wr\x06\xffK\n\x90\xb9\xa7\x84\xa1\xa1\x13\xab\ +\xd7ho_/7\x8eI\x99\x10\xb1PLL\xda\x96kr?\x9a\x8a\x11\xa5\xff\x8au\xb6zL<IZbz\ +}S\xa8\xdc\xe2\xe6.\xb4\x1al\xb3\x02\xfa\xbeJ\xac.&\xdc\x05\x0c(\x87\xb0\x12\ +\x01\xe5\xe7\xb6\xd3\x16\x01~\x1a\x02\xcf\xd5\x13\xc3c\xdeho\xb1\x99\x18\xd1\ +\xaa\xa30\x9d\xb7\xbf\xf16\xdf\xbe\xbf\xc3!)\xa7\x00\x0b!\xd4cu\x891\xfd\xce\ +o\xdf\xe5Z\xd5E3\x84\xc0\xbfz\xf8c>;\xb9k\x8d8\x00iH\xde\x95\x8b7@V\x16\x87\ +\xae\xd4\x0c\xf8w\x16>\xd4\x84\xd3\xbd\x10\x984R6[\xe8\x8d \xfa^9\xd6}v\x1e\ +\xee\xd0GK\x8a,\xb7\xaf\x84\xb7s\xf0\xe6\xbd{<\x9c\xff\x90\x92,\n\xac\xa8\ +\x12\xb0DJ\xc7p\x08\xdfG\x81?\x87\x88\x06/\x8cm2?\xb1\xf8~\xd7\x85\xe2)\xc0\ +\xd9\xd9O}|\nb\xcd\xc8n\xfb[|\xb8\xf8\xc1\xe8\x9e\xb5\x02D\xb9\xb7\xe1y\xc3\ +\xadX|\xffd\r\xb7z\\6W_U\x7f\xf5\xd9Z\x1b\xd1\xcf\xf9\xe3g\xa1\x7f\xa0(3}\\\ +\x19\xddWD\xb8"\xc2\xbe^e\x92C\x81\x9f\x00\xfd;(\n\x99\xb9\xc1o\xe2H\r9+\xfa\ +\x89\x1ah\x9a\x96\x187\x96\x94\x88\x14&\x81B\x0f\xa4}\xa4\x98w5\x979\xcf\xa6\ +-\xd2x\xf6\xfaEi;p\x8a\x95^k\x1c\xf2M\xfaL3.\xe3\xe2b\xfc\x0fM\xd1\xc6^\x9c7\ +Z\xe1j\xe3\xd9\xdd\xed8Ly$\x999\xff\xea\xd7\xde\xe2\xf7\xde\xfefQ\x96\xcfS\ +\x8aN\xa4%\xf6]\xaaX\x1a\x9a\xac-B`\xcd\xc1K\x93\x96\xf7\xb5\xc3\xb9\xd7l\ +\xfd\xd2^Z\xc4\xc1\x8bjp\xcb\x12\xc7<\x1f\xff5\x8d:\'\xbc>\x9b\xf1\x93\xfbs&\ +P)w\x16\x86\xf8\xd6;\xdf,\nb\x0e\xeb\x9d7"\xc2;\xdf\xbe\xcf\x7f\xf1\xf7\xfe.\ +m\xdb\x16\x8f\xf4\x9a\x83\xad\xd9\xe7qo\xff\xef\x88|\xc1z\xc29\xb5\x9eW\xa9\ +\x02k\\\x8e\x0f\x17\xf2\x1f\x18\x92\x85S"\xaf\x08\xdch?\xcb\xfd\xfb\xf7\x81\ +\xdf\xa8&jc>\x9f\xf3\xa8W\xde\xcd\x1a\x7f\xaaR\\-\x9eE{\xd6\xaax\xbe8{\x8d\ +\xff\xe0W\xfe-ny\xe3-\xeb\x0e\x8e#L\x9b\xc8O\x1d\xac`dw\xe8\x02=>\x85\xce\ +\xecy\xcb\xc2\xf4\xe25\xd0\xe2\xb1\xcd\xc6_;\xf1\x83`\xcc8h<\xae7\x9a\xd9\ +\xdd\xed\x98N\xdbd\x04\xa7u\xf3\xafC\xff\x13\xb4*\x0c\x10\x91JQ\x85\xec\x95w\ +)4-\x1b\x06\xff\x89\x0b\xa8\xf3\xe4\xb0 T\xfc\xf3\x12\xfa/\x878\x17o-\xc3\ +\xfeM\xfc\xd3\x1a\xe0*\xe2\xac\xa7M\xdf\xab\xf1\x1f}\x8a\x83\xd29;\xd3\x14\ +\x08\xcd\xe4\x156&\x9f\xe7p\xf7~Y\x0fS\xf2W\x8aa)"\xb8f\xc2Q\xcc\xc7d\xa8\ +\x85\xbeF\xf43\xf0\xa9\x8bFq4\x14\xcf\x0c\xdcNg\xccu\x8bPB|\xe2\x84C}RynM\ +\x99\xb9s\xe7\x8b|\xfd\x9f\xfc\x0f\xa5j\xb1\x0c\xb9\x81\x93k\xac\xb2\xcf\x8a\ +X\x91\x8e\xf6\xef\x17#\xa9\xde\xf7}o\xbc{\xady\xa54\x80-\xfcs\x89~Fo\xb37\ +\xa4nm\xeeV\x8f\x11\x07\xdb3#\xa8\xdd\xdd@\xc4\x92\xa1\xeen\xb5tA\x99\xa7\ +\xb35r\x17\xd4rx\x9e\x0e{.W\x05\r\x9dH\xa5X\r\xeb\x92\x81\x1cW\\\xa9\x1a\x93\ +\x88q\xe8n\x1b\xf5b\xe4C\x8e\xa3\xfa21q\xb6\x19\xb7\xb6\xb7q\xbb\x1d]\x17\ +\xd8\xd3\'|v{\xc6\x15\xa9\x11\'\x84\x10\xb8\xff`\x87\xd5v\x9b\xdb)\xb7$b\x16\ +]\xdd\x82{-m\xdcw\x1f\xbc\xc3\xd6\xcc[fzFn\xb4\xa4\xd5\xeb\xfe%\xdb$"\xb8\ +\xc4\x9c\xcf\xcbMX\x1e5<5\xfe\xb7\xb6fH\xd3\xf1\xe3\xdd\x8e\'!\x94j\x8f\xc9\ +\xc4\xa3\xf1\xc4b\xf3Y\x10Gp[o\xd1\xa6\xb5\xcc\xc2\xcc\xc5=b<f\xf1\xe0\x7f\ +\xe1\xabw\xef\xf2\x1b\xbf\xfek\xfc\x83\xdf\xfa\x87Dg%\x94/Mn\xb3\xee\xdb\xc1\ +\xa1\x11\xd3\x11\nb\xe7\xb8\xb8f\xec\xddY\x1e1j\x8a-[\xe3D\xfb, \xb4\xccZ{\ +\x9f\x95 \xdf\x08\xdb[-\xf3o=F5\xbb\x9f7y\xd2\xef\xb1\x97\x04A\x94[\xbcr\xf7\ +\x97\xd0\xfe\x19Oww\x88\x1ax\xeb\xde=\xb6f-_\xff\xdd\xb7Yq\x1b\x83\x0bT\xae\ +\'\xfc\x8d\xc3@9\xa7\xa0\xef\x03\x88 \x15S^\x1e\x1f\x17\xfd7\xee\x94\x1es\ +\xd5^\x91\xca\xc3\xd8\xf7UH\xe9\xe3\xa7\xffl\x95\x8e\xca\xb1W\xd7\r\xfe\xad\ +\x16\'\xc2\xeen\x87\x8a\t\x97\xb6\xdd\xa2\xbb\xff\r\x9c\x13\xde\xbcw\x8f\x10\ +\x02\xdf\xbe\x7f\x9f\xab\x93\x19\xab\xbeE\xe4\xa6\x1d\x0e\xfa\xf0\xed\xc1\ +\xc3\xab\xa6\x04mmy^j\x84=\xd52\xbf\xac \x0c\xcd\xfd\x14\xef\x14\xf5fE\xe7\n\ +\xb5\xcb\xe0/\xfc\xc1\xe5\xf7&<g\xd3\x16\x9c\x10\xe6\x13b\x08\xc5C\xf0k\xbf\ +\xfa5\xbaE\xe0_\xdc\xdf\xc1O\xff\x12\xce\xad\x11\xe31\xce\xad\x81\\%\x87\xd3\ +\xfa\xdd?&\x86\xef\xdb>\xaeB\x85!\x04>7\x9b\xf1\'\xf7\xe7L\xd3z\x0c%\xd1i]\ +\x9a\xa1D\xf8#\xc1\x9f<j\x89\xaa\xb8\xe6=7\xa4\xa2\xa9|\xf7\x9c\x137\xfdK\ +\xdc\xf4\xd79@ Z\x15f\xdd\xdb\xca\xaeQ\x1e=\xf8&?\x98\xcfi\xdb\xb6\xe4":`{{F\ +\x8c\xb1\xec\x85:\xacP\xd3O\xa4b\xc8\xe7\xc2/C\x1eY\xe5\xb9\x97\xc63\xdf\xf9\ +.\xbb]g!C {\x91\xbf\xb45\xe3;\xfdun\xfb\x97\x8ap\xcbm\x10\xf2p\xf1\t\x8f\xe6\ +\x7f\xc4\xc3\x87?\xe0\x0f\xa7\x9f\xe5\x97\xdf\xbc[\xe5\x9b)\x13\x114\x1f\x15\ +\xe2\xac\x10\xc5\xae\xd3\xe4\x05\x1f\x8eS\xb9\x9c\xfbcI\xbaII\xc8\xe5\xe9\ +\xab(\xdb\xb3\x16\xe7\x94\xf7\xba\xc0s\x85F6,\x7f/Z\xff\xa2\x18-\x1c\x97\xf1\ +\xe0\'\x13\xfa\xe9\x9f\x87\x07o3m[\xbe\xf6+o\xd1u\x1do\x7f\xe3\x9b\xa0O\xb8&\ +?\xc7\n\x83\xb7L\x92\xd7+\xaarR\x18h\x18\xe8G\x8d7^\xbe\x7f\x93G\xa7Z?\x97\ +\xa2\x18\xdbS\x0b\x97w] (L\x04fS+\xef\xfe\xf1nG\xcf\x01\x11\xd8\xde\xda\xe6\ +\xcd7\xef\xf2{o\xffo\xec\xee\xbeGs\xe7-K{@Y\xec\x92Ze\xe4\xd2\xf7M\xba\xee1\ +\xaa\xd6\xfcq2\xf1%\xa5#Fh\\rl\xc4!7\xe92\xfcg\xefj>s\x10\xec\xba\r\'\x162\ +\x97.\xf1\x7f\xfb\xeeD\xc7\xc5\x05\xf7\xbez7\xb5?Q\xfc\xf6/\xb3\xea69t\xd7,\ +\x04\xea\xcc\xd0\xcd!\xd0g\x8b\x0f\xd9\xe0I\xc2QZ\xfb\xe41\x0c\xfd\x13V\x9aW\ +)E\x06\x8d\x14X\x96\xf7\xefX\x01\x12\x98N\xad\\o\x88\xc7\x9a\x8bp\xde\x05\ +\xa6\xadG#,\xba\x0eP\x1ev\xc1\xaa?\x1aS\x00\xd6\xa2r\x1c\x87\xf7\xf9\xb8\x06\ +\x19m\xcaA\xe9\xb08/xo\x87\xad\xb9\x14.p(\xc7N\xb8\xe6\x86\xc5\xe8\x13<\xa1\ +\xd7be,\x8fFL\x90fk0F8E\xd9\x8b\xb0\xdbu\x05\xfe\x1f\xdd\xefx\xd9\xcf\x8c\ +\xc9:h\x92\x06\xb9X\x04\xf6"\xdc\x9e\xb4\x053\x03\xfcu\x05\x07\x80r\xd2\x07\ +\xeel\xdf+\xbf\xcd\x82\xe7\xc7\xbbs^\xd9\xfaJ\xdat6\x87\xdc\x0f\xe3E\xf0\xb7\ +\x13\x83\xd1\x12w\x03k\xe9\xda\xf9\xae\xc1\x1f#\xfcd>/.\xbf\xf3Z\xab\x9b\xb2\ +\xe5\x07\xcb%Y\x8a+\xb4\xa0\x81\xe0l\x03t]\xc7\x93>\x94\xb5\xf9\xc2\xf6W\x12\ +\xad\x98\x97\xa7\xd6\xacU=\xa1\x0f\x84^ ^\x02\x7f\xebQ\x95\x94piI\x8cA\x95\ +\xddE`\xd6\x9a{S;kN\xf5\xe0\xe1\x1c\xed\x03\xab\xe2\xd9\x9a\xcd\x92\x95\xf3\ +\x01W\xd3F\x13Yg\xb5y\x89\xdb\xfe%N\xfa\xf7\xa1W\xde|\xf3.\xa7\x95\x1bw\x92\ +\xac\xa3R\x85\x94\xe6\xb2\xe2`\x13*\xfc[\x95\\\xafr!\xfe?.\xfa\x8f\xb2b\xae\ +\xeaT\xa9\x90\xd7\xea\xb0\x82\'?\xef\xe3\xa6\xffL?\x07}`?\xb9{\x83\xc2\xbcK\ +\xf8O\xf0\x0f}\x86\x86\xf1\xef\xbcu\x8f\xf9\xee\x9c\xd8~\t\xf1\xc3\xa1\x90\ +\x8f\xa4\xe5$\xcc\x0b\xdc!\x18\xcd|y{\xc6\xf7\xbe\xf1\x0e^`Z\xd1:\x98"p\x80p\ +3\xd1S\xc6\xff"%C\x9f7r8\xd7\xf6/\x16\x86\x00\xfa\x10\x98\xefZ\x05i\xf7\xdak\ +\xf4\xbb\x0f\xc8\xc9\xf8]\x17\xd8\x9a\xcd\xd8\xd9\xd9\xa1i\xbfPx\xceh]\x1dh\ +\xf32{\x8b\xef\x8fh\x04,\xdf\xec\xf5\xd6\xe3\xb4c6\x15\xbcH9#\xd0\xac\xfe\ +\xe4UT8\xe8;~\xda\xfbK\xe9\x7f\xd2\xce\xace\x81\xda>\\sf\xa1\xab\xff"\x1a\ +\x7f\x8aon\x8e\x9e?m[~\xa8\x91+\xbee%\xf1\xacq\xc2\xaa\x16\xdes\xa3\xfd,?\ +\xdc\xed\xf8\xebi\x82kI\x91\xf3^\xf8\xea\xf6\xcf\xe3\x9aS&\xd3\xcf\x01\x83\ +\xc1\x96\x13\xd7U\r\x8eE\xd0\xcb\xe1\xaf\xf8\xa7*\xc4\x93#hn\x11\xa3yJf[\xdb\ +\xa3k~~k\xc6\xda\xb7\x7f\xc0\x15\xf7\x12\xa4\xa4\xf1\xba\x05\x83U\x9c\xde\ +\xe4\xf6\xd6]v\xdf\xf9]B\x08\x1c*8\xa4(dM#L\x9c\xd2Ng\x85\x86\x86\xc4{S\xba\ +\xfb(\t\xff\x1f\x85\xff\x18\xec+1\xb0\x1f={*\x89\xfe[b\x14\x0ev\xe7 \xd7\x8a\ +77\x9f\xc1xE\x06es\xdd\xad\x1a-\x8a7\x05\xe8\xad{\xfc\xaf\xdfz\xa7<k\xdd\r\ +\xf9I\xbeII\xdcU\x02t\xe6?\xd9\xe8\xcd\x9e\x9a\x17\xe1\xbfmg\x85\xf7\x1cE\ +\xeb6\xd6\xab2_\xd8\xd1 \xaaJ\xdf\xd9\xfcv\x17\xd6\x96d]\x84\xbd\xde*\xde\ +\xda\xb6\xe5\xcd{\xf7x\xb03\xe7\x83\xb0\x8f\x13S\xa02Os\xd8\xdaf\xe3\xeb\xc7\ +\xbbsb\x84\xdb\xed\xabl\xcd\xdab\x9c\xd52:F)\xfc\xa7[\x04.\xde\xbf\x9e6\x9d\ +\x1d\x96\x8bN\xb2\xec\xdb\xed:\xda$\xbfb\xd7\xb1\x17\xce\xb6\x84\x9c\xcdZv\ +\xbe17o\x8f\xff\x0c\x0ee\x03\xe3\x91k\x0e\xd68.\xb8?\x89\x07\xdcl\x86\xa3Q\ +\xb2\xa1\xa3} \xc6S\xbe\xf4\xe7\xbe\xc4\xf6\xcc#)%\xa3\xef\x95\x03\r<\xd6\ +\xecV$\xadu5\x9c3b\x98\xb6\x1e\xf0\xd6M\x12\xcb\xda\xef\xbaP\x1a\xcb\xad%\ +\xeb\xf4h\xd1\xd1WV\xf3\xba\xb3\x7fR\x08X\x8bk\xbcx6\xb2;3\x92\x88\xc7\x90}\ +\xdd\xfbD0@r\xb7\xe7\xb8\xa5c\x10n\xaa\xca\xee\xce\xf9\x04\x94\x13\xa0&\x13c\ +d]\xc8B\xd8\x0e\x9a\x0b}\x87\x03n\x10h\xd39!\xaeZ\xecy\xd7!")\x9ce^\x9e\x8b\ +\xe0_\t\n1\xb0\xbd5#\xe7\xd1\xe43\xae\xfed>g{v\x97&\xfd6:\x98\x8a@\xb4sm.\ +\x83\xbfW\x98\xb5\x82\xe2\xe9{\xb3f\x82j\xca\x15\xb0,\x7fk\xeb/\xdcl</\xf9a\ +\xd3e+\xf5\x11\x9bg\xe6\x90\x93.\xf7S/\x8ak\xfeV\x15\xefV\xa6\xd36)\x11>Y\ +\xb1\xc9\x92\xca\xd6\xb2@\xeb\xdbK\xe1\x171%i\xda\xb64NK\xfeD\xaf\xd0u\t\xff\ +\xce\x18\x85\xaar\x94\xca\xa8\xaf:J3\xae\x10\x82y\x80P\xd6\xe5\x1aW%\x95\x8e\ +\x92\xbd;\xc2Q\xda\x80k\x99\t9\xdb|\xc7\xceBJ.\xadG}\xb8k#\x02\x93\x96\xd0C\ +\xf7\xf0b\xfc\x7f\x1c\xf4\xdf\xf7\xc9\xd2\xa8\xdc\xbb"\xc25g.\xdf\xac0}\xdc\ +\xf4/)\xe7\xa3m=2\xf5\xa3\xc3\x153\xfe\xb32\\+@Y\xd1[Ok\xb3\xe7N\xb8&\x94\ +\xaa\xa7\xabMC\x1f(\x0c-3\xd3i\xdbr\xd5\xc1q<\xe4J\xa2\xb7k\x99\xe6\xa3Ym`\ +\x82,\xe3\xbfW\xd8\xdd\xb9\x7f.\xfc`p\xe5d\xd4\x10,$f\x89\x9a\xca\xce\xc3\ +\x8e\xf5k/\x8d\x14\xf3\x10l\x0f\xfen2\xb82c\xcf\n\xc4i\xa2\x95\xc6_\xa1\xd7\ +\x80\xf3m\x15\x06^1\x05jk\xc6\xa4\x11\xc2B\x99\xde1!\\\xbc\xa6\xc9\x83\xeb\ +\x1b`2\xe3\xa5\x17\xd0\x8f\xf6\xcatb{^u\xa8"[\x8f\xcfFn\xf8\xac\x04M\xa7-\ +\x7f\xf8\xed\x1fps\x9a\xf7\xa9\xf1\x1b\x11_\xf1i\xf3\xb2\xed5\xaf\xb0\xb3\ +\xb3\x83F\xcbO\xaa\x9d9w\xee\xcc\xf8?\xe6\xcf\x98me%;U\xb39\xf3`\x9b\x17Kh\'\ +\x97\xf3\x9f\x18s\xe2t2\x04"\xf4a\x9d\x13i\xd9y8\xe7\xcd\xb7\x18I\x8d/nms\ +\x14~\x87\xd3\xd9\x97YS;\xf4s\x05\xe1\x9aS\x0e\x0e\xd7\x10wL\xae\x04\x13\x07\ +\x8fC\xe0Y\x1f\n\xbd\xe0\xe0f#\xfc$\x1c\xb0"\x92\xce\x9eR\x9a\xac$F\xa5\xf1\ +\xde\xfc\xc9\x93\x19\xaf\xab2\xbf\x04\xfe\xd0[\xe7h\xdb+\x03\xfe\xbb\xce\xba\ +SKRT\x16\x95\x87-WA\xe5\\\x14\x11\xe1y\xdc\xe4e\x81Gi\xae\x8b\xa0\xdcJ\xc6\ +\xd6\x89kF\xca\x8f\x88p=\xf1\xe1\x9b\xc3\xb4F\xfb\xb7I\x1e\xd2\xe9\xe4r\xf8U\ +\x8d~\x9c\xf3t!\x1b`\xc1\xf6o\xe8\xcc\x1b\x92\xf8ZX\x04\xfa\xc4\xd77b\xe0\ +\x04[\xfb\xbe\xb7F\xa1\x1br\xa58\x1f\x84X\xf6L\xd3\xf8\x12\x0e~\x7fa\xca\xdf\ +\xf5\xe9\xac\xf0\xff\x9c{er:\xe5G\x15\xfa\x11vw\xceo\x86(b<e:\xf5\xcc\xa6\ +\xde\xbc9)\x07*\xe3?+3\x87j]\xd0s\x98\xd4{\x83)\x84\xc0\xc6\xe4\xf3\\\x13Xw\ +\x9e~\xef\x885\x97\x14\x1f\xc9\x86\xa3\x10\xfbG\xdcj\xcfv\xa5\xce\x1d\xc9\ +\x7f\xe9\xe7>\x93\xa2\x11\xa6l\x1b_\xb0\x8a\xb0\x1a\xfe3\n\x10\x11+\x9dnd8\t\ +;Y\x92\x9ab\xef\xeb\xce\x03!\t\xa6\xe1\xb4\xec#\xb5.\x00\xf9\xfdr\xc5\x84%/&\ +\xb7f30TI\xd7\x9e:\xe1@\x07"\xca\x08r.\x05\x84"e\xf1\xcf\' s\xa9\xf6}\x12\ +\xe4BI2<\x8a\xca\x8a\x1a\x81\xcf\xa6\xb3Q8*3\xc3\xf9\xc39\x8a\xf0la\xda\xe9Z\ +|\xca\x9e\xbb1z\xc6\x06\x87\xf4n\x9d\xe3\xfeC\x9c\x13s\tWe\x9f}\x1f\xf8\x83\ +\xf9#\xfe\xe6WS\x0c\x98:\xf5\xee#\xc0\x1fM\xd9i&m\xc9\xe9\xc9\x9d}C\xb0\xca\ +\xa6\xe7\xe1\t\x1b\xc0\xf5F\xb8\xd2\x08\xaa\'#|\xed\x85@\xbf\x08\xa5\xaaI\ +\xddU\x1cG \r\xbax\x0f\x8dp]6\x93\xeb\xd76\xd9\x9e\xbb\xc9\xf1R,\xb5\xc6\x7f\ +f\xde\x97\xc3\x9fp\x10\x02nb\xa10K\rH\x82\xb6\x1fb\xe0\xce\t\x8b>\x9f0\r7\ +\xbc\xd1\xc6|\xb7c#y\x80\xf6\xc3\x82}\xae"\xcd\r\x0e\xfb\xc7E\xf9\xec\xd3\ +\xa6\xbd\xd1\xac\xe3\x92p\xcde\xba\x03\xbc\x83\x1b>\xe65p&8\xceg?\x1f\x1f\ +\xfd\x9b5\xe2!R*xj\x05\xfa\x93\xa2\x7f\xfb\xfd\x80\xff\xc6)\x8f\xfa\xa1\xcaK\ +{P\xa7\xac\x8b\xb0\xa2\x00bG\x8c\xf4\x1f\xa0\xaa\xdc\xf0\xb9:\xea=\xf6\xe2S\ +\x8e\xdd\r\x0eu\x0f\r\x1f\x8c\xee\xdf-\xde\x07(\x0c\xe6y\xf8\x80#\x1d\x8e Y\ +\xee\xe7Q\x8fK\x1a\xa1\x1b\x8cj\xd6\x9a\xf7)i3\xe1?\xe7\xe2\xd4\xe1\x15\xe7\ +\xcc\xb3\xfb+o\xdd\x03`\xaf\x9bs\xd2\\\xe7\xc4Y\xab\x83u}\xcc>\x9e+\xf1\x03\ +\xf6K!\xfa\x98\xe9=N\xc5\x0e\x93\xb6%ts\xe2V\x8bKM\x05\xcf\xbb\xc07\x97\xd1\ +\x8f\xf1\x9f\xd0\xe7$\xf6\xdc\xc0R9\xf5\x9f%\xec\xbeC;I\xae\xf9,\x8cDX\x8b{,\ +v\xbf\x9f\xf0k\xcc~C\x0c\xde\r\x0e9d\x83\xc8!k\xfa\x94\x9d\xf9\xdc\xe8\xad\ +\x91B\xd3\x00w\xb6\xbf\xcc\xef}\xf3\xbfC\xef\xfc\x05S\xd6\xa0\x08\xe0\x08\ +\xb8\x98h\xe8\x05\xf4\xa3QQ\xb5\xe4[g\xee\x02\x00\xae\xf9\x9b|\xfb\xfe\xbf\ +\xe2?]\xfa}\xe3=^\xe0\xdd\x9d\x9d\x04\xef>\xd158\xb7\xc6\xaa\xdb\x04\x0e\xd9\ +#\x1d-\xe4<?\xe9:\x9e\xf4{\\i\x84\xa3\x9cw\xe86 >e-\x19\xab\xa3\xca\xad%x/K#\ +\xc8\xcaF\xecM\xd1\x15,\x996\x1b\xc1uR\xb0o\x84\x85\xcba\xf9TY\xd8\x0c\xc6\ +\xd9I\xb7\xc3\x87\xb1\xe7$B\xb7\xe8\xe8\xba.\xf5\xf9\x11N\xfa\xf7\xd3\xfe\ +\x05\x10\xae\xa0\x1c%\xb9\x16c\xaex\x84R-\xca\xc0\x7f^\x94\x06\xa1\xaat\xc1\ +\x8c\xf8\xac\x88\x18\xebM\xed\x15\x92\xa89*s\xf1\x1c\xa9Ur\xb9\xa6\x05\xcc`\ +\xd8\xed:\xfa~\x8f\xc3\xdd9\x87}@CG\xce\xc7-\x9d\x9fUS^\xa3up\xd6(\xd6AZ|\te\ +\xe1$5m\xe5lk\x8a\x0b\xd6\xa0\xefA\x92\x072\xf6Z\x14\xf9\xacT\xad;!\x86w\x13\ +\x9f\xb45\xdb\x9a\xcd\x88\x11\xe6\xbbsV\xdd\x84\x83\xc5{<Kt\xa3\xf1\x80C=dC6\ +\xc8g\x80i\xf8\x00\x99M\n9\x8b\xb3\xea\xc4E2\xaa_j\r\x17#z\x8a\x0c\x8au\x86\ +\xb7~#b\x1b \xa8 1\x14\x97<M5\x89dU\xac;K\x00=\x8a\x81u\xb1\x0c\xfe\xb5\xbc\ +\xb1\x1d\xe5}jLN-(&\xde6o\x1f\x87\xe420\xb7\xe15\x07,\xc5\xe9K_\x8d\x17\x8c\ +\xec\xee\x8d\xd14\xf6Q\x1f\x9f\xb4\xa9\xc3\xee{\xb4mK\xae\xc8\xa8\xe9qkk\xc6\ +\xd6\xcc\xe0\xb7\xc5~\t\x18z\xfe\xac\xb8\xe1\x8c0\xf8\x0c\xeeW~\xc1\xaa\x1a*\ +\xa4v\x8b\xc0\x8d\xe6j\xf9\xac\xb8\x81\xb3\x12\xf1\x11\xe0\xef\x81\xb8\x08\ +\x05\x07I\xaf(\xa5\xbb\x87}\xc7+mk.\xd7\x08\xa7\xf1\xd0zs8S5&\xb2\xc25U\x9e,\ +\xbe;R\x02r.\xc0\xc4[Bif\x0c\xe2\xe0\xa5\xf63l2\xf4\x0f\xc9Y\xfc\xd9h\x85\ +\xb4\xb6\x97\xe4\x10\x18\xfd\xd8\xbf\xc5\xc2\x04\x8b\x00\xea\x92\xbb;\x8fD\ +\xf4\xf4?\xb1\xb8\xb1\x7f\x8d\x1b\x89\xf1h_U\\\xe83\xd8\xfd}B\xb4~\r}\xaf|\ +\xf3[\xef\x98\x9b\xdey\xae\xf9W\x90\x0c\x97\xb3S\x7fs\xe2a}\xe4H\xa4\x18\xde\ +\x97\xae\xc1\xc7F\xff\x90r^\x0eJ>\x83\x88p\x14O\x98x+?\xfd\xe4\xe8\xdf\xd6\ +\xd8\xe8_\xd8\x10\xcb\xa7\xea\xfbA@CVT\x14\xe461|\xc0|w\xce\x7f\xf5[\xffp\ +\xdc4,\xff\x8e\xe1\xf9\xe6\x01\xdaGUi[O\xd3x\x1e\x07k\xc9p@V\xe0L\xed\xcfL_\ +\xe3 \x00.\xa3\x9f\x1b\r\xecE8\xd4@\x08\xa6@\xe3\x04\xc9\x1d\xcc\xa3\xe0DY\ +\xf5-N\x8dq?|8/\xe1b\xfaw\xac\x87\x96\x93\xc1\x82\x85\xd2\xd9\xdb\xf2aH\xeb\ +\nkn\x93\x15\xb7B\x1f\x94\xad\xd9\x8co\xdd\xdf!\xf2V\xa2\xbfa\rF\xf8\xbf\x94\ +\xfe\xcd\x03\xad\x11$U^eo\xb7\xf7\x9e0\xe7\x8c\x10\xecU\xd9j_\xc2\xb9\xa7\ +\xc5Sh\xfcg-\xdd\xf3JR\x92\xaf\x81{\x8d\xcd{_*Fd=f[_\xb2C\x84\xa3\xe5\xdf9\ +\x06\xa59\xe5\x11\xbf\x10\xffM\xcaUQ\xd5\x92\x7f\xe3\\*\xe1\xf6\xaf2\x9f\xff\ +\x0b\x16]\xc7\xa4\xea\xa4(\x8d\xf0\x9f\xffg\xff\tO\x17\x81}U\x0e\x92R\xb3\ +\xdf+\x07%\x94\x96\x14\x10\x7f7)X\x87\x03\x1c\x89\x7f]\xd30\xf0\xaa\xd4\r\ +\xb8\x86\xff\xa3\xd2\xbf\xaa\xf5]\x8a\xc9[\xdb\x88\xbdw\xa2%-#\xf3\x9f\x8d\ +\xc6\x93\xcb\xef\xfb\xde\xc2-\xaf\xb7-\xdf}\xb8c\x86\xdc\xae\t\xd3\xae\x83\ +\xbf\xff[\xbf\xc5\xdd;w\x0b\n\x07\xef\x02\x9c&Ej\xc5\x81s\x9a\x92\x9d\xa5\ +\xe4\xe1\xa5i\x14E\xe22\xfc\xe7\xd1/:Hi\x0c\xf5\xbe\xcd\x86\xc0\xba\x08Gja\ +\xa6\xe7)\xe9WP\xbe\xf7p\xce\xef\xbd\xfd\xf6\xa0\xec-~4\xc2\x0f\x18\xff_u\ +\x10\xe3\x01\xcfRD`\xd3\xdb\x9aZ+\x8c\xd4\xac5.\xe5\xad\xbe\x00~\xf3\x84\xdb\ +z/\x18\xf8\x1en\x89\x7f\x02\xe8c\xbb\xa5j\xa9\x8a\xfcG\xbf\xfdu\xba\xaeC$\ +\xf0\xc1b\x97\x8d\x84_\xe7\xe0\xaa\x13\xe8\xb3\'|\x85\xd9\xec3E^\xda3\x84\ +\x83\x94\xff3\x99\xbe\x8e4~\xc8E\xae\x15\xb8\xa51\xfah2\x11\x16\x01\xbc\xa3\ +\x9c\x9e+"H\x14\xfa\xdcg%\xcf\xc4\x81\xa2D5A`\x0c\xde\x18_.\xa7=\x8afm.\x0b\ +\x8a\x1c\xe7m\x122\x8e\xd5NK_\x8b\x89X\xa1\xb8"s?\t\x13\xe0\x97o\x84\xb6\xf5\ +,\x16\xa1 \xadh\x87\x92sR\xe0\xc9\xa2\xe3\xf5\xbb\xbf\x08\xc0jmi\xb8M~\xedW\ +\xbfV\x04R\xee\xf9\x93\xb5\xd4\xa2\xe4\x9c\xf7|\x8b3@\xd2`o\xbfbn\xf6\xacm\ +\xbe\xc0\xe8-c:\xb5.\xd9uY\x1f"4\x1a\xe8S{\xf2g\x8b\x9d\x12\x12\x19u\xae\x8d\ +Z*\xacr\x1c\xff\x96\xfa\xd2[\xe6(Z\x13\xa9\x18O\x89Qy8\x9f\xb3\xbbk\x97j\x84\ +5\xd9\x1c\x88\xde\r\xcaX\xd6\xdbrI\xfce\nD\xdbz\xba\xc5\xd0#\xc3\xc2\x7f\xb6\ +1{\x1d\x12`\x05\x01\x81\xa8\xcf\x01\xc177\x99L<\xdf\x9f\xcf\x8b\xb0\xe9\x13\ +\x93\xcf\xe1\xb0\x8c\x8fo\xbd\xf3\x8eyN\x80k\xcd\x06\xeb\x85\xe1\xd8Z=\x8f\ +\xe6\x86\xef\x97\x84\xc4G\x11\xc0\x1f\x1b\xfd\xe7\x90\x1d\xa7\xe5\x1e\xd6\ +\x11z\xb5X\xff\x9f\x04\xfdO&\xe6v^\x8dCO\xaeA\x01N\x8a\x0fR\xb4A\xc3\x9b#\ +\xba\xa1[vfx\xb5\xd0\xcfM\x11Ip-B \xf4\x81\xd9\xec.\xbe\x11\xbe\xdf\xfd\xd0\ +\x14\x0e\'\x1c\xbb\xc1\xea\xca\xdeO\x81rb\xf6e\xf4s{\xd2\xb2\x11r\x97\xf8\ +\x84##vBO\xaa\x1cQ6e\x93\xa3Tut\xff\xc1}\xee?\x80\\\xf2l\xc7a\x0c\xcc\xfe\ +\xc4\r\x95UE)\x8eJtWXKk\xb4\x08\x01\xefo\xa0\xa1c\xb1\xb0\xf0x)\x19N\x82\xf8\ +\xa3(\xa1\xb3V\x98w\xa9?Q\xa1\x1f\x90h\x87D.\xe4\x06Q-\xc9\xd5zw\x19v\xde\ +\xbc\xd7\x16\xc5\xa8\x11\xcf\x86d\xcf\xe1\x15\x9c\xdb\xa4n\xd3\xb1\x9e\xf8\ +\xd2\xc8\xb3\x9c\xbc\x88w\xefl\xd3u])C/\xa7\x94\xf3\xd1\x0c\x80\xcc\x7fl\xd1\ +\x87s\x1b]\x14^n?\xc3\xf7v,\xe1\x7f\xb2\xd4J\xfa/\x7f\xf5^\xc1kV2\x8e#\xec\ +\xa7\xfe20(BO{\xcb\x01:/\x99\xdcZ\x8f\xb4\x80\xb5\xe2\xc8\xf0K\\R\xa2_\x00\ +\xbfT\xb8\x8fQ\xf0\xde\xc2\x91\xd9\x08$\xc2\xaa3:\xa2\xb7{\x87`\xed3\xae\xc8\ +\x90#\x16\x91r|\x08\xc0\xb7\xef\xdf\'\x02\xde\x0f\x86m\xed\xad:\x8d\xa9\x9d\ +\x85$oS\xa5<H\xbd\x10\x17\x8c,\xbfb\xc2\xbf\xa4\xf0kt\xe0\x14\xc8\xfb0/fj{\ +\xa1\x0b\xc5\xba\xea\xc3\xbfzp\x9f\x9c\x0f\x93\xe5\xe0\xa0X\x0e\x1e\xa0\x8dd\ +\xc8|\x98\x12\xc0\x9b\xc6x\xbf\xc1_\xf5\xd4\xa9\xe9\xfe#\xc2\x9f\x9f\xeb%)\ +\xdf:V\xa2\xfad\xe86\xc9\xa3\x96q\x0b\x94\xd0\xdc\x90\x83t\x85M\xb7\x99z\xd8\ +\xc9\x90\x0e\xb0\x8c[\xec\xbe\xbd\x9e2\x9b\xbe\x0c\xaah\xe6\xdf\xb5\xf1\xb2D\ +?\xa3F\x88\xd3\x89u\xc3\xd4J{3\xb7\xb6%[5\xf9\xc1\x058\xeb\xde\xe9\x04H\xaeu\ +\x9c\x96\xf7\xd7S\x92\x92\x13\x8b\x0bG\x85\xd9\xcc\x97\xb3\x8d\xf2\x81\xa5\ +\xfb\xc9;\xa41\'N%\xa6\x9f\x84z\xce*\x97\x17-\x80O\x87\xf3\xe5X!\x03\x13u\ +\x89\x89\\\x8bOxyb\t\x9b\x1b\xd9\xc2IH*\xa1\x13\xaa\xf0]\x8d\xb0\xfa\xf5yp8x\ +\xf0`\x87\x93\xdbm\xb2D,i5\xa6\xcdR\\\x11\x17\x8cI\xb3\xdc\t5\t\x82dm\x88S\ +\x0e\xc3\xfb\xa3X\xae\xc6\x13\xb3\xb4\x12\xc1Bv\xbdj\xd9,G\x11\x8ec\xb6 (\ +\x04VW\x88\xdd\xb8&\xe5\xac\x1d\xbbG\xb2\xda\xb0\x7f\xf1\x12\xb8\x0b\xfc\xde\ +\x17!\x93\xdd\xc09F\xee\xf3\xa9\xdaN\n!\x1f\xf6\x8f\xcb\x86lDx\x9a\xcf\x9c)\ +\xeed\xe5\xaa\x1b6q]2is\x15\x9e\xc5\xf1\x9cO\xa3%\xac\x96<\x9c,\xb8GR\xe0\ +\xfc\xf1\xb1\xd1\x7f\xe5e\xc9kxE\x04\xf4\xa9\xcd\xef\x13\xa2\xff\xe9\xc4\xda\ +\t\xdc\xa8\xf2\xc2\x9a\xc6r@|\xe3\xf1\x8d/B\xc4\x9a\xb3\tW\x9ak\xc5kZ\xab,\ +\xcb\xc2\xde\x04j\xca\xad\xe8\x03\x9a\xf2\x87f\xb3\x19\xab\xd1\x18\x9aF-a\ +\x8c\x0fS\x12\xa4\xaa\x853]\xa2\xd1\xcb\xc8h:I\xd542\xe0?\xd3\x8c\x1d\x93\ +\xa0l\x88\xe7f\xfbs\x05\xaf%\x1c\x86=w\x83\xf1\x81\xbdW\x19\x14\xfa\xf2|\'\ +\xb8txdd\xc5\x92{\xa7\x9f\xa1\x11\xa1\x0f]\xf1\xe2X\xd3\xbb\xa1\xf2%R\x19\ +\x02\xe7\x8c\xc6\xb7L&\x83\x12\x99\xf3\xb6,\xef\xcb\xe3_\xfbl\xa9\xfc\xca\ +\xb494\x17\x94"\xb87\x9c\x8ch\'\xe7$\xd5\x8f\x1ey\x94\xd3\xdf\xbbw\xb6yw\xfe\ +\x10U5\xfcg\xef\x8bVa\xd0\xcb\xf8\x8f\x98\x92\x98\x8f\xa4\xc8\xf8\x9f4ps\xd2\ +\xb2*\x9e\x9d\x87\xdf?{a\x82\x0f\x06oS\x7f|4x/b\xf6\x02i\xf1\x88\xc6\x08\x07\ +\xd1\x1a\xc6\x82\xd1\xe7\x93\xc5\xfb\xe9w\xd9\x13E\xa1\x1fq\xd5\x1e\xbe`\xf8\ +\xc6\x8e\x93)\xc2\x93\x81\xff4.\xe5\xff$\xcf\xde\x86\x13nN\xda\xd2\xf2\xa1\ +\xef\x8d?e/\x8c\xadO\x18+\x10\xe9\xbf>\x0c\x95L04\x01\xcd\xfc\'dok6\xf8\\\ +\x85\xf7\xcb\x0c\x18o\xa5\xedu\x98\xfb\xe5&\x1d\xda\x9a<\x1a\x85\x7f:\xe3=\ +\xe2\x84\x8d\x94\x1c\\wr/2?\x0e4\x94\xe7\xd2\xa4\xbc\xc3\x9c\xcb\'\xfe\xe5"\ +\xf7N5\xc9\xac8\xec#U\xfdH\xf0\xb7)\x8f\'7N\xd4\x94\x0e\xd0$\xb9\xe6\x93\xd2\ +\xaf\xe9\xe0\xeb\xdc#\xaf\xdc\xba\x00=\xe6\x9f6\';t\xba\xce\xebtnx\xbf\xe9,\ +\xdd%j\xc0O\xbfd^@\xccp\xca\xf0\x9fG?\xa3\xe9\xe4\xa4\xc8\xd6\x0f\x89\xd2\ +\xeb)!-\xb7y\xb0\x06Ou\xb3\xb4\xe1\xd0\xb3\xac\x91\xc2P~\t\xd9\x93A\xd9\xfc@\ +\x89\xcd\xf6X\xc2r\xbdX\xc6\xf4\xed\xb3F(\xb9\x12\xfd\x0b\x84p^\xb8l-E(q\xef\ +&\xc2{\xf3wK\xbf\x87\x82\xd88\xd8R5?qP\xda\x89\x17\xefO\\\xfa\xd1\x92@UU\xe6\ +\xf3\x8e\xcfM\xb7\x8d`J\xec3\xcd\xf9r\xf0y\x9e*\xb22\x81\x16aU1\x8d\x0f\x17\ +\x8f\x0bc\x12\xd9\x185@\xccL&\xff6\x8f\x15g\xc4\x13\xe3)\xa5\xb9T\xce[J\xf3[\ +\xbd\xe29N\x04Ir\xdb;\x02\xc3\xc1\x98\xd9\x15}\xd6r\xcb#\xf49\xec5\x94r\xae\ +\xa7d\xde(B\x1f\xc5\x0e-\x05\x9e\x06\xe50\xfd~\xdazV\x9c\xb0\x08\x8f\x12}d\ +\xe6/\xecEr\x06A\xa1\x8f\xc2\x90\\\xa2\xbf\xc6*\xa7\xb2u\xd14\xe6-{\xa2)\xa4\ +T[j\x97\xd0\xd0\xc7E\xffC(\xe4\xa0(k\x9b"\x9c\xc6\xe3\xe4\xb2\xfd\x84\xe8?\ +\x0c\x8c\xa3\xf6\\K\xe3!%t7\xde\x97\x92v\x10\xfa\xeb7\x86p\x98\xcd\xc8\xfe\ +\xb8|\xa4\xc2\xe0\xf9\xc9\x89\xd9\xf6\xact0\xe5\xd4\x8c\x89\xe7\x8b\xae\x1c\ +\xc8)\xa2\xac\x01O\xd4*\xd9\x9e\xabVV\xe5\x8b\xf0o\xd7g\xaf\x0b\x8e*\xb7\xc8\ +\xe0\xbc\xe5\xaf\xb1`L\xe3\xa3\xbc\x91\xf4:Fe\xcfy\xae\x16\x85t\xd8\xaek\xce\ +\xfa\xd08\xb7Y\x94\xcf\xd9l\xc6\xbb\xbb\xbbL\xa63\xa2\x0e-;\xcc\x93p9\xec0\ +\xf4^\x111\x85\xcfE-\x9dl{Un\xbd\xf42\xcf\x1e\xfe\x986\xad\x11NXq\x1bDg\x15C\ +\xe7\t\x97\xa2\xe7$\xbc\xdb\x19\\~\xe0=\x95\x90\xd8\xda\x9a\xf1\xc1?\xfe\xa7\ +\xc4{o\x02\xf0\xa1\x0e\x95HQ\x93\'\xe1\x1c\xcfK\xc1\xbf\x0e\xbc\xa6\xc9\xe5\ +\xfc\x11\x9cx\xbcW^\x9a~\x8eo\xdf\xff\x03~\x93\xffx|a\xbd\x0e\xe9\xfe\x9b\ +\xa7\xc7\xc5ki\xc2j\x05U8\x8c:\x0e\x87\xd7\x13\xd5\xfdRn\x8d\n\xc7NK%\xe7e\ +\x8ag\x1e}\x95\xcc\\\xe7>9\x07Q\x92\xf2\xef}\nE\t7\xfdM\x16\xaa\xa8X\x88>2x\ +\x0ec\x9awV\x822\x88y\x8d4t\xb8\xa6%:\xe3\x0f\x83\x1c\xb1\xb9\x85~\xe8\xdc\ +\x1cS\xf3\xd3\x17\xcd\xc1\xe07\xfa\xcf\xebp\x94\x8d\x91\xe4\xcdrq\xec=\x8b\ +\xce\xf2\xc4H-(\xb2\xa2\\\x9cD\x95\xd1\x91\x8d\xfc\xece\xf9\xf1\xee\x0e\x11\ +\x98\xf8\xdb\xe4N\xca\x19\xfe\xe7Q\xd8L\xb2"\x97\xf7\x8f\xfa\xf2\x9c3\xac\ +\x89\xee \x7f\xc5\x19\xff<\x8af\xbch\x9a\xdbU\xfd)\xd9\xd4.y[\x8c\xc9\x7f9\ +\xc4+n\xb3\xf2\nU\x06\x02\x8cx\x92F\x10o\xc7\x17\xc5\xdc/,y\xbd\xcf3\xe2GK\ +\xd2-\x94\xa6\x01\xc8\xda\xa5!}\xcda\x823y\x0fr\xd3\xbd\xd2\x1f\xc0\x81d\xd5\ +?\x01s\xa1\xa0Hk\xd7\xb8A\xab\x0c\xbd\x9d\xd2\x9a\xddm\x96\x8cj\xc4P[_+\x0e\ +\xd6.\x11\x02\x8b`\x13\xf6Y f\xa2\xb0Wt\xfa\xd4\xfa\x89@i~hn\xe6\x04\xb7\x1b\ +\x8e\xbc\xc8\xd7\xd8\xc3\x13\xe3\x1fQV\xf57\x01\xb8\xbb\xdb\xd1q\x93)\xc2Z\ +\xb4\x04<K\x04\xb3\xc6\x8c\x06\xff\xc5\x0c\xe8\xa7=\x80\x9d\x89UJa\xd33\xae;\ +e?\xc2\xe1b\xce\x8d\x89\x9d\xff\xe5d\xb5\x84\x02bT\x8eX)\xaf\xf3\xb9l\xfb\ +\x9a\xad\x82\x15\xe0\xb4\xd2\xe4\xcd\xe5\x19\x81\xa6\xb9\t\x11\x9e!\\\'\xd0\ +\xf7\x83\x02B\xd2\xd4%u\xf6\xbd\x18z\xab\xb4k\x9c\xe2\'m\xe5~\x15\xd6\x00\ +\x1a\xb3\xbe"\xd6\xbbbu\xffQq\xed\xbf\xda\xb6\xac9\xe8\xba\x0f*w\xad\x96\xc6\ +p\x91A\xf8d\xab\xe4\xaa\xb7\xe6\x961\x95\xde\xae\xa3<Kg\xa6\xe5\xc4AH\r\xe1\ +\x9c)n1\xca\xa5\n\xdc\xc7E\xff+\x9aZ\xf9s\x8as\xb6&\xebN\xd2\x1a\x98r\xf5\ +\x89\xd0\x7fo\x1dpoy\xeb<\r\x83\xa7O\xbcG\xa2\x95\x06?V)\t\xa2\x9b\x9bW\xa8\ +\xcbZ\x8b\xfe\x9b;\xe120\xdc\xac(9\'%T\x92\xfb\xc2<\x0b\x81\x9b\xa4$\xda\x14\ +\xae"5\xe4sY\xe9\x86b\xdd\x9d\x0b\x7f\xda\xbf\x8d\x98e\x9b\x0f9,\xa5\xe1\xd8\ +!\x8dLn\xf1\xbd\x8b\xd10\x82\xb3(m\xe9=N\xce\x9c(\xadQ\xd9\xef\x95\xb6m\xd9y\ +\xe7>z\xf7\xab\x883\xe5\xd4\x89\xed_\x1b\x97\x0b\x80EP\xab\xfc\xcc\x9d\x90\ +\xdd\xc0&\x9c\x13\x9a\x19\xdc\x7fpv\xfe\x92xC\xe9\x14\x9d\xe7\\\x1d\xc7\xd3\ +\xb8\xa1\xf1\xe1\x99\x91h\xa2\x9d\xce\x10\xd9d\xd1\xbd\x87\x9f\xdc\x02\x84S\ +\xb1\xca4q\xca\xf3K\xcea\x03\xa3\x7f\x11I\x87\xf2\x0e\xf0G\x8c\xffL\xa6o\xf0\ +\xe0[\xff3\xef\xbf\xffS^}\xf5\xe5\x0b\xe18\xc8\xde\xb3\xca\xeb\xfcT\xf7Y\x05\ +N\xa2\xcdS\xb1P\xcfi<,\xfd\xcb\xf6C \xaa\xb2\xe2\x94>\xf5\xbf\xc9\xde\xf3\ +\xdc\x1a\xe2\xb2\x11\xd4x\xd4\xcb\x8d\x16\xfa7\x84f\x85N8V\xb5Rh\xac\xba1\ +\x1b\x8d;;s\xeelo\xd3x_\x8c\xe8\x98\x9a\xc8.+\xbf1\xc2\x81\x1e\xe2Rn\xa0\xcb\ +Gp\xe8\xd0=_2\xed;\x81\x10X\x11aM/7 \x17\x89\xafd\xfa_\x0e\xc3f\xde\xd8+\xa5\ +\'\x92"\xf4\xc9\xda\x8e:\xa6}8\x0b7$\xf9\xe8V\xf80\x04\x88\xcaF\xd3\xd0\xc7|\ +BB\x12\xe1\xbdr\xe4@\xc8M\x85\x07\x85\xf4\xa2\xd1-\xcc\xc1\xd1N\xa4(\x8b1\ +\xe59F\'\x89\xff(\x0f\xc3\x87#\x9c\x0e\x9e\xab\xaa`$\xc9\\\xc7)\xeb.\xfd\xc6\ +\xc9H\xf4\xd6s;\x88\x10\xfa\'\\\xf7\xd6\x8e!\xa6\xb5\x88\x9a\xdb\x8a\x98\xec\ +=\xe3\xd9\x1e\xbd\x8bIH\xf8\xb1\x0b\xd6\x80\xf14@Te\xd2\xa4d\'rUJ\xa5\x1d:s\ +\x99^$(\xfa\xde\\z\x8a\x11e>M;7\xba*^\x82\xa50\x8dsp\xca\xd0)\xf6\xbc\xa1i\ +\x03\x88O\x84\xb0\xc4\xb0\xde\xef\xde\xe7\xde\xd6\x9f\x07`\x95\xac\xe9\x9fV\ +\x8bp\xc9\x06\xab=&\x95\xd2S3\xf4\x07\x0fv\xb8\x95\x9aI\r\xde\x8a\x1c\xd60Mx\ +\xed\x12\x15"\xf6\xc1\x8e\tIZka\xde\x0e\x88\x1e]\xcc\x81\xe4\xd2m\x84\xa8\'%\ +\xd10FX\x89\xa7#\x8d?\x8f\xe3X\x9d\xf7T{P\x12\x9cWs\xc5J\x14\x9e%\xa1\xd9\ +\xa4\xe7\xe6PXo;\xfc\x8cf\xbe<4[,\xaef\xe6\xf9:\xc1Ee\xe2\x85ww\xf6\n\x0c/M,\ +i\xf3{)\xa15\x13\xb6\x9d\xeem0\x9a%\x9278\\k\xae\x15\x9asQy\x96\xaa\x83\xfah\ +VF\x93\x84]Lk\x97\x1b\xc1-\xd3\xc4x\x01>\x1e\xfa\xa7\n%:\xb7\xb9\xd4p3\xe3\ +\xe9\x13\xa0\xffd\xb5n&\xaf\x03\x98\xe0\x18\x8e\xa5\x81\xa8\x9eI\xf2p9\x85\ +\xeb\x93\xdb\xd4\x96k\x1df\x1c\xf0\x9b\x05\x81Z\x8f\x9c\x18\x08!\xd0\xf7`\ +\x06\xba\xd4\x00\x00 \x00IDATO\x98L,\x11z\xd1uL\xd5\x94\x86[)i\xd9\x8aosW\ +\xed\xb1\xb5v.\xfcj=o\x9a\n~\x03;@:\xbcR\xa3g\xd2\x0e%\xb3\x03\x13\x1d\xe8#\ +\xc3_\x7f\x9e\r\x1c\xa2r\x10W\x12\xa3\xdd,\xd7\x84`\xb9?%\xbc\xd7X\xf83\xd3\ +\x8e\xfb\x08\xf4\x9f\x0b\x18\xda\xba\x82&\xe1\xcd\n\n|\xea\xa9C\xa9Z\x11\xb7\ +j\xc9\xf3\x89.s^\xa2\xc8\xd0M<\x93\xcei<\xe7\xf9\x99\xff8\x13\x1e\xf7\xeen\ +\xf30<\xe1\xba\xbfbtP)!0\x84g\xcf\x1b\x92\xc2\x88M\xce\x1d\xcb\x1e\xf0\xa8H\ +\xe3y}\xfa\x1a\x7f\x14\x95?\xf9\xa3?\xe4\xd5W\xdfJ\xcf\xaf\xe7?\xdc\xfbx}\r\ +\no:`\xa3\xfai\xaf\xc1<R\x89\x7f\xe5k%*\x8b>0I!\xff\x9c\xf7\x93\x8f\xaeu1p,\ +\xe3\x14\x81z\x98l\x81\xb5\xd4\xfbf|\x0e\x95)\x06\x9b\xe2\x99$\x8f^\x9c\xbc2\ +2\xac\x16\x8bPr\xfc\xca!\xa3x\xc4\x852\xd5,xO\x8fz\xe0\x15\x1aGI\xb8\xb7\x1e\ +T\xc33s\x18;Fp\xaa\x1c\xd5\xebu\xce\xc8B\xbb\x11?\x84\x85\x8aG*\x97\xa5\x07c\ +1\xc9\x1b\xe4\x9cr\xdc/\xec\xb7\x89F\xcb\xfd\x12\xbc\xb5\xb2\x91\xbd?}\xbfO\ +\x97\x8c\x98\xab\xcdur\x18\xbc\x07\x9a\x9c\x98\x8c\xe10{\x86b\x84\xd3K\xe8_R\ +\xf2t\x96_9\x89z\xb0\xe3\xad\xc2p\xb1x4*\xf2(\xb8\xaao\xe6LI\xb3\xf9\x9f\x0e\ +\x05A\xd5\x1a\xe4\xf4\x95M\x07?\xe9\x02!<\xe6\xf6\xec\xcf\r\x99&\x15\xdc9\'q\ +\x99\xff\x8f\xd8r\xe8\x15\x89`\x07W&K,\xc7\xb1\x93\xf0(\xc74\x907\x97)\x0e%V\ +\x8d\x9d\xeb\xf4"A1\xfc?(I8\xf3\x12\xc0\xe0R4\xa6\x87!\xf3\xb2\x8381\xa6~\ +\x12\x03\xf3.\xe7o\x84\xc4L=Q\x03\xa7\xe1=\xbc\xff+\x15\xac\xf6\xbb\xc5"X\ +\x87O\x06\xc6y\xc6\xed\xed\x06f2(B&\xa8\xfa\xd4\x18\xee\xf7w\xbe\xc7\xcf\xbf\ +\xf9\xb7\x92\x12\x92\x98U\xa4\x08\x03\xdb\xd4\x17\x13\xd0\xa2\x17\xaeJ\xe0\ +\xe1\xae\x85q\x04c<9\x8c\xb2Hg{\xe5\x85?\x8d\x87\xa3\ree\xe4?Du\x7fd\x81\r9A\ +\x832\x92\xbf{y\xfa\xf3\xbc2\xfb2}\x1cp.\xc01\x815\xe7)\xa7s/\xe3\xe0\x9c\ +\x11B\xe0\xaa\xc0\xeebp%\xe7\x1c\x8e2\x9c)A{\xcf\xed0\xbbF\x84W&-!\x04\xde_t\ +EA\xcb\xc9\xabq4?\xbb\xef\xcb\xd3\xd7\xf9\xecW\xff\xdd\x14\xde4\x9cJ4\xfal\ +\xdc\x10\x8arH\x81?[\xe4\x97\xc2\xff1\xd1\xbf\xa4\x1c\x9c\xa3\xb4\xa3\xf7\ +\x93\x82\xea\xe2~y\xd6\'A\xff}\x08D\x19Jq\x1bg95\xf5yHN*o\x08\x8a4-_z\xf3o\ +\xf0\xdd\xfb\xbf\x8f\x86\x9f@\xa1\x9b\xda\xcd>\xe4\x04ee\xa8[t\xf4\xfd>\x93\ +\xc9\xabL\xdb\x96\x87\xf3yR>\xe1(\x0e\xd5L\x03\xfdg\xa6t~\x0f\x11[_\xe5$v\ +\xec\xe2S^\x9e\xf1\x92QWbgJ\xd5\x17\xee\xfdu\xfe\xf97\xfe\xa7*\xec$\xe9\x08\ +\x8bs\xf0\x92B\xcby\xef\xbc\xdex\xcb\x01JL\xb7\x11\xeb\x87\xf2\xd5\xe9]&\x93\ +[|\xb8\xf8\x80\x9f\xf7_,!8C\x82\x16!z\xd1\x08\xbd%\xe0>\xdc\r\xa9\xd2/\xd0\ +\xf8v\xc4\xdc\xa7w\xff\n\xdf\xfe\xc6\xef\x96j\x96|\xb2u>\x045{\x8b\xc6\xca\ +\xdc\xf0Y\xde\xc3\xbf\xfa\xb5\xb7\xb8{\xe7.\xcba\xb0;[3\xbe\xf3\xcd\x7f\xc9\ +\xda\xd6\xf6\x88\xf6\xcb4.\x11`]oB\x7f\xdeYh\xfa\xba\x0bl\x8a/\xfc\xc2OZ\xa6\ +\xdb\xbf\xc8\x7f\xf3\x8f\xbe\xcewv\xe6%\x04\x7f\x90s,\x12\x9e\xac\xe0DG|\xc7\ +\xaa\x83\x0e\x88)\xccu\xf7\xce6m\xfb\x8a\xad{\x1cx\xedq\xff\x04\x92\x17&\xb7\ +\xb7\xb0\xf0Q2h\xfb\x8b\xf1\x9f\x9f\xebb\x87k<\xd7\x9d\x15\x17\x8c<\x81iI5%7\ +\xbf\xbc\xf5\x8b\xfc\xf4\xe1\xbf\xe4\xc7\xbb\x1d\xef|\xfb>\xf7\x1f\xec\x00Yy\ +\x01q\xa1\x18\x95V\xaam\r!\xf7\x9e\xef1\xc1<T\x92x\x1a\xc9SU\xaaG\xd3\xa2\ +\xafDK\xea\x06\xd0K\xf0\x1f\xd4\xf8\x8f\x8b\x1d\x88\xa7q\x96\xc3W\xa2\x19@>p\ +\xda\x01.\xcd!\xa7Alo\x7f\x19\x80\x07\x0f\xfe\x88\xbc\x7f#\x8c\xf8\xaf\xaar\ +\xff\xc1\x0e\x0fvv\xb8\x9f\x12\xa6};3\xc57\x85\xa9\x92;\xcb^\xc7\xe1\xba\xac\ +\x80]H?\xc9\x83\xbb\xbbk\xf0\xdf\x12\x0b\xffe\xc3\xc7\xaa3;\\|\x9a\xe6bp\xdd\ +\xbd\xb3\xcd"<a>\xff\x01Ya\x19\xb7\xa9\x19\xdeg>\xbe\x96\xae\xcd\x07\x0c[U3|\ +f\xeb\xcf\x17\xaf\x99\xa5E$\x15:V\x9e\xa5j\x9cq\xa8jT\xe8)\xe1\xab\x06J\x12\ +\xa1\xab\x91\nx\x114m\xce\x95\x188u~\xf04\\"(|\xf2\x10]\x89Ox\x167\xed\xbb\ +\xca\x82.\xee?\x06o\x85\xc1\xc6`\xcd\x9e3\xf2f\x81\x80\xc6\xd4H\xac\x01\'\ +\xca\xa2\xeb\xec\xfc"\'\xa9\x040{\x13\x0e\xd8\xdd\xed\xf8\xd6;\xef\xb0\xfdW\ +\xff\x06+\xaeA\xd8\xa3\xdb?a\xff\x00V\xdd\n\'\xf1\x148a\xd5m\xb2\x16\x0f\xb8\ +\xde\x80r\x95\xd3\xa3\x13\xe0\x84\x03n\xe2\xe5*\x7f\xe5k\x7f\x8bug\x1dZ\xf38\ +\xce\xa1\x8c\xb4A\xd6/\x0b"9eO\r>\x8d\xe94a\xa7X\xb1\x97\xb2;\xff\xbe\x11lcU\ +E9\xf9\xb9f6\xab\xfe3\xb4\xcd:\x11\xe10F\x0ei\xb8"\xa7l\xae\x9d\xb2\xb2\xde\ +\xb0\x96\x8e\x8fpMnT7x\x07\xd61\xc2\x8a\xe9ov7\x82\xe5\x074\t\x8e\xcb\xc6\ +\x9e\xc2jo\t\xbe\x8d\x80:J\xdeO\x16d\x11\xe8\x7f\xba\x0b\x0c\xdd\x7f\xcd\xa3\ +0x\x7fn7B\xf3\xb9_\xe2\xca\xb5\xab\x86w\xb9\xcaUg\xa1\x9c\xa6(%\xb61\xd7E9\ +\xc2,"I\xd5+\xf99@a\xe0\x8a\x9c%\xf8\xa5\xf1q\xd0\xff\xb2\x97\xa6v\xbbf\xc5\ +\xea\x93\xa0\xff\x0c\xbfS\x83_\x9d\xf2\x9a\xd3t\xcc\x80\x8e\xacbGn[\xaf\xf8;\ +_\xe1\xe7\xb6\xbfb\x81\t\x05T9\xd6\'\x84~\x8f\xe3>\xf0T\xadz\xf2h\xf1\xc3"P\ +\xbb\xae+\x87\x9fN&\x9e\x07;\x8a\x8b\x01/m\x11\xe4\xc5\x12\xcbx]blg`W\x13(\ +\x84P\x1aL\x12\x83\xf5\\AF\x82\xec\xf5\xd9g\xf9\x9b\xbf\xf9wJ\xa2l\xbaC\xf2\ +\x84\x1e\xa0q\x05\xd5\xe7\xac\xc5\x03\x0e\x13\x12\x9f*\xe8\xe2G<\xd7\x94\x90\ +\x8f\xad]\x0f\xe9\x88\x14h\'\xaf\xf2(|\x80so\x00\xc3YN\n\\Ik|\xe1\x88&6reQ#\ +\xa0!\x94\x04n\xe7`6\x9d\xe1\x7f\xfd\xef\x10\xba\x8e\x03=D\xd8\xe3\x19\xc2J\ +\xaeGq\x1b\x1c\xc4C\xf4\xa8\xe7\xe08\xf1\x9e\x08\xebI\xc8\x1d\xbbM\x9e\xed\ +\xbeG\xfb\xed\xfb\xdc\xbd{\xb7z\xb6\xc1\xb9\xb55\xe3\x83\xaf\xff\x8f\x89\xd9\ +\xa75H\x9e\x85u\x945^\x00\x7fL\xb9dN\xd1\xc6\xe3\xb1\xa2\x16\xc1\xd6\xf4\xde\ +\xd7\xfe6?y\xf8]\xee\xef>\xe6(e\xe7\xad\xc7\xa7\x1c\xb9\x1b\\\xd9\x04\xd8\ +\xe0hE8a3)g79\x89f\xc1\xaf\x01\x87\x8b\x9f\xb0{\xff\xf7\xb9{g\xbb\xc0]\xdaq\ +\x88\xf0a\\!\x9f\xdd\xa41\x85<3\xff\xe4\xa3\xf0\x7fa\x81yS\xa3S\xc4k\xf2H\ +\x0c\xc6lVb}\xe3\xf9so\xfe{\xdc\xef\x03?\xec:~\xb8;\xe7\x10\xc1O\xbf\xc8zs\ +\x8b5\xb9\x8e\xac\xaf0\xff\xbf\xfe\x19w\xb6\xbf\xcco\xfe\xfa\xdf\xe6\x1f\xff\ +\x93\x7f\xca\xeen\xc7\xd5kW\xad\xa1i\x19V\x0cQ{[\xedYF\xbbGY\x11\xbd\xcc\x85\ +\x9b\xaa\x05\x83\x9aB\xa5\xd9H\xcfG\xe68\x0b\xe3\xd4\xde!\xc1\x8aI\x00&\xfe&\ +\xbf\xfa\xb5\xaf\xf1\xdb_\xff\x1dBx\xcc\xabw~\x99\'\xfd\x1e\xee\xf8\x80\xfe\ +\xf1\xfb\x10\x8fx\x14\xf6y\xe7\xfe}3\xee&o\xf0\xe5\xbb\x7f\t\x9f\xba\xc7\xaf\ +W\x8av\xf6\x1c\xc5\xa8If\xc9\x88\x17\x9d\x8f\x7f\xdb\xc3\x0b0\x834\x82\x8f\ +\xa1\xe4\x03;\'<\x0fOF\x068X\x18\xdd\x87\xc0\xc3\x87?\xe0\x97\xbe\xf6\x1fB\ +\xdcg\xff\xe8\x84\x83\xe3\x15\x8e\xf5y\xba\xf9\x111F\\Z\xc4u\xb7\xc2a<\xe5H\ +\xf79\x8c\xd0n\xdfe2\x9d1i[\xf2\xa1\xbe\x19\xe6\x18a\x1dk\xca\xb8L?g\xe5Aj:\ +\xa6Q\xb1\xfe\x9b\xca\x95\xc6\x0eF\xcb\x0c\xb4\xb8\xda\x9c\x14\xcb.3\x86|\ +\x1eG!:,~\x1c\x93 \x14\xf1U\x17\xd3WK\xef\x99\xbaV_#\x1ch\xe0h9\\\x91,\x89\ +\x17\x8d\xbd\x08W5\xa0\xe2\xe9\xa3\xd2D\xf8`w\x97\xafL[\x9c\x13N"l\xc8\xb0!\ +\xe6]\xc7\xf5\xc9\xeb\xcc\xbe\xfc\x17\x8b\xa5\x0f\x10\xd5\x12G\xaf;\xe5q\x12\ +\xe8c\xf8\x93W+r\x06\xfe\xe3\x02\x7f5\x87\xc8\xd99\xd5\xd3Ssi\xf6=\xffo{\xe7\ +\xf3d\xd7q\xdd\xf7\xcf\x0cz0=\x83\x0b\xa2\x07x\x04/\xa9G\xe1\x91\x1cYC\x19\ +\xb4 \x85)Q*9f\xa5\x14[r\\\x159\xe5\x85w\xd1"\x8b,\xb3\xc8"\x7f\x8e\x97^d\ +\xe1\x85\x92\x92SJB\xdbL\x15\x1c3\x11d\xd2"\x14C\xd4P\x1c\t\x97\xc4\x05\xa6\ +\x07s1\xef\x0c\xa6g&\x8b\xd3\xa7\xef}\x83\xf9AYT\x16.\xde\xaa\x01\xe6\xc7}\ +\xf7v\x9f>}\xfa\xfc\xfc\x1e\xf5`$\x0bA\xe8\x9c\xdb\xf5\xff\x9b;\x9dgkBdF\xf9\ +\xe9Dx\xf1\xfak\n\xe1\x8e\xb9d\x07\xf91\xa8g\xc9\xf6\xad$_b\xa3:\xfe|\xc8\ +\x98\xd5\x86Z/\xce\x05.\x12\x15w\xe2\x8c<\x08\x1b\x97\xcd\xd7\x04\xb1\xb3\ +\x1e=Ni\xf30n2\x0f\xa5\xb1\xe3Gm\xa3\x1f\xc9\x9fy\xfa\xfaWxi\xf5\x85\xa2\xa8\ +J\xa6m\xa9P1\x01S\xe9\xe6=\x97\x95\x15\xb3\x92Uxj\xfcz\x01\xeb\xca\x1c\x9f\ +\x00\xc2zr\x11\xfe\xe1\xfco\x96\xce\x8c\xe7\xddi\xee\x866)T\xaf\xa8\xb5{pN\ +\xf3\x02t-r\x08*?\xef\xb8\xbe5Iz\xa1x\xec\xd0\x93\x86R\x94\x7f"\xa1\n\xdc\ +\xeb\xd4;Vy\x9fs\xd2\x0c\xfb\xa9W\x00\xd4\xfa\xd3\xc3\xa6\x0e\xea1\xdd\x17\ +\xcf\x85l5-!\xac\xaf\x7f\xc4\x0f\xbe\xf7\xe3l\xc5\xa95\x18\xa3&\xc9\x8f\xf3\ +\x1a\xeev[\xb8\xf1\x84\xa3}\xbfT&(\xcdf:T\x1f\xb9l\xedv\xccc\x94\xd4*\xd6=\ +\x18s\x15Zo\x11\xbb\xca\x132\xe6\x905\xe25\x05}?\xe9\x9e\xd5RbS\xc0\xa1m\xc6\ +l\xbc\xf5\x86\xce;\xd3\xbbBi-"\xd4\xe3\x9a\x9f\xbc\xf56\xbbr]=x\xe6\x89Iy\ +\x0f\x9db\x01[\xc2o\x02\xe6E\x1bz:g\x85\x05\nI\x81\xd3\xf2\xe0*\'\x8fK\xf2\\\ +I\xbdr:7P\xb2\x92\xc4\\\x88!Y\xb9\xd2\xf4\x82\x8d\xd1\no\xbd\xf3\xd7\xfc\xdb\ +r \xf54\xad\xc7\x13*\x1e\xd3d\xc5\x0bT\xe9\x96D\x1e\xff\xe9\xf2\xd3p\xa4|V\ +\xfe\xccw!y\x1c\xcey>\xb3\xfa\xf9^\xc9\xcf^\x8f\x94\xbd\x96\x0b\x08\xe7|P\ +\xf9\x97\x94\xe7\xb4\xc2Z=#\xdd\xf8E~\xf4\xd6\xff\xcc\xd0\x03\xe6a\xee\xe9\ +\xbf(\xef\x01\x9f\x854\xa0\x85HQ\x88N\r!%5vSR\x00\xbe\xae\xf2\xa4N\xbd\x96\ +\x96\xd0la=S\xb2B\xe5y\xfd\x8f\xfeM\x19{\xc1\xf4I6~\xa1y\xfb\xafp\x1c\xe6\\\ +\xbdE\xe5\x9b\xdd\x87\xd4\xa3:\xf3z\x1f\xa2\xcf$\x81"S{\x03,v\xb1(\x92\'\xd1\ +\xde\xf6\xafs\nd\xdb%QQ\xe3<X\x18-_V|\xb1c\xd8i\xde\xb3\xddE\x16\xdd"\xd5\ +\xe8\x1a\xcf\xaf}\x81\xe7\xe9\xcf$\x95\xffV\x99\x98s\xf3\xb2\x82Ve\x0fz1\x16\ +S/\xfb\xf7\xb2\xe1\xbe-z\x16\x9d4~\x93\x8b}\x01\x90\xcfMy{\xfa\x7f\xb8\xf1\ +\xb3\x99(\x84s\x9egF!\xc3+Lxf\xf2y$\t\xcf8;\xbf\xcc\xe8\xd4\xf1\x0e\xbd\xf2F\ +\xe3ae\xa3\xe66\xf6aC2]\xf6\xb25&G\xf6\xef1s1w[.\xcb-5\xfc}\x8e@\xe5`!\'\xe5\ +.a\xad\xeb\xf5\x9e\x98f\x0f!\xd0\xf2\xb8s\xf91\x95\x07,\xcf\xc5<D.\'G\xa7\ +\x98c\xa9>\xbb\xf2\xf3\x9b\xed@\x96\xdc\x08\xee\x84\x05\xd0I\xeb!\xf0\x18]\ +\xac\x18A<|\xb0\xfe\x01\xbf\xbd\xfa\xa5B\xf4\xe1\xb5\xb1\xbe\xce\xc5QM\x92X\ +\xc6\xaf\xf1_\xbd\xefB\xf5\xffo\xfcz\x19\xfd\x95\xec-\x9e\xed\xe6=\xacD\xfa\ +\xd2h\xa5\xc4\xce\x01\xf6\x98+\xef:\x7f.+F\xce\xac OU\xd5\\@\xb1x\x86\xeeD_B\ +Zz\x80$\x89\xda\xe1<\xe5RN]=\x9d\x83\x04\x8d\xdd\'9\xd1\x86,yO\xf4.\xe4\xd8\ +\xa9\x17\x88\xae)\xb8\'\xa9\x13\x0e$r\xde\xfb\x82Jz\xbf\xedKN{\xab[C*\xc1Cr\ +\x8aq\xb3\x10\x1b\\\x08\xb8\xaa.\x02G7o`K\xfa$\xb7\xb9\x04\xe7R_\xe6\xaa\xe5\ +\xa9\x82t\x9bg\xa8p\xffp\xfe/U~\xd9"\x1b^\xa1\x94\xa6\xf7I\x81\xba\x16:\xbe\ +\x84\x82\xb2Y2\xb4\xe5\xb3\x81\xc7I\xa4\xc3\xd3e\x05\xe2\xcc\xf1;T\x91\xb3\ +\x04\xf8\x04\x88uW\xf6%\xbc\x0b*\xd8\xa2x\xb0\xd2T\xa7J\x92\xa3W\xee\x16}\ +\xe0\xca\xa8\xdf7\xc6?m\xae\xbaX]\x9d\xe8{\xa6\xdb\x8c*\x90\x14\xa8R\x9f\xf8\ +\x9c\xf0,\xb8\xc8v\xa7\xd5o\xa7\xf1\xbf\x85\xe6La\xea\xb3@\x00bI\x924|\x14\ +\xefr\xc7j\xa7\xf7X~\xcdBy\x16\xc5 H\x12y\xa1^\xe1v\x17\xb5\x1b6\xfd\xa1U\ +\xf2\x80B`\xaf\xbb\x8fg\x8e\x0b\xa1\xa7\x7f\xcc\x82\\8\x99\xfe\xbde\xab\xfb}\ +\x19U\x82\xc4I\tW@\x8f\x86\x9d\xb2\xf2`r2!\x19.@\x8a\xfc\xf1)\xb7!@\x95\x17\ +\xef=\x93q\xcd\xcd?\xfb)M\xdbP\xd7uq\xb3\t\xba\xe7_{\xf5\x06m\x17yv4aj4Asob\ +\xe2\xd4\xfd\x9b\x07\x82\xe4\xb1\xa4\xe4\xb5\x7f\x95\xd3\x04\xde\x92:\x90)\ +\xe1\x1d\xcc\xe5\xf5YB\x13\x8cC\x1e\xbb\xed\x95P\xf5\xf2pT{.\x8fj\x9a\xe6CVs\ +A\x8aY\xe9\t2\xda\xbag\xdfy\xbc\xf8bP\xc4N\xc1\x19\x0b\x1e\xd0Is\x10\xb0J\ +\xe4\xe2\x91H=\xfd\xed\xabO\xf8\xed\xbdK\x86\x84\x9c\xb2\x17V\xc8}"\xab\xa7\ +\x8b\xd2_g\x84\xe1\xb9\xc5\n\x8f@\x86\x96H\t\xb6D\xb8\x92\x8dc\x11S6s\x18\ +\x8f>\x1f\xee,\x05"/\x81BedE\xd4\x93\xf3C\xf3\xdc\\\xce\xad\x91\xb8\x99\rM\ +\x1d\xb3\xb5\x189_Ue\x8d*\x9f\x1b\xca\x8ap\xd1\xc1b\x96E)yB6\xe4D\xd4\xdb\ +\xaa\xb2)\x03D\xa6\xbax\x82,\xf1\xfa\xb4\xf3\xab\xa4\x8c\x0c\x1c\x15\t\x95\ +\xff.\xcb\x97\xbbM;\x08\xed*\xff,U\xba\x87\x97\xab\xa7t/g\x99\n\xd9@\t\xb5*C\ +\x89\xa2\xfcX\xa5m\xc8\xf8EJ\xf3\x9c\xb6\x90\xe5\xe7\xbe\x0b\x9c\x93\xa8\xfb\ +\x02\xe5\xa1\xa3\xf2\xe7\x84\xb5\x90\x19f\x8a\xf9\t>\x0b\xa7\x0ec"\xc9\x0c\ +\x95\xb1>2\xc3w\xa9\xdf\x1c\x9246X\x87\xdc$M\xa0\xf2\x11\x91\xc0\x9c\x8eX\ +\xc3\t\x95\x96\x0e\x0eC:&\xf8\xc9\xcc\x90\x92\x1e\x86\'Fa\\\xbf\x00)\t\xa9S\ +\xcc\x83\xb6\x8d\\H[\x83Ch0S\x99j\xcc\xfb\xe9\x8b\xfc|\xa3\x87\xfc\xdf\xe3\ +\x80\x05sKw\x179\xbf8\xc7\xce#\xa1A1s\x00\x0e\xe6<+~\x0e\xe1\x90KN\x0f\x0f\ +\xd5T\xe3\x8c\x02H\x92\x82\'r\xda\xf8\x87%\xe0\x90\x99(3\xdeG\x1b\xef\x97\ +\xc5_r\x87\xc5\x12\x12\x81]\x99\xa2%\xbf\x97x\xb0\x1f`7\xe38t\x91}\xd9d\xabZ\ +\x864\xe5~\xbb\xc9\xf9\xb4K\'\xdb\x90\x16h\xe3}\xae\xd6\xcf\xf2\xfb\xdf\xfe\ +\xd7T^\xe1\xc7b\x94\\\xbe\xd9\x1f\xc2\xfbI\x9b\x97\xfaL\xe3\x932q\x9d\x9d\ +\x986w\'\xba\xe0\xf9\xc04$\xf0\x9d\x8d;\xc5\xf3`\xb8\x11\xef\xe7\x18\xee0\ +\x19\xfd\xfe\xc6\xcf\xd8\xe9:\x16\xd2C\xda\xa6\xa1\xc9]\xd7\x01\xfe\xf0;\xdf\ +\xe1\xc2h\x82\xf79\xdf\xcb\x19\x8f\xa8\xe0-^-\xa3S\',\x1f\n;~\td\xf7\xf8\t\ +\xf4\x94\xb7e\xfb\xa5\xf9_\xd7}\xa9<)\xa5\x1eS\xca\x01;\xdb\r\xd1\xd7x\x0f\ +\xfb\x9dp\xcepn\x1c\xc5\x13\xaa\x07\x91)>\xfa\xbd%\xba\xbb3\xe9\xaf\x15\x10\ +\x86HKV\x16\xcc\xfb\xe3\xc9{\xca\xf5\x89\xd9?\xb9\xf5?\xf8\xe0\xd6_\x03\x10F\ +\x01\x17\xc6T\xe1\n\x97\xc2%.\x86\xcb\xb8:p\xb1\x9au[;\xa7\xfbJ\xa4\xef\xe3\ +\xb3\xb5\xb5\x9d\xd78\x1b\x01\xf4\x87\xaa\x95\xc2\x06\xc7\xc9\xfb\x17\xaf<c\ +\x00o\xd9\x00(\xd6\xb5SEMP,\xa2\x8d[\x7fA\x97\x16Y\tK\x9c\xf3O\xb1\xec\x12\ +\x07\x0b\xcb,..q\xe0\x96\xa9\xfc\xbc\x86ijE\xdf\x96\x04\xc2a\xf1\xa0\x9a%l\n\ +]\'\xc23\x19\x0b\xea\xc3_\xdc\xe5\xea\x8b\x97H\xd9\xc27\xefeJ\xa7\t\xa0^A\ +\x00\xcfN\x12\x0e\x06\xe19;|\xef\xdey\x8f\x03\xb7\xcc|\xdaa\xde\xcd\x91X\xca\ +c\x1d\xc8\x1c`\xdf\x9d\xe7< \xc1\x13\xfcyb\xb7Kl\xc1WZ\xb9\xba\xb1\xd1\xa8\ +\x17\xa2\xa7\x1e\tX[\x9d\xf0\xdd7o\xb19\x9e`99\xf6\xf7S\xf7\xaf\xb3\xbf\xeb)\ +.\xa2J\x93\x86de\xe0\x05\x92,\x97\xd5\xe05L\x97\x88z[6Z}\xe1c\xe0\\zL\xeb\ +\xcfS\xf9E\x1eu\x0fI\xd3m\x0e\x92V,I\xea\x9bf\x9a\xb5>\x15A\xe2\x03|xN\x07\ +\x95"\xb13\nr*\x16V\x91?y\x0e\xc3\x9c\xb0y"\xf3\xc6\xf3){\xa3t\xd1\x07\x07r/\ +3\xba\x04;]d7>\xa0k?`=zn\xde\xcc=\xec\x92p\xff\xc3\x8f\x88\x02\xc1\x14\x12\ +\xe7\xb9@Ok\xf58\x03\xc4\xfew\x90\x93\xa4\xcf\x88b\x98\x01\x93=\x7f\x08H\xce\ +\xdd3#\xcb\xe5\xf0\xf34n\x169t\xb7i\xb8y\xf3\x16\x1f\xb4\x91\xc7\xcd\x03\x9c\ +_b\xa1\xba\xcc\xc5\xd5\xe7\xb8\x90\xc3Pw;\x08\xa9a\xc9\xa9w\xe6J\xa6O\xa8PgA\ +\x12=\xaf\x12\x05\xa3\xc7\xc2\xd7\xf01\xce/\xe3\x9f\xfc9\xd7\xa9\x92x\xd0E\ +\x1e\x02{\xed\xfb,\x0eB\x87\xa3\xfaY\xd6V\xd7\xf8\x1eop\xb7\xdd\xc2\xbd\xf3\ +\x16\xe7\xfc\x05\x00\xbc\xbf\xc09w\x9e p\xb1\xd2\xa3D\xfb\xfd\xf5\x10;\xca\ +\x14&?\x85\xdd\xc1ys\x98\xe1D\x16\xd2\x16\xf7\xd2b\x81\xa7\x18\x8e\x7fF\x01\ +\xeaQ`{\rZ\xdd\xb4\x02\xe2I.f\xeb\xfe\x88\x0e\x9e\x0f\x87:PJ\xbf\x87\xe0O\ +\xa6\xfc\x80az\x84\x02\xb9\x1ft\xfc\x19?F\x95\xa5\xfd\x14\xd9N9\x0e\x8a\xf4\ +\xb9*iJb\xe9D\r\xba\xe0\xb1\x98\x10E7q\x8c\xda\xa0s\xe1\x98\xf0\x87s\x9e\x1b\ +k\x13n\xbeu\x8b\xe6\xdd\xbf9\xe1\xc9\xbdr\xd2WQ\x99\x1b\x8fbQ\xbf\xf2\xfa\ +\xb7\xf8\xcc\xaa\xf5\x8fb\xe6\xc0XBCZ\xb6?\x8f\x1d\xff\x90\xfev\x08\xe4\xaa\ +\xa8G\xcd\xfbJ\xaf|`\xf6\xee\xd5\xfe\xf3\x0f7~\xcc\x9d;\xef3\xdf5\xe5\xddV\r\ +g(\xb9\xd6]\xd7\xe6\xb0\xd3](v\xb6\xd2Kx4p\xffZO\x17\x80$Sp\xa7\xd3\x1f\xd7o\ +"\xab\x88\xb0\x03\xcc,\xdb\x8f\xe2c\xac\xaaa5\x97Q\xdfY_\x1f\xb8F\xe1\xef\ +\xdf\xfcs\x0c\xf2\xbf\xb7\xd2{\x05\xa9i\x1a\xae\xf8@H\xe0]\x86\x8c\xf7AA\xca\ +:\xe3\xdf\x9e\x06\x00\x8f\xf7\xfdL"\xf2\xa9\xf4\xe7\x97\xe7\x7f-m\xf7H\xa7\ +\xca\x9c\x81OjCZ\xad\xeay\xb0%<\xde\x8f}\x928\x9f,\xff3\xd8w$_\xfa\xafIV\xe6\ +J\x12\xec\x807\xf7D\nO\xc46\xe2b\xa4\x85"\xf4\xbc\xf7\xcc\x0f\x92\x10\x8d\ +\xb6e\x0f\xe7\x1eJm\xf3>\xf7\xa3\xf2N)\x81\x86\x99\\3\x11\rU\x1eO\x7f\xbd\ +\xaf\x08~\xb2\xef\xa7\xe0\x8b\xd9\xf8\xf5\xa0\x8a\xcdOq\xces\xaf\xed-m\xf3 1\ +8h\xde\xd1\xa7\xe3=\xcc\xfb\xc0A\x12F#\xb3\x82%\xe7\xeb\xf4\x95`U\x15X\x7f\ +\xef=\x0e.+\xd4\x82\xed}\xdb3\']\xb3\xfb\x972_[0\xdd\xff\x91\xf7\xde\xf9[\ +\xe6\xbb\xe6\x89\xcf\x0fQ\xab\x87\xf3(\x15@\xf4<\x9d\x12T\xd5\xd2\x8c\x8c\ +\xd9MZY6\x99L\xd8\xf8\x93?\xa5^\xebs\x84l_\x91\xa6g\xcb\x1fL~\xf9\xbe\xba\ +\xc9\x8cJ\x89\xfc\xec\x9d[,\xbb}\x12\x0ekiP\x8c\xce\x1c\xaa8\x9a\xc4:\x1cG\ +\xe5=\xe3\xbc\xef\x87WJ\xda\x91\xfd\xfd\x9f\xbe\xc73/,\x0f\xf6o\x1e\x1fg\xf0\ +\x8f\xf1\xbf\x958B\x81u\xd8\xc9\x8a\x8d79\x94\xc7\xac\xcfW\x83o_\x1e\xb2\xd3\ +u<h>\xe0\xde\xfaO\x91\\\xcdi\xde\xec\xef\xbfq\xb3\xcca;\xde\xe7Q\xd7 \x12\ +\xa8\x83a\xf5x\x9a(\x19$4j\xf8\xcf\xd9\xdc\xf2\xe1{\x86\xfcQ\x19\xd9\xef\x01\ +\xe92\xffd/\x9c5\xef\xb6-\x1e\xe3\xc3\xf2\xfc\x1f\xbes\x8b\xff=\xe83\xfc\xb7\ +\xedG\x80\xf0wUM\x15.\x12\x9e\x9d\x10.]\xa0\x1ai\x1b\xa5\x8b\x15\xc4\xaa&TR\ +\xbc^M\x94\x9c\x02@\t\x1d\x0fsvN\xf3`\xcd\xf0\x0f\xa81F6\xfeM\xb6\x1c\xf9p\ +\xdb\xdc\xe5O\xff\xd3\x9fq\xfb\xce:{"\xbc\xd7\xbe\xdf\xbfg gM\xee\x87\xe0y\ +\x8c\xe7Bu\x81sn\x81\xe5\xea)\x9e\n\xcb,,V<=\x1esii\t\xe94\xfd\xa4\xcb\x06\ +\xfc\nS\xbc[,\x8a\xe8p\x083\xc3\x19\x8d4I\xab\xedr\x19`\x11\x9c\xa8\xf0,\x87\ +\xb2\xc5\x95\xf5\x89>\xe7\x9b\xac7\xbd\x1bO\xad\xac\x9c0\x19\xa5\x1cf-\x80\ +\xdc\xc6*\x1b\xf6\xbb]\\\xa5\xf1\xf16#S\xea\xf3m\x11\xa6\x88S\xac\x92\x8e%\ +\xdc \xccq\xf4\xaaC\x0e\xdf\x88Y\xe2\xaa\xc1\xee\xb4\r\xcf\xac=\xab.f\xf3(\ +\xe5\r\xeb\xfd\x12\xbf\xfb\xcd\xd7\xb5\xab{\xbe\x16\x07\x9bw\xc9\xf7\xf7\x0f\ +K\xc8\x81\xd2\xcc\x0f\xe0?\x7f\xff/X\xb9r\t\xe9\xfa\xca\xa5.\x81O\xaa4\xdc\ +\xa3\xcf\xad9y\xfc\xea~\xecb\xd4\x8a\x80\xac\xe8L%\xb2\x135\x844ldg_\x90\x05\ +\x83\xf7Z\x15\x93=E\x8f\xf1,#\xd9\x12?\x9a\x00\xac\xcc\xb1\x1c\xae0\x8c\xa5J\ +\xce\xb9\xf0\x80\x93)\xc2\x1c\x8e)\x899\x14\xcc\xect\xfa\x0b\x1a\xf6\x1aZi\ +\x16\x02\xb4\xef\xb7r"\\U\x05m\xdb!\xc2\xc6\xfa:\xb8@J\xb1l\xb8\xe3\x84~\x89\ +3\xb3L\x12a\x9f9\x1dw\x07\xd25\xd9\xa2\xd4\xfb\x8c\xfe\x05\x80,M\xe9X\xc2s\ +\xbc\x07\xe8W\xe5\x7f\xf5\x02i3L-\xffT\xa5G[\xaah\xee\xc0\\\xda\xc5\xf2\x1d>\ +i\xfe\x1f\x8drI}\x1e\xbf\xcbc\x14\xf1%\x0f\xe4h\x0e\x9dw>W\x1a2\x108Y\xc8\ +\xb9~\x9f\xa4NJ\xfe\x15\xe8\xbd\x1bMC\x8c\xdaM=\x84\xc0F\xd3\xb0\x99\x9b\xf0\ +\x1a\xfd\x9d\xe8\xf85\xa4\x92\xf9\xe0\x0c\xfeQ\x14\xef\x9e_t(*L\xcb\xf8\x1d\ +\xb8\xea*.=\xd4\xc4\xf7\xbc\x12\xf6\xff\x81\xf3\x9cGf\xf6m\x02\x0e$*\x86V\ +\xbe\xd3*vJ\xfe\x86hRws\xfb6N\xbe\x94\xf9\xffP\xed\xa93\xf6\xefh\xa4\x0c\x13\ +S\xc8\xe5\xd4v\x90)\xdf$tO_\x19\xad\xf0\xd2j\xcd(w\x17\xd7u\x00\x9c\x9f\xe9;\ +\xe8\x9dz\x83\x16\xbdg?\xd3\xe3\x9cS\x04\xe5\xc9x\xc2\xf3\xe3k3\xce\x90\xc3\ +\xbc\x8fC\x08\\\t\x81\x0f\x9b\x8f\xb8\x12.\x92\x98+\x9e\x90\x98\x96\xa8\xdd\ +\xf1\xfc?\x1ey\xa2\x08N\x06\xe1{\xe9K\xbc\xc1\xe3|\xcd\xf9\xa4\xa1\xdazt\x85\ +\xaaz\x06\xc3\xf3*m\x072\x1f\xd9\\J\xb8>\x8f\xcf\x0e7\x93]]1\x18\xf5o;[\xdb\ +\\IR\x0c.\xfb\xbf3%\xe24\xfe\xef\x84\xce\x07\xba\\\x91\'(\xff\x0f\xbd*~\xf0\ +\xee$\xf0\xa8y\x97i\xfb\x0b\x90\xed\x99\xce\xf0\xd5@\xf6[X\xd3\xae\xbd\xee>\ +\x9b\x02\xa3\x8ab\xf4\xc5\xdc\x85\xbd(nI#\x0c\xfa\x83z\x85M&\x1cwik\xa3\x80\ +\xc4&;6\xfa\xd2\xfada\xbd\xc1\x19\x060\x15E\x816\x1e\x1fz MY\xefbC\x17\x1b\ +\x9a\xf5\xbf\xcfr7\x7f\x8d\xae\xf1\xfc\xea\x0b\xfc\xe6\x8d\x1b\xf8\xa48DQt\ +\x9fz\x87\xa6\x83\xa4\xde\xab\x99\xce<\xbf\xb2\xd1\x9cB\x06\xc5\x9d\x959\x12\ +\xef\x95\x10\xbf\x8d\x19\xe7\xb9\xf9\xd6\xad>\xb4]\xbcq\xb3\xf3\x19\x1a^N\ +\x84\xbdN\xd8N\xda3\xed\x17\x99o\xfe\xd9\xef\x7f\x9b\xc7\x0b!+n\x82\x93)0\ +\xe5\x9e[\xcaI\xd9\x19(y\xa8\x90\x0f\'0\x88`\xe8\x80\xcd"\x87^+\x05\xb4\xddE\ +`\xe4|\xb1\xb6\xed2&ym\xad&\x8ap\xbfm\n\xf0\x94\xb9\xaf\xad\x82\xc79\xcf\x9e\ +\xa3t%\xefr\x8c\xce\xa7)\xd2\x01n\x0eIs\x18\x08\xdf\x10<\xee\xb8\xab\x100Q\ +\xb4w}m\xc3\xd3a\x92\x9be\xea\xef\x0e\xc8\xc9\xd72\xe5)\xbf\xc4\x8d\x1b7zat\ +\xc4z9\xea92pA\x9d\xb0\xd0\xc6-\xe4\xbb\x7f\xce\xce\x9c\x82\x8eUy\xbc*\xf0w5\ +\x8e\xe9\x97N\x1d\xbb\xbd\xb7\x1b\x1cP\x964\xf9(\xe6\xd8\xb7\xeb\xbb\x15\xf7\ +\xc9\xcf*\xa4R\xfe\xfcx\xfcl\xfe\xfb!V\x15\xa1S\xee\x0f\xdd\x1ekGxf\xfcY\xba\ +\xe4\x89\xad2\xbf5B\xd4\x06\xa6y\xb3\xba\xa5"\xfcO\x1f?\xc5@.\x96\xcc0l\x927\ +\xeea\xd7\x16\x05\'\x04\xcd\xedi3\x94\x00\xce\xf0\x9b\x0c?\xc6\xfa2\xd9s\xf4\ +o+\xe7\x0f\xb27`W+\x81R\xa4\x8b\x9a\x00\xe72z\xabZ\xad\xbb\xd9\xfb\x927V\x92\ +\x13\x05\xe8\'\xc9\xff\xc3\xcb\x1a\xd5\x16\x85\xee\xd7\xc4\xff+\x08\x9b.\x14\ +\xc5\x7f8\xcd\xa1"\xe1\x1c=\xbe\x88\x08T+v\x17\x86\xb7c\xb4\xaf\xbc\xf2\xc4y\ +\x1fJB\xa2\xc1!\x88\x88\x8e]\x84\xf1\xb8\xe6\xad[\xb7\x88\x9b\x0f\x18\xb9E\ +\xf0K\xaa\xfc\xa49\x0c\x8bh\x18\xde<\xeerN\x13\x92\xc5y\r\xbd\xd8\xba\x98\ +\xd3*\xf5\xde7\xe7=\xa3\xc9\xcbt\xeb?,\xcaNQ\xe0L\x00z_\x12\xd3\xbd\x03\xe7\ +\x97p\x19SD\xd7\x14\x86\x842\xc5\xbb\xaekn\xbeu\x8bG\xddC\xce\xf9K=/\x9dLz \ +\x87\xff1\xaf\x92y\xa1U\xf9\xb1\xbd IX\xac\xbf\x88t\xb7\xa8\xeb\xabx7\xcf\ +\xa2\xf7\xa5\x07\x95\xb5b\xb02y\xeb\x056<\x08L\x80\xef%\xed\xf17\x94O\xc6\ +\x1f\xaf\xac\xadq;> \x85\xa70|+\xd2\xf4D\xe5\xff\xe8\x1cd\xb0\xdfl/\xdbA\xef\ +G\xd7\xf0<\xe4?\xfe\x87\x7f\x87%\xa3&(aZk.z\x80\xb0\x93\x95\x9b\xd8EH^\x1b\ +\xa6J\xdf>\xa2\x18p\xf9}{\t\xe6\xe2\x87Oz\x1c\xd2\x14\xcf\xdc\xa9kP9\x8f\xf8\ +\x1e\xd1]\x1f0\xe07\xd7\xbf\xcbZ\x0e\xb5\xdd:\xf7\xee\xfc\x98\xca\xc37\xbf\ +\xf1:\x1bM\xc3;\xef\xdc.2\xd6\xc0I\x87\xfb:\x81\xf6\x9c\xd3\xa7i\xea\x86(\ +\x86\x91\xe5\x16\xa9\xb7v\x0e\xb2\x0c\xb5\xe2\xa0\xd3\x0c\x80\xa7+\xd8\x94\ +\xec\x8d\x19\xd0\xc4e\xe5\xcd\xbc\xd1\x92\xa4\x84q\xe73c<!w\x06\x9f)\xd1\n`m\ +\xf5\x05^\xbd\xf1E\xdex\xf3&\xed\xc6\xfb\x8c\xae]\xa3\x13\x88y?\xa7\xdc\xbf\ +\xcd{\xaf\xc6#sOxcN\xba\xbc\x07\xbaCZ`\xd9\xc1\x8e\xed\x81\xcc\xff\x07i\xbf\ +\x9cSCOR\x0f\xf3\xa0J\xe2\x0c4\x04\x14\xfe7\xfc;\x9d\x9e/t|\xf3\xe6M\xba\x0e\ +\x0e\x96\x03\xf3\xa2aB\x1bmJ\xbb9\xf4\xab{?\r\x14C8\xd2\x0b\xac\xed2\xf3\x0c\ +\x889\xe3\xbe\xa4\xd7\xf4\xad\xea\xc8z#9\xefY\x9d\xd49\x1f\xc0\xf3\xd6\x9d\ +\x86\xf5&ftc\x9d`\x18\xd5*\xc4s\xb9s(h\xbb\x94\xea"=\xa0\x96\x904W@\xa9\xfa*\ +\x81\xd9\xb0\xd2\xd1\xab\xed`#\x8a\xe2\xf2\xe0\xf3\x17\\\xf6\xe0\xfdy\xf6\ +\xcd+\x94z D#U\xca\x969\xf4\x9b\xd2\xde=\x15\xe10\xe9\xd7\xd4,\xf0$\xc5\xa2Y\ +_\xbfK\xa8\xaf\xe1!\x03c\xa1\x15\x1cy^\x89\xb9\'\x0e\xca\xe3\xae\xa6\x15=\ +\xc4e&B\xc1N\xdb\x94\n(\xb3\xb2\xfa|\x19f6T\x92)\x8e\xc3~\xb3\xa5\xdeS\xd4g\ +\xde\xf7s\xbb\x10.\x15l\x17\x97D=V\xa9W\xb0\xf4\x99\xf1cm\x80\xa6\x15\x9a\ +\xec\xc5\xb0j*Sz\x0c\xbf%%!\xc5\x9f\xe3\xbd"\xf2\x86\xca\xb3\xbe~$\x1c\x90\ +\x06\xefK\xf1\tW\xb8s\x9e\x83\xcb\xb5&\xac\xfaK\x90bo\x9dc\x82\x95,\x98-A}z\ +\xaa\xf5\x05\xbf:\xffW!PU\xb0\xe4,\\\xa0\xd6\xdf\xe2\xc0e\xddv\x87\xbf6\xfe\ +\xff\xa0\xf3\xc5\x82\x85#\x02\xd4H\x8b%wg&s\xda\x83\xa8\x9fc\xf6j\xf9\x8c\ +\x1f\x94\x85\xe1|\xd2\x10\xeac<CL\x9c\xb6\xd5\xf7\x8dkm1\x93\xee\x7fT\xf8]\ +\x92!\x93+\xfd\xe5\xb4\x12rT\x11l\xa3\x94\xc3R`Fqp\xf4\xdf\xa7$\xf8j\x05\xe7\ +`\xbe\x1c\x92\xbd\x826T~\x9c\x9b\xe3\x9c\xf3\x1cf\xd0S\x18\x841\x07{!\xa1{\ +\xdd\xfb\xf3\x84\xcas\xbf\xbd\x97i6w*\xdd\xedjZ!\x96\xdc\x8f| \x0c\x12r\x0b]\ ++\xf8y\xbb}\xcc\xfb{\x8f\xeeN\x1a\xca )9\x90Co\xad\xcb\x9f;L\xd27\x1e\xcd\ +\xb4\x99\xac\xd6\xc4\xe6nVd-\x11\xb7/\x968\xeej;\xfd*\xa1O\xd7\xb7T1\xba{\ +\xefa\xf42\x1b\x1bwY_o\x8a\x920T~R6\xa0\x0e\xb25a\x06\xa3v\x8bg\x90\xe7\xd6_\ +\xba\xce\xaa\x9c\xed\xa6]\xba\xe4u\x0f\xa4L\x7f\xe68+\xfd\xbf\x89\xc2G1f+&+n\ +y\r\xb4\xea1W\x10e>Jh\x82-\xe8\xb8\x9b\xa6a\\\xd7\xd4\xa3P\xd6\xc11\x08)\xd3\ +/\xd9\xd5\xfaJ\xf1\xe0i\xf3\xd7\xa8I\xbai\x9ai2W\x0cT\xf5\xcaj2\xeei\x06\xcc\ +\xbdVhc/\xbff\xa2\x15\x03\x0f\x94\xc9\x1f\x00_]\x9ay\x86*X\xc6\xfby\xbc\xd9\ +\xc39\n\x81Wo|\xb1x\xa0S\x12FO?;\xf0pI\xa9\xb4L\x12\xcb\x1c\xf4\xb9\x1f\x97\ +\xff\x97\xe8\xba\x98C\x8e\x19\xfe!\xd3\xfb\x82\xcf\xfbo\xb0O\xcb\xf7\xc9\x8c\ +v\xbdg\xce\x99\xf1=\xfb\x8er4\x0f\x0c\xca\xae\x13\xae\xae\xfe\xa6\x1a\xf7\ +\xe6x\xb0\xf1\xe3\xe9XR\xf9\x93\x9e\x94\xff3\n\x90\x88z\x01\xd2`\x03\x94\xcb\ +\xd1\'\x99\xd1\xbb\xa4\xbc#{8\xe0\xd5\xd5\x9a\xd7\xd6j\xd6&\xb5\x82 \x15SZ\ +\x93%\xdb\xa8\x16\xe0\xf3\xb5\n\xa8\xd8\t\x1bQ\x81\xcab\xa7\x15R\xc6\xe4\x96\ +\xab 9\xf6\xee8\xd4\xefO\xd9\x04\x96{\xa3\xe3\xeb\x05\xbfZ\x7f\xf3eN\xe6\n+\ +\xee\xfd\x82\x06=xX\x92\x99\xc51%\xc2\x0e\xbe\x84md\xe1\x07\xb7\x7f\x8c\x1bM\ +\xfa\xf0\x91\xef\xc79\xdc\xb4\xdd\xa0\xdc\xff\xd8\xf1\'\x83s\xb7\x03H7\xeb\ +\xe3\xae\xef\x90\xed\xbdZO{\xd9\x1a*\xcc,R\x80\xf7L\x83\xd7\x0f\xcd\xba\x16\ +\xfby\xfa\x9cA\x7f\xc8F\x14\x9a\xa8\xde\x07q+\xc8\x00\xcf\xc9J\nE\xd4\xbbr\ +\x9a\x10\x92,\xf0\xac\rB\xe9\xcal\xbc\xe2=\xc3\xee\xca\nb\xe5\x0b\x98\xddp\ +\x93\xf5k\xe1\xcb\x97mTC3}\xd454\xad\xb0\xde\xaa\xfb\xb6K\x94\xea\xaa\x94\ +\xc3\x87\xc9)\xa2q\xc7RY\xbf\x13\xc7\xff+\xf2\xff\xa8RE\xe0Z}\xa9X\\\xd0;\ +\x19\xf6\xdd\x05\xae\x8d\xeb_+\xffw\x03\xe5\xdd;?\xb3\x06\xd6!\xde\x9a\xba\ +\xea\xb8\x07e\xa56\xd5\x81\xc5;\xcc\xbfZ\xce_:\xc0\x1c\xd2\xce\n\xd7x\\SUKD\ +\xd9\xd5}5\x18\xbf\x1e\x12\xb9\r\xc8i\xfc\x8f/\xa1\xdf\xa1\xd7df\x1e^\xbd\ +\xa0\x0eX\t\xcb\x18J\xf3\x8e\xd1e\xb8\xbe\xe66\x97)\xbbi\xb7\x17\xaa\'X\xe1\ +\x0e\xd8\xea\x04\xef\xe6\xa9\xc2\n;\x8fv\x07\xf9T\x92\x930O\x1e\x7f\x97\xf7\ +\xe1\xd1^W\xdee\x8c\x98\x01\xcd\x1f\xb9\xa7i\xdb\x8f iHk\x98\xdc\x9e\x12\xcc\ +\'\xf2\x81\xb0;3\x17\x1b\x8b)\x1e\x0c\xe4\x91\xfd\xce\x94\xd6]Q[89\xdf\x97\ +\x06\xff\x12\xfc3\xf4\xdeZ3\xe0\xf9$\xd4\xa3\x00\xfe)\xed\x8e^\x94\xf3\xddA8\ +\x1e\x9c\xc4bl\xee&A\xe4\xa0\xbc#\xc1@\xf6\x0e\x0c\xb4\xdc\xa0\x16wI\r\x99\ +\xe1\x1e6E\xe24\xfe\x11\xd1\x83\x17\x9e\xe0\x1f\x18\x9c\x07\x03\x12T\x15\xf8\ +\xa0\x1e\xd0{Y\x99w\xbe/b\xb0\x8a\xe0a\xde\x8d\xf7\x9e\xf1\xf5\xdf&vB\xd3\ +\xa8\xf7zSTaO~\xa5(\x1c\xc5\xf0\xf0\x06k\xc0\xec:\x1e\xb9L\xf94\xc5\xad\xec=\ +?\xe0!\xd7GP\x00Fu\xcd\xf8\xfaWf\xe6g\xfc\x01\xccx\xb4-}\xa2-\xf3\xf4\x88[\ +\xa2\xed\xfa\xf0\xbb=\xe3\xa8\xb1R\xe8\x7f\x86\xfc\xef\xba\x81\xd1\xab\xc1\ +\x18\xbcW\xb9q\xce_,\x13*42\xd9S\xd6H\xf7\xe8\xd0X\xd1\xdf\x1f\xff\xde\xb6U\ +\x03\xf9\xca\x95\x15:<>m\xe6yg\x8f\x99&(\x9c(\x7f\xdc\xd1\x9f\n\xb3\x98\xeb\ +\xd0\x1ds\x10\xe4\x0fN\xc65\xa3\xa0\xc8\xa7\xa1R\x81n\x1b\xa5\x0e\xfas\x8c\ +\x91.\x05\xed\xb2\x0c\xbc4\xf2\xac\xd47\xf0.\xd2\x89(\xa2l\ntQ\xab\x0b\\v\ +\xb5:\x11\xf0u\xc6)\x07\xb0\x08\x00\x00\x19\xbdIDAT\xe8\xd0\xd0\x90K\xf1\xd4\ +\x05(%\xd8\x06B\x94\t\x17\xa9\xf4\xf9\x01\xa6\xa2\xae\xb5\x94`>\x87\x16z\xd7\ +\xfc\xee\x8c\x86iU\'.\xdf_\x0e\x86"hvI\xe9\x90\xbf{\xe7]&\xaf\x7f^\x89\x9e\ +\x14\x8d\xd7:\xb8\xa7N2\x8a)\xb9:g\xd6\x05wt\xfc\x86S\x93\xf2?\xbeR\x05\xe8\ +\xa9*0\xce%\x98)\xc1\xbeL!\xf5\xf7\x1d\xed\xf55\xcc\r\xb2\xcb\xe6\xa9X0B=\ +\xb9A=~\x96\x18suA\xde\x00\xc9\x9b\xd2\x81"#\x13\xca\xdfv\xba\xc8\x89Y\x88\ +\x03!\xee\x8d\xfb\x07\xbfs\xce+\x96PR\x17\xf2\xeaDs\x18\xee6\r\x96\xac\x9d\ +\x06\xde\x9f\xa3\x157\x1a3\x0e\xbc\xf6\x8do\xf2\xea\xda\x84N\x84\x0b\xb93\ +\xb3\xf2\x0fz\xbf\xd72lF\xb5\xaeW\x0e\x87vN-\xbb\xd1\x89e\x0c\xbf\x1a\xff\ +\x87\n$y|\xb54C\xf7\xfd\xa4\x1b}1=\xfa\xb5\xf2\xbf\xd1=\xc9\x80\xfe\xc7\xadO\ +>\x88\'\xe3\x9aP\xc1\x9d&\xb22y\x99{w~@J\xc2\x81\x0b\x9c?\x82:=\xab \xf5\xdf\ +7M\x93\x1b\xd0z\x16\xdd"]\xdc\xc4U\xa1 Z\x93t\x05\x93\xf3\xa5\x12\xf2\xa4+\ +\xe5\xf1\xf7\xa8\xb3\x03E~\xc0K\t\x953\xa3:\xb0y{\x85\x8f\xe2T\x1b\x9e\xbaA\ +\xa8\x08\x8a2\xe4\xfc\x12\x8a\x9c\x9e!\xf5\xdd\xec\xf3\x18\x1eV\xc0\xfaFC\ +\xd3\xdc\xe5\xf2\xf8"~\xd0\xd6"\r\x9ey\xdcU\xba\xd8;?\xbb\x0fl<\x83\xd7>=\ +\x99\xd0\xb4\xeb\x8cFW\xb9\xe4\x97\x99\x8a\x94\x12\xe6B\x8f\x81\xcc\x11\xd9\ +\xc2\xfb\xc5\x99\xf5\xb7\x12\xfa\xa1G\x17t\xcfO;a\xa5\x1e\xab"\x9a\xef9K\x81\ +#\xcb\x9f\x84\xf2\xbf-\xb3\x1f(\xf3.7\x15\xadF\xcfr\xf3\xad[\xbc\xfe\xf5\xd7\ +\xca\xa1\x05\x94\xd0W\xca\'\xaf\xe5I\x0e{~iR\xac\x1a\xab}\xae\xd7.\x87\t\xb6\ +\xba\xc8\x0b7^S\x1eM\xe0C(\x89\xe4C\xc8\x80\x93\xc6\xefsh\xc4\xd6\xe0(\xf0\ +\xa6y\xc15\x87)(\xae\xd2\xb3c6\xe2&\x8f\x06\x8aX\x9f\xf8.3<5Y\xfb"\xdf\xfa\ +\xf6\x1f\xf2L\xad@\xbbM\x14\x1eu\r\x9bB\xc1\xc8\xd1j\xe00\xa3\xd4v(@\xebc9Y~\ +\x9a\x815\x947\x85\x97\x8a2\xd4{`\xc7#\xed\xdb\xe6\xfd\xb7xf|\x8d\x9f\xdc\ +\xfc\xaf\xbd\x078{WzY\n\x17\xf2\xde\xea:U\x14\xbf\xb0\xb6\xc6\xa4\x0e\xc4\ +\xa8\xdee\xb1\xcfd\xf9iM\\-\x15\xa3\x84,O\x92\xff6\x07t\x1dJc\xea|\xee\x8d\ +\xc6\xabl\xb4?C\xe2G\x18\xfa\xbd\xb5\x0bq\xd9Sk\xe1/3V,\xf4\xda\x9f]\x83\x97\ +%\xed|\xe0\x9cgqe\x9c\x1d\x7f9\x9c\x9fiV\xd1\xe7qZ2\xf6\x11\x96\x99\xfd!\x1d\ +\xf9\xcbPV\x0c\xa1\xe0W\'uA8\x1d\x8fBF+\xa6X\x10[1\xb2\xe74\xc1\xd2\x03\xa30\ +A\xba\xc8\xfdn\x87\x8b\xa9\xd1\xe4C\x0f\xab\xe3\t\xcei\xe8\xe1\xd4\x9c\xa1$\ +\xd93q\xba+\xae,\xb8\xe5\x04$\xc1\xd7\xab\xbc\xf3\xcem\xae\xafM\x18\xd9\xa18\ +\xa8\xca\xd2\xcf\xa9\xc5U4\xe0\xa4\xe1\x14\xe8\x95\x9e\xe3\xdc\xc7?]_\xe77\ +\xbe\xfc\x1a_^\x9b\xe4\xf1\x0b\xdb\xb9\xa9\xa9$-\xcf\x13\xcc\x15\x98\x17\xf2\ +\x18\xeb\xb3\x9f\xc0\x90qUQ\x99\xaf.\x93\xba\xf7\x9e8\xcf\xccz\x9aY\xb8\xec\ +\xda=z\x1f\xf4\xcaP\x08\x9e\xf1d\x8dW^\xfb*\xab\xe3\x1a7V\xcfS\xec\x02\xf7\ +\xdb\x86\xa9do\xca@qIy\x03\x1c\x9c\xa2\xc0\xe9\xcd\xfdg\x8cq\r\x15<%a\xab;\ +\xd4\xdc\x1f\x0f\xaf\xbdz\x03\x11\xe1\'\x1bM\x114f\xc9&\xa7\x02\xa3\x07\xb1\ +\x0b\\\xbf\xaec~i\xf5\x9a&\x94zX\xad\xeb\xcc?\x81\xad\x18i\xbb\xc8f\xfeH\xd7\ +\r\x12\xa9\x8dwN\xa1\xfd\xaf\xca\xff\xf6\xae[\xcd0\xcc\xb8\x9b\xff\xd7\xe7\ +\xfcZ\xf9\xdf,\xdc\xca\x84^>8\x06\xe3\xb6{\xd6&!{R\x84\xd5:0\xf9\xa3\x7f\xc5\ +V\xf3\x15~\xf8\xd6\xff\xe1\xbdw\xfe\x17\x98\x80\x1a\xb8\xdb\xcbk\x0644D\xe8\ +\xf5\xf5u\xee\xb7\x8d\x86oS\x86\nH\x02.h\x88\xd5\x85\'<#\'\x0c\xbf\xe47\xd8\ +\xfd\xc6K\x99(\xe0|Q\xdev~\xeb+\xc4\xbf\xfc\x9e\x86#3\xbfUU(\xf3\xb6\xeb0\ +\x1d2\xe7\xe6JH\xc8\x1dy\xe90\xe1Rs\xb2`\xc7=uD\xe0\xc2\xc1i\n\x10\xf4<b\xef\ +\xb7\xfd\x98\x15@;\xc0^Y\x9bp\xe7\x8d\x1f"\xa2\x08\xcf\x95_\xd6\xc37\'\xd2\ +\x15@:!{\x03\x16\x8b\xd7\xc4\xd6\xc4\xdaO\xa4\xc1^\x05\xf5(\xfe\xb77nra\xfc\ +\x85\xe2\xfd\xd5=\xe5\x99?\x05\xc8\xd1\re\x8f\x1fT\xfb\xd8\xd8]/K\xbe\xfe\ +\xda\x97\xf8\xee\x9f\xfe\t\x1b\x1b\r\xe3q\x1fF:@8\xc8\xe3\x9c\x8ah\xdaA\xee\ +\xf9u\xaf\xdbe_\xa6t\x9d\x10\xbb-\x0e\xd3!\x8fr\xe8.%\xe1\xea\xea\x17\x99\\\ +\x7f\x8dsU\x06\n\xb5\xb5rj\x04\x9c\x06\xa2\xd9\x0f5\xd3?\xf5\xdf\x0fs\xc3l\ +\x1e\xc6?)\xc1\xf3\xd7\xc6l\xbc\xfdWZ\x06\x9e\x95o\xab\x9aS/B T\xf0\xcaW\xbe\ +\xce\x8d/\xbd\xca3u\x06\xfd\xf5\xb0Z\x07@\x01\x0bc\xd4\x82\x1f=\x03\xfb\xb3C\ +\r[\x85\xd38M~\xba\xfc\xd0$\x039uDQ7\xfa\xaf\x8d\x83z\xe2DX\x1b\x83_\xfd\x1a\ +\xff\xe2\xf5\xaf\xf1\xa3\xbf\xbd\xc5\x7f\xff/\xdfC\xba\xa6\xcc\xdbxx)+@S\x11\ +\xe6\x93p\xf5\xb3\x13\xd6\xc65iL^\x93\x98\xc7O.\x1c\x99M\x97\x18*\x83\xc7\ +\xf3O?d\x9c\xe1\x8d\xf5\xf2\x1f`|\xe3\x9f\xd3n\xdc\xc1u\xf7\xe8\xba\x87\xc4\ +\x8c\x99\x962b\xb4\xb8)\xde/\xb1\x98\x91\xc4\xcbzx\xff\xc4\xbb\xd5\xc1\xb2\ +\xc9\xcb_\xf9:\xaf\xddX#v\x91\xfbQ\xf1\xc6\x8a\xfc\x1e\xeck9\x86\xf6G<@\xbd`\ +\xb0\xa4-\xb2\xf0=\xaaQ6\x1b\xebT!0r\xbahV9d!\x9cf\x90\xc8\xb2\xe0\x84sN\x05\ +n\xf0\x9e\xf5\xa6\xd1\\!\xaf\xaen\x843=G\xc2lB\xed\xf1+\xd0\x0b\x9c!\xd2\xe4\ +x2a\xb3\xf5\xfc\xf9\xad\x1fs.\xdd\xc6\xb3;\xa3i\xfa\xdc\x14\xd1\xae#\x8e\x8b\ +\xe3\xafL\xd8\xf5\x8d\x86?\xf8\xe3\xef\xe0=\xd4\xde3\x0ek4]\xa4\xeb\xc8\x96\ +\x81\x8e\xa9/\xcd>}\xfce\xc3\xa6\x9e\xf6\xa1Z\xa0\x8b\xd06=\xee\xc7P\xe8%Q\ +\xa0\xbfG\xe6^\xce\x9an\xd7E\xe6}\xe0j=a9\\\xe1\x99\xfai\x16C\xcdd\x14\xf0\ +\xa3\x90\xab\xc6\xec\x90\xa9\xa9CC\xa8&H\xd7\'D\xb7\xdd@\xd1\xe2\x0c\xddm&\ +\xcc\xd6\x1f^C!\x14\x16v\xd8\xc8VFJ\xea\xc2\xb4^jv_\xca\xde\x0e\xfb|\xfd\xf2\ +?e\xf2\xf9\x97\x08!\xb0\xe7\x16\xb9\xbd~\x84\x7fR\x0e\xe5\xd4\x81\xcfP\xd3vQ\ +A\xafD7Ir\x8a\x1b3[%q<\xfd?\t\xfe\xb7{\xcccw\xb7ix\xe3\xcd\x9bt\x9d\xf0\xe0\ +\xa3\x8f\xc0/\xffZ\xf8\x7fX)\xa1\xd3\xe9\x7f\x9eI\x10N\xea\xba\xf7>\xceT\xef\ +\xbc\xb4\xb6\xc6g&\x13n\xdf\xf82?\xbb\xfd.\x0f\xd6\x7fL\xdb6\xf8\x01\x94\xfd\ +Qo\xc3^\xe6\xb3\xf5\x8d\x86.\xc1\xc5\xd1\x15n\xac\xd6e\xfc\xb1S4n\x0bs\xce\ +\x9f6\x87\xa3\xe3\xcf\xbf\x1b&L\x9a\x17\xa6\xd9Xg7x.\x7fv\xc27\xbf\xf3\xef\ +\xf1I\xd8M\xbb|\xf8\x8b\xbbl\xfc\xe2.;1\xd2\xb5\xef\xcf\x1ch\x1a>[\xd2d\xf7\ +\xb2\xcf\xa0W\x82\xf4w\x1b\xcd\x87\x00\\_{\td\x8a\xb0D\x12\xe1 \t\xf3\xa7\ +\x19\x00\xc3\xb1\x0e\xf8\xd9e\x9a\x0f\xadw\xe9\x84\x83\xf0\x19\xdex\xeb]p\ +\xf3\xd9c\xd6_\x16\x028\xda#\xac$\x81\x0eC\x08\xf93\xdeA\xd3F\xda6R\xad\xdd \ +\x8cj\xa4\xd3\x03\xb9\xc7\x91:y\xfc3\xfbo8\x07\x1b;\xbdA\xd2\x12p\xd5Un\xbeu\ +\x8b\x7f\x92\xd6\xd8\xeav\x10y\\Z\xda\xc4.2\xed\x84G"\xbd\x87\xc8]\xa2\xaa<K\ +WF\\\x1b\xadpq\xfc9*\xbf\xcc\x82\xf7\\z\xcaS\xcd\x03>\x94\xfd[\xaa\xaa\xe8Cg\ +\xa7]3c\xf7\xb3\xb24%\xa3\x95\xd2\x7f\xa3i\xe8\xb2\x11r\xa5Z,\xf3\x8fQ=\xfe\ +\xce{mN\x9d`u\xed\x1a\x93\x1b_%\x04\xcf\xa6\x08\x9b\xeb\x91PA=\n\xc5\xe0\xf7\ +^\x7f\xaeG\x8a\xa5f!m\x00$\x12\xb37\xfb4\xf1S\xe8=\xdc\xb7%\x95a\xb8P\xa2 \ +\xa4]\xcc\xca\xbe\xc7\x89P\x85\xc0\x17\xbe|\x83\xe5\xe7j\xd6\xdf\xb9\xcd\x8f\ +\xde\xba\xc9cK\xcc\xf6=\x84\xcb\xfd\x8c\xba\x7f\xf9\xea\xd5A\xca\x05\x8c}\ +\xcdx\x84\xd2?\xe6\x90|\xdc$\xb9\xa5\x9e\xfeg\x9c_@.\xfe\x91c\xe5QJ\xc2x\xf5\ +:\xc1K\x89\xd4,\xe4\xbfov\xc2n\x17\xf9p\xe3\x17<\x88\xf7\xd9k\x1b\xadj\xac<\ +\xde/\x11\xaaK%\x11\xda{5\xbeD\x84\xf1\xf3cpF\xffP\xe4g\xec\xa0#cN\x15\xfe?2\ +\xe4\x99\x9f\x86\xde\x83A\x9c.a\x1b/\xc7ds>H\xea\xb2;\xac\x13\x16:\x14-\xd5\ +\x1e\xa5\xbf\xc6\x12\xf8p\x91\xe0\xb5\xc4\xd4\x12\xce\xa2\xefA\xc8\xf4\xf2,!\ +\xc7z\x8e6"\x84Df\xaa\xd3\x85\xa8mR\x8b\x01\x07\x07~<\xc1O\xeaRf\x0c\xaa\x95\ +\x9b\xb5\t\xb0\xe2\xe7\xd8\x94C\xe6\x0f\x85\x87\x8f\xf4=\xde-\xa2%\xe0>\xbbe\ +s%\x15\x1a$z\xfe5}\xd8\xfaF\x03.\xb0Dd\xcf\xa90\xf2!p\x05u\xc1md\xc1\xd3ug\ +\x8c\x7f@\xbf|\xb62\xbe\xf1U~\x14\xb7\x88]\xe4\xce\x9d\xdb\xd4u]6{\x17\xe3\ +\x8c\x80\xabF5O\xd5W\xa8\xab\x8b,T\x97\xb9\x12.\x82[\xd2V$N\xe9\xd3t\x92\x91\ +9\x07\x1bC\xb4\xcc~\xae\xb8\xee\x03\xc1\x0b\xa1\x12$\x056\xda\x88\x93M\xa2\ +\x9c\x92H\\\xbc\x0cz\x98[G\xe5>\x0f\tv\xaf\\\x06\xb4/\xd3F\xf3\x8b\x99R~\x06\ +\xee\xfdy\x1fx\xees\xafP_{\x89\x10<\xe7\xcf\xe9\xe6\xddO\xda\xf7\xeb~\xdb\ +\x10\x9dW\xf6\xa3\xf7\xbe,\x01\x87N\xfbty\x97\x1b\xf2f\xfa\xfbd\x18\x1d\'\ +\x8f\xff\x93\xe0\x7fK~N\tb\x9c\xe2\xdc\x94\xae\xeb\x93\xb9\x7f]\xfc\xdf+)=\ +\x0eWO\x7f\x13\xae*\xb4\xa3(\xb5\x03\xb6\x1f\x84Gq\x0b\xe1\x10\xe7<\x97W_\ +\xe6\xb9\xc9\x0b\xc4\xcd\x07\xb4?\xff\x80v\xfd]m1\xc3P\x98\xea8\xde\xb9\xfd\ +\x1ew\xee\xac\x93D\xb8\x18\xae\xe8{+\xc5\xd0\x19U\n\x8b\xd0:\xed\x89\xd7\xc5\ +\xf8\xb1\xc7_\x04V\xce\xa10\xa3$\x89\xd0\x8a\x80h|\xdf\x80\xf9\xbc_\xe4\xf2g\ +\',_\xb5}\xfeUR\x12\xe6$2\xed"\x0f\xe3\x0e\x9d\xec\xd24[ \x9bY\xf9[b\x14.\ +\x95\xea\xca\x8d\x8du\xda\x18\xf9\xda\xef~\x9b\xc9\xea\x0bh\xb8\xdb\xb3\xd1\ +\xeaAb\x8a\xdcIW\xf1\xa20\x08\xbfXC\xc8\xcc\x13\x92T1\xbf<\xb9\xceo\\\xa7?8\ +\x9c\xcf-\x18\x18\xe4\xc50P\xbe\x17\xe9s\x82\x16y\xbc\xb3\xc5\xbc\xbf\x84g\ +\x17a\x11\xcf.~u\xc2\xab\xaf\x05\xaci&#}V\xdb\xaa7\xb1\x8b\xa7\x8f\xdf\xc6a\ +\xb4\xb6R\xf0\xde\xb8\xf1\xa5\x82\xeb\xc5\xeb\xbf\xc5\xcf\xe2C~\xf6\xe6\xdb,\ +W\x17\xb9Xy\xf6\\\r\x01\x96\xc2.\x95_\xe4\xd9\x12\x13\xc9\xbd\x07\x87\'\x8eS\ +\x84hI\xc2\xe1\x0e4\t\x96h\xfa\xfd\xeb=s\x950E\xe9oH\xc4\xa7\xc9\xcf\xa1\x12\ +T\xe0\r|\x8f\xfa-\x19(T\x04"\x19\xd5>7\x9c~\x8cg\xbb\x13V\x9cg\xdey\xaa\xd1\ +\xf3\xac~\xf1K\x8c\x9e}\xae\xe4\xe2Y\xbf\xc2\xfbI\xe1.\xf6S\xe4\xaa\xf74.p!E\ +\xf6\xbd\x07\xa7\xc0\xa0!\xe9H\xbb\xce\xe3\xdaX N\xce\xba,D\xd7\r\xf6\xaf/\ +\xf0\x1b\xda*\xa3\xeb\xc0y\x01\xb4\xbdG\x97\x84\xfbQ\x1bX\x93\xa0\x9eL\x08u\ +\xcd\xbd\xe6\x01\xef\xdf\xfaK\x8d\x84x5DL\xc6ui^\xb1\xbc\xf2\xd8w\xbd\xc7\ +\x1a)\xfb*0\t\xb0[y\xa6x\xda\xb69\x93\x7f\x8a\xd2\xe3|12\xbc\xd7\x9f\xd5\xb8\ +\xec+\x97\xdb\x0e|R\xf9\xbc\xe7<\x0b\x0eV\xbc\xe7\\]\xb3\xf2L\xcd\xe3\xfd\ +\xde\xeb\xf4P`~\xfa\x00v\x1f\xf2@\x0ei\x9a{\x88\xec\x93:m\xa7r\xae\ne\x1e\ +\xd60Z\x01v\xa1v\x9a\x80\xdeF\x95\xcbG\xcf\xaf\'<@\xd5\xe07C\x97\x96\x1d\xb0\ +\x9e\\Y\x93T\x005\x9d\x14w\x97\xc1t\x1b\x0e\x8f\xb7\xb8\xbc\xefq%\xdaN\xa8CM\ +\xec\x14!\xb3\xed"\xa3\xcaJ;\x85\xbb\xc2\xb1\x9e\xa3\xd5Z\x98K\x9e\xb77Nq\ +\xe1\x02.w\xb4\xb5RQ\x8bi\xf7y;\x1e\x97a\xc5\x85A\xc5\x06\x825I8\x98\xf3\xb8\ +\n*\x1fX@\xd8K\x9e\x85|\x98\x1e\xe6\r\xad\x80o\x8ap\x1b\x0b\xdd\x84\xbb\xf9\ +\x805\xc8\xf6P)]?7\xd2\xb7\xbc-\xa7\x8f\xdfJv\x8f&\xcb}\xf9\xf5\xd7y\xb0\xfe\ +\xf7l\xdc\xf9;n\xdfY\xd7\x9e.\xd5\xd3,\x8d\x9ec\xa5\xbe\xc8\x0b\xa1\xe2BxF\ +\x11\xab\xe7<\xcb\x87\xc2\xf9\x8b5\x0e\xf5>y\xa7 R\xba\xa6\x81\xad\xd8h\xdcw\ +`!w\xd2\x870\x89\xeb\x90\x13XW\xbc0\xc9\xae^\xd9\x88\x90\x9ac\xc7\xaf\xc9\ +\xae\x14\xda\x9b\xd0\xecD7\xb4\x08,\x8e^`\xde\x07\x1e\xb6\ro\xbc\xf1\x97\x8c\ +\xea\x9a\xc6\x92\xf2\x1c<v\x81\xb5\x1b\x9f\xe7\xea\xe4\x05B\xa8\xb1\xd8\xed%\ +?\xc7\x85p\xa9$qnE\r\xbd\x88\x037\xc0\x81\xb9\xdbE\x16PH~\x85\xe1WZNjX(\xfcs\ +\xb2\x05\xffI\xf0\x7fbN\x05l\xb7\xc5\xfa\xfa:{IX_o\xb4tv%\x10\xfe\x81\xfc/)\ +\xd0m\x1cO\xfb!\xbd\xfbN\xd6\xfd\xdfJRd\xb6\xe8\x13 \x1d\xb4\xd92\xf5\xbeW\ +\xeaA\x08^K\xb3WF\x81\xf1\xe7^\xe4`\xfa\x156?l\xf8\xe0\xceO\xd9\xb8\xf3\xc3\ +\xc23\x1f\xb6\r\xdf\x7f\xe3\xaf\x88Q]\xd9\x93\x17_\xe4~\xdb\xe4\xf2l8\xe74|\ +\xb0\x92\xd7\xe8m9\xd9\x03aJs\x7f\xe8\xda\xe0\x8d\xae\xfd\xba\xb8,\x8c%\xdf[\ +e\x05k\x18%y~\xb4\xc4\x9e\x0b\x88hHlX\xed\xf6\xd1\xdd\x86\x07[\x82l?\xe0\xe1\ +\xd6\x16M\xbb\xc5y\xb7\xc0\xf2\xe4:_\xbb:\xe2\xe0\xf2\x84\xa6\x8d9I\\\x98\ +\xd4\xfa\x9e;\x1b\xe1D\xfe7\x0f\xa1%\xe2\x97\xbd\x90\xd4\xa3j8J\xa5\xa4>A\ +\x13\x8d\xde\xbd\xc5,\xe8\xfc\xea\x1cj\xd9\xd9\x8e,\x8f\xeaA\t\xb0\xe6\x9e\ +\xa4\xb0BJ\xca\'\xc1[\x0e\x9d\xd0\xb4BJ\xeb8\xe73\xff\x07\xeaZ=\xaew\xce\xa0\ +\x7f\t\xfb\xa4\xfep\x18\xa6\x03\xb8\x14q\x04\x12\xb0<\xbe\x0e)\x03u\xe6\xb9\ +\rk\x92,i]D\xc7x)\x84\x99s`g;\xa2\x18U\xbeT\xb6\x19\x08\x9fU\x9eV\x95\xf6b\ +\x1c\x8f<\xce\x05d\xa39\xd1\x0bQ\x94\x9c\x81\xfc\xb7uQe"\xc3\x01\x90\xf7t\'\ +\xb4I\xe7\xbc2y\x99\xcd\xf5w\xb9\x1f#+!\xf0\x1b\xd7\xd7\xa8WoPU\xea%\xaf+\ +\xcfJ\xe6\xb5C\xa7\xeb\xb6\'\xbac\xee\xe7u\xbe\x8f\x87\x0e\xf6\xd3:{\xb9\x8a\ +1x]\x83j\xac}\xcf\xd6\xd3\xc9\xfcc\x8aOO\xbf\x9c\xfcm=\xe1\x9c\x15\x9a\xe8\ +\xf9\xd5\x8a\xc7\x89\x9ey\xde{*\x84\xa9\xf4\x9e\xf3\x10\xb4u\xc7\xb3\xab/\ +\xf2\xe8\x83;\xb8\xdd\x8e\xaeS\x0f\xddx\xf5%]\x87(,\xf9\x06\xf1\x01\x9fs\xb3\ +\x86:\x8e\xcf\xfc_\xd75\x0bIx7\xf9\xde\xd0=\x86\x7fJ\xb51}>\x9fsZ\xfc\xe2+m\ +\xe5\x11\x13\xd9\xdb\xa5|`\xe3\xad\xfd\x01\xad\x08\xcb\xf6\xbc\xca\xab!.\xc2\ +\x82Sl\xab\x84*\xb1\xbb]\xc34\xeb\x19\x0bi\x17\xbcr\x9e\x01\xb1\x1a\x8f\xdb3\ +F#\xc1\xb9\x9a\xd44\x0c\x85\xc4\x8c\x02dU\nC\x85\xc1\x92\x94,\t\xd0\x92\x19\ +\xcbf\xf1}\x86\xbeb`P\x18,\xb9AB#\n\x8c\x16\x92\n\x93\xd8\xa9\xabj\xc1\xb0O|\ +\xc6\xb7AN\xf4\x1ci)\x9f\xd7\x9e\r\xc7\\\x96\xb8V\x14\x88\xdc\x94q\xe6\x1e\ +\xc8\xc9\xca9\xacA\xc6\x03r\xbd\xf0\xf4\x08+\x1e.T\xda\xb2`N\x84)\x81K\xa1/\ +\x0b\xb5\xdeBQL\xf3\r\n\xc2\'\xaa\x80\x89h\x1eD\x14\x8fs\xdac\xe8\xe3\x8c\ +\xbf\xb8\x9es\xacZ\x92W,\x96\x14\xb8\xba\xf6\n\xcb\x93W\x98O\xc2\x81\xcb\xd6\ +o\xd6\xda\xf7Pw\x1f\xfb\x9a\xd71\xef\xbd6ou\xbe\xe4z\x84J\xc3^\t\xa1r\x8a\ +\xd3d\tp\xa3\x91Z\x15\xd6\xd8\x0f\xf2\xbawB\xeb=\x93J\x90\xec\x15\xea\x9b^\ +\x1d\x9d@/x\x92y\x7f\xe87\xb2\xd1\xff\xe5\xaf\xff.?\xb9\xf57\xdcY\xff)\xeb\ +\x96\xffS]e4y\x99\xf1\xea\x0b8\xaf\x87f\x08\xd9C\x92\xadpE\xc1\xaeq\xae\xa1\ +\xf2\x1afy$R:-[o*\xd1\xa8\x18M\xa7\x16c\xe5\xd4=\xecQ%\xf6\xa4\xf1\x7fR\xfc\ +\xef\x9c\xe7r]\xb3\xb1q\x97\xef~\xff\x8d\xe2Z\xff\xecx\x8d/|n\r\xef\xf9\xa5\ +\xf9_\x0fC\xe1\xd9\x00{\'\xf0\xcfp\xfc\xce\xf5s(\xcbcss\xbe\x1c\x16%\xa9?\ +\xdf#N]\xd8U\x15\xb8P\xa9E\x95P\x87\xc2\x17^^\xc3\x7f\xe3u>l"\xb7~\xf0\x16o\ +\xff\xf5\x9b\xb4MC\x97\xce\xf3\xe2\xf5W\xb9>\x1e3\x1fj\xeeu\x0c*J"m\xa7\xfd\ +\x00\xdd\x19\xf4W\xcfa\xff}o\xb4\xccbJY\x92h\x1a\xf0\x95\xb5jIh\xc3R\xef=\ +\xe7\xfc"\x8b\xd9e\xee\x80\xb0\xec\xf1\xcb\xd6\xa0\xd3s9F\x1eI`\x0f\xed\x0c.\ +9t\x1c\xbb\xec\xe5\xebT\xb1*\x00\xa4)\x97U\x9f0\xfea\xd7k\xe8\xc3E\xa5\xd7W\ +\xe6\x13]\x9fYoy\x14S\x8e\x04W\xf5\x95\x9bU>x\xa7\xc08w\xed\xae\x9c\xc7{\r\ +\x13=\xea"S<\x97|\xe0Ql\x98f\xe5\\2\x0f\xb5\xb9\xb1\xe6\xa4Vz\x9eF\xffax\xcc\ +\x94h\xf5\xe2\xf6\x8aiLj\xc9k~\x87\xcf\x95Z\x92A\xff\x80l\x80\x8e\x82\xeeW\ +\xef`\xce\xc3\x14\xcf(\x84"\x13B\xa7\x07m\x14\xfd\xaau\xf1z\x10\xdb\xec\xe9\ +\x89\xa2\nV])\x18`\xa8\xce\x90\xffY.\x0eeh1\xea\x8c\xe6\xa9?\xa4M\x99\xbav\ +\xfd\x8b|\xe6\xda\xf3Lw\xc1\xd5\x97\x19\x87@\x15\x14\xb6e\xc5\xab\x97\xe2R0e\ +\xdb\xe3+\x0b\xb3(\xadC%\xd9\xa0Q\xa5\xc8\x0c\xa6.7\xb7\x1e\x8dj@x\xba\x92\ +\x13\xf7o\xa8B\xaf\xdb\r\x95\x0c\x93=\t-\xca9\xa6BKDJ\x9e\xa6s\xda\xb2BCG\ +\xba\x0e\xa9~\x95\x10\x02\x8f\xda\xc8\x97\xbe\xa1\xe0\x9aQ\x94\x7f\xf6\xacR\ +\xb3ScY\xf0\xc5\xd3E\xce\xa3\x1c\x8f\x94T\xc1\x9f\xb1\x7f\xab\xc1\xf9:\x1c{\ +\x9eS#\xbdQ\xe0\xbc\x9eo.\xcf\xa1\x91\xc7\xe0\xb5\x8f\xa7U{V\x1e\xa8\xf4\x19\ +\xa1\n\xe5\xfc\x8d]]\xc2\xa4\xdb\tFNS\x07\xac`\xc4x\xa8\xca\xc0\xc0\xe3Q\xe0\ +\xb8f\xd8\xb3\n\x90\xcb\tw@\'\x1e,\xac2\xb0\xec\xfb\xc4\xc8\xdeB3A:\xb4\x1eN\ +\xbc7k\xa8Z5\xe3iZ%\xc2\x12\xba\x802\x08\x11\x95\xf8\'\xcaX\x1e\xc1W\xe1D\ +\x07h\x957\x9c\xcb\xc4\xe8\xc4\x17\x10\xb9aF\xbaY\x1c\x0eJ\x92\xe1\x0cC\xb9\ +\xc0\xb6\x83\x0b\x08\xf7\xdb\xc8\xb9\xec\x82\xc4\xd5\xa4TS\xf9\xc8d\xa4\x01\ +\x84\x8d\x9c0\x99D]\x91z@\x0e\x08,\rT\xf5\xc7\x1a\xff\xa8\xa2\x80\xe4\x89\ +\xf7\xc4\xd8\xdf\xa9L\x92C\x03N[Z$,\x93^\xe7\x98\xb2v\xae\x8d!Cf\x14)\xf4\ +\x0c\x83\xec\xfd\x10<\x01O\xe3\r\x12\xc0\xa3\x1d\xe8\xf3;E=\x1d*\x94#m\n\x10\ +\x1b\xaa*\x9c\x18\x06\x08\xb9\xd5\xc2E\'l\xba\xec\xa6u\xbdg\xce\xac\xaf\x8b\ +\xa3\xe7X\xfd\xfa\xef\xe1\x80\xd86Zu0\x10\x8e\xa6\xc8\x92\x84G\xed\x16\x00\ +\xe7\xbc\xd2\xdfgK\x7fT\xf8\'2\x97`\x9a\xf4\xf0\x94N\x0fs;\x80m}\xf5\xf7\x92\ +\xc7\x7f<\xfd?)\xfe\x07\xf8\xad\xd7\xbf\xc9\x9d7\xbfG\xd348\xa7x#\xbf\xf7\ +\x07\xdf\xd4\xc6\x96I~i\xfe\x7f\xd4\xa9e\xe3\xbd\x9f\xe9\x08}\x94\xfe\x960l\ +\x15?\xa6\xe8\x0c\xf9\xc8\xae\xd9\xa4Z\x06\xf4\xb2\x83P\xdd\xea\x00\xe7\x9c\ +\',\xab\xa2\xffL\x1d\xf8\x97\xdf\xfa\x03~\xe7w\xbeN\xf3@\xf9~\t\xd8\xce\x07\ +\xee0y2\xaf$\xbb\x12i\x93\xa7\xce!\xb1\xe3.U~4|j9\\Co\xe8Px\xe9>\xce\x1e]S\ +\xbaMQu}i\xad\xe5\xb8y\x07){\x80*\xa7/\xf3\xae\xc6\x10|A-\xe8v\x10b1o\x82\ +\x93\xa9\x82\xf7\x9d1~\xef{\xe5\xac\x13U&\x8d\xc6\x95\xef\x8d-\xf3\xf6\xd9~\ +\x98Y\x93,?\xaa\xac\x04\x15d\xe2\xbc6O\xf0O\x0c\xa5\xf5\xca9\x1f \xaagQ\xbd|\ +\xe6I\xeb\xad\xfap\xc6\xf85\xfc\xe8\xf3\xc1.\x85\xe6V\xdal{A\xf9%\x97<\xbba\ +\xc2\xb0\xd2^\x128\x11\xbab\xc4\x01\x8f\xa5\x1c\xde\xa1\x82P\xd54Qz\x0f_V\ +\x00;\x19\x18\xd2\t\\\xe5i\x93.\x8by*\x8f\xbb\xccCVy5.\x8c\xfeC\xf4a \x1f\ +\xbc\x83\x10e\xfe\xa5\xab\xbe\xa0\x88\xc1\xe8<B\x8a\xdc\xefD\xe5\xbf\x07R\ +\x8f\x0e\x1d\xbc\xa68x\xd7\xcb\x1fr\xb3\xd8\xd4\xa9\x8c2\xbe\xec\x92\xc7\xc5\ +\x06\xf5\xa8\x07\xf6N\xd0\xe0\x94\x7f\xf2g\xb2\xfcQ\xda\xf7\xf4(\x15\xc9G>;\ +\x94?*\xc35\x14\xf7(~\xc8\x9e\x81i&\xf8L]\x97\xe2\x02\x9f<1{\xe8<B\xe7\xb4\ +\xd8\x85\xee(\xee\x9b\x1a\xca))\x8d\xe5\x94\xfd{\xd1\xa1\xc6\xb8d\xe7\x87\r4\ +\xf3\x886\x11\xef\x8d\xe2^>e~Mh8;\xff>v\xc2~\x12.Xa\x03j\xc0\x8f\xaa\x80\xf7\ +\x82\xf7\x83\xfcTG\xa9f\x16\x03\x8e\xc4S%\x95\x9f\xdbI\x8bo\x86\xe3?J\xc7\ +\x92l\x17*U\xb4\rkB-\xf1\x1e\xad\xd7\xa1\x95\x1dn ,l\x91Be\x07\x902\xce\xf2\ +\xa1\xf0`?\xf0B\xb5\xcb\x85\xd1\x9an\xd0l\xc9\x8fG\xb5\xe6\xa4\x00\x8bN\xbd%\ +M\xec\x17\xd5:\x9a\x1bc\x9e\x9aD\x8cj\x9a\x0b\xc9\xbaj\xfb\x9cs\x98\x85N\x8a\ +\x1a.I1\x97\xd7\xf9\x0c\xad\xde\xc7\'-\xc4\x81h\x8c\xf7"slv\x92\xd1Q\x1b\xea\ +0\xb0\xf0\xe8\x93V\xf1\x01\xef<\x8d\xd3Lz\xabZX\xbe\xe0y\xec(a\x87\xd3\xc6\ +\xdf\xe5\xaa1c\x1a\x9f\x99E\xe9<h\x11aqn\x97!\xf7\x9d\xe5H\xf4x")\t\x8f:a*\ +\xbde\xb7\xd16\x8c*\x05\xaa4Kr\x1c<\xad\xe1\x0c\xf9@\xeb\xbcv\xbd\xce4\xaf\ +\x9c*\x84=(\xdfI\xe2\x87\xe2\xa6=\x97\x11\x84\xad\xda.\xcfF\x15\x11\xf3\xb2\ +\xe5{\xc7\x93\x89j\xea\xd5\x8cgR\xbd&\xe2\x81E\x16$\xb2\xdd\x1d\x92\xe8\xc7\ +\x9fR\xe6\x9fZ\x95\xcb\xc5\xa4tpN\x93\xdf\x92\x85BQ\x85\xa8\x0f\x01\x9d\xce?\ +\x9f\x04\xff;\x07T\x81\xd7\xbe\xfd\xc7tI\xf9\x7fg\xce\xf3PvYo#\xc1\xfb_\x9a\ +\xff\xb7\xf3\xb3/\xa6\xdd\x13\x0f\x00s\xfd\xfbc\xc6\x8f{R Y(\xa9\x8c\x19\xa8\ +\x88hgz\x15z\x0bN\xc3\xbcS\x11\x1a\x17\t\x07\xe0\xe7\xc1/\x03\xe7=\xab\xe3I\ +\xc9)\x1a{=\x14\xdb\x1c\xde\xb3\xd2U\xa1\x17\xd0G=\xb2\']!7_}\x02\xb7&W\x94\ +\r\x95O\xf3\x16\xe1B\xfe\xbb\xce\xf5QV~\xa6\x02;\x87y\xfdC`T\x85REX\x110\x97\ +\x82\x0f5\xd2F\x15\xf6\xf9`\xb0\x1c\xb0\xed<~\x7f\xc6\xf8\x13\xcaCUV\xce\xa0\ +W"t|R\xc6[\x92r\xc9V\xf3`em\xff\xee\r\xbc\x8b\xd0 )d\xda\xd4\xa4\xd40\x1ey:\ +\xaf\x8a\x9c\xf3\x81\x06\xb2\xe2\xae\x9b\xcd\xe7\xf1\x08\xe4n\xea\'\x8f_\x15\ +,S\xd8\xc0r\xde\xd4\xa8\xea\xef+^^S>\x9dA\x0b\xf4a\xb2\x94\x02[I\xd3\x07\x92\ +D=t\x92\'\x1c\x98\x12\xa7\xcf\x19\x07Mz&A\x18\xf9\xe2u0\xc5qhT\xe7\x11\x9dJ\ +\x7f\x0b\xe4\x9a\'\xd1r~\xca\xfe\xf5\x9a#c\x8au\xd9\x13\x99w\x86\xde\xbb(\ +\x1eC\xaf6\x9c\x9c\xd1(\xa8\x17\r\x95\xcf\x93\xaa\xa6\x89\x91\xc5\xec\xc5]\'\ +\x12\t\x19\xbe\xc2\xc6#\x19\x87\xc9J%\x8e\xbfR"\xe7jz\xf0R\xd6\xa4\xa7o,<d8I\ +%\x7f,\x9f_\xeaq\xd1\xbd\xa3\x80\xa2\x06\xbc*\xecw[\\\x19=S\xe4\xa7w\r\xe3\ +\xa09\x81\x96l\xec\\\xa4!\xe4\xd6\x119\xca@/[8c\xfc{Y\x81\xc6g^+\x91\x16r\ +\x02\xba\x9ee\xfa\x8b\xfe\\\x19\x9ea)i\xb4\x88(,8aw*lw\x8a%Xg,#\xef\xd5\xcd?\ +\xce\x9d\x04\x00\xaa\x91*\xa4\xd1\x85\xe2\x914\xbe\x9c\xe6\xa8\xc0\xfe\x91\ +\xf3kF\x01\xaa\xa4\x01)^A*\x06%\xff\xe5\xe0\x18\xdcpR,\\\xecsR\xce\xbf\x11\r\ +\xdb\x11\xb6\xe3&\'|\xaa\\O\x90xph\xa5Srh|n0h\x16\xf2\x08\x98\xadc\x1e\x8ey8\ +\x8f\xa3\xef\xcb\xf7D\xd8\x1e|T\x04\xd6\xdb\xb3F\xdf\x8f\xbf\x02\xd8\x05\xbf\ +\xdb\x7f\xe6\xb4\xf1\x1b\xfdm\x89\x8a\xa3\xb3\x8cS\x8e\xfc\xdf\xf4\xf3;z\xaf\ +\x08{2\xbb\xc0]\x07\xdd\x99\xd4\xcf\x02|\xf0\xbc\xe13\xe4\x14\xf9c\xf4\x7fb\ +\xfc\xc3\xb1\x95\x03\xf8\xc8\xef\xe4\x08\xaf\xa5\xfeA{d\x0b\xa5\xf9x\xe3?:\ +\x87!l\x85|\x0c\xfa\x7f\x12\xfc\x0f@7\x1c\x83\xb0-\xbf:\xffo\x9f\xf2\xb93\ +\xc7?\xe3j8\xe5A6\xaf\xae\xdfK\x0e\x88\r\xc4\xe6\xe4\xd17\x83{g\xa0B\x06\xef\ +\xfa8\xfc\x93\xb2\x85v"n\xb4\xf1\xfd\xd1\xe7\x1f\xd9\'\x16j\xb0[c\xd3\x10\ +\x9b\x86\xf5\x93\x87P\xeew\xe4u8B\xa7\x8f3~\xbbN\xe4\xff\xb3\xf8\'\xdf\xbbgg\ +C\xfe\xd5Y\xf4\xb7kf\xfc\xf9YC\x19v\xd2\x15R3\x13^\x9a\xe1\x9f\x93^\x94\x9f\ +\xff\xc4%\xcd\xaf<\xfer\r,\xf6\x93\xbc\x0f0\xe4\x9f| \xe6\xaf\x13i>s.\xd8\ +\xff\xd2\xff<\x18\xbf\xe1\xc9l\xb4\r\x1bg\x8c\xff8\x15\xc1\xe8\xf8q\xe4\x8f-\ +Q\x19\xff\x8c|\x1f\xf2\xbe<I\xfb\xe1^0c3\xffl\xf2\xe7\xac\xeb8\xf9S\xf8\xe7\ +\x14\xfa\x1f\x1d\xff\xe8\xe8\x98\x9e\xf8\xbe9\x99\x87\x06\xb2\x7f\x1e\x95\ +\xff\xd2~\xbc\xf3\x17t\x0e3\xfb7)-\xf7\x8e\xf0\xff\xdc\xfc\xbc\x9b\x85\\\xfc\ +\xf4\xfa\xf4\xfa\xf4\xfa\xf4\xfa\xf4\xfa\xf4\xfa\xf4\xfa\xf4\xfaG~\xcd\x9f}\ +\xcb\xa7\xd7\xa7\xd7\xa7\xd7\xa7\xd7\xa7\xd7\xa7\xd7\xa7\xd7\xa7\xd7?\xae\ +\xeb\xff\x01i,\xc7\x8e\xcc\nl+\x00\x00\x00\x00IEND\xaeB`\x82' + +def getecloudsBitmap(): + return wxBitmapFromImage(getecloudsImage()) + +def getecloudsImage(): + stream = cStringIO.StringIO(getecloudsData()) + return wxImageFromStream(stream) + +index.append('eclouds') +catalog['eclouds'] = ImageClass() +catalog['eclouds'].getData = getecloudsData +catalog['eclouds'].getImage = getecloudsImage +catalog['eclouds'].getBitmap = getecloudsBitmap + + +#---------------------------------------------------------------------- +def getlogoData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x1d\x00\x00\x00 \x08\x06\ +\x00\x00\x00\xeews|\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x04\x07IDATx\x9c\xc5\x97]l\x14U\x14\xc7\x7fwf:;\xb3\xdd\x8fF\xb7%,-\xd0B\r\ +\x9aJ\x0b\xd4UJb\x82\x84\xc4\x07\xa4\x12\xa8\x04\xf1\x83\x84\xc4\x07P\x83\ +\x1f\xa1\xa9\x89\x84\x10\xa2\xc1\x07cBK|0\xf1\x05%1\xf8\xa8\x96\x04\x83\x0fF\ +\x8c\xbe\xd4\xc4\xc8G\r\x15\xa9E`)\xdd\xc9Lgwfw\xae\x0f\x9bnZ\xbam\xb7\xc8\ +\xc7y\x9a\xb9s\xef\xf9\xdds\xce\xff\xcc\x9d\x11555\xdcoS\xee;\xf1AA\xb5\xf9.\ +\xb0,[N\\\xc7b\x11qO\xa1\x93a\x00\x8b\x17\xd7c\xdb\x8e\xcc\xe7\xfdy\x83\xef8\ +\xbd\xaa\xaa\xa2(\xca\xb4\xcdTb\x15G*\x84\xa0\xaaJ\xc3\xf3|\x00\x86\x87G\xe6\ +\xcb*YE\x91Z\x96-w\xedz\x85\xce\xce\xcd\x00\xec\xdb\xf7&\'N\x1c\'\x91x\xf8\ +\xdeAc\xb1\x88\xd0u\x9d\xf6\xf65\xd4\xc4\xa3477\xd3\xdb{\x8c\xae\xaem\xf7\ +\x0e\n`\xa8\x1eucG8\xf3\xa9O\x83z\x94\xc7\x97\xba\\\xfb\xb7\x98\xe2\xf9\xd6\ +\xb5\xe2\x9a\xb6\xa8_\xf2l\x87\x82\x9eL\xd0l\xda\xacl\xba\xc2\x07\xbd\x03\ +\xf3a\xcd\x1fz.\xbd\x80\x94u\x13=\xc8\x90\x19\xf1\x10j3\xa3\xbeFk\xabdx\xf8\ +\x1f|?ww\xa1\x96e\xcbDK7\x972\x83\xe8\xc3\x03\xa8\xb5O\xb1\xf8\xc9=\xec\xae\ +\x1f\xa6\xeb\x85\xedH)q]WF"\xd5\x15\xf5\xac\xa8\xe4\x85\x9f\\\x98\x94g\x7f\ +\xfe\x89\xc1\x8b\x17\xf1}\x9f\xc6\xa6&jk\x13\x08!\xd8\xb4\xa9\x93\xfe\xfeS\ +\x08!\x88F+\x83\xce)$\xcb\xb2\xe5\xfe\xee\xfdD\xa3\x11\xdaV\xb5\xf1D*E]]-B\ +\x14\xfdO(XJY\xb1\xa0f\x85Z\x96-5McQ2\x89\xef\xfb\xb8n\x16\xcf\xf3\x08\x82\ +\x80\xb1\xb1\x0c\x17.\x0c\xb2t\xc9\x12\x12\x89\x04\x86\x11*\xad\xf9_\xd0p8\ +\xcc\x86\r\xeb\xe9X\xd7\x81\xa6i\x18\x86A(\xa4#\x84 \x1e\x8f\xb1|\xf92V<\xba\ +\x82\x9e\x9en4M\xc34\x8dJ\x02\x9d\xbd\xa6\xaa\xaa\xc9\xfe\xfeoY\xbdz\x15\x00\ +A Q\x94\xe9es\xc7]\xd6\xb4\xa7\xc8d2\\\xbf~\x03\x98\xfd\x04\x9a9R)d[[k\t\x08\ +\xe0y^\xd9\xa9f\xd8\xa4\xa1\xa1\x01\xc7q\xd0\xb4\xb9\x1bbF\xa8P\x04\x1b7n\ +\x9c2\x96\xcf\xe7gt\xb4\xa0\xae\x0e\x80B\xa1pgP\xcb\xb2e,\x16\xa5\xbe\xbe~N\ +\x07\x13\xa6UU\x01E\x15\xcf9\xb7\xdc\xe0\x9e\xcd\x1af\xf8\x067\xd37\xa6\x8cO\ +\xb4\xc9\xed\x96\xb7\xff$\x93\xbeL\xa1P R]\x8d\x196\xc9\xe5\xb23B\xcbF\xda\ +\xb3S\xe3\xe0n\x85[\xbf\x1f\xa0\xaf\xf7Xi\xf7\xaa\xaaN\x9b+%\xd8\xbf>\xc3C\ +\xeaY\xb2\xd9\x1c\xe3\xae\xcb[\xdb\x9d\x19\x81p\x9bz\xcf\x7f\x9e\x97\x9a\x06\ +\x86\tB@.\x80\r{=V\xae\xddA_\xdfQL\xd3\x9c\xe6`h\xe82\xa1\xdf:\xf8\xf1\x97\ +\x0c\xc7\xbf\x97\xb4,\x15\xbc\xf3\xaa\xc6#/W\xcd\xa8\xde)\xe9\r\x85@\x0fM\ +\xbaW\xe0\xc3\xd75\x9e{\xfb\x0b\x92\xc9$\x87\x0f\x1f\x9a\xe6\xc0\xcb\xe5\xc8\ +\x8e\xe5y\xba]\xa5\xfd1I<.\xa8\x0e\x0b\x86N\x14d\xe3\x0e\xb5,xJz\xcb\to]\x8b\ +\xc2\xa17\x96\xb1u\xeb\x96i\xcfl\xdb\xe6\xe0\x81\xf7\xc8f]\xe25\n\x0b\x17\ +\xa9TG\x8b.u]\xf2\xf7W\x85\xb2\xaa*AO\xbd\x9f\x95\xe5ZL\t`\xdb\xda\xab\xd8\ +\xe9\xa1R;8\x8e\xc3\xc9\x93_\x93Ju\xf0\xc3\xe9o\x10\x14\xcb1Yg^\x0e\xd2\xd7\ +\xca!\'\xa5\xd7\xcd\xc1\xd5\x91\x80HD`\x9a\x02=\x04%\xddd}>>\xf2\x12[.E1\x0c\ +\x93\xd1\xd1Q|\xbf\xf8\x81\xd6X\x0b\xbe/\t$\x08\t\xe3\x0e\xa4\xd3\x01\x1d\ +\xef\xeas\xd7\xf4\xf9\x8f\x8c\xd2\xa4Ov\x8eK\xc3\x104,T\x08\x9b0\xf0G\x81\ +\xcc8H\x19\x08\xd7u0\xcd\x10\xa6Y,\xbe\xa6\x8e\xcb\xf3\x83\x01\x86^\xc0\xf3\ +\xe1\xaf+\x92\xd7>3f=\xe2\xe6<O_lw\xe4-G\xf0\xdd\xb9\xf0\xac\x8e\xf6\xaewd\ +\xdf\x99\xbbx\x88\xdfm{ ?P\xff\x01\xab\xd2r\x12\x08\x0b1\xea\x00\x00\x00\x00\ +IEND\xaeB`\x82' + +def getlogoBitmap(): + return wxBitmapFromImage(getlogoImage()) + +def getlogoImage(): + stream = cStringIO.StringIO(getlogoData()) + return wxImageFromStream(stream) + +index.append('logo') +catalog['logo'] = ImageClass() +catalog['logo'].getData = getlogoData +catalog['logo'].getImage = getlogoImage +catalog['logo'].getBitmap = getlogoBitmap + + +#---------------------------------------------------------------------- +def getrestData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00"\x00\x00\x00"\x08\x06\x00\ +\x00\x00:G\x0b\xc2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ +\x9fIDATx\x9c\xcd\x98Ko\x1b\xc7\x12\x85\xbf~\rI\x89\x8c"?d\xc9Il\xc4N\x10{\ +\x11#\x88\xb3\xcc\xcd_\xbe\x7f\xe0\xae\xee6\xc8\xd2\x80\xb3q\x00\xc9q\x04\ +\xdb\x12\xc5\xd7L\xcf\xa3\xbb\xb2\xe8\xe6p\xa8\xf8\x07\x84\xc0L\x13$f\xe6T\ +\xd59\xa7\xaaG\x01\xc2\xbf\xe0c\x01^\xbc\xfc\x0fE1\xc2\xb9\x02c-F\x1b\x946(\ +\xa5\x10\x11\xf6\xb0\xcav\x91\xdd\x0f\xa2\x06\x7f*>\xf9Q\xfb_%\x9fE\x84\xff\ +\xff\xef\xbf\tHQ\x8c\x18\x8f\x0f(F\xe3\x1e\x8c\xde\x02A@\x04\x89\x10BK\xed7\ +\xd4\xbe\xa4\xae+\xda\xa6\xa6k\x1bB\x08\x08\x821\x0e7\x1a3\x99L9\x9c\x1eQ\ +\x8c\xc6\xe9\xc1J\r@\xa8\x04W\x81D!J\xd8e\xc4\xb9\x82b4f<\x9e\xe0Fc\xac-0Zo\ +\xa1\xd3\xd4\x15\x95_RU+\x140\x1a9&\xe3\x02A\x11\xba\x8e\xaek\xe9\xda\x96\ +\xba\xf1\xd4~\xc3j\xfe\x11\x94\xe6\xe8\xf8\x84{\x0f\x1e2\x9d\x1d\xed`\xa8-\ +\x1c\x85H$\xc6\xb8\x03b\xac\xc5\xb9\x027\x1aS\x149+\xc6\x00\x8a\xf5\xf2\n_-(\ +\n\xcbg\xb3S\\Q\xa0\xb5\x05\x84\x10:\xba\xae\xa3ik\xda\xba\xa1nj|UR\x96\x1b\ +\xca\xcd\x8a\x8f\xef/\xb8\xfa\xf0\x8e\x87_>\xe1\xd1\xd7\xcfP:\x01@%@"\x91\ +\xd0\r2b\xb4\xc1X\x8b\xb5E\x02\xe4\n\xa2\x08\xe5\xea\x1a\x895\'\xf7\x1fp8\ +\x9d1\x99L\x18\x8d\xc6 B\x17:\x9a\xa6\xa1\xaek\x9a\xba\xc6\xd7\x15\x8d\xf7T9\ +\x98\xa2(\xb0\xd6\xb2\\.x\xfd\xeaWV\xeb\x1b\xbe{\xfe#\x93\x83i\x02\x82\x02\ +\x11\x94\x1e\x00Q\xda\xa0\xb5\xc1h\x8d1\x86(B\xb5\xbe\xa6pp|\xf2\x15w\xee\ +\xde\xe3\xce\x9dc\xa6\x87S\x14\x8a\xd2W\x94\x9b\x92\xb2,\xf1\xbe\xc2;\x9f\ +\x03q\x89\xec\xd6a\xacA)\rJ\x03\x91\xf37\xafi\xbc\xe7\xc5\xcb\x9f98\x98e!Dt\ +\xd0\x03 J%B\xe5\xfa\x95\xab\x04\xe2\xe4\xe4\x8c\xb3\xb3/x\xf4\xf81\xa7\xa7\ +\xa7\x84.p}}E\x1b\x02Z{\xb4I\xc0\x9d\xb3\x88\x8czbj\xad1F\xa7L\x1b\x83V\x1a\ +\xd0\xbc\xbf<\xe7\xf7W\xbf\xf1\xc3O\xbf$\x90\xa8^p\x16@D\xb2:`\xbd\xbcBb\xcd\ +\xf1\xc9W\x9c\x9d}\xc1\xb3\xe7\xcfy\xfa\xf4\x1b\xda\xb6\xe1\xfc\xfc\x9c\xc5r\ +\xc9f\xbd\xc6{O\xdb4t]G\x8c\x82\xd6\x86\xa2(2\x08\x8b6\x16c,\xc6\x18\x8c\xb1\ +\xd8\xcc\xc3\xcb?\xdf\xf0\xe6\xe8\x98\'\xdf~\x9f\xd58(\rY\xa2M]\xe1\xab\x05\ +\'\xf7\x1fp\xe7\xee=\x1e=~\xcc\xd3\xa7\xdf \x12\xb9\xb8x\xcb\xe5\xe5%\x8b\ +\x9b\x1b\xca\xb2\xa4njb\x08\xa0T\x8aZ\xebt\xe4\x07\x1bc\xb06\x83\xb1\x0e\xeb\ +\xd2a\x8c\xe1\xaf\xb7\x7fp\xf7\xfe\x19\xb3\xd9\xe7\xc8P5\x00\x12\xa1\xf2K\ +\x8a\xc2r8\x9dq\xe7\xce1\xa7\xa7\xa7\xb4m\xc3\xc5\xc5[\xde\xbd\xfb\x93\x9b\ +\xf9\x9c\xb2\xdc\xd0\xb6m\xb23\xa5\xd0(\xc4(\x10P:\xa2\x82N|3\x99w\xc6f\xfeX\ +\xb4N\xe5\x98_\x7f\xe0\xfd\xe5\x05\x87\x87G\xc4(\xfb@Bh\xa9\xaa\x15\x9f\xcdN\ +\x99L&L\x0f\xa7\x84.p~~\xce\xe5\xe5%7\xf39\x9brC\xd7\xb6\x88\x0c\xcdI\xd2\ +\xaa@\xabd\x82:jb\xceN\xcaJ\x02\xa4\xb4\x06\x81\x18\x02\xcb\xf9\x15U\xb5\xa6\ +(\xc6\x03 \x02\xb5\xdf\xa0\x00W\x14\x8cFc\x14\x8a\xeb\xeb+\x16\xcbe.G\x06\ +\xb1\xf3hP\x03\xa7\xccg\x85\x06\x03Z\x0c\xa2c&l\xe2\xcc\xb6et]G\xddxV\x8b9\ +\xc7\xf7\x1e\xecg\xa4\xf6%\xa3\x91Kf%B\xe9+\xda\x10\xd8\xac\xd7\x94e\x99\xca\ +!\x03\x100\xc8\xcc\xee\x8c\xca\x86\x05\x80\xc6\x08hcPZ\xa3H\xd9h\x9b\x06\xef\ +7x\xbfF\xe2\xfd\x81j\x10\xea\xbab2.\x80dV\xe5\xa6Dk\x8f\xf7\x9e\xba\xa9wmO\ +\xf6\x96\xfd\x16\xb7\x05\x90\xed@\xab\xd4&\x8c\xa4\xf2(\x05!\x04\x9a\xa6\xe6\ +\xe0`\xc6j\xbd"\xca-\xb2\xb6M\x9dzGv\xcc\xb2,\xd1F\xd36M\xaf\x8ed\xcf\xb731\ +\xc0\xd1\xe3QYE\xa6\xf7\xa8\xd42 t\x1d~<a<\x99\xb0\\-rw\x1f\xc8\xb7k\x9b\xdc\ +\xc0:\xea\xba\xc6\xfb\nc\x0c]\xd7\xed\xd4\x91\x89\xf9)\x10\xdb,\xa5\x07\xeb|\ +\xa8\xc4\x0f\xadrY\x15]\x17\x18\x8d*\x8ab\x8c\xd1\xa6\x8f*\x93U\x11B\xa0\xeb\ +Z\x9a6\xf7\x0e\xe7q\xce\x12\xa3`\x8cA\x8c\x1a\x10\xf3v*\xf6K2\xcc\x821&q\x84\ +\xf4[\xeb\x1a\x9cs8\xe7\xb0\xd6\xf6%\xde\xf9\x08B\xd7\xb6\xb4u\x83\xaf+\x8cM\ +\xb6\xadu2\xab\xed\xfc\xf3)(\x9f\x02\xd1\x9b\x9b5X\xe3\xfa\xd9\xc6:\x87\xb1.\ +\xff\xe7ne$\x0f5u\x93\x88\xd9x\x8f\xb5\x0e\xa0\xb7m\xa5#Z\x19\x86\xea\xe8\ +\x05\xf4\t\x10\xdblX\x93"WJ\x11%\xc9Y\xebt\xad\xb5\xc5m\x8e(\xdchL\xed7\xf8\ +\xaa\xa4\x1a\x8d1\xf9\xe2md*\xa4\x9a+\xf4@\x9e\xec\x01\xd8\x96c\x07\xc4b\x9d\ +\xed\x83\xd2!\xf5\x15\x89B\x8c1e\xe4vi&\x93)\xab\xf9G\xcar\x93\x88d]\xdf\xc0\ +\x12\xe1\x0c:&\xb3\xea\xbd\xa2\'\xe6\xa0\x1cZ\xe7q\xc0\xe1l\xe6\x82\xb1\xc4\ +\x1cy\x94H\xd7u\xb4]\x8b6\xf6vF\xe0pz\x04JSnV\x14E\x81\xb1\x06ct\xee\xa2)\ +\xcdQk\xb4\x18\x14;\x89n\x81\x0c\xcba\xac\xa3p\x05\xaeHC\x96R\x8a\xd0\xb6\ +\x84\xd0\xd16\rM\x93\x04al\xf1\xcf\x8c\x14\xa31G\xc7\'||\x7f\x91k\xaa{{\xb6y\ +\x98\xd6&\xd96h\xb4\xda\xf9\xc4V\x19\xdbr8\xebpE\x91\x022\x96\x18c\xf2\xa7l\ +\x0bUU\x12%\xdd\xff\x1f\x19\x01\xb8\xf7\xe0!W\x1f\xde\xb1\\.@\r"\xcc\xe5\xb1\ +y\xaba\xb6}&\xfb\x84\x19\xa8\xc3:\x9b\xe5\x99@\x00\xb4mKUU\x94\xd5\x86r\xb3f\ +\xbdZ\xa2\xb4\xd9S^\x0fD)\xc5tv\xc4\xc3/\x9f\xf0\xfa\xd5\xaf@D+\xdd\xcf\x13f\ +\xd0E\xb51\x18\xd9\x92Y\xa5.\x9b\xd5am\xe2\x84R\x8a\x18c\x02QnX\xafV\xac\x96\ +\x0b\x96\xcb\x1bB\x04m,\xbb\xa9~\x0bd`\x0b\x8f\xbe~\xc6j}\xc3\xf9\x9b\xd7\ +\x80N7\xcf\xe6\xd3w\xd1\x01\x1fD\xe8\xcdj\xbb\x7f\x89"=\'\xaa\xaab\xbdZ\xb1\ +\\\xccY\xdc\xccY\xaf7\xa0\xccv*\xed\xdb\xc5^i@\xa1\xb4\xe2\xbb\xe7?\xd2x\xcf\ +\xfb\xcbs\x9c+\xb0\xcee/\xd9J\x98>\x92\xadz\x04!J\xec%\xba\xe5DYmX-\x17,n\ +\xe6\xcco\xe6D\x92\xb2\xd2\rng\x84mTi\x9d\x1cLy\xf1\xf2g~\x7f\xf5\x1b\x97\ +\x7f\xbe\xe9\xf78i\xa2\x14b\x08\x84\x10ro\n\xb4\xaeI\x8e\x99\xeb\x1e%\xe6V_Q\ +n\xd6,\x977\xac\xd7\x9b\x0cb\xa7\xba\xadO\xf7@v#\x86\xea=\xe2\xe0`\xc6\x0f?\ +\xfd\xc2\x9b\xa3c\xfez\xfb\x07\xf3\xeb\x0f\xc4\x10\x92\x07d\t\xfa\xf1\x84\ +\xd1\xa8\xc2mm[+$\xa6\xc1\xa7ij\xaa\xaad\xbdZ\x12"\xa0\x92\xd1\xa5\x92\xe8<\ +\xc5\xdf"\xab\x0c\xb2\xb1[\x93Y=\xf9\xf6{\xee\xde?\xe3\xfd\xe5\x05\xcb\xf9\ +\x15u\xe3\xf1~\xc3\xc1\xc1\x8c\xf1d\x92w\x86.76\x12A\xbb\x96\xa6\xae\x89\xa2\ +\xd3\x9e\xc9\xd8[\xfdH\xef\xf6\xc3\xfb\x1c\x11$\n"\x11\x91\x98\xc6|\x89=\x9b\ +f\xb3\xcf9<<\xa2\xaa\xd6\xac\x16s\xbc_\xb3Z\xafX\xae\x16\x18\x9d\xe7R\xeb\ +\xd2\x9e\xd9\xbad\x82\xb6\xe8K\x95g\xca\x9c\xfb\xfd\xd7\x02{>"\x92v\xe51\xa6\ +\xbd\xa8\xd2\x01\x1d4\xa2@b@b$F\xa1(\xc6\x1c\xdf{\x80\xc4\xfbD\x89\xe9&\x92_\ +P\x88\xf47\xbd\xbd\xaa\xac\x0e\xa5\xd8\x9b\xf4D\x04bO\x8a\x7f\xc7\x8b\x9a\ +\xbf\x01\xfc\t\xfa\\\xad\xe0v?\x00\x00\x00\x00IEND\xaeB`\x82' + +def getrestBitmap(): + return wxBitmapFromImage(getrestImage()) + +def getrestImage(): + stream = cStringIO.StringIO(getrestData()) + return wxImageFromStream(stream) + +index.append('rest') +catalog['rest'] = ImageClass() +catalog['rest'].getData = getrestData +catalog['rest'].getImage = getrestImage +catalog['rest'].getBitmap = getrestBitmap + + diff --git a/wxPython/demo/viewer_basics.py b/wxPython/demo/viewer_basics.py index 1dca97130d..7916c1bce2 100644 --- a/wxPython/demo/viewer_basics.py +++ b/wxPython/demo/viewer_basics.py @@ -59,11 +59,11 @@ class SecondThreadApp(wxApp): catcher = HiddenCatcher() #self.SetTopWindow(catcher) self.catcher =catcher - return true + return True #--------------------------------------------------------------------------- def add_cone(): frame = VtkFrame(None, -1, "Cone") - frame.Show(true) + frame.Show(True) diff --git a/wxPython/demo/widgetTest.py b/wxPython/demo/widgetTest.py index ee940e89f4..3ca627c6ab 100644 --- a/wxPython/demo/widgetTest.py +++ b/wxPython/demo/widgetTest.py @@ -1,6 +1,6 @@ -import sys, string +import sys from wxPython.wx import * from wxPython.html import * @@ -43,7 +43,7 @@ class TestHtmlPanel(wxPanel): import About wxPanel.__init__(self, parent, id, size=size) self.html = wxHtmlWindow(self, -1, wxPoint(5,5), wxSize(400, 350)) - py_version = string.split(sys.version)[0] + py_version = sys.version.split()[0] self.html.SetPage(About.MyAboutBox.text % (wx.__version__, py_version)) ir = self.html.GetInternalRepresentation() self.html.SetSize( (ir.GetWidth()+5, ir.GetHeight()+5) ) diff --git a/wxPython/demo/wxButton.py b/wxPython/demo/wxButton.py index 2a92effc12..159d06b328 100644 --- a/wxPython/demo/wxButton.py +++ b/wxPython/demo/wxButton.py @@ -19,20 +19,38 @@ class TestPanel(wxPanel): b = wxButton(self, 20, "HELLO AGAIN!", wxPoint(20, 60), wxSize(120, 45)) EVT_BUTTON(self, 20, self.OnClick) - b.SetToolTipString("This is a Hello button...") - bmp = images.getTest2Bitmap() - mask = wxMaskColour(bmp, wxBLUE) - bmp.SetMask(mask) + if 0: # a test case for catching wxPyAssertionError + #wxGetApp().SetAssertMode(wxPYAPP_ASSERT_SUPPRESS) + #wxGetApp().SetAssertMode(wxPYAPP_ASSERT_EXCEPTION) + #wxGetApp().SetAssertMode(wxPYAPP_ASSERT_DIALOG) + #wxGetApp().SetAssertMode(wxPYAPP_ASSERT_EXCEPTION | wxPYAPP_ASSERT_DIALOG) + + try: + bmp = wxBitmap("nosuchfile.bmp", wxBITMAP_TYPE_BMP) + mask = wxMaskColour(bmp, wxBLUE) + except wxPyAssertionError: + self.log.write("Caught wxPyAssertionError! I will fix the problem.\n") + bmp = images.getTest2Bitmap() + mask = wxMaskColour(bmp, wxBLUE) + else: + bmp = images.getTest2Bitmap() + mask = wxMaskColour(bmp, wxBLUE) + + bmp.SetMask(mask) wxBitmapButton(self, 30, bmp, wxPoint(160, 20), wxSize(bmp.GetWidth()+10, bmp.GetHeight()+10)) EVT_BUTTON(self, 30, self.OnClick) - def OnClick(self, event): - self.log.WriteText("Click! (%d)\n" % event.GetId()) + def OnClick(self, event): + self.log.write("Click! (%d)\n" % event.GetId()) + ##wxLogDebug("debug message") + + +## wxLog_SetLogLevel(wxLOG_Message) # ignore everything above wxLOG_Message #---------------------------------------------------------------------- @@ -43,15 +61,19 @@ def runTest(frame, nb, log): #---------------------------------------------------------------------- +overview = """<html><body> +<h2>wxButton</h2> +A button is a control that contains a text string or a bitmap and cab be +placed on nearly any kind of window. - - - - - - -overview = """\ +</body></html> """ + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxCalendar.py b/wxPython/demo/wxCalendar.py index 487eeb39c1..5c14011608 100644 --- a/wxPython/demo/wxCalendar.py +++ b/wxPython/demo/wxCalendar.py @@ -75,7 +75,7 @@ class TestPanel(wxPanel): # set attributes of calendar - self.calend.hide_title = TRUE + self.calend.hide_title = True self.calend.HideGrid() self.calend.SetWeekColor('WHITE', 'BLACK') @@ -91,7 +91,7 @@ class TestPanel(wxPanel): mID = NewId() self.scroll = wxScrollBar(self, mID, wxPoint(100, 240), wxSize(200, 20), wxSB_HORIZONTAL) - self.scroll.SetScrollbar(start_month-1, 1, 12, 1, TRUE) + self.scroll.SetScrollbar(start_month-1, 1, 12, 1, True) EVT_COMMAND_SCROLL(self, mID, self.Scroll) # spin control for year selection @@ -147,8 +147,8 @@ class TestPanel(wxPanel): def TestFrame(self, event): frame = CalendFrame(self, -1, "Test Calendar", self.log) - frame.Show(true) - return true + frame.Show(True) + return True # calendar print preview @@ -171,7 +171,7 @@ class TestPanel(wxPanel): name = event.GetString() self.log.WriteText('EvtComboBox: %s\n' % name) monthval = self.date.FindString(name) - self.scroll.SetScrollbar(monthval, 1, 12, 1, TRUE) + self.scroll.SetScrollbar(monthval, 1, 12, 1, True) self.calend.SetMonth(monthval+1) self.ResetDisplay() @@ -366,8 +366,8 @@ class PrintCalend: self.sel_lst = [] # highlighted selected days self.size = None - self.hide_title = FALSE - self.hide_grid = FALSE + self.hide_title = False + self.hide_grid = False self.set_day = None def SetParms(self): @@ -416,7 +416,7 @@ class PrintCalend: frame.Initialize() frame.SetPosition(self.frame.GetPosition()) frame.SetSize(self.frame.GetSize()) - frame.Show(true) + frame.Show(True) def Print(self): pdd = wxPrintDialogData() @@ -438,7 +438,7 @@ class PrintCalend: if self.preview is None: cal.SetPSize(size[0]/self.pagew, size[1]/self.pageh) - cal.SetPreview(FALSE) + cal.SetPreview(False) else: if self.preview == 1: @@ -454,7 +454,7 @@ class PrintCalend: cal.grid_color = self.grid_color cal.high_color = self.high_color cal.back_color = self.back_color - cal.outer_border = FALSE + cal.outer_border = False cal.font = self.font cal.bold = self.bold @@ -534,9 +534,9 @@ class SetPrintout(wxPrintout): def HasPage(self, page): if page <= self.end_pg: - return true + return True else: - return false + return False def GetPageInfo(self): self.end_pg = self.canvas.GetTotalPages() @@ -594,14 +594,14 @@ class SetPrintout(wxPrintout): self.canvas.SetPageSize(self.psizew, self.psizeh) self.canvas.DoDrawing(dc) - return true + return True class MyApp(wxApp): def OnInit(self): frame = CalendFrame(None, -1, "Test Calendar") - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxCalendarCtrl.py b/wxPython/demo/wxCalendarCtrl.py index 02c771ad33..7afc4c37d7 100644 --- a/wxPython/demo/wxCalendarCtrl.py +++ b/wxPython/demo/wxCalendarCtrl.py @@ -19,6 +19,11 @@ class TestPanel(wxPanel): EVT_BUTTON(self, b.GetId(), self.OnButton) self.cal = cal + # Set up control to display a set of holidays: + EVT_CALENDAR_MONTH(self, cal.GetId(), self.OnChangeMonth) + self.holidays = [(1,1), (10,31), (12,25) ] # (these don't move around) + self.OnChangeMonth() + def OnButton(self, evt): self.cal.Destroy() self.cal = None @@ -26,6 +31,11 @@ class TestPanel(wxPanel): def OnCalSelected(self, evt): self.log.write('OnCalSelected: %s\n' % evt.GetDate()) + def OnChangeMonth(self, evt=None): + cur_month = self.cal.GetDate().GetMonth() + 1 # convert wxDateTime 0-11 => 1-12 + for month, day in self.holidays: + if month == cur_month: + self.cal.SetHoliday(day) #---------------------------------------------------------------------- diff --git a/wxPython/demo/wxCheckBox.py b/wxPython/demo/wxCheckBox.py index 45f82e2f48..e2e81e3f28 100644 --- a/wxPython/demo/wxCheckBox.py +++ b/wxPython/demo/wxCheckBox.py @@ -14,7 +14,7 @@ class TestCheckBox(wxPanel): cID = NewId() cb1 = wxCheckBox(self, cID, " Apples", wxPoint(65, 40), wxSize(150, 20), wxNO_BORDER) cb2 = wxCheckBox(self, cID+1, " Oranges", wxPoint(65, 60), wxSize(150, 20), wxNO_BORDER) - cb2.SetValue(true) + cb2.SetValue(True) cb3 = wxCheckBox(self, cID+2, " Pears", wxPoint(65, 80), wxSize(150, 20), wxNO_BORDER) EVT_CHECKBOX(self, cID, self.EvtCheckBox) diff --git a/wxPython/demo/wxCheckListBox.py b/wxPython/demo/wxCheckListBox.py index 4a0fd024c7..434ecf2e06 100644 --- a/wxPython/demo/wxCheckListBox.py +++ b/wxPython/demo/wxCheckListBox.py @@ -22,7 +22,8 @@ class TestPanel(wxPanel): lb.SetSelection(0) self.lb = lb - btn = wxButton(self, -1, "Test SetString", (180, 50)) + pos = lb.GetPosition().x + lb.GetSize().width + 25 + btn = wxButton(self, -1, "Test SetString", (pos, 50)) EVT_BUTTON(self, btn.GetId(), self.OnTestButton) EVT_RIGHT_UP(self, self.OnDoPopup) @@ -44,7 +45,7 @@ class TestPanel(wxPanel): item = wxMenuItem(menu, wxNewId(), "If supported, this is bold") df = wxSystemSettings_GetSystemFont(wxSYS_DEFAULT_GUI_FONT) nf = wxFont(df.GetPointSize(), df.GetFamily(), df.GetStyle(), wxBOLD, - false, df.GetFaceName()) + False, df.GetFaceName()) item.SetFont(nf) menu.AppendItem(item) diff --git a/wxPython/demo/wxColourDialog.py b/wxPython/demo/wxColourDialog.py index a949731ff1..c4d42aebbf 100644 --- a/wxPython/demo/wxColourDialog.py +++ b/wxPython/demo/wxColourDialog.py @@ -5,7 +5,7 @@ from wxPython.wx import * def runTest(frame, nb, log): dlg = wxColourDialog(frame) - dlg.GetColourData().SetChooseFull(true) + dlg.GetColourData().SetChooseFull(True) if dlg.ShowModal() == wxID_OK: data = dlg.GetColourData() log.WriteText('You selected: %s\n' % str(data.GetColour().Get())) diff --git a/wxPython/demo/wxComboBox.py b/wxPython/demo/wxComboBox.py index b3dfc92739..37e52cbb37 100644 --- a/wxPython/demo/wxComboBox.py +++ b/wxPython/demo/wxComboBox.py @@ -1,4 +1,3 @@ -import string from wxPython.wx import * #--------------------------------------------------------------------------- @@ -35,7 +34,7 @@ class TestComboBox(wxPanel): cb = wxComboBox(self, 501, "default value", wxPoint(90, 80), wxSize(95, -1), [], wxCB_SIMPLE) for item in sampleList: - cb.Append(item, string.upper(item)) + cb.Append(item, item.upper()) EVT_COMBOBOX(self, 501, self.EvtComboBox) EVT_TEXT(self, 501, self.EvtText) diff --git a/wxPython/demo/wxDialog.py b/wxPython/demo/wxDialog.py index 8d614756e1..615539add3 100644 --- a/wxPython/demo/wxDialog.py +++ b/wxPython/demo/wxDialog.py @@ -1,54 +1,102 @@ from wxPython.wx import * +from wxPython.help import * + +#--------------------------------------------------------------------------- +# Create and set a help provider. Normally you would do this in +# the app's OnInit as it must be done before any SetHelpText calls. +provider = wxSimpleHelpProvider() +wxHelpProvider_Set(provider) + + + +#--------------------------------------------------------------------------- + +class TestDialog(wxDialog): + def __init__(self, parent, ID, title, + pos=wxDefaultPosition, size=wxDefaultSize, + style=wxDEFAULT_DIALOG_STYLE): + + # Instead of calling wxDialog.__init__ we precreate the dialog + # so we can set an extra style that must be set before + # creation, and then we create the GUI dialog using the Create + # method. + pre = wxPreDialog() + pre.SetExtraStyle(wxDIALOG_EX_CONTEXTHELP) + pre.Create(parent, ID, title, pos, size, style) + + # This next step is the most important, it turns this Python + # object into the real wrapper of the dialog (instead of pre) + # as far as the wxPython extension is concerned. + self.this = pre.this + + + # Now continue with the normal construction of the dialog + # contents + sizer = wxBoxSizer(wxVERTICAL) + + label = wxStaticText(self, -1, "This is a wxDialog") + label.SetHelpText("This is the help text for the label") + sizer.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) + + box = wxBoxSizer(wxHORIZONTAL) + + label = wxStaticText(self, -1, "Field #1:") + label.SetHelpText("This is the help text for the label") + box.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) + + text = wxTextCtrl(self, -1, "", size=(80,-1)) + text.SetHelpText("Here's some help text for field #1") + box.Add(text, 1, wxALIGN_CENTRE|wxALL, 5) + + sizer.AddSizer(box, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5) + + box = wxBoxSizer(wxHORIZONTAL) + + label = wxStaticText(self, -1, "Field #2:") + label.SetHelpText("This is the help text for the label") + box.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) + + text = wxTextCtrl(self, -1, "", size=(80,-1)) + text.SetHelpText("Here's some help text for field #2") + box.Add(text, 1, wxALIGN_CENTRE|wxALL, 5) + + sizer.AddSizer(box, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5) + + line = wxStaticLine(self, -1, size=(20,-1), style=wxLI_HORIZONTAL) + sizer.Add(line, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5) + + box = wxBoxSizer(wxHORIZONTAL) + + if wxPlatform != "__WXMSW__": + btn = wxContextHelpButton(self) + box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) + + btn = wxButton(self, wxID_OK, " OK ") + btn.SetDefault() + btn.SetHelpText("The OK button completes the dialog") + box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) + + btn = wxButton(self, wxID_CANCEL, " Cancel ") + btn.SetHelpText("The Cancel button cnacels the dialog. (Duh!)") + box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) + + sizer.AddSizer(box, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5) + + self.SetSizer(sizer) + self.SetAutoLayout(True) + sizer.Fit(self) + + #--------------------------------------------------------------------------- def runTest(frame, nb, log): - win = wxDialog(frame, -1, "This is a wxDialog", size=wxSize(350, 200), style=wxCAPTION) - - sizer = wxBoxSizer(wxVERTICAL) - - label = wxStaticText(win, -1, "This is a wxDialog") - sizer.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) - - box = wxBoxSizer(wxHORIZONTAL) - - label = wxStaticText(win, -1, "Field #1:") - box.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) - - text = wxTextCtrl(win, -1, "", size=(80,-1)) - box.Add(text, 1, wxALIGN_CENTRE|wxALL, 5) - - sizer.AddSizer(box, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5) - - box = wxBoxSizer(wxHORIZONTAL) - - label = wxStaticText(win, -1, "Field #2:") - box.Add(label, 0, wxALIGN_CENTRE|wxALL, 5) - - text = wxTextCtrl(win, -1, "", size=(80,-1)) - box.Add(text, 1, wxALIGN_CENTRE|wxALL, 5) - - sizer.AddSizer(box, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5) - - line = wxStaticLine(win, -1, size=(20,-1), style=wxLI_HORIZONTAL) - sizer.Add(line, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5) - - box = wxBoxSizer(wxHORIZONTAL) - - btn = wxButton(win, wxID_OK, " OK ") - btn.SetDefault() - box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) - - btn = wxButton(win, wxID_CANCEL, " Cancel ") - box.Add(btn, 0, wxALIGN_CENTRE|wxALL, 5) - - sizer.AddSizer(box, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5) - - win.SetSizer(sizer) - win.SetAutoLayout(true) - sizer.Fit(win) - + win = TestDialog(frame, -1, "This is a wxDialog", size=wxSize(350, 200), + #style = wxCAPTION | wxSYSTEM_MENU | wxTHICK_FRAME + style = wxDEFAULT_DIALOG_STYLE + ) + win.CenterOnScreen() val = win.ShowModal() if val == wxID_OK: log.WriteText("You pressed OK\n") @@ -63,10 +111,13 @@ def runTest(frame, nb, log): - - - - - overview = """\ """ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxDragImage.py b/wxPython/demo/wxDragImage.py index 7ab24df8b9..5fcecb0d53 100644 --- a/wxPython/demo/wxDragImage.py +++ b/wxPython/demo/wxDragImage.py @@ -9,14 +9,14 @@ class DragShape: def __init__(self, bmp): self.bmp = bmp self.pos = wxPoint(0,0) - self.shown = true + self.shown = True self.text = None - self.fullscreen = false + self.fullscreen = False def HitTest(self, pt): rect = self.GetRect() - return rect.Inside(pt.x, pt.y) + return rect.InsideXY(pt.x, pt.y) def GetRect(self): @@ -31,11 +31,11 @@ class DragShape: dc.Blit(self.pos.x, self.pos.y, self.bmp.GetWidth(), self.bmp.GetHeight(), - memDC, 0, 0, op, true) + memDC, 0, 0, op, True) - return true + return True else: - return false + return False @@ -58,7 +58,7 @@ class DragCanvas(wxScrolledWindow): bmp = images.getTestStarBitmap() shape = DragShape(bmp) shape.pos = wxPoint(5, 5) - shape.fullscreen = true + shape.fullscreen = True self.shapes.append(shape) @@ -185,7 +185,7 @@ class DragCanvas(wxScrolledWindow): # reposition and draw the shape self.dragShape.pos = self.dragShape.pos + evt.GetPosition() - self.dragStartPos - self.dragShape.shown = true + self.dragShape.shown = True self.dragShape.Draw(dc) self.dragShape = None @@ -207,7 +207,7 @@ class DragCanvas(wxScrolledWindow): # erase the shape since it will be drawn independently now dc = wxClientDC(self) - self.dragShape.shown = false + self.dragShape.shown = False self.EraseShape(self.dragShape, dc) @@ -228,16 +228,16 @@ class DragCanvas(wxScrolledWindow): # if we have shape and image then move it, posibly highlighting another shape. elif self.dragShape and self.dragImage: onShape = self.FindShape(evt.GetPosition()) - unhiliteOld = false - hiliteNew = false + unhiliteOld = False + hiliteNew = False # figure out what to hilite and what to unhilite if self.hiliteShape: if onShape is None or self.hiliteShape is not onShape: - unhiliteOld = true + unhiliteOld = True if onShape and onShape is not self.hiliteShape and onShape.shown: - hiliteNew = TRUE + hiliteNew = True # if needed, hide the drag image so we can update the window if unhiliteOld or hiliteNew: @@ -274,3 +274,10 @@ def runTest(frame, nb, log): overview = """\ """ + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxDynamicSashWindow.py b/wxPython/demo/wxDynamicSashWindow.py index dd9652791d..9c9d1fa5b7 100644 --- a/wxPython/demo/wxDynamicSashWindow.py +++ b/wxPython/demo/wxDynamicSashWindow.py @@ -89,6 +89,10 @@ class SimpleView(wxPanel): #---------------------------------------------------------------------- def runTest(frame, nb, log): + if wxPlatform == "__WXMAC__": + wxMessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry") + return + if 1: win = wxDynamicSashWindow(nb, -1, style = 0 | wxCLIP_CHILDREN @@ -149,3 +153,10 @@ You will need to set the scrollbars' event handler at three times: </ul> </body></html> """ + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxEditor.py b/wxPython/demo/wxEditor.py index 2ee5c23c6b..0ae5f8f741 100644 --- a/wxPython/demo/wxEditor.py +++ b/wxPython/demo/wxEditor.py @@ -10,7 +10,7 @@ def runTest(frame, nb, log): box = wxBoxSizer(wxVERTICAL) box.Add(ed, 1, wxALL|wxGROW, 1) win.SetSizer(box) - win.SetAutoLayout(true) + win.SetAutoLayout(True) ed.SetText(["", "This is a simple text editor, the class name is", diff --git a/wxPython/demo/wxFileDialog.py b/wxPython/demo/wxFileDialog.py index a3c753e45b..a73dc06970 100644 --- a/wxPython/demo/wxFileDialog.py +++ b/wxPython/demo/wxFileDialog.py @@ -1,6 +1,5 @@ from wxPython.wx import * -import string #--------------------------------------------------------------------------- @@ -11,8 +10,10 @@ wildcard = "Python source (*.py)|*.py|" \ def runTest(frame, nb, log): dlg = wxFileDialog(frame, "Choose a file", "", "", wildcard, wxOPEN|wxMULTIPLE) if dlg.ShowModal() == wxID_OK: - for path in dlg.GetPaths(): - log.WriteText('You selected: %s\n' % path) + paths = dlg.GetPaths() + log.WriteText('You selected %d files:' % len(paths)) + for path in paths: + log.WriteText(' %s\n' % path) dlg.Destroy() #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxFileHistory.py b/wxPython/demo/wxFileHistory.py index 8847e2f679..0da510cf4d 100644 --- a/wxPython/demo/wxFileHistory.py +++ b/wxPython/demo/wxFileHistory.py @@ -37,7 +37,7 @@ class TestPanel(wxPanel): box.Add(t, 0, wxCENTER|wxALL, 5) self.SetSizer(box) - self.SetAutoLayout(true) + self.SetAutoLayout(True) # Make a menu self.menu = m = wxMenu() @@ -46,10 +46,10 @@ class TestPanel(wxPanel): m.Append(wxID_CLOSE, "&Close") m.Append(wxID_SAVE, "&Save") m.Append(wxID_SAVEAS, "Save &as...") - m.Enable(wxID_NEW, false) - m.Enable(wxID_CLOSE, false) - m.Enable(wxID_SAVE, false) - m.Enable(wxID_SAVEAS, false) + m.Enable(wxID_NEW, False) + m.Enable(wxID_CLOSE, False) + m.Enable(wxID_SAVE, False) + m.Enable(wxID_SAVEAS, False) # and a file history self.filehistory = wxFileHistory() diff --git a/wxPython/demo/wxFindReplaceDialog.py b/wxPython/demo/wxFindReplaceDialog.py index 14b0e32df8..c0217aedec 100644 --- a/wxPython/demo/wxFindReplaceDialog.py +++ b/wxPython/demo/wxFindReplaceDialog.py @@ -25,21 +25,21 @@ class TestPanel(wxPanel): data = wxFindReplaceData() dlg = wxFindReplaceDialog(self, data, "Find") dlg.data = data # save a reference to it... - dlg.Show(true) + dlg.Show(True) def OnShowFindReplace(self, evt): data = wxFindReplaceData() dlg = wxFindReplaceDialog(self, data, "Find & Replace", wxFR_REPLACEDIALOG) dlg.data = data # save a reference to it... - dlg.Show(true) + dlg.Show(True) def OnFind(self, evt): map = { wxEVT_COMMAND_FIND : "FIND", wxEVT_COMMAND_FIND_NEXT : "FIND_NEXT", - wxEVT_COMMAND_FIND_REPLACE : "REPALCE", + wxEVT_COMMAND_FIND_REPLACE : "REPLACE", wxEVT_COMMAND_FIND_REPLACE_ALL : "REPLACE_ALL", } et = evt.GetEventType() diff --git a/wxPython/demo/wxFloatBar.py b/wxPython/demo/wxFloatBar.py index 593e3b0ab8..ff323abe7e 100644 --- a/wxPython/demo/wxFloatBar.py +++ b/wxPython/demo/wxFloatBar.py @@ -70,7 +70,7 @@ class TestFloatBar(wxFrame): def runTest(frame, nb, log): win = TestFloatBar(frame, log) frame.otherWin = win - win.Show(true) + win.Show(True) #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxFontDialog.py b/wxPython/demo/wxFontDialog.py index 509ebfbb3a..e27ad38d74 100644 --- a/wxPython/demo/wxFontDialog.py +++ b/wxPython/demo/wxFontDialog.py @@ -1,45 +1,129 @@ from wxPython.wx import * +#--------------------------------------------------------------------------- + +class TestPanel(wxPanel): + def __init__(self, parent, log): + wxPanel.__init__(self, parent, -1) + self.log = log + + btn = wxButton(self, -1, "Select Font") + EVT_BUTTON(self, btn.GetId(), self.OnSelectFont) + + self.sampleText = wxTextCtrl(self, -1, "Sample Text") + #from wxPython.lib.stattext import wxGenStaticText + #self.sampleText = wxGenStaticText(self, -1, "Sample Text") + + self.curFont = self.sampleText.GetFont() + self.curClr = wxBLACK + + fgs = wxFlexGridSizer(cols=2, vgap=5, hgap=5) + fgs.AddGrowableCol(1) + fgs.AddGrowableRow(0) + + fgs.Add(btn) + fgs.Add(self.sampleText, 0, wxADJUST_MINSIZE|wxGROW) + + fgs.Add(15,15); fgs.Add(15,15) # an empty row + + fgs.Add(wxStaticText(self, -1, "PointSize:")) + self.ps = wxStaticText(self, -1, "") + font = self.ps.GetFont() + font.SetWeight(wxBOLD) + self.ps.SetFont(font) + fgs.Add(self.ps, 0, wxADJUST_MINSIZE) + + fgs.Add(wxStaticText(self, -1, "Family:")) + self.family = wxStaticText(self, -1, "") + self.family.SetFont(font) + fgs.Add(self.family, 0, wxADJUST_MINSIZE) + + fgs.Add(wxStaticText(self, -1, "Style:")) + self.style = wxStaticText(self, -1, "") + self.style.SetFont(font) + fgs.Add(self.style, 0, wxADJUST_MINSIZE) + + fgs.Add(wxStaticText(self, -1, "Weight:")) + self.weight = wxStaticText(self, -1, "") + self.weight.SetFont(font) + fgs.Add(self.weight, 0, wxADJUST_MINSIZE) + + fgs.Add(wxStaticText(self, -1, "Face:")) + self.face = wxStaticText(self, -1, "") + self.face.SetFont(font) + fgs.Add(self.face, 0, wxADJUST_MINSIZE) + + fgs.Add(15,15); fgs.Add(15,15) # an empty row + + fgs.Add(wxStaticText(self, -1, "wxNativeFontInfo:")) + self.nfi = wxStaticText(self, -1, "") + self.nfi.SetFont(font) + fgs.Add(self.nfi, 0, wxADJUST_MINSIZE) + + # give it some border space + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(fgs, 0, wxGROW|wxADJUST_MINSIZE|wxALL, 25) + + self.SetSizer(sizer) + self.UpdateUI() + + + def UpdateUI(self): + self.sampleText.SetFont(self.curFont) + self.ps.SetLabel(str(self.curFont.GetPointSize())) + self.family.SetLabel(self.curFont.GetFamilyString()) + self.style.SetLabel(self.curFont.GetStyleString()) + self.weight.SetLabel(self.curFont.GetWeightString()) + self.face.SetLabel(self.curFont.GetFaceName()) + self.nfi.SetLabel(self.curFont.GetNativeFontInfo().ToString()) + self.Layout() + + + def OnSelectFont(self, evt): + data = wxFontData() + data.EnableEffects(True) + data.SetColour(self.curClr) # set colour + data.SetInitialFont(self.curFont) + + dlg = wxFontDialog(self, data) + if dlg.ShowModal() == wxID_OK: + data = dlg.GetFontData() + font = data.GetChosenFont() + colour = data.GetColour() + self.log.WriteText('You selected: "%s", %d points, color %s\n' % + (font.GetFaceName(), font.GetPointSize(), + colour.Get())) + self.curFont = font + self.curClr = colour + self.UpdateUI() + dlg.Destroy() + + + + + #--------------------------------------------------------------------------- def runTest(frame, nb, log): - data = wxFontData() - data.EnableEffects(true) - font_colour = wxColour(255, 0, 0) # colour of font (red) - data.SetColour(font_colour) # set colour - ##print data.GetColour() - dlg = wxFontDialog(frame, data) - dlg.SetSize((250,250)) - if dlg.ShowModal() == wxID_OK: - data = dlg.GetFontData() - font = data.GetChosenFont() - log.WriteText('You selected: "%s", %d points, color %s\n' % - (font.GetFaceName(), font.GetPointSize(), - data.GetColour().Get())) - dlg.Destroy() + win = TestPanel(nb, log) + return win + #--------------------------------------------------------------------------- - - - - - - - - - overview = """\ -This class represents the font chooser dialog. +This class allows you to use the system font chooser dialog. -wxFontDialog() ----------------------------- - -wxFontDialog(wxWindow* parent, wxFontData* data) - -Constructor. Pass a parent window and a font data object, which will be copied to the font dialog's font data. """ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxFrame.py b/wxPython/demo/wxFrame.py index 3eac8d119c..428859beec 100644 --- a/wxPython/demo/wxFrame.py +++ b/wxPython/demo/wxFrame.py @@ -16,7 +16,7 @@ class MyFrame(wxFrame): def OnCloseMe(self, event): - self.Close(true) + self.Close(True) def OnCloseWindow(self, event): self.Destroy() @@ -27,7 +27,7 @@ def runTest(frame, nb, log): win = MyFrame(frame, -1, "This is a wxFrame", size=(350, 200), style = wxDEFAULT_FRAME_STYLE)# | wxFRAME_TOOL_WINDOW ) frame.otherWin = win - win.Show(true) + win.Show(True) #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxGLCanvas.py b/wxPython/demo/wxGLCanvas.py index d1e2c025b5..a4d0194cb0 100644 --- a/wxPython/demo/wxGLCanvas.py +++ b/wxPython/demo/wxGLCanvas.py @@ -1,18 +1,18 @@ from wxPython.wx import * try: from wxPython.glcanvas import * - haveGLCanvas = true + haveGLCanvas = True except ImportError: - haveGLCanvas = false + haveGLCanvas = False try: # The Python OpenGL package can be found at # http://PyOpenGL.sourceforge.net/ from OpenGL.GL import * from OpenGL.GLUT import * - haveOpenGL = true + haveOpenGL = True except ImportError: - haveOpenGL = false + haveOpenGL = False #---------------------------------------------------------------------- @@ -62,7 +62,7 @@ else: c.SetSize((200, 200)) box.Add(c, 0, wxALIGN_CENTER|wxALL, 15) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(box) @@ -71,7 +71,7 @@ else: canvasClass = eval(canvasClassName) frame = wxFrame(None, -1, canvasClassName, size=(400,400)) canvas = canvasClass(frame) - frame.Show(true) + frame.Show(True) @@ -85,7 +85,7 @@ else: class MyCanvasBase(wxGLCanvas): def __init__(self, parent): wxGLCanvas.__init__(self, parent, -1) - self.init = false + self.init = False # initial mouse position self.lastx = self.x = 30 self.lasty = self.y = 30 @@ -110,7 +110,7 @@ else: self.SetCurrent() if not self.init: self.InitGL() - self.init = true + self.init = True self.OnDraw() def OnMouseDown(self, evt): @@ -123,7 +123,7 @@ else: if evt.Dragging() and evt.LeftIsDown(): self.x, self.y = self.lastx, self.lasty self.x, self.y = evt.GetPosition() - self.Refresh(false) + self.Refresh(False) @@ -268,9 +268,9 @@ def _test(): frame = wxFrame(None, -1, "GL Demos", wxDefaultPosition, wxSize(600,300)) #win = ConeCanvas(frame) MySplitter(frame) - frame.Show(TRUE) + frame.Show(True) self.SetTopWindow(frame) - return TRUE + return True app = MyApp(0) app.MainLoop() diff --git a/wxPython/demo/wxGenericDirCtrl.py b/wxPython/demo/wxGenericDirCtrl.py index 6799b1f93f..7f338e67df 100644 --- a/wxPython/demo/wxGenericDirCtrl.py +++ b/wxPython/demo/wxGenericDirCtrl.py @@ -37,7 +37,7 @@ class TestPanel(wxPanel): sz.AddGrowableCol(1) sz.AddGrowableCol(2) self.SetSizer(sz) - self.SetAutoLayout(true) + self.SetAutoLayout(True) #---------------------------------------------------------------------- diff --git a/wxPython/demo/wxGrid.py b/wxPython/demo/wxGrid.py index a95ed9bacc..365e0125e6 100644 --- a/wxPython/demo/wxGrid.py +++ b/wxPython/demo/wxGrid.py @@ -4,12 +4,13 @@ from wxPython.wx import * #--------------------------------------------------------------------------- buttonDefs = { - 814 : ('GridSimple', 'Simple wxGrid, catching all events'), - 815 : ('GridStdEdRend', 'wxGrid showing Editors and Renderers'), - 818 : ('GridHugeTable', 'A wxGrid with a HUGE table (100 MILLION cells!)'), - 817 : ('GridCustTable', 'wxGrid using a custom Table, with non-string data'), - 819 : ('GridEnterHandler','Remapping keys to behave differently'), - 820 : ('GridCustEditor', 'Shows how to create a custom Cell Editor'), + 814 : ('GridSimple', ' Simple wxGrid, catching all events '), + 815 : ('GridStdEdRend', ' wxGrid showing Editors and Renderers '), + 818 : ('GridHugeTable', ' A wxGrid with a HUGE table (100 MILLION cells!) '), + 817 : ('GridCustTable', ' wxGrid using a custom Table, with non-string data '), + 819 : ('GridEnterHandler',' Remapping keys to behave differently '), + 820 : ('GridCustEditor', ' Shows how to create a custom Cell Editor '), + 821 : ('GridDragable', ' A wxGrid with dragable rows and columns '), } @@ -28,7 +29,7 @@ class ButtonPanel(wxPanel): box.Add(btn, 0, wxALIGN_CENTER|wxALL, 15) EVT_BUTTON(self, k, self.OnButton) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(box) @@ -36,7 +37,7 @@ class ButtonPanel(wxPanel): modName = buttonDefs[evt.GetId()][0] module = __import__(modName) frame = module.TestFrame(None, self.log) - frame.Show(true) + frame.Show(True) #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxHtmlWindow.py b/wxPython/demo/wxHtmlWindow.py index 5692a76b0b..dc87749b14 100644 --- a/wxPython/demo/wxHtmlWindow.py +++ b/wxPython/demo/wxHtmlWindow.py @@ -43,6 +43,23 @@ class MyHtmlWindow(wxHtmlWindow): self.base_OnCellClicked(cell, x, y, evt) +# This filter doesn't really do anything but show how to use filters +class MyHtmlFilter(wxHtmlFilter): + def __init__(self, log): + wxHtmlFilter.__init__(self) + self.log = log + + # This method decides if this filter is able to read the file + def CanRead(self, fsfile): + self.log.write("CanRead: %s\n" % fsfile.GetMimeType()) + return False + + # If CanRead returns True then this method is called to actually + # read the file and return the contents. + def ReadFile(self, fsfile): + return "" + + class TestHtmlPanel(wxPanel): def __init__(self, parent, frame, log): wxPanel.__init__(self, parent, -1, style=wxNO_FULL_REPAINT_ON_RESIZE) @@ -51,9 +68,13 @@ class TestHtmlPanel(wxPanel): self.cwd = os.path.split(sys.argv[0])[0] if not self.cwd: self.cwd = os.getcwd() + if frame: + self.titleBase = frame.GetTitle() + + wxHtmlWindow_AddFilter(MyHtmlFilter(log)) self.html = MyHtmlWindow(self, -1, log) - self.html.SetRelatedFrame(frame, "wxPython: (A Demonstration) -- %s") + self.html.SetRelatedFrame(frame, self.titleBase + " -- %s") self.html.SetRelatedStatusBar(0) self.printer = wxHtmlEasyPrinting() @@ -93,7 +114,7 @@ class TestHtmlPanel(wxPanel): self.box.Add(subbox, 0, wxGROW) self.SetSizer(self.box) - self.SetAutoLayout(true) + self.SetAutoLayout(True) # A button with this ID is created on the widget test page. EVT_BUTTON(self, wxID_OK, self.OnOk) @@ -101,6 +122,11 @@ class TestHtmlPanel(wxPanel): self.OnShowDefault(None) + def ShutdownDemo(self): + # put the frame title back + if self.frame: + self.frame.SetTitle(self.titleBase) + def OnShowDefault(self, event): name = os.path.join(self.cwd, opj('data/test.htm')) @@ -168,15 +194,27 @@ def runTest(frame, nb, log): -overview = """\ -wxHtmlWindow is capable of parsing and rendering most simple HTML tags. +overview = """<html><body> +<h2>wxHtmlWindow</h2> -It is not intended to be a high-end HTML browser. If you're looking for something like that try http://www.mozilla.org - there's a chance you'll be able to make their widget wxWindows-compatible. I'm sure everyone will enjoy your work in that case... +<p>wxHtmlWindow is capable of parsing and rendering most +simple HTML tags. +<p>It is not intended to be a high-end HTML browser. If you're +looking for something like that try http://www.mozilla.org - there's a +chance you'll be able to make their widget wxWindows-compatible. I'm +sure everyone will enjoy your work in that case... + +</body></html> """ +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxIEHtmlWin.py b/wxPython/demo/wxIEHtmlWin.py index a09476159b..1604da40cc 100644 --- a/wxPython/demo/wxIEHtmlWin.py +++ b/wxPython/demo/wxIEHtmlWin.py @@ -9,7 +9,7 @@ if wxPlatform == '__WXMSW__': class TestPanel(wxWindow): def __init__(self, parent, log, frame=None): wxWindow.__init__(self, parent, -1, - style=wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE) + style=wxTAB_TRAVERSAL|wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE) self.log = log self.current = "http://wxWindows.org/" self.frame = frame @@ -68,7 +68,7 @@ class TestPanel(wxWindow): self.location.Append(self.current) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_SIZE(self, self.OnSize) # Hook up the event handlers for the IE window @@ -80,6 +80,12 @@ class TestPanel(wxWindow): EVT_MSHTML_TITLECHANGE(self, -1, self.OnTitleChange) + def ShutdownDemo(self): + # put the frame title back + if self.frame: + self.frame.SetTitle(self.titleBase) + + def OnSize(self, evt): self.Layout() diff --git a/wxPython/demo/wxImage.py b/wxPython/demo/wxImage.py index 6a15003e85..23d3ee7eee 100644 --- a/wxPython/demo/wxImage.py +++ b/wxPython/demo/wxImage.py @@ -39,3 +39,11 @@ def runTest(frame, nb, log): overview = """\ """ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxImageFromStream.py b/wxPython/demo/wxImageFromStream.py index 19e6f28f21..6953a2ca4c 100644 --- a/wxPython/demo/wxImageFromStream.py +++ b/wxPython/demo/wxImageFromStream.py @@ -10,7 +10,7 @@ class TestPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) - data = open(opj('bitmaps/image.gif'), "rb").read() + data = open(opj('bitmaps/image.png'), "rb").read() stream = StringIO(data) bmp = wxBitmapFromImage( wxImageFromStream( stream )) @@ -18,8 +18,7 @@ class TestPanel(wxPanel): wxStaticText(self, -1, "This image was loaded from a Python file-like object:", (15, 15)) - wxStaticBitmap(self, -1, bmp, (15, 45)) - + wxStaticBitmap(self, -1, bmp, (15, 45))#, (bmp.GetWidth(), bmp.GetHeight())) diff --git a/wxPython/demo/wxIntCtrl.py b/wxPython/demo/wxIntCtrl.py new file mode 100644 index 0000000000..fb1bcb5ff0 --- /dev/null +++ b/wxPython/demo/wxIntCtrl.py @@ -0,0 +1,337 @@ +from wxPython.wx import * +from wxPython.lib.intctrl import * + +#---------------------------------------------------------------------- + +class TestPanel( wxPanel ): + def __init__( self, parent, log ): + + wxPanel.__init__( self, parent, -1 ) + self.log = log + panel = wxPanel( self, -1 ) + + self.set_min = wxCheckBox( panel, -1, "Set minimum value:" ) + self.min = wxIntCtrl( panel, size=wxSize( 50, -1 ) ) + self.min.Enable( False ) + + self.set_max = wxCheckBox( panel, -1, "Set maximum value:" ) + self.max = wxIntCtrl( panel, size=wxSize( 50, -1 ) ) + self.max.Enable( False ) + + self.limit_target = wxCheckBox( panel, -1, "Limit control" ) + self.allow_none = wxCheckBox( panel, -1, "Allow empty control" ) + self.allow_long = wxCheckBox( panel, -1, "Allow long integers" ) + + label = wxStaticText( panel, -1, "Resulting integer control:" ) + self.target_ctl = wxIntCtrl( panel ) + + grid = wxFlexGridSizer( 0, 2, 0, 0 ) + grid.AddWindow( self.set_min, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + grid.AddWindow( self.min, 0, wxALIGN_LEFT|wxALL, 5 ) + + grid.AddWindow( self.set_max, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + grid.AddWindow( self.max, 0, wxALIGN_LEFT|wxALL, 5 ) + + grid.AddWindow( self.limit_target, 0, wxALIGN_LEFT|wxALL, 5 ) + grid.AddSpacer( 20, 0, 0, wxALIGN_LEFT|wxALL, 5 ) + grid.AddWindow( self.allow_none, 0, wxALIGN_LEFT|wxALL, 5 ) + grid.AddSpacer( 20, 0, 0, wxALIGN_LEFT|wxALL, 5 ) + grid.AddWindow( self.allow_long, 0, wxALIGN_LEFT|wxALL, 5 ) + grid.AddSpacer( 20, 0, 0, wxALIGN_LEFT|wxALL, 5 ) + + grid.AddSpacer( 20, 0, 0, wxALIGN_LEFT|wxALL, 5 ) + grid.AddSpacer( 20, 0, 0, wxALIGN_LEFT|wxALL, 5 ) + + grid.AddWindow( label, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + grid.AddWindow( self.target_ctl, 0, wxALIGN_LEFT|wxALL, 5 ) + + outer_box = wxBoxSizer( wxVERTICAL ) + outer_box.AddSizer( grid, 0, wxALIGN_CENTRE|wxALL, 20 ) + + panel.SetAutoLayout( True ) + panel.SetSizer( outer_box ) + outer_box.Fit( panel ) + panel.Move( (50,50) ) + self.panel = panel + + EVT_CHECKBOX( self, self.set_min.GetId(), self.OnSetMin ) + EVT_CHECKBOX( self, self.set_max.GetId(), self.OnSetMax ) + EVT_CHECKBOX( self, self.limit_target.GetId(), self.SetTargetMinMax ) + EVT_CHECKBOX( self, self.allow_none.GetId(), self.OnSetAllowNone ) + EVT_CHECKBOX( self, self.allow_long.GetId(), self.OnSetAllowLong ) + EVT_INT( self, self.min.GetId(), self.SetTargetMinMax ) + EVT_INT( self, self.max.GetId(), self.SetTargetMinMax ) + EVT_INT( self, self.target_ctl.GetId(), self.OnTargetChange ) + + + def OnSetMin( self, event ): + self.min.Enable( self.set_min.GetValue() ) + self.SetTargetMinMax() + + def OnSetMax( self, event ): + self.max.Enable( self.set_max.GetValue() ) + self.SetTargetMinMax() + + + def SetTargetMinMax( self, event=None ): + min = max = None + self.target_ctl.SetLimited( self.limit_target.GetValue() ) + + if self.set_min.GetValue(): + min = self.min.GetValue() + if self.set_max.GetValue(): + max = self.max.GetValue() + + cur_min, cur_max = self.target_ctl.GetBounds() + + if min != cur_min and not self.target_ctl.SetMin( min ): + self.log.write( "min (%d) > current max (%d) -- bound not set\n" % ( min, self.target_ctl.GetMax() ) ) + self.min.SetForegroundColour( wxRED ) + else: + self.min.SetForegroundColour( wxBLACK ) + self.min.Refresh() + + if max != cur_max and not self.target_ctl.SetMax( max ): + self.log.write( "max (%d) < current min (%d) -- bound not set\n" % ( max, self.target_ctl.GetMin() ) ) + self.max.SetForegroundColour( wxRED ) + else: + self.max.SetForegroundColour( wxBLACK ) + self.max.Refresh() + + if min != cur_min or max != cur_max: + new_min, new_max = self.target_ctl.GetBounds() + self.log.write( "current min, max: (%s, %s)\n" % ( str(new_min), str(new_max) ) ) + + + def OnSetAllowNone( self, event ): + self.target_ctl.SetNoneAllowed( self.allow_none.GetValue() ) + + + def OnSetAllowLong( self, event ): + self.target_ctl.SetLongAllowed( self.allow_long.GetValue() ) + + + def OnTargetChange( self, event ): + ctl = event.GetEventObject() + value = ctl.GetValue() + ib_str = [ " (out of bounds)", "" ] + self.log.write( "integer value = %s%s\n" % ( str(value), ib_str[ ctl.IsInBounds(value) ] ) ) + + +#---------------------------------------------------------------------- + +def runTest( frame, nb, log ): + win = TestPanel( nb, log ) + return win + +#---------------------------------------------------------------------- + +overview = """<html><body> +<P> +<B>wxIntCtrl</B> provides a control that takes and returns integers as +value, and provides bounds support and optional value limiting. +<P> +<P> +Here's the API for wxIntCtrl: +<DL><PRE> + <B>wxIntCtrl</B>( + parent, id = -1, + <B>value</B> = 0, + <B>min</B> = None, + <B>max</B> = None, + <B>limited</B> = False, + <B>allow_none</B> = False, + <B>allow_long</B> = False, + <B>default_color</B> = wxBLACK, + <B>oob_color</B> = wxRED, + pos = wxDefaultPosition, + size = wxDefaultSize, + style = 0, + name = "integer") +</PRE> +<UL> + <DT><B>value</B> + <DD>If no initial value is set, the default will be zero, or + the minimum value, if specified. If an illegal string is specified, + a ValueError will result. (You can always later set the initial + value with SetValue() after instantiation of the control.) + <BR> + <DL><B>min</B> + <DD>The minimum value that the control should allow. This can be + adjusted with SetMin(). If the control is not limited, any value + below this bound will be colored with the current out-of-bounds color. + <BR> + <DT><B>max</B> + <DD>The maximum value that the control should allow. This can be + adjusted with SetMax(). If the control is not limited, any value + above this bound will be colored with the current out-of-bounds color. + <BR> + <DT><B>limited</B> + <DD>Boolean indicating whether the control prevents values from + exceeding the currently set minimum and maximum values (bounds). + If <I>False</I> and bounds are set, out-of-bounds values will + be colored with the current out-of-bounds color. + <BR> + <DT><B>allow_none</B> + <DD>Boolean indicating whether or not the control is allowed to be + empty, representing a value of <I>None</I> for the control. + <BR> + <DT><B>allow_long</B> + <DD>Boolean indicating whether or not the control is allowed to hold + and return a value of type long as well as int. If False, the + control will be implicitly limited to have a value such that + -sys.maxint-1 &lt;= n &lt;= sys.maxint. + <BR> + <DT><B>default_color</B> + <DD>Color value used for in-bounds values of the control. + <BR> + <DT><B>oob_color</B> + <DD>Color value used for out-of-bounds values of the control + when the bounds are set but the control is not limited. +</UL> +<BR> +<BR> +<DT><B>EVT_INT(win, id, func)</B> +<DD>Respond to a wxEVT_COMMAND_INT_UPDATED event, generated when the +value changes. Notice that this event will always be sent when the +control's contents changes - whether this is due to user input or +comes from the program itself (for example, if SetValue() is called.) +<BR> +<BR> +<DT><B>SetValue(int)</B> +<DD>Sets the value of the control to the integer value specified. +The resulting actual value of the control may be altered to +conform with the bounds set on the control if limited, +or colored if not limited but the value is out-of-bounds. +A ValueError exception will be raised if an invalid value +is specified. +<BR> +<DT><B>GetValue()</B> +<DD>Retrieves the integer value from the control. The value +retrieved will be sized as an int if possible or a long, +if necessary. +<BR> +<BR> +<DT><B>SetMin(min=None)</B> +<DD>Sets the expected minimum value, or lower bound, of the control. +(The lower bound will only be enforced if the control is +configured to limit its values to the set bounds.) +If a value of <I>None</I> is provided, then the control will have +no explicit lower bound. If the value specified is greater than +the current lower bound, then the function returns 0 and the +lower bound will not change from its current setting. On success, +the function returns 1. +<DT><DD>If successful and the current value is +lower than the new lower bound, if the control is limited, the +value will be automatically adjusted to the new minimum value; +if not limited, the value in the control will be colored with +the current out-of-bounds color. +<BR> +<DT><B>GetMin()</B> +<DD>Gets the current lower bound value for the control. +It will return None if no lower bound is currently specified. +<BR> +<BR> +<DT><B>SetMax(max=None)</B> +<DD>Sets the expected maximum value, or upper bound, of the control. +(The upper bound will only be enforced if the control is +configured to limit its values to the set bounds.) +If a value of <I>None</I> is provided, then the control will +have no explicit upper bound. If the value specified is less +than the current lower bound, then the function returns 0 and +the maximum will not change from its current setting. On success, +the function returns 1. +<DT><DD>If successful and the current value +is greater than the new upper bound, if the control is limited +the value will be automatically adjusted to the new maximum value; +if not limited, the value in the control will be colored with the +current out-of-bounds color. +<BR> +<DT><B>GetMax()</B> +<DD>Gets the current upper bound value for the control. +It will return None if no upper bound is currently specified. +<BR> +<BR> +<DT><B>SetBounds(min=None,max=None)</B> +<DD>This function is a convenience function for setting the min and max +values at the same time. The function only applies the maximum bound +if setting the minimum bound is successful, and returns True +only if both operations succeed. <B><I>Note:</I></B> leaving out an argument +will remove the corresponding bound. +<DT><B>GetBounds()</B> +<DD>This function returns a two-tuple (min,max), indicating the +current bounds of the control. Each value can be None if +that bound is not set. +<BR> +<BR> +<DT><B>IsInBounds(value=None)</B> +<DD>Returns <I>True</I> if no value is specified and the current value +of the control falls within the current bounds. This function can also +be called with a value to see if that value would fall within the current +bounds of the given control. +<BR> +<BR> +<DT><B>SetLimited(bool)</B> +<DD>If called with a value of True, this function will cause the control +to limit the value to fall within the bounds currently specified. +If the control's value currently exceeds the bounds, it will then +be limited accordingly. +If called with a value of 0, this function will disable value +limiting, but coloring of out-of-bounds values will still take +place if bounds have been set for the control. +<DT><B>IsLimited()</B> +<DD>Returns <I>True</I> if the control is currently limiting the +value to fall within the current bounds. +<BR> +<BR> +<DT><B>SetNoneAllowed(bool)</B> +<DD>If called with a value of True, this function will cause the control +to allow the value to be empty, representing a value of None. +If called with a value of fakse, this function will prevent the value +from being None. If the value of the control is currently None, +ie. the control is empty, then the value will be changed to that +of the lower bound of the control, or 0 if no lower bound is set. +<DT><B>IsNoneAllowed()</B> +<DD>Returns <I>True</I> if the control currently allows its +value to be None. +<BR> +<BR> +<DT><B>SetLongAllowed(bool)</B> +<DD>If called with a value of True, this function will cause the +control to allow the value to be a long. If called with a value +of False, and the value of the control is currently a long value, +the value of the control will be adjusted to fall within the +size of an integer type, at either the sys.maxint or -sys.maxint-1, +for positive and negative values, respectively. +<DT><B>IsLongAllowed()</B> +<DD>Returns <I>True</I> if the control currently allows its +value to be of type long. +<BR> +<BR> +<DT><B>SetColors(default_color=wxBLACK, oob_color=wxRED)</B> +<DD>Tells the control what colors to use for normal and out-of-bounds +values. If the value currently exceeds the bounds, it will be +recolored accordingly. +<DT><B>GetColors()</B> +<DD>Returns a tuple of <I>(default_color, oob_color)</I> indicating +the current color settings for the control. +<BR> +<BR> +<DT><B>Cut()</B> +<DD>Will allow cuts to the clipboard of the text portion of the value, +leaving the value of zero if the entire contents are "cut." +<DT><B>Paste()</B> +<DD>Will paste the contents of the clipboard to the selected portion +of the value; if the resulting string does not represent a legal +value, a ValueError will result. If the result is out-of bounds, +it will either be adjusted or colored as appropriate. +</DL> +</body></html> +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) diff --git a/wxPython/demo/wxJoystick.py b/wxPython/demo/wxJoystick.py index 2e13d81010..1c4882f40e 100644 --- a/wxPython/demo/wxJoystick.py +++ b/wxPython/demo/wxJoystick.py @@ -11,7 +11,7 @@ class JoystickTestPanel(wxPanel): style = wxTAB_TRAVERSAL ): wxPanel.__init__(self, parent, id, pos, size, style) - MakeJoystickTestPanel( self, true ) + MakeJoystickTestPanel( self, True ) try: self.stick = wxJoystick() diff --git a/wxPython/demo/wxKeyEvents.py b/wxPython/demo/wxKeyEvents.py index e7574a702a..7e214089f5 100644 --- a/wxPython/demo/wxKeyEvents.py +++ b/wxPython/demo/wxKeyEvents.py @@ -120,11 +120,11 @@ class KeySink(wxWindow): #| wxSUNKEN_BORDER ) self.SetBackgroundColour(wxBLUE) - self.haveFocus = false - self.callSkip = false - self.logKeyDn = true - self.logKeyUp = true - self.logChar = true + self.haveFocus = False + self.callSkip = False + self.logKeyDn = True + self.logKeyUp = True + self.logChar = True EVT_PAINT(self, self.OnPaint) EVT_SET_FOCUS(self, self.OnSetFocus) @@ -164,11 +164,11 @@ class KeySink(wxWindow): def OnSetFocus(self, evt): - self.haveFocus = true + self.haveFocus = True self.Refresh() def OnKillFocus(self, evt): - self.haveFocus = false + self.haveFocus = False self.Refresh() def OnMouse(self, evt): @@ -277,15 +277,15 @@ class TestPanel(wxPanel): cb2 = wxCheckBox(self, -1, "EVT_KEY_UP") EVT_CHECKBOX(self, cb2.GetId(), self.OnKeyUpCB) - cb2.SetValue(true) + cb2.SetValue(True) cb3 = wxCheckBox(self, -1, "EVT_KEY_DOWN") EVT_CHECKBOX(self, cb3.GetId(), self.OnKeyDnCB) - cb3.SetValue(true) + cb3.SetValue(True) cb4 = wxCheckBox(self, -1, "EVT_CHAR") EVT_CHECKBOX(self, cb4.GetId(), self.OnCharCB) - cb4.SetValue(true) + cb4.SetValue(True) buttons = wxBoxSizer(wxHORIZONTAL) buttons.Add(btn, 0, wxALL, 4) diff --git a/wxPython/demo/wxLEDNumberCtrl.py b/wxPython/demo/wxLEDNumberCtrl.py index 22be241dbb..d8907a35c1 100644 --- a/wxPython/demo/wxLEDNumberCtrl.py +++ b/wxPython/demo/wxLEDNumberCtrl.py @@ -17,7 +17,7 @@ class TestPanel(wxPanel): led = wxLEDNumberCtrl(self, -1, (25,100), (280, 50)) led.SetValue("56789") led.SetAlignment(wxLED_ALIGN_RIGHT) - led.SetDrawFaded(false) + led.SetDrawFaded(False) led = wxLEDNumberCtrl(self, -1, (25,175), (280, 50), wxLED_ALIGN_CENTER)# | wxLED_DRAW_FADED) diff --git a/wxPython/demo/wxLayoutConstraints.py b/wxPython/demo/wxLayoutConstraints.py index 8e63a12af2..4ffa033924 100644 --- a/wxPython/demo/wxLayoutConstraints.py +++ b/wxPython/demo/wxLayoutConstraints.py @@ -6,7 +6,7 @@ from wxPython.wx import * class TestLayoutConstraints(wxPanel): def __init__(self, parent): wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_BUTTON(self, 100, self.OnButton) self.SetBackgroundColour(wxNamedColour("MEDIUM ORCHID")) diff --git a/wxPython/demo/wxListBox.py b/wxPython/demo/wxListBox.py index f2f8bf7056..074f2de5ae 100644 --- a/wxPython/demo/wxListBox.py +++ b/wxPython/demo/wxListBox.py @@ -1,8 +1,6 @@ from wxPython.wx import * -import string - #--------------------------------------------------------------------------- class wxFindPrefixListBox(wxListBox): @@ -10,18 +8,22 @@ class wxFindPrefixListBox(wxListBox): choices=[], style=0, validator=wxDefaultValidator): wxListBox.__init__(self, parent, id, pos, size, choices, style, validator) self.typedText = '' - EVT_KEY_UP(self, self.OnKey) + self.log = parent.log + EVT_KEY_DOWN(self, self.OnKey) def FindPrefix(self, prefix): + self.log.WriteText('Looking for prefix: %s\n' % prefix) if prefix: - prefix = string.lower(prefix) + prefix = prefix.lower() length = len(prefix) for x in range(self.Number()): text = self.GetString(x) - text = string.lower(text) + text = text.lower() if text[:length] == prefix: + self.log.WriteText('Prefix %s is found.\n' % prefix) return x + self.log.WriteText('Prefix %s is not found.\n' % prefix) return -1 @@ -43,8 +45,12 @@ class wxFindPrefixListBox(wxListBox): self.SetSelection(item) else: + self.typedText = '' evt.Skip() + def OnKeyDown(self, evt): + pass + #--------------------------------------------------------------------------- @@ -90,7 +96,9 @@ class TestListBox(wxPanel): def EvtListBox(self, event): - self.log.WriteText('EvtListBox: %s\n' % event.GetString()) + self.log.WriteText('EvtListBox: %s, %s, %s\n' % + (event.GetString(), event.IsSelection(), event.GetSelection())) + lb = event.GetEventObject() data = lb.GetClientData(lb.GetSelection()) if data is not None: @@ -127,14 +135,19 @@ def runTest(frame, nb, log): - - - - - - - -overview = """\ -A listbox is used to select one or more of a list of strings. The strings are displayed in a scrolling box, with the selected string(s) marked in reverse video. A listbox can be single selection (if an item is selected, the previous selection is removed) or multiple selection (clicking an item toggles the item on or off independently of other selections). - +overview = """<html><body> +A listbox is used to select one or more of a list of +strings. The strings are displayed in a scrolling box, with the +selected string(s) marked in reverse video. A listbox can be single +selection (if an item is selected, the previous selection is removed) +or multiple selection (clicking an item toggles the item on or off +independently of other selections). +</body></html> """ + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxListCtrl.py b/wxPython/demo/wxListCtrl.py index 0979a5c738..d640ecddb6 100644 --- a/wxPython/demo/wxListCtrl.py +++ b/wxPython/demo/wxListCtrl.py @@ -97,7 +97,10 @@ class TestListCtrlPanel(wxPanel, wxColumnSorterMixin): self.sm_dn = self.il.Add(images.getSmallDnArrowBitmap()) self.list = TestListCtrl(self, tID, - style=wxLC_REPORT|wxSUNKEN_BORDER)#|wxLC_VRULES|wxLC_HRULES) + style=wxLC_REPORT | wxSUNKEN_BORDER + #| wxLC_NO_HEADER + #| wxLC_VRULES | wxLC_HRULES + ) self.list.SetImageList(self.il, wxIMAGE_LIST_SMALL) self.PopulateList() @@ -106,7 +109,7 @@ class TestListCtrlPanel(wxPanel, wxColumnSorterMixin): # see wxPython/lib/mixins/listctrl.py self.itemDataMap = musicdata wxColumnSorterMixin.__init__(self, 3) - #self.SortListItems(0, true) + #self.SortListItems(0, True) EVT_SIZE(self, self.OnSize) EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) @@ -191,7 +194,9 @@ class TestListCtrlPanel(wxPanel, wxColumnSorterMixin): self.x = event.GetX() self.y = event.GetY() self.log.WriteText("x, y = %s\n" % str((self.x, self.y))) - print event.GetEventObject() + item, flags = self.list.HitTest((self.x, self.y)) + if flags & wxLIST_HITTEST_ONITEM: + self.list.Select(item) event.Skip() @@ -201,6 +206,7 @@ class TestListCtrlPanel(wxPanel, wxColumnSorterMixin): def OnItemSelected(self, event): + ##print event.GetItem().GetTextColour() self.currentItem = event.m_itemIndex self.log.WriteText("OnItemSelected: %s, %s, %s, %s\n" % (self.currentItem, @@ -213,17 +219,19 @@ class TestListCtrlPanel(wxPanel, wxColumnSorterMixin): # this does self.list.SetItemState(10, 0, wxLIST_STATE_SELECTED) - # Show how to reselect something we don't want deselected def OnItemDeselected(self, evt): item = evt.GetItem() - print evt.m_itemIndex + self.log.WriteText("OnItemDeselected: %d" % evt.m_itemIndex) + + # Show how to reselect something we don't want deselected if evt.m_itemIndex == 11: wxCallAfter(self.list.SetItemState, 11, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED) def OnItemActivated(self, event): self.currentItem = event.m_itemIndex - self.log.WriteText("OnItemActivated: %s\n" % self.list.GetItemText(self.currentItem)) + self.log.WriteText("OnItemActivated: %s\nTopItem: %s" % + (self.list.GetItemText(self.currentItem), self.list.GetTopItem())) def OnItemDelete(self, event): self.log.WriteText("OnItemDelete\n") @@ -256,30 +264,37 @@ class TestListCtrlPanel(wxPanel, wxColumnSorterMixin): def OnRightClick(self, event): self.log.WriteText("OnRightClick %s\n" % self.list.GetItemText(self.currentItem)) + + # only do this part the first time + if not hasattr(self, "popupID1"): + self.popupID1 = wxNewId() + self.popupID2 = wxNewId() + self.popupID3 = wxNewId() + self.popupID4 = wxNewId() + self.popupID5 = wxNewId() + EVT_MENU(self, self.popupID1, self.OnPopupOne) + EVT_MENU(self, self.popupID2, self.OnPopupTwo) + EVT_MENU(self, self.popupID3, self.OnPopupThree) + EVT_MENU(self, self.popupID4, self.OnPopupFour) + EVT_MENU(self, self.popupID5, self.OnPopupFive) + + # make a menu menu = wxMenu() - tPopupID1 = 0 - tPopupID2 = 1 - tPopupID3 = 2 - tPopupID4 = 3 - tPopupID5 = 5 - # Show how to put an icon in the menu - item = wxMenuItem(menu, tPopupID1,"One") + item = wxMenuItem(menu, self.popupID1,"One") item.SetBitmap(images.getSmilesBitmap()) - menu.AppendItem(item) - menu.Append(tPopupID2, "Two") - menu.Append(tPopupID3, "ClearAll and repopulate") - menu.Append(tPopupID4, "DeleteAllItems") - menu.Append(tPopupID5, "GetItem") - EVT_MENU(self, tPopupID1, self.OnPopupOne) - EVT_MENU(self, tPopupID2, self.OnPopupTwo) - EVT_MENU(self, tPopupID3, self.OnPopupThree) - EVT_MENU(self, tPopupID4, self.OnPopupFour) - EVT_MENU(self, tPopupID5, self.OnPopupFive) + # add some other items + menu.Append(self.popupID2, "Two") + menu.Append(self.popupID3, "ClearAll and repopulate") + menu.Append(self.popupID4, "DeleteAllItems") + menu.Append(self.popupID5, "GetItem") + + # Popup the menu. If an item is selected then its handler + # will be called before PopupMenu returns. self.PopupMenu(menu, wxPoint(self.x, self.y)) menu.Destroy() - event.Skip() + def OnPopupOne(self, event): self.log.WriteText("Popup one\n") diff --git a/wxPython/demo/wxListCtrl_virtual.py b/wxPython/demo/wxListCtrl_virtual.py index f7489db1c8..7dffd52fdd 100644 --- a/wxPython/demo/wxListCtrl_virtual.py +++ b/wxPython/demo/wxListCtrl_virtual.py @@ -45,7 +45,8 @@ class TestVirtualList(wxListCtrl): def OnItemActivated(self, event): self.currentItem = event.m_itemIndex - self.log.WriteText("OnItemActivated: %s\n" % self.GetItemText(self.currentItem)) + self.log.WriteText("OnItemActivated: %s\nTopItem: %s\n" % + (self.GetItemText(self.currentItem), self.GetTopItem())) def getColumnText(self, index, col): item = self.GetItem(index, col) diff --git a/wxPython/demo/wxMDIWindows.py b/wxPython/demo/wxMDIWindows.py index 91d7a55eb0..7eef8a39c9 100644 --- a/wxPython/demo/wxMDIWindows.py +++ b/wxPython/demo/wxMDIWindows.py @@ -18,7 +18,7 @@ class TestPanel(wxPanel): box.Add(20, 30) box.Add(b1, 0, wxALIGN_CENTER|wxALL, 15) box.Add(b2, 0, wxALIGN_CENTER|wxALL, 15) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(box) diff --git a/wxPython/demo/wxMVCTree.py b/wxPython/demo/wxMVCTree.py index af7760cb9d..808f8870b3 100644 --- a/wxPython/demo/wxMVCTree.py +++ b/wxPython/demo/wxMVCTree.py @@ -29,11 +29,11 @@ def runTest(frame, nb, log): p = wxMVCTree(nb, -1) #f = wxFrame(frame, -1, "wxMVCTree") #p = wxMVCTree(f, -1) - p.SetAssumeChildren(true) + p.SetAssumeChildren(True) p.SetModel(LateFSTreeModel(os.path.normpath(os.getcwd() + os.sep +'..'))) #Uncomment this to enable live filename editing! # p.AddEditor(FileEditor(p)) - p.SetMultiSelect(true) + p.SetMultiSelect(True) EVT_MVCTREE_SEL_CHANGING(p, p.GetId(), selchanging) EVT_MVCTREE_SEL_CHANGED(p, p.GetId(), selchanged) EVT_MVCTREE_ITEM_EXPANDED(p, p.GetId(), expanded) @@ -44,7 +44,7 @@ def runTest(frame, nb, log): return p #frame.otherWin = f - #f.Show(true) + #f.Show(True) #return None diff --git a/wxPython/demo/wxMask.py b/wxPython/demo/wxMask.py index 7c1f7ccfc6..68b8468a86 100644 --- a/wxPython/demo/wxMask.py +++ b/wxPython/demo/wxMask.py @@ -40,8 +40,7 @@ class TestMaskWindow(wxScrolledWindow): self.bmp_withmask = images.getTestStar2Bitmap() # this mask comes from a monochrome bitmap - self.bmp_themask = images.getTestMaskBitmap() - self.bmp_themask.SetDepth(1) + self.bmp_themask = wxBitmapFromImage(images.getTestMaskImage(), 1) mask = wxMask(self.bmp_themask) # set the mask on our bitmap @@ -87,7 +86,7 @@ class TestMaskWindow(wxScrolledWindow): x,y = 120+150*(i%4), 20+100*(i/4) dc.DrawText(text, x, y-20) mdc.SelectObject(self.bmp_withcolourmask) - dc.Blit(x,y, cx,cy, mdc, 0,0, code, true) + dc.Blit(x,y, cx,cy, mdc, 0,0, code, True) i = i + 1 @@ -115,3 +114,11 @@ def runTest(frame, nb, log): overview = """\ """ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxMenu.py b/wxPython/demo/wxMenu.py index 87758ff783..bdbf93489b 100644 --- a/wxPython/demo/wxMenu.py +++ b/wxPython/demo/wxMenu.py @@ -30,11 +30,11 @@ check the source for this sample to see how to implement them. # 1st menu from left menu1 = wxMenu() - menu1.Append(101, "Mercury", "This the text in the Statusbar") - menu1.Append(102, "Venus", "") - menu1.Append(103, "Earth", "You may select Earth too") + menu1.Append(101, "&Mercury", "This the text in the Statusbar") + menu1.Append(102, "&Venus", "") + menu1.Append(103, "&Earth", "You may select Earth too") menu1.AppendSeparator() - menu1.Append(104, "Close", "Close this frame") + menu1.Append(104, "&Close", "Close this frame") # Add menu to the menu bar menuBar.Append(menu1, "&Planets") @@ -151,7 +151,7 @@ check the source for this sample to see how to implement them. def runTest(frame, nb, log): win = MyFrame(frame, -1, log) frame.otherWin = win - win.Show(true) + win.Show(True) #------------------------------------------------------------------- diff --git a/wxPython/demo/wxMimeTypesManager.py b/wxPython/demo/wxMimeTypesManager.py index 5768ba2592..39ba2074dc 100644 --- a/wxPython/demo/wxMimeTypesManager.py +++ b/wxPython/demo/wxMimeTypesManager.py @@ -14,7 +14,7 @@ class MimeTypesTestPanel(wxPanel): style = wxTAB_TRAVERSAL ): wxPanel.__init__(self, parent, id, pos, size, style) - MakeMimeTypesTestPanel( self, true ) + MakeMimeTypesTestPanel( self, True ) # WDR: handler declarations for MimeTypesTestPanel EVT_LISTBOX(self, ID_LISTBOX, self.OnListbox) @@ -34,8 +34,8 @@ class MimeTypesTestPanel(wxPanel): def OnListbox(self, event): mimetype = event.GetString() self.GetInputText().SetValue(mimetype) - self.GetMimeBtn().SetValue(TRUE) - self.GetExtensionBtn().SetValue(FALSE) + self.GetMimeBtn().SetValue(True) + self.GetExtensionBtn().SetValue(False) self.OnLookup() diff --git a/wxPython/demo/wxMiniFrame.py b/wxPython/demo/wxMiniFrame.py index 2e947486e8..fd7c6c7f45 100644 --- a/wxPython/demo/wxMiniFrame.py +++ b/wxPython/demo/wxMiniFrame.py @@ -14,9 +14,10 @@ class MyMiniFrame(wxMiniFrame): EVT_CLOSE(self, self.OnCloseWindow) def OnCloseMe(self, event): - self.Close(true) + self.Close(True) def OnCloseWindow(self, event): + print "OnCloseWindow" self.Destroy() #--------------------------------------------------------------------------- @@ -28,7 +29,7 @@ def runTest(frame, nb, log): win.SetSize((200, 200)) win.CenterOnParent(wxBOTH) frame.otherWin = win - win.Show(true) + win.Show(True) #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxMultiSash.py b/wxPython/demo/wxMultiSash.py new file mode 100644 index 0000000000..6308121201 --- /dev/null +++ b/wxPython/demo/wxMultiSash.py @@ -0,0 +1,90 @@ +from wxPython.wx import * +from wxPython.lib.multisash import wxMultiSash +from wxPython.stc import * + +#--------------------------------------------------------------------------- + +sampleText="""\ +You can drag the little tab on the vertical sash left to create another view, +or you can drag the tab on the horizontal sash to the top to create another +horizontal view. + +The red blocks on the sashes will destroy the view (bottom,left) this block +belongs to. + +A yellow rectangle also highlights the current selected view. + +By calling GetSaveData on the multiSash control the control will return its +contents and the positions of each sash as a dictionary. +Calling SetSaveData with such a dictionary will restore the control to the +state it was in when it was saved. + +If the class, that is used as a view, has GetSaveData/SetSaveData implemented, +these will also be called to save/restore their state. Any object can be +returned by GetSaveData, as it is just another object in the dictionary. +""" + +#--------------------------------------------------------------------------- + +class TestWindow(wxStyledTextCtrl): + def __init__(self, parent): + wxStyledTextCtrl.__init__(self, parent, -1, style=wxNO_BORDER) + self.SetMarginWidth(1,0) + if wxPlatform == '__WXMSW__': + fSize = 10 + else: + fSize = 12 + self.StyleSetFont(wxSTC_STYLE_DEFAULT, + wxFont(fSize, wxMODERN, wxNORMAL, wxNORMAL)) + self.SetText(sampleText) + +class TestFrame(wxFrame): + def __init__(self, parent, log): + wxFrame.__init__(self, parent, -1, "Multi Sash Demo", + size=(640,480)) + self.multi = wxMultiSash(self,-1,pos = wxPoint(0,0), + size = (640,480)) + + # Use this method to set the default class that will be created when + # a new sash is created. The class's constructor needs 1 parameter + # which is the parent of the window + self.multi.SetDefaultChildClass(TestWindow) + + +#--------------------------------------------------------------------------- + + +def runTest(frame, nb, log): + multi = wxMultiSash(nb, -1, pos = (0,0), size = (640,480)) + + # Use this method to set the default class that will be created when + # a new sash is created. The class's constructor needs 1 parameter + # which is the parent of the window + multi.SetDefaultChildClass(TestWindow) + + return multi + +# win = TestPanel(nb, log) +# return win + +#---------------------------------------------------------------------- + + + +overview = """<html><body> +<h2><center>wxMultiSash</center></h2> + +wxMultiSash allows the user to split a window any number of times +either horizontally or vertically, and to close the split off windows +when desired. + +</body></html> +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxNotebook.py b/wxPython/demo/wxNotebook.py index 4af4007dcd..ced491b69d 100644 --- a/wxPython/demo/wxNotebook.py +++ b/wxPython/demo/wxNotebook.py @@ -5,6 +5,7 @@ import ColorPanel import GridSimple import wxListCtrl import wxScrolledWindow +import images import sys @@ -12,10 +13,14 @@ import sys class TestNB(wxNotebook): def __init__(self, parent, id, log): - wxNotebook.__init__(self, parent, id, style=wxNB_BOTTOM) + wxNotebook.__init__(self, parent, id, style= + #0 + wxNB_BOTTOM + #wxNB_LEFT + #wxNB_RIGHT + ) self.log = log - win = self.makeColorPanel(wxBLUE) self.AddPage(win, "Blue") st = wxStaticText(win.win, -1, @@ -26,6 +31,16 @@ class TestNB(wxNotebook): st.SetForegroundColour(wxWHITE) st.SetBackgroundColour(wxBLUE) + # Show how to put an image on one of the notebook tabs, + # first make the image list: + il = wxImageList(16, 16) + idx1 = il.Add(images.getSmilesBitmap()) + self.AssignImageList(il) + + # now put an image on the first tab we just created: + self.SetPageImage(0, idx1) + + win = self.makeColorPanel(wxRED) self.AddPage(win, "Red") @@ -94,28 +109,27 @@ def runTest(frame, nb, log): - - - - - - - - overview = """\ -This class represents a notebook control, which manages multiple windows with associated tabs. - -To use the class, create a wxNotebook object and call AddPage or InsertPage, passing a window to be used as the page. Do not explicitly delete the window for a page that is currently managed by wxNotebook. +<html><body> +<h2>wxNotebook</h2> +<p> +This class represents a notebook control, which manages multiple +windows with associated tabs. +<p> +To use the class, create a wxNotebook object and call AddPage or +InsertPage, passing a window to be used as the page. Do not explicitly +delete the window for a page that is currently managed by wxNotebook. """ -if __name__ == "__main__": - app = wxPySimpleApp() - frame = wxFrame(None, -1, "Test Notebook", size=(600, 400)) - win = TestNB(frame, -1, sys.stdout) - frame.Show(true) - app.MainLoop() + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + + diff --git a/wxPython/demo/wxOGL.py b/wxPython/demo/wxOGL.py index 0b2af68b53..17f0015899 100644 --- a/wxPython/demo/wxOGL.py +++ b/wxPython/demo/wxOGL.py @@ -43,6 +43,52 @@ class RoundedRectangleShape(wxRectangleShape): self.SetCornerRadius(-0.3) +#---------------------------------------------------------------------- + +class DividedShape(wxDividedShape): + def __init__(self, width, height, canvas): + wxDividedShape.__init__(self, width, height) + + region1 = wxShapeRegion() + region1.SetText('wxDividedShape') + region1.SetProportions(0.0, 0.2) + region1.SetFormatMode(FORMAT_CENTRE_HORIZ) + self.AddRegion(region1) + + region2 = wxShapeRegion() + region2.SetText('This is Region number two.') + region2.SetProportions(0.0, 0.3) + region2.SetFormatMode(FORMAT_CENTRE_HORIZ|FORMAT_CENTRE_VERT) + self.AddRegion(region2) + + region3 = wxShapeRegion() + region3.SetText('Region 3\nwith embedded\nline breaks') + region3.SetProportions(0.0, 0.5) + region3.SetFormatMode(FORMAT_NONE) + self.AddRegion(region3) + + self.SetRegionSizes() + self.ReformatRegions(canvas) + + + def ReformatRegions(self, canvas=None): + rnum = 0 + if canvas is None: + canvas = self.GetCanvas() + dc = wxClientDC(canvas) # used for measuring + for region in self.GetRegions(): + text = region.GetText() + self.FormatText(dc, text, rnum) + rnum += 1 + + + def OnSizingEndDragLeft(self, pt, x, y, keys, attch): + self.base_OnSizingEndDragLeft(pt, x, y, keys, attch) + self.SetRegionSizes() + self.ReformatRegions() + self.GetCanvas().Refresh() + + #---------------------------------------------------------------------- class MyEvtHandler(wxShapeEvtHandler): @@ -66,10 +112,10 @@ class MyEvtHandler(wxShapeEvtHandler): canvas.PrepareDC(dc) if shape.Selected(): - shape.Select(false, dc) + shape.Select(False, dc) canvas.Redraw(dc) else: - redraw = false + redraw = False shapeList = canvas.GetDiagram().GetShapeList() toUnselect = [] for s in shapeList: @@ -79,11 +125,11 @@ class MyEvtHandler(wxShapeEvtHandler): # shapes too!) and bad things will happen... toUnselect.append(s) - shape.Select(true, dc) + shape.Select(True, dc) if toUnselect: for s in toUnselect: - s.Select(false, dc) + s.Select(False, dc) canvas.Redraw(dc) self.UpdateStatusBar(shape) @@ -97,14 +143,14 @@ class MyEvtHandler(wxShapeEvtHandler): self.UpdateStatusBar(shape) - def OnSize(self, x, y): - self.base_OnSize(x, y) + def OnSizingEndDragLeft(self, pt, x, y, keys, attch): + self.base_OnSizingEndDragLeft(pt, x, y, keys, attch) self.UpdateStatusBar(self.GetShape()) -# def OnMovePost(self, dc, x, y, oldX, oldY, display): -# self.base_OnMovePost(dc, x, y, oldX, oldY, display) -# self.UpdateStatusBar(self.GetShape()) + def OnMovePost(self, dc, x, y, oldX, oldY, display): + self.base_OnMovePost(dc, x, y, oldX, oldY, display) + self.UpdateStatusBar(self.GetShape()) def OnRightClick(self, *dontcare): @@ -130,12 +176,14 @@ class TestWindow(wxShapeCanvas): self.shapes = [] self.save_gdi = [] - rRectBrush = wxBrush(wxNamedColour("MEDIUM TURQUOISE"), wxSOLID) + rRectBrush = wxBrush("MEDIUM TURQUOISE", wxSOLID) + dsBrush = wxBrush("WHEAT", wxSOLID) self.MyAddShape(wxCircleShape(80), 100, 100, wxPen(wxBLUE, 3), wxGREEN_BRUSH, "Circle") self.MyAddShape(wxRectangleShape(85, 50), 305, 60, wxBLACK_PEN, wxLIGHT_GREY_BRUSH, "Rectangle") + ds = self.MyAddShape(DividedShape(140, 150, self), 495, 145, wxBLACK_PEN, dsBrush, '') self.MyAddShape(DiamondShape(90, 90), 345, 235, wxPen(wxBLUE, 3, wxDOT), wxRED_BRUSH, "Polygon") - self.MyAddShape(RoundedRectangleShape(95,70), 140, 255, wxPen(wxRED, 1), rRectBrush, "Rounded Rect") + self.MyAddShape(RoundedRectangleShape(95,70), 140, 255, wxPen(wxRED, 2), rRectBrush, "Rounded Rect") bmp = images.getTest2Bitmap() mask = wxMaskColour(bmp, wxBLUE) @@ -161,16 +209,16 @@ class TestWindow(wxShapeCanvas): line.MakeLineControlPoints(2) fromShape.AddLine(line, toShape) self.diagram.AddShape(line) - line.Show(true) + line.Show(True) # for some reason, the shapes have to be moved for the line to show up... fromShape.Move(dc, fromShape.GetX(), fromShape.GetY()) - EVT_WINDOW_DESTROY(self, self.OnDestroy) + EVT_WINDOW_DESTROY(self, self.OnDestroy) def MyAddShape(self, shape, x, y, pen, brush, text): - shape.SetDraggable(true, true) + shape.SetDraggable(True, True) shape.SetCanvas(self) shape.SetX(x) shape.SetY(y) @@ -179,7 +227,7 @@ class TestWindow(wxShapeCanvas): if text: shape.AddText(text) #shape.SetShadowMode(SHADOW_RIGHT) self.diagram.AddShape(shape) - shape.Show(true) + shape.Show(True) evthandler = MyEvtHandler(self.log, self.frame) evthandler.SetShape(shape) @@ -187,7 +235,7 @@ class TestWindow(wxShapeCanvas): shape.SetEventHandler(evthandler) self.shapes.append(shape) - + return shape def OnDestroy(self, evt): @@ -236,3 +284,9 @@ manipulation of simple and complex graphic images on a canvas. """ + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxPopupControl.py b/wxPython/demo/wxPopupControl.py new file mode 100644 index 0000000000..b3b7ad2b7d --- /dev/null +++ b/wxPython/demo/wxPopupControl.py @@ -0,0 +1,94 @@ +from wxPython.wx import * +from wxPython.lib.popupctl import wxPopupControl +from wxPython.calendar import * + +class TestDateControl(wxPopupControl): + def __init__(self,*_args,**_kwargs): + apply(wxPopupControl.__init__,(self,) + _args,_kwargs) + + self.win = wxWindow(self,-1,pos = (0,0),style = 0) + self.cal = wxCalendarCtrl(self.win,-1,pos = (0,0)) + + bz = self.cal.GetBestSize() + self.win.SetSize(bz) + + # This method is needed to set the contents that will be displayed + # in the popup + self.SetPopupContent(self.win) + + # Event registration for date selection + EVT_CALENDAR_DAY(self.cal,self.cal.GetId(),self.OnCalSelected) + + # Method called when a day is selected in the calendar + def OnCalSelected(self,evt): + self.PopDown() + date = self.cal.GetDate() + + # Format the date that was selected for the text part of the control + self.SetValue('%02d/%02d/%04d' % (date.GetDay(), + date.GetMonth()+1, + date.GetYear())) + evt.Skip() + + # Method overridden from wxPopupControl + # This method is called just before the popup is displayed + # Use this method to format any controls in the popup + def FormatContent(self): + # I parse the value in the text part to resemble the correct date in + # the calendar control + txtValue = self.GetValue() + dmy = txtValue.split('/') + didSet = False + if len(dmy) == 3: + date = self.cal.GetDate() + d = int(dmy[0]) + m = int(dmy[1]) - 1 + y = int(dmy[2]) + if d > 0 and d < 31: + if m >= 0 and m < 12: + if y > 1000: + self.cal.SetDate(wxDateTimeFromDMY(d,m,y)) + didSet = True + if not didSet: + self.cal.SetDate(wxDateTime_Today()) + + +#--------------------------------------------------------------------------- + +class TestPanel(wxPanel): + def __init__(self, parent, log): + self.log = log + wxPanel.__init__(self, parent, -1) + date = TestDateControl(self, -1, pos = (30,30), size = (100,22)) + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb, log) + return win + +#---------------------------------------------------------------------- + + + +overview = """<html><body> +<h2><center>wxPopupControl</center></h2> + +wxPopupControl is a class that can display a value and has a button +that will popup another window similar to how a wxComboBox works. The +popup window can contain whatever is needed to edit the value. This +example uses a wxCalendarCtrl. + +<p>Currently a wxDialog is used for the popup. Eventually a +wxPopupWindow should be used... + +</body></html> +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxPopupWindow.py b/wxPython/demo/wxPopupWindow.py index 014e21c8a2..0ee3df748c 100644 --- a/wxPython/demo/wxPopupWindow.py +++ b/wxPython/demo/wxPopupWindow.py @@ -55,7 +55,7 @@ class TestPopup(wxPopupWindow): self.ReleaseMouse() def OnRightUp(self, evt): - self.Show(false) + self.Show(False) self.Destroy() @@ -80,7 +80,7 @@ class TestTransientPopup(wxPopupTransientWindow): def ProcessLeftDown(self, evt): self.log.write("ProcessLeftDown\n") - return false + return False def OnDismiss(self): self.log.write("OnDismiss\n") @@ -113,7 +113,7 @@ class TestPanel(wxPanel): sz = btn.GetSize() win.Position(pos, (0, sz.height)) - win.Show(true) + win.Show(True) def OnShowPopupTransient(self, evt): @@ -139,7 +139,7 @@ class TestPanel(wxPanel): sz = btn.GetSize() win.Position(pos, (0, sz.height)) - win.Show(true) + win.Show(True) class TestPopupWithListbox(wxPopupWindow): def __init__(self, parent, style, log): diff --git a/wxPython/demo/wxPrintDialog.py b/wxPython/demo/wxPrintDialog.py index 50da750bd2..183cbe801c 100644 --- a/wxPython/demo/wxPrintDialog.py +++ b/wxPython/demo/wxPrintDialog.py @@ -5,9 +5,9 @@ from wxPython.wx import * def runTest(frame, nb, log): data = wxPrintDialogData() - data.EnablePrintToFile(true) - data.EnablePageNumbers(true) - data.EnableSelection(true) + data.EnablePrintToFile(True) + data.EnablePageNumbers(True) + data.EnableSelection(True) dlg = wxPrintDialog(frame, data) if dlg.ShowModal() == wxID_OK: log.WriteText('\n') diff --git a/wxPython/demo/wxProcess.py b/wxPython/demo/wxProcess.py index c2ba5ba1ec..d8104e5e75 100644 --- a/wxPython/demo/wxProcess.py +++ b/wxPython/demo/wxProcess.py @@ -27,9 +27,9 @@ class TestPanel(wxPanel): self.inp = wxTextCtrl(self, -1, '', style=wxTE_PROCESS_ENTER) self.sndBtn = wxButton(self, -1, 'Send') self.termBtn = wxButton(self, -1, 'Close Stream') - self.inp.Enable(false) - self.sndBtn.Enable(false) - self.termBtn.Enable(false) + self.inp.Enable(False) + self.sndBtn.Enable(False) + self.termBtn.Enable(False) # Hook up the events EVT_BUTTON(self, self.exBtn.GetId(), self.OnExecuteBtn) @@ -55,7 +55,7 @@ class TestPanel(wxPanel): sizer.Add(box2, 0, wxEXPAND|wxALL, 10) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) def __del__(self): @@ -70,14 +70,14 @@ class TestPanel(wxPanel): self.process = wxProcess(self) self.process.Redirect(); - pid = wxExecute(cmd, false, self.process) + pid = wxExecute(cmd, wxEXEC_ASYNC, self.process) self.log.write('OnExecuteBtn: "%s" pid: %s\n' % (cmd, pid)) - self.inp.Enable(true) - self.sndBtn.Enable(true) - self.termBtn.Enable(true) - self.cmd.Enable(false) - self.exBtn.Enable(false) + self.inp.Enable(True) + self.sndBtn.Enable(True) + self.termBtn.Enable(True) + self.cmd.Enable(False) + self.exBtn.Enable(False) self.inp.SetFocus() @@ -99,11 +99,7 @@ class TestPanel(wxPanel): if self.process is not None: stream = self.process.GetInputStream() - # Yes, this is weird. For this particular stream, EOF - # simply means that there is no data available to be read, - # not truly the end of file. Also, read() just reads all - # the currently available data, not until the real EOF... - if not stream.eof(): + if stream.CanRead(): text = stream.read() self.out.AppendText(text) @@ -113,17 +109,17 @@ class TestPanel(wxPanel): (evt.GetPid(), evt.GetExitCode())) stream = self.process.GetInputStream() - if not stream.eof(): + if stream.CanRead(): text = stream.read() self.out.AppendText(text) self.process.Destroy() self.process = None - self.inp.Enable(false) - self.sndBtn.Enable(false) - self.termBtn.Enable(false) - self.cmd.Enable(true) - self.exBtn.Enable(true) + self.inp.Enable(False) + self.sndBtn.Enable(False) + self.termBtn.Enable(False) + self.cmd.Enable(True) + self.exBtn.Enable(True) #---------------------------------------------------------------------- diff --git a/wxPython/demo/wxProgressDialog.py b/wxPython/demo/wxProgressDialog.py index 7e097c0150..09f6c08b56 100644 --- a/wxPython/demo/wxProgressDialog.py +++ b/wxPython/demo/wxProgressDialog.py @@ -11,7 +11,7 @@ def runTest(frame, nb, log): frame, wxPD_CAN_ABORT | wxPD_APP_MODAL) - keepGoing = true + keepGoing = True count = 0 while keepGoing and count < max: count = count + 1 diff --git a/wxPython/demo/wxPyColourChooser.py b/wxPython/demo/wxPyColourChooser.py new file mode 100644 index 0000000000..c213042aa3 --- /dev/null +++ b/wxPython/demo/wxPyColourChooser.py @@ -0,0 +1,58 @@ +from wxPython.wx import * +from wxPython.lib.colourchooser import wxPyColourChooser + +#--------------------------------------------------------------- + +class TestColourChooser(wxPanel): + def __init__(self, parent, log): + wxPanel.__init__(self, parent, -1) + self.log = log + + chooser = wxPyColourChooser(self, -1) + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(chooser, 0, wxALL, 25) + + self.SetAutoLayout(True) + self.SetSizer(sizer) + +#--------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestColourChooser(nb, log) + return win + +#--------------------------------------------------------------- + +overview = """ +The wxPyColourChooser component creates a colour chooser window +that is similar to the Microsoft Windows colour chooser dialog. +This dialog component is drawn in a panel, and thus can be +embedded inside any widget (although it cannot be resized). +This colour chooser may also be substituted for the colour +chooser on any platform that might have an ugly one :) + +How to use it +------------------------------ + +The demo (demo/wxPyColourChooser.py code shows how to display +a colour chooser and retrieve its options. + +Contact and Author Info +------------------------------ + +wxPyColourChooser was written and is maintained by: + + Michael Gilfix <mgilfix@eecs.tufts.edu> + +You can find the latest wxPyColourChooser code at +http://www.sourceforge.net/wxcolourchooser. If you have +any suggestions or want to submit a patch, please send +it my way at: mgilfix@eecs.tufts.edu +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) diff --git a/wxPython/demo/wxRadioBox.py b/wxPython/demo/wxRadioBox.py index 78921edaa9..9a31860855 100644 --- a/wxPython/demo/wxRadioBox.py +++ b/wxPython/demo/wxRadioBox.py @@ -3,10 +3,13 @@ from wxPython.wx import * #--------------------------------------------------------------------------- -RBOX1 = wxNewId() -RBOX2 = wxNewId() RBUT1 = wxNewId() RBUT2 = wxNewId() +RBUT3 = wxNewId() +RBUT4 = wxNewId() + +RBOX1 = wxNewId() +RBOX2 = wxNewId() class TestRadioButtons(wxPanel): def __init__(self, parent, log): @@ -33,15 +36,6 @@ class TestRadioButtons(wxPanel): rb.SetToolTip(wxToolTip("This box has no label")) sizer.Add(rb, 0, wxLEFT|wxRIGHT|wxBOTTOM, 20) - sizer.Add(wxStaticText(self, -1, "These are plain wxRadioButtons"), - 0, wxLEFT|wxRIGHT, 20) - sizer.Add(wxRadioButton(self, RBUT1, "wxRadioButton 1"), - 0, wxLEFT|wxRIGHT, 20) - sizer.Add(wxRadioButton(self, RBUT2, "wxRadioButton 2"), - 0, wxLEFT|wxRIGHT, 20) - EVT_RADIOBUTTON(self, RBUT1, self.EvtRadioButton) - EVT_RADIOBUTTON(self, RBUT2, self.EvtRadioButton) - self.SetSizer(sizer) @@ -49,7 +43,7 @@ class TestRadioButtons(wxPanel): self.log.WriteText('EvtRadioBox: %d\n' % event.GetInt()) def EvtRadioButton(self, event): - self.log.write('EvtRadioButton:%d\n' % event.GetInt()) + self.log.write('EvtRadioButton:%d\n' % event.GetId()) #--------------------------------------------------------------------------- @@ -57,21 +51,19 @@ def runTest(frame, nb, log): win = TestRadioButtons(nb, log) return win -#--------------------------------------------------------------------------- - - - - - - - - - overview = """\ -A radio box item is used to select one of number of mutually exclusive choices. It is displayed as a vertical column or horizontal row of labelled buttons. +A radio box item is used to select one of number of mutually exclusive +choices. It is displayed as a vertical column or horizontal row of +labelled buttons. """ + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxRadioButton.py b/wxPython/demo/wxRadioButton.py new file mode 100644 index 0000000000..2993cec800 --- /dev/null +++ b/wxPython/demo/wxRadioButton.py @@ -0,0 +1,119 @@ +from wxPython.wx import * +#---------------------------------------------------------------------- + +class TestPanel( wxPanel ): + def __init__( self, parent, log ): + + wxPanel.__init__( self, parent, -1 ) + self.log = log + panel = wxPanel( self, -1 ) + + # 1st group of controls: + self.group1_ctrls = [] + radio1 = wxRadioButton( panel, -1, " Radio1 ", style = wxRB_GROUP ) + text1 = wxTextCtrl( panel, -1, "" ) + radio2 = wxRadioButton( panel, -1, " Radio2 " ) + text2 = wxTextCtrl( panel, -1, "" ) + radio3 = wxRadioButton( panel, -1, " Radio3 " ) + text3 = wxTextCtrl( panel, -1, "" ) + self.group1_ctrls.append((radio1, text1)) + self.group1_ctrls.append((radio2, text2)) + self.group1_ctrls.append((radio3, text3)) + + # 2nd group of controls: + self.group2_ctrls = [] + radio4 = wxRadioButton( panel, -1, " Radio1 ", style = wxRB_GROUP ) + text4 = wxTextCtrl( panel, -1, "" ) + radio5 = wxRadioButton( panel, -1, " Radio2 " ) + text5 = wxTextCtrl( panel, -1, "" ) + radio6 = wxRadioButton( panel, -1, " Radio3 " ) + text6 = wxTextCtrl( panel, -1, "" ) + self.group2_ctrls.append((radio4, text4)) + self.group2_ctrls.append((radio5, text5)) + self.group2_ctrls.append((radio6, text6)) + + # Layout controls on panel: + vs = wxBoxSizer( wxVERTICAL ) + + box1_title = wxStaticBox( panel, -1, "Group 1" ) + box1 = wxStaticBoxSizer( box1_title, wxVERTICAL ) + grid1 = wxFlexGridSizer( 0, 2, 0, 0 ) + for radio, text in self.group1_ctrls: + grid1.AddWindow( radio, 0, wxALIGN_CENTRE|wxLEFT|wxRIGHT|wxTOP, 5 ) + grid1.AddWindow( text, 0, wxALIGN_CENTRE|wxLEFT|wxRIGHT|wxTOP, 5 ) + box1.AddSizer( grid1, 0, wxALIGN_CENTRE|wxALL, 5 ) + vs.AddSizer( box1, 0, wxALIGN_CENTRE|wxALL, 5 ) + + box2_title = wxStaticBox( panel, -1, "Group 2" ) + box2 = wxStaticBoxSizer( box2_title, wxVERTICAL ) + grid2 = wxFlexGridSizer( 0, 2, 0, 0 ) + for radio, text in self.group2_ctrls: + grid2.AddWindow( radio, 0, wxALIGN_CENTRE|wxLEFT|wxRIGHT|wxTOP, 5 ) + grid2.AddWindow( text, 0, wxALIGN_CENTRE|wxLEFT|wxRIGHT|wxTOP, 5 ) + box2.AddSizer( grid2, 0, wxALIGN_CENTRE|wxALL, 5 ) + vs.AddSizer( box2, 0, wxALIGN_CENTRE|wxALL, 5 ) + + panel.SetSizer( vs ) + vs.Fit( panel ) + panel.Move( (50,50) ) + self.panel = panel + + # Setup event handling and initial state for controls: + for radio, text in self.group1_ctrls: + EVT_RADIOBUTTON( self, radio.GetId(), self.OnGroup1Select ) + + for radio, text in self.group2_ctrls: + EVT_RADIOBUTTON( self, radio.GetId(), self.OnGroup2Select ) + + for radio, text in self.group1_ctrls + self.group2_ctrls: + radio.SetValue(0) + text.Enable(False) + + + def OnGroup1Select( self, event ): + radio_selected = event.GetEventObject() + self.log.write('Group1 %s selected\n' % radio_selected.GetLabel() ) + for radio, text in self.group1_ctrls: + if radio is radio_selected: + text.Enable(True) + else: + text.Enable(False) + + def OnGroup2Select( self, event ): + radio_selected = event.GetEventObject() + self.log.write('Group2 %s selected\n' % radio_selected.GetLabel() ) + for radio, text in self.group2_ctrls: + if radio is radio_selected: + text.Enable(True) + else: + text.Enable(False) + +#---------------------------------------------------------------------- + +def runTest( frame, nb, log ): + win = TestPanel( nb, log ) + return win + +#---------------------------------------------------------------------- + + +overview = """\ +<html><body> +<P> +This demo shows how individual radio buttons can be used to build +more complicated selection mechanisms... +<P> +It uses 2 groups of wxRadioButtons, where the groups are defined by +instantiation. When a wxRadioButton is created with the <I>wxRB_GROUP</I> +style, all subsequent wxRadioButtons created without it are implicitly +added to that group by the framework. +</body></html> +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxRightTextCtrl.py b/wxPython/demo/wxRightTextCtrl.py index c6ef3b9d2f..7fe10cef6f 100644 --- a/wxPython/demo/wxRightTextCtrl.py +++ b/wxPython/demo/wxRightTextCtrl.py @@ -33,7 +33,7 @@ class TestPanel(wxPanel): sizer.Add(fgs, 0, wxALL, 25) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) diff --git a/wxPython/demo/wxSashWindow.py b/wxPython/demo/wxSashWindow.py index be6a46d7c5..a8b472c2c1 100644 --- a/wxPython/demo/wxSashWindow.py +++ b/wxPython/demo/wxSashWindow.py @@ -31,7 +31,7 @@ class TestSashWindow(wxPanel): win.SetOrientation(wxLAYOUT_HORIZONTAL) win.SetAlignment(wxLAYOUT_TOP) win.SetBackgroundColour(wxColour(255, 0, 0)) - win.SetSashVisible(wxSASH_BOTTOM, true) + win.SetSashVisible(wxSASH_BOTTOM, True) self.topWindow = win @@ -44,7 +44,7 @@ class TestSashWindow(wxPanel): win.SetOrientation(wxLAYOUT_HORIZONTAL) win.SetAlignment(wxLAYOUT_BOTTOM) win.SetBackgroundColour(wxColour(0, 0, 255)) - win.SetSashVisible(wxSASH_TOP, true) + win.SetSashVisible(wxSASH_TOP, True) self.bottomWindow = win @@ -57,7 +57,7 @@ class TestSashWindow(wxPanel): win.SetOrientation(wxLAYOUT_VERTICAL) win.SetAlignment(wxLAYOUT_LEFT) win.SetBackgroundColour(wxColour(0, 255, 0)) - win.SetSashVisible(wxSASH_RIGHT, TRUE) + win.SetSashVisible(wxSASH_RIGHT, True) win.SetExtraBorderSize(10) textWindow = wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxSUNKEN_BORDER) @@ -74,7 +74,7 @@ class TestSashWindow(wxPanel): win.SetOrientation(wxLAYOUT_VERTICAL) win.SetAlignment(wxLAYOUT_LEFT) win.SetBackgroundColour(wxColour(0, 255, 255)) - win.SetSashVisible(wxSASH_RIGHT, TRUE) + win.SetSashVisible(wxSASH_RIGHT, True) self.leftWindow2 = win diff --git a/wxPython/demo/wxScrolledWindow.py b/wxPython/demo/wxScrolledWindow.py index e0ad207b73..53d8b4a130 100644 --- a/wxPython/demo/wxScrolledWindow.py +++ b/wxPython/demo/wxScrolledWindow.py @@ -16,7 +16,7 @@ class MyCanvas(wxScrolledWindow): self.maxHeight = 1000 self.x = self.y = 0 self.curLine = [] - self.drawing = false + self.drawing = False self.SetBackgroundColour("WHITE") self.SetCursor(wxStockCursor(wxCURSOR_PENCIL)) @@ -88,7 +88,7 @@ class MyCanvas(wxScrolledWindow): dc.SetPen(wxGREEN_PEN) dc.DrawSpline(lst+[(100,100)]) - dc.DrawBitmap(self.bmp, 200, 20, true) + dc.DrawBitmap(self.bmp, 200, 20, True) dc.SetTextForeground(wxColour(0, 0xFF, 0x80)) dc.DrawText("a bitmap", 200, 85) @@ -149,10 +149,11 @@ class MyCanvas(wxScrolledWindow): def OnLeftButtonEvent(self, event): if event.LeftDown(): + self.SetFocus() self.SetXY(event) self.curLine = [] self.CaptureMouse() - self.drawing = true + self.drawing = True elif event.Dragging() and self.drawing: if BUFFERED: @@ -178,7 +179,7 @@ class MyCanvas(wxScrolledWindow): self.lines.append(self.curLine) self.curLine = [] self.ReleaseMouse() - self.drawing = false + self.drawing = False ## This is an example of what to do for the EVT_MOUSEWHEEL event, diff --git a/wxPython/demo/wxSlider.py b/wxPython/demo/wxSlider.py index 731486ee2b..8cce5b131e 100644 --- a/wxPython/demo/wxSlider.py +++ b/wxPython/demo/wxSlider.py @@ -1,8 +1,6 @@ from wxPython.wx import * -import string - #---------------------------------------------------------------------- class TestPanel(wxPanel): @@ -31,11 +29,13 @@ def runTest(frame, nb, log): - - - - - - overview = """\ """ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxSpinButton.py b/wxPython/demo/wxSpinButton.py index 67308b41d0..0095fbad77 100644 --- a/wxPython/demo/wxSpinButton.py +++ b/wxPython/demo/wxSpinButton.py @@ -1,8 +1,6 @@ from wxPython.wx import * -import string - #---------------------------------------------------------------------- class TestPanel(wxPanel): diff --git a/wxPython/demo/wxSpinCtrl.py b/wxPython/demo/wxSpinCtrl.py index f373c82aa0..164397d1a0 100644 --- a/wxPython/demo/wxSpinCtrl.py +++ b/wxPython/demo/wxSpinCtrl.py @@ -1,8 +1,6 @@ from wxPython.wx import * -import string - #---------------------------------------------------------------------- class TestPanel(wxPanel): @@ -17,7 +15,7 @@ class TestPanel(wxPanel): sc = wxSpinCtrl(self, -1, "", wxPoint(30, 50), wxSize(80, -1)) sc.SetRange(1,100) sc.SetValue(5) - #sc.Enable(false) + #sc.Enable(False) #---------------------------------------------------------------------- diff --git a/wxPython/demo/wxSplitterWindow.py b/wxPython/demo/wxSplitterWindow.py index fac9cbee57..206244f6c0 100644 --- a/wxPython/demo/wxSplitterWindow.py +++ b/wxPython/demo/wxSplitterWindow.py @@ -35,8 +35,12 @@ def runTest(frame, nb, log): wxStaticText(p2, -1, "Panel Two", wxPoint(5,5)).SetBackgroundColour(wxBLUE) splitter.SetMinimumPaneSize(20) - splitter.SplitVertically(p1, p2) - splitter.SetSashPosition(100) + splitter.SplitVertically(p1, p2, 100) + +## splitter.SetSize((300,300)) +## print splitter.GetSashPosition() +## splitter.SetSashPosition(100) +## print splitter.GetSashPosition() return splitter diff --git a/wxPython/demo/wxStaticBitmap.py b/wxPython/demo/wxStaticBitmap.py index 1b057913ef..d281d60237 100644 --- a/wxPython/demo/wxStaticBitmap.py +++ b/wxPython/demo/wxStaticBitmap.py @@ -1,8 +1,6 @@ from wxPython.wx import * -from Main import opj -import string import images #---------------------------------------------------------------------- diff --git a/wxPython/demo/wxStaticText.py b/wxPython/demo/wxStaticText.py index dc558eed08..f143ddb5cb 100644 --- a/wxPython/demo/wxStaticText.py +++ b/wxPython/demo/wxStaticText.py @@ -1,7 +1,7 @@ from wxPython.wx import * -USE_GENERIC = 1 +USE_GENERIC = 0 if USE_GENERIC: from wxPython.lib.stattext import wxGenStaticText as wxStaticText @@ -24,7 +24,7 @@ class TestPanel(wxPanel): str = "This is a different font." text = wxStaticText(self, -1, str, (20, 100)) - font = wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, false, "Arial") + font = wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, False, "Arial") w, h, d, e = self.GetFullTextExtent(str, font) text.SetFont(font) text.SetSize(wxSize(w, h)) diff --git a/wxPython/demo/wxStatusBar.py b/wxPython/demo/wxStatusBar.py index 1c9b45655f..d7241a1b5b 100644 --- a/wxPython/demo/wxStatusBar.py +++ b/wxPython/demo/wxStatusBar.py @@ -10,7 +10,7 @@ class CustomStatusBar(wxStatusBar): wxStatusBar.__init__(self, parent, -1) self.SetFieldsCount(3) self.log = log - self.sizeChanged = false + self.sizeChanged = False EVT_SIZE(self, self.OnSize) EVT_IDLE(self, self.OnIdle) @@ -18,7 +18,7 @@ class CustomStatusBar(wxStatusBar): self.cb = wxCheckBox(self, 1001, "toggle clock") EVT_CHECKBOX(self, 1001, self.OnToggleClock) - self.cb.SetValue(true) + self.cb.SetValue(True) # set the initial position of the checkbox self.Reposition() @@ -52,7 +52,7 @@ class CustomStatusBar(wxStatusBar): # Set a flag so the idle time handler will also do the repositioning. # It is done this way to get around a buglet where GetFieldRect is not # accurate during the EVT_SIZE resulting from a frame maximize. - self.sizeChanged = true + self.sizeChanged = True def OnIdle(self, evt): @@ -65,7 +65,7 @@ class CustomStatusBar(wxStatusBar): rect = self.GetFieldRect(1) self.cb.SetPosition(wxPoint(rect.x+2, rect.y+2)) self.cb.SetSize(wxSize(rect.width-4, rect.height-4)) - self.sizeChanged = false + self.sizeChanged = False @@ -91,7 +91,7 @@ class TestCustomStatusBar(wxFrame): def runTest(frame, nb, log): win = TestCustomStatusBar(frame, log) frame.otherWin = win - win.Show(true) + win.Show(True) #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxStyledTextCtrl_1.py b/wxPython/demo/wxStyledTextCtrl_1.py index 83530d2ece..d23c1a6636 100644 --- a/wxPython/demo/wxStyledTextCtrl_1.py +++ b/wxPython/demo/wxStyledTextCtrl_1.py @@ -74,7 +74,7 @@ class MySTC(wxStyledTextCtrl): % (evt.GetDragAllowMove(), evt.GetDragText())) if debug and evt.GetPosition() < 250: - evt.SetDragAllowMove(false) # you can prevent moving of text (only copy) + evt.SetDragAllowMove(False) # you can prevent moving of text (only copy) evt.SetDragText("DRAGGED TEXT") # you can change what is dragged #evt.SetDragText("") # or prevent the drag with empty text @@ -159,13 +159,13 @@ def runTest(frame, nb, log): s = wxBoxSizer(wxHORIZONTAL) s.Add(ed, 1, wxEXPAND) p.SetSizer(s) - p.SetAutoLayout(true) + p.SetAutoLayout(True) - #ed.SetBufferedDraw(false) + #ed.SetBufferedDraw(False) #ed.StyleClearAll() #ed.SetScrollWidth(800) - #ed.SetWrapMode(true) + #ed.SetWrapMode(True) ed.SetText(demoText) if wxUSE_UNICODE: diff --git a/wxPython/demo/wxStyledTextCtrl_2.py b/wxPython/demo/wxStyledTextCtrl_2.py index 325c4ea6ae..516383f50f 100644 --- a/wxPython/demo/wxStyledTextCtrl_2.py +++ b/wxPython/demo/wxStyledTextCtrl_2.py @@ -45,14 +45,14 @@ class PythonSTC(wxStyledTextCtrl): self.CmdKeyAssign(ord('N'), wxSTC_SCMOD_CTRL, wxSTC_CMD_ZOOMOUT) self.SetLexer(wxSTC_LEX_PYTHON) - self.SetKeyWords(0, string.join(keyword.kwlist)) + self.SetKeyWords(0, " ".join(keyword.kwlist)) self.SetProperty("fold", "1") self.SetProperty("tab.timmy.whinge.level", "1") self.SetMargins(0,0) - self.SetViewWhiteSpace(false) - #self.SetBufferedDraw(false) + self.SetViewWhiteSpace(False) + #self.SetBufferedDraw(False) self.SetEdgeMode(wxSTC_EDGE_BACKGROUND) self.SetEdgeColumn(78) @@ -61,7 +61,7 @@ class PythonSTC(wxStyledTextCtrl): #self.SetFoldFlags(16) ### WHAT IS THIS VALUE? WHAT ARE THE OTHER FLAGS? DOES IT MATTER? self.SetMarginType(2, wxSTC_MARGIN_SYMBOL) self.SetMarginMask(2, wxSTC_MASK_FOLDERS) - self.SetMarginSensitive(2, true) + self.SetMarginSensitive(2, True) self.SetMarginWidth(2, 12) if 0: # simple folder marks, like the old version @@ -151,7 +151,7 @@ class PythonSTC(wxStyledTextCtrl): #lst = [] #for x in range(50000): # lst.append('%05d' % x) - #st = string.join(lst) + #st = " ".join(lst) #print len(st) #self.AutoCompShow(0, st) @@ -165,9 +165,9 @@ class PythonSTC(wxStyledTextCtrl): kw.append("this_is_a_much_much_much_much_much_much_much_longer_value") kw.sort() # Python sorts are case sensitive - self.AutoCompSetIgnoreCase(false) # so this needs to match + self.AutoCompSetIgnoreCase(False) # so this needs to match - self.AutoCompShow(0, string.join(kw)) + self.AutoCompShow(0, " ".join(kw)) else: event.Skip() @@ -175,7 +175,7 @@ class PythonSTC(wxStyledTextCtrl): def OnUpdateUI(self, evt): # check for matching braces braceAtCaret = -1 - braceOpposite = -1 + braceOpposite = -1 charBefore = None caretPos = self.GetCurrentPos() if caretPos > 0: @@ -201,9 +201,9 @@ class PythonSTC(wxStyledTextCtrl): else: self.BraceHighlight(braceAtCaret, braceOpposite) #pt = self.PointFromPosition(braceOpposite) - #self.Refresh(true, wxRect(pt.x, pt.y, 5,5)) + #self.Refresh(True, wxRect(pt.x, pt.y, 5,5)) #print pt - #self.Refresh(false) + #self.Refresh(False) def OnMarginClick(self, evt): @@ -215,22 +215,22 @@ class PythonSTC(wxStyledTextCtrl): lineClicked = self.LineFromPosition(evt.GetPosition()) if self.GetFoldLevel(lineClicked) & wxSTC_FOLDLEVELHEADERFLAG: if evt.GetShift(): - self.SetFoldExpanded(lineClicked, true) - self.Expand(lineClicked, true, true, 1) + self.SetFoldExpanded(lineClicked, True) + self.Expand(lineClicked, True, True, 1) elif evt.GetControl(): if self.GetFoldExpanded(lineClicked): - self.SetFoldExpanded(lineClicked, false) - self.Expand(lineClicked, false, true, 0) + self.SetFoldExpanded(lineClicked, False) + self.Expand(lineClicked, False, True, 0) else: - self.SetFoldExpanded(lineClicked, true) - self.Expand(lineClicked, true, true, 100) + self.SetFoldExpanded(lineClicked, True) + self.Expand(lineClicked, True, True, 100) else: self.ToggleFold(lineClicked) def FoldAll(self): lineCount = self.GetLineCount() - expanding = true + expanding = True # find out if we are folding or unfolding for lineNum in range(lineCount): @@ -245,12 +245,12 @@ class PythonSTC(wxStyledTextCtrl): (level & wxSTC_FOLDLEVELNUMBERMASK) == wxSTC_FOLDLEVELBASE: if expanding: - self.SetFoldExpanded(lineNum, true) - lineNum = self.Expand(lineNum, true) + self.SetFoldExpanded(lineNum, True) + lineNum = self.Expand(lineNum, True) lineNum = lineNum - 1 else: lastChild = self.GetLastChild(lineNum, -1) - self.SetFoldExpanded(lineNum, false) + self.SetFoldExpanded(lineNum, False) if lastChild > lineNum: self.HideLines(lineNum+1, lastChild) @@ -258,9 +258,9 @@ class PythonSTC(wxStyledTextCtrl): - def Expand(self, line, doExpand, force=false, visLevels=0, level=-1): + def Expand(self, line, doExpand, force=False, visLevels=0, level=-1): lastChild = self.GetLastChild(line, level) - line = line + 1 + line = line + 1 while line <= lastChild: if force: if visLevels > 0: @@ -277,16 +277,16 @@ class PythonSTC(wxStyledTextCtrl): if level & wxSTC_FOLDLEVELHEADERFLAG: if force: if visLevels > 1: - self.SetFoldExpanded(line, true) + self.SetFoldExpanded(line, True) else: - self.SetFoldExpanded(line, false) + self.SetFoldExpanded(line, False) line = self.Expand(line, doExpand, force, visLevels-1) else: if doExpand and self.GetFoldExpanded(line): - line = self.Expand(line, true, force, visLevels-1) + line = self.Expand(line, True, force, visLevels-1) else: - line = self.Expand(line, false, force, visLevels-1) + line = self.Expand(line, False, force, visLevels-1) else: line = line + 1; @@ -306,7 +306,7 @@ def runTest(frame, nb, log): s = wxBoxSizer(wxHORIZONTAL) s.Add(ed, 1, wxEXPAND) p.SetSizer(s) - p.SetAutoLayout(true) + p.SetAutoLayout(True) ed.SetText(demoText + open('Main.py').read()) diff --git a/wxPython/demo/wxTextCtrl.py b/wxPython/demo/wxTextCtrl.py index 7b55456399..1045efe3d0 100644 --- a/wxPython/demo/wxTextCtrl.py +++ b/wxPython/demo/wxTextCtrl.py @@ -20,55 +20,73 @@ class TestPanel(wxPanel): self.log = log l1 = wxStaticText(self, -1, "wxTextCtrl") - t1 = wxTextCtrl(self, 10, "Test it out and see", size=(125, -1)) + t1 = wxTextCtrl(self, -1, "Test it out and see", size=(125, -1)) t1.SetInsertionPoint(0) - EVT_TEXT(self, 10, self.EvtText) + self.tc1 = t1 + EVT_TEXT(self, t1.GetId(), self.EvtText) EVT_CHAR(t1, self.EvtChar) EVT_SET_FOCUS(t1, self.OnSetFocus) EVT_KILL_FOCUS(t1, self.OnKillFocus) EVT_WINDOW_DESTROY(t1, self.OnWindowDestroy) l2 = wxStaticText(self, -1, "Passsword") - t2 = wxTextCtrl(self, 20, "", size=(125, -1), style=wxTE_PASSWORD) - EVT_TEXT(self, 20, self.EvtText) + t2 = wxTextCtrl(self, -1, "", size=(125, -1), style=wxTE_PASSWORD) + EVT_TEXT(self, t2.GetId(), self.EvtText) l3 = wxStaticText(self, -1, "Multi-line") - t3 = wxTextCtrl(self, 30, + t3 = wxTextCtrl(self, -1, "Here is a looooooooooooooong line of text set in the control.\n\n" "The quick brown fox jumped over the lazy dog...", size=(200, 100), style=wxTE_MULTILINE) t3.SetInsertionPoint(0) - EVT_TEXT(self, 30, self.EvtText) + EVT_TEXT(self, t3.GetId(), self.EvtText) b = wxButton(self, -1, "Test Replace") EVT_BUTTON(self, b.GetId(), self.OnTestReplace) b2 = wxButton(self, -1, "Test GetSelection") EVT_BUTTON(self, b2.GetId(), self.OnTestGetSelection) + b3 = wxButton(self, -1, "Test WriteText") + EVT_BUTTON(self, b3.GetId(), self.OnTestWriteText) self.tc = t3 + b4 = wxButton(self, -1, "Test Simulated Event") + EVT_BUTTON(self, b4.GetId(), self.OnTestEvent) + l4 = wxStaticText(self, -1, "Rich Text") - t4 = wxTextCtrl(self, 40, "If supported by the native control, this is red, and this is a different font.", + t4 = wxTextCtrl(self, -1, "If supported by the native control, this is red, and this is a different font.", size=(200, 100), style=wxTE_MULTILINE|wxTE_RICH2) t4.SetInsertionPoint(0) t4.SetStyle(44, 47, wxTextAttr("RED", "YELLOW")) - points = t4.GetFont().GetPointSize() # get the current size - f = wxFont(points+3, wxROMAN, wxITALIC, wxBOLD, true) + f = wxFont(points+3, wxROMAN, wxITALIC, wxBOLD, True) t4.SetStyle(63, 77, wxTextAttr("BLUE", wxNullColour, f)) + l5 = wxStaticText(self, -1, "Test Positions") + t5 = wxTextCtrl(self, -1, "0123456789\n" * 5, size=(200, 100), + style = wxTE_MULTILINE + #| wxTE_RICH + | wxTE_RICH2 + ) + EVT_LEFT_DOWN(t5, self.OnT5LeftDown) + self.t5 = t5 + + bsizer = wxBoxSizer(wxVERTICAL) - bsizer.Add(b, 0, wxGROW) - bsizer.Add(b2, 0, wxGROW) + bsizer.Add(b, 0, wxGROW|wxALL, 4) + bsizer.Add(b2, 0, wxGROW|wxALL, 4) + bsizer.Add(b3, 0, wxGROW|wxALL, 4) + bsizer.Add(b4, 0, wxGROW|wxALL, 4) sizer = wxFlexGridSizer(cols=3, hgap=6, vgap=6) sizer.AddMany([ l1, t1, (0,0), l2, t2, (0,0), l3, t3, bsizer, l4, t4, (0,0), + l5, t5, (0,0), ]) border = wxBoxSizer(wxVERTICAL) border.Add(sizer, 0, wxALL, 25) self.SetSizer(border) - self.SetAutoLayout(true) + self.SetAutoLayout(True) def EvtText(self, event): @@ -84,11 +102,14 @@ class TestPanel(wxPanel): self.tc.Replace(5, 9, "IS A") #self.tc.Remove(5, 9) + def OnTestWriteText(self, evt): + self.tc.WriteText("TEXT") + def OnTestGetSelection(self, evt): start, end = self.tc.GetSelection() text = self.tc.GetValue() if wxPlatform == "__WXMSW__": # This is why GetStringSelection was added - text = string.replace(text, '\n', '\r\n') + text = text.replace('\n', '\r\n') self.log.write("GetSelection(): (%d, %d)\n" "\tGetStringSelection(): %s\n" "\tSelectedText: %s\n" % @@ -96,6 +117,29 @@ class TestPanel(wxPanel): self.tc.GetStringSelection(), repr(text[start:end]))) + def OnT5LeftDown(self, evt): + evt.Skip() + wxCallAfter(self.LogT5Position, evt) + + def LogT5Position(self, evt): + text = self.t5.GetValue() + ip = self.t5.GetInsertionPoint() + lp = self.t5.GetLastPosition() + self.log.write("LogT5Position:\n" + "\tGetInsertionPoint:\t%d\n" + "\ttext[insertionpoint]:\t%s\n" + "\tGetLastPosition:\t%d\n" + "\tlen(text):\t\t%d\n" + % (ip, text[ip], lp, len(text))) + + + def OnTestEvent(self, evt): + ke = wxKeyEvent(wxEVT_CHAR) + ke.SetEventObject(self.tc1) + ke.SetId(self.tc1.GetId()) + ke.m_keyCode = ord('A') + self.tc1.GetEventHandler().ProcessEvent(ke) + #--------------------------------------------------------------------------- diff --git a/wxPython/demo/wxTimeCtrl.py b/wxPython/demo/wxTimeCtrl.py new file mode 100644 index 0000000000..09465642dd --- /dev/null +++ b/wxPython/demo/wxTimeCtrl.py @@ -0,0 +1,213 @@ +from wxPython.wx import * +from wxPython.lib.timectrl import * + +#---------------------------------------------------------------------- + +class TestPanel( wxPanel ): + def __init__( self, parent, log ): + + wxPanel.__init__( self, parent, -1 ) + self.log = log + panel = wxPanel( self, -1 ) + + grid = wxFlexGridSizer( 0, 2, 20, 0 ) + + text1 = wxStaticText( panel, 10, "A 12-hour format wxTimeCtrl:") + self.time12 = wxTimeCtrl( panel, 20, name="12 hour control" ) + spin1 = wxSpinButton( panel, 30, wxDefaultPosition, wxSize(-1,20), 0 ) + self.time12.BindSpinButton( spin1 ) + + grid.AddWindow( text1, 0, wxALIGN_RIGHT, 5 ) + hbox1 = wxBoxSizer( wxHORIZONTAL ) + hbox1.AddWindow( self.time12, 0, wxALIGN_CENTRE, 5 ) + hbox1.AddWindow( spin1, 0, wxALIGN_CENTRE, 5 ) + grid.AddSizer( hbox1, 0, wxLEFT, 5 ) + + + text2 = wxStaticText( panel, 40, "A 24-hour format wxTimeCtrl:") + self.time24 = wxTimeCtrl( panel, 50, fmt24hr=True, name="24 hour control" ) + spin2 = wxSpinButton( panel, 60, wxDefaultPosition, wxSize(-1,20), 0 ) + self.time24.BindSpinButton( spin2 ) + + grid.AddWindow( text2, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM, 5 ) + hbox2 = wxBoxSizer( wxHORIZONTAL ) + hbox2.AddWindow( self.time24, 0, wxALIGN_CENTRE, 5 ) + hbox2.AddWindow( spin2, 0, wxALIGN_CENTRE, 5 ) + grid.AddSizer( hbox2, 0, wxLEFT, 5 ) + + + text3 = wxStaticText( panel, 70, "A wxTimeCtrl without a spin button:") + self.spinless_ctrl = wxTimeCtrl( panel, 80, name="spinless control" ) + + grid.AddWindow( text3, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM, 5 ) + grid.AddWindow( self.spinless_ctrl, 0, wxLEFT, 5 ) + + + buttonChange = wxButton( panel, 100, "Change Controls") + self.radio12to24 = wxRadioButton( panel, 110, "Copy 12-hour time to 24-hour control", wxDefaultPosition, wxDefaultSize, wxRB_GROUP ) + self.radio24to12 = wxRadioButton( panel, 120, "Copy 24-hour time to 12-hour control") + self.radioWx = wxRadioButton( panel, 130, "Set controls to 'now' using wxDateTime") + self.radioMx = wxRadioButton( panel, 140, "Set controls to 'now' using mxDateTime") + + radio_vbox = wxBoxSizer( wxVERTICAL ) + radio_vbox.AddWindow( self.radio12to24, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + radio_vbox.AddWindow( self.radio24to12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + radio_vbox.AddWindow( self.radioWx, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + radio_vbox.AddWindow( self.radioMx, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ) + + box_label = wxStaticBox( panel, 90, "Change Controls through API" ) + buttonbox = wxStaticBoxSizer( box_label, wxHORIZONTAL ) + buttonbox.AddWindow( buttonChange, 0, wxALIGN_CENTRE|wxALL, 5 ) + buttonbox.AddSizer( radio_vbox, 0, wxALIGN_CENTRE|wxALL, 5 ) + + outer_box = wxBoxSizer( wxVERTICAL ) + outer_box.AddSizer( grid, 0, wxALIGN_CENTRE|wxBOTTOM, 20 ) + outer_box.AddSizer( buttonbox, 0, wxALIGN_CENTRE|wxALL, 5 ) + + + # Turn on mxDateTime option only if we can import the module: + try: + from mx import DateTime + except ImportError: + self.radioMx.Enable( False ) + + + panel.SetAutoLayout( True ) + panel.SetSizer( outer_box ) + outer_box.Fit( panel ) + panel.Move( (50,50) ) + self.panel = panel + + + EVT_TIMEUPDATE( self, self.time12.GetId(), self.OnTimeChange ) + EVT_TIMEUPDATE( self, self.time24.GetId(), self.OnTimeChange ) + EVT_TIMEUPDATE( self, self.spinless_ctrl.GetId(), self.OnTimeChange ) + + EVT_BUTTON( self, buttonChange.GetId(), self.OnButtonClick ) + + + def OnTimeChange( self, event ): + timectrl = self.panel.FindWindowById( event.GetId() ) + self.log.write('%s time = %s\n' % ( timectrl.GetName(), timectrl.GetValue() ) ) + + def OnButtonClick( self, event ): + if self.radio12to24.GetValue(): + self.time24.SetValue( self.time12.GetValue() ) + + elif self.radio24to12.GetValue(): + self.time12.SetValue( self.time24.GetValue() ) + + elif self.radioWx.GetValue(): + now = wxDateTime_Now() + self.time12.SetWxDateTime( now ) + self.time24.SetWxDateTime( now ) + self.spinless_ctrl.SetWxDateTime( now ) + + elif self.radioMx.GetValue(): + from mx import DateTime + now = DateTime.now() + self.time12.SetMxDateTime( now ) + self.time24.SetMxDateTime( now ) + self.spinless_ctrl.SetMxDateTime( now ) + +#---------------------------------------------------------------------- + +def runTest( frame, nb, log ): + win = TestPanel( nb, log ) + return win + +#---------------------------------------------------------------------- + +overview = """<html><body> +<P> +<B>wxTimeCtrl</B> provides a multi-cell control that allows manipulation of a time +value. It supports 12 or 24 hour format, and you can use wxDateTime or mxDateTime +to get/set values from the control. +<P> +Left/right/tab keys to switch cells within a wxTimeCtrl, and the up/down arrows act +like a spin control. wxTimeCtrl also allows for an actual spin button to be attached +to the control, so that it acts like the up/down arrow keys. +<P> +The <B>!</B> or <B>c</B> key sets the value of the control to <B><I>now.</I></B> +<P> +Here's the API for wxTimeCtrl: +<DL><PRE> + <B>wxTimeCtrl</B>( + parent, id = -1, + <B>value</B> = '12:00:00 AM', + pos = wxDefaultPosition, + size = wxDefaultSize, + <B>fmt24hr</B> = False, + <B>spinButton</B> = None, + <B>style</B> = wxTE_PROCESS_TAB, + name = "time") +</PRE> +<UL> + <DT><B>value</B> + <DD>If no initial value is set, the default will be midnight; if an illegal string + is specified, a ValueError will result. (You can always later set the initial time + with SetValue() after instantiation of the control.) + <DL><B>size</B> + <DD>The size of the control will be automatically adjusted for 12/24 hour format + if wxDefaultSize is specified. + <BR> + <DT><B>fmt24hr</B> + <DD>If True, control will display time in 24 hour time format; if False, it will + use 12 hour AM/PM format. SetValue() will adjust values accordingly for the + control, based on the format specified. + <BR> + <DT><B>spinButton</B> + <DD>If specified, this button's events will be bound to the behavior of the + wxTimeCtrl, working like up/down cursor key events. (See BindSpinButton.) + <BR> + <DT><B>style</B> + <DD>By default, wxTimeCtrl will process TAB events, by allowing tab to the + different cells within the control. + </DL> +</UL> +<BR> +<BR> +<DT><B>SetValue(time_string)</B> +<DD>Sets the value of the control to a particular time, given a valid time string; +raises ValueError on invalid value +<BR> +<DT><B>GetValue()</B> +<DD>Retrieves the string value of the time from the control +<BR> +<DT><B>SetWxDateTime(wxDateTime)</B> +<DD>Uses the time portion of a wxDateTime to construct a value for the control. +<BR> +<DT><B>GetWxDateTime()</B> +<DD>Retrieves the value of the control, and applies it to the wxDateTimeFromHMS() +constructor, and returns the resulting value. (This returns the date portion as +"today".) +<BR> +<DT><B>SetMxDateTime(mxDateTime)</B> +<DD>Uses the time portion of an mxDateTime to construct a value for the control. +<EM>NOTE:</EM> This imports mx.DateTime at runtime only if this or the Get function +is called. +<BR> +<DT><B>GetMxDateTime()</B> +<DD>Retrieves the value of the control and applies it to the DateTime.Time() +constructor, and returns the resulting value. (mxDateTime is smart enough to +know this is just a time value.) +<BR> +<DT><B>BindSpinButton(wxSpinBtton)</B> +<DD>Binds an externally created spin button to the control, so that up/down spin +events change the active cell or selection in the control (in addition to the +up/down cursor keys.) (This is primarily to allow you to create a "standard" +interface to time controls, as seen in Windows.) +<BR> +<DT><B>EVT_TIMEUPDATE(win, id, func)</B> +<DD>func is fired whenever the value of the control changes. +</DL> +</body></html> +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxToggleButton.py b/wxPython/demo/wxToggleButton.py index b184437ab7..74d34d3f77 100644 --- a/wxPython/demo/wxToggleButton.py +++ b/wxPython/demo/wxToggleButton.py @@ -15,12 +15,12 @@ class TestPanel(wxPanel): self.log = log panel = wxPanel(self, -1) buttons = wxBoxSizer(wxHORIZONTAL) - for word in string.split("These are toggle buttons"): + for word in "These are toggle buttons".split(): b = wxToggleButton(panel, -1, word) EVT_TOGGLEBUTTON(self, b.GetId(), self.OnToggle) buttons.Add(b, flag=wxALL, border=5) - panel.SetAutoLayout(true) + panel.SetAutoLayout(True) panel.SetSizer(buttons) buttons.Fit(panel) panel.Move((50,50)) diff --git a/wxPython/demo/wxToolBar.py b/wxPython/demo/wxToolBar.py index ad4bfe5ea9..9867b98f05 100644 --- a/wxPython/demo/wxToolBar.py +++ b/wxPython/demo/wxToolBar.py @@ -7,16 +7,18 @@ import images class TestToolBar(wxFrame): def __init__(self, parent, log): - wxFrame.__init__(self, parent, -1, 'Test ToolBar', - wxPoint(0,0), wxSize(500, 300)) + wxFrame.__init__(self, parent, -1, 'Test ToolBar', size=(500, 300)) self.log = log self.timer = None EVT_CLOSE(self, self.OnCloseWindow) wxWindow(self, -1).SetBackgroundColour(wxNamedColour("WHITE")) - tb = self.CreateToolBar(wxTB_HORIZONTAL|wxNO_BORDER|wxTB_FLAT) - # wxTB_VERTICAL + tb = self.CreateToolBar( wxTB_HORIZONTAL + | wxNO_BORDER + | wxTB_FLAT + | wxTB_TEXT + ) #tb = wxToolBarSimple(self, -1, wxDefaultPosition, wxDefaultSize, # wxTB_HORIZONTAL | wxNO_BORDER | wxTB_FLAT) #self.SetToolBar(tb) @@ -24,6 +26,7 @@ class TestToolBar(wxFrame): self.CreateStatusBar() tb.AddSimpleTool(10, images.getNewBitmap(), "New", "Long help for 'New'") + #tb.AddLabelTool(10, "New", images.getNewBitmap(), shortHelp="New", longHelp="Long help for 'New'") EVT_TOOL(self, 10, self.OnToolClick) EVT_TOOL_RCLICKED(self, 10, self.OnToolRClick) @@ -46,9 +49,9 @@ class TestToolBar(wxFrame): shortHelp="Toggle this") EVT_TOOL(self, 50, self.OnToolClick) - #tb.AddCheckTool(60, '', images.getTog1Bitmap(), images.getTog2Bitmap(), - # shortHelp="Toggle with 2 bitmaps") - #EVT_TOOL(self, 60, self.OnToolClick) +## tb.AddCheckTool(60, images.getTog1Bitmap(), images.getTog2Bitmap(), +## shortHelp="Toggle with 2 bitmaps") +## EVT_TOOL(self, 60, self.OnToolClick) EVT_TOOL_ENTER(self, -1, self.OnToolEnter) EVT_TOOL_RCLICKED(self, -1, self.OnToolRClick) # Match all @@ -100,7 +103,7 @@ class TestToolBar(wxFrame): def runTest(frame, nb, log): win = TestToolBar(frame, log) frame.otherWin = win - win.Show(true) + win.Show(True) #--------------------------------------------------------------------------- @@ -109,16 +112,15 @@ def runTest(frame, nb, log): - - - - - - - - - - overview = """\ """ + + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxTreeCtrl.py b/wxPython/demo/wxTreeCtrl.py index ed5adc05e6..9a6a24f468 100644 --- a/wxPython/demo/wxTreeCtrl.py +++ b/wxPython/demo/wxTreeCtrl.py @@ -1,6 +1,6 @@ from wxPython.wx import * - +import images import string #--------------------------------------------------------------------------- @@ -27,46 +27,51 @@ class TestTreeCtrlPanel(wxPanel): EVT_SIZE(self, self.OnSize) self.log = log - tID = NewId() + tID = wxNewId() self.tree = MyTreeCtrl(self, tID, wxDefaultPosition, wxDefaultSize, - wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS# | wxTR_MULTIPLE + wxTR_HAS_BUTTONS + | wxTR_EDIT_LABELS + #| wxTR_MULTIPLE #| wxTR_HIDE_ROOT , self.log) + isz = (16,16) + il = wxImageList(isz[0], isz[1]) + fldridx = il.Add(wxArtProvider_GetBitmap(wxART_FOLDER, wxART_OTHER, isz)) + fldropenidx = il.Add(wxArtProvider_GetBitmap(wxART_FILE_OPEN, wxART_OTHER, isz)) + fileidx = il.Add(wxArtProvider_GetBitmap(wxART_REPORT_VIEW, wxART_OTHER, isz)) + smileidx = il.Add(images.getSmilesBitmap()) - ##import images - ##il = wxImageList(16, 16) - ##idx1 = il.Add(images.getSmilesBitmap()) - ##idx2 = il.Add(images.getOpenBitmap()) - ##idx3 = il.Add(images.getNewBitmap()) - ##idx4 = il.Add(images.getCopyBitmap()) - ##idx5 = il.Add(images.getPasteBitmap()) - - ##self.tree.SetImageList(il) - ##self.il = il + self.tree.SetImageList(il) + self.il = il # NOTE: For some reason tree items have to have a data object in # order to be sorted. Since our compare just uses the labels - # we don't need any real data, so we'll just use None. + # we don't need any real data, so we'll just use None below for + # the item data. self.root = self.tree.AddRoot("The Root Item") self.tree.SetPyData(self.root, None) - ##self.tree.SetItemImage(self.root, idx1) + self.tree.SetItemImage(self.root, fldridx, wxTreeItemIcon_Normal) + self.tree.SetItemImage(self.root, fldropenidx, wxTreeItemIcon_Expanded) + for x in range(15): child = self.tree.AppendItem(self.root, "Item %d" % x) self.tree.SetPyData(child, None) - ##self.tree.SetItemImage(child, idx2, wxTreeItemIcon_Expanded) - ##self.tree.SetItemSelectedImage(child, idx3) + self.tree.SetItemImage(child, fldridx, wxTreeItemIcon_Normal) + self.tree.SetItemImage(child, fldropenidx, wxTreeItemIcon_Expanded) for y in range(5): last = self.tree.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y))) self.tree.SetPyData(last, None) - ##self.tree.SetItemImage(last, idx4) - ##self.tree.SetItemSelectedImage(last, idx5) + self.tree.SetItemImage(last, fldridx, wxTreeItemIcon_Normal) + self.tree.SetItemImage(last, fldropenidx, wxTreeItemIcon_Expanded) for z in range(5): item = self.tree.AppendItem(last, "item %d-%s-%d" % (x, chr(ord("a")+y), z)) self.tree.SetPyData(item, None) + self.tree.SetItemImage(item, fileidx, wxTreeItemIcon_Normal) + self.tree.SetItemImage(item, smileidx, wxTreeItemIcon_Selected) self.tree.Expand(self.root) EVT_TREE_ITEM_EXPANDED (self, tID, self.OnItemExpanded) @@ -105,8 +110,20 @@ class TestTreeCtrlPanel(wxPanel): if self.tree.GetItemText(event.GetItem()) == "The Root Item": wxBell() self.log.WriteText("You can't edit this one...\n") + + # Lets just see what's visible of its children + cookie = 0 + root = event.GetItem() + (child, cookie) = self.tree.GetFirstChild(root, cookie) + while child.IsOk(): + self.log.WriteText("Child [%s] visible = %d" % + (self.tree.GetItemText(child), + self.tree.IsVisible(child))) + (child, cookie) = self.tree.GetNextChild(root, cookie) + event.Veto() + def OnEndEdit(self, event): self.log.WriteText("OnEndEdit\n") # show how to reject edit, we'll not allow any digits @@ -144,7 +161,7 @@ class TestTreeCtrlPanel(wxPanel): self.log.WriteText("OnSelChanged: %s\n" % self.tree.GetItemText(self.item)) if wxPlatform == '__WXMSW__': self.log.WriteText("BoundingRect: %s\n" % - self.tree.GetBoundingRect(self.item, true)) + self.tree.GetBoundingRect(self.item, True)) #items = self.tree.GetSelections() #print map(self.tree.GetItemText, items) event.Skip() diff --git a/wxPython/demo/wxValidator.py b/wxPython/demo/wxValidator.py index 91192b2b80..fc1300229e 100644 --- a/wxPython/demo/wxValidator.py +++ b/wxPython/demo/wxValidator.py @@ -24,14 +24,14 @@ class MyValidator(wxPyValidator): if self.flag == ALPHA_ONLY: for x in val: if x not in string.letters: - return false + return False elif self.flag == DIGIT_ONLY: for x in val: if x not in string.digits: - return false + return False - return true + return True def OnChar(self, event): @@ -58,7 +58,7 @@ class MyValidator(wxPyValidator): class TestValidatorPanel(wxPanel): def __init__(self, parent): wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + self.SetAutoLayout(True) VSPACE = 10 fgs = wxFlexGridSizer(0, 2) @@ -130,30 +130,30 @@ class TextObjectValidator(wxPyValidator): textCtrl.SetBackgroundColour("pink") textCtrl.SetFocus() textCtrl.Refresh() - return false + return False else: textCtrl.SetBackgroundColour( wxSystemSettings_GetColour(wxSYS_COLOUR_WINDOW)) textCtrl.Refresh() - return true + return True def TransferToWindow(self): """ Transfer data from validator to window. - The default implementation returns false, indicating that an error - occurred. We simply return true, as we don't do any data transfer. + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. """ - return true # Prevent wxDialog from complaining. + return True # Prevent wxDialog from complaining. def TransferFromWindow(self): """ Transfer data from window to validator. - The default implementation returns false, indicating that an error - occurred. We simply return true, as we don't do any data transfer. + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. """ - return true # Prevent wxDialog from complaining. + return True # Prevent wxDialog from complaining. #---------------------------------------------------------------------- @@ -161,7 +161,7 @@ class TestValidateDialog(wxDialog): def __init__(self, parent): wxDialog.__init__(self, parent, -1, "Validated Dialog") - self.SetAutoLayout(true) + self.SetAutoLayout(True) VSPACE = 10 fgs = wxFlexGridSizer(0, 2) @@ -210,12 +210,6 @@ def runTest(frame, nb, log): - - - - - - overview = """\ wxValidator is the base class for a family of validator classes that mediate between a class of control, and application data. @@ -230,3 +224,11 @@ A validator has three major roles: Validators can be plugged into controls dynamically. """ + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + diff --git a/wxPython/demo/wxXmlResource.py b/wxPython/demo/wxXmlResource.py index 2d0aa94768..839a9cff1d 100644 --- a/wxPython/demo/wxXmlResource.py +++ b/wxPython/demo/wxXmlResource.py @@ -51,7 +51,7 @@ class TestPanel(wxPanel): sizer.Add(panel, 1, wxEXPAND|wxALL, 5) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) #---------------------------------------------------------------------- diff --git a/wxPython/demo/wxXmlResourceHandler.py b/wxPython/demo/wxXmlResourceHandler.py index dda5005d4e..531457c651 100644 --- a/wxPython/demo/wxXmlResourceHandler.py +++ b/wxPython/demo/wxXmlResourceHandler.py @@ -11,7 +11,7 @@ resourceText = r'''<?xml version="1.0"?> <object class="MyBluePanel" name="MyPanel"> <size>200,100</size> - <object class="wxStaticText" name="lable1"> + <object class="wxStaticText" name="lable1" subclass="wxPython.wx.wxPreStaticText"> <label>This blue panel is a class derived from wxPanel,\nand is loaded by a custom wxXmlResourceHandler.</label> <pos>10,10</pos> </object> @@ -153,7 +153,7 @@ class TestPanel(wxPanel): sizer.Add(panel, 1, wxEXPAND|wxALL, 5) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) #---------------------------------------------------------------------- diff --git a/wxPython/distrib/.rpmrc b/wxPython/distrib/.rpmrc deleted file mode 100644 index 46a92a2043..0000000000 --- a/wxPython/distrib/.rpmrc +++ /dev/null @@ -1,5 +0,0 @@ -sourcedir: . -builddir: . -rpmdir: . -srcrpmdir: . - diff --git a/wxPython/distrib/README.1st.txt b/wxPython/distrib/README.1st.txt new file mode 100644 index 0000000000..4b55d30398 --- /dev/null +++ b/wxPython/distrib/README.1st.txt @@ -0,0 +1,117 @@ +README for wxPythonSrc-*.tar.gz +------------------------------- + +Prior to version 2.3.3 of wxPython I had always made my Linux/Unix +binaries based on the released binary of wxGTK and wxGTK-gl. This +imposed a few restrictions and so starting with 2.3.3 I have decided +to do a combined binary that inlcudes wxGTK as well as wxPython. This +allows me a bit more flexibility and is consistent with how the +Windows and Mac OS X binaries are built. + +If you are reading this file then you are probably interested in +building your own copy of wxPython from the sources contained in this +archive. If you wish to use the released wxGTK binary as has been +done in the past then you can still follow the old build directions in +wxPython/BUILD.unix.txt. If you are building for Windows or Mac OS X +then you should look at wxPython/BUILD.win32.txt or +wxPython/BUILD.osx.txt respectivly. + +If, on the other hand, you would like to build Linux/Unix binaries +with a private copy of wxGTK like what I am now distributing then +you'll want to follow the instructions in this file. (You should +probably still read wxPython/BUILD.unix.txt though since there are +other details there that you may need to be aware of. + +Clear as mud? Good. Let's get started. + + +1. We'll be making a private copy of wxGTK so it doesn't conflict with + one used by wxGTK C++ apps that expect to have the default binary + installed from RPM or whatever. I put it in /usr/lib/wxPython, but + you can use whatever you like. I'll just set a variable to our wx + prefix to reference later: + + export WXPREF=/usr/lib/wxPython + + +2. Make a build directory and configure wxGTK. + + cd wxPythonGTK-2.3.3 # or whatever the top-level dir is + mkdir build + cd build + ../configure --with-gtk \ + --prefix=$WXPREF \ + --enable-rpath=$WXPREF/lib \ + --with-opengl \ + --enable-geometry \ + --enable-optimise \ + --enable-debug_flag \ + + You may want to use --enable-debug instead of --enable-optimise if + you need to run though a debugger and want full debugging symbols. + + if you want to use the image and zlib libraries included with + wxWindows instead of those already installed on your system, (for + example, to reduce dependencies on 3rd party libraries) then you + can add these flags to the configure command: + + --with-libjpeg=builtin \ + --with-libpng=builtin \ + --with-libtiff=builtin \ + --with-zlib=builtin \ + + If you would like to use GTK 2.x and unicode, then add the + following flags. Please note that this is still beta-level + quality, but does look and work quite nice for the most part: + + --enable-gtk2 \ + --enable-unicode \ + + +3. Build and install wxGTK. (You may need to be root for the last + step, depending on where your WXPREF is.) + + make + cd ../build + make install + + +4. Build and install wxPython. If you want to use a different version + of Python than is found by default on the PATH then specify the + whole pathname in these steps. The version of Python that runs + setup.py is the version wxPython will be built and installed for. + (You will need to be root for the install step unless your Python + is not in a system location.) + + cd ../wxPython + python setup.py \ + WX_CONFIG=$WXPREF/bin/wx-config \ + build install + + If you are using GTK 2.x and unicode then do it this way instead: + + python setup.py \ + WX_CONFIG=$WXPREF/bin/wx-config \ + WXPORT=gtk2 UNICODE=1 \ + build install + + If you get errors about wxGLCanvas or being unable to find libGLU + or something like that then you can add BUILD_GLCANVAS=0 to the + setup.py command line to disable the building of the glcanvas + module. + + If you would like to install to someplace besides the Python + site-packages directory (such as to your home directory) then you + can add "--root=<path>" after the "install" command. To use + wxPython like this you'll need to ensure that the directory + containing wxPyrthon is contained in in the PYTHONPATH environment + variable. + + +5. That's all, except for the having fun part! + +-- +Robin Dunn +Software Craftsman +http://wxPython.org Java give you jitters? Relax with wxPython! + diff --git a/wxPython/distrib/README.dbg.txt b/wxPython/distrib/README.dbg.txt deleted file mode 100644 index ba829d4443..0000000000 --- a/wxPython/distrib/README.dbg.txt +++ /dev/null @@ -1,30 +0,0 @@ -This zip file contains versions of the wxWindows and wxPython binaries -that have been compiled with __WXDEBUG__ defined. This adds code to -wxWindows that is a bit more agressive about checking parameter -values, return values, and etc. When the debugging library senses -something is wrong it will popup a message dialog telling you so. -Unfortunately the message is specific to the C++ code but it might -give you a hint about what went wrong and how to fix it. - -Another debugging feature is when the wxPython program exits, it will -print to stdout information about any wxWindows C++ objects that -havn't been properly cleaned up. - -This archive contains a new wxWindows DLL named wx[version]d.dll and a -debugging version of the core wxPython module, wxc_d.pyd. These -should be put into your wxPython package directory. Also included are -the debuging version of Python, python_d.exe and python[VER]_d.dll -which can be put wherever you like. - -In order to run the debugging version of wxPython sumply run you -program with python_d.exe instead of python.exe. This lets the -debugging version sit side by side with the production version, with -no need for swapping this around. You will also need _d versions of -any other extension modules you are using. If you need _d's for any -of the other standard Python extensions you can get them here, for 2.0 -at least: - -http://www.pythonlabs.com/products/python2.0/downloads/BeOpen-Python-2.0-Debug.zip - - -Robin diff --git a/wxPython/distrib/README.viewdocs.txt b/wxPython/distrib/README.viewdocs.txt new file mode 100644 index 0000000000..de7b3f7ee9 --- /dev/null +++ b/wxPython/distrib/README.viewdocs.txt @@ -0,0 +1,17 @@ +wxPythonDocs +------------ + +The wxWindows docs can now be viewed on non-Win32 platforms with a +nice viewer modeled after the MS HTMLHelp viewer. Simply execute the +viewdocs.py script located in this directory and you're all set. +(You'll need to first have wxPython installed and accessible via the +PYTHONPATH.) + +You can also add other HTML books to be displayed by the viewer simply +by dropping their .zip file here, viewdocs.py will find them +automatically and add them to the list. The zip file just needs to +contain a .hhp file that defines the contents of the book. See the +docs on wxHtmlHelpController for details. + +If you'd still ike to view these docs in your regular browser you can +simply unzip each of the books into their own directory. \ No newline at end of file diff --git a/wxPython/distrib/autobuild.py b/wxPython/distrib/autobuild.py deleted file mode 100755 index e5434e669e..0000000000 --- a/wxPython/distrib/autobuild.py +++ /dev/null @@ -1,139 +0,0 @@ - - -import sys, os, string, time -from ftplib import FTP - -cwd = os.getcwd() - -logfile = 'c:\\temp\\autobuild.log' -WXDIR = os.environ['WXWIN'] -dllVer = '23_0' -wxpVer = '2.3b1' -dateSt = time.strftime("%Y%m%d", time.localtime(time.time())) - -base = os.path.split(sys.argv[0])[0] -base = os.path.join(base, '..') -WXPYDIR = os.path.abspath(base) - -#---------------------------------------------------------------------- - -def do(cmd): - st = " " + cmd + " >> " + logfile - print st - f = open(logfile, "at") - f.write(st + '\n') - f.close() - os.system(cmd + " >>& " + logfile) - -#---------------------------------------------------------------------- - -def logTruncate(): - f = open(logfile, "wt") - f.close() - - -def logSeparator(msg=None, f=None, recurse=1): - if not f: - f = open(logfile, "at") - f.write('\n') - f.write('--' * 35) - f.write('\n') - if msg: - f.write(msg) - f.write('\n') - f.write('--' * 35) - f.write('\n') - if recurse: - logSeparator(msg, sys.stdout, 0) - -#---------------------------------------------------------------------- - -def validateFile(file): - if not os.path.exists(file): - logSeparator("***** %s does not exist, exiting! *****" % file) - raise SystemExit - else: - logSeparator("%s found, continuing..." % file, recurse=0) - - -#---------------------------------------------------------------------- - -def main(): - logTruncate() - - try: - logSeparator("Cleanup") - os.chdir(WXDIR + '/src/msw') - do('make cleandll FINAL=1') - - logSeparator("Building Documentation...") - os.chdir(WXDIR + '/src/msw') - do('make touchmanual htmlhelp') - validateFile(WXDIR + '/docs/htmlhelp/wx.chm') - - logSeparator("Building wxWindows...") - os.chdir(WXDIR + '/src/msw') - do('make dll pch FINAL=1') - validateFile(WXDIR + '/lib/wx'+dllVer+'.dll') - - - - logSeparator("Cleaning wxPython build directory...") - os.chdir(WXPYDIR) - do('b.bat c') - - logSeparator("Building wxPython...") - os.chdir(WXPYDIR + '\\src') - do("b.bat f") - validateFile(WXPYDIR+'\\wxPython\\wxc.pyd') - - - logSeparator("Building installer executable...") - os.chdir(WXPYDIR+'\\distrib') - do("autoit2 wise.aut") - srcName = WXPYDIR+'\\distrib\\wxPython-'+wxpVer+'.EXE' - destName = WXPYDIR+'\\distrib\\wxPython-'+wxpVer+'-'+dateSt+'.EXE' - validateFile(srcName) - try: - time.sleep(5) - os.rename(srcName, destName) - validateFile(destName) - except: - logSeparator("****** UNABLE TO RENAME FILE ******") - - - logSeparator("Building docs zip file...") - os.chdir(WXPYDIR) - do("distrib\\zipit.bat %s" % wxpVer) - - srcDName = WXPYDIR+'\\distrib\\wxPython-docs-'+wxpVer+'.tar.gz' - destDName = WXPYDIR+'\\distrib\\wxPython-docs-'+wxpVer+'-'+dateSt+'.tar.gz' - validateFile(srcDName) - try: - os.rename(srcDName, destDName) - except: - pass - - - - # #*#*#*#*#* Comment this out to allow upload... - #return - - logSeparator("Uploading to website...") - do('python c:\\utils\\sendwxp.py %s' % destName) - #do('python c:\\utils\\sendwxp.py %s' % destDName) - - - logSeparator("Finished!!!") - - finally: - os.system("list " + logfile) - pass - - - - - - -if __name__ == '__main__': - main() diff --git a/wxPython/distrib/genfilelist.py b/wxPython/distrib/genfilelist.py new file mode 100644 index 0000000000..20760b36d9 --- /dev/null +++ b/wxPython/distrib/genfilelist.py @@ -0,0 +1,51 @@ +""" +Walk a directory tree and output a filename list suitable for use +in an RPM spec. + +Usage: genfilelist.py [-r] build_root filespec(s) + +""" + + +import sys, os, glob, stat + + +def walktree(names, buildroot, recurse): + for name in names: + isdir = os.path.isdir(name) + printfilename(name, buildroot, isdir) + if isdir and recurse: + walktree([os.path.join(name, x) for x in os.listdir(name)], buildroot, recurse) + + +def printfilename(name, buildroot, isdir): + s = os.lstat(name) + realname = name[len(buildroot):] + if isdir: + fmt = "%%dir %%attr(%o, root, root) %s" + else: + fmt = "%%attr(%o, root, root) %s" + print fmt % (s[stat.ST_MODE] & 0777, realname) + + +def main(args): + if args[0] == '-r': + recurse = 1 + args = args[1:] + else: + recurse = 0 + + if len(args) < 2: + print __str__ + sys.exit(1) + + buildroot = args[0] + for arg in args[1:]: + if arg[0] == '/': + arg = arg[1:] + walktree(glob.glob(os.path.join(buildroot, arg)), buildroot, recurse) + +if __name__ == "__main__": + main(sys.argv[1:]) + + diff --git a/wxPython/distrib/mac/.cvsignore b/wxPython/distrib/mac/.cvsignore new file mode 100644 index 0000000000..e43b0f9889 --- /dev/null +++ b/wxPython/distrib/mac/.cvsignore @@ -0,0 +1 @@ +.DS_Store diff --git a/wxPython/distrib/mac/MacPython/.cvsignore b/wxPython/distrib/mac/MacPython/.cvsignore new file mode 100644 index 0000000000..e43b0f9889 --- /dev/null +++ b/wxPython/distrib/mac/MacPython/.cvsignore @@ -0,0 +1 @@ +.DS_Store diff --git a/wxPython/distrib/mac/MacPython/README.txt b/wxPython/distrib/mac/MacPython/README.txt new file mode 100644 index 0000000000..89ecd2b9b4 --- /dev/null +++ b/wxPython/distrib/mac/MacPython/README.txt @@ -0,0 +1,3 @@ +This is a set of build scripts and such for MacPython-OSX 2.3 that I +will use until there are standard distributions from Jack. + diff --git a/wxPython/distrib/mac/MacPython/build b/wxPython/distrib/mac/MacPython/build new file mode 100755 index 0000000000..f684d4363c --- /dev/null +++ b/wxPython/distrib/mac/MacPython/build @@ -0,0 +1,129 @@ +#!/bin/sh -e +#---------------------------------------------------------------------- +# Build MacPython 2.3 and make an Installer package of it + +# TODO: Parameterize the versions, builddirs, etc... + +# Script configs +PYVERSION=2.3a2 +PYVER=2.3 +BUILDNUM=3 +DOCLEANUP=no + +PROGDIR="`dirname \"$0\"`" +TMPDIR=/tmp/_py +#TMPDIR=/projects/_py + +BUILDROOT=$TMPDIR/build +INSTALLROOT=$TMPDIR/install +DMGDIR=$TMPDIR/dmg +RESOURCEDIR=$PROGDIR/resources +DESTDIR=/projects/wx/wxPython/dist +PYTHONSRC=/projects/Python-$PYVERSION +WASTEDIR=/projects/waste + +# Setup +mkdir -p $BUILDROOT +mkdir -p $INSTALLROOT +rm -rf $DMGDIR +mkdir -p $DMGDIR/root + + +# Configure and build Python +pushd $BUILDROOT + +# Check if we should build and install the docs, but only if it +# doesn't appear to be done already. TODO: fix this path to be version independent +if [ ! -e "build/temp.darwin-6.3-Power Macintosh-2.3/build-html/build-html idx" ]; then + read -p "Build the Python docs? (y/N)? " builddocs +fi + +# If the filesystem is case-sensitive then "python" will be built, but +# some parts of the install expect "python.exe which is what is built +# on a case-insensitive filesystem. Make a link just in case it is +# needed. +if [ ! -e python.exe ]; then + ln -s python python.exe +fi + +# Make a link to the waste dir so that lib can be found. This allows +# the PythonIDE to be built +if [ ! -e waste ]; then + ln -s $WASTEDIR waste +fi + +$PYTHONSRC/configure --enable-framework=$INSTALLROOT/Library/Frameworks LDFLAGS=-Wl,-x +make +make frameworkinstall + +if [ "$builddocs" = "y" -o "$builddocs" = "Y" ]; then + ./python.exe $PYTHONSRC/Mac/OSX/setupDocs.py build + echo "" + read -p "When the help indexer is done press Enter..." ans + ./python.exe $PYTHONSRC/Mac/OSX/setupDocs.py install \ + --prefix=$INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER +fi + +popd + + + +# Make the Installer package: +# First, remove the unix tools as their paths will be wrong. We'll recreate +# them in the postinstall. +rm -r $INSTALLROOT/usr + +# Next, remove the .pyc/.pyo files +python $PROGDIR/../zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER + +# Make the welcome message +cat > $RESOURCEDIR/Welcome.txt <<EOF +Welcome! + +This program will install Python $PYVERSION for Mac OS X as a Framework. + +Build number: $BUILDNUM +Build date: `date` +EOF + + +# fix a bug in the IDLE install +IDLERES=$INSTALLROOT/Applications/MacPython-2.3/IDLE.app/Contents/Resources +mv $IDLERES/idlelib/idle $IDLERES + + +# Finally, build the package... +rm -rf MacPython-OSX.pkg +python $PROGDIR/../buildpkg.py \ + --Title=MacPython-OSX \ + --Version=$PYVERSION-$BUILDNUM \ + --Description="Python $PYVERSION for Mac OS X, framework based" \ + --NeedsAuthorization="YES" \ + --Relocatable="NO" \ + --InstallOnly="YES" \ + $INSTALLROOT \ + $RESOURCEDIR + +## --RootVolumeOnly="YES" \ + +# ...and then make a disk image containing the package. +mv MacPython-OSX.pkg $DMGDIR/root +$PROGDIR/../makedmg $DMGDIR/root $DMGDIR MacPython-OSX-$PYVERSION-$BUILDNUM + +echo Moving $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM to $DESTDIR +mv $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM.dmg $DESTDIR + + +# Cleanup build/install dirs +if [ $DOCLEANUP = yes ]; then + echo "Cleaning up..." + rm -rf $BUILDROOT + rm -rf $INSTALLROOT + rm -rf $DMGDIR +else + echo "Cleanup is disabled. You should remove these dirs when done:" + echo " $BUILDROOT" + echo " $INSTALLROOT" + echo " $DMGDIR" +fi + diff --git a/wxPython/distrib/mac/MacPython/resources/Welcome.txt b/wxPython/distrib/mac/MacPython/resources/Welcome.txt new file mode 100644 index 0000000000..9ecb080986 --- /dev/null +++ b/wxPython/distrib/mac/MacPython/resources/Welcome.txt @@ -0,0 +1,6 @@ +Welcome! + +This program will install Python 2.3a2 for Mac OS X as a Framework. + +Build number: 3 +Build date: Thu Mar 20 18:54:52 PST 2003 diff --git a/wxPython/distrib/mac/MacPython/resources/postflight b/wxPython/distrib/mac/MacPython/resources/postflight new file mode 100755 index 0000000000..25c12c1c04 --- /dev/null +++ b/wxPython/distrib/mac/MacPython/resources/postflight @@ -0,0 +1,67 @@ +#!/bin/sh +#---------------------------------------------------------------------- +# Create the unix tools and compile the .py files after Python has been +# installed. +#---------------------------------------------------------------------- + +PYVER=2.3 + +PKG=$1 +DEST=$2 + + +# if destination is / then use usr/local/bin, otherwise just bin +if [ "$DEST" = "/" ]; then + TOOLDIR=/usr/local/bin + DEST= +else + TOOLDIR=$DEST/bin +fi + +# Make sure the dir exists +mkdir -p $TOOLDIR + +# Make some links to the python executable +if [ -e $TOOLDIR/python$PYVER ]; then + rm $TOOLDIR/python$PYVER +fi +ln -fs $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin/python $TOOLDIR/python$PYVER + +if [ -e $TOOLDIR/python ]; then + rm $TOOLDIR/python +fi +ln -fs python$PYVER $TOOLDIR/python + + +# make the pythonw script +cat > $TOOLDIR/pythonw <<EOF +#!/bin/sh +exec "$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/python" "\$@" +EOF +chmod +x $TOOLDIR/pythonw + + +# Compile the .py files in the Python library to .pyc's and then .pyo's +$TOOLDIR/python -Wi -tt \ + $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \ + -x badsyntax -x site-packages $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER + +$TOOLDIR/python -Wi -tt -O \ + $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \ + -x badsyntax -x site-packages $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER + + +# Make the site-packages and other dirs writable by the admin. +for d in $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages \ + $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin \ + $DEST/Applications/MacPython-$PYVER; do + chgrp -R admin $d + chmod -R g+w $d +done + + +# The link in the app bundles needs updated. +for app in BuildApplet IDLE PackageManager PythonIDE; do + ln -s $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/python \ + $DEST/Applications/MacPython-$PYVER/$app.app/Contents/MacOS +done diff --git a/wxPython/distrib/mac/MachoPython.info b/wxPython/distrib/mac/MachoPython.info deleted file mode 100644 index bceb58050f..0000000000 --- a/wxPython/distrib/mac/MachoPython.info +++ /dev/null @@ -1,15 +0,0 @@ -Title MachoPython -Version 2.2.1 -Description The Python Programming Language -DefaultLocation / -DeleteWarning - -### Package Flags - -NeedsAuthorization YES -Required NO -Relocatable NO -RequiresReboot NO -UseUserMask NO -OverwritePermissions NO -InstallFat NO diff --git a/wxPython/distrib/mac/_build b/wxPython/distrib/mac/_build deleted file mode 100755 index 3e660da5a5..0000000000 --- a/wxPython/distrib/mac/_build +++ /dev/null @@ -1,264 +0,0 @@ -#!/bin/sh -e -# -# build binary wxMacPython package and put it on a disk image -# -# usage: build [-s dir] [-d dir] [--cvs-update] [--force] [--debug] -# -# (C)opyright 2002 Frank Vercruesse -# -# Many modifications by Robin Dunn - - -PYVER=2.2 - -curDir=`pwd` -progDir="`dirname \"$0\"`" - -defSrcPath="/projects/wx" -defDstPath="/projects/wx/wxPython/dist" - -pkgName="wxPythonOSX" -#version=`date +"%Y-%m-%d"` -version=`cd $defSrcPath/wxPython; python$PYVER -c 'import setup;print setup.VERSION'` - -dmgRoot="dmg-root" -pkgRoot="pkg-root" -wxWindowsInst="$pkgRoot/usr/local" -wxPythonInst="$pkgRoot/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages" - -pythonExec="python$PYVER" -makePkgExec="./makepkg" -makeDmgExec="./makedmg" - - -usage() { - echo `basename $0`: ERROR: $* 1>&2 - echo usage: `basename $0` '[-s dir] [-d dir] [--cvs-update] [--force] [--debug]' 1>&2 - exit 1 -} - -quotemeta() { - # probably not quite correct, but seems to work - echo "$1" | sed -e 's/\([^a-zA-z0-9.,--;_/]\)/\\\1/g' -} - -msg() -{ - echo "---------------------------------------------" - echo $@ -} - -msgdo() { - echo "--> " $@ - $@ -} - - -user=$1 -shift - -update= -force= -debug= -srcPath= -dstPath= - -while :; do - case "$1" in - --cvs-update) update=1;; - --force) force=1;; - --debug) debug=1;; - -s) shift; srcPath="$1";; - -d) shift; dstPath="$1";; - -*) usage "bad argument $1";; - *) break;; - esac - shift -done - - -#----------------------------------- -msg check and prepare build directories - -if ! test "$srcPath"; then - srcPath=$defSrcPath -fi -if ! test -d "$srcPath"; then - echo "no such directory: '$srcPath'" 1>&2 - exit -fi - -if ! test "$dstPath"; then - dstPath=$defDstPath -fi -if ! test -d "$dstPath"; then - msgdo mkdir -p -m 775 "$dstPath" - msgdo chown ${user}:staff "$dstPath" -fi - -temp="tmp$$" -if test -e "$dstPath/$temp"; then - msgdo rm -rf "$dstPath/$temp" -fi -msgdo mkdir -m 775 "$dstPath/$temp" - -if test -e "$dstPath/$temp/$pkgRoot"; then - msgdo rm -rf "$dstPath/$temp/$pkgRoot" -fi -msgdo mkdir -m 1775 "$dstPath/$temp/$pkgRoot" -msgdo chown root:admin "$dstPath/$temp/$pkgRoot" - -if test -e "$dstPath/$temp/$dmgRoot"; then - msgdo rm -rf "$dstPath/$temp/$dmgRoot" -fi -msgdo mkdir -p -m 775 "$dstPath/$temp/$dmgRoot" -msgdo chown $user:staff "$dstPath/$temp/$dmgRoot" - - -#----------------------------------- -# update cvs -if [ $update ]; then - msg Updating from CVS - msgdo cd "$srcPath" - msgdo cvs update -dP -A -fi - - -#----------------------------------- -msg configuring wxWindows - -buildDir="$srcPath/build-pkg" -dFlag="--enable-debug_flag --enable-optimise" -if [ $debug ]; then - buildDir="$srcPath/build-pkg-debug" - dFlag="--enable-debug" -fi -if ! test -e "$buildDir"; then - force=1 -fi -if [ $force ]; then - if test -e "$buildDir"; then - rm -rf "$buildDir" - fi - msgdo mkdir -m 775 "$buildDir" - msgdo cd "$buildDir" - msgdo ../configure --with-mac --with-opengl --enable-precomp=no $dFlag - cd $curDir - -else - echo wxWindows already configured -fi - - -#----------------------------------- -msg building wxWindows -msgdo cd $buildDir -msgdo make -msgdo cd ../locale -msgdo make allmo -cd $curDir - - -#----------------------------------- -msg installing wxWindows -msgdo mkdir -p -m 1755 "$dstPath/$temp/$wxWindowsInst" -msgdo cd "$buildDir" - -# install once to the package directory, and once to the -# local machine so the wxPython build will get the right wxMac -msgdo make install "prefix=`quotemeta \"$dstPath/$temp/$wxWindowsInst\"`" -msgdo make install - -msgdo chown -R root:wheel "$dstPath/$temp/$pkgRoot/usr" -cd $curDir - - -#----------------------------------- -msg building wxPython -if [ $force ]; then - fFlag="--force" -else - fFlag= -fi -if [ $debug ]; then - dFlag="--debug" - wxpBuildDir="build-pkg-debug" -else - dFlag= - wxpBuildDir="build-pkg" -fi -bbFlag="BUILD_BASE=$wxpBuildDir" - -msgdo cd "$srcPath/wxPython" -msgdo $pythonExec setup.py build 'IN_CVS_TREE=1' $bbFlag $fFlag $dFlag -cd $curDir - - -#----------------------------------- -msg installing wxPython -msgdo mkdir -p -m 775 "$dstPath/$temp/$wxPythonInst" -msgdo cd "$srcPath/wxPython" -msgdo $pythonExec setup.py install $bbFlag --install-lib="$dstPath/$temp/$wxPythonInst" -cd $curDir - -msgdo chown -R root:admin "$dstPath/$temp/$pkgRoot/Library" -msgdo chmod -R g+w "$dstPath/$temp/$pkgRoot/Library" - - -#----------------------------------- -msg copying additional wxPython files -msgdo cp -pR "$srcPath/wxPython/samples" "$dstPath/$temp/$dmgRoot" -msgdo cp -pR "$srcPath/wxPython/demo" "$dstPath/$temp/$dmgRoot" -msgdo cp -pR "$srcPath/wxPython/licence" "$dstPath/$temp/$dmgRoot" -find "$dstPath/$temp/$dmgRoot" -name "CVS" -type d -print0 | xargs -0 rm -rf -find "$dstPath/$temp/$dmgRoot" -name ".DS_Store" -type f -print0 | xargs -0 rm -find "$dstPath/$temp/$dmgRoot" -name ".cvsignore" -type f -print0 | xargs -0 rm -find "$dstPath/$temp/$dmgRoot" -name ".#*" -type f -print0 | xargs -0 rm -find "$dstPath/$temp/$dmgRoot" -name "b" -type f -print0 | xargs -0 rm -find "$dstPath/$temp/$dmgRoot" -name "*~*~" -type f -print0 | xargs -0 rm - -msgdo cd "$srcPath/wxPython/scripts" -sFiles=`$pythonExec CreateMacScripts.py` -for f in $sFiles; do - msgdo cp $f "$dstPath/$temp/$wxWindowsInst/bin" -done -cd $curDir - -msgdo chown -R ${user}:staff "$dstPath/$temp/$dmgRoot" - - -#----------------------------------- -msg making installer package -msgdo cp -pR "$progDir/resources" "$dstPath/$temp" -msgdo cp $progDir/$pkgName.info $progDir/$pkgName-$version.info -if [ $debug ]; then - echo "__WXDEBUG__ version." >> "$dstPath/$temp/resources/Welcome.txt" - echo "" >> "$dstPath/$temp/resources/Welcome.txt" -fi -echo "Build date: `date`" >> "$dstPath/$temp/resources/Welcome.txt" -msgdo cd "$progDir" -msgdo "$makePkgExec" $dstPath/$temp/$pkgRoot $pkgName-$version.info -d $dstPath/$temp/$dmgRoot -r $dstPath/$temp/resources -msgdo chown -R ${user}:staff $dstPath/$temp/$dmgRoot/$pkgName-$version.pkg -cd $curDir - - -#----------------------------------- -msg making disk image -msgdo cd "$progDir" -msgdo "$makeDmgExec" $dstPath/$temp/$dmgRoot $dstPath/$temp $pkgName-$version -if [ $debug ]; then - dmgName="$pkgName-$version-debug" -else - dmgName="$pkgName-$version" -fi -msgdo mv "$dstPath/$temp/$pkgName-$version.dmg" "$dstPath/$dmgName.dmg" -msgdo chown ${user}:staff "$dstPath/$dmgName.dmg" -cd $curDir - - -#----------------------------------- -msg cleaning up -msgdo chown -R ${user}:staff "$buildDir" -msgdo chown -R ${user}:staff "$srcPath/wxPython/$wxpBuildDir" -msgdo rm $progDir/$pkgName-$version.info -msgdo rm -rf "$dstPath/$temp" diff --git a/wxPython/distrib/mac/_buildPython b/wxPython/distrib/mac/_buildPython deleted file mode 100755 index 57774d1bb6..0000000000 --- a/wxPython/distrib/mac/_buildPython +++ /dev/null @@ -1,162 +0,0 @@ -#!/bin/sh -e -# -# Create a MachoPython package from the currently installed verison -# and put it on a disk image -# - - -PYVER=2.2 - -curDir=`pwd` -progDir="`dirname \"$0\"`" - -defDstPath="/projects/wx/wxPython/dist" - -pkgName="MachoPython" -version=2.2.1-4 -dmgRoot="dmg-root" -pkgRoot="pkg-root" -sitePkgDir="$pkgRoot/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages" - -pythonExec="python$PYVER" -makePkgExec="./makepkg" -makeDmgExec="./makedmg" - - -usage() { - echo `basename $0`: ERROR: $* 1>&2 - echo usage: `basename $0` '[-d dir]' 1>&2 - exit 1 -} - -quotemeta() { - # probably not quite correct, but seems to work - echo "$1" | sed -e 's/\([^a-zA-z0-9.,--;_/]\)/\\\1/g' -} - -msg() -{ - echo "---------------------------------------------" - echo $@ -} - -msgdo() { - echo "--> " $@ - $@ -} - - -user=$1 -shift - -dstPath= - -while :; do - case "$1" in - -d) shift; dstPath="$1";; - -*) usage "bad argument $1";; - *) break;; - esac - shift -done - - -#----------------------------------- -msg check and prepare build directories - -if ! test "$dstPath"; then - dstPath=$defDstPath -fi -if ! test -d "$dstPath"; then - msgdo mkdir -p -m 775 "$dstPath" - msgdo chown ${user}:staff "$dstPath" -fi - -temp="tmp$$" -if test -e "$dstPath/$temp"; then - msgdo rm -rf "$dstPath/$temp" -fi -msgdo mkdir -m 775 "$dstPath/$temp" - -if test -e "$dstPath/$temp/$pkgRoot"; then - msgdo rm -rf "$dstPath/$temp/$pkgRoot" -fi -msgdo mkdir -m 1775 "$dstPath/$temp/$pkgRoot" -msgdo chown root:admin "$dstPath/$temp/$pkgRoot" - -if test -e "$dstPath/$temp/$dmgRoot"; then - msgdo rm -rf "$dstPath/$temp/$dmgRoot" -fi -msgdo mkdir -p -m 775 "$dstPath/$temp/$dmgRoot" -msgdo chown $user:staff "$dstPath/$temp/$dmgRoot" - -#----------------------------------- -msg Copying files to package build dir - -for d in Applications/Python.app Library/Frameworks/Python.framework; do - msgdo mkdir -p -m 755 $dstPath/$temp/$pkgRoot/$d - msgdo cp -pR /$d/* $dstPath/$temp/$pkgRoot/$d -done - -msgdo mkdir -p -m 755 $dstPath/$temp/$pkgRoot/usr/local/bin -msgdo cd $dstPath/$temp/$pkgRoot/usr/local/bin -for f in pydoc python python$PYVER; do - msgdo ln -s ../../../Library/Frameworks/Python.framework/Versions/Current/bin/$f . -done - -cat > pythonw <<EOF -#!/bin/sh -exec /Applications/Python.app/Contents/MacOS/python \$@ -EOF -chmod +x pythonw -cd $curDir - - -#----------------------------------- -msg Removing locally installed extension modules - -msgdo cd $dstPath/$temp/$sitePkgDir -for f in *; do - if [ $f != README ]; then - msgdo rm -r $f - fi -done -for f in Numeric numarray; do - rm -r $dstPath/$temp/$pkgRoot/Library/Frameworks/Python.framework/Versions/$PYVER/include/python$PYVER/$f -done -cd $curDir - -#----------------------------------- -msg Adjusting ownership and permission - -for d in Applications Library; do - msgdo chown -R root:admin "$dstPath/$temp/$pkgRoot/$d" - msgdo chmod -R g+w "$dstPath/$temp/$pkgRoot/$d" -done -msgdo chown -R root:wheel "$dstPath/$temp/$pkgRoot/usr" - -#----------------------------------- -msg making installer package -msgdo cp -pR "$progDir/resourcesPython" "$dstPath/$temp/" -msgdo mv "$dstPath/$temp/resourcesPython" "$dstPath/$temp/resources" -msgdo cp $progDir/$pkgName.info $progDir/$pkgName-$version.info -msgdo cd "$progDir" -msgdo "$makePkgExec" $dstPath/$temp/$pkgRoot $pkgName-$version.info -d $dstPath/$temp/$dmgRoot -r $dstPath/$temp/resources -msgdo chown -R ${user}:staff $dstPath/$temp/$dmgRoot/$pkgName-$version.pkg -cd $curDir - - -#----------------------------------- -msg making disk image -msgdo cd "$progDir" -msgdo "$makeDmgExec" $dstPath/$temp/$dmgRoot $dstPath/$temp $pkgName-$version -dmgName="$pkgName-$version" -msgdo mv "$dstPath/$temp/$pkgName-$version.dmg" "$dstPath/$dmgName.dmg" -msgdo chown ${user}:staff "$dstPath/$dmgName.dmg" -cd $curDir - - -#----------------------------------- -msg cleaning up -msgdo rm $progDir/$pkgName-$version.info -msgdo rm -rf "$dstPath/$temp" diff --git a/wxPython/distrib/mac/build b/wxPython/distrib/mac/build deleted file mode 100755 index c080de78c1..0000000000 --- a/wxPython/distrib/mac/build +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -e -# -# build binary package and put it on a disk image -# -# usage: build [-s dir] [-d dir] [--cvs-update] [--force] [--debug] -# -# (C)opyright 2002 Frank Vercruesse - - -prog="`dirname \"$0\"`/_`basename \"$0\"`" -sudo "$prog" "${USER?'USER not set.'}" "$@" diff --git a/wxPython/distrib/mac/buildPython b/wxPython/distrib/mac/buildPython deleted file mode 100755 index 1735a89950..0000000000 --- a/wxPython/distrib/mac/buildPython +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -e -# -# build binary package and put it on a disk image -# - - -prog="`dirname \"$0\"`/_`basename \"$0\"`" -sudo "$prog" "${USER?'USER not set.'}" "$@" diff --git a/wxPython/distrib/mac/buildapp.py b/wxPython/distrib/mac/buildapp.py new file mode 100644 index 0000000000..88c6be9f4a --- /dev/null +++ b/wxPython/distrib/mac/buildapp.py @@ -0,0 +1,4 @@ +# Just a simple shell around bundlebuilder. + +from bundlebuilder import buildapp +buildapp() diff --git a/wxPython/distrib/mac/buildpkg.py b/wxPython/distrib/mac/buildpkg.py new file mode 100644 index 0000000000..5aade1ac8e --- /dev/null +++ b/wxPython/distrib/mac/buildpkg.py @@ -0,0 +1,470 @@ +#!/usr/bin/env python + +"""buildpkg.py -- Build OS X packages for Apple's Installer.app. + +This is an experimental command-line tool for building packages to be +installed with the Mac OS X Installer.app application. + +It is much inspired by Apple's GUI tool called PackageMaker.app, that +seems to be part of the OS X developer tools installed in the folder +/Developer/Applications. But apparently there are other free tools to +do the same thing which are also named PackageMaker like Brian Hill's +one: + + http://personalpages.tds.net/~brian_hill/packagemaker.html + +Beware of the multi-package features of Installer.app (which are not +yet supported here) that can potentially screw-up your installation +and are discussed in these articles on Stepwise: + + http://www.stepwise.com/Articles/Technical/Packages/InstallerWoes.html + http://www.stepwise.com/Articles/Technical/Packages/InstallerOnX.html + +Beside using the PackageMaker class directly, by importing it inside +another module, say, there are additional ways of using this module: +the top-level buildPackage() function provides a shortcut to the same +feature and is also called when using this module from the command- +line. + + **************************************************************** + NOTE: For now you should be able to run this even on a non-OS X + system and get something similar to a package, but without + the real archive (needs pax) and bom files (needs mkbom) + inside! This is only for providing a chance for testing to + folks without OS X. + **************************************************************** + +TODO: + - test pre-process and post-process scripts (Python ones?) + - handle multi-volume packages (?) + - integrate into distutils (?) + +Dinu C. Gherman, +gherman@europemail.com +November 2001 + +!! USE AT YOUR OWN RISK !! +""" + +__version__ = 0.2 +__license__ = "FreeBSD" + + +import os, sys, glob, fnmatch, shutil, string, copy, getopt +from os.path import basename, dirname, join, islink, isdir, isfile + +Error = "buildpkg.Error" + +PKG_INFO_FIELDS = """\ +Title +Version +Description +DefaultLocation +Diskname +DeleteWarning +NeedsAuthorization +DisableStop +UseUserMask +Application +Relocatable +Required +InstallOnly +RequiresReboot +RootVolumeOnly +InstallFat\ +""" + +###################################################################### +# Helpers +###################################################################### + +# Convenience class, as suggested by /F. + +class GlobDirectoryWalker: + "A forward iterator that traverses files in a directory tree." + + def __init__(self, directory, pattern="*"): + self.stack = [directory] + self.pattern = pattern + self.files = [] + self.index = 0 + + + def __getitem__(self, index): + while 1: + try: + file = self.files[self.index] + self.index = self.index + 1 + except IndexError: + # pop next directory from stack + self.directory = self.stack.pop() + self.files = os.listdir(self.directory) + self.index = 0 + else: + # got a filename + fullname = join(self.directory, file) + if isdir(fullname) and not islink(fullname): + self.stack.append(fullname) + if fnmatch.fnmatch(file, self.pattern): + return fullname + + +###################################################################### +# The real thing +###################################################################### + +class PackageMaker: + """A class to generate packages for Mac OS X. + + This is intended to create OS X packages (with extension .pkg) + containing archives of arbitrary files that the Installer.app + will be able to handle. + + As of now, PackageMaker instances need to be created with the + title, version and description of the package to be built. + The package is built after calling the instance method + build(root, **options). It has the same name as the constructor's + title argument plus a '.pkg' extension and is located in the same + parent folder that contains the root folder. + + E.g. this will create a package folder /my/space/distutils.pkg/: + + pm = PackageMaker("distutils", "1.0.2", "Python distutils.") + pm.build("/my/space/distutils") + """ + + packageInfoDefaults = { + 'Title': None, + 'Version': None, + 'Description': '', + 'DefaultLocation': '/', + 'Diskname': '(null)', + 'DeleteWarning': '', + 'NeedsAuthorization': 'NO', + 'DisableStop': 'NO', + 'UseUserMask': 'YES', + 'Application': 'NO', + 'Relocatable': 'YES', + 'Required': 'NO', + 'InstallOnly': 'NO', + 'RequiresReboot': 'NO', + 'RootVolumeOnly' : 'NO', + 'InstallFat': 'NO'} + + + def __init__(self, title, version, desc): + "Init. with mandatory title/version/description arguments." + + info = {"Title": title, "Version": version, "Description": desc} + self.packageInfo = copy.deepcopy(self.packageInfoDefaults) + self.packageInfo.update(info) + + # variables set later + self.packageRootFolder = None + self.packageResourceFolder = None + self.sourceFolder = None + self.resourceFolder = None + + + def build(self, root, resources=None, **options): + """Create a package for some given root folder. + + With no 'resources' argument set it is assumed to be the same + as the root directory. Option items replace the default ones + in the package info. + """ + + # set folder attributes + self.sourceFolder = root + if resources == None: + self.resourceFolder = root + else: + self.resourceFolder = resources + + # replace default option settings with user ones if provided + fields = self. packageInfoDefaults.keys() + for k, v in options.items(): + if k in fields: + self.packageInfo[k] = v + elif not k in ["OutputDir"]: + raise Error, "Unknown package option: %s" % k + + # Check where we should leave the output. Default is current directory + outputdir = options.get("OutputDir", os.getcwd()) + packageName = self.packageInfo["Title"] + self.PackageRootFolder = os.path.join(outputdir, packageName + ".pkg") + + # do what needs to be done + self._makeFolders() + self._addInfo() + self._addBom() + self._addArchive() + self._addResources() + self._addSizes() + + + def _makeFolders(self): + "Create package folder structure." + + # Not sure if the package name should contain the version or not... + # packageName = "%s-%s" % (self.packageInfo["Title"], + # self.packageInfo["Version"]) # ?? + + contFolder = join(self.PackageRootFolder, "Contents") + self.packageResourceFolder = join(contFolder, "Resources") + os.mkdir(self.PackageRootFolder) + os.mkdir(contFolder) + os.mkdir(self.packageResourceFolder) + + def _addInfo(self): + "Write .info file containing installing options." + + # Not sure if options in PKG_INFO_FIELDS are complete... + + info = "" + for f in string.split(PKG_INFO_FIELDS, "\n"): + info = info + "%s %%(%s)s\n" % (f, f) + info = info % self.packageInfo + base = self.packageInfo["Title"] + ".info" + path = join(self.packageResourceFolder, base) + f = open(path, "w") + f.write(info) + + + def _addBom(self): + "Write .bom file containing 'Bill of Materials'." + + # Currently ignores if the 'mkbom' tool is not available. + + try: + base = self.packageInfo["Title"] + ".bom" + bomPath = join(self.packageResourceFolder, base) + cmd = "mkbom %s %s" % (self.sourceFolder, bomPath) + res = os.system(cmd) + except: + pass + + + def _addArchive(self): + "Write .pax.gz file, a compressed archive using pax/gzip." + + # Currently ignores if the 'pax' tool is not available. + + cwd = os.getcwd() + + # create archive + os.chdir(self.sourceFolder) + base = basename(self.packageInfo["Title"]) + ".pax" + self.archPath = join(self.packageResourceFolder, base) + cmd = "pax -w -f %s %s" % (self.archPath, ".") + res = os.system(cmd) + + # compress archive + cmd = "gzip %s" % self.archPath + res = os.system(cmd) + os.chdir(cwd) + + + def _addResources(self): + "Add Welcome/ReadMe/License files, .lproj folders and scripts." + + # Currently we just copy everything that matches the allowed + # filenames. So, it's left to Installer.app to deal with the + # same file available in multiple formats... + + if not self.resourceFolder: + return + + # find candidate resource files (txt html rtf rtfd/ or lproj/) + allFiles = [] + for pat in string.split("*.txt *.html *.rtf *.rtfd *.lproj", " "): + pattern = join(self.resourceFolder, pat) + allFiles = allFiles + glob.glob(pattern) + + # find pre-process and post-process scripts + # naming convention: packageName.{pre,post}_{upgrade,install} + # Alternatively the filenames can be {pre,post}_{upgrade,install} + # in which case we prepend the package name + packageName = self.packageInfo["Title"] + for pat in ("*upgrade", "*install", "*flight"): + pattern = join(self.resourceFolder, packageName + pat) + pattern2 = join(self.resourceFolder, pat) + allFiles = allFiles + glob.glob(pattern) + allFiles = allFiles + glob.glob(pattern2) + + # check name patterns + files = [] + for f in allFiles: + for s in ("Welcome", "License", "ReadMe"): + if string.find(basename(f), s) == 0: + files.append((f, f)) + if f[-6:] == ".lproj": + files.append((f, f)) + elif basename(f) in ["pre_upgrade", "pre_install", "post_upgrade", "post_install"]: + files.append((f, packageName+"."+basename(f))) + elif basename(f) in ["preflight", "postflight"]: + files.append((f, f)) + elif f[-8:] == "_upgrade": + files.append((f,f)) + elif f[-8:] == "_install": + files.append((f,f)) + + # copy files + for src, dst in files: + src = basename(src) + dst = basename(dst) + f = join(self.resourceFolder, src) + if isfile(f): + shutil.copy(f, os.path.join(self.packageResourceFolder, dst)) + elif isdir(f): + # special case for .rtfd and .lproj folders... + d = join(self.packageResourceFolder, dst) + os.mkdir(d) + files = GlobDirectoryWalker(f) + for file in files: + shutil.copy(file, d) + + + def _addSizes(self): + "Write .sizes file with info about number and size of files." + + # Not sure if this is correct, but 'installedSize' and + # 'zippedSize' are now in Bytes. Maybe blocks are needed? + # Well, Installer.app doesn't seem to care anyway, saying + # the installation needs 100+ MB... + + numFiles = 0 + installedSize = 0 + zippedSize = 0 + + files = GlobDirectoryWalker(self.sourceFolder) + for f in files: + numFiles = numFiles + 1 + installedSize = installedSize + os.lstat(f)[6] + + try: + zippedSize = os.stat(self.archPath+ ".gz")[6] + except OSError: # ignore error + pass + base = self.packageInfo["Title"] + ".sizes" + f = open(join(self.packageResourceFolder, base), "w") + format = "NumFiles %d\nInstalledSize %d\nCompressedSize %d\n" + f.write(format % (numFiles, installedSize, zippedSize)) + + +# Shortcut function interface + +def buildPackage(*args, **options): + "A Shortcut function for building a package." + + o = options + title, version, desc = o["Title"], o["Version"], o["Description"] + pm = PackageMaker(title, version, desc) + apply(pm.build, list(args), options) + + +###################################################################### +# Tests +###################################################################### + +def test0(): + "Vanilla test for the distutils distribution." + + pm = PackageMaker("distutils2", "1.0.2", "Python distutils package.") + pm.build("/Users/dinu/Desktop/distutils2") + + +def test1(): + "Test for the reportlab distribution with modified options." + + pm = PackageMaker("reportlab", "1.10", + "ReportLab's Open Source PDF toolkit.") + pm.build(root="/Users/dinu/Desktop/reportlab", + DefaultLocation="/Applications/ReportLab", + Relocatable="YES") + +def test2(): + "Shortcut test for the reportlab distribution with modified options." + + buildPackage( + "/Users/dinu/Desktop/reportlab", + Title="reportlab", + Version="1.10", + Description="ReportLab's Open Source PDF toolkit.", + DefaultLocation="/Applications/ReportLab", + Relocatable="YES") + + +###################################################################### +# Command-line interface +###################################################################### + +def printUsage(): + "Print usage message." + + format = "Usage: %s <opts1> [<opts2>] <root> [<resources>]" + print format % basename(sys.argv[0]) + print + print " with arguments:" + print " (mandatory) root: the package root folder" + print " (optional) resources: the package resources folder" + print + print " and options:" + print " (mandatory) opts1:" + mandatoryKeys = string.split("Title Version Description", " ") + for k in mandatoryKeys: + print " --%s" % k + print " (optional) opts2: (with default values)" + + pmDefaults = PackageMaker.packageInfoDefaults + optionalKeys = pmDefaults.keys() + for k in mandatoryKeys: + optionalKeys.remove(k) + optionalKeys.sort() + maxKeyLen = max(map(len, optionalKeys)) + for k in optionalKeys: + format = " --%%s:%s %%s" + format = format % (" " * (maxKeyLen-len(k))) + print format % (k, repr(pmDefaults[k])) + + +def main(): + "Command-line interface." + + shortOpts = "" + keys = PackageMaker.packageInfoDefaults.keys() + longOpts = map(lambda k: k+"=", keys) + + try: + opts, args = getopt.getopt(sys.argv[1:], shortOpts, longOpts) + except getopt.GetoptError, details: + print details + printUsage() + return + + optsDict = {} + for k, v in opts: + optsDict[k[2:]] = v + + ok = optsDict.keys() + if not (1 <= len(args) <= 2): + print "No argument given!" + elif not ("Title" in ok and \ + "Version" in ok and \ + "Description" in ok): + print "Missing mandatory option!" + else: + apply(buildPackage, args, optsDict) + return + + printUsage() + + # sample use: + # buildpkg.py --Title=distutils \ + # --Version=1.0.2 \ + # --Description="Python distutils package." \ + # /Users/dinu/Desktop/distutils + + +if __name__ == "__main__": + main() diff --git a/wxPython/distrib/mac/bundlebuilder.py b/wxPython/distrib/mac/bundlebuilder.py new file mode 100644 index 0000000000..ac810440b5 --- /dev/null +++ b/wxPython/distrib/mac/bundlebuilder.py @@ -0,0 +1,816 @@ +#! /usr/bin/env python + +"""\ +bundlebuilder.py -- Tools to assemble MacOS X (application) bundles. + +This module contains two classes to build so called "bundles" for +MacOS X. BundleBuilder is a general tool, AppBuilder is a subclass +specialized in building application bundles. + +[Bundle|App]Builder objects are instantiated with a bunch of keyword +arguments, and have a build() method that will do all the work. See +the class doc strings for a description of the constructor arguments. + +The module contains a main program that can be used in two ways: + + % python bundlebuilder.py [options] build + % python buildapp.py [options] build + +Where "buildapp.py" is a user-supplied setup.py-like script following +this model: + + from bundlebuilder import buildapp + buildapp(<lots-of-keyword-args>) + +""" + + +__all__ = ["BundleBuilder", "BundleBuilderError", "AppBuilder", "buildapp"] + + +import sys +import os, errno, shutil +import imp, marshal +import re +from copy import deepcopy +import getopt +from plistlib import Plist +from types import FunctionType as function + +class BundleBuilderError(Exception): pass + + +class Defaults: + + """Class attributes that don't start with an underscore and are + not functions or classmethods are (deep)copied to self.__dict__. + This allows for mutable default values. + """ + + def __init__(self, **kwargs): + defaults = self._getDefaults() + defaults.update(kwargs) + self.__dict__.update(defaults) + + def _getDefaults(cls): + defaults = {} + for name, value in cls.__dict__.items(): + if name[0] != "_" and not isinstance(value, + (function, classmethod)): + defaults[name] = deepcopy(value) + for base in cls.__bases__: + if hasattr(base, "_getDefaults"): + defaults.update(base._getDefaults()) + return defaults + _getDefaults = classmethod(_getDefaults) + + +class BundleBuilder(Defaults): + + """BundleBuilder is a barebones class for assembling bundles. It + knows nothing about executables or icons, it only copies files + and creates the PkgInfo and Info.plist files. + """ + + # (Note that Defaults.__init__ (deep)copies these values to + # instance variables. Mutable defaults are therefore safe.) + + # Name of the bundle, with or without extension. + name = None + + # The property list ("plist") + plist = Plist(CFBundleDevelopmentRegion = "English", + CFBundleInfoDictionaryVersion = "6.0") + + # The type of the bundle. + type = "BNDL" + # The creator code of the bundle. + creator = None + + # List of files that have to be copied to <bundle>/Contents/Resources. + resources = [] + + # List of (src, dest) tuples; dest should be a path relative to the bundle + # (eg. "Contents/Resources/MyStuff/SomeFile.ext). + files = [] + + # List of shared libraries (dylibs, Frameworks) to bundle with the app + # will be placed in Contents/Frameworks + libs = [] + + # Directory where the bundle will be assembled. + builddir = "build" + + # Make symlinks instead copying files. This is handy during debugging, but + # makes the bundle non-distributable. + symlink = 0 + + # Verbosity level. + verbosity = 1 + + def setup(self): + # XXX rethink self.name munging, this is brittle. + self.name, ext = os.path.splitext(self.name) + if not ext: + ext = ".bundle" + bundleextension = ext + # misc (derived) attributes + self.bundlepath = pathjoin(self.builddir, self.name + bundleextension) + + plist = self.plist + plist.CFBundleName = self.name + plist.CFBundlePackageType = self.type + if self.creator is None: + if hasattr(plist, "CFBundleSignature"): + self.creator = plist.CFBundleSignature + else: + self.creator = "????" + plist.CFBundleSignature = self.creator + if not hasattr(plist, "CFBundleIdentifier"): + plist.CFBundleIdentifier = self.name + + def build(self): + """Build the bundle.""" + builddir = self.builddir + if builddir and not os.path.exists(builddir): + os.mkdir(builddir) + self.message("Building %s" % repr(self.bundlepath), 1) + if os.path.exists(self.bundlepath): + shutil.rmtree(self.bundlepath) + os.mkdir(self.bundlepath) + self.preProcess() + self._copyFiles() + self._addMetaFiles() + self.postProcess() + self.message("Done.", 1) + + def preProcess(self): + """Hook for subclasses.""" + pass + def postProcess(self): + """Hook for subclasses.""" + pass + + def _addMetaFiles(self): + contents = pathjoin(self.bundlepath, "Contents") + makedirs(contents) + # + # Write Contents/PkgInfo + assert len(self.type) == len(self.creator) == 4, \ + "type and creator must be 4-byte strings." + pkginfo = pathjoin(contents, "PkgInfo") + f = open(pkginfo, "wb") + f.write(self.type + self.creator) + f.close() + # + # Write Contents/Info.plist + infoplist = pathjoin(contents, "Info.plist") + self.plist.write(infoplist) + + def _copyFiles(self): + files = self.files[:] + for path in self.resources: + files.append((path, pathjoin("Contents", "Resources", + os.path.basename(path)))) + for path in self.libs: + files.append((path, pathjoin("Contents", "Frameworks", + os.path.basename(path)))) + if self.symlink: + self.message("Making symbolic links", 1) + msg = "Making symlink from" + else: + self.message("Copying files", 1) + msg = "Copying" + files.sort() + for src, dst in files: + if os.path.isdir(src): + self.message("%s %s/ to %s/" % (msg, src, dst), 2) + else: + self.message("%s %s to %s" % (msg, src, dst), 2) + dst = pathjoin(self.bundlepath, dst) + if self.symlink: + symlink(src, dst, mkdirs=1) + else: + copy(src, dst, mkdirs=1) + + def message(self, msg, level=0): + if level <= self.verbosity: + indent = "" + if level > 1: + indent = (level - 1) * " " + sys.stderr.write(indent + msg + "\n") + + def report(self): + # XXX something decent + pass + + +if __debug__: + PYC_EXT = ".pyc" +else: + PYC_EXT = ".pyo" + +MAGIC = imp.get_magic() +USE_ZIPIMPORT = "zipimport" in sys.builtin_module_names + +# For standalone apps, we have our own minimal site.py. We don't need +# all the cruft of the real site.py. +SITE_PY = """\ +import sys +del sys.path[1:] # sys.path[0] is Contents/Resources/ +""" + +if USE_ZIPIMPORT: + ZIP_ARCHIVE = "Modules.zip" + SITE_PY += "sys.path.append(sys.path[0] + '/%s')\n" % ZIP_ARCHIVE + def getPycData(fullname, code, ispkg): + if ispkg: + fullname += ".__init__" + path = fullname.replace(".", os.sep) + PYC_EXT + return path, MAGIC + '\0\0\0\0' + marshal.dumps(code) + +SITE_CO = compile(SITE_PY, "<-bundlebuilder.py->", "exec") + +# +# Extension modules can't be in the modules zip archive, so a placeholder +# is added instead, that loads the extension from a specified location. +# +EXT_LOADER = """\ +def __load(): + import imp, sys, os + for p in sys.path: + path = os.path.join(p, "%(filename)s") + if os.path.exists(path): + break + else: + assert 0, "file not found: %(filename)s" + mod = imp.load_dynamic("%(name)s", path) + +__load() +del __load +""" + +MAYMISS_MODULES = ['mac', 'os2', 'nt', 'ntpath', 'dos', 'dospath', + 'win32api', 'ce', '_winreg', 'nturl2path', 'sitecustomize', + 'org.python.core', 'riscos', 'riscosenviron', 'riscospath' +] + +STRIP_EXEC = "/usr/bin/strip" + +# +# We're using a stock interpreter to run the app, yet we need +# a way to pass the Python main program to the interpreter. The +# bootstrapping script fires up the interpreter with the right +# arguments. os.execve() is used as OSX doesn't like us to +# start a real new process. Also, the executable name must match +# the CFBundleExecutable value in the Info.plist, so we lie +# deliberately with argv[0]. The actual Python executable is +# passed in an environment variable so we can "repair" +# sys.executable later. +# +BOOTSTRAP_SCRIPT = """\ +#!%(hashbang)s + +import sys, os +execdir = os.path.dirname(sys.argv[0]) +executable = os.path.join(execdir, "%(executable)s") +resdir = os.path.join(os.path.dirname(execdir), "Resources") +libdir = os.path.join(os.path.dirname(execdir), "Frameworks") +mainprogram = os.path.join(resdir, "%(mainprogram)s") + +sys.argv.insert(1, mainprogram) +os.environ["PYTHONPATH"] = resdir +%(pythonhome)s +os.environ["PYTHONEXECUTABLE"] = executable +os.environ["DYLD_LIBRARY_PATH"] = libdir +os.execve(executable, sys.argv, os.environ) +""" + + +# +# Optional wrapper that converts "dropped files" into sys.argv values. +# +ARGV_EMULATOR = """\ +import argvemulator, os + +argvemulator.ArgvCollector().mainloop() +execfile(os.path.join(os.path.split(__file__)[0], "%(realmainprogram)s")) +""" + + +class AppBuilder(BundleBuilder): + + # Override type of the bundle. + type = "APPL" + + # platform, name of the subfolder of Contents that contains the executable. + platform = "MacOS" + + # A Python main program. If this argument is given, the main + # executable in the bundle will be a small wrapper that invokes + # the main program. (XXX Discuss why.) + mainprogram = None + + # The main executable. If a Python main program is specified + # the executable will be copied to Resources and be invoked + # by the wrapper program mentioned above. Otherwise it will + # simply be used as the main executable. + executable = None + + # The name of the main nib, for Cocoa apps. *Must* be specified + # when building a Cocoa app. + nibname = None + + # The name of the icon file to be copied to Resources and used for + # the Finder icon. + iconfile = None + + # Symlink the executable instead of copying it. + symlink_exec = 0 + + # If True, build standalone app. + standalone = 0 + + # If True, add a real main program that emulates sys.argv before calling + # mainprogram + argv_emulation = 0 + + # The following attributes are only used when building a standalone app. + + # Exclude these modules. + excludeModules = [] + + # Include these modules. + includeModules = [] + + # Include these packages. + includePackages = [] + + # Strip binaries. + strip = 0 + + # Found Python modules: [(name, codeobject, ispkg), ...] + pymodules = [] + + # Modules that modulefinder couldn't find: + missingModules = [] + maybeMissingModules = [] + + # List of all binaries (executables or shared libs), for stripping purposes + binaries = [] + + def setup(self): + if self.standalone and self.mainprogram is None: + raise BundleBuilderError, ("must specify 'mainprogram' when " + "building a standalone application.") + if self.mainprogram is None and self.executable is None: + raise BundleBuilderError, ("must specify either or both of " + "'executable' and 'mainprogram'") + + self.execdir = pathjoin("Contents", self.platform) + + if self.name is not None: + pass + elif self.mainprogram is not None: + self.name = os.path.splitext(os.path.basename(self.mainprogram))[0] + elif executable is not None: + self.name = os.path.splitext(os.path.basename(self.executable))[0] + if self.name[-4:] != ".app": + self.name += ".app" + + if self.executable is None: + if not self.standalone: + self.symlink_exec = 1 + self.executable = sys.executable + + if self.nibname: + self.plist.NSMainNibFile = self.nibname + if not hasattr(self.plist, "NSPrincipalClass"): + self.plist.NSPrincipalClass = "NSApplication" + + BundleBuilder.setup(self) + + self.plist.CFBundleExecutable = self.name + + if self.standalone: + self.findDependencies() + + def preProcess(self): + resdir = "Contents/Resources" + if self.executable is not None: + if self.mainprogram is None: + execname = self.name + else: + execname = os.path.basename(self.executable) + execpath = pathjoin(self.execdir, execname) + if not self.symlink_exec: + self.files.append((self.executable, execpath)) + self.binaries.append(execpath) + self.execpath = execpath + + if self.mainprogram is not None: + mainprogram = os.path.basename(self.mainprogram) + self.files.append((self.mainprogram, pathjoin(resdir, mainprogram))) + if self.argv_emulation: + # Change the main program, and create the helper main program (which + # does argv collection and then calls the real main). + # Also update the included modules (if we're creating a standalone + # program) and the plist + realmainprogram = mainprogram + mainprogram = '__argvemulator_' + mainprogram + resdirpath = pathjoin(self.bundlepath, resdir) + mainprogrampath = pathjoin(resdirpath, mainprogram) + makedirs(resdirpath) + open(mainprogrampath, "w").write(ARGV_EMULATOR % locals()) + if self.standalone: + self.includeModules.append("argvemulator") + self.includeModules.append("os") + if not self.plist.has_key("CFBundleDocumentTypes"): + self.plist["CFBundleDocumentTypes"] = [ + { "CFBundleTypeOSTypes" : [ + "****", + "fold", + "disk"], + "CFBundleTypeRole": "Viewer"}] + # Write bootstrap script + executable = os.path.basename(self.executable) + execdir = pathjoin(self.bundlepath, self.execdir) + bootstrappath = pathjoin(execdir, self.name) + makedirs(execdir) + if self.standalone: + # XXX we're screwed when the end user has deleted + # /usr/bin/python + hashbang = "/usr/bin/python" + pythonhome = 'os.environ["PYTHONHOME"] = resdir' + else: + hashbang = sys.executable + while os.path.islink(hashbang): + hashbang = os.readlink(hashbang) + pythonhome = '' + open(bootstrappath, "w").write(BOOTSTRAP_SCRIPT % locals()) + os.chmod(bootstrappath, 0775) + + if self.iconfile is not None: + iconbase = os.path.basename(self.iconfile) + self.plist.CFBundleIconFile = iconbase + self.files.append((self.iconfile, pathjoin(resdir, iconbase))) + + def postProcess(self): + if self.standalone: + self.addPythonModules() + if self.strip and not self.symlink: + self.stripBinaries() + + if self.symlink_exec and self.executable: + self.message("Symlinking executable %s to %s" % (self.executable, + self.execpath), 2) + dst = pathjoin(self.bundlepath, self.execpath) + makedirs(os.path.dirname(dst)) + os.symlink(os.path.abspath(self.executable), dst) + + if self.missingModules or self.maybeMissingModules: + self.reportMissing() + + def addPythonModules(self): + self.message("Adding Python modules", 1) + + if USE_ZIPIMPORT: + # Create a zip file containing all modules as pyc. + import zipfile + relpath = pathjoin("Contents", "Resources", ZIP_ARCHIVE) + abspath = pathjoin(self.bundlepath, relpath) + zf = zipfile.ZipFile(abspath, "w", zipfile.ZIP_DEFLATED) + for name, code, ispkg in self.pymodules: + self.message("Adding Python module %s" % name, 2) + path, pyc = getPycData(name, code, ispkg) + zf.writestr(path, pyc) + zf.close() + # add site.pyc + sitepath = pathjoin(self.bundlepath, "Contents", "Resources", + "site" + PYC_EXT) + writePyc(SITE_CO, sitepath) + else: + # Create individual .pyc files. + for name, code, ispkg in self.pymodules: + if ispkg: + name += ".__init__" + path = name.split(".") + path = pathjoin("Contents", "Resources", *path) + PYC_EXT + + if ispkg: + self.message("Adding Python package %s" % path, 2) + else: + self.message("Adding Python module %s" % path, 2) + + abspath = pathjoin(self.bundlepath, path) + makedirs(os.path.dirname(abspath)) + writePyc(code, abspath) + + def stripBinaries(self): + if not os.path.exists(STRIP_EXEC): + self.message("Error: can't strip binaries: no strip program at " + "%s" % STRIP_EXEC, 0) + else: + self.message("Stripping binaries", 1) + for relpath in self.binaries: + self.message("Stripping %s" % relpath, 2) + abspath = pathjoin(self.bundlepath, relpath) + assert not os.path.islink(abspath) + rv = os.system("%s -S \"%s\"" % (STRIP_EXEC, abspath)) + + def findDependencies(self): + self.message("Finding module dependencies", 1) + import modulefinder + mf = modulefinder.ModuleFinder(excludes=self.excludeModules) + if USE_ZIPIMPORT: + # zipimport imports zlib, must add it manually + mf.import_hook("zlib") + # manually add our own site.py + site = mf.add_module("site") + site.__code__ = SITE_CO + mf.scan_code(SITE_CO, site) + + # warnings.py gets imported implicitly from C + mf.import_hook("warnings") + + includeModules = self.includeModules[:] + for name in self.includePackages: + includeModules.extend(findPackageContents(name).keys()) + for name in includeModules: + try: + mf.import_hook(name) + except ImportError: + self.missingModules.append(name) + + mf.run_script(self.mainprogram) + modules = mf.modules.items() + modules.sort() + for name, mod in modules: + if mod.__file__ and mod.__code__ is None: + # C extension + path = mod.__file__ + filename = os.path.basename(path) + if USE_ZIPIMPORT: + # Python modules are stored in a Zip archive, but put + # extensions in Contents/Resources/.a and add a tiny "loader" + # program in the Zip archive. Due to Thomas Heller. + dstpath = pathjoin("Contents", "Resources", filename) + source = EXT_LOADER % {"name": name, "filename": filename} + code = compile(source, "<dynloader for %s>" % name, "exec") + mod.__code__ = code + else: + # just copy the file + dstpath = name.split(".")[:-1] + [filename] + dstpath = pathjoin("Contents", "Resources", *dstpath) + self.files.append((path, dstpath)) + self.binaries.append(dstpath) + if mod.__code__ is not None: + ispkg = mod.__path__ is not None + if not USE_ZIPIMPORT or name != "site": + # Our site.py is doing the bootstrapping, so we must + # include a real .pyc file if USE_ZIPIMPORT is True. + self.pymodules.append((name, mod.__code__, ispkg)) + + if hasattr(mf, "any_missing_maybe"): + missing, maybe = mf.any_missing_maybe() + else: + missing = mf.any_missing() + maybe = [] + self.missingModules.extend(missing) + self.maybeMissingModules.extend(maybe) + + def reportMissing(self): + missing = [name for name in self.missingModules + if name not in MAYMISS_MODULES] + if self.maybeMissingModules: + maybe = self.maybeMissingModules + else: + maybe = [name for name in missing if "." in name] + missing = [name for name in missing if "." not in name] + missing.sort() + maybe.sort() + if maybe: + self.message("Warning: couldn't find the following submodules:", 1) + self.message(" (Note that these could be false alarms -- " + "it's not always", 1) + self.message(" possible to distinguish between \"from package " + "import submodule\" ", 1) + self.message(" and \"from package import name\")", 1) + for name in maybe: + self.message(" ? " + name, 1) + if missing: + self.message("Warning: couldn't find the following modules:", 1) + for name in missing: + self.message(" ? " + name, 1) + + def report(self): + # XXX something decent + import pprint + pprint.pprint(self.__dict__) + if self.standalone: + self.reportMissing() + +# +# Utilities. +# + +SUFFIXES = [_suf for _suf, _mode, _tp in imp.get_suffixes()] +identifierRE = re.compile(r"[_a-zA-z][_a-zA-Z0-9]*$") + +def findPackageContents(name, searchpath=None): + head = name.split(".")[-1] + if identifierRE.match(head) is None: + return {} + try: + fp, path, (ext, mode, tp) = imp.find_module(head, searchpath) + except ImportError: + return {} + modules = {name: None} + if tp == imp.PKG_DIRECTORY and path: + files = os.listdir(path) + for sub in files: + sub, ext = os.path.splitext(sub) + fullname = name + "." + sub + if sub != "__init__" and fullname not in modules: + modules.update(findPackageContents(fullname, [path])) + return modules + +def writePyc(code, path): + f = open(path, "wb") + f.write(MAGIC) + f.write("\0" * 4) # don't bother about a time stamp + marshal.dump(code, f) + f.close() + +def copy(src, dst, mkdirs=0): + """Copy a file or a directory.""" + if mkdirs: + makedirs(os.path.dirname(dst)) + if os.path.isdir(src): + shutil.copytree(src, dst) + else: + shutil.copy2(src, dst) + +def copytodir(src, dstdir): + """Copy a file or a directory to an existing directory.""" + dst = pathjoin(dstdir, os.path.basename(src)) + copy(src, dst) + +def makedirs(dir): + """Make all directories leading up to 'dir' including the leaf + directory. Don't moan if any path element already exists.""" + try: + os.makedirs(dir) + except OSError, why: + if why.errno != errno.EEXIST: + raise + +def symlink(src, dst, mkdirs=0): + """Copy a file or a directory.""" + if not os.path.exists(src): + raise IOError, "No such file or directory: '%s'" % src + if mkdirs: + makedirs(os.path.dirname(dst)) + os.symlink(os.path.abspath(src), dst) + +def pathjoin(*args): + """Safe wrapper for os.path.join: asserts that all but the first + argument are relative paths.""" + for seg in args[1:]: + assert seg[0] != "/" + return os.path.join(*args) + + +cmdline_doc = """\ +Usage: + python bundlebuilder.py [options] command + python mybuildscript.py [options] command + +Commands: + build build the application + report print a report + +Options: + -b, --builddir=DIR the build directory; defaults to "build" + -n, --name=NAME application name + -r, --resource=FILE extra file or folder to be copied to Resources + -f, --file=SRC:DST extra file or folder to be copied into the bundle; + DST must be a path relative to the bundle root + -e, --executable=FILE the executable to be used + -m, --mainprogram=FILE the Python main program + -a, --argv add a wrapper main program to create sys.argv + -p, --plist=FILE .plist file (default: generate one) + --nib=NAME main nib name + -c, --creator=CCCC 4-char creator code (default: '????') + --iconfile=FILE filename of the icon (an .icns file) to be used + as the Finder icon + -l, --link symlink files/folder instead of copying them + --link-exec symlink the executable instead of copying it + --standalone build a standalone application, which is fully + independent of a Python installation + --lib=FILE shared library or framework to be copied into + the bundle + -x, --exclude=MODULE exclude module (with --standalone) + -i, --include=MODULE include module (with --standalone) + --package=PACKAGE include a whole package (with --standalone) + --strip strip binaries (remove debug info) + -v, --verbose increase verbosity level + -q, --quiet decrease verbosity level + -h, --help print this message +""" + +def usage(msg=None): + if msg: + print msg + print cmdline_doc + sys.exit(1) + +def main(builder=None): + if builder is None: + builder = AppBuilder(verbosity=1) + + shortopts = "b:n:r:f:e:m:c:p:lx:i:hvqa" + longopts = ("builddir=", "name=", "resource=", "file=", "executable=", + "mainprogram=", "creator=", "nib=", "plist=", "link", + "link-exec", "help", "verbose", "quiet", "argv", "standalone", + "exclude=", "include=", "package=", "strip", "iconfile=", + "lib=") + + try: + options, args = getopt.getopt(sys.argv[1:], shortopts, longopts) + except getopt.error: + usage() + + for opt, arg in options: + if opt in ('-b', '--builddir'): + builder.builddir = arg + elif opt in ('-n', '--name'): + builder.name = arg + elif opt in ('-r', '--resource'): + builder.resources.append(arg) + elif opt in ('-f', '--file'): + srcdst = arg.split(':') + if len(srcdst) != 2: + usage("-f or --file argument must be two paths, " + "separated by a colon") + builder.files.append(srcdst) + elif opt in ('-e', '--executable'): + builder.executable = arg + elif opt in ('-m', '--mainprogram'): + builder.mainprogram = arg + elif opt in ('-a', '--argv'): + builder.argv_emulation = 1 + elif opt in ('-c', '--creator'): + builder.creator = arg + elif opt == '--iconfile': + builder.iconfile = arg + elif opt == "--lib": + builder.libs.append(arg) + elif opt == "--nib": + builder.nibname = arg + elif opt in ('-p', '--plist'): + builder.plist = Plist.fromFile(arg) + elif opt in ('-l', '--link'): + builder.symlink = 1 + elif opt == '--link-exec': + builder.symlink_exec = 1 + elif opt in ('-h', '--help'): + usage() + elif opt in ('-v', '--verbose'): + builder.verbosity += 1 + elif opt in ('-q', '--quiet'): + builder.verbosity -= 1 + elif opt == '--standalone': + builder.standalone = 1 + elif opt in ('-x', '--exclude'): + builder.excludeModules.append(arg) + elif opt in ('-i', '--include'): + builder.includeModules.append(arg) + elif opt == '--package': + builder.includePackages.append(arg) + elif opt == '--strip': + builder.strip = 1 + + if len(args) != 1: + usage("Must specify one command ('build', 'report' or 'help')") + command = args[0] + + if command == "build": + builder.setup() + builder.build() + elif command == "report": + builder.setup() + builder.report() + elif command == "help": + usage() + else: + usage("Unknown command '%s'" % command) + + +def buildapp(**kwargs): + builder = AppBuilder(**kwargs) + main(builder) + + +if __name__ == "__main__": + main() diff --git a/wxPython/distrib/mac/makepkg b/wxPython/distrib/mac/makepkg deleted file mode 100755 index 97cbd89e9f..0000000000 --- a/wxPython/distrib/mac/makepkg +++ /dev/null @@ -1,283 +0,0 @@ -#! /bin/csh -ef -# -# original script by Chris Roberts (The OS X Package Manager) -# slightly modified by Frank Vercruesse (mainly fixed quoting issues) - -set prog = `/usr/bin/basename $0` -set usage = "Usage: $prog [-f] root-dir info-file [tiff-file] [-d dest-dir] [-r resource-dir] [-traditional | -gnutar]" -set noglob - -if (-x /usr/bin/mkbom) then - set mkbom=/usr/bin/mkbom - set lsbom=/usr/bin/lsbom -else - set mkbom=/usr/etc/mkbom - set lsbom=/usr/etc/lsbom -endif - -if (-x /usr/bin/awk) then - set awk=/usr/bin/awk -else - set awk=/bin/awk -endif - -set gnutar=/usr/bin/gnutar -set tar=/usr/bin/tar -set pax=/bin/pax - -# gather parameters -if ($#argv == 0) then - echo $usage - exit(1) -endif - -while ( $#argv > 0 ) - switch ( "$argv[1]" ) - case -d: - if ( $?destDir ) then - echo ${prog}: dest-dir parameter already set to ${destDir}. - echo $usage - exit(1) - else if ( $#argv < 2 ) then - echo ${prog}: -d option requires destination directory. - echo $usage - exit(1) - else - set destDir = "$argv[2]" - shift; shift - breaksw - endif - case -f: - if ( $?rootDir ) then - echo ${prog}: root-dir parameter already set to ${rootDir}. - echo $usage - exit(1) - else if ( $#argv < 2 ) then - echo ${prog}: -f option requires package root directory. - echo $usage - exit(1) - else - set rootDir = "$argv[2]" - set fflag - shift; shift - breaksw - endif - case -r: - if ( $?resDir ) then - echo ${prog}: resource-dir parameter already set to ${resDir}. - echo $usage - exit(1) - else if ( $#argv < 2 ) then - echo ${prog}: -r option requires package resource directory. - echo $usage - exit(1) - else - set resDir = "$argv[2]" - shift; shift - breaksw - endif - case -traditional: - set usetar - unset usegnutar - unset usepax - shift - breaksw - case -gnutar: - set usegnutar - unset usepax - unset usetar - shift - breaksw - case -B: - # We got long file names, better use bigtar instead - #set archiver = /NextAdmin/Installer.app/Resources/installer_bigtar - #echo 2>&1 ${prog}: -B flag is longer relevant. - shift - breaksw - case -*: - echo ${prog}: Unknown option: $argv[1] - echo $usage - exit(1) - case *.info: - if ( $?info ) then - echo ${prog}: info-file parameter already set to ${info}. - echo $usage - exit(1) - else - set info = "$argv[1]" - shift - breaksw - endif - case *.tiff: - if ( $?tiff ) then - echo ${prog}: tiff-file parameter already set to ${tiff}. - echo $usage - exit(1) - else - set tiff = "$argv[1]" - shift - breaksw - endif - default: - if ( $?rootDir ) then - echo ${prog}: unrecognized parameter: $argv[1] - echo $usage - exit(1) - else - set rootDir = "$argv[1]" - shift - breaksw - endif - endsw -end - -# check for mandatory parameters -if ( ! $?rootDir ) then - echo ${prog}: missing root-dir parameter. - echo $usage - exit(1) -else if ( ! $?info) then - echo ${prog}: missing info-file parameter. - echo $usage - exit(1) -endif - -# destDir gets default value if unset on command line -if ( $?destDir ) then - /bin/mkdir -p "$destDir" -else - set destDir = . -endif - -# derive the root name for the package from the root name of the info file -set root = `/usr/bin/basename $info .info` - -# create package directory -set pkg = "${destDir}/${root}.pkg" -echo Generating Installer package $pkg ... -if ( -e "$pkg" ) /bin/rm -rf "$pkg" -/bin/mkdir -p -m 755 "$pkg" -/bin/mkdir -p -m 755 "$pkg/Contents" -/bin/mkdir -p -m 755 "$pkg/Contents/Resources" -/bin/mkdir -p -m 755 "$pkg/Contents/Resources/English.lproj/" -echo -n "pmkrpkg1" >"$pkg/Contents/PkgInfo" -chmod 755 "$pkg/Contents/PkgInfo" -# (gnu)tar/pax and compress root directory to package archive -echo -n " creating package archive ... " -if ( $?fflag ) then - set pkgTop = "${rootDir:t}" - set parent = "${rootDir:h}" - if ( "$parent" == "$pkgTop" ) set parent = "." -else - set parent = "$rootDir" - set pkgTop = . -endif -if ( $?usetar ) then - set pkgArchive = "$pkg/Contents/Resources/$root.tar.Z" - (cd "$parent"; $tar -w "$pkgTop") | /usr/bin/tar -f -c > "$pkgArchive" -else if ( $?usegnutar ) then - set pkgArchive = "$pkg/Contents/Resources/$root.tar.gz" - (cd "$parent"; $gnutar zcf "$pkgArchive" "$pkgTop") -else - set pkgArchive = "$pkg/Contents/Resources/$root.pax.gz" - (cd "$parent"; $pax -w -z -x cpio "$pkgTop") > "$pkgArchive" -endif -/bin/chmod 755 "$pkgArchive" -echo done. - -# copy info file to package -set pkgInfo = "$pkg/Contents/Resources/English.lproj/$root.info" -echo -n " copying ${info:t} ... " -/bin/cp $info "$pkgInfo" -/bin/chmod 755 "$pkgInfo" -echo done. - -# copy tiff file to package -if ( $?tiff ) then - set pkgTiff = "$pkg/$root.tiff" - echo -n " copying ${tiff:t} ... " - /bin/cp $tiff "$pkgTiff" - /bin/chmod 444 "$pkgTiff" - echo done. -endif - -# copy resources to package -if ( $?resDir ) then - echo -n " copying ${resDir:t} ... " - - # don't want to see push/pop output - pushd "$resDir" > /dev/null - # get lists of resources. We'll want to change - # permissions on just these things later. - set directoriesInResDir = `find . -type d` - set filesInResDir = `find . -type f` - popd > /dev/null - - # copy the resource directory contents into the package directory - foreach resFile (`ls "$resDir"`) - cp -r "$resDir/$resFile" "$pkg/Contents/Resources" - end - - pushd "$pkg/Contents/Resources" > /dev/null - # Change all directories to +r+x, except the package - # directory itself - foreach resFileItem ($directoriesInResDir) - if ( "$resFileItem" != "." ) then - chmod 755 $resFileItem - endif - end - # change all flat files to read only - foreach resFileItem ($filesInResDir) - if ( "$resFileItem" != "./.DS_Store" ) then - chmod 755 $resFileItem - endif - end - popd > /dev/null - - echo done. -endif - -# generate bom file -set pkgBom = "$pkg/Contents/Resources/$root.bom" -echo -n " generating bom file ... " -/bin/rm -f "$pkgBom" -if ( $?fflag ) then - $mkbom "$parent" "$pkgBom" >& /dev/null -else - $mkbom "$rootDir" "$pkgBom" >& /dev/null -endif -/bin/chmod 444 "$pkgArchive" -echo done. - -# generate sizes file -set pkgSizes = "$pkg/Contents/Resources/$root.sizes" -echo -n " generating sizes file ... " - -# compute number of files in package -set numFiles = `$lsbom -s "$pkgBom" | /usr/bin/wc -l` - -# compute package size when compressed -@ compressedSize = `/usr/bin/du -k -s "$pkg" | $awk '{print $1}'` -@ compressedSize += 3 # add 1KB each for sizes, location, status files - -@ infoSize = `/bin/ls -s "$pkgInfo" | $awk '{print $1}'` -@ bomSize = `/bin/ls -s "$pkgBom" | $awk '{print $1}'` -if ( $?tiff ) then - @ tiffSize = `/bin/ls -s "$pkgTiff" | $awk '{print $1}'` -else - @ tiffSize = 0 -endif - -@ installedSize = `/usr/bin/du -k -s "$rootDir" | $awk '{print $1}'` -@ installedSize += $infoSize + $bomSize + $tiffSize + 3 - -# echo size parameters to sizes file -echo NumFiles $numFiles > "$pkgSizes" -echo InstalledSize $installedSize >> "$pkgSizes" -echo CompressedSize $compressedSize >> "$pkgSizes" -echo done. -echo " ... finished generating $pkg." - -exit(0) - -# end package diff --git a/wxPython/distrib/mac/resources/Welcome.txt b/wxPython/distrib/mac/resources/Welcome.txt deleted file mode 100644 index e981f01c24..0000000000 --- a/wxPython/distrib/mac/resources/Welcome.txt +++ /dev/null @@ -1,2 +0,0 @@ -You will be guided through the steps necessary to install wxPython 2.3.3pre (including wxMac) for MachoPython 2.2.x on Mac OS X 10.1 or later. - diff --git a/wxPython/distrib/mac/resources/preflight b/wxPython/distrib/mac/resources/preflight deleted file mode 100755 index bdb5d0110f..0000000000 --- a/wxPython/distrib/mac/resources/preflight +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -/usr/bin/sudo -u $USER /bin/rm -rf \ - $2/Library/Frameworks/Python.framework/Versions/2.2/lib/python2.2/site-packages/wxPython \ - -# $2/usr/local/bin/wx* \ -# $2/usr/local/include/wx \ -# $2/usr/local/lib/wx \ -# $2/usr/local/lib/libwx* - -exit 0 diff --git a/wxPython/distrib/mac/resourcesPython/License.rtf b/wxPython/distrib/mac/resourcesPython/License.rtf deleted file mode 100644 index 99731771f4..0000000000 --- a/wxPython/distrib/mac/resourcesPython/License.rtf +++ /dev/null @@ -1,25 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf100 -{\fonttbl\f0\fnil\fcharset77 Monaco;} -{\colortbl;\red255\green255\blue255;} -\margl1440\margr1440\vieww15640\viewh10560\viewkind0 -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\fs24 \cf0 PSF LICENSE AGREEMENT FOR PYTHON 2.2.1\ ---------------------------------------\ -\ -1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 2.2.1 software in source or binary form and its associated documentation.\ -\ -2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 2.2.1 alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002 Python Software Foundation; All Rights Reserved" are retained in Python 2.2.1 alone or in any derivative version prepared by Licensee.\ -\ -3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.2.1 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 2.2.1.\ -\ -4. PSF is making Python 2.2.1 available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.2.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\ -\ -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.2.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.2.1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\ -\ -6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\ -\ -7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\ -\ -8. By copying, installing or otherwise using Python 2.2.1, Licensee agrees to be bound by the terms and conditions of this License Agreement.\ -} \ No newline at end of file diff --git a/wxPython/distrib/mac/resourcesPython/ReadMe.rtf b/wxPython/distrib/mac/resourcesPython/ReadMe.rtf deleted file mode 100644 index 4e9c27c25d..0000000000 --- a/wxPython/distrib/mac/resourcesPython/ReadMe.rtf +++ /dev/null @@ -1,91 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf100 -{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Monaco; -} -{\colortbl;\red255\green255\blue255;\red0\green0\blue255;} -\margl1440\margr1440\vieww10820\viewh9000\viewkind0 -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\b\fs24 \cf0 About\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b0 \cf0 \ -This is a Mach-O binary package of Python 2.2.1 (a.k.a. MachoPython) for Mac OS X 10.1 or later. \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\b \cf0 What files will be installed and where?\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b0 \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2 \cf0 /Applications\ -\ - + Python.app -\fs20 (a double-clickable interpreter)\ -\ - -\fs24 /Library/Frameworks\ -\ - + Python.framework -\fs20 (library, headers, tools, etc.)\ -\ - -\fs24 /usr/local/bin\ - \ - + pydoc -\fs20 (symbolic link to the pydoc script) -\fs24 \ - + python -\fs20 (symbolic link to the actual binary inside the framework)\ - -\fs24 + python2.2 -\fs20 (symbolic link to the actual binary inside the framework)\ - -\fs24 + pythonw -\fs20 (a script that can run a GUI app from the command line)\ - -\f1\fs24 \ -\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\b \cf0 Getting started with Python -\f1\b0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2 \cf2 http://www.python.org\cf0 \ -\cf2 \ - http://www.python.org/sigs/pythonmac-sig\cf0 \ -\cf2 \ - http://www.cwi.nl/~jack/macpython.html -\f1 \cf0 \ -\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\b \cf0 Credits\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b0 \cf0 \ -Python itself is\ -\ -Copyright (c) 2001, 2002 Python Software Foundation; All Rights Reserved\ -\ -This binary package was compiled using the build instructions from Jack Jansen and Tony Lownds as found on the net.\ -\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\b \cf0 Disclaimer -\f1\b0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2 \cf0 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -\f1 \ -\ -\ -Packaged by Robin Dunn\ -} \ No newline at end of file diff --git a/wxPython/distrib/mac/resourcesPython/Welcome.txt b/wxPython/distrib/mac/resourcesPython/Welcome.txt deleted file mode 100644 index 77b3eca84e..0000000000 --- a/wxPython/distrib/mac/resourcesPython/Welcome.txt +++ /dev/null @@ -1,2 +0,0 @@ -Mach-O Python 2.2.1 binary package for Mac OS X 10.1 or later. - diff --git a/wxPython/distrib/mac/wxPythonOSX.info b/wxPython/distrib/mac/wxPythonOSX.info deleted file mode 100644 index 662b153096..0000000000 --- a/wxPython/distrib/mac/wxPythonOSX.info +++ /dev/null @@ -1,15 +0,0 @@ -Title wxPythonOSX -Version 2.3.3 -Description wxMac and wxPython for OSX -DefaultLocation / -DeleteWarning - -### Package Flags - -NeedsAuthorization YES -Required NO -Relocatable NO -RequiresReboot NO -UseUserMask NO -OverwritePermissions NO -InstallFat NO diff --git a/wxPython/distrib/mac/wxPythonOSX/.cvsignore b/wxPython/distrib/mac/wxPythonOSX/.cvsignore new file mode 100644 index 0000000000..e43b0f9889 --- /dev/null +++ b/wxPython/distrib/mac/wxPythonOSX/.cvsignore @@ -0,0 +1 @@ +.DS_Store diff --git a/wxPython/distrib/mac/wxPythonOSX/PieShell.icns b/wxPython/distrib/mac/wxPythonOSX/PieShell.icns new file mode 100644 index 0000000000..afc8c3f5c3 Binary files /dev/null and b/wxPython/distrib/mac/wxPythonOSX/PieShell.icns differ diff --git a/wxPython/distrib/mac/wxPythonOSX/RunDemo.icns b/wxPython/distrib/mac/wxPythonOSX/RunDemo.icns new file mode 100644 index 0000000000..82a8814430 Binary files /dev/null and b/wxPython/distrib/mac/wxPythonOSX/RunDemo.icns differ diff --git a/wxPython/distrib/mac/wxPythonOSX/XRCed.icns b/wxPython/distrib/mac/wxPythonOSX/XRCed.icns new file mode 100644 index 0000000000..ffe1737dae Binary files /dev/null and b/wxPython/distrib/mac/wxPythonOSX/XRCed.icns differ diff --git a/wxPython/distrib/mac/wxPythonOSX/build b/wxPython/distrib/mac/wxPythonOSX/build new file mode 100755 index 0000000000..6fca6f4226 --- /dev/null +++ b/wxPython/distrib/mac/wxPythonOSX/build @@ -0,0 +1,390 @@ +#!/bin/sh -e +#---------------------------------------------------------------------- +# Build wxMac and wxPythonOSX from the tarball and then make an +# Installer package out of it. + +spectemplate=distrib/wxPythonFull.spec.in + +if [ ! -d wxPython -o ! -e ${spectemplate} ]; then + echo "Please run this script from the root wxPython directory." + exit 1 +fi + +#---------------------------------------------------------------------- +# Check Parameters + +function usage { + echo "" + echo "Usage: $0 wx_version py_version [command flags...]" + echo " wx_version String to use for version in filenames, etc." + echo " py_version String to append to python (which python version to use.)" + echo "" + echo "command flags:" + echo " skiptar Don't unpack the tarball" + echo " use_cvs Use the CVS workspace instead of a tarfile" + echo " skipconfig Don't run configure" + echo " skipbuild Don't build wxWindows or wxPython" + echo " skipinstall Don't do the installation step" + echo " skipdmg Don't make the package or diskimage" + echo " skipclean Don't do the cleanup at the end" +} + + +if [ $# -lt 2 ]; then + usage + exit 1 +fi + +VERSION=$1 +PYVER=$2 +shift;shift + + +for flag in $*; do + case ${flag} in + skiptar) skiptar=1 ;; + use_cvs) skiptar=1; use_cvs=1 ;; + skipconfig) skipconfig=1; skiptar=1 ;; + skipbuild) skipbuild=1; skipconfig=1; skiptar=1 ;; + skipinstall) skipinstall=1 ;; + skipdmg) skipdmg=1 ;; + skipclean) skipclean=1 ;; + + *) echo "Unknown flag \"${flag}\"" + usage + exit 1 + esac +done + + +SRCDIR=/Volumes/Gate.Stuff/Development/wxPython/dist/$VERSION +TARBALL=$SRCDIR/wxPythonSrc-$VERSION.tar.gz +SITEPACKAGES=/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages + +# TODO: Should I change the prefix to /usr? +PREFIX=/usr/local + +PROGDIR="`dirname \"$0\"`" +TMPDIR=$PWD/_build_dmg + +BUILDROOT=$TMPDIR/build +INSTALLROOT=$TMPDIR/install +INSTALLDEVEL=$TMPDIR/install-devel +DMGDIR=$TMPDIR/dmg +RESOURCEDIR=$PROGDIR/resources +DESTDIR=$PWD/dist + + + +#---------------------------------------------------------------------- +# Setup builddirs + +mkdir -p $BUILDROOT +mkdir -p $INSTALLROOT +mkdir -p $INSTALLDEVEL +rm -rf $DMGDIR +mkdir -p $DMGDIR/root + +pushd $BUILDROOT + + +#---------------------------------------------------------------------- +# Unpack the tarball + +if [ -z "$skiptar" ]; then + tar xzvf $TARBALL +fi + +if [ "$use_cvs" = 1 ]; then + # copy the cvs workspace, except for build dirs + + mkdir -p wxPythonSrc-$VERSION + + echo Finding updated files... + if [ -e .last_copy ]; then + FEXPR="-cnewer .last_copy" + fi + find /projects/wx $FEXPR -print \ + | grep -v wx/build \ + | grep -v wxPython/build \ + | grep -v wxPython/_build \ + | grep -v CVS \ + | cut -b 14- > filelist + + for x in `cat filelist`; do + if [ -d "/projects/wx/$x" ]; then + mkdir -p "wxPythonSrc-$VERSION/$x" + else + echo $x + cp -p "/projects/wx/$x" "wxPythonSrc-$VERSION/$x" + fi + done + + touch .last_copy +fi + + +cd wxPythonSrc-$VERSION +WXDIR=`pwd` +mkdir -p $WXDIR/build +cd $WXDIR/build + +#---------------------------------------------------------------------- + + +# Configure wxWindows +if [ -z "$skipconfig" ]; then + ../configure --with-mac --prefix=$PREFIX \ + --with-opengl \ + --enable-precomp=no \ + --enable-geometry \ + --enable-optimise \ + --enable-debug_flag \ + --with-libjpeg=builtin \ + --with-libpng=builtin \ + --with-libtiff=builtin \ + --with-zlib=builtin + +fi + +# Build wxWindows and wxPython +if [ -z "$skipbuild" ]; then + make + + cd $WXDIR/wxPython + python$PYVER setup.py \ + IN_CVS_TREE=1 \ + WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \ + build + + + # Build wxrc (XRC resource tool) but don't use the makefiles since they expect + # a shared version of the xrc lib to have been built... + cd $WXDIR/contrib/utils/wxrc + WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" + wCC=`$WX_CONFIG --cc` + wCXX=`$WX_CONFIG --cxx` + + for f in wxrc.cpp ../../src/xrc/*.cpp; do + echo $f + $wCXX `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f + done + for f in ../../src/xrc/expat/xmlparse/xmlparse.c ../../src/xrc/expat/xmltok/xmlrole.c ../../src/xrc/expat/xmltok/xmltok.c; do + echo $f + $wCC `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f + done + + # the handlers are not needed + rm xh_*.o xmlrsall.o + + $wCXX `$WX_CONFIG --libs` *.o -o wxrc + strip wxrc + +fi + +#---------------------------------------------------------------------- +# Install wxWindows + +if [ -z "$skipinstall" ]; then + cd $WXDIR/build + make prefix=$INSTALLROOT/$PREFIX install + + + # and wxPython + cd $WXDIR/wxPython + python$PYVER setup.py \ + IN_CVS_TREE=1 \ + WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \ + install \ + --root=$INSTALLROOT + + # install wxPython's tool scripts + cd $WXDIR/wxPython/scripts + python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin + + # Install wxrc + cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin + + + # Move wxWindows devel files and save for a separate installer package + mkdir -p $INSTALLDEVEL$PREFIX + mkdir -p $INSTALLDEVEL$PREFIX/bin + mkdir -p $INSTALLDEVEL$PREFIX/lib + mv -f $INSTALLROOT$PREFIX/include $INSTALLDEVEL$PREFIX + mv -f $INSTALLROOT$PREFIX/lib/wx $INSTALLDEVEL$PREFIX/lib + mv -f $INSTALLROOT$PREFIX/bin/wx* $INSTALLDEVEL$PREFIX/bin + +fi + +popd + +#---------------------------------------------------------------------- + +# Make the Installer packages and disk image +if [ -z "$skipdmg" ]; then + + # Remove the .pyc/.pyo files they just take up space and can be recreated + # during the install. + python $PROGDIR/../zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework + + # Copy the demo, samples, and such to the Applications dir + APPDIR=$INSTALLROOT/Applications/wxPythonOSX-$VERSION + mkdir -p $APPDIR + cp -pR $WXDIR/wxPython/demo $APPDIR + cp -pR $WXDIR/wxPython/samples $APPDIR + + # Move sample launchers to .pyw files. + # TODO: A better, more automated way to do this!!! + pushd $APPDIR/samples + for x in StyleEditor/STCStyleEditor \ + doodle/superdoodle \ + frogedit/FrogEdit \ + pySketch/pySketch \ + wxProject/wxProject; do + mv $x.py $x.pyw + done + popd + + # Make an app to launch the demo + cat > $APPDIR/demo/RunDemo.pyw <<EOF +import sys, os +sys.path.insert(0, "/Applications/wxPythonOSX-$VERSION/demo") +os.chdir("/Applications/wxPythonOSX-$VERSION/demo") +import Main +Main.main() +EOF + pythonw $PROGDIR/../buildapp.py \ + --builddir=$APPDIR \ + --name=RunDemo \ + --mainprogram=$APPDIR/demo/RunDemo.pyw \ + --iconfile=$PROGDIR/RunDemo.icns \ + build + + # Make an app to launch PyShell + pythonw $PROGDIR/../buildapp.py \ + --builddir=$APPDIR \ + --name=PyShell \ + --mainprogram=$INSTALLROOT$PREFIX/bin/pyshell.py \ + --iconfile=$PROGDIR/PieShell.icns \ + build + + # Make an app to launch XRCed + pythonw $PROGDIR/../buildapp.py \ + --builddir=$APPDIR \ + --name=XRCed \ + --mainprogram=$INSTALLROOT$PREFIX/bin/xrced.py \ + --iconfile=$PROGDIR/XRCed.icns \ + build + + + # Make the welcome message + cat > $RESOURCEDIR/Welcome.txt <<EOF +Welcome! + +This program will install wxPython $VERSION for MacPython-OSX $PYVER. + +Build date: `date` +EOF + + # make the preflight script + cat > $RESOURCEDIR/preflight <<EOF +#!/bin/sh +# Cleanup any old install of the wxPython package +rm -rf \$2$SITEPACKAGES/wxPython +exit 0 +EOF + chmod +x $RESOURCEDIR/preflight + + # make the postflight script + cat > $RESOURCEDIR/postflight <<EOF +#!/bin/sh -e +# Compile the .py files in the wxPython pacakge +/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython +/usr/local/bin/python -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython + +# and in the demo +/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py /Applications/wxPythonOSX-$VERSION/demo + +# Make the demo/data dir writable +chmod a+w /Applications/wxPythonOSX-$VERSION/demo/data + +# and the wxPython pacakge should be group writable +chgrp -R admin \$2$SITEPACKAGES/wxPython +chgrp -R admin /Applications/wxPythonOSX-$VERSION +chmod -R g+w \$2$SITEPACKAGES/wxPython +chmod -R g+w /Applications/wxPythonOSX-$VERSION + +exit 0 +EOF + chmod +x $RESOURCEDIR/postflight + + + + # Finally, build the main package... + rm -rf wxPythonOSX.pkg + python $PROGDIR/../buildpkg.py \ + --Title=wxPythonOSX \ + --Version=$VERSION \ + --Description="wxPython $VERSION for MacPython-OSX $PYVER" \ + --NeedsAuthorization="YES" \ + --Relocatable="NO" \ + --InstallOnly="YES" \ + $INSTALLROOT \ + $RESOURCEDIR + + mv wxPythonOSX.pkg $DMGDIR/root + + + # and the devel package + rm -rf wxPythonOSX-devel.pkg + python $PROGDIR/../buildpkg.py \ + --Title=wxPythonOSX-devel \ + --Version=$VERSION \ + --Description="Headers and such that allow you to link with the same wxMac that wxPython does" \ + --NeedsAuthorization="YES" \ + --Relocatable="NO" \ + --InstallOnly="YES" \ + $INSTALLROOT + + mv wxPythonOSX-devel.pkg $DMGDIR/root + + + # Make a README.txt to go on the disk image + cat > $DMGDIR/root/README.txt <<EOF +The files on this disk image are Installer packages for wxPythonOSX +$VERSION for MacPython-OSX $PVER. You must already have MacPython-OSX +installed. + +The wxPython extension modules, library, demo and samples are +contained in the wxPythonOSX package. You should install at least this +package to use wxPython. + +If you have any need to create applicaitons or extension modules that +link with the same wxMac that wxPython does, then you can also install +the wxPythonOSX-devel package to get the necessary header files and +such. Otherwise you don't need it. + +Happy Hacking! +EOF + + + # license files, etc. + cp -pR $WXDIR/wxPython/licence $DMGDIR/root + cp $WXDIR/wxPython/CHANGES.txt $DMGDIR/root + + # and then finally make a disk image containing the packages and etc. + $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-py$PYVER + + echo Moving $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg to $DESTDIR + mv $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg $DESTDIR +fi + + +# Cleanup build/install dirs +if [ -z "$skipclean" ]; then + echo "Cleaning up..." + rm -rf $TMPDIR +else + echo "Cleanup is disabled. You should remove $TMPDIR when finished" +fi + diff --git a/wxPython/distrib/mac/resources/License.rtf b/wxPython/distrib/mac/wxPythonOSX/resources/License.rtf similarity index 100% rename from wxPython/distrib/mac/resources/License.rtf rename to wxPython/distrib/mac/wxPythonOSX/resources/License.rtf diff --git a/wxPython/distrib/mac/resources/ReadMe.rtf b/wxPython/distrib/mac/wxPythonOSX/resources/ReadMe.rtf similarity index 70% rename from wxPython/distrib/mac/resources/ReadMe.rtf rename to wxPython/distrib/mac/wxPythonOSX/resources/ReadMe.rtf index 53b83c1089..ee8c394913 100644 --- a/wxPython/distrib/mac/resources/ReadMe.rtf +++ b/wxPython/distrib/mac/wxPythonOSX/resources/ReadMe.rtf @@ -1,17 +1,17 @@ -{\rtf1\mac\ansicpg10000\cocoartf100 +{\rtf1\mac\ansicpg10000\cocoartf102 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Monaco; \f3\fnil\fcharset77 LucidaGrande;} {\colortbl;\red255\green255\blue255;\red0\green0\blue255;} -\margl1440\margr1440\vieww10820\viewh9000\viewkind0 +\margl1440\margr1440\vieww11800\viewh14740\viewkind0 \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f0\b\fs24 \cf0 About\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f1\b0 \cf0 \ -This is a binary package of wxPython for MachoPython 2.2.x on Mac OS X 10.1 or later. The wxMac binaries will be installed as well. MachoPython, however, is not included with this package, but is also required to run wxPython. Before you continue you should have already installed the MachoPython framework.\ +This is a binary package of wxPython for MacPython on Mac OS X 10.2 or later. The wxMac binaries will be installed as well. MacPython-OSX, however, is not included with this package, but is also required to run wxPython. Before you continue you should have already installed the MacPython-OSX framework.\ \ -Please note that the Mac OS ports of wxPython as well as wxWindows (a.k.a. wxMac) are works-in-progress. Report bugs via SourceForge [1] or discuss the problem on the mailing list(s) in question (see below).\ +Please note that the Mac OS ports of wxPython as well as wxWindows (a.k.a. wxMac) are works-in-progress. Report bugs via SourceForge [1] or discuss the problem on the mailing list(s) related to your questions (see below).\ \ \fs18 [1] \cf2 http://sf.net/tracker/?atid=109863&group_id=9863 @@ -24,11 +24,11 @@ Please note that the Mac OS ports of wxPython as well as wxWindows (a.k.a. wxMac \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f1\b0 \cf0 \ -wxMac goes into +wxMac goes into \f2 /usr/local -\f1 and wxPython will be installed into the appropriate subfolder of the Python framework. Choose the +\f1 and wxPython will be installed into the appropriate subfolder of the Python framework. Choose the \f3 Show files -\f1 command from the +\f1 command from the \f3 File \f1 menu for a complete file listing. (The menu item becomes available as soon as the license agreement is accepted in the next step.) \f2 \ @@ -40,9 +40,9 @@ wxMac goes into \f0\b \cf0 Getting started with wxPython \f1\b0 \ \ -You can verify that wxPython was succesfully installed by running the demo. It resides on the same disk image where you found this package. Just double click the script named +You can verify that wxPython was succesfully installed by running the demo. It resides on the same disk image where you found this package. Just double click the script named \f2 demo.py -\f1 or drag and drop it onto the Python interpreter in your +\f1 or drag and drop it onto the Python interpreter in your \f2 Application \f1 folder.\ \ @@ -50,24 +50,19 @@ The official wxPython site:\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2 \cf2 http://www.wxpython.org\cf0 \ +\f2 \cf2 http://wxPython.org\cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f1 \cf0 \ -Some mailing lists you may want to subscribe to:\ +The best way to get help with wxWindows and wxPython is to subscribe to the mail lists and post questions there. You can see info about the mail lists, including how to subscribe, at this website:\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2 \cf2 http://lists.wxwindows.org/mailman/listinfo/wxpython-users\ +\f2 \cf2 http://wxPython.org/maillist.php\ \ - http://lists.wxwindows.org/mailman/listinfo/wxpython-mac\ -\ - http://lists.wxwindows.org/mailman/listinfo/wx-users\ -\ - http://lists.wxwindows.org/mailman/listinfo/wx-dev +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + \f1 \cf0 \ -\ -\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f0\b \cf0 Disclaimer @@ -80,5 +75,5 @@ Some mailing lists you may want to subscribe to:\ \ \ Robin Dunn\ -Frank Vercruesse\ +\ } \ No newline at end of file diff --git a/wxPython/distrib/mac/wxPythonOSX/resources/Welcome.txt b/wxPython/distrib/mac/wxPythonOSX/resources/Welcome.txt new file mode 100644 index 0000000000..db55898478 --- /dev/null +++ b/wxPython/distrib/mac/wxPythonOSX/resources/Welcome.txt @@ -0,0 +1,5 @@ +Welcome! + +This program will install wxPython 2.4.0.7 for MacPython-OSX 2.3. + +Build date: Fri Mar 21 14:00:06 PST 2003 diff --git a/wxPython/distrib/mac/wxPythonOSX/resources/postflight b/wxPython/distrib/mac/wxPythonOSX/resources/postflight new file mode 100755 index 0000000000..915d404aef --- /dev/null +++ b/wxPython/distrib/mac/wxPythonOSX/resources/postflight @@ -0,0 +1,18 @@ +#!/bin/sh -e +# Compile the .py files in the wxPython pacakge +/usr/local/bin/python $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/../compileall.py $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/wxPython +/usr/local/bin/python -O $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/../compileall.py $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/wxPython + +# and in the demo +/usr/local/bin/python $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/../compileall.py /Applications/wxPythonOSX-2.4.0.7/demo + +# Make the demo/data dir writable +chmod a+w /Applications/wxPythonOSX-2.4.0.7/demo/data + +# and the wxPython pacakge should be group writable +chgrp -R admin $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/wxPython +chgrp -R admin /Applications/wxPythonOSX-2.4.0.7 +chmod -R g+w $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/wxPython +chmod -R g+w /Applications/wxPythonOSX-2.4.0.7 + +exit 0 diff --git a/wxPython/distrib/mac/wxPythonOSX/resources/preflight b/wxPython/distrib/mac/wxPythonOSX/resources/preflight new file mode 100755 index 0000000000..79d6bf26fb --- /dev/null +++ b/wxPython/distrib/mac/wxPythonOSX/resources/preflight @@ -0,0 +1,4 @@ +#!/bin/sh +# Cleanup any old install of the wxPython package +rm -rf $2/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/wxPython +exit 0 diff --git a/wxPython/distrib/mac/zappycfiles.py b/wxPython/distrib/mac/zappycfiles.py new file mode 100644 index 0000000000..dcd41334c6 --- /dev/null +++ b/wxPython/distrib/mac/zappycfiles.py @@ -0,0 +1,38 @@ +#!/usr/local/bin/python +"""Recursively zap all .pyc and .pyo files""" +import os +import sys + +# set doit true to actually delete files +# set doit false to just print what would be deleted +doit = 1 + +def main(): + if not sys.argv[1:]: + if os.name == 'mac': + import macfs + fss, ok = macfs.GetDirectory('Directory to zap pyc files in') + if not ok: + sys.exit(0) + dir = fss.as_pathname() + zappyc(dir) + else: + print 'Usage: zappyc dir ...' + sys.exit(1) + for dir in sys.argv[1:]: + zappyc(dir) + +def zappyc(dir): + os.path.walk(dir, walker, None) + +def walker(dummy, top, names): + for name in names: + if name[-4:] in ('.pyc', '.pyo'): + path = os.path.join(top, name) + print 'Zapping', path + if doit: + os.unlink(path) + +if __name__ == '__main__': + main() + diff --git a/wxPython/distrib/make_installer.py b/wxPython/distrib/make_installer.py index 3b77adba35..6aa2b83421 100644 --- a/wxPython/distrib/make_installer.py +++ b/wxPython/distrib/make_installer.py @@ -7,7 +7,7 @@ will be created. """ -import sys, os, string +import sys, os, time KEEP_TEMPS = 0 ISCC = r"%s\InnoSetup2Ex\ISCC.exe %s" @@ -21,7 +21,7 @@ ISS_Template = r''' AppName = wxPython AppVerName = wxPython %(VERSION)s for Python %(PYTHONVER)s OutputBaseFilename = wxPythonWIN32-%(VERSION)s-%(PYVER)s -AppCopyright = Copyright © 2002 Total Control Software +AppCopyright = Copyright © 2003 Total Control Software DefaultDirName = {code:GetInstallDir|c:\DoNotInstallHere} DefaultGroupName = wxPython %(SHORTVER)s for Python %(PYTHONVER)s AlwaysCreateUninstallIcon = yes @@ -32,12 +32,12 @@ OutputDir = dist WizardStyle = modern UninstallStyle = modern DisableStartupPrompt = true -CompressLevel = 9 +Compression = bzip DirExistsWarning = no DisableReadyMemo = true DisableReadyPage = true ;;DisableDirPage = true -DisableProgramGroupPage = true +DisableProgramGroupPage = no DisableAppendDir = true UsePreviousAppDir = no UsePreviousGroup = no @@ -47,6 +47,8 @@ AppPublisherURL = http://wxPython.org/ LicenseFile = licence\licence.txt CodeFile = %(IFSFILE)s +;; WizardDebug = yes + ;;------------------------------------------------------------ ;;[Dirs] @@ -72,7 +74,6 @@ Source: "%(SYSDIR)s\MSVCP60.dll"; DestDir: "{sys}"; CopyMode: alwayssk Source: "%(WXDIR)s\lib\%(WXDLL)s"; DestDir: "{app}\wxPython"; Components: core %(MSLU)s Source: "wxPython\wxc.pyd"; DestDir: "{app}\wxPython"; Components: core -Source: "wxPython\wxc.pyd.manifest"; DestDir: "{app}\wxPython"; Components: core Source: "wxPython\gridc.pyd"; DestDir: "{app}\wxPython"; Components: core Source: "wxPython\helpc.pyd"; DestDir: "{app}\wxPython"; Components: core Source: "wxPython\htmlc.pyd"; DestDir: "{app}\wxPython"; Components: core @@ -95,6 +96,10 @@ Source: "wxPython\lib\mixins\*.py"; DestDir: "{app}\wxPython\lib\mixins" Source: "wxPython\lib\PyCrust\*.py"; DestDir: "{app}\wxPython\lib\PyCrust"; Components: core Source: "wxPython\lib\PyCrust\*.txt"; DestDir: "{app}\wxPython\lib\PyCrust"; Components: core Source: "wxPython\lib\PyCrust\*.ico"; DestDir: "{app}\wxPython\lib\PyCrust"; Components: core +Source: "wxPython\lib\PyCrust\wxd\*.py"; DestDir: "{app}\wxPython\lib\PyCrust\wxd"; Components: core +Source: "wxPython\lib\colourchooser\*.py"; DestDir: "{app}\wxPython\lib\colourchooser"; Components: core + +%(LOCALE)s Source: "demo\*.py"; DestDir: "{app}\wxPython\demo"; Components: demo Source: "demo\*.xml"; DestDir: "{app}\wxPython\demo"; Components: demo @@ -139,9 +144,8 @@ Source: "%(WXDIR)s\docs\htmlhelp\wx.chm"; DestDir: "{app}\wxPython\docs"; Comp Source: "%(WXDIR)s\docs\htmlhelp\ogl.chm"; DestDir: "{app}\wxPython\docs"; Components: docs Source: "wxPython\tools\*.py"; DestDir: "{app}\wxPython\tools"; Components: tools -Source: "wxPython\tools\XRCed\CHANGES"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools -Source: "wxPython\tools\XRCed\TODO"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools -Source: "wxPython\tools\XRCed\README"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools +Source: "wxPython\tools\XRCed\*.txt"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools +Source: "wxPython\tools\XRCed\sawfishrc"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools Source: "wxPython\tools\XRCed\*.py"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools Source: "wxPython\tools\XRCed\*.xrc"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools Source: "wxPython\tools\XRCed\*.ico"; DestDir: "{app}\wxPython\tools\XRCed"; Components: tools @@ -149,12 +153,14 @@ Source: "wxPython\tools\XRCed\*.sh"; DestDir: "{app}\wxPython\tools\XRCed Source: "scripts\*.bat"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\*.py"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools +Source: "scripts\helpviewer"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\img2png"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\img2py"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\img2xpm"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\xrced"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\pyshell"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "scripts\pycrust"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools +Source: "scripts\pycwrap"; DestDir: "{code:GetPythonDir}\Scripts"; Components: tools Source: "samples\doodle\*.py"; DestDir: "{app}\wxPython\samples\doodle"; Components: samples Source: "samples\doodle\*.txt"; DestDir: "{app}\wxPython\samples\doodle"; Components: samples @@ -164,12 +170,6 @@ Source: "samples\doodle\superdoodle.iss"; DestDir: "{app}\wxPython\samples\doo Source: "samples\wxProject\*.txt"; DestDir: "{app}\wxPython\samples\wxProject"; Components: samples Source: "samples\wxProject\*.py"; DestDir: "{app}\wxPython\samples\wxProject"; Components: samples -Source: "samples\stxview\*.py"; DestDir: "{app}\wxPython\samples\stxview"; Components: samples -Source: "samples\stxview\*.stx"; DestDir: "{app}\wxPython\samples\stxview"; Components: samples -Source: "samples\stxview\*.txt"; DestDir: "{app}\wxPython\samples\stxview"; Components: samples -Source: "samples\stxview\StructuredText\*.py"; DestDir: "{app}\wxPython\samples\stxview\StructuredText"; Components: samples -Source: "samples\stxview\StructuredText\*.txt"; DestDir: "{app}\wxPython\samples\stxview\StructuredText"; Components: samples - Source: "samples\StyleEditor\*.txt"; DestDir: "{app}\wxPython\samples\StyleEditor"; Components: samples Source: "samples\StyleEditor\*.py"; DestDir: "{app}\wxPython\samples\StyleEditor"; Components: samples Source: "samples\StyleEditor\*.cfg"; DestDir: "{app}\wxPython\samples\StyleEditor"; Components: samples @@ -187,6 +187,10 @@ Source: "samples\embedded\*.unx"; DestDir: "{app}\wxPython\samples\embe Source: "samples\embedded\*.ico"; DestDir: "{app}\wxPython\samples\embedded"; Components: samples Source: "samples\embedded\*.xpm"; DestDir: "{app}\wxPython\samples\embedded"; Components: samples +Source: "src\winxp.manifest"; DestDir: "{code:GetPythonDir}"; DestName: "python.exe.manifest"; Components: core +Source: "src\winxp.manifest"; DestDir: "{code:GetPythonDir}"; DestName: "pythonw.exe.manifest"; Components: core + + ;;------------------------------------------------------------ [Run] @@ -224,6 +228,12 @@ Type: files; Name: "{app}\wxPython\lib\mixins\*.pyc"; Type: files; Name: "{app}\wxPython\lib\mixins\*.pyo"; Type: files; Name: "{app}\wxPython\lib\PyCrust\*.pyc"; Type: files; Name: "{app}\wxPython\lib\PyCrust\*.pyo"; +Type: files; Name: "{app}\wxPython\lib\PyCrust\decor\*.pyc"; +Type: files; Name: "{app}\wxPython\lib\PyCrust\decor\*.pyo"; +Type: files; Name: "{app}\wxPython\lib\PyCrust\wxd\*.pyc"; +Type: files; Name: "{app}\wxPython\lib\PyCrust\wxd\*.pyo"; +Type: files; Name: "{app}\wxPython\lib\colourchooser\*.pyc"; +Type: files; Name: "{app}\wxPython\lib\colourchooser\*.pyo"; Type: files; Name: "{app}\wxPython\tools\*.pyc"; Type: files; Name: "{app}\wxPython\tools\*.pyo"; Type: files; Name: "{app}\wxPython\tools\XRCed\*.pyc"; @@ -241,10 +251,6 @@ Type: files; Name: "{app}\wxPython\samples\wxProject\*.pyc"; Type: files; Name: "{app}\wxPython\samples\wxProject\*.pyo"; Type: files; Name: "{app}\wxPython\samples\StyleEditor\*.pyc"; Type: files; Name: "{app}\wxPython\samples\StyleEditor\*.pyo"; -Type: files; Name: "{app}\wxPython\samples\stxview\*.pyc"; -Type: files; Name: "{app}\wxPython\samples\stxview\*.pyo"; -Type: files; Name: "{app}\wxPython\samples\stxview\StructuredText\*.pyc"; -Type: files; Name: "{app}\wxPython\samples\stxview\StructuredText\*.pyo"; Type: files; Name: "{app}\wxPython\samples\frogedit\*.pyc"; Type: files; Name: "{app}\wxPython\samples\frogedit\*.pyo"; Type: files; Name: "{app}\wxPython\demo\data\*.pyc"; @@ -269,6 +275,7 @@ var PythonDir : String; InstallDir : String; + function InitializeSetup(): Boolean; begin if not RegQueryStringValue(HKEY_LOCAL_MACHINE, @@ -279,7 +286,8 @@ begin 'Software\Python\PythonCore\%(PYTHONVER)s\InstallPath', '', PythonDir) then begin - MsgBox('No installation of Python %(PYTHONVER)s found in registry.\nBe sure to enter a pathname that places wxPython\non the PYTHONPATH', + MsgBox('No installation of Python %(PYTHONVER)s found in registry.' + #13 + + 'Be sure to enter a pathname that places wxPython on the PYTHONPATH', mbConfirmation, MB_OK); PythonDir := 'C:\Put a directory on PYTHONPATH here\'; end; @@ -300,12 +308,34 @@ begin Result := InstallDir; end; + + +function NextButtonClick(CurPage: Integer): Boolean; +var + FileName: string; + ResultCode: Integer; +begin + Result := True; + if CurPage <> wpSelectDir then Exit; + FileName := WizardDirValue() + '\wxPython\unins000.exe'; + if FileExists(FileName) then begin + ResultCode := MsgBox('A prior wxPython installation was found in this directory. It' + #13 + + 'is recommended that it be uninstalled first.' + #13#13 + + 'Should I do it?', + mbConfirmation, MB_YESNO); + if ResultCode = IDYES then begin + InstExec(FileName, '/SILENT', WizardDirValue()+'\wxPython', True, False, SW_SHOWNORMAL, ResultCode); + + end; + end; +end; + + begin end. """ - #---------------------------------------------------------------------- def find_DLLs(): @@ -317,7 +347,7 @@ def find_DLLs(): proc.close() for line in lines: if line[:6] == " wx": - WXDLL = string.strip(line) + WXDLL = line.strip() if line[:10] == " python": PYTHONVER = line[10] + '.' + line[11] @@ -326,6 +356,23 @@ def find_DLLs(): return WXDLL, PYTHONVER +#---------------------------------------------------------------------- + +locale_template = 'Source: "%s"; DestDir: "{app}\%s"; Components: core' + +def build_locale_string(): + stringlst = [] + + def walk_helper(lst, dirname, files): + for f in files: + filename = os.path.join(dirname, f) + if not os.path.isdir(filename): + lst.append( locale_template % (filename, dirname) ) + + os.path.walk('wxPython\\locale', walk_helper, stringlst) + return '\n'.join(stringlst) + + #---------------------------------------------------------------------- def main(): @@ -344,6 +391,7 @@ def main(): SYSDIR = r"C:\WINNT\SYSTEM32" ISSFILE = "__wxPython.iss" IFSFILE = "__wxPython.ifs" + LOCALE = build_locale_string() if PYTHONVER >= "2.2": IF22 = r"InstallDir := InstallDir + '\Lib\site-packages';" @@ -352,7 +400,7 @@ def main(): # Starting with 2.3.3 the hybrid build is the release build too, so # no need to label it that way. - ##if string.find(WXDLL, "h") != -1: + ##if WXDLL.find("h") != -1: ## PYVER = PYVER + "-hybrid" MSLU='' @@ -370,6 +418,7 @@ def main(): os.system(ISCC % (os.environ['TOOLS'], ISSFILE)) if not KEEP_TEMPS: + time.sleep(1) os.remove(ISSFILE) os.remove(IFSFILE) diff --git a/wxPython/distrib/makedbg.bat b/wxPython/distrib/makedbg.bat deleted file mode 100755 index f738789ffa..0000000000 --- a/wxPython/distrib/makedbg.bat +++ /dev/null @@ -1,33 +0,0 @@ -@echo off -rem Builds a zip containing debugging versions of wxWindows and wxPython -rem that could be unziped over a wxPython installation. - -setlocal - -iff "%1" == "15" then - set PCBUILD=c:\projects\Python-1.5.2\PCBuild -elseiff "%1" == "20" then - set PCBUILD=c:\projects\Python-2.0\PCBuild -else - echo Specivy Python version!!! - goto end -endiff - -iff "%2" == "" then - echo Specify wxPython version!!! - goto end -endiff - - -mkdir wxPython-dbg -copy README.dbg.txt wxPython-dbg -copy %WXWIN%\lib\wx*d.dll wxPython-dbg -copy %WXWIN%\wxPython\wxPython\*_d.pyd wxPython-dbg -copy %PCBUILD%\python_d.exe wxPython-dbg -copy %PCBUILD%\python%1_d.dll wxPython-dbg - -zip -r wxPython-dbg-%2-Py%1.zip wxPython-dbg - -del /sx wxPython-dbg - -:end \ No newline at end of file diff --git a/wxPython/distrib/makedemo b/wxPython/distrib/makedemo index bf340d4335..af2983ee31 100755 --- a/wxPython/distrib/makedemo +++ b/wxPython/distrib/makedemo @@ -21,15 +21,17 @@ cp -R samples _distrib_tgz/wxPython-$1 rm -rf `find _distrib_tgz/wxPython-$1 -name CVS` rm -f `find _distrib_tgz/wxPython-$1 -name "*.pyc"` rm -f `find _distrib_tgz/wxPython-$1 -name .cvsignore` -rm -f `find _distrib_tgz/wxPython-$1 -name core` +rm -f `find _distrib_tgz/wxPython-$1 -name "core*"` rm -f `find _distrib_tgz/wxPython-$1 -name wxPython` -rm -f `find _distrib_tgz/wxPython-$1 -name *.o` -rm -f `find _distrib_tgz/wxPython-$1 -name *.so` +rm -f `find _distrib_tgz/wxPython-$1 -name "*.o"` +rm -f `find _distrib_tgz/wxPython-$1 -name "*.so"` +rm -f `find _distrib_tgz/wxPython-$1 -name "*~"` +rm -f `find _distrib_tgz/wxPython-$1 -name ".#*"` cd _distrib_tgz tar cvf ../dist/wxPythonDemo-$1.tar wxPython-$1 -gzip ../dist/wxPythonDemo-$1.tar +gzip -9 ../dist/wxPythonDemo-$1.tar cd .. rm -r _distrib_tgz diff --git a/wxPython/distrib/makedev.bat b/wxPython/distrib/makedev.bat index 03368b9732..252606a81f 100755 --- a/wxPython/distrib/makedev.bat +++ b/wxPython/distrib/makedev.bat @@ -59,8 +59,8 @@ del /sxzy %BASE%\include\wx\x11\nanox\X11\CVS rem *** bundle it all up cd _distrib_zip -tar cvf ..\dist\wxPythonWIN32-devel-%1.tar wxPython-%1 -gzip -9 ..\dist\wxPythonWIN32-devel-%1.tar +tar cvf ../dist/wxPythonWIN32-devel-%1.tar wxPython-%1 +gzip -9 ../dist/wxPythonWIN32-devel-%1.tar rem *** cleanup cd .. diff --git a/wxPython/distrib/makedocs b/wxPython/distrib/makedocs new file mode 100755 index 0000000000..f158caa190 --- /dev/null +++ b/wxPython/distrib/makedocs @@ -0,0 +1,63 @@ +#!/bin/bash + +#---------------------------------------------------------------------- + +if [ -z $1 ]; then + echo "Please specify a version number on the command line." + exit 1 +fi + +if [ ! -d wxPython ]; then # TODO: make this test more robust + echo "Please run this script from the root wxPython directory." + exit 1 +fi + + +# **** Make a directory to build up a distribution tree + +DEST=wxPython-$1/docs + +mkdir -p _build_docs/$DEST +cd _build_docs +mkdir $DEST/wx +mkdir $DEST/ogl + +WXDIR=../.. + +# **** Build the docs using tex2rtf +cp $WXDIR/docs/latex/wx/*.gif $DEST/wx +$WXDIR/utils/tex2rtf/src/tex2rtf $WXDIR/docs/latex/wx/manual.tex $DEST/wx/wx.htm -twice -html +cp $DEST/wx/wx.htm $DEST/wx/index.htm + +cp $WXDIR/contrib/docs/latex/ogl/*.gif $DEST/ogl +cp $WXDIR/contrib/docs/latex/ogl/*.bmp $DEST/ogl +$WXDIR/utils/tex2rtf/src/tex2rtf $WXDIR/contrib/docs/latex/ogl/ogl.tex $DEST/ogl/ogl.htm -twice -html +cp $DEST/ogl/ogl.htm $DEST/ogl/index.htm + + +# **** zip the docs into "books" +pushd $DEST +pushd wx +zip ../wx.zip * +popd +rm -r wx + +pushd ogl +zip ../ogl.zip * +popd +rm -r ogl + +popd +cp ../distrib/viewdocs.py $DEST +cp ../distrib/README.viewdocs.txt $DEST/README.txt + +rm -f ../dist/wxPythonDocs-$1.tar.gz +tar cvf ../dist/wxPythonDocs-$1.tar $DEST +gzip -9 ../dist/wxPythonDocs-$1.tar + + +# **** Cleanup +cd .. +rm -r _build_docs + + diff --git a/wxPython/distrib/makedocs.bat b/wxPython/distrib/makedocs.bat deleted file mode 100755 index 4e353fb32c..0000000000 --- a/wxPython/distrib/makedocs.bat +++ /dev/null @@ -1,26 +0,0 @@ -@echo off - -rem **** Make a directory to build up a distribution tree -md _distrib_zip -md _distrib_zip\wxPython-%1 - -cd _distrib_zip - -rem **** copy the docs into the tree -md wxPython-%1\docs -md wxPython-%1\docs\wx -md wxPython-%1\docs\ogl -copy %WXWIN%\docs\html\wx\*.* wxPython-%1\docs\wx -copy wxPython-%1\docs\wx\wx.htm wxPython-%1\docs\wx\index.htm -copy %WXWIN%\docs\html\ogl\*.* wxPython-%1\docs\ogl -copy wxPython-%1\docs\ogl\ogl.htm wxPython-%1\docs\ogl\index.htm - -rem **** zip up the docs -rem zip -r ..\distrib\wxPython-docs-%1.zip wxPython-%1\docs -tar cvf ..\dist\wxPythonDocs-%1.tar wxPython-%1 -gzip -9 ..\dist\wxPythonDocs-%1.tar - - -rem **** Cleanup -cd .. -del /sxzy _distrib_zip diff --git a/wxPython/distrib/makerpm b/wxPython/distrib/makerpm index ccb1f5bb9e..f9e7604374 100755 --- a/wxPython/distrib/makerpm +++ b/wxPython/distrib/makerpm @@ -13,51 +13,52 @@ fi #---------------------------------------------------------------------- # Initialization -distdir=`pwd`/dist -builddir=`pwd`/_build_rpm +wxpdir=`pwd` +wxdir=${wxpdir}/.. +distdir=${wxpdir}/dist +builddir=${wxpdir}/_build_rpm rpmtop=${builddir}/rpmtop -cvsroot=:pserver:anoncvs@cvs.wxwindows.org:/home/wxcvs +cvsroot=:pserver:anoncvs@cvs.wxwindows.org:/pack/cvsroots/wxwindows pythonbin=/usr/bin/python port=GTK lcport=gtk +unicode=0 tarname=wxPythonSrc -debug=0 - +rpmflag=-ba #---------------------------------------------------------------------- # Check parameters function useage { - echo "Usage: $0 cvs_tag wx_version py_version [command flags...]" - echo " cvs_tag Tag to use for CVS export" + echo "Usage: $0 wx_version py_version [command flags...]" echo " wx_version String to use for version in filenames, etc." echo " py_version String to append to $pythonbin (which python" echo " version to use.)" echo "" echo "command flags:" - echo " skipcvs Don't do the CVS export" + echo " skipcopy Don't copy the files for the tarball from the workspace" echo " skiptar Don't build the tarball" echo " skiprpm Don't build the RPM (but why?)" echo " skipclean Don't do the cleanup at the end" + echo " gtk2 Build using wxGTK2 and Unicode" + echo " x11 Build using wxX11" echo " speconly Do nothing but write the RPM spec file" - echo " debug Make a __WXDEBUG__ version" - echo " smp Add SMP=2 to the envivonment to speed wxGTK build" + echo " srpm Only make the SRPM" +# echo " smp Add SMP=2 to the envivonment to speed wxGTK build" } -if [ $# -lt 3 ]; then +if [ $# -lt 2 ]; then useage exit 1 fi -cvs_tag=$1 -version=$2 -pyver=$3 -shift;shift;shift +version=$1 +pyver=$2 +shift;shift ver2=`echo ${version} | cut -c 1,2,3` tarver=${tarname}-${version} - python=${pythonbin}${pyver} if [ ! -e ${python} ]; then echo "${python} not found!" @@ -70,12 +71,12 @@ function makespec { cat ${spectemplate} \ | sed s:@PYTHON@:${python}:g \ | sed s:@PYVER@:${pyver}:g \ - | sed s:@DEBUG@:${debug}:g \ | sed s:@PORT@:${port}:g \ | sed s:@LCPORT@:${lcport}:g \ | sed s:@TARNAME@:${tarname}:g \ | sed s:@VERSION@:${version}:g \ | sed s:@VER2@:${ver2}:g \ + | sed s:@UNICODE@:${unicode}:g \ > ${distdir}/wxPython${port}.spec } @@ -83,13 +84,15 @@ function makespec { for flag in $*; do case ${flag} in - skipcvs) skipcvs=1 ;; - skipclean) skipclean=1 ;; - skiptar) skiptar=1 ;; - skiprpm) skiprpm=1 ;; - smp) export SMP=2 ;; - debug) debug=1 ;; - speconly) makespec; exit 0 ;; + skipcopy) skipcopy=1 ;; + skipclean) skipclean=1 ;; + skiptar) skiptar=1 ;; + skiprpm) skiprpm=1 ;; + gtk2) unicode=1; port=GTK2; lcport=gtk2 ;; + x11) port=X11; lcport=x11 ;; + smp) export SMP=2 ;; + speconly) makespec; exit 0 ;; + srpm) rpmflag=-bs; ;; *) echo "Unknown flag \"${flag}\"" useage @@ -119,38 +122,57 @@ done #---------------------------------------------------------------------- -# Get the sources from CVS +# Copy the sources from my CVS workspace -if [ -z "${skipcvs}" ]; then - echo "*** Exporting CVS archive..." +if [ -z "${skipcopy}" ]; then + echo "*** Copying CVS tree" pushd ${builddir} > /dev/null if [ -e ${tarver} ]; then - rm -rf ${tarver} - fi - cvs -d ${cvsroot} export -r ${cvs_tag} -d ${tarver} wxWindows > /dev/null 2>&1 - if [ "$?" != "0" ]; then - echo "*** CVS failure, exiting." - exit 1 + rm -rf ${tarver} fi + mkdir -p ${tarver} - echo "*** Removing unneeded stuff from CVS tree" + # copy root dir contents + cp -pf --link ${wxdir}/* ${tarver} > /dev/null 2>&1 + + # copy all top dirs except CVS, build, demos, utils, samples, and wxPython + for d in art contrib debian distrib docs include lib locale misc src; do + cp -Rpf --link ${wxdir}/$d ${tarver} #> /dev/null 2>&1 + done + + # now do the same thing for wxPython, skipping it's build dirs and such + mkdir ${tarver}/wxPython + cp -pf --link ${wxdir}/wxPython/* ${tarver}/wxPython > /dev/null 2>&1 + for d in contrib demo distrib distutils samples scripts src wxPython; do + cp -Rpf --link ${wxdir}/wxPython/$d ${tarver}/wxPython #> /dev/null 2>&1 + done + + + echo "*** Removing uneeded stuff from copy of CVS tree" pushd ${tarver} > /dev/null rm `find . -name .cvsignore` + rm -rf `find . -name CVS` rm *.spec - rm -rf demos -# rm -rf docs rm -rf docs/html rm -rf docs/latex - rm -rf samples - rm -rf utils -# rm -rf include/wx/mgl -# rm -rf include/wx/motif -# rm -rf include/wx/os2 -# rm -rf src/mgl -# rm -rf src/motif -# rm -rf src/os2 - rm -rf wxPython/wxSWIG - rm -rf wxPython/tests + rm -rf contrib/docs + rm -rf contrib/samples + rm locale/*.mo + rm `find . -name ".#*"` + rm `find . -name "*~"` + rm `find . -name "*.pyc"` + rm `find . -name "core"` + rm `find . -name "core.[0-9]*"` + + rm -f wxPython/wxPython/* > /dev/null 2>&1 + rm wxPython/demo/.setup.sh + rm -rf wxPython/contrib/art2d + rm -rf wxPython/contrib/canvas + rm -rf wxPython/contrib/canvas2 + rm -rf wxPython/contrib/gizmos/contrib + rm -rf wxPython/contrib/ogl/contrib + rm -rf wxPython/contrib/stc/contrib + rm -rf wxPython/contrib/xrc/contrib popd > /dev/null popd > /dev/null @@ -171,9 +193,16 @@ cp ${distdir}/wxPython${port}.spec ${builddir}/${tarver}/wxPython${port}.spec # Build the tar file if [ -z "${skiptar}" ]; then + echo "*** Creating language catalogs..." + pushd ${builddir}/${tarver}/locale > /dev/null + make allmo + popd > /dev/null + echo "*** Creating tarball..." + cp distrib/README.1st.txt ${builddir}/${tarver} pushd ${builddir} > /dev/null tar cvf ${distdir}/${tarver}.tar ${tarver} > /dev/null + echo "*** Compressing..." if [ -e ${distdir}/${tarver}.tar.gz ]; then rm ${distdir}/${tarver}.tar.gz @@ -189,7 +218,7 @@ fi if [ -z "${skiprpm}" ]; then echo "*** Building RPMs..." cp ${distdir}/${tarver}.tar.gz ${rpmtop}/SOURCES - rpm -ba \ + rpmbuild ${rpmflag} \ --define "_topdir ${rpmtop}" \ --define "_tmppath ${builddir}" \ ${distdir}/wxPython${port}.spec diff --git a/wxPython/distrib/maketgz b/wxPython/distrib/maketgz deleted file mode 100755 index bb34859cd8..0000000000 --- a/wxPython/distrib/maketgz +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -#---------------------------------------------------------------------- -# Make a source distribution as a tar.gz file. This script should be -# run from the directory that holds the wxPython dir (../..) and be -# given a version number as an parameter. The best way to do this is -# run "make dist" in the wxPython/src/ directory. -#---------------------------------------------------------------------- - -if [ -z $1 ]; then - echo "Please specify a version number on the command line." - exit 1 -fi - -if [ ! -d wxPython ]; then - echo "Please run this script from the root wxPython directory." - exit 1 -fi - -mkdir _distrib_tgz -mkdir _distrib_tgz/wxPython-$1 - -# Copy license files -cp $WXWIN/docs/gpl.txt _distrib_tgz/wxPython-$1 -cp $WXWIN/docs/lgpl.txt _distrib_tgz/wxPython-$1 -cp $WXWIN/docs/licence.txt _distrib_tgz/wxPython-$1 -cp $WXWIN/docs/licendoc.txt _distrib_tgz/wxPython-$1 -cp $WXWIN/docs/preamble.txt _distrib_tgz/wxPython-$1 - -# Copy files from the live dirs -# first, get a list of files -for x in `cat distrib/wxPython.rsp`; do - ls $x >> _distrib_tgz/filelist -done - -# and make a tar file containing those files -tar cf _distrib_tgz/dist-temp.tar -T _distrib_tgz/filelist - -# now untar it in the right place -cd _distrib_tgz/wxPython-$1 -tar xf ../dist-temp.tar -cd .. - -# update a few things -rm wxPython-$1/src/gtk/helpers.cpp -touch `find wxPython-$1 -name "*.cpp"` -touch `find wxPython-$1 -name "*.py"` - -# Finally, make the finished tar file -tar cvf ../distrib/wxPython-$1.tar wxPython-$1 -gzip ../distrib/wxPython-$1.tar - -cd .. -rm -rf _distrib_tgz - - - - - - - - - diff --git a/wxPython/distrib/maketools b/wxPython/distrib/maketools deleted file mode 100755 index bc47f63dcc..0000000000 --- a/wxPython/distrib/maketools +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -#---------------------------------------------------------------------- - -if [ -z $1 ]; then - echo "Please specify a version number on the command line." - exit 1 -fi - -if [ ! -d wxPython ]; then - echo "Please run this script from the root wxPython directory." - exit 1 -fi - -mkdir _distrib_tgz -mkdir _distrib_tgz/wxPython-$1 - -cp -R tools _distrib_tgz/wxPython-$1 - -# do some cleanup -rm -rf `find _distrib_tgz/wxPython-$1 -name CVS` -rm -f `find _distrib_tgz/wxPython-$1 -name "*.pyc"` -rm -f `find _distrib_tgz/wxPython-$1 -name .cvsignore` -rm -f `find _distrib_tgz/wxPython-$1 -name core` -rm -f `find _distrib_tgz/wxPython-$1 -name wxPython` -rm -f `find _distrib_tgz/wxPython-$1 -name *.o` -rm -f `find _distrib_tgz/wxPython-$1 -name *.so` - -cd _distrib_tgz - -tar cvf ../dist/wxPython-tools-$1.tar wxPython-$1 -gzip ../dist/wxPython-tools-$1.tar - -cd .. -rm -r _distrib_tgz - - - - diff --git a/wxPython/distrib/makexferzip b/wxPython/distrib/makexferzip deleted file mode 100755 index 88e06f3ab0..0000000000 --- a/wxPython/distrib/makexferzip +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -cd ~/wx/utils/wxPython - -find . -name "*.py" > filelist -find . -name "*.i" >> filelist -find . -name "*.h" >> filelist -find . -name "*.cpp" >> filelist - -cat filelist | zip -r -u -@ xfer.zip diff --git a/wxPython/distrib/makexferzip.bat b/wxPython/distrib/makexferzip.bat deleted file mode 100755 index 133ecb15d9..0000000000 --- a/wxPython/distrib/makexferzip.bat +++ /dev/null @@ -1,9 +0,0 @@ - - -cd %WXWIN%\utils\wxPython -find . -name "*.py" > filelist -find . -name "*.i" >> filelist -find . -name "*.h" >> filelist -find . -name "*.cpp" >> filelist - -cat filelist | zip -r -u -@ xfer.zip diff --git a/wxPython/distrib/viewdocs.py b/wxPython/distrib/viewdocs.py new file mode 100755 index 0000000000..efcd59b523 --- /dev/null +++ b/wxPython/distrib/viewdocs.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +#--------------------------------------------------------------------------- + +import sys, os, glob +from wxPython.tools import helpviewer + + +# Figure out the path where this app is located +if __name__ == '__main__': + basePath = os.path.dirname(sys.argv[0]) +else: + basePath = os.path.dirname(__file__) + + +# setup the args +args = ['', + '--cache='+basePath, + os.path.join(basePath, 'wx.zip'), + os.path.join(basePath, 'ogl.zip'), + ] + +# add any other .zip files found +for file in glob.glob(os.path.join(basePath, "*.zip")): + if file not in args: + args.append(file) + +# launch helpviewer +helpviewer.main(args) + +#--------------------------------------------------------------------------- + diff --git a/wxPython/distrib/wise.aut b/wxPython/distrib/wise.aut deleted file mode 100644 index 8f97040c2d..0000000000 --- a/wxPython/distrib/wise.aut +++ /dev/null @@ -1,7 +0,0 @@ - -run, c:\\Tools\\Wise\\WISE32.EXE wxPython.wse -winwaitactive, wxPython.wse - Wise Installation System -send, !ic -sleep, 1000 -winwaitactive, wxPython.wse - Wise Installation System -send, !fx diff --git a/wxPython/distrib/wxPython.WSM b/wxPython/distrib/wxPython.WSM deleted file mode 100644 index 075f558178..0000000000 Binary files a/wxPython/distrib/wxPython.WSM and /dev/null differ diff --git a/wxPython/distrib/wxPython.bmp b/wxPython/distrib/wxPython.bmp deleted file mode 100644 index e66da76cb4..0000000000 Binary files a/wxPython/distrib/wxPython.bmp and /dev/null differ diff --git a/wxPython/distrib/wxPython.rsp b/wxPython/distrib/wxPython.rsp deleted file mode 100644 index bfc9cdf462..0000000000 --- a/wxPython/distrib/wxPython.rsp +++ /dev/null @@ -1,106 +0,0 @@ -*.txt - -demo/*.py -demo/bitmaps/*.bmp -demo/bitmaps/*.ico -demo/bitmaps/*.gif -demo/bitmaps/*.png -demo/bitmaps/*.jpg -demo/README.txt -demo/*.xml -demo/data/*.png -demo/data/*.htm -demo/data/*.html -demo/data/*.bmp -demo/data/*.txt -demo/data/*.i -demo/data/*.h - -distrib/build.py -distrib/wxPython.spec - -wxPython/lib/*.py -wxPython/lib/*.txt -wxPython/lib/sizers/*.py -wxPython/lib/sizers/*.txt -wxPython/lib/editor/*.py -wxPython/lib/editor/*.txt - - -src/build.cfg -src/*.i -src/*.py -src/*.cpp -src/*.c -src/*.h -src/*.ico -src/*.def -src/*.rc - -src/msw/*.cpp -src/msw/*.h -src/msw/*.py - -src/gtk/*.cpp -src/gtk/*.h -src/gtk/*.py - -src/motif/*.cpp -src/motif/*.h -src/motif/*.py - - -contrib/glcanvas/build.cfg -contrib/glcanvas/*.i -contrib/glcanvas/*.py -contrib/glcanvas/*.cpp -contrib/glcanvas/*.c -contrib/glcanvas/*.h -contrib/glcanvas/*.def -contrib/glcanvas/*.rc -contrib/glcanvas/msw/*.cpp -contrib/glcanvas/msw/*.h -contrib/glcanvas/msw/*.py -contrib/glcanvas/gtk/*.cpp -contrib/glcanvas/gtk/*.h -contrib/glcanvas/gtk/*.py - -contrib/ogl/build.cfg -contrib/ogl/*.txt -contrib/ogl/*.i -contrib/ogl/*.py -contrib/ogl/*.cpp -contrib/ogl/*.c -contrib/ogl/*.h -contrib/ogl/*.def -contrib/ogl/*.rc -contrib/ogl/contrib/include/wx/ogl/*.h -contrib/ogl/contrib/src/ogl/*.cpp - -contrib/stc/build.cfg -contrib/stc/*.txt -contrib/stc/*.i -contrib/stc/*.py -contrib/stc/*.cpp -contrib/stc/*.c -contrib/stc/*.h -contrib/stc/*.def -contrib/stc/*.rc -contrib/stc/*.cpp -contrib/stc/*.h -contrib/stc/*.py -contrib/stc/contrib/include/wx/stc/*.h -contrib/stc/contrib/src/stc/*.h -contrib/stc/contrib/src/stc/*.cpp -contrib/stc/contrib/src/stc/*.txt -contrib/stc/contrib/src/stc/*.py -contrib/stc/contrib/src/stc/scintilla/include/*.h -contrib/stc/contrib/src/stc/scintilla/include/*.iface -contrib/stc/contrib/src/stc/scintilla/src/*.h -contrib/stc/contrib/src/stc/scintilla/src/*.cxx - - - - - - diff --git a/wxPython/distrib/wxPython.wse b/wxPython/distrib/wxPython.wse deleted file mode 100644 index bf3321be82..0000000000 --- a/wxPython/distrib/wxPython.wse +++ /dev/null @@ -1,1364 +0,0 @@ -Document Type: WSE -item: Global - Version=6.01 - Title=wxPython 2.2 Installation - Flags=10010111 - Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - Japanese Font Name=MS Gothic - Japanese Font Size=10 - Progress Bar DLL=%_WISE_%\Progress\WIZ%_EXE_OS_TYPE_%.DLL - Start Gradient=128 128 255 - End Gradient=64 0 128 - Windows Flags=00000100000000010010110000011000 - Log Pathname=%MAINDIR%\INSTALL.LOG - Message Font=MS Sans Serif - Font Size=8 - Disk Filename=SETUP - Patch Flags=0000000000001001 - Patch Threshold=85 - Patch Memory=4000 - EXE Filename=wxPython-2.2.5-PyXX.exe - FTP Cluster Size=20 - Per-User Version ID=1 - Dialogs Version=6 - Variable Name1=_SYS_ - Variable Default1=C:\WINNT\System32 - Variable Flags1=00001000 - Variable Name2=_WISE_ - Variable Default2=C:\Tools\Wise - Variable Flags2=00001000 - Variable Name3=_ODBC16_ - Variable Default3=C:\WINNT\System32 - Variable Flags3=00001000 - Variable Name4=_ODBC32_ - Variable Default4=C:\WINNT\System32 - Variable Flags4=00001000 - Variable Name5=_ALIASNAME_ - Variable Flags5=00001000 - Variable Name6=_ALIASPATH_ - Variable Flags6=00001000 - Variable Name7=_ALIASTYPE_ - Variable Flags7=00001000 -end -item: Open/Close INSTALL.LOG - Flags=00000001 -end -item: Check if File/Dir Exists - Pathname=%SYS% - Flags=10000100 -end -item: Set Variable - Variable=SYS - Value=%WIN% -end -item: End Block -end -item: Set Variable - Variable=APPTITLE - Value=wxPython 2.2 - Flags=10000000 -end -item: Set Variable - Variable=GROUP - Value=wxPython 2.2 - Flags=10000000 -end -item: Set Variable - Variable=DISABLED - Value=! -end -item: Set Variable - Variable=MAINDIR - Value=wxPython - Flags=10000000 -end -item: Remark -end -item: Set Variable - Variable=PYTHONVER - Value=1.5 -end -item: Remark -end -item: Check Configuration - Flags=10111011 -end -item: Get Registry Key Value - Variable=PYTHONDIR - Key=SOFTWARE\Python\PythonCore\%PYTHONVER%\InstallPath - Flags=00000100 -end -remarked item: If/While Statement - Variable=PYTHONDIR - Value=None -end -remarked item: Get Registry Key Value - Variable=PYTHONDIR - Key=SOFTWARE\Python\PythonCore\%PYTHONVER%\InstallPath - Flags=00000010 -end -remarked item: End Block -end -item: If/While Statement - Variable=PYTHONDIR - Value=None -end -item: Display Message - Title=Installation Error - Text=An existing Python installation was not found, wxPython installation can not proceed. Please download and install the Python core interpreter and library (version 1.5.1 or greater) from http://www.python.org/download/ - Flags=00001000 -end -item: Exit Installation -end -item: End Block -end -item: Set Variable - Variable=MAINDIR - Value=%PYTHONDIR% -end -item: Remark -end -item: Set Variable - Variable=EXPLORER - Value=1 -end -item: Get Registry Key Value - Variable=COMMON - Key=SOFTWARE\Microsoft\Windows\CurrentVersion - Default=C:\Program Files\Common Files - Value Name=CommonFilesDir - Flags=00000100 -end -item: Get Registry Key Value - Variable=PROGRAM_FILES - Key=SOFTWARE\Microsoft\Windows\CurrentVersion - Default=C:\Program Files - Value Name=ProgramFilesDir - Flags=00000100 -end -item: Else Statement -end -item: Set Variable - Variable=MAINDIR - Value=C:\%MAINDIR% -end -item: End Block -end -item: Set Variable - Variable=BACKUP - Value=%MAINDIR%\wxPython\BACKUP - Flags=10000000 -end -item: Set Variable - Variable=DOBACKUP - Value=B - Flags=10000000 -end -item: Set Variable - Variable=COMPONENTS - Flags=10000000 -end -item: Set Variable - Variable=BRANDING - Value=0 -end -item: If/While Statement - Variable=BRANDING - Value=1 -end -item: Read INI Value - Variable=NAME - Pathname=%INST%\CUSTDATA.INI - Section=Registration - Item=Name -end -item: Read INI Value - Variable=COMPANY - Pathname=%INST%\CUSTDATA.INI - Section=Registration - Item=Company -end -item: If/While Statement - Variable=NAME -end -item: Set Variable - Variable=DOBRAND - Value=1 -end -item: End Block -end -item: End Block -end -item: Display Graphic - Pathname=C:\PROJECTS\wx\wxPython\distrib\wxPython.bmp - X Position=32784 - Y Position=16 - Flags=0000001010000000 -end -item: Wizard Block - Direction Variable=DIRECTION - Display Variable=DISPLAY - Bitmap Pathname=%_WISE_%\DIALOGS\TEMPLATE\WIZARD.BMP - X Position=9 - Y Position=10 - Filler Color=8421440 - Dialog=Select Program Manager Group - Dialog=Select Backup Directory - Dialog=Display Registration Information - Dialog=Get Registration Information - Variable=EXPLORER - Variable=DOBACKUP - Variable=DOBRAND - Variable=DOBRAND - Value=1 - Value=A - Value=1 - Value=1 - Compare=0 - Compare=1 - Compare=0 - Compare=1 - Flags=00000011 -end -item: Custom Dialog Set - Name=Welcome - Display Variable=DISPLAY - item: Dialog - Title=Welcome - Title French=Bienvenue - Title German=Willkommen - Title Portuguese=Bem-vindo - Title Spanish=Bienvenido - Title Italian=Benvenuto - Title Danish=Velkommen - Title Dutch=Welkom - Title Norwegian=Velkommen - Title Swedish=Välkommen - Width=280 - Height=224 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=172 185 214 199 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suivant> - Text German=&Weiter> - Text Portuguese=&Próximo> - Text Spanish=&Siguiente > - Text Italian=&Avanti > - Text Danish=&Næste> - Text Dutch=&Volgende> - Text Norwegian=&Neste> - Text Swedish=&Nästa > - end - item: Push Button - Rectangle=222 185 264 199 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Annuller - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - item: Static - Rectangle=9 177 263 178 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=83 8 121 33 - Action=2 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000001011 - Pathname=%_WISE_%\dialogs\template\install.grf - Pathname French=%_WISE_%\dialogs\template\install.grf - Pathname German=%_WISE_%\dialogs\template\install.grf - Pathname Portuguese=%_WISE_%\dialogs\template\install.grf - Pathname Spanish=%_WISE_%\dialogs\template\install.grf - Pathname Italian=%_WISE_%\dialogs\template\install.grf - Pathname Danish=%_WISE_%\dialogs\template\install.grf - Pathname Dutch=%_WISE_%\dialogs\template\install.grf - Pathname Norwegian=%_WISE_%\dialogs\template\install.grf - Pathname Swedish=%_WISE_%\dialogs\template\install.grf - end - item: Static - Rectangle=121 10 258 44 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=Welcome to %APPTITLE% Setup program. This program will install %APPTITLE% on your computer. - Text French=Bienvenue sur le programme d'installation %APPTITLE%. Ce programme va installer %APPTITLE% sur votre ordinateur. - Text German=Willkommen im Installationsprogramm für %APPTITLE%. Dieses Programm installiert %APPTITLE% auf Ihrem Computer. - Text Portuguese=Bem-vindo ao programa de configuração %APPTITLE%. Este programa instalará %APPTITLE% no seu computador - Text Spanish=Bienvenido al programa de Configuración %APPTITLE%. Este programa instalará %APPTITLE en su ordenador - Text Italian=Benvenuto nel programma di installazione di %APPTITLE%. Con questo programma puoi installare %APPTITLE% sul tuo computer. - Text Danish=Velkommen til %APPTITLE% installationsprogrammet. Dette program installerer %APPTITLE% på computeren. - Text Dutch=Welkom bij het %APPTITLE% installatieprogramma. Dit programma installeert %APPTITLE% op uw computer. - Text Norwegian=Velkommen til %APPTITLE% Oppsett-program. Dette programmet vil installere %APPTITLE% på datamaskinen din. - Text Swedish=Välkommen till installationsprogrammet för %APPTITLE%. Detta program installerar %APPTITLE% på din dator. - end - item: Static - Rectangle=90 45 260 175 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=It is strongly recommended that you exit all Windows programs before running this Setup Program. - Text= - Text=Click Cancel to quit Setup and close any programs you have running. Click Next to continue with the Setup program . - Text= - Text=WARNING: Although this program is OpenSource, it is still protected by copyright law and international treaties. See wxWindows Library Licence, Version 3 for details. - Text= - Text= - Text French=Il vous est fortement recommandé de fermer tous les programmes Windows avant d'exécuter le Programme d'Installation - Text French= - Text French=Cliquez sur Annuler pour quitter l'Installation et fermez tous les programmes actuellement utilisés. Cliquez sur Suivant pour continuer l'installation - Text French= - Text French=ATTENTION : Ce programme est protégé par la loi sur les droits d'exploitation et par les traités internationaux - Text French= - Text French=Toute reproduction ou distribution, même partielle, de ce programme qui n'aura pas reçu d'autorisation préalable fera l'objet de poursuites et sera sévèrement sanctionnée par le droit civil et pénal - Text German=Wir empfehlen nachdrücklich, vor Ausführen dieses Installationsprogramms alle Windows-Programme zu beenden. - Text German= - Text German=Auf Abbrechen klicken, um die Installation zu beenden und alle laufenden Programme zu schließen. Auf Weiter klicken, um mit dem Installationsprogramm beginnen. - Text German= - Text German=WARNUNG: Dieses Programm ist urheberrechtlich sowie durch internationale Verträge geschützt. - Text German= - Text German=Die unzulässige Vervielfältigung oder Verbreitung dieses Programms, ob ganz oder auszugsweise, kann schwere zivil- und strafrechtliche Konsequenzen nach sich ziehen und wird unter voller Ausschöpfung der Rechtsmittel geahndet. - Text Portuguese=Recomenda-se insistentemente que saia de todos os programas do Windows antes de executar este Programa de Configuração. - Text Portuguese= - Text Portuguese=Faça um clique sobre Cancelar para sair da Configuração e feche todos os programas que estiver a executar. Faça um clique sobre Próximo para continuar com o programa de configuração - Text Portuguese= - Text Portuguese=AVISO: Este programa está protegido pela lei de direitos do autor e tratados internacionais - Text Portuguese= - Text Portuguese=A reprodução e a distribuição sem autorização deste programa, ou qualquer parte dele, pode dar lugar à aplicação de severas sanções civis e criminais, e serão perseguidas à extensão máxima permitida pela lei. - Text Spanish=Se recomienda encarecidamente que salga de todos los programas Windows antes de ejecutar este programa de Configuración. - Text Spanish= - Text Spanish=Haga un clic en Cancelar para abandonar la Configuración y cerrar cualquier programa que haya estado ejecutando. Haga un clic en Siguiente para continuar con el programa de Configuración. - Text Spanish= - Text Spanish=AVISO: Este programa está protegido por las leyes de derechos de autor y tratados internacionales. - Text Spanish= - Text Spanish=La reproducción o distribución no autorizadas de este programa, o cualquier parte de él, podría dar como resultado rigurosas multas civiles y penales, y se entablará la máxima acción judicial que permita la ley. - Text Italian=Ti consigliamo di uscire da tutti i programmi Windows prima di eseguire questo programma di installazione. - Text Italian= - Text Italian=Fai clic su Annulla per uscire dal programma di installazione e chiudi tutti i programmi aperti. Fai clic su Avanti per continuare con il programma di Installazione. - Text Italian= - Text Italian=AVVERTENZA: Questo programma è protetto ai sensi delle norme di legge e delle convenzioni internazionali in materia di diritti di copyright. - Text Italian= - Text Italian=La riproduzione o la distribuzione totale o parziale non autorizzata di questo programma potrà essere soggetta a penalità civili e penali, e sarà punita con la massima severità possibile a norma di legge. - Text Danish=Det anbefales kraftigt at afslutte alle Windows programmer, inden man kører dette installationsprogram. - Text Danish= - Text Danish=Klik på Annuller for at forlade installationsprogrammet og lukke alle igangværende programmer. Klik på Næste for at fortsætte med installationsprogrammet. - Text Danish= - Text Danish=ADVARSEL: Dette program er beskyttet af copyright og internationale traktater. - Text Danish= - Text Danish=Uautoriseret gengivelse eller videresalg af dette program eller dele heraf kan føre til streng civil- og/eller kriminel stra. Retsforfølgning heraf vil finde sted i det videste omfang der hjemles muligt. - Text Dutch=Het wordt aangeraden om alle Windows programma's af te sluiten voordat u met de installatie van dit programma begint. - Text Dutch= - Text Dutch=Klik op Annuleren om de installatie te verlaten en eventueel nog lopende programma's af te sluiten. Klik op Volgende om verder te gaan met het Installatieprogramma. - Text Dutch= - Text Dutch=WAARSCHUWING: dit computerprogramma is auteursrechtelijk beschermd. - Text Dutch= - Text Dutch=Onrechtmatige verveelvoudiging of distributie van dit programma of een gedeelte ervan is verboden en strafbaar en zal met alle beschikbare juridische middelen worden bestreden. - Text Norwegian=Det anbefales på det sterkeste at du avslutter alle Windows-programmer før du kjører dette Oppsett-programmet. - Text Norwegian= - Text Norwegian=Velg Avbryt for å avbryte Oppsett og lukk alle programmer som er i bruk. Velg Neste for å fortsette med Oppsett-programmet. - Text Norwegian= - Text Norwegian=ADVARSEL: Dette programmet er beskyttet i henhold til lover om opphavsrett og internasjonale konvensjoner. - Text Norwegian= - Text Norwegian=Uautorisert kopiering eller distribuering av dette programmet eller deler av det, vil resultere i alvorlig sivil og kriminell straff og vil føre til saksmål i høyest mulig utstrekning i henhold til loven. - Text Swedish=Du tillråds bestämt att gå ur alla Windows-program innan du kör installationsprogrammet. - Text Swedish= - Text Swedish=Klicka på Avbryt för att gå ur installationsprogrammet och stäng eventuella program som du har laddade. Klicka på Nästa för att fortsätta med installationen. - Text Swedish= - Text Swedish=VARNING: Detta program är skyddat av upphovsrätten och internationella avtal. - Text Swedish= - Text Swedish=Om du utan tillstånd kopierar eller distribuerar detta program eller delar av det kan det bli allvarliga civilrättsliga och brottsrättliga straffpåföljder. Vi beivrar sådana överträdelser i den allra högsta utsträckning som lagen tillåter. - end - end -end -item: Custom Dialog Set - Name=Select Destination Directory - Display Variable=DISPLAY - item: Dialog - Title=Choose Destination Location - Title French=Choisissez la localisation de destination - Title German=Zielpfad wählen - Title Portuguese=Escolher Local de Destino - Title Spanish=Elegir una localización de destino - Title Italian=Scegli Posizione di Destinazione - Title Danish=Vælg destinationsmappe - Title Dutch=Kies doellocatie - Title Norwegian=Velg målplassering - Title Swedish=Välj ställe för installationen - Width=280 - Height=224 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=172 185 214 199 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suivant> - Text German=&Weiter> - Text Portuguese=&Próximo> - Text Spanish=&Siguiente > - Text Italian=&Avanti > - Text Danish=&Næste> - Text Dutch=&Volgende> - Text Norwegian=&Neste> - Text Swedish=&Nästa > - end - item: Push Button - Rectangle=130 185 172 199 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Flags=0000000000000001 - Text=< &Back - Text French=<&Retour - Text German=<&Zurück - Text Portuguese=<&Retornar - Text Spanish=<&Retroceder - Text Italian=< &Indietro - Text Danish=<&Tilbage - Text Dutch=<&Terug - Text Norwegian=<&Tilbake - Text Swedish=< &Tillbaka - end - item: Push Button - Rectangle=222 185 264 199 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Annuller - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - item: Static - Rectangle=9 177 263 178 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=89 10 260 74 - Create Flags=01010000000000000000000000000000 - Text=Setup will install %APPTITLE% in the following folder. - Text= - Text=To install into a different folder, click Browse, and select another folder. - Text= - Text=You can choose not to install %APPTITLE% by clicking Cancel to exit Setup. - Text French=%APPTITLE% va être installé dans le répertoire ci-dessous - Text French= - Text French=Pour l'installer dans un répertoire différent, cliquez sur Parcourir et sélectionnez un autre répertoire - Text French= - Text French=Vous pouvez choisir de ne pas installer %APPTITLE% en cliquant sur Annuler pour quitter l'Installation - Text German=Installation speichert %APPTITLE% im unten angegebenen Ordner: - Text German= - Text German=Zur Installation in einem anderen Ordner auf Blättern klicken und einen anderen Ordner wählen. - Text German= - Text German=Wenn Sie %APPTITLE% nicht installieren möchten, können Sie durch Klicken auf Abbrechen die Installation beenden. - Text Portuguese=Configuração instalará %APPTITLE% na seguinte pasta - Text Portuguese= - Text Portuguese=Para instalar numa pasta diferente, faça um clique sobre Procurar, e seleccione uma outra pasta. - Text Portuguese= - Text Portuguese=Pode escolher não instalar %APPTITLE% clicando no botão Cancelar para sair da Configuração - Text Spanish=El programa de Configuración instalará %APPTITLE% en la siguiente carpeta. - Text Spanish= - Text Spanish=Para instalar en una carpeta diferente, haga un clic en Visualizar, y seleccione otra carpeta. - Text Spanish= - Text Spanish=Puede elegir no instalar %APPTITLE% haciendo un clic en Cancelar para salir de Configuración. - Text Italian=Il programma di installazione installerà %APPTITLE% nella seguente cartella. - Text Italian= - Text Italian=Per effettuare l’installazione in una cartella diversa, fai clic su Sfoglia, e scegli un’altra cartella. - Text Italian= - Text Italian=Puoi scegliere di non installare %APPTITLE% facendo clic su Annulla per uscire dal programma di installazione - Text Danish=Installationsprogrammet installerer %APPTITLE% i denne mappe. - Text Danish= - Text Danish=Man installerer i en anden mappe ved at klikke på Browse og vælge en anden mappe. - Text Danish= - Text Danish=Man kan vælge ikke at installere %APPTITLE% ved at klikke på Slet og forlade installationsprogrammet. - Text Dutch=Het installatieprogramma installeert %APPTITLE% in de volgende directory. - Text Dutch= - Text Dutch=Als u het in een andere directory wilt installeren, klik dan op Bladeren en kies een andere locatie. - Text Dutch= - Text Dutch=U kunt ervoor kiezen om %APPTITLE% niet te installeren: klik op Annuleren om het installatieprogramma te verlaten. - Text Norwegian=Oppsett vil installere %APPTITLE% i følgende mappe. - Text Norwegian= - Text Norwegian=For å installere i en annen mappe, klikk Bla igjennom og velg en annen mappe. - Text Norwegian= - Text Norwegian=Du kan velge å ikke installere %APPTITLE% ved å velge Avbryt for å gå ut av Oppsett. - Text Swedish=Installationsprogrammet installerar %APPTITLE% i följande mapp. - Text Swedish= - Text Swedish=Om du vill att installationen ska göras i en annan mapp, klickar du på Bläddra och väljer en annan mapp. - Text Swedish= - Text Swedish=Du kan välja att inte installera %APPTITLE% genom att klicka på Avbryt för att lämna installationsprogrammet. - end - item: Static - Rectangle=90 134 260 162 - Action=1 - Create Flags=01010000000000000000000000000111 - Text=Destination Folder - Text French=Répertoire de destination - Text German=Zielordner - Text Portuguese=Pasta de Destino - Text Spanish=Carpeta de Destino - Text Italian=Cartella di destinazione - Text Danish=Destinationsmappe - Text Dutch=Doeldirectory - Text Norwegian=Målmappe - Text Swedish=Destinationsmapp - end - item: Push Button - Rectangle=213 143 255 157 - Variable=MAINDIR_SAVE - Value=%MAINDIR% - Destination Dialog=1 - Action=2 - Create Flags=01010000000000010000000000000000 - Text=B&rowse... - Text French=P&arcourir - Text German=B&lättern... - Text Portuguese=P&rocurar - Text Spanish=V&isualizar... - Text Italian=Sfoglia... - Text Danish=&Gennemse... - Text Dutch=B&laderen... - Text Norwegian=Bla igjennom - Text Swedish=&Bläddra - end - item: Static - Rectangle=95 146 211 157 - Destination Dialog=2 - Create Flags=01010000000000000000000000000000 - Text=%MAINDIR% - Text French=%MAINDIR% - Text German=%MAINDIR% - Text Portuguese=%MAINDIR% - Text Spanish=%MAINDIR% - Text Italian=%MAINDIR% - Text Danish=%MAINDIR% - Text Dutch=%MAINDIR% - Text Norwegian=%MAINDIR% - Text Swedish=%MAINDIR% - end - item: Static - Rectangle=94 81 138 96 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Flags=0000000000000001 - Name=MS Sans Serif - Font Style=-11 0 0 0 700 0 0 0 0 1 2 1 34 - Text=Please note: - end - item: Static - Rectangle=138 82 254 106 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=wxPython will be installed in a subdirectory of the path specfied below. - end - item: Static - Rectangle=91 74 259 113 - Action=1 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000111 - end - end - item: Dialog - Title=Select Destination Directory - Title French=Choisissez le répertoire de destination - Title German=Zielverzeichnis wählen - Title Portuguese=Seleccionar Directório de Destino - Title Spanish=Seleccione el Directorio de Destino - Title Italian=Seleziona Directory di destinazione - Title Danish=Vælg Destinationsbibliotek - Title Dutch=Kies doeldirectory - Title Norwegian=Velg målkatalog - Title Swedish=Välj destinationskalatog - Width=221 - Height=173 - Font Name=Helv - Font Size=8 - item: Listbox - Rectangle=5 2 160 149 - Variable=MAINDIR - Create Flags=01010000100000010000000101000000 - Flags=0000110000100010 - Text=%MAINDIR% - Text French=%MAINDIR% - Text German=%MAINDIR% - Text Portuguese=%MAINDIR% - Text Spanish=%MAINDIR% - Text Italian=%MAINDIR% - Text Danish=%MAINDIR% - Text Dutch=%MAINDIR% - Text Norwegian=%MAINDIR% - Text Swedish=%MAINDIR% - end - item: Push Button - Rectangle=167 6 212 21 - Create Flags=01010000000000010000000000000001 - Text=OK - Text French=OK - Text German=OK - Text Portuguese=OK - Text Spanish=ACEPTAR - Text Italian=OK - Text Danish=OK - Text Dutch=OK - Text Norwegian=OK - Text Swedish=OK - end - item: Push Button - Rectangle=167 25 212 40 - Variable=MAINDIR - Value=%MAINDIR_SAVE% - Create Flags=01010000000000010000000000000000 - Flags=0000000000000001 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Slet - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - end -end -item: Custom Dialog Set - Name=Start Installation - Display Variable=DISPLAY - item: Dialog - Title=Start Installation - Title French=Commencer l'installation - Title German=Installation beginnen - Title Portuguese=Iniciar Instalação - Title Spanish=Comenzar la Instalación - Title Italian=Avvia Installazione - Title Danish=Start installationen - Title Dutch=Start de installatie - Title Norwegian=Start installeringen - Title Swedish=Starta installationen - Width=280 - Height=224 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=172 185 214 199 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Next > - Text French=&Suivant> - Text German=&Weiter> - Text Portuguese=&Próximo> - Text Spanish=&Siguiente > - Text Italian=&Avanti > - Text Danish=&Næste> - Text Dutch=&Volgende> - Text Norwegian=&Neste> - Text Swedish=&Nästa > - end - item: Push Button - Rectangle=130 185 172 199 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Text=< &Back - Text French=<&Retour - Text German=<&Zurück - Text Portuguese=<&Retornar - Text Spanish=<&Retroceder - Text Italian=< &Indietro - Text Danish=<&Tilbage - Text Dutch=<&Terug - Text Norwegian=<&Tilbake - Text Swedish=< &Tillbaka - end - item: Push Button - Rectangle=222 185 264 199 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Annuller - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - item: Static - Rectangle=9 177 263 178 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=90 10 260 70 - Create Flags=01010000000000000000000000000000 - Text=You are now ready to install %APPTITLE%. - Text= - Text=Press the Next button to begin the installation or the Back button to reenter the installation information. - Text French=Vous êtes maintenant prêt à installer %APPTITLE% - Text French= - Text French=Cliquez sur Suivant pour commencer l'installation ou Retour pour entrer à nouveau les informations d'installation - Text German=Sie sind jetzt zur Installation von %APPTITLE% bereit. - Text German= - Text German=Auf die Schaltfläche Weiter klicken, um mit dem Start der Installation zu beginnen, oder auf die Schaltfläche Zurück, um die Installationsinformationen nochmals aufzurufen. - Text Portuguese=Está agora pronto para instalar %APPTITLE% - Text Portuguese= - Text Portuguese=Pressione o botão Próximo para começar a instalação ou o botão Retornar para introduzir novamente a informação sobre a instalação - Text Spanish=Ahora estará listo para instalar %APPTITLE%. - Text Spanish= - Text Spanish=Pulse el botón de Siguiente para comenzar la instalación o el botón Retroceder para volver a introducir la información sobre la instalación. - Text Italian=Sei pronto ad installare %APPTITLE%. - Text Italian= - Text Italian=Premi il tasto Avanti per iniziare l’installazione o il tasto Indietro per rientrare nuovamente nei dati sull’installazione - Text Danish=Du er nu klar til at installere %APPTITLE%. - Text Danish= - Text Danish=Klik på Næste for at starte installationen eller på Tilbage for at ændre installationsoplysningerne. - Text Dutch=U bent nu klaar om %APPTITLE% te installeren. - Text Dutch= - Text Dutch=Druk op Volgende om met de installatie te beginnen of op Terug om de installatie-informatie opnieuw in te voeren. - Text Norwegian=Du er nå klar til å installere %APPTITLE% - Text Norwegian= - Text Norwegian=Trykk på Neste-tasten for å starte installeringen, eller Tilbake-tasten for å taste inn installasjonsinformasjonen på nytt. - Text Swedish=Du är nu redo att installera %APPTITLE%. - Text Swedish= - Text Swedish=Tryck på Nästa för att starta installationen eller på Tillbaka för att skriva in installationsinformationen på nytt. - end - end -end -item: If/While Statement - Variable=DISPLAY - Value=Select Destination Directory -end -item: Set Variable - Variable=BACKUP - Value=%MAINDIR%\wxPython\BACKUP -end -item: End Block -end -item: End Block -end -item: If/While Statement - Variable=DOBACKUP - Value=A -end -item: Set Variable - Variable=BACKUPDIR - Value=%BACKUP% -end -item: End Block -end -item: If/While Statement - Variable=BRANDING - Value=1 -end -item: If/While Statement - Variable=DOBRAND - Value=1 -end -item: Edit INI File - Pathname=%INST%\CUSTDATA.INI - Settings=[Registration] - Settings=NAME=%NAME% - Settings=COMPANY=%COMPANY% - Settings= -end -item: End Block -end -item: End Block -end -item: Remark -end -item: Set Variable - Variable=INST_LOG_PATH - Value=%MAINDIR%\wxPython\install.log -end -item: Open/Close INSTALL.LOG - Pathname=%INST_LOG_PATH% - Flags=00000010 -end -item: Check Disk Space - Component=COMPONENTS -end -item: Remark -end -item: Install File - Source=c:\WINNT\System32\Msvcirt.dll - Destination=%SYS%\Msvcirt.dll - Flags=0000001010000011 -end -item: Install File - Source=c:\WINNT\System32\Msvcrt.dll - Destination=%SYS%\Msvcrt.dll - Flags=0000001010000011 -end -item: Install File - Source=c:\projects\wx\lib\wx22_5.dll - Destination=%MAINDIR%\wxPython\wx22_5.dll - Flags=0000000010010010 -end -item: Install File - Source=c:\Projects\wx\wxPython\wxPython\*.py - Destination=%MAINDIR%\wxPython - Description=wxPython shadow class modules - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\wxPython\*.pyd - Destination=%MAINDIR%\wxPython - Description=wxPython extension modules - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\wxPython\*.txt - Destination=%MAINDIR%\wxPython - Description=README file - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\wxPython\lib\*.py - Destination=%MAINDIR%\wxPython\lib - Description=wxPython Standard Library - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\wxPython\lib\editor\*.py - Destination=%MAINDIR%\wxPython\lib\editor - Description=wxPython Standard Library - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\wxPython\lib\editor\*.txt - Destination=%MAINDIR%\wxPython\lib\editor - Description=wxPython Standard Library - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\*.py - Destination=%MAINDIR%\wxPython\demo - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\README.txt - Destination=%MAINDIR%\wxPython\demo\README.txt - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\*.xml - Destination=%MAINDIR%\wxPython\demo - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\bitmaps\*.bmp - Destination=%MAINDIR%\wxPython\demo\bitmaps - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\bitmaps\*.gif - Destination=%MAINDIR%\wxPython\demo\bitmaps - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\bitmaps\*.jpg - Destination=%MAINDIR%\wxPython\demo\bitmaps - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\bitmaps\*.png - Destination=%MAINDIR%\wxPython\demo\bitmaps - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\bitmaps\*.ico - Destination=%MAINDIR%\wxPython\demo\bitmaps - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\*.htm - Destination=%MAINDIR%\wxPython\demo\data - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\*.html - Destination=%MAINDIR%\wxPython\demo\data - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\*.py - Destination=%MAINDIR%\wxPython\demo\data - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\*.png - Destination=%MAINDIR%\wxPython\demo\data - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\grid.i - Destination=%MAINDIR%\wxPython\demo\data\grid.i - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\stc.h - Destination=%MAINDIR%\wxPython\demo\data\stc.h - Description=Demos - Flags=0000000010000010 -end -item: Install File - Source=c:\Projects\wx\wxPython\demo\data\tips.txt - Destination=%MAINDIR%\wxPython\demo\data\tips.txt - Description=Demos - Flags=0000000010000010 -end -item: Remark -end -item: Install File - Source=C:\PROJECTS\wx\wxPython\*.txt - Destination=%MAINDIR%\wxPython\docs\ - Flags=0000000010000010 -end -item: Install File - Source=C:\PROJECTS\wx\wxPython\licence\*.txt - Destination=%MAINDIR%\wxPython\docs\licence\ - Flags=0000000010000010 -end -item: Remark -end -item: Install File - Source=C:\PROJECTS\wx\docs\htmlhelp\wx.chm - Destination=%MAINDIR%\wxPython\docs\wx.chm - Description=wxPython documentation - Flags=0000000010000010 -end -item: Install File - Source=c:\PROJECTS\wx\docs\htmlhelp\ogl.chm - Destination=%MAINDIR%\wxPython\docs\ogl.chm - Description=wxPython documentation - Flags=0000000010000010 -end -item: Remark -end -item: Remark -end -item: Remark - Text= Install Support for uninstalling the application. -end -item: Set Variable - Variable=UNINSTALL_PATH - Value=%MAINDIR%\wxPython\UNWISE.EXE -end -item: Compiler Variable If - Variable=_EXE_OS_TYPE_ - Value=WIN32 -end -item: Install File - Source=%_WISE_%\UNWISE32.EXE - Destination=%UNINSTALL_PATH% - Flags=0000000000000010 -end -item: Compiler Variable Else -end -item: Install File - Source=%_WISE_%\UNWISE.EXE - Destination=%UNINSTALL_PATH% - Flags=0000000000000010 -end -item: Compiler Variable End -end -item: Remark -end -item: Remark - Text= Install the add/remove or uninstall icon -end -item: Set Variable - Variable=UNINSTALL_PATH - Value=%UNINSTALL_PATH% - Flags=00010100 -end -item: Set Variable - Variable=INST_LOG_PATH - Value=%INST_LOG_PATH% - Flags=00010100 -end -item: Check Configuration - Flags=10111011 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%APPTITLE% - Value Name=DisplayName - Root=2 -end -item: Edit Registry - Total Keys=1 - Key=Software\Microsoft\Windows\CurrentVersion\Uninstall\%APPTITLE% - New Value=%UNINSTALL_PATH% /A %INST_LOG_PATH% - New Value= - Value Name=UninstallString - Root=2 -end -item: Else Statement -end -item: End Block -end -item: Remark -end -item: Remark -end -item: Add Text to INSTALL.LOG - Text=File Tree: %MAINDIR%\wxPython\*.* -end -item: Remark -end -item: Set Variable - Variable=COMMON - Value=%COMMON% - Flags=00010100 -end -item: Set Variable - Variable=MAINDIR - Value=%MAINDIR% - Flags=00010100 -end -item: Check Configuration - Flags=10111011 -end -item: Get Registry Key Value - Variable=STARTUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Start Menu\Programs\StartUp - Value Name=StartUp - Flags=00000010 -end -item: Get Registry Key Value - Variable=DESKTOPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Desktop - Value Name=Desktop - Flags=00000010 -end -item: Get Registry Key Value - Variable=STARTMENUDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Start Menu - Value Name=Start Menu - Flags=00000010 -end -item: Get Registry Key Value - Variable=GROUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%WIN%\Start Menu\Programs - Value Name=Programs - Flags=00000010 -end -item: Get Registry Key Value - Variable=CSTARTUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%STARTUPDIR% - Value Name=Common Startup - Flags=00000100 -end -item: Get Registry Key Value - Variable=CDESKTOPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%DESKTOPDIR% - Value Name=Common Desktop - Flags=00000100 -end -item: Get Registry Key Value - Variable=CSTARTMENUDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%STARTMENUDIR% - Value Name=Common Start Menu - Flags=00000100 -end -item: Get Registry Key Value - Variable=CGROUPDIR - Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders - Default=%GROUPDIR% - Value Name=Common Programs - Flags=00000100 -end -item: Set Variable - Variable=CGROUP_SAVE - Value=%GROUP% -end -item: Set Variable - Variable=GROUP - Value=%GROUPDIR%\%GROUP% -end -item: Create Shortcut - Source=%PYTHONDIR%\pythonw.exe - Destination=%CGROUPDIR%\%CGROUP_SAVE%\Run the DEMO.lnk - Command Options=demo.py - Working Directory=%MAINDIR%\wxPython\demo - Icon Number=0 - Key Type=1536 - Flags=00000001 -end -item: Create Shortcut - Source=%MAINDIR%\wxPython\docs\wx.chm - Destination=%CGROUPDIR%\%CGROUP_SAVE%\wxWindows User Guide.lnk - Icon Number=0 -end -item: Create Shortcut - Source=%MAINDIR%\wxPython\docs\ogl.chm - Destination=%CGROUPDIR%\%CGROUP_SAVE%\wxOGL User Guide.lnk - Icon Number=0 - Key Type=1536 - Flags=00000001 -end -item: Create Shortcut - Source=%MAINDIR%\wxPython\docs\licence\licence.txt - Destination=%CGROUPDIR%\%CGROUP_SAVE%\License.lnk - Icon Number=0 - Key Type=1536 - Flags=00000001 -end -item: Create Shortcut - Source=%MAINDIR%\wxPython\docs\README.txt - Destination=%CGROUPDIR%\%CGROUP_SAVE%\ReadMe.lnk - Icon Number=0 - Key Type=1536 - Flags=00000001 -end -item: Create Shortcut - Source=%MAINDIR%\wxPython\docs\CHANGES.txt - Destination=%CGROUPDIR%\%CGROUP_SAVE%\Changes.lnk - Icon Number=0 - Key Type=1536 - Flags=00000001 -end -item: Create Shortcut - Source=%UNINSTALL_PATH% - Destination=%CGROUPDIR%\%CGROUP_SAVE%\Uninstall %APPTITLE%.lnk - Command Options=%INST_LOG_PATH% - Icon Number=0 -end -item: Else Statement -end -item: Add ProgMan Icon - Group=%GROUP% - Icon Name=Uninstall %APPTITLE% - Command Line=%UNINSTALL_PATH% %INST_LOG_PATH% -end -item: Add ProgMan Icon - Group=%GROUP% - Icon Name=Run the DEMO - Command Line=pythonw.exe demo.py - Default Directory=%MAINDIR%\wxPython\demo -end -item: Add ProgMan Icon - Group=%GROUP% - Icon Name=wxWindows User Guide - Command Line=%MAINDIR%\wxPython\docs\wx.chm -end -item: End Block -end -item: Self-Register OCXs/DLLs - Description=Updating System Configuration, Please Wait... -end -remarked item: Edit Registry - Total Keys=1 - Key=SOFTWARE\Python\PythonCore\%PYTHONVER%\PythonPath\wxPython - New Value=%MAINDIR% - New Value= - Root=2 -end -item: Wizard Block - Direction Variable=DIRECTION - Display Variable=DISPLAY - Bitmap Pathname=%_WISE_%\DIALOGS\TEMPLATE\WIZARD.BMP - X Position=9 - Y Position=10 - Filler Color=8421440 - Flags=00000011 -end -item: Custom Dialog Set - Name=Finished - Display Variable=DISPLAY - item: Dialog - Title=Installation Complete - Title French=Installation en cours - Title German=Installation abgeschlossen - Title Portuguese=Instalação Completa - Title Spanish=Se ha completado la Instalación - Title Italian=Installazione completata - Title Danish=Installation gennemført - Title Dutch=Installatie afgerond - Title Norwegian=Installasjonen er fullført - Title Swedish=Installationen klar - Width=280 - Height=224 - Font Name=Helv - Font Size=8 - item: Push Button - Rectangle=170 185 212 199 - Variable=DIRECTION - Value=N - Create Flags=01010000000000010000000000000001 - Text=&Finish > - Text French=&Terminer> - Text German=&Fertigstellen> - Text Portuguese=&Terminar > - Text Spanish=&Finalizar> - Text Italian=&Fine > - Text Danish=&Afslut > - Text Dutch=&Klaar> - Text Norwegian=&Avslutt> - Text Swedish=&Sluta> - end - item: Push Button - Control Name=CANCEL - Rectangle=222 185 264 199 - Action=3 - Create Flags=01010000000000010000000000000000 - Text=Cancel - Text French=Annuler - Text German=Abbrechen - Text Portuguese=Cancelar - Text Spanish=Cancelar - Text Italian=Annulla - Text Danish=Annuller - Text Dutch=Annuleren - Text Norwegian=Avbryt - Text Swedish=Avbryt - end - item: Static - Rectangle=9 177 263 178 - Action=3 - Create Flags=01010000000000000000000000000111 - end - item: Static - Rectangle=90 10 260 63 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000000000000000000000 - Text=%APPTITLE% has been successfully installed. - Text= - Text= - Text=Press the Finish button to exit this installation. - Text= - Text French=L'installation de %APPTITLE% est réussie - Text French= - Text French= - Text French=Cliquez sur Terminer pour quitter cette installation - Text French= - Text German=%APPTITLE% wurde erfolgreich installiert. - Text German= - Text German= - Text German=Zum Beenden dieser Installation Fertigstellen anklicken. - Text German= - Text Portuguese=%APPTITLE% foi instalado com êxito - Text Portuguese= - Text Portuguese= - Text Portuguese=Pressionar o botão Terminar para sair desta instalação - Text Portuguese= - Text Spanish=%APPTITLE% se ha instalado con éxito. - Text Spanish= - Text Spanish= - Text Spanish=Pulse el botón de Finalizar para salir de esta instalación. - Text Spanish= - Text Italian=%APPTITLE% è stato installato. - Text Italian= - Text Italian= - Text Italian=Premi il pulsante Fine per uscire dal programma di installazione - Text Italian= - Text Danish=%APPTITLE% er nu installeret korrekt. - Text Danish= - Text Danish= - Text Danish=Klik på Afslut for at afslutte installationen. - Text Danish= - Text Dutch=%APPTITLE% is met succes geïnstalleerd. - Text Dutch= - Text Dutch= - Text Dutch=Druk op Klaar om deze installatie af te ronden. - Text Dutch= - Text Norwegian=Installasjonen av %APPTITLE% er vellykket. - Text Norwegian= - Text Norwegian= - Text Norwegian=Trykk på Avslutt-tasten for å avslutte denne installasjonen. - Text Norwegian= - Text Swedish=Installationen av %APPTITLE% har lyckats. - Text Swedish= - Text Swedish= - Text Swedish=Tryck på Sluta för att gå ur installationsprogrammet. - Text Swedish= - end - item: Push Button - Control Name=BACK - Rectangle=128 185 170 199 - Variable=DIRECTION - Value=B - Create Flags=01010000000000010000000000000000 - Text=< &Back - Text French=<&Retour - Text German=<&Zurück - Text Portuguese=<&Retornar - Text Spanish=<&Retroceder - Text Italian=< &Indietro - Text Danish=<&Tilbage - Text Dutch=<&Terug - Text Norwegian=<&Tilbake - Text Swedish=< &Tillbaka - end - item: Push Button - Rectangle=90 68 153 82 - Alternate=0%MAINDIR%\wxPython\docs\README.txt - Action=6 - Enabled Color=00000000000000001111111111111111 - Create Flags=01010000000000010000000000000000 - Text=View README.txt - end - item: Set Control Attribute - Control Name=BACK - Operation=1 - end - item: Set Control Attribute - Control Name=CANCEL - Operation=1 - end - end -end -item: End Block -end -item: New Event - Name=Cancel -end -item: Include Script - Pathname=%_WISE_%\INCLUDE\rollback.wse -end diff --git a/wxPython/distrib/wxPythonFull.spec.in b/wxPython/distrib/wxPythonFull.spec.in index 8dbf5154b6..fa0745bb6f 100644 --- a/wxPython/distrib/wxPythonFull.spec.in +++ b/wxPython/distrib/wxPythonFull.spec.in @@ -1,33 +1,34 @@ %define pref %{_prefix} %define python @PYTHON@ %define pyver @PYVER@ -%define debug @DEBUG@ %define port @PORT@ %define lcport @LCPORT@ +%define unicode @UNICODE@ %define tarname @TARNAME@ %define version @VERSION@ %define ver2 @VER2@ %define release 1 %define wxpref %{pref}/lib/wxPython +%define name wxPython%{port}-py%{pyver} -# Should --enable-debug_flag be used in release builds? + +# Should the builtin image and etc. libs be used, or system libs? +# Distro specific RPMs should probably set this to 0, generic ones +# should use 1 +%define builtin_libs 1 + + +# Should --enable-debug_flag be used in release builds? Using it +# defines __WXDEBUG__ and gives us runtime diagnostics that are turned +# into Python exceptions starting with 2.3.4. (So turning it on is a +# very helpful thing IMO and is recommended.) %define debug_flag 1 -%if %{debug} - %define name wxPython%{port}-py%{pyver}-dbg - %define othername wxPython%{port}-py%{pyver} -%else - %define name wxPython%{port}-py%{pyver} - %define othername wxPython%{port}-py%{pyver}-dbg -%endif - - -%if %{debug} || %{debug_flag} - %define wxconfigname %{wxpref}/bin/wx%{lcport}d-%{ver2}-config -%else - %define wxconfigname %{wxpref}/bin/wx%{lcport}-%{ver2}-config -%endif +# build the name of the real wx-config from the port, flags, etc. +%define dbgflg %(if [ "%{debug_flag}" = "1" ]; then echo d; fi) +%define uniflg %(if [ "%{unicode}" = "1" ]; then echo u; fi) +%define wxconfigname %{wxpref}/bin/wx%{lcport}%{uniflg}%{dbgflg}-%{ver2}-config #---------------------------------------------------------------- @@ -44,13 +45,9 @@ BuildRoot: %{_tmppath}/%{name}-buildroot Prefix: %{pref} #BuildRequires: %{python} -Provides: wxwin -Provides: wx%{port} = %{version} Provides: wxPython = %{version} +Provides: wxPython%{port} = %{version} - -# They conflict with each other, so let them replace each other -Obsoletes: %{othername} # old wxPython packages Obsoletes: wxPython @@ -65,13 +62,13 @@ This package is implemented using the %{port} port of wxWindows, and includes the wx%{port} shared libs and etc. -%package devel +%package -n wxPython%{port}-devel Summary: wxPython%{port} development files Group: Development/Libraries Requires: wxPython%{port} = %{version} -%description devel +%description -n wxPython%{port}-devel This packages contains the headers and etc. for building apps or Python extension modules that use the same wx%{port} shared libraries that wxPython uses. @@ -89,87 +86,144 @@ else MAKE="make" fi +WXDIR=`pwd` mkdir build cd build -# Configure, trying to reduce dependencies -../configure --with-%{lcport} \ +# Configure, trying to reduce external dependencies +$WXDIR/configure --with-%{lcport} \ --prefix=%{wxpref} \ --disable-soname \ --enable-rpath=%{wxpref}/lib \ --with-opengl \ -%if %{debug} - --enable-debug \ -%else +%if %{unicode} + --enable-gtk2 \ + --enable-unicode \ +%endif + --enable-geometry \ --enable-optimise \ %if %{debug_flag} --enable-debug_flag \ %endif -%endif +%if %{builtin_libs} --with-libjpeg=builtin \ --with-libpng=builtin \ --with-libtiff=builtin \ --with-zlib=builtin \ - -## --enable-debug_flag \ -## --with-odbc \ +%endif # Build wxWindows $MAKE -cd ../locale -make allmo - - -# ** Unfortunately we have to do a bit of installation here so wxPython -# can be built. Perhaps wx-config should be changed to be able to be -# used from the build dir, maybe with an --inplace flag... Move these -# three lines to %install if/when that happens. -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT -cd ../build -make prefix=$RPM_BUILD_ROOT%{wxpref} install - # Now build wxPython -cd ../wxPython +cd $WXDIR/wxPython %{python} setup.py \ IN_CVS_TREE=1 \ NO_SCRIPTS=1 \ - WX_CONFIG="$RPM_BUILD_ROOT%{wxpref}/bin/wx-config --prefix=$RPM_BUILD_ROOT%{wxpref}" \ + WXPORT=%{lcport} \ + UNICODE=%{unicode} \ + WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \ build +## WX_CONFIG="$WXDIR/build/wx-config --inplace --prefix=$RPM_BUILD_ROOT%{wxpref}" \ + + + +# Build wxrc (XRC resource tool) but don't use the makefiles since they expect +# a shared version of the xrc lib to have been built... +cd $WXDIR/contrib/utils/wxrc +WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" +wCC=`$WX_CONFIG --cc` +wCXX=`$WX_CONFIG --cxx` + +for f in wxrc.cpp ../../src/xrc/*.cpp; do + echo $f + $wCXX `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f +done +for f in ../../src/xrc/expat/xmlparse/xmlparse.c ../../src/xrc/expat/xmltok/xmlrole.c ../../src/xrc/expat/xmltok/xmltok.c; do + echo $f + $wCC `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f +done + +# the handlers are not needed +rm xh_*.o xmlrsall.o + +$wCXX `$WX_CONFIG --libs` *.o -o wxrc +strip wxrc + #---------------------------------------------------------------- %install -%find_lang wxstd -cd wxPython +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +# install wxWindows +WXDIR=`pwd` +cd build +make prefix=$RPM_BUILD_ROOT%{wxpref} install + +# install wxPython +cd $WXDIR/wxPython %{python} setup.py \ IN_CVS_TREE=1 \ NO_SCRIPTS=1 \ + WXPORT=%{lcport} \ + UNICODE=%{unicode} \ WX_CONFIG="$RPM_BUILD_ROOT%{wxpref}/bin/wx-config --prefix=$RPM_BUILD_ROOT%{wxpref}" \ install \ --root=$RPM_BUILD_ROOT # Since I want this RPM to be as generic as possible I won't let -# distutils copy the scripts, since it will mangle the #! line -# to use the real python pathname. Since some distros install -# python 2.2 as python2 and others as python, then I can't let -# it do that otherwise the dependencies will be fouled up. Copy -# them manually instead: +# distutils copy the scripts since it will mangle the #! line to use +# the real python pathname. Since some distros install python 2.2 as +# python2 and others as python, then I can't let distutils do that +# otherwise the dependencies will be fouled up. Copy them manually +# instead, leaving the #!/bin/env line intact. +# +# TODO: Should this be dependent on %{builtin_libs} or something like it? mkdir -p $RPM_BUILD_ROOT/usr/bin for s in \ + helpviewer \ img2png \ img2py \ img2xpm \ pycrust \ + pycwrap \ pyshell \ xrced; do - cp scripts/$s $RPM_BUILD_ROOT/usr/bin + cp scripts/$s $RPM_BUILD_ROOT/%{pref}/bin done +# Install wxrc +cp $WXDIR/contrib/utils/wxrc/wxrc $RPM_BUILD_ROOT/%{pref}/bin + + +# Generate the filelists. For some reason the %defattr below is still +# resulting in many (but not all) files not owned by root when just +# specifying directories and wildcards to be included in each package. +# So instead we'll build some explicit filelists here and use %attr on +# each entry. +cd $WXDIR +mkdir -p $RPM_BUILD_ROOT%{pref}/share/doc +GFL="%{python} wxPython/distrib/genfilelist.py" +$GFL $RPM_BUILD_ROOT %{pref} > FILELIST +$GFL -r $RPM_BUILD_ROOT %{pref}/bin >> FILELIST +$GFL $RPM_BUILD_ROOT %{pref}/lib >> FILELIST +$GFL -r $RPM_BUILD_ROOT %{pref}/lib/python%{pyver} >> FILELIST +$GFL -r $RPM_BUILD_ROOT %{pref}/share >> FILELIST +$GFL $RPM_BUILD_ROOT %{wxpref} >> FILELIST +$GFL $RPM_BUILD_ROOT %{wxpref}/lib >> FILELIST +$GFL $RPM_BUILD_ROOT "%{wxpref}/lib/libwx*" >> FILELIST +$GFL -r $RPM_BUILD_ROOT %{wxpref}/share >> FILELIST + +$GFL $RPM_BUILD_ROOT %{wxpref}/include > DEVELLIST +$GFL -r $RPM_BUILD_ROOT %{wxpref}/include/wx >> DEVELLIST +$GFL -r $RPM_BUILD_ROOT %{wxpref}/lib/wx >> DEVELLIST +$GFL $RPM_BUILD_ROOT %{wxconfigname} >> DEVELLIST +$GFL $RPM_BUILD_ROOT %{wxpref}/bin/wx-config >> DEVELLIST #---------------------------------------------------------------- @@ -178,40 +232,16 @@ done #---------------------------------------------------------------- -%post -/sbin/ldconfig - -#---------------------------------------------------------------- -%postun -/sbin/ldconfig - - - -#---------------------------------------------------------------- -%files -%doc docs/preamble.txt -%doc docs/licence.txt -%doc docs/readme.txt -%doc docs/changes.txt -%doc wxPython/README.txt -%doc wxPython/CHANGES.txt +%files -f FILELIST %defattr(-,root,root) -%{wxpref}/lib/libwx* -%{pref}/lib/python* -%{wxpref}/share/ -%{pref}/bin/* +%doc docs/preamble.txt docs/licence.txt docs/readme.txt docs/changes.txt +%doc wxPython/README.txt wxPython/CHANGES.txt -%files devel +%files -n wxPython%{port}-devel -f DEVELLIST %defattr(-,root,root) -%{wxpref}/include/wx -%{wxpref}/lib/wx -%{wxconfigname} -%{wxpref}/bin/wx-config #---------------------------------------------------------------- -%changelog - # end of file diff --git a/wxPython/distrib/zipall.bat b/wxPython/distrib/zipall.bat deleted file mode 100755 index c044043d11..0000000000 --- a/wxPython/distrib/zipall.bat +++ /dev/null @@ -1,4 +0,0 @@ - -find . | grep -v "/CVS" | grep -v "./build/" | grep -v "./distrib/" | grep -v ".pyd" | grep -v ".pdb" | grep -v "contrib/ogl/contrib" | grep -v "contrib/stc/contrib" | zip -@ wxPython.zip - - diff --git a/wxPython/distrib/zipit.bat b/wxPython/distrib/zipit.bat deleted file mode 100755 index ebb4928776..0000000000 --- a/wxPython/distrib/zipit.bat +++ /dev/null @@ -1,44 +0,0 @@ -@echo off - -rem **** Make a directory to build up a distribution tree -md _distrib_zip -md _distrib_zip\wxPython-%1 - -REM rem **** Copy the license files -REM copy %WXWIN%\docs\gpl.txt _distrib_zip\wxPython-%1 -REM copy %WXWIN%\docs\lgpl.txt _distrib_zip\wxPython-%1 -REM copy %WXWIN%\docs\licence.txt _distrib_zip\wxPython-%1 -REM copy %WXWIN%\docs\licendoc.txt _distrib_zip\wxPython-%1 -REM copy %WXWIN%\docs\preamble.txt _distrib_zip\wxPython-%1 - -REM rem **** Make a zip fron the live files -REM zip -@ -r _distrib_zip\temp.zip < distrib\wxPython.rsp - -REM rem **** Unzip it in our build dir -REM cd _distrib_zip\wxPython-%1 -REM unzip ..\temp.zip - -REM rem **** zip up the build dir -REM cd .. -REM zip -r ..\distrib\wxPython-src-%1.zip wxPython-%1 - -cd _distrib_zip - -rem **** copy the docs into the tree -md wxPython-%1\docs -md wxPython-%1\docs\wx -md wxPython-%1\docs\ogl -copy %WXWIN%\docs\html\wx\*.* wxPython-%1\docs\wx -copy wxPython-%1\docs\wx\wx.htm wxPython-%1\docs\wx\index.htm -copy %WXWIN%\docs\html\ogl\*.* wxPython-%1\docs\ogl -copy wxPython-%1\docs\ogl\ogl.htm wxPython-%1\docs\ogl\index.htm - -rem **** zip up the docs -rem zip -r ..\distrib\wxPython-docs-%1.zip wxPython-%1\docs -tar cvf ..\dist\wxPython-docs-%1.tar wxPython-%1 -gzip -9 ..\dist\wxPython-docs-%1.tar - - -rem **** Cleanup -cd .. -del /sxzy _distrib_zip diff --git a/wxPython/distutils/README b/wxPython/distutils/README new file mode 100644 index 0000000000..45c7ca8ca9 --- /dev/null +++ b/wxPython/distutils/README @@ -0,0 +1,22 @@ +This directory contains only a subset of the Distutils, specifically +the Python modules in the 'distutils' and 'distutils.command' +packages. This is all you need to distribute and install Python +modules using the Distutils. There is also a separately packaged +standalone version of the Distutils available for people who want to +upgrade the Distutils without upgrading Python, available from the +Distutils web page: + + http://www.python.org/sigs/distutils-sig/ + +The standalone version includes all of the code in this directory, +plus documentation, test scripts, examples, etc. + +The Distutils documentation is divided into two documents, "Installing +Python Modules", which explains how to install Python packages, and +"Distributing Python Modules", which explains how to write setup.py +files. Both documents are part of the standard Python documentation +set, and are available from http://www.python.org/doc/current/ . + + Greg Ward (gward@python.net) + +$Id$ diff --git a/wxPython/distutils/README_1st.txt b/wxPython/distutils/README_1st.txt new file mode 100644 index 0000000000..5a06b95c56 --- /dev/null +++ b/wxPython/distutils/README_1st.txt @@ -0,0 +1,19 @@ +This is a copy of the Distutils package from Python (currently version +2.3a2.) This newer copy of distutils is used for all versions of +Python to avoid some problems in the older versions that show up in +wxPython builds and to avoid having to make some ugly hacks in local +modules to work around them. + +There is one little 1-line customization (hack) in msvccompiler.py +that allows the CFLAGS to be given on the RC.EXE command line. This +is required so the wx.rc files can be found when it is #included. I've +submitted this patch to the Python project so if it gets into the main +Distutils distribution I can remove this code. (However, the newer +version of distutils should still always be used, at least on Windows, +so it will need to wait until there it a Distutils distribution that +can be installed on the older Pythons.) + +I have not yet applied any patches specifically for MSCV 7 yet. So +far it appears that if you have the PATH setup properly (like I +usually do) that distutils works as is. + diff --git a/wxPython/distutils/__init__.py b/wxPython/distutils/__init__.py new file mode 100644 index 0000000000..7873d297b3 --- /dev/null +++ b/wxPython/distutils/__init__.py @@ -0,0 +1,15 @@ +"""distutils + +The main package for the Python Module Distribution Utilities. Normally +used from a setup script as + + from distutils.core import setup + + setup (...) +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +__version__ = "1.0.3" diff --git a/wxPython/distutils/archive_util.py b/wxPython/distutils/archive_util.py new file mode 100644 index 0000000000..d5b3096617 --- /dev/null +++ b/wxPython/distutils/archive_util.py @@ -0,0 +1,173 @@ +"""distutils.archive_util + +Utility functions for creating archive files (tarballs, zip files, +that sort of thing).""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.errors import DistutilsExecError +from distutils.spawn import spawn +from distutils.dir_util import mkpath +from distutils import log + +def make_tarball (base_name, base_dir, compress="gzip", + verbose=0, dry_run=0): + """Create a (possibly compressed) tar file from all the files under + 'base_dir'. 'compress' must be "gzip" (the default), "compress", + "bzip2", or None. Both "tar" and the compression utility named by + 'compress' must be on the default program search path, so this is + probably Unix-specific. The output tar file will be named 'base_dir' + + ".tar", possibly plus the appropriate compression extension (".gz", + ".bz2" or ".Z"). Return the output filename. + """ + # XXX GNU tar 1.13 has a nifty option to add a prefix directory. + # It's pretty new, though, so we certainly can't require it -- + # but it would be nice to take advantage of it to skip the + # "create a tree of hardlinks" step! (Would also be nice to + # detect GNU tar to use its 'z' option and save a step.) + + compress_ext = { 'gzip': ".gz", + 'bzip2': '.bz2', + 'compress': ".Z" } + + # flags for compression program, each element of list will be an argument + compress_flags = {'gzip': ["-f9"], + 'compress': ["-f"], + 'bzip2': ['-f9']} + + if compress is not None and compress not in compress_ext.keys(): + raise ValueError, \ + "bad value for 'compress': must be None, 'gzip', or 'compress'" + + archive_name = base_name + ".tar" + mkpath(os.path.dirname(archive_name), dry_run=dry_run) + cmd = ["tar", "-cf", archive_name, base_dir] + spawn(cmd, dry_run=dry_run) + + if compress: + spawn([compress] + compress_flags[compress] + [archive_name], + dry_run=dry_run) + return archive_name + compress_ext[compress] + else: + return archive_name + +# make_tarball () + + +def make_zipfile (base_name, base_dir, verbose=0, dry_run=0): + """Create a zip file from all the files under 'base_dir'. The output + zip file will be named 'base_dir' + ".zip". Uses either the "zipfile" + Python module (if available) or the InfoZIP "zip" utility (if installed + and found on the default search path). If neither tool is available, + raises DistutilsExecError. Returns the name of the output zip file. + """ + try: + import zipfile + except ImportError: + zipfile = None + + zip_filename = base_name + ".zip" + mkpath(os.path.dirname(zip_filename), dry_run=dry_run) + + # If zipfile module is not available, try spawning an external + # 'zip' command. + if zipfile is None: + if verbose: + zipoptions = "-r" + else: + zipoptions = "-rq" + + try: + spawn(["zip", zipoptions, zip_filename, base_dir], + dry_run=dry_run) + except DistutilsExecError: + # XXX really should distinguish between "couldn't find + # external 'zip' command" and "zip failed". + raise DistutilsExecError, \ + ("unable to create zip file '%s': " + "could neither import the 'zipfile' module nor " + "find a standalone zip utility") % zip_filename + + else: + log.info("creating '%s' and adding '%s' to it", + zip_filename, base_dir) + + def visit (z, dirname, names): + for name in names: + path = os.path.normpath(os.path.join(dirname, name)) + if os.path.isfile(path): + z.write(path, path) + log.info("adding '%s'" % path) + + if not dry_run: + z = zipfile.ZipFile(zip_filename, "w", + compression=zipfile.ZIP_DEFLATED) + + os.path.walk(base_dir, visit, z) + z.close() + + return zip_filename + +# make_zipfile () + + +ARCHIVE_FORMATS = { + 'gztar': (make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"), + 'bztar': (make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"), + 'ztar': (make_tarball, [('compress', 'compress')], "compressed tar file"), + 'tar': (make_tarball, [('compress', None)], "uncompressed tar file"), + 'zip': (make_zipfile, [],"ZIP file") + } + +def check_archive_formats (formats): + for format in formats: + if not ARCHIVE_FORMATS.has_key(format): + return format + else: + return None + +def make_archive (base_name, format, + root_dir=None, base_dir=None, + verbose=0, dry_run=0): + """Create an archive file (eg. zip or tar). 'base_name' is the name + of the file to create, minus any format-specific extension; 'format' + is the archive format: one of "zip", "tar", "ztar", or "gztar". + 'root_dir' is a directory that will be the root directory of the + archive; ie. we typically chdir into 'root_dir' before creating the + archive. 'base_dir' is the directory where we start archiving from; + ie. 'base_dir' will be the common prefix of all files and + directories in the archive. 'root_dir' and 'base_dir' both default + to the current directory. Returns the name of the archive file. + """ + save_cwd = os.getcwd() + if root_dir is not None: + log.debug("changing into '%s'", root_dir) + base_name = os.path.abspath(base_name) + if not dry_run: + os.chdir(root_dir) + + if base_dir is None: + base_dir = os.curdir + + kwargs = { 'dry_run': dry_run } + + try: + format_info = ARCHIVE_FORMATS[format] + except KeyError: + raise ValueError, "unknown archive format '%s'" % format + + func = format_info[0] + for (arg,val) in format_info[1]: + kwargs[arg] = val + filename = apply(func, (base_name, base_dir), kwargs) + + if root_dir is not None: + log.debug("changing back to '%s'", save_cwd) + os.chdir(save_cwd) + + return filename + +# make_archive () diff --git a/wxPython/distutils/bcppcompiler.py b/wxPython/distutils/bcppcompiler.py new file mode 100644 index 0000000000..cfbe04ac01 --- /dev/null +++ b/wxPython/distutils/bcppcompiler.py @@ -0,0 +1,394 @@ +"""distutils.bcppcompiler + +Contains BorlandCCompiler, an implementation of the abstract CCompiler class +for the Borland C++ compiler. +""" + +# This implementation by Lyle Johnson, based on the original msvccompiler.py +# module and using the directions originally published by Gordon Williams. + +# XXX looks like there's a LOT of overlap between these two classes: +# someone should sit down and factor out the common code as +# WindowsCCompiler! --GPW + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + + +import sys, os +from distutils.errors import \ + DistutilsExecError, DistutilsPlatformError, \ + CompileError, LibError, LinkError, UnknownFileError +from distutils.ccompiler import \ + CCompiler, gen_preprocess_options, gen_lib_options +from distutils.file_util import write_file +from distutils.dep_util import newer +from distutils import log + +class BCPPCompiler(CCompiler) : + """Concrete class that implements an interface to the Borland C/C++ + compiler, as defined by the CCompiler abstract class. + """ + + compiler_type = 'bcpp' + + # Just set this so CCompiler's constructor doesn't barf. We currently + # don't use the 'set_executables()' bureaucracy provided by CCompiler, + # as it really isn't necessary for this sort of single-compiler class. + # Would be nice to have a consistent interface with UnixCCompiler, + # though, so it's worth thinking about. + executables = {} + + # Private class data (need to distinguish C from C++ source for compiler) + _c_extensions = ['.c'] + _cpp_extensions = ['.cc', '.cpp', '.cxx'] + + # Needed for the filename generation methods provided by the + # base class, CCompiler. + src_extensions = _c_extensions + _cpp_extensions + obj_extension = '.obj' + static_lib_extension = '.lib' + shared_lib_extension = '.dll' + static_lib_format = shared_lib_format = '%s%s' + exe_extension = '.exe' + + + def __init__ (self, + verbose=0, + dry_run=0, + force=0): + + CCompiler.__init__ (self, verbose, dry_run, force) + + # These executables are assumed to all be in the path. + # Borland doesn't seem to use any special registry settings to + # indicate their installation locations. + + self.cc = "bcc32.exe" + self.linker = "ilink32.exe" + self.lib = "tlib.exe" + + self.preprocess_options = None + self.compile_options = ['/tWM', '/O2', '/q', '/g0'] + self.compile_options_debug = ['/tWM', '/Od', '/q', '/g0'] + + self.ldflags_shared = ['/Tpd', '/Gn', '/q', '/x'] + self.ldflags_shared_debug = ['/Tpd', '/Gn', '/q', '/x'] + self.ldflags_static = [] + self.ldflags_exe = ['/Gn', '/q', '/x'] + self.ldflags_exe_debug = ['/Gn', '/q', '/x','/r'] + + + # -- Worker methods ------------------------------------------------ + + def compile(self, sources, + output_dir=None, macros=None, include_dirs=None, debug=0, + extra_preargs=None, extra_postargs=None, depends=None): + + macros, objects, extra_postargs, pp_opts, build = \ + self._setup_compile(output_dir, macros, include_dirs, sources, + depends, extra_postargs) + compile_opts = extra_preargs or [] + compile_opts.append ('-c') + if debug: + compile_opts.extend (self.compile_options_debug) + else: + compile_opts.extend (self.compile_options) + + for obj, (src, ext) in build.items(): + # XXX why do the normpath here? + src = os.path.normpath(src) + obj = os.path.normpath(obj) + # XXX _setup_compile() did a mkpath() too but before the normpath. + # Is it possible to skip the normpath? + self.mkpath(os.path.dirname(obj)) + + if ext == '.res': + # This is already a binary file -- skip it. + continue # the 'for' loop + if ext == '.rc': + # This needs to be compiled to a .res file -- do it now. + try: + self.spawn (["brcc32", "-fo", obj, src]) + except DistutilsExecError, msg: + raise CompileError, msg + continue # the 'for' loop + + # The next two are both for the real compiler. + if ext in self._c_extensions: + input_opt = "" + elif ext in self._cpp_extensions: + input_opt = "-P" + else: + # Unknown file type -- no extra options. The compiler + # will probably fail, but let it just in case this is a + # file the compiler recognizes even if we don't. + input_opt = "" + + output_opt = "-o" + obj + + # Compiler command line syntax is: "bcc32 [options] file(s)". + # Note that the source file names must appear at the end of + # the command line. + try: + self.spawn ([self.cc] + compile_opts + pp_opts + + [input_opt, output_opt] + + extra_postargs + [src]) + except DistutilsExecError, msg: + raise CompileError, msg + + return objects + + # compile () + + + def create_static_lib (self, + objects, + output_libname, + output_dir=None, + debug=0, + target_lang=None): + + (objects, output_dir) = self._fix_object_args (objects, output_dir) + output_filename = \ + self.library_filename (output_libname, output_dir=output_dir) + + if self._need_link (objects, output_filename): + lib_args = [output_filename, '/u'] + objects + if debug: + pass # XXX what goes here? + try: + self.spawn ([self.lib] + lib_args) + except DistutilsExecError, msg: + raise LibError, msg + else: + log.debug("skipping %s (up-to-date)", output_filename) + + # create_static_lib () + + + def link (self, + target_desc, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + + # XXX this ignores 'build_temp'! should follow the lead of + # msvccompiler.py + + (objects, output_dir) = self._fix_object_args (objects, output_dir) + (libraries, library_dirs, runtime_library_dirs) = \ + self._fix_lib_args (libraries, library_dirs, runtime_library_dirs) + + if runtime_library_dirs: + log.warn("I don't know what to do with 'runtime_library_dirs': %s", + str(runtime_library_dirs)) + + if output_dir is not None: + output_filename = os.path.join (output_dir, output_filename) + + if self._need_link (objects, output_filename): + + # Figure out linker args based on type of target. + if target_desc == CCompiler.EXECUTABLE: + startup_obj = 'c0w32' + if debug: + ld_args = self.ldflags_exe_debug[:] + else: + ld_args = self.ldflags_exe[:] + else: + startup_obj = 'c0d32' + if debug: + ld_args = self.ldflags_shared_debug[:] + else: + ld_args = self.ldflags_shared[:] + + + # Create a temporary exports file for use by the linker + if export_symbols is None: + def_file = '' + else: + head, tail = os.path.split (output_filename) + modname, ext = os.path.splitext (tail) + temp_dir = os.path.dirname(objects[0]) # preserve tree structure + def_file = os.path.join (temp_dir, '%s.def' % modname) + contents = ['EXPORTS'] + for sym in (export_symbols or []): + contents.append(' %s=_%s' % (sym, sym)) + self.execute(write_file, (def_file, contents), + "writing %s" % def_file) + + # Borland C++ has problems with '/' in paths + objects2 = map(os.path.normpath, objects) + # split objects in .obj and .res files + # Borland C++ needs them at different positions in the command line + objects = [startup_obj] + resources = [] + for file in objects2: + (base, ext) = os.path.splitext(os.path.normcase(file)) + if ext == '.res': + resources.append(file) + else: + objects.append(file) + + + for l in library_dirs: + ld_args.append("/L%s" % os.path.normpath(l)) + ld_args.append("/L.") # we sometimes use relative paths + + # list of object files + ld_args.extend(objects) + + # XXX the command-line syntax for Borland C++ is a bit wonky; + # certain filenames are jammed together in one big string, but + # comma-delimited. This doesn't mesh too well with the + # Unix-centric attitude (with a DOS/Windows quoting hack) of + # 'spawn()', so constructing the argument list is a bit + # awkward. Note that doing the obvious thing and jamming all + # the filenames and commas into one argument would be wrong, + # because 'spawn()' would quote any filenames with spaces in + # them. Arghghh!. Apparently it works fine as coded... + + # name of dll/exe file + ld_args.extend([',',output_filename]) + # no map file and start libraries + ld_args.append(',,') + + for lib in libraries: + # see if we find it and if there is a bcpp specific lib + # (xxx_bcpp.lib) + libfile = self.find_library_file(library_dirs, lib, debug) + if libfile is None: + ld_args.append(lib) + # probably a BCPP internal library -- don't warn + else: + # full name which prefers bcpp_xxx.lib over xxx.lib + ld_args.append(libfile) + + # some default libraries + ld_args.append ('import32') + ld_args.append ('cw32mt') + + # def file for export symbols + ld_args.extend([',',def_file]) + # add resource files + ld_args.append(',') + ld_args.extend(resources) + + + if extra_preargs: + ld_args[:0] = extra_preargs + if extra_postargs: + ld_args.extend(extra_postargs) + + self.mkpath (os.path.dirname (output_filename)) + try: + self.spawn ([self.linker] + ld_args) + except DistutilsExecError, msg: + raise LinkError, msg + + else: + log.debug("skipping %s (up-to-date)", output_filename) + + # link () + + # -- Miscellaneous methods ----------------------------------------- + + + def find_library_file (self, dirs, lib, debug=0): + # List of effective library names to try, in order of preference: + # xxx_bcpp.lib is better than xxx.lib + # and xxx_d.lib is better than xxx.lib if debug is set + # + # The "_bcpp" suffix is to handle a Python installation for people + # with multiple compilers (primarily Distutils hackers, I suspect + # ;-). The idea is they'd have one static library for each + # compiler they care about, since (almost?) every Windows compiler + # seems to have a different format for static libraries. + if debug: + dlib = (lib + "_d") + try_names = (dlib + "_bcpp", lib + "_bcpp", dlib, lib) + else: + try_names = (lib + "_bcpp", lib) + + for dir in dirs: + for name in try_names: + libfile = os.path.join(dir, self.library_filename(name)) + if os.path.exists(libfile): + return libfile + else: + # Oops, didn't find it in *any* of 'dirs' + return None + + # overwrite the one from CCompiler to support rc and res-files + def object_filenames (self, + source_filenames, + strip_dir=0, + output_dir=''): + if output_dir is None: output_dir = '' + obj_names = [] + for src_name in source_filenames: + # use normcase to make sure '.rc' is really '.rc' and not '.RC' + (base, ext) = os.path.splitext (os.path.normcase(src_name)) + if ext not in (self.src_extensions + ['.rc','.res']): + raise UnknownFileError, \ + "unknown file type '%s' (from '%s')" % \ + (ext, src_name) + if strip_dir: + base = os.path.basename (base) + if ext == '.res': + # these can go unchanged + obj_names.append (os.path.join (output_dir, base + ext)) + elif ext == '.rc': + # these need to be compiled to .res-files + obj_names.append (os.path.join (output_dir, base + '.res')) + else: + obj_names.append (os.path.join (output_dir, + base + self.obj_extension)) + return obj_names + + # object_filenames () + + def preprocess (self, + source, + output_file=None, + macros=None, + include_dirs=None, + extra_preargs=None, + extra_postargs=None): + + (_, macros, include_dirs) = \ + self._fix_compile_args(None, macros, include_dirs) + pp_opts = gen_preprocess_options(macros, include_dirs) + pp_args = ['cpp32.exe'] + pp_opts + if output_file is not None: + pp_args.append('-o' + output_file) + if extra_preargs: + pp_args[:0] = extra_preargs + if extra_postargs: + pp_args.extend(extra_postargs) + pp_args.append(source) + + # We need to preprocess: either we're being forced to, or the + # source file is newer than the target (or the target doesn't + # exist). + if self.force or output_file is None or newer(source, output_file): + if output_file: + self.mkpath(os.path.dirname(output_file)) + try: + self.spawn(pp_args) + except DistutilsExecError, msg: + print msg + raise CompileError, msg + + # preprocess() diff --git a/wxPython/distutils/ccompiler.py b/wxPython/distutils/ccompiler.py new file mode 100644 index 0000000000..bfcf1279f1 --- /dev/null +++ b/wxPython/distutils/ccompiler.py @@ -0,0 +1,1215 @@ +"""distutils.ccompiler + +Contains CCompiler, an abstract base class that defines the interface +for the Distutils compiler abstraction model.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, re +from types import * +from copy import copy +from distutils.errors import * +from distutils.spawn import spawn +from distutils.file_util import move_file +from distutils.dir_util import mkpath +from distutils.dep_util import newer_pairwise, newer_group +from distutils.sysconfig import python_build +from distutils.util import split_quoted, execute +from distutils import log + +class CCompiler: + """Abstract base class to define the interface that must be implemented + by real compiler classes. Also has some utility methods used by + several compiler classes. + + The basic idea behind a compiler abstraction class is that each + instance can be used for all the compile/link steps in building a + single project. Thus, attributes common to all of those compile and + link steps -- include directories, macros to define, libraries to link + against, etc. -- are attributes of the compiler instance. To allow for + variability in how individual files are treated, most of those + attributes may be varied on a per-compilation or per-link basis. + """ + + # 'compiler_type' is a class attribute that identifies this class. It + # keeps code that wants to know what kind of compiler it's dealing with + # from having to import all possible compiler classes just to do an + # 'isinstance'. In concrete CCompiler subclasses, 'compiler_type' + # should really, really be one of the keys of the 'compiler_class' + # dictionary (see below -- used by the 'new_compiler()' factory + # function) -- authors of new compiler interface classes are + # responsible for updating 'compiler_class'! + compiler_type = None + + # XXX things not handled by this compiler abstraction model: + # * client can't provide additional options for a compiler, + # e.g. warning, optimization, debugging flags. Perhaps this + # should be the domain of concrete compiler abstraction classes + # (UnixCCompiler, MSVCCompiler, etc.) -- or perhaps the base + # class should have methods for the common ones. + # * can't completely override the include or library searchg + # path, ie. no "cc -I -Idir1 -Idir2" or "cc -L -Ldir1 -Ldir2". + # I'm not sure how widely supported this is even by Unix + # compilers, much less on other platforms. And I'm even less + # sure how useful it is; maybe for cross-compiling, but + # support for that is a ways off. (And anyways, cross + # compilers probably have a dedicated binary with the + # right paths compiled in. I hope.) + # * can't do really freaky things with the library list/library + # dirs, e.g. "-Ldir1 -lfoo -Ldir2 -lfoo" to link against + # different versions of libfoo.a in different locations. I + # think this is useless without the ability to null out the + # library search path anyways. + + + # Subclasses that rely on the standard filename generation methods + # implemented below should override these; see the comment near + # those methods ('object_filenames()' et. al.) for details: + src_extensions = None # list of strings + obj_extension = None # string + static_lib_extension = None + shared_lib_extension = None # string + static_lib_format = None # format string + shared_lib_format = None # prob. same as static_lib_format + exe_extension = None # string + + # Default language settings. language_map is used to detect a source + # file or Extension target language, checking source filenames. + # language_order is used to detect the language precedence, when deciding + # what language to use when mixing source types. For example, if some + # extension has two files with ".c" extension, and one with ".cpp", it + # is still linked as c++. + language_map = {".c" : "c", + ".cc" : "c++", + ".cpp" : "c++", + ".cxx" : "c++", + ".m" : "objc", + } + language_order = ["c++", "objc", "c"] + + def __init__ (self, + verbose=0, + dry_run=0, + force=0): + + self.dry_run = dry_run + self.force = force + self.verbose = verbose + + # 'output_dir': a common output directory for object, library, + # shared object, and shared library files + self.output_dir = None + + # 'macros': a list of macro definitions (or undefinitions). A + # macro definition is a 2-tuple (name, value), where the value is + # either a string or None (no explicit value). A macro + # undefinition is a 1-tuple (name,). + self.macros = [] + + # 'include_dirs': a list of directories to search for include files + self.include_dirs = [] + + # 'libraries': a list of libraries to include in any link + # (library names, not filenames: eg. "foo" not "libfoo.a") + self.libraries = [] + + # 'library_dirs': a list of directories to search for libraries + self.library_dirs = [] + + # 'runtime_library_dirs': a list of directories to search for + # shared libraries/objects at runtime + self.runtime_library_dirs = [] + + # 'objects': a list of object files (or similar, such as explicitly + # named library files) to include on any link + self.objects = [] + + for key in self.executables.keys(): + self.set_executable(key, self.executables[key]) + + # __init__ () + + + def set_executables (self, **args): + + """Define the executables (and options for them) that will be run + to perform the various stages of compilation. The exact set of + executables that may be specified here depends on the compiler + class (via the 'executables' class attribute), but most will have: + compiler the C/C++ compiler + linker_so linker used to create shared objects and libraries + linker_exe linker used to create binary executables + archiver static library creator + + On platforms with a command-line (Unix, DOS/Windows), each of these + is a string that will be split into executable name and (optional) + list of arguments. (Splitting the string is done similarly to how + Unix shells operate: words are delimited by spaces, but quotes and + backslashes can override this. See + 'distutils.util.split_quoted()'.) + """ + + # Note that some CCompiler implementation classes will define class + # attributes 'cpp', 'cc', etc. with hard-coded executable names; + # this is appropriate when a compiler class is for exactly one + # compiler/OS combination (eg. MSVCCompiler). Other compiler + # classes (UnixCCompiler, in particular) are driven by information + # discovered at run-time, since there are many different ways to do + # basically the same things with Unix C compilers. + + for key in args.keys(): + if not self.executables.has_key(key): + raise ValueError, \ + "unknown executable '%s' for class %s" % \ + (key, self.__class__.__name__) + self.set_executable(key, args[key]) + + # set_executables () + + def set_executable(self, key, value): + if type(value) is StringType: + setattr(self, key, split_quoted(value)) + else: + setattr(self, key, value) + + + def _find_macro (self, name): + i = 0 + for defn in self.macros: + if defn[0] == name: + return i + i = i + 1 + + return None + + + def _check_macro_definitions (self, definitions): + """Ensures that every element of 'definitions' is a valid macro + definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do + nothing if all definitions are OK, raise TypeError otherwise. + """ + for defn in definitions: + if not (type (defn) is TupleType and + (len (defn) == 1 or + (len (defn) == 2 and + (type (defn[1]) is StringType or defn[1] is None))) and + type (defn[0]) is StringType): + raise TypeError, \ + ("invalid macro definition '%s': " % defn) + \ + "must be tuple (string,), (string, string), or " + \ + "(string, None)" + + + # -- Bookkeeping methods ------------------------------------------- + + def define_macro (self, name, value=None): + """Define a preprocessor macro for all compilations driven by this + compiler object. The optional parameter 'value' should be a + string; if it is not supplied, then the macro will be defined + without an explicit value and the exact outcome depends on the + compiler used (XXX true? does ANSI say anything about this?) + """ + # Delete from the list of macro definitions/undefinitions if + # already there (so that this one will take precedence). + i = self._find_macro (name) + if i is not None: + del self.macros[i] + + defn = (name, value) + self.macros.append (defn) + + + def undefine_macro (self, name): + """Undefine a preprocessor macro for all compilations driven by + this compiler object. If the same macro is defined by + 'define_macro()' and undefined by 'undefine_macro()' the last call + takes precedence (including multiple redefinitions or + undefinitions). If the macro is redefined/undefined on a + per-compilation basis (ie. in the call to 'compile()'), then that + takes precedence. + """ + # Delete from the list of macro definitions/undefinitions if + # already there (so that this one will take precedence). + i = self._find_macro (name) + if i is not None: + del self.macros[i] + + undefn = (name,) + self.macros.append (undefn) + + + def add_include_dir (self, dir): + """Add 'dir' to the list of directories that will be searched for + header files. The compiler is instructed to search directories in + the order in which they are supplied by successive calls to + 'add_include_dir()'. + """ + self.include_dirs.append (dir) + + def set_include_dirs (self, dirs): + """Set the list of directories that will be searched to 'dirs' (a + list of strings). Overrides any preceding calls to + 'add_include_dir()'; subsequence calls to 'add_include_dir()' add + to the list passed to 'set_include_dirs()'. This does not affect + any list of standard include directories that the compiler may + search by default. + """ + self.include_dirs = copy (dirs) + + + def add_library (self, libname): + """Add 'libname' to the list of libraries that will be included in + all links driven by this compiler object. Note that 'libname' + should *not* be the name of a file containing a library, but the + name of the library itself: the actual filename will be inferred by + the linker, the compiler, or the compiler class (depending on the + platform). + + The linker will be instructed to link against libraries in the + order they were supplied to 'add_library()' and/or + 'set_libraries()'. It is perfectly valid to duplicate library + names; the linker will be instructed to link against libraries as + many times as they are mentioned. + """ + self.libraries.append (libname) + + def set_libraries (self, libnames): + """Set the list of libraries to be included in all links driven by + this compiler object to 'libnames' (a list of strings). This does + not affect any standard system libraries that the linker may + include by default. + """ + self.libraries = copy (libnames) + + + def add_library_dir (self, dir): + """Add 'dir' to the list of directories that will be searched for + libraries specified to 'add_library()' and 'set_libraries()'. The + linker will be instructed to search for libraries in the order they + are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. + """ + self.library_dirs.append (dir) + + def set_library_dirs (self, dirs): + """Set the list of library search directories to 'dirs' (a list of + strings). This does not affect any standard library search path + that the linker may search by default. + """ + self.library_dirs = copy (dirs) + + + def add_runtime_library_dir (self, dir): + """Add 'dir' to the list of directories that will be searched for + shared libraries at runtime. + """ + self.runtime_library_dirs.append (dir) + + def set_runtime_library_dirs (self, dirs): + """Set the list of directories to search for shared libraries at + runtime to 'dirs' (a list of strings). This does not affect any + standard search path that the runtime linker may search by + default. + """ + self.runtime_library_dirs = copy (dirs) + + + def add_link_object (self, object): + """Add 'object' to the list of object files (or analogues, such as + explicitly named library files or the output of "resource + compilers") to be included in every link driven by this compiler + object. + """ + self.objects.append (object) + + def set_link_objects (self, objects): + """Set the list of object files (or analogues) to be included in + every link to 'objects'. This does not affect any standard object + files that the linker may include by default (such as system + libraries). + """ + self.objects = copy (objects) + + + # -- Private utility methods -------------------------------------- + # (here for the convenience of subclasses) + + # Helper method to prep compiler in subclass compile() methods + + def _setup_compile(self, outdir, macros, incdirs, sources, depends, + extra): + """Process arguments and decide which source files to compile. + + Merges _fix_compile_args() and _prep_compile(). + """ + if outdir is None: + outdir = self.output_dir + elif type(outdir) is not StringType: + raise TypeError, "'output_dir' must be a string or None" + + if macros is None: + macros = self.macros + elif type(macros) is ListType: + macros = macros + (self.macros or []) + else: + raise TypeError, "'macros' (if supplied) must be a list of tuples" + + if incdirs is None: + incdirs = self.include_dirs + elif type(incdirs) in (ListType, TupleType): + incdirs = list(incdirs) + (self.include_dirs or []) + else: + raise TypeError, \ + "'include_dirs' (if supplied) must be a list of strings" + + if extra is None: + extra = [] + + # Get the list of expected output (object) files + objects = self.object_filenames(sources, + strip_dir=python_build, + output_dir=outdir) + assert len(objects) == len(sources) + + # XXX should redo this code to eliminate skip_source entirely. + # XXX instead create build and issue skip messages inline + + if self.force: + skip_source = {} # rebuild everything + for source in sources: + skip_source[source] = 0 + elif depends is None: + # If depends is None, figure out which source files we + # have to recompile according to a simplistic check. We + # just compare the source and object file, no deep + # dependency checking involving header files. + skip_source = {} # rebuild everything + for source in sources: # no wait, rebuild nothing + skip_source[source] = 1 + + n_sources, n_objects = newer_pairwise(sources, objects) + for source in n_sources: # no really, only rebuild what's + skip_source[source] = 0 # out-of-date + else: + # If depends is a list of files, then do a different + # simplistic check. Assume that each object depends on + # its source and all files in the depends list. + skip_source = {} + # L contains all the depends plus a spot at the end for a + # particular source file + L = depends[:] + [None] + for i in range(len(objects)): + source = sources[i] + L[-1] = source + if newer_group(L, objects[i]): + skip_source[source] = 0 + else: + skip_source[source] = 1 + + pp_opts = gen_preprocess_options(macros, incdirs) + + build = {} + for i in range(len(sources)): + src = sources[i] + obj = objects[i] + ext = os.path.splitext(src)[1] + self.mkpath(os.path.dirname(obj)) + if skip_source[src]: + log.debug("skipping %s (%s up-to-date)", src, obj) + else: + build[obj] = src, ext + + return macros, objects, extra, pp_opts, build + + def _get_cc_args(self, pp_opts, debug, before): + # works for unixccompiler, emxccompiler, cygwinccompiler + cc_args = pp_opts + ['-c'] + if debug: + cc_args[:0] = ['-g'] + if before: + cc_args[:0] = before + return cc_args + + def _fix_compile_args (self, output_dir, macros, include_dirs): + """Typecheck and fix-up some of the arguments to the 'compile()' + method, and return fixed-up values. Specifically: if 'output_dir' + is None, replaces it with 'self.output_dir'; ensures that 'macros' + is a list, and augments it with 'self.macros'; ensures that + 'include_dirs' is a list, and augments it with 'self.include_dirs'. + Guarantees that the returned values are of the correct type, + i.e. for 'output_dir' either string or None, and for 'macros' and + 'include_dirs' either list or None. + """ + if output_dir is None: + output_dir = self.output_dir + elif type (output_dir) is not StringType: + raise TypeError, "'output_dir' must be a string or None" + + if macros is None: + macros = self.macros + elif type (macros) is ListType: + macros = macros + (self.macros or []) + else: + raise TypeError, "'macros' (if supplied) must be a list of tuples" + + if include_dirs is None: + include_dirs = self.include_dirs + elif type (include_dirs) in (ListType, TupleType): + include_dirs = list (include_dirs) + (self.include_dirs or []) + else: + raise TypeError, \ + "'include_dirs' (if supplied) must be a list of strings" + + return output_dir, macros, include_dirs + + # _fix_compile_args () + + + def _prep_compile(self, sources, output_dir, depends=None): + """Decide which souce files must be recompiled. + + Determine the list of object files corresponding to 'sources', + and figure out which ones really need to be recompiled. + Return a list of all object files and a dictionary telling + which source files can be skipped. + """ + # Get the list of expected output (object) files + objects = self.object_filenames(sources, strip_dir=python_build, + output_dir=output_dir) + assert len(objects) == len(sources) + + if self.force: + skip_source = {} # rebuild everything + for source in sources: + skip_source[source] = 0 + elif depends is None: + # If depends is None, figure out which source files we + # have to recompile according to a simplistic check. We + # just compare the source and object file, no deep + # dependency checking involving header files. + skip_source = {} # rebuild everything + for source in sources: # no wait, rebuild nothing + skip_source[source] = 1 + + n_sources, n_objects = newer_pairwise(sources, objects) + for source in n_sources: # no really, only rebuild what's + skip_source[source] = 0 # out-of-date + else: + # If depends is a list of files, then do a different + # simplistic check. Assume that each object depends on + # its source and all files in the depends list. + skip_source = {} + # L contains all the depends plus a spot at the end for a + # particular source file + L = depends[:] + [None] + for i in range(len(objects)): + source = sources[i] + L[-1] = source + if newer_group(L, objects[i]): + skip_source[source] = 0 + else: + skip_source[source] = 1 + + return objects, skip_source + + # _prep_compile () + + + def _fix_object_args (self, objects, output_dir): + """Typecheck and fix up some arguments supplied to various methods. + Specifically: ensure that 'objects' is a list; if output_dir is + None, replace with self.output_dir. Return fixed versions of + 'objects' and 'output_dir'. + """ + if type (objects) not in (ListType, TupleType): + raise TypeError, \ + "'objects' must be a list or tuple of strings" + objects = list (objects) + + if output_dir is None: + output_dir = self.output_dir + elif type (output_dir) is not StringType: + raise TypeError, "'output_dir' must be a string or None" + + return (objects, output_dir) + + + def _fix_lib_args (self, libraries, library_dirs, runtime_library_dirs): + """Typecheck and fix up some of the arguments supplied to the + 'link_*' methods. Specifically: ensure that all arguments are + lists, and augment them with their permanent versions + (eg. 'self.libraries' augments 'libraries'). Return a tuple with + fixed versions of all arguments. + """ + if libraries is None: + libraries = self.libraries + elif type (libraries) in (ListType, TupleType): + libraries = list (libraries) + (self.libraries or []) + else: + raise TypeError, \ + "'libraries' (if supplied) must be a list of strings" + + if library_dirs is None: + library_dirs = self.library_dirs + elif type (library_dirs) in (ListType, TupleType): + library_dirs = list (library_dirs) + (self.library_dirs or []) + else: + raise TypeError, \ + "'library_dirs' (if supplied) must be a list of strings" + + if runtime_library_dirs is None: + runtime_library_dirs = self.runtime_library_dirs + elif type (runtime_library_dirs) in (ListType, TupleType): + runtime_library_dirs = (list (runtime_library_dirs) + + (self.runtime_library_dirs or [])) + else: + raise TypeError, \ + "'runtime_library_dirs' (if supplied) " + \ + "must be a list of strings" + + return (libraries, library_dirs, runtime_library_dirs) + + # _fix_lib_args () + + + def _need_link (self, objects, output_file): + """Return true if we need to relink the files listed in 'objects' + to recreate 'output_file'. + """ + if self.force: + return 1 + else: + if self.dry_run: + newer = newer_group (objects, output_file, missing='newer') + else: + newer = newer_group (objects, output_file) + return newer + + # _need_link () + + def detect_language (self, sources): + """Detect the language of a given file, or list of files. Uses + language_map, and language_order to do the job. + """ + if type(sources) is not ListType: + sources = [sources] + lang = None + index = len(self.language_order) + for source in sources: + base, ext = os.path.splitext(source) + extlang = self.language_map.get(ext) + try: + extindex = self.language_order.index(extlang) + if extindex < index: + lang = extlang + index = extindex + except ValueError: + pass + return lang + + # detect_language () + + # -- Worker methods ------------------------------------------------ + # (must be implemented by subclasses) + + def preprocess (self, + source, + output_file=None, + macros=None, + include_dirs=None, + extra_preargs=None, + extra_postargs=None): + """Preprocess a single C/C++ source file, named in 'source'. + Output will be written to file named 'output_file', or stdout if + 'output_file' not supplied. 'macros' is a list of macro + definitions as for 'compile()', which will augment the macros set + with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a + list of directory names that will be added to the default list. + + Raises PreprocessError on failure. + """ + pass + + def compile(self, sources, output_dir=None, macros=None, + include_dirs=None, debug=0, extra_preargs=None, + extra_postargs=None, depends=None): + """Compile one or more source files. + + 'sources' must be a list of filenames, most likely C/C++ + files, but in reality anything that can be handled by a + particular compiler and compiler class (eg. MSVCCompiler can + handle resource files in 'sources'). Return a list of object + filenames, one per source filename in 'sources'. Depending on + the implementation, not all source files will necessarily be + compiled, but all corresponding object filenames will be + returned. + + If 'output_dir' is given, object files will be put under it, while + retaining their original path component. That is, "foo/bar.c" + normally compiles to "foo/bar.o" (for a Unix implementation); if + 'output_dir' is "build", then it would compile to + "build/foo/bar.o". + + 'macros', if given, must be a list of macro definitions. A macro + definition is either a (name, value) 2-tuple or a (name,) 1-tuple. + The former defines a macro; if the value is None, the macro is + defined without an explicit value. The 1-tuple case undefines a + macro. Later definitions/redefinitions/ undefinitions take + precedence. + + 'include_dirs', if given, must be a list of strings, the + directories to add to the default include file search path for this + compilation only. + + 'debug' is a boolean; if true, the compiler will be instructed to + output debug symbols in (or alongside) the object file(s). + + 'extra_preargs' and 'extra_postargs' are implementation- dependent. + On platforms that have the notion of a command-line (e.g. Unix, + DOS/Windows), they are most likely lists of strings: extra + command-line arguments to prepand/append to the compiler command + line. On other platforms, consult the implementation class + documentation. In any event, they are intended as an escape hatch + for those occasions when the abstract compiler framework doesn't + cut the mustard. + + 'depends', if given, is a list of filenames that all targets + depend on. If a source file is older than any file in + depends, then the source file will be recompiled. This + supports dependency tracking, but only at a coarse + granularity. + + Raises CompileError on failure. + """ + + # A concrete compiler class can either override this method + # entirely or implement _compile(). + + macros, objects, extra_postargs, pp_opts, build = \ + self._setup_compile(output_dir, macros, include_dirs, sources, + depends, extra_postargs) + cc_args = self._get_cc_args(pp_opts, debug, extra_preargs) + + for obj, (src, ext) in build.items(): + self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) + + # Return *all* object filenames, not just the ones we just built. + return objects + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + """Compile 'src' to product 'obj'.""" + + # A concrete compiler class that does not override compile() + # should implement _compile(). + pass + + def create_static_lib (self, + objects, + output_libname, + output_dir=None, + debug=0, + target_lang=None): + """Link a bunch of stuff together to create a static library file. + The "bunch of stuff" consists of the list of object files supplied + as 'objects', the extra object files supplied to + 'add_link_object()' and/or 'set_link_objects()', the libraries + supplied to 'add_library()' and/or 'set_libraries()', and the + libraries supplied as 'libraries' (if any). + + 'output_libname' should be a library name, not a filename; the + filename will be inferred from the library name. 'output_dir' is + the directory where the library file will be put. + + 'debug' is a boolean; if true, debugging information will be + included in the library (note that on most platforms, it is the + compile step where this matters: the 'debug' flag is included here + just for consistency). + + 'target_lang' is the target language for which the given objects + are being compiled. This allows specific linkage time treatment of + certain languages. + + Raises LibError on failure. + """ + pass + + + # values for target_desc parameter in link() + SHARED_OBJECT = "shared_object" + SHARED_LIBRARY = "shared_library" + EXECUTABLE = "executable" + + def link (self, + target_desc, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + """Link a bunch of stuff together to create an executable or + shared library file. + + The "bunch of stuff" consists of the list of object files supplied + as 'objects'. 'output_filename' should be a filename. If + 'output_dir' is supplied, 'output_filename' is relative to it + (i.e. 'output_filename' can provide directory components if + needed). + + 'libraries' is a list of libraries to link against. These are + library names, not filenames, since they're translated into + filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" + on Unix and "foo.lib" on DOS/Windows). However, they can include a + directory component, which means the linker will look in that + specific directory rather than searching all the normal locations. + + 'library_dirs', if supplied, should be a list of directories to + search for libraries that were specified as bare library names + (ie. no directory component). These are on top of the system + default and those supplied to 'add_library_dir()' and/or + 'set_library_dirs()'. 'runtime_library_dirs' is a list of + directories that will be embedded into the shared library and used + to search for other shared libraries that *it* depends on at + run-time. (This may only be relevant on Unix.) + + 'export_symbols' is a list of symbols that the shared library will + export. (This appears to be relevant only on Windows.) + + 'debug' is as for 'compile()' and 'create_static_lib()', with the + slight distinction that it actually matters on most platforms (as + opposed to 'create_static_lib()', which includes a 'debug' flag + mostly for form's sake). + + 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except + of course that they supply command-line arguments for the + particular linker being used). + + 'target_lang' is the target language for which the given objects + are being compiled. This allows specific linkage time treatment of + certain languages. + + Raises LinkError on failure. + """ + raise NotImplementedError + + + # Old 'link_*()' methods, rewritten to use the new 'link()' method. + + def link_shared_lib (self, + objects, + output_libname, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + self.link(CCompiler.SHARED_LIBRARY, objects, + self.library_filename(output_libname, lib_type='shared'), + output_dir, + libraries, library_dirs, runtime_library_dirs, + export_symbols, debug, + extra_preargs, extra_postargs, build_temp, target_lang) + + + def link_shared_object (self, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + self.link(CCompiler.SHARED_OBJECT, objects, + output_filename, output_dir, + libraries, library_dirs, runtime_library_dirs, + export_symbols, debug, + extra_preargs, extra_postargs, build_temp, target_lang) + + + def link_executable (self, + objects, + output_progname, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + target_lang=None): + self.link(CCompiler.EXECUTABLE, objects, + self.executable_filename(output_progname), output_dir, + libraries, library_dirs, runtime_library_dirs, None, + debug, extra_preargs, extra_postargs, None, target_lang) + + + # -- Miscellaneous methods ----------------------------------------- + # These are all used by the 'gen_lib_options() function; there is + # no appropriate default implementation so subclasses should + # implement all of these. + + def library_dir_option (self, dir): + """Return the compiler option to add 'dir' to the list of + directories searched for libraries. + """ + raise NotImplementedError + + def runtime_library_dir_option (self, dir): + """Return the compiler option to add 'dir' to the list of + directories searched for runtime libraries. + """ + raise NotImplementedError + + def library_option (self, lib): + """Return the compiler option to add 'dir' to the list of libraries + linked into the shared library or executable. + """ + raise NotImplementedError + + def find_library_file (self, dirs, lib, debug=0): + """Search the specified list of directories for a static or shared + library file 'lib' and return the full path to that file. If + 'debug' true, look for a debugging version (if that makes sense on + the current platform). Return None if 'lib' wasn't found in any of + the specified directories. + """ + raise NotImplementedError + + # -- Filename generation methods ----------------------------------- + + # The default implementation of the filename generating methods are + # prejudiced towards the Unix/DOS/Windows view of the world: + # * object files are named by replacing the source file extension + # (eg. .c/.cpp -> .o/.obj) + # * library files (shared or static) are named by plugging the + # library name and extension into a format string, eg. + # "lib%s.%s" % (lib_name, ".a") for Unix static libraries + # * executables are named by appending an extension (possibly + # empty) to the program name: eg. progname + ".exe" for + # Windows + # + # To reduce redundant code, these methods expect to find + # several attributes in the current object (presumably defined + # as class attributes): + # * src_extensions - + # list of C/C++ source file extensions, eg. ['.c', '.cpp'] + # * obj_extension - + # object file extension, eg. '.o' or '.obj' + # * static_lib_extension - + # extension for static library files, eg. '.a' or '.lib' + # * shared_lib_extension - + # extension for shared library/object files, eg. '.so', '.dll' + # * static_lib_format - + # format string for generating static library filenames, + # eg. 'lib%s.%s' or '%s.%s' + # * shared_lib_format + # format string for generating shared library filenames + # (probably same as static_lib_format, since the extension + # is one of the intended parameters to the format string) + # * exe_extension - + # extension for executable files, eg. '' or '.exe' + + def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): + if output_dir is None: + output_dir = '' + obj_names = [] + for src_name in source_filenames: + base, ext = os.path.splitext(src_name) + if ext not in self.src_extensions: + raise UnknownFileError, \ + "unknown file type '%s' (from '%s')" % (ext, src_name) + if strip_dir: + base = os.path.basename(base) + obj_names.append(os.path.join(output_dir, + base + self.obj_extension)) + return obj_names + + def shared_object_filename(self, basename, strip_dir=0, output_dir=''): + assert output_dir is not None + if strip_dir: + basename = os.path.basename (basename) + return os.path.join(output_dir, basename + self.shared_lib_extension) + + def executable_filename(self, basename, strip_dir=0, output_dir=''): + assert output_dir is not None + if strip_dir: + basename = os.path.basename (basename) + return os.path.join(output_dir, basename + (self.exe_extension or '')) + + def library_filename(self, libname, lib_type='static', # or 'shared' + strip_dir=0, output_dir=''): + assert output_dir is not None + if lib_type not in ("static", "shared", "dylib"): + raise ValueError, "'lib_type' must be \"static\", \"shared\" or \"dylib\"" + fmt = getattr(self, lib_type + "_lib_format") + ext = getattr(self, lib_type + "_lib_extension") + + dir, base = os.path.split (libname) + filename = fmt % (base, ext) + if strip_dir: + dir = '' + + return os.path.join(output_dir, dir, filename) + + + # -- Utility methods ----------------------------------------------- + + def announce (self, msg, level=1): + log.debug(msg) + + def debug_print (self, msg): + from distutils.debug import DEBUG + if DEBUG: + print msg + + def warn (self, msg): + sys.stderr.write ("warning: %s\n" % msg) + + def execute (self, func, args, msg=None, level=1): + execute(func, args, msg, self.dry_run) + + def spawn (self, cmd): + spawn (cmd, dry_run=self.dry_run) + + def move_file (self, src, dst): + return move_file (src, dst, dry_run=self.dry_run) + + def mkpath (self, name, mode=0777): + mkpath (name, mode, self.dry_run) + + +# class CCompiler + + +# Map a sys.platform/os.name ('posix', 'nt') to the default compiler +# type for that platform. Keys are interpreted as re match +# patterns. Order is important; platform mappings are preferred over +# OS names. +_default_compilers = ( + + # Platform string mappings + + # on a cygwin built python we can use gcc like an ordinary UNIXish + # compiler + ('cygwin.*', 'unix'), + ('os2emx', 'emx'), + + # OS name mappings + ('posix', 'unix'), + ('nt', 'msvc'), + ('mac', 'mwerks'), + + ) + +def get_default_compiler(osname=None, platform=None): + + """ Determine the default compiler to use for the given platform. + + osname should be one of the standard Python OS names (i.e. the + ones returned by os.name) and platform the common value + returned by sys.platform for the platform in question. + + The default values are os.name and sys.platform in case the + parameters are not given. + + """ + if osname is None: + osname = os.name + if platform is None: + platform = sys.platform + for pattern, compiler in _default_compilers: + if re.match(pattern, platform) is not None or \ + re.match(pattern, osname) is not None: + return compiler + # Default to Unix compiler + return 'unix' + +# Map compiler types to (module_name, class_name) pairs -- ie. where to +# find the code that implements an interface to this compiler. (The module +# is assumed to be in the 'distutils' package.) +compiler_class = { 'unix': ('unixccompiler', 'UnixCCompiler', + "standard UNIX-style compiler"), + 'msvc': ('msvccompiler', 'MSVCCompiler', + "Microsoft Visual C++"), + 'cygwin': ('cygwinccompiler', 'CygwinCCompiler', + "Cygwin port of GNU C Compiler for Win32"), + 'mingw32': ('cygwinccompiler', 'Mingw32CCompiler', + "Mingw32 port of GNU C Compiler for Win32"), + 'bcpp': ('bcppcompiler', 'BCPPCompiler', + "Borland C++ Compiler"), + 'mwerks': ('mwerkscompiler', 'MWerksCompiler', + "MetroWerks CodeWarrior"), + 'emx': ('emxccompiler', 'EMXCCompiler', + "EMX port of GNU C Compiler for OS/2"), + } + +def show_compilers(): + """Print list of available compilers (used by the "--help-compiler" + options to "build", "build_ext", "build_clib"). + """ + # XXX this "knows" that the compiler option it's describing is + # "--compiler", which just happens to be the case for the three + # commands that use it. + from distutils.fancy_getopt import FancyGetopt + compilers = [] + for compiler in compiler_class.keys(): + compilers.append(("compiler="+compiler, None, + compiler_class[compiler][2])) + compilers.sort() + pretty_printer = FancyGetopt(compilers) + pretty_printer.print_help("List of available compilers:") + + +def new_compiler (plat=None, + compiler=None, + verbose=0, + dry_run=0, + force=0): + """Generate an instance of some CCompiler subclass for the supplied + platform/compiler combination. 'plat' defaults to 'os.name' + (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler + for that platform. Currently only 'posix' and 'nt' are supported, and + the default compilers are "traditional Unix interface" (UnixCCompiler + class) and Visual C++ (MSVCCompiler class). Note that it's perfectly + possible to ask for a Unix compiler object under Windows, and a + Microsoft compiler object under Unix -- if you supply a value for + 'compiler', 'plat' is ignored. + """ + if plat is None: + plat = os.name + + try: + if compiler is None: + compiler = get_default_compiler(plat) + + (module_name, class_name, long_description) = compiler_class[compiler] + except KeyError: + msg = "don't know how to compile C/C++ code on platform '%s'" % plat + if compiler is not None: + msg = msg + " with '%s' compiler" % compiler + raise DistutilsPlatformError, msg + + try: + module_name = "distutils." + module_name + __import__ (module_name) + module = sys.modules[module_name] + klass = vars(module)[class_name] + except ImportError: + raise DistutilsModuleError, \ + "can't compile C/C++ code: unable to load module '%s'" % \ + module_name + except KeyError: + raise DistutilsModuleError, \ + ("can't compile C/C++ code: unable to find class '%s' " + + "in module '%s'") % (class_name, module_name) + + # XXX The None is necessary to preserve backwards compatibility + # with classes that expect verbose to be the first positional + # argument. + return klass (None, dry_run, force) + + +def gen_preprocess_options (macros, include_dirs): + """Generate C pre-processor options (-D, -U, -I) as used by at least + two types of compilers: the typical Unix compiler and Visual C++. + 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) + means undefine (-U) macro 'name', and (name,value) means define (-D) + macro 'name' to 'value'. 'include_dirs' is just a list of directory + names to be added to the header file search path (-I). Returns a list + of command-line options suitable for either Unix compilers or Visual + C++. + """ + # XXX it would be nice (mainly aesthetic, and so we don't generate + # stupid-looking command lines) to go over 'macros' and eliminate + # redundant definitions/undefinitions (ie. ensure that only the + # latest mention of a particular macro winds up on the command + # line). I don't think it's essential, though, since most (all?) + # Unix C compilers only pay attention to the latest -D or -U + # mention of a macro on their command line. Similar situation for + # 'include_dirs'. I'm punting on both for now. Anyways, weeding out + # redundancies like this should probably be the province of + # CCompiler, since the data structures used are inherited from it + # and therefore common to all CCompiler classes. + + pp_opts = [] + for macro in macros: + + if not (type (macro) is TupleType and + 1 <= len (macro) <= 2): + raise TypeError, \ + ("bad macro definition '%s': " + + "each element of 'macros' list must be a 1- or 2-tuple") % \ + macro + + if len (macro) == 1: # undefine this macro + pp_opts.append ("-U%s" % macro[0]) + elif len (macro) == 2: + if macro[1] is None: # define with no explicit value + pp_opts.append ("-D%s" % macro[0]) + else: + # XXX *don't* need to be clever about quoting the + # macro value here, because we're going to avoid the + # shell at all costs when we spawn the command! + pp_opts.append ("-D%s=%s" % macro) + + for dir in include_dirs: + pp_opts.append ("-I%s" % dir) + + return pp_opts + +# gen_preprocess_options () + + +def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries): + """Generate linker options for searching library directories and + linking with specific libraries. 'libraries' and 'library_dirs' are, + respectively, lists of library names (not filenames!) and search + directories. Returns a list of command-line options suitable for use + with some compiler (depending on the two format strings passed in). + """ + lib_opts = [] + + for dir in library_dirs: + lib_opts.append (compiler.library_dir_option (dir)) + + for dir in runtime_library_dirs: + lib_opts.append (compiler.runtime_library_dir_option (dir)) + + # XXX it's important that we *not* remove redundant library mentions! + # sometimes you really do have to say "-lfoo -lbar -lfoo" in order to + # resolve all symbols. I just hope we never have to say "-lfoo obj.o + # -lbar" to get things to work -- that's certainly a possibility, but a + # pretty nasty way to arrange your C code. + + for lib in libraries: + (lib_dir, lib_name) = os.path.split (lib) + if lib_dir: + lib_file = compiler.find_library_file ([lib_dir], lib_name) + if lib_file: + lib_opts.append (lib_file) + else: + compiler.warn ("no library file corresponding to " + "'%s' found (skipping)" % lib) + else: + lib_opts.append (compiler.library_option (lib)) + + return lib_opts + +# gen_lib_options () diff --git a/wxPython/distutils/cmd.py b/wxPython/distutils/cmd.py new file mode 100644 index 0000000000..1165f95124 --- /dev/null +++ b/wxPython/distutils/cmd.py @@ -0,0 +1,478 @@ +"""distutils.cmd + +Provides the Command class, the base class for the command classes +in the distutils.command package. +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string, re +from types import * +from distutils.errors import * +from distutils import util, dir_util, file_util, archive_util, dep_util +from distutils import log + +class Command: + """Abstract base class for defining command classes, the "worker bees" + of the Distutils. A useful analogy for command classes is to think of + them as subroutines with local variables called "options". The options + are "declared" in 'initialize_options()' and "defined" (given their + final values, aka "finalized") in 'finalize_options()', both of which + must be defined by every command class. The distinction between the + two is necessary because option values might come from the outside + world (command line, config file, ...), and any options dependent on + other options must be computed *after* these outside influences have + been processed -- hence 'finalize_options()'. The "body" of the + subroutine, where it does all its work based on the values of its + options, is the 'run()' method, which must also be implemented by every + command class. + """ + + # 'sub_commands' formalizes the notion of a "family" of commands, + # eg. "install" as the parent with sub-commands "install_lib", + # "install_headers", etc. The parent of a family of commands + # defines 'sub_commands' as a class attribute; it's a list of + # (command_name : string, predicate : unbound_method | string | None) + # tuples, where 'predicate' is a method of the parent command that + # determines whether the corresponding command is applicable in the + # current situation. (Eg. we "install_headers" is only applicable if + # we have any C header files to install.) If 'predicate' is None, + # that command is always applicable. + # + # 'sub_commands' is usually defined at the *end* of a class, because + # predicates can be unbound methods, so they must already have been + # defined. The canonical example is the "install" command. + sub_commands = [] + + + # -- Creation/initialization methods ------------------------------- + + def __init__ (self, dist): + """Create and initialize a new Command object. Most importantly, + invokes the 'initialize_options()' method, which is the real + initializer and depends on the actual command being + instantiated. + """ + # late import because of mutual dependence between these classes + from distutils.dist import Distribution + + if not isinstance(dist, Distribution): + raise TypeError, "dist must be a Distribution instance" + if self.__class__ is Command: + raise RuntimeError, "Command is an abstract class" + + self.distribution = dist + self.initialize_options() + + # Per-command versions of the global flags, so that the user can + # customize Distutils' behaviour command-by-command and let some + # commands fallback on the Distribution's behaviour. None means + # "not defined, check self.distribution's copy", while 0 or 1 mean + # false and true (duh). Note that this means figuring out the real + # value of each flag is a touch complicated -- hence "self._dry_run" + # will be handled by __getattr__, below. + # XXX This needs to be fixed. + self._dry_run = None + + # verbose is largely ignored, but needs to be set for + # backwards compatibility (I think)? + self.verbose = dist.verbose + + # Some commands define a 'self.force' option to ignore file + # timestamps, but methods defined *here* assume that + # 'self.force' exists for all commands. So define it here + # just to be safe. + self.force = None + + # The 'help' flag is just used for command-line parsing, so + # none of that complicated bureaucracy is needed. + self.help = 0 + + # 'finalized' records whether or not 'finalize_options()' has been + # called. 'finalize_options()' itself should not pay attention to + # this flag: it is the business of 'ensure_finalized()', which + # always calls 'finalize_options()', to respect/update it. + self.finalized = 0 + + # __init__ () + + + # XXX A more explicit way to customize dry_run would be better. + + def __getattr__ (self, attr): + if attr == 'dry_run': + myval = getattr(self, "_" + attr) + if myval is None: + return getattr(self.distribution, attr) + else: + return myval + else: + raise AttributeError, attr + + + def ensure_finalized (self): + if not self.finalized: + self.finalize_options() + self.finalized = 1 + + + # Subclasses must define: + # initialize_options() + # provide default values for all options; may be customized by + # setup script, by options from config file(s), or by command-line + # options + # finalize_options() + # decide on the final values for all options; this is called + # after all possible intervention from the outside world + # (command-line, option file, etc.) has been processed + # run() + # run the command: do whatever it is we're here to do, + # controlled by the command's various option values + + def initialize_options (self): + """Set default values for all the options that this command + supports. Note that these defaults may be overridden by other + commands, by the setup script, by config files, or by the + command-line. Thus, this is not the place to code dependencies + between options; generally, 'initialize_options()' implementations + are just a bunch of "self.foo = None" assignments. + + This method must be implemented by all command classes. + """ + raise RuntimeError, \ + "abstract method -- subclass %s must override" % self.__class__ + + def finalize_options (self): + """Set final values for all the options that this command supports. + This is always called as late as possible, ie. after any option + assignments from the command-line or from other commands have been + done. Thus, this is the place to to code option dependencies: if + 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as + long as 'foo' still has the same value it was assigned in + 'initialize_options()'. + + This method must be implemented by all command classes. + """ + raise RuntimeError, \ + "abstract method -- subclass %s must override" % self.__class__ + + + def dump_options (self, header=None, indent=""): + from distutils.fancy_getopt import longopt_xlate + if header is None: + header = "command options for '%s':" % self.get_command_name() + print indent + header + indent = indent + " " + for (option, _, _) in self.user_options: + option = string.translate(option, longopt_xlate) + if option[-1] == "=": + option = option[:-1] + value = getattr(self, option) + print indent + "%s = %s" % (option, value) + + + def run (self): + """A command's raison d'etre: carry out the action it exists to + perform, controlled by the options initialized in + 'initialize_options()', customized by other commands, the setup + script, the command-line, and config files, and finalized in + 'finalize_options()'. All terminal output and filesystem + interaction should be done by 'run()'. + + This method must be implemented by all command classes. + """ + + raise RuntimeError, \ + "abstract method -- subclass %s must override" % self.__class__ + + def announce (self, msg, level=1): + """If the current verbosity level is of greater than or equal to + 'level' print 'msg' to stdout. + """ + log.debug(msg) + + def debug_print (self, msg): + """Print 'msg' to stdout if the global DEBUG (taken from the + DISTUTILS_DEBUG environment variable) flag is true. + """ + from distutils.debug import DEBUG + if DEBUG: + print msg + sys.stdout.flush() + + + + # -- Option validation methods ------------------------------------- + # (these are very handy in writing the 'finalize_options()' method) + # + # NB. the general philosophy here is to ensure that a particular option + # value meets certain type and value constraints. If not, we try to + # force it into conformance (eg. if we expect a list but have a string, + # split the string on comma and/or whitespace). If we can't force the + # option into conformance, raise DistutilsOptionError. Thus, command + # classes need do nothing more than (eg.) + # self.ensure_string_list('foo') + # and they can be guaranteed that thereafter, self.foo will be + # a list of strings. + + def _ensure_stringlike (self, option, what, default=None): + val = getattr(self, option) + if val is None: + setattr(self, option, default) + return default + elif type(val) is not StringType: + raise DistutilsOptionError, \ + "'%s' must be a %s (got `%s`)" % (option, what, val) + return val + + def ensure_string (self, option, default=None): + """Ensure that 'option' is a string; if not defined, set it to + 'default'. + """ + self._ensure_stringlike(option, "string", default) + + def ensure_string_list (self, option): + """Ensure that 'option' is a list of strings. If 'option' is + currently a string, we split it either on /,\s*/ or /\s+/, so + "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become + ["foo", "bar", "baz"]. + """ + val = getattr(self, option) + if val is None: + return + elif type(val) is StringType: + setattr(self, option, re.split(r',\s*|\s+', val)) + else: + if type(val) is ListType: + types = map(type, val) + ok = (types == [StringType] * len(val)) + else: + ok = 0 + + if not ok: + raise DistutilsOptionError, \ + "'%s' must be a list of strings (got %s)" % \ + (option, `val`) + + def _ensure_tested_string (self, option, tester, + what, error_fmt, default=None): + val = self._ensure_stringlike(option, what, default) + if val is not None and not tester(val): + raise DistutilsOptionError, \ + ("error in '%s' option: " + error_fmt) % (option, val) + + def ensure_filename (self, option): + """Ensure that 'option' is the name of an existing file.""" + self._ensure_tested_string(option, os.path.isfile, + "filename", + "'%s' does not exist or is not a file") + + def ensure_dirname (self, option): + self._ensure_tested_string(option, os.path.isdir, + "directory name", + "'%s' does not exist or is not a directory") + + + # -- Convenience methods for commands ------------------------------ + + def get_command_name (self): + if hasattr(self, 'command_name'): + return self.command_name + else: + return self.__class__.__name__ + + + def set_undefined_options (self, src_cmd, *option_pairs): + """Set the values of any "undefined" options from corresponding + option values in some other command object. "Undefined" here means + "is None", which is the convention used to indicate that an option + has not been changed between 'initialize_options()' and + 'finalize_options()'. Usually called from 'finalize_options()' for + options that depend on some other command rather than another + option of the same command. 'src_cmd' is the other command from + which option values will be taken (a command object will be created + for it if necessary); the remaining arguments are + '(src_option,dst_option)' tuples which mean "take the value of + 'src_option' in the 'src_cmd' command object, and copy it to + 'dst_option' in the current command object". + """ + + # Option_pairs: list of (src_option, dst_option) tuples + + src_cmd_obj = self.distribution.get_command_obj(src_cmd) + src_cmd_obj.ensure_finalized() + for (src_option, dst_option) in option_pairs: + if getattr(self, dst_option) is None: + setattr(self, dst_option, + getattr(src_cmd_obj, src_option)) + + + def get_finalized_command (self, command, create=1): + """Wrapper around Distribution's 'get_command_obj()' method: find + (create if necessary and 'create' is true) the command object for + 'command', call its 'ensure_finalized()' method, and return the + finalized command object. + """ + cmd_obj = self.distribution.get_command_obj(command, create) + cmd_obj.ensure_finalized() + return cmd_obj + + # XXX rename to 'get_reinitialized_command()'? (should do the + # same in dist.py, if so) + def reinitialize_command (self, command, reinit_subcommands=0): + return self.distribution.reinitialize_command( + command, reinit_subcommands) + + def run_command (self, command): + """Run some other command: uses the 'run_command()' method of + Distribution, which creates and finalizes the command object if + necessary and then invokes its 'run()' method. + """ + self.distribution.run_command(command) + + + def get_sub_commands (self): + """Determine the sub-commands that are relevant in the current + distribution (ie., that need to be run). This is based on the + 'sub_commands' class attribute: each tuple in that list may include + a method that we call to determine if the subcommand needs to be + run for the current distribution. Return a list of command names. + """ + commands = [] + for (cmd_name, method) in self.sub_commands: + if method is None or method(self): + commands.append(cmd_name) + return commands + + + # -- External world manipulation ----------------------------------- + + def warn (self, msg): + sys.stderr.write("warning: %s: %s\n" % + (self.get_command_name(), msg)) + + + def execute (self, func, args, msg=None, level=1): + util.execute(func, args, msg, dry_run=self.dry_run) + + + def mkpath (self, name, mode=0777): + dir_util.mkpath(name, mode, dry_run=self.dry_run) + + + def copy_file (self, infile, outfile, + preserve_mode=1, preserve_times=1, link=None, level=1): + """Copy a file respecting verbose, dry-run and force flags. (The + former two default to whatever is in the Distribution object, and + the latter defaults to false for commands that don't define it.)""" + + return file_util.copy_file( + infile, outfile, + preserve_mode, preserve_times, + not self.force, + link, + dry_run=self.dry_run) + + + def copy_tree (self, infile, outfile, + preserve_mode=1, preserve_times=1, preserve_symlinks=0, + level=1): + """Copy an entire directory tree respecting verbose, dry-run, + and force flags. + """ + return dir_util.copy_tree( + infile, outfile, + preserve_mode,preserve_times,preserve_symlinks, + not self.force, + dry_run=self.dry_run) + + def move_file (self, src, dst, level=1): + """Move a file respectin dry-run flag.""" + return file_util.move_file(src, dst, dry_run = self.dry_run) + + def spawn (self, cmd, search_path=1, level=1): + """Spawn an external command respecting dry-run flag.""" + from distutils.spawn import spawn + spawn(cmd, search_path, dry_run= self.dry_run) + + def make_archive (self, base_name, format, + root_dir=None, base_dir=None): + return archive_util.make_archive( + base_name, format, root_dir, base_dir, dry_run=self.dry_run) + + + def make_file (self, infiles, outfile, func, args, + exec_msg=None, skip_msg=None, level=1): + """Special case of 'execute()' for operations that process one or + more input files and generate one output file. Works just like + 'execute()', except the operation is skipped and a different + message printed if 'outfile' already exists and is newer than all + files listed in 'infiles'. If the command defined 'self.force', + and it is true, then the command is unconditionally run -- does no + timestamp checks. + """ + if exec_msg is None: + exec_msg = "generating %s from %s" % \ + (outfile, string.join(infiles, ', ')) + if skip_msg is None: + skip_msg = "skipping %s (inputs unchanged)" % outfile + + + # Allow 'infiles' to be a single string + if type(infiles) is StringType: + infiles = (infiles,) + elif type(infiles) not in (ListType, TupleType): + raise TypeError, \ + "'infiles' must be a string, or a list or tuple of strings" + + # If 'outfile' must be regenerated (either because it doesn't + # exist, is out-of-date, or the 'force' flag is true) then + # perform the action that presumably regenerates it + if self.force or dep_util.newer_group (infiles, outfile): + self.execute(func, args, exec_msg, level) + + # Otherwise, print the "skip" message + else: + log.debug(skip_msg) + + # make_file () + +# class Command + + +# XXX 'install_misc' class not currently used -- it was the base class for +# both 'install_scripts' and 'install_data', but they outgrew it. It might +# still be useful for 'install_headers', though, so I'm keeping it around +# for the time being. + +class install_misc (Command): + """Common base class for installing some files in a subdirectory. + Currently used by install_data and install_scripts. + """ + + user_options = [('install-dir=', 'd', "directory to install the files to")] + + def initialize_options (self): + self.install_dir = None + self.outfiles = [] + + def _install_dir_from (self, dirname): + self.set_undefined_options('install', (dirname, 'install_dir')) + + def _copy_files (self, filelist): + self.outfiles = [] + if not filelist: + return + self.mkpath(self.install_dir) + for f in filelist: + self.copy_file(f, self.install_dir) + self.outfiles.append(os.path.join(self.install_dir, f)) + + def get_outputs (self): + return self.outfiles + + +if __name__ == "__main__": + print "ok" diff --git a/wxPython/distutils/command/__init__.py b/wxPython/distutils/command/__init__.py new file mode 100644 index 0000000000..fc6117166b --- /dev/null +++ b/wxPython/distutils/command/__init__.py @@ -0,0 +1,32 @@ +"""distutils.command + +Package containing implementation of all the standard Distutils +commands.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +__all__ = ['build', + 'build_py', + 'build_ext', + 'build_clib', + 'build_scripts', + 'clean', + 'install', + 'install_lib', + 'install_headers', + 'install_scripts', + 'install_data', + 'sdist', + 'bdist', + 'bdist_dumb', + 'bdist_rpm', + 'bdist_wininst', + # These two are reserved for future use: + #'bdist_sdux', + #'bdist_pkgtool', + # Note: + # bdist_packager is not included because it only provides + # an abstract base class + ] diff --git a/wxPython/distutils/command/bdist.py b/wxPython/distutils/command/bdist.py new file mode 100644 index 0000000000..7c606ffc4d --- /dev/null +++ b/wxPython/distutils/command/bdist.py @@ -0,0 +1,150 @@ +"""distutils.command.bdist + +Implements the Distutils 'bdist' command (create a built [binary] +distribution).""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os, string +from types import * +from distutils.core import Command +from distutils.errors import * +from distutils.util import get_platform + + +def show_formats (): + """Print list of available formats (arguments to "--format" option). + """ + from distutils.fancy_getopt import FancyGetopt + formats=[] + for format in bdist.format_commands: + formats.append(("formats=" + format, None, + bdist.format_command[format][1])) + pretty_printer = FancyGetopt(formats) + pretty_printer.print_help("List of available distribution formats:") + + +class bdist (Command): + + description = "create a built (binary) distribution" + + user_options = [('bdist-base=', 'b', + "temporary directory for creating built distributions"), + ('plat-name=', 'p', + "platform name to embed in generated filenames " + "(default: %s)" % get_platform()), + ('formats=', None, + "formats for distribution (comma-separated list)"), + ('dist-dir=', 'd', + "directory to put final built distributions in " + "[default: dist]"), + ('skip-build', None, + "skip rebuilding everything (for testing/debugging)"), + ] + + boolean_options = ['skip-build'] + + help_options = [ + ('help-formats', None, + "lists available distribution formats", show_formats), + ] + + # The following commands do not take a format option from bdist + no_format_option = ('bdist_rpm', + #'bdist_sdux', 'bdist_pkgtool' + ) + + # This won't do in reality: will need to distinguish RPM-ish Linux, + # Debian-ish Linux, Solaris, FreeBSD, ..., Windows, Mac OS. + default_format = { 'posix': 'gztar', + 'nt': 'zip', + 'os2': 'zip', } + + # Establish the preferred order (for the --help-formats option). + format_commands = ['rpm', 'gztar', 'bztar', 'ztar', 'tar', + 'wininst', 'zip', + #'pkgtool', 'sdux' + ] + + # And the real information. + format_command = { 'rpm': ('bdist_rpm', "RPM distribution"), + 'zip': ('bdist_dumb', "ZIP file"), + 'gztar': ('bdist_dumb', "gzip'ed tar file"), + 'bztar': ('bdist_dumb', "bzip2'ed tar file"), + 'ztar': ('bdist_dumb', "compressed tar file"), + 'tar': ('bdist_dumb', "tar file"), + 'wininst': ('bdist_wininst', + "Windows executable installer"), + 'zip': ('bdist_dumb', "ZIP file"), + #'pkgtool': ('bdist_pkgtool', + # "Solaris pkgtool distribution"), + #'sdux': ('bdist_sdux', "HP-UX swinstall depot"), + } + + + def initialize_options (self): + self.bdist_base = None + self.plat_name = None + self.formats = None + self.dist_dir = None + self.skip_build = 0 + + # initialize_options() + + + def finalize_options (self): + # have to finalize 'plat_name' before 'bdist_base' + if self.plat_name is None: + self.plat_name = get_platform() + + # 'bdist_base' -- parent of per-built-distribution-format + # temporary directories (eg. we'll probably have + # "build/bdist.<plat>/dumb", "build/bdist.<plat>/rpm", etc.) + if self.bdist_base is None: + build_base = self.get_finalized_command('build').build_base + self.bdist_base = os.path.join(build_base, + 'bdist.' + self.plat_name) + + self.ensure_string_list('formats') + if self.formats is None: + try: + self.formats = [self.default_format[os.name]] + except KeyError: + raise DistutilsPlatformError, \ + "don't know how to create built distributions " + \ + "on platform %s" % os.name + + if self.dist_dir is None: + self.dist_dir = "dist" + + # finalize_options() + + + def run (self): + + # Figure out which sub-commands we need to run. + commands = [] + for format in self.formats: + try: + commands.append(self.format_command[format][0]) + except KeyError: + raise DistutilsOptionError, "invalid format '%s'" % format + + # Reinitialize and run each command. + for i in range(len(self.formats)): + cmd_name = commands[i] + sub_cmd = self.reinitialize_command(cmd_name) + if cmd_name not in self.no_format_option: + sub_cmd.format = self.formats[i] + + # If we're going to need to run this command again, tell it to + # keep its temporary files around so subsequent runs go faster. + if cmd_name in commands[i+1:]: + sub_cmd.keep_temp = 1 + self.run_command(cmd_name) + + # run() + +# class bdist diff --git a/wxPython/distutils/command/bdist_dumb.py b/wxPython/distutils/command/bdist_dumb.py new file mode 100644 index 0000000000..8ee3a5c5f7 --- /dev/null +++ b/wxPython/distutils/command/bdist_dumb.py @@ -0,0 +1,128 @@ +"""distutils.command.bdist_dumb + +Implements the Distutils 'bdist_dumb' command (create a "dumb" built +distribution -- i.e., just an archive to be unpacked under $prefix or +$exec_prefix).""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.core import Command +from distutils.util import get_platform +from distutils.dir_util import create_tree, remove_tree, ensure_relative +from distutils.errors import * +from distutils import log + +class bdist_dumb (Command): + + description = "create a \"dumb\" built distribution" + + user_options = [('bdist-dir=', 'd', + "temporary directory for creating the distribution"), + ('plat-name=', 'p', + "platform name to embed in generated filenames " + "(default: %s)" % get_platform()), + ('format=', 'f', + "archive format to create (tar, ztar, gztar, zip)"), + ('keep-temp', 'k', + "keep the pseudo-installation tree around after " + + "creating the distribution archive"), + ('dist-dir=', 'd', + "directory to put final built distributions in"), + ('skip-build', None, + "skip rebuilding everything (for testing/debugging)"), + ('relative', None, + "build the archive using relative paths" + "(default: false)"), + ] + + boolean_options = ['keep-temp', 'skip-build', 'relative'] + + default_format = { 'posix': 'gztar', + 'nt': 'zip', + 'os2': 'zip' } + + + def initialize_options (self): + self.bdist_dir = None + self.plat_name = None + self.format = None + self.keep_temp = 0 + self.dist_dir = None + self.skip_build = 0 + self.relative = 0 + + # initialize_options() + + + def finalize_options (self): + + if self.bdist_dir is None: + bdist_base = self.get_finalized_command('bdist').bdist_base + self.bdist_dir = os.path.join(bdist_base, 'dumb') + + if self.format is None: + try: + self.format = self.default_format[os.name] + except KeyError: + raise DistutilsPlatformError, \ + ("don't know how to create dumb built distributions " + + "on platform %s") % os.name + + self.set_undefined_options('bdist', + ('dist_dir', 'dist_dir'), + ('plat_name', 'plat_name')) + + # finalize_options() + + + def run (self): + + if not self.skip_build: + self.run_command('build') + + install = self.reinitialize_command('install', reinit_subcommands=1) + install.root = self.bdist_dir + install.skip_build = self.skip_build + install.warn_dir = 0 + + log.info("installing to %s" % self.bdist_dir) + self.run_command('install') + + # And make an archive relative to the root of the + # pseudo-installation tree. + archive_basename = "%s.%s" % (self.distribution.get_fullname(), + self.plat_name) + + # OS/2 objects to any ":" characters in a filename (such as when + # a timestamp is used in a version) so change them to hyphens. + if os.name == "os2": + archive_basename = archive_basename.replace(":", "-") + + pseudoinstall_root = os.path.join(self.dist_dir, archive_basename) + if not self.relative: + archive_root = self.bdist_dir + else: + if (self.distribution.has_ext_modules() and + (install.install_base != install.install_platbase)): + raise DistutilsPlatformError, \ + ("can't make a dumb built distribution where " + "base and platbase are different (%s, %s)" + % (repr(install.install_base), + repr(install.install_platbase))) + else: + archive_root = os.path.join(self.bdist_dir, + ensure_relative(install.install_base)) + + # Make the archive + self.make_archive(pseudoinstall_root, + self.format, root_dir=archive_root) + + if not self.keep_temp: + remove_tree(self.bdist_dir, dry_run=self.dry_run) + + # run() + +# class bdist_dumb diff --git a/wxPython/distutils/command/bdist_rpm.py b/wxPython/distutils/command/bdist_rpm.py new file mode 100644 index 0000000000..237cc70d25 --- /dev/null +++ b/wxPython/distutils/command/bdist_rpm.py @@ -0,0 +1,493 @@ +"""distutils.command.bdist_rpm + +Implements the Distutils 'bdist_rpm' command (create RPM source and binary +distributions).""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +import glob +from types import * +from distutils.core import Command +from distutils.debug import DEBUG +from distutils.util import get_platform +from distutils.file_util import write_file +from distutils.errors import * +from distutils import log + +class bdist_rpm (Command): + + description = "create an RPM distribution" + + user_options = [ + ('bdist-base=', None, + "base directory for creating built distributions"), + ('rpm-base=', None, + "base directory for creating RPMs (defaults to \"rpm\" under " + "--bdist-base; must be specified for RPM 2)"), + ('dist-dir=', 'd', + "directory to put final RPM files in " + "(and .spec files if --spec-only)"), + ('python=', None, + "path to Python interpreter to hard-code in the .spec file " + "(default: \"python\")"), + ('fix-python', None, + "hard-code the exact path to the current Python interpreter in " + "the .spec file"), + ('spec-only', None, + "only regenerate spec file"), + ('source-only', None, + "only generate source RPM"), + ('binary-only', None, + "only generate binary RPM"), + ('use-bzip2', None, + "use bzip2 instead of gzip to create source distribution"), + + # More meta-data: too RPM-specific to put in the setup script, + # but needs to go in the .spec file -- so we make these options + # to "bdist_rpm". The idea is that packagers would put this + # info in setup.cfg, although they are of course free to + # supply it on the command line. + ('distribution-name=', None, + "name of the (Linux) distribution to which this " + "RPM applies (*not* the name of the module distribution!)"), + ('group=', None, + "package classification [default: \"Development/Libraries\"]"), + ('release=', None, + "RPM release number"), + ('serial=', None, + "RPM serial number"), + ('vendor=', None, + "RPM \"vendor\" (eg. \"Joe Blow <joe@example.com>\") " + "[default: maintainer or author from setup script]"), + ('packager=', None, + "RPM packager (eg. \"Jane Doe <jane@example.net>\")" + "[default: vendor]"), + ('doc-files=', None, + "list of documentation files (space or comma-separated)"), + ('changelog=', None, + "RPM changelog"), + ('icon=', None, + "name of icon file"), + ('provides=', None, + "capabilities provided by this package"), + ('requires=', None, + "capabilities required by this package"), + ('conflicts=', None, + "capabilities which conflict with this package"), + ('build-requires=', None, + "capabilities required to build this package"), + ('obsoletes=', None, + "capabilities made obsolete by this package"), + + # Actions to take when building RPM + ('keep-temp', 'k', + "don't clean up RPM build directory"), + ('no-keep-temp', None, + "clean up RPM build directory [default]"), + ('use-rpm-opt-flags', None, + "compile with RPM_OPT_FLAGS when building from source RPM"), + ('no-rpm-opt-flags', None, + "do not pass any RPM CFLAGS to compiler"), + ('rpm3-mode', None, + "RPM 3 compatibility mode (default)"), + ('rpm2-mode', None, + "RPM 2 compatibility mode"), + ] + + boolean_options = ['keep-temp', 'use-rpm-opt-flags', 'rpm3-mode'] + + negative_opt = {'no-keep-temp': 'keep-temp', + 'no-rpm-opt-flags': 'use-rpm-opt-flags', + 'rpm2-mode': 'rpm3-mode'} + + + def initialize_options (self): + self.bdist_base = None + self.rpm_base = None + self.dist_dir = None + self.python = None + self.fix_python = None + self.spec_only = None + self.binary_only = None + self.source_only = None + self.use_bzip2 = None + + self.distribution_name = None + self.group = None + self.release = None + self.serial = None + self.vendor = None + self.packager = None + self.doc_files = None + self.changelog = None + self.icon = None + + self.prep_script = None + self.build_script = None + self.install_script = None + self.clean_script = None + self.verify_script = None + self.pre_install = None + self.post_install = None + self.pre_uninstall = None + self.post_uninstall = None + self.prep = None + self.provides = None + self.requires = None + self.conflicts = None + self.build_requires = None + self.obsoletes = None + + self.keep_temp = 0 + self.use_rpm_opt_flags = 1 + self.rpm3_mode = 1 + + # initialize_options() + + + def finalize_options (self): + self.set_undefined_options('bdist', ('bdist_base', 'bdist_base')) + if self.rpm_base is None: + if not self.rpm3_mode: + raise DistutilsOptionError, \ + "you must specify --rpm-base in RPM 2 mode" + self.rpm_base = os.path.join(self.bdist_base, "rpm") + + if self.python is None: + if self.fix_python: + self.python = sys.executable + else: + self.python = "python" + elif self.fix_python: + raise DistutilsOptionError, \ + "--python and --fix-python are mutually exclusive options" + + if os.name != 'posix': + raise DistutilsPlatformError, \ + ("don't know how to create RPM " + "distributions on platform %s" % os.name) + if self.binary_only and self.source_only: + raise DistutilsOptionError, \ + "cannot supply both '--source-only' and '--binary-only'" + + # don't pass CFLAGS to pure python distributions + if not self.distribution.has_ext_modules(): + self.use_rpm_opt_flags = 0 + + self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) + self.finalize_package_data() + + # finalize_options() + + def finalize_package_data (self): + self.ensure_string('group', "Development/Libraries") + self.ensure_string('vendor', + "%s <%s>" % (self.distribution.get_contact(), + self.distribution.get_contact_email())) + self.ensure_string('packager') + self.ensure_string_list('doc_files') + if type(self.doc_files) is ListType: + for readme in ('README', 'README.txt'): + if os.path.exists(readme) and readme not in self.doc_files: + self.doc_files.append(readme) + + self.ensure_string('release', "1") + self.ensure_string('serial') # should it be an int? + + self.ensure_string('distribution_name') + + self.ensure_string('changelog') + # Format changelog correctly + self.changelog = self._format_changelog(self.changelog) + + self.ensure_filename('icon') + + self.ensure_filename('prep_script') + self.ensure_filename('build_script') + self.ensure_filename('install_script') + self.ensure_filename('clean_script') + self.ensure_filename('verify_script') + self.ensure_filename('pre_install') + self.ensure_filename('post_install') + self.ensure_filename('pre_uninstall') + self.ensure_filename('post_uninstall') + + # XXX don't forget we punted on summaries and descriptions -- they + # should be handled here eventually! + + # Now *this* is some meta-data that belongs in the setup script... + self.ensure_string_list('provides') + self.ensure_string_list('requires') + self.ensure_string_list('conflicts') + self.ensure_string_list('build_requires') + self.ensure_string_list('obsoletes') + + # finalize_package_data () + + + def run (self): + + if DEBUG: + print "before _get_package_data():" + print "vendor =", self.vendor + print "packager =", self.packager + print "doc_files =", self.doc_files + print "changelog =", self.changelog + + # make directories + if self.spec_only: + spec_dir = self.dist_dir + self.mkpath(spec_dir) + else: + rpm_dir = {} + for d in ('SOURCES', 'SPECS', 'BUILD', 'RPMS', 'SRPMS'): + rpm_dir[d] = os.path.join(self.rpm_base, d) + self.mkpath(rpm_dir[d]) + spec_dir = rpm_dir['SPECS'] + + # Spec file goes into 'dist_dir' if '--spec-only specified', + # build/rpm.<plat> otherwise. + spec_path = os.path.join(spec_dir, + "%s.spec" % self.distribution.get_name()) + self.execute(write_file, + (spec_path, + self._make_spec_file()), + "writing '%s'" % spec_path) + + if self.spec_only: # stop if requested + return + + # Make a source distribution and copy to SOURCES directory with + # optional icon. + sdist = self.reinitialize_command('sdist') + if self.use_bzip2: + sdist.formats = ['bztar'] + else: + sdist.formats = ['gztar'] + self.run_command('sdist') + + source = sdist.get_archive_files()[0] + source_dir = rpm_dir['SOURCES'] + self.copy_file(source, source_dir) + + if self.icon: + if os.path.exists(self.icon): + self.copy_file(self.icon, source_dir) + else: + raise DistutilsFileError, \ + "icon file '%s' does not exist" % self.icon + + + # build package + log.info("building RPMs") + rpm_cmd = ['rpm'] + if os.path.exists('/usr/bin/rpmbuild') or \ + os.path.exists('/bin/rpmbuild'): + rpm_cmd = ['rpmbuild'] + if self.source_only: # what kind of RPMs? + rpm_cmd.append('-bs') + elif self.binary_only: + rpm_cmd.append('-bb') + else: + rpm_cmd.append('-ba') + if self.rpm3_mode: + rpm_cmd.extend(['--define', + '_topdir %s/%s' % (os.getcwd(), self.rpm_base),]) + if not self.keep_temp: + rpm_cmd.append('--clean') + rpm_cmd.append(spec_path) + self.spawn(rpm_cmd) + + # XXX this is a nasty hack -- we really should have a proper way to + # find out the names of the RPM files created; also, this assumes + # that RPM creates exactly one source and one binary RPM. + if not self.dry_run: + if not self.binary_only: + srpms = glob.glob(os.path.join(rpm_dir['SRPMS'], "*.rpm")) + assert len(srpms) == 1, \ + "unexpected number of SRPM files found: %s" % srpms + self.move_file(srpms[0], self.dist_dir) + + if not self.source_only: + rpms = glob.glob(os.path.join(rpm_dir['RPMS'], "*/*.rpm")) + assert len(rpms) == 1, \ + "unexpected number of RPM files found: %s" % rpms + self.move_file(rpms[0], self.dist_dir) + + # run() + + + def _make_spec_file(self): + """Generate the text of an RPM spec file and return it as a + list of strings (one per line). + """ + # definitions and headers + spec_file = [ + '%define name ' + self.distribution.get_name(), + '%define version ' + self.distribution.get_version(), + '%define release ' + self.release, + '', + 'Summary: ' + self.distribution.get_description(), + ] + + # put locale summaries into spec file + # XXX not supported for now (hard to put a dictionary + # in a config file -- arg!) + #for locale in self.summaries.keys(): + # spec_file.append('Summary(%s): %s' % (locale, + # self.summaries[locale])) + + spec_file.extend([ + 'Name: %{name}', + 'Version: %{version}', + 'Release: %{release}',]) + + # XXX yuck! this filename is available from the "sdist" command, + # but only after it has run: and we create the spec file before + # running "sdist", in case of --spec-only. + if self.use_bzip2: + spec_file.append('Source0: %{name}-%{version}.tar.bz2') + else: + spec_file.append('Source0: %{name}-%{version}.tar.gz') + + spec_file.extend([ + 'License: ' + self.distribution.get_license(), + 'Group: ' + self.group, + 'BuildRoot: %{_tmppath}/%{name}-buildroot', + 'Prefix: %{_prefix}', ]) + + # noarch if no extension modules + if not self.distribution.has_ext_modules(): + spec_file.append('BuildArchitectures: noarch') + + for field in ('Vendor', + 'Packager', + 'Provides', + 'Requires', + 'Conflicts', + 'Obsoletes', + ): + val = getattr(self, string.lower(field)) + if type(val) is ListType: + spec_file.append('%s: %s' % (field, string.join(val))) + elif val is not None: + spec_file.append('%s: %s' % (field, val)) + + + if self.distribution.get_url() != 'UNKNOWN': + spec_file.append('Url: ' + self.distribution.get_url()) + + if self.distribution_name: + spec_file.append('Distribution: ' + self.distribution_name) + + if self.build_requires: + spec_file.append('BuildRequires: ' + + string.join(self.build_requires)) + + if self.icon: + spec_file.append('Icon: ' + os.path.basename(self.icon)) + + spec_file.extend([ + '', + '%description', + self.distribution.get_long_description() + ]) + + # put locale descriptions into spec file + # XXX again, suppressed because config file syntax doesn't + # easily support this ;-( + #for locale in self.descriptions.keys(): + # spec_file.extend([ + # '', + # '%description -l ' + locale, + # self.descriptions[locale], + # ]) + + # rpm scripts + # figure out default build script + def_build = "%s setup.py build" % self.python + if self.use_rpm_opt_flags: + def_build = 'env CFLAGS="$RPM_OPT_FLAGS" ' + def_build + + # insert contents of files + + # XXX this is kind of misleading: user-supplied options are files + # that we open and interpolate into the spec file, but the defaults + # are just text that we drop in as-is. Hmmm. + + script_options = [ + ('prep', 'prep_script', "%setup"), + ('build', 'build_script', def_build), + ('install', 'install_script', + ("%s setup.py install " + "--root=$RPM_BUILD_ROOT " + "--record=INSTALLED_FILES") % self.python), + ('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"), + ('verifyscript', 'verify_script', None), + ('pre', 'pre_install', None), + ('post', 'post_install', None), + ('preun', 'pre_uninstall', None), + ('postun', 'post_uninstall', None), + ] + + for (rpm_opt, attr, default) in script_options: + # Insert contents of file referred to, if no file is referred to + # use 'default' as contents of script + val = getattr(self, attr) + if val or default: + spec_file.extend([ + '', + '%' + rpm_opt,]) + if val: + spec_file.extend(string.split(open(val, 'r').read(), '\n')) + else: + spec_file.append(default) + + + # files section + spec_file.extend([ + '', + '%files -f INSTALLED_FILES', + '%defattr(-,root,root)', + ]) + + if self.doc_files: + spec_file.append('%doc ' + string.join(self.doc_files)) + + if self.changelog: + spec_file.extend([ + '', + '%changelog',]) + spec_file.extend(self.changelog) + + return spec_file + + # _make_spec_file () + + def _format_changelog(self, changelog): + """Format the changelog correctly and convert it to a list of strings + """ + if not changelog: + return changelog + new_changelog = [] + for line in string.split(string.strip(changelog), '\n'): + line = string.strip(line) + if line[0] == '*': + new_changelog.extend(['', line]) + elif line[0] == '-': + new_changelog.append(line) + else: + new_changelog.append(' ' + line) + + # strip trailing newline inserted by first changelog entry + if not new_changelog[0]: + del new_changelog[0] + + return new_changelog + + # _format_changelog() + +# class bdist_rpm diff --git a/wxPython/distutils/command/bdist_wininst.py b/wxPython/distutils/command/bdist_wininst.py new file mode 100644 index 0000000000..5acca11a62 --- /dev/null +++ b/wxPython/distutils/command/bdist_wininst.py @@ -0,0 +1,242 @@ +"""distutils.command.bdist_wininst + +Implements the Distutils 'bdist_wininst' command: create a windows installer +exe-program.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from distutils.core import Command +from distutils.util import get_platform +from distutils.dir_util import create_tree, remove_tree +from distutils.errors import * +from distutils.sysconfig import get_python_version +from distutils import log + +class bdist_wininst (Command): + + description = "create an executable installer for MS Windows" + + user_options = [('bdist-dir=', None, + "temporary directory for creating the distribution"), + ('keep-temp', 'k', + "keep the pseudo-installation tree around after " + + "creating the distribution archive"), + ('target-version=', 'v', + "require a specific python version" + + " on the target system"), + ('no-target-compile', 'c', + "do not compile .py to .pyc on the target system"), + ('no-target-optimize', 'o', + "do not compile .py to .pyo (optimized)" + "on the target system"), + ('dist-dir=', 'd', + "directory to put final built distributions in"), + ('bitmap=', 'b', + "bitmap to use for the installer instead of python-powered logo"), + ('title=', 't', + "title to display on the installer background instead of default"), + ('skip-build', None, + "skip rebuilding everything (for testing/debugging)"), + ('install-script=', None, + "basename of installation script to be run after" + "installation or before deinstallation"), + ] + + boolean_options = ['keep-temp', 'no-target-compile', 'no-target-optimize', + 'skip-build'] + + def initialize_options (self): + self.bdist_dir = None + self.keep_temp = 0 + self.no_target_compile = 0 + self.no_target_optimize = 0 + self.target_version = None + self.dist_dir = None + self.bitmap = None + self.title = None + self.skip_build = 0 + self.install_script = None + + # initialize_options() + + + def finalize_options (self): + if self.bdist_dir is None: + bdist_base = self.get_finalized_command('bdist').bdist_base + self.bdist_dir = os.path.join(bdist_base, 'wininst') + if not self.target_version: + self.target_version = "" + if self.distribution.has_ext_modules(): + short_version = get_python_version() + if self.target_version and self.target_version != short_version: + raise DistutilsOptionError, \ + "target version can only be" + short_version + self.target_version = short_version + + self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) + + if self.install_script: + for script in self.distribution.scripts: + if self.install_script == os.path.basename(script): + break + else: + raise DistutilsOptionError, \ + "install_script '%s' not found in scripts" % \ + self.install_script + # finalize_options() + + + def run (self): + if (sys.platform != "win32" and + (self.distribution.has_ext_modules() or + self.distribution.has_c_libraries())): + raise DistutilsPlatformError \ + ("distribution contains extensions and/or C libraries; " + "must be compiled on a Windows 32 platform") + + if not self.skip_build: + self.run_command('build') + + install = self.reinitialize_command('install') + install.root = self.bdist_dir + install.skip_build = self.skip_build + install.warn_dir = 0 + + install_lib = self.reinitialize_command('install_lib') + # we do not want to include pyc or pyo files + install_lib.compile = 0 + install_lib.optimize = 0 + + # Use a custom scheme for the zip-file, because we have to decide + # at installation time which scheme to use. + for key in ('purelib', 'platlib', 'headers', 'scripts', 'data'): + value = string.upper(key) + if key == 'headers': + value = value + '/Include/$dist_name' + setattr(install, + 'install_' + key, + value) + + log.info("installing to %s", self.bdist_dir) + install.ensure_finalized() + + # avoid warning of 'install_lib' about installing + # into a directory not in sys.path + sys.path.insert(0, os.path.join(self.bdist_dir, 'PURELIB')) + + install.run() + + del sys.path[0] + + # And make an archive relative to the root of the + # pseudo-installation tree. + from tempfile import mktemp + archive_basename = mktemp() + fullname = self.distribution.get_fullname() + arcname = self.make_archive(archive_basename, "zip", + root_dir=self.bdist_dir) + # create an exe containing the zip-file + self.create_exe(arcname, fullname, self.bitmap) + # remove the zip-file again + log.debug("removing temporary file '%s'", arcname) + os.remove(arcname) + + if not self.keep_temp: + remove_tree(self.bdist_dir, dry_run=self.dry_run) + + # run() + + def get_inidata (self): + # Return data describing the installation. + + lines = [] + metadata = self.distribution.metadata + + # Write the [metadata] section. Values are written with + # repr()[1:-1], so they do not contain unprintable characters, and + # are not surrounded by quote chars. + lines.append("[metadata]") + + # 'info' will be displayed in the installer's dialog box, + # describing the items to be installed. + info = (metadata.long_description or '') + '\n' + + for name in ["author", "author_email", "description", "maintainer", + "maintainer_email", "name", "url", "version"]: + data = getattr(metadata, name, "") + if data: + info = info + ("\n %s: %s" % \ + (string.capitalize(name), data)) + lines.append("%s=%s" % (name, repr(data)[1:-1])) + + # The [setup] section contains entries controlling + # the installer runtime. + lines.append("\n[Setup]") + if self.install_script: + lines.append("install_script=%s" % self.install_script) + lines.append("info=%s" % repr(info)[1:-1]) + lines.append("target_compile=%d" % (not self.no_target_compile)) + lines.append("target_optimize=%d" % (not self.no_target_optimize)) + if self.target_version: + lines.append("target_version=%s" % self.target_version) + + title = self.title or self.distribution.get_fullname() + lines.append("title=%s" % repr(title)[1:-1]) + import time + import distutils + build_info = "Build %s with distutils-%s" % \ + (time.ctime(time.time()), distutils.__version__) + lines.append("build_info=%s" % build_info) + return string.join(lines, "\n") + + # get_inidata() + + def create_exe (self, arcname, fullname, bitmap=None): + import struct + + self.mkpath(self.dist_dir) + + cfgdata = self.get_inidata() + + if self.target_version: + # if we create an installer for a specific python version, + # it's better to include this in the name + installer_name = os.path.join(self.dist_dir, + "%s.win32-py%s.exe" % + (fullname, self.target_version)) + else: + installer_name = os.path.join(self.dist_dir, + "%s.win32.exe" % fullname) + self.announce("creating %s" % installer_name) + + if bitmap: + bitmapdata = open(bitmap, "rb").read() + bitmaplen = len(bitmapdata) + else: + bitmaplen = 0 + + file = open(installer_name, "wb") + file.write(self.get_exe_bytes()) + if bitmap: + file.write(bitmapdata) + + file.write(cfgdata) + header = struct.pack("<iii", + 0x1234567A, # tag + len(cfgdata), # length + bitmaplen, # number of bytes in bitmap + ) + file.write(header) + file.write(open(arcname, "rb").read()) + + # create_exe() + + def get_exe_bytes (self): + # wininst.exe is in the same directory as this file + directory = os.path.dirname(__file__) + filename = os.path.join(directory, "wininst.exe") + return open(filename, "rb").read() +# class bdist_wininst diff --git a/wxPython/distutils/command/build.py b/wxPython/distutils/command/build.py new file mode 100644 index 0000000000..78231541ec --- /dev/null +++ b/wxPython/distutils/command/build.py @@ -0,0 +1,131 @@ +"""distutils.command.build + +Implements the Distutils 'build' command.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os +from distutils.core import Command +from distutils.util import get_platform + + +def show_compilers (): + from distutils.ccompiler import show_compilers + show_compilers() + + +class build (Command): + + description = "build everything needed to install" + + user_options = [ + ('build-base=', 'b', + "base directory for build library"), + ('build-purelib=', None, + "build directory for platform-neutral distributions"), + ('build-platlib=', None, + "build directory for platform-specific distributions"), + ('build-lib=', None, + "build directory for all distribution (defaults to either " + + "build-purelib or build-platlib"), + ('build-scripts=', None, + "build directory for scripts"), + ('build-temp=', 't', + "temporary build directory"), + ('compiler=', 'c', + "specify the compiler type"), + ('debug', 'g', + "compile extensions and libraries with debugging information"), + ('force', 'f', + "forcibly build everything (ignore file timestamps)"), + ] + + boolean_options = ['debug', 'force'] + + help_options = [ + ('help-compiler', None, + "list available compilers", show_compilers), + ] + + def initialize_options (self): + self.build_base = 'build' + # these are decided only after 'build_base' has its final value + # (unless overridden by the user or client) + self.build_purelib = None + self.build_platlib = None + self.build_lib = None + self.build_temp = None + self.build_scripts = None + self.compiler = None + self.debug = None + self.force = 0 + + def finalize_options (self): + + plat_specifier = ".%s-%s" % (get_platform(), sys.version[0:3]) + + # 'build_purelib' and 'build_platlib' just default to 'lib' and + # 'lib.<plat>' under the base build directory. We only use one of + # them for a given distribution, though -- + if self.build_purelib is None: + self.build_purelib = os.path.join(self.build_base, 'lib') + if self.build_platlib is None: + self.build_platlib = os.path.join(self.build_base, + 'lib' + plat_specifier) + + # 'build_lib' is the actual directory that we will use for this + # particular module distribution -- if user didn't supply it, pick + # one of 'build_purelib' or 'build_platlib'. + if self.build_lib is None: + if self.distribution.ext_modules: + self.build_lib = self.build_platlib + else: + self.build_lib = self.build_purelib + + # 'build_temp' -- temporary directory for compiler turds, + # "build/temp.<plat>" + if self.build_temp is None: + self.build_temp = os.path.join(self.build_base, + 'temp' + plat_specifier) + if self.build_scripts is None: + self.build_scripts = os.path.join(self.build_base, + 'scripts-' + sys.version[0:3]) + + # finalize_options () + + + def run (self): + + # Run all relevant sub-commands. This will be some subset of: + # - build_py - pure Python modules + # - build_clib - standalone C libraries + # - build_ext - Python extensions + # - build_scripts - (Python) scripts + for cmd_name in self.get_sub_commands(): + self.run_command(cmd_name) + + + # -- Predicates for the sub-command list --------------------------- + + def has_pure_modules (self): + return self.distribution.has_pure_modules() + + def has_c_libraries (self): + return self.distribution.has_c_libraries() + + def has_ext_modules (self): + return self.distribution.has_ext_modules() + + def has_scripts (self): + return self.distribution.has_scripts() + + + sub_commands = [('build_py', has_pure_modules), + ('build_clib', has_c_libraries), + ('build_ext', has_ext_modules), + ('build_scripts', has_scripts), + ] + +# class build diff --git a/wxPython/distutils/command/build_clib.py b/wxPython/distutils/command/build_clib.py new file mode 100644 index 0000000000..ef03ed7269 --- /dev/null +++ b/wxPython/distutils/command/build_clib.py @@ -0,0 +1,238 @@ +"""distutils.command.build_clib + +Implements the Distutils 'build_clib' command, to build a C/C++ library +that is included in the module distribution and needed by an extension +module.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + + +# XXX this module has *lots* of code ripped-off quite transparently from +# build_ext.py -- not surprisingly really, as the work required to build +# a static library from a collection of C source files is not really all +# that different from what's required to build a shared object file from +# a collection of C source files. Nevertheless, I haven't done the +# necessary refactoring to account for the overlap in code between the +# two modules, mainly because a number of subtle details changed in the +# cut 'n paste. Sigh. + +import os, string +from types import * +from distutils.core import Command +from distutils.errors import * +from distutils.sysconfig import customize_compiler +from distutils import log + +def show_compilers (): + from distutils.ccompiler import show_compilers + show_compilers() + + +class build_clib (Command): + + description = "build C/C++ libraries used by Python extensions" + + user_options = [ + ('build-clib', 'b', + "directory to build C/C++ libraries to"), + ('build-temp', 't', + "directory to put temporary build by-products"), + ('debug', 'g', + "compile with debugging information"), + ('force', 'f', + "forcibly build everything (ignore file timestamps)"), + ('compiler=', 'c', + "specify the compiler type"), + ] + + boolean_options = ['debug', 'force'] + + help_options = [ + ('help-compiler', None, + "list available compilers", show_compilers), + ] + + def initialize_options (self): + self.build_clib = None + self.build_temp = None + + # List of libraries to build + self.libraries = None + + # Compilation options for all libraries + self.include_dirs = None + self.define = None + self.undef = None + self.debug = None + self.force = 0 + self.compiler = None + + # initialize_options() + + + def finalize_options (self): + + # This might be confusing: both build-clib and build-temp default + # to build-temp as defined by the "build" command. This is because + # I think that C libraries are really just temporary build + # by-products, at least from the point of view of building Python + # extensions -- but I want to keep my options open. + self.set_undefined_options('build', + ('build_temp', 'build_clib'), + ('build_temp', 'build_temp'), + ('compiler', 'compiler'), + ('debug', 'debug'), + ('force', 'force')) + + self.libraries = self.distribution.libraries + if self.libraries: + self.check_library_list(self.libraries) + + if self.include_dirs is None: + self.include_dirs = self.distribution.include_dirs or [] + if type(self.include_dirs) is StringType: + self.include_dirs = string.split(self.include_dirs, + os.pathsep) + + # XXX same as for build_ext -- what about 'self.define' and + # 'self.undef' ? + + # finalize_options() + + + def run (self): + + if not self.libraries: + return + + # Yech -- this is cut 'n pasted from build_ext.py! + from distutils.ccompiler import new_compiler + self.compiler = new_compiler(compiler=self.compiler, + dry_run=self.dry_run, + force=self.force) + customize_compiler(self.compiler) + + if self.include_dirs is not None: + self.compiler.set_include_dirs(self.include_dirs) + if self.define is not None: + # 'define' option is a list of (name,value) tuples + for (name,value) in self.define: + self.compiler.define_macro(name, value) + if self.undef is not None: + for macro in self.undef: + self.compiler.undefine_macro(macro) + + self.build_libraries(self.libraries) + + # run() + + + def check_library_list (self, libraries): + """Ensure that the list of libraries (presumably provided as a + command option 'libraries') is valid, i.e. it is a list of + 2-tuples, where the tuples are (library_name, build_info_dict). + Raise DistutilsSetupError if the structure is invalid anywhere; + just returns otherwise.""" + + # Yechh, blecch, ackk: this is ripped straight out of build_ext.py, + # with only names changed to protect the innocent! + + if type(libraries) is not ListType: + raise DistutilsSetupError, \ + "'libraries' option must be a list of tuples" + + for lib in libraries: + if type(lib) is not TupleType and len(lib) != 2: + raise DistutilsSetupError, \ + "each element of 'libraries' must a 2-tuple" + + if type(lib[0]) is not StringType: + raise DistutilsSetupError, \ + "first element of each tuple in 'libraries' " + \ + "must be a string (the library name)" + if '/' in lib[0] or (os.sep != '/' and os.sep in lib[0]): + raise DistutilsSetupError, \ + ("bad library name '%s': " + + "may not contain directory separators") % \ + lib[0] + + if type(lib[1]) is not DictionaryType: + raise DistutilsSetupError, \ + "second element of each tuple in 'libraries' " + \ + "must be a dictionary (build info)" + # for lib + + # check_library_list () + + + def get_library_names (self): + # Assume the library list is valid -- 'check_library_list()' is + # called from 'finalize_options()', so it should be! + + if not self.libraries: + return None + + lib_names = [] + for (lib_name, build_info) in self.libraries: + lib_names.append(lib_name) + return lib_names + + # get_library_names () + + + def get_source_files (self): + self.check_library_list(self.libraries) + filenames = [] + for (lib_name, build_info) in self.libraries: + sources = build_info.get('sources') + if (sources is None or + type(sources) not in (ListType, TupleType) ): + raise DistutilsSetupError, \ + ("in 'libraries' option (library '%s'), " + "'sources' must be present and must be " + "a list of source filenames") % lib_name + + filenames.extend(sources) + + return filenames + # get_source_files () + + + def build_libraries (self, libraries): + + for (lib_name, build_info) in libraries: + sources = build_info.get('sources') + if sources is None or type(sources) not in (ListType, TupleType): + raise DistutilsSetupError, \ + ("in 'libraries' option (library '%s'), " + + "'sources' must be present and must be " + + "a list of source filenames") % lib_name + sources = list(sources) + + log.info("building '%s' library", lib_name) + + # First, compile the source code to object files in the library + # directory. (This should probably change to putting object + # files in a temporary build directory.) + macros = build_info.get('macros') + include_dirs = build_info.get('include_dirs') + objects = self.compiler.compile(sources, + output_dir=self.build_temp, + macros=macros, + include_dirs=include_dirs, + debug=self.debug) + + # Now "link" the object files together into a static library. + # (On Unix at least, this isn't really linking -- it just + # builds an archive. Whatever.) + self.compiler.create_static_lib(objects, lib_name, + output_dir=self.build_clib, + debug=self.debug) + + # for libraries + + # build_libraries () + +# class build_lib diff --git a/wxPython/distutils/command/build_ext.py b/wxPython/distutils/command/build_ext.py new file mode 100644 index 0000000000..0c37768179 --- /dev/null +++ b/wxPython/distutils/command/build_ext.py @@ -0,0 +1,674 @@ +"""distutils.command.build_ext + +Implements the Distutils 'build_ext' command, for building extension +modules (currently limited to C extensions, should accommodate C++ +extensions ASAP).""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string, re +from types import * +from distutils.core import Command +from distutils.errors import * +from distutils.sysconfig import customize_compiler, get_python_version +from distutils.dep_util import newer_group +from distutils.extension import Extension +from distutils import log + +# An extension name is just a dot-separated list of Python NAMEs (ie. +# the same as a fully-qualified module name). +extension_name_re = re.compile \ + (r'^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$') + + +def show_compilers (): + from distutils.ccompiler import show_compilers + show_compilers() + + +class build_ext (Command): + + description = "build C/C++ extensions (compile/link to build directory)" + + # XXX thoughts on how to deal with complex command-line options like + # these, i.e. how to make it so fancy_getopt can suck them off the + # command line and make it look like setup.py defined the appropriate + # lists of tuples of what-have-you. + # - each command needs a callback to process its command-line options + # - Command.__init__() needs access to its share of the whole + # command line (must ultimately come from + # Distribution.parse_command_line()) + # - it then calls the current command class' option-parsing + # callback to deal with weird options like -D, which have to + # parse the option text and churn out some custom data + # structure + # - that data structure (in this case, a list of 2-tuples) + # will then be present in the command object by the time + # we get to finalize_options() (i.e. the constructor + # takes care of both command-line and client options + # in between initialize_options() and finalize_options()) + + sep_by = " (separated by '%s')" % os.pathsep + user_options = [ + ('build-lib=', 'b', + "directory for compiled extension modules"), + ('build-temp=', 't', + "directory for temporary files (build by-products)"), + ('inplace', 'i', + "ignore build-lib and put compiled extensions into the source " + + "directory alongside your pure Python modules"), + ('include-dirs=', 'I', + "list of directories to search for header files" + sep_by), + ('define=', 'D', + "C preprocessor macros to define"), + ('undef=', 'U', + "C preprocessor macros to undefine"), + ('libraries=', 'l', + "external C libraries to link with"), + ('library-dirs=', 'L', + "directories to search for external C libraries" + sep_by), + ('rpath=', 'R', + "directories to search for shared C libraries at runtime"), + ('link-objects=', 'O', + "extra explicit link objects to include in the link"), + ('debug', 'g', + "compile/link with debugging information"), + ('force', 'f', + "forcibly build everything (ignore file timestamps)"), + ('compiler=', 'c', + "specify the compiler type"), + ('swig-cpp', None, + "make SWIG create C++ files (default is C)"), + ] + + boolean_options = ['inplace', 'debug', 'force', 'swig-cpp'] + + help_options = [ + ('help-compiler', None, + "list available compilers", show_compilers), + ] + + def initialize_options (self): + self.extensions = None + self.build_lib = None + self.build_temp = None + self.inplace = 0 + self.package = None + + self.include_dirs = None + self.define = None + self.undef = None + self.libraries = None + self.library_dirs = None + self.rpath = None + self.link_objects = None + self.debug = None + self.force = None + self.compiler = None + self.swig_cpp = None + + + def finalize_options (self): + from distutils import sysconfig + + self.set_undefined_options('build', + ('build_lib', 'build_lib'), + ('build_temp', 'build_temp'), + ('compiler', 'compiler'), + ('debug', 'debug'), + ('force', 'force')) + + if self.package is None: + self.package = self.distribution.ext_package + + self.extensions = self.distribution.ext_modules + + + # Make sure Python's include directories (for Python.h, pyconfig.h, + # etc.) are in the include search path. + py_include = sysconfig.get_python_inc() + plat_py_include = sysconfig.get_python_inc(plat_specific=1) + if self.include_dirs is None: + self.include_dirs = self.distribution.include_dirs or [] + if type(self.include_dirs) is StringType: + self.include_dirs = string.split(self.include_dirs, os.pathsep) + + # Put the Python "system" include dir at the end, so that + # any local include dirs take precedence. + self.include_dirs.append(py_include) + if plat_py_include != py_include: + self.include_dirs.append(plat_py_include) + + if type(self.libraries) is StringType: + self.libraries = [self.libraries] + + # Life is easier if we're not forever checking for None, so + # simplify these options to empty lists if unset + if self.libraries is None: + self.libraries = [] + if self.library_dirs is None: + self.library_dirs = [] + elif type(self.library_dirs) is StringType: + self.library_dirs = string.split(self.library_dirs, os.pathsep) + + if self.rpath is None: + self.rpath = [] + elif type(self.rpath) is StringType: + self.rpath = string.split(self.rpath, os.pathsep) + + # for extensions under windows use different directories + # for Release and Debug builds. + # also Python's library directory must be appended to library_dirs + if os.name == 'nt': + self.library_dirs.append(os.path.join(sys.exec_prefix, 'libs')) + if self.debug: + self.build_temp = os.path.join(self.build_temp, "Debug") + else: + self.build_temp = os.path.join(self.build_temp, "Release") + + # Append the source distribution include and library directories, + # this allows distutils on windows to work in the source tree + self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC')) + self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild')) + + # OS/2 (EMX) doesn't support Debug vs Release builds, but has the + # import libraries in its "Config" subdirectory + if os.name == 'os2': + self.library_dirs.append(os.path.join(sys.exec_prefix, 'Config')) + + # for extensions under Cygwin and AtheOS Python's library directory must be + # appended to library_dirs + if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos': + if string.find(sys.executable, sys.exec_prefix) != -1: + # building third party extensions + self.library_dirs.append(os.path.join(sys.prefix, "lib", + "python" + get_python_version(), + "config")) + else: + # building python standard extensions + self.library_dirs.append('.') + + # The argument parsing will result in self.define being a string, but + # it has to be a list of 2-tuples. All the preprocessor symbols + # specified by the 'define' option will be set to '1'. Multiple + # symbols can be separated with commas. + + if self.define: + defines = string.split(self.define, ',') + self.define = map(lambda symbol: (symbol, '1'), defines) + + # The option for macros to undefine is also a string from the + # option parsing, but has to be a list. Multiple symbols can also + # be separated with commas here. + if self.undef: + self.undef = string.split(self.undef, ',') + + # finalize_options () + + + def run (self): + + from distutils.ccompiler import new_compiler + + # 'self.extensions', as supplied by setup.py, is a list of + # Extension instances. See the documentation for Extension (in + # distutils.extension) for details. + # + # For backwards compatibility with Distutils 0.8.2 and earlier, we + # also allow the 'extensions' list to be a list of tuples: + # (ext_name, build_info) + # where build_info is a dictionary containing everything that + # Extension instances do except the name, with a few things being + # differently named. We convert these 2-tuples to Extension + # instances as needed. + + if not self.extensions: + return + + # If we were asked to build any C/C++ libraries, make sure that the + # directory where we put them is in the library search path for + # linking extensions. + if self.distribution.has_c_libraries(): + build_clib = self.get_finalized_command('build_clib') + self.libraries.extend(build_clib.get_library_names() or []) + self.library_dirs.append(build_clib.build_clib) + + # Setup the CCompiler object that we'll use to do all the + # compiling and linking + self.compiler = new_compiler(compiler=self.compiler, + verbose=self.verbose, + dry_run=self.dry_run, + force=self.force) + customize_compiler(self.compiler) + + # And make sure that any compile/link-related options (which might + # come from the command-line or from the setup script) are set in + # that CCompiler object -- that way, they automatically apply to + # all compiling and linking done here. + if self.include_dirs is not None: + self.compiler.set_include_dirs(self.include_dirs) + if self.define is not None: + # 'define' option is a list of (name,value) tuples + for (name,value) in self.define: + self.compiler.define_macro(name, value) + if self.undef is not None: + for macro in self.undef: + self.compiler.undefine_macro(macro) + if self.libraries is not None: + self.compiler.set_libraries(self.libraries) + if self.library_dirs is not None: + self.compiler.set_library_dirs(self.library_dirs) + if self.rpath is not None: + self.compiler.set_runtime_library_dirs(self.rpath) + if self.link_objects is not None: + self.compiler.set_link_objects(self.link_objects) + + # Now actually compile and link everything. + self.build_extensions() + + # run () + + + def check_extensions_list (self, extensions): + """Ensure that the list of extensions (presumably provided as a + command option 'extensions') is valid, i.e. it is a list of + Extension objects. We also support the old-style list of 2-tuples, + where the tuples are (ext_name, build_info), which are converted to + Extension instances here. + + Raise DistutilsSetupError if the structure is invalid anywhere; + just returns otherwise. + """ + if type(extensions) is not ListType: + raise DistutilsSetupError, \ + "'ext_modules' option must be a list of Extension instances" + + for i in range(len(extensions)): + ext = extensions[i] + if isinstance(ext, Extension): + continue # OK! (assume type-checking done + # by Extension constructor) + + (ext_name, build_info) = ext + log.warn(("old-style (ext_name, build_info) tuple found in " + "ext_modules for extension '%s'" + "-- please convert to Extension instance" % ext_name)) + if type(ext) is not TupleType and len(ext) != 2: + raise DistutilsSetupError, \ + ("each element of 'ext_modules' option must be an " + "Extension instance or 2-tuple") + + if not (type(ext_name) is StringType and + extension_name_re.match(ext_name)): + raise DistutilsSetupError, \ + ("first element of each tuple in 'ext_modules' " + "must be the extension name (a string)") + + if type(build_info) is not DictionaryType: + raise DistutilsSetupError, \ + ("second element of each tuple in 'ext_modules' " + "must be a dictionary (build info)") + + # OK, the (ext_name, build_info) dict is type-safe: convert it + # to an Extension instance. + ext = Extension(ext_name, build_info['sources']) + + # Easy stuff: one-to-one mapping from dict elements to + # instance attributes. + for key in ('include_dirs', + 'library_dirs', + 'libraries', + 'extra_objects', + 'extra_compile_args', + 'extra_link_args'): + val = build_info.get(key) + if val is not None: + setattr(ext, key, val) + + # Medium-easy stuff: same syntax/semantics, different names. + ext.runtime_library_dirs = build_info.get('rpath') + if build_info.has_key('def_file'): + log.warn("'def_file' element of build info dict " + "no longer supported") + + # Non-trivial stuff: 'macros' split into 'define_macros' + # and 'undef_macros'. + macros = build_info.get('macros') + if macros: + ext.define_macros = [] + ext.undef_macros = [] + for macro in macros: + if not (type(macro) is TupleType and + 1 <= len(macro) <= 2): + raise DistutilsSetupError, \ + ("'macros' element of build info dict " + "must be 1- or 2-tuple") + if len(macro) == 1: + ext.undef_macros.append(macro[0]) + elif len(macro) == 2: + ext.define_macros.append(macro) + + extensions[i] = ext + + # for extensions + + # check_extensions_list () + + + def get_source_files (self): + self.check_extensions_list(self.extensions) + filenames = [] + + # Wouldn't it be neat if we knew the names of header files too... + for ext in self.extensions: + filenames.extend(ext.sources) + + return filenames + + + def get_outputs (self): + + # Sanity check the 'extensions' list -- can't assume this is being + # done in the same run as a 'build_extensions()' call (in fact, we + # can probably assume that it *isn't*!). + self.check_extensions_list(self.extensions) + + # And build the list of output (built) filenames. Note that this + # ignores the 'inplace' flag, and assumes everything goes in the + # "build" tree. + outputs = [] + for ext in self.extensions: + fullname = self.get_ext_fullname(ext.name) + outputs.append(os.path.join(self.build_lib, + self.get_ext_filename(fullname))) + return outputs + + # get_outputs () + + def build_extensions(self): + # First, sanity-check the 'extensions' list + self.check_extensions_list(self.extensions) + + for ext in self.extensions: + self.build_extension(ext) + + def build_extension(self, ext): + sources = ext.sources + if sources is None or type(sources) not in (ListType, TupleType): + raise DistutilsSetupError, \ + ("in 'ext_modules' option (extension '%s'), " + + "'sources' must be present and must be " + + "a list of source filenames") % ext.name + sources = list(sources) + + fullname = self.get_ext_fullname(ext.name) + if self.inplace: + # ignore build-lib -- put the compiled extension into + # the source tree along with pure Python modules + + modpath = string.split(fullname, '.') + package = string.join(modpath[0:-1], '.') + base = modpath[-1] + + build_py = self.get_finalized_command('build_py') + package_dir = build_py.get_package_dir(package) + ext_filename = os.path.join(package_dir, + self.get_ext_filename(base)) + else: + ext_filename = os.path.join(self.build_lib, + self.get_ext_filename(fullname)) + depends = sources + ext.depends + if not (self.force or newer_group(depends, ext_filename, 'newer')): + log.debug("skipping '%s' extension (up-to-date)", ext.name) + return + else: + log.info("building '%s' extension", ext.name) + + # First, scan the sources for SWIG definition files (.i), run + # SWIG on 'em to create .c files, and modify the sources list + # accordingly. + sources = self.swig_sources(sources) + + # Next, compile the source code to object files. + + # XXX not honouring 'define_macros' or 'undef_macros' -- the + # CCompiler API needs to change to accommodate this, and I + # want to do one thing at a time! + + # Two possible sources for extra compiler arguments: + # - 'extra_compile_args' in Extension object + # - CFLAGS environment variable (not particularly + # elegant, but people seem to expect it and I + # guess it's useful) + # The environment variable should take precedence, and + # any sensible compiler will give precedence to later + # command line args. Hence we combine them in order: + extra_args = ext.extra_compile_args or [] + + macros = ext.define_macros[:] + for undef in ext.undef_macros: + macros.append((undef,)) + + objects = self.compiler.compile(sources, + output_dir=self.build_temp, + macros=macros, + include_dirs=ext.include_dirs, + debug=self.debug, + extra_postargs=extra_args, + depends=ext.depends) + + # XXX -- this is a Vile HACK! + # + # The setup.py script for Python on Unix needs to be able to + # get this list so it can perform all the clean up needed to + # avoid keeping object files around when cleaning out a failed + # build of an extension module. Since Distutils does not + # track dependencies, we have to get rid of intermediates to + # ensure all the intermediates will be properly re-built. + # + self._built_objects = objects[:] + + # Now link the object files together into a "shared object" -- + # of course, first we have to figure out all the other things + # that go into the mix. + if ext.extra_objects: + objects.extend(ext.extra_objects) + extra_args = ext.extra_link_args or [] + + # Detect target language, if not provided + language = ext.language or self.compiler.detect_language(sources) + + self.compiler.link_shared_object( + objects, ext_filename, + libraries=self.get_libraries(ext), + library_dirs=ext.library_dirs, + runtime_library_dirs=ext.runtime_library_dirs, + extra_postargs=extra_args, + export_symbols=self.get_export_symbols(ext), + debug=self.debug, + build_temp=self.build_temp, + target_lang=language) + + + def swig_sources (self, sources): + + """Walk the list of source files in 'sources', looking for SWIG + interface (.i) files. Run SWIG on all that are found, and + return a modified 'sources' list with SWIG source files replaced + by the generated C (or C++) files. + """ + + new_sources = [] + swig_sources = [] + swig_targets = {} + + # XXX this drops generated C/C++ files into the source tree, which + # is fine for developers who want to distribute the generated + # source -- but there should be an option to put SWIG output in + # the temp dir. + + if self.swig_cpp: + target_ext = '.cpp' + else: + target_ext = '.c' + + for source in sources: + (base, ext) = os.path.splitext(source) + if ext == ".i": # SWIG interface file + new_sources.append(base + '_wrap' + target_ext) + swig_sources.append(source) + swig_targets[source] = new_sources[-1] + else: + new_sources.append(source) + + if not swig_sources: + return new_sources + + swig = self.find_swig() + swig_cmd = [swig, "-python"] + if self.swig_cpp: + swig_cmd.append("-c++") + + for source in swig_sources: + target = swig_targets[source] + log.info("swigging %s to %s", source, target) + self.spawn(swig_cmd + ["-o", target, source]) + + return new_sources + + # swig_sources () + + def find_swig (self): + """Return the name of the SWIG executable. On Unix, this is + just "swig" -- it should be in the PATH. Tries a bit harder on + Windows. + """ + + if os.name == "posix": + return "swig" + elif os.name == "nt": + + # Look for SWIG in its standard installation directory on + # Windows (or so I presume!). If we find it there, great; + # if not, act like Unix and assume it's in the PATH. + for vers in ("1.3", "1.2", "1.1"): + fn = os.path.join("c:\\swig%s" % vers, "swig.exe") + if os.path.isfile(fn): + return fn + else: + return "swig.exe" + + elif os.name == "os2": + # assume swig available in the PATH. + return "swig.exe" + + else: + raise DistutilsPlatformError, \ + ("I don't know how to find (much less run) SWIG " + "on platform '%s'") % os.name + + # find_swig () + + # -- Name generators ----------------------------------------------- + # (extension names, filenames, whatever) + + def get_ext_fullname (self, ext_name): + if self.package is None: + return ext_name + else: + return self.package + '.' + ext_name + + def get_ext_filename (self, ext_name): + r"""Convert the name of an extension (eg. "foo.bar") into the name + of the file from which it will be loaded (eg. "foo/bar.so", or + "foo\bar.pyd"). + """ + + from distutils.sysconfig import get_config_var + ext_path = string.split(ext_name, '.') + # OS/2 has an 8 character module (extension) limit :-( + if os.name == "os2": + ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] + # extensions in debug_mode are named 'module_d.pyd' under windows + so_ext = get_config_var('SO') + if os.name == 'nt' and self.debug: + return apply(os.path.join, ext_path) + '_d' + so_ext + return apply(os.path.join, ext_path) + so_ext + + def get_export_symbols (self, ext): + """Return the list of symbols that a shared extension has to + export. This either uses 'ext.export_symbols' or, if it's not + provided, "init" + module_name. Only relevant on Windows, where + the .pyd file (DLL) must export the module "init" function. + """ + + initfunc_name = "init" + string.split(ext.name,'.')[-1] + if initfunc_name not in ext.export_symbols: + ext.export_symbols.append(initfunc_name) + return ext.export_symbols + + def get_libraries (self, ext): + """Return the list of libraries to link against when building a + shared extension. On most platforms, this is just 'ext.libraries'; + on Windows and OS/2, we add the Python library (eg. python20.dll). + """ + # The python library is always needed on Windows. For MSVC, this + # is redundant, since the library is mentioned in a pragma in + # pyconfig.h that MSVC groks. The other Windows compilers all seem + # to need it mentioned explicitly, though, so that's what we do. + # Append '_d' to the python import library on debug builds. + if sys.platform == "win32": + from distutils.msvccompiler import MSVCCompiler + if not isinstance(self.compiler, MSVCCompiler): + template = "python%d%d" + if self.debug: + template = template + '_d' + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + # don't extend ext.libraries, it may be shared with other + # extensions, it is a reference to the original list + return ext.libraries + [pythonlib] + else: + return ext.libraries + elif sys.platform == "os2emx": + # EMX/GCC requires the python library explicitly, and I + # believe VACPP does as well (though not confirmed) - AIM Apr01 + template = "python%d%d" + # debug versions of the main DLL aren't supported, at least + # not at this time - AIM Apr01 + #if self.debug: + # template = template + '_d' + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + # don't extend ext.libraries, it may be shared with other + # extensions, it is a reference to the original list + return ext.libraries + [pythonlib] + elif sys.platform[:6] == "cygwin": + template = "python%d.%d" + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + # don't extend ext.libraries, it may be shared with other + # extensions, it is a reference to the original list + return ext.libraries + [pythonlib] + elif sys.platform[:6] == "atheos": + from distutils import sysconfig + + template = "python%d.%d" + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + # Get SHLIBS from Makefile + extra = [] + for lib in sysconfig.get_config_var('SHLIBS').split(): + if lib.startswith('-l'): + extra.append(lib[2:]) + else: + extra.append(lib) + # don't extend ext.libraries, it may be shared with other + # extensions, it is a reference to the original list + return ext.libraries + [pythonlib, "m"] + extra + else: + return ext.libraries + +# class build_ext diff --git a/wxPython/distutils/command/build_py.py b/wxPython/distutils/command/build_py.py new file mode 100644 index 0000000000..258d6d4ca0 --- /dev/null +++ b/wxPython/distutils/command/build_py.py @@ -0,0 +1,396 @@ +"""distutils.command.build_py + +Implements the Distutils 'build_py' command.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, string, os +from types import * +from glob import glob + +from distutils.core import Command +from distutils.errors import * +from distutils.util import convert_path +from distutils import log + +class build_py (Command): + + description = "\"build\" pure Python modules (copy to build directory)" + + user_options = [ + ('build-lib=', 'd', "directory to \"build\" (copy) to"), + ('compile', 'c', "compile .py to .pyc"), + ('no-compile', None, "don't compile .py files [default]"), + ('optimize=', 'O', + "also compile with optimization: -O1 for \"python -O\", " + "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), + ('force', 'f', "forcibly build everything (ignore file timestamps)"), + ] + + boolean_options = ['compile', 'force'] + negative_opt = {'no-compile' : 'compile'} + + + def initialize_options (self): + self.build_lib = None + self.py_modules = None + self.package = None + self.package_dir = None + self.compile = 0 + self.optimize = 0 + self.force = None + + def finalize_options (self): + self.set_undefined_options('build', + ('build_lib', 'build_lib'), + ('force', 'force')) + + # Get the distribution options that are aliases for build_py + # options -- list of packages and list of modules. + self.packages = self.distribution.packages + self.py_modules = self.distribution.py_modules + self.package_dir = {} + if self.distribution.package_dir: + for name, path in self.distribution.package_dir.items(): + self.package_dir[name] = convert_path(path) + + # Ick, copied straight from install_lib.py (fancy_getopt needs a + # type system! Hell, *everything* needs a type system!!!) + if type(self.optimize) is not IntType: + try: + self.optimize = int(self.optimize) + assert 0 <= self.optimize <= 2 + except (ValueError, AssertionError): + raise DistutilsOptionError, "optimize must be 0, 1, or 2" + + def run (self): + + # XXX copy_file by default preserves atime and mtime. IMHO this is + # the right thing to do, but perhaps it should be an option -- in + # particular, a site administrator might want installed files to + # reflect the time of installation rather than the last + # modification time before the installed release. + + # XXX copy_file by default preserves mode, which appears to be the + # wrong thing to do: if a file is read-only in the working + # directory, we want it to be installed read/write so that the next + # installation of the same module distribution can overwrite it + # without problems. (This might be a Unix-specific issue.) Thus + # we turn off 'preserve_mode' when copying to the build directory, + # since the build directory is supposed to be exactly what the + # installation will look like (ie. we preserve mode when + # installing). + + # Two options control which modules will be installed: 'packages' + # and 'py_modules'. The former lets us work with whole packages, not + # specifying individual modules at all; the latter is for + # specifying modules one-at-a-time. Currently they are mutually + # exclusive: you can define one or the other (or neither), but not + # both. It remains to be seen how limiting this is. + + # Dispose of the two "unusual" cases first: no pure Python modules + # at all (no problem, just return silently), and over-specified + # 'packages' and 'py_modules' options. + + if not self.py_modules and not self.packages: + return + if self.py_modules and self.packages: + raise DistutilsOptionError, \ + "build_py: supplying both 'packages' and 'py_modules' " + \ + "options is not allowed" + + # Now we're down to two cases: 'py_modules' only and 'packages' only. + if self.py_modules: + self.build_modules() + else: + self.build_packages() + + self.byte_compile(self.get_outputs(include_bytecode=0)) + + # run () + + + def get_package_dir (self, package): + """Return the directory, relative to the top of the source + distribution, where package 'package' should be found + (at least according to the 'package_dir' option, if any).""" + + path = string.split(package, '.') + + if not self.package_dir: + if path: + return apply(os.path.join, path) + else: + return '' + else: + tail = [] + while path: + try: + pdir = self.package_dir[string.join(path, '.')] + except KeyError: + tail.insert(0, path[-1]) + del path[-1] + else: + tail.insert(0, pdir) + return apply(os.path.join, tail) + else: + # Oops, got all the way through 'path' without finding a + # match in package_dir. If package_dir defines a directory + # for the root (nameless) package, then fallback on it; + # otherwise, we might as well have not consulted + # package_dir at all, as we just use the directory implied + # by 'tail' (which should be the same as the original value + # of 'path' at this point). + pdir = self.package_dir.get('') + if pdir is not None: + tail.insert(0, pdir) + + if tail: + return apply(os.path.join, tail) + else: + return '' + + # get_package_dir () + + + def check_package (self, package, package_dir): + + # Empty dir name means current directory, which we can probably + # assume exists. Also, os.path.exists and isdir don't know about + # my "empty string means current dir" convention, so we have to + # circumvent them. + if package_dir != "": + if not os.path.exists(package_dir): + raise DistutilsFileError, \ + "package directory '%s' does not exist" % package_dir + if not os.path.isdir(package_dir): + raise DistutilsFileError, \ + ("supposed package directory '%s' exists, " + + "but is not a directory") % package_dir + + # Require __init__.py for all but the "root package" + if package: + init_py = os.path.join(package_dir, "__init__.py") + if os.path.isfile(init_py): + return init_py + else: + log.warn(("package init file '%s' not found " + + "(or not a regular file)"), init_py) + + # Either not in a package at all (__init__.py not expected), or + # __init__.py doesn't exist -- so don't return the filename. + return None + + # check_package () + + + def check_module (self, module, module_file): + if not os.path.isfile(module_file): + log.warn("file %s (for module %s) not found", module_file, module) + return 0 + else: + return 1 + + # check_module () + + + def find_package_modules (self, package, package_dir): + self.check_package(package, package_dir) + module_files = glob(os.path.join(package_dir, "*.py")) + modules = [] + setup_script = os.path.abspath(self.distribution.script_name) + + for f in module_files: + abs_f = os.path.abspath(f) + if abs_f != setup_script: + module = os.path.splitext(os.path.basename(f))[0] + modules.append((package, module, f)) + else: + self.debug_print("excluding %s" % setup_script) + return modules + + + def find_modules (self): + """Finds individually-specified Python modules, ie. those listed by + module name in 'self.py_modules'. Returns a list of tuples (package, + module_base, filename): 'package' is a tuple of the path through + package-space to the module; 'module_base' is the bare (no + packages, no dots) module name, and 'filename' is the path to the + ".py" file (relative to the distribution root) that implements the + module. + """ + + # Map package names to tuples of useful info about the package: + # (package_dir, checked) + # package_dir - the directory where we'll find source files for + # this package + # checked - true if we have checked that the package directory + # is valid (exists, contains __init__.py, ... ?) + packages = {} + + # List of (package, module, filename) tuples to return + modules = [] + + # We treat modules-in-packages almost the same as toplevel modules, + # just the "package" for a toplevel is empty (either an empty + # string or empty list, depending on context). Differences: + # - don't check for __init__.py in directory for empty package + + for module in self.py_modules: + path = string.split(module, '.') + package = string.join(path[0:-1], '.') + module_base = path[-1] + + try: + (package_dir, checked) = packages[package] + except KeyError: + package_dir = self.get_package_dir(package) + checked = 0 + + if not checked: + init_py = self.check_package(package, package_dir) + packages[package] = (package_dir, 1) + if init_py: + modules.append((package, "__init__", init_py)) + + # XXX perhaps we should also check for just .pyc files + # (so greedy closed-source bastards can distribute Python + # modules too) + module_file = os.path.join(package_dir, module_base + ".py") + if not self.check_module(module, module_file): + continue + + modules.append((package, module_base, module_file)) + + return modules + + # find_modules () + + + def find_all_modules (self): + """Compute the list of all modules that will be built, whether + they are specified one-module-at-a-time ('self.py_modules') or + by whole packages ('self.packages'). Return a list of tuples + (package, module, module_file), just like 'find_modules()' and + 'find_package_modules()' do.""" + + if self.py_modules: + modules = self.find_modules() + else: + modules = [] + for package in self.packages: + package_dir = self.get_package_dir(package) + m = self.find_package_modules(package, package_dir) + modules.extend(m) + + return modules + + # find_all_modules () + + + def get_source_files (self): + + modules = self.find_all_modules() + filenames = [] + for module in modules: + filenames.append(module[-1]) + + return filenames + + + def get_module_outfile (self, build_dir, package, module): + outfile_path = [build_dir] + list(package) + [module + ".py"] + return apply(os.path.join, outfile_path) + + + def get_outputs (self, include_bytecode=1): + modules = self.find_all_modules() + outputs = [] + for (package, module, module_file) in modules: + package = string.split(package, '.') + filename = self.get_module_outfile(self.build_lib, package, module) + outputs.append(filename) + if include_bytecode: + if self.compile: + outputs.append(filename + "c") + if self.optimize > 0: + outputs.append(filename + "o") + + return outputs + + + def build_module (self, module, module_file, package): + if type(package) is StringType: + package = string.split(package, '.') + elif type(package) not in (ListType, TupleType): + raise TypeError, \ + "'package' must be a string (dot-separated), list, or tuple" + + # Now put the module source file into the "build" area -- this is + # easy, we just copy it somewhere under self.build_lib (the build + # directory for Python source). + outfile = self.get_module_outfile(self.build_lib, package, module) + dir = os.path.dirname(outfile) + self.mkpath(dir) + return self.copy_file(module_file, outfile, preserve_mode=0) + + + def build_modules (self): + + modules = self.find_modules() + for (package, module, module_file) in modules: + + # Now "build" the module -- ie. copy the source file to + # self.build_lib (the build directory for Python source). + # (Actually, it gets copied to the directory for this package + # under self.build_lib.) + self.build_module(module, module_file, package) + + # build_modules () + + + def build_packages (self): + + for package in self.packages: + + # Get list of (package, module, module_file) tuples based on + # scanning the package directory. 'package' is only included + # in the tuple so that 'find_modules()' and + # 'find_package_tuples()' have a consistent interface; it's + # ignored here (apart from a sanity check). Also, 'module' is + # the *unqualified* module name (ie. no dots, no package -- we + # already know its package!), and 'module_file' is the path to + # the .py file, relative to the current directory + # (ie. including 'package_dir'). + package_dir = self.get_package_dir(package) + modules = self.find_package_modules(package, package_dir) + + # Now loop over the modules we found, "building" each one (just + # copy it to self.build_lib). + for (package_, module, module_file) in modules: + assert package == package_ + self.build_module(module, module_file, package) + + # build_packages () + + + def byte_compile (self, files): + from distutils.util import byte_compile + prefix = self.build_lib + if prefix[-1] != os.sep: + prefix = prefix + os.sep + + # XXX this code is essentially the same as the 'byte_compile() + # method of the "install_lib" command, except for the determination + # of the 'prefix' string. Hmmm. + + if self.compile: + byte_compile(files, optimize=0, + force=self.force, prefix=prefix, dry_run=self.dry_run) + if self.optimize > 0: + byte_compile(files, optimize=self.optimize, + force=self.force, prefix=prefix, dry_run=self.dry_run) + +# class build_py diff --git a/wxPython/distutils/command/build_scripts.py b/wxPython/distutils/command/build_scripts.py new file mode 100644 index 0000000000..f61ad37d03 --- /dev/null +++ b/wxPython/distutils/command/build_scripts.py @@ -0,0 +1,126 @@ +"""distutils.command.build_scripts + +Implements the Distutils 'build_scripts' command.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, re +from stat import ST_MODE +from distutils import sysconfig +from distutils.core import Command +from distutils.dep_util import newer +from distutils.util import convert_path +from distutils import log + +# check if Python is called on the first line with this expression +first_line_re = re.compile(r'^#!.*python[0-9.]*(\s+.*)?$') + +class build_scripts (Command): + + description = "\"build\" scripts (copy and fixup #! line)" + + user_options = [ + ('build-dir=', 'd', "directory to \"build\" (copy) to"), + ('force', 'f', "forcibly build everything (ignore file timestamps"), + ] + + boolean_options = ['force'] + + + def initialize_options (self): + self.build_dir = None + self.scripts = None + self.force = None + self.outfiles = None + + def finalize_options (self): + self.set_undefined_options('build', + ('build_scripts', 'build_dir'), + ('force', 'force')) + self.scripts = self.distribution.scripts + + + def run (self): + if not self.scripts: + return + self.copy_scripts() + + + def copy_scripts (self): + """Copy each script listed in 'self.scripts'; if it's marked as a + Python script in the Unix way (first line matches 'first_line_re', + ie. starts with "\#!" and contains "python"), then adjust the first + line to refer to the current Python interpreter as we copy. + """ + self.mkpath(self.build_dir) + outfiles = [] + for script in self.scripts: + adjust = 0 + script = convert_path(script) + outfile = os.path.join(self.build_dir, os.path.basename(script)) + outfiles.append(outfile) + + if not self.force and not newer(script, outfile): + log.debug("not copying %s (up-to-date)", script) + continue + + # Always open the file, but ignore failures in dry-run mode -- + # that way, we'll get accurate feedback if we can read the + # script. + try: + f = open(script, "r") + except IOError: + if not self.dry_run: + raise + f = None + else: + first_line = f.readline() + if not first_line: + self.warn("%s is an empty file (skipping)" % script) + continue + + match = first_line_re.match(first_line) + if match: + adjust = 1 + post_interp = match.group(1) or '' + + if adjust: + log.info("copying and adjusting %s -> %s", script, + self.build_dir) + if not self.dry_run: + outf = open(outfile, "w") + if not sysconfig.python_build: + outf.write("#!%s%s\n" % + (os.path.normpath(sys.executable), + post_interp)) + else: + outf.write("#!%s%s" % + (os.path.join( + sysconfig.get_config_var("BINDIR"), + "python" + sysconfig.get_config_var("EXE")), + post_interp)) + outf.writelines(f.readlines()) + outf.close() + if f: + f.close() + else: + f.close() + self.copy_file(script, outfile) + + if os.name == 'posix': + for file in outfiles: + if self.dry_run: + log.info("changing mode of %s", file) + else: + oldmode = os.stat(file)[ST_MODE] & 07777 + newmode = (oldmode | 0555) & 07777 + if newmode != oldmode: + log.info("changing mode of %s from %o to %o", + file, oldmode, newmode) + os.chmod(file, newmode) + + # copy_scripts () + +# class build_scripts diff --git a/wxPython/distutils/command/clean.py b/wxPython/distutils/command/clean.py new file mode 100644 index 0000000000..41b22777bc --- /dev/null +++ b/wxPython/distutils/command/clean.py @@ -0,0 +1,82 @@ +"""distutils.command.clean + +Implements the Distutils 'clean' command.""" + +# contributed by Bastian Kleineidam <calvin@cs.uni-sb.de>, added 2000-03-18 + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.core import Command +from distutils.dir_util import remove_tree +from distutils import log + +class clean (Command): + + description = "clean up output of 'build' command" + user_options = [ + ('build-base=', 'b', + "base build directory (default: 'build.build-base')"), + ('build-lib=', None, + "build directory for all modules (default: 'build.build-lib')"), + ('build-temp=', 't', + "temporary build directory (default: 'build.build-temp')"), + ('build-scripts=', None, + "build directory for scripts (default: 'build.build-scripts')"), + ('bdist-base=', None, + "temporary directory for built distributions"), + ('all', 'a', + "remove all build output, not just temporary by-products") + ] + + boolean_options = ['all'] + + def initialize_options(self): + self.build_base = None + self.build_lib = None + self.build_temp = None + self.build_scripts = None + self.bdist_base = None + self.all = None + + def finalize_options(self): + self.set_undefined_options('build', + ('build_base', 'build_base'), + ('build_lib', 'build_lib'), + ('build_scripts', 'build_scripts'), + ('build_temp', 'build_temp')) + self.set_undefined_options('bdist', + ('bdist_base', 'bdist_base')) + + def run(self): + # remove the build/temp.<plat> directory (unless it's already + # gone) + if os.path.exists(self.build_temp): + remove_tree(self.build_temp, dry_run=self.dry_run) + else: + log.debug("'%s' does not exist -- can't clean it", + self.build_temp) + + if self.all: + # remove build directories + for directory in (self.build_lib, + self.bdist_base, + self.build_scripts): + if os.path.exists(directory): + remove_tree(directory, dry_run=self.dry_run) + else: + log.warn("'%s' does not exist -- can't clean it", + directory) + + # just for the heck of it, try to remove the base build directory: + # we might have emptied it right now, but if not we don't care + if not self.dry_run: + try: + os.rmdir(self.build_base) + log.info("removing '%s'", self.build_base) + except OSError: + pass + +# class clean diff --git a/wxPython/distutils/command/command_template b/wxPython/distutils/command/command_template new file mode 100644 index 0000000000..50bbab7b6e --- /dev/null +++ b/wxPython/distutils/command/command_template @@ -0,0 +1,45 @@ +"""distutils.command.x + +Implements the Distutils 'x' command. +""" + +# created 2000/mm/dd, John Doe + +__revision__ = "$Id$" + +from distutils.core import Command + + +class x (Command): + + # Brief (40-50 characters) description of the command + description = "" + + # List of option tuples: long name, short name (None if no short + # name), and help string. + user_options = [('', '', + ""), + ] + + + def initialize_options (self): + self. = None + self. = None + self. = None + + # initialize_options() + + + def finalize_options (self): + if self.x is None: + self.x = + + # finalize_options() + + + def run (self): + + + # run() + +# class x diff --git a/wxPython/distutils/command/config.py b/wxPython/distutils/command/config.py new file mode 100644 index 0000000000..f18c79ff43 --- /dev/null +++ b/wxPython/distutils/command/config.py @@ -0,0 +1,368 @@ +"""distutils.command.config + +Implements the Distutils 'config' command, a (mostly) empty command class +that exists mainly to be sub-classed by specific module distributions and +applications. The idea is that while every "config" command is different, +at least they're all named the same, and users always see "config" in the +list of standard commands. Also, this is a good place to put common +configure-like tasks: "try to compile this C code", or "figure out where +this header file lives". +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string, re +from types import * +from distutils.core import Command +from distutils.errors import DistutilsExecError +from distutils.sysconfig import customize_compiler +from distutils import log + +LANG_EXT = {'c': '.c', + 'c++': '.cxx'} + +class config (Command): + + description = "prepare to build" + + user_options = [ + ('compiler=', None, + "specify the compiler type"), + ('cc=', None, + "specify the compiler executable"), + ('include-dirs=', 'I', + "list of directories to search for header files"), + ('define=', 'D', + "C preprocessor macros to define"), + ('undef=', 'U', + "C preprocessor macros to undefine"), + ('libraries=', 'l', + "external C libraries to link with"), + ('library-dirs=', 'L', + "directories to search for external C libraries"), + + ('noisy', None, + "show every action (compile, link, run, ...) taken"), + ('dump-source', None, + "dump generated source files before attempting to compile them"), + ] + + + # The three standard command methods: since the "config" command + # does nothing by default, these are empty. + + def initialize_options (self): + self.compiler = None + self.cc = None + self.include_dirs = None + #self.define = None + #self.undef = None + self.libraries = None + self.library_dirs = None + + # maximal output for now + self.noisy = 1 + self.dump_source = 1 + + # list of temporary files generated along-the-way that we have + # to clean at some point + self.temp_files = [] + + def finalize_options (self): + if self.include_dirs is None: + self.include_dirs = self.distribution.include_dirs or [] + elif type(self.include_dirs) is StringType: + self.include_dirs = string.split(self.include_dirs, os.pathsep) + + if self.libraries is None: + self.libraries = [] + elif type(self.libraries) is StringType: + self.libraries = [self.libraries] + + if self.library_dirs is None: + self.library_dirs = [] + elif type(self.library_dirs) is StringType: + self.library_dirs = string.split(self.library_dirs, os.pathsep) + + + def run (self): + pass + + + # Utility methods for actual "config" commands. The interfaces are + # loosely based on Autoconf macros of similar names. Sub-classes + # may use these freely. + + def _check_compiler (self): + """Check that 'self.compiler' really is a CCompiler object; + if not, make it one. + """ + # We do this late, and only on-demand, because this is an expensive + # import. + from distutils.ccompiler import CCompiler, new_compiler + if not isinstance(self.compiler, CCompiler): + self.compiler = new_compiler(compiler=self.compiler, + dry_run=self.dry_run, force=1) + customize_compiler(self.compiler) + if self.include_dirs: + self.compiler.set_include_dirs(self.include_dirs) + if self.libraries: + self.compiler.set_libraries(self.libraries) + if self.library_dirs: + self.compiler.set_library_dirs(self.library_dirs) + + + def _gen_temp_sourcefile (self, body, headers, lang): + filename = "_configtest" + LANG_EXT[lang] + file = open(filename, "w") + if headers: + for header in headers: + file.write("#include <%s>\n" % header) + file.write("\n") + file.write(body) + if body[-1] != "\n": + file.write("\n") + file.close() + return filename + + def _preprocess (self, body, headers, include_dirs, lang): + src = self._gen_temp_sourcefile(body, headers, lang) + out = "_configtest.i" + self.temp_files.extend([src, out]) + self.compiler.preprocess(src, out, include_dirs=include_dirs) + return (src, out) + + def _compile (self, body, headers, include_dirs, lang): + src = self._gen_temp_sourcefile(body, headers, lang) + if self.dump_source: + dump_file(src, "compiling '%s':" % src) + (obj,) = self.compiler.object_filenames([src]) + self.temp_files.extend([src, obj]) + self.compiler.compile([src], include_dirs=include_dirs) + return (src, obj) + + def _link (self, body, + headers, include_dirs, + libraries, library_dirs, lang): + (src, obj) = self._compile(body, headers, include_dirs, lang) + prog = os.path.splitext(os.path.basename(src))[0] + self.compiler.link_executable([obj], prog, + libraries=libraries, + library_dirs=library_dirs, + target_lang=lang) + + if self.compiler.exe_extension is not None: + prog = prog + self.compiler.exe_extension + self.temp_files.append(prog) + + return (src, obj, prog) + + def _clean (self, *filenames): + if not filenames: + filenames = self.temp_files + self.temp_files = [] + log.info("removing: %s", string.join(filenames)) + for filename in filenames: + try: + os.remove(filename) + except OSError: + pass + + + # XXX these ignore the dry-run flag: what to do, what to do? even if + # you want a dry-run build, you still need some sort of configuration + # info. My inclination is to make it up to the real config command to + # consult 'dry_run', and assume a default (minimal) configuration if + # true. The problem with trying to do it here is that you'd have to + # return either true or false from all the 'try' methods, neither of + # which is correct. + + # XXX need access to the header search path and maybe default macros. + + def try_cpp (self, body=None, headers=None, include_dirs=None, lang="c"): + """Construct a source file from 'body' (a string containing lines + of C/C++ code) and 'headers' (a list of header files to include) + and run it through the preprocessor. Return true if the + preprocessor succeeded, false if there were any errors. + ('body' probably isn't of much use, but what the heck.) + """ + from distutils.ccompiler import CompileError + self._check_compiler() + ok = 1 + try: + self._preprocess(body, headers, include_dirs, lang) + except CompileError: + ok = 0 + + self._clean() + return ok + + def search_cpp (self, pattern, body=None, + headers=None, include_dirs=None, lang="c"): + """Construct a source file (just like 'try_cpp()'), run it through + the preprocessor, and return true if any line of the output matches + 'pattern'. 'pattern' should either be a compiled regex object or a + string containing a regex. If both 'body' and 'headers' are None, + preprocesses an empty file -- which can be useful to determine the + symbols the preprocessor and compiler set by default. + """ + + self._check_compiler() + (src, out) = self._preprocess(body, headers, include_dirs, lang) + + if type(pattern) is StringType: + pattern = re.compile(pattern) + + file = open(out) + match = 0 + while 1: + line = file.readline() + if line == '': + break + if pattern.search(line): + match = 1 + break + + file.close() + self._clean() + return match + + def try_compile (self, body, headers=None, include_dirs=None, lang="c"): + """Try to compile a source file built from 'body' and 'headers'. + Return true on success, false otherwise. + """ + from distutils.ccompiler import CompileError + self._check_compiler() + try: + self._compile(body, headers, include_dirs, lang) + ok = 1 + except CompileError: + ok = 0 + + log.info(ok and "success!" or "failure.") + self._clean() + return ok + + def try_link (self, body, + headers=None, include_dirs=None, + libraries=None, library_dirs=None, + lang="c"): + """Try to compile and link a source file, built from 'body' and + 'headers', to executable form. Return true on success, false + otherwise. + """ + from distutils.ccompiler import CompileError, LinkError + self._check_compiler() + try: + self._link(body, headers, include_dirs, + libraries, library_dirs, lang) + ok = 1 + except (CompileError, LinkError): + ok = 0 + + log.info(ok and "success!" or "failure.") + self._clean() + return ok + + def try_run (self, body, + headers=None, include_dirs=None, + libraries=None, library_dirs=None, + lang="c"): + """Try to compile, link to an executable, and run a program + built from 'body' and 'headers'. Return true on success, false + otherwise. + """ + from distutils.ccompiler import CompileError, LinkError + self._check_compiler() + try: + src, obj, exe = self._link(body, headers, include_dirs, + libraries, library_dirs, lang) + self.spawn([exe]) + ok = 1 + except (CompileError, LinkError, DistutilsExecError): + ok = 0 + + log.info(ok and "success!" or "failure.") + self._clean() + return ok + + + # -- High-level methods -------------------------------------------- + # (these are the ones that are actually likely to be useful + # when implementing a real-world config command!) + + def check_func (self, func, + headers=None, include_dirs=None, + libraries=None, library_dirs=None, + decl=0, call=0): + + """Determine if function 'func' is available by constructing a + source file that refers to 'func', and compiles and links it. + If everything succeeds, returns true; otherwise returns false. + + The constructed source file starts out by including the header + files listed in 'headers'. If 'decl' is true, it then declares + 'func' (as "int func()"); you probably shouldn't supply 'headers' + and set 'decl' true in the same call, or you might get errors about + a conflicting declarations for 'func'. Finally, the constructed + 'main()' function either references 'func' or (if 'call' is true) + calls it. 'libraries' and 'library_dirs' are used when + linking. + """ + + self._check_compiler() + body = [] + if decl: + body.append("int %s ();" % func) + body.append("int main () {") + if call: + body.append(" %s();" % func) + else: + body.append(" %s;" % func) + body.append("}") + body = string.join(body, "\n") + "\n" + + return self.try_link(body, headers, include_dirs, + libraries, library_dirs) + + # check_func () + + def check_lib (self, library, library_dirs=None, + headers=None, include_dirs=None, other_libraries=[]): + """Determine if 'library' is available to be linked against, + without actually checking that any particular symbols are provided + by it. 'headers' will be used in constructing the source file to + be compiled, but the only effect of this is to check if all the + header files listed are available. Any libraries listed in + 'other_libraries' will be included in the link, in case 'library' + has symbols that depend on other libraries. + """ + self._check_compiler() + return self.try_link("int main (void) { }", + headers, include_dirs, + [library]+other_libraries, library_dirs) + + def check_header (self, header, include_dirs=None, + library_dirs=None, lang="c"): + """Determine if the system header file named by 'header_file' + exists and can be found by the preprocessor; return true if so, + false otherwise. + """ + return self.try_cpp(body="/* No body */", headers=[header], + include_dirs=include_dirs) + + +# class config + + +def dump_file (filename, head=None): + if head is None: + print filename + ":" + else: + print head + + file = open(filename) + sys.stdout.write(file.read()) + file.close() diff --git a/wxPython/distutils/command/install.py b/wxPython/distutils/command/install.py new file mode 100644 index 0000000000..5d5bdaa77e --- /dev/null +++ b/wxPython/distutils/command/install.py @@ -0,0 +1,601 @@ +"""distutils.command.install + +Implements the Distutils 'install' command.""" + +from distutils import log + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from types import * +from distutils.core import Command +from distutils.debug import DEBUG +from distutils.sysconfig import get_config_vars +from distutils.errors import DistutilsPlatformError +from distutils.file_util import write_file +from distutils.util import convert_path, subst_vars, change_root +from distutils.errors import DistutilsOptionError +from glob import glob + +if sys.version < "2.2": + WINDOWS_SCHEME = { + 'purelib': '$base', + 'platlib': '$base', + 'headers': '$base/Include/$dist_name', + 'scripts': '$base/Scripts', + 'data' : '$base', + } +else: + WINDOWS_SCHEME = { + 'purelib': '$base/Lib/site-packages', + 'platlib': '$base/Lib/site-packages', + 'headers': '$base/Include/$dist_name', + 'scripts': '$base/Scripts', + 'data' : '$base', + } + +INSTALL_SCHEMES = { + 'unix_prefix': { + 'purelib': '$base/lib/python$py_version_short/site-packages', + 'platlib': '$platbase/lib/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', + }, + 'unix_home': { + 'purelib': '$base/lib/python', + 'platlib': '$base/lib/python', + 'headers': '$base/include/python/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', + }, + 'nt': WINDOWS_SCHEME, + 'mac': { + 'purelib': '$base/Lib/site-packages', + 'platlib': '$base/Lib/site-packages', + 'headers': '$base/Include/$dist_name', + 'scripts': '$base/Scripts', + 'data' : '$base', + }, + 'os2': { + 'purelib': '$base/Lib/site-packages', + 'platlib': '$base/Lib/site-packages', + 'headers': '$base/Include/$dist_name', + 'scripts': '$base/Scripts', + 'data' : '$base', + } + } + +# The keys to an installation scheme; if any new types of files are to be +# installed, be sure to add an entry to every installation scheme above, +# and to SCHEME_KEYS here. +SCHEME_KEYS = ('purelib', 'platlib', 'headers', 'scripts', 'data') + + +class install (Command): + + description = "install everything from build directory" + + user_options = [ + # Select installation scheme and set base director(y|ies) + ('prefix=', None, + "installation prefix"), + ('exec-prefix=', None, + "(Unix only) prefix for platform-specific files"), + ('home=', None, + "(Unix only) home directory to install under"), + + # Or, just set the base director(y|ies) + ('install-base=', None, + "base installation directory (instead of --prefix or --home)"), + ('install-platbase=', None, + "base installation directory for platform-specific files " + + "(instead of --exec-prefix or --home)"), + ('root=', None, + "install everything relative to this alternate root directory"), + + # Or, explicitly set the installation scheme + ('install-purelib=', None, + "installation directory for pure Python module distributions"), + ('install-platlib=', None, + "installation directory for non-pure module distributions"), + ('install-lib=', None, + "installation directory for all module distributions " + + "(overrides --install-purelib and --install-platlib)"), + + ('install-headers=', None, + "installation directory for C/C++ headers"), + ('install-scripts=', None, + "installation directory for Python scripts"), + ('install-data=', None, + "installation directory for data files"), + + # Byte-compilation options -- see install_lib.py for details, as + # these are duplicated from there (but only install_lib does + # anything with them). + ('compile', 'c', "compile .py to .pyc [default]"), + ('no-compile', None, "don't compile .py files"), + ('optimize=', 'O', + "also compile with optimization: -O1 for \"python -O\", " + "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), + + # Miscellaneous control options + ('force', 'f', + "force installation (overwrite any existing files)"), + ('skip-build', None, + "skip rebuilding everything (for testing/debugging)"), + + # Where to install documentation (eventually!) + #('doc-format=', None, "format of documentation to generate"), + #('install-man=', None, "directory for Unix man pages"), + #('install-html=', None, "directory for HTML documentation"), + #('install-info=', None, "directory for GNU info files"), + + ('record=', None, + "filename in which to record list of installed files"), + ] + + boolean_options = ['compile', 'force', 'skip-build'] + negative_opt = {'no-compile' : 'compile'} + + + def initialize_options (self): + + # High-level options: these select both an installation base + # and scheme. + self.prefix = None + self.exec_prefix = None + self.home = None + + # These select only the installation base; it's up to the user to + # specify the installation scheme (currently, that means supplying + # the --install-{platlib,purelib,scripts,data} options). + self.install_base = None + self.install_platbase = None + self.root = None + + # These options are the actual installation directories; if not + # supplied by the user, they are filled in using the installation + # scheme implied by prefix/exec-prefix/home and the contents of + # that installation scheme. + self.install_purelib = None # for pure module distributions + self.install_platlib = None # non-pure (dists w/ extensions) + self.install_headers = None # for C/C++ headers + self.install_lib = None # set to either purelib or platlib + self.install_scripts = None + self.install_data = None + + self.compile = None + self.optimize = None + + # These two are for putting non-packagized distributions into their + # own directory and creating a .pth file if it makes sense. + # 'extra_path' comes from the setup file; 'install_path_file' can + # be turned off if it makes no sense to install a .pth file. (But + # better to install it uselessly than to guess wrong and not + # install it when it's necessary and would be used!) Currently, + # 'install_path_file' is always true unless some outsider meddles + # with it. + self.extra_path = None + self.install_path_file = 1 + + # 'force' forces installation, even if target files are not + # out-of-date. 'skip_build' skips running the "build" command, + # handy if you know it's not necessary. 'warn_dir' (which is *not* + # a user option, it's just there so the bdist_* commands can turn + # it off) determines whether we warn about installing to a + # directory not in sys.path. + self.force = 0 + self.skip_build = 0 + self.warn_dir = 1 + + # These are only here as a conduit from the 'build' command to the + # 'install_*' commands that do the real work. ('build_base' isn't + # actually used anywhere, but it might be useful in future.) They + # are not user options, because if the user told the install + # command where the build directory is, that wouldn't affect the + # build command. + self.build_base = None + self.build_lib = None + + # Not defined yet because we don't know anything about + # documentation yet. + #self.install_man = None + #self.install_html = None + #self.install_info = None + + self.record = None + + + # -- Option finalizing methods ------------------------------------- + # (This is rather more involved than for most commands, + # because this is where the policy for installing third- + # party Python modules on various platforms given a wide + # array of user input is decided. Yes, it's quite complex!) + + def finalize_options (self): + + # This method (and its pliant slaves, like 'finalize_unix()', + # 'finalize_other()', and 'select_scheme()') is where the default + # installation directories for modules, extension modules, and + # anything else we care to install from a Python module + # distribution. Thus, this code makes a pretty important policy + # statement about how third-party stuff is added to a Python + # installation! Note that the actual work of installation is done + # by the relatively simple 'install_*' commands; they just take + # their orders from the installation directory options determined + # here. + + # Check for errors/inconsistencies in the options; first, stuff + # that's wrong on any platform. + + if ((self.prefix or self.exec_prefix or self.home) and + (self.install_base or self.install_platbase)): + raise DistutilsOptionError, \ + ("must supply either prefix/exec-prefix/home or " + + "install-base/install-platbase -- not both") + + # Next, stuff that's wrong (or dubious) only on certain platforms. + if os.name == 'posix': + if self.home and (self.prefix or self.exec_prefix): + raise DistutilsOptionError, \ + ("must supply either home or prefix/exec-prefix -- " + + "not both") + else: + if self.exec_prefix: + self.warn("exec-prefix option ignored on this platform") + self.exec_prefix = None + if self.home: + self.warn("home option ignored on this platform") + self.home = None + + # Now the interesting logic -- so interesting that we farm it out + # to other methods. The goal of these methods is to set the final + # values for the install_{lib,scripts,data,...} options, using as + # input a heady brew of prefix, exec_prefix, home, install_base, + # install_platbase, user-supplied versions of + # install_{purelib,platlib,lib,scripts,data,...}, and the + # INSTALL_SCHEME dictionary above. Phew! + + self.dump_dirs("pre-finalize_{unix,other}") + + if os.name == 'posix': + self.finalize_unix() + else: + self.finalize_other() + + self.dump_dirs("post-finalize_{unix,other}()") + + # Expand configuration variables, tilde, etc. in self.install_base + # and self.install_platbase -- that way, we can use $base or + # $platbase in the other installation directories and not worry + # about needing recursive variable expansion (shudder). + + py_version = (string.split(sys.version))[0] + (prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix') + self.config_vars = {'dist_name': self.distribution.get_name(), + 'dist_version': self.distribution.get_version(), + 'dist_fullname': self.distribution.get_fullname(), + 'py_version': py_version, + 'py_version_short': py_version[0:3], + 'sys_prefix': prefix, + 'prefix': prefix, + 'sys_exec_prefix': exec_prefix, + 'exec_prefix': exec_prefix, + } + self.expand_basedirs() + + self.dump_dirs("post-expand_basedirs()") + + # Now define config vars for the base directories so we can expand + # everything else. + self.config_vars['base'] = self.install_base + self.config_vars['platbase'] = self.install_platbase + + if DEBUG: + from pprint import pprint + print "config vars:" + pprint(self.config_vars) + + # Expand "~" and configuration variables in the installation + # directories. + self.expand_dirs() + + self.dump_dirs("post-expand_dirs()") + + # Pick the actual directory to install all modules to: either + # install_purelib or install_platlib, depending on whether this + # module distribution is pure or not. Of course, if the user + # already specified install_lib, use their selection. + if self.install_lib is None: + if self.distribution.ext_modules: # has extensions: non-pure + self.install_lib = self.install_platlib + else: + self.install_lib = self.install_purelib + + + # Convert directories from Unix /-separated syntax to the local + # convention. + self.convert_paths('lib', 'purelib', 'platlib', + 'scripts', 'data', 'headers') + + # Well, we're not actually fully completely finalized yet: we still + # have to deal with 'extra_path', which is the hack for allowing + # non-packagized module distributions (hello, Numerical Python!) to + # get their own directories. + self.handle_extra_path() + self.install_libbase = self.install_lib # needed for .pth file + self.install_lib = os.path.join(self.install_lib, self.extra_dirs) + + # If a new root directory was supplied, make all the installation + # dirs relative to it. + if self.root is not None: + self.change_roots('libbase', 'lib', 'purelib', 'platlib', + 'scripts', 'data', 'headers') + + self.dump_dirs("after prepending root") + + # Find out the build directories, ie. where to install from. + self.set_undefined_options('build', + ('build_base', 'build_base'), + ('build_lib', 'build_lib')) + + # Punt on doc directories for now -- after all, we're punting on + # documentation completely! + + # finalize_options () + + + def dump_dirs (self, msg): + if DEBUG: + from distutils.fancy_getopt import longopt_xlate + print msg + ":" + for opt in self.user_options: + opt_name = opt[0] + if opt_name[-1] == "=": + opt_name = opt_name[0:-1] + opt_name = string.translate(opt_name, longopt_xlate) + val = getattr(self, opt_name) + print " %s: %s" % (opt_name, val) + + + def finalize_unix (self): + + if self.install_base is not None or self.install_platbase is not None: + if ((self.install_lib is None and + self.install_purelib is None and + self.install_platlib is None) or + self.install_headers is None or + self.install_scripts is None or + self.install_data is None): + raise DistutilsOptionError, \ + ("install-base or install-platbase supplied, but " + "installation scheme is incomplete") + return + + if self.home is not None: + self.install_base = self.install_platbase = self.home + self.select_scheme("unix_home") + else: + if self.prefix is None: + if self.exec_prefix is not None: + raise DistutilsOptionError, \ + "must not supply exec-prefix without prefix" + + self.prefix = os.path.normpath(sys.prefix) + self.exec_prefix = os.path.normpath(sys.exec_prefix) + + else: + if self.exec_prefix is None: + self.exec_prefix = self.prefix + + self.install_base = self.prefix + self.install_platbase = self.exec_prefix + self.select_scheme("unix_prefix") + + # finalize_unix () + + + def finalize_other (self): # Windows and Mac OS for now + + if self.prefix is None: + self.prefix = os.path.normpath(sys.prefix) + + self.install_base = self.install_platbase = self.prefix + try: + self.select_scheme(os.name) + except KeyError: + raise DistutilsPlatformError, \ + "I don't know how to install stuff on '%s'" % os.name + + # finalize_other () + + + def select_scheme (self, name): + # it's the caller's problem if they supply a bad name! + scheme = INSTALL_SCHEMES[name] + for key in SCHEME_KEYS: + attrname = 'install_' + key + if getattr(self, attrname) is None: + setattr(self, attrname, scheme[key]) + + + def _expand_attrs (self, attrs): + for attr in attrs: + val = getattr(self, attr) + if val is not None: + if os.name == 'posix': + val = os.path.expanduser(val) + val = subst_vars(val, self.config_vars) + setattr(self, attr, val) + + + def expand_basedirs (self): + self._expand_attrs(['install_base', + 'install_platbase', + 'root']) + + def expand_dirs (self): + self._expand_attrs(['install_purelib', + 'install_platlib', + 'install_lib', + 'install_headers', + 'install_scripts', + 'install_data',]) + + + def convert_paths (self, *names): + for name in names: + attr = "install_" + name + setattr(self, attr, convert_path(getattr(self, attr))) + + + def handle_extra_path (self): + + if self.extra_path is None: + self.extra_path = self.distribution.extra_path + + if self.extra_path is not None: + if type(self.extra_path) is StringType: + self.extra_path = string.split(self.extra_path, ',') + + if len(self.extra_path) == 1: + path_file = extra_dirs = self.extra_path[0] + elif len(self.extra_path) == 2: + (path_file, extra_dirs) = self.extra_path + else: + raise DistutilsOptionError, \ + ("'extra_path' option must be a list, tuple, or " + "comma-separated string with 1 or 2 elements") + + # convert to local form in case Unix notation used (as it + # should be in setup scripts) + extra_dirs = convert_path(extra_dirs) + + else: + path_file = None + extra_dirs = '' + + # XXX should we warn if path_file and not extra_dirs? (in which + # case the path file would be harmless but pointless) + self.path_file = path_file + self.extra_dirs = extra_dirs + + # handle_extra_path () + + + def change_roots (self, *names): + for name in names: + attr = "install_" + name + setattr(self, attr, change_root(self.root, getattr(self, attr))) + + + # -- Command execution methods ------------------------------------- + + def run (self): + + # Obviously have to build before we can install + if not self.skip_build: + self.run_command('build') + + # Run all sub-commands (at least those that need to be run) + for cmd_name in self.get_sub_commands(): + self.run_command(cmd_name) + + if self.path_file: + self.create_path_file() + + # write list of installed files, if requested. + if self.record: + outputs = self.get_outputs() + if self.root: # strip any package prefix + root_len = len(self.root) + for counter in xrange(len(outputs)): + outputs[counter] = outputs[counter][root_len:] + self.execute(write_file, + (self.record, outputs), + "writing list of installed files to '%s'" % + self.record) + + sys_path = map(os.path.normpath, sys.path) + sys_path = map(os.path.normcase, sys_path) + install_lib = os.path.normcase(os.path.normpath(self.install_lib)) + if (self.warn_dir and + not (self.path_file and self.install_path_file) and + install_lib not in sys_path): + log.debug(("modules installed to '%s', which is not in " + "Python's module search path (sys.path) -- " + "you'll have to change the search path yourself"), + self.install_lib) + + # run () + + def create_path_file (self): + filename = os.path.join(self.install_libbase, + self.path_file + ".pth") + if self.install_path_file: + self.execute(write_file, + (filename, [self.extra_dirs]), + "creating %s" % filename) + else: + self.warn("path file '%s' not created" % filename) + + + # -- Reporting methods --------------------------------------------- + + def get_outputs (self): + # Assemble the outputs of all the sub-commands. + outputs = [] + for cmd_name in self.get_sub_commands(): + cmd = self.get_finalized_command(cmd_name) + # Add the contents of cmd.get_outputs(), ensuring + # that outputs doesn't contain duplicate entries + for filename in cmd.get_outputs(): + if filename not in outputs: + outputs.append(filename) + + if self.path_file and self.install_path_file: + outputs.append(os.path.join(self.install_libbase, + self.path_file + ".pth")) + + return outputs + + def get_inputs (self): + # XXX gee, this looks familiar ;-( + inputs = [] + for cmd_name in self.get_sub_commands(): + cmd = self.get_finalized_command(cmd_name) + inputs.extend(cmd.get_inputs()) + + return inputs + + + # -- Predicates for sub-command list ------------------------------- + + def has_lib (self): + """Return true if the current distribution has any Python + modules to install.""" + return (self.distribution.has_pure_modules() or + self.distribution.has_ext_modules()) + + def has_headers (self): + return self.distribution.has_headers() + + def has_scripts (self): + return self.distribution.has_scripts() + + def has_data (self): + return self.distribution.has_data_files() + + + # 'sub_commands': a list of commands this command might have to run to + # get its work done. See cmd.py for more info. + sub_commands = [('install_lib', has_lib), + ('install_headers', has_headers), + ('install_scripts', has_scripts), + ('install_data', has_data), + ] + +# class install diff --git a/wxPython/distutils/command/install_data.py b/wxPython/distutils/command/install_data.py new file mode 100644 index 0000000000..2fa0da29fe --- /dev/null +++ b/wxPython/distutils/command/install_data.py @@ -0,0 +1,85 @@ +"""distutils.command.install_data + +Implements the Distutils 'install_data' command, for installing +platform-independent data files.""" + +# contributed by Bastian Kleineidam + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from types import StringType +from distutils.core import Command +from distutils.util import change_root, convert_path + +class install_data (Command): + + description = "install data files" + + user_options = [ + ('install-dir=', 'd', + "base directory for installing data files " + "(default: installation base dir)"), + ('root=', None, + "install everything relative to this alternate root directory"), + ('force', 'f', "force installation (overwrite existing files)"), + ] + + boolean_options = ['force'] + + def initialize_options (self): + self.install_dir = None + self.outfiles = [] + self.root = None + self.force = 0 + + self.data_files = self.distribution.data_files + self.warn_dir = 1 + + def finalize_options (self): + self.set_undefined_options('install', + ('install_data', 'install_dir'), + ('root', 'root'), + ('force', 'force'), + ) + + def run (self): + self.mkpath(self.install_dir) + for f in self.data_files: + if type(f) is StringType: + # it's a simple file, so copy it + f = convert_path(f) + if self.warn_dir: + self.warn("setup script did not provide a directory for " + "'%s' -- installing right in '%s'" % + (f, self.install_dir)) + (out, _) = self.copy_file(f, self.install_dir) + self.outfiles.append(out) + else: + # it's a tuple with path to install to and a list of files + dir = convert_path(f[0]) + if not os.path.isabs(dir): + dir = os.path.join(self.install_dir, dir) + elif self.root: + dir = change_root(self.root, dir) + self.mkpath(dir) + + if f[1] == []: + # If there are no files listed, the user must be + # trying to create an empty directory, so add the + # directory to the list of output files. + self.outfiles.append(dir) + else: + # Copy files, adding them to the list of output files. + for data in f[1]: + data = convert_path(data) + (out, _) = self.copy_file(data, dir) + self.outfiles.append(out) + + def get_inputs (self): + return self.data_files or [] + + def get_outputs (self): + return self.outfiles diff --git a/wxPython/distutils/command/install_headers.py b/wxPython/distutils/command/install_headers.py new file mode 100644 index 0000000000..3a37d309f9 --- /dev/null +++ b/wxPython/distutils/command/install_headers.py @@ -0,0 +1,53 @@ +"""distutils.command.install_headers + +Implements the Distutils 'install_headers' command, to install C/C++ header +files to the Python include directory.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.core import Command + + +class install_headers (Command): + + description = "install C/C++ header files" + + user_options = [('install-dir=', 'd', + "directory to install header files to"), + ('force', 'f', + "force installation (overwrite existing files)"), + ] + + boolean_options = ['force'] + + def initialize_options (self): + self.install_dir = None + self.force = 0 + self.outfiles = [] + + def finalize_options (self): + self.set_undefined_options('install', + ('install_headers', 'install_dir'), + ('force', 'force')) + + + def run (self): + headers = self.distribution.headers + if not headers: + return + + self.mkpath(self.install_dir) + for header in headers: + (out, _) = self.copy_file(header, self.install_dir) + self.outfiles.append(out) + + def get_inputs (self): + return self.distribution.headers or [] + + def get_outputs (self): + return self.outfiles + +# class install_headers diff --git a/wxPython/distutils/command/install_lib.py b/wxPython/distutils/command/install_lib.py new file mode 100644 index 0000000000..daf3e010fd --- /dev/null +++ b/wxPython/distutils/command/install_lib.py @@ -0,0 +1,210 @@ +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from types import IntType +from distutils.core import Command +from distutils.errors import DistutilsOptionError + +class install_lib (Command): + + description = "install all Python modules (extensions and pure Python)" + + # The byte-compilation options are a tad confusing. Here are the + # possible scenarios: + # 1) no compilation at all (--no-compile --no-optimize) + # 2) compile .pyc only (--compile --no-optimize; default) + # 3) compile .pyc and "level 1" .pyo (--compile --optimize) + # 4) compile "level 1" .pyo only (--no-compile --optimize) + # 5) compile .pyc and "level 2" .pyo (--compile --optimize-more) + # 6) compile "level 2" .pyo only (--no-compile --optimize-more) + # + # The UI for this is two option, 'compile' and 'optimize'. + # 'compile' is strictly boolean, and only decides whether to + # generate .pyc files. 'optimize' is three-way (0, 1, or 2), and + # decides both whether to generate .pyo files and what level of + # optimization to use. + + user_options = [ + ('install-dir=', 'd', "directory to install to"), + ('build-dir=','b', "build directory (where to install from)"), + ('force', 'f', "force installation (overwrite existing files)"), + ('compile', 'c', "compile .py to .pyc [default]"), + ('no-compile', None, "don't compile .py files"), + ('optimize=', 'O', + "also compile with optimization: -O1 for \"python -O\", " + "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), + ('skip-build', None, "skip the build steps"), + ] + + boolean_options = ['force', 'compile', 'skip-build'] + negative_opt = {'no-compile' : 'compile'} + + + def initialize_options (self): + # let the 'install' command dictate our installation directory + self.install_dir = None + self.build_dir = None + self.force = 0 + self.compile = None + self.optimize = None + self.skip_build = None + + def finalize_options (self): + + # Get all the information we need to install pure Python modules + # from the umbrella 'install' command -- build (source) directory, + # install (target) directory, and whether to compile .py files. + self.set_undefined_options('install', + ('build_lib', 'build_dir'), + ('install_lib', 'install_dir'), + ('force', 'force'), + ('compile', 'compile'), + ('optimize', 'optimize'), + ('skip_build', 'skip_build'), + ) + + if self.compile is None: + self.compile = 1 + if self.optimize is None: + self.optimize = 0 + + if type(self.optimize) is not IntType: + try: + self.optimize = int(self.optimize) + assert 0 <= self.optimize <= 2 + except (ValueError, AssertionError): + raise DistutilsOptionError, "optimize must be 0, 1, or 2" + + def run (self): + + # Make sure we have built everything we need first + self.build() + + # Install everything: simply dump the entire contents of the build + # directory to the installation directory (that's the beauty of + # having a build directory!) + outfiles = self.install() + + # (Optionally) compile .py to .pyc + if outfiles is not None and self.distribution.has_pure_modules(): + self.byte_compile(outfiles) + + # run () + + + # -- Top-level worker functions ------------------------------------ + # (called from 'run()') + + def build (self): + if not self.skip_build: + if self.distribution.has_pure_modules(): + self.run_command('build_py') + if self.distribution.has_ext_modules(): + self.run_command('build_ext') + + def install (self): + if os.path.isdir(self.build_dir): + outfiles = self.copy_tree(self.build_dir, self.install_dir) + else: + self.warn("'%s' does not exist -- no Python modules to install" % + self.build_dir) + return + return outfiles + + def byte_compile (self, files): + from distutils.util import byte_compile + + # Get the "--root" directory supplied to the "install" command, + # and use it as a prefix to strip off the purported filename + # encoded in bytecode files. This is far from complete, but it + # should at least generate usable bytecode in RPM distributions. + install_root = self.get_finalized_command('install').root + + if self.compile: + byte_compile(files, optimize=0, + force=self.force, prefix=install_root, + dry_run=self.dry_run) + if self.optimize > 0: + byte_compile(files, optimize=self.optimize, + force=self.force, prefix=install_root, + verbose=self.verbose, dry_run=self.dry_run) + + + # -- Utility methods ----------------------------------------------- + + def _mutate_outputs (self, has_any, build_cmd, cmd_option, output_dir): + + if not has_any: + return [] + + build_cmd = self.get_finalized_command(build_cmd) + build_files = build_cmd.get_outputs() + build_dir = getattr(build_cmd, cmd_option) + + prefix_len = len(build_dir) + len(os.sep) + outputs = [] + for file in build_files: + outputs.append(os.path.join(output_dir, file[prefix_len:])) + + return outputs + + # _mutate_outputs () + + def _bytecode_filenames (self, py_filenames): + bytecode_files = [] + for py_file in py_filenames: + if self.compile: + bytecode_files.append(py_file + "c") + if self.optimize > 0: + bytecode_files.append(py_file + "o") + + return bytecode_files + + + # -- External interface -------------------------------------------- + # (called by outsiders) + + def get_outputs (self): + """Return the list of files that would be installed if this command + were actually run. Not affected by the "dry-run" flag or whether + modules have actually been built yet. + """ + pure_outputs = \ + self._mutate_outputs(self.distribution.has_pure_modules(), + 'build_py', 'build_lib', + self.install_dir) + if self.compile: + bytecode_outputs = self._bytecode_filenames(pure_outputs) + else: + bytecode_outputs = [] + + ext_outputs = \ + self._mutate_outputs(self.distribution.has_ext_modules(), + 'build_ext', 'build_lib', + self.install_dir) + + return pure_outputs + bytecode_outputs + ext_outputs + + # get_outputs () + + def get_inputs (self): + """Get the list of files that are input to this command, ie. the + files that get installed as they are named in the build tree. + The files in this list correspond one-to-one to the output + filenames returned by 'get_outputs()'. + """ + inputs = [] + + if self.distribution.has_pure_modules(): + build_py = self.get_finalized_command('build_py') + inputs.extend(build_py.get_outputs()) + + if self.distribution.has_ext_modules(): + build_ext = self.get_finalized_command('build_ext') + inputs.extend(build_ext.get_outputs()) + + return inputs + +# class install_lib diff --git a/wxPython/distutils/command/install_scripts.py b/wxPython/distutils/command/install_scripts.py new file mode 100644 index 0000000000..abe10457b6 --- /dev/null +++ b/wxPython/distutils/command/install_scripts.py @@ -0,0 +1,66 @@ +"""distutils.command.install_scripts + +Implements the Distutils 'install_scripts' command, for installing +Python scripts.""" + +# contributed by Bastian Kleineidam + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.core import Command +from distutils import log +from stat import ST_MODE + +class install_scripts (Command): + + description = "install scripts (Python or otherwise)" + + user_options = [ + ('install-dir=', 'd', "directory to install scripts to"), + ('build-dir=','b', "build directory (where to install from)"), + ('force', 'f', "force installation (overwrite existing files)"), + ('skip-build', None, "skip the build steps"), + ] + + boolean_options = ['force', 'skip-build'] + + + def initialize_options (self): + self.install_dir = None + self.force = 0 + self.build_dir = None + self.skip_build = None + + def finalize_options (self): + self.set_undefined_options('build', ('build_scripts', 'build_dir')) + self.set_undefined_options('install', + ('install_scripts', 'install_dir'), + ('force', 'force'), + ('skip_build', 'skip_build'), + ) + + def run (self): + if not self.skip_build: + self.run_command('build_scripts') + self.outfiles = self.copy_tree(self.build_dir, self.install_dir) + if os.name == 'posix': + # Set the executable bits (owner, group, and world) on + # all the scripts we just installed. + for file in self.get_outputs(): + if self.dry_run: + log.info("changing mode of %s", file) + else: + mode = ((os.stat(file)[ST_MODE]) | 0555) & 07777 + log.info("changing mode of %s to %o", file, mode) + os.chmod(file, mode) + + def get_inputs (self): + return self.distribution.scripts or [] + + def get_outputs(self): + return self.outfiles or [] + +# class install_scripts diff --git a/wxPython/distutils/command/register.py b/wxPython/distutils/command/register.py new file mode 100644 index 0000000000..29b76cbfd9 --- /dev/null +++ b/wxPython/distutils/command/register.py @@ -0,0 +1,292 @@ +"""distutils.command.register + +Implements the Distutils 'register' command (register with the repository). +""" + +# created 2002/10/21, Richard Jones + +__revision__ = "$Id$" + +import sys, os, string, urllib2, getpass, urlparse +import StringIO, ConfigParser + +from distutils.core import Command +from distutils.errors import * + +class register(Command): + + description = "register the distribution with the repository" + + DEFAULT_REPOSITORY = 'http://www.python.org/pypi' + + user_options = [ + ('repository=', 'r', + "url of repository [default: %s]"%DEFAULT_REPOSITORY), + ('verify', None, + 'verify the package metadata for correctness'), + ('list-classifiers', None, + 'list the valid Trove classifiers'), + ('show-response', None, + 'display full response text from server'), + ] + boolean_options = ['verify', 'show-response', 'list-classifiers'] + + def initialize_options(self): + self.repository = None + self.verify = 0 + self.show_response = 0 + self.list_classifiers = 0 + + def finalize_options(self): + if self.repository is None: + self.repository = self.DEFAULT_REPOSITORY + + def run(self): + self.check_metadata() + if self.verify: + self.verify_metadata() + elif self.list_classifiers: + self.classifiers() + else: + self.send_metadata() + + def check_metadata(self): + """Ensure that all required elements of meta-data (name, version, + URL, (author and author_email) or (maintainer and + maintainer_email)) are supplied by the Distribution object; warn if + any are missing. + """ + metadata = self.distribution.metadata + + missing = [] + for attr in ('name', 'version', 'url'): + if not (hasattr(metadata, attr) and getattr(metadata, attr)): + missing.append(attr) + + if missing: + self.warn("missing required meta-data: " + + string.join(missing, ", ")) + + if metadata.author: + if not metadata.author_email: + self.warn("missing meta-data: if 'author' supplied, " + + "'author_email' must be supplied too") + elif metadata.maintainer: + if not metadata.maintainer_email: + self.warn("missing meta-data: if 'maintainer' supplied, " + + "'maintainer_email' must be supplied too") + else: + self.warn("missing meta-data: either (author and author_email) " + + "or (maintainer and maintainer_email) " + + "must be supplied") + + def classifiers(self): + ''' Fetch the list of classifiers from the server. + ''' + response = urllib2.urlopen(self.repository+'?:action=list_classifiers') + print response.read() + + def verify_metadata(self): + ''' Send the metadata to the package index server to be checked. + ''' + # send the info to the server and report the result + (code, result) = self.post_to_server(self.build_post_data('verify')) + print 'Server response (%s): %s'%(code, result) + + def send_metadata(self): + ''' Send the metadata to the package index server. + + Well, do the following: + 1. figure who the user is, and then + 2. send the data as a Basic auth'ed POST. + + First we try to read the username/password from $HOME/.pypirc, + which is a ConfigParser-formatted file with a section + [server-login] containing username and password entries (both + in clear text). Eg: + + [server-login] + username: fred + password: sekrit + + Otherwise, to figure who the user is, we offer the user three + choices: + + 1. use existing login, + 2. register as a new user, or + 3. set the password to a random string and email the user. + + ''' + choice = 'x' + username = password = '' + + # see if we can short-cut and get the username/password from the + # config + config = None + if os.environ.has_key('HOME'): + rc = os.path.join(os.environ['HOME'], '.pypirc') + if os.path.exists(rc): + print 'Using PyPI login from %s'%rc + config = ConfigParser.ConfigParser() + config.read(rc) + username = config.get('server-login', 'username') + password = config.get('server-login', 'password') + choice = '1' + + # get the user's login info + choices = '1 2 3 4'.split() + while choice not in choices: + print '''We need to know who you are, so please choose either: + 1. use your existing login, + 2. register as a new user, + 3. have the server generate a new password for you (and email it to you), or + 4. quit +Your selection [default 1]: ''', + choice = raw_input() + if not choice: + choice = '1' + elif choice not in choices: + print 'Please choose one of the four options!' + + if choice == '1': + # get the username and password + while not username: + username = raw_input('Username: ') + while not password: + password = getpass.getpass('Password: ') + + # set up the authentication + auth = urllib2.HTTPPasswordMgr() + host = urlparse.urlparse(self.repository)[1] + auth.add_password('pypi', host, username, password) + + # send the info to the server and report the result + code, result = self.post_to_server(self.build_post_data('submit'), + auth) + print 'Server response (%s): %s'%(code, result) + + # possibly save the login + if os.environ.has_key('HOME') and config is None and code == 200: + rc = os.path.join(os.environ['HOME'], '.pypirc') + print 'I can store your PyPI login so future submissions will be faster.' + print '(the login will be stored in %s)'%rc + choice = 'X' + while choice.lower() not in 'yn': + choice = raw_input('Save your login (y/N)?') + if not choice: + choice = 'n' + if choice.lower() == 'y': + f = open(rc, 'w') + f.write('[server-login]\nusername:%s\npassword:%s\n'%( + username, password)) + f.close() + try: + os.chmod(rc, 0600) + except: + pass + elif choice == '2': + data = {':action': 'user'} + data['name'] = data['password'] = data['email'] = '' + data['confirm'] = None + while not data['name']: + data['name'] = raw_input('Username: ') + while data['password'] != data['confirm']: + while not data['password']: + data['password'] = getpass.getpass('Password: ') + while not data['confirm']: + data['confirm'] = getpass.getpass(' Confirm: ') + if data['password'] != data['confirm']: + data['password'] = '' + data['confirm'] = None + print "Password and confirm don't match!" + while not data['email']: + data['email'] = raw_input(' EMail: ') + code, result = self.post_to_server(data) + if code != 200: + print 'Server response (%s): %s'%(code, result) + else: + print 'You will receive an email shortly.' + print 'Follow the instructions in it to complete registration.' + elif choice == '3': + data = {':action': 'password_reset'} + data['email'] = '' + while not data['email']: + data['email'] = raw_input('Your email address: ') + code, result = self.post_to_server(data) + print 'Server response (%s): %s'%(code, result) + + def build_post_data(self, action): + # figure the data to send - the metadata plus some additional + # information used by the package server + meta = self.distribution.metadata + data = { + ':action': action, + 'metadata_version' : '1.0', + 'name': meta.get_name(), + 'version': meta.get_version(), + 'summary': meta.get_description(), + 'home_page': meta.get_url(), + 'author': meta.get_contact(), + 'author_email': meta.get_contact_email(), + 'license': meta.get_licence(), + 'description': meta.get_long_description(), + 'keywords': meta.get_keywords(), + 'platform': meta.get_platforms(), + 'classifiers': meta.get_classifiers(), + 'download_url': meta.get_download_url(), + } + return data + + def post_to_server(self, data, auth=None): + ''' Post a query to the server, and return a string response. + ''' + + # Build up the MIME payload for the urllib2 POST data + boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' + sep_boundary = '\n--' + boundary + end_boundary = sep_boundary + '--' + body = StringIO.StringIO() + for key, value in data.items(): + # handle multiple entries for the same name + if type(value) != type([]): + value = [value] + for value in value: + value = str(value) + body.write(sep_boundary) + body.write('\nContent-Disposition: form-data; name="%s"'%key) + body.write("\n\n") + body.write(value) + if value and value[-1] == '\r': + body.write('\n') # write an extra newline (lurve Macs) + body.write(end_boundary) + body.write("\n") + body = body.getvalue() + + # build the Request + headers = { + 'Content-type': 'multipart/form-data; boundary=%s'%boundary, + 'Content-length': str(len(body)) + } + req = urllib2.Request(self.repository, body, headers) + + # handle HTTP and include the Basic Auth handler + opener = urllib2.build_opener( + urllib2.HTTPBasicAuthHandler(password_mgr=auth) + ) + data = '' + try: + result = opener.open(req) + except urllib2.HTTPError, e: + if self.show_response: + data = e.fp.read() + result = e.code, e.msg + except urllib2.URLError, e: + result = 500, str(e) + else: + if self.show_response: + data = result.read() + result = 200, 'OK' + if self.show_response: + print '-'*75, data, '-'*75 + return result + diff --git a/wxPython/distutils/command/sdist.py b/wxPython/distutils/command/sdist.py new file mode 100644 index 0000000000..c0b7dd45d9 --- /dev/null +++ b/wxPython/distutils/command/sdist.py @@ -0,0 +1,460 @@ +"""distutils.command.sdist + +Implements the Distutils 'sdist' command (create a source distribution).""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from types import * +from glob import glob +from distutils.core import Command +from distutils import dir_util, dep_util, file_util, archive_util +from distutils.text_file import TextFile +from distutils.errors import * +from distutils.filelist import FileList +from distutils import log + + +def show_formats (): + """Print all possible values for the 'formats' option (used by + the "--help-formats" command-line option). + """ + from distutils.fancy_getopt import FancyGetopt + from distutils.archive_util import ARCHIVE_FORMATS + formats=[] + for format in ARCHIVE_FORMATS.keys(): + formats.append(("formats=" + format, None, + ARCHIVE_FORMATS[format][2])) + formats.sort() + pretty_printer = FancyGetopt(formats) + pretty_printer.print_help( + "List of available source distribution formats:") + +class sdist (Command): + + description = "create a source distribution (tarball, zip file, etc.)" + + user_options = [ + ('template=', 't', + "name of manifest template file [default: MANIFEST.in]"), + ('manifest=', 'm', + "name of manifest file [default: MANIFEST]"), + ('use-defaults', None, + "include the default file set in the manifest " + "[default; disable with --no-defaults]"), + ('no-defaults', None, + "don't include the default file set"), + ('prune', None, + "specifically exclude files/directories that should not be " + "distributed (build tree, RCS/CVS dirs, etc.) " + "[default; disable with --no-prune]"), + ('no-prune', None, + "don't automatically exclude anything"), + ('manifest-only', 'o', + "just regenerate the manifest and then stop " + "(implies --force-manifest)"), + ('force-manifest', 'f', + "forcibly regenerate the manifest and carry on as usual"), + ('formats=', None, + "formats for source distribution (comma-separated list)"), + ('keep-temp', 'k', + "keep the distribution tree around after creating " + + "archive file(s)"), + ('dist-dir=', 'd', + "directory to put the source distribution archive(s) in " + "[default: dist]"), + ] + + boolean_options = ['use-defaults', 'prune', + 'manifest-only', 'force-manifest', + 'keep-temp'] + + help_options = [ + ('help-formats', None, + "list available distribution formats", show_formats), + ] + + negative_opt = {'no-defaults': 'use-defaults', + 'no-prune': 'prune' } + + default_format = { 'posix': 'gztar', + 'nt': 'zip' } + + def initialize_options (self): + # 'template' and 'manifest' are, respectively, the names of + # the manifest template and manifest file. + self.template = None + self.manifest = None + + # 'use_defaults': if true, we will include the default file set + # in the manifest + self.use_defaults = 1 + self.prune = 1 + + self.manifest_only = 0 + self.force_manifest = 0 + + self.formats = None + self.keep_temp = 0 + self.dist_dir = None + + self.archive_files = None + + + def finalize_options (self): + if self.manifest is None: + self.manifest = "MANIFEST" + if self.template is None: + self.template = "MANIFEST.in" + + self.ensure_string_list('formats') + if self.formats is None: + try: + self.formats = [self.default_format[os.name]] + except KeyError: + raise DistutilsPlatformError, \ + "don't know how to create source distributions " + \ + "on platform %s" % os.name + + bad_format = archive_util.check_archive_formats(self.formats) + if bad_format: + raise DistutilsOptionError, \ + "unknown archive format '%s'" % bad_format + + if self.dist_dir is None: + self.dist_dir = "dist" + + + def run (self): + + # 'filelist' contains the list of files that will make up the + # manifest + self.filelist = FileList() + + # Ensure that all required meta-data is given; warn if not (but + # don't die, it's not *that* serious!) + self.check_metadata() + + # Do whatever it takes to get the list of files to process + # (process the manifest template, read an existing manifest, + # whatever). File list is accumulated in 'self.filelist'. + self.get_file_list() + + # If user just wanted us to regenerate the manifest, stop now. + if self.manifest_only: + return + + # Otherwise, go ahead and create the source distribution tarball, + # or zipfile, or whatever. + self.make_distribution() + + + def check_metadata (self): + """Ensure that all required elements of meta-data (name, version, + URL, (author and author_email) or (maintainer and + maintainer_email)) are supplied by the Distribution object; warn if + any are missing. + """ + metadata = self.distribution.metadata + + missing = [] + for attr in ('name', 'version', 'url'): + if not (hasattr(metadata, attr) and getattr(metadata, attr)): + missing.append(attr) + + if missing: + self.warn("missing required meta-data: " + + string.join(missing, ", ")) + + if metadata.author: + if not metadata.author_email: + self.warn("missing meta-data: if 'author' supplied, " + + "'author_email' must be supplied too") + elif metadata.maintainer: + if not metadata.maintainer_email: + self.warn("missing meta-data: if 'maintainer' supplied, " + + "'maintainer_email' must be supplied too") + else: + self.warn("missing meta-data: either (author and author_email) " + + "or (maintainer and maintainer_email) " + + "must be supplied") + + # check_metadata () + + + def get_file_list (self): + """Figure out the list of files to include in the source + distribution, and put it in 'self.filelist'. This might involve + reading the manifest template (and writing the manifest), or just + reading the manifest, or just using the default file set -- it all + depends on the user's options and the state of the filesystem. + """ + + # If we have a manifest template, see if it's newer than the + # manifest; if so, we'll regenerate the manifest. + template_exists = os.path.isfile(self.template) + if template_exists: + template_newer = dep_util.newer(self.template, self.manifest) + + # The contents of the manifest file almost certainly depend on the + # setup script as well as the manifest template -- so if the setup + # script is newer than the manifest, we'll regenerate the manifest + # from the template. (Well, not quite: if we already have a + # manifest, but there's no template -- which will happen if the + # developer elects to generate a manifest some other way -- then we + # can't regenerate the manifest, so we don't.) + self.debug_print("checking if %s newer than %s" % + (self.distribution.script_name, self.manifest)) + setup_newer = dep_util.newer(self.distribution.script_name, + self.manifest) + + # cases: + # 1) no manifest, template exists: generate manifest + # (covered by 2a: no manifest == template newer) + # 2) manifest & template exist: + # 2a) template or setup script newer than manifest: + # regenerate manifest + # 2b) manifest newer than both: + # do nothing (unless --force or --manifest-only) + # 3) manifest exists, no template: + # do nothing (unless --force or --manifest-only) + # 4) no manifest, no template: generate w/ warning ("defaults only") + + manifest_outofdate = (template_exists and + (template_newer or setup_newer)) + force_regen = self.force_manifest or self.manifest_only + manifest_exists = os.path.isfile(self.manifest) + neither_exists = (not template_exists and not manifest_exists) + + # Regenerate the manifest if necessary (or if explicitly told to) + if manifest_outofdate or neither_exists or force_regen: + if not template_exists: + self.warn(("manifest template '%s' does not exist " + + "(using default file list)") % + self.template) + self.filelist.findall() + + if self.use_defaults: + self.add_defaults() + if template_exists: + self.read_template() + if self.prune: + self.prune_file_list() + + self.filelist.sort() + self.filelist.remove_duplicates() + self.write_manifest() + + # Don't regenerate the manifest, just read it in. + else: + self.read_manifest() + + # get_file_list () + + + def add_defaults (self): + """Add all the default files to self.filelist: + - README or README.txt + - setup.py + - test/test*.py + - all pure Python modules mentioned in setup script + - all C sources listed as part of extensions or C libraries + in the setup script (doesn't catch C headers!) + Warns if (README or README.txt) or setup.py are missing; everything + else is optional. + """ + + standards = [('README', 'README.txt'), self.distribution.script_name] + for fn in standards: + if type(fn) is TupleType: + alts = fn + got_it = 0 + for fn in alts: + if os.path.exists(fn): + got_it = 1 + self.filelist.append(fn) + break + + if not got_it: + self.warn("standard file not found: should have one of " + + string.join(alts, ', ')) + else: + if os.path.exists(fn): + self.filelist.append(fn) + else: + self.warn("standard file '%s' not found" % fn) + + optional = ['test/test*.py', 'setup.cfg'] + for pattern in optional: + files = filter(os.path.isfile, glob(pattern)) + if files: + self.filelist.extend(files) + + if self.distribution.has_pure_modules(): + build_py = self.get_finalized_command('build_py') + self.filelist.extend(build_py.get_source_files()) + + if self.distribution.has_ext_modules(): + build_ext = self.get_finalized_command('build_ext') + self.filelist.extend(build_ext.get_source_files()) + + if self.distribution.has_c_libraries(): + build_clib = self.get_finalized_command('build_clib') + self.filelist.extend(build_clib.get_source_files()) + + # add_defaults () + + + def read_template (self): + """Read and parse manifest template file named by self.template. + + (usually "MANIFEST.in") The parsing and processing is done by + 'self.filelist', which updates itself accordingly. + """ + log.info("reading manifest template '%s'", self.template) + template = TextFile(self.template, + strip_comments=1, + skip_blanks=1, + join_lines=1, + lstrip_ws=1, + rstrip_ws=1, + collapse_join=1) + + while 1: + line = template.readline() + if line is None: # end of file + break + + try: + self.filelist.process_template_line(line) + except DistutilsTemplateError, msg: + self.warn("%s, line %d: %s" % (template.filename, + template.current_line, + msg)) + + # read_template () + + + def prune_file_list (self): + """Prune off branches that might slip into the file list as created + by 'read_template()', but really don't belong there: + * the build tree (typically "build") + * the release tree itself (only an issue if we ran "sdist" + previously with --keep-temp, or it aborted) + * any RCS or CVS directories + """ + build = self.get_finalized_command('build') + base_dir = self.distribution.get_fullname() + + self.filelist.exclude_pattern(None, prefix=build.build_base) + self.filelist.exclude_pattern(None, prefix=base_dir) + self.filelist.exclude_pattern(r'/(RCS|CVS)/.*', is_regex=1) + + + def write_manifest (self): + """Write the file list in 'self.filelist' (presumably as filled in + by 'add_defaults()' and 'read_template()') to the manifest file + named by 'self.manifest'. + """ + self.execute(file_util.write_file, + (self.manifest, self.filelist.files), + "writing manifest file '%s'" % self.manifest) + + # write_manifest () + + + def read_manifest (self): + """Read the manifest file (named by 'self.manifest') and use it to + fill in 'self.filelist', the list of files to include in the source + distribution. + """ + log.info("reading manifest file '%s'", self.manifest) + manifest = open(self.manifest) + while 1: + line = manifest.readline() + if line == '': # end of file + break + if line[-1] == '\n': + line = line[0:-1] + self.filelist.append(line) + + # read_manifest () + + + def make_release_tree (self, base_dir, files): + """Create the directory tree that will become the source + distribution archive. All directories implied by the filenames in + 'files' are created under 'base_dir', and then we hard link or copy + (if hard linking is unavailable) those files into place. + Essentially, this duplicates the developer's source tree, but in a + directory named after the distribution, containing only the files + to be distributed. + """ + # Create all the directories under 'base_dir' necessary to + # put 'files' there; the 'mkpath()' is just so we don't die + # if the manifest happens to be empty. + self.mkpath(base_dir) + dir_util.create_tree(base_dir, files, dry_run=self.dry_run) + + # And walk over the list of files, either making a hard link (if + # os.link exists) to each one that doesn't already exist in its + # corresponding location under 'base_dir', or copying each file + # that's out-of-date in 'base_dir'. (Usually, all files will be + # out-of-date, because by default we blow away 'base_dir' when + # we're done making the distribution archives.) + + if hasattr(os, 'link'): # can make hard links on this system + link = 'hard' + msg = "making hard links in %s..." % base_dir + else: # nope, have to copy + link = None + msg = "copying files to %s..." % base_dir + + if not files: + log.warn("no files to distribute -- empty manifest?") + else: + log.info(msg) + for file in files: + if not os.path.isfile(file): + log.warn("'%s' not a regular file -- skipping" % file) + else: + dest = os.path.join(base_dir, file) + self.copy_file(file, dest, link=link) + + self.distribution.metadata.write_pkg_info(base_dir) + + # make_release_tree () + + def make_distribution (self): + """Create the source distribution(s). First, we create the release + tree with 'make_release_tree()'; then, we create all required + archive files (according to 'self.formats') from the release tree. + Finally, we clean up by blowing away the release tree (unless + 'self.keep_temp' is true). The list of archive files created is + stored so it can be retrieved later by 'get_archive_files()'. + """ + # Don't warn about missing meta-data here -- should be (and is!) + # done elsewhere. + base_dir = self.distribution.get_fullname() + base_name = os.path.join(self.dist_dir, base_dir) + + self.make_release_tree(base_dir, self.filelist.files) + archive_files = [] # remember names of files we create + for fmt in self.formats: + file = self.make_archive(base_name, fmt, base_dir=base_dir) + archive_files.append(file) + + self.archive_files = archive_files + + if not self.keep_temp: + dir_util.remove_tree(base_dir, dry_run=self.dry_run) + + def get_archive_files (self): + """Return the list of archive files created when the command + was run, or None if the command hasn't run yet. + """ + return self.archive_files + +# class sdist diff --git a/wxPython/distutils/core.py b/wxPython/distutils/core.py new file mode 100644 index 0000000000..a463272c2f --- /dev/null +++ b/wxPython/distutils/core.py @@ -0,0 +1,241 @@ +"""distutils.core + +The only module that needs to be imported to use the Distutils; provides +the 'setup' function (which is to be called from the setup script). Also +indirectly provides the Distribution and Command classes, although they are +really defined in distutils.dist and distutils.cmd. +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os +from types import * + +from distutils.debug import DEBUG +from distutils.errors import * +from distutils.util import grok_environment_error + +# Mainly import these so setup scripts can "from distutils.core import" them. +from distutils.dist import Distribution +from distutils.cmd import Command +from distutils.extension import Extension + +# This is a barebones help message generated displayed when the user +# runs the setup script with no arguments at all. More useful help +# is generated with various --help options: global help, list commands, +# and per-command help. +USAGE = """\ +usage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] + or: %(script)s --help [cmd1 cmd2 ...] + or: %(script)s --help-commands + or: %(script)s cmd --help +""" + +def gen_usage (script_name): + script = os.path.basename(script_name) + return USAGE % vars() + + +# Some mild magic to control the behaviour of 'setup()' from 'run_setup()'. +_setup_stop_after = None +_setup_distribution = None + +# Legal keyword arguments for the setup() function +setup_keywords = ('distclass', 'script_name', 'script_args', 'options', + 'name', 'version', 'author', 'author_email', + 'maintainer', 'maintainer_email', 'url', 'license', + 'description', 'long_description', 'keywords', + 'platforms', 'classifiers', 'download_url') + +# Legal keyword arguments for the Extension constructor +extension_keywords = ('name', 'sources', 'include_dirs', + 'define_macros', 'undef_macros', + 'library_dirs', 'libraries', 'runtime_library_dirs', + 'extra_objects', 'extra_compile_args', 'extra_link_args', + 'export_symbols', 'depends', 'language') + +def setup (**attrs): + """The gateway to the Distutils: do everything your setup script needs + to do, in a highly flexible and user-driven way. Briefly: create a + Distribution instance; find and parse config files; parse the command + line; run each Distutils command found there, customized by the options + supplied to 'setup()' (as keyword arguments), in config files, and on + the command line. + + The Distribution instance might be an instance of a class supplied via + the 'distclass' keyword argument to 'setup'; if no such class is + supplied, then the Distribution class (in dist.py) is instantiated. + All other arguments to 'setup' (except for 'cmdclass') are used to set + attributes of the Distribution instance. + + The 'cmdclass' argument, if supplied, is a dictionary mapping command + names to command classes. Each command encountered on the command line + will be turned into a command class, which is in turn instantiated; any + class found in 'cmdclass' is used in place of the default, which is + (for command 'foo_bar') class 'foo_bar' in module + 'distutils.command.foo_bar'. The command class must provide a + 'user_options' attribute which is a list of option specifiers for + 'distutils.fancy_getopt'. Any command-line options between the current + and the next command are used to set attributes of the current command + object. + + When the entire command-line has been successfully parsed, calls the + 'run()' method on each command object in turn. This method will be + driven entirely by the Distribution object (which each command object + has a reference to, thanks to its constructor), and the + command-specific options that became attributes of each command + object. + """ + + global _setup_stop_after, _setup_distribution + + # Determine the distribution class -- either caller-supplied or + # our Distribution (see below). + klass = attrs.get('distclass') + if klass: + del attrs['distclass'] + else: + klass = Distribution + + if not attrs.has_key('script_name'): + attrs['script_name'] = os.path.basename(sys.argv[0]) + if not attrs.has_key('script_args'): + attrs['script_args'] = sys.argv[1:] + + # Create the Distribution instance, using the remaining arguments + # (ie. everything except distclass) to initialize it + try: + _setup_distribution = dist = klass(attrs) + except DistutilsSetupError, msg: + if attrs.has_key('name'): + raise SystemExit, "error in %s setup command: %s" % \ + (attrs['name'], msg) + else: + raise SystemExit, "error in setup command: %s" % msg + + if _setup_stop_after == "init": + return dist + + # Find and parse the config file(s): they will override options from + # the setup script, but be overridden by the command line. + dist.parse_config_files() + + if DEBUG: + print "options (after parsing config files):" + dist.dump_option_dicts() + + if _setup_stop_after == "config": + return dist + + # Parse the command line; any command-line errors are the end user's + # fault, so turn them into SystemExit to suppress tracebacks. + try: + ok = dist.parse_command_line() + except DistutilsArgError, msg: + raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg + + if DEBUG: + print "options (after parsing command line):" + dist.dump_option_dicts() + + if _setup_stop_after == "commandline": + return dist + + # And finally, run all the commands found on the command line. + if ok: + try: + dist.run_commands() + except KeyboardInterrupt: + raise SystemExit, "interrupted" + except (IOError, os.error), exc: + error = grok_environment_error(exc) + + if DEBUG: + sys.stderr.write(error + "\n") + raise + else: + raise SystemExit, error + + except (DistutilsError, + CCompilerError), msg: + if DEBUG: + raise + else: + raise SystemExit, "error: " + str(msg) + + return dist + +# setup () + + +def run_setup (script_name, script_args=None, stop_after="run"): + """Run a setup script in a somewhat controlled environment, and + return the Distribution instance that drives things. This is useful + if you need to find out the distribution meta-data (passed as + keyword args from 'script' to 'setup()', or the contents of the + config files or command-line. + + 'script_name' is a file that will be run with 'execfile()'; + 'sys.argv[0]' will be replaced with 'script' for the duration of the + call. 'script_args' is a list of strings; if supplied, + 'sys.argv[1:]' will be replaced by 'script_args' for the duration of + the call. + + 'stop_after' tells 'setup()' when to stop processing; possible + values: + init + stop after the Distribution instance has been created and + populated with the keyword arguments to 'setup()' + config + stop after config files have been parsed (and their data + stored in the Distribution instance) + commandline + stop after the command-line ('sys.argv[1:]' or 'script_args') + have been parsed (and the data stored in the Distribution) + run [default] + stop after all commands have been run (the same as if 'setup()' + had been called in the usual way + + Returns the Distribution instance, which provides all information + used to drive the Distutils. + """ + if stop_after not in ('init', 'config', 'commandline', 'run'): + raise ValueError, "invalid value for 'stop_after': %s" % `stop_after` + + global _setup_stop_after, _setup_distribution + _setup_stop_after = stop_after + + save_argv = sys.argv + g = {} + l = {} + try: + try: + sys.argv[0] = script_name + if script_args is not None: + sys.argv[1:] = script_args + execfile(script_name, g, l) + finally: + sys.argv = save_argv + _setup_stop_after = None + except SystemExit: + # Hmm, should we do something if exiting with a non-zero code + # (ie. error)? + pass + except: + raise + + if _setup_distribution is None: + raise RuntimeError, \ + ("'distutils.core.setup()' was never called -- " + "perhaps '%s' is not a Distutils setup script?") % \ + script_name + + # I wonder if the setup script's namespace -- g and l -- would be of + # any interest to callers? + #print "_setup_distribution:", _setup_distribution + return _setup_distribution + +# run_setup () + diff --git a/wxPython/distutils/cygwinccompiler.py b/wxPython/distutils/cygwinccompiler.py new file mode 100644 index 0000000000..18af388c3c --- /dev/null +++ b/wxPython/distutils/cygwinccompiler.py @@ -0,0 +1,397 @@ +"""distutils.cygwinccompiler + +Provides the CygwinCCompiler class, a subclass of UnixCCompiler that +handles the Cygwin port of the GNU C compiler to Windows. It also contains +the Mingw32CCompiler class which handles the mingw32 port of GCC (same as +cygwin in no-cygwin mode). +""" + +# problems: +# +# * if you use a msvc compiled python version (1.5.2) +# 1. you have to insert a __GNUC__ section in its config.h +# 2. you have to generate a import library for its dll +# - create a def-file for python??.dll +# - create a import library using +# dlltool --dllname python15.dll --def python15.def \ +# --output-lib libpython15.a +# +# see also http://starship.python.net/crew/kernr/mingw32/Notes.html +# +# * We put export_symbols in a def-file, and don't use +# --export-all-symbols because it doesn't worked reliable in some +# tested configurations. And because other windows compilers also +# need their symbols specified this no serious problem. +# +# tested configurations: +# +# * cygwin gcc 2.91.57/ld 2.9.4/dllwrap 0.2.4 works +# (after patching python's config.h and for C++ some other include files) +# see also http://starship.python.net/crew/kernr/mingw32/Notes.html +# * mingw32 gcc 2.95.2/ld 2.9.4/dllwrap 0.2.4 works +# (ld doesn't support -shared, so we use dllwrap) +# * cygwin gcc 2.95.2/ld 2.10.90/dllwrap 2.10.90 works now +# - its dllwrap doesn't work, there is a bug in binutils 2.10.90 +# see also http://sources.redhat.com/ml/cygwin/2000-06/msg01274.html +# - using gcc -mdll instead dllwrap doesn't work without -static because +# it tries to link against dlls instead their import libraries. (If +# it finds the dll first.) +# By specifying -static we force ld to link against the import libraries, +# this is windows standard and there are normally not the necessary symbols +# in the dlls. +# *** only the version of June 2000 shows these problems + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os,sys,copy +from distutils.ccompiler import gen_preprocess_options, gen_lib_options +from distutils.unixccompiler import UnixCCompiler +from distutils.file_util import write_file +from distutils.errors import DistutilsExecError, CompileError, UnknownFileError +from distutils import log + +class CygwinCCompiler (UnixCCompiler): + + compiler_type = 'cygwin' + obj_extension = ".o" + static_lib_extension = ".a" + shared_lib_extension = ".dll" + static_lib_format = "lib%s%s" + shared_lib_format = "%s%s" + exe_extension = ".exe" + + def __init__ (self, verbose=0, dry_run=0, force=0): + + UnixCCompiler.__init__ (self, verbose, dry_run, force) + + (status, details) = check_config_h() + self.debug_print("Python's GCC status: %s (details: %s)" % + (status, details)) + if status is not CONFIG_H_OK: + self.warn( + "Python's pyconfig.h doesn't seem to support your compiler. " + "Reason: %s. " + "Compiling may fail because of undefined preprocessor macros." + % details) + + self.gcc_version, self.ld_version, self.dllwrap_version = \ + get_versions() + self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" % + (self.gcc_version, + self.ld_version, + self.dllwrap_version) ) + + # ld_version >= "2.10.90" should also be able to use + # gcc -mdll instead of dllwrap + # Older dllwraps had own version numbers, newer ones use the + # same as the rest of binutils ( also ld ) + # dllwrap 2.10.90 is buggy + if self.ld_version >= "2.10.90": + self.linker_dll = "gcc" + else: + self.linker_dll = "dllwrap" + + # Hard-code GCC because that's what this is all about. + # XXX optimization, warnings etc. should be customizable. + self.set_executables(compiler='gcc -mcygwin -O -Wall', + compiler_so='gcc -mcygwin -mdll -O -Wall', + linker_exe='gcc -mcygwin', + linker_so=('%s -mcygwin -mdll -static' % + self.linker_dll)) + + # cygwin and mingw32 need different sets of libraries + if self.gcc_version == "2.91.57": + # cygwin shouldn't need msvcrt, but without the dlls will crash + # (gcc version 2.91.57) -- perhaps something about initialization + self.dll_libraries=["msvcrt"] + self.warn( + "Consider upgrading to a newer version of gcc") + else: + self.dll_libraries=[] + + # __init__ () + + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + if ext == '.rc' or ext == '.res': + # gcc needs '.res' and '.rc' compiled to object files !!! + try: + self.spawn(["windres", "-i", src, "-o", obj]) + except DistutilsExecError, msg: + raise CompileError, msg + else: # for other files use the C-compiler + try: + self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + + extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + + def link (self, + target_desc, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + + # use separate copies, so we can modify the lists + extra_preargs = copy.copy(extra_preargs or []) + libraries = copy.copy(libraries or []) + objects = copy.copy(objects or []) + + # Additional libraries + libraries.extend(self.dll_libraries) + + # handle export symbols by creating a def-file + # with executables this only works with gcc/ld as linker + if ((export_symbols is not None) and + (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): + # (The linker doesn't do anything if output is up-to-date. + # So it would probably better to check if we really need this, + # but for this we had to insert some unchanged parts of + # UnixCCompiler, and this is not what we want.) + + # we want to put some files in the same directory as the + # object files are, build_temp doesn't help much + # where are the object files + temp_dir = os.path.dirname(objects[0]) + # name of dll to give the helper files the same base name + (dll_name, dll_extension) = os.path.splitext( + os.path.basename(output_filename)) + + # generate the filenames for these files + def_file = os.path.join(temp_dir, dll_name + ".def") + lib_file = os.path.join(temp_dir, 'lib' + dll_name + ".a") + + # Generate .def file + contents = [ + "LIBRARY %s" % os.path.basename(output_filename), + "EXPORTS"] + for sym in export_symbols: + contents.append(sym) + self.execute(write_file, (def_file, contents), + "writing %s" % def_file) + + # next add options for def-file and to creating import libraries + + # dllwrap uses different options than gcc/ld + if self.linker_dll == "dllwrap": + extra_preargs.extend(["--output-lib", lib_file]) + # for dllwrap we have to use a special option + extra_preargs.extend(["--def", def_file]) + # we use gcc/ld here and can be sure ld is >= 2.9.10 + else: + # doesn't work: bfd_close build\...\libfoo.a: Invalid operation + #extra_preargs.extend(["-Wl,--out-implib,%s" % lib_file]) + # for gcc/ld the def-file is specified as any object files + objects.append(def_file) + + #end: if ((export_symbols is not None) and + # (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): + + # who wants symbols and a many times larger output file + # should explicitly switch the debug mode on + # otherwise we let dllwrap/ld strip the output file + # (On my machine: 10KB < stripped_file < ??100KB + # unstripped_file = stripped_file + XXX KB + # ( XXX=254 for a typical python extension)) + if not debug: + extra_preargs.append("-s") + + UnixCCompiler.link(self, + target_desc, + objects, + output_filename, + output_dir, + libraries, + library_dirs, + runtime_library_dirs, + None, # export_symbols, we do this in our def-file + debug, + extra_preargs, + extra_postargs, + build_temp, + target_lang) + + # link () + + # -- Miscellaneous methods ----------------------------------------- + + # overwrite the one from CCompiler to support rc and res-files + def object_filenames (self, + source_filenames, + strip_dir=0, + output_dir=''): + if output_dir is None: output_dir = '' + obj_names = [] + for src_name in source_filenames: + # use normcase to make sure '.rc' is really '.rc' and not '.RC' + (base, ext) = os.path.splitext (os.path.normcase(src_name)) + if ext not in (self.src_extensions + ['.rc','.res']): + raise UnknownFileError, \ + "unknown file type '%s' (from '%s')" % \ + (ext, src_name) + if strip_dir: + base = os.path.basename (base) + if ext == '.res' or ext == '.rc': + # these need to be compiled to object files + obj_names.append (os.path.join (output_dir, + base + ext + self.obj_extension)) + else: + obj_names.append (os.path.join (output_dir, + base + self.obj_extension)) + return obj_names + + # object_filenames () + +# class CygwinCCompiler + + +# the same as cygwin plus some additional parameters +class Mingw32CCompiler (CygwinCCompiler): + + compiler_type = 'mingw32' + + def __init__ (self, + verbose=0, + dry_run=0, + force=0): + + CygwinCCompiler.__init__ (self, verbose, dry_run, force) + + # A real mingw32 doesn't need to specify a different entry point, + # but cygwin 2.91.57 in no-cygwin-mode needs it. + if self.gcc_version <= "2.91.57": + entry_point = '--entry _DllMain@12' + else: + entry_point = '' + + self.set_executables(compiler='gcc -mno-cygwin -O -Wall', + compiler_so='gcc -mno-cygwin -mdll -O -Wall', + linker_exe='gcc -mno-cygwin', + linker_so='%s -mno-cygwin -mdll -static %s' + % (self.linker_dll, entry_point)) + # Maybe we should also append -mthreads, but then the finished + # dlls need another dll (mingwm10.dll see Mingw32 docs) + # (-mthreads: Support thread-safe exception handling on `Mingw32') + + # no additional libraries needed + self.dll_libraries=[] + + # __init__ () + +# class Mingw32CCompiler + +# Because these compilers aren't configured in Python's pyconfig.h file by +# default, we should at least warn the user if he is using a unmodified +# version. + +CONFIG_H_OK = "ok" +CONFIG_H_NOTOK = "not ok" +CONFIG_H_UNCERTAIN = "uncertain" + +def check_config_h(): + + """Check if the current Python installation (specifically, pyconfig.h) + appears amenable to building extensions with GCC. Returns a tuple + (status, details), where 'status' is one of the following constants: + CONFIG_H_OK + all is well, go ahead and compile + CONFIG_H_NOTOK + doesn't look good + CONFIG_H_UNCERTAIN + not sure -- unable to read pyconfig.h + 'details' is a human-readable string explaining the situation. + + Note there are two ways to conclude "OK": either 'sys.version' contains + the string "GCC" (implying that this Python was built with GCC), or the + installed "pyconfig.h" contains the string "__GNUC__". + """ + + # XXX since this function also checks sys.version, it's not strictly a + # "pyconfig.h" check -- should probably be renamed... + + from distutils import sysconfig + import string + # if sys.version contains GCC then python was compiled with + # GCC, and the pyconfig.h file should be OK + if string.find(sys.version,"GCC") >= 0: + return (CONFIG_H_OK, "sys.version mentions 'GCC'") + + fn = sysconfig.get_config_h_filename() + try: + # It would probably better to read single lines to search. + # But we do this only once, and it is fast enough + f = open(fn) + s = f.read() + f.close() + + except IOError, exc: + # if we can't read this file, we cannot say it is wrong + # the compiler will complain later about this file as missing + return (CONFIG_H_UNCERTAIN, + "couldn't read '%s': %s" % (fn, exc.strerror)) + + else: + # "pyconfig.h" contains an "#ifdef __GNUC__" or something similar + if string.find(s,"__GNUC__") >= 0: + return (CONFIG_H_OK, "'%s' mentions '__GNUC__'" % fn) + else: + return (CONFIG_H_NOTOK, "'%s' does not mention '__GNUC__'" % fn) + + + +def get_versions(): + """ Try to find out the versions of gcc, ld and dllwrap. + If not possible it returns None for it. + """ + from distutils.version import StrictVersion + from distutils.spawn import find_executable + import re + + gcc_exe = find_executable('gcc') + if gcc_exe: + out = os.popen(gcc_exe + ' -dumpversion','r') + out_string = out.read() + out.close() + result = re.search('(\d+\.\d+\.\d+)',out_string) + if result: + gcc_version = StrictVersion(result.group(1)) + else: + gcc_version = None + else: + gcc_version = None + ld_exe = find_executable('ld') + if ld_exe: + out = os.popen(ld_exe + ' -v','r') + out_string = out.read() + out.close() + result = re.search('(\d+\.\d+\.\d+)',out_string) + if result: + ld_version = StrictVersion(result.group(1)) + else: + ld_version = None + else: + ld_version = None + dllwrap_exe = find_executable('dllwrap') + if dllwrap_exe: + out = os.popen(dllwrap_exe + ' --version','r') + out_string = out.read() + out.close() + result = re.search(' (\d+\.\d+\.\d+)',out_string) + if result: + dllwrap_version = StrictVersion(result.group(1)) + else: + dllwrap_version = None + else: + dllwrap_version = None + return (gcc_version, ld_version, dllwrap_version) diff --git a/wxPython/distutils/debug.py b/wxPython/distutils/debug.py new file mode 100644 index 0000000000..e195ebdcdf --- /dev/null +++ b/wxPython/distutils/debug.py @@ -0,0 +1,10 @@ +import os + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +# If DISTUTILS_DEBUG is anything other than the empty string, we run in +# debug mode. +DEBUG = os.environ.get('DISTUTILS_DEBUG') + diff --git a/wxPython/distutils/dep_util.py b/wxPython/distutils/dep_util.py new file mode 100644 index 0000000000..0746633d23 --- /dev/null +++ b/wxPython/distutils/dep_util.py @@ -0,0 +1,95 @@ +"""distutils.dep_util + +Utility functions for simple, timestamp-based dependency of files +and groups of files; also, function based entirely on such +timestamp dependency analysis.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.errors import DistutilsFileError + + +def newer (source, target): + """Return true if 'source' exists and is more recently modified than + 'target', or if 'source' exists and 'target' doesn't. Return false if + both exist and 'target' is the same age or younger than 'source'. + Raise DistutilsFileError if 'source' does not exist. + """ + if not os.path.exists(source): + raise DistutilsFileError, "file '%s' does not exist" % source + if not os.path.exists(target): + return 1 + + from stat import ST_MTIME + mtime1 = os.stat(source)[ST_MTIME] + mtime2 = os.stat(target)[ST_MTIME] + + return mtime1 > mtime2 + +# newer () + + +def newer_pairwise (sources, targets): + """Walk two filename lists in parallel, testing if each source is newer + than its corresponding target. Return a pair of lists (sources, + targets) where source is newer than target, according to the semantics + of 'newer()'. + """ + if len(sources) != len(targets): + raise ValueError, "'sources' and 'targets' must be same length" + + # build a pair of lists (sources, targets) where source is newer + n_sources = [] + n_targets = [] + for i in range(len(sources)): + if newer(sources[i], targets[i]): + n_sources.append(sources[i]) + n_targets.append(targets[i]) + + return (n_sources, n_targets) + +# newer_pairwise () + + +def newer_group (sources, target, missing='error'): + """Return true if 'target' is out-of-date with respect to any file + listed in 'sources'. In other words, if 'target' exists and is newer + than every file in 'sources', return false; otherwise return true. + 'missing' controls what we do when a source file is missing; the + default ("error") is to blow up with an OSError from inside 'stat()'; + if it is "ignore", we silently drop any missing source files; if it is + "newer", any missing source files make us assume that 'target' is + out-of-date (this is handy in "dry-run" mode: it'll make you pretend to + carry out commands that wouldn't work because inputs are missing, but + that doesn't matter because you're not actually going to run the + commands). + """ + # If the target doesn't even exist, then it's definitely out-of-date. + if not os.path.exists(target): + return 1 + + # Otherwise we have to find out the hard way: if *any* source file + # is more recent than 'target', then 'target' is out-of-date and + # we can immediately return true. If we fall through to the end + # of the loop, then 'target' is up-to-date and we return false. + from stat import ST_MTIME + target_mtime = os.stat(target)[ST_MTIME] + for source in sources: + if not os.path.exists(source): + if missing == 'error': # blow up when we stat() the file + pass + elif missing == 'ignore': # missing source dropped from + continue # target's dependency list + elif missing == 'newer': # missing source means target is + return 1 # out-of-date + + source_mtime = os.stat(source)[ST_MTIME] + if source_mtime > target_mtime: + return 1 + else: + return 0 + +# newer_group () diff --git a/wxPython/distutils/dir_util.py b/wxPython/distutils/dir_util.py new file mode 100644 index 0000000000..bd1ea0f243 --- /dev/null +++ b/wxPython/distutils/dir_util.py @@ -0,0 +1,228 @@ +"""distutils.dir_util + +Utility functions for manipulating directories and directory trees.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os, sys +from types import * +from distutils.errors import DistutilsFileError, DistutilsInternalError +from distutils import log + +# cache for by mkpath() -- in addition to cheapening redundant calls, +# eliminates redundant "creating /foo/bar/baz" messages in dry-run mode +_path_created = {} + +# I don't use os.makedirs because a) it's new to Python 1.5.2, and +# b) it blows up if the directory already exists (I want to silently +# succeed in that case). +def mkpath (name, mode=0777, verbose=0, dry_run=0): + """Create a directory and any missing ancestor directories. If the + directory already exists (or if 'name' is the empty string, which + means the current directory, which of course exists), then do + nothing. Raise DistutilsFileError if unable to create some + directory along the way (eg. some sub-path exists, but is a file + rather than a directory). If 'verbose' is true, print a one-line + summary of each mkdir to stdout. Return the list of directories + actually created.""" + + global _path_created + + # Detect a common bug -- name is None + if type(name) is not StringType: + raise DistutilsInternalError, \ + "mkpath: 'name' must be a string (got %s)" % `name` + + # XXX what's the better way to handle verbosity? print as we create + # each directory in the path (the current behaviour), or only announce + # the creation of the whole path? (quite easy to do the latter since + # we're not using a recursive algorithm) + + name = os.path.normpath(name) + created_dirs = [] + if os.path.isdir(name) or name == '': + return created_dirs + if _path_created.get(os.path.abspath(name)): + return created_dirs + + (head, tail) = os.path.split(name) + tails = [tail] # stack of lone dirs to create + + while head and tail and not os.path.isdir(head): + #print "splitting '%s': " % head, + (head, tail) = os.path.split(head) + #print "to ('%s','%s')" % (head, tail) + tails.insert(0, tail) # push next higher dir onto stack + + #print "stack of tails:", tails + + # now 'head' contains the deepest directory that already exists + # (that is, the child of 'head' in 'name' is the highest directory + # that does *not* exist) + for d in tails: + #print "head = %s, d = %s: " % (head, d), + head = os.path.join(head, d) + abs_head = os.path.abspath(head) + + if _path_created.get(abs_head): + continue + + log.info("creating %s", head) + + if not dry_run: + try: + os.mkdir(head) + created_dirs.append(head) + except OSError, exc: + raise DistutilsFileError, \ + "could not create '%s': %s" % (head, exc[-1]) + + _path_created[abs_head] = 1 + return created_dirs + +# mkpath () + + +def create_tree (base_dir, files, mode=0777, verbose=0, dry_run=0): + + """Create all the empty directories under 'base_dir' needed to + put 'files' there. 'base_dir' is just the a name of a directory + which doesn't necessarily exist yet; 'files' is a list of filenames + to be interpreted relative to 'base_dir'. 'base_dir' + the + directory portion of every file in 'files' will be created if it + doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as + for 'mkpath()'.""" + + # First get the list of directories to create + need_dir = {} + for file in files: + need_dir[os.path.join(base_dir, os.path.dirname(file))] = 1 + need_dirs = need_dir.keys() + need_dirs.sort() + + # Now create them + for dir in need_dirs: + mkpath(dir, mode, dry_run=dry_run) + +# create_tree () + + +def copy_tree (src, dst, + preserve_mode=1, + preserve_times=1, + preserve_symlinks=0, + update=0, + verbose=0, + dry_run=0): + + """Copy an entire directory tree 'src' to a new location 'dst'. Both + 'src' and 'dst' must be directory names. If 'src' is not a + directory, raise DistutilsFileError. If 'dst' does not exist, it is + created with 'mkpath()'. The end result of the copy is that every + file in 'src' is copied to 'dst', and directories under 'src' are + recursively copied to 'dst'. Return the list of files that were + copied or might have been copied, using their output name. The + return value is unaffected by 'update' or 'dry_run': it is simply + the list of all files under 'src', with the names changed to be + under 'dst'. + + 'preserve_mode' and 'preserve_times' are the same as for + 'copy_file'; note that they only apply to regular files, not to + directories. If 'preserve_symlinks' is true, symlinks will be + copied as symlinks (on platforms that support them!); otherwise + (the default), the destination of the symlink will be copied. + 'update' and 'verbose' are the same as for 'copy_file'.""" + + from distutils.file_util import copy_file + + if not dry_run and not os.path.isdir(src): + raise DistutilsFileError, \ + "cannot copy tree '%s': not a directory" % src + try: + names = os.listdir(src) + except os.error, (errno, errstr): + if dry_run: + names = [] + else: + raise DistutilsFileError, \ + "error listing files in '%s': %s" % (src, errstr) + + if not dry_run: + mkpath(dst) + + outputs = [] + + for n in names: + src_name = os.path.join(src, n) + dst_name = os.path.join(dst, n) + + if preserve_symlinks and os.path.islink(src_name): + link_dest = os.readlink(src_name) + log.info("linking %s -> %s", dst_name, link_dest) + if not dry_run: + os.symlink(link_dest, dst_name) + outputs.append(dst_name) + + elif os.path.isdir(src_name): + outputs.extend( + copy_tree(src_name, dst_name, preserve_mode, + preserve_times, preserve_symlinks, update, + dry_run=dry_run)) + else: + copy_file(src_name, dst_name, preserve_mode, + preserve_times, update, dry_run=dry_run) + outputs.append(dst_name) + + return outputs + +# copy_tree () + +# Helper for remove_tree() +def _build_cmdtuple(path, cmdtuples): + for f in os.listdir(path): + real_f = os.path.join(path,f) + if os.path.isdir(real_f) and not os.path.islink(real_f): + _build_cmdtuple(real_f, cmdtuples) + else: + cmdtuples.append((os.remove, real_f)) + cmdtuples.append((os.rmdir, path)) + + +def remove_tree (directory, verbose=0, dry_run=0): + """Recursively remove an entire directory tree. Any errors are ignored + (apart from being reported to stdout if 'verbose' is true). + """ + from distutils.util import grok_environment_error + global _path_created + + log.info("removing '%s' (and everything under it)", directory) + if dry_run: + return + cmdtuples = [] + _build_cmdtuple(directory, cmdtuples) + for cmd in cmdtuples: + try: + apply(cmd[0], (cmd[1],)) + # remove dir from cache if it's already there + abspath = os.path.abspath(cmd[1]) + if _path_created.has_key(abspath): + del _path_created[abspath] + except (IOError, OSError), exc: + log.warn(grok_environment_error( + exc, "error removing %s: " % directory)) + + +def ensure_relative (path): + """Take the full path 'path', and make it a relative path so + it can be the second argument to os.path.join(). + """ + drive, path = os.path.splitdrive(path) + if sys.platform == 'mac': + return os.sep + path + else: + if path[0:1] == os.sep: + path = drive + path[1:] + return path + diff --git a/wxPython/distutils/dist.py b/wxPython/distutils/dist.py new file mode 100644 index 0000000000..08e2a4f7d8 --- /dev/null +++ b/wxPython/distutils/dist.py @@ -0,0 +1,1095 @@ +"""distutils.dist + +Provides the Distribution class, which represents the module distribution +being built/installed/distributed. +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string, re +from types import * +from copy import copy + +try: + import warnings +except ImportError: + warnings = None + +from distutils.errors import * +from distutils.fancy_getopt import FancyGetopt, translate_longopt +from distutils.util import check_environ, strtobool, rfc822_escape +from distutils import log +from distutils.debug import DEBUG + +# Regex to define acceptable Distutils command names. This is not *quite* +# the same as a Python NAME -- I don't allow leading underscores. The fact +# that they're very similar is no coincidence; the default naming scheme is +# to look for a Python module named after the command. +command_re = re.compile (r'^[a-zA-Z]([a-zA-Z0-9_]*)$') + + +class Distribution: + """The core of the Distutils. Most of the work hiding behind 'setup' + is really done within a Distribution instance, which farms the work out + to the Distutils commands specified on the command line. + + Setup scripts will almost never instantiate Distribution directly, + unless the 'setup()' function is totally inadequate to their needs. + However, it is conceivable that a setup script might wish to subclass + Distribution for some specialized purpose, and then pass the subclass + to 'setup()' as the 'distclass' keyword argument. If so, it is + necessary to respect the expectations that 'setup' has of Distribution. + See the code for 'setup()', in core.py, for details. + """ + + + # 'global_options' describes the command-line options that may be + # supplied to the setup script prior to any actual commands. + # Eg. "./setup.py -n" or "./setup.py --quiet" both take advantage of + # these global options. This list should be kept to a bare minimum, + # since every global option is also valid as a command option -- and we + # don't want to pollute the commands with too many options that they + # have minimal control over. + # The fourth entry for verbose means that it can be repeated. + global_options = [('verbose', 'v', "run verbosely (default)", 1), + ('quiet', 'q', "run quietly (turns verbosity off)"), + ('dry-run', 'n', "don't actually do anything"), + ('help', 'h', "show detailed help message"), + ] + + # options that are not propagated to the commands + display_options = [ + ('help-commands', None, + "list all available commands"), + ('name', None, + "print package name"), + ('version', 'V', + "print package version"), + ('fullname', None, + "print <package name>-<version>"), + ('author', None, + "print the author's name"), + ('author-email', None, + "print the author's email address"), + ('maintainer', None, + "print the maintainer's name"), + ('maintainer-email', None, + "print the maintainer's email address"), + ('contact', None, + "print the maintainer's name if known, else the author's"), + ('contact-email', None, + "print the maintainer's email address if known, else the author's"), + ('url', None, + "print the URL for this package"), + ('license', None, + "print the license of the package"), + ('licence', None, + "alias for --license"), + ('description', None, + "print the package description"), + ('long-description', None, + "print the long package description"), + ('platforms', None, + "print the list of platforms"), + ('classifiers', None, + "print the list of classifiers"), + ('keywords', None, + "print the list of keywords"), + ] + display_option_names = map(lambda x: translate_longopt(x[0]), + display_options) + + # negative options are options that exclude other options + negative_opt = {'quiet': 'verbose'} + + + # -- Creation/initialization methods ------------------------------- + + def __init__ (self, attrs=None): + """Construct a new Distribution instance: initialize all the + attributes of a Distribution, and then use 'attrs' (a dictionary + mapping attribute names to values) to assign some of those + attributes their "real" values. (Any attributes not mentioned in + 'attrs' will be assigned to some null value: 0, None, an empty list + or dictionary, etc.) Most importantly, initialize the + 'command_obj' attribute to the empty dictionary; this will be + filled in with real command objects by 'parse_command_line()'. + """ + + # Default values for our command-line options + self.verbose = 1 + self.dry_run = 0 + self.help = 0 + for attr in self.display_option_names: + setattr(self, attr, 0) + + # Store the distribution meta-data (name, version, author, and so + # forth) in a separate object -- we're getting to have enough + # information here (and enough command-line options) that it's + # worth it. Also delegate 'get_XXX()' methods to the 'metadata' + # object in a sneaky and underhanded (but efficient!) way. + self.metadata = DistributionMetadata() + for basename in self.metadata._METHOD_BASENAMES: + method_name = "get_" + basename + setattr(self, method_name, getattr(self.metadata, method_name)) + + # 'cmdclass' maps command names to class objects, so we + # can 1) quickly figure out which class to instantiate when + # we need to create a new command object, and 2) have a way + # for the setup script to override command classes + self.cmdclass = {} + + # 'script_name' and 'script_args' are usually set to sys.argv[0] + # and sys.argv[1:], but they can be overridden when the caller is + # not necessarily a setup script run from the command-line. + self.script_name = None + self.script_args = None + + # 'command_options' is where we store command options between + # parsing them (from config files, the command-line, etc.) and when + # they are actually needed -- ie. when the command in question is + # instantiated. It is a dictionary of dictionaries of 2-tuples: + # command_options = { command_name : { option : (source, value) } } + self.command_options = {} + + # These options are really the business of various commands, rather + # than of the Distribution itself. We provide aliases for them in + # Distribution as a convenience to the developer. + self.packages = None + self.package_dir = None + self.py_modules = None + self.libraries = None + self.headers = None + self.ext_modules = None + self.ext_package = None + self.include_dirs = None + self.extra_path = None + self.scripts = None + self.data_files = None + + # And now initialize bookkeeping stuff that can't be supplied by + # the caller at all. 'command_obj' maps command names to + # Command instances -- that's how we enforce that every command + # class is a singleton. + self.command_obj = {} + + # 'have_run' maps command names to boolean values; it keeps track + # of whether we have actually run a particular command, to make it + # cheap to "run" a command whenever we think we might need to -- if + # it's already been done, no need for expensive filesystem + # operations, we just check the 'have_run' dictionary and carry on. + # It's only safe to query 'have_run' for a command class that has + # been instantiated -- a false value will be inserted when the + # command object is created, and replaced with a true value when + # the command is successfully run. Thus it's probably best to use + # '.get()' rather than a straight lookup. + self.have_run = {} + + # Now we'll use the attrs dictionary (ultimately, keyword args from + # the setup script) to possibly override any or all of these + # distribution options. + + if attrs: + + # Pull out the set of command options and work on them + # specifically. Note that this order guarantees that aliased + # command options will override any supplied redundantly + # through the general options dictionary. + options = attrs.get('options') + if options: + del attrs['options'] + for (command, cmd_options) in options.items(): + opt_dict = self.get_option_dict(command) + for (opt, val) in cmd_options.items(): + opt_dict[opt] = ("setup script", val) + + # Now work on the rest of the attributes. Any attribute that's + # not already defined is invalid! + for (key,val) in attrs.items(): + if hasattr(self.metadata, key): + setattr(self.metadata, key, val) + elif hasattr(self, key): + setattr(self, key, val) + else: + msg = "Unknown distribution option: %s" % repr(key) + if warnings is not None: + warnings.warn(msg) + else: + sys.stderr.write(msg + "\n") + + self.finalize_options() + + # __init__ () + + + def get_option_dict (self, command): + """Get the option dictionary for a given command. If that + command's option dictionary hasn't been created yet, then create it + and return the new dictionary; otherwise, return the existing + option dictionary. + """ + + dict = self.command_options.get(command) + if dict is None: + dict = self.command_options[command] = {} + return dict + + + def dump_option_dicts (self, header=None, commands=None, indent=""): + from pprint import pformat + + if commands is None: # dump all command option dicts + commands = self.command_options.keys() + commands.sort() + + if header is not None: + print indent + header + indent = indent + " " + + if not commands: + print indent + "no commands known yet" + return + + for cmd_name in commands: + opt_dict = self.command_options.get(cmd_name) + if opt_dict is None: + print indent + "no option dict for '%s' command" % cmd_name + else: + print indent + "option dict for '%s' command:" % cmd_name + out = pformat(opt_dict) + for line in string.split(out, "\n"): + print indent + " " + line + + # dump_option_dicts () + + + + # -- Config file finding/parsing methods --------------------------- + + def find_config_files (self): + """Find as many configuration files as should be processed for this + platform, and return a list of filenames in the order in which they + should be parsed. The filenames returned are guaranteed to exist + (modulo nasty race conditions). + + There are three possible config files: distutils.cfg in the + Distutils installation directory (ie. where the top-level + Distutils __inst__.py file lives), a file in the user's home + directory named .pydistutils.cfg on Unix and pydistutils.cfg + on Windows/Mac, and setup.cfg in the current directory. + """ + files = [] + check_environ() + + # Where to look for the system-wide Distutils config file + sys_dir = os.path.dirname(sys.modules['distutils'].__file__) + + # Look for the system config file + sys_file = os.path.join(sys_dir, "distutils.cfg") + if os.path.isfile(sys_file): + files.append(sys_file) + + # What to call the per-user config file + if os.name == 'posix': + user_filename = ".pydistutils.cfg" + else: + user_filename = "pydistutils.cfg" + + # And look for the user config file + if os.environ.has_key('HOME'): + user_file = os.path.join(os.environ.get('HOME'), user_filename) + if os.path.isfile(user_file): + files.append(user_file) + + # All platforms support local setup.cfg + local_file = "setup.cfg" + if os.path.isfile(local_file): + files.append(local_file) + + return files + + # find_config_files () + + + def parse_config_files (self, filenames=None): + + from ConfigParser import ConfigParser + + if filenames is None: + filenames = self.find_config_files() + + if DEBUG: print "Distribution.parse_config_files():" + + parser = ConfigParser() + for filename in filenames: + if DEBUG: print " reading", filename + parser.read(filename) + for section in parser.sections(): + options = parser.options(section) + opt_dict = self.get_option_dict(section) + + for opt in options: + if opt != '__name__': + val = parser.get(section,opt) + opt = string.replace(opt, '-', '_') + opt_dict[opt] = (filename, val) + + # Make the ConfigParser forget everything (so we retain + # the original filenames that options come from) -- gag, + # retch, puke -- another good reason for a distutils- + # specific config parser (sigh...) + parser.__init__() + + # If there was a "global" section in the config file, use it + # to set Distribution options. + + if self.command_options.has_key('global'): + for (opt, (src, val)) in self.command_options['global'].items(): + alias = self.negative_opt.get(opt) + try: + if alias: + setattr(self, alias, not strtobool(val)) + elif opt in ('verbose', 'dry_run'): # ugh! + setattr(self, opt, strtobool(val)) + except ValueError, msg: + raise DistutilsOptionError, msg + + # parse_config_files () + + + # -- Command-line parsing methods ---------------------------------- + + def parse_command_line (self): + """Parse the setup script's command line, taken from the + 'script_args' instance attribute (which defaults to 'sys.argv[1:]' + -- see 'setup()' in core.py). This list is first processed for + "global options" -- options that set attributes of the Distribution + instance. Then, it is alternately scanned for Distutils commands + and options for that command. Each new command terminates the + options for the previous command. The allowed options for a + command are determined by the 'user_options' attribute of the + command class -- thus, we have to be able to load command classes + in order to parse the command line. Any error in that 'options' + attribute raises DistutilsGetoptError; any error on the + command-line raises DistutilsArgError. If no Distutils commands + were found on the command line, raises DistutilsArgError. Return + true if command-line was successfully parsed and we should carry + on with executing commands; false if no errors but we shouldn't + execute commands (currently, this only happens if user asks for + help). + """ + # + # We now have enough information to show the Macintosh dialog + # that allows the user to interactively specify the "command line". + # + if sys.platform == 'mac': + import EasyDialogs + cmdlist = self.get_command_list() + self.script_args = EasyDialogs.GetArgv( + self.global_options + self.display_options, cmdlist) + + # We have to parse the command line a bit at a time -- global + # options, then the first command, then its options, and so on -- + # because each command will be handled by a different class, and + # the options that are valid for a particular class aren't known + # until we have loaded the command class, which doesn't happen + # until we know what the command is. + + self.commands = [] + parser = FancyGetopt(self.global_options + self.display_options) + parser.set_negative_aliases(self.negative_opt) + parser.set_aliases({'licence': 'license'}) + args = parser.getopt(args=self.script_args, object=self) + option_order = parser.get_option_order() + log.set_verbosity(self.verbose) + + # for display options we return immediately + if self.handle_display_options(option_order): + return + + while args: + args = self._parse_command_opts(parser, args) + if args is None: # user asked for help (and got it) + return + + # Handle the cases of --help as a "global" option, ie. + # "setup.py --help" and "setup.py --help command ...". For the + # former, we show global options (--verbose, --dry-run, etc.) + # and display-only options (--name, --version, etc.); for the + # latter, we omit the display-only options and show help for + # each command listed on the command line. + if self.help: + self._show_help(parser, + display_options=len(self.commands) == 0, + commands=self.commands) + return + + # Oops, no commands found -- an end-user error + if not self.commands: + raise DistutilsArgError, "no commands supplied" + + # All is well: return true + return 1 + + # parse_command_line() + + def _parse_command_opts (self, parser, args): + """Parse the command-line options for a single command. + 'parser' must be a FancyGetopt instance; 'args' must be the list + of arguments, starting with the current command (whose options + we are about to parse). Returns a new version of 'args' with + the next command at the front of the list; will be the empty + list if there are no more commands on the command line. Returns + None if the user asked for help on this command. + """ + # late import because of mutual dependence between these modules + from distutils.cmd import Command + + # Pull the current command from the head of the command line + command = args[0] + if not command_re.match(command): + raise SystemExit, "invalid command name '%s'" % command + self.commands.append(command) + + # Dig up the command class that implements this command, so we + # 1) know that it's a valid command, and 2) know which options + # it takes. + try: + cmd_class = self.get_command_class(command) + except DistutilsModuleError, msg: + raise DistutilsArgError, msg + + # Require that the command class be derived from Command -- want + # to be sure that the basic "command" interface is implemented. + if not issubclass(cmd_class, Command): + raise DistutilsClassError, \ + "command class %s must subclass Command" % cmd_class + + # Also make sure that the command object provides a list of its + # known options. + if not (hasattr(cmd_class, 'user_options') and + type(cmd_class.user_options) is ListType): + raise DistutilsClassError, \ + ("command class %s must provide " + + "'user_options' attribute (a list of tuples)") % \ + cmd_class + + # If the command class has a list of negative alias options, + # merge it in with the global negative aliases. + negative_opt = self.negative_opt + if hasattr(cmd_class, 'negative_opt'): + negative_opt = copy(negative_opt) + negative_opt.update(cmd_class.negative_opt) + + # Check for help_options in command class. They have a different + # format (tuple of four) so we need to preprocess them here. + if (hasattr(cmd_class, 'help_options') and + type(cmd_class.help_options) is ListType): + help_options = fix_help_options(cmd_class.help_options) + else: + help_options = [] + + + # All commands support the global options too, just by adding + # in 'global_options'. + parser.set_option_table(self.global_options + + cmd_class.user_options + + help_options) + parser.set_negative_aliases(negative_opt) + (args, opts) = parser.getopt(args[1:]) + if hasattr(opts, 'help') and opts.help: + self._show_help(parser, display_options=0, commands=[cmd_class]) + return + + if (hasattr(cmd_class, 'help_options') and + type(cmd_class.help_options) is ListType): + help_option_found=0 + for (help_option, short, desc, func) in cmd_class.help_options: + if hasattr(opts, parser.get_attr_name(help_option)): + help_option_found=1 + #print "showing help for option %s of command %s" % \ + # (help_option[0],cmd_class) + + if callable(func): + func() + else: + raise DistutilsClassError( + "invalid help function %s for help option '%s': " + "must be a callable object (function, etc.)" + % (`func`, help_option)) + + if help_option_found: + return + + # Put the options from the command-line into their official + # holding pen, the 'command_options' dictionary. + opt_dict = self.get_option_dict(command) + for (name, value) in vars(opts).items(): + opt_dict[name] = ("command line", value) + + return args + + # _parse_command_opts () + + + def finalize_options (self): + """Set final values for all the options on the Distribution + instance, analogous to the .finalize_options() method of Command + objects. + """ + + keywords = self.metadata.keywords + if keywords is not None: + if type(keywords) is StringType: + keywordlist = string.split(keywords, ',') + self.metadata.keywords = map(string.strip, keywordlist) + + platforms = self.metadata.platforms + if platforms is not None: + if type(platforms) is StringType: + platformlist = string.split(platforms, ',') + self.metadata.platforms = map(string.strip, platformlist) + + def _show_help (self, + parser, + global_options=1, + display_options=1, + commands=[]): + """Show help for the setup script command-line in the form of + several lists of command-line options. 'parser' should be a + FancyGetopt instance; do not expect it to be returned in the + same state, as its option table will be reset to make it + generate the correct help text. + + If 'global_options' is true, lists the global options: + --verbose, --dry-run, etc. If 'display_options' is true, lists + the "display-only" options: --name, --version, etc. Finally, + lists per-command help for every command name or command class + in 'commands'. + """ + # late import because of mutual dependence between these modules + from distutils.core import gen_usage + from distutils.cmd import Command + + if global_options: + parser.set_option_table(self.global_options) + parser.print_help("Global options:") + print + + if display_options: + parser.set_option_table(self.display_options) + parser.print_help( + "Information display options (just display " + + "information, ignore any commands)") + print + + for command in self.commands: + if type(command) is ClassType and issubclass(command, Command): + klass = command + else: + klass = self.get_command_class(command) + if (hasattr(klass, 'help_options') and + type(klass.help_options) is ListType): + parser.set_option_table(klass.user_options + + fix_help_options(klass.help_options)) + else: + parser.set_option_table(klass.user_options) + parser.print_help("Options for '%s' command:" % klass.__name__) + print + + print gen_usage(self.script_name) + return + + # _show_help () + + + def handle_display_options (self, option_order): + """If there were any non-global "display-only" options + (--help-commands or the metadata display options) on the command + line, display the requested info and return true; else return + false. + """ + from distutils.core import gen_usage + + # User just wants a list of commands -- we'll print it out and stop + # processing now (ie. if they ran "setup --help-commands foo bar", + # we ignore "foo bar"). + if self.help_commands: + self.print_commands() + print + print gen_usage(self.script_name) + return 1 + + # If user supplied any of the "display metadata" options, then + # display that metadata in the order in which the user supplied the + # metadata options. + any_display_options = 0 + is_display_option = {} + for option in self.display_options: + is_display_option[option[0]] = 1 + + for (opt, val) in option_order: + if val and is_display_option.get(opt): + opt = translate_longopt(opt) + value = getattr(self.metadata, "get_"+opt)() + if opt in ['keywords', 'platforms']: + print string.join(value, ',') + elif opt == 'classifiers': + print string.join(value, '\n') + else: + print value + any_display_options = 1 + + return any_display_options + + # handle_display_options() + + def print_command_list (self, commands, header, max_length): + """Print a subset of the list of all commands -- used by + 'print_commands()'. + """ + + print header + ":" + + for cmd in commands: + klass = self.cmdclass.get(cmd) + if not klass: + klass = self.get_command_class(cmd) + try: + description = klass.description + except AttributeError: + description = "(no description available)" + + print " %-*s %s" % (max_length, cmd, description) + + # print_command_list () + + + def print_commands (self): + """Print out a help message listing all available commands with a + description of each. The list is divided into "standard commands" + (listed in distutils.command.__all__) and "extra commands" + (mentioned in self.cmdclass, but not a standard command). The + descriptions come from the command class attribute + 'description'. + """ + + import distutils.command + std_commands = distutils.command.__all__ + is_std = {} + for cmd in std_commands: + is_std[cmd] = 1 + + extra_commands = [] + for cmd in self.cmdclass.keys(): + if not is_std.get(cmd): + extra_commands.append(cmd) + + max_length = 0 + for cmd in (std_commands + extra_commands): + if len(cmd) > max_length: + max_length = len(cmd) + + self.print_command_list(std_commands, + "Standard commands", + max_length) + if extra_commands: + print + self.print_command_list(extra_commands, + "Extra commands", + max_length) + + # print_commands () + + def get_command_list (self): + """Get a list of (command, description) tuples. + The list is divided into "standard commands" (listed in + distutils.command.__all__) and "extra commands" (mentioned in + self.cmdclass, but not a standard command). The descriptions come + from the command class attribute 'description'. + """ + # Currently this is only used on Mac OS, for the Mac-only GUI + # Distutils interface (by Jack Jansen) + + import distutils.command + std_commands = distutils.command.__all__ + is_std = {} + for cmd in std_commands: + is_std[cmd] = 1 + + extra_commands = [] + for cmd in self.cmdclass.keys(): + if not is_std.get(cmd): + extra_commands.append(cmd) + + rv = [] + for cmd in (std_commands + extra_commands): + klass = self.cmdclass.get(cmd) + if not klass: + klass = self.get_command_class(cmd) + try: + description = klass.description + except AttributeError: + description = "(no description available)" + rv.append((cmd, description)) + return rv + + # -- Command class/object methods ---------------------------------- + + def get_command_class (self, command): + """Return the class that implements the Distutils command named by + 'command'. First we check the 'cmdclass' dictionary; if the + command is mentioned there, we fetch the class object from the + dictionary and return it. Otherwise we load the command module + ("distutils.command." + command) and fetch the command class from + the module. The loaded class is also stored in 'cmdclass' + to speed future calls to 'get_command_class()'. + + Raises DistutilsModuleError if the expected module could not be + found, or if that module does not define the expected class. + """ + klass = self.cmdclass.get(command) + if klass: + return klass + + module_name = 'distutils.command.' + command + klass_name = command + + try: + __import__ (module_name) + module = sys.modules[module_name] + except ImportError: + raise DistutilsModuleError, \ + "invalid command '%s' (no module named '%s')" % \ + (command, module_name) + + try: + klass = getattr(module, klass_name) + except AttributeError: + raise DistutilsModuleError, \ + "invalid command '%s' (no class '%s' in module '%s')" \ + % (command, klass_name, module_name) + + self.cmdclass[command] = klass + return klass + + # get_command_class () + + def get_command_obj (self, command, create=1): + """Return the command object for 'command'. Normally this object + is cached on a previous call to 'get_command_obj()'; if no command + object for 'command' is in the cache, then we either create and + return it (if 'create' is true) or return None. + """ + cmd_obj = self.command_obj.get(command) + if not cmd_obj and create: + if DEBUG: + print "Distribution.get_command_obj(): " \ + "creating '%s' command object" % command + + klass = self.get_command_class(command) + cmd_obj = self.command_obj[command] = klass(self) + self.have_run[command] = 0 + + # Set any options that were supplied in config files + # or on the command line. (NB. support for error + # reporting is lame here: any errors aren't reported + # until 'finalize_options()' is called, which means + # we won't report the source of the error.) + options = self.command_options.get(command) + if options: + self._set_command_options(cmd_obj, options) + + return cmd_obj + + def _set_command_options (self, command_obj, option_dict=None): + """Set the options for 'command_obj' from 'option_dict'. Basically + this means copying elements of a dictionary ('option_dict') to + attributes of an instance ('command'). + + 'command_obj' must be a Command instance. If 'option_dict' is not + supplied, uses the standard option dictionary for this command + (from 'self.command_options'). + """ + command_name = command_obj.get_command_name() + if option_dict is None: + option_dict = self.get_option_dict(command_name) + + if DEBUG: print " setting options for '%s' command:" % command_name + for (option, (source, value)) in option_dict.items(): + if DEBUG: print " %s = %s (from %s)" % (option, value, source) + try: + bool_opts = map(translate_longopt, command_obj.boolean_options) + except AttributeError: + bool_opts = [] + try: + neg_opt = command_obj.negative_opt + except AttributeError: + neg_opt = {} + + try: + is_string = type(value) is StringType + if neg_opt.has_key(option) and is_string: + setattr(command_obj, neg_opt[option], not strtobool(value)) + elif option in bool_opts and is_string: + setattr(command_obj, option, strtobool(value)) + elif hasattr(command_obj, option): + setattr(command_obj, option, value) + else: + raise DistutilsOptionError, \ + ("error in %s: command '%s' has no such option '%s'" + % (source, command_name, option)) + except ValueError, msg: + raise DistutilsOptionError, msg + + def reinitialize_command (self, command, reinit_subcommands=0): + """Reinitializes a command to the state it was in when first + returned by 'get_command_obj()': ie., initialized but not yet + finalized. This provides the opportunity to sneak option + values in programmatically, overriding or supplementing + user-supplied values from the config files and command line. + You'll have to re-finalize the command object (by calling + 'finalize_options()' or 'ensure_finalized()') before using it for + real. + + 'command' should be a command name (string) or command object. If + 'reinit_subcommands' is true, also reinitializes the command's + sub-commands, as declared by the 'sub_commands' class attribute (if + it has one). See the "install" command for an example. Only + reinitializes the sub-commands that actually matter, ie. those + whose test predicates return true. + + Returns the reinitialized command object. + """ + from distutils.cmd import Command + if not isinstance(command, Command): + command_name = command + command = self.get_command_obj(command_name) + else: + command_name = command.get_command_name() + + if not command.finalized: + return command + command.initialize_options() + command.finalized = 0 + self.have_run[command_name] = 0 + self._set_command_options(command) + + if reinit_subcommands: + for sub in command.get_sub_commands(): + self.reinitialize_command(sub, reinit_subcommands) + + return command + + + # -- Methods that operate on the Distribution ---------------------- + + def announce (self, msg, level=1): + log.debug(msg) + + def run_commands (self): + """Run each command that was seen on the setup script command line. + Uses the list of commands found and cache of command objects + created by 'get_command_obj()'. + """ + for cmd in self.commands: + self.run_command(cmd) + + + # -- Methods that operate on its Commands -------------------------- + + def run_command (self, command): + """Do whatever it takes to run a command (including nothing at all, + if the command has already been run). Specifically: if we have + already created and run the command named by 'command', return + silently without doing anything. If the command named by 'command' + doesn't even have a command object yet, create one. Then invoke + 'run()' on that command object (or an existing one). + """ + # Already been here, done that? then return silently. + if self.have_run.get(command): + return + + log.info("running %s", command) + cmd_obj = self.get_command_obj(command) + cmd_obj.ensure_finalized() + cmd_obj.run() + self.have_run[command] = 1 + + + # -- Distribution query methods ------------------------------------ + + def has_pure_modules (self): + return len(self.packages or self.py_modules or []) > 0 + + def has_ext_modules (self): + return self.ext_modules and len(self.ext_modules) > 0 + + def has_c_libraries (self): + return self.libraries and len(self.libraries) > 0 + + def has_modules (self): + return self.has_pure_modules() or self.has_ext_modules() + + def has_headers (self): + return self.headers and len(self.headers) > 0 + + def has_scripts (self): + return self.scripts and len(self.scripts) > 0 + + def has_data_files (self): + return self.data_files and len(self.data_files) > 0 + + def is_pure (self): + return (self.has_pure_modules() and + not self.has_ext_modules() and + not self.has_c_libraries()) + + # -- Metadata query methods ---------------------------------------- + + # If you're looking for 'get_name()', 'get_version()', and so forth, + # they are defined in a sneaky way: the constructor binds self.get_XXX + # to self.metadata.get_XXX. The actual code is in the + # DistributionMetadata class, below. + +# class Distribution + + +class DistributionMetadata: + """Dummy class to hold the distribution meta-data: name, version, + author, and so forth. + """ + + _METHOD_BASENAMES = ("name", "version", "author", "author_email", + "maintainer", "maintainer_email", "url", + "license", "description", "long_description", + "keywords", "platforms", "fullname", "contact", + "contact_email", "licence", "classifiers", + "download_url") + + def __init__ (self): + self.name = None + self.version = None + self.author = None + self.author_email = None + self.maintainer = None + self.maintainer_email = None + self.url = None + self.license = None + self.description = None + self.long_description = None + self.keywords = None + self.platforms = None + self.classifiers = None + self.download_url = None + + def write_pkg_info (self, base_dir): + """Write the PKG-INFO file into the release tree. + """ + + pkg_info = open( os.path.join(base_dir, 'PKG-INFO'), 'w') + + pkg_info.write('Metadata-Version: 1.0\n') + pkg_info.write('Name: %s\n' % self.get_name() ) + pkg_info.write('Version: %s\n' % self.get_version() ) + pkg_info.write('Summary: %s\n' % self.get_description() ) + pkg_info.write('Home-page: %s\n' % self.get_url() ) + pkg_info.write('Author: %s\n' % self.get_contact() ) + pkg_info.write('Author-email: %s\n' % self.get_contact_email() ) + pkg_info.write('License: %s\n' % self.get_license() ) + if self.download_url: + pkg_info.write('Download-URL: %s\n' % self.download_url) + + long_desc = rfc822_escape( self.get_long_description() ) + pkg_info.write('Description: %s\n' % long_desc) + + keywords = string.join( self.get_keywords(), ',') + if keywords: + pkg_info.write('Keywords: %s\n' % keywords ) + + for platform in self.get_platforms(): + pkg_info.write('Platform: %s\n' % platform ) + + for classifier in self.get_classifiers(): + pkg_info.write('Classifier: %s\n' % classifier ) + + pkg_info.close() + + # write_pkg_info () + + # -- Metadata query methods ---------------------------------------- + + def get_name (self): + return self.name or "UNKNOWN" + + def get_version(self): + return self.version or "0.0.0" + + def get_fullname (self): + return "%s-%s" % (self.get_name(), self.get_version()) + + def get_author(self): + return self.author or "UNKNOWN" + + def get_author_email(self): + return self.author_email or "UNKNOWN" + + def get_maintainer(self): + return self.maintainer or "UNKNOWN" + + def get_maintainer_email(self): + return self.maintainer_email or "UNKNOWN" + + def get_contact(self): + return (self.maintainer or + self.author or + "UNKNOWN") + + def get_contact_email(self): + return (self.maintainer_email or + self.author_email or + "UNKNOWN") + + def get_url(self): + return self.url or "UNKNOWN" + + def get_license(self): + return self.license or "UNKNOWN" + get_licence = get_license + + def get_description(self): + return self.description or "UNKNOWN" + + def get_long_description(self): + return self.long_description or "UNKNOWN" + + def get_keywords(self): + return self.keywords or [] + + def get_platforms(self): + return self.platforms or ["UNKNOWN"] + + def get_classifiers(self): + return self.classifiers or [] + + def get_download_url(self): + return self.download_url or "UNKNOWN" + +# class DistributionMetadata + + +def fix_help_options (options): + """Convert a 4-tuple 'help_options' list as found in various command + classes to the 3-tuple form required by FancyGetopt. + """ + new_options = [] + for help_tuple in options: + new_options.append(help_tuple[0:3]) + return new_options + + +if __name__ == "__main__": + dist = Distribution() + print "ok" diff --git a/wxPython/distutils/emxccompiler.py b/wxPython/distutils/emxccompiler.py new file mode 100644 index 0000000000..76bdbae506 --- /dev/null +++ b/wxPython/distutils/emxccompiler.py @@ -0,0 +1,315 @@ +"""distutils.emxccompiler + +Provides the EMXCCompiler class, a subclass of UnixCCompiler that +handles the EMX port of the GNU C compiler to OS/2. +""" + +# issues: +# +# * OS/2 insists that DLLs can have names no longer than 8 characters +# We put export_symbols in a def-file, as though the DLL can have +# an arbitrary length name, but truncate the output filename. +# +# * only use OMF objects and use LINK386 as the linker (-Zomf) +# +# * always build for multithreading (-Zmt) as the accompanying OS/2 port +# of Python is only distributed with threads enabled. +# +# tested configurations: +# +# * EMX gcc 2.81/EMX 0.9d fix03 + +__revision__ = "$Id$" + +import os,sys,copy +from distutils.ccompiler import gen_preprocess_options, gen_lib_options +from distutils.unixccompiler import UnixCCompiler +from distutils.file_util import write_file +from distutils.errors import DistutilsExecError, CompileError, UnknownFileError +from distutils import log + +class EMXCCompiler (UnixCCompiler): + + compiler_type = 'emx' + obj_extension = ".obj" + static_lib_extension = ".lib" + shared_lib_extension = ".dll" + static_lib_format = "%s%s" + shared_lib_format = "%s%s" + res_extension = ".res" # compiled resource file + exe_extension = ".exe" + + def __init__ (self, + verbose=0, + dry_run=0, + force=0): + + UnixCCompiler.__init__ (self, verbose, dry_run, force) + + (status, details) = check_config_h() + self.debug_print("Python's GCC status: %s (details: %s)" % + (status, details)) + if status is not CONFIG_H_OK: + self.warn( + "Python's pyconfig.h doesn't seem to support your compiler. " + + ("Reason: %s." % details) + + "Compiling may fail because of undefined preprocessor macros.") + + (self.gcc_version, self.ld_version) = \ + get_versions() + self.debug_print(self.compiler_type + ": gcc %s, ld %s\n" % + (self.gcc_version, + self.ld_version) ) + + # Hard-code GCC because that's what this is all about. + # XXX optimization, warnings etc. should be customizable. + self.set_executables(compiler='gcc -Zomf -Zmt -O2 -Wall', + compiler_so='gcc -Zomf -Zmt -O2 -Wall', + linker_exe='gcc -Zomf -Zmt -Zcrtdll', + linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll') + + # want the gcc library statically linked (so that we don't have + # to distribute a version dependent on the compiler we have) + self.dll_libraries=["gcc"] + + # __init__ () + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + if ext == '.rc': + # gcc requires '.rc' compiled to binary ('.res') files !!! + try: + self.spawn(["rc", "-r", src]) + except DistutilsExecError, msg: + raise CompileError, msg + else: # for other files use the C-compiler + try: + self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + + extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + + def link (self, + target_desc, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + + # use separate copies, so we can modify the lists + extra_preargs = copy.copy(extra_preargs or []) + libraries = copy.copy(libraries or []) + objects = copy.copy(objects or []) + + # Additional libraries + libraries.extend(self.dll_libraries) + + # handle export symbols by creating a def-file + # with executables this only works with gcc/ld as linker + if ((export_symbols is not None) and + (target_desc != self.EXECUTABLE)): + # (The linker doesn't do anything if output is up-to-date. + # So it would probably better to check if we really need this, + # but for this we had to insert some unchanged parts of + # UnixCCompiler, and this is not what we want.) + + # we want to put some files in the same directory as the + # object files are, build_temp doesn't help much + # where are the object files + temp_dir = os.path.dirname(objects[0]) + # name of dll to give the helper files the same base name + (dll_name, dll_extension) = os.path.splitext( + os.path.basename(output_filename)) + + # generate the filenames for these files + def_file = os.path.join(temp_dir, dll_name + ".def") + + # Generate .def file + contents = [ + "LIBRARY %s INITINSTANCE TERMINSTANCE" % \ + os.path.splitext(os.path.basename(output_filename))[0], + "DATA MULTIPLE NONSHARED", + "EXPORTS"] + for sym in export_symbols: + contents.append(' "%s"' % sym) + self.execute(write_file, (def_file, contents), + "writing %s" % def_file) + + # next add options for def-file and to creating import libraries + # for gcc/ld the def-file is specified as any other object files + objects.append(def_file) + + #end: if ((export_symbols is not None) and + # (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): + + # who wants symbols and a many times larger output file + # should explicitly switch the debug mode on + # otherwise we let dllwrap/ld strip the output file + # (On my machine: 10KB < stripped_file < ??100KB + # unstripped_file = stripped_file + XXX KB + # ( XXX=254 for a typical python extension)) + if not debug: + extra_preargs.append("-s") + + UnixCCompiler.link(self, + target_desc, + objects, + output_filename, + output_dir, + libraries, + library_dirs, + runtime_library_dirs, + None, # export_symbols, we do this in our def-file + debug, + extra_preargs, + extra_postargs, + build_temp, + target_lang) + + # link () + + # -- Miscellaneous methods ----------------------------------------- + + # override the object_filenames method from CCompiler to + # support rc and res-files + def object_filenames (self, + source_filenames, + strip_dir=0, + output_dir=''): + if output_dir is None: output_dir = '' + obj_names = [] + for src_name in source_filenames: + # use normcase to make sure '.rc' is really '.rc' and not '.RC' + (base, ext) = os.path.splitext (os.path.normcase(src_name)) + if ext not in (self.src_extensions + ['.rc']): + raise UnknownFileError, \ + "unknown file type '%s' (from '%s')" % \ + (ext, src_name) + if strip_dir: + base = os.path.basename (base) + if ext == '.rc': + # these need to be compiled to object files + obj_names.append (os.path.join (output_dir, + base + self.res_extension)) + else: + obj_names.append (os.path.join (output_dir, + base + self.obj_extension)) + return obj_names + + # object_filenames () + + # override the find_library_file method from UnixCCompiler + # to deal with file naming/searching differences + def find_library_file(self, dirs, lib, debug=0): + shortlib = '%s.lib' % lib + longlib = 'lib%s.lib' % lib # this form very rare + + # get EMX's default library directory search path + try: + emx_dirs = os.environ['LIBRARY_PATH'].split(';') + except KeyError: + emx_dirs = [] + + for dir in dirs + emx_dirs: + shortlibp = os.path.join(dir, shortlib) + longlibp = os.path.join(dir, longlib) + if os.path.exists(shortlibp): + return shortlibp + elif os.path.exists(longlibp): + return longlibp + + # Oops, didn't find it in *any* of 'dirs' + return None + +# class EMXCCompiler + + +# Because these compilers aren't configured in Python's pyconfig.h file by +# default, we should at least warn the user if he is using a unmodified +# version. + +CONFIG_H_OK = "ok" +CONFIG_H_NOTOK = "not ok" +CONFIG_H_UNCERTAIN = "uncertain" + +def check_config_h(): + + """Check if the current Python installation (specifically, pyconfig.h) + appears amenable to building extensions with GCC. Returns a tuple + (status, details), where 'status' is one of the following constants: + CONFIG_H_OK + all is well, go ahead and compile + CONFIG_H_NOTOK + doesn't look good + CONFIG_H_UNCERTAIN + not sure -- unable to read pyconfig.h + 'details' is a human-readable string explaining the situation. + + Note there are two ways to conclude "OK": either 'sys.version' contains + the string "GCC" (implying that this Python was built with GCC), or the + installed "pyconfig.h" contains the string "__GNUC__". + """ + + # XXX since this function also checks sys.version, it's not strictly a + # "pyconfig.h" check -- should probably be renamed... + + from distutils import sysconfig + import string + # if sys.version contains GCC then python was compiled with + # GCC, and the pyconfig.h file should be OK + if string.find(sys.version,"GCC") >= 0: + return (CONFIG_H_OK, "sys.version mentions 'GCC'") + + fn = sysconfig.get_config_h_filename() + try: + # It would probably better to read single lines to search. + # But we do this only once, and it is fast enough + f = open(fn) + s = f.read() + f.close() + + except IOError, exc: + # if we can't read this file, we cannot say it is wrong + # the compiler will complain later about this file as missing + return (CONFIG_H_UNCERTAIN, + "couldn't read '%s': %s" % (fn, exc.strerror)) + + else: + # "pyconfig.h" contains an "#ifdef __GNUC__" or something similar + if string.find(s,"__GNUC__") >= 0: + return (CONFIG_H_OK, "'%s' mentions '__GNUC__'" % fn) + else: + return (CONFIG_H_NOTOK, "'%s' does not mention '__GNUC__'" % fn) + + +def get_versions(): + """ Try to find out the versions of gcc and ld. + If not possible it returns None for it. + """ + from distutils.version import StrictVersion + from distutils.spawn import find_executable + import re + + gcc_exe = find_executable('gcc') + if gcc_exe: + out = os.popen(gcc_exe + ' -dumpversion','r') + out_string = out.read() + out.close() + result = re.search('(\d+\.\d+\.\d+)',out_string) + if result: + gcc_version = StrictVersion(result.group(1)) + else: + gcc_version = None + else: + gcc_version = None + # EMX ld has no way of reporting version number, and we use GCC + # anyway - so we can link OMF DLLs + ld_version = None + return (gcc_version, ld_version) diff --git a/wxPython/distutils/errors.py b/wxPython/distutils/errors.py new file mode 100644 index 0000000000..94e83fb557 --- /dev/null +++ b/wxPython/distutils/errors.py @@ -0,0 +1,99 @@ +"""distutils.errors + +Provides exceptions used by the Distutils modules. Note that Distutils +modules may raise standard exceptions; in particular, SystemExit is +usually raised for errors that are obviously the end-user's fault +(eg. bad command-line arguments). + +This module is safe to use in "from ... import *" mode; it only exports +symbols whose names start with "Distutils" and end with "Error".""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +class DistutilsError (Exception): + """The root of all Distutils evil.""" + pass + +class DistutilsModuleError (DistutilsError): + """Unable to load an expected module, or to find an expected class + within some module (in particular, command modules and classes).""" + pass + +class DistutilsClassError (DistutilsError): + """Some command class (or possibly distribution class, if anyone + feels a need to subclass Distribution) is found not to be holding + up its end of the bargain, ie. implementing some part of the + "command "interface.""" + pass + +class DistutilsGetoptError (DistutilsError): + """The option table provided to 'fancy_getopt()' is bogus.""" + pass + +class DistutilsArgError (DistutilsError): + """Raised by fancy_getopt in response to getopt.error -- ie. an + error in the command line usage.""" + pass + +class DistutilsFileError (DistutilsError): + """Any problems in the filesystem: expected file not found, etc. + Typically this is for problems that we detect before IOError or + OSError could be raised.""" + pass + +class DistutilsOptionError (DistutilsError): + """Syntactic/semantic errors in command options, such as use of + mutually conflicting options, or inconsistent options, + badly-spelled values, etc. No distinction is made between option + values originating in the setup script, the command line, config + files, or what-have-you -- but if we *know* something originated in + the setup script, we'll raise DistutilsSetupError instead.""" + pass + +class DistutilsSetupError (DistutilsError): + """For errors that can be definitely blamed on the setup script, + such as invalid keyword arguments to 'setup()'.""" + pass + +class DistutilsPlatformError (DistutilsError): + """We don't know how to do something on the current platform (but + we do know how to do it on some platform) -- eg. trying to compile + C files on a platform not supported by a CCompiler subclass.""" + pass + +class DistutilsExecError (DistutilsError): + """Any problems executing an external program (such as the C + compiler, when compiling C files).""" + pass + +class DistutilsInternalError (DistutilsError): + """Internal inconsistencies or impossibilities (obviously, this + should never be seen if the code is working!).""" + pass + +class DistutilsTemplateError (DistutilsError): + """Syntax error in a file list template.""" + + +# Exception classes used by the CCompiler implementation classes +class CCompilerError (Exception): + """Some compile/link operation failed.""" + +class PreprocessError (CCompilerError): + """Failure to preprocess one or more C/C++ files.""" + +class CompileError (CCompilerError): + """Failure to compile one or more C/C++ source files.""" + +class LibError (CCompilerError): + """Failure to create a static library from one or more C/C++ object + files.""" + +class LinkError (CCompilerError): + """Failure to link one or more C/C++ object files into an executable + or shared library file.""" + +class UnknownFileError (CCompilerError): + """Attempt to process an unknown file type.""" diff --git a/wxPython/distutils/extension.py b/wxPython/distutils/extension.py new file mode 100644 index 0000000000..e69f3e93e0 --- /dev/null +++ b/wxPython/distutils/extension.py @@ -0,0 +1,241 @@ +"""distutils.extension + +Provides the Extension class, used to describe C/C++ extension +modules in setup scripts.""" + +__revision__ = "$Id$" + +import os, string, sys +from types import * + +try: + import warnings +except ImportError: + warnings = None + +# This class is really only used by the "build_ext" command, so it might +# make sense to put it in distutils.command.build_ext. However, that +# module is already big enough, and I want to make this class a bit more +# complex to simplify some common cases ("foo" module in "foo.c") and do +# better error-checking ("foo.c" actually exists). +# +# Also, putting this in build_ext.py means every setup script would have to +# import that large-ish module (indirectly, through distutils.core) in +# order to do anything. + +class Extension: + """Just a collection of attributes that describes an extension + module and everything needed to build it (hopefully in a portable + way, but there are hooks that let you be as unportable as you need). + + Instance attributes: + name : string + the full name of the extension, including any packages -- ie. + *not* a filename or pathname, but Python dotted name + sources : [string] + list of source filenames, relative to the distribution root + (where the setup script lives), in Unix form (slash-separated) + for portability. Source files may be C, C++, SWIG (.i), + platform-specific resource files, or whatever else is recognized + by the "build_ext" command as source for a Python extension. + include_dirs : [string] + list of directories to search for C/C++ header files (in Unix + form for portability) + define_macros : [(name : string, value : string|None)] + list of macros to define; each macro is defined using a 2-tuple, + where 'value' is either the string to define it to or None to + define it without a particular value (equivalent of "#define + FOO" in source or -DFOO on Unix C compiler command line) + undef_macros : [string] + list of macros to undefine explicitly + library_dirs : [string] + list of directories to search for C/C++ libraries at link time + libraries : [string] + list of library names (not filenames or paths) to link against + runtime_library_dirs : [string] + list of directories to search for C/C++ libraries at run time + (for shared extensions, this is when the extension is loaded) + extra_objects : [string] + list of extra files to link with (eg. object files not implied + by 'sources', static library that must be explicitly specified, + binary resource files, etc.) + extra_compile_args : [string] + any extra platform- and compiler-specific information to use + when compiling the source files in 'sources'. For platforms and + compilers where "command line" makes sense, this is typically a + list of command-line arguments, but for other platforms it could + be anything. + extra_link_args : [string] + any extra platform- and compiler-specific information to use + when linking object files together to create the extension (or + to create a new static Python interpreter). Similar + interpretation as for 'extra_compile_args'. + export_symbols : [string] + list of symbols to be exported from a shared extension. Not + used on all platforms, and not generally necessary for Python + extensions, which typically export exactly one symbol: "init" + + extension_name. + depends : [string] + list of files that the extension depends on + language : string + extension language (i.e. "c", "c++", "objc"). Will be detected + from the source extensions if not provided. + """ + + # When adding arguments to this constructor, be sure to update + # setup_keywords in core.py. + def __init__ (self, name, sources, + include_dirs=None, + define_macros=None, + undef_macros=None, + library_dirs=None, + libraries=None, + runtime_library_dirs=None, + extra_objects=None, + extra_compile_args=None, + extra_link_args=None, + export_symbols=None, + depends=None, + language=None, + **kw # To catch unknown keywords + ): + assert type(name) is StringType, "'name' must be a string" + assert (type(sources) is ListType and + map(type, sources) == [StringType]*len(sources)), \ + "'sources' must be a list of strings" + + self.name = name + self.sources = sources + self.include_dirs = include_dirs or [] + self.define_macros = define_macros or [] + self.undef_macros = undef_macros or [] + self.library_dirs = library_dirs or [] + self.libraries = libraries or [] + self.runtime_library_dirs = runtime_library_dirs or [] + self.extra_objects = extra_objects or [] + self.extra_compile_args = extra_compile_args or [] + self.extra_link_args = extra_link_args or [] + self.export_symbols = export_symbols or [] + self.depends = depends or [] + self.language = language + + # If there are unknown keyword options, warn about them + if len(kw): + L = kw.keys() ; L.sort() + L = map(repr, L) + msg = "Unknown Extension options: " + string.join(L, ', ') + if warnings is not None: + warnings.warn(msg) + else: + sys.stderr.write(msg + '\n') +# class Extension + + +def read_setup_file (filename): + from distutils.sysconfig import \ + parse_makefile, expand_makefile_vars, _variable_rx + from distutils.text_file import TextFile + from distutils.util import split_quoted + + # First pass over the file to gather "VAR = VALUE" assignments. + vars = parse_makefile(filename) + + # Second pass to gobble up the real content: lines of the form + # <module> ... [<sourcefile> ...] [<cpparg> ...] [<library> ...] + file = TextFile(filename, + strip_comments=1, skip_blanks=1, join_lines=1, + lstrip_ws=1, rstrip_ws=1) + extensions = [] + + while 1: + line = file.readline() + if line is None: # eof + break + if _variable_rx.match(line): # VAR=VALUE, handled in first pass + continue + + if line[0] == line[-1] == "*": + file.warn("'%s' lines not handled yet" % line) + continue + + #print "original line: " + line + line = expand_makefile_vars(line, vars) + words = split_quoted(line) + #print "expanded line: " + line + + # NB. this parses a slightly different syntax than the old + # makesetup script: here, there must be exactly one extension per + # line, and it must be the first word of the line. I have no idea + # why the old syntax supported multiple extensions per line, as + # they all wind up being the same. + + module = words[0] + ext = Extension(module, []) + append_next_word = None + + for word in words[1:]: + if append_next_word is not None: + append_next_word.append(word) + append_next_word = None + continue + + suffix = os.path.splitext(word)[1] + switch = word[0:2] ; value = word[2:] + + if suffix in (".c", ".cc", ".cpp", ".cxx", ".c++", ".m", ".mm"): + # hmm, should we do something about C vs. C++ sources? + # or leave it up to the CCompiler implementation to + # worry about? + ext.sources.append(word) + elif switch == "-I": + ext.include_dirs.append(value) + elif switch == "-D": + equals = string.find(value, "=") + if equals == -1: # bare "-DFOO" -- no value + ext.define_macros.append((value, None)) + else: # "-DFOO=blah" + ext.define_macros.append((value[0:equals], + value[equals+2:])) + elif switch == "-U": + ext.undef_macros.append(value) + elif switch == "-C": # only here 'cause makesetup has it! + ext.extra_compile_args.append(word) + elif switch == "-l": + ext.libraries.append(value) + elif switch == "-L": + ext.library_dirs.append(value) + elif switch == "-R": + ext.runtime_library_dirs.append(value) + elif word == "-rpath": + append_next_word = ext.runtime_library_dirs + elif word == "-Xlinker": + append_next_word = ext.extra_link_args + elif word == "-Xcompiler": + append_next_word = ext.extra_compile_args + elif switch == "-u": + ext.extra_link_args.append(word) + if not value: + append_next_word = ext.extra_link_args + elif suffix in (".a", ".so", ".sl", ".o", ".dylib"): + # NB. a really faithful emulation of makesetup would + # append a .o file to extra_objects only if it + # had a slash in it; otherwise, it would s/.o/.c/ + # and append it to sources. Hmmmm. + ext.extra_objects.append(word) + else: + file.warn("unrecognized argument '%s'" % word) + + extensions.append(ext) + + #print "module:", module + #print "source files:", source_files + #print "cpp args:", cpp_args + #print "lib args:", library_args + + #extensions[module] = { 'sources': source_files, + # 'cpp_args': cpp_args, + # 'lib_args': library_args } + + return extensions + +# read_setup_file () diff --git a/wxPython/distutils/fancy_getopt.py b/wxPython/distutils/fancy_getopt.py new file mode 100644 index 0000000000..a4a4e7979e --- /dev/null +++ b/wxPython/distutils/fancy_getopt.py @@ -0,0 +1,501 @@ +"""distutils.fancy_getopt + +Wrapper around the standard getopt module that provides the following +additional features: + * short and long options are tied together + * options have help strings, so fancy_getopt could potentially + create a complete usage summary + * options set attributes of a passed-in object +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, string, re +from types import * +import getopt +from distutils.errors import * + +# Much like command_re in distutils.core, this is close to but not quite +# the same as a Python NAME -- except, in the spirit of most GNU +# utilities, we use '-' in place of '_'. (The spirit of LISP lives on!) +# The similarities to NAME are again not a coincidence... +longopt_pat = r'[a-zA-Z](?:[a-zA-Z0-9-]*)' +longopt_re = re.compile(r'^%s$' % longopt_pat) + +# For recognizing "negative alias" options, eg. "quiet=!verbose" +neg_alias_re = re.compile("^(%s)=!(%s)$" % (longopt_pat, longopt_pat)) + +# This is used to translate long options to legitimate Python identifiers +# (for use as attributes of some object). +longopt_xlate = string.maketrans('-', '_') + +class FancyGetopt: + """Wrapper around the standard 'getopt()' module that provides some + handy extra functionality: + * short and long options are tied together + * options have help strings, and help text can be assembled + from them + * options set attributes of a passed-in object + * boolean options can have "negative aliases" -- eg. if + --quiet is the "negative alias" of --verbose, then "--quiet" + on the command line sets 'verbose' to false + """ + + def __init__ (self, option_table=None): + + # The option table is (currently) a list of 3-tuples: + # (long_option, short_option, help_string) + # if an option takes an argument, its long_option should have '=' + # appended; short_option should just be a single character, no ':' + # in any case. If a long_option doesn't have a corresponding + # short_option, short_option should be None. All option tuples + # must have long options. + self.option_table = option_table + + # 'option_index' maps long option names to entries in the option + # table (ie. those 3-tuples). + self.option_index = {} + if self.option_table: + self._build_index() + + # 'alias' records (duh) alias options; {'foo': 'bar'} means + # --foo is an alias for --bar + self.alias = {} + + # 'negative_alias' keeps track of options that are the boolean + # opposite of some other option + self.negative_alias = {} + + # These keep track of the information in the option table. We + # don't actually populate these structures until we're ready to + # parse the command-line, since the 'option_table' passed in here + # isn't necessarily the final word. + self.short_opts = [] + self.long_opts = [] + self.short2long = {} + self.attr_name = {} + self.takes_arg = {} + + # And 'option_order' is filled up in 'getopt()'; it records the + # original order of options (and their values) on the command-line, + # but expands short options, converts aliases, etc. + self.option_order = [] + + # __init__ () + + + def _build_index (self): + self.option_index.clear() + for option in self.option_table: + self.option_index[option[0]] = option + + def set_option_table (self, option_table): + self.option_table = option_table + self._build_index() + + def add_option (self, long_option, short_option=None, help_string=None): + if self.option_index.has_key(long_option): + raise DistutilsGetoptError, \ + "option conflict: already an option '%s'" % long_option + else: + option = (long_option, short_option, help_string) + self.option_table.append(option) + self.option_index[long_option] = option + + + def has_option (self, long_option): + """Return true if the option table for this parser has an + option with long name 'long_option'.""" + return self.option_index.has_key(long_option) + + def get_attr_name (self, long_option): + """Translate long option name 'long_option' to the form it + has as an attribute of some object: ie., translate hyphens + to underscores.""" + return string.translate(long_option, longopt_xlate) + + + def _check_alias_dict (self, aliases, what): + assert type(aliases) is DictionaryType + for (alias, opt) in aliases.items(): + if not self.option_index.has_key(alias): + raise DistutilsGetoptError, \ + ("invalid %s '%s': " + "option '%s' not defined") % (what, alias, alias) + if not self.option_index.has_key(opt): + raise DistutilsGetoptError, \ + ("invalid %s '%s': " + "aliased option '%s' not defined") % (what, alias, opt) + + def set_aliases (self, alias): + """Set the aliases for this option parser.""" + self._check_alias_dict(alias, "alias") + self.alias = alias + + def set_negative_aliases (self, negative_alias): + """Set the negative aliases for this option parser. + 'negative_alias' should be a dictionary mapping option names to + option names, both the key and value must already be defined + in the option table.""" + self._check_alias_dict(negative_alias, "negative alias") + self.negative_alias = negative_alias + + + def _grok_option_table (self): + """Populate the various data structures that keep tabs on the + option table. Called by 'getopt()' before it can do anything + worthwhile. + """ + self.long_opts = [] + self.short_opts = [] + self.short2long.clear() + self.repeat = {} + + for option in self.option_table: + if len(option) == 3: + long, short, help = option + repeat = 0 + elif len(option) == 4: + long, short, help, repeat = option + else: + # the option table is part of the code, so simply + # assert that it is correct + assert "invalid option tuple: %s" % `option` + + # Type- and value-check the option names + if type(long) is not StringType or len(long) < 2: + raise DistutilsGetoptError, \ + ("invalid long option '%s': " + "must be a string of length >= 2") % long + + if (not ((short is None) or + (type(short) is StringType and len(short) == 1))): + raise DistutilsGetoptError, \ + ("invalid short option '%s': " + "must a single character or None") % short + + self.repeat[long] = repeat + self.long_opts.append(long) + + if long[-1] == '=': # option takes an argument? + if short: short = short + ':' + long = long[0:-1] + self.takes_arg[long] = 1 + else: + + # Is option is a "negative alias" for some other option (eg. + # "quiet" == "!verbose")? + alias_to = self.negative_alias.get(long) + if alias_to is not None: + if self.takes_arg[alias_to]: + raise DistutilsGetoptError, \ + ("invalid negative alias '%s': " + "aliased option '%s' takes a value") % \ + (long, alias_to) + + self.long_opts[-1] = long # XXX redundant?! + self.takes_arg[long] = 0 + + else: + self.takes_arg[long] = 0 + + # If this is an alias option, make sure its "takes arg" flag is + # the same as the option it's aliased to. + alias_to = self.alias.get(long) + if alias_to is not None: + if self.takes_arg[long] != self.takes_arg[alias_to]: + raise DistutilsGetoptError, \ + ("invalid alias '%s': inconsistent with " + "aliased option '%s' (one of them takes a value, " + "the other doesn't") % (long, alias_to) + + + # Now enforce some bondage on the long option name, so we can + # later translate it to an attribute name on some object. Have + # to do this a bit late to make sure we've removed any trailing + # '='. + if not longopt_re.match(long): + raise DistutilsGetoptError, \ + ("invalid long option name '%s' " + + "(must be letters, numbers, hyphens only") % long + + self.attr_name[long] = self.get_attr_name(long) + if short: + self.short_opts.append(short) + self.short2long[short[0]] = long + + # for option_table + + # _grok_option_table() + + + def getopt (self, args=None, object=None): + """Parse command-line options in args. Store as attributes on object. + + If 'args' is None or not supplied, uses 'sys.argv[1:]'. If + 'object' is None or not supplied, creates a new OptionDummy + object, stores option values there, and returns a tuple (args, + object). If 'object' is supplied, it is modified in place and + 'getopt()' just returns 'args'; in both cases, the returned + 'args' is a modified copy of the passed-in 'args' list, which + is left untouched. + """ + if args is None: + args = sys.argv[1:] + if object is None: + object = OptionDummy() + created_object = 1 + else: + created_object = 0 + + self._grok_option_table() + + short_opts = string.join(self.short_opts) + try: + opts, args = getopt.getopt(args, short_opts, self.long_opts) + except getopt.error, msg: + raise DistutilsArgError, msg + + for opt, val in opts: + if len(opt) == 2 and opt[0] == '-': # it's a short option + opt = self.short2long[opt[1]] + else: + assert len(opt) > 2 and opt[:2] == '--' + opt = opt[2:] + + alias = self.alias.get(opt) + if alias: + opt = alias + + if not self.takes_arg[opt]: # boolean option? + assert val == '', "boolean option can't have value" + alias = self.negative_alias.get(opt) + if alias: + opt = alias + val = 0 + else: + val = 1 + + attr = self.attr_name[opt] + # The only repeating option at the moment is 'verbose'. + # It has a negative option -q quiet, which should set verbose = 0. + if val and self.repeat.get(attr) is not None: + val = getattr(object, attr, 0) + 1 + setattr(object, attr, val) + self.option_order.append((opt, val)) + + # for opts + if created_object: + return args, object + else: + return args + + # getopt() + + + def get_option_order (self): + """Returns the list of (option, value) tuples processed by the + previous run of 'getopt()'. Raises RuntimeError if + 'getopt()' hasn't been called yet. + """ + if self.option_order is None: + raise RuntimeError, "'getopt()' hasn't been called yet" + else: + return self.option_order + + + def generate_help (self, header=None): + """Generate help text (a list of strings, one per suggested line of + output) from the option table for this FancyGetopt object. + """ + # Blithely assume the option table is good: probably wouldn't call + # 'generate_help()' unless you've already called 'getopt()'. + + # First pass: determine maximum length of long option names + max_opt = 0 + for option in self.option_table: + long = option[0] + short = option[1] + l = len(long) + if long[-1] == '=': + l = l - 1 + if short is not None: + l = l + 5 # " (-x)" where short == 'x' + if l > max_opt: + max_opt = l + + opt_width = max_opt + 2 + 2 + 2 # room for indent + dashes + gutter + + # Typical help block looks like this: + # --foo controls foonabulation + # Help block for longest option looks like this: + # --flimflam set the flim-flam level + # and with wrapped text: + # --flimflam set the flim-flam level (must be between + # 0 and 100, except on Tuesdays) + # Options with short names will have the short name shown (but + # it doesn't contribute to max_opt): + # --foo (-f) controls foonabulation + # If adding the short option would make the left column too wide, + # we push the explanation off to the next line + # --flimflam (-l) + # set the flim-flam level + # Important parameters: + # - 2 spaces before option block start lines + # - 2 dashes for each long option name + # - min. 2 spaces between option and explanation (gutter) + # - 5 characters (incl. space) for short option name + + # Now generate lines of help text. (If 80 columns were good enough + # for Jesus, then 78 columns are good enough for me!) + line_width = 78 + text_width = line_width - opt_width + big_indent = ' ' * opt_width + if header: + lines = [header] + else: + lines = ['Option summary:'] + + for option in self.option_table: + long, short, help = option[:3] + text = wrap_text(help, text_width) + if long[-1] == '=': + long = long[0:-1] + + # Case 1: no short option at all (makes life easy) + if short is None: + if text: + lines.append(" --%-*s %s" % (max_opt, long, text[0])) + else: + lines.append(" --%-*s " % (max_opt, long)) + + # Case 2: we have a short option, so we have to include it + # just after the long option + else: + opt_names = "%s (-%s)" % (long, short) + if text: + lines.append(" --%-*s %s" % + (max_opt, opt_names, text[0])) + else: + lines.append(" --%-*s" % opt_names) + + for l in text[1:]: + lines.append(big_indent + l) + + # for self.option_table + + return lines + + # generate_help () + + def print_help (self, header=None, file=None): + if file is None: + file = sys.stdout + for line in self.generate_help(header): + file.write(line + "\n") + +# class FancyGetopt + + +def fancy_getopt (options, negative_opt, object, args): + parser = FancyGetopt(options) + parser.set_negative_aliases(negative_opt) + return parser.getopt(args, object) + + +WS_TRANS = string.maketrans(string.whitespace, ' ' * len(string.whitespace)) + +def wrap_text (text, width): + """wrap_text(text : string, width : int) -> [string] + + Split 'text' into multiple lines of no more than 'width' characters + each, and return the list of strings that results. + """ + + if text is None: + return [] + if len(text) <= width: + return [text] + + text = string.expandtabs(text) + text = string.translate(text, WS_TRANS) + chunks = re.split(r'( +|-+)', text) + chunks = filter(None, chunks) # ' - ' results in empty strings + lines = [] + + while chunks: + + cur_line = [] # list of chunks (to-be-joined) + cur_len = 0 # length of current line + + while chunks: + l = len(chunks[0]) + if cur_len + l <= width: # can squeeze (at least) this chunk in + cur_line.append(chunks[0]) + del chunks[0] + cur_len = cur_len + l + else: # this line is full + # drop last chunk if all space + if cur_line and cur_line[-1][0] == ' ': + del cur_line[-1] + break + + if chunks: # any chunks left to process? + + # if the current line is still empty, then we had a single + # chunk that's too big too fit on a line -- so we break + # down and break it up at the line width + if cur_len == 0: + cur_line.append(chunks[0][0:width]) + chunks[0] = chunks[0][width:] + + # all-whitespace chunks at the end of a line can be discarded + # (and we know from the re.split above that if a chunk has + # *any* whitespace, it is *all* whitespace) + if chunks[0][0] == ' ': + del chunks[0] + + # and store this line in the list-of-all-lines -- as a single + # string, of course! + lines.append(string.join(cur_line, '')) + + # while chunks + + return lines + +# wrap_text () + + +def translate_longopt (opt): + """Convert a long option name to a valid Python identifier by + changing "-" to "_". + """ + return string.translate(opt, longopt_xlate) + + +class OptionDummy: + """Dummy class just used as a place to hold command-line option + values as instance attributes.""" + + def __init__ (self, options=[]): + """Create a new OptionDummy instance. The attributes listed in + 'options' will be initialized to None.""" + for opt in options: + setattr(self, opt, None) + +# class OptionDummy + + +if __name__ == "__main__": + text = """\ +Tra-la-la, supercalifragilisticexpialidocious. +How *do* you spell that odd word, anyways? +(Someone ask Mary -- she'll know [or she'll +say, "How should I know?"].)""" + + for w in (10, 20, 30, 40): + print "width: %d" % w + print string.join(wrap_text(text, w), "\n") + print diff --git a/wxPython/distutils/file_util.py b/wxPython/distutils/file_util.py new file mode 100644 index 0000000000..e230ce587e --- /dev/null +++ b/wxPython/distutils/file_util.py @@ -0,0 +1,253 @@ +"""distutils.file_util + +Utility functions for operating on single files. +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os +from distutils.errors import DistutilsFileError +from distutils import log + +# for generating verbose output in 'copy_file()' +_copy_action = { None: 'copying', + 'hard': 'hard linking', + 'sym': 'symbolically linking' } + + +def _copy_file_contents (src, dst, buffer_size=16*1024): + """Copy the file 'src' to 'dst'; both must be filenames. Any error + opening either file, reading from 'src', or writing to 'dst', raises + DistutilsFileError. Data is read/written in chunks of 'buffer_size' + bytes (default 16k). No attempt is made to handle anything apart from + regular files. + """ + # Stolen from shutil module in the standard library, but with + # custom error-handling added. + + fsrc = None + fdst = None + try: + try: + fsrc = open(src, 'rb') + except os.error, (errno, errstr): + raise DistutilsFileError, \ + "could not open '%s': %s" % (src, errstr) + + if os.path.exists(dst): + try: + os.unlink(dst) + except os.error, (errno, errstr): + raise DistutilsFileError, \ + "could not delete '%s': %s" % (dst, errstr) + + try: + fdst = open(dst, 'wb') + except os.error, (errno, errstr): + raise DistutilsFileError, \ + "could not create '%s': %s" % (dst, errstr) + + while 1: + try: + buf = fsrc.read(buffer_size) + except os.error, (errno, errstr): + raise DistutilsFileError, \ + "could not read from '%s': %s" % (src, errstr) + + if not buf: + break + + try: + fdst.write(buf) + except os.error, (errno, errstr): + raise DistutilsFileError, \ + "could not write to '%s': %s" % (dst, errstr) + + finally: + if fdst: + fdst.close() + if fsrc: + fsrc.close() + +# _copy_file_contents() + +def copy_file (src, dst, + preserve_mode=1, + preserve_times=1, + update=0, + link=None, + verbose=0, + dry_run=0): + + """Copy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is + copied there with the same name; otherwise, it must be a filename. (If + the file exists, it will be ruthlessly clobbered.) If 'preserve_mode' + is true (the default), the file's mode (type and permission bits, or + whatever is analogous on the current platform) is copied. If + 'preserve_times' is true (the default), the last-modified and + last-access times are copied as well. If 'update' is true, 'src' will + only be copied if 'dst' does not exist, or if 'dst' does exist but is + older than 'src'. + + 'link' allows you to make hard links (os.link) or symbolic links + (os.symlink) instead of copying: set it to "hard" or "sym"; if it is + None (the default), files are copied. Don't set 'link' on systems that + don't support it: 'copy_file()' doesn't check if hard or symbolic + linking is available. + + Under Mac OS, uses the native file copy function in macostools; on + other systems, uses '_copy_file_contents()' to copy file contents. + + Return a tuple (dest_name, copied): 'dest_name' is the actual name of + the output file, and 'copied' is true if the file was copied (or would + have been copied, if 'dry_run' true). + """ + # XXX if the destination file already exists, we clobber it if + # copying, but blow up if linking. Hmmm. And I don't know what + # macostools.copyfile() does. Should definitely be consistent, and + # should probably blow up if destination exists and we would be + # changing it (ie. it's not already a hard/soft link to src OR + # (not update) and (src newer than dst). + + from distutils.dep_util import newer + from stat import ST_ATIME, ST_MTIME, ST_MODE, S_IMODE + + if not os.path.isfile(src): + raise DistutilsFileError, \ + "can't copy '%s': doesn't exist or not a regular file" % src + + if os.path.isdir(dst): + dir = dst + dst = os.path.join(dst, os.path.basename(src)) + else: + dir = os.path.dirname(dst) + + if update and not newer(src, dst): + log.debug("not copying %s (output up-to-date)", src) + return dst, 0 + + try: + action = _copy_action[link] + except KeyError: + raise ValueError, \ + "invalid value '%s' for 'link' argument" % link + if os.path.basename(dst) == os.path.basename(src): + log.info("%s %s -> %s", action, src, dir) + else: + log.info("%s %s -> %s", action, src, dst) + + if dry_run: + return (dst, 1) + + # On Mac OS, use the native file copy routine + if os.name == 'mac': + import macostools + try: + macostools.copy(src, dst, 0, preserve_times) + except os.error, exc: + raise DistutilsFileError, \ + "could not copy '%s' to '%s': %s" % (src, dst, exc[-1]) + + # If linking (hard or symbolic), use the appropriate system call + # (Unix only, of course, but that's the caller's responsibility) + elif link == 'hard': + if not (os.path.exists(dst) and os.path.samefile(src, dst)): + os.link(src, dst) + elif link == 'sym': + if not (os.path.exists(dst) and os.path.samefile(src, dst)): + os.symlink(src, dst) + + # Otherwise (non-Mac, not linking), copy the file contents and + # (optionally) copy the times and mode. + else: + _copy_file_contents(src, dst) + if preserve_mode or preserve_times: + st = os.stat(src) + + # According to David Ascher <da@ski.org>, utime() should be done + # before chmod() (at least under NT). + if preserve_times: + os.utime(dst, (st[ST_ATIME], st[ST_MTIME])) + if preserve_mode: + os.chmod(dst, S_IMODE(st[ST_MODE])) + + return (dst, 1) + +# copy_file () + + +# XXX I suspect this is Unix-specific -- need porting help! +def move_file (src, dst, + verbose=0, + dry_run=0): + + """Move a file 'src' to 'dst'. If 'dst' is a directory, the file will + be moved into it with the same name; otherwise, 'src' is just renamed + to 'dst'. Return the new full name of the file. + + Handles cross-device moves on Unix using 'copy_file()'. What about + other systems??? + """ + from os.path import exists, isfile, isdir, basename, dirname + import errno + + log.info("moving %s -> %s", src, dst) + + if dry_run: + return dst + + if not isfile(src): + raise DistutilsFileError, \ + "can't move '%s': not a regular file" % src + + if isdir(dst): + dst = os.path.join(dst, basename(src)) + elif exists(dst): + raise DistutilsFileError, \ + "can't move '%s': destination '%s' already exists" % \ + (src, dst) + + if not isdir(dirname(dst)): + raise DistutilsFileError, \ + "can't move '%s': destination '%s' not a valid path" % \ + (src, dst) + + copy_it = 0 + try: + os.rename(src, dst) + except os.error, (num, msg): + if num == errno.EXDEV: + copy_it = 1 + else: + raise DistutilsFileError, \ + "couldn't move '%s' to '%s': %s" % (src, dst, msg) + + if copy_it: + copy_file(src, dst) + try: + os.unlink(src) + except os.error, (num, msg): + try: + os.unlink(dst) + except os.error: + pass + raise DistutilsFileError, \ + ("couldn't move '%s' to '%s' by copy/delete: " + + "delete '%s' failed: %s") % \ + (src, dst, src, msg) + + return dst + +# move_file () + + +def write_file (filename, contents): + """Create a file with the specified name and write 'contents' (a + sequence of strings without line terminators) to it. + """ + f = open(filename, "w") + for line in contents: + f.write(line + "\n") + f.close() diff --git a/wxPython/distutils/filelist.py b/wxPython/distutils/filelist.py new file mode 100644 index 0000000000..bfa53d2133 --- /dev/null +++ b/wxPython/distutils/filelist.py @@ -0,0 +1,355 @@ +"""distutils.filelist + +Provides the FileList class, used for poking about the filesystem +and building lists of files. +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import os, string, re +import fnmatch +from types import * +from glob import glob +from distutils.util import convert_path +from distutils.errors import DistutilsTemplateError, DistutilsInternalError +from distutils import log + +class FileList: + + """A list of files built by on exploring the filesystem and filtered by + applying various patterns to what we find there. + + Instance attributes: + dir + directory from which files will be taken -- only used if + 'allfiles' not supplied to constructor + files + list of filenames currently being built/filtered/manipulated + allfiles + complete list of files under consideration (ie. without any + filtering applied) + """ + + def __init__(self, + warn=None, + debug_print=None): + # ignore argument to FileList, but keep them for backwards + # compatibility + + self.allfiles = None + self.files = [] + + def set_allfiles (self, allfiles): + self.allfiles = allfiles + + def findall (self, dir=os.curdir): + self.allfiles = findall(dir) + + def debug_print (self, msg): + """Print 'msg' to stdout if the global DEBUG (taken from the + DISTUTILS_DEBUG environment variable) flag is true. + """ + from distutils.debug import DEBUG + if DEBUG: + print msg + + # -- List-like methods --------------------------------------------- + + def append (self, item): + self.files.append(item) + + def extend (self, items): + self.files.extend(items) + + def sort (self): + # Not a strict lexical sort! + sortable_files = map(os.path.split, self.files) + sortable_files.sort() + self.files = [] + for sort_tuple in sortable_files: + self.files.append(apply(os.path.join, sort_tuple)) + + + # -- Other miscellaneous utility methods --------------------------- + + def remove_duplicates (self): + # Assumes list has been sorted! + for i in range(len(self.files) - 1, 0, -1): + if self.files[i] == self.files[i - 1]: + del self.files[i] + + + # -- "File template" methods --------------------------------------- + + def _parse_template_line (self, line): + words = string.split(line) + action = words[0] + + patterns = dir = dir_pattern = None + + if action in ('include', 'exclude', + 'global-include', 'global-exclude'): + if len(words) < 2: + raise DistutilsTemplateError, \ + "'%s' expects <pattern1> <pattern2> ..." % action + + patterns = map(convert_path, words[1:]) + + elif action in ('recursive-include', 'recursive-exclude'): + if len(words) < 3: + raise DistutilsTemplateError, \ + "'%s' expects <dir> <pattern1> <pattern2> ..." % action + + dir = convert_path(words[1]) + patterns = map(convert_path, words[2:]) + + elif action in ('graft', 'prune'): + if len(words) != 2: + raise DistutilsTemplateError, \ + "'%s' expects a single <dir_pattern>" % action + + dir_pattern = convert_path(words[1]) + + else: + raise DistutilsTemplateError, "unknown action '%s'" % action + + return (action, patterns, dir, dir_pattern) + + # _parse_template_line () + + + def process_template_line (self, line): + + # Parse the line: split it up, make sure the right number of words + # is there, and return the relevant words. 'action' is always + # defined: it's the first word of the line. Which of the other + # three are defined depends on the action; it'll be either + # patterns, (dir and patterns), or (dir_pattern). + (action, patterns, dir, dir_pattern) = self._parse_template_line(line) + + # OK, now we know that the action is valid and we have the + # right number of words on the line for that action -- so we + # can proceed with minimal error-checking. + if action == 'include': + self.debug_print("include " + string.join(patterns)) + for pattern in patterns: + if not self.include_pattern(pattern, anchor=1): + log.warn("warning: no files found matching '%s'", + pattern) + + elif action == 'exclude': + self.debug_print("exclude " + string.join(patterns)) + for pattern in patterns: + if not self.exclude_pattern(pattern, anchor=1): + log.warn(("warning: no previously-included files " + "found matching '%s'"), pattern) + + elif action == 'global-include': + self.debug_print("global-include " + string.join(patterns)) + for pattern in patterns: + if not self.include_pattern(pattern, anchor=0): + log.warn(("warning: no files found matching '%s' " + + "anywhere in distribution"), pattern) + + elif action == 'global-exclude': + self.debug_print("global-exclude " + string.join(patterns)) + for pattern in patterns: + if not self.exclude_pattern(pattern, anchor=0): + log.warn(("warning: no previously-included files matching " + "'%s' found anywhere in distribution"), + pattern) + + elif action == 'recursive-include': + self.debug_print("recursive-include %s %s" % + (dir, string.join(patterns))) + for pattern in patterns: + if not self.include_pattern(pattern, prefix=dir): + log.warn(("warngin: no files found matching '%s' " + + "under directory '%s'"), + pattern, dir) + + elif action == 'recursive-exclude': + self.debug_print("recursive-exclude %s %s" % + (dir, string.join(patterns))) + for pattern in patterns: + if not self.exclude_pattern(pattern, prefix=dir): + log.warn(("warning: no previously-included files matching " + "'%s' found under directory '%s'"), + pattern, dir) + + elif action == 'graft': + self.debug_print("graft " + dir_pattern) + if not self.include_pattern(None, prefix=dir_pattern): + log.warn("warning: no directories found matching '%s'", + dir_pattern) + + elif action == 'prune': + self.debug_print("prune " + dir_pattern) + if not self.exclude_pattern(None, prefix=dir_pattern): + log.warn(("no previously-included directories found " + + "matching '%s'"), dir_pattern) + else: + raise DistutilsInternalError, \ + "this cannot happen: invalid action '%s'" % action + + # process_template_line () + + + # -- Filtering/selection methods ----------------------------------- + + def include_pattern (self, pattern, + anchor=1, prefix=None, is_regex=0): + """Select strings (presumably filenames) from 'self.files' that + match 'pattern', a Unix-style wildcard (glob) pattern. Patterns + are not quite the same as implemented by the 'fnmatch' module: '*' + and '?' match non-special characters, where "special" is platform- + dependent: slash on Unix; colon, slash, and backslash on + DOS/Windows; and colon on Mac OS. + + If 'anchor' is true (the default), then the pattern match is more + stringent: "*.py" will match "foo.py" but not "foo/bar.py". If + 'anchor' is false, both of these will match. + + If 'prefix' is supplied, then only filenames starting with 'prefix' + (itself a pattern) and ending with 'pattern', with anything in between + them, will match. 'anchor' is ignored in this case. + + If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and + 'pattern' is assumed to be either a string containing a regex or a + regex object -- no translation is done, the regex is just compiled + and used as-is. + + Selected strings will be added to self.files. + + Return 1 if files are found. + """ + files_found = 0 + pattern_re = translate_pattern(pattern, anchor, prefix, is_regex) + self.debug_print("include_pattern: applying regex r'%s'" % + pattern_re.pattern) + + # delayed loading of allfiles list + if self.allfiles is None: + self.findall() + + for name in self.allfiles: + if pattern_re.search(name): + self.debug_print(" adding " + name) + self.files.append(name) + files_found = 1 + + return files_found + + # include_pattern () + + + def exclude_pattern (self, pattern, + anchor=1, prefix=None, is_regex=0): + """Remove strings (presumably filenames) from 'files' that match + 'pattern'. Other parameters are the same as for + 'include_pattern()', above. + The list 'self.files' is modified in place. + Return 1 if files are found. + """ + files_found = 0 + pattern_re = translate_pattern(pattern, anchor, prefix, is_regex) + self.debug_print("exclude_pattern: applying regex r'%s'" % + pattern_re.pattern) + for i in range(len(self.files)-1, -1, -1): + if pattern_re.search(self.files[i]): + self.debug_print(" removing " + self.files[i]) + del self.files[i] + files_found = 1 + + return files_found + + # exclude_pattern () + +# class FileList + + +# ---------------------------------------------------------------------- +# Utility functions + +def findall (dir = os.curdir): + """Find all files under 'dir' and return the list of full filenames + (relative to 'dir'). + """ + from stat import ST_MODE, S_ISREG, S_ISDIR, S_ISLNK + + list = [] + stack = [dir] + pop = stack.pop + push = stack.append + + while stack: + dir = pop() + names = os.listdir(dir) + + for name in names: + if dir != os.curdir: # avoid the dreaded "./" syndrome + fullname = os.path.join(dir, name) + else: + fullname = name + + # Avoid excess stat calls -- just one will do, thank you! + stat = os.stat(fullname) + mode = stat[ST_MODE] + if S_ISREG(mode): + list.append(fullname) + elif S_ISDIR(mode) and not S_ISLNK(mode): + push(fullname) + + return list + + +def glob_to_re (pattern): + """Translate a shell-like glob pattern to a regular expression; return + a string containing the regex. Differs from 'fnmatch.translate()' in + that '*' does not match "special characters" (which are + platform-specific). + """ + pattern_re = fnmatch.translate(pattern) + + # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which + # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, + # and by extension they shouldn't match such "special characters" under + # any OS. So change all non-escaped dots in the RE to match any + # character except the special characters. + # XXX currently the "special characters" are just slash -- i.e. this is + # Unix-only. + pattern_re = re.sub(r'(^|[^\\])\.', r'\1[^/]', pattern_re) + return pattern_re + +# glob_to_re () + + +def translate_pattern (pattern, anchor=1, prefix=None, is_regex=0): + """Translate a shell-like wildcard pattern to a compiled regular + expression. Return the compiled regex. If 'is_regex' true, + then 'pattern' is directly compiled to a regex (if it's a string) + or just returned as-is (assumes it's a regex object). + """ + if is_regex: + if type(pattern) is StringType: + return re.compile(pattern) + else: + return pattern + + if pattern: + pattern_re = glob_to_re(pattern) + else: + pattern_re = '' + + if prefix is not None: + prefix_re = (glob_to_re(prefix))[0:-1] # ditch trailing $ + pattern_re = "^" + os.path.join(prefix_re, ".*" + pattern_re) + else: # no prefix -- respect anchor flag + if anchor: + pattern_re = "^" + pattern_re + + return re.compile(pattern_re) + +# translate_pattern () diff --git a/wxPython/distutils/log.py b/wxPython/distutils/log.py new file mode 100644 index 0000000000..0442033d66 --- /dev/null +++ b/wxPython/distutils/log.py @@ -0,0 +1,61 @@ +"""A simple log mechanism styled after PEP 282.""" + +# This module should be kept compatible with Python 1.5.2. + +# The class here is styled after PEP 282 so that it could later be +# replaced with a standard Python logging implementation. + +DEBUG = 1 +INFO = 2 +WARN = 3 +ERROR = 4 +FATAL = 5 + +import sys + +class Log: + + def __init__(self, threshold=WARN): + self.threshold = threshold + + def _log(self, level, msg, args): + if level >= self.threshold: + print msg % args + sys.stdout.flush() + + def log(self, level, msg, *args): + self._log(level, msg, args) + + def debug(self, msg, *args): + self._log(DEBUG, msg, args) + + def info(self, msg, *args): + self._log(INFO, msg, args) + + def warn(self, msg, *args): + self._log(WARN, msg, args) + + def error(self, msg, *args): + self._log(ERROR, msg, args) + + def fatal(self, msg, *args): + self._log(FATAL, msg, args) + +_global_log = Log() +log = _global_log.log +debug = _global_log.debug +info = _global_log.info +warn = _global_log.warn +error = _global_log.error +fatal = _global_log.fatal + +def set_threshold(level): + _global_log.threshold = level + +def set_verbosity(v): + if v == 0: + set_threshold(WARN) + if v == 1: + set_threshold(INFO) + if v == 2: + set_threshold(DEBUG) diff --git a/wxPython/distutils/msvccompiler.py b/wxPython/distutils/msvccompiler.py new file mode 100644 index 0000000000..e07a6d5a0c --- /dev/null +++ b/wxPython/distutils/msvccompiler.py @@ -0,0 +1,503 @@ +"""distutils.msvccompiler + +Contains MSVCCompiler, an implementation of the abstract CCompiler class +for the Microsoft Visual Studio.""" + +# Written by Perry Stoll +# hacked by Robin Becker and Thomas Heller to do a better job of +# finding DevStudio (through the registry) + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from types import * +from distutils.errors import \ + DistutilsExecError, DistutilsPlatformError, \ + CompileError, LibError, LinkError +from distutils.ccompiler import \ + CCompiler, gen_preprocess_options, gen_lib_options +from distutils import log + +_can_read_reg = 0 +try: + import _winreg + + _can_read_reg = 1 + hkey_mod = _winreg + + RegOpenKeyEx = _winreg.OpenKeyEx + RegEnumKey = _winreg.EnumKey + RegEnumValue = _winreg.EnumValue + RegError = _winreg.error + +except ImportError: + try: + import win32api + import win32con + _can_read_reg = 1 + hkey_mod = win32con + + RegOpenKeyEx = win32api.RegOpenKeyEx + RegEnumKey = win32api.RegEnumKey + RegEnumValue = win32api.RegEnumValue + RegError = win32api.error + + except ImportError: + pass + +if _can_read_reg: + HKEY_CLASSES_ROOT = hkey_mod.HKEY_CLASSES_ROOT + HKEY_LOCAL_MACHINE = hkey_mod.HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER = hkey_mod.HKEY_CURRENT_USER + HKEY_USERS = hkey_mod.HKEY_USERS + + + +def get_devstudio_versions (): + """Get list of devstudio versions from the Windows registry. Return a + list of strings containing version numbers; the list will be + empty if we were unable to access the registry (eg. couldn't import + a registry-access module) or the appropriate registry keys weren't + found.""" + + if not _can_read_reg: + return [] + + K = 'Software\\Microsoft\\Devstudio' + L = [] + for base in (HKEY_CLASSES_ROOT, + HKEY_LOCAL_MACHINE, + HKEY_CURRENT_USER, + HKEY_USERS): + try: + k = RegOpenKeyEx(base,K) + i = 0 + while 1: + try: + p = RegEnumKey(k,i) + if p[0] in '123456789' and p not in L: + L.append(p) + except RegError: + break + i = i + 1 + except RegError: + pass + L.sort() + L.reverse() + return L + +# get_devstudio_versions () + + +def get_msvc_paths (path, version='6.0', platform='x86'): + """Get a list of devstudio directories (include, lib or path). Return + a list of strings; will be empty list if unable to access the + registry or appropriate registry keys not found.""" + + if not _can_read_reg: + return [] + + L = [] + if path=='lib': + path= 'Library' + path = string.upper(path + ' Dirs') + K = ('Software\\Microsoft\\Devstudio\\%s\\' + + 'Build System\\Components\\Platforms\\Win32 (%s)\\Directories') % \ + (version,platform) + for base in (HKEY_CLASSES_ROOT, + HKEY_LOCAL_MACHINE, + HKEY_CURRENT_USER, + HKEY_USERS): + try: + k = RegOpenKeyEx(base,K) + i = 0 + while 1: + try: + (p,v,t) = RegEnumValue(k,i) + if string.upper(p) == path: + V = string.split(v,';') + for v in V: + if hasattr(v, "encode"): + try: + v = v.encode("mbcs") + except UnicodeError: + pass + if v == '' or v in L: continue + L.append(v) + break + i = i + 1 + except RegError: + break + except RegError: + pass + return L + +# get_msvc_paths() + + +def find_exe (exe, version_number): + """Try to find an MSVC executable program 'exe' (from version + 'version_number' of MSVC) in several places: first, one of the MSVC + program search paths from the registry; next, the directories in the + PATH environment variable. If any of those work, return an absolute + path that is known to exist. If none of them work, just return the + original program name, 'exe'.""" + + for p in get_msvc_paths ('path', version_number): + fn = os.path.join (os.path.abspath(p), exe) + if os.path.isfile(fn): + return fn + + # didn't find it; try existing path + for p in string.split (os.environ['Path'],';'): + fn = os.path.join(os.path.abspath(p),exe) + if os.path.isfile(fn): + return fn + + return exe # last desperate hope + + +def set_path_env_var (name, version_number): + """Set environment variable 'name' to an MSVC path type value obtained + from 'get_msvc_paths()'. This is equivalent to a SET command prior + to execution of spawned commands.""" + + p = get_msvc_paths (name, version_number) + if p: + os.environ[name] = string.join (p,';') + + +class MSVCCompiler (CCompiler) : + """Concrete class that implements an interface to Microsoft Visual C++, + as defined by the CCompiler abstract class.""" + + compiler_type = 'msvc' + + # Just set this so CCompiler's constructor doesn't barf. We currently + # don't use the 'set_executables()' bureaucracy provided by CCompiler, + # as it really isn't necessary for this sort of single-compiler class. + # Would be nice to have a consistent interface with UnixCCompiler, + # though, so it's worth thinking about. + executables = {} + + # Private class data (need to distinguish C from C++ source for compiler) + _c_extensions = ['.c'] + _cpp_extensions = ['.cc', '.cpp', '.cxx'] + _rc_extensions = ['.rc'] + _mc_extensions = ['.mc'] + + # Needed for the filename generation methods provided by the + # base class, CCompiler. + src_extensions = (_c_extensions + _cpp_extensions + + _rc_extensions + _mc_extensions) + res_extension = '.res' + obj_extension = '.obj' + static_lib_extension = '.lib' + shared_lib_extension = '.dll' + static_lib_format = shared_lib_format = '%s%s' + exe_extension = '.exe' + + + def __init__ (self, + verbose=0, + dry_run=0, + force=0): + + CCompiler.__init__ (self, verbose, dry_run, force) + versions = get_devstudio_versions () + + if versions: + version = versions[0] # highest version + + self.cc = find_exe("cl.exe", version) + self.linker = find_exe("link.exe", version) + self.lib = find_exe("lib.exe", version) + self.rc = find_exe("rc.exe", version) # resource compiler + self.mc = find_exe("mc.exe", version) # message compiler + set_path_env_var ('lib', version) + set_path_env_var ('include', version) + path=get_msvc_paths('path', version) + try: + for p in string.split(os.environ['path'],';'): + path.append(p) + except KeyError: + pass + os.environ['path'] = string.join(path,';') + else: + # devstudio not found in the registry + self.cc = "cl.exe" + self.linker = "link.exe" + self.lib = "lib.exe" + self.rc = "rc.exe" + self.mc = "mc.exe" + + self.preprocess_options = None + self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX' , + '/DNDEBUG'] + self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX', + '/Z7', '/D_DEBUG'] + + self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO'] + self.ldflags_shared_debug = [ + '/DLL', '/nologo', '/INCREMENTAL:no', '/pdb:None', '/DEBUG' + ] + self.ldflags_static = [ '/nologo'] + + + # -- Worker methods ------------------------------------------------ + + def object_filenames (self, + source_filenames, + strip_dir=0, + output_dir=''): + # Copied from ccompiler.py, extended to return .res as 'object'-file + # for .rc input file + if output_dir is None: output_dir = '' + obj_names = [] + for src_name in source_filenames: + (base, ext) = os.path.splitext (src_name) + if ext not in self.src_extensions: + # Better to raise an exception instead of silently continuing + # and later complain about sources and targets having + # different lengths + raise CompileError ("Don't know how to compile %s" % src_name) + if strip_dir: + base = os.path.basename (base) + if ext in self._rc_extensions: + obj_names.append (os.path.join (output_dir, + base + self.res_extension)) + elif ext in self._mc_extensions: + obj_names.append (os.path.join (output_dir, + base + self.res_extension)) + else: + obj_names.append (os.path.join (output_dir, + base + self.obj_extension)) + return obj_names + + # object_filenames () + + + def compile(self, sources, + output_dir=None, macros=None, include_dirs=None, debug=0, + extra_preargs=None, extra_postargs=None, depends=None): + + macros, objects, extra_postargs, pp_opts, build = \ + self._setup_compile(output_dir, macros, include_dirs, sources, + depends, extra_postargs) + + compile_opts = extra_preargs or [] + compile_opts.append ('/c') + if debug: + compile_opts.extend(self.compile_options_debug) + else: + compile_opts.extend(self.compile_options) + + for obj, (src, ext) in build.items(): + if debug: + # pass the full pathname to MSVC in debug mode, + # this allows the debugger to find the source file + # without asking the user to browse for it + src = os.path.abspath(src) + + if ext in self._c_extensions: + input_opt = "/Tc" + src + elif ext in self._cpp_extensions: + input_opt = "/Tp" + src + elif ext in self._rc_extensions: + # compile .RC to .RES file + input_opt = src + output_opt = "/fo" + obj + try: + self.spawn ([self.rc] + pp_opts + + [output_opt] + [input_opt]) + except DistutilsExecError, msg: + raise CompileError, msg + continue + elif ext in self._mc_extensions: + + # Compile .MC to .RC file to .RES file. + # * '-h dir' specifies the directory for the + # generated include file + # * '-r dir' specifies the target directory of the + # generated RC file and the binary message resource + # it includes + # + # For now (since there are no options to change this), + # we use the source-directory for the include file and + # the build directory for the RC file and message + # resources. This works at least for win32all. + + h_dir = os.path.dirname (src) + rc_dir = os.path.dirname (obj) + try: + # first compile .MC to .RC and .H file + self.spawn ([self.mc] + + ['-h', h_dir, '-r', rc_dir] + [src]) + base, _ = os.path.splitext (os.path.basename (src)) + rc_file = os.path.join (rc_dir, base + '.rc') + # then compile .RC to .RES file + self.spawn ([self.rc] + + ["/fo" + obj] + [rc_file]) + + except DistutilsExecError, msg: + raise CompileError, msg + continue + else: + # how to handle this file? + raise CompileError ( + "Don't know how to compile %s to %s" % \ + (src, obj)) + + output_opt = "/Fo" + obj + try: + self.spawn ([self.cc] + compile_opts + pp_opts + + [input_opt, output_opt] + + extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + + return objects + + # compile () + + + def create_static_lib (self, + objects, + output_libname, + output_dir=None, + debug=0, + target_lang=None): + + (objects, output_dir) = self._fix_object_args (objects, output_dir) + output_filename = \ + self.library_filename (output_libname, output_dir=output_dir) + + if self._need_link (objects, output_filename): + lib_args = objects + ['/OUT:' + output_filename] + if debug: + pass # XXX what goes here? + try: + self.spawn ([self.lib] + lib_args) + except DistutilsExecError, msg: + raise LibError, msg + + else: + log.debug("skipping %s (up-to-date)", output_filename) + + # create_static_lib () + + def link (self, + target_desc, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + + (objects, output_dir) = self._fix_object_args (objects, output_dir) + (libraries, library_dirs, runtime_library_dirs) = \ + self._fix_lib_args (libraries, library_dirs, runtime_library_dirs) + + if runtime_library_dirs: + self.warn ("I don't know what to do with 'runtime_library_dirs': " + + str (runtime_library_dirs)) + + lib_opts = gen_lib_options (self, + library_dirs, runtime_library_dirs, + libraries) + if output_dir is not None: + output_filename = os.path.join (output_dir, output_filename) + + if self._need_link (objects, output_filename): + + if target_desc == CCompiler.EXECUTABLE: + if debug: + ldflags = self.ldflags_shared_debug[1:] + else: + ldflags = self.ldflags_shared[1:] + else: + if debug: + ldflags = self.ldflags_shared_debug + else: + ldflags = self.ldflags_shared + + export_opts = [] + for sym in (export_symbols or []): + export_opts.append("/EXPORT:" + sym) + + ld_args = (ldflags + lib_opts + export_opts + + objects + ['/OUT:' + output_filename]) + + # The MSVC linker generates .lib and .exp files, which cannot be + # suppressed by any linker switches. The .lib files may even be + # needed! Make sure they are generated in the temporary build + # directory. Since they have different names for debug and release + # builds, they can go into the same directory. + if export_symbols is not None: + (dll_name, dll_ext) = os.path.splitext( + os.path.basename(output_filename)) + implib_file = os.path.join( + os.path.dirname(objects[0]), + self.library_filename(dll_name)) + ld_args.append ('/IMPLIB:' + implib_file) + + if extra_preargs: + ld_args[:0] = extra_preargs + if extra_postargs: + ld_args.extend(extra_postargs) + + self.mkpath (os.path.dirname (output_filename)) + try: + self.spawn ([self.linker] + ld_args) + except DistutilsExecError, msg: + raise LinkError, msg + + else: + log.debug("skipping %s (up-to-date)", output_filename) + + # link () + + + # -- Miscellaneous methods ----------------------------------------- + # These are all used by the 'gen_lib_options() function, in + # ccompiler.py. + + def library_dir_option (self, dir): + return "/LIBPATH:" + dir + + def runtime_library_dir_option (self, dir): + raise DistutilsPlatformError, \ + "don't know how to set runtime library search path for MSVC++" + + def library_option (self, lib): + return self.library_filename (lib) + + + def find_library_file (self, dirs, lib, debug=0): + # Prefer a debugging library if found (and requested), but deal + # with it if we don't have one. + if debug: + try_names = [lib + "_d", lib] + else: + try_names = [lib] + for dir in dirs: + for name in try_names: + libfile = os.path.join(dir, self.library_filename (name)) + if os.path.exists(libfile): + return libfile + else: + # Oops, didn't find it in *any* of 'dirs' + return None + + # find_library_file () + +# class MSVCCompiler diff --git a/wxPython/distutils/mwerkscompiler.py b/wxPython/distutils/mwerkscompiler.py new file mode 100644 index 0000000000..d546de1f25 --- /dev/null +++ b/wxPython/distutils/mwerkscompiler.py @@ -0,0 +1,248 @@ +"""distutils.mwerkscompiler + +Contains MWerksCompiler, an implementation of the abstract CCompiler class +for MetroWerks CodeWarrior on the Macintosh. Needs work to support CW on +Windows.""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from types import * +from distutils.errors import \ + DistutilsExecError, DistutilsPlatformError, \ + CompileError, LibError, LinkError +from distutils.ccompiler import \ + CCompiler, gen_preprocess_options, gen_lib_options +import distutils.util +import distutils.dir_util +from distutils import log +import mkcwproject + +class MWerksCompiler (CCompiler) : + """Concrete class that implements an interface to MetroWerks CodeWarrior, + as defined by the CCompiler abstract class.""" + + compiler_type = 'mwerks' + + # Just set this so CCompiler's constructor doesn't barf. We currently + # don't use the 'set_executables()' bureaucracy provided by CCompiler, + # as it really isn't necessary for this sort of single-compiler class. + # Would be nice to have a consistent interface with UnixCCompiler, + # though, so it's worth thinking about. + executables = {} + + # Private class data (need to distinguish C from C++ source for compiler) + _c_extensions = ['.c'] + _cpp_extensions = ['.cc', '.cpp', '.cxx'] + _rc_extensions = ['.r'] + _exp_extension = '.exp' + + # Needed for the filename generation methods provided by the + # base class, CCompiler. + src_extensions = (_c_extensions + _cpp_extensions + + _rc_extensions) + res_extension = '.rsrc' + obj_extension = '.obj' # Not used, really + static_lib_extension = '.lib' + shared_lib_extension = '.slb' + static_lib_format = shared_lib_format = '%s%s' + exe_extension = '' + + + def __init__ (self, + verbose=0, + dry_run=0, + force=0): + + CCompiler.__init__ (self, verbose, dry_run, force) + + + def compile (self, + sources, + output_dir=None, + macros=None, + include_dirs=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + depends=None): + (output_dir, macros, include_dirs) = \ + self._fix_compile_args (output_dir, macros, include_dirs) + self.__sources = sources + self.__macros = macros + self.__include_dirs = include_dirs + # Don't need extra_preargs and extra_postargs for CW + return [] + + def link (self, + target_desc, + objects, + output_filename, + output_dir=None, + libraries=None, + library_dirs=None, + runtime_library_dirs=None, + export_symbols=None, + debug=0, + extra_preargs=None, + extra_postargs=None, + build_temp=None, + target_lang=None): + # First fixup. + (objects, output_dir) = self._fix_object_args (objects, output_dir) + (libraries, library_dirs, runtime_library_dirs) = \ + self._fix_lib_args (libraries, library_dirs, runtime_library_dirs) + + # First examine a couple of options for things that aren't implemented yet + if not target_desc in (self.SHARED_LIBRARY, self.SHARED_OBJECT): + raise DistutilsPlatformError, 'Can only make SHARED_LIBRARY or SHARED_OBJECT targets on the Mac' + if runtime_library_dirs: + raise DistutilsPlatformError, 'Runtime library dirs not implemented yet' + if extra_preargs or extra_postargs: + raise DistutilsPlatformError, 'Runtime library dirs not implemented yet' + if len(export_symbols) != 1: + raise DistutilsPlatformError, 'Need exactly one export symbol' + # Next there are various things for which we need absolute pathnames. + # This is because we (usually) create the project in a subdirectory of + # where we are now, and keeping the paths relative is too much work right + # now. + sources = map(self._filename_to_abs, self.__sources) + include_dirs = map(self._filename_to_abs, self.__include_dirs) + if objects: + objects = map(self._filename_to_abs, objects) + else: + objects = [] + if build_temp: + build_temp = self._filename_to_abs(build_temp) + else: + build_temp = os.curdir() + if output_dir: + output_filename = os.path.join(output_dir, output_filename) + # The output filename needs special handling: splitting it into dir and + # filename part. Actually I'm not sure this is really needed, but it + # can't hurt. + output_filename = self._filename_to_abs(output_filename) + output_dir, output_filename = os.path.split(output_filename) + # Now we need the short names of a couple of things for putting them + # into the project. + if output_filename[-8:] == '.ppc.slb': + basename = output_filename[:-8] + elif output_filename[-11:] == '.carbon.slb': + basename = output_filename[:-11] + else: + basename = os.path.strip(output_filename)[0] + projectname = basename + '.mcp' + targetname = basename + xmlname = basename + '.xml' + exportname = basename + '.mcp.exp' + prefixname = 'mwerks_%s_config.h'%basename + # Create the directories we need + distutils.dir_util.mkpath(build_temp, dry_run=self.dry_run) + distutils.dir_util.mkpath(output_dir, dry_run=self.dry_run) + # And on to filling in the parameters for the project builder + settings = {} + settings['mac_exportname'] = exportname + settings['mac_outputdir'] = output_dir + settings['mac_dllname'] = output_filename + settings['mac_targetname'] = targetname + settings['sysprefix'] = sys.prefix + settings['mac_sysprefixtype'] = 'Absolute' + sourcefilenames = [] + sourcefiledirs = [] + for filename in sources + objects: + dirname, filename = os.path.split(filename) + sourcefilenames.append(filename) + if not dirname in sourcefiledirs: + sourcefiledirs.append(dirname) + settings['sources'] = sourcefilenames + settings['libraries'] = libraries + settings['extrasearchdirs'] = sourcefiledirs + include_dirs + library_dirs + if self.dry_run: + print 'CALLING LINKER IN', os.getcwd() + for key, value in settings.items(): + print '%20.20s %s'%(key, value) + return + # Build the export file + exportfilename = os.path.join(build_temp, exportname) + log.debug("\tCreate export file %s", exportfilename) + fp = open(exportfilename, 'w') + fp.write('%s\n'%export_symbols[0]) + fp.close() + # Generate the prefix file, if needed, and put it in the settings + if self.__macros: + prefixfilename = os.path.join(os.getcwd(), os.path.join(build_temp, prefixname)) + fp = open(prefixfilename, 'w') + fp.write('#include "mwerks_shcarbon_config.h"\n') + for name, value in self.__macros: + if value is None: + fp.write('#define %s\n'%name) + else: + fp.write('#define %s %s\n'%(name, value)) + fp.close() + settings['prefixname'] = prefixname + + # Build the XML file. We need the full pathname (only lateron, really) + # because we pass this pathname to CodeWarrior in an AppleEvent, and CW + # doesn't have a clue about our working directory. + xmlfilename = os.path.join(os.getcwd(), os.path.join(build_temp, xmlname)) + log.debug("\tCreate XML file %s", xmlfilename) + xmlbuilder = mkcwproject.cwxmlgen.ProjectBuilder(settings) + xmlbuilder.generate() + xmldata = settings['tmp_projectxmldata'] + fp = open(xmlfilename, 'w') + fp.write(xmldata) + fp.close() + # Generate the project. Again a full pathname. + projectfilename = os.path.join(os.getcwd(), os.path.join(build_temp, projectname)) + log.debug('\tCreate project file %s', projectfilename) + mkcwproject.makeproject(xmlfilename, projectfilename) + # And build it + log.debug('\tBuild project') + mkcwproject.buildproject(projectfilename) + + def _filename_to_abs(self, filename): + # Some filenames seem to be unix-like. Convert to Mac names. +## if '/' in filename and ':' in filename: +## raise DistutilsPlatformError, 'Filename may be Unix or Mac style: %s'%filename +## if '/' in filename: +## filename = macurl2path(filename) + filename = distutils.util.convert_path(filename) + if not os.path.isabs(filename): + curdir = os.getcwd() + filename = os.path.join(curdir, filename) + # Finally remove .. components + components = string.split(filename, ':') + for i in range(1, len(components)): + if components[i] == '..': + components[i] = '' + return string.join(components, ':') + + def library_dir_option (self, dir): + """Return the compiler option to add 'dir' to the list of + directories searched for libraries. + """ + return # XXXX Not correct... + + def runtime_library_dir_option (self, dir): + """Return the compiler option to add 'dir' to the list of + directories searched for runtime libraries. + """ + # Nothing needed or Mwerks/Mac. + return + + def library_option (self, lib): + """Return the compiler option to add 'dir' to the list of libraries + linked into the shared library or executable. + """ + return + + def find_library_file (self, dirs, lib, debug=0): + """Search the specified list of directories for a static or shared + library file 'lib' and return the full path to that file. If + 'debug' true, look for a debugging version (if that makes sense on + the current platform). Return None if 'lib' wasn't found in any of + the specified directories. + """ + return 0 diff --git a/wxPython/distutils/spawn.py b/wxPython/distutils/spawn.py new file mode 100644 index 0000000000..4857ce5e63 --- /dev/null +++ b/wxPython/distutils/spawn.py @@ -0,0 +1,194 @@ +"""distutils.spawn + +Provides the 'spawn()' function, a front-end to various platform- +specific functions for launching another program in a sub-process. +Also provides the 'find_executable()' to search the path for a given +executable name. +""" + +# This module should be kept compatible with Python 1.5.2. + +__revision__ = "$Id$" + +import sys, os, string +from distutils.errors import * +from distutils import log + +def spawn (cmd, + search_path=1, + verbose=0, + dry_run=0): + + """Run another program, specified as a command list 'cmd', in a new + process. 'cmd' is just the argument list for the new process, ie. + cmd[0] is the program to run and cmd[1:] are the rest of its arguments. + There is no way to run a program with a name different from that of its + executable. + + If 'search_path' is true (the default), the system's executable + search path will be used to find the program; otherwise, cmd[0] + must be the exact path to the executable. If 'dry_run' is true, + the command will not actually be run. + + Raise DistutilsExecError if running the program fails in any way; just + return on success. + """ + if os.name == 'posix': + _spawn_posix(cmd, search_path, dry_run=dry_run) + elif os.name == 'nt': + _spawn_nt(cmd, search_path, dry_run=dry_run) + elif os.name == 'os2': + _spawn_os2(cmd, search_path, dry_run=dry_run) + else: + raise DistutilsPlatformError, \ + "don't know how to spawn programs on platform '%s'" % os.name + +# spawn () + + +def _nt_quote_args (args): + """Quote command-line arguments for DOS/Windows conventions: just + wraps every argument which contains blanks in double quotes, and + returns a new argument list. + """ + + # XXX this doesn't seem very robust to me -- but if the Windows guys + # say it'll work, I guess I'll have to accept it. (What if an arg + # contains quotes? What other magic characters, other than spaces, + # have to be escaped? Is there an escaping mechanism other than + # quoting?) + + for i in range(len(args)): + if string.find(args[i], ' ') != -1: + args[i] = '"%s"' % args[i] + return args + +def _spawn_nt (cmd, + search_path=1, + verbose=0, + dry_run=0): + + executable = cmd[0] + cmd = _nt_quote_args(cmd) + if search_path: + # either we find one or it stays the same + executable = find_executable(executable) or executable + log.info(string.join([executable] + cmd[1:], ' ')) + if not dry_run: + # spawn for NT requires a full path to the .exe + try: + rc = os.spawnv(os.P_WAIT, executable, cmd) + except OSError, exc: + # this seems to happen when the command isn't found + raise DistutilsExecError, \ + "command '%s' failed: %s" % (cmd[0], exc[-1]) + if rc != 0: + # and this reflects the command running but failing + raise DistutilsExecError, \ + "command '%s' failed with exit status %d" % (cmd[0], rc) + + +def _spawn_os2 (cmd, + search_path=1, + verbose=0, + dry_run=0): + + executable = cmd[0] + #cmd = _nt_quote_args(cmd) + if search_path: + # either we find one or it stays the same + executable = find_executable(executable) or executable + log.info(string.join([executable] + cmd[1:], ' ')) + if not dry_run: + # spawnv for OS/2 EMX requires a full path to the .exe + try: + rc = os.spawnv(os.P_WAIT, executable, cmd) + except OSError, exc: + # this seems to happen when the command isn't found + raise DistutilsExecError, \ + "command '%s' failed: %s" % (cmd[0], exc[-1]) + if rc != 0: + # and this reflects the command running but failing + print "command '%s' failed with exit status %d" % (cmd[0], rc) + raise DistutilsExecError, \ + "command '%s' failed with exit status %d" % (cmd[0], rc) + + +def _spawn_posix (cmd, + search_path=1, + verbose=0, + dry_run=0): + + log.info(string.join(cmd, ' ')) + if dry_run: + return + exec_fn = search_path and os.execvp or os.execv + + pid = os.fork() + + if pid == 0: # in the child + try: + #print "cmd[0] =", cmd[0] + #print "cmd =", cmd + exec_fn(cmd[0], cmd) + except OSError, e: + sys.stderr.write("unable to execute %s: %s\n" % + (cmd[0], e.strerror)) + os._exit(1) + + sys.stderr.write("unable to execute %s for unknown reasons" % cmd[0]) + os._exit(1) + + + else: # in the parent + # Loop until the child either exits or is terminated by a signal + # (ie. keep waiting if it's merely stopped) + while 1: + (pid, status) = os.waitpid(pid, 0) + if os.WIFSIGNALED(status): + raise DistutilsExecError, \ + "command '%s' terminated by signal %d" % \ + (cmd[0], os.WTERMSIG(status)) + + elif os.WIFEXITED(status): + exit_status = os.WEXITSTATUS(status) + if exit_status == 0: + return # hey, it succeeded! + else: + raise DistutilsExecError, \ + "command '%s' failed with exit status %d" % \ + (cmd[0], exit_status) + + elif os.WIFSTOPPED(status): + continue + + else: + raise DistutilsExecError, \ + "unknown error executing '%s': termination status %d" % \ + (cmd[0], status) +# _spawn_posix () + + +def find_executable(executable, path=None): + """Try to find 'executable' in the directories listed in 'path' (a + string listing directories separated by 'os.pathsep'; defaults to + os.environ['PATH']). Returns the complete filename or None if not + found. + """ + if path is None: + path = os.environ['PATH'] + paths = string.split(path, os.pathsep) + (base, ext) = os.path.splitext(executable) + if (sys.platform == 'win32' or os.name == 'os2') and (ext != '.exe'): + executable = executable + '.exe' + if not os.path.isfile(executable): + for p in paths: + f = os.path.join(p, executable) + if os.path.isfile(f): + # the file exists, we have a shot at spawn working + return f + return None + else: + return executable + +# find_executable() diff --git a/wxPython/distutils/sysconfig.py b/wxPython/distutils/sysconfig.py new file mode 100644 index 0000000000..67353a8d64 --- /dev/null +++ b/wxPython/distutils/sysconfig.py @@ -0,0 +1,495 @@ +"""Provide access to Python's configuration information. The specific +configuration variables available depend heavily on the platform and +configuration. The values may be retrieved using +get_config_var(name), and the list of variables is available via +get_config_vars().keys(). Additional convenience functions are also +available. + +Written by: Fred L. Drake, Jr. +Email: <fdrake@acm.org> +""" + +__revision__ = "$Id$" + +import os +import re +import string +import sys + +from errors import DistutilsPlatformError + +# These are needed in a couple of spots, so just compute them once. +PREFIX = os.path.normpath(sys.prefix) +EXEC_PREFIX = os.path.normpath(sys.exec_prefix) + +# python_build: (Boolean) if true, we're either building Python or +# building an extension with an un-installed Python, so we use +# different (hard-wired) directories. + +argv0_path = os.path.dirname(os.path.abspath(sys.executable)) +landmark = os.path.join(argv0_path, "Modules", "Setup") + +python_build = os.path.isfile(landmark) + +del argv0_path, landmark + + +def get_python_version (): + """Return a string containing the major and minor Python version, + leaving off the patchlevel. Sample return values could be '1.5' + or '2.2'. + """ + return sys.version[:3] + + +def get_python_inc(plat_specific=0, prefix=None): + """Return the directory containing installed Python header files. + + If 'plat_specific' is false (the default), this is the path to the + non-platform-specific header files, i.e. Python.h and so on; + otherwise, this is the path to platform-specific header files + (namely pyconfig.h). + + If 'prefix' is supplied, use it instead of sys.prefix or + sys.exec_prefix -- i.e., ignore 'plat_specific'. + """ + if prefix is None: + prefix = plat_specific and EXEC_PREFIX or PREFIX + if os.name == "posix": + if python_build: + base = os.path.dirname(os.path.abspath(sys.executable)) + if plat_specific: + inc_dir = base + else: + inc_dir = os.path.join(base, "Include") + if not os.path.exists(inc_dir): + inc_dir = os.path.join(os.path.dirname(base), "Include") + return inc_dir + return os.path.join(prefix, "include", "python" + sys.version[:3]) + elif os.name == "nt": + return os.path.join(prefix, "include") + elif os.name == "mac": + if plat_specific: + return os.path.join(prefix, "Mac", "Include") + else: + return os.path.join(prefix, "Include") + elif os.name == "os2": + return os.path.join(prefix, "Include") + else: + raise DistutilsPlatformError( + "I don't know where Python installs its C header files " + "on platform '%s'" % os.name) + + +def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + """Return the directory containing the Python library (standard or + site additions). + + If 'plat_specific' is true, return the directory containing + platform-specific modules, i.e. any module from a non-pure-Python + module distribution; otherwise, return the platform-shared library + directory. If 'standard_lib' is true, return the directory + containing standard Python library modules; otherwise, return the + directory for site-specific modules. + + If 'prefix' is supplied, use it instead of sys.prefix or + sys.exec_prefix -- i.e., ignore 'plat_specific'. + """ + if prefix is None: + prefix = plat_specific and EXEC_PREFIX or PREFIX + + if os.name == "posix": + libpython = os.path.join(prefix, + "lib", "python" + get_python_version()) + if standard_lib: + return libpython + else: + return os.path.join(libpython, "site-packages") + + elif os.name == "nt": + if standard_lib: + return os.path.join(prefix, "Lib") + else: + if sys.version < "2.2": + return prefix + else: + return os.path.join(PREFIX, "Lib", "site-packages") + + elif os.name == "mac": + if plat_specific: + if standard_lib: + return os.path.join(prefix, "Lib", "lib-dynload") + else: + return os.path.join(prefix, "Lib", "site-packages") + else: + if standard_lib: + return os.path.join(prefix, "Lib") + else: + return os.path.join(prefix, "Lib", "site-packages") + + elif os.name == "os2": + if standard_lib: + return os.path.join(PREFIX, "Lib") + else: + return os.path.join(PREFIX, "Lib", "site-packages") + + else: + raise DistutilsPlatformError( + "I don't know where Python installs its library " + "on platform '%s'" % os.name) + + +def customize_compiler(compiler): + """Do any platform-specific customization of a CCompiler instance. + + Mainly needed on Unix, so we can plug in the information that + varies across Unices and is stored in Python's Makefile. + """ + if compiler.compiler_type == "unix": + (cc, cxx, opt, basecflags, ccshared, ldshared, so_ext) = \ + get_config_vars('CC', 'CXX', 'OPT', 'BASECFLAGS', 'CCSHARED', 'LDSHARED', 'SO') + + if os.environ.has_key('CC'): + cc = os.environ['CC'] + if os.environ.has_key('CXX'): + cxx = os.environ['CXX'] + if os.environ.has_key('CPP'): + cpp = os.environ['CPP'] + else: + cpp = cc + " -E" # not always + if os.environ.has_key('LDFLAGS'): + ldshared = ldshared + ' ' + os.environ['LDFLAGS'] + if basecflags: + opt = basecflags + ' ' + opt + if os.environ.has_key('CFLAGS'): + opt = opt + ' ' + os.environ['CFLAGS'] + ldshared = ldshared + ' ' + os.environ['CFLAGS'] + if os.environ.has_key('CPPFLAGS'): + cpp = cpp + ' ' + os.environ['CPPFLAGS'] + opt = opt + ' ' + os.environ['CPPFLAGS'] + ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] + + cc_cmd = cc + ' ' + opt + compiler.set_executables( + preprocessor=cpp, + compiler=cc_cmd, + compiler_so=cc_cmd + ' ' + ccshared, + compiler_cxx=cxx, + linker_so=ldshared, + linker_exe=cc) + + compiler.shared_lib_extension = so_ext + + +def get_config_h_filename(): + """Return full pathname of installed pyconfig.h file.""" + if python_build: + inc_dir = os.curdir + else: + inc_dir = get_python_inc(plat_specific=1) + if sys.version < '2.2': + config_h = 'config.h' + else: + # The name of the config.h file changed in 2.2 + config_h = 'pyconfig.h' + return os.path.join(inc_dir, config_h) + + +def get_makefile_filename(): + """Return full pathname of installed Makefile from the Python build.""" + if python_build: + return os.path.join(os.path.dirname(sys.executable), "Makefile") + lib_dir = get_python_lib(plat_specific=1, standard_lib=1) + return os.path.join(lib_dir, "config", "Makefile") + + +def parse_config_h(fp, g=None): + """Parse a config.h-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + if g is None: + g = {} + define_rx = re.compile("#define ([A-Z][A-Z0-9_]+) (.*)\n") + undef_rx = re.compile("/[*] #undef ([A-Z][A-Z0-9_]+) [*]/\n") + # + while 1: + line = fp.readline() + if not line: + break + m = define_rx.match(line) + if m: + n, v = m.group(1, 2) + try: v = int(v) + except ValueError: pass + g[n] = v + else: + m = undef_rx.match(line) + if m: + g[m.group(1)] = 0 + return g + + +# Regexes needed for parsing Makefile (and similar syntaxes, +# like old-style Setup files). +_variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") +_findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") +_findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") + +def parse_makefile(fn, g=None): + """Parse a Makefile-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + from distutils.text_file import TextFile + fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1) + + if g is None: + g = {} + done = {} + notdone = {} + + while 1: + line = fp.readline() + if line is None: # eof + break + m = _variable_rx.match(line) + if m: + n, v = m.group(1, 2) + v = string.strip(v) + if "$" in v: + notdone[n] = v + else: + try: v = int(v) + except ValueError: pass + done[n] = v + + # do variable interpolation here + while notdone: + for name in notdone.keys(): + value = notdone[name] + m = _findvar1_rx.search(value) or _findvar2_rx.search(value) + if m: + n = m.group(1) + if done.has_key(n): + after = value[m.end():] + value = value[:m.start()] + str(done[n]) + after + if "$" in after: + notdone[name] = value + else: + try: value = int(value) + except ValueError: + done[name] = string.strip(value) + else: + done[name] = value + del notdone[name] + elif notdone.has_key(n): + # get it on a subsequent round + pass + else: + done[n] = "" + after = value[m.end():] + value = value[:m.start()] + after + if "$" in after: + notdone[name] = value + else: + try: value = int(value) + except ValueError: + done[name] = string.strip(value) + else: + done[name] = value + del notdone[name] + else: + # bogus variable reference; just drop it since we can't deal + del notdone[name] + + fp.close() + + # save the results in the global dictionary + g.update(done) + return g + + +def expand_makefile_vars(s, vars): + """Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in + 'string' according to 'vars' (a dictionary mapping variable names to + values). Variables not present in 'vars' are silently expanded to the + empty string. The variable values in 'vars' should not contain further + variable expansions; if 'vars' is the output of 'parse_makefile()', + you're fine. Returns a variable-expanded version of 's'. + """ + + # This algorithm does multiple expansion, so if vars['foo'] contains + # "${bar}", it will expand ${foo} to ${bar}, and then expand + # ${bar}... and so forth. This is fine as long as 'vars' comes from + # 'parse_makefile()', which takes care of such expansions eagerly, + # according to make's variable expansion semantics. + + while 1: + m = _findvar1_rx.search(s) or _findvar2_rx.search(s) + if m: + (beg, end) = m.span() + s = s[0:beg] + vars.get(m.group(1)) + s[end:] + else: + break + return s + + +_config_vars = None + +def _init_posix(): + """Initialize the module as appropriate for POSIX systems.""" + g = {} + # load the installed Makefile: + try: + filename = get_makefile_filename() + parse_makefile(filename, g) + except IOError, msg: + my_msg = "invalid Python installation: unable to open %s" % filename + if hasattr(msg, "strerror"): + my_msg = my_msg + " (%s)" % msg.strerror + + raise DistutilsPlatformError(my_msg) + + + # On AIX, there are wrong paths to the linker scripts in the Makefile + # -- these paths are relative to the Python source, but when installed + # the scripts are in another directory. + if python_build: + g['LDSHARED'] = g['BLDSHARED'] + + elif sys.version < '2.1': + # The following two branches are for 1.5.2 compatibility. + if sys.platform == 'aix4': # what about AIX 3.x ? + # Linker script is in the config directory, not in Modules as the + # Makefile says. + python_lib = get_python_lib(standard_lib=1) + ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix') + python_exp = os.path.join(python_lib, 'config', 'python.exp') + + g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp) + + elif sys.platform == 'beos': + # Linker script is in the config directory. In the Makefile it is + # relative to the srcdir, which after installation no longer makes + # sense. + python_lib = get_python_lib(standard_lib=1) + linkerscript_path = string.split(g['LDSHARED'])[0] + linkerscript_name = os.path.basename(linkerscript_path) + linkerscript = os.path.join(python_lib, 'config', + linkerscript_name) + + # XXX this isn't the right place to do this: adding the Python + # library to the link, if needed, should be in the "build_ext" + # command. (It's also needed for non-MS compilers on Windows, and + # it's taken care of for them by the 'build_ext.get_libraries()' + # method.) + g['LDSHARED'] = ("%s -L%s/lib -lpython%s" % + (linkerscript, PREFIX, sys.version[0:3])) + + global _config_vars + _config_vars = g + + +def _init_nt(): + """Initialize the module as appropriate for NT""" + g = {} + # set basic install directories + g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) + g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) + + # XXX hmmm.. a normal install puts include files here + g['INCLUDEPY'] = get_python_inc(plat_specific=0) + + g['SO'] = '.pyd' + g['EXE'] = ".exe" + + global _config_vars + _config_vars = g + + +def _init_mac(): + """Initialize the module as appropriate for Macintosh systems""" + g = {} + # set basic install directories + g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) + g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) + + # XXX hmmm.. a normal install puts include files here + g['INCLUDEPY'] = get_python_inc(plat_specific=0) + + import MacOS + if not hasattr(MacOS, 'runtimemodel'): + g['SO'] = '.ppc.slb' + else: + g['SO'] = '.%s.slb' % MacOS.runtimemodel + + # XXX are these used anywhere? + g['install_lib'] = os.path.join(EXEC_PREFIX, "Lib") + g['install_platlib'] = os.path.join(EXEC_PREFIX, "Mac", "Lib") + + # These are used by the extension module build + g['srcdir'] = ':' + global _config_vars + _config_vars = g + + +def _init_os2(): + """Initialize the module as appropriate for OS/2""" + g = {} + # set basic install directories + g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) + g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) + + # XXX hmmm.. a normal install puts include files here + g['INCLUDEPY'] = get_python_inc(plat_specific=0) + + g['SO'] = '.pyd' + g['EXE'] = ".exe" + + global _config_vars + _config_vars = g + + +def get_config_vars(*args): + """With no arguments, return a dictionary of all configuration + variables relevant for the current platform. Generally this includes + everything needed to build extensions and install both pure modules and + extensions. On Unix, this means every variable defined in Python's + installed Makefile; on Windows and Mac OS it's a much smaller set. + + With arguments, return a list of values that result from looking up + each argument in the configuration variable dictionary. + """ + global _config_vars + if _config_vars is None: + func = globals().get("_init_" + os.name) + if func: + func() + else: + _config_vars = {} + + # Normalized versions of prefix and exec_prefix are handy to have; + # in fact, these are the standard versions used most places in the + # Distutils. + _config_vars['prefix'] = PREFIX + _config_vars['exec_prefix'] = EXEC_PREFIX + + if args: + vals = [] + for name in args: + vals.append(_config_vars.get(name)) + return vals + else: + return _config_vars + +def get_config_var(name): + """Return the value of a single variable using the dictionary + returned by 'get_config_vars()'. Equivalent to + get_config_vars().get(name) + """ + return get_config_vars().get(name) diff --git a/wxPython/distutils/text_file.py b/wxPython/distutils/text_file.py new file mode 100644 index 0000000000..67efd65e36 --- /dev/null +++ b/wxPython/distutils/text_file.py @@ -0,0 +1,382 @@ +"""text_file + +provides the TextFile class, which gives an interface to text files +that (optionally) takes care of stripping comments, ignoring blank +lines, and joining lines with backslashes.""" + +__revision__ = "$Id$" + +from types import * +import sys, os, string + + +class TextFile: + + """Provides a file-like object that takes care of all the things you + commonly want to do when processing a text file that has some + line-by-line syntax: strip comments (as long as "#" is your + comment character), skip blank lines, join adjacent lines by + escaping the newline (ie. backslash at end of line), strip + leading and/or trailing whitespace. All of these are optional + and independently controllable. + + Provides a 'warn()' method so you can generate warning messages that + report physical line number, even if the logical line in question + spans multiple physical lines. Also provides 'unreadline()' for + implementing line-at-a-time lookahead. + + Constructor is called as: + + TextFile (filename=None, file=None, **options) + + It bombs (RuntimeError) if both 'filename' and 'file' are None; + 'filename' should be a string, and 'file' a file object (or + something that provides 'readline()' and 'close()' methods). It is + recommended that you supply at least 'filename', so that TextFile + can include it in warning messages. If 'file' is not supplied, + TextFile creates its own using the 'open()' builtin. + + The options are all boolean, and affect the value returned by + 'readline()': + strip_comments [default: true] + strip from "#" to end-of-line, as well as any whitespace + leading up to the "#" -- unless it is escaped by a backslash + lstrip_ws [default: false] + strip leading whitespace from each line before returning it + rstrip_ws [default: true] + strip trailing whitespace (including line terminator!) from + each line before returning it + skip_blanks [default: true} + skip lines that are empty *after* stripping comments and + whitespace. (If both lstrip_ws and rstrip_ws are false, + then some lines may consist of solely whitespace: these will + *not* be skipped, even if 'skip_blanks' is true.) + join_lines [default: false] + if a backslash is the last non-newline character on a line + after stripping comments and whitespace, join the following line + to it to form one "logical line"; if N consecutive lines end + with a backslash, then N+1 physical lines will be joined to + form one logical line. + collapse_join [default: false] + strip leading whitespace from lines that are joined to their + predecessor; only matters if (join_lines and not lstrip_ws) + + Note that since 'rstrip_ws' can strip the trailing newline, the + semantics of 'readline()' must differ from those of the builtin file + object's 'readline()' method! In particular, 'readline()' returns + None for end-of-file: an empty string might just be a blank line (or + an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is + not.""" + + default_options = { 'strip_comments': 1, + 'skip_blanks': 1, + 'lstrip_ws': 0, + 'rstrip_ws': 1, + 'join_lines': 0, + 'collapse_join': 0, + } + + def __init__ (self, filename=None, file=None, **options): + """Construct a new TextFile object. At least one of 'filename' + (a string) and 'file' (a file-like object) must be supplied. + They keyword argument options are described above and affect + the values returned by 'readline()'.""" + + if filename is None and file is None: + raise RuntimeError, \ + "you must supply either or both of 'filename' and 'file'" + + # set values for all options -- either from client option hash + # or fallback to default_options + for opt in self.default_options.keys(): + if options.has_key (opt): + setattr (self, opt, options[opt]) + + else: + setattr (self, opt, self.default_options[opt]) + + # sanity check client option hash + for opt in options.keys(): + if not self.default_options.has_key (opt): + raise KeyError, "invalid TextFile option '%s'" % opt + + if file is None: + self.open (filename) + else: + self.filename = filename + self.file = file + self.current_line = 0 # assuming that file is at BOF! + + # 'linebuf' is a stack of lines that will be emptied before we + # actually read from the file; it's only populated by an + # 'unreadline()' operation + self.linebuf = [] + + + def open (self, filename): + """Open a new file named 'filename'. This overrides both the + 'filename' and 'file' arguments to the constructor.""" + + self.filename = filename + self.file = open (self.filename, 'r') + self.current_line = 0 + + + def close (self): + """Close the current file and forget everything we know about it + (filename, current line number).""" + + self.file.close () + self.file = None + self.filename = None + self.current_line = None + + + def gen_error (self, msg, line=None): + outmsg = [] + if line is None: + line = self.current_line + outmsg.append(self.filename + ", ") + if type (line) in (ListType, TupleType): + outmsg.append("lines %d-%d: " % tuple (line)) + else: + outmsg.append("line %d: " % line) + outmsg.append(str(msg)) + return string.join(outmsg, "") + + + def error (self, msg, line=None): + raise ValueError, "error: " + self.gen_error(msg, line) + + def warn (self, msg, line=None): + """Print (to stderr) a warning message tied to the current logical + line in the current file. If the current logical line in the + file spans multiple physical lines, the warning refers to the + whole range, eg. "lines 3-5". If 'line' supplied, it overrides + the current line number; it may be a list or tuple to indicate a + range of physical lines, or an integer for a single physical + line.""" + sys.stderr.write("warning: " + self.gen_error(msg, line) + "\n") + + + def readline (self): + """Read and return a single logical line from the current file (or + from an internal buffer if lines have previously been "unread" + with 'unreadline()'). If the 'join_lines' option is true, this + may involve reading multiple physical lines concatenated into a + single string. Updates the current line number, so calling + 'warn()' after 'readline()' emits a warning about the physical + line(s) just read. Returns None on end-of-file, since the empty + string can occur if 'rstrip_ws' is true but 'strip_blanks' is + not.""" + + # If any "unread" lines waiting in 'linebuf', return the top + # one. (We don't actually buffer read-ahead data -- lines only + # get put in 'linebuf' if the client explicitly does an + # 'unreadline()'. + if self.linebuf: + line = self.linebuf[-1] + del self.linebuf[-1] + return line + + buildup_line = '' + + while 1: + # read the line, make it None if EOF + line = self.file.readline() + if line == '': line = None + + if self.strip_comments and line: + + # Look for the first "#" in the line. If none, never + # mind. If we find one and it's the first character, or + # is not preceded by "\", then it starts a comment -- + # strip the comment, strip whitespace before it, and + # carry on. Otherwise, it's just an escaped "#", so + # unescape it (and any other escaped "#"'s that might be + # lurking in there) and otherwise leave the line alone. + + pos = string.find (line, "#") + if pos == -1: # no "#" -- no comments + pass + + # It's definitely a comment -- either "#" is the first + # character, or it's elsewhere and unescaped. + elif pos == 0 or line[pos-1] != "\\": + # Have to preserve the trailing newline, because it's + # the job of a later step (rstrip_ws) to remove it -- + # and if rstrip_ws is false, we'd better preserve it! + # (NB. this means that if the final line is all comment + # and has no trailing newline, we will think that it's + # EOF; I think that's OK.) + eol = (line[-1] == '\n') and '\n' or '' + line = line[0:pos] + eol + + # If all that's left is whitespace, then skip line + # *now*, before we try to join it to 'buildup_line' -- + # that way constructs like + # hello \\ + # # comment that should be ignored + # there + # result in "hello there". + if string.strip(line) == "": + continue + + else: # it's an escaped "#" + line = string.replace (line, "\\#", "#") + + + # did previous line end with a backslash? then accumulate + if self.join_lines and buildup_line: + # oops: end of file + if line is None: + self.warn ("continuation line immediately precedes " + "end-of-file") + return buildup_line + + if self.collapse_join: + line = string.lstrip (line) + line = buildup_line + line + + # careful: pay attention to line number when incrementing it + if type (self.current_line) is ListType: + self.current_line[1] = self.current_line[1] + 1 + else: + self.current_line = [self.current_line, + self.current_line+1] + # just an ordinary line, read it as usual + else: + if line is None: # eof + return None + + # still have to be careful about incrementing the line number! + if type (self.current_line) is ListType: + self.current_line = self.current_line[1] + 1 + else: + self.current_line = self.current_line + 1 + + + # strip whitespace however the client wants (leading and + # trailing, or one or the other, or neither) + if self.lstrip_ws and self.rstrip_ws: + line = string.strip (line) + elif self.lstrip_ws: + line = string.lstrip (line) + elif self.rstrip_ws: + line = string.rstrip (line) + + # blank line (whether we rstrip'ed or not)? skip to next line + # if appropriate + if (line == '' or line == '\n') and self.skip_blanks: + continue + + if self.join_lines: + if line[-1] == '\\': + buildup_line = line[:-1] + continue + + if line[-2:] == '\\\n': + buildup_line = line[0:-2] + '\n' + continue + + # well, I guess there's some actual content there: return it + return line + + # readline () + + + def readlines (self): + """Read and return the list of all logical lines remaining in the + current file.""" + + lines = [] + while 1: + line = self.readline() + if line is None: + return lines + lines.append (line) + + + def unreadline (self, line): + """Push 'line' (a string) onto an internal buffer that will be + checked by future 'readline()' calls. Handy for implementing + a parser with line-at-a-time lookahead.""" + + self.linebuf.append (line) + + +if __name__ == "__main__": + test_data = """# test file + +line 3 \\ +# intervening comment + continues on next line +""" + # result 1: no fancy options + result1 = map (lambda x: x + "\n", string.split (test_data, "\n")[0:-1]) + + # result 2: just strip comments + result2 = ["\n", + "line 3 \\\n", + " continues on next line\n"] + + # result 3: just strip blank lines + result3 = ["# test file\n", + "line 3 \\\n", + "# intervening comment\n", + " continues on next line\n"] + + # result 4: default, strip comments, blank lines, and trailing whitespace + result4 = ["line 3 \\", + " continues on next line"] + + # result 5: strip comments and blanks, plus join lines (but don't + # "collapse" joined lines + result5 = ["line 3 continues on next line"] + + # result 6: strip comments and blanks, plus join lines (and + # "collapse" joined lines + result6 = ["line 3 continues on next line"] + + def test_input (count, description, file, expected_result): + result = file.readlines () + # result = string.join (result, '') + if result == expected_result: + print "ok %d (%s)" % (count, description) + else: + print "not ok %d (%s):" % (count, description) + print "** expected:" + print expected_result + print "** received:" + print result + + + filename = "test.txt" + out_file = open (filename, "w") + out_file.write (test_data) + out_file.close () + + in_file = TextFile (filename, strip_comments=0, skip_blanks=0, + lstrip_ws=0, rstrip_ws=0) + test_input (1, "no processing", in_file, result1) + + in_file = TextFile (filename, strip_comments=1, skip_blanks=0, + lstrip_ws=0, rstrip_ws=0) + test_input (2, "strip comments", in_file, result2) + + in_file = TextFile (filename, strip_comments=0, skip_blanks=1, + lstrip_ws=0, rstrip_ws=0) + test_input (3, "strip blanks", in_file, result3) + + in_file = TextFile (filename) + test_input (4, "default processing", in_file, result4) + + in_file = TextFile (filename, strip_comments=1, skip_blanks=1, + join_lines=1, rstrip_ws=1) + test_input (5, "join lines without collapsing", in_file, result5) + + in_file = TextFile (filename, strip_comments=1, skip_blanks=1, + join_lines=1, rstrip_ws=1, collapse_join=1) + test_input (6, "join lines with collapsing", in_file, result6) + + os.remove (filename) diff --git a/wxPython/distutils/unixccompiler.py b/wxPython/distutils/unixccompiler.py new file mode 100644 index 0000000000..2a6b1beeea --- /dev/null +++ b/wxPython/distutils/unixccompiler.py @@ -0,0 +1,233 @@ +"""distutils.unixccompiler + +Contains the UnixCCompiler class, a subclass of CCompiler that handles +the "typical" Unix-style command-line C compiler: + * macros defined with -Dname[=value] + * macros undefined with -Uname + * include search directories specified with -Idir + * libraries specified with -lllib + * library search directories specified with -Ldir + * compile handled by 'cc' (or similar) executable with -c option: + compiles .c to .o + * link static library handled by 'ar' command (possibly with 'ranlib') + * link shared library handled by 'cc -shared' +""" + +__revision__ = "$Id$" + +import os, sys +from types import StringType, NoneType +from copy import copy + +from distutils import sysconfig +from distutils.dep_util import newer +from distutils.ccompiler import \ + CCompiler, gen_preprocess_options, gen_lib_options +from distutils.errors import \ + DistutilsExecError, CompileError, LibError, LinkError +from distutils import log + +# XXX Things not currently handled: +# * optimization/debug/warning flags; we just use whatever's in Python's +# Makefile and live with it. Is this adequate? If not, we might +# have to have a bunch of subclasses GNUCCompiler, SGICCompiler, +# SunCCompiler, and I suspect down that road lies madness. +# * even if we don't know a warning flag from an optimization flag, +# we need some way for outsiders to feed preprocessor/compiler/linker +# flags in to us -- eg. a sysadmin might want to mandate certain flags +# via a site config file, or a user might want to set something for +# compiling this module distribution only via the setup.py command +# line, whatever. As long as these options come from something on the +# current system, they can be as system-dependent as they like, and we +# should just happily stuff them into the preprocessor/compiler/linker +# options and carry on. + +class UnixCCompiler(CCompiler): + + compiler_type = 'unix' + + # These are used by CCompiler in two places: the constructor sets + # instance attributes 'preprocessor', 'compiler', etc. from them, and + # 'set_executable()' allows any of these to be set. The defaults here + # are pretty generic; they will probably have to be set by an outsider + # (eg. using information discovered by the sysconfig about building + # Python extensions). + executables = {'preprocessor' : None, + 'compiler' : ["cc"], + 'compiler_so' : ["cc"], + 'compiler_cxx' : ["cc"], + 'linker_so' : ["cc", "-shared"], + 'linker_exe' : ["cc"], + 'archiver' : ["ar", "-cr"], + 'ranlib' : None, + } + + if sys.platform[:6] == "darwin": + executables['ranlib'] = ["ranlib"] + + # Needed for the filename generation methods provided by the base + # class, CCompiler. NB. whoever instantiates/uses a particular + # UnixCCompiler instance should set 'shared_lib_ext' -- we set a + # reasonable common default here, but it's not necessarily used on all + # Unices! + + src_extensions = [".c",".C",".cc",".cxx",".cpp",".m"] + obj_extension = ".o" + static_lib_extension = ".a" + shared_lib_extension = ".so" + dylib_lib_extension = ".dylib" + static_lib_format = shared_lib_format = dylib_lib_format = "lib%s%s" + + def preprocess(self, source, + output_file=None, macros=None, include_dirs=None, + extra_preargs=None, extra_postargs=None): + ignore, macros, include_dirs = \ + self._fix_compile_args(None, macros, include_dirs) + pp_opts = gen_preprocess_options(macros, include_dirs) + pp_args = self.preprocessor + pp_opts + if output_file: + pp_args.extend(['-o', output_file]) + if extra_preargs: + pp_args[:0] = extra_preargs + if extra_postargs: + pp_args.extend(extra_postargs) + pp_args.append(source) + + # We need to preprocess: either we're being forced to, or we're + # generating output to stdout, or there's a target output file and + # the source file is newer than the target (or the target doesn't + # exist). + if self.force or output_file is None or newer(source, output_file): + if output_file: + self.mkpath(os.path.dirname(output_file)) + try: + self.spawn(pp_args) + except DistutilsExecError, msg: + raise CompileError, msg + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + try: + self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + + extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + + def create_static_lib(self, objects, output_libname, + output_dir=None, debug=0, target_lang=None): + objects, output_dir = self._fix_object_args(objects, output_dir) + + output_filename = \ + self.library_filename(output_libname, output_dir=output_dir) + + if self._need_link(objects, output_filename): + self.mkpath(os.path.dirname(output_filename)) + self.spawn(self.archiver + + [output_filename] + + objects + self.objects) + + # Not many Unices required ranlib anymore -- SunOS 4.x is, I + # think the only major Unix that does. Maybe we need some + # platform intelligence here to skip ranlib if it's not + # needed -- or maybe Python's configure script took care of + # it for us, hence the check for leading colon. + if self.ranlib: + try: + self.spawn(self.ranlib + [output_filename]) + except DistutilsExecError, msg: + raise LibError, msg + else: + log.debug("skipping %s (up-to-date)", output_filename) + + def link(self, target_desc, objects, + output_filename, output_dir=None, libraries=None, + library_dirs=None, runtime_library_dirs=None, + export_symbols=None, debug=0, extra_preargs=None, + extra_postargs=None, build_temp=None, target_lang=None): + objects, output_dir = self._fix_object_args(objects, output_dir) + libraries, library_dirs, runtime_library_dirs = \ + self._fix_lib_args(libraries, library_dirs, runtime_library_dirs) + + lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, + libraries) + if type(output_dir) not in (StringType, NoneType): + raise TypeError, "'output_dir' must be a string or None" + if output_dir is not None: + output_filename = os.path.join(output_dir, output_filename) + + if self._need_link(objects, output_filename): + ld_args = (objects + self.objects + + lib_opts + ['-o', output_filename]) + if debug: + ld_args[:0] = ['-g'] + if extra_preargs: + ld_args[:0] = extra_preargs + if extra_postargs: + ld_args.extend(extra_postargs) + self.mkpath(os.path.dirname(output_filename)) + try: + if target_desc == CCompiler.EXECUTABLE: + linker = self.linker_exe[:] + else: + linker = self.linker_so[:] + if target_lang == "c++" and self.compiler_cxx: + linker[0] = self.compiler_cxx[0] + self.spawn(linker + ld_args) + except DistutilsExecError, msg: + raise LinkError, msg + else: + log.debug("skipping %s (up-to-date)", output_filename) + + # -- Miscellaneous methods ----------------------------------------- + # These are all used by the 'gen_lib_options() function, in + # ccompiler.py. + + def library_dir_option(self, dir): + return "-L" + dir + + def runtime_library_dir_option(self, dir): + # XXX Hackish, at the very least. See Python bug #445902: + # http://sourceforge.net/tracker/index.php + # ?func=detail&aid=445902&group_id=5470&atid=105470 + # Linkers on different platforms need different options to + # specify that directories need to be added to the list of + # directories searched for dependencies when a dynamic library + # is sought. GCC has to be told to pass the -R option through + # to the linker, whereas other compilers just know this. + # Other compilers may need something slightly different. At + # this time, there's no way to determine this information from + # the configuration data stored in the Python installation, so + # we use this hack. + compiler = os.path.basename(sysconfig.get_config_var("CC")) + if sys.platform[:6] == "darwin": + # MacOSX's linker doesn't understand the -R flag at all + return "-L" + dir + elif compiler[:3] == "gcc" or compiler[:3] == "g++": + return "-Wl,-R" + dir + else: + return "-R" + dir + + def library_option(self, lib): + return "-l" + lib + + def find_library_file(self, dirs, lib, debug=0): + shared_f = self.library_filename(lib, lib_type='shared') + dylib_f = self.library_filename(lib, lib_type='dylib') + static_f = self.library_filename(lib, lib_type='static') + + for dir in dirs: + shared = os.path.join(dir, shared_f) + dylib = os.path.join(dir, dylib_f) + static = os.path.join(dir, static_f) + # We're second-guessing the linker here, with not much hard + # data to go on: GCC seems to prefer the shared library, so I'm + # assuming that *all* Unix C compilers do. And of course I'm + # ignoring even GCC's "-static" option. So sue me. + if os.path.exists(dylib): + return dylib + elif os.path.exists(shared): + return shared + elif os.path.exists(static): + return static + + # Oops, didn't find it in *any* of 'dirs' + return None diff --git a/wxPython/distutils/util.py b/wxPython/distutils/util.py new file mode 100644 index 0000000000..dc3183b691 --- /dev/null +++ b/wxPython/distutils/util.py @@ -0,0 +1,460 @@ +"""distutils.util + +Miscellaneous utility functions -- anything that doesn't fit into +one of the other *util.py modules. +""" + +__revision__ = "$Id$" + +import sys, os, string, re +from distutils.errors import DistutilsPlatformError +from distutils.dep_util import newer +from distutils.spawn import spawn +from distutils import log + +def get_platform (): + """Return a string that identifies the current platform. This is used + mainly to distinguish platform-specific build directories and + platform-specific built distributions. Typically includes the OS name + and version and the architecture (as supplied by 'os.uname()'), + although the exact information included depends on the OS; eg. for IRIX + the architecture isn't particularly important (IRIX only runs on SGI + hardware), but for Linux the kernel version isn't particularly + important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + irix-5.3 + irix64-6.2 + + For non-POSIX platforms, currently just returns 'sys.platform'. + """ + if os.name != "posix" or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + + (osname, host, release, version, machine) = os.uname() + + # Convert the OS name to lowercase, remove '/' characters + # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") + osname = string.lower(osname) + osname = string.replace(osname, '/', '') + machine = string.replace(machine, ' ', '_') + + if osname[:5] == "linux": + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + elif osname[:5] == "sunos": + if release[0] >= "5": # SunOS 5 == Solaris 2 + osname = "solaris" + release = "%d.%s" % (int(release[0]) - 3, release[2:]) + # fall through to standard osname-release-machine representation + elif osname[:4] == "irix": # could be "irix64"! + return "%s-%s" % (osname, release) + elif osname[:3] == "aix": + return "%s-%s.%s" % (osname, version, release) + elif osname[:6] == "cygwin": + osname = "cygwin" + rel_re = re.compile (r'[\d.]+') + m = rel_re.match(release) + if m: + release = m.group() + + return "%s-%s-%s" % (osname, release, machine) + +# get_platform () + + +def convert_path (pathname): + """Return 'pathname' as a name that will work on the native filesystem, + i.e. split it on '/' and put it back together again using the current + directory separator. Needed because filenames in the setup script are + always supplied in Unix style, and have to be converted to the local + convention before we can actually use them in the filesystem. Raises + ValueError on non-Unix-ish systems if 'pathname' either starts or + ends with a slash. + """ + if os.sep == '/': + return pathname + if not pathname: + return pathname + if pathname[0] == '/': + raise ValueError, "path '%s' cannot be absolute" % pathname + if pathname[-1] == '/': + raise ValueError, "path '%s' cannot end with '/'" % pathname + + paths = string.split(pathname, '/') + while '.' in paths: + paths.remove('.') + if not paths: + return os.curdir + return apply(os.path.join, paths) + +# convert_path () + + +def change_root (new_root, pathname): + """Return 'pathname' with 'new_root' prepended. If 'pathname' is + relative, this is equivalent to "os.path.join(new_root,pathname)". + Otherwise, it requires making 'pathname' relative and then joining the + two, which is tricky on DOS/Windows and Mac OS. + """ + if os.name == 'posix': + if not os.path.isabs(pathname): + return os.path.join(new_root, pathname) + else: + return os.path.join(new_root, pathname[1:]) + + elif os.name == 'nt': + (drive, path) = os.path.splitdrive(pathname) + if path[0] == '\\': + path = path[1:] + return os.path.join(new_root, path) + + elif os.name == 'os2': + (drive, path) = os.path.splitdrive(pathname) + if path[0] == os.sep: + path = path[1:] + return os.path.join(new_root, path) + + elif os.name == 'mac': + if not os.path.isabs(pathname): + return os.path.join(new_root, pathname) + else: + # Chop off volume name from start of path + elements = string.split(pathname, ":", 1) + pathname = ":" + elements[1] + return os.path.join(new_root, pathname) + + else: + raise DistutilsPlatformError, \ + "nothing known about platform '%s'" % os.name + + +_environ_checked = 0 +def check_environ (): + """Ensure that 'os.environ' has all the environment variables we + guarantee that users can use in config files, command-line options, + etc. Currently this includes: + HOME - user's home directory (Unix only) + PLAT - description of the current platform, including hardware + and OS (see 'get_platform()') + """ + global _environ_checked + if _environ_checked: + return + + if os.name == 'posix' and not os.environ.has_key('HOME'): + import pwd + os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] + + if not os.environ.has_key('PLAT'): + os.environ['PLAT'] = get_platform() + + _environ_checked = 1 + + +def subst_vars (s, local_vars): + """Perform shell/Perl-style variable substitution on 'string'. Every + occurrence of '$' followed by a name is considered a variable, and + variable is substituted by the value found in the 'local_vars' + dictionary, or in 'os.environ' if it's not in 'local_vars'. + 'os.environ' is first checked/augmented to guarantee that it contains + certain values: see 'check_environ()'. Raise ValueError for any + variables not found in either 'local_vars' or 'os.environ'. + """ + check_environ() + def _subst (match, local_vars=local_vars): + var_name = match.group(1) + if local_vars.has_key(var_name): + return str(local_vars[var_name]) + else: + return os.environ[var_name] + + try: + return re.sub(r'\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s) + except KeyError, var: + raise ValueError, "invalid variable '$%s'" % var + +# subst_vars () + + +def grok_environment_error (exc, prefix="error: "): + """Generate a useful error message from an EnvironmentError (IOError or + OSError) exception object. Handles Python 1.5.1 and 1.5.2 styles, and + does what it can to deal with exception objects that don't have a + filename (which happens when the error is due to a two-file operation, + such as 'rename()' or 'link()'. Returns the error message as a string + prefixed with 'prefix'. + """ + # check for Python 1.5.2-style {IO,OS}Error exception objects + if hasattr(exc, 'filename') and hasattr(exc, 'strerror'): + if exc.filename: + error = prefix + "%s: %s" % (exc.filename, exc.strerror) + else: + # two-argument functions in posix module don't + # include the filename in the exception object! + error = prefix + "%s" % exc.strerror + else: + error = prefix + str(exc[-1]) + + return error + + +# Needed by 'split_quoted()' +_wordchars_re = re.compile(r'[^\\\'\"%s ]*' % string.whitespace) +_squote_re = re.compile(r"'(?:[^'\\]|\\.)*'") +_dquote_re = re.compile(r'"(?:[^"\\]|\\.)*"') + +def split_quoted (s): + """Split a string up according to Unix shell-like rules for quotes and + backslashes. In short: words are delimited by spaces, as long as those + spaces are not escaped by a backslash, or inside a quoted string. + Single and double quotes are equivalent, and the quote characters can + be backslash-escaped. The backslash is stripped from any two-character + escape sequence, leaving only the escaped character. The quote + characters are stripped from any quoted string. Returns a list of + words. + """ + + # This is a nice algorithm for splitting up a single string, since it + # doesn't require character-by-character examination. It was a little + # bit of a brain-bender to get it working right, though... + + s = string.strip(s) + words = [] + pos = 0 + + while s: + m = _wordchars_re.match(s, pos) + end = m.end() + if end == len(s): + words.append(s[:end]) + break + + if s[end] in string.whitespace: # unescaped, unquoted whitespace: now + words.append(s[:end]) # we definitely have a word delimiter + s = string.lstrip(s[end:]) + pos = 0 + + elif s[end] == '\\': # preserve whatever is being escaped; + # will become part of the current word + s = s[:end] + s[end+1:] + pos = end+1 + + else: + if s[end] == "'": # slurp singly-quoted string + m = _squote_re.match(s, end) + elif s[end] == '"': # slurp doubly-quoted string + m = _dquote_re.match(s, end) + else: + raise RuntimeError, \ + "this can't happen (bad char '%c')" % s[end] + + if m is None: + raise ValueError, \ + "bad string (mismatched %s quotes?)" % s[end] + + (beg, end) = m.span() + s = s[:beg] + s[beg+1:end-1] + s[end:] + pos = m.end() - 2 + + if pos >= len(s): + words.append(s) + break + + return words + +# split_quoted () + + +def execute (func, args, msg=None, verbose=0, dry_run=0): + """Perform some action that affects the outside world (eg. by + writing to the filesystem). Such actions are special because they + are disabled by the 'dry_run' flag. This method takes care of all + that bureaucracy for you; all you have to do is supply the + function to call and an argument tuple for it (to embody the + "external action" being performed), and an optional message to + print. + """ + if msg is None: + msg = "%s%s" % (func.__name__, `args`) + if msg[-2:] == ',)': # correct for singleton tuple + msg = msg[0:-2] + ')' + + log.info(msg) + if not dry_run: + apply(func, args) + + +def strtobool (val): + """Convert a string representation of truth to true (1) or false (0). + + True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values + are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if + 'val' is anything else. + """ + val = string.lower(val) + if val in ('y', 'yes', 't', 'true', 'on', '1'): + return 1 + elif val in ('n', 'no', 'f', 'false', 'off', '0'): + return 0 + else: + raise ValueError, "invalid truth value %s" % `val` + + +def byte_compile (py_files, + optimize=0, force=0, + prefix=None, base_dir=None, + verbose=1, dry_run=0, + direct=None): + """Byte-compile a collection of Python source files to either .pyc + or .pyo files in the same directory. 'py_files' is a list of files + to compile; any files that don't end in ".py" are silently skipped. + 'optimize' must be one of the following: + 0 - don't optimize (generate .pyc) + 1 - normal optimization (like "python -O") + 2 - extra optimization (like "python -OO") + If 'force' is true, all files are recompiled regardless of + timestamps. + + The source filename encoded in each bytecode file defaults to the + filenames listed in 'py_files'; you can modify these with 'prefix' and + 'basedir'. 'prefix' is a string that will be stripped off of each + source filename, and 'base_dir' is a directory name that will be + prepended (after 'prefix' is stripped). You can supply either or both + (or neither) of 'prefix' and 'base_dir', as you wish. + + If 'dry_run' is true, doesn't actually do anything that would + affect the filesystem. + + Byte-compilation is either done directly in this interpreter process + with the standard py_compile module, or indirectly by writing a + temporary script and executing it. Normally, you should let + 'byte_compile()' figure out to use direct compilation or not (see + the source for details). The 'direct' flag is used by the script + generated in indirect mode; unless you know what you're doing, leave + it set to None. + """ + + # First, if the caller didn't force us into direct or indirect mode, + # figure out which mode we should be in. We take a conservative + # approach: choose direct mode *only* if the current interpreter is + # in debug mode and optimize is 0. If we're not in debug mode (-O + # or -OO), we don't know which level of optimization this + # interpreter is running with, so we can't do direct + # byte-compilation and be certain that it's the right thing. Thus, + # always compile indirectly if the current interpreter is in either + # optimize mode, or if either optimization level was requested by + # the caller. + if direct is None: + direct = (__debug__ and optimize == 0) + + # "Indirect" byte-compilation: write a temporary script and then + # run it with the appropriate flags. + if not direct: + try: + from tempfile import mkstemp + (script_fd, script_name) = mkstemp(".py") + except ImportError: + from tempfile import mktemp + (script_fd, script_name) = None, mktemp(".py") + log.info("writing byte-compilation script '%s'", script_name) + if not dry_run: + if script_fd is not None: + script = os.fdopen(script_fd, "w") + else: + script = open(script_name, "w") + + script.write("""\ +from distutils.util import byte_compile +files = [ +""") + + # XXX would be nice to write absolute filenames, just for + # safety's sake (script should be more robust in the face of + # chdir'ing before running it). But this requires abspath'ing + # 'prefix' as well, and that breaks the hack in build_lib's + # 'byte_compile()' method that carefully tacks on a trailing + # slash (os.sep really) to make sure the prefix here is "just + # right". This whole prefix business is rather delicate -- the + # problem is that it's really a directory, but I'm treating it + # as a dumb string, so trailing slashes and so forth matter. + + #py_files = map(os.path.abspath, py_files) + #if prefix: + # prefix = os.path.abspath(prefix) + + script.write(string.join(map(repr, py_files), ",\n") + "]\n") + script.write(""" +byte_compile(files, optimize=%s, force=%s, + prefix=%s, base_dir=%s, + verbose=%s, dry_run=0, + direct=1) +""" % (`optimize`, `force`, `prefix`, `base_dir`, `verbose`)) + + script.close() + + cmd = [sys.executable, script_name] + if optimize == 1: + cmd.insert(1, "-O") + elif optimize == 2: + cmd.insert(1, "-OO") + spawn(cmd, dry_run=dry_run) + execute(os.remove, (script_name,), "removing %s" % script_name, + dry_run=dry_run) + + # "Direct" byte-compilation: use the py_compile module to compile + # right here, right now. Note that the script generated in indirect + # mode simply calls 'byte_compile()' in direct mode, a weird sort of + # cross-process recursion. Hey, it works! + else: + from py_compile import compile + + for file in py_files: + if file[-3:] != ".py": + # This lets us be lazy and not filter filenames in + # the "install_lib" command. + continue + + # Terminology from the py_compile module: + # cfile - byte-compiled file + # dfile - purported source filename (same as 'file' by default) + cfile = file + (__debug__ and "c" or "o") + dfile = file + if prefix: + if file[:len(prefix)] != prefix: + raise ValueError, \ + ("invalid prefix: filename %s doesn't start with %s" + % (`file`, `prefix`)) + dfile = dfile[len(prefix):] + if base_dir: + dfile = os.path.join(base_dir, dfile) + + cfile_base = os.path.basename(cfile) + if direct: + if force or newer(file, cfile): + log.info("byte-compiling %s to %s", file, cfile_base) + if not dry_run: + compile(file, cfile, dfile) + else: + log.debug("skipping byte-compilation of %s to %s", + file, cfile_base) + +# byte_compile () + +def rfc822_escape (header): + """Return a version of the string escaped for inclusion in an + RFC-822 header, by ensuring there are 8 spaces space after each newline. + """ + lines = string.split(header, '\n') + lines = map(string.strip, lines) + header = string.join(lines, '\n' + 8*' ') + return header diff --git a/wxPython/distutils/version.py b/wxPython/distutils/version.py new file mode 100644 index 0000000000..71a5614719 --- /dev/null +++ b/wxPython/distutils/version.py @@ -0,0 +1,299 @@ +# +# distutils/version.py +# +# Implements multiple version numbering conventions for the +# Python Module Distribution Utilities. +# +# $Id$ +# + +"""Provides classes to represent module version numbers (one class for +each style of version numbering). There are currently two such classes +implemented: StrictVersion and LooseVersion. + +Every version number class implements the following interface: + * the 'parse' method takes a string and parses it to some internal + representation; if the string is an invalid version number, + 'parse' raises a ValueError exception + * the class constructor takes an optional string argument which, + if supplied, is passed to 'parse' + * __str__ reconstructs the string that was passed to 'parse' (or + an equivalent string -- ie. one that will generate an equivalent + version number instance) + * __repr__ generates Python code to recreate the version number instance + * __cmp__ compares the current instance with either another instance + of the same class or a string (which will be parsed to an instance + of the same class, thus must follow the same rules) +""" + +import string, re +from types import StringType + +class Version: + """Abstract base class for version numbering classes. Just provides + constructor (__init__) and reproducer (__repr__), because those + seem to be the same for all version numbering classes. + """ + + def __init__ (self, vstring=None): + if vstring: + self.parse(vstring) + + def __repr__ (self): + return "%s ('%s')" % (self.__class__.__name__, str(self)) + + +# Interface for version-number classes -- must be implemented +# by the following classes (the concrete ones -- Version should +# be treated as an abstract class). +# __init__ (string) - create and take same action as 'parse' +# (string parameter is optional) +# parse (string) - convert a string representation to whatever +# internal representation is appropriate for +# this style of version numbering +# __str__ (self) - convert back to a string; should be very similar +# (if not identical to) the string supplied to parse +# __repr__ (self) - generate Python code to recreate +# the instance +# __cmp__ (self, other) - compare two version numbers ('other' may +# be an unparsed version string, or another +# instance of your version class) + + +class StrictVersion (Version): + + """Version numbering for anal retentives and software idealists. + Implements the standard interface for version number classes as + described above. A version number consists of two or three + dot-separated numeric components, with an optional "pre-release" tag + on the end. The pre-release tag consists of the letter 'a' or 'b' + followed by a number. If the numeric components of two version + numbers are equal, then one with a pre-release tag will always + be deemed earlier (lesser) than one without. + + The following are valid version numbers (shown in the order that + would be obtained by sorting according to the supplied cmp function): + + 0.4 0.4.0 (these two are equivalent) + 0.4.1 + 0.5a1 + 0.5b3 + 0.5 + 0.9.6 + 1.0 + 1.0.4a3 + 1.0.4b1 + 1.0.4 + + The following are examples of invalid version numbers: + + 1 + 2.7.2.2 + 1.3.a4 + 1.3pl1 + 1.3c4 + + The rationale for this version numbering system will be explained + in the distutils documentation. + """ + + version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$', + re.VERBOSE) + + + def parse (self, vstring): + match = self.version_re.match(vstring) + if not match: + raise ValueError, "invalid version number '%s'" % vstring + + (major, minor, patch, prerelease, prerelease_num) = \ + match.group(1, 2, 4, 5, 6) + + if patch: + self.version = tuple(map(string.atoi, [major, minor, patch])) + else: + self.version = tuple(map(string.atoi, [major, minor]) + [0]) + + if prerelease: + self.prerelease = (prerelease[0], string.atoi(prerelease_num)) + else: + self.prerelease = None + + + def __str__ (self): + + if self.version[2] == 0: + vstring = string.join(map(str, self.version[0:2]), '.') + else: + vstring = string.join(map(str, self.version), '.') + + if self.prerelease: + vstring = vstring + self.prerelease[0] + str(self.prerelease[1]) + + return vstring + + + def __cmp__ (self, other): + if isinstance(other, StringType): + other = StrictVersion(other) + + compare = cmp(self.version, other.version) + if (compare == 0): # have to compare prerelease + + # case 1: neither has prerelease; they're equal + # case 2: self has prerelease, other doesn't; other is greater + # case 3: self doesn't have prerelease, other does: self is greater + # case 4: both have prerelease: must compare them! + + if (not self.prerelease and not other.prerelease): + return 0 + elif (self.prerelease and not other.prerelease): + return -1 + elif (not self.prerelease and other.prerelease): + return 1 + elif (self.prerelease and other.prerelease): + return cmp(self.prerelease, other.prerelease) + + else: # numeric versions don't match -- + return compare # prerelease stuff doesn't matter + + +# end class StrictVersion + + +# The rules according to Greg Stein: +# 1) a version number has 1 or more numbers separate by a period or by +# sequences of letters. If only periods, then these are compared +# left-to-right to determine an ordering. +# 2) sequences of letters are part of the tuple for comparison and are +# compared lexicographically +# 3) recognize the numeric components may have leading zeroes +# +# The LooseVersion class below implements these rules: a version number +# string is split up into a tuple of integer and string components, and +# comparison is a simple tuple comparison. This means that version +# numbers behave in a predictable and obvious way, but a way that might +# not necessarily be how people *want* version numbers to behave. There +# wouldn't be a problem if people could stick to purely numeric version +# numbers: just split on period and compare the numbers as tuples. +# However, people insist on putting letters into their version numbers; +# the most common purpose seems to be: +# - indicating a "pre-release" version +# ('alpha', 'beta', 'a', 'b', 'pre', 'p') +# - indicating a post-release patch ('p', 'pl', 'patch') +# but of course this can't cover all version number schemes, and there's +# no way to know what a programmer means without asking him. +# +# The problem is what to do with letters (and other non-numeric +# characters) in a version number. The current implementation does the +# obvious and predictable thing: keep them as strings and compare +# lexically within a tuple comparison. This has the desired effect if +# an appended letter sequence implies something "post-release": +# eg. "0.99" < "0.99pl14" < "1.0", and "5.001" < "5.001m" < "5.002". +# +# However, if letters in a version number imply a pre-release version, +# the "obvious" thing isn't correct. Eg. you would expect that +# "1.5.1" < "1.5.2a2" < "1.5.2", but under the tuple/lexical comparison +# implemented here, this just isn't so. +# +# Two possible solutions come to mind. The first is to tie the +# comparison algorithm to a particular set of semantic rules, as has +# been done in the StrictVersion class above. This works great as long +# as everyone can go along with bondage and discipline. Hopefully a +# (large) subset of Python module programmers will agree that the +# particular flavour of bondage and discipline provided by StrictVersion +# provides enough benefit to be worth using, and will submit their +# version numbering scheme to its domination. The free-thinking +# anarchists in the lot will never give in, though, and something needs +# to be done to accommodate them. +# +# Perhaps a "moderately strict" version class could be implemented that +# lets almost anything slide (syntactically), and makes some heuristic +# assumptions about non-digits in version number strings. This could +# sink into special-case-hell, though; if I was as talented and +# idiosyncratic as Larry Wall, I'd go ahead and implement a class that +# somehow knows that "1.2.1" < "1.2.2a2" < "1.2.2" < "1.2.2pl3", and is +# just as happy dealing with things like "2g6" and "1.13++". I don't +# think I'm smart enough to do it right though. +# +# In any case, I've coded the test suite for this module (see +# ../test/test_version.py) specifically to fail on things like comparing +# "1.2a2" and "1.2". That's not because the *code* is doing anything +# wrong, it's because the simple, obvious design doesn't match my +# complicated, hairy expectations for real-world version numbers. It +# would be a snap to fix the test suite to say, "Yep, LooseVersion does +# the Right Thing" (ie. the code matches the conception). But I'd rather +# have a conception that matches common notions about version numbers. + +class LooseVersion (Version): + + """Version numbering for anarchists and software realists. + Implements the standard interface for version number classes as + described above. A version number consists of a series of numbers, + separated by either periods or strings of letters. When comparing + version numbers, the numeric components will be compared + numerically, and the alphabetic components lexically. The following + are all valid version numbers, in no particular order: + + 1.5.1 + 1.5.2b2 + 161 + 3.10a + 8.02 + 3.4j + 1996.07.12 + 3.2.pl0 + 3.1.1.6 + 2g6 + 11g + 0.960923 + 2.2beta29 + 1.13++ + 5.5.kw + 2.0b1pl0 + + In fact, there is no such thing as an invalid version number under + this scheme; the rules for comparison are simple and predictable, + but may not always give the results you want (for some definition + of "want"). + """ + + component_re = re.compile(r'(\d+ | [a-z]+ | \.)', re.VERBOSE) + + def __init__ (self, vstring=None): + if vstring: + self.parse(vstring) + + + def parse (self, vstring): + # I've given up on thinking I can reconstruct the version string + # from the parsed tuple -- so I just store the string here for + # use by __str__ + self.vstring = vstring + components = filter(lambda x: x and x != '.', + self.component_re.split(vstring)) + for i in range(len(components)): + try: + components[i] = int(components[i]) + except ValueError: + pass + + self.version = components + + + def __str__ (self): + return self.vstring + + + def __repr__ (self): + return "LooseVersion ('%s')" % str(self) + + + def __cmp__ (self, other): + if isinstance(other, StringType): + other = LooseVersion(other) + + return cmp(self.version, other.version) + + +# end class LooseVersion diff --git a/wxPython/my_distutils.py b/wxPython/my_distutils.py deleted file mode 100644 index f1603f4f5f..0000000000 --- a/wxPython/my_distutils.py +++ /dev/null @@ -1,488 +0,0 @@ - -import sys, os, string - -from distutils.msvccompiler import MSVCCompiler -from distutils.bcppcompiler import BCPPCompiler - -from distutils.errors import \ - DistutilsExecError, DistutilsPlatformError, \ - CompileError, LibError, LinkError -from distutils.ccompiler import \ - CCompiler, gen_preprocess_options, gen_lib_options - -#---------------------------------------------------------------------- - -class MyMSVCCompiler(MSVCCompiler): - -## def __init__ (self, -## verbose=0, -## dry_run=0, -## force=0): -## MSVCCompiler.__init__(self, verbose, dry_run, force) - -## self.compile_options = [ '/nologo', -## '/Ox', -## '/MD', -## '/W3', -## '/GX', -## ] -## self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX', -## '/Z7', '/D_DEBUG'] - - - - - ##------------------------------------------------------------ - ## Override the entire compile method just to add flags to the - ## RC command. There should be an easier way to do this from - ## distutils directly or in a derived class... - ##------------------------------------------------------------ - - def compile (self, - sources, - output_dir=None, - macros=None, - include_dirs=None, - debug=0, - extra_preargs=None, - extra_postargs=None): - - (output_dir, macros, include_dirs) = \ - self._fix_compile_args (output_dir, macros, include_dirs) - (objects, skip_sources) = self._prep_compile (sources, output_dir) - - if extra_postargs is None: - extra_postargs = [] - - pp_opts = gen_preprocess_options (macros, include_dirs) - compile_opts = extra_preargs or [] - compile_opts.append ('/c') - if debug: - compile_opts.extend (self.compile_options_debug) - else: - compile_opts.extend (self.compile_options) - - for i in range (len (sources)): - src = sources[i] ; obj = objects[i] - ext = (os.path.splitext (src))[1] - - if skip_sources[src]: - self.announce ("skipping %s (%s up-to-date)" % (src, obj)) - else: - self.mkpath (os.path.dirname (obj)) - - if ext in self._c_extensions: - input_opt = "/Tc" + os.path.abspath(src) ### RPD - elif ext in self._cpp_extensions: - input_opt = "/Tp" + os.path.abspath(src) ### RPD - elif ext in self._rc_extensions: - # compile .RC to .RES file - input_opt = src - output_opt = "/fo" + obj - try: - self.spawn ([self.rc] + pp_opts + ### RPD changed this line - [output_opt] + [input_opt]) - except DistutilsExecError, msg: - raise CompileError, msg - continue - elif ext in self._mc_extensions: - - # Compile .MC to .RC file to .RES file. - # * '-h dir' specifies the directory for the - # generated include file - # * '-r dir' specifies the target directory of the - # generated RC file and the binary message resource - # it includes - # - # For now (since there are no options to change this), - # we use the source-directory for the include file and - # the build directory for the RC file and message - # resources. This works at least for win32all. - - h_dir = os.path.dirname (src) - rc_dir = os.path.dirname (obj) - try: - # first compile .MC to .RC and .H file - self.spawn ([self.mc] + - ['-h', h_dir, '-r', rc_dir] + [src]) - base, _ = os.path.splitext (os.path.basename (src)) - rc_file = os.path.join (rc_dir, base + '.rc') - # then compile .RC to .RES file - self.spawn ([self.rc] + - ["/fo" + obj] + [rc_file]) - - except DistutilsExecError, msg: - raise CompileError, msg - continue - else: - # how to handle this file? - raise CompileError ( - "Don't know how to compile %s to %s" % \ - (src, obj)) - - output_opt = "/Fo" + obj - try: - self.spawn ([self.cc] + compile_opts + pp_opts + - [input_opt, output_opt] + - extra_postargs) - except DistutilsExecError, msg: - raise CompileError, msg - - return objects - - # compile () - - - -from distutils.file_util import write_file -class MyBCPPCompiler(BCPPCompiler): - - ##------------------------------------------------------------ - ## Override the entire compile method just to add flags to the - ## RC command. There should be an easier way to do this from - ## distutils directly or in a derived class... - ##------------------------------------------------------------ - - def compile (self, - sources, - output_dir=None, - macros=None, - include_dirs=None, - debug=0, - extra_preargs=None, - extra_postargs=None): - - (output_dir, macros, include_dirs) = \ - self._fix_compile_args (output_dir, macros, include_dirs) - (objects, skip_sources) = self._prep_compile (sources, output_dir) - - if extra_postargs is None: - extra_postargs = [] - - pp_opts = gen_preprocess_options (macros, include_dirs) - compile_opts = extra_preargs or [] - compile_opts.append ('-c') - if debug: - compile_opts.extend (self.compile_options_debug) - else: - compile_opts.extend (self.compile_options) - - for i in range (len (sources)): - src = sources[i] ; obj = objects[i] - ext = (os.path.splitext (src))[1] - - if skip_sources[src]: - self.announce ("skipping %s (%s up-to-date)" % (src, obj)) - else: - src = os.path.normpath(src) - obj = os.path.normpath(obj) - self.mkpath(os.path.dirname(obj)) - - if ext == '.res': - # This is already a binary file -- skip it. - continue # the 'for' loop - if ext == '.rc': - # This needs to be compiled to a .res file -- do it now. - try: - self.spawn (["brcc32"] + pp_opts + ["-fo"] + - [obj] + [src]) ### RPD changed this lines only - except DistutilsExecError, msg: - raise CompileError, msg - continue # the 'for' loop - - # The next two are both for the real compiler. - if ext in self._c_extensions: - input_opt = "" - elif ext in self._cpp_extensions: - input_opt = "-P" - else: - # Unknown file type -- no extra options. The compiler - # will probably fail, but let it just in case this is a - # file the compiler recognizes even if we don't. - input_opt = "" - - output_opt = "-o" + obj - - # Compiler command line syntax is: "bcc32 [options] file(s)". - # Note that the source file names must appear at the end of - # the command line. - try: - self.spawn ([self.cc] + compile_opts + pp_opts + - [input_opt, output_opt] + - extra_postargs + [src]) - except DistutilsExecError, msg: - raise CompileError, msg - - return objects - - # compile () - - #################################################################### - # Now we need to replace cw32mt library used by default by distutils - # with cw32mti library as in wxWindows DLL make file - # Othervise we obtain Windows "Core dump" ;-). - # - # Evgeny A Cherkashin <eugeneai@icc.ru> - # - #################################################################### - - def link (self, - target_desc, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None): - - # XXX this ignores 'build_temp'! should follow the lead of - # msvccompiler.py - - (objects, output_dir) = self._fix_object_args (objects, output_dir) - (libraries, library_dirs, runtime_library_dirs) = \ - self._fix_lib_args (libraries, library_dirs, runtime_library_dirs) - - if runtime_library_dirs: - self.warn ("I don't know what to do with 'runtime_library_dirs': " - + str (runtime_library_dirs)) - - if output_dir is not None: - output_filename = os.path.join (output_dir, output_filename) - - if self._need_link (objects, output_filename): - - # Figure out linker args based on type of target. - if target_desc == CCompiler.EXECUTABLE: - startup_obj = 'c0w32' - if debug: - ld_args = self.ldflags_exe_debug[:] - else: - ld_args = self.ldflags_exe[:] - else: - startup_obj = 'c0d32' - if debug: - ld_args = self.ldflags_shared_debug[:] - else: - ld_args = self.ldflags_shared[:] - - - # Create a temporary exports file for use by the linker - if export_symbols is None: - def_file = '' - else: - head, tail = os.path.split (output_filename) - modname, ext = os.path.splitext (tail) - temp_dir = os.path.dirname(objects[0]) # preserve tree structure - def_file = os.path.join (temp_dir, '%s.def' % modname) - contents = ['EXPORTS'] - for sym in (export_symbols or []): - contents.append(' %s=_%s' % (sym, sym)) - self.execute(write_file, (def_file, contents), - "writing %s" % def_file) - - # Borland C++ has problems with '/' in paths - objects2 = map(os.path.normpath, objects) - # split objects in .obj and .res files - # Borland C++ needs them at different positions in the command line - objects = [startup_obj] - resources = [] - for file in objects2: - (base, ext) = os.path.splitext(os.path.normcase(file)) - if ext == '.res': - resources.append(file) - else: - objects.append(file) - - - for l in library_dirs: - ld_args.append("/L%s" % os.path.normpath(l)) - ld_args.append("/L.") # we sometimes use relative paths - - # list of object files - ld_args.extend(objects) - - # XXX the command-line syntax for Borland C++ is a bit wonky; - # certain filenames are jammed together in one big string, but - # comma-delimited. This doesn't mesh too well with the - # Unix-centric attitude (with a DOS/Windows quoting hack) of - # 'spawn()', so constructing the argument list is a bit - # awkward. Note that doing the obvious thing and jamming all - # the filenames and commas into one argument would be wrong, - # because 'spawn()' would quote any filenames with spaces in - # them. Arghghh!. Apparently it works fine as coded... - - # name of dll/exe file - ld_args.extend([',',output_filename]) - # no map file and start libraries - ld_args.append(',,') - - for lib in libraries: - # see if we find it and if there is a bcpp specific lib - # (xxx_bcpp.lib) - libfile = self.find_library_file(library_dirs, lib, debug) - if libfile is None: - ld_args.append(lib) - # probably a BCPP internal library -- don't warn - # self.warn('library %s not found.' % lib) - else: - # full name which prefers bcpp_xxx.lib over xxx.lib - ld_args.append(libfile) - - # some default libraries - ld_args.append ('import32') - ld_args.append ('cw32mti') ### mt->mti (as in wx2) - - # def file for export symbols - ld_args.extend([',',def_file]) - # add resource files - ld_args.append(',') - ld_args.extend(resources) - - - if extra_preargs: - ld_args[:0] = extra_preargs - if extra_postargs: - ld_args.extend(extra_postargs) - - self.mkpath (os.path.dirname (output_filename)) - try: - self.spawn ([self.linker] + ld_args) - except DistutilsExecError, msg: - raise LinkError, msg - - else: - self.announce ("skipping %s (up-to-date)" % output_filename) - - # link () - - - -#---------------------------------------------------------------------- -# Hack this module and class into the distutils... - -from distutils import ccompiler - -if hasattr(ccompiler, "default_compiler"): - ccompiler.default_compiler['nt'] = 'my_msvc' -elif hasattr(ccompiler, "_default_compilers"): - lst = list(ccompiler._default_compilers) - lst.remove( ('nt', 'msvc') ) - lst.append( ('nt', 'my_msvc') ) - ccompiler._default_compilers = tuple(lst) - - -ccompiler.compiler_class['my_msvc'] = ('my_distutils', - 'MyMSVCCompiler', - 'My MSVC derived class') - - -ccompiler.compiler_class['my_bcpp'] = ('my_distutils', - 'MyBCPPCompiler', - 'My BCPP derived class') - -# make it look like it is part of the package... -import my_distutils -sys.modules['distutils.my_distutils'] = my_distutils - - -#---------------------------------------------------------------------- -# More hacking... Distutils in Python 2.1 changed the strip_dir flag -# passed to object_filenames to true, which causes problems for us since -# there are a few duplicate source/object names between some of the -# extensions in wxPython. This hack replaces the CCompiler._prep_compile -# method with this one. - -from distutils.dep_util import newer_pairwise - -def _prep_compile (self, sources, output_dir): - """Determine the list of object files corresponding to 'sources', - and figure out which ones really need to be recompiled. Return a - list of all object files and a dictionary telling which source - files can be skipped. - """ - # Get the list of expected output (object) files - objects = self.object_filenames (sources, - strip_dir=0, - output_dir=output_dir) - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - else: - # Figure out which source files we have to recompile according - # to a simplistic check -- we just compare the source and - # object file, no deep dependency checking involving header - # files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - (n_sources, n_objects) = newer_pairwise (sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - - return (objects, skip_source) - -# _prep_compile () - -CCompiler._prep_compile = _prep_compile - - - - -#---------------------------------------------------------------------- -# Run SWIG the way I want it done - -def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, swig_deps=[]): - from distutils.file_util import copy_file - from distutils.dep_util import newer - from distutils.spawn import spawn - - sources = [] - - for file in files: - basefile = os.path.splitext(file)[0] - i_file = os.path.join(dir, file) - py_file = os.path.join(dir, gendir, basefile+'.py') - cpp_file = os.path.join(dir, gendir, basefile+'.cpp') - - sources.append(cpp_file) - - if USE_SWIG: - for dep in swig_deps: - if newer(dep, py_file) or newer(dep, cpp_file): - force = 1 - break - - if force or newer(i_file, py_file) or newer(i_file, cpp_file): - # we need forward slashes here even on win32 - cpp_file = string.join(string.split(cpp_file, '\\'), '/') - i_file = string.join(string.split(i_file, '\\'), '/') - - cmd = ['./wxSWIG/wxswig'] + swig_args + ['-I'+dir, '-c', '-o', cpp_file, i_file] - spawn(cmd, verbose=1) - - # copy the generated python file to the package directory - copy_file(py_file, package, update=not force, verbose=0) - - - return sources - - - -#---------------------------------------------------------------------- -# Update local copies of wxWindows contrib files - - -def contrib_copy_tree(src, dest, verbose=0): - from distutils.dir_util import mkpath, copy_tree - - mkpath(dest, verbose=verbose) - copy_tree(src, dest, update=1, verbose=verbose) - diff --git a/wxPython/samples/StyleEditor/STCStyleEditor.py b/wxPython/samples/StyleEditor/STCStyleEditor.py index 74a39d168c..9758734401 100644 --- a/wxPython/samples/StyleEditor/STCStyleEditor.py +++ b/wxPython/samples/StyleEditor/STCStyleEditor.py @@ -6,7 +6,7 @@ # # Created: 2001/08/20 # RCS-ID: $Id$ -# Copyright: (c) 2001 Riaan Booysen +# Copyright: (c) 2001 - 2002 Riaan Booysen # Licence: wxWindows license #----------------------------------------------------------------------------- #Boa:Dialog:STCStyleEditDlg @@ -53,6 +53,7 @@ Use the initSTC function to initialise your wxSTC from a config file. import os, sys, string, pprint, copy from wxPython.wx import * +from wxPython.help import * from wxPython.lib.anchors import LayoutAnchors from wxPython.stc import * @@ -62,170 +63,336 @@ commonPropDefs = {'fore': '#888888', 'size': 8, 'face': wxSystemSettings_GetSystemFont(wxSYS_DEFAULT_GUI_FONT).GetFaceName()} styleCategoryDescriptions = { -'-----Language-----': 'Styles spesific to the language', -'-----Standard-----': 'Styles shared by all languages', -'-----Settings-----': 'Properties set by STC methods', -'-----Common-----': 'User definable values that can be shared between languages'} + '----Language----': 'Styles spesific to the language', + '----Standard----': 'Styles shared by all languages', + '----Settings----': 'Properties set by STC methods', + '----Common----': 'User definable values that can be shared between languages'} -[wxID_STCSTYLEEDITDLG, wxID_STCSTYLEEDITDLGADDCOMMONITEMBTN, wxID_STCSTYLEEDITDLGBGCOLBTN, wxID_STCSTYLEEDITDLGBGCOLCB, wxID_STCSTYLEEDITDLGBGCOLDEFCB, wxID_STCSTYLEEDITDLGCANCELBTN, wxID_STCSTYLEEDITDLGCOMMONDEFSBTN, wxID_STCSTYLEEDITDLGELEMENTLB, wxID_STCSTYLEEDITDLGFACECB, wxID_STCSTYLEEDITDLGFACEDEFCB, wxID_STCSTYLEEDITDLGFGCOLBTN, wxID_STCSTYLEEDITDLGFGCOLCB, wxID_STCSTYLEEDITDLGFGCOLDEFCB, wxID_STCSTYLEEDITDLGFIXEDWIDTHCHK, wxID_STCSTYLEEDITDLGOKBTN, wxID_STCSTYLEEDITDLGPANEL1, wxID_STCSTYLEEDITDLGPANEL2, wxID_STCSTYLEEDITDLGREMOVECOMMONITEMBTN, wxID_STCSTYLEEDITDLGSIZECB, wxID_STCSTYLEEDITDLGSPEEDSETTINGCH, wxID_STCSTYLEEDITDLGSTATICBOX1, wxID_STCSTYLEEDITDLGSTATICBOX2, wxID_STCSTYLEEDITDLGSTATICLINE1, wxID_STCSTYLEEDITDLGSTATICTEXT2, wxID_STCSTYLEEDITDLGSTATICTEXT3, wxID_STCSTYLEEDITDLGSTATICTEXT4, wxID_STCSTYLEEDITDLGSTATICTEXT6, wxID_STCSTYLEEDITDLGSTATICTEXT7, wxID_STCSTYLEEDITDLGSTATICTEXT8, wxID_STCSTYLEEDITDLGSTATICTEXT9, wxID_STCSTYLEEDITDLGSTC, wxID_STCSTYLEEDITDLGSTYLEDEFST, wxID_STCSTYLEEDITDLGTABOLDCB, wxID_STCSTYLEEDITDLGTABOLDDEFCB, wxID_STCSTYLEEDITDLGTAEOLFILLEDCB, wxID_STCSTYLEEDITDLGTAEOLFILLEDDEFCB, wxID_STCSTYLEEDITDLGTAITALICCB, wxID_STCSTYLEEDITDLGTAITALICDEFCB, wxID_STCSTYLEEDITDLGTASIZEDEFCB, wxID_STCSTYLEEDITDLGTAUNDERLINEDCB, wxID_STCSTYLEEDITDLGTAUNDERLINEDDEFCB] = map(lambda _init_ctrls: wxNewId(), range(41)) +[wxID_STCSTYLEEDITDLG, wxID_STCSTYLEEDITDLGADDCOMMONITEMBTN, + wxID_STCSTYLEEDITDLGBGCOLBTN, wxID_STCSTYLEEDITDLGBGCOLCB, + wxID_STCSTYLEEDITDLGBGCOLDEFCB, wxID_STCSTYLEEDITDLGBGCOLOKBTN, + wxID_STCSTYLEEDITDLGCANCELBTN, wxID_STCSTYLEEDITDLGCONTEXTHELPBUTTON1, + wxID_STCSTYLEEDITDLGELEMENTLB, wxID_STCSTYLEEDITDLGFACECB, + wxID_STCSTYLEEDITDLGFACEDEFCB, wxID_STCSTYLEEDITDLGFACEOKBTN, + wxID_STCSTYLEEDITDLGFGCOLBTN, wxID_STCSTYLEEDITDLGFGCOLCB, + wxID_STCSTYLEEDITDLGFGCOLDEFCB, wxID_STCSTYLEEDITDLGFGCOLOKBTN, + wxID_STCSTYLEEDITDLGFIXEDWIDTHCHK, wxID_STCSTYLEEDITDLGOKBTN, + wxID_STCSTYLEEDITDLGPANEL1, wxID_STCSTYLEEDITDLGPANEL2, + wxID_STCSTYLEEDITDLGPANEL3, wxID_STCSTYLEEDITDLGPANEL4, + wxID_STCSTYLEEDITDLGREMOVECOMMONITEMBTN, wxID_STCSTYLEEDITDLGSIZECB, + wxID_STCSTYLEEDITDLGSIZEOKBTN, wxID_STCSTYLEEDITDLGSPEEDSETTINGCH, + wxID_STCSTYLEEDITDLGSTATICBOX1, wxID_STCSTYLEEDITDLGSTATICBOX2, + wxID_STCSTYLEEDITDLGSTATICLINE1, wxID_STCSTYLEEDITDLGSTATICTEXT2, + wxID_STCSTYLEEDITDLGSTATICTEXT3, wxID_STCSTYLEEDITDLGSTATICTEXT4, + wxID_STCSTYLEEDITDLGSTATICTEXT6, wxID_STCSTYLEEDITDLGSTATICTEXT7, + wxID_STCSTYLEEDITDLGSTATICTEXT8, wxID_STCSTYLEEDITDLGSTATICTEXT9, + wxID_STCSTYLEEDITDLGSTC, wxID_STCSTYLEEDITDLGSTYLEDEFST, + wxID_STCSTYLEEDITDLGTABOLDCB, wxID_STCSTYLEEDITDLGTABOLDDEFCB, + wxID_STCSTYLEEDITDLGTAEOLFILLEDCB, wxID_STCSTYLEEDITDLGTAEOLFILLEDDEFCB, + wxID_STCSTYLEEDITDLGTAITALICCB, wxID_STCSTYLEEDITDLGTAITALICDEFCB, + wxID_STCSTYLEEDITDLGTASIZEDEFCB, wxID_STCSTYLEEDITDLGTAUNDERLINEDCB, + wxID_STCSTYLEEDITDLGTAUNDERLINEDDEFCB, +] = map(lambda _init_ctrls: wxNewId(), range(47)) class STCStyleEditDlg(wxDialog): """ Style editor for the wxStyledTextCtrl """ _custom_classes = {'wxWindow' : ['wxStyledTextCtrl']} def _init_utils(self): + # generated method, don't edit pass def _init_ctrls(self, prnt): - wxDialog.__init__(self, id = wxID_STCSTYLEEDITDLG, name = 'STCStyleEditDlg', parent = prnt, pos = wxPoint(416, 307), size = wxSize(425, 481), style = wxWANTS_CHARS | wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER, title = self.stc_title) + # generated method, don't edit + wxDialog.__init__(self, id=wxID_STCSTYLEEDITDLG, name='STCStyleEditDlg', + parent=prnt, pos=wxPoint(583, 291), size=wxSize(459, 482), + style=wxWANTS_CHARS | wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER, + title=self.stc_title) self._init_utils() - self.SetClientSize(wxSize(417, 454)) - self.SetAutoLayout(true) + self.SetClientSize(wxSize(451, 455)) + self.SetAutoLayout(True) self.SetSizeHints(425, 400, -1, -1) + self.Center(wxBOTH) EVT_SIZE(self, self.OnStcstyleeditdlgSize) - self.staticBox2 = wxStaticBox(id = wxID_STCSTYLEEDITDLGSTATICBOX2, label = 'Text attributes', name = 'staticBox2', parent = self, pos = wxPoint(296, 56), size = wxSize(112, 99), style = 0) - self.staticBox2.SetConstraints(LayoutAnchors(self.staticBox2, false, true, true, false)) + self.speedsettingCh = wxChoice(choices=[], + id=wxID_STCSTYLEEDITDLGSPEEDSETTINGCH, name='speedsettingCh', + parent=self, pos=wxPoint(96, 28), size=wxSize(346, 21), style=0, + validator=wxDefaultValidator) + self.speedsettingCh.SetConstraints(LayoutAnchors(self.speedsettingCh, + True, True, True, False)) + self.speedsettingCh.SetHelpText('The speed setting allows you to revert to one of the predefined style sets. This will overwrite your current settings when tha dialog is posted.') + EVT_CHOICE(self.speedsettingCh, wxID_STCSTYLEEDITDLGSPEEDSETTINGCH, + self.OnSpeedsettingchChoice) - self.staticBox1 = wxStaticBox(id = wxID_STCSTYLEEDITDLGSTATICBOX1, label = 'Colour', name = 'staticBox1', parent = self, pos = wxPoint(157, 56), size = wxSize(128, 99), style = 0) - self.staticBox1.SetConstraints(LayoutAnchors(self.staticBox1, false, true, true, false)) + self.elementLb = wxListBox(choices=[], id=wxID_STCSTYLEEDITDLGELEMENTLB, + name='elementLb', parent=self, pos=wxPoint(8, 72), + size=wxSize(160, 112), style=0, validator=wxDefaultValidator) + self.elementLb.SetConstraints(LayoutAnchors(self.elementLb, True, True, + True, False)) + self.elementLb.SetHelpText('Select a style here to edit it. Common definitions can be added and maintained here. A common definition is a property that can be shared between styles and special cased per platform.') + EVT_LISTBOX(self.elementLb, wxID_STCSTYLEEDITDLGELEMENTLB, + self.OnElementlbListbox) - self.elementLb = wxListBox(choices = [], id = wxID_STCSTYLEEDITDLGELEMENTLB, name = 'elementLb', parent = self, pos = wxPoint(8, 72), size = wxSize(144, 112), style = 0, validator = wxDefaultValidator) - self.elementLb.SetConstraints(LayoutAnchors(self.elementLb, true, true, true, false)) - EVT_LISTBOX(self.elementLb, wxID_STCSTYLEEDITDLGELEMENTLB, self.OnElementlbListbox) + self.addCommonItemBtn = wxButton(id=wxID_STCSTYLEEDITDLGADDCOMMONITEMBTN, + label='Add', name='addCommonItemBtn', parent=self, pos=wxPoint(8, + 184), size=wxSize(80, 17), style=0) + self.addCommonItemBtn.SetToolTipString('Add new Common definition') + EVT_BUTTON(self.addCommonItemBtn, wxID_STCSTYLEEDITDLGADDCOMMONITEMBTN, + self.OnAddsharebtnButton) - self.styleDefST = wxStaticText(id = wxID_STCSTYLEEDITDLGSTYLEDEFST, label = '(nothing selected)', name = 'styleDefST', parent = self, pos = wxPoint(56, 8), size = wxSize(352, 16), style = wxST_NO_AUTORESIZE) - self.styleDefST.SetFont(wxFont(8, wxSWISS, wxNORMAL, wxBOLD, false, self.sys_font)) - self.styleDefST.SetConstraints(LayoutAnchors(self.styleDefST, true, true, true, false)) + self.removeCommonItemBtn = wxButton(id=wxID_STCSTYLEEDITDLGREMOVECOMMONITEMBTN, + label='Remove', name='removeCommonItemBtn', parent=self, + pos=wxPoint(88, 184), size=wxSize(80, 17), style=0) + self.removeCommonItemBtn.SetToolTipString('Remove the selected Common definition') + EVT_BUTTON(self.removeCommonItemBtn, + wxID_STCSTYLEEDITDLGREMOVECOMMONITEMBTN, + self.OnRemovesharebtnButton) - self.taEOLfilledCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTAEOLFILLEDCB, label = 'EOL filled', name = 'taEOLfilledCb', parent = self.staticBox2, pos = wxPoint(8, 75), size = wxSize(72, 16), style = 0) - self.taEOLfilledCb.SetValue(false) - EVT_CHECKBOX(self.taEOLfilledCb, wxID_STCSTYLEEDITDLGTAEOLFILLEDCB, self.OnTaeoffilledcbCheckbox) + self.styleDefST = wxStaticText(id=wxID_STCSTYLEEDITDLGSTYLEDEFST, + label='(nothing selected)', name='styleDefST', parent=self, + pos=wxPoint(96, 8), size=wxSize(366, 16), + style=wxST_NO_AUTORESIZE) + self.styleDefST.SetFont(wxFont(self.style_font_size, wxSWISS, wxNORMAL, + wxBOLD, False, '')) + self.styleDefST.SetConstraints(LayoutAnchors(self.styleDefST, True, + True, True, False)) - self.staticText2 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT2, label = 'default', name = 'staticText2', parent = self.staticBox2, pos = wxPoint(72, 11), size = wxSize(32, 16), style = 0) + self.staticLine1 = wxStaticLine(id=wxID_STCSTYLEEDITDLGSTATICLINE1, + name='staticLine1', parent=self, pos=wxPoint(48, 62), + size=wxSize(120, 2), style=wxLI_HORIZONTAL) + self.staticLine1.SetConstraints(LayoutAnchors(self.staticLine1, True, + True, True, False)) - self.taItalicCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTAITALICCB, label = 'Italic', name = 'taItalicCb', parent = self.staticBox2, pos = wxPoint(8, 43), size = wxSize(72, 16), style = 0) - EVT_CHECKBOX(self.taItalicCb, wxID_STCSTYLEEDITDLGTAITALICCB, self.OnTaitaliccbCheckbox) + self.staticText6 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT6, + label='Style', name='staticText6', parent=self, pos=wxPoint(8, + 56), size=wxSize(40, 13), style=0) - self.taUnderlinedDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTAUNDERLINEDDEFCB, label = 'checkBox1', name = 'taUnderlinedDefCb', parent = self.staticBox2, pos = wxPoint(88, 59), size = wxSize(16, 16), style = 0) + self.staticText8 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT8, + label='Style def:', name='staticText8', parent=self, + pos=wxPoint(8, 8), size=wxSize(88, 13), style=0) - self.taBoldDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTABOLDDEFCB, label = 'checkBox1', name = 'taBoldDefCb', parent = self.staticBox2, pos = wxPoint(88, 27), size = wxSize(16, 16), style = 0) + self.staticText9 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT9, + label='SpeedSetting:', name='staticText9', parent=self, + pos=wxPoint(8, 32), size=wxSize(88, 13), style=0) - self.taItalicDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTAITALICDEFCB, label = 'checkBox1', name = 'taItalicDefCb', parent = self.staticBox2, pos = wxPoint(88, 43), size = wxSize(16, 16), style = 0) + self.panel3 = wxPanel(id=wxID_STCSTYLEEDITDLGPANEL3, name='panel3', + parent=self, pos=wxPoint(176, 56), size=wxSize(146, 104), + style=wxTAB_TRAVERSAL) + self.panel3.SetConstraints(LayoutAnchors(self.panel3, False, True, True, + False)) - self.taBoldCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTABOLDCB, label = 'Bold', name = 'taBoldCb', parent = self.staticBox2, pos = wxPoint(8, 27), size = wxSize(72, 16), style = 0) - EVT_CHECKBOX(self.taBoldCb, wxID_STCSTYLEEDITDLGTABOLDCB, self.OnTaboldcbCheckbox) + self.panel4 = wxPanel(id=wxID_STCSTYLEEDITDLGPANEL4, name='panel4', + parent=self, pos=wxPoint(330, 56), size=wxSize(114, 104), + style=wxTAB_TRAVERSAL) + self.panel4.SetConstraints(LayoutAnchors(self.panel4, False, True, True, + False)) - self.taEOLfilledDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTAEOLFILLEDDEFCB, label = 'checkBox1', name = 'taEOLfilledDefCb', parent = self.staticBox2, pos = wxPoint(88, 75), size = wxSize(16, 16), style = 0) + self.panel1 = wxPanel(id=wxID_STCSTYLEEDITDLGPANEL1, name='panel1', + parent=self, pos=wxPoint(176, 161), size=wxSize(143, 40), + style=wxTAB_TRAVERSAL) + self.panel1.SetConstraints(LayoutAnchors(self.panel1, False, True, True, + False)) - self.taUnderlinedCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTAUNDERLINEDCB, label = 'Underlined', name = 'taUnderlinedCb', parent = self.staticBox2, pos = wxPoint(8, 59), size = wxSize(72, 16), style = 0) - EVT_CHECKBOX(self.taUnderlinedCb, wxID_STCSTYLEEDITDLGTAUNDERLINEDCB, self.OnTaunderlinedcbCheckbox) + self.panel2 = wxPanel(id=wxID_STCSTYLEEDITDLGPANEL2, name='panel2', + parent=self, pos=wxPoint(330, 162), size=wxSize(112, 40), + style=wxTAB_TRAVERSAL) + self.panel2.SetConstraints(LayoutAnchors(self.panel2, False, True, True, + False)) - self.fgColDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGFGCOLDEFCB, label = 'checkBox1', name = 'fgColDefCb', parent = self.staticBox1, pos = wxPoint(104, 31), size = wxSize(16, 16), style = 0) - - self.staticText3 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT3, label = 'default', name = 'staticText3', parent = self.staticBox1, pos = wxPoint(88, 16), size = wxSize(32, 16), style = 0) - - self.bgColDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGBGCOLDEFCB, label = 'checkBox1', name = 'bgColDefCb', parent = self.staticBox1, pos = wxPoint(104, 71), size = wxSize(16, 16), style = 0) - - self.fgColBtn = wxButton(id = wxID_STCSTYLEEDITDLGFGCOLBTN, label = 'Foreground', name = 'fgColBtn', parent = self.staticBox1, pos = wxPoint(8, 16), size = wxSize(72, 16), style = 0) - EVT_BUTTON(self.fgColBtn, wxID_STCSTYLEEDITDLGFGCOLBTN, self.OnFgcolbtnButton) - - self.bgColBtn = wxButton(id = wxID_STCSTYLEEDITDLGBGCOLBTN, label = 'Background', name = 'bgColBtn', parent = self.staticBox1, pos = wxPoint(8, 56), size = wxSize(72, 16), style = 0) - EVT_BUTTON(self.bgColBtn, wxID_STCSTYLEEDITDLGBGCOLBTN, self.OnBgcolbtnButton) - - self.staticLine1 = wxStaticLine(id = wxID_STCSTYLEEDITDLGSTATICLINE1, name = 'staticLine1', parent = self, pos = wxPoint(36, 62), size = wxSize(115, 2), style = wxLI_HORIZONTAL) - self.staticLine1.SetConstraints(LayoutAnchors(self.staticLine1, true, true, true, false)) - - self.staticText6 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT6, label = 'Style', name = 'staticText6', parent = self, pos = wxPoint(8, 56), size = wxSize(23, 13), style = 0) - - self.okBtn = wxButton(id = wxID_STCSTYLEEDITDLGOKBTN, label = 'OK', name = 'okBtn', parent = self, pos = wxPoint(248, 422), size = wxSize(75, 23), style = 0) - self.okBtn.SetConstraints(LayoutAnchors(self.okBtn, false, false, true, true)) - self.okBtn.SetToolTipString('Save changes to the config file') - EVT_BUTTON(self.okBtn, wxID_STCSTYLEEDITDLGOKBTN, self.OnOkbtnButton) - - self.cancelBtn = wxButton(id = wxID_STCSTYLEEDITDLGCANCELBTN, label = 'Cancel', name = 'cancelBtn', parent = self, pos = wxPoint(332, 422), size = wxSize(75, 23), style = 0) - self.cancelBtn.SetConstraints(LayoutAnchors(self.cancelBtn, false, false, true, true)) - self.cancelBtn.SetToolTipString('Close dialog without saving changes') - EVT_BUTTON(self.cancelBtn, wxID_STCSTYLEEDITDLGCANCELBTN, self.OnCancelbtnButton) - - self.commonDefsBtn = wxButton(id = wxID_STCSTYLEEDITDLGCOMMONDEFSBTN, label = 'Common definitions', name = 'commonDefsBtn', parent = self, pos = wxPoint(8, 422), size = wxSize(104, 23), style = 0) - self.commonDefsBtn.SetConstraints(LayoutAnchors(self.commonDefsBtn, true, false, false, true)) - self.commonDefsBtn.SetToolTipString('Directly edit the common definitions dictionary') - self.commonDefsBtn.Show(false) - EVT_BUTTON(self.commonDefsBtn, wxID_STCSTYLEEDITDLGCOMMONDEFSBTN, self.OnCommondefsbtnButton) - - self.staticText8 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT8, label = 'Style def:', name = 'staticText8', parent = self, pos = wxPoint(8, 8), size = wxSize(44, 13), style = 0) - - self.staticText9 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT9, label = 'SpeedSetting:', name = 'staticText9', parent = self, pos = wxPoint(8, 32), size = wxSize(67, 13), style = 0) - - self.speedsettingCh = wxChoice(choices = [], id = wxID_STCSTYLEEDITDLGSPEEDSETTINGCH, name = 'speedsettingCh', parent = self, pos = wxPoint(88, 28), size = wxSize(320, 21), style = 0, validator = wxDefaultValidator) - self.speedsettingCh.SetConstraints(LayoutAnchors(self.speedsettingCh, true, true, true, false)) - EVT_CHOICE(self.speedsettingCh, wxID_STCSTYLEEDITDLGSPEEDSETTINGCH, self.OnSpeedsettingchChoice) - - self.stc = wxStyledTextCtrl(id = wxID_STCSTYLEEDITDLGSTC, name = 'stc', parent = self, pos = wxPoint(8, 208), size = wxSize(401, 206), style = wxSUNKEN_BORDER) - self.stc.SetConstraints(LayoutAnchors(self.stc, true, true, true, true)) + self.stc = wxStyledTextCtrl(id=wxID_STCSTYLEEDITDLGSTC, name='stc', + parent=self, pos=wxPoint(8, 208), size=wxSize(435, 207), + style=wxSUNKEN_BORDER) + self.stc.SetConstraints(LayoutAnchors(self.stc, True, True, True, True)) + self.stc.SetHelpText('The style preview window. Click or move the cursor over a spesific style to select the style for editing in the editors above.') EVT_LEFT_UP(self.stc, self.OnUpdateUI) EVT_KEY_UP(self.stc, self.OnUpdateUI) - self.panel1 = wxPanel(id = wxID_STCSTYLEEDITDLGPANEL1, name = 'panel1', parent = self, pos = wxPoint(157, 161), size = wxSize(128, 40), style = wxTAB_TRAVERSAL) - self.panel1.SetConstraints(LayoutAnchors(self.panel1, false, true, true, false)) + self.contextHelpButton1 = wxContextHelpButton(parent=self, + pos=wxPoint(8, 423), size=wxSize(24, 24), style=wxBU_AUTODRAW) + self.contextHelpButton1.SetConstraints(LayoutAnchors(self.contextHelpButton1, + True, False, False, True)) - self.staticText4 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT4, label = 'Face:', name = 'staticText4', parent = self.panel1, pos = wxPoint(0, 0), size = wxSize(27, 13), style = 0) + self.okBtn = wxButton(id=wxID_STCSTYLEEDITDLGOKBTN, label='OK', + name='okBtn', parent=self, pos=wxPoint(282, 423), size=wxSize(75, + 23), style=0) + self.okBtn.SetConstraints(LayoutAnchors(self.okBtn, False, False, True, + True)) + self.okBtn.SetToolTipString('Save changes to the config file') + EVT_BUTTON(self.okBtn, wxID_STCSTYLEEDITDLGOKBTN, self.OnOkbtnButton) - self.faceDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGFACEDEFCB, label = 'checkBox1', name = 'faceDefCb', parent = self.panel1, pos = wxPoint(104, 0), size = wxSize(16, 16), style = 0) + self.cancelBtn = wxButton(id=wxID_STCSTYLEEDITDLGCANCELBTN, + label='Cancel', name='cancelBtn', parent=self, pos=wxPoint(366, + 423), size=wxSize(75, 23), style=0) + self.cancelBtn.SetConstraints(LayoutAnchors(self.cancelBtn, False, + False, True, True)) + self.cancelBtn.SetToolTipString('Close dialog without saving changes') + EVT_BUTTON(self.cancelBtn, wxID_STCSTYLEEDITDLGCANCELBTN, + self.OnCancelbtnButton) - self.fixedWidthChk = wxCheckBox(id = wxID_STCSTYLEEDITDLGFIXEDWIDTHCHK, label = '', name = 'fixedWidthChk', parent = self.panel1, pos = wxPoint(0, 23), size = wxSize(13, 19), style = 0) - self.fixedWidthChk.SetValue(false) + self.staticText4 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT4, + label='Face:', name='staticText4', parent=self.panel1, + pos=wxPoint(0, 0), size=wxSize(48, 13), style=0) + + self.fixedWidthChk = wxCheckBox(id=wxID_STCSTYLEEDITDLGFIXEDWIDTHCHK, + label='', name='fixedWidthChk', parent=self.panel1, pos=wxPoint(0, + 23), size=wxSize(13, 19), style=0) self.fixedWidthChk.SetToolTipString('Check this for Fixed Width fonts') - EVT_CHECKBOX(self.fixedWidthChk, wxID_STCSTYLEEDITDLGFIXEDWIDTHCHK, self.OnFixedwidthchkCheckbox) + EVT_CHECKBOX(self.fixedWidthChk, wxID_STCSTYLEEDITDLGFIXEDWIDTHCHK, + self.OnFixedwidthchkCheckbox) - self.addCommonItemBtn = wxButton(id = wxID_STCSTYLEEDITDLGADDCOMMONITEMBTN, label = 'Add', name = 'addCommonItemBtn', parent = self, pos = wxPoint(8, 184), size = wxSize(72, 16), style = 0) - self.addCommonItemBtn.SetToolTipString('Add new Common definition') - EVT_BUTTON(self.addCommonItemBtn, wxID_STCSTYLEEDITDLGADDCOMMONITEMBTN, self.OnAddsharebtnButton) + self.faceCb = wxComboBox(choices=[], id=wxID_STCSTYLEEDITDLGFACECB, + name='faceCb', parent=self.panel1, pos=wxPoint(17, 18), + size=wxSize(105, 21), style=0, validator=wxDefaultValidator, + value='') - self.removeCommonItemBtn = wxButton(id = wxID_STCSTYLEEDITDLGREMOVECOMMONITEMBTN, label = 'Remove', name = 'removeCommonItemBtn', parent = self, pos = wxPoint(80, 184), size = wxSize(72, 16), style = 0) - self.removeCommonItemBtn.Enable(false) - self.removeCommonItemBtn.SetToolTipString('Remove the selected Common definition') - EVT_BUTTON(self.removeCommonItemBtn, wxID_STCSTYLEEDITDLGREMOVECOMMONITEMBTN, self.OnRemovesharebtnButton) + self.staticText7 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT7, + label='Size:', name='staticText7', parent=self.panel2, + pos=wxPoint(0, 0), size=wxSize(40, 13), style=0) - self.panel2 = wxPanel(id = wxID_STCSTYLEEDITDLGPANEL2, name = 'panel2', parent = self, pos = wxPoint(296, 162), size = wxSize(112, 40), style = wxTAB_TRAVERSAL) - self.panel2.SetConstraints(LayoutAnchors(self.panel2, false, true, true, false)) + self.sizeCb = wxComboBox(choices=[], id=wxID_STCSTYLEEDITDLGSIZECB, + name='sizeCb', parent=self.panel2, pos=wxPoint(0, 17), + size=wxSize(91, 21), style=0, validator=wxDefaultValidator, + value='') - self.staticText7 = wxStaticText(id = wxID_STCSTYLEEDITDLGSTATICTEXT7, label = 'Size:', name = 'staticText7', parent = self.panel2, pos = wxPoint(0, 0), size = wxSize(23, 13), style = 0) + self.sizeOkBtn = wxButton(id=wxID_STCSTYLEEDITDLGSIZEOKBTN, label='ok', + name='sizeOkBtn', parent=self.panel2, pos=wxPoint(90, 17), + size=wxSize(21, 21), style=0) - self.taSizeDefCb = wxCheckBox(id = wxID_STCSTYLEEDITDLGTASIZEDEFCB, label = 'checkBox1', name = 'taSizeDefCb', parent = self.panel2, pos = wxPoint(88, 0), size = wxSize(16, 16), style = 0) + self.faceOkBtn = wxButton(id=wxID_STCSTYLEEDITDLGFACEOKBTN, label='ok', + name='faceOkBtn', parent=self.panel1, pos=wxPoint(122, 18), + size=wxSize(21, 21), style=0) - self.sizeCb = wxComboBox(choices = [], id = wxID_STCSTYLEEDITDLGSIZECB, name = 'sizeCb', parent = self.panel2, pos = wxPoint(0, 17), size = wxSize(112, 21), style = 0, validator = wxDefaultValidator, value = '') - self.sizeCb.SetLabel('') + self.fgColBtn = wxButton(id=wxID_STCSTYLEEDITDLGFGCOLBTN, + label='Foreground', name='fgColBtn', parent=self.panel3, + pos=wxPoint(8, 16), size=wxSize(72, 16), style=0) + EVT_BUTTON(self.fgColBtn, wxID_STCSTYLEEDITDLGFGCOLBTN, + self.OnFgcolbtnButton) - self.faceCb = wxComboBox(choices = [], id = wxID_STCSTYLEEDITDLGFACECB, name = 'faceCb', parent = self.panel1, pos = wxPoint(17, 18), size = wxSize(111, 21), style = 0, validator = wxDefaultValidator, value = '') - self.faceCb.SetLabel('') + self.fgColCb = wxComboBox(choices=[], id=wxID_STCSTYLEEDITDLGFGCOLCB, + name='fgColCb', parent=self.panel3, pos=wxPoint(8, 32), + size=wxSize(89, 21), style=0, validator=wxDefaultValidator, + value='') - self.fgColCb = wxComboBox(choices = [], id = wxID_STCSTYLEEDITDLGFGCOLCB, name = 'fgColCb', parent = self.staticBox1, pos = wxPoint(8, 32), size = wxSize(91, 21), style = 0, validator = wxDefaultValidator, value = '') - self.fgColCb.SetLabel('') + self.fgColOkBtn = wxButton(id=wxID_STCSTYLEEDITDLGFGCOLOKBTN, + label='ok', name='fgColOkBtn', parent=self.panel3, pos=wxPoint(96, + 32), size=wxSize(21, 21), style=0) - self.bgColCb = wxComboBox(choices = [], id = wxID_STCSTYLEEDITDLGBGCOLCB, name = 'bgColCb', parent = self.staticBox1, pos = wxPoint(8, 72), size = wxSize(91, 21), style = 0, validator = wxDefaultValidator, value = '') - self.bgColCb.SetLabel('') + self.staticText3 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT3, + label='default', name='staticText3', parent=self.panel3, + pos=wxPoint(100, 16), size=wxSize(37, 16), style=0) + + self.fgColDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGFGCOLDEFCB, + label='checkBox1', name='fgColDefCb', parent=self.panel3, + pos=wxPoint(120, 31), size=wxSize(16, 16), style=0) + + self.bgColBtn = wxButton(id=wxID_STCSTYLEEDITDLGBGCOLBTN, + label='Background', name='bgColBtn', parent=self.panel3, + pos=wxPoint(8, 56), size=wxSize(72, 16), style=0) + EVT_BUTTON(self.bgColBtn, wxID_STCSTYLEEDITDLGBGCOLBTN, + self.OnBgcolbtnButton) + + self.bgColCb = wxComboBox(choices=[], id=wxID_STCSTYLEEDITDLGBGCOLCB, + name='bgColCb', parent=self.panel3, pos=wxPoint(8, 72), + size=wxSize(89, 21), style=0, validator=wxDefaultValidator, + value='') + + self.bgColOkBtn = wxButton(id=wxID_STCSTYLEEDITDLGBGCOLOKBTN, + label='ok', name='bgColOkBtn', parent=self.panel3, pos=wxPoint(96, + 72), size=wxSize(21, 21), style=0) + + self.staticBox2 = wxStaticBox(id=wxID_STCSTYLEEDITDLGSTATICBOX2, + label='Text attributes', name='staticBox2', parent=self.panel4, + pos=wxPoint(0, 0), size=wxSize(112, 99), style=0) + self.staticBox2.SetConstraints(LayoutAnchors(self.staticBox2, False, + True, True, False)) + self.staticBox2.SetHelpText('Text attribute flags.') + + self.staticText2 = wxStaticText(id=wxID_STCSTYLEEDITDLGSTATICTEXT2, + label='default', name='staticText2', parent=self.panel4, + pos=wxPoint(68, 11), size=wxSize(37, 16), style=0) + + self.taBoldDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTABOLDDEFCB, + label='checkBox1', name='taBoldDefCb', parent=self.panel4, + pos=wxPoint(88, 27), size=wxSize(16, 16), style=0) + + self.taItalicDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTAITALICDEFCB, + label='checkBox1', name='taItalicDefCb', parent=self.panel4, + pos=wxPoint(88, 43), size=wxSize(16, 16), style=0) + + self.taUnderlinedDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTAUNDERLINEDDEFCB, + label='checkBox1', name='taUnderlinedDefCb', parent=self.panel4, + pos=wxPoint(88, 59), size=wxSize(16, 16), style=0) + + self.taEOLfilledDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTAEOLFILLEDDEFCB, + label='checkBox1', name='taEOLfilledDefCb', parent=self.panel4, + pos=wxPoint(88, 75), size=wxSize(16, 16), style=0) + + self.taEOLfilledCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTAEOLFILLEDCB, + label='EOL filled', name='taEOLfilledCb', parent=self.panel4, + pos=wxPoint(8, 75), size=wxSize(72, 16), style=0) + EVT_CHECKBOX(self.taEOLfilledCb, wxID_STCSTYLEEDITDLGTAEOLFILLEDCB, + self.OnTaeoffilledcbCheckbox) + + self.taUnderlinedCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTAUNDERLINEDCB, + label='Underlined', name='taUnderlinedCb', parent=self.panel4, + pos=wxPoint(8, 59), size=wxSize(72, 16), style=0) + EVT_CHECKBOX(self.taUnderlinedCb, wxID_STCSTYLEEDITDLGTAUNDERLINEDCB, + self.OnTaunderlinedcbCheckbox) + + self.taItalicCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTAITALICCB, + label='Italic', name='taItalicCb', parent=self.panel4, + pos=wxPoint(8, 43), size=wxSize(72, 16), style=0) + EVT_CHECKBOX(self.taItalicCb, wxID_STCSTYLEEDITDLGTAITALICCB, + self.OnTaitaliccbCheckbox) + + self.taBoldCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTABOLDCB, + label='Bold', name='taBoldCb', parent=self.panel4, pos=wxPoint(8, + 27), size=wxSize(72, 16), style=0) + EVT_CHECKBOX(self.taBoldCb, wxID_STCSTYLEEDITDLGTABOLDCB, + self.OnTaboldcbCheckbox) + + self.bgColDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGBGCOLDEFCB, + label='checkBox1', name='bgColDefCb', parent=self.panel3, + pos=wxPoint(120, 71), size=wxSize(16, 16), style=0) + + self.staticBox1 = wxStaticBox(id=wxID_STCSTYLEEDITDLGSTATICBOX1, + label='Colour', name='staticBox1', parent=self.panel3, + pos=wxPoint(0, 0), size=wxSize(142, 99), style=0) + self.staticBox1.SetConstraints(LayoutAnchors(self.staticBox1, False, + True, True, False)) + + self.faceDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGFACEDEFCB, + label='checkBox1', name='faceDefCb', parent=self.panel1, + pos=wxPoint(120, 0), size=wxSize(16, 16), style=0) + + self.taSizeDefCb = wxCheckBox(id=wxID_STCSTYLEEDITDLGTASIZEDEFCB, + label='checkBox1', name='taSizeDefCb', parent=self.panel2, + pos=wxPoint(88, 0), size=wxSize(16, 16), style=0) def __init__(self, parent, langTitle, lang, configFile, STCsToUpdate=()): self.stc_title = 'wxStyledTextCtrl Style Editor' self.stc_title = 'wxStyledTextCtrl Style Editor - %s' % langTitle - self.sys_font = wxSystemSettings_GetSystemFont(wxSYS_DEFAULT_GUI_FONT).GetFaceName() + if wxPlatform == '__WXMSW__': + self.style_font_size = 8 + else: + self.style_font_size = 10 self._init_ctrls(parent) - - self._onUpdateUI = false self.lang = lang self.configFile = configFile self.style = '' + self.styleNum = 0 self.names = [] self.values = {} self.STCsToUpdate = STCsToUpdate + self._blockUpdate = False - for combo, evtRet, evtRDC in ( - (self.fgColCb, self.OnfgColRet, self.OnGotoCommonDef), - (self.bgColCb, self.OnbgColRet, self.OnGotoCommonDef), - (self.faceCb, self.OnfaceRet, self.OnGotoCommonDef), - (self.sizeCb, self.OnsizeRet, self.OnGotoCommonDef)): - self.bindComboEvts(combo, evtRet, evtRDC) + + for combo, okBtn, evtRet, evtCB, evtRDC in ( + (self.fgColCb, self.fgColOkBtn, self.OnfgColRet, self.OnfgColCombobox, self.OnGotoCommonDef), + (self.bgColCb, self.bgColOkBtn, self.OnbgColRet, self.OnbgColCombobox, self.OnGotoCommonDef), + (self.faceCb, self.faceOkBtn, self.OnfaceRet, self.OnfaceCombobox, self.OnGotoCommonDef), + (self.sizeCb, self.sizeOkBtn, self.OnsizeRet, self.OnsizeCombobox, self.OnGotoCommonDef)): + self.bindComboEvts(combo, okBtn, evtRet, evtCB, evtRDC) (self.config, self.commonDefs, self.styleIdNames, self.styles, self.styleGroupNames, self.predefStyleGroups, @@ -241,12 +408,12 @@ class STCStyleEditDlg(wxDialog): margin = 0 self.stc.SetMarginType(margin, wxSTC_MARGIN_NUMBER) self.stc.SetMarginWidth(margin, 25) - self.stc.SetMarginSensitive(margin, true) + self.stc.SetMarginSensitive(margin, True) EVT_STC_MARGINCLICK(self.stc, wxID_STCSTYLEEDITDLGSTC, self.OnMarginClick) - self.stc.SetUseTabs(false) + self.stc.SetUseTabs(False) self.stc.SetTabWidth(4) - self.stc.SetIndentationGuides(true) + self.stc.SetIndentationGuides(True) self.stc.SetEdgeMode(wxSTC_EDGE_BACKGROUND) self.stc.SetEdgeColumn(44) @@ -256,7 +423,6 @@ class STCStyleEditDlg(wxDialog): self.defNames, self.defValues = parseProp(\ self.styleDict.get(wxSTC_STYLE_DEFAULT, '')) - self.stc.SetText(self.displaySrc) self.stc.EmptyUndoBuffer() self.stc.SetCurrentPos(self.stc.GetTextLength()) @@ -265,9 +431,9 @@ class STCStyleEditDlg(wxDialog): self.populateCombosWithCommonDefs() # Logical grouping of controls and the property they edit - self.allCtrls = [((self.fgColBtn, self.fgColCb), self.fgColDefCb, + self.allCtrls = [((self.fgColBtn, self.fgColCb, self.fgColOkBtn), self.fgColDefCb, 'fore', wxID_STCSTYLEEDITDLGFGCOLDEFCB), - ((self.bgColBtn, self.bgColCb), self.bgColDefCb, + ((self.bgColBtn, self.bgColCb, self.bgColOkBtn), self.bgColDefCb, 'back', wxID_STCSTYLEEDITDLGBGCOLDEFCB), (self.taBoldCb, self.taBoldDefCb, 'bold', wxID_STCSTYLEEDITDLGTABOLDDEFCB), @@ -277,12 +443,12 @@ class STCStyleEditDlg(wxDialog): 'underline', wxID_STCSTYLEEDITDLGTAUNDERLINEDDEFCB), (self.taEOLfilledCb, self.taEOLfilledDefCb, 'eolfilled', wxID_STCSTYLEEDITDLGTAEOLFILLEDDEFCB), - (self.sizeCb, self.taSizeDefCb, + ((self.sizeCb, self.sizeOkBtn), self.taSizeDefCb, 'size', wxID_STCSTYLEEDITDLGTASIZEDEFCB), - ((self.faceCb, self.fixedWidthChk), self.faceDefCb, + ((self.faceCb, self.faceOkBtn, self.fixedWidthChk), self.faceDefCb, 'face', wxID_STCSTYLEEDITDLGFACEDEFCB)] - self.clearCtrls(disableDefs=true) + self.clearCtrls(disableDefs=True) # centralised default checkbox event handler self.chbIdMap = {} for ctrl, chb, prop, wid in self.allCtrls: @@ -291,7 +457,6 @@ class STCStyleEditDlg(wxDialog): chb.SetToolTipString('Toggle defaults') self.Center(wxBOTH) - self._onUpdateUI = true #---Property methods------------------------------------------------------------ def getCtrlForProp(self, findprop): @@ -314,15 +479,16 @@ class STCStyleEditDlg(wxDialog): try: self.updateStyle() - return true + return True except KeyError, errkey: wxLogError('Name not found in Common definition, '\ 'please enter valid reference. (%s)'%errkey) self.restoreStyles(oldstyle) - return false + return False #---Control population methods-------------------------------------------------- def setStyles(self): + if self._blockUpdate: return self.styles, self.styleDict, self.styleNumIdxMap = \ setSTCStyles(self.stc, self.styles, self.styleIdNames, self.commonDefs, self.lang, self.lexer, self.keywords) @@ -346,8 +512,8 @@ class STCStyleEditDlg(wxDialog): def findInStyles(self, txt, styles): for style in styles: if string.find(style, txt) != -1: - return true - return false + return True + return False def rememberStyles(self): return self.names[:], copy.copy(self.values) @@ -356,58 +522,76 @@ class STCStyleEditDlg(wxDialog): self.names, self.values = style self.updateStyle() - def clearCtrls(self, isDefault=false, disableDefs=false): - for ctrl, chb, prop, wid in self.allCtrls: - if prop in ('fore', 'back'): - btn, txt = ctrl - btn.SetBackgroundColour(\ - wxSystemSettings_GetSystemColour(wxSYS_COLOUR_BTNFACE)) - btn.SetForegroundColour(wxColour(255, 255, 255)) - btn.Enable(isDefault) - txt.SetValue('') - txt.Enable(isDefault) - elif prop == 'size': - ctrl.SetValue('') - ctrl.Enable(isDefault) - elif prop == 'face': - ctrl[0].SetValue('') - ctrl[0].Enable(isDefault) - ctrl[1].Enable(isDefault) - ctrl[1].SetValue(false) - elif prop in ('bold', 'italic', 'underline', 'eolfilled'): - ctrl.SetValue(false) - ctrl.Enable(isDefault) + def clearCtrls(self, isDefault=False, disableDefs=False): + self._blockUpdate = True + try: + for ctrl, chb, prop, wid in self.allCtrls: + if prop in ('fore', 'back'): + cbtn, txt, btn = ctrl + cbtn.SetBackgroundColour(\ + wxSystemSettings_GetSystemColour(wxSYS_COLOUR_BTNFACE)) + cbtn.SetForegroundColour(wxColour(255, 255, 255)) + cbtn.Enable(isDefault) + txt.SetValue('') + txt.Enable(isDefault) + btn.Enable(isDefault) + elif prop == 'size': + cmb, btn = ctrl + cmb.SetValue('') + cmb.Enable(isDefault) + btn.Enable(isDefault) + elif prop == 'face': + cmb, btn, chk = ctrl + cmb.SetValue('') + cmb.Enable(isDefault) + btn.Enable(isDefault) + chk.Enable(isDefault) + chk.SetValue(False) + elif prop in ('bold', 'italic', 'underline', 'eolfilled'): + ctrl.SetValue(False) + ctrl.Enable(isDefault) - chb.Enable(not isDefault and not disableDefs) - chb.SetValue(true) + chb.Enable(not isDefault and not disableDefs) + chb.SetValue(True) + finally: + self._blockUpdate = False - def populateProp(self, items, default, forceDisable=false): - for name, val in items: - if name: - ctrl, chb = self.getCtrlForProp(name) + def populateProp(self, items, default, forceDisable=False): + self._blockUpdate = True + try: + for name, val in items: + if name: + ctrl, chb = self.getCtrlForProp(name) - if name in ('fore', 'back'): - btn, txt = ctrl - repval = val%self.commonDefs - btn.SetBackgroundColour(strToCol(repval)) - btn.SetForegroundColour(wxColour(0, 0, 0)) - btn.Enable(not forceDisable) - txt.SetValue(val) - txt.Enable(not forceDisable) - chb.SetValue(default) - elif name == 'size': - ctrl.SetValue(val) - ctrl.Enable(not forceDisable) - chb.SetValue(default) - elif name == 'face': - ctrl[0].SetValue(val) - ctrl[0].Enable(not forceDisable) - ctrl[1].Enable(not forceDisable) - chb.SetValue(default) - elif name in ('bold', 'italic', 'underline', 'eolfilled'): - ctrl.Enable(not forceDisable) - ctrl.SetValue(true) - chb.SetValue(default) + if name in ('fore', 'back'): + cbtn, txt, btn = ctrl + repval = val%self.commonDefs + cbtn.SetBackgroundColour(strToCol(repval)) + cbtn.SetForegroundColour(wxColour(0, 0, 0)) + cbtn.Enable(not forceDisable) + txt.SetValue(val) + txt.Enable(not forceDisable) + btn.Enable(not forceDisable) + chb.SetValue(default) + elif name == 'size': + cmb, btn = ctrl + cmb.SetValue(val) + cmb.Enable(not forceDisable) + btn.Enable(not forceDisable) + chb.SetValue(default) + elif name == 'face': + cmb, btn, chk = ctrl + cmb.SetValue(val) + cmb.Enable(not forceDisable) + btn.Enable(not forceDisable) + chk.Enable(not forceDisable) + chb.SetValue(default) + elif name in ('bold', 'italic', 'underline', 'eolfilled'): + ctrl.Enable(not forceDisable) + ctrl.SetValue(True) + chb.SetValue(default) + finally: + self._blockUpdate = False def valIsCommonDef(self, val): return len(val) >= 5 and val[:2] == '%(' @@ -418,15 +602,15 @@ class STCStyleEditDlg(wxDialog): # handle colour controls for settings if self.styleNum < 0: - self.fgColDefCb.Enable(true) + self.fgColDefCb.Enable(True) if self.styleNum == -1: - self.bgColDefCb.Enable(true) + self.bgColDefCb.Enable(True) # populate with default style - self.populateProp(self.defValues.items(), true, + self.populateProp(self.defValues.items(), True, self.styleNum != wxSTC_STYLE_DEFAULT) # override with current settings - self.populateProp(self.values.items(), false) + self.populateProp(self.values.items(), False) def getCommonDefPropType(self, commonDefName): val = self.commonDefs[commonDefName] @@ -434,50 +618,54 @@ class STCStyleEditDlg(wxDialog): if len(val) == 7 and val[0] == '#': return 'fore' return 'face' - def bindComboEvts(self, combo, returnEvtMeth, rdclickEvtMeth): - wId = wxNewId() - EVT_MENU(self, wId, returnEvtMeth) - combo.SetAcceleratorTable(wxAcceleratorTable([(0, WXK_RETURN, wId)])) + def bindComboEvts(self, combo, btn, btnEvtMeth, comboEvtMeth, rdclickEvtMeth): + EVT_COMBOBOX(combo, combo.GetId(), comboEvtMeth) + EVT_BUTTON(btn, btn.GetId(), btnEvtMeth) EVT_RIGHT_DCLICK(combo, rdclickEvtMeth) - combo.SetToolTipString('Select or press Enter to change, right double-click \n'\ - 'the drop down button to select Common definition (if applicable)') + combo.SetToolTipString('Select from list or click "ok" button on the right to change a manual entry, right double-click \n'\ + 'the drop down button to select Common definition in the Style Editor (if applicable)') + btn.SetToolTipString('Accept value') def populateCombosWithCommonDefs(self, fixedWidthOnly=None): - commonDefs = {'fore': [], 'face': [], 'size': []} + self._blockUpdate = True + try: + commonDefs = {'fore': [], 'face': [], 'size': []} - if self.elementLb.GetSelection() < self.commonDefsStartIdx: - for common in self.commonDefs.keys(): - prop = self.getCommonDefPropType(common) - commonDefs[prop].append('%%(%s)%s'%(common, - prop=='size' and 'd' or 's')) + if self.elementLb.GetSelection() < self.commonDefsStartIdx: + for common in self.commonDefs.keys(): + prop = self.getCommonDefPropType(common) + commonDefs[prop].append('%%(%s)%s'%(common, + prop=='size' and 'd' or 's')) - # Colours - currFg, currBg = self.fgColCb.GetValue(), self.bgColCb.GetValue() - self.fgColCb.Clear(); self.bgColCb.Clear() - for colCommonDef in commonDefs['fore']: - self.fgColCb.Append(colCommonDef) - self.bgColCb.Append(colCommonDef) - self.fgColCb.SetValue(currFg); self.bgColCb.SetValue(currBg) + # Colours + currFg, currBg = self.fgColCb.GetValue(), self.bgColCb.GetValue() + self.fgColCb.Clear(); self.bgColCb.Clear() + for colCommonDef in commonDefs['fore']: + self.fgColCb.Append(colCommonDef) + self.bgColCb.Append(colCommonDef) + self.fgColCb.SetValue(currFg); self.bgColCb.SetValue(currBg) - # Font - if fixedWidthOnly is None: - fixedWidthOnly = self.fixedWidthChk.GetValue() - fontEnum = wxFontEnumerator() - fontEnum.EnumerateFacenames(fixedWidthOnly=fixedWidthOnly) - fontNameList = fontEnum.GetFacenames() + # Font + if fixedWidthOnly is None: + fixedWidthOnly = self.fixedWidthChk.GetValue() + fontEnum = wxFontEnumerator() + fontEnum.EnumerateFacenames(fixedWidthOnly=fixedWidthOnly) + fontNameList = fontEnum.GetFacenames() - currFace = self.faceCb.GetValue() - self.faceCb.Clear() - for colCommonDef in ['']+fontNameList+commonDefs['face']: - self.faceCb.Append(colCommonDef) - self.faceCb.SetValue(currFace) + currFace = self.faceCb.GetValue() + self.faceCb.Clear() + for colCommonDef in ['']+fontNameList+commonDefs['face']: + self.faceCb.Append(colCommonDef) + self.faceCb.SetValue(currFace) - # Size (XXX add std font sizes) - currSize = self.sizeCb.GetValue() - self.sizeCb.Clear() - for colCommonDef in commonDefs['size']: - self.sizeCb.Append(colCommonDef) - self.sizeCb.SetValue(currSize) + # Size (XXX add std font sizes) + currSize = self.sizeCb.GetValue() + self.sizeCb.Clear() + for colCommonDef in commonDefs['size']: + self.sizeCb.Append(colCommonDef) + self.sizeCb.SetValue(currSize) + finally: + self._blockUpdate = False def populateStyleSelector(self): numStyles = self.styleIdNames.items() @@ -489,8 +677,8 @@ class STCStyleEditDlg(wxDialog): # add styles for num, name in numStyles: if num == wxSTC_STYLE_DEFAULT: - self.elementLb.InsertItems([name, '-----Language-----'], 0) - self.elementLb.Append('-----Standard-----') + self.elementLb.InsertItems([name, '----Language----'], 0) + self.elementLb.Append('----Standard----') stdStart = stdPos = self.elementLb.Number() else: # std styles @@ -507,7 +695,7 @@ class STCStyleEditDlg(wxDialog): self.styleNumLookup[name] = num # add settings - self.elementLb.Append('-----Settings-----') + self.elementLb.Append('----Settings----') settings = settingsIdNames.items() settings.sort();settings.reverse() for num, name in settings: @@ -515,7 +703,7 @@ class STCStyleEditDlg(wxDialog): self.styleNumLookup[name] = num # add definitions - self.elementLb.Append('-----Common-----') + self.elementLb.Append('----Common----') self.commonDefsStartIdx = self.elementLb.Number() for common in self.commonDefs.keys(): tpe = type(self.commonDefs[common]) @@ -526,7 +714,7 @@ class STCStyleEditDlg(wxDialog): def getColourDlg(self, colour, title=''): data = wxColourData() data.SetColour(colour) - data.SetChooseFull(true) + data.SetChooseFull(True) dlg = wxColourDialog(self, data) try: dlg.SetTitle(title) @@ -546,7 +734,7 @@ class STCStyleEditDlg(wxDialog): colBtn.SetBackgroundColour(col) colStr = colToStr(col) colCb.SetValue(colStr) - self.editProp(true, prop, colStr) + self.editProp(True, prop, colStr) def OnFgcolbtnButton(self, event): self.editColProp(self.fgColBtn, self.fgColCb, 'fore') @@ -554,8 +742,11 @@ class STCStyleEditDlg(wxDialog): def OnBgcolbtnButton(self, event): self.editColProp(self.bgColBtn, self.bgColCb, 'back') - def editColTCProp(self, colCb, colBtn, prop): - colStr = colCb.GetValue() + def editColTCProp(self, colCb, colBtn, prop, val=None): + if val is None: + colStr = colCb.GetValue() + else: + colStr = val if colStr: col = strToCol(colStr%self.commonDefs) if self.editProp(colStr!='', prop, colStr): @@ -571,10 +762,20 @@ class STCStyleEditDlg(wxDialog): try: self.editColTCProp(self.fgColCb, self.fgColBtn, 'fore') except AssertionError: wxLogError('Not a valid colour value') + def OnfgColCombobox(self, event): + if self._blockUpdate: return + try: self.editColTCProp(self.fgColCb, self.fgColBtn, 'fore', event.GetString()) + except AssertionError: wxLogError('Not a valid colour value') + def OnbgColRet(self, event): try: self.editColTCProp(self.bgColCb, self.bgColBtn, 'back') except AssertionError: wxLogError('Not a valid colour value') + def OnbgColCombobox(self, event): + if self._blockUpdate: return + try: self.editColTCProp(self.bgColCb, self.bgColBtn, 'back', event.GetString()) + except AssertionError: wxLogError('Not a valid colour value') + #---Text attribute events------------------------------------------------------- def OnTaeoffilledcbCheckbox(self, event): self.editProp(event.IsChecked(), 'eolfilled') @@ -593,17 +794,29 @@ class STCStyleEditDlg(wxDialog): if self.valIsCommonDef(val): idx = self.elementLb.FindString(val) if idx != -1: - self.elementLb.SetSelection(idx, true) + self.elementLb.SetSelection(idx, True) self.OnElementlbListbox(None) def OnfaceRet(self, event): - val = self.faceCb.GetValue() + self.setFace(self.faceCb.GetValue()) + + def OnfaceCombobox(self, event): + if self._blockUpdate: return + self.setFace(event.GetString()) + + def setFace(self, val): try: val%self.commonDefs except KeyError: wxLogError('Invalid common definition') else: self.editProp(val!='', 'face', val) def OnsizeRet(self, event): - val = self.sizeCb.GetValue() + self.setSize(self.sizeCb.GetValue()) + + def OnsizeCombobox(self, event): + if self._blockUpdate: return + self.setSize(event.GetString()) + + def setSize(self, val): try: int(val%self.commonDefs) except ValueError: wxLogError('Not a valid integer size value') except KeyError: wxLogError('Invalid common definition') @@ -619,19 +832,22 @@ class STCStyleEditDlg(wxDialog): if isCommon: common = styleIdent[2:-2] prop = self.getCommonDefPropType(common) - self.clearCtrls(disableDefs=true) + self.clearCtrls(disableDefs=True) if prop == 'fore': - self.fgColBtn.Enable(true) - self.fgColCb.Enable(true) + self.fgColBtn.Enable(True) + self.fgColCb.Enable(True) + self.fgColOkBtn.Enable(True) elif prop == 'face': - self.faceCb.Enable(true) - self.fixedWidthChk.Enable(true) + self.faceCb.Enable(True) + self.fixedWidthChk.Enable(True) + self.faceOkBtn.Enable(True) elif prop == 'size': - self.sizeCb.Enable(true) + self.sizeCb.Enable(True) + self.sizeOkBtn.Enable(True) commonDefVal = str(self.commonDefs[common]) self.styleDefST.SetLabel(commonDefVal) - self.populateProp( [(prop, commonDefVal)], true) + self.populateProp( [(prop, commonDefVal)], True) self.styleNum = 'common' self.style = [common, prop, commonDefVal] @@ -642,7 +858,6 @@ class STCStyleEditDlg(wxDialog): self.styleNum = self.styleNumLookup[styleIdent] self.style = self.styleDict[self.styleNum] self.names, self.values = parseProp(self.style) - if self.styleNum == wxSTC_STYLE_DEFAULT: self.defNames, self.defValues = \ self.names, self.values @@ -654,55 +869,59 @@ class STCStyleEditDlg(wxDialog): self.populateCtrls() # separator selected else: - self.clearCtrls(disableDefs=true) + self.clearCtrls(disableDefs=True) if styleIdent: self.styleDefST.SetLabel(styleCategoryDescriptions[styleIdent]) self.populateCombosWithCommonDefs() def OnDefaultCheckBox(self, event): - self._onUpdateUI = false - try: - if self.chbIdMap.has_key(event.GetId()): - ctrl, chb, prop, wid = self.chbIdMap[event.GetId()] - restore = not event.IsChecked() - if prop in ('fore', 'back'): - ctrl[0].Enable(restore) - ctrl[1].Enable(restore) - if restore: - # XXX use ctrl[1] !! - colStr = ctrl[1].GetValue() - #if prop == 'fore': colStr = self.fgColCb.GetValue() - #else: colStr = self.bgColCb.GetValue() - if colStr: self.editProp(true, prop, colStr) - else: - self.editProp(false, prop) - elif prop == 'size': - val = ctrl.GetValue() - if val: self.editProp(restore, prop, val) - ctrl.Enable(restore) - elif prop == 'face': - val = ctrl[0].GetStringSelection() - if val: self.editProp(restore, prop, val) - ctrl[0].Enable(restore) - ctrl[1].Enable(restore) - elif prop in ('bold', 'italic', 'underline', 'eolfilled'): - ctrl.Enable(restore) - if ctrl.GetValue(): self.editProp(restore, prop) - finally: - self._onUpdateUI = true + if self.chbIdMap.has_key(event.GetId()): + ctrl, chb, prop, wid = self.chbIdMap[event.GetId()] + restore = not event.IsChecked() + if prop in ('fore', 'back'): + cbtn, cmb, btn = ctrl + cbtn.Enable(restore) + cmb.Enable(restore) + btn.Enable(restore) + if restore: + colStr = cmb.GetValue() + #if prop == 'fore': colStr = self.fgColCb.GetValue() + #else: colStr = self.bgColCb.GetValue() + if colStr: self.editProp(True, prop, colStr) + else: + self.editProp(False, prop) + elif prop == 'size': + cmb, btn = ctrl + val = cmb.GetValue() + if val: self.editProp(restore, prop, val) + cmb.Enable(restore) + btn.Enable(restore) + elif prop == 'face': + cmb, btn, chk = ctrl + val = cmb.GetStringSelection() + if val: self.editProp(restore, prop, val) + cmb.Enable(restore) + btn.Enable(restore) + chk.Enable(restore) + elif prop in ('bold', 'italic', 'underline', 'eolfilled'): + ctrl.Enable(restore) + if ctrl.GetValue(): self.editProp(restore, prop) def OnOkbtnButton(self, event): # write styles and common defs to the config - writeStylesToConfig(self.config, 'style.%s'%self.lang, self.styles) - self.config.SetPath('') - self.config.Write(commonDefsFile, `self.commonDefs`) - self.config.Flush() - - for stc in self.STCsToUpdate: - setSTCStyles(stc, self.styles, self.styleIdNames, self.commonDefs, - self.lang, self.lexer, self.keywords) + wxBeginBusyCursor() + try: + writeStylesToConfig(self.config, 'style.%s'%self.lang, self.styles) + self.config.SetPath('') + self.config.Write(commonDefsFile, `self.commonDefs`) + self.config.Flush() + for stc in self.STCsToUpdate: + setSTCStyles(stc, self.styles, self.styleIdNames, self.commonDefs, + self.lang, self.lexer, self.keywords) + finally: + wxEndBusyCursor() self.EndModal(wxID_OK) def OnCancelbtnButton(self, event): @@ -755,7 +974,7 @@ class STCStyleEditDlg(wxDialog): self.commonDefs[name] = commonPropDefs[prop] self.elementLb.Append('%('+name+')'+\ (type(commonPropDefs[prop]) is type('') and 's' or 'd')) - self.elementLb.SetSelection(self.elementLb.Number()-1, true) + self.elementLb.SetSelection(self.elementLb.Number()-1, True) self.populateCombosWithCommonDefs() self.OnElementlbListbox(None) finally: @@ -787,20 +1006,19 @@ class STCStyleEditDlg(wxDialog): self.elementLb.Delete(selIdx) if selIdx == self.elementLb.Number(): selIdx = selIdx - 1 - self.elementLb.SetSelection(selIdx, true) + self.elementLb.SetSelection(selIdx, True) self.OnElementlbListbox(None) #---STC events------------------------------------------------------------------ def OnUpdateUI(self, event): - if self._onUpdateUI: - styleBefore = self.stc.GetStyleAt(self.stc.GetCurrentPos()) - if self.styleIdNames.has_key(styleBefore): - self.elementLb.SetStringSelection(self.styleIdNames[styleBefore], - true) - else: - self.elementLb.SetSelection(0, false) - self.styleDefST.SetLabel('Style %d not defined, sorry.'%styleBefore) - self.OnElementlbListbox(None) + styleBefore = self.stc.GetStyleAt(self.stc.GetCurrentPos()) + if self.styleIdNames.has_key(styleBefore): + self.elementLb.SetStringSelection(self.styleIdNames[styleBefore], + True) + else: + self.elementLb.SetSelection(0, False) + self.styleDefST.SetLabel('Style %d not defined, sorry.'%styleBefore) + self.OnElementlbListbox(None) event.Skip() def checkBraces(self, style): @@ -825,7 +1043,7 @@ class STCStyleEditDlg(wxDialog): event.Skip() def OnMarginClick(self, event): - self.elementLb.SetStringSelection('Line numbers', true) + self.elementLb.SetStringSelection('Line numbers', True) self.OnElementlbListbox(None) @@ -836,20 +1054,20 @@ class STCStyleEditDlg(wxDialog): class CommonDefDlg(wxDialog): def _init_ctrls(self, prnt): wxDialog.__init__(self, id = wxID_COMMONDEFDLG, name = 'CommonDefDlg', parent = prnt, pos = wxPoint(398, 249), size = wxSize(192, 220), style = wxDEFAULT_DIALOG_STYLE, title = 'Common definition') - self.SetClientSize(wxSize(184, 175)) + self.SetClientSize(wxSize(184, 200)) - self.propTypeRBx = wxRadioBox(choices = ['Colour value', 'Font face', 'Size value'], id = wxID_COMMONDEFDLGPROPTYPERBX, label = 'Common definition property type', majorDimension = 1, name = 'propTypeRBx', parent = self, point = wxPoint(8, 8), size = wxSize(168, 72), style = wxRA_SPECIFY_COLS, validator = wxDefaultValidator) + self.propTypeRBx = wxRadioBox(choices = ['Colour value', 'Font face', 'Size value'], id = wxID_COMMONDEFDLGPROPTYPERBX, label = 'Property type', majorDimension = 1, name = 'propTypeRBx', parent = self, point = wxPoint(8, 8), size = wxSize(168, 92), style = wxRA_SPECIFY_COLS, validator = wxDefaultValidator) self.propTypeRBx.SetSelection(self._propTypeIdx) - self.staticBox1 = wxStaticBox(id = wxID_COMMONDEFDLGSTATICBOX1, label = 'Name', name = 'staticBox1', parent = self, pos = wxPoint(8, 88), size = wxSize(168, 46), style = 0) + self.staticBox1 = wxStaticBox(id = wxID_COMMONDEFDLGSTATICBOX1, label = 'Name', name = 'staticBox1', parent = self, pos = wxPoint(8, 108), size = wxSize(168, 46), style = 0) - self.comDefNameTC = wxTextCtrl(id = wxID_COMMONDEFDLGCOMDEFNAMETC, name = 'comDefNameTC', parent = self, pos = wxPoint(16, 104), size = wxSize(152, 21), style = 0, value = '') + self.comDefNameTC = wxTextCtrl(id = wxID_COMMONDEFDLGCOMDEFNAMETC, name = 'comDefNameTC', parent = self, pos = wxPoint(16, 124), size = wxSize(152, 21), style = 0, value = '') self.comDefNameTC.SetLabel(self._comDefName) - self.okBtn = wxButton(id = wxID_COMMONDEFDLGOKBTN, label = 'OK', name = 'okBtn', parent = self, pos = wxPoint(8, 144), size = wxSize(80, 23), style = 0) + self.okBtn = wxButton(id = wxID_COMMONDEFDLGOKBTN, label = 'OK', name = 'okBtn', parent = self, pos = wxPoint(8, 164), size = wxSize(80, 23), style = 0) EVT_BUTTON(self.okBtn, wxID_COMMONDEFDLGOKBTN, self.OnOkbtnButton) - self.cancelBtn = wxButton(id = wxID_COMMONDEFDLGCANCELBTN, label = 'Cancel', name = 'cancelBtn', parent = self, pos = wxPoint(96, 144), size = wxSize(80, 23), style = 0) + self.cancelBtn = wxButton(id = wxID_COMMONDEFDLGCANCELBTN, label = 'Cancel', name = 'cancelBtn', parent = self, pos = wxPoint(96, 164), size = wxSize(80, 23), style = 0) EVT_BUTTON(self.cancelBtn, wxID_COMMONDEFDLGCANCELBTN, self.OnCancelbtnButton) def __init__(self, parent, name='', propIdx=0): @@ -878,9 +1096,9 @@ class CommonDefDlg(wxDialog): def setSelectionColour(stc, style): names, values = parseProp(style) if 'fore' in names: - stc.SetSelForeground(true, strToCol(values['fore'])) + stc.SetSelForeground(True, strToCol(values['fore'])) if 'back' in names: - stc.SetSelBackground(true, strToCol(values['back'])) + stc.SetSelBackground(True, strToCol(values['back'])) def setCursorColour(stc, style): names, values = parseProp(style) @@ -933,6 +1151,7 @@ def parsePropLine(prop): return int(string.split(name, '.')[-1]), value def setSTCStyles(stc, styles, styleIdNames, commonDefs, lang, lexer, keywords): + #wxLogMessage('Set style') styleDict = {} styleNumIdxMap = {} @@ -953,7 +1172,19 @@ def setSTCStyles(stc, styles, styleIdNames, commonDefs, lang, lexer, keywords): newStyles.append(writeProp(num, styleDict[num], lang)) idx = idx + 1 + # Set background colour to reduce flashing effect on refresh or page switch + bkCol = None + if styleDict.has_key(0): prop = styleDict[0] + else: prop = styleDict[wxSTC_STYLE_DEFAULT] + names, vals = parseProp(prop) + if 'back' in names: + bkCol = strToCol(vals['back']) + if bkCol is None: + bkCol = wxWHITE + stc.SetBackgroundColour(bkCol) + # Set the styles on the wxSTC +# stc.Show(False) stc.StyleResetDefault() stc.ClearDocumentStyle() stc.SetLexer(lexer) @@ -973,15 +1204,19 @@ def setSTCStyles(stc, styles, styleIdNames, commonDefs, lang, lexer, keywords): setEdgeColour(stc, style % commonDefs) stc.Colourise(0, stc.GetTextLength()) +# stc.Show(True) return newStyles, styleDict, styleNumIdxMap #---Config reading and writing ------------------------------------------------- commonDefsFile = 'common.defs.%s'%(wxPlatform == '__WXMSW__' and 'msw' or 'gtk') +def readPyValFromConfig(conf, name): + return eval(string.replace(conf.Read(name), '\r\n', '\n')+'\n') + def initFromConfig(configFile, lang): cfg = wxFileConfig(localFilename=configFile, style=wxCONFIG_USE_LOCAL_FILE) - cfg.SetExpandEnvVars(false) + cfg.SetExpandEnvVars(False) # read in all group names for this language groupPrefix = 'style.%s'%lang @@ -998,26 +1233,26 @@ def initFromConfig(configFile, lang): cont, val, idx = cfg.GetNextGroup(idx) # read in common elements - commonDefs = eval(cfg.Read(commonDefsFile)) + commonDefs = readPyValFromConfig(cfg, commonDefsFile) assert type(commonDefs) is type({}), \ 'Common definitions (%s) not a valid dict'%commonDefsFile - commonStyleIdNames = eval(cfg.Read('common.styleidnames')) + commonStyleIdNames = readPyValFromConfig(cfg, 'common.styleidnames') assert type(commonStyleIdNames) is type({}), \ 'Common definitions (%s) not a valid dict'%'common.styleidnames' # Lang spesific settings cfg.SetPath(lang) - styleIdNames = eval(cfg.Read('styleidnames')) + styleIdNames = readPyValFromConfig(cfg, 'styleidnames') assert type(commonStyleIdNames) is type({}), \ 'Not a valid dict [%s] styleidnames)'%lang styleIdNames.update(commonStyleIdNames) - braceInfo = eval(cfg.Read('braces')) + braceInfo = readPyValFromConfig(cfg, 'braces') assert type(commonStyleIdNames) is type({}), \ 'Not a valid dict [%s] braces)'%lang displaySrc = cfg.Read('displaysrc') - lexer = eval(cfg.Read('lexer')) + lexer = readPyValFromConfig(cfg, 'lexer') keywords = cfg.Read('keywords') cfg.SetPath('') @@ -1073,9 +1308,16 @@ def initSTC(stc, config, lang): #------------------------------------------------------------------------------- if __name__ == '__main__': - app = wxPySimpleApp() - config = os.path.abspath('stc-styles.rc.cfg') + from wxPython.help import * + app = wxPySimpleApp() + + provider = wxSimpleHelpProvider() + wxHelpProvider_Set(provider) + + home = os.environ.get('HOME') + if home: home = os.path.join(home, '.boa') + config = os.path.abspath(os.path.join(home, 'stc-styles.rc.cfg')) if 0: f = wxFrame(None, -1, 'Test frame (double click for editor)') stc = wxStyledTextCtrl(f, -1) @@ -1086,7 +1328,7 @@ if __name__ == '__main__': stc.SetText(open('STCStyleEditor.py').read()) EVT_LEFT_DCLICK(stc, OnDblClick) initSTC(stc, config, 'python') - f.Show(true) + f.Show(True) app.MainLoop() else: dlg = STCStyleEditDlg(None, @@ -1099,6 +1341,3 @@ if __name__ == '__main__': config) try: dlg.ShowModal() finally: dlg.Destroy() - del config - app.MainLoop() - diff --git a/wxPython/samples/doodle/.cvsignore b/wxPython/samples/doodle/.cvsignore index 9d0b71a3c7..f2bc31a03e 100644 --- a/wxPython/samples/doodle/.cvsignore +++ b/wxPython/samples/doodle/.cvsignore @@ -1,2 +1,3 @@ +.DS_Store build dist diff --git a/wxPython/samples/doodle/doodle.py b/wxPython/samples/doodle/doodle.py index 8fefcd0416..4895026e74 100644 --- a/wxPython/samples/doodle/doodle.py +++ b/wxPython/samples/doodle/doodle.py @@ -74,7 +74,7 @@ class DoodleWindow(wxWindow): dc.SetBackground(wxBrush(self.GetBackgroundColour())) dc.Clear() self.DrawLines(dc) - self.reInitBuffer = false + self.reInitBuffer = False def SetColour(self, colour): @@ -125,14 +125,14 @@ class DoodleWindow(wxWindow): def OnCheckMenuColours(self, event): text = self.menuColours[event.GetId()] if text == self.colour: - event.Check(true) + event.Check(True) else: - event.Check(false) + event.Check(False) def OnCheckMenuThickness(self, event): if event.GetId() == self.thickness: - event.Check(true) + event.Check(True) else: - event.Check(false) + event.Check(False) def OnLeftDown(self, event): @@ -180,7 +180,7 @@ class DoodleWindow(wxWindow): Called when the window is resized. We set a flag so the idle handler will resize the buffer. """ - self.reInitBuffer = true + self.reInitBuffer = True def OnIdle(self, event): @@ -192,7 +192,7 @@ class DoodleWindow(wxWindow): """ if self.reInitBuffer: self.InitBuffer() - self.Refresh(FALSE) + self.Refresh(False) def OnPaint(self, event): @@ -251,6 +251,6 @@ class DoodleFrame(wxFrame): if __name__ == '__main__': app = wxPySimpleApp() frame = DoodleFrame(None) - frame.Show(true) + frame.Show(True) app.MainLoop() diff --git a/wxPython/samples/doodle/superdoodle.py b/wxPython/samples/doodle/superdoodle.py index 1923d13654..08ee49339e 100644 --- a/wxPython/samples/doodle/superdoodle.py +++ b/wxPython/samples/doodle/superdoodle.py @@ -53,7 +53,7 @@ class DoodleFrame(wxFrame): # Tell the frame that it should layout itself in response to # size events. - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(box) @@ -213,7 +213,7 @@ class ControlPanel(wxPanel): box.Add(tGrid, 0, wxALL, spacing) box.Add(ci, 0, wxEXPAND|wxALL, spacing) self.SetSizer(box) - self.SetAutoLayout(true) + self.SetAutoLayout(True) # Resize this window so it is just large enough for the # minimum requirements of the sizer. @@ -348,7 +348,7 @@ instructions: </p> lc.height.AsIs() button.SetConstraints(lc) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.Layout() self.CentreOnParent(wxBOTH) @@ -358,9 +358,9 @@ instructions: </p> class DoodleApp(wxApp): def OnInit(self): frame = DoodleFrame(None) - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True #---------------------------------------------------------------------- diff --git a/wxPython/samples/frogedit/FrogEdit.py b/wxPython/samples/frogedit/FrogEdit.py index ee46be3474..157b0e043e 100644 --- a/wxPython/samples/frogedit/FrogEdit.py +++ b/wxPython/samples/frogedit/FrogEdit.py @@ -12,8 +12,6 @@ from wxPython.wx import * from StatusBar import * from FrogEditor import FrogEditor -TRUE = 1 -FALSE = 0 ABOUT_TEXT = """FrogEdit : Copyright 2001 Adam Feuer and Steve Howell wxEditor component : Copyright 1999 - 2001 Dirk Holtwic, Robin Dunn, Adam Feuer, Steve Howell @@ -95,7 +93,7 @@ class FrogEditFrame(wxFrame): def SetUpSplitter(self, splitter, win, log): splitter.SplitHorizontally(win, log) - splitter.SetSashPosition(360, true) + splitter.SetSashPosition(360, True) splitter.SetMinimumPaneSize(40) def MakeToolbar(self, win): @@ -109,7 +107,7 @@ class FrogEditFrame(wxFrame): borderWidth = 5 mainBox.Add(self.edl, 1, wxALL|wxGROW, borderWidth) win.SetSizer(mainBox) - win.SetAutoLayout(true) + win.SetAutoLayout(True) ##-------------- Init Menus @@ -180,9 +178,9 @@ class FrogEditFrame(wxFrame): result = dialog.ShowModal() dialog.Destroy() if result == wxID_OK: - return TRUE + return True else: - return FALSE + return False def SelectFileDialog(self, defaultDir=None, defaultFile=None, wildCard=None): if defaultDir == None: @@ -247,9 +245,9 @@ class FrogEditFrame(wxFrame): f.close() self.edl.UnTouchBuffer() self.sb.setFileName(fileName) - return TRUE + return True except: - return FALSE + return False def OpenFile(self, fileName): try: @@ -262,9 +260,9 @@ class FrogEditFrame(wxFrame): self.edl.SetText(contents) self.fileName = fileName self.sb.setFileName(fileName) - return TRUE + return True except: - return FALSE + return False @@ -288,7 +286,7 @@ class FrogEditFrame(wxFrame): return fileName = self.SelectFileDialog(self.GetCurrentDir()) if fileName is not None: - if self.OpenFile(fileName) is FALSE: + if self.OpenFile(fileName) is False: self.OpenFileError(fileName) self.edl.SetFocus() @@ -296,7 +294,7 @@ class FrogEditFrame(wxFrame): if self.fileName is None: return self.OnSaveFileAs(event) wxLogMessage("Saving %s..." % self.fileName) - if self.SaveFile(self.fileName) is not TRUE: + if self.SaveFile(self.fileName) is not True: self.SaveFileError(self.fileName) self.edl.SetFocus() @@ -305,7 +303,7 @@ class FrogEditFrame(wxFrame): if fileName is not None: self.fileName = fileName wxLogMessage("Saving %s..." % self.fileName) - if self.SaveFile(self.fileName) is not TRUE: + if self.SaveFile(self.fileName) is not True: self.SaveFileError(self.fileName) self.edl.SetFocus() @@ -331,7 +329,7 @@ class FrogEditFrame(wxFrame): def LoadInitialFile(self, fileName): if fileName is not None: - if self.OpenFile(fileName) is FALSE: + if self.OpenFile(fileName) is False: self.OpenFileError(fileName) @@ -354,7 +352,7 @@ class FrogEditLauncher: def Main(self): app = wxPySimpleApp() win = self.MakeAppFrame() - win.Show(true) + win.Show(True) win.LoadInitialFile(self.GetArgvFilename()) app.MainLoop() diff --git a/wxPython/samples/pySketch/pySketch.py b/wxPython/samples/pySketch/pySketch.py index 57edf205fd..2340d45e8a 100644 --- a/wxPython/samples/pySketch/pySketch.py +++ b/wxPython/samples/pySketch/pySketch.py @@ -36,13 +36,13 @@ Known Bugs: * Scrolling the window causes the drawing panel to be mucked up until you - refresh it. I've got no idea why. + refresh it. I've got no idea why. * I suspect that the reference counting for some wxPoint objects is getting mucked up; when the user quits, we get errors about being - unable to call del on a 'None' object. + unable to call del on a 'None' object. """ -import string, cPickle, os.path +import cPickle, os.path from wxPython.wx import * import traceback, types @@ -143,2146 +143,2146 @@ class DrawingFrame(wxFrame): # ========================================== def __init__(self, parent, id, title, fileName=None): - """ Standard constructor. + """ Standard constructor. - 'parent', 'id' and 'title' are all passed to the standard wxFrame - constructor. 'fileName' is the name and path of a saved file to - load into this frame, if any. - """ + 'parent', 'id' and 'title' are all passed to the standard wxFrame + constructor. 'fileName' is the name and path of a saved file to + load into this frame, if any. + """ wxFrame.__init__(self, parent, id, title, - style = wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS | - wxNO_FULL_REPAINT_ON_RESIZE) + style = wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS | + wxNO_FULL_REPAINT_ON_RESIZE) - # Setup our menu bar. + # Setup our menu bar. - menuBar = wxMenuBar() + menuBar = wxMenuBar() - self.fileMenu = wxMenu() - self.fileMenu.Append(wxID_NEW, "New\tCTRL-N") - self.fileMenu.Append(wxID_OPEN, "Open...\tCTRL-O") - self.fileMenu.Append(wxID_CLOSE, "Close\tCTRL-W") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(wxID_SAVE, "Save\tCTRL-S") - self.fileMenu.Append(wxID_SAVEAS, "Save As...") - self.fileMenu.Append(wxID_REVERT, "Revert...") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(wxID_EXIT, "Quit\tCTRL-Q") + self.fileMenu = wxMenu() + self.fileMenu.Append(wxID_NEW, "New\tCTRL-N") + self.fileMenu.Append(wxID_OPEN, "Open...\tCTRL-O") + self.fileMenu.Append(wxID_CLOSE, "Close\tCTRL-W") + self.fileMenu.AppendSeparator() + self.fileMenu.Append(wxID_SAVE, "Save\tCTRL-S") + self.fileMenu.Append(wxID_SAVEAS, "Save As...") + self.fileMenu.Append(wxID_REVERT, "Revert...") + self.fileMenu.AppendSeparator() + self.fileMenu.Append(wxID_EXIT, "Quit\tCTRL-Q") - menuBar.Append(self.fileMenu, "File") + menuBar.Append(self.fileMenu, "File") - self.editMenu = wxMenu() - self.editMenu.Append(menu_UNDO, "Undo\tCTRL-Z") - self.editMenu.AppendSeparator() - self.editMenu.Append(menu_SELECT_ALL, "Select All\tCTRL-A") - self.editMenu.AppendSeparator() - self.editMenu.Append(menu_DUPLICATE, "Duplicate\tCTRL-D") - self.editMenu.Append(menu_EDIT_TEXT, "Edit...\tCTRL-E") - self.editMenu.Append(menu_DELETE, "Delete\tDEL") + self.editMenu = wxMenu() + self.editMenu.Append(menu_UNDO, "Undo\tCTRL-Z") + self.editMenu.AppendSeparator() + self.editMenu.Append(menu_SELECT_ALL, "Select All\tCTRL-A") + self.editMenu.AppendSeparator() + self.editMenu.Append(menu_DUPLICATE, "Duplicate\tCTRL-D") + self.editMenu.Append(menu_EDIT_TEXT, "Edit...\tCTRL-E") + self.editMenu.Append(menu_DELETE, "Delete\tDEL") - menuBar.Append(self.editMenu, "Edit") + menuBar.Append(self.editMenu, "Edit") - self.toolsMenu = wxMenu() - self.toolsMenu.Append(menu_SELECT, "Selection", kind=wxITEM_CHECK) - self.toolsMenu.Append(menu_LINE, "Line", kind=wxITEM_CHECK) - self.toolsMenu.Append(menu_RECT, "Rectangle", kind=wxITEM_CHECK) - self.toolsMenu.Append(menu_ELLIPSE, "Ellipse", kind=wxITEM_CHECK) - self.toolsMenu.Append(menu_TEXT, "Text", kind=wxITEM_CHECK) + self.toolsMenu = wxMenu() + self.toolsMenu.Append(menu_SELECT, "Selection", kind=wxITEM_CHECK) + self.toolsMenu.Append(menu_LINE, "Line", kind=wxITEM_CHECK) + self.toolsMenu.Append(menu_RECT, "Rectangle", kind=wxITEM_CHECK) + self.toolsMenu.Append(menu_ELLIPSE, "Ellipse", kind=wxITEM_CHECK) + self.toolsMenu.Append(menu_TEXT, "Text", kind=wxITEM_CHECK) - menuBar.Append(self.toolsMenu, "Tools") + menuBar.Append(self.toolsMenu, "Tools") - self.objectMenu = wxMenu() - self.objectMenu.Append(menu_MOVE_FORWARD, "Move Forward") - self.objectMenu.Append(menu_MOVE_TO_FRONT, "Move to Front\tCTRL-F") - self.objectMenu.Append(menu_MOVE_BACKWARD, "Move Backward") - self.objectMenu.Append(menu_MOVE_TO_BACK, "Move to Back\tCTRL-B") + self.objectMenu = wxMenu() + self.objectMenu.Append(menu_MOVE_FORWARD, "Move Forward") + self.objectMenu.Append(menu_MOVE_TO_FRONT, "Move to Front\tCTRL-F") + self.objectMenu.Append(menu_MOVE_BACKWARD, "Move Backward") + self.objectMenu.Append(menu_MOVE_TO_BACK, "Move to Back\tCTRL-B") - menuBar.Append(self.objectMenu, "Object") + menuBar.Append(self.objectMenu, "Object") - self.helpMenu = wxMenu() - self.helpMenu.Append(menu_ABOUT, "About pySketch...") + self.helpMenu = wxMenu() + self.helpMenu.Append(menu_ABOUT, "About pySketch...") - menuBar.Append(self.helpMenu, "Help") + menuBar.Append(self.helpMenu, "Help") - self.SetMenuBar(menuBar) + self.SetMenuBar(menuBar) - # Create our toolbar. + # Create our toolbar. - self.toolbar = self.CreateToolBar(wxTB_HORIZONTAL | - wxNO_BORDER | wxTB_FLAT) + self.toolbar = self.CreateToolBar(wxTB_HORIZONTAL | + wxNO_BORDER | wxTB_FLAT) - self.toolbar.AddSimpleTool(wxID_NEW, - wxBitmap("images/new.bmp", - wxBITMAP_TYPE_BMP), - "New") - self.toolbar.AddSimpleTool(wxID_OPEN, - wxBitmap("images/open.bmp", - wxBITMAP_TYPE_BMP), - "Open") - self.toolbar.AddSimpleTool(wxID_SAVE, - wxBitmap("images/save.bmp", - wxBITMAP_TYPE_BMP), - "Save") - self.toolbar.AddSeparator() - self.toolbar.AddSimpleTool(menu_UNDO, - wxBitmap("images/undo.bmp", - wxBITMAP_TYPE_BMP), - "Undo") - self.toolbar.AddSeparator() - self.toolbar.AddSimpleTool(menu_DUPLICATE, - wxBitmap("images/duplicate.bmp", - wxBITMAP_TYPE_BMP), - "Duplicate") - self.toolbar.AddSeparator() - self.toolbar.AddSimpleTool(menu_MOVE_FORWARD, - wxBitmap("images/moveForward.bmp", - wxBITMAP_TYPE_BMP), - "Move Forward") - self.toolbar.AddSimpleTool(menu_MOVE_BACKWARD, - wxBitmap("images/moveBack.bmp", - wxBITMAP_TYPE_BMP), - "Move Backward") + self.toolbar.AddSimpleTool(wxID_NEW, + wxBitmap("images/new.bmp", + wxBITMAP_TYPE_BMP), + "New") + self.toolbar.AddSimpleTool(wxID_OPEN, + wxBitmap("images/open.bmp", + wxBITMAP_TYPE_BMP), + "Open") + self.toolbar.AddSimpleTool(wxID_SAVE, + wxBitmap("images/save.bmp", + wxBITMAP_TYPE_BMP), + "Save") + self.toolbar.AddSeparator() + self.toolbar.AddSimpleTool(menu_UNDO, + wxBitmap("images/undo.bmp", + wxBITMAP_TYPE_BMP), + "Undo") + self.toolbar.AddSeparator() + self.toolbar.AddSimpleTool(menu_DUPLICATE, + wxBitmap("images/duplicate.bmp", + wxBITMAP_TYPE_BMP), + "Duplicate") + self.toolbar.AddSeparator() + self.toolbar.AddSimpleTool(menu_MOVE_FORWARD, + wxBitmap("images/moveForward.bmp", + wxBITMAP_TYPE_BMP), + "Move Forward") + self.toolbar.AddSimpleTool(menu_MOVE_BACKWARD, + wxBitmap("images/moveBack.bmp", + wxBITMAP_TYPE_BMP), + "Move Backward") - self.toolbar.Realize() + self.toolbar.Realize() - # Associate each menu/toolbar item with the method that handles that - # item. + # Associate each menu/toolbar item with the method that handles that + # item. - EVT_MENU(self, wxID_NEW, self.doNew) - EVT_MENU(self, wxID_OPEN, self.doOpen) - EVT_MENU(self, wxID_CLOSE, self.doClose) - EVT_MENU(self, wxID_SAVE, self.doSave) - EVT_MENU(self, wxID_SAVEAS, self.doSaveAs) - EVT_MENU(self, wxID_REVERT, self.doRevert) - EVT_MENU(self, wxID_EXIT, self.doExit) + EVT_MENU(self, wxID_NEW, self.doNew) + EVT_MENU(self, wxID_OPEN, self.doOpen) + EVT_MENU(self, wxID_CLOSE, self.doClose) + EVT_MENU(self, wxID_SAVE, self.doSave) + EVT_MENU(self, wxID_SAVEAS, self.doSaveAs) + EVT_MENU(self, wxID_REVERT, self.doRevert) + EVT_MENU(self, wxID_EXIT, self.doExit) - EVT_MENU(self, menu_UNDO, self.doUndo) - EVT_MENU(self, menu_SELECT_ALL, self.doSelectAll) - EVT_MENU(self, menu_DUPLICATE, self.doDuplicate) - EVT_MENU(self, menu_EDIT_TEXT, self.doEditText) - EVT_MENU(self, menu_DELETE, self.doDelete) + EVT_MENU(self, menu_UNDO, self.doUndo) + EVT_MENU(self, menu_SELECT_ALL, self.doSelectAll) + EVT_MENU(self, menu_DUPLICATE, self.doDuplicate) + EVT_MENU(self, menu_EDIT_TEXT, self.doEditText) + EVT_MENU(self, menu_DELETE, self.doDelete) - EVT_MENU(self, menu_SELECT, self.doChooseSelectTool) - EVT_MENU(self, menu_LINE, self.doChooseLineTool) - EVT_MENU(self, menu_RECT, self.doChooseRectTool) - EVT_MENU(self, menu_ELLIPSE, self.doChooseEllipseTool) - EVT_MENU(self, menu_TEXT, self.doChooseTextTool) + EVT_MENU(self, menu_SELECT, self.doChooseSelectTool) + EVT_MENU(self, menu_LINE, self.doChooseLineTool) + EVT_MENU(self, menu_RECT, self.doChooseRectTool) + EVT_MENU(self, menu_ELLIPSE, self.doChooseEllipseTool) + EVT_MENU(self, menu_TEXT, self.doChooseTextTool) - EVT_MENU(self, menu_MOVE_FORWARD, self.doMoveForward) - EVT_MENU(self, menu_MOVE_TO_FRONT, self.doMoveToFront) - EVT_MENU(self, menu_MOVE_BACKWARD, self.doMoveBackward) - EVT_MENU(self, menu_MOVE_TO_BACK, self.doMoveToBack) + EVT_MENU(self, menu_MOVE_FORWARD, self.doMoveForward) + EVT_MENU(self, menu_MOVE_TO_FRONT, self.doMoveToFront) + EVT_MENU(self, menu_MOVE_BACKWARD, self.doMoveBackward) + EVT_MENU(self, menu_MOVE_TO_BACK, self.doMoveToBack) - EVT_MENU(self, menu_ABOUT, self.doShowAbout) + EVT_MENU(self, menu_ABOUT, self.doShowAbout) - # Install our own method to handle closing the window. This allows us - # to ask the user if he/she wants to save before closing the window, as - # well as keeping track of which windows are currently open. + # Install our own method to handle closing the window. This allows us + # to ask the user if he/she wants to save before closing the window, as + # well as keeping track of which windows are currently open. - EVT_CLOSE(self, self.doClose) + EVT_CLOSE(self, self.doClose) - # Install our own method for handling keystrokes. We use this to let - # the user move the selected object(s) around using the arrow keys. + # Install our own method for handling keystrokes. We use this to let + # the user move the selected object(s) around using the arrow keys. - EVT_CHAR_HOOK(self, self.onKeyEvent) + EVT_CHAR_HOOK(self, self.onKeyEvent) - # Setup our top-most panel. This holds the entire contents of the - # window, excluding the menu bar. + # Setup our top-most panel. This holds the entire contents of the + # window, excluding the menu bar. - self.topPanel = wxPanel(self, -1, style=wxSIMPLE_BORDER) + self.topPanel = wxPanel(self, -1, style=wxSIMPLE_BORDER) - # Setup our tool palette, with all our drawing tools and option icons. + # Setup our tool palette, with all our drawing tools and option icons. - self.toolPalette = wxBoxSizer(wxVERTICAL) + self.toolPalette = wxBoxSizer(wxVERTICAL) - self.selectIcon = ToolPaletteIcon(self.topPanel, id_SELECT, - "select", "Selection Tool") - self.lineIcon = ToolPaletteIcon(self.topPanel, id_LINE, - "line", "Line Tool") - self.rectIcon = ToolPaletteIcon(self.topPanel, id_RECT, - "rect", "Rectangle Tool") - self.ellipseIcon = ToolPaletteIcon(self.topPanel, id_ELLIPSE, - "ellipse", "Ellipse Tool") - self.textIcon = ToolPaletteIcon(self.topPanel, id_TEXT, - "text", "Text Tool") + self.selectIcon = ToolPaletteIcon(self.topPanel, id_SELECT, + "select", "Selection Tool") + self.lineIcon = ToolPaletteIcon(self.topPanel, id_LINE, + "line", "Line Tool") + self.rectIcon = ToolPaletteIcon(self.topPanel, id_RECT, + "rect", "Rectangle Tool") + self.ellipseIcon = ToolPaletteIcon(self.topPanel, id_ELLIPSE, + "ellipse", "Ellipse Tool") + self.textIcon = ToolPaletteIcon(self.topPanel, id_TEXT, + "text", "Text Tool") - toolSizer = wxGridSizer(0, 2, 5, 5) - toolSizer.Add(self.selectIcon) - toolSizer.Add(0, 0) # Gap to make tool icons line up nicely. - toolSizer.Add(self.lineIcon) - toolSizer.Add(self.rectIcon) - toolSizer.Add(self.ellipseIcon) - toolSizer.Add(self.textIcon) + toolSizer = wxGridSizer(0, 2, 5, 5) + toolSizer.Add(self.selectIcon) + toolSizer.Add(0, 0) # Gap to make tool icons line up nicely. + toolSizer.Add(self.lineIcon) + toolSizer.Add(self.rectIcon) + toolSizer.Add(self.ellipseIcon) + toolSizer.Add(self.textIcon) - self.optionIndicator = ToolOptionIndicator(self.topPanel) - self.optionIndicator.SetToolTip( - wxToolTip("Shows Current Pen/Fill/Line Size Settings")) + self.optionIndicator = ToolOptionIndicator(self.topPanel) + self.optionIndicator.SetToolTip( + wxToolTip("Shows Current Pen/Fill/Line Size Settings")) - optionSizer = wxBoxSizer(wxHORIZONTAL) + optionSizer = wxBoxSizer(wxHORIZONTAL) - self.penOptIcon = ToolPaletteIcon(self.topPanel, id_PEN_OPT, - "penOpt", "Set Pen Colour") - self.fillOptIcon = ToolPaletteIcon(self.topPanel, id_FILL_OPT, - "fillOpt", "Set Fill Colour") - self.lineOptIcon = ToolPaletteIcon(self.topPanel, id_LINE_OPT, - "lineOpt", "Set Line Size") + self.penOptIcon = ToolPaletteIcon(self.topPanel, id_PEN_OPT, + "penOpt", "Set Pen Colour") + self.fillOptIcon = ToolPaletteIcon(self.topPanel, id_FILL_OPT, + "fillOpt", "Set Fill Colour") + self.lineOptIcon = ToolPaletteIcon(self.topPanel, id_LINE_OPT, + "lineOpt", "Set Line Size") - margin = wxLEFT | wxRIGHT - optionSizer.Add(self.penOptIcon, 0, margin, 1) - optionSizer.Add(self.fillOptIcon, 0, margin, 1) - optionSizer.Add(self.lineOptIcon, 0, margin, 1) + margin = wxLEFT | wxRIGHT + optionSizer.Add(self.penOptIcon, 0, margin, 1) + optionSizer.Add(self.fillOptIcon, 0, margin, 1) + optionSizer.Add(self.lineOptIcon, 0, margin, 1) - margin = wxTOP | wxLEFT | wxRIGHT | wxALIGN_CENTRE - self.toolPalette.Add(toolSizer, 0, margin, 5) - self.toolPalette.Add(0, 0, 0, margin, 5) # Spacer. - self.toolPalette.Add(self.optionIndicator, 0, margin, 5) - self.toolPalette.Add(optionSizer, 0, margin, 5) + margin = wxTOP | wxLEFT | wxRIGHT | wxALIGN_CENTRE + self.toolPalette.Add(toolSizer, 0, margin, 5) + self.toolPalette.Add(0, 0, 0, margin, 5) # Spacer. + self.toolPalette.Add(self.optionIndicator, 0, margin, 5) + self.toolPalette.Add(optionSizer, 0, margin, 5) - # Make the tool palette icons respond when the user clicks on them. + # Make the tool palette icons respond when the user clicks on them. - EVT_LEFT_DOWN(self.selectIcon, self.onToolIconClick) - EVT_LEFT_DOWN(self.lineIcon, self.onToolIconClick) - EVT_LEFT_DOWN(self.rectIcon, self.onToolIconClick) - EVT_LEFT_DOWN(self.ellipseIcon, self.onToolIconClick) - EVT_LEFT_DOWN(self.textIcon, self.onToolIconClick) - EVT_LEFT_DOWN(self.penOptIcon, self.onPenOptionIconClick) - EVT_LEFT_DOWN(self.fillOptIcon, self.onFillOptionIconClick) - EVT_LEFT_DOWN(self.lineOptIcon, self.onLineOptionIconClick) + EVT_LEFT_DOWN(self.selectIcon, self.onToolIconClick) + EVT_LEFT_DOWN(self.lineIcon, self.onToolIconClick) + EVT_LEFT_DOWN(self.rectIcon, self.onToolIconClick) + EVT_LEFT_DOWN(self.ellipseIcon, self.onToolIconClick) + EVT_LEFT_DOWN(self.textIcon, self.onToolIconClick) + EVT_LEFT_DOWN(self.penOptIcon, self.onPenOptionIconClick) + EVT_LEFT_DOWN(self.fillOptIcon, self.onFillOptionIconClick) + EVT_LEFT_DOWN(self.lineOptIcon, self.onLineOptionIconClick) - # Setup the main drawing area. + # Setup the main drawing area. - self.drawPanel = wxScrolledWindow(self.topPanel, -1, - style=wxSUNKEN_BORDER) - self.drawPanel.SetBackgroundColour(wxWHITE) + self.drawPanel = wxScrolledWindow(self.topPanel, -1, + style=wxSUNKEN_BORDER) + self.drawPanel.SetBackgroundColour(wxWHITE) - self.drawPanel.EnableScrolling(true, true) - self.drawPanel.SetScrollbars(20, 20, PAGE_WIDTH / 20, PAGE_HEIGHT / 20) + self.drawPanel.EnableScrolling(True, True) + self.drawPanel.SetScrollbars(20, 20, PAGE_WIDTH / 20, PAGE_HEIGHT / 20) - EVT_LEFT_DOWN(self.drawPanel, self.onMouseEvent) - EVT_LEFT_DCLICK(self.drawPanel, self.onDoubleClickEvent) - EVT_RIGHT_DOWN(self.drawPanel, self.onRightClick) - EVT_MOTION(self.drawPanel, self.onMouseEvent) - EVT_LEFT_UP(self.drawPanel, self.onMouseEvent) - EVT_PAINT(self.drawPanel, self.onPaintEvent) + EVT_LEFT_DOWN(self.drawPanel, self.onMouseEvent) + EVT_LEFT_DCLICK(self.drawPanel, self.onDoubleClickEvent) + EVT_RIGHT_DOWN(self.drawPanel, self.onRightClick) + EVT_MOTION(self.drawPanel, self.onMouseEvent) + EVT_LEFT_UP(self.drawPanel, self.onMouseEvent) + EVT_PAINT(self.drawPanel, self.onPaintEvent) - # Position everything in the window. + # Position everything in the window. - topSizer = wxBoxSizer(wxHORIZONTAL) - topSizer.Add(self.toolPalette, 0) - topSizer.Add(self.drawPanel, 1, wxEXPAND) + topSizer = wxBoxSizer(wxHORIZONTAL) + topSizer.Add(self.toolPalette, 0) + topSizer.Add(self.drawPanel, 1, wxEXPAND) - self.topPanel.SetAutoLayout(true) - self.topPanel.SetSizer(topSizer) + self.topPanel.SetAutoLayout(True) + self.topPanel.SetSizer(topSizer) - self.SetSizeHints(minW=250, minH=200) - self.SetSize(wxSize(600, 400)) + self.SetSizeHints(minW=250, minH=200) + self.SetSize(wxSize(600, 400)) - # Select an initial tool. + # Select an initial tool. - self.curTool = None - self._setCurrentTool(self.selectIcon) + self.curTool = None + self._setCurrentTool(self.selectIcon) - # Setup our frame to hold the contents of a sketch document. + # Setup our frame to hold the contents of a sketch document. - self.dirty = false - self.fileName = fileName - self.contents = [] # front-to-back ordered list of DrawingObjects. - self.selection = [] # List of selected DrawingObjects. - self.undoInfo = None # Saved contents for undo. - self.dragMode = drag_NONE # Current mouse-drag mode. + self.dirty = False + self.fileName = fileName + self.contents = [] # front-to-back ordered list of DrawingObjects. + self.selection = [] # List of selected DrawingObjects. + self.undoInfo = None # Saved contents for undo. + self.dragMode = drag_NONE # Current mouse-drag mode. - if self.fileName != None: - self.loadContents() + if self.fileName != None: + self.loadContents() - self._adjustMenus() + self._adjustMenus() - # Finally, set our initial pen, fill and line options. + # Finally, set our initial pen, fill and line options. - self.penColour = wxBLACK - self.fillColour = wxWHITE - self.lineSize = 1 + self.penColour = wxBLACK + self.fillColour = wxWHITE + self.lineSize = 1 # ============================ # == Event Handling Methods == # ============================ def onToolIconClick(self, event): - """ Respond to the user clicking on one of our tool icons. - """ - iconID = wxPyTypeCast(event.GetEventObject(), "wxWindow").GetId() - if iconID == id_SELECT: self.doChooseSelectTool() - elif iconID == id_LINE: self.doChooseLineTool() - elif iconID == id_RECT: self.doChooseRectTool() - elif iconID == id_ELLIPSE: self.doChooseEllipseTool() - elif iconID == id_TEXT: self.doChooseTextTool() - else: wxBell() + """ Respond to the user clicking on one of our tool icons. + """ + iconID = wxPyTypeCast(event.GetEventObject(), "wxWindow").GetId() + if iconID == id_SELECT: self.doChooseSelectTool() + elif iconID == id_LINE: self.doChooseLineTool() + elif iconID == id_RECT: self.doChooseRectTool() + elif iconID == id_ELLIPSE: self.doChooseEllipseTool() + elif iconID == id_TEXT: self.doChooseTextTool() + else: wxBell() def onPenOptionIconClick(self, event): - """ Respond to the user clicking on the "Pen Options" icon. - """ - data = wxColourData() - if len(self.selection) == 1: - data.SetColour(self.selection[0].getPenColour()) - else: - data.SetColour(self.penColour) + """ Respond to the user clicking on the "Pen Options" icon. + """ + data = wxColourData() + if len(self.selection) == 1: + data.SetColour(self.selection[0].getPenColour()) + else: + data.SetColour(self.penColour) - dialog = wxColourDialog(self, data) - if dialog.ShowModal() == wxID_OK: - c = dialog.GetColourData().GetColour() - self._setPenColour(wxColour(c.Red(), c.Green(), c.Blue())) + dialog = wxColourDialog(self, data) + if dialog.ShowModal() == wxID_OK: + c = dialog.GetColourData().GetColour() + self._setPenColour(wxColour(c.Red(), c.Green(), c.Blue())) dialog.Destroy() def onFillOptionIconClick(self, event): - """ Respond to the user clicking on the "Fill Options" icon. - """ - data = wxColourData() - if len(self.selection) == 1: - data.SetColour(self.selection[0].getFillColour()) - else: - data.SetColour(self.fillColour) + """ Respond to the user clicking on the "Fill Options" icon. + """ + data = wxColourData() + if len(self.selection) == 1: + data.SetColour(self.selection[0].getFillColour()) + else: + data.SetColour(self.fillColour) - dialog = wxColourDialog(self, data) - if dialog.ShowModal() == wxID_OK: - c = dialog.GetColourData().GetColour() - self._setFillColour(wxColour(c.Red(), c.Green(), c.Blue())) + dialog = wxColourDialog(self, data) + if dialog.ShowModal() == wxID_OK: + c = dialog.GetColourData().GetColour() + self._setFillColour(wxColour(c.Red(), c.Green(), c.Blue())) dialog.Destroy() def onLineOptionIconClick(self, event): - """ Respond to the user clicking on the "Line Options" icon. - """ - if len(self.selection) == 1: - menu = self._buildLineSizePopup(self.selection[0].getLineSize()) - else: - menu = self._buildLineSizePopup(self.lineSize) + """ Respond to the user clicking on the "Line Options" icon. + """ + if len(self.selection) == 1: + menu = self._buildLineSizePopup(self.selection[0].getLineSize()) + else: + menu = self._buildLineSizePopup(self.lineSize) - pos = self.lineOptIcon.GetPosition() - pos.y = pos.y + self.lineOptIcon.GetSize().height + pos = self.lineOptIcon.GetPosition() + pos.y = pos.y + self.lineOptIcon.GetSize().height self.PopupMenu(menu, pos) menu.Destroy() def onKeyEvent(self, event): - """ Respond to a keypress event. + """ Respond to a keypress event. - We make the arrow keys move the selected object(s) by one pixel in - the given direction. - """ - if event.GetKeyCode() == WXK_UP: - self._moveObject(0, -1) - elif event.GetKeyCode() == WXK_DOWN: - self._moveObject(0, 1) - elif event.GetKeyCode() == WXK_LEFT: - self._moveObject(-1, 0) - elif event.GetKeyCode() == WXK_RIGHT: - self._moveObject(1, 0) - else: - event.Skip() + We make the arrow keys move the selected object(s) by one pixel in + the given direction. + """ + if event.GetKeyCode() == WXK_UP: + self._moveObject(0, -1) + elif event.GetKeyCode() == WXK_DOWN: + self._moveObject(0, 1) + elif event.GetKeyCode() == WXK_LEFT: + self._moveObject(-1, 0) + elif event.GetKeyCode() == WXK_RIGHT: + self._moveObject(1, 0) + else: + event.Skip() def onMouseEvent(self, event): - """ Respond to the user clicking on our main drawing panel. + """ Respond to the user clicking on our main drawing panel. - How we respond depends on the currently selected tool. - """ - if not (event.LeftDown() or event.Dragging() or event.LeftUp()): - return # Ignore mouse movement without click/drag. + How we respond depends on the currently selected tool. + """ + if not (event.LeftDown() or event.Dragging() or event.LeftUp()): + return # Ignore mouse movement without click/drag. - if self.curTool == self.selectIcon: - feedbackType = feedback_RECT - action = self.selectByRectangle - actionParam = param_RECT - selecting = true - dashedLine = true - elif self.curTool == self.lineIcon: - feedbackType = feedback_LINE - action = self.createLine - actionParam = param_LINE - selecting = false - dashedLine = false - elif self.curTool == self.rectIcon: - feedbackType = feedback_RECT - action = self.createRect - actionParam = param_RECT - selecting = false - dashedLine = false - elif self.curTool == self.ellipseIcon: - feedbackType = feedback_ELLIPSE - action = self.createEllipse - actionParam = param_RECT - selecting = false - dashedLine = false - elif self.curTool == self.textIcon: - feedbackType = feedback_RECT - action = self.createText - actionParam = param_RECT - selecting = false - dashedLine = true - else: - wxBell() - return + if self.curTool == self.selectIcon: + feedbackType = feedback_RECT + action = self.selectByRectangle + actionParam = param_RECT + selecting = True + dashedLine = True + elif self.curTool == self.lineIcon: + feedbackType = feedback_LINE + action = self.createLine + actionParam = param_LINE + selecting = False + dashedLine = False + elif self.curTool == self.rectIcon: + feedbackType = feedback_RECT + action = self.createRect + actionParam = param_RECT + selecting = False + dashedLine = False + elif self.curTool == self.ellipseIcon: + feedbackType = feedback_ELLIPSE + action = self.createEllipse + actionParam = param_RECT + selecting = False + dashedLine = False + elif self.curTool == self.textIcon: + feedbackType = feedback_RECT + action = self.createText + actionParam = param_RECT + selecting = False + dashedLine = True + else: + wxBell() + return - if event.LeftDown(): - mousePt = self._getEventCoordinates(event) - if selecting: - obj, handle = self._getObjectAndSelectionHandleAt(mousePt) + if event.LeftDown(): + mousePt = self._getEventCoordinates(event) + if selecting: + obj, handle = self._getObjectAndSelectionHandleAt(mousePt) - if selecting and (obj != None) and (handle != handle_NONE): + if selecting and (obj != None) and (handle != handle_NONE): - # The user clicked on an object's selection handle. Let the - # user resize the clicked-on object. + # The user clicked on an object's selection handle. Let the + # user resize the clicked-on object. - self.dragMode = drag_RESIZE - self.resizeObject = obj + self.dragMode = drag_RESIZE + self.resizeObject = obj - if obj.getType() == obj_LINE: - self.resizeFeedback = feedback_LINE - pos = obj.getPosition() - startPt = wxPoint(pos.x + obj.getStartPt().x, - pos.y + obj.getStartPt().y) - endPt = wxPoint(pos.x + obj.getEndPt().x, - pos.y + obj.getEndPt().y) - if handle == handle_START_POINT: - self.resizeAnchor = endPt - self.resizeFloater = startPt - else: - self.resizeAnchor = startPt - self.resizeFloater = endPt - else: - self.resizeFeedback = feedback_RECT - pos = obj.getPosition() - size = obj.getSize() - topLeft = wxPoint(pos.x, pos.y) - topRight = wxPoint(pos.x + size.width, pos.y) - botLeft = wxPoint(pos.x, pos.y + size.height) - botRight = wxPoint(pos.x + size.width, pos.y + size.height) + if obj.getType() == obj_LINE: + self.resizeFeedback = feedback_LINE + pos = obj.getPosition() + startPt = wxPoint(pos.x + obj.getStartPt().x, + pos.y + obj.getStartPt().y) + endPt = wxPoint(pos.x + obj.getEndPt().x, + pos.y + obj.getEndPt().y) + if handle == handle_START_POINT: + self.resizeAnchor = endPt + self.resizeFloater = startPt + else: + self.resizeAnchor = startPt + self.resizeFloater = endPt + else: + self.resizeFeedback = feedback_RECT + pos = obj.getPosition() + size = obj.getSize() + topLeft = wxPoint(pos.x, pos.y) + topRight = wxPoint(pos.x + size.width, pos.y) + botLeft = wxPoint(pos.x, pos.y + size.height) + botRight = wxPoint(pos.x + size.width, pos.y + size.height) - if handle == handle_TOP_LEFT: - self.resizeAnchor = botRight - self.resizeFloater = topLeft - elif handle == handle_TOP_RIGHT: - self.resizeAnchor = botLeft - self.resizeFloater = topRight - elif handle == handle_BOTTOM_LEFT: - self.resizeAnchor = topRight - self.resizeFloater = botLeft - elif handle == handle_BOTTOM_RIGHT: - self.resizeAnchor = topLeft - self.resizeFloater = botRight + if handle == handle_TOP_LEFT: + self.resizeAnchor = botRight + self.resizeFloater = topLeft + elif handle == handle_TOP_RIGHT: + self.resizeAnchor = botLeft + self.resizeFloater = topRight + elif handle == handle_BOTTOM_LEFT: + self.resizeAnchor = topRight + self.resizeFloater = botLeft + elif handle == handle_BOTTOM_RIGHT: + self.resizeAnchor = topLeft + self.resizeFloater = botRight - self.curPt = mousePt - self.resizeOffsetX = self.resizeFloater.x - mousePt.x - self.resizeOffsetY = self.resizeFloater.y - mousePt.y - endPt = wxPoint(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, false) + self.curPt = mousePt + self.resizeOffsetX = self.resizeFloater.x - mousePt.x + self.resizeOffsetY = self.resizeFloater.y - mousePt.y + endPt = wxPoint(self.curPt.x + self.resizeOffsetX, + self.curPt.y + self.resizeOffsetY) + self._drawVisualFeedback(self.resizeAnchor, endPt, + self.resizeFeedback, False) - elif selecting and (self._getObjectAt(mousePt) != None): + elif selecting and (self._getObjectAt(mousePt) != None): - # The user clicked on an object to select it. If the user - # drags, he/she will move the object. + # The user clicked on an object to select it. If the user + # drags, he/she will move the object. - self.select(self._getObjectAt(mousePt)) - self.dragMode = drag_MOVE - self.moveOrigin = mousePt - self.curPt = mousePt - self._drawObjectOutline(0, 0) + self.select(self._getObjectAt(mousePt)) + self.dragMode = drag_MOVE + self.moveOrigin = mousePt + self.curPt = mousePt + self._drawObjectOutline(0, 0) - else: + else: - # The user is dragging out a selection rect or new object. + # The user is dragging out a selection rect or new object. - self.dragOrigin = mousePt - self.curPt = mousePt - self.drawPanel.SetCursor(wxCROSS_CURSOR) - self.drawPanel.CaptureMouse() - self._drawVisualFeedback(mousePt, mousePt, feedbackType, - dashedLine) - self.dragMode = drag_DRAG + self.dragOrigin = mousePt + self.curPt = mousePt + self.drawPanel.SetCursor(wxCROSS_CURSOR) + self.drawPanel.CaptureMouse() + self._drawVisualFeedback(mousePt, mousePt, feedbackType, + dashedLine) + self.dragMode = drag_DRAG - event.Skip() - return + event.Skip() + return - if event.Dragging(): - if self.dragMode == drag_RESIZE: + if event.Dragging(): + if self.dragMode == drag_RESIZE: - # We're resizing an object. + # We're resizing an object. - mousePt = self._getEventCoordinates(event) - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - endPt = wxPoint(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, false) - self.curPt = mousePt - # Draw new visual feedback. - endPt = wxPoint(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, false) + mousePt = self._getEventCoordinates(event) + if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): + # Erase previous visual feedback. + endPt = wxPoint(self.curPt.x + self.resizeOffsetX, + self.curPt.y + self.resizeOffsetY) + self._drawVisualFeedback(self.resizeAnchor, endPt, + self.resizeFeedback, False) + self.curPt = mousePt + # Draw new visual feedback. + endPt = wxPoint(self.curPt.x + self.resizeOffsetX, + self.curPt.y + self.resizeOffsetY) + self._drawVisualFeedback(self.resizeAnchor, endPt, + self.resizeFeedback, False) - elif self.dragMode == drag_MOVE: + elif self.dragMode == drag_MOVE: - # We're moving a selected object. + # We're moving a selected object. - mousePt = self._getEventCoordinates(event) - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, - self.curPt.y - self.moveOrigin.y) - self.curPt = mousePt - # Draw new visual feedback. - self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, - self.curPt.y - self.moveOrigin.y) + mousePt = self._getEventCoordinates(event) + if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): + # Erase previous visual feedback. + self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, + self.curPt.y - self.moveOrigin.y) + self.curPt = mousePt + # Draw new visual feedback. + self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, + self.curPt.y - self.moveOrigin.y) - elif self.dragMode == drag_DRAG: + elif self.dragMode == drag_DRAG: - # We're dragging out a new object or selection rect. + # We're dragging out a new object or selection rect. - mousePt = self._getEventCoordinates(event) - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - self.curPt = mousePt - # Draw new visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) + mousePt = self._getEventCoordinates(event) + if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): + # Erase previous visual feedback. + self._drawVisualFeedback(self.dragOrigin, self.curPt, + feedbackType, dashedLine) + self.curPt = mousePt + # Draw new visual feedback. + self._drawVisualFeedback(self.dragOrigin, self.curPt, + feedbackType, dashedLine) - event.Skip() - return + event.Skip() + return - if event.LeftUp(): - if self.dragMode == drag_RESIZE: + if event.LeftUp(): + if self.dragMode == drag_RESIZE: - # We're resizing an object. + # We're resizing an object. - mousePt = self._getEventCoordinates(event) - # Erase last visual feedback. - endPt = wxPoint(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, false) + mousePt = self._getEventCoordinates(event) + # Erase last visual feedback. + endPt = wxPoint(self.curPt.x + self.resizeOffsetX, + self.curPt.y + self.resizeOffsetY) + self._drawVisualFeedback(self.resizeAnchor, endPt, + self.resizeFeedback, False) - resizePt = wxPoint(mousePt.x + self.resizeOffsetX, - mousePt.y + self.resizeOffsetY) + resizePt = wxPoint(mousePt.x + self.resizeOffsetX, + mousePt.y + self.resizeOffsetY) - if (self.resizeFloater.x != resizePt.x) or \ - (self.resizeFloater.y != resizePt.y): - self._resizeObject(self.resizeObject, - self.resizeAnchor, - self.resizeFloater, - resizePt) - else: - self.drawPanel.Refresh() # Clean up after empty resize. + if (self.resizeFloater.x != resizePt.x) or \ + (self.resizeFloater.y != resizePt.y): + self._resizeObject(self.resizeObject, + self.resizeAnchor, + self.resizeFloater, + resizePt) + else: + self.drawPanel.Refresh() # Clean up after empty resize. - elif self.dragMode == drag_MOVE: + elif self.dragMode == drag_MOVE: - # We're moving a selected object. + # We're moving a selected object. - mousePt = self._getEventCoordinates(event) - # Erase last visual feedback. - self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, - self.curPt.y - self.moveOrigin.y) - if (self.moveOrigin.x != mousePt.x) or \ - (self.moveOrigin.y != mousePt.y): - self._moveObject(mousePt.x - self.moveOrigin.x, - mousePt.y - self.moveOrigin.y) - else: - self.drawPanel.Refresh() # Clean up after empty drag. + mousePt = self._getEventCoordinates(event) + # Erase last visual feedback. + self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, + self.curPt.y - self.moveOrigin.y) + if (self.moveOrigin.x != mousePt.x) or \ + (self.moveOrigin.y != mousePt.y): + self._moveObject(mousePt.x - self.moveOrigin.x, + mousePt.y - self.moveOrigin.y) + else: + self.drawPanel.Refresh() # Clean up after empty drag. - elif self.dragMode == drag_DRAG: + elif self.dragMode == drag_DRAG: - # We're dragging out a new object or selection rect. + # We're dragging out a new object or selection rect. - mousePt = self._getEventCoordinates(event) - # Erase last visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - self.drawPanel.ReleaseMouse() - self.drawPanel.SetCursor(wxSTANDARD_CURSOR) - # Perform the appropriate action for the current tool. - if actionParam == param_RECT: - x1 = min(self.dragOrigin.x, self.curPt.x) - y1 = min(self.dragOrigin.y, self.curPt.y) - x2 = max(self.dragOrigin.x, self.curPt.x) - y2 = max(self.dragOrigin.y, self.curPt.y) + mousePt = self._getEventCoordinates(event) + # Erase last visual feedback. + self._drawVisualFeedback(self.dragOrigin, self.curPt, + feedbackType, dashedLine) + self.drawPanel.ReleaseMouse() + self.drawPanel.SetCursor(wxSTANDARD_CURSOR) + # Perform the appropriate action for the current tool. + if actionParam == param_RECT: + x1 = min(self.dragOrigin.x, self.curPt.x) + y1 = min(self.dragOrigin.y, self.curPt.y) + x2 = max(self.dragOrigin.x, self.curPt.x) + y2 = max(self.dragOrigin.y, self.curPt.y) - startX = x1 - startY = y1 - width = x2 - x1 - height = y2 - y1 + startX = x1 + startY = y1 + width = x2 - x1 + height = y2 - y1 - if not selecting: - if ((x2-x1) < 8) or ((y2-y1) < 8): return # Too small. + if not selecting: + if ((x2-x1) < 8) or ((y2-y1) < 8): return # Too small. - action(x1, y1, x2-x1, y2-y1) - elif actionParam == param_LINE: - action(self.dragOrigin.x, self.dragOrigin.y, - self.curPt.x, self.curPt.y) + action(x1, y1, x2-x1, y2-y1) + elif actionParam == param_LINE: + action(self.dragOrigin.x, self.dragOrigin.y, + self.curPt.x, self.curPt.y) - self.dragMode = drag_NONE # We've finished with this mouse event. - event.Skip() + self.dragMode = drag_NONE # We've finished with this mouse event. + event.Skip() def onDoubleClickEvent(self, event): - """ Respond to a double-click within our drawing panel. - """ - mousePt = self._getEventCoordinates(event) - obj = self._getObjectAt(mousePt) - if obj == None: return + """ Respond to a double-click within our drawing panel. + """ + mousePt = self._getEventCoordinates(event) + obj = self._getObjectAt(mousePt) + if obj == None: return - # Let the user edit the given object. + # Let the user edit the given object. - if obj.getType() == obj_TEXT: - editor = EditTextObjectDialog(self, "Edit Text Object") - editor.objectToDialog(obj) - if editor.ShowModal() == wxID_CANCEL: - editor.Destroy() - return + if obj.getType() == obj_TEXT: + editor = EditTextObjectDialog(self, "Edit Text Object") + editor.objectToDialog(obj) + if editor.ShowModal() == wxID_CANCEL: + editor.Destroy() + return - self._saveUndoInfo() + self._saveUndoInfo() - editor.dialogToObject(obj) - editor.Destroy() + editor.dialogToObject(obj) + editor.Destroy() - self.dirty = true - self.drawPanel.Refresh() - self._adjustMenus() - else: - wxBell() + self.dirty = True + self.drawPanel.Refresh() + self._adjustMenus() + else: + wxBell() def onRightClick(self, event): - """ Respond to the user right-clicking within our drawing panel. + """ Respond to the user right-clicking within our drawing panel. - We select the clicked-on item, if necessary, and display a pop-up - menu of available options which can be applied to the selected - item(s). - """ - mousePt = self._getEventCoordinates(event) - obj = self._getObjectAt(mousePt) + We select the clicked-on item, if necessary, and display a pop-up + menu of available options which can be applied to the selected + item(s). + """ + mousePt = self._getEventCoordinates(event) + obj = self._getObjectAt(mousePt) - if obj == None: return # Nothing selected. + if obj == None: return # Nothing selected. - # Select the clicked-on object. + # Select the clicked-on object. - self.select(obj) + self.select(obj) - # Build our pop-up menu. + # Build our pop-up menu. - menu = wxMenu() - menu.Append(menu_DUPLICATE, "Duplicate") - menu.Append(menu_EDIT_TEXT, "Edit...") - menu.Append(menu_DELETE, "Delete") - menu.AppendSeparator() - menu.Append(menu_MOVE_FORWARD, "Move Forward") - menu.Append(menu_MOVE_TO_FRONT, "Move to Front") - menu.Append(menu_MOVE_BACKWARD, "Move Backward") - menu.Append(menu_MOVE_TO_BACK, "Move to Back") + menu = wxMenu() + menu.Append(menu_DUPLICATE, "Duplicate") + menu.Append(menu_EDIT_TEXT, "Edit...") + menu.Append(menu_DELETE, "Delete") + menu.AppendSeparator() + menu.Append(menu_MOVE_FORWARD, "Move Forward") + menu.Append(menu_MOVE_TO_FRONT, "Move to Front") + menu.Append(menu_MOVE_BACKWARD, "Move Backward") + menu.Append(menu_MOVE_TO_BACK, "Move to Back") - menu.Enable(menu_EDIT_TEXT, obj.getType() == obj_TEXT) - menu.Enable(menu_MOVE_FORWARD, obj != self.contents[0]) - menu.Enable(menu_MOVE_TO_FRONT, obj != self.contents[0]) - menu.Enable(menu_MOVE_BACKWARD, obj != self.contents[-1]) - menu.Enable(menu_MOVE_TO_BACK, obj != self.contents[-1]) + menu.Enable(menu_EDIT_TEXT, obj.getType() == obj_TEXT) + menu.Enable(menu_MOVE_FORWARD, obj != self.contents[0]) + menu.Enable(menu_MOVE_TO_FRONT, obj != self.contents[0]) + menu.Enable(menu_MOVE_BACKWARD, obj != self.contents[-1]) + menu.Enable(menu_MOVE_TO_BACK, obj != self.contents[-1]) - EVT_MENU(self, menu_DUPLICATE, self.doDuplicate) - EVT_MENU(self, menu_EDIT_TEXT, self.doEditText) - EVT_MENU(self, menu_DELETE, self.doDelete) - EVT_MENU(self, menu_MOVE_FORWARD, self.doMoveForward) - EVT_MENU(self, menu_MOVE_TO_FRONT, self.doMoveToFront) - EVT_MENU(self, menu_MOVE_BACKWARD, self.doMoveBackward) - EVT_MENU(self, menu_MOVE_TO_BACK, self.doMoveToBack) + EVT_MENU(self, menu_DUPLICATE, self.doDuplicate) + EVT_MENU(self, menu_EDIT_TEXT, self.doEditText) + EVT_MENU(self, menu_DELETE, self.doDelete) + EVT_MENU(self, menu_MOVE_FORWARD, self.doMoveForward) + EVT_MENU(self, menu_MOVE_TO_FRONT, self.doMoveToFront) + EVT_MENU(self, menu_MOVE_BACKWARD, self.doMoveBackward) + EVT_MENU(self, menu_MOVE_TO_BACK, self.doMoveToBack) - # Show the pop-up menu. + # Show the pop-up menu. - clickPt = wxPoint(mousePt.x + self.drawPanel.GetPosition().x, - mousePt.y + self.drawPanel.GetPosition().y) - self.drawPanel.PopupMenu(menu, clickPt) - menu.Destroy() + clickPt = wxPoint(mousePt.x + self.drawPanel.GetPosition().x, + mousePt.y + self.drawPanel.GetPosition().y) + self.drawPanel.PopupMenu(menu, clickPt) + menu.Destroy() def onPaintEvent(self, event): - """ Respond to a request to redraw the contents of our drawing panel. - """ - dc = wxPaintDC(self.drawPanel) - self.drawPanel.PrepareDC(dc) - dc.BeginDrawing() + """ Respond to a request to redraw the contents of our drawing panel. + """ + dc = wxPaintDC(self.drawPanel) + self.drawPanel.PrepareDC(dc) + dc.BeginDrawing() - for i in range(len(self.contents)-1, -1, -1): - obj = self.contents[i] - if obj in self.selection: - obj.draw(dc, true) - else: - obj.draw(dc, false) + for i in range(len(self.contents)-1, -1, -1): + obj = self.contents[i] + if obj in self.selection: + obj.draw(dc, True) + else: + obj.draw(dc, False) - dc.EndDrawing() + dc.EndDrawing() # ========================== # == Menu Command Methods == # ========================== def doNew(self, event): - """ Respond to the "New" menu command. - """ - global _docList - newFrame = DrawingFrame(None, -1, "Untitled") - newFrame.Show(TRUE) - _docList.append(newFrame) + """ Respond to the "New" menu command. + """ + global _docList + newFrame = DrawingFrame(None, -1, "Untitled") + newFrame.Show(True) + _docList.append(newFrame) def doOpen(self, event): - """ Respond to the "Open" menu command. - """ - global _docList + """ Respond to the "Open" menu command. + """ + global _docList - curDir = os.getcwd() - fileName = wxFileSelector("Open File", default_extension="psk", - flags = wxOPEN | wxFILE_MUST_EXIST) - if fileName == "": return - fileName = os.path.join(os.getcwd(), fileName) - os.chdir(curDir) + curDir = os.getcwd() + fileName = wxFileSelector("Open File", default_extension="psk", + flags = wxOPEN | wxFILE_MUST_EXIST) + if fileName == "": return + fileName = os.path.join(os.getcwd(), fileName) + os.chdir(curDir) - title = os.path.basename(fileName) + title = os.path.basename(fileName) - if (self.fileName == None) and (len(self.contents) == 0): - # Load contents into current (empty) document. - self.fileName = fileName - self.SetTitle(os.path.basename(fileName)) - self.loadContents() - else: - # Open a new frame for this document. - newFrame = DrawingFrame(None, -1, os.path.basename(fileName), - fileName=fileName) - newFrame.Show(true) - _docList.append(newFrame) + if (self.fileName == None) and (len(self.contents) == 0): + # Load contents into current (empty) document. + self.fileName = fileName + self.SetTitle(os.path.basename(fileName)) + self.loadContents() + else: + # Open a new frame for this document. + newFrame = DrawingFrame(None, -1, os.path.basename(fileName), + fileName=fileName) + newFrame.Show(True) + _docList.append(newFrame) def doClose(self, event): - """ Respond to the "Close" menu command. - """ - global _docList + """ Respond to the "Close" menu command. + """ + global _docList - if self.dirty: - if not self.askIfUserWantsToSave("closing"): return + if self.dirty: + if not self.askIfUserWantsToSave("closing"): return - _docList.remove(self) - self.Destroy() + _docList.remove(self) + self.Destroy() def doSave(self, event): - """ Respond to the "Save" menu command. - """ - if self.fileName != None: - self.saveContents() + """ Respond to the "Save" menu command. + """ + if self.fileName != None: + self.saveContents() def doSaveAs(self, event): - """ Respond to the "Save As" menu command. - """ - if self.fileName == None: - default = "" - else: - default = self.fileName + """ Respond to the "Save As" menu command. + """ + if self.fileName == None: + default = "" + else: + default = self.fileName - curDir = os.getcwd() - fileName = wxFileSelector("Save File As", "Saving", - default_filename=default, - default_extension="psk", - wildcard="*.psk", - flags = wxSAVE | wxOVERWRITE_PROMPT) - if fileName == "": return # User cancelled. - fileName = os.path.join(os.getcwd(), fileName) - os.chdir(curDir) + curDir = os.getcwd() + fileName = wxFileSelector("Save File As", "Saving", + default_filename=default, + default_extension="psk", + wildcard="*.psk", + flags = wxSAVE | wxOVERWRITE_PROMPT) + if fileName == "": return # User cancelled. + fileName = os.path.join(os.getcwd(), fileName) + os.chdir(curDir) - title = os.path.basename(fileName) - self.SetTitle(title) + title = os.path.basename(fileName) + self.SetTitle(title) - self.fileName = fileName - self.saveContents() + self.fileName = fileName + self.saveContents() def doRevert(self, event): - """ Respond to the "Revert" menu command. - """ - if not self.dirty: return + """ Respond to the "Revert" menu command. + """ + if not self.dirty: return - if wxMessageBox("Discard changes made to this document?", "Confirm", - style = wxOK | wxCANCEL | wxICON_QUESTION, - parent=self) == wxCANCEL: return - self.loadContents() + if wxMessageBox("Discard changes made to this document?", "Confirm", + style = wxOK | wxCANCEL | wxICON_QUESTION, + parent=self) == wxCANCEL: return + self.loadContents() def doExit(self, event): - """ Respond to the "Quit" menu command. - """ - global _docList, _app - for doc in _docList: - if not doc.dirty: continue - doc.Raise() - if not doc.askIfUserWantsToSave("quitting"): return - _docList.remove(doc) - doc.Destroy() + """ Respond to the "Quit" menu command. + """ + global _docList, _app + for doc in _docList: + if not doc.dirty: continue + doc.Raise() + if not doc.askIfUserWantsToSave("quitting"): return + _docList.remove(doc) + doc.Destroy() - _app.ExitMainLoop() + _app.ExitMainLoop() def doUndo(self, event): - """ Respond to the "Undo" menu command. - """ - if self.undoInfo == None: return + """ Respond to the "Undo" menu command. + """ + if self.undoInfo == None: return - undoData = self.undoInfo - self._saveUndoInfo() # For undoing the undo... + undoData = self.undoInfo + self._saveUndoInfo() # For undoing the undo... - self.contents = [] + self.contents = [] - for type, data in undoData["contents"]: - obj = DrawingObject(type) - obj.setData(data) - self.contents.append(obj) + for type, data in undoData["contents"]: + obj = DrawingObject(type) + obj.setData(data) + self.contents.append(obj) - self.selection = [] - for i in undoData["selection"]: - self.selection.append(self.contents[i]) + self.selection = [] + for i in undoData["selection"]: + self.selection.append(self.contents[i]) - self.dirty = true - self.drawPanel.Refresh() - self._adjustMenus() + self.dirty = True + self.drawPanel.Refresh() + self._adjustMenus() def doSelectAll(self, event): - """ Respond to the "Select All" menu command. - """ - self.selectAll() + """ Respond to the "Select All" menu command. + """ + self.selectAll() def doDuplicate(self, event): - """ Respond to the "Duplicate" menu command. - """ - self._saveUndoInfo() + """ Respond to the "Duplicate" menu command. + """ + self._saveUndoInfo() - objs = [] - for obj in self.contents: - if obj in self.selection: - newObj = DrawingObject(obj.getType()) - newObj.setData(obj.getData()) - pos = obj.getPosition() - newObj.setPosition(wxPoint(pos.x + 10, pos.y + 10)) - objs.append(newObj) + objs = [] + for obj in self.contents: + if obj in self.selection: + newObj = DrawingObject(obj.getType()) + newObj.setData(obj.getData()) + pos = obj.getPosition() + newObj.setPosition(wxPoint(pos.x + 10, pos.y + 10)) + objs.append(newObj) - self.contents = objs + self.contents + self.contents = objs + self.contents - self.selectMany(objs) + self.selectMany(objs) def doEditText(self, event): - """ Respond to the "Edit Text" menu command. - """ - if len(self.selection) != 1: return + """ Respond to the "Edit Text" menu command. + """ + if len(self.selection) != 1: return - obj = self.selection[0] - if obj.getType() != obj_TEXT: return + obj = self.selection[0] + if obj.getType() != obj_TEXT: return - editor = EditTextObjectDialog(self, "Edit Text Object") - editor.objectToDialog(obj) - if editor.ShowModal() == wxID_CANCEL: - editor.Destroy() - return + editor = EditTextObjectDialog(self, "Edit Text Object") + editor.objectToDialog(obj) + if editor.ShowModal() == wxID_CANCEL: + editor.Destroy() + return - self._saveUndoInfo() + self._saveUndoInfo() - editor.dialogToObject(obj) - editor.Destroy() + editor.dialogToObject(obj) + editor.Destroy() - self.dirty = true - self.drawPanel.Refresh() - self._adjustMenus() + self.dirty = True + self.drawPanel.Refresh() + self._adjustMenus() def doDelete(self, event): - """ Respond to the "Delete" menu command. - """ - self._saveUndoInfo() + """ Respond to the "Delete" menu command. + """ + self._saveUndoInfo() - for obj in self.selection: - self.contents.remove(obj) - del obj - self.deselectAll() + for obj in self.selection: + self.contents.remove(obj) + del obj + self.deselectAll() def doChooseSelectTool(self, event=None): - """ Respond to the "Select Tool" menu command. - """ - self._setCurrentTool(self.selectIcon) - self.drawPanel.SetCursor(wxSTANDARD_CURSOR) - self._adjustMenus() + """ Respond to the "Select Tool" menu command. + """ + self._setCurrentTool(self.selectIcon) + self.drawPanel.SetCursor(wxSTANDARD_CURSOR) + self._adjustMenus() def doChooseLineTool(self, event=None): - """ Respond to the "Line Tool" menu command. - """ - self._setCurrentTool(self.lineIcon) - self.drawPanel.SetCursor(wxCROSS_CURSOR) - self.deselectAll() - self._adjustMenus() + """ Respond to the "Line Tool" menu command. + """ + self._setCurrentTool(self.lineIcon) + self.drawPanel.SetCursor(wxCROSS_CURSOR) + self.deselectAll() + self._adjustMenus() def doChooseRectTool(self, event=None): - """ Respond to the "Rect Tool" menu command. - """ - self._setCurrentTool(self.rectIcon) - self.drawPanel.SetCursor(wxCROSS_CURSOR) - self.deselectAll() - self._adjustMenus() + """ Respond to the "Rect Tool" menu command. + """ + self._setCurrentTool(self.rectIcon) + self.drawPanel.SetCursor(wxCROSS_CURSOR) + self.deselectAll() + self._adjustMenus() def doChooseEllipseTool(self, event=None): - """ Respond to the "Ellipse Tool" menu command. - """ - self._setCurrentTool(self.ellipseIcon) - self.drawPanel.SetCursor(wxCROSS_CURSOR) - self.deselectAll() - self._adjustMenus() + """ Respond to the "Ellipse Tool" menu command. + """ + self._setCurrentTool(self.ellipseIcon) + self.drawPanel.SetCursor(wxCROSS_CURSOR) + self.deselectAll() + self._adjustMenus() def doChooseTextTool(self, event=None): - """ Respond to the "Text Tool" menu command. - """ - self._setCurrentTool(self.textIcon) - self.drawPanel.SetCursor(wxCROSS_CURSOR) - self.deselectAll() - self._adjustMenus() + """ Respond to the "Text Tool" menu command. + """ + self._setCurrentTool(self.textIcon) + self.drawPanel.SetCursor(wxCROSS_CURSOR) + self.deselectAll() + self._adjustMenus() def doMoveForward(self, event): - """ Respond to the "Move Forward" menu command. - """ - if len(self.selection) != 1: return + """ Respond to the "Move Forward" menu command. + """ + if len(self.selection) != 1: return - self._saveUndoInfo() + self._saveUndoInfo() - obj = self.selection[0] - index = self.contents.index(obj) - if index == 0: return + obj = self.selection[0] + index = self.contents.index(obj) + if index == 0: return - del self.contents[index] - self.contents.insert(index-1, obj) + del self.contents[index] + self.contents.insert(index-1, obj) - self.drawPanel.Refresh() - self._adjustMenus() + self.drawPanel.Refresh() + self._adjustMenus() def doMoveToFront(self, event): - """ Respond to the "Move to Front" menu command. - """ - if len(self.selection) != 1: return + """ Respond to the "Move to Front" menu command. + """ + if len(self.selection) != 1: return - self._saveUndoInfo() + self._saveUndoInfo() - obj = self.selection[0] - self.contents.remove(obj) - self.contents.insert(0, obj) + obj = self.selection[0] + self.contents.remove(obj) + self.contents.insert(0, obj) - self.drawPanel.Refresh() - self._adjustMenus() + self.drawPanel.Refresh() + self._adjustMenus() def doMoveBackward(self, event): - """ Respond to the "Move Backward" menu command. - """ - if len(self.selection) != 1: return + """ Respond to the "Move Backward" menu command. + """ + if len(self.selection) != 1: return - self._saveUndoInfo() + self._saveUndoInfo() - obj = self.selection[0] - index = self.contents.index(obj) - if index == len(self.contents) - 1: return + obj = self.selection[0] + index = self.contents.index(obj) + if index == len(self.contents) - 1: return - del self.contents[index] - self.contents.insert(index+1, obj) + del self.contents[index] + self.contents.insert(index+1, obj) - self.drawPanel.Refresh() - self._adjustMenus() + self.drawPanel.Refresh() + self._adjustMenus() def doMoveToBack(self, event): - """ Respond to the "Move to Back" menu command. - """ - if len(self.selection) != 1: return + """ Respond to the "Move to Back" menu command. + """ + if len(self.selection) != 1: return - self._saveUndoInfo() + self._saveUndoInfo() - obj = self.selection[0] - self.contents.remove(obj) - self.contents.append(obj) + obj = self.selection[0] + self.contents.remove(obj) + self.contents.append(obj) - self.drawPanel.Refresh() - self._adjustMenus() + self.drawPanel.Refresh() + self._adjustMenus() def doShowAbout(self, event): - """ Respond to the "About pySketch" menu command. - """ - dialog = wxDialog(self, -1, "About pySketch") # , - #style=wxDIALOG_MODAL | wxSTAY_ON_TOP) - dialog.SetBackgroundColour(wxWHITE) + """ Respond to the "About pySketch" menu command. + """ + dialog = wxDialog(self, -1, "About pySketch") # , + #style=wxDIALOG_MODAL | wxSTAY_ON_TOP) + dialog.SetBackgroundColour(wxWHITE) - panel = wxPanel(dialog, -1) - panel.SetBackgroundColour(wxWHITE) + panel = wxPanel(dialog, -1) + panel.SetBackgroundColour(wxWHITE) - panelSizer = wxBoxSizer(wxVERTICAL) + panelSizer = wxBoxSizer(wxVERTICAL) - boldFont = wxFont(panel.GetFont().GetPointSize(), - panel.GetFont().GetFamily(), - wxNORMAL, wxBOLD) + boldFont = wxFont(panel.GetFont().GetPointSize(), + panel.GetFont().GetFamily(), + wxNORMAL, wxBOLD) - logo = wxStaticBitmap(panel, -1, wxBitmap("images/logo.bmp", - wxBITMAP_TYPE_BMP)) + logo = wxStaticBitmap(panel, -1, wxBitmap("images/logo.bmp", + wxBITMAP_TYPE_BMP)) - lab1 = wxStaticText(panel, -1, "pySketch") - lab1.SetFont(wxFont(36, boldFont.GetFamily(), wxITALIC, wxBOLD)) - lab1.SetSize(lab1.GetBestSize()) + lab1 = wxStaticText(panel, -1, "pySketch") + lab1.SetFont(wxFont(36, boldFont.GetFamily(), wxITALIC, wxBOLD)) + lab1.SetSize(lab1.GetBestSize()) - imageSizer = wxBoxSizer(wxHORIZONTAL) - imageSizer.Add(logo, 0, wxALL | wxALIGN_CENTRE_VERTICAL, 5) - imageSizer.Add(lab1, 0, wxALL | wxALIGN_CENTRE_VERTICAL, 5) + imageSizer = wxBoxSizer(wxHORIZONTAL) + imageSizer.Add(logo, 0, wxALL | wxALIGN_CENTRE_VERTICAL, 5) + imageSizer.Add(lab1, 0, wxALL | wxALIGN_CENTRE_VERTICAL, 5) - lab2 = wxStaticText(panel, -1, "A simple object-oriented drawing " + \ - "program.") - lab2.SetFont(boldFont) - lab2.SetSize(lab2.GetBestSize()) + lab2 = wxStaticText(panel, -1, "A simple object-oriented drawing " + \ + "program.") + lab2.SetFont(boldFont) + lab2.SetSize(lab2.GetBestSize()) - lab3 = wxStaticText(panel, -1, "pySketch is completely free " + \ - "software; please") - lab3.SetFont(boldFont) - lab3.SetSize(lab3.GetBestSize()) + lab3 = wxStaticText(panel, -1, "pySketch is completely free " + \ + "software; please") + lab3.SetFont(boldFont) + lab3.SetSize(lab3.GetBestSize()) - lab4 = wxStaticText(panel, -1, "feel free to adapt or use this " + \ - "in any way you like.") - lab4.SetFont(boldFont) - lab4.SetSize(lab4.GetBestSize()) + lab4 = wxStaticText(panel, -1, "feel free to adapt or use this " + \ + "in any way you like.") + lab4.SetFont(boldFont) + lab4.SetSize(lab4.GetBestSize()) - lab5 = wxStaticText(panel, -1, "Author: Erik Westra " + \ - "(ewestra@wave.co.nz)") - lab5.SetFont(boldFont) - lab5.SetSize(lab5.GetBestSize()) + lab5 = wxStaticText(panel, -1, "Author: Erik Westra " + \ + "(ewestra@wave.co.nz)") + lab5.SetFont(boldFont) + lab5.SetSize(lab5.GetBestSize()) - btnOK = wxButton(panel, wxID_OK, "OK") + btnOK = wxButton(panel, wxID_OK, "OK") - panelSizer.Add(imageSizer, 0, wxALIGN_CENTRE) - panelSizer.Add(10, 10) # Spacer. - panelSizer.Add(lab2, 0, wxALIGN_CENTRE) - panelSizer.Add(10, 10) # Spacer. - panelSizer.Add(lab3, 0, wxALIGN_CENTRE) - panelSizer.Add(lab4, 0, wxALIGN_CENTRE) - panelSizer.Add(10, 10) # Spacer. - panelSizer.Add(lab5, 0, wxALIGN_CENTRE) - panelSizer.Add(10, 10) # Spacer. - panelSizer.Add(btnOK, 0, wxALL | wxALIGN_CENTRE, 5) + panelSizer.Add(imageSizer, 0, wxALIGN_CENTRE) + panelSizer.Add(10, 10) # Spacer. + panelSizer.Add(lab2, 0, wxALIGN_CENTRE) + panelSizer.Add(10, 10) # Spacer. + panelSizer.Add(lab3, 0, wxALIGN_CENTRE) + panelSizer.Add(lab4, 0, wxALIGN_CENTRE) + panelSizer.Add(10, 10) # Spacer. + panelSizer.Add(lab5, 0, wxALIGN_CENTRE) + panelSizer.Add(10, 10) # Spacer. + panelSizer.Add(btnOK, 0, wxALL | wxALIGN_CENTRE, 5) - panel.SetAutoLayout(true) - panel.SetSizer(panelSizer) - panelSizer.Fit(panel) + panel.SetAutoLayout(True) + panel.SetSizer(panelSizer) + panelSizer.Fit(panel) - topSizer = wxBoxSizer(wxHORIZONTAL) - topSizer.Add(panel, 0, wxALL, 10) + topSizer = wxBoxSizer(wxHORIZONTAL) + topSizer.Add(panel, 0, wxALL, 10) - dialog.SetAutoLayout(true) - dialog.SetSizer(topSizer) - topSizer.Fit(dialog) + dialog.SetAutoLayout(True) + dialog.SetSizer(topSizer) + topSizer.Fit(dialog) - dialog.Centre() + dialog.Centre() - btn = dialog.ShowModal() - dialog.Destroy() + btn = dialog.ShowModal() + dialog.Destroy() # ============================= # == Object Creation Methods == # ============================= def createLine(self, x1, y1, x2, y2): - """ Create a new line object at the given position and size. - """ - self._saveUndoInfo() + """ Create a new line object at the given position and size. + """ + self._saveUndoInfo() - topLeftX = min(x1, x2) - topLeftY = min(y1, y2) - botRightX = max(x1, x2) - botRightY = max(y1, y2) + topLeftX = min(x1, x2) + topLeftY = min(y1, y2) + botRightX = max(x1, x2) + botRightY = max(y1, y2) - obj = DrawingObject(obj_LINE, position=wxPoint(topLeftX, topLeftY), - size=wxSize(botRightX-topLeftX, - botRightY-topLeftY), - penColour=self.penColour, - fillColour=self.fillColour, - lineSize=self.lineSize, - startPt = wxPoint(x1 - topLeftX, y1 - topLeftY), - endPt = wxPoint(x2 - topLeftX, y2 - topLeftY)) - self.contents.insert(0, obj) - self.dirty = true - self.doChooseSelectTool() - self.select(obj) + obj = DrawingObject(obj_LINE, position=wxPoint(topLeftX, topLeftY), + size=wxSize(botRightX-topLeftX, + botRightY-topLeftY), + penColour=self.penColour, + fillColour=self.fillColour, + lineSize=self.lineSize, + startPt = wxPoint(x1 - topLeftX, y1 - topLeftY), + endPt = wxPoint(x2 - topLeftX, y2 - topLeftY)) + self.contents.insert(0, obj) + self.dirty = True + self.doChooseSelectTool() + self.select(obj) def createRect(self, x, y, width, height): - """ Create a new rectangle object at the given position and size. - """ - self._saveUndoInfo() + """ Create a new rectangle object at the given position and size. + """ + self._saveUndoInfo() - obj = DrawingObject(obj_RECT, position=wxPoint(x, y), - size=wxSize(width, height), - penColour=self.penColour, - fillColour=self.fillColour, - lineSize=self.lineSize) - self.contents.insert(0, obj) - self.dirty = true - self.doChooseSelectTool() - self.select(obj) + obj = DrawingObject(obj_RECT, position=wxPoint(x, y), + size=wxSize(width, height), + penColour=self.penColour, + fillColour=self.fillColour, + lineSize=self.lineSize) + self.contents.insert(0, obj) + self.dirty = True + self.doChooseSelectTool() + self.select(obj) def createEllipse(self, x, y, width, height): - """ Create a new ellipse object at the given position and size. - """ - self._saveUndoInfo() + """ Create a new ellipse object at the given position and size. + """ + self._saveUndoInfo() - obj = DrawingObject(obj_ELLIPSE, position=wxPoint(x, y), - size=wxSize(width, height), - penColour=self.penColour, - fillColour=self.fillColour, - lineSize=self.lineSize) - self.contents.insert(0, obj) - self.dirty = true - self.doChooseSelectTool() - self.select(obj) + obj = DrawingObject(obj_ELLIPSE, position=wxPoint(x, y), + size=wxSize(width, height), + penColour=self.penColour, + fillColour=self.fillColour, + lineSize=self.lineSize) + self.contents.insert(0, obj) + self.dirty = True + self.doChooseSelectTool() + self.select(obj) def createText(self, x, y, width, height): - """ Create a new text object at the given position and size. - """ - editor = EditTextObjectDialog(self, "Create Text Object") - if editor.ShowModal() == wxID_CANCEL: - editor.Destroy() - return + """ Create a new text object at the given position and size. + """ + editor = EditTextObjectDialog(self, "Create Text Object") + if editor.ShowModal() == wxID_CANCEL: + editor.Destroy() + return - self._saveUndoInfo() + self._saveUndoInfo() - obj = DrawingObject(obj_TEXT, position=wxPoint(x, y), - size=wxSize(width, height)) - editor.dialogToObject(obj) - editor.Destroy() + obj = DrawingObject(obj_TEXT, position=wxPoint(x, y), + size=wxSize(width, height)) + editor.dialogToObject(obj) + editor.Destroy() - self.contents.insert(0, obj) - self.dirty = true - self.doChooseSelectTool() - self.select(obj) + self.contents.insert(0, obj) + self.dirty = True + self.doChooseSelectTool() + self.select(obj) # ======================= # == Selection Methods == # ======================= def selectAll(self): - """ Select every DrawingObject in our document. - """ - self.selection = [] - for obj in self.contents: - self.selection.append(obj) - self.drawPanel.Refresh() - self._adjustMenus() + """ Select every DrawingObject in our document. + """ + self.selection = [] + for obj in self.contents: + self.selection.append(obj) + self.drawPanel.Refresh() + self._adjustMenus() def deselectAll(self): - """ Deselect every DrawingObject in our document. - """ - self.selection = [] - self.drawPanel.Refresh() - self._adjustMenus() + """ Deselect every DrawingObject in our document. + """ + self.selection = [] + self.drawPanel.Refresh() + self._adjustMenus() def select(self, obj): - """ Select the given DrawingObject within our document. - """ - self.selection = [obj] - self.drawPanel.Refresh() - self._adjustMenus() + """ Select the given DrawingObject within our document. + """ + self.selection = [obj] + self.drawPanel.Refresh() + self._adjustMenus() def selectMany(self, objs): - """ Select the given list of DrawingObjects. - """ - self.selection = objs - self.drawPanel.Refresh() - self._adjustMenus() + """ Select the given list of DrawingObjects. + """ + self.selection = objs + self.drawPanel.Refresh() + self._adjustMenus() def selectByRectangle(self, x, y, width, height): - """ Select every DrawingObject in the given rectangular region. - """ - self.selection = [] - for obj in self.contents: - if obj.objectWithinRect(x, y, width, height): - self.selection.append(obj) - self.drawPanel.Refresh() - self._adjustMenus() + """ Select every DrawingObject in the given rectangular region. + """ + self.selection = [] + for obj in self.contents: + if obj.objectWithinRect(x, y, width, height): + self.selection.append(obj) + self.drawPanel.Refresh() + self._adjustMenus() # ====================== # == File I/O Methods == # ====================== def loadContents(self): - """ Load the contents of our document into memory. - """ - f = open(self.fileName, "rb") - objData = cPickle.load(f) - f.close() + """ Load the contents of our document into memory. + """ + f = open(self.fileName, "rb") + objData = cPickle.load(f) + f.close() - for type, data in objData: - obj = DrawingObject(type) - obj.setData(data) - self.contents.append(obj) + for type, data in objData: + obj = DrawingObject(type) + obj.setData(data) + self.contents.append(obj) - self.dirty = false - self.selection = [] - self.undoInfo = None + self.dirty = False + self.selection = [] + self.undoInfo = None - self.drawPanel.Refresh() - self._adjustMenus() + self.drawPanel.Refresh() + self._adjustMenus() def saveContents(self): - """ Save the contents of our document to disk. - """ - objData = [] - for obj in self.contents: - objData.append([obj.getType(), obj.getData()]) + """ Save the contents of our document to disk. + """ + objData = [] + for obj in self.contents: + objData.append([obj.getType(), obj.getData()]) - f = open(self.fileName, "wb") - cPickle.dump(objData, f) - f.close() + f = open(self.fileName, "wb") + cPickle.dump(objData, f) + f.close() - self.dirty = false + self.dirty = False def askIfUserWantsToSave(self, action): - """ Give the user the opportunity to save the current document. + """ Give the user the opportunity to save the current document. - 'action' is a string describing the action about to be taken. If - the user wants to save the document, it is saved immediately. If - the user cancels, we return false. - """ - if not self.dirty: return true # Nothing to do. + 'action' is a string describing the action about to be taken. If + the user wants to save the document, it is saved immediately. If + the user cancels, we return False. + """ + if not self.dirty: return True # Nothing to do. - response = wxMessageBox("Save changes before " + action + "?", - "Confirm", wxYES_NO | wxCANCEL, self) + response = wxMessageBox("Save changes before " + action + "?", + "Confirm", wxYES_NO | wxCANCEL, self) - if response == wxYES: - if self.fileName == None: - fileName = wxFileSelector("Save File As", "Saving", - default_extension="psk", - wildcard="*.psk", - flags = wxSAVE | wxOVERWRITE_PROMPT) - if fileName == "": return false # User cancelled. - self.fileName = fileName + if response == wxYES: + if self.fileName == None: + fileName = wxFileSelector("Save File As", "Saving", + default_extension="psk", + wildcard="*.psk", + flags = wxSAVE | wxOVERWRITE_PROMPT) + if fileName == "": return False # User cancelled. + self.fileName = fileName - self.saveContents() - return true - elif response == wxNO: - return true # User doesn't want changes saved. - elif response == wxCANCEL: - return false # User cancelled. + self.saveContents() + return True + elif response == wxNO: + return True # User doesn't want changes saved. + elif response == wxCANCEL: + return False # User cancelled. # ===================== # == Private Methods == # ===================== def _adjustMenus(self): - """ Adjust our menus and toolbar to reflect the current state of the - world. - """ - canSave = (self.fileName != None) and self.dirty - canRevert = (self.fileName != None) and self.dirty - canUndo = self.undoInfo != None - selection = len(self.selection) > 0 - onlyOne = len(self.selection) == 1 - isText = onlyOne and (self.selection[0].getType() == obj_TEXT) - front = onlyOne and (self.selection[0] == self.contents[0]) - back = onlyOne and (self.selection[0] == self.contents[-1]) + """ Adjust our menus and toolbar to reflect the current state of the + world. + """ + canSave = (self.fileName != None) and self.dirty + canRevert = (self.fileName != None) and self.dirty + canUndo = self.undoInfo != None + selection = len(self.selection) > 0 + onlyOne = len(self.selection) == 1 + isText = onlyOne and (self.selection[0].getType() == obj_TEXT) + front = onlyOne and (self.selection[0] == self.contents[0]) + back = onlyOne and (self.selection[0] == self.contents[-1]) - # Enable/disable our menu items. + # Enable/disable our menu items. - self.fileMenu.Enable(wxID_SAVE, canSave) - self.fileMenu.Enable(wxID_REVERT, canRevert) + self.fileMenu.Enable(wxID_SAVE, canSave) + self.fileMenu.Enable(wxID_REVERT, canRevert) - self.editMenu.Enable(menu_UNDO, canUndo) - self.editMenu.Enable(menu_DUPLICATE, selection) - self.editMenu.Enable(menu_EDIT_TEXT, isText) - self.editMenu.Enable(menu_DELETE, selection) + self.editMenu.Enable(menu_UNDO, canUndo) + self.editMenu.Enable(menu_DUPLICATE, selection) + self.editMenu.Enable(menu_EDIT_TEXT, isText) + self.editMenu.Enable(menu_DELETE, selection) - self.toolsMenu.Check(menu_SELECT, self.curTool == self.selectIcon) - self.toolsMenu.Check(menu_LINE, self.curTool == self.lineIcon) - self.toolsMenu.Check(menu_RECT, self.curTool == self.rectIcon) - self.toolsMenu.Check(menu_ELLIPSE, self.curTool == self.ellipseIcon) - self.toolsMenu.Check(menu_TEXT, self.curTool == self.textIcon) + self.toolsMenu.Check(menu_SELECT, self.curTool == self.selectIcon) + self.toolsMenu.Check(menu_LINE, self.curTool == self.lineIcon) + self.toolsMenu.Check(menu_RECT, self.curTool == self.rectIcon) + self.toolsMenu.Check(menu_ELLIPSE, self.curTool == self.ellipseIcon) + self.toolsMenu.Check(menu_TEXT, self.curTool == self.textIcon) - self.objectMenu.Enable(menu_MOVE_FORWARD, onlyOne and not front) - self.objectMenu.Enable(menu_MOVE_TO_FRONT, onlyOne and not front) - self.objectMenu.Enable(menu_MOVE_BACKWARD, onlyOne and not back) - self.objectMenu.Enable(menu_MOVE_TO_BACK, onlyOne and not back) + self.objectMenu.Enable(menu_MOVE_FORWARD, onlyOne and not front) + self.objectMenu.Enable(menu_MOVE_TO_FRONT, onlyOne and not front) + self.objectMenu.Enable(menu_MOVE_BACKWARD, onlyOne and not back) + self.objectMenu.Enable(menu_MOVE_TO_BACK, onlyOne and not back) - # Enable/disable our toolbar icons. + # Enable/disable our toolbar icons. - self.toolbar.EnableTool(wxID_NEW, true) - self.toolbar.EnableTool(wxID_OPEN, true) - self.toolbar.EnableTool(wxID_SAVE, canSave) - self.toolbar.EnableTool(menu_UNDO, canUndo) - self.toolbar.EnableTool(menu_DUPLICATE, selection) - self.toolbar.EnableTool(menu_MOVE_FORWARD, onlyOne and not front) - self.toolbar.EnableTool(menu_MOVE_BACKWARD, onlyOne and not back) + self.toolbar.EnableTool(wxID_NEW, True) + self.toolbar.EnableTool(wxID_OPEN, True) + self.toolbar.EnableTool(wxID_SAVE, canSave) + self.toolbar.EnableTool(menu_UNDO, canUndo) + self.toolbar.EnableTool(menu_DUPLICATE, selection) + self.toolbar.EnableTool(menu_MOVE_FORWARD, onlyOne and not front) + self.toolbar.EnableTool(menu_MOVE_BACKWARD, onlyOne and not back) def _setCurrentTool(self, newToolIcon): - """ Set the currently selected tool. - """ - if self.curTool == newToolIcon: return # Nothing to do. + """ Set the currently selected tool. + """ + if self.curTool == newToolIcon: return # Nothing to do. - if self.curTool != None: - self.curTool.deselect() + if self.curTool != None: + self.curTool.deselect() - newToolIcon.select() - self.curTool = newToolIcon + newToolIcon.select() + self.curTool = newToolIcon def _setPenColour(self, colour): - """ Set the default or selected object's pen colour. - """ - if len(self.selection) > 0: - self._saveUndoInfo() - for obj in self.selection: - obj.setPenColour(colour) - self.drawPanel.Refresh() - else: - self.penColour = colour - self.optionIndicator.setPenColour(colour) + """ Set the default or selected object's pen colour. + """ + if len(self.selection) > 0: + self._saveUndoInfo() + for obj in self.selection: + obj.setPenColour(colour) + self.drawPanel.Refresh() + else: + self.penColour = colour + self.optionIndicator.setPenColour(colour) def _setFillColour(self, colour): - """ Set the default or selected object's fill colour. - """ - if len(self.selection) > 0: - self._saveUndoInfo() - for obj in self.selection: - obj.setFillColour(colour) - self.drawPanel.Refresh() - else: - self.fillColour = colour - self.optionIndicator.setFillColour(colour) + """ Set the default or selected object's fill colour. + """ + if len(self.selection) > 0: + self._saveUndoInfo() + for obj in self.selection: + obj.setFillColour(colour) + self.drawPanel.Refresh() + else: + self.fillColour = colour + self.optionIndicator.setFillColour(colour) def _setLineSize(self, size): - """ Set the default or selected object's line size. - """ - if len(self.selection) > 0: - self._saveUndoInfo() - for obj in self.selection: - obj.setLineSize(size) - self.drawPanel.Refresh() - else: - self.lineSize = size - self.optionIndicator.setLineSize(size) + """ Set the default or selected object's line size. + """ + if len(self.selection) > 0: + self._saveUndoInfo() + for obj in self.selection: + obj.setLineSize(size) + self.drawPanel.Refresh() + else: + self.lineSize = size + self.optionIndicator.setLineSize(size) def _saveUndoInfo(self): - """ Remember the current state of the document, to allow for undo. + """ Remember the current state of the document, to allow for undo. - We make a copy of the document's contents, so that we can return to - the previous contents if the user does something and then wants to - undo the operation. - """ - savedContents = [] - for obj in self.contents: - savedContents.append([obj.getType(), obj.getData()]) + We make a copy of the document's contents, so that we can return to + the previous contents if the user does something and then wants to + undo the operation. + """ + savedContents = [] + for obj in self.contents: + savedContents.append([obj.getType(), obj.getData()]) - savedSelection = [] - for i in range(len(self.contents)): - if self.contents[i] in self.selection: - savedSelection.append(i) + savedSelection = [] + for i in range(len(self.contents)): + if self.contents[i] in self.selection: + savedSelection.append(i) - self.undoInfo = {"contents" : savedContents, - "selection" : savedSelection} + self.undoInfo = {"contents" : savedContents, + "selection" : savedSelection} def _resizeObject(self, obj, anchorPt, oldPt, newPt): - """ Resize the given object. + """ Resize the given object. - 'anchorPt' is the unchanging corner of the object, while the - opposite corner has been resized. 'oldPt' are the current - coordinates for this corner, while 'newPt' are the new coordinates. - The object should fit within the given dimensions, though if the - new point is less than the anchor point the object will need to be - moved as well as resized, to avoid giving it a negative size. - """ - if obj.getType() == obj_TEXT: - # Not allowed to resize text objects -- they're sized to fit text. - wxBell() - return + 'anchorPt' is the unchanging corner of the object, while the + opposite corner has been resized. 'oldPt' are the current + coordinates for this corner, while 'newPt' are the new coordinates. + The object should fit within the given dimensions, though if the + new point is less than the anchor point the object will need to be + moved as well as resized, to avoid giving it a negative size. + """ + if obj.getType() == obj_TEXT: + # Not allowed to resize text objects -- they're sized to fit text. + wxBell() + return - self._saveUndoInfo() + self._saveUndoInfo() - topLeft = wxPoint(min(anchorPt.x, newPt.x), - min(anchorPt.y, newPt.y)) - botRight = wxPoint(max(anchorPt.x, newPt.x), - max(anchorPt.y, newPt.y)) + topLeft = wxPoint(min(anchorPt.x, newPt.x), + min(anchorPt.y, newPt.y)) + botRight = wxPoint(max(anchorPt.x, newPt.x), + max(anchorPt.y, newPt.y)) - newWidth = botRight.x - topLeft.x - newHeight = botRight.y - topLeft.y + newWidth = botRight.x - topLeft.x + newHeight = botRight.y - topLeft.y - if obj.getType() == obj_LINE: - # Adjust the line so that its start and end points match the new - # overall object size. + if obj.getType() == obj_LINE: + # Adjust the line so that its start and end points match the new + # overall object size. - startPt = obj.getStartPt() - endPt = obj.getEndPt() + startPt = obj.getStartPt() + endPt = obj.getEndPt() - slopesDown = ((startPt.x < endPt.x) and (startPt.y < endPt.y)) or \ - ((startPt.x > endPt.x) and (startPt.y > endPt.y)) + slopesDown = ((startPt.x < endPt.x) and (startPt.y < endPt.y)) or \ + ((startPt.x > endPt.x) and (startPt.y > endPt.y)) - # Handle the user flipping the line. + # Handle the user flipping the line. - hFlip = ((anchorPt.x < oldPt.x) and (anchorPt.x > newPt.x)) or \ - ((anchorPt.x > oldPt.x) and (anchorPt.x < newPt.x)) - vFlip = ((anchorPt.y < oldPt.y) and (anchorPt.y > newPt.y)) or \ - ((anchorPt.y > oldPt.y) and (anchorPt.y < newPt.y)) + hFlip = ((anchorPt.x < oldPt.x) and (anchorPt.x > newPt.x)) or \ + ((anchorPt.x > oldPt.x) and (anchorPt.x < newPt.x)) + vFlip = ((anchorPt.y < oldPt.y) and (anchorPt.y > newPt.y)) or \ + ((anchorPt.y > oldPt.y) and (anchorPt.y < newPt.y)) - if (hFlip and not vFlip) or (vFlip and not hFlip): - slopesDown = not slopesDown # Line flipped. + if (hFlip and not vFlip) or (vFlip and not hFlip): + slopesDown = not slopesDown # Line flipped. - if slopesDown: - obj.setStartPt(wxPoint(0, 0)) - obj.setEndPt(wxPoint(newWidth, newHeight)) - else: - obj.setStartPt(wxPoint(0, newHeight)) - obj.setEndPt(wxPoint(newWidth, 0)) + if slopesDown: + obj.setStartPt(wxPoint(0, 0)) + obj.setEndPt(wxPoint(newWidth, newHeight)) + else: + obj.setStartPt(wxPoint(0, newHeight)) + obj.setEndPt(wxPoint(newWidth, 0)) - # Finally, adjust the bounds of the object to match the new dimensions. + # Finally, adjust the bounds of the object to match the new dimensions. - obj.setPosition(topLeft) - obj.setSize(wxSize(botRight.x - topLeft.x, botRight.y - topLeft.y)) + obj.setPosition(topLeft) + obj.setSize(wxSize(botRight.x - topLeft.x, botRight.y - topLeft.y)) - self.drawPanel.Refresh() + self.drawPanel.Refresh() def _moveObject(self, offsetX, offsetY): - """ Move the currently selected object(s) by the given offset. - """ - self._saveUndoInfo() + """ Move the currently selected object(s) by the given offset. + """ + self._saveUndoInfo() - for obj in self.selection: - pos = obj.getPosition() - pos.x = pos.x + offsetX - pos.y = pos.y + offsetY - obj.setPosition(pos) + for obj in self.selection: + pos = obj.getPosition() + pos.x = pos.x + offsetX + pos.y = pos.y + offsetY + obj.setPosition(pos) - self.drawPanel.Refresh() + self.drawPanel.Refresh() def _buildLineSizePopup(self, lineSize): - """ Build the pop-up menu used to set the line size. + """ Build the pop-up menu used to set the line size. - 'lineSize' is the current line size value. The corresponding item - is checked in the pop-up menu. - """ - menu = wxMenu() - menu.Append(id_LINESIZE_0, "no line", kind=wxITEM_CHECK) - menu.Append(id_LINESIZE_1, "1-pixel line", kind=wxITEM_CHECK) - menu.Append(id_LINESIZE_2, "2-pixel line", kind=wxITEM_CHECK) - menu.Append(id_LINESIZE_3, "3-pixel line", kind=wxITEM_CHECK) - menu.Append(id_LINESIZE_4, "4-pixel line", kind=wxITEM_CHECK) - menu.Append(id_LINESIZE_5, "5-pixel line", kind=wxITEM_CHECK) + 'lineSize' is the current line size value. The corresponding item + is checked in the pop-up menu. + """ + menu = wxMenu() + menu.Append(id_LINESIZE_0, "no line", kind=wxITEM_CHECK) + menu.Append(id_LINESIZE_1, "1-pixel line", kind=wxITEM_CHECK) + menu.Append(id_LINESIZE_2, "2-pixel line", kind=wxITEM_CHECK) + menu.Append(id_LINESIZE_3, "3-pixel line", kind=wxITEM_CHECK) + menu.Append(id_LINESIZE_4, "4-pixel line", kind=wxITEM_CHECK) + menu.Append(id_LINESIZE_5, "5-pixel line", kind=wxITEM_CHECK) - if lineSize == 0: menu.Check(id_LINESIZE_0, true) - elif lineSize == 1: menu.Check(id_LINESIZE_1, true) - elif lineSize == 2: menu.Check(id_LINESIZE_2, true) - elif lineSize == 3: menu.Check(id_LINESIZE_3, true) - elif lineSize == 4: menu.Check(id_LINESIZE_4, true) - elif lineSize == 5: menu.Check(id_LINESIZE_5, true) + if lineSize == 0: menu.Check(id_LINESIZE_0, True) + elif lineSize == 1: menu.Check(id_LINESIZE_1, True) + elif lineSize == 2: menu.Check(id_LINESIZE_2, True) + elif lineSize == 3: menu.Check(id_LINESIZE_3, True) + elif lineSize == 4: menu.Check(id_LINESIZE_4, True) + elif lineSize == 5: menu.Check(id_LINESIZE_5, True) - EVT_MENU(self, id_LINESIZE_0, self._lineSizePopupSelected) - EVT_MENU(self, id_LINESIZE_1, self._lineSizePopupSelected) - EVT_MENU(self, id_LINESIZE_2, self._lineSizePopupSelected) - EVT_MENU(self, id_LINESIZE_3, self._lineSizePopupSelected) - EVT_MENU(self, id_LINESIZE_4, self._lineSizePopupSelected) - EVT_MENU(self, id_LINESIZE_5, self._lineSizePopupSelected) + EVT_MENU(self, id_LINESIZE_0, self._lineSizePopupSelected) + EVT_MENU(self, id_LINESIZE_1, self._lineSizePopupSelected) + EVT_MENU(self, id_LINESIZE_2, self._lineSizePopupSelected) + EVT_MENU(self, id_LINESIZE_3, self._lineSizePopupSelected) + EVT_MENU(self, id_LINESIZE_4, self._lineSizePopupSelected) + EVT_MENU(self, id_LINESIZE_5, self._lineSizePopupSelected) - return menu + return menu def _lineSizePopupSelected(self, event): - """ Respond to the user selecting an item from the line size popup menu - """ - id = event.GetId() - if id == id_LINESIZE_0: self._setLineSize(0) - elif id == id_LINESIZE_1: self._setLineSize(1) - elif id == id_LINESIZE_2: self._setLineSize(2) - elif id == id_LINESIZE_3: self._setLineSize(3) - elif id == id_LINESIZE_4: self._setLineSize(4) - elif id == id_LINESIZE_5: self._setLineSize(5) - else: - wxBell() - return + """ Respond to the user selecting an item from the line size popup menu + """ + id = event.GetId() + if id == id_LINESIZE_0: self._setLineSize(0) + elif id == id_LINESIZE_1: self._setLineSize(1) + elif id == id_LINESIZE_2: self._setLineSize(2) + elif id == id_LINESIZE_3: self._setLineSize(3) + elif id == id_LINESIZE_4: self._setLineSize(4) + elif id == id_LINESIZE_5: self._setLineSize(5) + else: + wxBell() + return - self.optionIndicator.setLineSize(self.lineSize) + self.optionIndicator.setLineSize(self.lineSize) def _getEventCoordinates(self, event): - """ Return the coordinates associated with the given mouse event. + """ Return the coordinates associated with the given mouse event. - The coordinates have to be adjusted to allow for the current scroll - position. - """ + The coordinates have to be adjusted to allow for the current scroll + position. + """ originX, originY = self.drawPanel.GetViewStart() unitX, unitY = self.drawPanel.GetScrollPixelsPerUnit() return wxPoint(event.GetX() + (originX * unitX), - event.GetY() + (originY * unitY)) + event.GetY() + (originY * unitY)) def _getObjectAndSelectionHandleAt(self, pt): - """ Return the object and selection handle at the given point. + """ Return the object and selection handle at the given point. - We draw selection handles (small rectangles) around the currently - selected object(s). If the given point is within one of the - selection handle rectangles, we return the associated object and a - code indicating which selection handle the point is in. If the - point isn't within any selection handle at all, we return the tuple - (None, handle_NONE). - """ - for obj in self.selection: - handle = obj.getSelectionHandleContainingPoint(pt.x, pt.y) - if handle != handle_NONE: - return obj, handle + We draw selection handles (small rectangles) around the currently + selected object(s). If the given point is within one of the + selection handle rectangles, we return the associated object and a + code indicating which selection handle the point is in. If the + point isn't within any selection handle at all, we return the tuple + (None, handle_NONE). + """ + for obj in self.selection: + handle = obj.getSelectionHandleContainingPoint(pt.x, pt.y) + if handle != handle_NONE: + return obj, handle - return None, handle_NONE + return None, handle_NONE def _getObjectAt(self, pt): - """ Return the first object found which is at the given point. - """ - for obj in self.contents: - if obj.objectContainsPoint(pt.x, pt.y): - return obj - return None + """ Return the first object found which is at the given point. + """ + for obj in self.contents: + if obj.objectContainsPoint(pt.x, pt.y): + return obj + return None def _drawObjectOutline(self, offsetX, offsetY): - """ Draw an outline of the currently selected object. + """ Draw an outline of the currently selected object. - The selected object's outline is drawn at the object's position - plus the given offset. + The selected object's outline is drawn at the object's position + plus the given offset. - Note that the outline is drawn by *inverting* the window's - contents, so calling _drawObjectOutline twice in succession will - restore the window's contents back to what they were previously. - """ - if len(self.selection) != 1: return + Note that the outline is drawn by *inverting* the window's + contents, so calling _drawObjectOutline twice in succession will + restore the window's contents back to what they were previously. + """ + if len(self.selection) != 1: return - position = self.selection[0].getPosition() - size = self.selection[0].getSize() + position = self.selection[0].getPosition() + size = self.selection[0].getSize() - dc = wxClientDC(self.drawPanel) - self.drawPanel.PrepareDC(dc) - dc.BeginDrawing() - dc.SetPen(wxBLACK_DASHED_PEN) - dc.SetBrush(wxTRANSPARENT_BRUSH) - dc.SetLogicalFunction(wxINVERT) + dc = wxClientDC(self.drawPanel) + self.drawPanel.PrepareDC(dc) + dc.BeginDrawing() + dc.SetPen(wxBLACK_DASHED_PEN) + dc.SetBrush(wxTRANSPARENT_BRUSH) + dc.SetLogicalFunction(wxINVERT) - dc.DrawRectangle(position.x + offsetX, position.y + offsetY, - size.width, size.height) + dc.DrawRectangle(position.x + offsetX, position.y + offsetY, + size.width, size.height) - dc.EndDrawing() + dc.EndDrawing() def _drawVisualFeedback(self, startPt, endPt, type, dashedLine): - """ Draw visual feedback for a drawing operation. + """ Draw visual feedback for a drawing operation. - The visual feedback consists of a line, ellipse, or rectangle based - around the two given points. 'type' should be one of the following - predefined feedback type constants: + The visual feedback consists of a line, ellipse, or rectangle based + around the two given points. 'type' should be one of the following + predefined feedback type constants: - feedback_RECT -> draw rectangular feedback. - feedback_LINE -> draw line feedback. - feedback_ELLIPSE -> draw elliptical feedback. + feedback_RECT -> draw rectangular feedback. + feedback_LINE -> draw line feedback. + feedback_ELLIPSE -> draw elliptical feedback. - if 'dashedLine' is true, the feedback is drawn as a dashed rather - than a solid line. + if 'dashedLine' is True, the feedback is drawn as a dashed rather + than a solid line. - Note that the feedback is drawn by *inverting* the window's - contents, so calling _drawVisualFeedback twice in succession will - restore the window's contents back to what they were previously. - """ - dc = wxClientDC(self.drawPanel) - self.drawPanel.PrepareDC(dc) - dc.BeginDrawing() - if dashedLine: - dc.SetPen(wxBLACK_DASHED_PEN) - else: - dc.SetPen(wxBLACK_PEN) - dc.SetBrush(wxTRANSPARENT_BRUSH) - dc.SetLogicalFunction(wxINVERT) + Note that the feedback is drawn by *inverting* the window's + contents, so calling _drawVisualFeedback twice in succession will + restore the window's contents back to what they were previously. + """ + dc = wxClientDC(self.drawPanel) + self.drawPanel.PrepareDC(dc) + dc.BeginDrawing() + if dashedLine: + dc.SetPen(wxBLACK_DASHED_PEN) + else: + dc.SetPen(wxBLACK_PEN) + dc.SetBrush(wxTRANSPARENT_BRUSH) + dc.SetLogicalFunction(wxINVERT) - if type == feedback_RECT: - dc.DrawRectangle(startPt.x, startPt.y, - endPt.x - startPt.x, - endPt.y - startPt.y) - elif type == feedback_LINE: - dc.DrawLine(startPt.x, startPt.y, endPt.x, endPt.y) - elif type == feedback_ELLIPSE: - dc.DrawEllipse(startPt.x, startPt.y, - endPt.x - startPt.x, - endPt.y - startPt.y) + if type == feedback_RECT: + dc.DrawRectangle(startPt.x, startPt.y, + endPt.x - startPt.x, + endPt.y - startPt.y) + elif type == feedback_LINE: + dc.DrawLine(startPt.x, startPt.y, endPt.x, endPt.y) + elif type == feedback_ELLIPSE: + dc.DrawEllipse(startPt.x, startPt.y, + endPt.x - startPt.x, + endPt.y - startPt.y) - dc.EndDrawing() + dc.EndDrawing() #---------------------------------------------------------------------------- class DrawingObject: """ An object within the drawing panel. - A pySketch document consists of a front-to-back ordered list of - DrawingObjects. Each DrawingObject has the following properties: + A pySketch document consists of a front-to-back ordered list of + DrawingObjects. Each DrawingObject has the following properties: - 'type' What type of object this is (text, line, etc). - 'position' The position of the object within the document. - 'size' The size of the object within the document. - 'penColour' The colour to use for drawing the object's outline. - 'fillColour' Colour to use for drawing object's interior. - 'lineSize' Line width (in pixels) to use for object's outline. - 'startPt' The point, relative to the object's position, where - an obj_LINE object's line should start. - 'endPt' The point, relative to the object's position, where - an obj_LINE object's line should end. - 'text' The object's text (obj_TEXT objects only). - 'textFont' The text object's font name. - 'textSize' The text object's point size. - 'textBoldface' If true, this text object will be drawn in - boldface. - 'textItalic' If true, this text object will be drawn in italic. - 'textUnderline' If true, this text object will be drawn underlined. - """ + 'type' What type of object this is (text, line, etc). + 'position' The position of the object within the document. + 'size' The size of the object within the document. + 'penColour' The colour to use for drawing the object's outline. + 'fillColour' Colour to use for drawing object's interior. + 'lineSize' Line width (in pixels) to use for object's outline. + 'startPt' The point, relative to the object's position, where + an obj_LINE object's line should start. + 'endPt' The point, relative to the object's position, where + an obj_LINE object's line should end. + 'text' The object's text (obj_TEXT objects only). + 'textFont' The text object's font name. + 'textSize' The text object's point size. + 'textBoldface' If True, this text object will be drawn in + boldface. + 'textItalic' If True, this text object will be drawn in italic. + 'textUnderline' If True, this text object will be drawn underlined. + """ # ================== # == Constructors == # ================== def __init__(self, type, position=wxPoint(0, 0), size=wxSize(0, 0), - penColour=wxBLACK, fillColour=wxWHITE, lineSize=1, - text=None, startPt=wxPoint(0, 0), endPt=wxPoint(0,0)): - """ Standard constructor. + penColour=wxBLACK, fillColour=wxWHITE, lineSize=1, + text=None, startPt=wxPoint(0, 0), endPt=wxPoint(0,0)): + """ Standard constructor. - 'type' is the type of object being created. This should be one of - the following constants: + 'type' is the type of object being created. This should be one of + the following constants: - obj_LINE - obj_RECT - obj_ELLIPSE - obj_TEXT + obj_LINE + obj_RECT + obj_ELLIPSE + obj_TEXT - The remaining parameters let you set various options for the newly - created DrawingObject. - """ - self.type = type - self.position = position - self.size = size - self.penColour = penColour - self.fillColour = fillColour - self.lineSize = lineSize - self.startPt = startPt - self.endPt = endPt - self.text = text - self.textFont = wxSystemSettings_GetSystemFont( - wxSYS_DEFAULT_GUI_FONT).GetFaceName() - self.textSize = 12 - self.textBoldface = false - self.textItalic = false - self.textUnderline = false + The remaining parameters let you set various options for the newly + created DrawingObject. + """ + self.type = type + self.position = position + self.size = size + self.penColour = penColour + self.fillColour = fillColour + self.lineSize = lineSize + self.startPt = startPt + self.endPt = endPt + self.text = text + self.textFont = wxSystemSettings_GetSystemFont( + wxSYS_DEFAULT_GUI_FONT).GetFaceName() + self.textSize = 12 + self.textBoldface = False + self.textItalic = False + self.textUnderline = False # ============================= # == Object Property Methods == # ============================= def getData(self): - """ Return a copy of the object's internal data. + """ Return a copy of the object's internal data. - This is used to save this DrawingObject to disk. - """ - return [self.type, self.position.x, self.position.y, - self.size.width, self.size.height, - self.penColour.Red(), - self.penColour.Green(), - self.penColour.Blue(), - self.fillColour.Red(), - self.fillColour.Green(), - self.fillColour.Blue(), - self.lineSize, - self.startPt.x, self.startPt.y, - self.endPt.x, self.endPt.y, - self.text, - self.textFont, - self.textSize, - self.textBoldface, - self.textItalic, - self.textUnderline] + This is used to save this DrawingObject to disk. + """ + return [self.type, self.position.x, self.position.y, + self.size.width, self.size.height, + self.penColour.Red(), + self.penColour.Green(), + self.penColour.Blue(), + self.fillColour.Red(), + self.fillColour.Green(), + self.fillColour.Blue(), + self.lineSize, + self.startPt.x, self.startPt.y, + self.endPt.x, self.endPt.y, + self.text, + self.textFont, + self.textSize, + self.textBoldface, + self.textItalic, + self.textUnderline] def setData(self, data): - """ Set the object's internal data. + """ Set the object's internal data. - 'data' is a copy of the object's saved data, as returned by - getData() above. This is used to restore a previously saved - DrawingObject. - """ - #data = copy.deepcopy(data) # Needed? + 'data' is a copy of the object's saved data, as returned by + getData() above. This is used to restore a previously saved + DrawingObject. + """ + #data = copy.deepcopy(data) # Needed? - self.type = data[0] - self.position = wxPoint(data[1], data[2]) - self.size = wxSize(data[3], data[4]) - self.penColour = wxColour(red=data[5], - green=data[6], - blue=data[7]) - self.fillColour = wxColour(red=data[8], - green=data[9], - blue=data[10]) - self.lineSize = data[11] - self.startPt = wxPoint(data[12], data[13]) - self.endPt = wxPoint(data[14], data[15]) - self.text = data[16] - self.textFont = data[17] - self.textSize = data[18] - self.textBoldface = data[19] - self.textItalic = data[20] - self.textUnderline = data[21] + self.type = data[0] + self.position = wxPoint(data[1], data[2]) + self.size = wxSize(data[3], data[4]) + self.penColour = wxColour(red=data[5], + green=data[6], + blue=data[7]) + self.fillColour = wxColour(red=data[8], + green=data[9], + blue=data[10]) + self.lineSize = data[11] + self.startPt = wxPoint(data[12], data[13]) + self.endPt = wxPoint(data[14], data[15]) + self.text = data[16] + self.textFont = data[17] + self.textSize = data[18] + self.textBoldface = data[19] + self.textItalic = data[20] + self.textUnderline = data[21] def getType(self): - """ Return this DrawingObject's type. - """ - return self.type + """ Return this DrawingObject's type. + """ + return self.type def setPosition(self, position): - """ Set the origin (top-left corner) for this DrawingObject. - """ - self.position = position + """ Set the origin (top-left corner) for this DrawingObject. + """ + self.position = position def getPosition(self): - """ Return this DrawingObject's position. - """ - return self.position + """ Return this DrawingObject's position. + """ + return self.position def setSize(self, size): - """ Set the size for this DrawingObject. - """ - self.size = size + """ Set the size for this DrawingObject. + """ + self.size = size def getSize(self): - """ Return this DrawingObject's size. - """ - return self.size + """ Return this DrawingObject's size. + """ + return self.size def setPenColour(self, colour): - """ Set the pen colour used for this DrawingObject. - """ - self.penColour = colour + """ Set the pen colour used for this DrawingObject. + """ + self.penColour = colour def getPenColour(self): - """ Return this DrawingObject's pen colour. - """ - return self.penColour + """ Return this DrawingObject's pen colour. + """ + return self.penColour def setFillColour(self, colour): - """ Set the fill colour used for this DrawingObject. - """ - self.fillColour = colour + """ Set the fill colour used for this DrawingObject. + """ + self.fillColour = colour def getFillColour(self): - """ Return this DrawingObject's fill colour. - """ - return self.fillColour + """ Return this DrawingObject's fill colour. + """ + return self.fillColour def setLineSize(self, lineSize): - """ Set the linesize used for this DrawingObject. - """ - self.lineSize = lineSize + """ Set the linesize used for this DrawingObject. + """ + self.lineSize = lineSize def getLineSize(self): - """ Return this DrawingObject's line size. - """ - return self.lineSize + """ Return this DrawingObject's line size. + """ + return self.lineSize def setStartPt(self, startPt): - """ Set the starting point for this line DrawingObject. - """ - self.startPt = startPt + """ Set the starting point for this line DrawingObject. + """ + self.startPt = startPt def getStartPt(self): - """ Return the starting point for this line DrawingObject. - """ - return self.startPt + """ Return the starting point for this line DrawingObject. + """ + return self.startPt def setEndPt(self, endPt): - """ Set the ending point for this line DrawingObject. - """ - self.endPt = endPt + """ Set the ending point for this line DrawingObject. + """ + self.endPt = endPt def getEndPt(self): - """ Return the ending point for this line DrawingObject. - """ - return self.endPt + """ Return the ending point for this line DrawingObject. + """ + return self.endPt def setText(self, text): - """ Set the text for this DrawingObject. - """ - self.text = text + """ Set the text for this DrawingObject. + """ + self.text = text def getText(self): - """ Return this DrawingObject's text. - """ - return self.text + """ Return this DrawingObject's text. + """ + return self.text def setTextFont(self, font): - """ Set the typeface for this text DrawingObject. - """ - self.textFont = font + """ Set the typeface for this text DrawingObject. + """ + self.textFont = font def getTextFont(self): - """ Return this text DrawingObject's typeface. - """ - return self.textFont + """ Return this text DrawingObject's typeface. + """ + return self.textFont def setTextSize(self, size): - """ Set the point size for this text DrawingObject. - """ - self.textSize = size + """ Set the point size for this text DrawingObject. + """ + self.textSize = size def getTextSize(self): - """ Return this text DrawingObject's text size. - """ - return self.textSize + """ Return this text DrawingObject's text size. + """ + return self.textSize def setTextBoldface(self, boldface): - """ Set the boldface flag for this text DrawingObject. - """ - self.textBoldface = boldface + """ Set the boldface flag for this text DrawingObject. + """ + self.textBoldface = boldface def getTextBoldface(self): - """ Return this text DrawingObject's boldface flag. - """ - return self.textBoldface + """ Return this text DrawingObject's boldface flag. + """ + return self.textBoldface def setTextItalic(self, italic): - """ Set the italic flag for this text DrawingObject. - """ - self.textItalic = italic + """ Set the italic flag for this text DrawingObject. + """ + self.textItalic = italic def getTextItalic(self): - """ Return this text DrawingObject's italic flag. - """ - return self.textItalic + """ Return this text DrawingObject's italic flag. + """ + return self.textItalic def setTextUnderline(self, underline): - """ Set the underling flag for this text DrawingObject. - """ - self.textUnderline = underline + """ Set the underling flag for this text DrawingObject. + """ + self.textUnderline = underline def getTextUnderline(self): - """ Return this text DrawingObject's underline flag. - """ - return self.textUnderline + """ Return this text DrawingObject's underline flag. + """ + return self.textUnderline # ============================ # == Object Drawing Methods == # ============================ def draw(self, dc, selected): - """ Draw this DrawingObject into our window. + """ Draw this DrawingObject into our window. - 'dc' is the device context to use for drawing. If 'selected' is - true, the object is currently selected and should be drawn as such. - """ - if self.type != obj_TEXT: - if self.lineSize == 0: - dc.SetPen(wxPen(self.penColour, self.lineSize, wxTRANSPARENT)) - else: - dc.SetPen(wxPen(self.penColour, self.lineSize, wxSOLID)) - dc.SetBrush(wxBrush(self.fillColour, wxSOLID)) - else: - dc.SetTextForeground(self.penColour) - dc.SetTextBackground(self.fillColour) + 'dc' is the device context to use for drawing. If 'selected' is + True, the object is currently selected and should be drawn as such. + """ + if self.type != obj_TEXT: + if self.lineSize == 0: + dc.SetPen(wxPen(self.penColour, self.lineSize, wxTRANSPARENT)) + else: + dc.SetPen(wxPen(self.penColour, self.lineSize, wxSOLID)) + dc.SetBrush(wxBrush(self.fillColour, wxSOLID)) + else: + dc.SetTextForeground(self.penColour) + dc.SetTextBackground(self.fillColour) - self._privateDraw(dc, self.position, selected) + self._privateDraw(dc, self.position, selected) # ======================= # == Selection Methods == # ======================= def objectContainsPoint(self, x, y): - """ Returns true iff this object contains the given point. + """ Returns True iff this object contains the given point. - This is used to determine if the user clicked on the object. - """ - # Firstly, ignore any points outside of the object's bounds. + This is used to determine if the user clicked on the object. + """ + # Firstly, ignore any points outside of the object's bounds. - if x < self.position.x: return false - if x > self.position.x + self.size.x: return false - if y < self.position.y: return false - if y > self.position.y + self.size.y: return false + if x < self.position.x: return False + if x > self.position.x + self.size.x: return False + if y < self.position.y: return False + if y > self.position.y + self.size.y: return False - if self.type in [obj_RECT, obj_TEXT]: - # Rectangles and text are easy -- they're always selected if the - # point is within their bounds. - return true + if self.type in [obj_RECT, obj_TEXT]: + # Rectangles and text are easy -- they're always selected if the + # point is within their bounds. + return True - # Now things get tricky. There's no straightforward way of knowing - # whether the point is within the object's bounds...to get around this, - # we draw the object into a memory-based bitmap and see if the given - # point was drawn. This could no doubt be done more efficiently by - # some tricky maths, but this approach works and is simple enough. + # Now things get tricky. There's no straightforward way of knowing + # whether the point is within the object's bounds...to get around this, + # we draw the object into a memory-based bitmap and see if the given + # point was drawn. This could no doubt be done more efficiently by + # some tricky maths, but this approach works and is simple enough. - bitmap = wxEmptyBitmap(self.size.x + 10, self.size.y + 10) - dc = wxMemoryDC() - dc.SelectObject(bitmap) - dc.BeginDrawing() - dc.SetBackground(wxWHITE_BRUSH) - dc.Clear() - dc.SetPen(wxPen(wxBLACK, self.lineSize + 5, wxSOLID)) - dc.SetBrush(wxBLACK_BRUSH) - self._privateDraw(dc, wxPoint(5, 5), true) - dc.EndDrawing() - pixel = dc.GetPixel(x - self.position.x + 5, y - self.position.y + 5) - if (pixel.Red() == 0) and (pixel.Green() == 0) and (pixel.Blue() == 0): - return true - else: - return false + bitmap = wxEmptyBitmap(self.size.x + 10, self.size.y + 10) + dc = wxMemoryDC() + dc.SelectObject(bitmap) + dc.BeginDrawing() + dc.SetBackground(wxWHITE_BRUSH) + dc.Clear() + dc.SetPen(wxPen(wxBLACK, self.lineSize + 5, wxSOLID)) + dc.SetBrush(wxBLACK_BRUSH) + self._privateDraw(dc, wxPoint(5, 5), True) + dc.EndDrawing() + pixel = dc.GetPixel(x - self.position.x + 5, y - self.position.y + 5) + if (pixel.Red() == 0) and (pixel.Green() == 0) and (pixel.Blue() == 0): + return True + else: + return False def getSelectionHandleContainingPoint(self, x, y): - """ Return the selection handle containing the given point, if any. + """ Return the selection handle containing the given point, if any. - We return one of the predefined selection handle ID codes. - """ - if self.type == obj_LINE: - # We have selection handles at the start and end points. - if self._pointInSelRect(x, y, self.position.x + self.startPt.x, - self.position.y + self.startPt.y): - return handle_START_POINT - elif self._pointInSelRect(x, y, self.position.x + self.endPt.x, - self.position.y + self.endPt.y): - return handle_END_POINT - else: - return handle_NONE - else: - # We have selection handles at all four corners. - if self._pointInSelRect(x, y, self.position.x, self.position.y): - return handle_TOP_LEFT - elif self._pointInSelRect(x, y, self.position.x + self.size.width, - self.position.y): - return handle_TOP_RIGHT - elif self._pointInSelRect(x, y, self.position.x, - self.position.y + self.size.height): - return handle_BOTTOM_LEFT - elif self._pointInSelRect(x, y, self.position.x + self.size.width, - self.position.y + self.size.height): - return handle_BOTTOM_RIGHT - else: - return handle_NONE + We return one of the predefined selection handle ID codes. + """ + if self.type == obj_LINE: + # We have selection handles at the start and end points. + if self._pointInSelRect(x, y, self.position.x + self.startPt.x, + self.position.y + self.startPt.y): + return handle_START_POINT + elif self._pointInSelRect(x, y, self.position.x + self.endPt.x, + self.position.y + self.endPt.y): + return handle_END_POINT + else: + return handle_NONE + else: + # We have selection handles at all four corners. + if self._pointInSelRect(x, y, self.position.x, self.position.y): + return handle_TOP_LEFT + elif self._pointInSelRect(x, y, self.position.x + self.size.width, + self.position.y): + return handle_TOP_RIGHT + elif self._pointInSelRect(x, y, self.position.x, + self.position.y + self.size.height): + return handle_BOTTOM_LEFT + elif self._pointInSelRect(x, y, self.position.x + self.size.width, + self.position.y + self.size.height): + return handle_BOTTOM_RIGHT + else: + return handle_NONE def objectWithinRect(self, x, y, width, height): - """ Return true iff this object falls completely within the given rect. - """ - if x > self.position.x: return false - if x + width < self.position.x + self.size.width: return false - if y > self.position.y: return false - if y + height < self.position.y + self.size.height: return false - return true + """ Return True iff this object falls completely within the given rect. + """ + if x > self.position.x: return False + if x + width < self.position.x + self.size.width: return False + if y > self.position.y: return False + if y + height < self.position.y + self.size.height: return False + return True # ===================== # == Utility Methods == # ===================== def fitToText(self): - """ Resize a text DrawingObject so that it fits it's text exactly. - """ - if self.type != obj_TEXT: return + """ Resize a text DrawingObject so that it fits it's text exactly. + """ + if self.type != obj_TEXT: return - if self.textBoldface: weight = wxBOLD - else: weight = wxNORMAL - if self.textItalic: style = wxITALIC - else: style = wxNORMAL - font = wxFont(self.textSize, wxDEFAULT, style, weight, - self.textUnderline, self.textFont) + if self.textBoldface: weight = wxBOLD + else: weight = wxNORMAL + if self.textItalic: style = wxITALIC + else: style = wxNORMAL + font = wxFont(self.textSize, wxDEFAULT, style, weight, + self.textUnderline, self.textFont) - dummyWindow = wxFrame(None, -1, "") - dummyWindow.SetFont(font) - width, height = dummyWindow.GetTextExtent(self.text) - dummyWindow.Destroy() + dummyWindow = wxFrame(None, -1, "") + dummyWindow.SetFont(font) + width, height = dummyWindow.GetTextExtent(self.text) + dummyWindow.Destroy() - self.size = wxSize(width, height) + self.size = wxSize(width, height) # ===================== # == Private Methods == # ===================== def _privateDraw(self, dc, position, selected): - """ Private routine to draw this DrawingObject. + """ Private routine to draw this DrawingObject. - 'dc' is the device context to use for drawing, while 'position' is - the position in which to draw the object. If 'selected' is true, - the object is drawn with selection handles. This private drawing - routine assumes that the pen and brush have already been set by the - caller. - """ - if self.type == obj_LINE: - dc.DrawLine(position.x + self.startPt.x, - position.y + self.startPt.y, - position.x + self.endPt.x, - position.y + self.endPt.y) - elif self.type == obj_RECT: - dc.DrawRectangle(position.x, position.y, - self.size.width, self.size.height) - elif self.type == obj_ELLIPSE: - dc.DrawEllipse(position.x, position.y, - self.size.width, self.size.height) - elif self.type == obj_TEXT: - if self.textBoldface: weight = wxBOLD - else: weight = wxNORMAL - if self.textItalic: style = wxITALIC - else: style = wxNORMAL - font = wxFont(self.textSize, wxDEFAULT, style, weight, - self.textUnderline, self.textFont) - dc.SetFont(font) - dc.DrawText(self.text, position.x, position.y) + 'dc' is the device context to use for drawing, while 'position' is + the position in which to draw the object. If 'selected' is True, + the object is drawn with selection handles. This private drawing + routine assumes that the pen and brush have already been set by the + caller. + """ + if self.type == obj_LINE: + dc.DrawLine(position.x + self.startPt.x, + position.y + self.startPt.y, + position.x + self.endPt.x, + position.y + self.endPt.y) + elif self.type == obj_RECT: + dc.DrawRectangle(position.x, position.y, + self.size.width, self.size.height) + elif self.type == obj_ELLIPSE: + dc.DrawEllipse(position.x, position.y, + self.size.width, self.size.height) + elif self.type == obj_TEXT: + if self.textBoldface: weight = wxBOLD + else: weight = wxNORMAL + if self.textItalic: style = wxITALIC + else: style = wxNORMAL + font = wxFont(self.textSize, wxDEFAULT, style, weight, + self.textUnderline, self.textFont) + dc.SetFont(font) + dc.DrawText(self.text, position.x, position.y) - if selected: - dc.SetPen(wxTRANSPARENT_PEN) - dc.SetBrush(wxBLACK_BRUSH) + if selected: + dc.SetPen(wxTRANSPARENT_PEN) + dc.SetBrush(wxBLACK_BRUSH) - if self.type == obj_LINE: - # Draw selection handles at the start and end points. - self._drawSelHandle(dc, position.x + self.startPt.x, - position.y + self.startPt.y) - self._drawSelHandle(dc, position.x + self.endPt.x, - position.y + self.endPt.y) - else: - # Draw selection handles at all four corners. - self._drawSelHandle(dc, position.x, position.y) - self._drawSelHandle(dc, position.x + self.size.width, - position.y) - self._drawSelHandle(dc, position.x, - position.y + self.size.height) - self._drawSelHandle(dc, position.x + self.size.width, - position.y + self.size.height) + if self.type == obj_LINE: + # Draw selection handles at the start and end points. + self._drawSelHandle(dc, position.x + self.startPt.x, + position.y + self.startPt.y) + self._drawSelHandle(dc, position.x + self.endPt.x, + position.y + self.endPt.y) + else: + # Draw selection handles at all four corners. + self._drawSelHandle(dc, position.x, position.y) + self._drawSelHandle(dc, position.x + self.size.width, + position.y) + self._drawSelHandle(dc, position.x, + position.y + self.size.height) + self._drawSelHandle(dc, position.x + self.size.width, + position.y + self.size.height) def _drawSelHandle(self, dc, x, y): - """ Draw a selection handle around this DrawingObject. + """ Draw a selection handle around this DrawingObject. - 'dc' is the device context to draw the selection handle within, - while 'x' and 'y' are the coordinates to use for the centre of the - selection handle. - """ - dc.DrawRectangle(x - 3, y - 3, 6, 6) + 'dc' is the device context to draw the selection handle within, + while 'x' and 'y' are the coordinates to use for the centre of the + selection handle. + """ + dc.DrawRectangle(x - 3, y - 3, 6, 6) def _pointInSelRect(self, x, y, rX, rY): - """ Return true iff (x, y) is within the selection handle at (rX, ry). - """ - if x < rX - 3: return false - elif x > rX + 3: return false - elif y < rY - 3: return false - elif y > rY + 3: return false - else: return true + """ Return True iff (x, y) is within the selection handle at (rX, ry). + """ + if x < rX - 3: return False + elif x > rX + 3: return False + elif y < rY - 3: return False + elif y > rY + 3: return False + else: return True #---------------------------------------------------------------------------- class ToolPaletteIcon(wxStaticBitmap): """ An icon appearing in the tool palette area of our sketching window. - Note that this is actually implemented as a wxStaticBitmap rather - than as a wxIcon. wxIcon has a very specific meaning, and isn't - appropriate for this more general use. + Note that this is actually implemented as a wxStaticBitmap rather + than as a wxIcon. wxIcon has a very specific meaning, and isn't + appropriate for this more general use. """ def __init__(self, parent, iconID, iconName, toolTip): - """ Standard constructor. + """ Standard constructor. - 'parent' is the parent window this icon will be part of. - 'iconID' is the internal ID used for this icon. - 'iconName' is the name used for this icon. - 'toolTip' is the tool tip text to show for this icon. + 'parent' is the parent window this icon will be part of. + 'iconID' is the internal ID used for this icon. + 'iconName' is the name used for this icon. + 'toolTip' is the tool tip text to show for this icon. - The icon name is used to get the appropriate bitmap for this icon. - """ - bmp = wxBitmap("images/" + iconName + "Icon.bmp", wxBITMAP_TYPE_BMP) - wxStaticBitmap.__init__(self, parent, iconID, bmp, wxDefaultPosition, - wxSize(bmp.GetWidth(), bmp.GetHeight())) - self.SetToolTip(wxToolTip(toolTip)) + The icon name is used to get the appropriate bitmap for this icon. + """ + bmp = wxBitmap("images/" + iconName + "Icon.bmp", wxBITMAP_TYPE_BMP) + wxStaticBitmap.__init__(self, parent, iconID, bmp, wxDefaultPosition, + wxSize(bmp.GetWidth(), bmp.GetHeight())) + self.SetToolTip(wxToolTip(toolTip)) - self.iconID = iconID - self.iconName = iconName - self.isSelected = false + self.iconID = iconID + self.iconName = iconName + self.isSelected = False def select(self): - """ Select the icon. + """ Select the icon. - The icon's visual representation is updated appropriately. - """ - if self.isSelected: return # Nothing to do! + The icon's visual representation is updated appropriately. + """ + if self.isSelected: return # Nothing to do! - bmp = wxBitmap("images/" + self.iconName + "IconSel.bmp", - wxBITMAP_TYPE_BMP) - self.SetBitmap(bmp) - self.isSelected = true + bmp = wxBitmap("images/" + self.iconName + "IconSel.bmp", + wxBITMAP_TYPE_BMP) + self.SetBitmap(bmp) + self.isSelected = True def deselect(self): - """ Deselect the icon. + """ Deselect the icon. - The icon's visual representation is updated appropriately. - """ - if not self.isSelected: return # Nothing to do! + The icon's visual representation is updated appropriately. + """ + if not self.isSelected: return # Nothing to do! - bmp = wxBitmap("images/" + self.iconName + "Icon.bmp", - wxBITMAP_TYPE_BMP) - self.SetBitmap(bmp) - self.isSelected = false + bmp = wxBitmap("images/" + self.iconName + "Icon.bmp", + wxBITMAP_TYPE_BMP) + self.SetBitmap(bmp) + self.isSelected = False #---------------------------------------------------------------------------- @@ -2290,298 +2290,298 @@ class ToolOptionIndicator(wxWindow): """ A visual indicator which shows the current tool options. """ def __init__(self, parent): - """ Standard constructor. - """ - wxWindow.__init__(self, parent, -1, wxDefaultPosition, wxSize(52, 32)) + """ Standard constructor. + """ + wxWindow.__init__(self, parent, -1, wxDefaultPosition, wxSize(52, 32)) - self.penColour = wxBLACK - self.fillColour = wxWHITE - self.lineSize = 1 + self.penColour = wxBLACK + self.fillColour = wxWHITE + self.lineSize = 1 - EVT_PAINT(self, self.OnPaint) + EVT_PAINT(self, self.OnPaint) def setPenColour(self, penColour): - """ Set the indicator's current pen colour. - """ - self.penColour = penColour - self.Refresh() + """ Set the indicator's current pen colour. + """ + self.penColour = penColour + self.Refresh() def setFillColour(self, fillColour): - """ Set the indicator's current fill colour. - """ - self.fillColour = fillColour - self.Refresh() + """ Set the indicator's current fill colour. + """ + self.fillColour = fillColour + self.Refresh() def setLineSize(self, lineSize): - """ Set the indicator's current pen colour. - """ - self.lineSize = lineSize - self.Refresh() + """ Set the indicator's current pen colour. + """ + self.lineSize = lineSize + self.Refresh() def OnPaint(self, event): - """ Paint our tool option indicator. - """ - dc = wxPaintDC(self) - dc.BeginDrawing() + """ Paint our tool option indicator. + """ + dc = wxPaintDC(self) + dc.BeginDrawing() - if self.lineSize == 0: - dc.SetPen(wxPen(self.penColour, self.lineSize, wxTRANSPARENT)) - else: - dc.SetPen(wxPen(self.penColour, self.lineSize, wxSOLID)) - dc.SetBrush(wxBrush(self.fillColour, wxSOLID)) + if self.lineSize == 0: + dc.SetPen(wxPen(self.penColour, self.lineSize, wxTRANSPARENT)) + else: + dc.SetPen(wxPen(self.penColour, self.lineSize, wxSOLID)) + dc.SetBrush(wxBrush(self.fillColour, wxSOLID)) - dc.DrawRectangle(5, 5, self.GetSize().width - 10, - self.GetSize().height - 10) + dc.DrawRectangle(5, 5, self.GetSize().width - 10, + self.GetSize().height - 10) - dc.EndDrawing() + dc.EndDrawing() #---------------------------------------------------------------------------- class EditTextObjectDialog(wxDialog): """ Dialog box used to edit the properties of a text object. - The user can edit the object's text, font, size, and text style. + The user can edit the object's text, font, size, and text style. """ def __init__(self, parent, title): - """ Standard constructor. - """ - wxDialog.__init__(self, parent, -1, title) + """ Standard constructor. + """ + wxDialog.__init__(self, parent, -1, title) - self.textCtrl = wxTextCtrl(self, 1001, "", style=wxTE_PROCESS_ENTER, - validator=TextObjectValidator()) - extent = self.textCtrl.GetFullTextExtent("Hy") - lineHeight = extent[1] + extent[3] - self.textCtrl.SetSize(wxSize(-1, lineHeight * 4)) + self.textCtrl = wxTextCtrl(self, 1001, "", style=wxTE_PROCESS_ENTER, + validator=TextObjectValidator()) + extent = self.textCtrl.GetFullTextExtent("Hy") + lineHeight = extent[1] + extent[3] + self.textCtrl.SetSize(wxSize(-1, lineHeight * 4)) - EVT_TEXT_ENTER(self, 1001, self._doEnter) + EVT_TEXT_ENTER(self, 1001, self._doEnter) - fonts = wxFontEnumerator() - fonts.EnumerateFacenames() - self.fontList = fonts.GetFacenames() - self.fontList.sort() + fonts = wxFontEnumerator() + fonts.EnumerateFacenames() + self.fontList = fonts.GetFacenames() + self.fontList.sort() - fontLabel = wxStaticText(self, -1, "Font:") - self._setFontOptions(fontLabel, weight=wxBOLD) + fontLabel = wxStaticText(self, -1, "Font:") + self._setFontOptions(fontLabel, weight=wxBOLD) - self.fontCombo = wxComboBox(self, -1, "", wxDefaultPosition, - wxDefaultSize, self.fontList, - style = wxCB_READONLY) - self.fontCombo.SetSelection(0) # Default to first available font. + self.fontCombo = wxComboBox(self, -1, "", wxDefaultPosition, + wxDefaultSize, self.fontList, + style = wxCB_READONLY) + self.fontCombo.SetSelection(0) # Default to first available font. - self.sizeList = ["8", "9", "10", "12", "14", "16", - "18", "20", "24", "32", "48", "72"] + self.sizeList = ["8", "9", "10", "12", "14", "16", + "18", "20", "24", "32", "48", "72"] - sizeLabel = wxStaticText(self, -1, "Size:") - self._setFontOptions(sizeLabel, weight=wxBOLD) + sizeLabel = wxStaticText(self, -1, "Size:") + self._setFontOptions(sizeLabel, weight=wxBOLD) - self.sizeCombo = wxComboBox(self, -1, "", wxDefaultPosition, - wxDefaultSize, self.sizeList, - style=wxCB_READONLY) - self.sizeCombo.SetSelection(3) # Default to 12 point text. + self.sizeCombo = wxComboBox(self, -1, "", wxDefaultPosition, + wxDefaultSize, self.sizeList, + style=wxCB_READONLY) + self.sizeCombo.SetSelection(3) # Default to 12 point text. - gap = wxLEFT | wxTOP | wxRIGHT + gap = wxLEFT | wxTOP | wxRIGHT - comboSizer = wxBoxSizer(wxHORIZONTAL) - comboSizer.Add(fontLabel, 0, gap | wxALIGN_CENTRE_VERTICAL, 5) - comboSizer.Add(self.fontCombo, 0, gap, 5) - comboSizer.Add(5, 5) # Spacer. - comboSizer.Add(sizeLabel, 0, gap | wxALIGN_CENTRE_VERTICAL, 5) - comboSizer.Add(self.sizeCombo, 0, gap, 5) + comboSizer = wxBoxSizer(wxHORIZONTAL) + comboSizer.Add(fontLabel, 0, gap | wxALIGN_CENTRE_VERTICAL, 5) + comboSizer.Add(self.fontCombo, 0, gap, 5) + comboSizer.Add(5, 5) # Spacer. + comboSizer.Add(sizeLabel, 0, gap | wxALIGN_CENTRE_VERTICAL, 5) + comboSizer.Add(self.sizeCombo, 0, gap, 5) - self.boldCheckbox = wxCheckBox(self, -1, "Bold") - self.italicCheckbox = wxCheckBox(self, -1, "Italic") - self.underlineCheckbox = wxCheckBox(self, -1, "Underline") + self.boldCheckbox = wxCheckBox(self, -1, "Bold") + self.italicCheckbox = wxCheckBox(self, -1, "Italic") + self.underlineCheckbox = wxCheckBox(self, -1, "Underline") - self._setFontOptions(self.boldCheckbox, weight=wxBOLD) - self._setFontOptions(self.italicCheckbox, style=wxITALIC) - self._setFontOptions(self.underlineCheckbox, underline=true) + self._setFontOptions(self.boldCheckbox, weight=wxBOLD) + self._setFontOptions(self.italicCheckbox, style=wxITALIC) + self._setFontOptions(self.underlineCheckbox, underline=True) - styleSizer = wxBoxSizer(wxHORIZONTAL) - styleSizer.Add(self.boldCheckbox, 0, gap, 5) - styleSizer.Add(self.italicCheckbox, 0, gap, 5) - styleSizer.Add(self.underlineCheckbox, 0, gap, 5) + styleSizer = wxBoxSizer(wxHORIZONTAL) + styleSizer.Add(self.boldCheckbox, 0, gap, 5) + styleSizer.Add(self.italicCheckbox, 0, gap, 5) + styleSizer.Add(self.underlineCheckbox, 0, gap, 5) - self.okButton = wxButton(self, wxID_OK, "OK") - self.cancelButton = wxButton(self, wxID_CANCEL, "Cancel") + self.okButton = wxButton(self, wxID_OK, "OK") + self.cancelButton = wxButton(self, wxID_CANCEL, "Cancel") - btnSizer = wxBoxSizer(wxHORIZONTAL) - btnSizer.Add(self.okButton, 0, gap, 5) - btnSizer.Add(self.cancelButton, 0, gap, 5) + btnSizer = wxBoxSizer(wxHORIZONTAL) + btnSizer.Add(self.okButton, 0, gap, 5) + btnSizer.Add(self.cancelButton, 0, gap, 5) - sizer = wxBoxSizer(wxVERTICAL) - sizer.Add(self.textCtrl, 1, gap | wxEXPAND, 5) - sizer.Add(10, 10) # Spacer. - sizer.Add(comboSizer, 0, gap | wxALIGN_CENTRE, 5) - sizer.Add(styleSizer, 0, gap | wxALIGN_CENTRE, 5) - sizer.Add(10, 10) # Spacer. - sizer.Add(btnSizer, 0, gap | wxALIGN_CENTRE, 5) + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(self.textCtrl, 1, gap | wxEXPAND, 5) + sizer.Add(10, 10) # Spacer. + sizer.Add(comboSizer, 0, gap | wxALIGN_CENTRE, 5) + sizer.Add(styleSizer, 0, gap | wxALIGN_CENTRE, 5) + sizer.Add(10, 10) # Spacer. + sizer.Add(btnSizer, 0, gap | wxALIGN_CENTRE, 5) - self.SetAutoLayout(true) - self.SetSizer(sizer) - sizer.Fit(self) + self.SetAutoLayout(True) + self.SetSizer(sizer) + sizer.Fit(self) - self.textCtrl.SetFocus() + self.textCtrl.SetFocus() def objectToDialog(self, obj): - """ Copy the properties of the given text object into the dialog box. - """ - self.textCtrl.SetValue(obj.getText()) - self.textCtrl.SetSelection(0, len(obj.getText())) + """ Copy the properties of the given text object into the dialog box. + """ + self.textCtrl.SetValue(obj.getText()) + self.textCtrl.SetSelection(0, len(obj.getText())) - for i in range(len(self.fontList)): - if self.fontList[i] == obj.getTextFont(): - self.fontCombo.SetSelection(i) - break + for i in range(len(self.fontList)): + if self.fontList[i] == obj.getTextFont(): + self.fontCombo.SetSelection(i) + break - for i in range(len(self.sizeList)): - if self.sizeList[i] == str(obj.getTextSize()): - self.sizeCombo.SetSelection(i) - break + for i in range(len(self.sizeList)): + if self.sizeList[i] == str(obj.getTextSize()): + self.sizeCombo.SetSelection(i) + break - self.boldCheckbox.SetValue(obj.getTextBoldface()) - self.italicCheckbox.SetValue(obj.getTextItalic()) - self.underlineCheckbox.SetValue(obj.getTextUnderline()) + self.boldCheckbox.SetValue(obj.getTextBoldface()) + self.italicCheckbox.SetValue(obj.getTextItalic()) + self.underlineCheckbox.SetValue(obj.getTextUnderline()) def dialogToObject(self, obj): - """ Copy the properties from the dialog box into the given text object. - """ - obj.setText(self.textCtrl.GetValue()) - obj.setTextFont(self.fontCombo.GetValue()) - obj.setTextSize(string.atoi(self.sizeCombo.GetValue())) - obj.setTextBoldface(self.boldCheckbox.GetValue()) - obj.setTextItalic(self.italicCheckbox.GetValue()) - obj.setTextUnderline(self.underlineCheckbox.GetValue()) - obj.fitToText() + """ Copy the properties from the dialog box into the given text object. + """ + obj.setText(self.textCtrl.GetValue()) + obj.setTextFont(self.fontCombo.GetValue()) + obj.setTextSize(int(self.sizeCombo.GetValue())) + obj.setTextBoldface(self.boldCheckbox.GetValue()) + obj.setTextItalic(self.italicCheckbox.GetValue()) + obj.setTextUnderline(self.underlineCheckbox.GetValue()) + obj.fitToText() # ====================== # == Private Routines == # ====================== def _setFontOptions(self, ctrl, family=None, pointSize=-1, - style=wxNORMAL, weight=wxNORMAL, - underline=false): - """ Change the font settings for the given control. + style=wxNORMAL, weight=wxNORMAL, + underline=False): + """ Change the font settings for the given control. - The meaning of the 'family', 'pointSize', 'style', 'weight' and - 'underline' parameters are the same as for the wxFont constructor. - If the family and/or pointSize isn't specified, the current default - value is used. - """ - if family == None: family = ctrl.GetFont().GetFamily() - if pointSize == -1: pointSize = ctrl.GetFont().GetPointSize() + The meaning of the 'family', 'pointSize', 'style', 'weight' and + 'underline' parameters are the same as for the wxFont constructor. + If the family and/or pointSize isn't specified, the current default + value is used. + """ + if family == None: family = ctrl.GetFont().GetFamily() + if pointSize == -1: pointSize = ctrl.GetFont().GetPointSize() - ctrl.SetFont(wxFont(pointSize, family, style, weight, underline)) - ctrl.SetSize(ctrl.GetBestSize()) # Adjust size to reflect font change. + ctrl.SetFont(wxFont(pointSize, family, style, weight, underline)) + ctrl.SetSize(ctrl.GetBestSize()) # Adjust size to reflect font change. def _doEnter(self, event): - """ Respond to the user hitting the ENTER key. + """ Respond to the user hitting the ENTER key. - We simulate clicking on the "OK" button. - """ - if self.Validate(): self.Show(false) + We simulate clicking on the "OK" button. + """ + if self.Validate(): self.Show(False) #---------------------------------------------------------------------------- class TextObjectValidator(wxPyValidator): """ This validator is used to ensure that the user has entered something - into the text object editor dialog's text field. + into the text object editor dialog's text field. """ def __init__(self): - """ Standard constructor. - """ - wxPyValidator.__init__(self) + """ Standard constructor. + """ + wxPyValidator.__init__(self) def Clone(self): - """ Standard cloner. + """ Standard cloner. - Note that every validator must implement the Clone() method. - """ - return TextObjectValidator() + Note that every validator must implement the Clone() method. + """ + return TextObjectValidator() def Validate(self, win): - """ Validate the contents of the given text control. - """ - textCtrl = wxPyTypeCast(self.GetWindow(), "wxTextCtrl") - text = textCtrl.GetValue() + """ Validate the contents of the given text control. + """ + textCtrl = wxPyTypeCast(self.GetWindow(), "wxTextCtrl") + text = textCtrl.GetValue() - if len(text) == 0: - wxMessageBox("A text object must contain some text!", "Error") - return false - else: - return true + if len(text) == 0: + wxMessageBox("A text object must contain some text!", "Error") + return False + else: + return True def TransferToWindow(self): - """ Transfer data from validator to window. + """ Transfer data from validator to window. - The default implementation returns false, indicating that an error - occurred. We simply return true, as we don't do any data transfer. - """ - return true # Prevent wxDialog from complaining. + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. + """ + return True # Prevent wxDialog from complaining. def TransferFromWindow(self): - """ Transfer data from window to validator. + """ Transfer data from window to validator. - The default implementation returns false, indicating that an error - occurred. We simply return true, as we don't do any data transfer. - """ - return true # Prevent wxDialog from complaining. + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. + """ + return True # Prevent wxDialog from complaining. #---------------------------------------------------------------------------- class ExceptionHandler: """ A simple error-handling class to write exceptions to a text file. - Under MS Windows, the standard DOS console window doesn't scroll and - closes as soon as the application exits, making it hard to find and - view Python exceptions. This utility class allows you to handle Python - exceptions in a more friendly manner. + Under MS Windows, the standard DOS console window doesn't scroll and + closes as soon as the application exits, making it hard to find and + view Python exceptions. This utility class allows you to handle Python + exceptions in a more friendly manner. """ def __init__(self): - """ Standard constructor. - """ - self._buff = "" - if os.path.exists("errors.txt"): - os.remove("errors.txt") # Delete previous error log, if any. + """ Standard constructor. + """ + self._buff = "" + if os.path.exists("errors.txt"): + os.remove("errors.txt") # Delete previous error log, if any. def write(self, s): - """ Write the given error message to a text file. + """ Write the given error message to a text file. - Note that if the error message doesn't end in a carriage return, we - have to buffer up the inputs until a carriage return is received. - """ - if (s[-1] != "\n") and (s[-1] != "\r"): - self._buff = self._buff + s - return + Note that if the error message doesn't end in a carriage return, we + have to buffer up the inputs until a carriage return is received. + """ + if (s[-1] != "\n") and (s[-1] != "\r"): + self._buff = self._buff + s + return - try: - s = self._buff + s - self._buff = "" + try: + s = self._buff + s + self._buff = "" - if s[:9] == "Traceback": - # Tell the user than an exception occurred. - wxMessageBox("An internal error has occurred.\nPlease " + \ - "refer to the 'errors.txt' file for details.", - "Error", wxOK | wxCENTRE | wxICON_EXCLAMATION) + if s[:9] == "Traceback": + # Tell the user than an exception occurred. + wxMessageBox("An internal error has occurred.\nPlease " + \ + "refer to the 'errors.txt' file for details.", + "Error", wxOK | wxCENTRE | wxICON_EXCLAMATION) - f = open("errors.txt", "a") - f.write(s) - f.close() - except: - pass # Don't recursively crash on errors. + f = open("errors.txt", "a") + f.write(s) + f.close() + except: + pass # Don't recursively crash on errors. #---------------------------------------------------------------------------- @@ -2589,32 +2589,32 @@ class SketchApp(wxApp): """ The main pySketch application object. """ def OnInit(self): - """ Initialise the application. - """ + """ Initialise the application. + """ wxInitAllImageHandlers() - global _docList - _docList = [] + global _docList + _docList = [] - if len(sys.argv) == 1: - # No file name was specified on the command line -> start with a - # blank document. - frame = DrawingFrame(None, -1, "Untitled") - frame.Centre() - frame.Show(TRUE) - _docList.append(frame) - else: - # Load the file(s) specified on the command line. - for arg in sys.argv[1:]: - fileName = os.path.join(os.getcwd(), arg) - if os.path.isfile(fileName): - frame = DrawingFrame(None, -1, - os.path.basename(fileName), - fileName=fileName) - frame.Show(TRUE) - _docList.append(frame) + if len(sys.argv) == 1: + # No file name was specified on the command line -> start with a + # blank document. + frame = DrawingFrame(None, -1, "Untitled") + frame.Centre() + frame.Show(True) + _docList.append(frame) + else: + # Load the file(s) specified on the command line. + for arg in sys.argv[1:]: + fileName = os.path.join(os.getcwd(), arg) + if os.path.isfile(fileName): + frame = DrawingFrame(None, -1, + os.path.basename(fileName), + fileName=fileName) + frame.Show(True) + _docList.append(frame) - return TRUE + return True #---------------------------------------------------------------------------- diff --git a/wxPython/samples/stxview/README.txt b/wxPython/samples/stxview/README.txt deleted file mode 100644 index e25e6c52c8..0000000000 --- a/wxPython/samples/stxview/README.txt +++ /dev/null @@ -1,3 +0,0 @@ - -This sample is a simple StructuredText viewer/editor. - diff --git a/wxPython/samples/stxview/StructuredText/ClassicDocumentClass.py b/wxPython/samples/stxview/StructuredText/ClassicDocumentClass.py deleted file mode 100644 index 69fc9c81bb..0000000000 --- a/wxPython/samples/stxview/StructuredText/ClassicDocumentClass.py +++ /dev/null @@ -1,684 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -import re, ST, STDOM -from string import split, join, replace, expandtabs, strip, find -from STletters import letters,lettpunc,punctuations - -StringType=type('') -ListType=type([]) - -class StructuredTextExample(ST.StructuredTextParagraph): - """Represents a section of document with literal text, as for examples""" - - def __init__(self, subs, **kw): - t=[]; a=t.append - for s in subs: a(s.getNodeValue()) - apply(ST.StructuredTextParagraph.__init__, - (self, join(t,'\n\n'), ()), - kw) - - def getColorizableTexts(self): return () - def setColorizableTexts(self, src): pass # never color examples - -class StructuredTextBullet(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextNumbered(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextDescriptionTitle(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextDescriptionBody(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextDescription(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - - def __init__(self, title, src, subs, **kw): - apply(ST.StructuredTextParagraph.__init__, (self, src, subs), kw) - self._title=title - - def getColorizableTexts(self): return self._title, self._src - def setColorizableTexts(self, src): self._title, self._src = src - - def getChildren(self): - return (StructuredTextDescriptionTitle(self._title), - StructuredTextDescriptionBody(self._src, self._subs)) - -class StructuredTextSectionTitle(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextSection(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - def __init__(self, src, subs=None, **kw): - apply(ST.StructuredTextParagraph.__init__, - (self, StructuredTextSectionTitle(src), subs), - kw) - - def getColorizableTexts(self): - return self._src.getColorizableTexts() - - def setColorizableTexts(self,src): - self._src.setColorizableTexts(src) - -# a StructuredTextTable holds StructuredTextRows -class StructuredTextTable(ST.StructuredTextDocument): - """ - rows is a list of lists containing tuples, which - represent the columns/cells in each rows. - EX - rows = [[('row 1:column1',1)],[('row2:column1',1)]] - """ - - def __init__(self, rows, src, subs, **kw): - apply(ST.StructuredTextDocument.__init__,(self,subs),kw) - self._rows = [] - for row in rows: - if row: - self._rows.append(StructuredTextRow(row,kw)) - - def getRows(self): - return [self._rows] - - def _getRows(self): - return self.getRows() - - def getColorizableTexts(self): - """ - return a tuple where each item is a column/cell's - contents. The tuple, result, will be of this format. - ("r1 col1", "r1=col2", "r2 col1", "r2 col2") - """ - - #result = () - result = [] - for row in self._rows: - for column in row.getColumns()[0]: - #result = result[:] + (column.getColorizableTexts(),) - result.append(column.getColorizableTexts()[0]) - return result - - def setColorizableTexts(self,texts): - """ - texts is going to a tuple where each item is the - result of being mapped to the colortext function. - Need to insert the results appropriately into the - individual columns/cells - """ - for row_index in range(len(self._rows)): - for column_index in range(len(self._rows[row_index]._columns)): - self._rows[row_index]._columns[column_index].setColorizableTexts((texts[0],)) - texts = texts[1:] - - def _getColorizableTexts(self): - return self.getColorizableTexts() - - def _setColorizableTexts(self): - return self.setColorizableTexts() - -# StructuredTextRow holds StructuredTextColumns -class StructuredTextRow(ST.StructuredTextDocument): - - def __init__(self,row,kw): - """ - row is a list of tuples, where each tuple is - the raw text for a cell/column and the span - of that cell/column". - EX - [('this is column one',1), ('this is column two',1)] - """ - - apply(ST.StructuredTextDocument.__init__,(self,[]),kw) - self._columns = [] - for column in row: - self._columns.append(StructuredTextColumn(column[0],column[1],kw)) - def getColumns(self): - return [self._columns] - - def _getColumns(self): - return [self._columns] - -# this holds the raw text of a table cell -class StructuredTextColumn(ST.StructuredTextParagraph): - """ - StructuredTextColumn is a cell/column in a table. - This contains the actual text of a column and is - thus a StructuredTextParagraph. A StructuredTextColumn - also holds the span of its column - """ - - def __init__(self,text,span,kw): - apply(ST.StructuredTextParagraph.__init__,(self,text,[]),kw) - self._span = span - - def getSpan(self): - return self._span - - def _getSpan(self): - return self._span - -class StructuredTextMarkup(STDOM.Element): - - def __init__(self, v, **kw): - self._value=v - self._attributes=kw.keys() - for k, v in kw.items(): setattr(self, k, v) - - def getChildren(self, type=type, lt=type([])): - v=self._value - if type(v) is not lt: v=[v] - return v - - def getColorizableTexts(self): return self._value, - def setColorizableTexts(self, v): self._value=v[0] - - def __repr__(self): - return '%s(%s)' % (self.__class__.__name__, `self._value`) - -class StructuredTextLiteral(StructuredTextMarkup): - def getColorizableTexts(self): return () - def setColorizableTexts(self, v): pass - -class StructuredTextEmphasis(StructuredTextMarkup): pass - -class StructuredTextStrong(StructuredTextMarkup): pass - -class StructuredTextInnerLink(StructuredTextMarkup): pass - -class StructuredTextNamedLink(StructuredTextMarkup): pass - -class StructuredTextUnderline(StructuredTextMarkup): pass - -class StructuredTextLink(StructuredTextMarkup): - "A simple hyperlink" - -class DocumentClass: - """ - Class instance calls [ex.=> x()] require a structured text - structure. Doc will then parse each paragraph in the structure - and will find the special structures within each paragraph. - Each special structure will be stored as an instance. Special - structures within another special structure are stored within - the 'top' structure - EX : '-underline this-' => would be turned into an underline - instance. '-underline **this**' would be stored as an underline - instance with a strong instance stored in its string - """ - - paragraph_types = [ - 'doc_bullet', - 'doc_numbered', - 'doc_description', - 'doc_header', - 'doc_table', - ] - - text_types = [ - 'doc_href', - 'doc_strong', - 'doc_emphasize', - 'doc_literal', - 'doc_inner_link', - 'doc_named_link', - 'doc_underline', - ] - - def __call__(self, doc): - if type(doc) is type(''): - doc=ST.StructuredText(doc) - doc.setSubparagraphs(self.color_paragraphs( - doc.getSubparagraphs())) - else: - doc=ST.StructuredTextDocument(self.color_paragraphs( - doc.getSubparagraphs())) - return doc - - def parse(self, raw_string, text_type, - type=type, st=type(''), lt=type([])): - - """ - Parse accepts a raw_string, an expr to test the raw_string, - and the raw_string's subparagraphs. - - Parse will continue to search through raw_string until - all instances of expr in raw_string are found. - - If no instances of expr are found, raw_string is returned. - Otherwise a list of substrings and instances is returned - """ - - tmp = [] # the list to be returned if raw_string is split - append=tmp.append - - if type(text_type) is st: text_type=getattr(self, text_type) - - while 1: - t = text_type(raw_string) - if not t: break - #an instance of expr was found - t, start, end = t - - if start: append(raw_string[0:start]) - - tt=type(t) - if tt is st: - # if we get a string back, add it to text to be parsed - raw_string = t+raw_string[end:len(raw_string)] - else: - if tt is lt: - # is we get a list, append it's elements - tmp[len(tmp):]=t - else: - # normal case, an object - append(t) - raw_string = raw_string[end:len(raw_string)] - - if not tmp: return raw_string # nothing found - - if raw_string: append(raw_string) - elif len(tmp)==1: return tmp[0] - - return tmp - - - def color_text(self, str, types=None): - """Search the paragraph for each special structure - """ - if types is None: types=self.text_types - - for text_type in types: - - if type(str) is StringType: - str = self.parse(str, text_type) - elif type(str) is ListType: - r=[]; a=r.append - for s in str: - if type(s) is StringType: - s=self.parse(s, text_type) - if type(s) is ListType: r[len(r):]=s - else: a(s) - else: - s.setColorizableTexts( - map(self.color_text, - s.getColorizableTexts() - )) - a(s) - str=r - else: - r=[]; a=r.append; color=self.color_text - for s in str.getColorizableTexts(): - color(s, (text_type,)) - a(s) - - str.setColorizableTexts(r) - - return str - - def color_paragraphs(self, raw_paragraphs, - type=type, sequence_types=(type([]), type(())), - st=type('')): - result=[] - for paragraph in raw_paragraphs: - - if paragraph.getNodeName() != 'StructuredTextParagraph': - result.append(paragraph) - continue - - for pt in self.paragraph_types: - if type(pt) is st: - # grab the corresponding function - pt=getattr(self, pt) - # evaluate the paragraph - r=pt(paragraph) - if r: - if type(r) not in sequence_types: - r=r, - new_paragraphs=r - for paragraph in new_paragraphs: - paragraph.setSubparagraphs(self.color_paragraphs(paragraph.getSubparagraphs())) - break - else: - new_paragraphs=ST.StructuredTextParagraph(paragraph.getColorizableTexts()[0], - self.color_paragraphs(paragraph.getSubparagraphs()), - indent=paragraph.indent), - # color the inline StructuredText types - # for each StructuredTextParagraph - for paragraph in new_paragraphs: - paragraph.setColorizableTexts( - map(self.color_text, - paragraph.getColorizableTexts() - )) - result.append(paragraph) - - return result - - def doc_table(self,paragraph, expr = re.compile('(\s*)([||]+)').match): - #print "paragraph=>", type(paragraph), paragraph, paragraph._src - text = paragraph.getColorizableTexts()[0] - m = expr(text) - - if not (m): - return None - rows = [] - - # initial split - for row in split(text,"\n"): - rows.append(row) - - # clean up the rows - for index in range(len(rows)): - tmp = [] - rows[index] = strip(rows[index]) - l = len(rows[index])-2 - result = split(rows[index][:l],"||") - for text in result: - if text: - tmp.append(text) - tmp.append('') - else: - tmp.append(text) - rows[index] = tmp - # remove trailing '''s - for index in range(len(rows)): - l = len(rows[index])-1 - rows[index] = rows[index][:l] - - result = [] - for row in rows: - cspan = 0 - tmp = [] - for item in row: - if item: - tmp.append((item,cspan)) - cspan = 0 - else: - cspan = cspan + 1 - result.append(tmp) - - subs = paragraph.getSubparagraphs() - indent=paragraph.indent - return StructuredTextTable(result,text,subs,indent=paragraph.indent) - - def doc_bullet(self, paragraph, expr = re.compile('\s*[-*o]\s+').match): - top=paragraph.getColorizableTexts()[0] - m=expr(top) - - if not m: - return None - - subs=paragraph.getSubparagraphs() - if top[-2:]=='::': - subs=[StructuredTextExample(subs)] - top=top[:-1] - return StructuredTextBullet(top[m.span()[1]:], subs, - indent=paragraph.indent, - bullet=top[:m.span()[1]] - ) - - def doc_numbered( - self, paragraph, - expr = re.compile('(\s*[%s]+\.)|(\s*[0-9]+\.)|(\s*[0-9]+\s+)' % letters).match): - - # This is the old expression. It had a nasty habit - # of grabbing paragraphs that began with a single - # letter word even if there was no following period. - - #expr = re.compile('\s*' - # '(([a-zA-Z]|[0-9]+|[ivxlcdmIVXLCDM]+)\.)*' - # '([a-zA-Z]|[0-9]+|[ivxlcdmIVXLCDM]+)\.?' - # '\s+').match): - - top=paragraph.getColorizableTexts()[0] - m=expr(top) - if not m: return None - subs=paragraph.getSubparagraphs() - if top[-2:]=='::': - subs=[StructuredTextExample(subs)] - top=top[:-1] - return StructuredTextNumbered(top[m.span()[1]:], subs, - indent=paragraph.indent, - number=top[:m.span()[1]]) - - def doc_description( - self, paragraph, - delim = re.compile('\s+--\s+').search, - nb=re.compile(r'[^\000- ]').search, - ): - - top=paragraph.getColorizableTexts()[0] - d=delim(top) - if not d: return None - start, end = d.span() - title=top[:start] - if find(title, '\n') >= 0: return None - if not nb(title): return None - d=top[start:end] - top=top[end:] - - subs=paragraph.getSubparagraphs() - if top[-2:]=='::': - subs=[StructuredTextExample(subs)] - top=top[:-1] - - return StructuredTextDescription( - title, top, subs, - indent=paragraph.indent, - delim=d) - - def doc_header(self, paragraph, - expr = re.compile('[ %s0-9.:/,-_*<>\?\'\"]+' % letters).match - ): - subs=paragraph.getSubparagraphs() - if not subs: return None - top=paragraph.getColorizableTexts()[0] - if not strip(top): return None - if top[-2:]=='::': - subs=StructuredTextExample(subs) - if strip(top)=='::': return subs - return ST.StructuredTextParagraph(top[:-1], - [subs], - indent=paragraph.indent, - level=paragraph.level) - - if find(top,'\n') >= 0: return None - return StructuredTextSection(top, subs, indent=paragraph.indent, level=paragraph.level) - - def doc_literal( - self, s, - expr=re.compile( - "(?:\s|^)'" # open - "([^ \t\n\r\f\v']|[^ \t\n\r\f\v'][^\n']*[^ \t\n\r\f\v'])" # contents - "'(?:\s|[,.;:!?]|$)" # close - ).search): - - r=expr(s) - if r: - start, end = r.span(1) - return (StructuredTextLiteral(s[start:end]), start-1, end+1) - else: - return None - - def doc_emphasize( - self, s, - expr = re.compile('\s*\*([ \n%s0-9]+)\*(?!\*|-)' % lettpunc).search - ): - - r=expr(s) - if r: - start, end = r.span(1) - return (StructuredTextEmphasis(s[start:end]), start-1, end+1) - else: - return None - - def doc_inner_link(self, - s, - expr1 = re.compile("\.\.\s*").search, - expr2 = re.compile("\[[%s0-9]+\]" % letters).search): - - # make sure we dont grab a named link - if expr2(s) and expr1(s): - start1,end1 = expr1(s).span() - start2,end2 = expr2(s).span() - if end1 == start2: - # uh-oh, looks like a named link - return None - else: - # the .. is somewhere else, ignore it - return (StructuredTextInnerLink(s[start2+1:end2-1]),start2,end2) - return None - elif expr2(s) and not expr1(s): - start,end = expr2(s).span() - return (StructuredTextInnerLink(s[start+1:end-1]),start,end) - return None - - def doc_named_link(self, - s, - expr=re.compile("(\.\.\s)(\[[%s0-9]+\])" % letters).search): - - result = expr(s) - if result: - start,end = result.span(2) - a,b = result.span(1) - str = strip(s[a:b]) + s[start:end] - str = s[start+1:end-1] - st,en = result.span() - return (StructuredTextNamedLink(str),st,en) - #return (StructuredTextNamedLink(s[st:en]),st,en) - return None - - def doc_underline(self, - s, - expr=re.compile("\s+\_([0-9%s ]+)\_" % lettpunc).search): - - result = expr(s) - if result: - start,end = result.span(1) - st,e = result.span() - return (StructuredTextUnderline(s[start:end]),st,e) - else: - return None - - def doc_strong(self, - s, - expr = re.compile('\s*\*\*([ \n%s0-9]+)\*\*' % lettpunc).search - ): - - r=expr(s) - if r: - start, end = r.span(1) - return (StructuredTextStrong(s[start:end]), start-2, end+2) - else: - return None - - def doc_href( - - self, s, - expr1 = re.compile("(\"[ %s0-9\n\-\.\,\;\(\)\/\:\/\*\']+\")(:)([a-zA-Z0-9\@\.\,\?\!\/\:\;\-\#\~]+)([,]*\s*)" % letters).search, - expr2 = re.compile('(\"[ %s0-9\n\-\.\:\;\(\)\/\*\']+\")([,]+\s+)([a-zA-Z0-9\@\.\,\?\!\/\:\;\-\#\~]+)(\s*)' % letters).search): - - r=expr1(s) or expr2(s) - - if r: - # need to grab the href part and the - # beginning part - - start,e = r.span(1) - name = s[start:e] - name = replace(name,'"','',2) - st,end = r.span(3) - - if s[end-1:end] in punctuations: end-=1 - link = s[st:end] - - # name is the href title, link is the target - # of the href - return (StructuredTextLink(name, href=link), - start, end) - - - else: - return None diff --git a/wxPython/samples/stxview/StructuredText/ClassicStructuredText.py b/wxPython/samples/stxview/StructuredText/ClassicStructuredText.py deleted file mode 100644 index b591558f73..0000000000 --- a/wxPython/samples/stxview/StructuredText/ClassicStructuredText.py +++ /dev/null @@ -1,625 +0,0 @@ -#! /usr/bin/env python -- # -*- python -*- -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## -'''Structured Text Manipulation - -Parse a structured text string into a form that can be used with -structured formats, like html. - -Structured text is text that uses indentation and simple -symbology to indicate the structure of a document. - -A structured string consists of a sequence of paragraphs separated by -one or more blank lines. Each paragraph has a level which is defined -as the minimum indentation of the paragraph. A paragraph is a -sub-paragraph of another paragraph if the other paragraph is the last -preceding paragraph that has a lower level. - -Special symbology is used to indicate special constructs: - -- A single-line paragraph whose immediately succeeding paragraphs are lower - level is treated as a header. - -- A paragraph that begins with a '-', '*', or 'o' is treated as an - unordered list (bullet) element. - -- A paragraph that begins with a sequence of digits followed by a - white-space character is treated as an ordered list element. - -- A paragraph that begins with a sequence of sequences, where each - sequence is a sequence of digits or a sequence of letters followed - by a period, is treated as an ordered list element. - -- A paragraph with a first line that contains some text, followed by - some white-space and '--' is treated as - a descriptive list element. The leading text is treated as the - element title. - -- Sub-paragraphs of a paragraph that ends in the word 'example' or the - word 'examples', or '::' is treated as example code and is output as is. - -- Text enclosed single quotes (with white-space to the left of the - first quote and whitespace or punctuation to the right of the second quote) - is treated as example code. - -- Text surrounded by '*' characters (with white-space to the left of the - first '*' and whitespace or punctuation to the right of the second '*') - is emphasized. - -- Text surrounded by '**' characters (with white-space to the left of the - first '**' and whitespace or punctuation to the right of the second '**') - is made strong. - -- Text surrounded by '_' underscore characters (with whitespace to the left - and whitespace or punctuation to the right) is made underlined. - -- Text encloded by double quotes followed by a colon, a URL, and concluded - by punctuation plus white space, *or* just white space, is treated as a - hyper link. For example: - - "Zope":http://www.zope.org/ is ... - - Is interpreted as '<a href="http://www.zope.org/">Zope</a> is ....' - Note: This works for relative as well as absolute URLs. - -- Text enclosed by double quotes followed by a comma, one or more spaces, - an absolute URL and concluded by punctuation plus white space, or just - white space, is treated as a hyper link. For example: - - "mail me", mailto:amos@digicool.com. - - Is interpreted as '<a href="mailto:amos@digicool.com">mail me</a>.' - -- Text enclosed in brackets which consists only of letters, digits, - underscores and dashes is treated as hyper links within the document. - For example: - - As demonstrated by Smith [12] this technique is quite effective. - - Is interpreted as '... by Smith <a href="#12">[12]</a> this ...'. Together - with the next rule this allows easy coding of references or end notes. - -- Text enclosed in brackets which is preceded by the start of a line, two - periods and a space is treated as a named link. For example: - - .. [12] "Effective Techniques" Smith, Joe ... - - Is interpreted as '<a name="12">[12]</a> "Effective Techniques" ...'. - Together with the previous rule this allows easy coding of references or - end notes. - - -- A paragraph that has blocks of text enclosed in '||' is treated as a - table. The text blocks correspond to table cells and table rows are - denoted by newlines. By default the cells are center aligned. A cell - can span more than one column by preceding a block of text with an - equivalent number of cell separators '||'. Newlines and '|' cannot - be a part of the cell text. For example: - - |||| **Ingredients** || - || *Name* || *Amount* || - ||Spam||10|| - ||Eggs||3|| - - is interpreted as:: - - <TABLE BORDER=1 CELLPADDING=2> - <TR> - <TD ALIGN=CENTER COLSPAN=2> <strong>Ingredients</strong> </TD> - </TR> - <TR> - <TD ALIGN=CENTER COLSPAN=1> <em>Name</em> </TD> - <TD ALIGN=CENTER COLSPAN=1> <em>Amount</em> </TD> - </TR> - <TR> - <TD ALIGN=CENTER COLSPAN=1>Spam</TD> - <TD ALIGN=CENTER COLSPAN=1>10</TD> - </TR> - <TR> - <TD ALIGN=CENTER COLSPAN=1>Eggs</TD> - <TD ALIGN=CENTER COLSPAN=1>3</TD> - </TR> - </TABLE> - -''' - -import ts_regex -import regex -from ts_regex import gsub -from string import split, join, strip, find -import string,re - - -def untabify(aString, - indent_tab=ts_regex.compile('\(\n\|^\)\( *\)\t').search_group, - ): - '''\ - Convert indentation tabs to spaces. - ''' - result='' - rest=aString - while 1: - ts_results = indent_tab(rest, (1,2)) - if ts_results: - start, grps = ts_results - lnl=len(grps[0]) - indent=len(grps[1]) - result=result+rest[:start] - rest="\n%s%s" % (' ' * ((indent/8+1)*8), - rest[start+indent+1+lnl:]) - else: - return result+rest - -def indent(aString, indent=2): - """Indent a string the given number of spaces""" - r=split(untabify(aString),'\n') - if not r: return '' - if not r[-1]: del r[-1] - tab=' '*level - return "%s%s\n" % (tab,join(r,'\n'+tab)) - -def reindent(aString, indent=2, already_untabified=0): - "reindent a block of text, so that the minimum indent is as given" - - if not already_untabified: aString=untabify(aString) - - l=indent_level(aString)[0] - if indent==l: return aString - - r=[] - - append=r.append - - if indent > l: - tab=' ' * (indent-l) - for s in split(aString,'\n'): append(tab+s) - else: - l=l-indent - for s in split(aString,'\n'): append(s[l:]) - - return join(r,'\n') - -def indent_level(aString, - indent_space=ts_regex.compile('\n\( *\)').search_group, - ): - '''\ - Find the minimum indentation for a string, not counting blank lines. - ''' - start=0 - text='\n'+aString - indent=l=len(text) - while 1: - - ts_results = indent_space(text, (1,2), start) - if ts_results: - start, grps = ts_results - i=len(grps[0]) - start=start+i+1 - if start < l and text[start] != '\n': # Skip blank lines - if not i: return (0,aString) - if i < indent: indent = i - else: - return (indent,aString) - -def paragraphs(list,start): - l=len(list) - level=list[start][0] - i=start+1 - while i < l and list[i][0] > level: i=i+1 - return i-1-start - -def structure(list): - if not list: return [] - i=0 - l=len(list) - r=[] - while i < l: - sublen=paragraphs(list,i) - i=i+1 - r.append((list[i-1][1],structure(list[i:i+sublen]))) - i=i+sublen - return r - - -class Table: - CELL=' <TD ALIGN=CENTER COLSPAN=%i>%s</TD>\n' - ROW=' <TR>\n%s </TR>\n' - TABLE='\n<TABLE BORDER=1 CELLPADDING=2>\n%s</TABLE>' - - def create(self,aPar, - td_reg=re.compile(r'[ \t\n]*\|\|([^\0x00|]*)') - ): - '''parses a table and returns nested list representing the - table''' - self.table=[] - text=filter(None,split(aPar,'\n')) - for line in text: - row=[] - while 1: - mo = td_reg.match(line) - if not mo: return 0 - pos = mo.end(1) - row.append(mo.group(1)) - if pos==len(line):break - line=line[pos:] - self.table.append(row) - return 1 - - def html(self): - '''Creates an HTML representation of table''' - htmltable=[] - for row in self.table: - htmlrow=[] - colspan=1 - for cell in row: - if cell=='': - colspan=colspan+1 - continue - else: - htmlrow.append(self.CELL%(colspan,cell)) - colspan=1 - htmltable.append(self.ROW%join(htmlrow,'')) - return self.TABLE%join(htmltable,'') - -table=Table() - -class StructuredText: - - """Model text as structured collection of paragraphs. - - Structure is implied by the indentation level. - - This class is intended as a base classes that do actual text - output formatting. - """ - - def __init__(self, aStructuredString, level=0, - paragraph_divider=regex.compile('\(\r?\n *\)+\r?\n'), - ): - '''Convert a structured text string into a structured text object. - - Aguments: - - aStructuredString -- The string to be parsed. - level -- The level of top level headings to be created. - ''' - - - pat = ' \"([%s0-9-_,./?=@~&]*)\":' % string.letters+ \ - '([-:%s0-9_,./?=@#~&]*?)' % string.letters + \ - '([.:?;] )' - - p_reg = re.compile(pat,re.M) - - aStructuredString = p_reg.sub(r'<a href="\2">\1</a>\3 ' , aStructuredString) - - pat = ' \"([%s0-9-_,./?=@~&]*)\", ' % string.letters+ \ - '([-:%s0-9_,./?=@#~&]*?)' % string.letters + \ - '([.:?;] )' - - p_reg = re.compile(pat,re.M) - - aStructuredString = p_reg.sub(r'<a href="\2">\1</a>\3 ' , aStructuredString) - - - protoless = find(aStructuredString, '<a href=":') - if protoless != -1: - aStructuredString = re.sub('<a href=":', '<a href="', - aStructuredString) - - self.level=level - paragraphs=ts_regex.split(untabify(aStructuredString), - paragraph_divider) - paragraphs=map(indent_level,paragraphs) - - self.structure=structure(paragraphs) - - - def __str__(self): - return str(self.structure) - - -ctag_prefix=r'([\x00- \\(]|^)' -ctag_suffix=r'([\x00- ,.:;!?\\)]|$)' -ctag_middle=r'[%s]([^\x00- %s][^%s]*[^\x00- %s]|[^%s])[%s]' -ctag_middl2=r'[%s][%s]([^\x00- %s][^%s]*[^\x00- %s]|[^%s])[%s][%s]' - -def ctag(s, - em=re.compile( - ctag_prefix+(ctag_middle % (("*",)*6) )+ctag_suffix), - strong=re.compile( - ctag_prefix+(ctag_middl2 % (("*",)*8))+ctag_suffix), - under=re.compile( - ctag_prefix+(ctag_middle % (("_",)*6) )+ctag_suffix), - code=re.compile( - ctag_prefix+(ctag_middle % (("\'",)*6))+ctag_suffix), - ): - if s is None: s='' - s=strong.sub(r'\1<strong>\2</strong>\3',s) - s=under.sub( r'\1<u>\2</u>\3',s) - s=code.sub( r'\1<code>\2</code>\3',s) - s=em.sub( r'\1<em>\2</em>\3',s) - return s - -class HTML(StructuredText): - - '''\ - An HTML structured text formatter. - '''\ - - def __str__(self, - extra_dl=re.compile("</dl>\n<dl>"), - extra_ul=re.compile("</ul>\n<ul>"), - extra_ol=re.compile("</ol>\n<ol>"), - ): - '''\ - Return an HTML string representation of the structured text data. - - ''' - s=self._str(self.structure,self.level) - s=extra_dl.sub('\n',s) - s=extra_ul.sub('\n',s) - s=extra_ol.sub('\n',s) - return s - - def ul(self, before, p, after): - if p: p="<p>%s</p>" % strip(ctag(p)) - return ('%s<ul><li>%s\n%s\n</li></ul>\n' - % (before,p,after)) - - def ol(self, before, p, after): - if p: p="<p>%s</p>" % strip(ctag(p)) - return ('%s<ol><li>%s\n%s\n</li></ol>\n' - % (before,p,after)) - - def dl(self, before, t, d, after): - return ('%s<dl><dt>%s</dt><dd><p>%s</p>\n%s\n</dd></dl>\n' - % (before,ctag(t),ctag(d),after)) - - def head(self, before, t, level, d): - if level > 0 and level < 6: - return ('%s<h%d>%s</h%d>\n%s\n' - % (before,level,strip(ctag(t)),level,d)) - - t="<p><strong>%s</strong></p>" % strip(ctag(t)) - return ('%s<dl><dt>%s\n</dt><dd>%s\n</dd></dl>\n' - % (before,t,d)) - - def normal(self,before,p,after): - return '%s<p>%s</p>\n%s\n' % (before,ctag(p),after) - - def pre(self,structure,tagged=0): - if not structure: return '' - if tagged: - r='' - else: - r='<PRE>\n' - for s in structure: - r="%s%s\n\n%s" % (r,html_quote(s[0]),self.pre(s[1],1)) - if not tagged: r=r+'</PRE>\n' - return r - - def table(self,before,table,after): - return '%s<p>%s</p>\n%s\n' % (before,ctag(table),after) - - def _str(self,structure,level, - # Static - bullet=ts_regex.compile('[ \t\n]*[o*-][ \t\n]+\([^\0]*\)' - ).match_group, - example=ts_regex.compile('[\0- ]examples?:[\0- ]*$' - ).search, - dl=ts_regex.compile('\([^\n]+\)[ \t]+--[ \t\n]+\([^\0]*\)' - ).match_group, - nl=ts_regex.compile('\n').search, - ol=ts_regex.compile( - '[ \t]*\(\([0-9]+\|[%s]+\)[.)]\)+[ \t\n]+\([^\0]*\|$\)' % string.letters - ).match_group, - olp=ts_regex.compile('[ \t]*([0-9]+)[ \t\n]+\([^\0]*\|$\)' - ).match_group, - ): - r='' - for s in structure: - - ts_results = bullet(s[0], (1,)) - if ts_results: - p = ts_results[1] - if s[0][-2:]=='::' and s[1]: ps=self.pre(s[1]) - else: ps=self._str(s[1],level) - r=self.ul(r,p,ps) - continue - ts_results = ol(s[0], (3,)) - if ts_results: - p = ts_results[1] - if s[0][-2:]=='::' and s[1]: ps=self.pre(s[1]) - else: ps=self._str(s[1],level) - r=self.ol(r,p,ps) - continue - ts_results = olp(s[0], (1,)) - if ts_results: - p = ts_results[1] - if s[0][-2:]=='::' and s[1]: ps=self.pre(s[1]) - else: ps=self._str(s[1],level) - r=self.ol(r,p,ps) - continue - ts_results = dl(s[0], (1,2)) - if ts_results: - t,d = ts_results[1] - r=self.dl(r,t,d,self._str(s[1],level)) - continue - if example(s[0]) >= 0 and s[1]: - # Introduce an example, using pre tags: - r=self.normal(r,s[0],self.pre(s[1])) - continue - if s[0][-2:]=='::' and s[1]: - # Introduce an example, using pre tags: - r=self.normal(r,s[0][:-1],self.pre(s[1])) - continue - if table.create(s[0]): - ## table support. - r=self.table(r,table.html(),self._str(s[1],level)) - continue - else: - - if nl(s[0]) < 0 and s[1] and s[0][-1:] != ':': - # Treat as a heading - t=s[0] - r=self.head(r,t,level, - self._str(s[1],level and level+1)) - else: - r=self.normal(r,s[0],self._str(s[1],level)) - return r - - -def html_quote(v, - character_entities=( - (re.compile('&'), '&amp;'), - (re.compile("<"), '&lt;' ), - (re.compile(">"), '&gt;' ), - (re.compile('"'), '&quot;') - )): #" - text=str(v) - for re,name in character_entities: - text=re.sub(name,text) - return text - -def html_with_references(text, level=1): - text = re.sub( - r'[\0\n]\.\. \[([0-9_%s-]+)\]' % string.letters, - r'\n <a name="\1">[\1]</a>', - text) - - text = re.sub( - r'([\x00- ,])\[(?P<ref>[0-9_%s-]+)\]([\x00- ,.:])' % string.letters, - r'\1<a href="#\2">[\2]</a>\3', - text) - - text = re.sub( - r'([\0- ,])\[([^]]+)\.html\]([\0- ,.:])', - r'\1<a href="\2.html">[\2]</a>\3', - text) - - return HTML(text,level=level) - - -def main(): - import sys, getopt - - opts,args=getopt.getopt(sys.argv[1:],'twl') - - if args: - [infile]=args - s=open(infile,'r').read() - else: - s=sys.stdin.read() - - if opts: - - if filter(lambda o: o[0]=='-w', opts): - print 'Content-Type: text/html\n' - - if filter(lambda o: o[0]=='-l', opts): - import locale - locale.setlocale(locale.LC_ALL,"") - - if s[:2]=='#!': - s=re.sub('^#![^\n]+','',s) - - mo = re.compile('([\0-\n]*\n)').match(s) - if mo is not None: - s = s[len(mo.group(0)) :] - - s=str(html_with_references(s)) - if s[:4]=='<h1>': - t=s[4:find(s,'</h1>')] - s='''<html><head><title>%s</title> - </head><body> - %s - </body></html> - ''' % (t,s) - print s - else: - print html_with_references(s) - -if __name__=="__main__": main() diff --git a/wxPython/samples/stxview/StructuredText/DocBookClass.py b/wxPython/samples/stxview/StructuredText/DocBookClass.py deleted file mode 100644 index 5a14f33d78..0000000000 --- a/wxPython/samples/stxview/StructuredText/DocBookClass.py +++ /dev/null @@ -1,332 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -import string -from string import join, split, find, lstrip - -class DocBookClass: - - element_types={ - '#text': '_text', - 'StructuredTextDocument': 'document', - 'StructuredTextParagraph': 'paragraph', - 'StructuredTextExample': 'example', - 'StructuredTextBullet': 'bullet', - 'StructuredTextNumbered': 'numbered', - 'StructuredTextDescription': 'description', - 'StructuredTextDescriptionTitle': 'descriptionTitle', - 'StructuredTextDescriptionBody': 'descriptionBody', - 'StructuredTextSection': 'section', - 'StructuredTextSectionTitle': 'sectionTitle', - 'StructuredTextLiteral': 'literal', - 'StructuredTextEmphasis': 'emphasis', - 'StructuredTextStrong': 'strong', - 'StructuredTextLink': 'link', - 'StructuredTextXref': 'xref', - 'StructuredTextSGML': 'sgml', - } - - def dispatch(self, doc, level, output): - getattr(self, self.element_types[doc.getNodeName()])(doc, level, output) - - def __call__(self, doc, level=1): - r=[] - self.dispatch(doc, level-1, r.append) - return join(r,'') - - def _text(self, doc, level, output): - if doc.getNodeName() == 'StructuredTextLiteral': - output(doc.getNodeValue()) - else: - output(lstrip(doc.getNodeValue())) - - def document(self, doc, level, output): - output('<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">\n') - output('<book>\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('<title>%s</title>' % children[0].getChildNodes()[0].getNodeValue()) - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</book>\n') - - def section(self, doc, level, output): - output('\n<section>\n') - children=doc.getChildNodes() - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level+1, output) - output('\n</section>\n') - - def sectionTitle(self, doc, level, output): - output('<title>') - for c in doc.getChildNodes(): - try: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - except: - print "failed", c.getNodeName(), c - output('</title>\n') - - def description(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('<variablelist>\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - if n is None or n.getNodeName() is not doc.getNodeName(): - output('</variablelist>\n') - - def descriptionTitle(self, doc, level, output): - output('<varlistentry><term>\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</term>\n') - - def descriptionBody(self, doc, level, output): - output('<listitem><para>\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</para></listitem>\n') - output('</varlistentry>\n') - - def bullet(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('<itemizedlist>\n') - output('<listitem><para>\n') - - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - output('</para></listitem>\n') - if n is None or n.getNodeName() is not doc.getNodeName(): - output('</itemizedlist>\n') - - def numbered(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('<orderedlist>\n') - output('<listitem><para>\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - output('</para></listitem>\n') - if n is None or n.getNodeName() is not doc.getNodeName(): - output('</orderedlist>\n') - - def example(self, doc, level, output): - i=0 - for c in doc.getChildNodes(): - if i==0: - output('<programlisting>\n<![CDATA[\n') - ## - ## eek. A ']]>' in your body will break this... - ## - output(prestrip(c.getNodeValue())) - output('\n]]></programlisting>\n') - else: - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - - def paragraph(self, doc, level, output): - output('<para>\n\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - output('</para>\n\n') - - def link(self, doc, level, output): - output('<ulink url="%s">' % doc.href) - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</ulink>') - - def emphasis(self, doc, level, output): - output('<emphasis>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</emphasis> ') - - def literal(self, doc, level, output): - output('<literal>') - for c in doc.getChildNodes(): - output(c.getNodeValue()) - output('</literal>') - - def strong(self, doc, level, output): - output('<emphasis>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</emphasis>') - - def xref(self, doc, level, output): - output('<xref linkend="%s"/>' % doc.getNodeValue()) - - def sgml(self, doc, level, output): - output(doc.getNodeValue()) - - -def prestrip(v): - v=string.replace(v, '\r\n', '\n') - v=string.replace(v, '\r', '\n') - v=string.replace(v, '\t', ' ') - lines=string.split(v, '\n') - indent=len(lines[0]) - for line in lines: - if not len(line): continue - i=len(line)-len(string.lstrip(line)) - if i < indent: - indent=i - nlines=[] - for line in lines: - nlines.append(line[indent:]) - return string.join(nlines, '\n') - - -class DocBookChapter(DocBookClass): - - def document(self, doc, level, output): - output('<chapter>\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('<title>%s</title>' % children[0].getChildNodes()[0].getNodeValue()) - for c in children[0].getChildNodes()[1:]: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</chapter>\n') - -ets = DocBookClass.element_types -ets.update({'StructuredTextImage': 'image'}) - -class DocBookChapterWithFigures(DocBookChapter): - - element_types = ets - - def image(self, doc, level, output): - if hasattr(doc, 'key'): - output('<figure id="%s"><title>%s</title>\n' % (doc.key, doc.getNodeValue()) ) - else: - output('<figure><title>%s</title>\n' % doc.getNodeValue()) -## for c in doc.getChildNodes(): -## getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('<graphic fileref="%s"></graphic>\n</figure>\n' % doc.href) - -class DocBookArticle(DocBookClass): - - def document(self, doc, level, output): - output('<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">\n') - output('<article>\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('<articleinfo>\n<title>%s</title>\n</articleinfo>\n' % - children[0].getChildNodes()[0].getNodeValue()) - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</article>\n') - - -class DocBookBook: - - def __init__(self, title=''): - self.title = title - self.chapters = [] - - def addChapter(self, chapter): - self.chapters.append(chapter) - - def read(self): - out = '<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">\n<book>\n' - out = out + '<title>%s</title>\n' % self.title - for chapter in self.chapters: - out = out + chapter + '\n</book>\n' - - return out - - def __str__(self): - return self.read() - - diff --git a/wxPython/samples/stxview/StructuredText/DocumentClass.py b/wxPython/samples/stxview/StructuredText/DocumentClass.py deleted file mode 100644 index 405f35e25d..0000000000 --- a/wxPython/samples/stxview/StructuredText/DocumentClass.py +++ /dev/null @@ -1,998 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -import re, ST, STDOM -from string import split, join, replace, expandtabs, strip, find, rstrip -from STletters import * - - -StringType=type('') -ListType=type([]) - -def flatten(obj, append): - if obj.getNodeType()==STDOM.TEXT_NODE: - append(obj.getNodeValue()) - else: - for child in obj.getChildNodes(): - flatten(child, append) - - -class StructuredTextExample(ST.StructuredTextParagraph): - """Represents a section of document with literal text, as for examples""" - - def __init__(self, subs, **kw): - t=[] - a=t.append - for s in subs: - flatten(s, a) - apply(ST.StructuredTextParagraph.__init__, - (self, join(t,'\n\n'), ()), - kw) - - def getColorizableTexts(self): return () - def setColorizableTexts(self, src): pass # never color examples - -class StructuredTextBullet(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextNumbered(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextDescriptionTitle(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextDescriptionBody(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextDescription(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - - def __init__(self, title, src, subs, **kw): - apply(ST.StructuredTextParagraph.__init__, (self, src, subs), kw) - self._title=title - - def getColorizableTexts(self): return self._title, self._src - def setColorizableTexts(self, src): self._title, self._src = src - - def getChildren(self): - return (StructuredTextDescriptionTitle(self._title), - StructuredTextDescriptionBody(self._src, self._subs)) - -class StructuredTextSectionTitle(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - -class StructuredTextSection(ST.StructuredTextParagraph): - """Represents a section of a document with a title and a body""" - def __init__(self, src, subs=None, **kw): - apply(ST.StructuredTextParagraph.__init__, - (self, StructuredTextSectionTitle(src), subs), - kw) - - def getColorizableTexts(self): - return self._src.getColorizableTexts() - - def setColorizableTexts(self,src): - self._src.setColorizableTexts(src) - -# a StructuredTextTable holds StructuredTextRows -class StructuredTextTable(ST.StructuredTextParagraph): - """ - rows is a list of lists containing tuples, which - represent the columns/cells in each rows. - EX - rows = [[('row 1:column1',1)],[('row2:column1',1)]] - """ - - def __init__(self, rows, src, subs, **kw): - apply(ST.StructuredTextParagraph.__init__,(self,subs),kw) - self._rows = [] - for row in rows: - if row: - self._rows.append(StructuredTextRow(row,kw)) - - def getRows(self): - return [self._rows] - - def _getRows(self): - return self.getRows() - - def getColumns(self): - result = [] - for row in self._rows: - result.append(row.getColumns()) - return result - - def _getColumns(self): - return self.getColumns() - - def setColumns(self,columns): - for index in range(len(self._rows)): - self._rows[index].setColumns(columns[index]) - - def _setColumns(self,columns): - return self.setColumns(columns) - - def getColorizableTexts(self): - """ - return a tuple where each item is a column/cell's - contents. The tuple, result, will be of this format. - ("r1 col1", "r1=col2", "r2 col1", "r2 col2") - """ - - result = [] - for row in self._rows: - for column in row.getColumns()[0]: - result.append(column.getColorizableTexts()[0]) - return result - - def setColorizableTexts(self,texts): - """ - texts is going to a tuple where each item is the - result of being mapped to the colortext function. - Need to insert the results appropriately into the - individual columns/cells - """ - for row_index in range(len(self._rows)): - for column_index in range(len(self._rows[row_index]._columns)): - self._rows[row_index]._columns[column_index].setColorizableTexts((texts[0],)) - texts = texts[1:] - - def _getColorizableTexts(self): - return self.getColorizableTexts() - - def _setColorizableTexts(self): - return self.setColorizableTexts() - -# StructuredTextRow holds StructuredTextColumns -class StructuredTextRow(ST.StructuredTextParagraph): - - def __init__(self,row,kw): - """ - row is a list of tuples, where each tuple is - the raw text for a cell/column and the span - of that cell/column. - EX - [('this is column one',1), ('this is column two',1)] - """ - - apply(ST.StructuredTextParagraph.__init__,(self,[]),kw) - - self._columns = [] - for column in row: - self._columns.append(StructuredTextColumn(column[0], - column[1], - column[2], - column[3], - column[4], - kw)) - - def getColumns(self): - return [self._columns] - - def _getColumns(self): - return [self._columns] - - def setColumns(self,columns): - self._columns = columns - - def _setColumns(self,columns): - return self.setColumns(columns) - -# this holds the text of a table cell -class StructuredTextColumn(ST.StructuredTextParagraph): - """ - StructuredTextColumn is a cell/column in a table. - A cell can hold multiple paragraphs. The cell - is either classified as a StructuredTextTableHeader - or StructuredTextTableData. - """ - - def __init__(self,text,span,align,valign,typ,kw): - apply(ST.StructuredTextParagraph.__init__,(self,text,[]),kw) - self._span = span - self._align = align - self._valign = valign - self._type = typ - - def getSpan(self): - return self._span - - def _getSpan(self): - return self._span - - def getAlign(self): - return self._align - - def _getAlign(self): - return self.getAlign() - - def getValign(self): - return self._valign - - def _getValign(self): - return self.getValign() - - def getType(self): - return self._type - - def _getType(self): - return self.getType() - -class StructuredTextTableHeader(ST.StructuredTextParagraph): pass - -class StructuredTextTableData(ST.StructuredTextParagraph): pass - -class StructuredTextMarkup(STDOM.Element): - - def __init__(self, v, **kw): - self._value=v - self._attributes=kw.keys() - for k, v in kw.items(): setattr(self, k, v) - - def getChildren(self, type=type, lt=type([])): - v=self._value - if type(v) is not lt: v=[v] - return v - - def getColorizableTexts(self): return self._value, - def setColorizableTexts(self, v): self._value=v[0] - - def __repr__(self): - return '%s(%s)' % (self.__class__.__name__, `self._value`) - -class StructuredTextLiteral(StructuredTextMarkup): - def getColorizableTexts(self): return () - def setColorizableTexts(self, v): pass - -class StructuredTextEmphasis(StructuredTextMarkup): pass - -class StructuredTextStrong(StructuredTextMarkup): pass - -class StructuredTextInnerLink(StructuredTextMarkup): pass - -class StructuredTextNamedLink(StructuredTextMarkup): pass - -class StructuredTextUnderline(StructuredTextMarkup): pass - -class StructuredTextSGML(StructuredTextMarkup): pass - -class StructuredTextLink(StructuredTextMarkup): pass - -class StructuredTextXref(StructuredTextMarkup): pass - -class DocumentClass: - """ - Class instance calls [ex.=> x()] require a structured text - structure. Doc will then parse each paragraph in the structure - and will find the special structures within each paragraph. - Each special structure will be stored as an instance. Special - structures within another special structure are stored within - the 'top' structure - EX : '-underline this-' => would be turned into an underline - instance. '-underline **this**' would be stored as an underline - instance with a strong instance stored in its string - """ - - paragraph_types = [ - 'doc_bullet', - 'doc_numbered', - 'doc_description', - 'doc_header', - 'doc_table', - ] - - #'doc_inner_link', - #'doc_named_link', - #'doc_underline', - text_types = [ - 'doc_sgml', - 'doc_href', - 'doc_strong', - 'doc_emphasize', - 'doc_literal', - 'doc_sgml', - 'doc_xref', - ] - - def __call__(self, doc): - if type(doc) is type(''): - doc=ST.StructuredText(doc) - doc.setSubparagraphs(self.color_paragraphs( - doc.getSubparagraphs())) - else: - doc=ST.StructuredTextDocument(self.color_paragraphs( - doc.getSubparagraphs())) - return doc - - def parse(self, raw_string, text_type, - type=type, st=type(''), lt=type([])): - - """ - Parse accepts a raw_string, an expr to test the raw_string, - and the raw_string's subparagraphs. - - Parse will continue to search through raw_string until - all instances of expr in raw_string are found. - - If no instances of expr are found, raw_string is returned. - Otherwise a list of substrings and instances is returned - """ - - tmp = [] # the list to be returned if raw_string is split - append=tmp.append - - if type(text_type) is st: text_type=getattr(self, text_type) - - while 1: - t = text_type(raw_string) - if not t: break - #an instance of expr was found - t, start, end = t - - if start: append(raw_string[0:start]) - - tt=type(t) - if tt is st: - # if we get a string back, add it to text to be parsed - raw_string = t+raw_string[end:len(raw_string)] - else: - if tt is lt: - # is we get a list, append it's elements - tmp[len(tmp):]=t - else: - # normal case, an object - append(t) - raw_string = raw_string[end:len(raw_string)] - - if not tmp: return raw_string # nothing found - - if raw_string: append(raw_string) - elif len(tmp)==1: return tmp[0] - - return tmp - - - def color_text(self, str, types=None): - """Search the paragraph for each special structure - """ - if types is None: types=self.text_types - - for text_type in types: - - if type(str) is StringType: - str = self.parse(str, text_type) - elif type(str) is ListType: - r=[]; a=r.append - for s in str: - if type(s) is StringType: - s=self.parse(s, text_type) - if type(s) is ListType: r[len(r):]=s - else: a(s) - else: - s.setColorizableTexts( - map(self.color_text, - s.getColorizableTexts() - )) - a(s) - str=r - else: - r=[]; a=r.append; color=self.color_text - for s in str.getColorizableTexts(): - color(s, (text_type,)) - a(s) - - str.setColorizableTexts(r) - - return str - - def color_paragraphs(self, raw_paragraphs, - type=type, sequence_types=(type([]), type(())), - st=type('')): - result=[] - for paragraph in raw_paragraphs: - if paragraph.getNodeName() != 'StructuredTextParagraph': - result.append(paragraph) - continue - - for pt in self.paragraph_types: - if type(pt) is st: - # grab the corresponding function - pt=getattr(self, pt) - # evaluate the paragraph - r=pt(paragraph) - if r: - if type(r) not in sequence_types: - r=r, - new_paragraphs=r - for paragraph in new_paragraphs: - paragraph.setSubparagraphs(self.color_paragraphs(paragraph.getSubparagraphs())) - break - else: - new_paragraphs=ST.StructuredTextParagraph(paragraph.getColorizableTexts()[0], - self.color_paragraphs(paragraph.getSubparagraphs()), - indent=paragraph.indent), - - # color the inline StructuredText types - # for each StructuredTextParagraph - for paragraph in new_paragraphs: - - if paragraph.getNodeName() is "StructuredTextTable": - cells = paragraph.getColumns() - text = paragraph.getColorizableTexts() - text = map(ST.StructuredText,text) - text = map(self.__call__,text) - for t in range(len(text)): - text[t] = text[t].getSubparagraphs() - paragraph.setColorizableTexts(text) - - paragraph.setColorizableTexts( - map(self.color_text, - paragraph.getColorizableTexts() - )) - result.append(paragraph) - - return result - - def doc_table(self, paragraph, expr = re.compile(r'\s*\|[-]+\|').match): - text = paragraph.getColorizableTexts()[0] - m = expr(text) - - subs = paragraph.getSubparagraphs() - - if not (m): - return None - rows = [] - - spans = [] - ROWS = [] - COLS = [] - indexes = [] - ignore = [] - - TDdivider = re.compile("[\-]+").match - THdivider = re.compile("[\=]+").match - col = re.compile('\|').search - innertable = re.compile('\|([-]+|[=]+)\|').search - - text = strip(text) - rows = split(text,'\n') - foo = "" - - for row in range(len(rows)): - rows[row] = strip(rows[row]) - - # have indexes store if a row is a divider - # or a cell part - for index in range(len(rows)): - tmpstr = rows[index][1:len(rows[index])-1] - if TDdivider(tmpstr): - indexes.append("TDdivider") - elif THdivider(tmpstr): - indexes.append("THdivider") - else: - indexes.append("cell") - - for index in range(len(indexes)): - if indexes[index] is "TDdivider" or indexes[index] is THdivider: - ignore = [] # reset ignore - #continue # skip dividers - - tmp = strip(rows[index]) # clean the row up - tmp = tmp[1:len(tmp)-1] # remove leading + trailing | - offset = 0 - - # find the start and end of inner - # tables. ignore everything between - if innertable(tmp): - tmpstr = strip(tmp) - while innertable(tmpstr): - start,end = innertable(tmpstr).span() - if not (start,end-1) in ignore: - ignore.append(start,end-1) - tmpstr = " " + tmpstr[end:] - - # find the location of column dividers - # NOTE: |'s in inner tables do not count - # as column dividers - if col(tmp): - while col(tmp): - bar = 1 # true if start is not in ignore - start,end = col(tmp).span() - - if not start+offset in spans: - for s,e in ignore: - if start+offset >= s or start+offset <= e: - bar = None - break - if bar: # start is clean - spans.append(start+offset) - if not bar: - foo = foo + tmp[:end] - tmp = tmp[end:] - offset = offset + end - else: - COLS.append((foo + tmp[0:start],start+offset)) - foo = "" - tmp = " " + tmp[end:] - offset = offset + start - if not offset+len(tmp) in spans: - spans.append(offset+len(tmp)) - COLS.append((foo + tmp,offset+len(tmp))) - foo = "" - ROWS.append(COLS) - COLS = [] - - spans.sort() - ROWS = ROWS[1:len(ROWS)] - - # find each column span - cols = [] - tmp = [] - - for row in ROWS: - for c in row: - tmp.append(c[1]) - cols.append(tmp) - tmp = [] - - cur = 1 - tmp = [] - C = [] - for col in cols: - for span in spans: - if not span in col: - cur = cur + 1 - else: - tmp.append(cur) - cur = 1 - C.append(tmp) - tmp = [] - - for index in range(len(C)): - for i in range(len(C[index])): - ROWS[index][i] = (ROWS[index][i][0],C[index][i]) - rows = ROWS - - # label things as either TableData or - # Table header - TD = [] - TH = [] - all = [] - for index in range(len(indexes)): - if indexes[index] is "TDdivider": - TD.append(index) - all.append(index) - if indexes[index] is "THdivider": - TH.append(index) - all.append(index) - TD = TD[1:] - dividers = all[1:] - #print "TD => ", TD - #print "TH => ", TH - #print "all => ", all, "\n" - - for div in dividers: - if div in TD: - index = all.index(div) - for rowindex in range(all[index-1],all[index]): - for i in range(len(rows[rowindex])): - rows[rowindex][i] = (rows[rowindex][i][0], - rows[rowindex][i][1], - "td") - else: - index = all.index(div) - for rowindex in range(all[index-1],all[index]): - for i in range(len(rows[rowindex])): - rows[rowindex][i] = (rows[rowindex][i][0], - rows[rowindex][i][1], - "th") - - # now munge the multi-line cells together - # as paragraphs - ROWS = [] - COLS = [] - for row in rows: - for index in range(len(row)): - if not COLS: - COLS = range(len(row)) - for i in range(len(COLS)): - COLS[i] = ["",1,""] - if TDdivider(row[index][0]) or THdivider(row[index][0]): - ROWS.append(COLS) - COLS = [] - else: - COLS[index][0] = COLS[index][0] + (row[index][0]) + "\n" - COLS[index][1] = row[index][1] - COLS[index][2] = row[index][2] - - # now that each cell has been munged together, - # determine the cell's alignment. - # Default is to center. Also determine the cell's - # vertical alignment, top, middle, bottom. Default is - # to middle - rows = [] - cols = [] - for row in ROWS: - for index in range(len(row)): - topindent = 0 - bottomindent = 0 - leftindent = 0 - rightindent = 0 - left = [] - right = [] - text = row[index][0] - text = split(text,'\n') - text = text[:len(text)-1] - align = "" - valign = "" - for t in text: - t = strip(t) - if not t: - topindent = topindent + 1 - else: - break - text.reverse() - for t in text: - t = strip(t) - if not t: - bottomindent = bottomindent + 1 - else: - break - text.reverse() - tmp = join(text[topindent:len(text)-bottomindent],"\n") - pars = re.compile("\n\s*\n").split(tmp) - for par in pars: - if index > 0: - par = par[1:] - par = split(par, ' ') - for p in par: - if not p: - leftindent = leftindent+1 - else: - break - left.append(leftindent) - leftindent = 0 - par.reverse() - for p in par: - if not p: - rightindent = rightindent + 1 - else: - break - right.append(rightindent) - rightindent = 0 - left.sort() - right.sort() - - if topindent == bottomindent: - valign="middle" - elif topindent < 1: - valign="top" - elif bottomindent < 1: - valign="bottom" - else: - valign="middle" - - if left[0] < 1: - align = "left" - elif right[0] < 1: - align = "right" - elif left[0] > 1 and right[0] > 1: - align="center" - else: - align="left" - - cols.append(row[index][0],row[index][1],align,valign,row[index][2]) - rows.append(cols) - cols = [] - return StructuredTextTable(rows,text,subs,indent=paragraph.indent) - - def doc_bullet(self, paragraph, expr = re.compile(r'\s*[-*o]\s+').match): - top=paragraph.getColorizableTexts()[0] - m=expr(top) - - if not m: - return None - - subs=paragraph.getSubparagraphs() - if top[-2:]=='::': - subs=[StructuredTextExample(subs)] - top=top[:-1] - return StructuredTextBullet(top[m.span()[1]:], subs, - indent=paragraph.indent, - bullet=top[:m.span()[1]] - ) - - def doc_numbered( - self, paragraph, - expr = re.compile(r'(\s*[%s]+\.)|(\s*[0-9]+\.)|(\s*[0-9]+\s+)' % letters).match): - - # This is the old expression. It had a nasty habit - # of grabbing paragraphs that began with a single - # letter word even if there was no following period. - - #expr = re.compile('\s*' - # '(([a-zA-Z]|[0-9]+|[ivxlcdmIVXLCDM]+)\.)*' - # '([a-zA-Z]|[0-9]+|[ivxlcdmIVXLCDM]+)\.?' - # '\s+').match): - - top=paragraph.getColorizableTexts()[0] - m=expr(top) - if not m: return None - subs=paragraph.getSubparagraphs() - if top[-2:]=='::': - subs=[StructuredTextExample(subs)] - top=top[:-1] - return StructuredTextNumbered(top[m.span()[1]:], subs, - indent=paragraph.indent, - number=top[:m.span()[1]]) - - def doc_description( - self, paragraph, - delim = re.compile(r'\s+--\s+').search, - nb=re.compile(r'[^\000- ]').search, - ): - - top=paragraph.getColorizableTexts()[0] - d=delim(top) - if not d: return None - start, end = d.span() - title=top[:start] - if find(title, '\n') >= 0: return None - if not nb(title): return None - d=top[start:end] - top=top[end:] - - subs=paragraph.getSubparagraphs() - if top[-2:]=='::': - subs=[StructuredTextExample(subs)] - top=top[:-1] - - return StructuredTextDescription( - title, top, subs, - indent=paragraph.indent, - delim=d) - - def doc_header(self, paragraph, - expr = re.compile(r'[ %s0-9.:/,-_*<>\?\'\"]+' % letters).match - ): - subs=paragraph.getSubparagraphs() - if not subs: return None - top=paragraph.getColorizableTexts()[0] - if not strip(top): return None - if top[-2:]=='::': - subs=StructuredTextExample(subs) - if strip(top)=='::': return subs - return ST.StructuredTextParagraph( - top[:-1], [subs], indent=paragraph.indent) - - if find(top,'\n') >= 0: return None - return StructuredTextSection(top, subs, indent=paragraph.indent) - - def doc_literal( - self, s, - expr=re.compile( - r"(?:\s|^)'" # open - r"([^ \t\n\r\f\v']|[^ \t\n\r\f\v'][^\n']*[^ \t\n\r\f\v'])" # contents - r"'(?:\s|[,.;:!?]|$)" # close - ).search): - - r=expr(s) - if r: - start, end = r.span(1) - return (StructuredTextLiteral(s[start:end]), start-1, end+1) - else: - return None - - def doc_emphasize( - self, s, - expr = re.compile(r'\s*\*([ \n%s0-9]+)\*(?!\*|-)' % lettpunc).search - ): - - r=expr(s) - if r: - start, end = r.span(1) - return (StructuredTextEmphasis(s[start:end]), start-1, end+1) - else: - return None - - def doc_inner_link(self, - s, - expr1 = re.compile(r"\.\.\s*").search, - expr2 = re.compile(r"\[[%s0-9]+\]" % letters ).search): - - # make sure we dont grab a named link - if expr2(s) and expr1(s): - start1,end1 = expr1(s).span() - start2,end2 = expr2(s).span() - if end1 == start2: - # uh-oh, looks like a named link - return None - else: - # the .. is somewhere else, ignore it - return (StructuredTextInnerLink(s[start2+1,end2-1],start2,end2)) - return None - elif expr2(s) and not expr1(s): - start,end = expr2(s).span() - return (StructuredTextInnerLink(s[start+1:end-1]),start,end) - return None - - def doc_named_link(self, - s, - expr=re.compile(r"(\.\.\s)(\[[%s0-9]+\])" % letters).search): - - result = expr(s) - if result: - start,end = result.span(2) - a,b = result.span(1) - str = strip(s[a:b]) + s[start:end] - st,en = result.span() - return (StructuredTextNamedLink(str),st,en) - #return (StructuredTextNamedLink(s[st:en]),st,en) - return None - - def doc_underline(self, - s, - expr=re.compile(r"\s+\_([%s0-9\s]+)\_" % lettpunc).search): - - result = expr(s) - if result: - start,end = result.span(1) - st,e = result.span() - return (StructuredTextUnderline(s[start:end]),st,e) - else: - return None - - def doc_strong(self, - s, - expr = re.compile(r'\s*\*\*([ \n%s0-9]+)\*\*' % lettpunc).search - ): - - r=expr(s) - if r: - start, end = r.span(1) - return (StructuredTextStrong(s[start:end]), start-2, end+2) - else: - return None - - ## Some constants to make the doc_href() regex easier to read. - _DQUOTEDTEXT = r'("[%s0-9\n\-\.\,\;\(\)\/\:\/\*\']+")' % letters ## double quoted text - _URL_AND_PUNC = r'([%s0-9\@\.\,\?\!\/\:\;\-\#\~]+)' % letters - _SPACES = r'(\s*)' - - def doc_href(self, s, - expr1 = re.compile(_DQUOTEDTEXT + "(:)" + _URL_AND_PUNC + _SPACES).search, - expr2 = re.compile(_DQUOTEDTEXT + r'(\,\s+)' + _URL_AND_PUNC + _SPACES).search): - - punctuation = re.compile(r"[\,\.\?\!\;]+").match - r=expr1(s) or expr2(s) - - if r: - # need to grab the href part and the - # beginning part - - start,e = r.span(1) - name = s[start:e] - name = replace(name,'"','',2) - #start = start + 1 - st,end = r.span(3) - if punctuation(s[end-1:end]): - end = end -1 - link = s[st:end] - #end = end - 1 - - # name is the href title, link is the target - # of the href - return (StructuredTextLink(name, href=link), - start, end) - - #return (StructuredTextLink(s[start:end], href=s[start:end]), - # start, end) - else: - return None - - def doc_sgml(self,s,expr=re.compile(r"\<[%s0-9\.\=\'\"\:\/\-\#\+\s\*]+\>" % letters).search): - """ - SGML text is ignored and outputed as-is - """ - r = expr(s) - if r: - start,end = r.span() - text = s[start:end] - return (StructuredTextSGML(text),start,end) - - - def doc_xref(self, s, - expr = re.compile('\[([%s0-9\-.:/;,\n\~]+)\]' % letters).search - ): - r = expr(s) - if r: - start, end = r.span(1) - return (StructuredTextXref(s[start:end]), start-1, end+1) - else: - return None - - - - diff --git a/wxPython/samples/stxview/StructuredText/DocumentWithImages.py b/wxPython/samples/stxview/StructuredText/DocumentWithImages.py deleted file mode 100644 index ac73abf307..0000000000 --- a/wxPython/samples/stxview/StructuredText/DocumentWithImages.py +++ /dev/null @@ -1,134 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -import re, ST, STDOM -from string import split, join, replace, expandtabs, strip, find - -from DocumentClass import * - -class StructuredTextImage(StructuredTextMarkup): - "A simple embedded image" - -class DocumentWithImages(DocumentClass): - """ - - """ - - - text_types = [ - 'doc_img', - ] + DocumentClass.text_types - - - def doc_img( - self, s, - expr1=re.compile('\"([ _a-zA-Z0-9*.:/;,\-\n\~]+)\":img:([a-zA-Z0-9\-.:/;,\n\~]+)').search, - expr2=re.compile('\"([ _a-zA-Z0-9*.:/;,\-\n\~]+)\":img:([a-zA-Z0-9\-.:/;,\n\~]+):([a-zA-Z0-9\-.:/;,\n\~]+)').search - ): - - - r = expr2(s) - if r: - startt, endt = r.span(1) - startk, endk = r.span(2) - starth, endh = r.span(3) - start, end = r.span() - return (StructuredTextImage(s[startt:endt], href=s[starth:endh], key=s[startk:endk]), - start, end) - - - else: - - r=expr1(s) - - if r: - startt, endt = r.span(1) - starth, endh = r.span(2) - start, end = r.span() - return (StructuredTextImage(s[startt:endt], href=s[starth:endh]), - start, end) - - return None - diff --git a/wxPython/samples/stxview/StructuredText/HTMLClass.py b/wxPython/samples/stxview/StructuredText/HTMLClass.py deleted file mode 100644 index 951aec4c97..0000000000 --- a/wxPython/samples/stxview/StructuredText/HTMLClass.py +++ /dev/null @@ -1,307 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -from string import join, split, find -from cgi import escape -import re, sys, ST - -class HTMLClass: - - element_types={ - '#text': '_text', - 'StructuredTextDocument': 'document', - 'StructuredTextParagraph': 'paragraph', - 'StructuredTextExample': 'example', - 'StructuredTextBullet': 'bullet', - 'StructuredTextNumbered': 'numbered', - 'StructuredTextDescription': 'description', - 'StructuredTextDescriptionTitle': 'descriptionTitle', - 'StructuredTextDescriptionBody': 'descriptionBody', - 'StructuredTextSection': 'section', - 'StructuredTextSectionTitle': 'sectionTitle', - 'StructuredTextLiteral': 'literal', - 'StructuredTextEmphasis': 'emphasis', - 'StructuredTextStrong': 'strong', - 'StructuredTextLink': 'link', - 'StructuredTextXref': 'xref', - 'StructuredTextInnerLink':'innerLink', - 'StructuredTextNamedLink':'namedLink', - 'StructuredTextUnderline':'underline', - 'StructuredTextTable':'table', - 'StructuredTextSGML':'sgml', - } - - def dispatch(self, doc, level, output): - getattr(self, self.element_types[doc.getNodeName()])(doc, level, output) - - def __call__(self, doc, level=1): - r=[] - self.dispatch(doc, level-1, r.append) - return join(r,'') - - def _text(self, doc, level, output): - output(doc.getNodeValue()) - - def document(self, doc, level, output): - output('<html>\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('<head>\n<title>%s</title>\n</head>\n' % - children[0].getChildNodes()[0].getNodeValue()) - output('<body>\n') - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</body>\n') - output('</html>\n') - - def section(self, doc, level, output): - children=doc.getChildNodes() - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level+1, output) - - def sectionTitle(self, doc, level, output): - output('<h%d>' % (level)) - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</h%d>\n' % (level)) - - def description(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('<dl>\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - if n is None or n.getNodeName() is not doc.getNodeName(): - output('</dl>\n') - - def descriptionTitle(self, doc, level, output): - output('<dt>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</dt>\n') - - def descriptionBody(self, doc, level, output): - output('<dd>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</dd>\n') - - def bullet(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('\n<ul>\n') - output('<li>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - output('</li>\n') - if n is None or n.getNodeName() is not doc.getNodeName(): - output('\n</ul>\n') - - def numbered(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('\n<ol>\n') - output('<li>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - output('</li>\n') - if n is None or n.getNodeName() is not doc.getNodeName(): - output('\n</ol>\n') - - def example(self, doc, level, output): - i=0 - for c in doc.getChildNodes(): - if i==0: - output('\n<pre>\n') - output(escape(c.getNodeValue())) - output('\n</pre>\n') - else: - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - - def paragraph(self, doc, level, output): - i=0 - output('<p>') - for c in doc.getChildNodes(): - if c.getNodeName() in ['StructuredTextParagraph']: - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - else: - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - output('</p>\n') - - def link(self, doc, level, output): - output('<a href="%s">' % doc.href) - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</a>') - - def emphasis(self, doc, level, output): - output('<em>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</em>') - - def literal(self, doc, level, output): - output('<code>') - for c in doc.getChildNodes(): - output(escape(c.getNodeValue())) - output('</code>') - - def strong(self, doc, level, output): - output('<strong>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</strong>') - - def underline(self, doc, level, output): - output("<u>") - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output("</u>") - - def innerLink(self, doc, level, output): - output('<a href="#'); - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('">[') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output(']</a>') - - def namedLink(self, doc, level, output): - output('<a name="') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('">[') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output(']</a>') - - def sgml(self,doc,level,output): - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - - def xref(self, doc, level, output): - val = doc.getNodeValue() - output('<a href="#%s">[%s]</a>' % (val, val) ) - - def table(self,doc,level,output): - """ - A StructuredTextTable holds StructuredTextRow(s) which - holds StructuredTextColumn(s). A StructuredTextColumn - is a type of StructuredTextParagraph and thus holds - the actual data. - """ - output("<table border=1 cellpadding=2>\n") - for row in doc.getRows()[0]: - output("<tr>\n") - for column in row.getColumns()[0]: - if hasattr(column,"getAlign"): - str = "<%s colspan=%s align=%s valign=%s>" % (column.getType(), - column.getSpan(), - column.getAlign(), - column.getValign()) - else: - str = "<td colspan=%s>" % column.getSpan() - output(str) - for c in column.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - if hasattr(column,"getType"): - output("</"+column.getType()+">\n") - else: - output("</td>\n") - output("</tr>\n") - output("</table>\n") - - - - - diff --git a/wxPython/samples/stxview/StructuredText/HTMLWithImages.py b/wxPython/samples/stxview/StructuredText/HTMLWithImages.py deleted file mode 100644 index 2b25a8891c..0000000000 --- a/wxPython/samples/stxview/StructuredText/HTMLWithImages.py +++ /dev/null @@ -1,128 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -from string import join, split, find -import re, sys, ST -import time - -from HTMLClass import HTMLClass - -ets = HTMLClass.element_types -ets.update({'StructuredTextImage': 'image'}) - -class HTMLWithImages(HTMLClass): - - element_types = ets - - def document(self, doc, level, output): - output('<html>\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('<head>\n<title>%s</title>\n</head>\n' % - children[0].getChildNodes()[0].getNodeValue()) - output('<body bgcolor="#FFFFFF">\n') - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</body>\n') - output('</html>\n') - - def image(self, doc, level, output): - if hasattr(doc, 'key'): - output('<a name="%s"></a>\n' % doc.key) - output('<img src="%s" alt="%s">\n' % (doc.href, doc.getNodeValue())) - if doc.getNodeValue() and hasattr(doc, 'key'): - output('<p><b>Figure %s</b> %s</p>\n' % (doc.key, doc.getNodeValue())) - - def xref(self, doc, level, output): - val = doc.getNodeValue() - output('<a href="#%s">Figure %s</a>' % (val, val) ) - - - - - - - diff --git a/wxPython/samples/stxview/StructuredText/ST.py b/wxPython/samples/stxview/StructuredText/ST.py deleted file mode 100644 index 3917adcaa8..0000000000 --- a/wxPython/samples/stxview/StructuredText/ST.py +++ /dev/null @@ -1,283 +0,0 @@ -import re, STDOM -from string import split, join, replace, expandtabs, strip, find - -##################################################################### -# Updated functions # -##################################################################### - -def indention(str,front = re.compile("^\s+").match): - """ - Convert all tabs to the appropriate number of spaces. - Find the number of leading spaces. If none, return 0 - """ - - if front(str): - start,end = front(str).span() - return end-start-1 - else: - return 0 # no leading spaces - -def insert(struct, top, level): - """ - find what will be the parant paragraph of - a sentence and return that paragraph's - sub-paragraphs. The new paragraph will be - appended to those sub-paragraphs - """ - #print "struct", struct, top-1 - if not top-1 in range(len(struct)): - if struct: - return struct[len(struct)-1].getSubparagraphs() - return struct - run = struct[top-1] - i = 0 - while i+1 < level: - run = run.getSubparagraphs()[len(run.getSubparagraphs())-1] - i = i + 1 - #print "parent for level ", level, " was => ", run.getColorizableTexts() - return run.getSubparagraphs() - -def display(struct): - """ - runs through the structure and prints out - the paragraphs. If the insertion works - correctly, display's results should mimic - the orignal paragraphs. - """ - - if struct.getColorizableTexts(): - print join(struct.getColorizableTexts()),"\n" - if struct.getSubparagraphs(): - for x in struct.getSubparagraphs(): - display(x) - -def display2(struct): - """ - runs through the structure and prints out - the paragraphs. If the insertion works - correctly, display's results should mimic - the orignal paragraphs. - """ - - if struct.getNodeValue(): - print struct.getNodeValue(),"\n" - if struct.getSubparagraphs(): - for x in struct.getSubparagraphs(): - display(x) - -def findlevel(levels,indent): - """ - remove all level information of levels - with a greater level of indentation. - Then return which level should insert this - paragraph - """ - - keys = levels.keys() - for key in keys: - if levels[key] > indent: - del(levels[key]) - keys = levels.keys() - if not(keys): - return 0 - else: - for key in keys: - if levels[key] == indent: - return key - highest = 0 - for key in keys: - if key > highest: - highest = key - return highest-1 - -##################################################################### - -# Golly, the capitalization of this function always makes me think it's a class -def StructuredText(paragraphs, paragraph_delimiter=re.compile('\n\s*\n')): - """ - StructuredText accepts paragraphs, which is a list of - lines to be parsed. StructuredText creates a structure - which mimics the structure of the paragraphs. - Structure => [paragraph,[sub-paragraphs]] - """ - - currentlevel = 0 - currentindent = 0 - levels = {0:0} - level = 0 # which header are we under - struct = [] # the structure to be returned - run = struct - - paragraphs = filter( - strip, - paragraph_delimiter.split(expandtabs('\n\n'+paragraphs+'\n\n')) - ) - - if not paragraphs: return [] - - ind = [] # structure based on indention levels - for paragraph in paragraphs: - ind.append([indention(paragraph), paragraph]) - - currentindent = indention(paragraphs[0]) - levels[0] = currentindent - - ############################################################# - # updated # - ############################################################# - - for indent,paragraph in ind : - if indent == 0: - level = level + 1 - currentlevel = 0 - currentindent = 0 - levels = {0:0} - struct.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel)) - elif indent > currentindent: - currentlevel = currentlevel + 1 - currentindent = indent - levels[currentlevel] = indent - run = insert(struct,level,currentlevel) - run.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel)) - elif indent < currentindent: - result = findlevel(levels,indent) - if result > 0: - currentlevel = result - currentindent = indent - if not level: - struct.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel)) - else: - run = insert(struct,level,currentlevel) - run.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel)) - else: - if insert(struct,level,currentlevel): - run = insert(struct,level,currentlevel) - else: - run = struct - currentindet = indent - run.append(StructuredTextParagraph(paragraph, indent=indent, level=currentlevel)) - - return StructuredTextDocument(struct) - -Basic = StructuredText - -class StructuredTextParagraph(STDOM.Element): - - indent=0 - - def __init__(self, src, subs=None, **kw): - if subs is None: subs=[] - self._src=src - self._subs=list(subs) - - self._attributes=kw.keys() - for k, v in kw.items(): setattr(self, k, v) - - def getChildren(self, type=type, lt=type([])): - src=self._src - if type(src) is not lt: src=[src] - return src+self._subs - - def getAttribute(self, name): - return getattr(self, name, None) - - def getAttributeNode(self, name): - if hasattr(self, name): - return STDOM.Attr(name, getattr(self, name)) - - def getAttributes(self): - d={} - for a in self._attributes: - d[a]=getattr(self, a, '') - return STDOM.NamedNodeMap(d) - - def getSubparagraphs(self): - return self._subs - - def setSubparagraphs(self, subs): - self._subs=subs - - def getColorizableTexts(self): - return (self._src,) - - def setColorizableTexts(self, src): - self._src=src[0] - - def __repr__(self): - r=[]; a=r.append - a((' '*(self.indent or 0))+ - ('%s(' % self.__class__.__name__) - +str(self._src)+', [' - ) - for p in self._subs: a(`p`) - a((' '*(self.indent or 0))+'])') - return join(r,'\n') - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_Children(self, type=type, lt=type([])): - return self.getChildren(type,lt) - - def _get_Attribute(self, name): - return self.getAttribute(name) - - def _get_AttributeNode(self, name): - return self.getAttributeNode(name) - - def _get_Attributes(self): - return self.getAttributes() - - def _get_Subparagraphs(self): - return self.getSubparagraphs() - - def _set_Subparagraphs(self, subs): - return self.setSubparagraphs(subs) - - def _get_ColorizableTexts(self): - return self.getColorizableTexts() - - def _set_ColorizableTexts(self, src): - return self.setColorizableTexts(src) - -class StructuredTextDocument(StructuredTextParagraph): - """ - A StructuredTextDocument holds StructuredTextParagraphs - as its subparagraphs. - """ - _attributes=() - - def __init__(self, subs=None, **kw): - apply(StructuredTextParagraph.__init__, - (self, '', subs), - kw) - - def getChildren(self): - return self._subs - - def getColorizableTexts(self): - return () - - def setColorizableTexts(self, src): - pass - - def __repr__(self): - r=[]; a=r.append - a('%s([' % self.__class__.__name__) - for p in self._subs: a(`p`+',') - a('])') - return join(r,'\n') - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_Children(self): - return self.getChildren() - - def _get_ColorizableTexts(self): - return self.getColorizableTexts() - - def _set_ColorizableTexts(self, src): - return self.setColorizableTexts(src) diff --git a/wxPython/samples/stxview/StructuredText/STDOM.py b/wxPython/samples/stxview/StructuredText/STDOM.py deleted file mode 100644 index c38f2fa6f4..0000000000 --- a/wxPython/samples/stxview/StructuredText/STDOM.py +++ /dev/null @@ -1,736 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## -""" -DOM implementation in StructuredText : Read-Only methods - -All standard Zope objects support DOM to a limited extent. -""" -import string - - -# Node type codes -# --------------- - -ELEMENT_NODE = 1 -ATTRIBUTE_NODE = 2 -TEXT_NODE = 3 -CDATA_SECTION_NODE = 4 -ENTITY_REFERENCE_NODE = 5 -ENTITY_NODE = 6 -PROCESSING_INSTRUCTION_NODE = 7 -COMMENT_NODE = 8 -DOCUMENT_NODE = 9 -DOCUMENT_TYPE_NODE = 10 -DOCUMENT_FRAGMENT_NODE = 11 -NOTATION_NODE = 12 - -# Exception codes -# --------------- - -INDEX_SIZE_ERR = 1 -DOMSTRING_SIZE_ERR = 2 -HIERARCHY_REQUEST_ERR = 3 -WRONG_DOCUMENT_ERR = 4 -INVALID_CHARACTER_ERR = 5 -NO_DATA_ALLOWED_ERR = 6 -NO_MODIFICATION_ALLOWED_ERR = 7 -NOT_FOUND_ERR = 8 -NOT_SUPPORTED_ERR = 9 -INUSE_ATTRIBUTE_ERR = 10 - -# Exceptions -# ---------- - -class DOMException(Exception): - pass -class IndexSizeException(DOMException): - code = INDEX_SIZE_ERR -class DOMStringSizeException(DOMException): - code = DOMSTRING_SIZE_ERR -class HierarchyRequestException(DOMException): - code = HIERARCHY_REQUEST_ERR -class WrongDocumentException(DOMException): - code = WRONG_DOCUMENT_ERR -class InvalidCharacterException(DOMException): - code = INVALID_CHARACTER_ERR -class NoDataAllowedException(DOMException): - code = NO_DATA_ALLOWED_ERR -class NoModificationAllowedException(DOMException): - code = NO_MODIFICATION_ALLOWED_ERR -class NotFoundException(DOMException): - code = NOT_FOUND_ERR -class NotSupportedException(DOMException): - code = NOT_SUPPORTED_ERR -class InUseAttributeException(DOMException): - code = INUSE_ATTRIBUTE_ERR - -# Node classes -# ------------ - -class ParentNode: - """ - A node that can have children, or, more precisely, that implements - the child access methods of the DOM. - """ - - def getChildNodes(self, type=type, st=type('')): - """ - Returns a NodeList that contains all children of this node. - If there are no children, this is a empty NodeList - """ - - r=[] - for n in self.getChildren(): - if type(n) is st: n=TextNode(n) - r.append(n.__of__(self)) - - return NodeList(r) - - def getFirstChild(self, type=type, st=type('')): - """ - The first child of this node. If there is no such node - this returns None - """ - children = self.getChildren() - - if not children: - return None - - n=children[0] - - if type(n) is st: - n=TextNode(n) - - return n.__of__(self) - - def getLastChild(self, type=type, st=type('')): - """ - The last child of this node. If there is no such node - this returns None. - """ - children = self.getChildren() - if not children: return None - n=chidren[-1] - if type(n) is st: n=TextNode(n) - return n.__of__(self) - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_ChildNodes(self, type=type, st=type('')): - return self.getChildNodes(type,st) - - def _get_FirstChild(self, type=type, st=type('')): - return self.getFirstChild(type,st) - - def _get_LastChild(self, type=type, st=type('')): - return self.getLastChild(type,st) - -class NodeWrapper(ParentNode): - """ - This is an acquisition-like wrapper that provides parent access for - DOM sans circular references! - """ - - def __init__(self, aq_self, aq_parent): - self.aq_self=aq_self - self.aq_parent=aq_parent - - def __getattr__(self, name): - return getattr(self.aq_self, name) - - def getParentNode(self): - """ - The parent of this node. All nodes except Document - DocumentFragment and Attr may have a parent - """ - return self.aq_parent - - def _getDOMIndex(self, children, getattr=getattr): - i=0 - self=self.aq_self - for child in children: - if getattr(child, 'aq_self', child) is self: - self._DOMIndex=i - return i - i=i+1 - return None - - def getPreviousSibling(self, - type=type, - st=type(''), - getattr=getattr, - None=None): - - """ - The node immediately preceding this node. If - there is no such node, this returns None. - """ - - children = self.aq_parent.getChildren() - if not children: - return None - - index=getattr(self, '_DOMIndex', None) - if index is None: - index=self._getDOMIndex(children) - if index is None: return None - - index=index-1 - if index < 0: return None - try: n=children[index] - except IndexError: return None - else: - if type(n) is st: - n=TextNode(n) - n._DOMIndex=index - return n.__of__(self) - - - def getNextSibling(self, type=type, st=type('')): - """ - The node immediately preceding this node. If - there is no such node, this returns None. - """ - children = self.aq_parent.getChildren() - if not children: - return None - - index=getattr(self, '_DOMIndex', None) - if index is None: - index=self._getDOMIndex(children) - if index is None: - return None - - index=index+1 - try: n=children[index] - except IndexError: - return None - else: - if type(n) is st: - n=TextNode(n) - n._DOMIndex=index - return n.__of__(self) - - def getOwnerDocument(self): - """ - The Document object associated with this node, if any. - """ - return self.aq_parent.getOwnerDocument() - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_ParentNode(self): - return self.getParentNode() - - def _get_DOMIndex(self, children, getattr=getattr): - return self._getDOMIndex(children,getattr) - - def _get_PreviousSibling(self, - type=type, - st=type(''), - getattr=getattr, - None=None): - - return self.getPreviousSibling(type,st,getattr,None) - - def _get_NextSibling(self, type=type, st=type('')): - return self.getNextSibling(type,st) - - def _get_OwnerDocument(self): - return self.getOwnerDocument() - -class Node(ParentNode): - """ - Node Interface - """ - - # Get a DOM wrapper with a parent link - def __of__(self, parent): - return NodeWrapper(self, parent) - - # DOM attributes - # -------------- - - def getNodeName(self): - """ - The name of this node, depending on its type - """ - - def getNodeValue(self): - """ - The value of this node, depending on its type - """ - return None - - def getParentNode(self): - """ - The parent of this node. All nodes except Document - DocumentFragment and Attr may have a parent - """ - - def getChildren(self): - """ - Get a Python sequence of children - """ - return () - - def getPreviousSibling(self, - type=type, - st=type(''), - getattr=getattr, - None=None): - """ - The node immediately preceding this node. If - there is no such node, this returns None. - """ - - def getNextSibling(self, type=type, st=type('')): - """ - The node immediately preceding this node. If - there is no such node, this returns None. - """ - - def getAttributes(self): - """ - Returns a NamedNodeMap containing the attributes - of this node (if it is an element) or None otherwise. - """ - return None - - def getOwnerDocument(self): - """ - The Document object associated with this node, if any. - """ - - # DOM Methods - # ----------- - - def hasChildNodes(self): - """ - Returns true if the node has any children, false - if it doesn't. - """ - return len(self.getChildren()) - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_NodeName(self): - return self.getNodeName() - - def _get_NodeValue(self): - return self.getNodeValue() - - def _get_ParentNode(self): - return self.getParentNode() - - def _get_Children(self): - return self.getChildren() - - def _get_PreviousSibling(self, - type=type, - st=type(''), - getattr=getattr, - None=None): - - return self.getPreviousSibling(type,st,getattr,None) - - def _get_NextSibling(self, type=type, st=type('')): - return self.getNextSibling() - - def _get_Attributes(self): - return self.getAttributes() - - def _get_OwnerDocument(self): - return self.getOwnerDocument() - - def _has_ChildNodes(self): - return self.hasChildNodes() - - -class TextNode(Node): - - def __init__(self, str): self._value=str - - def getNodeType(self): - return TEXT_NODE - - def getNodeName(self): - return '#text' - - def getNodeValue(self): - return self._value - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_NodeType(self): - return self.getNodeType() - - def _get_NodeName(self): - return self.getNodeName() - - def _get_NodeValue(self): - return self.getNodeValue() - -class Element(Node): - """ - Element interface - """ - - # Element Attributes - # ------------------ - - def getTagName(self): - """The name of the element""" - return self.__class__.__name__ - - def getNodeName(self): - """The name of this node, depending on its type""" - return self.__class__.__name__ - - def getNodeType(self): - """A code representing the type of the node.""" - return ELEMENT_NODE - - def getNodeValue(self, type=type, st=type('')): - r=[] - for c in self.getChildren(): - if type(c) is not st: - c=c.getNodeValue() - r.append(c) - return string.join(r,'') - - def getParentNode(self): - """ - The parent of this node. All nodes except Document - DocumentFragment and Attr may have a parent - """ - - # Element Methods - # --------------- - - _attributes=() - - def getAttribute(self, name): return getattr(self, name, None) - def getAttributeNode(self, name): - if hasattr(self, name): - return Attr(name, getattr(self, name)) - - def getAttributes(self): - d={} - for a in self._attributes: - d[a]=getattr(self, a, '') - return NamedNodeMap(d) - - def getAttribute(self, name): - """Retrieves an attribute value by name.""" - return None - - def getAttributeNode(self, name): - """ Retrieves an Attr node by name or None if - there is no such attribute. """ - return None - - def getElementsByTagName(self, tagname): - """ - Returns a NodeList of all the Elements with a given tag - name in the order in which they would be encountered in a - preorder traversal of the Document tree. Parameter: tagname - The name of the tag to match (* = all tags). Return Value: A new - NodeList object containing all the matched Elements. - """ - nodeList = [] - for child in self.getChildren(): - if (child.getNodeType()==ELEMENT_NODE and \ - child.getTagName()==tagname or tagname== '*'): - - nodeList.append(child) - - if hasattr(child, 'getElementsByTagName'): - n1 = child.getElementsByTagName(tagname) - nodeList = nodeList + n1._data - return NodeList(nodeList) - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_TagName(self): - return self.getTagName() - - def _get_NodeName(self): - return self.getNodeName() - - def _get_NodeType(self): - return self.getNodeType() - - def _get_NodeValue(self, type=type, st=type('')): - return self.getNodeValue(type,st) - - def _get_ParentNode(self): - return self.getParentNode() - - def _get_Attribute(self, name): - return self.getAttribute(name) - - def _get_AttributeNode(self, name): - return self.getAttributeNode(name) - - def _get_Attributes(self): - return self.getAttributes() - - def _get_Attribute(self, name): - return self.getAttribute(name) - - def _get_AttributeNode(self, name): - return self.getAttributeNode(name) - - def _get_ElementsByTagName(self, tagname): - return self.getElementsByTagName(tagname) - - -class NodeList: - """ - NodeList interface - Provides the abstraction of an ordered - collection of nodes. - - Python extensions: can use sequence-style 'len', 'getitem', and - 'for..in' constructs. - """ - - def __init__(self,list=None): - self._data = list or [] - - def __getitem__(self, index, type=type, st=type('')): - return self._data[index] - - def __getslice__(self, i, j): - return self._data[i:j] - - def item(self, index): - """ - Returns the index-th item in the collection - """ - try: return self._data[index] - except IndexError: return None - - def getLength(self): - """ - The length of the NodeList - """ - return len(self._data) - - __len__=getLength - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_Length(self): - return self.getLength() - -class NamedNodeMap: - """ - NamedNodeMap interface - Is used to represent collections - of nodes that can be accessed by name. NamedNodeMaps are not - maintained in any particular order. - - Python extensions: can use sequence-style 'len', 'getitem', and - 'for..in' constructs, and mapping-style 'getitem'. - """ - - def __init__(self, data=None): - if data is None: - data = {} - self._data = data - - def item(self, index): - """ - Returns the index-th item in the map - """ - try: return self._data.values()[index] - except IndexError: return None - - def __getitem__(self, key): - if type(key)==type(1): - return self._data.values()[key] - else: - return self._data[key] - - def getLength(self): - """ - The length of the NodeList - """ - return len(self._data) - - __len__ = getLength - - def getNamedItem(self, name): - """ - Retrieves a node specified by name. Parameters: - name Name of a node to retrieve. Return Value A Node (of any - type) with the specified name, or None if the specified name - did not identify any node in the map. - """ - if self._data.has_key(name): - return self._data[name] - return None - - """ - create aliases for all above functions in the pythony way. - """ - def _get_Length(self): - return self.getLength() - - def _get_NamedItem(self, name): - return self.getNamedItem(name) - -class Attr(Node): - """ - Attr interface - The Attr interface represents an attriubte in an - Element object. Attr objects inherit the Node Interface - """ - - def __init__(self, name, value, specified=1): - self.name = name - self.value = value - self.specified = specified - - def getNodeName(self): - """ - The name of this node, depending on its type - """ - return self.name - - def getName(self): - """ - Returns the name of this attribute. - """ - return self.name - - def getNodeValue(self): - """ - The value of this node, depending on its type - """ - return self.value - - def getNodeType(self): - """ - A code representing the type of the node. - """ - return ATTRIBUTE_NODE - - def getSpecified(self): - """ - If this attribute was explicitly given a value in the - original document, this is true; otherwise, it is false. - """ - return self.specified - - """ - create aliases for all above functions in the pythony way. - """ - - def _get_NodeName(self): - return self.getNodeName() - - def _get_Name(self): - return self.getName() - - def _get_NodeValue(self): - return self.getNodeValue() - - def _get_NodeType(self): - return self.getNodeType() - - def _get_Specified(self): - return self.getSpecified() diff --git a/wxPython/samples/stxview/StructuredText/STNG.txt b/wxPython/samples/stxview/StructuredText/STNG.txt deleted file mode 100644 index 20c7e6fc82..0000000000 --- a/wxPython/samples/stxview/StructuredText/STNG.txt +++ /dev/null @@ -1,116 +0,0 @@ -Using Structured Text - - The goal of StructuredText is to make it possible to express - structured text using a relatively simple plain text format. Simple - structures, like bullets or headings are indicated through - conventions that are natural, for some definition of - "natural". Hierarchical structures are indicated through - indentation. The use of indentation to express hierarchical - structure is inspired by the Python programming language. - - Use of StructuredText consists of one to three logical steps. In the - first step, a text string is converted to a network of objects using - the 'StructuredText.Basic' facility, as in the following - example:: - - raw=open("mydocument.txt").read() - import StructuredText - st=StructuredText.Basic(raw) - - The output of 'StructuredText.Basic' is simply a - StructuredTextDocument object containing StructuredTextParagraph - objects arranged in a hierarchy. Paragraphs are delimited by strings - of two or more whitespace characters beginning and ending with - newline characters. Hierarchy is indicated by indentation. The - indentation of a paragraph is the minimum number of leading spaces - in a line containing non-white-space characters after converting tab - characters to spaces (assuming a tab stop every eight characters). - - StructuredTextNode objects support the read-only subset of the - Document Object Model (DOM) API. It should be possible to process - 'StructuredTextNode' hierarchies using XML tools such as XSLT. - - The second step in using StructuredText is to apply additional - structuring rules based on text content. A variety of differentText - rules can be used. Typically, these are used to implement a - structured text language for producing documents, but any sort of - structured text language could be implemented in the second - step. For example, it is possible to use StructuredText to implement - structured text formats for representing structured data. The second - step, which could consist of multiple processing steps, is - performed by processing, or "coloring", the hierarchy of generic - StructuredTextParagraph objects into a network of more specialized - objects. Typically, the objects produced should also implement the DOM - API to allow processing with XML tools. - - A document processor is provided to convert a StructuredTextDocument - object containing only StructuredStructuredTextParagraph objects - into a StructuredTextDocument object containing a richer collection - of objects such as bullets, headings, emphasis, and so on using - hints in the text. Hints are selected based on conventions of the - sort typically seen in electronic mail or news-group postings. It - should be noted, however, that these conventions are somewhat - culturally dependent, fortunately, the document processor is easily - customized to implement alternative rules. Here's an example of - using the DOC processor to convert the output of the previous example:: - - doc=StructuredText.Document(st) - - The final step is to process the colored networks produced from the - second step to produce additional outputs. The final step could be - performed by Python programs, or by XML tools. A Python outputter is - provided for the document processor output that produces Hypertext Markup - Language (HTML) text:: - - html=StructuredText.HTML(doc) - -Customizing the document processor - - The document processor is driven by two tables. The first table, - named 'paragraph_types', is a sequence of callable objects or method - names for coloring paragraphs. If a table entry is a string, then it - is the name of a method of the document processor to be used. For - each input paragraph, the objects in the table are called until one - returns a value (not 'None'). The value returned replaces the - original input paragraph in the output. If none of the objects in - the paragraph types table return a value, then a copy of the - original paragraph is used. The new object returned by calling a - paragraph type should implement the ReadOnlyDOM, - StructuredTextColorizable, and StructuredTextSubparagraphContainer - interfaces. See the 'Document.py' source file for examples. - - A paragraph type may return a list or tuple of replacement - paragraphs, this allowing a paragraph to be split into multiple - paragraphs. - - The second table, 'text_types', is a sequence of callable objects or - method names for coloring text. The callable objects in this table - are used in sequence to transform the input text into new text or - objects. The callable objects are passed a string and return - nothing ('None') or a three-element tuple consisting of: - - - a replacement object, - - - a starting position, and - - - an ending position - - The text from the starting position is (logically) replaced with the - replacement object. The replacement object is typically an object - that implements that implements the ReadOnlyDOM, and - StructuredTextColorizable interfaces. The replacement object can - also be a string or a list of strings or objects. Replacement is - done from beginning to end and text after the replacement ending - position will be passed to the character type objects for processing. - -Example: adding wiki links - - We want to add support for Wiki links. A Wiki link is a string of - text containing mixed-case letters, such that at least two of the - letters are upper case and such that the first letter is upper case. - - - - - - diff --git a/wxPython/samples/stxview/StructuredText/STletters.py b/wxPython/samples/stxview/StructuredText/STletters.py deleted file mode 100644 index 5168b01e47..0000000000 --- a/wxPython/samples/stxview/StructuredText/STletters.py +++ /dev/null @@ -1,15 +0,0 @@ -import string - -try: - del string - import locale - locale.setlocale(locale.LC_ALL,"") -except: - pass - -import string - -letters = string.letters -punctuations = string.punctuation - -lettpunc = letters + punctuations diff --git a/wxPython/samples/stxview/StructuredText/StructuredText.py b/wxPython/samples/stxview/StructuredText/StructuredText.py deleted file mode 100644 index 2408f2331c..0000000000 --- a/wxPython/samples/stxview/StructuredText/StructuredText.py +++ /dev/null @@ -1,148 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -""" Alias module for StructuredTextClassic compatibility which makes -use of StructuredTextNG """ - - -import HTMLClass, DocumentClass, ClassicDocumentClass -from ST import Basic - -import re, string,sys -from STletters import letters - -Document = ClassicDocumentClass.DocumentClass() -HTMLNG = HTMLClass.HTMLClass() - -def HTML(aStructuredString, level=0): - st = Basic(aStructuredString) - doc = Document(st) - return HTMLNG(doc) - -def StructuredText(aStructuredString, level=0): - return HTML(aStructuredString,level) - -def html_with_references(text, level=1): - text = re.sub( - r'[\000\n]\.\. \[([0-9_%s-]+)\]' % letters, - r'\n <a name="\1">[\1]</a>', - text) - - text = re.sub( - r'([\000- ,])\[(?P<ref>[0-9_%s-]+)\]([\000- ,.:])' % letters, - r'\1<a href="#\2">[\2]</a>\3', - text) - - text = re.sub( - r'([\000- ,])\[([^]]+)\.html\]([\000- ,.:])', - r'\1<a href="\2.html">[\2]</a>\3', - text) - - return HTML(text,level=level) - -def html_quote(v, - character_entities=( - (re.compile('&'), '&amp;'), - (re.compile("<"), '&lt;' ), - (re.compile(">"), '&gt;' ), - (re.compile('"'), '&quot;') - )): #" - text=str(v) - for re,name in character_entities: - text=re.sub(name,text) - return text - - -if __name__=='__main__': - import getopt - - opts,args = getopt.getopt(sys.argv[1:],'',[]) - - for k,v in opts: - pass - - - for f in args: - print HTML(open(f).read()) diff --git a/wxPython/samples/stxview/StructuredText/Zwiki.py b/wxPython/samples/stxview/StructuredText/Zwiki.py deleted file mode 100644 index c08ea51e57..0000000000 --- a/wxPython/samples/stxview/StructuredText/Zwiki.py +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/python -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -from Html import HTML -from string import split -from ST import DOC -import re - -""" -This is the new structured text type. -""" - -class Zwiki_Title: - def __init__(self,str=''): - self.expr1 = re.compile('([A-Z]+[A-Z]+[a-zA-Z]*)').search - self.expr2 = re.compile('([A-Z]+[a-z]+[A-Z]+[a-zA-Z]*)').search - self.str = [str] - self.typ = "Zwiki_Title" - - def type(self): - return '%s' % self.typ - - def string(self): - return self.str - - def __getitem__(self,index): - return self.str[index] - - def __call__(self,raw_string,subs): - - """ - The raw_string is checked to see if it matches the rules - for this structured text expression. If the raw_string does, - it is parsed for the sub-string which matches and a doc_inner_link - instance is returned whose string is the matching substring. - If raw_string does not match, nothing is returned. - """ - - if self.expr1(raw_string): - start,end = self.expr1(raw_string).span() - result = Zwiki_Title(raw_string[start:end]) - result.start,result.end = self.expr1(raw_string).span() - return result - elif self.expr2(raw_string): - start,end = self.expr2(raw_string).span() - result = Zwiki_Title(raw_string[start:end]) - result.start,result.end = self.expr2(raw_string).span() - return result - else: - return None - - def span(self): - return self.start,self.end - -class Zwiki_doc(DOC): - - def __init__(self): - DOC.__init__(self) - """ - Add the new type to self.types - """ - self.types.append(Zwiki_Title()) - -class Zwiki_parser(HTML): - def __init__(self): - HTML.__init__(self) - self.types["Zwiki_Title"] = self.zwiki_title - - def zwiki_title(self,object): - result = "" - for x in object.string(): - result = result + x - result = "<a href=%s>%s</a>" % (result,result) - #result = "<dtml-wikiname %s>" % result - self.string = self.string + result diff --git a/wxPython/samples/stxview/StructuredText/__init__.py b/wxPython/samples/stxview/StructuredText/__init__.py deleted file mode 100644 index a5c1e5b047..0000000000 --- a/wxPython/samples/stxview/StructuredText/__init__.py +++ /dev/null @@ -1,112 +0,0 @@ -############################################################################## -# -# Zope Public License (ZPL) Version 1.0 -# ------------------------------------- -# -# Copyright (c) Digital Creations. All rights reserved. -# -# This license has been certified as Open Source(tm). -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions in source code must retain the above copyright -# notice, this list of conditions, and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions, and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# -# 3. Digital Creations requests that attribution be given to Zope -# in any manner possible. Zope includes a "Powered by Zope" -# button that is installed by default. While it is not a license -# violation to remove this button, it is requested that the -# attribution remain. A significant investment has been put -# into Zope, and this effort will continue if the Zope community -# continues to grow. This is one way to assure that growth. -# -# 4. All advertising materials and documentation mentioning -# features derived from or use of this software must display -# the following acknowledgement: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# In the event that the product being advertised includes an -# intact Zope distribution (with copyright and license included) -# then this clause is waived. -# -# 5. Names associated with Zope or Digital Creations must not be used to -# endorse or promote products derived from this software without -# prior written permission from Digital Creations. -# -# 6. Modified redistributions of any form whatsoever must retain -# the following acknowledgment: -# -# "This product includes software developed by Digital Creations -# for use in the Z Object Publishing Environment -# (http://www.zope.org/)." -# -# Intact (re-)distributions of any official Zope release do not -# require an external acknowledgement. -# -# 7. Modifications are encouraged but must be packaged separately as -# patches to official Zope releases. Distributions that do not -# clearly separate the patches from the original work must be clearly -# labeled as unofficial distributions. Modifications which do not -# carry the name Zope may be packaged in any form, as long as they -# conform to all of the clauses above. -# -# -# Disclaimer -# -# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY -# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# -# This software consists of contributions made by Digital Creations and -# many individuals on behalf of Digital Creations. Specific -# attributions are listed in the accompanying credits file. -# -############################################################################## - -import HTMLClass, DocumentClass -import ClassicDocumentClass -from StructuredText import html_with_references, HTML -from ST import Basic -import DocBookClass -import HTMLWithImages -import DocumentWithImages - -ClassicHTML=HTML -HTMLNG=HTMLClass.HTMLClass() - -def HTML(src, level=0, type=type, StringType=type('')): - if type(src) is StringType: - return ClassicHTML(src, level) - return HTMLNG(src, level) - -Classic=ClassicDocumentClass.DocumentClass() -Document=DocumentClass.DocumentClass() -DocumentWithImages=DocumentWithImages.DocumentWithImages() -HTMLWithImages=HTMLWithImages.HTMLWithImages() - -DocBookBook=DocBookClass.DocBookBook() -DocBookChapter=DocBookClass.DocBookChapter() -DocBookChapterWithFigures=DocBookClass.DocBookChapterWithFigures() -DocBookArticle=DocBookClass.DocBookArticle() - - diff --git a/wxPython/samples/stxview/stxview.py b/wxPython/samples/stxview/stxview.py deleted file mode 100644 index f9be495c01..0000000000 --- a/wxPython/samples/stxview/stxview.py +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env python -#---------------------------------------------------------------------- - -import sys, os -import StructuredText -from wxPython.wx import * - - -USE_WXHTML = 1 - - -if not USE_WXHTML: - try: # try to load the IE ActiveX control - from wxPython.lib.activexwrapper import MakeActiveXClass - import win32com.client.gencache - browserModule = win32com.client.gencache.EnsureModule( - "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 0, 1, 1) - except: - USE_WXHTML = 1 - -if not USE_WXHTML: - BrowserClass = MakeActiveXClass(browserModule.WebBrowser) - - class MyHtmlWindow(BrowserClass): - def SetPage(self, html): - import tempfile - filename = tempfile.mktemp('.html') - f = open(filename, 'w') - f.write(html) - f.close() - self.Navigate(os.path.abspath(filename)) - self.filename = filename - - def OnDocumentComplete(self, pDisp=None, URL=None): - os.unlink(self.filename) - -else: - from wxPython.html import * - MyHtmlWindow = wxHtmlWindow - - - -class StxFrame(wxFrame): - title = "StxViewer" - def __init__(self, stxFile): - wxFrame.__init__(self, None, -1, self.title, size=(650, 700), - style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE) - - ##self.CreateStatusBar() - - menu = wxMenu() - menu.Append(10, "&Open\tCtrl-O", "Open a Structured Text file") - EVT_MENU(self, 10, self.OnOpen) - menu.Append(20, "&Close", "Close the current file") - EVT_MENU(self, 20, self.OnClose) - menu.Append(30, "&Save\tCtrl-S", "Save the current file") - EVT_MENU(self, 30, self.OnSave) - menu.Append(40, "Save &as", "Save the current file to a new name") - EVT_MENU(self, 40, self.OnSaveAs) - menu.Append(45, "Save as &html", "Save the current file as HTML") - EVT_MENU(self, 45, self.OnSaveAsHTML) - menu.AppendSeparator() - menu.Append(50, "&Refresh\tCtrl-R", "Reload the file from disk") - EVT_MENU(self, 50, self.OnRefresh) - menu.AppendSeparator() - menu.Append(60, "E&xit\tCtrl-X", "Close the application") - EVT_MENU(self, 60, self.OnExit) - - - menuBar = wxMenuBar() - menuBar.Append(menu, "&File") - self.SetMenuBar(menuBar) - - - nb = wxNotebook(self, -1) - EVT_NOTEBOOK_PAGE_CHANGED(self, -1, self.OnPageChanged) - - self.htmlWin = MyHtmlWindow(nb, -1) - nb.AddPage(self.htmlWin, "View") - - self.editWin = wxTextCtrl(nb, -1, "", style=wxTE_MULTILINE) - self.editWin.SetFont(wxFont(10, wxTELETYPE, wxNORMAL, wxNORMAL)) - nb.AddPage(self.editWin, "Edit") - - self.viewHtml = wxTextCtrl(nb, -1, "", style=wxTE_MULTILINE|wxTE_READONLY) - self.viewHtml.SetFont(wxFont(10, wxTELETYPE, wxNORMAL, wxNORMAL)) - nb.AddPage(self.viewHtml, "HTML") - - self.LoadStxFile(stxFile) - - - def LoadStxFile(self, stxFile): - self.file = stxFile - if stxFile is not None: - text = open(stxFile).read() - self.SetTitle(self.title + ': ' + stxFile) - else: - text = "" - self.SetTitle(self.title) - self.LoadStxText(text) - - - def LoadStxText(self, text): - # Old ST - html = str(StructuredText.html_with_references(text)) - - # NG Version - #st = StructuredText.Basic(text) - #doc = StructuredText.Document(st) - #html = StructuredText.HTMLNG(doc) - - self.htmlWin.SetPage(html) - self.editWin.SetValue(text) - self.viewHtml.SetValue(html) - self.html = html - - - def OnPageChanged(self, evt): - if evt.GetOldSelection() == 1: # if it was on the edit page - text = self.editWin.GetValue() - self.LoadStxText(text) - - - def OnOpen(self, evt): - dlg = wxFileDialog(self, defaultDir=os.getcwd(), - wildcard = "STX files (*.stx)|*.stx|" - "Text files (*.txt)|*.txt|" - "All files (*.*)|*.*", - style=wxOPEN) - if dlg.ShowModal() == wxID_OK: - self.LoadStxFile(dlg.GetPath()) - dlg.Destroy() - - - - def OnClose(self, evt): - self.LoadStxFile(None) - - - def OnSave(self, evt): - if not self.file: - self.OnSaveAs(evt) - else: - text = self.editWin.GetValue() - open(self.file, 'w').write(text) - self.LoadStxFile(self.file) - - - def OnSaveAs(self, evt): - dlg = wxFileDialog(self, "Save as...", defaultDir=os.getcwd(), - wildcard = "STX files (*.stx)|*.stx|" - "Text files (*.txt)|*.txt|" - "All files (*.*)|*.*", - style=wxSAVE) - if dlg.ShowModal() == wxID_OK: - file = dlg.GetPath() - text = self.editWin.GetValue() - open(file, 'w').write(text) - self.LoadStxFile(file) - dlg.Destroy() - - - def OnSaveAsHTML(self, evt): - dlg = wxFileDialog(self, "Save as...", defaultDir=os.getcwd(), - wildcard = "HTML files (*.html)|*.html|" - "All files (*.*)|*.*", - style=wxSAVE) - if dlg.ShowModal() == wxID_OK: - file = dlg.GetPath() - text = self.editWin.GetValue() - self.LoadStxText(text) - open(file, 'w').write(self.html) - dlg.Destroy() - - - - def OnRefresh(self, evt): - self.LoadStxFile(self.file) - - - def OnExit(self, evt): - self.Close(true) - - - - - -app = wxPySimpleApp() -wxInitAllImageHandlers() - -if len(sys.argv) > 1: - filename = sys.argv[1] -else: - filename = None - -frame = StxFrame(filename) -frame.Show(true) -app.MainLoop() - - - diff --git a/wxPython/samples/stxview/test.stx b/wxPython/samples/stxview/test.stx deleted file mode 100644 index 20f53b2acd..0000000000 --- a/wxPython/samples/stxview/test.stx +++ /dev/null @@ -1,127 +0,0 @@ -Structured Text Manipulation - - Parse a structured text string into a form that can be used with - structured formats, like html. - - Structured text is text that uses indentation and simple - symbology to indicate the structure of a document. - - A structured string consists of a sequence of paragraphs separated by - one or more blank lines. Each paragraph has a level which is defined - as the minimum indentation of the paragraph. A paragraph is a - sub-paragraph of another paragraph if the other paragraph is the last - preceding paragraph that has a lower level. - -Special symbology is used to indicate special constructs: - - - A single-line paragraph whose immediately succeeding paragraphs are lower - level is treated as a header. - - - A paragraph that begins with a '-', '*', or 'o' is treated as an - unordered list (bullet) element. - - - A paragraph that begins with a sequence of digits followed by a - white-space character is treated as an ordered list element. - - - A paragraph that begins with a sequence of sequences, where each - sequence is a sequence of digits or a sequence of letters followed - by a period, is treated as an ordered list element. If the sequence is - made up of lower-case i's and v's, a lower-case roman-numeral list is - generated. If the sequence is made up of upper-case I's and V's, an - upper-case roman-numeral list is generated. If the sequence is made - up of other lower case letters (typically a,b,c) a lowercase alphabetic - list is generated. If the sequence is made of of other upper case - letters (typically, A,B,C) an uppercase alphabetic list is generated. - If the sequence is something else (typically, 1,2,3), a arabic-numeral - list is generated. - - - A paragraph with a first line that contains some text, followed by - some white-space and '--' is treated as a descriptive list element. - The leading text is treated as the element title. - - - Sub-paragraphs of a paragraph that ends in the word 'example' or the - word 'examples', or '::' is treated as example code and is output as is. - - - Text enclosed single quotes (with white-space to the left of the - first quote and whitespace or puctuation to the right of the second quote) - is treated as example code. - - - Text surrounded by '*' characters (with white-space to the left of the - first '*' and whitespace or puctuation to the right of the second '*') - is *emphasized*. - - - Text surrounded by '**' characters (with white-space to the left of the - first '**' and whitespace or puctuation to the right of the second '**') - is made **strong**. - - - Text surrounded by '_' underscore characters (with whitespace to the left - and whitespace or punctuation to the right) is made _underlined_. - - - Text encloded by double quotes followed by a colon, a URL, and concluded - by punctuation plus white space, *or* just white space, is treated as a - hyper link. For example: - - '"Zope":http://www.zope.org/ is ...' - - Is interpreted as '<a href="http://www.zope.org/">Zope</a> is ...' - Note: This works for relative as well as absolute URLs. - - - Text enclosed by double quotes followed by a comma, one or more spaces, - an absolute URL and concluded by punctuation plus white space, or just - white space, is treated as a hyper link. For example: - - "mail me", mailto:amos@digicool.com. - - Is interpreted as '<a href="mailto:amos@digicool.com">mail me</a>.' - - - Text enclosed in brackets which consists only of letters, digits, - underscores and dashes is treated as hyper links within the document. - For example: - - As demonstrated by Smith [12] this technique is quite effective. - - Is interpreted as '... by Smith <a href="#12">[12]</a> this ...'. Together - with the next rule this allows easy coding of references or end notes. - - - Text enclosed in brackets which is preceded by the start of a line, two - periods and a space is treated as a named link. For example: - - .. [12] "Effective Techniques" Smith, Joe ... - - Is interpreted as '<a name="12">[12]</a> "Effective Techniques" ...'. - Together with the previous rule this allows easy coding of references or - end notes. - - - - A paragraph that has blocks of text enclosed in '||' is treated as a - table. The text blocks correspond to table cells and table rows are - denoted by newlines. By default the cells are center aligned. A cell - can span more than one column by preceding a block of text with an - equivalent number of cell separators '||'. Newlines and '|' cannot - be a part of the cell text. For example: - - |||| **Ingredients** || - || *Name* || *Amount* || - ||Spam||10|| - ||Eggs||3|| - - is interpreted as:: - - <TABLE BORDER=1 CELLPADDING=2> - <TR> - <TD ALIGN=CENTER COLSPAN=2> <strong>Ingredients</strong> </TD> - </TR> - <TR> - <TD ALIGN=CENTER COLSPAN=1> <em>Name</em> </TD> - <TD ALIGN=CENTER COLSPAN=1> <em>Amount</em> </TD> - </TR> - <TR> - <TD ALIGN=CENTER COLSPAN=1>Spam</TD> - <TD ALIGN=CENTER COLSPAN=1>10</TD> - </TR> - <TR> - <TD ALIGN=CENTER COLSPAN=1>Eggs</TD> - <TD ALIGN=CENTER COLSPAN=1>3</TD> - </TR> - </TABLE> - diff --git a/wxPython/samples/wxProject/wxProject.py b/wxPython/samples/wxProject/wxProject.py index 03b6df1075..6023785ee1 100644 --- a/wxPython/samples/wxProject/wxProject.py +++ b/wxPython/samples/wxProject/wxProject.py @@ -89,12 +89,12 @@ class main_window(wxFrame): # Install the tree and the editor. # ------------------------------------------------------------------------------------ splitter.SplitVertically (self.tree, self.editor) - splitter.SetSashPosition (180, true) + splitter.SetSashPosition (180, True) - self.Show(true) + self.Show(True) # Some global state variables. - self.projectdirty = false + self.projectdirty = False # ---------------------------------------------------------------------------------------- # Some nice little handlers. @@ -118,9 +118,9 @@ class main_window(wxFrame): self.tree.Expand (self.root) self.editor.Clear() - self.editor.Enable (false) + self.editor.Enable (False) - self.projectdirty = false + self.projectdirty = False except IOError: pass @@ -139,7 +139,7 @@ class main_window(wxFrame): (child,iter) = self.tree.GetNextChild(self.root,iter) output.write (self.tree.GetItemText(child) + "\n") output.close() - self.projectdirty = false + self.projectdirty = False except IOError: dlg_m = wxMessageDialog (self, 'There was an error saving the project file.', 'Error!', wxOK) @@ -151,7 +151,7 @@ class main_window(wxFrame): # ---------------------------------------------------------------------------------------- def OnProjectOpen(self, event): - open_it = true + open_it = True if self.projectdirty: dlg=wxMessageDialog(self, 'The project has been changed. Save?', 'wxProject', wxYES_NO | wxCANCEL) @@ -159,7 +159,7 @@ class main_window(wxFrame): if result == wxID_YES: self.project_save() if result == wxID_CANCEL: - open_it = false + open_it = False dlg.Destroy() if open_it: dlg = wxFileDialog(self, "Choose a project to open", ".", "", "*.wxp", wxOPEN) @@ -168,7 +168,7 @@ class main_window(wxFrame): dlg.Destroy() def OnProjectNew(self, event): - open_it = true + open_it = True if self.projectdirty: dlg=wxMessageDialog(self, 'The project has been changed. Save?', 'wxProject', wxYES_NO | wxCANCEL) @@ -176,7 +176,7 @@ class main_window(wxFrame): if result == wxID_YES: self.project_save() if result == wxID_CANCEL: - open_it = false + open_it = False dlg.Destroy() if open_it: @@ -202,7 +202,7 @@ class main_window(wxFrame): dlg.Destroy() def OnProjectExit(self, event): - close = true + close = True if self.projectdirty: dlg=wxMessageDialog(self, 'The project has been changed. Save?', 'wxProject', wxYES_NO | wxCANCEL) @@ -210,7 +210,7 @@ class main_window(wxFrame): if result == wxID_YES: self.project_save() if result == wxID_CANCEL: - close = false + close = False dlg.Destroy() if close: self.Close() @@ -243,10 +243,10 @@ class main_window(wxFrame): event.Veto() def OnTreeLabelEditEnd(self, event): - self.projectdirty = true + self.projectdirty = True def OnTreeItemActivated(self, event): - go_ahead = true + go_ahead = True if self.activeitem != self.root: if self.editor.IsModified(): dlg=wxMessageDialog(self, 'The edited file has changed. Save it?', @@ -255,7 +255,7 @@ class main_window(wxFrame): if result == wxID_YES: self.editor.SaveFile (self.tree.GetItemText (self.activeitem)) if result == wxID_CANCEL: - go_ahead = false + go_ahead = False dlg.Destroy() if go_ahead: self.tree.SetItemBold (self.activeitem, 0) @@ -279,7 +279,7 @@ class App(wxApp): self.SetTopWindow(frame) if (projfile != 'Unnamed'): frame.project_open (projfile) - return true + return True app = App(0) app.MainLoop() diff --git a/wxPython/scripts/CreateBatchFiles.py b/wxPython/scripts/CreateBatchFiles.py index 269a55d25d..871650d52f 100644 --- a/wxPython/scripts/CreateBatchFiles.py +++ b/wxPython/scripts/CreateBatchFiles.py @@ -1,6 +1,6 @@ #---------------------------------------------------------------------- # Name: CreateBatchFiles.py -# Purpose: Run by the InnoSetup installer to create a DOS batch +# Purpose: Run by the InnoSetup installer to create a DOS batch # file for each of the wxPython tool scripts. # # Author: Robin Dunn @@ -22,6 +22,8 @@ scripts = [ ("img2png", 0), ("xrced", 1), ("pyshell", 1), ("pycrust", 1), + ("pycwrap", 1), + ("helpviewer", 1), ] template = """\ diff --git a/wxPython/scripts/CreateMacScripts.py b/wxPython/scripts/CreateMacScripts.py index 8108771e7c..d8ab06fca0 100644 --- a/wxPython/scripts/CreateMacScripts.py +++ b/wxPython/scripts/CreateMacScripts.py @@ -1,6 +1,6 @@ #---------------------------------------------------------------------- # Name: CreateMacScripts.py -# Purpose: Massages the scripts to be usable with MachoPython +# Purpose: Massages the scripts to be usable with MachoPython # # Author: Robin Dunn # @@ -13,23 +13,30 @@ import sys, os python = sys.executable destdir = os.path.split(python)[0] +prefix = destdir pythonw = os.path.join(destdir, 'pythonw') scriptdir = os.getcwd() if len(sys.argv) > 1: - destdir = sys.argv[1] + root = sys.argv[1] + p = prefix = sys.argv[2] + if p[0] == '/': p = p[1:] + destdir = os.path.join(root, p) + from CreateBatchFiles import scripts repltxt = "#!/usr/bin/env python" -gui_template = """\ -#!/bin/sh -exec /Applications/Python.app/Contents/MacOS/python %s.py -""" + +# use the existing pythonw as a template +gui_template = open(pythonw, "r").read().replace('"$@"', '"%s.py" "$@"') + def main(): for script, usegui in scripts: destfile = os.path.join(destdir, script) + prefixfile = os.path.join(prefix, script) + thescript = open(script).read() if usegui: f = open(destfile+'.py', 'w') @@ -38,7 +45,7 @@ def main(): f.close() f = open(destfile, 'w') print destfile - f.write(gui_template % destfile) + f.write(gui_template % prefixfile) f.close() else: diff --git a/wxPython/scripts/helpviewer b/wxPython/scripts/helpviewer new file mode 100755 index 0000000000..c31cc70a15 --- /dev/null +++ b/wxPython/scripts/helpviewer @@ -0,0 +1,4 @@ +#!/usr/bin/env python + +from wxPython.tools.helpviewer import main +main() diff --git a/wxPython/scripts/helpviewer.bat b/wxPython/scripts/helpviewer.bat new file mode 100755 index 0000000000..d881374690 --- /dev/null +++ b/wxPython/scripts/helpviewer.bat @@ -0,0 +1,3 @@ +@echo off + +start e:\tools\Python22\pythonw.exe e:\PROJECTS\wx\wxPython\scripts\helpviewer %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/img2png.bat b/wxPython/scripts/img2png.bat index d926caa621..a69fee0c02 100755 --- a/wxPython/scripts/img2png.bat +++ b/wxPython/scripts/img2png.bat @@ -1,3 +1,3 @@ @echo off -C:\TOOLS\PYTHON22\PYTHON.EXE C:\projects\wx\wxPython\scripts\img2png %1 %2 %3 %4 %5 %6 %7 %8 %9 +e:\tools\Python22\python.exe e:\PROJECTS\wx\wxPython\scripts\img2png %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/img2py.bat b/wxPython/scripts/img2py.bat index b63e13ac62..e2451895ec 100755 --- a/wxPython/scripts/img2py.bat +++ b/wxPython/scripts/img2py.bat @@ -1,3 +1,3 @@ @echo off -C:\TOOLS\PYTHON22\PYTHON.EXE C:\projects\wx\wxPython\scripts\img2py %1 %2 %3 %4 %5 %6 %7 %8 %9 +e:\tools\Python22\python.exe e:\PROJECTS\wx\wxPython\scripts\img2py %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/img2xpm.bat b/wxPython/scripts/img2xpm.bat index adda6be6de..45bff43e11 100755 --- a/wxPython/scripts/img2xpm.bat +++ b/wxPython/scripts/img2xpm.bat @@ -1,3 +1,3 @@ @echo off -C:\TOOLS\PYTHON22\PYTHON.EXE C:\projects\wx\wxPython\scripts\img2xpm %1 %2 %3 %4 %5 %6 %7 %8 %9 +e:\tools\Python22\python.exe e:\PROJECTS\wx\wxPython\scripts\img2xpm %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/pycrust.bat b/wxPython/scripts/pycrust.bat index 6f4b5dc07c..a2fc4f3416 100755 --- a/wxPython/scripts/pycrust.bat +++ b/wxPython/scripts/pycrust.bat @@ -1,3 +1,3 @@ @echo off -start C:\TOOLS\PYTHON22\pythonw.exe C:\projects\wx\wxPython\scripts\pycrust %1 %2 %3 %4 %5 %6 %7 %8 %9 +start e:\tools\Python22\pythonw.exe e:\PROJECTS\wx\wxPython\scripts\pycrust %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/pycwrap b/wxPython/scripts/pycwrap new file mode 100755 index 0000000000..911c5ec778 --- /dev/null +++ b/wxPython/scripts/pycwrap @@ -0,0 +1,7 @@ +#!/usr/bin/env python + +from wxPython.lib.PyCrust.wrap import main +import sys, os + +sys.path.insert(0, os.curdir) +main(sys.argv) diff --git a/wxPython/scripts/pycwrap.bat b/wxPython/scripts/pycwrap.bat new file mode 100755 index 0000000000..40562b5629 --- /dev/null +++ b/wxPython/scripts/pycwrap.bat @@ -0,0 +1,3 @@ +@echo off + +start e:\tools\Python22\pythonw.exe e:\PROJECTS\wx\wxPython\scripts\pycwrap %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/pyshell.bat b/wxPython/scripts/pyshell.bat index 6e02101940..fff21cd258 100755 --- a/wxPython/scripts/pyshell.bat +++ b/wxPython/scripts/pyshell.bat @@ -1,3 +1,3 @@ @echo off -start C:\TOOLS\PYTHON22\pythonw.exe C:\projects\wx\wxPython\scripts\pyshell %1 %2 %3 %4 %5 %6 %7 %8 %9 +start e:\tools\Python22\pythonw.exe e:\PROJECTS\wx\wxPython\scripts\pyshell %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/scripts/xrced.bat b/wxPython/scripts/xrced.bat index e3b87fa793..2bfdd300cb 100755 --- a/wxPython/scripts/xrced.bat +++ b/wxPython/scripts/xrced.bat @@ -1,3 +1,3 @@ @echo off -start C:\TOOLS\PYTHON22\pythonw.exe C:\projects\wx\wxPython\scripts\xrced %1 %2 %3 %4 %5 %6 %7 %8 %9 +start e:\tools\Python22\pythonw.exe e:\PROJECTS\wx\wxPython\scripts\xrced %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/wxPython/setup.py b/wxPython/setup.py index 7d6a2c6247..80c1c681bb 100755 --- a/wxPython/setup.py +++ b/wxPython/setup.py @@ -1,19 +1,19 @@ #!/usr/bin/env python #---------------------------------------------------------------------- -import sys, os, string, glob +import sys, os, glob from distutils.core import setup, Extension from distutils.file_util import copy_file from distutils.dir_util import mkpath from distutils.dep_util import newer - -from my_distutils import run_swig, contrib_copy_tree +from distutils.spawn import spawn +from distutils.command.install_data import install_data #---------------------------------------------------------------------- # flags and values that affect this script #---------------------------------------------------------------------- -VERSION = "2.3.3pre8" +VERSION = "2.4.0.7" DESCRIPTION = "Cross platform GUI toolkit for Python" AUTHOR = "Robin Dunn" AUTHOR_EMAIL = "Robin Dunn <robin@alldunn.com>" @@ -23,11 +23,13 @@ LONG_DESCRIPTION = """\ wxPython is a GUI toolkit for Python that is a wrapper around the wxWindows C++ GUI library. wxPython provides a large variety of window types and controls, all implemented with a native look and -feel (and native runtime speed) on the platforms it is supported +feel (by using the native widgets) on the platforms it is supported on. """ +# Config values below this point can be reset on the setup.py command line. + BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module BUILD_OGL = 1 # If true, build the contrib/ogl extension module BUILD_STC = 1 # If true, build the contrib/stc extension module @@ -39,10 +41,13 @@ BUILD_DLLWIDGET = 1# Build a module that enables unknown wx widgets # Internet Explorer wrapper (experimental) BUILD_IEWIN = (os.name == 'nt') +BUILD_CANVAS = 0 # Build a canvas module using the one in wx/contrib (experimental) +BUILD_ART2D = 0 # Build a canvas module using code from the wxArt2D project (experimental) + + CORE_ONLY = 0 # if true, don't build any of the above -GL_ONLY = 0 # Only used when making the -gl RPM. See the "b" script - # for the ugly details +PREP_ONLY = 0 # Only run the prepatory steps, not the actual build. USE_SWIG = 0 # Should we actually execute SWIG, or just use the # files already in the distribution? @@ -51,9 +56,13 @@ UNICODE = 0 # This will pass the 'wxUSE_UNICODE' flag to SWIG and # will ensure that the right headers are found and the # right libs are linked. -IN_CVS_TREE = 0 # Set to true if building in a full wxWindows CVS - # tree, otherwise will assume all needed files are - # available in the wxPython source distribution +IN_CVS_TREE = 1 # Set to true if building in a full wxWindows CVS + # tree, or the new style of a full wxPythonSrc tarball. + # wxPython used to be distributed as a separate source + # tarball without the wxWindows but with a copy of the + # needed contrib code. That's no longer the case and so + # this setting is now defaulting to true. Eventually it + # should be removed entirly. UNDEF_NDEBUG = 1 # Python 2.2 on Unix/Linux by default defines NDEBUG, # and distutils will pick this up and use it on the @@ -66,13 +75,21 @@ UNDEF_NDEBUG = 1 # Python 2.2 on Unix/Linux by default defines NDEBUG, NO_SCRIPTS = 0 # Don't install the tool scripts +WX_CONFIG = None # Usually you shouldn't need to touch this, but you can set + # it to pass an alternate version of wx-config or alternate + # flags, eg. as required by the .deb in-tree build. By + # default a wx-config command will be assembled based on + # version, port, etc. and it will be looked for on the + # default $PATH. + +WXPORT = 'gtk' # On Linux/Unix there are several ports of wxWindows available. + # Setting this value lets you select which will be used for + # the wxPython build. Possibilites are 'gtk', 'gtk2' and + # 'x11'. Curently only gtk and gtk2 works. + +BUILD_BASE = "build" # Directory to use for temporary build files. -WX_CONFIG = "wx-config" # Usually you shouldn't need to touch this, - # but you can set it to pass an alternate - # version of wx-config or alternate flags, - # eg. as required by the .deb in-tree build. -BUILD_BASE = "build" # Some MSW build settings @@ -87,7 +104,7 @@ HYBRID = 1 # If set and not debug or FINAL, then build a # wxWindows must have been built with /MD, not /MDd # (using FINAL=hybrid will do it.) -WXDLLVER = '233' # Version part of wxWindows DLL name +WXDLLVER = '24' # Version part of wxWindows DLL name #---------------------------------------------------------------------- @@ -120,18 +137,18 @@ def libFlag(): PKGDIR = 'wxPython' wxpExtensions = [] +DATA_FILES = [] force = '--force' in sys.argv or '-f' in sys.argv debug = '--debug' in sys.argv or '-g' in sys.argv -bcpp_compiling = '-c' in sys.argv and 'my_bcpp' in sys.argv # Bad heuristic +# change the PORT default for wxMac +if sys.platform[:6] == "darwin": + WXPORT = 'mac' -if bcpp_compiling: - msg("Compiling wxPython by Borland C/C++ Compiler") - HYBRID=0 - WXBCPPLIBVER = string.replace(WXDLLVER,"_","") - # Version part of BCPP build LIBRARY name - WXDLLVER="" # no dll ver path avaible +# and do the same for wxMSW, just for consistency +if os.name == 'nt': + WXPORT = 'msw' #---------------------------------------------------------------------- @@ -141,21 +158,21 @@ if bcpp_compiling: # Boolean (int) flags for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC', 'BUILD_GIZMOS', 'BUILD_DLLWIDGET', 'BUILD_IEWIN', - 'CORE_ONLY', 'USE_SWIG', 'IN_CVS_TREE', 'UNICODE', + 'CORE_ONLY', 'PREP_ONLY', 'USE_SWIG', 'IN_CVS_TREE', 'UNICODE', 'UNDEF_NDEBUG', 'NO_SCRIPTS', 'FINAL', 'HYBRID', ]: for x in range(len(sys.argv)): - if string.find(sys.argv[x], flag) == 0: - pos = string.find(sys.argv[x], '=') + 1 + if sys.argv[x].find(flag) == 0: + pos = sys.argv[x].find('=') + 1 if pos > 0: vars()[flag] = eval(sys.argv[x][pos:]) sys.argv[x] = '' # String options -for option in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE']: +for option in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', 'WXPORT']: for x in range(len(sys.argv)): - if string.find(sys.argv[x], option) == 0: - pos = string.find(sys.argv[x], '=') + 1 + if sys.argv[x].find(option) == 0: + pos = sys.argv[x].find('=') + 1 if pos > 0: vars()[option] = sys.argv[x][pos:] sys.argv[x] = '' @@ -163,6 +180,123 @@ for option in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE']: sys.argv = filter(None, sys.argv) +#---------------------------------------------------------------------- +# some helper functions +#---------------------------------------------------------------------- + +def Verify_WX_CONFIG(): + """ Called below for the builds that need wx-config, + if WX_CONFIG is not set then tries to select the specific + wx*-config script based on build options. If not found + then it defaults to 'wx-config'. + """ + # if WX_CONFIG hasn't been set to an explicit value then construct one. + global WX_CONFIG + if WX_CONFIG is None: + if debug: # TODO: Fix this. wxPython's --debug shouldn't be tied to wxWindows... + df = 'd' + else: + df = '' + if UNICODE: + uf = 'u' + else: + uf = '' + ver2 = VERSION[:3] + WX_CONFIG = 'wx%s%s%s-%s-config' % (WXPORT, uf, df, ver2) + + searchpath = os.environ["PATH"] + for p in searchpath.split(':'): + fp = os.path.join(p, WX_CONFIG) + if os.path.exists(fp) and os.access(fp, os.X_OK): + # success + msg("Found wx-config: " + fp) + WX_CONFIG = fp + break + else: + msg("WX_CONFIG not specified and %s not found on $PATH " + "defaulting to \"wx-config\"" % WX_CONFIG) + WX_CONFIG = 'wx-config' + + + +def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, swig_deps=[]): + """Run SWIG the way I want it done""" + if not os.path.exists(os.path.join(dir, gendir)): + os.mkdir(os.path.join(dir, gendir)) + + sources = [] + + for file in files: + basefile = os.path.splitext(file)[0] + i_file = os.path.join(dir, file) + py_file = os.path.join(dir, gendir, basefile+'.py') + cpp_file = os.path.join(dir, gendir, basefile+'.cpp') + + sources.append(cpp_file) + + if USE_SWIG: + for dep in swig_deps: + if newer(dep, py_file) or newer(dep, cpp_file): + force = 1 + break + + if force or newer(i_file, py_file) or newer(i_file, cpp_file): + # we need forward slashes here even on win32 + cpp_file = '/'.join(cpp_file.split('\\')) + i_file = '/'.join(i_file.split('\\')) + + cmd = ['./wxSWIG/wxswig'] + swig_args + ['-I'+dir, '-c', '-o', cpp_file, i_file] + msg(' '.join(cmd)) + spawn(cmd) + + # copy the generated python file to the package directory + copy_file(py_file, package, update=not force, verbose=0) + + return sources + + + +def contrib_copy_tree(src, dest, verbose=0): + """Update local copies of wxWindows contrib files""" + from distutils.dir_util import mkpath, copy_tree + + mkpath(dest, verbose=verbose) + copy_tree(src, dest, update=1, verbose=verbose) + + + +class smart_install_data(install_data): + def run(self): + #need to change self.install_dir to the actual library dir + install_cmd = self.get_finalized_command('install') + self.install_dir = getattr(install_cmd, 'install_lib') + return install_data.run(self) + + +def build_locale_dir(destdir, verbose=1): + """Build a locale dir under the wxPython package for MSW""" + moFiles = glob.glob(opj(WXDIR, 'locale', '*.mo')) + for src in moFiles: + lang = os.path.splitext(os.path.basename(src))[0] + dest = opj(destdir, lang, 'LC_MESSAGES') + mkpath(dest, verbose=verbose) + copy_file(src, opj(dest, 'wxstd.mo'), update=1, verbose=verbose) + + +def build_locale_list(srcdir): + # get a list of all files under the srcdir, to be used for install_data + def walk_helper(lst, dirname, files): + for f in files: + filename = opj(dirname, f) + if not os.path.isdir(filename): + lst.append( (dirname, [filename]) ) + file_list = [] + os.path.walk(srcdir, walk_helper, file_list) + return file_list + + + + #---------------------------------------------------------------------- # sanity checks @@ -176,15 +310,15 @@ if CORE_ONLY: BUILD_DLLWIDGET = 0 BUILD_IEWIN = 0 +if debug: + FINAL = 0 + HYBRID = 0 -if UNICODE and os.name != 'nt': - print "UNICODE is currently only supported on Win32" - sys.exit() +if FINAL: + HYBRID = 0 - -if UNICODE: - BUILD_BASE = BUILD_BASE + '.unicode' - VERSION = VERSION + 'u' +if UNICODE and WXPORT not in ['msw', 'gtk2']: + raise SystemExit, "UNICODE mode not currently supported on this WXPORT: "+WXPORT #---------------------------------------------------------------------- @@ -203,20 +337,13 @@ if os.name == 'nt': WXPLAT = '__WXMSW__' GENDIR = 'msw' - if debug: - FINAL = 0 - HYBRID = 0 - - if HYBRID: - FINAL = 0 - includes = ['src', opj(WXDIR, 'lib', 'mswdll' + libFlag()), opj(WXDIR, 'include'), ] - defines = [ ('WIN32', None), # Some of these are no longer - ('__WIN32__', None), # necessary. Anybody know which? + defines = [ ('WIN32', None), + ('__WIN32__', None), ('_WINDOWS', None), ('__WINDOWS__', None), ('WINVER', '0x0400'), @@ -231,21 +358,8 @@ if os.name == 'nt': ('WXP_USE_THREAD', '1'), ] - if bcpp_compiling: # overwrite it - defines = [ - ('_WINDOWS', None), - ('WINVER', '0x0400'), - ('STRICT', None), - - ('WXUSINGDLL', '1'), - - ('SWIG_GLOBAL', None), - ('HAVE_CONFIG_H', None), - ('WXP_USE_THREAD', '1'), - - ('WXUSE_DEFINE','1'), - ('_RTLDLL',None), - ] + if UNDEF_NDEBUG: + defines.append( ('NDEBUG',) ) # using a 1-tuple makes it do an undef if not FINAL or HYBRID: @@ -255,12 +369,9 @@ if os.name == 'nt': wxdll = 'wxmsw' + WXDLLVER + libFlag() libs = [ wxdll ] - if bcpp_compiling: - libs = [ 'wx'+WXBCPPLIBVER ] - libs = libs + ['kernel32', 'user32', 'gdi32', 'comdlg32', 'winspool', 'winmm', 'shell32', 'oldnames', 'comctl32', - 'ctl3d32', 'odbc32', 'ole32', 'oleaut32', 'uuid', 'rpcrt4', + 'odbc32', 'ole32', 'oleaut32', 'uuid', 'rpcrt4', 'advapi32', 'wsock32'] @@ -269,32 +380,22 @@ if os.name == 'nt': ] lflags = None - - if bcpp_compiling: # BCC flags - cflags = ['-5', '-VF', ### To support MSVC spurious semicolons in the class scope - ### else, all semicolons at the end of all DECLARE_...CALLBACK... macros must be eliminated - '-Hc', '-H=' + opj(WXDIR, '\src\msw\wx32.csm'), - '@' + opj(WXDIR, '\src\msw\wxwin32.cfg') - ] - if not FINAL: - cflags = cflags + ['/Od', '/v', '/y'] - lflags = lflags + ['/v', ] - - else: # MSVC flags - if FINAL: - pass #cflags = cflags + ['/O1'] - elif HYBRID : - pass #cflags = cflags + ['/Ox'] - else: - pass # cflags = cflags + ['/Od', '/Z7'] - # lflags = ['/DEBUG', ] + # Other MSVC flags... + # To bad I don't remember why I was playing with these, can they be removed? + if FINAL: + pass #cflags = cflags + ['/O1'] + elif HYBRID : + pass #cflags = cflags + ['/Ox'] + else: + pass # cflags = cflags + ['/Od', '/Z7'] + # lflags = ['/DEBUG', ] +#---------------------------------------------------------------------- elif os.name == 'posix' and sys.platform[:6] == "darwin": # Flags and such for a Darwin (Max OS X) build of Python - WXDIR = '..' # assumes IN_CVS_TREE WXPLAT = '__WXMAC__' GENDIR = 'mac' @@ -304,60 +405,99 @@ elif os.name == 'posix' and sys.platform[:6] == "darwin": ('HAVE_CONFIG_H', None), ('WXP_USE_THREAD', '1'), ] + if UNDEF_NDEBUG: + defines.append( ('NDEBUG',) ) # using a 1-tuple makes it do an undef libdirs = [] - libs = [] + libs = ['stdc++'] + + Verify_WX_CONFIG() cflags = os.popen(WX_CONFIG + ' --cxxflags', 'r').read()[:-1] - cflags = string.split(cflags) - if UNDEF_NDEBUG: - cflags.append('-UNDEBUG') + cflags = cflags.split() if debug: cflags.append('-g') cflags.append('-O0') lflags = os.popen(WX_CONFIG + ' --libs', 'r').read()[:-1] - lflags = string.split(lflags) + lflags = lflags.split() NO_SCRIPTS = 1 + BUILD_DLLWIDGET = 0 +#---------------------------------------------------------------------- + elif os.name == 'posix': - # Set flags for Unix type platforms - + # Set flags for other Unix type platforms WXDIR = '..' # assumes IN_CVS_TREE - WXPLAT = '__WXGTK__' # and assumes GTK... - GENDIR = 'gtk' # Need to allow for Motif eventually too + GENDIR = WXPORT + + if WXPORT == 'gtk': + WXPLAT = '__WXGTK__' + portcfg = os.popen('gtk-config --cflags', 'r').read()[:-1] + elif WXPORT == 'gtk2': + WXPLAT = '__WXGTK__' + GENDIR = 'gtk' # no code differences so use the same generated sources + portcfg = os.popen('pkg-config gtk+-2.0 --cflags', 'r').read()[:-1] + BUILD_BASE = BUILD_BASE + '-' + WXPORT + elif WXPORT == 'x11': + WXPLAT = '__WXX11__' + portcfg = '' + BUILD_BASE = BUILD_BASE + '-' + WXPORT + else: + raise SystemExit, "Unknown WXPORT value: " + WXPORT includes = ['src'] defines = [('SWIG_GLOBAL', None), ('HAVE_CONFIG_H', None), ('WXP_USE_THREAD', '1'), ] + if UNDEF_NDEBUG: + defines.append( ('NDEBUG',) ) # using a 1-tuple makes it do an undef + libdirs = [] libs = [] - cflags = os.popen(WX_CONFIG + ' --cxxflags', 'r').read()[:-1] + ' ' + \ - os.popen('gtk-config --cflags', 'r').read()[:-1] - cflags = string.split(cflags) - if UNDEF_NDEBUG: - cflags.append('-UNDEBUG') + Verify_WX_CONFIG() + + cflags = os.popen(WX_CONFIG + ' --cxxflags', 'r').read()[:-1] + ' ' + portcfg + + cflags = cflags.split() if debug: cflags.append('-g') cflags.append('-O0') lflags = os.popen(WX_CONFIG + ' --libs', 'r').read()[:-1] - lflags = string.split(lflags) + lflags = lflags.split() + + # Some distros (e.g. Mandrake) put libGLU in /usr/X11R6/lib, but + # wx-config doesn't output that for some reason. For now, just + # add it unconditionally but we should really check if the lib is + # really found there or wx-config should be fixed. + libdirs.append("/usr/X11R6/lib") +#---------------------------------------------------------------------- else: - raise 'Sorry Charlie...' + raise 'Sorry Charlie, platform not supported...' + + +#---------------------------------------------------------------------- +# post platform setup checks and tweaks +#---------------------------------------------------------------------- + +if UNICODE: + BUILD_BASE = BUILD_BASE + '.unicode' + VERSION = VERSION + 'u' #---------------------------------------------------------------------- # Check if the version file needs updated #---------------------------------------------------------------------- -#if IN_CVS_TREE and newer('setup.py', 'src/__version__.py'): +##if IN_CVS_TREE and newer('setup.py', 'src/__version__.py'): + +# Always do it since the version string can change based on the UNICODE flag open('src/__version__.py', 'w').write("ver = '%s'\n" % VERSION) @@ -383,118 +523,123 @@ swig_deps = ['src/my_typemaps.i'] # Define the CORE extension module #---------------------------------------------------------------------- -if not GL_ONLY: - msg('Preparing CORE...') - swig_files = [ 'wx.i', 'windows.i', 'windows2.i', 'windows3.i', 'events.i', - 'misc.i', 'misc2.i', 'gdi.i', 'mdi.i', 'controls.i', - 'controls2.i', 'cmndlgs.i', 'stattool.i', 'frames.i', 'image.i', - 'printfw.i', 'sizers.i', 'clip_dnd.i', - 'filesys.i', 'streams.i', 'utils.i', 'fonts.i' - ] +msg('Preparing CORE...') +swig_files = [ 'wx.i', 'windows.i', 'windows2.i', 'windows3.i', 'events.i', + 'misc.i', 'misc2.i', 'gdi.i', 'mdi.i', 'controls.i', + 'controls2.i', 'cmndlgs.i', 'stattool.i', 'frames.i', 'image.i', + 'printfw.i', 'sizers.i', 'clip_dnd.i', + 'filesys.i', 'streams.i', 'utils.i', 'fonts.i' + ] - swig_sources = run_swig(swig_files, 'src', GENDIR, PKGDIR, - USE_SWIG, swig_force, swig_args, swig_deps) +swig_sources = run_swig(swig_files, 'src', GENDIR, PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) - copy_file('src/__init__.py', PKGDIR, update=1, verbose=0) - copy_file('src/__version__.py', PKGDIR, update=1, verbose=0) - copy_file('src/wxc.pyd.manifest', PKGDIR, update=1, verbose=0) - - if IN_CVS_TREE: # update the license files - mkpath('licence') - for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']: - copy_file(opj(WXDIR, 'docs', file), opj('licence',file), update=1, verbose=0) +copy_file('src/__init__.py', PKGDIR, update=1, verbose=0) +copy_file('src/__version__.py', PKGDIR, update=1, verbose=0) - if os.name == 'nt': - rc_file = ['src/wxc.rc'] - else: - rc_file = [] +if IN_CVS_TREE: # update the license files + mkpath('licence') + for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']: + copy_file(opj(WXDIR, 'docs', file), opj('licence',file), update=1, verbose=0) - ext = Extension('wxc', ['src/helpers.cpp', - 'src/libpy.c', - ] + rc_file + swig_sources, - - include_dirs = includes, - define_macros = defines, - - library_dirs = libdirs, - libraries = libs, - - extra_compile_args = cflags, - extra_link_args = lflags, - ) - wxpExtensions.append(ext) +if os.name == 'nt': + build_locale_dir(opj(PKGDIR, 'locale')) + DATA_FILES += build_locale_list(opj(PKGDIR, 'locale')) - # Extension for the grid module - swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR, - USE_SWIG, swig_force, swig_args, swig_deps) - ext = Extension('gridc', swig_sources, - include_dirs = includes, - define_macros = defines, - library_dirs = libdirs, - libraries = libs, - extra_compile_args = cflags, - extra_link_args = lflags, - ) - wxpExtensions.append(ext) +if os.name == 'nt': + rc_file = ['src/wxc.rc'] +else: + rc_file = [] - # Extension for the html modules - swig_sources = run_swig(['html.i', 'htmlhelp.i'], 'src', GENDIR, PKGDIR, - USE_SWIG, swig_force, swig_args, swig_deps) - ext = Extension('htmlc', swig_sources, - include_dirs = includes, - define_macros = defines, - library_dirs = libdirs, - libraries = libs, - extra_compile_args = cflags, - extra_link_args = lflags, - ) - wxpExtensions.append(ext) +ext = Extension('wxc', ['src/helpers.cpp', + 'src/drawlist.cpp', + 'src/libpy.c', + ] + rc_file + swig_sources, + + include_dirs = includes, + define_macros = defines, + + library_dirs = libdirs, + libraries = libs, + + extra_compile_args = cflags, + extra_link_args = lflags, + ) +wxpExtensions.append(ext) - # Extension for the calendar module - swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR, - USE_SWIG, swig_force, swig_args, swig_deps) - ext = Extension('calendarc', swig_sources, - include_dirs = includes, - define_macros = defines, - library_dirs = libdirs, - libraries = libs, - extra_compile_args = cflags, - extra_link_args = lflags, - ) - wxpExtensions.append(ext) +# Extension for the grid module +swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) +ext = Extension('gridc', swig_sources, + include_dirs = includes, + define_macros = defines, + library_dirs = libdirs, + libraries = libs, + extra_compile_args = cflags, + extra_link_args = lflags, + ) +wxpExtensions.append(ext) - # Extension for the help module - swig_sources = run_swig(['help.i'], 'src', GENDIR, PKGDIR, - USE_SWIG, swig_force, swig_args, swig_deps) - ext = Extension('helpc', swig_sources, - include_dirs = includes, - define_macros = defines, - library_dirs = libdirs, - libraries = libs, - extra_compile_args = cflags, - extra_link_args = lflags, - ) - wxpExtensions.append(ext) +# Extension for the html modules +swig_sources = run_swig(['html.i', 'htmlhelp.i'], 'src', GENDIR, PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) +ext = Extension('htmlc', swig_sources, + include_dirs = includes, + define_macros = defines, + library_dirs = libdirs, + libraries = libs, + extra_compile_args = cflags, + extra_link_args = lflags, + ) +wxpExtensions.append(ext) - # Extension for the wizard module - swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR, - USE_SWIG, swig_force, swig_args, swig_deps) - ext = Extension('wizardc', swig_sources, - include_dirs = includes, - define_macros = defines, - library_dirs = libdirs, - libraries = libs, - extra_compile_args = cflags, - extra_link_args = lflags, - ) - wxpExtensions.append(ext) +# Extension for the calendar module +swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) +ext = Extension('calendarc', swig_sources, + include_dirs = includes, + define_macros = defines, + library_dirs = libdirs, + libraries = libs, + extra_compile_args = cflags, + extra_link_args = lflags, + ) +wxpExtensions.append(ext) + + +# Extension for the help module +swig_sources = run_swig(['help.i'], 'src', GENDIR, PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) +ext = Extension('helpc', swig_sources, + include_dirs = includes, + define_macros = defines, + library_dirs = libdirs, + libraries = libs, + extra_compile_args = cflags, + extra_link_args = lflags, + ) +wxpExtensions.append(ext) + + +# Extension for the wizard module +swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) +ext = Extension('wizardc', swig_sources, + include_dirs = includes, + define_macros = defines, + library_dirs = libdirs, + libraries = libs, + extra_compile_args = cflags, + extra_link_args = lflags, + ) +wxpExtensions.append(ext) #---------------------------------------------------------------------- @@ -504,7 +649,7 @@ if not GL_ONLY: CTRB_SRC = opj(WXDIR, 'contrib/src') CTRB_INC = opj(WXDIR, 'contrib/include/wx') -if BUILD_GLCANVAS or GL_ONLY: +if BUILD_GLCANVAS: msg('Preparing GLCANVAS...') location = 'contrib/glcanvas' swig_files = ['glcanvas.i'] @@ -516,7 +661,7 @@ if BUILD_GLCANVAS or GL_ONLY: gl_libs = [] if os.name == 'posix': gl_config = os.popen(WX_CONFIG + ' --gl-libs', 'r').read()[:-1] - gl_lflags = string.split(gl_config) + lflags + gl_lflags = gl_config.split() + lflags gl_libs = libs else: other_sources = [opj(location, 'msw/myglcanvas.cpp')] @@ -543,7 +688,7 @@ if BUILD_GLCANVAS or GL_ONLY: # Define the OGL extension module #---------------------------------------------------------------------- -if not GL_ONLY and BUILD_OGL: +if BUILD_OGL: msg('Preparing OGL...') location = 'contrib/ogl' OGLLOC = opj(location, 'contrib/src/ogl') @@ -592,7 +737,7 @@ if not GL_ONLY and BUILD_OGL: # Define the STC extension module #---------------------------------------------------------------------- -if not GL_ONLY and BUILD_STC: +if BUILD_STC: msg('Preparing STC...') location = 'contrib/stc' STCLOC = opj(location, 'contrib/src/stc') @@ -608,6 +753,7 @@ if not GL_ONLY and BUILD_STC: msg('Running gen_iface.py, regenerating stc.h and stc.cpp...') cwd = os.getcwd() os.chdir(opj(CTRB_SRC, 'stc')) + sys.path.insert(0, os.curdir) import gen_iface gen_iface.main([]) os.chdir(cwd) @@ -705,7 +851,7 @@ if not GL_ONLY and BUILD_STC: # Define the IEWIN extension module (experimental) #---------------------------------------------------------------------- -if not GL_ONLY and BUILD_IEWIN: +if BUILD_IEWIN: msg('Preparing IEWIN...') location = 'contrib/iewin' @@ -736,7 +882,7 @@ if not GL_ONLY and BUILD_IEWIN: # Define the XRC extension module #---------------------------------------------------------------------- -if not GL_ONLY and BUILD_XRC: +if BUILD_XRC: msg('Preparing XRC...') location = 'contrib/xrc' XMLLOC = opj(location, 'contrib/src/xrc') @@ -786,6 +932,7 @@ if not GL_ONLY and BUILD_XRC: '%s/xh_radbt.cpp' % XMLLOC, '%s/xh_radbx.cpp' % XMLLOC, '%s/xh_scrol.cpp' % XMLLOC, + '%s/xh_scwin.cpp' % XMLLOC, '%s/xh_sizer.cpp' % XMLLOC, '%s/xh_slidr.cpp' % XMLLOC, @@ -824,7 +971,7 @@ if not GL_ONLY and BUILD_XRC: # Define the GIZMOS extension module #---------------------------------------------------------------------- -if not GL_ONLY and BUILD_GIZMOS: +if BUILD_GIZMOS: msg('Preparing GIZMOS...') location = 'contrib/gizmos' GIZMOLOC = opj(location, 'contrib/src/gizmos') @@ -870,7 +1017,7 @@ if not GL_ONLY and BUILD_GIZMOS: # Define the DLLWIDGET extension module #---------------------------------------------------------------------- -if not GL_ONLY and BUILD_DLLWIDGET: +if BUILD_DLLWIDGET: msg('Preparing DLLWIDGET...') location = 'contrib/dllwidget' swig_files = ['dllwidget_.i'] @@ -899,36 +1046,149 @@ if not GL_ONLY and BUILD_DLLWIDGET: #---------------------------------------------------------------------- -# Tools and scripts +# Define the CANVAS extension module #---------------------------------------------------------------------- -## TOOLS = [("wxPython/tools", glob.glob("tools/*.py")), -## ("wxPython/tools/XRCed", glob.glob("tools/XRCed/*.py") + -## glob.glob("tools/XRCed/*.xrc") + -## ["tools/XRCed/CHANGES", -## "tools/XRCed/TODO", -## "tools/XRCed/README"]), -## ] +if BUILD_CANVAS: + msg('Preparing CANVAS...') + location = 'contrib/canvas' + CANVASLOC = opj(location, 'contrib/src/canvas') + CANVASINC = opj(location, 'contrib/include') + swig_files = ['canvas.i'] + + swig_sources = run_swig(swig_files, location, '', PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) + + if IN_CVS_TREE: + # make sure local copy of contrib files are up to date + contrib_copy_tree(opj(CTRB_INC, 'canvas'), opj(CANVASINC, 'wx/canvas')) + contrib_copy_tree(opj(CTRB_SRC, 'canvas'), CANVASLOC) + + ext = Extension('canvasc', ['%s/bbox.cpp' % CANVASLOC, + '%s/liner.cpp' % CANVASLOC, + '%s/polygon.cpp' % CANVASLOC, + '%s/canvas.cpp' % CANVASLOC, + ] + swig_sources, + + include_dirs = [CANVASINC] + includes, + define_macros = defines, + + library_dirs = libdirs, + libraries = libs, + + extra_compile_args = cflags, + extra_link_args = lflags, + ) + + wxpExtensions.append(ext) + + +#---------------------------------------------------------------------- +# Define the ART2D extension module +#---------------------------------------------------------------------- + +if BUILD_ART2D: + msg('Preparing ART2D...') + location = 'contrib/art2d' + ART2DLOC = opj(location, 'modules/canvas/src') + ART2DINC = opj(location, 'modules/canvas/include') + EXPATLOC = opj(location, 'modules/expat') + EXPATINC = opj(location, 'modules/expat/include') + + swig_files = ['art2d.i', + 'art2d_misc.i', + 'art2d_base.i', + 'art2d_canvas.i', + ] + + swig_sources = run_swig(swig_files, location, '', PKGDIR, + USE_SWIG, swig_force, swig_args, swig_deps) + + if IN_CVS_TREE: + # Don't copy data in this case as the code snapshots are + # taken manually + pass + + ext = Extension('art2dc', [ opj(ART2DLOC, 'afmatrix.cpp'), + opj(ART2DLOC, 'bbox.cpp'), + opj(ART2DLOC, 'cancom.cpp'), + opj(ART2DLOC, 'candoc.cpp'), + opj(ART2DLOC, 'canglob.cpp'), + opj(ART2DLOC, 'canobj3d.cpp'), + opj(ART2DLOC, 'canobj.cpp'), + opj(ART2DLOC, 'canprim.cpp'), + opj(ART2DLOC, 'canprop.cpp'), + opj(ART2DLOC, 'canvas.cpp'), + opj(ART2DLOC, 'docviewref.cpp'), + opj(ART2DLOC, 'drawer.cpp'), + opj(ART2DLOC, 'eval.cpp'), + opj(ART2DLOC, 'graph.cpp'), + opj(ART2DLOC, 'layerinf.cpp'), + opj(ART2DLOC, 'liner.cpp'), + opj(ART2DLOC, 'meta.cpp'), + opj(ART2DLOC, 'objlist.cpp'), + opj(ART2DLOC, 'polygon.cpp'), + opj(ART2DLOC, 'recur.cpp'), + opj(ART2DLOC, 'rendimg.cpp'), + opj(ART2DLOC, 'tools.cpp'), + opj(ART2DLOC, 'vpath.cpp'), + opj(ART2DLOC, 'xmlpars.cpp'), + + opj(EXPATLOC, 'xmlparse/xmlparse.c'), + opj(EXPATLOC, 'xmltok/xmlrole.c'), + opj(EXPATLOC, 'xmltok/xmltok.c'), + + ] + swig_sources, + + include_dirs = [ ART2DINC, + EXPATINC, + opj(EXPATLOC, 'xmltok'), + opj(EXPATLOC, 'xmlparse'), + ] + includes, + define_macros = defines, + + library_dirs = libdirs, + libraries = libs, + + extra_compile_args = cflags, + extra_link_args = lflags, + ) + + wxpExtensions.append(ext) + + +#---------------------------------------------------------------------- +# Tools and scripts +#---------------------------------------------------------------------- if NO_SCRIPTS: SCRIPTS = None else: - SCRIPTS = [opj('scripts/img2png'), + SCRIPTS = [opj('scripts/helpviewer'), + opj('scripts/img2png'), opj('scripts/img2xpm'), opj('scripts/img2py'), opj('scripts/xrced'), opj('scripts/pyshell'), opj('scripts/pycrust'), + opj('scripts/pycwrap'), ] +DATA_FILES.append( ('wxPython/tools/XRCed', glob.glob('wxPython/tools/XRCed/*.txt') + + [ 'wxPython/tools/XRCed/xrced.xrc'])) + +DATA_FILES.append( ('wxPython/lib/PyCrust', glob.glob('wxPython/lib/PyCrust/*.txt') + + glob.glob('wxPython/lib/PyCrust/*.ico'))) + + #---------------------------------------------------------------------- # Do the Setup/Build/Install/Whatever #---------------------------------------------------------------------- if __name__ == "__main__": - if not GL_ONLY: + if not PREP_ONLY: setup(name = PKGDIR, version = VERSION, description = DESCRIPTION, @@ -940,9 +1200,11 @@ if __name__ == "__main__": packages = [PKGDIR, PKGDIR+'.lib', + PKGDIR+'.lib.colourchooser', PKGDIR+'.lib.editor', PKGDIR+'.lib.mixins', PKGDIR+'.lib.PyCrust', + PKGDIR+'.lib.PyCrust.wxd', PKGDIR+'.tools', PKGDIR+'.tools.XRCed', ], @@ -952,29 +1214,13 @@ if __name__ == "__main__": options = { 'build' : { 'build_base' : BUILD_BASE }}, - ##data_files = TOOLS, scripts = SCRIPTS, - ) - else: - - setup(name = "wxPython-gl", - version = VERSION, - description = "wxGLCanvas class for wxPython", - author = AUTHOR, - author_email = AUTHOR_EMAIL, - url = URL, - license = LICENSE, - - py_modules = [ "wxPython.glcanvas" ], - - ext_package = PKGDIR, - ext_modules = wxpExtensions, + cmdclass = { 'install_data': smart_install_data}, + data_files = DATA_FILES, ) - - #---------------------------------------------------------------------- #---------------------------------------------------------------------- diff --git a/wxPython/src/__version__.py b/wxPython/src/__version__.py index b846f0cf7f..c2b3c1365e 100644 --- a/wxPython/src/__version__.py +++ b/wxPython/src/__version__.py @@ -1 +1 @@ -ver = '2.3.3pre8' +ver = '2.4.0.7' diff --git a/wxPython/src/_calextras.py b/wxPython/src/_calextras.py index f2f8bde23c..1b8ba8cb2f 100644 --- a/wxPython/src/_calextras.py +++ b/wxPython/src/_calextras.py @@ -2,3 +2,4 @@ # Stuff these names into the wx namespace so wxPyConstructObject can find them wx.wxCalendarEventPtr = wxCalendarEventPtr +wx.wxCalendarCtrlPtr = wxCalendarCtrlPtr diff --git a/wxPython/src/_defs.i b/wxPython/src/_defs.i index 553b379839..7e07e02954 100644 --- a/wxPython/src/_defs.i +++ b/wxPython/src/_defs.i @@ -298,6 +298,7 @@ enum { wxRA_SPECIFY_ROWS, wxRA_SPECIFY_COLS, wxRB_GROUP, + wxRB_SINGLE, wxGA_PROGRESSBAR, wxGA_HORIZONTAL, wxGA_VERTICAL, @@ -532,6 +533,17 @@ enum { wxMOUSE_BTN_MIDDLE, wxMOUSE_BTN_RIGHT, + // It looks like wxTabCtrl may rise from the dead. Uncomment these if + // it gets an implementation for all platforms... +// wxTC_RIGHTJUSTIFY, +// wxTC_FIXEDWIDTH, +// wxTC_TOP, +// wxTC_LEFT, +// wxTC_RIGHT, +// wxTC_BOTTOM, +// wxTC_MULTILINE, +// wxTC_OWNERDRAW, + }; @@ -921,12 +933,6 @@ enum wxHitTest -#define FALSE 0 -#define false 0 -#define TRUE 1 -#define true 1 - - //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- diff --git a/wxPython/src/_extras.py b/wxPython/src/_extras.py index 0e72a395d9..be34766f07 100644 --- a/wxPython/src/_extras.py +++ b/wxPython/src/_extras.py @@ -1,6 +1,6 @@ #---------------------------------------------------------------------------- # Name: _extra.py -# Purpose: This file is appended to the shadow class file generated +# Purpose: This file is appended to the shadow class file generated # by SWIG. We add some unSWIGable things here. # # Author: Robin Dunn @@ -131,6 +131,12 @@ def EVT_WINDOW_CREATE(win, func): def EVT_WINDOW_DESTROY(win, func): win.Connect(-1, -1, wxEVT_DESTROY, func) +def EVT_WINDOW_CREATE_ID(win, id, func): + win.Connect(id, -1, wxEVT_CREATE, func) + +def EVT_WINDOW_DESTROY_ID(win, id, func): + win.Connect(id, -1, wxEVT_DESTROY, func) + def EVT_SET_CURSOR(win, func): win.Connect(-1, -1, wxEVT_SET_CURSOR, func) @@ -263,7 +269,7 @@ def EVT_COMMAND_SCROLL(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN, func) win.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK,func) win.Connect(id, -1, wxEVT_SCROLL_THUMBRELEASE,func) - win.Connect(-1, -1, wxEVT_SCROLL_ENDSCROLL, func) + win.Connect(id, -1, wxEVT_SCROLL_ENDSCROLL, func) def EVT_COMMAND_SCROLL_TOP(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_TOP, func) @@ -587,17 +593,50 @@ wxColor = wxColour wxNamedColor = wxNamedColour wxPen = wxPyPen wxScrollbar = wxScrollBar +wxPoint2D = wxPoint2DDouble + +wxPyAssertionError = wxc.wxPyAssertionError # backwards compatibility -wxNoRefBitmap = wxBitmap -wxPyDefaultPosition = wxDefaultPosition -wxPyDefaultSize = wxDefaultSize -NULL = None +wxNoRefBitmap = wxBitmap +wxPyDefaultPosition = wxDefaultPosition +wxPyDefaultSize = wxDefaultSize +NULL = None wxSystemSettings_GetSystemColour = wxSystemSettings_GetColour wxSystemSettings_GetSystemFont = wxSystemSettings_GetFont wxSystemSettings_GetSystemMetric = wxSystemSettings_GetMetric + +# workarounds for bad wxRTTI names +__wxPyPtrTypeMap['wxGauge95'] = 'wxGauge' + + + +def NewId(): + import warnings + warnings.warn("Use wxNewId instead", DeprecationWarning, 2) + return wxNewId() + +def RegisterId(ID): + import warnings + warnings.warn("Use wxRegisterId instead", DeprecationWarning, 2) + return wxRegisterId(ID) + + + +# Use Python's bool constants if available, make aliases if not +try: + True +except NameError: + True = 1==1 + False = 1==0 + +# Backwards compaatible +TRUE = true = True +FALSE = false = False + + #---------------------------------------------------------------------- # wxGTK sets the locale when initialized. Doing this at the Python # level should set it up to match what GTK is doing at the C level. @@ -608,7 +647,11 @@ if wxPlatform == "__WXGTK__": except: pass - +if wxPlatform == "__WXMSW__": + import os + localedir = os.path.join(os.path.split(__file__)[0], "locale") + wxLocale_AddCatalogLookupPathPrefix(localedir) + del os #---------------------------------------------------------------------- # wxWindows version numbers. wxPython version is in __version__. @@ -660,6 +703,18 @@ def wxPyTypeCast(obj, typeStr): theObj.thisown = obj.thisown return theObj +#---------------------------------------------------------------------------- +# An isinstance for Pythons < 2.2 that can check a sequence of class objects +# like the one in 2.2 can. + +def wxPy_isinstance(obj, klasses): + import types + if sys.version[:3] < "2.2" and type(klasses) in [types.TupleType, types.ListType]: + for klass in klasses: + if isinstance(obj, klass): return True + return False + else: + return isinstance(obj, klasses) #---------------------------------------------------------------------------- _wxCallAfterId = None @@ -685,6 +740,9 @@ def wxCallAfter(callable, *args, **kw): evt.kw = kw wxPostEvent(app, evt) +# an alias +wxRunLater = wxCallAfter + #---------------------------------------------------------------------- class wxPyDeadObjectError(AttributeError): @@ -744,7 +802,7 @@ class wxPyOnDemandOutputWindow: self.text = wxTextCtrl(self.frame, -1, "", style = wxTE_MULTILINE|wxTE_READONLY) self.frame.SetSize(wxSize(450, 300)) - self.frame.Show(true) + self.frame.Show(True) EVT_CLOSE(self.frame, self.OnCloseWindow) self.text.AppendText(str) @@ -765,12 +823,17 @@ class wxApp(wxPyApp): error = 'wxApp.error' outputWindowClass = wxPyOnDemandOutputWindow - def __init__(self, redirect=_defRedirect, filename=None): + def __init__(self, redirect=_defRedirect, filename=None, useBestVisual=False): wxPyApp.__init__(self) self.stdioWin = None self.saveStdio = (sys.stdout, sys.stderr) + + # This has to be done before OnInit + self.SetUseBestVisual(useBestVisual) + if redirect: self.RedirectStdio(filename) + # this initializes wxWindows and then calls our OnInit _wxStart(self.OnInit) @@ -797,7 +860,7 @@ class wxApp(wxPyApp): if filename: sys.stdout = sys.stderr = open(filename, 'a') else: - self.stdioWin = self.outputWindowClass() # wxPyOnDemandOutputWindow + self.stdioWin = self.outputWindowClass() sys.stdout = sys.stderr = self.stdioWin @@ -805,6 +868,21 @@ class wxApp(wxPyApp): sys.stdout, sys.stderr = self.saveStdio +# change from wxPyApp_ to wxApp_ +wxApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC +wxApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts +wxApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId +wxApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId +wxApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId +wxApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName +wxApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC +wxApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts +wxApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId +wxApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId +wxApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId +wxApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + + #---------------------------------------------------------------------------- class wxPySimpleApp(wxApp): @@ -812,7 +890,7 @@ class wxPySimpleApp(wxApp): wxApp.__init__(self, flag) def OnInit(self): wxInitAllImageHandlers() - return true + return True class wxPyWidgetTester(wxApp): @@ -823,11 +901,11 @@ class wxPyWidgetTester(wxApp): def OnInit(self): self.frame = wxFrame(None, -1, "Widget Tester", pos=(0,0), size=self.size) self.SetTopWindow(self.frame) - return true + return True def SetWidget(self, widgetClass, *args): w = apply(widgetClass, (self.frame,) + args) - self.frame.Show(true) + self.frame.Show(True) #---------------------------------------------------------------------------- # DO NOT hold any other references to this object. This is how we diff --git a/wxPython/src/_helpextras.py b/wxPython/src/_helpextras.py index c933721561..ea0abe70e4 100644 --- a/wxPython/src/_helpextras.py +++ b/wxPython/src/_helpextras.py @@ -1,3 +1,4 @@ # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxHelpEventPtr = wxHelpEventPtr +wx.wxContextHelpButtonPtr = wxContextHelpButtonPtr diff --git a/wxPython/src/_htmlextras.py b/wxPython/src/_htmlextras.py index 88f8b12ba6..c538da3162 100644 --- a/wxPython/src/_htmlextras.py +++ b/wxPython/src/_htmlextras.py @@ -11,4 +11,5 @@ wx.wxHtmlContainerCellPtr = wxHtmlContainerCellPtr wx.wxHtmlWidgetCellPtr = wxHtmlWidgetCellPtr wx.wxHtmlWindowPtr = wxHtmlWindowPtr wx.wxHtmlLinkInfoPtr = wxHtmlLinkInfoPtr +wx.wxHtmlFilterPtr = wxHtmlFilterPtr diff --git a/wxPython/src/_wizardextras.py b/wxPython/src/_wizardextras.py index 4cd30aff7f..c46be8f422 100644 --- a/wxPython/src/_wizardextras.py +++ b/wxPython/src/_wizardextras.py @@ -1,3 +1,7 @@ # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxWizardEventPtr = wxWizardEventPtr +wx.wxWizardPagePtr = wxWizardPagePtr +wx.wxPyWizardPagePtr = wxPyWizardPagePtr +wx.wxWizardPageSimplePtr = wxWizardPageSimplePtr +wx.wxWizardPtr = wxWizardPtr diff --git a/wxPython/src/clip_dnd.i b/wxPython/src/clip_dnd.i index d1be82ee3e..e5547215f4 100644 --- a/wxPython/src/clip_dnd.i +++ b/wxPython/src/clip_dnd.i @@ -111,10 +111,13 @@ public: wxDataFormat GetPreferredFormat(Direction dir = wxDataObject::Get); size_t GetFormatCount(Direction dir = wxDataObject::Get); + + // TODO: Fix these two to be usable from wxPython. void GetAllFormats(wxDataFormat *formats, Direction dir = wxDataObject::Get); - size_t GetDataSize(const wxDataFormat& format); bool GetDataHere(const wxDataFormat& format, void *buf); + + size_t GetDataSize(const wxDataFormat& format); bool SetData(const wxDataFormat& format, size_t len, const void * buf); bool IsSupportedFormat(const wxDataFormat& format); @@ -288,7 +291,7 @@ wxBitmap wxPyBitmapDataObject::GetBitmap() { void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { wxPyBeginBlockThreads(); if (m_myInst.findCallback("SetBitmap")) { - PyObject* bo = wxPyConstructObject((void*)&bitmap, "wxBitmap"); + PyObject* bo = wxPyConstructObject((void*)&bitmap, wxT("wxBitmap")); m_myInst.callCallback(Py_BuildValue("(O)", bo)); Py_DECREF(bo); } @@ -452,15 +455,17 @@ bool wxIsDragResultOk(wxDragResult res); class wxPyDropSource : public wxDropSource { public: #ifdef __WXMSW__ - wxPyDropSource(wxWindow *win = NULL, - const wxCursor &cursorCopy = wxNullCursor, - const wxCursor &cursorMove = wxNullCursor, - const wxCursor &cursorStop = wxNullCursor) - : wxDropSource(win, cursorCopy, cursorMove, cursorStop) {} + wxPyDropSource(wxWindow *win = NULL, + const wxCursor &copy = wxNullCursor, + const wxCursor &move = wxNullCursor, + const wxCursor &none = wxNullCursor) + : wxDropSource(win, copy, move, none) {} #else wxPyDropSource(wxWindow *win = NULL, - const wxIcon &go = wxNullIcon) - : wxDropSource(win, go) {} + const wxIcon& copy = wxNullIcon, + const wxIcon& move = wxNullIcon, + const wxIcon& none = wxNullIcon) + : wxDropSource(win, copy, move, none) {} #endif ~wxPyDropSource() { } @@ -476,13 +481,15 @@ IMP_PYCALLBACK_BOOL_DR(wxPyDropSource, wxDropSource, GiveFeedback); %name(wxDropSource) class wxPyDropSource { public: #ifdef __WXMSW__ - wxPyDropSource(wxWindow *win = NULL, - const wxCursor &cursorCopy = wxNullCursor, - const wxCursor &cursorMove = wxNullCursor, - const wxCursor &cursorStop = wxNullCursor); + wxPyDropSource(wxWindow *win = NULL, + const wxCursor &copy = wxNullCursor, + const wxCursor &move = wxNullCursor, + const wxCursor &none = wxNullCursor); #else wxPyDropSource(wxWindow *win = NULL, - const wxIcon &go = wxNullIcon); + const wxIcon& copy = wxNullIcon, + const wxIcon& move = wxNullIcon, + const wxIcon& none = wxNullIcon); #endif void _setCallbackInfo(PyObject* self, PyObject* _class, int incref); diff --git a/wxPython/src/controls.i b/wxPython/src/controls.i index 96ca6cb7b4..54ed6ec58a 100644 --- a/wxPython/src/controls.i +++ b/wxPython/src/controls.i @@ -338,6 +338,7 @@ public: %pragma(python) addtomethod = "wxPreCheckBox:val._setOORInfo(val)" bool GetValue(); + bool IsChecked(); void SetValue(const bool state); }; diff --git a/wxPython/src/controls2.i b/wxPython/src/controls2.i index 194a5ddb68..323166e3a8 100644 --- a/wxPython/src/controls2.i +++ b/wxPython/src/controls2.i @@ -498,7 +498,6 @@ public: return val " - // Sets information about the item bool SetItem(wxListItem& info) ; @@ -560,6 +559,10 @@ public: // view, otherwise the large icon view. int GetItemSpacing(bool isSmall) const; +#ifndef __WXMSW__ + void SetItemSpacing( int spacing, bool isSmall = FALSE ); +#endif + // Gets the number of selected items in the list control int GetSelectedItemCount() const; @@ -624,6 +627,8 @@ public: // End label editing, optionally cancelling the edit bool EndEditLabel(bool cancel); +#else + void EditLabel(long item); #endif // Ensures this item is visible @@ -700,6 +705,14 @@ public: '''get the currently focused item or -1 if none''' return self.GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED) + def GetFirstSelected(self, *args): + '''return first selected item, or -1 when none''' + return self.GetNextSelected(-1) + + def GetNextSelected(self, item): + '''return subsequent selected items, or -1 when no more''' + return self.GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) + def IsSelected(self, idx): '''return TRUE if the item is selected''' return self.GetItemState(idx, wxLIST_STATE_SELECTED) != 0 @@ -717,10 +730,14 @@ public: '''Append an item to the list control. The entry parameter should be a sequence with an item for each column''' if len(entry): + if wx.wxUSE_UNICODE: + cvtfunc = unicode + else: + cvtfunc = str pos = self.GetItemCount() - self.InsertStringItem(pos, str(entry[0])) + self.InsertStringItem(pos, cvtfunc(entry[0])) for i in range(1, len(entry)): - self.SetStringItem(pos, i, str(entry[i])) + self.SetStringItem(pos, i, cvtfunc(entry[i])) return pos " @@ -1091,8 +1108,8 @@ public: bool found; wxPyBeginBlockThreads(); if ((found = m_myInst.findCallback("OnCompareItems"))) { - PyObject *o1 = wxPyConstructObject((void*)&item1, "wxTreeItemId"); - PyObject *o2 = wxPyConstructObject((void*)&item2, "wxTreeItemId"); + PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId")); + PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId")); rval = m_myInst.callCallback(Py_BuildValue("(OO)",o1,o2)); Py_DECREF(o1); Py_DECREF(o2); @@ -1205,6 +1222,16 @@ public: } + // get the item's text colour + wxColour GetItemTextColour(const wxTreeItemId& item) const; + + // get the item's background colour + wxColour GetItemBackgroundColour(const wxTreeItemId& item) const; + + // get the item's font + wxFont GetItemFont(const wxTreeItemId& item) const; + + bool IsVisible(const wxTreeItemId& item); bool ItemHasChildren(const wxTreeItemId& item); bool IsExpanded(const wxTreeItemId& item); @@ -1212,7 +1239,7 @@ public: wxTreeItemId GetRootItem(); wxTreeItemId GetSelection(); - %name(GetItemParent) wxTreeItemId GetParent(const wxTreeItemId& item); + wxTreeItemId GetItemParent(const wxTreeItemId& item); //size_t GetSelections(wxArrayTreeItemIds& selection); %addmethods { PyObject* GetSelections() { @@ -1223,7 +1250,7 @@ public: num = self->GetSelections(array); for (x=0; x < num; x++) { wxTreeItemId *tii = new wxTreeItemId(array.Item(x)); - PyObject* item = wxPyConstructObject((void*)tii, "wxTreeItemId", TRUE); + PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), TRUE); PyList_Append(rval, item); } wxPyEndBlockThreads(); @@ -1283,12 +1310,11 @@ public: void SelectItem(const wxTreeItemId& item); void EnsureVisible(const wxTreeItemId& item); void ScrollTo(const wxTreeItemId& item); -#ifdef __WXMSW__ - wxTextCtrl* EditLabel(const wxTreeItemId& item); + wxTextCtrl* GetEditControl(); - void EndEditLabel(const wxTreeItemId& item, int discardChanges = FALSE); -#else void EditLabel(const wxTreeItemId& item); +#ifdef __WXMSW__ + void EndEditLabel(const wxTreeItemId& item, int discardChanges = FALSE); #endif void SortChildren(const wxTreeItemId& item); @@ -1314,7 +1340,7 @@ public: if (self->GetBoundingRect(item, rect, textOnly)) { wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); - PyObject* val = wxPyConstructObject((void*)r, "wxRect"); + PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect")); wxPyEndBlockThreads(); return val; } diff --git a/wxPython/src/drawlist.cpp b/wxPython/src/drawlist.cpp new file mode 100644 index 0000000000..cba7952b24 --- /dev/null +++ b/wxPython/src/drawlist.cpp @@ -0,0 +1,350 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: drawlist.cpp +// Purpose: Helper functions for optimized list drawing on a wxDC +// +// Author: Robin Dunn Chris Barker +// +// Created: +// RCS-ID: $Id$ +// Copyright: (c) 2003 by Total Control Software +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + + +#undef DEBUG +#include <Python.h> +#include "helpers.h" + + +//---------------------------------------------------------------------- + + + +PyObject* wxPyDrawXXXList(wxDC& dc, wxPyDrawListOp_t doDraw, + PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes) { + + wxPyBeginBlockThreads(); // _DrawXXXList + + bool isFastSeq = PyList_Check(pyCoords) || PyTuple_Check(pyCoords); + bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); + bool isFastBrushes = PyList_Check(pyBrushes) || PyTuple_Check(pyBrushes); + int numObjs = 0; + int numPens = 0; + int numBrushes = 0; + wxPen* pen; + wxBrush* brush; + PyObject* obj; + PyObject* coords; + int x1, x2, x3, x4; + int i = 0; + PyObject* retval; + + if (!PySequence_Check(pyCoords)) { + goto err0; + } + if (!PySequence_Check(pyPens)) { + goto err1; + } + if (!PySequence_Check(pyBrushes)) { + goto err2; + } + numObjs = PySequence_Length(pyCoords); + numPens = PySequence_Length(pyPens); + numBrushes = PySequence_Length(pyBrushes); + for (i = 0; i < numObjs; i++) { + // Use a new pen? + if (i < numPens) { + if (isFastPens) { + obj = PySequence_Fast_GET_ITEM(pyPens, i); + } + else { + obj = PySequence_GetItem(pyPens, i); + } + if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { + if (!isFastPens) + Py_DECREF(obj); + goto err1; + } + + dc.SetPen(*pen); + if (!isFastPens) + Py_DECREF(obj); + } + // Use a new brush? + if (i < numBrushes) { + if (isFastBrushes) { + obj = PySequence_Fast_GET_ITEM(pyBrushes, i); + } + else { + obj = PySequence_GetItem(pyBrushes, i); + } + if (SWIG_GetPtrObj(obj, (void **) &brush, "_wxBrush_p")) { + if (!isFastBrushes) + Py_DECREF(obj); + goto err2; + } + + dc.SetBrush(*brush); + if (!isFastBrushes) + Py_DECREF(obj); + } + + // Get the Coordinates + if (isFastSeq) { + coords = PySequence_Fast_GET_ITEM(pyCoords, i); + } + else { + coords = PySequence_GetItem(pyCoords, i); + } + + + // call the drawOp + bool success = doDraw(dc, coords); + if (!isFastSeq) + Py_DECREF(coords); + + if (! success) { + retval = NULL; + goto exit; + } + + } // end of main for loop + + Py_INCREF(Py_None); + retval = Py_None; + goto exit; + + + err0: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of coordinates"); + retval = NULL; + goto exit; + + err1: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); + retval = NULL; + goto exit; + + err2: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxBrushes"); + retval = NULL; + goto exit; + + + exit: + wxPyEndBlockThreads(); + return retval; +} + + + +bool wxPyDrawXXXPoint(wxDC& dc, PyObject* coords) { + int x, y; + + if (! wxPy2int_seq_helper(coords, &x, &y)) { + PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences."); + return FALSE; + } + dc.DrawPoint(x, y); + return TRUE; +} + +bool wxPyDrawXXXLine(wxDC& dc, PyObject* coords) { + int x1, y1, x2, y2; + + if (! wxPy4int_seq_helper(coords, &x1, &y1, &x2, &y2)) { + PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x1,y1, x1,y2) sequences."); + return FALSE; + } + dc.DrawLine(x1,y1, x2,y2); + return TRUE; +} + +bool wxPyDrawXXXRectangle(wxDC& dc, PyObject* coords) { + int x, y, w, h; + + if (! wxPy4int_seq_helper(coords, &x, &y, &w, &h)) { + PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y, w,h) sequences."); + return FALSE; + } + dc.DrawRectangle(x, y, w, h); + return TRUE; +} + +bool wxPyDrawXXXEllipse(wxDC& dc, PyObject* coords) { + int x, y, w, h; + + if (! wxPy4int_seq_helper(coords, &x, &y, &w, &h)) { + PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y, w,h) sequences."); + return FALSE; + } + dc.DrawEllipse(x, y, w, h); + return TRUE; +} + + +bool wxPyDrawXXXPolygon(wxDC& dc, PyObject* coords) { + wxPoint* points; + int numPoints; + + points = wxPoint_LIST_helper(coords, &numPoints); + if (! points) { + PyErr_SetString(PyExc_TypeError, "Expected a sequence of sequences of (x,y) sequences."); + return FALSE; + } + dc.DrawPolygon(numPoints, points); + return TRUE; +} + + +//---------------------------------------------------------------------- + + + +PyObject* wxPyDrawTextList(wxDC& dc, PyObject* textList, PyObject* pyPoints, PyObject* foregroundList, PyObject* backgroundList) { + wxPyBeginBlockThreads(); + + bool isFastSeq = PyList_Check(pyPoints) || PyTuple_Check(pyPoints); + bool isFastText = PyList_Check(textList) || PyTuple_Check(textList); + bool isFastForeground = PyList_Check(foregroundList) || PyTuple_Check(foregroundList); + bool isFastBackground = PyList_Check(backgroundList) || PyTuple_Check(backgroundList); + int numText = 0; + int numPoints = 0; + int numForeground = 0; + int numBackground = 0; + PyObject* obj; + int x1, y1; + int i = 0; + wxColor* color; + PyObject* retval; + wxString string; + + if (!PySequence_Check(pyPoints)) { + goto err0; + } + if (!PySequence_Check(textList)) { + goto err1; + } + if (!PySequence_Check(foregroundList)) { + goto err2; + } + if (!PySequence_Check(backgroundList)) { + goto err3; + } + numPoints = PySequence_Length(pyPoints); + numText = PySequence_Length(textList); + numForeground = PySequence_Length(foregroundList); + numBackground = PySequence_Length(backgroundList); + + for (i = 0; i < numPoints; i++) { + // Use a new string ? + if (i < numText) { + if ( isFastText ) { + obj = PySequence_Fast_GET_ITEM(textList, i); + } + else { + obj = PySequence_GetItem(textList, i); + } + if (! PyString_Check(obj) ) { + Py_DECREF(obj); + goto err1; + } + string = Py2wxString(obj); + if ( !isFastText ) + Py_DECREF(obj); + } + + if (i < numForeground) { + // Use a new foreground ? + if ( isFastForeground ) { + obj = PySequence_Fast_GET_ITEM(foregroundList, i); + } + else { + obj = PySequence_GetItem(foregroundList, i); + } + if (SWIG_GetPtrObj(obj, (void **) &color, "_wxColour_p")) { + if (!isFastForeground) + Py_DECREF(obj); + goto err2; + } + dc.SetTextForeground(*color); + if ( !isFastForeground ) + Py_DECREF(obj); + } + + if (i < numBackground) { + // Use a new background ? + if ( isFastBackground ) { + obj = PySequence_Fast_GET_ITEM(backgroundList, i); + } + else { + obj = PySequence_GetItem(backgroundList, i); + } + if (SWIG_GetPtrObj(obj, (void **) &color, "_wxColour_p")) { + if (!isFastBackground) + Py_DECREF(obj); + goto err3; + } + dc.SetTextBackground(*color); + if ( !isFastBackground ) + Py_DECREF(obj); + } + + // Get the point coordinates + if (isFastSeq) { + obj = PySequence_Fast_GET_ITEM(pyPoints, i); + } + else { + obj = PySequence_GetItem(pyPoints, i); + } + if (! wxPy2int_seq_helper(obj, &x1, &y1)) { + if (! isFastSeq) + Py_DECREF(obj); + goto err0; + } + if (PyErr_Occurred()) { + retval = NULL; + if (!isFastSeq) + Py_DECREF(obj); + goto exit; + } + + + // Now draw the text + dc.DrawText(string, x1, y1); + + if (!isFastText) + Py_DECREF(obj); + } + + Py_INCREF(Py_None); + retval = Py_None; + goto exit; + + err0: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences."); + retval = NULL; + goto exit; + err1: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of strings"); + retval = NULL; + goto exit; + + err2: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxColours for foregrounds"); + retval = NULL; + goto exit; + + err3: + PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxColours for backgrounds"); + retval = NULL; + goto exit; + + exit: + wxPyEndBlockThreads(); + return retval; +} + + + +//---------------------------------------------------------------------- diff --git a/wxPython/src/events.i b/wxPython/src/events.i index 5983169335..35fc30b0cc 100644 --- a/wxPython/src/events.i +++ b/wxPython/src/events.i @@ -407,7 +407,7 @@ public: for (int i=0; i<count; i++) { #if wxUSE_UNICODE - PyList_SetItem(list, i, PyUnicode_FromUnicode(files[i], files[i].Len())); + PyList_SetItem(list, i, PyUnicode_FromWideChar(files[i], files[i].Len())); #else PyList_SetItem(list, i, PyString_FromString((const char*)files[i])); #endif diff --git a/wxPython/src/filesys.i b/wxPython/src/filesys.i index 0f3b1371bd..69d782e325 100644 --- a/wxPython/src/filesys.i +++ b/wxPython/src/filesys.i @@ -33,7 +33,6 @@ %import streams.i %pragma(python) code = "import wx" -%pragma(python) code = "import string" //--------------------------------------------------------------------------- @@ -141,6 +140,12 @@ public: static void AddHandler(wxFileSystemHandler *handler); static void CleanUpHandlers(); + +// // Returns the native path for a file URL +// static wxFileName URLToFileName(const wxString& url); + +// // Returns the file URL for a native path +// static wxString FileNameToURL(const wxFileName& filename); }; //--------------------------------------------------------------------------- @@ -209,9 +214,9 @@ void __wxMemoryFSHandler_AddFile_Data(const wxString& filename, %pragma(python) code = " import types def wxMemoryFSHandler_AddFile(filename, a, b=''): - if isinstance(a, wxImage): + if wx.wxPy_isinstance(a, (wxImage, wxImagePtr)): __wxMemoryFSHandler_AddFile_wxImage(filename, a, b) - elif isinstance(a, wxBitmap): + elif wx.wxPy_isinstance(a, (wxBitmap, wxBitmapPtr)): __wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b) elif type(a) == types.StringType: #__wxMemoryFSHandler_AddFile_wxString(filename, a) diff --git a/wxPython/src/fonts.i b/wxPython/src/fonts.i index 4b94964473..dffe3ed4d2 100644 --- a/wxPython/src/fonts.i +++ b/wxPython/src/fonts.i @@ -131,6 +131,15 @@ enum wxFontEncoding wxFONTENCODING_UTF7, // UTF-7 Unicode encoding wxFONTENCODING_UTF8, // UTF-8 Unicode encoding + // Far Eastern encodings + // Chinese + wxFONTENCODING_GB2312 = wxFONTENCODING_CP936, // Simplified Chinese + wxFONTENCODING_BIG5 = wxFONTENCODING_CP950, // Traditional Chinese + + // Japanese (see http://zsigri.tripod.com/fontboard/cjk/jis.html) + wxFONTENCODING_SHIFT_JIS = wxFONTENCODING_CP932, // Shift JIS + wxFONTENCODING_EUC_JP, // Extended Unix Codepage for Japanese + wxFONTENCODING_UNICODE, // Unicode - currently used only by // wxEncodingConverter class @@ -147,26 +156,11 @@ enum wxFontEncoding // ToString() and restore them using FromString()) struct wxNativeFontInfo { -#ifdef __WXGTK__ - // init the elements from an XLFD, return TRUE if ok - bool FromXFontName(const wxString& xFontName); - - // return false if we were never initialized with a valid XLFD - bool IsDefault() const; - - // generate an XLFD using the fontElements - wxString GetXFontName() const; - - // set the XFLD - void SetXFontName(const wxString& xFontName); -#endif - - wxNativeFontInfo() { Init(); } + wxNativeFontInfo(); // reset to the default state void Init(); -#ifndef __WXGTK__ // accessors and modifiers for the font elements int GetPointSize() const; wxFontStyle GetStyle() const; @@ -183,7 +177,6 @@ struct wxNativeFontInfo void SetFaceName(wxString facename); void SetFamily(wxFontFamily family); void SetEncoding(wxFontEncoding encoding); -#endif // it is important to be able to serialize wxNativeFontInfo objects to be // able to store them (in config file, for example) @@ -204,6 +197,34 @@ struct wxNativeFontInfo }; +%{ +// Fix some link errors... Remove this when these methods get real implementations... +#if defined(__WXGTK__) || defined(__WXX11__) +#if wxUSE_PANGO +void wxNativeFontInfo::SetPointSize(int pointsize) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetStyle(wxFontStyle style) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetWeight(wxFontWeight weight) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined)) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFaceName(wxString facename) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFamily(wxFontFamily family) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) + { wxFAIL_MSG( _T("not implemented") ); } +#endif +#endif +%} + //--------------------------------------------------------------------------- // wxFontMapper manages user-definable correspondence between logical font // names and the fonts present on the machine. @@ -307,6 +328,13 @@ public: wxFontEncoding encoding=wxFONTENCODING_DEFAULT); %name(wxFontFromNativeInfo)wxFont(const wxNativeFontInfo& info); + %addmethods { + %new wxFont* wxFontFromNativeInfoString(const wxString& info) { + wxNativeFontInfo nfi; + nfi.FromString(info); + return new wxFont(nfi); + } + } ~wxFont(); @@ -340,6 +368,9 @@ public: wxString GetStyleString() const; wxString GetWeightString() const; + void SetNoAntiAliasing( bool no = TRUE ); + bool GetNoAntiAliasing(); + static wxFontEncoding GetDefaultEncoding(); static void SetDefaultEncoding(wxFontEncoding encoding); @@ -412,7 +443,9 @@ public: enum wxLanguage { + // user's default/preffered language as got from OS: wxLANGUAGE_DEFAULT, + // unknown language, if wxLocale::GetSystemLanguage fails: wxLANGUAGE_UNKNOWN, wxLANGUAGE_ABKHAZIAN, @@ -691,16 +724,28 @@ public: wxLocale(int language = wxLANGUAGE_DEFAULT, int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); - // the same as a function (returns TRUE on success) - bool Init(const wxString& szName, - const wxString& szShort = wxPyEmptyString, - const wxString& szLocale = wxPyEmptyString, - bool bLoadDefault = TRUE, - bool bConvertEncoding = FALSE); - // restores old locale ~wxLocale(); + %name(Init1)bool Init(const wxString& szName, + const wxString& szShort = wxPyEmptyString, + const wxString& szLocale = wxPyEmptyString, + bool bLoadDefault = TRUE, + bool bConvertEncoding = FALSE); + + %name(Init2) bool Init(int language = wxLANGUAGE_DEFAULT, + int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); + + %pragma(python) addtoclass = " + def Init(self, *_args, **_kwargs): + if type(_args[0]) in [type(''), type(u'')]: + val = apply(self.Init1, _args, _kwargs) + else: + val = apply(self.Init2, _args, _kwargs) + return val + " + + // Try to get user's (or OS's) prefered language setting. // Return wxLANGUAGE_UNKNOWN if language-guessing algorithm failed static int GetSystemLanguage(); diff --git a/wxPython/src/frames.i b/wxPython/src/frames.i index 25989c93f0..619ae6ebe2 100644 --- a/wxPython/src/frames.i +++ b/wxPython/src/frames.i @@ -145,11 +145,9 @@ public: wxMenuBar *GetMenuBar(); - // call this to simulate a menu command - bool Command(int id); - // process menu command: returns TRUE if processed bool ProcessCommand(int id); + %pragma(python) addtoclass = "Command = ProcessCommand" // create the main status bar wxStatusBar* CreateStatusBar(int number = 1, diff --git a/wxPython/src/gdi.i b/wxPython/src/gdi.i index b5cee56b36..89ff2da8e2 100644 --- a/wxPython/src/gdi.i +++ b/wxPython/src/gdi.i @@ -34,6 +34,7 @@ %import misc.i %import fonts.i +%pragma(python) code = "import wx" //--------------------------------------------------------------------------- %{ @@ -67,6 +68,11 @@ public: bool LoadFile(const wxString& name, wxBitmapType type=wxBITMAP_TYPE_ANY); bool SaveFile(const wxString& name, wxBitmapType type, wxPalette* palette = NULL); void SetMask(wxMask* mask); + %pragma(python) addtoclass = " + def SetMaskColour(self, colour): + mask = wxMaskColour(self, colour) + self.SetMask(mask) + " #ifdef __WXMSW__ void SetPalette(wxPalette& palette); #endif @@ -95,14 +101,6 @@ public: void SetQuality(int q); #endif - %pragma(python) addtoclass = " - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxBitmap(self) - except: - pass -" }; @@ -231,14 +229,6 @@ public: #endif void CopyFromBitmap(const wxBitmap& bmp); - %pragma(python) addtoclass = " - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxIcon(self) - except: - pass -" }; @@ -337,6 +327,17 @@ public: } %} +%new wxCursor* wxCursorFromImage(const wxImage& image); +%{ + wxCursor* wxCursorFromImage(const wxImage& image) { + #ifndef __WXMAC__ + return new wxCursor(image); + #else + return NULL; + #endif + } +%} + //---------------------------------------------------------------------- class wxColour : public wxObject { @@ -351,15 +352,45 @@ public: %addmethods { PyObject* Get() { PyObject* rv = PyTuple_New(3); - PyTuple_SetItem(rv, 0, PyInt_FromLong(self->Red())); - PyTuple_SetItem(rv, 1, PyInt_FromLong(self->Green())); - PyTuple_SetItem(rv, 2, PyInt_FromLong(self->Blue())); + int red = -1; + int green = -1; + int blue = -1; + if (self->Ok()) { + red = self->Red(); + green = self->Green(); + blue = self->Blue(); + } + PyTuple_SetItem(rv, 0, PyInt_FromLong(red)); + PyTuple_SetItem(rv, 1, PyInt_FromLong(green)); + PyTuple_SetItem(rv, 2, PyInt_FromLong(blue)); return rv; } + bool __eq__(PyObject* obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } + bool __ne__(PyObject* obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } } - %pragma(python) addtoclass = "asTuple = Get" - %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" - %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" + + %pragma(python) addtoclass = "asTuple = Get + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxColour:' + str(self.asTuple()) + def __nonzero__(self): return self.Ok() + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) +" }; @@ -535,34 +566,34 @@ public: //---------------------------------------------------------------------- - class wxDC : public wxObject { public: // wxDC(); **** abstract base class, can't instantiate. ~wxDC(); void BeginDrawing(); + // %name(BlitXY) - bool Blit(long xdest, long ydest, - long width, long height, - wxDC *source, long xsrc, long ysrc, + bool Blit(wxCoord xdest, wxCoord ydest, + wxCoord width, wxCoord height, + wxDC *source, wxCoord xsrc, wxCoord ysrc, int logicalFunc = wxCOPY, int useMask = FALSE); // bool Blit(const wxPoint& destPt, const wxSize& sz, // wxDC *source, const wxPoint& srcPt, // int logicalFunc = wxCOPY, int useMask = FALSE); void Clear(); - void CrossHair(long x, long y); + void CrossHair(wxCoord x, wxCoord y); void DestroyClippingRegion(); - long DeviceToLogicalX(long x); - long DeviceToLogicalXRel(long x); - long DeviceToLogicalY(long y); - long DeviceToLogicalYRel(long y); - void DrawArc(long x1, long y1, long x2, long y2, long xc, long yc); - void DrawCircle(long x, long y, long radius); - void DrawEllipse(long x, long y, long width, long height); - void DrawEllipticArc(long x, long y, long width, long height, long start, long end); - void DrawIcon(const wxIcon& icon, long x, long y); + wxCoord DeviceToLogicalX(wxCoord x); + wxCoord DeviceToLogicalXRel(wxCoord x); + wxCoord DeviceToLogicalY(wxCoord y); + wxCoord DeviceToLogicalYRel(wxCoord y); + void DrawArc(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc); + void DrawCircle(wxCoord x, wxCoord y, wxCoord radius); + void DrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height); + void DrawEllipticArc(wxCoord x, wxCoord y, wxCoord width, wxCoord height, wxCoord start, wxCoord end); + void DrawIcon(const wxIcon& icon, wxCoord x, wxCoord y); void DrawLabel(const wxString& text, const wxRect& rect, int alignment = wxALIGN_LEFT | wxALIGN_TOP, @@ -580,27 +611,27 @@ public: } } - void DrawLine(long x1, long y1, long x2, long y2); - void DrawLines(int PCOUNT, wxPoint* points, long xoffset=0, long yoffset=0); - void DrawPolygon(int PCOUNT, wxPoint* points, long xoffset=0, long yoffset=0, + void DrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2); + void DrawLines(int PCOUNT, wxPoint* points, wxCoord xoffset=0, wxCoord yoffset=0); + void DrawPolygon(int PCOUNT, wxPoint* points, wxCoord xoffset=0, wxCoord yoffset=0, int fill_style=wxODDEVEN_RULE); - void DrawPoint(long x, long y); - void DrawRectangle(long x, long y, long width, long height); + void DrawPoint(wxCoord x, wxCoord y); + void DrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height); %name(DrawRectangleRect)void DrawRectangle(const wxRect& rect); void DrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle); - void DrawRoundedRectangle(long x, long y, long width, long height, long radius=20); + void DrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, wxCoord radius=20); void DrawSpline(int PCOUNT, wxPoint* points); - void DrawText(const wxString& text, long x, long y); + void DrawText(const wxString& text, wxCoord x, wxCoord y); void EndDoc(); void EndDrawing(); void EndPage(); - bool FloodFill(long x, long y, const wxColour& colour, int style=wxFLOOD_SURFACE); + bool FloodFill(wxCoord x, wxCoord y, const wxColour& colour, int style=wxFLOOD_SURFACE); wxBrush GetBackground(); wxBrush GetBrush(); - long GetCharHeight(); - long GetCharWidth(); - void GetClippingBox(long *OUTPUT, long *OUTPUT, - long *OUTPUT, long *OUTPUT); + wxCoord GetCharHeight(); + wxCoord GetCharWidth(); + void GetClippingBox(wxCoord *OUTPUT, wxCoord *OUTPUT, + wxCoord *OUTPUT, wxCoord *OUTPUT); wxFont GetFont(); int GetLogicalFunction(); void GetLogicalScale(double *OUTPUT, double *OUTPUT); @@ -608,7 +639,7 @@ public: bool GetOptimization(); wxPen GetPen(); %addmethods { - %new wxColour* GetPixel(long x, long y) { + %new wxColour* GetPixel(wxCoord x, wxCoord y) { wxColour* wc = new wxColour(); self->GetPixel(x, y, wc); return wc; @@ -618,25 +649,27 @@ public: wxSize GetSize(); wxSize GetSizeMM(); wxColour GetTextBackground(); - void GetTextExtent(const wxString& string, long *OUTPUT, long *OUTPUT); + void GetTextExtent(const wxString& string, wxCoord *OUTPUT, wxCoord *OUTPUT); %name(GetFullTextExtent)void GetTextExtent(const wxString& string, - long *OUTPUT, long *OUTPUT, long *OUTPUT, long* OUTPUT, + wxCoord *OUTPUT, wxCoord *OUTPUT, wxCoord *OUTPUT, wxCoord* OUTPUT, const wxFont* font = NULL); + void GetMultiLineTextExtent(const wxString& text, wxCoord *OUTPUT, wxCoord *OUTPUT, wxCoord *OUTPUT, + wxFont *font = NULL); wxColour GetTextForeground(); void GetUserScale(double *OUTPUT, double *OUTPUT); - long LogicalToDeviceX(long x); - long LogicalToDeviceXRel(long x); - long LogicalToDeviceY(long y); - long LogicalToDeviceYRel(long y); - long MaxX(); - long MaxY(); - long MinX(); - long MinY(); + wxCoord LogicalToDeviceX(wxCoord x); + wxCoord LogicalToDeviceXRel(wxCoord x); + wxCoord LogicalToDeviceY(wxCoord y); + wxCoord LogicalToDeviceYRel(wxCoord y); + wxCoord MaxX(); + wxCoord MaxY(); + wxCoord MinX(); + wxCoord MinY(); bool Ok(); - void SetDeviceOrigin(long x, long y); + void SetDeviceOrigin(wxCoord x, wxCoord y); void SetBackground(const wxBrush& brush); void SetBackgroundMode(int mode); - void SetClippingRegion(long x, long y, long width, long height); + void SetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height); %name(SetClippingRegionAsRegion) void SetClippingRegion(const wxRegion& region); %name(SetClippingRect) void SetClippingRegion(const wxRect& rect); void SetPalette(const wxPalette& colourMap); @@ -655,7 +688,7 @@ public: - void DrawBitmap(const wxBitmap& bitmap, long x, long y, + void DrawBitmap(const wxBitmap& bitmap, wxCoord x, wxCoord y, int useMask = FALSE); bool CanDrawBitmap(); @@ -681,192 +714,39 @@ public: #endif - %addmethods { - // NOTE: These methods are VERY SIMILAR in implentation. It would be - // nice to factor out common code and or turn them into a set of - // template-like macros. + %addmethods { // See drawlist.cpp for impplementaion of these... - // Draw a point for every set of coordinants in pyPoints, optionally - // setting a new pen for each - PyObject* _DrawPointList(PyObject* pyPoints, PyObject* pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyPoints) || PyTuple_Check(pyPoints); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyPoints)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyPoints); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the point coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyPoints, i); - } - else { - obj = PySequence_GetItem(pyPoints, i); - } - if (! _2int_seq_helper(obj, &x1, &y1)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - - // Now draw the point - self->DrawPoint(x1, y1); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; + PyObject* _DrawPointList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes) + { + return wxPyDrawXXXList(*self, wxPyDrawXXXPoint, pyCoords, pyPens, pyBrushes); } + PyObject* _DrawLineList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes) + { + return wxPyDrawXXXList(*self, wxPyDrawXXXLine, pyCoords, pyPens, pyBrushes); + } - // Draw a line for every set of coordinants in pyLines, optionally - // setting a new pen for each - PyObject* _DrawLineList(PyObject* pyLines, PyObject* pyPens) { - wxPyBeginBlockThreads(); + PyObject* _DrawRectangleList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes) + { + return wxPyDrawXXXList(*self, wxPyDrawXXXRectangle, pyCoords, pyPens, pyBrushes); + } - bool isFastSeq = PyList_Check(pyLines) || PyTuple_Check(pyLines); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1, x2, y2; - int i = 0; - PyObject* retval; + PyObject* _DrawEllipseList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes) + { + return wxPyDrawXXXList(*self, wxPyDrawXXXEllipse, pyCoords, pyPens, pyBrushes); + } - if (!PySequence_Check(pyLines)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyLines); - numPens = PySequence_Length(pyPens); + PyObject* _DrawPolygonList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes) + { + return wxPyDrawXXXList(*self, wxPyDrawXXXPolygon, pyCoords, pyPens, pyBrushes); + } - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the line coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyLines, i); - } - else { - obj = PySequence_GetItem(pyLines, i); - } - if (! _4int_seq_helper(obj, &x1, &y1, &x2, &y2)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - // Now draw the line - self->DrawLine(x1, y1, x2, y2); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x1,y1, x2,y2) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; + PyObject* _DrawTextList(PyObject* textList, PyObject* pyPoints, + PyObject* foregroundList, PyObject* backgroundList) { + return wxPyDrawTextList(*self, textList, pyPoints, foregroundList, backgroundList); } } - %pragma(python) addtoclass = " def DrawPointList(self, points, pens=None): if pens is None: @@ -875,7 +755,8 @@ public: pens = [pens] elif len(pens) != len(points): raise ValueError('points and pens must have same length') - return self._DrawPointList(points, pens) + return self._DrawPointList(points, pens, []) + def DrawLineList(self, lines, pens=None): if pens is None: @@ -884,7 +765,83 @@ public: pens = [pens] elif len(pens) != len(lines): raise ValueError('lines and pens must have same length') - return self._DrawLineList(lines, pens) + return self._DrawLineList(lines, pens, []) + + + def DrawRectangleList(self, rectangles, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(rectangles): + raise ValueError('rectangles and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(rectangles): + raise ValueError('rectangles and brushes must have same length') + return self._DrawRectangleList(rectangles, pens, brushes) + + + def DrawEllipseList(self, ellipses, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(ellipses): + raise ValueError('ellipses and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(ellipses): + raise ValueError('ellipses and brushes must have same length') + return self._DrawEllipseList(ellipses, pens, brushes) + + + def DrawPolygonList(self, polygons, pens=None, brushes=None): + ## Note: This does not currently support fill style or offset + ## you can always use the non-List version if need be. + ## I really would like to support fill-style, however, + ## but wxODDEVEN_RULE does not appear to be defined at the Python level + ## [It's in wx.py... --Robin] + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(polygons): + raise ValueError('polygons and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(polygons): + raise ValueError('polygons and brushes must have same length') + return self._DrawPolygonList(polygons, pens, brushes) + + + def DrawTextList(self, textList, coords, foregrounds = None, backgrounds = None, fonts = None): + ## NOTE: this does not currently support changing the font + ## Make sure you set Background mode to wxSolid (DC.SetBackgroundMode) + ## If you want backgounds to do anything. + if type(textList) == type(''): + textList = [textList] + elif len(textList) != len(coords): + raise ValueError('textlist and coords must have same length') + if foregrounds is None: + foregrounds = [] + elif isinstance(foregrounds, wxColourPtr): + foregrounds = [foregrounds] + elif len(foregrounds) != len(coords): + raise ValueError('foregrounds and coords must have same length') + if backgrounds is None: + backgrounds = [] + elif isinstance(backgrounds, wxColourPtr): + backgrounds = [backgrounds] + elif len(backgrounds) != len(coords): + raise ValueError('backgrounds and coords must have same length') + return self._DrawTextList(textList, coords, foregrounds, backgrounds) " @@ -1082,7 +1039,7 @@ enum wxRegionContain { class wxRegion : public wxGDIObject { public: - wxRegion(long x=0, long y=0, long width=0, long height=0); + wxRegion(wxCoord x=0, wxCoord y=0, wxCoord width=0, wxCoord height=0); #ifndef __WXMAC__ %name(wxRegionFromPoints)wxRegion(int PCOUNT, wxPoint* points, int fillStyle = wxWINDING_RULE); #endif @@ -1093,28 +1050,28 @@ public: bool Offset(wxCoord x, wxCoord y); #endif - wxRegionContain Contains(long x, long y); + wxRegionContain Contains(wxCoord x, wxCoord y); %name(ContainsPoint)wxRegionContain Contains(const wxPoint& pt); %name(ContainsRect)wxRegionContain Contains(const wxRect& rect); - %name(ContainsRectDim)wxRegionContain Contains(long x, long y, long w, long h); + %name(ContainsRectDim)wxRegionContain Contains(wxCoord x, wxCoord y, wxCoord w, wxCoord h); wxRect GetBox(); - bool Intersect(long x, long y, long width, long height); + bool Intersect(wxCoord x, wxCoord y, wxCoord width, wxCoord height); %name(IntersectRect)bool Intersect(const wxRect& rect); %name(IntersectRegion)bool Intersect(const wxRegion& region); bool IsEmpty(); - bool Union(long x, long y, long width, long height); + bool Union(wxCoord x, wxCoord y, wxCoord width, wxCoord height); %name(UnionRect)bool Union(const wxRect& rect); %name(UnionRegion)bool Union(const wxRegion& region); - bool Subtract(long x, long y, long width, long height); + bool Subtract(wxCoord x, wxCoord y, wxCoord width, wxCoord height); %name(SubtractRect)bool Subtract(const wxRect& rect); %name(SubtractRegion)bool Subtract(const wxRegion& region); - bool Xor(long x, long y, long width, long height); + bool Xor(wxCoord x, wxCoord y, wxCoord width, wxCoord height); %name(XorRect)bool Xor(const wxRect& rect); %name(XorRegion)bool Xor(const wxRegion& region); }; @@ -1126,12 +1083,12 @@ public: wxRegionIterator(const wxRegion& region); ~wxRegionIterator(); - long GetX(); - long GetY(); - long GetW(); - long GetWidth(); - long GetH(); - long GetHeight(); + wxCoord GetX(); + wxCoord GetY(); + wxCoord GetW(); + wxCoord GetWidth(); + wxCoord GetH(); + wxCoord GetHeight(); wxRect GetRect(); bool HaveRects(); void Reset(); diff --git a/wxPython/src/grid.i b/wxPython/src/grid.i index ed7a4e4e8a..b8bcd62b3d 100644 --- a/wxPython/src/grid.i +++ b/wxPython/src/grid.i @@ -70,7 +70,7 @@ PyObject* wxPyMake_##TYPE(TYPE* source) { \ /* Otherwise make a new wrapper for it the old fashioned way and \ give it the OOR treatment */ \ if (! target) { \ - target = wxPyConstructObject(source, #TYPE, FALSE); \ + target = wxPyConstructObject(source, wxT(#TYPE), FALSE); \ if (target) \ source->SetClientObject(new wxPyOORClientData(target)); \ } \ @@ -571,7 +571,7 @@ public: PyObject* go = wxPyMake_wxObject(&grid); PyObject* dco = wxPyMake_wxObject(&dc); PyObject* ao = wxPyMake_wxGridCellAttr(&attr); - PyObject* ro = wxPyConstructObject((void*)&rect, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOOiii)", go, ao, dco, ro, row, col, isSelected)); @@ -747,6 +747,9 @@ public: wxControl* GetControl(); void SetControl(wxControl* control); + wxGridCellAttr* GetCellAttr(); + void SetCellAttr(wxGridCellAttr* attr); + void SetParameters(const wxString& params); void IncRef(); void DecRef(); @@ -856,7 +859,7 @@ public: wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "PaintBackground)"))) { PyObject* ao = wxPyMake_wxGridCellAttr(attr); - PyObject* ro = wxPyConstructObject((void*)&rectCell, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rectCell, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", ro, ao)); @@ -1403,8 +1406,17 @@ public: return *self != other; } } - %pragma(python) addtoclass = "def __str__(self): return str(self.asTuple())" - %pragma(python) addtoclass = "def __repr__(self): return str(self.asTuple())" + %pragma(python) addtoclass = " + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxGridCellCoords'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.SetRow(val) + elif index == 1: self.SetCol(val) + else: raise IndexError + " + }; // Typemap to allow conversion of sequence objects to wxGridCellCoords... @@ -1440,6 +1452,36 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { } %} + + +// Typemap to convert an array of cells coords to a list of tuples... +%typemap(python, out) wxGridCellCoordsArray { + $target = wxGridCellCoordsArray_helper($source); +} + +%typemap(python, ret) wxGridCellCoordsArray { + delete $source; +} + + +// ...and the helper function for the above typemap. +%{ +PyObject* wxGridCellCoordsArray_helper(const wxGridCellCoordsArray* source) +{ + PyObject* list = PyList_New(0); + size_t idx; + for (idx = 0; idx < source->GetCount(); idx += 1) { + wxGridCellCoords& coord = source->Item(idx); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(coord.GetRow())); + PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(coord.GetCol())); + PyList_Append(list, tup); + Py_DECREF(tup); + } + return list; +} +%} + //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // The grid itself @@ -1763,12 +1805,15 @@ public: bool IsInSelection( int row, int col ); // TODO: ??? bool IsInSelection( const wxGridCellCoords& coords ) -// TODO: These need typemaps -// wxGridCellCoordsArray GetSelectedCells() const; -// wxGridCellCoordsArray GetSelectionBlockTopLeft() const; -// wxGridCellCoordsArray GetSelectionBlockBottomRight() const; -// wxArrayInt GetSelectedRows() const; -// wxArrayInt GetSelectedCols() const; + const wxGridCellCoordsArray GetSelectedCells() const; + const wxGridCellCoordsArray GetSelectionBlockTopLeft() const; + const wxGridCellCoordsArray GetSelectionBlockBottomRight() const; + const wxArrayInt GetSelectedRows() const; + const wxArrayInt GetSelectedCols() const; + + void DeselectRow( int row ); + void DeselectCol( int col ); + void DeselectCell( int row, int col ); // This function returns the rectangle that encloses the block of cells diff --git a/wxPython/src/gtk/calendar.cpp b/wxPython/src/gtk/calendar.cpp index 2251d3f2f4..85f1971fc2 100644 --- a/wxPython/src/gtk/calendar.cpp +++ b/wxPython/src/gtk/calendar.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -130,8 +129,7 @@ static PyObject *_wrap_new_wxCalendarDateAttr(PyObject *self, PyObject *args, Py return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxCalendarDateAttr. Expected _wxFont_p."); return NULL; } @@ -316,8 +314,7 @@ static PyObject *_wrap_wxCalendarDateAttr_SetFont(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarDateAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -897,8 +894,7 @@ static PyObject *_wrap_new_wxCalendarCtrl(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxCalendarCtrl. Expected _wxDateTime_p."); return NULL; } @@ -1007,8 +1003,7 @@ static PyObject *_wrap_wxCalendarCtrl_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxCalendarCtrl_Create. Expected _wxDateTime_p."); return NULL; } @@ -1065,8 +1060,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetDate(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetDate. Expected _wxDateTime_p."); return NULL; } @@ -1139,8 +1133,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetLowerDateLimit(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetLowerDateLimit. Expected _wxDateTime_p."); return NULL; } @@ -1212,8 +1205,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetUpperDateLimit(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetUpperDateLimit. Expected _wxDateTime_p."); return NULL; } @@ -1287,15 +1279,13 @@ static PyObject *_wrap_wxCalendarCtrl_SetDateRange(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetDateRange. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxCalendarCtrl_SetDateRange. Expected _wxDateTime_p."); return NULL; } diff --git a/wxPython/src/gtk/calendar.py b/wxPython/src/gtk/calendar.py index f20a55db56..355ee1bfa5 100644 --- a/wxPython/src/gtk/calendar.py +++ b/wxPython/src/gtk/calendar.py @@ -282,3 +282,4 @@ wxEVT_CALENDAR_WEEKDAY_CLICKED = calendarc.wxEVT_CALENDAR_WEEKDAY_CLICKED # Stuff these names into the wx namespace so wxPyConstructObject can find them wx.wxCalendarEventPtr = wxCalendarEventPtr +wx.wxCalendarCtrlPtr = wxCalendarCtrlPtr diff --git a/wxPython/src/gtk/clip_dnd.cpp b/wxPython/src/gtk/clip_dnd.cpp index e02f3636bd..dfbd2b20e4 100644 --- a/wxPython/src/gtk/clip_dnd.cpp +++ b/wxPython/src/gtk/clip_dnd.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -191,7 +190,7 @@ wxBitmap wxPyBitmapDataObject::GetBitmap() { void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { wxPyBeginBlockThreads(); if (m_myInst.findCallback("SetBitmap")) { - PyObject* bo = wxPyConstructObject((void*)&bitmap, "wxBitmap"); + PyObject* bo = wxPyConstructObject((void*)&bitmap, wxT("wxBitmap")); m_myInst.callCallback(Py_BuildValue("(O)", bo)); Py_DECREF(bo); } @@ -204,15 +203,17 @@ void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { class wxPyDropSource : public wxDropSource { public: #ifdef __WXMSW__ - wxPyDropSource(wxWindow *win = NULL, - const wxCursor &cursorCopy = wxNullCursor, - const wxCursor &cursorMove = wxNullCursor, - const wxCursor &cursorStop = wxNullCursor) - : wxDropSource(win, cursorCopy, cursorMove, cursorStop) {} + wxPyDropSource(wxWindow *win = NULL, + const wxCursor &copy = wxNullCursor, + const wxCursor &move = wxNullCursor, + const wxCursor &none = wxNullCursor) + : wxDropSource(win, copy, move, none) {} #else wxPyDropSource(wxWindow *win = NULL, - const wxIcon &go = wxNullIcon) - : wxDropSource(win, go) {} + const wxIcon& copy = wxNullIcon, + const wxIcon& move = wxNullIcon, + const wxIcon& none = wxNullIcon) + : wxDropSource(win, copy, move, none) {} #endif ~wxPyDropSource() { } @@ -535,7 +536,7 @@ static PyObject *_wrap_wxDataFormat_GetId(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -711,43 +712,6 @@ static PyObject *_wrap_wxDataObject_GetAllFormats(PyObject *self, PyObject *args return _resultobj; } -#define wxDataObject_GetDataSize(_swigobj,_swigarg0) (_swigobj->GetDataSize(_swigarg0)) -static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - size_t _result; - wxDataObject * _arg0; - wxDataFormat * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","format", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - #define wxDataObject_GetDataHere(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetDataHere(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -771,8 +735,7 @@ static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataHere. Expected _wxDataFormat_p."); return NULL; } @@ -794,6 +757,42 @@ static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, return _resultobj; } +#define wxDataObject_GetDataSize(_swigobj,_swigarg0) (_swigobj->GetDataSize(_swigarg0)) +static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + size_t _result; + wxDataObject * _arg0; + wxDataFormat * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","format", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxDataObject_SetData(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->SetData(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -818,8 +817,7 @@ static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_SetData. Expected _wxDataFormat_p."); return NULL; } @@ -862,8 +860,7 @@ static PyObject *_wrap_wxDataObject_IsSupportedFormat(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_IsSupportedFormat. Expected _wxDataFormat_p."); return NULL; } @@ -899,8 +896,7 @@ static PyObject *_wrap_new_wxDataObjectSimple(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxDataObjectSimple",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDataObjectSimple. Expected _wxDataFormat_p."); return NULL; } @@ -977,8 +973,7 @@ static PyObject *_wrap_wxDataObjectSimple_SetFormat(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObjectSimple_SetFormat. Expected _wxDataFormat_p."); return NULL; } @@ -1023,8 +1018,7 @@ static PyObject *_wrap_new_wxPyDataObjectSimple(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyDataObjectSimple",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyDataObjectSimple. Expected _wxDataFormat_p."); return NULL; } @@ -1263,7 +1257,7 @@ static PyObject *_wrap_wxTextDataObject_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1442,8 +1436,7 @@ static PyObject *_wrap_new_wxBitmapDataObject(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxBitmapDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxBitmapDataObject. Expected _wxBitmap_p."); return NULL; } @@ -1514,8 +1507,7 @@ static PyObject *_wrap_wxBitmapDataObject_SetBitmap(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapDataObject_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1568,8 +1560,7 @@ static PyObject *_wrap_new_wxPyBitmapDataObject(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyBitmapDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyBitmapDataObject. Expected _wxBitmap_p."); return NULL; } @@ -1732,8 +1723,7 @@ static PyObject *_wrap_new_wxCustomDataObject(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxCustomDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxCustomDataObject. Expected _wxDataFormat_p."); return NULL; } @@ -1957,7 +1947,7 @@ static PyObject *_wrap_wxURLDataObject_GetURL(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2220,8 +2210,7 @@ static PyObject *_wrap_wxClipboard_IsSupported(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_IsSupported. Expected _wxDataFormat_p."); return NULL; } @@ -2257,8 +2246,7 @@ static PyObject *_wrap_wxClipboard_GetData(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_GetData. Expected _wxDataObject_p."); return NULL; } @@ -2358,19 +2346,23 @@ static PyObject *_wrap_wxClipboard_UsePrimarySelection(PyObject *self, PyObject return _resultobj; } -#define new_wxDropSource(_swigarg0,_swigarg1) (new wxPyDropSource(_swigarg0,_swigarg1)) +#define new_wxDropSource(_swigarg0,_swigarg1,_swigarg2,_swigarg3) (new wxPyDropSource(_swigarg0,_swigarg1,_swigarg2,_swigarg3)) static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxPyDropSource * _result; wxWindow * _arg0 = (wxWindow *) NULL; wxIcon * _arg1 = (wxIcon *) &wxNullIcon; + wxIcon * _arg2 = (wxIcon *) &wxNullIcon; + wxIcon * _arg3 = (wxIcon *) &wxNullIcon; PyObject * _argo0 = 0; PyObject * _argo1 = 0; - char *_kwnames[] = { "win","go", NULL }; + PyObject * _argo2 = 0; + PyObject * _argo3 = 0; + char *_kwnames[] = { "win","copy","move","none", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OO:new_wxDropSource",_kwnames,&_argo0,&_argo1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OOOO:new_wxDropSource",_kwnames,&_argo0,&_argo1,&_argo2,&_argo3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -2380,15 +2372,26 @@ static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDropSource. Expected _wxIcon_p."); return NULL; } } + if (_argo2) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxIcon_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxDropSource. Expected _wxIcon_p."); + return NULL; + } + } + if (_argo3) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxIcon_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxDropSource. Expected _wxIcon_p."); + return NULL; + } + } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxPyDropSource *)new_wxDropSource(_arg0,*_arg1); + _result = (wxPyDropSource *)new_wxDropSource(_arg0,*_arg1,*_arg2,*_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2489,8 +2492,7 @@ static PyObject *_wrap_wxDropSource_SetData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDropSource_SetData. Expected _wxDataObject_p."); return NULL; } @@ -2562,8 +2564,7 @@ static PyObject *_wrap_wxDropSource_SetCursor(PyObject *self, PyObject *args, Py } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDropSource_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -3502,8 +3503,8 @@ static PyMethodDef clip_dndcMethods[] = { { "new_wxDataObjectSimple", (PyCFunction) _wrap_new_wxDataObjectSimple, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_IsSupportedFormat", (PyCFunction) _wrap_wxDataObject_IsSupportedFormat, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_SetData", (PyCFunction) _wrap_wxDataObject_SetData, METH_VARARGS | METH_KEYWORDS }, - { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetDataSize", (PyCFunction) _wrap_wxDataObject_GetDataSize, METH_VARARGS | METH_KEYWORDS }, + { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetAllFormats", (PyCFunction) _wrap_wxDataObject_GetAllFormats, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetFormatCount", (PyCFunction) _wrap_wxDataObject_GetFormatCount, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetPreferredFormat", (PyCFunction) _wrap_wxDataObject_GetPreferredFormat, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/clip_dnd.py b/wxPython/src/gtk/clip_dnd.py index b909a3028f..d77b5da68d 100644 --- a/wxPython/src/gtk/clip_dnd.py +++ b/wxPython/src/gtk/clip_dnd.py @@ -11,9 +11,12 @@ class wxDataFormatPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDataFormat(self) + def __del__(self, delfunc=clip_dndc.delete_wxDataFormat): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetType(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataFormat_SetType,(self,) + _args, _kwargs) return val @@ -43,9 +46,12 @@ class wxDataObjectPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDataObject(self) + def __del__(self, delfunc=clip_dndc.delete_wxDataObject): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPreferredFormat(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetPreferredFormat,(self,) + _args, _kwargs) if val: val = wxDataFormatPtr(val) ; val.thisown = 1 @@ -56,12 +62,12 @@ class wxDataObjectPtr : def GetAllFormats(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetAllFormats,(self,) + _args, _kwargs) return val - def GetDataSize(self, *_args, **_kwargs): - val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs) - return val def GetDataHere(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetDataHere,(self,) + _args, _kwargs) return val + def GetDataSize(self, *_args, **_kwargs): + val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs) + return val def SetData(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_SetData,(self,) + _args, _kwargs) return val @@ -330,9 +336,12 @@ class wxDropSourcePtr : def _setCallbackInfo(self, *_args, **_kwargs): val = apply(clip_dndc.wxDropSource__setCallbackInfo,(self,) + _args, _kwargs) return val - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDropSource(self) + def __del__(self, delfunc=clip_dndc.delete_wxDropSource): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetData(self, *_args, **_kwargs): val = apply(clip_dndc.wxDropSource_SetData,(self,) + _args, _kwargs) return val @@ -380,9 +389,12 @@ class wxPyDropTargetPtr(wxDropTargetPtr): def _setCallbackInfo(self, *_args, **_kwargs): val = apply(clip_dndc.wxPyDropTarget__setCallbackInfo,(self,) + _args, _kwargs) return val - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxPyDropTarget(self) + def __del__(self, delfunc=clip_dndc.delete_wxPyDropTarget): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetDataObject(self, *_args, **_kwargs): val = apply(clip_dndc.wxPyDropTarget_GetDataObject,(self,) + _args, _kwargs) if val: val = wxDataObjectPtr(val) diff --git a/wxPython/src/gtk/cmndlgs.cpp b/wxPython/src/gtk/cmndlgs.cpp index 847d2aad57..a0670156ea 100644 --- a/wxPython/src/gtk/cmndlgs.cpp +++ b/wxPython/src/gtk/cmndlgs.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -658,7 +657,7 @@ static PyObject *_wrap_wxDirDialog_GetPath(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -695,7 +694,7 @@ static PyObject *_wrap_wxDirDialog_GetMessage(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -999,7 +998,7 @@ static PyObject *_wrap_wxFileDialog_GetDirectory(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1036,7 +1035,7 @@ static PyObject *_wrap_wxFileDialog_GetFilename(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1101,7 +1100,7 @@ static PyObject *_wrap_wxFileDialog_GetMessage(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1138,7 +1137,7 @@ static PyObject *_wrap_wxFileDialog_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1203,7 +1202,7 @@ static PyObject *_wrap_wxFileDialog_GetWildcard(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1958,7 +1957,7 @@ static PyObject *_wrap_wxSingleChoiceDialog_GetStringSelection(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2172,7 +2171,7 @@ static PyObject *_wrap_wxTextEntryDialog_GetValue(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2568,8 +2567,7 @@ static PyObject *_wrap_wxFontData_SetChosenFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFontData_SetChosenFont. Expected _wxFont_p."); return NULL; } @@ -2641,8 +2639,7 @@ static PyObject *_wrap_wxFontData_SetInitialFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFontData_SetInitialFont. Expected _wxFont_p."); return NULL; } @@ -2781,8 +2778,7 @@ static PyObject *_wrap_new_wxFontDialog(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFontData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFontData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxFontDialog. Expected _wxFontData_p."); return NULL; } @@ -3277,7 +3273,7 @@ static PyObject *_wrap_wxFindDialogEvent_GetFindString(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3315,7 +3311,7 @@ static PyObject *_wrap_wxFindDialogEvent_GetReplaceString(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3555,7 +3551,7 @@ static PyObject *_wrap_wxFindReplaceData_GetFindString(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3590,7 +3586,7 @@ static PyObject *_wrap_wxFindReplaceData_GetReplaceString(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/gtk/cmndlgs.py b/wxPython/src/gtk/cmndlgs.py index f1c5c95ea7..9555d3bc82 100644 --- a/wxPython/src/gtk/cmndlgs.py +++ b/wxPython/src/gtk/cmndlgs.py @@ -41,9 +41,12 @@ class wxColourDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxColourData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxColourData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetChooseFull(self, *_args, **_kwargs): val = apply(cmndlgsc.wxColourData_GetChooseFull,(self,) + _args, _kwargs) return val @@ -271,9 +274,12 @@ class wxFontDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxFontData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxFontData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableEffects(self, *_args, **_kwargs): val = apply(cmndlgsc.wxFontData_EnableEffects,(self,) + _args, _kwargs) return val @@ -427,9 +433,12 @@ class wxFindReplaceDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxFindReplaceData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxFindReplaceData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetFindString(self, *_args, **_kwargs): val = apply(cmndlgsc.wxFindReplaceData_GetFindString,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/controls.cpp b/wxPython/src/gtk/controls.cpp index 66f0208270..67ccac15bd 100644 --- a/wxPython/src/gtk/controls.cpp +++ b/wxPython/src/gtk/controls.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -210,8 +209,7 @@ static PyObject *_wrap_new_wxControl(PyObject *self, PyObject *args, PyObject *k return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxControl. Expected _wxValidator_p."); return NULL; } @@ -320,8 +318,7 @@ static PyObject *_wrap_wxControl_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxControl_Create. Expected _wxValidator_p."); return NULL; } @@ -366,8 +363,7 @@ static PyObject *_wrap_wxControl_Command(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCommandEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCommandEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxControl_Command. Expected _wxCommandEvent_p."); return NULL; } @@ -409,7 +405,7 @@ static PyObject *_wrap_wxControl_GetLabel(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -575,7 +571,7 @@ static PyObject *_wrap_wxControlWithItems_GetString(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -748,7 +744,7 @@ static PyObject *_wrap_wxControlWithItems_GetStringSelection(PyObject *self, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -917,11 +913,10 @@ static PyObject *_wrap_wxControlWithItems_AppendItems(PyObject *self, PyObject * PyObject* item = PySequence_GetItem(_obj1, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg1->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg1->Add(PyString_AsString(str)); #endif + _arg1->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -1024,8 +1019,7 @@ static PyObject *_wrap_new_wxButton(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxButton. Expected _wxValidator_p."); return NULL; } @@ -1145,8 +1139,7 @@ static PyObject *_wrap_wxButton_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxButton_Create. Expected _wxValidator_p."); return NULL; } @@ -1369,8 +1362,7 @@ static PyObject *_wrap_new_wxBitmapButton(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxBitmapButton. Expected _wxBitmap_p."); return NULL; } @@ -1388,8 +1380,7 @@ static PyObject *_wrap_new_wxBitmapButton(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxBitmapButton. Expected _wxValidator_p."); return NULL; } @@ -1488,8 +1479,7 @@ static PyObject *_wrap_wxBitmapButton_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxBitmapButton_Create. Expected _wxBitmap_p."); return NULL; } @@ -1507,8 +1497,7 @@ static PyObject *_wrap_wxBitmapButton_Create(PyObject *self, PyObject *args, PyO return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxBitmapButton_Create. Expected _wxValidator_p."); return NULL; } @@ -1673,8 +1662,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapDisabled(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapDisabled. Expected _wxBitmap_p."); return NULL; } @@ -1710,8 +1698,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapFocus(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapFocus. Expected _wxBitmap_p."); return NULL; } @@ -1747,8 +1734,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapSelected(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapSelected. Expected _wxBitmap_p."); return NULL; } @@ -1784,8 +1770,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapLabel(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapLabel. Expected _wxBitmap_p."); return NULL; } @@ -1970,8 +1955,7 @@ static PyObject *_wrap_new_wxCheckBox(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxCheckBox. Expected _wxValidator_p."); return NULL; } @@ -2091,8 +2075,7 @@ static PyObject *_wrap_wxCheckBox_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxCheckBox_Create. Expected _wxValidator_p."); return NULL; } @@ -2149,6 +2132,34 @@ static PyObject *_wrap_wxCheckBox_GetValue(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxCheckBox_IsChecked(_swigobj) (_swigobj->IsChecked()) +static PyObject *_wrap_wxCheckBox_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxCheckBox * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCheckBox_IsChecked",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCheckBox_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCheckBox_IsChecked. Expected _wxCheckBox_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxCheckBox_IsChecked(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxCheckBox_SetValue(_swigobj,_swigarg0) (_swigobj->SetValue(_swigarg0)) static PyObject *_wrap_wxCheckBox_SetValue(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2274,8 +2285,7 @@ static PyObject *_wrap_new_wxChoice(PyObject *self, PyObject *args, PyObject *kw } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxChoice. Expected _wxValidator_p."); return NULL; } @@ -2405,8 +2415,7 @@ static PyObject *_wrap_wxChoice_Create(PyObject *self, PyObject *args, PyObject } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxChoice_Create. Expected _wxValidator_p."); return NULL; } @@ -2729,8 +2738,7 @@ static PyObject *_wrap_new_wxComboBox(PyObject *self, PyObject *args, PyObject * } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxComboBox. Expected _wxValidator_p."); return NULL; } @@ -2872,8 +2880,7 @@ static PyObject *_wrap_wxComboBox_Create(PyObject *self, PyObject *args, PyObjec } } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of wxComboBox_Create. Expected _wxValidator_p."); return NULL; } @@ -3051,7 +3058,7 @@ static PyObject *_wrap_wxComboBox_GetValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3459,7 +3466,7 @@ static PyObject *_wrap_wxComboBox_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3563,7 +3570,7 @@ static PyObject *_wrap_wxComboBox_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3779,8 +3786,7 @@ static PyObject *_wrap_new_wxGauge(PyObject *self, PyObject *args, PyObject *kwa return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxGauge. Expected _wxValidator_p."); return NULL; } @@ -3890,8 +3896,7 @@ static PyObject *_wrap_wxGauge_Create(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxGauge_Create. Expected _wxValidator_p."); return NULL; } @@ -4796,7 +4801,7 @@ static PyObject *_wrap_wxStaticText_GetLabel(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4940,8 +4945,7 @@ static PyObject *_wrap_new_wxListBox(PyObject *self, PyObject *args, PyObject *k } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxListBox. Expected _wxValidator_p."); return NULL; } @@ -5071,8 +5075,7 @@ static PyObject *_wrap_wxListBox_Create(PyObject *self, PyObject *args, PyObject } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxListBox_Create. Expected _wxValidator_p."); return NULL; } @@ -5643,8 +5646,7 @@ static PyObject *_wrap_new_wxCheckListBox(PyObject *self, PyObject *args, PyObje } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxCheckListBox. Expected _wxValidator_p."); return NULL; } @@ -5774,8 +5776,7 @@ static PyObject *_wrap_wxCheckListBox_Create(PyObject *self, PyObject *args, PyO } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxCheckListBox_Create. Expected _wxValidator_p."); return NULL; } @@ -6044,8 +6045,7 @@ static PyObject *_wrap_new_wxTextAttr(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxTextAttr. Expected _wxFont_p."); return NULL; } @@ -6186,8 +6186,7 @@ static PyObject *_wrap_wxTextAttr_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -6421,15 +6420,13 @@ static PyObject *_wrap_wxTextAttr_Combine(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxTextAttr_Combine",_kwnames,&_argo0,&_argo1,&_argo2)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextAttr_Combine. Expected _wxTextAttr_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextAttr_Combine. Expected _wxTextAttr_p."); return NULL; } @@ -6536,8 +6533,7 @@ static PyObject *_wrap_new_wxTextCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxTextCtrl. Expected _wxValidator_p."); return NULL; } @@ -6658,8 +6654,7 @@ static PyObject *_wrap_wxTextCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxTextCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -6714,7 +6709,7 @@ static PyObject *_wrap_wxTextCtrl_GetValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6792,7 +6787,7 @@ static PyObject *_wrap_wxTextCtrl_GetRange(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6859,7 +6854,7 @@ static PyObject *_wrap_wxTextCtrl_GetLineText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7028,7 +7023,7 @@ static PyObject *_wrap_wxTextCtrl_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7373,8 +7368,7 @@ static PyObject *_wrap_wxTextCtrl_EmulateKeyPress(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextCtrl_EmulateKeyPress. Expected _wxKeyEvent_p."); return NULL; } @@ -7412,8 +7406,7 @@ static PyObject *_wrap_wxTextCtrl_SetStyle(PyObject *self, PyObject *args, PyObj } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxTextCtrl_SetStyle. Expected _wxTextAttr_p."); return NULL; } @@ -7449,8 +7442,7 @@ static PyObject *_wrap_wxTextCtrl_SetDefaultStyle(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextCtrl_SetDefaultStyle. Expected _wxTextAttr_p."); return NULL; } @@ -8218,7 +8210,7 @@ static PyObject *_wrap_wxTextCtrl_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8305,8 +8297,7 @@ static PyObject *_wrap_new_wxScrollBar(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxScrollBar. Expected _wxValidator_p."); return NULL; } @@ -8415,8 +8406,7 @@ static PyObject *_wrap_wxScrollBar_Create(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxScrollBar_Create. Expected _wxValidator_p."); return NULL; } @@ -9046,8 +9036,7 @@ static PyObject *_wrap_new_wxStaticBitmap(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxStaticBitmap. Expected _wxBitmap_p."); return NULL; } @@ -9156,8 +9145,7 @@ static PyObject *_wrap_wxStaticBitmap_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxStaticBitmap_Create. Expected _wxBitmap_p."); return NULL; } @@ -9244,8 +9232,7 @@ static PyObject *_wrap_wxStaticBitmap_SetBitmap(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxStaticBitmap_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -9281,8 +9268,7 @@ static PyObject *_wrap_wxStaticBitmap_SetIcon(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxStaticBitmap_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -9392,8 +9378,7 @@ static PyObject *_wrap_new_wxRadioBox(PyObject *self, PyObject *args, PyObject * } } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of new_wxRadioBox. Expected _wxValidator_p."); return NULL; } @@ -9535,8 +9520,7 @@ static PyObject *_wrap_wxRadioBox_Create(PyObject *self, PyObject *args, PyObjec } } if (_argo10) { - if (_argo10 == Py_None) { _arg10 = NULL; } - else if (SWIG_GetPtrObj(_argo10,(void **) &_arg10,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo10,(void **) &_arg10,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 11 of wxRadioBox_Create. Expected _wxValidator_p."); return NULL; } @@ -9705,7 +9689,7 @@ static PyObject *_wrap_wxRadioBox_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9743,7 +9727,7 @@ static PyObject *_wrap_wxRadioBox_GetItemLabel(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9848,7 +9832,7 @@ static PyObject *_wrap_wxRadioBox_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10101,8 +10085,7 @@ static PyObject *_wrap_new_wxRadioButton(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxRadioButton. Expected _wxValidator_p."); return NULL; } @@ -10222,8 +10205,7 @@ static PyObject *_wrap_wxRadioButton_Create(PyObject *self, PyObject *args, PyOb return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxRadioButton_Create. Expected _wxValidator_p."); return NULL; } @@ -10390,8 +10372,7 @@ static PyObject *_wrap_new_wxSlider(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxSlider. Expected _wxValidator_p."); return NULL; } @@ -10503,8 +10484,7 @@ static PyObject *_wrap_wxSlider_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of wxSlider_Create. Expected _wxValidator_p."); return NULL; } @@ -11530,8 +11510,7 @@ static PyObject *_wrap_new_wxToggleButton(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxToggleButton. Expected _wxValidator_p."); return NULL; } @@ -11651,8 +11630,7 @@ static PyObject *_wrap_wxToggleButton_Create(PyObject *self, PyObject *args, PyO return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxToggleButton_Create. Expected _wxValidator_p."); return NULL; } @@ -12008,6 +11986,7 @@ static PyMethodDef controlscMethods[] = { { "new_wxPreChoice", (PyCFunction) _wrap_new_wxPreChoice, METH_VARARGS | METH_KEYWORDS }, { "new_wxChoice", (PyCFunction) _wrap_new_wxChoice, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_SetValue", (PyCFunction) _wrap_wxCheckBox_SetValue, METH_VARARGS | METH_KEYWORDS }, + { "wxCheckBox_IsChecked", (PyCFunction) _wrap_wxCheckBox_IsChecked, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_GetValue", (PyCFunction) _wrap_wxCheckBox_GetValue, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_Create", (PyCFunction) _wrap_wxCheckBox_Create, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreCheckBox", (PyCFunction) _wrap_new_wxPreCheckBox, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/controls.py b/wxPython/src/gtk/controls.py index a982e9dc16..fe3b40e8f6 100644 --- a/wxPython/src/gtk/controls.py +++ b/wxPython/src/gtk/controls.py @@ -200,6 +200,9 @@ class wxCheckBoxPtr(wxControlPtr): def GetValue(self, *_args, **_kwargs): val = apply(controlsc.wxCheckBox_GetValue,(self,) + _args, _kwargs) return val + def IsChecked(self, *_args, **_kwargs): + val = apply(controlsc.wxCheckBox_IsChecked,(self,) + _args, _kwargs) + return val def SetValue(self, *_args, **_kwargs): val = apply(controlsc.wxCheckBox_SetValue,(self,) + _args, _kwargs) return val @@ -595,9 +598,12 @@ class wxTextAttrPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controlsc=controlsc): - if self.thisown == 1 : - controlsc.delete_wxTextAttr(self) + def __del__(self, delfunc=controlsc.delete_wxTextAttr): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTextColour(self, *_args, **_kwargs): val = apply(controlsc.wxTextAttr_SetTextColour,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/controls2.cpp b/wxPython/src/gtk/controls2.cpp index 29bb48cdc2..a4f1913505 100644 --- a/wxPython/src/gtk/controls2.cpp +++ b/wxPython/src/gtk/controls2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -214,8 +213,8 @@ public: bool found; wxPyBeginBlockThreads(); if ((found = m_myInst.findCallback("OnCompareItems"))) { - PyObject *o1 = wxPyConstructObject((void*)&item1, "wxTreeItemId"); - PyObject *o2 = wxPyConstructObject((void*)&item2, "wxTreeItemId"); + PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId")); + PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId")); rval = m_myInst.callCallback(Py_BuildValue("(OO)",o1,o2)); Py_DECREF(o1); Py_DECREF(o2); @@ -264,8 +263,7 @@ static PyObject *_wrap_new_wxListItemAttr(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxListItemAttr. Expected _wxFont_p."); return NULL; } @@ -378,8 +376,7 @@ static PyObject *_wrap_wxListItemAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListItemAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -1079,8 +1076,7 @@ static PyObject *_wrap_wxListItem_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListItem_SetFont. Expected _wxFont_p."); return NULL; } @@ -1235,7 +1231,7 @@ static PyObject *_wrap_wxListItem_GetText(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1826,7 +1822,7 @@ static PyObject *_wrap_wxListItem_m_text_set(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1864,7 +1860,7 @@ static PyObject *_wrap_wxListItem_m_text_get(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2476,7 +2472,7 @@ static PyObject *_wrap_wxListEvent_GetLabel(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2511,7 +2507,7 @@ static PyObject *_wrap_wxListEvent_GetText(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2764,8 +2760,7 @@ static PyObject *_wrap_new_wxListCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListCtrl. Expected _wxValidator_p."); return NULL; } @@ -2874,8 +2869,7 @@ static PyObject *_wrap_wxListCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -3068,8 +3062,7 @@ static PyObject *_wrap_wxListCtrl_SetColumn(PyObject *self, PyObject *args, PyOb } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_SetColumn. Expected _wxListItem_p."); return NULL; } @@ -3229,8 +3222,7 @@ static PyObject *_wrap_wxListCtrl_SetItem(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListCtrl_SetItem. Expected _wxListItem_p."); return NULL; } @@ -3406,7 +3398,7 @@ static PyObject *_wrap_wxListCtrl_GetItemText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3721,6 +3713,38 @@ static PyObject *_wrap_wxListCtrl_GetItemSpacing(PyObject *self, PyObject *args, return _resultobj; } +#define wxListCtrl_SetItemSpacing(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetItemSpacing(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxListCtrl_SetItemSpacing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyListCtrl * _arg0; + int _arg1; + bool _arg2 = (bool ) FALSE; + PyObject * _argo0 = 0; + int tempbool2 = (int) FALSE; + char *_kwnames[] = { "self","spacing","isSmall", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxListCtrl_SetItemSpacing",_kwnames,&_argo0,&_arg1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyListCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListCtrl_SetItemSpacing. Expected _wxPyListCtrl_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxListCtrl_SetItemSpacing(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxListCtrl_GetSelectedItemCount(_swigobj) (_swigobj->GetSelectedItemCount()) static PyObject *_wrap_wxListCtrl_GetSelectedItemCount(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4298,6 +4322,35 @@ static PyObject *_wrap_wxListCtrl_ClearAll(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxListCtrl_EditLabel(_swigobj,_swigarg0) (_swigobj->EditLabel(_swigarg0)) +static PyObject *_wrap_wxListCtrl_EditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyListCtrl * _arg0; + long _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","item", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxListCtrl_EditLabel",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyListCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListCtrl_EditLabel. Expected _wxPyListCtrl_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxListCtrl_EditLabel(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxListCtrl_EnsureVisible(_swigobj,_swigarg0) (_swigobj->EnsureVisible(_swigarg0)) static PyObject *_wrap_wxListCtrl_EnsureVisible(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4505,8 +4558,7 @@ static PyObject *_wrap_wxListCtrl_InsertItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListCtrl_InsertItem. Expected _wxListItem_p."); return NULL; } @@ -4654,8 +4706,7 @@ static PyObject *_wrap_wxListCtrl_InsertColumnInfo(PyObject *self, PyObject *arg } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_InsertColumnInfo. Expected _wxListItem_p."); return NULL; } @@ -5062,8 +5113,7 @@ static PyObject *_wrap_new_wxListView(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListView. Expected _wxValidator_p."); return NULL; } @@ -5172,8 +5222,7 @@ static PyObject *_wrap_wxListView_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListView_Create. Expected _wxValidator_p."); return NULL; } @@ -5463,8 +5512,7 @@ static PyObject *_wrap_new_wxTreeItemAttr(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxTreeItemAttr. Expected _wxFont_p."); return NULL; } @@ -5577,8 +5625,7 @@ static PyObject *_wrap_wxTreeItemAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeItemAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -6049,8 +6096,7 @@ static PyObject *_wrap_wxTreeItemData_SetId(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeItemData_SetId. Expected _wxTreeItemId_p."); return NULL; } @@ -6307,7 +6353,7 @@ static PyObject *_wrap_wxTreeEvent_GetLabel(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6419,8 +6465,7 @@ static PyObject *_wrap_new_wxTreeCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxTreeCtrl. Expected _wxValidator_p."); return NULL; } @@ -6529,8 +6574,7 @@ static PyObject *_wrap_wxTreeCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxTreeCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -6960,8 +7004,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemText. Expected _wxTreeItemId_p."); return NULL; } @@ -6974,7 +7017,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7007,8 +7050,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemImage(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7044,8 +7086,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemSelectedImage(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemSelectedImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7082,8 +7123,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemText(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemText. Expected _wxTreeItemId_p."); return NULL; } @@ -7130,8 +7170,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemImage(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7168,8 +7207,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemSelectedImage(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemSelectedImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7207,8 +7245,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemHasChildren(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemHasChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -7255,8 +7292,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemData(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemData. Expected _wxTreeItemId_p."); return NULL; } @@ -7302,8 +7338,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemData(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemData. Expected _wxTreeItemId_p."); return NULL; } @@ -7355,8 +7390,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPyData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPyData. Expected _wxTreeItemId_p."); return NULL; } @@ -7403,8 +7437,7 @@ static PyObject *_wrap_wxTreeCtrl_SetPyData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetPyData. Expected _wxTreeItemId_p."); return NULL; } @@ -7423,6 +7456,120 @@ static PyObject *_wrap_wxTreeCtrl_SetPyData(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxTreeCtrl_GetItemTextColour(_swigobj,_swigarg0) (_swigobj->GetItemTextColour(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemTextColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemTextColour",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemTextColour. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemTextColour. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxTreeCtrl_GetItemTextColour(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +#define wxTreeCtrl_GetItemBackgroundColour(_swigobj,_swigarg0) (_swigobj->GetItemBackgroundColour(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemBackgroundColour",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemBackgroundColour. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemBackgroundColour. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxTreeCtrl_GetItemBackgroundColour(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +#define wxTreeCtrl_GetItemFont(_swigobj,_swigarg0) (_swigobj->GetItemFont(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemFont(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemFont",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemFont. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemFont. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxFont (wxTreeCtrl_GetItemFont(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxFont_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxTreeCtrl_IsVisible(_swigobj,_swigarg0) (_swigobj->IsVisible(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_IsVisible(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7444,8 +7591,7 @@ static PyObject *_wrap_wxTreeCtrl_IsVisible(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -7481,8 +7627,7 @@ static PyObject *_wrap_wxTreeCtrl_ItemHasChildren(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_ItemHasChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -7518,8 +7663,7 @@ static PyObject *_wrap_wxTreeCtrl_IsExpanded(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsExpanded. Expected _wxTreeItemId_p."); return NULL; } @@ -7555,8 +7699,7 @@ static PyObject *_wrap_wxTreeCtrl_IsSelected(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsSelected. Expected _wxTreeItemId_p."); return NULL; } @@ -7631,7 +7774,7 @@ static PyObject *_wrap_wxTreeCtrl_GetSelection(PyObject *self, PyObject *args, P return _resultobj; } -#define wxTreeCtrl_GetItemParent(_swigobj,_swigarg0) (_swigobj->GetParent(_swigarg0)) +#define wxTreeCtrl_GetItemParent(_swigobj,_swigarg0) (_swigobj->GetItemParent(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_GetItemParent(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxTreeItemId * _result; @@ -7653,8 +7796,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemParent(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemParent. Expected _wxTreeItemId_p."); return NULL; } @@ -7678,7 +7820,7 @@ static PyObject * wxPyTreeCtrl_GetSelections(wxPyTreeCtrl *self) { num = self->GetSelections(array); for (x=0; x < num; x++) { wxTreeItemId *tii = new wxTreeItemId(array.Item(x)); - PyObject* item = wxPyConstructObject((void*)tii, "wxTreeItemId", TRUE); + PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), TRUE); PyList_Append(rval, item); } wxPyEndBlockThreads(); @@ -7736,8 +7878,7 @@ static PyObject *_wrap_wxTreeCtrl_GetChildrenCount(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetChildrenCount. Expected _wxTreeItemId_p."); return NULL; } @@ -7778,8 +7919,7 @@ static PyObject *_wrap_wxTreeCtrl_GetFirstChild(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetFirstChild. Expected _wxTreeItemId_p."); return NULL; } @@ -7830,8 +7970,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextChild(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextChild. Expected _wxTreeItemId_p."); return NULL; } @@ -7878,8 +8017,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextSibling(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextSibling. Expected _wxTreeItemId_p."); return NULL; } @@ -7917,8 +8055,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPrevSibling(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPrevSibling. Expected _wxTreeItemId_p."); return NULL; } @@ -7986,8 +8123,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8025,8 +8161,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPrevVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPrevVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8064,8 +8199,7 @@ static PyObject *_wrap_wxTreeCtrl_GetLastChild(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetLastChild. Expected _wxTreeItemId_p."); return NULL; } @@ -8161,8 +8295,7 @@ static PyObject *_wrap_wxTreeCtrl_PrependItem(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_PrependItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8224,15 +8357,13 @@ static PyObject *_wrap_wxTreeCtrl_InsertItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_InsertItem. Expected _wxTreeItemId_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxTreeCtrl_InsertItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8293,8 +8424,7 @@ static PyObject *_wrap_wxTreeCtrl_InsertItemBefore(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_InsertItemBefore. Expected _wxTreeItemId_p."); return NULL; } @@ -8354,8 +8484,7 @@ static PyObject *_wrap_wxTreeCtrl_AppendItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_AppendItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8407,8 +8536,7 @@ static PyObject *_wrap_wxTreeCtrl_Delete(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Delete. Expected _wxTreeItemId_p."); return NULL; } @@ -8444,8 +8572,7 @@ static PyObject *_wrap_wxTreeCtrl_DeleteChildren(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_DeleteChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -8509,8 +8636,7 @@ static PyObject *_wrap_wxTreeCtrl_Expand(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Expand. Expected _wxTreeItemId_p."); return NULL; } @@ -8546,8 +8672,7 @@ static PyObject *_wrap_wxTreeCtrl_Collapse(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Collapse. Expected _wxTreeItemId_p."); return NULL; } @@ -8583,8 +8708,7 @@ static PyObject *_wrap_wxTreeCtrl_CollapseAndReset(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_CollapseAndReset. Expected _wxTreeItemId_p."); return NULL; } @@ -8620,8 +8744,7 @@ static PyObject *_wrap_wxTreeCtrl_Toggle(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Toggle. Expected _wxTreeItemId_p."); return NULL; } @@ -8713,8 +8836,7 @@ static PyObject *_wrap_wxTreeCtrl_SelectItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SelectItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8750,8 +8872,7 @@ static PyObject *_wrap_wxTreeCtrl_EnsureVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EnsureVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8787,8 +8908,7 @@ static PyObject *_wrap_wxTreeCtrl_ScrollTo(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_ScrollTo. Expected _wxTreeItemId_p."); return NULL; } @@ -8804,6 +8924,34 @@ static PyObject *_wrap_wxTreeCtrl_ScrollTo(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxTreeCtrl_GetEditControl(_swigobj) (_swigobj->GetEditControl()) +static PyObject *_wrap_wxTreeCtrl_GetEditControl(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxTextCtrl * _result; + wxPyTreeCtrl * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTreeCtrl_GetEditControl",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetEditControl. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxTextCtrl *)wxTreeCtrl_GetEditControl(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ _resultobj = wxPyMake_wxObject(_result); } + return _resultobj; +} + #define wxTreeCtrl_EditLabel(_swigobj,_swigarg0) (_swigobj->EditLabel(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_EditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -8824,8 +8972,7 @@ static PyObject *_wrap_wxTreeCtrl_EditLabel(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EditLabel. Expected _wxTreeItemId_p."); return NULL; } @@ -8861,8 +9008,7 @@ static PyObject *_wrap_wxTreeCtrl_SortChildren(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SortChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -8899,8 +9045,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBold(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemBold. Expected _wxTreeItemId_p."); return NULL; } @@ -8937,8 +9082,7 @@ static PyObject *_wrap_wxTreeCtrl_IsBold(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsBold. Expected _wxTreeItemId_p."); return NULL; } @@ -9024,8 +9168,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemTextColour(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemTextColour. Expected _wxTreeItemId_p."); return NULL; } @@ -9069,8 +9212,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBackgroundColour(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemBackgroundColour. Expected _wxTreeItemId_p."); return NULL; } @@ -9113,15 +9255,13 @@ static PyObject *_wrap_wxTreeCtrl_SetItemFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemFont. Expected _wxTreeItemId_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxTreeCtrl_SetItemFont. Expected _wxFont_p."); return NULL; } @@ -9142,7 +9282,7 @@ static PyObject * wxPyTreeCtrl_GetBoundingRect(wxPyTreeCtrl *self,const wxTreeIt if (self->GetBoundingRect(item, rect, textOnly)) { wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); - PyObject* val = wxPyConstructObject((void*)r, "wxRect"); + PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect")); wxPyEndBlockThreads(); return val; } @@ -9172,8 +9312,7 @@ static PyObject *_wrap_wxTreeCtrl_GetBoundingRect(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetBoundingRect. Expected _wxTreeItemId_p."); return NULL; } @@ -9321,7 +9460,7 @@ static PyObject *_wrap_wxDirItemData_m_path_set(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9359,7 +9498,7 @@ static PyObject *_wrap_wxDirItemData_m_path_get(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9400,7 +9539,7 @@ static PyObject *_wrap_wxDirItemData_m_name_set(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9438,7 +9577,7 @@ static PyObject *_wrap_wxDirItemData_m_name_get(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9932,7 +10071,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetDefaultPath(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10008,7 +10147,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetPath(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10045,7 +10184,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetFilePath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10180,7 +10319,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetFilter(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10650,6 +10789,7 @@ static PyMethodDef controls2cMethods[] = { { "wxTreeCtrl_SetItemBold", (PyCFunction) _wrap_wxTreeCtrl_SetItemBold, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SortChildren", (PyCFunction) _wrap_wxTreeCtrl_SortChildren, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EditLabel", (PyCFunction) _wrap_wxTreeCtrl_EditLabel, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetEditControl", (PyCFunction) _wrap_wxTreeCtrl_GetEditControl, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_ScrollTo", (PyCFunction) _wrap_wxTreeCtrl_ScrollTo, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EnsureVisible", (PyCFunction) _wrap_wxTreeCtrl_EnsureVisible, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SelectItem", (PyCFunction) _wrap_wxTreeCtrl_SelectItem, METH_VARARGS | METH_KEYWORDS }, @@ -10684,6 +10824,9 @@ static PyMethodDef controls2cMethods[] = { { "wxTreeCtrl_IsExpanded", (PyCFunction) _wrap_wxTreeCtrl_IsExpanded, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_ItemHasChildren", (PyCFunction) _wrap_wxTreeCtrl_ItemHasChildren, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_IsVisible", (PyCFunction) _wrap_wxTreeCtrl_IsVisible, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemFont", (PyCFunction) _wrap_wxTreeCtrl_GetItemFont, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemBackgroundColour", (PyCFunction) _wrap_wxTreeCtrl_GetItemBackgroundColour, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemTextColour", (PyCFunction) _wrap_wxTreeCtrl_GetItemTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SetPyData", (PyCFunction) _wrap_wxTreeCtrl_SetPyData, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_GetPyData", (PyCFunction) _wrap_wxTreeCtrl_GetPyData, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SetItemData", (PyCFunction) _wrap_wxTreeCtrl_SetItemData, METH_VARARGS | METH_KEYWORDS }, @@ -10767,6 +10910,7 @@ static PyMethodDef controls2cMethods[] = { { "wxListCtrl_FindItemData", (PyCFunction) _wrap_wxListCtrl_FindItemData, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_FindItem", (PyCFunction) _wrap_wxListCtrl_FindItem, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_EnsureVisible", (PyCFunction) _wrap_wxListCtrl_EnsureVisible, METH_VARARGS | METH_KEYWORDS }, + { "wxListCtrl_EditLabel", (PyCFunction) _wrap_wxListCtrl_EditLabel, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_ClearAll", (PyCFunction) _wrap_wxListCtrl_ClearAll, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_DeleteAllColumns", (PyCFunction) _wrap_wxListCtrl_DeleteAllColumns, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_DeleteColumn", (PyCFunction) _wrap_wxListCtrl_DeleteColumn, METH_VARARGS | METH_KEYWORDS }, @@ -10786,6 +10930,7 @@ static PyMethodDef controls2cMethods[] = { { "wxListCtrl_SetTextColour", (PyCFunction) _wrap_wxListCtrl_SetTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetTextColour", (PyCFunction) _wrap_wxListCtrl_GetTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetSelectedItemCount", (PyCFunction) _wrap_wxListCtrl_GetSelectedItemCount, METH_VARARGS | METH_KEYWORDS }, + { "wxListCtrl_SetItemSpacing", (PyCFunction) _wrap_wxListCtrl_SetItemSpacing, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetItemSpacing", (PyCFunction) _wrap_wxListCtrl_GetItemSpacing, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetColumnCount", (PyCFunction) _wrap_wxListCtrl_GetColumnCount, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetItemCount", (PyCFunction) _wrap_wxListCtrl_GetItemCount, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/controls2.py b/wxPython/src/gtk/controls2.py index f46d4b0da1..fcbe7ee362 100644 --- a/wxPython/src/gtk/controls2.py +++ b/wxPython/src/gtk/controls2.py @@ -186,9 +186,12 @@ class wxListItemPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controls2c=controls2c): - if self.thisown == 1 : - controls2c.delete_wxListItem(self) + def __del__(self, delfunc=controls2c.delete_wxListItem): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Clear(self, *_args, **_kwargs): val = apply(controls2c.wxListItem_Clear,(self,) + _args, _kwargs) return val @@ -511,6 +514,9 @@ class wxListCtrlPtr(wxControlPtr): def GetItemSpacing(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetItemSpacing,(self,) + _args, _kwargs) return val + def SetItemSpacing(self, *_args, **_kwargs): + val = apply(controls2c.wxListCtrl_SetItemSpacing,(self,) + _args, _kwargs) + return val def GetSelectedItemCount(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetSelectedItemCount,(self,) + _args, _kwargs) return val @@ -570,6 +576,9 @@ class wxListCtrlPtr(wxControlPtr): def ClearAll(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_ClearAll,(self,) + _args, _kwargs) return val + def EditLabel(self, *_args, **_kwargs): + val = apply(controls2c.wxListCtrl_EditLabel,(self,) + _args, _kwargs) + return val def EnsureVisible(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_EnsureVisible,(self,) + _args, _kwargs) return val @@ -661,6 +670,14 @@ class wxListCtrlPtr(wxControlPtr): '''get the currently focused item or -1 if none''' return self.GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED) + def GetFirstSelected(self, *args): + '''return first selected item, or -1 when none''' + return self.GetNextSelected(-1) + + def GetNextSelected(self, item): + '''return subsequent selected items, or -1 when no more''' + return self.GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) + def IsSelected(self, idx): '''return TRUE if the item is selected''' return self.GetItemState(idx, wxLIST_STATE_SELECTED) != 0 @@ -678,10 +695,14 @@ class wxListCtrlPtr(wxControlPtr): '''Append an item to the list control. The entry parameter should be a sequence with an item for each column''' if len(entry): + if wx.wxUSE_UNICODE: + cvtfunc = unicode + else: + cvtfunc = str pos = self.GetItemCount() - self.InsertStringItem(pos, str(entry[0])) + self.InsertStringItem(pos, cvtfunc(entry[0])) for i in range(1, len(entry)): - self.SetStringItem(pos, i, str(entry[i])) + self.SetStringItem(pos, i, cvtfunc(entry[i])) return pos class wxListCtrl(wxListCtrlPtr): @@ -796,9 +817,12 @@ class wxTreeItemIdPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controls2c=controls2c): - if self.thisown == 1 : - controls2c.delete_wxTreeItemId(self) + def __del__(self, delfunc=controls2c.delete_wxTreeItemId): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(controls2c.wxTreeItemId_IsOk,(self,) + _args, _kwargs) return val @@ -962,6 +986,18 @@ class wxTreeCtrlPtr(wxControlPtr): def SetPyData(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_SetPyData,(self,) + _args, _kwargs) return val + def GetItemTextColour(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemTextColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val + def GetItemBackgroundColour(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemBackgroundColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val + def GetItemFont(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemFont,(self,) + _args, _kwargs) + if val: val = wxFontPtr(val) ; val.thisown = 1 + return val def IsVisible(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_IsVisible,(self,) + _args, _kwargs) return val @@ -1078,6 +1114,9 @@ class wxTreeCtrlPtr(wxControlPtr): def ScrollTo(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_ScrollTo,(self,) + _args, _kwargs) return val + def GetEditControl(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetEditControl,(self,) + _args, _kwargs) + return val def EditLabel(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_EditLabel,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/events.cpp b/wxPython/src/gtk/events.cpp index cf58c0d255..e592497baf 100644 --- a/wxPython/src/gtk/events.cpp +++ b/wxPython/src/gtk/events.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -955,7 +954,7 @@ static PyObject *_wrap_wxCommandEvent_GetString(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2277,8 +2276,7 @@ static PyObject *_wrap_wxMouseEvent_GetLogicalPosition(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMouseEvent_GetLogicalPosition. Expected _wxDC_p."); return NULL; } @@ -3332,8 +3330,7 @@ static PyObject *_wrap_wxSetCursorEvent_SetCursor(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSetCursorEvent_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -6015,7 +6012,7 @@ static PyObject * wxDropFilesEvent_GetFiles(wxDropFilesEvent *self) { for (int i=0; i<count; i++) { #if wxUSE_UNICODE - PyList_SetItem(list, i, PyUnicode_FromUnicode(files[i], files[i].Len())); + PyList_SetItem(list, i, PyUnicode_FromWideChar(files[i], files[i].Len())); #else PyList_SetItem(list, i, PyString_FromString((const char*)files[i])); #endif @@ -6277,7 +6274,7 @@ static PyObject *_wrap_wxUpdateUIEvent_GetText(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7322,8 +7319,7 @@ static PyObject *_wrap_new_wxTextUrlEvent(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"iOll:new_wxTextUrlEvent",_kwnames,&_arg0,&_argo1,&_arg2,&_arg3)) return NULL; if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMouseEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMouseEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxTextUrlEvent. Expected _wxMouseEvent_p."); return NULL; } diff --git a/wxPython/src/gtk/events.py b/wxPython/src/gtk/events.py index 402df0334c..9ec900d64f 100644 --- a/wxPython/src/gtk/events.py +++ b/wxPython/src/gtk/events.py @@ -10,9 +10,12 @@ class wxEventPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxEvent(self) + def __del__(self, delfunc=eventsc.delete_wxEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetEventObject(self, *_args, **_kwargs): val = apply(eventsc.wxEvent_GetEventObject,(self,) + _args, _kwargs) return val @@ -1095,9 +1098,12 @@ class wxPyEventPtr(wxEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxPyEvent(self) + def __del__(self, delfunc=eventsc.delete_wxPyEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetSelf(self, *_args, **_kwargs): val = apply(eventsc.wxPyEvent_SetSelf,(self,) + _args, _kwargs) return val @@ -1119,9 +1125,12 @@ class wxPyCommandEventPtr(wxCommandEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxPyCommandEvent(self) + def __del__(self, delfunc=eventsc.delete_wxPyCommandEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetSelf(self, *_args, **_kwargs): val = apply(eventsc.wxPyCommandEvent_SetSelf,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/filesys.cpp b/wxPython/src/gtk/filesys.cpp index 2ff2002e06..2471de188f 100644 --- a/wxPython/src/gtk/filesys.cpp +++ b/wxPython/src/gtk/filesys.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -170,8 +169,7 @@ static PyObject *_wrap___wxMemoryFSHandler_AddFile_wxImage(PyObject *self, PyObj return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of __wxMemoryFSHandler_AddFile_wxImage. Expected _wxImage_p."); return NULL; } @@ -209,8 +207,7 @@ static PyObject *_wrap___wxMemoryFSHandler_AddFile_wxBitmap(PyObject *self, PyOb return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of __wxMemoryFSHandler_AddFile_wxBitmap. Expected _wxBitmap_p."); return NULL; } @@ -391,7 +388,7 @@ static PyObject *_wrap_wxFSFile_GetStream(PyObject *self, PyObject *args, PyObje if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -423,7 +420,7 @@ static PyObject *_wrap_wxFSFile_GetMimeType(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -458,7 +455,7 @@ static PyObject *_wrap_wxFSFile_GetLocation(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -493,7 +490,7 @@ static PyObject *_wrap_wxFSFile_GetAnchor(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -681,8 +678,7 @@ static PyObject *_wrap_wxFileSystemHandler_OpenFile(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileSystemHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -740,7 +736,7 @@ static PyObject *_wrap_wxFileSystemHandler_FindFirst(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -781,7 +777,7 @@ static PyObject *_wrap_wxFileSystemHandler_FindNext(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -825,7 +821,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetProtocol(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -873,7 +869,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetLeftLocation(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -921,7 +917,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetAnchor(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -969,7 +965,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetRightLocation(PyObject *self, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1017,7 +1013,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetMimeTypeFromExt(PyObject *self, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1134,7 +1130,7 @@ static PyObject *_wrap_wxFileSystem_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1218,7 +1214,7 @@ static PyObject *_wrap_wxFileSystem_FindFirst(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1259,7 +1255,7 @@ static PyObject *_wrap_wxFileSystem_FindNext(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1419,8 +1415,7 @@ static PyObject *_wrap_wxInternetFSHandler_OpenFile(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxInternetFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1548,8 +1543,7 @@ static PyObject *_wrap_wxZipFSHandler_OpenFile(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxZipFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1607,7 +1601,7 @@ static PyObject *_wrap_wxZipFSHandler_FindFirst(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1648,7 +1642,7 @@ static PyObject *_wrap_wxZipFSHandler_FindNext(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1792,8 +1786,7 @@ static PyObject *_wrap_wxMemoryFSHandler_OpenFile(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1851,7 +1844,7 @@ static PyObject *_wrap_wxMemoryFSHandler_FindFirst(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1892,7 +1885,7 @@ static PyObject *_wrap_wxMemoryFSHandler_FindNext(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/gtk/filesys.py b/wxPython/src/gtk/filesys.py index d1d52ee1fe..8950e6059b 100644 --- a/wxPython/src/gtk/filesys.py +++ b/wxPython/src/gtk/filesys.py @@ -13,13 +13,12 @@ from fonts import * from streams import * import wx -import string import types def wxMemoryFSHandler_AddFile(filename, a, b=''): - if isinstance(a, wxImage): + if wx.wxPy_isinstance(a, (wxImage, wxImagePtr)): __wxMemoryFSHandler_AddFile_wxImage(filename, a, b) - elif isinstance(a, wxBitmap): + elif wx.wxPy_isinstance(a, (wxBitmap, wxBitmapPtr)): __wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b) elif type(a) == types.StringType: #__wxMemoryFSHandler_AddFile_wxString(filename, a) diff --git a/wxPython/src/gtk/fonts.cpp b/wxPython/src/gtk/fonts.cpp index 4a10db9ff8..22c656c837 100644 --- a/wxPython/src/gtk/fonts.cpp +++ b/wxPython/src/gtk/fonts.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -93,6 +92,32 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { // Put some wx default wxChar* values into wxStrings. static const wxString wxPyEmptyString(wxT("")); +// Fix some link errors... Remove this when these methods get real implementations... +#if defined(__WXGTK__) || defined(__WXX11__) +#if wxUSE_PANGO +void wxNativeFontInfo::SetPointSize(int pointsize) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetStyle(wxFontStyle style) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetWeight(wxFontWeight weight) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined)) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFaceName(wxString facename) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFamily(wxFontFamily family) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) + { wxFAIL_MSG( _T("not implemented") ); } +#endif +#endif + class wxPyFontEnumerator : public wxFontEnumerator { public: wxPyFontEnumerator() {} @@ -158,7 +183,7 @@ static PyObject *_wrap_wxGetTranslation(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -173,149 +198,6 @@ static PyObject *_wrap_wxGetTranslation(PyObject *self, PyObject *args, PyObject return _resultobj; } -#define wxNativeFontInfo_FromXFontName(_swigobj,_swigarg0) (_swigobj->FromXFontName(_swigarg0)) -static PyObject *_wrap_wxNativeFontInfo_FromXFontName(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxNativeFontInfo * _arg0; - wxString * _arg1; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - char *_kwnames[] = { "self","xFontName", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxNativeFontInfo_FromXFontName",_kwnames,&_argo0,&_obj1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_FromXFontName. Expected _wxNativeFontInfo_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxNativeFontInfo_FromXFontName(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj1) - delete _arg1; -} - return _resultobj; -} - -#define wxNativeFontInfo_IsDefault(_swigobj) (_swigobj->IsDefault()) -static PyObject *_wrap_wxNativeFontInfo_IsDefault(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxNativeFontInfo * _arg0; - PyObject * _argo0 = 0; - char *_kwnames[] = { "self", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_IsDefault",_kwnames,&_argo0)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_IsDefault. Expected _wxNativeFontInfo_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxNativeFontInfo_IsDefault(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -#define wxNativeFontInfo_GetXFontName(_swigobj) (_swigobj->GetXFontName()) -static PyObject *_wrap_wxNativeFontInfo_GetXFontName(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxString * _result; - wxNativeFontInfo * _arg0; - PyObject * _argo0 = 0; - char *_kwnames[] = { "self", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetXFontName",_kwnames,&_argo0)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetXFontName. Expected _wxNativeFontInfo_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxString (wxNativeFontInfo_GetXFontName(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ -#if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); -#else - _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); -#endif -} -{ - delete _result; -} - return _resultobj; -} - -#define wxNativeFontInfo_SetXFontName(_swigobj,_swigarg0) (_swigobj->SetXFontName(_swigarg0)) -static PyObject *_wrap_wxNativeFontInfo_SetXFontName(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxNativeFontInfo * _arg0; - wxString * _arg1; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - char *_kwnames[] = { "self","xFontName", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxNativeFontInfo_SetXFontName",_kwnames,&_argo0,&_obj1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetXFontName. Expected _wxNativeFontInfo_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxNativeFontInfo_SetXFontName(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; -{ - if (_obj1) - delete _arg1; -} - return _resultobj; -} - #define new_wxNativeFontInfo() (new wxNativeFontInfo()) static PyObject *_wrap_new_wxNativeFontInfo(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -370,6 +252,426 @@ static PyObject *_wrap_wxNativeFontInfo_Init(PyObject *self, PyObject *args, PyO return _resultobj; } +#define wxNativeFontInfo_GetPointSize(_swigobj) (_swigobj->GetPointSize()) +static PyObject *_wrap_wxNativeFontInfo_GetPointSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + int _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetPointSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetPointSize. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (int )wxNativeFontInfo_GetPointSize(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxNativeFontInfo_GetStyle(_swigobj) (_swigobj->GetStyle()) +static PyObject *_wrap_wxNativeFontInfo_GetStyle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFontStyle _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetStyle",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetStyle. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFontStyle )wxNativeFontInfo_GetStyle(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxNativeFontInfo_GetWeight(_swigobj) (_swigobj->GetWeight()) +static PyObject *_wrap_wxNativeFontInfo_GetWeight(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFontWeight _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetWeight",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetWeight. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFontWeight )wxNativeFontInfo_GetWeight(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxNativeFontInfo_GetUnderlined(_swigobj) (_swigobj->GetUnderlined()) +static PyObject *_wrap_wxNativeFontInfo_GetUnderlined(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetUnderlined",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetUnderlined. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxNativeFontInfo_GetUnderlined(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxNativeFontInfo_GetFaceName(_swigobj) (_swigobj->GetFaceName()) +static PyObject *_wrap_wxNativeFontInfo_GetFaceName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetFaceName",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetFaceName. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxString (wxNativeFontInfo_GetFaceName(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ +#if wxUSE_UNICODE + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); +#else + _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); +#endif +} +{ + delete _result; +} + return _resultobj; +} + +#define wxNativeFontInfo_GetFamily(_swigobj) (_swigobj->GetFamily()) +static PyObject *_wrap_wxNativeFontInfo_GetFamily(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFontFamily _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetFamily",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetFamily. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFontFamily )wxNativeFontInfo_GetFamily(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxNativeFontInfo_GetEncoding(_swigobj) (_swigobj->GetEncoding()) +static PyObject *_wrap_wxNativeFontInfo_GetEncoding(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFontEncoding _result; + wxNativeFontInfo * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxNativeFontInfo_GetEncoding",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_GetEncoding. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFontEncoding )wxNativeFontInfo_GetEncoding(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxNativeFontInfo_SetPointSize(_swigobj,_swigarg0) (_swigobj->SetPointSize(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetPointSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pointsize", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNativeFontInfo_SetPointSize",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetPointSize. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetPointSize(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxNativeFontInfo_SetStyle(_swigobj,_swigarg0) (_swigobj->SetStyle(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetStyle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + wxFontStyle _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","style", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNativeFontInfo_SetStyle",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetStyle. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetStyle(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxNativeFontInfo_SetWeight(_swigobj,_swigarg0) (_swigobj->SetWeight(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetWeight(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + wxFontWeight _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","weight", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNativeFontInfo_SetWeight",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetWeight. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetWeight(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxNativeFontInfo_SetUnderlined(_swigobj,_swigarg0) (_swigobj->SetUnderlined(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetUnderlined(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","underlined", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNativeFontInfo_SetUnderlined",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetUnderlined. Expected _wxNativeFontInfo_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetUnderlined(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxNativeFontInfo_SetFaceName(_swigobj,_swigarg0) (_swigobj->SetFaceName(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetFaceName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + wxString * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","facename", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxNativeFontInfo_SetFaceName",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetFaceName. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetFaceName(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + +#define wxNativeFontInfo_SetFamily(_swigobj,_swigarg0) (_swigobj->SetFamily(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetFamily(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + wxFontFamily _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","family", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNativeFontInfo_SetFamily",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetFamily. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetFamily(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxNativeFontInfo_SetEncoding(_swigobj,_swigarg0) (_swigobj->SetEncoding(_swigarg0)) +static PyObject *_wrap_wxNativeFontInfo_SetEncoding(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxNativeFontInfo * _arg0; + wxFontEncoding _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","encoding", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNativeFontInfo_SetEncoding",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxNativeFontInfo_SetEncoding. Expected _wxNativeFontInfo_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxNativeFontInfo_SetEncoding(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxNativeFontInfo_FromString(_swigobj,_swigarg0) (_swigobj->FromString(_swigarg0)) static PyObject *_wrap_wxNativeFontInfo_FromString(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -435,7 +737,7 @@ static PyObject *_wrap_wxNativeFontInfo_ToString(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -474,7 +776,7 @@ static PyObject *_wrap_wxNativeFontInfo___str__(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -550,7 +852,7 @@ static PyObject *_wrap_wxNativeFontInfo_ToUserString(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -828,7 +1130,7 @@ static PyObject *_wrap_wxFontMapper_GetEncodingName(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -856,7 +1158,7 @@ static PyObject *_wrap_wxFontMapper_GetEncodingDescription(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1035,7 +1337,7 @@ static PyObject *_wrap_wxFontMapper_GetDefaultConfigPath(PyObject *self, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1111,8 +1413,7 @@ static PyObject *_wrap_new_wxFontFromNativeInfo(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxFontFromNativeInfo",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxFontFromNativeInfo. Expected _wxNativeFontInfo_p."); return NULL; } @@ -1133,6 +1434,56 @@ static PyObject *_wrap_new_wxFontFromNativeInfo(PyObject *self, PyObject *args, return _resultobj; } +static wxFont * wxFont_wxFontFromNativeInfoString(wxFont *self,const wxString & info) { + wxNativeFontInfo nfi; + nfi.FromString(info); + return new wxFont(nfi); + } +static PyObject *_wrap_wxFont_wxFontFromNativeInfoString(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _result; + wxFont * _arg0; + wxString * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","info", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxFont_wxFontFromNativeInfoString",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_wxFontFromNativeInfoString. Expected _wxFont_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFont *)wxFont_wxFontFromNativeInfoString(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + #define delete_wxFont(_swigobj) (delete _swigobj) static PyObject *_wrap_delete_wxFont(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1355,7 +1706,7 @@ static PyObject *_wrap_wxFont_GetFaceName(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1483,7 +1834,7 @@ static PyObject *_wrap_wxFont_GetNativeFontInfoDesc(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1520,7 +1871,7 @@ static PyObject *_wrap_wxFont_GetNativeFontInfoUserDesc(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1766,8 +2117,7 @@ static PyObject *_wrap_wxFont_SetNativeFontInfo(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxNativeFontInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxNativeFontInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFont_SetNativeFontInfo. Expected _wxNativeFontInfo_p."); return NULL; } @@ -1848,7 +2198,7 @@ static PyObject *_wrap_wxFont_GetFamilyString(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1885,7 +2235,7 @@ static PyObject *_wrap_wxFont_GetStyleString(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1922,7 +2272,7 @@ static PyObject *_wrap_wxFont_GetWeightString(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1933,6 +2283,65 @@ static PyObject *_wrap_wxFont_GetWeightString(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxFont_SetNoAntiAliasing(_swigobj,_swigarg0) (_swigobj->SetNoAntiAliasing(_swigarg0)) +static PyObject *_wrap_wxFont_SetNoAntiAliasing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _arg0; + bool _arg1 = (bool ) TRUE; + PyObject * _argo0 = 0; + int tempbool1 = (int) TRUE; + char *_kwnames[] = { "self","no", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxFont_SetNoAntiAliasing",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetNoAntiAliasing. Expected _wxFont_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxFont_SetNoAntiAliasing(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxFont_GetNoAntiAliasing(_swigobj) (_swigobj->GetNoAntiAliasing()) +static PyObject *_wrap_wxFont_GetNoAntiAliasing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxFont * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxFont_GetNoAntiAliasing",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetNoAntiAliasing. Expected _wxFont_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxFont_GetNoAntiAliasing(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyObject *_wrap_wxFont_GetDefaultEncoding(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxFontEncoding _result; @@ -2458,7 +2867,7 @@ static PyObject *_wrap_wxLanguageInfo_CanonicalName_set(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2496,7 +2905,7 @@ static PyObject *_wrap_wxLanguageInfo_CanonicalName_get(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2537,7 +2946,7 @@ static PyObject *_wrap_wxLanguageInfo_Description_set(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2575,7 +2984,7 @@ static PyObject *_wrap_wxLanguageInfo_Description_get(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2611,75 +3020,6 @@ static PyObject *_wrap_new_wxLocale(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } -#define wxLocale_Init(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->Init(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) -static PyObject *_wrap_wxLocale_Init(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxLocale * _arg0; - wxString * _arg1; - wxString * _arg2 = (wxString *) &wxPyEmptyString; - wxString * _arg3 = (wxString *) &wxPyEmptyString; - bool _arg4 = (bool ) TRUE; - bool _arg5 = (bool ) FALSE; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - PyObject * _obj2 = 0; - PyObject * _obj3 = 0; - int tempbool4 = (int) TRUE; - int tempbool5 = (int) FALSE; - char *_kwnames[] = { "self","szName","szShort","szLocale","bLoadDefault","bConvertEncoding", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|OOii:wxLocale_Init",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&tempbool4,&tempbool5)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init. Expected _wxLocale_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} - if (_obj2) -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} - if (_obj3) -{ - _arg3 = wxString_in_helper(_obj3); - if (_arg3 == NULL) - return NULL; -} - _arg4 = (bool ) tempbool4; - _arg5 = (bool ) tempbool5; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxLocale_Init(_arg0,*_arg1,*_arg2,*_arg3,_arg4,_arg5); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj1) - delete _arg1; -} -{ - if (_obj2) - delete _arg2; -} -{ - if (_obj3) - delete _arg3; -} - return _resultobj; -} - #define delete_wxLocale(_swigobj) (delete _swigobj) static PyObject *_wrap_delete_wxLocale(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2708,6 +3048,105 @@ static PyObject *_wrap_delete_wxLocale(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxLocale_Init1(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->Init(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) +static PyObject *_wrap_wxLocale_Init1(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxLocale * _arg0; + wxString * _arg1; + wxString * _arg2 = (wxString *) &wxPyEmptyString; + wxString * _arg3 = (wxString *) &wxPyEmptyString; + bool _arg4 = (bool ) TRUE; + bool _arg5 = (bool ) FALSE; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + int tempbool4 = (int) TRUE; + int tempbool5 = (int) FALSE; + char *_kwnames[] = { "self","szName","szShort","szLocale","bLoadDefault","bConvertEncoding", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|OOii:wxLocale_Init1",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&tempbool4,&tempbool5)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init1. Expected _wxLocale_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} + if (_obj2) +{ + _arg2 = wxString_in_helper(_obj2); + if (_arg2 == NULL) + return NULL; +} + if (_obj3) +{ + _arg3 = wxString_in_helper(_obj3); + if (_arg3 == NULL) + return NULL; +} + _arg4 = (bool ) tempbool4; + _arg5 = (bool ) tempbool5; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxLocale_Init1(_arg0,*_arg1,*_arg2,*_arg3,_arg4,_arg5); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); +{ + if (_obj1) + delete _arg1; +} +{ + if (_obj2) + delete _arg2; +} +{ + if (_obj3) + delete _arg3; +} + return _resultobj; +} + +#define wxLocale_Init2(_swigobj,_swigarg0,_swigarg1) (_swigobj->Init(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxLocale_Init2(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxLocale * _arg0; + int _arg1 = (int ) (wxLANGUAGE_DEFAULT); + int _arg2 = (int ) (wxLOCALE_LOAD_DEFAULT)|(wxLOCALE_CONV_ENCODING); + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","language","flags", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|ii:wxLocale_Init2",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init2. Expected _wxLocale_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxLocale_Init2(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyObject *_wrap_wxLocale_GetSystemLanguage(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; int _result; @@ -2760,7 +3199,7 @@ static PyObject *_wrap_wxLocale_GetSystemEncodingName(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2825,7 +3264,7 @@ static PyObject *_wrap_wxLocale_GetLocale(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2890,7 +3329,7 @@ static PyObject *_wrap_wxLocale_GetSysName(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2927,7 +3366,7 @@ static PyObject *_wrap_wxLocale_GetCanonicalName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3081,8 +3520,7 @@ static PyObject *_wrap_wxLocale_AddLanguage(PyObject *self, PyObject *args, PyOb if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxLocale_AddLanguage",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLanguageInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLanguageInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_AddLanguage. Expected _wxLanguageInfo_p."); return NULL; } @@ -3139,7 +3577,7 @@ static PyObject *_wrap_wxLocale_GetString(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3185,7 +3623,7 @@ static PyObject *_wrap_wxLocale_GetName(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3319,7 +3757,7 @@ static PyObject *_wrap_wxEncodingConverter_Convert(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3409,8 +3847,9 @@ static PyMethodDef fontscMethods[] = { { "wxLocale_GetSystemEncodingName", (PyCFunction) _wrap_wxLocale_GetSystemEncodingName, METH_VARARGS | METH_KEYWORDS }, { "wxLocale_GetSystemEncoding", (PyCFunction) _wrap_wxLocale_GetSystemEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxLocale_GetSystemLanguage", (PyCFunction) _wrap_wxLocale_GetSystemLanguage, METH_VARARGS | METH_KEYWORDS }, + { "wxLocale_Init2", (PyCFunction) _wrap_wxLocale_Init2, METH_VARARGS | METH_KEYWORDS }, + { "wxLocale_Init1", (PyCFunction) _wrap_wxLocale_Init1, METH_VARARGS | METH_KEYWORDS }, { "delete_wxLocale", (PyCFunction) _wrap_delete_wxLocale, METH_VARARGS | METH_KEYWORDS }, - { "wxLocale_Init", (PyCFunction) _wrap_wxLocale_Init, METH_VARARGS | METH_KEYWORDS }, { "new_wxLocale", (PyCFunction) _wrap_new_wxLocale, METH_VARARGS | METH_KEYWORDS }, { "wxLanguageInfo_Description_get", (PyCFunction) _wrap_wxLanguageInfo_Description_get, METH_VARARGS | METH_KEYWORDS }, { "wxLanguageInfo_Description_set", (PyCFunction) _wrap_wxLanguageInfo_Description_set, METH_VARARGS | METH_KEYWORDS }, @@ -3431,6 +3870,8 @@ static PyMethodDef fontscMethods[] = { { "wxFontList_AddFont", (PyCFunction) _wrap_wxFontList_AddFont, METH_VARARGS | METH_KEYWORDS }, { "wxFont_SetDefaultEncoding", (PyCFunction) _wrap_wxFont_SetDefaultEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetDefaultEncoding", (PyCFunction) _wrap_wxFont_GetDefaultEncoding, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_GetNoAntiAliasing", (PyCFunction) _wrap_wxFont_GetNoAntiAliasing, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_SetNoAntiAliasing", (PyCFunction) _wrap_wxFont_SetNoAntiAliasing, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetWeightString", (PyCFunction) _wrap_wxFont_GetWeightString, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetStyleString", (PyCFunction) _wrap_wxFont_GetStyleString, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetFamilyString", (PyCFunction) _wrap_wxFont_GetFamilyString, METH_VARARGS | METH_KEYWORDS }, @@ -3456,6 +3897,7 @@ static PyMethodDef fontscMethods[] = { { "wxFont_GetPointSize", (PyCFunction) _wrap_wxFont_GetPointSize, METH_VARARGS | METH_KEYWORDS }, { "wxFont_Ok", (PyCFunction) _wrap_wxFont_Ok, METH_VARARGS | METH_KEYWORDS }, { "delete_wxFont", (PyCFunction) _wrap_delete_wxFont, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_wxFontFromNativeInfoString", (PyCFunction) _wrap_wxFont_wxFontFromNativeInfoString, METH_VARARGS | METH_KEYWORDS }, { "new_wxFontFromNativeInfo", (PyCFunction) _wrap_new_wxFontFromNativeInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxFont", (PyCFunction) _wrap_new_wxFont, METH_VARARGS | METH_KEYWORDS }, { "wxFontMapper_GetDefaultConfigPath", (PyCFunction) _wrap_wxFontMapper_GetDefaultConfigPath, METH_VARARGS | METH_KEYWORDS }, @@ -3477,12 +3919,22 @@ static PyMethodDef fontscMethods[] = { { "wxNativeFontInfo___str__", (PyCFunction) _wrap_wxNativeFontInfo___str__, METH_VARARGS | METH_KEYWORDS }, { "wxNativeFontInfo_ToString", (PyCFunction) _wrap_wxNativeFontInfo_ToString, METH_VARARGS | METH_KEYWORDS }, { "wxNativeFontInfo_FromString", (PyCFunction) _wrap_wxNativeFontInfo_FromString, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetEncoding", (PyCFunction) _wrap_wxNativeFontInfo_SetEncoding, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetFamily", (PyCFunction) _wrap_wxNativeFontInfo_SetFamily, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetFaceName", (PyCFunction) _wrap_wxNativeFontInfo_SetFaceName, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetUnderlined", (PyCFunction) _wrap_wxNativeFontInfo_SetUnderlined, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetWeight", (PyCFunction) _wrap_wxNativeFontInfo_SetWeight, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetStyle", (PyCFunction) _wrap_wxNativeFontInfo_SetStyle, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_SetPointSize", (PyCFunction) _wrap_wxNativeFontInfo_SetPointSize, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetEncoding", (PyCFunction) _wrap_wxNativeFontInfo_GetEncoding, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetFamily", (PyCFunction) _wrap_wxNativeFontInfo_GetFamily, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetFaceName", (PyCFunction) _wrap_wxNativeFontInfo_GetFaceName, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetUnderlined", (PyCFunction) _wrap_wxNativeFontInfo_GetUnderlined, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetWeight", (PyCFunction) _wrap_wxNativeFontInfo_GetWeight, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetStyle", (PyCFunction) _wrap_wxNativeFontInfo_GetStyle, METH_VARARGS | METH_KEYWORDS }, + { "wxNativeFontInfo_GetPointSize", (PyCFunction) _wrap_wxNativeFontInfo_GetPointSize, METH_VARARGS | METH_KEYWORDS }, { "wxNativeFontInfo_Init", (PyCFunction) _wrap_wxNativeFontInfo_Init, METH_VARARGS | METH_KEYWORDS }, { "new_wxNativeFontInfo", (PyCFunction) _wrap_new_wxNativeFontInfo, METH_VARARGS | METH_KEYWORDS }, - { "wxNativeFontInfo_SetXFontName", (PyCFunction) _wrap_wxNativeFontInfo_SetXFontName, METH_VARARGS | METH_KEYWORDS }, - { "wxNativeFontInfo_GetXFontName", (PyCFunction) _wrap_wxNativeFontInfo_GetXFontName, METH_VARARGS | METH_KEYWORDS }, - { "wxNativeFontInfo_IsDefault", (PyCFunction) _wrap_wxNativeFontInfo_IsDefault, METH_VARARGS | METH_KEYWORDS }, - { "wxNativeFontInfo_FromXFontName", (PyCFunction) _wrap_wxNativeFontInfo_FromXFontName, METH_VARARGS | METH_KEYWORDS }, { "wxGetTranslation", (PyCFunction) _wrap_wxGetTranslation, METH_VARARGS | METH_KEYWORDS }, { "wxGetLocale", (PyCFunction) _wrap_wxGetLocale, METH_VARARGS | METH_KEYWORDS }, { NULL, NULL } @@ -3661,6 +4113,10 @@ SWIGEXPORT(void) initfontsc() { PyDict_SetItemString(d,"wxFONTENCODING_CP12_MAX", PyInt_FromLong((long) wxFONTENCODING_CP12_MAX)); PyDict_SetItemString(d,"wxFONTENCODING_UTF7", PyInt_FromLong((long) wxFONTENCODING_UTF7)); PyDict_SetItemString(d,"wxFONTENCODING_UTF8", PyInt_FromLong((long) wxFONTENCODING_UTF8)); + PyDict_SetItemString(d,"wxFONTENCODING_GB2312", PyInt_FromLong((long) wxFONTENCODING_GB2312)); + PyDict_SetItemString(d,"wxFONTENCODING_BIG5", PyInt_FromLong((long) wxFONTENCODING_BIG5)); + PyDict_SetItemString(d,"wxFONTENCODING_SHIFT_JIS", PyInt_FromLong((long) wxFONTENCODING_SHIFT_JIS)); + PyDict_SetItemString(d,"wxFONTENCODING_EUC_JP", PyInt_FromLong((long) wxFONTENCODING_EUC_JP)); PyDict_SetItemString(d,"wxFONTENCODING_UNICODE", PyInt_FromLong((long) wxFONTENCODING_UNICODE)); PyDict_SetItemString(d,"wxFONTENCODING_MAX", PyInt_FromLong((long) wxFONTENCODING_MAX)); PyDict_SetItemString(d,"wxLANGUAGE_DEFAULT", PyInt_FromLong((long) wxLANGUAGE_DEFAULT)); diff --git a/wxPython/src/gtk/fonts.py b/wxPython/src/gtk/fonts.py index 71e013f9c6..4f2f474f91 100644 --- a/wxPython/src/gtk/fonts.py +++ b/wxPython/src/gtk/fonts.py @@ -6,21 +6,51 @@ class wxNativeFontInfoPtr : def __init__(self,this): self.this = this self.thisown = 0 - def FromXFontName(self, *_args, **_kwargs): - val = apply(fontsc.wxNativeFontInfo_FromXFontName,(self,) + _args, _kwargs) - return val - def IsDefault(self, *_args, **_kwargs): - val = apply(fontsc.wxNativeFontInfo_IsDefault,(self,) + _args, _kwargs) - return val - def GetXFontName(self, *_args, **_kwargs): - val = apply(fontsc.wxNativeFontInfo_GetXFontName,(self,) + _args, _kwargs) - return val - def SetXFontName(self, *_args, **_kwargs): - val = apply(fontsc.wxNativeFontInfo_SetXFontName,(self,) + _args, _kwargs) - return val def Init(self, *_args, **_kwargs): val = apply(fontsc.wxNativeFontInfo_Init,(self,) + _args, _kwargs) return val + def GetPointSize(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetPointSize,(self,) + _args, _kwargs) + return val + def GetStyle(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetStyle,(self,) + _args, _kwargs) + return val + def GetWeight(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetWeight,(self,) + _args, _kwargs) + return val + def GetUnderlined(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetUnderlined,(self,) + _args, _kwargs) + return val + def GetFaceName(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetFaceName,(self,) + _args, _kwargs) + return val + def GetFamily(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetFamily,(self,) + _args, _kwargs) + return val + def GetEncoding(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_GetEncoding,(self,) + _args, _kwargs) + return val + def SetPointSize(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetPointSize,(self,) + _args, _kwargs) + return val + def SetStyle(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetStyle,(self,) + _args, _kwargs) + return val + def SetWeight(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetWeight,(self,) + _args, _kwargs) + return val + def SetUnderlined(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetUnderlined,(self,) + _args, _kwargs) + return val + def SetFaceName(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetFaceName,(self,) + _args, _kwargs) + return val + def SetFamily(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetFamily,(self,) + _args, _kwargs) + return val + def SetEncoding(self, *_args, **_kwargs): + val = apply(fontsc.wxNativeFontInfo_SetEncoding,(self,) + _args, _kwargs) + return val def FromString(self, *_args, **_kwargs): val = apply(fontsc.wxNativeFontInfo_FromString,(self,) + _args, _kwargs) return val @@ -50,9 +80,12 @@ class wxFontMapperPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFontMapper(self) + def __del__(self, delfunc=fontsc.delete_wxFontMapper): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetAltForEncoding(self, *_args, **_kwargs): val = apply(fontsc.wxFontMapper_GetAltForEncoding,(self,) + _args, _kwargs) return val @@ -88,9 +121,16 @@ class wxFontPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFont(self) + def wxFontFromNativeInfoString(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_wxFontFromNativeInfoString,(self,) + _args, _kwargs) + if val: val = wxFontPtr(val) ; val.thisown = 1 + return val + def __del__(self, delfunc=fontsc.delete_wxFont): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(fontsc.wxFont_Ok,(self,) + _args, _kwargs) return val @@ -164,6 +204,12 @@ class wxFontPtr(wxObjectPtr): def GetWeightString(self, *_args, **_kwargs): val = apply(fontsc.wxFont_GetWeightString,(self,) + _args, _kwargs) return val + def SetNoAntiAliasing(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_SetNoAntiAliasing,(self,) + _args, _kwargs) + return val + def GetNoAntiAliasing(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_GetNoAntiAliasing,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxFont instance at %s>" % (self.this,) class wxFont(wxFontPtr): @@ -209,9 +255,12 @@ class wxFontEnumeratorPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFontEnumerator(self) + def __del__(self, delfunc=fontsc.delete_wxFontEnumerator): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def _setCallbackInfo(self, *_args, **_kwargs): val = apply(fontsc.wxFontEnumerator__setCallbackInfo,(self,) + _args, _kwargs) return val @@ -274,12 +323,18 @@ class wxLocalePtr : def __init__(self,this): self.this = this self.thisown = 0 - def Init(self, *_args, **_kwargs): - val = apply(fontsc.wxLocale_Init,(self,) + _args, _kwargs) + def __del__(self, delfunc=fontsc.delete_wxLocale): + if self.thisown == 1: + try: + delfunc(self) + except: + pass + def Init1(self, *_args, **_kwargs): + val = apply(fontsc.wxLocale_Init1,(self,) + _args, _kwargs) + return val + def Init2(self, *_args, **_kwargs): + val = apply(fontsc.wxLocale_Init2,(self,) + _args, _kwargs) return val - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxLocale(self) def IsOk(self, *_args, **_kwargs): val = apply(fontsc.wxLocale_IsOk,(self,) + _args, _kwargs) return val @@ -309,6 +364,14 @@ class wxLocalePtr : return val def __repr__(self): return "<C wxLocale instance at %s>" % (self.this,) + + def Init(self, *_args, **_kwargs): + if type(_args[0]) in [type(''), type(u'')]: + val = apply(self.Init1, _args, _kwargs) + else: + val = apply(self.Init2, _args, _kwargs) + return val + class wxLocale(wxLocalePtr): def __init__(self,*_args,**_kwargs): self.this = apply(fontsc.new_wxLocale,_args,_kwargs) @@ -321,9 +384,12 @@ class wxEncodingConverterPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxEncodingConverter(self) + def __del__(self, delfunc=fontsc.delete_wxEncodingConverter): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Init(self, *_args, **_kwargs): val = apply(fontsc.wxEncodingConverter_Init,(self,) + _args, _kwargs) return val @@ -453,6 +519,10 @@ wxFONTENCODING_CP1257 = fontsc.wxFONTENCODING_CP1257 wxFONTENCODING_CP12_MAX = fontsc.wxFONTENCODING_CP12_MAX wxFONTENCODING_UTF7 = fontsc.wxFONTENCODING_UTF7 wxFONTENCODING_UTF8 = fontsc.wxFONTENCODING_UTF8 +wxFONTENCODING_GB2312 = fontsc.wxFONTENCODING_GB2312 +wxFONTENCODING_BIG5 = fontsc.wxFONTENCODING_BIG5 +wxFONTENCODING_SHIFT_JIS = fontsc.wxFONTENCODING_SHIFT_JIS +wxFONTENCODING_EUC_JP = fontsc.wxFONTENCODING_EUC_JP wxFONTENCODING_UNICODE = fontsc.wxFONTENCODING_UNICODE wxFONTENCODING_MAX = fontsc.wxFONTENCODING_MAX wxLANGUAGE_DEFAULT = fontsc.wxLANGUAGE_DEFAULT diff --git a/wxPython/src/gtk/frames.cpp b/wxPython/src/gtk/frames.cpp index f814996bb8..4ed6489256 100644 --- a/wxPython/src/gtk/frames.cpp +++ b/wxPython/src/gtk/frames.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -498,8 +497,7 @@ static PyObject *_wrap_wxTopLevelWindow_SetIcon(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTopLevelWindow_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -535,8 +533,7 @@ static PyObject *_wrap_wxTopLevelWindow_SetIcons(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIconBundle_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIconBundle_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTopLevelWindow_SetIcons. Expected _wxIconBundle_p."); return NULL; } @@ -677,7 +674,7 @@ static PyObject *_wrap_wxTopLevelWindow_GetTitle(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -999,35 +996,6 @@ static PyObject *_wrap_wxFrame_GetMenuBar(PyObject *self, PyObject *args, PyObje return _resultobj; } -#define wxFrame_Command(_swigobj,_swigarg0) (_swigobj->Command(_swigarg0)) -static PyObject *_wrap_wxFrame_Command(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxFrame * _arg0; - int _arg1; - PyObject * _argo0 = 0; - char *_kwnames[] = { "self","id", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxFrame_Command",_kwnames,&_argo0,&_arg1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFrame_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFrame_Command. Expected _wxFrame_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxFrame_Command(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - #define wxFrame_ProcessCommand(_swigobj,_swigarg0) (_swigobj->ProcessCommand(_swigarg0)) static PyObject *_wrap_wxFrame_ProcessCommand(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2314,8 +2282,7 @@ static PyObject *_wrap_new_wxSplashScreenWindow(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi|OOl:new_wxSplashScreenWindow",_kwnames,&_argo0,&_argo1,&_arg2,&_obj3,&_obj4,&_arg5)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxSplashScreenWindow. Expected _wxBitmap_p."); return NULL; } @@ -2375,8 +2342,7 @@ static PyObject *_wrap_wxSplashScreenWindow_SetBitmap(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSplashScreenWindow_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -2493,8 +2459,7 @@ static PyObject *_wrap_new_wxSplashScreen(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OliOi|OOl:new_wxSplashScreen",_kwnames,&_argo0,&_arg1,&_arg2,&_argo3,&_arg4,&_obj5,&_obj6,&_arg7)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxSplashScreen. Expected _wxBitmap_p."); return NULL; } @@ -2663,7 +2628,6 @@ static PyMethodDef framescMethods[] = { { "wxFrame_GetStatusBar", (PyCFunction) _wrap_wxFrame_GetStatusBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_CreateStatusBar", (PyCFunction) _wrap_wxFrame_CreateStatusBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_ProcessCommand", (PyCFunction) _wrap_wxFrame_ProcessCommand, METH_VARARGS | METH_KEYWORDS }, - { "wxFrame_Command", (PyCFunction) _wrap_wxFrame_Command, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_GetMenuBar", (PyCFunction) _wrap_wxFrame_GetMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_SetMenuBar", (PyCFunction) _wrap_wxFrame_SetMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_GetClientAreaOrigin", (PyCFunction) _wrap_wxFrame_GetClientAreaOrigin, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/frames.py b/wxPython/src/gtk/frames.py index 26b4e08cff..0fae1a5d20 100644 --- a/wxPython/src/gtk/frames.py +++ b/wxPython/src/gtk/frames.py @@ -95,9 +95,6 @@ class wxFramePtr(wxTopLevelWindowPtr): def GetMenuBar(self, *_args, **_kwargs): val = apply(framesc.wxFrame_GetMenuBar,(self,) + _args, _kwargs) return val - def Command(self, *_args, **_kwargs): - val = apply(framesc.wxFrame_Command,(self,) + _args, _kwargs) - return val def ProcessCommand(self, *_args, **_kwargs): val = apply(framesc.wxFrame_ProcessCommand,(self,) + _args, _kwargs) return val @@ -145,6 +142,7 @@ class wxFramePtr(wxTopLevelWindowPtr): return val def __repr__(self): return "<C wxFrame instance at %s>" % (self.this,) + Command = ProcessCommand class wxFrame(wxFramePtr): def __init__(self,*_args,**_kwargs): self.this = apply(framesc.new_wxFrame,_args,_kwargs) diff --git a/wxPython/src/gtk/gdi.cpp b/wxPython/src/gtk/gdi.cpp index 430f4145bc..736d1c913d 100644 --- a/wxPython/src/gtk/gdi.cpp +++ b/wxPython/src/gtk/gdi.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -183,6 +182,14 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { // Alternate 'constructor' wxCursor* wxPyStockCursor(int id) { return new wxCursor(id); + } + + wxCursor* wxCursorFromImage(const wxImage& image) { + #ifndef __WXMAC__ + return new wxCursor(image); + #else + return NULL; + #endif } // Alternate 'constructor' wxColour* wxNamedColour(const wxString& colorName) { @@ -346,8 +353,7 @@ static PyObject *_wrap_wxBitmapFromIcon(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxBitmapFromIcon",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapFromIcon. Expected _wxIcon_p."); return NULL; } @@ -416,8 +422,7 @@ static PyObject *_wrap_wxMaskColour(PyObject *self, PyObject *args, PyObject *kw if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMaskColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMaskColour. Expected _wxBitmap_p."); return NULL; } @@ -510,8 +515,7 @@ static PyObject *_wrap_wxIconFromBitmap(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxIconFromBitmap",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIconFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -558,6 +562,39 @@ static PyObject *_wrap_wxStockCursor(PyObject *self, PyObject *args, PyObject *k return _resultobj; } +static PyObject *_wrap_wxCursorFromImage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxCursor * _result; + wxImage * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "image", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCursorFromImage",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCursorFromImage. Expected _wxImage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxCursor *)wxCursorFromImage(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + static PyObject *_wrap_wxNamedColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxColour * _result; @@ -2003,8 +2040,7 @@ static PyObject *_wrap_wxBitmap_CopyFromIcon(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_CopyFromIcon. Expected _wxIcon_p."); return NULL; } @@ -2040,8 +2076,7 @@ static PyObject *_wrap_new_wxMask(PyObject *self, PyObject *args, PyObject *kwar if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxMask",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxMask. Expected _wxBitmap_p."); return NULL; } @@ -2433,8 +2468,7 @@ static PyObject *_wrap_wxIcon_CopyFromBitmap(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxIcon_CopyFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -2527,8 +2561,7 @@ static PyObject *_wrap_new_wxIconBundleFromIcon(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxIconBundleFromIcon",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxIconBundleFromIcon. Expected _wxIcon_p."); return NULL; } @@ -2597,8 +2630,7 @@ static PyObject *_wrap_wxIconBundle_AddIcon(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxIconBundle_AddIcon. Expected _wxIcon_p."); return NULL; } @@ -2974,9 +3006,17 @@ static PyObject *_wrap_wxColour_Set(PyObject *self, PyObject *args, PyObject *kw static PyObject * wxColour_Get(wxColour *self) { PyObject* rv = PyTuple_New(3); - PyTuple_SetItem(rv, 0, PyInt_FromLong(self->Red())); - PyTuple_SetItem(rv, 1, PyInt_FromLong(self->Green())); - PyTuple_SetItem(rv, 2, PyInt_FromLong(self->Blue())); + int red = -1; + int green = -1; + int blue = -1; + if (self->Ok()) { + red = self->Red(); + green = self->Green(); + blue = self->Blue(); + } + PyTuple_SetItem(rv, 0, PyInt_FromLong(red)); + PyTuple_SetItem(rv, 1, PyInt_FromLong(green)); + PyTuple_SetItem(rv, 2, PyInt_FromLong(blue)); return rv; } static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args, PyObject *kwargs) { @@ -3007,6 +3047,84 @@ static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } +static bool wxColour___eq__(wxColour *self,PyObject * obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } +static PyObject *_wrap_wxColour___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxColour * _arg0; + PyObject * _arg1; + wxColour temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxColour___eq__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxColour_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxColour___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxColour___ne__(wxColour *self,PyObject * obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxColour___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxColour * _arg0; + PyObject * _arg1; + wxColour temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxColour___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxColour_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxColour___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static void *SwigwxColourDatabaseTowxObject(void *ptr) { wxColourDatabase *src; wxObject *dest; @@ -3095,7 +3213,7 @@ static PyObject *_wrap_wxColourDatabase_FindName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4207,8 +4325,7 @@ static PyObject *_wrap_wxBrush_SetStipple(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBrush_SetStipple. Expected _wxBitmap_p."); return NULL; } @@ -4476,13 +4593,13 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args, PyObject *kwarg PyObject * _resultobj; bool _result; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; wxDC * _arg5; - long _arg6; - long _arg7; + wxCoord _arg6; + wxCoord _arg7; int _arg8 = (int ) wxCOPY; int _arg9 = (int ) FALSE; PyObject * _argo0 = 0; @@ -4490,7 +4607,7 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args, PyObject *kwarg char *_kwnames[] = { "self","xdest","ydest","width","height","source","xsrc","ysrc","logicalFunc","useMask", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OllllOll|ii:wxDC_Blit",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8,&_arg9)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiiiOii|ii:wxDC_Blit",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8,&_arg9)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4548,13 +4665,13 @@ static PyObject *_wrap_wxDC_Clear(PyObject *self, PyObject *args, PyObject *kwar static PyObject *_wrap_wxDC_CrossHair(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_CrossHair",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_CrossHair",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4605,14 +4722,14 @@ static PyObject *_wrap_wxDC_DestroyClippingRegion(PyObject *self, PyObject *args #define wxDC_DeviceToLogicalX(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalX(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalX",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalX",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4623,25 +4740,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalX(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalX(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalXRel(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalXRel(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalXRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalXRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4652,25 +4769,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalXRel(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalXRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalY(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalY(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalY",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalY",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4681,25 +4798,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalY(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalY(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalYRel(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalYRel(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalYRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalYRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4710,11 +4827,11 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalYRel(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalYRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -4722,17 +4839,17 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5; - long _arg6; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5; + wxCoord _arg6; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x1","y1","x2","y2","xc","yc", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollllll:wxDC_DrawArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiiiii:wxDC_DrawArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4756,14 +4873,14 @@ static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args, PyObject *kw static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","radius", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Olll:wxDC_DrawCircle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxDC_DrawCircle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4787,15 +4904,15 @@ static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawEllipse",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawEllipse",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4819,17 +4936,17 @@ static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawEllipticArc(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5; - long _arg6; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5; + wxCoord _arg6; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height","start","end", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollllll:wxDC_DrawEllipticArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiiiii:wxDC_DrawEllipticArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4854,14 +4971,14 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxDC * _arg0; wxIcon * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; PyObject * _argo1 = 0; char *_kwnames[] = { "self","icon","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll:wxDC_DrawIcon",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxDC_DrawIcon",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4871,8 +4988,7 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawIcon. Expected _wxIcon_p."); return NULL; } @@ -4975,8 +5091,7 @@ static PyObject *_wrap_wxDC_DrawImageLabel(PyObject *self, PyObject *args, PyObj return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDC_DrawImageLabel. Expected _wxBitmap_p."); return NULL; } @@ -5005,15 +5120,15 @@ static PyObject *_wrap_wxDC_DrawImageLabel(PyObject *self, PyObject *args, PyObj static PyObject *_wrap_wxDC_DrawLine(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x1","y1","x2","y2", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawLine",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawLine",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5039,15 +5154,15 @@ static PyObject *_wrap_wxDC_DrawLines(PyObject *self, PyObject *args, PyObject * wxDC * _arg0; int _arg1; wxPoint * _arg2; - long _arg3 = (long ) 0; - long _arg4 = (long ) 0; + wxCoord _arg3 = (wxCoord ) 0; + wxCoord _arg4 = (wxCoord ) 0; PyObject * _argo0 = 0; int NPOINTS; PyObject * _obj2 = 0; char *_kwnames[] = { "self","points","xoffset","yoffset", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|ll:wxDC_DrawLines",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|ii:wxDC_DrawLines",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5086,8 +5201,8 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject wxDC * _arg0; int _arg1; wxPoint * _arg2; - long _arg3 = (long ) 0; - long _arg4 = (long ) 0; + wxCoord _arg3 = (wxCoord ) 0; + wxCoord _arg4 = (wxCoord ) 0; int _arg5 = (int ) wxODDEVEN_RULE; PyObject * _argo0 = 0; int NPOINTS; @@ -5095,7 +5210,7 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject char *_kwnames[] = { "self","points","xoffset","yoffset","fill_style", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|lli:wxDC_DrawPolygon",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|iii:wxDC_DrawPolygon",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5132,13 +5247,13 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_DrawPoint",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_DrawPoint",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5162,15 +5277,15 @@ static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args, PyObject * static PyObject *_wrap_wxDC_DrawRectangle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5272,16 +5387,16 @@ static PyObject *_wrap_wxDC_DrawRotatedText(PyObject *self, PyObject *args, PyOb static PyObject *_wrap_wxDC_DrawRoundedRectangle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5 = (long ) 20; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5 = (wxCoord ) 20; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height","radius", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll|l:wxDC_DrawRoundedRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii|i:wxDC_DrawRoundedRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5351,14 +5466,14 @@ static PyObject *_wrap_wxDC_DrawText(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; char *_kwnames[] = { "self","text","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll:wxDC_DrawText",_kwnames,&_argo0,&_obj1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxDC_DrawText",_kwnames,&_argo0,&_obj1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5476,8 +5591,8 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args, PyObject * PyObject * _resultobj; bool _result; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; wxColour * _arg3; int _arg4 = (int ) wxFLOOD_SURFACE; PyObject * _argo0 = 0; @@ -5486,7 +5601,7 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args, PyObject * char *_kwnames[] = { "self","x","y","colour","style", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OllO|i:wxDC_FloodFill",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiO|i:wxDC_FloodFill",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5573,7 +5688,7 @@ static PyObject *_wrap_wxDC_GetBrush(PyObject *self, PyObject *args, PyObject *k #define wxDC_GetCharHeight(_swigobj) (_swigobj->GetCharHeight()) static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -5590,18 +5705,18 @@ static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args, PyObje } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_GetCharHeight(_arg0); + _result = (wxCoord )wxDC_GetCharHeight(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_GetCharWidth(_swigobj) (_swigobj->GetCharWidth()) static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -5618,11 +5733,11 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_GetCharWidth(_arg0); + _result = (wxCoord )wxDC_GetCharWidth(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -5630,14 +5745,14 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObjec static PyObject *_wrap_wxDC_GetClippingBox(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long * _arg1; - long temp; - long * _arg2; - long temp0; - long * _arg3; - long temp1; - long * _arg4; - long temp2; + wxCoord * _arg1; + int temp; + wxCoord * _arg2; + int temp0; + wxCoord * _arg3; + int temp1; + wxCoord * _arg4; + int temp2; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -5886,7 +6001,7 @@ static PyObject *_wrap_wxDC_GetPen(PyObject *self, PyObject *args, PyObject *kwa return _resultobj; } -static wxColour * wxDC_GetPixel(wxDC *self,long x,long y) { +static wxColour * wxDC_GetPixel(wxDC *self,wxCoord x,wxCoord y) { wxColour* wc = new wxColour(); self->GetPixel(x, y, wc); return wc; @@ -5895,14 +6010,14 @@ static PyObject *_wrap_wxDC_GetPixel(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxColour * _result; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_GetPixel",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_GetPixel",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6070,10 +6185,10 @@ static PyObject *_wrap_wxDC_GetTextExtent(PyObject *self, PyObject *args, PyObje PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long * _arg2; - long temp; - long * _arg3; - long temp0; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; PyObject * _argo0 = 0; PyObject * _obj1 = 0; char *_kwnames[] = { "self","string", NULL }; @@ -6129,14 +6244,14 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args, Py PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long * _arg2; - long temp; - long * _arg3; - long temp0; - long * _arg4; - long temp1; - long * _arg5; - long temp2; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; + wxCoord * _arg4; + int temp1; + wxCoord * _arg5; + int temp2; wxFont * _arg6 = (wxFont *) NULL; PyObject * _argo0 = 0; PyObject * _obj1 = 0; @@ -6212,6 +6327,84 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxDC_GetMultiLineTextExtent(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->GetMultiLineTextExtent(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) +static PyObject *_wrap_wxDC_GetMultiLineTextExtent(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxDC * _arg0; + wxString * _arg1; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; + wxCoord * _arg4; + int temp1; + wxFont * _arg5 = (wxFont *) NULL; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _argo5 = 0; + char *_kwnames[] = { "self","text","font", NULL }; + + self = self; +{ + _arg2 = &temp; +} +{ + _arg3 = &temp0; +} +{ + _arg4 = &temp1; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxDC_GetMultiLineTextExtent",_kwnames,&_argo0,&_obj1,&_argo5)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetMultiLineTextExtent. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} + if (_argo5) { + if (_argo5 == Py_None) { _arg5 = NULL; } + else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxDC_GetMultiLineTextExtent. Expected _wxFont_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxDC_GetMultiLineTextExtent(_arg0,*_arg1,_arg2,_arg3,_arg4,_arg5); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg3)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg4)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + #define wxDC_GetTextForeground(_swigobj) (_swigobj->GetTextForeground()) static PyObject *_wrap_wxDC_GetTextForeground(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -6293,14 +6486,14 @@ static PyObject *_wrap_wxDC_GetUserScale(PyObject *self, PyObject *args, PyObjec #define wxDC_LogicalToDeviceX(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceX(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceX",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceX",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6311,25 +6504,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceX(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceX(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceXRel(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceXRel(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceXRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceXRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6340,25 +6533,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceXRel(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceXRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceY(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceY(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceY",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceY",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6369,25 +6562,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceY(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceY(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceYRel(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceYRel(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceYRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceYRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6398,18 +6591,18 @@ static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceYRel(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceYRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MaxX(_swigobj) (_swigobj->MaxX()) static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6426,18 +6619,18 @@ static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MaxX(_arg0); + _result = (wxCoord )wxDC_MaxX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MaxY(_swigobj) (_swigobj->MaxY()) static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6454,18 +6647,18 @@ static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MaxY(_arg0); + _result = (wxCoord )wxDC_MaxY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MinX(_swigobj) (_swigobj->MinX()) static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6482,18 +6675,18 @@ static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MinX(_arg0); + _result = (wxCoord )wxDC_MinX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MinY(_swigobj) (_swigobj->MinY()) static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6510,11 +6703,11 @@ static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MinY(_arg0); + _result = (wxCoord )wxDC_MinY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -6550,13 +6743,13 @@ static PyObject *_wrap_wxDC_Ok(PyObject *self, PyObject *args, PyObject *kwargs) static PyObject *_wrap_wxDC_SetDeviceOrigin(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_SetDeviceOrigin",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_SetDeviceOrigin",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6596,8 +6789,7 @@ static PyObject *_wrap_wxDC_SetBackground(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBackground. Expected _wxBrush_p."); return NULL; } @@ -6646,15 +6838,15 @@ static PyObject *_wrap_wxDC_SetBackgroundMode(PyObject *self, PyObject *args, Py static PyObject *_wrap_wxDC_SetClippingRegion(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_SetClippingRegion",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_SetClippingRegion",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6694,8 +6886,7 @@ static PyObject *_wrap_wxDC_SetClippingRegionAsRegion(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetClippingRegionAsRegion. Expected _wxRegion_p."); return NULL; } @@ -6767,8 +6958,7 @@ static PyObject *_wrap_wxDC_SetPalette(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPalette. Expected _wxPalette_p."); return NULL; } @@ -6804,8 +6994,7 @@ static PyObject *_wrap_wxDC_SetBrush(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBrush. Expected _wxBrush_p."); return NULL; } @@ -6841,8 +7030,7 @@ static PyObject *_wrap_wxDC_SetFont(PyObject *self, PyObject *args, PyObject *kw } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetFont. Expected _wxFont_p."); return NULL; } @@ -6997,8 +7185,7 @@ static PyObject *_wrap_wxDC_SetPen(PyObject *self, PyObject *args, PyObject *kwa } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPen. Expected _wxPen_p."); return NULL; } @@ -7188,15 +7375,15 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args, PyObject PyObject * _resultobj; wxDC * _arg0; wxBitmap * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; int _arg4 = (int ) FALSE; PyObject * _argo0 = 0; PyObject * _argo1 = 0; char *_kwnames[] = { "self","bitmap","x","y","useMask", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll|i:wxDC_DrawBitmap",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii|i:wxDC_DrawBitmap",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7206,8 +7393,7 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawBitmap. Expected _wxBitmap_p."); return NULL; } @@ -7622,91 +7808,8 @@ static PyObject *_wrap_wxDC_GetBoundingBox(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyPoints,PyObject * pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyPoints) || PyTuple_Check(pyPoints); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyPoints)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyPoints); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the point coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyPoints, i); - } - else { - obj = PySequence_GetItem(pyPoints, i); - } - if (! _2int_seq_helper(obj, &x1, &y1)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - - // Now draw the point - self->DrawPoint(x1, y1); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; +static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXPoint, pyCoords, pyPens, pyBrushes); } static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7714,13 +7817,15 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj wxDC * _arg0; PyObject * _arg1; PyObject * _arg2; + PyObject * _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pyPoints","pyPens", NULL }; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDC__DrawPointList",_kwnames,&_argo0,&_obj1,&_obj2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawPointList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7735,9 +7840,12 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj { _arg2 = _obj2; } +{ + _arg3 = _obj3; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (PyObject *)wxDC__DrawPointList(_arg0,_arg1,_arg2); + _result = (PyObject *)wxDC__DrawPointList(_arg0,_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -7747,91 +7855,8 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyLines,PyObject * pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyLines) || PyTuple_Check(pyLines); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1, x2, y2; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyLines)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyLines); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the line coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyLines, i); - } - else { - obj = PySequence_GetItem(pyLines, i); - } - if (! _4int_seq_helper(obj, &x1, &y1, &x2, &y2)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - // Now draw the line - self->DrawLine(x1, y1, x2, y2); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x1,y1, x2,y2) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; +static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXLine, pyCoords, pyPens, pyBrushes); } static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7839,13 +7864,15 @@ static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObje wxDC * _arg0; PyObject * _arg1; PyObject * _arg2; + PyObject * _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pyLines","pyPens", NULL }; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDC__DrawLineList",_kwnames,&_argo0,&_obj1,&_obj2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawLineList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7860,9 +7887,205 @@ static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObje { _arg2 = _obj2; } +{ + _arg3 = _obj3; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (PyObject *)wxDC__DrawLineList(_arg0,_arg1,_arg2); + _result = (PyObject *)wxDC__DrawLineList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawRectangleList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXRectangle, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawRectangleList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawRectangleList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawRectangleList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawRectangleList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawEllipseList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXEllipse, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawEllipseList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawEllipseList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawEllipseList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawEllipseList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawPolygonList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXPolygon, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawPolygonList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawPolygonList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawPolygonList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawPolygonList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawTextList(wxDC *self,PyObject * textList,PyObject * pyPoints,PyObject * foregroundList,PyObject * backgroundList) { + return wxPyDrawTextList(*self, textList, pyPoints, foregroundList, backgroundList); + } +static PyObject *_wrap_wxDC__DrawTextList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _arg4; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + PyObject * _obj4 = 0; + char *_kwnames[] = { "self","textList","pyPoints","foregroundList","backgroundList", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOOO:wxDC__DrawTextList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&_obj4)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawTextList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + _arg4 = _obj4; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawTextList(_arg0,_arg1,_arg2,_arg3,_arg4); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -7934,8 +8157,7 @@ static PyObject *_wrap_wxMemoryDC_SelectObject(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryDC_SelectObject. Expected _wxBitmap_p."); return NULL; } @@ -7997,8 +8219,7 @@ static PyObject *_wrap_new_wxBufferedDC(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxBufferedDC. Expected _wxBitmap_p."); return NULL; } @@ -8144,8 +8365,7 @@ static PyObject *_wrap_new_wxBufferedPaintDC(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxBufferedPaintDC. Expected _wxBitmap_p."); return NULL; } @@ -8783,15 +9003,13 @@ static PyObject *_wrap_wxImageList_Add(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_Add. Expected _wxBitmap_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Add. Expected _wxBitmap_p."); return NULL; } @@ -8830,8 +9048,7 @@ static PyObject *_wrap_wxImageList_AddWithColourMask(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddWithColourMask. Expected _wxBitmap_p."); return NULL; } @@ -8872,8 +9089,7 @@ static PyObject *_wrap_wxImageList_AddIcon(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddIcon. Expected _wxIcon_p."); return NULL; } @@ -8910,8 +9126,7 @@ static PyObject *_wrap_wxImageList_Replace(PyObject *self, PyObject *args, PyObj } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Replace. Expected _wxBitmap_p."); return NULL; } @@ -8953,8 +9168,7 @@ static PyObject *_wrap_wxImageList_Draw(PyObject *self, PyObject *args, PyObject } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Draw. Expected _wxDC_p."); return NULL; } @@ -9124,15 +9338,15 @@ static void *SwigwxRegionTowxObject(void *ptr) { static PyObject *_wrap_new_wxRegion(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxRegion * _result; - long _arg0 = (long ) 0; - long _arg1 = (long ) 0; - long _arg2 = (long ) 0; - long _arg3 = (long ) 0; + wxCoord _arg0 = (wxCoord ) 0; + wxCoord _arg1 = (wxCoord ) 0; + wxCoord _arg2 = (wxCoord ) 0; + wxCoord _arg3 = (wxCoord ) 0; char *_kwnames[] = { "x","y","width","height", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|llll:new_wxRegion",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|iiii:new_wxRegion",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) return NULL; { PyThreadState* __tstate = wxPyBeginAllowThreads(); @@ -9285,13 +9499,13 @@ static PyObject *_wrap_wxRegion_Contains(PyObject *self, PyObject *args, PyObjec PyObject * _resultobj; wxRegionContain _result; wxRegion * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxRegion_Contains",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRegion_Contains",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9387,15 +9601,15 @@ static PyObject *_wrap_wxRegion_ContainsRectDim(PyObject *self, PyObject *args, PyObject * _resultobj; wxRegionContain _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","w","h", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_ContainsRectDim",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_ContainsRectDim",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9449,15 +9663,15 @@ static PyObject *_wrap_wxRegion_Intersect(PyObject *self, PyObject *args, PyObje PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Intersect",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Intersect",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9533,8 +9747,7 @@ static PyObject *_wrap_wxRegion_IntersectRegion(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_IntersectRegion. Expected _wxRegion_p."); return NULL; } @@ -9582,15 +9795,15 @@ static PyObject *_wrap_wxRegion_Union(PyObject *self, PyObject *args, PyObject * PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Union",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Union",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9666,8 +9879,7 @@ static PyObject *_wrap_wxRegion_UnionRegion(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_UnionRegion. Expected _wxRegion_p."); return NULL; } @@ -9687,15 +9899,15 @@ static PyObject *_wrap_wxRegion_Subtract(PyObject *self, PyObject *args, PyObjec PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Subtract",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Subtract",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9771,8 +9983,7 @@ static PyObject *_wrap_wxRegion_SubtractRegion(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_SubtractRegion. Expected _wxRegion_p."); return NULL; } @@ -9792,15 +10003,15 @@ static PyObject *_wrap_wxRegion_Xor(PyObject *self, PyObject *args, PyObject *kw PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Xor",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Xor",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9876,8 +10087,7 @@ static PyObject *_wrap_wxRegion_XorRegion(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_XorRegion. Expected _wxRegion_p."); return NULL; } @@ -9913,8 +10123,7 @@ static PyObject *_wrap_new_wxRegionIterator(PyObject *self, PyObject *args, PyOb if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxRegionIterator",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxRegionIterator. Expected _wxRegion_p."); return NULL; } @@ -9966,7 +10175,7 @@ static PyObject *_wrap_delete_wxRegionIterator(PyObject *self, PyObject *args, P #define wxRegionIterator_GetX(_swigobj) (_swigobj->GetX()) static PyObject *_wrap_wxRegionIterator_GetX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -9983,18 +10192,18 @@ static PyObject *_wrap_wxRegionIterator_GetX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetX(_arg0); + _result = (wxCoord )wxRegionIterator_GetX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetY(_swigobj) (_swigobj->GetY()) static PyObject *_wrap_wxRegionIterator_GetY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -10011,18 +10220,18 @@ static PyObject *_wrap_wxRegionIterator_GetY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetY(_arg0); + _result = (wxCoord )wxRegionIterator_GetY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetW(_swigobj) (_swigobj->GetW()) static PyObject *_wrap_wxRegionIterator_GetW(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -10039,18 +10248,18 @@ static PyObject *_wrap_wxRegionIterator_GetW(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetW(_arg0); + _result = (wxCoord )wxRegionIterator_GetW(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetWidth(_swigobj) (_swigobj->GetWidth()) static PyObject *_wrap_wxRegionIterator_GetWidth(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -10067,18 +10276,18 @@ static PyObject *_wrap_wxRegionIterator_GetWidth(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetWidth(_arg0); + _result = (wxCoord )wxRegionIterator_GetWidth(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetH(_swigobj) (_swigobj->GetH()) static PyObject *_wrap_wxRegionIterator_GetH(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -10095,18 +10304,18 @@ static PyObject *_wrap_wxRegionIterator_GetH(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetH(_arg0); + _result = (wxCoord )wxRegionIterator_GetH(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetHeight(_swigobj) (_swigobj->GetHeight()) static PyObject *_wrap_wxRegionIterator_GetHeight(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -10123,11 +10332,11 @@ static PyObject *_wrap_wxRegionIterator_GetHeight(PyObject *self, PyObject *args } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetHeight(_arg0); + _result = (wxCoord )wxRegionIterator_GetHeight(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -10312,6 +10521,10 @@ static PyMethodDef gdicMethods[] = { { "new_wxBufferedDC", (PyCFunction) _wrap_new_wxBufferedDC, METH_VARARGS | METH_KEYWORDS }, { "wxMemoryDC_SelectObject", (PyCFunction) _wrap_wxMemoryDC_SelectObject, METH_VARARGS | METH_KEYWORDS }, { "new_wxMemoryDC", (PyCFunction) _wrap_new_wxMemoryDC, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawTextList", (PyCFunction) _wrap_wxDC__DrawTextList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawPolygonList", (PyCFunction) _wrap_wxDC__DrawPolygonList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawEllipseList", (PyCFunction) _wrap_wxDC__DrawEllipseList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawRectangleList", (PyCFunction) _wrap_wxDC__DrawRectangleList, METH_VARARGS | METH_KEYWORDS }, { "wxDC__DrawLineList", (PyCFunction) _wrap_wxDC__DrawLineList, METH_VARARGS | METH_KEYWORDS }, { "wxDC__DrawPointList", (PyCFunction) _wrap_wxDC__DrawPointList, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetBoundingBox", (PyCFunction) _wrap_wxDC_GetBoundingBox, METH_VARARGS | METH_KEYWORDS }, @@ -10356,6 +10569,7 @@ static PyMethodDef gdicMethods[] = { { "wxDC_LogicalToDeviceX", (PyCFunction) _wrap_wxDC_LogicalToDeviceX, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetUserScale", (PyCFunction) _wrap_wxDC_GetUserScale, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextForeground", (PyCFunction) _wrap_wxDC_GetTextForeground, METH_VARARGS | METH_KEYWORDS }, + { "wxDC_GetMultiLineTextExtent", (PyCFunction) _wrap_wxDC_GetMultiLineTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetFullTextExtent", (PyCFunction) _wrap_wxDC_GetFullTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextExtent", (PyCFunction) _wrap_wxDC_GetTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextBackground", (PyCFunction) _wrap_wxDC_GetTextBackground, METH_VARARGS | METH_KEYWORDS }, @@ -10443,6 +10657,8 @@ static PyMethodDef gdicMethods[] = { { "wxColourDatabase_Append", (PyCFunction) _wrap_wxColourDatabase_Append, METH_VARARGS | METH_KEYWORDS }, { "wxColourDatabase_FindName", (PyCFunction) _wrap_wxColourDatabase_FindName, METH_VARARGS | METH_KEYWORDS }, { "wxColourDatabase_FindColour", (PyCFunction) _wrap_wxColourDatabase_FindColour, METH_VARARGS | METH_KEYWORDS }, + { "wxColour___ne__", (PyCFunction) _wrap_wxColour___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxColour___eq__", (PyCFunction) _wrap_wxColour___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Get", (PyCFunction) _wrap_wxColour_Get, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Set", (PyCFunction) _wrap_wxColour_Set, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Ok", (PyCFunction) _wrap_wxColour_Ok, METH_VARARGS | METH_KEYWORDS }, @@ -10496,6 +10712,7 @@ static PyMethodDef gdicMethods[] = { { "new_wxGDIObject", (PyCFunction) _wrap_new_wxGDIObject, METH_VARARGS | METH_KEYWORDS }, { "wxMemoryDCFromDC", (PyCFunction) _wrap_wxMemoryDCFromDC, METH_VARARGS | METH_KEYWORDS }, { "wxNamedColour", (PyCFunction) _wrap_wxNamedColour, METH_VARARGS | METH_KEYWORDS }, + { "wxCursorFromImage", (PyCFunction) _wrap_wxCursorFromImage, METH_VARARGS | METH_KEYWORDS }, { "wxStockCursor", (PyCFunction) _wrap_wxStockCursor, METH_VARARGS | METH_KEYWORDS }, { "wxIconFromBitmap", (PyCFunction) _wrap_wxIconFromBitmap, METH_VARARGS | METH_KEYWORDS }, { "wxIconFromXPMData", (PyCFunction) _wrap_wxIconFromXPMData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/gdi.py b/wxPython/src/gtk/gdi.py index 364bb91b86..a5a770e9aa 100644 --- a/wxPython/src/gtk/gdi.py +++ b/wxPython/src/gtk/gdi.py @@ -4,13 +4,17 @@ import gdic from misc import * from fonts import * +import wx class wxGDIObjectPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxGDIObject(self) + def __del__(self, delfunc=gdic.delete_wxGDIObject): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetVisible(self, *_args, **_kwargs): val = apply(gdic.wxGDIObject_GetVisible,(self,) + _args, _kwargs) return val @@ -34,9 +38,12 @@ class wxBitmapPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxBitmap(self) + def __del__(self, delfunc=gdic.delete_wxBitmap): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPalette(self, *_args, **_kwargs): val = apply(gdic.wxBitmap_GetPalette,(self,) + _args, _kwargs) if val: val = wxPalettePtr(val) @@ -85,13 +92,10 @@ class wxBitmapPtr(wxGDIObjectPtr): def __repr__(self): return "<C wxBitmap instance at %s>" % (self.this,) - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxBitmap(self) - except: - pass - + def SetMaskColour(self, colour): + mask = wxMaskColour(self, colour) + self.SetMask(mask) + class wxBitmap(wxBitmapPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxBitmap,_args,_kwargs) @@ -121,9 +125,12 @@ class wxIconPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxIcon(self) + def __del__(self, delfunc=gdic.delete_wxIcon): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def LoadFile(self, *_args, **_kwargs): val = apply(gdic.wxIcon_LoadFile,(self,) + _args, _kwargs) return val @@ -153,14 +160,6 @@ class wxIconPtr(wxGDIObjectPtr): return val def __repr__(self): return "<C wxIcon instance at %s>" % (self.this,) - - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxIcon(self) - except: - pass - class wxIcon(wxIconPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxIcon,_args,_kwargs) @@ -173,9 +172,12 @@ class wxIconBundlePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxIconBundle(self) + def __del__(self, delfunc=gdic.delete_wxIconBundle): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddIcon(self, *_args, **_kwargs): val = apply(gdic.wxIconBundle_AddIcon,(self,) + _args, _kwargs) return val @@ -210,9 +212,12 @@ class wxCursorPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxCursor(self) + def __del__(self, delfunc=gdic.delete_wxCursor): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(gdic.wxCursor_Ok,(self,) + _args, _kwargs) return val @@ -229,9 +234,12 @@ class wxColourPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxColour(self) + def __del__(self, delfunc=gdic.delete_wxColour): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Red(self, *_args, **_kwargs): val = apply(gdic.wxColour_Red,(self,) + _args, _kwargs) return val @@ -250,11 +258,22 @@ class wxColourPtr(wxObjectPtr): def Get(self, *_args, **_kwargs): val = apply(gdic.wxColour_Get,(self,) + _args, _kwargs) return val + def __eq__(self, *_args, **_kwargs): + val = apply(gdic.wxColour___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(gdic.wxColour___ne__,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxColour instance at %s>" % (self.this,) asTuple = Get - def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxColour:' + str(self.asTuple()) + def __nonzero__(self): return self.Ok() + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) + class wxColour(wxColourPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxColour,_args,_kwargs) @@ -290,9 +309,12 @@ class wxPenPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPen(self) + def __del__(self, delfunc=gdic.delete_wxPen): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetCap(self, *_args, **_kwargs): val = apply(gdic.wxPen_GetCap,(self,) + _args, _kwargs) return val @@ -347,9 +369,12 @@ class wxPyPenPtr(wxPenPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPyPen(self) + def __del__(self, delfunc=gdic.delete_wxPyPen): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetDashes(self, *_args, **_kwargs): val = apply(gdic.wxPyPen_SetDashes,(self,) + _args, _kwargs) return val @@ -393,9 +418,12 @@ class wxBrushPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxBrush(self) + def __del__(self, delfunc=gdic.delete_wxBrush): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetColour(self, *_args, **_kwargs): val = apply(gdic.wxBrush_GetColour,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -459,9 +487,12 @@ class wxDCPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxDC(self) + def __del__(self, delfunc=gdic.delete_wxDC): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def BeginDrawing(self, *_args, **_kwargs): val = apply(gdic.wxDC_BeginDrawing,(self,) + _args, _kwargs) return val @@ -615,6 +646,9 @@ class wxDCPtr(wxObjectPtr): def GetFullTextExtent(self, *_args, **_kwargs): val = apply(gdic.wxDC_GetFullTextExtent,(self,) + _args, _kwargs) return val + def GetMultiLineTextExtent(self, *_args, **_kwargs): + val = apply(gdic.wxDC_GetMultiLineTextExtent,(self,) + _args, _kwargs) + return val def GetTextForeground(self, *_args, **_kwargs): val = apply(gdic.wxDC_GetTextForeground,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -749,6 +783,18 @@ class wxDCPtr(wxObjectPtr): def _DrawLineList(self, *_args, **_kwargs): val = apply(gdic.wxDC__DrawLineList,(self,) + _args, _kwargs) return val + def _DrawRectangleList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawRectangleList,(self,) + _args, _kwargs) + return val + def _DrawEllipseList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawEllipseList,(self,) + _args, _kwargs) + return val + def _DrawPolygonList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawPolygonList,(self,) + _args, _kwargs) + return val + def _DrawTextList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawTextList,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxDC instance at %s>" % (self.this,) @@ -759,7 +805,8 @@ class wxDCPtr(wxObjectPtr): pens = [pens] elif len(pens) != len(points): raise ValueError('points and pens must have same length') - return self._DrawPointList(points, pens) + return self._DrawPointList(points, pens, []) + def DrawLineList(self, lines, pens=None): if pens is None: @@ -768,7 +815,83 @@ class wxDCPtr(wxObjectPtr): pens = [pens] elif len(pens) != len(lines): raise ValueError('lines and pens must have same length') - return self._DrawLineList(lines, pens) + return self._DrawLineList(lines, pens, []) + + + def DrawRectangleList(self, rectangles, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(rectangles): + raise ValueError('rectangles and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(rectangles): + raise ValueError('rectangles and brushes must have same length') + return self._DrawRectangleList(rectangles, pens, brushes) + + + def DrawEllipseList(self, ellipses, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(ellipses): + raise ValueError('ellipses and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(ellipses): + raise ValueError('ellipses and brushes must have same length') + return self._DrawEllipseList(ellipses, pens, brushes) + + + def DrawPolygonList(self, polygons, pens=None, brushes=None): + ## Note: This does not currently support fill style or offset + ## you can always use the non-List version if need be. + ## I really would like to support fill-style, however, + ## but wxODDEVEN_RULE does not appear to be defined at the Python level + ## [It's in wx.py... --Robin] + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(polygons): + raise ValueError('polygons and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(polygons): + raise ValueError('polygons and brushes must have same length') + return self._DrawPolygonList(polygons, pens, brushes) + + + def DrawTextList(self, textList, coords, foregrounds = None, backgrounds = None, fonts = None): + ## NOTE: this does not currently support changing the font + ## Make sure you set Background mode to wxSolid (DC.SetBackgroundMode) + ## If you want backgounds to do anything. + if type(textList) == type(''): + textList = [textList] + elif len(textList) != len(coords): + raise ValueError('textlist and coords must have same length') + if foregrounds is None: + foregrounds = [] + elif isinstance(foregrounds, wxColourPtr): + foregrounds = [foregrounds] + elif len(foregrounds) != len(coords): + raise ValueError('foregrounds and coords must have same length') + if backgrounds is None: + backgrounds = [] + elif isinstance(backgrounds, wxColourPtr): + backgrounds = [backgrounds] + elif len(backgrounds) != len(coords): + raise ValueError('backgrounds and coords must have same length') + return self._DrawTextList(textList, coords, foregrounds, backgrounds) class wxDC(wxDCPtr): def __init__(self,this): @@ -901,9 +1024,12 @@ class wxPalettePtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPalette(self) + def __del__(self, delfunc=gdic.delete_wxPalette): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPixel(self, *_args, **_kwargs): val = apply(gdic.wxPalette_GetPixel,(self,) + _args, _kwargs) return val @@ -927,9 +1053,12 @@ class wxImageListPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxImageList(self) + def __del__(self, delfunc=gdic.delete_wxImageList): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Add(self, *_args, **_kwargs): val = apply(gdic.wxImageList_Add,(self,) + _args, _kwargs) return val @@ -971,9 +1100,12 @@ class wxRegionPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxRegion(self) + def __del__(self, delfunc=gdic.delete_wxRegion): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Clear(self, *_args, **_kwargs): val = apply(gdic.wxRegion_Clear,(self,) + _args, _kwargs) return val @@ -1054,9 +1186,12 @@ class wxRegionIteratorPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxRegionIterator(self) + def __del__(self, delfunc=gdic.delete_wxRegionIterator): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetX(self, *_args, **_kwargs): val = apply(gdic.wxRegionIterator_GetX,(self,) + _args, _kwargs) return val @@ -1147,6 +1282,11 @@ def wxStockCursor(*_args, **_kwargs): if val: val = wxCursorPtr(val); val.thisown = 1 return val +def wxCursorFromImage(*_args, **_kwargs): + val = apply(gdic.wxCursorFromImage,_args,_kwargs) + if val: val = wxCursorPtr(val); val.thisown = 1 + return val + def wxNamedColour(*_args, **_kwargs): val = apply(gdic.wxNamedColour,_args,_kwargs) if val: val = wxColourPtr(val); val.thisown = 1 diff --git a/wxPython/src/gtk/grid.cpp b/wxPython/src/gtk/grid.cpp index e0f5dd6baf..1a23cddeed 100644 --- a/wxPython/src/gtk/grid.cpp +++ b/wxPython/src/gtk/grid.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -106,7 +105,7 @@ PyObject* wxPyMake_##TYPE(TYPE* source) { \ /* Otherwise make a new wrapper for it the old fashioned way and \ give it the OOR treatment */ \ if (! target) { \ - target = wxPyConstructObject(source, #TYPE, FALSE); \ + target = wxPyConstructObject(source, wxT(#TYPE), FALSE); \ if (target) \ source->SetClientObject(new wxPyOORClientData(target)); \ } \ @@ -541,7 +540,7 @@ public: PyObject* go = wxPyMake_wxObject(&grid); PyObject* dco = wxPyMake_wxObject(&dc); PyObject* ao = wxPyMake_wxGridCellAttr(&attr); - PyObject* ro = wxPyConstructObject((void*)&rect, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOOiii)", go, ao, dco, ro, row, col, isSelected)); @@ -705,7 +704,7 @@ public: wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "PaintBackground)"))) { PyObject* ao = wxPyMake_wxGridCellAttr(attr); - PyObject* ro = wxPyConstructObject((void*)&rectCell, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rectCell, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", ro, ao)); @@ -905,6 +904,21 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { return FALSE; } +PyObject* wxGridCellCoordsArray_helper(const wxGridCellCoordsArray* source) +{ + PyObject* list = PyList_New(0); + size_t idx; + for (idx = 0; idx < source->GetCount(); idx += 1) { + wxGridCellCoords& coord = source->Item(idx); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(coord.GetRow())); + PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(coord.GetCol())); + PyList_Append(list, tup); + Py_DECREF(tup); + } + return list; +} + typedef wxGrid::wxGridSelectionModes WXGRIDSELECTIONMODES; #ifdef __cplusplus extern "C" { @@ -1100,22 +1114,19 @@ static PyObject *_wrap_wxGridCellRenderer_Draw(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellRenderer_Draw. Expected _wxGrid_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxGridCellRenderer_Draw. Expected _wxGridCellAttr_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGridCellRenderer_Draw. Expected _wxDC_p."); return NULL; } @@ -1165,22 +1176,19 @@ static PyObject *_wrap_wxGridCellRenderer_GetBestSize(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellRenderer_GetBestSize. Expected _wxGrid_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxGridCellRenderer_GetBestSize. Expected _wxGridCellAttr_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGridCellRenderer_GetBestSize. Expected _wxDC_p."); return NULL; } @@ -1893,6 +1901,71 @@ static PyObject *_wrap_wxGridCellEditor_SetControl(PyObject *self, PyObject *arg return _resultobj; } +#define wxGridCellEditor_GetCellAttr(_swigobj) (_swigobj->GetCellAttr()) +static PyObject *_wrap_wxGridCellEditor_GetCellAttr(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellAttr * _result; + wxGridCellEditor * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGridCellEditor_GetCellAttr",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGridCellEditor_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGridCellEditor_GetCellAttr. Expected _wxGridCellEditor_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxGridCellAttr *)wxGridCellEditor_GetCellAttr(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ _resultobj = wxPyMake_wxGridCellAttr(_result); } + return _resultobj; +} + +#define wxGridCellEditor_SetCellAttr(_swigobj,_swigarg0) (_swigobj->SetCellAttr(_swigarg0)) +static PyObject *_wrap_wxGridCellEditor_SetCellAttr(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellEditor * _arg0; + wxGridCellAttr * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","attr", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGridCellEditor_SetCellAttr",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGridCellEditor_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGridCellEditor_SetCellAttr. Expected _wxGridCellEditor_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellAttr_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_SetCellAttr. Expected _wxGridCellAttr_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGridCellEditor_SetCellAttr(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxGridCellEditor_SetParameters(_swigobj,_swigarg0) (_swigobj->SetParameters(_swigarg0)) static PyObject *_wrap_wxGridCellEditor_SetParameters(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2311,8 +2384,7 @@ static PyObject *_wrap_wxGridCellEditor_IsAcceptedKey(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_IsAcceptedKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2347,8 +2419,7 @@ static PyObject *_wrap_wxGridCellEditor_StartingKey(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_StartingKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2412,8 +2483,7 @@ static PyObject *_wrap_wxGridCellEditor_HandleReturn(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_HandleReturn. Expected _wxKeyEvent_p."); return NULL; } @@ -2670,8 +2740,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_IsAcceptedKey(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_IsAcceptedKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2707,8 +2776,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_StartingKey(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_StartingKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2772,8 +2840,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_HandleReturn(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_HandleReturn. Expected _wxKeyEvent_p."); return NULL; } @@ -3447,8 +3514,7 @@ static PyObject *_wrap_wxGridCellAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -5012,7 +5078,7 @@ static PyObject *_wrap_wxGridTableBase_GetValue(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5092,7 +5158,7 @@ static PyObject *_wrap_wxGridTableBase_GetTypeName(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5603,7 +5669,7 @@ static PyObject *_wrap_wxGridTableBase_GetRowLabelValue(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5641,7 +5707,7 @@ static PyObject *_wrap_wxGridTableBase_GetColLabelValue(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6042,7 +6108,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetTypeName(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6368,7 +6434,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetRowLabelValue(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6406,7 +6472,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetColLabelValue(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7275,8 +7341,7 @@ static PyObject *_wrap_wxGridCellCoords___cmp__(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellCoords_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellCoords_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellCoords___cmp__. Expected _wxGridCellCoords_p."); return NULL; } @@ -7563,8 +7628,7 @@ static PyObject *_wrap_wxGrid_ProcessTableMessage(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridTableMessage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridTableMessage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_ProcessTableMessage. Expected _wxGridTableMessage_p."); return NULL; } @@ -7894,8 +7958,7 @@ static PyObject *_wrap_wxGrid_DrawCellHighlight(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_DrawCellHighlight. Expected _wxDC_p."); return NULL; } @@ -7945,8 +8008,7 @@ static PyObject *_wrap_wxGrid_DrawTextRectangle(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_DrawTextRectangle. Expected _wxDC_p."); return NULL; } @@ -8008,8 +8070,7 @@ static PyObject *_wrap_wxGrid_GetTextBoxSize(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_GetTextBoxSize. Expected _wxDC_p."); return NULL; } @@ -8025,11 +8086,10 @@ static PyObject *_wrap_wxGrid_GetTextBoxSize(PyObject *self, PyObject *args, PyO PyObject* item = PySequence_GetItem(_obj2, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg2->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg2->Add(PyString_AsString(str)); #endif + _arg2->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -9492,7 +9552,7 @@ static PyObject *_wrap_wxGrid_GetRowLabelValue(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9530,7 +9590,7 @@ static PyObject *_wrap_wxGrid_GetColLabelValue(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9807,8 +9867,7 @@ static PyObject *_wrap_wxGrid_SetLabelFont(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_SetLabelFont. Expected _wxFont_p."); return NULL; } @@ -11666,8 +11725,7 @@ static PyObject *_wrap_wxGrid_SetDefaultCellFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_SetDefaultCellFont. Expected _wxFont_p."); return NULL; } @@ -11705,8 +11763,7 @@ static PyObject *_wrap_wxGrid_SetCellFont(PyObject *self, PyObject *args, PyObje } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGrid_SetCellFont. Expected _wxFont_p."); return NULL; } @@ -12176,7 +12233,7 @@ static PyObject *_wrap_wxGrid_GetCellValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -12504,6 +12561,267 @@ static PyObject *_wrap_wxGrid_IsInSelection(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxGrid_GetSelectedCells(_swigobj) (_swigobj->GetSelectedCells()) +static PyObject *_wrap_wxGrid_GetSelectedCells(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedCells",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedCells. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectedCells(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectionBlockTopLeft(_swigobj) (_swigobj->GetSelectionBlockTopLeft()) +static PyObject *_wrap_wxGrid_GetSelectionBlockTopLeft(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectionBlockTopLeft",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectionBlockTopLeft. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectionBlockTopLeft(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectionBlockBottomRight(_swigobj) (_swigobj->GetSelectionBlockBottomRight()) +static PyObject *_wrap_wxGrid_GetSelectionBlockBottomRight(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectionBlockBottomRight",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectionBlockBottomRight. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectionBlockBottomRight(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectedRows(_swigobj) (_swigobj->GetSelectedRows()) +static PyObject *_wrap_wxGrid_GetSelectedRows(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxArrayInt * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedRows",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedRows. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxArrayInt (wxGrid_GetSelectedRows(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = PyList_New(0); + size_t idx; + for (idx = 0; idx < _result->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong(_result->Item(idx)); + PyList_Append(_resultobj, val); + Py_DECREF(val); + } + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectedCols(_swigobj) (_swigobj->GetSelectedCols()) +static PyObject *_wrap_wxGrid_GetSelectedCols(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxArrayInt * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedCols",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedCols. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxArrayInt (wxGrid_GetSelectedCols(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = PyList_New(0); + size_t idx; + for (idx = 0; idx < _result->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong(_result->Item(idx)); + PyList_Append(_resultobj, val); + Py_DECREF(val); + } + delete _result; +} + return _resultobj; +} + +#define wxGrid_DeselectRow(_swigobj,_swigarg0) (_swigobj->DeselectRow(_swigarg0)) +static PyObject *_wrap_wxGrid_DeselectRow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","row", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxGrid_DeselectRow",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectRow. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectRow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxGrid_DeselectCol(_swigobj,_swigarg0) (_swigobj->DeselectCol(_swigarg0)) +static PyObject *_wrap_wxGrid_DeselectCol(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","col", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxGrid_DeselectCol",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectCol. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectCol(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxGrid_DeselectCell(_swigobj,_swigarg0,_swigarg1) (_swigobj->DeselectCell(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxGrid_DeselectCell(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + int _arg2; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","row","col", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxGrid_DeselectCell",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectCell. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectCell(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxGrid_BlockToDeviceRect(_swigobj,_swigarg0,_swigarg1) (_swigobj->BlockToDeviceRect(_swigarg0,_swigarg1)) static PyObject *_wrap_wxGrid_BlockToDeviceRect(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -14301,6 +14619,14 @@ static PyMethodDef gridcMethods[] = { { "wxGrid_GetSelectionForeground", (PyCFunction) _wrap_wxGrid_GetSelectionForeground, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_GetSelectionBackground", (PyCFunction) _wrap_wxGrid_GetSelectionBackground, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_BlockToDeviceRect", (PyCFunction) _wrap_wxGrid_BlockToDeviceRect, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectCell", (PyCFunction) _wrap_wxGrid_DeselectCell, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectCol", (PyCFunction) _wrap_wxGrid_DeselectCol, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectRow", (PyCFunction) _wrap_wxGrid_DeselectRow, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedCols", (PyCFunction) _wrap_wxGrid_GetSelectedCols, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedRows", (PyCFunction) _wrap_wxGrid_GetSelectedRows, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectionBlockBottomRight", (PyCFunction) _wrap_wxGrid_GetSelectionBlockBottomRight, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectionBlockTopLeft", (PyCFunction) _wrap_wxGrid_GetSelectionBlockTopLeft, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedCells", (PyCFunction) _wrap_wxGrid_GetSelectedCells, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_IsInSelection", (PyCFunction) _wrap_wxGrid_IsInSelection, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_ClearSelection", (PyCFunction) _wrap_wxGrid_ClearSelection, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_IsSelection", (PyCFunction) _wrap_wxGrid_IsSelection, METH_VARARGS | METH_KEYWORDS }, @@ -14617,6 +14943,8 @@ static PyMethodDef gridcMethods[] = { { "wxGridCellEditor_DecRef", (PyCFunction) _wrap_wxGridCellEditor_DecRef, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_IncRef", (PyCFunction) _wrap_wxGridCellEditor_IncRef, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_SetParameters", (PyCFunction) _wrap_wxGridCellEditor_SetParameters, METH_VARARGS | METH_KEYWORDS }, + { "wxGridCellEditor_SetCellAttr", (PyCFunction) _wrap_wxGridCellEditor_SetCellAttr, METH_VARARGS | METH_KEYWORDS }, + { "wxGridCellEditor_GetCellAttr", (PyCFunction) _wrap_wxGridCellEditor_GetCellAttr, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_SetControl", (PyCFunction) _wrap_wxGridCellEditor_SetControl, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_GetControl", (PyCFunction) _wrap_wxGridCellEditor_GetControl, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_IsCreated", (PyCFunction) _wrap_wxGridCellEditor_IsCreated, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/grid.py b/wxPython/src/gtk/grid.py index 7cbd1c0df1..760f902e4b 100644 --- a/wxPython/src/gtk/grid.py +++ b/wxPython/src/gtk/grid.py @@ -255,6 +255,12 @@ class wxGridCellEditorPtr : def SetControl(self, *_args, **_kwargs): val = apply(gridc.wxGridCellEditor_SetControl,(self,) + _args, _kwargs) return val + def GetCellAttr(self, *_args, **_kwargs): + val = apply(gridc.wxGridCellEditor_GetCellAttr,(self,) + _args, _kwargs) + return val + def SetCellAttr(self, *_args, **_kwargs): + val = apply(gridc.wxGridCellEditor_SetCellAttr,(self,) + _args, _kwargs) + return val def SetParameters(self, *_args, **_kwargs): val = apply(gridc.wxGridCellEditor_SetParameters,(self,) + _args, _kwargs) return val @@ -865,9 +871,12 @@ class wxGridTableMessagePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gridc=gridc): - if self.thisown == 1 : - gridc.delete_wxGridTableMessage(self) + def __del__(self, delfunc=gridc.delete_wxGridTableMessage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTableObject(self, *_args, **_kwargs): val = apply(gridc.wxGridTableMessage_SetTableObject,(self,) + _args, _kwargs) return val @@ -906,9 +915,12 @@ class wxGridCellCoordsPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gridc=gridc): - if self.thisown == 1 : - gridc.delete_wxGridCellCoords(self) + def __del__(self, delfunc=gridc.delete_wxGridCellCoords): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetRow(self, *_args, **_kwargs): val = apply(gridc.wxGridCellCoords_GetRow,(self,) + _args, _kwargs) return val @@ -932,8 +944,16 @@ class wxGridCellCoordsPtr : return val def __repr__(self): return "<C wxGridCellCoords instance at %s>" % (self.this,) - def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxGridCellCoords'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.SetRow(val) + elif index == 1: self.SetCol(val) + else: raise IndexError + class wxGridCellCoords(wxGridCellCoordsPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gridc.new_wxGridCellCoords,_args,_kwargs) @@ -1433,6 +1453,30 @@ class wxGridPtr(wxScrolledWindowPtr): def IsInSelection(self, *_args, **_kwargs): val = apply(gridc.wxGrid_IsInSelection,(self,) + _args, _kwargs) return val + def GetSelectedCells(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedCells,(self,) + _args, _kwargs) + return val + def GetSelectionBlockTopLeft(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectionBlockTopLeft,(self,) + _args, _kwargs) + return val + def GetSelectionBlockBottomRight(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectionBlockBottomRight,(self,) + _args, _kwargs) + return val + def GetSelectedRows(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedRows,(self,) + _args, _kwargs) + return val + def GetSelectedCols(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedCols,(self,) + _args, _kwargs) + return val + def DeselectRow(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectRow,(self,) + _args, _kwargs) + return val + def DeselectCol(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectCol,(self,) + _args, _kwargs) + return val + def DeselectCell(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectCell,(self,) + _args, _kwargs) + return val def BlockToDeviceRect(self, *_args, **_kwargs): val = apply(gridc.wxGrid_BlockToDeviceRect,(self,) + _args, _kwargs) if val: val = wxRectPtr(val) ; val.thisown = 1 diff --git a/wxPython/src/gtk/help.cpp b/wxPython/src/gtk/help.cpp index 5d0570f0a4..c9770753d4 100644 --- a/wxPython/src/gtk/help.cpp +++ b/wxPython/src/gtk/help.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -247,7 +246,7 @@ static PyObject *_wrap_wxHelpEvent_GetLink(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -321,7 +320,7 @@ static PyObject *_wrap_wxHelpEvent_GetTarget(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -704,7 +703,7 @@ static PyObject *_wrap_wxHelpProvider_GetHelp(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/gtk/help.py b/wxPython/src/gtk/help.py index add867a444..ac1612ba19 100644 --- a/wxPython/src/gtk/help.py +++ b/wxPython/src/gtk/help.py @@ -65,9 +65,12 @@ class wxContextHelpPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,helpc=helpc): - if self.thisown == 1 : - helpc.delete_wxContextHelp(self) + def __del__(self, delfunc=helpc.delete_wxContextHelp): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def BeginContextHelp(self, *_args, **_kwargs): val = apply(helpc.wxContextHelp_BeginContextHelp,(self,) + _args, _kwargs) return val @@ -171,3 +174,4 @@ wxEVT_DETAILED_HELP = helpc.wxEVT_DETAILED_HELP # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxHelpEventPtr = wxHelpEventPtr +wx.wxContextHelpButtonPtr = wxContextHelpButtonPtr diff --git a/wxPython/src/gtk/html.cpp b/wxPython/src/gtk/html.cpp index 45ce76a2ad..b9de532bd3 100644 --- a/wxPython/src/gtk/html.cpp +++ b/wxPython/src/gtk/html.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -62,6 +61,7 @@ extern PyObject *SWIG_newvarlink(void); #include <wx/fs_zip.h> #include <wx/fs_inet.h> #include <wx/wfstream.h> +#include <wx/filesys.h> #include "printfw.h" @@ -197,6 +197,51 @@ private: // and adds itself to the wxModules list and to the wxHtmlWinParser. new wxPyHtmlTagsModule(tagHandlerClass); } + // here's the C++ version +class wxPyHtmlFilter : public wxHtmlFilter { + DECLARE_ABSTRACT_CLASS(wxPyHtmlFilter); +public: + wxPyHtmlFilter() : wxHtmlFilter() {} + + // returns TRUE if this filter is able to open&read given file + virtual bool CanRead(const wxFSFile& file) const { + bool rval = FALSE; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "CanRead"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + } + wxPyEndBlockThreads(); + return rval; + } + + + // Reads given file and returns HTML document. + // Returns empty string if opening failed + virtual wxString ReadFile(const wxFSFile& file) const { + wxString rval; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "ReadFile"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + PyObject* ro; + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + if (ro) { + rval = Py2wxString(ro); + Py_DECREF(ro); + } + } + wxPyEndBlockThreads(); + return rval; + } + + PYPRIVATE; +}; + +IMPLEMENT_ABSTRACT_CLASS(wxPyHtmlFilter, wxHtmlFilter); class wxPyHtmlWindow : public wxHtmlWindow { DECLARE_ABSTRACT_CLASS(wxPyHtmlWindow); @@ -205,7 +250,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_AUTO, - const wxString& name = "htmlWindow") + const wxString& name = wxPyHtmlWindowNameStr) : wxHtmlWindow(parent, id, pos, size, style, name) {}; wxPyHtmlWindow() : wxHtmlWindow() {}; @@ -228,7 +273,6 @@ public: DEC_PYCALLBACK__STRING(OnSetTitle); DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); -// DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); PYPRIVATE; }; @@ -236,14 +280,13 @@ IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); -// IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { bool found; wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "OnLinkClicked"))) { - PyObject* obj = wxPyConstructObject((void*)&link, "wxHtmlLinkInfo", 0); + PyObject* obj = wxPyConstructObject((void*)&link, wxT("wxHtmlLinkInfo"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); Py_DECREF(obj); } @@ -290,10 +333,6 @@ wxHtmlOpeningStatus wxPyHtmlWindow::OnOpeningURL(wxHtmlURLType type, - void wxHtmlWindow_AddFilter(wxHtmlFilter *filter) { - wxHtmlWindow::AddFilter(filter); - } - extern "C" SWIGEXPORT(void) inithtmlhelpc(); #ifdef __cplusplus extern "C" { @@ -321,33 +360,6 @@ static PyObject *_wrap_wxHtmlWinParser_AddTagHandler(PyObject *self, PyObject *a return _resultobj; } -static PyObject *_wrap_wxHtmlWindow_AddFilter(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxHtmlFilter * _arg0; - PyObject * _argo0 = 0; - char *_kwnames[] = { "filter", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_AddFilter",_kwnames,&_argo0)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlFilter_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_AddFilter. Expected _wxHtmlFilter_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxHtmlWindow_AddFilter(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static void *SwigwxHtmlLinkInfoTowxObject(void *ptr) { wxHtmlLinkInfo *src; wxObject *dest; @@ -431,7 +443,7 @@ static PyObject *_wrap_wxHtmlLinkInfo_GetHref(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -468,7 +480,7 @@ static PyObject *_wrap_wxHtmlLinkInfo_GetTarget(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -650,7 +662,7 @@ static PyObject *_wrap_wxHtmlTag_GetName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -734,7 +746,7 @@ static PyObject *_wrap_wxHtmlTag_GetParam(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -775,7 +787,7 @@ static PyObject *_wrap_wxHtmlTag_GetAllParams(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1107,6 +1119,34 @@ static PyObject *_wrap_wxHtmlParser_DoParsing(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxHtmlParser_StopParsing(_swigobj) (_swigobj->StopParsing()) +static PyObject *_wrap_wxHtmlParser_StopParsing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxHtmlParser * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlParser_StopParsing",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlParser_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlParser_StopParsing. Expected _wxHtmlParser_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxHtmlParser_StopParsing(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxHtmlParser_AddTagHandler(_swigobj,_swigarg0) (_swigobj->AddTagHandler(_swigarg0)) static PyObject *_wrap_wxHtmlParser_AddTagHandler(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1170,7 +1210,7 @@ static PyObject *_wrap_wxHtmlParser_GetSource(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2406,8 +2446,7 @@ static PyObject *_wrap_wxHtmlTagHandler_ParseInner(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlTagHandler_ParseInner. Expected _wxHtmlTag_p."); return NULL; } @@ -2595,8 +2634,7 @@ static PyObject *_wrap_wxHtmlWinTagHandler_ParseInner(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWinTagHandler_ParseInner. Expected _wxHtmlTag_p."); return NULL; } @@ -2913,8 +2951,7 @@ static PyObject *_wrap_wxHtmlCell_SetLink(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_SetLink. Expected _wxHtmlLinkInfo_p."); return NULL; } @@ -3087,8 +3124,7 @@ static PyObject *_wrap_wxHtmlCell_Draw(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_Draw. Expected _wxDC_p."); return NULL; } @@ -3126,8 +3162,7 @@ static PyObject *_wrap_wxHtmlCell_DrawInvisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_DrawInvisible. Expected _wxDC_p."); return NULL; } @@ -3292,8 +3327,7 @@ static PyObject *_wrap_new_wxHtmlWordCell(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxHtmlWordCell. Expected _wxDC_p."); return NULL; } @@ -3629,8 +3663,7 @@ static PyObject *_wrap_wxHtmlContainerCell_SetAlign(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetAlign. Expected _wxHtmlTag_p."); return NULL; } @@ -3696,8 +3729,7 @@ static PyObject *_wrap_wxHtmlContainerCell_SetWidthFloatFromTag(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetWidthFloatFromTag. Expected _wxHtmlTag_p."); return NULL; } @@ -3779,6 +3811,36 @@ static PyObject *_wrap_wxHtmlContainerCell_SetBackgroundColour(PyObject *self, P return _resultobj; } +#define wxHtmlContainerCell_GetBackgroundColour(_swigobj) (_swigobj->GetBackgroundColour()) +static PyObject *_wrap_wxHtmlContainerCell_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxHtmlContainerCell * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetBackgroundColour",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetBackgroundColour. Expected _wxHtmlContainerCell_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxHtmlContainerCell_GetBackgroundColour(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxHtmlContainerCell_SetBorder(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetBorder(_swigarg0,_swigarg1)) static PyObject *_wrap_wxHtmlContainerCell_SetBorder(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4012,6 +4074,78 @@ static PyObject *_wrap_new_wxHtmlWidgetCell(PyObject *self, PyObject *args, PyOb return _resultobj; } +static void *SwigwxPyHtmlFilterTowxObject(void *ptr) { + wxPyHtmlFilter *src; + wxObject *dest; + src = (wxPyHtmlFilter *) ptr; + dest = (wxObject *) src; + return (void *) dest; +} + +#define new_wxHtmlFilter() (new wxPyHtmlFilter()) +static PyObject *_wrap_new_wxHtmlFilter(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxHtmlFilter",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPyHtmlFilter *)new_wxHtmlFilter(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyHtmlFilter_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxHtmlFilter__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxHtmlFilter__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxHtmlFilter__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlFilter_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlFilter__setCallbackInfo. Expected _wxPyHtmlFilter_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxHtmlFilter__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void *SwigwxPyHtmlWindowTowxScrolledWindow(void *ptr) { wxPyHtmlWindow *src; wxScrolledWindow *dest; @@ -4395,7 +4529,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPage(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4432,7 +4566,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedAnchor(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4469,7 +4603,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPageTitle(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5100,6 +5234,33 @@ static PyObject *_wrap_wxHtmlWindow_HasAnchor(PyObject *self, PyObject *args, Py return _resultobj; } +static PyObject *_wrap_wxHtmlWindow_AddFilter(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "filter", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_AddFilter",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlFilter_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_AddFilter. Expected _wxPyHtmlFilter_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyHtmlWindow::AddFilter(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxHtmlWindow_base_OnLinkClicked(_swigobj,_swigarg0) (_swigobj->base_OnLinkClicked(_swigarg0)) static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -5120,8 +5281,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWindow_base_OnLinkClicked. Expected _wxHtmlLinkInfo_p."); return NULL; } @@ -5246,8 +5406,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnCellClicked(PyObject *self, PyObject } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxMouseEvent_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxMouseEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxHtmlWindow_base_OnCellClicked. Expected _wxMouseEvent_p."); return NULL; } @@ -6266,6 +6425,7 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlWindow_base_OnCellMouseHover", (PyCFunction) _wrap_wxHtmlWindow_base_OnCellMouseHover, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_base_OnSetTitle", (PyCFunction) _wrap_wxHtmlWindow_base_OnSetTitle, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_base_OnLinkClicked", (PyCFunction) _wrap_wxHtmlWindow_base_OnLinkClicked, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlWindow_AddFilter", (PyCFunction) _wrap_wxHtmlWindow_AddFilter, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_HasAnchor", (PyCFunction) _wrap_wxHtmlWindow_HasAnchor, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_ScrollToAnchor", (PyCFunction) _wrap_wxHtmlWindow_ScrollToAnchor, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_GetParser", (PyCFunction) _wrap_wxHtmlWindow_GetParser, METH_VARARGS | METH_KEYWORDS }, @@ -6293,11 +6453,14 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlWindow_Create", (PyCFunction) _wrap_wxHtmlWindow_Create, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreHtmlWindow", (PyCFunction) _wrap_new_wxPreHtmlWindow, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlWindow", (PyCFunction) _wrap_new_wxHtmlWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlFilter__setCallbackInfo", (PyCFunction) _wrap_wxHtmlFilter__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, + { "new_wxHtmlFilter", (PyCFunction) _wrap_new_wxHtmlFilter, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlWidgetCell", (PyCFunction) _wrap_new_wxHtmlWidgetCell, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlFontCell", (PyCFunction) _wrap_new_wxHtmlFontCell, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlColourCell", (PyCFunction) _wrap_new_wxHtmlColourCell, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_GetFirstCell", (PyCFunction) _wrap_wxHtmlContainerCell_GetFirstCell, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetBorder", (PyCFunction) _wrap_wxHtmlContainerCell_SetBorder, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlContainerCell_GetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetMinHeight", (PyCFunction) _wrap_wxHtmlContainerCell_SetMinHeight, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetWidthFloatFromTag", (PyCFunction) _wrap_wxHtmlContainerCell_SetWidthFloatFromTag, METH_VARARGS | METH_KEYWORDS }, @@ -6376,6 +6539,7 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlParser_PushTagHandler", (PyCFunction) _wrap_wxHtmlParser_PushTagHandler, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_GetSource", (PyCFunction) _wrap_wxHtmlParser_GetSource, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_AddTagHandler", (PyCFunction) _wrap_wxHtmlParser_AddTagHandler, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlParser_StopParsing", (PyCFunction) _wrap_wxHtmlParser_StopParsing, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_DoParsing", (PyCFunction) _wrap_wxHtmlParser_DoParsing, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_DoneParser", (PyCFunction) _wrap_wxHtmlParser_DoneParser, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_InitParser", (PyCFunction) _wrap_wxHtmlParser_InitParser, METH_VARARGS | METH_KEYWORDS }, @@ -6397,7 +6561,6 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlLinkInfo_GetTarget", (PyCFunction) _wrap_wxHtmlLinkInfo_GetTarget, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlLinkInfo_GetHref", (PyCFunction) _wrap_wxHtmlLinkInfo_GetHref, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlLinkInfo", (PyCFunction) _wrap_new_wxHtmlLinkInfo, METH_VARARGS | METH_KEYWORDS }, - { "wxHtmlWindow_AddFilter", (PyCFunction) _wrap_wxHtmlWindow_AddFilter, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWinParser_AddTagHandler", (PyCFunction) _wrap_wxHtmlWinParser_AddTagHandler, METH_VARARGS | METH_KEYWORDS }, { NULL, NULL } }; @@ -6469,6 +6632,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = { { "_wxObject","_wxHtmlPrintout",SwigwxHtmlPrintoutTowxObject}, { "_wxObject","_wxHtmlDCRenderer",SwigwxHtmlDCRendererTowxObject}, { "_wxObject","_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxObject}, + { "_wxObject","_wxPyHtmlFilter",SwigwxPyHtmlFilterTowxObject}, { "_wxObject","_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxObject}, { "_wxObject","_wxHtmlFontCell",SwigwxHtmlFontCellTowxObject}, { "_wxObject","_wxHtmlColourCell",SwigwxHtmlColourCellTowxObject}, @@ -6587,6 +6751,7 @@ SWIGEXPORT(void) inithtmlc() { wxPyPtrTypeMap_Add("wxHtmlTagHandler", "wxPyHtmlTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWinTagHandler", "wxPyHtmlWinTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWindow", "wxPyHtmlWindow"); + wxPyPtrTypeMap_Add("wxHtmlFilter", "wxPyHtmlFilter"); { int i; for (i = 0; _swig_mapping[i].n1; i++) diff --git a/wxPython/src/gtk/html.py b/wxPython/src/gtk/html.py index 09c3573b15..8766b132a2 100644 --- a/wxPython/src/gtk/html.py +++ b/wxPython/src/gtk/html.py @@ -135,6 +135,9 @@ class wxHtmlParserPtr(wxObjectPtr): def DoParsing(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlParser_DoParsing,(self,) + _args, _kwargs) return val + def StopParsing(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlParser_StopParsing,(self,) + _args, _kwargs) + return val def AddTagHandler(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlParser_AddTagHandler,(self,) + _args, _kwargs) return val @@ -450,6 +453,10 @@ class wxHtmlContainerCellPtr(wxHtmlCellPtr): def SetBackgroundColour(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlContainerCell_SetBackgroundColour,(self,) + _args, _kwargs) return val + def GetBackgroundColour(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlContainerCell_GetBackgroundColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val def SetBorder(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlContainerCell_SetBorder,(self,) + _args, _kwargs) return val @@ -509,6 +516,24 @@ class wxHtmlWidgetCell(wxHtmlWidgetCellPtr): +class wxHtmlFilterPtr(wxObjectPtr): + def __init__(self,this): + self.this = this + self.thisown = 0 + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlFilter__setCallbackInfo,(self,) + _args, _kwargs) + return val + def __repr__(self): + return "<C wxHtmlFilter instance at %s>" % (self.this,) +class wxHtmlFilter(wxHtmlFilterPtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(htmlc.new_wxHtmlFilter,_args,_kwargs) + self.thisown = 1 + self._setCallbackInfo(self, wxHtmlFilter) + + + + class wxHtmlWindowPtr(wxScrolledWindowPtr): def __init__(self,this): self.this = this @@ -624,9 +649,12 @@ class wxHtmlDCRendererPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlc=htmlc): - if self.thisown == 1 : - htmlc.delete_wxHtmlDCRenderer(self) + def __del__(self, delfunc=htmlc.delete_wxHtmlDCRenderer): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetDC(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlDCRenderer_SetDC,(self,) + _args, _kwargs) return val @@ -685,9 +713,12 @@ class wxHtmlEasyPrintingPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlc=htmlc): - if self.thisown == 1 : - htmlc.delete_wxHtmlEasyPrinting(self) + def __del__(self, delfunc=htmlc.delete_wxHtmlEasyPrinting): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def PreviewFile(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlEasyPrinting_PreviewFile,(self,) + _args, _kwargs) return val @@ -789,4 +820,5 @@ wx.wxHtmlContainerCellPtr = wxHtmlContainerCellPtr wx.wxHtmlWidgetCellPtr = wxHtmlWidgetCellPtr wx.wxHtmlWindowPtr = wxHtmlWindowPtr wx.wxHtmlLinkInfoPtr = wxHtmlLinkInfoPtr +wx.wxHtmlFilterPtr = wxHtmlFilterPtr diff --git a/wxPython/src/gtk/htmlhelp.cpp b/wxPython/src/gtk/htmlhelp.cpp index 263c8eef25..29ff3251a5 100644 --- a/wxPython/src/gtk/htmlhelp.cpp +++ b/wxPython/src/gtk/htmlhelp.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -191,7 +190,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetBookFile(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -228,7 +227,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetTitle(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -265,7 +264,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetStart(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -302,7 +301,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetBasePath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -549,7 +548,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetFullPath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -646,7 +645,7 @@ static PyObject *_wrap_wxHtmlContentsItem_GetName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -683,7 +682,7 @@ static PyObject *_wrap_wxHtmlContentsItem_GetPage(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -868,7 +867,7 @@ static PyObject *_wrap_wxHtmlSearchStatus_GetName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1076,7 +1075,7 @@ static PyObject *_wrap_wxHtmlHelpData_FindPageByName(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1118,7 +1117,7 @@ static PyObject *_wrap_wxHtmlHelpData_FindPageById(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/gtk/htmlhelp.py b/wxPython/src/gtk/htmlhelp.py index fd3a642bac..33fdd1e5df 100644 --- a/wxPython/src/gtk/htmlhelp.py +++ b/wxPython/src/gtk/htmlhelp.py @@ -154,9 +154,12 @@ class wxHtmlHelpDataPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlhelpc=htmlhelpc): - if self.thisown == 1 : - htmlhelpc.delete_wxHtmlHelpData(self) + def __del__(self, delfunc=htmlhelpc.delete_wxHtmlHelpData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTempDir(self, *_args, **_kwargs): val = apply(htmlhelpc.wxHtmlHelpData_SetTempDir,(self,) + _args, _kwargs) return val @@ -246,9 +249,12 @@ class wxHtmlHelpControllerPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlhelpc=htmlhelpc): - if self.thisown == 1 : - htmlhelpc.delete_wxHtmlHelpController(self) + def __del__(self, delfunc=htmlhelpc.delete_wxHtmlHelpController): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTitleFormat(self, *_args, **_kwargs): val = apply(htmlhelpc.wxHtmlHelpController_SetTitleFormat,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/image.cpp b/wxPython/src/gtk/image.cpp index 1d38d4311a..867fa4be08 100644 --- a/wxPython/src/gtk/image.cpp +++ b/wxPython/src/gtk/image.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -226,8 +225,7 @@ static PyObject *_wrap_wxImageFromBitmap(PyObject *self, PyObject *args, PyObjec if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxImageFromBitmap",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -436,8 +434,7 @@ static PyObject *_wrap_wxBitmapFromImage(PyObject *self, PyObject *args, PyObjec if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxBitmapFromImage",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapFromImage. Expected _wxImage_p."); return NULL; } @@ -492,7 +489,7 @@ static PyObject *_wrap_wxImageHandler_GetName(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -529,7 +526,7 @@ static PyObject *_wrap_wxImageHandler_GetExtension(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -594,7 +591,7 @@ static PyObject *_wrap_wxImageHandler_GetMimeType(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1669,8 +1666,7 @@ static PyObject *_wrap_wxImage_SetMaskFromImage(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImage_SetMaskFromImage. Expected _wxImage_p."); return NULL; } @@ -2251,8 +2247,7 @@ static PyObject *_wrap_wxImage_Paste(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImage_Paste. Expected _wxImage_p."); return NULL; } @@ -2336,6 +2331,52 @@ static PyObject *_wrap_wxImage_GetData(PyObject *self, PyObject *args, PyObject return _resultobj; } +static void wxImage_SetDataBuffer(wxImage *self,PyObject * data) { + unsigned char* buffer; + int size; + + if (!PyArg_Parse(data, "w#", &buffer, &size)) + return; + + if (size != self->GetWidth() * self->GetHeight() * 3) { + PyErr_SetString(PyExc_TypeError, "Incorrect buffer size"); + return; + } + + self->SetData(buffer); + } +static PyObject *_wrap_wxImage_SetDataBuffer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxImage * _arg0; + PyObject * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","data", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxImage_SetDataBuffer",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImage_SetDataBuffer. Expected _wxImage_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxImage_SetDataBuffer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void wxImage_SetData(wxImage *self,PyObject * data) { unsigned char* dataPtr; @@ -2863,7 +2904,7 @@ static PyObject *_wrap_wxImage_GetOption(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3162,6 +3203,7 @@ static PyMethodDef imagecMethods[] = { { "wxImage_GetMaskRed", (PyCFunction) _wrap_wxImage_GetMaskRed, METH_VARARGS | METH_KEYWORDS }, { "wxImage_SetMaskColour", (PyCFunction) _wrap_wxImage_SetMaskColour, METH_VARARGS | METH_KEYWORDS }, { "wxImage_SetData", (PyCFunction) _wrap_wxImage_SetData, METH_VARARGS | METH_KEYWORDS }, + { "wxImage_SetDataBuffer", (PyCFunction) _wrap_wxImage_SetDataBuffer, METH_VARARGS | METH_KEYWORDS }, { "wxImage_GetData", (PyCFunction) _wrap_wxImage_GetData, METH_VARARGS | METH_KEYWORDS }, { "wxImage_GetDataBuffer", (PyCFunction) _wrap_wxImage_GetDataBuffer, METH_VARARGS | METH_KEYWORDS }, { "wxImage_Paste", (PyCFunction) _wrap_wxImage_Paste, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/image.py b/wxPython/src/gtk/image.py index 51a559ae51..d19383f178 100644 --- a/wxPython/src/gtk/image.py +++ b/wxPython/src/gtk/image.py @@ -192,9 +192,12 @@ class wxImagePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,imagec=imagec): - if self.thisown == 1 : - imagec.delete_wxImage(self) + def __del__(self, delfunc=imagec.delete_wxImage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Create(self, *_args, **_kwargs): val = apply(imagec.wxImage_Create,(self,) + _args, _kwargs) return val @@ -271,6 +274,9 @@ class wxImagePtr(wxObjectPtr): def GetData(self, *_args, **_kwargs): val = apply(imagec.wxImage_GetData,(self,) + _args, _kwargs) return val + def SetDataBuffer(self, *_args, **_kwargs): + val = apply(imagec.wxImage_SetDataBuffer,(self,) + _args, _kwargs) + return val def SetData(self, *_args, **_kwargs): val = apply(imagec.wxImage_SetData,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/mdi.cpp b/wxPython/src/gtk/mdi.cpp index 85ac9adc33..19b703bb87 100644 --- a/wxPython/src/gtk/mdi.cpp +++ b/wxPython/src/gtk/mdi.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/src/gtk/misc.cpp b/wxPython/src/gtk/misc.cpp index 80e1ce3b82..c4c16c3099 100644 --- a/wxPython/src/gtk/misc.cpp +++ b/wxPython/src/gtk/misc.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -59,6 +58,7 @@ extern PyObject *SWIG_newvarlink(void); #include <wx/resource.h> #include <wx/tooltip.h> #include <wx/busyinfo.h> +#include <wx/geometry.h> static PyObject* t_output_helper(PyObject* target, PyObject* o) { @@ -102,7 +102,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { if (dest != wxRect(0,0,0,0)) { wxPyBeginBlockThreads(); wxRect* newRect = new wxRect(dest); - obj = wxPyConstructObject((void*)newRect, "wxRect"); + obj = wxPyConstructObject((void*)newRect, wxT("wxRect")); PyObject* one = PyInt_FromLong(1); PyObject_SetAttrString(obj, "thisown", one); Py_DECREF(one); @@ -113,13 +113,6 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { return Py_None; } - wxString wxGetResource(const wxString& section, const wxString& entry, - const wxString& file = wxPyEmptyString) { - wxChar * retval; - wxGetResource(section, entry, &retval, file); - return retval; - } - #if 0 // we want to use the definition from the header, not the // one SWIG will generate. extern wxAcceleratorTable wxNullAcceleratorTable; @@ -201,43 +194,6 @@ static PyObject *_wrap_wxRegisterId(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } -static PyObject *_wrap_NewId(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - long _result; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":NewId",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxNewId(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); - return _resultobj; -} - -static PyObject *_wrap_RegisterId(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - long _arg0; - char *_kwnames[] = { "id", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:RegisterId",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxRegisterId(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static PyObject *_wrap_wxGetCurrentId(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; long _result; @@ -385,7 +341,7 @@ static PyObject *_wrap_wxNow(PyObject *self, PyObject *args, PyObject *kwargs) { if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -498,7 +454,7 @@ static PyObject *_wrap_wxGetOsDescription(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -623,67 +579,6 @@ static PyObject *_wrap_wxEnableTopLevelWindows(PyObject *self, PyObject *args, P return _resultobj; } -static PyObject *_wrap_wxGetResource(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxString * _result; - wxString * _arg0; - wxString * _arg1; - wxString * _arg2 = (wxString *) &wxPyEmptyString; - PyObject * _obj0 = 0; - PyObject * _obj1 = 0; - PyObject * _obj2 = 0; - char *_kwnames[] = { "section","entry","file", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxGetResource",_kwnames,&_obj0,&_obj1,&_obj2)) - return NULL; -{ - _arg0 = wxString_in_helper(_obj0); - if (_arg0 == NULL) - return NULL; -} -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} - if (_obj2) -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxString (wxGetResource(*_arg0,*_arg1,*_arg2)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ -#if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); -#else - _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); -#endif -} -{ - if (_obj0) - delete _arg0; -} -{ - if (_obj1) - delete _arg1; -} -{ - if (_obj2) - delete _arg2; -} -{ - delete _result; -} - return _resultobj; -} - static PyObject *_wrap_wxStripMenuCodes(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxString * _result; @@ -707,7 +602,7 @@ static PyObject *_wrap_wxStripMenuCodes(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -738,7 +633,7 @@ static PyObject *_wrap_wxGetEmailAddress(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -765,7 +660,7 @@ static PyObject *_wrap_wxGetHostName(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -792,7 +687,7 @@ static PyObject *_wrap_wxGetFullHostName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -819,7 +714,7 @@ static PyObject *_wrap_wxGetUserId(PyObject *self, PyObject *args, PyObject *kwa if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -846,7 +741,7 @@ static PyObject *_wrap_wxGetUserName(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -873,7 +768,7 @@ static PyObject *_wrap_wxGetHomeDir(PyObject *self, PyObject *args, PyObject *kw if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -908,7 +803,7 @@ static PyObject *_wrap_wxGetUserHome(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1020,7 +915,7 @@ static PyObject *_wrap_wxObject_GetClassName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1455,24 +1350,26 @@ static PyObject *_wrap_wxSize_asTuple(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static int wxSize___cmp__(wxSize *self,const wxSize * sz) { - if (! sz) return 1; - if (*self == *sz) return 0; - return -1; +static bool wxSize___eq__(wxSize *self,PyObject * obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxSize___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxSize___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxSize * _arg0; - wxSize * _arg1; + PyObject * _arg1; wxSize temp; PyObject * _obj0 = 0; - wxSize temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","sz", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -1480,13 +1377,50 @@ static PyObject *_wrap_wxSize___cmp__(PyObject *self, PyObject *args, PyObject * return NULL; } { - _arg1 = &temp0; - if (! wxSize_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxSize___cmp__(_arg0,_arg1); + _result = (bool )wxSize___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxSize___ne__(wxSize *self,PyObject * obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxSize___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSize * _arg0; + PyObject * _arg1; + wxSize temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxSize_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSize___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1727,9 +1661,8 @@ static PyObject *_wrap_wxRealPoint_asTuple(PyObject *self, PyObject *args, PyObj return _resultobj; } -static wxRealPoint wxRealPoint___add__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return *self; - return *self + *p; +static wxRealPoint wxRealPoint___add__(wxRealPoint *self,const wxRealPoint & p) { + return *self + p; } static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1758,7 +1691,7 @@ static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObj } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRealPoint (wxRealPoint___add__(_arg0,_arg1)); + _result = new wxRealPoint (wxRealPoint___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1767,9 +1700,8 @@ static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObj return _resultobj; } -static wxRealPoint wxRealPoint___sub__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return *self; - return *self - *p; +static wxRealPoint wxRealPoint___sub__(wxRealPoint *self,const wxRealPoint & p) { + return *self - p; } static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1798,7 +1730,7 @@ static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObj } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRealPoint (wxRealPoint___sub__(_arg0,_arg1)); + _result = new wxRealPoint (wxRealPoint___sub__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1807,24 +1739,26 @@ static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObj return _resultobj; } -static int wxRealPoint___cmp__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; +static bool wxRealPoint___eq__(wxRealPoint *self,PyObject * obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxRealPoint___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxRealPoint___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxRealPoint * _arg0; - wxRealPoint * _arg1; + PyObject * _arg1; wxRealPoint temp; PyObject * _obj0 = 0; - wxRealPoint temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","p", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -1832,13 +1766,50 @@ static PyObject *_wrap_wxRealPoint___cmp__(PyObject *self, PyObject *args, PyObj return NULL; } { - _arg1 = &temp0; - if (! wxRealPoint_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxRealPoint___cmp__(_arg0,_arg1); + _result = (bool )wxRealPoint___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxRealPoint___ne__(wxRealPoint *self,PyObject * obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxRealPoint___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRealPoint * _arg0; + PyObject * _arg1; + wxRealPoint temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRealPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRealPoint___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2079,9 +2050,8 @@ static PyObject *_wrap_wxPoint_asTuple(PyObject *self, PyObject *args, PyObject return _resultobj; } -static wxPoint wxPoint___add__(wxPoint *self,const wxPoint * p) { - if (! p) return *self; - return *self + *p; +static wxPoint wxPoint___add__(wxPoint *self,const wxPoint & p) { + return *self + p; } static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2110,7 +2080,7 @@ static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxPoint (wxPoint___add__(_arg0,_arg1)); + _result = new wxPoint (wxPoint___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2119,9 +2089,8 @@ static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject return _resultobj; } -static wxPoint wxPoint___sub__(wxPoint *self,const wxPoint * p) { - if (! p) return *self; - return *self - *p; +static wxPoint wxPoint___sub__(wxPoint *self,const wxPoint & p) { + return *self - p; } static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2150,7 +2119,7 @@ static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxPoint (wxPoint___sub__(_arg0,_arg1)); + _result = new wxPoint (wxPoint___sub__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2159,24 +2128,26 @@ static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject return _resultobj; } -static int wxPoint___cmp__(wxPoint *self,const wxPoint * p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; +static bool wxPoint___eq__(wxPoint *self,PyObject * obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxPoint___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxPoint___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxPoint * _arg0; - wxPoint * _arg1; + PyObject * _arg1; wxPoint temp; PyObject * _obj0 = 0; - wxPoint temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","p", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -2184,13 +2155,50 @@ static PyObject *_wrap_wxPoint___cmp__(PyObject *self, PyObject *args, PyObject return NULL; } { - _arg1 = &temp0; - if (! wxPoint_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxPoint___cmp__(_arg0,_arg1); + _result = (bool )wxPoint___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxPoint___ne__(wxPoint *self,PyObject * obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxPoint___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint * _arg0; + PyObject * _arg1; + wxPoint temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2206,7 +2214,7 @@ static PyObject *_wrap_new_wxRect(PyObject *self, PyObject *args, PyObject *kwar int _arg1 = (int ) 0; int _arg2 = (int ) 0; int _arg3 = (int ) 0; - char *_kwnames[] = { "x","y","w","h", NULL }; + char *_kwnames[] = { "x","y","width","height", NULL }; char _ptemp[128]; self = self; @@ -2823,6 +2831,35 @@ static PyObject *_wrap_wxRect_SetBottom(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxRect_Deflate(_swigobj,_swigarg0,_swigarg1) (_swigobj->Deflate(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_Deflate(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1; + int _arg2; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","dx","dy", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_Deflate",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Deflate(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxRect_Inflate(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inflate(_swigarg0,_swigarg1)) static PyObject *_wrap_wxRect_Inflate(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2852,8 +2889,8 @@ static PyObject *_wrap_wxRect_Inflate(PyObject *self, PyObject *args, PyObject * return _resultobj; } -#define wxRect_Inside(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inside(_swigarg0,_swigarg1)) -static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxRect_InsideXY(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inside(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_InsideXY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxRect * _arg0; @@ -2864,7 +2901,7 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k char *_kwnames[] = { "self","cx","cy", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_Inside",_kwnames,&_obj0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_InsideXY",_kwnames,&_obj0,&_arg1,&_arg2)) return NULL; { _arg0 = &temp; @@ -2873,7 +2910,7 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxRect_Inside(_arg0,_arg1,_arg2); + _result = (bool )wxRect_InsideXY(_arg0,_arg1,_arg2); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2881,6 +2918,140 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k return _resultobj; } +#define wxRect_Inside(_swigobj,_swigarg0) (_swigobj->Inside(_swigarg0)) +static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + wxPoint * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxPoint temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Inside",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect_Inside(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxRect_Intersects(_swigobj,_swigarg0) (_swigobj->Intersects(_swigarg0)) +static PyObject *_wrap_wxRect_Intersects(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + wxRect * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxRect temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","rect", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Intersects",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxRect_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect_Intersects(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxRect_OffsetXY(_swigobj,_swigarg0,_swigarg1) (_swigobj->Offset(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_OffsetXY(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1; + int _arg2; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","dx","dy", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_OffsetXY",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_OffsetXY(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxRect_Offset(_swigobj,_swigarg0) (_swigobj->Offset(_swigarg0)) +static PyObject *_wrap_wxRect_Offset(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + wxPoint * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxPoint temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Offset",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Offset(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxRect_x_set(_swigobj,_swigval) (_swigobj->x = _swigval,_swigval) static PyObject *_wrap_wxRect_x_set(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3101,6 +3272,42 @@ static PyObject *_wrap_wxRect_height_get(PyObject *self, PyObject *args, PyObjec return _resultobj; } +static void wxRect_Set(wxRect *self,int x,int y,int width,int height) { + self->x = x; + self->y = y; + self->width = width; + self->height = height; + } +static PyObject *_wrap_wxRect_Set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1 = (int ) 0; + int _arg2 = (int ) 0; + int _arg3 = (int ) 0; + int _arg4 = (int ) 0; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","x","y","width","height", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iiii:wxRect_Set",_kwnames,&_obj0,&_arg1,&_arg2,&_arg3,&_arg4)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Set(_arg0,_arg1,_arg2,_arg3,_arg4); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static PyObject * wxRect_asTuple(wxRect *self) { wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(4); @@ -3139,9 +3346,8 @@ static PyObject *_wrap_wxRect_asTuple(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static wxRect wxRect___add__(wxRect *self,const wxRect * rect) { - if (! rect) return *self; - return *self + *rect; +static wxRect wxRect___add__(wxRect *self,const wxRect & rect) { + return *self + rect; } static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3170,7 +3376,7 @@ static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject * } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRect (wxRect___add__(_arg0,_arg1)); + _result = new wxRect (wxRect___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3179,24 +3385,26 @@ static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static int wxRect___cmp__(wxRect *self,const wxRect * rect) { - if (! rect) return 1; - if (*self == *rect) return 0; - return -1; +static bool wxRect___eq__(wxRect *self,PyObject * obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxRect___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxRect * _arg0; - wxRect * _arg1; + PyObject * _arg1; wxRect temp; PyObject * _obj0 = 0; - wxRect temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","rect", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -3204,13 +3412,11 @@ static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject * return NULL; } { - _arg1 = &temp0; - if (! wxRect_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxRect___cmp__(_arg0,_arg1); + _result = (bool )wxRect___eq__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3218,6 +3424,942 @@ static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject * return _resultobj; } +static bool wxRect___ne__(wxRect *self,PyObject * obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxRect___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + PyObject * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_x_set(_swigobj,_swigval) (_swigobj->m_x = _swigval,_swigval) +static PyObject *_wrap_wxPoint2DDouble_m_x_set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","m_x", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_m_x_set",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_x_set(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_x_get(_swigobj) ((double ) _swigobj->m_x) +static PyObject *_wrap_wxPoint2DDouble_m_x_get(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_m_x_get",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_x_get(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_y_set(_swigobj,_swigval) (_swigobj->m_y = _swigval,_swigval) +static PyObject *_wrap_wxPoint2DDouble_m_y_set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","m_y", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_m_y_set",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_y_set(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_y_get(_swigobj) ((double ) _swigobj->m_y) +static PyObject *_wrap_wxPoint2DDouble_m_y_get(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_m_y_get",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_y_get(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define new_wxPoint2DDouble(_swigarg0,_swigarg1) (new wxPoint2DDouble(_swigarg0,_swigarg1)) +static PyObject *_wrap_new_wxPoint2DDouble(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + double _arg0 = (double ) 0; + double _arg1 = (double ) 0; + char *_kwnames[] = { "x","y", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|dd:new_wxPoint2DDouble",_kwnames,&_arg0,&_arg1)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDouble(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define new_wxPoint2DDoubleCopy(_swigarg0) (new wxPoint2DDouble(_swigarg0)) +static PyObject *_wrap_new_wxPoint2DDoubleCopy(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPoint2DDoubleCopy",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDoubleCopy(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define new_wxPoint2DDoubleFromPoint(_swigarg0) (new wxPoint2DDouble(_swigarg0)) +static PyObject *_wrap_new_wxPoint2DDoubleFromPoint(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint * _arg0; + wxPoint temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPoint2DDoubleFromPoint",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDoubleFromPoint(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxPoint2DDouble_GetFloor(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetFloor(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPoint2DDouble_GetFloor(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + int * _arg1; + int temp; + int * _arg2; + int temp0; + wxPoint2DDouble temp1; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; +{ + _arg1 = &temp; +} +{ + _arg2 = &temp0; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetFloor",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp1; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_GetFloor(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg1)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} + return _resultobj; +} + +#define wxPoint2DDouble_GetRounded(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetRounded(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPoint2DDouble_GetRounded(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + int * _arg1; + int temp; + int * _arg2; + int temp0; + wxPoint2DDouble temp1; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; +{ + _arg1 = &temp; +} +{ + _arg2 = &temp0; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetRounded",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp1; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_GetRounded(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg1)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} + return _resultobj; +} + +#define wxPoint2DDouble_GetVectorLength(_swigobj) (_swigobj->GetVectorLength()) +static PyObject *_wrap_wxPoint2DDouble_GetVectorLength(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetVectorLength",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetVectorLength(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetVectorAngle(_swigobj) (_swigobj->GetVectorAngle()) +static PyObject *_wrap_wxPoint2DDouble_GetVectorAngle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetVectorAngle",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetVectorAngle(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_SetVectorLength(_swigobj,_swigarg0) (_swigobj->SetVectorLength(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_SetVectorLength(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","length", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_SetVectorLength",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_SetVectorLength(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxPoint2DDouble_SetVectorAngle(_swigobj,_swigarg0) (_swigobj->SetVectorAngle(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_SetVectorAngle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","degrees", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_SetVectorAngle",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_SetVectorAngle(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxPoint2DDouble_GetDistance(_swigobj,_swigarg0) (_swigobj->GetDistance(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDistance(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDistance",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDistance(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetDistanceSquare(_swigobj,_swigarg0) (_swigobj->GetDistanceSquare(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDistanceSquare(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDistanceSquare",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDistanceSquare(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetDotProduct(_swigobj,_swigarg0) (_swigobj->GetDotProduct(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDotProduct(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","vec", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDotProduct",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDotProduct(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetCrossProduct(_swigobj,_swigarg0) (_swigobj->GetCrossProduct(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetCrossProduct(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","vec", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetCrossProduct",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetCrossProduct(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +static void wxPoint2DDouble_Set(wxPoint2DDouble *self,double x,double y) { + self->m_x = x; + self->m_y = y; + } +static PyObject *_wrap_wxPoint2DDouble_Set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1 = (double ) 0; + double _arg2 = (double ) 0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","x","y", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|dd:wxPoint2DDouble_Set",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_Set(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static wxPoint2DDouble wxPoint2DDouble___neg__(wxPoint2DDouble *self) { return -(*self); } +static PyObject *_wrap_wxPoint2DDouble___neg__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble___neg__",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxPoint2DDouble (wxPoint2DDouble___neg__(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___iadd__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) += pt; } +static PyObject *_wrap_wxPoint2DDouble___iadd__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___iadd__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___iadd__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___isub__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) -= pt; } +static PyObject *_wrap_wxPoint2DDouble___isub__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___isub__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___isub__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___imul__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) *= pt; } +static PyObject *_wrap_wxPoint2DDouble___imul__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___imul__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___imul__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___idiv__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) /= pt; } +static PyObject *_wrap_wxPoint2DDouble___idiv__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___idiv__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___idiv__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static bool wxPoint2DDouble___eq__(wxPoint2DDouble *self,PyObject * obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } +static PyObject *_wrap_wxPoint2DDouble___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint2DDouble * _arg0; + PyObject * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___eq__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint2DDouble___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxPoint2DDouble___ne__(wxPoint2DDouble *self,PyObject * obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxPoint2DDouble___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint2DDouble * _arg0; + PyObject * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint2DDouble___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject * wxPoint2DDouble_asTuple(wxPoint2DDouble *self) { + wxPyBeginBlockThreads(); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x)); + PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y)); + wxPyEndBlockThreads(); + return tup; + } +static PyObject *_wrap_wxPoint2DDouble_asTuple(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_asTuple",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxPoint2DDouble_asTuple(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + static void *SwigwxIndividualLayoutConstraintTowxObject(void *ptr) { wxIndividualLayoutConstraint *src; wxObject *dest; @@ -4254,9 +5396,41 @@ static PyMethodDef misccMethods[] = { { "wxIndividualLayoutConstraint_AsIs", (PyCFunction) _wrap_wxIndividualLayoutConstraint_AsIs, METH_VARARGS | METH_KEYWORDS }, { "wxIndividualLayoutConstraint_Absolute", (PyCFunction) _wrap_wxIndividualLayoutConstraint_Absolute, METH_VARARGS | METH_KEYWORDS }, { "wxIndividualLayoutConstraint_Above", (PyCFunction) _wrap_wxIndividualLayoutConstraint_Above, METH_VARARGS | METH_KEYWORDS }, - { "wxRect___cmp__", (PyCFunction) _wrap_wxRect___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_asTuple", (PyCFunction) _wrap_wxPoint2DDouble_asTuple, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___ne__", (PyCFunction) _wrap_wxPoint2DDouble___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___eq__", (PyCFunction) _wrap_wxPoint2DDouble___eq__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___idiv__", (PyCFunction) _wrap_wxPoint2DDouble___idiv__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___imul__", (PyCFunction) _wrap_wxPoint2DDouble___imul__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___isub__", (PyCFunction) _wrap_wxPoint2DDouble___isub__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___iadd__", (PyCFunction) _wrap_wxPoint2DDouble___iadd__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___neg__", (PyCFunction) _wrap_wxPoint2DDouble___neg__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_Set", (PyCFunction) _wrap_wxPoint2DDouble_Set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetCrossProduct", (PyCFunction) _wrap_wxPoint2DDouble_GetCrossProduct, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDotProduct", (PyCFunction) _wrap_wxPoint2DDouble_GetDotProduct, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDistanceSquare", (PyCFunction) _wrap_wxPoint2DDouble_GetDistanceSquare, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDistance", (PyCFunction) _wrap_wxPoint2DDouble_GetDistance, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_SetVectorAngle", (PyCFunction) _wrap_wxPoint2DDouble_SetVectorAngle, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_SetVectorLength", (PyCFunction) _wrap_wxPoint2DDouble_SetVectorLength, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetVectorAngle", (PyCFunction) _wrap_wxPoint2DDouble_GetVectorAngle, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetVectorLength", (PyCFunction) _wrap_wxPoint2DDouble_GetVectorLength, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetRounded", (PyCFunction) _wrap_wxPoint2DDouble_GetRounded, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetFloor", (PyCFunction) _wrap_wxPoint2DDouble_GetFloor, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDoubleFromPoint", (PyCFunction) _wrap_new_wxPoint2DDoubleFromPoint, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDoubleCopy", (PyCFunction) _wrap_new_wxPoint2DDoubleCopy, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDouble", (PyCFunction) _wrap_new_wxPoint2DDouble, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_y_get", (PyCFunction) _wrap_wxPoint2DDouble_m_y_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_y_set", (PyCFunction) _wrap_wxPoint2DDouble_m_y_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_x_get", (PyCFunction) _wrap_wxPoint2DDouble_m_x_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_x_set", (PyCFunction) _wrap_wxPoint2DDouble_m_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_y_get", (PyCFunction) _wrap_wxPoint2DDouble_m_y_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_y_set", (PyCFunction) _wrap_wxPoint2DDouble_m_y_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_x_get", (PyCFunction) _wrap_wxPoint2DDouble_m_x_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_x_set", (PyCFunction) _wrap_wxPoint2DDouble_m_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxRect___ne__", (PyCFunction) _wrap_wxRect___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxRect___eq__", (PyCFunction) _wrap_wxRect___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxRect___add__", (PyCFunction) _wrap_wxRect___add__, METH_VARARGS | METH_KEYWORDS }, { "wxRect_asTuple", (PyCFunction) _wrap_wxRect_asTuple, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Set", (PyCFunction) _wrap_wxRect_Set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_height_get", (PyCFunction) _wrap_wxRect_height_get, METH_VARARGS | METH_KEYWORDS }, { "wxRect_height_set", (PyCFunction) _wrap_wxRect_height_set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_width_get", (PyCFunction) _wrap_wxRect_width_get, METH_VARARGS | METH_KEYWORDS }, @@ -4265,8 +5439,13 @@ static PyMethodDef misccMethods[] = { { "wxRect_y_set", (PyCFunction) _wrap_wxRect_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_x_get", (PyCFunction) _wrap_wxRect_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxRect_x_set", (PyCFunction) _wrap_wxRect_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Offset", (PyCFunction) _wrap_wxRect_Offset, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_OffsetXY", (PyCFunction) _wrap_wxRect_OffsetXY, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Intersects", (PyCFunction) _wrap_wxRect_Intersects, METH_VARARGS | METH_KEYWORDS }, { "wxRect_Inside", (PyCFunction) _wrap_wxRect_Inside, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_InsideXY", (PyCFunction) _wrap_wxRect_InsideXY, METH_VARARGS | METH_KEYWORDS }, { "wxRect_Inflate", (PyCFunction) _wrap_wxRect_Inflate, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Deflate", (PyCFunction) _wrap_wxRect_Deflate, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetBottom", (PyCFunction) _wrap_wxRect_SetBottom, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetTop", (PyCFunction) _wrap_wxRect_SetTop, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetRight", (PyCFunction) _wrap_wxRect_SetRight, METH_VARARGS | METH_KEYWORDS }, @@ -4289,7 +5468,8 @@ static PyMethodDef misccMethods[] = { { "wxRect_GetX", (PyCFunction) _wrap_wxRect_GetX, METH_VARARGS | METH_KEYWORDS }, { "delete_wxRect", (PyCFunction) _wrap_delete_wxRect, METH_VARARGS | METH_KEYWORDS }, { "new_wxRect", (PyCFunction) _wrap_new_wxRect, METH_VARARGS | METH_KEYWORDS }, - { "wxPoint___cmp__", (PyCFunction) _wrap_wxPoint___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint___ne__", (PyCFunction) _wrap_wxPoint___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint___eq__", (PyCFunction) _wrap_wxPoint___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint___sub__", (PyCFunction) _wrap_wxPoint___sub__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint___add__", (PyCFunction) _wrap_wxPoint___add__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_asTuple", (PyCFunction) _wrap_wxPoint_asTuple, METH_VARARGS | METH_KEYWORDS }, @@ -4300,7 +5480,8 @@ static PyMethodDef misccMethods[] = { { "wxPoint_y_set", (PyCFunction) _wrap_wxPoint_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_x_get", (PyCFunction) _wrap_wxPoint_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_x_set", (PyCFunction) _wrap_wxPoint_x_set, METH_VARARGS | METH_KEYWORDS }, - { "wxRealPoint___cmp__", (PyCFunction) _wrap_wxRealPoint___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxRealPoint___ne__", (PyCFunction) _wrap_wxRealPoint___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxRealPoint___eq__", (PyCFunction) _wrap_wxRealPoint___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint___sub__", (PyCFunction) _wrap_wxRealPoint___sub__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint___add__", (PyCFunction) _wrap_wxRealPoint___add__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_asTuple", (PyCFunction) _wrap_wxRealPoint_asTuple, METH_VARARGS | METH_KEYWORDS }, @@ -4311,7 +5492,8 @@ static PyMethodDef misccMethods[] = { { "wxRealPoint_y_set", (PyCFunction) _wrap_wxRealPoint_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_x_get", (PyCFunction) _wrap_wxRealPoint_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_x_set", (PyCFunction) _wrap_wxRealPoint_x_set, METH_VARARGS | METH_KEYWORDS }, - { "wxSize___cmp__", (PyCFunction) _wrap_wxSize___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxSize___ne__", (PyCFunction) _wrap_wxSize___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxSize___eq__", (PyCFunction) _wrap_wxSize___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxSize_asTuple", (PyCFunction) _wrap_wxSize_asTuple, METH_VARARGS | METH_KEYWORDS }, { "wxSize_SetHeight", (PyCFunction) _wrap_wxSize_SetHeight, METH_VARARGS | METH_KEYWORDS }, { "wxSize_SetWidth", (PyCFunction) _wrap_wxSize_SetWidth, METH_VARARGS | METH_KEYWORDS }, @@ -4342,7 +5524,6 @@ static PyMethodDef misccMethods[] = { { "wxGetHostName", (PyCFunction) _wrap_wxGetHostName, METH_VARARGS | METH_KEYWORDS }, { "wxGetEmailAddress", (PyCFunction) _wrap_wxGetEmailAddress, METH_VARARGS | METH_KEYWORDS }, { "wxStripMenuCodes", (PyCFunction) _wrap_wxStripMenuCodes, METH_VARARGS | METH_KEYWORDS }, - { "wxGetResource", (PyCFunction) _wrap_wxGetResource, METH_VARARGS | METH_KEYWORDS }, { "wxEnableTopLevelWindows", (PyCFunction) _wrap_wxEnableTopLevelWindows, METH_VARARGS | METH_KEYWORDS }, { "wxYieldIfNeeded", (PyCFunction) _wrap_wxYieldIfNeeded, METH_VARARGS | METH_KEYWORDS }, { "wxYield", (PyCFunction) _wrap_wxYield, METH_VARARGS | METH_KEYWORDS }, @@ -4360,8 +5541,6 @@ static PyMethodDef misccMethods[] = { { "wxEndBusyCursor", (PyCFunction) _wrap_wxEndBusyCursor, METH_VARARGS | METH_KEYWORDS }, { "wxBell", (PyCFunction) _wrap_wxBell, METH_VARARGS | METH_KEYWORDS }, { "wxGetCurrentId", (PyCFunction) _wrap_wxGetCurrentId, METH_VARARGS | METH_KEYWORDS }, - { "RegisterId", (PyCFunction) _wrap_RegisterId, METH_VARARGS | METH_KEYWORDS }, - { "NewId", (PyCFunction) _wrap_NewId, METH_VARARGS | METH_KEYWORDS }, { "wxRegisterId", (PyCFunction) _wrap_wxRegisterId, METH_VARARGS | METH_KEYWORDS }, { "wxNewId", (PyCFunction) _wrap_wxNewId, METH_VARARGS | METH_KEYWORDS }, { "wxIntersectRect", (PyCFunction) _wrap_wxIntersectRect, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/misc.py b/wxPython/src/gtk/misc.py index 54223d7bf5..e1f06cc4f9 100644 --- a/wxPython/src/gtk/misc.py +++ b/wxPython/src/gtk/misc.py @@ -23,9 +23,12 @@ class wxSizePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxSize(self) + def __del__(self, delfunc=miscc.delete_wxSize): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxSize_Set,(self,) + _args, _kwargs) return val @@ -50,8 +53,11 @@ class wxSizePtr : def asTuple(self, *_args, **_kwargs): val = apply(miscc.wxSize_asTuple,(self,) + _args, _kwargs) return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxSize___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxSize___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxSize___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -81,13 +87,17 @@ class wxSizePtr : return "<C wxSize instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxSize'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxSize(wxSizePtr): def __init__(self,*_args,**_kwargs): @@ -101,9 +111,12 @@ class wxRealPointPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxRealPoint(self) + def __del__(self, delfunc=miscc.delete_wxRealPoint): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxRealPoint_Set,(self,) + _args, _kwargs) return val @@ -118,8 +131,11 @@ class wxRealPointPtr : val = apply(miscc.wxRealPoint___sub__,(self,) + _args, _kwargs) if val: val = wxRealPointPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxRealPoint___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxRealPoint___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxRealPoint___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -139,13 +155,17 @@ class wxRealPointPtr : return "<C wxRealPoint instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRealPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxRealPoint(wxRealPointPtr): def __init__(self,*_args,**_kwargs): @@ -159,9 +179,12 @@ class wxPointPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxPoint(self) + def __del__(self, delfunc=miscc.delete_wxPoint): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxPoint_Set,(self,) + _args, _kwargs) return val @@ -176,8 +199,11 @@ class wxPointPtr : val = apply(miscc.wxPoint___sub__,(self,) + _args, _kwargs) if val: val = wxPointPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxPoint___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -197,13 +223,17 @@ class wxPointPtr : return "<C wxPoint instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.x = val elif index == 1: self.y = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxPoint(wxPointPtr): def __init__(self,*_args,**_kwargs): @@ -217,9 +247,12 @@ class wxRectPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxRect(self) + def __del__(self, delfunc=miscc.delete_wxRect): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetX(self, *_args, **_kwargs): val = apply(miscc.wxRect_GetX,(self,) + _args, _kwargs) return val @@ -282,12 +315,30 @@ class wxRectPtr : def SetBottom(self, *_args, **_kwargs): val = apply(miscc.wxRect_SetBottom,(self,) + _args, _kwargs) return val + def Deflate(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Deflate,(self,) + _args, _kwargs) + return val def Inflate(self, *_args, **_kwargs): val = apply(miscc.wxRect_Inflate,(self,) + _args, _kwargs) return val + def InsideXY(self, *_args, **_kwargs): + val = apply(miscc.wxRect_InsideXY,(self,) + _args, _kwargs) + return val def Inside(self, *_args, **_kwargs): val = apply(miscc.wxRect_Inside,(self,) + _args, _kwargs) return val + def Intersects(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Intersects,(self,) + _args, _kwargs) + return val + def OffsetXY(self, *_args, **_kwargs): + val = apply(miscc.wxRect_OffsetXY,(self,) + _args, _kwargs) + return val + def Offset(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Offset,(self,) + _args, _kwargs) + return val + def Set(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Set,(self,) + _args, _kwargs) + return val def asTuple(self, *_args, **_kwargs): val = apply(miscc.wxRect_asTuple,(self,) + _args, _kwargs) return val @@ -295,8 +346,11 @@ class wxRectPtr : val = apply(miscc.wxRect___add__,(self,) + _args, _kwargs) if val: val = wxRectPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxRect___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxRect___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxRect___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -326,7 +380,7 @@ class wxRectPtr : return "<C wxRect instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRect'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): @@ -335,6 +389,10 @@ class wxRectPtr : elif index == 2: self.width = val elif index == 3: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0,0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) # override the __getattr__ made by SWIG def __getattr__(self, name): @@ -381,6 +439,137 @@ class wxRect(wxRectPtr): +class wxPoint2DDoublePtr : + def __init__(self,this): + self.this = this + self.thisown = 0 + def GetFloor(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetFloor,(self,) + _args, _kwargs) + return val + def GetRounded(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetRounded,(self,) + _args, _kwargs) + return val + def GetVectorLength(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetVectorLength,(self,) + _args, _kwargs) + return val + def GetVectorAngle(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetVectorAngle,(self,) + _args, _kwargs) + return val + def SetVectorLength(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_SetVectorLength,(self,) + _args, _kwargs) + return val + def SetVectorAngle(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_SetVectorAngle,(self,) + _args, _kwargs) + return val + def GetDistance(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDistance,(self,) + _args, _kwargs) + return val + def GetDistanceSquare(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDistanceSquare,(self,) + _args, _kwargs) + return val + def GetDotProduct(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDotProduct,(self,) + _args, _kwargs) + return val + def GetCrossProduct(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetCrossProduct,(self,) + _args, _kwargs) + return val + def Set(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_Set,(self,) + _args, _kwargs) + return val + def __neg__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___neg__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) ; val.thisown = 1 + return val + def __iadd__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___iadd__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __isub__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___isub__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __imul__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___imul__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __idiv__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___idiv__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___ne__,(self,) + _args, _kwargs) + return val + def asTuple(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_asTuple,(self,) + _args, _kwargs) + return val + def __setattr__(self,name,value): + if name == "m_x" : + miscc.wxPoint2DDouble_m_x_set(self,value) + return + if name == "m_y" : + miscc.wxPoint2DDouble_m_y_set(self,value) + return + if name == "x" : + miscc.wxPoint2DDouble_x_set(self,value) + return + if name == "y" : + miscc.wxPoint2DDouble_y_set(self,value) + return + self.__dict__[name] = value + def __getattr__(self,name): + if name == "m_x" : + return miscc.wxPoint2DDouble_m_x_get(self) + if name == "m_y" : + return miscc.wxPoint2DDouble_m_y_get(self) + if name == "x" : + return miscc.wxPoint2DDouble_x_get(self) + if name == "y" : + return miscc.wxPoint2DDouble_y_get(self) + raise AttributeError,name + def __repr__(self): + return "<C wxPoint2DDouble instance at %s>" % (self.this,) + + def SetPolarCoordinates(self, angle, length): + self.SetVectorLength(length) + self.SetVectorAngle(angle) + def Normalize(self): + self.SetVectorLength(1.0) + + + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint2DDouble'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.m_x = val + elif index == 1: self.m_yt = val + else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) + +class wxPoint2DDouble(wxPoint2DDoublePtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(miscc.new_wxPoint2DDouble,_args,_kwargs) + self.thisown = 1 + + + +def wxPoint2DDoubleCopy(*_args,**_kwargs): + val = wxPoint2DDoublePtr(apply(miscc.new_wxPoint2DDoubleCopy,_args,_kwargs)) + val.thisown = 1 + return val + +def wxPoint2DDoubleFromPoint(*_args,**_kwargs): + val = wxPoint2DDoublePtr(apply(miscc.new_wxPoint2DDoubleFromPoint,_args,_kwargs)) + val.thisown = 1 + return val + + class wxIndividualLayoutConstraintPtr(wxObjectPtr): def __init__(self,this): self.this = this @@ -486,9 +675,12 @@ class wxAcceleratorEntryPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxAcceleratorEntry(self) + def __del__(self, delfunc=miscc.delete_wxAcceleratorEntry): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxAcceleratorEntry_Set,(self,) + _args, _kwargs) return val @@ -515,9 +707,12 @@ class wxAcceleratorTablePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxAcceleratorTable(self) + def __del__(self, delfunc=miscc.delete_wxAcceleratorTable): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxAcceleratorTable instance at %s>" % (self.this,) class wxAcceleratorTable(wxAcceleratorTablePtr): @@ -532,9 +727,12 @@ class wxBusyInfoPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxBusyInfo(self) + def __del__(self, delfunc=miscc.delete_wxBusyInfo): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxBusyInfo instance at %s>" % (self.this,) class wxBusyInfo(wxBusyInfoPtr): @@ -555,10 +753,6 @@ wxNewId = miscc.wxNewId wxRegisterId = miscc.wxRegisterId -NewId = miscc.NewId - -RegisterId = miscc.RegisterId - wxGetCurrentId = miscc.wxGetCurrentId wxBell = miscc.wxBell @@ -593,8 +787,6 @@ wxYieldIfNeeded = miscc.wxYieldIfNeeded wxEnableTopLevelWindows = miscc.wxEnableTopLevelWindows -wxGetResource = miscc.wxGetResource - wxStripMenuCodes = miscc.wxStripMenuCodes wxGetEmailAddress = miscc.wxGetEmailAddress diff --git a/wxPython/src/gtk/misc2.cpp b/wxPython/src/gtk/misc2.cpp index a5a461c8e2..0bc97d4c48 100644 --- a/wxPython/src/gtk/misc2.cpp +++ b/wxPython/src/gtk/misc2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -293,7 +292,7 @@ public: wxBitmap rval = wxNullBitmap; wxPyBeginBlockThreads(); if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) { - PyObject* so = wxPyConstructObject((void*)&size, "wxSize", 0); + PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0); PyObject* ro; wxBitmap* ptr; PyObject* s1, *s2; @@ -388,7 +387,7 @@ static PyObject *_wrap_wxFileSelector(PyObject *self, PyObject *args, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -466,7 +465,7 @@ static PyObject *_wrap_wxLoadFileSelector(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -536,7 +535,7 @@ static PyObject *_wrap_wxSaveFileSelector(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -610,7 +609,7 @@ static PyObject *_wrap_wxDirSelector(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -682,7 +681,7 @@ static PyObject *_wrap_wxGetTextFromUser(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -753,7 +752,7 @@ static PyObject *_wrap_wxGetPasswordFromUser(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -840,7 +839,7 @@ static PyObject *_wrap_wxGetSingleChoice(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1322,8 +1321,7 @@ static PyObject *_wrap_wxSetCursor(PyObject *self, PyObject *args, PyObject *kwa if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxSetCursor",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSetCursor. Expected _wxCursor_p."); return NULL; } @@ -1463,208 +1461,6 @@ static PyObject *_wrap_wxGetTopLevelParent(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject *_wrap_wxResourceAddIdentifier(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - int _arg1; - char *_kwnames[] = { "name","value", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"si:wxResourceAddIdentifier",_kwnames,&_arg0,&_arg1)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceAddIdentifier(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceClear(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxResourceClear",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxResourceClear(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateBitmap(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxBitmap * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - char _ptemp[128]; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateBitmap",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxBitmap (wxResourceCreateBitmap(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p"); - _resultobj = Py_BuildValue("s",_ptemp); - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateIcon(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxIcon * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - char _ptemp[128]; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateIcon",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxIcon (wxResourceCreateIcon(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} SWIG_MakePtr(_ptemp, (void *) _result,"_wxIcon_p"); - _resultobj = Py_BuildValue("s",_ptemp); - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateMenuBar(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxMenuBar * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateMenuBar",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxMenuBar *)wxResourceCreateMenuBar(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ _resultobj = wxPyMake_wxObject(_result); } - return _resultobj; -} - -static PyObject *_wrap_wxResourceGetIdentifier(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - int _result; - char * _arg0; - char *_kwnames[] = { "name", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceGetIdentifier",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxResourceGetIdentifier(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseData(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "resource","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseData",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseData. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseData(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseFile(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "filename","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseFile",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseFile. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseFile(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseString(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "resource","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseString",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseString. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseString(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - static PyObject *_wrap_wxCaret_GetBlinkTime(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; int _result; @@ -1706,11 +1502,13 @@ static PyObject *_wrap_wxSafeYield(PyObject *self, PyObject *args, PyObject *kwa PyObject * _resultobj; bool _result; wxWindow * _arg0 = (wxWindow *) NULL; + bool _arg1 = (bool ) FALSE; PyObject * _argo0 = 0; - char *_kwnames[] = { "win", NULL }; + int tempbool1 = (int) FALSE; + char *_kwnames[] = { "win","onlyIfNeeded", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:wxSafeYield",_kwnames,&_argo0)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|Oi:wxSafeYield",_kwnames,&_argo0,&tempbool1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -1719,9 +1517,10 @@ static PyObject *_wrap_wxSafeYield(PyObject *self, PyObject *args, PyObject *kwa return NULL; } } + _arg1 = (bool ) tempbool1; { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxSafeYield(_arg0); + _result = (bool )wxSafeYield(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1748,8 +1547,7 @@ static PyObject *_wrap_wxPostEvent(PyObject *self, PyObject *args, PyObject *kwa } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostEvent. Expected _wxEvent_p."); return NULL; } @@ -1948,7 +1746,7 @@ static PyObject *_wrap_wxSysErrorMsg(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2104,6 +1902,35 @@ static PyObject *_wrap_wxLogInfo(PyObject *self, PyObject *args, PyObject *kwarg return _resultobj; } +static PyObject *_wrap_wxLogDebug(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _arg0; + PyObject * _obj0 = 0; + char *_kwnames[] = { "msg", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxLogDebug",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxLogDebug(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj0) + delete _arg0; +} + return _resultobj; +} + static PyObject *_wrap_wxLogVerbose(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxString * _arg0; @@ -2685,7 +2512,7 @@ static PyObject *_wrap_wxToolTip_GetTip(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3498,7 +3325,7 @@ static PyObject *_wrap_wxTipProvider_GetTip(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3570,7 +3397,7 @@ static PyObject *_wrap_wxTipProvider_PreprocessTip(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3681,15 +3508,13 @@ static PyObject *_wrap_new_wxDragImage(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:new_wxDragImage",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragImage. Expected _wxBitmap_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragImage. Expected _wxCursor_p."); return NULL; } @@ -3725,15 +3550,13 @@ static PyObject *_wrap_new_wxDragIcon(PyObject *self, PyObject *args, PyObject * if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:new_wxDragIcon",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragIcon. Expected _wxIcon_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragIcon. Expected _wxCursor_p."); return NULL; } @@ -3774,8 +3597,7 @@ static PyObject *_wrap_new_wxDragString(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragString. Expected _wxCursor_p."); return NULL; } @@ -3815,15 +3637,13 @@ static PyObject *_wrap_new_wxDragTreeItem(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:new_wxDragTreeItem",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragTreeItem. Expected _wxTreeCtrl_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragTreeItem. Expected _wxTreeItemId_p."); return NULL; } @@ -3858,8 +3678,7 @@ static PyObject *_wrap_new_wxDragListItem(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:new_wxDragListItem",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListCtrl_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListCtrl_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragListItem. Expected _wxListCtrl_p."); return NULL; } @@ -4002,8 +3821,8 @@ static PyObject *_wrap_wxDragImage_BeginDrag(PyObject *self, PyObject *args, PyO return _resultobj; } -#define wxDragImage_BeginDrag2(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->BeginDrag(_swigarg0,_swigarg1,_swigarg2)) -static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxDragImage_BeginDragBounded(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->BeginDrag(_swigarg0,_swigarg1,_swigarg2)) +static PyObject *_wrap_wxDragImage_BeginDragBounded(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxGenericDragImage * _arg0; @@ -4015,15 +3834,15 @@ static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, Py PyObject * _obj1 = 0; PyObject * _argo2 = 0; PyObject * _argo3 = 0; - char *_kwnames[] = { "self","hotspot","window","fullScreenRect", NULL }; + char *_kwnames[] = { "self","hotspot","window","boundingWindow", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDragImage_BeginDrag2",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDragImage_BeginDragBounded",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGenericDragImage_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDragImage_BeginDrag2. Expected _wxGenericDragImage_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDragImage_BeginDragBounded. Expected _wxGenericDragImage_p."); return NULL; } } @@ -4035,20 +3854,20 @@ static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, Py if (_argo2) { if (_argo2 == Py_None) { _arg2 = NULL; } else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDragImage_BeginDrag2. Expected _wxWindow_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDragImage_BeginDragBounded. Expected _wxWindow_p."); return NULL; } } if (_argo3) { if (_argo3 == Py_None) { _arg3 = NULL; } else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDragImage_BeginDrag2. Expected _wxWindow_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDragImage_BeginDragBounded. Expected _wxWindow_p."); return NULL; } } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDragImage_BeginDrag2(_arg0,*_arg1,_arg2,_arg3); + _result = (bool )wxDragImage_BeginDragBounded(_arg0,*_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -5149,7 +4968,7 @@ static PyObject *_wrap_wxLog_GetTimestamp(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5232,6 +5051,43 @@ static PyObject *_wrap_wxLog_IsAllowedTraceMask(PyObject *self, PyObject *args, return _resultobj; } +static PyObject *_wrap_wxLog_SetLogLevel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + unsigned long _arg0; + char *_kwnames[] = { "logLevel", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxLog_SetLogLevel",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxLog::SetLogLevel(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxLog_GetLogLevel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + unsigned long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxLog_GetLogLevel",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (unsigned long )wxLog::GetLogLevel(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + static wxString wxLog_TimeStamp(wxLog *self) { wxString msg; wxLog::TimeStamp(&msg); @@ -5262,7 +5118,7 @@ static PyObject *_wrap_wxLog_TimeStamp(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6478,7 +6334,7 @@ static PyObject *_wrap_wxProcess_GetInputStream(PyObject *self, PyObject *args, if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -6513,7 +6369,7 @@ static PyObject *_wrap_wxProcess_GetErrorStream(PyObject *self, PyObject *args, if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -7149,7 +7005,7 @@ static PyObject *_wrap_wxJoystick_GetProductName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8068,19 +7924,43 @@ static PyObject *_wrap_wxWave_Play(PyObject *self, PyObject *args, PyObject *kwa static PyObject *_wrap_new_wxFileTypeInfo(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxFileTypeInfo * _result; - char * _arg0; - char * _arg1; - char * _arg2; - char * _arg3; + wxString * _arg0; + wxString * _arg1; + wxString * _arg2; + wxString * _arg3; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; char *_kwnames[] = { "mimeType","openCmd","printCmd","desc", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"ssss:new_wxFileTypeInfo",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:new_wxFileTypeInfo",_kwnames,&_obj0,&_obj1,&_obj2,&_obj3)) return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + _arg2 = wxString_in_helper(_obj2); + if (_arg2 == NULL) + return NULL; +} +{ + _arg3 = wxString_in_helper(_obj3); + if (_arg3 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxFileTypeInfo *)new_wxFileTypeInfo(_arg0,_arg1,_arg2,_arg3); + _result = (wxFileTypeInfo *)new_wxFileTypeInfo(*_arg0,*_arg1,*_arg2,*_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -8091,6 +7971,22 @@ static PyObject *_wrap_new_wxFileTypeInfo(PyObject *self, PyObject *args, PyObje Py_INCREF(Py_None); _resultobj = Py_None; } +{ + if (_obj0) + delete _arg0; +} +{ + if (_obj1) + delete _arg1; +} +{ + if (_obj2) + delete _arg2; +} +{ + if (_obj3) + delete _arg3; +} return _resultobj; } @@ -8117,11 +8013,10 @@ static PyObject *_wrap_new_wxFileTypeInfoSequence(PyObject *self, PyObject *args PyObject* item = PySequence_GetItem(_obj0, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg0->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg0->Add(PyString_AsString(str)); #endif + _arg0->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -8306,7 +8201,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetMimeType(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8341,7 +8236,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetOpenCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8376,7 +8271,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetPrintCommand(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8411,7 +8306,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetShortDesc(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8446,7 +8341,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetDescription(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8542,7 +8437,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetIconFile(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8591,8 +8486,7 @@ static PyObject *_wrap_new_wxFileType(PyObject *self, PyObject *args, PyObject * if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxFileType",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxFileType. Expected _wxFileTypeInfo_p."); return NULL; } @@ -8617,7 +8511,7 @@ static PyObject * wxFileType_GetMimeType(wxFileType *self) { wxString str; if (self->GetMimeType(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8775,9 +8669,9 @@ static PyObject * wxFileType_GetIconInfo(wxFileType *self) { wxPyBeginBlockThreads(); PyObject* tuple = PyTuple_New(3); PyTuple_SetItem(tuple, 0, wxPyConstructObject(new wxIcon(icon), - "wxIcon", TRUE)); + wxT("wxIcon"), TRUE)); #if wxUSE_UNICODE - PyTuple_SetItem(tuple, 1, PyUnicode_FromUnicode(iconFile.c_str(), iconFile.Len())); + PyTuple_SetItem(tuple, 1, PyUnicode_FromWideChar(iconFile.c_str(), iconFile.Len())); #else PyTuple_SetItem(tuple, 1, PyString_FromStringAndSize(iconFile.c_str(), iconFile.Len())); #endif @@ -8821,7 +8715,7 @@ static PyObject * wxFileType_GetDescription(wxFileType *self) { wxString str; if (self->GetDescription(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8861,7 +8755,7 @@ static PyObject * wxFileType_GetOpenCommand(wxFileType *self,const wxString & fi wxString str; if (self->GetOpenCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8924,7 +8818,7 @@ static PyObject * wxFileType_GetPrintCommand(wxFileType *self,const wxString & f wxString str; if (self->GetPrintCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -9190,8 +9084,7 @@ static PyObject *_wrap_wxFileType_ExpandCommand(PyObject *self, PyObject *args, return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileType::MessageParameters_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileType::MessageParameters_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileType_ExpandCommand. Expected _wxFileType::MessageParameters_p."); return NULL; } @@ -9204,7 +9097,7 @@ static PyObject *_wrap_wxFileType_ExpandCommand(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9609,8 +9502,7 @@ static PyObject *_wrap_wxMimeTypesManager_AddFallback(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMimeTypesManager_AddFallback. Expected _wxFileTypeInfo_p."); return NULL; } @@ -9648,8 +9540,7 @@ static PyObject *_wrap_wxMimeTypesManager_Associate(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMimeTypesManager_Associate. Expected _wxFileTypeInfo_p."); return NULL; } @@ -9983,24 +9874,6 @@ static PyObject *_wrap_wxArtProvider_GetIcon(PyObject *self, PyObject *args, PyO return _resultobj; } -static PyObject *_wrap_wxArtProvider_CleanUpProviders(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxArtProvider_CleanUpProviders",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxPyArtProvider::CleanUpProviders(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static void *SwigwxFileHistoryTowxObject(void *ptr) { wxFileHistory *src; wxObject *dest; @@ -10254,8 +10127,7 @@ static PyObject *_wrap_wxFileHistory_Load(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileHistory_Load. Expected _wxConfigBase_p."); return NULL; } @@ -10291,8 +10163,7 @@ static PyObject *_wrap_wxFileHistory_Save(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileHistory_Save. Expected _wxConfigBase_p."); return NULL; } @@ -10400,7 +10271,7 @@ static PyObject *_wrap_wxFileHistory_GetHistoryFile(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10923,8 +10794,7 @@ static PyObject *_wrap_wxEffects_DrawSunkenEdge(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEffects_DrawSunkenEdge. Expected _wxDC_p."); return NULL; } @@ -10976,15 +10846,13 @@ static PyObject *_wrap_wxEffects_TileBitmap(PyObject *self, PyObject *args, PyOb return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxEffects_TileBitmap. Expected _wxDC_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxEffects_TileBitmap. Expected _wxBitmap_p."); return NULL; } @@ -11215,7 +11083,6 @@ static PyMethodDef misc2cMethods[] = { { "wxFileHistory_AddFileToHistory", (PyCFunction) _wrap_wxFileHistory_AddFileToHistory, METH_VARARGS | METH_KEYWORDS }, { "delete_wxFileHistory", (PyCFunction) _wrap_delete_wxFileHistory, METH_VARARGS | METH_KEYWORDS }, { "new_wxFileHistory", (PyCFunction) _wrap_new_wxFileHistory, METH_VARARGS | METH_KEYWORDS }, - { "wxArtProvider_CleanUpProviders", (PyCFunction) _wrap_wxArtProvider_CleanUpProviders, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_GetIcon", (PyCFunction) _wrap_wxArtProvider_GetIcon, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_GetBitmap", (PyCFunction) _wrap_wxArtProvider_GetBitmap, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_RemoveProvider", (PyCFunction) _wrap_wxArtProvider_RemoveProvider, METH_VARARGS | METH_KEYWORDS }, @@ -11358,6 +11225,8 @@ static PyMethodDef misc2cMethods[] = { { "new_wxLogTextCtrl", (PyCFunction) _wrap_new_wxLogTextCtrl, METH_VARARGS | METH_KEYWORDS }, { "new_wxLogStderr", (PyCFunction) _wrap_new_wxLogStderr, METH_VARARGS | METH_KEYWORDS }, { "wxLog_TimeStamp", (PyCFunction) _wrap_wxLog_TimeStamp, METH_VARARGS | METH_KEYWORDS }, + { "wxLog_GetLogLevel", (PyCFunction) _wrap_wxLog_GetLogLevel, METH_VARARGS | METH_KEYWORDS }, + { "wxLog_SetLogLevel", (PyCFunction) _wrap_wxLog_SetLogLevel, METH_VARARGS | METH_KEYWORDS }, { "wxLog_IsAllowedTraceMask", (PyCFunction) _wrap_wxLog_IsAllowedTraceMask, METH_VARARGS | METH_KEYWORDS }, { "wxLog_GetTraceMask", (PyCFunction) _wrap_wxLog_GetTraceMask, METH_VARARGS | METH_KEYWORDS }, { "wxLog_GetVerbose", (PyCFunction) _wrap_wxLog_GetVerbose, METH_VARARGS | METH_KEYWORDS }, @@ -11401,7 +11270,7 @@ static PyMethodDef misc2cMethods[] = { { "wxDragImage_Show", (PyCFunction) _wrap_wxDragImage_Show, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_Move", (PyCFunction) _wrap_wxDragImage_Move, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_EndDrag", (PyCFunction) _wrap_wxDragImage_EndDrag, METH_VARARGS | METH_KEYWORDS }, - { "wxDragImage_BeginDrag2", (PyCFunction) _wrap_wxDragImage_BeginDrag2, METH_VARARGS | METH_KEYWORDS }, + { "wxDragImage_BeginDragBounded", (PyCFunction) _wrap_wxDragImage_BeginDragBounded, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_BeginDrag", (PyCFunction) _wrap_wxDragImage_BeginDrag, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_SetBackingBitmap", (PyCFunction) _wrap_wxDragImage_SetBackingBitmap, METH_VARARGS | METH_KEYWORDS }, { "delete_wxDragImage", (PyCFunction) _wrap_delete_wxDragImage, METH_VARARGS | METH_KEYWORDS }, @@ -11459,6 +11328,7 @@ static PyMethodDef misc2cMethods[] = { { "wxLogStatusFrame", (PyCFunction) _wrap_wxLogStatusFrame, METH_VARARGS | METH_KEYWORDS }, { "wxLogStatus", (PyCFunction) _wrap_wxLogStatus, METH_VARARGS | METH_KEYWORDS }, { "wxLogVerbose", (PyCFunction) _wrap_wxLogVerbose, METH_VARARGS | METH_KEYWORDS }, + { "wxLogDebug", (PyCFunction) _wrap_wxLogDebug, METH_VARARGS | METH_KEYWORDS }, { "wxLogInfo", (PyCFunction) _wrap_wxLogInfo, METH_VARARGS | METH_KEYWORDS }, { "wxLogMessage", (PyCFunction) _wrap_wxLogMessage, METH_VARARGS | METH_KEYWORDS }, { "wxLogWarning", (PyCFunction) _wrap_wxLogWarning, METH_VARARGS | METH_KEYWORDS }, @@ -11476,15 +11346,6 @@ static PyMethodDef misc2cMethods[] = { { "wxSafeYield", (PyCFunction) _wrap_wxSafeYield, METH_VARARGS | METH_KEYWORDS }, { "wxCaret_SetBlinkTime", (PyCFunction) _wrap_wxCaret_SetBlinkTime, METH_VARARGS | METH_KEYWORDS }, { "wxCaret_GetBlinkTime", (PyCFunction) _wrap_wxCaret_GetBlinkTime, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseString", (PyCFunction) _wrap_wxResourceParseString, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseFile", (PyCFunction) _wrap_wxResourceParseFile, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseData", (PyCFunction) _wrap_wxResourceParseData, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceGetIdentifier", (PyCFunction) _wrap_wxResourceGetIdentifier, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateMenuBar", (PyCFunction) _wrap_wxResourceCreateMenuBar, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateIcon", (PyCFunction) _wrap_wxResourceCreateIcon, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateBitmap", (PyCFunction) _wrap_wxResourceCreateBitmap, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceClear", (PyCFunction) _wrap_wxResourceClear, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceAddIdentifier", (PyCFunction) _wrap_wxResourceAddIdentifier, METH_VARARGS | METH_KEYWORDS }, { "wxGetTopLevelParent", (PyCFunction) _wrap_wxGetTopLevelParent, METH_VARARGS | METH_KEYWORDS }, { "wxFindWindowAtPoint", (PyCFunction) _wrap_wxFindWindowAtPoint, METH_VARARGS | METH_KEYWORDS }, { "wxGenericFindWindowAtPoint", (PyCFunction) _wrap_wxGenericFindWindowAtPoint, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/misc2.py b/wxPython/src/gtk/misc2.py index d4e0d0c096..0780c1886a 100644 --- a/wxPython/src/gtk/misc2.py +++ b/wxPython/src/gtk/misc2.py @@ -98,9 +98,12 @@ class wxCaretPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxCaret(self) + def __del__(self, delfunc=misc2c.delete_wxCaret): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(misc2c.wxCaret_IsOk,(self,) + _args, _kwargs) return val @@ -156,9 +159,12 @@ class wxBusyCursorPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxBusyCursor(self) + def __del__(self, delfunc=misc2c.delete_wxBusyCursor): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxBusyCursor instance at %s>" % (self.this,) class wxBusyCursor(wxBusyCursorPtr): @@ -173,9 +179,12 @@ class wxWindowDisablerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxWindowDisabler(self) + def __del__(self, delfunc=misc2c.delete_wxWindowDisabler): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxWindowDisabler instance at %s>" % (self.this,) class wxWindowDisabler(wxWindowDisablerPtr): @@ -190,9 +199,12 @@ class wxMutexGuiLockerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxMutexGuiLocker(self) + def __del__(self, delfunc=misc2c.delete_wxMutexGuiLocker): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxMutexGuiLocker instance at %s>" % (self.this,) class wxMutexGuiLocker(wxMutexGuiLockerPtr): @@ -207,9 +219,12 @@ class wxTipProviderPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxTipProvider(self) + def __del__(self, delfunc=misc2c.delete_wxTipProvider): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetTip(self, *_args, **_kwargs): val = apply(misc2c.wxTipProvider_GetTip,(self,) + _args, _kwargs) return val @@ -250,17 +265,20 @@ class wxDragImagePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxDragImage(self) + def __del__(self, delfunc=misc2c.delete_wxDragImage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetBackingBitmap(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_SetBackingBitmap,(self,) + _args, _kwargs) return val def BeginDrag(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_BeginDrag,(self,) + _args, _kwargs) return val - def BeginDrag2(self, *_args, **_kwargs): - val = apply(misc2c.wxDragImage_BeginDrag2,(self,) + _args, _kwargs) + def BeginDragBounded(self, *_args, **_kwargs): + val = apply(misc2c.wxDragImage_BeginDragBounded,(self,) + _args, _kwargs) return val def EndDrag(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_EndDrag,(self,) + _args, _kwargs) @@ -283,6 +301,7 @@ class wxDragImagePtr(wxObjectPtr): return val def __repr__(self): return "<C wxDragImage instance at %s>" % (self.this,) + BeginDrag2 = BeginDragBounded class wxDragImage(wxDragImagePtr): def __init__(self,*_args,**_kwargs): self.this = apply(misc2c.new_wxDragImage,_args,_kwargs) @@ -315,9 +334,12 @@ class wxPyTimerPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxPyTimer(self) + def __del__(self, delfunc=misc2c.delete_wxPyTimer): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetInterval(self, *_args, **_kwargs): val = apply(misc2c.wxPyTimer_GetInterval,(self,) + _args, _kwargs) return val @@ -350,9 +372,12 @@ class wxStopWatchPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxStopWatch(self) + def __del__(self, delfunc=misc2c.delete_wxStopWatch): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Start(self, *_args, **_kwargs): val = apply(misc2c.wxStopWatch_Start,(self,) + _args, _kwargs) return val @@ -504,9 +529,12 @@ class wxLogNullPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxLogNull(self) + def __del__(self, delfunc=misc2c.delete_wxLogNull): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxLogNull instance at %s>" % (self.this,) class wxLogNull(wxLogNullPtr): @@ -631,9 +659,12 @@ class wxJoystickPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxJoystick(self) + def __del__(self, delfunc=misc2c.delete_wxJoystick): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPosition(self, *_args, **_kwargs): val = apply(misc2c.wxJoystick_GetPosition,(self,) + _args, _kwargs) if val: val = wxPointPtr(val) ; val.thisown = 1 @@ -775,9 +806,12 @@ class wxWavePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxWave(self) + def __del__(self, delfunc=misc2c.delete_wxWave): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(misc2c.wxWave_IsOk,(self,) + _args, _kwargs) return val @@ -895,9 +929,12 @@ class wxFileTypePtr : def Unassociate(self, *_args, **_kwargs): val = apply(misc2c.wxFileType_Unassociate,(self,) + _args, _kwargs) return val - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxFileType(self) + def __del__(self, delfunc=misc2c.delete_wxFileType): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxFileType instance at %s>" % (self.this,) class wxFileType(wxFileTypePtr): @@ -945,9 +982,12 @@ class wxMimeTypesManagerPtr : def Unassociate(self, *_args, **_kwargs): val = apply(misc2c.wxMimeTypesManager_Unassociate,(self,) + _args, _kwargs) return val - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxMimeTypesManager(self) + def __del__(self, delfunc=misc2c.delete_wxMimeTypesManager): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxMimeTypesManager instance at %s>" % (self.this,) class wxMimeTypesManager(wxMimeTypesManagerPtr): @@ -980,9 +1020,12 @@ class wxFileHistoryPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxFileHistory(self) + def __del__(self, delfunc=misc2c.delete_wxFileHistory): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddFileToHistory(self, *_args, **_kwargs): val = apply(misc2c.wxFileHistory_AddFileToHistory,(self,) + _args, _kwargs) return val @@ -1091,9 +1134,12 @@ class wxSingleInstanceCheckerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxSingleInstanceChecker(self) + def __del__(self, delfunc=misc2c.delete_wxSingleInstanceChecker): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Create(self, *_args, **_kwargs): val = apply(misc2c.wxSingleInstanceChecker_Create,(self,) + _args, _kwargs) return val @@ -1186,32 +1232,6 @@ def wxGetTopLevelParent(*_args, **_kwargs): val = apply(misc2c.wxGetTopLevelParent,_args,_kwargs) return val -wxResourceAddIdentifier = misc2c.wxResourceAddIdentifier - -wxResourceClear = misc2c.wxResourceClear - -def wxResourceCreateBitmap(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateBitmap,_args,_kwargs) - if val: val = wxBitmapPtr(val); val.thisown = 1 - return val - -def wxResourceCreateIcon(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateIcon,_args,_kwargs) - if val: val = wxIconPtr(val); val.thisown = 1 - return val - -def wxResourceCreateMenuBar(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateMenuBar,_args,_kwargs) - return val - -wxResourceGetIdentifier = misc2c.wxResourceGetIdentifier - -wxResourceParseData = misc2c.wxResourceParseData - -wxResourceParseFile = misc2c.wxResourceParseFile - -wxResourceParseString = misc2c.wxResourceParseString - wxCaret_GetBlinkTime = misc2c.wxCaret_GetBlinkTime wxCaret_SetBlinkTime = misc2c.wxCaret_SetBlinkTime @@ -1249,6 +1269,8 @@ wxLogMessage = misc2c.wxLogMessage wxLogInfo = misc2c.wxLogInfo +wxLogDebug = misc2c.wxLogDebug + wxLogVerbose = misc2c.wxLogVerbose wxLogStatus = misc2c.wxLogStatus @@ -1338,6 +1360,10 @@ wxLog_GetTraceMask = misc2c.wxLog_GetTraceMask wxLog_IsAllowedTraceMask = misc2c.wxLog_IsAllowedTraceMask +wxLog_SetLogLevel = misc2c.wxLog_SetLogLevel + +wxLog_GetLogLevel = misc2c.wxLog_GetLogLevel + wxProcess_Kill = misc2c.wxProcess_Kill wxProcess_Exists = misc2c.wxProcess_Exists @@ -1367,8 +1393,6 @@ def wxArtProvider_GetIcon(*_args, **_kwargs): if val: val = wxIconPtr(val); val.thisown = 1 return val -wxArtProvider_CleanUpProviders = misc2c.wxArtProvider_CleanUpProviders - #-------------- VARIABLE WRAPPERS ------------------ diff --git a/wxPython/src/gtk/printfw.cpp b/wxPython/src/gtk/printfw.cpp index c09e325013..de74f530b3 100644 --- a/wxPython/src/gtk/printfw.cpp +++ b/wxPython/src/gtk/printfw.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -356,7 +355,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -821,7 +820,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -856,7 +855,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterOptions(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -891,7 +890,7 @@ static PyObject *_wrap_wxPrintData_GetPreviewCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -926,7 +925,7 @@ static PyObject *_wrap_wxPrintData_GetFilename(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -961,7 +960,7 @@ static PyObject *_wrap_wxPrintData_GetFontMetricPath(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1548,8 +1547,7 @@ static PyObject *_wrap_new_wxPostScriptDC(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPostScriptDC",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPostScriptDC. Expected _wxPrintData_p."); return NULL; } @@ -1626,8 +1624,7 @@ static PyObject *_wrap_wxPostScriptDC_SetPrintData(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostScriptDC_SetPrintData. Expected _wxPrintData_p."); return NULL; } @@ -2627,8 +2624,7 @@ static PyObject *_wrap_wxPageSetupDialogData_SetPrintData(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPageSetupDialogData_SetPrintData. Expected _wxPrintData_p."); return NULL; } @@ -3434,8 +3430,7 @@ static PyObject *_wrap_wxPrintDialogData_SetPrintData(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPrintDialogData_SetPrintData. Expected _wxPrintData_p."); return NULL; } diff --git a/wxPython/src/gtk/printfw.py b/wxPython/src/gtk/printfw.py index 230d839866..b9bbff1719 100644 --- a/wxPython/src/gtk/printfw.py +++ b/wxPython/src/gtk/printfw.py @@ -25,9 +25,12 @@ class wxPrintDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrintData(self) + def __del__(self, delfunc=printfwc.delete_wxPrintData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetNoCopies(self, *_args, **_kwargs): val = apply(printfwc.wxPrintData_GetNoCopies,(self,) + _args, _kwargs) return val @@ -187,9 +190,12 @@ class wxPageSetupDialogDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPageSetupDialogData(self) + def __del__(self, delfunc=printfwc.delete_wxPageSetupDialogData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableHelp(self, *_args, **_kwargs): val = apply(printfwc.wxPageSetupDialogData_EnableHelp,(self,) + _args, _kwargs) return val @@ -319,9 +325,12 @@ class wxPrintDialogDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrintDialogData(self) + def __del__(self, delfunc=printfwc.delete_wxPrintDialogData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableHelp(self, *_args, **_kwargs): val = apply(printfwc.wxPrintDialogData_EnableHelp,(self,) + _args, _kwargs) return val @@ -491,9 +500,12 @@ class wxPrinterPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrinter(self) + def __del__(self, delfunc=printfwc.delete_wxPrinter): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def CreateAbortWindow(self, *_args, **_kwargs): val = apply(printfwc.wxPrinter_CreateAbortWindow,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/sizers.cpp b/wxPython/src/gtk/sizers.cpp index 65d40d34b7..6daae1c841 100644 --- a/wxPython/src/gtk/sizers.cpp +++ b/wxPython/src/gtk/sizers.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -481,6 +480,34 @@ static PyObject *_wrap_wxSizerItem_IsSpacer(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxSizerItem_IsShown(_swigobj) (_swigobj->IsShown()) +static PyObject *_wrap_wxSizerItem_IsShown(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizerItem * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxSizerItem_IsShown",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizerItem_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizerItem_IsShown. Expected _wxSizerItem_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizerItem_IsShown(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxSizerItem_GetWindow(_swigobj) (_swigobj->GetWindow()) static PyObject *_wrap_wxSizerItem_GetWindow(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -812,6 +839,37 @@ static PyObject *_wrap_wxSizerItem_SetBorder(PyObject *self, PyObject *args, PyO return _resultobj; } +#define wxSizerItem_Show(_swigobj,_swigarg0) (_swigobj->Show(_swigarg0)) +static PyObject *_wrap_wxSizerItem_Show(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizerItem * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxSizerItem_Show",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizerItem_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizerItem_Show. Expected _wxSizerItem_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizerItem_Show(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static PyObject * wxSizerItem_GetUserData(wxSizerItem *self) { wxPyUserData* data = (wxPyUserData*)self->GetUserData(); if (data) { @@ -1994,6 +2052,265 @@ static PyObject *_wrap_wxSizer_GetChildren(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxSizer_ShowWindow(_swigobj,_swigarg0,_swigarg1) (_swigobj->Show(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxSizer_ShowWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxWindow * _arg1; + bool _arg2 = (bool ) TRUE; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + int tempbool2 = (int) TRUE; + char *_kwnames[] = { "self","window","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxSizer_ShowWindow",_kwnames,&_argo0,&_argo1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_ShowWindow. Expected _wxWindow_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowWindow(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_HideWindow(_swigobj,_swigarg0) (_swigobj->Hide(_swigarg0)) +static PyObject *_wrap_wxSizer_HideWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxWindow * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","window", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_HideWindow",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_HideWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_HideWindow. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_HideWindow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_ShowSizer(_swigobj,_swigarg0,_swigarg1) (_swigobj->Show(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxSizer_ShowSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxSizer * _arg1; + bool _arg2 = (bool ) TRUE; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + int tempbool2 = (int) TRUE; + char *_kwnames[] = { "self","sizer","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxSizer_ShowSizer",_kwnames,&_argo0,&_argo1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_ShowSizer. Expected _wxSizer_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowSizer(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_HideSizer(_swigobj,_swigarg0) (_swigobj->Hide(_swigarg0)) +static PyObject *_wrap_wxSizer_HideSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxSizer * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","sizer", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_HideSizer",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_HideSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_HideSizer. Expected _wxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_HideSizer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_IsShownWindow(_swigobj,_swigarg0) (_swigobj->IsShown(_swigarg0)) +static PyObject *_wrap_wxSizer_IsShownWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizer * _arg0; + wxWindow * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","window", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_IsShownWindow",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_IsShownWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_IsShownWindow. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizer_IsShownWindow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxSizer_IsShownSizer(_swigobj,_swigarg0) (_swigobj->IsShown(_swigarg0)) +static PyObject *_wrap_wxSizer_IsShownSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizer * _arg0; + wxSizer * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","sizer", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_IsShownSizer",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_IsShownSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_IsShownSizer. Expected _wxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizer_IsShownSizer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxSizer_ShowItems(_swigobj,_swigarg0) (_swigobj->ShowItems(_swigarg0)) +static PyObject *_wrap_wxSizer_ShowItems(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxSizer_ShowItems",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowItems. Expected _wxSizer_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowItems(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void *SwigwxPySizerTowxSizer(void *ptr) { wxPySizer *src; wxSizer *dest; @@ -2145,6 +2462,35 @@ static PyObject *_wrap_wxBoxSizer_GetOrientation(PyObject *self, PyObject *args, return _resultobj; } +#define wxBoxSizer_SetOrientation(_swigobj,_swigarg0) (_swigobj->SetOrientation(_swigarg0)) +static PyObject *_wrap_wxBoxSizer_SetOrientation(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxBoxSizer * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","orient", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxBoxSizer_SetOrientation",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBoxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBoxSizer_SetOrientation. Expected _wxBoxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxBoxSizer_SetOrientation(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxBoxSizer_RecalcSizes(_swigobj) (_swigobj->RecalcSizes()) static PyObject *_wrap_wxBoxSizer_RecalcSizes(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3075,10 +3421,18 @@ static PyMethodDef sizerscMethods[] = { { "new_wxStaticBoxSizer", (PyCFunction) _wrap_new_wxStaticBoxSizer, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_CalcMin", (PyCFunction) _wrap_wxBoxSizer_CalcMin, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_RecalcSizes", (PyCFunction) _wrap_wxBoxSizer_RecalcSizes, METH_VARARGS | METH_KEYWORDS }, + { "wxBoxSizer_SetOrientation", (PyCFunction) _wrap_wxBoxSizer_SetOrientation, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_GetOrientation", (PyCFunction) _wrap_wxBoxSizer_GetOrientation, METH_VARARGS | METH_KEYWORDS }, { "new_wxBoxSizer", (PyCFunction) _wrap_new_wxBoxSizer, METH_VARARGS | METH_KEYWORDS }, { "wxPySizer__setCallbackInfo", (PyCFunction) _wrap_wxPySizer__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxPySizer", (PyCFunction) _wrap_new_wxPySizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowItems", (PyCFunction) _wrap_wxSizer_ShowItems, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_IsShownSizer", (PyCFunction) _wrap_wxSizer_IsShownSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_IsShownWindow", (PyCFunction) _wrap_wxSizer_IsShownWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_HideSizer", (PyCFunction) _wrap_wxSizer_HideSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowSizer", (PyCFunction) _wrap_wxSizer_ShowSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_HideWindow", (PyCFunction) _wrap_wxSizer_HideWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowWindow", (PyCFunction) _wrap_wxSizer_ShowWindow, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_GetChildren", (PyCFunction) _wrap_wxSizer_GetChildren, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_DeleteWindows", (PyCFunction) _wrap_wxSizer_DeleteWindows, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_Clear", (PyCFunction) _wrap_wxSizer_Clear, METH_VARARGS | METH_KEYWORDS }, @@ -3110,6 +3464,7 @@ static PyMethodDef sizerscMethods[] = { { "wxSizer_Destroy", (PyCFunction) _wrap_wxSizer_Destroy, METH_VARARGS | METH_KEYWORDS }, { "wxSizer__setOORInfo", (PyCFunction) _wrap_wxSizer__setOORInfo, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_GetUserData", (PyCFunction) _wrap_wxSizerItem_GetUserData, METH_VARARGS | METH_KEYWORDS }, + { "wxSizerItem_Show", (PyCFunction) _wrap_wxSizerItem_Show, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetBorder", (PyCFunction) _wrap_wxSizerItem_SetBorder, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetFlag", (PyCFunction) _wrap_wxSizerItem_SetFlag, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetOption", (PyCFunction) _wrap_wxSizerItem_SetOption, METH_VARARGS | METH_KEYWORDS }, @@ -3121,6 +3476,7 @@ static PyMethodDef sizerscMethods[] = { { "wxSizerItem_GetSizer", (PyCFunction) _wrap_wxSizerItem_GetSizer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetWindow", (PyCFunction) _wrap_wxSizerItem_SetWindow, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_GetWindow", (PyCFunction) _wrap_wxSizerItem_GetWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizerItem_IsShown", (PyCFunction) _wrap_wxSizerItem_IsShown, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsSpacer", (PyCFunction) _wrap_wxSizerItem_IsSpacer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsSizer", (PyCFunction) _wrap_wxSizerItem_IsSizer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsWindow", (PyCFunction) _wrap_wxSizerItem_IsWindow, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/sizers.py b/wxPython/src/gtk/sizers.py index 88d328f1d6..922d4a60e9 100644 --- a/wxPython/src/gtk/sizers.py +++ b/wxPython/src/gtk/sizers.py @@ -15,7 +15,6 @@ from controls import * from events import * import wx -import string class wxSizerItemPtr(wxObjectPtr): def __init__(self,this): self.this = this @@ -59,6 +58,9 @@ class wxSizerItemPtr(wxObjectPtr): def IsSpacer(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_IsSpacer,(self,) + _args, _kwargs) return val + def IsShown(self, *_args, **_kwargs): + val = apply(sizersc.wxSizerItem_IsShown,(self,) + _args, _kwargs) + return val def GetWindow(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_GetWindow,(self,) + _args, _kwargs) return val @@ -92,6 +94,9 @@ class wxSizerItemPtr(wxObjectPtr): def SetBorder(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_SetBorder,(self,) + _args, _kwargs) return val + def Show(self, *_args, **_kwargs): + val = apply(sizersc.wxSizerItem_Show,(self,) + _args, _kwargs) + return val def GetUserData(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_GetUserData,(self,) + _args, _kwargs) return val @@ -202,40 +207,69 @@ class wxSizerPtr(wxObjectPtr): def GetChildren(self, *_args, **_kwargs): val = apply(sizersc.wxSizer_GetChildren,(self,) + _args, _kwargs) return val + def ShowWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowWindow,(self,) + _args, _kwargs) + return val + def HideWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_HideWindow,(self,) + _args, _kwargs) + return val + def ShowSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowSizer,(self,) + _args, _kwargs) + return val + def HideSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_HideSizer,(self,) + _args, _kwargs) + return val + def IsShownWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_IsShownWindow,(self,) + _args, _kwargs) + return val + def IsShownSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_IsShownSizer,(self,) + _args, _kwargs) + return val + def ShowItems(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowItems,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxSizer instance at %s>" % (self.this,) def Add(self, *args, **kw): if type(args[0]) == type(1): apply(self.AddSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.AddSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.AddWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Insert(self, *args, **kw): if type(args[1]) == type(1): apply(self.InsertSpacer, args, kw) - elif string.find(args[1].this, 'Sizer') != -1: + elif isinstance(args[1], wxSizerPtr): apply(self.InsertSizer, args, kw) - else: + elif isinstance(args[1], wxWindowPtr): apply(self.InsertWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Prepend(self, *args, **kw): if type(args[0]) == type(1): apply(self.PrependSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.PrependSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.PrependWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Remove(self, *args, **kw): if type(args[0]) == type(1): - apply(self.RemovePos, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: - apply(self.RemoveSizer, args, kw) + return apply(self.RemovePos, args, kw) + elif isinstance(args[0], wxSizerPtr): + return apply(self.RemoveSizer, args, kw) + elif isinstance(args[0], wxWindowPtr): + return apply(self.RemoveWindow, args, kw) else: - apply(self.RemoveWindow, args, kw) + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def AddMany(self, widgets): for childinfo in widgets: @@ -247,10 +281,12 @@ class wxSizerPtr(wxObjectPtr): def SetItemMinSize(self, *args): if type(args[0]) == type(1): apply(self.SetItemMinSizePos, args) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.SetItemMinSizeSizer, args) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.SetItemMinSizeWindow, args) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def GetSizeTuple(self): @@ -260,6 +296,31 @@ class wxSizerPtr(wxObjectPtr): def GetMinSizeTuple(self): return self.GetMinSize().asTuple() + + def Show(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.ShowSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.ShowWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def Hide(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.HideSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.HideWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def IsShown(self, *args): + if isinstance(args[0], wxSizerPtr): + return apply(self.IsShownSizer, args) + elif isinstance(args[0], wxWindowPtr): + return apply(self.IsShownWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + class wxSizer(wxSizerPtr): def __init__(self,this): self.this = this @@ -293,6 +354,9 @@ class wxBoxSizerPtr(wxSizerPtr): def GetOrientation(self, *_args, **_kwargs): val = apply(sizersc.wxBoxSizer_GetOrientation,(self,) + _args, _kwargs) return val + def SetOrientation(self, *_args, **_kwargs): + val = apply(sizersc.wxBoxSizer_SetOrientation,(self,) + _args, _kwargs) + return val def RecalcSizes(self, *_args, **_kwargs): val = apply(sizersc.wxBoxSizer_RecalcSizes,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/stattool.cpp b/wxPython/src/gtk/stattool.cpp index fe798221e6..fe2caa0657 100644 --- a/wxPython/src/gtk/stattool.cpp +++ b/wxPython/src/gtk/stattool.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -338,7 +337,7 @@ static PyObject *_wrap_wxStatusBar_GetStatusText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1093,7 +1092,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetLabel(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1130,7 +1129,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetShortHelp(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1167,7 +1166,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetLongHelp(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1366,8 +1365,7 @@ static PyObject *_wrap_wxToolBarToolBase_SetNormalBitmap(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxToolBarToolBase_SetNormalBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1403,8 +1401,7 @@ static PyObject *_wrap_wxToolBarToolBase_SetDisabledBitmap(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxToolBarToolBase_SetDisabledBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1674,15 +1671,13 @@ static PyObject *_wrap_wxToolBarBase_DoAddTool(PyObject *self, PyObject *args, P return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxToolBarBase_DoAddTool. Expected _wxBitmap_p."); return NULL; } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_DoAddTool. Expected _wxBitmap_p."); return NULL; } @@ -1725,14 +1720,14 @@ static PyObject *_wrap_wxToolBarBase_DoAddTool(PyObject *self, PyObject *args, P return _resultobj; } -static wxToolBarToolBase * wxToolBarBase_InsertTool(wxToolBarBase *self,size_t pos,int id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) { +static wxToolBarToolBase * wxToolBarBase_DoInsertTool(wxToolBarBase *self,size_t pos,int id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) { wxPyUserData* udata = NULL; if (clientData && clientData != Py_None) udata = new wxPyUserData(clientData); return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind, shortHelp, longHelp, udata); } -static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxToolBarBase_DoInsertTool(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxToolBarToolBase * _result; wxToolBarBase * _arg0; @@ -1755,12 +1750,12 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, char *_kwnames[] = { "self","pos","id","label","bitmap","bmpDisabled","kind","shortHelp","longHelp","clientData", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_InsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_DoInsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarBase_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_InsertTool. Expected _wxToolBarBase_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_DoInsertTool. Expected _wxToolBarBase_p."); return NULL; } } @@ -1770,16 +1765,14 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, return NULL; } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_InsertTool. Expected _wxBitmap_p."); + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_DoInsertTool. Expected _wxBitmap_p."); return NULL; } } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_InsertTool. Expected _wxBitmap_p."); + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_DoInsertTool. Expected _wxBitmap_p."); return NULL; } } @@ -1801,7 +1794,7 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxToolBarToolBase *)wxToolBarBase_InsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9); + _result = (wxToolBarToolBase *)wxToolBarBase_DoInsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2422,7 +2415,7 @@ static PyObject *_wrap_wxToolBarBase_GetToolShortHelp(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2500,7 +2493,7 @@ static PyObject *_wrap_wxToolBarBase_GetToolLongHelp(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3531,7 +3524,7 @@ static PyMethodDef stattoolcMethods[] = { { "wxToolBarBase_FindControl", (PyCFunction) _wrap_wxToolBarBase_FindControl, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_InsertControl", (PyCFunction) _wrap_wxToolBarBase_InsertControl, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_AddControl", (PyCFunction) _wrap_wxToolBarBase_AddControl, METH_VARARGS | METH_KEYWORDS }, - { "wxToolBarBase_InsertTool", (PyCFunction) _wrap_wxToolBarBase_InsertTool, METH_VARARGS | METH_KEYWORDS }, + { "wxToolBarBase_DoInsertTool", (PyCFunction) _wrap_wxToolBarBase_DoInsertTool, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_DoAddTool", (PyCFunction) _wrap_wxToolBarBase_DoAddTool, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarToolBase_SetClientData", (PyCFunction) _wrap_wxToolBarToolBase_SetClientData, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarToolBase_GetClientData", (PyCFunction) _wrap_wxToolBarToolBase_GetClientData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/stattool.py b/wxPython/src/gtk/stattool.py index cea709ed3e..0c74eee1b4 100644 --- a/wxPython/src/gtk/stattool.py +++ b/wxPython/src/gtk/stattool.py @@ -193,8 +193,8 @@ class wxToolBarBasePtr(wxControlPtr): def DoAddTool(self, *_args, **_kwargs): val = apply(stattoolc.wxToolBarBase_DoAddTool,(self,) + _args, _kwargs) return val - def InsertTool(self, *_args, **_kwargs): - val = apply(stattoolc.wxToolBarBase_InsertTool,(self,) + _args, _kwargs) + def DoInsertTool(self, *_args, **_kwargs): + val = apply(stattoolc.wxToolBarBase_DoInsertTool,(self,) + _args, _kwargs) return val def AddControl(self, *_args, **_kwargs): val = apply(stattoolc.wxToolBarBase_AddControl,(self,) + _args, _kwargs) @@ -370,7 +370,7 @@ class wxToolBarBasePtr(wxControlPtr): # 2.3.3. They are renamed to have 'Label' in the name so as to be # able to keep backwards compatibility with using the above # methods. Eventually these should migrate to be the methods used - # primarily and loose the 'Label' in the name... + # primarily and lose the 'Label' in the name... def AddLabelTool(self, id, label, bitmap, bmpDisabled = wxNullBitmap, diff --git a/wxPython/src/gtk/streams.cpp b/wxPython/src/gtk/streams.cpp index ac2708efe7..388cc1e300 100644 --- a/wxPython/src/gtk/streams.cpp +++ b/wxPython/src/gtk/streams.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -362,6 +361,233 @@ static PyObject *_wrap_wxInputStream_tell(PyObject *self, PyObject *args, PyObje return _resultobj; } +#define wxInputStream_Peek(_swigobj) (_swigobj->Peek()) +static PyObject *_wrap_wxInputStream_Peek(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + char _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_Peek",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Peek. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (char )wxInputStream_Peek(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("c",_result); + return _resultobj; +} + +#define wxInputStream_GetC(_swigobj) (_swigobj->GetC()) +static PyObject *_wrap_wxInputStream_GetC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + char _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_GetC",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_GetC. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (char )wxInputStream_GetC(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("c",_result); + return _resultobj; +} + +#define wxInputStream_LastRead(_swigobj) (_swigobj->LastRead()) +static PyObject *_wrap_wxInputStream_LastRead(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + size_t _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_LastRead",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_LastRead. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (size_t )wxInputStream_LastRead(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_CanRead(_swigobj) (_swigobj->CanRead()) +static PyObject *_wrap_wxInputStream_CanRead(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_CanRead",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_CanRead. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_CanRead(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_Eof(_swigobj) (_swigobj->Eof()) +static PyObject *_wrap_wxInputStream_Eof(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_Eof",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Eof. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_Eof(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_Ungetch(_swigobj,_swigarg0) (_swigobj->Ungetch(_swigarg0)) +static PyObject *_wrap_wxInputStream_Ungetch(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + char _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","c", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oc:wxInputStream_Ungetch",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Ungetch. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_Ungetch(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_SeekI(_swigobj,_swigarg0,_swigarg1) (_swigobj->SeekI(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxInputStream_SeekI(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + wxPyInputStream * _arg0; + long _arg1; + wxSeekMode _arg2 = (wxSeekMode ) (wxFromStart); + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pos","mode", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol|i:wxInputStream_SeekI",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_SeekI. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxInputStream_SeekI(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +#define wxInputStream_TellI(_swigobj) (_swigobj->TellI()) +static PyObject *_wrap_wxInputStream_TellI(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_TellI",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_TellI. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxInputStream_TellI(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + static void wxOutputStream_write(wxOutputStream *self,PyObject * obj) { // We use only strings for the streams, not unicode PyObject* str = PyObject_Str(obj); @@ -407,6 +633,14 @@ static PyObject *_wrap_wxOutputStream_write(PyObject *self, PyObject *args, PyOb static PyMethodDef streamscMethods[] = { { "wxOutputStream_write", (PyCFunction) _wrap_wxOutputStream_write, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_TellI", (PyCFunction) _wrap_wxInputStream_TellI, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_SeekI", (PyCFunction) _wrap_wxInputStream_SeekI, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Ungetch", (PyCFunction) _wrap_wxInputStream_Ungetch, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Eof", (PyCFunction) _wrap_wxInputStream_Eof, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_CanRead", (PyCFunction) _wrap_wxInputStream_CanRead, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_LastRead", (PyCFunction) _wrap_wxInputStream_LastRead, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_GetC", (PyCFunction) _wrap_wxInputStream_GetC, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Peek", (PyCFunction) _wrap_wxInputStream_Peek, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_tell", (PyCFunction) _wrap_wxInputStream_tell, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_seek", (PyCFunction) _wrap_wxInputStream_seek, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_readlines", (PyCFunction) _wrap_wxInputStream_readlines, METH_VARARGS | METH_KEYWORDS }, @@ -528,6 +762,9 @@ SWIGEXPORT(void) initstreamsc() { SWIG_globals = SWIG_newvarlink(); m = Py_InitModule("streamsc", streamscMethods); d = PyModule_GetDict(m); + PyDict_SetItemString(d,"wxFromStart", PyInt_FromLong((long) wxFromStart)); + PyDict_SetItemString(d,"wxFromCurrent", PyInt_FromLong((long) wxFromCurrent)); + PyDict_SetItemString(d,"wxFromEnd", PyInt_FromLong((long) wxFromEnd)); wxPyPtrTypeMap_Add("wxInputStream", "wxPyInputStream"); { diff --git a/wxPython/src/gtk/streams.py b/wxPython/src/gtk/streams.py index 6394f60946..d2a8b18800 100644 --- a/wxPython/src/gtk/streams.py +++ b/wxPython/src/gtk/streams.py @@ -1,7 +1,6 @@ # This file was created automatically by SWIG. import streamsc import wx -import string class wxInputStreamPtr : def __init__(self,this): self.this = this @@ -30,6 +29,30 @@ class wxInputStreamPtr : def tell(self, *_args, **_kwargs): val = apply(streamsc.wxInputStream_tell,(self,) + _args, _kwargs) return val + def Peek(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Peek,(self,) + _args, _kwargs) + return val + def GetC(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_GetC,(self,) + _args, _kwargs) + return val + def LastRead(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_LastRead,(self,) + _args, _kwargs) + return val + def CanRead(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_CanRead,(self,) + _args, _kwargs) + return val + def Eof(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Eof,(self,) + _args, _kwargs) + return val + def Ungetch(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Ungetch,(self,) + _args, _kwargs) + return val + def SeekI(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_SeekI,(self,) + _args, _kwargs) + return val + def TellI(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_TellI,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxInputStream instance at %s>" % (self.this,) class wxInputStream(wxInputStreamPtr): @@ -64,3 +87,6 @@ class wxOutputStream(wxOutputStreamPtr): #-------------- VARIABLE WRAPPERS ------------------ +wxFromStart = streamsc.wxFromStart +wxFromCurrent = streamsc.wxFromCurrent +wxFromEnd = streamsc.wxFromEnd diff --git a/wxPython/src/gtk/utils.cpp b/wxPython/src/gtk/utils.cpp index 79b7f37f73..81b7b53b0e 100644 --- a/wxPython/src/gtk/utils.cpp +++ b/wxPython/src/gtk/utils.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -97,7 +96,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { if (ret) { PyTuple_SET_ITEM(ret, 0, PyInt_FromLong(flag)); #if wxUSE_UNICODE - PyTuple_SET_ITEM(ret, 1, PyUnicode_FromUnicode(str.c_str(), str.Len())); + PyTuple_SET_ITEM(ret, 1, PyUnicode_FromWideChar(str.c_str(), str.Len())); #else PyTuple_SET_ITEM(ret, 1, PyString_FromStringAndSize(str.c_str(), str.Len())); #endif @@ -531,7 +530,7 @@ static PyObject *_wrap_wxConfigBase_GetAppName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -778,7 +777,7 @@ static PyObject *_wrap_wxConfigBase_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -815,7 +814,7 @@ static PyObject *_wrap_wxConfigBase_GetVendorName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1001,7 +1000,7 @@ static PyObject *_wrap_wxConfigBase_Read(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1734,7 +1733,7 @@ static PyObject *_wrap_wxConfigBase_ExpandEnvVars(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2182,7 +2181,7 @@ static PyObject *_wrap_wxDateTime_GetMonthName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2211,7 +2210,7 @@ static PyObject *_wrap_wxDateTime_GetWeekDayName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2346,6 +2345,26 @@ static PyObject *_wrap_wxDateTime_Now(PyObject *self, PyObject *args, PyObject * return _resultobj; } +static PyObject *_wrap_wxDateTime_UNow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxDateTime * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxDateTime_UNow",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxDateTime (wxDateTime::UNow()); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxDateTime_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + static PyObject *_wrap_wxDateTime_Today(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; @@ -3025,18 +3044,19 @@ static PyObject *_wrap_wxDateTime_SetMillisecond(PyObject *self, PyObject *args, return _resultobj; } -#define wxDateTime_SetToWeekDayInSameWeek(_swigobj,_swigarg0) (_swigobj->SetToWeekDayInSameWeek(_swigarg0)) +#define wxDateTime_SetToWeekDayInSameWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetToWeekDayInSameWeek(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::WeekDay _arg1; + wxDateTime::WeekFlags _arg2 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","weekday", NULL }; + char *_kwnames[] = { "self","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDateTime_SetToWeekDayInSameWeek",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxDateTime_SetToWeekDayInSameWeek",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3047,7 +3067,7 @@ static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxDateTime & _result_ref = wxDateTime_SetToWeekDayInSameWeek(_arg0,_arg1); + wxDateTime & _result_ref = wxDateTime_SetToWeekDayInSameWeek(_arg0,_arg1,_arg2); _result = (wxDateTime *) &_result_ref; wxPyEndAllowThreads(__tstate); @@ -3062,18 +3082,19 @@ static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObjec return _resultobj; } -#define wxDateTime_GetWeekDayInSameWeek(_swigobj,_swigarg0) (_swigobj->GetWeekDayInSameWeek(_swigarg0)) +#define wxDateTime_GetWeekDayInSameWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetWeekDayInSameWeek(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDateTime_GetWeekDayInSameWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::WeekDay _arg1; + wxDateTime::WeekFlags _arg2 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","weekday", NULL }; + char *_kwnames[] = { "self","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDateTime_GetWeekDayInSameWeek",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxDateTime_GetWeekDayInSameWeek",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3084,7 +3105,7 @@ static PyObject *_wrap_wxDateTime_GetWeekDayInSameWeek(PyObject *self, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxDateTime (wxDateTime_GetWeekDayInSameWeek(_arg0,_arg1)); + _result = new wxDateTime (wxDateTime_GetWeekDayInSameWeek(_arg0,_arg1,_arg2)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3325,18 +3346,19 @@ static PyObject *_wrap_wxDateTime_GetLastWeekDay(PyObject *self, PyObject *args, return _resultobj; } -#define wxDateTime_SetToTheWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetToTheWeek(_swigarg0,_swigarg1)) +#define wxDateTime_SetToTheWeek(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->SetToTheWeek(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxDateTime * _arg0; wxDateTime::wxDateTime_t _arg1; wxDateTime::WeekDay _arg2 = (wxDateTime::WeekDay ) wxDateTime::Mon; + wxDateTime::WeekFlags _arg3 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","numWeek","weekday", NULL }; + char *_kwnames[] = { "self","numWeek","weekday","flags", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|i:wxDateTime_SetToTheWeek",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|ii:wxDateTime_SetToTheWeek",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3347,7 +3369,7 @@ static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, P } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDateTime_SetToTheWeek(_arg0,_arg1,_arg2); + _result = (bool )wxDateTime_SetToTheWeek(_arg0,_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3355,19 +3377,20 @@ static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, P return _resultobj; } -#define wxDateTime_GetWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetWeek(_swigarg0,_swigarg1)) +#define wxDateTime_GetWeek(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->GetWeek(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDateTime_GetWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::wxDateTime_t _arg1; wxDateTime::WeekDay _arg2 = (wxDateTime::WeekDay ) wxDateTime::Mon; + wxDateTime::WeekFlags _arg3 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","numWeek","weekday", NULL }; + char *_kwnames[] = { "self","numWeek","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|i:wxDateTime_GetWeek",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|ii:wxDateTime_GetWeek",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3378,7 +3401,7 @@ static PyObject *_wrap_wxDateTime_GetWeek(PyObject *self, PyObject *args, PyObje } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxDateTime (wxDateTime_GetWeek(_arg0,_arg1,_arg2)); + _result = new wxDateTime (wxDateTime_GetWeek(_arg0,_arg1,_arg2,_arg3)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -4369,8 +4392,7 @@ static PyObject *_wrap_wxDateTime_IsEqualTo(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEqualTo. Expected _wxDateTime_p."); return NULL; } @@ -4406,8 +4428,7 @@ static PyObject *_wrap_wxDateTime_IsEarlierThan(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEarlierThan. Expected _wxDateTime_p."); return NULL; } @@ -4443,8 +4464,7 @@ static PyObject *_wrap_wxDateTime_IsLaterThan(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsLaterThan. Expected _wxDateTime_p."); return NULL; } @@ -4482,15 +4502,13 @@ static PyObject *_wrap_wxDateTime_IsStrictlyBetween(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsStrictlyBetween. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsStrictlyBetween. Expected _wxDateTime_p."); return NULL; } @@ -4528,15 +4546,13 @@ static PyObject *_wrap_wxDateTime_IsBetween(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsBetween. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsBetween. Expected _wxDateTime_p."); return NULL; } @@ -4572,8 +4588,7 @@ static PyObject *_wrap_wxDateTime_IsSameDate(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsSameDate. Expected _wxDateTime_p."); return NULL; } @@ -4609,8 +4624,7 @@ static PyObject *_wrap_wxDateTime_IsSameTime(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsSameTime. Expected _wxDateTime_p."); return NULL; } @@ -4648,15 +4662,13 @@ static PyObject *_wrap_wxDateTime_IsEqualUpTo(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEqualUpTo. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsEqualUpTo. Expected _wxTimeSpan_p."); return NULL; } @@ -4693,8 +4705,7 @@ static PyObject *_wrap_wxDateTime_AddTS(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_AddTS. Expected _wxTimeSpan_p."); return NULL; } @@ -4738,8 +4749,7 @@ static PyObject *_wrap_wxDateTime_AddDS(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_AddDS. Expected _wxDateSpan_p."); return NULL; } @@ -4783,8 +4793,7 @@ static PyObject *_wrap_wxDateTime_SubtractTS(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_SubtractTS. Expected _wxTimeSpan_p."); return NULL; } @@ -4828,8 +4837,7 @@ static PyObject *_wrap_wxDateTime_SubtractDS(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_SubtractDS. Expected _wxDateSpan_p."); return NULL; } @@ -4873,8 +4881,7 @@ static PyObject *_wrap_wxDateTime_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_Subtract. Expected _wxDateTime_p."); return NULL; } @@ -4912,8 +4919,7 @@ static PyObject *_wrap_wxDateTime___add__TS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___add__TS. Expected _wxTimeSpan_p."); return NULL; } @@ -4951,8 +4957,7 @@ static PyObject *_wrap_wxDateTime___add__DS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___add__DS. Expected _wxDateSpan_p."); return NULL; } @@ -4990,8 +4995,7 @@ static PyObject *_wrap_wxDateTime___sub__DT(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__DT. Expected _wxDateTime_p."); return NULL; } @@ -5029,8 +5033,7 @@ static PyObject *_wrap_wxDateTime___sub__TS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__TS. Expected _wxTimeSpan_p."); return NULL; } @@ -5068,8 +5071,7 @@ static PyObject *_wrap_wxDateTime___sub__DS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__DS. Expected _wxDateSpan_p."); return NULL; } @@ -5214,8 +5216,7 @@ static PyObject *_wrap_wxDateTime_ParseFormat(PyObject *self, PyObject *args, Py return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDateTime_ParseFormat. Expected _wxDateTime_p."); return NULL; } @@ -5413,7 +5414,7 @@ static PyObject *_wrap_wxDateTime_Format(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5457,7 +5458,7 @@ static PyObject *_wrap_wxDateTime_FormatDate(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5494,7 +5495,7 @@ static PyObject *_wrap_wxDateTime_FormatTime(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5531,7 +5532,7 @@ static PyObject *_wrap_wxDateTime_FormatISODate(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5568,7 +5569,7 @@ static PyObject *_wrap_wxDateTime_FormatISOTime(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5864,8 +5865,7 @@ static PyObject *_wrap_wxTimeSpan_Add(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_Add. Expected _wxTimeSpan_p."); return NULL; } @@ -5909,8 +5909,7 @@ static PyObject *_wrap_wxTimeSpan_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_Subtract. Expected _wxTimeSpan_p."); return NULL; } @@ -6057,8 +6056,7 @@ static PyObject *_wrap_wxTimeSpan___add__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan___add__. Expected _wxTimeSpan_p."); return NULL; } @@ -6096,8 +6094,7 @@ static PyObject *_wrap_wxTimeSpan___sub__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan___sub__. Expected _wxTimeSpan_p."); return NULL; } @@ -6352,8 +6349,7 @@ static PyObject *_wrap_wxTimeSpan_IsEqualTo(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsEqualTo. Expected _wxTimeSpan_p."); return NULL; } @@ -6389,8 +6385,7 @@ static PyObject *_wrap_wxTimeSpan_IsLongerThan(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsLongerThan. Expected _wxTimeSpan_p."); return NULL; } @@ -6426,8 +6421,7 @@ static PyObject *_wrap_wxTimeSpan_IsShorterThan(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsShorterThan. Expected _wxTimeSpan_p."); return NULL; } @@ -6666,7 +6660,7 @@ static PyObject *_wrap_wxTimeSpan_Format(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7213,8 +7207,7 @@ static PyObject *_wrap_wxDateSpan_Add(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan_Add. Expected _wxDateSpan_p."); return NULL; } @@ -7258,8 +7251,7 @@ static PyObject *_wrap_wxDateSpan_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan_Subtract. Expected _wxDateSpan_p."); return NULL; } @@ -7376,8 +7368,7 @@ static PyObject *_wrap_wxDateSpan___add__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan___add__. Expected _wxDateSpan_p."); return NULL; } @@ -7415,8 +7406,7 @@ static PyObject *_wrap_wxDateSpan___sub__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan___sub__. Expected _wxDateSpan_p."); return NULL; } @@ -7677,6 +7667,7 @@ static PyMethodDef utilscMethods[] = { { "new_wxDateTimeFromTimeT", (PyCFunction) _wrap_new_wxDateTimeFromTimeT, METH_VARARGS | METH_KEYWORDS }, { "new_wxDateTime", (PyCFunction) _wrap_new_wxDateTime, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_Today", (PyCFunction) _wrap_wxDateTime_Today, METH_VARARGS | METH_KEYWORDS }, + { "wxDateTime_UNow", (PyCFunction) _wrap_wxDateTime_UNow, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_Now", (PyCFunction) _wrap_wxDateTime_Now, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_GetEndDST", (PyCFunction) _wrap_wxDateTime_GetEndDST, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_GetBeginDST", (PyCFunction) _wrap_wxDateTime_GetBeginDST, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/utils.py b/wxPython/src/gtk/utils.py index da54031f64..5dc18f722d 100644 --- a/wxPython/src/gtk/utils.py +++ b/wxPython/src/gtk/utils.py @@ -1,6 +1,6 @@ # This file was created automatically by SWIG. import utilsc -import string +import wx class wxConfigBasePtr : Type_Unknown = utilsc.wxConfigBase_Type_Unknown Type_String = utilsc.wxConfigBase_Type_String @@ -10,9 +10,12 @@ class wxConfigBasePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxConfigBase(self) + def __del__(self, delfunc=utilsc.delete_wxConfigBase): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def DeleteAll(self, *_args, **_kwargs): val = apply(utilsc.wxConfigBase_DeleteAll,(self,) + _args, _kwargs) return val @@ -137,9 +140,12 @@ class wxConfigPtr(wxConfigBasePtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxConfig(self) + def __del__(self, delfunc=utilsc.delete_wxConfig): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxConfig instance at %s>" % (self.this,) class wxConfig(wxConfigPtr): @@ -154,9 +160,12 @@ class wxFileConfigPtr(wxConfigBasePtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxFileConfig(self) + def __del__(self, delfunc=utilsc.delete_wxFileConfig): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxFileConfig instance at %s>" % (self.this,) class wxFileConfig(wxFileConfigPtr): @@ -262,9 +271,12 @@ class wxDateTimePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxDateTime(self) + def __del__(self, delfunc=utilsc.delete_wxDateTime): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetToCurrent(self, *_args, **_kwargs): val = apply(utilsc.wxDateTime_SetToCurrent,(self,) + _args, _kwargs) if val: val = wxDateTimePtr(val) @@ -551,17 +563,17 @@ class wxDateTimePtr : return "<C wxDateTime instance at %s>" % (self.this,) def __add__(self, other): - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__add__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__add__DS(other) raise TypeError, 'Invalid r.h.s. type for __add__' def __sub__(self, other): - if string.find(other.this, 'wxDateTime') != -1: + if isinstance(other, wxDateTimePtr): return self.__sub__DT(other) - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__sub__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__sub__DS(other) raise TypeError, 'Invalid r.h.s. type for __sub__' @@ -603,9 +615,12 @@ class wxTimeSpanPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxTimeSpan(self) + def __del__(self, delfunc=utilsc.delete_wxTimeSpan): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Add(self, *_args, **_kwargs): val = apply(utilsc.wxTimeSpan_Add,(self,) + _args, _kwargs) if val: val = wxTimeSpanPtr(val) @@ -702,9 +717,12 @@ class wxDateSpanPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxDateSpan(self) + def __del__(self, delfunc=utilsc.delete_wxDateSpan): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetYears(self, *_args, **_kwargs): val = apply(utilsc.wxDateSpan_SetYears,(self,) + _args, _kwargs) if val: val = wxDateSpanPtr(val) @@ -854,6 +872,11 @@ def wxDateTime_Now(*_args, **_kwargs): if val: val = wxDateTimePtr(val); val.thisown = 1 return val +def wxDateTime_UNow(*_args, **_kwargs): + val = apply(utilsc.wxDateTime_UNow,_args,_kwargs) + if val: val = wxDateTimePtr(val); val.thisown = 1 + return val + def wxDateTime_Today(*_args, **_kwargs): val = apply(utilsc.wxDateTime_Today,_args,_kwargs) if val: val = wxDateTimePtr(val); val.thisown = 1 diff --git a/wxPython/src/gtk/windows.cpp b/wxPython/src/gtk/windows.cpp index c89603067a..be97b5e797 100644 --- a/wxPython/src/gtk/windows.cpp +++ b/wxPython/src/gtk/windows.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -312,8 +311,7 @@ static PyObject *_wrap_wxEvtHandler_ProcessEvent(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEvtHandler_ProcessEvent. Expected _wxEvent_p."); return NULL; } @@ -348,8 +346,7 @@ static PyObject *_wrap_wxEvtHandler_AddPendingEvent(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEvtHandler_AddPendingEvent. Expected _wxEvent_p."); return NULL; } @@ -1549,6 +1546,34 @@ static PyObject *_wrap_wxWindow_Enable(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxWindow_Disable(_swigobj) (_swigobj->Disable()) +static PyObject *_wrap_wxWindow_Disable(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_Disable",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_Disable. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxWindow_Disable(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxWindow_FindWindowById(_swigobj,_swigarg0) (_swigobj->FindWindow(_swigarg0)) static PyObject *_wrap_wxWindow_FindWindowById(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1645,6 +1670,34 @@ static PyObject *_wrap_wxWindow_Fit(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } +#define wxWindow_FitInside(_swigobj) (_swigobj->FitInside()) +static PyObject *_wrap_wxWindow_FitInside(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_FitInside",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_FitInside. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxWindow_FitInside(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxWindow_GetBackgroundColour(_swigobj) (_swigobj->GetBackgroundColour()) static PyObject *_wrap_wxWindow_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2165,7 +2218,7 @@ static PyObject *_wrap_wxWindow_GetLabel(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2241,7 +2294,7 @@ static PyObject *_wrap_wxWindow_GetName(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2726,7 +2779,7 @@ static PyObject *_wrap_wxWindow_GetTitle(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3218,63 +3271,6 @@ static PyObject *_wrap_wxWindow_Layout(PyObject *self, PyObject *args, PyObject return _resultobj; } -#define wxWindow_LoadFromResource(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->LoadFromResource(_swigarg0,_swigarg1,_swigarg2)) -static PyObject *_wrap_wxWindow_LoadFromResource(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxWindow * _arg0; - wxWindow * _arg1; - wxString * _arg2; - wxResourceTable * _arg3 = (wxResourceTable *) NULL; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - PyObject * _obj2 = 0; - PyObject * _argo3 = 0; - char *_kwnames[] = { "self","parent","resourceName","resourceTable", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO|O:wxWindow_LoadFromResource",_kwnames,&_argo0,&_argo1,&_obj2,&_argo3)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_LoadFromResource. Expected _wxWindow_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_LoadFromResource. Expected _wxWindow_p."); - return NULL; - } - } -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} - if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxWindow_LoadFromResource. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxWindow_LoadFromResource(_arg0,_arg1,*_arg2,_arg3); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj2) - delete _arg2; -} - return _resultobj; -} - #define wxWindow_Lower(_swigobj) (_swigobj->Lower()) static PyObject *_wrap_wxWindow_Lower(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4208,8 +4204,7 @@ static PyObject *_wrap_wxWindow_SetFont(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetFont. Expected _wxFont_p."); return NULL; } @@ -4754,6 +4749,36 @@ static PyObject *_wrap_wxWindow_GetVirtualSizeTuple(PyObject *self, PyObject *ar return _resultobj; } +#define wxWindow_GetBestVirtualSize(_swigobj) (_swigobj->GetBestVirtualSize()) +static PyObject *_wrap_wxWindow_GetBestVirtualSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSize * _result; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetBestVirtualSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetBestVirtualSize. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxSize (wxWindow_GetBestVirtualSize(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxWindow_SetClientSizeWH(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetClientSize(_swigarg0,_swigarg1)) static PyObject *_wrap_wxWindow_SetClientSizeWH(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4841,8 +4866,7 @@ static PyObject *_wrap_wxWindow_SetCursor(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -5618,8 +5642,7 @@ static PyObject *_wrap_wxWindow_SetValidator(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetValidator. Expected _wxValidator_p."); return NULL; } @@ -5767,6 +5790,36 @@ static PyObject *_wrap_wxWindow_GetMaxSize(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxWindow_GetAdjustedBestSize(_swigobj) (_swigobj->GetAdjustedBestSize()) +static PyObject *_wrap_wxWindow_GetAdjustedBestSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSize * _result; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetAdjustedBestSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetAdjustedBestSize. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxSize (wxWindow_GetAdjustedBestSize(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxWindow_SetCaret(_swigobj,_swigarg0) (_swigobj->SetCaret(_swigarg0)) static PyObject *_wrap_wxWindow_SetCaret(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -5949,7 +6002,7 @@ static PyObject *_wrap_wxWindow_GetHelpText(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6302,8 +6355,7 @@ static PyObject *_wrap_wxWindow_SetAcceleratorTable(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorTable_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorTable_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetAcceleratorTable. Expected _wxAcceleratorTable_p."); return NULL; } @@ -7183,8 +7235,7 @@ static PyObject *_wrap_wxScrolledWindow_PrepareDC(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxScrolledWindow_PrepareDC. Expected _wxDC_p."); return NULL; } @@ -8882,7 +8933,7 @@ static PyObject *_wrap_wxMenu_GetTitle(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8959,7 +9010,7 @@ static PyObject *_wrap_wxMenu_GetLabel(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9037,7 +9088,7 @@ static PyObject *_wrap_wxMenu_GetHelpString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9978,6 +10029,35 @@ static PyObject *_wrap_wxMenuBar_EnableTop(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxMenuBar_IsEnabledTop(_swigobj,_swigarg0) (_swigobj->IsEnabledTop(_swigarg0)) +static PyObject *_wrap_wxMenuBar_IsEnabledTop(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxMenuBar * _arg0; + size_t _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pos", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsEnabledTop",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsEnabledTop. Expected _wxMenuBar_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxMenuBar_IsEnabledTop(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxMenuBar_SetLabelTop(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetLabelTop(_swigarg0,_swigarg1)) static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -10045,7 +10125,7 @@ static PyObject *_wrap_wxMenuBar_GetLabelTop(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10363,7 +10443,7 @@ static PyObject *_wrap_wxMenuBar_GetLabel(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10441,7 +10521,7 @@ static PyObject *_wrap_wxMenuBar_GetHelpString(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10708,7 +10788,7 @@ static PyObject *_wrap_wxMenuItem_GetLabel(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10746,7 +10826,7 @@ static PyObject *_wrap_wxMenuItem_GetText(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11146,7 +11226,7 @@ static PyObject *_wrap_wxMenuItem_GetHelp(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11249,7 +11329,7 @@ static PyObject *_wrap_wxMenuItem_GetLabelFromText(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11284,8 +11364,7 @@ static PyObject *_wrap_wxMenuItem_SetBitmap(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -11377,6 +11456,7 @@ static PyMethodDef windowscMethods[] = { { "wxMenuBar_FindMenu", (PyCFunction) _wrap_wxMenuBar_FindMenu, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_GetLabelTop", (PyCFunction) _wrap_wxMenuBar_GetLabelTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_SetLabelTop", (PyCFunction) _wrap_wxMenuBar_SetLabelTop, METH_VARARGS | METH_KEYWORDS }, + { "wxMenuBar_IsEnabledTop", (PyCFunction) _wrap_wxMenuBar_IsEnabledTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_EnableTop", (PyCFunction) _wrap_wxMenuBar_EnableTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_Remove", (PyCFunction) _wrap_wxMenuBar_Remove, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_Replace", (PyCFunction) _wrap_wxMenuBar_Replace, METH_VARARGS | METH_KEYWORDS }, @@ -11491,6 +11571,7 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_Freeze", (PyCFunction) _wrap_wxWindow_Freeze, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetCaret", (PyCFunction) _wrap_wxWindow_GetCaret, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetCaret", (PyCFunction) _wrap_wxWindow_SetCaret, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_GetAdjustedBestSize", (PyCFunction) _wrap_wxWindow_GetAdjustedBestSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetMaxSize", (PyCFunction) _wrap_wxWindow_GetMaxSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBestSize", (PyCFunction) _wrap_wxWindow_GetBestSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetDropTarget", (PyCFunction) _wrap_wxWindow_GetDropTarget, METH_VARARGS | METH_KEYWORDS }, @@ -11523,6 +11604,7 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_SetCursor", (PyCFunction) _wrap_wxWindow_SetCursor, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetClientSize", (PyCFunction) _wrap_wxWindow_SetClientSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetClientSizeWH", (PyCFunction) _wrap_wxWindow_SetClientSizeWH, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_GetBestVirtualSize", (PyCFunction) _wrap_wxWindow_GetBestVirtualSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetVirtualSizeTuple", (PyCFunction) _wrap_wxWindow_GetVirtualSizeTuple, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetVirtualSize", (PyCFunction) _wrap_wxWindow_GetVirtualSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetVirtualSizeWH", (PyCFunction) _wrap_wxWindow_SetVirtualSizeWH, METH_VARARGS | METH_KEYWORDS }, @@ -11565,7 +11647,6 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_MoveXY", (PyCFunction) _wrap_wxWindow_MoveXY, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_MakeModal", (PyCFunction) _wrap_wxWindow_MakeModal, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Lower", (PyCFunction) _wrap_wxWindow_Lower, METH_VARARGS | METH_KEYWORDS }, - { "wxWindow_LoadFromResource", (PyCFunction) _wrap_wxWindow_LoadFromResource, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Layout", (PyCFunction) _wrap_wxWindow_Layout, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsTopLevel", (PyCFunction) _wrap_wxWindow_IsTopLevel, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsShown", (PyCFunction) _wrap_wxWindow_IsShown, METH_VARARGS | METH_KEYWORDS }, @@ -11613,9 +11694,11 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_GetChildren", (PyCFunction) _wrap_wxWindow_GetChildren, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBorder", (PyCFunction) _wrap_wxWindow_GetBorder, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBackgroundColour", (PyCFunction) _wrap_wxWindow_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_FitInside", (PyCFunction) _wrap_wxWindow_FitInside, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Fit", (PyCFunction) _wrap_wxWindow_Fit, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_FindWindowByName", (PyCFunction) _wrap_wxWindow_FindWindowByName, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_FindWindowById", (PyCFunction) _wrap_wxWindow_FindWindowById, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_Disable", (PyCFunction) _wrap_wxWindow_Disable, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Enable", (PyCFunction) _wrap_wxWindow_Enable, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsBeingDeleted", (PyCFunction) _wrap_wxWindow_IsBeingDeleted, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_DestroyChildren", (PyCFunction) _wrap_wxWindow_DestroyChildren, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/gtk/windows.py b/wxPython/src/gtk/windows.py index 757dd2a53b..de800237a3 100644 --- a/wxPython/src/gtk/windows.py +++ b/wxPython/src/gtk/windows.py @@ -162,6 +162,9 @@ class wxWindowPtr(wxEvtHandlerPtr): def Enable(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Enable,(self,) + _args, _kwargs) return val + def Disable(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_Disable,(self,) + _args, _kwargs) + return val def FindWindowById(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_FindWindowById,(self,) + _args, _kwargs) return val @@ -171,6 +174,9 @@ class wxWindowPtr(wxEvtHandlerPtr): def Fit(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Fit,(self,) + _args, _kwargs) return val + def FitInside(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_FitInside,(self,) + _args, _kwargs) + return val def GetBackgroundColour(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_GetBackgroundColour,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -323,9 +329,6 @@ class wxWindowPtr(wxEvtHandlerPtr): def Layout(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Layout,(self,) + _args, _kwargs) return val - def LoadFromResource(self, *_args, **_kwargs): - val = apply(windowsc.wxWindow_LoadFromResource,(self,) + _args, _kwargs) - return val def Lower(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Lower,(self,) + _args, _kwargs) return val @@ -454,6 +457,10 @@ class wxWindowPtr(wxEvtHandlerPtr): def GetVirtualSizeTuple(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_GetVirtualSizeTuple,(self,) + _args, _kwargs) return val + def GetBestVirtualSize(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_GetBestVirtualSize,(self,) + _args, _kwargs) + if val: val = wxSizePtr(val) ; val.thisown = 1 + return val def SetClientSizeWH(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_SetClientSizeWH,(self,) + _args, _kwargs) return val @@ -561,6 +568,10 @@ class wxWindowPtr(wxEvtHandlerPtr): val = apply(windowsc.wxWindow_GetMaxSize,(self,) + _args, _kwargs) if val: val = wxSizePtr(val) ; val.thisown = 1 return val + def GetAdjustedBestSize(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_GetAdjustedBestSize,(self,) + _args, _kwargs) + if val: val = wxSizePtr(val) ; val.thisown = 1 + return val def SetCaret(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_SetCaret,(self,) + _args, _kwargs) return val @@ -977,6 +988,9 @@ class wxMenuBarPtr(wxWindowPtr): def EnableTop(self, *_args, **_kwargs): val = apply(windowsc.wxMenuBar_EnableTop,(self,) + _args, _kwargs) return val + def IsEnabledTop(self, *_args, **_kwargs): + val = apply(windowsc.wxMenuBar_IsEnabledTop,(self,) + _args, _kwargs) + return val def SetLabelTop(self, *_args, **_kwargs): val = apply(windowsc.wxMenuBar_SetLabelTop,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/windows2.cpp b/wxPython/src/gtk/windows2.cpp index 39082ffe3c..5da5995de3 100644 --- a/wxPython/src/gtk/windows2.cpp +++ b/wxPython/src/gtk/windows2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -346,7 +345,7 @@ static PyObject *_wrap_new_wxNotebookEvent(PyObject *self, PyObject *args, PyObj int _arg1 = (int ) 0; int _arg2 = (int ) -1; int _arg3 = (int ) -1; - char *_kwnames[] = { "commandType","id","nSel","nOldSel", NULL }; + char *_kwnames[] = { "commandType","id","sel","oldSel", NULL }; char _ptemp[128]; self = self; @@ -711,7 +710,7 @@ static PyObject *_wrap_wxNotebook_SetSelection(PyObject *self, PyObject *args, P wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_SetSelection",_kwnames,&_argo0,&_arg1)) @@ -740,7 +739,7 @@ static PyObject *_wrap_wxNotebook_AdvanceSelection(PyObject *self, PyObject *arg bool _arg1 = (bool ) TRUE; PyObject * _argo0 = 0; int tempbool1 = (int) TRUE; - char *_kwnames[] = { "self","bForward", NULL }; + char *_kwnames[] = { "self","forward", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxNotebook_AdvanceSelection",_kwnames,&_argo0,&tempbool1)) @@ -801,7 +800,7 @@ static PyObject *_wrap_wxNotebook_SetPageText(PyObject *self, PyObject *args, Py wxString * _arg2; PyObject * _argo0 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","nPage","strText", NULL }; + char *_kwnames[] = { "self","page","text", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxNotebook_SetPageText",_kwnames,&_argo0,&_arg1,&_obj2)) @@ -839,7 +838,7 @@ static PyObject *_wrap_wxNotebook_GetPageText(PyObject *self, PyObject *args, Py wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPageText",_kwnames,&_argo0,&_arg1)) @@ -859,7 +858,7 @@ static PyObject *_wrap_wxNotebook_GetPageText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -979,7 +978,7 @@ static PyObject *_wrap_wxNotebook_GetPageImage(PyObject *self, PyObject *args, P wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPageImage",_kwnames,&_argo0,&_arg1)) @@ -1009,7 +1008,7 @@ static PyObject *_wrap_wxNotebook_SetPageImage(PyObject *self, PyObject *args, P int _arg1; int _arg2; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage","nImage", NULL }; + char *_kwnames[] = { "self","page","image", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxNotebook_SetPageImage",_kwnames,&_argo0,&_arg1,&_arg2)) @@ -1138,7 +1137,7 @@ static PyObject *_wrap_wxNotebook_DeletePage(PyObject *self, PyObject *args, PyO wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_DeletePage",_kwnames,&_argo0,&_arg1)) @@ -1167,7 +1166,7 @@ static PyObject *_wrap_wxNotebook_RemovePage(PyObject *self, PyObject *args, PyO wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_RemovePage",_kwnames,&_argo0,&_arg1)) @@ -1229,7 +1228,7 @@ static PyObject *_wrap_wxNotebook_AddPage(PyObject *self, PyObject *args, PyObje PyObject * _argo0 = 0; PyObject * _argo1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pPage","strText","bSelect","imageId", NULL }; + char *_kwnames[] = { "self","page","text","select","imageId", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO|ii:wxNotebook_AddPage",_kwnames,&_argo0,&_argo1,&_obj2,&_arg3,&_arg4)) @@ -1281,7 +1280,7 @@ static PyObject *_wrap_wxNotebook_InsertPage(PyObject *self, PyObject *args, PyO PyObject * _argo2 = 0; PyObject * _obj3 = 0; int tempbool4 = (int) FALSE; - char *_kwnames[] = { "self","nPage","pPage","strText","bSelect","imageId", NULL }; + char *_kwnames[] = { "self","page","page","text","select","imageId", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO|ii:wxNotebook_InsertPage",_kwnames,&_argo0,&_arg1,&_argo2,&_obj3,&tempbool4,&_arg5)) @@ -1327,7 +1326,7 @@ static PyObject *_wrap_wxNotebook_GetPage(PyObject *self, PyObject *args, PyObje wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPage",_kwnames,&_argo0,&_arg1)) @@ -3254,8 +3253,7 @@ static PyObject *_wrap_new_wxPyControl(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxPyControl. Expected _wxValidator_p."); return NULL; } diff --git a/wxPython/src/gtk/windows3.cpp b/wxPython/src/gtk/windows3.cpp index e605e79535..4fe2badf76 100644 --- a/wxPython/src/gtk/windows3.cpp +++ b/wxPython/src/gtk/windows3.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/src/gtk/windows3.py b/wxPython/src/gtk/windows3.py index 994e73cca0..c7a571f564 100644 --- a/wxPython/src/gtk/windows3.py +++ b/wxPython/src/gtk/windows3.py @@ -246,9 +246,12 @@ class wxLayoutAlgorithmPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,windows3c=windows3c): - if self.thisown == 1 : - windows3c.delete_wxLayoutAlgorithm(self) + def __del__(self, delfunc=windows3c.delete_wxLayoutAlgorithm): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def LayoutMDIFrame(self, *_args, **_kwargs): val = apply(windows3c.wxLayoutAlgorithm_LayoutMDIFrame,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/gtk/wizard.cpp b/wxPython/src/gtk/wizard.cpp index 013fc0e23c..fedb5d0455 100644 --- a/wxPython/src/gtk/wizard.cpp +++ b/wxPython/src/gtk/wizard.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -359,8 +358,7 @@ static PyObject *_wrap_wxWizardPage_Create(PyObject *self, PyObject *args, PyObj } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxWizardPage_Create. Expected _wxBitmap_p."); return NULL; } @@ -636,8 +634,7 @@ static PyObject *_wrap_wxPyWizardPage_Create(PyObject *self, PyObject *args, PyO } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxPyWizardPage_Create. Expected _wxBitmap_p."); return NULL; } @@ -1382,8 +1379,7 @@ static PyObject *_wrap_new_wxWizardPageSimple(PyObject *self, PyObject *args, Py } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxWizardPageSimple. Expected _wxBitmap_p."); return NULL; } @@ -1479,8 +1475,7 @@ static PyObject *_wrap_wxWizardPageSimple_Create(PyObject *self, PyObject *args, } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxWizardPageSimple_Create. Expected _wxBitmap_p."); return NULL; } @@ -1679,8 +1674,7 @@ static PyObject *_wrap_new_wxWizard(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxWizard. Expected _wxBitmap_p."); return NULL; } @@ -1779,8 +1773,7 @@ static PyObject *_wrap_wxWizard_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxWizard_Create. Expected _wxBitmap_p."); return NULL; } @@ -2069,7 +2062,83 @@ static PyObject *_wrap_wxWizard_ShowPage(PyObject *self, PyObject *args, PyObjec return _resultobj; } +#define wxWizard_HasNextPage(_swigobj,_swigarg0) (_swigobj->HasNextPage(_swigarg0)) +static PyObject *_wrap_wxWizard_HasNextPage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxWizard * _arg0; + wxWizardPage * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","page", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWizard_HasNextPage",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWizard_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWizard_HasNextPage. Expected _wxWizard_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWizardPage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWizard_HasNextPage. Expected _wxWizardPage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxWizard_HasNextPage(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxWizard_HasPrevPage(_swigobj,_swigarg0) (_swigobj->HasPrevPage(_swigarg0)) +static PyObject *_wrap_wxWizard_HasPrevPage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxWizard * _arg0; + wxWizardPage * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","page", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWizard_HasPrevPage",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWizard_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWizard_HasPrevPage. Expected _wxWizard_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWizardPage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWizard_HasPrevPage. Expected _wxWizardPage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxWizard_HasPrevPage(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyMethodDef wizardcMethods[] = { + { "wxWizard_HasPrevPage", (PyCFunction) _wrap_wxWizard_HasPrevPage, METH_VARARGS | METH_KEYWORDS }, + { "wxWizard_HasNextPage", (PyCFunction) _wrap_wxWizard_HasNextPage, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_ShowPage", (PyCFunction) _wrap_wxWizard_ShowPage, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_IsRunning", (PyCFunction) _wrap_wxWizard_IsRunning, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_FitToPage", (PyCFunction) _wrap_wxWizard_FitToPage, METH_VARARGS | METH_KEYWORDS }, @@ -2258,6 +2327,7 @@ SWIGEXPORT(void) initwizardc() { PyDict_SetItemString(d,"wxEVT_WIZARD_PAGE_CHANGING", PyInt_FromLong((long) wxEVT_WIZARD_PAGE_CHANGING)); PyDict_SetItemString(d,"wxEVT_WIZARD_CANCEL", PyInt_FromLong((long) wxEVT_WIZARD_CANCEL)); PyDict_SetItemString(d,"wxEVT_WIZARD_HELP", PyInt_FromLong((long) wxEVT_WIZARD_HELP)); + PyDict_SetItemString(d,"wxEVT_WIZARD_FINISHED", PyInt_FromLong((long) wxEVT_WIZARD_FINISHED)); wxClassInfo::CleanUpClasses(); wxClassInfo::InitializeClasses(); diff --git a/wxPython/src/gtk/wizard.py b/wxPython/src/gtk/wizard.py index 391048f193..845cdb939f 100644 --- a/wxPython/src/gtk/wizard.py +++ b/wxPython/src/gtk/wizard.py @@ -32,6 +32,9 @@ def EVT_WIZARD_CANCEL(win, id, func): def EVT_WIZARD_HELP(win, id, func): win.Connect(id, -1, wxEVT_WIZARD_HELP, func) +def EVT_WIZARD_FINISHED(win, id, func): + win.Connect(id, -1, wxEVT_WIZARD_FINISHED, func) + class wxWizardEventPtr(wxNotifyEventPtr): def __init__(self,this): @@ -226,6 +229,12 @@ class wxWizardPtr(wxDialogPtr): def ShowPage(self, *_args, **_kwargs): val = apply(wizardc.wxWizard_ShowPage,(self,) + _args, _kwargs) return val + def HasNextPage(self, *_args, **_kwargs): + val = apply(wizardc.wxWizard_HasNextPage,(self,) + _args, _kwargs) + return val + def HasPrevPage(self, *_args, **_kwargs): + val = apply(wizardc.wxWizard_HasPrevPage,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxWizard instance at %s>" % (self.this,) class wxWizard(wxWizardPtr): @@ -258,6 +267,7 @@ wxEVT_WIZARD_PAGE_CHANGED = wizardc.wxEVT_WIZARD_PAGE_CHANGED wxEVT_WIZARD_PAGE_CHANGING = wizardc.wxEVT_WIZARD_PAGE_CHANGING wxEVT_WIZARD_CANCEL = wizardc.wxEVT_WIZARD_CANCEL wxEVT_WIZARD_HELP = wizardc.wxEVT_WIZARD_HELP +wxEVT_WIZARD_FINISHED = wizardc.wxEVT_WIZARD_FINISHED #-------------- USER INCLUDE ----------------------- @@ -265,3 +275,7 @@ wxEVT_WIZARD_HELP = wizardc.wxEVT_WIZARD_HELP # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxWizardEventPtr = wxWizardEventPtr +wx.wxWizardPagePtr = wxWizardPagePtr +wx.wxPyWizardPagePtr = wxPyWizardPagePtr +wx.wxWizardPageSimplePtr = wxWizardPageSimplePtr +wx.wxWizardPtr = wxWizardPtr diff --git a/wxPython/src/gtk/wx.cpp b/wxPython/src/gtk/wx.cpp index 22c5fa7251..0878d8ce00 100644 --- a/wxPython/src/gtk/wx.cpp +++ b/wxPython/src/gtk/wx.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -666,6 +665,7 @@ static wxPyCoreAPI API = { wxRealPoint_helper, wxRect_helper, wxColour_helper, + wxPoint2DDouble_helper, wxPyCBH_setCallbackInfo, wxPyCBH_findCallback, @@ -909,7 +909,6 @@ static PyObject *_wrap_wxGetApp(PyObject *self, PyObject *args, PyObject *kwargs PyObject * _resultobj; wxPyApp * _result; char *_kwnames[] = { NULL }; - char _ptemp[128]; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxGetApp",_kwnames)) @@ -920,13 +919,7 @@ static PyObject *_wrap_wxGetApp(PyObject *self, PyObject *args, PyObject *kwargs wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} if (_result) { - SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyApp_p"); - _resultobj = Py_BuildValue("s",_ptemp); - } else { - Py_INCREF(Py_None); - _resultobj = Py_None; - } +}{ _resultobj = wxPyMake_wxObject(_result); } return _resultobj; } @@ -1022,6 +1015,44 @@ static PyObject *_wrap_delete_wxPyApp(PyObject *self, PyObject *args, PyObject * return _resultobj; } +#define wxPyApp__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPyApp__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyApp * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxPyApp__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp__setCallbackInfo. Expected _wxPyApp_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxPyApp_GetAppName(_swigobj) (_swigobj->GetAppName()) static PyObject *_wrap_wxPyApp_GetAppName(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1048,7 +1079,7 @@ static PyObject *_wrap_wxPyApp_GetAppName(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1085,7 +1116,7 @@ static PyObject *_wrap_wxPyApp_GetClassName(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1206,7 +1237,7 @@ static PyObject *_wrap_wxPyApp_GetVendorName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1418,9 +1449,9 @@ static PyObject *_wrap_wxPyApp_Yield(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; bool _result; wxPyApp * _arg0; - bool _arg1 = (bool ) (0); + bool _arg1 = (bool ) FALSE; PyObject * _argo0 = 0; - int tempbool1 = (int) (0); + int tempbool1 = (int) FALSE; char *_kwnames[] = { "self","onlyIfNeeded", NULL }; self = self; @@ -1689,7 +1720,323 @@ static PyObject *_wrap_wxPyApp_SetUseBestVisual(PyObject *self, PyObject *args, return _resultobj; } +#define wxPyApp_GetAssertMode(_swigobj) (_swigobj->GetAssertMode()) +static PyObject *_wrap_wxPyApp_GetAssertMode(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + int _result; + wxPyApp * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyApp_GetAssertMode",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_GetAssertMode. Expected _wxPyApp_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (int )wxPyApp_GetAssertMode(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxPyApp_SetAssertMode(_swigobj,_swigarg0) (_swigobj->SetAssertMode(_swigarg0)) +static PyObject *_wrap_wxPyApp_SetAssertMode(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyApp * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","mode", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxPyApp_SetAssertMode",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_SetAssertMode. Expected _wxPyApp_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp_SetAssertMode(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacDefaultEncodingIsPC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacDefaultEncodingIsPC",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPyApp::GetMacDefaultEncodingIsPC(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacSupportPCMenuShortcuts(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacSupportPCMenuShortcuts",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPyApp::GetMacSupportPCMenuShortcuts(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacAboutMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacAboutMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacAboutMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacPreferencesMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacPreferencesMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacPreferencesMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacExitMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacExitMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacExitMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacHelpMenuTitleName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacHelpMenuTitleName",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxString (wxPyApp::GetMacHelpMenuTitleName()); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ +#if wxUSE_UNICODE + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); +#else + _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); +#endif +} +{ + delete _result; +} + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacDefaultEncodingIsPC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _arg0; + int tempbool0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxPyApp_SetMacDefaultEncodingIsPC",_kwnames,&tempbool0)) + return NULL; + _arg0 = (bool ) tempbool0; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacDefaultEncodingIsPC(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacSupportPCMenuShortcuts(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _arg0; + int tempbool0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxPyApp_SetMacSupportPCMenuShortcuts",_kwnames,&tempbool0)) + return NULL; + _arg0 = (bool ) tempbool0; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacSupportPCMenuShortcuts(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacAboutMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacAboutMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacAboutMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacPreferencesMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacPreferencesMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacPreferencesMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacExitMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacExitMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacExitMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacHelpMenuTitleName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _arg0; + PyObject * _obj0 = 0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyApp_SetMacHelpMenuTitleName",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacHelpMenuTitleName(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj0) + delete _arg0; +} + return _resultobj; +} + static PyMethodDef wxcMethods[] = { + { "wxPyApp_SetMacHelpMenuTitleName", (PyCFunction) _wrap_wxPyApp_SetMacHelpMenuTitleName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacExitMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacExitMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacPreferencesMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacPreferencesMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacAboutMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacAboutMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacSupportPCMenuShortcuts", (PyCFunction) _wrap_wxPyApp_SetMacSupportPCMenuShortcuts, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacDefaultEncodingIsPC", (PyCFunction) _wrap_wxPyApp_SetMacDefaultEncodingIsPC, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacHelpMenuTitleName", (PyCFunction) _wrap_wxPyApp_GetMacHelpMenuTitleName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacExitMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacExitMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacPreferencesMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacPreferencesMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacAboutMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacAboutMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacSupportPCMenuShortcuts", (PyCFunction) _wrap_wxPyApp_GetMacSupportPCMenuShortcuts, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacDefaultEncodingIsPC", (PyCFunction) _wrap_wxPyApp_GetMacDefaultEncodingIsPC, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetAssertMode", (PyCFunction) _wrap_wxPyApp_SetAssertMode, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetAssertMode", (PyCFunction) _wrap_wxPyApp_GetAssertMode, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetUseBestVisual", (PyCFunction) _wrap_wxPyApp_SetUseBestVisual, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetVendorName", (PyCFunction) _wrap_wxPyApp_SetVendorName, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetTopWindow", (PyCFunction) _wrap_wxPyApp_SetTopWindow, METH_VARARGS | METH_KEYWORDS }, @@ -1711,6 +2058,7 @@ static PyMethodDef wxcMethods[] = { { "wxPyApp_GetExitOnFrameDelete", (PyCFunction) _wrap_wxPyApp_GetExitOnFrameDelete, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_GetClassName", (PyCFunction) _wrap_wxPyApp_GetClassName, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_GetAppName", (PyCFunction) _wrap_wxPyApp_GetAppName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp__setCallbackInfo", (PyCFunction) _wrap_wxPyApp__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "delete_wxPyApp", (PyCFunction) _wrap_delete_wxPyApp, METH_VARARGS | METH_KEYWORDS }, { "new_wxPyApp", (PyCFunction) _wrap_new_wxPyApp, METH_VARARGS | METH_KEYWORDS }, { "wxApp_CleanUp", (PyCFunction) _wrap_wxApp_CleanUp, METH_VARARGS | METH_KEYWORDS }, @@ -1962,6 +2310,7 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxRA_SPECIFY_ROWS", PyInt_FromLong((long) wxRA_SPECIFY_ROWS)); PyDict_SetItemString(d,"wxRA_SPECIFY_COLS", PyInt_FromLong((long) wxRA_SPECIFY_COLS)); PyDict_SetItemString(d,"wxRB_GROUP", PyInt_FromLong((long) wxRB_GROUP)); + PyDict_SetItemString(d,"wxRB_SINGLE", PyInt_FromLong((long) wxRB_SINGLE)); PyDict_SetItemString(d,"wxGA_PROGRESSBAR", PyInt_FromLong((long) wxGA_PROGRESSBAR)); PyDict_SetItemString(d,"wxGA_HORIZONTAL", PyInt_FromLong((long) wxGA_HORIZONTAL)); PyDict_SetItemString(d,"wxGA_VERTICAL", PyInt_FromLong((long) wxGA_VERTICAL)); @@ -2483,10 +2832,6 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxHT_WINDOW_HORZ_SCROLLBAR", PyInt_FromLong((long) wxHT_WINDOW_HORZ_SCROLLBAR)); PyDict_SetItemString(d,"wxHT_WINDOW_CORNER", PyInt_FromLong((long) wxHT_WINDOW_CORNER)); PyDict_SetItemString(d,"wxHT_MAX", PyInt_FromLong((long) wxHT_MAX)); - PyDict_SetItemString(d,"FALSE", PyInt_FromLong((long) 0)); - PyDict_SetItemString(d,"false", PyInt_FromLong((long) 0)); - PyDict_SetItemString(d,"TRUE", PyInt_FromLong((long) 1)); - PyDict_SetItemString(d,"true", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxEVT_NULL", PyInt_FromLong((long) wxEVT_NULL)); PyDict_SetItemString(d,"wxEVT_FIRST", PyInt_FromLong((long) wxEVT_FIRST)); PyDict_SetItemString(d,"wxEVT_COMMAND_BUTTON_CLICKED", PyInt_FromLong((long) wxEVT_COMMAND_BUTTON_CLICKED)); @@ -2611,6 +2956,10 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"cvar", SWIG_globals); SWIG_addvarlink(SWIG_globals,"wxDefaultPosition",_wrap_wxDefaultPosition_get, _wrap_wxDefaultPosition_set); SWIG_addvarlink(SWIG_globals,"wxDefaultSize",_wrap_wxDefaultSize_get, _wrap_wxDefaultSize_set); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_SUPPRESS", PyInt_FromLong((long) wxPYAPP_ASSERT_SUPPRESS)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_EXCEPTION", PyInt_FromLong((long) wxPYAPP_ASSERT_EXCEPTION)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_DIALOG", PyInt_FromLong((long) wxPYAPP_ASSERT_DIALOG)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_LOG", PyInt_FromLong((long) wxPYAPP_ASSERT_LOG)); // Make our API structure a CObject so other modules can import it // from this module. @@ -2619,7 +2968,7 @@ SWIGEXPORT(void) initwxc() { Py_XDECREF(v); - __wxPreStart(); // initialize the GUI toolkit, if needed. + __wxPreStart(d); // initialize the GUI toolkit, if needed. // Since these modules are all linked together, initialize them now @@ -2654,7 +3003,7 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxVERSION_NUMBER", PyInt_FromLong((long)wxVERSION_NUMBER )); #if wxUSE_UNICODE wxString tempStr(wxVERSION_STRING); - PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromUnicode(tempStr.c_str(), tempStr.Len())); + PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromWideChar(tempStr.c_str(), tempStr.Len())); #else PyDict_SetItemString(d,"wxVERSION_STRING", PyString_FromString(wxVERSION_STRING)); #endif diff --git a/wxPython/src/gtk/wx.py b/wxPython/src/gtk/wx.py index 627080b5ae..76811ff9d7 100644 --- a/wxPython/src/gtk/wx.py +++ b/wxPython/src/gtk/wx.py @@ -46,9 +46,15 @@ class wxPyAppPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,wxc=wxc): - if self.thisown == 1 : - wxc.delete_wxPyApp(self) + def __del__(self, delfunc=wxc.delete_wxPyApp): + if self.thisown == 1: + try: + delfunc(self) + except: + pass + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp__setCallbackInfo,(self,) + _args, _kwargs) + return val def GetAppName(self, *_args, **_kwargs): val = apply(wxc.wxPyApp_GetAppName,(self,) + _args, _kwargs) return val @@ -112,12 +118,20 @@ class wxPyAppPtr(wxEvtHandlerPtr): def SetUseBestVisual(self, *_args, **_kwargs): val = apply(wxc.wxPyApp_SetUseBestVisual,(self,) + _args, _kwargs) return val + def GetAssertMode(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp_GetAssertMode,(self,) + _args, _kwargs) + return val + def SetAssertMode(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp_SetAssertMode,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxPyApp instance at %s>" % (self.this,) class wxPyApp(wxPyAppPtr): def __init__(self,*_args,**_kwargs): self.this = apply(wxc.new_wxPyApp,_args,_kwargs) self.thisown = 1 + self._setCallbackInfo(self, wxPyApp) + self._setOORInfo(self) @@ -146,11 +160,34 @@ _wxSetDictionary = wxc._wxSetDictionary def wxGetApp(*_args, **_kwargs): val = apply(wxc.wxGetApp,_args,_kwargs) - if val: val = wxPyAppPtr(val) return val wxApp_CleanUp = wxc.wxApp_CleanUp +wxPyApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC + +wxPyApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts + +wxPyApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId + +wxPyApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId + +wxPyApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId + +wxPyApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName + +wxPyApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC + +wxPyApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts + +wxPyApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId + +wxPyApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId + +wxPyApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId + +wxPyApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + #-------------- VARIABLE WRAPPERS ------------------ @@ -271,6 +308,7 @@ wxRA_VERTICAL = wxc.wxRA_VERTICAL wxRA_SPECIFY_ROWS = wxc.wxRA_SPECIFY_ROWS wxRA_SPECIFY_COLS = wxc.wxRA_SPECIFY_COLS wxRB_GROUP = wxc.wxRB_GROUP +wxRB_SINGLE = wxc.wxRB_SINGLE wxGA_PROGRESSBAR = wxc.wxGA_PROGRESSBAR wxGA_HORIZONTAL = wxc.wxGA_HORIZONTAL wxGA_VERTICAL = wxc.wxGA_VERTICAL @@ -792,10 +830,6 @@ wxHT_WINDOW_VERT_SCROLLBAR = wxc.wxHT_WINDOW_VERT_SCROLLBAR wxHT_WINDOW_HORZ_SCROLLBAR = wxc.wxHT_WINDOW_HORZ_SCROLLBAR wxHT_WINDOW_CORNER = wxc.wxHT_WINDOW_CORNER wxHT_MAX = wxc.wxHT_MAX -FALSE = wxc.FALSE -false = wxc.false -TRUE = wxc.TRUE -true = wxc.true wxEVT_NULL = wxc.wxEVT_NULL wxEVT_FIRST = wxc.wxEVT_FIRST wxEVT_COMMAND_BUTTON_CLICKED = wxc.wxEVT_COMMAND_BUTTON_CLICKED @@ -920,13 +954,17 @@ __version__ = wxc.__version__ cvar = wxc.cvar wxDefaultPosition = wxPointPtr(wxc.cvar.wxDefaultPosition) wxDefaultSize = wxSizePtr(wxc.cvar.wxDefaultSize) +wxPYAPP_ASSERT_SUPPRESS = wxc.wxPYAPP_ASSERT_SUPPRESS +wxPYAPP_ASSERT_EXCEPTION = wxc.wxPYAPP_ASSERT_EXCEPTION +wxPYAPP_ASSERT_DIALOG = wxc.wxPYAPP_ASSERT_DIALOG +wxPYAPP_ASSERT_LOG = wxc.wxPYAPP_ASSERT_LOG #-------------- USER INCLUDE ----------------------- #---------------------------------------------------------------------------- # Name: _extra.py -# Purpose: This file is appended to the shadow class file generated +# Purpose: This file is appended to the shadow class file generated # by SWIG. We add some unSWIGable things here. # # Author: Robin Dunn @@ -1057,6 +1095,12 @@ def EVT_WINDOW_CREATE(win, func): def EVT_WINDOW_DESTROY(win, func): win.Connect(-1, -1, wxEVT_DESTROY, func) +def EVT_WINDOW_CREATE_ID(win, id, func): + win.Connect(id, -1, wxEVT_CREATE, func) + +def EVT_WINDOW_DESTROY_ID(win, id, func): + win.Connect(id, -1, wxEVT_DESTROY, func) + def EVT_SET_CURSOR(win, func): win.Connect(-1, -1, wxEVT_SET_CURSOR, func) @@ -1189,7 +1233,7 @@ def EVT_COMMAND_SCROLL(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN, func) win.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK,func) win.Connect(id, -1, wxEVT_SCROLL_THUMBRELEASE,func) - win.Connect(-1, -1, wxEVT_SCROLL_ENDSCROLL, func) + win.Connect(id, -1, wxEVT_SCROLL_ENDSCROLL, func) def EVT_COMMAND_SCROLL_TOP(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_TOP, func) @@ -1513,17 +1557,50 @@ wxColor = wxColour wxNamedColor = wxNamedColour wxPen = wxPyPen wxScrollbar = wxScrollBar +wxPoint2D = wxPoint2DDouble + +wxPyAssertionError = wxc.wxPyAssertionError # backwards compatibility -wxNoRefBitmap = wxBitmap -wxPyDefaultPosition = wxDefaultPosition -wxPyDefaultSize = wxDefaultSize -NULL = None +wxNoRefBitmap = wxBitmap +wxPyDefaultPosition = wxDefaultPosition +wxPyDefaultSize = wxDefaultSize +NULL = None wxSystemSettings_GetSystemColour = wxSystemSettings_GetColour wxSystemSettings_GetSystemFont = wxSystemSettings_GetFont wxSystemSettings_GetSystemMetric = wxSystemSettings_GetMetric + +# workarounds for bad wxRTTI names +__wxPyPtrTypeMap['wxGauge95'] = 'wxGauge' + + + +def NewId(): + import warnings + warnings.warn("Use wxNewId instead", DeprecationWarning, 2) + return wxNewId() + +def RegisterId(ID): + import warnings + warnings.warn("Use wxRegisterId instead", DeprecationWarning, 2) + return wxRegisterId(ID) + + + +# Use Python's bool constants if available, make aliases if not +try: + True +except NameError: + True = 1==1 + False = 1==0 + +# Backwards compaatible +TRUE = true = True +FALSE = false = False + + #---------------------------------------------------------------------- # wxGTK sets the locale when initialized. Doing this at the Python # level should set it up to match what GTK is doing at the C level. @@ -1534,7 +1611,11 @@ if wxPlatform == "__WXGTK__": except: pass - +if wxPlatform == "__WXMSW__": + import os + localedir = os.path.join(os.path.split(__file__)[0], "locale") + wxLocale_AddCatalogLookupPathPrefix(localedir) + del os #---------------------------------------------------------------------- # wxWindows version numbers. wxPython version is in __version__. @@ -1586,6 +1667,18 @@ def wxPyTypeCast(obj, typeStr): theObj.thisown = obj.thisown return theObj +#---------------------------------------------------------------------------- +# An isinstance for Pythons < 2.2 that can check a sequence of class objects +# like the one in 2.2 can. + +def wxPy_isinstance(obj, klasses): + import types + if sys.version[:3] < "2.2" and type(klasses) in [types.TupleType, types.ListType]: + for klass in klasses: + if isinstance(obj, klass): return True + return False + else: + return isinstance(obj, klasses) #---------------------------------------------------------------------------- _wxCallAfterId = None @@ -1611,6 +1704,9 @@ def wxCallAfter(callable, *args, **kw): evt.kw = kw wxPostEvent(app, evt) +# an alias +wxRunLater = wxCallAfter + #---------------------------------------------------------------------- class wxPyDeadObjectError(AttributeError): @@ -1670,7 +1766,7 @@ class wxPyOnDemandOutputWindow: self.text = wxTextCtrl(self.frame, -1, "", style = wxTE_MULTILINE|wxTE_READONLY) self.frame.SetSize(wxSize(450, 300)) - self.frame.Show(true) + self.frame.Show(True) EVT_CLOSE(self.frame, self.OnCloseWindow) self.text.AppendText(str) @@ -1691,12 +1787,17 @@ class wxApp(wxPyApp): error = 'wxApp.error' outputWindowClass = wxPyOnDemandOutputWindow - def __init__(self, redirect=_defRedirect, filename=None): + def __init__(self, redirect=_defRedirect, filename=None, useBestVisual=False): wxPyApp.__init__(self) self.stdioWin = None self.saveStdio = (sys.stdout, sys.stderr) + + # This has to be done before OnInit + self.SetUseBestVisual(useBestVisual) + if redirect: self.RedirectStdio(filename) + # this initializes wxWindows and then calls our OnInit _wxStart(self.OnInit) @@ -1723,7 +1824,7 @@ class wxApp(wxPyApp): if filename: sys.stdout = sys.stderr = open(filename, 'a') else: - self.stdioWin = self.outputWindowClass() # wxPyOnDemandOutputWindow + self.stdioWin = self.outputWindowClass() sys.stdout = sys.stderr = self.stdioWin @@ -1731,6 +1832,21 @@ class wxApp(wxPyApp): sys.stdout, sys.stderr = self.saveStdio +# change from wxPyApp_ to wxApp_ +wxApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC +wxApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts +wxApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId +wxApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId +wxApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId +wxApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName +wxApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC +wxApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts +wxApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId +wxApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId +wxApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId +wxApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + + #---------------------------------------------------------------------------- class wxPySimpleApp(wxApp): @@ -1738,7 +1854,7 @@ class wxPySimpleApp(wxApp): wxApp.__init__(self, flag) def OnInit(self): wxInitAllImageHandlers() - return true + return True class wxPyWidgetTester(wxApp): @@ -1749,11 +1865,11 @@ class wxPyWidgetTester(wxApp): def OnInit(self): self.frame = wxFrame(None, -1, "Widget Tester", pos=(0,0), size=self.size) self.SetTopWindow(self.frame) - return true + return True def SetWidget(self, widgetClass, *args): w = apply(widgetClass, (self.frame,) + args) - self.frame.Show(true) + self.frame.Show(True) #---------------------------------------------------------------------------- # DO NOT hold any other references to this object. This is how we diff --git a/wxPython/src/helpers.cpp b/wxPython/src/helpers.cpp index e317a426be..580f7c235c 100644 --- a/wxPython/src/helpers.cpp +++ b/wxPython/src/helpers.cpp @@ -46,6 +46,7 @@ void WXDLLEXPORT wxEntryCleanup(); wxPyApp* wxPythonApp = NULL; // Global instance of application object bool wxPyDoCleanup = FALSE; +bool wxPyDoingCleanup = FALSE; #ifdef WXP_WITH_THREAD @@ -67,6 +68,11 @@ wxMutex* wxPyTMutex = NULL; #endif +static PyObject* wxPython_dict = NULL; +static PyObject* wxPyPtrTypeMap = NULL; +static PyObject* wxPyAssertionError = NULL; + + #ifdef __WXMSW__ // If building for win32... //---------------------------------------------------------------------- // This gets run when the DLL is loaded. We just need to save a handle. @@ -90,16 +96,19 @@ BOOL WINAPI DllMain( // Classes for implementing the wxp main application shell. //---------------------------------------------------------------------- +IMPLEMENT_ABSTRACT_CLASS(wxPyApp, wxApp); + wxPyApp::wxPyApp() { - SetUseBestVisual(TRUE); + m_assertMode = wxPYAPP_ASSERT_EXCEPTION; } + wxPyApp::~wxPyApp() { } -// This one isn't acutally called... See __wxStart() +// This one isn't acutally called... We fake it with __wxStart() bool wxPyApp::OnInit() { return FALSE; } @@ -126,6 +135,200 @@ int wxPyApp::MainLoop() { } +bool wxPyApp::OnInitGui() { + bool rval=TRUE; + wxApp::OnInitGui(); // in this case always call the base class version + // wxPyBeginBlockThreads(); *** only called from within __wxStart so we already have the GIL + if (wxPyCBH_findCallback(m_myInst, "OnInitGui")) + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); + // wxPyEndBlockThreads(); *** + return rval; +} + + +int wxPyApp::OnExit() { + int rval=0; + wxPyBeginBlockThreads(); + if (wxPyCBH_findCallback(m_myInst, "OnExit")) + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); + wxPyEndBlockThreads(); + wxApp::OnExit(); // in this case always call the base class version + return rval; +} + + +#ifdef __WXDEBUG__ +void wxPyApp::OnAssert(const wxChar *file, + int line, + const wxChar *cond, + const wxChar *msg) { + + // If the OnAssert is overloaded in the Python class then call it... + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "OnAssert"))) { + PyObject* fso = wx2PyString(file); + PyObject* cso = wx2PyString(file); + PyObject* mso; + if (msg != NULL) + mso = wx2PyString(file); + else { + mso = Py_None; Py_INCREF(Py_None); + } + wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OiOO)", fso, line, cso, mso)); + Py_DECREF(fso); + Py_DECREF(cso); + Py_DECREF(mso); + } + wxPyEndBlockThreads(); + + // ...otherwise do our own thing with it + if (! found) { + // ignore it? + if (m_assertMode & wxPYAPP_ASSERT_SUPPRESS) + return; + + // turn it into a Python exception? + if (m_assertMode & wxPYAPP_ASSERT_EXCEPTION) { + wxString buf; + buf.Alloc(4096); + buf.Printf(wxT("C++ assertion \"%s\" failed in %s(%d)"), cond, file, line); + if (msg != NULL) { + buf += wxT(": "); + buf += msg; + } + + // set the exception + wxPyBeginBlockThreads(); + PyObject* s = wx2PyString(buf); + PyErr_SetObject(wxPyAssertionError, s); + Py_DECREF(s); + wxPyEndBlockThreads(); + + // Now when control returns to whatever API wrapper was called from + // Python it should detect that an exception is set and will return + // NULL, signalling the exception to Python. + } + + // Send it to the normal log destination, but only if + // not _DIALOG because it will call this too + if ( (m_assertMode & wxPYAPP_ASSERT_LOG) && !(m_assertMode & wxPYAPP_ASSERT_DIALOG)) { + wxString buf; + buf.Alloc(4096); + buf.Printf(wxT("%s(%d): assert \"%s\" failed"), + file, line, cond); + if (msg != NULL) { + buf += wxT(": "); + buf += msg; + } + wxLogDebug(buf); + } + + // do the normal wx assert dialog? + if (m_assertMode & wxPYAPP_ASSERT_DIALOG) + wxApp::OnAssert(file, line, cond, msg); + } +} +#endif + + +/*static*/ +bool wxPyApp::GetMacDefaultEncodingIsPC() { +#ifdef __WXMAC__ + return s_macDefaultEncodingIsPC; +#else + return 0; +#endif +} + +/*static*/ +bool wxPyApp::GetMacSupportPCMenuShortcuts() { +#ifdef __WXMAC__ + return s_macSupportPCMenuShortcuts; +#else + return 0; +#endif +} + +/*static*/ +long wxPyApp::GetMacAboutMenuItemId() { +#ifdef __WXMAC__ + return s_macAboutMenuItemId; +#else + return 0; +#endif +} + +/*static*/ +long wxPyApp::GetMacPreferencesMenuItemId() { +#ifdef __WXMAC__ + return s_macPreferencesMenuItemId; +#else + return 0; +#endif +} + +/*static*/ +long wxPyApp::GetMacExitMenuItemId() { +#ifdef __WXMAC__ + return s_macExitMenuItemId; +#else + return 0; +#endif +} + +/*static*/ +wxString wxPyApp::GetMacHelpMenuTitleName() { +#ifdef __WXMAC__ + return s_macHelpMenuTitleName; +#else + return wxEmptyString; +#endif +} + +/*static*/ +void wxPyApp::SetMacDefaultEncodingIsPC(bool val) { +#ifdef __WXMAC__ + s_macDefaultEncodingIsPC = val; +#endif +} + +/*static*/ +void wxPyApp::SetMacSupportPCMenuShortcuts(bool val) { +#ifdef __WXMAC__ + s_macSupportPCMenuShortcuts = val; +#endif +} + +/*static*/ +void wxPyApp::SetMacAboutMenuItemId(long val) { +#ifdef __WXMAC__ + s_macAboutMenuItemId = val; +#endif +} + +/*static*/ +void wxPyApp::SetMacPreferencesMenuItemId(long val) { +#ifdef __WXMAC__ + s_macPreferencesMenuItemId = val; +#endif +} + +/*static*/ +void wxPyApp::SetMacExitMenuItemId(long val) { +#ifdef __WXMAC__ + s_macExitMenuItemId = val; +#endif +} + +/*static*/ +void wxPyApp::SetMacHelpMenuTitleName(const wxString& val) { +#ifdef __WXMAC__ + s_macHelpMenuTitleName = val; +#endif +} + + //--------------------------------------------------------------------- //---------------------------------------------------------------------- @@ -170,7 +373,7 @@ static wxChar* wxPyCopyWString(const wxChar *src) // This is where we pick up the first part of the wxEntry functionality... // The rest is in __wxStart and __wxCleanup. This function is called when // wxcmodule is imported. (Before there is a wxApp object.) -void __wxPreStart() +void __wxPreStart(PyObject* moduleDict) { #ifdef __WXMSW__ @@ -185,6 +388,11 @@ void __wxPreStart() wxApp::CheckBuildOptions(wxBuildOptions()); + wxPyAssertionError = PyErr_NewException("wxPython.wxc.wxPyAssertionError", + PyExc_AssertionError, NULL); + PyDict_SetItemString(moduleDict, "wxPyAssertionError", wxPyAssertionError); + + // Bail out if there is already a wxApp created. This means that the // toolkit has already been initialized, as in embedding wxPython in // a C++ wxWindows app, so we don't need to call wxEntryStart. @@ -202,12 +410,7 @@ void __wxPreStart() int x; for(x=0; x<argc; x++) { PyObject *item = PyList_GetItem(sysargv, x); -#if wxUSE_UNICODE - if (PyUnicode_Check(item)) - argv[x] = wxPyCopyCString(PyUnicode_AS_UNICODE(item)); - else -#endif - argv[x] = wxPyCopyCString(PyString_AsString(item)); + argv[x] = wxPyCopyCString(Py2wxString(item)); } argv[argc] = NULL; } @@ -238,12 +441,7 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args) int x; for(x=0; x<argc; x++) { PyObject *pyArg = PyList_GetItem(sysargv, x); -#if wxUSE_UNICODE - if (PyUnicode_Check(pyArg)) - argv[x] = wxPyCopyWString(PyUnicode_AS_UNICODE(pyArg)); - else -#endif - argv[x] = wxPyCopyWString(PyString_AsString(pyArg)); + argv[x] = wxPyCopyWString(Py2wxString(pyArg)); } argv[argc] = NULL; } @@ -256,30 +454,40 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args) // Call the Python App's OnInit function arglist = PyTuple_New(0); result = PyEval_CallObject(onInitFunc, arglist); + Py_DECREF(arglist); if (!result) { // an exception was raised. return NULL; } - if (! PyInt_Check(result)) { + PyObject* pyint = PyNumber_Int(result); + if (! pyint) { PyErr_SetString(PyExc_TypeError, "OnInit should return a boolean value"); - return NULL; + goto error; } - bResult = PyInt_AS_LONG(result); + bResult = PyInt_AS_LONG(pyint); if (! bResult) { PyErr_SetString(PyExc_SystemExit, "OnInit returned FALSE, exiting..."); - return NULL; + goto error; } #ifdef __WXGTK__ wxTheApp->m_initialized = (wxTopLevelWindows.GetCount() > 0); #endif + Py_DECREF(result); + Py_DECREF(pyint); Py_INCREF(Py_None); return Py_None; + + error: + Py_XDECREF(result); + Py_XDECREF(pyint); + return NULL; } void __wxCleanup() { + wxPyDoingCleanup = TRUE; if (wxPyDoCleanup) wxEntryCleanup(); #ifdef WXP_WITH_THREAD @@ -293,9 +501,6 @@ void __wxCleanup() { -static PyObject* wxPython_dict = NULL; -static PyObject* wxPyPtrTypeMap = NULL; - PyObject* __wxSetDictionary(PyObject* /* self */, PyObject* args) { @@ -346,15 +551,20 @@ PyObject* __wxSetDictionary(PyObject* /* self */, PyObject* args) //--------------------------------------------------------------------------- void wxPyClientData_dtor(wxPyClientData* self) { - wxPyBeginBlockThreads(); - Py_DECREF(self->m_obj); - wxPyEndBlockThreads(); + if (! wxPyDoingCleanup) { // Don't do it during cleanup as Python + // may have already garbage collected the object... + wxPyBeginBlockThreads(); + Py_DECREF(self->m_obj); + wxPyEndBlockThreads(); + } } void wxPyUserData_dtor(wxPyUserData* self) { - wxPyBeginBlockThreads(); - Py_DECREF(self->m_obj); - wxPyEndBlockThreads(); + if (! wxPyDoingCleanup) { + wxPyBeginBlockThreads(); + Py_DECREF(self->m_obj); + wxPyEndBlockThreads(); + } } @@ -377,6 +587,8 @@ void wxPyOORClientData_dtor(wxPyOORClientData* self) { Py_INCREF(deadObjectClass); } + // TODO: If wxPyDOingCleanup, should we skip the code below? + // Clear the instance's dictionary, put the name of the old class into the // instance, and then reset the class to be the dead class. if (self->m_obj->ob_refcnt > 1) { // but only if there is more than one reference @@ -412,14 +624,26 @@ void wxPyPtrTypeMap_Add(const char* commonName, const char* ptrName) { PyObject* wxPyClassExists(const wxString& className) { + PyObject* item; + wxString name(className); + char buff[64]; // should always be big enough... + if (!className) return NULL; - char buff[64]; // should always be big enough... - - sprintf(buff, "%sPtr", className.mbc_str()); + // Try the name as-is first + sprintf(buff, "%sPtr", (const char*)name.mbc_str()); PyObject* classobj = PyDict_GetItemString(wxPython_dict, buff); + // if not found see if there is a mapped name for it + if ( ! classobj) { + if ((item = PyDict_GetItemString(wxPyPtrTypeMap, (char*)(const char*)name.mbc_str())) != NULL) { + name = wxString(PyString_AsString(item), *wxConvCurrent); + sprintf(buff, "%sPtr", (const char*)name.mbc_str()); + classobj = PyDict_GetItemString(wxPython_dict, buff); + } + } + return classobj; // returns NULL if not found } @@ -445,8 +669,8 @@ PyObject* wxPyMake_wxObject(wxObject* source, bool checkEvtHandler) { if (! target) { // Otherwise make it the old fashioned way by making a // new shadow object and putting this pointer in it. - wxClassInfo* info = source->GetClassInfo(); - wxChar* name = (wxChar*)info->GetClassName(); + wxClassInfo* info = source->GetClassInfo(); + wxString name = info->GetClassName(); PyObject* klass = wxPyClassExists(name); while (info && !klass) { name = (wxChar*)info->GetBaseClassName1(); @@ -691,13 +915,15 @@ PyObject* wxPyInputStream::read(int size) { // check if we have a real wxInputStream to work with if (!m_wxis) { + wxPyBeginBlockThreads(); PyErr_SetString(PyExc_IOError, "no valid C-wxInputStream"); + wxPyEndBlockThreads(); return NULL; } if (size < 0) { - // read until EOF - while (! m_wxis->Eof()) { + // read while bytes are available on the stream + while ( m_wxis->CanRead() ) { m_wxis->Read(buf.GetAppendBuf(BUFSIZE), BUFSIZE); buf.UngetAppendBuf(m_wxis->LastRead()); } @@ -708,13 +934,16 @@ PyObject* wxPyInputStream::read(int size) { } // error check - if (m_wxis->LastError() == wxSTREAM_READ_ERROR) { + wxPyBeginBlockThreads(); + wxStreamError err = m_wxis->GetLastError(); + if (err != wxSTREAM_NO_ERROR && err != wxSTREAM_EOF) { PyErr_SetString(PyExc_IOError,"IOError in wxInputStream"); } else { // We use only strings for the streams, not unicode obj = PyString_FromStringAndSize(buf, buf.GetDataLen()); } + wxPyEndBlockThreads(); return obj; } @@ -727,24 +956,29 @@ PyObject* wxPyInputStream::readline(int size) { // check if we have a real wxInputStream to work with if (!m_wxis) { + wxPyBeginBlockThreads(); PyErr_SetString(PyExc_IOError,"no valid C-wxInputStream"); + wxPyEndBlockThreads(); return NULL; } // read until \n or byte limit reached - for (i=ch=0; (ch != '\n') && (!m_wxis->Eof()) && ((size < 0) || (i < size)); i++) { + for (i=ch=0; (ch != '\n') && (m_wxis->CanRead()) && ((size < 0) || (i < size)); i++) { ch = m_wxis->GetC(); buf.AppendByte(ch); } // errorcheck - if (m_wxis->LastError() == wxSTREAM_READ_ERROR) { + wxPyBeginBlockThreads(); + wxStreamError err = m_wxis->GetLastError(); + if (err != wxSTREAM_NO_ERROR && err != wxSTREAM_EOF) { PyErr_SetString(PyExc_IOError,"IOError in wxInputStream"); } else { // We use only strings for the streams, not unicode obj = PyString_FromStringAndSize((char*)buf.GetData(), buf.GetDataLen()); } + wxPyEndBlockThreads(); return obj; } @@ -754,33 +988,45 @@ PyObject* wxPyInputStream::readlines(int sizehint) { // check if we have a real wxInputStream to work with if (!m_wxis) { - PyErr_SetString(PyExc_IOError,"no valid C-wxInputStream below"); + wxPyBeginBlockThreads(); + PyErr_SetString(PyExc_IOError,"no valid C-wxInputStream"); + wxPyEndBlockThreads(); return NULL; } // init list + wxPyBeginBlockThreads(); pylist = PyList_New(0); if (!pylist) { + wxPyBeginBlockThreads(); PyErr_NoMemory(); + wxPyEndBlockThreads(); return NULL; } // read sizehint bytes or until EOF int i; - for (i=0; (!m_wxis->Eof()) && ((sizehint < 0) || (i < sizehint));) { + for (i=0; (m_wxis->CanRead()) && ((sizehint < 0) || (i < sizehint));) { PyObject* s = this->readline(); if (s == NULL) { + wxPyBeginBlockThreads(); Py_DECREF(pylist); + wxPyEndBlockThreads(); return NULL; } + wxPyBeginBlockThreads(); PyList_Append(pylist, s); i += PyString_Size(s); + wxPyEndBlockThreads(); } // error check - if (m_wxis->LastError() == wxSTREAM_READ_ERROR) { + wxStreamError err = m_wxis->GetLastError(); + if (err != wxSTREAM_NO_ERROR && err != wxSTREAM_EOF) { + wxPyBeginBlockThreads(); Py_DECREF(pylist); PyErr_SetString(PyExc_IOError,"IOError in wxInputStream"); + wxPyEndBlockThreads(); return NULL; } @@ -889,7 +1135,6 @@ size_t wxPyCBInputStream::OnSysRead(void *buffer, size_t bufsize) { else m_lasterror = wxSTREAM_READ_ERROR; wxPyEndBlockThreads(); - m_lastcount = o; return o; } @@ -956,9 +1201,9 @@ void wxPyCallback::EventThunker(wxEvent& event) { wxPyBeginBlockThreads(); wxString className = event.GetClassInfo()->GetClassName(); - if (className == "wxPyEvent") + if (className == wxT("wxPyEvent")) arg = ((wxPyEvent*)&event)->GetSelf(); - else if (className == "wxPyCommandEvent") + else if (className == wxT("wxPyCommandEvent")) arg = ((wxPyCommandEvent*)&event)->GetSelf(); else { arg = wxPyConstructObject((void*)&event, className); @@ -1315,10 +1560,14 @@ long wxPyGetWinHandle(wxWindow* win) { // Find and return the actual X-Window. #ifdef __WXGTK__ if (win->m_wxwindow) { +#ifdef __WXGTK20__ + return (long) GDK_WINDOW_XWINDOW(GTK_PIZZA(win->m_wxwindow)->bin_window); +#else GdkWindowPrivate* bwin = (GdkWindowPrivate*)GTK_PIZZA(win->m_wxwindow)->bin_window; if (bwin) { return (long)bwin->xwindow; } +#endif } #endif return 0; @@ -1344,7 +1593,12 @@ wxString* wxString_in_helper(PyObject* source) { } #if wxUSE_UNICODE if (PyUnicode_Check(source)) { - target = new wxString(PyUnicode_AS_UNICODE(source)); + target = new wxString(); + size_t len = PyUnicode_GET_SIZE(source); + if (len) { + PyUnicode_AsWideChar((PyUnicodeObject*)source, target->GetWriteBuf(len), len); + target->UngetWriteBuf(); + } } else { // It is a string, get pointers to it and transform to unicode char* tmpPtr; int tmpSize; @@ -1386,7 +1640,11 @@ wxString Py2wxString(PyObject* source) #if wxUSE_UNICODE if (PyUnicode_Check(source)) { - target = PyUnicode_AS_UNICODE(source); + size_t len = PyUnicode_GET_SIZE(source); + if (len) { + PyUnicode_AsWideChar((PyUnicodeObject*)source, target.GetWriteBuf(len), len); + target.UngetWriteBuf(); + } } else { // It is a string, get pointers to it and transform to unicode char* tmpPtr; int tmpSize; @@ -1419,7 +1677,7 @@ PyObject* wx2PyString(const wxString& src) { PyObject* str; #if wxUSE_UNICODE - str = PyUnicode_FromUnicode(src.c_str(), src.Len()); + str = PyUnicode_FromWideChar(src.c_str(), src.Len()); #else str = PyString_FromStringAndSize(src.c_str(), src.Len()); #endif @@ -1624,7 +1882,7 @@ error2: if (!isFast) Py_DECREF(o); error1: - delete temp; + delete [] temp; error0: PyErr_SetString(PyExc_TypeError, "Expected a sequence of length-2 sequences or wxPoints."); return NULL; @@ -1765,7 +2023,7 @@ wxPen** wxPen_LIST_helper(PyObject* source) { } -bool _2int_seq_helper(PyObject* source, int* i1, int* i2) { +bool wxPy2int_seq_helper(PyObject* source, int* i1, int* i2) { bool isFast = PyList_Check(source) || PyTuple_Check(source); PyObject *o1, *o2; @@ -1792,7 +2050,7 @@ bool _2int_seq_helper(PyObject* source, int* i1, int* i2) { } -bool _4int_seq_helper(PyObject* source, int* i1, int* i2, int* i3, int* i4) { +bool wxPy4int_seq_helper(PyObject* source, int* i1, int* i2, int* i3, int* i4) { bool isFast = PyList_Check(source) || PyTuple_Check(source); PyObject *o1, *o2, *o3, *o4; @@ -1859,6 +2117,7 @@ bool wxSize_helper(PyObject* source, wxSize** obj) { return FALSE; } + bool wxPoint_helper(PyObject* source, wxPoint** obj) { // If source is an object instance then it may already be the right type @@ -1974,9 +2233,9 @@ bool wxColour_helper(PyObject* source, wxColour** obj) { *obj = ptr; return TRUE; } - // otherwise a string is expected - else if (PyString_Check(source)) { - wxString spec(PyString_AS_STRING(source), *wxConvCurrent); + // otherwise check for a string + else if (PyString_Check(source) || PyUnicode_Check(source)) { + wxString spec = Py2wxString(source); if (spec.GetChar(0) == '#' && spec.Length() == 7) { // It's #RRGGBB long red, green, blue; red = green = blue = 0; @@ -1992,15 +2251,63 @@ bool wxColour_helper(PyObject* source, wxColour** obj) { return TRUE; } } + // last chance: 3-tuple of integers is expected + else if (PySequence_Check(source) && PyObject_Length(source) == 3) { + PyObject* o1 = PySequence_GetItem(source, 0); + PyObject* o2 = PySequence_GetItem(source, 1); + PyObject* o3 = PySequence_GetItem(source, 2); + if (!PyNumber_Check(o1) || !PyNumber_Check(o2) || !PyNumber_Check(o3)) { + Py_DECREF(o1); + Py_DECREF(o2); + Py_DECREF(o3); + goto error; + } + **obj = wxColour(PyInt_AsLong(o1), PyInt_AsLong(o2), PyInt_AsLong(o3)); + Py_DECREF(o1); + Py_DECREF(o2); + Py_DECREF(o3); + return TRUE; + } error: PyErr_SetString(PyExc_TypeError, - "Expected a wxColour object or a string containing a colour " - "name or '#RRGGBB'."); + "Expected a wxColour object or a string containing a colour name or '#RRGGBB'."); return FALSE; } + +bool wxPoint2DDouble_helper(PyObject* source, wxPoint2DDouble** obj) { + // If source is an object instance then it may already be the right type + if (PyInstance_Check(source)) { + wxPoint2DDouble* ptr; + if (SWIG_GetPtrObj(source, (void **)&ptr, "_wxPoint2DDouble_p")) + goto error; + *obj = ptr; + return TRUE; + } + // otherwise a length-2 sequence of floats is expected + if (PySequence_Check(source) && PySequence_Length(source) == 2) { + PyObject* o1 = PySequence_GetItem(source, 0); + PyObject* o2 = PySequence_GetItem(source, 1); + // This should really check for integers, not numbers -- but that would break code. + if (!PyNumber_Check(o1) || !PyNumber_Check(o2)) { + Py_DECREF(o1); + Py_DECREF(o2); + goto error; + } + **obj = wxPoint2DDouble(PyFloat_AsDouble(o1), PyFloat_AsDouble(o2)); + Py_DECREF(o1); + Py_DECREF(o2); + return TRUE; + } + error: + PyErr_SetString(PyExc_TypeError, "Expected a 2-tuple of floats or a wxPoint2DDouble object."); + return FALSE; +} + + + //---------------------------------------------------------------------- PyObject* wxArrayString2PyList_helper(const wxArrayString& arr) { @@ -2008,7 +2315,7 @@ PyObject* wxArrayString2PyList_helper(const wxArrayString& arr) { PyObject* list = PyList_New(0); for (size_t i=0; i < arr.GetCount(); i++) { #if wxUSE_UNICODE - PyObject* str = PyUnicode_FromUnicode(arr[i].c_str(), arr[i].Len()); + PyObject* str = PyUnicode_FromWideChar(arr[i].c_str(), arr[i].Len()); #else PyObject* str = PyString_FromStringAndSize(arr[i].c_str(), arr[i].Len()); #endif diff --git a/wxPython/src/helpers.h b/wxPython/src/helpers.h index 1ca7acd7da..ce8c873553 100644 --- a/wxPython/src/helpers.h +++ b/wxPython/src/helpers.h @@ -14,27 +14,13 @@ #define __wxp_helpers__ #include <wx/wx.h> - +#include <wx/geometry.h> //--------------------------------------------------------------------------- typedef unsigned char byte; - -class wxPyApp: public wxApp -{ -public: - wxPyApp(); - ~wxPyApp(); - bool OnInit(); - int MainLoop(); -}; - -extern wxPyApp *wxPythonApp; - -//---------------------------------------------------------------------- - -void __wxPreStart(); +void __wxPreStart(PyObject*); PyObject* __wxStart(PyObject*, PyObject* args); void __wxCleanup(); @@ -80,6 +66,8 @@ void wxPyEndAllowThreads(PyThreadState* state); void wxPyBeginBlockThreads(); void wxPyEndBlockThreads(); +#define wxPyBLOCK_THREADS(stmt) wxPyBeginBlockThreads(); stmt; wxPyEndBlockThreads() + //---------------------------------------------------------------------- // These are helpers used by the typemaps @@ -101,6 +89,9 @@ bool wxRealPoint_helper(PyObject* source, wxRealPoint** obj); bool wxRect_helper(PyObject* source, wxRect** obj); bool wxColour_helper(PyObject* source, wxColour** obj); +bool wxPoint2DDouble_helper(PyObject* source, wxPoint2DDouble** obj); + + //---------------------------------------------------------------------- // Other helpful stuff @@ -109,8 +100,8 @@ bool wxColour_helper(PyObject* source, wxColour** obj); (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i)) #endif -bool _2int_seq_helper(PyObject* source, int* i1, int* i2); -bool _4int_seq_helper(PyObject* source, int* i1, int* i2, int* i3, int* i4); +bool wxPy2int_seq_helper(PyObject* source, int* i1, int* i2); +bool wxPy4int_seq_helper(PyObject* source, int* i1, int* i2, int* i3, int* i4); PyObject* wxArrayString2PyList_helper(const wxArrayString& arr); @@ -120,6 +111,21 @@ PyObject* wxArrayInt2PyList_helper(const wxArrayInt& arr); #define DECLARE_DEF_STRING(name) static const wxString wxPy##name(wx##name) #define DECLARE_DEF_STRING2(name,val) static const wxString wxPy##name(val) +//---------------------------------------------------------------------- +// functions used by the DrawXXXList enhancements added to wxDC + +typedef bool (*wxPyDrawListOp_t)(wxDC& dc, PyObject* coords); +PyObject* wxPyDrawXXXList(wxDC& dc, wxPyDrawListOp_t doDraw, + PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes); +bool wxPyDrawXXXPoint(wxDC& dc, PyObject* coords); +bool wxPyDrawXXXLine(wxDC& dc, PyObject* coords); +bool wxPyDrawXXXRectangle(wxDC& dc, PyObject* coords); +bool wxPyDrawXXXEllipse(wxDC& dc, PyObject* coords); +bool wxPyDrawXXXPolygon(wxDC& dc, PyObject* coords); + +PyObject* wxPyDrawTextList(wxDC& dc, PyObject* textList, PyObject* pyPoints, + PyObject* foregroundList, PyObject* backgroundList); + //---------------------------------------------------------------------- #ifndef SWIGCODE @@ -270,6 +276,7 @@ struct wxPyCoreAPI { bool (*p_wxRealPoint_helper)(PyObject* source, wxRealPoint** obj); bool (*p_wxRect_helper)(PyObject* source, wxRect** obj); bool (*p_wxColour_helper)(PyObject* source, wxColour** obj); + bool (*p_wxPoint2DDouble_helper)(PyObject* source, wxPoint2DDouble** obj); void (*p_wxPyCBH_setCallbackInfo)(wxPyCallbackHelper& cbh, PyObject* self, PyObject* klass, int incref); bool (*p_wxPyCBH_findCallback)(const wxPyCallbackHelper& cbh, const char* name); @@ -404,19 +411,78 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); //--------------------------------------------------------------------------- + +// This is used in C++ classes that need to be able to make callback to +// "overloaded" python methods + +#define PYPRIVATE \ + void _setCallbackInfo(PyObject* self, PyObject* _class, int incref=1) { \ + wxPyCBH_setCallbackInfo(m_myInst, self, _class, incref); \ + } \ + private: wxPyCallbackHelper m_myInst + + +//--------------------------------------------------------------------------- + +enum { + wxPYAPP_ASSERT_SUPPRESS = 1, + wxPYAPP_ASSERT_EXCEPTION = 2, + wxPYAPP_ASSERT_DIALOG = 4, + wxPYAPP_ASSERT_LOG = 8 +}; + +class wxPyApp: public wxApp +{ + DECLARE_ABSTRACT_CLASS(wxPyApp); + +public: + wxPyApp(); + ~wxPyApp(); + bool OnInit(); + int MainLoop(); + + int GetAssertMode() { return m_assertMode; } + void SetAssertMode(int mode) { m_assertMode = mode; } + + virtual bool OnInitGui(); + virtual int OnExit(); +#ifdef __WXDEBUG__ + virtual void OnAssert(const wxChar *file, + int line, + const wxChar *cond, + const wxChar *msg); +#endif + // virtual int FilterEvent(wxEvent& event); // This one too???? + + + static bool GetMacDefaultEncodingIsPC(); + static bool GetMacSupportPCMenuShortcuts(); + static long GetMacAboutMenuItemId(); + static long GetMacPreferencesMenuItemId(); + static long GetMacExitMenuItemId(); + static wxString GetMacHelpMenuTitleName(); + + static void SetMacDefaultEncodingIsPC(bool val); + static void SetMacSupportPCMenuShortcuts(bool val); + static void SetMacAboutMenuItemId(long val); + static void SetMacPreferencesMenuItemId(long val); + static void SetMacExitMenuItemId(long val); + static void SetMacHelpMenuTitleName(const wxString& val); + + + PYPRIVATE; + int m_assertMode; +}; + +extern wxPyApp *wxPythonApp; + + +//---------------------------------------------------------------------- // These macros are used to implement the virtual methods that should // redirect to a Python method if one exists. The names designate the // return type, if any, as well as any parameter types. //--------------------------------------------------------------------------- -#define PYPRIVATE \ - void _setCallbackInfo(PyObject* self, PyObject* _class, int incref=1) { \ - wxPyCBH_setCallbackInfo(m_myInst, self, _class, incref); \ - } \ - private: wxPyCallbackHelper m_myInst - -//--------------------------------------------------------------------------- - #define DEC_PYCALLBACK__(CBNAME) \ void CBNAME(); \ void base_##CBNAME(); @@ -425,10 +491,10 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); #define IMP_PYCALLBACK__(CLASS, PCLASS, CBNAME) \ void CLASS::CBNAME() { \ bool found; \ - wxPyBeginBlockThreads(); \ + wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \ - wxPyEndBlockThreads(); \ + wxPyEndBlockThreads(); \ if (! found) \ PCLASS::CBNAME(); \ } \ @@ -1203,7 +1269,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool rval=FALSE; \ wxPyBeginBlockThreads(); \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ - PyObject* obj = wxPyConstructObject((void*)&a, "wxHtmlTag", 0); \ + PyObject* obj = wxPyConstructObject((void*)&a, wxT("wxHtmlTag"), 0); \ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ Py_DECREF(obj); \ } \ @@ -1222,7 +1288,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool found; \ wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ - PyObject* obj = wxPyConstructObject((void*)cell, "wxHtmlCell", 0); \ + PyObject* obj = wxPyConstructObject((void*)cell, wxT("wxHtmlCell"), 0); \ wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(Oii)",obj,x,y)); \ Py_DECREF(obj); \ } \ @@ -1246,8 +1312,8 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool found; \ wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ - PyObject* obj = wxPyConstructObject((void*)cell, "wxHtmlCell", 0); \ - PyObject* o2 = wxPyConstructObject((void*)&e, "wxMouseEvent", 0); \ + PyObject* obj = wxPyConstructObject((void*)cell, wxT("wxHtmlCell"), 0); \ + PyObject* o2 = wxPyConstructObject((void*)&e, wxT("wxMouseEvent"), 0); \ wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OiiO)",obj,x,y,o2)); \ Py_DECREF(obj); \ Py_DECREF(o2); \ @@ -1582,7 +1648,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool found; \ wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ - PyObject* obj = wxPyConstructObject((void*)&a, #Type, 0); \ + PyObject* obj = wxPyConstructObject((void*)&a, wxT(#Type), 0); \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ Py_DECREF(obj); \ } \ @@ -1607,7 +1673,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool found; \ wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ - PyObject* obj = wxPyConstructObject((void*)&a, #Type, 0); \ + PyObject* obj = wxPyConstructObject((void*)&a, wxT(#Type), 0); \ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ Py_DECREF(obj); \ } \ @@ -1632,7 +1698,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool found; \ wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ - PyObject* obj = wxPyConstructObject((void*)&a, #Type, 0); \ + PyObject* obj = wxPyConstructObject((void*)&a, wxT(#Type), 0); \ rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ Py_DECREF(obj); \ } \ @@ -1656,7 +1722,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool rv=FALSE; \ wxPyBeginBlockThreads(); \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ - PyObject* obj = wxPyConstructObject((void*)&a, #Type, 0); \ + PyObject* obj = wxPyConstructObject((void*)&a, wxT(#Type), 0); \ rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ Py_DECREF(obj); \ } \ @@ -1766,7 +1832,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* ro; \ - PyObject* obj = wxPyConstructObject((void*)&e, "wxMouseEvent", 0); \ + PyObject* obj = wxPyConstructObject((void*)&e, wxT("wxMouseEvent"), 0); \ ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)",obj)); \ if (ro) { \ rval = PyInt_AsLong(ro); \ @@ -1851,6 +1917,29 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); //--------------------------------------------------------------------------- +#define DEC_PYCALLBACK_OBJECT_STRING_pure(CBNAME) \ + wxObject* CBNAME(const wxString& a); + +#define IMP_PYCALLBACK_OBJECT_STRING_pure(CLASS, PCLASS, CBNAME) \ + wxObject* CLASS::CBNAME(const wxString& a) { \ + wxObject* rv = NULL; \ + wxPyBeginBlockThreads(); \ + if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ + PyObject* so = wx2PyString(a); \ + PyObject* ro; \ + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", so)); \ + if (ro) { \ + SWIG_GetPtrObj(ro, (void **)&rv, "_wxObject_p"); \ + Py_DECREF(ro); \ + } \ + Py_DECREF(so); \ + } \ + wxPyEndBlockThreads(); \ + return rv; \ + } + +//--------------------------------------------------------------------------- + #define DEC_PYCALLBACK_BOOL_NODE_pure(CBNAME) \ bool CBNAME(wxXmlNode* a); @@ -1860,7 +1949,7 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); bool rv=FALSE; \ wxPyBeginBlockThreads(); \ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ - PyObject* obj = wxPyConstructObject((void*)a, "wxXmlNode", 0); \ + PyObject* obj = wxPyConstructObject((void*)a, wxT("wxXmlNode"), 0); \ rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ Py_DECREF(obj); \ } \ diff --git a/wxPython/src/html.i b/wxPython/src/html.i index 9d757ed813..7673a3637e 100644 --- a/wxPython/src/html.i +++ b/wxPython/src/html.i @@ -21,6 +21,7 @@ #include <wx/fs_zip.h> #include <wx/fs_inet.h> #include <wx/wfstream.h> +#include <wx/filesys.h> #include "printfw.h" %} @@ -37,8 +38,10 @@ %extern controls.i %extern controls2.i %extern printfw.i - %extern utils.i +%extern filesys.i +%extern streams.i + %pragma(python) code = "import wx" @@ -158,7 +161,9 @@ public: void InitParser(const wxString& source); void DoneParser(); void DoParsing(int begin_pos, int end_pos); + void StopParsing(); // wxObject* GetProduct(); + void AddTagHandler(wxHtmlTagHandler *handler); wxString* GetSource(); void PushTagHandler(wxHtmlTagHandler* handler, wxString tags); @@ -415,6 +420,7 @@ public: %name(SetWidthFloatFromTag)void SetWidthFloat(const wxHtmlTag& tag); void SetMinHeight(int h, int align = wxHTML_ALIGN_TOP); void SetBackgroundColour(const wxColour& clr); + wxColour GetBackgroundColour(); void SetBorder(const wxColour& clr1, const wxColour& clr2); wxHtmlCell* GetFirstCell(); }; @@ -442,9 +448,75 @@ public: }; +//--------------------------------------------------------------------------- +// wxHtmlFilter +//--------------------------------------------------------------------------- + + +%{ // here's the C++ version +class wxPyHtmlFilter : public wxHtmlFilter { + DECLARE_ABSTRACT_CLASS(wxPyHtmlFilter); +public: + wxPyHtmlFilter() : wxHtmlFilter() {} + + // returns TRUE if this filter is able to open&read given file + virtual bool CanRead(const wxFSFile& file) const { + bool rval = FALSE; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "CanRead"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + } + wxPyEndBlockThreads(); + return rval; + } + + + // Reads given file and returns HTML document. + // Returns empty string if opening failed + virtual wxString ReadFile(const wxFSFile& file) const { + wxString rval; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "ReadFile"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + PyObject* ro; + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + if (ro) { + rval = Py2wxString(ro); + Py_DECREF(ro); + } + } + wxPyEndBlockThreads(); + return rval; + } + + PYPRIVATE; +}; + +IMPLEMENT_ABSTRACT_CLASS(wxPyHtmlFilter, wxHtmlFilter); +%} + + +// And now the version seen by SWIG + +%name(wxHtmlFilter) class wxPyHtmlFilter : public wxObject { +public: + wxPyHtmlFilter(); + + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxHtmlFilter)" +}; + + +// TODO: wxHtmlFilterHTML + //--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- +// wxHtmlWindow //--------------------------------------------------------------------------- %{ @@ -455,7 +527,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_AUTO, - const wxString& name = "htmlWindow") + const wxString& name = wxPyHtmlWindowNameStr) : wxHtmlWindow(parent, id, pos, size, style, name) {}; wxPyHtmlWindow() : wxHtmlWindow() {}; @@ -478,7 +550,6 @@ public: DEC_PYCALLBACK__STRING(OnSetTitle); DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); -// DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); PYPRIVATE; }; @@ -486,14 +557,13 @@ IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); -// IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { bool found; wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "OnLinkClicked"))) { - PyObject* obj = wxPyConstructObject((void*)&link, "wxHtmlLinkInfo", 0); + PyObject* obj = wxPyConstructObject((void*)&link, wxT("wxHtmlLinkInfo"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); Py_DECREF(obj); } @@ -564,18 +634,45 @@ public: %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreHtmlWindow:val._setOORInfo(val)" + // Set HTML page and display it. !! source is HTML document itself, + // it is NOT address/filename of HTML document. If you want to + // specify document location, use LoadPage() istead + // Return value : FALSE if an error occured, TRUE otherwise bool SetPage(const wxString& source); + + // Load HTML page from given location. Location can be either + // a) /usr/wxGTK2/docs/html/wx.htm + // b) http://www.somewhere.uk/document.htm + // c) ftp://ftp.somesite.cz/pub/something.htm + // In case there is no prefix (http:,ftp:), the method + // will try to find it itself (1. local file, then http or ftp) + // After the page is loaded, the method calls SetPage() to display it. + // Note : you can also use path relative to previously loaded page + // Return value : same as SetPage bool LoadPage(const wxString& location); + + // Append to current page bool AppendToPage(const wxString& source); + + // Returns full location of opened page wxString GetOpenedPage(); + + // Returns anchor within opened page wxString GetOpenedAnchor(); + + // Returns <TITLE> of opened page or empty string otherwise wxString GetOpenedPageTitle(); + // Sets frame in which page title will be displayed. Format is format of + // frame title, e.g. "HtmlHelp : %s". It must contain exactly one %s void SetRelatedFrame(wxFrame* frame, const wxString& format); wxFrame* GetRelatedFrame(); + + // After(!) calling SetRelatedFrame, this sets statusbar slot where messages + // will be displayed. Default is -1 = no messages. void SetRelatedStatusBar(int bar); - //void SetFonts(wxString normal_face, wxString fixed_face, int *LIST); + // Sets fonts to be used when displaying HTML page. %addmethods { void SetFonts(wxString normal_face, wxString fixed_face, PyObject* sizes) { int* temp = int_LIST_helper(sizes); @@ -587,20 +684,39 @@ public: } void SetTitle(const wxString& title); + + // Sets space between text and window borders. void SetBorders(int b); + + // Saves custom settings into cfg config. it will use the path 'path' + // if given, otherwise it will save info into currently selected path. + // saved values : things set by SetFonts, SetBorders. void ReadCustomization(wxConfigBase *cfg, wxString path = wxPyEmptyString); void WriteCustomization(wxConfigBase *cfg, wxString path = wxPyEmptyString); + + // Goes to previous/next page (in browsing history) + // Returns TRUE if successful, FALSE otherwise bool HistoryBack(); bool HistoryForward(); bool HistoryCanBack(); bool HistoryCanForward(); + + // Resets History void HistoryClear(); + + // Returns pointer to conteiners/cells structure. wxHtmlContainerCell* GetInternalRepresentation(); + + // Returns a pointer to the parser. wxHtmlWinParser* GetParser(); bool ScrollToAnchor(const wxString& anchor); bool HasAnchor(const wxString& anchor); + //Adds input filter + static void AddFilter(wxPyHtmlFilter *filter); + + void base_OnLinkClicked(const wxHtmlLinkInfo& link); void base_OnSetTitle(const wxString& title); void base_OnCellMouseHover(wxHtmlCell *cell, wxCoord x, wxCoord y); @@ -609,12 +725,6 @@ public: const wxMouseEvent& event); }; -// Static methods are mapped to stand-alone functions -%inline %{ - void wxHtmlWindow_AddFilter(wxHtmlFilter *filter) { - wxHtmlWindow::AddFilter(filter); - } -%} //--------------------------------------------------------------------------- @@ -702,6 +812,7 @@ public: wxPyPtrTypeMap_Add("wxHtmlTagHandler", "wxPyHtmlTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWinTagHandler", "wxPyHtmlWinTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWindow", "wxPyHtmlWindow"); + wxPyPtrTypeMap_Add("wxHtmlFilter", "wxPyHtmlFilter"); %} //---------------------------------------------------------------------- diff --git a/wxPython/src/image.i b/wxPython/src/image.i index 84d1c7c5f0..7f125f11bc 100644 --- a/wxPython/src/image.i +++ b/wxPython/src/image.i @@ -179,6 +179,21 @@ public: return PyString_FromStringAndSize((char*)data, len); } + void SetDataBuffer(PyObject* data) { + unsigned char* buffer; + int size; + + if (!PyArg_Parse(data, "w#", &buffer, &size)) + return; + + if (size != self->GetWidth() * self->GetHeight() * 3) { + PyErr_SetString(PyExc_TypeError, "Incorrect buffer size"); + return; + } + + self->SetData(buffer); + } + void SetData(PyObject* data) { unsigned char* dataPtr; diff --git a/wxPython/src/mac/calendar.cpp b/wxPython/src/mac/calendar.cpp index cca579bbf6..f7445ebdd9 100644 --- a/wxPython/src/mac/calendar.cpp +++ b/wxPython/src/mac/calendar.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -130,8 +129,7 @@ static PyObject *_wrap_new_wxCalendarDateAttr(PyObject *self, PyObject *args, Py return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxCalendarDateAttr. Expected _wxFont_p."); return NULL; } @@ -316,8 +314,7 @@ static PyObject *_wrap_wxCalendarDateAttr_SetFont(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarDateAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -897,8 +894,7 @@ static PyObject *_wrap_new_wxCalendarCtrl(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxCalendarCtrl. Expected _wxDateTime_p."); return NULL; } @@ -1007,8 +1003,7 @@ static PyObject *_wrap_wxCalendarCtrl_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxCalendarCtrl_Create. Expected _wxDateTime_p."); return NULL; } @@ -1065,8 +1060,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetDate(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetDate. Expected _wxDateTime_p."); return NULL; } @@ -1139,8 +1133,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetLowerDateLimit(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetLowerDateLimit. Expected _wxDateTime_p."); return NULL; } @@ -1212,8 +1205,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetUpperDateLimit(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetUpperDateLimit. Expected _wxDateTime_p."); return NULL; } @@ -1287,15 +1279,13 @@ static PyObject *_wrap_wxCalendarCtrl_SetDateRange(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetDateRange. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxCalendarCtrl_SetDateRange. Expected _wxDateTime_p."); return NULL; } diff --git a/wxPython/src/mac/calendar.py b/wxPython/src/mac/calendar.py index f20a55db56..355ee1bfa5 100644 --- a/wxPython/src/mac/calendar.py +++ b/wxPython/src/mac/calendar.py @@ -282,3 +282,4 @@ wxEVT_CALENDAR_WEEKDAY_CLICKED = calendarc.wxEVT_CALENDAR_WEEKDAY_CLICKED # Stuff these names into the wx namespace so wxPyConstructObject can find them wx.wxCalendarEventPtr = wxCalendarEventPtr +wx.wxCalendarCtrlPtr = wxCalendarCtrlPtr diff --git a/wxPython/src/mac/clip_dnd.cpp b/wxPython/src/mac/clip_dnd.cpp index 106b830a47..738d78466b 100644 --- a/wxPython/src/mac/clip_dnd.cpp +++ b/wxPython/src/mac/clip_dnd.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -191,7 +190,7 @@ wxBitmap wxPyBitmapDataObject::GetBitmap() { void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { wxPyBeginBlockThreads(); if (m_myInst.findCallback("SetBitmap")) { - PyObject* bo = wxPyConstructObject((void*)&bitmap, "wxBitmap"); + PyObject* bo = wxPyConstructObject((void*)&bitmap, wxT("wxBitmap")); m_myInst.callCallback(Py_BuildValue("(O)", bo)); Py_DECREF(bo); } @@ -206,15 +205,17 @@ void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { class wxPyDropSource : public wxDropSource { public: #ifdef __WXMSW__ - wxPyDropSource(wxWindow *win = NULL, - const wxCursor &cursorCopy = wxNullCursor, - const wxCursor &cursorMove = wxNullCursor, - const wxCursor &cursorStop = wxNullCursor) - : wxDropSource(win, cursorCopy, cursorMove, cursorStop) {} + wxPyDropSource(wxWindow *win = NULL, + const wxCursor &copy = wxNullCursor, + const wxCursor &move = wxNullCursor, + const wxCursor &none = wxNullCursor) + : wxDropSource(win, copy, move, none) {} #else wxPyDropSource(wxWindow *win = NULL, - const wxIcon &go = wxNullIcon) - : wxDropSource(win, go) {} + const wxIcon& copy = wxNullIcon, + const wxIcon& move = wxNullIcon, + const wxIcon& none = wxNullIcon) + : wxDropSource(win, copy, move, none) {} #endif ~wxPyDropSource() { } @@ -537,7 +538,7 @@ static PyObject *_wrap_wxDataFormat_GetId(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -713,43 +714,6 @@ static PyObject *_wrap_wxDataObject_GetAllFormats(PyObject *self, PyObject *args return _resultobj; } -#define wxDataObject_GetDataSize(_swigobj,_swigarg0) (_swigobj->GetDataSize(_swigarg0)) -static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - size_t _result; - wxDataObject * _arg0; - wxDataFormat * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","format", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - #define wxDataObject_GetDataHere(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetDataHere(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -773,8 +737,7 @@ static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataHere. Expected _wxDataFormat_p."); return NULL; } @@ -796,6 +759,42 @@ static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, return _resultobj; } +#define wxDataObject_GetDataSize(_swigobj,_swigarg0) (_swigobj->GetDataSize(_swigarg0)) +static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + size_t _result; + wxDataObject * _arg0; + wxDataFormat * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","format", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxDataObject_SetData(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->SetData(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -820,8 +819,7 @@ static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_SetData. Expected _wxDataFormat_p."); return NULL; } @@ -864,8 +862,7 @@ static PyObject *_wrap_wxDataObject_IsSupportedFormat(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_IsSupportedFormat. Expected _wxDataFormat_p."); return NULL; } @@ -901,8 +898,7 @@ static PyObject *_wrap_new_wxDataObjectSimple(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxDataObjectSimple",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDataObjectSimple. Expected _wxDataFormat_p."); return NULL; } @@ -979,8 +975,7 @@ static PyObject *_wrap_wxDataObjectSimple_SetFormat(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObjectSimple_SetFormat. Expected _wxDataFormat_p."); return NULL; } @@ -1025,8 +1020,7 @@ static PyObject *_wrap_new_wxPyDataObjectSimple(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyDataObjectSimple",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyDataObjectSimple. Expected _wxDataFormat_p."); return NULL; } @@ -1265,7 +1259,7 @@ static PyObject *_wrap_wxTextDataObject_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1444,8 +1438,7 @@ static PyObject *_wrap_new_wxBitmapDataObject(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxBitmapDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxBitmapDataObject. Expected _wxBitmap_p."); return NULL; } @@ -1516,8 +1509,7 @@ static PyObject *_wrap_wxBitmapDataObject_SetBitmap(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapDataObject_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1570,8 +1562,7 @@ static PyObject *_wrap_new_wxPyBitmapDataObject(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyBitmapDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyBitmapDataObject. Expected _wxBitmap_p."); return NULL; } @@ -1734,8 +1725,7 @@ static PyObject *_wrap_new_wxCustomDataObject(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxCustomDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxCustomDataObject. Expected _wxDataFormat_p."); return NULL; } @@ -1959,7 +1949,7 @@ static PyObject *_wrap_wxURLDataObject_GetURL(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2071,8 +2061,7 @@ static PyObject *_wrap_wxMetafileDataObject_SetMetafile(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMetafile_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMetafile_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMetafileDataObject_SetMetafile. Expected _wxMetafile_p."); return NULL; } @@ -2331,8 +2320,7 @@ static PyObject *_wrap_wxClipboard_IsSupported(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_IsSupported. Expected _wxDataFormat_p."); return NULL; } @@ -2368,8 +2356,7 @@ static PyObject *_wrap_wxClipboard_GetData(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_GetData. Expected _wxDataObject_p."); return NULL; } @@ -2469,19 +2456,23 @@ static PyObject *_wrap_wxClipboard_UsePrimarySelection(PyObject *self, PyObject return _resultobj; } -#define new_wxDropSource(_swigarg0,_swigarg1) (new wxPyDropSource(_swigarg0,_swigarg1)) +#define new_wxDropSource(_swigarg0,_swigarg1,_swigarg2,_swigarg3) (new wxPyDropSource(_swigarg0,_swigarg1,_swigarg2,_swigarg3)) static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxPyDropSource * _result; wxWindow * _arg0 = (wxWindow *) NULL; wxIcon * _arg1 = (wxIcon *) &wxNullIcon; + wxIcon * _arg2 = (wxIcon *) &wxNullIcon; + wxIcon * _arg3 = (wxIcon *) &wxNullIcon; PyObject * _argo0 = 0; PyObject * _argo1 = 0; - char *_kwnames[] = { "win","go", NULL }; + PyObject * _argo2 = 0; + PyObject * _argo3 = 0; + char *_kwnames[] = { "win","copy","move","none", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OO:new_wxDropSource",_kwnames,&_argo0,&_argo1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|OOOO:new_wxDropSource",_kwnames,&_argo0,&_argo1,&_argo2,&_argo3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -2491,15 +2482,26 @@ static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDropSource. Expected _wxIcon_p."); return NULL; } } + if (_argo2) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxIcon_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxDropSource. Expected _wxIcon_p."); + return NULL; + } + } + if (_argo3) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxIcon_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxDropSource. Expected _wxIcon_p."); + return NULL; + } + } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxPyDropSource *)new_wxDropSource(_arg0,*_arg1); + _result = (wxPyDropSource *)new_wxDropSource(_arg0,*_arg1,*_arg2,*_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2600,8 +2602,7 @@ static PyObject *_wrap_wxDropSource_SetData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDropSource_SetData. Expected _wxDataObject_p."); return NULL; } @@ -2673,8 +2674,7 @@ static PyObject *_wrap_wxDropSource_SetCursor(PyObject *self, PyObject *args, Py } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDropSource_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -3616,8 +3616,8 @@ static PyMethodDef clip_dndcMethods[] = { { "new_wxDataObjectSimple", (PyCFunction) _wrap_new_wxDataObjectSimple, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_IsSupportedFormat", (PyCFunction) _wrap_wxDataObject_IsSupportedFormat, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_SetData", (PyCFunction) _wrap_wxDataObject_SetData, METH_VARARGS | METH_KEYWORDS }, - { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetDataSize", (PyCFunction) _wrap_wxDataObject_GetDataSize, METH_VARARGS | METH_KEYWORDS }, + { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetAllFormats", (PyCFunction) _wrap_wxDataObject_GetAllFormats, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetFormatCount", (PyCFunction) _wrap_wxDataObject_GetFormatCount, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetPreferredFormat", (PyCFunction) _wrap_wxDataObject_GetPreferredFormat, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/clip_dnd.py b/wxPython/src/mac/clip_dnd.py index 90d523ed26..bb31645abc 100644 --- a/wxPython/src/mac/clip_dnd.py +++ b/wxPython/src/mac/clip_dnd.py @@ -11,9 +11,12 @@ class wxDataFormatPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDataFormat(self) + def __del__(self, delfunc=clip_dndc.delete_wxDataFormat): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetType(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataFormat_SetType,(self,) + _args, _kwargs) return val @@ -43,9 +46,12 @@ class wxDataObjectPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDataObject(self) + def __del__(self, delfunc=clip_dndc.delete_wxDataObject): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPreferredFormat(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetPreferredFormat,(self,) + _args, _kwargs) if val: val = wxDataFormatPtr(val) ; val.thisown = 1 @@ -56,12 +62,12 @@ class wxDataObjectPtr : def GetAllFormats(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetAllFormats,(self,) + _args, _kwargs) return val - def GetDataSize(self, *_args, **_kwargs): - val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs) - return val def GetDataHere(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetDataHere,(self,) + _args, _kwargs) return val + def GetDataSize(self, *_args, **_kwargs): + val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs) + return val def SetData(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_SetData,(self,) + _args, _kwargs) return val @@ -350,9 +356,12 @@ class wxDropSourcePtr : def _setCallbackInfo(self, *_args, **_kwargs): val = apply(clip_dndc.wxDropSource__setCallbackInfo,(self,) + _args, _kwargs) return val - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDropSource(self) + def __del__(self, delfunc=clip_dndc.delete_wxDropSource): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetData(self, *_args, **_kwargs): val = apply(clip_dndc.wxDropSource_SetData,(self,) + _args, _kwargs) return val @@ -400,9 +409,12 @@ class wxPyDropTargetPtr(wxDropTargetPtr): def _setCallbackInfo(self, *_args, **_kwargs): val = apply(clip_dndc.wxPyDropTarget__setCallbackInfo,(self,) + _args, _kwargs) return val - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxPyDropTarget(self) + def __del__(self, delfunc=clip_dndc.delete_wxPyDropTarget): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetDataObject(self, *_args, **_kwargs): val = apply(clip_dndc.wxPyDropTarget_GetDataObject,(self,) + _args, _kwargs) if val: val = wxDataObjectPtr(val) diff --git a/wxPython/src/mac/cmndlgs.cpp b/wxPython/src/mac/cmndlgs.cpp index 323876d3e7..29c6f9e4d3 100644 --- a/wxPython/src/mac/cmndlgs.cpp +++ b/wxPython/src/mac/cmndlgs.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -658,7 +657,7 @@ static PyObject *_wrap_wxDirDialog_GetPath(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -695,7 +694,7 @@ static PyObject *_wrap_wxDirDialog_GetMessage(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -999,7 +998,7 @@ static PyObject *_wrap_wxFileDialog_GetDirectory(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1036,7 +1035,7 @@ static PyObject *_wrap_wxFileDialog_GetFilename(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1101,7 +1100,7 @@ static PyObject *_wrap_wxFileDialog_GetMessage(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1138,7 +1137,7 @@ static PyObject *_wrap_wxFileDialog_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1203,7 +1202,7 @@ static PyObject *_wrap_wxFileDialog_GetWildcard(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1958,7 +1957,7 @@ static PyObject *_wrap_wxSingleChoiceDialog_GetStringSelection(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2172,7 +2171,7 @@ static PyObject *_wrap_wxTextEntryDialog_GetValue(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2568,8 +2567,7 @@ static PyObject *_wrap_wxFontData_SetChosenFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFontData_SetChosenFont. Expected _wxFont_p."); return NULL; } @@ -2641,8 +2639,7 @@ static PyObject *_wrap_wxFontData_SetInitialFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFontData_SetInitialFont. Expected _wxFont_p."); return NULL; } @@ -2781,8 +2778,7 @@ static PyObject *_wrap_new_wxFontDialog(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFontData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFontData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxFontDialog. Expected _wxFontData_p."); return NULL; } @@ -3277,7 +3273,7 @@ static PyObject *_wrap_wxFindDialogEvent_GetFindString(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3315,7 +3311,7 @@ static PyObject *_wrap_wxFindDialogEvent_GetReplaceString(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3555,7 +3551,7 @@ static PyObject *_wrap_wxFindReplaceData_GetFindString(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3590,7 +3586,7 @@ static PyObject *_wrap_wxFindReplaceData_GetReplaceString(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/mac/cmndlgs.py b/wxPython/src/mac/cmndlgs.py index f1c5c95ea7..9555d3bc82 100644 --- a/wxPython/src/mac/cmndlgs.py +++ b/wxPython/src/mac/cmndlgs.py @@ -41,9 +41,12 @@ class wxColourDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxColourData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxColourData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetChooseFull(self, *_args, **_kwargs): val = apply(cmndlgsc.wxColourData_GetChooseFull,(self,) + _args, _kwargs) return val @@ -271,9 +274,12 @@ class wxFontDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxFontData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxFontData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableEffects(self, *_args, **_kwargs): val = apply(cmndlgsc.wxFontData_EnableEffects,(self,) + _args, _kwargs) return val @@ -427,9 +433,12 @@ class wxFindReplaceDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxFindReplaceData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxFindReplaceData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetFindString(self, *_args, **_kwargs): val = apply(cmndlgsc.wxFindReplaceData_GetFindString,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/controls.cpp b/wxPython/src/mac/controls.cpp index 89339830a0..5e11b717d4 100644 --- a/wxPython/src/mac/controls.cpp +++ b/wxPython/src/mac/controls.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -210,8 +209,7 @@ static PyObject *_wrap_new_wxControl(PyObject *self, PyObject *args, PyObject *k return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxControl. Expected _wxValidator_p."); return NULL; } @@ -320,8 +318,7 @@ static PyObject *_wrap_wxControl_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxControl_Create. Expected _wxValidator_p."); return NULL; } @@ -366,8 +363,7 @@ static PyObject *_wrap_wxControl_Command(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCommandEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCommandEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxControl_Command. Expected _wxCommandEvent_p."); return NULL; } @@ -409,7 +405,7 @@ static PyObject *_wrap_wxControl_GetLabel(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -575,7 +571,7 @@ static PyObject *_wrap_wxControlWithItems_GetString(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -748,7 +744,7 @@ static PyObject *_wrap_wxControlWithItems_GetStringSelection(PyObject *self, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -917,11 +913,10 @@ static PyObject *_wrap_wxControlWithItems_AppendItems(PyObject *self, PyObject * PyObject* item = PySequence_GetItem(_obj1, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg1->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg1->Add(PyString_AsString(str)); #endif + _arg1->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -1024,8 +1019,7 @@ static PyObject *_wrap_new_wxButton(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxButton. Expected _wxValidator_p."); return NULL; } @@ -1145,8 +1139,7 @@ static PyObject *_wrap_wxButton_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxButton_Create. Expected _wxValidator_p."); return NULL; } @@ -1369,8 +1362,7 @@ static PyObject *_wrap_new_wxBitmapButton(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxBitmapButton. Expected _wxBitmap_p."); return NULL; } @@ -1388,8 +1380,7 @@ static PyObject *_wrap_new_wxBitmapButton(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxBitmapButton. Expected _wxValidator_p."); return NULL; } @@ -1488,8 +1479,7 @@ static PyObject *_wrap_wxBitmapButton_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxBitmapButton_Create. Expected _wxBitmap_p."); return NULL; } @@ -1507,8 +1497,7 @@ static PyObject *_wrap_wxBitmapButton_Create(PyObject *self, PyObject *args, PyO return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxBitmapButton_Create. Expected _wxValidator_p."); return NULL; } @@ -1673,8 +1662,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapDisabled(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapDisabled. Expected _wxBitmap_p."); return NULL; } @@ -1710,8 +1698,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapFocus(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapFocus. Expected _wxBitmap_p."); return NULL; } @@ -1747,8 +1734,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapSelected(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapSelected. Expected _wxBitmap_p."); return NULL; } @@ -1784,8 +1770,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapLabel(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapLabel. Expected _wxBitmap_p."); return NULL; } @@ -1970,8 +1955,7 @@ static PyObject *_wrap_new_wxCheckBox(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxCheckBox. Expected _wxValidator_p."); return NULL; } @@ -2091,8 +2075,7 @@ static PyObject *_wrap_wxCheckBox_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxCheckBox_Create. Expected _wxValidator_p."); return NULL; } @@ -2149,6 +2132,34 @@ static PyObject *_wrap_wxCheckBox_GetValue(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxCheckBox_IsChecked(_swigobj) (_swigobj->IsChecked()) +static PyObject *_wrap_wxCheckBox_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxCheckBox * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCheckBox_IsChecked",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCheckBox_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCheckBox_IsChecked. Expected _wxCheckBox_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxCheckBox_IsChecked(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxCheckBox_SetValue(_swigobj,_swigarg0) (_swigobj->SetValue(_swigarg0)) static PyObject *_wrap_wxCheckBox_SetValue(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2274,8 +2285,7 @@ static PyObject *_wrap_new_wxChoice(PyObject *self, PyObject *args, PyObject *kw } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxChoice. Expected _wxValidator_p."); return NULL; } @@ -2405,8 +2415,7 @@ static PyObject *_wrap_wxChoice_Create(PyObject *self, PyObject *args, PyObject } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxChoice_Create. Expected _wxValidator_p."); return NULL; } @@ -2745,8 +2754,7 @@ static PyObject *_wrap_new_wxComboBox(PyObject *self, PyObject *args, PyObject * } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxComboBox. Expected _wxValidator_p."); return NULL; } @@ -2888,8 +2896,7 @@ static PyObject *_wrap_wxComboBox_Create(PyObject *self, PyObject *args, PyObjec } } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of wxComboBox_Create. Expected _wxValidator_p."); return NULL; } @@ -3067,7 +3074,7 @@ static PyObject *_wrap_wxComboBox_GetValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3440,8 +3447,7 @@ static PyObject *_wrap_new_wxGauge(PyObject *self, PyObject *args, PyObject *kwa return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxGauge. Expected _wxValidator_p."); return NULL; } @@ -3551,8 +3557,7 @@ static PyObject *_wrap_wxGauge_Create(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxGauge_Create. Expected _wxValidator_p."); return NULL; } @@ -4457,7 +4462,7 @@ static PyObject *_wrap_wxStaticText_GetLabel(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4601,8 +4606,7 @@ static PyObject *_wrap_new_wxListBox(PyObject *self, PyObject *args, PyObject *k } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxListBox. Expected _wxValidator_p."); return NULL; } @@ -4732,8 +4736,7 @@ static PyObject *_wrap_wxListBox_Create(PyObject *self, PyObject *args, PyObject } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxListBox_Create. Expected _wxValidator_p."); return NULL; } @@ -5304,8 +5307,7 @@ static PyObject *_wrap_new_wxCheckListBox(PyObject *self, PyObject *args, PyObje } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxCheckListBox. Expected _wxValidator_p."); return NULL; } @@ -5435,8 +5437,7 @@ static PyObject *_wrap_wxCheckListBox_Create(PyObject *self, PyObject *args, PyO } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxCheckListBox_Create. Expected _wxValidator_p."); return NULL; } @@ -5677,8 +5678,7 @@ static PyObject *_wrap_new_wxTextAttr(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxTextAttr. Expected _wxFont_p."); return NULL; } @@ -5819,8 +5819,7 @@ static PyObject *_wrap_wxTextAttr_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -6054,15 +6053,13 @@ static PyObject *_wrap_wxTextAttr_Combine(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxTextAttr_Combine",_kwnames,&_argo0,&_argo1,&_argo2)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextAttr_Combine. Expected _wxTextAttr_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextAttr_Combine. Expected _wxTextAttr_p."); return NULL; } @@ -6169,8 +6166,7 @@ static PyObject *_wrap_new_wxTextCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxTextCtrl. Expected _wxValidator_p."); return NULL; } @@ -6291,8 +6287,7 @@ static PyObject *_wrap_wxTextCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxTextCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -6347,7 +6342,7 @@ static PyObject *_wrap_wxTextCtrl_GetValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6425,7 +6420,7 @@ static PyObject *_wrap_wxTextCtrl_GetRange(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6492,7 +6487,7 @@ static PyObject *_wrap_wxTextCtrl_GetLineText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6661,7 +6656,7 @@ static PyObject *_wrap_wxTextCtrl_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7006,8 +7001,7 @@ static PyObject *_wrap_wxTextCtrl_EmulateKeyPress(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextCtrl_EmulateKeyPress. Expected _wxKeyEvent_p."); return NULL; } @@ -7045,8 +7039,7 @@ static PyObject *_wrap_wxTextCtrl_SetStyle(PyObject *self, PyObject *args, PyObj } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxTextCtrl_SetStyle. Expected _wxTextAttr_p."); return NULL; } @@ -7082,8 +7075,7 @@ static PyObject *_wrap_wxTextCtrl_SetDefaultStyle(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextCtrl_SetDefaultStyle. Expected _wxTextAttr_p."); return NULL; } @@ -7851,7 +7843,7 @@ static PyObject *_wrap_wxTextCtrl_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7938,8 +7930,7 @@ static PyObject *_wrap_new_wxScrollBar(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxScrollBar. Expected _wxValidator_p."); return NULL; } @@ -8048,8 +8039,7 @@ static PyObject *_wrap_wxScrollBar_Create(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxScrollBar_Create. Expected _wxValidator_p."); return NULL; } @@ -8679,8 +8669,7 @@ static PyObject *_wrap_new_wxStaticBitmap(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxStaticBitmap. Expected _wxBitmap_p."); return NULL; } @@ -8789,8 +8778,7 @@ static PyObject *_wrap_wxStaticBitmap_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxStaticBitmap_Create. Expected _wxBitmap_p."); return NULL; } @@ -8877,8 +8865,7 @@ static PyObject *_wrap_wxStaticBitmap_SetBitmap(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxStaticBitmap_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -8914,8 +8901,7 @@ static PyObject *_wrap_wxStaticBitmap_SetIcon(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxStaticBitmap_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -9025,8 +9011,7 @@ static PyObject *_wrap_new_wxRadioBox(PyObject *self, PyObject *args, PyObject * } } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of new_wxRadioBox. Expected _wxValidator_p."); return NULL; } @@ -9168,8 +9153,7 @@ static PyObject *_wrap_wxRadioBox_Create(PyObject *self, PyObject *args, PyObjec } } if (_argo10) { - if (_argo10 == Py_None) { _arg10 = NULL; } - else if (SWIG_GetPtrObj(_argo10,(void **) &_arg10,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo10,(void **) &_arg10,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 11 of wxRadioBox_Create. Expected _wxValidator_p."); return NULL; } @@ -9338,7 +9322,7 @@ static PyObject *_wrap_wxRadioBox_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9499,7 +9483,7 @@ static PyObject *_wrap_wxRadioBox_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9752,8 +9736,7 @@ static PyObject *_wrap_new_wxRadioButton(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxRadioButton. Expected _wxValidator_p."); return NULL; } @@ -9873,8 +9856,7 @@ static PyObject *_wrap_wxRadioButton_Create(PyObject *self, PyObject *args, PyOb return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxRadioButton_Create. Expected _wxValidator_p."); return NULL; } @@ -10041,8 +10023,7 @@ static PyObject *_wrap_new_wxSlider(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxSlider. Expected _wxValidator_p."); return NULL; } @@ -10154,8 +10135,7 @@ static PyObject *_wrap_wxSlider_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of wxSlider_Create. Expected _wxValidator_p."); return NULL; } @@ -11311,6 +11291,7 @@ static PyMethodDef controlscMethods[] = { { "new_wxPreChoice", (PyCFunction) _wrap_new_wxPreChoice, METH_VARARGS | METH_KEYWORDS }, { "new_wxChoice", (PyCFunction) _wrap_new_wxChoice, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_SetValue", (PyCFunction) _wrap_wxCheckBox_SetValue, METH_VARARGS | METH_KEYWORDS }, + { "wxCheckBox_IsChecked", (PyCFunction) _wrap_wxCheckBox_IsChecked, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_GetValue", (PyCFunction) _wrap_wxCheckBox_GetValue, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_Create", (PyCFunction) _wrap_wxCheckBox_Create, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreCheckBox", (PyCFunction) _wrap_new_wxPreCheckBox, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/controls.py b/wxPython/src/mac/controls.py index 855f3e76ce..0ddbe6c365 100644 --- a/wxPython/src/mac/controls.py +++ b/wxPython/src/mac/controls.py @@ -200,6 +200,9 @@ class wxCheckBoxPtr(wxControlPtr): def GetValue(self, *_args, **_kwargs): val = apply(controlsc.wxCheckBox_GetValue,(self,) + _args, _kwargs) return val + def IsChecked(self, *_args, **_kwargs): + val = apply(controlsc.wxCheckBox_IsChecked,(self,) + _args, _kwargs) + return val def SetValue(self, *_args, **_kwargs): val = apply(controlsc.wxCheckBox_SetValue,(self,) + _args, _kwargs) return val @@ -560,9 +563,12 @@ class wxTextAttrPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controlsc=controlsc): - if self.thisown == 1 : - controlsc.delete_wxTextAttr(self) + def __del__(self, delfunc=controlsc.delete_wxTextAttr): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTextColour(self, *_args, **_kwargs): val = apply(controlsc.wxTextAttr_SetTextColour,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/controls2.cpp b/wxPython/src/mac/controls2.cpp index be265f146f..27b9ff754c 100644 --- a/wxPython/src/mac/controls2.cpp +++ b/wxPython/src/mac/controls2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -214,8 +213,8 @@ public: bool found; wxPyBeginBlockThreads(); if ((found = m_myInst.findCallback("OnCompareItems"))) { - PyObject *o1 = wxPyConstructObject((void*)&item1, "wxTreeItemId"); - PyObject *o2 = wxPyConstructObject((void*)&item2, "wxTreeItemId"); + PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId")); + PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId")); rval = m_myInst.callCallback(Py_BuildValue("(OO)",o1,o2)); Py_DECREF(o1); Py_DECREF(o2); @@ -264,8 +263,7 @@ static PyObject *_wrap_new_wxListItemAttr(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxListItemAttr. Expected _wxFont_p."); return NULL; } @@ -378,8 +376,7 @@ static PyObject *_wrap_wxListItemAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListItemAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -1079,8 +1076,7 @@ static PyObject *_wrap_wxListItem_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListItem_SetFont. Expected _wxFont_p."); return NULL; } @@ -1235,7 +1231,7 @@ static PyObject *_wrap_wxListItem_GetText(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1826,7 +1822,7 @@ static PyObject *_wrap_wxListItem_m_text_set(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1864,7 +1860,7 @@ static PyObject *_wrap_wxListItem_m_text_get(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2476,7 +2472,7 @@ static PyObject *_wrap_wxListEvent_GetLabel(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2511,7 +2507,7 @@ static PyObject *_wrap_wxListEvent_GetText(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2764,8 +2760,7 @@ static PyObject *_wrap_new_wxListCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListCtrl. Expected _wxValidator_p."); return NULL; } @@ -2874,8 +2869,7 @@ static PyObject *_wrap_wxListCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -3068,8 +3062,7 @@ static PyObject *_wrap_wxListCtrl_SetColumn(PyObject *self, PyObject *args, PyOb } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_SetColumn. Expected _wxListItem_p."); return NULL; } @@ -3229,8 +3222,7 @@ static PyObject *_wrap_wxListCtrl_SetItem(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListCtrl_SetItem. Expected _wxListItem_p."); return NULL; } @@ -3406,7 +3398,7 @@ static PyObject *_wrap_wxListCtrl_GetItemText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3721,6 +3713,38 @@ static PyObject *_wrap_wxListCtrl_GetItemSpacing(PyObject *self, PyObject *args, return _resultobj; } +#define wxListCtrl_SetItemSpacing(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetItemSpacing(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxListCtrl_SetItemSpacing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyListCtrl * _arg0; + int _arg1; + bool _arg2 = (bool ) FALSE; + PyObject * _argo0 = 0; + int tempbool2 = (int) FALSE; + char *_kwnames[] = { "self","spacing","isSmall", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxListCtrl_SetItemSpacing",_kwnames,&_argo0,&_arg1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyListCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListCtrl_SetItemSpacing. Expected _wxPyListCtrl_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxListCtrl_SetItemSpacing(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxListCtrl_GetSelectedItemCount(_swigobj) (_swigobj->GetSelectedItemCount()) static PyObject *_wrap_wxListCtrl_GetSelectedItemCount(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4298,6 +4322,35 @@ static PyObject *_wrap_wxListCtrl_ClearAll(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxListCtrl_EditLabel(_swigobj,_swigarg0) (_swigobj->EditLabel(_swigarg0)) +static PyObject *_wrap_wxListCtrl_EditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyListCtrl * _arg0; + long _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","item", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxListCtrl_EditLabel",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyListCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxListCtrl_EditLabel. Expected _wxPyListCtrl_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxListCtrl_EditLabel(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxListCtrl_EnsureVisible(_swigobj,_swigarg0) (_swigobj->EnsureVisible(_swigarg0)) static PyObject *_wrap_wxListCtrl_EnsureVisible(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4505,8 +4558,7 @@ static PyObject *_wrap_wxListCtrl_InsertItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListCtrl_InsertItem. Expected _wxListItem_p."); return NULL; } @@ -4654,8 +4706,7 @@ static PyObject *_wrap_wxListCtrl_InsertColumnInfo(PyObject *self, PyObject *arg } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_InsertColumnInfo. Expected _wxListItem_p."); return NULL; } @@ -5062,8 +5113,7 @@ static PyObject *_wrap_new_wxListView(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListView. Expected _wxValidator_p."); return NULL; } @@ -5172,8 +5222,7 @@ static PyObject *_wrap_wxListView_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListView_Create. Expected _wxValidator_p."); return NULL; } @@ -5463,8 +5512,7 @@ static PyObject *_wrap_new_wxTreeItemAttr(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxTreeItemAttr. Expected _wxFont_p."); return NULL; } @@ -5577,8 +5625,7 @@ static PyObject *_wrap_wxTreeItemAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeItemAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -6049,8 +6096,7 @@ static PyObject *_wrap_wxTreeItemData_SetId(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeItemData_SetId. Expected _wxTreeItemId_p."); return NULL; } @@ -6307,7 +6353,7 @@ static PyObject *_wrap_wxTreeEvent_GetLabel(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6419,8 +6465,7 @@ static PyObject *_wrap_new_wxTreeCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxTreeCtrl. Expected _wxValidator_p."); return NULL; } @@ -6529,8 +6574,7 @@ static PyObject *_wrap_wxTreeCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxTreeCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -6960,8 +7004,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemText. Expected _wxTreeItemId_p."); return NULL; } @@ -6974,7 +7017,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7007,8 +7050,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemImage(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7044,8 +7086,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemSelectedImage(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemSelectedImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7082,8 +7123,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemText(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemText. Expected _wxTreeItemId_p."); return NULL; } @@ -7130,8 +7170,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemImage(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7168,8 +7207,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemSelectedImage(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemSelectedImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7207,8 +7245,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemHasChildren(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemHasChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -7255,8 +7292,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemData(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemData. Expected _wxTreeItemId_p."); return NULL; } @@ -7302,8 +7338,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemData(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemData. Expected _wxTreeItemId_p."); return NULL; } @@ -7355,8 +7390,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPyData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPyData. Expected _wxTreeItemId_p."); return NULL; } @@ -7403,8 +7437,7 @@ static PyObject *_wrap_wxTreeCtrl_SetPyData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetPyData. Expected _wxTreeItemId_p."); return NULL; } @@ -7423,6 +7456,120 @@ static PyObject *_wrap_wxTreeCtrl_SetPyData(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxTreeCtrl_GetItemTextColour(_swigobj,_swigarg0) (_swigobj->GetItemTextColour(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemTextColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemTextColour",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemTextColour. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemTextColour. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxTreeCtrl_GetItemTextColour(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +#define wxTreeCtrl_GetItemBackgroundColour(_swigobj,_swigarg0) (_swigobj->GetItemBackgroundColour(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemBackgroundColour",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemBackgroundColour. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemBackgroundColour. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxTreeCtrl_GetItemBackgroundColour(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +#define wxTreeCtrl_GetItemFont(_swigobj,_swigarg0) (_swigobj->GetItemFont(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemFont(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemFont",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemFont. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemFont. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxFont (wxTreeCtrl_GetItemFont(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxFont_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxTreeCtrl_IsVisible(_swigobj,_swigarg0) (_swigobj->IsVisible(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_IsVisible(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7444,8 +7591,7 @@ static PyObject *_wrap_wxTreeCtrl_IsVisible(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -7481,8 +7627,7 @@ static PyObject *_wrap_wxTreeCtrl_ItemHasChildren(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_ItemHasChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -7518,8 +7663,7 @@ static PyObject *_wrap_wxTreeCtrl_IsExpanded(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsExpanded. Expected _wxTreeItemId_p."); return NULL; } @@ -7555,8 +7699,7 @@ static PyObject *_wrap_wxTreeCtrl_IsSelected(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsSelected. Expected _wxTreeItemId_p."); return NULL; } @@ -7631,7 +7774,7 @@ static PyObject *_wrap_wxTreeCtrl_GetSelection(PyObject *self, PyObject *args, P return _resultobj; } -#define wxTreeCtrl_GetItemParent(_swigobj,_swigarg0) (_swigobj->GetParent(_swigarg0)) +#define wxTreeCtrl_GetItemParent(_swigobj,_swigarg0) (_swigobj->GetItemParent(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_GetItemParent(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxTreeItemId * _result; @@ -7653,8 +7796,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemParent(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemParent. Expected _wxTreeItemId_p."); return NULL; } @@ -7678,7 +7820,7 @@ static PyObject * wxPyTreeCtrl_GetSelections(wxPyTreeCtrl *self) { num = self->GetSelections(array); for (x=0; x < num; x++) { wxTreeItemId *tii = new wxTreeItemId(array.Item(x)); - PyObject* item = wxPyConstructObject((void*)tii, "wxTreeItemId", TRUE); + PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), TRUE); PyList_Append(rval, item); } wxPyEndBlockThreads(); @@ -7736,8 +7878,7 @@ static PyObject *_wrap_wxTreeCtrl_GetChildrenCount(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetChildrenCount. Expected _wxTreeItemId_p."); return NULL; } @@ -7778,8 +7919,7 @@ static PyObject *_wrap_wxTreeCtrl_GetFirstChild(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetFirstChild. Expected _wxTreeItemId_p."); return NULL; } @@ -7830,8 +7970,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextChild(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextChild. Expected _wxTreeItemId_p."); return NULL; } @@ -7878,8 +8017,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextSibling(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextSibling. Expected _wxTreeItemId_p."); return NULL; } @@ -7917,8 +8055,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPrevSibling(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPrevSibling. Expected _wxTreeItemId_p."); return NULL; } @@ -7986,8 +8123,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8025,8 +8161,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPrevVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPrevVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8064,8 +8199,7 @@ static PyObject *_wrap_wxTreeCtrl_GetLastChild(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetLastChild. Expected _wxTreeItemId_p."); return NULL; } @@ -8161,8 +8295,7 @@ static PyObject *_wrap_wxTreeCtrl_PrependItem(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_PrependItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8224,15 +8357,13 @@ static PyObject *_wrap_wxTreeCtrl_InsertItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_InsertItem. Expected _wxTreeItemId_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxTreeCtrl_InsertItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8293,8 +8424,7 @@ static PyObject *_wrap_wxTreeCtrl_InsertItemBefore(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_InsertItemBefore. Expected _wxTreeItemId_p."); return NULL; } @@ -8354,8 +8484,7 @@ static PyObject *_wrap_wxTreeCtrl_AppendItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_AppendItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8407,8 +8536,7 @@ static PyObject *_wrap_wxTreeCtrl_Delete(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Delete. Expected _wxTreeItemId_p."); return NULL; } @@ -8444,8 +8572,7 @@ static PyObject *_wrap_wxTreeCtrl_DeleteChildren(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_DeleteChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -8509,8 +8636,7 @@ static PyObject *_wrap_wxTreeCtrl_Expand(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Expand. Expected _wxTreeItemId_p."); return NULL; } @@ -8546,8 +8672,7 @@ static PyObject *_wrap_wxTreeCtrl_Collapse(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Collapse. Expected _wxTreeItemId_p."); return NULL; } @@ -8583,8 +8708,7 @@ static PyObject *_wrap_wxTreeCtrl_CollapseAndReset(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_CollapseAndReset. Expected _wxTreeItemId_p."); return NULL; } @@ -8620,8 +8744,7 @@ static PyObject *_wrap_wxTreeCtrl_Toggle(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Toggle. Expected _wxTreeItemId_p."); return NULL; } @@ -8713,8 +8836,7 @@ static PyObject *_wrap_wxTreeCtrl_SelectItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SelectItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8750,8 +8872,7 @@ static PyObject *_wrap_wxTreeCtrl_EnsureVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EnsureVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8787,8 +8908,7 @@ static PyObject *_wrap_wxTreeCtrl_ScrollTo(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_ScrollTo. Expected _wxTreeItemId_p."); return NULL; } @@ -8804,6 +8924,34 @@ static PyObject *_wrap_wxTreeCtrl_ScrollTo(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxTreeCtrl_GetEditControl(_swigobj) (_swigobj->GetEditControl()) +static PyObject *_wrap_wxTreeCtrl_GetEditControl(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxTextCtrl * _result; + wxPyTreeCtrl * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxTreeCtrl_GetEditControl",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetEditControl. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxTextCtrl *)wxTreeCtrl_GetEditControl(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ _resultobj = wxPyMake_wxObject(_result); } + return _resultobj; +} + #define wxTreeCtrl_EditLabel(_swigobj,_swigarg0) (_swigobj->EditLabel(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_EditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -8824,8 +8972,7 @@ static PyObject *_wrap_wxTreeCtrl_EditLabel(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EditLabel. Expected _wxTreeItemId_p."); return NULL; } @@ -8861,8 +9008,7 @@ static PyObject *_wrap_wxTreeCtrl_SortChildren(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SortChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -8899,8 +9045,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBold(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemBold. Expected _wxTreeItemId_p."); return NULL; } @@ -8937,8 +9082,7 @@ static PyObject *_wrap_wxTreeCtrl_IsBold(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsBold. Expected _wxTreeItemId_p."); return NULL; } @@ -9024,8 +9168,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemTextColour(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemTextColour. Expected _wxTreeItemId_p."); return NULL; } @@ -9069,8 +9212,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBackgroundColour(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemBackgroundColour. Expected _wxTreeItemId_p."); return NULL; } @@ -9113,15 +9255,13 @@ static PyObject *_wrap_wxTreeCtrl_SetItemFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemFont. Expected _wxTreeItemId_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxTreeCtrl_SetItemFont. Expected _wxFont_p."); return NULL; } @@ -9142,7 +9282,7 @@ static PyObject * wxPyTreeCtrl_GetBoundingRect(wxPyTreeCtrl *self,const wxTreeIt if (self->GetBoundingRect(item, rect, textOnly)) { wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); - PyObject* val = wxPyConstructObject((void*)r, "wxRect"); + PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect")); wxPyEndBlockThreads(); return val; } @@ -9172,8 +9312,7 @@ static PyObject *_wrap_wxTreeCtrl_GetBoundingRect(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetBoundingRect. Expected _wxTreeItemId_p."); return NULL; } @@ -9321,7 +9460,7 @@ static PyObject *_wrap_wxDirItemData_m_path_set(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9359,7 +9498,7 @@ static PyObject *_wrap_wxDirItemData_m_path_get(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9400,7 +9539,7 @@ static PyObject *_wrap_wxDirItemData_m_name_set(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9438,7 +9577,7 @@ static PyObject *_wrap_wxDirItemData_m_name_get(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9932,7 +10071,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetDefaultPath(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10008,7 +10147,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetPath(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10045,7 +10184,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetFilePath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10180,7 +10319,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetFilter(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10650,6 +10789,7 @@ static PyMethodDef controls2cMethods[] = { { "wxTreeCtrl_SetItemBold", (PyCFunction) _wrap_wxTreeCtrl_SetItemBold, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SortChildren", (PyCFunction) _wrap_wxTreeCtrl_SortChildren, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EditLabel", (PyCFunction) _wrap_wxTreeCtrl_EditLabel, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetEditControl", (PyCFunction) _wrap_wxTreeCtrl_GetEditControl, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_ScrollTo", (PyCFunction) _wrap_wxTreeCtrl_ScrollTo, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EnsureVisible", (PyCFunction) _wrap_wxTreeCtrl_EnsureVisible, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SelectItem", (PyCFunction) _wrap_wxTreeCtrl_SelectItem, METH_VARARGS | METH_KEYWORDS }, @@ -10684,6 +10824,9 @@ static PyMethodDef controls2cMethods[] = { { "wxTreeCtrl_IsExpanded", (PyCFunction) _wrap_wxTreeCtrl_IsExpanded, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_ItemHasChildren", (PyCFunction) _wrap_wxTreeCtrl_ItemHasChildren, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_IsVisible", (PyCFunction) _wrap_wxTreeCtrl_IsVisible, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemFont", (PyCFunction) _wrap_wxTreeCtrl_GetItemFont, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemBackgroundColour", (PyCFunction) _wrap_wxTreeCtrl_GetItemBackgroundColour, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemTextColour", (PyCFunction) _wrap_wxTreeCtrl_GetItemTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SetPyData", (PyCFunction) _wrap_wxTreeCtrl_SetPyData, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_GetPyData", (PyCFunction) _wrap_wxTreeCtrl_GetPyData, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SetItemData", (PyCFunction) _wrap_wxTreeCtrl_SetItemData, METH_VARARGS | METH_KEYWORDS }, @@ -10767,6 +10910,7 @@ static PyMethodDef controls2cMethods[] = { { "wxListCtrl_FindItemData", (PyCFunction) _wrap_wxListCtrl_FindItemData, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_FindItem", (PyCFunction) _wrap_wxListCtrl_FindItem, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_EnsureVisible", (PyCFunction) _wrap_wxListCtrl_EnsureVisible, METH_VARARGS | METH_KEYWORDS }, + { "wxListCtrl_EditLabel", (PyCFunction) _wrap_wxListCtrl_EditLabel, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_ClearAll", (PyCFunction) _wrap_wxListCtrl_ClearAll, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_DeleteAllColumns", (PyCFunction) _wrap_wxListCtrl_DeleteAllColumns, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_DeleteColumn", (PyCFunction) _wrap_wxListCtrl_DeleteColumn, METH_VARARGS | METH_KEYWORDS }, @@ -10786,6 +10930,7 @@ static PyMethodDef controls2cMethods[] = { { "wxListCtrl_SetTextColour", (PyCFunction) _wrap_wxListCtrl_SetTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetTextColour", (PyCFunction) _wrap_wxListCtrl_GetTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetSelectedItemCount", (PyCFunction) _wrap_wxListCtrl_GetSelectedItemCount, METH_VARARGS | METH_KEYWORDS }, + { "wxListCtrl_SetItemSpacing", (PyCFunction) _wrap_wxListCtrl_SetItemSpacing, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetItemSpacing", (PyCFunction) _wrap_wxListCtrl_GetItemSpacing, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetColumnCount", (PyCFunction) _wrap_wxListCtrl_GetColumnCount, METH_VARARGS | METH_KEYWORDS }, { "wxListCtrl_GetItemCount", (PyCFunction) _wrap_wxListCtrl_GetItemCount, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/controls2.py b/wxPython/src/mac/controls2.py index f46d4b0da1..fcbe7ee362 100644 --- a/wxPython/src/mac/controls2.py +++ b/wxPython/src/mac/controls2.py @@ -186,9 +186,12 @@ class wxListItemPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controls2c=controls2c): - if self.thisown == 1 : - controls2c.delete_wxListItem(self) + def __del__(self, delfunc=controls2c.delete_wxListItem): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Clear(self, *_args, **_kwargs): val = apply(controls2c.wxListItem_Clear,(self,) + _args, _kwargs) return val @@ -511,6 +514,9 @@ class wxListCtrlPtr(wxControlPtr): def GetItemSpacing(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetItemSpacing,(self,) + _args, _kwargs) return val + def SetItemSpacing(self, *_args, **_kwargs): + val = apply(controls2c.wxListCtrl_SetItemSpacing,(self,) + _args, _kwargs) + return val def GetSelectedItemCount(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetSelectedItemCount,(self,) + _args, _kwargs) return val @@ -570,6 +576,9 @@ class wxListCtrlPtr(wxControlPtr): def ClearAll(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_ClearAll,(self,) + _args, _kwargs) return val + def EditLabel(self, *_args, **_kwargs): + val = apply(controls2c.wxListCtrl_EditLabel,(self,) + _args, _kwargs) + return val def EnsureVisible(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_EnsureVisible,(self,) + _args, _kwargs) return val @@ -661,6 +670,14 @@ class wxListCtrlPtr(wxControlPtr): '''get the currently focused item or -1 if none''' return self.GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED) + def GetFirstSelected(self, *args): + '''return first selected item, or -1 when none''' + return self.GetNextSelected(-1) + + def GetNextSelected(self, item): + '''return subsequent selected items, or -1 when no more''' + return self.GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) + def IsSelected(self, idx): '''return TRUE if the item is selected''' return self.GetItemState(idx, wxLIST_STATE_SELECTED) != 0 @@ -678,10 +695,14 @@ class wxListCtrlPtr(wxControlPtr): '''Append an item to the list control. The entry parameter should be a sequence with an item for each column''' if len(entry): + if wx.wxUSE_UNICODE: + cvtfunc = unicode + else: + cvtfunc = str pos = self.GetItemCount() - self.InsertStringItem(pos, str(entry[0])) + self.InsertStringItem(pos, cvtfunc(entry[0])) for i in range(1, len(entry)): - self.SetStringItem(pos, i, str(entry[i])) + self.SetStringItem(pos, i, cvtfunc(entry[i])) return pos class wxListCtrl(wxListCtrlPtr): @@ -796,9 +817,12 @@ class wxTreeItemIdPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controls2c=controls2c): - if self.thisown == 1 : - controls2c.delete_wxTreeItemId(self) + def __del__(self, delfunc=controls2c.delete_wxTreeItemId): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(controls2c.wxTreeItemId_IsOk,(self,) + _args, _kwargs) return val @@ -962,6 +986,18 @@ class wxTreeCtrlPtr(wxControlPtr): def SetPyData(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_SetPyData,(self,) + _args, _kwargs) return val + def GetItemTextColour(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemTextColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val + def GetItemBackgroundColour(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemBackgroundColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val + def GetItemFont(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemFont,(self,) + _args, _kwargs) + if val: val = wxFontPtr(val) ; val.thisown = 1 + return val def IsVisible(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_IsVisible,(self,) + _args, _kwargs) return val @@ -1078,6 +1114,9 @@ class wxTreeCtrlPtr(wxControlPtr): def ScrollTo(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_ScrollTo,(self,) + _args, _kwargs) return val + def GetEditControl(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetEditControl,(self,) + _args, _kwargs) + return val def EditLabel(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_EditLabel,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/events.cpp b/wxPython/src/mac/events.cpp index 5371ba4617..ae76252c3c 100644 --- a/wxPython/src/mac/events.cpp +++ b/wxPython/src/mac/events.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -955,7 +954,7 @@ static PyObject *_wrap_wxCommandEvent_GetString(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2277,8 +2276,7 @@ static PyObject *_wrap_wxMouseEvent_GetLogicalPosition(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMouseEvent_GetLogicalPosition. Expected _wxDC_p."); return NULL; } @@ -3332,8 +3330,7 @@ static PyObject *_wrap_wxSetCursorEvent_SetCursor(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSetCursorEvent_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -6015,7 +6012,7 @@ static PyObject * wxDropFilesEvent_GetFiles(wxDropFilesEvent *self) { for (int i=0; i<count; i++) { #if wxUSE_UNICODE - PyList_SetItem(list, i, PyUnicode_FromUnicode(files[i], files[i].Len())); + PyList_SetItem(list, i, PyUnicode_FromWideChar(files[i], files[i].Len())); #else PyList_SetItem(list, i, PyString_FromString((const char*)files[i])); #endif @@ -6277,7 +6274,7 @@ static PyObject *_wrap_wxUpdateUIEvent_GetText(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7322,8 +7319,7 @@ static PyObject *_wrap_new_wxTextUrlEvent(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"iOll:new_wxTextUrlEvent",_kwnames,&_arg0,&_argo1,&_arg2,&_arg3)) return NULL; if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMouseEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMouseEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxTextUrlEvent. Expected _wxMouseEvent_p."); return NULL; } diff --git a/wxPython/src/mac/events.py b/wxPython/src/mac/events.py index 402df0334c..9ec900d64f 100644 --- a/wxPython/src/mac/events.py +++ b/wxPython/src/mac/events.py @@ -10,9 +10,12 @@ class wxEventPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxEvent(self) + def __del__(self, delfunc=eventsc.delete_wxEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetEventObject(self, *_args, **_kwargs): val = apply(eventsc.wxEvent_GetEventObject,(self,) + _args, _kwargs) return val @@ -1095,9 +1098,12 @@ class wxPyEventPtr(wxEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxPyEvent(self) + def __del__(self, delfunc=eventsc.delete_wxPyEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetSelf(self, *_args, **_kwargs): val = apply(eventsc.wxPyEvent_SetSelf,(self,) + _args, _kwargs) return val @@ -1119,9 +1125,12 @@ class wxPyCommandEventPtr(wxCommandEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxPyCommandEvent(self) + def __del__(self, delfunc=eventsc.delete_wxPyCommandEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetSelf(self, *_args, **_kwargs): val = apply(eventsc.wxPyCommandEvent_SetSelf,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/filesys.cpp b/wxPython/src/mac/filesys.cpp index 82b6c90525..b34c38cecb 100644 --- a/wxPython/src/mac/filesys.cpp +++ b/wxPython/src/mac/filesys.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -170,8 +169,7 @@ static PyObject *_wrap___wxMemoryFSHandler_AddFile_wxImage(PyObject *self, PyObj return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of __wxMemoryFSHandler_AddFile_wxImage. Expected _wxImage_p."); return NULL; } @@ -209,8 +207,7 @@ static PyObject *_wrap___wxMemoryFSHandler_AddFile_wxBitmap(PyObject *self, PyOb return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of __wxMemoryFSHandler_AddFile_wxBitmap. Expected _wxBitmap_p."); return NULL; } @@ -391,7 +388,7 @@ static PyObject *_wrap_wxFSFile_GetStream(PyObject *self, PyObject *args, PyObje if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -423,7 +420,7 @@ static PyObject *_wrap_wxFSFile_GetMimeType(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -458,7 +455,7 @@ static PyObject *_wrap_wxFSFile_GetLocation(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -493,7 +490,7 @@ static PyObject *_wrap_wxFSFile_GetAnchor(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -681,8 +678,7 @@ static PyObject *_wrap_wxFileSystemHandler_OpenFile(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileSystemHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -740,7 +736,7 @@ static PyObject *_wrap_wxFileSystemHandler_FindFirst(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -781,7 +777,7 @@ static PyObject *_wrap_wxFileSystemHandler_FindNext(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -825,7 +821,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetProtocol(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -873,7 +869,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetLeftLocation(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -921,7 +917,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetAnchor(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -969,7 +965,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetRightLocation(PyObject *self, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1017,7 +1013,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetMimeTypeFromExt(PyObject *self, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1134,7 +1130,7 @@ static PyObject *_wrap_wxFileSystem_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1218,7 +1214,7 @@ static PyObject *_wrap_wxFileSystem_FindFirst(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1259,7 +1255,7 @@ static PyObject *_wrap_wxFileSystem_FindNext(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1419,8 +1415,7 @@ static PyObject *_wrap_wxInternetFSHandler_OpenFile(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxInternetFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1548,8 +1543,7 @@ static PyObject *_wrap_wxZipFSHandler_OpenFile(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxZipFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1607,7 +1601,7 @@ static PyObject *_wrap_wxZipFSHandler_FindFirst(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1648,7 +1642,7 @@ static PyObject *_wrap_wxZipFSHandler_FindNext(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1792,8 +1786,7 @@ static PyObject *_wrap_wxMemoryFSHandler_OpenFile(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1851,7 +1844,7 @@ static PyObject *_wrap_wxMemoryFSHandler_FindFirst(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1892,7 +1885,7 @@ static PyObject *_wrap_wxMemoryFSHandler_FindNext(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/mac/filesys.py b/wxPython/src/mac/filesys.py index d1d52ee1fe..8950e6059b 100644 --- a/wxPython/src/mac/filesys.py +++ b/wxPython/src/mac/filesys.py @@ -13,13 +13,12 @@ from fonts import * from streams import * import wx -import string import types def wxMemoryFSHandler_AddFile(filename, a, b=''): - if isinstance(a, wxImage): + if wx.wxPy_isinstance(a, (wxImage, wxImagePtr)): __wxMemoryFSHandler_AddFile_wxImage(filename, a, b) - elif isinstance(a, wxBitmap): + elif wx.wxPy_isinstance(a, (wxBitmap, wxBitmapPtr)): __wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b) elif type(a) == types.StringType: #__wxMemoryFSHandler_AddFile_wxString(filename, a) diff --git a/wxPython/src/mac/fonts.cpp b/wxPython/src/mac/fonts.cpp index 392673d0bc..49e0ed41f0 100644 --- a/wxPython/src/mac/fonts.cpp +++ b/wxPython/src/mac/fonts.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -93,6 +92,32 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { // Put some wx default wxChar* values into wxStrings. static const wxString wxPyEmptyString(wxT("")); +// Fix some link errors... Remove this when these methods get real implementations... +#if defined(__WXGTK__) || defined(__WXX11__) +#if wxUSE_PANGO +void wxNativeFontInfo::SetPointSize(int pointsize) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetStyle(wxFontStyle style) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetWeight(wxFontWeight weight) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined)) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFaceName(wxString facename) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFamily(wxFontFamily family) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) + { wxFAIL_MSG( _T("not implemented") ); } +#endif +#endif + class wxPyFontEnumerator : public wxFontEnumerator { public: wxPyFontEnumerator() {} @@ -158,7 +183,7 @@ static PyObject *_wrap_wxGetTranslation(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -365,7 +390,7 @@ static PyObject *_wrap_wxNativeFontInfo_GetFaceName(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -712,7 +737,7 @@ static PyObject *_wrap_wxNativeFontInfo_ToString(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -751,7 +776,7 @@ static PyObject *_wrap_wxNativeFontInfo___str__(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -827,7 +852,7 @@ static PyObject *_wrap_wxNativeFontInfo_ToUserString(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1105,7 +1130,7 @@ static PyObject *_wrap_wxFontMapper_GetEncodingName(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1133,7 +1158,7 @@ static PyObject *_wrap_wxFontMapper_GetEncodingDescription(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1312,7 +1337,7 @@ static PyObject *_wrap_wxFontMapper_GetDefaultConfigPath(PyObject *self, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1388,8 +1413,7 @@ static PyObject *_wrap_new_wxFontFromNativeInfo(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxFontFromNativeInfo",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxFontFromNativeInfo. Expected _wxNativeFontInfo_p."); return NULL; } @@ -1410,6 +1434,56 @@ static PyObject *_wrap_new_wxFontFromNativeInfo(PyObject *self, PyObject *args, return _resultobj; } +static wxFont * wxFont_wxFontFromNativeInfoString(wxFont *self,const wxString & info) { + wxNativeFontInfo nfi; + nfi.FromString(info); + return new wxFont(nfi); + } +static PyObject *_wrap_wxFont_wxFontFromNativeInfoString(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _result; + wxFont * _arg0; + wxString * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","info", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxFont_wxFontFromNativeInfoString",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_wxFontFromNativeInfoString. Expected _wxFont_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFont *)wxFont_wxFontFromNativeInfoString(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + #define delete_wxFont(_swigobj) (delete _swigobj) static PyObject *_wrap_delete_wxFont(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1632,7 +1706,7 @@ static PyObject *_wrap_wxFont_GetFaceName(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1760,7 +1834,7 @@ static PyObject *_wrap_wxFont_GetNativeFontInfoDesc(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1797,7 +1871,7 @@ static PyObject *_wrap_wxFont_GetNativeFontInfoUserDesc(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2043,8 +2117,7 @@ static PyObject *_wrap_wxFont_SetNativeFontInfo(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxNativeFontInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxNativeFontInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFont_SetNativeFontInfo. Expected _wxNativeFontInfo_p."); return NULL; } @@ -2125,7 +2198,7 @@ static PyObject *_wrap_wxFont_GetFamilyString(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2162,7 +2235,7 @@ static PyObject *_wrap_wxFont_GetStyleString(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2199,7 +2272,7 @@ static PyObject *_wrap_wxFont_GetWeightString(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2210,6 +2283,65 @@ static PyObject *_wrap_wxFont_GetWeightString(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxFont_SetNoAntiAliasing(_swigobj,_swigarg0) (_swigobj->SetNoAntiAliasing(_swigarg0)) +static PyObject *_wrap_wxFont_SetNoAntiAliasing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _arg0; + bool _arg1 = (bool ) TRUE; + PyObject * _argo0 = 0; + int tempbool1 = (int) TRUE; + char *_kwnames[] = { "self","no", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxFont_SetNoAntiAliasing",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetNoAntiAliasing. Expected _wxFont_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxFont_SetNoAntiAliasing(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxFont_GetNoAntiAliasing(_swigobj) (_swigobj->GetNoAntiAliasing()) +static PyObject *_wrap_wxFont_GetNoAntiAliasing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxFont * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxFont_GetNoAntiAliasing",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetNoAntiAliasing. Expected _wxFont_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxFont_GetNoAntiAliasing(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyObject *_wrap_wxFont_GetDefaultEncoding(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxFontEncoding _result; @@ -2735,7 +2867,7 @@ static PyObject *_wrap_wxLanguageInfo_CanonicalName_set(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2773,7 +2905,7 @@ static PyObject *_wrap_wxLanguageInfo_CanonicalName_get(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2814,7 +2946,7 @@ static PyObject *_wrap_wxLanguageInfo_Description_set(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2852,7 +2984,7 @@ static PyObject *_wrap_wxLanguageInfo_Description_get(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2888,75 +3020,6 @@ static PyObject *_wrap_new_wxLocale(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } -#define wxLocale_Init(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->Init(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) -static PyObject *_wrap_wxLocale_Init(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxLocale * _arg0; - wxString * _arg1; - wxString * _arg2 = (wxString *) &wxPyEmptyString; - wxString * _arg3 = (wxString *) &wxPyEmptyString; - bool _arg4 = (bool ) TRUE; - bool _arg5 = (bool ) FALSE; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - PyObject * _obj2 = 0; - PyObject * _obj3 = 0; - int tempbool4 = (int) TRUE; - int tempbool5 = (int) FALSE; - char *_kwnames[] = { "self","szName","szShort","szLocale","bLoadDefault","bConvertEncoding", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|OOii:wxLocale_Init",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&tempbool4,&tempbool5)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init. Expected _wxLocale_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} - if (_obj2) -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} - if (_obj3) -{ - _arg3 = wxString_in_helper(_obj3); - if (_arg3 == NULL) - return NULL; -} - _arg4 = (bool ) tempbool4; - _arg5 = (bool ) tempbool5; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxLocale_Init(_arg0,*_arg1,*_arg2,*_arg3,_arg4,_arg5); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj1) - delete _arg1; -} -{ - if (_obj2) - delete _arg2; -} -{ - if (_obj3) - delete _arg3; -} - return _resultobj; -} - #define delete_wxLocale(_swigobj) (delete _swigobj) static PyObject *_wrap_delete_wxLocale(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2985,6 +3048,105 @@ static PyObject *_wrap_delete_wxLocale(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxLocale_Init1(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->Init(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) +static PyObject *_wrap_wxLocale_Init1(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxLocale * _arg0; + wxString * _arg1; + wxString * _arg2 = (wxString *) &wxPyEmptyString; + wxString * _arg3 = (wxString *) &wxPyEmptyString; + bool _arg4 = (bool ) TRUE; + bool _arg5 = (bool ) FALSE; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + int tempbool4 = (int) TRUE; + int tempbool5 = (int) FALSE; + char *_kwnames[] = { "self","szName","szShort","szLocale","bLoadDefault","bConvertEncoding", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|OOii:wxLocale_Init1",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&tempbool4,&tempbool5)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init1. Expected _wxLocale_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} + if (_obj2) +{ + _arg2 = wxString_in_helper(_obj2); + if (_arg2 == NULL) + return NULL; +} + if (_obj3) +{ + _arg3 = wxString_in_helper(_obj3); + if (_arg3 == NULL) + return NULL; +} + _arg4 = (bool ) tempbool4; + _arg5 = (bool ) tempbool5; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxLocale_Init1(_arg0,*_arg1,*_arg2,*_arg3,_arg4,_arg5); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); +{ + if (_obj1) + delete _arg1; +} +{ + if (_obj2) + delete _arg2; +} +{ + if (_obj3) + delete _arg3; +} + return _resultobj; +} + +#define wxLocale_Init2(_swigobj,_swigarg0,_swigarg1) (_swigobj->Init(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxLocale_Init2(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxLocale * _arg0; + int _arg1 = (int ) (wxLANGUAGE_DEFAULT); + int _arg2 = (int ) (wxLOCALE_LOAD_DEFAULT)|(wxLOCALE_CONV_ENCODING); + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","language","flags", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|ii:wxLocale_Init2",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init2. Expected _wxLocale_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxLocale_Init2(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyObject *_wrap_wxLocale_GetSystemLanguage(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; int _result; @@ -3037,7 +3199,7 @@ static PyObject *_wrap_wxLocale_GetSystemEncodingName(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3102,7 +3264,7 @@ static PyObject *_wrap_wxLocale_GetLocale(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3167,7 +3329,7 @@ static PyObject *_wrap_wxLocale_GetSysName(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3204,7 +3366,7 @@ static PyObject *_wrap_wxLocale_GetCanonicalName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3358,8 +3520,7 @@ static PyObject *_wrap_wxLocale_AddLanguage(PyObject *self, PyObject *args, PyOb if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxLocale_AddLanguage",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLanguageInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLanguageInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_AddLanguage. Expected _wxLanguageInfo_p."); return NULL; } @@ -3416,7 +3577,7 @@ static PyObject *_wrap_wxLocale_GetString(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3462,7 +3623,7 @@ static PyObject *_wrap_wxLocale_GetName(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3596,7 +3757,7 @@ static PyObject *_wrap_wxEncodingConverter_Convert(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3686,8 +3847,9 @@ static PyMethodDef fontscMethods[] = { { "wxLocale_GetSystemEncodingName", (PyCFunction) _wrap_wxLocale_GetSystemEncodingName, METH_VARARGS | METH_KEYWORDS }, { "wxLocale_GetSystemEncoding", (PyCFunction) _wrap_wxLocale_GetSystemEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxLocale_GetSystemLanguage", (PyCFunction) _wrap_wxLocale_GetSystemLanguage, METH_VARARGS | METH_KEYWORDS }, + { "wxLocale_Init2", (PyCFunction) _wrap_wxLocale_Init2, METH_VARARGS | METH_KEYWORDS }, + { "wxLocale_Init1", (PyCFunction) _wrap_wxLocale_Init1, METH_VARARGS | METH_KEYWORDS }, { "delete_wxLocale", (PyCFunction) _wrap_delete_wxLocale, METH_VARARGS | METH_KEYWORDS }, - { "wxLocale_Init", (PyCFunction) _wrap_wxLocale_Init, METH_VARARGS | METH_KEYWORDS }, { "new_wxLocale", (PyCFunction) _wrap_new_wxLocale, METH_VARARGS | METH_KEYWORDS }, { "wxLanguageInfo_Description_get", (PyCFunction) _wrap_wxLanguageInfo_Description_get, METH_VARARGS | METH_KEYWORDS }, { "wxLanguageInfo_Description_set", (PyCFunction) _wrap_wxLanguageInfo_Description_set, METH_VARARGS | METH_KEYWORDS }, @@ -3708,6 +3870,8 @@ static PyMethodDef fontscMethods[] = { { "wxFontList_AddFont", (PyCFunction) _wrap_wxFontList_AddFont, METH_VARARGS | METH_KEYWORDS }, { "wxFont_SetDefaultEncoding", (PyCFunction) _wrap_wxFont_SetDefaultEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetDefaultEncoding", (PyCFunction) _wrap_wxFont_GetDefaultEncoding, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_GetNoAntiAliasing", (PyCFunction) _wrap_wxFont_GetNoAntiAliasing, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_SetNoAntiAliasing", (PyCFunction) _wrap_wxFont_SetNoAntiAliasing, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetWeightString", (PyCFunction) _wrap_wxFont_GetWeightString, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetStyleString", (PyCFunction) _wrap_wxFont_GetStyleString, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetFamilyString", (PyCFunction) _wrap_wxFont_GetFamilyString, METH_VARARGS | METH_KEYWORDS }, @@ -3733,6 +3897,7 @@ static PyMethodDef fontscMethods[] = { { "wxFont_GetPointSize", (PyCFunction) _wrap_wxFont_GetPointSize, METH_VARARGS | METH_KEYWORDS }, { "wxFont_Ok", (PyCFunction) _wrap_wxFont_Ok, METH_VARARGS | METH_KEYWORDS }, { "delete_wxFont", (PyCFunction) _wrap_delete_wxFont, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_wxFontFromNativeInfoString", (PyCFunction) _wrap_wxFont_wxFontFromNativeInfoString, METH_VARARGS | METH_KEYWORDS }, { "new_wxFontFromNativeInfo", (PyCFunction) _wrap_new_wxFontFromNativeInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxFont", (PyCFunction) _wrap_new_wxFont, METH_VARARGS | METH_KEYWORDS }, { "wxFontMapper_GetDefaultConfigPath", (PyCFunction) _wrap_wxFontMapper_GetDefaultConfigPath, METH_VARARGS | METH_KEYWORDS }, @@ -3948,6 +4113,10 @@ SWIGEXPORT(void) initfontsc() { PyDict_SetItemString(d,"wxFONTENCODING_CP12_MAX", PyInt_FromLong((long) wxFONTENCODING_CP12_MAX)); PyDict_SetItemString(d,"wxFONTENCODING_UTF7", PyInt_FromLong((long) wxFONTENCODING_UTF7)); PyDict_SetItemString(d,"wxFONTENCODING_UTF8", PyInt_FromLong((long) wxFONTENCODING_UTF8)); + PyDict_SetItemString(d,"wxFONTENCODING_GB2312", PyInt_FromLong((long) wxFONTENCODING_GB2312)); + PyDict_SetItemString(d,"wxFONTENCODING_BIG5", PyInt_FromLong((long) wxFONTENCODING_BIG5)); + PyDict_SetItemString(d,"wxFONTENCODING_SHIFT_JIS", PyInt_FromLong((long) wxFONTENCODING_SHIFT_JIS)); + PyDict_SetItemString(d,"wxFONTENCODING_EUC_JP", PyInt_FromLong((long) wxFONTENCODING_EUC_JP)); PyDict_SetItemString(d,"wxFONTENCODING_UNICODE", PyInt_FromLong((long) wxFONTENCODING_UNICODE)); PyDict_SetItemString(d,"wxFONTENCODING_MAX", PyInt_FromLong((long) wxFONTENCODING_MAX)); PyDict_SetItemString(d,"wxLANGUAGE_DEFAULT", PyInt_FromLong((long) wxLANGUAGE_DEFAULT)); diff --git a/wxPython/src/mac/fonts.py b/wxPython/src/mac/fonts.py index a52f613181..4f2f474f91 100644 --- a/wxPython/src/mac/fonts.py +++ b/wxPython/src/mac/fonts.py @@ -80,9 +80,12 @@ class wxFontMapperPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFontMapper(self) + def __del__(self, delfunc=fontsc.delete_wxFontMapper): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetAltForEncoding(self, *_args, **_kwargs): val = apply(fontsc.wxFontMapper_GetAltForEncoding,(self,) + _args, _kwargs) return val @@ -118,9 +121,16 @@ class wxFontPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFont(self) + def wxFontFromNativeInfoString(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_wxFontFromNativeInfoString,(self,) + _args, _kwargs) + if val: val = wxFontPtr(val) ; val.thisown = 1 + return val + def __del__(self, delfunc=fontsc.delete_wxFont): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(fontsc.wxFont_Ok,(self,) + _args, _kwargs) return val @@ -194,6 +204,12 @@ class wxFontPtr(wxObjectPtr): def GetWeightString(self, *_args, **_kwargs): val = apply(fontsc.wxFont_GetWeightString,(self,) + _args, _kwargs) return val + def SetNoAntiAliasing(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_SetNoAntiAliasing,(self,) + _args, _kwargs) + return val + def GetNoAntiAliasing(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_GetNoAntiAliasing,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxFont instance at %s>" % (self.this,) class wxFont(wxFontPtr): @@ -239,9 +255,12 @@ class wxFontEnumeratorPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFontEnumerator(self) + def __del__(self, delfunc=fontsc.delete_wxFontEnumerator): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def _setCallbackInfo(self, *_args, **_kwargs): val = apply(fontsc.wxFontEnumerator__setCallbackInfo,(self,) + _args, _kwargs) return val @@ -304,12 +323,18 @@ class wxLocalePtr : def __init__(self,this): self.this = this self.thisown = 0 - def Init(self, *_args, **_kwargs): - val = apply(fontsc.wxLocale_Init,(self,) + _args, _kwargs) + def __del__(self, delfunc=fontsc.delete_wxLocale): + if self.thisown == 1: + try: + delfunc(self) + except: + pass + def Init1(self, *_args, **_kwargs): + val = apply(fontsc.wxLocale_Init1,(self,) + _args, _kwargs) + return val + def Init2(self, *_args, **_kwargs): + val = apply(fontsc.wxLocale_Init2,(self,) + _args, _kwargs) return val - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxLocale(self) def IsOk(self, *_args, **_kwargs): val = apply(fontsc.wxLocale_IsOk,(self,) + _args, _kwargs) return val @@ -339,6 +364,14 @@ class wxLocalePtr : return val def __repr__(self): return "<C wxLocale instance at %s>" % (self.this,) + + def Init(self, *_args, **_kwargs): + if type(_args[0]) in [type(''), type(u'')]: + val = apply(self.Init1, _args, _kwargs) + else: + val = apply(self.Init2, _args, _kwargs) + return val + class wxLocale(wxLocalePtr): def __init__(self,*_args,**_kwargs): self.this = apply(fontsc.new_wxLocale,_args,_kwargs) @@ -351,9 +384,12 @@ class wxEncodingConverterPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxEncodingConverter(self) + def __del__(self, delfunc=fontsc.delete_wxEncodingConverter): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Init(self, *_args, **_kwargs): val = apply(fontsc.wxEncodingConverter_Init,(self,) + _args, _kwargs) return val @@ -483,6 +519,10 @@ wxFONTENCODING_CP1257 = fontsc.wxFONTENCODING_CP1257 wxFONTENCODING_CP12_MAX = fontsc.wxFONTENCODING_CP12_MAX wxFONTENCODING_UTF7 = fontsc.wxFONTENCODING_UTF7 wxFONTENCODING_UTF8 = fontsc.wxFONTENCODING_UTF8 +wxFONTENCODING_GB2312 = fontsc.wxFONTENCODING_GB2312 +wxFONTENCODING_BIG5 = fontsc.wxFONTENCODING_BIG5 +wxFONTENCODING_SHIFT_JIS = fontsc.wxFONTENCODING_SHIFT_JIS +wxFONTENCODING_EUC_JP = fontsc.wxFONTENCODING_EUC_JP wxFONTENCODING_UNICODE = fontsc.wxFONTENCODING_UNICODE wxFONTENCODING_MAX = fontsc.wxFONTENCODING_MAX wxLANGUAGE_DEFAULT = fontsc.wxLANGUAGE_DEFAULT diff --git a/wxPython/src/mac/frames.cpp b/wxPython/src/mac/frames.cpp index a6ad7ee4c0..2c75afc521 100644 --- a/wxPython/src/mac/frames.cpp +++ b/wxPython/src/mac/frames.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -498,8 +497,7 @@ static PyObject *_wrap_wxTopLevelWindow_SetIcon(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTopLevelWindow_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -535,8 +533,7 @@ static PyObject *_wrap_wxTopLevelWindow_SetIcons(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIconBundle_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIconBundle_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTopLevelWindow_SetIcons. Expected _wxIconBundle_p."); return NULL; } @@ -677,7 +674,7 @@ static PyObject *_wrap_wxTopLevelWindow_GetTitle(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -999,35 +996,6 @@ static PyObject *_wrap_wxFrame_GetMenuBar(PyObject *self, PyObject *args, PyObje return _resultobj; } -#define wxFrame_Command(_swigobj,_swigarg0) (_swigobj->Command(_swigarg0)) -static PyObject *_wrap_wxFrame_Command(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxFrame * _arg0; - int _arg1; - PyObject * _argo0 = 0; - char *_kwnames[] = { "self","id", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxFrame_Command",_kwnames,&_argo0,&_arg1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFrame_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFrame_Command. Expected _wxFrame_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxFrame_Command(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - #define wxFrame_ProcessCommand(_swigobj,_swigarg0) (_swigobj->ProcessCommand(_swigarg0)) static PyObject *_wrap_wxFrame_ProcessCommand(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2314,8 +2282,7 @@ static PyObject *_wrap_new_wxSplashScreenWindow(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi|OOl:new_wxSplashScreenWindow",_kwnames,&_argo0,&_argo1,&_arg2,&_obj3,&_obj4,&_arg5)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxSplashScreenWindow. Expected _wxBitmap_p."); return NULL; } @@ -2375,8 +2342,7 @@ static PyObject *_wrap_wxSplashScreenWindow_SetBitmap(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSplashScreenWindow_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -2493,8 +2459,7 @@ static PyObject *_wrap_new_wxSplashScreen(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OliOi|OOl:new_wxSplashScreen",_kwnames,&_argo0,&_arg1,&_arg2,&_argo3,&_arg4,&_obj5,&_obj6,&_arg7)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxSplashScreen. Expected _wxBitmap_p."); return NULL; } @@ -2663,7 +2628,6 @@ static PyMethodDef framescMethods[] = { { "wxFrame_GetStatusBar", (PyCFunction) _wrap_wxFrame_GetStatusBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_CreateStatusBar", (PyCFunction) _wrap_wxFrame_CreateStatusBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_ProcessCommand", (PyCFunction) _wrap_wxFrame_ProcessCommand, METH_VARARGS | METH_KEYWORDS }, - { "wxFrame_Command", (PyCFunction) _wrap_wxFrame_Command, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_GetMenuBar", (PyCFunction) _wrap_wxFrame_GetMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_SetMenuBar", (PyCFunction) _wrap_wxFrame_SetMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_GetClientAreaOrigin", (PyCFunction) _wrap_wxFrame_GetClientAreaOrigin, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/frames.py b/wxPython/src/mac/frames.py index 26b4e08cff..0fae1a5d20 100644 --- a/wxPython/src/mac/frames.py +++ b/wxPython/src/mac/frames.py @@ -95,9 +95,6 @@ class wxFramePtr(wxTopLevelWindowPtr): def GetMenuBar(self, *_args, **_kwargs): val = apply(framesc.wxFrame_GetMenuBar,(self,) + _args, _kwargs) return val - def Command(self, *_args, **_kwargs): - val = apply(framesc.wxFrame_Command,(self,) + _args, _kwargs) - return val def ProcessCommand(self, *_args, **_kwargs): val = apply(framesc.wxFrame_ProcessCommand,(self,) + _args, _kwargs) return val @@ -145,6 +142,7 @@ class wxFramePtr(wxTopLevelWindowPtr): return val def __repr__(self): return "<C wxFrame instance at %s>" % (self.this,) + Command = ProcessCommand class wxFrame(wxFramePtr): def __init__(self,*_args,**_kwargs): self.this = apply(framesc.new_wxFrame,_args,_kwargs) diff --git a/wxPython/src/mac/gdi.cpp b/wxPython/src/mac/gdi.cpp index 171413ef9d..f654b07e1a 100644 --- a/wxPython/src/mac/gdi.cpp +++ b/wxPython/src/mac/gdi.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -183,6 +182,14 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { // Alternate 'constructor' wxCursor* wxPyStockCursor(int id) { return new wxCursor(id); + } + + wxCursor* wxCursorFromImage(const wxImage& image) { + #ifndef __WXMAC__ + return new wxCursor(image); + #else + return NULL; + #endif } // Alternate 'constructor' wxColour* wxNamedColour(const wxString& colorName) { @@ -346,8 +353,7 @@ static PyObject *_wrap_wxBitmapFromIcon(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxBitmapFromIcon",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapFromIcon. Expected _wxIcon_p."); return NULL; } @@ -416,8 +422,7 @@ static PyObject *_wrap_wxMaskColour(PyObject *self, PyObject *args, PyObject *kw if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMaskColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMaskColour. Expected _wxBitmap_p."); return NULL; } @@ -510,8 +515,7 @@ static PyObject *_wrap_wxIconFromBitmap(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxIconFromBitmap",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIconFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -558,6 +562,39 @@ static PyObject *_wrap_wxStockCursor(PyObject *self, PyObject *args, PyObject *k return _resultobj; } +static PyObject *_wrap_wxCursorFromImage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxCursor * _result; + wxImage * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "image", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCursorFromImage",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCursorFromImage. Expected _wxImage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxCursor *)wxCursorFromImage(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + static PyObject *_wrap_wxNamedColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxColour * _result; @@ -2003,8 +2040,7 @@ static PyObject *_wrap_wxBitmap_CopyFromIcon(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_CopyFromIcon. Expected _wxIcon_p."); return NULL; } @@ -2040,8 +2076,7 @@ static PyObject *_wrap_new_wxMask(PyObject *self, PyObject *args, PyObject *kwar if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxMask",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxMask. Expected _wxBitmap_p."); return NULL; } @@ -2393,8 +2428,7 @@ static PyObject *_wrap_wxIcon_CopyFromBitmap(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxIcon_CopyFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -2487,8 +2521,7 @@ static PyObject *_wrap_new_wxIconBundleFromIcon(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxIconBundleFromIcon",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxIconBundleFromIcon. Expected _wxIcon_p."); return NULL; } @@ -2557,8 +2590,7 @@ static PyObject *_wrap_wxIconBundle_AddIcon(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxIconBundle_AddIcon. Expected _wxIcon_p."); return NULL; } @@ -2934,9 +2966,17 @@ static PyObject *_wrap_wxColour_Set(PyObject *self, PyObject *args, PyObject *kw static PyObject * wxColour_Get(wxColour *self) { PyObject* rv = PyTuple_New(3); - PyTuple_SetItem(rv, 0, PyInt_FromLong(self->Red())); - PyTuple_SetItem(rv, 1, PyInt_FromLong(self->Green())); - PyTuple_SetItem(rv, 2, PyInt_FromLong(self->Blue())); + int red = -1; + int green = -1; + int blue = -1; + if (self->Ok()) { + red = self->Red(); + green = self->Green(); + blue = self->Blue(); + } + PyTuple_SetItem(rv, 0, PyInt_FromLong(red)); + PyTuple_SetItem(rv, 1, PyInt_FromLong(green)); + PyTuple_SetItem(rv, 2, PyInt_FromLong(blue)); return rv; } static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args, PyObject *kwargs) { @@ -2967,6 +3007,84 @@ static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } +static bool wxColour___eq__(wxColour *self,PyObject * obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } +static PyObject *_wrap_wxColour___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxColour * _arg0; + PyObject * _arg1; + wxColour temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxColour___eq__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxColour_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxColour___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxColour___ne__(wxColour *self,PyObject * obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxColour___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxColour * _arg0; + PyObject * _arg1; + wxColour temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxColour___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxColour_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxColour___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static void *SwigwxColourDatabaseTowxObject(void *ptr) { wxColourDatabase *src; wxObject *dest; @@ -3055,7 +3173,7 @@ static PyObject *_wrap_wxColourDatabase_FindName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4167,8 +4285,7 @@ static PyObject *_wrap_wxBrush_SetStipple(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBrush_SetStipple. Expected _wxBitmap_p."); return NULL; } @@ -4436,13 +4553,13 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args, PyObject *kwarg PyObject * _resultobj; bool _result; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; wxDC * _arg5; - long _arg6; - long _arg7; + wxCoord _arg6; + wxCoord _arg7; int _arg8 = (int ) wxCOPY; int _arg9 = (int ) FALSE; PyObject * _argo0 = 0; @@ -4450,7 +4567,7 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args, PyObject *kwarg char *_kwnames[] = { "self","xdest","ydest","width","height","source","xsrc","ysrc","logicalFunc","useMask", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OllllOll|ii:wxDC_Blit",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8,&_arg9)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiiiOii|ii:wxDC_Blit",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8,&_arg9)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4508,13 +4625,13 @@ static PyObject *_wrap_wxDC_Clear(PyObject *self, PyObject *args, PyObject *kwar static PyObject *_wrap_wxDC_CrossHair(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_CrossHair",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_CrossHair",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4565,14 +4682,14 @@ static PyObject *_wrap_wxDC_DestroyClippingRegion(PyObject *self, PyObject *args #define wxDC_DeviceToLogicalX(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalX(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalX",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalX",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4583,25 +4700,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalX(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalX(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalXRel(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalXRel(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalXRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalXRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4612,25 +4729,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalXRel(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalXRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalY(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalY(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalY",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalY",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4641,25 +4758,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalY(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalY(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalYRel(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalYRel(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalYRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalYRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4670,11 +4787,11 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalYRel(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalYRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -4682,17 +4799,17 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5; - long _arg6; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5; + wxCoord _arg6; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x1","y1","x2","y2","xc","yc", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollllll:wxDC_DrawArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiiiii:wxDC_DrawArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4716,14 +4833,14 @@ static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args, PyObject *kw static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","radius", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Olll:wxDC_DrawCircle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxDC_DrawCircle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4747,15 +4864,15 @@ static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawEllipse",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawEllipse",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4779,17 +4896,17 @@ static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawEllipticArc(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5; - long _arg6; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5; + wxCoord _arg6; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height","start","end", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollllll:wxDC_DrawEllipticArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiiiii:wxDC_DrawEllipticArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4814,14 +4931,14 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxDC * _arg0; wxIcon * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; PyObject * _argo1 = 0; char *_kwnames[] = { "self","icon","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll:wxDC_DrawIcon",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxDC_DrawIcon",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4831,8 +4948,7 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawIcon. Expected _wxIcon_p."); return NULL; } @@ -4935,8 +5051,7 @@ static PyObject *_wrap_wxDC_DrawImageLabel(PyObject *self, PyObject *args, PyObj return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDC_DrawImageLabel. Expected _wxBitmap_p."); return NULL; } @@ -4965,15 +5080,15 @@ static PyObject *_wrap_wxDC_DrawImageLabel(PyObject *self, PyObject *args, PyObj static PyObject *_wrap_wxDC_DrawLine(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x1","y1","x2","y2", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawLine",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawLine",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -4999,15 +5114,15 @@ static PyObject *_wrap_wxDC_DrawLines(PyObject *self, PyObject *args, PyObject * wxDC * _arg0; int _arg1; wxPoint * _arg2; - long _arg3 = (long ) 0; - long _arg4 = (long ) 0; + wxCoord _arg3 = (wxCoord ) 0; + wxCoord _arg4 = (wxCoord ) 0; PyObject * _argo0 = 0; int NPOINTS; PyObject * _obj2 = 0; char *_kwnames[] = { "self","points","xoffset","yoffset", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|ll:wxDC_DrawLines",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|ii:wxDC_DrawLines",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5046,8 +5161,8 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject wxDC * _arg0; int _arg1; wxPoint * _arg2; - long _arg3 = (long ) 0; - long _arg4 = (long ) 0; + wxCoord _arg3 = (wxCoord ) 0; + wxCoord _arg4 = (wxCoord ) 0; int _arg5 = (int ) wxODDEVEN_RULE; PyObject * _argo0 = 0; int NPOINTS; @@ -5055,7 +5170,7 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject char *_kwnames[] = { "self","points","xoffset","yoffset","fill_style", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|lli:wxDC_DrawPolygon",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|iii:wxDC_DrawPolygon",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5092,13 +5207,13 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_DrawPoint",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_DrawPoint",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5122,15 +5237,15 @@ static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args, PyObject * static PyObject *_wrap_wxDC_DrawRectangle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5232,16 +5347,16 @@ static PyObject *_wrap_wxDC_DrawRotatedText(PyObject *self, PyObject *args, PyOb static PyObject *_wrap_wxDC_DrawRoundedRectangle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5 = (long ) 20; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5 = (wxCoord ) 20; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height","radius", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll|l:wxDC_DrawRoundedRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii|i:wxDC_DrawRoundedRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5311,14 +5426,14 @@ static PyObject *_wrap_wxDC_DrawText(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; char *_kwnames[] = { "self","text","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll:wxDC_DrawText",_kwnames,&_argo0,&_obj1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxDC_DrawText",_kwnames,&_argo0,&_obj1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5436,8 +5551,8 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args, PyObject * PyObject * _resultobj; bool _result; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; wxColour * _arg3; int _arg4 = (int ) wxFLOOD_SURFACE; PyObject * _argo0 = 0; @@ -5446,7 +5561,7 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args, PyObject * char *_kwnames[] = { "self","x","y","colour","style", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OllO|i:wxDC_FloodFill",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiO|i:wxDC_FloodFill",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5533,7 +5648,7 @@ static PyObject *_wrap_wxDC_GetBrush(PyObject *self, PyObject *args, PyObject *k #define wxDC_GetCharHeight(_swigobj) (_swigobj->GetCharHeight()) static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -5550,18 +5665,18 @@ static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args, PyObje } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_GetCharHeight(_arg0); + _result = (wxCoord )wxDC_GetCharHeight(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_GetCharWidth(_swigobj) (_swigobj->GetCharWidth()) static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -5578,11 +5693,11 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_GetCharWidth(_arg0); + _result = (wxCoord )wxDC_GetCharWidth(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -5590,14 +5705,14 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObjec static PyObject *_wrap_wxDC_GetClippingBox(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long * _arg1; - long temp; - long * _arg2; - long temp0; - long * _arg3; - long temp1; - long * _arg4; - long temp2; + wxCoord * _arg1; + int temp; + wxCoord * _arg2; + int temp0; + wxCoord * _arg3; + int temp1; + wxCoord * _arg4; + int temp2; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -5846,7 +5961,7 @@ static PyObject *_wrap_wxDC_GetPen(PyObject *self, PyObject *args, PyObject *kwa return _resultobj; } -static wxColour * wxDC_GetPixel(wxDC *self,long x,long y) { +static wxColour * wxDC_GetPixel(wxDC *self,wxCoord x,wxCoord y) { wxColour* wc = new wxColour(); self->GetPixel(x, y, wc); return wc; @@ -5855,14 +5970,14 @@ static PyObject *_wrap_wxDC_GetPixel(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxColour * _result; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_GetPixel",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_GetPixel",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6030,10 +6145,10 @@ static PyObject *_wrap_wxDC_GetTextExtent(PyObject *self, PyObject *args, PyObje PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long * _arg2; - long temp; - long * _arg3; - long temp0; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; PyObject * _argo0 = 0; PyObject * _obj1 = 0; char *_kwnames[] = { "self","string", NULL }; @@ -6089,14 +6204,14 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args, Py PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long * _arg2; - long temp; - long * _arg3; - long temp0; - long * _arg4; - long temp1; - long * _arg5; - long temp2; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; + wxCoord * _arg4; + int temp1; + wxCoord * _arg5; + int temp2; wxFont * _arg6 = (wxFont *) NULL; PyObject * _argo0 = 0; PyObject * _obj1 = 0; @@ -6172,6 +6287,84 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxDC_GetMultiLineTextExtent(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->GetMultiLineTextExtent(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) +static PyObject *_wrap_wxDC_GetMultiLineTextExtent(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxDC * _arg0; + wxString * _arg1; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; + wxCoord * _arg4; + int temp1; + wxFont * _arg5 = (wxFont *) NULL; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _argo5 = 0; + char *_kwnames[] = { "self","text","font", NULL }; + + self = self; +{ + _arg2 = &temp; +} +{ + _arg3 = &temp0; +} +{ + _arg4 = &temp1; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxDC_GetMultiLineTextExtent",_kwnames,&_argo0,&_obj1,&_argo5)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetMultiLineTextExtent. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} + if (_argo5) { + if (_argo5 == Py_None) { _arg5 = NULL; } + else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxDC_GetMultiLineTextExtent. Expected _wxFont_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxDC_GetMultiLineTextExtent(_arg0,*_arg1,_arg2,_arg3,_arg4,_arg5); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg3)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg4)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + #define wxDC_GetTextForeground(_swigobj) (_swigobj->GetTextForeground()) static PyObject *_wrap_wxDC_GetTextForeground(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -6253,14 +6446,14 @@ static PyObject *_wrap_wxDC_GetUserScale(PyObject *self, PyObject *args, PyObjec #define wxDC_LogicalToDeviceX(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceX(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceX",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceX",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6271,25 +6464,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceX(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceX(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceXRel(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceXRel(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceXRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceXRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6300,25 +6493,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceXRel(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceXRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceY(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceY(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceY",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceY",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6329,25 +6522,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceY(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceY(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceYRel(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceYRel(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceYRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceYRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6358,18 +6551,18 @@ static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceYRel(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceYRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MaxX(_swigobj) (_swigobj->MaxX()) static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6386,18 +6579,18 @@ static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MaxX(_arg0); + _result = (wxCoord )wxDC_MaxX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MaxY(_swigobj) (_swigobj->MaxY()) static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6414,18 +6607,18 @@ static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MaxY(_arg0); + _result = (wxCoord )wxDC_MaxY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MinX(_swigobj) (_swigobj->MinX()) static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6442,18 +6635,18 @@ static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MinX(_arg0); + _result = (wxCoord )wxDC_MinX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MinY(_swigobj) (_swigobj->MinY()) static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6470,11 +6663,11 @@ static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MinY(_arg0); + _result = (wxCoord )wxDC_MinY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -6510,13 +6703,13 @@ static PyObject *_wrap_wxDC_Ok(PyObject *self, PyObject *args, PyObject *kwargs) static PyObject *_wrap_wxDC_SetDeviceOrigin(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_SetDeviceOrigin",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_SetDeviceOrigin",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6556,8 +6749,7 @@ static PyObject *_wrap_wxDC_SetBackground(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBackground. Expected _wxBrush_p."); return NULL; } @@ -6606,15 +6798,15 @@ static PyObject *_wrap_wxDC_SetBackgroundMode(PyObject *self, PyObject *args, Py static PyObject *_wrap_wxDC_SetClippingRegion(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_SetClippingRegion",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_SetClippingRegion",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6654,8 +6846,7 @@ static PyObject *_wrap_wxDC_SetClippingRegionAsRegion(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetClippingRegionAsRegion. Expected _wxRegion_p."); return NULL; } @@ -6727,8 +6918,7 @@ static PyObject *_wrap_wxDC_SetPalette(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPalette. Expected _wxPalette_p."); return NULL; } @@ -6764,8 +6954,7 @@ static PyObject *_wrap_wxDC_SetBrush(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBrush. Expected _wxBrush_p."); return NULL; } @@ -6801,8 +6990,7 @@ static PyObject *_wrap_wxDC_SetFont(PyObject *self, PyObject *args, PyObject *kw } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetFont. Expected _wxFont_p."); return NULL; } @@ -6957,8 +7145,7 @@ static PyObject *_wrap_wxDC_SetPen(PyObject *self, PyObject *args, PyObject *kwa } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPen. Expected _wxPen_p."); return NULL; } @@ -7148,15 +7335,15 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args, PyObject PyObject * _resultobj; wxDC * _arg0; wxBitmap * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; int _arg4 = (int ) FALSE; PyObject * _argo0 = 0; PyObject * _argo1 = 0; char *_kwnames[] = { "self","bitmap","x","y","useMask", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll|i:wxDC_DrawBitmap",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii|i:wxDC_DrawBitmap",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7166,8 +7353,7 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawBitmap. Expected _wxBitmap_p."); return NULL; } @@ -7582,91 +7768,8 @@ static PyObject *_wrap_wxDC_GetBoundingBox(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyPoints,PyObject * pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyPoints) || PyTuple_Check(pyPoints); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyPoints)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyPoints); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the point coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyPoints, i); - } - else { - obj = PySequence_GetItem(pyPoints, i); - } - if (! _2int_seq_helper(obj, &x1, &y1)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - - // Now draw the point - self->DrawPoint(x1, y1); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; +static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXPoint, pyCoords, pyPens, pyBrushes); } static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7674,13 +7777,15 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj wxDC * _arg0; PyObject * _arg1; PyObject * _arg2; + PyObject * _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pyPoints","pyPens", NULL }; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDC__DrawPointList",_kwnames,&_argo0,&_obj1,&_obj2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawPointList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7695,9 +7800,12 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj { _arg2 = _obj2; } +{ + _arg3 = _obj3; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (PyObject *)wxDC__DrawPointList(_arg0,_arg1,_arg2); + _result = (PyObject *)wxDC__DrawPointList(_arg0,_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -7707,91 +7815,8 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyLines,PyObject * pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyLines) || PyTuple_Check(pyLines); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1, x2, y2; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyLines)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyLines); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the line coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyLines, i); - } - else { - obj = PySequence_GetItem(pyLines, i); - } - if (! _4int_seq_helper(obj, &x1, &y1, &x2, &y2)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - // Now draw the line - self->DrawLine(x1, y1, x2, y2); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x1,y1, x2,y2) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; +static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXLine, pyCoords, pyPens, pyBrushes); } static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7799,13 +7824,15 @@ static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObje wxDC * _arg0; PyObject * _arg1; PyObject * _arg2; + PyObject * _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pyLines","pyPens", NULL }; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDC__DrawLineList",_kwnames,&_argo0,&_obj1,&_obj2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawLineList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7820,9 +7847,205 @@ static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObje { _arg2 = _obj2; } +{ + _arg3 = _obj3; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (PyObject *)wxDC__DrawLineList(_arg0,_arg1,_arg2); + _result = (PyObject *)wxDC__DrawLineList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawRectangleList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXRectangle, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawRectangleList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawRectangleList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawRectangleList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawRectangleList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawEllipseList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXEllipse, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawEllipseList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawEllipseList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawEllipseList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawEllipseList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawPolygonList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXPolygon, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawPolygonList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawPolygonList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawPolygonList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawPolygonList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawTextList(wxDC *self,PyObject * textList,PyObject * pyPoints,PyObject * foregroundList,PyObject * backgroundList) { + return wxPyDrawTextList(*self, textList, pyPoints, foregroundList, backgroundList); + } +static PyObject *_wrap_wxDC__DrawTextList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _arg4; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + PyObject * _obj4 = 0; + char *_kwnames[] = { "self","textList","pyPoints","foregroundList","backgroundList", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOOO:wxDC__DrawTextList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&_obj4)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawTextList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + _arg4 = _obj4; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawTextList(_arg0,_arg1,_arg2,_arg3,_arg4); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -7894,8 +8117,7 @@ static PyObject *_wrap_wxMemoryDC_SelectObject(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryDC_SelectObject. Expected _wxBitmap_p."); return NULL; } @@ -7957,8 +8179,7 @@ static PyObject *_wrap_new_wxBufferedDC(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxBufferedDC. Expected _wxBitmap_p."); return NULL; } @@ -8104,8 +8325,7 @@ static PyObject *_wrap_new_wxBufferedPaintDC(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxBufferedPaintDC. Expected _wxBitmap_p."); return NULL; } @@ -8743,15 +8963,13 @@ static PyObject *_wrap_wxImageList_Add(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_Add. Expected _wxBitmap_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Add. Expected _wxBitmap_p."); return NULL; } @@ -8790,8 +9008,7 @@ static PyObject *_wrap_wxImageList_AddWithColourMask(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddWithColourMask. Expected _wxBitmap_p."); return NULL; } @@ -8832,8 +9049,7 @@ static PyObject *_wrap_wxImageList_AddIcon(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddIcon. Expected _wxIcon_p."); return NULL; } @@ -8870,8 +9086,7 @@ static PyObject *_wrap_wxImageList_Replace(PyObject *self, PyObject *args, PyObj } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Replace. Expected _wxBitmap_p."); return NULL; } @@ -8913,8 +9128,7 @@ static PyObject *_wrap_wxImageList_Draw(PyObject *self, PyObject *args, PyObject } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Draw. Expected _wxDC_p."); return NULL; } @@ -9084,15 +9298,15 @@ static void *SwigwxRegionTowxObject(void *ptr) { static PyObject *_wrap_new_wxRegion(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxRegion * _result; - long _arg0 = (long ) 0; - long _arg1 = (long ) 0; - long _arg2 = (long ) 0; - long _arg3 = (long ) 0; + wxCoord _arg0 = (wxCoord ) 0; + wxCoord _arg1 = (wxCoord ) 0; + wxCoord _arg2 = (wxCoord ) 0; + wxCoord _arg3 = (wxCoord ) 0; char *_kwnames[] = { "x","y","width","height", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|llll:new_wxRegion",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|iiii:new_wxRegion",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) return NULL; { PyThreadState* __tstate = wxPyBeginAllowThreads(); @@ -9171,13 +9385,13 @@ static PyObject *_wrap_wxRegion_Contains(PyObject *self, PyObject *args, PyObjec PyObject * _resultobj; wxRegionContain _result; wxRegion * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxRegion_Contains",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRegion_Contains",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9273,15 +9487,15 @@ static PyObject *_wrap_wxRegion_ContainsRectDim(PyObject *self, PyObject *args, PyObject * _resultobj; wxRegionContain _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","w","h", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_ContainsRectDim",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_ContainsRectDim",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9335,15 +9549,15 @@ static PyObject *_wrap_wxRegion_Intersect(PyObject *self, PyObject *args, PyObje PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Intersect",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Intersect",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9419,8 +9633,7 @@ static PyObject *_wrap_wxRegion_IntersectRegion(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_IntersectRegion. Expected _wxRegion_p."); return NULL; } @@ -9468,15 +9681,15 @@ static PyObject *_wrap_wxRegion_Union(PyObject *self, PyObject *args, PyObject * PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Union",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Union",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9552,8 +9765,7 @@ static PyObject *_wrap_wxRegion_UnionRegion(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_UnionRegion. Expected _wxRegion_p."); return NULL; } @@ -9573,15 +9785,15 @@ static PyObject *_wrap_wxRegion_Subtract(PyObject *self, PyObject *args, PyObjec PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Subtract",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Subtract",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9657,8 +9869,7 @@ static PyObject *_wrap_wxRegion_SubtractRegion(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_SubtractRegion. Expected _wxRegion_p."); return NULL; } @@ -9678,15 +9889,15 @@ static PyObject *_wrap_wxRegion_Xor(PyObject *self, PyObject *args, PyObject *kw PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Xor",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Xor",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -9762,8 +9973,7 @@ static PyObject *_wrap_wxRegion_XorRegion(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_XorRegion. Expected _wxRegion_p."); return NULL; } @@ -9799,8 +10009,7 @@ static PyObject *_wrap_new_wxRegionIterator(PyObject *self, PyObject *args, PyOb if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxRegionIterator",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxRegionIterator. Expected _wxRegion_p."); return NULL; } @@ -9852,7 +10061,7 @@ static PyObject *_wrap_delete_wxRegionIterator(PyObject *self, PyObject *args, P #define wxRegionIterator_GetX(_swigobj) (_swigobj->GetX()) static PyObject *_wrap_wxRegionIterator_GetX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -9869,18 +10078,18 @@ static PyObject *_wrap_wxRegionIterator_GetX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetX(_arg0); + _result = (wxCoord )wxRegionIterator_GetX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetY(_swigobj) (_swigobj->GetY()) static PyObject *_wrap_wxRegionIterator_GetY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -9897,18 +10106,18 @@ static PyObject *_wrap_wxRegionIterator_GetY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetY(_arg0); + _result = (wxCoord )wxRegionIterator_GetY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetW(_swigobj) (_swigobj->GetW()) static PyObject *_wrap_wxRegionIterator_GetW(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -9925,18 +10134,18 @@ static PyObject *_wrap_wxRegionIterator_GetW(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetW(_arg0); + _result = (wxCoord )wxRegionIterator_GetW(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetWidth(_swigobj) (_swigobj->GetWidth()) static PyObject *_wrap_wxRegionIterator_GetWidth(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -9953,18 +10162,18 @@ static PyObject *_wrap_wxRegionIterator_GetWidth(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetWidth(_arg0); + _result = (wxCoord )wxRegionIterator_GetWidth(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetH(_swigobj) (_swigobj->GetH()) static PyObject *_wrap_wxRegionIterator_GetH(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -9981,18 +10190,18 @@ static PyObject *_wrap_wxRegionIterator_GetH(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetH(_arg0); + _result = (wxCoord )wxRegionIterator_GetH(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetHeight(_swigobj) (_swigobj->GetHeight()) static PyObject *_wrap_wxRegionIterator_GetHeight(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -10009,11 +10218,11 @@ static PyObject *_wrap_wxRegionIterator_GetHeight(PyObject *self, PyObject *args } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetHeight(_arg0); + _result = (wxCoord )wxRegionIterator_GetHeight(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -10196,6 +10405,10 @@ static PyMethodDef gdicMethods[] = { { "new_wxBufferedDC", (PyCFunction) _wrap_new_wxBufferedDC, METH_VARARGS | METH_KEYWORDS }, { "wxMemoryDC_SelectObject", (PyCFunction) _wrap_wxMemoryDC_SelectObject, METH_VARARGS | METH_KEYWORDS }, { "new_wxMemoryDC", (PyCFunction) _wrap_new_wxMemoryDC, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawTextList", (PyCFunction) _wrap_wxDC__DrawTextList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawPolygonList", (PyCFunction) _wrap_wxDC__DrawPolygonList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawEllipseList", (PyCFunction) _wrap_wxDC__DrawEllipseList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawRectangleList", (PyCFunction) _wrap_wxDC__DrawRectangleList, METH_VARARGS | METH_KEYWORDS }, { "wxDC__DrawLineList", (PyCFunction) _wrap_wxDC__DrawLineList, METH_VARARGS | METH_KEYWORDS }, { "wxDC__DrawPointList", (PyCFunction) _wrap_wxDC__DrawPointList, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetBoundingBox", (PyCFunction) _wrap_wxDC_GetBoundingBox, METH_VARARGS | METH_KEYWORDS }, @@ -10240,6 +10453,7 @@ static PyMethodDef gdicMethods[] = { { "wxDC_LogicalToDeviceX", (PyCFunction) _wrap_wxDC_LogicalToDeviceX, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetUserScale", (PyCFunction) _wrap_wxDC_GetUserScale, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextForeground", (PyCFunction) _wrap_wxDC_GetTextForeground, METH_VARARGS | METH_KEYWORDS }, + { "wxDC_GetMultiLineTextExtent", (PyCFunction) _wrap_wxDC_GetMultiLineTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetFullTextExtent", (PyCFunction) _wrap_wxDC_GetFullTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextExtent", (PyCFunction) _wrap_wxDC_GetTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextBackground", (PyCFunction) _wrap_wxDC_GetTextBackground, METH_VARARGS | METH_KEYWORDS }, @@ -10327,6 +10541,8 @@ static PyMethodDef gdicMethods[] = { { "wxColourDatabase_Append", (PyCFunction) _wrap_wxColourDatabase_Append, METH_VARARGS | METH_KEYWORDS }, { "wxColourDatabase_FindName", (PyCFunction) _wrap_wxColourDatabase_FindName, METH_VARARGS | METH_KEYWORDS }, { "wxColourDatabase_FindColour", (PyCFunction) _wrap_wxColourDatabase_FindColour, METH_VARARGS | METH_KEYWORDS }, + { "wxColour___ne__", (PyCFunction) _wrap_wxColour___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxColour___eq__", (PyCFunction) _wrap_wxColour___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Get", (PyCFunction) _wrap_wxColour_Get, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Set", (PyCFunction) _wrap_wxColour_Set, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Ok", (PyCFunction) _wrap_wxColour_Ok, METH_VARARGS | METH_KEYWORDS }, @@ -10379,6 +10595,7 @@ static PyMethodDef gdicMethods[] = { { "new_wxGDIObject", (PyCFunction) _wrap_new_wxGDIObject, METH_VARARGS | METH_KEYWORDS }, { "wxMemoryDCFromDC", (PyCFunction) _wrap_wxMemoryDCFromDC, METH_VARARGS | METH_KEYWORDS }, { "wxNamedColour", (PyCFunction) _wrap_wxNamedColour, METH_VARARGS | METH_KEYWORDS }, + { "wxCursorFromImage", (PyCFunction) _wrap_wxCursorFromImage, METH_VARARGS | METH_KEYWORDS }, { "wxStockCursor", (PyCFunction) _wrap_wxStockCursor, METH_VARARGS | METH_KEYWORDS }, { "wxIconFromBitmap", (PyCFunction) _wrap_wxIconFromBitmap, METH_VARARGS | METH_KEYWORDS }, { "wxIconFromXPMData", (PyCFunction) _wrap_wxIconFromXPMData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/gdi.py b/wxPython/src/mac/gdi.py index 414fbecd02..792e9fb40d 100644 --- a/wxPython/src/mac/gdi.py +++ b/wxPython/src/mac/gdi.py @@ -4,13 +4,17 @@ import gdic from misc import * from fonts import * +import wx class wxGDIObjectPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxGDIObject(self) + def __del__(self, delfunc=gdic.delete_wxGDIObject): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetVisible(self, *_args, **_kwargs): val = apply(gdic.wxGDIObject_GetVisible,(self,) + _args, _kwargs) return val @@ -34,9 +38,12 @@ class wxBitmapPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxBitmap(self) + def __del__(self, delfunc=gdic.delete_wxBitmap): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPalette(self, *_args, **_kwargs): val = apply(gdic.wxBitmap_GetPalette,(self,) + _args, _kwargs) if val: val = wxPalettePtr(val) @@ -85,13 +92,10 @@ class wxBitmapPtr(wxGDIObjectPtr): def __repr__(self): return "<C wxBitmap instance at %s>" % (self.this,) - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxBitmap(self) - except: - pass - + def SetMaskColour(self, colour): + mask = wxMaskColour(self, colour) + self.SetMask(mask) + class wxBitmap(wxBitmapPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxBitmap,_args,_kwargs) @@ -121,9 +125,12 @@ class wxIconPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxIcon(self) + def __del__(self, delfunc=gdic.delete_wxIcon): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(gdic.wxIcon_Ok,(self,) + _args, _kwargs) return val @@ -150,14 +157,6 @@ class wxIconPtr(wxGDIObjectPtr): return val def __repr__(self): return "<C wxIcon instance at %s>" % (self.this,) - - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxIcon(self) - except: - pass - class wxIcon(wxIconPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxIcon,_args,_kwargs) @@ -170,9 +169,12 @@ class wxIconBundlePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxIconBundle(self) + def __del__(self, delfunc=gdic.delete_wxIconBundle): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddIcon(self, *_args, **_kwargs): val = apply(gdic.wxIconBundle_AddIcon,(self,) + _args, _kwargs) return val @@ -207,9 +209,12 @@ class wxCursorPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxCursor(self) + def __del__(self, delfunc=gdic.delete_wxCursor): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(gdic.wxCursor_Ok,(self,) + _args, _kwargs) return val @@ -226,9 +231,12 @@ class wxColourPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxColour(self) + def __del__(self, delfunc=gdic.delete_wxColour): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Red(self, *_args, **_kwargs): val = apply(gdic.wxColour_Red,(self,) + _args, _kwargs) return val @@ -247,11 +255,22 @@ class wxColourPtr(wxObjectPtr): def Get(self, *_args, **_kwargs): val = apply(gdic.wxColour_Get,(self,) + _args, _kwargs) return val + def __eq__(self, *_args, **_kwargs): + val = apply(gdic.wxColour___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(gdic.wxColour___ne__,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxColour instance at %s>" % (self.this,) asTuple = Get - def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxColour:' + str(self.asTuple()) + def __nonzero__(self): return self.Ok() + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) + class wxColour(wxColourPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxColour,_args,_kwargs) @@ -287,9 +306,12 @@ class wxPenPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPen(self) + def __del__(self, delfunc=gdic.delete_wxPen): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetCap(self, *_args, **_kwargs): val = apply(gdic.wxPen_GetCap,(self,) + _args, _kwargs) return val @@ -344,9 +366,12 @@ class wxPyPenPtr(wxPenPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPyPen(self) + def __del__(self, delfunc=gdic.delete_wxPyPen): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetDashes(self, *_args, **_kwargs): val = apply(gdic.wxPyPen_SetDashes,(self,) + _args, _kwargs) return val @@ -390,9 +415,12 @@ class wxBrushPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxBrush(self) + def __del__(self, delfunc=gdic.delete_wxBrush): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetColour(self, *_args, **_kwargs): val = apply(gdic.wxBrush_GetColour,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -456,9 +484,12 @@ class wxDCPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxDC(self) + def __del__(self, delfunc=gdic.delete_wxDC): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def BeginDrawing(self, *_args, **_kwargs): val = apply(gdic.wxDC_BeginDrawing,(self,) + _args, _kwargs) return val @@ -612,6 +643,9 @@ class wxDCPtr(wxObjectPtr): def GetFullTextExtent(self, *_args, **_kwargs): val = apply(gdic.wxDC_GetFullTextExtent,(self,) + _args, _kwargs) return val + def GetMultiLineTextExtent(self, *_args, **_kwargs): + val = apply(gdic.wxDC_GetMultiLineTextExtent,(self,) + _args, _kwargs) + return val def GetTextForeground(self, *_args, **_kwargs): val = apply(gdic.wxDC_GetTextForeground,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -746,6 +780,18 @@ class wxDCPtr(wxObjectPtr): def _DrawLineList(self, *_args, **_kwargs): val = apply(gdic.wxDC__DrawLineList,(self,) + _args, _kwargs) return val + def _DrawRectangleList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawRectangleList,(self,) + _args, _kwargs) + return val + def _DrawEllipseList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawEllipseList,(self,) + _args, _kwargs) + return val + def _DrawPolygonList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawPolygonList,(self,) + _args, _kwargs) + return val + def _DrawTextList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawTextList,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxDC instance at %s>" % (self.this,) @@ -756,7 +802,8 @@ class wxDCPtr(wxObjectPtr): pens = [pens] elif len(pens) != len(points): raise ValueError('points and pens must have same length') - return self._DrawPointList(points, pens) + return self._DrawPointList(points, pens, []) + def DrawLineList(self, lines, pens=None): if pens is None: @@ -765,7 +812,83 @@ class wxDCPtr(wxObjectPtr): pens = [pens] elif len(pens) != len(lines): raise ValueError('lines and pens must have same length') - return self._DrawLineList(lines, pens) + return self._DrawLineList(lines, pens, []) + + + def DrawRectangleList(self, rectangles, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(rectangles): + raise ValueError('rectangles and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(rectangles): + raise ValueError('rectangles and brushes must have same length') + return self._DrawRectangleList(rectangles, pens, brushes) + + + def DrawEllipseList(self, ellipses, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(ellipses): + raise ValueError('ellipses and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(ellipses): + raise ValueError('ellipses and brushes must have same length') + return self._DrawEllipseList(ellipses, pens, brushes) + + + def DrawPolygonList(self, polygons, pens=None, brushes=None): + ## Note: This does not currently support fill style or offset + ## you can always use the non-List version if need be. + ## I really would like to support fill-style, however, + ## but wxODDEVEN_RULE does not appear to be defined at the Python level + ## [It's in wx.py... --Robin] + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(polygons): + raise ValueError('polygons and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(polygons): + raise ValueError('polygons and brushes must have same length') + return self._DrawPolygonList(polygons, pens, brushes) + + + def DrawTextList(self, textList, coords, foregrounds = None, backgrounds = None, fonts = None): + ## NOTE: this does not currently support changing the font + ## Make sure you set Background mode to wxSolid (DC.SetBackgroundMode) + ## If you want backgounds to do anything. + if type(textList) == type(''): + textList = [textList] + elif len(textList) != len(coords): + raise ValueError('textlist and coords must have same length') + if foregrounds is None: + foregrounds = [] + elif isinstance(foregrounds, wxColourPtr): + foregrounds = [foregrounds] + elif len(foregrounds) != len(coords): + raise ValueError('foregrounds and coords must have same length') + if backgrounds is None: + backgrounds = [] + elif isinstance(backgrounds, wxColourPtr): + backgrounds = [backgrounds] + elif len(backgrounds) != len(coords): + raise ValueError('backgrounds and coords must have same length') + return self._DrawTextList(textList, coords, foregrounds, backgrounds) class wxDC(wxDCPtr): def __init__(self,this): @@ -898,9 +1021,12 @@ class wxPalettePtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPalette(self) + def __del__(self, delfunc=gdic.delete_wxPalette): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPixel(self, *_args, **_kwargs): val = apply(gdic.wxPalette_GetPixel,(self,) + _args, _kwargs) return val @@ -924,9 +1050,12 @@ class wxImageListPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxImageList(self) + def __del__(self, delfunc=gdic.delete_wxImageList): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Add(self, *_args, **_kwargs): val = apply(gdic.wxImageList_Add,(self,) + _args, _kwargs) return val @@ -968,9 +1097,12 @@ class wxRegionPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxRegion(self) + def __del__(self, delfunc=gdic.delete_wxRegion): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Clear(self, *_args, **_kwargs): val = apply(gdic.wxRegion_Clear,(self,) + _args, _kwargs) return val @@ -1043,9 +1175,12 @@ class wxRegionIteratorPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxRegionIterator(self) + def __del__(self, delfunc=gdic.delete_wxRegionIterator): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetX(self, *_args, **_kwargs): val = apply(gdic.wxRegionIterator_GetX,(self,) + _args, _kwargs) return val @@ -1136,6 +1271,11 @@ def wxStockCursor(*_args, **_kwargs): if val: val = wxCursorPtr(val); val.thisown = 1 return val +def wxCursorFromImage(*_args, **_kwargs): + val = apply(gdic.wxCursorFromImage,_args,_kwargs) + if val: val = wxCursorPtr(val); val.thisown = 1 + return val + def wxNamedColour(*_args, **_kwargs): val = apply(gdic.wxNamedColour,_args,_kwargs) if val: val = wxColourPtr(val); val.thisown = 1 diff --git a/wxPython/src/mac/grid.cpp b/wxPython/src/mac/grid.cpp index 3530b48de6..9225f49921 100644 --- a/wxPython/src/mac/grid.cpp +++ b/wxPython/src/mac/grid.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -106,7 +105,7 @@ PyObject* wxPyMake_##TYPE(TYPE* source) { \ /* Otherwise make a new wrapper for it the old fashioned way and \ give it the OOR treatment */ \ if (! target) { \ - target = wxPyConstructObject(source, #TYPE, FALSE); \ + target = wxPyConstructObject(source, wxT(#TYPE), FALSE); \ if (target) \ source->SetClientObject(new wxPyOORClientData(target)); \ } \ @@ -541,7 +540,7 @@ public: PyObject* go = wxPyMake_wxObject(&grid); PyObject* dco = wxPyMake_wxObject(&dc); PyObject* ao = wxPyMake_wxGridCellAttr(&attr); - PyObject* ro = wxPyConstructObject((void*)&rect, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOOiii)", go, ao, dco, ro, row, col, isSelected)); @@ -705,7 +704,7 @@ public: wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "PaintBackground)"))) { PyObject* ao = wxPyMake_wxGridCellAttr(attr); - PyObject* ro = wxPyConstructObject((void*)&rectCell, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rectCell, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", ro, ao)); @@ -905,6 +904,21 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { return FALSE; } +PyObject* wxGridCellCoordsArray_helper(const wxGridCellCoordsArray* source) +{ + PyObject* list = PyList_New(0); + size_t idx; + for (idx = 0; idx < source->GetCount(); idx += 1) { + wxGridCellCoords& coord = source->Item(idx); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(coord.GetRow())); + PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(coord.GetCol())); + PyList_Append(list, tup); + Py_DECREF(tup); + } + return list; +} + typedef wxGrid::wxGridSelectionModes WXGRIDSELECTIONMODES; #ifdef __cplusplus extern "C" { @@ -1100,22 +1114,19 @@ static PyObject *_wrap_wxGridCellRenderer_Draw(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellRenderer_Draw. Expected _wxGrid_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxGridCellRenderer_Draw. Expected _wxGridCellAttr_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGridCellRenderer_Draw. Expected _wxDC_p."); return NULL; } @@ -1165,22 +1176,19 @@ static PyObject *_wrap_wxGridCellRenderer_GetBestSize(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellRenderer_GetBestSize. Expected _wxGrid_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxGridCellRenderer_GetBestSize. Expected _wxGridCellAttr_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGridCellRenderer_GetBestSize. Expected _wxDC_p."); return NULL; } @@ -1893,6 +1901,71 @@ static PyObject *_wrap_wxGridCellEditor_SetControl(PyObject *self, PyObject *arg return _resultobj; } +#define wxGridCellEditor_GetCellAttr(_swigobj) (_swigobj->GetCellAttr()) +static PyObject *_wrap_wxGridCellEditor_GetCellAttr(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellAttr * _result; + wxGridCellEditor * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGridCellEditor_GetCellAttr",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGridCellEditor_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGridCellEditor_GetCellAttr. Expected _wxGridCellEditor_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxGridCellAttr *)wxGridCellEditor_GetCellAttr(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ _resultobj = wxPyMake_wxGridCellAttr(_result); } + return _resultobj; +} + +#define wxGridCellEditor_SetCellAttr(_swigobj,_swigarg0) (_swigobj->SetCellAttr(_swigarg0)) +static PyObject *_wrap_wxGridCellEditor_SetCellAttr(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellEditor * _arg0; + wxGridCellAttr * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","attr", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGridCellEditor_SetCellAttr",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGridCellEditor_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGridCellEditor_SetCellAttr. Expected _wxGridCellEditor_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellAttr_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_SetCellAttr. Expected _wxGridCellAttr_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGridCellEditor_SetCellAttr(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxGridCellEditor_SetParameters(_swigobj,_swigarg0) (_swigobj->SetParameters(_swigarg0)) static PyObject *_wrap_wxGridCellEditor_SetParameters(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2311,8 +2384,7 @@ static PyObject *_wrap_wxGridCellEditor_IsAcceptedKey(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_IsAcceptedKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2347,8 +2419,7 @@ static PyObject *_wrap_wxGridCellEditor_StartingKey(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_StartingKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2412,8 +2483,7 @@ static PyObject *_wrap_wxGridCellEditor_HandleReturn(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_HandleReturn. Expected _wxKeyEvent_p."); return NULL; } @@ -2670,8 +2740,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_IsAcceptedKey(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_IsAcceptedKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2707,8 +2776,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_StartingKey(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_StartingKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2772,8 +2840,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_HandleReturn(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_HandleReturn. Expected _wxKeyEvent_p."); return NULL; } @@ -3447,8 +3514,7 @@ static PyObject *_wrap_wxGridCellAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -5012,7 +5078,7 @@ static PyObject *_wrap_wxGridTableBase_GetValue(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5092,7 +5158,7 @@ static PyObject *_wrap_wxGridTableBase_GetTypeName(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5603,7 +5669,7 @@ static PyObject *_wrap_wxGridTableBase_GetRowLabelValue(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5641,7 +5707,7 @@ static PyObject *_wrap_wxGridTableBase_GetColLabelValue(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6042,7 +6108,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetTypeName(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6368,7 +6434,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetRowLabelValue(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6406,7 +6472,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetColLabelValue(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7275,8 +7341,7 @@ static PyObject *_wrap_wxGridCellCoords___cmp__(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellCoords_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellCoords_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellCoords___cmp__. Expected _wxGridCellCoords_p."); return NULL; } @@ -7563,8 +7628,7 @@ static PyObject *_wrap_wxGrid_ProcessTableMessage(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridTableMessage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridTableMessage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_ProcessTableMessage. Expected _wxGridTableMessage_p."); return NULL; } @@ -7894,8 +7958,7 @@ static PyObject *_wrap_wxGrid_DrawCellHighlight(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_DrawCellHighlight. Expected _wxDC_p."); return NULL; } @@ -7945,8 +8008,7 @@ static PyObject *_wrap_wxGrid_DrawTextRectangle(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_DrawTextRectangle. Expected _wxDC_p."); return NULL; } @@ -8008,8 +8070,7 @@ static PyObject *_wrap_wxGrid_GetTextBoxSize(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_GetTextBoxSize. Expected _wxDC_p."); return NULL; } @@ -8025,11 +8086,10 @@ static PyObject *_wrap_wxGrid_GetTextBoxSize(PyObject *self, PyObject *args, PyO PyObject* item = PySequence_GetItem(_obj2, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg2->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg2->Add(PyString_AsString(str)); #endif + _arg2->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -9492,7 +9552,7 @@ static PyObject *_wrap_wxGrid_GetRowLabelValue(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9530,7 +9590,7 @@ static PyObject *_wrap_wxGrid_GetColLabelValue(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9807,8 +9867,7 @@ static PyObject *_wrap_wxGrid_SetLabelFont(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_SetLabelFont. Expected _wxFont_p."); return NULL; } @@ -11666,8 +11725,7 @@ static PyObject *_wrap_wxGrid_SetDefaultCellFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_SetDefaultCellFont. Expected _wxFont_p."); return NULL; } @@ -11705,8 +11763,7 @@ static PyObject *_wrap_wxGrid_SetCellFont(PyObject *self, PyObject *args, PyObje } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGrid_SetCellFont. Expected _wxFont_p."); return NULL; } @@ -12176,7 +12233,7 @@ static PyObject *_wrap_wxGrid_GetCellValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -12504,6 +12561,267 @@ static PyObject *_wrap_wxGrid_IsInSelection(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxGrid_GetSelectedCells(_swigobj) (_swigobj->GetSelectedCells()) +static PyObject *_wrap_wxGrid_GetSelectedCells(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedCells",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedCells. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectedCells(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectionBlockTopLeft(_swigobj) (_swigobj->GetSelectionBlockTopLeft()) +static PyObject *_wrap_wxGrid_GetSelectionBlockTopLeft(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectionBlockTopLeft",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectionBlockTopLeft. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectionBlockTopLeft(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectionBlockBottomRight(_swigobj) (_swigobj->GetSelectionBlockBottomRight()) +static PyObject *_wrap_wxGrid_GetSelectionBlockBottomRight(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectionBlockBottomRight",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectionBlockBottomRight. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectionBlockBottomRight(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectedRows(_swigobj) (_swigobj->GetSelectedRows()) +static PyObject *_wrap_wxGrid_GetSelectedRows(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxArrayInt * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedRows",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedRows. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxArrayInt (wxGrid_GetSelectedRows(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = PyList_New(0); + size_t idx; + for (idx = 0; idx < _result->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong(_result->Item(idx)); + PyList_Append(_resultobj, val); + Py_DECREF(val); + } + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectedCols(_swigobj) (_swigobj->GetSelectedCols()) +static PyObject *_wrap_wxGrid_GetSelectedCols(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxArrayInt * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedCols",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedCols. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxArrayInt (wxGrid_GetSelectedCols(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = PyList_New(0); + size_t idx; + for (idx = 0; idx < _result->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong(_result->Item(idx)); + PyList_Append(_resultobj, val); + Py_DECREF(val); + } + delete _result; +} + return _resultobj; +} + +#define wxGrid_DeselectRow(_swigobj,_swigarg0) (_swigobj->DeselectRow(_swigarg0)) +static PyObject *_wrap_wxGrid_DeselectRow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","row", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxGrid_DeselectRow",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectRow. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectRow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxGrid_DeselectCol(_swigobj,_swigarg0) (_swigobj->DeselectCol(_swigarg0)) +static PyObject *_wrap_wxGrid_DeselectCol(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","col", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxGrid_DeselectCol",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectCol. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectCol(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxGrid_DeselectCell(_swigobj,_swigarg0,_swigarg1) (_swigobj->DeselectCell(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxGrid_DeselectCell(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + int _arg2; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","row","col", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxGrid_DeselectCell",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectCell. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectCell(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxGrid_BlockToDeviceRect(_swigobj,_swigarg0,_swigarg1) (_swigobj->BlockToDeviceRect(_swigarg0,_swigarg1)) static PyObject *_wrap_wxGrid_BlockToDeviceRect(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -14301,6 +14619,14 @@ static PyMethodDef gridcMethods[] = { { "wxGrid_GetSelectionForeground", (PyCFunction) _wrap_wxGrid_GetSelectionForeground, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_GetSelectionBackground", (PyCFunction) _wrap_wxGrid_GetSelectionBackground, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_BlockToDeviceRect", (PyCFunction) _wrap_wxGrid_BlockToDeviceRect, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectCell", (PyCFunction) _wrap_wxGrid_DeselectCell, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectCol", (PyCFunction) _wrap_wxGrid_DeselectCol, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectRow", (PyCFunction) _wrap_wxGrid_DeselectRow, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedCols", (PyCFunction) _wrap_wxGrid_GetSelectedCols, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedRows", (PyCFunction) _wrap_wxGrid_GetSelectedRows, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectionBlockBottomRight", (PyCFunction) _wrap_wxGrid_GetSelectionBlockBottomRight, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectionBlockTopLeft", (PyCFunction) _wrap_wxGrid_GetSelectionBlockTopLeft, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedCells", (PyCFunction) _wrap_wxGrid_GetSelectedCells, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_IsInSelection", (PyCFunction) _wrap_wxGrid_IsInSelection, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_ClearSelection", (PyCFunction) _wrap_wxGrid_ClearSelection, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_IsSelection", (PyCFunction) _wrap_wxGrid_IsSelection, METH_VARARGS | METH_KEYWORDS }, @@ -14617,6 +14943,8 @@ static PyMethodDef gridcMethods[] = { { "wxGridCellEditor_DecRef", (PyCFunction) _wrap_wxGridCellEditor_DecRef, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_IncRef", (PyCFunction) _wrap_wxGridCellEditor_IncRef, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_SetParameters", (PyCFunction) _wrap_wxGridCellEditor_SetParameters, METH_VARARGS | METH_KEYWORDS }, + { "wxGridCellEditor_SetCellAttr", (PyCFunction) _wrap_wxGridCellEditor_SetCellAttr, METH_VARARGS | METH_KEYWORDS }, + { "wxGridCellEditor_GetCellAttr", (PyCFunction) _wrap_wxGridCellEditor_GetCellAttr, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_SetControl", (PyCFunction) _wrap_wxGridCellEditor_SetControl, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_GetControl", (PyCFunction) _wrap_wxGridCellEditor_GetControl, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_IsCreated", (PyCFunction) _wrap_wxGridCellEditor_IsCreated, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/grid.py b/wxPython/src/mac/grid.py index 7cbd1c0df1..760f902e4b 100644 --- a/wxPython/src/mac/grid.py +++ b/wxPython/src/mac/grid.py @@ -255,6 +255,12 @@ class wxGridCellEditorPtr : def SetControl(self, *_args, **_kwargs): val = apply(gridc.wxGridCellEditor_SetControl,(self,) + _args, _kwargs) return val + def GetCellAttr(self, *_args, **_kwargs): + val = apply(gridc.wxGridCellEditor_GetCellAttr,(self,) + _args, _kwargs) + return val + def SetCellAttr(self, *_args, **_kwargs): + val = apply(gridc.wxGridCellEditor_SetCellAttr,(self,) + _args, _kwargs) + return val def SetParameters(self, *_args, **_kwargs): val = apply(gridc.wxGridCellEditor_SetParameters,(self,) + _args, _kwargs) return val @@ -865,9 +871,12 @@ class wxGridTableMessagePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gridc=gridc): - if self.thisown == 1 : - gridc.delete_wxGridTableMessage(self) + def __del__(self, delfunc=gridc.delete_wxGridTableMessage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTableObject(self, *_args, **_kwargs): val = apply(gridc.wxGridTableMessage_SetTableObject,(self,) + _args, _kwargs) return val @@ -906,9 +915,12 @@ class wxGridCellCoordsPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gridc=gridc): - if self.thisown == 1 : - gridc.delete_wxGridCellCoords(self) + def __del__(self, delfunc=gridc.delete_wxGridCellCoords): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetRow(self, *_args, **_kwargs): val = apply(gridc.wxGridCellCoords_GetRow,(self,) + _args, _kwargs) return val @@ -932,8 +944,16 @@ class wxGridCellCoordsPtr : return val def __repr__(self): return "<C wxGridCellCoords instance at %s>" % (self.this,) - def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxGridCellCoords'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.SetRow(val) + elif index == 1: self.SetCol(val) + else: raise IndexError + class wxGridCellCoords(wxGridCellCoordsPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gridc.new_wxGridCellCoords,_args,_kwargs) @@ -1433,6 +1453,30 @@ class wxGridPtr(wxScrolledWindowPtr): def IsInSelection(self, *_args, **_kwargs): val = apply(gridc.wxGrid_IsInSelection,(self,) + _args, _kwargs) return val + def GetSelectedCells(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedCells,(self,) + _args, _kwargs) + return val + def GetSelectionBlockTopLeft(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectionBlockTopLeft,(self,) + _args, _kwargs) + return val + def GetSelectionBlockBottomRight(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectionBlockBottomRight,(self,) + _args, _kwargs) + return val + def GetSelectedRows(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedRows,(self,) + _args, _kwargs) + return val + def GetSelectedCols(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedCols,(self,) + _args, _kwargs) + return val + def DeselectRow(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectRow,(self,) + _args, _kwargs) + return val + def DeselectCol(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectCol,(self,) + _args, _kwargs) + return val + def DeselectCell(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectCell,(self,) + _args, _kwargs) + return val def BlockToDeviceRect(self, *_args, **_kwargs): val = apply(gridc.wxGrid_BlockToDeviceRect,(self,) + _args, _kwargs) if val: val = wxRectPtr(val) ; val.thisown = 1 diff --git a/wxPython/src/mac/help.cpp b/wxPython/src/mac/help.cpp index 585c3ef673..a658f1c2da 100644 --- a/wxPython/src/mac/help.cpp +++ b/wxPython/src/mac/help.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -247,7 +246,7 @@ static PyObject *_wrap_wxHelpEvent_GetLink(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -321,7 +320,7 @@ static PyObject *_wrap_wxHelpEvent_GetTarget(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -704,7 +703,7 @@ static PyObject *_wrap_wxHelpProvider_GetHelp(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/mac/help.py b/wxPython/src/mac/help.py index add867a444..ac1612ba19 100644 --- a/wxPython/src/mac/help.py +++ b/wxPython/src/mac/help.py @@ -65,9 +65,12 @@ class wxContextHelpPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,helpc=helpc): - if self.thisown == 1 : - helpc.delete_wxContextHelp(self) + def __del__(self, delfunc=helpc.delete_wxContextHelp): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def BeginContextHelp(self, *_args, **_kwargs): val = apply(helpc.wxContextHelp_BeginContextHelp,(self,) + _args, _kwargs) return val @@ -171,3 +174,4 @@ wxEVT_DETAILED_HELP = helpc.wxEVT_DETAILED_HELP # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxHelpEventPtr = wxHelpEventPtr +wx.wxContextHelpButtonPtr = wxContextHelpButtonPtr diff --git a/wxPython/src/mac/html.cpp b/wxPython/src/mac/html.cpp index 5925043ded..2b7d061e9a 100644 --- a/wxPython/src/mac/html.cpp +++ b/wxPython/src/mac/html.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -62,6 +61,7 @@ extern PyObject *SWIG_newvarlink(void); #include <wx/fs_zip.h> #include <wx/fs_inet.h> #include <wx/wfstream.h> +#include <wx/filesys.h> #include "printfw.h" @@ -197,6 +197,51 @@ private: // and adds itself to the wxModules list and to the wxHtmlWinParser. new wxPyHtmlTagsModule(tagHandlerClass); } + // here's the C++ version +class wxPyHtmlFilter : public wxHtmlFilter { + DECLARE_ABSTRACT_CLASS(wxPyHtmlFilter); +public: + wxPyHtmlFilter() : wxHtmlFilter() {} + + // returns TRUE if this filter is able to open&read given file + virtual bool CanRead(const wxFSFile& file) const { + bool rval = FALSE; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "CanRead"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + } + wxPyEndBlockThreads(); + return rval; + } + + + // Reads given file and returns HTML document. + // Returns empty string if opening failed + virtual wxString ReadFile(const wxFSFile& file) const { + wxString rval; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "ReadFile"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + PyObject* ro; + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + if (ro) { + rval = Py2wxString(ro); + Py_DECREF(ro); + } + } + wxPyEndBlockThreads(); + return rval; + } + + PYPRIVATE; +}; + +IMPLEMENT_ABSTRACT_CLASS(wxPyHtmlFilter, wxHtmlFilter); class wxPyHtmlWindow : public wxHtmlWindow { DECLARE_ABSTRACT_CLASS(wxPyHtmlWindow); @@ -205,7 +250,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_AUTO, - const wxString& name = "htmlWindow") + const wxString& name = wxPyHtmlWindowNameStr) : wxHtmlWindow(parent, id, pos, size, style, name) {}; wxPyHtmlWindow() : wxHtmlWindow() {}; @@ -228,7 +273,6 @@ public: DEC_PYCALLBACK__STRING(OnSetTitle); DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); -// DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); PYPRIVATE; }; @@ -236,14 +280,13 @@ IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); -// IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { bool found; wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "OnLinkClicked"))) { - PyObject* obj = wxPyConstructObject((void*)&link, "wxHtmlLinkInfo", 0); + PyObject* obj = wxPyConstructObject((void*)&link, wxT("wxHtmlLinkInfo"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); Py_DECREF(obj); } @@ -290,10 +333,6 @@ wxHtmlOpeningStatus wxPyHtmlWindow::OnOpeningURL(wxHtmlURLType type, - void wxHtmlWindow_AddFilter(wxHtmlFilter *filter) { - wxHtmlWindow::AddFilter(filter); - } - extern "C" SWIGEXPORT(void) inithtmlhelpc(); #ifdef __cplusplus extern "C" { @@ -321,33 +360,6 @@ static PyObject *_wrap_wxHtmlWinParser_AddTagHandler(PyObject *self, PyObject *a return _resultobj; } -static PyObject *_wrap_wxHtmlWindow_AddFilter(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxHtmlFilter * _arg0; - PyObject * _argo0 = 0; - char *_kwnames[] = { "filter", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_AddFilter",_kwnames,&_argo0)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlFilter_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_AddFilter. Expected _wxHtmlFilter_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxHtmlWindow_AddFilter(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static void *SwigwxHtmlLinkInfoTowxObject(void *ptr) { wxHtmlLinkInfo *src; wxObject *dest; @@ -431,7 +443,7 @@ static PyObject *_wrap_wxHtmlLinkInfo_GetHref(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -468,7 +480,7 @@ static PyObject *_wrap_wxHtmlLinkInfo_GetTarget(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -650,7 +662,7 @@ static PyObject *_wrap_wxHtmlTag_GetName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -734,7 +746,7 @@ static PyObject *_wrap_wxHtmlTag_GetParam(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -775,7 +787,7 @@ static PyObject *_wrap_wxHtmlTag_GetAllParams(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1107,6 +1119,34 @@ static PyObject *_wrap_wxHtmlParser_DoParsing(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxHtmlParser_StopParsing(_swigobj) (_swigobj->StopParsing()) +static PyObject *_wrap_wxHtmlParser_StopParsing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxHtmlParser * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlParser_StopParsing",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlParser_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlParser_StopParsing. Expected _wxHtmlParser_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxHtmlParser_StopParsing(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxHtmlParser_AddTagHandler(_swigobj,_swigarg0) (_swigobj->AddTagHandler(_swigarg0)) static PyObject *_wrap_wxHtmlParser_AddTagHandler(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1170,7 +1210,7 @@ static PyObject *_wrap_wxHtmlParser_GetSource(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2406,8 +2446,7 @@ static PyObject *_wrap_wxHtmlTagHandler_ParseInner(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlTagHandler_ParseInner. Expected _wxHtmlTag_p."); return NULL; } @@ -2595,8 +2634,7 @@ static PyObject *_wrap_wxHtmlWinTagHandler_ParseInner(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWinTagHandler_ParseInner. Expected _wxHtmlTag_p."); return NULL; } @@ -2913,8 +2951,7 @@ static PyObject *_wrap_wxHtmlCell_SetLink(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_SetLink. Expected _wxHtmlLinkInfo_p."); return NULL; } @@ -3087,8 +3124,7 @@ static PyObject *_wrap_wxHtmlCell_Draw(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_Draw. Expected _wxDC_p."); return NULL; } @@ -3126,8 +3162,7 @@ static PyObject *_wrap_wxHtmlCell_DrawInvisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_DrawInvisible. Expected _wxDC_p."); return NULL; } @@ -3292,8 +3327,7 @@ static PyObject *_wrap_new_wxHtmlWordCell(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxHtmlWordCell. Expected _wxDC_p."); return NULL; } @@ -3629,8 +3663,7 @@ static PyObject *_wrap_wxHtmlContainerCell_SetAlign(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetAlign. Expected _wxHtmlTag_p."); return NULL; } @@ -3696,8 +3729,7 @@ static PyObject *_wrap_wxHtmlContainerCell_SetWidthFloatFromTag(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetWidthFloatFromTag. Expected _wxHtmlTag_p."); return NULL; } @@ -3779,6 +3811,36 @@ static PyObject *_wrap_wxHtmlContainerCell_SetBackgroundColour(PyObject *self, P return _resultobj; } +#define wxHtmlContainerCell_GetBackgroundColour(_swigobj) (_swigobj->GetBackgroundColour()) +static PyObject *_wrap_wxHtmlContainerCell_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxHtmlContainerCell * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetBackgroundColour",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetBackgroundColour. Expected _wxHtmlContainerCell_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxHtmlContainerCell_GetBackgroundColour(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxHtmlContainerCell_SetBorder(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetBorder(_swigarg0,_swigarg1)) static PyObject *_wrap_wxHtmlContainerCell_SetBorder(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4012,6 +4074,78 @@ static PyObject *_wrap_new_wxHtmlWidgetCell(PyObject *self, PyObject *args, PyOb return _resultobj; } +static void *SwigwxPyHtmlFilterTowxObject(void *ptr) { + wxPyHtmlFilter *src; + wxObject *dest; + src = (wxPyHtmlFilter *) ptr; + dest = (wxObject *) src; + return (void *) dest; +} + +#define new_wxHtmlFilter() (new wxPyHtmlFilter()) +static PyObject *_wrap_new_wxHtmlFilter(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxHtmlFilter",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPyHtmlFilter *)new_wxHtmlFilter(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyHtmlFilter_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxHtmlFilter__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxHtmlFilter__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxHtmlFilter__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlFilter_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlFilter__setCallbackInfo. Expected _wxPyHtmlFilter_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxHtmlFilter__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void *SwigwxPyHtmlWindowTowxScrolledWindow(void *ptr) { wxPyHtmlWindow *src; wxScrolledWindow *dest; @@ -4395,7 +4529,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPage(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4432,7 +4566,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedAnchor(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4469,7 +4603,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPageTitle(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5100,6 +5234,33 @@ static PyObject *_wrap_wxHtmlWindow_HasAnchor(PyObject *self, PyObject *args, Py return _resultobj; } +static PyObject *_wrap_wxHtmlWindow_AddFilter(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "filter", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_AddFilter",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlFilter_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_AddFilter. Expected _wxPyHtmlFilter_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyHtmlWindow::AddFilter(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxHtmlWindow_base_OnLinkClicked(_swigobj,_swigarg0) (_swigobj->base_OnLinkClicked(_swigarg0)) static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -5120,8 +5281,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWindow_base_OnLinkClicked. Expected _wxHtmlLinkInfo_p."); return NULL; } @@ -5246,8 +5406,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnCellClicked(PyObject *self, PyObject } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxMouseEvent_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxMouseEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxHtmlWindow_base_OnCellClicked. Expected _wxMouseEvent_p."); return NULL; } @@ -6266,6 +6425,7 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlWindow_base_OnCellMouseHover", (PyCFunction) _wrap_wxHtmlWindow_base_OnCellMouseHover, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_base_OnSetTitle", (PyCFunction) _wrap_wxHtmlWindow_base_OnSetTitle, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_base_OnLinkClicked", (PyCFunction) _wrap_wxHtmlWindow_base_OnLinkClicked, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlWindow_AddFilter", (PyCFunction) _wrap_wxHtmlWindow_AddFilter, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_HasAnchor", (PyCFunction) _wrap_wxHtmlWindow_HasAnchor, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_ScrollToAnchor", (PyCFunction) _wrap_wxHtmlWindow_ScrollToAnchor, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_GetParser", (PyCFunction) _wrap_wxHtmlWindow_GetParser, METH_VARARGS | METH_KEYWORDS }, @@ -6293,11 +6453,14 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlWindow_Create", (PyCFunction) _wrap_wxHtmlWindow_Create, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreHtmlWindow", (PyCFunction) _wrap_new_wxPreHtmlWindow, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlWindow", (PyCFunction) _wrap_new_wxHtmlWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlFilter__setCallbackInfo", (PyCFunction) _wrap_wxHtmlFilter__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, + { "new_wxHtmlFilter", (PyCFunction) _wrap_new_wxHtmlFilter, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlWidgetCell", (PyCFunction) _wrap_new_wxHtmlWidgetCell, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlFontCell", (PyCFunction) _wrap_new_wxHtmlFontCell, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlColourCell", (PyCFunction) _wrap_new_wxHtmlColourCell, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_GetFirstCell", (PyCFunction) _wrap_wxHtmlContainerCell_GetFirstCell, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetBorder", (PyCFunction) _wrap_wxHtmlContainerCell_SetBorder, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlContainerCell_GetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetMinHeight", (PyCFunction) _wrap_wxHtmlContainerCell_SetMinHeight, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetWidthFloatFromTag", (PyCFunction) _wrap_wxHtmlContainerCell_SetWidthFloatFromTag, METH_VARARGS | METH_KEYWORDS }, @@ -6376,6 +6539,7 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlParser_PushTagHandler", (PyCFunction) _wrap_wxHtmlParser_PushTagHandler, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_GetSource", (PyCFunction) _wrap_wxHtmlParser_GetSource, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_AddTagHandler", (PyCFunction) _wrap_wxHtmlParser_AddTagHandler, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlParser_StopParsing", (PyCFunction) _wrap_wxHtmlParser_StopParsing, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_DoParsing", (PyCFunction) _wrap_wxHtmlParser_DoParsing, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_DoneParser", (PyCFunction) _wrap_wxHtmlParser_DoneParser, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_InitParser", (PyCFunction) _wrap_wxHtmlParser_InitParser, METH_VARARGS | METH_KEYWORDS }, @@ -6397,7 +6561,6 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlLinkInfo_GetTarget", (PyCFunction) _wrap_wxHtmlLinkInfo_GetTarget, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlLinkInfo_GetHref", (PyCFunction) _wrap_wxHtmlLinkInfo_GetHref, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlLinkInfo", (PyCFunction) _wrap_new_wxHtmlLinkInfo, METH_VARARGS | METH_KEYWORDS }, - { "wxHtmlWindow_AddFilter", (PyCFunction) _wrap_wxHtmlWindow_AddFilter, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWinParser_AddTagHandler", (PyCFunction) _wrap_wxHtmlWinParser_AddTagHandler, METH_VARARGS | METH_KEYWORDS }, { NULL, NULL } }; @@ -6469,6 +6632,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = { { "_wxObject","_wxHtmlPrintout",SwigwxHtmlPrintoutTowxObject}, { "_wxObject","_wxHtmlDCRenderer",SwigwxHtmlDCRendererTowxObject}, { "_wxObject","_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxObject}, + { "_wxObject","_wxPyHtmlFilter",SwigwxPyHtmlFilterTowxObject}, { "_wxObject","_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxObject}, { "_wxObject","_wxHtmlFontCell",SwigwxHtmlFontCellTowxObject}, { "_wxObject","_wxHtmlColourCell",SwigwxHtmlColourCellTowxObject}, @@ -6587,6 +6751,7 @@ SWIGEXPORT(void) inithtmlc() { wxPyPtrTypeMap_Add("wxHtmlTagHandler", "wxPyHtmlTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWinTagHandler", "wxPyHtmlWinTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWindow", "wxPyHtmlWindow"); + wxPyPtrTypeMap_Add("wxHtmlFilter", "wxPyHtmlFilter"); { int i; for (i = 0; _swig_mapping[i].n1; i++) diff --git a/wxPython/src/mac/html.py b/wxPython/src/mac/html.py index 09c3573b15..8766b132a2 100644 --- a/wxPython/src/mac/html.py +++ b/wxPython/src/mac/html.py @@ -135,6 +135,9 @@ class wxHtmlParserPtr(wxObjectPtr): def DoParsing(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlParser_DoParsing,(self,) + _args, _kwargs) return val + def StopParsing(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlParser_StopParsing,(self,) + _args, _kwargs) + return val def AddTagHandler(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlParser_AddTagHandler,(self,) + _args, _kwargs) return val @@ -450,6 +453,10 @@ class wxHtmlContainerCellPtr(wxHtmlCellPtr): def SetBackgroundColour(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlContainerCell_SetBackgroundColour,(self,) + _args, _kwargs) return val + def GetBackgroundColour(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlContainerCell_GetBackgroundColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val def SetBorder(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlContainerCell_SetBorder,(self,) + _args, _kwargs) return val @@ -509,6 +516,24 @@ class wxHtmlWidgetCell(wxHtmlWidgetCellPtr): +class wxHtmlFilterPtr(wxObjectPtr): + def __init__(self,this): + self.this = this + self.thisown = 0 + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlFilter__setCallbackInfo,(self,) + _args, _kwargs) + return val + def __repr__(self): + return "<C wxHtmlFilter instance at %s>" % (self.this,) +class wxHtmlFilter(wxHtmlFilterPtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(htmlc.new_wxHtmlFilter,_args,_kwargs) + self.thisown = 1 + self._setCallbackInfo(self, wxHtmlFilter) + + + + class wxHtmlWindowPtr(wxScrolledWindowPtr): def __init__(self,this): self.this = this @@ -624,9 +649,12 @@ class wxHtmlDCRendererPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlc=htmlc): - if self.thisown == 1 : - htmlc.delete_wxHtmlDCRenderer(self) + def __del__(self, delfunc=htmlc.delete_wxHtmlDCRenderer): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetDC(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlDCRenderer_SetDC,(self,) + _args, _kwargs) return val @@ -685,9 +713,12 @@ class wxHtmlEasyPrintingPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlc=htmlc): - if self.thisown == 1 : - htmlc.delete_wxHtmlEasyPrinting(self) + def __del__(self, delfunc=htmlc.delete_wxHtmlEasyPrinting): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def PreviewFile(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlEasyPrinting_PreviewFile,(self,) + _args, _kwargs) return val @@ -789,4 +820,5 @@ wx.wxHtmlContainerCellPtr = wxHtmlContainerCellPtr wx.wxHtmlWidgetCellPtr = wxHtmlWidgetCellPtr wx.wxHtmlWindowPtr = wxHtmlWindowPtr wx.wxHtmlLinkInfoPtr = wxHtmlLinkInfoPtr +wx.wxHtmlFilterPtr = wxHtmlFilterPtr diff --git a/wxPython/src/mac/htmlhelp.cpp b/wxPython/src/mac/htmlhelp.cpp index ac7b519d01..f2a32eb4a9 100644 --- a/wxPython/src/mac/htmlhelp.cpp +++ b/wxPython/src/mac/htmlhelp.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -191,7 +190,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetBookFile(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -228,7 +227,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetTitle(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -265,7 +264,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetStart(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -302,7 +301,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetBasePath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -549,7 +548,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetFullPath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -646,7 +645,7 @@ static PyObject *_wrap_wxHtmlContentsItem_GetName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -683,7 +682,7 @@ static PyObject *_wrap_wxHtmlContentsItem_GetPage(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -868,7 +867,7 @@ static PyObject *_wrap_wxHtmlSearchStatus_GetName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1076,7 +1075,7 @@ static PyObject *_wrap_wxHtmlHelpData_FindPageByName(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1118,7 +1117,7 @@ static PyObject *_wrap_wxHtmlHelpData_FindPageById(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/mac/htmlhelp.py b/wxPython/src/mac/htmlhelp.py index fd3a642bac..33fdd1e5df 100644 --- a/wxPython/src/mac/htmlhelp.py +++ b/wxPython/src/mac/htmlhelp.py @@ -154,9 +154,12 @@ class wxHtmlHelpDataPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlhelpc=htmlhelpc): - if self.thisown == 1 : - htmlhelpc.delete_wxHtmlHelpData(self) + def __del__(self, delfunc=htmlhelpc.delete_wxHtmlHelpData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTempDir(self, *_args, **_kwargs): val = apply(htmlhelpc.wxHtmlHelpData_SetTempDir,(self,) + _args, _kwargs) return val @@ -246,9 +249,12 @@ class wxHtmlHelpControllerPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlhelpc=htmlhelpc): - if self.thisown == 1 : - htmlhelpc.delete_wxHtmlHelpController(self) + def __del__(self, delfunc=htmlhelpc.delete_wxHtmlHelpController): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTitleFormat(self, *_args, **_kwargs): val = apply(htmlhelpc.wxHtmlHelpController_SetTitleFormat,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/image.cpp b/wxPython/src/mac/image.cpp index 67e500fe7f..56c9fdba2d 100644 --- a/wxPython/src/mac/image.cpp +++ b/wxPython/src/mac/image.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -226,8 +225,7 @@ static PyObject *_wrap_wxImageFromBitmap(PyObject *self, PyObject *args, PyObjec if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxImageFromBitmap",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -436,8 +434,7 @@ static PyObject *_wrap_wxBitmapFromImage(PyObject *self, PyObject *args, PyObjec if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxBitmapFromImage",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapFromImage. Expected _wxImage_p."); return NULL; } @@ -492,7 +489,7 @@ static PyObject *_wrap_wxImageHandler_GetName(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -529,7 +526,7 @@ static PyObject *_wrap_wxImageHandler_GetExtension(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -594,7 +591,7 @@ static PyObject *_wrap_wxImageHandler_GetMimeType(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1669,8 +1666,7 @@ static PyObject *_wrap_wxImage_SetMaskFromImage(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImage_SetMaskFromImage. Expected _wxImage_p."); return NULL; } @@ -2251,8 +2247,7 @@ static PyObject *_wrap_wxImage_Paste(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImage_Paste. Expected _wxImage_p."); return NULL; } @@ -2336,6 +2331,52 @@ static PyObject *_wrap_wxImage_GetData(PyObject *self, PyObject *args, PyObject return _resultobj; } +static void wxImage_SetDataBuffer(wxImage *self,PyObject * data) { + unsigned char* buffer; + int size; + + if (!PyArg_Parse(data, "w#", &buffer, &size)) + return; + + if (size != self->GetWidth() * self->GetHeight() * 3) { + PyErr_SetString(PyExc_TypeError, "Incorrect buffer size"); + return; + } + + self->SetData(buffer); + } +static PyObject *_wrap_wxImage_SetDataBuffer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxImage * _arg0; + PyObject * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","data", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxImage_SetDataBuffer",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImage_SetDataBuffer. Expected _wxImage_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxImage_SetDataBuffer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void wxImage_SetData(wxImage *self,PyObject * data) { unsigned char* dataPtr; @@ -2863,7 +2904,7 @@ static PyObject *_wrap_wxImage_GetOption(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3162,6 +3203,7 @@ static PyMethodDef imagecMethods[] = { { "wxImage_GetMaskRed", (PyCFunction) _wrap_wxImage_GetMaskRed, METH_VARARGS | METH_KEYWORDS }, { "wxImage_SetMaskColour", (PyCFunction) _wrap_wxImage_SetMaskColour, METH_VARARGS | METH_KEYWORDS }, { "wxImage_SetData", (PyCFunction) _wrap_wxImage_SetData, METH_VARARGS | METH_KEYWORDS }, + { "wxImage_SetDataBuffer", (PyCFunction) _wrap_wxImage_SetDataBuffer, METH_VARARGS | METH_KEYWORDS }, { "wxImage_GetData", (PyCFunction) _wrap_wxImage_GetData, METH_VARARGS | METH_KEYWORDS }, { "wxImage_GetDataBuffer", (PyCFunction) _wrap_wxImage_GetDataBuffer, METH_VARARGS | METH_KEYWORDS }, { "wxImage_Paste", (PyCFunction) _wrap_wxImage_Paste, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/image.py b/wxPython/src/mac/image.py index 51a559ae51..d19383f178 100644 --- a/wxPython/src/mac/image.py +++ b/wxPython/src/mac/image.py @@ -192,9 +192,12 @@ class wxImagePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,imagec=imagec): - if self.thisown == 1 : - imagec.delete_wxImage(self) + def __del__(self, delfunc=imagec.delete_wxImage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Create(self, *_args, **_kwargs): val = apply(imagec.wxImage_Create,(self,) + _args, _kwargs) return val @@ -271,6 +274,9 @@ class wxImagePtr(wxObjectPtr): def GetData(self, *_args, **_kwargs): val = apply(imagec.wxImage_GetData,(self,) + _args, _kwargs) return val + def SetDataBuffer(self, *_args, **_kwargs): + val = apply(imagec.wxImage_SetDataBuffer,(self,) + _args, _kwargs) + return val def SetData(self, *_args, **_kwargs): val = apply(imagec.wxImage_SetData,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/mdi.cpp b/wxPython/src/mac/mdi.cpp index a2f88b2722..4853c66297 100644 --- a/wxPython/src/mac/mdi.cpp +++ b/wxPython/src/mac/mdi.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/src/mac/misc.cpp b/wxPython/src/mac/misc.cpp index 4276df9e46..fed5e8915b 100644 --- a/wxPython/src/mac/misc.cpp +++ b/wxPython/src/mac/misc.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -59,6 +58,7 @@ extern PyObject *SWIG_newvarlink(void); #include <wx/resource.h> #include <wx/tooltip.h> #include <wx/busyinfo.h> +#include <wx/geometry.h> static PyObject* t_output_helper(PyObject* target, PyObject* o) { @@ -102,7 +102,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { if (dest != wxRect(0,0,0,0)) { wxPyBeginBlockThreads(); wxRect* newRect = new wxRect(dest); - obj = wxPyConstructObject((void*)newRect, "wxRect"); + obj = wxPyConstructObject((void*)newRect, wxT("wxRect")); PyObject* one = PyInt_FromLong(1); PyObject_SetAttrString(obj, "thisown", one); Py_DECREF(one); @@ -113,13 +113,6 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { return Py_None; } - wxString wxGetResource(const wxString& section, const wxString& entry, - const wxString& file = wxPyEmptyString) { - wxChar * retval; - wxGetResource(section, entry, &retval, file); - return retval; - } - #if 0 // we want to use the definition from the header, not the // one SWIG will generate. extern wxAcceleratorTable wxNullAcceleratorTable; @@ -201,43 +194,6 @@ static PyObject *_wrap_wxRegisterId(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } -static PyObject *_wrap_NewId(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - long _result; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":NewId",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxNewId(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); - return _resultobj; -} - -static PyObject *_wrap_RegisterId(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - long _arg0; - char *_kwnames[] = { "id", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:RegisterId",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxRegisterId(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static PyObject *_wrap_wxGetCurrentId(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; long _result; @@ -385,7 +341,7 @@ static PyObject *_wrap_wxNow(PyObject *self, PyObject *args, PyObject *kwargs) { if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -498,7 +454,7 @@ static PyObject *_wrap_wxGetOsDescription(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -623,67 +579,6 @@ static PyObject *_wrap_wxEnableTopLevelWindows(PyObject *self, PyObject *args, P return _resultobj; } -static PyObject *_wrap_wxGetResource(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxString * _result; - wxString * _arg0; - wxString * _arg1; - wxString * _arg2 = (wxString *) &wxPyEmptyString; - PyObject * _obj0 = 0; - PyObject * _obj1 = 0; - PyObject * _obj2 = 0; - char *_kwnames[] = { "section","entry","file", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxGetResource",_kwnames,&_obj0,&_obj1,&_obj2)) - return NULL; -{ - _arg0 = wxString_in_helper(_obj0); - if (_arg0 == NULL) - return NULL; -} -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} - if (_obj2) -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxString (wxGetResource(*_arg0,*_arg1,*_arg2)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ -#if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); -#else - _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); -#endif -} -{ - if (_obj0) - delete _arg0; -} -{ - if (_obj1) - delete _arg1; -} -{ - if (_obj2) - delete _arg2; -} -{ - delete _result; -} - return _resultobj; -} - static PyObject *_wrap_wxStripMenuCodes(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxString * _result; @@ -707,7 +602,7 @@ static PyObject *_wrap_wxStripMenuCodes(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -738,7 +633,7 @@ static PyObject *_wrap_wxGetEmailAddress(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -765,7 +660,7 @@ static PyObject *_wrap_wxGetHostName(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -792,7 +687,7 @@ static PyObject *_wrap_wxGetFullHostName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -819,7 +714,7 @@ static PyObject *_wrap_wxGetUserId(PyObject *self, PyObject *args, PyObject *kwa if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -846,7 +741,7 @@ static PyObject *_wrap_wxGetUserName(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -873,7 +768,7 @@ static PyObject *_wrap_wxGetHomeDir(PyObject *self, PyObject *args, PyObject *kw if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -908,7 +803,7 @@ static PyObject *_wrap_wxGetUserHome(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1020,7 +915,7 @@ static PyObject *_wrap_wxObject_GetClassName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1455,24 +1350,26 @@ static PyObject *_wrap_wxSize_asTuple(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static int wxSize___cmp__(wxSize *self,const wxSize * sz) { - if (! sz) return 1; - if (*self == *sz) return 0; - return -1; +static bool wxSize___eq__(wxSize *self,PyObject * obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxSize___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxSize___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxSize * _arg0; - wxSize * _arg1; + PyObject * _arg1; wxSize temp; PyObject * _obj0 = 0; - wxSize temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","sz", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -1480,13 +1377,50 @@ static PyObject *_wrap_wxSize___cmp__(PyObject *self, PyObject *args, PyObject * return NULL; } { - _arg1 = &temp0; - if (! wxSize_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxSize___cmp__(_arg0,_arg1); + _result = (bool )wxSize___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxSize___ne__(wxSize *self,PyObject * obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxSize___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSize * _arg0; + PyObject * _arg1; + wxSize temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxSize_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSize___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1727,9 +1661,8 @@ static PyObject *_wrap_wxRealPoint_asTuple(PyObject *self, PyObject *args, PyObj return _resultobj; } -static wxRealPoint wxRealPoint___add__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return *self; - return *self + *p; +static wxRealPoint wxRealPoint___add__(wxRealPoint *self,const wxRealPoint & p) { + return *self + p; } static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1758,7 +1691,7 @@ static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObj } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRealPoint (wxRealPoint___add__(_arg0,_arg1)); + _result = new wxRealPoint (wxRealPoint___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1767,9 +1700,8 @@ static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObj return _resultobj; } -static wxRealPoint wxRealPoint___sub__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return *self; - return *self - *p; +static wxRealPoint wxRealPoint___sub__(wxRealPoint *self,const wxRealPoint & p) { + return *self - p; } static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1798,7 +1730,7 @@ static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObj } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRealPoint (wxRealPoint___sub__(_arg0,_arg1)); + _result = new wxRealPoint (wxRealPoint___sub__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1807,24 +1739,26 @@ static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObj return _resultobj; } -static int wxRealPoint___cmp__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; +static bool wxRealPoint___eq__(wxRealPoint *self,PyObject * obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxRealPoint___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxRealPoint___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxRealPoint * _arg0; - wxRealPoint * _arg1; + PyObject * _arg1; wxRealPoint temp; PyObject * _obj0 = 0; - wxRealPoint temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","p", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -1832,13 +1766,50 @@ static PyObject *_wrap_wxRealPoint___cmp__(PyObject *self, PyObject *args, PyObj return NULL; } { - _arg1 = &temp0; - if (! wxRealPoint_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxRealPoint___cmp__(_arg0,_arg1); + _result = (bool )wxRealPoint___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxRealPoint___ne__(wxRealPoint *self,PyObject * obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxRealPoint___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRealPoint * _arg0; + PyObject * _arg1; + wxRealPoint temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRealPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRealPoint___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2079,9 +2050,8 @@ static PyObject *_wrap_wxPoint_asTuple(PyObject *self, PyObject *args, PyObject return _resultobj; } -static wxPoint wxPoint___add__(wxPoint *self,const wxPoint * p) { - if (! p) return *self; - return *self + *p; +static wxPoint wxPoint___add__(wxPoint *self,const wxPoint & p) { + return *self + p; } static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2110,7 +2080,7 @@ static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxPoint (wxPoint___add__(_arg0,_arg1)); + _result = new wxPoint (wxPoint___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2119,9 +2089,8 @@ static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject return _resultobj; } -static wxPoint wxPoint___sub__(wxPoint *self,const wxPoint * p) { - if (! p) return *self; - return *self - *p; +static wxPoint wxPoint___sub__(wxPoint *self,const wxPoint & p) { + return *self - p; } static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2150,7 +2119,7 @@ static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxPoint (wxPoint___sub__(_arg0,_arg1)); + _result = new wxPoint (wxPoint___sub__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2159,24 +2128,26 @@ static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject return _resultobj; } -static int wxPoint___cmp__(wxPoint *self,const wxPoint * p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; +static bool wxPoint___eq__(wxPoint *self,PyObject * obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxPoint___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxPoint___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxPoint * _arg0; - wxPoint * _arg1; + PyObject * _arg1; wxPoint temp; PyObject * _obj0 = 0; - wxPoint temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","p", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -2184,13 +2155,50 @@ static PyObject *_wrap_wxPoint___cmp__(PyObject *self, PyObject *args, PyObject return NULL; } { - _arg1 = &temp0; - if (! wxPoint_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxPoint___cmp__(_arg0,_arg1); + _result = (bool )wxPoint___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxPoint___ne__(wxPoint *self,PyObject * obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxPoint___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint * _arg0; + PyObject * _arg1; + wxPoint temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2206,7 +2214,7 @@ static PyObject *_wrap_new_wxRect(PyObject *self, PyObject *args, PyObject *kwar int _arg1 = (int ) 0; int _arg2 = (int ) 0; int _arg3 = (int ) 0; - char *_kwnames[] = { "x","y","w","h", NULL }; + char *_kwnames[] = { "x","y","width","height", NULL }; char _ptemp[128]; self = self; @@ -2823,6 +2831,35 @@ static PyObject *_wrap_wxRect_SetBottom(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxRect_Deflate(_swigobj,_swigarg0,_swigarg1) (_swigobj->Deflate(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_Deflate(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1; + int _arg2; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","dx","dy", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_Deflate",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Deflate(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxRect_Inflate(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inflate(_swigarg0,_swigarg1)) static PyObject *_wrap_wxRect_Inflate(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2852,8 +2889,8 @@ static PyObject *_wrap_wxRect_Inflate(PyObject *self, PyObject *args, PyObject * return _resultobj; } -#define wxRect_Inside(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inside(_swigarg0,_swigarg1)) -static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxRect_InsideXY(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inside(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_InsideXY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxRect * _arg0; @@ -2864,7 +2901,7 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k char *_kwnames[] = { "self","cx","cy", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_Inside",_kwnames,&_obj0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_InsideXY",_kwnames,&_obj0,&_arg1,&_arg2)) return NULL; { _arg0 = &temp; @@ -2873,7 +2910,7 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxRect_Inside(_arg0,_arg1,_arg2); + _result = (bool )wxRect_InsideXY(_arg0,_arg1,_arg2); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2881,6 +2918,140 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k return _resultobj; } +#define wxRect_Inside(_swigobj,_swigarg0) (_swigobj->Inside(_swigarg0)) +static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + wxPoint * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxPoint temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Inside",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect_Inside(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxRect_Intersects(_swigobj,_swigarg0) (_swigobj->Intersects(_swigarg0)) +static PyObject *_wrap_wxRect_Intersects(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + wxRect * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxRect temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","rect", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Intersects",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxRect_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect_Intersects(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxRect_OffsetXY(_swigobj,_swigarg0,_swigarg1) (_swigobj->Offset(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_OffsetXY(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1; + int _arg2; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","dx","dy", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_OffsetXY",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_OffsetXY(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxRect_Offset(_swigobj,_swigarg0) (_swigobj->Offset(_swigarg0)) +static PyObject *_wrap_wxRect_Offset(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + wxPoint * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxPoint temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Offset",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Offset(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxRect_x_set(_swigobj,_swigval) (_swigobj->x = _swigval,_swigval) static PyObject *_wrap_wxRect_x_set(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3101,6 +3272,42 @@ static PyObject *_wrap_wxRect_height_get(PyObject *self, PyObject *args, PyObjec return _resultobj; } +static void wxRect_Set(wxRect *self,int x,int y,int width,int height) { + self->x = x; + self->y = y; + self->width = width; + self->height = height; + } +static PyObject *_wrap_wxRect_Set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1 = (int ) 0; + int _arg2 = (int ) 0; + int _arg3 = (int ) 0; + int _arg4 = (int ) 0; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","x","y","width","height", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iiii:wxRect_Set",_kwnames,&_obj0,&_arg1,&_arg2,&_arg3,&_arg4)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Set(_arg0,_arg1,_arg2,_arg3,_arg4); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static PyObject * wxRect_asTuple(wxRect *self) { wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(4); @@ -3139,9 +3346,8 @@ static PyObject *_wrap_wxRect_asTuple(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static wxRect wxRect___add__(wxRect *self,const wxRect * rect) { - if (! rect) return *self; - return *self + *rect; +static wxRect wxRect___add__(wxRect *self,const wxRect & rect) { + return *self + rect; } static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3170,7 +3376,7 @@ static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject * } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRect (wxRect___add__(_arg0,_arg1)); + _result = new wxRect (wxRect___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3179,24 +3385,26 @@ static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static int wxRect___cmp__(wxRect *self,const wxRect * rect) { - if (! rect) return 1; - if (*self == *rect) return 0; - return -1; +static bool wxRect___eq__(wxRect *self,PyObject * obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxRect___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxRect * _arg0; - wxRect * _arg1; + PyObject * _arg1; wxRect temp; PyObject * _obj0 = 0; - wxRect temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","rect", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -3204,13 +3412,11 @@ static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject * return NULL; } { - _arg1 = &temp0; - if (! wxRect_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxRect___cmp__(_arg0,_arg1); + _result = (bool )wxRect___eq__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3218,6 +3424,942 @@ static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject * return _resultobj; } +static bool wxRect___ne__(wxRect *self,PyObject * obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxRect___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + PyObject * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_x_set(_swigobj,_swigval) (_swigobj->m_x = _swigval,_swigval) +static PyObject *_wrap_wxPoint2DDouble_m_x_set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","m_x", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_m_x_set",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_x_set(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_x_get(_swigobj) ((double ) _swigobj->m_x) +static PyObject *_wrap_wxPoint2DDouble_m_x_get(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_m_x_get",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_x_get(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_y_set(_swigobj,_swigval) (_swigobj->m_y = _swigval,_swigval) +static PyObject *_wrap_wxPoint2DDouble_m_y_set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","m_y", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_m_y_set",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_y_set(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_y_get(_swigobj) ((double ) _swigobj->m_y) +static PyObject *_wrap_wxPoint2DDouble_m_y_get(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_m_y_get",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_y_get(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define new_wxPoint2DDouble(_swigarg0,_swigarg1) (new wxPoint2DDouble(_swigarg0,_swigarg1)) +static PyObject *_wrap_new_wxPoint2DDouble(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + double _arg0 = (double ) 0; + double _arg1 = (double ) 0; + char *_kwnames[] = { "x","y", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|dd:new_wxPoint2DDouble",_kwnames,&_arg0,&_arg1)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDouble(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define new_wxPoint2DDoubleCopy(_swigarg0) (new wxPoint2DDouble(_swigarg0)) +static PyObject *_wrap_new_wxPoint2DDoubleCopy(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPoint2DDoubleCopy",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDoubleCopy(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define new_wxPoint2DDoubleFromPoint(_swigarg0) (new wxPoint2DDouble(_swigarg0)) +static PyObject *_wrap_new_wxPoint2DDoubleFromPoint(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint * _arg0; + wxPoint temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPoint2DDoubleFromPoint",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDoubleFromPoint(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxPoint2DDouble_GetFloor(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetFloor(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPoint2DDouble_GetFloor(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + int * _arg1; + int temp; + int * _arg2; + int temp0; + wxPoint2DDouble temp1; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; +{ + _arg1 = &temp; +} +{ + _arg2 = &temp0; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetFloor",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp1; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_GetFloor(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg1)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} + return _resultobj; +} + +#define wxPoint2DDouble_GetRounded(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetRounded(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPoint2DDouble_GetRounded(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + int * _arg1; + int temp; + int * _arg2; + int temp0; + wxPoint2DDouble temp1; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; +{ + _arg1 = &temp; +} +{ + _arg2 = &temp0; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetRounded",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp1; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_GetRounded(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg1)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} + return _resultobj; +} + +#define wxPoint2DDouble_GetVectorLength(_swigobj) (_swigobj->GetVectorLength()) +static PyObject *_wrap_wxPoint2DDouble_GetVectorLength(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetVectorLength",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetVectorLength(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetVectorAngle(_swigobj) (_swigobj->GetVectorAngle()) +static PyObject *_wrap_wxPoint2DDouble_GetVectorAngle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetVectorAngle",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetVectorAngle(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_SetVectorLength(_swigobj,_swigarg0) (_swigobj->SetVectorLength(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_SetVectorLength(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","length", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_SetVectorLength",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_SetVectorLength(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxPoint2DDouble_SetVectorAngle(_swigobj,_swigarg0) (_swigobj->SetVectorAngle(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_SetVectorAngle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","degrees", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_SetVectorAngle",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_SetVectorAngle(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxPoint2DDouble_GetDistance(_swigobj,_swigarg0) (_swigobj->GetDistance(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDistance(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDistance",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDistance(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetDistanceSquare(_swigobj,_swigarg0) (_swigobj->GetDistanceSquare(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDistanceSquare(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDistanceSquare",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDistanceSquare(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetDotProduct(_swigobj,_swigarg0) (_swigobj->GetDotProduct(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDotProduct(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","vec", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDotProduct",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDotProduct(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetCrossProduct(_swigobj,_swigarg0) (_swigobj->GetCrossProduct(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetCrossProduct(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","vec", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetCrossProduct",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetCrossProduct(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +static void wxPoint2DDouble_Set(wxPoint2DDouble *self,double x,double y) { + self->m_x = x; + self->m_y = y; + } +static PyObject *_wrap_wxPoint2DDouble_Set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1 = (double ) 0; + double _arg2 = (double ) 0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","x","y", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|dd:wxPoint2DDouble_Set",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_Set(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static wxPoint2DDouble wxPoint2DDouble___neg__(wxPoint2DDouble *self) { return -(*self); } +static PyObject *_wrap_wxPoint2DDouble___neg__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble___neg__",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxPoint2DDouble (wxPoint2DDouble___neg__(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___iadd__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) += pt; } +static PyObject *_wrap_wxPoint2DDouble___iadd__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___iadd__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___iadd__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___isub__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) -= pt; } +static PyObject *_wrap_wxPoint2DDouble___isub__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___isub__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___isub__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___imul__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) *= pt; } +static PyObject *_wrap_wxPoint2DDouble___imul__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___imul__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___imul__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___idiv__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) /= pt; } +static PyObject *_wrap_wxPoint2DDouble___idiv__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___idiv__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___idiv__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static bool wxPoint2DDouble___eq__(wxPoint2DDouble *self,PyObject * obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } +static PyObject *_wrap_wxPoint2DDouble___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint2DDouble * _arg0; + PyObject * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___eq__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint2DDouble___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxPoint2DDouble___ne__(wxPoint2DDouble *self,PyObject * obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxPoint2DDouble___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint2DDouble * _arg0; + PyObject * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint2DDouble___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject * wxPoint2DDouble_asTuple(wxPoint2DDouble *self) { + wxPyBeginBlockThreads(); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x)); + PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y)); + wxPyEndBlockThreads(); + return tup; + } +static PyObject *_wrap_wxPoint2DDouble_asTuple(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_asTuple",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxPoint2DDouble_asTuple(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + static void *SwigwxIndividualLayoutConstraintTowxObject(void *ptr) { wxIndividualLayoutConstraint *src; wxObject *dest; @@ -4254,9 +5396,41 @@ static PyMethodDef misccMethods[] = { { "wxIndividualLayoutConstraint_AsIs", (PyCFunction) _wrap_wxIndividualLayoutConstraint_AsIs, METH_VARARGS | METH_KEYWORDS }, { "wxIndividualLayoutConstraint_Absolute", (PyCFunction) _wrap_wxIndividualLayoutConstraint_Absolute, METH_VARARGS | METH_KEYWORDS }, { "wxIndividualLayoutConstraint_Above", (PyCFunction) _wrap_wxIndividualLayoutConstraint_Above, METH_VARARGS | METH_KEYWORDS }, - { "wxRect___cmp__", (PyCFunction) _wrap_wxRect___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_asTuple", (PyCFunction) _wrap_wxPoint2DDouble_asTuple, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___ne__", (PyCFunction) _wrap_wxPoint2DDouble___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___eq__", (PyCFunction) _wrap_wxPoint2DDouble___eq__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___idiv__", (PyCFunction) _wrap_wxPoint2DDouble___idiv__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___imul__", (PyCFunction) _wrap_wxPoint2DDouble___imul__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___isub__", (PyCFunction) _wrap_wxPoint2DDouble___isub__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___iadd__", (PyCFunction) _wrap_wxPoint2DDouble___iadd__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___neg__", (PyCFunction) _wrap_wxPoint2DDouble___neg__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_Set", (PyCFunction) _wrap_wxPoint2DDouble_Set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetCrossProduct", (PyCFunction) _wrap_wxPoint2DDouble_GetCrossProduct, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDotProduct", (PyCFunction) _wrap_wxPoint2DDouble_GetDotProduct, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDistanceSquare", (PyCFunction) _wrap_wxPoint2DDouble_GetDistanceSquare, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDistance", (PyCFunction) _wrap_wxPoint2DDouble_GetDistance, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_SetVectorAngle", (PyCFunction) _wrap_wxPoint2DDouble_SetVectorAngle, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_SetVectorLength", (PyCFunction) _wrap_wxPoint2DDouble_SetVectorLength, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetVectorAngle", (PyCFunction) _wrap_wxPoint2DDouble_GetVectorAngle, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetVectorLength", (PyCFunction) _wrap_wxPoint2DDouble_GetVectorLength, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetRounded", (PyCFunction) _wrap_wxPoint2DDouble_GetRounded, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetFloor", (PyCFunction) _wrap_wxPoint2DDouble_GetFloor, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDoubleFromPoint", (PyCFunction) _wrap_new_wxPoint2DDoubleFromPoint, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDoubleCopy", (PyCFunction) _wrap_new_wxPoint2DDoubleCopy, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDouble", (PyCFunction) _wrap_new_wxPoint2DDouble, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_y_get", (PyCFunction) _wrap_wxPoint2DDouble_m_y_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_y_set", (PyCFunction) _wrap_wxPoint2DDouble_m_y_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_x_get", (PyCFunction) _wrap_wxPoint2DDouble_m_x_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_x_set", (PyCFunction) _wrap_wxPoint2DDouble_m_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_y_get", (PyCFunction) _wrap_wxPoint2DDouble_m_y_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_y_set", (PyCFunction) _wrap_wxPoint2DDouble_m_y_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_x_get", (PyCFunction) _wrap_wxPoint2DDouble_m_x_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_x_set", (PyCFunction) _wrap_wxPoint2DDouble_m_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxRect___ne__", (PyCFunction) _wrap_wxRect___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxRect___eq__", (PyCFunction) _wrap_wxRect___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxRect___add__", (PyCFunction) _wrap_wxRect___add__, METH_VARARGS | METH_KEYWORDS }, { "wxRect_asTuple", (PyCFunction) _wrap_wxRect_asTuple, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Set", (PyCFunction) _wrap_wxRect_Set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_height_get", (PyCFunction) _wrap_wxRect_height_get, METH_VARARGS | METH_KEYWORDS }, { "wxRect_height_set", (PyCFunction) _wrap_wxRect_height_set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_width_get", (PyCFunction) _wrap_wxRect_width_get, METH_VARARGS | METH_KEYWORDS }, @@ -4265,8 +5439,13 @@ static PyMethodDef misccMethods[] = { { "wxRect_y_set", (PyCFunction) _wrap_wxRect_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_x_get", (PyCFunction) _wrap_wxRect_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxRect_x_set", (PyCFunction) _wrap_wxRect_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Offset", (PyCFunction) _wrap_wxRect_Offset, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_OffsetXY", (PyCFunction) _wrap_wxRect_OffsetXY, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Intersects", (PyCFunction) _wrap_wxRect_Intersects, METH_VARARGS | METH_KEYWORDS }, { "wxRect_Inside", (PyCFunction) _wrap_wxRect_Inside, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_InsideXY", (PyCFunction) _wrap_wxRect_InsideXY, METH_VARARGS | METH_KEYWORDS }, { "wxRect_Inflate", (PyCFunction) _wrap_wxRect_Inflate, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Deflate", (PyCFunction) _wrap_wxRect_Deflate, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetBottom", (PyCFunction) _wrap_wxRect_SetBottom, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetTop", (PyCFunction) _wrap_wxRect_SetTop, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetRight", (PyCFunction) _wrap_wxRect_SetRight, METH_VARARGS | METH_KEYWORDS }, @@ -4289,7 +5468,8 @@ static PyMethodDef misccMethods[] = { { "wxRect_GetX", (PyCFunction) _wrap_wxRect_GetX, METH_VARARGS | METH_KEYWORDS }, { "delete_wxRect", (PyCFunction) _wrap_delete_wxRect, METH_VARARGS | METH_KEYWORDS }, { "new_wxRect", (PyCFunction) _wrap_new_wxRect, METH_VARARGS | METH_KEYWORDS }, - { "wxPoint___cmp__", (PyCFunction) _wrap_wxPoint___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint___ne__", (PyCFunction) _wrap_wxPoint___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint___eq__", (PyCFunction) _wrap_wxPoint___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint___sub__", (PyCFunction) _wrap_wxPoint___sub__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint___add__", (PyCFunction) _wrap_wxPoint___add__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_asTuple", (PyCFunction) _wrap_wxPoint_asTuple, METH_VARARGS | METH_KEYWORDS }, @@ -4300,7 +5480,8 @@ static PyMethodDef misccMethods[] = { { "wxPoint_y_set", (PyCFunction) _wrap_wxPoint_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_x_get", (PyCFunction) _wrap_wxPoint_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_x_set", (PyCFunction) _wrap_wxPoint_x_set, METH_VARARGS | METH_KEYWORDS }, - { "wxRealPoint___cmp__", (PyCFunction) _wrap_wxRealPoint___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxRealPoint___ne__", (PyCFunction) _wrap_wxRealPoint___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxRealPoint___eq__", (PyCFunction) _wrap_wxRealPoint___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint___sub__", (PyCFunction) _wrap_wxRealPoint___sub__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint___add__", (PyCFunction) _wrap_wxRealPoint___add__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_asTuple", (PyCFunction) _wrap_wxRealPoint_asTuple, METH_VARARGS | METH_KEYWORDS }, @@ -4311,7 +5492,8 @@ static PyMethodDef misccMethods[] = { { "wxRealPoint_y_set", (PyCFunction) _wrap_wxRealPoint_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_x_get", (PyCFunction) _wrap_wxRealPoint_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_x_set", (PyCFunction) _wrap_wxRealPoint_x_set, METH_VARARGS | METH_KEYWORDS }, - { "wxSize___cmp__", (PyCFunction) _wrap_wxSize___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxSize___ne__", (PyCFunction) _wrap_wxSize___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxSize___eq__", (PyCFunction) _wrap_wxSize___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxSize_asTuple", (PyCFunction) _wrap_wxSize_asTuple, METH_VARARGS | METH_KEYWORDS }, { "wxSize_SetHeight", (PyCFunction) _wrap_wxSize_SetHeight, METH_VARARGS | METH_KEYWORDS }, { "wxSize_SetWidth", (PyCFunction) _wrap_wxSize_SetWidth, METH_VARARGS | METH_KEYWORDS }, @@ -4342,7 +5524,6 @@ static PyMethodDef misccMethods[] = { { "wxGetHostName", (PyCFunction) _wrap_wxGetHostName, METH_VARARGS | METH_KEYWORDS }, { "wxGetEmailAddress", (PyCFunction) _wrap_wxGetEmailAddress, METH_VARARGS | METH_KEYWORDS }, { "wxStripMenuCodes", (PyCFunction) _wrap_wxStripMenuCodes, METH_VARARGS | METH_KEYWORDS }, - { "wxGetResource", (PyCFunction) _wrap_wxGetResource, METH_VARARGS | METH_KEYWORDS }, { "wxEnableTopLevelWindows", (PyCFunction) _wrap_wxEnableTopLevelWindows, METH_VARARGS | METH_KEYWORDS }, { "wxYieldIfNeeded", (PyCFunction) _wrap_wxYieldIfNeeded, METH_VARARGS | METH_KEYWORDS }, { "wxYield", (PyCFunction) _wrap_wxYield, METH_VARARGS | METH_KEYWORDS }, @@ -4360,8 +5541,6 @@ static PyMethodDef misccMethods[] = { { "wxEndBusyCursor", (PyCFunction) _wrap_wxEndBusyCursor, METH_VARARGS | METH_KEYWORDS }, { "wxBell", (PyCFunction) _wrap_wxBell, METH_VARARGS | METH_KEYWORDS }, { "wxGetCurrentId", (PyCFunction) _wrap_wxGetCurrentId, METH_VARARGS | METH_KEYWORDS }, - { "RegisterId", (PyCFunction) _wrap_RegisterId, METH_VARARGS | METH_KEYWORDS }, - { "NewId", (PyCFunction) _wrap_NewId, METH_VARARGS | METH_KEYWORDS }, { "wxRegisterId", (PyCFunction) _wrap_wxRegisterId, METH_VARARGS | METH_KEYWORDS }, { "wxNewId", (PyCFunction) _wrap_wxNewId, METH_VARARGS | METH_KEYWORDS }, { "wxIntersectRect", (PyCFunction) _wrap_wxIntersectRect, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/misc.py b/wxPython/src/mac/misc.py index 54223d7bf5..e1f06cc4f9 100644 --- a/wxPython/src/mac/misc.py +++ b/wxPython/src/mac/misc.py @@ -23,9 +23,12 @@ class wxSizePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxSize(self) + def __del__(self, delfunc=miscc.delete_wxSize): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxSize_Set,(self,) + _args, _kwargs) return val @@ -50,8 +53,11 @@ class wxSizePtr : def asTuple(self, *_args, **_kwargs): val = apply(miscc.wxSize_asTuple,(self,) + _args, _kwargs) return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxSize___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxSize___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxSize___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -81,13 +87,17 @@ class wxSizePtr : return "<C wxSize instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxSize'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxSize(wxSizePtr): def __init__(self,*_args,**_kwargs): @@ -101,9 +111,12 @@ class wxRealPointPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxRealPoint(self) + def __del__(self, delfunc=miscc.delete_wxRealPoint): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxRealPoint_Set,(self,) + _args, _kwargs) return val @@ -118,8 +131,11 @@ class wxRealPointPtr : val = apply(miscc.wxRealPoint___sub__,(self,) + _args, _kwargs) if val: val = wxRealPointPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxRealPoint___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxRealPoint___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxRealPoint___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -139,13 +155,17 @@ class wxRealPointPtr : return "<C wxRealPoint instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRealPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxRealPoint(wxRealPointPtr): def __init__(self,*_args,**_kwargs): @@ -159,9 +179,12 @@ class wxPointPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxPoint(self) + def __del__(self, delfunc=miscc.delete_wxPoint): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxPoint_Set,(self,) + _args, _kwargs) return val @@ -176,8 +199,11 @@ class wxPointPtr : val = apply(miscc.wxPoint___sub__,(self,) + _args, _kwargs) if val: val = wxPointPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxPoint___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -197,13 +223,17 @@ class wxPointPtr : return "<C wxPoint instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.x = val elif index == 1: self.y = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxPoint(wxPointPtr): def __init__(self,*_args,**_kwargs): @@ -217,9 +247,12 @@ class wxRectPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxRect(self) + def __del__(self, delfunc=miscc.delete_wxRect): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetX(self, *_args, **_kwargs): val = apply(miscc.wxRect_GetX,(self,) + _args, _kwargs) return val @@ -282,12 +315,30 @@ class wxRectPtr : def SetBottom(self, *_args, **_kwargs): val = apply(miscc.wxRect_SetBottom,(self,) + _args, _kwargs) return val + def Deflate(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Deflate,(self,) + _args, _kwargs) + return val def Inflate(self, *_args, **_kwargs): val = apply(miscc.wxRect_Inflate,(self,) + _args, _kwargs) return val + def InsideXY(self, *_args, **_kwargs): + val = apply(miscc.wxRect_InsideXY,(self,) + _args, _kwargs) + return val def Inside(self, *_args, **_kwargs): val = apply(miscc.wxRect_Inside,(self,) + _args, _kwargs) return val + def Intersects(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Intersects,(self,) + _args, _kwargs) + return val + def OffsetXY(self, *_args, **_kwargs): + val = apply(miscc.wxRect_OffsetXY,(self,) + _args, _kwargs) + return val + def Offset(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Offset,(self,) + _args, _kwargs) + return val + def Set(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Set,(self,) + _args, _kwargs) + return val def asTuple(self, *_args, **_kwargs): val = apply(miscc.wxRect_asTuple,(self,) + _args, _kwargs) return val @@ -295,8 +346,11 @@ class wxRectPtr : val = apply(miscc.wxRect___add__,(self,) + _args, _kwargs) if val: val = wxRectPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxRect___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxRect___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxRect___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -326,7 +380,7 @@ class wxRectPtr : return "<C wxRect instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRect'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): @@ -335,6 +389,10 @@ class wxRectPtr : elif index == 2: self.width = val elif index == 3: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0,0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) # override the __getattr__ made by SWIG def __getattr__(self, name): @@ -381,6 +439,137 @@ class wxRect(wxRectPtr): +class wxPoint2DDoublePtr : + def __init__(self,this): + self.this = this + self.thisown = 0 + def GetFloor(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetFloor,(self,) + _args, _kwargs) + return val + def GetRounded(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetRounded,(self,) + _args, _kwargs) + return val + def GetVectorLength(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetVectorLength,(self,) + _args, _kwargs) + return val + def GetVectorAngle(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetVectorAngle,(self,) + _args, _kwargs) + return val + def SetVectorLength(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_SetVectorLength,(self,) + _args, _kwargs) + return val + def SetVectorAngle(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_SetVectorAngle,(self,) + _args, _kwargs) + return val + def GetDistance(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDistance,(self,) + _args, _kwargs) + return val + def GetDistanceSquare(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDistanceSquare,(self,) + _args, _kwargs) + return val + def GetDotProduct(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDotProduct,(self,) + _args, _kwargs) + return val + def GetCrossProduct(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetCrossProduct,(self,) + _args, _kwargs) + return val + def Set(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_Set,(self,) + _args, _kwargs) + return val + def __neg__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___neg__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) ; val.thisown = 1 + return val + def __iadd__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___iadd__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __isub__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___isub__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __imul__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___imul__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __idiv__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___idiv__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___ne__,(self,) + _args, _kwargs) + return val + def asTuple(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_asTuple,(self,) + _args, _kwargs) + return val + def __setattr__(self,name,value): + if name == "m_x" : + miscc.wxPoint2DDouble_m_x_set(self,value) + return + if name == "m_y" : + miscc.wxPoint2DDouble_m_y_set(self,value) + return + if name == "x" : + miscc.wxPoint2DDouble_x_set(self,value) + return + if name == "y" : + miscc.wxPoint2DDouble_y_set(self,value) + return + self.__dict__[name] = value + def __getattr__(self,name): + if name == "m_x" : + return miscc.wxPoint2DDouble_m_x_get(self) + if name == "m_y" : + return miscc.wxPoint2DDouble_m_y_get(self) + if name == "x" : + return miscc.wxPoint2DDouble_x_get(self) + if name == "y" : + return miscc.wxPoint2DDouble_y_get(self) + raise AttributeError,name + def __repr__(self): + return "<C wxPoint2DDouble instance at %s>" % (self.this,) + + def SetPolarCoordinates(self, angle, length): + self.SetVectorLength(length) + self.SetVectorAngle(angle) + def Normalize(self): + self.SetVectorLength(1.0) + + + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint2DDouble'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.m_x = val + elif index == 1: self.m_yt = val + else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) + +class wxPoint2DDouble(wxPoint2DDoublePtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(miscc.new_wxPoint2DDouble,_args,_kwargs) + self.thisown = 1 + + + +def wxPoint2DDoubleCopy(*_args,**_kwargs): + val = wxPoint2DDoublePtr(apply(miscc.new_wxPoint2DDoubleCopy,_args,_kwargs)) + val.thisown = 1 + return val + +def wxPoint2DDoubleFromPoint(*_args,**_kwargs): + val = wxPoint2DDoublePtr(apply(miscc.new_wxPoint2DDoubleFromPoint,_args,_kwargs)) + val.thisown = 1 + return val + + class wxIndividualLayoutConstraintPtr(wxObjectPtr): def __init__(self,this): self.this = this @@ -486,9 +675,12 @@ class wxAcceleratorEntryPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxAcceleratorEntry(self) + def __del__(self, delfunc=miscc.delete_wxAcceleratorEntry): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxAcceleratorEntry_Set,(self,) + _args, _kwargs) return val @@ -515,9 +707,12 @@ class wxAcceleratorTablePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxAcceleratorTable(self) + def __del__(self, delfunc=miscc.delete_wxAcceleratorTable): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxAcceleratorTable instance at %s>" % (self.this,) class wxAcceleratorTable(wxAcceleratorTablePtr): @@ -532,9 +727,12 @@ class wxBusyInfoPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxBusyInfo(self) + def __del__(self, delfunc=miscc.delete_wxBusyInfo): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxBusyInfo instance at %s>" % (self.this,) class wxBusyInfo(wxBusyInfoPtr): @@ -555,10 +753,6 @@ wxNewId = miscc.wxNewId wxRegisterId = miscc.wxRegisterId -NewId = miscc.NewId - -RegisterId = miscc.RegisterId - wxGetCurrentId = miscc.wxGetCurrentId wxBell = miscc.wxBell @@ -593,8 +787,6 @@ wxYieldIfNeeded = miscc.wxYieldIfNeeded wxEnableTopLevelWindows = miscc.wxEnableTopLevelWindows -wxGetResource = miscc.wxGetResource - wxStripMenuCodes = miscc.wxStripMenuCodes wxGetEmailAddress = miscc.wxGetEmailAddress diff --git a/wxPython/src/mac/misc2.cpp b/wxPython/src/mac/misc2.cpp index 6e9936b9c5..d85bb642bc 100644 --- a/wxPython/src/mac/misc2.cpp +++ b/wxPython/src/mac/misc2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -293,7 +292,7 @@ public: wxBitmap rval = wxNullBitmap; wxPyBeginBlockThreads(); if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) { - PyObject* so = wxPyConstructObject((void*)&size, "wxSize", 0); + PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0); PyObject* ro; wxBitmap* ptr; PyObject* s1, *s2; @@ -388,7 +387,7 @@ static PyObject *_wrap_wxFileSelector(PyObject *self, PyObject *args, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -466,7 +465,7 @@ static PyObject *_wrap_wxLoadFileSelector(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -536,7 +535,7 @@ static PyObject *_wrap_wxSaveFileSelector(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -610,7 +609,7 @@ static PyObject *_wrap_wxDirSelector(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -682,7 +681,7 @@ static PyObject *_wrap_wxGetTextFromUser(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -753,7 +752,7 @@ static PyObject *_wrap_wxGetPasswordFromUser(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -840,7 +839,7 @@ static PyObject *_wrap_wxGetSingleChoice(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1322,8 +1321,7 @@ static PyObject *_wrap_wxSetCursor(PyObject *self, PyObject *args, PyObject *kwa if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxSetCursor",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSetCursor. Expected _wxCursor_p."); return NULL; } @@ -1463,208 +1461,6 @@ static PyObject *_wrap_wxGetTopLevelParent(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject *_wrap_wxResourceAddIdentifier(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - int _arg1; - char *_kwnames[] = { "name","value", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"si:wxResourceAddIdentifier",_kwnames,&_arg0,&_arg1)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceAddIdentifier(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceClear(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxResourceClear",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxResourceClear(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateBitmap(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxBitmap * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - char _ptemp[128]; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateBitmap",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxBitmap (wxResourceCreateBitmap(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p"); - _resultobj = Py_BuildValue("s",_ptemp); - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateIcon(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxIcon * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - char _ptemp[128]; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateIcon",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxIcon (wxResourceCreateIcon(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} SWIG_MakePtr(_ptemp, (void *) _result,"_wxIcon_p"); - _resultobj = Py_BuildValue("s",_ptemp); - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateMenuBar(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxMenuBar * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateMenuBar",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxMenuBar *)wxResourceCreateMenuBar(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ _resultobj = wxPyMake_wxObject(_result); } - return _resultobj; -} - -static PyObject *_wrap_wxResourceGetIdentifier(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - int _result; - char * _arg0; - char *_kwnames[] = { "name", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceGetIdentifier",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxResourceGetIdentifier(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseData(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "resource","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseData",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseData. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseData(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseFile(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "filename","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseFile",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseFile. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseFile(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseString(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "resource","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseString",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseString. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseString(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - static PyObject *_wrap_wxCaret_GetBlinkTime(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; int _result; @@ -1706,11 +1502,13 @@ static PyObject *_wrap_wxSafeYield(PyObject *self, PyObject *args, PyObject *kwa PyObject * _resultobj; bool _result; wxWindow * _arg0 = (wxWindow *) NULL; + bool _arg1 = (bool ) FALSE; PyObject * _argo0 = 0; - char *_kwnames[] = { "win", NULL }; + int tempbool1 = (int) FALSE; + char *_kwnames[] = { "win","onlyIfNeeded", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:wxSafeYield",_kwnames,&_argo0)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|Oi:wxSafeYield",_kwnames,&_argo0,&tempbool1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -1719,9 +1517,10 @@ static PyObject *_wrap_wxSafeYield(PyObject *self, PyObject *args, PyObject *kwa return NULL; } } + _arg1 = (bool ) tempbool1; { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxSafeYield(_arg0); + _result = (bool )wxSafeYield(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1748,8 +1547,7 @@ static PyObject *_wrap_wxPostEvent(PyObject *self, PyObject *args, PyObject *kwa } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostEvent. Expected _wxEvent_p."); return NULL; } @@ -1948,7 +1746,7 @@ static PyObject *_wrap_wxSysErrorMsg(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2104,6 +1902,35 @@ static PyObject *_wrap_wxLogInfo(PyObject *self, PyObject *args, PyObject *kwarg return _resultobj; } +static PyObject *_wrap_wxLogDebug(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _arg0; + PyObject * _obj0 = 0; + char *_kwnames[] = { "msg", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxLogDebug",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxLogDebug(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj0) + delete _arg0; +} + return _resultobj; +} + static PyObject *_wrap_wxLogVerbose(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxString * _arg0; @@ -2685,7 +2512,7 @@ static PyObject *_wrap_wxToolTip_GetTip(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3498,7 +3325,7 @@ static PyObject *_wrap_wxTipProvider_GetTip(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3570,7 +3397,7 @@ static PyObject *_wrap_wxTipProvider_PreprocessTip(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3681,15 +3508,13 @@ static PyObject *_wrap_new_wxDragImage(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:new_wxDragImage",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragImage. Expected _wxBitmap_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragImage. Expected _wxCursor_p."); return NULL; } @@ -3725,15 +3550,13 @@ static PyObject *_wrap_new_wxDragIcon(PyObject *self, PyObject *args, PyObject * if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:new_wxDragIcon",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragIcon. Expected _wxIcon_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragIcon. Expected _wxCursor_p."); return NULL; } @@ -3774,8 +3597,7 @@ static PyObject *_wrap_new_wxDragString(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragString. Expected _wxCursor_p."); return NULL; } @@ -3815,15 +3637,13 @@ static PyObject *_wrap_new_wxDragTreeItem(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:new_wxDragTreeItem",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragTreeItem. Expected _wxTreeCtrl_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragTreeItem. Expected _wxTreeItemId_p."); return NULL; } @@ -3858,8 +3678,7 @@ static PyObject *_wrap_new_wxDragListItem(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:new_wxDragListItem",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListCtrl_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListCtrl_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragListItem. Expected _wxListCtrl_p."); return NULL; } @@ -4002,8 +3821,8 @@ static PyObject *_wrap_wxDragImage_BeginDrag(PyObject *self, PyObject *args, PyO return _resultobj; } -#define wxDragImage_BeginDrag2(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->BeginDrag(_swigarg0,_swigarg1,_swigarg2)) -static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxDragImage_BeginDragBounded(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->BeginDrag(_swigarg0,_swigarg1,_swigarg2)) +static PyObject *_wrap_wxDragImage_BeginDragBounded(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxGenericDragImage * _arg0; @@ -4015,15 +3834,15 @@ static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, Py PyObject * _obj1 = 0; PyObject * _argo2 = 0; PyObject * _argo3 = 0; - char *_kwnames[] = { "self","hotspot","window","fullScreenRect", NULL }; + char *_kwnames[] = { "self","hotspot","window","boundingWindow", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDragImage_BeginDrag2",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDragImage_BeginDragBounded",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGenericDragImage_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDragImage_BeginDrag2. Expected _wxGenericDragImage_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDragImage_BeginDragBounded. Expected _wxGenericDragImage_p."); return NULL; } } @@ -4035,20 +3854,20 @@ static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, Py if (_argo2) { if (_argo2 == Py_None) { _arg2 = NULL; } else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDragImage_BeginDrag2. Expected _wxWindow_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDragImage_BeginDragBounded. Expected _wxWindow_p."); return NULL; } } if (_argo3) { if (_argo3 == Py_None) { _arg3 = NULL; } else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDragImage_BeginDrag2. Expected _wxWindow_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDragImage_BeginDragBounded. Expected _wxWindow_p."); return NULL; } } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDragImage_BeginDrag2(_arg0,*_arg1,_arg2,_arg3); + _result = (bool )wxDragImage_BeginDragBounded(_arg0,*_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -5149,7 +4968,7 @@ static PyObject *_wrap_wxLog_GetTimestamp(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5232,6 +5051,43 @@ static PyObject *_wrap_wxLog_IsAllowedTraceMask(PyObject *self, PyObject *args, return _resultobj; } +static PyObject *_wrap_wxLog_SetLogLevel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + unsigned long _arg0; + char *_kwnames[] = { "logLevel", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxLog_SetLogLevel",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxLog::SetLogLevel(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxLog_GetLogLevel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + unsigned long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxLog_GetLogLevel",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (unsigned long )wxLog::GetLogLevel(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + static wxString wxLog_TimeStamp(wxLog *self) { wxString msg; wxLog::TimeStamp(&msg); @@ -5262,7 +5118,7 @@ static PyObject *_wrap_wxLog_TimeStamp(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6478,7 +6334,7 @@ static PyObject *_wrap_wxProcess_GetInputStream(PyObject *self, PyObject *args, if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -6513,7 +6369,7 @@ static PyObject *_wrap_wxProcess_GetErrorStream(PyObject *self, PyObject *args, if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -7149,7 +7005,7 @@ static PyObject *_wrap_wxJoystick_GetProductName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8068,19 +7924,43 @@ static PyObject *_wrap_wxWave_Play(PyObject *self, PyObject *args, PyObject *kwa static PyObject *_wrap_new_wxFileTypeInfo(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxFileTypeInfo * _result; - char * _arg0; - char * _arg1; - char * _arg2; - char * _arg3; + wxString * _arg0; + wxString * _arg1; + wxString * _arg2; + wxString * _arg3; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; char *_kwnames[] = { "mimeType","openCmd","printCmd","desc", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"ssss:new_wxFileTypeInfo",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:new_wxFileTypeInfo",_kwnames,&_obj0,&_obj1,&_obj2,&_obj3)) return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + _arg2 = wxString_in_helper(_obj2); + if (_arg2 == NULL) + return NULL; +} +{ + _arg3 = wxString_in_helper(_obj3); + if (_arg3 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxFileTypeInfo *)new_wxFileTypeInfo(_arg0,_arg1,_arg2,_arg3); + _result = (wxFileTypeInfo *)new_wxFileTypeInfo(*_arg0,*_arg1,*_arg2,*_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -8091,6 +7971,22 @@ static PyObject *_wrap_new_wxFileTypeInfo(PyObject *self, PyObject *args, PyObje Py_INCREF(Py_None); _resultobj = Py_None; } +{ + if (_obj0) + delete _arg0; +} +{ + if (_obj1) + delete _arg1; +} +{ + if (_obj2) + delete _arg2; +} +{ + if (_obj3) + delete _arg3; +} return _resultobj; } @@ -8117,11 +8013,10 @@ static PyObject *_wrap_new_wxFileTypeInfoSequence(PyObject *self, PyObject *args PyObject* item = PySequence_GetItem(_obj0, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg0->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg0->Add(PyString_AsString(str)); #endif + _arg0->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -8306,7 +8201,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetMimeType(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8341,7 +8236,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetOpenCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8376,7 +8271,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetPrintCommand(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8411,7 +8306,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetShortDesc(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8446,7 +8341,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetDescription(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8542,7 +8437,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetIconFile(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8591,8 +8486,7 @@ static PyObject *_wrap_new_wxFileType(PyObject *self, PyObject *args, PyObject * if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxFileType",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxFileType. Expected _wxFileTypeInfo_p."); return NULL; } @@ -8617,7 +8511,7 @@ static PyObject * wxFileType_GetMimeType(wxFileType *self) { wxString str; if (self->GetMimeType(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8775,9 +8669,9 @@ static PyObject * wxFileType_GetIconInfo(wxFileType *self) { wxPyBeginBlockThreads(); PyObject* tuple = PyTuple_New(3); PyTuple_SetItem(tuple, 0, wxPyConstructObject(new wxIcon(icon), - "wxIcon", TRUE)); + wxT("wxIcon"), TRUE)); #if wxUSE_UNICODE - PyTuple_SetItem(tuple, 1, PyUnicode_FromUnicode(iconFile.c_str(), iconFile.Len())); + PyTuple_SetItem(tuple, 1, PyUnicode_FromWideChar(iconFile.c_str(), iconFile.Len())); #else PyTuple_SetItem(tuple, 1, PyString_FromStringAndSize(iconFile.c_str(), iconFile.Len())); #endif @@ -8821,7 +8715,7 @@ static PyObject * wxFileType_GetDescription(wxFileType *self) { wxString str; if (self->GetDescription(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8861,7 +8755,7 @@ static PyObject * wxFileType_GetOpenCommand(wxFileType *self,const wxString & fi wxString str; if (self->GetOpenCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8924,7 +8818,7 @@ static PyObject * wxFileType_GetPrintCommand(wxFileType *self,const wxString & f wxString str; if (self->GetPrintCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -9190,8 +9084,7 @@ static PyObject *_wrap_wxFileType_ExpandCommand(PyObject *self, PyObject *args, return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileType::MessageParameters_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileType::MessageParameters_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileType_ExpandCommand. Expected _wxFileType::MessageParameters_p."); return NULL; } @@ -9204,7 +9097,7 @@ static PyObject *_wrap_wxFileType_ExpandCommand(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9609,8 +9502,7 @@ static PyObject *_wrap_wxMimeTypesManager_AddFallback(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMimeTypesManager_AddFallback. Expected _wxFileTypeInfo_p."); return NULL; } @@ -9648,8 +9540,7 @@ static PyObject *_wrap_wxMimeTypesManager_Associate(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMimeTypesManager_Associate. Expected _wxFileTypeInfo_p."); return NULL; } @@ -9983,24 +9874,6 @@ static PyObject *_wrap_wxArtProvider_GetIcon(PyObject *self, PyObject *args, PyO return _resultobj; } -static PyObject *_wrap_wxArtProvider_CleanUpProviders(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxArtProvider_CleanUpProviders",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxPyArtProvider::CleanUpProviders(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static void *SwigwxFileHistoryTowxObject(void *ptr) { wxFileHistory *src; wxObject *dest; @@ -10254,8 +10127,7 @@ static PyObject *_wrap_wxFileHistory_Load(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileHistory_Load. Expected _wxConfigBase_p."); return NULL; } @@ -10291,8 +10163,7 @@ static PyObject *_wrap_wxFileHistory_Save(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileHistory_Save. Expected _wxConfigBase_p."); return NULL; } @@ -10400,7 +10271,7 @@ static PyObject *_wrap_wxFileHistory_GetHistoryFile(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10923,8 +10794,7 @@ static PyObject *_wrap_wxEffects_DrawSunkenEdge(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEffects_DrawSunkenEdge. Expected _wxDC_p."); return NULL; } @@ -10976,15 +10846,13 @@ static PyObject *_wrap_wxEffects_TileBitmap(PyObject *self, PyObject *args, PyOb return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxEffects_TileBitmap. Expected _wxDC_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxEffects_TileBitmap. Expected _wxBitmap_p."); return NULL; } @@ -11215,7 +11083,6 @@ static PyMethodDef misc2cMethods[] = { { "wxFileHistory_AddFileToHistory", (PyCFunction) _wrap_wxFileHistory_AddFileToHistory, METH_VARARGS | METH_KEYWORDS }, { "delete_wxFileHistory", (PyCFunction) _wrap_delete_wxFileHistory, METH_VARARGS | METH_KEYWORDS }, { "new_wxFileHistory", (PyCFunction) _wrap_new_wxFileHistory, METH_VARARGS | METH_KEYWORDS }, - { "wxArtProvider_CleanUpProviders", (PyCFunction) _wrap_wxArtProvider_CleanUpProviders, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_GetIcon", (PyCFunction) _wrap_wxArtProvider_GetIcon, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_GetBitmap", (PyCFunction) _wrap_wxArtProvider_GetBitmap, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_RemoveProvider", (PyCFunction) _wrap_wxArtProvider_RemoveProvider, METH_VARARGS | METH_KEYWORDS }, @@ -11358,6 +11225,8 @@ static PyMethodDef misc2cMethods[] = { { "new_wxLogTextCtrl", (PyCFunction) _wrap_new_wxLogTextCtrl, METH_VARARGS | METH_KEYWORDS }, { "new_wxLogStderr", (PyCFunction) _wrap_new_wxLogStderr, METH_VARARGS | METH_KEYWORDS }, { "wxLog_TimeStamp", (PyCFunction) _wrap_wxLog_TimeStamp, METH_VARARGS | METH_KEYWORDS }, + { "wxLog_GetLogLevel", (PyCFunction) _wrap_wxLog_GetLogLevel, METH_VARARGS | METH_KEYWORDS }, + { "wxLog_SetLogLevel", (PyCFunction) _wrap_wxLog_SetLogLevel, METH_VARARGS | METH_KEYWORDS }, { "wxLog_IsAllowedTraceMask", (PyCFunction) _wrap_wxLog_IsAllowedTraceMask, METH_VARARGS | METH_KEYWORDS }, { "wxLog_GetTraceMask", (PyCFunction) _wrap_wxLog_GetTraceMask, METH_VARARGS | METH_KEYWORDS }, { "wxLog_GetVerbose", (PyCFunction) _wrap_wxLog_GetVerbose, METH_VARARGS | METH_KEYWORDS }, @@ -11401,7 +11270,7 @@ static PyMethodDef misc2cMethods[] = { { "wxDragImage_Show", (PyCFunction) _wrap_wxDragImage_Show, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_Move", (PyCFunction) _wrap_wxDragImage_Move, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_EndDrag", (PyCFunction) _wrap_wxDragImage_EndDrag, METH_VARARGS | METH_KEYWORDS }, - { "wxDragImage_BeginDrag2", (PyCFunction) _wrap_wxDragImage_BeginDrag2, METH_VARARGS | METH_KEYWORDS }, + { "wxDragImage_BeginDragBounded", (PyCFunction) _wrap_wxDragImage_BeginDragBounded, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_BeginDrag", (PyCFunction) _wrap_wxDragImage_BeginDrag, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_SetBackingBitmap", (PyCFunction) _wrap_wxDragImage_SetBackingBitmap, METH_VARARGS | METH_KEYWORDS }, { "delete_wxDragImage", (PyCFunction) _wrap_delete_wxDragImage, METH_VARARGS | METH_KEYWORDS }, @@ -11459,6 +11328,7 @@ static PyMethodDef misc2cMethods[] = { { "wxLogStatusFrame", (PyCFunction) _wrap_wxLogStatusFrame, METH_VARARGS | METH_KEYWORDS }, { "wxLogStatus", (PyCFunction) _wrap_wxLogStatus, METH_VARARGS | METH_KEYWORDS }, { "wxLogVerbose", (PyCFunction) _wrap_wxLogVerbose, METH_VARARGS | METH_KEYWORDS }, + { "wxLogDebug", (PyCFunction) _wrap_wxLogDebug, METH_VARARGS | METH_KEYWORDS }, { "wxLogInfo", (PyCFunction) _wrap_wxLogInfo, METH_VARARGS | METH_KEYWORDS }, { "wxLogMessage", (PyCFunction) _wrap_wxLogMessage, METH_VARARGS | METH_KEYWORDS }, { "wxLogWarning", (PyCFunction) _wrap_wxLogWarning, METH_VARARGS | METH_KEYWORDS }, @@ -11476,15 +11346,6 @@ static PyMethodDef misc2cMethods[] = { { "wxSafeYield", (PyCFunction) _wrap_wxSafeYield, METH_VARARGS | METH_KEYWORDS }, { "wxCaret_SetBlinkTime", (PyCFunction) _wrap_wxCaret_SetBlinkTime, METH_VARARGS | METH_KEYWORDS }, { "wxCaret_GetBlinkTime", (PyCFunction) _wrap_wxCaret_GetBlinkTime, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseString", (PyCFunction) _wrap_wxResourceParseString, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseFile", (PyCFunction) _wrap_wxResourceParseFile, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseData", (PyCFunction) _wrap_wxResourceParseData, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceGetIdentifier", (PyCFunction) _wrap_wxResourceGetIdentifier, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateMenuBar", (PyCFunction) _wrap_wxResourceCreateMenuBar, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateIcon", (PyCFunction) _wrap_wxResourceCreateIcon, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateBitmap", (PyCFunction) _wrap_wxResourceCreateBitmap, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceClear", (PyCFunction) _wrap_wxResourceClear, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceAddIdentifier", (PyCFunction) _wrap_wxResourceAddIdentifier, METH_VARARGS | METH_KEYWORDS }, { "wxGetTopLevelParent", (PyCFunction) _wrap_wxGetTopLevelParent, METH_VARARGS | METH_KEYWORDS }, { "wxFindWindowAtPoint", (PyCFunction) _wrap_wxFindWindowAtPoint, METH_VARARGS | METH_KEYWORDS }, { "wxGenericFindWindowAtPoint", (PyCFunction) _wrap_wxGenericFindWindowAtPoint, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/misc2.py b/wxPython/src/mac/misc2.py index d4e0d0c096..0780c1886a 100644 --- a/wxPython/src/mac/misc2.py +++ b/wxPython/src/mac/misc2.py @@ -98,9 +98,12 @@ class wxCaretPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxCaret(self) + def __del__(self, delfunc=misc2c.delete_wxCaret): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(misc2c.wxCaret_IsOk,(self,) + _args, _kwargs) return val @@ -156,9 +159,12 @@ class wxBusyCursorPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxBusyCursor(self) + def __del__(self, delfunc=misc2c.delete_wxBusyCursor): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxBusyCursor instance at %s>" % (self.this,) class wxBusyCursor(wxBusyCursorPtr): @@ -173,9 +179,12 @@ class wxWindowDisablerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxWindowDisabler(self) + def __del__(self, delfunc=misc2c.delete_wxWindowDisabler): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxWindowDisabler instance at %s>" % (self.this,) class wxWindowDisabler(wxWindowDisablerPtr): @@ -190,9 +199,12 @@ class wxMutexGuiLockerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxMutexGuiLocker(self) + def __del__(self, delfunc=misc2c.delete_wxMutexGuiLocker): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxMutexGuiLocker instance at %s>" % (self.this,) class wxMutexGuiLocker(wxMutexGuiLockerPtr): @@ -207,9 +219,12 @@ class wxTipProviderPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxTipProvider(self) + def __del__(self, delfunc=misc2c.delete_wxTipProvider): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetTip(self, *_args, **_kwargs): val = apply(misc2c.wxTipProvider_GetTip,(self,) + _args, _kwargs) return val @@ -250,17 +265,20 @@ class wxDragImagePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxDragImage(self) + def __del__(self, delfunc=misc2c.delete_wxDragImage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetBackingBitmap(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_SetBackingBitmap,(self,) + _args, _kwargs) return val def BeginDrag(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_BeginDrag,(self,) + _args, _kwargs) return val - def BeginDrag2(self, *_args, **_kwargs): - val = apply(misc2c.wxDragImage_BeginDrag2,(self,) + _args, _kwargs) + def BeginDragBounded(self, *_args, **_kwargs): + val = apply(misc2c.wxDragImage_BeginDragBounded,(self,) + _args, _kwargs) return val def EndDrag(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_EndDrag,(self,) + _args, _kwargs) @@ -283,6 +301,7 @@ class wxDragImagePtr(wxObjectPtr): return val def __repr__(self): return "<C wxDragImage instance at %s>" % (self.this,) + BeginDrag2 = BeginDragBounded class wxDragImage(wxDragImagePtr): def __init__(self,*_args,**_kwargs): self.this = apply(misc2c.new_wxDragImage,_args,_kwargs) @@ -315,9 +334,12 @@ class wxPyTimerPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxPyTimer(self) + def __del__(self, delfunc=misc2c.delete_wxPyTimer): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetInterval(self, *_args, **_kwargs): val = apply(misc2c.wxPyTimer_GetInterval,(self,) + _args, _kwargs) return val @@ -350,9 +372,12 @@ class wxStopWatchPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxStopWatch(self) + def __del__(self, delfunc=misc2c.delete_wxStopWatch): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Start(self, *_args, **_kwargs): val = apply(misc2c.wxStopWatch_Start,(self,) + _args, _kwargs) return val @@ -504,9 +529,12 @@ class wxLogNullPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxLogNull(self) + def __del__(self, delfunc=misc2c.delete_wxLogNull): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxLogNull instance at %s>" % (self.this,) class wxLogNull(wxLogNullPtr): @@ -631,9 +659,12 @@ class wxJoystickPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxJoystick(self) + def __del__(self, delfunc=misc2c.delete_wxJoystick): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPosition(self, *_args, **_kwargs): val = apply(misc2c.wxJoystick_GetPosition,(self,) + _args, _kwargs) if val: val = wxPointPtr(val) ; val.thisown = 1 @@ -775,9 +806,12 @@ class wxWavePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxWave(self) + def __del__(self, delfunc=misc2c.delete_wxWave): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(misc2c.wxWave_IsOk,(self,) + _args, _kwargs) return val @@ -895,9 +929,12 @@ class wxFileTypePtr : def Unassociate(self, *_args, **_kwargs): val = apply(misc2c.wxFileType_Unassociate,(self,) + _args, _kwargs) return val - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxFileType(self) + def __del__(self, delfunc=misc2c.delete_wxFileType): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxFileType instance at %s>" % (self.this,) class wxFileType(wxFileTypePtr): @@ -945,9 +982,12 @@ class wxMimeTypesManagerPtr : def Unassociate(self, *_args, **_kwargs): val = apply(misc2c.wxMimeTypesManager_Unassociate,(self,) + _args, _kwargs) return val - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxMimeTypesManager(self) + def __del__(self, delfunc=misc2c.delete_wxMimeTypesManager): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxMimeTypesManager instance at %s>" % (self.this,) class wxMimeTypesManager(wxMimeTypesManagerPtr): @@ -980,9 +1020,12 @@ class wxFileHistoryPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxFileHistory(self) + def __del__(self, delfunc=misc2c.delete_wxFileHistory): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddFileToHistory(self, *_args, **_kwargs): val = apply(misc2c.wxFileHistory_AddFileToHistory,(self,) + _args, _kwargs) return val @@ -1091,9 +1134,12 @@ class wxSingleInstanceCheckerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxSingleInstanceChecker(self) + def __del__(self, delfunc=misc2c.delete_wxSingleInstanceChecker): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Create(self, *_args, **_kwargs): val = apply(misc2c.wxSingleInstanceChecker_Create,(self,) + _args, _kwargs) return val @@ -1186,32 +1232,6 @@ def wxGetTopLevelParent(*_args, **_kwargs): val = apply(misc2c.wxGetTopLevelParent,_args,_kwargs) return val -wxResourceAddIdentifier = misc2c.wxResourceAddIdentifier - -wxResourceClear = misc2c.wxResourceClear - -def wxResourceCreateBitmap(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateBitmap,_args,_kwargs) - if val: val = wxBitmapPtr(val); val.thisown = 1 - return val - -def wxResourceCreateIcon(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateIcon,_args,_kwargs) - if val: val = wxIconPtr(val); val.thisown = 1 - return val - -def wxResourceCreateMenuBar(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateMenuBar,_args,_kwargs) - return val - -wxResourceGetIdentifier = misc2c.wxResourceGetIdentifier - -wxResourceParseData = misc2c.wxResourceParseData - -wxResourceParseFile = misc2c.wxResourceParseFile - -wxResourceParseString = misc2c.wxResourceParseString - wxCaret_GetBlinkTime = misc2c.wxCaret_GetBlinkTime wxCaret_SetBlinkTime = misc2c.wxCaret_SetBlinkTime @@ -1249,6 +1269,8 @@ wxLogMessage = misc2c.wxLogMessage wxLogInfo = misc2c.wxLogInfo +wxLogDebug = misc2c.wxLogDebug + wxLogVerbose = misc2c.wxLogVerbose wxLogStatus = misc2c.wxLogStatus @@ -1338,6 +1360,10 @@ wxLog_GetTraceMask = misc2c.wxLog_GetTraceMask wxLog_IsAllowedTraceMask = misc2c.wxLog_IsAllowedTraceMask +wxLog_SetLogLevel = misc2c.wxLog_SetLogLevel + +wxLog_GetLogLevel = misc2c.wxLog_GetLogLevel + wxProcess_Kill = misc2c.wxProcess_Kill wxProcess_Exists = misc2c.wxProcess_Exists @@ -1367,8 +1393,6 @@ def wxArtProvider_GetIcon(*_args, **_kwargs): if val: val = wxIconPtr(val); val.thisown = 1 return val -wxArtProvider_CleanUpProviders = misc2c.wxArtProvider_CleanUpProviders - #-------------- VARIABLE WRAPPERS ------------------ diff --git a/wxPython/src/mac/printfw.cpp b/wxPython/src/mac/printfw.cpp index 25d56f1645..af0892da95 100644 --- a/wxPython/src/mac/printfw.cpp +++ b/wxPython/src/mac/printfw.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -356,7 +355,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -821,7 +820,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -856,7 +855,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterOptions(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -891,7 +890,7 @@ static PyObject *_wrap_wxPrintData_GetPreviewCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -926,7 +925,7 @@ static PyObject *_wrap_wxPrintData_GetFilename(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -961,7 +960,7 @@ static PyObject *_wrap_wxPrintData_GetFontMetricPath(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1548,8 +1547,7 @@ static PyObject *_wrap_new_wxPostScriptDC(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPostScriptDC",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPostScriptDC. Expected _wxPrintData_p."); return NULL; } @@ -1626,8 +1624,7 @@ static PyObject *_wrap_wxPostScriptDC_SetPrintData(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostScriptDC_SetPrintData. Expected _wxPrintData_p."); return NULL; } @@ -2627,8 +2624,7 @@ static PyObject *_wrap_wxPageSetupDialogData_SetPrintData(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPageSetupDialogData_SetPrintData. Expected _wxPrintData_p."); return NULL; } @@ -3434,8 +3430,7 @@ static PyObject *_wrap_wxPrintDialogData_SetPrintData(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPrintDialogData_SetPrintData. Expected _wxPrintData_p."); return NULL; } diff --git a/wxPython/src/mac/printfw.py b/wxPython/src/mac/printfw.py index 230d839866..b9bbff1719 100644 --- a/wxPython/src/mac/printfw.py +++ b/wxPython/src/mac/printfw.py @@ -25,9 +25,12 @@ class wxPrintDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrintData(self) + def __del__(self, delfunc=printfwc.delete_wxPrintData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetNoCopies(self, *_args, **_kwargs): val = apply(printfwc.wxPrintData_GetNoCopies,(self,) + _args, _kwargs) return val @@ -187,9 +190,12 @@ class wxPageSetupDialogDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPageSetupDialogData(self) + def __del__(self, delfunc=printfwc.delete_wxPageSetupDialogData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableHelp(self, *_args, **_kwargs): val = apply(printfwc.wxPageSetupDialogData_EnableHelp,(self,) + _args, _kwargs) return val @@ -319,9 +325,12 @@ class wxPrintDialogDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrintDialogData(self) + def __del__(self, delfunc=printfwc.delete_wxPrintDialogData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableHelp(self, *_args, **_kwargs): val = apply(printfwc.wxPrintDialogData_EnableHelp,(self,) + _args, _kwargs) return val @@ -491,9 +500,12 @@ class wxPrinterPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrinter(self) + def __del__(self, delfunc=printfwc.delete_wxPrinter): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def CreateAbortWindow(self, *_args, **_kwargs): val = apply(printfwc.wxPrinter_CreateAbortWindow,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/sizers.cpp b/wxPython/src/mac/sizers.cpp index b14d6ff85a..63b71b1e97 100644 --- a/wxPython/src/mac/sizers.cpp +++ b/wxPython/src/mac/sizers.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -481,6 +480,34 @@ static PyObject *_wrap_wxSizerItem_IsSpacer(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxSizerItem_IsShown(_swigobj) (_swigobj->IsShown()) +static PyObject *_wrap_wxSizerItem_IsShown(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizerItem * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxSizerItem_IsShown",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizerItem_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizerItem_IsShown. Expected _wxSizerItem_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizerItem_IsShown(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxSizerItem_GetWindow(_swigobj) (_swigobj->GetWindow()) static PyObject *_wrap_wxSizerItem_GetWindow(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -812,6 +839,37 @@ static PyObject *_wrap_wxSizerItem_SetBorder(PyObject *self, PyObject *args, PyO return _resultobj; } +#define wxSizerItem_Show(_swigobj,_swigarg0) (_swigobj->Show(_swigarg0)) +static PyObject *_wrap_wxSizerItem_Show(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizerItem * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxSizerItem_Show",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizerItem_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizerItem_Show. Expected _wxSizerItem_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizerItem_Show(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static PyObject * wxSizerItem_GetUserData(wxSizerItem *self) { wxPyUserData* data = (wxPyUserData*)self->GetUserData(); if (data) { @@ -1994,6 +2052,265 @@ static PyObject *_wrap_wxSizer_GetChildren(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxSizer_ShowWindow(_swigobj,_swigarg0,_swigarg1) (_swigobj->Show(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxSizer_ShowWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxWindow * _arg1; + bool _arg2 = (bool ) TRUE; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + int tempbool2 = (int) TRUE; + char *_kwnames[] = { "self","window","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxSizer_ShowWindow",_kwnames,&_argo0,&_argo1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_ShowWindow. Expected _wxWindow_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowWindow(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_HideWindow(_swigobj,_swigarg0) (_swigobj->Hide(_swigarg0)) +static PyObject *_wrap_wxSizer_HideWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxWindow * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","window", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_HideWindow",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_HideWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_HideWindow. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_HideWindow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_ShowSizer(_swigobj,_swigarg0,_swigarg1) (_swigobj->Show(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxSizer_ShowSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxSizer * _arg1; + bool _arg2 = (bool ) TRUE; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + int tempbool2 = (int) TRUE; + char *_kwnames[] = { "self","sizer","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxSizer_ShowSizer",_kwnames,&_argo0,&_argo1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_ShowSizer. Expected _wxSizer_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowSizer(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_HideSizer(_swigobj,_swigarg0) (_swigobj->Hide(_swigarg0)) +static PyObject *_wrap_wxSizer_HideSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxSizer * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","sizer", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_HideSizer",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_HideSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_HideSizer. Expected _wxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_HideSizer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_IsShownWindow(_swigobj,_swigarg0) (_swigobj->IsShown(_swigarg0)) +static PyObject *_wrap_wxSizer_IsShownWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizer * _arg0; + wxWindow * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","window", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_IsShownWindow",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_IsShownWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_IsShownWindow. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizer_IsShownWindow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxSizer_IsShownSizer(_swigobj,_swigarg0) (_swigobj->IsShown(_swigarg0)) +static PyObject *_wrap_wxSizer_IsShownSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizer * _arg0; + wxSizer * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","sizer", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_IsShownSizer",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_IsShownSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_IsShownSizer. Expected _wxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizer_IsShownSizer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxSizer_ShowItems(_swigobj,_swigarg0) (_swigobj->ShowItems(_swigarg0)) +static PyObject *_wrap_wxSizer_ShowItems(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxSizer_ShowItems",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowItems. Expected _wxSizer_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowItems(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void *SwigwxPySizerTowxSizer(void *ptr) { wxPySizer *src; wxSizer *dest; @@ -2145,6 +2462,35 @@ static PyObject *_wrap_wxBoxSizer_GetOrientation(PyObject *self, PyObject *args, return _resultobj; } +#define wxBoxSizer_SetOrientation(_swigobj,_swigarg0) (_swigobj->SetOrientation(_swigarg0)) +static PyObject *_wrap_wxBoxSizer_SetOrientation(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxBoxSizer * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","orient", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxBoxSizer_SetOrientation",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBoxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBoxSizer_SetOrientation. Expected _wxBoxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxBoxSizer_SetOrientation(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxBoxSizer_RecalcSizes(_swigobj) (_swigobj->RecalcSizes()) static PyObject *_wrap_wxBoxSizer_RecalcSizes(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3075,10 +3421,18 @@ static PyMethodDef sizerscMethods[] = { { "new_wxStaticBoxSizer", (PyCFunction) _wrap_new_wxStaticBoxSizer, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_CalcMin", (PyCFunction) _wrap_wxBoxSizer_CalcMin, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_RecalcSizes", (PyCFunction) _wrap_wxBoxSizer_RecalcSizes, METH_VARARGS | METH_KEYWORDS }, + { "wxBoxSizer_SetOrientation", (PyCFunction) _wrap_wxBoxSizer_SetOrientation, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_GetOrientation", (PyCFunction) _wrap_wxBoxSizer_GetOrientation, METH_VARARGS | METH_KEYWORDS }, { "new_wxBoxSizer", (PyCFunction) _wrap_new_wxBoxSizer, METH_VARARGS | METH_KEYWORDS }, { "wxPySizer__setCallbackInfo", (PyCFunction) _wrap_wxPySizer__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxPySizer", (PyCFunction) _wrap_new_wxPySizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowItems", (PyCFunction) _wrap_wxSizer_ShowItems, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_IsShownSizer", (PyCFunction) _wrap_wxSizer_IsShownSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_IsShownWindow", (PyCFunction) _wrap_wxSizer_IsShownWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_HideSizer", (PyCFunction) _wrap_wxSizer_HideSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowSizer", (PyCFunction) _wrap_wxSizer_ShowSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_HideWindow", (PyCFunction) _wrap_wxSizer_HideWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowWindow", (PyCFunction) _wrap_wxSizer_ShowWindow, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_GetChildren", (PyCFunction) _wrap_wxSizer_GetChildren, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_DeleteWindows", (PyCFunction) _wrap_wxSizer_DeleteWindows, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_Clear", (PyCFunction) _wrap_wxSizer_Clear, METH_VARARGS | METH_KEYWORDS }, @@ -3110,6 +3464,7 @@ static PyMethodDef sizerscMethods[] = { { "wxSizer_Destroy", (PyCFunction) _wrap_wxSizer_Destroy, METH_VARARGS | METH_KEYWORDS }, { "wxSizer__setOORInfo", (PyCFunction) _wrap_wxSizer__setOORInfo, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_GetUserData", (PyCFunction) _wrap_wxSizerItem_GetUserData, METH_VARARGS | METH_KEYWORDS }, + { "wxSizerItem_Show", (PyCFunction) _wrap_wxSizerItem_Show, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetBorder", (PyCFunction) _wrap_wxSizerItem_SetBorder, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetFlag", (PyCFunction) _wrap_wxSizerItem_SetFlag, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetOption", (PyCFunction) _wrap_wxSizerItem_SetOption, METH_VARARGS | METH_KEYWORDS }, @@ -3121,6 +3476,7 @@ static PyMethodDef sizerscMethods[] = { { "wxSizerItem_GetSizer", (PyCFunction) _wrap_wxSizerItem_GetSizer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetWindow", (PyCFunction) _wrap_wxSizerItem_SetWindow, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_GetWindow", (PyCFunction) _wrap_wxSizerItem_GetWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizerItem_IsShown", (PyCFunction) _wrap_wxSizerItem_IsShown, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsSpacer", (PyCFunction) _wrap_wxSizerItem_IsSpacer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsSizer", (PyCFunction) _wrap_wxSizerItem_IsSizer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsWindow", (PyCFunction) _wrap_wxSizerItem_IsWindow, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/sizers.py b/wxPython/src/mac/sizers.py index 88d328f1d6..922d4a60e9 100644 --- a/wxPython/src/mac/sizers.py +++ b/wxPython/src/mac/sizers.py @@ -15,7 +15,6 @@ from controls import * from events import * import wx -import string class wxSizerItemPtr(wxObjectPtr): def __init__(self,this): self.this = this @@ -59,6 +58,9 @@ class wxSizerItemPtr(wxObjectPtr): def IsSpacer(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_IsSpacer,(self,) + _args, _kwargs) return val + def IsShown(self, *_args, **_kwargs): + val = apply(sizersc.wxSizerItem_IsShown,(self,) + _args, _kwargs) + return val def GetWindow(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_GetWindow,(self,) + _args, _kwargs) return val @@ -92,6 +94,9 @@ class wxSizerItemPtr(wxObjectPtr): def SetBorder(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_SetBorder,(self,) + _args, _kwargs) return val + def Show(self, *_args, **_kwargs): + val = apply(sizersc.wxSizerItem_Show,(self,) + _args, _kwargs) + return val def GetUserData(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_GetUserData,(self,) + _args, _kwargs) return val @@ -202,40 +207,69 @@ class wxSizerPtr(wxObjectPtr): def GetChildren(self, *_args, **_kwargs): val = apply(sizersc.wxSizer_GetChildren,(self,) + _args, _kwargs) return val + def ShowWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowWindow,(self,) + _args, _kwargs) + return val + def HideWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_HideWindow,(self,) + _args, _kwargs) + return val + def ShowSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowSizer,(self,) + _args, _kwargs) + return val + def HideSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_HideSizer,(self,) + _args, _kwargs) + return val + def IsShownWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_IsShownWindow,(self,) + _args, _kwargs) + return val + def IsShownSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_IsShownSizer,(self,) + _args, _kwargs) + return val + def ShowItems(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowItems,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxSizer instance at %s>" % (self.this,) def Add(self, *args, **kw): if type(args[0]) == type(1): apply(self.AddSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.AddSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.AddWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Insert(self, *args, **kw): if type(args[1]) == type(1): apply(self.InsertSpacer, args, kw) - elif string.find(args[1].this, 'Sizer') != -1: + elif isinstance(args[1], wxSizerPtr): apply(self.InsertSizer, args, kw) - else: + elif isinstance(args[1], wxWindowPtr): apply(self.InsertWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Prepend(self, *args, **kw): if type(args[0]) == type(1): apply(self.PrependSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.PrependSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.PrependWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Remove(self, *args, **kw): if type(args[0]) == type(1): - apply(self.RemovePos, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: - apply(self.RemoveSizer, args, kw) + return apply(self.RemovePos, args, kw) + elif isinstance(args[0], wxSizerPtr): + return apply(self.RemoveSizer, args, kw) + elif isinstance(args[0], wxWindowPtr): + return apply(self.RemoveWindow, args, kw) else: - apply(self.RemoveWindow, args, kw) + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def AddMany(self, widgets): for childinfo in widgets: @@ -247,10 +281,12 @@ class wxSizerPtr(wxObjectPtr): def SetItemMinSize(self, *args): if type(args[0]) == type(1): apply(self.SetItemMinSizePos, args) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.SetItemMinSizeSizer, args) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.SetItemMinSizeWindow, args) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def GetSizeTuple(self): @@ -260,6 +296,31 @@ class wxSizerPtr(wxObjectPtr): def GetMinSizeTuple(self): return self.GetMinSize().asTuple() + + def Show(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.ShowSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.ShowWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def Hide(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.HideSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.HideWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def IsShown(self, *args): + if isinstance(args[0], wxSizerPtr): + return apply(self.IsShownSizer, args) + elif isinstance(args[0], wxWindowPtr): + return apply(self.IsShownWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + class wxSizer(wxSizerPtr): def __init__(self,this): self.this = this @@ -293,6 +354,9 @@ class wxBoxSizerPtr(wxSizerPtr): def GetOrientation(self, *_args, **_kwargs): val = apply(sizersc.wxBoxSizer_GetOrientation,(self,) + _args, _kwargs) return val + def SetOrientation(self, *_args, **_kwargs): + val = apply(sizersc.wxBoxSizer_SetOrientation,(self,) + _args, _kwargs) + return val def RecalcSizes(self, *_args, **_kwargs): val = apply(sizersc.wxBoxSizer_RecalcSizes,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/stattool.cpp b/wxPython/src/mac/stattool.cpp index 2bc8a5e54d..697531773d 100644 --- a/wxPython/src/mac/stattool.cpp +++ b/wxPython/src/mac/stattool.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -338,7 +337,7 @@ static PyObject *_wrap_wxStatusBar_GetStatusText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1093,7 +1092,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetLabel(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1130,7 +1129,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetShortHelp(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1167,7 +1166,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetLongHelp(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1366,8 +1365,7 @@ static PyObject *_wrap_wxToolBarToolBase_SetNormalBitmap(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxToolBarToolBase_SetNormalBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1403,8 +1401,7 @@ static PyObject *_wrap_wxToolBarToolBase_SetDisabledBitmap(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxToolBarToolBase_SetDisabledBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1674,15 +1671,13 @@ static PyObject *_wrap_wxToolBarBase_DoAddTool(PyObject *self, PyObject *args, P return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxToolBarBase_DoAddTool. Expected _wxBitmap_p."); return NULL; } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_DoAddTool. Expected _wxBitmap_p."); return NULL; } @@ -1725,14 +1720,14 @@ static PyObject *_wrap_wxToolBarBase_DoAddTool(PyObject *self, PyObject *args, P return _resultobj; } -static wxToolBarToolBase * wxToolBarBase_InsertTool(wxToolBarBase *self,size_t pos,int id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) { +static wxToolBarToolBase * wxToolBarBase_DoInsertTool(wxToolBarBase *self,size_t pos,int id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) { wxPyUserData* udata = NULL; if (clientData && clientData != Py_None) udata = new wxPyUserData(clientData); return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind, shortHelp, longHelp, udata); } -static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxToolBarBase_DoInsertTool(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxToolBarToolBase * _result; wxToolBarBase * _arg0; @@ -1755,12 +1750,12 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, char *_kwnames[] = { "self","pos","id","label","bitmap","bmpDisabled","kind","shortHelp","longHelp","clientData", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_InsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_DoInsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarBase_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_InsertTool. Expected _wxToolBarBase_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_DoInsertTool. Expected _wxToolBarBase_p."); return NULL; } } @@ -1770,16 +1765,14 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, return NULL; } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_InsertTool. Expected _wxBitmap_p."); + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_DoInsertTool. Expected _wxBitmap_p."); return NULL; } } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_InsertTool. Expected _wxBitmap_p."); + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_DoInsertTool. Expected _wxBitmap_p."); return NULL; } } @@ -1801,7 +1794,7 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxToolBarToolBase *)wxToolBarBase_InsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9); + _result = (wxToolBarToolBase *)wxToolBarBase_DoInsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2422,7 +2415,7 @@ static PyObject *_wrap_wxToolBarBase_GetToolShortHelp(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2500,7 +2493,7 @@ static PyObject *_wrap_wxToolBarBase_GetToolLongHelp(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3531,7 +3524,7 @@ static PyMethodDef stattoolcMethods[] = { { "wxToolBarBase_FindControl", (PyCFunction) _wrap_wxToolBarBase_FindControl, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_InsertControl", (PyCFunction) _wrap_wxToolBarBase_InsertControl, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_AddControl", (PyCFunction) _wrap_wxToolBarBase_AddControl, METH_VARARGS | METH_KEYWORDS }, - { "wxToolBarBase_InsertTool", (PyCFunction) _wrap_wxToolBarBase_InsertTool, METH_VARARGS | METH_KEYWORDS }, + { "wxToolBarBase_DoInsertTool", (PyCFunction) _wrap_wxToolBarBase_DoInsertTool, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_DoAddTool", (PyCFunction) _wrap_wxToolBarBase_DoAddTool, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarToolBase_SetClientData", (PyCFunction) _wrap_wxToolBarToolBase_SetClientData, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarToolBase_GetClientData", (PyCFunction) _wrap_wxToolBarToolBase_GetClientData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/stattool.py b/wxPython/src/mac/stattool.py index cea709ed3e..0c74eee1b4 100644 --- a/wxPython/src/mac/stattool.py +++ b/wxPython/src/mac/stattool.py @@ -193,8 +193,8 @@ class wxToolBarBasePtr(wxControlPtr): def DoAddTool(self, *_args, **_kwargs): val = apply(stattoolc.wxToolBarBase_DoAddTool,(self,) + _args, _kwargs) return val - def InsertTool(self, *_args, **_kwargs): - val = apply(stattoolc.wxToolBarBase_InsertTool,(self,) + _args, _kwargs) + def DoInsertTool(self, *_args, **_kwargs): + val = apply(stattoolc.wxToolBarBase_DoInsertTool,(self,) + _args, _kwargs) return val def AddControl(self, *_args, **_kwargs): val = apply(stattoolc.wxToolBarBase_AddControl,(self,) + _args, _kwargs) @@ -370,7 +370,7 @@ class wxToolBarBasePtr(wxControlPtr): # 2.3.3. They are renamed to have 'Label' in the name so as to be # able to keep backwards compatibility with using the above # methods. Eventually these should migrate to be the methods used - # primarily and loose the 'Label' in the name... + # primarily and lose the 'Label' in the name... def AddLabelTool(self, id, label, bitmap, bmpDisabled = wxNullBitmap, diff --git a/wxPython/src/mac/streams.cpp b/wxPython/src/mac/streams.cpp index d46a442ce9..862da23623 100644 --- a/wxPython/src/mac/streams.cpp +++ b/wxPython/src/mac/streams.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -362,6 +361,233 @@ static PyObject *_wrap_wxInputStream_tell(PyObject *self, PyObject *args, PyObje return _resultobj; } +#define wxInputStream_Peek(_swigobj) (_swigobj->Peek()) +static PyObject *_wrap_wxInputStream_Peek(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + char _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_Peek",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Peek. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (char )wxInputStream_Peek(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("c",_result); + return _resultobj; +} + +#define wxInputStream_GetC(_swigobj) (_swigobj->GetC()) +static PyObject *_wrap_wxInputStream_GetC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + char _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_GetC",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_GetC. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (char )wxInputStream_GetC(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("c",_result); + return _resultobj; +} + +#define wxInputStream_LastRead(_swigobj) (_swigobj->LastRead()) +static PyObject *_wrap_wxInputStream_LastRead(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + size_t _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_LastRead",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_LastRead. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (size_t )wxInputStream_LastRead(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_CanRead(_swigobj) (_swigobj->CanRead()) +static PyObject *_wrap_wxInputStream_CanRead(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_CanRead",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_CanRead. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_CanRead(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_Eof(_swigobj) (_swigobj->Eof()) +static PyObject *_wrap_wxInputStream_Eof(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_Eof",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Eof. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_Eof(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_Ungetch(_swigobj,_swigarg0) (_swigobj->Ungetch(_swigarg0)) +static PyObject *_wrap_wxInputStream_Ungetch(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + char _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","c", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oc:wxInputStream_Ungetch",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Ungetch. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_Ungetch(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_SeekI(_swigobj,_swigarg0,_swigarg1) (_swigobj->SeekI(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxInputStream_SeekI(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + wxPyInputStream * _arg0; + long _arg1; + wxSeekMode _arg2 = (wxSeekMode ) (wxFromStart); + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pos","mode", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol|i:wxInputStream_SeekI",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_SeekI. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxInputStream_SeekI(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +#define wxInputStream_TellI(_swigobj) (_swigobj->TellI()) +static PyObject *_wrap_wxInputStream_TellI(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_TellI",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_TellI. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxInputStream_TellI(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + static void wxOutputStream_write(wxOutputStream *self,PyObject * obj) { // We use only strings for the streams, not unicode PyObject* str = PyObject_Str(obj); @@ -407,6 +633,14 @@ static PyObject *_wrap_wxOutputStream_write(PyObject *self, PyObject *args, PyOb static PyMethodDef streamscMethods[] = { { "wxOutputStream_write", (PyCFunction) _wrap_wxOutputStream_write, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_TellI", (PyCFunction) _wrap_wxInputStream_TellI, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_SeekI", (PyCFunction) _wrap_wxInputStream_SeekI, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Ungetch", (PyCFunction) _wrap_wxInputStream_Ungetch, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Eof", (PyCFunction) _wrap_wxInputStream_Eof, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_CanRead", (PyCFunction) _wrap_wxInputStream_CanRead, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_LastRead", (PyCFunction) _wrap_wxInputStream_LastRead, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_GetC", (PyCFunction) _wrap_wxInputStream_GetC, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Peek", (PyCFunction) _wrap_wxInputStream_Peek, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_tell", (PyCFunction) _wrap_wxInputStream_tell, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_seek", (PyCFunction) _wrap_wxInputStream_seek, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_readlines", (PyCFunction) _wrap_wxInputStream_readlines, METH_VARARGS | METH_KEYWORDS }, @@ -528,6 +762,9 @@ SWIGEXPORT(void) initstreamsc() { SWIG_globals = SWIG_newvarlink(); m = Py_InitModule("streamsc", streamscMethods); d = PyModule_GetDict(m); + PyDict_SetItemString(d,"wxFromStart", PyInt_FromLong((long) wxFromStart)); + PyDict_SetItemString(d,"wxFromCurrent", PyInt_FromLong((long) wxFromCurrent)); + PyDict_SetItemString(d,"wxFromEnd", PyInt_FromLong((long) wxFromEnd)); wxPyPtrTypeMap_Add("wxInputStream", "wxPyInputStream"); { diff --git a/wxPython/src/mac/streams.py b/wxPython/src/mac/streams.py index 6394f60946..d2a8b18800 100644 --- a/wxPython/src/mac/streams.py +++ b/wxPython/src/mac/streams.py @@ -1,7 +1,6 @@ # This file was created automatically by SWIG. import streamsc import wx -import string class wxInputStreamPtr : def __init__(self,this): self.this = this @@ -30,6 +29,30 @@ class wxInputStreamPtr : def tell(self, *_args, **_kwargs): val = apply(streamsc.wxInputStream_tell,(self,) + _args, _kwargs) return val + def Peek(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Peek,(self,) + _args, _kwargs) + return val + def GetC(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_GetC,(self,) + _args, _kwargs) + return val + def LastRead(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_LastRead,(self,) + _args, _kwargs) + return val + def CanRead(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_CanRead,(self,) + _args, _kwargs) + return val + def Eof(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Eof,(self,) + _args, _kwargs) + return val + def Ungetch(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Ungetch,(self,) + _args, _kwargs) + return val + def SeekI(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_SeekI,(self,) + _args, _kwargs) + return val + def TellI(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_TellI,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxInputStream instance at %s>" % (self.this,) class wxInputStream(wxInputStreamPtr): @@ -64,3 +87,6 @@ class wxOutputStream(wxOutputStreamPtr): #-------------- VARIABLE WRAPPERS ------------------ +wxFromStart = streamsc.wxFromStart +wxFromCurrent = streamsc.wxFromCurrent +wxFromEnd = streamsc.wxFromEnd diff --git a/wxPython/src/mac/utils.cpp b/wxPython/src/mac/utils.cpp index 26cb3d2389..98dc1f551c 100644 --- a/wxPython/src/mac/utils.cpp +++ b/wxPython/src/mac/utils.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -97,7 +96,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { if (ret) { PyTuple_SET_ITEM(ret, 0, PyInt_FromLong(flag)); #if wxUSE_UNICODE - PyTuple_SET_ITEM(ret, 1, PyUnicode_FromUnicode(str.c_str(), str.Len())); + PyTuple_SET_ITEM(ret, 1, PyUnicode_FromWideChar(str.c_str(), str.Len())); #else PyTuple_SET_ITEM(ret, 1, PyString_FromStringAndSize(str.c_str(), str.Len())); #endif @@ -531,7 +530,7 @@ static PyObject *_wrap_wxConfigBase_GetAppName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -778,7 +777,7 @@ static PyObject *_wrap_wxConfigBase_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -815,7 +814,7 @@ static PyObject *_wrap_wxConfigBase_GetVendorName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1001,7 +1000,7 @@ static PyObject *_wrap_wxConfigBase_Read(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1734,7 +1733,7 @@ static PyObject *_wrap_wxConfigBase_ExpandEnvVars(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2182,7 +2181,7 @@ static PyObject *_wrap_wxDateTime_GetMonthName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2211,7 +2210,7 @@ static PyObject *_wrap_wxDateTime_GetWeekDayName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2346,6 +2345,26 @@ static PyObject *_wrap_wxDateTime_Now(PyObject *self, PyObject *args, PyObject * return _resultobj; } +static PyObject *_wrap_wxDateTime_UNow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxDateTime * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxDateTime_UNow",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxDateTime (wxDateTime::UNow()); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxDateTime_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + static PyObject *_wrap_wxDateTime_Today(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; @@ -3025,18 +3044,19 @@ static PyObject *_wrap_wxDateTime_SetMillisecond(PyObject *self, PyObject *args, return _resultobj; } -#define wxDateTime_SetToWeekDayInSameWeek(_swigobj,_swigarg0) (_swigobj->SetToWeekDayInSameWeek(_swigarg0)) +#define wxDateTime_SetToWeekDayInSameWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetToWeekDayInSameWeek(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::WeekDay _arg1; + wxDateTime::WeekFlags _arg2 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","weekday", NULL }; + char *_kwnames[] = { "self","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDateTime_SetToWeekDayInSameWeek",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxDateTime_SetToWeekDayInSameWeek",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3047,7 +3067,7 @@ static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxDateTime & _result_ref = wxDateTime_SetToWeekDayInSameWeek(_arg0,_arg1); + wxDateTime & _result_ref = wxDateTime_SetToWeekDayInSameWeek(_arg0,_arg1,_arg2); _result = (wxDateTime *) &_result_ref; wxPyEndAllowThreads(__tstate); @@ -3062,18 +3082,19 @@ static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObjec return _resultobj; } -#define wxDateTime_GetWeekDayInSameWeek(_swigobj,_swigarg0) (_swigobj->GetWeekDayInSameWeek(_swigarg0)) +#define wxDateTime_GetWeekDayInSameWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetWeekDayInSameWeek(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDateTime_GetWeekDayInSameWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::WeekDay _arg1; + wxDateTime::WeekFlags _arg2 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","weekday", NULL }; + char *_kwnames[] = { "self","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDateTime_GetWeekDayInSameWeek",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxDateTime_GetWeekDayInSameWeek",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3084,7 +3105,7 @@ static PyObject *_wrap_wxDateTime_GetWeekDayInSameWeek(PyObject *self, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxDateTime (wxDateTime_GetWeekDayInSameWeek(_arg0,_arg1)); + _result = new wxDateTime (wxDateTime_GetWeekDayInSameWeek(_arg0,_arg1,_arg2)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3325,18 +3346,19 @@ static PyObject *_wrap_wxDateTime_GetLastWeekDay(PyObject *self, PyObject *args, return _resultobj; } -#define wxDateTime_SetToTheWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetToTheWeek(_swigarg0,_swigarg1)) +#define wxDateTime_SetToTheWeek(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->SetToTheWeek(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxDateTime * _arg0; wxDateTime::wxDateTime_t _arg1; wxDateTime::WeekDay _arg2 = (wxDateTime::WeekDay ) wxDateTime::Mon; + wxDateTime::WeekFlags _arg3 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","numWeek","weekday", NULL }; + char *_kwnames[] = { "self","numWeek","weekday","flags", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|i:wxDateTime_SetToTheWeek",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|ii:wxDateTime_SetToTheWeek",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3347,7 +3369,7 @@ static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, P } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDateTime_SetToTheWeek(_arg0,_arg1,_arg2); + _result = (bool )wxDateTime_SetToTheWeek(_arg0,_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3355,19 +3377,20 @@ static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, P return _resultobj; } -#define wxDateTime_GetWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetWeek(_swigarg0,_swigarg1)) +#define wxDateTime_GetWeek(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->GetWeek(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDateTime_GetWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::wxDateTime_t _arg1; wxDateTime::WeekDay _arg2 = (wxDateTime::WeekDay ) wxDateTime::Mon; + wxDateTime::WeekFlags _arg3 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","numWeek","weekday", NULL }; + char *_kwnames[] = { "self","numWeek","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|i:wxDateTime_GetWeek",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|ii:wxDateTime_GetWeek",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3378,7 +3401,7 @@ static PyObject *_wrap_wxDateTime_GetWeek(PyObject *self, PyObject *args, PyObje } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxDateTime (wxDateTime_GetWeek(_arg0,_arg1,_arg2)); + _result = new wxDateTime (wxDateTime_GetWeek(_arg0,_arg1,_arg2,_arg3)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -4369,8 +4392,7 @@ static PyObject *_wrap_wxDateTime_IsEqualTo(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEqualTo. Expected _wxDateTime_p."); return NULL; } @@ -4406,8 +4428,7 @@ static PyObject *_wrap_wxDateTime_IsEarlierThan(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEarlierThan. Expected _wxDateTime_p."); return NULL; } @@ -4443,8 +4464,7 @@ static PyObject *_wrap_wxDateTime_IsLaterThan(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsLaterThan. Expected _wxDateTime_p."); return NULL; } @@ -4482,15 +4502,13 @@ static PyObject *_wrap_wxDateTime_IsStrictlyBetween(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsStrictlyBetween. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsStrictlyBetween. Expected _wxDateTime_p."); return NULL; } @@ -4528,15 +4546,13 @@ static PyObject *_wrap_wxDateTime_IsBetween(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsBetween. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsBetween. Expected _wxDateTime_p."); return NULL; } @@ -4572,8 +4588,7 @@ static PyObject *_wrap_wxDateTime_IsSameDate(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsSameDate. Expected _wxDateTime_p."); return NULL; } @@ -4609,8 +4624,7 @@ static PyObject *_wrap_wxDateTime_IsSameTime(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsSameTime. Expected _wxDateTime_p."); return NULL; } @@ -4648,15 +4662,13 @@ static PyObject *_wrap_wxDateTime_IsEqualUpTo(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEqualUpTo. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsEqualUpTo. Expected _wxTimeSpan_p."); return NULL; } @@ -4693,8 +4705,7 @@ static PyObject *_wrap_wxDateTime_AddTS(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_AddTS. Expected _wxTimeSpan_p."); return NULL; } @@ -4738,8 +4749,7 @@ static PyObject *_wrap_wxDateTime_AddDS(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_AddDS. Expected _wxDateSpan_p."); return NULL; } @@ -4783,8 +4793,7 @@ static PyObject *_wrap_wxDateTime_SubtractTS(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_SubtractTS. Expected _wxTimeSpan_p."); return NULL; } @@ -4828,8 +4837,7 @@ static PyObject *_wrap_wxDateTime_SubtractDS(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_SubtractDS. Expected _wxDateSpan_p."); return NULL; } @@ -4873,8 +4881,7 @@ static PyObject *_wrap_wxDateTime_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_Subtract. Expected _wxDateTime_p."); return NULL; } @@ -4912,8 +4919,7 @@ static PyObject *_wrap_wxDateTime___add__TS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___add__TS. Expected _wxTimeSpan_p."); return NULL; } @@ -4951,8 +4957,7 @@ static PyObject *_wrap_wxDateTime___add__DS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___add__DS. Expected _wxDateSpan_p."); return NULL; } @@ -4990,8 +4995,7 @@ static PyObject *_wrap_wxDateTime___sub__DT(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__DT. Expected _wxDateTime_p."); return NULL; } @@ -5029,8 +5033,7 @@ static PyObject *_wrap_wxDateTime___sub__TS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__TS. Expected _wxTimeSpan_p."); return NULL; } @@ -5068,8 +5071,7 @@ static PyObject *_wrap_wxDateTime___sub__DS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__DS. Expected _wxDateSpan_p."); return NULL; } @@ -5214,8 +5216,7 @@ static PyObject *_wrap_wxDateTime_ParseFormat(PyObject *self, PyObject *args, Py return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDateTime_ParseFormat. Expected _wxDateTime_p."); return NULL; } @@ -5413,7 +5414,7 @@ static PyObject *_wrap_wxDateTime_Format(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5457,7 +5458,7 @@ static PyObject *_wrap_wxDateTime_FormatDate(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5494,7 +5495,7 @@ static PyObject *_wrap_wxDateTime_FormatTime(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5531,7 +5532,7 @@ static PyObject *_wrap_wxDateTime_FormatISODate(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5568,7 +5569,7 @@ static PyObject *_wrap_wxDateTime_FormatISOTime(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5864,8 +5865,7 @@ static PyObject *_wrap_wxTimeSpan_Add(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_Add. Expected _wxTimeSpan_p."); return NULL; } @@ -5909,8 +5909,7 @@ static PyObject *_wrap_wxTimeSpan_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_Subtract. Expected _wxTimeSpan_p."); return NULL; } @@ -6057,8 +6056,7 @@ static PyObject *_wrap_wxTimeSpan___add__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan___add__. Expected _wxTimeSpan_p."); return NULL; } @@ -6096,8 +6094,7 @@ static PyObject *_wrap_wxTimeSpan___sub__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan___sub__. Expected _wxTimeSpan_p."); return NULL; } @@ -6352,8 +6349,7 @@ static PyObject *_wrap_wxTimeSpan_IsEqualTo(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsEqualTo. Expected _wxTimeSpan_p."); return NULL; } @@ -6389,8 +6385,7 @@ static PyObject *_wrap_wxTimeSpan_IsLongerThan(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsLongerThan. Expected _wxTimeSpan_p."); return NULL; } @@ -6426,8 +6421,7 @@ static PyObject *_wrap_wxTimeSpan_IsShorterThan(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsShorterThan. Expected _wxTimeSpan_p."); return NULL; } @@ -6666,7 +6660,7 @@ static PyObject *_wrap_wxTimeSpan_Format(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7213,8 +7207,7 @@ static PyObject *_wrap_wxDateSpan_Add(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan_Add. Expected _wxDateSpan_p."); return NULL; } @@ -7258,8 +7251,7 @@ static PyObject *_wrap_wxDateSpan_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan_Subtract. Expected _wxDateSpan_p."); return NULL; } @@ -7376,8 +7368,7 @@ static PyObject *_wrap_wxDateSpan___add__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan___add__. Expected _wxDateSpan_p."); return NULL; } @@ -7415,8 +7406,7 @@ static PyObject *_wrap_wxDateSpan___sub__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan___sub__. Expected _wxDateSpan_p."); return NULL; } @@ -7677,6 +7667,7 @@ static PyMethodDef utilscMethods[] = { { "new_wxDateTimeFromTimeT", (PyCFunction) _wrap_new_wxDateTimeFromTimeT, METH_VARARGS | METH_KEYWORDS }, { "new_wxDateTime", (PyCFunction) _wrap_new_wxDateTime, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_Today", (PyCFunction) _wrap_wxDateTime_Today, METH_VARARGS | METH_KEYWORDS }, + { "wxDateTime_UNow", (PyCFunction) _wrap_wxDateTime_UNow, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_Now", (PyCFunction) _wrap_wxDateTime_Now, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_GetEndDST", (PyCFunction) _wrap_wxDateTime_GetEndDST, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_GetBeginDST", (PyCFunction) _wrap_wxDateTime_GetBeginDST, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/utils.py b/wxPython/src/mac/utils.py index da54031f64..5dc18f722d 100644 --- a/wxPython/src/mac/utils.py +++ b/wxPython/src/mac/utils.py @@ -1,6 +1,6 @@ # This file was created automatically by SWIG. import utilsc -import string +import wx class wxConfigBasePtr : Type_Unknown = utilsc.wxConfigBase_Type_Unknown Type_String = utilsc.wxConfigBase_Type_String @@ -10,9 +10,12 @@ class wxConfigBasePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxConfigBase(self) + def __del__(self, delfunc=utilsc.delete_wxConfigBase): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def DeleteAll(self, *_args, **_kwargs): val = apply(utilsc.wxConfigBase_DeleteAll,(self,) + _args, _kwargs) return val @@ -137,9 +140,12 @@ class wxConfigPtr(wxConfigBasePtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxConfig(self) + def __del__(self, delfunc=utilsc.delete_wxConfig): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxConfig instance at %s>" % (self.this,) class wxConfig(wxConfigPtr): @@ -154,9 +160,12 @@ class wxFileConfigPtr(wxConfigBasePtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxFileConfig(self) + def __del__(self, delfunc=utilsc.delete_wxFileConfig): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxFileConfig instance at %s>" % (self.this,) class wxFileConfig(wxFileConfigPtr): @@ -262,9 +271,12 @@ class wxDateTimePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxDateTime(self) + def __del__(self, delfunc=utilsc.delete_wxDateTime): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetToCurrent(self, *_args, **_kwargs): val = apply(utilsc.wxDateTime_SetToCurrent,(self,) + _args, _kwargs) if val: val = wxDateTimePtr(val) @@ -551,17 +563,17 @@ class wxDateTimePtr : return "<C wxDateTime instance at %s>" % (self.this,) def __add__(self, other): - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__add__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__add__DS(other) raise TypeError, 'Invalid r.h.s. type for __add__' def __sub__(self, other): - if string.find(other.this, 'wxDateTime') != -1: + if isinstance(other, wxDateTimePtr): return self.__sub__DT(other) - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__sub__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__sub__DS(other) raise TypeError, 'Invalid r.h.s. type for __sub__' @@ -603,9 +615,12 @@ class wxTimeSpanPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxTimeSpan(self) + def __del__(self, delfunc=utilsc.delete_wxTimeSpan): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Add(self, *_args, **_kwargs): val = apply(utilsc.wxTimeSpan_Add,(self,) + _args, _kwargs) if val: val = wxTimeSpanPtr(val) @@ -702,9 +717,12 @@ class wxDateSpanPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxDateSpan(self) + def __del__(self, delfunc=utilsc.delete_wxDateSpan): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetYears(self, *_args, **_kwargs): val = apply(utilsc.wxDateSpan_SetYears,(self,) + _args, _kwargs) if val: val = wxDateSpanPtr(val) @@ -854,6 +872,11 @@ def wxDateTime_Now(*_args, **_kwargs): if val: val = wxDateTimePtr(val); val.thisown = 1 return val +def wxDateTime_UNow(*_args, **_kwargs): + val = apply(utilsc.wxDateTime_UNow,_args,_kwargs) + if val: val = wxDateTimePtr(val); val.thisown = 1 + return val + def wxDateTime_Today(*_args, **_kwargs): val = apply(utilsc.wxDateTime_Today,_args,_kwargs) if val: val = wxDateTimePtr(val); val.thisown = 1 diff --git a/wxPython/src/mac/windows.cpp b/wxPython/src/mac/windows.cpp index c6ef38888a..612ac019d3 100644 --- a/wxPython/src/mac/windows.cpp +++ b/wxPython/src/mac/windows.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -312,8 +311,7 @@ static PyObject *_wrap_wxEvtHandler_ProcessEvent(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEvtHandler_ProcessEvent. Expected _wxEvent_p."); return NULL; } @@ -348,8 +346,7 @@ static PyObject *_wrap_wxEvtHandler_AddPendingEvent(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEvtHandler_AddPendingEvent. Expected _wxEvent_p."); return NULL; } @@ -1549,6 +1546,34 @@ static PyObject *_wrap_wxWindow_Enable(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxWindow_Disable(_swigobj) (_swigobj->Disable()) +static PyObject *_wrap_wxWindow_Disable(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_Disable",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_Disable. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxWindow_Disable(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxWindow_FindWindowById(_swigobj,_swigarg0) (_swigobj->FindWindow(_swigarg0)) static PyObject *_wrap_wxWindow_FindWindowById(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1645,6 +1670,34 @@ static PyObject *_wrap_wxWindow_Fit(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } +#define wxWindow_FitInside(_swigobj) (_swigobj->FitInside()) +static PyObject *_wrap_wxWindow_FitInside(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_FitInside",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_FitInside. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxWindow_FitInside(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxWindow_GetBackgroundColour(_swigobj) (_swigobj->GetBackgroundColour()) static PyObject *_wrap_wxWindow_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2165,7 +2218,7 @@ static PyObject *_wrap_wxWindow_GetLabel(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2241,7 +2294,7 @@ static PyObject *_wrap_wxWindow_GetName(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2726,7 +2779,7 @@ static PyObject *_wrap_wxWindow_GetTitle(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3218,63 +3271,6 @@ static PyObject *_wrap_wxWindow_Layout(PyObject *self, PyObject *args, PyObject return _resultobj; } -#define wxWindow_LoadFromResource(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->LoadFromResource(_swigarg0,_swigarg1,_swigarg2)) -static PyObject *_wrap_wxWindow_LoadFromResource(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxWindow * _arg0; - wxWindow * _arg1; - wxString * _arg2; - wxResourceTable * _arg3 = (wxResourceTable *) NULL; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - PyObject * _obj2 = 0; - PyObject * _argo3 = 0; - char *_kwnames[] = { "self","parent","resourceName","resourceTable", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO|O:wxWindow_LoadFromResource",_kwnames,&_argo0,&_argo1,&_obj2,&_argo3)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_LoadFromResource. Expected _wxWindow_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_LoadFromResource. Expected _wxWindow_p."); - return NULL; - } - } -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} - if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxWindow_LoadFromResource. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxWindow_LoadFromResource(_arg0,_arg1,*_arg2,_arg3); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj2) - delete _arg2; -} - return _resultobj; -} - #define wxWindow_Lower(_swigobj) (_swigobj->Lower()) static PyObject *_wrap_wxWindow_Lower(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4208,8 +4204,7 @@ static PyObject *_wrap_wxWindow_SetFont(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetFont. Expected _wxFont_p."); return NULL; } @@ -4754,6 +4749,36 @@ static PyObject *_wrap_wxWindow_GetVirtualSizeTuple(PyObject *self, PyObject *ar return _resultobj; } +#define wxWindow_GetBestVirtualSize(_swigobj) (_swigobj->GetBestVirtualSize()) +static PyObject *_wrap_wxWindow_GetBestVirtualSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSize * _result; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetBestVirtualSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetBestVirtualSize. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxSize (wxWindow_GetBestVirtualSize(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxWindow_SetClientSizeWH(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetClientSize(_swigarg0,_swigarg1)) static PyObject *_wrap_wxWindow_SetClientSizeWH(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4841,8 +4866,7 @@ static PyObject *_wrap_wxWindow_SetCursor(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -5618,8 +5642,7 @@ static PyObject *_wrap_wxWindow_SetValidator(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetValidator. Expected _wxValidator_p."); return NULL; } @@ -5767,6 +5790,36 @@ static PyObject *_wrap_wxWindow_GetMaxSize(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxWindow_GetAdjustedBestSize(_swigobj) (_swigobj->GetAdjustedBestSize()) +static PyObject *_wrap_wxWindow_GetAdjustedBestSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSize * _result; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetAdjustedBestSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetAdjustedBestSize. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxSize (wxWindow_GetAdjustedBestSize(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxWindow_SetCaret(_swigobj,_swigarg0) (_swigobj->SetCaret(_swigarg0)) static PyObject *_wrap_wxWindow_SetCaret(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -5949,7 +6002,7 @@ static PyObject *_wrap_wxWindow_GetHelpText(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6302,8 +6355,7 @@ static PyObject *_wrap_wxWindow_SetAcceleratorTable(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorTable_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorTable_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetAcceleratorTable. Expected _wxAcceleratorTable_p."); return NULL; } @@ -7183,8 +7235,7 @@ static PyObject *_wrap_wxScrolledWindow_PrepareDC(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxScrolledWindow_PrepareDC. Expected _wxDC_p."); return NULL; } @@ -8882,7 +8933,7 @@ static PyObject *_wrap_wxMenu_GetTitle(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8959,7 +9010,7 @@ static PyObject *_wrap_wxMenu_GetLabel(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9037,7 +9088,7 @@ static PyObject *_wrap_wxMenu_GetHelpString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9978,6 +10029,35 @@ static PyObject *_wrap_wxMenuBar_EnableTop(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxMenuBar_IsEnabledTop(_swigobj,_swigarg0) (_swigobj->IsEnabledTop(_swigarg0)) +static PyObject *_wrap_wxMenuBar_IsEnabledTop(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxMenuBar * _arg0; + size_t _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pos", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsEnabledTop",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsEnabledTop. Expected _wxMenuBar_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxMenuBar_IsEnabledTop(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxMenuBar_SetLabelTop(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetLabelTop(_swigarg0,_swigarg1)) static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -10045,7 +10125,7 @@ static PyObject *_wrap_wxMenuBar_GetLabelTop(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10363,7 +10443,7 @@ static PyObject *_wrap_wxMenuBar_GetLabel(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10441,7 +10521,7 @@ static PyObject *_wrap_wxMenuBar_GetHelpString(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10708,7 +10788,7 @@ static PyObject *_wrap_wxMenuItem_GetLabel(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10746,7 +10826,7 @@ static PyObject *_wrap_wxMenuItem_GetText(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11146,7 +11226,7 @@ static PyObject *_wrap_wxMenuItem_GetHelp(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11249,7 +11329,7 @@ static PyObject *_wrap_wxMenuItem_GetLabelFromText(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11284,8 +11364,7 @@ static PyObject *_wrap_wxMenuItem_SetBitmap(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -11377,6 +11456,7 @@ static PyMethodDef windowscMethods[] = { { "wxMenuBar_FindMenu", (PyCFunction) _wrap_wxMenuBar_FindMenu, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_GetLabelTop", (PyCFunction) _wrap_wxMenuBar_GetLabelTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_SetLabelTop", (PyCFunction) _wrap_wxMenuBar_SetLabelTop, METH_VARARGS | METH_KEYWORDS }, + { "wxMenuBar_IsEnabledTop", (PyCFunction) _wrap_wxMenuBar_IsEnabledTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_EnableTop", (PyCFunction) _wrap_wxMenuBar_EnableTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_Remove", (PyCFunction) _wrap_wxMenuBar_Remove, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_Replace", (PyCFunction) _wrap_wxMenuBar_Replace, METH_VARARGS | METH_KEYWORDS }, @@ -11491,6 +11571,7 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_Freeze", (PyCFunction) _wrap_wxWindow_Freeze, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetCaret", (PyCFunction) _wrap_wxWindow_GetCaret, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetCaret", (PyCFunction) _wrap_wxWindow_SetCaret, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_GetAdjustedBestSize", (PyCFunction) _wrap_wxWindow_GetAdjustedBestSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetMaxSize", (PyCFunction) _wrap_wxWindow_GetMaxSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBestSize", (PyCFunction) _wrap_wxWindow_GetBestSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetDropTarget", (PyCFunction) _wrap_wxWindow_GetDropTarget, METH_VARARGS | METH_KEYWORDS }, @@ -11523,6 +11604,7 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_SetCursor", (PyCFunction) _wrap_wxWindow_SetCursor, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetClientSize", (PyCFunction) _wrap_wxWindow_SetClientSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetClientSizeWH", (PyCFunction) _wrap_wxWindow_SetClientSizeWH, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_GetBestVirtualSize", (PyCFunction) _wrap_wxWindow_GetBestVirtualSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetVirtualSizeTuple", (PyCFunction) _wrap_wxWindow_GetVirtualSizeTuple, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetVirtualSize", (PyCFunction) _wrap_wxWindow_GetVirtualSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetVirtualSizeWH", (PyCFunction) _wrap_wxWindow_SetVirtualSizeWH, METH_VARARGS | METH_KEYWORDS }, @@ -11565,7 +11647,6 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_MoveXY", (PyCFunction) _wrap_wxWindow_MoveXY, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_MakeModal", (PyCFunction) _wrap_wxWindow_MakeModal, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Lower", (PyCFunction) _wrap_wxWindow_Lower, METH_VARARGS | METH_KEYWORDS }, - { "wxWindow_LoadFromResource", (PyCFunction) _wrap_wxWindow_LoadFromResource, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Layout", (PyCFunction) _wrap_wxWindow_Layout, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsTopLevel", (PyCFunction) _wrap_wxWindow_IsTopLevel, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsShown", (PyCFunction) _wrap_wxWindow_IsShown, METH_VARARGS | METH_KEYWORDS }, @@ -11613,9 +11694,11 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_GetChildren", (PyCFunction) _wrap_wxWindow_GetChildren, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBorder", (PyCFunction) _wrap_wxWindow_GetBorder, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBackgroundColour", (PyCFunction) _wrap_wxWindow_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_FitInside", (PyCFunction) _wrap_wxWindow_FitInside, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Fit", (PyCFunction) _wrap_wxWindow_Fit, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_FindWindowByName", (PyCFunction) _wrap_wxWindow_FindWindowByName, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_FindWindowById", (PyCFunction) _wrap_wxWindow_FindWindowById, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_Disable", (PyCFunction) _wrap_wxWindow_Disable, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Enable", (PyCFunction) _wrap_wxWindow_Enable, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsBeingDeleted", (PyCFunction) _wrap_wxWindow_IsBeingDeleted, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_DestroyChildren", (PyCFunction) _wrap_wxWindow_DestroyChildren, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/mac/windows.py b/wxPython/src/mac/windows.py index 757dd2a53b..de800237a3 100644 --- a/wxPython/src/mac/windows.py +++ b/wxPython/src/mac/windows.py @@ -162,6 +162,9 @@ class wxWindowPtr(wxEvtHandlerPtr): def Enable(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Enable,(self,) + _args, _kwargs) return val + def Disable(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_Disable,(self,) + _args, _kwargs) + return val def FindWindowById(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_FindWindowById,(self,) + _args, _kwargs) return val @@ -171,6 +174,9 @@ class wxWindowPtr(wxEvtHandlerPtr): def Fit(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Fit,(self,) + _args, _kwargs) return val + def FitInside(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_FitInside,(self,) + _args, _kwargs) + return val def GetBackgroundColour(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_GetBackgroundColour,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -323,9 +329,6 @@ class wxWindowPtr(wxEvtHandlerPtr): def Layout(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Layout,(self,) + _args, _kwargs) return val - def LoadFromResource(self, *_args, **_kwargs): - val = apply(windowsc.wxWindow_LoadFromResource,(self,) + _args, _kwargs) - return val def Lower(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Lower,(self,) + _args, _kwargs) return val @@ -454,6 +457,10 @@ class wxWindowPtr(wxEvtHandlerPtr): def GetVirtualSizeTuple(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_GetVirtualSizeTuple,(self,) + _args, _kwargs) return val + def GetBestVirtualSize(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_GetBestVirtualSize,(self,) + _args, _kwargs) + if val: val = wxSizePtr(val) ; val.thisown = 1 + return val def SetClientSizeWH(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_SetClientSizeWH,(self,) + _args, _kwargs) return val @@ -561,6 +568,10 @@ class wxWindowPtr(wxEvtHandlerPtr): val = apply(windowsc.wxWindow_GetMaxSize,(self,) + _args, _kwargs) if val: val = wxSizePtr(val) ; val.thisown = 1 return val + def GetAdjustedBestSize(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_GetAdjustedBestSize,(self,) + _args, _kwargs) + if val: val = wxSizePtr(val) ; val.thisown = 1 + return val def SetCaret(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_SetCaret,(self,) + _args, _kwargs) return val @@ -977,6 +988,9 @@ class wxMenuBarPtr(wxWindowPtr): def EnableTop(self, *_args, **_kwargs): val = apply(windowsc.wxMenuBar_EnableTop,(self,) + _args, _kwargs) return val + def IsEnabledTop(self, *_args, **_kwargs): + val = apply(windowsc.wxMenuBar_IsEnabledTop,(self,) + _args, _kwargs) + return val def SetLabelTop(self, *_args, **_kwargs): val = apply(windowsc.wxMenuBar_SetLabelTop,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/windows2.cpp b/wxPython/src/mac/windows2.cpp index c6eeb3584a..0e97d3909c 100644 --- a/wxPython/src/mac/windows2.cpp +++ b/wxPython/src/mac/windows2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -346,7 +345,7 @@ static PyObject *_wrap_new_wxNotebookEvent(PyObject *self, PyObject *args, PyObj int _arg1 = (int ) 0; int _arg2 = (int ) -1; int _arg3 = (int ) -1; - char *_kwnames[] = { "commandType","id","nSel","nOldSel", NULL }; + char *_kwnames[] = { "commandType","id","sel","oldSel", NULL }; char _ptemp[128]; self = self; @@ -711,7 +710,7 @@ static PyObject *_wrap_wxNotebook_SetSelection(PyObject *self, PyObject *args, P wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_SetSelection",_kwnames,&_argo0,&_arg1)) @@ -740,7 +739,7 @@ static PyObject *_wrap_wxNotebook_AdvanceSelection(PyObject *self, PyObject *arg bool _arg1 = (bool ) TRUE; PyObject * _argo0 = 0; int tempbool1 = (int) TRUE; - char *_kwnames[] = { "self","bForward", NULL }; + char *_kwnames[] = { "self","forward", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxNotebook_AdvanceSelection",_kwnames,&_argo0,&tempbool1)) @@ -801,7 +800,7 @@ static PyObject *_wrap_wxNotebook_SetPageText(PyObject *self, PyObject *args, Py wxString * _arg2; PyObject * _argo0 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","nPage","strText", NULL }; + char *_kwnames[] = { "self","page","text", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxNotebook_SetPageText",_kwnames,&_argo0,&_arg1,&_obj2)) @@ -839,7 +838,7 @@ static PyObject *_wrap_wxNotebook_GetPageText(PyObject *self, PyObject *args, Py wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPageText",_kwnames,&_argo0,&_arg1)) @@ -859,7 +858,7 @@ static PyObject *_wrap_wxNotebook_GetPageText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -979,7 +978,7 @@ static PyObject *_wrap_wxNotebook_GetPageImage(PyObject *self, PyObject *args, P wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPageImage",_kwnames,&_argo0,&_arg1)) @@ -1009,7 +1008,7 @@ static PyObject *_wrap_wxNotebook_SetPageImage(PyObject *self, PyObject *args, P int _arg1; int _arg2; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage","nImage", NULL }; + char *_kwnames[] = { "self","page","image", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxNotebook_SetPageImage",_kwnames,&_argo0,&_arg1,&_arg2)) @@ -1138,7 +1137,7 @@ static PyObject *_wrap_wxNotebook_DeletePage(PyObject *self, PyObject *args, PyO wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_DeletePage",_kwnames,&_argo0,&_arg1)) @@ -1167,7 +1166,7 @@ static PyObject *_wrap_wxNotebook_RemovePage(PyObject *self, PyObject *args, PyO wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_RemovePage",_kwnames,&_argo0,&_arg1)) @@ -1229,7 +1228,7 @@ static PyObject *_wrap_wxNotebook_AddPage(PyObject *self, PyObject *args, PyObje PyObject * _argo0 = 0; PyObject * _argo1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pPage","strText","bSelect","imageId", NULL }; + char *_kwnames[] = { "self","page","text","select","imageId", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO|ii:wxNotebook_AddPage",_kwnames,&_argo0,&_argo1,&_obj2,&_arg3,&_arg4)) @@ -1281,7 +1280,7 @@ static PyObject *_wrap_wxNotebook_InsertPage(PyObject *self, PyObject *args, PyO PyObject * _argo2 = 0; PyObject * _obj3 = 0; int tempbool4 = (int) FALSE; - char *_kwnames[] = { "self","nPage","pPage","strText","bSelect","imageId", NULL }; + char *_kwnames[] = { "self","page","page","text","select","imageId", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO|ii:wxNotebook_InsertPage",_kwnames,&_argo0,&_arg1,&_argo2,&_obj3,&tempbool4,&_arg5)) @@ -1327,7 +1326,7 @@ static PyObject *_wrap_wxNotebook_GetPage(PyObject *self, PyObject *args, PyObje wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPage",_kwnames,&_argo0,&_arg1)) @@ -3254,8 +3253,7 @@ static PyObject *_wrap_new_wxPyControl(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxPyControl. Expected _wxValidator_p."); return NULL; } diff --git a/wxPython/src/mac/windows3.cpp b/wxPython/src/mac/windows3.cpp index 57b3492278..30b87f625a 100644 --- a/wxPython/src/mac/windows3.cpp +++ b/wxPython/src/mac/windows3.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/src/mac/windows3.py b/wxPython/src/mac/windows3.py index e18a7ac36c..838e90b6da 100644 --- a/wxPython/src/mac/windows3.py +++ b/wxPython/src/mac/windows3.py @@ -246,9 +246,12 @@ class wxLayoutAlgorithmPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,windows3c=windows3c): - if self.thisown == 1 : - windows3c.delete_wxLayoutAlgorithm(self) + def __del__(self, delfunc=windows3c.delete_wxLayoutAlgorithm): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def LayoutMDIFrame(self, *_args, **_kwargs): val = apply(windows3c.wxLayoutAlgorithm_LayoutMDIFrame,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/mac/wizard.cpp b/wxPython/src/mac/wizard.cpp index df8486804f..8e5d753de1 100644 --- a/wxPython/src/mac/wizard.cpp +++ b/wxPython/src/mac/wizard.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -359,8 +358,7 @@ static PyObject *_wrap_wxWizardPage_Create(PyObject *self, PyObject *args, PyObj } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxWizardPage_Create. Expected _wxBitmap_p."); return NULL; } @@ -636,8 +634,7 @@ static PyObject *_wrap_wxPyWizardPage_Create(PyObject *self, PyObject *args, PyO } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxPyWizardPage_Create. Expected _wxBitmap_p."); return NULL; } @@ -1382,8 +1379,7 @@ static PyObject *_wrap_new_wxWizardPageSimple(PyObject *self, PyObject *args, Py } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxWizardPageSimple. Expected _wxBitmap_p."); return NULL; } @@ -1479,8 +1475,7 @@ static PyObject *_wrap_wxWizardPageSimple_Create(PyObject *self, PyObject *args, } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxWizardPageSimple_Create. Expected _wxBitmap_p."); return NULL; } @@ -1679,8 +1674,7 @@ static PyObject *_wrap_new_wxWizard(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxWizard. Expected _wxBitmap_p."); return NULL; } @@ -1779,8 +1773,7 @@ static PyObject *_wrap_wxWizard_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxWizard_Create. Expected _wxBitmap_p."); return NULL; } @@ -2069,7 +2062,83 @@ static PyObject *_wrap_wxWizard_ShowPage(PyObject *self, PyObject *args, PyObjec return _resultobj; } +#define wxWizard_HasNextPage(_swigobj,_swigarg0) (_swigobj->HasNextPage(_swigarg0)) +static PyObject *_wrap_wxWizard_HasNextPage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxWizard * _arg0; + wxWizardPage * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","page", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWizard_HasNextPage",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWizard_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWizard_HasNextPage. Expected _wxWizard_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWizardPage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWizard_HasNextPage. Expected _wxWizardPage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxWizard_HasNextPage(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxWizard_HasPrevPage(_swigobj,_swigarg0) (_swigobj->HasPrevPage(_swigarg0)) +static PyObject *_wrap_wxWizard_HasPrevPage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxWizard * _arg0; + wxWizardPage * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","page", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWizard_HasPrevPage",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWizard_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWizard_HasPrevPage. Expected _wxWizard_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWizardPage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWizard_HasPrevPage. Expected _wxWizardPage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxWizard_HasPrevPage(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyMethodDef wizardcMethods[] = { + { "wxWizard_HasPrevPage", (PyCFunction) _wrap_wxWizard_HasPrevPage, METH_VARARGS | METH_KEYWORDS }, + { "wxWizard_HasNextPage", (PyCFunction) _wrap_wxWizard_HasNextPage, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_ShowPage", (PyCFunction) _wrap_wxWizard_ShowPage, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_IsRunning", (PyCFunction) _wrap_wxWizard_IsRunning, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_FitToPage", (PyCFunction) _wrap_wxWizard_FitToPage, METH_VARARGS | METH_KEYWORDS }, @@ -2258,6 +2327,7 @@ SWIGEXPORT(void) initwizardc() { PyDict_SetItemString(d,"wxEVT_WIZARD_PAGE_CHANGING", PyInt_FromLong((long) wxEVT_WIZARD_PAGE_CHANGING)); PyDict_SetItemString(d,"wxEVT_WIZARD_CANCEL", PyInt_FromLong((long) wxEVT_WIZARD_CANCEL)); PyDict_SetItemString(d,"wxEVT_WIZARD_HELP", PyInt_FromLong((long) wxEVT_WIZARD_HELP)); + PyDict_SetItemString(d,"wxEVT_WIZARD_FINISHED", PyInt_FromLong((long) wxEVT_WIZARD_FINISHED)); wxClassInfo::CleanUpClasses(); wxClassInfo::InitializeClasses(); diff --git a/wxPython/src/mac/wizard.py b/wxPython/src/mac/wizard.py index 391048f193..845cdb939f 100644 --- a/wxPython/src/mac/wizard.py +++ b/wxPython/src/mac/wizard.py @@ -32,6 +32,9 @@ def EVT_WIZARD_CANCEL(win, id, func): def EVT_WIZARD_HELP(win, id, func): win.Connect(id, -1, wxEVT_WIZARD_HELP, func) +def EVT_WIZARD_FINISHED(win, id, func): + win.Connect(id, -1, wxEVT_WIZARD_FINISHED, func) + class wxWizardEventPtr(wxNotifyEventPtr): def __init__(self,this): @@ -226,6 +229,12 @@ class wxWizardPtr(wxDialogPtr): def ShowPage(self, *_args, **_kwargs): val = apply(wizardc.wxWizard_ShowPage,(self,) + _args, _kwargs) return val + def HasNextPage(self, *_args, **_kwargs): + val = apply(wizardc.wxWizard_HasNextPage,(self,) + _args, _kwargs) + return val + def HasPrevPage(self, *_args, **_kwargs): + val = apply(wizardc.wxWizard_HasPrevPage,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxWizard instance at %s>" % (self.this,) class wxWizard(wxWizardPtr): @@ -258,6 +267,7 @@ wxEVT_WIZARD_PAGE_CHANGED = wizardc.wxEVT_WIZARD_PAGE_CHANGED wxEVT_WIZARD_PAGE_CHANGING = wizardc.wxEVT_WIZARD_PAGE_CHANGING wxEVT_WIZARD_CANCEL = wizardc.wxEVT_WIZARD_CANCEL wxEVT_WIZARD_HELP = wizardc.wxEVT_WIZARD_HELP +wxEVT_WIZARD_FINISHED = wizardc.wxEVT_WIZARD_FINISHED #-------------- USER INCLUDE ----------------------- @@ -265,3 +275,7 @@ wxEVT_WIZARD_HELP = wizardc.wxEVT_WIZARD_HELP # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxWizardEventPtr = wxWizardEventPtr +wx.wxWizardPagePtr = wxWizardPagePtr +wx.wxPyWizardPagePtr = wxPyWizardPagePtr +wx.wxWizardPageSimplePtr = wxWizardPageSimplePtr +wx.wxWizardPtr = wxWizardPtr diff --git a/wxPython/src/mac/wx.cpp b/wxPython/src/mac/wx.cpp index 11dc7b0d39..ec4e194b8a 100644 --- a/wxPython/src/mac/wx.cpp +++ b/wxPython/src/mac/wx.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -666,6 +665,7 @@ static wxPyCoreAPI API = { wxRealPoint_helper, wxRect_helper, wxColour_helper, + wxPoint2DDouble_helper, wxPyCBH_setCallbackInfo, wxPyCBH_findCallback, @@ -909,7 +909,6 @@ static PyObject *_wrap_wxGetApp(PyObject *self, PyObject *args, PyObject *kwargs PyObject * _resultobj; wxPyApp * _result; char *_kwnames[] = { NULL }; - char _ptemp[128]; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxGetApp",_kwnames)) @@ -920,13 +919,7 @@ static PyObject *_wrap_wxGetApp(PyObject *self, PyObject *args, PyObject *kwargs wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} if (_result) { - SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyApp_p"); - _resultobj = Py_BuildValue("s",_ptemp); - } else { - Py_INCREF(Py_None); - _resultobj = Py_None; - } +}{ _resultobj = wxPyMake_wxObject(_result); } return _resultobj; } @@ -1022,6 +1015,44 @@ static PyObject *_wrap_delete_wxPyApp(PyObject *self, PyObject *args, PyObject * return _resultobj; } +#define wxPyApp__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPyApp__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyApp * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxPyApp__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp__setCallbackInfo. Expected _wxPyApp_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxPyApp_GetAppName(_swigobj) (_swigobj->GetAppName()) static PyObject *_wrap_wxPyApp_GetAppName(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1048,7 +1079,7 @@ static PyObject *_wrap_wxPyApp_GetAppName(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1085,7 +1116,7 @@ static PyObject *_wrap_wxPyApp_GetClassName(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1206,7 +1237,7 @@ static PyObject *_wrap_wxPyApp_GetVendorName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1418,9 +1449,9 @@ static PyObject *_wrap_wxPyApp_Yield(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; bool _result; wxPyApp * _arg0; - bool _arg1 = (bool ) (0); + bool _arg1 = (bool ) FALSE; PyObject * _argo0 = 0; - int tempbool1 = (int) (0); + int tempbool1 = (int) FALSE; char *_kwnames[] = { "self","onlyIfNeeded", NULL }; self = self; @@ -1689,7 +1720,323 @@ static PyObject *_wrap_wxPyApp_SetUseBestVisual(PyObject *self, PyObject *args, return _resultobj; } +#define wxPyApp_GetAssertMode(_swigobj) (_swigobj->GetAssertMode()) +static PyObject *_wrap_wxPyApp_GetAssertMode(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + int _result; + wxPyApp * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyApp_GetAssertMode",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_GetAssertMode. Expected _wxPyApp_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (int )wxPyApp_GetAssertMode(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxPyApp_SetAssertMode(_swigobj,_swigarg0) (_swigobj->SetAssertMode(_swigarg0)) +static PyObject *_wrap_wxPyApp_SetAssertMode(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyApp * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","mode", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxPyApp_SetAssertMode",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_SetAssertMode. Expected _wxPyApp_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp_SetAssertMode(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacDefaultEncodingIsPC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacDefaultEncodingIsPC",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPyApp::GetMacDefaultEncodingIsPC(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacSupportPCMenuShortcuts(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacSupportPCMenuShortcuts",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPyApp::GetMacSupportPCMenuShortcuts(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacAboutMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacAboutMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacAboutMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacPreferencesMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacPreferencesMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacPreferencesMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacExitMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacExitMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacExitMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacHelpMenuTitleName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacHelpMenuTitleName",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxString (wxPyApp::GetMacHelpMenuTitleName()); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ +#if wxUSE_UNICODE + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); +#else + _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); +#endif +} +{ + delete _result; +} + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacDefaultEncodingIsPC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _arg0; + int tempbool0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxPyApp_SetMacDefaultEncodingIsPC",_kwnames,&tempbool0)) + return NULL; + _arg0 = (bool ) tempbool0; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacDefaultEncodingIsPC(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacSupportPCMenuShortcuts(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _arg0; + int tempbool0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxPyApp_SetMacSupportPCMenuShortcuts",_kwnames,&tempbool0)) + return NULL; + _arg0 = (bool ) tempbool0; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacSupportPCMenuShortcuts(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacAboutMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacAboutMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacAboutMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacPreferencesMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacPreferencesMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacPreferencesMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacExitMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacExitMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacExitMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacHelpMenuTitleName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _arg0; + PyObject * _obj0 = 0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyApp_SetMacHelpMenuTitleName",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacHelpMenuTitleName(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj0) + delete _arg0; +} + return _resultobj; +} + static PyMethodDef wxcMethods[] = { + { "wxPyApp_SetMacHelpMenuTitleName", (PyCFunction) _wrap_wxPyApp_SetMacHelpMenuTitleName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacExitMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacExitMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacPreferencesMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacPreferencesMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacAboutMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacAboutMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacSupportPCMenuShortcuts", (PyCFunction) _wrap_wxPyApp_SetMacSupportPCMenuShortcuts, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacDefaultEncodingIsPC", (PyCFunction) _wrap_wxPyApp_SetMacDefaultEncodingIsPC, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacHelpMenuTitleName", (PyCFunction) _wrap_wxPyApp_GetMacHelpMenuTitleName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacExitMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacExitMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacPreferencesMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacPreferencesMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacAboutMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacAboutMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacSupportPCMenuShortcuts", (PyCFunction) _wrap_wxPyApp_GetMacSupportPCMenuShortcuts, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacDefaultEncodingIsPC", (PyCFunction) _wrap_wxPyApp_GetMacDefaultEncodingIsPC, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetAssertMode", (PyCFunction) _wrap_wxPyApp_SetAssertMode, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetAssertMode", (PyCFunction) _wrap_wxPyApp_GetAssertMode, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetUseBestVisual", (PyCFunction) _wrap_wxPyApp_SetUseBestVisual, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetVendorName", (PyCFunction) _wrap_wxPyApp_SetVendorName, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetTopWindow", (PyCFunction) _wrap_wxPyApp_SetTopWindow, METH_VARARGS | METH_KEYWORDS }, @@ -1711,6 +2058,7 @@ static PyMethodDef wxcMethods[] = { { "wxPyApp_GetExitOnFrameDelete", (PyCFunction) _wrap_wxPyApp_GetExitOnFrameDelete, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_GetClassName", (PyCFunction) _wrap_wxPyApp_GetClassName, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_GetAppName", (PyCFunction) _wrap_wxPyApp_GetAppName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp__setCallbackInfo", (PyCFunction) _wrap_wxPyApp__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "delete_wxPyApp", (PyCFunction) _wrap_delete_wxPyApp, METH_VARARGS | METH_KEYWORDS }, { "new_wxPyApp", (PyCFunction) _wrap_new_wxPyApp, METH_VARARGS | METH_KEYWORDS }, { "wxApp_CleanUp", (PyCFunction) _wrap_wxApp_CleanUp, METH_VARARGS | METH_KEYWORDS }, @@ -1962,6 +2310,7 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxRA_SPECIFY_ROWS", PyInt_FromLong((long) wxRA_SPECIFY_ROWS)); PyDict_SetItemString(d,"wxRA_SPECIFY_COLS", PyInt_FromLong((long) wxRA_SPECIFY_COLS)); PyDict_SetItemString(d,"wxRB_GROUP", PyInt_FromLong((long) wxRB_GROUP)); + PyDict_SetItemString(d,"wxRB_SINGLE", PyInt_FromLong((long) wxRB_SINGLE)); PyDict_SetItemString(d,"wxGA_PROGRESSBAR", PyInt_FromLong((long) wxGA_PROGRESSBAR)); PyDict_SetItemString(d,"wxGA_HORIZONTAL", PyInt_FromLong((long) wxGA_HORIZONTAL)); PyDict_SetItemString(d,"wxGA_VERTICAL", PyInt_FromLong((long) wxGA_VERTICAL)); @@ -2483,10 +2832,6 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxHT_WINDOW_HORZ_SCROLLBAR", PyInt_FromLong((long) wxHT_WINDOW_HORZ_SCROLLBAR)); PyDict_SetItemString(d,"wxHT_WINDOW_CORNER", PyInt_FromLong((long) wxHT_WINDOW_CORNER)); PyDict_SetItemString(d,"wxHT_MAX", PyInt_FromLong((long) wxHT_MAX)); - PyDict_SetItemString(d,"FALSE", PyInt_FromLong((long) 0)); - PyDict_SetItemString(d,"false", PyInt_FromLong((long) 0)); - PyDict_SetItemString(d,"TRUE", PyInt_FromLong((long) 1)); - PyDict_SetItemString(d,"true", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxEVT_NULL", PyInt_FromLong((long) wxEVT_NULL)); PyDict_SetItemString(d,"wxEVT_FIRST", PyInt_FromLong((long) wxEVT_FIRST)); PyDict_SetItemString(d,"wxEVT_COMMAND_BUTTON_CLICKED", PyInt_FromLong((long) wxEVT_COMMAND_BUTTON_CLICKED)); @@ -2611,6 +2956,10 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"cvar", SWIG_globals); SWIG_addvarlink(SWIG_globals,"wxDefaultPosition",_wrap_wxDefaultPosition_get, _wrap_wxDefaultPosition_set); SWIG_addvarlink(SWIG_globals,"wxDefaultSize",_wrap_wxDefaultSize_get, _wrap_wxDefaultSize_set); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_SUPPRESS", PyInt_FromLong((long) wxPYAPP_ASSERT_SUPPRESS)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_EXCEPTION", PyInt_FromLong((long) wxPYAPP_ASSERT_EXCEPTION)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_DIALOG", PyInt_FromLong((long) wxPYAPP_ASSERT_DIALOG)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_LOG", PyInt_FromLong((long) wxPYAPP_ASSERT_LOG)); // Make our API structure a CObject so other modules can import it // from this module. @@ -2619,7 +2968,7 @@ SWIGEXPORT(void) initwxc() { Py_XDECREF(v); - __wxPreStart(); // initialize the GUI toolkit, if needed. + __wxPreStart(d); // initialize the GUI toolkit, if needed. // Since these modules are all linked together, initialize them now @@ -2654,7 +3003,7 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxVERSION_NUMBER", PyInt_FromLong((long)wxVERSION_NUMBER )); #if wxUSE_UNICODE wxString tempStr(wxVERSION_STRING); - PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromUnicode(tempStr.c_str(), tempStr.Len())); + PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromWideChar(tempStr.c_str(), tempStr.Len())); #else PyDict_SetItemString(d,"wxVERSION_STRING", PyString_FromString(wxVERSION_STRING)); #endif diff --git a/wxPython/src/mac/wx.py b/wxPython/src/mac/wx.py index 627080b5ae..76811ff9d7 100644 --- a/wxPython/src/mac/wx.py +++ b/wxPython/src/mac/wx.py @@ -46,9 +46,15 @@ class wxPyAppPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,wxc=wxc): - if self.thisown == 1 : - wxc.delete_wxPyApp(self) + def __del__(self, delfunc=wxc.delete_wxPyApp): + if self.thisown == 1: + try: + delfunc(self) + except: + pass + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp__setCallbackInfo,(self,) + _args, _kwargs) + return val def GetAppName(self, *_args, **_kwargs): val = apply(wxc.wxPyApp_GetAppName,(self,) + _args, _kwargs) return val @@ -112,12 +118,20 @@ class wxPyAppPtr(wxEvtHandlerPtr): def SetUseBestVisual(self, *_args, **_kwargs): val = apply(wxc.wxPyApp_SetUseBestVisual,(self,) + _args, _kwargs) return val + def GetAssertMode(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp_GetAssertMode,(self,) + _args, _kwargs) + return val + def SetAssertMode(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp_SetAssertMode,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxPyApp instance at %s>" % (self.this,) class wxPyApp(wxPyAppPtr): def __init__(self,*_args,**_kwargs): self.this = apply(wxc.new_wxPyApp,_args,_kwargs) self.thisown = 1 + self._setCallbackInfo(self, wxPyApp) + self._setOORInfo(self) @@ -146,11 +160,34 @@ _wxSetDictionary = wxc._wxSetDictionary def wxGetApp(*_args, **_kwargs): val = apply(wxc.wxGetApp,_args,_kwargs) - if val: val = wxPyAppPtr(val) return val wxApp_CleanUp = wxc.wxApp_CleanUp +wxPyApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC + +wxPyApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts + +wxPyApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId + +wxPyApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId + +wxPyApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId + +wxPyApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName + +wxPyApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC + +wxPyApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts + +wxPyApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId + +wxPyApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId + +wxPyApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId + +wxPyApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + #-------------- VARIABLE WRAPPERS ------------------ @@ -271,6 +308,7 @@ wxRA_VERTICAL = wxc.wxRA_VERTICAL wxRA_SPECIFY_ROWS = wxc.wxRA_SPECIFY_ROWS wxRA_SPECIFY_COLS = wxc.wxRA_SPECIFY_COLS wxRB_GROUP = wxc.wxRB_GROUP +wxRB_SINGLE = wxc.wxRB_SINGLE wxGA_PROGRESSBAR = wxc.wxGA_PROGRESSBAR wxGA_HORIZONTAL = wxc.wxGA_HORIZONTAL wxGA_VERTICAL = wxc.wxGA_VERTICAL @@ -792,10 +830,6 @@ wxHT_WINDOW_VERT_SCROLLBAR = wxc.wxHT_WINDOW_VERT_SCROLLBAR wxHT_WINDOW_HORZ_SCROLLBAR = wxc.wxHT_WINDOW_HORZ_SCROLLBAR wxHT_WINDOW_CORNER = wxc.wxHT_WINDOW_CORNER wxHT_MAX = wxc.wxHT_MAX -FALSE = wxc.FALSE -false = wxc.false -TRUE = wxc.TRUE -true = wxc.true wxEVT_NULL = wxc.wxEVT_NULL wxEVT_FIRST = wxc.wxEVT_FIRST wxEVT_COMMAND_BUTTON_CLICKED = wxc.wxEVT_COMMAND_BUTTON_CLICKED @@ -920,13 +954,17 @@ __version__ = wxc.__version__ cvar = wxc.cvar wxDefaultPosition = wxPointPtr(wxc.cvar.wxDefaultPosition) wxDefaultSize = wxSizePtr(wxc.cvar.wxDefaultSize) +wxPYAPP_ASSERT_SUPPRESS = wxc.wxPYAPP_ASSERT_SUPPRESS +wxPYAPP_ASSERT_EXCEPTION = wxc.wxPYAPP_ASSERT_EXCEPTION +wxPYAPP_ASSERT_DIALOG = wxc.wxPYAPP_ASSERT_DIALOG +wxPYAPP_ASSERT_LOG = wxc.wxPYAPP_ASSERT_LOG #-------------- USER INCLUDE ----------------------- #---------------------------------------------------------------------------- # Name: _extra.py -# Purpose: This file is appended to the shadow class file generated +# Purpose: This file is appended to the shadow class file generated # by SWIG. We add some unSWIGable things here. # # Author: Robin Dunn @@ -1057,6 +1095,12 @@ def EVT_WINDOW_CREATE(win, func): def EVT_WINDOW_DESTROY(win, func): win.Connect(-1, -1, wxEVT_DESTROY, func) +def EVT_WINDOW_CREATE_ID(win, id, func): + win.Connect(id, -1, wxEVT_CREATE, func) + +def EVT_WINDOW_DESTROY_ID(win, id, func): + win.Connect(id, -1, wxEVT_DESTROY, func) + def EVT_SET_CURSOR(win, func): win.Connect(-1, -1, wxEVT_SET_CURSOR, func) @@ -1189,7 +1233,7 @@ def EVT_COMMAND_SCROLL(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN, func) win.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK,func) win.Connect(id, -1, wxEVT_SCROLL_THUMBRELEASE,func) - win.Connect(-1, -1, wxEVT_SCROLL_ENDSCROLL, func) + win.Connect(id, -1, wxEVT_SCROLL_ENDSCROLL, func) def EVT_COMMAND_SCROLL_TOP(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_TOP, func) @@ -1513,17 +1557,50 @@ wxColor = wxColour wxNamedColor = wxNamedColour wxPen = wxPyPen wxScrollbar = wxScrollBar +wxPoint2D = wxPoint2DDouble + +wxPyAssertionError = wxc.wxPyAssertionError # backwards compatibility -wxNoRefBitmap = wxBitmap -wxPyDefaultPosition = wxDefaultPosition -wxPyDefaultSize = wxDefaultSize -NULL = None +wxNoRefBitmap = wxBitmap +wxPyDefaultPosition = wxDefaultPosition +wxPyDefaultSize = wxDefaultSize +NULL = None wxSystemSettings_GetSystemColour = wxSystemSettings_GetColour wxSystemSettings_GetSystemFont = wxSystemSettings_GetFont wxSystemSettings_GetSystemMetric = wxSystemSettings_GetMetric + +# workarounds for bad wxRTTI names +__wxPyPtrTypeMap['wxGauge95'] = 'wxGauge' + + + +def NewId(): + import warnings + warnings.warn("Use wxNewId instead", DeprecationWarning, 2) + return wxNewId() + +def RegisterId(ID): + import warnings + warnings.warn("Use wxRegisterId instead", DeprecationWarning, 2) + return wxRegisterId(ID) + + + +# Use Python's bool constants if available, make aliases if not +try: + True +except NameError: + True = 1==1 + False = 1==0 + +# Backwards compaatible +TRUE = true = True +FALSE = false = False + + #---------------------------------------------------------------------- # wxGTK sets the locale when initialized. Doing this at the Python # level should set it up to match what GTK is doing at the C level. @@ -1534,7 +1611,11 @@ if wxPlatform == "__WXGTK__": except: pass - +if wxPlatform == "__WXMSW__": + import os + localedir = os.path.join(os.path.split(__file__)[0], "locale") + wxLocale_AddCatalogLookupPathPrefix(localedir) + del os #---------------------------------------------------------------------- # wxWindows version numbers. wxPython version is in __version__. @@ -1586,6 +1667,18 @@ def wxPyTypeCast(obj, typeStr): theObj.thisown = obj.thisown return theObj +#---------------------------------------------------------------------------- +# An isinstance for Pythons < 2.2 that can check a sequence of class objects +# like the one in 2.2 can. + +def wxPy_isinstance(obj, klasses): + import types + if sys.version[:3] < "2.2" and type(klasses) in [types.TupleType, types.ListType]: + for klass in klasses: + if isinstance(obj, klass): return True + return False + else: + return isinstance(obj, klasses) #---------------------------------------------------------------------------- _wxCallAfterId = None @@ -1611,6 +1704,9 @@ def wxCallAfter(callable, *args, **kw): evt.kw = kw wxPostEvent(app, evt) +# an alias +wxRunLater = wxCallAfter + #---------------------------------------------------------------------- class wxPyDeadObjectError(AttributeError): @@ -1670,7 +1766,7 @@ class wxPyOnDemandOutputWindow: self.text = wxTextCtrl(self.frame, -1, "", style = wxTE_MULTILINE|wxTE_READONLY) self.frame.SetSize(wxSize(450, 300)) - self.frame.Show(true) + self.frame.Show(True) EVT_CLOSE(self.frame, self.OnCloseWindow) self.text.AppendText(str) @@ -1691,12 +1787,17 @@ class wxApp(wxPyApp): error = 'wxApp.error' outputWindowClass = wxPyOnDemandOutputWindow - def __init__(self, redirect=_defRedirect, filename=None): + def __init__(self, redirect=_defRedirect, filename=None, useBestVisual=False): wxPyApp.__init__(self) self.stdioWin = None self.saveStdio = (sys.stdout, sys.stderr) + + # This has to be done before OnInit + self.SetUseBestVisual(useBestVisual) + if redirect: self.RedirectStdio(filename) + # this initializes wxWindows and then calls our OnInit _wxStart(self.OnInit) @@ -1723,7 +1824,7 @@ class wxApp(wxPyApp): if filename: sys.stdout = sys.stderr = open(filename, 'a') else: - self.stdioWin = self.outputWindowClass() # wxPyOnDemandOutputWindow + self.stdioWin = self.outputWindowClass() sys.stdout = sys.stderr = self.stdioWin @@ -1731,6 +1832,21 @@ class wxApp(wxPyApp): sys.stdout, sys.stderr = self.saveStdio +# change from wxPyApp_ to wxApp_ +wxApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC +wxApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts +wxApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId +wxApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId +wxApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId +wxApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName +wxApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC +wxApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts +wxApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId +wxApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId +wxApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId +wxApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + + #---------------------------------------------------------------------------- class wxPySimpleApp(wxApp): @@ -1738,7 +1854,7 @@ class wxPySimpleApp(wxApp): wxApp.__init__(self, flag) def OnInit(self): wxInitAllImageHandlers() - return true + return True class wxPyWidgetTester(wxApp): @@ -1749,11 +1865,11 @@ class wxPyWidgetTester(wxApp): def OnInit(self): self.frame = wxFrame(None, -1, "Widget Tester", pos=(0,0), size=self.size) self.SetTopWindow(self.frame) - return true + return True def SetWidget(self, widgetClass, *args): w = apply(widgetClass, (self.frame,) + args) - self.frame.Show(true) + self.frame.Show(True) #---------------------------------------------------------------------------- # DO NOT hold any other references to this object. This is how we diff --git a/wxPython/src/misc.i b/wxPython/src/misc.i index 482f489f3b..1719b55c64 100644 --- a/wxPython/src/misc.i +++ b/wxPython/src/misc.i @@ -17,6 +17,7 @@ #include <wx/resource.h> #include <wx/tooltip.h> #include <wx/busyinfo.h> +#include <wx/geometry.h> %} //---------------------------------------------------------------------- @@ -79,22 +80,38 @@ public: return tup; } - int __cmp__(const wxSize* sz) { - if (! sz) return 1; - if (*self == *sz) return 0; - return -1; + bool __eq__(PyObject* obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } + bool __ne__(PyObject* obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } + } %pragma(python) addtoclass = " def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxSize'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) " }; @@ -122,31 +139,46 @@ public: return tup; } - wxRealPoint __add__(const wxRealPoint* p) { - if (! p) return *self; - return *self + *p; + wxRealPoint __add__(const wxRealPoint& p) { + return *self + p; } - wxRealPoint __sub__(const wxRealPoint* p) { - if (! p) return *self; - return *self - *p; + wxRealPoint __sub__(const wxRealPoint& p) { + return *self - p; } - int __cmp__(const wxRealPoint* p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; + bool __eq__(PyObject* obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } + bool __ne__(PyObject* obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } + } + %pragma(python) addtoclass = " def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRealPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) " }; @@ -172,31 +204,46 @@ public: return tup; } - wxPoint __add__(const wxPoint* p) { - if (! p) return *self; - return *self + *p; + wxPoint __add__(const wxPoint& p) { + return *self + p; } - wxPoint __sub__(const wxPoint* p) { - if (! p) return *self; - return *self - *p; + wxPoint __sub__(const wxPoint& p) { + return *self - p; } - int __cmp__(const wxPoint* p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; + bool __eq__(PyObject* obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } + bool __ne__(PyObject* obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } + } + %pragma(python) addtoclass = " def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.x = val elif index == 1: self.y = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) " }; @@ -204,7 +251,7 @@ public: class wxRect { public: - wxRect(int x=0, int y=0, int w=0, int h=0); + wxRect(int x=0, int y=0, int width=0, int height=0); // TODO: do this one too... wxRect(const wxPoint& pos, const wxSize& size); ~wxRect(); @@ -233,12 +280,24 @@ public: void SetTop(int top); void SetBottom(int bottom); + void Deflate(int dx, int dy); void Inflate(int dx, int dy); - bool Inside(int cx, int cy); + %name(InsideXY)bool Inside(int cx, int cy); + bool Inside(const wxPoint& pt); + bool Intersects(const wxRect& rect); + %name(OffsetXY) void Offset(int dx, int dy); + void Offset(const wxPoint& pt); int x, y, width, height; %addmethods { + void Set(int x=0, int y=0, int width=0, int height=0) { + self->x = x; + self->y = y; + self->width = width; + self->height = height; + } + PyObject* asTuple() { wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(4); @@ -250,21 +309,32 @@ public: return tup; } - wxRect __add__(const wxRect* rect) { - if (! rect) return *self; - return *self + *rect; + wxRect __add__(const wxRect& rect) { + return *self + rect; } - int __cmp__(const wxRect* rect) { - if (! rect) return 1; - if (*self == *rect) return 0; - return -1; + bool __eq__(PyObject* obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } + bool __ne__(PyObject* obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } + } %pragma(python) addtoclass = " def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRect'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): @@ -273,6 +343,10 @@ public: elif index == 2: self.width = val elif index == 3: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0,0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) # override the __getattr__ made by SWIG def __getattr__(self, name): @@ -328,7 +402,7 @@ public: if (dest != wxRect(0,0,0,0)) { wxPyBeginBlockThreads(); wxRect* newRect = new wxRect(dest); - obj = wxPyConstructObject((void*)newRect, "wxRect"); + obj = wxPyConstructObject((void*)newRect, wxT("wxRect")); PyObject* one = PyInt_FromLong(1); PyObject_SetAttrString(obj, "thisown", one); Py_DECREF(one); @@ -341,13 +415,116 @@ public: %} + +//--------------------------------------------------------------------------- +// wxPoint2Ds represent a point or a vector in a 2d coordinate system + +class wxPoint2DDouble +{ +public: + double m_x; + double m_y; + + %name(x)double m_x; + %name(y)double m_y; + + wxPoint2DDouble( double x=0 , double y=0 ); + %name(wxPoint2DDoubleCopy)wxPoint2DDouble( const wxPoint2DDouble &pt ); + %name(wxPoint2DDoubleFromPoint)wxPoint2DDouble( const wxPoint &pt ); + + // two different conversions to integers, floor and rounding + void GetFloor( int* OUTPUT , int* OUTPUT ) const; + void GetRounded( int* OUTPUT , int* OUTPUT ) const; + + double GetVectorLength() const; + double GetVectorAngle() const ; + void SetVectorLength( double length ); + void SetVectorAngle( double degrees ); + // LinkError: void SetPolarCoordinates( double angle , double length ); + // LinkError: void Normalize(); + %pragma(python) addtoclass = " + def SetPolarCoordinates(self, angle, length): + self.SetVectorLength(length) + self.SetVectorAngle(angle) + def Normalize(self): + self.SetVectorLength(1.0) + " + + double GetDistance( const wxPoint2DDouble &pt ) const; + double GetDistanceSquare( const wxPoint2DDouble &pt ) const; + double GetDotProduct( const wxPoint2DDouble &vec ) const; + double GetCrossProduct( const wxPoint2DDouble &vec ) const; + + %addmethods { + void Set( double x=0 , double y=0 ) { + self->m_x = x; + self->m_y = y; + } + + // the reflection of this point + wxPoint2DDouble __neg__() { return -(*self); } + + wxPoint2DDouble& __iadd__(const wxPoint2DDouble& pt) { return (*self) += pt; } + wxPoint2DDouble& __isub__(const wxPoint2DDouble& pt) { return (*self) -= pt; } + wxPoint2DDouble& __imul__(const wxPoint2DDouble& pt) { return (*self) *= pt; } + wxPoint2DDouble& __idiv__(const wxPoint2DDouble& pt) { return (*self) /= pt; } + + // TODO: + //wxPoint2DDouble& operator*=(double n); + //wxPoint2DDouble& operator*=(int n); + //wxPoint2DDouble& operator/=(double n); + //wxPoint2DDouble& operator/=(int n); + + bool __eq__(PyObject* obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } + bool __ne__(PyObject* obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } + + + PyObject* asTuple() { + wxPyBeginBlockThreads(); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x)); + PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y)); + wxPyEndBlockThreads(); + return tup; + } + } + + %pragma(python) addtoclass = " + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint2DDouble'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.m_x = val + elif index == 1: self.m_yt = val + else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) +" +}; + + //--------------------------------------------------------------------------- // Miscellaneous functions long wxNewId(); void wxRegisterId(long id); -%name(NewId) long wxNewId(); -%name(RegisterId) void wxRegisterId(long id); long wxGetCurrentId(); void wxBell(); @@ -381,14 +558,16 @@ bool wxYield(); bool wxYieldIfNeeded(); void wxEnableTopLevelWindows(bool enable); -%inline %{ +#ifdef wxUSE_RESOURCES +inline %{ wxString wxGetResource(const wxString& section, const wxString& entry, const wxString& file = wxPyEmptyString) { - wxChar * retval; + wxChar* retval; wxGetResource(section, entry, &retval, file); return retval; } %} +#endif wxString wxStripMenuCodes(const wxString& in); diff --git a/wxPython/src/misc2.i b/wxPython/src/misc2.i index db800a4455..15edd72de2 100644 --- a/wxPython/src/misc2.i +++ b/wxPython/src/misc2.i @@ -183,6 +183,7 @@ wxWindow* wxGetTopLevelParent(wxWindow *win); //--------------------------------------------------------------------------- // Resource System +#ifdef wxUSE_WX_RESOURCES bool wxResourceAddIdentifier(char* name, int value); void wxResourceClear(void); wxBitmap wxResourceCreateBitmap(char* resource); @@ -192,6 +193,7 @@ int wxResourceGetIdentifier(char* name); bool wxResourceParseData(char* resource, wxResourceTable *table = NULL); bool wxResourceParseFile(char* filename, wxResourceTable *table = NULL); bool wxResourceParseString(char* resource, wxResourceTable *table = NULL); +#endif //--------------------------------------------------------------------------- // System Settings @@ -407,7 +409,7 @@ public: //---------------------------------------------------------------------- -bool wxSafeYield(wxWindow* win=NULL); +bool wxSafeYield(wxWindow* win=NULL, bool onlyIfNeeded=FALSE); void wxPostEvent(wxEvtHandler *dest, wxEvent& event); void wxWakeUpIdle(); @@ -509,8 +511,10 @@ public: bool BeginDrag(const wxPoint& hotspot, wxWindow* window, bool fullScreen = FALSE, wxRect* rect = NULL); - %name(BeginDrag2) bool BeginDrag(const wxPoint& hotspot, wxWindow* window, - wxWindow* fullScreenRect); + %name(BeginDragBounded) bool BeginDrag(const wxPoint& hotspot, wxWindow* window, + wxWindow* boundingWindow); + + %pragma(python) addtoclass = "BeginDrag2 = BeginDragBounded" bool EndDrag(); bool Move(const wxPoint& pt); @@ -629,6 +633,10 @@ public: static unsigned long GetTraceMask(); static bool IsAllowedTraceMask(const wxString& mask); + static void SetLogLevel(unsigned long logLevel); + static unsigned long GetLogLevel(); + + // static void TimeStamp(wxString *str); %addmethods { wxString TimeStamp() { @@ -695,6 +703,7 @@ void wxLogError(const wxString& msg); void wxLogWarning(const wxString& msg); void wxLogMessage(const wxString& msg); void wxLogInfo(const wxString& msg); +void wxLogDebug(const wxString& msg); void wxLogVerbose(const wxString& msg); void wxLogStatus(const wxString& msg); %name(wxLogStatusFrame)void wxLogStatus(wxFrame *pFrame, const wxString& msg); @@ -1108,10 +1117,10 @@ class wxFileTypeInfo public: // ctors // a normal item - wxFileTypeInfo(const char* mimeType, - const char* openCmd, - const char* printCmd, - const char* desc); + wxFileTypeInfo(const wxString& mimeType, + const wxString& openCmd, + const wxString& printCmd, + const wxString& desc); // the array elements correspond to the parameters of the ctor above in @@ -1205,7 +1214,7 @@ public: wxString str; if (self->GetMimeType(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1255,9 +1264,9 @@ public: wxPyBeginBlockThreads(); PyObject* tuple = PyTuple_New(3); PyTuple_SetItem(tuple, 0, wxPyConstructObject(new wxIcon(icon), - "wxIcon", TRUE)); + wxT("wxIcon"), TRUE)); #if wxUSE_UNICODE - PyTuple_SetItem(tuple, 1, PyUnicode_FromUnicode(iconFile.c_str(), iconFile.Len())); + PyTuple_SetItem(tuple, 1, PyUnicode_FromWideChar(iconFile.c_str(), iconFile.Len())); #else PyTuple_SetItem(tuple, 1, PyString_FromStringAndSize(iconFile.c_str(), iconFile.Len())); #endif @@ -1276,7 +1285,7 @@ public: wxString str; if (self->GetDescription(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1293,7 +1302,7 @@ public: wxString str; if (self->GetOpenCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1310,7 +1319,7 @@ public: wxString str; if (self->GetPrintCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1525,7 +1534,7 @@ public: wxBitmap rval = wxNullBitmap; wxPyBeginBlockThreads(); if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) { - PyObject* so = wxPyConstructObject((void*)&size, "wxSize", 0); + PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0); PyObject* ro; wxBitmap* ptr; PyObject* s1, *s2; @@ -1580,8 +1589,6 @@ public: const wxString& client = wxPyART_OTHER, const wxSize& size = wxDefaultSize); - // Destroy caches & all providers - static void CleanUpProviders(); }; @@ -1691,7 +1698,7 @@ public: // #define ADD_STRING(dict, str) \ // wxString tmp##str(str); \ // PyDict_SetItemString(dict, #str, \ -// PyUnicode_FromUnicode(tmp##str.c_str(), tmp##str.Len())) +// PyUnicode_FromWideChar(tmp##str.c_str(), tmp##str.Len())) // #else // #define ADD_STRING(dict, str) \ // PyDict_SetItemString(d, #str, PyString_FromString(str)) diff --git a/wxPython/src/msw/calendar.cpp b/wxPython/src/msw/calendar.cpp index 046a052370..92f2810573 100644 --- a/wxPython/src/msw/calendar.cpp +++ b/wxPython/src/msw/calendar.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -130,8 +129,7 @@ static PyObject *_wrap_new_wxCalendarDateAttr(PyObject *self, PyObject *args, Py return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxCalendarDateAttr. Expected _wxFont_p."); return NULL; } @@ -316,8 +314,7 @@ static PyObject *_wrap_wxCalendarDateAttr_SetFont(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarDateAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -897,8 +894,7 @@ static PyObject *_wrap_new_wxCalendarCtrl(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxCalendarCtrl. Expected _wxDateTime_p."); return NULL; } @@ -1007,8 +1003,7 @@ static PyObject *_wrap_wxCalendarCtrl_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxCalendarCtrl_Create. Expected _wxDateTime_p."); return NULL; } @@ -1065,8 +1060,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetDate(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetDate. Expected _wxDateTime_p."); return NULL; } @@ -1139,8 +1133,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetLowerDateLimit(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetLowerDateLimit. Expected _wxDateTime_p."); return NULL; } @@ -1212,8 +1205,7 @@ static PyObject *_wrap_wxCalendarCtrl_SetUpperDateLimit(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetUpperDateLimit. Expected _wxDateTime_p."); return NULL; } @@ -1287,15 +1279,13 @@ static PyObject *_wrap_wxCalendarCtrl_SetDateRange(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxCalendarCtrl_SetDateRange. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxCalendarCtrl_SetDateRange. Expected _wxDateTime_p."); return NULL; } diff --git a/wxPython/src/msw/calendar.py b/wxPython/src/msw/calendar.py index f20a55db56..355ee1bfa5 100644 --- a/wxPython/src/msw/calendar.py +++ b/wxPython/src/msw/calendar.py @@ -282,3 +282,4 @@ wxEVT_CALENDAR_WEEKDAY_CLICKED = calendarc.wxEVT_CALENDAR_WEEKDAY_CLICKED # Stuff these names into the wx namespace so wxPyConstructObject can find them wx.wxCalendarEventPtr = wxCalendarEventPtr +wx.wxCalendarCtrlPtr = wxCalendarCtrlPtr diff --git a/wxPython/src/msw/clip_dnd.cpp b/wxPython/src/msw/clip_dnd.cpp index 321a322c0f..cd16f22c0a 100644 --- a/wxPython/src/msw/clip_dnd.cpp +++ b/wxPython/src/msw/clip_dnd.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -191,7 +190,7 @@ wxBitmap wxPyBitmapDataObject::GetBitmap() { void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { wxPyBeginBlockThreads(); if (m_myInst.findCallback("SetBitmap")) { - PyObject* bo = wxPyConstructObject((void*)&bitmap, "wxBitmap"); + PyObject* bo = wxPyConstructObject((void*)&bitmap, wxT("wxBitmap")); m_myInst.callCallback(Py_BuildValue("(O)", bo)); Py_DECREF(bo); } @@ -206,15 +205,17 @@ void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) { class wxPyDropSource : public wxDropSource { public: #ifdef __WXMSW__ - wxPyDropSource(wxWindow *win = NULL, - const wxCursor &cursorCopy = wxNullCursor, - const wxCursor &cursorMove = wxNullCursor, - const wxCursor &cursorStop = wxNullCursor) - : wxDropSource(win, cursorCopy, cursorMove, cursorStop) {} + wxPyDropSource(wxWindow *win = NULL, + const wxCursor &copy = wxNullCursor, + const wxCursor &move = wxNullCursor, + const wxCursor &none = wxNullCursor) + : wxDropSource(win, copy, move, none) {} #else wxPyDropSource(wxWindow *win = NULL, - const wxIcon &go = wxNullIcon) - : wxDropSource(win, go) {} + const wxIcon& copy = wxNullIcon, + const wxIcon& move = wxNullIcon, + const wxIcon& none = wxNullIcon) + : wxDropSource(win, copy, move, none) {} #endif ~wxPyDropSource() { } @@ -537,7 +538,7 @@ static PyObject *_wrap_wxDataFormat_GetId(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -713,43 +714,6 @@ static PyObject *_wrap_wxDataObject_GetAllFormats(PyObject *self, PyObject *args return _resultobj; } -#define wxDataObject_GetDataSize(_swigobj,_swigarg0) (_swigobj->GetDataSize(_swigarg0)) -static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - size_t _result; - wxDataObject * _arg0; - wxDataFormat * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","format", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - #define wxDataObject_GetDataHere(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetDataHere(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -773,8 +737,7 @@ static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataHere. Expected _wxDataFormat_p."); return NULL; } @@ -796,6 +759,42 @@ static PyObject *_wrap_wxDataObject_GetDataHere(PyObject *self, PyObject *args, return _resultobj; } +#define wxDataObject_GetDataSize(_swigobj,_swigarg0) (_swigobj->GetDataSize(_swigarg0)) +static PyObject *_wrap_wxDataObject_GetDataSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + size_t _result; + wxDataObject * _arg0; + wxDataFormat * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","format", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxDataObject_GetDataSize",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataObject_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDataObject_GetDataSize. Expected _wxDataObject_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_GetDataSize. Expected _wxDataFormat_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (size_t )wxDataObject_GetDataSize(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxDataObject_SetData(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->SetData(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -820,8 +819,7 @@ static PyObject *_wrap_wxDataObject_SetData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_SetData. Expected _wxDataFormat_p."); return NULL; } @@ -864,8 +862,7 @@ static PyObject *_wrap_wxDataObject_IsSupportedFormat(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObject_IsSupportedFormat. Expected _wxDataFormat_p."); return NULL; } @@ -901,8 +898,7 @@ static PyObject *_wrap_new_wxDataObjectSimple(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxDataObjectSimple",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDataObjectSimple. Expected _wxDataFormat_p."); return NULL; } @@ -979,8 +975,7 @@ static PyObject *_wrap_wxDataObjectSimple_SetFormat(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDataObjectSimple_SetFormat. Expected _wxDataFormat_p."); return NULL; } @@ -1025,8 +1020,7 @@ static PyObject *_wrap_new_wxPyDataObjectSimple(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyDataObjectSimple",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyDataObjectSimple. Expected _wxDataFormat_p."); return NULL; } @@ -1265,7 +1259,7 @@ static PyObject *_wrap_wxTextDataObject_GetText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1444,8 +1438,7 @@ static PyObject *_wrap_new_wxBitmapDataObject(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxBitmapDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxBitmapDataObject. Expected _wxBitmap_p."); return NULL; } @@ -1516,8 +1509,7 @@ static PyObject *_wrap_wxBitmapDataObject_SetBitmap(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapDataObject_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1570,8 +1562,7 @@ static PyObject *_wrap_new_wxPyBitmapDataObject(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxPyBitmapDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPyBitmapDataObject. Expected _wxBitmap_p."); return NULL; } @@ -1773,8 +1764,7 @@ static PyObject *_wrap_new_wxCustomDataObject(PyObject *self, PyObject *args, Py if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:new_wxCustomDataObject",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxCustomDataObject. Expected _wxDataFormat_p."); return NULL; } @@ -1998,7 +1988,7 @@ static PyObject *_wrap_wxURLDataObject_GetURL(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2110,8 +2100,7 @@ static PyObject *_wrap_wxMetafileDataObject_SetMetafile(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMetafile_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMetafile_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMetafileDataObject_SetMetafile. Expected _wxMetafile_p."); return NULL; } @@ -2370,8 +2359,7 @@ static PyObject *_wrap_wxClipboard_IsSupported(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataFormat_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_IsSupported. Expected _wxDataFormat_p."); return NULL; } @@ -2407,8 +2395,7 @@ static PyObject *_wrap_wxClipboard_GetData(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxClipboard_GetData. Expected _wxDataObject_p."); return NULL; } @@ -2520,7 +2507,7 @@ static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject PyObject * _argo1 = 0; PyObject * _argo2 = 0; PyObject * _argo3 = 0; - char *_kwnames[] = { "win","cursorCopy","cursorMove","cursorStop", NULL }; + char *_kwnames[] = { "win","copy","move","none", NULL }; char _ptemp[128]; self = self; @@ -2534,22 +2521,19 @@ static PyObject *_wrap_new_wxDropSource(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDropSource. Expected _wxCursor_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxDropSource. Expected _wxCursor_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxDropSource. Expected _wxCursor_p."); return NULL; } @@ -2657,8 +2641,7 @@ static PyObject *_wrap_wxDropSource_SetData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDataObject_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDropSource_SetData. Expected _wxDataObject_p."); return NULL; } @@ -2730,8 +2713,7 @@ static PyObject *_wrap_wxDropSource_SetCursor(PyObject *self, PyObject *args, Py } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDropSource_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -3674,8 +3656,8 @@ static PyMethodDef clip_dndcMethods[] = { { "new_wxDataObjectSimple", (PyCFunction) _wrap_new_wxDataObjectSimple, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_IsSupportedFormat", (PyCFunction) _wrap_wxDataObject_IsSupportedFormat, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_SetData", (PyCFunction) _wrap_wxDataObject_SetData, METH_VARARGS | METH_KEYWORDS }, - { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetDataSize", (PyCFunction) _wrap_wxDataObject_GetDataSize, METH_VARARGS | METH_KEYWORDS }, + { "wxDataObject_GetDataHere", (PyCFunction) _wrap_wxDataObject_GetDataHere, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetAllFormats", (PyCFunction) _wrap_wxDataObject_GetAllFormats, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetFormatCount", (PyCFunction) _wrap_wxDataObject_GetFormatCount, METH_VARARGS | METH_KEYWORDS }, { "wxDataObject_GetPreferredFormat", (PyCFunction) _wrap_wxDataObject_GetPreferredFormat, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/clip_dnd.py b/wxPython/src/msw/clip_dnd.py index 2743257032..fd3400e661 100644 --- a/wxPython/src/msw/clip_dnd.py +++ b/wxPython/src/msw/clip_dnd.py @@ -11,9 +11,12 @@ class wxDataFormatPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDataFormat(self) + def __del__(self, delfunc=clip_dndc.delete_wxDataFormat): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetType(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataFormat_SetType,(self,) + _args, _kwargs) return val @@ -43,9 +46,12 @@ class wxDataObjectPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDataObject(self) + def __del__(self, delfunc=clip_dndc.delete_wxDataObject): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPreferredFormat(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetPreferredFormat,(self,) + _args, _kwargs) if val: val = wxDataFormatPtr(val) ; val.thisown = 1 @@ -56,12 +62,12 @@ class wxDataObjectPtr : def GetAllFormats(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetAllFormats,(self,) + _args, _kwargs) return val - def GetDataSize(self, *_args, **_kwargs): - val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs) - return val def GetDataHere(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_GetDataHere,(self,) + _args, _kwargs) return val + def GetDataSize(self, *_args, **_kwargs): + val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs) + return val def SetData(self, *_args, **_kwargs): val = apply(clip_dndc.wxDataObject_SetData,(self,) + _args, _kwargs) return val @@ -353,9 +359,12 @@ class wxDropSourcePtr : def _setCallbackInfo(self, *_args, **_kwargs): val = apply(clip_dndc.wxDropSource__setCallbackInfo,(self,) + _args, _kwargs) return val - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxDropSource(self) + def __del__(self, delfunc=clip_dndc.delete_wxDropSource): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetData(self, *_args, **_kwargs): val = apply(clip_dndc.wxDropSource_SetData,(self,) + _args, _kwargs) return val @@ -403,9 +412,12 @@ class wxPyDropTargetPtr(wxDropTargetPtr): def _setCallbackInfo(self, *_args, **_kwargs): val = apply(clip_dndc.wxPyDropTarget__setCallbackInfo,(self,) + _args, _kwargs) return val - def __del__(self,clip_dndc=clip_dndc): - if self.thisown == 1 : - clip_dndc.delete_wxPyDropTarget(self) + def __del__(self, delfunc=clip_dndc.delete_wxPyDropTarget): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetDataObject(self, *_args, **_kwargs): val = apply(clip_dndc.wxPyDropTarget_GetDataObject,(self,) + _args, _kwargs) if val: val = wxDataObjectPtr(val) diff --git a/wxPython/src/msw/cmndlgs.cpp b/wxPython/src/msw/cmndlgs.cpp index 27aef578b9..6b9346d5a3 100644 --- a/wxPython/src/msw/cmndlgs.cpp +++ b/wxPython/src/msw/cmndlgs.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -658,7 +657,7 @@ static PyObject *_wrap_wxDirDialog_GetPath(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -695,7 +694,7 @@ static PyObject *_wrap_wxDirDialog_GetMessage(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -999,7 +998,7 @@ static PyObject *_wrap_wxFileDialog_GetDirectory(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1036,7 +1035,7 @@ static PyObject *_wrap_wxFileDialog_GetFilename(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1101,7 +1100,7 @@ static PyObject *_wrap_wxFileDialog_GetMessage(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1138,7 +1137,7 @@ static PyObject *_wrap_wxFileDialog_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1203,7 +1202,7 @@ static PyObject *_wrap_wxFileDialog_GetWildcard(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1958,7 +1957,7 @@ static PyObject *_wrap_wxSingleChoiceDialog_GetStringSelection(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2172,7 +2171,7 @@ static PyObject *_wrap_wxTextEntryDialog_GetValue(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2568,8 +2567,7 @@ static PyObject *_wrap_wxFontData_SetChosenFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFontData_SetChosenFont. Expected _wxFont_p."); return NULL; } @@ -2641,8 +2639,7 @@ static PyObject *_wrap_wxFontData_SetInitialFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFontData_SetInitialFont. Expected _wxFont_p."); return NULL; } @@ -2781,8 +2778,7 @@ static PyObject *_wrap_new_wxFontDialog(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFontData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFontData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxFontDialog. Expected _wxFontData_p."); return NULL; } @@ -3277,7 +3273,7 @@ static PyObject *_wrap_wxFindDialogEvent_GetFindString(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3315,7 +3311,7 @@ static PyObject *_wrap_wxFindDialogEvent_GetReplaceString(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3555,7 +3551,7 @@ static PyObject *_wrap_wxFindReplaceData_GetFindString(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3590,7 +3586,7 @@ static PyObject *_wrap_wxFindReplaceData_GetReplaceString(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/msw/cmndlgs.py b/wxPython/src/msw/cmndlgs.py index f1c5c95ea7..9555d3bc82 100644 --- a/wxPython/src/msw/cmndlgs.py +++ b/wxPython/src/msw/cmndlgs.py @@ -41,9 +41,12 @@ class wxColourDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxColourData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxColourData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetChooseFull(self, *_args, **_kwargs): val = apply(cmndlgsc.wxColourData_GetChooseFull,(self,) + _args, _kwargs) return val @@ -271,9 +274,12 @@ class wxFontDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxFontData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxFontData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableEffects(self, *_args, **_kwargs): val = apply(cmndlgsc.wxFontData_EnableEffects,(self,) + _args, _kwargs) return val @@ -427,9 +433,12 @@ class wxFindReplaceDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,cmndlgsc=cmndlgsc): - if self.thisown == 1 : - cmndlgsc.delete_wxFindReplaceData(self) + def __del__(self, delfunc=cmndlgsc.delete_wxFindReplaceData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetFindString(self, *_args, **_kwargs): val = apply(cmndlgsc.wxFindReplaceData_GetFindString,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/controls.cpp b/wxPython/src/msw/controls.cpp index f74eec347d..0d60533c80 100644 --- a/wxPython/src/msw/controls.cpp +++ b/wxPython/src/msw/controls.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -210,8 +209,7 @@ static PyObject *_wrap_new_wxControl(PyObject *self, PyObject *args, PyObject *k return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxControl. Expected _wxValidator_p."); return NULL; } @@ -320,8 +318,7 @@ static PyObject *_wrap_wxControl_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxControl_Create. Expected _wxValidator_p."); return NULL; } @@ -366,8 +363,7 @@ static PyObject *_wrap_wxControl_Command(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCommandEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCommandEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxControl_Command. Expected _wxCommandEvent_p."); return NULL; } @@ -409,7 +405,7 @@ static PyObject *_wrap_wxControl_GetLabel(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -575,7 +571,7 @@ static PyObject *_wrap_wxControlWithItems_GetString(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -748,7 +744,7 @@ static PyObject *_wrap_wxControlWithItems_GetStringSelection(PyObject *self, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -917,11 +913,10 @@ static PyObject *_wrap_wxControlWithItems_AppendItems(PyObject *self, PyObject * PyObject* item = PySequence_GetItem(_obj1, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg1->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg1->Add(PyString_AsString(str)); #endif + _arg1->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -1024,8 +1019,7 @@ static PyObject *_wrap_new_wxButton(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxButton. Expected _wxValidator_p."); return NULL; } @@ -1145,8 +1139,7 @@ static PyObject *_wrap_wxButton_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxButton_Create. Expected _wxValidator_p."); return NULL; } @@ -1295,8 +1288,7 @@ static PyObject *_wrap_wxButton_SetImageLabel(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxButton_SetImageLabel. Expected _wxBitmap_p."); return NULL; } @@ -1436,8 +1428,7 @@ static PyObject *_wrap_new_wxBitmapButton(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxBitmapButton. Expected _wxBitmap_p."); return NULL; } @@ -1455,8 +1446,7 @@ static PyObject *_wrap_new_wxBitmapButton(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxBitmapButton. Expected _wxValidator_p."); return NULL; } @@ -1555,8 +1545,7 @@ static PyObject *_wrap_wxBitmapButton_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxBitmapButton_Create. Expected _wxBitmap_p."); return NULL; } @@ -1574,8 +1563,7 @@ static PyObject *_wrap_wxBitmapButton_Create(PyObject *self, PyObject *args, PyO return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxBitmapButton_Create. Expected _wxValidator_p."); return NULL; } @@ -1740,8 +1728,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapDisabled(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapDisabled. Expected _wxBitmap_p."); return NULL; } @@ -1777,8 +1764,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapFocus(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapFocus. Expected _wxBitmap_p."); return NULL; } @@ -1814,8 +1800,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapSelected(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapSelected. Expected _wxBitmap_p."); return NULL; } @@ -1851,8 +1836,7 @@ static PyObject *_wrap_wxBitmapButton_SetBitmapLabel(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmapButton_SetBitmapLabel. Expected _wxBitmap_p."); return NULL; } @@ -2037,8 +2021,7 @@ static PyObject *_wrap_new_wxCheckBox(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxCheckBox. Expected _wxValidator_p."); return NULL; } @@ -2158,8 +2141,7 @@ static PyObject *_wrap_wxCheckBox_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxCheckBox_Create. Expected _wxValidator_p."); return NULL; } @@ -2216,6 +2198,34 @@ static PyObject *_wrap_wxCheckBox_GetValue(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxCheckBox_IsChecked(_swigobj) (_swigobj->IsChecked()) +static PyObject *_wrap_wxCheckBox_IsChecked(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxCheckBox * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCheckBox_IsChecked",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCheckBox_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCheckBox_IsChecked. Expected _wxCheckBox_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxCheckBox_IsChecked(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxCheckBox_SetValue(_swigobj,_swigarg0) (_swigobj->SetValue(_swigarg0)) static PyObject *_wrap_wxCheckBox_SetValue(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2341,8 +2351,7 @@ static PyObject *_wrap_new_wxChoice(PyObject *self, PyObject *args, PyObject *kw } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxChoice. Expected _wxValidator_p."); return NULL; } @@ -2472,8 +2481,7 @@ static PyObject *_wrap_wxChoice_Create(PyObject *self, PyObject *args, PyObject } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxChoice_Create. Expected _wxValidator_p."); return NULL; } @@ -2812,8 +2820,7 @@ static PyObject *_wrap_new_wxComboBox(PyObject *self, PyObject *args, PyObject * } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxComboBox. Expected _wxValidator_p."); return NULL; } @@ -2955,8 +2962,7 @@ static PyObject *_wrap_wxComboBox_Create(PyObject *self, PyObject *args, PyObjec } } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of wxComboBox_Create. Expected _wxValidator_p."); return NULL; } @@ -3134,7 +3140,7 @@ static PyObject *_wrap_wxComboBox_GetValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3507,8 +3513,7 @@ static PyObject *_wrap_new_wxGauge(PyObject *self, PyObject *args, PyObject *kwa return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxGauge. Expected _wxValidator_p."); return NULL; } @@ -3618,8 +3623,7 @@ static PyObject *_wrap_wxGauge_Create(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxGauge_Create. Expected _wxValidator_p."); return NULL; } @@ -4524,7 +4528,7 @@ static PyObject *_wrap_wxStaticText_GetLabel(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4668,8 +4672,7 @@ static PyObject *_wrap_new_wxListBox(PyObject *self, PyObject *args, PyObject *k } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxListBox. Expected _wxValidator_p."); return NULL; } @@ -4799,8 +4802,7 @@ static PyObject *_wrap_wxListBox_Create(PyObject *self, PyObject *args, PyObject } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxListBox_Create. Expected _wxValidator_p."); return NULL; } @@ -5371,8 +5373,7 @@ static PyObject *_wrap_new_wxCheckListBox(PyObject *self, PyObject *args, PyObje } } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of new_wxCheckListBox. Expected _wxValidator_p."); return NULL; } @@ -5502,8 +5503,7 @@ static PyObject *_wrap_wxCheckListBox_Create(PyObject *self, PyObject *args, PyO } } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of wxCheckListBox_Create. Expected _wxValidator_p."); return NULL; } @@ -5772,8 +5772,7 @@ static PyObject *_wrap_new_wxTextAttr(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxTextAttr. Expected _wxFont_p."); return NULL; } @@ -5914,8 +5913,7 @@ static PyObject *_wrap_wxTextAttr_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -6149,15 +6147,13 @@ static PyObject *_wrap_wxTextAttr_Combine(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxTextAttr_Combine",_kwnames,&_argo0,&_argo1,&_argo2)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTextAttr_Combine. Expected _wxTextAttr_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextAttr_Combine. Expected _wxTextAttr_p."); return NULL; } @@ -6264,8 +6260,7 @@ static PyObject *_wrap_new_wxTextCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxTextCtrl. Expected _wxValidator_p."); return NULL; } @@ -6386,8 +6381,7 @@ static PyObject *_wrap_wxTextCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxTextCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -6442,7 +6436,7 @@ static PyObject *_wrap_wxTextCtrl_GetValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6520,7 +6514,7 @@ static PyObject *_wrap_wxTextCtrl_GetRange(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6587,7 +6581,7 @@ static PyObject *_wrap_wxTextCtrl_GetLineText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6756,7 +6750,7 @@ static PyObject *_wrap_wxTextCtrl_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7101,8 +7095,7 @@ static PyObject *_wrap_wxTextCtrl_EmulateKeyPress(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextCtrl_EmulateKeyPress. Expected _wxKeyEvent_p."); return NULL; } @@ -7140,8 +7133,7 @@ static PyObject *_wrap_wxTextCtrl_SetStyle(PyObject *self, PyObject *args, PyObj } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxTextCtrl_SetStyle. Expected _wxTextAttr_p."); return NULL; } @@ -7177,8 +7169,7 @@ static PyObject *_wrap_wxTextCtrl_SetDefaultStyle(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTextAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTextCtrl_SetDefaultStyle. Expected _wxTextAttr_p."); return NULL; } @@ -7946,7 +7937,7 @@ static PyObject *_wrap_wxTextCtrl_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8033,8 +8024,7 @@ static PyObject *_wrap_new_wxScrollBar(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxScrollBar. Expected _wxValidator_p."); return NULL; } @@ -8143,8 +8133,7 @@ static PyObject *_wrap_wxScrollBar_Create(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxScrollBar_Create. Expected _wxValidator_p."); return NULL; } @@ -8774,8 +8763,7 @@ static PyObject *_wrap_new_wxStaticBitmap(PyObject *self, PyObject *args, PyObje } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxStaticBitmap. Expected _wxBitmap_p."); return NULL; } @@ -8884,8 +8872,7 @@ static PyObject *_wrap_wxStaticBitmap_Create(PyObject *self, PyObject *args, PyO } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxStaticBitmap_Create. Expected _wxBitmap_p."); return NULL; } @@ -8972,8 +8959,7 @@ static PyObject *_wrap_wxStaticBitmap_SetBitmap(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxStaticBitmap_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -9009,8 +8995,7 @@ static PyObject *_wrap_wxStaticBitmap_SetIcon(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxStaticBitmap_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -9120,8 +9105,7 @@ static PyObject *_wrap_new_wxRadioBox(PyObject *self, PyObject *args, PyObject * } } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of new_wxRadioBox. Expected _wxValidator_p."); return NULL; } @@ -9263,8 +9247,7 @@ static PyObject *_wrap_wxRadioBox_Create(PyObject *self, PyObject *args, PyObjec } } if (_argo10) { - if (_argo10 == Py_None) { _arg10 = NULL; } - else if (SWIG_GetPtrObj(_argo10,(void **) &_arg10,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo10,(void **) &_arg10,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 11 of wxRadioBox_Create. Expected _wxValidator_p."); return NULL; } @@ -9433,7 +9416,7 @@ static PyObject *_wrap_wxRadioBox_GetString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9594,7 +9577,7 @@ static PyObject *_wrap_wxRadioBox_GetStringSelection(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9847,8 +9830,7 @@ static PyObject *_wrap_new_wxRadioButton(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxRadioButton. Expected _wxValidator_p."); return NULL; } @@ -9968,8 +9950,7 @@ static PyObject *_wrap_wxRadioButton_Create(PyObject *self, PyObject *args, PyOb return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxRadioButton_Create. Expected _wxValidator_p."); return NULL; } @@ -10136,8 +10117,7 @@ static PyObject *_wrap_new_wxSlider(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo8) { - if (_argo8 == Py_None) { _arg8 = NULL; } - else if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo8,(void **) &_arg8,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 9 of new_wxSlider. Expected _wxValidator_p."); return NULL; } @@ -10249,8 +10229,7 @@ static PyObject *_wrap_wxSlider_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo9) { - if (_argo9 == Py_None) { _arg9 = NULL; } - else if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo9,(void **) &_arg9,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 10 of wxSlider_Create. Expected _wxValidator_p."); return NULL; } @@ -11276,8 +11255,7 @@ static PyObject *_wrap_new_wxToggleButton(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of new_wxToggleButton. Expected _wxValidator_p."); return NULL; } @@ -11397,8 +11375,7 @@ static PyObject *_wrap_wxToggleButton_Create(PyObject *self, PyObject *args, PyO return NULL; } if (_argo7) { - if (_argo7 == Py_None) { _arg7 = NULL; } - else if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo7,(void **) &_arg7,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 8 of wxToggleButton_Create. Expected _wxValidator_p."); return NULL; } @@ -11745,6 +11722,7 @@ static PyMethodDef controlscMethods[] = { { "new_wxPreChoice", (PyCFunction) _wrap_new_wxPreChoice, METH_VARARGS | METH_KEYWORDS }, { "new_wxChoice", (PyCFunction) _wrap_new_wxChoice, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_SetValue", (PyCFunction) _wrap_wxCheckBox_SetValue, METH_VARARGS | METH_KEYWORDS }, + { "wxCheckBox_IsChecked", (PyCFunction) _wrap_wxCheckBox_IsChecked, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_GetValue", (PyCFunction) _wrap_wxCheckBox_GetValue, METH_VARARGS | METH_KEYWORDS }, { "wxCheckBox_Create", (PyCFunction) _wrap_wxCheckBox_Create, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreCheckBox", (PyCFunction) _wrap_new_wxPreCheckBox, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/controls.py b/wxPython/src/msw/controls.py index 4e06f17121..e314b93451 100644 --- a/wxPython/src/msw/controls.py +++ b/wxPython/src/msw/controls.py @@ -206,6 +206,9 @@ class wxCheckBoxPtr(wxControlPtr): def GetValue(self, *_args, **_kwargs): val = apply(controlsc.wxCheckBox_GetValue,(self,) + _args, _kwargs) return val + def IsChecked(self, *_args, **_kwargs): + val = apply(controlsc.wxCheckBox_IsChecked,(self,) + _args, _kwargs) + return val def SetValue(self, *_args, **_kwargs): val = apply(controlsc.wxCheckBox_SetValue,(self,) + _args, _kwargs) return val @@ -569,9 +572,12 @@ class wxTextAttrPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controlsc=controlsc): - if self.thisown == 1 : - controlsc.delete_wxTextAttr(self) + def __del__(self, delfunc=controlsc.delete_wxTextAttr): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTextColour(self, *_args, **_kwargs): val = apply(controlsc.wxTextAttr_SetTextColour,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/controls2.cpp b/wxPython/src/msw/controls2.cpp index 0158dca0b6..80d55244c6 100644 --- a/wxPython/src/msw/controls2.cpp +++ b/wxPython/src/msw/controls2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -214,8 +213,8 @@ public: bool found; wxPyBeginBlockThreads(); if ((found = m_myInst.findCallback("OnCompareItems"))) { - PyObject *o1 = wxPyConstructObject((void*)&item1, "wxTreeItemId"); - PyObject *o2 = wxPyConstructObject((void*)&item2, "wxTreeItemId"); + PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId")); + PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId")); rval = m_myInst.callCallback(Py_BuildValue("(OO)",o1,o2)); Py_DECREF(o1); Py_DECREF(o2); @@ -264,8 +263,7 @@ static PyObject *_wrap_new_wxListItemAttr(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxListItemAttr. Expected _wxFont_p."); return NULL; } @@ -378,8 +376,7 @@ static PyObject *_wrap_wxListItemAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListItemAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -1079,8 +1076,7 @@ static PyObject *_wrap_wxListItem_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListItem_SetFont. Expected _wxFont_p."); return NULL; } @@ -1235,7 +1231,7 @@ static PyObject *_wrap_wxListItem_GetText(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1826,7 +1822,7 @@ static PyObject *_wrap_wxListItem_m_text_set(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1864,7 +1860,7 @@ static PyObject *_wrap_wxListItem_m_text_get(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2476,7 +2472,7 @@ static PyObject *_wrap_wxListEvent_GetLabel(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2511,7 +2507,7 @@ static PyObject *_wrap_wxListEvent_GetText(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2764,8 +2760,7 @@ static PyObject *_wrap_new_wxListCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListCtrl. Expected _wxValidator_p."); return NULL; } @@ -2874,8 +2869,7 @@ static PyObject *_wrap_wxListCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -3068,8 +3062,7 @@ static PyObject *_wrap_wxListCtrl_SetColumn(PyObject *self, PyObject *args, PyOb } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_SetColumn. Expected _wxListItem_p."); return NULL; } @@ -3257,8 +3250,7 @@ static PyObject *_wrap_wxListCtrl_SetItem(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListCtrl_SetItem. Expected _wxListItem_p."); return NULL; } @@ -3434,7 +3426,7 @@ static PyObject *_wrap_wxListCtrl_GetItemText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4593,8 +4585,7 @@ static PyObject *_wrap_wxListCtrl_InsertItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxListCtrl_InsertItem. Expected _wxListItem_p."); return NULL; } @@ -4742,8 +4733,7 @@ static PyObject *_wrap_wxListCtrl_InsertColumnInfo(PyObject *self, PyObject *arg } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_InsertColumnInfo. Expected _wxListItem_p."); return NULL; } @@ -5150,8 +5140,7 @@ static PyObject *_wrap_new_wxListView(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxListView. Expected _wxValidator_p."); return NULL; } @@ -5260,8 +5249,7 @@ static PyObject *_wrap_wxListView_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxListView_Create. Expected _wxValidator_p."); return NULL; } @@ -5551,8 +5539,7 @@ static PyObject *_wrap_new_wxTreeItemAttr(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxTreeItemAttr. Expected _wxFont_p."); return NULL; } @@ -5665,8 +5652,7 @@ static PyObject *_wrap_wxTreeItemAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeItemAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -6137,8 +6123,7 @@ static PyObject *_wrap_wxTreeItemData_SetId(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeItemData_SetId. Expected _wxTreeItemId_p."); return NULL; } @@ -6395,7 +6380,7 @@ static PyObject *_wrap_wxTreeEvent_GetLabel(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6507,8 +6492,7 @@ static PyObject *_wrap_new_wxTreeCtrl(PyObject *self, PyObject *args, PyObject * return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxTreeCtrl. Expected _wxValidator_p."); return NULL; } @@ -6617,8 +6601,7 @@ static PyObject *_wrap_wxTreeCtrl_Create(PyObject *self, PyObject *args, PyObjec return NULL; } if (_argo6) { - if (_argo6 == Py_None) { _arg6 = NULL; } - else if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo6,(void **) &_arg6,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 7 of wxTreeCtrl_Create. Expected _wxValidator_p."); return NULL; } @@ -7048,8 +7031,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemText. Expected _wxTreeItemId_p."); return NULL; } @@ -7062,7 +7044,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7095,8 +7077,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemImage(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7132,8 +7113,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemSelectedImage(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemSelectedImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7170,8 +7150,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemText(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemText. Expected _wxTreeItemId_p."); return NULL; } @@ -7218,8 +7197,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemImage(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7256,8 +7234,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemSelectedImage(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemSelectedImage. Expected _wxTreeItemId_p."); return NULL; } @@ -7295,8 +7272,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemHasChildren(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemHasChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -7343,8 +7319,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemData(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemData. Expected _wxTreeItemId_p."); return NULL; } @@ -7390,8 +7365,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemData(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemData. Expected _wxTreeItemId_p."); return NULL; } @@ -7443,8 +7417,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPyData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPyData. Expected _wxTreeItemId_p."); return NULL; } @@ -7491,8 +7464,7 @@ static PyObject *_wrap_wxTreeCtrl_SetPyData(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetPyData. Expected _wxTreeItemId_p."); return NULL; } @@ -7511,6 +7483,120 @@ static PyObject *_wrap_wxTreeCtrl_SetPyData(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxTreeCtrl_GetItemTextColour(_swigobj,_swigarg0) (_swigobj->GetItemTextColour(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemTextColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemTextColour",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemTextColour. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemTextColour. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxTreeCtrl_GetItemTextColour(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +#define wxTreeCtrl_GetItemBackgroundColour(_swigobj,_swigarg0) (_swigobj->GetItemBackgroundColour(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemBackgroundColour",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemBackgroundColour. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemBackgroundColour. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxTreeCtrl_GetItemBackgroundColour(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +#define wxTreeCtrl_GetItemFont(_swigobj,_swigarg0) (_swigobj->GetItemFont(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_GetItemFont(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _result; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_GetItemFont",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_GetItemFont. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemFont. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxFont (wxTreeCtrl_GetItemFont(_arg0,*_arg1)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxFont_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxTreeCtrl_IsVisible(_swigobj,_swigarg0) (_swigobj->IsVisible(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_IsVisible(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -7532,8 +7618,7 @@ static PyObject *_wrap_wxTreeCtrl_IsVisible(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -7569,8 +7654,7 @@ static PyObject *_wrap_wxTreeCtrl_ItemHasChildren(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_ItemHasChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -7606,8 +7690,7 @@ static PyObject *_wrap_wxTreeCtrl_IsExpanded(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsExpanded. Expected _wxTreeItemId_p."); return NULL; } @@ -7643,8 +7726,7 @@ static PyObject *_wrap_wxTreeCtrl_IsSelected(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsSelected. Expected _wxTreeItemId_p."); return NULL; } @@ -7719,7 +7801,7 @@ static PyObject *_wrap_wxTreeCtrl_GetSelection(PyObject *self, PyObject *args, P return _resultobj; } -#define wxTreeCtrl_GetItemParent(_swigobj,_swigarg0) (_swigobj->GetParent(_swigarg0)) +#define wxTreeCtrl_GetItemParent(_swigobj,_swigarg0) (_swigobj->GetItemParent(_swigarg0)) static PyObject *_wrap_wxTreeCtrl_GetItemParent(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxTreeItemId * _result; @@ -7741,8 +7823,7 @@ static PyObject *_wrap_wxTreeCtrl_GetItemParent(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetItemParent. Expected _wxTreeItemId_p."); return NULL; } @@ -7766,7 +7847,7 @@ static PyObject * wxPyTreeCtrl_GetSelections(wxPyTreeCtrl *self) { num = self->GetSelections(array); for (x=0; x < num; x++) { wxTreeItemId *tii = new wxTreeItemId(array.Item(x)); - PyObject* item = wxPyConstructObject((void*)tii, "wxTreeItemId", TRUE); + PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), TRUE); PyList_Append(rval, item); } wxPyEndBlockThreads(); @@ -7824,8 +7905,7 @@ static PyObject *_wrap_wxTreeCtrl_GetChildrenCount(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetChildrenCount. Expected _wxTreeItemId_p."); return NULL; } @@ -7866,8 +7946,7 @@ static PyObject *_wrap_wxTreeCtrl_GetFirstChild(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetFirstChild. Expected _wxTreeItemId_p."); return NULL; } @@ -7918,8 +7997,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextChild(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextChild. Expected _wxTreeItemId_p."); return NULL; } @@ -7966,8 +8044,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextSibling(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextSibling. Expected _wxTreeItemId_p."); return NULL; } @@ -8005,8 +8082,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPrevSibling(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPrevSibling. Expected _wxTreeItemId_p."); return NULL; } @@ -8074,8 +8150,7 @@ static PyObject *_wrap_wxTreeCtrl_GetNextVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetNextVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8113,8 +8188,7 @@ static PyObject *_wrap_wxTreeCtrl_GetPrevVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetPrevVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8152,8 +8226,7 @@ static PyObject *_wrap_wxTreeCtrl_GetLastChild(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetLastChild. Expected _wxTreeItemId_p."); return NULL; } @@ -8249,8 +8322,7 @@ static PyObject *_wrap_wxTreeCtrl_PrependItem(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_PrependItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8312,15 +8384,13 @@ static PyObject *_wrap_wxTreeCtrl_InsertItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_InsertItem. Expected _wxTreeItemId_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxTreeCtrl_InsertItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8381,8 +8451,7 @@ static PyObject *_wrap_wxTreeCtrl_InsertItemBefore(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_InsertItemBefore. Expected _wxTreeItemId_p."); return NULL; } @@ -8442,8 +8511,7 @@ static PyObject *_wrap_wxTreeCtrl_AppendItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_AppendItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8495,8 +8563,7 @@ static PyObject *_wrap_wxTreeCtrl_Delete(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Delete. Expected _wxTreeItemId_p."); return NULL; } @@ -8532,8 +8599,7 @@ static PyObject *_wrap_wxTreeCtrl_DeleteChildren(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_DeleteChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -8597,8 +8663,7 @@ static PyObject *_wrap_wxTreeCtrl_Expand(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Expand. Expected _wxTreeItemId_p."); return NULL; } @@ -8634,8 +8699,7 @@ static PyObject *_wrap_wxTreeCtrl_Collapse(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Collapse. Expected _wxTreeItemId_p."); return NULL; } @@ -8671,8 +8735,7 @@ static PyObject *_wrap_wxTreeCtrl_CollapseAndReset(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_CollapseAndReset. Expected _wxTreeItemId_p."); return NULL; } @@ -8708,8 +8771,7 @@ static PyObject *_wrap_wxTreeCtrl_Toggle(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_Toggle. Expected _wxTreeItemId_p."); return NULL; } @@ -8801,8 +8863,7 @@ static PyObject *_wrap_wxTreeCtrl_SelectItem(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SelectItem. Expected _wxTreeItemId_p."); return NULL; } @@ -8838,8 +8899,7 @@ static PyObject *_wrap_wxTreeCtrl_EnsureVisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EnsureVisible. Expected _wxTreeItemId_p."); return NULL; } @@ -8875,8 +8935,7 @@ static PyObject *_wrap_wxTreeCtrl_ScrollTo(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_ScrollTo. Expected _wxTreeItemId_p."); return NULL; } @@ -8892,43 +8951,6 @@ static PyObject *_wrap_wxTreeCtrl_ScrollTo(PyObject *self, PyObject *args, PyObj return _resultobj; } -#define wxTreeCtrl_EditLabel(_swigobj,_swigarg0) (_swigobj->EditLabel(_swigarg0)) -static PyObject *_wrap_wxTreeCtrl_EditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxTextCtrl * _result; - wxPyTreeCtrl * _arg0; - wxTreeItemId * _arg1; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - char *_kwnames[] = { "self","item", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_EditLabel",_kwnames,&_argo0,&_argo1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_EditLabel. Expected _wxPyTreeCtrl_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EditLabel. Expected _wxTreeItemId_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxTextCtrl *)wxTreeCtrl_EditLabel(_arg0,*_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ _resultobj = wxPyMake_wxObject(_result); } - return _resultobj; -} - #define wxTreeCtrl_GetEditControl(_swigobj) (_swigobj->GetEditControl()) static PyObject *_wrap_wxTreeCtrl_GetEditControl(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -8957,6 +8979,42 @@ static PyObject *_wrap_wxTreeCtrl_GetEditControl(PyObject *self, PyObject *args, return _resultobj; } +#define wxTreeCtrl_EditLabel(_swigobj,_swigarg0) (_swigobj->EditLabel(_swigarg0)) +static PyObject *_wrap_wxTreeCtrl_EditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyTreeCtrl * _arg0; + wxTreeItemId * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","item", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_EditLabel",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyTreeCtrl_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxTreeCtrl_EditLabel. Expected _wxPyTreeCtrl_p."); + return NULL; + } + } + if (_argo1) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EditLabel. Expected _wxTreeItemId_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxTreeCtrl_EditLabel(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxTreeCtrl_EndEditLabel(_swigobj,_swigarg0,_swigarg1) (_swigobj->EndEditLabel(_swigarg0,_swigarg1)) static PyObject *_wrap_wxTreeCtrl_EndEditLabel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -8978,8 +9036,7 @@ static PyObject *_wrap_wxTreeCtrl_EndEditLabel(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_EndEditLabel. Expected _wxTreeItemId_p."); return NULL; } @@ -9015,8 +9072,7 @@ static PyObject *_wrap_wxTreeCtrl_SortChildren(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SortChildren. Expected _wxTreeItemId_p."); return NULL; } @@ -9053,8 +9109,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBold(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemBold. Expected _wxTreeItemId_p."); return NULL; } @@ -9091,8 +9146,7 @@ static PyObject *_wrap_wxTreeCtrl_IsBold(PyObject *self, PyObject *args, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_IsBold. Expected _wxTreeItemId_p."); return NULL; } @@ -9178,8 +9232,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemTextColour(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemTextColour. Expected _wxTreeItemId_p."); return NULL; } @@ -9223,8 +9276,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemBackgroundColour(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemBackgroundColour. Expected _wxTreeItemId_p."); return NULL; } @@ -9267,15 +9319,13 @@ static PyObject *_wrap_wxTreeCtrl_SetItemFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemFont. Expected _wxTreeItemId_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxTreeCtrl_SetItemFont. Expected _wxFont_p."); return NULL; } @@ -9312,8 +9362,7 @@ static PyObject *_wrap_wxTreeCtrl_SetItemDropHighlight(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_SetItemDropHighlight. Expected _wxTreeItemId_p."); return NULL; } @@ -9334,7 +9383,7 @@ static PyObject * wxPyTreeCtrl_GetBoundingRect(wxPyTreeCtrl *self,const wxTreeIt if (self->GetBoundingRect(item, rect, textOnly)) { wxPyBeginBlockThreads(); wxRect* r = new wxRect(rect); - PyObject* val = wxPyConstructObject((void*)r, "wxRect"); + PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect")); wxPyEndBlockThreads(); return val; } @@ -9364,8 +9413,7 @@ static PyObject *_wrap_wxTreeCtrl_GetBoundingRect(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTreeCtrl_GetBoundingRect. Expected _wxTreeItemId_p."); return NULL; } @@ -9513,7 +9561,7 @@ static PyObject *_wrap_wxDirItemData_m_path_set(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9551,7 +9599,7 @@ static PyObject *_wrap_wxDirItemData_m_path_get(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9592,7 +9640,7 @@ static PyObject *_wrap_wxDirItemData_m_name_set(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9630,7 +9678,7 @@ static PyObject *_wrap_wxDirItemData_m_name_get(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10124,7 +10172,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetDefaultPath(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10200,7 +10248,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetPath(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10237,7 +10285,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetFilePath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10372,7 +10420,7 @@ static PyObject *_wrap_wxGenericDirCtrl_GetFilter(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10843,8 +10891,8 @@ static PyMethodDef controls2cMethods[] = { { "wxTreeCtrl_SetItemBold", (PyCFunction) _wrap_wxTreeCtrl_SetItemBold, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SortChildren", (PyCFunction) _wrap_wxTreeCtrl_SortChildren, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EndEditLabel", (PyCFunction) _wrap_wxTreeCtrl_EndEditLabel, METH_VARARGS | METH_KEYWORDS }, - { "wxTreeCtrl_GetEditControl", (PyCFunction) _wrap_wxTreeCtrl_GetEditControl, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EditLabel", (PyCFunction) _wrap_wxTreeCtrl_EditLabel, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetEditControl", (PyCFunction) _wrap_wxTreeCtrl_GetEditControl, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_ScrollTo", (PyCFunction) _wrap_wxTreeCtrl_ScrollTo, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_EnsureVisible", (PyCFunction) _wrap_wxTreeCtrl_EnsureVisible, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SelectItem", (PyCFunction) _wrap_wxTreeCtrl_SelectItem, METH_VARARGS | METH_KEYWORDS }, @@ -10879,6 +10927,9 @@ static PyMethodDef controls2cMethods[] = { { "wxTreeCtrl_IsExpanded", (PyCFunction) _wrap_wxTreeCtrl_IsExpanded, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_ItemHasChildren", (PyCFunction) _wrap_wxTreeCtrl_ItemHasChildren, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_IsVisible", (PyCFunction) _wrap_wxTreeCtrl_IsVisible, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemFont", (PyCFunction) _wrap_wxTreeCtrl_GetItemFont, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemBackgroundColour", (PyCFunction) _wrap_wxTreeCtrl_GetItemBackgroundColour, METH_VARARGS | METH_KEYWORDS }, + { "wxTreeCtrl_GetItemTextColour", (PyCFunction) _wrap_wxTreeCtrl_GetItemTextColour, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SetPyData", (PyCFunction) _wrap_wxTreeCtrl_SetPyData, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_GetPyData", (PyCFunction) _wrap_wxTreeCtrl_GetPyData, METH_VARARGS | METH_KEYWORDS }, { "wxTreeCtrl_SetItemData", (PyCFunction) _wrap_wxTreeCtrl_SetItemData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/controls2.py b/wxPython/src/msw/controls2.py index b3eeec1c2f..ff7d2087ff 100644 --- a/wxPython/src/msw/controls2.py +++ b/wxPython/src/msw/controls2.py @@ -186,9 +186,12 @@ class wxListItemPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controls2c=controls2c): - if self.thisown == 1 : - controls2c.delete_wxListItem(self) + def __del__(self, delfunc=controls2c.delete_wxListItem): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Clear(self, *_args, **_kwargs): val = apply(controls2c.wxListItem_Clear,(self,) + _args, _kwargs) return val @@ -670,6 +673,14 @@ class wxListCtrlPtr(wxControlPtr): '''get the currently focused item or -1 if none''' return self.GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED) + def GetFirstSelected(self, *args): + '''return first selected item, or -1 when none''' + return self.GetNextSelected(-1) + + def GetNextSelected(self, item): + '''return subsequent selected items, or -1 when no more''' + return self.GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) + def IsSelected(self, idx): '''return TRUE if the item is selected''' return self.GetItemState(idx, wxLIST_STATE_SELECTED) != 0 @@ -687,10 +698,14 @@ class wxListCtrlPtr(wxControlPtr): '''Append an item to the list control. The entry parameter should be a sequence with an item for each column''' if len(entry): + if wx.wxUSE_UNICODE: + cvtfunc = unicode + else: + cvtfunc = str pos = self.GetItemCount() - self.InsertStringItem(pos, str(entry[0])) + self.InsertStringItem(pos, cvtfunc(entry[0])) for i in range(1, len(entry)): - self.SetStringItem(pos, i, str(entry[i])) + self.SetStringItem(pos, i, cvtfunc(entry[i])) return pos class wxListCtrl(wxListCtrlPtr): @@ -805,9 +820,12 @@ class wxTreeItemIdPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,controls2c=controls2c): - if self.thisown == 1 : - controls2c.delete_wxTreeItemId(self) + def __del__(self, delfunc=controls2c.delete_wxTreeItemId): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(controls2c.wxTreeItemId_IsOk,(self,) + _args, _kwargs) return val @@ -971,6 +989,18 @@ class wxTreeCtrlPtr(wxControlPtr): def SetPyData(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_SetPyData,(self,) + _args, _kwargs) return val + def GetItemTextColour(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemTextColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val + def GetItemBackgroundColour(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemBackgroundColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val + def GetItemFont(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_GetItemFont,(self,) + _args, _kwargs) + if val: val = wxFontPtr(val) ; val.thisown = 1 + return val def IsVisible(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_IsVisible,(self,) + _args, _kwargs) return val @@ -1087,12 +1117,12 @@ class wxTreeCtrlPtr(wxControlPtr): def ScrollTo(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_ScrollTo,(self,) + _args, _kwargs) return val - def EditLabel(self, *_args, **_kwargs): - val = apply(controls2c.wxTreeCtrl_EditLabel,(self,) + _args, _kwargs) - return val def GetEditControl(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_GetEditControl,(self,) + _args, _kwargs) return val + def EditLabel(self, *_args, **_kwargs): + val = apply(controls2c.wxTreeCtrl_EditLabel,(self,) + _args, _kwargs) + return val def EndEditLabel(self, *_args, **_kwargs): val = apply(controls2c.wxTreeCtrl_EndEditLabel,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/events.cpp b/wxPython/src/msw/events.cpp index 2f6d0191c8..c9a83488c3 100644 --- a/wxPython/src/msw/events.cpp +++ b/wxPython/src/msw/events.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -955,7 +954,7 @@ static PyObject *_wrap_wxCommandEvent_GetString(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2277,8 +2276,7 @@ static PyObject *_wrap_wxMouseEvent_GetLogicalPosition(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMouseEvent_GetLogicalPosition. Expected _wxDC_p."); return NULL; } @@ -3332,8 +3330,7 @@ static PyObject *_wrap_wxSetCursorEvent_SetCursor(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSetCursorEvent_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -6015,7 +6012,7 @@ static PyObject * wxDropFilesEvent_GetFiles(wxDropFilesEvent *self) { for (int i=0; i<count; i++) { #if wxUSE_UNICODE - PyList_SetItem(list, i, PyUnicode_FromUnicode(files[i], files[i].Len())); + PyList_SetItem(list, i, PyUnicode_FromWideChar(files[i], files[i].Len())); #else PyList_SetItem(list, i, PyString_FromString((const char*)files[i])); #endif @@ -6277,7 +6274,7 @@ static PyObject *_wrap_wxUpdateUIEvent_GetText(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7322,8 +7319,7 @@ static PyObject *_wrap_new_wxTextUrlEvent(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"iOll:new_wxTextUrlEvent",_kwnames,&_arg0,&_argo1,&_arg2,&_arg3)) return NULL; if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMouseEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxMouseEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxTextUrlEvent. Expected _wxMouseEvent_p."); return NULL; } diff --git a/wxPython/src/msw/events.py b/wxPython/src/msw/events.py index 402df0334c..9ec900d64f 100644 --- a/wxPython/src/msw/events.py +++ b/wxPython/src/msw/events.py @@ -10,9 +10,12 @@ class wxEventPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxEvent(self) + def __del__(self, delfunc=eventsc.delete_wxEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetEventObject(self, *_args, **_kwargs): val = apply(eventsc.wxEvent_GetEventObject,(self,) + _args, _kwargs) return val @@ -1095,9 +1098,12 @@ class wxPyEventPtr(wxEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxPyEvent(self) + def __del__(self, delfunc=eventsc.delete_wxPyEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetSelf(self, *_args, **_kwargs): val = apply(eventsc.wxPyEvent_SetSelf,(self,) + _args, _kwargs) return val @@ -1119,9 +1125,12 @@ class wxPyCommandEventPtr(wxCommandEventPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,eventsc=eventsc): - if self.thisown == 1 : - eventsc.delete_wxPyCommandEvent(self) + def __del__(self, delfunc=eventsc.delete_wxPyCommandEvent): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetSelf(self, *_args, **_kwargs): val = apply(eventsc.wxPyCommandEvent_SetSelf,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/filesys.cpp b/wxPython/src/msw/filesys.cpp index 4cde3a4675..1d34534b48 100644 --- a/wxPython/src/msw/filesys.cpp +++ b/wxPython/src/msw/filesys.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -170,8 +169,7 @@ static PyObject *_wrap___wxMemoryFSHandler_AddFile_wxImage(PyObject *self, PyObj return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of __wxMemoryFSHandler_AddFile_wxImage. Expected _wxImage_p."); return NULL; } @@ -209,8 +207,7 @@ static PyObject *_wrap___wxMemoryFSHandler_AddFile_wxBitmap(PyObject *self, PyOb return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of __wxMemoryFSHandler_AddFile_wxBitmap. Expected _wxBitmap_p."); return NULL; } @@ -391,7 +388,7 @@ static PyObject *_wrap_wxFSFile_GetStream(PyObject *self, PyObject *args, PyObje if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -423,7 +420,7 @@ static PyObject *_wrap_wxFSFile_GetMimeType(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -458,7 +455,7 @@ static PyObject *_wrap_wxFSFile_GetLocation(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -493,7 +490,7 @@ static PyObject *_wrap_wxFSFile_GetAnchor(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -681,8 +678,7 @@ static PyObject *_wrap_wxFileSystemHandler_OpenFile(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileSystemHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -740,7 +736,7 @@ static PyObject *_wrap_wxFileSystemHandler_FindFirst(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -781,7 +777,7 @@ static PyObject *_wrap_wxFileSystemHandler_FindNext(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -825,7 +821,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetProtocol(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -873,7 +869,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetLeftLocation(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -921,7 +917,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetAnchor(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -969,7 +965,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetRightLocation(PyObject *self, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1017,7 +1013,7 @@ static PyObject *_wrap_wxFileSystemHandler_GetMimeTypeFromExt(PyObject *self, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1134,7 +1130,7 @@ static PyObject *_wrap_wxFileSystem_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1218,7 +1214,7 @@ static PyObject *_wrap_wxFileSystem_FindFirst(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1259,7 +1255,7 @@ static PyObject *_wrap_wxFileSystem_FindNext(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1419,8 +1415,7 @@ static PyObject *_wrap_wxInternetFSHandler_OpenFile(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxInternetFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1548,8 +1543,7 @@ static PyObject *_wrap_wxZipFSHandler_OpenFile(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxZipFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1607,7 +1601,7 @@ static PyObject *_wrap_wxZipFSHandler_FindFirst(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1648,7 +1642,7 @@ static PyObject *_wrap_wxZipFSHandler_FindNext(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1792,8 +1786,7 @@ static PyObject *_wrap_wxMemoryFSHandler_OpenFile(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileSystem_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryFSHandler_OpenFile. Expected _wxFileSystem_p."); return NULL; } @@ -1851,7 +1844,7 @@ static PyObject *_wrap_wxMemoryFSHandler_FindFirst(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1892,7 +1885,7 @@ static PyObject *_wrap_wxMemoryFSHandler_FindNext(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/msw/filesys.py b/wxPython/src/msw/filesys.py index d1d52ee1fe..8950e6059b 100644 --- a/wxPython/src/msw/filesys.py +++ b/wxPython/src/msw/filesys.py @@ -13,13 +13,12 @@ from fonts import * from streams import * import wx -import string import types def wxMemoryFSHandler_AddFile(filename, a, b=''): - if isinstance(a, wxImage): + if wx.wxPy_isinstance(a, (wxImage, wxImagePtr)): __wxMemoryFSHandler_AddFile_wxImage(filename, a, b) - elif isinstance(a, wxBitmap): + elif wx.wxPy_isinstance(a, (wxBitmap, wxBitmapPtr)): __wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b) elif type(a) == types.StringType: #__wxMemoryFSHandler_AddFile_wxString(filename, a) diff --git a/wxPython/src/msw/fonts.cpp b/wxPython/src/msw/fonts.cpp index ed567c86b6..1a1754a60d 100644 --- a/wxPython/src/msw/fonts.cpp +++ b/wxPython/src/msw/fonts.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -93,6 +92,32 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { // Put some wx default wxChar* values into wxStrings. static const wxString wxPyEmptyString(wxT("")); +// Fix some link errors... Remove this when these methods get real implementations... +#if defined(__WXGTK__) || defined(__WXX11__) +#if wxUSE_PANGO +void wxNativeFontInfo::SetPointSize(int pointsize) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetStyle(wxFontStyle style) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetWeight(wxFontWeight weight) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined)) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFaceName(wxString facename) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetFamily(wxFontFamily family) + { wxFAIL_MSG( _T("not implemented") ); } + +void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) + { wxFAIL_MSG( _T("not implemented") ); } +#endif +#endif + class wxPyFontEnumerator : public wxFontEnumerator { public: wxPyFontEnumerator() {} @@ -158,7 +183,7 @@ static PyObject *_wrap_wxGetTranslation(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -365,7 +390,7 @@ static PyObject *_wrap_wxNativeFontInfo_GetFaceName(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -712,7 +737,7 @@ static PyObject *_wrap_wxNativeFontInfo_ToString(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -751,7 +776,7 @@ static PyObject *_wrap_wxNativeFontInfo___str__(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -827,7 +852,7 @@ static PyObject *_wrap_wxNativeFontInfo_ToUserString(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1105,7 +1130,7 @@ static PyObject *_wrap_wxFontMapper_GetEncodingName(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1133,7 +1158,7 @@ static PyObject *_wrap_wxFontMapper_GetEncodingDescription(PyObject *self, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1312,7 +1337,7 @@ static PyObject *_wrap_wxFontMapper_GetDefaultConfigPath(PyObject *self, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1388,8 +1413,7 @@ static PyObject *_wrap_new_wxFontFromNativeInfo(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxFontFromNativeInfo",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxNativeFontInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxFontFromNativeInfo. Expected _wxNativeFontInfo_p."); return NULL; } @@ -1410,6 +1434,56 @@ static PyObject *_wrap_new_wxFontFromNativeInfo(PyObject *self, PyObject *args, return _resultobj; } +static wxFont * wxFont_wxFontFromNativeInfoString(wxFont *self,const wxString & info) { + wxNativeFontInfo nfi; + nfi.FromString(info); + return new wxFont(nfi); + } +static PyObject *_wrap_wxFont_wxFontFromNativeInfoString(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _result; + wxFont * _arg0; + wxString * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","info", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxFont_wxFontFromNativeInfoString",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_wxFontFromNativeInfoString. Expected _wxFont_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxFont *)wxFont_wxFontFromNativeInfoString(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxFont_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + #define delete_wxFont(_swigobj) (delete _swigobj) static PyObject *_wrap_delete_wxFont(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1632,7 +1706,7 @@ static PyObject *_wrap_wxFont_GetFaceName(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1760,7 +1834,7 @@ static PyObject *_wrap_wxFont_GetNativeFontInfoDesc(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1797,7 +1871,7 @@ static PyObject *_wrap_wxFont_GetNativeFontInfoUserDesc(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2043,8 +2117,7 @@ static PyObject *_wrap_wxFont_SetNativeFontInfo(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxNativeFontInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxNativeFontInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFont_SetNativeFontInfo. Expected _wxNativeFontInfo_p."); return NULL; } @@ -2125,7 +2198,7 @@ static PyObject *_wrap_wxFont_GetFamilyString(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2162,7 +2235,7 @@ static PyObject *_wrap_wxFont_GetStyleString(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2199,7 +2272,7 @@ static PyObject *_wrap_wxFont_GetWeightString(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2210,6 +2283,65 @@ static PyObject *_wrap_wxFont_GetWeightString(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxFont_SetNoAntiAliasing(_swigobj,_swigarg0) (_swigobj->SetNoAntiAliasing(_swigarg0)) +static PyObject *_wrap_wxFont_SetNoAntiAliasing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxFont * _arg0; + bool _arg1 = (bool ) TRUE; + PyObject * _argo0 = 0; + int tempbool1 = (int) TRUE; + char *_kwnames[] = { "self","no", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxFont_SetNoAntiAliasing",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_SetNoAntiAliasing. Expected _wxFont_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxFont_SetNoAntiAliasing(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxFont_GetNoAntiAliasing(_swigobj) (_swigobj->GetNoAntiAliasing()) +static PyObject *_wrap_wxFont_GetNoAntiAliasing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxFont * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxFont_GetNoAntiAliasing",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFont_GetNoAntiAliasing. Expected _wxFont_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxFont_GetNoAntiAliasing(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyObject *_wrap_wxFont_GetDefaultEncoding(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxFontEncoding _result; @@ -2735,7 +2867,7 @@ static PyObject *_wrap_wxLanguageInfo_CanonicalName_set(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2773,7 +2905,7 @@ static PyObject *_wrap_wxLanguageInfo_CanonicalName_get(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2814,7 +2946,7 @@ static PyObject *_wrap_wxLanguageInfo_Description_set(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2852,7 +2984,7 @@ static PyObject *_wrap_wxLanguageInfo_Description_get(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2888,75 +3020,6 @@ static PyObject *_wrap_new_wxLocale(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } -#define wxLocale_Init(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->Init(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) -static PyObject *_wrap_wxLocale_Init(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxLocale * _arg0; - wxString * _arg1; - wxString * _arg2 = (wxString *) &wxPyEmptyString; - wxString * _arg3 = (wxString *) &wxPyEmptyString; - bool _arg4 = (bool ) TRUE; - bool _arg5 = (bool ) FALSE; - PyObject * _argo0 = 0; - PyObject * _obj1 = 0; - PyObject * _obj2 = 0; - PyObject * _obj3 = 0; - int tempbool4 = (int) TRUE; - int tempbool5 = (int) FALSE; - char *_kwnames[] = { "self","szName","szShort","szLocale","bLoadDefault","bConvertEncoding", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|OOii:wxLocale_Init",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&tempbool4,&tempbool5)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init. Expected _wxLocale_p."); - return NULL; - } - } -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} - if (_obj2) -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} - if (_obj3) -{ - _arg3 = wxString_in_helper(_obj3); - if (_arg3 == NULL) - return NULL; -} - _arg4 = (bool ) tempbool4; - _arg5 = (bool ) tempbool5; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxLocale_Init(_arg0,*_arg1,*_arg2,*_arg3,_arg4,_arg5); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj1) - delete _arg1; -} -{ - if (_obj2) - delete _arg2; -} -{ - if (_obj3) - delete _arg3; -} - return _resultobj; -} - #define delete_wxLocale(_swigobj) (delete _swigobj) static PyObject *_wrap_delete_wxLocale(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2985,6 +3048,105 @@ static PyObject *_wrap_delete_wxLocale(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxLocale_Init1(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->Init(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) +static PyObject *_wrap_wxLocale_Init1(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxLocale * _arg0; + wxString * _arg1; + wxString * _arg2 = (wxString *) &wxPyEmptyString; + wxString * _arg3 = (wxString *) &wxPyEmptyString; + bool _arg4 = (bool ) TRUE; + bool _arg5 = (bool ) FALSE; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + int tempbool4 = (int) TRUE; + int tempbool5 = (int) FALSE; + char *_kwnames[] = { "self","szName","szShort","szLocale","bLoadDefault","bConvertEncoding", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|OOii:wxLocale_Init1",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&tempbool4,&tempbool5)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init1. Expected _wxLocale_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} + if (_obj2) +{ + _arg2 = wxString_in_helper(_obj2); + if (_arg2 == NULL) + return NULL; +} + if (_obj3) +{ + _arg3 = wxString_in_helper(_obj3); + if (_arg3 == NULL) + return NULL; +} + _arg4 = (bool ) tempbool4; + _arg5 = (bool ) tempbool5; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxLocale_Init1(_arg0,*_arg1,*_arg2,*_arg3,_arg4,_arg5); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); +{ + if (_obj1) + delete _arg1; +} +{ + if (_obj2) + delete _arg2; +} +{ + if (_obj3) + delete _arg3; +} + return _resultobj; +} + +#define wxLocale_Init2(_swigobj,_swigarg0,_swigarg1) (_swigobj->Init(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxLocale_Init2(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxLocale * _arg0; + int _arg1 = (int ) (wxLANGUAGE_DEFAULT); + int _arg2 = (int ) (wxLOCALE_LOAD_DEFAULT)|(wxLOCALE_CONV_ENCODING); + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","language","flags", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|ii:wxLocale_Init2",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLocale_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_Init2. Expected _wxLocale_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxLocale_Init2(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyObject *_wrap_wxLocale_GetSystemLanguage(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; int _result; @@ -3037,7 +3199,7 @@ static PyObject *_wrap_wxLocale_GetSystemEncodingName(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3102,7 +3264,7 @@ static PyObject *_wrap_wxLocale_GetLocale(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3167,7 +3329,7 @@ static PyObject *_wrap_wxLocale_GetSysName(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3204,7 +3366,7 @@ static PyObject *_wrap_wxLocale_GetCanonicalName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3358,8 +3520,7 @@ static PyObject *_wrap_wxLocale_AddLanguage(PyObject *self, PyObject *args, PyOb if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxLocale_AddLanguage",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLanguageInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxLanguageInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxLocale_AddLanguage. Expected _wxLanguageInfo_p."); return NULL; } @@ -3416,7 +3577,7 @@ static PyObject *_wrap_wxLocale_GetString(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3462,7 +3623,7 @@ static PyObject *_wrap_wxLocale_GetName(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3596,7 +3757,7 @@ static PyObject *_wrap_wxEncodingConverter_Convert(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3686,8 +3847,9 @@ static PyMethodDef fontscMethods[] = { { "wxLocale_GetSystemEncodingName", (PyCFunction) _wrap_wxLocale_GetSystemEncodingName, METH_VARARGS | METH_KEYWORDS }, { "wxLocale_GetSystemEncoding", (PyCFunction) _wrap_wxLocale_GetSystemEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxLocale_GetSystemLanguage", (PyCFunction) _wrap_wxLocale_GetSystemLanguage, METH_VARARGS | METH_KEYWORDS }, + { "wxLocale_Init2", (PyCFunction) _wrap_wxLocale_Init2, METH_VARARGS | METH_KEYWORDS }, + { "wxLocale_Init1", (PyCFunction) _wrap_wxLocale_Init1, METH_VARARGS | METH_KEYWORDS }, { "delete_wxLocale", (PyCFunction) _wrap_delete_wxLocale, METH_VARARGS | METH_KEYWORDS }, - { "wxLocale_Init", (PyCFunction) _wrap_wxLocale_Init, METH_VARARGS | METH_KEYWORDS }, { "new_wxLocale", (PyCFunction) _wrap_new_wxLocale, METH_VARARGS | METH_KEYWORDS }, { "wxLanguageInfo_Description_get", (PyCFunction) _wrap_wxLanguageInfo_Description_get, METH_VARARGS | METH_KEYWORDS }, { "wxLanguageInfo_Description_set", (PyCFunction) _wrap_wxLanguageInfo_Description_set, METH_VARARGS | METH_KEYWORDS }, @@ -3708,6 +3870,8 @@ static PyMethodDef fontscMethods[] = { { "wxFontList_AddFont", (PyCFunction) _wrap_wxFontList_AddFont, METH_VARARGS | METH_KEYWORDS }, { "wxFont_SetDefaultEncoding", (PyCFunction) _wrap_wxFont_SetDefaultEncoding, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetDefaultEncoding", (PyCFunction) _wrap_wxFont_GetDefaultEncoding, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_GetNoAntiAliasing", (PyCFunction) _wrap_wxFont_GetNoAntiAliasing, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_SetNoAntiAliasing", (PyCFunction) _wrap_wxFont_SetNoAntiAliasing, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetWeightString", (PyCFunction) _wrap_wxFont_GetWeightString, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetStyleString", (PyCFunction) _wrap_wxFont_GetStyleString, METH_VARARGS | METH_KEYWORDS }, { "wxFont_GetFamilyString", (PyCFunction) _wrap_wxFont_GetFamilyString, METH_VARARGS | METH_KEYWORDS }, @@ -3733,6 +3897,7 @@ static PyMethodDef fontscMethods[] = { { "wxFont_GetPointSize", (PyCFunction) _wrap_wxFont_GetPointSize, METH_VARARGS | METH_KEYWORDS }, { "wxFont_Ok", (PyCFunction) _wrap_wxFont_Ok, METH_VARARGS | METH_KEYWORDS }, { "delete_wxFont", (PyCFunction) _wrap_delete_wxFont, METH_VARARGS | METH_KEYWORDS }, + { "wxFont_wxFontFromNativeInfoString", (PyCFunction) _wrap_wxFont_wxFontFromNativeInfoString, METH_VARARGS | METH_KEYWORDS }, { "new_wxFontFromNativeInfo", (PyCFunction) _wrap_new_wxFontFromNativeInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxFont", (PyCFunction) _wrap_new_wxFont, METH_VARARGS | METH_KEYWORDS }, { "wxFontMapper_GetDefaultConfigPath", (PyCFunction) _wrap_wxFontMapper_GetDefaultConfigPath, METH_VARARGS | METH_KEYWORDS }, @@ -3948,6 +4113,10 @@ SWIGEXPORT(void) initfontsc() { PyDict_SetItemString(d,"wxFONTENCODING_CP12_MAX", PyInt_FromLong((long) wxFONTENCODING_CP12_MAX)); PyDict_SetItemString(d,"wxFONTENCODING_UTF7", PyInt_FromLong((long) wxFONTENCODING_UTF7)); PyDict_SetItemString(d,"wxFONTENCODING_UTF8", PyInt_FromLong((long) wxFONTENCODING_UTF8)); + PyDict_SetItemString(d,"wxFONTENCODING_GB2312", PyInt_FromLong((long) wxFONTENCODING_GB2312)); + PyDict_SetItemString(d,"wxFONTENCODING_BIG5", PyInt_FromLong((long) wxFONTENCODING_BIG5)); + PyDict_SetItemString(d,"wxFONTENCODING_SHIFT_JIS", PyInt_FromLong((long) wxFONTENCODING_SHIFT_JIS)); + PyDict_SetItemString(d,"wxFONTENCODING_EUC_JP", PyInt_FromLong((long) wxFONTENCODING_EUC_JP)); PyDict_SetItemString(d,"wxFONTENCODING_UNICODE", PyInt_FromLong((long) wxFONTENCODING_UNICODE)); PyDict_SetItemString(d,"wxFONTENCODING_MAX", PyInt_FromLong((long) wxFONTENCODING_MAX)); PyDict_SetItemString(d,"wxLANGUAGE_DEFAULT", PyInt_FromLong((long) wxLANGUAGE_DEFAULT)); diff --git a/wxPython/src/msw/fonts.py b/wxPython/src/msw/fonts.py index a52f613181..4f2f474f91 100644 --- a/wxPython/src/msw/fonts.py +++ b/wxPython/src/msw/fonts.py @@ -80,9 +80,12 @@ class wxFontMapperPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFontMapper(self) + def __del__(self, delfunc=fontsc.delete_wxFontMapper): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetAltForEncoding(self, *_args, **_kwargs): val = apply(fontsc.wxFontMapper_GetAltForEncoding,(self,) + _args, _kwargs) return val @@ -118,9 +121,16 @@ class wxFontPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFont(self) + def wxFontFromNativeInfoString(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_wxFontFromNativeInfoString,(self,) + _args, _kwargs) + if val: val = wxFontPtr(val) ; val.thisown = 1 + return val + def __del__(self, delfunc=fontsc.delete_wxFont): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(fontsc.wxFont_Ok,(self,) + _args, _kwargs) return val @@ -194,6 +204,12 @@ class wxFontPtr(wxObjectPtr): def GetWeightString(self, *_args, **_kwargs): val = apply(fontsc.wxFont_GetWeightString,(self,) + _args, _kwargs) return val + def SetNoAntiAliasing(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_SetNoAntiAliasing,(self,) + _args, _kwargs) + return val + def GetNoAntiAliasing(self, *_args, **_kwargs): + val = apply(fontsc.wxFont_GetNoAntiAliasing,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxFont instance at %s>" % (self.this,) class wxFont(wxFontPtr): @@ -239,9 +255,12 @@ class wxFontEnumeratorPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxFontEnumerator(self) + def __del__(self, delfunc=fontsc.delete_wxFontEnumerator): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def _setCallbackInfo(self, *_args, **_kwargs): val = apply(fontsc.wxFontEnumerator__setCallbackInfo,(self,) + _args, _kwargs) return val @@ -304,12 +323,18 @@ class wxLocalePtr : def __init__(self,this): self.this = this self.thisown = 0 - def Init(self, *_args, **_kwargs): - val = apply(fontsc.wxLocale_Init,(self,) + _args, _kwargs) + def __del__(self, delfunc=fontsc.delete_wxLocale): + if self.thisown == 1: + try: + delfunc(self) + except: + pass + def Init1(self, *_args, **_kwargs): + val = apply(fontsc.wxLocale_Init1,(self,) + _args, _kwargs) + return val + def Init2(self, *_args, **_kwargs): + val = apply(fontsc.wxLocale_Init2,(self,) + _args, _kwargs) return val - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxLocale(self) def IsOk(self, *_args, **_kwargs): val = apply(fontsc.wxLocale_IsOk,(self,) + _args, _kwargs) return val @@ -339,6 +364,14 @@ class wxLocalePtr : return val def __repr__(self): return "<C wxLocale instance at %s>" % (self.this,) + + def Init(self, *_args, **_kwargs): + if type(_args[0]) in [type(''), type(u'')]: + val = apply(self.Init1, _args, _kwargs) + else: + val = apply(self.Init2, _args, _kwargs) + return val + class wxLocale(wxLocalePtr): def __init__(self,*_args,**_kwargs): self.this = apply(fontsc.new_wxLocale,_args,_kwargs) @@ -351,9 +384,12 @@ class wxEncodingConverterPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,fontsc=fontsc): - if self.thisown == 1 : - fontsc.delete_wxEncodingConverter(self) + def __del__(self, delfunc=fontsc.delete_wxEncodingConverter): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Init(self, *_args, **_kwargs): val = apply(fontsc.wxEncodingConverter_Init,(self,) + _args, _kwargs) return val @@ -483,6 +519,10 @@ wxFONTENCODING_CP1257 = fontsc.wxFONTENCODING_CP1257 wxFONTENCODING_CP12_MAX = fontsc.wxFONTENCODING_CP12_MAX wxFONTENCODING_UTF7 = fontsc.wxFONTENCODING_UTF7 wxFONTENCODING_UTF8 = fontsc.wxFONTENCODING_UTF8 +wxFONTENCODING_GB2312 = fontsc.wxFONTENCODING_GB2312 +wxFONTENCODING_BIG5 = fontsc.wxFONTENCODING_BIG5 +wxFONTENCODING_SHIFT_JIS = fontsc.wxFONTENCODING_SHIFT_JIS +wxFONTENCODING_EUC_JP = fontsc.wxFONTENCODING_EUC_JP wxFONTENCODING_UNICODE = fontsc.wxFONTENCODING_UNICODE wxFONTENCODING_MAX = fontsc.wxFONTENCODING_MAX wxLANGUAGE_DEFAULT = fontsc.wxLANGUAGE_DEFAULT diff --git a/wxPython/src/msw/frames.cpp b/wxPython/src/msw/frames.cpp index 1a9e0c9c15..4c967a909b 100644 --- a/wxPython/src/msw/frames.cpp +++ b/wxPython/src/msw/frames.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -498,8 +497,7 @@ static PyObject *_wrap_wxTopLevelWindow_SetIcon(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTopLevelWindow_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -535,8 +533,7 @@ static PyObject *_wrap_wxTopLevelWindow_SetIcons(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIconBundle_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIconBundle_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTopLevelWindow_SetIcons. Expected _wxIconBundle_p."); return NULL; } @@ -677,7 +674,7 @@ static PyObject *_wrap_wxTopLevelWindow_GetTitle(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -999,35 +996,6 @@ static PyObject *_wrap_wxFrame_GetMenuBar(PyObject *self, PyObject *args, PyObje return _resultobj; } -#define wxFrame_Command(_swigobj,_swigarg0) (_swigobj->Command(_swigarg0)) -static PyObject *_wrap_wxFrame_Command(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxFrame * _arg0; - int _arg1; - PyObject * _argo0 = 0; - char *_kwnames[] = { "self","id", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxFrame_Command",_kwnames,&_argo0,&_arg1)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFrame_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxFrame_Command. Expected _wxFrame_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxFrame_Command(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - #define wxFrame_ProcessCommand(_swigobj,_swigarg0) (_swigobj->ProcessCommand(_swigarg0)) static PyObject *_wrap_wxFrame_ProcessCommand(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2314,8 +2282,7 @@ static PyObject *_wrap_new_wxSplashScreenWindow(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOi|OOl:new_wxSplashScreenWindow",_kwnames,&_argo0,&_argo1,&_arg2,&_obj3,&_obj4,&_arg5)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxSplashScreenWindow. Expected _wxBitmap_p."); return NULL; } @@ -2375,8 +2342,7 @@ static PyObject *_wrap_wxSplashScreenWindow_SetBitmap(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSplashScreenWindow_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -2493,8 +2459,7 @@ static PyObject *_wrap_new_wxSplashScreen(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OliOi|OOl:new_wxSplashScreen",_kwnames,&_argo0,&_arg1,&_arg2,&_argo3,&_arg4,&_obj5,&_obj6,&_arg7)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxSplashScreen. Expected _wxBitmap_p."); return NULL; } @@ -2663,7 +2628,6 @@ static PyMethodDef framescMethods[] = { { "wxFrame_GetStatusBar", (PyCFunction) _wrap_wxFrame_GetStatusBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_CreateStatusBar", (PyCFunction) _wrap_wxFrame_CreateStatusBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_ProcessCommand", (PyCFunction) _wrap_wxFrame_ProcessCommand, METH_VARARGS | METH_KEYWORDS }, - { "wxFrame_Command", (PyCFunction) _wrap_wxFrame_Command, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_GetMenuBar", (PyCFunction) _wrap_wxFrame_GetMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_SetMenuBar", (PyCFunction) _wrap_wxFrame_SetMenuBar, METH_VARARGS | METH_KEYWORDS }, { "wxFrame_GetClientAreaOrigin", (PyCFunction) _wrap_wxFrame_GetClientAreaOrigin, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/frames.py b/wxPython/src/msw/frames.py index 26b4e08cff..0fae1a5d20 100644 --- a/wxPython/src/msw/frames.py +++ b/wxPython/src/msw/frames.py @@ -95,9 +95,6 @@ class wxFramePtr(wxTopLevelWindowPtr): def GetMenuBar(self, *_args, **_kwargs): val = apply(framesc.wxFrame_GetMenuBar,(self,) + _args, _kwargs) return val - def Command(self, *_args, **_kwargs): - val = apply(framesc.wxFrame_Command,(self,) + _args, _kwargs) - return val def ProcessCommand(self, *_args, **_kwargs): val = apply(framesc.wxFrame_ProcessCommand,(self,) + _args, _kwargs) return val @@ -145,6 +142,7 @@ class wxFramePtr(wxTopLevelWindowPtr): return val def __repr__(self): return "<C wxFrame instance at %s>" % (self.this,) + Command = ProcessCommand class wxFrame(wxFramePtr): def __init__(self,*_args,**_kwargs): self.this = apply(framesc.new_wxFrame,_args,_kwargs) diff --git a/wxPython/src/msw/gdi.cpp b/wxPython/src/msw/gdi.cpp index 94f27d89b8..6ce10590a9 100644 --- a/wxPython/src/msw/gdi.cpp +++ b/wxPython/src/msw/gdi.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -183,6 +182,14 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { // Alternate 'constructor' wxCursor* wxPyStockCursor(int id) { return new wxCursor(id); + } + + wxCursor* wxCursorFromImage(const wxImage& image) { + #ifndef __WXMAC__ + return new wxCursor(image); + #else + return NULL; + #endif } // Alternate 'constructor' wxColour* wxNamedColour(const wxString& colorName) { @@ -348,8 +355,7 @@ static PyObject *_wrap_wxBitmapFromIcon(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxBitmapFromIcon",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapFromIcon. Expected _wxIcon_p."); return NULL; } @@ -418,8 +424,7 @@ static PyObject *_wrap_wxMaskColour(PyObject *self, PyObject *args, PyObject *kw if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxMaskColour",_kwnames,&_argo0,&_obj1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMaskColour. Expected _wxBitmap_p."); return NULL; } @@ -512,8 +517,7 @@ static PyObject *_wrap_wxIconFromBitmap(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxIconFromBitmap",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxIconFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -560,6 +564,39 @@ static PyObject *_wrap_wxStockCursor(PyObject *self, PyObject *args, PyObject *k return _resultobj; } +static PyObject *_wrap_wxCursorFromImage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxCursor * _result; + wxImage * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "image", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxCursorFromImage",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxCursorFromImage. Expected _wxImage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxCursor *)wxCursorFromImage(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxCursor_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + static PyObject *_wrap_wxNamedColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxColour * _result; @@ -1767,8 +1804,7 @@ static PyObject *_wrap_wxBitmap_SetPalette(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_SetPalette. Expected _wxPalette_p."); return NULL; } @@ -2135,8 +2171,7 @@ static PyObject *_wrap_wxBitmap_CopyFromIcon(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_CopyFromIcon. Expected _wxIcon_p."); return NULL; } @@ -2172,8 +2207,7 @@ static PyObject *_wrap_wxBitmap_CopyFromCursor(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBitmap_CopyFromCursor. Expected _wxCursor_p."); return NULL; } @@ -2266,8 +2300,7 @@ static PyObject *_wrap_new_wxMask(PyObject *self, PyObject *args, PyObject *kwar if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxMask",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxMask. Expected _wxBitmap_p."); return NULL; } @@ -2752,8 +2785,7 @@ static PyObject *_wrap_wxIcon_CopyFromBitmap(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxIcon_CopyFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -2846,8 +2878,7 @@ static PyObject *_wrap_new_wxIconBundleFromIcon(PyObject *self, PyObject *args, if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxIconBundleFromIcon",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxIconBundleFromIcon. Expected _wxIcon_p."); return NULL; } @@ -2916,8 +2947,7 @@ static PyObject *_wrap_wxIconBundle_AddIcon(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxIconBundle_AddIcon. Expected _wxIcon_p."); return NULL; } @@ -3597,9 +3627,17 @@ static PyObject *_wrap_wxColour_Set(PyObject *self, PyObject *args, PyObject *kw static PyObject * wxColour_Get(wxColour *self) { PyObject* rv = PyTuple_New(3); - PyTuple_SetItem(rv, 0, PyInt_FromLong(self->Red())); - PyTuple_SetItem(rv, 1, PyInt_FromLong(self->Green())); - PyTuple_SetItem(rv, 2, PyInt_FromLong(self->Blue())); + int red = -1; + int green = -1; + int blue = -1; + if (self->Ok()) { + red = self->Red(); + green = self->Green(); + blue = self->Blue(); + } + PyTuple_SetItem(rv, 0, PyInt_FromLong(red)); + PyTuple_SetItem(rv, 1, PyInt_FromLong(green)); + PyTuple_SetItem(rv, 2, PyInt_FromLong(blue)); return rv; } static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args, PyObject *kwargs) { @@ -3630,6 +3668,84 @@ static PyObject *_wrap_wxColour_Get(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } +static bool wxColour___eq__(wxColour *self,PyObject * obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } +static PyObject *_wrap_wxColour___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxColour * _arg0; + PyObject * _arg1; + wxColour temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxColour___eq__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxColour_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxColour___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxColour___ne__(wxColour *self,PyObject * obj) { + wxColour tmp; + wxColour* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxColour___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxColour * _arg0; + PyObject * _arg1; + wxColour temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxColour___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxColour_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxColour___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static void *SwigwxColourDatabaseTowxObject(void *ptr) { wxColourDatabase *src; wxObject *dest; @@ -3718,7 +3834,7 @@ static PyObject *_wrap_wxColourDatabase_FindName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4337,8 +4453,7 @@ static PyObject *_wrap_wxPen_SetStipple(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPen_SetStipple. Expected _wxBitmap_p."); return NULL; } @@ -4902,8 +5017,7 @@ static PyObject *_wrap_wxBrush_SetStipple(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxBrush_SetStipple. Expected _wxBitmap_p."); return NULL; } @@ -5171,13 +5285,13 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args, PyObject *kwarg PyObject * _resultobj; bool _result; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; wxDC * _arg5; - long _arg6; - long _arg7; + wxCoord _arg6; + wxCoord _arg7; int _arg8 = (int ) wxCOPY; int _arg9 = (int ) FALSE; PyObject * _argo0 = 0; @@ -5185,7 +5299,7 @@ static PyObject *_wrap_wxDC_Blit(PyObject *self, PyObject *args, PyObject *kwarg char *_kwnames[] = { "self","xdest","ydest","width","height","source","xsrc","ysrc","logicalFunc","useMask", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OllllOll|ii:wxDC_Blit",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8,&_arg9)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiiiOii|ii:wxDC_Blit",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_argo5,&_arg6,&_arg7,&_arg8,&_arg9)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5243,13 +5357,13 @@ static PyObject *_wrap_wxDC_Clear(PyObject *self, PyObject *args, PyObject *kwar static PyObject *_wrap_wxDC_CrossHair(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_CrossHair",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_CrossHair",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5300,14 +5414,14 @@ static PyObject *_wrap_wxDC_DestroyClippingRegion(PyObject *self, PyObject *args #define wxDC_DeviceToLogicalX(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalX(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalX",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalX",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5318,25 +5432,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalX(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalX(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalXRel(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalXRel(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalXRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalXRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5347,25 +5461,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalXRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalXRel(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalXRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalY(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalY(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalY",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalY",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5376,25 +5490,25 @@ static PyObject *_wrap_wxDC_DeviceToLogicalY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalY(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalY(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_DeviceToLogicalYRel(_swigobj,_swigarg0) (_swigobj->DeviceToLogicalYRel(_swigarg0)) static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_DeviceToLogicalYRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_DeviceToLogicalYRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5405,11 +5519,11 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_DeviceToLogicalYRel(_arg0,_arg1); + _result = (wxCoord )wxDC_DeviceToLogicalYRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -5417,17 +5531,17 @@ static PyObject *_wrap_wxDC_DeviceToLogicalYRel(PyObject *self, PyObject *args, static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5; - long _arg6; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5; + wxCoord _arg6; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x1","y1","x2","y2","xc","yc", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollllll:wxDC_DrawArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiiiii:wxDC_DrawArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5451,14 +5565,14 @@ static PyObject *_wrap_wxDC_DrawArc(PyObject *self, PyObject *args, PyObject *kw static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","radius", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Olll:wxDC_DrawCircle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiii:wxDC_DrawCircle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5482,15 +5596,15 @@ static PyObject *_wrap_wxDC_DrawCircle(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawEllipse",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawEllipse",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5514,17 +5628,17 @@ static PyObject *_wrap_wxDC_DrawEllipse(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawEllipticArc(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5; - long _arg6; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5; + wxCoord _arg6; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height","start","end", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollllll:wxDC_DrawEllipticArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiiiii:wxDC_DrawEllipticArc",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5,&_arg6)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5549,14 +5663,14 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxDC * _arg0; wxIcon * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; PyObject * _argo1 = 0; char *_kwnames[] = { "self","icon","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll:wxDC_DrawIcon",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxDC_DrawIcon",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5566,8 +5680,7 @@ static PyObject *_wrap_wxDC_DrawIcon(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawIcon. Expected _wxIcon_p."); return NULL; } @@ -5670,8 +5783,7 @@ static PyObject *_wrap_wxDC_DrawImageLabel(PyObject *self, PyObject *args, PyObj return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDC_DrawImageLabel. Expected _wxBitmap_p."); return NULL; } @@ -5700,15 +5812,15 @@ static PyObject *_wrap_wxDC_DrawImageLabel(PyObject *self, PyObject *args, PyObj static PyObject *_wrap_wxDC_DrawLine(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x1","y1","x2","y2", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawLine",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawLine",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5734,15 +5846,15 @@ static PyObject *_wrap_wxDC_DrawLines(PyObject *self, PyObject *args, PyObject * wxDC * _arg0; int _arg1; wxPoint * _arg2; - long _arg3 = (long ) 0; - long _arg4 = (long ) 0; + wxCoord _arg3 = (wxCoord ) 0; + wxCoord _arg4 = (wxCoord ) 0; PyObject * _argo0 = 0; int NPOINTS; PyObject * _obj2 = 0; char *_kwnames[] = { "self","points","xoffset","yoffset", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|ll:wxDC_DrawLines",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|ii:wxDC_DrawLines",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5781,8 +5893,8 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject wxDC * _arg0; int _arg1; wxPoint * _arg2; - long _arg3 = (long ) 0; - long _arg4 = (long ) 0; + wxCoord _arg3 = (wxCoord ) 0; + wxCoord _arg4 = (wxCoord ) 0; int _arg5 = (int ) wxODDEVEN_RULE; PyObject * _argo0 = 0; int NPOINTS; @@ -5790,7 +5902,7 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject char *_kwnames[] = { "self","points","xoffset","yoffset","fill_style", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|lli:wxDC_DrawPolygon",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|iii:wxDC_DrawPolygon",_kwnames,&_argo0,&_obj2,&_arg3,&_arg4,&_arg5)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5827,13 +5939,13 @@ static PyObject *_wrap_wxDC_DrawPolygon(PyObject *self, PyObject *args, PyObject static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_DrawPoint",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_DrawPoint",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5857,15 +5969,15 @@ static PyObject *_wrap_wxDC_DrawPoint(PyObject *self, PyObject *args, PyObject * static PyObject *_wrap_wxDC_DrawRectangle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_DrawRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_DrawRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -5967,16 +6079,16 @@ static PyObject *_wrap_wxDC_DrawRotatedText(PyObject *self, PyObject *args, PyOb static PyObject *_wrap_wxDC_DrawRoundedRectangle(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; - long _arg5 = (long ) 20; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; + wxCoord _arg5 = (wxCoord ) 20; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height","radius", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll|l:wxDC_DrawRoundedRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii|i:wxDC_DrawRoundedRectangle",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4,&_arg5)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6046,14 +6158,14 @@ static PyObject *_wrap_wxDC_DrawText(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; char *_kwnames[] = { "self","text","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll:wxDC_DrawText",_kwnames,&_argo0,&_obj1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxDC_DrawText",_kwnames,&_argo0,&_obj1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6171,8 +6283,8 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args, PyObject * PyObject * _resultobj; bool _result; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; wxColour * _arg3; int _arg4 = (int ) wxFLOOD_SURFACE; PyObject * _argo0 = 0; @@ -6181,7 +6293,7 @@ static PyObject *_wrap_wxDC_FloodFill(PyObject *self, PyObject *args, PyObject * char *_kwnames[] = { "self","x","y","colour","style", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OllO|i:wxDC_FloodFill",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiO|i:wxDC_FloodFill",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6268,7 +6380,7 @@ static PyObject *_wrap_wxDC_GetBrush(PyObject *self, PyObject *args, PyObject *k #define wxDC_GetCharHeight(_swigobj) (_swigobj->GetCharHeight()) static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6285,18 +6397,18 @@ static PyObject *_wrap_wxDC_GetCharHeight(PyObject *self, PyObject *args, PyObje } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_GetCharHeight(_arg0); + _result = (wxCoord )wxDC_GetCharHeight(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_GetCharWidth(_swigobj) (_swigobj->GetCharWidth()) static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6313,11 +6425,11 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_GetCharWidth(_arg0); + _result = (wxCoord )wxDC_GetCharWidth(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -6325,14 +6437,14 @@ static PyObject *_wrap_wxDC_GetCharWidth(PyObject *self, PyObject *args, PyObjec static PyObject *_wrap_wxDC_GetClippingBox(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long * _arg1; - long temp; - long * _arg2; - long temp0; - long * _arg3; - long temp1; - long * _arg4; - long temp2; + wxCoord * _arg1; + int temp; + wxCoord * _arg2; + int temp0; + wxCoord * _arg3; + int temp1; + wxCoord * _arg4; + int temp2; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -6581,7 +6693,7 @@ static PyObject *_wrap_wxDC_GetPen(PyObject *self, PyObject *args, PyObject *kwa return _resultobj; } -static wxColour * wxDC_GetPixel(wxDC *self,long x,long y) { +static wxColour * wxDC_GetPixel(wxDC *self,wxCoord x,wxCoord y) { wxColour* wc = new wxColour(); self->GetPixel(x, y, wc); return wc; @@ -6590,14 +6702,14 @@ static PyObject *_wrap_wxDC_GetPixel(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; wxColour * _result; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_GetPixel",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_GetPixel",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -6765,10 +6877,10 @@ static PyObject *_wrap_wxDC_GetTextExtent(PyObject *self, PyObject *args, PyObje PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long * _arg2; - long temp; - long * _arg3; - long temp0; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; PyObject * _argo0 = 0; PyObject * _obj1 = 0; char *_kwnames[] = { "self","string", NULL }; @@ -6824,14 +6936,14 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args, Py PyObject * _resultobj; wxDC * _arg0; wxString * _arg1; - long * _arg2; - long temp; - long * _arg3; - long temp0; - long * _arg4; - long temp1; - long * _arg5; - long temp2; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; + wxCoord * _arg4; + int temp1; + wxCoord * _arg5; + int temp2; wxFont * _arg6 = (wxFont *) NULL; PyObject * _argo0 = 0; PyObject * _obj1 = 0; @@ -6907,6 +7019,84 @@ static PyObject *_wrap_wxDC_GetFullTextExtent(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxDC_GetMultiLineTextExtent(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4) (_swigobj->GetMultiLineTextExtent(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)) +static PyObject *_wrap_wxDC_GetMultiLineTextExtent(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxDC * _arg0; + wxString * _arg1; + wxCoord * _arg2; + int temp; + wxCoord * _arg3; + int temp0; + wxCoord * _arg4; + int temp1; + wxFont * _arg5 = (wxFont *) NULL; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _argo5 = 0; + char *_kwnames[] = { "self","text","font", NULL }; + + self = self; +{ + _arg2 = &temp; +} +{ + _arg3 = &temp0; +} +{ + _arg4 = &temp1; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxDC_GetMultiLineTextExtent",_kwnames,&_argo0,&_obj1,&_argo5)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC_GetMultiLineTextExtent. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} + if (_argo5) { + if (_argo5 == Py_None) { _arg5 = NULL; } + else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxFont_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxDC_GetMultiLineTextExtent. Expected _wxFont_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxDC_GetMultiLineTextExtent(_arg0,*_arg1,_arg2,_arg3,_arg4,_arg5); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg3)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg4)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + if (_obj1) + delete _arg1; +} + return _resultobj; +} + #define wxDC_GetTextForeground(_swigobj) (_swigobj->GetTextForeground()) static PyObject *_wrap_wxDC_GetTextForeground(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -6988,14 +7178,14 @@ static PyObject *_wrap_wxDC_GetUserScale(PyObject *self, PyObject *args, PyObjec #define wxDC_LogicalToDeviceX(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceX(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceX",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceX",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7006,25 +7196,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceX(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceX(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceXRel(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceXRel(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceXRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceXRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7035,25 +7225,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceXRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceXRel(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceXRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceY(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceY(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceY",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceY",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7064,25 +7254,25 @@ static PyObject *_wrap_wxDC_LogicalToDeviceY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceY(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceY(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_LogicalToDeviceYRel(_swigobj,_swigarg0) (_swigobj->LogicalToDeviceYRel(_swigarg0)) static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; - long _arg1; + wxCoord _arg1; PyObject * _argo0 = 0; char *_kwnames[] = { "self","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxDC_LogicalToDeviceYRel",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDC_LogicalToDeviceYRel",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7093,18 +7283,18 @@ static PyObject *_wrap_wxDC_LogicalToDeviceYRel(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_LogicalToDeviceYRel(_arg0,_arg1); + _result = (wxCoord )wxDC_LogicalToDeviceYRel(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MaxX(_swigobj) (_swigobj->MaxX()) static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -7121,18 +7311,18 @@ static PyObject *_wrap_wxDC_MaxX(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MaxX(_arg0); + _result = (wxCoord )wxDC_MaxX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MaxY(_swigobj) (_swigobj->MaxY()) static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -7149,18 +7339,18 @@ static PyObject *_wrap_wxDC_MaxY(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MaxY(_arg0); + _result = (wxCoord )wxDC_MaxY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MinX(_swigobj) (_swigobj->MinX()) static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -7177,18 +7367,18 @@ static PyObject *_wrap_wxDC_MinX(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MinX(_arg0); + _result = (wxCoord )wxDC_MinX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxDC_MinY(_swigobj) (_swigobj->MinY()) static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxDC * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -7205,11 +7395,11 @@ static PyObject *_wrap_wxDC_MinY(PyObject *self, PyObject *args, PyObject *kwarg } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxDC_MinY(_arg0); + _result = (wxCoord )wxDC_MinY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -7245,13 +7435,13 @@ static PyObject *_wrap_wxDC_Ok(PyObject *self, PyObject *args, PyObject *kwargs) static PyObject *_wrap_wxDC_SetDeviceOrigin(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxDC_SetDeviceOrigin",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxDC_SetDeviceOrigin",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7291,8 +7481,7 @@ static PyObject *_wrap_wxDC_SetBackground(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBackground. Expected _wxBrush_p."); return NULL; } @@ -7341,15 +7530,15 @@ static PyObject *_wrap_wxDC_SetBackgroundMode(PyObject *self, PyObject *args, Py static PyObject *_wrap_wxDC_SetClippingRegion(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDC * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxDC_SetClippingRegion",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxDC_SetClippingRegion",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7389,8 +7578,7 @@ static PyObject *_wrap_wxDC_SetClippingRegionAsRegion(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetClippingRegionAsRegion. Expected _wxRegion_p."); return NULL; } @@ -7462,8 +7650,7 @@ static PyObject *_wrap_wxDC_SetPalette(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPalette_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPalette. Expected _wxPalette_p."); return NULL; } @@ -7499,8 +7686,7 @@ static PyObject *_wrap_wxDC_SetBrush(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBrush_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetBrush. Expected _wxBrush_p."); return NULL; } @@ -7536,8 +7722,7 @@ static PyObject *_wrap_wxDC_SetFont(PyObject *self, PyObject *args, PyObject *kw } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetFont. Expected _wxFont_p."); return NULL; } @@ -7692,8 +7877,7 @@ static PyObject *_wrap_wxDC_SetPen(PyObject *self, PyObject *args, PyObject *kwa } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPen_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_SetPen. Expected _wxPen_p."); return NULL; } @@ -7883,15 +8067,15 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args, PyObject PyObject * _resultobj; wxDC * _arg0; wxBitmap * _arg1; - long _arg2; - long _arg3; + wxCoord _arg2; + wxCoord _arg3; int _arg4 = (int ) FALSE; PyObject * _argo0 = 0; PyObject * _argo1 = 0; char *_kwnames[] = { "self","bitmap","x","y","useMask", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOll|i:wxDC_DrawBitmap",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii|i:wxDC_DrawBitmap",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -7901,8 +8085,7 @@ static PyObject *_wrap_wxDC_DrawBitmap(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDC_DrawBitmap. Expected _wxBitmap_p."); return NULL; } @@ -8345,91 +8528,8 @@ static PyObject *_wrap_wxDC_GetHDC(PyObject *self, PyObject *args, PyObject *kwa return _resultobj; } -static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyPoints,PyObject * pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyPoints) || PyTuple_Check(pyPoints); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyPoints)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyPoints); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the point coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyPoints, i); - } - else { - obj = PySequence_GetItem(pyPoints, i); - } - if (! _2int_seq_helper(obj, &x1, &y1)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - - // Now draw the point - self->DrawPoint(x1, y1); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; +static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXPoint, pyCoords, pyPens, pyBrushes); } static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -8437,13 +8537,15 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj wxDC * _arg0; PyObject * _arg1; PyObject * _arg2; + PyObject * _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pyPoints","pyPens", NULL }; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDC__DrawPointList",_kwnames,&_argo0,&_obj1,&_obj2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawPointList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -8458,9 +8560,12 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj { _arg2 = _obj2; } +{ + _arg3 = _obj3; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (PyObject *)wxDC__DrawPointList(_arg0,_arg1,_arg2); + _result = (PyObject *)wxDC__DrawPointList(_arg0,_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -8470,91 +8575,8 @@ static PyObject *_wrap_wxDC__DrawPointList(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyLines,PyObject * pyPens) { - wxPyBeginBlockThreads(); - - bool isFastSeq = PyList_Check(pyLines) || PyTuple_Check(pyLines); - bool isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens); - int numObjs = 0; - int numPens = 0; - wxPen* pen; - PyObject* obj; - int x1, y1, x2, y2; - int i = 0; - PyObject* retval; - - if (!PySequence_Check(pyLines)) { - goto err0; - } - if (!PySequence_Check(pyPens)) { - goto err1; - } - numObjs = PySequence_Length(pyLines); - numPens = PySequence_Length(pyPens); - - for (i = 0; i < numObjs; i++) { - // Use a new pen? - if (i < numPens) { - if (isFastPens) { - obj = PySequence_Fast_GET_ITEM(pyPens, i); - } - else { - obj = PySequence_GetItem(pyPens, i); - } - if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { - if (!isFastPens) - Py_DECREF(obj); - goto err1; - } - - self->SetPen(*pen); - if (!isFastPens) - Py_DECREF(obj); - } - - // Get the line coordinants - if (isFastSeq) { - obj = PySequence_Fast_GET_ITEM(pyLines, i); - } - else { - obj = PySequence_GetItem(pyLines, i); - } - if (! _4int_seq_helper(obj, &x1, &y1, &x2, &y2)) { - if (!isFastPens) - Py_DECREF(obj); - goto err0; - } - if (PyErr_Occurred()) { - retval = NULL; - if (!isFastPens) - Py_DECREF(obj); - goto exit; - } - - // Now draw the line - self->DrawLine(x1, y1, x2, y2); - - if (!isFastSeq) - Py_DECREF(obj); - } - - Py_INCREF(Py_None); - retval = Py_None; - goto exit; - - err1: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens"); - retval = NULL; - goto exit; - - err0: - PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x1,y1, x2,y2) sequences."); - retval = NULL; - goto exit; - - exit: - wxPyEndBlockThreads(); - return retval; +static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXLine, pyCoords, pyPens, pyBrushes); } static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -8562,13 +8584,15 @@ static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObje wxDC * _arg0; PyObject * _arg1; PyObject * _arg2; + PyObject * _arg3; PyObject * _argo0 = 0; PyObject * _obj1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pyLines","pyPens", NULL }; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxDC__DrawLineList",_kwnames,&_argo0,&_obj1,&_obj2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawLineList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -8583,9 +8607,205 @@ static PyObject *_wrap_wxDC__DrawLineList(PyObject *self, PyObject *args, PyObje { _arg2 = _obj2; } +{ + _arg3 = _obj3; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (PyObject *)wxDC__DrawLineList(_arg0,_arg1,_arg2); + _result = (PyObject *)wxDC__DrawLineList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawRectangleList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXRectangle, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawRectangleList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawRectangleList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawRectangleList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawRectangleList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawEllipseList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXEllipse, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawEllipseList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawEllipseList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawEllipseList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawEllipseList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawPolygonList(wxDC *self,PyObject * pyCoords,PyObject * pyPens,PyObject * pyBrushes) { + return wxPyDrawXXXList(*self, wxPyDrawXXXPolygon, pyCoords, pyPens, pyBrushes); + } +static PyObject *_wrap_wxDC__DrawPolygonList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + char *_kwnames[] = { "self","pyCoords","pyPens","pyBrushes", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDC__DrawPolygonList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawPolygonList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawPolygonList(_arg0,_arg1,_arg2,_arg3); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + +static PyObject * wxDC__DrawTextList(wxDC *self,PyObject * textList,PyObject * pyPoints,PyObject * foregroundList,PyObject * backgroundList) { + return wxPyDrawTextList(*self, textList, pyPoints, foregroundList, backgroundList); + } +static PyObject *_wrap_wxDC__DrawTextList(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxDC * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _arg3; + PyObject * _arg4; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; + PyObject * _obj4 = 0; + char *_kwnames[] = { "self","textList","pyPoints","foregroundList","backgroundList", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOOO:wxDC__DrawTextList",_kwnames,&_argo0,&_obj1,&_obj2,&_obj3,&_obj4)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDC_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDC__DrawTextList. Expected _wxDC_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + _arg3 = _obj3; +} +{ + _arg4 = _obj4; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxDC__DrawTextList(_arg0,_arg1,_arg2,_arg3,_arg4); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -8657,8 +8877,7 @@ static PyObject *_wrap_wxMemoryDC_SelectObject(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMemoryDC_SelectObject. Expected _wxBitmap_p."); return NULL; } @@ -8720,8 +8939,7 @@ static PyObject *_wrap_new_wxBufferedDC(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxBufferedDC. Expected _wxBitmap_p."); return NULL; } @@ -8867,8 +9085,7 @@ static PyObject *_wrap_new_wxBufferedPaintDC(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxBufferedPaintDC. Expected _wxBitmap_p."); return NULL; } @@ -9431,7 +9648,7 @@ static PyObject *_wrap_wxMetaFile_GetFileName(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9862,15 +10079,13 @@ static PyObject *_wrap_wxImageList_Add(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_Add. Expected _wxBitmap_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Add. Expected _wxBitmap_p."); return NULL; } @@ -9909,8 +10124,7 @@ static PyObject *_wrap_wxImageList_AddWithColourMask(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddWithColourMask. Expected _wxBitmap_p."); return NULL; } @@ -9951,8 +10165,7 @@ static PyObject *_wrap_wxImageList_AddIcon(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImageList_AddIcon. Expected _wxIcon_p."); return NULL; } @@ -9991,15 +10204,13 @@ static PyObject *_wrap_wxImageList_Replace(PyObject *self, PyObject *args, PyObj } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Replace. Expected _wxBitmap_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxImageList_Replace. Expected _wxBitmap_p."); return NULL; } @@ -10041,8 +10252,7 @@ static PyObject *_wrap_wxImageList_Draw(PyObject *self, PyObject *args, PyObject } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxImageList_Draw. Expected _wxDC_p."); return NULL; } @@ -10212,15 +10422,15 @@ static void *SwigwxRegionTowxObject(void *ptr) { static PyObject *_wrap_new_wxRegion(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxRegion * _result; - long _arg0 = (long ) 0; - long _arg1 = (long ) 0; - long _arg2 = (long ) 0; - long _arg3 = (long ) 0; + wxCoord _arg0 = (wxCoord ) 0; + wxCoord _arg1 = (wxCoord ) 0; + wxCoord _arg2 = (wxCoord ) 0; + wxCoord _arg3 = (wxCoord ) 0; char *_kwnames[] = { "x","y","width","height", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|llll:new_wxRegion",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|iiii:new_wxRegion",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) return NULL; { PyThreadState* __tstate = wxPyBeginAllowThreads(); @@ -10373,13 +10583,13 @@ static PyObject *_wrap_wxRegion_Contains(PyObject *self, PyObject *args, PyObjec PyObject * _resultobj; wxRegionContain _result; wxRegion * _arg0; - long _arg1; - long _arg2; + wxCoord _arg1; + wxCoord _arg2; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oll:wxRegion_Contains",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRegion_Contains",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -10475,15 +10685,15 @@ static PyObject *_wrap_wxRegion_ContainsRectDim(PyObject *self, PyObject *args, PyObject * _resultobj; wxRegionContain _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","w","h", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_ContainsRectDim",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_ContainsRectDim",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -10537,15 +10747,15 @@ static PyObject *_wrap_wxRegion_Intersect(PyObject *self, PyObject *args, PyObje PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Intersect",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Intersect",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -10621,8 +10831,7 @@ static PyObject *_wrap_wxRegion_IntersectRegion(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_IntersectRegion. Expected _wxRegion_p."); return NULL; } @@ -10670,15 +10879,15 @@ static PyObject *_wrap_wxRegion_Union(PyObject *self, PyObject *args, PyObject * PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Union",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Union",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -10754,8 +10963,7 @@ static PyObject *_wrap_wxRegion_UnionRegion(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_UnionRegion. Expected _wxRegion_p."); return NULL; } @@ -10775,15 +10983,15 @@ static PyObject *_wrap_wxRegion_Subtract(PyObject *self, PyObject *args, PyObjec PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Subtract",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Subtract",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -10859,8 +11067,7 @@ static PyObject *_wrap_wxRegion_SubtractRegion(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_SubtractRegion. Expected _wxRegion_p."); return NULL; } @@ -10880,15 +11087,15 @@ static PyObject *_wrap_wxRegion_Xor(PyObject *self, PyObject *args, PyObject *kw PyObject * _resultobj; bool _result; wxRegion * _arg0; - long _arg1; - long _arg2; - long _arg3; - long _arg4; + wxCoord _arg1; + wxCoord _arg2; + wxCoord _arg3; + wxCoord _arg4; PyObject * _argo0 = 0; char *_kwnames[] = { "self","x","y","width","height", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ollll:wxRegion_Xor",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oiiii:wxRegion_Xor",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3,&_arg4)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -10964,8 +11171,7 @@ static PyObject *_wrap_wxRegion_XorRegion(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxRegion_XorRegion. Expected _wxRegion_p."); return NULL; } @@ -11001,8 +11207,7 @@ static PyObject *_wrap_new_wxRegionIterator(PyObject *self, PyObject *args, PyOb if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxRegionIterator",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxRegion_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxRegion_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxRegionIterator. Expected _wxRegion_p."); return NULL; } @@ -11054,7 +11259,7 @@ static PyObject *_wrap_delete_wxRegionIterator(PyObject *self, PyObject *args, P #define wxRegionIterator_GetX(_swigobj) (_swigobj->GetX()) static PyObject *_wrap_wxRegionIterator_GetX(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -11071,18 +11276,18 @@ static PyObject *_wrap_wxRegionIterator_GetX(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetX(_arg0); + _result = (wxCoord )wxRegionIterator_GetX(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetY(_swigobj) (_swigobj->GetY()) static PyObject *_wrap_wxRegionIterator_GetY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -11099,18 +11304,18 @@ static PyObject *_wrap_wxRegionIterator_GetY(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetY(_arg0); + _result = (wxCoord )wxRegionIterator_GetY(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetW(_swigobj) (_swigobj->GetW()) static PyObject *_wrap_wxRegionIterator_GetW(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -11127,18 +11332,18 @@ static PyObject *_wrap_wxRegionIterator_GetW(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetW(_arg0); + _result = (wxCoord )wxRegionIterator_GetW(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetWidth(_swigobj) (_swigobj->GetWidth()) static PyObject *_wrap_wxRegionIterator_GetWidth(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -11155,18 +11360,18 @@ static PyObject *_wrap_wxRegionIterator_GetWidth(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetWidth(_arg0); + _result = (wxCoord )wxRegionIterator_GetWidth(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetH(_swigobj) (_swigobj->GetH()) static PyObject *_wrap_wxRegionIterator_GetH(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -11183,18 +11388,18 @@ static PyObject *_wrap_wxRegionIterator_GetH(PyObject *self, PyObject *args, PyO } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetH(_arg0); + _result = (wxCoord )wxRegionIterator_GetH(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } #define wxRegionIterator_GetHeight(_swigobj) (_swigobj->GetHeight()) static PyObject *_wrap_wxRegionIterator_GetHeight(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - long _result; + wxCoord _result; wxRegionIterator * _arg0; PyObject * _argo0 = 0; char *_kwnames[] = { "self", NULL }; @@ -11211,11 +11416,11 @@ static PyObject *_wrap_wxRegionIterator_GetHeight(PyObject *self, PyObject *args } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxRegionIterator_GetHeight(_arg0); + _result = (wxCoord )wxRegionIterator_GetHeight(_arg0); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); +} _resultobj = Py_BuildValue("i",_result); return _resultobj; } @@ -11410,6 +11615,10 @@ static PyMethodDef gdicMethods[] = { { "new_wxBufferedDC", (PyCFunction) _wrap_new_wxBufferedDC, METH_VARARGS | METH_KEYWORDS }, { "wxMemoryDC_SelectObject", (PyCFunction) _wrap_wxMemoryDC_SelectObject, METH_VARARGS | METH_KEYWORDS }, { "new_wxMemoryDC", (PyCFunction) _wrap_new_wxMemoryDC, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawTextList", (PyCFunction) _wrap_wxDC__DrawTextList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawPolygonList", (PyCFunction) _wrap_wxDC__DrawPolygonList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawEllipseList", (PyCFunction) _wrap_wxDC__DrawEllipseList, METH_VARARGS | METH_KEYWORDS }, + { "wxDC__DrawRectangleList", (PyCFunction) _wrap_wxDC__DrawRectangleList, METH_VARARGS | METH_KEYWORDS }, { "wxDC__DrawLineList", (PyCFunction) _wrap_wxDC__DrawLineList, METH_VARARGS | METH_KEYWORDS }, { "wxDC__DrawPointList", (PyCFunction) _wrap_wxDC__DrawPointList, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetHDC", (PyCFunction) _wrap_wxDC_GetHDC, METH_VARARGS | METH_KEYWORDS }, @@ -11455,6 +11664,7 @@ static PyMethodDef gdicMethods[] = { { "wxDC_LogicalToDeviceX", (PyCFunction) _wrap_wxDC_LogicalToDeviceX, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetUserScale", (PyCFunction) _wrap_wxDC_GetUserScale, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextForeground", (PyCFunction) _wrap_wxDC_GetTextForeground, METH_VARARGS | METH_KEYWORDS }, + { "wxDC_GetMultiLineTextExtent", (PyCFunction) _wrap_wxDC_GetMultiLineTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetFullTextExtent", (PyCFunction) _wrap_wxDC_GetFullTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextExtent", (PyCFunction) _wrap_wxDC_GetTextExtent, METH_VARARGS | METH_KEYWORDS }, { "wxDC_GetTextBackground", (PyCFunction) _wrap_wxDC_GetTextBackground, METH_VARARGS | METH_KEYWORDS }, @@ -11544,6 +11754,8 @@ static PyMethodDef gdicMethods[] = { { "wxColourDatabase_Append", (PyCFunction) _wrap_wxColourDatabase_Append, METH_VARARGS | METH_KEYWORDS }, { "wxColourDatabase_FindName", (PyCFunction) _wrap_wxColourDatabase_FindName, METH_VARARGS | METH_KEYWORDS }, { "wxColourDatabase_FindColour", (PyCFunction) _wrap_wxColourDatabase_FindColour, METH_VARARGS | METH_KEYWORDS }, + { "wxColour___ne__", (PyCFunction) _wrap_wxColour___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxColour___eq__", (PyCFunction) _wrap_wxColour___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Get", (PyCFunction) _wrap_wxColour_Get, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Set", (PyCFunction) _wrap_wxColour_Set, METH_VARARGS | METH_KEYWORDS }, { "wxColour_Ok", (PyCFunction) _wrap_wxColour_Ok, METH_VARARGS | METH_KEYWORDS }, @@ -11617,6 +11829,7 @@ static PyMethodDef gdicMethods[] = { { "new_wxGDIObject", (PyCFunction) _wrap_new_wxGDIObject, METH_VARARGS | METH_KEYWORDS }, { "wxMemoryDCFromDC", (PyCFunction) _wrap_wxMemoryDCFromDC, METH_VARARGS | METH_KEYWORDS }, { "wxNamedColour", (PyCFunction) _wrap_wxNamedColour, METH_VARARGS | METH_KEYWORDS }, + { "wxCursorFromImage", (PyCFunction) _wrap_wxCursorFromImage, METH_VARARGS | METH_KEYWORDS }, { "wxStockCursor", (PyCFunction) _wrap_wxStockCursor, METH_VARARGS | METH_KEYWORDS }, { "wxIconFromBitmap", (PyCFunction) _wrap_wxIconFromBitmap, METH_VARARGS | METH_KEYWORDS }, { "wxIconFromXPMData", (PyCFunction) _wrap_wxIconFromXPMData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/gdi.py b/wxPython/src/msw/gdi.py index 39610df421..c8ef3bc3be 100644 --- a/wxPython/src/msw/gdi.py +++ b/wxPython/src/msw/gdi.py @@ -4,13 +4,17 @@ import gdic from misc import * from fonts import * +import wx class wxGDIObjectPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxGDIObject(self) + def __del__(self, delfunc=gdic.delete_wxGDIObject): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetVisible(self, *_args, **_kwargs): val = apply(gdic.wxGDIObject_GetVisible,(self,) + _args, _kwargs) return val @@ -34,9 +38,12 @@ class wxBitmapPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxBitmap(self) + def __del__(self, delfunc=gdic.delete_wxBitmap): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPalette(self, *_args, **_kwargs): val = apply(gdic.wxBitmap_GetPalette,(self,) + _args, _kwargs) if val: val = wxPalettePtr(val) @@ -106,13 +113,10 @@ class wxBitmapPtr(wxGDIObjectPtr): def __repr__(self): return "<C wxBitmap instance at %s>" % (self.this,) - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxBitmap(self) - except: - pass - + def SetMaskColour(self, colour): + mask = wxMaskColour(self, colour) + self.SetMask(mask) + class wxBitmap(wxBitmapPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxBitmap,_args,_kwargs) @@ -142,9 +146,12 @@ class wxIconPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxIcon(self) + def __del__(self, delfunc=gdic.delete_wxIcon): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def LoadFile(self, *_args, **_kwargs): val = apply(gdic.wxIcon_LoadFile,(self,) + _args, _kwargs) return val @@ -183,14 +190,6 @@ class wxIconPtr(wxGDIObjectPtr): return val def __repr__(self): return "<C wxIcon instance at %s>" % (self.this,) - - def __del__(self,gdic=gdic): - try: - if self.thisown == 1 : - gdic.delete_wxIcon(self) - except: - pass - class wxIcon(wxIconPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxIcon,_args,_kwargs) @@ -203,9 +202,12 @@ class wxIconBundlePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxIconBundle(self) + def __del__(self, delfunc=gdic.delete_wxIconBundle): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddIcon(self, *_args, **_kwargs): val = apply(gdic.wxIconBundle_AddIcon,(self,) + _args, _kwargs) return val @@ -240,9 +242,12 @@ class wxCursorPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxCursor(self) + def __del__(self, delfunc=gdic.delete_wxCursor): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetHandle(self, *_args, **_kwargs): val = apply(gdic.wxCursor_GetHandle,(self,) + _args, _kwargs) return val @@ -287,9 +292,12 @@ class wxColourPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxColour(self) + def __del__(self, delfunc=gdic.delete_wxColour): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Red(self, *_args, **_kwargs): val = apply(gdic.wxColour_Red,(self,) + _args, _kwargs) return val @@ -308,11 +316,22 @@ class wxColourPtr(wxObjectPtr): def Get(self, *_args, **_kwargs): val = apply(gdic.wxColour_Get,(self,) + _args, _kwargs) return val + def __eq__(self, *_args, **_kwargs): + val = apply(gdic.wxColour___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(gdic.wxColour___ne__,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxColour instance at %s>" % (self.this,) asTuple = Get - def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxColour:' + str(self.asTuple()) + def __nonzero__(self): return self.Ok() + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) + class wxColour(wxColourPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gdic.new_wxColour,_args,_kwargs) @@ -348,9 +367,12 @@ class wxPenPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPen(self) + def __del__(self, delfunc=gdic.delete_wxPen): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetCap(self, *_args, **_kwargs): val = apply(gdic.wxPen_GetCap,(self,) + _args, _kwargs) return val @@ -412,9 +434,12 @@ class wxPyPenPtr(wxPenPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPyPen(self) + def __del__(self, delfunc=gdic.delete_wxPyPen): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetDashes(self, *_args, **_kwargs): val = apply(gdic.wxPyPen_SetDashes,(self,) + _args, _kwargs) return val @@ -458,9 +483,12 @@ class wxBrushPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxBrush(self) + def __del__(self, delfunc=gdic.delete_wxBrush): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetColour(self, *_args, **_kwargs): val = apply(gdic.wxBrush_GetColour,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -524,9 +552,12 @@ class wxDCPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxDC(self) + def __del__(self, delfunc=gdic.delete_wxDC): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def BeginDrawing(self, *_args, **_kwargs): val = apply(gdic.wxDC_BeginDrawing,(self,) + _args, _kwargs) return val @@ -680,6 +711,9 @@ class wxDCPtr(wxObjectPtr): def GetFullTextExtent(self, *_args, **_kwargs): val = apply(gdic.wxDC_GetFullTextExtent,(self,) + _args, _kwargs) return val + def GetMultiLineTextExtent(self, *_args, **_kwargs): + val = apply(gdic.wxDC_GetMultiLineTextExtent,(self,) + _args, _kwargs) + return val def GetTextForeground(self, *_args, **_kwargs): val = apply(gdic.wxDC_GetTextForeground,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -817,6 +851,18 @@ class wxDCPtr(wxObjectPtr): def _DrawLineList(self, *_args, **_kwargs): val = apply(gdic.wxDC__DrawLineList,(self,) + _args, _kwargs) return val + def _DrawRectangleList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawRectangleList,(self,) + _args, _kwargs) + return val + def _DrawEllipseList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawEllipseList,(self,) + _args, _kwargs) + return val + def _DrawPolygonList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawPolygonList,(self,) + _args, _kwargs) + return val + def _DrawTextList(self, *_args, **_kwargs): + val = apply(gdic.wxDC__DrawTextList,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxDC instance at %s>" % (self.this,) @@ -827,7 +873,8 @@ class wxDCPtr(wxObjectPtr): pens = [pens] elif len(pens) != len(points): raise ValueError('points and pens must have same length') - return self._DrawPointList(points, pens) + return self._DrawPointList(points, pens, []) + def DrawLineList(self, lines, pens=None): if pens is None: @@ -836,7 +883,83 @@ class wxDCPtr(wxObjectPtr): pens = [pens] elif len(pens) != len(lines): raise ValueError('lines and pens must have same length') - return self._DrawLineList(lines, pens) + return self._DrawLineList(lines, pens, []) + + + def DrawRectangleList(self, rectangles, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(rectangles): + raise ValueError('rectangles and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(rectangles): + raise ValueError('rectangles and brushes must have same length') + return self._DrawRectangleList(rectangles, pens, brushes) + + + def DrawEllipseList(self, ellipses, pens=None, brushes=None): + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(ellipses): + raise ValueError('ellipses and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(ellipses): + raise ValueError('ellipses and brushes must have same length') + return self._DrawEllipseList(ellipses, pens, brushes) + + + def DrawPolygonList(self, polygons, pens=None, brushes=None): + ## Note: This does not currently support fill style or offset + ## you can always use the non-List version if need be. + ## I really would like to support fill-style, however, + ## but wxODDEVEN_RULE does not appear to be defined at the Python level + ## [It's in wx.py... --Robin] + if pens is None: + pens = [] + elif isinstance(pens, wxPenPtr): + pens = [pens] + elif len(pens) != len(polygons): + raise ValueError('polygons and pens must have same length') + if brushes is None: + brushes = [] + elif isinstance(brushes, wxBrushPtr): + brushes = [brushes] + elif len(brushes) != len(polygons): + raise ValueError('polygons and brushes must have same length') + return self._DrawPolygonList(polygons, pens, brushes) + + + def DrawTextList(self, textList, coords, foregrounds = None, backgrounds = None, fonts = None): + ## NOTE: this does not currently support changing the font + ## Make sure you set Background mode to wxSolid (DC.SetBackgroundMode) + ## If you want backgounds to do anything. + if type(textList) == type(''): + textList = [textList] + elif len(textList) != len(coords): + raise ValueError('textlist and coords must have same length') + if foregrounds is None: + foregrounds = [] + elif isinstance(foregrounds, wxColourPtr): + foregrounds = [foregrounds] + elif len(foregrounds) != len(coords): + raise ValueError('foregrounds and coords must have same length') + if backgrounds is None: + backgrounds = [] + elif isinstance(backgrounds, wxColourPtr): + backgrounds = [backgrounds] + elif len(backgrounds) != len(coords): + raise ValueError('backgrounds and coords must have same length') + return self._DrawTextList(textList, coords, foregrounds, backgrounds) class wxDC(wxDCPtr): def __init__(self,this): @@ -969,9 +1092,12 @@ class wxMetaFilePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxMetaFile(self) + def __del__(self, delfunc=gdic.delete_wxMetaFile): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Ok(self, *_args, **_kwargs): val = apply(gdic.wxMetaFile_Ok,(self,) + _args, _kwargs) return val @@ -1023,9 +1149,12 @@ class wxPalettePtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxPalette(self) + def __del__(self, delfunc=gdic.delete_wxPalette): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPixel(self, *_args, **_kwargs): val = apply(gdic.wxPalette_GetPixel,(self,) + _args, _kwargs) return val @@ -1049,9 +1178,12 @@ class wxImageListPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxImageList(self) + def __del__(self, delfunc=gdic.delete_wxImageList): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Add(self, *_args, **_kwargs): val = apply(gdic.wxImageList_Add,(self,) + _args, _kwargs) return val @@ -1093,9 +1225,12 @@ class wxRegionPtr(wxGDIObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxRegion(self) + def __del__(self, delfunc=gdic.delete_wxRegion): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Clear(self, *_args, **_kwargs): val = apply(gdic.wxRegion_Clear,(self,) + _args, _kwargs) return val @@ -1176,9 +1311,12 @@ class wxRegionIteratorPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gdic=gdic): - if self.thisown == 1 : - gdic.delete_wxRegionIterator(self) + def __del__(self, delfunc=gdic.delete_wxRegionIterator): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetX(self, *_args, **_kwargs): val = apply(gdic.wxRegionIterator_GetX,(self,) + _args, _kwargs) return val @@ -1269,6 +1407,11 @@ def wxStockCursor(*_args, **_kwargs): if val: val = wxCursorPtr(val); val.thisown = 1 return val +def wxCursorFromImage(*_args, **_kwargs): + val = apply(gdic.wxCursorFromImage,_args,_kwargs) + if val: val = wxCursorPtr(val); val.thisown = 1 + return val + def wxNamedColour(*_args, **_kwargs): val = apply(gdic.wxNamedColour,_args,_kwargs) if val: val = wxColourPtr(val); val.thisown = 1 diff --git a/wxPython/src/msw/grid.cpp b/wxPython/src/msw/grid.cpp index e239f48d53..7d014abd12 100644 --- a/wxPython/src/msw/grid.cpp +++ b/wxPython/src/msw/grid.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -106,7 +105,7 @@ PyObject* wxPyMake_##TYPE(TYPE* source) { \ /* Otherwise make a new wrapper for it the old fashioned way and \ give it the OOR treatment */ \ if (! target) { \ - target = wxPyConstructObject(source, #TYPE, FALSE); \ + target = wxPyConstructObject(source, wxT(#TYPE), FALSE); \ if (target) \ source->SetClientObject(new wxPyOORClientData(target)); \ } \ @@ -541,7 +540,7 @@ public: PyObject* go = wxPyMake_wxObject(&grid); PyObject* dco = wxPyMake_wxObject(&dc); PyObject* ao = wxPyMake_wxGridCellAttr(&attr); - PyObject* ro = wxPyConstructObject((void*)&rect, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOOiii)", go, ao, dco, ro, row, col, isSelected)); @@ -705,7 +704,7 @@ public: wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "PaintBackground)"))) { PyObject* ao = wxPyMake_wxGridCellAttr(attr); - PyObject* ro = wxPyConstructObject((void*)&rectCell, "wxRect", 0); + PyObject* ro = wxPyConstructObject((void*)&rectCell, wxT("wxRect"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", ro, ao)); @@ -905,6 +904,21 @@ bool wxGridCellCoords_helper(PyObject* source, wxGridCellCoords** obj) { return FALSE; } +PyObject* wxGridCellCoordsArray_helper(const wxGridCellCoordsArray* source) +{ + PyObject* list = PyList_New(0); + size_t idx; + for (idx = 0; idx < source->GetCount(); idx += 1) { + wxGridCellCoords& coord = source->Item(idx); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(coord.GetRow())); + PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(coord.GetCol())); + PyList_Append(list, tup); + Py_DECREF(tup); + } + return list; +} + typedef wxGrid::wxGridSelectionModes WXGRIDSELECTIONMODES; #ifdef __cplusplus extern "C" { @@ -1100,22 +1114,19 @@ static PyObject *_wrap_wxGridCellRenderer_Draw(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellRenderer_Draw. Expected _wxGrid_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxGridCellRenderer_Draw. Expected _wxGridCellAttr_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGridCellRenderer_Draw. Expected _wxDC_p."); return NULL; } @@ -1165,22 +1176,19 @@ static PyObject *_wrap_wxGridCellRenderer_GetBestSize(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGrid_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellRenderer_GetBestSize. Expected _wxGrid_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxGridCellAttr_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxGridCellRenderer_GetBestSize. Expected _wxGridCellAttr_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGridCellRenderer_GetBestSize. Expected _wxDC_p."); return NULL; } @@ -1893,6 +1901,71 @@ static PyObject *_wrap_wxGridCellEditor_SetControl(PyObject *self, PyObject *arg return _resultobj; } +#define wxGridCellEditor_GetCellAttr(_swigobj) (_swigobj->GetCellAttr()) +static PyObject *_wrap_wxGridCellEditor_GetCellAttr(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellAttr * _result; + wxGridCellEditor * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGridCellEditor_GetCellAttr",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGridCellEditor_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGridCellEditor_GetCellAttr. Expected _wxGridCellEditor_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxGridCellAttr *)wxGridCellEditor_GetCellAttr(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ _resultobj = wxPyMake_wxGridCellAttr(_result); } + return _resultobj; +} + +#define wxGridCellEditor_SetCellAttr(_swigobj,_swigarg0) (_swigobj->SetCellAttr(_swigarg0)) +static PyObject *_wrap_wxGridCellEditor_SetCellAttr(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellEditor * _arg0; + wxGridCellAttr * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","attr", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxGridCellEditor_SetCellAttr",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGridCellEditor_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGridCellEditor_SetCellAttr. Expected _wxGridCellEditor_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellAttr_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_SetCellAttr. Expected _wxGridCellAttr_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGridCellEditor_SetCellAttr(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxGridCellEditor_SetParameters(_swigobj,_swigarg0) (_swigobj->SetParameters(_swigarg0)) static PyObject *_wrap_wxGridCellEditor_SetParameters(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2311,8 +2384,7 @@ static PyObject *_wrap_wxGridCellEditor_IsAcceptedKey(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_IsAcceptedKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2347,8 +2419,7 @@ static PyObject *_wrap_wxGridCellEditor_StartingKey(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_StartingKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2412,8 +2483,7 @@ static PyObject *_wrap_wxGridCellEditor_HandleReturn(PyObject *self, PyObject *a } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellEditor_HandleReturn. Expected _wxKeyEvent_p."); return NULL; } @@ -2670,8 +2740,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_IsAcceptedKey(PyObject *self, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_IsAcceptedKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2707,8 +2776,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_StartingKey(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_StartingKey. Expected _wxKeyEvent_p."); return NULL; } @@ -2772,8 +2840,7 @@ static PyObject *_wrap_wxPyGridCellEditor_base_HandleReturn(PyObject *self, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxKeyEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyGridCellEditor_base_HandleReturn. Expected _wxKeyEvent_p."); return NULL; } @@ -3447,8 +3514,7 @@ static PyObject *_wrap_wxGridCellAttr_SetFont(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellAttr_SetFont. Expected _wxFont_p."); return NULL; } @@ -5012,7 +5078,7 @@ static PyObject *_wrap_wxGridTableBase_GetValue(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5092,7 +5158,7 @@ static PyObject *_wrap_wxGridTableBase_GetTypeName(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5603,7 +5669,7 @@ static PyObject *_wrap_wxGridTableBase_GetRowLabelValue(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5641,7 +5707,7 @@ static PyObject *_wrap_wxGridTableBase_GetColLabelValue(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6042,7 +6108,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetTypeName(PyObject *self, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6368,7 +6434,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetRowLabelValue(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6406,7 +6472,7 @@ static PyObject *_wrap_wxPyGridTableBase_base_GetColLabelValue(PyObject *self, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7275,8 +7341,7 @@ static PyObject *_wrap_wxGridCellCoords___cmp__(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellCoords_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridCellCoords_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGridCellCoords___cmp__. Expected _wxGridCellCoords_p."); return NULL; } @@ -7563,8 +7628,7 @@ static PyObject *_wrap_wxGrid_ProcessTableMessage(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridTableMessage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxGridTableMessage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_ProcessTableMessage. Expected _wxGridTableMessage_p."); return NULL; } @@ -7894,8 +7958,7 @@ static PyObject *_wrap_wxGrid_DrawCellHighlight(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_DrawCellHighlight. Expected _wxDC_p."); return NULL; } @@ -7945,8 +8008,7 @@ static PyObject *_wrap_wxGrid_DrawTextRectangle(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_DrawTextRectangle. Expected _wxDC_p."); return NULL; } @@ -8008,8 +8070,7 @@ static PyObject *_wrap_wxGrid_GetTextBoxSize(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_GetTextBoxSize. Expected _wxDC_p."); return NULL; } @@ -8025,11 +8086,10 @@ static PyObject *_wrap_wxGrid_GetTextBoxSize(PyObject *self, PyObject *args, PyO PyObject* item = PySequence_GetItem(_obj2, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg2->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg2->Add(PyString_AsString(str)); #endif + _arg2->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -9492,7 +9552,7 @@ static PyObject *_wrap_wxGrid_GetRowLabelValue(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9530,7 +9590,7 @@ static PyObject *_wrap_wxGrid_GetColLabelValue(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9807,8 +9867,7 @@ static PyObject *_wrap_wxGrid_SetLabelFont(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_SetLabelFont. Expected _wxFont_p."); return NULL; } @@ -11666,8 +11725,7 @@ static PyObject *_wrap_wxGrid_SetDefaultCellFont(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxGrid_SetDefaultCellFont. Expected _wxFont_p."); return NULL; } @@ -11705,8 +11763,7 @@ static PyObject *_wrap_wxGrid_SetCellFont(PyObject *self, PyObject *args, PyObje } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxGrid_SetCellFont. Expected _wxFont_p."); return NULL; } @@ -12176,7 +12233,7 @@ static PyObject *_wrap_wxGrid_GetCellValue(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -12504,6 +12561,267 @@ static PyObject *_wrap_wxGrid_IsInSelection(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxGrid_GetSelectedCells(_swigobj) (_swigobj->GetSelectedCells()) +static PyObject *_wrap_wxGrid_GetSelectedCells(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedCells",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedCells. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectedCells(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectionBlockTopLeft(_swigobj) (_swigobj->GetSelectionBlockTopLeft()) +static PyObject *_wrap_wxGrid_GetSelectionBlockTopLeft(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectionBlockTopLeft",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectionBlockTopLeft. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectionBlockTopLeft(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectionBlockBottomRight(_swigobj) (_swigobj->GetSelectionBlockBottomRight()) +static PyObject *_wrap_wxGrid_GetSelectionBlockBottomRight(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGridCellCoordsArray * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectionBlockBottomRight",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectionBlockBottomRight. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxGridCellCoordsArray (wxGrid_GetSelectionBlockBottomRight(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = wxGridCellCoordsArray_helper(_result); +} +{ + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectedRows(_swigobj) (_swigobj->GetSelectedRows()) +static PyObject *_wrap_wxGrid_GetSelectedRows(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxArrayInt * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedRows",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedRows. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxArrayInt (wxGrid_GetSelectedRows(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = PyList_New(0); + size_t idx; + for (idx = 0; idx < _result->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong(_result->Item(idx)); + PyList_Append(_resultobj, val); + Py_DECREF(val); + } + delete _result; +} + return _resultobj; +} + +#define wxGrid_GetSelectedCols(_swigobj) (_swigobj->GetSelectedCols()) +static PyObject *_wrap_wxGrid_GetSelectedCols(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxArrayInt * _result; + wxGrid * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxGrid_GetSelectedCols",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_GetSelectedCols. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxArrayInt (wxGrid_GetSelectedCols(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = PyList_New(0); + size_t idx; + for (idx = 0; idx < _result->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong(_result->Item(idx)); + PyList_Append(_resultobj, val); + Py_DECREF(val); + } + delete _result; +} + return _resultobj; +} + +#define wxGrid_DeselectRow(_swigobj,_swigarg0) (_swigobj->DeselectRow(_swigarg0)) +static PyObject *_wrap_wxGrid_DeselectRow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","row", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxGrid_DeselectRow",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectRow. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectRow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxGrid_DeselectCol(_swigobj,_swigarg0) (_swigobj->DeselectCol(_swigarg0)) +static PyObject *_wrap_wxGrid_DeselectCol(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","col", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxGrid_DeselectCol",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectCol. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectCol(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxGrid_DeselectCell(_swigobj,_swigarg0,_swigarg1) (_swigobj->DeselectCell(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxGrid_DeselectCell(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxGrid * _arg0; + int _arg1; + int _arg2; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","row","col", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxGrid_DeselectCell",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGrid_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxGrid_DeselectCell. Expected _wxGrid_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxGrid_DeselectCell(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxGrid_BlockToDeviceRect(_swigobj,_swigarg0,_swigarg1) (_swigobj->BlockToDeviceRect(_swigarg0,_swigarg1)) static PyObject *_wrap_wxGrid_BlockToDeviceRect(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -14301,6 +14619,14 @@ static PyMethodDef gridcMethods[] = { { "wxGrid_GetSelectionForeground", (PyCFunction) _wrap_wxGrid_GetSelectionForeground, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_GetSelectionBackground", (PyCFunction) _wrap_wxGrid_GetSelectionBackground, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_BlockToDeviceRect", (PyCFunction) _wrap_wxGrid_BlockToDeviceRect, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectCell", (PyCFunction) _wrap_wxGrid_DeselectCell, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectCol", (PyCFunction) _wrap_wxGrid_DeselectCol, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_DeselectRow", (PyCFunction) _wrap_wxGrid_DeselectRow, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedCols", (PyCFunction) _wrap_wxGrid_GetSelectedCols, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedRows", (PyCFunction) _wrap_wxGrid_GetSelectedRows, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectionBlockBottomRight", (PyCFunction) _wrap_wxGrid_GetSelectionBlockBottomRight, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectionBlockTopLeft", (PyCFunction) _wrap_wxGrid_GetSelectionBlockTopLeft, METH_VARARGS | METH_KEYWORDS }, + { "wxGrid_GetSelectedCells", (PyCFunction) _wrap_wxGrid_GetSelectedCells, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_IsInSelection", (PyCFunction) _wrap_wxGrid_IsInSelection, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_ClearSelection", (PyCFunction) _wrap_wxGrid_ClearSelection, METH_VARARGS | METH_KEYWORDS }, { "wxGrid_IsSelection", (PyCFunction) _wrap_wxGrid_IsSelection, METH_VARARGS | METH_KEYWORDS }, @@ -14617,6 +14943,8 @@ static PyMethodDef gridcMethods[] = { { "wxGridCellEditor_DecRef", (PyCFunction) _wrap_wxGridCellEditor_DecRef, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_IncRef", (PyCFunction) _wrap_wxGridCellEditor_IncRef, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_SetParameters", (PyCFunction) _wrap_wxGridCellEditor_SetParameters, METH_VARARGS | METH_KEYWORDS }, + { "wxGridCellEditor_SetCellAttr", (PyCFunction) _wrap_wxGridCellEditor_SetCellAttr, METH_VARARGS | METH_KEYWORDS }, + { "wxGridCellEditor_GetCellAttr", (PyCFunction) _wrap_wxGridCellEditor_GetCellAttr, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_SetControl", (PyCFunction) _wrap_wxGridCellEditor_SetControl, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_GetControl", (PyCFunction) _wrap_wxGridCellEditor_GetControl, METH_VARARGS | METH_KEYWORDS }, { "wxGridCellEditor_IsCreated", (PyCFunction) _wrap_wxGridCellEditor_IsCreated, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/grid.py b/wxPython/src/msw/grid.py index 7cbd1c0df1..760f902e4b 100644 --- a/wxPython/src/msw/grid.py +++ b/wxPython/src/msw/grid.py @@ -255,6 +255,12 @@ class wxGridCellEditorPtr : def SetControl(self, *_args, **_kwargs): val = apply(gridc.wxGridCellEditor_SetControl,(self,) + _args, _kwargs) return val + def GetCellAttr(self, *_args, **_kwargs): + val = apply(gridc.wxGridCellEditor_GetCellAttr,(self,) + _args, _kwargs) + return val + def SetCellAttr(self, *_args, **_kwargs): + val = apply(gridc.wxGridCellEditor_SetCellAttr,(self,) + _args, _kwargs) + return val def SetParameters(self, *_args, **_kwargs): val = apply(gridc.wxGridCellEditor_SetParameters,(self,) + _args, _kwargs) return val @@ -865,9 +871,12 @@ class wxGridTableMessagePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gridc=gridc): - if self.thisown == 1 : - gridc.delete_wxGridTableMessage(self) + def __del__(self, delfunc=gridc.delete_wxGridTableMessage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTableObject(self, *_args, **_kwargs): val = apply(gridc.wxGridTableMessage_SetTableObject,(self,) + _args, _kwargs) return val @@ -906,9 +915,12 @@ class wxGridCellCoordsPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,gridc=gridc): - if self.thisown == 1 : - gridc.delete_wxGridCellCoords(self) + def __del__(self, delfunc=gridc.delete_wxGridCellCoords): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetRow(self, *_args, **_kwargs): val = apply(gridc.wxGridCellCoords_GetRow,(self,) + _args, _kwargs) return val @@ -932,8 +944,16 @@ class wxGridCellCoordsPtr : return val def __repr__(self): return "<C wxGridCellCoords instance at %s>" % (self.this,) - def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxGridCellCoords'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.SetRow(val) + elif index == 1: self.SetCol(val) + else: raise IndexError + class wxGridCellCoords(wxGridCellCoordsPtr): def __init__(self,*_args,**_kwargs): self.this = apply(gridc.new_wxGridCellCoords,_args,_kwargs) @@ -1433,6 +1453,30 @@ class wxGridPtr(wxScrolledWindowPtr): def IsInSelection(self, *_args, **_kwargs): val = apply(gridc.wxGrid_IsInSelection,(self,) + _args, _kwargs) return val + def GetSelectedCells(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedCells,(self,) + _args, _kwargs) + return val + def GetSelectionBlockTopLeft(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectionBlockTopLeft,(self,) + _args, _kwargs) + return val + def GetSelectionBlockBottomRight(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectionBlockBottomRight,(self,) + _args, _kwargs) + return val + def GetSelectedRows(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedRows,(self,) + _args, _kwargs) + return val + def GetSelectedCols(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_GetSelectedCols,(self,) + _args, _kwargs) + return val + def DeselectRow(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectRow,(self,) + _args, _kwargs) + return val + def DeselectCol(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectCol,(self,) + _args, _kwargs) + return val + def DeselectCell(self, *_args, **_kwargs): + val = apply(gridc.wxGrid_DeselectCell,(self,) + _args, _kwargs) + return val def BlockToDeviceRect(self, *_args, **_kwargs): val = apply(gridc.wxGrid_BlockToDeviceRect,(self,) + _args, _kwargs) if val: val = wxRectPtr(val) ; val.thisown = 1 diff --git a/wxPython/src/msw/help.cpp b/wxPython/src/msw/help.cpp index dd9dfc3d65..8878e4ca75 100644 --- a/wxPython/src/msw/help.cpp +++ b/wxPython/src/msw/help.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -247,7 +246,7 @@ static PyObject *_wrap_wxHelpEvent_GetLink(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -321,7 +320,7 @@ static PyObject *_wrap_wxHelpEvent_GetTarget(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -704,7 +703,7 @@ static PyObject *_wrap_wxHelpProvider_GetHelp(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/msw/help.py b/wxPython/src/msw/help.py index add867a444..ac1612ba19 100644 --- a/wxPython/src/msw/help.py +++ b/wxPython/src/msw/help.py @@ -65,9 +65,12 @@ class wxContextHelpPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,helpc=helpc): - if self.thisown == 1 : - helpc.delete_wxContextHelp(self) + def __del__(self, delfunc=helpc.delete_wxContextHelp): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def BeginContextHelp(self, *_args, **_kwargs): val = apply(helpc.wxContextHelp_BeginContextHelp,(self,) + _args, _kwargs) return val @@ -171,3 +174,4 @@ wxEVT_DETAILED_HELP = helpc.wxEVT_DETAILED_HELP # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxHelpEventPtr = wxHelpEventPtr +wx.wxContextHelpButtonPtr = wxContextHelpButtonPtr diff --git a/wxPython/src/msw/html.cpp b/wxPython/src/msw/html.cpp index 0d8c6925db..681d306acd 100644 --- a/wxPython/src/msw/html.cpp +++ b/wxPython/src/msw/html.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -62,6 +61,7 @@ extern PyObject *SWIG_newvarlink(void); #include <wx/fs_zip.h> #include <wx/fs_inet.h> #include <wx/wfstream.h> +#include <wx/filesys.h> #include "printfw.h" @@ -197,6 +197,51 @@ private: // and adds itself to the wxModules list and to the wxHtmlWinParser. new wxPyHtmlTagsModule(tagHandlerClass); } + // here's the C++ version +class wxPyHtmlFilter : public wxHtmlFilter { + DECLARE_ABSTRACT_CLASS(wxPyHtmlFilter); +public: + wxPyHtmlFilter() : wxHtmlFilter() {} + + // returns TRUE if this filter is able to open&read given file + virtual bool CanRead(const wxFSFile& file) const { + bool rval = FALSE; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "CanRead"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + } + wxPyEndBlockThreads(); + return rval; + } + + + // Reads given file and returns HTML document. + // Returns empty string if opening failed + virtual wxString ReadFile(const wxFSFile& file) const { + wxString rval; + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "ReadFile"))) { + PyObject* obj = wxPyMake_wxObject((wxFSFile*)&file); // cast away const + PyObject* ro; + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", obj)); + Py_DECREF(obj); + if (ro) { + rval = Py2wxString(ro); + Py_DECREF(ro); + } + } + wxPyEndBlockThreads(); + return rval; + } + + PYPRIVATE; +}; + +IMPLEMENT_ABSTRACT_CLASS(wxPyHtmlFilter, wxHtmlFilter); class wxPyHtmlWindow : public wxHtmlWindow { DECLARE_ABSTRACT_CLASS(wxPyHtmlWindow); @@ -205,7 +250,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_AUTO, - const wxString& name = "htmlWindow") + const wxString& name = wxPyHtmlWindowNameStr) : wxHtmlWindow(parent, id, pos, size, style, name) {}; wxPyHtmlWindow() : wxHtmlWindow() {}; @@ -228,7 +273,6 @@ public: DEC_PYCALLBACK__STRING(OnSetTitle); DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); -// DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); PYPRIVATE; }; @@ -236,14 +280,13 @@ IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); -// IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { bool found; wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "OnLinkClicked"))) { - PyObject* obj = wxPyConstructObject((void*)&link, "wxHtmlLinkInfo", 0); + PyObject* obj = wxPyConstructObject((void*)&link, wxT("wxHtmlLinkInfo"), 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); Py_DECREF(obj); } @@ -290,10 +333,6 @@ wxHtmlOpeningStatus wxPyHtmlWindow::OnOpeningURL(wxHtmlURLType type, - void wxHtmlWindow_AddFilter(wxHtmlFilter *filter) { - wxHtmlWindow::AddFilter(filter); - } - extern "C" SWIGEXPORT(void) inithtmlhelpc(); #ifdef __cplusplus extern "C" { @@ -321,33 +360,6 @@ static PyObject *_wrap_wxHtmlWinParser_AddTagHandler(PyObject *self, PyObject *a return _resultobj; } -static PyObject *_wrap_wxHtmlWindow_AddFilter(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxHtmlFilter * _arg0; - PyObject * _argo0 = 0; - char *_kwnames[] = { "filter", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_AddFilter",_kwnames,&_argo0)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlFilter_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_AddFilter. Expected _wxHtmlFilter_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxHtmlWindow_AddFilter(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static void *SwigwxHtmlLinkInfoTowxObject(void *ptr) { wxHtmlLinkInfo *src; wxObject *dest; @@ -431,7 +443,7 @@ static PyObject *_wrap_wxHtmlLinkInfo_GetHref(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -468,7 +480,7 @@ static PyObject *_wrap_wxHtmlLinkInfo_GetTarget(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -650,7 +662,7 @@ static PyObject *_wrap_wxHtmlTag_GetName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -734,7 +746,7 @@ static PyObject *_wrap_wxHtmlTag_GetParam(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -775,7 +787,7 @@ static PyObject *_wrap_wxHtmlTag_GetAllParams(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1107,6 +1119,34 @@ static PyObject *_wrap_wxHtmlParser_DoParsing(PyObject *self, PyObject *args, Py return _resultobj; } +#define wxHtmlParser_StopParsing(_swigobj) (_swigobj->StopParsing()) +static PyObject *_wrap_wxHtmlParser_StopParsing(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxHtmlParser * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlParser_StopParsing",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlParser_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlParser_StopParsing. Expected _wxHtmlParser_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxHtmlParser_StopParsing(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxHtmlParser_AddTagHandler(_swigobj,_swigarg0) (_swigobj->AddTagHandler(_swigarg0)) static PyObject *_wrap_wxHtmlParser_AddTagHandler(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1170,7 +1210,7 @@ static PyObject *_wrap_wxHtmlParser_GetSource(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2406,8 +2446,7 @@ static PyObject *_wrap_wxHtmlTagHandler_ParseInner(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlTagHandler_ParseInner. Expected _wxHtmlTag_p."); return NULL; } @@ -2595,8 +2634,7 @@ static PyObject *_wrap_wxHtmlWinTagHandler_ParseInner(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWinTagHandler_ParseInner. Expected _wxHtmlTag_p."); return NULL; } @@ -2913,8 +2951,7 @@ static PyObject *_wrap_wxHtmlCell_SetLink(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_SetLink. Expected _wxHtmlLinkInfo_p."); return NULL; } @@ -3087,8 +3124,7 @@ static PyObject *_wrap_wxHtmlCell_Draw(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_Draw. Expected _wxDC_p."); return NULL; } @@ -3126,8 +3162,7 @@ static PyObject *_wrap_wxHtmlCell_DrawInvisible(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_DrawInvisible. Expected _wxDC_p."); return NULL; } @@ -3292,8 +3327,7 @@ static PyObject *_wrap_new_wxHtmlWordCell(PyObject *self, PyObject *args, PyObje return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxHtmlWordCell. Expected _wxDC_p."); return NULL; } @@ -3629,8 +3663,7 @@ static PyObject *_wrap_wxHtmlContainerCell_SetAlign(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetAlign. Expected _wxHtmlTag_p."); return NULL; } @@ -3696,8 +3729,7 @@ static PyObject *_wrap_wxHtmlContainerCell_SetWidthFloatFromTag(PyObject *self, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetWidthFloatFromTag. Expected _wxHtmlTag_p."); return NULL; } @@ -3779,6 +3811,36 @@ static PyObject *_wrap_wxHtmlContainerCell_SetBackgroundColour(PyObject *self, P return _resultobj; } +#define wxHtmlContainerCell_GetBackgroundColour(_swigobj) (_swigobj->GetBackgroundColour()) +static PyObject *_wrap_wxHtmlContainerCell_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxColour * _result; + wxHtmlContainerCell * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetBackgroundColour",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetBackgroundColour. Expected _wxHtmlContainerCell_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxColour (wxHtmlContainerCell_GetBackgroundColour(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxColour_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxHtmlContainerCell_SetBorder(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetBorder(_swigarg0,_swigarg1)) static PyObject *_wrap_wxHtmlContainerCell_SetBorder(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4012,6 +4074,78 @@ static PyObject *_wrap_new_wxHtmlWidgetCell(PyObject *self, PyObject *args, PyOb return _resultobj; } +static void *SwigwxPyHtmlFilterTowxObject(void *ptr) { + wxPyHtmlFilter *src; + wxObject *dest; + src = (wxPyHtmlFilter *) ptr; + dest = (wxObject *) src; + return (void *) dest; +} + +#define new_wxHtmlFilter() (new wxPyHtmlFilter()) +static PyObject *_wrap_new_wxHtmlFilter(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxHtmlFilter",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPyHtmlFilter *)new_wxHtmlFilter(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyHtmlFilter_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxHtmlFilter__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxHtmlFilter__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxHtmlFilter__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlFilter_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlFilter__setCallbackInfo. Expected _wxPyHtmlFilter_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxHtmlFilter__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void *SwigwxPyHtmlWindowTowxScrolledWindow(void *ptr) { wxPyHtmlWindow *src; wxScrolledWindow *dest; @@ -4395,7 +4529,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPage(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4432,7 +4566,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedAnchor(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -4469,7 +4603,7 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPageTitle(PyObject *self, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5100,6 +5234,33 @@ static PyObject *_wrap_wxHtmlWindow_HasAnchor(PyObject *self, PyObject *args, Py return _resultobj; } +static PyObject *_wrap_wxHtmlWindow_AddFilter(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyHtmlFilter * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "filter", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_AddFilter",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlFilter_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_AddFilter. Expected _wxPyHtmlFilter_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyHtmlWindow::AddFilter(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxHtmlWindow_base_OnLinkClicked(_swigobj,_swigarg0) (_swigobj->base_OnLinkClicked(_swigarg0)) static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -5120,8 +5281,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlLinkInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWindow_base_OnLinkClicked. Expected _wxHtmlLinkInfo_p."); return NULL; } @@ -5246,8 +5406,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnCellClicked(PyObject *self, PyObject } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxMouseEvent_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxMouseEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxHtmlWindow_base_OnCellClicked. Expected _wxMouseEvent_p."); return NULL; } @@ -6266,6 +6425,7 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlWindow_base_OnCellMouseHover", (PyCFunction) _wrap_wxHtmlWindow_base_OnCellMouseHover, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_base_OnSetTitle", (PyCFunction) _wrap_wxHtmlWindow_base_OnSetTitle, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_base_OnLinkClicked", (PyCFunction) _wrap_wxHtmlWindow_base_OnLinkClicked, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlWindow_AddFilter", (PyCFunction) _wrap_wxHtmlWindow_AddFilter, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_HasAnchor", (PyCFunction) _wrap_wxHtmlWindow_HasAnchor, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_ScrollToAnchor", (PyCFunction) _wrap_wxHtmlWindow_ScrollToAnchor, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWindow_GetParser", (PyCFunction) _wrap_wxHtmlWindow_GetParser, METH_VARARGS | METH_KEYWORDS }, @@ -6293,11 +6453,14 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlWindow_Create", (PyCFunction) _wrap_wxHtmlWindow_Create, METH_VARARGS | METH_KEYWORDS }, { "new_wxPreHtmlWindow", (PyCFunction) _wrap_new_wxPreHtmlWindow, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlWindow", (PyCFunction) _wrap_new_wxHtmlWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlFilter__setCallbackInfo", (PyCFunction) _wrap_wxHtmlFilter__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, + { "new_wxHtmlFilter", (PyCFunction) _wrap_new_wxHtmlFilter, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlWidgetCell", (PyCFunction) _wrap_new_wxHtmlWidgetCell, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlFontCell", (PyCFunction) _wrap_new_wxHtmlFontCell, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlColourCell", (PyCFunction) _wrap_new_wxHtmlColourCell, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_GetFirstCell", (PyCFunction) _wrap_wxHtmlContainerCell_GetFirstCell, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetBorder", (PyCFunction) _wrap_wxHtmlContainerCell_SetBorder, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlContainerCell_GetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetMinHeight", (PyCFunction) _wrap_wxHtmlContainerCell_SetMinHeight, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlContainerCell_SetWidthFloatFromTag", (PyCFunction) _wrap_wxHtmlContainerCell_SetWidthFloatFromTag, METH_VARARGS | METH_KEYWORDS }, @@ -6376,6 +6539,7 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlParser_PushTagHandler", (PyCFunction) _wrap_wxHtmlParser_PushTagHandler, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_GetSource", (PyCFunction) _wrap_wxHtmlParser_GetSource, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_AddTagHandler", (PyCFunction) _wrap_wxHtmlParser_AddTagHandler, METH_VARARGS | METH_KEYWORDS }, + { "wxHtmlParser_StopParsing", (PyCFunction) _wrap_wxHtmlParser_StopParsing, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_DoParsing", (PyCFunction) _wrap_wxHtmlParser_DoParsing, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_DoneParser", (PyCFunction) _wrap_wxHtmlParser_DoneParser, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlParser_InitParser", (PyCFunction) _wrap_wxHtmlParser_InitParser, METH_VARARGS | METH_KEYWORDS }, @@ -6397,7 +6561,6 @@ static PyMethodDef htmlcMethods[] = { { "wxHtmlLinkInfo_GetTarget", (PyCFunction) _wrap_wxHtmlLinkInfo_GetTarget, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlLinkInfo_GetHref", (PyCFunction) _wrap_wxHtmlLinkInfo_GetHref, METH_VARARGS | METH_KEYWORDS }, { "new_wxHtmlLinkInfo", (PyCFunction) _wrap_new_wxHtmlLinkInfo, METH_VARARGS | METH_KEYWORDS }, - { "wxHtmlWindow_AddFilter", (PyCFunction) _wrap_wxHtmlWindow_AddFilter, METH_VARARGS | METH_KEYWORDS }, { "wxHtmlWinParser_AddTagHandler", (PyCFunction) _wrap_wxHtmlWinParser_AddTagHandler, METH_VARARGS | METH_KEYWORDS }, { NULL, NULL } }; @@ -6469,6 +6632,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = { { "_wxObject","_wxHtmlPrintout",SwigwxHtmlPrintoutTowxObject}, { "_wxObject","_wxHtmlDCRenderer",SwigwxHtmlDCRendererTowxObject}, { "_wxObject","_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxObject}, + { "_wxObject","_wxPyHtmlFilter",SwigwxPyHtmlFilterTowxObject}, { "_wxObject","_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxObject}, { "_wxObject","_wxHtmlFontCell",SwigwxHtmlFontCellTowxObject}, { "_wxObject","_wxHtmlColourCell",SwigwxHtmlColourCellTowxObject}, @@ -6587,6 +6751,7 @@ SWIGEXPORT(void) inithtmlc() { wxPyPtrTypeMap_Add("wxHtmlTagHandler", "wxPyHtmlTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWinTagHandler", "wxPyHtmlWinTagHandler"); wxPyPtrTypeMap_Add("wxHtmlWindow", "wxPyHtmlWindow"); + wxPyPtrTypeMap_Add("wxHtmlFilter", "wxPyHtmlFilter"); { int i; for (i = 0; _swig_mapping[i].n1; i++) diff --git a/wxPython/src/msw/html.py b/wxPython/src/msw/html.py index 09c3573b15..8766b132a2 100644 --- a/wxPython/src/msw/html.py +++ b/wxPython/src/msw/html.py @@ -135,6 +135,9 @@ class wxHtmlParserPtr(wxObjectPtr): def DoParsing(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlParser_DoParsing,(self,) + _args, _kwargs) return val + def StopParsing(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlParser_StopParsing,(self,) + _args, _kwargs) + return val def AddTagHandler(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlParser_AddTagHandler,(self,) + _args, _kwargs) return val @@ -450,6 +453,10 @@ class wxHtmlContainerCellPtr(wxHtmlCellPtr): def SetBackgroundColour(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlContainerCell_SetBackgroundColour,(self,) + _args, _kwargs) return val + def GetBackgroundColour(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlContainerCell_GetBackgroundColour,(self,) + _args, _kwargs) + if val: val = wxColourPtr(val) ; val.thisown = 1 + return val def SetBorder(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlContainerCell_SetBorder,(self,) + _args, _kwargs) return val @@ -509,6 +516,24 @@ class wxHtmlWidgetCell(wxHtmlWidgetCellPtr): +class wxHtmlFilterPtr(wxObjectPtr): + def __init__(self,this): + self.this = this + self.thisown = 0 + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(htmlc.wxHtmlFilter__setCallbackInfo,(self,) + _args, _kwargs) + return val + def __repr__(self): + return "<C wxHtmlFilter instance at %s>" % (self.this,) +class wxHtmlFilter(wxHtmlFilterPtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(htmlc.new_wxHtmlFilter,_args,_kwargs) + self.thisown = 1 + self._setCallbackInfo(self, wxHtmlFilter) + + + + class wxHtmlWindowPtr(wxScrolledWindowPtr): def __init__(self,this): self.this = this @@ -624,9 +649,12 @@ class wxHtmlDCRendererPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlc=htmlc): - if self.thisown == 1 : - htmlc.delete_wxHtmlDCRenderer(self) + def __del__(self, delfunc=htmlc.delete_wxHtmlDCRenderer): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetDC(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlDCRenderer_SetDC,(self,) + _args, _kwargs) return val @@ -685,9 +713,12 @@ class wxHtmlEasyPrintingPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlc=htmlc): - if self.thisown == 1 : - htmlc.delete_wxHtmlEasyPrinting(self) + def __del__(self, delfunc=htmlc.delete_wxHtmlEasyPrinting): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def PreviewFile(self, *_args, **_kwargs): val = apply(htmlc.wxHtmlEasyPrinting_PreviewFile,(self,) + _args, _kwargs) return val @@ -789,4 +820,5 @@ wx.wxHtmlContainerCellPtr = wxHtmlContainerCellPtr wx.wxHtmlWidgetCellPtr = wxHtmlWidgetCellPtr wx.wxHtmlWindowPtr = wxHtmlWindowPtr wx.wxHtmlLinkInfoPtr = wxHtmlLinkInfoPtr +wx.wxHtmlFilterPtr = wxHtmlFilterPtr diff --git a/wxPython/src/msw/htmlhelp.cpp b/wxPython/src/msw/htmlhelp.cpp index 8f2b5a589a..fac54d89f1 100644 --- a/wxPython/src/msw/htmlhelp.cpp +++ b/wxPython/src/msw/htmlhelp.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -191,7 +190,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetBookFile(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -228,7 +227,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetTitle(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -265,7 +264,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetStart(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -302,7 +301,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetBasePath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -549,7 +548,7 @@ static PyObject *_wrap_wxHtmlBookRecord_GetFullPath(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -646,7 +645,7 @@ static PyObject *_wrap_wxHtmlContentsItem_GetName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -683,7 +682,7 @@ static PyObject *_wrap_wxHtmlContentsItem_GetPage(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -868,7 +867,7 @@ static PyObject *_wrap_wxHtmlSearchStatus_GetName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1076,7 +1075,7 @@ static PyObject *_wrap_wxHtmlHelpData_FindPageByName(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1118,7 +1117,7 @@ static PyObject *_wrap_wxHtmlHelpData_FindPageById(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif diff --git a/wxPython/src/msw/htmlhelp.py b/wxPython/src/msw/htmlhelp.py index fd3a642bac..33fdd1e5df 100644 --- a/wxPython/src/msw/htmlhelp.py +++ b/wxPython/src/msw/htmlhelp.py @@ -154,9 +154,12 @@ class wxHtmlHelpDataPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlhelpc=htmlhelpc): - if self.thisown == 1 : - htmlhelpc.delete_wxHtmlHelpData(self) + def __del__(self, delfunc=htmlhelpc.delete_wxHtmlHelpData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTempDir(self, *_args, **_kwargs): val = apply(htmlhelpc.wxHtmlHelpData_SetTempDir,(self,) + _args, _kwargs) return val @@ -246,9 +249,12 @@ class wxHtmlHelpControllerPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,htmlhelpc=htmlhelpc): - if self.thisown == 1 : - htmlhelpc.delete_wxHtmlHelpController(self) + def __del__(self, delfunc=htmlhelpc.delete_wxHtmlHelpController): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetTitleFormat(self, *_args, **_kwargs): val = apply(htmlhelpc.wxHtmlHelpController_SetTitleFormat,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/image.cpp b/wxPython/src/msw/image.cpp index 9e9d25c2bc..ecb63fc831 100644 --- a/wxPython/src/msw/image.cpp +++ b/wxPython/src/msw/image.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -226,8 +225,7 @@ static PyObject *_wrap_wxImageFromBitmap(PyObject *self, PyObject *args, PyObjec if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxImageFromBitmap",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImageFromBitmap. Expected _wxBitmap_p."); return NULL; } @@ -436,8 +434,7 @@ static PyObject *_wrap_wxBitmapFromImage(PyObject *self, PyObject *args, PyObjec if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxBitmapFromImage",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBitmapFromImage. Expected _wxImage_p."); return NULL; } @@ -492,7 +489,7 @@ static PyObject *_wrap_wxImageHandler_GetName(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -529,7 +526,7 @@ static PyObject *_wrap_wxImageHandler_GetExtension(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -594,7 +591,7 @@ static PyObject *_wrap_wxImageHandler_GetMimeType(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1669,8 +1666,7 @@ static PyObject *_wrap_wxImage_SetMaskFromImage(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImage_SetMaskFromImage. Expected _wxImage_p."); return NULL; } @@ -2251,8 +2247,7 @@ static PyObject *_wrap_wxImage_Paste(PyObject *self, PyObject *args, PyObject *k } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxImage_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxImage_Paste. Expected _wxImage_p."); return NULL; } @@ -2336,6 +2331,52 @@ static PyObject *_wrap_wxImage_GetData(PyObject *self, PyObject *args, PyObject return _resultobj; } +static void wxImage_SetDataBuffer(wxImage *self,PyObject * data) { + unsigned char* buffer; + int size; + + if (!PyArg_Parse(data, "w#", &buffer, &size)) + return; + + if (size != self->GetWidth() * self->GetHeight() * 3) { + PyErr_SetString(PyExc_TypeError, "Incorrect buffer size"); + return; + } + + self->SetData(buffer); + } +static PyObject *_wrap_wxImage_SetDataBuffer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxImage * _arg0; + PyObject * _arg1; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","data", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxImage_SetDataBuffer",_kwnames,&_argo0,&_obj1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxImage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxImage_SetDataBuffer. Expected _wxImage_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxImage_SetDataBuffer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void wxImage_SetData(wxImage *self,PyObject * data) { unsigned char* dataPtr; @@ -2863,7 +2904,7 @@ static PyObject *_wrap_wxImage_GetOption(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3162,6 +3203,7 @@ static PyMethodDef imagecMethods[] = { { "wxImage_GetMaskRed", (PyCFunction) _wrap_wxImage_GetMaskRed, METH_VARARGS | METH_KEYWORDS }, { "wxImage_SetMaskColour", (PyCFunction) _wrap_wxImage_SetMaskColour, METH_VARARGS | METH_KEYWORDS }, { "wxImage_SetData", (PyCFunction) _wrap_wxImage_SetData, METH_VARARGS | METH_KEYWORDS }, + { "wxImage_SetDataBuffer", (PyCFunction) _wrap_wxImage_SetDataBuffer, METH_VARARGS | METH_KEYWORDS }, { "wxImage_GetData", (PyCFunction) _wrap_wxImage_GetData, METH_VARARGS | METH_KEYWORDS }, { "wxImage_GetDataBuffer", (PyCFunction) _wrap_wxImage_GetDataBuffer, METH_VARARGS | METH_KEYWORDS }, { "wxImage_Paste", (PyCFunction) _wrap_wxImage_Paste, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/image.py b/wxPython/src/msw/image.py index 51a559ae51..d19383f178 100644 --- a/wxPython/src/msw/image.py +++ b/wxPython/src/msw/image.py @@ -192,9 +192,12 @@ class wxImagePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,imagec=imagec): - if self.thisown == 1 : - imagec.delete_wxImage(self) + def __del__(self, delfunc=imagec.delete_wxImage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Create(self, *_args, **_kwargs): val = apply(imagec.wxImage_Create,(self,) + _args, _kwargs) return val @@ -271,6 +274,9 @@ class wxImagePtr(wxObjectPtr): def GetData(self, *_args, **_kwargs): val = apply(imagec.wxImage_GetData,(self,) + _args, _kwargs) return val + def SetDataBuffer(self, *_args, **_kwargs): + val = apply(imagec.wxImage_SetDataBuffer,(self,) + _args, _kwargs) + return val def SetData(self, *_args, **_kwargs): val = apply(imagec.wxImage_SetData,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/mdi.cpp b/wxPython/src/msw/mdi.cpp index ebf0951e78..6e8451aa1b 100644 --- a/wxPython/src/msw/mdi.cpp +++ b/wxPython/src/msw/mdi.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/src/msw/misc.cpp b/wxPython/src/msw/misc.cpp index e601f3767a..4fcae32416 100644 --- a/wxPython/src/msw/misc.cpp +++ b/wxPython/src/msw/misc.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -59,6 +58,7 @@ extern PyObject *SWIG_newvarlink(void); #include <wx/resource.h> #include <wx/tooltip.h> #include <wx/busyinfo.h> +#include <wx/geometry.h> static PyObject* t_output_helper(PyObject* target, PyObject* o) { @@ -102,7 +102,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { if (dest != wxRect(0,0,0,0)) { wxPyBeginBlockThreads(); wxRect* newRect = new wxRect(dest); - obj = wxPyConstructObject((void*)newRect, "wxRect"); + obj = wxPyConstructObject((void*)newRect, wxT("wxRect")); PyObject* one = PyInt_FromLong(1); PyObject_SetAttrString(obj, "thisown", one); Py_DECREF(one); @@ -113,13 +113,6 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { return Py_None; } - wxString wxGetResource(const wxString& section, const wxString& entry, - const wxString& file = wxPyEmptyString) { - wxChar * retval; - wxGetResource(section, entry, &retval, file); - return retval; - } - #if 0 // we want to use the definition from the header, not the // one SWIG will generate. extern wxAcceleratorTable wxNullAcceleratorTable; @@ -201,43 +194,6 @@ static PyObject *_wrap_wxRegisterId(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } -static PyObject *_wrap_NewId(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - long _result; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":NewId",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (long )wxNewId(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("l",_result); - return _resultobj; -} - -static PyObject *_wrap_RegisterId(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - long _arg0; - char *_kwnames[] = { "id", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:RegisterId",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxRegisterId(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static PyObject *_wrap_wxGetCurrentId(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; long _result; @@ -403,7 +359,7 @@ static PyObject *_wrap_wxNow(PyObject *self, PyObject *args, PyObject *kwargs) { if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -516,7 +472,7 @@ static PyObject *_wrap_wxGetOsDescription(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -641,67 +597,6 @@ static PyObject *_wrap_wxEnableTopLevelWindows(PyObject *self, PyObject *args, P return _resultobj; } -static PyObject *_wrap_wxGetResource(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxString * _result; - wxString * _arg0; - wxString * _arg1; - wxString * _arg2 = (wxString *) &wxPyEmptyString; - PyObject * _obj0 = 0; - PyObject * _obj1 = 0; - PyObject * _obj2 = 0; - char *_kwnames[] = { "section","entry","file", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|O:wxGetResource",_kwnames,&_obj0,&_obj1,&_obj2)) - return NULL; -{ - _arg0 = wxString_in_helper(_obj0); - if (_arg0 == NULL) - return NULL; -} -{ - _arg1 = wxString_in_helper(_obj1); - if (_arg1 == NULL) - return NULL; -} - if (_obj2) -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxString (wxGetResource(*_arg0,*_arg1,*_arg2)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ -#if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); -#else - _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); -#endif -} -{ - if (_obj0) - delete _arg0; -} -{ - if (_obj1) - delete _arg1; -} -{ - if (_obj2) - delete _arg2; -} -{ - delete _result; -} - return _resultobj; -} - static PyObject *_wrap_wxStripMenuCodes(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxString * _result; @@ -725,7 +620,7 @@ static PyObject *_wrap_wxStripMenuCodes(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -756,7 +651,7 @@ static PyObject *_wrap_wxGetEmailAddress(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -783,7 +678,7 @@ static PyObject *_wrap_wxGetHostName(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -810,7 +705,7 @@ static PyObject *_wrap_wxGetFullHostName(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -837,7 +732,7 @@ static PyObject *_wrap_wxGetUserId(PyObject *self, PyObject *args, PyObject *kwa if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -864,7 +759,7 @@ static PyObject *_wrap_wxGetUserName(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -891,7 +786,7 @@ static PyObject *_wrap_wxGetHomeDir(PyObject *self, PyObject *args, PyObject *kw if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -926,7 +821,7 @@ static PyObject *_wrap_wxGetUserHome(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1038,7 +933,7 @@ static PyObject *_wrap_wxObject_GetClassName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1473,24 +1368,26 @@ static PyObject *_wrap_wxSize_asTuple(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static int wxSize___cmp__(wxSize *self,const wxSize * sz) { - if (! sz) return 1; - if (*self == *sz) return 0; - return -1; +static bool wxSize___eq__(wxSize *self,PyObject * obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxSize___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxSize___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxSize * _arg0; - wxSize * _arg1; + PyObject * _arg1; wxSize temp; PyObject * _obj0 = 0; - wxSize temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","sz", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -1498,13 +1395,50 @@ static PyObject *_wrap_wxSize___cmp__(PyObject *self, PyObject *args, PyObject * return NULL; } { - _arg1 = &temp0; - if (! wxSize_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxSize___cmp__(_arg0,_arg1); + _result = (bool )wxSize___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxSize___ne__(wxSize *self,PyObject * obj) { + wxSize tmp; + wxSize* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxSize_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxSize___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSize * _arg0; + PyObject * _arg1; + wxSize temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSize___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxSize_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSize___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1745,9 +1679,8 @@ static PyObject *_wrap_wxRealPoint_asTuple(PyObject *self, PyObject *args, PyObj return _resultobj; } -static wxRealPoint wxRealPoint___add__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return *self; - return *self + *p; +static wxRealPoint wxRealPoint___add__(wxRealPoint *self,const wxRealPoint & p) { + return *self + p; } static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1776,7 +1709,7 @@ static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObj } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRealPoint (wxRealPoint___add__(_arg0,_arg1)); + _result = new wxRealPoint (wxRealPoint___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1785,9 +1718,8 @@ static PyObject *_wrap_wxRealPoint___add__(PyObject *self, PyObject *args, PyObj return _resultobj; } -static wxRealPoint wxRealPoint___sub__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return *self; - return *self - *p; +static wxRealPoint wxRealPoint___sub__(wxRealPoint *self,const wxRealPoint & p) { + return *self - p; } static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1816,7 +1748,7 @@ static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObj } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRealPoint (wxRealPoint___sub__(_arg0,_arg1)); + _result = new wxRealPoint (wxRealPoint___sub__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1825,24 +1757,26 @@ static PyObject *_wrap_wxRealPoint___sub__(PyObject *self, PyObject *args, PyObj return _resultobj; } -static int wxRealPoint___cmp__(wxRealPoint *self,const wxRealPoint * p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; +static bool wxRealPoint___eq__(wxRealPoint *self,PyObject * obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxRealPoint___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxRealPoint___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxRealPoint * _arg0; - wxRealPoint * _arg1; + PyObject * _arg1; wxRealPoint temp; PyObject * _obj0 = 0; - wxRealPoint temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","p", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -1850,13 +1784,50 @@ static PyObject *_wrap_wxRealPoint___cmp__(PyObject *self, PyObject *args, PyObj return NULL; } { - _arg1 = &temp0; - if (! wxRealPoint_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxRealPoint___cmp__(_arg0,_arg1); + _result = (bool )wxRealPoint___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxRealPoint___ne__(wxRealPoint *self,PyObject * obj) { + wxRealPoint tmp; + wxRealPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRealPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxRealPoint___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRealPoint * _arg0; + PyObject * _arg1; + wxRealPoint temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRealPoint___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRealPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRealPoint___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2097,9 +2068,8 @@ static PyObject *_wrap_wxPoint_asTuple(PyObject *self, PyObject *args, PyObject return _resultobj; } -static wxPoint wxPoint___add__(wxPoint *self,const wxPoint * p) { - if (! p) return *self; - return *self + *p; +static wxPoint wxPoint___add__(wxPoint *self,const wxPoint & p) { + return *self + p; } static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2128,7 +2098,7 @@ static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxPoint (wxPoint___add__(_arg0,_arg1)); + _result = new wxPoint (wxPoint___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2137,9 +2107,8 @@ static PyObject *_wrap_wxPoint___add__(PyObject *self, PyObject *args, PyObject return _resultobj; } -static wxPoint wxPoint___sub__(wxPoint *self,const wxPoint * p) { - if (! p) return *self; - return *self - *p; +static wxPoint wxPoint___sub__(wxPoint *self,const wxPoint & p) { + return *self - p; } static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2168,7 +2137,7 @@ static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxPoint (wxPoint___sub__(_arg0,_arg1)); + _result = new wxPoint (wxPoint___sub__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2177,24 +2146,26 @@ static PyObject *_wrap_wxPoint___sub__(PyObject *self, PyObject *args, PyObject return _resultobj; } -static int wxPoint___cmp__(wxPoint *self,const wxPoint * p) { - if (! p) return 1; - if (*self == *p) return 0; - return -1; +static bool wxPoint___eq__(wxPoint *self,PyObject * obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxPoint___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxPoint___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxPoint * _arg0; - wxPoint * _arg1; + PyObject * _arg1; wxPoint temp; PyObject * _obj0 = 0; - wxPoint temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","p", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -2202,13 +2173,50 @@ static PyObject *_wrap_wxPoint___cmp__(PyObject *self, PyObject *args, PyObject return NULL; } { - _arg1 = &temp0; - if (! wxPoint_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxPoint___cmp__(_arg0,_arg1); + _result = (bool )wxPoint___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxPoint___ne__(wxPoint *self,PyObject * obj) { + wxPoint tmp; + wxPoint* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxPoint___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint * _arg0; + PyObject * _arg1; + wxPoint temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint___ne__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2224,7 +2232,7 @@ static PyObject *_wrap_new_wxRect(PyObject *self, PyObject *args, PyObject *kwar int _arg1 = (int ) 0; int _arg2 = (int ) 0; int _arg3 = (int ) 0; - char *_kwnames[] = { "x","y","w","h", NULL }; + char *_kwnames[] = { "x","y","width","height", NULL }; char _ptemp[128]; self = self; @@ -2841,6 +2849,35 @@ static PyObject *_wrap_wxRect_SetBottom(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxRect_Deflate(_swigobj,_swigarg0,_swigarg1) (_swigobj->Deflate(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_Deflate(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1; + int _arg2; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","dx","dy", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_Deflate",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Deflate(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxRect_Inflate(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inflate(_swigarg0,_swigarg1)) static PyObject *_wrap_wxRect_Inflate(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2870,8 +2907,8 @@ static PyObject *_wrap_wxRect_Inflate(PyObject *self, PyObject *args, PyObject * return _resultobj; } -#define wxRect_Inside(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inside(_swigarg0,_swigarg1)) -static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxRect_InsideXY(_swigobj,_swigarg0,_swigarg1) (_swigobj->Inside(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_InsideXY(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxRect * _arg0; @@ -2882,7 +2919,7 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k char *_kwnames[] = { "self","cx","cy", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_Inside",_kwnames,&_obj0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_InsideXY",_kwnames,&_obj0,&_arg1,&_arg2)) return NULL; { _arg0 = &temp; @@ -2891,7 +2928,7 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxRect_Inside(_arg0,_arg1,_arg2); + _result = (bool )wxRect_InsideXY(_arg0,_arg1,_arg2); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2899,6 +2936,140 @@ static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *k return _resultobj; } +#define wxRect_Inside(_swigobj,_swigarg0) (_swigobj->Inside(_swigarg0)) +static PyObject *_wrap_wxRect_Inside(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + wxPoint * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxPoint temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Inside",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect_Inside(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxRect_Intersects(_swigobj,_swigarg0) (_swigobj->Intersects(_swigarg0)) +static PyObject *_wrap_wxRect_Intersects(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + wxRect * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxRect temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","rect", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Intersects",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxRect_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect_Intersects(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxRect_OffsetXY(_swigobj,_swigarg0,_swigarg1) (_swigobj->Offset(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxRect_OffsetXY(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1; + int _arg2; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","dx","dy", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxRect_OffsetXY",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_OffsetXY(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxRect_Offset(_swigobj,_swigarg0) (_swigobj->Offset(_swigarg0)) +static PyObject *_wrap_wxRect_Offset(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + wxPoint * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + wxPoint temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect_Offset",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Offset(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxRect_x_set(_swigobj,_swigval) (_swigobj->x = _swigval,_swigval) static PyObject *_wrap_wxRect_x_set(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3119,6 +3290,42 @@ static PyObject *_wrap_wxRect_height_get(PyObject *self, PyObject *args, PyObjec return _resultobj; } +static void wxRect_Set(wxRect *self,int x,int y,int width,int height) { + self->x = x; + self->y = y; + self->width = width; + self->height = height; + } +static PyObject *_wrap_wxRect_Set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxRect * _arg0; + int _arg1 = (int ) 0; + int _arg2 = (int ) 0; + int _arg3 = (int ) 0; + int _arg4 = (int ) 0; + wxRect temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","x","y","width","height", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iiii:wxRect_Set",_kwnames,&_obj0,&_arg1,&_arg2,&_arg3,&_arg4)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxRect_Set(_arg0,_arg1,_arg2,_arg3,_arg4); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static PyObject * wxRect_asTuple(wxRect *self) { wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(4); @@ -3157,9 +3364,8 @@ static PyObject *_wrap_wxRect_asTuple(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static wxRect wxRect___add__(wxRect *self,const wxRect * rect) { - if (! rect) return *self; - return *self + *rect; +static wxRect wxRect___add__(wxRect *self,const wxRect & rect) { + return *self + rect; } static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3188,7 +3394,7 @@ static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject * } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxRect (wxRect___add__(_arg0,_arg1)); + _result = new wxRect (wxRect___add__(_arg0,*_arg1)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3197,24 +3403,26 @@ static PyObject *_wrap_wxRect___add__(PyObject *self, PyObject *args, PyObject * return _resultobj; } -static int wxRect___cmp__(wxRect *self,const wxRect * rect) { - if (! rect) return 1; - if (*self == *rect) return 0; - return -1; +static bool wxRect___eq__(wxRect *self,PyObject * obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; } -static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxRect___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - int _result; + bool _result; wxRect * _arg0; - wxRect * _arg1; + PyObject * _arg1; wxRect temp; PyObject * _obj0 = 0; - wxRect temp0; PyObject * _obj1 = 0; - char *_kwnames[] = { "self","rect", NULL }; + char *_kwnames[] = { "self","obj", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___cmp__",_kwnames,&_obj0,&_obj1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___eq__",_kwnames,&_obj0,&_obj1)) return NULL; { _arg0 = &temp; @@ -3222,13 +3430,11 @@ static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject * return NULL; } { - _arg1 = &temp0; - if (! wxRect_helper(_obj1, &_arg1)) - return NULL; + _arg1 = _obj1; } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxRect___cmp__(_arg0,_arg1); + _result = (bool )wxRect___eq__(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3236,6 +3442,942 @@ static PyObject *_wrap_wxRect___cmp__(PyObject *self, PyObject *args, PyObject * return _resultobj; } +static bool wxRect___ne__(wxRect *self,PyObject * obj) { + wxRect tmp; + wxRect* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxRect_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxRect___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxRect * _arg0; + PyObject * _arg1; + wxRect temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxRect___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxRect_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxRect___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_x_set(_swigobj,_swigval) (_swigobj->m_x = _swigval,_swigval) +static PyObject *_wrap_wxPoint2DDouble_m_x_set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","m_x", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_m_x_set",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_x_set(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_x_get(_swigobj) ((double ) _swigobj->m_x) +static PyObject *_wrap_wxPoint2DDouble_m_x_get(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_m_x_get",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_x_get(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_y_set(_swigobj,_swigval) (_swigobj->m_y = _swigval,_swigval) +static PyObject *_wrap_wxPoint2DDouble_m_y_set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","m_y", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_m_y_set",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_y_set(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_m_y_get(_swigobj) ((double ) _swigobj->m_y) +static PyObject *_wrap_wxPoint2DDouble_m_y_get(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_m_y_get",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_m_y_get(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define new_wxPoint2DDouble(_swigarg0,_swigarg1) (new wxPoint2DDouble(_swigarg0,_swigarg1)) +static PyObject *_wrap_new_wxPoint2DDouble(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + double _arg0 = (double ) 0; + double _arg1 = (double ) 0; + char *_kwnames[] = { "x","y", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|dd:new_wxPoint2DDouble",_kwnames,&_arg0,&_arg1)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDouble(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define new_wxPoint2DDoubleCopy(_swigarg0) (new wxPoint2DDouble(_swigarg0)) +static PyObject *_wrap_new_wxPoint2DDoubleCopy(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPoint2DDoubleCopy",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDoubleCopy(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define new_wxPoint2DDoubleFromPoint(_swigarg0) (new wxPoint2DDouble(_swigarg0)) +static PyObject *_wrap_new_wxPoint2DDoubleFromPoint(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint * _arg0; + wxPoint temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPoint2DDoubleFromPoint",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (wxPoint2DDouble *)new_wxPoint2DDoubleFromPoint(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +#define wxPoint2DDouble_GetFloor(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetFloor(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPoint2DDouble_GetFloor(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + int * _arg1; + int temp; + int * _arg2; + int temp0; + wxPoint2DDouble temp1; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; +{ + _arg1 = &temp; +} +{ + _arg2 = &temp0; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetFloor",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp1; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_GetFloor(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg1)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} + return _resultobj; +} + +#define wxPoint2DDouble_GetRounded(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetRounded(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPoint2DDouble_GetRounded(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + int * _arg1; + int temp; + int * _arg2; + int temp0; + wxPoint2DDouble temp1; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; +{ + _arg1 = &temp; +} +{ + _arg2 = &temp0; +} + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetRounded",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp1; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_GetRounded(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg1)); + _resultobj = t_output_helper(_resultobj, o); +} +{ + PyObject *o; + o = PyInt_FromLong((long) (*_arg2)); + _resultobj = t_output_helper(_resultobj, o); +} + return _resultobj; +} + +#define wxPoint2DDouble_GetVectorLength(_swigobj) (_swigobj->GetVectorLength()) +static PyObject *_wrap_wxPoint2DDouble_GetVectorLength(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetVectorLength",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetVectorLength(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetVectorAngle(_swigobj) (_swigobj->GetVectorAngle()) +static PyObject *_wrap_wxPoint2DDouble_GetVectorAngle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_GetVectorAngle",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetVectorAngle(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_SetVectorLength(_swigobj,_swigarg0) (_swigobj->SetVectorLength(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_SetVectorLength(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","length", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_SetVectorLength",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_SetVectorLength(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxPoint2DDouble_SetVectorAngle(_swigobj,_swigarg0) (_swigobj->SetVectorAngle(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_SetVectorAngle(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","degrees", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Od:wxPoint2DDouble_SetVectorAngle",_kwnames,&_obj0,&_arg1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_SetVectorAngle(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxPoint2DDouble_GetDistance(_swigobj,_swigarg0) (_swigobj->GetDistance(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDistance(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDistance",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDistance(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetDistanceSquare(_swigobj,_swigarg0) (_swigobj->GetDistanceSquare(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDistanceSquare(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDistanceSquare",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDistanceSquare(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetDotProduct(_swigobj,_swigarg0) (_swigobj->GetDotProduct(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetDotProduct(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","vec", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetDotProduct",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetDotProduct(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +#define wxPoint2DDouble_GetCrossProduct(_swigobj,_swigarg0) (_swigobj->GetCrossProduct(_swigarg0)) +static PyObject *_wrap_wxPoint2DDouble_GetCrossProduct(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + double _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","vec", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble_GetCrossProduct",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (double )wxPoint2DDouble_GetCrossProduct(_arg0,*_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("d",_result); + return _resultobj; +} + +static void wxPoint2DDouble_Set(wxPoint2DDouble *self,double x,double y) { + self->m_x = x; + self->m_y = y; + } +static PyObject *_wrap_wxPoint2DDouble_Set(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _arg0; + double _arg1 = (double ) 0; + double _arg2 = (double ) 0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self","x","y", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|dd:wxPoint2DDouble_Set",_kwnames,&_obj0,&_arg1,&_arg2)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble_Set(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static wxPoint2DDouble wxPoint2DDouble___neg__(wxPoint2DDouble *self) { return -(*self); } +static PyObject *_wrap_wxPoint2DDouble___neg__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble___neg__",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxPoint2DDouble (wxPoint2DDouble___neg__(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___iadd__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) += pt; } +static PyObject *_wrap_wxPoint2DDouble___iadd__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___iadd__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___iadd__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___isub__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) -= pt; } +static PyObject *_wrap_wxPoint2DDouble___isub__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___isub__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___isub__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___imul__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) *= pt; } +static PyObject *_wrap_wxPoint2DDouble___imul__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___imul__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___imul__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static wxPoint2DDouble & wxPoint2DDouble___idiv__(wxPoint2DDouble *self,const wxPoint2DDouble & pt) { return (*self) /= pt; } +static PyObject *_wrap_wxPoint2DDouble___idiv__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPoint2DDouble * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + wxPoint2DDouble temp0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","pt", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___idiv__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = &temp0; + if (! wxPoint2DDouble_helper(_obj1, &_arg1)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPoint2DDouble & _result_ref = wxPoint2DDouble___idiv__(_arg0,*_arg1); + _result = (wxPoint2DDouble *) &_result_ref; + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} if (_result) { + SWIG_MakePtr(_ptemp, (char *) _result,"_wxPoint2DDouble_p"); + _resultobj = Py_BuildValue("s",_ptemp); + } else { + Py_INCREF(Py_None); + _resultobj = Py_None; + } + return _resultobj; +} + +static bool wxPoint2DDouble___eq__(wxPoint2DDouble *self,PyObject * obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return FALSE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return FALSE; + return *self == *ptr; + } +static PyObject *_wrap_wxPoint2DDouble___eq__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint2DDouble * _arg0; + PyObject * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___eq__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint2DDouble___eq__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static bool wxPoint2DDouble___ne__(wxPoint2DDouble *self,PyObject * obj) { + wxPoint2DDouble tmp; + wxPoint2DDouble* ptr = &tmp; + if (obj == Py_None) return TRUE; + wxPyBLOCK_THREADS(bool success = wxPoint2DDouble_helper(obj, &ptr); PyErr_Clear()); + if (! success) return TRUE; + return *self != *ptr; + } +static PyObject *_wrap_wxPoint2DDouble___ne__(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPoint2DDouble * _arg0; + PyObject * _arg1; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + char *_kwnames[] = { "self","obj", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPoint2DDouble___ne__",_kwnames,&_obj0,&_obj1)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + _arg1 = _obj1; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPoint2DDouble___ne__(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject * wxPoint2DDouble_asTuple(wxPoint2DDouble *self) { + wxPyBeginBlockThreads(); + PyObject* tup = PyTuple_New(2); + PyTuple_SET_ITEM(tup, 0, PyFloat_FromDouble(self->m_x)); + PyTuple_SET_ITEM(tup, 1, PyFloat_FromDouble(self->m_y)); + wxPyEndBlockThreads(); + return tup; + } +static PyObject *_wrap_wxPoint2DDouble_asTuple(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + PyObject * _result; + wxPoint2DDouble * _arg0; + wxPoint2DDouble temp; + PyObject * _obj0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPoint2DDouble_asTuple",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = &temp; + if (! wxPoint2DDouble_helper(_obj0, &_arg0)) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (PyObject *)wxPoint2DDouble_asTuple(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ + _resultobj = _result; +} + return _resultobj; +} + static void *SwigwxIndividualLayoutConstraintTowxObject(void *ptr) { wxIndividualLayoutConstraint *src; wxObject *dest; @@ -4272,9 +5414,41 @@ static PyMethodDef misccMethods[] = { { "wxIndividualLayoutConstraint_AsIs", (PyCFunction) _wrap_wxIndividualLayoutConstraint_AsIs, METH_VARARGS | METH_KEYWORDS }, { "wxIndividualLayoutConstraint_Absolute", (PyCFunction) _wrap_wxIndividualLayoutConstraint_Absolute, METH_VARARGS | METH_KEYWORDS }, { "wxIndividualLayoutConstraint_Above", (PyCFunction) _wrap_wxIndividualLayoutConstraint_Above, METH_VARARGS | METH_KEYWORDS }, - { "wxRect___cmp__", (PyCFunction) _wrap_wxRect___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_asTuple", (PyCFunction) _wrap_wxPoint2DDouble_asTuple, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___ne__", (PyCFunction) _wrap_wxPoint2DDouble___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___eq__", (PyCFunction) _wrap_wxPoint2DDouble___eq__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___idiv__", (PyCFunction) _wrap_wxPoint2DDouble___idiv__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___imul__", (PyCFunction) _wrap_wxPoint2DDouble___imul__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___isub__", (PyCFunction) _wrap_wxPoint2DDouble___isub__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___iadd__", (PyCFunction) _wrap_wxPoint2DDouble___iadd__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble___neg__", (PyCFunction) _wrap_wxPoint2DDouble___neg__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_Set", (PyCFunction) _wrap_wxPoint2DDouble_Set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetCrossProduct", (PyCFunction) _wrap_wxPoint2DDouble_GetCrossProduct, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDotProduct", (PyCFunction) _wrap_wxPoint2DDouble_GetDotProduct, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDistanceSquare", (PyCFunction) _wrap_wxPoint2DDouble_GetDistanceSquare, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetDistance", (PyCFunction) _wrap_wxPoint2DDouble_GetDistance, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_SetVectorAngle", (PyCFunction) _wrap_wxPoint2DDouble_SetVectorAngle, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_SetVectorLength", (PyCFunction) _wrap_wxPoint2DDouble_SetVectorLength, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetVectorAngle", (PyCFunction) _wrap_wxPoint2DDouble_GetVectorAngle, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetVectorLength", (PyCFunction) _wrap_wxPoint2DDouble_GetVectorLength, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetRounded", (PyCFunction) _wrap_wxPoint2DDouble_GetRounded, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_GetFloor", (PyCFunction) _wrap_wxPoint2DDouble_GetFloor, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDoubleFromPoint", (PyCFunction) _wrap_new_wxPoint2DDoubleFromPoint, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDoubleCopy", (PyCFunction) _wrap_new_wxPoint2DDoubleCopy, METH_VARARGS | METH_KEYWORDS }, + { "new_wxPoint2DDouble", (PyCFunction) _wrap_new_wxPoint2DDouble, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_y_get", (PyCFunction) _wrap_wxPoint2DDouble_m_y_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_y_set", (PyCFunction) _wrap_wxPoint2DDouble_m_y_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_x_get", (PyCFunction) _wrap_wxPoint2DDouble_m_x_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_x_set", (PyCFunction) _wrap_wxPoint2DDouble_m_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_y_get", (PyCFunction) _wrap_wxPoint2DDouble_m_y_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_y_set", (PyCFunction) _wrap_wxPoint2DDouble_m_y_set, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_x_get", (PyCFunction) _wrap_wxPoint2DDouble_m_x_get, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint2DDouble_m_x_set", (PyCFunction) _wrap_wxPoint2DDouble_m_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxRect___ne__", (PyCFunction) _wrap_wxRect___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxRect___eq__", (PyCFunction) _wrap_wxRect___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxRect___add__", (PyCFunction) _wrap_wxRect___add__, METH_VARARGS | METH_KEYWORDS }, { "wxRect_asTuple", (PyCFunction) _wrap_wxRect_asTuple, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Set", (PyCFunction) _wrap_wxRect_Set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_height_get", (PyCFunction) _wrap_wxRect_height_get, METH_VARARGS | METH_KEYWORDS }, { "wxRect_height_set", (PyCFunction) _wrap_wxRect_height_set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_width_get", (PyCFunction) _wrap_wxRect_width_get, METH_VARARGS | METH_KEYWORDS }, @@ -4283,8 +5457,13 @@ static PyMethodDef misccMethods[] = { { "wxRect_y_set", (PyCFunction) _wrap_wxRect_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxRect_x_get", (PyCFunction) _wrap_wxRect_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxRect_x_set", (PyCFunction) _wrap_wxRect_x_set, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Offset", (PyCFunction) _wrap_wxRect_Offset, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_OffsetXY", (PyCFunction) _wrap_wxRect_OffsetXY, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Intersects", (PyCFunction) _wrap_wxRect_Intersects, METH_VARARGS | METH_KEYWORDS }, { "wxRect_Inside", (PyCFunction) _wrap_wxRect_Inside, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_InsideXY", (PyCFunction) _wrap_wxRect_InsideXY, METH_VARARGS | METH_KEYWORDS }, { "wxRect_Inflate", (PyCFunction) _wrap_wxRect_Inflate, METH_VARARGS | METH_KEYWORDS }, + { "wxRect_Deflate", (PyCFunction) _wrap_wxRect_Deflate, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetBottom", (PyCFunction) _wrap_wxRect_SetBottom, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetTop", (PyCFunction) _wrap_wxRect_SetTop, METH_VARARGS | METH_KEYWORDS }, { "wxRect_SetRight", (PyCFunction) _wrap_wxRect_SetRight, METH_VARARGS | METH_KEYWORDS }, @@ -4307,7 +5486,8 @@ static PyMethodDef misccMethods[] = { { "wxRect_GetX", (PyCFunction) _wrap_wxRect_GetX, METH_VARARGS | METH_KEYWORDS }, { "delete_wxRect", (PyCFunction) _wrap_delete_wxRect, METH_VARARGS | METH_KEYWORDS }, { "new_wxRect", (PyCFunction) _wrap_new_wxRect, METH_VARARGS | METH_KEYWORDS }, - { "wxPoint___cmp__", (PyCFunction) _wrap_wxPoint___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint___ne__", (PyCFunction) _wrap_wxPoint___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxPoint___eq__", (PyCFunction) _wrap_wxPoint___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint___sub__", (PyCFunction) _wrap_wxPoint___sub__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint___add__", (PyCFunction) _wrap_wxPoint___add__, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_asTuple", (PyCFunction) _wrap_wxPoint_asTuple, METH_VARARGS | METH_KEYWORDS }, @@ -4318,7 +5498,8 @@ static PyMethodDef misccMethods[] = { { "wxPoint_y_set", (PyCFunction) _wrap_wxPoint_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_x_get", (PyCFunction) _wrap_wxPoint_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxPoint_x_set", (PyCFunction) _wrap_wxPoint_x_set, METH_VARARGS | METH_KEYWORDS }, - { "wxRealPoint___cmp__", (PyCFunction) _wrap_wxRealPoint___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxRealPoint___ne__", (PyCFunction) _wrap_wxRealPoint___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxRealPoint___eq__", (PyCFunction) _wrap_wxRealPoint___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint___sub__", (PyCFunction) _wrap_wxRealPoint___sub__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint___add__", (PyCFunction) _wrap_wxRealPoint___add__, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_asTuple", (PyCFunction) _wrap_wxRealPoint_asTuple, METH_VARARGS | METH_KEYWORDS }, @@ -4329,7 +5510,8 @@ static PyMethodDef misccMethods[] = { { "wxRealPoint_y_set", (PyCFunction) _wrap_wxRealPoint_y_set, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_x_get", (PyCFunction) _wrap_wxRealPoint_x_get, METH_VARARGS | METH_KEYWORDS }, { "wxRealPoint_x_set", (PyCFunction) _wrap_wxRealPoint_x_set, METH_VARARGS | METH_KEYWORDS }, - { "wxSize___cmp__", (PyCFunction) _wrap_wxSize___cmp__, METH_VARARGS | METH_KEYWORDS }, + { "wxSize___ne__", (PyCFunction) _wrap_wxSize___ne__, METH_VARARGS | METH_KEYWORDS }, + { "wxSize___eq__", (PyCFunction) _wrap_wxSize___eq__, METH_VARARGS | METH_KEYWORDS }, { "wxSize_asTuple", (PyCFunction) _wrap_wxSize_asTuple, METH_VARARGS | METH_KEYWORDS }, { "wxSize_SetHeight", (PyCFunction) _wrap_wxSize_SetHeight, METH_VARARGS | METH_KEYWORDS }, { "wxSize_SetWidth", (PyCFunction) _wrap_wxSize_SetWidth, METH_VARARGS | METH_KEYWORDS }, @@ -4360,7 +5542,6 @@ static PyMethodDef misccMethods[] = { { "wxGetHostName", (PyCFunction) _wrap_wxGetHostName, METH_VARARGS | METH_KEYWORDS }, { "wxGetEmailAddress", (PyCFunction) _wrap_wxGetEmailAddress, METH_VARARGS | METH_KEYWORDS }, { "wxStripMenuCodes", (PyCFunction) _wrap_wxStripMenuCodes, METH_VARARGS | METH_KEYWORDS }, - { "wxGetResource", (PyCFunction) _wrap_wxGetResource, METH_VARARGS | METH_KEYWORDS }, { "wxEnableTopLevelWindows", (PyCFunction) _wrap_wxEnableTopLevelWindows, METH_VARARGS | METH_KEYWORDS }, { "wxYieldIfNeeded", (PyCFunction) _wrap_wxYieldIfNeeded, METH_VARARGS | METH_KEYWORDS }, { "wxYield", (PyCFunction) _wrap_wxYield, METH_VARARGS | METH_KEYWORDS }, @@ -4379,8 +5560,6 @@ static PyMethodDef misccMethods[] = { { "wxEndBusyCursor", (PyCFunction) _wrap_wxEndBusyCursor, METH_VARARGS | METH_KEYWORDS }, { "wxBell", (PyCFunction) _wrap_wxBell, METH_VARARGS | METH_KEYWORDS }, { "wxGetCurrentId", (PyCFunction) _wrap_wxGetCurrentId, METH_VARARGS | METH_KEYWORDS }, - { "RegisterId", (PyCFunction) _wrap_RegisterId, METH_VARARGS | METH_KEYWORDS }, - { "NewId", (PyCFunction) _wrap_NewId, METH_VARARGS | METH_KEYWORDS }, { "wxRegisterId", (PyCFunction) _wrap_wxRegisterId, METH_VARARGS | METH_KEYWORDS }, { "wxNewId", (PyCFunction) _wrap_wxNewId, METH_VARARGS | METH_KEYWORDS }, { "wxIntersectRect", (PyCFunction) _wrap_wxIntersectRect, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/misc.py b/wxPython/src/msw/misc.py index 6b6aa5421e..892e56dcf7 100644 --- a/wxPython/src/msw/misc.py +++ b/wxPython/src/msw/misc.py @@ -23,9 +23,12 @@ class wxSizePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxSize(self) + def __del__(self, delfunc=miscc.delete_wxSize): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxSize_Set,(self,) + _args, _kwargs) return val @@ -50,8 +53,11 @@ class wxSizePtr : def asTuple(self, *_args, **_kwargs): val = apply(miscc.wxSize_asTuple,(self,) + _args, _kwargs) return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxSize___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxSize___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxSize___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -81,13 +87,17 @@ class wxSizePtr : return "<C wxSize instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxSize'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxSize(wxSizePtr): def __init__(self,*_args,**_kwargs): @@ -101,9 +111,12 @@ class wxRealPointPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxRealPoint(self) + def __del__(self, delfunc=miscc.delete_wxRealPoint): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxRealPoint_Set,(self,) + _args, _kwargs) return val @@ -118,8 +131,11 @@ class wxRealPointPtr : val = apply(miscc.wxRealPoint___sub__,(self,) + _args, _kwargs) if val: val = wxRealPointPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxRealPoint___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxRealPoint___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxRealPoint___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -139,13 +155,17 @@ class wxRealPointPtr : return "<C wxRealPoint instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRealPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.width = val elif index == 1: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxRealPoint(wxRealPointPtr): def __init__(self,*_args,**_kwargs): @@ -159,9 +179,12 @@ class wxPointPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxPoint(self) + def __del__(self, delfunc=miscc.delete_wxPoint): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxPoint_Set,(self,) + _args, _kwargs) return val @@ -176,8 +199,11 @@ class wxPointPtr : val = apply(miscc.wxPoint___sub__,(self,) + _args, _kwargs) if val: val = wxPointPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxPoint___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -197,13 +223,17 @@ class wxPointPtr : return "<C wxPoint instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): if index == 0: self.x = val elif index == 1: self.y = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) class wxPoint(wxPointPtr): def __init__(self,*_args,**_kwargs): @@ -217,9 +247,12 @@ class wxRectPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxRect(self) + def __del__(self, delfunc=miscc.delete_wxRect): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetX(self, *_args, **_kwargs): val = apply(miscc.wxRect_GetX,(self,) + _args, _kwargs) return val @@ -282,12 +315,30 @@ class wxRectPtr : def SetBottom(self, *_args, **_kwargs): val = apply(miscc.wxRect_SetBottom,(self,) + _args, _kwargs) return val + def Deflate(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Deflate,(self,) + _args, _kwargs) + return val def Inflate(self, *_args, **_kwargs): val = apply(miscc.wxRect_Inflate,(self,) + _args, _kwargs) return val + def InsideXY(self, *_args, **_kwargs): + val = apply(miscc.wxRect_InsideXY,(self,) + _args, _kwargs) + return val def Inside(self, *_args, **_kwargs): val = apply(miscc.wxRect_Inside,(self,) + _args, _kwargs) return val + def Intersects(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Intersects,(self,) + _args, _kwargs) + return val + def OffsetXY(self, *_args, **_kwargs): + val = apply(miscc.wxRect_OffsetXY,(self,) + _args, _kwargs) + return val + def Offset(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Offset,(self,) + _args, _kwargs) + return val + def Set(self, *_args, **_kwargs): + val = apply(miscc.wxRect_Set,(self,) + _args, _kwargs) + return val def asTuple(self, *_args, **_kwargs): val = apply(miscc.wxRect_asTuple,(self,) + _args, _kwargs) return val @@ -295,8 +346,11 @@ class wxRectPtr : val = apply(miscc.wxRect___add__,(self,) + _args, _kwargs) if val: val = wxRectPtr(val) ; val.thisown = 1 return val - def __cmp__(self, *_args, **_kwargs): - val = apply(miscc.wxRect___cmp__,(self,) + _args, _kwargs) + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxRect___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxRect___ne__,(self,) + _args, _kwargs) return val def __setattr__(self,name,value): if name == "x" : @@ -326,7 +380,7 @@ class wxRectPtr : return "<C wxRect instance at %s>" % (self.this,) def __str__(self): return str(self.asTuple()) - def __repr__(self): return str(self.asTuple()) + def __repr__(self): return 'wxRect'+str(self.asTuple()) def __len__(self): return len(self.asTuple()) def __getitem__(self, index): return self.asTuple()[index] def __setitem__(self, index, val): @@ -335,6 +389,10 @@ class wxRectPtr : elif index == 2: self.width = val elif index == 3: self.height = val else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0,0,0,0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) # override the __getattr__ made by SWIG def __getattr__(self, name): @@ -381,6 +439,137 @@ class wxRect(wxRectPtr): +class wxPoint2DDoublePtr : + def __init__(self,this): + self.this = this + self.thisown = 0 + def GetFloor(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetFloor,(self,) + _args, _kwargs) + return val + def GetRounded(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetRounded,(self,) + _args, _kwargs) + return val + def GetVectorLength(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetVectorLength,(self,) + _args, _kwargs) + return val + def GetVectorAngle(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetVectorAngle,(self,) + _args, _kwargs) + return val + def SetVectorLength(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_SetVectorLength,(self,) + _args, _kwargs) + return val + def SetVectorAngle(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_SetVectorAngle,(self,) + _args, _kwargs) + return val + def GetDistance(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDistance,(self,) + _args, _kwargs) + return val + def GetDistanceSquare(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDistanceSquare,(self,) + _args, _kwargs) + return val + def GetDotProduct(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetDotProduct,(self,) + _args, _kwargs) + return val + def GetCrossProduct(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_GetCrossProduct,(self,) + _args, _kwargs) + return val + def Set(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_Set,(self,) + _args, _kwargs) + return val + def __neg__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___neg__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) ; val.thisown = 1 + return val + def __iadd__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___iadd__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __isub__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___isub__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __imul__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___imul__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __idiv__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___idiv__,(self,) + _args, _kwargs) + if val: val = wxPoint2DDoublePtr(val) + return val + def __eq__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___eq__,(self,) + _args, _kwargs) + return val + def __ne__(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble___ne__,(self,) + _args, _kwargs) + return val + def asTuple(self, *_args, **_kwargs): + val = apply(miscc.wxPoint2DDouble_asTuple,(self,) + _args, _kwargs) + return val + def __setattr__(self,name,value): + if name == "m_x" : + miscc.wxPoint2DDouble_m_x_set(self,value) + return + if name == "m_y" : + miscc.wxPoint2DDouble_m_y_set(self,value) + return + if name == "x" : + miscc.wxPoint2DDouble_x_set(self,value) + return + if name == "y" : + miscc.wxPoint2DDouble_y_set(self,value) + return + self.__dict__[name] = value + def __getattr__(self,name): + if name == "m_x" : + return miscc.wxPoint2DDouble_m_x_get(self) + if name == "m_y" : + return miscc.wxPoint2DDouble_m_y_get(self) + if name == "x" : + return miscc.wxPoint2DDouble_x_get(self) + if name == "y" : + return miscc.wxPoint2DDouble_y_get(self) + raise AttributeError,name + def __repr__(self): + return "<C wxPoint2DDouble instance at %s>" % (self.this,) + + def SetPolarCoordinates(self, angle, length): + self.SetVectorLength(length) + self.SetVectorAngle(angle) + def Normalize(self): + self.SetVectorLength(1.0) + + + def __str__(self): return str(self.asTuple()) + def __repr__(self): return 'wxPoint2DDouble'+str(self.asTuple()) + def __len__(self): return len(self.asTuple()) + def __getitem__(self, index): return self.asTuple()[index] + def __setitem__(self, index, val): + if index == 0: self.m_x = val + elif index == 1: self.m_yt = val + else: raise IndexError + def __nonzero__(self): return self.asTuple() != (0.0, 0.0) + def __getinitargs__(self): return () + def __getstate__(self): return self.asTuple() + def __setstate__(self, state): self.Set(*state) + +class wxPoint2DDouble(wxPoint2DDoublePtr): + def __init__(self,*_args,**_kwargs): + self.this = apply(miscc.new_wxPoint2DDouble,_args,_kwargs) + self.thisown = 1 + + + +def wxPoint2DDoubleCopy(*_args,**_kwargs): + val = wxPoint2DDoublePtr(apply(miscc.new_wxPoint2DDoubleCopy,_args,_kwargs)) + val.thisown = 1 + return val + +def wxPoint2DDoubleFromPoint(*_args,**_kwargs): + val = wxPoint2DDoublePtr(apply(miscc.new_wxPoint2DDoubleFromPoint,_args,_kwargs)) + val.thisown = 1 + return val + + class wxIndividualLayoutConstraintPtr(wxObjectPtr): def __init__(self,this): self.this = this @@ -486,9 +675,12 @@ class wxAcceleratorEntryPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxAcceleratorEntry(self) + def __del__(self, delfunc=miscc.delete_wxAcceleratorEntry): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Set(self, *_args, **_kwargs): val = apply(miscc.wxAcceleratorEntry_Set,(self,) + _args, _kwargs) return val @@ -515,9 +707,12 @@ class wxAcceleratorTablePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxAcceleratorTable(self) + def __del__(self, delfunc=miscc.delete_wxAcceleratorTable): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxAcceleratorTable instance at %s>" % (self.this,) class wxAcceleratorTable(wxAcceleratorTablePtr): @@ -532,9 +727,12 @@ class wxBusyInfoPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,miscc=miscc): - if self.thisown == 1 : - miscc.delete_wxBusyInfo(self) + def __del__(self, delfunc=miscc.delete_wxBusyInfo): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxBusyInfo instance at %s>" % (self.this,) class wxBusyInfo(wxBusyInfoPtr): @@ -555,10 +753,6 @@ wxNewId = miscc.wxNewId wxRegisterId = miscc.wxRegisterId -NewId = miscc.NewId - -RegisterId = miscc.RegisterId - wxGetCurrentId = miscc.wxGetCurrentId wxBell = miscc.wxBell @@ -595,8 +789,6 @@ wxYieldIfNeeded = miscc.wxYieldIfNeeded wxEnableTopLevelWindows = miscc.wxEnableTopLevelWindows -wxGetResource = miscc.wxGetResource - wxStripMenuCodes = miscc.wxStripMenuCodes wxGetEmailAddress = miscc.wxGetEmailAddress diff --git a/wxPython/src/msw/misc2.cpp b/wxPython/src/msw/misc2.cpp index 9881e4b4e4..08afb4e79c 100644 --- a/wxPython/src/msw/misc2.cpp +++ b/wxPython/src/msw/misc2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -293,7 +292,7 @@ public: wxBitmap rval = wxNullBitmap; wxPyBeginBlockThreads(); if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) { - PyObject* so = wxPyConstructObject((void*)&size, "wxSize", 0); + PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0); PyObject* ro; wxBitmap* ptr; PyObject* s1, *s2; @@ -388,7 +387,7 @@ static PyObject *_wrap_wxFileSelector(PyObject *self, PyObject *args, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -466,7 +465,7 @@ static PyObject *_wrap_wxLoadFileSelector(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -536,7 +535,7 @@ static PyObject *_wrap_wxSaveFileSelector(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -610,7 +609,7 @@ static PyObject *_wrap_wxDirSelector(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -682,7 +681,7 @@ static PyObject *_wrap_wxGetTextFromUser(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -753,7 +752,7 @@ static PyObject *_wrap_wxGetPasswordFromUser(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -840,7 +839,7 @@ static PyObject *_wrap_wxGetSingleChoice(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1322,8 +1321,7 @@ static PyObject *_wrap_wxSetCursor(PyObject *self, PyObject *args, PyObject *kwa if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxSetCursor",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSetCursor. Expected _wxCursor_p."); return NULL; } @@ -1508,208 +1506,6 @@ static PyObject *_wrap_wxGetTopLevelParent(PyObject *self, PyObject *args, PyObj return _resultobj; } -static PyObject *_wrap_wxResourceAddIdentifier(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - int _arg1; - char *_kwnames[] = { "name","value", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"si:wxResourceAddIdentifier",_kwnames,&_arg0,&_arg1)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceAddIdentifier(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceClear(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxResourceClear",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxResourceClear(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateBitmap(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxBitmap * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - char _ptemp[128]; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateBitmap",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxBitmap (wxResourceCreateBitmap(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} SWIG_MakePtr(_ptemp, (void *) _result,"_wxBitmap_p"); - _resultobj = Py_BuildValue("s",_ptemp); - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateIcon(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxIcon * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - char _ptemp[128]; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateIcon",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxIcon (wxResourceCreateIcon(_arg0)); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} SWIG_MakePtr(_ptemp, (void *) _result,"_wxIcon_p"); - _resultobj = Py_BuildValue("s",_ptemp); - return _resultobj; -} - -static PyObject *_wrap_wxResourceCreateMenuBar(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - wxMenuBar * _result; - char * _arg0; - char *_kwnames[] = { "resource", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceCreateMenuBar",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxMenuBar *)wxResourceCreateMenuBar(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -}{ _resultobj = wxPyMake_wxObject(_result); } - return _resultobj; -} - -static PyObject *_wrap_wxResourceGetIdentifier(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - int _result; - char * _arg0; - char *_kwnames[] = { "name", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s:wxResourceGetIdentifier",_kwnames,&_arg0)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (int )wxResourceGetIdentifier(_arg0); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseData(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "resource","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseData",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseData. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseData(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseFile(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "filename","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseFile",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseFile. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseFile(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - -static PyObject *_wrap_wxResourceParseString(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - char * _arg0; - wxResourceTable * _arg1 = (wxResourceTable *) NULL; - PyObject * _argo1 = 0; - char *_kwnames[] = { "resource","table", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"s|O:wxResourceParseString",_kwnames,&_arg0,&_argo1)) - return NULL; - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxResourceParseString. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxResourceParseString(_arg0,_arg1); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); - return _resultobj; -} - static PyObject *_wrap_wxCaret_GetBlinkTime(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; int _result; @@ -1751,11 +1547,13 @@ static PyObject *_wrap_wxSafeYield(PyObject *self, PyObject *args, PyObject *kwa PyObject * _resultobj; bool _result; wxWindow * _arg0 = (wxWindow *) NULL; + bool _arg1 = (bool ) FALSE; PyObject * _argo0 = 0; - char *_kwnames[] = { "win", NULL }; + int tempbool1 = (int) FALSE; + char *_kwnames[] = { "win","onlyIfNeeded", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|O:wxSafeYield",_kwnames,&_argo0)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"|Oi:wxSafeYield",_kwnames,&_argo0,&tempbool1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -1764,9 +1562,10 @@ static PyObject *_wrap_wxSafeYield(PyObject *self, PyObject *args, PyObject *kwa return NULL; } } + _arg1 = (bool ) tempbool1; { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxSafeYield(_arg0); + _result = (bool )wxSafeYield(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -1793,8 +1592,7 @@ static PyObject *_wrap_wxPostEvent(PyObject *self, PyObject *args, PyObject *kwa } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostEvent. Expected _wxEvent_p."); return NULL; } @@ -2011,7 +1809,7 @@ static PyObject *_wrap_wxSysErrorMsg(PyObject *self, PyObject *args, PyObject *k if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2167,6 +1965,35 @@ static PyObject *_wrap_wxLogInfo(PyObject *self, PyObject *args, PyObject *kwarg return _resultobj; } +static PyObject *_wrap_wxLogDebug(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _arg0; + PyObject * _obj0 = 0; + char *_kwnames[] = { "msg", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxLogDebug",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxLogDebug(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj0) + delete _arg0; +} + return _resultobj; +} + static PyObject *_wrap_wxLogVerbose(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxString * _arg0; @@ -2748,7 +2575,7 @@ static PyObject *_wrap_wxToolTip_GetTip(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3561,7 +3388,7 @@ static PyObject *_wrap_wxTipProvider_GetTip(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3633,7 +3460,7 @@ static PyObject *_wrap_wxTipProvider_PreprocessTip(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3744,15 +3571,13 @@ static PyObject *_wrap_new_wxDragImage(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:new_wxDragImage",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragImage. Expected _wxBitmap_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragImage. Expected _wxCursor_p."); return NULL; } @@ -3788,15 +3613,13 @@ static PyObject *_wrap_new_wxDragIcon(PyObject *self, PyObject *args, PyObject * if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|O:new_wxDragIcon",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragIcon. Expected _wxIcon_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragIcon. Expected _wxCursor_p."); return NULL; } @@ -3837,8 +3660,7 @@ static PyObject *_wrap_new_wxDragString(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragString. Expected _wxCursor_p."); return NULL; } @@ -3878,15 +3700,13 @@ static PyObject *_wrap_new_wxDragTreeItem(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:new_wxDragTreeItem",_kwnames,&_argo0,&_argo1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxTreeCtrl_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragTreeItem. Expected _wxTreeCtrl_p."); return NULL; } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTreeItemId_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of new_wxDragTreeItem. Expected _wxTreeItemId_p."); return NULL; } @@ -3921,8 +3741,7 @@ static PyObject *_wrap_new_wxDragListItem(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:new_wxDragListItem",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListCtrl_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxListCtrl_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDragListItem. Expected _wxListCtrl_p."); return NULL; } @@ -4065,8 +3884,8 @@ static PyObject *_wrap_wxDragImage_BeginDrag(PyObject *self, PyObject *args, PyO return _resultobj; } -#define wxDragImage_BeginDrag2(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->BeginDrag(_swigarg0,_swigarg1,_swigarg2)) -static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, PyObject *kwargs) { +#define wxDragImage_BeginDragBounded(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->BeginDrag(_swigarg0,_swigarg1,_swigarg2)) +static PyObject *_wrap_wxDragImage_BeginDragBounded(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxGenericDragImage * _arg0; @@ -4078,15 +3897,15 @@ static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, Py PyObject * _obj1 = 0; PyObject * _argo2 = 0; PyObject * _argo3 = 0; - char *_kwnames[] = { "self","hotspot","window","fullScreenRect", NULL }; + char *_kwnames[] = { "self","hotspot","window","boundingWindow", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDragImage_BeginDrag2",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:wxDragImage_BeginDragBounded",_kwnames,&_argo0,&_obj1,&_argo2,&_argo3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxGenericDragImage_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDragImage_BeginDrag2. Expected _wxGenericDragImage_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDragImage_BeginDragBounded. Expected _wxGenericDragImage_p."); return NULL; } } @@ -4098,20 +3917,20 @@ static PyObject *_wrap_wxDragImage_BeginDrag2(PyObject *self, PyObject *args, Py if (_argo2) { if (_argo2 == Py_None) { _arg2 = NULL; } else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDragImage_BeginDrag2. Expected _wxWindow_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDragImage_BeginDragBounded. Expected _wxWindow_p."); return NULL; } } if (_argo3) { if (_argo3 == Py_None) { _arg3 = NULL; } else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDragImage_BeginDrag2. Expected _wxWindow_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDragImage_BeginDragBounded. Expected _wxWindow_p."); return NULL; } } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDragImage_BeginDrag2(_arg0,*_arg1,_arg2,_arg3); + _result = (bool )wxDragImage_BeginDragBounded(_arg0,*_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -5212,7 +5031,7 @@ static PyObject *_wrap_wxLog_GetTimestamp(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5295,6 +5114,43 @@ static PyObject *_wrap_wxLog_IsAllowedTraceMask(PyObject *self, PyObject *args, return _resultobj; } +static PyObject *_wrap_wxLog_SetLogLevel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + unsigned long _arg0; + char *_kwnames[] = { "logLevel", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxLog_SetLogLevel",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxLog::SetLogLevel(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxLog_GetLogLevel(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + unsigned long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxLog_GetLogLevel",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (unsigned long )wxLog::GetLogLevel(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + static wxString wxLog_TimeStamp(wxLog *self) { wxString msg; wxLog::TimeStamp(&msg); @@ -5325,7 +5181,7 @@ static PyObject *_wrap_wxLog_TimeStamp(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6541,7 +6397,7 @@ static PyObject *_wrap_wxProcess_GetInputStream(PyObject *self, PyObject *args, if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -6576,7 +6432,7 @@ static PyObject *_wrap_wxProcess_GetErrorStream(PyObject *self, PyObject *args, if (_result) { _ptr = new wxPyInputStream(_result); } - _resultobj = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + _resultobj = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } return _resultobj; } @@ -7212,7 +7068,7 @@ static PyObject *_wrap_wxJoystick_GetProductName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8131,19 +7987,43 @@ static PyObject *_wrap_wxWave_Play(PyObject *self, PyObject *args, PyObject *kwa static PyObject *_wrap_new_wxFileTypeInfo(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxFileTypeInfo * _result; - char * _arg0; - char * _arg1; - char * _arg2; - char * _arg3; + wxString * _arg0; + wxString * _arg1; + wxString * _arg2; + wxString * _arg3; + PyObject * _obj0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + PyObject * _obj3 = 0; char *_kwnames[] = { "mimeType","openCmd","printCmd","desc", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"ssss:new_wxFileTypeInfo",_kwnames,&_arg0,&_arg1,&_arg2,&_arg3)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOOO:new_wxFileTypeInfo",_kwnames,&_obj0,&_obj1,&_obj2,&_obj3)) return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + _arg1 = wxString_in_helper(_obj1); + if (_arg1 == NULL) + return NULL; +} +{ + _arg2 = wxString_in_helper(_obj2); + if (_arg2 == NULL) + return NULL; +} +{ + _arg3 = wxString_in_helper(_obj3); + if (_arg3 == NULL) + return NULL; +} { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxFileTypeInfo *)new_wxFileTypeInfo(_arg0,_arg1,_arg2,_arg3); + _result = (wxFileTypeInfo *)new_wxFileTypeInfo(*_arg0,*_arg1,*_arg2,*_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -8154,6 +8034,22 @@ static PyObject *_wrap_new_wxFileTypeInfo(PyObject *self, PyObject *args, PyObje Py_INCREF(Py_None); _resultobj = Py_None; } +{ + if (_obj0) + delete _arg0; +} +{ + if (_obj1) + delete _arg1; +} +{ + if (_obj2) + delete _arg2; +} +{ + if (_obj3) + delete _arg3; +} return _resultobj; } @@ -8180,11 +8076,10 @@ static PyObject *_wrap_new_wxFileTypeInfoSequence(PyObject *self, PyObject *args PyObject* item = PySequence_GetItem(_obj0, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - _arg0->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - _arg0->Add(PyString_AsString(str)); #endif + _arg0->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -8369,7 +8264,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetMimeType(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8404,7 +8299,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetOpenCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8439,7 +8334,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetPrintCommand(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8474,7 +8369,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetShortDesc(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8509,7 +8404,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetDescription(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8605,7 +8500,7 @@ static PyObject *_wrap_wxFileTypeInfo_GetIconFile(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -8654,8 +8549,7 @@ static PyObject *_wrap_new_wxFileType(PyObject *self, PyObject *args, PyObject * if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxFileType",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxFileType. Expected _wxFileTypeInfo_p."); return NULL; } @@ -8680,7 +8574,7 @@ static PyObject * wxFileType_GetMimeType(wxFileType *self) { wxString str; if (self->GetMimeType(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8838,9 +8732,9 @@ static PyObject * wxFileType_GetIconInfo(wxFileType *self) { wxPyBeginBlockThreads(); PyObject* tuple = PyTuple_New(3); PyTuple_SetItem(tuple, 0, wxPyConstructObject(new wxIcon(icon), - "wxIcon", TRUE)); + wxT("wxIcon"), TRUE)); #if wxUSE_UNICODE - PyTuple_SetItem(tuple, 1, PyUnicode_FromUnicode(iconFile.c_str(), iconFile.Len())); + PyTuple_SetItem(tuple, 1, PyUnicode_FromWideChar(iconFile.c_str(), iconFile.Len())); #else PyTuple_SetItem(tuple, 1, PyString_FromStringAndSize(iconFile.c_str(), iconFile.Len())); #endif @@ -8884,7 +8778,7 @@ static PyObject * wxFileType_GetDescription(wxFileType *self) { wxString str; if (self->GetDescription(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8924,7 +8818,7 @@ static PyObject * wxFileType_GetOpenCommand(wxFileType *self,const wxString & fi wxString str; if (self->GetOpenCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -8987,7 +8881,7 @@ static PyObject * wxFileType_GetPrintCommand(wxFileType *self,const wxString & f wxString str; if (self->GetPrintCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -9253,8 +9147,7 @@ static PyObject *_wrap_wxFileType_ExpandCommand(PyObject *self, PyObject *args, return NULL; } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileType::MessageParameters_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileType::MessageParameters_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileType_ExpandCommand. Expected _wxFileType::MessageParameters_p."); return NULL; } @@ -9267,7 +9160,7 @@ static PyObject *_wrap_wxFileType_ExpandCommand(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9672,8 +9565,7 @@ static PyObject *_wrap_wxMimeTypesManager_AddFallback(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMimeTypesManager_AddFallback. Expected _wxFileTypeInfo_p."); return NULL; } @@ -9711,8 +9603,7 @@ static PyObject *_wrap_wxMimeTypesManager_Associate(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFileTypeInfo_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMimeTypesManager_Associate. Expected _wxFileTypeInfo_p."); return NULL; } @@ -10046,24 +9937,6 @@ static PyObject *_wrap_wxArtProvider_GetIcon(PyObject *self, PyObject *args, PyO return _resultobj; } -static PyObject *_wrap_wxArtProvider_CleanUpProviders(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - char *_kwnames[] = { NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxArtProvider_CleanUpProviders",_kwnames)) - return NULL; -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxPyArtProvider::CleanUpProviders(); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} Py_INCREF(Py_None); - _resultobj = Py_None; - return _resultobj; -} - static void *SwigwxFileHistoryTowxObject(void *ptr) { wxFileHistory *src; wxObject *dest; @@ -10317,8 +10190,7 @@ static PyObject *_wrap_wxFileHistory_Load(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileHistory_Load. Expected _wxConfigBase_p."); return NULL; } @@ -10354,8 +10226,7 @@ static PyObject *_wrap_wxFileHistory_Save(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxConfigBase_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxFileHistory_Save. Expected _wxConfigBase_p."); return NULL; } @@ -10463,7 +10334,7 @@ static PyObject *_wrap_wxFileHistory_GetHistoryFile(PyObject *self, PyObject *ar if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10986,8 +10857,7 @@ static PyObject *_wrap_wxEffects_DrawSunkenEdge(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEffects_DrawSunkenEdge. Expected _wxDC_p."); return NULL; } @@ -11039,15 +10909,13 @@ static PyObject *_wrap_wxEffects_TileBitmap(PyObject *self, PyObject *args, PyOb return NULL; } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxEffects_TileBitmap. Expected _wxDC_p."); return NULL; } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxEffects_TileBitmap. Expected _wxBitmap_p."); return NULL; } @@ -11278,7 +11146,6 @@ static PyMethodDef misc2cMethods[] = { { "wxFileHistory_AddFileToHistory", (PyCFunction) _wrap_wxFileHistory_AddFileToHistory, METH_VARARGS | METH_KEYWORDS }, { "delete_wxFileHistory", (PyCFunction) _wrap_delete_wxFileHistory, METH_VARARGS | METH_KEYWORDS }, { "new_wxFileHistory", (PyCFunction) _wrap_new_wxFileHistory, METH_VARARGS | METH_KEYWORDS }, - { "wxArtProvider_CleanUpProviders", (PyCFunction) _wrap_wxArtProvider_CleanUpProviders, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_GetIcon", (PyCFunction) _wrap_wxArtProvider_GetIcon, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_GetBitmap", (PyCFunction) _wrap_wxArtProvider_GetBitmap, METH_VARARGS | METH_KEYWORDS }, { "wxArtProvider_RemoveProvider", (PyCFunction) _wrap_wxArtProvider_RemoveProvider, METH_VARARGS | METH_KEYWORDS }, @@ -11421,6 +11288,8 @@ static PyMethodDef misc2cMethods[] = { { "new_wxLogTextCtrl", (PyCFunction) _wrap_new_wxLogTextCtrl, METH_VARARGS | METH_KEYWORDS }, { "new_wxLogStderr", (PyCFunction) _wrap_new_wxLogStderr, METH_VARARGS | METH_KEYWORDS }, { "wxLog_TimeStamp", (PyCFunction) _wrap_wxLog_TimeStamp, METH_VARARGS | METH_KEYWORDS }, + { "wxLog_GetLogLevel", (PyCFunction) _wrap_wxLog_GetLogLevel, METH_VARARGS | METH_KEYWORDS }, + { "wxLog_SetLogLevel", (PyCFunction) _wrap_wxLog_SetLogLevel, METH_VARARGS | METH_KEYWORDS }, { "wxLog_IsAllowedTraceMask", (PyCFunction) _wrap_wxLog_IsAllowedTraceMask, METH_VARARGS | METH_KEYWORDS }, { "wxLog_GetTraceMask", (PyCFunction) _wrap_wxLog_GetTraceMask, METH_VARARGS | METH_KEYWORDS }, { "wxLog_GetVerbose", (PyCFunction) _wrap_wxLog_GetVerbose, METH_VARARGS | METH_KEYWORDS }, @@ -11464,7 +11333,7 @@ static PyMethodDef misc2cMethods[] = { { "wxDragImage_Show", (PyCFunction) _wrap_wxDragImage_Show, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_Move", (PyCFunction) _wrap_wxDragImage_Move, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_EndDrag", (PyCFunction) _wrap_wxDragImage_EndDrag, METH_VARARGS | METH_KEYWORDS }, - { "wxDragImage_BeginDrag2", (PyCFunction) _wrap_wxDragImage_BeginDrag2, METH_VARARGS | METH_KEYWORDS }, + { "wxDragImage_BeginDragBounded", (PyCFunction) _wrap_wxDragImage_BeginDragBounded, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_BeginDrag", (PyCFunction) _wrap_wxDragImage_BeginDrag, METH_VARARGS | METH_KEYWORDS }, { "wxDragImage_SetBackingBitmap", (PyCFunction) _wrap_wxDragImage_SetBackingBitmap, METH_VARARGS | METH_KEYWORDS }, { "delete_wxDragImage", (PyCFunction) _wrap_delete_wxDragImage, METH_VARARGS | METH_KEYWORDS }, @@ -11522,6 +11391,7 @@ static PyMethodDef misc2cMethods[] = { { "wxLogStatusFrame", (PyCFunction) _wrap_wxLogStatusFrame, METH_VARARGS | METH_KEYWORDS }, { "wxLogStatus", (PyCFunction) _wrap_wxLogStatus, METH_VARARGS | METH_KEYWORDS }, { "wxLogVerbose", (PyCFunction) _wrap_wxLogVerbose, METH_VARARGS | METH_KEYWORDS }, + { "wxLogDebug", (PyCFunction) _wrap_wxLogDebug, METH_VARARGS | METH_KEYWORDS }, { "wxLogInfo", (PyCFunction) _wrap_wxLogInfo, METH_VARARGS | METH_KEYWORDS }, { "wxLogMessage", (PyCFunction) _wrap_wxLogMessage, METH_VARARGS | METH_KEYWORDS }, { "wxLogWarning", (PyCFunction) _wrap_wxLogWarning, METH_VARARGS | METH_KEYWORDS }, @@ -11540,15 +11410,6 @@ static PyMethodDef misc2cMethods[] = { { "wxSafeYield", (PyCFunction) _wrap_wxSafeYield, METH_VARARGS | METH_KEYWORDS }, { "wxCaret_SetBlinkTime", (PyCFunction) _wrap_wxCaret_SetBlinkTime, METH_VARARGS | METH_KEYWORDS }, { "wxCaret_GetBlinkTime", (PyCFunction) _wrap_wxCaret_GetBlinkTime, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseString", (PyCFunction) _wrap_wxResourceParseString, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseFile", (PyCFunction) _wrap_wxResourceParseFile, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceParseData", (PyCFunction) _wrap_wxResourceParseData, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceGetIdentifier", (PyCFunction) _wrap_wxResourceGetIdentifier, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateMenuBar", (PyCFunction) _wrap_wxResourceCreateMenuBar, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateIcon", (PyCFunction) _wrap_wxResourceCreateIcon, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceCreateBitmap", (PyCFunction) _wrap_wxResourceCreateBitmap, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceClear", (PyCFunction) _wrap_wxResourceClear, METH_VARARGS | METH_KEYWORDS }, - { "wxResourceAddIdentifier", (PyCFunction) _wrap_wxResourceAddIdentifier, METH_VARARGS | METH_KEYWORDS }, { "wxGetTopLevelParent", (PyCFunction) _wrap_wxGetTopLevelParent, METH_VARARGS | METH_KEYWORDS }, { "wxFlushEvents", (PyCFunction) _wrap_wxFlushEvents, METH_VARARGS | METH_KEYWORDS }, { "wxCheckForInterrupt", (PyCFunction) _wrap_wxCheckForInterrupt, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/misc2.py b/wxPython/src/msw/misc2.py index 9f88d273e8..bffe2fddd4 100644 --- a/wxPython/src/msw/misc2.py +++ b/wxPython/src/msw/misc2.py @@ -98,9 +98,12 @@ class wxCaretPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxCaret(self) + def __del__(self, delfunc=misc2c.delete_wxCaret): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(misc2c.wxCaret_IsOk,(self,) + _args, _kwargs) return val @@ -156,9 +159,12 @@ class wxBusyCursorPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxBusyCursor(self) + def __del__(self, delfunc=misc2c.delete_wxBusyCursor): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxBusyCursor instance at %s>" % (self.this,) class wxBusyCursor(wxBusyCursorPtr): @@ -173,9 +179,12 @@ class wxWindowDisablerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxWindowDisabler(self) + def __del__(self, delfunc=misc2c.delete_wxWindowDisabler): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxWindowDisabler instance at %s>" % (self.this,) class wxWindowDisabler(wxWindowDisablerPtr): @@ -190,9 +199,12 @@ class wxMutexGuiLockerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxMutexGuiLocker(self) + def __del__(self, delfunc=misc2c.delete_wxMutexGuiLocker): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxMutexGuiLocker instance at %s>" % (self.this,) class wxMutexGuiLocker(wxMutexGuiLockerPtr): @@ -207,9 +219,12 @@ class wxTipProviderPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxTipProvider(self) + def __del__(self, delfunc=misc2c.delete_wxTipProvider): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetTip(self, *_args, **_kwargs): val = apply(misc2c.wxTipProvider_GetTip,(self,) + _args, _kwargs) return val @@ -250,17 +265,20 @@ class wxDragImagePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxDragImage(self) + def __del__(self, delfunc=misc2c.delete_wxDragImage): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetBackingBitmap(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_SetBackingBitmap,(self,) + _args, _kwargs) return val def BeginDrag(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_BeginDrag,(self,) + _args, _kwargs) return val - def BeginDrag2(self, *_args, **_kwargs): - val = apply(misc2c.wxDragImage_BeginDrag2,(self,) + _args, _kwargs) + def BeginDragBounded(self, *_args, **_kwargs): + val = apply(misc2c.wxDragImage_BeginDragBounded,(self,) + _args, _kwargs) return val def EndDrag(self, *_args, **_kwargs): val = apply(misc2c.wxDragImage_EndDrag,(self,) + _args, _kwargs) @@ -283,6 +301,7 @@ class wxDragImagePtr(wxObjectPtr): return val def __repr__(self): return "<C wxDragImage instance at %s>" % (self.this,) + BeginDrag2 = BeginDragBounded class wxDragImage(wxDragImagePtr): def __init__(self,*_args,**_kwargs): self.this = apply(misc2c.new_wxDragImage,_args,_kwargs) @@ -315,9 +334,12 @@ class wxPyTimerPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxPyTimer(self) + def __del__(self, delfunc=misc2c.delete_wxPyTimer): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetInterval(self, *_args, **_kwargs): val = apply(misc2c.wxPyTimer_GetInterval,(self,) + _args, _kwargs) return val @@ -350,9 +372,12 @@ class wxStopWatchPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxStopWatch(self) + def __del__(self, delfunc=misc2c.delete_wxStopWatch): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Start(self, *_args, **_kwargs): val = apply(misc2c.wxStopWatch_Start,(self,) + _args, _kwargs) return val @@ -504,9 +529,12 @@ class wxLogNullPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxLogNull(self) + def __del__(self, delfunc=misc2c.delete_wxLogNull): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxLogNull instance at %s>" % (self.this,) class wxLogNull(wxLogNullPtr): @@ -631,9 +659,12 @@ class wxJoystickPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxJoystick(self) + def __del__(self, delfunc=misc2c.delete_wxJoystick): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetPosition(self, *_args, **_kwargs): val = apply(misc2c.wxJoystick_GetPosition,(self,) + _args, _kwargs) if val: val = wxPointPtr(val) ; val.thisown = 1 @@ -775,9 +806,12 @@ class wxWavePtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxWave(self) + def __del__(self, delfunc=misc2c.delete_wxWave): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def IsOk(self, *_args, **_kwargs): val = apply(misc2c.wxWave_IsOk,(self,) + _args, _kwargs) return val @@ -895,9 +929,12 @@ class wxFileTypePtr : def Unassociate(self, *_args, **_kwargs): val = apply(misc2c.wxFileType_Unassociate,(self,) + _args, _kwargs) return val - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxFileType(self) + def __del__(self, delfunc=misc2c.delete_wxFileType): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxFileType instance at %s>" % (self.this,) class wxFileType(wxFileTypePtr): @@ -945,9 +982,12 @@ class wxMimeTypesManagerPtr : def Unassociate(self, *_args, **_kwargs): val = apply(misc2c.wxMimeTypesManager_Unassociate,(self,) + _args, _kwargs) return val - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxMimeTypesManager(self) + def __del__(self, delfunc=misc2c.delete_wxMimeTypesManager): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxMimeTypesManager instance at %s>" % (self.this,) class wxMimeTypesManager(wxMimeTypesManagerPtr): @@ -980,9 +1020,12 @@ class wxFileHistoryPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxFileHistory(self) + def __del__(self, delfunc=misc2c.delete_wxFileHistory): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def AddFileToHistory(self, *_args, **_kwargs): val = apply(misc2c.wxFileHistory_AddFileToHistory,(self,) + _args, _kwargs) return val @@ -1091,9 +1134,12 @@ class wxSingleInstanceCheckerPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,misc2c=misc2c): - if self.thisown == 1 : - misc2c.delete_wxSingleInstanceChecker(self) + def __del__(self, delfunc=misc2c.delete_wxSingleInstanceChecker): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Create(self, *_args, **_kwargs): val = apply(misc2c.wxSingleInstanceChecker_Create,(self,) + _args, _kwargs) return val @@ -1190,32 +1236,6 @@ def wxGetTopLevelParent(*_args, **_kwargs): val = apply(misc2c.wxGetTopLevelParent,_args,_kwargs) return val -wxResourceAddIdentifier = misc2c.wxResourceAddIdentifier - -wxResourceClear = misc2c.wxResourceClear - -def wxResourceCreateBitmap(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateBitmap,_args,_kwargs) - if val: val = wxBitmapPtr(val); val.thisown = 1 - return val - -def wxResourceCreateIcon(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateIcon,_args,_kwargs) - if val: val = wxIconPtr(val); val.thisown = 1 - return val - -def wxResourceCreateMenuBar(*_args, **_kwargs): - val = apply(misc2c.wxResourceCreateMenuBar,_args,_kwargs) - return val - -wxResourceGetIdentifier = misc2c.wxResourceGetIdentifier - -wxResourceParseData = misc2c.wxResourceParseData - -wxResourceParseFile = misc2c.wxResourceParseFile - -wxResourceParseString = misc2c.wxResourceParseString - wxCaret_GetBlinkTime = misc2c.wxCaret_GetBlinkTime wxCaret_SetBlinkTime = misc2c.wxCaret_SetBlinkTime @@ -1255,6 +1275,8 @@ wxLogMessage = misc2c.wxLogMessage wxLogInfo = misc2c.wxLogInfo +wxLogDebug = misc2c.wxLogDebug + wxLogVerbose = misc2c.wxLogVerbose wxLogStatus = misc2c.wxLogStatus @@ -1344,6 +1366,10 @@ wxLog_GetTraceMask = misc2c.wxLog_GetTraceMask wxLog_IsAllowedTraceMask = misc2c.wxLog_IsAllowedTraceMask +wxLog_SetLogLevel = misc2c.wxLog_SetLogLevel + +wxLog_GetLogLevel = misc2c.wxLog_GetLogLevel + wxProcess_Kill = misc2c.wxProcess_Kill wxProcess_Exists = misc2c.wxProcess_Exists @@ -1373,8 +1399,6 @@ def wxArtProvider_GetIcon(*_args, **_kwargs): if val: val = wxIconPtr(val); val.thisown = 1 return val -wxArtProvider_CleanUpProviders = misc2c.wxArtProvider_CleanUpProviders - #-------------- VARIABLE WRAPPERS ------------------ diff --git a/wxPython/src/msw/printfw.cpp b/wxPython/src/msw/printfw.cpp index 24711bbcfa..44a5114bbd 100644 --- a/wxPython/src/msw/printfw.cpp +++ b/wxPython/src/msw/printfw.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -356,7 +355,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -821,7 +820,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -856,7 +855,7 @@ static PyObject *_wrap_wxPrintData_GetPrinterOptions(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -891,7 +890,7 @@ static PyObject *_wrap_wxPrintData_GetPreviewCommand(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -926,7 +925,7 @@ static PyObject *_wrap_wxPrintData_GetFilename(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -961,7 +960,7 @@ static PyObject *_wrap_wxPrintData_GetFontMetricPath(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1548,8 +1547,7 @@ static PyObject *_wrap_new_wxPrinterDC(PyObject *self, PyObject *args, PyObject if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPrinterDC",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPrinterDC. Expected _wxPrintData_p."); return NULL; } @@ -1662,8 +1660,7 @@ static PyObject *_wrap_new_wxPostScriptDC(PyObject *self, PyObject *args, PyObje if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxPostScriptDC",_kwnames,&_argo0)) return NULL; if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxPostScriptDC. Expected _wxPrintData_p."); return NULL; } @@ -1740,8 +1737,7 @@ static PyObject *_wrap_wxPostScriptDC_SetPrintData(PyObject *self, PyObject *arg } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPostScriptDC_SetPrintData. Expected _wxPrintData_p."); return NULL; } @@ -2741,8 +2737,7 @@ static PyObject *_wrap_wxPageSetupDialogData_SetPrintData(PyObject *self, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPageSetupDialogData_SetPrintData. Expected _wxPrintData_p."); return NULL; } @@ -3548,8 +3543,7 @@ static PyObject *_wrap_wxPrintDialogData_SetPrintData(PyObject *self, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPrintData_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPrintDialogData_SetPrintData. Expected _wxPrintData_p."); return NULL; } diff --git a/wxPython/src/msw/printfw.py b/wxPython/src/msw/printfw.py index 1800f47407..ba11c95428 100644 --- a/wxPython/src/msw/printfw.py +++ b/wxPython/src/msw/printfw.py @@ -25,9 +25,12 @@ class wxPrintDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrintData(self) + def __del__(self, delfunc=printfwc.delete_wxPrintData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def GetNoCopies(self, *_args, **_kwargs): val = apply(printfwc.wxPrintData_GetNoCopies,(self,) + _args, _kwargs) return val @@ -206,9 +209,12 @@ class wxPageSetupDialogDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPageSetupDialogData(self) + def __del__(self, delfunc=printfwc.delete_wxPageSetupDialogData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableHelp(self, *_args, **_kwargs): val = apply(printfwc.wxPageSetupDialogData_EnableHelp,(self,) + _args, _kwargs) return val @@ -338,9 +344,12 @@ class wxPrintDialogDataPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrintDialogData(self) + def __del__(self, delfunc=printfwc.delete_wxPrintDialogData): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def EnableHelp(self, *_args, **_kwargs): val = apply(printfwc.wxPrintDialogData_EnableHelp,(self,) + _args, _kwargs) return val @@ -510,9 +519,12 @@ class wxPrinterPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,printfwc=printfwc): - if self.thisown == 1 : - printfwc.delete_wxPrinter(self) + def __del__(self, delfunc=printfwc.delete_wxPrinter): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def CreateAbortWindow(self, *_args, **_kwargs): val = apply(printfwc.wxPrinter_CreateAbortWindow,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/sizers.cpp b/wxPython/src/msw/sizers.cpp index 79841577fe..33bacdc53d 100644 --- a/wxPython/src/msw/sizers.cpp +++ b/wxPython/src/msw/sizers.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -481,6 +480,34 @@ static PyObject *_wrap_wxSizerItem_IsSpacer(PyObject *self, PyObject *args, PyOb return _resultobj; } +#define wxSizerItem_IsShown(_swigobj) (_swigobj->IsShown()) +static PyObject *_wrap_wxSizerItem_IsShown(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizerItem * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxSizerItem_IsShown",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizerItem_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizerItem_IsShown. Expected _wxSizerItem_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizerItem_IsShown(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxSizerItem_GetWindow(_swigobj) (_swigobj->GetWindow()) static PyObject *_wrap_wxSizerItem_GetWindow(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -812,6 +839,37 @@ static PyObject *_wrap_wxSizerItem_SetBorder(PyObject *self, PyObject *args, PyO return _resultobj; } +#define wxSizerItem_Show(_swigobj,_swigarg0) (_swigobj->Show(_swigarg0)) +static PyObject *_wrap_wxSizerItem_Show(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizerItem * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxSizerItem_Show",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizerItem_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizerItem_Show. Expected _wxSizerItem_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizerItem_Show(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static PyObject * wxSizerItem_GetUserData(wxSizerItem *self) { wxPyUserData* data = (wxPyUserData*)self->GetUserData(); if (data) { @@ -1994,6 +2052,265 @@ static PyObject *_wrap_wxSizer_GetChildren(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxSizer_ShowWindow(_swigobj,_swigarg0,_swigarg1) (_swigobj->Show(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxSizer_ShowWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxWindow * _arg1; + bool _arg2 = (bool ) TRUE; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + int tempbool2 = (int) TRUE; + char *_kwnames[] = { "self","window","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxSizer_ShowWindow",_kwnames,&_argo0,&_argo1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_ShowWindow. Expected _wxWindow_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowWindow(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_HideWindow(_swigobj,_swigarg0) (_swigobj->Hide(_swigarg0)) +static PyObject *_wrap_wxSizer_HideWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxWindow * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","window", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_HideWindow",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_HideWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_HideWindow. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_HideWindow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_ShowSizer(_swigobj,_swigarg0,_swigarg1) (_swigobj->Show(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxSizer_ShowSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxSizer * _arg1; + bool _arg2 = (bool ) TRUE; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + int tempbool2 = (int) TRUE; + char *_kwnames[] = { "self","sizer","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO|i:wxSizer_ShowSizer",_kwnames,&_argo0,&_argo1,&tempbool2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_ShowSizer. Expected _wxSizer_p."); + return NULL; + } + } + _arg2 = (bool ) tempbool2; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowSizer(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_HideSizer(_swigobj,_swigarg0) (_swigobj->Hide(_swigarg0)) +static PyObject *_wrap_wxSizer_HideSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + wxSizer * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","sizer", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_HideSizer",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_HideSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_HideSizer. Expected _wxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_HideSizer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +#define wxSizer_IsShownWindow(_swigobj,_swigarg0) (_swigobj->IsShown(_swigarg0)) +static PyObject *_wrap_wxSizer_IsShownWindow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizer * _arg0; + wxWindow * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","window", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_IsShownWindow",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_IsShownWindow. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_IsShownWindow. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizer_IsShownWindow(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxSizer_IsShownSizer(_swigobj,_swigarg0) (_swigobj->IsShown(_swigarg0)) +static PyObject *_wrap_wxSizer_IsShownSizer(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxSizer * _arg0; + wxSizer * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","sizer", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxSizer_IsShownSizer",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_IsShownSizer. Expected _wxSizer_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxSizer_IsShownSizer. Expected _wxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxSizer_IsShownSizer(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxSizer_ShowItems(_swigobj,_swigarg0) (_swigobj->ShowItems(_swigarg0)) +static PyObject *_wrap_wxSizer_ShowItems(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSizer * _arg0; + bool _arg1; + PyObject * _argo0 = 0; + int tempbool1; + char *_kwnames[] = { "self","show", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxSizer_ShowItems",_kwnames,&_argo0,&tempbool1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxSizer_ShowItems. Expected _wxSizer_p."); + return NULL; + } + } + _arg1 = (bool ) tempbool1; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxSizer_ShowItems(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + static void *SwigwxPySizerTowxSizer(void *ptr) { wxPySizer *src; wxSizer *dest; @@ -2145,6 +2462,35 @@ static PyObject *_wrap_wxBoxSizer_GetOrientation(PyObject *self, PyObject *args, return _resultobj; } +#define wxBoxSizer_SetOrientation(_swigobj,_swigarg0) (_swigobj->SetOrientation(_swigarg0)) +static PyObject *_wrap_wxBoxSizer_SetOrientation(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxBoxSizer * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","orient", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxBoxSizer_SetOrientation",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxBoxSizer_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxBoxSizer_SetOrientation. Expected _wxBoxSizer_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxBoxSizer_SetOrientation(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxBoxSizer_RecalcSizes(_swigobj) (_swigobj->RecalcSizes()) static PyObject *_wrap_wxBoxSizer_RecalcSizes(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -3075,10 +3421,18 @@ static PyMethodDef sizerscMethods[] = { { "new_wxStaticBoxSizer", (PyCFunction) _wrap_new_wxStaticBoxSizer, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_CalcMin", (PyCFunction) _wrap_wxBoxSizer_CalcMin, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_RecalcSizes", (PyCFunction) _wrap_wxBoxSizer_RecalcSizes, METH_VARARGS | METH_KEYWORDS }, + { "wxBoxSizer_SetOrientation", (PyCFunction) _wrap_wxBoxSizer_SetOrientation, METH_VARARGS | METH_KEYWORDS }, { "wxBoxSizer_GetOrientation", (PyCFunction) _wrap_wxBoxSizer_GetOrientation, METH_VARARGS | METH_KEYWORDS }, { "new_wxBoxSizer", (PyCFunction) _wrap_new_wxBoxSizer, METH_VARARGS | METH_KEYWORDS }, { "wxPySizer__setCallbackInfo", (PyCFunction) _wrap_wxPySizer__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "new_wxPySizer", (PyCFunction) _wrap_new_wxPySizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowItems", (PyCFunction) _wrap_wxSizer_ShowItems, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_IsShownSizer", (PyCFunction) _wrap_wxSizer_IsShownSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_IsShownWindow", (PyCFunction) _wrap_wxSizer_IsShownWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_HideSizer", (PyCFunction) _wrap_wxSizer_HideSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowSizer", (PyCFunction) _wrap_wxSizer_ShowSizer, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_HideWindow", (PyCFunction) _wrap_wxSizer_HideWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizer_ShowWindow", (PyCFunction) _wrap_wxSizer_ShowWindow, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_GetChildren", (PyCFunction) _wrap_wxSizer_GetChildren, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_DeleteWindows", (PyCFunction) _wrap_wxSizer_DeleteWindows, METH_VARARGS | METH_KEYWORDS }, { "wxSizer_Clear", (PyCFunction) _wrap_wxSizer_Clear, METH_VARARGS | METH_KEYWORDS }, @@ -3110,6 +3464,7 @@ static PyMethodDef sizerscMethods[] = { { "wxSizer_Destroy", (PyCFunction) _wrap_wxSizer_Destroy, METH_VARARGS | METH_KEYWORDS }, { "wxSizer__setOORInfo", (PyCFunction) _wrap_wxSizer__setOORInfo, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_GetUserData", (PyCFunction) _wrap_wxSizerItem_GetUserData, METH_VARARGS | METH_KEYWORDS }, + { "wxSizerItem_Show", (PyCFunction) _wrap_wxSizerItem_Show, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetBorder", (PyCFunction) _wrap_wxSizerItem_SetBorder, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetFlag", (PyCFunction) _wrap_wxSizerItem_SetFlag, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetOption", (PyCFunction) _wrap_wxSizerItem_SetOption, METH_VARARGS | METH_KEYWORDS }, @@ -3121,6 +3476,7 @@ static PyMethodDef sizerscMethods[] = { { "wxSizerItem_GetSizer", (PyCFunction) _wrap_wxSizerItem_GetSizer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_SetWindow", (PyCFunction) _wrap_wxSizerItem_SetWindow, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_GetWindow", (PyCFunction) _wrap_wxSizerItem_GetWindow, METH_VARARGS | METH_KEYWORDS }, + { "wxSizerItem_IsShown", (PyCFunction) _wrap_wxSizerItem_IsShown, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsSpacer", (PyCFunction) _wrap_wxSizerItem_IsSpacer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsSizer", (PyCFunction) _wrap_wxSizerItem_IsSizer, METH_VARARGS | METH_KEYWORDS }, { "wxSizerItem_IsWindow", (PyCFunction) _wrap_wxSizerItem_IsWindow, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/sizers.py b/wxPython/src/msw/sizers.py index 88d328f1d6..922d4a60e9 100644 --- a/wxPython/src/msw/sizers.py +++ b/wxPython/src/msw/sizers.py @@ -15,7 +15,6 @@ from controls import * from events import * import wx -import string class wxSizerItemPtr(wxObjectPtr): def __init__(self,this): self.this = this @@ -59,6 +58,9 @@ class wxSizerItemPtr(wxObjectPtr): def IsSpacer(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_IsSpacer,(self,) + _args, _kwargs) return val + def IsShown(self, *_args, **_kwargs): + val = apply(sizersc.wxSizerItem_IsShown,(self,) + _args, _kwargs) + return val def GetWindow(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_GetWindow,(self,) + _args, _kwargs) return val @@ -92,6 +94,9 @@ class wxSizerItemPtr(wxObjectPtr): def SetBorder(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_SetBorder,(self,) + _args, _kwargs) return val + def Show(self, *_args, **_kwargs): + val = apply(sizersc.wxSizerItem_Show,(self,) + _args, _kwargs) + return val def GetUserData(self, *_args, **_kwargs): val = apply(sizersc.wxSizerItem_GetUserData,(self,) + _args, _kwargs) return val @@ -202,40 +207,69 @@ class wxSizerPtr(wxObjectPtr): def GetChildren(self, *_args, **_kwargs): val = apply(sizersc.wxSizer_GetChildren,(self,) + _args, _kwargs) return val + def ShowWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowWindow,(self,) + _args, _kwargs) + return val + def HideWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_HideWindow,(self,) + _args, _kwargs) + return val + def ShowSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowSizer,(self,) + _args, _kwargs) + return val + def HideSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_HideSizer,(self,) + _args, _kwargs) + return val + def IsShownWindow(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_IsShownWindow,(self,) + _args, _kwargs) + return val + def IsShownSizer(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_IsShownSizer,(self,) + _args, _kwargs) + return val + def ShowItems(self, *_args, **_kwargs): + val = apply(sizersc.wxSizer_ShowItems,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxSizer instance at %s>" % (self.this,) def Add(self, *args, **kw): if type(args[0]) == type(1): apply(self.AddSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.AddSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.AddWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Insert(self, *args, **kw): if type(args[1]) == type(1): apply(self.InsertSpacer, args, kw) - elif string.find(args[1].this, 'Sizer') != -1: + elif isinstance(args[1], wxSizerPtr): apply(self.InsertSizer, args, kw) - else: + elif isinstance(args[1], wxWindowPtr): apply(self.InsertWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Prepend(self, *args, **kw): if type(args[0]) == type(1): apply(self.PrependSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.PrependSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.PrependWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Remove(self, *args, **kw): if type(args[0]) == type(1): - apply(self.RemovePos, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: - apply(self.RemoveSizer, args, kw) + return apply(self.RemovePos, args, kw) + elif isinstance(args[0], wxSizerPtr): + return apply(self.RemoveSizer, args, kw) + elif isinstance(args[0], wxWindowPtr): + return apply(self.RemoveWindow, args, kw) else: - apply(self.RemoveWindow, args, kw) + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def AddMany(self, widgets): for childinfo in widgets: @@ -247,10 +281,12 @@ class wxSizerPtr(wxObjectPtr): def SetItemMinSize(self, *args): if type(args[0]) == type(1): apply(self.SetItemMinSizePos, args) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.SetItemMinSizeSizer, args) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.SetItemMinSizeWindow, args) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def GetSizeTuple(self): @@ -260,6 +296,31 @@ class wxSizerPtr(wxObjectPtr): def GetMinSizeTuple(self): return self.GetMinSize().asTuple() + + def Show(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.ShowSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.ShowWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def Hide(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.HideSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.HideWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def IsShown(self, *args): + if isinstance(args[0], wxSizerPtr): + return apply(self.IsShownSizer, args) + elif isinstance(args[0], wxWindowPtr): + return apply(self.IsShownWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + class wxSizer(wxSizerPtr): def __init__(self,this): self.this = this @@ -293,6 +354,9 @@ class wxBoxSizerPtr(wxSizerPtr): def GetOrientation(self, *_args, **_kwargs): val = apply(sizersc.wxBoxSizer_GetOrientation,(self,) + _args, _kwargs) return val + def SetOrientation(self, *_args, **_kwargs): + val = apply(sizersc.wxBoxSizer_SetOrientation,(self,) + _args, _kwargs) + return val def RecalcSizes(self, *_args, **_kwargs): val = apply(sizersc.wxBoxSizer_RecalcSizes,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/stattool.cpp b/wxPython/src/msw/stattool.cpp index 1f0fb29eaf..6f93f742d3 100644 --- a/wxPython/src/msw/stattool.cpp +++ b/wxPython/src/msw/stattool.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -338,7 +337,7 @@ static PyObject *_wrap_wxStatusBar_GetStatusText(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1093,7 +1092,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetLabel(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1130,7 +1129,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetShortHelp(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1167,7 +1166,7 @@ static PyObject *_wrap_wxToolBarToolBase_GetLongHelp(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1366,8 +1365,7 @@ static PyObject *_wrap_wxToolBarToolBase_SetNormalBitmap(PyObject *self, PyObjec } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxToolBarToolBase_SetNormalBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1403,8 +1401,7 @@ static PyObject *_wrap_wxToolBarToolBase_SetDisabledBitmap(PyObject *self, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxToolBarToolBase_SetDisabledBitmap. Expected _wxBitmap_p."); return NULL; } @@ -1674,15 +1671,13 @@ static PyObject *_wrap_wxToolBarBase_DoAddTool(PyObject *self, PyObject *args, P return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxToolBarBase_DoAddTool. Expected _wxBitmap_p."); return NULL; } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_DoAddTool. Expected _wxBitmap_p."); return NULL; } @@ -1725,14 +1720,14 @@ static PyObject *_wrap_wxToolBarBase_DoAddTool(PyObject *self, PyObject *args, P return _resultobj; } -static wxToolBarToolBase * wxToolBarBase_InsertTool(wxToolBarBase *self,size_t pos,int id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) { +static wxToolBarToolBase * wxToolBarBase_DoInsertTool(wxToolBarBase *self,size_t pos,int id,const wxString & label,const wxBitmap & bitmap,const wxBitmap & bmpDisabled,wxItemKind kind,const wxString & shortHelp,const wxString & longHelp,PyObject * clientData) { wxPyUserData* udata = NULL; if (clientData && clientData != Py_None) udata = new wxPyUserData(clientData); return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind, shortHelp, longHelp, udata); } -static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, PyObject *kwargs) { +static PyObject *_wrap_wxToolBarBase_DoInsertTool(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxToolBarToolBase * _result; wxToolBarBase * _arg0; @@ -1755,12 +1750,12 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, char *_kwnames[] = { "self","pos","id","label","bitmap","bmpDisabled","kind","shortHelp","longHelp","clientData", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_InsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiiOO|OiOOO:wxToolBarBase_DoInsertTool",_kwnames,&_argo0,&_arg1,&_arg2,&_obj3,&_argo4,&_argo5,&_arg6,&_obj7,&_obj8,&_obj9)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxToolBarBase_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_InsertTool. Expected _wxToolBarBase_p."); + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxToolBarBase_DoInsertTool. Expected _wxToolBarBase_p."); return NULL; } } @@ -1770,16 +1765,14 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, return NULL; } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_InsertTool. Expected _wxBitmap_p."); + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxToolBarBase_DoInsertTool. Expected _wxBitmap_p."); return NULL; } } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_InsertTool. Expected _wxBitmap_p."); + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxBitmap_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of wxToolBarBase_DoInsertTool. Expected _wxBitmap_p."); return NULL; } } @@ -1801,7 +1794,7 @@ static PyObject *_wrap_wxToolBarBase_InsertTool(PyObject *self, PyObject *args, } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (wxToolBarToolBase *)wxToolBarBase_InsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9); + _result = (wxToolBarToolBase *)wxToolBarBase_DoInsertTool(_arg0,_arg1,_arg2,*_arg3,*_arg4,*_arg5,_arg6,*_arg7,*_arg8,_arg9); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -2422,7 +2415,7 @@ static PyObject *_wrap_wxToolBarBase_GetToolShortHelp(PyObject *self, PyObject * if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2500,7 +2493,7 @@ static PyObject *_wrap_wxToolBarBase_GetToolLongHelp(PyObject *self, PyObject *a if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3531,7 +3524,7 @@ static PyMethodDef stattoolcMethods[] = { { "wxToolBarBase_FindControl", (PyCFunction) _wrap_wxToolBarBase_FindControl, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_InsertControl", (PyCFunction) _wrap_wxToolBarBase_InsertControl, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_AddControl", (PyCFunction) _wrap_wxToolBarBase_AddControl, METH_VARARGS | METH_KEYWORDS }, - { "wxToolBarBase_InsertTool", (PyCFunction) _wrap_wxToolBarBase_InsertTool, METH_VARARGS | METH_KEYWORDS }, + { "wxToolBarBase_DoInsertTool", (PyCFunction) _wrap_wxToolBarBase_DoInsertTool, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarBase_DoAddTool", (PyCFunction) _wrap_wxToolBarBase_DoAddTool, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarToolBase_SetClientData", (PyCFunction) _wrap_wxToolBarToolBase_SetClientData, METH_VARARGS | METH_KEYWORDS }, { "wxToolBarToolBase_GetClientData", (PyCFunction) _wrap_wxToolBarToolBase_GetClientData, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/stattool.py b/wxPython/src/msw/stattool.py index cea709ed3e..0c74eee1b4 100644 --- a/wxPython/src/msw/stattool.py +++ b/wxPython/src/msw/stattool.py @@ -193,8 +193,8 @@ class wxToolBarBasePtr(wxControlPtr): def DoAddTool(self, *_args, **_kwargs): val = apply(stattoolc.wxToolBarBase_DoAddTool,(self,) + _args, _kwargs) return val - def InsertTool(self, *_args, **_kwargs): - val = apply(stattoolc.wxToolBarBase_InsertTool,(self,) + _args, _kwargs) + def DoInsertTool(self, *_args, **_kwargs): + val = apply(stattoolc.wxToolBarBase_DoInsertTool,(self,) + _args, _kwargs) return val def AddControl(self, *_args, **_kwargs): val = apply(stattoolc.wxToolBarBase_AddControl,(self,) + _args, _kwargs) @@ -370,7 +370,7 @@ class wxToolBarBasePtr(wxControlPtr): # 2.3.3. They are renamed to have 'Label' in the name so as to be # able to keep backwards compatibility with using the above # methods. Eventually these should migrate to be the methods used - # primarily and loose the 'Label' in the name... + # primarily and lose the 'Label' in the name... def AddLabelTool(self, id, label, bitmap, bmpDisabled = wxNullBitmap, diff --git a/wxPython/src/msw/streams.cpp b/wxPython/src/msw/streams.cpp index c5a839d41d..c09828a95b 100644 --- a/wxPython/src/msw/streams.cpp +++ b/wxPython/src/msw/streams.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -362,6 +361,233 @@ static PyObject *_wrap_wxInputStream_tell(PyObject *self, PyObject *args, PyObje return _resultobj; } +#define wxInputStream_Peek(_swigobj) (_swigobj->Peek()) +static PyObject *_wrap_wxInputStream_Peek(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + char _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_Peek",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Peek. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (char )wxInputStream_Peek(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("c",_result); + return _resultobj; +} + +#define wxInputStream_GetC(_swigobj) (_swigobj->GetC()) +static PyObject *_wrap_wxInputStream_GetC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + char _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_GetC",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_GetC. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (char )wxInputStream_GetC(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("c",_result); + return _resultobj; +} + +#define wxInputStream_LastRead(_swigobj) (_swigobj->LastRead()) +static PyObject *_wrap_wxInputStream_LastRead(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + size_t _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_LastRead",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_LastRead. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (size_t )wxInputStream_LastRead(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_CanRead(_swigobj) (_swigobj->CanRead()) +static PyObject *_wrap_wxInputStream_CanRead(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_CanRead",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_CanRead. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_CanRead(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_Eof(_swigobj) (_swigobj->Eof()) +static PyObject *_wrap_wxInputStream_Eof(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_Eof",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Eof. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_Eof(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_Ungetch(_swigobj,_swigarg0) (_swigobj->Ungetch(_swigarg0)) +static PyObject *_wrap_wxInputStream_Ungetch(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxPyInputStream * _arg0; + char _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","c", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oc:wxInputStream_Ungetch",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_Ungetch. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxInputStream_Ungetch(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxInputStream_SeekI(_swigobj,_swigarg0,_swigarg1) (_swigobj->SeekI(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxInputStream_SeekI(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + wxPyInputStream * _arg0; + long _arg1; + wxSeekMode _arg2 = (wxSeekMode ) (wxFromStart); + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pos","mode", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol|i:wxInputStream_SeekI",_kwnames,&_argo0,&_arg1,&_arg2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_SeekI. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxInputStream_SeekI(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +#define wxInputStream_TellI(_swigobj) (_swigobj->TellI()) +static PyObject *_wrap_wxInputStream_TellI(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + wxPyInputStream * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxInputStream_TellI",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyInputStream_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxInputStream_TellI. Expected _wxPyInputStream_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxInputStream_TellI(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + static void wxOutputStream_write(wxOutputStream *self,PyObject * obj) { // We use only strings for the streams, not unicode PyObject* str = PyObject_Str(obj); @@ -407,6 +633,14 @@ static PyObject *_wrap_wxOutputStream_write(PyObject *self, PyObject *args, PyOb static PyMethodDef streamscMethods[] = { { "wxOutputStream_write", (PyCFunction) _wrap_wxOutputStream_write, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_TellI", (PyCFunction) _wrap_wxInputStream_TellI, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_SeekI", (PyCFunction) _wrap_wxInputStream_SeekI, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Ungetch", (PyCFunction) _wrap_wxInputStream_Ungetch, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Eof", (PyCFunction) _wrap_wxInputStream_Eof, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_CanRead", (PyCFunction) _wrap_wxInputStream_CanRead, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_LastRead", (PyCFunction) _wrap_wxInputStream_LastRead, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_GetC", (PyCFunction) _wrap_wxInputStream_GetC, METH_VARARGS | METH_KEYWORDS }, + { "wxInputStream_Peek", (PyCFunction) _wrap_wxInputStream_Peek, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_tell", (PyCFunction) _wrap_wxInputStream_tell, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_seek", (PyCFunction) _wrap_wxInputStream_seek, METH_VARARGS | METH_KEYWORDS }, { "wxInputStream_readlines", (PyCFunction) _wrap_wxInputStream_readlines, METH_VARARGS | METH_KEYWORDS }, @@ -528,6 +762,9 @@ SWIGEXPORT(void) initstreamsc() { SWIG_globals = SWIG_newvarlink(); m = Py_InitModule("streamsc", streamscMethods); d = PyModule_GetDict(m); + PyDict_SetItemString(d,"wxFromStart", PyInt_FromLong((long) wxFromStart)); + PyDict_SetItemString(d,"wxFromCurrent", PyInt_FromLong((long) wxFromCurrent)); + PyDict_SetItemString(d,"wxFromEnd", PyInt_FromLong((long) wxFromEnd)); wxPyPtrTypeMap_Add("wxInputStream", "wxPyInputStream"); { diff --git a/wxPython/src/msw/streams.py b/wxPython/src/msw/streams.py index 6394f60946..d2a8b18800 100644 --- a/wxPython/src/msw/streams.py +++ b/wxPython/src/msw/streams.py @@ -1,7 +1,6 @@ # This file was created automatically by SWIG. import streamsc import wx -import string class wxInputStreamPtr : def __init__(self,this): self.this = this @@ -30,6 +29,30 @@ class wxInputStreamPtr : def tell(self, *_args, **_kwargs): val = apply(streamsc.wxInputStream_tell,(self,) + _args, _kwargs) return val + def Peek(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Peek,(self,) + _args, _kwargs) + return val + def GetC(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_GetC,(self,) + _args, _kwargs) + return val + def LastRead(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_LastRead,(self,) + _args, _kwargs) + return val + def CanRead(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_CanRead,(self,) + _args, _kwargs) + return val + def Eof(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Eof,(self,) + _args, _kwargs) + return val + def Ungetch(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_Ungetch,(self,) + _args, _kwargs) + return val + def SeekI(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_SeekI,(self,) + _args, _kwargs) + return val + def TellI(self, *_args, **_kwargs): + val = apply(streamsc.wxInputStream_TellI,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxInputStream instance at %s>" % (self.this,) class wxInputStream(wxInputStreamPtr): @@ -64,3 +87,6 @@ class wxOutputStream(wxOutputStreamPtr): #-------------- VARIABLE WRAPPERS ------------------ +wxFromStart = streamsc.wxFromStart +wxFromCurrent = streamsc.wxFromCurrent +wxFromEnd = streamsc.wxFromEnd diff --git a/wxPython/src/msw/utils.cpp b/wxPython/src/msw/utils.cpp index a5b946a624..00560f27c9 100644 --- a/wxPython/src/msw/utils.cpp +++ b/wxPython/src/msw/utils.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -97,7 +96,7 @@ static PyObject* t_output_helper(PyObject* target, PyObject* o) { if (ret) { PyTuple_SET_ITEM(ret, 0, PyInt_FromLong(flag)); #if wxUSE_UNICODE - PyTuple_SET_ITEM(ret, 1, PyUnicode_FromUnicode(str.c_str(), str.Len())); + PyTuple_SET_ITEM(ret, 1, PyUnicode_FromWideChar(str.c_str(), str.Len())); #else PyTuple_SET_ITEM(ret, 1, PyString_FromStringAndSize(str.c_str(), str.Len())); #endif @@ -531,7 +530,7 @@ static PyObject *_wrap_wxConfigBase_GetAppName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -778,7 +777,7 @@ static PyObject *_wrap_wxConfigBase_GetPath(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -815,7 +814,7 @@ static PyObject *_wrap_wxConfigBase_GetVendorName(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1001,7 +1000,7 @@ static PyObject *_wrap_wxConfigBase_Read(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1734,7 +1733,7 @@ static PyObject *_wrap_wxConfigBase_ExpandEnvVars(PyObject *self, PyObject *args if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2182,7 +2181,7 @@ static PyObject *_wrap_wxDateTime_GetMonthName(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2211,7 +2210,7 @@ static PyObject *_wrap_wxDateTime_GetWeekDayName(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2346,6 +2345,26 @@ static PyObject *_wrap_wxDateTime_Now(PyObject *self, PyObject *args, PyObject * return _resultobj; } +static PyObject *_wrap_wxDateTime_UNow(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxDateTime * _result; + char *_kwnames[] = { NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxDateTime_UNow",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxDateTime (wxDateTime::UNow()); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxDateTime_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + static PyObject *_wrap_wxDateTime_Today(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; @@ -3025,18 +3044,19 @@ static PyObject *_wrap_wxDateTime_SetMillisecond(PyObject *self, PyObject *args, return _resultobj; } -#define wxDateTime_SetToWeekDayInSameWeek(_swigobj,_swigarg0) (_swigobj->SetToWeekDayInSameWeek(_swigarg0)) +#define wxDateTime_SetToWeekDayInSameWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetToWeekDayInSameWeek(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::WeekDay _arg1; + wxDateTime::WeekFlags _arg2 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","weekday", NULL }; + char *_kwnames[] = { "self","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDateTime_SetToWeekDayInSameWeek",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxDateTime_SetToWeekDayInSameWeek",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3047,7 +3067,7 @@ static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObjec } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - wxDateTime & _result_ref = wxDateTime_SetToWeekDayInSameWeek(_arg0,_arg1); + wxDateTime & _result_ref = wxDateTime_SetToWeekDayInSameWeek(_arg0,_arg1,_arg2); _result = (wxDateTime *) &_result_ref; wxPyEndAllowThreads(__tstate); @@ -3062,18 +3082,19 @@ static PyObject *_wrap_wxDateTime_SetToWeekDayInSameWeek(PyObject *self, PyObjec return _resultobj; } -#define wxDateTime_GetWeekDayInSameWeek(_swigobj,_swigarg0) (_swigobj->GetWeekDayInSameWeek(_swigarg0)) +#define wxDateTime_GetWeekDayInSameWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetWeekDayInSameWeek(_swigarg0,_swigarg1)) static PyObject *_wrap_wxDateTime_GetWeekDayInSameWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::WeekDay _arg1; + wxDateTime::WeekFlags _arg2 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","weekday", NULL }; + char *_kwnames[] = { "self","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxDateTime_GetWeekDayInSameWeek",_kwnames,&_argo0,&_arg1)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxDateTime_GetWeekDayInSameWeek",_kwnames,&_argo0,&_arg1,&_arg2)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3084,7 +3105,7 @@ static PyObject *_wrap_wxDateTime_GetWeekDayInSameWeek(PyObject *self, PyObject } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxDateTime (wxDateTime_GetWeekDayInSameWeek(_arg0,_arg1)); + _result = new wxDateTime (wxDateTime_GetWeekDayInSameWeek(_arg0,_arg1,_arg2)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3325,18 +3346,19 @@ static PyObject *_wrap_wxDateTime_GetLastWeekDay(PyObject *self, PyObject *args, return _resultobj; } -#define wxDateTime_SetToTheWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetToTheWeek(_swigarg0,_swigarg1)) +#define wxDateTime_SetToTheWeek(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->SetToTheWeek(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; bool _result; wxDateTime * _arg0; wxDateTime::wxDateTime_t _arg1; wxDateTime::WeekDay _arg2 = (wxDateTime::WeekDay ) wxDateTime::Mon; + wxDateTime::WeekFlags _arg3 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","numWeek","weekday", NULL }; + char *_kwnames[] = { "self","numWeek","weekday","flags", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|i:wxDateTime_SetToTheWeek",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|ii:wxDateTime_SetToTheWeek",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3347,7 +3369,7 @@ static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, P } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxDateTime_SetToTheWeek(_arg0,_arg1,_arg2); + _result = (bool )wxDateTime_SetToTheWeek(_arg0,_arg1,_arg2,_arg3); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -3355,19 +3377,20 @@ static PyObject *_wrap_wxDateTime_SetToTheWeek(PyObject *self, PyObject *args, P return _resultobj; } -#define wxDateTime_GetWeek(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetWeek(_swigarg0,_swigarg1)) +#define wxDateTime_GetWeek(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->GetWeek(_swigarg0,_swigarg1,_swigarg2)) static PyObject *_wrap_wxDateTime_GetWeek(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; wxDateTime * _result; wxDateTime * _arg0; wxDateTime::wxDateTime_t _arg1; wxDateTime::WeekDay _arg2 = (wxDateTime::WeekDay ) wxDateTime::Mon; + wxDateTime::WeekFlags _arg3 = (wxDateTime::WeekFlags ) wxDateTime::Monday_First; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","numWeek","weekday", NULL }; + char *_kwnames[] = { "self","numWeek","weekday","flags", NULL }; char _ptemp[128]; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|i:wxDateTime_GetWeek",_kwnames,&_argo0,&_arg1,&_arg2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oh|ii:wxDateTime_GetWeek",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3378,7 +3401,7 @@ static PyObject *_wrap_wxDateTime_GetWeek(PyObject *self, PyObject *args, PyObje } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = new wxDateTime (wxDateTime_GetWeek(_arg0,_arg1,_arg2)); + _result = new wxDateTime (wxDateTime_GetWeek(_arg0,_arg1,_arg2,_arg3)); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; @@ -4369,8 +4392,7 @@ static PyObject *_wrap_wxDateTime_IsEqualTo(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEqualTo. Expected _wxDateTime_p."); return NULL; } @@ -4406,8 +4428,7 @@ static PyObject *_wrap_wxDateTime_IsEarlierThan(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEarlierThan. Expected _wxDateTime_p."); return NULL; } @@ -4443,8 +4464,7 @@ static PyObject *_wrap_wxDateTime_IsLaterThan(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsLaterThan. Expected _wxDateTime_p."); return NULL; } @@ -4482,15 +4502,13 @@ static PyObject *_wrap_wxDateTime_IsStrictlyBetween(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsStrictlyBetween. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsStrictlyBetween. Expected _wxDateTime_p."); return NULL; } @@ -4528,15 +4546,13 @@ static PyObject *_wrap_wxDateTime_IsBetween(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsBetween. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsBetween. Expected _wxDateTime_p."); return NULL; } @@ -4572,8 +4588,7 @@ static PyObject *_wrap_wxDateTime_IsSameDate(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsSameDate. Expected _wxDateTime_p."); return NULL; } @@ -4609,8 +4624,7 @@ static PyObject *_wrap_wxDateTime_IsSameTime(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsSameTime. Expected _wxDateTime_p."); return NULL; } @@ -4648,15 +4662,13 @@ static PyObject *_wrap_wxDateTime_IsEqualUpTo(PyObject *self, PyObject *args, Py } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_IsEqualUpTo. Expected _wxDateTime_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxDateTime_IsEqualUpTo. Expected _wxTimeSpan_p."); return NULL; } @@ -4693,8 +4705,7 @@ static PyObject *_wrap_wxDateTime_AddTS(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_AddTS. Expected _wxTimeSpan_p."); return NULL; } @@ -4738,8 +4749,7 @@ static PyObject *_wrap_wxDateTime_AddDS(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_AddDS. Expected _wxDateSpan_p."); return NULL; } @@ -4783,8 +4793,7 @@ static PyObject *_wrap_wxDateTime_SubtractTS(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_SubtractTS. Expected _wxTimeSpan_p."); return NULL; } @@ -4828,8 +4837,7 @@ static PyObject *_wrap_wxDateTime_SubtractDS(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_SubtractDS. Expected _wxDateSpan_p."); return NULL; } @@ -4873,8 +4881,7 @@ static PyObject *_wrap_wxDateTime_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime_Subtract. Expected _wxDateTime_p."); return NULL; } @@ -4912,8 +4919,7 @@ static PyObject *_wrap_wxDateTime___add__TS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___add__TS. Expected _wxTimeSpan_p."); return NULL; } @@ -4951,8 +4957,7 @@ static PyObject *_wrap_wxDateTime___add__DS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___add__DS. Expected _wxDateSpan_p."); return NULL; } @@ -4990,8 +4995,7 @@ static PyObject *_wrap_wxDateTime___sub__DT(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__DT. Expected _wxDateTime_p."); return NULL; } @@ -5029,8 +5033,7 @@ static PyObject *_wrap_wxDateTime___sub__TS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__TS. Expected _wxTimeSpan_p."); return NULL; } @@ -5068,8 +5071,7 @@ static PyObject *_wrap_wxDateTime___sub__DS(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateTime___sub__DS. Expected _wxDateSpan_p."); return NULL; } @@ -5214,8 +5216,7 @@ static PyObject *_wrap_wxDateTime_ParseFormat(PyObject *self, PyObject *args, Py return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxDateTime_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxDateTime_ParseFormat. Expected _wxDateTime_p."); return NULL; } @@ -5413,7 +5414,7 @@ static PyObject *_wrap_wxDateTime_Format(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5457,7 +5458,7 @@ static PyObject *_wrap_wxDateTime_FormatDate(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5494,7 +5495,7 @@ static PyObject *_wrap_wxDateTime_FormatTime(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5531,7 +5532,7 @@ static PyObject *_wrap_wxDateTime_FormatISODate(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5568,7 +5569,7 @@ static PyObject *_wrap_wxDateTime_FormatISOTime(PyObject *self, PyObject *args, if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -5864,8 +5865,7 @@ static PyObject *_wrap_wxTimeSpan_Add(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_Add. Expected _wxTimeSpan_p."); return NULL; } @@ -5909,8 +5909,7 @@ static PyObject *_wrap_wxTimeSpan_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_Subtract. Expected _wxTimeSpan_p."); return NULL; } @@ -6057,8 +6056,7 @@ static PyObject *_wrap_wxTimeSpan___add__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan___add__. Expected _wxTimeSpan_p."); return NULL; } @@ -6096,8 +6094,7 @@ static PyObject *_wrap_wxTimeSpan___sub__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan___sub__. Expected _wxTimeSpan_p."); return NULL; } @@ -6352,8 +6349,7 @@ static PyObject *_wrap_wxTimeSpan_IsEqualTo(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsEqualTo. Expected _wxTimeSpan_p."); return NULL; } @@ -6389,8 +6385,7 @@ static PyObject *_wrap_wxTimeSpan_IsLongerThan(PyObject *self, PyObject *args, P } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsLongerThan. Expected _wxTimeSpan_p."); return NULL; } @@ -6426,8 +6421,7 @@ static PyObject *_wrap_wxTimeSpan_IsShorterThan(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxTimeSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTimeSpan_IsShorterThan. Expected _wxTimeSpan_p."); return NULL; } @@ -6666,7 +6660,7 @@ static PyObject *_wrap_wxTimeSpan_Format(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -7213,8 +7207,7 @@ static PyObject *_wrap_wxDateSpan_Add(PyObject *self, PyObject *args, PyObject * } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan_Add. Expected _wxDateSpan_p."); return NULL; } @@ -7258,8 +7251,7 @@ static PyObject *_wrap_wxDateSpan_Subtract(PyObject *self, PyObject *args, PyObj } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan_Subtract. Expected _wxDateSpan_p."); return NULL; } @@ -7376,8 +7368,7 @@ static PyObject *_wrap_wxDateSpan___add__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan___add__. Expected _wxDateSpan_p."); return NULL; } @@ -7415,8 +7406,7 @@ static PyObject *_wrap_wxDateSpan___sub__(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDateSpan_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxDateSpan___sub__. Expected _wxDateSpan_p."); return NULL; } @@ -7677,6 +7667,7 @@ static PyMethodDef utilscMethods[] = { { "new_wxDateTimeFromTimeT", (PyCFunction) _wrap_new_wxDateTimeFromTimeT, METH_VARARGS | METH_KEYWORDS }, { "new_wxDateTime", (PyCFunction) _wrap_new_wxDateTime, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_Today", (PyCFunction) _wrap_wxDateTime_Today, METH_VARARGS | METH_KEYWORDS }, + { "wxDateTime_UNow", (PyCFunction) _wrap_wxDateTime_UNow, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_Now", (PyCFunction) _wrap_wxDateTime_Now, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_GetEndDST", (PyCFunction) _wrap_wxDateTime_GetEndDST, METH_VARARGS | METH_KEYWORDS }, { "wxDateTime_GetBeginDST", (PyCFunction) _wrap_wxDateTime_GetBeginDST, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/utils.py b/wxPython/src/msw/utils.py index da54031f64..5dc18f722d 100644 --- a/wxPython/src/msw/utils.py +++ b/wxPython/src/msw/utils.py @@ -1,6 +1,6 @@ # This file was created automatically by SWIG. import utilsc -import string +import wx class wxConfigBasePtr : Type_Unknown = utilsc.wxConfigBase_Type_Unknown Type_String = utilsc.wxConfigBase_Type_String @@ -10,9 +10,12 @@ class wxConfigBasePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxConfigBase(self) + def __del__(self, delfunc=utilsc.delete_wxConfigBase): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def DeleteAll(self, *_args, **_kwargs): val = apply(utilsc.wxConfigBase_DeleteAll,(self,) + _args, _kwargs) return val @@ -137,9 +140,12 @@ class wxConfigPtr(wxConfigBasePtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxConfig(self) + def __del__(self, delfunc=utilsc.delete_wxConfig): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxConfig instance at %s>" % (self.this,) class wxConfig(wxConfigPtr): @@ -154,9 +160,12 @@ class wxFileConfigPtr(wxConfigBasePtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxFileConfig(self) + def __del__(self, delfunc=utilsc.delete_wxFileConfig): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def __repr__(self): return "<C wxFileConfig instance at %s>" % (self.this,) class wxFileConfig(wxFileConfigPtr): @@ -262,9 +271,12 @@ class wxDateTimePtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxDateTime(self) + def __del__(self, delfunc=utilsc.delete_wxDateTime): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetToCurrent(self, *_args, **_kwargs): val = apply(utilsc.wxDateTime_SetToCurrent,(self,) + _args, _kwargs) if val: val = wxDateTimePtr(val) @@ -551,17 +563,17 @@ class wxDateTimePtr : return "<C wxDateTime instance at %s>" % (self.this,) def __add__(self, other): - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__add__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__add__DS(other) raise TypeError, 'Invalid r.h.s. type for __add__' def __sub__(self, other): - if string.find(other.this, 'wxDateTime') != -1: + if isinstance(other, wxDateTimePtr): return self.__sub__DT(other) - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__sub__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__sub__DS(other) raise TypeError, 'Invalid r.h.s. type for __sub__' @@ -603,9 +615,12 @@ class wxTimeSpanPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxTimeSpan(self) + def __del__(self, delfunc=utilsc.delete_wxTimeSpan): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def Add(self, *_args, **_kwargs): val = apply(utilsc.wxTimeSpan_Add,(self,) + _args, _kwargs) if val: val = wxTimeSpanPtr(val) @@ -702,9 +717,12 @@ class wxDateSpanPtr : def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,utilsc=utilsc): - if self.thisown == 1 : - utilsc.delete_wxDateSpan(self) + def __del__(self, delfunc=utilsc.delete_wxDateSpan): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetYears(self, *_args, **_kwargs): val = apply(utilsc.wxDateSpan_SetYears,(self,) + _args, _kwargs) if val: val = wxDateSpanPtr(val) @@ -854,6 +872,11 @@ def wxDateTime_Now(*_args, **_kwargs): if val: val = wxDateTimePtr(val); val.thisown = 1 return val +def wxDateTime_UNow(*_args, **_kwargs): + val = apply(utilsc.wxDateTime_UNow,_args,_kwargs) + if val: val = wxDateTimePtr(val); val.thisown = 1 + return val + def wxDateTime_Today(*_args, **_kwargs): val = apply(utilsc.wxDateTime_Today,_args,_kwargs) if val: val = wxDateTimePtr(val); val.thisown = 1 diff --git a/wxPython/src/msw/windows.cpp b/wxPython/src/msw/windows.cpp index 59aa429f09..7349a56836 100644 --- a/wxPython/src/msw/windows.cpp +++ b/wxPython/src/msw/windows.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -338,8 +337,7 @@ static PyObject *_wrap_wxEvtHandler_ProcessEvent(PyObject *self, PyObject *args, } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEvtHandler_ProcessEvent. Expected _wxEvent_p."); return NULL; } @@ -374,8 +372,7 @@ static PyObject *_wrap_wxEvtHandler_AddPendingEvent(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxEvtHandler_AddPendingEvent. Expected _wxEvent_p."); return NULL; } @@ -1606,6 +1603,34 @@ static PyObject *_wrap_wxWindow_Enable(PyObject *self, PyObject *args, PyObject return _resultobj; } +#define wxWindow_Disable(_swigobj) (_swigobj->Disable()) +static PyObject *_wrap_wxWindow_Disable(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_Disable",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_Disable. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxWindow_Disable(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxWindow_FindWindowById(_swigobj,_swigarg0) (_swigobj->FindWindow(_swigarg0)) static PyObject *_wrap_wxWindow_FindWindowById(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1702,6 +1727,34 @@ static PyObject *_wrap_wxWindow_Fit(PyObject *self, PyObject *args, PyObject *kw return _resultobj; } +#define wxWindow_FitInside(_swigobj) (_swigobj->FitInside()) +static PyObject *_wrap_wxWindow_FitInside(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_FitInside",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_FitInside. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxWindow_FitInside(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxWindow_GetBackgroundColour(_swigobj) (_swigobj->GetBackgroundColour()) static PyObject *_wrap_wxWindow_GetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -2222,7 +2275,7 @@ static PyObject *_wrap_wxWindow_GetLabel(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2298,7 +2351,7 @@ static PyObject *_wrap_wxWindow_GetName(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -2783,7 +2836,7 @@ static PyObject *_wrap_wxWindow_GetTitle(PyObject *self, PyObject *args, PyObjec if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -3275,63 +3328,6 @@ static PyObject *_wrap_wxWindow_Layout(PyObject *self, PyObject *args, PyObject return _resultobj; } -#define wxWindow_LoadFromResource(_swigobj,_swigarg0,_swigarg1,_swigarg2) (_swigobj->LoadFromResource(_swigarg0,_swigarg1,_swigarg2)) -static PyObject *_wrap_wxWindow_LoadFromResource(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject * _resultobj; - bool _result; - wxWindow * _arg0; - wxWindow * _arg1; - wxString * _arg2; - wxResourceTable * _arg3 = (wxResourceTable *) NULL; - PyObject * _argo0 = 0; - PyObject * _argo1 = 0; - PyObject * _obj2 = 0; - PyObject * _argo3 = 0; - char *_kwnames[] = { "self","parent","resourceName","resourceTable", NULL }; - - self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO|O:wxWindow_LoadFromResource",_kwnames,&_argo0,&_argo1,&_obj2,&_argo3)) - return NULL; - if (_argo0) { - if (_argo0 == Py_None) { _arg0 = NULL; } - else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_LoadFromResource. Expected _wxWindow_p."); - return NULL; - } - } - if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_LoadFromResource. Expected _wxWindow_p."); - return NULL; - } - } -{ - _arg2 = wxString_in_helper(_obj2); - if (_arg2 == NULL) - return NULL; -} - if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxResourceTable_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of wxWindow_LoadFromResource. Expected _wxResourceTable_p."); - return NULL; - } - } -{ - PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxWindow_LoadFromResource(_arg0,_arg1,*_arg2,_arg3); - - wxPyEndAllowThreads(__tstate); - if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); -{ - if (_obj2) - delete _arg2; -} - return _resultobj; -} - #define wxWindow_Lower(_swigobj) (_swigobj->Lower()) static PyObject *_wrap_wxWindow_Lower(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4265,8 +4261,7 @@ static PyObject *_wrap_wxWindow_SetFont(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetFont. Expected _wxFont_p."); return NULL; } @@ -4811,6 +4806,36 @@ static PyObject *_wrap_wxWindow_GetVirtualSizeTuple(PyObject *self, PyObject *ar return _resultobj; } +#define wxWindow_GetBestVirtualSize(_swigobj) (_swigobj->GetBestVirtualSize()) +static PyObject *_wrap_wxWindow_GetBestVirtualSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSize * _result; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetBestVirtualSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetBestVirtualSize. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxSize (wxWindow_GetBestVirtualSize(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxWindow_SetClientSizeWH(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetClientSize(_swigarg0,_swigarg1)) static PyObject *_wrap_wxWindow_SetClientSizeWH(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -4898,8 +4923,7 @@ static PyObject *_wrap_wxWindow_SetCursor(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxCursor_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetCursor. Expected _wxCursor_p."); return NULL; } @@ -5675,8 +5699,7 @@ static PyObject *_wrap_wxWindow_SetValidator(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetValidator. Expected _wxValidator_p."); return NULL; } @@ -5824,6 +5847,36 @@ static PyObject *_wrap_wxWindow_GetMaxSize(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxWindow_GetAdjustedBestSize(_swigobj) (_swigobj->GetAdjustedBestSize()) +static PyObject *_wrap_wxWindow_GetAdjustedBestSize(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxSize * _result; + wxWindow * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + char _ptemp[128]; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetAdjustedBestSize",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetAdjustedBestSize. Expected _wxWindow_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxSize (wxWindow_GetAdjustedBestSize(_arg0)); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} SWIG_MakePtr(_ptemp, (void *) _result,"_wxSize_p"); + _resultobj = Py_BuildValue("s",_ptemp); + return _resultobj; +} + #define wxWindow_SetCaret(_swigobj,_swigarg0) (_swigobj->SetCaret(_swigarg0)) static PyObject *_wrap_wxWindow_SetCaret(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -6006,7 +6059,7 @@ static PyObject *_wrap_wxWindow_GetHelpText(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -6359,8 +6412,7 @@ static PyObject *_wrap_wxWindow_SetAcceleratorTable(PyObject *self, PyObject *ar } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorTable_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxAcceleratorTable_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetAcceleratorTable. Expected _wxAcceleratorTable_p."); return NULL; } @@ -6431,8 +6483,7 @@ static PyObject *_wrap_wxWindow_OnPaint(PyObject *self, PyObject *args, PyObject } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPaintEvent_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxPaintEvent_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_OnPaint. Expected _wxPaintEvent_p."); return NULL; } @@ -7277,8 +7328,7 @@ static PyObject *_wrap_wxScrolledWindow_PrepareDC(PyObject *self, PyObject *args } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxScrolledWindow_PrepareDC. Expected _wxDC_p."); return NULL; } @@ -8976,7 +9026,7 @@ static PyObject *_wrap_wxMenu_GetTitle(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9053,7 +9103,7 @@ static PyObject *_wrap_wxMenu_GetLabel(PyObject *self, PyObject *args, PyObject if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -9131,7 +9181,7 @@ static PyObject *_wrap_wxMenu_GetHelpString(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10072,6 +10122,35 @@ static PyObject *_wrap_wxMenuBar_EnableTop(PyObject *self, PyObject *args, PyObj return _resultobj; } +#define wxMenuBar_IsEnabledTop(_swigobj,_swigarg0) (_swigobj->IsEnabledTop(_swigarg0)) +static PyObject *_wrap_wxMenuBar_IsEnabledTop(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxMenuBar * _arg0; + size_t _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","pos", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxMenuBar_IsEnabledTop",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxMenuBar_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxMenuBar_IsEnabledTop. Expected _wxMenuBar_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxMenuBar_IsEnabledTop(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + #define wxMenuBar_SetLabelTop(_swigobj,_swigarg0,_swigarg1) (_swigobj->SetLabelTop(_swigarg0,_swigarg1)) static PyObject *_wrap_wxMenuBar_SetLabelTop(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -10139,7 +10218,7 @@ static PyObject *_wrap_wxMenuBar_GetLabelTop(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10457,7 +10536,7 @@ static PyObject *_wrap_wxMenuBar_GetLabel(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10535,7 +10614,7 @@ static PyObject *_wrap_wxMenuBar_GetHelpString(PyObject *self, PyObject *args, P if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10802,7 +10881,7 @@ static PyObject *_wrap_wxMenuItem_GetLabel(PyObject *self, PyObject *args, PyObj if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -10840,7 +10919,7 @@ static PyObject *_wrap_wxMenuItem_GetText(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11240,7 +11319,7 @@ static PyObject *_wrap_wxMenuItem_GetHelp(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11343,7 +11422,7 @@ static PyObject *_wrap_wxMenuItem_GetLabelFromText(PyObject *self, PyObject *arg if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -11378,8 +11457,7 @@ static PyObject *_wrap_wxMenuItem_SetFont(PyObject *self, PyObject *args, PyObje } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFont_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetFont. Expected _wxFont_p."); return NULL; } @@ -11579,15 +11657,13 @@ static PyObject *_wrap_wxMenuItem_SetBitmaps(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetBitmaps. Expected _wxBitmap_p."); return NULL; } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxMenuItem_SetBitmaps. Expected _wxBitmap_p."); return NULL; } @@ -11754,8 +11830,7 @@ static PyObject *_wrap_wxMenuItem_SetBitmap(PyObject *self, PyObject *args, PyOb } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxMenuItem_SetBitmap. Expected _wxBitmap_p."); return NULL; } @@ -11859,6 +11934,7 @@ static PyMethodDef windowscMethods[] = { { "wxMenuBar_FindMenu", (PyCFunction) _wrap_wxMenuBar_FindMenu, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_GetLabelTop", (PyCFunction) _wrap_wxMenuBar_GetLabelTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_SetLabelTop", (PyCFunction) _wrap_wxMenuBar_SetLabelTop, METH_VARARGS | METH_KEYWORDS }, + { "wxMenuBar_IsEnabledTop", (PyCFunction) _wrap_wxMenuBar_IsEnabledTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_EnableTop", (PyCFunction) _wrap_wxMenuBar_EnableTop, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_Remove", (PyCFunction) _wrap_wxMenuBar_Remove, METH_VARARGS | METH_KEYWORDS }, { "wxMenuBar_Replace", (PyCFunction) _wrap_wxMenuBar_Replace, METH_VARARGS | METH_KEYWORDS }, @@ -11974,6 +12050,7 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_Freeze", (PyCFunction) _wrap_wxWindow_Freeze, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetCaret", (PyCFunction) _wrap_wxWindow_GetCaret, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetCaret", (PyCFunction) _wrap_wxWindow_SetCaret, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_GetAdjustedBestSize", (PyCFunction) _wrap_wxWindow_GetAdjustedBestSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetMaxSize", (PyCFunction) _wrap_wxWindow_GetMaxSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBestSize", (PyCFunction) _wrap_wxWindow_GetBestSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetDropTarget", (PyCFunction) _wrap_wxWindow_GetDropTarget, METH_VARARGS | METH_KEYWORDS }, @@ -12006,6 +12083,7 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_SetCursor", (PyCFunction) _wrap_wxWindow_SetCursor, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetClientSize", (PyCFunction) _wrap_wxWindow_SetClientSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetClientSizeWH", (PyCFunction) _wrap_wxWindow_SetClientSizeWH, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_GetBestVirtualSize", (PyCFunction) _wrap_wxWindow_GetBestVirtualSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetVirtualSizeTuple", (PyCFunction) _wrap_wxWindow_GetVirtualSizeTuple, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetVirtualSize", (PyCFunction) _wrap_wxWindow_GetVirtualSize, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_SetVirtualSizeWH", (PyCFunction) _wrap_wxWindow_SetVirtualSizeWH, METH_VARARGS | METH_KEYWORDS }, @@ -12048,7 +12126,6 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_MoveXY", (PyCFunction) _wrap_wxWindow_MoveXY, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_MakeModal", (PyCFunction) _wrap_wxWindow_MakeModal, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Lower", (PyCFunction) _wrap_wxWindow_Lower, METH_VARARGS | METH_KEYWORDS }, - { "wxWindow_LoadFromResource", (PyCFunction) _wrap_wxWindow_LoadFromResource, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Layout", (PyCFunction) _wrap_wxWindow_Layout, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsTopLevel", (PyCFunction) _wrap_wxWindow_IsTopLevel, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsShown", (PyCFunction) _wrap_wxWindow_IsShown, METH_VARARGS | METH_KEYWORDS }, @@ -12096,9 +12173,11 @@ static PyMethodDef windowscMethods[] = { { "wxWindow_GetChildren", (PyCFunction) _wrap_wxWindow_GetChildren, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBorder", (PyCFunction) _wrap_wxWindow_GetBorder, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_GetBackgroundColour", (PyCFunction) _wrap_wxWindow_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_FitInside", (PyCFunction) _wrap_wxWindow_FitInside, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Fit", (PyCFunction) _wrap_wxWindow_Fit, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_FindWindowByName", (PyCFunction) _wrap_wxWindow_FindWindowByName, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_FindWindowById", (PyCFunction) _wrap_wxWindow_FindWindowById, METH_VARARGS | METH_KEYWORDS }, + { "wxWindow_Disable", (PyCFunction) _wrap_wxWindow_Disable, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_Enable", (PyCFunction) _wrap_wxWindow_Enable, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_DragAcceptFiles", (PyCFunction) _wrap_wxWindow_DragAcceptFiles, METH_VARARGS | METH_KEYWORDS }, { "wxWindow_IsBeingDeleted", (PyCFunction) _wrap_wxWindow_IsBeingDeleted, METH_VARARGS | METH_KEYWORDS }, diff --git a/wxPython/src/msw/windows.py b/wxPython/src/msw/windows.py index a79d3e40bd..39f7f50988 100644 --- a/wxPython/src/msw/windows.py +++ b/wxPython/src/msw/windows.py @@ -165,6 +165,9 @@ class wxWindowPtr(wxEvtHandlerPtr): def Enable(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Enable,(self,) + _args, _kwargs) return val + def Disable(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_Disable,(self,) + _args, _kwargs) + return val def FindWindowById(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_FindWindowById,(self,) + _args, _kwargs) return val @@ -174,6 +177,9 @@ class wxWindowPtr(wxEvtHandlerPtr): def Fit(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Fit,(self,) + _args, _kwargs) return val + def FitInside(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_FitInside,(self,) + _args, _kwargs) + return val def GetBackgroundColour(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_GetBackgroundColour,(self,) + _args, _kwargs) if val: val = wxColourPtr(val) ; val.thisown = 1 @@ -326,9 +332,6 @@ class wxWindowPtr(wxEvtHandlerPtr): def Layout(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Layout,(self,) + _args, _kwargs) return val - def LoadFromResource(self, *_args, **_kwargs): - val = apply(windowsc.wxWindow_LoadFromResource,(self,) + _args, _kwargs) - return val def Lower(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_Lower,(self,) + _args, _kwargs) return val @@ -457,6 +460,10 @@ class wxWindowPtr(wxEvtHandlerPtr): def GetVirtualSizeTuple(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_GetVirtualSizeTuple,(self,) + _args, _kwargs) return val + def GetBestVirtualSize(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_GetBestVirtualSize,(self,) + _args, _kwargs) + if val: val = wxSizePtr(val) ; val.thisown = 1 + return val def SetClientSizeWH(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_SetClientSizeWH,(self,) + _args, _kwargs) return val @@ -564,6 +571,10 @@ class wxWindowPtr(wxEvtHandlerPtr): val = apply(windowsc.wxWindow_GetMaxSize,(self,) + _args, _kwargs) if val: val = wxSizePtr(val) ; val.thisown = 1 return val + def GetAdjustedBestSize(self, *_args, **_kwargs): + val = apply(windowsc.wxWindow_GetAdjustedBestSize,(self,) + _args, _kwargs) + if val: val = wxSizePtr(val) ; val.thisown = 1 + return val def SetCaret(self, *_args, **_kwargs): val = apply(windowsc.wxWindow_SetCaret,(self,) + _args, _kwargs) return val @@ -983,6 +994,9 @@ class wxMenuBarPtr(wxWindowPtr): def EnableTop(self, *_args, **_kwargs): val = apply(windowsc.wxMenuBar_EnableTop,(self,) + _args, _kwargs) return val + def IsEnabledTop(self, *_args, **_kwargs): + val = apply(windowsc.wxMenuBar_IsEnabledTop,(self,) + _args, _kwargs) + return val def SetLabelTop(self, *_args, **_kwargs): val = apply(windowsc.wxMenuBar_SetLabelTop,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/windows2.cpp b/wxPython/src/msw/windows2.cpp index cdfe069380..f0e9eed052 100644 --- a/wxPython/src/msw/windows2.cpp +++ b/wxPython/src/msw/windows2.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -346,7 +345,7 @@ static PyObject *_wrap_new_wxNotebookEvent(PyObject *self, PyObject *args, PyObj int _arg1 = (int ) 0; int _arg2 = (int ) -1; int _arg3 = (int ) -1; - char *_kwnames[] = { "commandType","id","nSel","nOldSel", NULL }; + char *_kwnames[] = { "commandType","id","sel","oldSel", NULL }; char _ptemp[128]; self = self; @@ -711,7 +710,7 @@ static PyObject *_wrap_wxNotebook_SetSelection(PyObject *self, PyObject *args, P wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_SetSelection",_kwnames,&_argo0,&_arg1)) @@ -740,7 +739,7 @@ static PyObject *_wrap_wxNotebook_AdvanceSelection(PyObject *self, PyObject *arg bool _arg1 = (bool ) TRUE; PyObject * _argo0 = 0; int tempbool1 = (int) TRUE; - char *_kwnames[] = { "self","bForward", NULL }; + char *_kwnames[] = { "self","forward", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:wxNotebook_AdvanceSelection",_kwnames,&_argo0,&tempbool1)) @@ -801,7 +800,7 @@ static PyObject *_wrap_wxNotebook_SetPageText(PyObject *self, PyObject *args, Py wxString * _arg2; PyObject * _argo0 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","nPage","strText", NULL }; + char *_kwnames[] = { "self","page","text", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxNotebook_SetPageText",_kwnames,&_argo0,&_arg1,&_obj2)) @@ -839,7 +838,7 @@ static PyObject *_wrap_wxNotebook_GetPageText(PyObject *self, PyObject *args, Py wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPageText",_kwnames,&_argo0,&_arg1)) @@ -859,7 +858,7 @@ static PyObject *_wrap_wxNotebook_GetPageText(PyObject *self, PyObject *args, Py if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -979,7 +978,7 @@ static PyObject *_wrap_wxNotebook_GetPageImage(PyObject *self, PyObject *args, P wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPageImage",_kwnames,&_argo0,&_arg1)) @@ -1009,7 +1008,7 @@ static PyObject *_wrap_wxNotebook_SetPageImage(PyObject *self, PyObject *args, P int _arg1; int _arg2; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage","nImage", NULL }; + char *_kwnames[] = { "self","page","image", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxNotebook_SetPageImage",_kwnames,&_argo0,&_arg1,&_arg2)) @@ -1138,7 +1137,7 @@ static PyObject *_wrap_wxNotebook_DeletePage(PyObject *self, PyObject *args, PyO wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_DeletePage",_kwnames,&_argo0,&_arg1)) @@ -1167,7 +1166,7 @@ static PyObject *_wrap_wxNotebook_RemovePage(PyObject *self, PyObject *args, PyO wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_RemovePage",_kwnames,&_argo0,&_arg1)) @@ -1229,7 +1228,7 @@ static PyObject *_wrap_wxNotebook_AddPage(PyObject *self, PyObject *args, PyObje PyObject * _argo0 = 0; PyObject * _argo1 = 0; PyObject * _obj2 = 0; - char *_kwnames[] = { "self","pPage","strText","bSelect","imageId", NULL }; + char *_kwnames[] = { "self","page","text","select","imageId", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO|ii:wxNotebook_AddPage",_kwnames,&_argo0,&_argo1,&_obj2,&_arg3,&_arg4)) @@ -1281,7 +1280,7 @@ static PyObject *_wrap_wxNotebook_InsertPage(PyObject *self, PyObject *args, PyO PyObject * _argo2 = 0; PyObject * _obj3 = 0; int tempbool4 = (int) FALSE; - char *_kwnames[] = { "self","nPage","pPage","strText","bSelect","imageId", NULL }; + char *_kwnames[] = { "self","page","page","text","select","imageId", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiOO|ii:wxNotebook_InsertPage",_kwnames,&_argo0,&_arg1,&_argo2,&_obj3,&tempbool4,&_arg5)) @@ -1327,7 +1326,7 @@ static PyObject *_wrap_wxNotebook_GetPage(PyObject *self, PyObject *args, PyObje wxNotebook * _arg0; int _arg1; PyObject * _argo0 = 0; - char *_kwnames[] = { "self","nPage", NULL }; + char *_kwnames[] = { "self","page", NULL }; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxNotebook_GetPage",_kwnames,&_argo0,&_arg1)) @@ -2541,8 +2540,7 @@ static PyObject *_wrap_wxTaskBarIcon_SetIcon(PyObject *self, PyObject *args, PyO } } if (_argo1) { - if (_argo1 == Py_None) { _arg1 = NULL; } - else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { + if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxIcon_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxTaskBarIcon_SetIcon. Expected _wxIcon_p."); return NULL; } @@ -3494,8 +3492,7 @@ static PyObject *_wrap_new_wxPyControl(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo5) { - if (_argo5 == Py_None) { _arg5 = NULL; } - else if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { + if (SWIG_GetPtrObj(_argo5,(void **) &_arg5,"_wxValidator_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 6 of new_wxPyControl. Expected _wxValidator_p."); return NULL; } diff --git a/wxPython/src/msw/windows2.py b/wxPython/src/msw/windows2.py index 1956c91f0e..b263d3c4c7 100644 --- a/wxPython/src/msw/windows2.py +++ b/wxPython/src/msw/windows2.py @@ -249,9 +249,12 @@ class wxTaskBarIconPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,windows2c=windows2c): - if self.thisown == 1 : - windows2c.delete_wxTaskBarIcon(self) + def __del__(self, delfunc=windows2c.delete_wxTaskBarIcon): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def SetIcon(self, *_args, **_kwargs): val = apply(windows2c.wxTaskBarIcon_SetIcon,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/windows3.cpp b/wxPython/src/msw/windows3.cpp index 2a7c6fe148..41a235941a 100644 --- a/wxPython/src/msw/windows3.cpp +++ b/wxPython/src/msw/windows3.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/src/msw/windows3.py b/wxPython/src/msw/windows3.py index 994e73cca0..c7a571f564 100644 --- a/wxPython/src/msw/windows3.py +++ b/wxPython/src/msw/windows3.py @@ -246,9 +246,12 @@ class wxLayoutAlgorithmPtr(wxObjectPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,windows3c=windows3c): - if self.thisown == 1 : - windows3c.delete_wxLayoutAlgorithm(self) + def __del__(self, delfunc=windows3c.delete_wxLayoutAlgorithm): + if self.thisown == 1: + try: + delfunc(self) + except: + pass def LayoutMDIFrame(self, *_args, **_kwargs): val = apply(windows3c.wxLayoutAlgorithm_LayoutMDIFrame,(self,) + _args, _kwargs) return val diff --git a/wxPython/src/msw/wizard.cpp b/wxPython/src/msw/wizard.cpp index c7e05cbbe4..4dcad1e649 100644 --- a/wxPython/src/msw/wizard.cpp +++ b/wxPython/src/msw/wizard.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -359,8 +358,7 @@ static PyObject *_wrap_wxWizardPage_Create(PyObject *self, PyObject *args, PyObj } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxWizardPage_Create. Expected _wxBitmap_p."); return NULL; } @@ -636,8 +634,7 @@ static PyObject *_wrap_wxPyWizardPage_Create(PyObject *self, PyObject *args, PyO } } if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxPyWizardPage_Create. Expected _wxBitmap_p."); return NULL; } @@ -1382,8 +1379,7 @@ static PyObject *_wrap_new_wxWizardPageSimple(PyObject *self, PyObject *args, Py } } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxWizardPageSimple. Expected _wxBitmap_p."); return NULL; } @@ -1479,8 +1475,7 @@ static PyObject *_wrap_wxWizardPageSimple_Create(PyObject *self, PyObject *args, } } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxWizardPageSimple_Create. Expected _wxBitmap_p."); return NULL; } @@ -1679,8 +1674,7 @@ static PyObject *_wrap_new_wxWizard(PyObject *self, PyObject *args, PyObject *kw return NULL; } if (_argo3) { - if (_argo3 == Py_None) { _arg3 = NULL; } - else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxWizard. Expected _wxBitmap_p."); return NULL; } @@ -1779,8 +1773,7 @@ static PyObject *_wrap_wxWizard_Create(PyObject *self, PyObject *args, PyObject return NULL; } if (_argo4) { - if (_argo4 == Py_None) { _arg4 = NULL; } - else if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { + if (SWIG_GetPtrObj(_argo4,(void **) &_arg4,"_wxBitmap_p")) { PyErr_SetString(PyExc_TypeError,"Type error in argument 5 of wxWizard_Create. Expected _wxBitmap_p."); return NULL; } @@ -2069,7 +2062,83 @@ static PyObject *_wrap_wxWizard_ShowPage(PyObject *self, PyObject *args, PyObjec return _resultobj; } +#define wxWizard_HasNextPage(_swigobj,_swigarg0) (_swigobj->HasNextPage(_swigarg0)) +static PyObject *_wrap_wxWizard_HasNextPage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxWizard * _arg0; + wxWizardPage * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","page", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWizard_HasNextPage",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWizard_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWizard_HasNextPage. Expected _wxWizard_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWizardPage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWizard_HasNextPage. Expected _wxWizardPage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxWizard_HasNextPage(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxWizard_HasPrevPage(_swigobj,_swigarg0) (_swigobj->HasPrevPage(_swigarg0)) +static PyObject *_wrap_wxWizard_HasPrevPage(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + wxWizard * _arg0; + wxWizardPage * _arg1; + PyObject * _argo0 = 0; + PyObject * _argo1 = 0; + char *_kwnames[] = { "self","page", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWizard_HasPrevPage",_kwnames,&_argo0,&_argo1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWizard_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWizard_HasPrevPage. Expected _wxWizard_p."); + return NULL; + } + } + if (_argo1) { + if (_argo1 == Py_None) { _arg1 = NULL; } + else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWizardPage_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWizard_HasPrevPage. Expected _wxWizardPage_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxWizard_HasPrevPage(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + static PyMethodDef wizardcMethods[] = { + { "wxWizard_HasPrevPage", (PyCFunction) _wrap_wxWizard_HasPrevPage, METH_VARARGS | METH_KEYWORDS }, + { "wxWizard_HasNextPage", (PyCFunction) _wrap_wxWizard_HasNextPage, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_ShowPage", (PyCFunction) _wrap_wxWizard_ShowPage, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_IsRunning", (PyCFunction) _wrap_wxWizard_IsRunning, METH_VARARGS | METH_KEYWORDS }, { "wxWizard_FitToPage", (PyCFunction) _wrap_wxWizard_FitToPage, METH_VARARGS | METH_KEYWORDS }, @@ -2258,6 +2327,7 @@ SWIGEXPORT(void) initwizardc() { PyDict_SetItemString(d,"wxEVT_WIZARD_PAGE_CHANGING", PyInt_FromLong((long) wxEVT_WIZARD_PAGE_CHANGING)); PyDict_SetItemString(d,"wxEVT_WIZARD_CANCEL", PyInt_FromLong((long) wxEVT_WIZARD_CANCEL)); PyDict_SetItemString(d,"wxEVT_WIZARD_HELP", PyInt_FromLong((long) wxEVT_WIZARD_HELP)); + PyDict_SetItemString(d,"wxEVT_WIZARD_FINISHED", PyInt_FromLong((long) wxEVT_WIZARD_FINISHED)); wxClassInfo::CleanUpClasses(); wxClassInfo::InitializeClasses(); diff --git a/wxPython/src/msw/wizard.py b/wxPython/src/msw/wizard.py index 391048f193..845cdb939f 100644 --- a/wxPython/src/msw/wizard.py +++ b/wxPython/src/msw/wizard.py @@ -32,6 +32,9 @@ def EVT_WIZARD_CANCEL(win, id, func): def EVT_WIZARD_HELP(win, id, func): win.Connect(id, -1, wxEVT_WIZARD_HELP, func) +def EVT_WIZARD_FINISHED(win, id, func): + win.Connect(id, -1, wxEVT_WIZARD_FINISHED, func) + class wxWizardEventPtr(wxNotifyEventPtr): def __init__(self,this): @@ -226,6 +229,12 @@ class wxWizardPtr(wxDialogPtr): def ShowPage(self, *_args, **_kwargs): val = apply(wizardc.wxWizard_ShowPage,(self,) + _args, _kwargs) return val + def HasNextPage(self, *_args, **_kwargs): + val = apply(wizardc.wxWizard_HasNextPage,(self,) + _args, _kwargs) + return val + def HasPrevPage(self, *_args, **_kwargs): + val = apply(wizardc.wxWizard_HasPrevPage,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxWizard instance at %s>" % (self.this,) class wxWizard(wxWizardPtr): @@ -258,6 +267,7 @@ wxEVT_WIZARD_PAGE_CHANGED = wizardc.wxEVT_WIZARD_PAGE_CHANGED wxEVT_WIZARD_PAGE_CHANGING = wizardc.wxEVT_WIZARD_PAGE_CHANGING wxEVT_WIZARD_CANCEL = wizardc.wxEVT_WIZARD_CANCEL wxEVT_WIZARD_HELP = wizardc.wxEVT_WIZARD_HELP +wxEVT_WIZARD_FINISHED = wizardc.wxEVT_WIZARD_FINISHED #-------------- USER INCLUDE ----------------------- @@ -265,3 +275,7 @@ wxEVT_WIZARD_HELP = wizardc.wxEVT_WIZARD_HELP # Stuff these names into the wx namespace so wxPyConstructObject can find them import wx wx.wxWizardEventPtr = wxWizardEventPtr +wx.wxWizardPagePtr = wxWizardPagePtr +wx.wxPyWizardPagePtr = wxPyWizardPagePtr +wx.wxWizardPageSimplePtr = wxWizardPageSimplePtr +wx.wxWizardPtr = wxWizardPtr diff --git a/wxPython/src/msw/wx.cpp b/wxPython/src/msw/wx.cpp index 99bb78a663..5fe7254649 100644 --- a/wxPython/src/msw/wx.cpp +++ b/wxPython/src/msw/wx.cpp @@ -19,6 +19,8 @@ /* Implementation : PYTHON */ #define SWIGPYTHON +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -36,12 +38,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); @@ -666,6 +665,7 @@ static wxPyCoreAPI API = { wxRealPoint_helper, wxRect_helper, wxColour_helper, + wxPoint2DDouble_helper, wxPyCBH_setCallbackInfo, wxPyCBH_findCallback, @@ -909,7 +909,6 @@ static PyObject *_wrap_wxGetApp(PyObject *self, PyObject *args, PyObject *kwargs PyObject * _resultobj; wxPyApp * _result; char *_kwnames[] = { NULL }; - char _ptemp[128]; self = self; if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxGetApp",_kwnames)) @@ -920,13 +919,7 @@ static PyObject *_wrap_wxGetApp(PyObject *self, PyObject *args, PyObject *kwargs wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} if (_result) { - SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyApp_p"); - _resultobj = Py_BuildValue("s",_ptemp); - } else { - Py_INCREF(Py_None); - _resultobj = Py_None; - } +}{ _resultobj = wxPyMake_wxObject(_result); } return _resultobj; } @@ -1022,6 +1015,44 @@ static PyObject *_wrap_delete_wxPyApp(PyObject *self, PyObject *args, PyObject * return _resultobj; } +#define wxPyApp__setCallbackInfo(_swigobj,_swigarg0,_swigarg1) (_swigobj->_setCallbackInfo(_swigarg0,_swigarg1)) +static PyObject *_wrap_wxPyApp__setCallbackInfo(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyApp * _arg0; + PyObject * _arg1; + PyObject * _arg2; + PyObject * _argo0 = 0; + PyObject * _obj1 = 0; + PyObject * _obj2 = 0; + char *_kwnames[] = { "self","self","_class", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxPyApp__setCallbackInfo",_kwnames,&_argo0,&_obj1,&_obj2)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp__setCallbackInfo. Expected _wxPyApp_p."); + return NULL; + } + } +{ + _arg1 = _obj1; +} +{ + _arg2 = _obj2; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp__setCallbackInfo(_arg0,_arg1,_arg2); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + #define wxPyApp_GetAppName(_swigobj) (_swigobj->GetAppName()) static PyObject *_wrap_wxPyApp_GetAppName(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; @@ -1048,7 +1079,7 @@ static PyObject *_wrap_wxPyApp_GetAppName(PyObject *self, PyObject *args, PyObje if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1113,7 +1144,7 @@ static PyObject *_wrap_wxPyApp_GetClassName(PyObject *self, PyObject *args, PyOb if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1234,7 +1265,7 @@ static PyObject *_wrap_wxPyApp_GetVendorName(PyObject *self, PyObject *args, PyO if (PyErr_Occurred()) return NULL; }{ #if wxUSE_UNICODE - _resultobj = PyUnicode_FromUnicode(_result->c_str(), _result->Len()); + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); #else _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); #endif @@ -1446,9 +1477,9 @@ static PyObject *_wrap_wxPyApp_Yield(PyObject *self, PyObject *args, PyObject *k PyObject * _resultobj; bool _result; wxPyApp * _arg0; - bool _arg1 = (bool ) (0); + bool _arg1 = (bool ) FALSE; PyObject * _argo0 = 0; - int tempbool1 = (int) (0); + int tempbool1 = (int) FALSE; char *_kwnames[] = { "self","onlyIfNeeded", NULL }; self = self; @@ -1748,7 +1779,323 @@ static PyObject *_wrap_wxPyApp_SetUseBestVisual(PyObject *self, PyObject *args, return _resultobj; } +#define wxPyApp_GetAssertMode(_swigobj) (_swigobj->GetAssertMode()) +static PyObject *_wrap_wxPyApp_GetAssertMode(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + int _result; + wxPyApp * _arg0; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyApp_GetAssertMode",_kwnames,&_argo0)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_GetAssertMode. Expected _wxPyApp_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (int )wxPyApp_GetAssertMode(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +#define wxPyApp_SetAssertMode(_swigobj,_swigarg0) (_swigobj->SetAssertMode(_swigarg0)) +static PyObject *_wrap_wxPyApp_SetAssertMode(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxPyApp * _arg0; + int _arg1; + PyObject * _argo0 = 0; + char *_kwnames[] = { "self","mode", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxPyApp_SetAssertMode",_kwnames,&_argo0,&_arg1)) + return NULL; + if (_argo0) { + if (_argo0 == Py_None) { _arg0 = NULL; } + else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyApp_p")) { + PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyApp_SetAssertMode. Expected _wxPyApp_p."); + return NULL; + } + } +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp_SetAssertMode(_arg0,_arg1); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacDefaultEncodingIsPC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacDefaultEncodingIsPC",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPyApp::GetMacDefaultEncodingIsPC(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacSupportPCMenuShortcuts(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacSupportPCMenuShortcuts",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (bool )wxPyApp::GetMacSupportPCMenuShortcuts(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("i",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacAboutMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacAboutMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacAboutMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacPreferencesMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacPreferencesMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacPreferencesMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacExitMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacExitMenuItemId",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = (long )wxPyApp::GetMacExitMenuItemId(); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} _resultobj = Py_BuildValue("l",_result); + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_GetMacHelpMenuTitleName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _result; + char *_kwnames[] = { NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxPyApp_GetMacHelpMenuTitleName",_kwnames)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + _result = new wxString (wxPyApp::GetMacHelpMenuTitleName()); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +}{ +#if wxUSE_UNICODE + _resultobj = PyUnicode_FromWideChar(_result->c_str(), _result->Len()); +#else + _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len()); +#endif +} +{ + delete _result; +} + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacDefaultEncodingIsPC(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _arg0; + int tempbool0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxPyApp_SetMacDefaultEncodingIsPC",_kwnames,&tempbool0)) + return NULL; + _arg0 = (bool ) tempbool0; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacDefaultEncodingIsPC(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacSupportPCMenuShortcuts(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + bool _arg0; + int tempbool0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"i:wxPyApp_SetMacSupportPCMenuShortcuts",_kwnames,&tempbool0)) + return NULL; + _arg0 = (bool ) tempbool0; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacSupportPCMenuShortcuts(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacAboutMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacAboutMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacAboutMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacPreferencesMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacPreferencesMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacPreferencesMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacExitMenuItemId(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + long _arg0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"l:wxPyApp_SetMacExitMenuItemId",_kwnames,&_arg0)) + return NULL; +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacExitMenuItemId(_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; + return _resultobj; +} + +static PyObject *_wrap_wxPyApp_SetMacHelpMenuTitleName(PyObject *self, PyObject *args, PyObject *kwargs) { + PyObject * _resultobj; + wxString * _arg0; + PyObject * _obj0 = 0; + char *_kwnames[] = { "val", NULL }; + + self = self; + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxPyApp_SetMacHelpMenuTitleName",_kwnames,&_obj0)) + return NULL; +{ + _arg0 = wxString_in_helper(_obj0); + if (_arg0 == NULL) + return NULL; +} +{ + PyThreadState* __tstate = wxPyBeginAllowThreads(); + wxPyApp::SetMacHelpMenuTitleName(*_arg0); + + wxPyEndAllowThreads(__tstate); + if (PyErr_Occurred()) return NULL; +} Py_INCREF(Py_None); + _resultobj = Py_None; +{ + if (_obj0) + delete _arg0; +} + return _resultobj; +} + static PyMethodDef wxcMethods[] = { + { "wxPyApp_SetMacHelpMenuTitleName", (PyCFunction) _wrap_wxPyApp_SetMacHelpMenuTitleName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacExitMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacExitMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacPreferencesMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacPreferencesMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacAboutMenuItemId", (PyCFunction) _wrap_wxPyApp_SetMacAboutMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacSupportPCMenuShortcuts", (PyCFunction) _wrap_wxPyApp_SetMacSupportPCMenuShortcuts, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetMacDefaultEncodingIsPC", (PyCFunction) _wrap_wxPyApp_SetMacDefaultEncodingIsPC, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacHelpMenuTitleName", (PyCFunction) _wrap_wxPyApp_GetMacHelpMenuTitleName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacExitMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacExitMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacPreferencesMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacPreferencesMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacAboutMenuItemId", (PyCFunction) _wrap_wxPyApp_GetMacAboutMenuItemId, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacSupportPCMenuShortcuts", (PyCFunction) _wrap_wxPyApp_GetMacSupportPCMenuShortcuts, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetMacDefaultEncodingIsPC", (PyCFunction) _wrap_wxPyApp_GetMacDefaultEncodingIsPC, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_SetAssertMode", (PyCFunction) _wrap_wxPyApp_SetAssertMode, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp_GetAssertMode", (PyCFunction) _wrap_wxPyApp_GetAssertMode, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetUseBestVisual", (PyCFunction) _wrap_wxPyApp_SetUseBestVisual, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetVendorName", (PyCFunction) _wrap_wxPyApp_SetVendorName, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_SetTopWindow", (PyCFunction) _wrap_wxPyApp_SetTopWindow, METH_VARARGS | METH_KEYWORDS }, @@ -1772,6 +2119,7 @@ static PyMethodDef wxcMethods[] = { { "wxPyApp_GetClassName", (PyCFunction) _wrap_wxPyApp_GetClassName, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_GetAuto3D", (PyCFunction) _wrap_wxPyApp_GetAuto3D, METH_VARARGS | METH_KEYWORDS }, { "wxPyApp_GetAppName", (PyCFunction) _wrap_wxPyApp_GetAppName, METH_VARARGS | METH_KEYWORDS }, + { "wxPyApp__setCallbackInfo", (PyCFunction) _wrap_wxPyApp__setCallbackInfo, METH_VARARGS | METH_KEYWORDS }, { "delete_wxPyApp", (PyCFunction) _wrap_delete_wxPyApp, METH_VARARGS | METH_KEYWORDS }, { "new_wxPyApp", (PyCFunction) _wrap_new_wxPyApp, METH_VARARGS | METH_KEYWORDS }, { "wxApp_CleanUp", (PyCFunction) _wrap_wxApp_CleanUp, METH_VARARGS | METH_KEYWORDS }, @@ -2023,6 +2371,7 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxRA_SPECIFY_ROWS", PyInt_FromLong((long) wxRA_SPECIFY_ROWS)); PyDict_SetItemString(d,"wxRA_SPECIFY_COLS", PyInt_FromLong((long) wxRA_SPECIFY_COLS)); PyDict_SetItemString(d,"wxRB_GROUP", PyInt_FromLong((long) wxRB_GROUP)); + PyDict_SetItemString(d,"wxRB_SINGLE", PyInt_FromLong((long) wxRB_SINGLE)); PyDict_SetItemString(d,"wxGA_PROGRESSBAR", PyInt_FromLong((long) wxGA_PROGRESSBAR)); PyDict_SetItemString(d,"wxGA_HORIZONTAL", PyInt_FromLong((long) wxGA_HORIZONTAL)); PyDict_SetItemString(d,"wxGA_VERTICAL", PyInt_FromLong((long) wxGA_VERTICAL)); @@ -2544,10 +2893,6 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxHT_WINDOW_HORZ_SCROLLBAR", PyInt_FromLong((long) wxHT_WINDOW_HORZ_SCROLLBAR)); PyDict_SetItemString(d,"wxHT_WINDOW_CORNER", PyInt_FromLong((long) wxHT_WINDOW_CORNER)); PyDict_SetItemString(d,"wxHT_MAX", PyInt_FromLong((long) wxHT_MAX)); - PyDict_SetItemString(d,"FALSE", PyInt_FromLong((long) 0)); - PyDict_SetItemString(d,"false", PyInt_FromLong((long) 0)); - PyDict_SetItemString(d,"TRUE", PyInt_FromLong((long) 1)); - PyDict_SetItemString(d,"true", PyInt_FromLong((long) 1)); PyDict_SetItemString(d,"wxEVT_NULL", PyInt_FromLong((long) wxEVT_NULL)); PyDict_SetItemString(d,"wxEVT_FIRST", PyInt_FromLong((long) wxEVT_FIRST)); PyDict_SetItemString(d,"wxEVT_COMMAND_BUTTON_CLICKED", PyInt_FromLong((long) wxEVT_COMMAND_BUTTON_CLICKED)); @@ -2672,6 +3017,10 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"cvar", SWIG_globals); SWIG_addvarlink(SWIG_globals,"wxDefaultPosition",_wrap_wxDefaultPosition_get, _wrap_wxDefaultPosition_set); SWIG_addvarlink(SWIG_globals,"wxDefaultSize",_wrap_wxDefaultSize_get, _wrap_wxDefaultSize_set); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_SUPPRESS", PyInt_FromLong((long) wxPYAPP_ASSERT_SUPPRESS)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_EXCEPTION", PyInt_FromLong((long) wxPYAPP_ASSERT_EXCEPTION)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_DIALOG", PyInt_FromLong((long) wxPYAPP_ASSERT_DIALOG)); + PyDict_SetItemString(d,"wxPYAPP_ASSERT_LOG", PyInt_FromLong((long) wxPYAPP_ASSERT_LOG)); // Make our API structure a CObject so other modules can import it // from this module. @@ -2680,7 +3029,7 @@ SWIGEXPORT(void) initwxc() { Py_XDECREF(v); - __wxPreStart(); // initialize the GUI toolkit, if needed. + __wxPreStart(d); // initialize the GUI toolkit, if needed. // Since these modules are all linked together, initialize them now @@ -2715,7 +3064,7 @@ SWIGEXPORT(void) initwxc() { PyDict_SetItemString(d,"wxVERSION_NUMBER", PyInt_FromLong((long)wxVERSION_NUMBER )); #if wxUSE_UNICODE wxString tempStr(wxVERSION_STRING); - PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromUnicode(tempStr.c_str(), tempStr.Len())); + PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromWideChar(tempStr.c_str(), tempStr.Len())); #else PyDict_SetItemString(d,"wxVERSION_STRING", PyString_FromString(wxVERSION_STRING)); #endif diff --git a/wxPython/src/msw/wx.py b/wxPython/src/msw/wx.py index 7fd9408c79..5fe2167b98 100644 --- a/wxPython/src/msw/wx.py +++ b/wxPython/src/msw/wx.py @@ -46,9 +46,15 @@ class wxPyAppPtr(wxEvtHandlerPtr): def __init__(self,this): self.this = this self.thisown = 0 - def __del__(self,wxc=wxc): - if self.thisown == 1 : - wxc.delete_wxPyApp(self) + def __del__(self, delfunc=wxc.delete_wxPyApp): + if self.thisown == 1: + try: + delfunc(self) + except: + pass + def _setCallbackInfo(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp__setCallbackInfo,(self,) + _args, _kwargs) + return val def GetAppName(self, *_args, **_kwargs): val = apply(wxc.wxPyApp_GetAppName,(self,) + _args, _kwargs) return val @@ -118,12 +124,20 @@ class wxPyAppPtr(wxEvtHandlerPtr): def SetUseBestVisual(self, *_args, **_kwargs): val = apply(wxc.wxPyApp_SetUseBestVisual,(self,) + _args, _kwargs) return val + def GetAssertMode(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp_GetAssertMode,(self,) + _args, _kwargs) + return val + def SetAssertMode(self, *_args, **_kwargs): + val = apply(wxc.wxPyApp_SetAssertMode,(self,) + _args, _kwargs) + return val def __repr__(self): return "<C wxPyApp instance at %s>" % (self.this,) class wxPyApp(wxPyAppPtr): def __init__(self,*_args,**_kwargs): self.this = apply(wxc.new_wxPyApp,_args,_kwargs) self.thisown = 1 + self._setCallbackInfo(self, wxPyApp) + self._setOORInfo(self) @@ -152,11 +166,34 @@ _wxSetDictionary = wxc._wxSetDictionary def wxGetApp(*_args, **_kwargs): val = apply(wxc.wxGetApp,_args,_kwargs) - if val: val = wxPyAppPtr(val) return val wxApp_CleanUp = wxc.wxApp_CleanUp +wxPyApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC + +wxPyApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts + +wxPyApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId + +wxPyApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId + +wxPyApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId + +wxPyApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName + +wxPyApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC + +wxPyApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts + +wxPyApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId + +wxPyApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId + +wxPyApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId + +wxPyApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + #-------------- VARIABLE WRAPPERS ------------------ @@ -277,6 +314,7 @@ wxRA_VERTICAL = wxc.wxRA_VERTICAL wxRA_SPECIFY_ROWS = wxc.wxRA_SPECIFY_ROWS wxRA_SPECIFY_COLS = wxc.wxRA_SPECIFY_COLS wxRB_GROUP = wxc.wxRB_GROUP +wxRB_SINGLE = wxc.wxRB_SINGLE wxGA_PROGRESSBAR = wxc.wxGA_PROGRESSBAR wxGA_HORIZONTAL = wxc.wxGA_HORIZONTAL wxGA_VERTICAL = wxc.wxGA_VERTICAL @@ -798,10 +836,6 @@ wxHT_WINDOW_VERT_SCROLLBAR = wxc.wxHT_WINDOW_VERT_SCROLLBAR wxHT_WINDOW_HORZ_SCROLLBAR = wxc.wxHT_WINDOW_HORZ_SCROLLBAR wxHT_WINDOW_CORNER = wxc.wxHT_WINDOW_CORNER wxHT_MAX = wxc.wxHT_MAX -FALSE = wxc.FALSE -false = wxc.false -TRUE = wxc.TRUE -true = wxc.true wxEVT_NULL = wxc.wxEVT_NULL wxEVT_FIRST = wxc.wxEVT_FIRST wxEVT_COMMAND_BUTTON_CLICKED = wxc.wxEVT_COMMAND_BUTTON_CLICKED @@ -926,13 +960,17 @@ __version__ = wxc.__version__ cvar = wxc.cvar wxDefaultPosition = wxPointPtr(wxc.cvar.wxDefaultPosition) wxDefaultSize = wxSizePtr(wxc.cvar.wxDefaultSize) +wxPYAPP_ASSERT_SUPPRESS = wxc.wxPYAPP_ASSERT_SUPPRESS +wxPYAPP_ASSERT_EXCEPTION = wxc.wxPYAPP_ASSERT_EXCEPTION +wxPYAPP_ASSERT_DIALOG = wxc.wxPYAPP_ASSERT_DIALOG +wxPYAPP_ASSERT_LOG = wxc.wxPYAPP_ASSERT_LOG #-------------- USER INCLUDE ----------------------- #---------------------------------------------------------------------------- # Name: _extra.py -# Purpose: This file is appended to the shadow class file generated +# Purpose: This file is appended to the shadow class file generated # by SWIG. We add some unSWIGable things here. # # Author: Robin Dunn @@ -1063,6 +1101,12 @@ def EVT_WINDOW_CREATE(win, func): def EVT_WINDOW_DESTROY(win, func): win.Connect(-1, -1, wxEVT_DESTROY, func) +def EVT_WINDOW_CREATE_ID(win, id, func): + win.Connect(id, -1, wxEVT_CREATE, func) + +def EVT_WINDOW_DESTROY_ID(win, id, func): + win.Connect(id, -1, wxEVT_DESTROY, func) + def EVT_SET_CURSOR(win, func): win.Connect(-1, -1, wxEVT_SET_CURSOR, func) @@ -1195,7 +1239,7 @@ def EVT_COMMAND_SCROLL(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN, func) win.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK,func) win.Connect(id, -1, wxEVT_SCROLL_THUMBRELEASE,func) - win.Connect(-1, -1, wxEVT_SCROLL_ENDSCROLL, func) + win.Connect(id, -1, wxEVT_SCROLL_ENDSCROLL, func) def EVT_COMMAND_SCROLL_TOP(win, id, func): win.Connect(id, -1, wxEVT_SCROLL_TOP, func) @@ -1519,17 +1563,50 @@ wxColor = wxColour wxNamedColor = wxNamedColour wxPen = wxPyPen wxScrollbar = wxScrollBar +wxPoint2D = wxPoint2DDouble + +wxPyAssertionError = wxc.wxPyAssertionError # backwards compatibility -wxNoRefBitmap = wxBitmap -wxPyDefaultPosition = wxDefaultPosition -wxPyDefaultSize = wxDefaultSize -NULL = None +wxNoRefBitmap = wxBitmap +wxPyDefaultPosition = wxDefaultPosition +wxPyDefaultSize = wxDefaultSize +NULL = None wxSystemSettings_GetSystemColour = wxSystemSettings_GetColour wxSystemSettings_GetSystemFont = wxSystemSettings_GetFont wxSystemSettings_GetSystemMetric = wxSystemSettings_GetMetric + +# workarounds for bad wxRTTI names +__wxPyPtrTypeMap['wxGauge95'] = 'wxGauge' + + + +def NewId(): + import warnings + warnings.warn("Use wxNewId instead", DeprecationWarning, 2) + return wxNewId() + +def RegisterId(ID): + import warnings + warnings.warn("Use wxRegisterId instead", DeprecationWarning, 2) + return wxRegisterId(ID) + + + +# Use Python's bool constants if available, make aliases if not +try: + True +except NameError: + True = 1==1 + False = 1==0 + +# Backwards compaatible +TRUE = true = True +FALSE = false = False + + #---------------------------------------------------------------------- # wxGTK sets the locale when initialized. Doing this at the Python # level should set it up to match what GTK is doing at the C level. @@ -1540,7 +1617,11 @@ if wxPlatform == "__WXGTK__": except: pass - +if wxPlatform == "__WXMSW__": + import os + localedir = os.path.join(os.path.split(__file__)[0], "locale") + wxLocale_AddCatalogLookupPathPrefix(localedir) + del os #---------------------------------------------------------------------- # wxWindows version numbers. wxPython version is in __version__. @@ -1592,6 +1673,18 @@ def wxPyTypeCast(obj, typeStr): theObj.thisown = obj.thisown return theObj +#---------------------------------------------------------------------------- +# An isinstance for Pythons < 2.2 that can check a sequence of class objects +# like the one in 2.2 can. + +def wxPy_isinstance(obj, klasses): + import types + if sys.version[:3] < "2.2" and type(klasses) in [types.TupleType, types.ListType]: + for klass in klasses: + if isinstance(obj, klass): return True + return False + else: + return isinstance(obj, klasses) #---------------------------------------------------------------------------- _wxCallAfterId = None @@ -1617,6 +1710,9 @@ def wxCallAfter(callable, *args, **kw): evt.kw = kw wxPostEvent(app, evt) +# an alias +wxRunLater = wxCallAfter + #---------------------------------------------------------------------- class wxPyDeadObjectError(AttributeError): @@ -1676,7 +1772,7 @@ class wxPyOnDemandOutputWindow: self.text = wxTextCtrl(self.frame, -1, "", style = wxTE_MULTILINE|wxTE_READONLY) self.frame.SetSize(wxSize(450, 300)) - self.frame.Show(true) + self.frame.Show(True) EVT_CLOSE(self.frame, self.OnCloseWindow) self.text.AppendText(str) @@ -1697,12 +1793,17 @@ class wxApp(wxPyApp): error = 'wxApp.error' outputWindowClass = wxPyOnDemandOutputWindow - def __init__(self, redirect=_defRedirect, filename=None): + def __init__(self, redirect=_defRedirect, filename=None, useBestVisual=False): wxPyApp.__init__(self) self.stdioWin = None self.saveStdio = (sys.stdout, sys.stderr) + + # This has to be done before OnInit + self.SetUseBestVisual(useBestVisual) + if redirect: self.RedirectStdio(filename) + # this initializes wxWindows and then calls our OnInit _wxStart(self.OnInit) @@ -1729,7 +1830,7 @@ class wxApp(wxPyApp): if filename: sys.stdout = sys.stderr = open(filename, 'a') else: - self.stdioWin = self.outputWindowClass() # wxPyOnDemandOutputWindow + self.stdioWin = self.outputWindowClass() sys.stdout = sys.stderr = self.stdioWin @@ -1737,6 +1838,21 @@ class wxApp(wxPyApp): sys.stdout, sys.stderr = self.saveStdio +# change from wxPyApp_ to wxApp_ +wxApp_GetMacDefaultEncodingIsPC = wxc.wxPyApp_GetMacDefaultEncodingIsPC +wxApp_GetMacSupportPCMenuShortcuts = wxc.wxPyApp_GetMacSupportPCMenuShortcuts +wxApp_GetMacAboutMenuItemId = wxc.wxPyApp_GetMacAboutMenuItemId +wxApp_GetMacPreferencesMenuItemId = wxc.wxPyApp_GetMacPreferencesMenuItemId +wxApp_GetMacExitMenuItemId = wxc.wxPyApp_GetMacExitMenuItemId +wxApp_GetMacHelpMenuTitleName = wxc.wxPyApp_GetMacHelpMenuTitleName +wxApp_SetMacDefaultEncodingIsPC = wxc.wxPyApp_SetMacDefaultEncodingIsPC +wxApp_SetMacSupportPCMenuShortcuts = wxc.wxPyApp_SetMacSupportPCMenuShortcuts +wxApp_SetMacAboutMenuItemId = wxc.wxPyApp_SetMacAboutMenuItemId +wxApp_SetMacPreferencesMenuItemId = wxc.wxPyApp_SetMacPreferencesMenuItemId +wxApp_SetMacExitMenuItemId = wxc.wxPyApp_SetMacExitMenuItemId +wxApp_SetMacHelpMenuTitleName = wxc.wxPyApp_SetMacHelpMenuTitleName + + #---------------------------------------------------------------------------- class wxPySimpleApp(wxApp): @@ -1744,7 +1860,7 @@ class wxPySimpleApp(wxApp): wxApp.__init__(self, flag) def OnInit(self): wxInitAllImageHandlers() - return true + return True class wxPyWidgetTester(wxApp): @@ -1755,11 +1871,11 @@ class wxPyWidgetTester(wxApp): def OnInit(self): self.frame = wxFrame(None, -1, "Widget Tester", pos=(0,0), size=self.size) self.SetTopWindow(self.frame) - return true + return True def SetWidget(self, widgetClass, *args): w = apply(widgetClass, (self.frame,) + args) - self.frame.Show(true) + self.frame.Show(True) #---------------------------------------------------------------------------- # DO NOT hold any other references to this object. This is how we diff --git a/wxPython/src/my_typemaps.i b/wxPython/src/my_typemaps.i index 7f5ccb9443..4a3e33a01a 100644 --- a/wxPython/src/my_typemaps.i +++ b/wxPython/src/my_typemaps.i @@ -168,7 +168,7 @@ $function %typemap(python, out) wxString { #if wxUSE_UNICODE - $target = PyUnicode_FromUnicode($source->c_str(), $source->Len()); + $target = PyUnicode_FromWideChar($source->c_str(), $source->Len()); #else $target = PyString_FromStringAndSize($source->c_str(), $source->Len()); #endif @@ -180,7 +180,7 @@ $function %typemap(python, out) wxString* { #if wxUSE_UNICODE - $target = PyUnicode_FromUnicode($source->c_str(), $source->Len()); + $target = PyUnicode_FromWideChar($source->c_str(), $source->Len()); #else $target = PyString_FromStringAndSize($source->c_str(), $source->Len()); #endif @@ -244,6 +244,12 @@ $function return NULL; } +%typemap(python,in) wxPoint2DDouble& (wxPoint2DDouble temp) { + $target = &temp; + if (! wxPoint2DDouble_helper($source, &$target)) + return NULL; +} + //--------------------------------------------------------------------------- // Typemap to convert strings to wxColour. Two string formats are accepted, // either a colour name, or a hex colour spec like "#RRGGBB" @@ -268,11 +274,10 @@ $function PyObject* item = PySequence_GetItem($source, i); #if wxUSE_UNICODE PyObject* str = PyObject_Unicode(item); - $target->Add(PyUnicode_AsUnicode(str)); #else PyObject* str = PyObject_Str(item); - $target->Add(PyString_AsString(str)); #endif + $target->Add(Py2wxString(str)); Py_DECREF(item); Py_DECREF(str); } @@ -308,6 +313,29 @@ $function } +// Typemaps to convert an array of ints to a list +%typemap(python, out) wxArrayInt& { + $target = PyList_New(0); + size_t idx; + for (idx = 0; idx < $source->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong($source->Item(idx)); + PyList_Append($target, val); + Py_DECREF(val); + } +} + +%typemap(python, out) wxArrayInt { + $target = PyList_New(0); + size_t idx; + for (idx = 0; idx < $source->GetCount(); idx += 1) { + PyObject* val = PyInt_FromLong($source->Item(idx)); + PyList_Append($target, val); + Py_DECREF(val); + } + delete $source; +} + + //--------------------------------------------------------------------------- // Map T_OUTPUTs for floats to return ints. @@ -360,6 +388,11 @@ $function %typemap(python,ignore) byte *OUTPUT = byte *T_OUTPUT; %typemap(python,argout) byte *OUTPUT = byte *T_OUTPUT; + +%typemap(python,ignore) wxCoord *OUTPUT = int *OUTPUT; +%typemap(python,argout) wxCoord *OUTPUT = int *OUTPUT; + + //--------------------------------------------------------------------------- // Typemaps to convert return values that are base class pointers // to the real derived type, if possible. See wxPyMake_wxObject in @@ -369,6 +402,8 @@ $function %typemap(python, out) wxMenu* { $target = wxPyMake_wxObject($source); } %typemap(python, out) wxValidator* { $target = wxPyMake_wxObject($source); } +%typemap(python, out) wxApp* { $target = wxPyMake_wxObject($source); } +%typemap(python, out) wxPyApp* { $target = wxPyMake_wxObject($source); } %typemap(python, out) wxDC* { $target = wxPyMake_wxObject($source); } %typemap(python, out) wxFSFile* { $target = wxPyMake_wxObject($source); } %typemap(python, out) wxFileSystem* { $target = wxPyMake_wxObject($source); } diff --git a/wxPython/src/pyistream.h b/wxPython/src/pyistream.h index 5dcd924779..930af405c4 100644 --- a/wxPython/src/pyistream.h +++ b/wxPython/src/pyistream.h @@ -50,6 +50,19 @@ public: void write(wxString data); void writelines(wxStringPtrList); */ + + // wxInputStream methods that may come in handy... + + char Peek() { if (m_wxis) return m_wxis->Peek(); else return -1; } + char GetC() { if (m_wxis) return m_wxis->GetC(); else return -1; } + size_t LastRead() { if (m_wxis) return m_wxis->LastRead(); else return 0; } + bool CanRead() { if (m_wxis) return m_wxis->CanRead(); else return FALSE; } + bool Eof() { if (m_wxis) return m_wxis->Eof(); else return FALSE; } + bool Ungetch(char c) { if (m_wxis) return m_wxis->Ungetch(c); else return FALSE; } + + unsigned long SeekI(unsigned long pos, wxSeekMode mode) + { if (m_wxis) return m_wxis->SeekI(pos, mode); else return 0; } + unsigned long TellI() { if (m_wxis) return m_wxis->TellI(); else return 0; } }; diff --git a/wxPython/src/sizers.i b/wxPython/src/sizers.i index 75ff5e3969..d456bd923d 100644 --- a/wxPython/src/sizers.i +++ b/wxPython/src/sizers.i @@ -30,7 +30,6 @@ %import controls.i %pragma(python) code = "import wx" -%pragma(python) code = "import string" //--------------------------------------------------------------------------- @@ -57,6 +56,7 @@ public: bool IsWindow(); bool IsSizer(); bool IsSpacer(); + bool IsShown(); wxWindow *GetWindow(); void SetWindow( wxWindow *window ); @@ -70,6 +70,7 @@ public: void SetOption( int option ); void SetFlag( int flag ); void SetBorder( int border ); + void Show(bool show); // wxObject* GetUserData(); %addmethods { @@ -173,34 +174,42 @@ public: def Add(self, *args, **kw): if type(args[0]) == type(1): apply(self.AddSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.AddSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.AddWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Insert(self, *args, **kw): if type(args[1]) == type(1): apply(self.InsertSpacer, args, kw) - elif string.find(args[1].this, 'Sizer') != -1: + elif isinstance(args[1], wxSizerPtr): apply(self.InsertSizer, args, kw) - else: + elif isinstance(args[1], wxWindowPtr): apply(self.InsertWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Prepend(self, *args, **kw): if type(args[0]) == type(1): apply(self.PrependSpacer, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.PrependSizer, args, kw) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.PrependWindow, args, kw) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def Remove(self, *args, **kw): if type(args[0]) == type(1): - apply(self.RemovePos, args, kw) - elif string.find(args[0].this, 'Sizer') != -1: - apply(self.RemoveSizer, args, kw) + return apply(self.RemovePos, args, kw) + elif isinstance(args[0], wxSizerPtr): + return apply(self.RemoveSizer, args, kw) + elif isinstance(args[0], wxWindowPtr): + return apply(self.RemoveWindow, args, kw) else: - apply(self.RemoveWindow, args, kw) + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' def AddMany(self, widgets): for childinfo in widgets: @@ -221,10 +230,12 @@ public: def SetItemMinSize(self, *args): if type(args[0]) == type(1): apply(self.SetItemMinSizePos, args) - elif string.find(args[0].this, 'Sizer') != -1: + elif isinstance(args[0], wxSizerPtr): apply(self.SetItemMinSizeSizer, args) - else: + elif isinstance(args[0], wxWindowPtr): apply(self.SetItemMinSizeWindow, args) + else: + raise TypeError, 'Expected int, wxSizer or wxWindow parameter' " wxSize GetSize(); @@ -262,6 +273,46 @@ public: return wxPy_ConvertList(&list, "wxSizerItem"); } } + + + // Manage whether individual windows or sub-sizers are considered + // in the layout calculations or not. + %name(ShowWindow)void Show( wxWindow *window, bool show = TRUE ); + %name(HideWindow)void Hide( wxWindow *window ); + %name(ShowSizer)void Show( wxSizer *sizer, bool show = TRUE ); + %name(HideSizer)void Hide( wxSizer *sizer ); + %name(IsShownWindow)bool IsShown( wxWindow *window ); + %name(IsShownSizer)bool IsShown( wxSizer *sizer ); + + %pragma(python) addtoclass = " + def Show(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.ShowSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.ShowWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def Hide(self, *args): + if isinstance(args[0], wxSizerPtr): + apply(self.HideSizer, args) + elif isinstance(args[0], wxWindowPtr): + apply(self.HideWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' + + def IsShown(self, *args): + if isinstance(args[0], wxSizerPtr): + return apply(self.IsShownSizer, args) + elif isinstance(args[0], wxWindowPtr): + return apply(self.IsShownWindow, args) + else: + raise TypeError, 'Expected wxSizer or wxWindow parameter' +" + + // Recursively call wxWindow::Show () on all sizer items. + void ShowItems (bool show); + }; @@ -303,6 +354,7 @@ public: wxBoxSizer(int orient = wxHORIZONTAL); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" int GetOrientation(); + void SetOrientation(int orient); void RecalcSizes(); wxSize CalcMin(); }; diff --git a/wxPython/src/stattool.i b/wxPython/src/stattool.i index 84b81d7d4f..26c4e1537d 100644 --- a/wxPython/src/stattool.i +++ b/wxPython/src/stattool.i @@ -196,7 +196,7 @@ public: // Insert the new tool at the given position, if pos == GetToolsCount(), it // is equivalent to DoAddTool() - wxToolBarToolBase *InsertTool(size_t pos, + wxToolBarToolBase *DoInsertTool(size_t pos, int id, const wxString& label, const wxBitmap& bitmap, @@ -270,7 +270,7 @@ public: # 2.3.3. They are renamed to have 'Label' in the name so as to be # able to keep backwards compatibility with using the above # methods. Eventually these should migrate to be the methods used - # primarily and loose the 'Label' in the name... + # primarily and lose the 'Label' in the name... def AddLabelTool(self, id, label, bitmap, bmpDisabled = wxNullBitmap, diff --git a/wxPython/src/streams.i b/wxPython/src/streams.i index 9e4feb1537..8bf7f2156d 100644 --- a/wxPython/src/streams.i +++ b/wxPython/src/streams.i @@ -28,7 +28,6 @@ %import _defs.i %pragma(python) code = "import wx" -%pragma(python) code = "import string" //---------------------------------------------------------------------- // typemaps for wxInputStream @@ -61,7 +60,7 @@ if ($source) { _ptr = new wxPyInputStream($source); } - $target = wxPyConstructObject(_ptr, "wxInputStream", TRUE); + $target = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE); } //---------------------------------------------------------------------- @@ -88,6 +87,12 @@ // $target=0; // } +enum wxSeekMode +{ + wxFromStart, + wxFromCurrent, + wxFromEnd +}; @@ -118,6 +123,16 @@ public: void write(wxString data); void writelines(wxStringPtrList); */ + + char Peek(); + char GetC(); + size_t LastRead(); + bool CanRead(); + bool Eof(); + bool Ungetch(char c); + + long SeekI(long pos, wxSeekMode mode = wxFromStart); + long TellI(); } diff --git a/wxPython/src/utils.i b/wxPython/src/utils.i index f82808534f..b40a1044a7 100644 --- a/wxPython/src/utils.i +++ b/wxPython/src/utils.i @@ -35,7 +35,7 @@ // Import some definitions of other classes, etc. %import _defs.i -%pragma(python) code = "import string" +%pragma(python) code = "import wx" //--------------------------------------------------------------------------- @@ -46,7 +46,7 @@ if (ret) { PyTuple_SET_ITEM(ret, 0, PyInt_FromLong(flag)); #if wxUSE_UNICODE - PyTuple_SET_ITEM(ret, 1, PyUnicode_FromUnicode(str.c_str(), str.Len())); + PyTuple_SET_ITEM(ret, 1, PyUnicode_FromWideChar(str.c_str(), str.Len())); #else PyTuple_SET_ITEM(ret, 1, PyString_FromStringAndSize(str.c_str(), str.Len())); #endif @@ -449,6 +449,10 @@ public: // return the wxDateTime object for the current time static inline wxDateTime Now(); + // return the wxDateTime object for the current time with millisecond + // precision (if available on this platform) + static wxDateTime UNow(); + // return the wxDateTime object for today midnight: i.e. as Now() but // with time set to 0 static inline wxDateTime Today(); @@ -528,8 +532,8 @@ public: // calendar calculations // set to the given week day in the same week as this one - wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday); - wxDateTime GetWeekDayInSameWeek(WeekDay weekday); + wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday, WeekFlags flags = Monday_First); + wxDateTime GetWeekDayInSameWeek(WeekDay weekday, WeekFlags flags = Monday_First); // set to the next week day following this one wxDateTime& SetToNextWeekDay(WeekDay weekday); @@ -563,8 +567,8 @@ public: // sets the date to the given day of the given week in the year, // returns TRUE on success and FALSE if given date doesn't exist (e.g. // numWeek is > 53) - bool SetToTheWeek(wxDateTime_t numWeek, WeekDay weekday = Mon); - wxDateTime GetWeek(wxDateTime_t numWeek, WeekDay weekday = Mon); + bool SetToTheWeek(wxDateTime_t numWeek, WeekDay weekday = Mon, WeekFlags flags = Monday_First); + wxDateTime GetWeek(wxDateTime_t numWeek, WeekDay weekday = Mon, WeekFlags flags = Monday_First); // sets the date to the last day of the given (or current) month or the // given (or current) year @@ -758,17 +762,17 @@ public: %pragma(python) addtoclass = " def __add__(self, other): - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__add__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__add__DS(other) raise TypeError, 'Invalid r.h.s. type for __add__' def __sub__(self, other): - if string.find(other.this, 'wxDateTime') != -1: + if isinstance(other, wxDateTimePtr): return self.__sub__DT(other) - if string.find(other.this, 'wxTimeSpan') != -1: + if isinstance(other, wxTimeSpanPtr): return self.__sub__TS(other) - if string.find(other.this, 'wxDateSpan') != -1: + if isinstance(other, wxDateSpanPtr): return self.__sub__DS(other) raise TypeError, 'Invalid r.h.s. type for __sub__' " diff --git a/wxPython/src/windows.i b/wxPython/src/windows.i index 702922d27b..5b6ccf56da 100644 --- a/wxPython/src/windows.i +++ b/wxPython/src/windows.i @@ -216,12 +216,17 @@ public: void DragAcceptFiles(bool accept); #endif void Enable(bool enable); + void Disable(); // Find child window by ID or name %name(FindWindowById) wxWindow* FindWindow(long id); %name(FindWindowByName) wxWindow* FindWindow(const wxString& name); void Fit(); + + // set virtual size to satisfy children + void FitInside(); + wxColour GetBackgroundColour(); wxBorder GetBorder() const; @@ -291,7 +296,9 @@ public: bool IsShown(); bool IsTopLevel(); void Layout(); +#ifdef wxUSE_WX_RESOURCES bool LoadFromResource(wxWindow* parent, const wxString& resourceName, const wxResourceTable* resourceTable = NULL); +#endif void Lower(); void MakeModal(bool flag=TRUE); %name(MoveXY)void Move(int x, int y, int flags = wxSIZE_USE_EXISTING); @@ -365,6 +372,8 @@ public: wxSize GetVirtualSize() const; %name(GetVirtualSizeTuple)void GetVirtualSize( int *OUTPUT, int *OUTPUT ) const; + wxSize GetBestVirtualSize(); + %name(SetClientSizeWH)void SetClientSize(int width, int height); void SetClientSize(const wxSize& size); //void SetPalette(wxPalette* palette); @@ -410,6 +419,13 @@ public: wxSize GetBestSize(); wxSize GetMaxSize(); + // There are times (and windows) where 'Best' size and 'Min' size + // are vastly out of sync. This should be remedied somehow, but in + // the meantime, this method will return the larger of BestSize + // (the window's smallest legible size), and any user specified + // MinSize hint. + wxSize GetAdjustedBestSize(); + void SetCaret(wxCaret *caret); wxCaret *GetCaret(); %pragma(python) addtoclass = "# replaces broken shadow method @@ -761,6 +777,7 @@ public: wxMenu *Replace(size_t pos, wxMenu *menu, const wxString& title); wxMenu *Remove(size_t pos); void EnableTop(size_t pos, bool enable); + bool IsEnabledTop(size_t pos); void SetLabelTop(size_t pos, const wxString& label); wxString GetLabelTop(size_t pos); int FindMenu(const wxString& title); diff --git a/wxPython/src/windows2.i b/wxPython/src/windows2.i index 045654592e..77fedbb253 100644 --- a/wxPython/src/windows2.i +++ b/wxPython/src/windows2.i @@ -65,7 +65,7 @@ enum { class wxNotebookEvent : public wxNotifyEvent { public: wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1); + int sel = -1, int oldSel = -1); int GetSelection(); int GetOldSelection(); @@ -96,36 +96,36 @@ public: %pragma(python) addtomethod = "wxPreNotebook:val._setOORInfo(val)" int GetPageCount(); - int SetSelection(int nPage); - void AdvanceSelection(bool bForward = TRUE); + int SetSelection(int page); + void AdvanceSelection(bool forward = TRUE); int GetSelection(); - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; + bool SetPageText(int page, const wxString& text); + wxString GetPageText(int page) const; void SetImageList(wxImageList* imageList); void AssignImageList(wxImageList *imageList) ; %pragma(python) addtomethod = "AssignImageList:_args[0].thisown = 0" wxImageList* GetImageList(); - int GetPageImage(int nPage); - bool SetPageImage(int nPage, int nImage); + int GetPageImage(int page); + bool SetPageImage(int page, int image); int GetRowCount(); void SetPageSize(const wxSize& size); void SetPadding(const wxSize& padding); - bool DeletePage(int nPage); - bool RemovePage(int nPage); + bool DeletePage(int page); + bool RemovePage(int page); bool DeleteAllPages(); - bool AddPage(/*wxNotebookPage*/ wxWindow *pPage, - const wxString& strText, - int bSelect = FALSE, + bool AddPage(/*wxNotebookPage*/ wxWindow *page, + const wxString& text, + int select = FALSE, int imageId = -1); - bool InsertPage(int nPage, - /*wxNotebookPage*/ wxWindow *pPage, - const wxString& strText, - bool bSelect = FALSE, + bool InsertPage(int page, + /*wxNotebookPage*/ wxWindow *page, + const wxString& text, + bool select = FALSE, int imageId = -1); - /*wxNotebookPage*/ wxWindow *GetPage(int nPage); + /*wxNotebookPage*/ wxWindow *GetPage(int page); %addmethods { void ResizeChildren() { diff --git a/wxPython/src/wxc.pyd.manifest b/wxPython/src/winxp.manifest similarity index 90% rename from wxPython/src/wxc.pyd.manifest rename to wxPython/src/winxp.manifest index f898b261fa..50cbb8a67d 100644 --- a/wxPython/src/wxc.pyd.manifest +++ b/wxPython/src/winxp.manifest @@ -6,7 +6,7 @@ name="Controls" type="win32" /> -<description>wxPython: GUI library for Python</description> +<description>Python Interpreter</description> <dependency> <dependentAssembly> <assemblyIdentity diff --git a/wxPython/src/wizard.i b/wxPython/src/wizard.i index f3a4bed4ac..e63443348f 100644 --- a/wxPython/src/wizard.i +++ b/wxPython/src/wizard.i @@ -43,7 +43,8 @@ enum { wxEVT_WIZARD_PAGE_CHANGED, wxEVT_WIZARD_PAGE_CHANGING, wxEVT_WIZARD_CANCEL, - wxEVT_WIZARD_HELP + wxEVT_WIZARD_HELP, + wxEVT_WIZARD_FINISHED }; @@ -61,6 +62,9 @@ def EVT_WIZARD_CANCEL(win, id, func): def EVT_WIZARD_HELP(win, id, func): win.Connect(id, -1, wxEVT_WIZARD_HELP, func) +def EVT_WIZARD_FINISHED(win, id, func): + win.Connect(id, -1, wxEVT_WIZARD_FINISHED, func) + " //---------------------------------------------------------------------- @@ -361,6 +365,9 @@ public: // page first and return FALSE without changing the page if // TransferDataFromWindow() returns FALSE - otherwise, returns TRUE bool ShowPage(wxWizardPage *page, bool goingForward = TRUE); + + bool HasNextPage(wxWizardPage* page); + bool HasPrevPage(wxWizardPage* page); }; diff --git a/wxPython/src/wx.i b/wxPython/src/wx.i index 476b7c1dde..747fa6839e 100644 --- a/wxPython/src/wx.i +++ b/wxPython/src/wx.i @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wxp.i +// Name: wx.i // Purpose: SWIG interface file for a python wxWindows module // // Author: Robin Dunn @@ -65,6 +65,14 @@ wxSize wxDefaultSize; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- +enum { + wxPYAPP_ASSERT_SUPPRESS = 1, + wxPYAPP_ASSERT_EXCEPTION = 2, + wxPYAPP_ASSERT_DIALOG = 4, + wxPYAPP_ASSERT_LOG = 8 +}; + + class wxPyApp : public wxEvtHandler { public: %addmethods { @@ -76,6 +84,11 @@ public: ~wxPyApp(); + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyApp)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + + wxString GetAppName(); #ifdef __WXMSW__ bool GetAuto3D(); @@ -105,6 +118,24 @@ public: void SetTopWindow(wxWindow* window); void SetVendorName(const wxString& name); void SetUseBestVisual(bool flag); + + int GetAssertMode(); + void SetAssertMode(int mode); + + + static bool GetMacDefaultEncodingIsPC(); + static bool GetMacSupportPCMenuShortcuts(); + static long GetMacAboutMenuItemId(); + static long GetMacPreferencesMenuItemId(); + static long GetMacExitMenuItemId(); + static wxString GetMacHelpMenuTitleName(); + + static void SetMacDefaultEncodingIsPC(bool val); + static void SetMacSupportPCMenuShortcuts(bool val); + static void SetMacAboutMenuItemId(long val); + static void SetMacPreferencesMenuItemId(long val); + static void SetMacExitMenuItemId(long val); + static void SetMacHelpMenuTitleName(const wxString& val); }; %inline %{ @@ -192,6 +223,7 @@ static wxPyCoreAPI API = { wxRealPoint_helper, wxRect_helper, wxColour_helper, + wxPoint2DDouble_helper, wxPyCBH_setCallbackInfo, wxPyCBH_findCallback, @@ -226,7 +258,7 @@ static wxPyCoreAPI API = { Py_XDECREF(v); - __wxPreStart(); // initialize the GUI toolkit, if needed. + __wxPreStart(d); // initialize the GUI toolkit, if needed. // Since these modules are all linked together, initialize them now @@ -261,7 +293,7 @@ static wxPyCoreAPI API = { PyDict_SetItemString(d,"wxVERSION_NUMBER", PyInt_FromLong((long)wxVERSION_NUMBER )); #if wxUSE_UNICODE wxString tempStr(wxVERSION_STRING); - PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromUnicode(tempStr.c_str(), tempStr.Len())); + PyDict_SetItemString(d,"wxVERSION_STRING", PyUnicode_FromWideChar(tempStr.c_str(), tempStr.Len())); #else PyDict_SetItemString(d,"wxVERSION_STRING", PyString_FromString(wxVERSION_STRING)); #endif @@ -275,3 +307,4 @@ static wxPyCoreAPI API = { %pragma(python) include="_extras.py"; + diff --git a/wxPython/src/wxPython.h b/wxPython/src/wxPython.h index 67fb55da52..dfe04e89ba 100644 --- a/wxPython/src/wxPython.h +++ b/wxPython/src/wxPython.h @@ -71,6 +71,7 @@ static void wxPyCoreAPI_IMPORT() { #define wxRealPoint_helper(a,b) (wxPyCoreAPIPtr->p_wxRealPoint_helper(a,b)) #define wxRect_helper(a,b) (wxPyCoreAPIPtr->p_wxRect_helper(a,b)) #define wxColour_helper(a,b) (wxPyCoreAPIPtr->p_wxColour_helper(a,b)) +#define wxPoint2DDouble_helper(a,b) (wxPyCoreAPIPtr->p_wxPoint2DDouble_helper(a,b)) #define wxPyCBH_setCallbackInfo(a, b, c, d) (wxPyCoreAPIPtr->p_wxPyCBH_setCallbackInfo(a,b,c,d)) #define wxPyCBH_findCallback(a, b) (wxPyCoreAPIPtr->p_wxPyCBH_findCallback(a, b)) diff --git a/wxPython/src/wxc.rc b/wxPython/src/wxc.rc index 0f16edf830..70b574d596 100644 --- a/wxPython/src/wxc.rc +++ b/wxPython/src/wxc.rc @@ -1,5 +1,5 @@ aa_wxpicon ICON "wxp.ico" #include "wx/msw/wx.rc" -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "wxc.pyd.manifest" + diff --git a/wxPython/tests/gridtest.py b/wxPython/tests/gridtest.py index c4988db150..8635051d5c 100644 --- a/wxPython/tests/gridtest.py +++ b/wxPython/tests/gridtest.py @@ -104,7 +104,7 @@ class MyCellEditor(wxPyGridCellEditor): elif key < 256 and key >= 0 and chr(key) in string.printable: ch = chr(key) if not evt.ShiftDown(): - ch = string.lower(ch) + ch = ch.lower() if ch is not None: # Replace the text. Other option would be to append it. diff --git a/wxPython/tests/hangman.py b/wxPython/tests/hangman.py index 76b9622689..c735372bf4 100644 --- a/wxPython/tests/hangman.py +++ b/wxPython/tests/hangman.py @@ -1,12 +1,12 @@ -"""Hangman.py, a simple wxPython game, inspired by the +"""Hangman.py, a simple wxPython game, inspired by the old bsd game by Ken Arnold. From the original man page: - In hangman, the computer picks a word from the on-line - word list and you must try to guess it. The computer - keeps track of which letters have been guessed and how + In hangman, the computer picks a word from the on-line + word list and you must try to guess it. The computer + keeps track of which letters have been guessed and how many wrong guesses you have made on the screen in a - graphic fashion. + graphic fashion. That says it all, doesn't it? @@ -14,35 +14,35 @@ Have fun with it, Harm van der Heijden (H.v.d.Heijden@phys.tue.nl)""" -import random,re,string +import random,re from wxPython.wx import * class WordFetcher: def __init__(self, filename, min_length = 5): - self.min_length = min_length - print "Trying to open file %s" % (filename,) - try: - f = open(filename, "r") - except: - print "Couldn't open dictionary file %s, using build-ins" % (filename,) - self.words = self.builtin_words - self.filename = None - return - self.words = f.read() - self.filename = filename - print "Got %d bytes." % (len(self.words),) + self.min_length = min_length + print "Trying to open file %s" % (filename,) + try: + f = open(filename, "r") + except: + print "Couldn't open dictionary file %s, using build-ins" % (filename,) + self.words = self.builtin_words + self.filename = None + return + self.words = f.read() + self.filename = filename + print "Got %d bytes." % (len(self.words),) def SetMinLength(min_length): - self.min_length = min_length + self.min_length = min_length def Get(self): - reg = re.compile('\s+([a-zA-Z]+)\s+') - n = 50 # safety valve; maximum number of tries to find a suitable word - while n: - index = int(random.random()*len(self.words)) - m = reg.search(self.words[index:]) - if m and len(m.groups()[0]) >= self.min_length: break - n = n - 1 - if n: return string.lower(m.groups()[0]) - return "error" + reg = re.compile('\s+([a-zA-Z]+)\s+') + n = 50 # safety valve; maximum number of tries to find a suitable word + while n: + index = int(random.random()*len(self.words)) + m = reg.search(self.words[index:]) + if m and len(m.groups()[0]) >= self.min_length: break + n = n - 1 + if n: return string.lower(m.groups()[0]) + return "error" builtin_words = ' albatros banana electrometer eggshell' def stdprint(x): @@ -50,47 +50,47 @@ def stdprint(x): class URLWordFetcher(WordFetcher): def __init__(self, url): - self.OpenURL(url) - WordFetcher.__init__(self, "hangman_dict.txt") + self.OpenURL(url) + WordFetcher.__init__(self, "hangman_dict.txt") def logprint(self,x): - print x + print x def RetrieveAsFile(self, host, path=''): - from httplib import HTTP - try: - h = HTTP(host) - except: - self.logprint("Failed to create HTTP connection to %s... is the network available?" % (host)) - return None - h.putrequest('GET',path) - h.putheader('Accept','text/html') - h.putheader('Accept','text/plain') - h.endheaders() - errcode, errmsg, headers = h.getreply() - if errcode != 200: - self.logprint("HTTP error code %d: %s" % (errcode, errmsg)) - return None - f = h.getfile() - return f + from httplib import HTTP + try: + h = HTTP(host) + except: + self.logprint("Failed to create HTTP connection to %s... is the network available?" % (host)) + return None + h.putrequest('GET',path) + h.putheader('Accept','text/html') + h.putheader('Accept','text/plain') + h.endheaders() + errcode, errmsg, headers = h.getreply() + if errcode != 200: + self.logprint("HTTP error code %d: %s" % (errcode, errmsg)) + return None + f = h.getfile() + return f def OpenURL(self,url): - from htmllib import HTMLParser - import formatter - self.url = url - m = re.match('http://([^/]+)(/\S*)\s*', url) - if m: - host = m.groups()[0] - path = m.groups()[1] - else: - m = re.match('http://(\S+)\s*', url) - if not m: - # Invalid URL - self.logprint("Invalid or unsupported URL: %s" % (url)) - return - host = m.groups()[0] - path = '' - f = self.RetrieveAsFile(host,path) - if not f: - self.logprint("Could not open %s" % (url)) - return + from htmllib import HTMLParser + import formatter + self.url = url + m = re.match('http://([^/]+)(/\S*)\s*', url) + if m: + host = m.groups()[0] + path = m.groups()[1] + else: + m = re.match('http://(\S+)\s*', url) + if not m: + # Invalid URL + self.logprint("Invalid or unsupported URL: %s" % (url)) + return + host = m.groups()[0] + path = '' + f = self.RetrieveAsFile(host,path) + if not f: + self.logprint("Could not open %s" % (url)) + return self.logprint("Receiving data...") data = f.read() tmp = open('hangman_dict.txt','w') @@ -103,287 +103,287 @@ class URLWordFetcher(WordFetcher): class HangmanWnd(wxWindow): def __init__(self, parent, id, pos=wxDefaultPosition, size=wxDefaultSize): - wxWindow.__init__(self, parent, id, pos, size) - self.SetBackgroundColour(wxNamedColour('white')) - if wxPlatform == '__WXGTK__': - self.font = wxFont(12, wxMODERN, wxNORMAL, wxNORMAL) - else: - self.font = wxFont(10, wxMODERN, wxNORMAL, wxNORMAL) - self.SetFocus() + wxWindow.__init__(self, parent, id, pos, size) + self.SetBackgroundColour(wxNamedColour('white')) + if wxPlatform == '__WXGTK__': + self.font = wxFont(12, wxMODERN, wxNORMAL, wxNORMAL) + else: + self.font = wxFont(10, wxMODERN, wxNORMAL, wxNORMAL) + self.SetFocus() def StartGame(self, word): - self.word = word - self.guess = [] - self.tries = 0 - self.misses = 0 - self.Draw() + self.word = word + self.guess = [] + self.tries = 0 + self.misses = 0 + self.Draw() def EndGame(self): - self.misses = 7; - self.guess = map(chr, range(ord('a'),ord('z')+1)) - self.Draw() + self.misses = 7; + self.guess = map(chr, range(ord('a'),ord('z')+1)) + self.Draw() def HandleKey(self, key): - self.message = "" - if self.guess.count(key): - self.message = 'Already guessed %s' % (key,) - return 0 - self.guess.append(key) - self.guess.sort() - self.tries = self.tries+1 - if not key in self.word: - self.misses = self.misses+1 - if self.misses == 7: - self.EndGame() - return 1 - has_won = 1 - for letter in self.word: - if not self.guess.count(letter): - has_won = 0 - break - if has_won: - self.Draw() - return 2 - self.Draw() - return 0 + self.message = "" + if self.guess.count(key): + self.message = 'Already guessed %s' % (key,) + return 0 + self.guess.append(key) + self.guess.sort() + self.tries = self.tries+1 + if not key in self.word: + self.misses = self.misses+1 + if self.misses == 7: + self.EndGame() + return 1 + has_won = 1 + for letter in self.word: + if not self.guess.count(letter): + has_won = 0 + break + if has_won: + self.Draw() + return 2 + self.Draw() + return 0 def Draw(self, dc = None): - if not dc: - dc = wxClientDC(self) - dc.SetFont(self.font) - dc.Clear() - (x,y) = self.GetSizeTuple() - x1 = x-200; y1 = 20 - for letter in self.word: - if self.guess.count(letter): - dc.DrawText(letter, x1, y1) - else: - dc.DrawText('.', x1, y1) - x1 = x1 + 10 - x1 = x-200 - dc.DrawText("tries %d misses %d" % (self.tries,self.misses),x1,50) - guesses = "" - for letter in self.guess: - guesses = guesses + letter - dc.DrawText("guessed:", x1, 70) - dc.DrawText(guesses[:13], x1+80, 70) - dc.DrawText(guesses[13:], x1+80, 90) - dc.SetUserScale(x/1000., y/1000.) - self.DrawVictim(dc) + if not dc: + dc = wxClientDC(self) + dc.SetFont(self.font) + dc.Clear() + (x,y) = self.GetSizeTuple() + x1 = x-200; y1 = 20 + for letter in self.word: + if self.guess.count(letter): + dc.DrawText(letter, x1, y1) + else: + dc.DrawText('.', x1, y1) + x1 = x1 + 10 + x1 = x-200 + dc.DrawText("tries %d misses %d" % (self.tries,self.misses),x1,50) + guesses = "" + for letter in self.guess: + guesses = guesses + letter + dc.DrawText("guessed:", x1, 70) + dc.DrawText(guesses[:13], x1+80, 70) + dc.DrawText(guesses[13:], x1+80, 90) + dc.SetUserScale(x/1000., y/1000.) + self.DrawVictim(dc) def DrawVictim(self, dc): - dc.SetPen(wxPen(wxNamedColour('black'), 20)) - dc.DrawLines([(10, 980), (10,900), (700,900), (700,940), (720,940), - (720,980), (900,980)]) - dc.DrawLines([(100,900), (100, 100), (300,100)]) - dc.DrawLine(100,200,200,100) - if ( self.misses == 0 ): return - dc.SetPen(wxPen(wxNamedColour('blue'), 10)) - dc.DrawLine(300,100,300,200) - if ( self.misses == 1 ): return - dc.DrawEllipse(250,200,100,100) - if ( self.misses == 2 ): return - dc.DrawLine(300,300,300,600) - if ( self.misses == 3) : return - dc.DrawLine(300,300,250,550) - if ( self.misses == 4) : return - dc.DrawLine(300,300,350,550) - if ( self.misses == 5) : return - dc.DrawLine(300,600,350,850) - if ( self.misses == 6) : return - dc.DrawLine(300,600,250,850) + dc.SetPen(wxPen(wxNamedColour('black'), 20)) + dc.DrawLines([(10, 980), (10,900), (700,900), (700,940), (720,940), + (720,980), (900,980)]) + dc.DrawLines([(100,900), (100, 100), (300,100)]) + dc.DrawLine(100,200,200,100) + if ( self.misses == 0 ): return + dc.SetPen(wxPen(wxNamedColour('blue'), 10)) + dc.DrawLine(300,100,300,200) + if ( self.misses == 1 ): return + dc.DrawEllipse(250,200,100,100) + if ( self.misses == 2 ): return + dc.DrawLine(300,300,300,600) + if ( self.misses == 3) : return + dc.DrawLine(300,300,250,550) + if ( self.misses == 4) : return + dc.DrawLine(300,300,350,550) + if ( self.misses == 5) : return + dc.DrawLine(300,600,350,850) + if ( self.misses == 6) : return + dc.DrawLine(300,600,250,850) def OnPaint(self, event): - dc = wxPaintDC(self) - self.Draw(dc) + dc = wxPaintDC(self) + self.Draw(dc) class HangmanDemo(HangmanWnd): def __init__(self, wf, parent, id, pos, size): - HangmanWnd.__init__(self, parent, id, pos, size) - self.StartGame("dummy") - self.start_new = 1 - self.wf = wf - self.delay = 500 - self.timer = self.PlayTimer(self.MakeMove) + HangmanWnd.__init__(self, parent, id, pos, size) + self.StartGame("dummy") + self.start_new = 1 + self.wf = wf + self.delay = 500 + self.timer = self.PlayTimer(self.MakeMove) def MakeMove(self): - self.timer.Stop() - if self.start_new: - self.StartGame(self.wf.Get()) - self.start_new = 0 - self.left = list('aaaabcdeeeeefghiiiiijklmnnnoooopqrssssttttuuuuvwxyz') - else: - key = self.left[int(random.random()*len(self.left))] - while self.left.count(key): self.left.remove(key) - self.start_new = self.HandleKey(key) - self.timer.Start(self.delay) + self.timer.Stop() + if self.start_new: + self.StartGame(self.wf.Get()) + self.start_new = 0 + self.left = list('aaaabcdeeeeefghiiiiijklmnnnoooopqrssssttttuuuuvwxyz') + else: + key = self.left[int(random.random()*len(self.left))] + while self.left.count(key): self.left.remove(key) + self.start_new = self.HandleKey(key) + self.timer.Start(self.delay) def Stop(self): - self.timer.Stop() + self.timer.Stop() class PlayTimer(wxTimer): - def __init__(self,func): - wxTimer.__init__(self) - self.func = func - self.Start(1000) - def Notify(self): - apply(self.func, ()) + def __init__(self,func): + wxTimer.__init__(self) + self.func = func + self.Start(1000) + def Notify(self): + apply(self.func, ()) class HangmanDemoFrame(wxFrame): def __init__(self, wf, parent, id, pos, size): - wxFrame.__init__(self, parent, id, "Hangman demo", pos, size) - self.demo = HangmanDemo(wf, self, -1, wxDefaultPosition, wxDefaultSize) + wxFrame.__init__(self, parent, id, "Hangman demo", pos, size) + self.demo = HangmanDemo(wf, self, -1, wxDefaultPosition, wxDefaultSize) def OnCloseWindow(self, event): - self.demo.timer.Stop() - self.Destroy() + self.demo.timer.Stop() + self.Destroy() class AboutBox(wxDialog): def __init__(self, parent,wf): - wxDialog.__init__(self, parent, -1, "About Hangman", wxDefaultPosition, wxSize(350,450)) - self.wnd = HangmanDemo(wf, self, -1, wxPoint(1,1), wxSize(350,150)) - self.static = wxStaticText(self, -1, __doc__, wxPoint(1,160), wxSize(350, 250)) - self.button = wxButton(self, 2001, "OK", wxPoint(150,420), wxSize(50,-1)) - EVT_BUTTON(self, 2001, self.OnOK) + wxDialog.__init__(self, parent, -1, "About Hangman", wxDefaultPosition, wxSize(350,450)) + self.wnd = HangmanDemo(wf, self, -1, wxPoint(1,1), wxSize(350,150)) + self.static = wxStaticText(self, -1, __doc__, wxPoint(1,160), wxSize(350, 250)) + self.button = wxButton(self, 2001, "OK", wxPoint(150,420), wxSize(50,-1)) + EVT_BUTTON(self, 2001, self.OnOK) def OnOK(self, event): - self.wnd.Stop() - self.EndModal(wxID_OK) - + self.wnd.Stop() + self.EndModal(wxID_OK) + class MyFrame(wxFrame): def __init__(self, wf): - self.wf = wf - wxFrame.__init__(self, NULL, -1, "hangman", wxDefaultPosition, wxSize(400,300)) - self.wnd = HangmanWnd(self, -1) - menu = wxMenu() - menu.Append(1001, "New") - menu.Append(1002, "End") - menu.AppendSeparator() - menu.Append(1003, "Reset") - menu.Append(1004, "Demo...") - menu.AppendSeparator() - menu.Append(1005, "Exit") - menubar = wxMenuBar() - menubar.Append(menu, "Game") - menu = wxMenu() - #menu.Append(1010, "Internal", "Use internal dictionary", TRUE) - menu.Append(1011, "ASCII File...") - urls = [ 'wxPython home', 'http://208.240.253.245/wxPython/main.html', - 'slashdot.org', 'http://slashdot.org/', - 'cnn.com', 'http://cnn.com', - 'The New York Times', 'http://www.nytimes.com', - 'De Volkskrant', 'http://www.volkskrant.nl/frameless/25000006.html', - 'Gnu GPL', 'http://www.fsf.org/copyleft/gpl.html', - 'Bijbel: Genesis', 'http://www.coas.com/bijbel/gn1.htm'] - urlmenu = wxMenu() - for item in range(0,len(urls),2): - urlmenu.Append(1020+item/2, urls[item], urls[item+1]) - urlmenu.Append(1080, 'Other...', 'Enter an URL') - menu.AppendMenu(1012, 'URL', urlmenu, 'Use a webpage') - menu.Append(1013, 'Dump', 'Write contents to stdout') - menubar.Append(menu, "Dictionary") - self.urls = urls - self.urloffset = 1020 - menu = wxMenu() - menu.Append(1090, "About...") - menubar.Append(menu, "Help") - self.SetMenuBar(menubar) - self.CreateStatusBar(2) - EVT_MENU(self, 1001, self.OnGameNew) - EVT_MENU(self, 1002, self.OnGameEnd) - EVT_MENU(self, 1003, self.OnGameReset) - EVT_MENU(self, 1004, self.OnGameDemo) - EVT_MENU(self, 1005, self.OnWindowClose) - EVT_MENU(self, 1011, self.OnDictFile) - EVT_MENU_RANGE(self, 1020, 1020+len(urls)/2, self.OnDictURL) - EVT_MENU(self, 1080, self.OnDictURLSel) - EVT_MENU(self, 1013, self.OnDictDump) - EVT_MENU(self, 1090, self.OnHelpAbout) - EVT_CHAR(self.wnd, self.OnChar) - self.OnGameReset() + self.wf = wf + wxFrame.__init__(self, NULL, -1, "hangman", wxDefaultPosition, wxSize(400,300)) + self.wnd = HangmanWnd(self, -1) + menu = wxMenu() + menu.Append(1001, "New") + menu.Append(1002, "End") + menu.AppendSeparator() + menu.Append(1003, "Reset") + menu.Append(1004, "Demo...") + menu.AppendSeparator() + menu.Append(1005, "Exit") + menubar = wxMenuBar() + menubar.Append(menu, "Game") + menu = wxMenu() + #menu.Append(1010, "Internal", "Use internal dictionary", TRUE) + menu.Append(1011, "ASCII File...") + urls = [ 'wxPython home', 'http://208.240.253.245/wxPython/main.html', + 'slashdot.org', 'http://slashdot.org/', + 'cnn.com', 'http://cnn.com', + 'The New York Times', 'http://www.nytimes.com', + 'De Volkskrant', 'http://www.volkskrant.nl/frameless/25000006.html', + 'Gnu GPL', 'http://www.fsf.org/copyleft/gpl.html', + 'Bijbel: Genesis', 'http://www.coas.com/bijbel/gn1.htm'] + urlmenu = wxMenu() + for item in range(0,len(urls),2): + urlmenu.Append(1020+item/2, urls[item], urls[item+1]) + urlmenu.Append(1080, 'Other...', 'Enter an URL') + menu.AppendMenu(1012, 'URL', urlmenu, 'Use a webpage') + menu.Append(1013, 'Dump', 'Write contents to stdout') + menubar.Append(menu, "Dictionary") + self.urls = urls + self.urloffset = 1020 + menu = wxMenu() + menu.Append(1090, "About...") + menubar.Append(menu, "Help") + self.SetMenuBar(menubar) + self.CreateStatusBar(2) + EVT_MENU(self, 1001, self.OnGameNew) + EVT_MENU(self, 1002, self.OnGameEnd) + EVT_MENU(self, 1003, self.OnGameReset) + EVT_MENU(self, 1004, self.OnGameDemo) + EVT_MENU(self, 1005, self.OnWindowClose) + EVT_MENU(self, 1011, self.OnDictFile) + EVT_MENU_RANGE(self, 1020, 1020+len(urls)/2, self.OnDictURL) + EVT_MENU(self, 1080, self.OnDictURLSel) + EVT_MENU(self, 1013, self.OnDictDump) + EVT_MENU(self, 1090, self.OnHelpAbout) + EVT_CHAR(self.wnd, self.OnChar) + self.OnGameReset() def OnGameNew(self, event): - word = self.wf.Get() - self.in_progress = 1 - self.SetStatusText("",0) - self.wnd.StartGame(word) + word = self.wf.Get() + self.in_progress = 1 + self.SetStatusText("",0) + self.wnd.StartGame(word) def OnGameEnd(self, event): - self.UpdateAverages(0) - self.in_progress = 0 - self.SetStatusText("",0) - self.wnd.EndGame() + self.UpdateAverages(0) + self.in_progress = 0 + self.SetStatusText("",0) + self.wnd.EndGame() def OnGameReset(self, event=None): - self.played = 0 - self.won = 0 - self.history = [] - self.average = 0.0 - self.OnGameNew(None) + self.played = 0 + self.won = 0 + self.history = [] + self.average = 0.0 + self.OnGameNew(None) def OnGameDemo(self, event): - frame = HangmanDemoFrame(self.wf, self, -1, wxDefaultPosition, self.GetSize()) - frame.Show(TRUE) + frame = HangmanDemoFrame(self.wf, self, -1, wxDefaultPosition, self.GetSize()) + frame.Show(TRUE) def OnDictFile(self, event): - fd = wxFileDialog(self) - if (self.wf.filename): - fd.SetFilename(self.wf.filename) - if fd.ShowModal() == wxID_OK: - file = fd.GetPath() - self.wf = WordFetcher(file) + fd = wxFileDialog(self) + if (self.wf.filename): + fd.SetFilename(self.wf.filename) + if fd.ShowModal() == wxID_OK: + file = fd.GetPath() + self.wf = WordFetcher(file) def OnDictURL(self, event): - item = (event.GetId() - self.urloffset)*2 - print "Trying to open %s at %s" % (self.urls[item], self.urls[item+1]) - self.wf = URLWordFetcher(self.urls[item+1]) + item = (event.GetId() - self.urloffset)*2 + print "Trying to open %s at %s" % (self.urls[item], self.urls[item+1]) + self.wf = URLWordFetcher(self.urls[item+1]) def OnDictURLSel(self, event): - msg = wxTextEntryDialog(self, "Enter the URL of the dictionary document", "Enter URL") - if msg.ShowModal() == wxID_OK: - url = msg.GetValue() - self.wf = URLWordFetcher(url) + msg = wxTextEntryDialog(self, "Enter the URL of the dictionary document", "Enter URL") + if msg.ShowModal() == wxID_OK: + url = msg.GetValue() + self.wf = URLWordFetcher(url) def OnDictDump(self, event): - print self.wf.words + print self.wf.words def OnHelpAbout(self, event): - about = AboutBox(self, self.wf) - about.ShowModal() - about.wnd.Stop() # that damn timer won't stop! + about = AboutBox(self, self.wf) + about.ShowModal() + about.wnd.Stop() # that damn timer won't stop! def UpdateAverages(self, has_won): - if has_won: - self.won = self.won + 1 - self.played = self.played+1 - self.history.append(self.wnd.misses) # ugly - total = 0.0 - for m in self.history: - total = total + m - self.average = float(total/len(self.history)) + if has_won: + self.won = self.won + 1 + self.played = self.played+1 + self.history.append(self.wnd.misses) # ugly + total = 0.0 + for m in self.history: + total = total + m + self.average = float(total/len(self.history)) def OnChar(self, event): - if not self.in_progress: - self.OnGameNew(None) - return - key = event.KeyCode(); - if key >= ord('A') and key <= ord('Z'): - key = key + ord('a') - ord('A') - key = chr(key) - if key < 'a' or key > 'z': - event.Skip() - return - res = self.wnd.HandleKey(key) - if res == 0: - self.SetStatusText(self.wnd.message) - elif res == 1: - self.UpdateAverages(0) - self.SetStatusText("Too bad, you're dead!",0) - self.in_progress = 0 + if not self.in_progress: + self.OnGameNew(None) + return + key = event.KeyCode(); + if key >= ord('A') and key <= ord('Z'): + key = key + ord('a') - ord('A') + key = chr(key) + if key < 'a' or key > 'z': + event.Skip() + return + res = self.wnd.HandleKey(key) + if res == 0: + self.SetStatusText(self.wnd.message) + elif res == 1: + self.UpdateAverages(0) + self.SetStatusText("Too bad, you're dead!",0) + self.in_progress = 0 elif res == 2: - self.in_progress = 0 - self.UpdateAverages(1) - self.SetStatusText("Congratulations!",0) - if self.played: - percent = (100.*self.won)/self.played - else: - percent = 0.0 - self.SetStatusText("p %d, w %d (%g %%), av %g" % (self.played,self.won, percent, self.average),1) + self.in_progress = 0 + self.UpdateAverages(1) + self.SetStatusText("Congratulations!",0) + if self.played: + percent = (100.*self.won)/self.played + else: + percent = 0.0 + self.SetStatusText("p %d, w %d (%g %%), av %g" % (self.played,self.won, percent, self.average),1) def OnWindowClose(self, event): - self.Destroy() - + self.Destroy() + class MyApp(wxApp): def OnInit(self): - if wxPlatform == '__WXGTK__': - defaultfile = "/usr/share/games/hangman-words" - elif wxPlatform == '__WXMSW__': - defaultfile = "c:\\windows\\hardware.txt" - else: - defaultfile = "" - wf = WordFetcher(defaultfile) - frame = MyFrame(wf) - self.SetTopWindow(frame) - frame.Show(TRUE) - return TRUE + if wxPlatform == '__WXGTK__': + defaultfile = "/usr/share/games/hangman-words" + elif wxPlatform == '__WXMSW__': + defaultfile = "c:\\windows\\hardware.txt" + else: + defaultfile = "" + wf = WordFetcher(defaultfile) + frame = MyFrame(wf) + self.SetTopWindow(frame) + frame.Show(TRUE) + return TRUE if __name__ == '__main__': app = MyApp(0) diff --git a/wxPython/tests/tabs.py b/wxPython/tests/tabs.py index 1af9a13cfb..46d946bc62 100644 --- a/wxPython/tests/tabs.py +++ b/wxPython/tests/tabs.py @@ -1,5 +1,4 @@ from wxPython.wx import * -import string, sys class Test: def __init__(self): diff --git a/wxPython/tests/test7.py b/wxPython/tests/test7.py index 50f394ad5f..11b786e19f 100644 --- a/wxPython/tests/test7.py +++ b/wxPython/tests/test7.py @@ -35,17 +35,26 @@ class MyFrame(wxFrame): wxStaticText(panel, -1, "Size:", wxDLG_PNT(panel, wxPoint(4, 4)), wxDefaultSize) wxStaticText(panel, -1, "Pos:", - wxDLG_PNT(panel, wxPoint(4, 14)), wxDefaultSize) + wxDLG_PNT(panel, wxPoint(4, 18)), wxDefaultSize) + wxStaticText(panel, -1, "ScreenPos:", + wxDLG_PNT(panel, wxPoint(4, 32)), wxDefaultSize) self.sizeCtrl = wxTextCtrl(panel, -1, "", - wxDLG_PNT(panel, wxPoint(24, 4)), + wxDLG_PNT(panel, wxPoint(36, 4)), wxDLG_SZE(panel, wxSize(36, -1)), wxTE_READONLY) self.posCtrl = wxTextCtrl(panel, -1, "", - wxDLG_PNT(panel, wxPoint(24, 14)), + wxDLG_PNT(panel, wxPoint(36, 18)), wxDLG_SZE(panel, wxSize(36, -1)), wxTE_READONLY) + self.sposCtrl = wxTextCtrl(panel, -1, "", + wxDLG_PNT(panel, wxPoint(36, 32)), + wxDLG_SZE(panel, wxSize(36, -1)), + wxTE_READONLY) + + panel.Fit() + self.Fit() # This method is called automatically when the CLOSE event is # sent to this window @@ -59,6 +68,8 @@ class MyFrame(wxFrame): def OnSize(self, event): size = event.GetSize() self.sizeCtrl.SetValue("%s, %s" % (size.width, size.height)) + p = self.ClientToScreen((0,0)) + self.sposCtrl.SetValue("%s, %s" % (p.x, p.y)) # tell the event system to continue looking for an event handler, # so the default handler will get called. @@ -69,6 +80,8 @@ class MyFrame(wxFrame): def OnMove(self, event): pos = event.GetPosition() self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y)) + p = self.ClientToScreen((0,0)) + self.sposCtrl.SetValue("%s, %s" % (p.x, p.y)) diff --git a/wxPython/tests/test8.py b/wxPython/tests/test8.py index ec383b7a09..34cd268791 100644 --- a/wxPython/tests/test8.py +++ b/wxPython/tests/test8.py @@ -18,15 +18,15 @@ use_wxpython = 1 def DoThread(mesg): while 1: sleeptime = (random() * 3) + 0.5 - print "Hello from %s (%1.3f)" % (mesg, sleeptime) - time.sleep(sleeptime) + print "Hello from %s (%1.3f)" % (mesg, sleeptime) + time.sleep(sleeptime) # the same, but write it to a textctrl. def DoTextCtrlThread(text, mesg): while 1: sleeptime = (random() * 3) + 0.5 - text.WriteText("Hello from %s (%1.3f)\n" % (mesg, sleeptime)) - time.sleep(sleeptime) + text.WriteText("Hello from %s (%1.3f)\n" % (mesg, sleeptime)) + time.sleep(sleeptime) # A very simple queue for textctrls. # Nice demonstration of the power of OO programming too (at least I think so!) @@ -34,41 +34,41 @@ def DoTextCtrlThread(text, mesg): # The main (UI) thread must call Flush to force output. (see MyFrame::OnIdle) class wxTextCtrlQueue(wxTextCtrl): def __init__(self, parent, id, value, pos, size, flags): - wxTextCtrl.__init__(self,parent, id, value, pos, size, flags) - self.queue = [] + wxTextCtrl.__init__(self,parent, id, value, pos, size, flags) + self.queue = [] def WriteText(self, value): - self.queue.append(value) + self.queue.append(value) def Flush(self): - queue = self.queue - self.queue = [] - for value in queue: - wxTextCtrl.WriteText(self,value) + queue = self.queue + self.queue = [] + for value in queue: + wxTextCtrl.WriteText(self,value) # MyFrame and MyApp are very simple classes to test python threads in # wxPython. class MyFrame(wxFrame): def __init__(self): - wxFrame.__init__(self, NULL, -1, "test threads", wxDefaultPosition, wxSize(300,200)) - self.text = wxTextCtrlQueue(self, -1, "thread output\n", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE) - menu = wxMenu() - menu.Append(1001, "Start thread") - self.cnt = 0; - menubar = wxMenuBar() - menubar.Append(menu, "Action") - self.SetMenuBar(menubar) - EVT_MENU(self, 1001, self.StartThread) + wxFrame.__init__(self, NULL, -1, "test threads", wxDefaultPosition, wxSize(300,200)) + self.text = wxTextCtrlQueue(self, -1, "thread output\n", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE) + menu = wxMenu() + menu.Append(1001, "Start thread") + self.cnt = 0; + menubar = wxMenuBar() + menubar.Append(menu, "Action") + self.SetMenuBar(menubar) + EVT_MENU(self, 1001, self.StartThread) def StartThread(self, event): - self.cnt = self.cnt + 1 - thread.start_new_thread(DoTextCtrlThread, (self.text, "thread %d" % self.cnt)) + self.cnt = self.cnt + 1 + thread.start_new_thread(DoTextCtrlThread, (self.text, "thread %d" % self.cnt)) def OnIdle(self, event): - self.text.Flush() + self.text.Flush() class MyApp(wxApp): def OnInit(self): - frame = MyFrame() - self.SetTopWindow(frame) - frame.Show(TRUE) - return TRUE + frame = MyFrame() + self.SetTopWindow(frame) + frame.Show(TRUE) + return TRUE # Start two threads that print a message every second thread.start_new_thread(DoThread, ("thread A",)) @@ -80,6 +80,6 @@ if use_wxpython: app.MainLoop() else: while 1: - print "main loop" - time.sleep(4) + print "main loop" + time.sleep(4) print 'done!' diff --git a/wxPython/tests/testDlg.py b/wxPython/tests/testDlg.py index 6dee2656d4..5bad5eb49a 100644 --- a/wxPython/tests/testDlg.py +++ b/wxPython/tests/testDlg.py @@ -5,43 +5,43 @@ from wxPython.wx import * ## Create a new frame class, derived from the wxPython Frame. class Dialog(wxDialog): - def __init__(self, parent, title): - # First, call the base class' __init__ method to create the frame - wxDialog.__init__( self, parent, -1, title, wxDefaultPosition, wxDefaultSize ) + def __init__(self, parent, title): + # First, call the base class' __init__ method to create the frame + wxDialog.__init__( self, parent, -1, title, wxDefaultPosition, wxDefaultSize ) wxButton(self, wxID_OK, "OK", (10, 10)) wxButton(self, wxID_CANCEL, "Cancel", (50,50)) - self.Centre( wxBOTH ) + self.Centre( wxBOTH ) - # This method is called automatically when the CLOSE event is - # sent to this window - #def OnCloseWindow(self, event): - # self.Destroy() + # This method is called automatically when the CLOSE event is + # sent to this window + #def OnCloseWindow(self, event): + # self.Destroy() - #def OnCloseMe(self, event): - #self.Close(true) + #def OnCloseMe(self, event): + #self.Close(true) def main(): - # Every wxWindows application must have a class derived from wxApp - class App(wxApp): + # Every wxWindows application must have a class derived from wxApp + class App(wxApp): - # wxWindows calls this method to initialize the application - def OnInit(self): + # wxWindows calls this method to initialize the application + def OnInit(self): - # Create an instance of our customized Frame class - dialog = Dialog( NULL, 'test' ) - dialog.ShowModal() + # Create an instance of our customized Frame class + dialog = Dialog( NULL, 'test' ) + dialog.ShowModal() print "got here" dialog.Destroy() - # Tell wxWindows that this is our main window - # Return a success flag - return true + # Tell wxWindows that this is our main window + # Return a success flag + return true - app = App(0) # Create an instance of the application class - app.MainLoop() # Tell it to start processing events + app = App(0) # Create an instance of the application class + app.MainLoop() # Tell it to start processing events diff --git a/wxPython/tests/testTree.py b/wxPython/tests/testTree.py index e445371c94..1b91ffd427 100644 --- a/wxPython/tests/testTree.py +++ b/wxPython/tests/testTree.py @@ -7,110 +7,110 @@ from stat import * GlobalObjList = [] class Obj: - def __init__(self, obj): - self.obj = obj - # Uncomment next line to eliminate crash. - # GlobalObjList.append(self) + def __init__(self, obj): + self.obj = obj + # Uncomment next line to eliminate crash. + # GlobalObjList.append(self) - def Name(self): - head, tail = os.path.split(self.obj) - if tail: - return tail - else: - return head - - def HasChildren(self): - return os.path.isdir(self.obj) - - def Children(self): - objList = os.listdir(self.obj) - objList.sort() - objList = map(lambda obj,parent=self.obj: os.path.join(parent,obj), - objList) - objectList = map(Obj, objList) - return objectList - - def __str__(self): - return self.obj - - def __repr__(self): - return self.obj + def Name(self): + head, tail = os.path.split(self.obj) + if tail: + return tail + else: + return head + + def HasChildren(self): + return os.path.isdir(self.obj) + + def Children(self): + objList = os.listdir(self.obj) + objList.sort() + objList = map(lambda obj,parent=self.obj: os.path.join(parent,obj), + objList) + objectList = map(Obj, objList) + return objectList + + def __str__(self): + return self.obj + + def __repr__(self): + return self.obj + + def __del__(self): + print 'del', self.obj - def __del__(self): - print 'del', self.obj - #---------------------------------------------------------------------- class pyTree(wx.wxTreeCtrl): - def __init__(self, parent, id, obj): - wx.wxTreeCtrl.__init__(self, parent, id) - self.root = self.AddRoot(obj.Name(), -1, -1, wx.wxTreeItemData('')) - self.SetPyData(self.root, obj) - if obj.HasChildren(): - self.SetItemHasChildren(self.root, wx.TRUE) - wx.EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnItemExpanding) - wx.EVT_TREE_ITEM_COLLAPSED(self, self.GetId(), self.OnItemCollapsed) - wx.EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) - self.output = None + def __init__(self, parent, id, obj): + wx.wxTreeCtrl.__init__(self, parent, id) + self.root = self.AddRoot(obj.Name(), -1, -1, wx.wxTreeItemData('')) + self.SetPyData(self.root, obj) + if obj.HasChildren(): + self.SetItemHasChildren(self.root, wx.TRUE) + wx.EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnItemExpanding) + wx.EVT_TREE_ITEM_COLLAPSED(self, self.GetId(), self.OnItemCollapsed) + wx.EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) + self.output = None - def SetOutput(self, output): - self.output = output + def SetOutput(self, output): + self.output = output - def OnItemExpanding(self,event): - item = event.GetItem() - obj = self.GetPyData(item) - children = obj.Children() - for child in children: - new_item = self.AppendItem(item, child.Name(), -1, -1, - wx.wxTreeItemData('')) - self.SetPyData(new_item, child) - if child.HasChildren(): - self.SetItemHasChildren(new_item, wx.TRUE) + def OnItemExpanding(self,event): + item = event.GetItem() + obj = self.GetPyData(item) + children = obj.Children() + for child in children: + new_item = self.AppendItem(item, child.Name(), -1, -1, + wx.wxTreeItemData('')) + self.SetPyData(new_item, child) + if child.HasChildren(): + self.SetItemHasChildren(new_item, wx.TRUE) - def OnItemCollapsed(self, event): - item = event.GetItem() - self.DeleteChildren(item) + def OnItemCollapsed(self, event): + item = event.GetItem() + self.DeleteChildren(item) - def OnSelChanged(self, event): - if not self.output: - return - obj = self.GetPyData( event.GetItem() ) - apply(self.output, (`obj`,)) + def OnSelChanged(self, event): + if not self.output: + return + obj = self.GetPyData( event.GetItem() ) + apply(self.output, (`obj`,)) #---------------------------------------------------------------------- if __name__ == '__main__': - class MyFrame(wx.wxFrame): + class MyFrame(wx.wxFrame): - def __init__(self): - wx.wxFrame.__init__(self, wx.NULL, -1, 'PyTreeItemData Test', - wx.wxDefaultPosition, wx.wxSize(600,500)) - split = wx.wxSplitterWindow(self, -1) - - if sys.platform == 'win32': - tree = pyTree(split, -1, Obj('C:\\')) - else: - tree = pyTree(split, -1, Obj('/')) - - text = wx.wxTextCtrl(split, -1, '', wx.wxDefaultPosition, - wx.wxDefaultSize, wx.wxTE_MULTILINE) - split.SplitVertically(tree, text, 200) - tree.SetOutput(text.SetValue) - tree.SelectItem(tree.root) + def __init__(self): + wx.wxFrame.__init__(self, wx.NULL, -1, 'PyTreeItemData Test', + wx.wxDefaultPosition, wx.wxSize(600,500)) + split = wx.wxSplitterWindow(self, -1) - class MyApp(wx.wxApp): - - def OnInit(self): - frame = MyFrame() - frame.Show(wx.TRUE) - self.SetTopWindow(frame) - return wx.TRUE + if sys.platform == 'win32': + tree = pyTree(split, -1, Obj('C:\\')) + else: + tree = pyTree(split, -1, Obj('/')) - app = MyApp(0) - app.MainLoop() + text = wx.wxTextCtrl(split, -1, '', wx.wxDefaultPosition, + wx.wxDefaultSize, wx.wxTE_MULTILINE) + split.SplitVertically(tree, text, 200) + tree.SetOutput(text.SetValue) + tree.SelectItem(tree.root) + + class MyApp(wx.wxApp): + + def OnInit(self): + frame = MyFrame() + frame.Show(wx.TRUE) + self.SetTopWindow(frame) + return wx.TRUE + + app = MyApp(0) + app.MainLoop() diff --git a/wxPython/tests/txml.py b/wxPython/tests/txml.py index 9c87e276dc..c8ea85f53c 100644 --- a/wxPython/tests/txml.py +++ b/wxPython/tests/txml.py @@ -3,7 +3,7 @@ Build a GUI Tree (wxWindows) from an XML file using pyExpat """ -import sys,string +import sys from xml.parsers import pyexpat from wxPython.wx import * @@ -59,7 +59,7 @@ def EndElement( name ): def CharacterData ( data ): global NodeStack - if string.strip(data): + if data.strip(): app.tree.AppendItem(NodeStack[-1],data) diff --git a/wxPython/tests/val.py b/wxPython/tests/val.py index 9a05123019..d36f0c092c 100644 --- a/wxPython/tests/val.py +++ b/wxPython/tests/val.py @@ -1,5 +1,4 @@ from wxPython.wx import * -import string class floatValidator(wxPyValidator): @@ -24,7 +23,7 @@ class floatValidator(wxPyValidator): if self.obj and self.attrName: tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl") text = tc.GetValue() - setattr(self.obj, self.attrName, string.atof(text)) + setattr(self.obj, self.attrName, float(text)) return true diff --git a/wxPython/tests/wxPlotCanvas.py b/wxPython/tests/wxPlotCanvas.py index baa9112c10..c65e7011fb 100644 --- a/wxPython/tests/wxPlotCanvas.py +++ b/wxPython/tests/wxPlotCanvas.py @@ -20,22 +20,21 @@ Original comment follows below: """ from wxPython import wx -import string # Not everybody will have Numeric, so let's be cool about it... try: import Numeric except: # bummer! - d = wx.wxMessageDialog(wx.NULL, + d = wx.wxMessageDialog(wx.NULL, """This module requires the Numeric module, which could not be imported. It probably is not installed (it's not part of the standard Python -distribution). See the Python site (http://www.python.org) for -information on downloading source or binaries.""", +distribution). See the Python site (http://www.python.org) for +information on downloading source or binaries.""", "Numeric not found") if d.ShowModal() == wx.wxID_CANCEL: - d = wx.wxMessageDialog(wx.NULL, "I kid you not! Pressing Cancel won't help you!", "Not a joke", wx.wxOK) - d.ShowModal() + d = wx.wxMessageDialog(wx.NULL, "I kid you not! Pressing Cancel won't help you!", "Not a joke", wx.wxOK) + d.ShowModal() import sys sys.exit() @@ -46,7 +45,7 @@ class PolyPoints: def __init__(self, points, attr): self.points = Numeric.array(points) - self.scaled = self.points + self.scaled = self.points self.attributes = {} for name, value in self._attributes.items(): try: @@ -71,11 +70,11 @@ class PolyLine(PolyPoints): 'width': 1} def draw(self, dc): - color = self.attributes['color'] - width = self.attributes['width'] - arguments = [] - dc.SetPen(wx.wxPen(wx.wxNamedColour(color), width)) - dc.DrawLines(map(tuple,self.scaled)) + color = self.attributes['color'] + width = self.attributes['width'] + arguments = [] + dc.SetPen(wx.wxPen(wx.wxNamedColour(color), width)) + dc.DrawLines(map(tuple,self.scaled)) class PolyMarker(PolyPoints): @@ -88,25 +87,25 @@ class PolyMarker(PolyPoints): 'width': 1, 'fillcolor': None, 'size': 2, - 'fillstyle': wx.wxSOLID, + 'fillstyle': wx.wxSOLID, 'outline': 'black', 'marker': 'circle'} def draw(self, dc): - color = self.attributes['color'] - width = self.attributes['width'] + color = self.attributes['color'] + width = self.attributes['width'] size = self.attributes['size'] fillcolor = self.attributes['fillcolor'] fillstyle = self.attributes['fillstyle'] marker = self.attributes['marker'] - dc.SetPen(wx.wxPen(wx.wxNamedColour(color),width)) - if fillcolor: - dc.SetBrush(wx.wxBrush(wx.wxNamedColour(fillcolor),fillstyle)) - else: - dc.SetBrush(wx.wxBrush(wx.wxNamedColour('black'), wx.wxTRANSPARENT)) + dc.SetPen(wx.wxPen(wx.wxNamedColour(color),width)) + if fillcolor: + dc.SetBrush(wx.wxBrush(wx.wxNamedColour(fillcolor),fillstyle)) + else: + dc.SetBrush(wx.wxBrush(wx.wxNamedColour('black'), wx.wxTRANSPARENT)) - self._drawmarkers(dc, self.scaled, marker, size) + self._drawmarkers(dc, self.scaled, marker, size) def _drawmarkers(self, dc, coords, marker,size=1): f = eval('self._' +marker) @@ -114,31 +113,31 @@ class PolyMarker(PolyPoints): f(dc, xc, yc, size) def _circle(self, dc, xc, yc, size=1): - dc.DrawEllipse(xc-2.5*size,yc-2.5*size,5.*size,5.*size) + dc.DrawEllipse(xc-2.5*size,yc-2.5*size,5.*size,5.*size) def _dot(self, dc, xc, yc, size=1): - dc.DrawPoint(xc,yc) + dc.DrawPoint(xc,yc) def _square(self, dc, xc, yc, size=1): - dc.DrawRectangle(xc-2.5*size,yc-2.5*size,5.*size,5.*size) - + dc.DrawRectangle(xc-2.5*size,yc-2.5*size,5.*size,5.*size) + def _triangle(self, dc, xc, yc, size=1): - dc.DrawPolygon([(-0.5*size*5,0.2886751*size*5), - (0.5*size*5,0.2886751*size*5), - (0.0,-0.577350*size*5)],xc,yc) + dc.DrawPolygon([(-0.5*size*5,0.2886751*size*5), + (0.5*size*5,0.2886751*size*5), + (0.0,-0.577350*size*5)],xc,yc) def _triangle_down(self, dc, xc, yc, size=1): - dc.DrawPolygon([(-0.5*size*5,-0.2886751*size*5), - (0.5*size*5,-0.2886751*size*5), - (0.0,0.577350*size*5)],xc,yc) + dc.DrawPolygon([(-0.5*size*5,-0.2886751*size*5), + (0.5*size*5,-0.2886751*size*5), + (0.0,0.577350*size*5)],xc,yc) def _cross(self, dc, xc, yc, size=1): - dc.DrawLine(xc-2.5*size,yc-2.5*size,xc+2.5*size,yc+2.5*size) - dc.DrawLine(xc-2.5*size,yc+2.5*size,xc+2.5*size,yc-2.5*size) + dc.DrawLine(xc-2.5*size,yc-2.5*size,xc+2.5*size,yc+2.5*size) + dc.DrawLine(xc-2.5*size,yc+2.5*size,xc+2.5*size,yc-2.5*size) def _plus(self, dc, xc, yc, size=1): - dc.DrawLine(xc-2.5*size,yc,xc+2.5*size,yc) - dc.DrawLine(xc,yc-2.5*size,xc,yc+2.5*size) + dc.DrawLine(xc-2.5*size,yc,xc+2.5*size,yc) + dc.DrawLine(xc,yc-2.5*size,xc,yc+2.5*size) class PlotGraphics: @@ -146,191 +145,191 @@ class PlotGraphics: self.objects = objects def boundingBox(self): - p1, p2 = self.objects[0].boundingBox() - for o in self.objects[1:]: - p1o, p2o = o.boundingBox() - p1 = Numeric.minimum(p1, p1o) - p2 = Numeric.maximum(p2, p2o) - return p1, p2 + p1, p2 = self.objects[0].boundingBox() + for o in self.objects[1:]: + p1o, p2o = o.boundingBox() + p1 = Numeric.minimum(p1, p1o) + p2 = Numeric.maximum(p2, p2o) + return p1, p2 def scaleAndShift(self, scale=1, shift=0): - for o in self.objects: - o.scaleAndShift(scale, shift) + for o in self.objects: + o.scaleAndShift(scale, shift) def draw(self, canvas): - for o in self.objects: - o.draw(canvas) + for o in self.objects: + o.draw(canvas) def __len__(self): - return len(self.objects) + return len(self.objects) def __getitem__(self, item): - return self.objects[item] + return self.objects[item] class PlotCanvas(wx.wxWindow): def __init__(self, parent, id = -1): - wx.wxWindow.__init__(self, parent, id, wx.wxPyDefaultPosition, wx.wxPyDefaultSize) - self.border = (1,1) - self.SetClientSizeWH(400,400) - self.SetBackgroundColour(wx.wxNamedColour("white")) + wx.wxWindow.__init__(self, parent, id, wx.wxPyDefaultPosition, wx.wxPyDefaultSize) + self.border = (1,1) + self.SetClientSizeWH(400,400) + self.SetBackgroundColour(wx.wxNamedColour("white")) - wx.EVT_SIZE(self,self.reconfigure) - self._setsize() - self.last_draw = None -# self.font = self._testFont(font) + wx.EVT_SIZE(self,self.reconfigure) + self._setsize() + self.last_draw = None +# self.font = self._testFont(font) def OnPaint(self, event): - pdc = wx.wxPaintDC(self) - if self.last_draw is not None: - apply(self.draw, self.last_draw + (pdc,)) + pdc = wx.wxPaintDC(self) + if self.last_draw is not None: + apply(self.draw, self.last_draw + (pdc,)) def reconfigure(self, event): - (new_width,new_height) = self.GetClientSizeTuple() + (new_width,new_height) = self.GetClientSizeTuple() if new_width == self.width and new_height == self.height: return self._setsize() # self.redraw() def _testFont(self, font): - if font is not None: - bg = self.canvas.cget('background') - try: - item = CanvasText(self.canvas, 0, 0, anchor=NW, - text='0', fill=bg, font=font) - self.canvas.delete(item) - except TclError: - font = None - return font + if font is not None: + bg = self.canvas.cget('background') + try: + item = CanvasText(self.canvas, 0, 0, anchor=NW, + text='0', fill=bg, font=font) + self.canvas.delete(item) + except TclError: + font = None + return font def _setsize(self): - (self.width,self.height) = self.GetClientSizeTuple(); - self.plotbox_size = 0.97*Numeric.array([self.width, -self.height]) - xo = 0.5*(self.width-self.plotbox_size[0]) - yo = self.height-0.5*(self.height+self.plotbox_size[1]) - self.plotbox_origin = Numeric.array([xo, yo]) + (self.width,self.height) = self.GetClientSizeTuple(); + self.plotbox_size = 0.97*Numeric.array([self.width, -self.height]) + xo = 0.5*(self.width-self.plotbox_size[0]) + yo = self.height-0.5*(self.height+self.plotbox_size[1]) + self.plotbox_origin = Numeric.array([xo, yo]) def draw(self, graphics, xaxis = None, yaxis = None, dc = None): - if dc == None: dc = wx.wxClientDC(self) - dc.BeginDrawing() - dc.Clear() - self.last_draw = (graphics, xaxis, yaxis) - p1, p2 = graphics.boundingBox() - xaxis = self._axisInterval(xaxis, p1[0], p2[0]) - yaxis = self._axisInterval(yaxis, p1[1], p2[1]) - text_width = [0., 0.] - text_height = [0., 0.] - if xaxis is not None: - p1[0] = xaxis[0] - p2[0] = xaxis[1] - xticks = self._ticks(xaxis[0], xaxis[1]) - bb = dc.GetTextExtent(xticks[0][1]) - text_height[1] = bb[1] - text_width[0] = 0.5*bb[0] - bb = dc.GetTextExtent(xticks[-1][1]) - text_width[1] = 0.5*bb[0] - else: - xticks = None - if yaxis is not None: - p1[1] = yaxis[0] - p2[1] = yaxis[1] - yticks = self._ticks(yaxis[0], yaxis[1]) - for y in yticks: - bb = dc.GetTextExtent(y[1]) - text_width[0] = max(text_width[0],bb[0]) - h = 0.5*bb[1] - text_height[0] = h - text_height[1] = max(text_height[1], h) - else: - yticks = None - text1 = Numeric.array([text_width[0], -text_height[1]]) - text2 = Numeric.array([text_width[1], -text_height[0]]) - scale = (self.plotbox_size-text1-text2) / (p2-p1) - shift = -p1*scale + self.plotbox_origin + text1 - self._drawAxes(dc, xaxis, yaxis, p1, p2, + if dc == None: dc = wx.wxClientDC(self) + dc.BeginDrawing() + dc.Clear() + self.last_draw = (graphics, xaxis, yaxis) + p1, p2 = graphics.boundingBox() + xaxis = self._axisInterval(xaxis, p1[0], p2[0]) + yaxis = self._axisInterval(yaxis, p1[1], p2[1]) + text_width = [0., 0.] + text_height = [0., 0.] + if xaxis is not None: + p1[0] = xaxis[0] + p2[0] = xaxis[1] + xticks = self._ticks(xaxis[0], xaxis[1]) + bb = dc.GetTextExtent(xticks[0][1]) + text_height[1] = bb[1] + text_width[0] = 0.5*bb[0] + bb = dc.GetTextExtent(xticks[-1][1]) + text_width[1] = 0.5*bb[0] + else: + xticks = None + if yaxis is not None: + p1[1] = yaxis[0] + p2[1] = yaxis[1] + yticks = self._ticks(yaxis[0], yaxis[1]) + for y in yticks: + bb = dc.GetTextExtent(y[1]) + text_width[0] = max(text_width[0],bb[0]) + h = 0.5*bb[1] + text_height[0] = h + text_height[1] = max(text_height[1], h) + else: + yticks = None + text1 = Numeric.array([text_width[0], -text_height[1]]) + text2 = Numeric.array([text_width[1], -text_height[0]]) + scale = (self.plotbox_size-text1-text2) / (p2-p1) + shift = -p1*scale + self.plotbox_origin + text1 + self._drawAxes(dc, xaxis, yaxis, p1, p2, scale, shift, xticks, yticks) - graphics.scaleAndShift(scale, shift) - graphics.draw(dc) - dc.EndDrawing() + graphics.scaleAndShift(scale, shift) + graphics.draw(dc) + dc.EndDrawing() def _axisInterval(self, spec, lower, upper): - if spec is None: - return None - if spec == 'minimal': - if lower == upper: - return lower-0.5, upper+0.5 - else: - return lower, upper - if spec == 'automatic': - range = upper-lower - if range == 0.: - return lower-0.5, upper+0.5 - log = Numeric.log10(range) - power = Numeric.floor(log) - fraction = log-power - if fraction <= 0.05: - power = power-1 - grid = 10.**power - lower = lower - lower % grid - mod = upper % grid - if mod != 0: - upper = upper - mod + grid - return lower, upper - if type(spec) == type(()): - lower, upper = spec - if lower <= upper: - return lower, upper - else: - return upper, lower - raise ValueError, str(spec) + ': illegal axis specification' + if spec is None: + return None + if spec == 'minimal': + if lower == upper: + return lower-0.5, upper+0.5 + else: + return lower, upper + if spec == 'automatic': + range = upper-lower + if range == 0.: + return lower-0.5, upper+0.5 + log = Numeric.log10(range) + power = Numeric.floor(log) + fraction = log-power + if fraction <= 0.05: + power = power-1 + grid = 10.**power + lower = lower - lower % grid + mod = upper % grid + if mod != 0: + upper = upper - mod + grid + return lower, upper + if type(spec) == type(()): + lower, upper = spec + if lower <= upper: + return lower, upper + else: + return upper, lower + raise ValueError, str(spec) + ': illegal axis specification' def _drawAxes(self, dc, xaxis, yaxis, bb1, bb2, scale, shift, xticks, yticks): - dc.SetPen(wx.wxPen(wx.wxNamedColour('BLACK'),1)) - if xaxis is not None: - lower, upper = xaxis - text = 1 - for y, d in [(bb1[1], -3), (bb2[1], 3)]: - p1 = scale*Numeric.array([lower, y])+shift - p2 = scale*Numeric.array([upper, y])+shift - dc.DrawLine(p1[0],p1[1],p2[0],p2[1]) - for x, label in xticks: - p = scale*Numeric.array([x, y])+shift - dc.DrawLine(p[0],p[1],p[0],p[1]+d) - if text: - dc.DrawText(label,p[0],p[1]) - text = 0 + dc.SetPen(wx.wxPen(wx.wxNamedColour('BLACK'),1)) + if xaxis is not None: + lower, upper = xaxis + text = 1 + for y, d in [(bb1[1], -3), (bb2[1], 3)]: + p1 = scale*Numeric.array([lower, y])+shift + p2 = scale*Numeric.array([upper, y])+shift + dc.DrawLine(p1[0],p1[1],p2[0],p2[1]) + for x, label in xticks: + p = scale*Numeric.array([x, y])+shift + dc.DrawLine(p[0],p[1],p[0],p[1]+d) + if text: + dc.DrawText(label,p[0],p[1]) + text = 0 - if yaxis is not None: - lower, upper = yaxis - text = 1 - h = dc.GetCharHeight() - for x, d in [(bb1[0], -3), (bb2[0], 3)]: - p1 = scale*Numeric.array([x, lower])+shift - p2 = scale*Numeric.array([x, upper])+shift - dc.DrawLine(p1[0],p1[1],p2[0],p2[1]) - for y, label in yticks: - p = scale*Numeric.array([x, y])+shift - dc.DrawLine(p[0],p[1],p[0]-d,p[1]) - if text: - dc.DrawText(label,p[0]-dc.GetTextExtent(label)[0], - p[1]-0.5*h) - text = 0 + if yaxis is not None: + lower, upper = yaxis + text = 1 + h = dc.GetCharHeight() + for x, d in [(bb1[0], -3), (bb2[0], 3)]: + p1 = scale*Numeric.array([x, lower])+shift + p2 = scale*Numeric.array([x, upper])+shift + dc.DrawLine(p1[0],p1[1],p2[0],p2[1]) + for y, label in yticks: + p = scale*Numeric.array([x, y])+shift + dc.DrawLine(p[0],p[1],p[0]-d,p[1]) + if text: + dc.DrawText(label,p[0]-dc.GetTextExtent(label)[0], + p[1]-0.5*h) + text = 0 def _ticks(self, lower, upper): - ideal = (upper-lower)/7. - log = Numeric.log10(ideal) - power = Numeric.floor(log) - fraction = log-power - factor = 1. - error = fraction - for f, lf in self._multiples: - e = Numeric.fabs(fraction-lf) - if e < error: - error = e - factor = f - grid = factor * 10.**power + ideal = (upper-lower)/7. + log = Numeric.log10(ideal) + power = Numeric.floor(log) + fraction = log-power + factor = 1. + error = fraction + for f, lf in self._multiples: + e = Numeric.fabs(fraction-lf) + if e < error: + error = e + factor = f + grid = factor * 10.**power if power > 3 or power < -3: format = '%+7.0e' elif power >= 0: @@ -339,18 +338,18 @@ class PlotCanvas(wx.wxWindow): else: digits = -int(power) format = '%'+`digits+2`+'.'+`digits`+'f' - ticks = [] - t = -grid*Numeric.floor(-lower/grid) - while t <= upper: - ticks.append(t, format % (t,)) - t = t + grid - return ticks + ticks = [] + t = -grid*Numeric.floor(-lower/grid) + while t <= upper: + ticks.append(t, format % (t,)) + t = t + grid + return ticks _multiples = [(2., Numeric.log10(2.)), (5., Numeric.log10(5.))] def redraw(self,dc=None): - if self.last_draw is not None: - apply(self.draw, self.last_draw + (dc,)) + if self.last_draw is not None: + apply(self.draw, self.last_draw + (dc,)) def clear(self): self.canvas.delete('all') @@ -362,98 +361,98 @@ class PlotCanvas(wx.wxWindow): if __name__ == '__main__': class AppFrame(wx.wxFrame): - def __init__(self, parent, id, title): - wx.wxFrame.__init__(self, parent, id, title, - wx.wxPyDefaultPosition, wx.wxSize(400, 400)) + def __init__(self, parent, id, title): + wx.wxFrame.__init__(self, parent, id, title, + wx.wxPyDefaultPosition, wx.wxSize(400, 400)) - # Now Create the menu bar and items - self.mainmenu = wx.wxMenuBar() + # Now Create the menu bar and items + self.mainmenu = wx.wxMenuBar() - menu = wx.wxMenu() - menu.Append(200, '&Print...', 'Print the current plot') - wx.EVT_MENU(self, 200, self.OnFilePrint) - menu.Append(209, 'E&xit', 'Enough of this already!') - wx.EVT_MENU(self, 209, self.OnFileExit) - self.mainmenu.Append(menu, '&File') + menu = wx.wxMenu() + menu.Append(200, '&Print...', 'Print the current plot') + wx.EVT_MENU(self, 200, self.OnFilePrint) + menu.Append(209, 'E&xit', 'Enough of this already!') + wx.EVT_MENU(self, 209, self.OnFileExit) + self.mainmenu.Append(menu, '&File') - menu = wx.wxMenu() - menu.Append(210, '&Draw', 'Draw plots') - wx.EVT_MENU(self,210,self.OnPlotDraw) - menu.Append(211, '&Redraw', 'Redraw plots') - wx.EVT_MENU(self,211,self.OnPlotRedraw) - menu.Append(212, '&Clear', 'Clear canvas') - wx.EVT_MENU(self,212,self.OnPlotClear) - self.mainmenu.Append(menu, '&Plot') + menu = wx.wxMenu() + menu.Append(210, '&Draw', 'Draw plots') + wx.EVT_MENU(self,210,self.OnPlotDraw) + menu.Append(211, '&Redraw', 'Redraw plots') + wx.EVT_MENU(self,211,self.OnPlotRedraw) + menu.Append(212, '&Clear', 'Clear canvas') + wx.EVT_MENU(self,212,self.OnPlotClear) + self.mainmenu.Append(menu, '&Plot') - menu = wx.wxMenu() - menu.Append(220, '&About', 'About this thing...') - wx.EVT_MENU(self, 220, self.OnHelpAbout) - self.mainmenu.Append(menu, '&Help') + menu = wx.wxMenu() + menu.Append(220, '&About', 'About this thing...') + wx.EVT_MENU(self, 220, self.OnHelpAbout) + self.mainmenu.Append(menu, '&Help') - self.SetMenuBar(self.mainmenu) + self.SetMenuBar(self.mainmenu) - # A status bar to tell people what's happening - self.CreateStatusBar(1) + # A status bar to tell people what's happening + self.CreateStatusBar(1) - self.client = PlotCanvas(self) + self.client = PlotCanvas(self) - def OnFilePrint(self, event): - d = wx.wxMessageDialog(self, + def OnFilePrint(self, event): + d = wx.wxMessageDialog(self, """As of this writing, printing support in wxPython is shaky at best. Are you sure you want to do this?""", "Danger!", wx.wxYES_NO) if d.ShowModal() == wx.wxID_YES: - psdc = wx.wxPostScriptDC("out.ps", wx.TRUE, self) - self.client.redraw(psdc) + psdc = wx.wxPostScriptDC("out.ps", wx.TRUE, self) + self.client.redraw(psdc) - def OnFileExit(self, event): - self.Close() + def OnFileExit(self, event): + self.Close() - def OnPlotDraw(self, event): - self.client.draw(InitObjects(),'automatic','automatic'); + def OnPlotDraw(self, event): + self.client.draw(InitObjects(),'automatic','automatic'); - def OnPlotRedraw(self,event): - self.client.redraw() + def OnPlotRedraw(self,event): + self.client.redraw() - def OnPlotClear(self,event): - self.client.last_draw = None - dc = wx.wxClientDC(self.client) - dc.Clear() + def OnPlotClear(self,event): + self.client.last_draw = None + dc = wx.wxClientDC(self.client) + dc.Clear() - def OnHelpAbout(self, event): - about = wx.wxMessageDialog(self, __doc__, "About...", wx.wxOK) - about.ShowModal() + def OnHelpAbout(self, event): + about = wx.wxMessageDialog(self, __doc__, "About...", wx.wxOK) + about.ShowModal() - def OnCloseWindow(self, event): - self.Destroy() + def OnCloseWindow(self, event): + self.Destroy() def InitObjects(): - # 100 points sin function, plotted as green circles - data1 = 2.*Numeric.pi*Numeric.arange(200)/200. - data1.shape = (100, 2) - data1[:,1] = Numeric.sin(data1[:,0]) - markers1 = PolyMarker(data1, color='green', marker='circle',size=1) + # 100 points sin function, plotted as green circles + data1 = 2.*Numeric.pi*Numeric.arange(200)/200. + data1.shape = (100, 2) + data1[:,1] = Numeric.sin(data1[:,0]) + markers1 = PolyMarker(data1, color='green', marker='circle',size=1) - # 50 points cos function, plotted as red line - data1 = 2.*Numeric.pi*Numeric.arange(100)/100. - data1.shape = (50,2) - data1[:,1] = Numeric.cos(data1[:,0]) - lines = PolyLine(data1, color='red') + # 50 points cos function, plotted as red line + data1 = 2.*Numeric.pi*Numeric.arange(100)/100. + data1.shape = (50,2) + data1[:,1] = Numeric.cos(data1[:,0]) + lines = PolyLine(data1, color='red') - # A few more points... - pi = Numeric.pi - markers2 = PolyMarker([(0., 0.), (pi/4., 1.), (pi/2, 0.), - (3.*pi/4., -1)], color='blue', - fillcolor='green', marker='cross') + # A few more points... + pi = Numeric.pi + markers2 = PolyMarker([(0., 0.), (pi/4., 1.), (pi/2, 0.), + (3.*pi/4., -1)], color='blue', + fillcolor='green', marker='cross') - return PlotGraphics([markers1, lines, markers2]) + return PlotGraphics([markers1, lines, markers2]) class MyApp(wx.wxApp): - def OnInit(self): - frame = AppFrame(wx.NULL, -1, "wxPlotCanvas") - frame.Show(wx.TRUE) - self.SetTopWindow(frame) - return wx.TRUE + def OnInit(self): + frame = AppFrame(wx.NULL, -1, "wxPlotCanvas") + frame.Show(wx.TRUE) + self.SetTopWindow(frame) + return wx.TRUE app = MyApp(0) diff --git a/wxPython/tests/wxSlash.py b/wxPython/tests/wxSlash.py index ae1164d233..c98148a028 100644 --- a/wxPython/tests/wxSlash.py +++ b/wxPython/tests/wxSlash.py @@ -164,22 +164,22 @@ class AppStatusBar(wxStatusBar): # This is a simple timer class to start a function after a short delay; class QuickTimer(wxTimer): def __init__(self, func, wait=100): - wxTimer.__init__(self) - self.callback = func - self.Start(wait); # wait .1 second (.001 second doesn't work. why?) + wxTimer.__init__(self) + self.callback = func + self.Start(wait); # wait .1 second (.001 second doesn't work. why?) def Notify(self): - self.Stop(); - apply(self.callback, ()); + self.Stop(); + apply(self.callback, ()); class AppFrame(wxFrame): def __init__(self, parent, id, title): wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition, wxSize(650, 250)) - # if the window manager closes the window: - EVT_CLOSE(self, self.OnCloseWindow); + # if the window manager closes the window: + EVT_CLOSE(self, self.OnCloseWindow); - # Now Create the menu bar and items + # Now Create the menu bar and items self.mainmenu = wxMenuBar() menu = wxMenu() @@ -202,46 +202,46 @@ class AppFrame(wxFrame): menu.Append(222, '&Settings...', 'External browser Settings') EVT_MENU(self, 222, self.OnBrowserSettings) self.mainmenu.Append(menu, '&Browser') - menu = wxMenu() - menu.Append(230, '&About', 'Some documentation'); - EVT_MENU(self, 230, self.OnAbout) - self.mainmenu.Append(menu, '&Help') + menu = wxMenu() + menu.Append(230, '&About', 'Some documentation'); + EVT_MENU(self, 230, self.OnAbout) + self.mainmenu.Append(menu, '&Help') self.SetMenuBar(self.mainmenu) - if wxPlatform == '__WXGTK__': - # I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts - self.BrowserSettings = "xterm -e lynx %s &" - elif wxPlatform == '__WXMSW__': - # netscape 4.x likes to hang out here... - self.BrowserSettings = '\\progra~1\\Netscape\\Communicator\\Program\\netscape.exe %s' - else: - # a wild guess... - self.BrowserSettings = 'netscape %s' - - # A status bar to tell people what's happening - self.sb = AppStatusBar(self) + if wxPlatform == '__WXGTK__': + # I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts + self.BrowserSettings = "xterm -e lynx %s &" + elif wxPlatform == '__WXMSW__': + # netscape 4.x likes to hang out here... + self.BrowserSettings = '\\progra~1\\Netscape\\Communicator\\Program\\netscape.exe %s' + else: + # a wild guess... + self.BrowserSettings = 'netscape %s' + + # A status bar to tell people what's happening + self.sb = AppStatusBar(self) self.SetStatusBar(self.sb) self.list = wxListCtrl(self, 1100) - self.list.SetSingleStyle(wxLC_REPORT) - self.list.InsertColumn(0, 'Subject') - self.list.InsertColumn(1, 'Date') - self.list.InsertColumn(2, 'Posted by') - self.list.InsertColumn(3, 'Comments') + self.list.SetSingleStyle(wxLC_REPORT) + self.list.InsertColumn(0, 'Subject') + self.list.InsertColumn(1, 'Date') + self.list.InsertColumn(2, 'Posted by') + self.list.InsertColumn(3, 'Comments') self.list.SetColumnWidth(0, 300) self.list.SetColumnWidth(1, 150) self.list.SetColumnWidth(2, 100) self.list.SetColumnWidth(3, 100) EVT_LIST_ITEM_SELECTED(self, 1100, self.OnItemSelected) - EVT_LEFT_DCLICK(self.list, self.OnLeftDClick) + EVT_LEFT_DCLICK(self.list, self.OnLeftDClick) - self.logprint("Connecting to slashdot... Please wait.") - # wxYield doesn't yet work here. That's why we use a timer - # to make sure that we see some GUI stuff before the slashdot - # file is transfered. - self.timer = QuickTimer(self.DoRefresh, 1000) + self.logprint("Connecting to slashdot... Please wait.") + # wxYield doesn't yet work here. That's why we use a timer + # to make sure that we see some GUI stuff before the slashdot + # file is transfered. + self.timer = QuickTimer(self.DoRefresh, 1000) def logprint(self, x): self.sb.logprint(x) @@ -263,12 +263,12 @@ class AppFrame(wxFrame): self.list.SetStringItem(i, 3, article[6]) self.url.append(article[1]) i = i + 1 - self.logprint("File retrieved OK.") + self.logprint("File retrieved OK.") def OnViewRefresh(self, event): - self.logprint("Connecting to slashdot... Please wait."); - wxYield() - self.DoRefresh() + self.logprint("Connecting to slashdot... Please wait."); + wxYield() + self.DoRefresh() def DoViewIndex(self): if self.UseInternal: @@ -278,12 +278,12 @@ class AppFrame(wxFrame): else: self.logprint(self.BrowserSettings % ('http://slashdot.org')) os.system(self.BrowserSettings % ('http://slashdot.org')) - self.logprint("OK") + self.logprint("OK") def OnViewIndex(self, event): - self.logprint("Starting browser... Please wait.") - wxYield() - self.DoViewIndex() + self.logprint("Starting browser... Please wait.") + wxYield() + self.DoViewIndex() def DoViewArticle(self): if self.current<0: return @@ -294,12 +294,12 @@ class AppFrame(wxFrame): else: self.logprint(self.BrowserSettings % (url)) os.system(self.BrowserSettings % (url)) - self.logprint("OK") + self.logprint("OK") def OnViewArticle(self, event): - self.logprint("Starting browser... Please wait.") - wxYield() - self.DoViewArticle() + self.logprint("Starting browser... Please wait.") + wxYield() + self.DoViewArticle() def OnBrowserInternal(self, event): if self.mainmenu.Checked(220): @@ -313,28 +313,28 @@ class AppFrame(wxFrame): self.BrowserSettings = dlg.GetValue() def OnAbout(self, event): - dlg = wxMessageDialog(self, __doc__, "wxSlash", wxOK | wxICON_INFORMATION) - dlg.ShowModal() + dlg = wxMessageDialog(self, __doc__, "wxSlash", wxOK | wxICON_INFORMATION) + dlg.ShowModal() def OnItemSelected(self, event): self.current = event.m_itemIndex self.logprint("URL: %s" % (self.url[self.current])) def OnLeftDClick(self, event): - (x,y) = event.Position(); - # Actually, we should convert x,y to logical coords using - # a dc, but only for a wxScrolledWindow widget. - # Now wxGTK derives wxListCtrl from wxScrolledWindow, - # and wxMSW from wxControl... So that doesn't work. - #dc = wxClientDC(self.list) - ##self.list.PrepareDC(dc) - #x = dc.DeviceToLogicalX( event.GetX() ) - #y = dc.DeviceToLogicalY( event.GetY() ) - id = self.list.HitTest(wxPoint(x,y)) - #print "Double click at %d %d" % (x,y), id - # Okay, we got a double click. Let's assume it's the current selection - wxYield() - self.OnViewArticle(event) + (x,y) = event.Position(); + # Actually, we should convert x,y to logical coords using + # a dc, but only for a wxScrolledWindow widget. + # Now wxGTK derives wxListCtrl from wxScrolledWindow, + # and wxMSW from wxControl... So that doesn't work. + #dc = wxClientDC(self.list) + ##self.list.PrepareDC(dc) + #x = dc.DeviceToLogicalX( event.GetX() ) + #y = dc.DeviceToLogicalY( event.GetY() ) + id = self.list.HitTest(wxPoint(x,y)) + #print "Double click at %d %d" % (x,y), id + # Okay, we got a double click. Let's assume it's the current selection + wxYield() + self.OnViewArticle(event) def OnCloseWindow(self, event): self.Destroy() diff --git a/wxPython/wxPython/.cvsignore b/wxPython/wxPython/.cvsignore index d342ce52e3..157b98a798 100644 --- a/wxPython/wxPython/.cvsignore +++ b/wxPython/wxPython/.cvsignore @@ -2,4 +2,5 @@ *.pyc *.pyd .DS_Store +locale wxc.pyd.manifest diff --git a/wxPython/wxPython/lib/CDate.py b/wxPython/wxPython/lib/CDate.py index c4f0d9b79c..d900e0d203 100644 --- a/wxPython/wxPython/lib/CDate.py +++ b/wxPython/wxPython/lib/CDate.py @@ -11,11 +11,11 @@ import time Month = {2: 'February', 3: 'March', None: 0, 'July': 7, 11: - 'November', 'December': 12, 'June': 6, 'January': 1, 'September': 9, - 'August': 8, 'March': 3, 'November': 11, 'April': 4, 12: 'December', - 'May': 5, 10: 'October', 9: 'September', 8: 'August', 7: 'July', 6: - 'June', 5: 'May', 4: 'April', 'October': 10, 'February': 2, 1: - 'January', 0: None} + 'November', 'December': 12, 'June': 6, 'January': 1, 'September': 9, + 'August': 8, 'March': 3, 'November': 11, 'April': 4, 12: 'December', + 'May': 5, 10: 'October', 9: 'September', 8: 'August', 7: 'July', 6: + 'June', 5: 'May', 4: 'April', 'October': 10, 'February': 2, 1: + 'January', 0: None} # Number of days per month (except for February in leap years) mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] diff --git a/wxPython/wxPython/lib/ErrorDialogs.py b/wxPython/wxPython/lib/ErrorDialogs.py index 102ef63283..4bcf9f6dca 100644 --- a/wxPython/wxPython/lib/ErrorDialogs.py +++ b/wxPython/wxPython/lib/ErrorDialogs.py @@ -191,7 +191,7 @@ class wxPyNonWindowingErrorHandler: self.file = file def write(self,s): import sys - if string.find(s,"Warning") <> 0\ + if s.find("Warning") <> 0\ and self.this_exception is not sys.last_traceback: wxPyNonWindowingError("The Python interpreter encountered an error " "not handled by any\nexception handler--this " @@ -276,10 +276,10 @@ class wxPythonRExec (rexec.RExec): class wxPyNonFatalErrorDialogWithTraceback(wxDialog): this_exception = 0 populate_function = populate_wxPyNonFatalErrorDialogWithTraceback - no_continue_button = false - fatal = false - modal = true - exitjustreturns = false # really only for testing! + no_continue_button = False + fatal = False + modal = True + exitjustreturns = False # really only for testing! def __init__(self, parent, id, pos=wxPyDefaultPosition, @@ -293,7 +293,7 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): caption="Python error!", versionname=None, errorname=None, - disable_exit_button=false): + disable_exit_button=False): if self.fatal: whetherNF = "" @@ -309,7 +309,7 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): wxDialog.__init__(self, parent, id, title, pos, size, style) - self.topsizer = self.populate_function( false,true ) + self.topsizer = self.populate_function( False,True ) self.SetProgramName(programname) self.SetVersion(version) @@ -332,10 +332,10 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): if not disable_mail_button: EVT_BUTTON(self, wxPyError_ID_MAIL, self.OnMail) else: - self.GetMailButton().Enable(false) + self.GetMailButton().Enable(False) # disable the entry box for an e-mail address by default (NOT PROPERLY DOCUMENTED) if not hasattr(self,"enable_mail_address_box"): - self.FindWindowById(wxPyError_ID_ADDRESS).Enable(false) + self.FindWindowById(wxPyError_ID_ADDRESS).Enable(False) if not disable_exit_button: EVT_BUTTON(self, wxPyError_ID_EXIT, self.OnExit) @@ -380,7 +380,7 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): value = value[:-1] if _debug: print "%s.SetTraceback(): ...SetValue('%s' (^M=\\r; ^J=\\n))"\ - % (self,string.replace(value,'\n',"^J")) + % (self,value.replace('\n',"^J")) c.SetValue(value) # Despite using the wxADJUST_MINSIZE flag in the @@ -399,7 +399,7 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): print "%s.SetTraceback(): %s.GetBestSize() = (%s,%s)"\ % (self,c,size.width,size.height) w,h = 0,0 - for v in string.split(value,"\n"): + for v in value.split("\n"): pw,ph,d,e = t = c.GetFullTextExtent(v) if _debug: print v, t @@ -415,7 +415,7 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): self.sizerAroundText.SetItemMinSize (c,w,h) c.SetSize ((w,h)) c.SetSizeHints (w,h,w,h) - c.Refresh()#.SetAutoLayout(FALSE) + c.Refresh()#.SetAutoLayout(False) #^ the reason we need the above seems to be to replace the #faulty GetBestSize of wxTextCtrl... @@ -503,7 +503,7 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): if self.modal: self.ShowModal() else: - self.Show(true) + self.Show(True) except: if not locals().has_key("c"): @@ -654,8 +654,8 @@ class wxPyNonFatalErrorDialogWithTraceback(wxDialog): class wxPyFatalErrorDialogWithTraceback(wxPyNonFatalErrorDialogWithTraceback): populate_function = populate_wxPyFatalErrorDialogWithTraceback - no_continue_button = true - fatal = true + no_continue_button = True + fatal = True class wxPyNonFatalErrorDialog(wxPyNonFatalErrorDialogWithTraceback): populate_function = populate_wxPyNonFatalErrorDialog @@ -669,7 +669,7 @@ def _startmailerwithhtml(mailto,subject,html,text=None,mailfrom=None): s = 'mailto:%s?subject=%s&body=%s' % (mailto, urllib.quote(subject), urllib.quote( - string.replace(text,'\n','\r\n'), + text.replace('\n','\r\n'), "")) # Note that RFC 2368 requires that line breaks in the body of @@ -719,7 +719,7 @@ def _writehtmlmessage(mailto,subject,html,text=None,parent=None,mailfrom=None): def _createhtmlmail (html, text, subject, to=None, mailfrom=None): """Create a mime-message that will render HTML in popular - MUAs, text in better ones (if indeed text is not untrue (e.g. None) + MUAs, text in better ones (if indeed text is not unTrue (e.g. None) """ import MimeWriter, mimetools, cStringIO @@ -797,7 +797,7 @@ def wxPyResizeHTMLWindowToDispelScrollbar(window, # Will go no further than specified fraction of display size. w = 200 if type(fraction) == type(''): - fraction = string.atoi(fraction[:-1]) / 100. + fraction = int(fraction[:-1]) / 100. ds = wxDisplaySize () c = window.GetInternalRepresentation () while w < ds[0] * fraction: @@ -812,7 +812,7 @@ def wxPyResizeHTMLWindowToDispelScrollbar(window, w = w + 20 else: if type(defaultfraction) == type(''): - defaultfraction = string.atoi(defaultfraction[:-1]) / 100. + defaultfraction = int(defaultfraction[:-1]) / 100. defaultsize = (defaultfraction * ds[0], defaultfraction * ds[1]) if _debug: print 'defaultsize =',defaultsize @@ -849,7 +849,7 @@ def wxPyFatalOrNonFatalError(parent, else: populate_function = populate_wxPyNonFatalError - sizer = populate_function(dlg,false,true) + sizer = populate_function(dlg,False,True) window = dlg.FindWindowById(wxPyError_ID_HTML) window.SetPage(msg) @@ -875,5 +875,5 @@ def wxPyFatalOrNonFatalError(parent, dlg.Destroy() return v else: - dlg.Show(true) + dlg.Show(True) diff --git a/wxPython/wxPython/lib/PyCrust/CHANGES.txt b/wxPython/wxPython/lib/PyCrust/CHANGES.txt new file mode 100644 index 0000000000..1e2bdafe8e --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/CHANGES.txt @@ -0,0 +1,512 @@ +============= + CHANGES.txt +============= + +----------------------------------------- + Changes made to each release of PyCrust +----------------------------------------- + + +0.9 (2/27/2003 to 3/20/2003) +============================ + +Added fontIncrease, fontDecrease, fontDefault signals, receivers and +keybindings: + + Ctrl+] Increase font size. + Ctrl+[ Decrease font size. + Ctrl+= Default font size. + +Continued enhancement of the decorator capability to provide better +documentation and docstrings for wxPython classes and functions. + +Introduced new tabbed interface: + +* Namespace +* Calltip +* Session +* Dispatcher +* wxPython Docs +* wxSTC Docs + +Filling.tree now expands tuples as well as lists. (It should have done +this all along, I just never noticed this omission before.) + +Added this True/False test to all modules: + + try: + True + except NameError: + True = 1==1 + False = 1==0 + +Added wxd directory with decoration classes. + + +0.8.2 (1/5/2003 to 2/26/2003) +============================= + +Wrapped sys.ps1, sys.ps2, and sys.ps3 in str(). (Thanks, Kieran +Holland.) + +Fixed minor things found by PyChecker. + +Changed locals to use __main__.__dict__ and added code to clean up the +namespace, making it as close to the regular Python environment as +possible. This solves the problem of pickling and unpickling instances +of classes defined in the shell. + +Made shell.PasteAndRun() a little more forgiving when it finds a ps2 +prompt line with no trailing space, such when you copy code from a web +page. + +Improved autocomplete behavior by adding these to shell: + self.AutoCompSetAutoHide(False) + self.AutoCompStops(' .,;:([)]}\'"\\<>%^&+-=*/|`') + +Added decor directory, decorator.py, stcDecor.py, and +stcConstants.py. These all serve the purpose of adding docstrings to +existing wxPython classes, in particular the wxStyledTextControl. + +Added wrap.py, a command line utility for running a wxPython app with +additional runtime-tools loaded, such as PyCrust (the only tool at +this point). + +Flushed the clipboard Cut/Copy operations so that selections will +exist in the clipboard even after PyCrust has been closed. + +Improved the suppression of docstrings for simple data types appearing +in the namespace viewer. + +Better handling of autocompletion with numeric types; no +autocompletion when typing a dot after an integer. If the +autocompletion is desired, type a space before the dot: + + func = 3 . + +More Filling!!! The namespace tree is now dynamically updated. + + +0.8.1 (12/20/2002 to 12/25/2002) +================================ + +Improved keyboard handling with Autocomplete active. You can now use +Enter as well as Tab to select an item from the list. + +Disabled autocomplete for lists of 2000 items or more. The current +implementation of wxSTC can't handle lists this big. + +Changed filling to always display docstrings for objects. This is +useful for objects whose docstrings have been decorated, rather than +coming directly from the source code. (Hmmm. Sounds like someone is +doing some decorating. I wonder where that would be helpful? ;-) + +Fixed handling of icon. Added images.py file. + + +0.8 (10/29/2002 to 12/16/2002) +============================== + +Added "help" to startup banner info. + +Made all wx and stc imports explicit. No more import *. + +Replaced use of wx's true and false with Python's True and False. + +Changed introspect.getRoot() to use tokenize module. This does a +slightly better job than the previous parsing routine and the code is +clearer. + +Improved handling of whitespace and empty types during introspection. + +Fixed cut/copy clipboard problem under Linux. (Robin Dunn rocks!!!) + +Added shell.about() which works like this: + + >>> shell.about() + PyCrust Version: 0.8 + Shell Revision: 1.80 + Interpreter Revision: 1.15 + Python Version: 2.2.2 + wxPython Version: 2.3.3.1 + Platform: linux2 + +Added copy plus and paste plus to shell menu. + +Moved shell menu from shell.py to shellmenu.py. + +Added sys.stdin.readlines() support. + +Added time.sleep() in readline() and OnIdle() event handler to free up +the CPU. + + +0.7.2 (2/22/2002 to 8/27/2002) +============================== + +Tweaked getAttributeNames() to pick up a few more attributes: + + '__bases__', '__class__', '__dict__', '__name__', 'func_closure', + 'func_code', 'func_defaults', 'func_dict', 'func_doc', + 'func_globals', 'func_name' + +Added a tests directory and unit tests. + +Improved support for empty types in the shell: [], () and {} as far as +when call tips and autocompletion are available. + +Added support for the other triple string - ''''''. + +Refactored introspect.py to improve testability. + +Improved call tips for unbound methods by leaving the "self" +parameter, since unbound methods require an instance be passed. + +Fixed call tip bug where a tip was displayed when a "(" was typed +after an object that wasn't callable. + +Fixed getAllAttributeNames when str(object) fails. + +Added brace highlighting. (Thank you, Kevin Altis.) + +Fixed problem displaying unicode objects in PyFilling. + +Changed how filling.py checks for expandable objects. Lists are now +expandable objects. + +Made the key handling more robust when there is an active text +selection that includes text prior to the last primary prompt. Thanks +to Raul Cota for pointing this out. + +Fixed wxSTC problem with brace highlighting and non-us keyboards. +(Thank you for the patch, Jean-Michel Fauth.) + +Added busy = wxBusyCursor() to key point in shell and filling. + +Added OnCloseWindow handler to ShellFrame and CrustFrame. + +Default to SetWrapMode(1) for shell and namespace viewer. + +Added shell.wrap() and shell.zoom(). + +Added Raul Cota autoCompleteKeys hooks. + +Cleaned up various little key handling bugs. + +Changed input methods to get values from shell, rather than dialog +boxes. Renamed readIn to readline and readRaw to raw_input. + + +0.7.1 (12/12/2001 to 2/21/2002) +=============================== + +Fixed OnChar() issues effecting European keyboards, as reported by +Jean-Michel Fauth. + +Fixed introspect.py issue with xmlrpc objects reported by Kevin Altis. + +Fixed some introspect/PyFilling issues with regard to Python 2.2. + +Fixed font background color as reported by Keith J. Farmer. (Thanks) + +Fixed problem with call tips and autocompletion inside multiline +commands as report by Kevin Altis. + +Improved OnKeyDown handling of cut/copy/paste operations based on +feedback from Syver Enstad. (Thanks) + +Added a shell.help() method to display some help info. + +Changed sort of items in the namespace viewer to case insensitive. + +Changed attributes.sort(lambda x, y: cmp(x.upper(), y.upper())) in +advance of an upcoming fix to an autocompletion matching bug in wxSTC. + +Improved support for ZODB by allowing namespace drilldown into BTrees. + +Added shell.PasteAndRun() to support pasting multiple commands into +the shell from the clipboard. Ctrl+Shift+V or v. + +Enter now always processes a command (or copies down a previous one.) +To insert a line break, press Ctrl+Enter. + +Escape key clears the current, unexecuted command. + +History retrieval changed to replace current command. Added new keys +to insert from history - Shift+Up and Shift+Down. + +Better call tips on objects with __call__ methods. + +Improved call tip positioning calculation. + + +0.7 (10/15/2001 to 12/11/2001) +============================== + +Changed how command history retrieval functions work. Added Alt-P, +Alt-N as keybindings for Retrieve-Previous, Retrieve-Next. + +Added full support for mult-line commands, similar to IDLE. + +Changed introspect.getAttributeNames() to do a case insensitive sort. + +Changed Cut/Copy/Paste to deal with prompts intelligently. Cut and +Copy remove all prompts. Paste can handle prompted or not-prompted +text. + +Added CopyWithPrompts() method attached to Ctrl-Shift-C for those +times when you really do want all the prompts left intact. + +Improved handling of the shell's read-only zone. + +Changed CrustFrame.__init__ parameter spec to include all parameters +allowed by a wxFrame. + +Changed FillingText to be read-only. + +Renamed PyCrust.py to PyCrustApp.py to eliminate package/module name +conflicts that kept you from doing "from PyCrust import shell" inside +files located in the PyCrust directory. + +Renamed PyFilling.py to PyFillingApp.py and PyShell.py to +PyShellApp.py to maintain consistency. + +Removed the __date__ property from all modules. + +Fixed bug in introspect.getCallTip(), reported by Kevin Altis. + + +0.6.1 (9/19/2001 to 10/12/2001) +=============================== + +Changed Shell.run() to always position to the end of existing text, as +suggested by Raul Cota. + +Changed introspect.getAllAttributeNames() to break circular references +in object.__class__, which occurs in Zope/ZODB extension classes. + +Changed filling.FillingTree.getChildren() to introspect extension +classes. + +Fixed minor bugs in introspect.getCallTip() that were interfering with +call tips for Zope/ZODB extension class methods. + +In preparation for wxPython 2.3.2, added code to fix a font sizing +problem. Versions of wxPython prior to 2.3.2 had a sizing bug on Win +platform where the font was 2 points larger than what was specified. + +Added a hack to introspect.getAllAttributeNames() to "wake up" ZODB +objects that are asleep - in a "ghost" state. Otherwise it returns +incomplete info. + + +0.6 (8/21/2001 to 9/12/2001) +============================ + +Added PyFilling.py and filling.py. + +PyShell.py and PyFilling.py can now be run standalone, as well as +PyCrust.py. + +Added crust.py and moved some code from PyCrust.py to it. + +Added command history retrieval features submitted by Richie Hindle. + +Changed shell.write() to replace line endings with OS-specific +endings. Changed shell.py and interpreter.py to use os.linesep in +strings having hardcoded line endings. + +Added shell.redirectStdin(), shell.redirectStdout() and +shell.redirectStderr() to allow the surrounding app to toggle requests +that the specified sys.std* be redirected to the shell. These can also +be run from within the shell itself, of course. + +The shell now adds the current working directory "." to the search +path: + + sys.path.insert(0, os.curdir) + +Added support for distutils installations. + + +0.5.4 (8/17/2001 to 8/20/2001) +============================== + +Changed default font size under *nix to: + + 'size' : 12, + 'lnsize' : 10, + +Changed Shell to expect a parameter referencing an Interpreter class, +rather than an intepreter instance, to facilitate subclassing of +Interpreter, which effectively broke when the Editor class was +eliminated. + +Fixed PyCrustAlaCarte.py, which had been broken by previous changes. + +Created InterpreterAlaCarte class as an example for use in the demo. + +Split PyCrust.py into PyCrust.py and PyShell.py in anticipation of +PyFilling. + + +0.5.3 (8/16/2001) +================= + +Added patch to PyCrust.py to fix wxPython bug: + + wxID_SELECTALL = NewId() # This *should* be defined by wxPython. + + +0.5.2 (8/14/2001 to 8/15/2001) +============================== + +Shortened module names by dropping "PyCrust" as a prefix. + +Changed version to VERSION in version module. + +Added Options menu to PyCrust application. + +Eliminated the Editor class (and editor module) by merging with Shell. +This means that Shell "is a" wxStyledTextCtrl rather than "has a". +There just wasn't enough non-gui code to justify the separation. Plus, +Shell will be much easier for gui toolkits/designers to deal with now. + + +0.5.1 (8/10/2001 to 8/14/2001) +============================== + +Added introspect module. + +Moved some functionality from PyCrustInterp to introspect. + +Changed introspect.getRoot() to no longer remove whitespace from the +command. This was a remnant of a previous approach that, when left as +part of the current approach, turned out to be a really bad thing. + +Changed introspect.getRoot() to allow commands of '', "", """""", [], +(), and {} to pass through. This allows you to type them, followed by +a dot, and get autocomplete options on them. + +Changed introspect.getRoot() to identify some situations where strings +shouldn't be considered roots. For example: + + >>> import PyCrust # To illustrate the potential problem. + >>> len('PyCrust.py') + +Typing the dot at the end of "PyCrust" in the second line above should +NOT result in an autocompletion list because "PyCrust" is part of a +string in this context, not a reference to the PyCrust module +object. Similar reasoning applies to call tips. For example: + + >>> len('dir(') + +Typing the left paren at the end of "dir" should NOT result in a call +tip. + +Both features now behave properly in the examples given. However, +there is still the case where whitespace precedes the potential root +and that is NOT handled properly. For example: + + >>> len('this is a dir(') + +and + + >>> len('This is PyCrust.py') + +More code needs to be written to handle more complex situations. + +Added locals=None parameter to Shell.__init__(). + +Added support for magic attribute retrieval. Users can change this +with: + + >>> shell.editor.autoCompleteIncludeMagic = 0 + +Added the ability to set filters on auto completion to exclude +attributes prefixed with a single or double underscore. Users can +exclude one or the other or both with: + + >>> shell.editor.autoCompleteExcludeSingle = 1 + >>> shell.editor.autoCompleteExcludeDouble = 1 + + +0.5 (8/8/2001) +============== + +Mostly just a final version change before creating a release. + + +0.4 (8/4/2001 to 8/7/2001) +========================== + +Changed version/revision handling. + +Fixed bugs. + + +0.3 (8/2/2001 to 8/3/2001) +========================== + +Removed lots of cruft. + +Added lots of docstrings. + +Imported to CVS repository at SourceForge. + +Added call tips. + + +0.2 (7/30/2001 to 8/2/2001) +=========================== + +Renamed several files. + +Added command autocompletion. + +Added menus to PyCrust.py: File, Edit and Help + +Added sample applications: PyCrustAlaCarte.py, PyCrustAlaMode.py, and +PyCrustMinimus.py. + + +0.1 (7/1/2001 to 7/19/2001) +=========================== + +Added basic syntax coloring much like Boa. + +Added read-only logging much like IDLE. + +Can retrieve a previous command by putting the cursor back on that +line and hitting enter. + +Stdin and raw_input operate properly so you can now do help() and +license() without hanging. + +Redefined "quit", "exit", and "close" to display a better-than-nothing +response. + +Home key honors the prompt. + +Created SourceForge account, but nothing was posted. + + +In the beginning, there was pie... (7/1/2001) +============================================= + +Blame it all on IDLE, Boa and PythonWin. I was using all three, got +frustrated with their dissimilarities, and began to let everyone know +how I felt. At the same time, Scintilla looked like an interesting +tool to build a shell around. And while I didn't receive much in the +way of positive feedback, let alone encouragement, I just couldn't let +go of the idea of a Scintilla-based Python shell. Then the PythonCard +project got to the point where they were talking about including a +shell in their development environment. That was all the incentive I +needed. PyCrust had to happen... + + +CVS Information +=============== +$Date$ +$Revision$ +$Id$ diff --git a/wxPython/wxPython/lib/PyCrust/PyCrustApp.py b/wxPython/wxPython/lib/PyCrust/PyCrustApp.py index d262fbea91..036e368002 100755 --- a/wxPython/wxPython/lib/PyCrust/PyCrustApp.py +++ b/wxPython/wxPython/lib/PyCrust/PyCrustApp.py @@ -1,39 +1,70 @@ -#!/usr/bin/env python + """PyCrustApp is a python shell and namespace browser application.""" +# The next two lines, and the other code below that makes use of +# ``__main__`` and ``original``, serve the purpose of cleaning up the +# main namespace to look as much as possible like the regular Python +# shell environment. +import __main__ +original = __main__.__dict__.keys() + __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] -from wxPython.wx import * -from crust import CrustFrame +from wxPython import wx + +try: + True +except NameError: + True = 1==1 + False = 1==0 -class App(wxApp): +class App(wx.wxApp): """PyCrust standalone application.""" def OnInit(self): - wxInitAllImageHandlers() - locals = {'__app__': 'PyCrust Standalone Application'} - self.crustFrame = CrustFrame(locals=locals) - self.crustFrame.SetSize((750, 525)) - self.crustFrame.Show(true) - self.crustFrame.crust.shell.SetFocus() - self.SetTopWindow(self.crustFrame) + from wxPython import wx + wx.wxInitAllImageHandlers() + locals = __main__.__dict__ + from crust import CrustFrame + self.frame = CrustFrame(locals=locals) + self.frame.SetSize((800, 600)) + self.frame.Show() + self.SetTopWindow(self.frame) # Add the application object to the sys module's namespace. # This allows a shell user to do: # >>> import sys - # >>> sys.application.whatever + # >>> sys.app.whatever import sys - sys.application = self - return true + sys.app = self + return 1 +''' +The main() function needs to handle being imported, such as with the +pycrust script that wxPython installs: + + #!/usr/bin/env python + + from wxPython.lib.PyCrust.PyCrustApp import main + main() +''' def main(): - application = App(1) - application.MainLoop() + import __main__ + md = __main__.__dict__ + keepers = original + keepers.append('App') + for key in md.keys(): + if key not in keepers: + del md[key] + app = App(0) + if md.has_key('App') and md['App'] is App: + del md['App'] + if md.has_key('__main__') and md['__main__'] is __main__: + del md['__main__'] + app.MainLoop() if __name__ == '__main__': main() - - diff --git a/wxPython/wxPython/lib/PyCrust/PyFillingApp.py b/wxPython/wxPython/lib/PyCrust/PyFillingApp.py index 6869f1aa73..b204210a80 100755 --- a/wxPython/wxPython/lib/PyCrust/PyFillingApp.py +++ b/wxPython/wxPython/lib/PyCrust/PyFillingApp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python + """PyFillingApp is a python namespace inspection application.""" __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" @@ -6,30 +6,40 @@ __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] # We use this object to get more introspection when run standalone. -application = None +app = None import filling # These are imported just to have something interesting to inspect. -from PyCrust import crust -from PyCrust import interpreter -from PyCrust import introspect -from PyCrust import pseudo -from PyCrust import shell +import crust +import interpreter +import introspect +import pseudo +import shell + import sys from wxPython import wx +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class App(filling.App): + def OnInit(self): + filling.App.OnInit(self) + self.root = self.fillingFrame.filling.tree.root + return True def main(): """Create and run the application.""" - global application - application = filling.App(0) - root = application.fillingFrame.filling.fillingTree.root - application.fillingFrame.filling.fillingTree.Expand(root) - application.MainLoop() + global app + app = App(0) + app.fillingFrame.filling.tree.Expand(app.root) + app.MainLoop() if __name__ == '__main__': main() - - diff --git a/wxPython/wxPython/lib/PyCrust/PyShellApp.py b/wxPython/wxPython/lib/PyCrust/PyShellApp.py index ff60f5f845..2ef7aae07f 100755 --- a/wxPython/wxPython/lib/PyCrust/PyShellApp.py +++ b/wxPython/wxPython/lib/PyCrust/PyShellApp.py @@ -1,40 +1,71 @@ -#!/usr/bin/env python + """PyShellApp is a python shell application.""" +# The next two lines, and the other code below that makes use of +# ``__main__`` and ``original``, serve the purpose of cleaning up the +# main namespace to look as much as possible like the regular Python +# shell environment. +import __main__ +original = __main__.__dict__.keys() + __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] -from wxPython.wx import * -from shell import ShellFrame +from wxPython import wx + +try: + True +except NameError: + True = 1==1 + False = 1==0 -class App(wxApp): +class App(wx.wxApp): """PyShell standalone application.""" def OnInit(self): - wxInitAllImageHandlers() - locals = {'__app__': 'PyShell Standalone Application'} - self.shellFrame = ShellFrame(locals=locals) - self.shellFrame.SetSize((750, 525)) - self.shellFrame.Show(true) - self.shellFrame.shell.SetFocus() - self.SetTopWindow(self.shellFrame) + from wxPython import wx + wx.wxInitAllImageHandlers() + locals = __main__.__dict__ + from shell import ShellFrame + self.frame = ShellFrame(locals=locals) + self.frame.SetSize((750, 525)) + self.frame.Show() + self.SetTopWindow(self.frame) + self.frame.shell.SetFocus() # Add the application object to the sys module's namespace. # This allows a shell user to do: # >>> import sys - # >>> sys.application.whatever + # >>> sys.app.whatever import sys - sys.application = self - return true + sys.app = self + return 1 +''' +The main() function needs to handle being imported, such as with the +pycrust script that wxPython installs: + + #!/usr/bin/env python + + from wxPython.lib.PyCrust.PyCrustApp import main + main() +''' def main(): - application = App(1) - application.MainLoop() + import __main__ + md = __main__.__dict__ + keepers = original + keepers.append('App') + for key in md.keys(): + if key not in keepers: + del md[key] + app = App(0) + if md.has_key('App') and md['App'] is App: + del md['App'] + if md.has_key('__main__') and md['__main__'] is __main__: + del md['__main__'] + app.MainLoop() if __name__ == '__main__': main() - - - diff --git a/wxPython/wxPython/lib/PyCrust/README.txt b/wxPython/wxPython/lib/PyCrust/README.txt index c8c66c0e15..b6a0126705 100644 --- a/wxPython/wxPython/lib/PyCrust/README.txt +++ b/wxPython/wxPython/lib/PyCrust/README.txt @@ -1,68 +1,79 @@ -PyCrust - The Flakiest Python Shell +===================================== + PyCrust - The Flakiest Python Shell +===================================== + Half-baked by Patrick K. O'Brien (pobrien@orbtech.com) -============================================================== -* Orbtech - "Your source for Python programming expertise." * -* Sample all our half-baked Python goods at www.orbtech.com. * -============================================================== +Orbtech - "Your source for Python programming expertise." +Sample all our half-baked Python goods at www.orbtech.com. + What is PyCrust? ---------------- + PyCrust is an interactive Python environment written in Python. PyCrust components can run standalone or be integrated into other development environments and/or other Python applications. -PyCrust comes with an interactive Python shell (PyShell), an -interactive namespace/object tree control (PyFilling) and an +PyCrust comes with an interactive Python shell (PyShell), an +interactive namespace/object tree control (PyFilling) and an integrated, split-window combination of the two (PyCrust). What is PyCrust good for? ------------------------- -Have you ever tried to bake a pie without one? Well, you -shouldn't build a Python program without a PyCrust either. + +Have you ever tried to bake a pie without one? Well, you shouldn't +build a Python program without a PyCrust either. What else do I need to use PyCrust? ----------------------------------- -PyCrust requires Python 2.1 or later, and wxPython 2.3.1 or later. + +PyCrust requires Python 2.1.3 or later, and wxPython 2.4 or later. PyCrust uses wxPython and the Scintilla wrapper (wxStyledTextCtrl). -Python is available at http://www.python.org/. -wxPython is available at http://www.wxpython.org/. +Python is available at http://www.python.org/. wxPython is available +at http://www.wxpython.org/. Where can I get the latest version of PyCrust? ---------------------------------------------- -The latest production version ships with wxPython. -The latest developer version is available in CVS at: + +The latest production version ships with wxPython. The latest +developer version is available in CVS at: http://sourceforge.net/cvs/?group_id=31263 Where is the PyCrust project hosted? ------------------------------------ + At SourceForge, of course. The SourceForge summary page: http://sourceforge.net/projects/pycrust/ I found a bug in PyCrust, what do I do with it? ----------------------------------------------- + You can send it to me at pobrien@orbtech.com. I want a new feature added to PyCrust. Will you do it? ------------------------------------------------------ -Flattery and money will get you anything. Short of that, you -can send me a request and I'll see what I can do. + +Flattery and money will get you anything. Short of that, you can send +me a request and I'll see what I can do. Does PyCrust have a mailing list full of wonderful people? ---------------------------------------------------------- + As a matter of fact, we do. Join the PyCrust mailing lists at: http://sourceforge.net/mail/?group_id=31263 What is the CVS information for this README file? ------------------------------------------------- + $Date$ $Revision$ $Id$ diff --git a/wxPython/wxPython/lib/PyCrust/crust.py b/wxPython/wxPython/lib/PyCrust/crust.py index 435b1ed64a..caeb20f6db 100644 --- a/wxPython/wxPython/lib/PyCrust/crust.py +++ b/wxPython/wxPython/lib/PyCrust/crust.py @@ -4,78 +4,163 @@ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] -from wxPython.wx import * -from shell import Shell +from wxPython import wx from filling import Filling -from version import VERSION import os +from shell import Shell +from shellmenu import ShellMenu +from version import VERSION + +try: + True +except NameError: + True = 1==1 + False = 1==0 -class Crust(wxSplitterWindow): +class Crust(wx.wxSplitterWindow): """PyCrust Crust based on wxSplitterWindow.""" name = 'PyCrust Crust' revision = __revision__ - def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ - size=wxDefaultSize, style=wxSP_3D, name='Crust Window', \ - rootObject=None, rootLabel=None, rootIsNamespace=1, \ - intro='', locals=None, \ + def __init__(self, parent, id=-1, pos=wx.wxDefaultPosition, + size=wx.wxDefaultSize, style=wx.wxSP_3D, + name='Crust Window', rootObject=None, rootLabel=None, + rootIsNamespace=True, intro='', locals=None, InterpClass=None, *args, **kwds): """Create a PyCrust Crust instance.""" - wxSplitterWindow.__init__(self, parent, id, pos, size, style, name) - self.shell = Shell(parent=self, introText=intro, \ - locals=locals, InterpClass=InterpClass, \ + wx.wxSplitterWindow.__init__(self, parent, id, pos, size, style, name) + self.shell = Shell(parent=self, introText=intro, + locals=locals, InterpClass=InterpClass, *args, **kwds) - self.filling = Filling(parent=self, \ - rootObject=self.shell.interp.locals, \ - rootLabel=rootLabel, rootIsNamespace=1) - """Add 'filling' to the interpreter's locals.""" + if rootObject is None: + rootObject = self.shell.interp.locals + self.notebook = wx.wxNotebook(parent=self, id=-1) + self.shell.interp.locals['notebook'] = self.notebook + self.filling = Filling(parent=self.notebook, + rootObject=rootObject, + rootLabel=rootLabel, + rootIsNamespace=rootIsNamespace) + # Add 'filling' to the interpreter's locals. self.shell.interp.locals['filling'] = self.filling - self.SplitHorizontally(self.shell, self.filling, 300) + self.notebook.AddPage(page=self.filling, text='Namespace', select=True) + self.calltip = Calltip(parent=self.notebook) + self.notebook.AddPage(page=self.calltip, text='Calltip') + self.sessionlisting = SessionListing(parent=self.notebook) + self.notebook.AddPage(page=self.sessionlisting, text='Session') + self.dispatcherlisting = DispatcherListing(parent=self.notebook) + self.notebook.AddPage(page=self.dispatcherlisting, text='Dispatcher') + from wxd import wx_ + self.wxdocs = Filling(parent=self.notebook, + rootObject=wx_, + rootLabel='wx', + rootIsNamespace=False, + static=True) + self.notebook.AddPage(page=self.wxdocs, text='wxPython Docs') + from wxd import stc_ + self.stcdocs = Filling(parent=self.notebook, + rootObject=stc_.StyledTextCtrl, + rootLabel='StyledTextCtrl', + rootIsNamespace=False, + static=True) + self.notebook.AddPage(page=self.stcdocs, text='StyledTextCtrl Docs') + self.SplitHorizontally(self.shell, self.notebook, 300) self.SetMinimumPaneSize(1) -# Temporary hack to share menus between PyCrust and PyShell. -from shell import ShellMenu +class Calltip(wx.wxTextCtrl): + """Text control containing the most recent shell calltip.""" -class CrustFrame(wxFrame, ShellMenu): + def __init__(self, parent=None, id=-1): + import dispatcher + style = wx.wxTE_MULTILINE | wx.wxTE_READONLY | wx.wxTE_RICH2 + wx.wxTextCtrl.__init__(self, parent=parent, id=id, style=style) + self.SetBackgroundColour(wx.wxColour(255, 255, 232)) + dispatcher.connect(receiver=self.display, signal='Shell.calltip') + + def display(self, calltip): + """Receiver for Shell.calltip signal.""" + self.SetValue(calltip) + + +class SessionListing(wx.wxTextCtrl): + """Text control containing all commands for session.""" + + def __init__(self, parent=None, id=-1): + import dispatcher + style = wx.wxTE_MULTILINE | wx.wxTE_READONLY | \ + wx.wxTE_RICH2 | wx.wxTE_DONTWRAP + wx.wxTextCtrl.__init__(self, parent=parent, id=id, style=style) + dispatcher.connect(receiver=self.push, signal='Interpreter.push') + + def push(self, command, more): + """Receiver for Interpreter.push signal.""" + if command and not more: + self.SetInsertionPointEnd() + start, end = self.GetSelection() + if start != end: + self.SetSelection(0, 0) + self.AppendText(command + '\n') + + +class DispatcherListing(wx.wxTextCtrl): + """Text control containing all dispatches for session.""" + + def __init__(self, parent=None, id=-1): + import dispatcher + style = wx.wxTE_MULTILINE | wx.wxTE_READONLY | \ + wx.wxTE_RICH2 | wx.wxTE_DONTWRAP + wx.wxTextCtrl.__init__(self, parent=parent, id=id, style=style) + dispatcher.connect(receiver=self.spy) + + def spy(self, signal, sender): + """Receiver for Any signal from Any sender.""" + text = '%r from %s' % (signal, sender) + self.SetInsertionPointEnd() + start, end = self.GetSelection() + if start != end: + self.SetSelection(0, 0) + self.AppendText(text + '\n') + + +class CrustFrame(wx.wxFrame, ShellMenu): """Frame containing all the PyCrust components.""" name = 'PyCrust Frame' revision = __revision__ - def __init__(self, parent=None, id=-1, title='PyCrust', \ - pos=wxDefaultPosition, size=wxDefaultSize, \ - style=wxDEFAULT_FRAME_STYLE, \ - rootObject=None, rootLabel=None, rootIsNamespace=1, \ + def __init__(self, parent=None, id=-1, title='PyCrust', + pos=wx.wxDefaultPosition, size=wx.wxDefaultSize, + style=wx.wxDEFAULT_FRAME_STYLE, + rootObject=None, rootLabel=None, rootIsNamespace=True, locals=None, InterpClass=None, *args, **kwds): """Create a PyCrust CrustFrame instance.""" - wxFrame.__init__(self, parent, id, title, pos, size, style) - intro = 'Welcome To PyCrust %s - The Flakiest Python Shell' % VERSION - intro += '\nSponsored by Orbtech - Your source for Python programming expertise.' + wx.wxFrame.__init__(self, parent, id, title, pos, size, style) + intro = 'PyCrust %s - The Flakiest Python Shell' % VERSION + intro += '\nSponsored by Orbtech - ' + intro += 'Your source for Python programming expertise.' self.CreateStatusBar() self.SetStatusText(intro.replace('\n', ', ')) import images self.SetIcon(images.getPyCrustIcon()) - self.crust = Crust(parent=self, intro=intro, \ - rootObject=rootObject, \ - rootLabel=rootLabel, \ - rootIsNamespace=rootIsNamespace, \ - locals=locals, \ + self.crust = Crust(parent=self, intro=intro, + rootObject=rootObject, + rootLabel=rootLabel, + rootIsNamespace=rootIsNamespace, + locals=locals, InterpClass=InterpClass, *args, **kwds) # Override the filling so that status messages go to the status bar. - self.crust.filling.fillingTree.setStatusText = self.SetStatusText + self.crust.filling.tree.setStatusText = self.SetStatusText # Override the shell so that status messages go to the status bar. self.crust.shell.setStatusText = self.SetStatusText # Fix a problem with the sash shrinking to nothing. self.crust.filling.SetSashPosition(200) - # Set focus to the shell editor. - self.crust.shell.SetFocus() - # Temporary hack to share menus between PyCrust and PyShell. self.shell = self.crust.shell self.createMenus() - EVT_CLOSE(self, self.OnCloseWindow) + wx.EVT_CLOSE(self, self.OnCloseWindow) + # Set focus to the shell editor. + self.crust.shell.SetFocus() def OnCloseWindow(self, event): self.crust.shell.destroy() diff --git a/wxPython/wxPython/lib/PyCrust/dispatcher.py b/wxPython/wxPython/lib/PyCrust/dispatcher.py new file mode 100644 index 0000000000..9509d1eddd --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/dispatcher.py @@ -0,0 +1,266 @@ +"""Provides global signal dispatching services.""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + +import exceptions +import types +import weakref + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class DispatcherError(exceptions.Exception): + def __init__(self, args=None): + self.args = args + + +class Parameter: + """Used to represent default parameter values.""" + def __repr__(self): + return self.__class__.__name__ + +class Any(Parameter): pass +Any = Any() + +class Anonymous(Parameter): pass +Anonymous = Anonymous() + + +connections = {} +senders = {} +_boundMethods = weakref.WeakKeyDictionary() + + +def connect(receiver, signal=Any, sender=Any, weak=True): + """Connect receiver to sender for signal. + + If sender is Any, receiver will receive signal from any sender. + If signal is Any, receiver will receive any signal from sender. + If sender is None, receiver will receive signal from Anonymous. + If signal is Any and sender is None, receiver will receive any + signal from Anonymous. + If signal is Any and sender is Any, receiver will receive any + signal from any sender. + If weak is true, weak references will be used.""" + if signal is None: + raise DispatcherError, 'signal cannot be None' + if weak: + receiver = safeRef(receiver) + senderkey = id(sender) + signals = {} + if connections.has_key(senderkey): + signals = connections[senderkey] + else: + connections[senderkey] = signals + # Keep track of senders for cleanup. + if sender not in (None, Any): + def remove(object, senderkey=senderkey): + _removeSender(senderkey=senderkey) + # Skip objects that can not be weakly referenced, which means + # they won't be automatically cleaned up, but that's too bad. + try: + weakSender = weakref.ref(sender, remove) + senders[senderkey] = weakSender + except: + pass + receivers = [] + if signals.has_key(signal): + receivers = signals[signal] + else: + signals[signal] = receivers + try: + receivers.remove(receiver) + except ValueError: + pass + receivers.append(receiver) + +def disconnect(receiver, signal=Any, sender=Any, weak=True): + """Disconnect receiver from sender for signal. + + Disconnecting is not required. The use of disconnect is the same as for + connect, only in reverse. Think of it as undoing a previous connection.""" + if signal is None: + raise DispatcherError, 'signal cannot be None' + if weak: + receiver = safeRef(receiver) + senderkey = id(sender) + try: + receivers = connections[senderkey][signal] + except KeyError: + raise DispatcherError, \ + 'No receivers for signal %r from sender %s' % (signal, sender) + try: + receivers.remove(receiver) + except ValueError: + raise DispatcherError, \ + 'No connection to receiver %s for signal %r from sender %s' % \ + (receiver, signal, sender) + _cleanupConnections(senderkey, signal) + +def send(signal, sender=Anonymous, **kwds): + """Send signal from sender to all connected receivers. + + Return a list of tuple pairs [(receiver, response), ... ]. + If sender is not specified, signal is sent anonymously.""" + senderkey = id(sender) + anykey = id(Any) + # Get receivers that receive *this* signal from *this* sender. + receivers = [] + try: + receivers.extend(connections[senderkey][signal]) + except KeyError: + pass + # Add receivers that receive *any* signal from *this* sender. + anyreceivers = [] + try: + anyreceivers = connections[senderkey][Any] + except KeyError: + pass + for receiver in anyreceivers: + if receivers.count(receiver) == 0: + receivers.append(receiver) + # Add receivers that receive *this* signal from *any* sender. + anyreceivers = [] + try: + anyreceivers = connections[anykey][signal] + except KeyError: + pass + for receiver in anyreceivers: + if receivers.count(receiver) == 0: + receivers.append(receiver) + # Add receivers that receive *any* signal from *any* sender. + anyreceivers = [] + try: + anyreceivers = connections[anykey][Any] + except KeyError: + pass + for receiver in anyreceivers: + if receivers.count(receiver) == 0: + receivers.append(receiver) + # Call each receiver with whatever arguments it can accept. + # Return a list of tuple pairs [(receiver, response), ... ]. + responses = [] + for receiver in receivers: + if type(receiver) is weakref.ReferenceType \ + or isinstance(receiver, BoundMethodWeakref): + # Dereference the weak reference. + receiver = receiver() + if receiver is None: + # This receiver is dead, so skip it. + continue + response = _call(receiver, signal=signal, sender=sender, **kwds) + responses += [(receiver, response)] + return responses + +def _call(receiver, **kwds): + """Call receiver with only arguments it can accept.""" +## if type(receiver) is types.InstanceType: + if hasattr(receiver, '__call__') and \ + (hasattr(receiver.__call__, 'im_func') or hasattr(receiver.__call__, 'im_code')): + # receiver is a class instance; assume it is callable. + # Reassign receiver to the actual method that will be called. + receiver = receiver.__call__ + if hasattr(receiver, 'im_func'): + # receiver is a method. Drop the first argument, usually 'self'. + fc = receiver.im_func.func_code + acceptable = fc.co_varnames[1:fc.co_argcount] + elif hasattr(receiver, 'func_code'): + # receiver is a function. + fc = receiver.func_code + acceptable = fc.co_varnames[0:fc.co_argcount] + else: + raise DispatcherError, 'Unknown receiver %s of type %s' % (receiver, type(receiver)) + if not (fc.co_flags & 8): + # fc does not have a **kwds type parameter, therefore + # remove unacceptable arguments. + for arg in kwds.keys(): + if arg not in acceptable: + del kwds[arg] + return receiver(**kwds) + + +def safeRef(object): + """Return a *safe* weak reference to a callable object.""" + if hasattr(object, 'im_self'): + if object.im_self is not None: + # Turn a bound method into a BoundMethodWeakref instance. + # Keep track of these instances for lookup by disconnect(). + selfkey = object.im_self + funckey = object.im_func + if not _boundMethods.has_key(selfkey): + _boundMethods[selfkey] = weakref.WeakKeyDictionary() + if not _boundMethods[selfkey].has_key(funckey): + _boundMethods[selfkey][funckey] = \ + BoundMethodWeakref(boundMethod=object) + return _boundMethods[selfkey][funckey] + return weakref.ref(object, _removeReceiver) + + +class BoundMethodWeakref: + """BoundMethodWeakref class.""" + + def __init__(self, boundMethod): + """Return a weak-reference-like instance for a bound method.""" + self.isDead = 0 + def remove(object, self=self): + """Set self.isDead to true when method or instance is destroyed.""" + self.isDead = 1 + _removeReceiver(receiver=self) + self.weakSelf = weakref.ref(boundMethod.im_self, remove) + self.weakFunc = weakref.ref(boundMethod.im_func, remove) + + def __repr__(self): + """Return the closest representation.""" + return '<bound method weakref for %s.%s>' % (self.weakSelf, self.weakFunc) + + def __call__(self): + """Return a strong reference to the bound method.""" + if self.isDead: + return None + else: + object = self.weakSelf() + method = self.weakFunc().__name__ + try: # wxPython hack to handle wxDead objects. + return getattr(object, method) + except AttributeError: +## _removeReceiver(receiver=self) + return None + + +def _removeReceiver(receiver): + """Remove receiver from connections.""" + for senderkey in connections.keys(): + for signal in connections[senderkey].keys(): + receivers = connections[senderkey][signal] + try: + receivers.remove(receiver) + except: + pass + _cleanupConnections(senderkey, signal) + +def _cleanupConnections(senderkey, signal): + """Delete any empty signals for senderkey. Delete senderkey if empty.""" + receivers = connections[senderkey][signal] + if not receivers: + # No more connected receivers. Therefore, remove the signal. + signals = connections[senderkey] + del signals[signal] + if not signals: + # No more signal connections. Therefore, remove the sender. + _removeSender(senderkey) + +def _removeSender(senderkey): + """Remove senderkey from connections.""" + del connections[senderkey] + # Senderkey will only be in senders dictionary if sender + # could be weakly referenced. + try: + del senders[senderkey] + except: + pass diff --git a/wxPython/wxPython/lib/PyCrust/filling.py b/wxPython/wxPython/lib/PyCrust/filling.py index a8da260894..9a846b4def 100644 --- a/wxPython/wxPython/lib/PyCrust/filling.py +++ b/wxPython/wxPython/lib/PyCrust/filling.py @@ -1,163 +1,217 @@ -"""PyCrust Filling is the gui tree control through which a user can navigate -the local namespace or any object.""" +"""PyCrust Filling is the gui tree control through which a user can +navigate the local namespace or any object.""" __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] -from wxPython.wx import * -from wxPython.stc import * +from wxPython import wx +from wxPython import stc from version import VERSION +import dispatcher import inspect import introspect import keyword import sys import types +try: + True +except NameError: + True = 1==1 + False = 1==0 + COMMONTYPES = [getattr(types, t) for t in dir(types) \ if not t.startswith('_') \ and t not in ('ClassType', 'InstanceType', 'ModuleType')] + +DOCTYPES = ('BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', + 'FunctionType', 'GeneratorType', 'InstanceType', + 'LambdaType', 'MethodType', 'ModuleType', + 'UnboundMethodType', 'method-wrapper') + +SIMPLETYPES = [getattr(types, t) for t in dir(types) \ + if not t.startswith('_') and t not in DOCTYPES] + try: COMMONTYPES.append(type(''.__repr__)) # Method-wrapper in version 2.2.x. except AttributeError: pass -class FillingTree(wxTreeCtrl): +class FillingTree(wx.wxTreeCtrl): """PyCrust FillingTree based on wxTreeCtrl.""" name = 'PyCrust Filling Tree' revision = __revision__ - def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ - size=wxDefaultSize, style=wxTR_HAS_BUTTONS, \ - rootObject=None, rootLabel=None, rootIsNamespace=0): + def __init__(self, parent, id=-1, pos=wx.wxDefaultPosition, + size=wx.wxDefaultSize, style=wx.wxTR_DEFAULT_STYLE, + rootObject=None, rootLabel=None, rootIsNamespace=0, + static=False): """Create a PyCrust FillingTree instance.""" - wxTreeCtrl.__init__(self, parent, id, pos, size) + wx.wxTreeCtrl.__init__(self, parent, id, pos, size, style) self.rootIsNamespace = rootIsNamespace - if not rootObject: - import __main__ - rootObject = __main__ + import __main__ + if rootObject is None: + rootObject = __main__.__dict__ self.rootIsNamespace = 1 - if not rootLabel: rootLabel = 'Ingredients' - rootData = wxTreeItemData(rootObject) - self.root = self.AddRoot(rootLabel, -1, -1, rootData) - self.SetItemHasChildren(self.root, self.hasChildren(self.root)) - EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnItemExpanding) - EVT_TREE_ITEM_COLLAPSED(self, self.GetId(), self.OnItemCollapsed) - EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) + if rootObject is __main__.__dict__ and rootLabel is None: + rootLabel = 'locals()' + if not rootLabel: + rootLabel = 'Ingredients' + rootData = wx.wxTreeItemData(rootObject) + self.item = self.root = self.AddRoot(rootLabel, -1, -1, rootData) + self.SetItemHasChildren(self.root, self.hasChildren(rootObject)) + wx.EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnItemExpanding) + wx.EVT_TREE_ITEM_COLLAPSED(self, self.GetId(), self.OnItemCollapsed) + wx.EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) + wx.EVT_TREE_ITEM_ACTIVATED(self, self.GetId(), self.OnItemActivated) + if not static: + dispatcher.connect(receiver=self.push, signal='Interpreter.push') - def hasChildren(self, o): + def push(self, command, more): + """Receiver for Interpreter.push signal.""" + self.display() + + def OnItemExpanding(self, event): + """Add children to the item.""" + busy = wx.wxBusyCursor() + item = event.GetItem() + if self.IsExpanded(item): + return + self.addChildren(item) +# self.SelectItem(item) + + def OnItemCollapsed(self, event): + """Remove all children from the item.""" + busy = wx.wxBusyCursor() + item = event.GetItem() +# self.CollapseAndReset(item) +# self.DeleteChildren(item) +# self.SelectItem(item) + + def OnSelChanged(self, event): + """Display information about the item.""" + busy = wx.wxBusyCursor() + self.item = event.GetItem() + self.display() + + def OnItemActivated(self, event): + """Launch a DirFrame.""" + item = event.GetItem() + text = self.getFullName(item) + obj = self.GetPyData(item) + frame = FillingFrame(parent=self, size=(600, 100), rootObject=obj, + rootLabel=text, rootIsNamespace=False) + frame.Show() + + def hasChildren(self, obj): """Return true if object has children.""" - if self.getChildren(o): - return true + if self.getChildren(obj): + return True else: - return false + return False - def getChildren(self, o): - """Return a dictionary with the attributes or contents of object.""" - busy = wxBusyCursor() - otype = type(o) - if (otype is types.DictType) \ - or str(otype)[17:23] == 'BTrees' and hasattr(o, 'keys'): - return o + def getChildren(self, obj): + """Return dictionary with attributes or contents of object.""" + busy = wx.wxBusyCursor() + otype = type(obj) + if otype is types.DictType \ + or str(otype)[17:23] == 'BTrees' and hasattr(obj, 'keys'): + return obj d = {} - if otype is types.ListType: - for n in range(len(o)): + if otype is types.ListType or otype is types.TupleType: + for n in range(len(obj)): key = '[' + str(n) + ']' - d[key] = o[n] + d[key] = obj[n] if otype not in COMMONTYPES: - for key in introspect.getAttributeNames(o): - # Believe it or not, some attributes can disappear, such as - # the exc_traceback attribute of the sys module. So this is - # nested in a try block. + for key in introspect.getAttributeNames(obj): + # Believe it or not, some attributes can disappear, + # such as the exc_traceback attribute of the sys + # module. So this is nested in a try block. try: - d[key] = getattr(o, key) + d[key] = getattr(obj, key) except: pass return d - def OnItemExpanding(self, event): - busy = wxBusyCursor() - selection = event.GetItem() - if self.IsExpanded(selection): - return - o = self.GetPyData(selection) - children = self.getChildren(o) + def addChildren(self, item): + self.DeleteChildren(item) + obj = self.GetPyData(item) + children = self.getChildren(obj) if not children: return - list = children.keys() - try: - list.sort(lambda x, y: cmp(x.lower(), y.lower())) - except: - pass - for item in list: - itemtext = str(item) - # Show string dictionary items with single quotes, except for - # the first level of items, if they represent a namespace. - if type(o) is types.DictType \ - and type(item) is types.StringType \ - and (selection != self.root \ - or (selection == self.root and not self.rootIsNamespace)): - itemtext = repr(item) - child = self.AppendItem(selection, itemtext, -1, -1, \ - wxTreeItemData(children[item])) - self.SetItemHasChildren(child, self.hasChildren(children[item])) + keys = children.keys() + keys.sort(lambda x, y: cmp(x.lower(), y.lower())) + for key in keys: + itemtext = str(key) + # Show string dictionary items with single quotes, except + # for the first level of items, if they represent a + # namespace. + if type(obj) is types.DictType \ + and type(key) is types.StringType \ + and (item != self.root \ + or (item == self.root and not self.rootIsNamespace)): + itemtext = repr(key) + child = children[key] + data = wx.wxTreeItemData(child) + branch = self.AppendItem(parent=item, text=itemtext, data=data) + self.SetItemHasChildren(branch, self.hasChildren(child)) - def OnItemCollapsed(self, event): - """Remove all children from the item.""" - busy = wxBusyCursor() - item = event.GetItem() - self.DeleteChildren(item) - - def OnSelChanged(self, event): - busy = wxBusyCursor() - item = event.GetItem() - if item == self.root: - self.setText('') + def display(self): + item = self.item + if self.IsExpanded(item): + self.addChildren(item) + self.setText('') + obj = self.GetPyData(item) + if obj is None: # Windows bug fix. return - o = self.GetPyData(item) - otype = type(o) + self.SetItemHasChildren(item, self.hasChildren(obj)) + otype = type(obj) text = '' text += self.getFullName(item) text += '\n\nType: ' + str(otype) try: - value = str(o) + value = str(obj) except: value = '' if otype is types.StringType or otype is types.UnicodeType: - value = repr(o) + value = repr(obj) text += '\n\nValue: ' + value + if otype not in SIMPLETYPES: + try: + text += '\n\nDocstring:\n\n"""' + \ + inspect.getdoc(obj).strip() + '"""' + except: + pass if otype is types.InstanceType: try: text += '\n\nClass Definition:\n\n' + \ - inspect.getsource(o.__class__) + inspect.getsource(obj.__class__) except: - try: - text += '\n\n"""' + inspect.getdoc(o).strip() + '"""' - except: - pass + pass else: try: text += '\n\nSource Code:\n\n' + \ - inspect.getsource(o) + inspect.getsource(obj) except: - try: - text += '\n\n"""' + inspect.getdoc(o).strip() + '"""' - except: - pass + pass self.setText(text) def getFullName(self, item, partial=''): """Return a syntactically proper name for item.""" - parent = self.GetItemParent(item) - parento = self.GetPyData(parent) name = self.GetItemText(item) + parent = None + obj = None + if item != self.root: + parent = self.GetItemParent(item) + obj = self.GetPyData(parent) # Apply dictionary syntax to dictionary items, except the root # and first level children of a namepace. - if (type(parento) is types.DictType \ - or str(type(parento))[17:23] == 'BTrees' \ - and hasattr(parento, 'keys')) \ + if (type(obj) is types.DictType \ + or str(type(obj))[17:23] == 'BTrees' \ + and hasattr(obj, 'keys')) \ and ((item != self.root and parent != self.root) \ or (parent == self.root and not self.rootIsNamespace)): name = '[' + name + ']' @@ -177,19 +231,19 @@ class FillingTree(wxTreeCtrl): def setText(self, text): """Display information about the current selection.""" - # This method will most likely be replaced by the enclosing app - # to do something more interesting, like write to a text control. + # This method will likely be replaced by the enclosing app to + # do something more interesting, like write to a text control. print text def setStatusText(self, text): """Display status information.""" - # This method will most likely be replaced by the enclosing app - # to do something more interesting, like write to a status bar. + # This method will likely be replaced by the enclosing app to + # do something more interesting, like write to a status bar. print text -if wxPlatform == '__WXMSW__': +if wx.wxPlatform == '__WXMSW__': faces = { 'times' : 'Times New Roman', 'mono' : 'Courier New', 'helv' : 'Lucida Console', @@ -199,12 +253,6 @@ if wxPlatform == '__WXMSW__': 'lnsize' : 9, 'backcol': '#FFFFFF', } - # Versions of wxPython prior to 2.3.2 had a sizing bug on Win platform. - # The font was 2 points too large. So we need to reduce the font size. - if ((wxMAJOR_VERSION, wxMINOR_VERSION) == (2, 3) and wxRELEASE_NUMBER < 2) \ - or (wxMAJOR_VERSION <= 2 and wxMINOR_VERSION <= 2): - faces['size'] -= 2 - faces['lnsize'] -= 2 else: # GTK faces = { 'times' : 'Times', 'mono' : 'Courier', @@ -216,24 +264,45 @@ else: # GTK } -class FillingText(wxStyledTextCtrl): +class FillingText(stc.wxStyledTextCtrl): """PyCrust FillingText based on wxStyledTextCtrl.""" name = 'PyCrust Filling Text' revision = __revision__ - def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ - size=wxDefaultSize, style=wxCLIP_CHILDREN): + def __init__(self, parent, id=-1, pos=wx.wxDefaultPosition, + size=wx.wxDefaultSize, style=wx.wxCLIP_CHILDREN, + static=False): """Create a PyCrust FillingText instance.""" - wxStyledTextCtrl.__init__(self, parent, id, pos, size, style) + stc.wxStyledTextCtrl.__init__(self, parent, id, pos, size, style) # Configure various defaults and user preferences. self.config() + dispatcher.connect(receiver=self.fontsizer, signal='FontIncrease') + dispatcher.connect(receiver=self.fontsizer, signal='FontDecrease') + dispatcher.connect(receiver=self.fontsizer, signal='FontDefault') + if not static: + dispatcher.connect(receiver=self.push, signal='Interpreter.push') + + def push(self, command, more): + """Receiver for Interpreter.push signal.""" + self.Refresh() + + def fontsizer(self, signal): + """Receiver for Font* signals.""" + size = self.GetZoom() + if signal == 'FontIncrease': + size += 1 + elif signal == 'FontDecrease': + size -= 1 + elif signal == 'FontDefault': + size = 0 + self.SetZoom(size) def config(self): """Configure shell based on user preferences.""" self.SetMarginWidth(1, 0) - self.SetLexer(wxSTC_LEX_PYTHON) + self.SetLexer(stc.wxSTC_LEX_PYTHON) self.SetKeyWords(0, ' '.join(keyword.kwlist)) self.setStyles(faces) @@ -250,96 +319,117 @@ class FillingText(wxStyledTextCtrl): """Configure font size, typeface and color for lexer.""" # Default style - self.StyleSetSpec(wxSTC_STYLE_DEFAULT, "face:%(mono)s,size:%(size)d" % faces) + self.StyleSetSpec(stc.wxSTC_STYLE_DEFAULT, + "face:%(mono)s,size:%(size)d" % faces) self.StyleClearAll() # Built in styles - self.StyleSetSpec(wxSTC_STYLE_LINENUMBER, "back:#C0C0C0,face:%(mono)s,size:%(lnsize)d" % faces) - self.StyleSetSpec(wxSTC_STYLE_CONTROLCHAR, "face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_STYLE_BRACELIGHT, "fore:#0000FF,back:#FFFF88") - self.StyleSetSpec(wxSTC_STYLE_BRACEBAD, "fore:#FF0000,back:#FFFF88") + self.StyleSetSpec(stc.wxSTC_STYLE_LINENUMBER, + "back:#C0C0C0,face:%(mono)s,size:%(lnsize)d" % faces) + self.StyleSetSpec(stc.wxSTC_STYLE_CONTROLCHAR, + "face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_STYLE_BRACELIGHT, + "fore:#0000FF,back:#FFFF88") + self.StyleSetSpec(stc.wxSTC_STYLE_BRACEBAD, + "fore:#FF0000,back:#FFFF88") # Python styles - self.StyleSetSpec(wxSTC_P_DEFAULT, "face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_COMMENTLINE, "fore:#007F00,face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_NUMBER, "") - self.StyleSetSpec(wxSTC_P_STRING, "fore:#7F007F,face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_CHARACTER, "fore:#7F007F,face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_WORD, "fore:#00007F,bold") - self.StyleSetSpec(wxSTC_P_TRIPLE, "fore:#7F0000") - self.StyleSetSpec(wxSTC_P_TRIPLEDOUBLE, "fore:#000033,back:#FFFFE8") - self.StyleSetSpec(wxSTC_P_CLASSNAME, "fore:#0000FF,bold") - self.StyleSetSpec(wxSTC_P_DEFNAME, "fore:#007F7F,bold") - self.StyleSetSpec(wxSTC_P_OPERATOR, "") - self.StyleSetSpec(wxSTC_P_IDENTIFIER, "") - self.StyleSetSpec(wxSTC_P_COMMENTBLOCK, "fore:#7F7F7F") - self.StyleSetSpec(wxSTC_P_STRINGEOL, "fore:#000000,face:%(mono)s,back:#E0C0E0,eolfilled" % faces) + self.StyleSetSpec(stc.wxSTC_P_DEFAULT, + "face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_COMMENTLINE, + "fore:#007F00,face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_NUMBER, + "") + self.StyleSetSpec(stc.wxSTC_P_STRING, + "fore:#7F007F,face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_CHARACTER, + "fore:#7F007F,face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_WORD, + "fore:#00007F,bold") + self.StyleSetSpec(stc.wxSTC_P_TRIPLE, + "fore:#7F0000") + self.StyleSetSpec(stc.wxSTC_P_TRIPLEDOUBLE, + "fore:#000033,back:#FFFFE8") + self.StyleSetSpec(stc.wxSTC_P_CLASSNAME, + "fore:#0000FF,bold") + self.StyleSetSpec(stc.wxSTC_P_DEFNAME, + "fore:#007F7F,bold") + self.StyleSetSpec(stc.wxSTC_P_OPERATOR, + "") + self.StyleSetSpec(stc.wxSTC_P_IDENTIFIER, + "") + self.StyleSetSpec(stc.wxSTC_P_COMMENTBLOCK, + "fore:#7F7F7F") + self.StyleSetSpec(stc.wxSTC_P_STRINGEOL, + "fore:#000000,face:%(mono)s,back:#E0C0E0,eolfilled" % faces) def SetText(self, *args, **kwds): self.SetReadOnly(0) - wxStyledTextCtrl.SetText(self, *args, **kwds) + stc.wxStyledTextCtrl.SetText(self, *args, **kwds) self.SetReadOnly(1) -class Filling(wxSplitterWindow): +class Filling(wx.wxSplitterWindow): """PyCrust Filling based on wxSplitterWindow.""" name = 'PyCrust Filling' revision = __revision__ - def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ - size=wxDefaultSize, style=wxSP_3D, name='Filling Window', \ - rootObject=None, rootLabel=None, rootIsNamespace=0): + def __init__(self, parent, id=-1, pos=wx.wxDefaultPosition, + size=wx.wxDefaultSize, style=wx.wxSP_3D, + name='Filling Window', rootObject=None, + rootLabel=None, rootIsNamespace=0, static=False): """Create a PyCrust Filling instance.""" - wxSplitterWindow.__init__(self, parent, id, pos, size, style, name) - self.fillingTree = FillingTree(parent=self, rootObject=rootObject, \ - rootLabel=rootLabel, \ - rootIsNamespace=rootIsNamespace) - self.fillingText = FillingText(parent=self) - self.SplitVertically(self.fillingTree, self.fillingText, 200) + wx.wxSplitterWindow.__init__(self, parent, id, pos, size, style, name) + self.tree = FillingTree(parent=self, rootObject=rootObject, + rootLabel=rootLabel, + rootIsNamespace=rootIsNamespace, + static=static) + self.text = FillingText(parent=self, static=static) + self.SplitVertically(self.tree, self.text, 200) self.SetMinimumPaneSize(1) - # Override the filling so that descriptions go to fillingText. - self.fillingTree.setText = self.fillingText.SetText - # Select the root item. - self.fillingTree.SelectItem(self.fillingTree.root) + # Override the filling so that descriptions go to FillingText. + self.tree.setText = self.text.SetText + # Display the root item. +## self.tree.SelectItem(self.tree.root) + self.tree.display() -class FillingFrame(wxFrame): +class FillingFrame(wx.wxFrame): """Frame containing the PyCrust filling, or namespace tree component.""" name = 'PyCrust Filling Frame' revision = __revision__ - def __init__(self, parent=None, id=-1, title='PyFilling', \ - pos=wxDefaultPosition, size=wxDefaultSize, \ - style=wxDEFAULT_FRAME_STYLE, rootObject=None, \ - rootLabel=None, rootIsNamespace=0): + def __init__(self, parent=None, id=-1, title='PyFilling', + pos=wx.wxDefaultPosition, size=wx.wxDefaultSize, + style=wx.wxDEFAULT_FRAME_STYLE, rootObject=None, + rootLabel=None, rootIsNamespace=0, static=False): """Create a PyCrust FillingFrame instance.""" - wxFrame.__init__(self, parent, id, title, pos, size, style) - intro = 'Welcome To PyFilling - The Tastiest Namespace Inspector' + wx.wxFrame.__init__(self, parent, id, title, pos, size, style) + intro = 'PyFilling - The Tastiest Namespace Inspector' self.CreateStatusBar() self.SetStatusText(intro) - if wxPlatform == '__WXMSW__': - import os - filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico') - icon = wxIcon(filename, wxBITMAP_TYPE_ICO) - self.SetIcon(icon) - self.filling = Filling(parent=self, rootObject=rootObject, \ - rootLabel=rootLabel, \ - rootIsNamespace=rootIsNamespace) - # Override the filling so that status messages go to the status bar. - self.filling.fillingTree.setStatusText = self.SetStatusText + import images + self.SetIcon(images.getPyCrustIcon()) + self.filling = Filling(parent=self, rootObject=rootObject, + rootLabel=rootLabel, + rootIsNamespace=rootIsNamespace, + static=static) + # Override so that status messages go to the status bar. + self.filling.tree.setStatusText = self.SetStatusText -class App(wxApp): +class App(wx.wxApp): """PyFilling standalone application.""" def OnInit(self): + wx.wxInitAllImageHandlers() self.fillingFrame = FillingFrame() - self.fillingFrame.Show(true) + self.fillingFrame.Show(True) self.SetTopWindow(self.fillingFrame) - return true + return True diff --git a/wxPython/wxPython/lib/PyCrust/interpreter.py b/wxPython/wxPython/lib/PyCrust/interpreter.py index 4cd752daa3..07caaafc84 100644 --- a/wxPython/wxPython/lib/PyCrust/interpreter.py +++ b/wxPython/wxPython/lib/PyCrust/interpreter.py @@ -7,15 +7,22 @@ __revision__ = "$Revision$"[11:-2] import os import sys from code import InteractiveInterpreter +import dispatcher import introspect +try: + True +except NameError: + True = 1==1 + False = 1==0 + class Interpreter(InteractiveInterpreter): """PyCrust Interpreter based on code.InteractiveInterpreter.""" revision = __revision__ - def __init__(self, locals=None, rawin=None, \ + def __init__(self, locals=None, rawin=None, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr): """Create an interactive interpreter object.""" InteractiveInterpreter.__init__(self, locals=locals) @@ -26,8 +33,8 @@ class Interpreter(InteractiveInterpreter): import __builtin__ __builtin__.raw_input = rawin del __builtin__ - copyright = \ - 'Type "copyright", "credits" or "license" for more information.' + copyright = 'Type "help", "copyright", "credits" or "license"' + copyright += ' for more information.' self.introText = 'Python %s on %s%s%s' % \ (sys.version, sys.platform, os.linesep, copyright) try: @@ -47,29 +54,32 @@ class Interpreter(InteractiveInterpreter): """Send command to the interpreter to be executed. Because this may be called recursively, we append a new list - onto the commandBuffer list and then append commands into that. - If the passed in command is part of a multi-line command we keep - appending the pieces to the last list in commandBuffer until we - have a complete command. If not, we delete that last list.""" + onto the commandBuffer list and then append commands into + that. If the passed in command is part of a multi-line + command we keep appending the pieces to the last list in + commandBuffer until we have a complete command. If not, we + delete that last list.""" + command = str(command) # In case the command is unicode. if not self.more: try: del self.commandBuffer[-1] except IndexError: pass if not self.more: self.commandBuffer.append([]) self.commandBuffer[-1].append(command) source = '\n'.join(self.commandBuffer[-1]) - self.more = self.runsource(source) - return self.more + more = self.more = self.runsource(source) + dispatcher.send(signal='Interpreter.push', sender=self, + command=command, more=more, source=source) + return more def runsource(self, source): """Compile and run source code in the interpreter.""" stdin, stdout, stderr = sys.stdin, sys.stdout, sys.stderr - sys.stdin = self.stdin - sys.stdout = self.stdout - sys.stderr = self.stderr + sys.stdin, sys.stdout, sys.stderr = \ + self.stdin, self.stdout, self.stderr more = InteractiveInterpreter.runsource(self, source) # If sys.std* is still what we set it to, then restore it. - # But, if the executed source changed sys.std*, assume it - # was meant to be changed and leave it. Power to the people. + # But, if the executed source changed sys.std*, assume it was + # meant to be changed and leave it. Power to the people. if sys.stdin == self.stdin: sys.stdin = stdin if sys.stdout == self.stdout: @@ -86,22 +96,28 @@ class Interpreter(InteractiveInterpreter): """Return list of auto-completion options for a command. The list of options will be based on the locals namespace.""" - return introspect.getAutoCompleteList(command, self.locals, *args, **kwds) + stdin, stdout, stderr = sys.stdin, sys.stdout, sys.stderr + sys.stdin, sys.stdout, sys.stderr = \ + self.stdin, self.stdout, self.stderr + l = introspect.getAutoCompleteList(command, self.locals, + *args, **kwds) + sys.stdin, sys.stdout, sys.stderr = stdin, stdout, stderr + return l def getCallTip(self, command='', *args, **kwds): """Return call tip text for a command. - The call tip information will be based on the locals namespace.""" + Call tip information will be based on the locals namespace.""" return introspect.getCallTip(command, self.locals, *args, **kwds) class InterpreterAlaCarte(Interpreter): """PyCrustAlaCarte Demo Interpreter.""" - def __init__(self, locals, rawin, stdin, stdout, stderr, \ + def __init__(self, locals, rawin, stdin, stdout, stderr, ps1='main prompt', ps2='continuation prompt'): """Create an interactive interpreter object.""" - Interpreter.__init__(self, locals=locals, rawin=rawin, \ + Interpreter.__init__(self, locals=locals, rawin=rawin, stdin=stdin, stdout=stdout, stderr=stderr) sys.ps1 = ps1 sys.ps2 = ps2 diff --git a/wxPython/wxPython/lib/PyCrust/introspect.py b/wxPython/wxPython/lib/PyCrust/introspect.py index d568dc6c6f..482464735d 100644 --- a/wxPython/wxPython/lib/PyCrust/introspect.py +++ b/wxPython/wxPython/lib/PyCrust/introspect.py @@ -1,15 +1,24 @@ -"""Provides a variety of introspective-type support functions for things -like call tips and command auto completion.""" +"""Provides a variety of introspective-type support functions for +things like call tips and command auto completion.""" __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] +from __future__ import nested_scopes + +import cStringIO import inspect -import string +import tokenize import types -def getAutoCompleteList(command='', locals=None, includeMagic=1, \ +try: + True +except NameError: + True = 1==1 + False = 1==0 + +def getAutoCompleteList(command='', locals=None, includeMagic=1, includeSingle=1, includeDouble=1): """Return list of auto-completion options for command. @@ -25,19 +34,20 @@ def getAutoCompleteList(command='', locals=None, includeMagic=1, \ except: pass else: - attributes = getAttributeNames(object, includeMagic, \ + attributes = getAttributeNames(object, includeMagic, includeSingle, includeDouble) return attributes -def getAttributeNames(object, includeMagic=1, includeSingle=1, includeDouble=1): - """Return list of unique attributes, including inherited, for an object.""" +def getAttributeNames(object, includeMagic=1, includeSingle=1, + includeDouble=1): + """Return list of unique attributes, including inherited, for object.""" attributes = [] dict = {} if not hasattrAlwaysReturnsTrue(object): - # Add some attributes that don't always get picked up. - # If they don't apply, they'll get filtered out at the end. - attributes += ['__bases__', '__class__', '__dict__', '__name__', \ - 'func_closure', 'func_code', 'func_defaults', \ + # Add some attributes that don't always get picked up. If + # they don't apply, they'll get filtered out at the end. + attributes += ['__bases__', '__class__', '__dict__', '__name__', + 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] if includeMagic: try: attributes += object._getAttributeNames() @@ -65,19 +75,20 @@ def hasattrAlwaysReturnsTrue(object): return hasattr(object, 'bogu5_123_aTTri8ute') def getAllAttributeNames(object): - """Return mapping of all attributes, including inherited, for an object. + """Return dict of all attributes, including inherited, for an object. Recursively walk through a class and all base classes. """ attrdict = {} # (object, technique, count): [list of attributes] # !!! - # !!! Do Not use hasattr() as a test anywhere in this function, - # !!! because it is unreliable with remote objects - xmlrpc, soap, etc. - # !!! They always return true for hasattr(). + # Do Not use hasattr() as a test anywhere in this function, + # because it is unreliable with remote objects: xmlrpc, soap, etc. + # They always return true for hasattr(). # !!! try: - # Yes, this can fail if object is an instance of a class with - # __str__ (or __repr__) having a bug or raising an exception. :-( + # Yes, this can fail if object is an instance of a class with + # __str__ (or __repr__) having a bug or raising an + # exception. :-( key = str(object) except: key = 'anonymous' @@ -102,7 +113,8 @@ def getAllAttributeNames(object): pass else: if klass is object: - # Break a circular reference. This happens with extension classes. + # Break a circular reference. This happens with extension + # classes. pass else: attrdict.update(getAllAttributeNames(klass)) @@ -152,7 +164,7 @@ def getCallTip(command='', locals=None): if dropSelf: # The first parameter to a method is a reference to an # instance, usually coded as "self", and is usually passed - # automatically by Python and therefore we want to drop it. + # automatically by Python; therefore we want to drop it. temp = argspec.split(',') if len(temp) == 1: # No other arguments. argspec = '()' @@ -167,10 +179,15 @@ def getCallTip(command='', locals=None): # "Return call tip text for a command." # tip3 is the rest of the docstring, like: # "The call tip information will be based on ... <snip> + firstline = doc.split('\n')[0].lstrip() + if tip1 == firstline: + tip1 = '' + else: + tip1 += '\n\n' docpieces = doc.split('\n\n') tip2 = docpieces[0] tip3 = '\n\n'.join(docpieces[1:]) - tip = '%s\n\n%s\n\n%s' % (tip1, tip2, tip3) + tip = '%s%s\n\n%s' % (tip1, tip2, tip3) else: tip = tip1 calltip = (name, argspec[1:-1], tip.strip()) @@ -179,47 +196,108 @@ def getCallTip(command='', locals=None): def getRoot(command, terminator=None): """Return the rightmost root portion of an arbitrary Python command. - Return only the root portion that can be eval()'d without side effects. - The command would normally terminate with a "(" or ".". The terminator - and anything after the terminator will be dropped.""" - root = '' - validChars = "._" + string.uppercase + string.lowercase + string.digits - emptyTypes = ("''", '""', '""""""', "''''''", '[]', '()', '{}') - validSeparators = string.whitespace + ',+-*/=%<>&|^~:([{' - # Drop the final terminator and anything that follows. + Return only the root portion that can be eval()'d without side + effects. The command would normally terminate with a '(' or + '.'. The terminator and anything after the terminator will be + dropped.""" command = rtrimTerminus(command, terminator) - if len(command) == 0: - root = '' - elif command in emptyTypes and terminator in ('.', '', None): - # Let empty type delimiter pairs go through. - root = command + tokens = getTokens(command) + if not tokens: + return '' + if tokens[-1][0] is tokenize.ENDMARKER: + # Remove the end marker. + del tokens[-1] + if terminator == '.' and \ + (tokens[-1][1] <> '.' or tokens[-1][0] is not tokenize.OP): + # Trap decimals in numbers, versus the dot operator. + return '' else: - # Go backward through the command until we hit an "invalid" character. - i = len(command) - while i and command[i-1] in validChars: - i -= 1 - # Default to everything from the "invalid" character to the end. - root = command[i:] - # Override certain exceptions. - if i > 0 and command[i-1] in ("'", '"'): - # Detect situations where we are in the middle of a string. - # This code catches the simplest case, but needs to catch others. - root = '' - elif ((2 <= i < len(command) and command[i] == '.') \ - or (2 <= i <= len(command) and terminator in ('.', '', None))) \ - and command[i-2:i] in emptyTypes: - # Allow empty types to get through. - # Don't confuse an empty tupple with an argumentless callable. - if i == 2 or (i >= 3 and command[i-3] in validSeparators): - root = command[i-2:] - return root + # Strip off the terminator. + command = command[:-1] + command = command.rstrip() + tokens = getTokens(command) + tokens.reverse() + line = '' + start = None + prefix = '' + laststring = '.' + emptyTypes = ('[]', '()', '{}') + for token in tokens: + tokentype = token[0] + tokenstring = token[1] + line = token[4] + if tokentype is tokenize.ENDMARKER: + continue + if tokentype in (tokenize.NAME, tokenize.STRING, tokenize.NUMBER) \ + and laststring != '.': + # We've reached something that's not part of the root. + if prefix and line[token[3][1]] != ' ': + # If it doesn't have a space after it, remove the prefix. + prefix = '' + break + if tokentype in (tokenize.NAME, tokenize.STRING, tokenize.NUMBER) \ + or (tokentype is tokenize.OP and tokenstring == '.'): + if prefix: + # The prefix isn't valid because it comes after a dot. + prefix = '' + break + else: + # start represents the last known good point in the line. + start = token[2][1] + elif len(tokenstring) == 1 and tokenstring in ('[({])}'): + # Remember, we're working backwords. + # So prefix += tokenstring would be wrong. + if prefix in emptyTypes and tokenstring in ('[({'): + # We've already got an empty type identified so now we + # are in a nested situation and we can break out with + # what we've got. + break + else: + prefix = tokenstring + prefix + else: + # We've reached something that's not part of the root. + break + laststring = tokenstring + if start is None: + start = len(line) + root = line[start:] + if prefix in emptyTypes: + # Empty types are safe to be eval()'d and introspected. + root = prefix + root + return root + +def getTokens(command): + """Return list of token tuples for command.""" + command = str(command) # In case the command is unicode, which fails. + f = cStringIO.StringIO(command) + # tokens is a list of token tuples, each looking like: + # (type, string, (srow, scol), (erow, ecol), line) + tokens = [] + # Can't use list comprehension: + # tokens = [token for token in tokenize.generate_tokens(f.readline)] + # because of need to append as much as possible before TokenError. + try: +## This code wasn't backward compatible with Python 2.1.3. +## +## for token in tokenize.generate_tokens(f.readline): +## tokens.append(token) + + # This works with Python 2.1.3 (with nested_scopes). + def eater(*args): + tokens.append(args) + tokenize.tokenize_loop(f.readline, eater) + except tokenize.TokenError: + # This is due to a premature EOF, which we expect since we are + # feeding in fragments of Python code. + pass + return tokens def rtrimTerminus(command, terminator=None): - """Return command minus the final terminator and anything that follows.""" + """Return command minus anything that fillows the final terminator.""" if terminator: pieces = command.split(terminator) if len(pieces) > 1: - command = terminator.join(pieces[:-1]) + command = terminator.join(pieces[:-1]) + terminator return command def getBaseObject(object): @@ -228,12 +306,14 @@ def getBaseObject(object): # Builtin functions don't have an argspec that we can get. dropSelf = 0 elif inspect.ismethod(object): - # Get the function from the object otherwise inspect.getargspec() - # complains that the object isn't a Python function. + # Get the function from the object otherwise + # inspect.getargspec() complains that the object isn't a + # Python function. try: if object.im_self is None: - # This is an unbound method so we do not drop self from the - # argspec, since an instance must be passed as the first arg. + # This is an unbound method so we do not drop self + # from the argspec, since an instance must be passed + # as the first arg. dropSelf = 0 else: dropSelf = 1 @@ -269,6 +349,3 @@ def getConstructor(object): if constructor is not None: return constructor return None - - - diff --git a/wxPython/wxPython/lib/PyCrust/pseudo.py b/wxPython/wxPython/lib/PyCrust/pseudo.py index 0483388f69..583854809a 100644 --- a/wxPython/wxPython/lib/PyCrust/pseudo.py +++ b/wxPython/wxPython/lib/PyCrust/pseudo.py @@ -4,88 +4,97 @@ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] +try: + True +except NameError: + True = 1==1 + False = 1==0 + + class PseudoKeyword: """A callable class that calls a method passed as a parameter. - + Good for creating a pseudo keyword in the python runtime environment. The keyword is really an object that has a repr() that calls itself which calls the method that was passed in the init of the object. All this just to avoid having to type in the closing parens on a method. So, for example: - + >>> quit = PseudoKeyword(SomeObject.someMethod) >>> quit - + SomeObject.someMethod gets executed as if it had been called directly and the user didn't have to type the parens, like - "quit()". This technique is most applicable for pseudo keywords + 'quit()'. This technique is most applicable for pseudo keywords like quit, exit and help. - - If SomeObject.someMethod can take parameters, they can still be - passed by using the keyword in the traditional way with parens. - """ + + If SomeObject.someMethod can take parameters, they can still be + passed by using the keyword in the traditional way with parens.""" + def __init__(self, method): """Create a callable object that executes method when called.""" - + if callable(method): self.method = method else: raise ValueError, 'method must be callable' - + def __call__(self, *args, **kwds): self.method(*args, **kwds) - + def __repr__(self): self() return '' class PseudoFile: - + def __init__(self): """Create a file-like object.""" pass - + def readline(self): pass def write(self, s): pass - + def writelines(self, l): map(self.write, l) - + def flush(self): pass - + def isatty(self): pass - - + + class PseudoFileIn(PseudoFile): - - def __init__(self, readline): + + def __init__(self, readline, readlines=None): if callable(readline): self.readline = readline else: raise ValueError, 'readline must be callable' - + if callable(readlines): + self.readlines = readlines + def isatty(self): return 1 class PseudoFileOut(PseudoFile): - + def __init__(self, write): if callable(write): self.write = write else: raise ValueError, 'write must be callable' - + def isatty(self): return 1 - - + + class PseudoFileErr(PseudoFile): def __init__(self, write): @@ -93,9 +102,6 @@ class PseudoFileErr(PseudoFile): self.write = write else: raise ValueError, 'write must be callable' - + def isatty(self): return 1 - - - diff --git a/wxPython/wxPython/lib/PyCrust/shell.py b/wxPython/wxPython/lib/PyCrust/shell.py index e72edd6928..f522356f09 100644 --- a/wxPython/wxPython/lib/PyCrust/shell.py +++ b/wxPython/wxPython/lib/PyCrust/shell.py @@ -1,28 +1,52 @@ -"""The PyCrust Shell is an interactive text control in which a user types in -commands to be sent to the interpreter. This particular shell is based on -wxPython's wxStyledTextCtrl. The latest files are always available at the -SourceForge project page at http://sourceforge.net/projects/pycrust/. +"""The PyCrust Shell is an interactive text control in which a user +types in commands to be sent to the interpreter. This particular shell +is based on wxPython's wxStyledTextCtrl. The latest files are always +available at the SourceForge project page at +http://sourceforge.net/projects/pycrust/. + Sponsored by Orbtech - Your source for Python programming expertise.""" __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] -from wxPython.wx import * -from wxPython.stc import * import keyword import os import sys +import time from pseudo import PseudoFileIn from pseudo import PseudoFileOut from pseudo import PseudoFileErr +from shellmenu import ShellMenu from version import VERSION +import dispatcher + +try: + import wxd.d_wx +except ImportError: + from wxPython import wx +else: + from wxd.d_wx import wx + +try: + import wxd.d_stc +except ImportError: + from wxPython import stc +else: + from wxd.d_stc import stc + +try: + True +except NameError: + True = 1==1 + False = 1==0 sys.ps3 = '<-- ' # Input prompt. -NAVKEYS = (WXK_END, WXK_LEFT, WXK_RIGHT, WXK_UP, WXK_DOWN, WXK_PRIOR, WXK_NEXT) +NAVKEYS = (wx.WXK_END, wx.WXK_LEFT, wx.WXK_RIGHT, + wx.WXK_UP, wx.WXK_DOWN, wx.WXK_PRIOR, wx.WXK_NEXT) -if wxPlatform == '__WXMSW__': +if wx.wxPlatform == '__WXMSW__': faces = { 'times' : 'Times New Roman', 'mono' : 'Courier New', 'helv' : 'Lucida Console', @@ -32,11 +56,6 @@ if wxPlatform == '__WXMSW__': 'lnsize' : 9, 'backcol': '#FFFFFF', } - # Versions of wxPython prior to 2.3.2 had a sizing bug on Win platform. - # The font was 2 points too large. So we need to reduce the font size. - if (wxMAJOR_VERSION, wxMINOR_VERSION, wxRELEASE_NUMBER) < (2, 3, 2): - faces['size'] -= 2 - faces['lnsize'] -= 2 else: # GTK faces = { 'times' : 'Times', 'mono' : 'Courier', @@ -48,30 +67,69 @@ else: # GTK } +class ShellFrame(wx.wxFrame, ShellMenu): + """Frame containing the PyCrust shell component.""" + + name = 'PyCrust Shell Frame' + revision = __revision__ + + def __init__(self, parent=None, id=-1, title='PyShell', + pos=wx.wxDefaultPosition, size=wx.wxDefaultSize, + style=wx.wxDEFAULT_FRAME_STYLE, locals=None, + InterpClass=None, *args, **kwds): + """Create a PyCrust ShellFrame instance.""" + wx.wxFrame.__init__(self, parent, id, title, pos, size, style) + intro = 'PyCrust %s - The Flakiest Python Shell' % VERSION + intro += '\nSponsored by Orbtech - ' + \ + 'Your source for Python programming expertise.' + self.CreateStatusBar() + self.SetStatusText(intro.replace('\n', ', ')) + import images + self.SetIcon(images.getPyCrustIcon()) + self.shell = Shell(parent=self, id=-1, introText=intro, + locals=locals, InterpClass=InterpClass, + *args, **kwds) + # Override the shell so that status messages go to the status bar. + self.shell.setStatusText = self.SetStatusText + self.createMenus() + wx.EVT_CLOSE(self, self.OnCloseWindow) + + def OnCloseWindow(self, event): + """Event handler for closing.""" + # This isn't working the way I want, but I'll leave it for now. + if self.shell.waiting: + event.Veto(True) + else: + self.shell.destroy() + self.Destroy() + + class ShellFacade: """Simplified interface to all shell-related functionality. - This is a semi-transparent facade, in that all attributes of other are - still accessible, even though only some are visible to the user.""" + This is a semi-transparent facade, in that all attributes of other + are accessible, even though only some are visible to the user.""" name = 'PyCrust Shell Interface' revision = __revision__ def __init__(self, other): """Create a ShellFacade instance.""" - methods = ['ask', - 'clear', - 'pause', - 'prompt', - 'quit', - 'redirectStderr', - 'redirectStdin', - 'redirectStdout', - 'run', - 'runfile', - 'wrap', - 'zoom', - ] + methods = [ + 'about', + 'ask', + 'clear', + 'pause', + 'prompt', + 'quit', + 'redirectStderr', + 'redirectStdin', + 'redirectStdout', + 'run', + 'runfile', + 'wrap', + 'zoom', + ] for method in methods: self.__dict__[method] = getattr(other, method) d = self.__dict__ @@ -95,7 +153,11 @@ Alt+N Retrieve Next History item. Shift+Up Arrow Insert Previous History item. Shift+Down Arrow Insert Next History item. F8 Command-completion of History item. - (Type a few characters of a previous command and then press F8.) + (Type a few characters of a previous command and press F8.) +Ctrl+Enter Insert new line into multiline command. +Ctrl+] Increase font size. +Ctrl+[ Decrease font size. +Ctrl+= Default font size. """ def help(self): @@ -112,7 +174,7 @@ F8 Command-completion of History item. if self.__dict__.has_key(name): self.__dict__[name] = value elif hasattr(self.other, name): - return setattr(self.other, name, value) + setattr(self.other, name, value) else: raise AttributeError, name @@ -129,17 +191,19 @@ F8 Command-completion of History item. return list -class Shell(wxStyledTextCtrl): +class Shell(stc.wxStyledTextCtrl): """PyCrust Shell based on wxStyledTextCtrl.""" name = 'PyCrust Shell' revision = __revision__ - def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ - size=wxDefaultSize, style=wxCLIP_CHILDREN, introText='', \ - locals=None, InterpClass=None, *args, **kwds): + def __init__(self, parent, id=-1, pos=wx.wxDefaultPosition, + size=wx.wxDefaultSize, style=wx.wxCLIP_CHILDREN, + introText='', locals=None, InterpClass=None, *args, **kwds): """Create a PyCrust Shell instance.""" - wxStyledTextCtrl.__init__(self, parent, id, pos, size, style) + stc.wxStyledTextCtrl.__init__(self, parent, id, pos, size, style) + if locals is None: + locals = {} # Grab these so they can be restored by self.redirect* methods. self.stdin = sys.stdin self.stdout = sys.stdout @@ -151,24 +215,16 @@ class Shell(wxStyledTextCtrl): from interpreter import Interpreter else: Interpreter = InterpClass - # Create default locals so we have something interesting. - shellLocals = {'__name__': 'PyCrust-Shell', - '__doc__': 'PyCrust-Shell, The PyCrust Python Shell.', - '__version__': VERSION, - } - # Add the dictionary that was passed in. - if locals: - shellLocals.update(locals) # Create a replacement for stdin. - self.reader = PseudoFileIn(self.readline) + self.reader = PseudoFileIn(self.readline, self.readlines) self.reader.input = '' self.reader.isreading = 0 # Set up the interpreter. - self.interp = Interpreter(locals=shellLocals, \ - rawin=self.raw_input, \ - stdin=self.reader, \ - stdout=PseudoFileOut(self.writeOut), \ - stderr=PseudoFileErr(self.writeErr), \ + self.interp = Interpreter(locals=locals, + rawin=self.raw_input, + stdin=self.reader, + stdout=PseudoFileOut(self.writeOut), + stderr=PseudoFileErr(self.writeErr), *args, **kwds) # Find out for which keycodes the interpreter will autocomplete. self.autoCompleteKeys = self.interp.getAutoCompleteKeys() @@ -177,45 +233,60 @@ class Shell(wxStyledTextCtrl): self.promptPosEnd = 0 # Keep track of multi-line commands. self.more = 0 - # Create the command history. Commands are added into the front of - # the list (ie. at index 0) as they are entered. self.historyIndex - # is the current position in the history; it gets incremented as you - # retrieve the previous command, decremented as you retrieve the - # next, and reset when you hit Enter. self.historyIndex == -1 means - # you're on the current command, not in the history. + # Create the command history. Commands are added into the + # front of the list (ie. at index 0) as they are entered. + # self.historyIndex is the current position in the history; it + # gets incremented as you retrieve the previous command, + # decremented as you retrieve the next, and reset when you hit + # Enter. self.historyIndex == -1 means you're on the current + # command, not in the history. self.history = [] self.historyIndex = -1 # Assign handlers for keyboard events. - EVT_KEY_DOWN(self, self.OnKeyDown) - EVT_CHAR(self, self.OnChar) + wx.EVT_KEY_DOWN(self, self.OnKeyDown) + wx.EVT_CHAR(self, self.OnChar) # Assign handlers for wxSTC events. - EVT_STC_UPDATEUI(self, id, self.OnUpdateUI) + stc.EVT_STC_UPDATEUI(self, id, self.OnUpdateUI) + # Assign handler for idle time. + self.waiting = False + wx.EVT_IDLE(self, self.OnIdle) + dispatcher.connect(receiver=self.fontsizer, signal='FontIncrease') + dispatcher.connect(receiver=self.fontsizer, signal='FontDecrease') + dispatcher.connect(receiver=self.fontsizer, signal='FontDefault') # Configure various defaults and user preferences. self.config() # Display the introductory banner information. - try: self.showIntro(introText) - except: pass + self.showIntro(introText) # Assign some pseudo keywords to the interpreter's namespace. - try: self.setBuiltinKeywords() - except: pass + self.setBuiltinKeywords() # Add 'shell' to the interpreter's local namespace. - try: self.setLocalShell() - except: pass + self.setLocalShell() # Do this last so the user has complete control over their - # environment. They can override anything they want. - try: self.execStartupScript(self.interp.startupScript) - except: pass + # environment. They can override anything they want. + self.execStartupScript(self.interp.startupScript) + wx.wxCallAfter(self.ScrollToLine, 0) + + def fontsizer(self, signal): + """Receiver for Font* signals.""" + size = self.GetZoom() + if signal == 'FontIncrease': + size += 1 + elif signal == 'FontDecrease': + size -= 1 + elif signal == 'FontDefault': + size = 0 + self.SetZoom(size) def destroy(self): - # del self.interp + del self.interp pass def config(self): """Configure shell based on user preferences.""" - self.SetMarginType(1, wxSTC_MARGIN_NUMBER) + self.SetMarginType(1, stc.wxSTC_MARGIN_NUMBER) self.SetMarginWidth(1, 40) - self.SetLexer(wxSTC_LEX_PYTHON) + self.SetLexer(stc.wxSTC_LEX_PYTHON) self.SetKeyWords(0, ' '.join(keyword.kwlist)) self.setStyles(faces) @@ -229,30 +300,32 @@ class Shell(wxStyledTextCtrl): self.autoCompleteIncludeDouble = 1 self.autoCompleteCaseInsensitive = 1 self.AutoCompSetIgnoreCase(self.autoCompleteCaseInsensitive) + self.AutoCompSetAutoHide(False) + self.AutoCompStops(' .,;:([)]}\'"\\<>%^&+-=*/|`') # Do we want to automatically pop up command argument help? self.autoCallTip = 1 - self.CallTipSetBackground(wxColour(255, 255, 232)) + self.CallTipSetBackground(wx.wxColour(255, 255, 232)) self.wrap() try: - self.SetEndAtLastLine(false) + self.SetEndAtLastLine(False) except AttributeError: pass def showIntro(self, text=''): """Display introductory text in the shell.""" if text: - if not text.endswith(os.linesep): text += os.linesep + if not text.endswith(os.linesep): + text += os.linesep self.write(text) try: self.write(self.interp.introText) except AttributeError: pass - wxCallAfter(self.ScrollToLine, 0) def setBuiltinKeywords(self): """Create pseudo keywords as part of builtins. - This simply sets "close", "exit" and "quit" to a helpful string. + This sets `close`, `exit` and `quit` to a helpful string. """ import __builtin__ __builtin__.close = __builtin__.exit = __builtin__.quit = \ @@ -263,10 +336,10 @@ class Shell(wxStyledTextCtrl): # XXX Good enough for now but later we want to send a close event. - # In the close event handler we can make sure they want to quit. - # Other applications, like PythonCard, may choose to hide rather than - # quit so we should just post the event and let the surrounding app - # decide what it wants to do. + # In the close event handler we can make sure they want to + # quit. Other applications, like PythonCard, may choose to + # hide rather than quit so we should just post the event and + # let the surrounding app decide what it wants to do. self.write('Click on the close button to leave the application.') def setLocalShell(self): @@ -276,9 +349,8 @@ class Shell(wxStyledTextCtrl): def execStartupScript(self, startupScript): """Execute the user's PYTHONSTARTUP script if they have one.""" if startupScript and os.path.isfile(startupScript): - startupText = 'Startup script executed: ' + startupScript - self.push('print %s;execfile(%s)' % \ - (`startupText`, `startupScript`)) + text = 'Startup script executed: ' + startupScript + self.push('print %r; execfile(%r)' % (text, startupScript)) else: self.push('') @@ -286,61 +358,95 @@ class Shell(wxStyledTextCtrl): """Configure font size, typeface and color for lexer.""" # Default style - self.StyleSetSpec(wxSTC_STYLE_DEFAULT, "face:%(mono)s,size:%(size)d,back:%(backcol)s" % faces) + self.StyleSetSpec(stc.wxSTC_STYLE_DEFAULT, + "face:%(mono)s,size:%(size)d,back:%(backcol)s" % \ + faces) self.StyleClearAll() # Built in styles - self.StyleSetSpec(wxSTC_STYLE_LINENUMBER, "back:#C0C0C0,face:%(mono)s,size:%(lnsize)d" % faces) - self.StyleSetSpec(wxSTC_STYLE_CONTROLCHAR, "face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_STYLE_BRACELIGHT, "fore:#0000FF,back:#FFFF88") - self.StyleSetSpec(wxSTC_STYLE_BRACEBAD, "fore:#FF0000,back:#FFFF88") + self.StyleSetSpec(stc.wxSTC_STYLE_LINENUMBER, + "back:#C0C0C0,face:%(mono)s,size:%(lnsize)d" % faces) + self.StyleSetSpec(stc.wxSTC_STYLE_CONTROLCHAR, + "face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_STYLE_BRACELIGHT, + "fore:#0000FF,back:#FFFF88") + self.StyleSetSpec(stc.wxSTC_STYLE_BRACEBAD, + "fore:#FF0000,back:#FFFF88") # Python styles - self.StyleSetSpec(wxSTC_P_DEFAULT, "face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_COMMENTLINE, "fore:#007F00,face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_NUMBER, "") - self.StyleSetSpec(wxSTC_P_STRING, "fore:#7F007F,face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_CHARACTER, "fore:#7F007F,face:%(mono)s" % faces) - self.StyleSetSpec(wxSTC_P_WORD, "fore:#00007F,bold") - self.StyleSetSpec(wxSTC_P_TRIPLE, "fore:#7F0000") - self.StyleSetSpec(wxSTC_P_TRIPLEDOUBLE, "fore:#000033,back:#FFFFE8") - self.StyleSetSpec(wxSTC_P_CLASSNAME, "fore:#0000FF,bold") - self.StyleSetSpec(wxSTC_P_DEFNAME, "fore:#007F7F,bold") - self.StyleSetSpec(wxSTC_P_OPERATOR, "") - self.StyleSetSpec(wxSTC_P_IDENTIFIER, "") - self.StyleSetSpec(wxSTC_P_COMMENTBLOCK, "fore:#7F7F7F") - self.StyleSetSpec(wxSTC_P_STRINGEOL, "fore:#000000,face:%(mono)s,back:#E0C0E0,eolfilled" % faces) + self.StyleSetSpec(stc.wxSTC_P_DEFAULT, + "face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_COMMENTLINE, + "fore:#007F00,face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_NUMBER, + "") + self.StyleSetSpec(stc.wxSTC_P_STRING, + "fore:#7F007F,face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_CHARACTER, + "fore:#7F007F,face:%(mono)s" % faces) + self.StyleSetSpec(stc.wxSTC_P_WORD, + "fore:#00007F,bold") + self.StyleSetSpec(stc.wxSTC_P_TRIPLE, + "fore:#7F0000") + self.StyleSetSpec(stc.wxSTC_P_TRIPLEDOUBLE, + "fore:#000033,back:#FFFFE8") + self.StyleSetSpec(stc.wxSTC_P_CLASSNAME, + "fore:#0000FF,bold") + self.StyleSetSpec(stc.wxSTC_P_DEFNAME, + "fore:#007F7F,bold") + self.StyleSetSpec(stc.wxSTC_P_OPERATOR, + "") + self.StyleSetSpec(stc.wxSTC_P_IDENTIFIER, + "") + self.StyleSetSpec(stc.wxSTC_P_COMMENTBLOCK, + "fore:#7F7F7F") + self.StyleSetSpec(stc.wxSTC_P_STRINGEOL, + "fore:#000000,face:%(mono)s,back:#E0C0E0,eolfilled" % faces) - def OnUpdateUI(self, evt): + def about(self): + """Display information about PyCrust.""" + text = """ +Author: %r +PyCrust Version: %s +Shell Revision: %s +Interpreter Revision: %s +Python Version: %s +wxPython Version: %s +Platform: %s""" % \ + (__author__, VERSION, self.revision, self.interp.revision, + sys.version.split()[0], wx.__version__, sys.platform) + self.write(text.strip()) + + def OnIdle(self, event): + """Free the CPU to do other things.""" + if self.waiting: + time.sleep(0.05) + + def OnUpdateUI(self, event): """Check for matching braces.""" + # If the auto-complete window is up let it do its thing. + if self.AutoCompActive(): + return braceAtCaret = -1 braceOpposite = -1 charBefore = None caretPos = self.GetCurrentPos() if caretPos > 0: charBefore = self.GetCharAt(caretPos - 1) - #*** Patch to fix bug in wxSTC for wxPython < 2.3.3. - if charBefore < 0: - charBefore = 32 # Mimic a space. - #*** styleBefore = self.GetStyleAt(caretPos - 1) # Check before. if charBefore and chr(charBefore) in '[]{}()' \ - and styleBefore == wxSTC_P_OPERATOR: + and styleBefore == stc.wxSTC_P_OPERATOR: braceAtCaret = caretPos - 1 # Check after. if braceAtCaret < 0: charAfter = self.GetCharAt(caretPos) - #*** Patch to fix bug in wxSTC for wxPython < 2.3.3. - if charAfter < 0: - charAfter = 32 # Mimic a space. - #*** styleAfter = self.GetStyleAt(caretPos) if charAfter and chr(charAfter) in '[]{}()' \ - and styleAfter == wxSTC_P_OPERATOR: + and styleAfter == stc.wxSTC_P_OPERATOR: braceAtCaret = caretPos if braceAtCaret >= 0: @@ -353,36 +459,42 @@ class Shell(wxStyledTextCtrl): def OnChar(self, event): """Keypress event handler. + + Only receives an event if OnKeyDown calls event.Skip() for the + corresponding event.""" - Only receives an event if OnKeyDown calls event.Skip() for - the corresponding event.""" - - # Prevent modification of previously submitted commands/responses. + # Prevent modification of previously submitted + # commands/responses. if not self.CanEdit(): return key = event.KeyCode() currpos = self.GetCurrentPos() stoppos = self.promptPosEnd # Return (Enter) needs to be ignored in this handler. - if key == WXK_RETURN: + if key == wx.WXK_RETURN: pass elif key in self.autoCompleteKeys: # Usually the dot (period) key activates auto completion. - # Get the command between the prompt and the cursor. - # Add the autocomplete character to the end of the command. + # Get the command between the prompt and the cursor. Add + # the autocomplete character to the end of the command. + if self.AutoCompActive(): + self.AutoCompCancel() command = self.GetTextRange(stoppos, currpos) + chr(key) self.write(chr(key)) - if self.autoComplete: self.autoCompleteShow(command) + if self.autoComplete: + self.autoCompleteShow(command) elif key == ord('('): - # The left paren activates a call tip and cancels - # an active auto completion. - if self.AutoCompActive(): self.AutoCompCancel() - # Get the command between the prompt and the cursor. - # Add the '(' to the end of the command. + # The left paren activates a call tip and cancels an + # active auto completion. + if self.AutoCompActive(): + self.AutoCompCancel() + # Get the command between the prompt and the cursor. Add + # the '(' to the end of the command. self.ReplaceSelection('') command = self.GetTextRange(stoppos, currpos) + '(' self.write('(') - if self.autoCallTip: self.autoCallTipShow(command) + if self.autoCallTip: + self.autoCallTipShow(command) else: # Allow the normal event handling to take place. event.Skip() @@ -390,53 +502,69 @@ class Shell(wxStyledTextCtrl): def OnKeyDown(self, event): """Key down event handler.""" - # Prevent modification of previously submitted commands/responses. key = event.KeyCode() + # If the auto-complete window is up let it do its thing. + if self.AutoCompActive(): + event.Skip() + return + # Prevent modification of previously submitted + # commands/responses. controlDown = event.ControlDown() altDown = event.AltDown() shiftDown = event.ShiftDown() currpos = self.GetCurrentPos() endpos = self.GetTextLength() selecting = self.GetSelectionStart() != self.GetSelectionEnd() - # Return (Enter) is used to submit a command to the interpreter. - if not controlDown and key == WXK_RETURN: - if self.AutoCompActive(): self.AutoCompCancel() - if self.CallTipActive(): self.CallTipCancel() + # Return (Enter) is used to submit a command to the + # interpreter. + if not controlDown and key == wx.WXK_RETURN: + if self.CallTipActive(): + self.CallTipCancel() self.processLine() # Ctrl+Return (Cntrl+Enter) is used to insert a line break. - elif controlDown and key == WXK_RETURN: - if self.AutoCompActive(): self.AutoCompCancel() - if self.CallTipActive(): self.CallTipCancel() + elif controlDown and key == wx.WXK_RETURN: + if self.CallTipActive(): + self.CallTipCancel() if currpos == endpos: self.processLine() else: self.insertLineBreak() - # If the auto-complete window is up let it do its thing. - elif self.AutoCompActive(): - event.Skip() # Let Ctrl-Alt-* get handled normally. elif controlDown and altDown: event.Skip() # Clear the current, unexecuted command. - elif key == WXK_ESCAPE: + elif key == wx.WXK_ESCAPE: if self.CallTipActive(): event.Skip() else: self.clearCommand() + # Increase font size. + elif controlDown and key in (ord(']'),): + dispatcher.send(signal='FontIncrease') + # Decrease font size. + elif controlDown and key in (ord('['),): + dispatcher.send(signal='FontDecrease') + # Default font size. + elif controlDown and key in (ord('='),): + dispatcher.send(signal='FontDefault') # Cut to the clipboard. elif (controlDown and key in (ord('X'), ord('x'))) \ - or (shiftDown and key == WXK_DELETE): + or (shiftDown and key == wx.WXK_DELETE): self.Cut() # Copy to the clipboard. elif controlDown and not shiftDown \ - and key in (ord('C'), ord('c'), WXK_INSERT): + and key in (ord('C'), ord('c'), wx.WXK_INSERT): self.Copy() # Copy to the clipboard, including prompts. elif controlDown and shiftDown \ - and key in (ord('C'), ord('c'), WXK_INSERT): + and key in (ord('C'), ord('c'), wx.WXK_INSERT): self.CopyWithPrompts() + # Copy to the clipboard, including prefixed prompts. + elif altDown and not controlDown \ + and key in (ord('C'), ord('c'), wx.WXK_INSERT): + self.CopyWithPromptsPrefixed() # Home needs to be aware of the prompt. - elif key == WXK_HOME: + elif key == wx.WXK_HOME: home = self.promptPosEnd if currpos > home: self.SetCurrentPos(home) @@ -446,50 +574,48 @@ class Shell(wxStyledTextCtrl): else: event.Skip() # - # The following handlers modify text, so we need to see if there - # is a selection that includes text prior to the prompt. + # The following handlers modify text, so we need to see if + # there is a selection that includes text prior to the prompt. # # Don't modify a selection with text prior to the prompt. elif selecting and key not in NAVKEYS and not self.CanEdit(): pass # Paste from the clipboard. - elif (controlDown and not shiftDown \ - and key in (ord('V'), ord('v'))) \ - or (shiftDown and not controlDown and key == WXK_INSERT): + elif (controlDown and not shiftDown and key in (ord('V'), ord('v'))) \ + or (shiftDown and not controlDown and key == wx.WXK_INSERT): self.Paste() # Paste from the clipboard, run commands. - elif controlDown and shiftDown \ - and key in (ord('V'), ord('v')): + elif controlDown and shiftDown and key in (ord('V'), ord('v')): self.PasteAndRun() # Replace with the previous command from the history buffer. - elif (controlDown and key == WXK_UP) \ - or (altDown and key in (ord('P'), ord('p'))): + elif (controlDown and key == wx.WXK_UP) \ + or (altDown and key in (ord('P'), ord('p'))): self.OnHistoryReplace(step=+1) # Replace with the next command from the history buffer. - elif (controlDown and key == WXK_DOWN) \ - or (altDown and key in (ord('N'), ord('n'))): + elif (controlDown and key == wx.WXK_DOWN) \ + or (altDown and key in (ord('N'), ord('n'))): self.OnHistoryReplace(step=-1) # Insert the previous command from the history buffer. - elif (shiftDown and key == WXK_UP) and self.CanEdit(): + elif (shiftDown and key == wx.WXK_UP) and self.CanEdit(): self.OnHistoryInsert(step=+1) # Insert the next command from the history buffer. - elif (shiftDown and key == WXK_DOWN) and self.CanEdit(): + elif (shiftDown and key == wx.WXK_DOWN) and self.CanEdit(): self.OnHistoryInsert(step=-1) # Search up the history for the text in front of the cursor. - elif key == WXK_F8: + elif key == wx.WXK_F8: self.OnHistorySearch() # Don't backspace over the latest non-continuation prompt. - elif key == WXK_BACK: + elif key == wx.WXK_BACK: if selecting and self.CanEdit(): event.Skip() elif currpos > self.promptPosEnd: event.Skip() # Only allow these keys after the latest prompt. - elif key in (WXK_TAB, WXK_DELETE): + elif key in (wx.WXK_TAB, wx.WXK_DELETE): if self.CanEdit(): event.Skip() # Don't toggle between insert mode and overwrite mode. - elif key == WXK_INSERT: + elif key == wx.WXK_INSERT: pass # Don't allow line deletion. elif controlDown and key in (ord('L'), ord('l')): @@ -521,13 +647,14 @@ class Shell(wxStyledTextCtrl): def replaceFromHistory(self, step): """Replace selection with command from the history buffer.""" + ps2 = str(sys.ps2) self.ReplaceSelection('') newindex = self.historyIndex + step if -1 <= newindex <= len(self.history): self.historyIndex = newindex if 0 <= newindex <= len(self.history)-1: command = self.history[self.historyIndex] - command = command.replace('\n', os.linesep + sys.ps2) + command = command.replace('\n', os.linesep + ps2) self.ReplaceSelection(command) def OnHistoryInsert(self, step): @@ -551,8 +678,8 @@ class Shell(wxStyledTextCtrl): searchText = searchText[:-numCharsAfterCursor] if not searchText: return - # Search upwards from the current history position and loop back - # to the beginning if we don't find anything. + # Search upwards from the current history position and loop + # back to the beginning if we don't find anything. if (self.historyIndex <= -1) \ or (self.historyIndex >= len(self.history)-2): searchOrder = range(len(self.history)) @@ -562,7 +689,7 @@ class Shell(wxStyledTextCtrl): for i in searchOrder: command = self.history[i] if command[:len(searchText)] == searchText: - # Replace the current selection with the one we've found. + # Replace the current selection with the one we found. self.ReplaceSelection(command[len(searchText):]) endpos = self.GetCurrentPos() self.SetSelection(endpos, startpos) @@ -573,8 +700,8 @@ class Shell(wxStyledTextCtrl): def setStatusText(self, text): """Display status information.""" - # This method will most likely be replaced by the enclosing app - # to do something more interesting, like write to a status bar. + # This method will likely be replaced by the enclosing app to + # do something more interesting, like write to a status bar. print text def insertLineBreak(self): @@ -587,24 +714,27 @@ class Shell(wxStyledTextCtrl): def processLine(self): """Process the line of text at which the user hit Enter.""" - # The user hit ENTER and we need to decide what to do. They could be - # sitting on any line in the shell. + # The user hit ENTER and we need to decide what to do. They + # could be sitting on any line in the shell. - thepos = self.GetCurrentPos() + thepos = self.GetCurrentPos() startpos = self.promptPosEnd endpos = self.GetTextLength() - # If they hit RETURN inside the current command, execute the command. + ps2 = str(sys.ps2) + # If they hit RETURN inside the current command, execute the + # command. if self.CanEdit(): self.SetCurrentPos(endpos) self.interp.more = 0 command = self.GetTextRange(startpos, endpos) - lines = command.split(os.linesep + sys.ps2) + lines = command.split(os.linesep + ps2) lines = [line.rstrip() for line in lines] command = '\n'.join(lines) if self.reader.isreading: if not command: - # Match the behavior of the standard Python shell when - # the user hits return without entering a value. + # Match the behavior of the standard Python shell + # when the user hits return without entering a + # value. command = '\n' self.reader.input = command self.write(os.linesep) @@ -626,8 +756,8 @@ class Shell(wxStyledTextCtrl): """Extract a multi-line command from the editor. The command may not necessarily be valid Python syntax.""" - # XXX Need to extract real prompts here. Need to keep track of the - # prompt every time a command is issued. + # XXX Need to extract real prompts here. Need to keep track of + # the prompt every time a command is issued. ps1 = str(sys.ps1) ps1size = len(ps1) ps2 = str(sys.ps2) @@ -650,9 +780,9 @@ class Shell(wxStyledTextCtrl): self.GotoLine(line) stoppos = self.GetCurrentPos() command = self.GetTextRange(startpos, stoppos) - command = command.replace(os.linesep + sys.ps2, '\n') + command = command.replace(os.linesep + ps2, '\n') command = command.rstrip() - command = command.replace('\n', os.linesep + sys.ps2) + command = command.replace('\n', os.linesep + ps2) else: command = '' if rstrip: @@ -665,7 +795,7 @@ class Shell(wxStyledTextCtrl): The command may not necessarily be valid Python syntax.""" if not text: text = self.GetCurLine()[0] - # Strip the prompt off the front of text leaving just the command. + # Strip the prompt off the front leaving just the command. command = self.lstripPrompt(text) if command == text: command = '' # Real commands have prompts. @@ -685,12 +815,14 @@ class Shell(wxStyledTextCtrl): elif text[:ps2size] == ps2: text = text[ps2size:] return text - + def push(self, command): """Send command to the interpreter for execution.""" self.write(os.linesep) - busy = wxBusyCursor() + busy = wx.wxBusyCursor() + self.waiting = True self.more = self.interp.push(command) + self.waiting = False del busy if not self.more: self.addHistory(command.rstrip()) @@ -726,7 +858,7 @@ class Shell(wxStyledTextCtrl): return text def prompt(self): - """Display appropriate prompt for the context, either ps1, ps2 or ps3. + """Display proper prompt for the context: ps1, ps2 or ps3. If this is a continuation line, autoindent as necessary.""" isreading = self.reader.isreading @@ -765,13 +897,21 @@ class Shell(wxStyledTextCtrl): self.prompt() try: while not reader.input: - wxYield() + wx.wxYieldIfNeeded() input = reader.input finally: reader.input = '' reader.isreading = 0 + input = str(input) # In case of Unicode. return input + def readlines(self): + """Replacement for stdin.readlines().""" + lines = [] + while lines[-1:] != ['\n']: + lines.append(self.readline()) + return lines + def raw_input(self, prompt=''): """Return string based on user input.""" if prompt: @@ -780,10 +920,10 @@ class Shell(wxStyledTextCtrl): def ask(self, prompt='Please enter your response:'): """Get response from the user using a dialog box.""" - dialog = wxTextEntryDialog(None, prompt, \ - 'Input Dialog (Raw)', '') + dialog = wx.wxTextEntryDialog(None, prompt, + 'Input Dialog (Raw)', '') try: - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.wxID_OK: text = dialog.GetValue() return text finally: @@ -799,27 +939,29 @@ class Shell(wxStyledTextCtrl): self.ClearAll() def run(self, command, prompt=1, verbose=1): - """Execute command within the shell as if it was typed in directly. + """Execute command as if it was typed in directly. >>> shell.run('print "this"') >>> print "this" this - >>> + >>> """ # Go to the very bottom of the text. endpos = self.GetTextLength() - self.SetCurrentPos(endpos) + self.SetCurrentPos(endpos) command = command.rstrip() if prompt: self.prompt() if verbose: self.write(command) self.push(command) def runfile(self, filename): - """Execute all commands in file as if they were typed into the shell.""" + """Execute all commands in file as if they were typed into the + shell.""" file = open(filename) try: self.prompt() for command in file.readlines(): - if command[:6] == 'shell.': # Run shell methods silently. + if command[:6] == 'shell.': + # Run shell methods silently. self.run(command, prompt=0, verbose=0) else: self.run(command, prompt=0, verbose=1) @@ -828,18 +970,19 @@ class Shell(wxStyledTextCtrl): def autoCompleteShow(self, command): """Display auto-completion popup list.""" - list = self.interp.getAutoCompleteList(command, - includeMagic=self.autoCompleteIncludeMagic, - includeSingle=self.autoCompleteIncludeSingle, + list = self.interp.getAutoCompleteList(command, + includeMagic=self.autoCompleteIncludeMagic, + includeSingle=self.autoCompleteIncludeSingle, includeDouble=self.autoCompleteIncludeDouble) - if list: + if list and len(list) < 2000: options = ' '.join(list) offset = 0 self.AutoCompShow(offset, options) def autoCallTipShow(self, command): - """Display argument spec and docstring in a popup bubble thingie.""" - if self.CallTipActive: self.CallTipCancel() + """Display argument spec and docstring in a popup window.""" + if self.CallTipActive(): + self.CallTipCancel() (name, argspec, tip) = self.interp.getCallTip(command) if argspec: startpos = self.GetCurrentPos() @@ -850,8 +993,10 @@ class Shell(wxStyledTextCtrl): curpos = self.GetCurrentPos() tippos = curpos - (len(name) + 1) fallback = curpos - self.GetColumn(curpos) - # In case there isn't enough room, only go back to the fallback. + # In case there isn't enough room, only go back to the + # fallback. tippos = max(tippos, fallback) + dispatcher.send(signal='Shell.calltip', sender=self, calltip=tip) self.CallTipShow(tippos, tip) def writeOut(self, text): @@ -886,8 +1031,8 @@ class Shell(wxStyledTextCtrl): def CanCut(self): """Return true if text is selected and can be cut.""" if self.GetSelectionStart() != self.GetSelectionEnd() \ - and self.GetSelectionStart() >= self.promptPosEnd \ - and self.GetSelectionEnd() >= self.promptPosEnd: + and self.GetSelectionStart() >= self.promptPosEnd \ + and self.GetSelectionEnd() >= self.promptPosEnd: return 1 else: return 0 @@ -898,7 +1043,7 @@ class Shell(wxStyledTextCtrl): def CanPaste(self): """Return true if a paste should succeed.""" - if self.CanEdit() and wxStyledTextCtrl.CanPaste(self): + if self.CanEdit() and stc.wxStyledTextCtrl.CanPaste(self): return 1 else: return 0 @@ -907,7 +1052,7 @@ class Shell(wxStyledTextCtrl): """Return true if editing should succeed.""" if self.GetSelectionStart() != self.GetSelectionEnd(): if self.GetSelectionStart() >= self.promptPosEnd \ - and self.GetSelectionEnd() >= self.promptPosEnd: + and self.GetSelectionEnd() >= self.promptPosEnd: return 1 else: return 0 @@ -917,71 +1062,97 @@ class Shell(wxStyledTextCtrl): def Cut(self): """Remove selection and place it on the clipboard.""" if self.CanCut() and self.CanCopy(): - if self.AutoCompActive(): self.AutoCompCancel() - if self.CallTipActive: self.CallTipCancel() + if self.AutoCompActive(): + self.AutoCompCancel() + if self.CallTipActive(): + self.CallTipCancel() self.Copy() self.ReplaceSelection('') def Copy(self): """Copy selection and place it on the clipboard.""" if self.CanCopy(): + ps1 = str(sys.ps1) + ps2 = str(sys.ps2) command = self.GetSelectedText() - command = command.replace(os.linesep + sys.ps2, os.linesep) - command = command.replace(os.linesep + sys.ps1, os.linesep) + command = command.replace(os.linesep + ps2, os.linesep) + command = command.replace(os.linesep + ps1, os.linesep) command = self.lstripPrompt(text=command) - data = wxTextDataObject(command) - if wxTheClipboard.Open(): - wxTheClipboard.SetData(data) - wxTheClipboard.Close() + data = wx.wxTextDataObject(command) + self._clip(data) def CopyWithPrompts(self): """Copy selection, including prompts, and place it on the clipboard.""" if self.CanCopy(): command = self.GetSelectedText() - data = wxTextDataObject(command) - if wxTheClipboard.Open(): - wxTheClipboard.SetData(data) - wxTheClipboard.Close() + data = wx.wxTextDataObject(command) + self._clip(data) + + def CopyWithPromptsPrefixed(self): + """Copy selection, including prompts prefixed with four + spaces, and place it on the clipboard.""" + if self.CanCopy(): + command = self.GetSelectedText() + spaces = ' ' * 4 + command = spaces + command.replace(os.linesep, + os.linesep + spaces) + data = wx.wxTextDataObject(command) + self._clip(data) + + def _clip(self, data): + if wx.wxTheClipboard.Open(): + wx.wxTheClipboard.UsePrimarySelection(False) + wx.wxTheClipboard.SetData(data) + wx.wxTheClipboard.Flush() + wx.wxTheClipboard.Close() def Paste(self): """Replace selection with clipboard contents.""" - if self.CanPaste() and wxTheClipboard.Open(): - if wxTheClipboard.IsSupported(wxDataFormat(wxDF_TEXT)): - data = wxTextDataObject() - if wxTheClipboard.GetData(data): + if self.CanPaste() and wx.wxTheClipboard.Open(): + ps2 = str(sys.ps2) + if wx.wxTheClipboard.IsSupported(wx.wxDataFormat(wx.wxDF_TEXT)): + data = wx.wxTextDataObject() + if wx.wxTheClipboard.GetData(data): self.ReplaceSelection('') command = data.GetText() command = command.rstrip() command = self.fixLineEndings(command) command = self.lstripPrompt(text=command) - command = command.replace(os.linesep + sys.ps2, '\n') + command = command.replace(os.linesep + ps2, '\n') command = command.replace(os.linesep, '\n') - command = command.replace('\n', os.linesep + sys.ps2) + command = command.replace('\n', os.linesep + ps2) self.write(command) - wxTheClipboard.Close() + wx.wxTheClipboard.Close() def PasteAndRun(self): """Replace selection with clipboard contents, run commands.""" - if wxTheClipboard.Open(): - if wxTheClipboard.IsSupported(wxDataFormat(wxDF_TEXT)): - data = wxTextDataObject() - if wxTheClipboard.GetData(data): + if wx.wxTheClipboard.Open(): + ps1 = str(sys.ps1) + ps2 = str(sys.ps2) + if wx.wxTheClipboard.IsSupported(wx.wxDataFormat(wx.wxDF_TEXT)): + data = wx.wxTextDataObject() + if wx.wxTheClipboard.GetData(data): endpos = self.GetTextLength() self.SetCurrentPos(endpos) startpos = self.promptPosEnd self.SetSelection(startpos, endpos) self.ReplaceSelection('') text = data.GetText() - text = text.strip() + text = text.lstrip() text = self.fixLineEndings(text) - text = self.lstripPrompt(text=text) - text = text.replace(os.linesep + sys.ps1, '\n') - text = text.replace(os.linesep + sys.ps2, '\n') + text = self.lstripPrompt(text) + text = text.replace(os.linesep + ps1, '\n') + text = text.replace(os.linesep + ps2, '\n') text = text.replace(os.linesep, '\n') lines = text.split('\n') commands = [] command = '' for line in lines: + if line.strip() == ps2.strip(): + # If we are pasting from something like a + # web page that drops the trailing space + # from the ps2 prompt of a blank line. + line = '' if line.strip() != '' and line.lstrip() == line: # New command. if command: @@ -994,11 +1165,11 @@ class Shell(wxStyledTextCtrl): command += '\n' command += line commands.append(command) - for command in commands: - command = command.replace('\n', os.linesep + sys.ps2) + for command in commands: + command = command.replace('\n', os.linesep + ps2) self.write(command) self.processLine() - wxTheClipboard.Close() + wx.wxTheClipboard.Close() def wrap(self, wrap=1): """Sets whether text is word wrapped.""" @@ -1009,214 +1180,8 @@ class Shell(wxStyledTextCtrl): def zoom(self, points=0): """Set the zoom level. - - This number of points is added to the size of all fonts. - It may be positive to magnify or negative to reduce.""" + + This number of points is added to the size of all fonts. It + may be positive to magnify or negative to reduce.""" self.SetZoom(points) - -wxID_SELECTALL = NewId() # This *should* be defined by wxPython. -ID_AUTOCOMP = NewId() -ID_AUTOCOMP_SHOW = NewId() -ID_AUTOCOMP_INCLUDE_MAGIC = NewId() -ID_AUTOCOMP_INCLUDE_SINGLE = NewId() -ID_AUTOCOMP_INCLUDE_DOUBLE = NewId() -ID_CALLTIPS = NewId() -ID_CALLTIPS_SHOW = NewId() - - -class ShellMenu: - """Mixin class to add standard menu items.""" - - def createMenus(self): - m = self.fileMenu = wxMenu() - m.AppendSeparator() - m.Append(wxID_EXIT, 'E&xit', 'Exit PyCrust') - - m = self.editMenu = wxMenu() - m.Append(wxID_UNDO, '&Undo \tCtrl+Z', 'Undo the last action') - m.Append(wxID_REDO, '&Redo \tCtrl+Y', 'Redo the last undone action') - m.AppendSeparator() - m.Append(wxID_CUT, 'Cu&t \tCtrl+X', 'Cut the selection') - m.Append(wxID_COPY, '&Copy \tCtrl+C', 'Copy the selection') - m.Append(wxID_PASTE, '&Paste \tCtrl+V', 'Paste') - m.AppendSeparator() - m.Append(wxID_CLEAR, 'Cle&ar', 'Delete the selection') - m.Append(wxID_SELECTALL, 'Select A&ll', 'Select all text') - - m = self.autocompMenu = wxMenu() - m.Append(ID_AUTOCOMP_SHOW, 'Show Auto Completion', \ - 'Show auto completion during dot syntax', 1) - m.Append(ID_AUTOCOMP_INCLUDE_MAGIC, 'Include Magic Attributes', \ - 'Include attributes visible to __getattr__ and __setattr__', 1) - m.Append(ID_AUTOCOMP_INCLUDE_SINGLE, 'Include Single Underscores', \ - 'Include attibutes prefixed by a single underscore', 1) - m.Append(ID_AUTOCOMP_INCLUDE_DOUBLE, 'Include Double Underscores', \ - 'Include attibutes prefixed by a double underscore', 1) - - m = self.calltipsMenu = wxMenu() - m.Append(ID_CALLTIPS_SHOW, 'Show Call Tips', \ - 'Show call tips with argument specifications', 1) - - m = self.optionsMenu = wxMenu() - m.AppendMenu(ID_AUTOCOMP, '&Auto Completion', self.autocompMenu, \ - 'Auto Completion Options') - m.AppendMenu(ID_CALLTIPS, '&Call Tips', self.calltipsMenu, \ - 'Call Tip Options') - - m = self.helpMenu = wxMenu() - m.AppendSeparator() - m.Append(wxID_ABOUT, '&About...', 'About PyCrust') - - b = self.menuBar = wxMenuBar() - b.Append(self.fileMenu, '&File') - b.Append(self.editMenu, '&Edit') - b.Append(self.optionsMenu, '&Options') - b.Append(self.helpMenu, '&Help') - self.SetMenuBar(b) - - EVT_MENU(self, wxID_EXIT, self.OnExit) - EVT_MENU(self, wxID_UNDO, self.OnUndo) - EVT_MENU(self, wxID_REDO, self.OnRedo) - EVT_MENU(self, wxID_CUT, self.OnCut) - EVT_MENU(self, wxID_COPY, self.OnCopy) - EVT_MENU(self, wxID_PASTE, self.OnPaste) - EVT_MENU(self, wxID_CLEAR, self.OnClear) - EVT_MENU(self, wxID_SELECTALL, self.OnSelectAll) - EVT_MENU(self, wxID_ABOUT, self.OnAbout) - EVT_MENU(self, ID_AUTOCOMP_SHOW, \ - self.OnAutoCompleteShow) - EVT_MENU(self, ID_AUTOCOMP_INCLUDE_MAGIC, \ - self.OnAutoCompleteIncludeMagic) - EVT_MENU(self, ID_AUTOCOMP_INCLUDE_SINGLE, \ - self.OnAutoCompleteIncludeSingle) - EVT_MENU(self, ID_AUTOCOMP_INCLUDE_DOUBLE, \ - self.OnAutoCompleteIncludeDouble) - EVT_MENU(self, ID_CALLTIPS_SHOW, \ - self.OnCallTipsShow) - - EVT_UPDATE_UI(self, wxID_UNDO, self.OnUpdateMenu) - EVT_UPDATE_UI(self, wxID_REDO, self.OnUpdateMenu) - EVT_UPDATE_UI(self, wxID_CUT, self.OnUpdateMenu) - EVT_UPDATE_UI(self, wxID_COPY, self.OnUpdateMenu) - EVT_UPDATE_UI(self, wxID_PASTE, self.OnUpdateMenu) - EVT_UPDATE_UI(self, wxID_CLEAR, self.OnUpdateMenu) - EVT_UPDATE_UI(self, ID_AUTOCOMP_SHOW, self.OnUpdateMenu) - EVT_UPDATE_UI(self, ID_AUTOCOMP_INCLUDE_MAGIC, self.OnUpdateMenu) - EVT_UPDATE_UI(self, ID_AUTOCOMP_INCLUDE_SINGLE, self.OnUpdateMenu) - EVT_UPDATE_UI(self, ID_AUTOCOMP_INCLUDE_DOUBLE, self.OnUpdateMenu) - EVT_UPDATE_UI(self, ID_CALLTIPS_SHOW, self.OnUpdateMenu) - - def OnExit(self, event): - self.Close(true) - - def OnUndo(self, event): - self.shell.Undo() - - def OnRedo(self, event): - self.shell.Redo() - - def OnCut(self, event): - self.shell.Cut() - - def OnCopy(self, event): - self.shell.Copy() - - def OnPaste(self, event): - self.shell.Paste() - - def OnClear(self, event): - self.shell.Clear() - - def OnSelectAll(self, event): - self.shell.SelectAll() - - def OnAbout(self, event): - """Display an About PyCrust window.""" - import sys - title = 'About PyCrust' - text = 'PyCrust %s\n\n' % VERSION + \ - 'Yet another Python shell, only flakier.\n\n' + \ - 'Half-baked by Patrick K. O\'Brien,\n' + \ - 'the other half is still in the oven.\n\n' + \ - 'Shell Revision: %s\n' % self.shell.revision + \ - 'Interpreter Revision: %s\n\n' % self.shell.interp.revision + \ - 'Python Version: %s\n' % sys.version.split()[0] + \ - 'wxPython Version: %s\n' % wx.__version__ + \ - 'Platform: %s\n' % sys.platform - dialog = wxMessageDialog(self, text, title, wxOK | wxICON_INFORMATION) - dialog.ShowModal() - dialog.Destroy() - - def OnAutoCompleteShow(self, event): - self.shell.autoComplete = event.IsChecked() - - def OnAutoCompleteIncludeMagic(self, event): - self.shell.autoCompleteIncludeMagic = event.IsChecked() - - def OnAutoCompleteIncludeSingle(self, event): - self.shell.autoCompleteIncludeSingle = event.IsChecked() - - def OnAutoCompleteIncludeDouble(self, event): - self.shell.autoCompleteIncludeDouble = event.IsChecked() - - def OnCallTipsShow(self, event): - self.shell.autoCallTip = event.IsChecked() - - def OnUpdateMenu(self, event): - """Update menu items based on current status.""" - id = event.GetId() - if id == wxID_UNDO: - event.Enable(self.shell.CanUndo()) - elif id == wxID_REDO: - event.Enable(self.shell.CanRedo()) - elif id == wxID_CUT: - event.Enable(self.shell.CanCut()) - elif id == wxID_COPY: - event.Enable(self.shell.CanCopy()) - elif id == wxID_PASTE: - event.Enable(self.shell.CanPaste()) - elif id == wxID_CLEAR: - event.Enable(self.shell.CanCut()) - elif id == ID_AUTOCOMP_SHOW: - event.Check(self.shell.autoComplete) - elif id == ID_AUTOCOMP_INCLUDE_MAGIC: - event.Check(self.shell.autoCompleteIncludeMagic) - elif id == ID_AUTOCOMP_INCLUDE_SINGLE: - event.Check(self.shell.autoCompleteIncludeSingle) - elif id == ID_AUTOCOMP_INCLUDE_DOUBLE: - event.Check(self.shell.autoCompleteIncludeDouble) - elif id == ID_CALLTIPS_SHOW: - event.Check(self.shell.autoCallTip) - - -class ShellFrame(wxFrame, ShellMenu): - """Frame containing the PyCrust shell component.""" - - name = 'PyCrust Shell Frame' - revision = __revision__ - - def __init__(self, parent=None, id=-1, title='PyShell', \ - pos=wxDefaultPosition, size=wxDefaultSize, \ - style=wxDEFAULT_FRAME_STYLE, locals=None, \ - InterpClass=None, *args, **kwds): - """Create a PyCrust ShellFrame instance.""" - wxFrame.__init__(self, parent, id, title, pos, size, style) - intro = 'Welcome To PyCrust %s - The Flakiest Python Shell' % VERSION - intro += '\nSponsored by Orbtech - Your source for Python programming expertise.' - self.CreateStatusBar() - self.SetStatusText(intro.replace('\n', ', ')) - import images - self.SetIcon(images.getPyCrustIcon()) - self.shell = Shell(parent=self, id=-1, introText=intro, \ - locals=locals, InterpClass=InterpClass, \ - *args, **kwds) - # Override the shell so that status messages go to the status bar. - self.shell.setStatusText = self.SetStatusText - self.createMenus() - EVT_CLOSE(self, self.OnCloseWindow) - - def OnCloseWindow(self, event): - self.shell.destroy() - self.Destroy() - diff --git a/wxPython/wxPython/lib/PyCrust/shellmenu.py b/wxPython/wxPython/lib/PyCrust/shellmenu.py new file mode 100644 index 0000000000..1e3175a1f7 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/shellmenu.py @@ -0,0 +1,226 @@ +"""Shell menu mixin shared by shell and crust.""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + +from wxPython import wx +import sys +from version import VERSION + +try: + True +except NameError: + True = 1==1 + False = 1==0 + +ID_AUTOCOMP = wx.wxNewId() +ID_AUTOCOMP_SHOW = wx.wxNewId() +ID_AUTOCOMP_INCLUDE_MAGIC = wx.wxNewId() +ID_AUTOCOMP_INCLUDE_SINGLE = wx.wxNewId() +ID_AUTOCOMP_INCLUDE_DOUBLE = wx.wxNewId() +ID_CALLTIPS = wx.wxNewId() +ID_CALLTIPS_SHOW = wx.wxNewId() +ID_COPY_PLUS = wx.wxNewId() +ID_PASTE_PLUS = wx.wxNewId() +ID_WRAP = wx.wxNewId() + + +class ShellMenu: + """Mixin class to add standard menu items.""" + + def createMenus(self): + m = self.fileMenu = wx.wxMenu() + m.AppendSeparator() + m.Append(wx.wxID_EXIT, 'E&xit', 'Exit PyCrust') + + m = self.editMenu = wx.wxMenu() + m.Append(wx.wxID_UNDO, '&Undo \tCtrl+Z', + 'Undo the last action') + m.Append(wx.wxID_REDO, '&Redo \tCtrl+Y', + 'Redo the last undone action') + m.AppendSeparator() + m.Append(wx.wxID_CUT, 'Cu&t \tCtrl+X', + 'Cut the selection') + m.Append(wx.wxID_COPY, '&Copy \tCtrl+C', + 'Copy the selection - removing prompts') + m.Append(ID_COPY_PLUS, 'Cop&y Plus \tCtrl+Shift+C', + 'Copy the selection - retaining prompts') + m.Append(wx.wxID_PASTE, '&Paste \tCtrl+V', 'Paste') + m.Append(ID_PASTE_PLUS, 'Past&e Plus \tCtrl+Shift+V', + 'Paste and run commands') + m.AppendSeparator() + m.Append(wx.wxID_CLEAR, 'Cle&ar', + 'Delete the selection') + m.Append(wx.wxID_SELECTALL, 'Select A&ll \tCtrl+A', + 'Select all text') + + m = self.autocompMenu = wx.wxMenu() + m.Append(ID_AUTOCOMP_SHOW, 'Show Auto Completion', + 'Show auto completion during dot syntax', 1) + m.Append(ID_AUTOCOMP_INCLUDE_MAGIC, 'Include Magic Attributes', + 'Include attributes visible to __getattr__ and __setattr__', + 1) + m.Append(ID_AUTOCOMP_INCLUDE_SINGLE, 'Include Single Underscores', + 'Include attibutes prefixed by a single underscore', 1) + m.Append(ID_AUTOCOMP_INCLUDE_DOUBLE, 'Include Double Underscores', + 'Include attibutes prefixed by a double underscore', 1) + + m = self.calltipsMenu = wx.wxMenu() + m.Append(ID_CALLTIPS_SHOW, 'Show Call Tips', + 'Show call tips with argument specifications', 1) + + m = self.optionsMenu = wx.wxMenu() + m.AppendMenu(ID_AUTOCOMP, '&Auto Completion', self.autocompMenu, + 'Auto Completion Options') + m.AppendMenu(ID_CALLTIPS, '&Call Tips', self.calltipsMenu, + 'Call Tip Options') + m.Append(ID_WRAP, '&Wrap Lines', + 'Wrap lines at right edge', 1) + + m = self.helpMenu = wx.wxMenu() + m.AppendSeparator() + m.Append(wx.wxID_ABOUT, '&About...', 'About PyCrust') + + b = self.menuBar = wx.wxMenuBar() + b.Append(self.fileMenu, '&File') + b.Append(self.editMenu, '&Edit') + b.Append(self.optionsMenu, '&Options') + b.Append(self.helpMenu, '&Help') + self.SetMenuBar(b) + + wx.EVT_MENU(self, wx.wxID_EXIT, self.OnExit) + wx.EVT_MENU(self, wx.wxID_UNDO, self.OnUndo) + wx.EVT_MENU(self, wx.wxID_REDO, self.OnRedo) + wx.EVT_MENU(self, wx.wxID_CUT, self.OnCut) + wx.EVT_MENU(self, wx.wxID_COPY, self.OnCopy) + wx.EVT_MENU(self, ID_COPY_PLUS, self.OnCopyPlus) + wx.EVT_MENU(self, wx.wxID_PASTE, self.OnPaste) + wx.EVT_MENU(self, ID_PASTE_PLUS, self.OnPastePlus) + wx.EVT_MENU(self, wx.wxID_CLEAR, self.OnClear) + wx.EVT_MENU(self, wx.wxID_SELECTALL, self.OnSelectAll) + wx.EVT_MENU(self, wx.wxID_ABOUT, self.OnAbout) + wx.EVT_MENU(self, ID_AUTOCOMP_SHOW, + self.OnAutoCompleteShow) + wx.EVT_MENU(self, ID_AUTOCOMP_INCLUDE_MAGIC, + self.OnAutoCompleteIncludeMagic) + wx.EVT_MENU(self, ID_AUTOCOMP_INCLUDE_SINGLE, + self.OnAutoCompleteIncludeSingle) + wx.EVT_MENU(self, ID_AUTOCOMP_INCLUDE_DOUBLE, + self.OnAutoCompleteIncludeDouble) + wx.EVT_MENU(self, ID_CALLTIPS_SHOW, + self.OnCallTipsShow) + wx.EVT_MENU(self, ID_WRAP, self.OnWrap) + + wx.EVT_UPDATE_UI(self, wx.wxID_UNDO, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, wx.wxID_REDO, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, wx.wxID_CUT, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, wx.wxID_COPY, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_COPY_PLUS, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, wx.wxID_PASTE, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_PASTE_PLUS, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, wx.wxID_CLEAR, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_AUTOCOMP_SHOW, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_AUTOCOMP_INCLUDE_MAGIC, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_AUTOCOMP_INCLUDE_SINGLE, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_AUTOCOMP_INCLUDE_DOUBLE, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_CALLTIPS_SHOW, self.OnUpdateMenu) + wx.EVT_UPDATE_UI(self, ID_WRAP, self.OnUpdateMenu) + + def OnExit(self, event): + self.Close(True) + + def OnUndo(self, event): + self.shell.Undo() + + def OnRedo(self, event): + self.shell.Redo() + + def OnCut(self, event): + self.shell.Cut() + + def OnCopy(self, event): + self.shell.Copy() + + def OnCopyPlus(self, event): + self.shell.CopyWithPrompts() + + def OnPaste(self, event): + self.shell.Paste() + + def OnPastePlus(self, event): + self.shell.PasteAndRun() + + def OnClear(self, event): + self.shell.Clear() + + def OnSelectAll(self, event): + self.shell.SelectAll() + + def OnAbout(self, event): + """Display an About PyCrust window.""" + title = 'About PyCrust' + text = 'PyCrust %s\n\n' % VERSION + \ + 'Yet another Python shell, only flakier.\n\n' + \ + 'Half-baked by Patrick K. O\'Brien,\n' + \ + 'the other half is still in the oven.\n\n' + \ + 'Shell Revision: %s\n' % self.shell.revision + \ + 'Interpreter Revision: %s\n\n' % self.shell.interp.revision + \ + 'Python Version: %s\n' % sys.version.split()[0] + \ + 'wxPython Version: %s\n' % wx.__version__ + \ + 'Platform: %s\n' % sys.platform + dialog = wx.wxMessageDialog(self, text, title, + wx.wxOK | wx.wxICON_INFORMATION) + dialog.ShowModal() + dialog.Destroy() + + def OnAutoCompleteShow(self, event): + self.shell.autoComplete = event.IsChecked() + + def OnAutoCompleteIncludeMagic(self, event): + self.shell.autoCompleteIncludeMagic = event.IsChecked() + + def OnAutoCompleteIncludeSingle(self, event): + self.shell.autoCompleteIncludeSingle = event.IsChecked() + + def OnAutoCompleteIncludeDouble(self, event): + self.shell.autoCompleteIncludeDouble = event.IsChecked() + + def OnCallTipsShow(self, event): + self.shell.autoCallTip = event.IsChecked() + + def OnWrap(self, event): + self.shell.SetWrapMode(event.IsChecked()) + + def OnUpdateMenu(self, event): + """Update menu items based on current status.""" + id = event.GetId() + if id == wx.wxID_UNDO: + event.Enable(self.shell.CanUndo()) + elif id == wx.wxID_REDO: + event.Enable(self.shell.CanRedo()) + elif id == wx.wxID_CUT: + event.Enable(self.shell.CanCut()) + elif id == wx.wxID_COPY: + event.Enable(self.shell.CanCopy()) + elif id == ID_COPY_PLUS: + event.Enable(self.shell.CanCopy()) + elif id == wx.wxID_PASTE: + event.Enable(self.shell.CanPaste()) + elif id == ID_PASTE_PLUS: + event.Enable(self.shell.CanPaste()) + elif id == wx.wxID_CLEAR: + event.Enable(self.shell.CanCut()) + elif id == ID_AUTOCOMP_SHOW: + event.Check(self.shell.autoComplete) + elif id == ID_AUTOCOMP_INCLUDE_MAGIC: + event.Check(self.shell.autoCompleteIncludeMagic) + elif id == ID_AUTOCOMP_INCLUDE_SINGLE: + event.Check(self.shell.autoCompleteIncludeSingle) + elif id == ID_AUTOCOMP_INCLUDE_DOUBLE: + event.Check(self.shell.autoCompleteIncludeDouble) + elif id == ID_CALLTIPS_SHOW: + event.Check(self.shell.autoCallTip) + elif id == ID_WRAP: + event.Check(self.shell.GetWrapMode()) + diff --git a/wxPython/wxPython/lib/PyCrust/version.py b/wxPython/wxPython/lib/PyCrust/version.py index ef2b9d7b80..3950c4a402 100644 --- a/wxPython/wxPython/lib/PyCrust/version.py +++ b/wxPython/wxPython/lib/PyCrust/version.py @@ -1,10 +1,11 @@ -"""Provides an object representing the current "version" or "release" of -PyCrust as a whole. Individual classes, such as the shell, filling and -interpreter, each have a revision property based on the CVS Revision.""" +"""Provides an object representing the current 'version' or 'release' +of PyCrust as a whole. Individual classes, such as the shell, filling +and interpreter, each have a revision property based on the CVS +Revision.""" __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" __cvsid__ = "$Id$" __revision__ = "$Revision$"[11:-2] -VERSION = '0.7.2' +VERSION = '0.9' diff --git a/wxPython/wxPython/lib/PyCrust/wrap.py b/wxPython/wxPython/lib/PyCrust/wrap.py new file mode 100644 index 0000000000..cdfbfee359 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wrap.py @@ -0,0 +1,56 @@ + +"""Wrap is a command line utility that runs a wxPython program with +additional runtime-tools, such as PyCrust.""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + +import os +import sys +from wxPython import wx +from crust import CrustFrame as Frame + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +def wrap(app): + wx.wxInitAllImageHandlers() + frame = Frame() + frame.SetSize((750, 525)) + frame.Show(True) + frame.shell.interp.locals['app'] = app + app.MainLoop() + + +def main(argv): + if len(argv) < 2: + print "Please specify a module name." + raise SystemExit + name = argv[1] + if name[-3:] == '.py': + name = name[:-3] + module = __import__(name) + # Find the App class. + App = None + d = module.__dict__ + for item in d.keys(): + try: + if issubclass(d[item], wx.wxApp): + App = d[item] + except (NameError, TypeError): + pass + if App is None: + print "No App class found." + raise SystemExit + app = App() + wrap(app) + + +if __name__ == '__main__': + sys.path.insert(0, os.curdir) + main(sys.argv) diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Accelerators.py b/wxPython/wxPython/lib/PyCrust/wxd/Accelerators.py new file mode 100644 index 0000000000..2ab1469239 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Accelerators.py @@ -0,0 +1,58 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class AcceleratorEntry: + """""" + + def __init__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def GetCommand(self): + """""" + pass + + def GetFlags(self): + """""" + pass + + def GetKeyCode(self): + """""" + pass + + def Set(self): + """""" + pass + + +class AcceleratorTable(Object): + """""" + + def __init__(self): + """""" + pass + + def __del__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/App.py b/wxPython/wxPython/lib/PyCrust/wxd/App.py new file mode 100644 index 0000000000..8da71fecf6 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/App.py @@ -0,0 +1,358 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import EvtHandler +import Parameters as wx + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class PyApp(EvtHandler): + """Python Application base class. + + It is used to: + + - set and get application-wide properties; + + - implement the windowing system message or event loop; + + - initiate application processing via App.OnInit; + + - allow default processing of events not handled by other objects + in the application.""" + + def __init__(self): + """Create a PyApp instance.""" + pass + + def Dispatch(self): + """Dispatches the next event in the windowing system event + queue. + + This can be used for programming event loops.""" + pass + + def ExitMainLoop(self): + """Call this to explicitly exit the main message (event) loop. + + You should normally exit the main loop (and the application) + by deleting the top window, which wxPython does automatically.""" + pass + + def GetAppName(self): + """Return the application name.""" + pass + + def GetAssertMode(self): + """Return the current assertion mode.""" + pass + + def GetAuto3D(self): + """Returns True if 3D control mode is on, False otherwise. + Windows only.""" + pass + + def GetClassName(self): + """Return the class name of the application.""" + pass + + def GetExitOnFrameDelete(self): + """Returns True if the application will exit when the + top-level window is deleted, False otherwise.""" + pass + + def GetPrintMode(self): + """Deprecated.""" + pass + + def GetTopWindow(self): + """Return the top window. + + If the top window hasn't been set using App.SetTopWindow, + this method will find the first top-level window (frame or + dialog) and return that.""" + pass + + def GetUseBestVisual(self): + """Return True if the application will use the best visual on + systems that support different visuals, False otherwise.""" + pass + + def GetVendorName(self): + """Return the application's vendor name.""" + pass + + def Initialized(self): + """Return True if the application has been initialized + (i.e. if App.OnInit has returned successfully). This can be + useful for error message routines to determine which method of + output is best for the current state of the program (some + windowing systems may not like dialogs to pop up before the + main loop has been entered).""" + pass + + def MainLoop(self): + """Called by wxWindows on creation of the application. + Override this if you wish to provide your own + (environment-dependent) main loop. + + Return 0 under X, and the wParam of the WM_QUIT message under + Windows.""" + pass + + def OnAssert(self, file, line, cond, msg): + """Called when an assert failure occurs, i.e. the condition + specified in ASSERT macro evaluated to FALSE. It is only + called in debug mode (when __WXDEBUG__ is defined) as asserts + are not left in the release code at all. + + The base class version show the default assert failure dialog + box proposing to the user to stop the program, continue or + ignore all subsequent asserts. + + file is the name of the source file where the assert occured + + line is the line number in this file where the assert occured + + cond is the condition of the failed assert in string form + + msg is the message specified as argument to ASSERT_MSG or + FAIL_MSG, will be NULL if just ASSERT or FAIL was used""" + pass + + def OnExit(self): + """Provide this member function for any processing which needs + to be done as the application is about to exit. OnExit is + called after destroying all application windows and controls, + but before wxWindows cleanup.""" + pass + + def OnInit(self): + """This must be provided by the application, and will usually + create the application's main window, optionally calling + App.SetTopWindow. + + Return True to continue processing, False to exit the + application.""" + pass + + def OnInitGui(self): + """Called just after the platform's GUI has been initialized, + but before the App.OnInit() gets called. Rarely needed in + practice. Unlike App.OnInit(), does not need to return + True/False.""" + pass + + def Pending(self): + """Return True if unprocessed events are in the window system + event queue.""" + pass + + def ProcessIdle(self): + """Sends the EVT_IDLE event and is called inside the MainLoop. + + You only need this if you implement your own main loop.""" + pass + + def SetAppName(self, name): + """Set the name of the application.""" + pass + + def SetAssertMode(self, mode): + """Lets you control how C++ assertions are processed. + + Valid modes are: PYAPP_ASSERT_SUPPRESS, + PYAPP_ASSERT_EXCEPTION, and PYAPP_ASSERT_DIALOG. Using + _SUPPRESS will give you behavior like the old final builds and + the assert will be ignored, _EXCEPTION is the new default + described above, and _DIALOG is like the default in 2.3.3.1 + and prior hybrid builds. You can also combine _EXCEPTION and + _DIALOG if you wish, although I don't know why you would.""" + pass + + def SetAuto3D(self, auto3D): + """Switches automatic 3D controls on or off. Windows only. + + If auto3D is True, all controls will be created with 3D + appearances unless overridden for a control or dialog. The + default is True.""" + pass + + def SetClassName(self, name): + """Set the class name of the application.""" + pass + + def SetExitOnFrameDelete(self, flag): + """If flag is True (the default), the application will exit + when the top-level frame is deleted. If False, the + application will continue to run.""" + pass + + def SetPrintMode(self, mode): + """Deprecated.""" + pass + + def SetTopWindow(self, window): + """Set the 'top' window. + + You can call this from within App.OnInit to let wxWindows + know which is the main window. You don't have to set the top + window; it is only a convenience so that (for example) certain + dialogs without parents can use a specific window as the top + window. If no top window is specified by the application, + wxWindows just uses the first frame or dialog in its top-level + window list, when it needs to use the top window.""" + pass + + def SetUseBestVisual(self, flag): + """Allows the programmer to specify whether the application + will use the best visual on systems that support several + visual on the same display. This is typically the case under + Solaris and IRIX, where the default visual is only 8-bit + whereas certain applications are supposed to run in TrueColour + mode. + + Note that this function has to be called in the constructor of + the App instance and won't have any effect when called later + on. + + This function currently only has effect under GTK.""" + pass + + def SetVendorName(self, name): + """Sets the name of application's vendor. The name will be + used in registry access.""" + pass + + def Yield(self, onlyIfNeeded=False): + """Yields control to pending messages in the windowing system. + This can be useful, for example, when a time-consuming process + writes to a text window. Without an occasional yield, the + text window will not be updated properly, and on systems with + cooperative multitasking, such as Windows 3.1 other processes + will not respond. + + Caution should be exercised, however, since yielding may allow + the user to perform actions which are not compatible with the + current task. Disabling menu items or whole menus during + processing can avoid unwanted reentrance of code: see + wx.SafeYield for a better function. + + Calling Yield() recursively is normally an error and an assert + failure is raised in debug build if such situation is + detected. However if the the onlyIfNeeded parameter is True, + the method will just silently return False instead.""" + pass + + +from wxPython.wx import wxPlatform +_redirect = (wxPlatform == '__WXMSW__' or wxPlatform == '__WXMAC__') +del wxPlatform + + +class App(PyApp): + """The main application class. + + Inherit from this class and implement an OnInit method that + creates a frame and then calls self.SetTopWindow(frame).""" + + def __init__(self, redirect=_redirect, filename=None, useBestVisual=False): + """Create an App instance. + + redirect defaults to True on Windows and Mac. If redirect is + True, stdio goes to an output window or a file if filename is + not None.""" + pass + + +del _redirect + + +class PyOnDemandOutputWindow: + """Used by App to display stdout and stderr messages if app is + created using App(redirect=True). Mostly useful on Windows or + Mac where apps aren't always launched from the command line.""" + pass + + +class PySimpleApp(App): + """Use instead of App for simple apps with a simple frame or + dialog, particularly for testing.""" + + def __init__(self, flag=0): + """Create a PySimpleApp instance. + + flag is the same as App's redirect parameter to redirect stdio.""" + pass + + def OnInit(self): + """Automatically does a wx.InitAllImageHandlers().""" + pass + + +class PyWidgetTester(App): + """Use instead of App for testing widgets. Provides a frame + containing an instance of a widget. + + Create a PyWidgetTester instance with the desired size for the + frame, then create the widget and show the frame using SetWidget.""" + + def __init__(self, size=(250, 100)): + """Create a PyWidgetTester instance, with no stdio redirection. + + size is for the frame to hold the widget.""" + pass + + def OnInit(self): + """Creates a frame that will hold the widget to be tested.""" + pass + + def SetWidget(self, widgetClass, *args): + """Create a widgetClass instance using the supplied args and + with a frame as parent, then show the frame.""" + pass + + +class SingleInstanceChecker: + """Allows one to check that only a single instance of a program is + running. To do it, you should create an object of this class. As + long as this object is alive, calls to IsAnotherRunning() from + other processes will return True. + + As the object should have the life span as big as possible, it + makes sense to create it either as a global or in App.OnInit().""" + + def __init__(self, name, path=wx.EmptyString): + """Create a SingleInstanceChecker instance. + + name should be as unique as possible. It is used as the mutex + name under Win32 and the lock file name under Unix. + App.GetAppName() and wx.GetUserId() are commonly used. + + path is optional and is ignored under Win32 and used as the + directory to create the lock file in under Unix (default is + wx.GetHomeDir()).""" + pass + + def Create(self, name, path=wx.EmptyString): + """Create a SingleInstanceChecker instance.""" + pass + + def IsAnotherRunning(self): + """Return True if another copy of this program is already running.""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Base.py b/wxPython/wxPython/lib/PyCrust/wxd/Base.py new file mode 100644 index 0000000000..fd5c706bbb --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Base.py @@ -0,0 +1,206 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +class Object: + """Base class for all other wxPython classes.""" + + def __init__(self): + """Create a Object instance.""" + pass + + def Destroy(self): + """Destroy the Object instance.""" + pass + + def GetClassName(self): + """Return the name of the class.""" + pass + + +class EvtHandler(Object): + """Base class that can handle events from the windowing system. + + If the handler is part of a chain, the destructor will unlink + itself and restore the previous and next handlers so that they + point to each other.""" + + def __init__(self): + """Create a EvtHandler instance.""" + pass + + def AddPendingEvent(self, event): + """Post an event to be processed later. + + event is an Event instance to add to process queue. + + The difference between sending an event (using the + ProcessEvent method) and posting it is that in the first case + the event is processed before the function returns, while in + the second case, the function returns immediately and the + event will be processed sometime later (usually during the + next event loop iteration). + + A copy of event is made by the function, so the original can + be deleted as soon as function returns (it is common that the + original is created on the stack). This requires that the + Event::Clone method be implemented by event so that it can + be duplicated and stored until it gets processed. + + This is also the method to call for inter-thread + communication. It will post events safely between different + threads which means that this method is thread-safe by using + critical sections where needed. In a multi-threaded program, + you often need to inform the main GUI thread about the status + of other working threads and such notification should be done + using this method. + + This method automatically wakes up idle handling if the + underlying window system is currently idle and thus would not + send any idle events. (Waking up idle handling is done + calling WakeUpIdle.)""" + pass + + def Connect(self, id, lastId, eventType, func): + """Connects the given function dynamically with the event + handler, id and event type. This is an alternative to the use + of static event tables. + + id is the identifier (or first of the identifier range) to be + associated with the event handler function. + + lastId is the second part of the identifier range to be + associated with the event handler function. + + eventType is the event type to be associated with this event + handler. + + function is the event handler function. + + userData is data to be associated with the event table entry.""" + pass + + def Disconnect(self, id, lastId=-1, eventType=wx.EVT_NULL): + """Disconnects the given function dynamically from the event + handler, using the specified parameters as search criteria and + returning True if a matching function has been found and + removed. This method can only disconnect functions which have + been added using the EvtHandler.Connect method. There is no + way to disconnect functions connected using the (static) event + tables. + + id is the identifier (or first of the identifier range) to be + associated with the event handler function. + + lastId is the second part of the identifier range to be + associated with the event handler function. + + eventType is the event type to be associated with this event + handler. + + function is the event handler function. + + userData is data to be associated with the event table entry.""" + pass + + def GetEvtHandlerEnabled(self): + """Return True if the event handler is enabled, False + otherwise.""" + pass + + def GetNextHandler(self): + """Return the next handler in the chain.""" + pass + + def GetPreviousHandler(self): + """Return the previous handler in the chain.""" + pass + + def ProcessEvent(self, event): + """Processes an event, searching event tables and calling zero + or more suitable event handler function(s). Return True if a + suitable event handler function was found and executed, and + the function did not call Event.Skip(). + + event is an Event to process. + + Normally, your application would not call this function: it is + called in the wxPython implementation to dispatch incoming + user interface events to the framework (and application). + + However, you might need to call it if implementing new + functionality (such as a new control) where you define new + event types, as opposed to allowing the user to override + virtual functions. + + An instance where you might actually override the ProcessEvent + function is where you want to direct event processing to event + handlers not normally noticed by wxWindows. For example, in + the document/view architecture, documents and views are + potential event handlers. When an event reaches a frame, + ProcessEvent will need to be called on the associated document + and view in case event handler functions are associated with + these objects. The property classes library (Property) also + overrides ProcessEvent for similar reasons. + + The normal order of event table searching is as follows: + + 1. If the object is disabled (via a call to + EvtHandler.SetEvtHandlerEnabled) the function skips to step + (6). + + 2. If the object is a Window, ProcessEvent is recursively + called on the window's Validator. If this returns TRUE, the + function exits. + + 3. SearchEventTable is called for this event handler. If this + fails, the base class table is tried, and so on until no more + tables exist or an appropriate function was found, in which + case the function exits. + + 4. The search is applied down the entire chain of event + handlers (usually the chain has a length of one). If this + succeeds, the function exits. + + 5. If the object is a Window and the event is a + CommandEvent, ProcessEvent is recursively applied to the + parent window's event handler. If this returns TRUE, the + function exits. + + 6. Finally, ProcessEvent is called on the App object. + + See also: + + EvtHandler::SearchEventTable""" + pass + + def SetEvtHandlerEnabled(self, enabled): + """Enable or disable the event handler. + + You can use this function to avoid having to remove the event + handler from the chain, for example when implementing a dialog + editor and changing from edit to test mode.""" + pass + + def SetNextHandler(self, handler): + """Set the pointer to the next handler.""" + pass + + def SetPreviousHandler(self, handler): + """Set the pointer to the previous handler.""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/ClipDragDrop.py b/wxPython/wxPython/lib/PyCrust/wxd/ClipDragDrop.py new file mode 100644 index 0000000000..cae61264a2 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/ClipDragDrop.py @@ -0,0 +1,485 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class Clipboard(Object): + """""" + + def AddData(self): + """""" + pass + + def Clear(self): + """""" + pass + + def Close(self): + """""" + pass + + def Flush(self): + """""" + pass + + def GetData(self): + """""" + pass + + def IsOpened(self): + """""" + pass + + def IsSupported(self): + """""" + pass + + def Open(self): + """""" + pass + + def SetData(self): + """""" + pass + + def UsePrimarySelection(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DataFormat: + """""" + + def GetId(self): + """""" + pass + + def GetType(self): + """""" + pass + + def SetId(self): + """""" + pass + + def SetType(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DataObject: + """""" + + def GetAllFormats(self): + """""" + pass + + def GetDataHere(self): + """""" + pass + + def GetDataSize(self): + """""" + pass + + def GetFormatCount(self): + """""" + pass + + def GetPreferredFormat(self): + """""" + pass + + def IsSupportedFormat(self): + """""" + pass + + def SetData(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DataObjectComposite(DataObject): + """""" + + def Add(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DataObjectSimple(DataObject): + """""" + + def GetFormat(self): + """""" + pass + + def SetFormat(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PyDataObjectSimple(DataObjectSimple): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class BitmapDataObject(DataObjectSimple): + """""" + + def GetBitmap(self): + """""" + pass + + def SetBitmap(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PyBitmapDataObject(BitmapDataObject): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class CustomDataObject(DataObjectSimple): + """""" + + def GetData(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def SetData(self): + """""" + pass + + def TakeData(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DragImage(Object): + """""" + + def BeginDrag(self): + """""" + pass + + def BeginDrag2(self): + """""" + pass + + def EndDrag(self): + """""" + pass + + def GetImageRect(self): + """""" + pass + + def Hide(self): + """""" + pass + + def Move(self): + """""" + pass + + def RedrawImage(self): + """""" + pass + + def SetBackingBitmap(self): + """""" + pass + + def Show(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DropSource: + """""" + + def DoDragDrop(self): + """""" + pass + + def GetDataObject(self): + """""" + pass + + def SetCursor(self): + """""" + pass + + def SetData(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_GiveFeedback(self): + """""" + pass + + +class DropTarget: + """""" + + def __init__(self): + """""" + pass + + +class PyDropTarget(DropTarget): + """""" + + def GetData(self): + """""" + pass + + def GetDataObject(self): + """""" + pass + + def SetDataObject(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_OnDragOver(self): + """""" + pass + + def base_OnDrop(self): + """""" + pass + + def base_OnEnter(self): + """""" + pass + + def base_OnLeave(self): + """""" + pass + + +class FileDataObject(DataObjectSimple): + """""" + + def GetFilenames(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FileDropTarget(PyDropTarget): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_OnData(self): + """""" + pass + + def base_OnDragOver(self): + """""" + pass + + def base_OnDrop(self): + """""" + pass + + def base_OnEnter(self): + """""" + pass + + def base_OnLeave(self): + """""" + pass + + +class TextDataObject(DataObjectSimple): + """""" + + def GetText(self): + """""" + pass + + def GetTextLength(self): + """""" + pass + + def SetText(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PyTextDataObject(TextDataObject): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class TextDropTarget(PyDropTarget): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_OnData(self): + """""" + pass + + def base_OnDragOver(self): + """""" + pass + + def base_OnDrop(self): + """""" + pass + + def base_OnEnter(self): + """""" + pass + + def base_OnLeave(self): + """""" + pass + + +class URLDataObject(DataObjectComposite): + """""" + + def GetURL(self): + """""" + pass + + def SetURL(self): + """""" + pass + + def __init__(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Config.py b/wxPython/wxPython/lib/PyCrust/wxd/Config.py new file mode 100644 index 0000000000..1ef8602f05 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Config.py @@ -0,0 +1,199 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +class ConfigBase: + """""" + + def DeleteAll(self): + """""" + pass + + def DeleteEntry(self): + """""" + pass + + def DeleteGroup(self): + """""" + pass + + def Exists(self): + """""" + pass + + def ExpandEnvVars(self): + """""" + pass + + def Flush(self): + """""" + pass + + def GetAppName(self): + """""" + pass + + def GetEntryType(self): + """""" + pass + + def GetFirstEntry(self): + """""" + pass + + def GetFirstGroup(self): + """""" + pass + + def GetNextEntry(self): + """""" + pass + + def GetNextGroup(self): + """""" + pass + + def GetNumberOfEntries(self): + """""" + pass + + def GetNumberOfGroups(self): + """""" + pass + + def GetPath(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetVendorName(self): + """""" + pass + + def HasEntry(self): + """""" + pass + + def HasGroup(self): + """""" + pass + + def IsExpandingEnvVars(self): + """""" + pass + + def IsRecordingDefaults(self): + """""" + pass + + def Read(self): + """""" + pass + + def ReadBool(self): + """""" + pass + + def ReadFloat(self): + """""" + pass + + def ReadInt(self): + """""" + pass + + def RenameEntry(self): + """""" + pass + + def RenameGroup(self): + """""" + pass + + def SetAppName(self): + """""" + pass + + def SetExpandEnvVars(self): + """""" + pass + + def SetPath(self): + """""" + pass + + def SetRecordDefaults(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def SetVendorName(self): + """""" + pass + + def Write(self): + """""" + pass + + def WriteBool(self): + """""" + pass + + def WriteFloat(self): + """""" + pass + + def WriteInt(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Config(ConfigBase): + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FileConfig(ConfigBase): + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Controls.py b/wxPython/wxPython/lib/PyCrust/wxd/Controls.py new file mode 100644 index 0000000000..1d1fad0210 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Controls.py @@ -0,0 +1,1846 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx +from Window import Window + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class Control(Window): + """Base class for a control or 'widget'. + + A control is generally a small window which processes user input + and/or displays one or more item of data.""" + + def __init__(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, + validator=wx.DefaultValidator, name='control'): + """Create a Control instance.""" + pass + + def Command(self, event): + """Simulates the effect of the user issuing a command to the + item. See CommandEvent.""" + pass + + def Create(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, + validator=wx.DefaultValidator, name='control'): + """Create a Control instance.""" + pass + + def GetLabel(self): + """Return the string label for the control.""" + pass + + def SetLabel(self, label): + """Set the string label for the control.""" + pass + + +class PyControl(Control): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_AcceptsFocus(self): + """""" + pass + + def base_AcceptsFocusFromKeyboard(self): + """""" + pass + + def base_AddChild(self): + """""" + pass + + def base_DoGetBestSize(self): + """""" + pass + + def base_DoGetClientSize(self): + """""" + pass + + def base_DoGetPosition(self): + """""" + pass + + def base_DoGetSize(self): + """""" + pass + + def base_DoGetVirtualSize(self): + """""" + pass + + def base_DoMoveWindow(self): + """""" + pass + + def base_DoSetClientSize(self): + """""" + pass + + def base_DoSetSize(self): + """""" + pass + + def base_DoSetVirtualSize(self): + """""" + pass + + def base_GetMaxSize(self): + """""" + pass + + def base_InitDialog(self): + """""" + pass + + def base_RemoveChild(self): + """""" + pass + + def base_TransferDataFromWindow(self): + """""" + pass + + def base_TransferDataToWindow(self): + """""" + pass + + def base_Validate(self): + """""" + pass + + +class ControlWithItems(Control): + """""" + + def Append(self): + """""" + pass + + def AppendItems(self): + """""" + pass + + def Delete(self): + """""" + pass + + def FindString(self): + """""" + pass + + def GetClientData(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def GetSelection(self): + """""" + pass + + def GetString(self): + """""" + pass + + def GetStringSelection(self): + """""" + pass + + def Number(self): + """""" + pass + + def Select(self): + """""" + pass + + def SetClientData(self): + """""" + pass + + def SetString(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Button(Control): + """A button is a control that contains a text string, and is one + of the most common elements of a GUI. It may be placed on a + dialog box or panel, or indeed almost any other window. + + Styles + ------ + + BU_LEFT: Left-justifies the label. WIN32 only. + + BU_TOP: Aligns the label to the top of the button. WIN32 only. + + BU_RIGHT: Right-justifies the bitmap label. WIN32 only. + + BU_BOTTOM: Aligns the label to the bottom of the button. WIN32 + only. + + BU_EXACTFIT: Creates the button as small as possible instead of + making it of the standard size (which is the default behaviour.) + + Events + ------ + + EVT_BUTTON(win,id,func): Sent when the button is clicked.""" + + def __init__(self, parent, id, label, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, + validator=wx.DefaultValidator, name='button'): + """Create and show a button. + + parent: Parent window. Must not be None. + id: Button identifier. A value of -1 indicates a default value. + label: The text to be displayed on the button. + pos: The button position on it's parent. + size: Button size. If the default size (-1, -1) is specified + then the button is sized appropriately for the text. + style: Window style. See Button. + validator: Window validator. + name: Window name.""" + pass + + def Create(self, parent, id, label, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, + validator=wx.DefaultValidator, name='button'): + """Create and show a button.""" + pass + + def SetBackgroundColour(self): + """""" + pass + + def SetDefault(self): + """Set the button to be the default item for the panel or + dialog box. + + Under Windows, only dialog box buttons respond to this + function. As normal under Windows and Motif, pressing return + causes the default button to be depressed when the return key + is pressed. See also Window.SetFocus which sets the keyboard + focus for windows and text panel items, and + Panel.SetDefaultItem.""" + pass + + def SetForegroundColour(self): + """""" + pass + + +class BitmapButton(Button): + """""" + + def Create(self): + """""" + pass + + def GetBitmapDisabled(self): + """""" + pass + + def GetBitmapFocus(self): + """""" + pass + + def GetBitmapLabel(self): + """""" + pass + + def GetBitmapSelected(self): + """""" + pass + + def GetMarginX(self): + """""" + pass + + def GetMarginY(self): + """""" + pass + + def SetBitmapDisabled(self): + """""" + pass + + def SetBitmapFocus(self): + """""" + pass + + def SetBitmapLabel(self): + """""" + pass + + def SetBitmapSelected(self): + """""" + pass + + def SetMargins(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class CheckBox(Control): + """""" + + def __init__(self): + """""" + pass + + def Create(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def IsChecked(self): + """""" + pass + + def SetValue(self): + """""" + pass + + +class Choice(ControlWithItems): + """""" + + def __init__(self): + """""" + pass + + def Clear(self): + """""" + pass + + def Create(self): + """""" + pass + + def GetColumns(self): + """""" + pass + + def Select(self): + """""" + pass + + def SetColumns(self): + """""" + pass + + def SetSelection(self): + """""" + pass + + def SetString(self): + """""" + pass + + def SetStringSelection(self): + """""" + pass + + +class Gauge(Control): + """""" + + def Create(self): + """""" + pass + + def GetBezelFace(self): + """""" + pass + + def GetRange(self): + """""" + pass + + def GetShadowWidth(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def SetBezelFace(self): + """""" + pass + + def SetRange(self): + """""" + pass + + def SetShadowWidth(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class GenericDirCtrl(Control): + """""" + + def Create(self): + """""" + pass + + def ExpandPath(self): + """""" + pass + + def GetDefaultPath(self): + """""" + pass + + def GetFilePath(self): + """""" + pass + + def GetFilter(self): + """""" + pass + + def GetFilterIndex(self): + """""" + pass + + def GetFilterListCtrl(self): + """""" + pass + + def GetPath(self): + """""" + pass + + def GetRootId(self): + """""" + pass + + def GetShowHidden(self): + """""" + pass + + def GetTreeCtrl(self): + """""" + pass + + def SetDefaultPath(self): + """""" + pass + + def SetFilter(self): + """""" + pass + + def SetFilterIndex(self): + """""" + pass + + def SetPath(self): + """""" + pass + + def ShowHidden(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ListBox(ControlWithItems): + """""" + + def Clear(self): + """""" + pass + + def Create(self): + """""" + pass + + def Deselect(self): + """""" + pass + + def GetSelections(self): + """""" + pass + + def InsertItems(self): + """""" + pass + + def IsSelected(self): + """""" + pass + + def Selected(self): + """""" + pass + + def Set(self): + """""" + pass + + def SetFirstItem(self): + """""" + pass + + def SetFirstItemStr(self): + """""" + pass + + def SetSelection(self): + """""" + pass + + def SetString(self): + """""" + pass + + def SetStringSelection(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class CheckListBox(ListBox): + """""" + + def __init__(self): + """""" + pass + + def Check(self): + """""" + pass + + def Create(self): + """""" + pass + + def GetItemHeight(self): + """""" + pass + + def HitTest(self): + """""" + pass + + def HitTestXY(self): + """""" + pass + + def InsertItems(self): + """""" + pass + + def IsChecked(self): + """""" + pass + + +class ListCtrl(Control): + """""" + + def Append(self): + """""" + pass + + def Arrange(self): + """""" + pass + + def AssignImageList(self): + """""" + pass + + def ClearAll(self): + """""" + pass + + def ClearColumnImage(self): + """""" + pass + + def Create(self): + """""" + pass + + def DeleteAllColumns(self): + """""" + pass + + def DeleteAllItems(self): + """""" + pass + + def DeleteColumn(self): + """""" + pass + + def DeleteItem(self): + """""" + pass + + def EnsureVisible(self): + """""" + pass + + def FindItem(self): + """""" + pass + + def FindItemAtPos(self): + """""" + pass + + def FindItemData(self): + """""" + pass + + def Focus(self): + """""" + pass + + def GetColumn(self): + """""" + pass + + def GetColumnCount(self): + """""" + pass + + def GetColumnWidth(self): + """""" + pass + + def GetCountPerPage(self): + """""" + pass + + def GetFirstSelected(self): + """""" + pass + + def GetFocusedItem(self): + """""" + pass + + def GetImageList(self): + """""" + pass + + def GetItem(self): + """""" + pass + + def GetItemBackgroundColour(self): + """""" + pass + + def GetItemCount(self): + """""" + pass + + def GetItemData(self): + """""" + pass + + def GetItemPosition(self): + """""" + pass + + def GetItemRect(self): + """""" + pass + + def GetItemSpacing(self): + """""" + pass + + def GetItemState(self): + """""" + pass + + def GetItemText(self): + """""" + pass + + def GetItemTextColour(self): + """""" + pass + + def GetMainWindow(self): + """""" + pass + + def GetNextItem(self): + """""" + pass + + def GetNextSelected(self): + """""" + pass + + def GetSelectedItemCount(self): + """""" + pass + + def GetTextColour(self): + """""" + pass + + def GetTopItem(self): + """""" + pass + + def HitTest(self): + """""" + pass + + def InsertColumn(self): + """""" + pass + + def InsertColumnInfo(self): + """""" + pass + + def InsertImageItem(self): + """""" + pass + + def InsertImageStringItem(self): + """""" + pass + + def InsertItem(self): + """""" + pass + + def InsertStringItem(self): + """""" + pass + + def IsSelected(self): + """""" + pass + + def IsVirtual(self): + """""" + pass + + def RefreshItem(self): + """""" + pass + + def RefreshItems(self): + """""" + pass + + def ScrollList(self): + """""" + pass + + def Select(self): + """""" + pass + + def SetBackgroundColour(self): + """""" + pass + + def SetColumn(self): + """""" + pass + + def SetColumnImage(self): + """""" + pass + + def SetColumnWidth(self): + """""" + pass + + def SetForegroundColour(self): + """""" + pass + + def SetImageList(self): + """""" + pass + + def SetItem(self): + """""" + pass + + def SetItemBackgroundColour(self): + """""" + pass + + def SetItemCount(self): + """""" + pass + + def SetItemData(self): + """""" + pass + + def SetItemImage(self): + """""" + pass + + def SetItemPosition(self): + """""" + pass + + def SetItemState(self): + """""" + pass + + def SetItemText(self): + """""" + pass + + def SetItemTextColour(self): + """""" + pass + + def SetSingleStyle(self): + """""" + pass + + def SetStringItem(self): + """""" + pass + + def SetTextColour(self): + """""" + pass + + def SetWindowStyleFlag(self): + """""" + pass + + def SortItems(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class ListItem(Object): + """""" + + def Clear(self): + """""" + pass + + def ClearAttributes(self): + """""" + pass + + def GetAlign(self): + """""" + pass + + def GetAttributes(self): + """""" + pass + + def GetBackgroundColour(self): + """""" + pass + + def GetColumn(self): + """""" + pass + + def GetData(self): + """""" + pass + + def GetFont(self): + """""" + pass + + def GetId(self): + """""" + pass + + def GetImage(self): + """""" + pass + + def GetMask(self): + """""" + pass + + def GetState(self): + """""" + pass + + def GetText(self): + """""" + pass + + def GetTextColour(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def HasAttributes(self): + """""" + pass + + def SetAlign(self): + """""" + pass + + def SetBackgroundColour(self): + """""" + pass + + def SetColumn(self): + """""" + pass + + def SetData(self): + """""" + pass + + def SetFont(self): + """""" + pass + + def SetId(self): + """""" + pass + + def SetImage(self): + """""" + pass + + def SetMask(self): + """""" + pass + + def SetState(self): + """""" + pass + + def SetStateMask(self): + """""" + pass + + def SetText(self): + """""" + pass + + def SetTextColour(self): + """""" + pass + + def SetWidth(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class ListItemAttr: + """""" + + def GetBackgroundColour(self): + """""" + pass + + def GetFont(self): + """""" + pass + + def GetTextColour(self): + """""" + pass + + def HasBackgroundColour(self): + """""" + pass + + def HasFont(self): + """""" + pass + + def HasTextColour(self): + """""" + pass + + def SetBackgroundColour(self): + """""" + pass + + def SetFont(self): + """""" + pass + + def SetTextColour(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ListView(ListCtrl): + """""" + + def ClearColumnImage(self): + """""" + pass + + def Create(self): + """""" + pass + + def Focus(self): + """""" + pass + + def GetFirstSelected(self): + """""" + pass + + def GetFocusedItem(self): + """""" + pass + + def GetNextSelected(self): + """""" + pass + + def IsSelected(self): + """""" + pass + + def Select(self): + """""" + pass + + def SetColumnImage(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Notebook(Control): + + def __init__(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, name=wx.PyNOTEBOOK_NAME): + """""" + pass + + def AddPage(self, pPage, strText, bSelect=False, imageId=-1): + """""" + pass + + def AdvanceSelection(self, bForward=True): + """""" + pass + + def AssignImageList(self, imageList) : + """""" + pass + + def Create(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, name=wx.PyNOTEBOOK_NAME): + """""" + pass + + def DeleteAllPages(self): + """""" + pass + + def DeletePage(self, nPage): + """""" + pass + + def GetImageList(self): + """""" + pass + + def GetPage(self, nPage): + """""" + pass + + def GetPageCount(self): + """""" + pass + + def GetPageImage(self, nPage): + """""" + pass + + def GetPageText(self, nPage): + """""" + pass + + def GetRowCount(self): + """""" + pass + + def GetSelection(self): + """""" + pass + + def InsertPage(self, nPage, pPage, strText, bSelect=False, imageId=-1): + """""" + pass + + def RemovePage(self, nPage): + """""" + pass + + def ResizeChildren(self): + """""" + pass + + def SetImageList(self, imageList): + """""" + pass + + def SetPadding(self, padding): + """""" + pass + + def SetPageImage(self, nPage, nImage): + """""" + pass + + def SetPageSize(self, size): + """""" + pass + + def SetPageText(self, nPage, strText): + """""" + pass + + def SetSelection(self, nPage): + """""" + pass + + +class RadioBox(Control): + """""" + + def Create(self): + """""" + pass + + def Enable(self): + """""" + pass + + def EnableItem(self): + """""" + pass + + def FindString(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def GetItemLabel(self): + """""" + pass + + def GetSelection(self): + """""" + pass + + def GetString(self): + """""" + pass + + def GetStringSelection(self): + """""" + pass + + def Number(self): + """""" + pass + + def SetItemLabel(self): + """""" + pass + + def SetSelection(self): + """""" + pass + + def SetStringSelection(self): + """""" + pass + + def Show(self): + """""" + pass + + def ShowItem(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class RadioButton(Control): + """""" + + def Create(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ScrollBar(Control): + """""" + + def Create(self): + """""" + pass + + def GetPageSize(self): + """""" + pass + + def GetRange(self): + """""" + pass + + def GetThumbLength(self): + """""" + pass + + def GetThumbPosition(self): + """""" + pass + + def GetThumbSize(self): + """""" + pass + + def IsVertical(self): + """""" + pass + + def SetScrollbar(self): + """""" + pass + + def SetThumbPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Slider(Control): + """""" + + def ClearSel(self): + """""" + pass + + def ClearTicks(self): + """""" + pass + + def Create(self): + """""" + pass + + def GetLineSize(self): + """""" + pass + + def GetMax(self): + """""" + pass + + def GetMin(self): + """""" + pass + + def GetPageSize(self): + """""" + pass + + def GetSelEnd(self): + """""" + pass + + def GetSelStart(self): + """""" + pass + + def GetThumbLength(self): + """""" + pass + + def GetTickFreq(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def SetLineSize(self): + """""" + pass + + def SetPageSize(self): + """""" + pass + + def SetRange(self): + """""" + pass + + def SetSelection(self): + """""" + pass + + def SetThumbLength(self): + """""" + pass + + def SetTick(self): + """""" + pass + + def SetTickFreq(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SpinButton(Control): + """""" + + def Create(self): + """""" + pass + + def GetMax(self): + """""" + pass + + def GetMin(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def SetRange(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SpinCtrl(SpinButton): + """""" + + def Create(self): + """""" + pass + + def GetMax(self): + """""" + pass + + def GetMin(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def SetRange(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class StaticBitmap(Control): + """""" + + def Create(self): + """""" + pass + + def GetBitmap(self): + """""" + pass + + def SetBitmap(self): + """""" + pass + + def SetIcon(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class StaticBox(Control): + """""" + + def Create(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class StaticLine(Control): + """""" + + def Create(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class StaticText(Control): + """""" + + def Create(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def SetLabel(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TextAttr: + """""" + + def GetBackgroundColour(self): + """""" + pass + + def GetFont(self): + """""" + pass + + def GetTextColour(self): + """""" + pass + + def HasBackgroundColour(self): + """""" + pass + + def HasFont(self): + """""" + pass + + def HasTextColour(self): + """""" + pass + + def IsDefault(self): + """""" + pass + + def SetBackgroundColour(self): + """""" + pass + + def SetFont(self): + """""" + pass + + def SetTextColour(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TextCtrl(Control): + """""" + + def AppendText(self): + """""" + pass + + def CanCopy(self): + """""" + pass + + def CanCut(self): + """""" + pass + + def CanPaste(self): + """""" + pass + + def CanRedo(self): + """""" + pass + + def CanUndo(self): + """""" + pass + + def Clear(self): + """""" + pass + + def Copy(self): + """""" + pass + + def Create(self): + """""" + pass + + def Cut(self): + """""" + pass + + def DiscardEdits(self): + """""" + pass + + def EmulateKeyPress(self): + """""" + pass + + def GetDefaultStyle(self): + """""" + pass + + def GetInsertionPoint(self): + """""" + pass + + def GetLastPosition(self): + """""" + pass + + def GetLineLength(self): + """""" + pass + + def GetLineText(self): + """""" + pass + + def GetNumberOfLines(self): + """""" + pass + + def GetRange(self): + """""" + pass + + def GetSelection(self): + """""" + pass + + def GetString(self): + """""" + pass + + def GetStringSelection(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def IsEditable(self): + """""" + pass + + def IsModified(self): + """""" + pass + + def IsMultiLine(self): + """""" + pass + + def IsSingleLine(self): + """""" + pass + + def LoadFile(self): + """""" + pass + + def Paste(self): + """""" + pass + + def PositionToXY(self): + """""" + pass + + def Redo(self): + """""" + pass + + def Remove(self): + """""" + pass + + def Replace(self): + """""" + pass + + def SaveFile(self): + """""" + pass + + def SelectAll(self): + """""" + pass + + def SetDefaultStyle(self): + """""" + pass + + def SetEditable(self): + """""" + pass + + def SetInsertionPoint(self): + """""" + pass + + def SetInsertionPointEnd(self): + """""" + pass + + def SetMaxLength(self): + """""" + pass + + def SetSelection(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def ShowPosition(self): + """""" + pass + + def Undo(self): + """""" + pass + + def WriteText(self): + """""" + pass + + def XYToPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + def write(self): + """""" + pass + + +class ToggleButton(Control): + """""" + + def Create(self): + """""" + pass + + def GetValue(self): + """""" + pass + + def SetLabel(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/DataStructures.py b/wxPython/wxPython/lib/PyCrust/wxd/DataStructures.py new file mode 100644 index 0000000000..59e533ea3c --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/DataStructures.py @@ -0,0 +1,485 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +class Point: + """""" + + def Set(self): + """""" + pass + + def __add__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __eq__(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __getitem__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __len__(self): + """""" + pass + + def __ne__(self): + """""" + pass + + def __nonzero__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + def __setitem__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def __sub__(self): + """""" + pass + + def asTuple(self): + """""" + pass + + +class Point2DDouble: + """""" + + def GetCrossProduct(self): + """""" + pass + + def GetDistance(self): + """""" + pass + + def GetDistanceSquare(self): + """""" + pass + + def GetDotProduct(self): + """""" + pass + + def GetFloor(self): + """""" + pass + + def GetRounded(self): + """""" + pass + + def GetVectorAngle(self): + """""" + pass + + def GetVectorLength(self): + """""" + pass + + def Normalize(self): + """""" + pass + + def SetPolarCoordinates(self): + """""" + pass + + def SetVectorAngle(self): + """""" + pass + + def SetVectorLength(self): + """""" + pass + + def __eq__(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __getitem__(self): + """""" + pass + + def __iadd__(self): + """""" + pass + + def __idiv__(self): + """""" + pass + + def __imul__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __isub__(self): + """""" + pass + + def __len__(self): + """""" + pass + + def __ne__(self): + """""" + pass + + def __neg__(self): + """""" + pass + + def __nonzero__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + def __setitem__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def asTuple(self): + """""" + pass + + +class RealPoint: + """""" + + def Set(self): + """""" + pass + + def __add__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __eq__(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __getitem__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __len__(self): + """""" + pass + + def __ne__(self): + """""" + pass + + def __nonzero__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + def __setitem__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def __sub__(self): + """""" + pass + + def asTuple(self): + """""" + pass + + +class Rect: + """""" + + def GetBottom(self): + """""" + pass + + def GetHeight(self): + """""" + pass + + def GetLeft(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetRight(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def GetTop(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def Inflate(self): + """""" + pass + + def Inside(self): + """""" + pass + + def SetBottom(self): + """""" + pass + + def SetHeight(self): + """""" + pass + + def SetLeft(self): + """""" + pass + + def SetPosition(self): + """""" + pass + + def SetRight(self): + """""" + pass + + def SetSize(self): + """""" + pass + + def SetTop(self): + """""" + pass + + def SetWidth(self): + """""" + pass + + def SetX(self): + """""" + pass + + def SetY(self): + """""" + pass + + def __add__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __eq__(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __getitem__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __len__(self): + """""" + pass + + def __ne__(self): + """""" + pass + + def __nonzero__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + def __setitem__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def asTuple(self): + """""" + pass + + +class Size: + """""" + + def GetHeight(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def Set(self): + """""" + pass + + def SetHeight(self): + """""" + pass + + def SetWidth(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __eq__(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __getitem__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __len__(self): + """""" + pass + + def __ne__(self): + """""" + pass + + def __nonzero__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + def __setitem__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def asTuple(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/DateTime.py b/wxPython/wxPython/lib/PyCrust/wxd/DateTime.py new file mode 100644 index 0000000000..a6fb8d7fdd --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/DateTime.py @@ -0,0 +1,553 @@ +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +class DateSpan: + """""" + + def Add(self): + """""" + pass + + def GetDays(self): + """""" + pass + + def GetMonths(self): + """""" + pass + + def GetTotalDays(self): + """""" + pass + + def GetWeeks(self): + """""" + pass + + def GetYears(self): + """""" + pass + + def Multiply(self): + """""" + pass + + def Neg(self): + """""" + pass + + def SetDays(self): + """""" + pass + + def SetMonths(self): + """""" + pass + + def SetWeeks(self): + """""" + pass + + def SetYears(self): + """""" + pass + + def Subtract(self): + """""" + pass + + def __add__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __mul__(self): + """""" + pass + + def __neg__(self): + """""" + pass + + def __rmul__(self): + """""" + pass + + def __sub__(self): + """""" + pass + + +class DateTime: + """""" + + def AddDS(self): + """""" + pass + + def AddTS(self): + """""" + pass + + def Format(self): + """""" + pass + + def FormatDate(self): + """""" + pass + + def FormatISODate(self): + """""" + pass + + def FormatISOTime(self): + """""" + pass + + def FormatTime(self): + """""" + pass + + def GetDay(self): + """""" + pass + + def GetDayOfYear(self): + """""" + pass + + def GetHour(self): + """""" + pass + + def GetJDN(self): + """""" + pass + + def GetJulianDayNumber(self): + """""" + pass + + def GetLastMonthDay(self): + """""" + pass + + def GetLastWeekDay(self): + """""" + pass + + def GetMJD(self): + """""" + pass + + def GetMillisecond(self): + """""" + pass + + def GetMinute(self): + """""" + pass + + def GetModifiedJulianDayNumber(self): + """""" + pass + + def GetMonth(self): + """""" + pass + + def GetNextWeekDay(self): + """""" + pass + + def GetPrevWeekDay(self): + """""" + pass + + def GetRataDie(self): + """""" + pass + + def GetSecond(self): + """""" + pass + + def GetTicks(self): + """""" + pass + + def GetWeek(self): + """""" + pass + + def GetWeekDay(self): + """""" + pass + + def GetWeekDayInSameWeek(self): + """""" + pass + + def GetWeekOfMonth(self): + """""" + pass + + def GetWeekOfYear(self): + """""" + pass + + def GetYear(self): + """""" + pass + + def GetYearDay(self): + """""" + pass + + def IsBetween(self): + """""" + pass + + def IsDST(self): + """""" + pass + + def IsEarlierThan(self): + """""" + pass + + def IsEqualTo(self): + """""" + pass + + def IsEqualUpTo(self): + """""" + pass + + def IsLaterThan(self): + """""" + pass + + def IsSameDate(self): + """""" + pass + + def IsSameTime(self): + """""" + pass + + def IsStrictlyBetween(self): + """""" + pass + + def IsValid(self): + """""" + pass + + def IsWorkDay(self): + """""" + pass + + def MakeGMT(self): + """""" + pass + + def MakeTimezone(self): + """""" + pass + + def ParseDate(self): + """""" + pass + + def ParseDateTime(self): + """""" + pass + + def ParseFormat(self): + """""" + pass + + def ParseRfc822Date(self): + """""" + pass + + def ParseTime(self): + """""" + pass + + def ResetTime(self): + """""" + pass + + def Set(self): + """""" + pass + + def SetDay(self): + """""" + pass + + def SetHMS(self): + """""" + pass + + def SetHour(self): + """""" + pass + + def SetJDN(self): + """""" + pass + + def SetMillisecond(self): + """""" + pass + + def SetMinute(self): + """""" + pass + + def SetMonth(self): + """""" + pass + + def SetSecond(self): + """""" + pass + + def SetTimeT(self): + """""" + pass + + def SetToCurrent(self): + """""" + pass + + def SetToLastMonthDay(self): + """""" + pass + + def SetToLastWeekDay(self): + """""" + pass + + def SetToNextWeekDay(self): + """""" + pass + + def SetToPrevWeekDay(self): + """""" + pass + + def SetToTheWeek(self): + """""" + pass + + def SetToWeekDay(self): + """""" + pass + + def SetToWeekDayInSameWeek(self): + """""" + pass + + def SetToYearDay(self): + """""" + pass + + def SetYear(self): + """""" + pass + + def Subtract(self): + """""" + pass + + def SubtractDS(self): + """""" + pass + + def SubtractTS(self): + """""" + pass + + def ToGMT(self): + """""" + pass + + def ToTimezone(self): + """""" + pass + + def __add__(self): + """""" + pass + + def __cmp__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def __sub__(self): + """""" + pass + + def _wxDateTimePtr__add__DS(self): + """""" + pass + + def _wxDateTimePtr__add__TS(self): + """""" + pass + + def _wxDateTimePtr__sub__DS(self): + """""" + pass + + def _wxDateTimePtr__sub__DT(self): + """""" + pass + + def _wxDateTimePtr__sub__TS(self): + """""" + pass + + +class TimeSpan: + """""" + + def Abs(self): + """""" + pass + + def Add(self): + """""" + pass + + def Format(self): + """""" + pass + + def GetDays(self): + """""" + pass + + def GetHours(self): + """""" + pass + + def GetMilliseconds(self): + """""" + pass + + def GetMinutes(self): + """""" + pass + + def GetSeconds(self): + """""" + pass + + def GetWeeks(self): + """""" + pass + + def IsEqualTo(self): + """""" + pass + + def IsLongerThan(self): + """""" + pass + + def IsNegative(self): + """""" + pass + + def IsNull(self): + """""" + pass + + def IsPositive(self): + """""" + pass + + def IsShorterThan(self): + """""" + pass + + def Multiply(self): + """""" + pass + + def Neg(self): + """""" + pass + + def Subtract(self): + """""" + pass + + def __add__(self): + """""" + pass + + def __cmp__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __mul__(self): + """""" + pass + + def __neg__(self): + """""" + pass + + def __rmul__(self): + """""" + pass + + def __sub__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Dialogs.py b/wxPython/wxPython/lib/PyCrust/wxd/Dialogs.py new file mode 100644 index 0000000000..56ca3c2d17 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Dialogs.py @@ -0,0 +1,471 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +from Frames import Frame +import Parameters as wx +from Window import TopLevelWindow + + +class Dialog(TopLevelWindow): + """""" + + def Centre(self): + """""" + pass + + def Create(self): + """""" + pass + + def CreateButtonSizer(self): + """""" + pass + + def CreateTextSizer(self): + """""" + pass + + def EndModal(self): + """""" + pass + + def GetReturnCode(self): + """""" + pass + + def IsModal(self): + """""" + pass + + def SetModal(self): + """""" + pass + + def SetReturnCode(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ColourDialog(Dialog): + """""" + + def GetColourData(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ColourData(Object): + """""" + + def GetChooseFull(self): + """""" + pass + + def GetColour(self): + """""" + pass + + def GetCustomColour(self): + """""" + pass + + def SetChooseFull(self): + """""" + pass + + def SetColour(self): + """""" + pass + + def SetCustomColour(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ColourDatabase(Object): + """""" + + def Append(self): + """""" + pass + + def FindColour(self): + """""" + pass + + def FindName(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DirDialog(Dialog): + """""" + + def GetMessage(self): + """""" + pass + + def GetPath(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def SetMessage(self): + """""" + pass + + def SetPath(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FileDialog(Dialog): + """""" + + def GetDirectory(self): + """""" + pass + + def GetFilename(self): + """""" + pass + + def GetFilenames(self): + """""" + pass + + def GetFilterIndex(self): + """""" + pass + + def GetMessage(self): + """""" + pass + + def GetPath(self): + """""" + pass + + def GetPaths(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetWildcard(self): + """""" + pass + + def SetDirectory(self): + """""" + pass + + def SetFilename(self): + """""" + pass + + def SetFilterIndex(self): + """""" + pass + + def SetMessage(self): + """""" + pass + + def SetPath(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def SetWildcard(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FindReplaceDialog(Dialog): + """""" + + def Create(self): + """""" + pass + + def GetData(self): + """""" + pass + + def SetData(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FindReplaceData(Object): + """""" + + def GetFindString(self): + """""" + pass + + def GetFlags(self): + """""" + pass + + def GetReplaceString(self): + """""" + pass + + def SetFindString(self): + """""" + pass + + def SetFlags(self): + """""" + pass + + def SetReplaceString(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FontDialog(Dialog): + """""" + + def GetFontData(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FontData(Object): + """""" + + def EnableEffects(self): + """""" + pass + + def GetAllowSymbols(self): + """""" + pass + + def GetChosenFont(self): + """""" + pass + + def GetColour(self): + """""" + pass + + def GetEnableEffects(self): + """""" + pass + + def GetInitialFont(self): + """""" + pass + + def GetShowHelp(self): + """""" + pass + + def SetAllowSymbols(self): + """""" + pass + + def SetChosenFont(self): + """""" + pass + + def SetColour(self): + """""" + pass + + def SetInitialFont(self): + """""" + pass + + def SetRange(self): + """""" + pass + + def SetShowHelp(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class MessageDialog(Dialog): + """""" + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + + +class MultiChoiceDialog(Dialog): + """""" + + def GetSelections(self): + """""" + pass + + def SetSelections(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ProgressDialog(Frame): + """""" + + def Resume(self): + """""" + pass + + def Update(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SingleChoiceDialog(Dialog): + """""" + + def GetSelection(self): + """""" + pass + + def GetStringSelection(self): + """""" + pass + + def SetSelection(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TextEntryDialog(Dialog): + """""" + + def GetValue(self): + """""" + pass + + def SetValue(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Drawing.py b/wxPython/wxPython/lib/PyCrust/wxd/Drawing.py new file mode 100644 index 0000000000..a6819f532c --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Drawing.py @@ -0,0 +1,1466 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class DC(Object): + """""" + + def BeginDrawing(self): + """""" + pass + + def Blit(self): + """""" + pass + + def CalcBoundingBox(self): + """""" + pass + + def CanDrawBitmap(self): + """""" + pass + + def CanGetTextExtent(self): + """""" + pass + + def Clear(self): + """""" + pass + + def CrossHair(self): + """""" + pass + + def DestroyClippingRegion(self): + """""" + pass + + def DeviceToLogicalX(self): + """""" + pass + + def DeviceToLogicalXRel(self): + """""" + pass + + def DeviceToLogicalY(self): + """""" + pass + + def DeviceToLogicalYRel(self): + """""" + pass + + def DrawArc(self): + """""" + pass + + def DrawBitmap(self): + """""" + pass + + def DrawCircle(self): + """""" + pass + + def DrawEllipse(self): + """""" + pass + + def DrawEllipticArc(self): + """""" + pass + + def DrawIcon(self): + """""" + pass + + def DrawImageLabel(self): + """""" + pass + + def DrawLabel(self): + """""" + pass + + def DrawLine(self): + """""" + pass + + def DrawLineList(self): + """""" + pass + + def DrawLines(self): + """""" + pass + + def DrawPoint(self): + """""" + pass + + def DrawPointList(self): + """""" + pass + + def DrawPolygon(self): + """""" + pass + + def DrawRectangle(self): + """""" + pass + + def DrawRectangleRect(self): + """""" + pass + + def DrawRotatedText(self): + """""" + pass + + def DrawRoundedRectangle(self): + """""" + pass + + def DrawSpline(self): + """""" + pass + + def DrawText(self): + """""" + pass + + def EndDoc(self): + """""" + pass + + def EndDrawing(self): + """""" + pass + + def EndPage(self): + """""" + pass + + def FloodFill(self): + """""" + pass + + def GetBackground(self): + """""" + pass + + def GetBoundingBox(self): + """""" + pass + + def GetBrush(self): + """""" + pass + + def GetCharHeight(self): + """""" + pass + + def GetCharWidth(self): + """""" + pass + + def GetClippingBox(self): + """""" + pass + + def GetDepth(self): + """""" + pass + + def GetDeviceOrigin(self): + """""" + pass + + def GetFont(self): + """""" + pass + + def GetFullTextExtent(self): + """""" + pass + + def GetLogicalFunction(self): + """""" + pass + + def GetLogicalOrigin(self): + """""" + pass + + def GetLogicalScale(self): + """""" + pass + + def GetMapMode(self): + """""" + pass + + def GetMultiLineTextExtent(self): + """""" + pass + + def GetOptimization(self): + """""" + pass + + def GetPPI(self): + """""" + pass + + def GetPen(self): + """""" + pass + + def GetPixel(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def GetSizeMM(self): + """""" + pass + + def GetSizeTuple(self): + """""" + pass + + def GetTextBackground(self): + """""" + pass + + def GetTextExtent(self): + """""" + pass + + def GetTextForeground(self): + """""" + pass + + def GetUserScale(self): + """""" + pass + + def LogicalToDeviceX(self): + """""" + pass + + def LogicalToDeviceXRel(self): + """""" + pass + + def LogicalToDeviceY(self): + """""" + pass + + def LogicalToDeviceYRel(self): + """""" + pass + + def MaxX(self): + """""" + pass + + def MaxY(self): + """""" + pass + + def MinX(self): + """""" + pass + + def MinY(self): + """""" + pass + + def Ok(self): + """""" + pass + + def ResetBoundingBox(self): + """""" + pass + + def SetAxisOrientation(self): + """""" + pass + + def SetBackground(self): + """""" + pass + + def SetBackgroundMode(self): + """""" + pass + + def SetBrush(self): + """""" + pass + + def SetClippingRect(self): + """""" + pass + + def SetClippingRegion(self): + """""" + pass + + def SetClippingRegionAsRegion(self): + """""" + pass + + def SetDeviceOrigin(self): + """""" + pass + + def SetFont(self): + """""" + pass + + def SetLogicalFunction(self): + """""" + pass + + def SetLogicalOrigin(self): + """""" + pass + + def SetLogicalScale(self): + """""" + pass + + def SetMapMode(self): + """""" + pass + + def SetOptimization(self): + """""" + pass + + def SetPalette(self): + """""" + pass + + def SetPen(self): + """""" + pass + + def SetTextBackground(self): + """""" + pass + + def SetTextForeground(self): + """""" + pass + + def SetUserScale(self): + """""" + pass + + def StartDoc(self): + """""" + pass + + def StartPage(self): + """""" + pass + + def _DrawLineList(self): + """""" + pass + + def _DrawPointList(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ClientDC(DC): + """""" + + def __init__(self): + """""" + pass + + +class MemoryDC(DC): + """""" + + def SelectObject(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class BufferedDC(MemoryDC): + """""" + + def UnMask(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class BufferedPaintDC(BufferedDC): + """""" + + def __init__(self): + """""" + pass + + +class PaintDC(DC): + """""" + + def __init__(self): + """""" + pass + + +class PostScriptDC(DC): + """""" + + def GetPrintData(self): + """""" + pass + + def SetPrintData(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ScreenDC(DC): + """""" + + def EndDrawingOnTop(self): + """""" + pass + + def StartDrawingOnTop(self): + """""" + pass + + def StartDrawingOnTopWin(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class WindowDC(DC): + """""" + + def __init__(self): + """""" + pass + + +class GDIObject(Object): + """""" + + def GetVisible(self): + """""" + pass + + def IsNull(self): + """""" + pass + + def SetVisible(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Bitmap(GDIObject): + """""" + + def CopyFromIcon(self): + """""" + pass + + def GetDepth(self): + """""" + pass + + def GetHeight(self): + """""" + pass + + def GetMask(self): + """""" + pass + + def GetPalette(self): + """""" + pass + + def GetSubBitmap(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def LoadFile(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SaveFile(self): + """""" + pass + + def SetDepth(self): + """""" + pass + + def SetHeight(self): + """""" + pass + + def SetMask(self): + """""" + pass + + def SetWidth(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Brush(GDIObject): + """""" + + def GetColour(self): + """""" + pass + + def GetStipple(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetColour(self): + """""" + pass + + def SetStipple(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class BrushList(Object): + """""" + + def AddBrush(self): + """""" + pass + + def FindOrCreateBrush(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def RemoveBrush(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Colour(Object): + """""" + + def Blue(self): + """""" + pass + + def Get(self): + """""" + pass + + def Green(self): + """""" + pass + + def Ok(self): + """""" + pass + + def Red(self): + """""" + pass + + def Set(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __eq__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __ne__(self): + """""" + pass + + def __nonzero__(self): + """""" + pass + + def __str__(self): + """""" + pass + + def asTuple(self): + """""" + pass + + +class Cursor(GDIObject): + """""" + + def Ok(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Font(Object): + """""" + + def GetEncoding(self): + """""" + pass + + def GetFaceName(self): + """""" + pass + + def GetFamily(self): + """""" + pass + + def GetFamilyString(self): + """""" + pass + + def GetNativeFontInfo(self): + """""" + pass + + def GetNativeFontInfoDesc(self): + """""" + pass + + def GetNativeFontInfoUserDesc(self): + """""" + pass + + def GetNoAntiAliasing(self): + """""" + pass + + def GetPointSize(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetStyleString(self): + """""" + pass + + def GetUnderlined(self): + """""" + pass + + def GetWeight(self): + """""" + pass + + def GetWeightString(self): + """""" + pass + + def IsFixedWidth(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetEncoding(self): + """""" + pass + + def SetFaceName(self): + """""" + pass + + def SetFamily(self): + """""" + pass + + def SetNativeFontInfo(self): + """""" + pass + + def SetNativeFontInfoUserDesc(self): + """""" + pass + + def SetNoAntiAliasing(self): + """""" + pass + + def SetPointSize(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def SetUnderlined(self): + """""" + pass + + def SetWeight(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def wxFontFromNativeInfoString(self): + """""" + pass + + +class FontList(Object): + """""" + + def AddFont(self): + """""" + pass + + def FindOrCreateFont(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def RemoveFont(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Icon(GDIObject): + """""" + + def CopyFromBitmap(self): + """""" + pass + + def GetDepth(self): + """""" + pass + + def GetHeight(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def LoadFile(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetDepth(self): + """""" + pass + + def SetHeight(self): + """""" + pass + + def SetWidth(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class IconBundle: + """""" + + def AddIcon(self): + """""" + pass + + def AddIconFromFile(self): + """""" + pass + + def GetIcon(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Image(Object): + """""" + + def ConvertToBitmap(self): + """""" + pass + + def ConvertToMono(self): + """""" + pass + + def ConvertToMonoBitmap(self): + """""" + pass + + def Copy(self): + """""" + pass + + def CountColours(self): + """""" + pass + + def Create(self): + """""" + pass + + def Destroy(self): + """""" + pass + + def FindFirstUnusedColour(self): + """""" + pass + + def GetBlue(self): + """""" + pass + + def GetData(self): + """""" + pass + + def GetDataBuffer(self): + """""" + pass + + def GetGreen(self): + """""" + pass + + def GetHeight(self): + """""" + pass + + def GetMaskBlue(self): + """""" + pass + + def GetMaskGreen(self): + """""" + pass + + def GetMaskRed(self): + """""" + pass + + def GetOption(self): + """""" + pass + + def GetOptionInt(self): + """""" + pass + + def GetRed(self): + """""" + pass + + def GetSubImage(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def HasMask(self): + """""" + pass + + def HasOption(self): + """""" + pass + + def LoadFile(self): + """""" + pass + + def LoadMimeFile(self): + """""" + pass + + def LoadMimeStream(self): + """""" + pass + + def LoadStream(self): + """""" + pass + + def Mirror(self): + """""" + pass + + def Ok(self): + """""" + pass + + def Paste(self): + """""" + pass + + def Replace(self): + """""" + pass + + def Rescale(self): + """""" + pass + + def Rotate(self): + """""" + pass + + def Rotate90(self): + """""" + pass + + def SaveFile(self): + """""" + pass + + def SaveMimeFile(self): + """""" + pass + + def Scale(self): + """""" + pass + + def SetData(self): + """""" + pass + + def SetMask(self): + """""" + pass + + def SetMaskColour(self): + """""" + pass + + def SetMaskFromImage(self): + """""" + pass + + def SetOption(self): + """""" + pass + + def SetOptionInt(self): + """""" + pass + + def SetRGB(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ImageList(Object): + """""" + + def Add(self): + """""" + pass + + def AddIcon(self): + """""" + pass + + def AddWithColourMask(self): + """""" + pass + + def Draw(self): + """""" + pass + + def GetImageCount(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def Remove(self): + """""" + pass + + def RemoveAll(self): + """""" + pass + + def Replace(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Mask(Object): + """""" + + def Destroy(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Palette(GDIObject): + """""" + + def GetPixel(self): + """""" + pass + + def GetRGB(self): + """""" + pass + + def Ok(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Pen(GDIObject): + """""" + + def GetCap(self): + """""" + pass + + def GetColour(self): + """""" + pass + + def GetDashes(self): + """""" + pass + + def GetJoin(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetCap(self): + """""" + pass + + def SetColour(self): + """""" + pass + + def SetDashes(self): + """""" + pass + + def SetJoin(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def SetWidth(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PenList(Object): + """""" + + def AddPen(self): + """""" + pass + + def FindOrCreatePen(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def RemovePen(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PyPen(Pen): + """""" + + def SetDashes(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Region(GDIObject): + """""" + + def Clear(self): + """""" + pass + + def Contains(self): + """""" + pass + + def ContainsPoint(self): + """""" + pass + + def ContainsRect(self): + """""" + pass + + def ContainsRectDim(self): + """""" + pass + + def GetBox(self): + """""" + pass + + def Intersect(self): + """""" + pass + + def IntersectRect(self): + """""" + pass + + def IntersectRegion(self): + """""" + pass + + def IsEmpty(self): + """""" + pass + + def Offset(self): + """""" + pass + + def Subtract(self): + """""" + pass + + def SubtractRect(self): + """""" + pass + + def SubtractRegion(self): + """""" + pass + + def Union(self): + """""" + pass + + def UnionRect(self): + """""" + pass + + def UnionRegion(self): + """""" + pass + + def Xor(self): + """""" + pass + + def XorRect(self): + """""" + pass + + def XorRegion(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class RegionIterator(Object): + """""" + + def GetH(self): + """""" + pass + + def GetHeight(self): + """""" + pass + + def GetRect(self): + """""" + pass + + def GetW(self): + """""" + pass + + def GetWidth(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def HaveRects(self): + """""" + pass + + def Next(self): + """""" + pass + + def Reset(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Errors.py b/wxPython/wxPython/lib/PyCrust/wxd/Errors.py new file mode 100644 index 0000000000..e1b5fea2bd --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Errors.py @@ -0,0 +1,25 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +class PyAssertionError(AssertionError): + """""" + pass + + +class PyDeadObjectError(AttributeError): + """Instances of wx objects that are OOR capable will have their + __class__ attribute changed to a _wxPyDeadObject class when the + C++ object is deleted. Subsequent attempts to access object + attributes will raise this error, rather than segfault.""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/EventFunctions.py b/wxPython/wxPython/lib/PyCrust/wxd/EventFunctions.py new file mode 100644 index 0000000000..24be2c9a13 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/EventFunctions.py @@ -0,0 +1,794 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +def EVT_ACTIVATE(win, func): + """""" + pass + +def EVT_ACTIVATE_APP(win, func): + """""" + pass + +def EVT_BUTTON(win, id, func): + """""" + pass + +def EVT_CALCULATE_LAYOUT(): + """""" + pass + +def EVT_CHAR(win, func): + """""" + pass + +def EVT_CHAR_HOOK(win, func): + """""" + pass + +def EVT_CHECKBOX(win, id, func): + """""" + pass + +def EVT_CHECKLISTBOX(win, id, func): + """""" + pass + +def EVT_CHILD_FOCUS(win, func): + """""" + pass + +def EVT_CHOICE(win, id, func): + """""" + pass + +def EVT_CLOSE(win, func): + """""" + pass + +def EVT_COMBOBOX(win, id, func): + """""" + pass + +def EVT_COMMAND(win, id, cmd, func): + """""" + pass + +def EVT_COMMAND_ENTER(win, id, func): + """""" + pass + +def EVT_COMMAND_FIND(): + """""" + pass + +def EVT_COMMAND_FIND_CLOSE(): + """""" + pass + +def EVT_COMMAND_FIND_NEXT(): + """""" + pass + +def EVT_COMMAND_FIND_REPLACE(): + """""" + pass + +def EVT_COMMAND_FIND_REPLACE_ALL(): + """""" + pass + +def EVT_COMMAND_KILL_FOCUS(win, id, func): + """""" + pass + +def EVT_COMMAND_LEFT_CLICK(win, id, func): + """""" + pass + +def EVT_COMMAND_LEFT_DCLICK(win, id, func): + """""" + pass + +def EVT_COMMAND_RANGE(win, id1, id2, cmd, func): + """""" + pass + +def EVT_COMMAND_RIGHT_CLICK(win, id, func): + """""" + pass + +def EVT_COMMAND_RIGHT_DCLICK(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_BOTTOM(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_LINEDOWN(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_LINEUP(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_PAGEDOWN(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_PAGEUP(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_THUMBRELEASE(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_THUMBTRACK(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLLWIN_TOP(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_BOTTOM(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_ENDSCROLL(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_LINEDOWN(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_LINEUP(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_PAGEDOWN(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_PAGEUP(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_THUMBRELEASE(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_THUMBTRACK(win, id, func): + """""" + pass + +def EVT_COMMAND_SCROLL_TOP(win, id, func): + """""" + pass + +def EVT_COMMAND_SET_FOCUS(win, id, func): + """""" + pass + +def EVT_CONTEXT_MENU(win, func): + """""" + pass + +def EVT_DISPLAY_CHANGED(win, func): + """""" + pass + +def EVT_DROP_FILES(win, func): + """""" + pass + +def EVT_END_PROCESS(eh, id, func): + """""" + pass + +def EVT_END_SESSION(win, func): + """""" + pass + +def EVT_ENTER_WINDOW(win, func): + """""" + pass + +def EVT_ERASE_BACKGROUND(win, func): + """""" + pass + +def EVT_ICONIZE(win, func): + """""" + pass + +def EVT_IDLE(win, func): + """""" + pass + +def EVT_INIT_DIALOG(win, func): + """""" + pass + +def EVT_JOYSTICK_EVENTS(win, func): + """""" + pass + +def EVT_JOY_DOWN(win, func): + """""" + pass + +def EVT_JOY_MOVE(win, func): + """""" + pass + +def EVT_JOY_UP(win, func): + """""" + pass + +def EVT_JOY_ZMOVE(win, func): + """""" + pass + +def EVT_KEY_DOWN(win, func): + """""" + pass + +def EVT_KEY_UP(win, func): + """""" + pass + +def EVT_KILL_FOCUS(win, func): + """""" + pass + +def EVT_LEAVE_WINDOW(win, func): + """""" + pass + +def EVT_LEFT_DCLICK(win, func): + """""" + pass + +def EVT_LEFT_DOWN(win, func): + """""" + pass + +def EVT_LEFT_UP(win, func): + """""" + pass + +def EVT_LISTBOX(win, id, func): + """""" + pass + +def EVT_LISTBOX_DCLICK(win, id, func): + """""" + pass + +def EVT_LIST_BEGIN_DRAG(): + """""" + pass + +def EVT_LIST_BEGIN_LABEL_EDIT(): + """""" + pass + +def EVT_LIST_BEGIN_RDRAG(): + """""" + pass + +def EVT_LIST_CACHE_HINT(): + """""" + pass + +def EVT_LIST_COL_BEGIN_DRAG(): + """""" + pass + +def EVT_LIST_COL_CLICK(): + """""" + pass + +def EVT_LIST_COL_DRAGGING(): + """""" + pass + +def EVT_LIST_COL_END_DRAG(): + """""" + pass + +def EVT_LIST_COL_RIGHT_CLICK(): + """""" + pass + +def EVT_LIST_DELETE_ALL_ITEMS(): + """""" + pass + +def EVT_LIST_DELETE_ITEM(): + """""" + pass + +def EVT_LIST_END_LABEL_EDIT(): + """""" + pass + +def EVT_LIST_GET_INFO(): + """""" + pass + +def EVT_LIST_INSERT_ITEM(): + """""" + pass + +def EVT_LIST_ITEM_ACTIVATED(): + """""" + pass + +def EVT_LIST_ITEM_DESELECTED(): + """""" + pass + +def EVT_LIST_ITEM_FOCUSED(): + """""" + pass + +def EVT_LIST_ITEM_MIDDLE_CLICK(): + """""" + pass + +def EVT_LIST_ITEM_RIGHT_CLICK(): + """""" + pass + +def EVT_LIST_ITEM_SELECTED(): + """""" + pass + +def EVT_LIST_KEY_DOWN(): + """""" + pass + +def EVT_LIST_SET_INFO(): + """""" + pass + +def EVT_MAXIMIZE(win, func): + """""" + pass + +def EVT_MENU(win, id, func): + """""" + pass + +def EVT_MENU_CLOSE(win, func): + """""" + pass + +def EVT_MENU_HIGHLIGHT(win, id, func): + """""" + pass + +def EVT_MENU_HIGHLIGHT_ALL(win, func): + """""" + pass + +def EVT_MENU_OPEN(win, func): + """""" + pass + +def EVT_MENU_RANGE(win, id1, id2, func): + """""" + pass + +def EVT_MIDDLE_DCLICK(win, func): + """""" + pass + +def EVT_MIDDLE_DOWN(win, func): + """""" + pass + +def EVT_MIDDLE_UP(win, func): + """""" + pass + +def EVT_MOTION(win, func): + """""" + pass + +def EVT_MOUSEWHEEL(win, func): + """""" + pass + +def EVT_MOUSE_CAPTURE_CHANGED(win, func): + """""" + pass + +def EVT_MOUSE_EVENTS(win, func): + """""" + pass + +def EVT_MOVE(win, func): + """""" + pass + +def EVT_NAVIGATION_KEY(win, func): + """""" + pass + +def EVT_NOTEBOOK_PAGE_CHANGED(win, id, func): + """""" + pass + +def EVT_NOTEBOOK_PAGE_CHANGING(win, id, func): + """""" + pass + +def EVT_PAINT(win, func): + """""" + pass + +def EVT_PALETTE_CHANGED(win, func): + """""" + pass + +def EVT_QUERY_END_SESSION(win, func): + """""" + pass + +def EVT_QUERY_LAYOUT_INFO(): + """""" + pass + +def EVT_QUERY_NEW_PALETTE(win, func): + """""" + pass + +def EVT_RADIOBOX(win, id, func): + """""" + pass + +def EVT_RADIOBUTTON(win, id, func): + """""" + pass + +def EVT_RIGHT_DCLICK(win, func): + """""" + pass + +def EVT_RIGHT_DOWN(win, func): + """""" + pass + +def EVT_RIGHT_UP(win, func): + """""" + pass + +def EVT_SASH_DRAGGED(win, id, func): + """""" + pass + +def EVT_SASH_DRAGGED_RANGE(win, id1, id2, func): + """""" + pass + +def EVT_SCROLL(win, func): + """""" + pass + +def EVT_SCROLLWIN(win, func): + """""" + pass + +def EVT_SCROLLWIN_BOTTOM(win, func): + """""" + pass + +def EVT_SCROLLWIN_LINEDOWN(win, func): + """""" + pass + +def EVT_SCROLLWIN_LINEUP(win, func): + """""" + pass + +def EVT_SCROLLWIN_PAGEDOWN(win, func): + """""" + pass + +def EVT_SCROLLWIN_PAGEUP(win, func): + """""" + pass + +def EVT_SCROLLWIN_THUMBRELEASE(win, func): + """""" + pass + +def EVT_SCROLLWIN_THUMBTRACK(win, func): + """""" + pass + +def EVT_SCROLLWIN_TOP(win, func): + """""" + pass + +def EVT_SCROLL_BOTTOM(win, func): + """""" + pass + +def EVT_SCROLL_ENDSCROLL(win, func): + """""" + pass + +def EVT_SCROLL_LINEDOWN(win, func): + """""" + pass + +def EVT_SCROLL_LINEUP(win, func): + """""" + pass + +def EVT_SCROLL_PAGEDOWN(win, func): + """""" + pass + +def EVT_SCROLL_PAGEUP(win, func): + """""" + pass + +def EVT_SCROLL_THUMBRELEASE(win, func): + """""" + pass + +def EVT_SCROLL_THUMBTRACK(win, func): + """""" + pass + +def EVT_SCROLL_TOP(win, func): + """""" + pass + +def EVT_SET_CURSOR(win, func): + """""" + pass + +def EVT_SET_FOCUS(win, func): + """""" + pass + +def EVT_SHOW(win, func): + """""" + pass + +def EVT_SIZE(): + """""" + pass + +def EVT_SLIDER(win, id, func): + """""" + pass + +def EVT_SPIN(win, id, func): + """""" + pass + +def EVT_SPINCTRL(win, id, func): + """""" + pass + +def EVT_SPIN_DOWN(win, id, func): + """""" + pass + +def EVT_SPIN_UP(win, id, func): + """""" + pass + +def EVT_SPLITTER_DOUBLECLICKED(win, id, func): + """""" + pass + +def EVT_SPLITTER_SASH_POS_CHANGED(win, id, func): + """""" + pass + +def EVT_SPLITTER_SASH_POS_CHANGING(win, id, func): + """""" + pass + +def EVT_SPLITTER_UNSPLIT(win, id, func): + """""" + pass + +def EVT_SYS_COLOUR_CHANGED(win, func): + """""" + pass + +def EVT_TASKBAR_LEFT_DCLICK(win, func): + """""" + pass + +def EVT_TASKBAR_LEFT_DOWN(win, func): + """""" + pass + +def EVT_TASKBAR_LEFT_UP(win, func): + """""" + pass + +def EVT_TASKBAR_MOVE(win, func): + """""" + pass + +def EVT_TASKBAR_RIGHT_DCLICK(win, func): + """""" + pass + +def EVT_TASKBAR_RIGHT_DOWN(win, func): + """""" + pass + +def EVT_TASKBAR_RIGHT_UP(win, func): + """""" + pass + +def EVT_TEXT(win, id, func): + """""" + pass + +def EVT_TEXT_ENTER(win, id, func): + """""" + pass + +def EVT_TEXT_MAXLEN(win, id, func): + """""" + pass + +def EVT_TEXT_URL(win, id, func): + """""" + pass + +def EVT_TIMER(win, id, func): + """""" + pass + +def EVT_TOGGLEBUTTON(win, id, func): + """""" + pass + +def EVT_TOOL(win, id, func): + """""" + pass + +def EVT_TOOL_ENTER(win, id, func): + """""" + pass + +def EVT_TOOL_RANGE(win, id, id2, func): + """""" + pass + +def EVT_TOOL_RCLICKED(win, id, func): + """""" + pass + +def EVT_TOOL_RCLICKED_RANGE(win, id, id2, func): + """""" + pass + +def EVT_TREE_BEGIN_DRAG(): + """""" + pass + +def EVT_TREE_BEGIN_LABEL_EDIT(): + """""" + pass + +def EVT_TREE_BEGIN_RDRAG(): + """""" + pass + +def EVT_TREE_DELETE_ITEM(): + """""" + pass + +def EVT_TREE_END_DRAG(): + """""" + pass + +def EVT_TREE_END_LABEL_EDIT(): + """""" + pass + +def EVT_TREE_GET_INFO(): + """""" + pass + +def EVT_TREE_ITEM_ACTIVATED(): + """""" + pass + +def EVT_TREE_ITEM_COLLAPSED(): + """""" + pass + +def EVT_TREE_ITEM_COLLAPSING(): + """""" + pass + +def EVT_TREE_ITEM_EXPANDED(): + """""" + pass + +def EVT_TREE_ITEM_EXPANDING(): + """""" + pass + +def EVT_TREE_ITEM_MIDDLE_CLICK(): + """""" + pass + +def EVT_TREE_ITEM_RIGHT_CLICK(): + """""" + pass + +def EVT_TREE_KEY_DOWN(): + """""" + pass + +def EVT_TREE_SEL_CHANGED(): + """""" + pass + +def EVT_TREE_SEL_CHANGING(): + """""" + pass + +def EVT_TREE_SET_INFO(): + """""" + pass + +def EVT_UPDATE_UI(win, id, func): + """""" + pass + +def EVT_UPDATE_UI_RANGE(win, id, id2, func): + """""" + pass + +def EVT_VLBOX(win, id, func): + """""" + pass + +def EVT_WINDOW_CREATE(win, func): + """""" + pass + +def EVT_WINDOW_DESTROY(win, func): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Events.py b/wxPython/wxPython/lib/PyCrust/wxd/Events.py new file mode 100644 index 0000000000..c9e5a642e3 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Events.py @@ -0,0 +1,1275 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class Event(Object): + """""" + + def __init__(self): + """""" + pass + + def Clone(self): + """""" + pass + + def GetEventObject(self): + """""" + pass + + def GetEventType(self): + """""" + pass + + def GetId(self): + """""" + pass + + def GetSkipped(self): + """""" + pass + + def GetTimestamp(self): + """""" + pass + + def SetEventObject(self): + """""" + pass + + def SetEventType(self): + """""" + pass + + def SetId(self): + """""" + pass + + def SetTimestamp(self): + """""" + pass + + def Skip(self): + """""" + pass + + +class PyEvent(Event): + """""" + + def GetSelf(self): + """""" + pass + + def SetSelf(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ActivateEvent(Event): + """""" + + def GetActive(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class CalculateLayoutEvent(Event): + """""" + + def GetFlags(self): + """""" + pass + + def GetRect(self): + """""" + pass + + def SetFlags(self): + """""" + pass + + def SetRect(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class CloseEvent(Event): + """""" + + def CanVeto(self): + """""" + pass + + def GetLoggingOff(self): + """""" + pass + + def GetVeto(self): + """""" + pass + + def SetCanVeto(self): + """""" + pass + + def SetLoggingOff(self): + """""" + pass + + def Veto(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class CommandEvent(Event): + """""" + + def __init__(self): + """""" + pass + + def Checked(self): + """""" + pass + + def GetClientData(self): + """""" + pass + + def GetExtraLong(self): + """""" + pass + + def GetInt(self): + """""" + pass + + def GetSelection(self): + """""" + pass + + def GetString(self): + """""" + pass + + def IsChecked(self): + """""" + pass + + def IsSelection(self): + """""" + pass + + def SetExtraLong(self): + """""" + pass + + def SetInt(self): + """""" + pass + + def SetString(self): + """""" + pass + + +class ChildFocusEvent(CommandEvent): + """""" + + def GetWindow(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ContextMenuEvent(CommandEvent): + """""" + + def GetPosition(self): + """""" + pass + + def SetPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DisplayChangedEvent(Event): + """""" + + def __init__(self): + """""" + pass + + +class DropFilesEvent(Event): + """""" + + def GetFiles(self): + """""" + pass + + def GetNumberOfFiles(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class EraseEvent(Event): + """""" + + def GetDC(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FindDialogEvent(CommandEvent): + """""" + + def GetDialog(self): + """""" + pass + + def GetFindString(self): + """""" + pass + + def GetFlags(self): + """""" + pass + + def GetReplaceString(self): + """""" + pass + + def SetFindString(self): + """""" + pass + + def SetFlags(self): + """""" + pass + + def SetReplaceString(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FocusEvent(Event): + """""" + + def __init__(self): + """""" + pass + + +class IconizeEvent(Event): + """""" + + def Iconized(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class IdleEvent(Event): + """""" + + def MoreRequested(self): + """""" + pass + + def RequestMore(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class InitDialogEvent(Event): + """""" + + def __init__(self): + """""" + pass + + +class JoystickEvent(Event): + """""" + + def ButtonDown(self): + """""" + pass + + def ButtonIsDown(self): + """""" + pass + + def ButtonUp(self): + """""" + pass + + def GetButtonChange(self): + """""" + pass + + def GetButtonState(self): + """""" + pass + + def GetJoystick(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetZPosition(self): + """""" + pass + + def IsButton(self): + """""" + pass + + def IsMove(self): + """""" + pass + + def IsZMove(self): + """""" + pass + + def SetButtonChange(self): + """""" + pass + + def SetButtonState(self): + """""" + pass + + def SetJoystick(self): + """""" + pass + + def SetPosition(self): + """""" + pass + + def SetZPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class KeyEvent(Event): + """""" + + def AltDown(self): + """""" + pass + + def ControlDown(self): + """""" + pass + + def GetKeyCode(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetPositionTuple(self): + """""" + pass + + def GetRawKeyCode(self): + """""" + pass + + def GetRawKeyFlags(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def HasModifiers(self): + """""" + pass + + def KeyCode(self): + """""" + pass + + def MetaDown(self): + """""" + pass + + def ShiftDown(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class MaximizeEvent(Event): + """""" + + def __init__(self): + """""" + pass + + +class MenuEvent(Event): + """""" + + def GetMenuId(self): + """""" + pass + + def IsPopup(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class MouseCaptureChangedEvent(Event): + """""" + + def GetCapturedWindow(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class MouseEvent(Event): + """""" + + def AltDown(self): + """""" + pass + + def Button(self): + """""" + pass + + def ButtonDClick(self): + """""" + pass + + def ButtonDown(self): + """""" + pass + + def ButtonIsDown(self): + """""" + pass + + def ButtonUp(self): + """""" + pass + + def ControlDown(self): + """""" + pass + + def Dragging(self): + """""" + pass + + def Entering(self): + """""" + pass + + def GetLinesPerAction(self): + """""" + pass + + def GetLogicalPosition(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetPositionTuple(self): + """""" + pass + + def GetWheelDelta(self): + """""" + pass + + def GetWheelRotation(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def IsButton(self): + """""" + pass + + def Leaving(self): + """""" + pass + + def LeftDClick(self): + """""" + pass + + def LeftDown(self): + """""" + pass + + def LeftIsDown(self): + """""" + pass + + def LeftUp(self): + """""" + pass + + def MetaDown(self): + """""" + pass + + def MiddleDClick(self): + """""" + pass + + def MiddleDown(self): + """""" + pass + + def MiddleIsDown(self): + """""" + pass + + def MiddleUp(self): + """""" + pass + + def Moving(self): + """""" + pass + + def RightDClick(self): + """""" + pass + + def RightDown(self): + """""" + pass + + def RightIsDown(self): + """""" + pass + + def RightUp(self): + """""" + pass + + def ShiftDown(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class MoveEvent(Event): + """""" + + def GetPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class NavigationKeyEvent(Event): + """""" + + def GetCurrentFocus(self): + """""" + pass + + def GetDirection(self): + """""" + pass + + def IsWindowChange(self): + """""" + pass + + def SetCurrentFocus(self): + """""" + pass + + def SetDirection(self): + """""" + pass + + def SetWindowChange(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class NotifyEvent(CommandEvent): + """""" + + def __init__(self): + """""" + pass + + def Allow(self): + """""" + pass + + def IsAllowed(self): + """""" + pass + + def Veto(self): + """""" + pass + + +class ListEvent(NotifyEvent): + """""" + + def GetCacheFrom(self): + """""" + pass + + def GetCacheTo(self): + """""" + pass + + def GetCode(self): + """""" + pass + + def GetColumn(self): + """""" + pass + + def GetData(self): + """""" + pass + + def GetImage(self): + """""" + pass + + def GetIndex(self): + """""" + pass + + def GetItem(self): + """""" + pass + + def GetKeyCode(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetMask(self): + """""" + pass + + def GetPoint(self): + """""" + pass + + def GetText(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class NotebookEvent(NotifyEvent): + + def __init__(self, commandType=wx.EVT_NULL, id=0, nSel=-1, nOldSel=-1): + """""" + pass + + def GetSelection(self): + """""" + pass + + def GetOldSelection(self): + """""" + pass + + def SetOldSelection(self, page): + """""" + pass + + def SetSelection(self, page): + """""" + pass + + +class PaintEvent(Event): + """""" + + def __init__(self): + """""" + pass + + +class PaletteChangedEvent(Event): + """""" + + def GetChangedWindow(self): + """""" + pass + + def SetChangedWindow(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ProcessEvent(Event): + """""" + + def GetExitCode(self): + """""" + pass + + def GetPid(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class PyCommandEvent(CommandEvent): + """""" + + def GetSelf(self): + """""" + pass + + def SetSelf(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class QueryLayoutInfoEvent(Event): + """""" + + def GetAlignment(self): + """""" + pass + + def GetFlags(self): + """""" + pass + + def GetOrientation(self): + """""" + pass + + def GetRequestedLength(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def SetAlignment(self): + """""" + pass + + def SetFlags(self): + """""" + pass + + def SetOrientation(self): + """""" + pass + + def SetRequestedLength(self): + """""" + pass + + def SetSize(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class QueryNewPaletteEvent(Event): + """""" + + def GetPaletteRealized(self): + """""" + pass + + def SetPaletteRealized(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SashEvent(CommandEvent): + """""" + + def GetDragRect(self): + """""" + pass + + def GetDragStatus(self): + """""" + pass + + def GetEdge(self): + """""" + pass + + def SetDragRect(self): + """""" + pass + + def SetDragStatus(self): + """""" + pass + + def SetEdge(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ScrollEvent(CommandEvent): + """""" + + def GetOrientation(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ScrollWinEvent(Event): + """""" + + def GetOrientation(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SetCursorEvent(Event): + """""" + + def GetCursor(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def HasCursor(self): + """""" + pass + + def SetCursor(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ShowEvent(Event): + """""" + + def GetShow(self): + """""" + pass + + def SetShow(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SizeEvent(Event): + """""" + + def GetSize(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SpinEvent(ScrollEvent): + """""" + + def __init__(self): + """""" + pass + + +class SplitterEvent(NotifyEvent): + """""" + + def GetSashPosition(self): + """""" + pass + + def GetWindowBeingRemoved(self): + """""" + pass + + def GetX(self): + """""" + pass + + def GetY(self): + """""" + pass + + def SetSashPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SysColourChangedEvent(Event): + """""" + + def __init__(self): + """""" + pass + + +class TextUrlEvent(CommandEvent): + """""" + + def GetMouseEvent(self): + """""" + pass + + def GetURLEnd(self): + """""" + pass + + def GetURLStart(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TimerEvent(Event): + """""" + + def GetInterval(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TreeEvent(NotifyEvent): + """""" + + def GetCode(self): + """""" + pass + + def GetItem(self): + """""" + pass + + def GetKeyCode(self): + """""" + pass + + def GetKeyEvent(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetOldItem(self): + """""" + pass + + def GetPoint(self): + """""" + pass + + def IsEditCancelled(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class UpdateUIEvent(Event): + """""" + + def Check(self): + """""" + pass + + def Enable(self): + """""" + pass + + def GetChecked(self): + """""" + pass + + def GetEnabled(self): + """""" + pass + + def GetSetChecked(self): + """""" + pass + + def GetSetEnabled(self): + """""" + pass + + def GetSetText(self): + """""" + pass + + def GetText(self): + """""" + pass + + def SetText(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class WindowCreateEvent(CommandEvent): + """""" + + def GetWindow(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class WindowDestroyEvent(CommandEvent): + """""" + + def GetWindow(self): + """""" + pass + + def __init__(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/FileSystem.py b/wxPython/wxPython/lib/PyCrust/wxd/FileSystem.py new file mode 100644 index 0000000000..41780660c4 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/FileSystem.py @@ -0,0 +1,193 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class FSFile(Object): + """""" + + def GetAnchor(self): + """""" + pass + + def GetLocation(self): + """""" + pass + + def GetMimeType(self): + """""" + pass + + def GetModificationTime(self): + """""" + pass + + def GetStream(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FileSystem(Object): + """""" + + def ChangePathTo(self): + """""" + pass + + def FindFirst(self): + """""" + pass + + def FindNext(self): + """""" + pass + + def GetPath(self): + """""" + pass + + def OpenFile(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class CPPFileSystemHandler(Object): + """""" + + def __init__(self): + """""" + pass + + +class FileSystemHandler(CPPFileSystemHandler): + """""" + + def CanOpen(self): + """""" + pass + + def FindFirst(self): + """""" + pass + + def FindNext(self): + """""" + pass + + def GetAnchor(self): + """""" + pass + + def GetLeftLocation(self): + """""" + pass + + def GetMimeTypeFromExt(self): + """""" + pass + + def GetProtocol(self): + """""" + pass + + def GetRightLocation(self): + """""" + pass + + def OpenFile(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class InternetFSHandler(CPPFileSystemHandler): + """""" + + def CanOpen(self): + """""" + pass + + def OpenFile(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class MemoryFSHandler(CPPFileSystemHandler): + """""" + + def CanOpen(self): + """""" + pass + + def FindFirst(self): + """""" + pass + + def FindNext(self): + """""" + pass + + def OpenFile(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ZipFSHandler(CPPFileSystemHandler): + """""" + + def CanOpen(self): + """""" + pass + + def FindFirst(self): + """""" + pass + + def FindNext(self): + """""" + pass + + def OpenFile(self): + """""" + pass + + def __init__(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Frames.py b/wxPython/wxPython/lib/PyCrust/wxd/Frames.py new file mode 100644 index 0000000000..94c0e72074 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Frames.py @@ -0,0 +1,440 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx +from Window import TopLevelWindow, Window + + +class Frame(TopLevelWindow): + """A frame is a window whose size and position can (usually) be + changed by the user. It usually has thick borders and a title bar, + and can optionally contain a menu bar, toolbar and status bar. A + frame can contain any window that is not a frame or dialog. + + A frame that has a status bar and toolbar created via the + CreateStatusBar/CreateToolBar functions manages these windows, and + adjusts the value returned by GetClientSize to reflect the + remaining size available to application windows. + + An application should normally define a CloseEvent handler for the + frame to respond to system close events, for example so that + related data and subwindows can be cleaned up.""" + + def __init__(self, parent, id, title, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, + name=wx.PyFrameNameStr): + """Create a Frame instance. + + parent - The window parent. This may be NULL. If it is + non-NULL, the frame will always be displayed on top of the + parent window on Windows. + + id - The window identifier. It may take a value of -1 to + indicate a default value. + + title - The caption to be displayed on the frame's title bar. + + pos - The window position. A value of (-1, -1) indicates a + default position, chosen by either the windowing system or + wxWindows, depending on platform. + + size - The window size. A value of (-1, -1) indicates a + default size, chosen by either the windowing system or + wxWindows, depending on platform. + + style - The window style. + + name - The name of the window. This parameter is used to + associate a name with the item, allowing the application user + to set Motif resource values for individual windows.""" + pass + + def Create(self, parent, id, title, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, + name=wx.PyFrameNameStr): + """Create a Frame instance.""" + pass + + def Command(self, id): + """Simulate a menu command; id is a menu item identifier.""" + pass + + def CreateStatusBar(self, number=1, style=wx.ST_SIZEGRIP, id=-1, + name=wx.PyStatusLineNameStr): + """Create a status bar at the bottom of frame. + + number - The number of fields to create. Specify a value + greater than 1 to create a multi-field status bar. + + style - The status bar style. See wx.StatusBar for a list of + valid styles. + + id - The status bar window identifier. If -1, an identifier + will be chosen by wxWindows. + + name - The status bar window name. + + The width of the status bar is the whole width of the frame + (adjusted automatically when resizing), and the height and + text size are chosen by the host windowing system. + + By default, the status bar is an instance of wx.StatusBar.""" + pass + + def CreateToolBar(self, style=wx.NO_BORDER|wx.TB_HORIZONTAL, id=-1, + name=wx.PyToolBarNameStr): + """Create a toolbar at the top or left of frame. + + style - The toolbar style. See wxToolBar for a list of valid + styles. + + id - The toolbar window identifier. If -1, an identifier will + be chosen by wxWindows. + + name - The toolbar window name. + + By default, the toolbar is an instance of wx.ToolBar (which is + defined to be a suitable toolbar class on each platform, such + as wx.ToolBar95). + + When a toolbar has been created with this function, or made + known to the frame with wx.Frame.SetToolBar, the frame will + manage the toolbar position and adjust the return value from + wx.Window.GetClientSize to reflect the available space for + application windows.""" + pass + + def DoGiveHelp(self, text, show): + """Show help text (typically in the statusbar). + + show is False if you are hiding the help, True otherwise. + + Meant to be overridden if a derived frame wants to do + something else with help text from menus and etc. The default + implementation simply calls Frame.SetStatusText.""" + pass + + def GetClientAreaOrigin(self): + """Return origin of frame client area (in client coordinates). + + It may be different from (0, 0) if the frame has a toolbar.""" + pass + + def GetMenuBar(self): + """Return menubar currently associated with frame (if any).""" + pass + + def GetStatusBar(self): + """Return status bar currently associated with frame (if any).""" + pass + + def GetStatusBarPane(self): + """Return status bar pane used to display menu and toolbar + help.""" + pass + + def GetToolBar(self): + """Return toolbar currently associated with frame (if any).""" + pass + + def PopStatusText(self, number=0): + """Redraw status bar with previous status text. + + number - The status field (starting from zero).""" + pass + + def ProcessCommand(self, id): + """Process menu command; return True if processed. + + id is the menu command identifier.""" + pass + + def PushStatusText(self, text, number=0): + """Set status bar text and redraw status bar, remembering + previous text. + + text - The text for the status field. + + number - The status field (starting from zero). + + Use an empty string to clear the status bar.""" + pass + + def SendSizeEvent(self): + """Send a dummy size event to the frame forcing it to + reevaluate its children positions. It is sometimes useful to + call this function after adding or deleting a children after + the frame creation or if a child size changes. + + Note that if the frame is using either sizers or constraints + for the children layout, it is enough to call Frame.Layout() + directly and this function should not be used in this case.""" + pass + + def SetMenuBar(self, menubar): + """Show the menu bar in the frame. + + menuBar - The menu bar to associate with the frame. + + If the frame is destroyed, the menu bar and its menus will be + destroyed also, so do not delete the menu bar explicitly + (except by resetting the frame's menu bar to another frame or + NULL). + + Under Windows, a call to Frame.OnSize is generated, so be sure + to initialize data members properly before calling SetMenuBar. + + Note that it is not possible to call this function twice for + the same frame object.""" + pass + + def SetStatusBar(self, statBar): + """Associate a status bar with the frame.""" + pass + + def SetStatusBarPane(self, n): + """Set the status bar pane used to display menu and toolbar + help. Using -1 disables help display.""" + pass + + def SetStatusText(self, text, number=0): + """Set status bar text and redraw status bar. + + text - The text for the status field. + + number - The status field (starting from zero). + + Use an empty string to clear the status bar.""" + pass + + def SetStatusWidths(self, choices): + """Sets the widths of the fields in the status bar. + + choices - a Python list of integers, each of which is a status + field width in pixels. A value of -1 indicates that the field + is variable width; at least one field must be -1. + + The widths of the variable fields are calculated from the + total width of all fields, minus the sum of widths of the + non-variable fields, divided by the number of variable fields.""" + pass + + def SetToolBar(self, toolbar): + """Associate a toolbar with the frame.""" + pass + + +class LayoutAlgorithm(Object): + """""" + + def __init__(self): + """""" + pass + + def LayoutFrame(self): + """""" + pass + + def LayoutMDIFrame(self): + """""" + pass + + def LayoutWindow(self): + """""" + pass + + +class MDIChildFrame(Frame): + """""" + + def __init__(self): + """""" + pass + + def Create(self): + """""" + pass + + def Activate(self): + """""" + pass + + def Maximize(self): + """""" + pass + + def Restore(self): + """""" + pass + + +class MDIClientWindow(Window): + """""" + + def __init__(self): + """""" + pass + + def Create(self): + """""" + pass + + +class MDIParentFrame(Frame): + """""" + + def __init__(self): + """""" + pass + + def Create(self): + """""" + pass + + def ActivateNext(self): + """""" + pass + + def ActivatePrevious(self): + """""" + pass + + def ArrangeIcons(self): + """""" + pass + + def Cascade(self): + """""" + pass + + def GetActiveChild(self): + """""" + pass + + def GetClientWindow(self): + """""" + pass + + def GetToolBar(self): + """""" + pass + + def Tile(self): + """""" + pass + + +class MiniFrame(Frame): + """""" + + def __init__(self): + """""" + pass + + def Create(self): + """""" + pass + + +class SplashScreen(Frame): + """""" + + def __init__(self): + """""" + pass + + def GetSplashStyle(self): + """""" + pass + + def GetSplashWindow(self): + """""" + pass + + def GetTimeout(self): + """""" + pass + + +class SplashScreenWindow(Window): + """""" + + def __init__(self): + """""" + pass + + def GetBitmap(self): + """""" + pass + + def SetBitmap(self): + """""" + pass + + +class StatusBar(Window): + """""" + + def __init__(self): + """""" + pass + + def Create(self): + """""" + pass + + def GetBorderX(self): + """""" + pass + + def GetBorderY(self): + """""" + pass + + def GetFieldRect(self): + """""" + pass + + def GetFieldsCount(self): + """""" + pass + + def GetStatusText(self): + """""" + pass + + def PopStatusText(self): + """""" + pass + + def PushStatusText(self): + """""" + pass + + def SetFieldsCount(self): + """""" + pass + + def SetMinHeight(self): + """""" + pass + + def SetStatusText(self): + """""" + pass + + def SetStatusWidths(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Functions.py b/wxPython/wxPython/lib/PyCrust/wxd/Functions.py new file mode 100644 index 0000000000..67af4e18be --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Functions.py @@ -0,0 +1,1262 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +def ArtProvider_GetBitmap(): + """""" + pass + +def ArtProvider_GetIcon(): + """""" + pass + +def ArtProvider_PopProvider(): + """""" + pass + +def ArtProvider_PushProvider(): + """""" + pass + +def ArtProvider_RemoveProvider(): + """""" + pass + +def BeginBusyCursor(): + """""" + pass + +def Bell(): + """""" + pass + +def BitmapFromBits(): + """""" + pass + +def BitmapFromIcon(): + """""" + pass + +def BitmapFromImage(): + """""" + pass + +def BitmapFromXPMData(): + """""" + pass + +def BufferedDCInternalBuffer(): + """""" + pass + +def Button_GetDefaultSize(): + """""" + pass + +def CallAfter(callable, *args, **kw): + """Call the specified function after the current and pending event + handlers have been completed. This is also good for making GUI + method calls from non-GUI threads.""" + pass + +def Caret_GetBlinkTime(): + """""" + pass + +def Caret_SetBlinkTime(): + """""" + pass + +def ClientDisplayRect(): + """""" + pass + +def ColourDisplay(): + """""" + pass + +def ConfigBase_Create(): + """""" + pass + +def ConfigBase_DontCreateOnDemand(): + """""" + pass + +def ConfigBase_Get(): + """""" + pass + +def ConfigBase_Set(): + """""" + pass + +def CreateFileTipProvider(): + """""" + pass + +def CustomDataFormat(): + """""" + pass + +def DLG_PNT(): + """""" + pass + +def DLG_SZE(): + """""" + pass + +def DateSpan_Day(): + """""" + pass + +def DateSpan_Days(): + """""" + pass + +def DateSpan_Month(): + """""" + pass + +def DateSpan_Months(): + """""" + pass + +def DateSpan_Week(): + """""" + pass + +def DateSpan_Weeks(): + """""" + pass + +def DateSpan_Year(): + """""" + pass + +def DateSpan_Years(): + """""" + pass + +def DateTimeFromDMY(): + """""" + pass + +def DateTimeFromHMS(): + """""" + pass + +def DateTimeFromJDN(): + """""" + pass + +def DateTimeFromTimeT(): + """""" + pass + +def DateTime_ConvertYearToBC(): + """""" + pass + +def DateTime_GetAmPmStrings(): + """""" + pass + +def DateTime_GetBeginDST(): + """""" + pass + +def DateTime_GetCentury(): + """""" + pass + +def DateTime_GetCountry(): + """""" + pass + +def DateTime_GetCurrentMonth(): + """""" + pass + +def DateTime_GetCurrentYear(): + """""" + pass + +def DateTime_GetEndDST(): + """""" + pass + +def DateTime_GetMonthName(): + """""" + pass + +def DateTime_GetNumberOfDaysInMonth(): + """""" + pass + +def DateTime_GetNumberOfDaysinYear(): + """""" + pass + +def DateTime_GetWeekDayName(): + """""" + pass + +def DateTime_IsDSTApplicable(): + """""" + pass + +def DateTime_IsLeapYear(): + """""" + pass + +def DateTime_IsWestEuropeanCountry(): + """""" + pass + +def DateTime_Now(): + """""" + pass + +def DateTime_SetCountry(): + """""" + pass + +def DateTime_Today(): + """""" + pass + +def DateTime_UNow(): + """""" + pass + +def DirSelector(): + """""" + pass + +def DisplayDepth(): + """""" + pass + +def DisplaySize(): + """""" + pass + +def DisplaySizeMM(): + """""" + pass + +def DragIcon(): + """""" + pass + +def DragListItem(): + """""" + pass + +def DragString(): + """""" + pass + +def DragTreeItem(): + """""" + pass + +def EmptyBitmap(): + """""" + pass + +def EmptyIcon(): + """""" + pass + +def EmptyImage(): + """""" + pass + +def EnableTopLevelWindows(): + """""" + pass + +def EncodingConverter_GetAllEquivalents(): + """""" + pass + +def EncodingConverter_GetPlatformEquivalents(): + """""" + pass + +def EndBusyCursor(): + """""" + pass + +def Execute(): + """""" + pass + +def FileSelector(): + """""" + pass + +def FileSystem_AddHandler(): + """""" + pass + +def FileSystem_CleanUpHandlers(): + """""" + pass + +def FileTypeInfoSequence(): + """""" + pass + +def FileType_ExpandCommand(): + """""" + pass + +def FindWindowAtPoint(): + """""" + pass + +def FindWindowById(id, parent=wx.NULL): + """""" + pass + +def FindWindowByLabel(label, parent=wx.NULL): + """""" + pass + +def FindWindowByName(name, parent=wx.NULL): + """""" + pass + +def FontFromNativeInfo(): + """""" + pass + +def FontMapper_Get(): + """""" + pass + +def FontMapper_GetDefaultConfigPath(): + """""" + pass + +def FontMapper_GetEncodingDescription(): + """""" + pass + +def FontMapper_GetEncodingName(): + """""" + pass + +def FontMapper_Set(): + """""" + pass + +def Font_GetDefaultEncoding(): + """""" + pass + +def Font_SetDefaultEncoding(): + """""" + pass + +def GenericFindWindowAtPoint(): + """""" + pass + +def GetAccelFromString(): + """""" + pass + +def GetActiveWindow(): + """""" + pass + +def GetApp(): + """""" + pass + +def GetClientDisplayRect(): + """""" + pass + +def GetCurrentId(): + """""" + pass + +def GetCurrentTime(): + """""" + pass + +def GetDisplayDepth(): + """""" + pass + +def GetDisplaySize(): + """""" + pass + +def GetDisplaySizeMM(): + """""" + pass + +def GetElapsedTime(): + """""" + pass + +def GetEmailAddress(): + """""" + pass + +def GetFullHostName(): + """""" + pass + +def GetHomeDir(): + """""" + pass + +def GetHostName(): + """""" + pass + +def GetLocalTime(): + """""" + pass + +def GetLocalTimeMillis(): + """""" + pass + +def GetLocale(): + """""" + pass + +def GetMousePosition(): + """""" + pass + +def GetNumberFromUser(): + """""" + pass + +def GetOsDescription(): + """""" + pass + +def GetOsVersion(): + """""" + pass + +def GetPasswordFromUser(): + """""" + pass + +def GetProcessId(): + """""" + pass + +def GetSingleChoice(): + """""" + pass + +def GetSingleChoiceIndex(): + """""" + pass + +def GetTextFromUser(): + """""" + pass + +def GetTopLevelParent(): + """""" + pass + +def GetTranslation(): + """""" + pass + +def GetUTCTime(): + """""" + pass + +def GetUserHome(): + """""" + pass + +def GetUserId(): + """""" + pass + +def GetUserName(): + """""" + pass + +def IconBundleFromFile(): + """""" + pass + +def IconBundleFromIcon(): + """""" + pass + +def IconFromBitmap(): + """""" + pass + +def IconFromXPMData(): + """""" + pass + +def ImageFromBitmap(): + """""" + pass + +def ImageFromData(): + """""" + pass + +def ImageFromMime(): + """""" + pass + +def ImageFromStream(): + """""" + pass + +def ImageFromStreamMime(): + """""" + pass + +def Image_AddHandler(): + """""" + pass + +def Image_CanRead(): + """""" + pass + +def Image_CanReadStream(): + """""" + pass + +def Image_GetImageCount(): + """""" + pass + +def Image_InsertHandler(): + """""" + pass + +def Image_RemoveHandler(): + """""" + pass + +def InitAllImageHandlers(): + """""" + pass + +def IntersectRect(): + """""" + pass + +def IsBusy(): + """""" + pass + +def IsDragResultOk(): + """""" + pass + +def LoadFileSelector(): + """""" + pass + +def Locale_AddCatalogLookupPathPrefix(): + """""" + pass + +def Locale_AddLanguage(): + """""" + pass + +def Locale_GetLanguageInfo(): + """""" + pass + +def Locale_GetSystemEncoding(): + """""" + pass + +def Locale_GetSystemEncodingName(): + """""" + pass + +def Locale_GetSystemLanguage(): + """""" + pass + +def LogDebug(): + """""" + pass + +def LogError(): + """""" + pass + +def LogFatalError(): + """""" + pass + +def LogGeneric(): + """""" + pass + +def LogInfo(): + """""" + pass + +def LogMessage(): + """""" + pass + +def LogStatus(): + """""" + pass + +def LogStatusFrame(): + """""" + pass + +def LogSysError(): + """""" + pass + +def LogTrace(): + """""" + pass + +def LogTraceMask(): + """""" + pass + +def LogVerbose(): + """""" + pass + +def LogWarning(): + """""" + pass + +def Log_AddTraceMask(): + """""" + pass + +def Log_ClearTraceMasks(): + """""" + pass + +def Log_DontCreateOnDemand(): + """""" + pass + +def Log_EnableLogging(): + """""" + pass + +def Log_FlushActive(): + """""" + pass + +def Log_GetActiveTarget(): + """""" + pass + +def Log_GetLogLevel(): + """""" + pass + +def Log_GetTimestamp(): + """""" + pass + +def Log_GetTraceMask(): + """""" + pass + +def Log_GetTraceMasks(): + """""" + pass + +def Log_IsAllowedTraceMask(): + """""" + pass + +def Log_IsEnabled(): + """""" + pass + +def Log_OnLog(): + """""" + pass + +def Log_RemoveTraceMask(): + """""" + pass + +def Log_Resume(): + """""" + pass + +def Log_SetActiveTarget(): + """""" + pass + +def Log_SetLogLevel(): + """""" + pass + +def Log_SetTimestamp(): + """""" + pass + +def Log_SetTraceMask(): + """""" + pass + +def Log_SetVerbose(): + """""" + pass + +def Log_Suspend(): + """""" + pass + +def MaskColour(): + """""" + pass + +def MemoryDCFromDC(): + """""" + pass + +def MemoryFSHandler_AddFile(): + """""" + pass + +def MemoryFSHandler_RemoveFile(): + """""" + pass + +def MenuItem_GetLabelFromText(): + """""" + pass + +def MessageBox(): + """""" + pass + +def MimeTypesManager_IsOfType(): + """""" + pass + +def MutexGuiEnter(): + """""" + pass + +def MutexGuiLeave(): + """""" + pass + +def NamedColour(): + """""" + pass + +def NamedColour(): + """""" + pass + +def NewEventType(): + """""" + pass + +def NewId(): + """""" + pass + +def Now(): + """""" + pass + +def NullFileTypeInfo(): + """""" + pass + +def Point2DDoubleCopy(): + """""" + pass + +def Point2DDoubleFromPoint(): + """""" + pass + +def PostEvent(): + """""" + pass + +def PostScriptDC_GetResolution(): + """""" + pass + +def PostScriptDC_SetResolution(): + """""" + pass + +def PreBitmapButton(): + """""" + pass + +def PreButton(): + """""" + pass + +def PreCheckBox(): + """""" + pass + +def PreCheckListBox(): + """""" + pass + +def PreChoice(): + """""" + pass + +def PreComboBox(): + """""" + pass + +def PreControl(): + """""" + pass + +def PreDialog(): + """""" + pass + +def PreDirFilterListCtrl(): + """""" + pass + +def PreFindReplaceDialog(): + """""" + pass + +def PreFrame(): + """""" + pass + +def PreGauge(): + """""" + pass + +def PreGenericDirCtrl(): + """""" + pass + +def PreListBox(): + """""" + pass + +def PreListCtrl(): + """""" + pass + +def PreListView(): + """""" + pass + +def PreMDIChildFrame(): + """""" + pass + +def PreMDIClientWindow(): + """""" + pass + +def PreMDIParentFrame(): + """""" + pass + +def PreMiniFrame(): + """""" + pass + +def PreNotebook(): + """""" + pass + +def PrePanel(): + """""" + pass + +def PrePopupTransientWindow(): + """""" + pass + +def PrePopupWindow(): + """""" + pass + +def PreRadioBox(): + """""" + pass + +def PreRadioButton(): + """""" + pass + +def PreSashLayoutWindow(): + """""" + pass + +def PreSashWindow(): + """""" + pass + +def PreScrollBar(): + """""" + pass + +def PreScrolledWindow(): + """""" + pass + +def PreSingleInstanceChecker(): + """""" + pass + +def PreSlider(): + """""" + pass + +def PreSpinButton(): + """""" + pass + +def PreSpinCtrl(): + """""" + pass + +def PreSplitterWindow(): + """""" + pass + +def PreStaticBitmap(): + """""" + pass + +def PreStaticBox(): + """""" + pass + +def PreStaticLine(): + """""" + pass + +def PreStaticText(): + """""" + pass + +def PreStatusBar(): + """""" + pass + +def PreTextCtrl(): + """""" + pass + +def PreToggleButton(): + """""" + pass + +def PreToolBar(): + """""" + pass + +def PreToolBarSimple(): + """""" + pass + +def PreTopLevelWindow(): + """""" + pass + +def PreTreeCtrl(): + """""" + pass + +def PreWindow(): + """""" + pass + +def Process_Exists(): + """""" + pass + +def Process_Kill(): + """""" + pass + +def Process_Open(): + """""" + pass + +def PyTypeCast(obj, typeStr): + """This helper function will take a wxPython object and convert it + to another wxPython object type. This will not be able to create + objects that are derived from wxPython classes by the user, only + those that are actually part of wxPython and directly corespond to + C++ objects. + + This is useful in situations where some method returns a generic + type such as wxWindow, but you know that it is actually some + derived type such as a TextCtrl. You can't call TextCtrl + specific methods on a Window object, but you can use this + function to create a TextCtrl object that will pass the same + pointer to the C++ code. You use it like this: + + textCtrl = PyTypeCast(window, "TextCtrl") + + WARNING: Using this function to type cast objects into types that + they are not is not recommended and is likely to cause + your program to crash... Hard.""" + pass + +def Py_isinstance(obj, klasses): + """An isinstance for Python < 2.2 that can check a sequence of + class objects like the one in 2.2 can.""" + pass + +def RegionFromPoints(): + """""" + pass + +def RegisterId(): + """""" + pass + +## def RunLater(callable, *args, **kw): +## """An alias for CallAfter.""" +## pass + +RunLater = CallAfter + +def SafeShowMessage(): + """""" + pass + +def SafeYield(): + """""" + pass + +def SaveFileSelector(): + """""" + pass + +def SetCursor(): + """""" + pass + +def Shell(): + """""" + pass + +def ShowTip(): + """""" + pass + +def Shutdown(): + """""" + pass + +def Sleep(): + """""" + pass + +def StartTimer(): + """""" + pass + +def StockCursor(): + """""" + pass + +def StripMenuCodes(): + """""" + pass + +def SysErrorCode(): + """""" + pass + +def SysErrorMsg(): + """""" + pass + +def SystemSettings_GetColour(): + """""" + pass + +def SystemSettings_GetFont(): + """""" + pass + +def SystemSettings_GetMetric(): + """""" + pass + +def SystemSettings_GetScreenType(): + """""" + pass + +def SystemSettings_GetColour(): + """""" + pass + +def SystemSettings_GetFont(): + """""" + pass + +def SystemSettings_GetMetric(): + """""" + pass + +def SystemSettings_HasFeature(): + """""" + pass + +def SystemSettings_SetScreenType(): + """""" + pass + +def TextAttr_Combine(): + """""" + pass + +def Thread_IsMain(): + """""" + pass + +def TimeSpan_Day(): + """""" + pass + +def TimeSpan_Days(): + """""" + pass + +def TimeSpan_Hour(): + """""" + pass + +def TimeSpan_Hours(): + """""" + pass + +def TimeSpan_Minute(): + """""" + pass + +def TimeSpan_Minutes(): + """""" + pass + +def TimeSpan_Second(): + """""" + pass + +def TimeSpan_Seconds(): + """""" + pass + +def TimeSpan_Week(): + """""" + pass + +def TimeSpan_Weeks(): + """""" + pass + +def ToolTip_Enable(): + """""" + pass + +def ToolTip_SetDelay(): + """""" + pass + +def Usleep(): + """""" + pass + +def Validator_IsSilent(): + """""" + pass + +def Validator_SetBellOnError(): + """""" + pass + +def WakeUpIdle(): + """""" + pass + +def WaveData(): + """""" + pass + +def Window_FindFocus(): + """""" + pass + +def Window_GetCapture(): + """""" + pass + +def Window_NewControlId(): + """""" + pass + +def Window_NextControlId(): + """""" + pass + +def Window_PrevControlId(): + """""" + pass + +def Yield(): + """""" + pass + +def YieldIfNeeded(): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Help.py b/wxPython/wxPython/lib/PyCrust/wxd/Help.py new file mode 100644 index 0000000000..e2518b37cc --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Help.py @@ -0,0 +1,127 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx +from Window import Window + + +class PopupWindow(Window): + """""" + + def Create(self): + """""" + pass + + def Position(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PopupTransientWindow(PopupWindow): + """""" + + def Dismiss(self): + """""" + pass + + def Popup(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class TipProvider: + """""" + + def GetCurrentTip(self): + """""" + pass + + def GetTip(self): + """""" + pass + + def PreprocessTip(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PyTipProvider(TipProvider): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class TipWindow(PopupTransientWindow): + """""" + + def Close(self): + """""" + pass + + def SetBoundingRect(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ToolTip(Object): + """""" + + def GetTip(self): + """""" + pass + + def GetWindow(self): + """""" + pass + + def SetTip(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/ImageHandlers.py b/wxPython/wxPython/lib/PyCrust/wxd/ImageHandlers.py new file mode 100644 index 0000000000..f034f394bb --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/ImageHandlers.py @@ -0,0 +1,142 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class ImageHandler(Object): + """""" + + def CanRead(self): + """""" + pass + + def GetExtension(self): + """""" + pass + + def GetMimeType(self): + """""" + pass + + def GetName(self): + """""" + pass + + def GetType(self): + """""" + pass + + def SetExtension(self): + """""" + pass + + def SetMimeType(self): + """""" + pass + + def SetName(self): + """""" + pass + + def SetType(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class BMPHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + +class GIFHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + +class ICOHandler(BMPHandler): + """""" + + def __init__(self): + """""" + pass + + +class CURHandler(ICOHandler): + """""" + + def __init__(self): + """""" + pass + + +class ANIHandler(CURHandler): + """""" + + def __init__(self): + """""" + pass + + +class JPEGHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + +class PCXHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + +class PNGHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + +class PNMHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + +class TIFFHandler(ImageHandler): + """""" + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Joystick.py b/wxPython/wxPython/lib/PyCrust/wxd/Joystick.py new file mode 100644 index 0000000000..2d787b63ce --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Joystick.py @@ -0,0 +1,197 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class Joystick(Object): + """""" + + def GetButtonState(self): + """""" + pass + + def GetManufacturerId(self): + """""" + pass + + def GetMaxAxes(self): + """""" + pass + + def GetMaxButtons(self): + """""" + pass + + def GetMovementThreshold(self): + """""" + pass + + def GetNumberAxes(self): + """""" + pass + + def GetNumberButtons(self): + """""" + pass + + def GetNumberJoysticks(self): + """""" + pass + + def GetPOVCTSPosition(self): + """""" + pass + + def GetPOVPosition(self): + """""" + pass + + def GetPollingMax(self): + """""" + pass + + def GetPollingMin(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetProductId(self): + """""" + pass + + def GetProductName(self): + """""" + pass + + def GetRudderMax(self): + """""" + pass + + def GetRudderMin(self): + """""" + pass + + def GetRudderPosition(self): + """""" + pass + + def GetUMax(self): + """""" + pass + + def GetUMin(self): + """""" + pass + + def GetUPosition(self): + """""" + pass + + def GetVMax(self): + """""" + pass + + def GetVMin(self): + """""" + pass + + def GetVPosition(self): + """""" + pass + + def GetXMax(self): + """""" + pass + + def GetXMin(self): + """""" + pass + + def GetYMax(self): + """""" + pass + + def GetYMin(self): + """""" + pass + + def GetZMax(self): + """""" + pass + + def GetZMin(self): + """""" + pass + + def GetZPosition(self): + """""" + pass + + def HasPOV(self): + """""" + pass + + def HasPOV4Dir(self): + """""" + pass + + def HasPOVCTS(self): + """""" + pass + + def HasRudder(self): + """""" + pass + + def HasU(self): + """""" + pass + + def HasV(self): + """""" + pass + + def HasZ(self): + """""" + pass + + def IsOk(self): + """""" + pass + + def ReleaseCapture(self): + """""" + pass + + def SetCapture(self): + """""" + pass + + def SetMovementThreshold(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/LayoutConstraints.py b/wxPython/wxPython/lib/PyCrust/wxd/LayoutConstraints.py new file mode 100644 index 0000000000..5017e62c43 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/LayoutConstraints.py @@ -0,0 +1,80 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class IndividualLayoutConstraint(Object): + """""" + + def Above(self): + """""" + pass + + def Absolute(self): + """""" + pass + + def AsIs(self): + """""" + pass + + def Below(self): + """""" + pass + + def LeftOf(self): + """""" + pass + + def PercentOf(self): + """""" + pass + + def RightOf(self): + """""" + pass + + def SameAs(self): + """""" + pass + + def Set(self): + """""" + pass + + def Unconstrained(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class LayoutConstraints(Object): + """""" + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Logging.py b/wxPython/wxPython/lib/PyCrust/wxd/Logging.py new file mode 100644 index 0000000000..ca2ed02d70 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Logging.py @@ -0,0 +1,145 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +class Log: + """""" + + def Flush(self): + """""" + pass + + def GetVerbose(self): + """""" + pass + + def HasPendingMessages(self): + """""" + pass + + def TimeStamp(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PyLog(Log): + """""" + + def Destroy(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class LogChain(Log): + """""" + + def GetOldLog(self): + """""" + pass + + def IsPassingMessages(self): + """""" + pass + + def PassMessages(self): + """""" + pass + + def SetLog(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class LogGui(Log): + """""" + + def __init__(self): + """""" + pass + + +class LogNull: + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class LogStderr(Log): + """""" + + def __init__(self): + """""" + pass + + +class LogTextCtrl(Log): + """""" + + def __init__(self): + """""" + pass + + +class LogWindow(Log): + """""" + + def GetFrame(self): + """""" + pass + + def GetOldLog(self): + """""" + pass + + def IsPassingMessages(self): + """""" + pass + + def PassMessages(self): + """""" + pass + + def Show(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Menus.py b/wxPython/wxPython/lib/PyCrust/wxd/Menus.py new file mode 100644 index 0000000000..3ec16fd151 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Menus.py @@ -0,0 +1,477 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object, EvtHandler +import Parameters as wx +from Window import Window + + +class FileHistory(Object): + """""" + + def AddFileToHistory(self): + """""" + pass + + def AddFilesToMenu(self): + """""" + pass + + def AddFilesToThisMenu(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def GetHistoryFile(self): + """""" + pass + + def GetMaxFiles(self): + """""" + pass + + def GetNoHistoryFiles(self): + """""" + pass + + def Load(self): + """""" + pass + + def RemoveFileFromHistory(self): + """""" + pass + + def RemoveMenu(self): + """""" + pass + + def Save(self): + """""" + pass + + def UseMenu(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Menu(EvtHandler): + """""" + + def Append(self): + """""" + pass + + def AppendCheckItem(self): + """""" + pass + + def AppendItem(self): + """""" + pass + + def AppendMenu(self): + """""" + pass + + def AppendRadioItem(self): + """""" + pass + + def AppendSeparator(self): + """""" + pass + + def Break(self): + """""" + pass + + def Check(self): + """""" + pass + + def Delete(self): + """""" + pass + + def DeleteItem(self): + """""" + pass + + def Destroy(self): + """""" + pass + + def DestroyId(self): + """""" + pass + + def DestroyItem(self): + """""" + pass + + def Enable(self): + """""" + pass + + def FindItem(self): + """""" + pass + + def FindItemById(self): + """""" + pass + + def GetEventHandler(self): + """""" + pass + + def GetHelpString(self): + """""" + pass + + def GetInvokingWindow(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetMenuItemCount(self): + """""" + pass + + def GetMenuItems(self): + """""" + pass + + def GetParent(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetTitle(self): + """""" + pass + + def Insert(self): + """""" + pass + + def InsertCheckItem(self): + """""" + pass + + def InsertItem(self): + """""" + pass + + def InsertMenu(self): + """""" + pass + + def InsertRadioItem(self): + """""" + pass + + def InsertSeparator(self): + """""" + pass + + def IsAttached(self): + """""" + pass + + def IsChecked(self): + """""" + pass + + def IsEnabled(self): + """""" + pass + + def Prepend(self): + """""" + pass + + def PrependCheckItem(self): + """""" + pass + + def PrependItem(self): + """""" + pass + + def PrependMenu(self): + """""" + pass + + def PrependRadioItem(self): + """""" + pass + + def PrependSeparator(self): + """""" + pass + + def Remove(self): + """""" + pass + + def RemoveItem(self): + """""" + pass + + def SetEventHandler(self): + """""" + pass + + def SetHelpString(self): + """""" + pass + + def SetInvokingWindow(self): + """""" + pass + + def SetLabel(self): + """""" + pass + + def SetParent(self): + """""" + pass + + def SetTitle(self): + """""" + pass + + def UpdateUI(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class MenuBar(Window): + """""" + + def Append(self): + """""" + pass + + def Check(self): + """""" + pass + + def Enable(self): + """""" + pass + + def EnableTop(self): + """""" + pass + + def FindItemById(self): + """""" + pass + + def FindMenu(self): + """""" + pass + + def FindMenuItem(self): + """""" + pass + + def GetHelpString(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetLabelTop(self): + """""" + pass + + def GetMenu(self): + """""" + pass + + def GetMenuCount(self): + """""" + pass + + def Insert(self): + """""" + pass + + def IsChecked(self): + """""" + pass + + def IsEnabled(self): + """""" + pass + + def IsEnabledTop(self): + """""" + pass + + def Remove(self): + """""" + pass + + def Replace(self): + """""" + pass + + def SetHelpString(self): + """""" + pass + + def SetLabel(self): + """""" + pass + + def SetLabelTop(self): + """""" + pass + + def __init__(self): + """""" + pass + +class MenuItem(Object): + """""" + + def Check(self): + """""" + pass + + def Enable(self): + """""" + pass + + def GetAccel(self): + """""" + pass + + def GetBitmap(self): + """""" + pass + + def GetHelp(self): + """""" + pass + + def GetId(self): + """""" + pass + + def GetKind(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetMenu(self): + """""" + pass + + def GetSubMenu(self): + """""" + pass + + def GetText(self): + """""" + pass + + def IsCheckable(self): + """""" + pass + + def IsChecked(self): + """""" + pass + + def IsEnabled(self): + """""" + pass + + def IsSeparator(self): + """""" + pass + + def IsSubMenu(self): + """""" + pass + + def SetAccel(self): + """""" + pass + + def SetBitmap(self): + """""" + pass + + def SetCheckable(self): + """""" + pass + + def SetHelp(self): + """""" + pass + + def SetId(self): + """""" + pass + + def SetSubMenu(self): + """""" + pass + + def SetText(self): + """""" + pass + + def Toggle(self): + """""" + pass + + def __init__(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/MimeTypes.py b/wxPython/wxPython/lib/PyCrust/wxd/MimeTypes.py new file mode 100644 index 0000000000..2637b3dd37 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/MimeTypes.py @@ -0,0 +1,185 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx + + +class FileType: + """""" + + def GetAllCommands(self): + """""" + pass + + def GetDescription(self): + """""" + pass + + def GetExtensions(self): + """""" + pass + + def GetIcon(self): + """""" + pass + + def GetIconInfo(self): + """""" + pass + + def GetMimeType(self): + """""" + pass + + def GetMimeTypes(self): + """""" + pass + + def GetOpenCommand(self): + """""" + pass + + def GetPrintCommand(self): + """""" + pass + + def SetCommand(self): + """""" + pass + + def SetDefaultIcon(self): + """""" + pass + + def Unassociate(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FileTypeInfo: + """""" + + def GetDescription(self): + """""" + pass + + def GetExtensions(self): + """""" + pass + + def GetExtensionsCount(self): + """""" + pass + + def GetIconFile(self): + """""" + pass + + def GetIconIndex(self): + """""" + pass + + def GetMimeType(self): + """""" + pass + + def GetOpenCommand(self): + """""" + pass + + def GetPrintCommand(self): + """""" + pass + + def GetShortDesc(self): + """""" + pass + + def IsValid(self): + """""" + pass + + def SetIcon(self): + """""" + pass + + def SetShortDesc(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class MimeTypesManager: + """""" + + def AddFallback(self): + """""" + pass + + def Associate(self): + """""" + pass + + def ClearData(self): + """""" + pass + + def EnumAllFileTypes(self): + """""" + pass + + def GetFileTypeFromExtension(self): + """""" + pass + + def GetFileTypeFromMimeType(self): + """""" + pass + + def Initialize(self): + """""" + pass + + def ReadMailcap(self): + """""" + pass + + def ReadMimeTypes(self): + """""" + pass + + def Unassociate(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Misc.py b/wxPython/wxPython/lib/PyCrust/wxd/Misc.py new file mode 100644 index 0000000000..132e85cea8 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Misc.py @@ -0,0 +1,558 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class ArtProvider(Object): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class BusyCursor: + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class BusyInfo(Object): + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Caret: + """""" + + def GetPosition(self): + """""" + pass + + def GetPositionTuple(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def GetSizeTuple(self): + """""" + pass + + def GetWindow(self): + """""" + pass + + def Hide(self): + """""" + pass + + def IsOk(self): + """""" + pass + + def IsVisible(self): + """""" + pass + + def Move(self): + """""" + pass + + def MoveXY(self): + """""" + pass + + def SetSize(self): + """""" + pass + + def SetSizeWH(self): + """""" + pass + + def Show(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class EncodingConverter(Object): + """""" + + def Convert(self): + """""" + pass + + def Init(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class DirItemData(Object): + """""" + + def SetNewDirName(self): + """""" + pass + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class Effects(Object): + """""" + + def DrawSunkenEdge(self): + """""" + pass + + def GetDarkShadow(self): + """""" + pass + + def GetFaceColour(self): + """""" + pass + + def GetHighlightColour(self): + """""" + pass + + def GetLightShadow(self): + """""" + pass + + def GetMediumShadow(self): + """""" + pass + + def Set(self): + """""" + pass + + def SetDarkShadow(self): + """""" + pass + + def SetFaceColour(self): + """""" + pass + + def SetHighlightColour(self): + """""" + pass + + def SetLightShadow(self): + """""" + pass + + def SetMediumShadow(self): + """""" + pass + + def TileBitmap(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FontEnumerator: + """""" + + def EnumerateEncodings(self): + """""" + pass + + def EnumerateFacenames(self): + """""" + pass + + def GetEncodings(self): + """""" + pass + + def GetFacenames(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class FontMapper: + """""" + + def CharsetToEncoding(self): + """""" + pass + + def GetAltForEncoding(self): + """""" + pass + + def IsEncodingAvailable(self): + """""" + pass + + def SetConfig(self): + """""" + pass + + def SetConfigPath(self): + """""" + pass + + def SetDialogParent(self): + """""" + pass + + def SetDialogTitle(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class LanguageInfo: + """""" + + def __getattr__(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __setattr__(self): + """""" + pass + + +class Locale: + """""" + + def AddCatalog(self): + """""" + pass + + def GetCanonicalName(self): + """""" + pass + + def GetLanguage(self): + """""" + pass + + def GetLocale(self): + """""" + pass + + def GetName(self): + """""" + pass + + def GetString(self): + """""" + pass + + def GetSysName(self): + """""" + pass + + def Init(self): + """""" + pass + + def IsLoaded(self): + """""" + pass + + def IsOk(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class NativeFontInfo: + """""" + + def FromString(self): + """""" + pass + + def FromUserString(self): + """""" + pass + + def GetEncoding(self): + """""" + pass + + def GetFaceName(self): + """""" + pass + + def GetFamily(self): + """""" + pass + + def GetPointSize(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetUnderlined(self): + """""" + pass + + def GetWeight(self): + """""" + pass + + def Init(self): + """""" + pass + + def SetEncoding(self): + """""" + pass + + def SetFaceName(self): + """""" + pass + + def SetFamily(self): + """""" + pass + + def SetPointSize(self): + """""" + pass + + def SetStyle(self): + """""" + pass + + def SetUnderlined(self): + """""" + pass + + def SetWeight(self): + """""" + pass + + def ToString(self): + """""" + pass + + def ToUserString(self): + """""" + pass + + def __init__(self): + """""" + pass + + def __str__(self): + """""" + pass + + +class PyTimer(Object): + """""" + + def GetInterval(self): + """""" + pass + + def IsOneShot(self): + """""" + pass + + def IsRunning(self): + """""" + pass + + def SetOwner(self): + """""" + pass + + def Start(self): + """""" + pass + + def Stop(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class StopWatch: + """""" + + def Pause(self): + """""" + pass + + def Resume(self): + """""" + pass + + def Start(self): + """""" + pass + + def Time(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SystemSettings: + """""" + + def __init__(self): + """""" + pass + + +class Timer(PyTimer): + """""" + + def __init__(self, evtHandler=None, id=-1): + """Create a Timer instance.""" + pass + + +class Wave(Object): + """""" + + def IsOk(self): + """""" + pass + + def Play(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class WindowDisabler: + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Panel.py b/wxPython/wxPython/lib/PyCrust/wxd/Panel.py new file mode 100644 index 0000000000..41e535b7ce --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Panel.py @@ -0,0 +1,240 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx +from Window import Window + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class Panel(Window): + """""" + + def __init__(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.TAB_TRAVERSAL, + name=wx.PyPanelNameStr): + """""" + pass + + def Create(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.TAB_TRAVERSAL, + name=wx.PyPanelNameStr): + """""" + pass + + def InitDialog(self): + """""" + pass + + +class PyPanel(Panel): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_AcceptsFocus(self): + """""" + pass + + def base_AcceptsFocusFromKeyboard(self): + """""" + pass + + def base_AddChild(self): + """""" + pass + + def base_DoGetBestSize(self): + """""" + pass + + def base_DoGetClientSize(self): + """""" + pass + + def base_DoGetPosition(self): + """""" + pass + + def base_DoGetSize(self): + """""" + pass + + def base_DoGetVirtualSize(self): + """""" + pass + + def base_DoMoveWindow(self): + """""" + pass + + def base_DoSetClientSize(self): + """""" + pass + + def base_DoSetSize(self): + """""" + pass + + def base_DoSetVirtualSize(self): + """""" + pass + + def base_GetMaxSize(self): + """""" + pass + + def base_InitDialog(self): + """""" + pass + + def base_RemoveChild(self): + """""" + pass + + def base_TransferDataFromWindow(self): + """""" + pass + + def base_TransferDataToWindow(self): + """""" + pass + + def base_Validate(self): + """""" + pass + + +class ScrolledWindow(Panel): + """""" + + def __init__(self, parent, id=-1, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.HSCROLL|wx.VSCROLL, + name=wx.PyPanelNameStr): + """""" + pass + + def Create(self, parent, id=-1, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.HSCROLL|wx.VSCROLL, + name=wx.PyPanelNameStr): + """""" + pass + + def AdjustScrollbars(self): + """""" + pass + + def CalcScrolledPosition(self, *args): + """*args can be a point or (x, y) tuple""" + pass + + def CalcScrolledPosition1(self, pt): + """""" + pass + + def CalcScrolledPosition2(self, x, y): + """""" + pass + + def CalcUnscrolledPosition(self, *args): + """*args can be a point or (x, y) tuple""" + pass + + def CalcUnscrolledPosition1(self, pt): + """""" + pass + + def CalcUnscrolledPosition2(self, x, y): + """""" + pass + + def EnableScrolling(self, xScrolling, yScrolling): + """""" + pass + + def GetScaleX(self): + """""" + pass + + def GetScaleY(self): + """""" + pass + + def GetScrollPageSize(self, orient): + """""" + pass + + def GetScrollPixelsPerUnit(self): + """""" + pass + + def GetTargetWindow(self): + """""" + pass + + def GetViewStart(self): + """""" + pass + + def IsRetained(self): + """""" + pass + + def Layout(self): + """""" + pass + + def PrepareDC(self, dc): + """""" + pass + + def Scroll(self, x, y): + """""" + pass + + def SetScale(self, xs, ys): + """""" + pass + + def SetScrollPageSize(self, orient, pageSize): + """""" + pass + + def SetScrollRate(self, xstep, ystep): + """Set the x, y scrolling increments.""" + pass + + def SetScrollbars(self, pixelsPerUnitX, pixelsPerUnitY, + noUnitsX, noUnitsY, xPos=0, yPos=0, noRefresh=False): + """""" + pass + + def SetTargetWindow(self, window): + """""" + pass + + def ViewStart(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Parameters.py b/wxPython/wxPython/lib/PyCrust/wxd/Parameters.py new file mode 100644 index 0000000000..2bc3c79592 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Parameters.py @@ -0,0 +1,68 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +class _Param: + """Used by this module to represent default wxPython parameter values, + including parameter representations like style=wx.HSCROLL|wx.VSCROLL.""" + + def __init__(self, value=None): + if value is None: + value = 'wx.' + self.__class__.__name__ + self.value = value + + def __repr__(self): + return self.value + + def __or__(self, other): + value = '%s|%s' % (self, other) + return self.__class__(value) + +_params = ( + 'BOTH', + 'DEFAULT_FRAME_STYLE', + 'DefaultPosition', + 'DefaultSize', + 'DefaultValidator', + 'EmptyString', + 'EVT_NULL', + 'HSCROLL', + 'NO_BORDER', + 'NULL', + 'NullColour', + 'PyFrameNameStr', + 'PyNOTEBOOK_NAME', + 'PyPanelNameStr', + 'PyStatusLineNameStr', + 'PySTCNameStr', + 'PyToolBarNameStr', + 'SIZE_AUTO', + 'SIZE_USE_EXISTING', + 'ST_SIZEGRIP', + 'TAB_TRAVERSAL', + 'TB_HORIZONTAL', + 'VSCROLL', + ) + +## Create classes, then instances, like this: + +## class BOTH(Param): pass +## BOTH = BOTH() + +for _param in _params: + exec 'class %s(_Param): pass' % _param + exec '%s = %s()' % (_param, _param) + +del _param +del _params +del _Param diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Printing.py b/wxPython/wxPython/lib/PyCrust/wxd/Printing.py new file mode 100644 index 0000000000..e51d4e0e8c --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Printing.py @@ -0,0 +1,651 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +from Dialogs import Dialog +from Frames import Frame +import Parameters as wx + + +class PageSetupDialog(Dialog): + """""" + + def GetPageSetupData(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PageSetupDialogData(Object): + """""" + + def EnableHelp(self): + """""" + pass + + def EnableMargins(self): + """""" + pass + + def EnableOrientation(self): + """""" + pass + + def EnablePaper(self): + """""" + pass + + def EnablePrinter(self): + """""" + pass + + def GetDefaultInfo(self): + """""" + pass + + def GetDefaultMinMargins(self): + """""" + pass + + def GetEnableHelp(self): + """""" + pass + + def GetEnableMargins(self): + """""" + pass + + def GetEnableOrientation(self): + """""" + pass + + def GetEnablePaper(self): + """""" + pass + + def GetEnablePrinter(self): + """""" + pass + + def GetMarginBottomRight(self): + """""" + pass + + def GetMarginTopLeft(self): + """""" + pass + + def GetMinMarginBottomRight(self): + """""" + pass + + def GetMinMarginTopLeft(self): + """""" + pass + + def GetPaperId(self): + """""" + pass + + def GetPaperSize(self): + """""" + pass + + def GetPrintData(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetDefaultInfo(self): + """""" + pass + + def SetDefaultMinMargins(self): + """""" + pass + + def SetMarginBottomRight(self): + """""" + pass + + def SetMarginTopLeft(self): + """""" + pass + + def SetMinMarginBottomRight(self): + """""" + pass + + def SetMinMarginTopLeft(self): + """""" + pass + + def SetPaperId(self): + """""" + pass + + def SetPaperSize(self): + """""" + pass + + def SetPrintData(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PrintDialog(Dialog): + """""" + + def GetPrintDC(self): + """""" + pass + + def GetPrintDialogData(self): + """""" + pass + + def ShowModal(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PrintDialogData(Object): + """""" + + def EnableHelp(self): + """""" + pass + + def EnablePageNumbers(self): + """""" + pass + + def EnablePrintToFile(self): + """""" + pass + + def EnableSelection(self): + """""" + pass + + def GetAllPages(self): + """""" + pass + + def GetCollate(self): + """""" + pass + + def GetFromPage(self): + """""" + pass + + def GetMaxPage(self): + """""" + pass + + def GetMinPage(self): + """""" + pass + + def GetNoCopies(self): + """""" + pass + + def GetPrintData(self): + """""" + pass + + def GetPrintToFile(self): + """""" + pass + + def GetToPage(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetCollate(self): + """""" + pass + + def SetFromPage(self): + """""" + pass + + def SetMaxPage(self): + """""" + pass + + def SetMinPage(self): + """""" + pass + + def SetNoCopies(self): + """""" + pass + + def SetPrintData(self): + """""" + pass + + def SetPrintToFile(self): + """""" + pass + + def SetSetupDialog(self): + """""" + pass + + def SetToPage(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PreviewFrame(Frame): + """""" + + def Initialize(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PrintData(Object): + """""" + + def GetCollate(self): + """""" + pass + + def GetColour(self): + """""" + pass + + def GetDuplex(self): + """""" + pass + + def GetFilename(self): + """""" + pass + + def GetFontMetricPath(self): + """""" + pass + + def GetNoCopies(self): + """""" + pass + + def GetOrientation(self): + """""" + pass + + def GetPaperId(self): + """""" + pass + + def GetPaperSize(self): + """""" + pass + + def GetPreviewCommand(self): + """""" + pass + + def GetPrintMode(self): + """""" + pass + + def GetPrinterCommand(self): + """""" + pass + + def GetPrinterName(self): + """""" + pass + + def GetPrinterOptions(self): + """""" + pass + + def GetPrinterScaleX(self): + """""" + pass + + def GetPrinterScaleY(self): + """""" + pass + + def GetPrinterTranslateX(self): + """""" + pass + + def GetPrinterTranslateY(self): + """""" + pass + + def GetQuality(self): + """""" + pass + + def Ok(self): + """""" + pass + + def SetCollate(self): + """""" + pass + + def SetColour(self): + """""" + pass + + def SetDuplex(self): + """""" + pass + + def SetFilename(self): + """""" + pass + + def SetFontMetricPath(self): + """""" + pass + + def SetNoCopies(self): + """""" + pass + + def SetOrientation(self): + """""" + pass + + def SetPaperId(self): + """""" + pass + + def SetPaperSize(self): + """""" + pass + + def SetPreviewCommand(self): + """""" + pass + + def SetPrintMode(self): + """""" + pass + + def SetPrinterCommand(self): + """""" + pass + + def SetPrinterName(self): + """""" + pass + + def SetPrinterOptions(self): + """""" + pass + + def SetPrinterScaleX(self): + """""" + pass + + def SetPrinterScaleY(self): + """""" + pass + + def SetPrinterScaling(self): + """""" + pass + + def SetPrinterTranslateX(self): + """""" + pass + + def SetPrinterTranslateY(self): + """""" + pass + + def SetPrinterTranslation(self): + """""" + pass + + def SetQuality(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PrintPreview(Object): + """""" + + def GetCanvas(self): + """""" + pass + + def GetCurrentPage(self): + """""" + pass + + def GetFrame(self): + """""" + pass + + def GetMaxPage(self): + """""" + pass + + def GetMinPage(self): + """""" + pass + + def GetPrintDialogData(self): + """""" + pass + + def GetPrintout(self): + """""" + pass + + def GetPrintoutForPrinting(self): + """""" + pass + + def GetZoom(self): + """""" + pass + + def Ok(self): + """""" + pass + + def Print(self): + """""" + pass + + def SetCanvas(self): + """""" + pass + + def SetCurrentPage(self): + """""" + pass + + def SetFrame(self): + """""" + pass + + def SetPrintout(self): + """""" + pass + + def SetZoom(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Printer(Object): + """""" + + def CreateAbortWindow(self): + """""" + pass + + def GetPrintDialogData(self): + """""" + pass + + def Print(self): + """""" + pass + + def PrintDialog(self): + """""" + pass + + def ReportError(self): + """""" + pass + + def Setup(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class Printout(Object): + """""" + + def Destroy(self): + """""" + pass + + def GetDC(self): + """""" + pass + + def GetPPIPrinter(self): + """""" + pass + + def GetPPIScreen(self): + """""" + pass + + def GetPageSizeMM(self): + """""" + pass + + def GetPageSizePixels(self): + """""" + pass + + def IsPreview(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_GetPageInfo(self): + """""" + pass + + def base_HasPage(self): + """""" + pass + + def base_OnBeginDocument(self): + """""" + pass + + def base_OnBeginPrinting(self): + """""" + pass + + def base_OnEndDocument(self): + """""" + pass + + def base_OnEndPrinting(self): + """""" + pass + + def base_OnPreparePrinting(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Process.py b/wxPython/wxPython/lib/PyCrust/wxd/Process.py new file mode 100644 index 0000000000..97c410eaf2 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Process.py @@ -0,0 +1,77 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import EvtHandler + + +class Process(EvtHandler): + """""" + + def CloseOutput(self): + """""" + pass + + def Destroy(self): + """""" + pass + + def Detach(self): + """""" + pass + + def GetErrorStream(self): + """""" + pass + + def GetInputStream(self): + """""" + pass + + def GetOutputStream(self): + """""" + pass + + def IsErrorAvailable(self): + """""" + pass + + def IsInputAvailable(self): + """""" + pass + + def IsInputOpened(self): + """""" + pass + + def IsRedirected(self): + """""" + pass + + def Redirect(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_OnTerminate(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/SashSplitter.py b/wxPython/wxPython/lib/PyCrust/wxd/SashSplitter.py new file mode 100644 index 0000000000..fd35e0c718 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/SashSplitter.py @@ -0,0 +1,226 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +import Parameters as wx +from Window import Window + + +class SashWindow(Window): + """""" + + def Create(self): + """""" + pass + + def GetDefaultBorderSize(self): + """""" + pass + + def GetEdgeMargin(self): + """""" + pass + + def GetExtraBorderSize(self): + """""" + pass + + def GetMaximumSizeX(self): + """""" + pass + + def GetMaximumSizeY(self): + """""" + pass + + def GetMinimumSizeX(self): + """""" + pass + + def GetMinimumSizeY(self): + """""" + pass + + def GetSashVisible(self): + """""" + pass + + def HasBorder(self): + """""" + pass + + def SetDefaultBorderSize(self): + """""" + pass + + def SetExtraBorderSize(self): + """""" + pass + + def SetMaximumSizeX(self): + """""" + pass + + def SetMaximumSizeY(self): + """""" + pass + + def SetMinimumSizeX(self): + """""" + pass + + def SetMinimumSizeY(self): + """""" + pass + + def SetSashBorder(self): + """""" + pass + + def SetSashVisible(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SashLayoutWindow(SashWindow): + """""" + + def Create(self): + """""" + pass + + def GetAlignment(self): + """""" + pass + + def GetOrientation(self): + """""" + pass + + def SetAlignment(self): + """""" + pass + + def SetDefaultSize(self): + """""" + pass + + def SetOrientation(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class SplitterWindow(Window): + """""" + + def Create(self): + """""" + pass + + def GetBorderSize(self): + """""" + pass + + def GetMinimumPaneSize(self): + """""" + pass + + def GetNeedUpdating(self): + """""" + pass + + def GetSashPosition(self): + """""" + pass + + def GetSashSize(self): + """""" + pass + + def GetSplitMode(self): + """""" + pass + + def GetWindow1(self): + """""" + pass + + def GetWindow2(self): + """""" + pass + + def Initialize(self): + """""" + pass + + def IsSplit(self): + """""" + pass + + def ReplaceWindow(self): + """""" + pass + + def SetBorderSize(self): + """""" + pass + + def SetMinimumPaneSize(self): + """""" + pass + + def SetNeedUpdating(self): + """""" + pass + + def SetSashPosition(self): + """""" + pass + + def SetSashSize(self): + """""" + pass + + def SetSplitMode(self): + """""" + pass + + def SizeWindows(self): + """""" + pass + + def SplitHorizontally(self): + """""" + pass + + def SplitVertically(self): + """""" + pass + + def Unsplit(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Sizers.py b/wxPython/wxPython/lib/PyCrust/wxd/Sizers.py new file mode 100644 index 0000000000..44446b3d51 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Sizers.py @@ -0,0 +1,488 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +import Parameters as wx + + +class Sizer(Object): + """""" + + def Add(self): + """""" + pass + + def AddMany(self): + """""" + pass + + def AddSizer(self): + """""" + pass + + def AddSpacer(self): + """""" + pass + + def AddWindow(self): + """""" + pass + + def Clear(self): + """""" + pass + + def DeleteWindows(self): + """""" + pass + + def Destroy(self): + """""" + pass + + def Fit(self): + """""" + pass + + def FitInside(self): + """""" + pass + + def GetChildren(self): + """""" + pass + + def GetMinSize(self): + """""" + pass + + def GetMinSizeTuple(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetPositionTuple(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def GetSizeTuple(self): + """""" + pass + + def Hide(self): + """""" + pass + + def HideSizer(self): + """""" + pass + + def HideWindow(self): + """""" + pass + + def Insert(self): + """""" + pass + + def InsertSizer(self): + """""" + pass + + def InsertSpacer(self): + """""" + pass + + def InsertWindow(self): + """""" + pass + + def IsShown(self): + """""" + pass + + def IsShownSizer(self): + """""" + pass + + def IsShownWindow(self): + """""" + pass + + def Layout(self): + """""" + pass + + def Prepend(self): + """""" + pass + + def PrependSizer(self): + """""" + pass + + def PrependSpacer(self): + """""" + pass + + def PrependWindow(self): + """""" + pass + + def Remove(self): + """""" + pass + + def RemovePos(self): + """""" + pass + + def RemoveSizer(self): + """""" + pass + + def RemoveWindow(self): + """""" + pass + + def SetDimension(self): + """""" + pass + + def SetItemMinSize(self): + """""" + pass + + def SetItemMinSizePos(self): + """""" + pass + + def SetItemMinSizeSizer(self): + """""" + pass + + def SetItemMinSizeWindow(self): + """""" + pass + + def SetMinSize(self): + """""" + pass + + def SetSizeHints(self): + """""" + pass + + def SetVirtualSizeHints(self): + """""" + pass + + def Show(self): + """""" + pass + + def ShowItems(self): + """""" + pass + + def ShowSizer(self): + """""" + pass + + def ShowWindow(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setOORInfo(self): + """""" + pass + + +class SizerItem(Object): + """""" + + def CalcMin(self): + """""" + pass + + def DeleteWindows(self): + """""" + pass + + def GetBorder(self): + """""" + pass + + def GetFlag(self): + """""" + pass + + def GetOption(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetRatio(self): + """""" + pass + + def GetSize(self): + """""" + pass + + def GetSizer(self): + """""" + pass + + def GetUserData(self): + """""" + pass + + def GetWindow(self): + """""" + pass + + def IsShown(self): + """""" + pass + + def IsSizer(self): + """""" + pass + + def IsSpacer(self): + """""" + pass + + def IsWindow(self): + """""" + pass + + def SetBorder(self): + """""" + pass + + def SetDimension(self): + """""" + pass + + def SetFlag(self): + """""" + pass + + def SetInitSize(self): + """""" + pass + + def SetOption(self): + """""" + pass + + def SetRatio(self): + """""" + pass + + def SetRatioSize(self): + """""" + pass + + def SetRatioWH(self): + """""" + pass + + def SetSizer(self): + """""" + pass + + def SetWindow(self): + """""" + pass + + def Show(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class BoxSizer(Sizer): + """""" + + def CalcMin(self): + """""" + pass + + def GetOrientation(self): + """""" + pass + + def RecalcSizes(self): + """""" + pass + + def SetOrientation(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class GridSizer(Sizer): + """""" + + def CalcMin(self): + """""" + pass + + def GetCols(self): + """""" + pass + + def GetHGap(self): + """""" + pass + + def GetRows(self): + """""" + pass + + def GetVGap(self): + """""" + pass + + def RecalcSizes(self): + """""" + pass + + def SetCols(self): + """""" + pass + + def SetHGap(self): + """""" + pass + + def SetRows(self): + """""" + pass + + def SetVGap(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class FlexGridSizer(GridSizer): + """""" + + def AddGrowableCol(self): + """""" + pass + + def AddGrowableRow(self): + """""" + pass + + def CalcMin(self): + """""" + pass + + def RecalcSizes(self): + """""" + pass + + def RemoveGrowableCol(self): + """""" + pass + + def RemoveGrowableRow(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class NotebookSizer(Sizer): + """""" + + def CalcMin(self): + """""" + pass + + def GetNotebook(self): + """""" + pass + + def RecalcSizes(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class PySizer(Sizer): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class StaticBoxSizer(BoxSizer): + """""" + + def CalcMin(self): + """""" + pass + + def GetStaticBox(self): + """""" + pass + + def RecalcSizes(self): + """""" + pass + + def __init__(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Streams.py b/wxPython/wxPython/lib/PyCrust/wxd/Streams.py new file mode 100644 index 0000000000..a08b7b336b --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Streams.py @@ -0,0 +1,96 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +class InputStream: + """""" + + def CanRead(self): + """""" + pass + + def Eof(self): + """""" + pass + + def GetC(self): + """""" + pass + + def LastRead(self): + """""" + pass + + def Peek(self): + """""" + pass + + def SeekI(self): + """""" + pass + + def TellI(self): + """""" + pass + + def Ungetch(self): + """""" + pass + + def __init__(self): + """""" + pass + + def close(self): + """""" + pass + + def eof(self): + """""" + pass + + def flush(self): + """""" + pass + + def read(self): + """""" + pass + + def readline(self): + """""" + pass + + def readlines(self): + """""" + pass + + def seek(self): + """""" + pass + + def tell(self): + """""" + pass + + +class OutputStream: + """""" + + def __init__(self): + """""" + pass + + def write(self): + """""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/StyledTextConstants.py b/wxPython/wxPython/lib/PyCrust/wxd/StyledTextConstants.py new file mode 100644 index 0000000000..0dced840ff --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/StyledTextConstants.py @@ -0,0 +1,643 @@ +"""wxStyledTextControl constants for documentation. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +from wxPython import wx +from wxPython import stc + + +""" +>>> from wxPython import stc_c +>>> def gen_constants(): +... print '# Begin generated constants.' +... for item in dir(stc_c): # dir returns a sorted list. +... if not callable(stc_c.__dict__[item]) \ +... and not item.startswith('__'): +... print item, '=', 'stc.' + item, ' #', \ +... repr(stc_c.__dict__[item]) +... print '# End generated constants.' + +""" + +# Begin generated constants. +STC_USE_DND = stc.STC_USE_DND # 1 +wxEVT_STC_CHANGE = stc.wxEVT_STC_CHANGE # 10206 +wxEVT_STC_CHARADDED = stc.wxEVT_STC_CHARADDED # 10208 +wxEVT_STC_DOUBLECLICK = stc.wxEVT_STC_DOUBLECLICK # 10213 +wxEVT_STC_DO_DROP = stc.wxEVT_STC_DO_DROP # 10227 +wxEVT_STC_DRAG_OVER = stc.wxEVT_STC_DRAG_OVER # 10226 +wxEVT_STC_DWELLEND = stc.wxEVT_STC_DWELLEND # 10224 +wxEVT_STC_DWELLSTART = stc.wxEVT_STC_DWELLSTART # 10223 +wxEVT_STC_KEY = stc.wxEVT_STC_KEY # 10212 +wxEVT_STC_MACRORECORD = stc.wxEVT_STC_MACRORECORD # 10216 +wxEVT_STC_MARGINCLICK = stc.wxEVT_STC_MARGINCLICK # 10217 +wxEVT_STC_MODIFIED = stc.wxEVT_STC_MODIFIED # 10215 +wxEVT_STC_NEEDSHOWN = stc.wxEVT_STC_NEEDSHOWN # 10218 +wxEVT_STC_PAINTED = stc.wxEVT_STC_PAINTED # 10220 +wxEVT_STC_POSCHANGED = stc.wxEVT_STC_POSCHANGED # 10219 +wxEVT_STC_ROMODIFYATTEMPT = stc.wxEVT_STC_ROMODIFYATTEMPT # 10211 +wxEVT_STC_SAVEPOINTLEFT = stc.wxEVT_STC_SAVEPOINTLEFT # 10210 +wxEVT_STC_SAVEPOINTREACHED = stc.wxEVT_STC_SAVEPOINTREACHED # 10209 +wxEVT_STC_START_DRAG = stc.wxEVT_STC_START_DRAG # 10225 +wxEVT_STC_STYLENEEDED = stc.wxEVT_STC_STYLENEEDED # 10207 +wxEVT_STC_UPDATEUI = stc.wxEVT_STC_UPDATEUI # 10214 +wxEVT_STC_URIDROPPED = stc.wxEVT_STC_URIDROPPED # 10222 +wxEVT_STC_USERLISTSELECTION = stc.wxEVT_STC_USERLISTSELECTION # 10221 +wxEVT_STC_ZOOM = stc.wxEVT_STC_ZOOM # 10228 +wxSTC_ADA_CHARACTER = stc.wxSTC_ADA_CHARACTER # 5 +wxSTC_ADA_COMMENT = stc.wxSTC_ADA_COMMENT # 1 +wxSTC_ADA_DEFAULT = stc.wxSTC_ADA_DEFAULT # 0 +wxSTC_ADA_IDENTIFIER = stc.wxSTC_ADA_IDENTIFIER # 7 +wxSTC_ADA_NUMBER = stc.wxSTC_ADA_NUMBER # 2 +wxSTC_ADA_OPERATOR = stc.wxSTC_ADA_OPERATOR # 6 +wxSTC_ADA_STRING = stc.wxSTC_ADA_STRING # 4 +wxSTC_ADA_STRINGEOL = stc.wxSTC_ADA_STRINGEOL # 8 +wxSTC_ADA_WORD = stc.wxSTC_ADA_WORD # 3 +wxSTC_AVE_COMMENT = stc.wxSTC_AVE_COMMENT # 1 +wxSTC_AVE_DEFAULT = stc.wxSTC_AVE_DEFAULT # 0 +wxSTC_AVE_ENUM = stc.wxSTC_AVE_ENUM # 7 +wxSTC_AVE_IDENTIFIER = stc.wxSTC_AVE_IDENTIFIER # 9 +wxSTC_AVE_KEYWORD = stc.wxSTC_AVE_KEYWORD # 4 +wxSTC_AVE_NUMBER = stc.wxSTC_AVE_NUMBER # 2 +wxSTC_AVE_OPERATOR = stc.wxSTC_AVE_OPERATOR # 10 +wxSTC_AVE_STATEMENT = stc.wxSTC_AVE_STATEMENT # 5 +wxSTC_AVE_STRING = stc.wxSTC_AVE_STRING # 6 +wxSTC_AVE_STRINGEOL = stc.wxSTC_AVE_STRINGEOL # 8 +wxSTC_AVE_WORD = stc.wxSTC_AVE_WORD # 3 +wxSTC_BAAN_COMMENT = stc.wxSTC_BAAN_COMMENT # 1 +wxSTC_BAAN_COMMENTDOC = stc.wxSTC_BAAN_COMMENTDOC # 2 +wxSTC_BAAN_DEFAULT = stc.wxSTC_BAAN_DEFAULT # 0 +wxSTC_BAAN_IDENTIFIER = stc.wxSTC_BAAN_IDENTIFIER # 8 +wxSTC_BAAN_NUMBER = stc.wxSTC_BAAN_NUMBER # 3 +wxSTC_BAAN_OPERATOR = stc.wxSTC_BAAN_OPERATOR # 7 +wxSTC_BAAN_PREPROCESSOR = stc.wxSTC_BAAN_PREPROCESSOR # 6 +wxSTC_BAAN_STRING = stc.wxSTC_BAAN_STRING # 5 +wxSTC_BAAN_STRINGEOL = stc.wxSTC_BAAN_STRINGEOL # 9 +wxSTC_BAAN_WORD = stc.wxSTC_BAAN_WORD # 4 +wxSTC_BAAN_WORD2 = stc.wxSTC_BAAN_WORD2 # 10 +wxSTC_BAT_COMMAND = stc.wxSTC_BAT_COMMAND # 5 +wxSTC_BAT_COMMENT = stc.wxSTC_BAT_COMMENT # 1 +wxSTC_BAT_DEFAULT = stc.wxSTC_BAT_DEFAULT # 0 +wxSTC_BAT_HIDE = stc.wxSTC_BAT_HIDE # 4 +wxSTC_BAT_IDENTIFIER = stc.wxSTC_BAT_IDENTIFIER # 6 +wxSTC_BAT_LABEL = stc.wxSTC_BAT_LABEL # 3 +wxSTC_BAT_OPERATOR = stc.wxSTC_BAT_OPERATOR # 7 +wxSTC_BAT_WORD = stc.wxSTC_BAT_WORD # 2 +wxSTC_B_COMMENT = stc.wxSTC_B_COMMENT # 1 +wxSTC_B_DATE = stc.wxSTC_B_DATE # 8 +wxSTC_B_DEFAULT = stc.wxSTC_B_DEFAULT # 0 +wxSTC_B_IDENTIFIER = stc.wxSTC_B_IDENTIFIER # 7 +wxSTC_B_KEYWORD = stc.wxSTC_B_KEYWORD # 3 +wxSTC_B_NUMBER = stc.wxSTC_B_NUMBER # 2 +wxSTC_B_OPERATOR = stc.wxSTC_B_OPERATOR # 6 +wxSTC_B_PREPROCESSOR = stc.wxSTC_B_PREPROCESSOR # 5 +wxSTC_B_STRING = stc.wxSTC_B_STRING # 4 +wxSTC_CACHE_CARET = stc.wxSTC_CACHE_CARET # 1 +wxSTC_CACHE_DOCUMENT = stc.wxSTC_CACHE_DOCUMENT # 3 +wxSTC_CACHE_NONE = stc.wxSTC_CACHE_NONE # 0 +wxSTC_CACHE_PAGE = stc.wxSTC_CACHE_PAGE # 2 +wxSTC_CARET_EVEN = stc.wxSTC_CARET_EVEN # 8 +wxSTC_CARET_JUMPS = stc.wxSTC_CARET_JUMPS # 16 +wxSTC_CARET_SLOP = stc.wxSTC_CARET_SLOP # 1 +wxSTC_CARET_STRICT = stc.wxSTC_CARET_STRICT # 4 +wxSTC_CASE_LOWER = stc.wxSTC_CASE_LOWER # 2 +wxSTC_CASE_MIXED = stc.wxSTC_CASE_MIXED # 0 +wxSTC_CASE_UPPER = stc.wxSTC_CASE_UPPER # 1 +wxSTC_CHARSET_ANSI = stc.wxSTC_CHARSET_ANSI # 0 +wxSTC_CHARSET_ARABIC = stc.wxSTC_CHARSET_ARABIC # 178 +wxSTC_CHARSET_BALTIC = stc.wxSTC_CHARSET_BALTIC # 186 +wxSTC_CHARSET_CHINESEBIG5 = stc.wxSTC_CHARSET_CHINESEBIG5 # 136 +wxSTC_CHARSET_DEFAULT = stc.wxSTC_CHARSET_DEFAULT # 1 +wxSTC_CHARSET_EASTEUROPE = stc.wxSTC_CHARSET_EASTEUROPE # 238 +wxSTC_CHARSET_GB2312 = stc.wxSTC_CHARSET_GB2312 # 134 +wxSTC_CHARSET_GREEK = stc.wxSTC_CHARSET_GREEK # 161 +wxSTC_CHARSET_HANGUL = stc.wxSTC_CHARSET_HANGUL # 129 +wxSTC_CHARSET_HEBREW = stc.wxSTC_CHARSET_HEBREW # 177 +wxSTC_CHARSET_JOHAB = stc.wxSTC_CHARSET_JOHAB # 130 +wxSTC_CHARSET_MAC = stc.wxSTC_CHARSET_MAC # 77 +wxSTC_CHARSET_OEM = stc.wxSTC_CHARSET_OEM # 255 +wxSTC_CHARSET_RUSSIAN = stc.wxSTC_CHARSET_RUSSIAN # 204 +wxSTC_CHARSET_SHIFTJIS = stc.wxSTC_CHARSET_SHIFTJIS # 128 +wxSTC_CHARSET_SYMBOL = stc.wxSTC_CHARSET_SYMBOL # 2 +wxSTC_CHARSET_THAI = stc.wxSTC_CHARSET_THAI # 222 +wxSTC_CHARSET_TURKISH = stc.wxSTC_CHARSET_TURKISH # 162 +wxSTC_CHARSET_VIETNAMESE = stc.wxSTC_CHARSET_VIETNAMESE # 163 +wxSTC_CMD_BACKTAB = stc.wxSTC_CMD_BACKTAB # 2328 +wxSTC_CMD_CANCEL = stc.wxSTC_CMD_CANCEL # 2325 +wxSTC_CMD_CHARLEFT = stc.wxSTC_CMD_CHARLEFT # 2304 +wxSTC_CMD_CHARLEFTEXTEND = stc.wxSTC_CMD_CHARLEFTEXTEND # 2305 +wxSTC_CMD_CHARRIGHT = stc.wxSTC_CMD_CHARRIGHT # 2306 +wxSTC_CMD_CHARRIGHTEXTEND = stc.wxSTC_CMD_CHARRIGHTEXTEND # 2307 +wxSTC_CMD_CLEAR = stc.wxSTC_CMD_CLEAR # 2180 +wxSTC_CMD_COPY = stc.wxSTC_CMD_COPY # 2178 +wxSTC_CMD_CUT = stc.wxSTC_CMD_CUT # 2177 +wxSTC_CMD_DELETEBACK = stc.wxSTC_CMD_DELETEBACK # 2326 +wxSTC_CMD_DELETEBACKNOTLINE = stc.wxSTC_CMD_DELETEBACKNOTLINE # 2344 +wxSTC_CMD_DELLINELEFT = stc.wxSTC_CMD_DELLINELEFT # 2395 +wxSTC_CMD_DELLINERIGHT = stc.wxSTC_CMD_DELLINERIGHT # 2396 +wxSTC_CMD_DELWORDLEFT = stc.wxSTC_CMD_DELWORDLEFT # 2335 +wxSTC_CMD_DELWORDRIGHT = stc.wxSTC_CMD_DELWORDRIGHT # 2336 +wxSTC_CMD_DOCUMENTEND = stc.wxSTC_CMD_DOCUMENTEND # 2318 +wxSTC_CMD_DOCUMENTENDEXTEND = stc.wxSTC_CMD_DOCUMENTENDEXTEND # 2319 +wxSTC_CMD_DOCUMENTSTART = stc.wxSTC_CMD_DOCUMENTSTART # 2316 +wxSTC_CMD_DOCUMENTSTARTEXTEND = stc.wxSTC_CMD_DOCUMENTSTARTEXTEND # 2317 +wxSTC_CMD_EDITTOGGLEOVERTYPE = stc.wxSTC_CMD_EDITTOGGLEOVERTYPE # 2324 +wxSTC_CMD_FORMFEED = stc.wxSTC_CMD_FORMFEED # 2330 +wxSTC_CMD_HOME = stc.wxSTC_CMD_HOME # 2312 +wxSTC_CMD_HOMEDISPLAY = stc.wxSTC_CMD_HOMEDISPLAY # 2345 +wxSTC_CMD_HOMEDISPLAYEXTEND = stc.wxSTC_CMD_HOMEDISPLAYEXTEND # 2346 +wxSTC_CMD_HOMEEXTEND = stc.wxSTC_CMD_HOMEEXTEND # 2313 +wxSTC_CMD_LINECUT = stc.wxSTC_CMD_LINECUT # 2337 +wxSTC_CMD_LINEDELETE = stc.wxSTC_CMD_LINEDELETE # 2338 +wxSTC_CMD_LINEDOWN = stc.wxSTC_CMD_LINEDOWN # 2300 +wxSTC_CMD_LINEDOWNEXTEND = stc.wxSTC_CMD_LINEDOWNEXTEND # 2301 +wxSTC_CMD_LINEEND = stc.wxSTC_CMD_LINEEND # 2314 +wxSTC_CMD_LINEENDDISPLAY = stc.wxSTC_CMD_LINEENDDISPLAY # 2347 +wxSTC_CMD_LINEENDDISPLAYEXTEND = stc.wxSTC_CMD_LINEENDDISPLAYEXTEND # 2348 +wxSTC_CMD_LINEENDEXTEND = stc.wxSTC_CMD_LINEENDEXTEND # 2315 +wxSTC_CMD_LINESCROLLDOWN = stc.wxSTC_CMD_LINESCROLLDOWN # 2342 +wxSTC_CMD_LINESCROLLUP = stc.wxSTC_CMD_LINESCROLLUP # 2343 +wxSTC_CMD_LINETRANSPOSE = stc.wxSTC_CMD_LINETRANSPOSE # 2339 +wxSTC_CMD_LINEUP = stc.wxSTC_CMD_LINEUP # 2302 +wxSTC_CMD_LINEUPEXTEND = stc.wxSTC_CMD_LINEUPEXTEND # 2303 +wxSTC_CMD_LOWERCASE = stc.wxSTC_CMD_LOWERCASE # 2340 +wxSTC_CMD_NEWLINE = stc.wxSTC_CMD_NEWLINE # 2329 +wxSTC_CMD_PAGEDOWN = stc.wxSTC_CMD_PAGEDOWN # 2322 +wxSTC_CMD_PAGEDOWNEXTEND = stc.wxSTC_CMD_PAGEDOWNEXTEND # 2323 +wxSTC_CMD_PAGEUP = stc.wxSTC_CMD_PAGEUP # 2320 +wxSTC_CMD_PAGEUPEXTEND = stc.wxSTC_CMD_PAGEUPEXTEND # 2321 +wxSTC_CMD_PASTE = stc.wxSTC_CMD_PASTE # 2179 +wxSTC_CMD_REDO = stc.wxSTC_CMD_REDO # 2011 +wxSTC_CMD_SELECTALL = stc.wxSTC_CMD_SELECTALL # 2013 +wxSTC_CMD_TAB = stc.wxSTC_CMD_TAB # 2327 +wxSTC_CMD_UNDO = stc.wxSTC_CMD_UNDO # 2176 +wxSTC_CMD_UPPERCASE = stc.wxSTC_CMD_UPPERCASE # 2341 +wxSTC_CMD_VCHOME = stc.wxSTC_CMD_VCHOME # 2331 +wxSTC_CMD_VCHOMEEXTEND = stc.wxSTC_CMD_VCHOMEEXTEND # 2332 +wxSTC_CMD_WORDLEFT = stc.wxSTC_CMD_WORDLEFT # 2308 +wxSTC_CMD_WORDLEFTEXTEND = stc.wxSTC_CMD_WORDLEFTEXTEND # 2309 +wxSTC_CMD_WORDPARTLEFT = stc.wxSTC_CMD_WORDPARTLEFT # 2390 +wxSTC_CMD_WORDPARTLEFTEXTEND = stc.wxSTC_CMD_WORDPARTLEFTEXTEND # 2391 +wxSTC_CMD_WORDPARTRIGHT = stc.wxSTC_CMD_WORDPARTRIGHT # 2392 +wxSTC_CMD_WORDPARTRIGHTEXTEND = stc.wxSTC_CMD_WORDPARTRIGHTEXTEND # 2393 +wxSTC_CMD_WORDRIGHT = stc.wxSTC_CMD_WORDRIGHT # 2310 +wxSTC_CMD_WORDRIGHTEXTEND = stc.wxSTC_CMD_WORDRIGHTEXTEND # 2311 +wxSTC_CMD_ZOOMIN = stc.wxSTC_CMD_ZOOMIN # 2333 +wxSTC_CMD_ZOOMOUT = stc.wxSTC_CMD_ZOOMOUT # 2334 +wxSTC_CONF_COMMENT = stc.wxSTC_CONF_COMMENT # 1 +wxSTC_CONF_DEFAULT = stc.wxSTC_CONF_DEFAULT # 0 +wxSTC_CONF_DIRECTIVE = stc.wxSTC_CONF_DIRECTIVE # 9 +wxSTC_CONF_EXTENSION = stc.wxSTC_CONF_EXTENSION # 4 +wxSTC_CONF_IDENTIFIER = stc.wxSTC_CONF_IDENTIFIER # 3 +wxSTC_CONF_IP = stc.wxSTC_CONF_IP # 8 +wxSTC_CONF_NUMBER = stc.wxSTC_CONF_NUMBER # 2 +wxSTC_CONF_OPERATOR = stc.wxSTC_CONF_OPERATOR # 7 +wxSTC_CONF_PARAMETER = stc.wxSTC_CONF_PARAMETER # 5 +wxSTC_CONF_STRING = stc.wxSTC_CONF_STRING # 6 +wxSTC_CP_UTF8 = stc.wxSTC_CP_UTF8 # 65001 +wxSTC_CURSORNORMAL = stc.wxSTC_CURSORNORMAL # -1 +wxSTC_CURSORWAIT = stc.wxSTC_CURSORWAIT # 3 +wxSTC_C_CHARACTER = stc.wxSTC_C_CHARACTER # 7 +wxSTC_C_COMMENT = stc.wxSTC_C_COMMENT # 1 +wxSTC_C_COMMENTDOC = stc.wxSTC_C_COMMENTDOC # 3 +wxSTC_C_COMMENTDOCKEYWORD = stc.wxSTC_C_COMMENTDOCKEYWORD # 17 +wxSTC_C_COMMENTDOCKEYWORDERROR = stc.wxSTC_C_COMMENTDOCKEYWORDERROR # 18 +wxSTC_C_COMMENTLINE = stc.wxSTC_C_COMMENTLINE # 2 +wxSTC_C_COMMENTLINEDOC = stc.wxSTC_C_COMMENTLINEDOC # 15 +wxSTC_C_DEFAULT = stc.wxSTC_C_DEFAULT # 0 +wxSTC_C_IDENTIFIER = stc.wxSTC_C_IDENTIFIER # 11 +wxSTC_C_NUMBER = stc.wxSTC_C_NUMBER # 4 +wxSTC_C_OPERATOR = stc.wxSTC_C_OPERATOR # 10 +wxSTC_C_PREPROCESSOR = stc.wxSTC_C_PREPROCESSOR # 9 +wxSTC_C_REGEX = stc.wxSTC_C_REGEX # 14 +wxSTC_C_STRING = stc.wxSTC_C_STRING # 6 +wxSTC_C_STRINGEOL = stc.wxSTC_C_STRINGEOL # 12 +wxSTC_C_UUID = stc.wxSTC_C_UUID # 8 +wxSTC_C_VERBATIM = stc.wxSTC_C_VERBATIM # 13 +wxSTC_C_WORD = stc.wxSTC_C_WORD # 5 +wxSTC_C_WORD2 = stc.wxSTC_C_WORD2 # 16 +wxSTC_DIFF_ADDED = stc.wxSTC_DIFF_ADDED # 6 +wxSTC_DIFF_COMMAND = stc.wxSTC_DIFF_COMMAND # 2 +wxSTC_DIFF_COMMENT = stc.wxSTC_DIFF_COMMENT # 1 +wxSTC_DIFF_DEFAULT = stc.wxSTC_DIFF_DEFAULT # 0 +wxSTC_DIFF_DELETED = stc.wxSTC_DIFF_DELETED # 5 +wxSTC_DIFF_HEADER = stc.wxSTC_DIFF_HEADER # 3 +wxSTC_DIFF_POSITION = stc.wxSTC_DIFF_POSITION # 4 +wxSTC_EDGE_BACKGROUND = stc.wxSTC_EDGE_BACKGROUND # 2 +wxSTC_EDGE_LINE = stc.wxSTC_EDGE_LINE # 1 +wxSTC_EDGE_NONE = stc.wxSTC_EDGE_NONE # 0 +wxSTC_EIFFEL_CHARACTER = stc.wxSTC_EIFFEL_CHARACTER # 5 +wxSTC_EIFFEL_COMMENTLINE = stc.wxSTC_EIFFEL_COMMENTLINE # 1 +wxSTC_EIFFEL_DEFAULT = stc.wxSTC_EIFFEL_DEFAULT # 0 +wxSTC_EIFFEL_IDENTIFIER = stc.wxSTC_EIFFEL_IDENTIFIER # 7 +wxSTC_EIFFEL_NUMBER = stc.wxSTC_EIFFEL_NUMBER # 2 +wxSTC_EIFFEL_OPERATOR = stc.wxSTC_EIFFEL_OPERATOR # 6 +wxSTC_EIFFEL_STRING = stc.wxSTC_EIFFEL_STRING # 4 +wxSTC_EIFFEL_STRINGEOL = stc.wxSTC_EIFFEL_STRINGEOL # 8 +wxSTC_EIFFEL_WORD = stc.wxSTC_EIFFEL_WORD # 3 +wxSTC_EOL_CR = stc.wxSTC_EOL_CR # 1 +wxSTC_EOL_CRLF = stc.wxSTC_EOL_CRLF # 0 +wxSTC_EOL_LF = stc.wxSTC_EOL_LF # 2 +wxSTC_ERR_BORLAND = stc.wxSTC_ERR_BORLAND # 5 +wxSTC_ERR_CMD = stc.wxSTC_ERR_CMD # 4 +wxSTC_ERR_CTAG = stc.wxSTC_ERR_CTAG # 9 +wxSTC_ERR_DEFAULT = stc.wxSTC_ERR_DEFAULT # 0 +wxSTC_ERR_DIFF_ADDITION = stc.wxSTC_ERR_DIFF_ADDITION # 11 +wxSTC_ERR_DIFF_CHANGED = stc.wxSTC_ERR_DIFF_CHANGED # 10 +wxSTC_ERR_DIFF_DELETION = stc.wxSTC_ERR_DIFF_DELETION # 12 +wxSTC_ERR_DIFF_MESSAGE = stc.wxSTC_ERR_DIFF_MESSAGE # 13 +wxSTC_ERR_GCC = stc.wxSTC_ERR_GCC # 2 +wxSTC_ERR_LUA = stc.wxSTC_ERR_LUA # 8 +wxSTC_ERR_MS = stc.wxSTC_ERR_MS # 3 +wxSTC_ERR_NET = stc.wxSTC_ERR_NET # 7 +wxSTC_ERR_PERL = stc.wxSTC_ERR_PERL # 6 +wxSTC_ERR_PYTHON = stc.wxSTC_ERR_PYTHON # 1 +wxSTC_FIND_MATCHCASE = stc.wxSTC_FIND_MATCHCASE # 4 +wxSTC_FIND_REGEXP = stc.wxSTC_FIND_REGEXP # 2097152 +wxSTC_FIND_WHOLEWORD = stc.wxSTC_FIND_WHOLEWORD # 2 +wxSTC_FIND_WORDSTART = stc.wxSTC_FIND_WORDSTART # 1048576 +wxSTC_FOLDLEVELBASE = stc.wxSTC_FOLDLEVELBASE # 1024 +wxSTC_FOLDLEVELHEADERFLAG = stc.wxSTC_FOLDLEVELHEADERFLAG # 8192 +wxSTC_FOLDLEVELNUMBERMASK = stc.wxSTC_FOLDLEVELNUMBERMASK # 4095 +wxSTC_FOLDLEVELWHITEFLAG = stc.wxSTC_FOLDLEVELWHITEFLAG # 4096 +wxSTC_HBA_COMMENTLINE = stc.wxSTC_HBA_COMMENTLINE # 82 +wxSTC_HBA_DEFAULT = stc.wxSTC_HBA_DEFAULT # 81 +wxSTC_HBA_IDENTIFIER = stc.wxSTC_HBA_IDENTIFIER # 86 +wxSTC_HBA_NUMBER = stc.wxSTC_HBA_NUMBER # 83 +wxSTC_HBA_START = stc.wxSTC_HBA_START # 80 +wxSTC_HBA_STRING = stc.wxSTC_HBA_STRING # 85 +wxSTC_HBA_STRINGEOL = stc.wxSTC_HBA_STRINGEOL # 87 +wxSTC_HBA_WORD = stc.wxSTC_HBA_WORD # 84 +wxSTC_HB_COMMENTLINE = stc.wxSTC_HB_COMMENTLINE # 72 +wxSTC_HB_DEFAULT = stc.wxSTC_HB_DEFAULT # 71 +wxSTC_HB_IDENTIFIER = stc.wxSTC_HB_IDENTIFIER # 76 +wxSTC_HB_NUMBER = stc.wxSTC_HB_NUMBER # 73 +wxSTC_HB_START = stc.wxSTC_HB_START # 70 +wxSTC_HB_STRING = stc.wxSTC_HB_STRING # 75 +wxSTC_HB_STRINGEOL = stc.wxSTC_HB_STRINGEOL # 77 +wxSTC_HB_WORD = stc.wxSTC_HB_WORD # 74 +wxSTC_HJA_COMMENT = stc.wxSTC_HJA_COMMENT # 57 +wxSTC_HJA_COMMENTDOC = stc.wxSTC_HJA_COMMENTDOC # 59 +wxSTC_HJA_COMMENTLINE = stc.wxSTC_HJA_COMMENTLINE # 58 +wxSTC_HJA_DEFAULT = stc.wxSTC_HJA_DEFAULT # 56 +wxSTC_HJA_DOUBLESTRING = stc.wxSTC_HJA_DOUBLESTRING # 63 +wxSTC_HJA_KEYWORD = stc.wxSTC_HJA_KEYWORD # 62 +wxSTC_HJA_NUMBER = stc.wxSTC_HJA_NUMBER # 60 +wxSTC_HJA_REGEX = stc.wxSTC_HJA_REGEX # 67 +wxSTC_HJA_SINGLESTRING = stc.wxSTC_HJA_SINGLESTRING # 64 +wxSTC_HJA_START = stc.wxSTC_HJA_START # 55 +wxSTC_HJA_STRINGEOL = stc.wxSTC_HJA_STRINGEOL # 66 +wxSTC_HJA_SYMBOLS = stc.wxSTC_HJA_SYMBOLS # 65 +wxSTC_HJA_WORD = stc.wxSTC_HJA_WORD # 61 +wxSTC_HJ_COMMENT = stc.wxSTC_HJ_COMMENT # 42 +wxSTC_HJ_COMMENTDOC = stc.wxSTC_HJ_COMMENTDOC # 44 +wxSTC_HJ_COMMENTLINE = stc.wxSTC_HJ_COMMENTLINE # 43 +wxSTC_HJ_DEFAULT = stc.wxSTC_HJ_DEFAULT # 41 +wxSTC_HJ_DOUBLESTRING = stc.wxSTC_HJ_DOUBLESTRING # 48 +wxSTC_HJ_KEYWORD = stc.wxSTC_HJ_KEYWORD # 47 +wxSTC_HJ_NUMBER = stc.wxSTC_HJ_NUMBER # 45 +wxSTC_HJ_REGEX = stc.wxSTC_HJ_REGEX # 52 +wxSTC_HJ_SINGLESTRING = stc.wxSTC_HJ_SINGLESTRING # 49 +wxSTC_HJ_START = stc.wxSTC_HJ_START # 40 +wxSTC_HJ_STRINGEOL = stc.wxSTC_HJ_STRINGEOL # 51 +wxSTC_HJ_SYMBOLS = stc.wxSTC_HJ_SYMBOLS # 50 +wxSTC_HJ_WORD = stc.wxSTC_HJ_WORD # 46 +wxSTC_HPA_CHARACTER = stc.wxSTC_HPA_CHARACTER # 110 +wxSTC_HPA_CLASSNAME = stc.wxSTC_HPA_CLASSNAME # 114 +wxSTC_HPA_COMMENTLINE = stc.wxSTC_HPA_COMMENTLINE # 107 +wxSTC_HPA_DEFAULT = stc.wxSTC_HPA_DEFAULT # 106 +wxSTC_HPA_DEFNAME = stc.wxSTC_HPA_DEFNAME # 115 +wxSTC_HPA_IDENTIFIER = stc.wxSTC_HPA_IDENTIFIER # 117 +wxSTC_HPA_NUMBER = stc.wxSTC_HPA_NUMBER # 108 +wxSTC_HPA_OPERATOR = stc.wxSTC_HPA_OPERATOR # 116 +wxSTC_HPA_START = stc.wxSTC_HPA_START # 105 +wxSTC_HPA_STRING = stc.wxSTC_HPA_STRING # 109 +wxSTC_HPA_TRIPLE = stc.wxSTC_HPA_TRIPLE # 112 +wxSTC_HPA_TRIPLEDOUBLE = stc.wxSTC_HPA_TRIPLEDOUBLE # 113 +wxSTC_HPA_WORD = stc.wxSTC_HPA_WORD # 111 +wxSTC_HPHP_COMMENT = stc.wxSTC_HPHP_COMMENT # 124 +wxSTC_HPHP_COMMENTLINE = stc.wxSTC_HPHP_COMMENTLINE # 125 +wxSTC_HPHP_DEFAULT = stc.wxSTC_HPHP_DEFAULT # 118 +wxSTC_HPHP_HSTRING = stc.wxSTC_HPHP_HSTRING # 119 +wxSTC_HPHP_HSTRING_VARIABLE = stc.wxSTC_HPHP_HSTRING_VARIABLE # 126 +wxSTC_HPHP_NUMBER = stc.wxSTC_HPHP_NUMBER # 122 +wxSTC_HPHP_OPERATOR = stc.wxSTC_HPHP_OPERATOR # 127 +wxSTC_HPHP_SIMPLESTRING = stc.wxSTC_HPHP_SIMPLESTRING # 120 +wxSTC_HPHP_VARIABLE = stc.wxSTC_HPHP_VARIABLE # 123 +wxSTC_HPHP_WORD = stc.wxSTC_HPHP_WORD # 121 +wxSTC_HP_CHARACTER = stc.wxSTC_HP_CHARACTER # 95 +wxSTC_HP_CLASSNAME = stc.wxSTC_HP_CLASSNAME # 99 +wxSTC_HP_COMMENTLINE = stc.wxSTC_HP_COMMENTLINE # 92 +wxSTC_HP_DEFAULT = stc.wxSTC_HP_DEFAULT # 91 +wxSTC_HP_DEFNAME = stc.wxSTC_HP_DEFNAME # 100 +wxSTC_HP_IDENTIFIER = stc.wxSTC_HP_IDENTIFIER # 102 +wxSTC_HP_NUMBER = stc.wxSTC_HP_NUMBER # 93 +wxSTC_HP_OPERATOR = stc.wxSTC_HP_OPERATOR # 101 +wxSTC_HP_START = stc.wxSTC_HP_START # 90 +wxSTC_HP_STRING = stc.wxSTC_HP_STRING # 94 +wxSTC_HP_TRIPLE = stc.wxSTC_HP_TRIPLE # 97 +wxSTC_HP_TRIPLEDOUBLE = stc.wxSTC_HP_TRIPLEDOUBLE # 98 +wxSTC_HP_WORD = stc.wxSTC_HP_WORD # 96 +wxSTC_H_ASP = stc.wxSTC_H_ASP # 15 +wxSTC_H_ASPAT = stc.wxSTC_H_ASPAT # 16 +wxSTC_H_ATTRIBUTE = stc.wxSTC_H_ATTRIBUTE # 3 +wxSTC_H_ATTRIBUTEUNKNOWN = stc.wxSTC_H_ATTRIBUTEUNKNOWN # 4 +wxSTC_H_CDATA = stc.wxSTC_H_CDATA # 17 +wxSTC_H_COMMENT = stc.wxSTC_H_COMMENT # 9 +wxSTC_H_DEFAULT = stc.wxSTC_H_DEFAULT # 0 +wxSTC_H_DOUBLESTRING = stc.wxSTC_H_DOUBLESTRING # 6 +wxSTC_H_ENTITY = stc.wxSTC_H_ENTITY # 10 +wxSTC_H_NUMBER = stc.wxSTC_H_NUMBER # 5 +wxSTC_H_OTHER = stc.wxSTC_H_OTHER # 8 +wxSTC_H_QUESTION = stc.wxSTC_H_QUESTION # 18 +wxSTC_H_SCRIPT = stc.wxSTC_H_SCRIPT # 14 +wxSTC_H_SGML_1ST_PARAM = stc.wxSTC_H_SGML_1ST_PARAM # 23 +wxSTC_H_SGML_1ST_PARAM_COMMENT = stc.wxSTC_H_SGML_1ST_PARAM_COMMENT # 30 +wxSTC_H_SGML_BLOCK_DEFAULT = stc.wxSTC_H_SGML_BLOCK_DEFAULT # 31 +wxSTC_H_SGML_COMMAND = stc.wxSTC_H_SGML_COMMAND # 22 +wxSTC_H_SGML_COMMENT = stc.wxSTC_H_SGML_COMMENT # 29 +wxSTC_H_SGML_DEFAULT = stc.wxSTC_H_SGML_DEFAULT # 21 +wxSTC_H_SGML_DOUBLESTRING = stc.wxSTC_H_SGML_DOUBLESTRING # 24 +wxSTC_H_SGML_ENTITY = stc.wxSTC_H_SGML_ENTITY # 28 +wxSTC_H_SGML_ERROR = stc.wxSTC_H_SGML_ERROR # 26 +wxSTC_H_SGML_SIMPLESTRING = stc.wxSTC_H_SGML_SIMPLESTRING # 25 +wxSTC_H_SGML_SPECIAL = stc.wxSTC_H_SGML_SPECIAL # 27 +wxSTC_H_SINGLESTRING = stc.wxSTC_H_SINGLESTRING # 7 +wxSTC_H_TAG = stc.wxSTC_H_TAG # 1 +wxSTC_H_TAGEND = stc.wxSTC_H_TAGEND # 11 +wxSTC_H_TAGUNKNOWN = stc.wxSTC_H_TAGUNKNOWN # 2 +wxSTC_H_VALUE = stc.wxSTC_H_VALUE # 19 +wxSTC_H_XCCOMMENT = stc.wxSTC_H_XCCOMMENT # 20 +wxSTC_H_XMLEND = stc.wxSTC_H_XMLEND # 13 +wxSTC_H_XMLSTART = stc.wxSTC_H_XMLSTART # 12 +wxSTC_INDIC0_MASK = stc.wxSTC_INDIC0_MASK # 32 +wxSTC_INDIC1_MASK = stc.wxSTC_INDIC1_MASK # 64 +wxSTC_INDIC2_MASK = stc.wxSTC_INDIC2_MASK # 128 +wxSTC_INDICS_MASK = stc.wxSTC_INDICS_MASK # 224 +wxSTC_INDIC_DIAGONAL = stc.wxSTC_INDIC_DIAGONAL # 3 +wxSTC_INDIC_MAX = stc.wxSTC_INDIC_MAX # 7 +wxSTC_INDIC_PLAIN = stc.wxSTC_INDIC_PLAIN # 0 +wxSTC_INDIC_SQUIGGLE = stc.wxSTC_INDIC_SQUIGGLE # 1 +wxSTC_INDIC_STRIKE = stc.wxSTC_INDIC_STRIKE # 4 +wxSTC_INDIC_TT = stc.wxSTC_INDIC_TT # 2 +wxSTC_INVALID_POSITION = stc.wxSTC_INVALID_POSITION # -1 +wxSTC_KEY_ADD = stc.wxSTC_KEY_ADD # 310 +wxSTC_KEY_BACK = stc.wxSTC_KEY_BACK # 8 +wxSTC_KEY_DELETE = stc.wxSTC_KEY_DELETE # 308 +wxSTC_KEY_DIVIDE = stc.wxSTC_KEY_DIVIDE # 312 +wxSTC_KEY_DOWN = stc.wxSTC_KEY_DOWN # 300 +wxSTC_KEY_END = stc.wxSTC_KEY_END # 305 +wxSTC_KEY_ESCAPE = stc.wxSTC_KEY_ESCAPE # 7 +wxSTC_KEY_HOME = stc.wxSTC_KEY_HOME # 304 +wxSTC_KEY_INSERT = stc.wxSTC_KEY_INSERT # 309 +wxSTC_KEY_LEFT = stc.wxSTC_KEY_LEFT # 302 +wxSTC_KEY_NEXT = stc.wxSTC_KEY_NEXT # 307 +wxSTC_KEY_PRIOR = stc.wxSTC_KEY_PRIOR # 306 +wxSTC_KEY_RETURN = stc.wxSTC_KEY_RETURN # 13 +wxSTC_KEY_RIGHT = stc.wxSTC_KEY_RIGHT # 303 +wxSTC_KEY_SUBTRACT = stc.wxSTC_KEY_SUBTRACT # 311 +wxSTC_KEY_TAB = stc.wxSTC_KEY_TAB # 9 +wxSTC_KEY_UP = stc.wxSTC_KEY_UP # 301 +wxSTC_LASTSTEPINUNDOREDO = stc.wxSTC_LASTSTEPINUNDOREDO # 256 +wxSTC_LEXER_START = stc.wxSTC_LEXER_START # 4000 +wxSTC_LEX_ADA = stc.wxSTC_LEX_ADA # 20 +wxSTC_LEX_ASP = stc.wxSTC_LEX_ASP # 29 +wxSTC_LEX_AUTOMATIC = stc.wxSTC_LEX_AUTOMATIC # 1000 +wxSTC_LEX_AVE = stc.wxSTC_LEX_AVE # 19 +wxSTC_LEX_BAAN = stc.wxSTC_LEX_BAAN # 31 +wxSTC_LEX_BATCH = stc.wxSTC_LEX_BATCH # 12 +wxSTC_LEX_BULLANT = stc.wxSTC_LEX_BULLANT # 27 +wxSTC_LEX_CONF = stc.wxSTC_LEX_CONF # 17 +wxSTC_LEX_CONTAINER = stc.wxSTC_LEX_CONTAINER # 0 +wxSTC_LEX_CPP = stc.wxSTC_LEX_CPP # 3 +wxSTC_LEX_DIFF = stc.wxSTC_LEX_DIFF # 16 +wxSTC_LEX_EIFFEL = stc.wxSTC_LEX_EIFFEL # 23 +wxSTC_LEX_EIFFELKW = stc.wxSTC_LEX_EIFFELKW # 24 +wxSTC_LEX_ERRORLIST = stc.wxSTC_LEX_ERRORLIST # 10 +wxSTC_LEX_HTML = stc.wxSTC_LEX_HTML # 4 +wxSTC_LEX_LATEX = stc.wxSTC_LEX_LATEX # 14 +wxSTC_LEX_LISP = stc.wxSTC_LEX_LISP # 21 +wxSTC_LEX_LUA = stc.wxSTC_LEX_LUA # 15 +wxSTC_LEX_MAKEFILE = stc.wxSTC_LEX_MAKEFILE # 11 +wxSTC_LEX_MATLAB = stc.wxSTC_LEX_MATLAB # 32 +wxSTC_LEX_NNCRONTAB = stc.wxSTC_LEX_NNCRONTAB # 26 +wxSTC_LEX_NULL = stc.wxSTC_LEX_NULL # 1 +wxSTC_LEX_PASCAL = stc.wxSTC_LEX_PASCAL # 18 +wxSTC_LEX_PERL = stc.wxSTC_LEX_PERL # 6 +wxSTC_LEX_PHP = stc.wxSTC_LEX_PHP # 30 +wxSTC_LEX_PROPERTIES = stc.wxSTC_LEX_PROPERTIES # 9 +wxSTC_LEX_PYTHON = stc.wxSTC_LEX_PYTHON # 2 +wxSTC_LEX_RUBY = stc.wxSTC_LEX_RUBY # 22 +wxSTC_LEX_SCRIPTOL = stc.wxSTC_LEX_SCRIPTOL # 33 +wxSTC_LEX_SQL = stc.wxSTC_LEX_SQL # 7 +wxSTC_LEX_TCL = stc.wxSTC_LEX_TCL # 25 +wxSTC_LEX_VB = stc.wxSTC_LEX_VB # 8 +wxSTC_LEX_VBSCRIPT = stc.wxSTC_LEX_VBSCRIPT # 28 +wxSTC_LEX_XCODE = stc.wxSTC_LEX_XCODE # 13 +wxSTC_LEX_XML = stc.wxSTC_LEX_XML # 5 +wxSTC_LISP_COMMENT = stc.wxSTC_LISP_COMMENT # 1 +wxSTC_LISP_DEFAULT = stc.wxSTC_LISP_DEFAULT # 0 +wxSTC_LISP_IDENTIFIER = stc.wxSTC_LISP_IDENTIFIER # 9 +wxSTC_LISP_KEYWORD = stc.wxSTC_LISP_KEYWORD # 3 +wxSTC_LISP_NUMBER = stc.wxSTC_LISP_NUMBER # 2 +wxSTC_LISP_OPERATOR = stc.wxSTC_LISP_OPERATOR # 10 +wxSTC_LISP_STRING = stc.wxSTC_LISP_STRING # 6 +wxSTC_LISP_STRINGEOL = stc.wxSTC_LISP_STRINGEOL # 8 +wxSTC_LUA_CHARACTER = stc.wxSTC_LUA_CHARACTER # 7 +wxSTC_LUA_COMMENT = stc.wxSTC_LUA_COMMENT # 1 +wxSTC_LUA_COMMENTDOC = stc.wxSTC_LUA_COMMENTDOC # 3 +wxSTC_LUA_COMMENTLINE = stc.wxSTC_LUA_COMMENTLINE # 2 +wxSTC_LUA_DEFAULT = stc.wxSTC_LUA_DEFAULT # 0 +wxSTC_LUA_IDENTIFIER = stc.wxSTC_LUA_IDENTIFIER # 11 +wxSTC_LUA_LITERALSTRING = stc.wxSTC_LUA_LITERALSTRING # 8 +wxSTC_LUA_NUMBER = stc.wxSTC_LUA_NUMBER # 4 +wxSTC_LUA_OPERATOR = stc.wxSTC_LUA_OPERATOR # 10 +wxSTC_LUA_PREPROCESSOR = stc.wxSTC_LUA_PREPROCESSOR # 9 +wxSTC_LUA_STRING = stc.wxSTC_LUA_STRING # 6 +wxSTC_LUA_STRINGEOL = stc.wxSTC_LUA_STRINGEOL # 12 +wxSTC_LUA_WORD = stc.wxSTC_LUA_WORD # 5 +wxSTC_LUA_WORD2 = stc.wxSTC_LUA_WORD2 # 13 +wxSTC_LUA_WORD3 = stc.wxSTC_LUA_WORD3 # 14 +wxSTC_LUA_WORD4 = stc.wxSTC_LUA_WORD4 # 15 +wxSTC_LUA_WORD5 = stc.wxSTC_LUA_WORD5 # 16 +wxSTC_LUA_WORD6 = stc.wxSTC_LUA_WORD6 # 17 +wxSTC_L_COMMAND = stc.wxSTC_L_COMMAND # 1 +wxSTC_L_COMMENT = stc.wxSTC_L_COMMENT # 4 +wxSTC_L_DEFAULT = stc.wxSTC_L_DEFAULT # 0 +wxSTC_L_MATH = stc.wxSTC_L_MATH # 3 +wxSTC_L_TAG = stc.wxSTC_L_TAG # 2 +wxSTC_MAKE_COMMENT = stc.wxSTC_MAKE_COMMENT # 1 +wxSTC_MAKE_DEFAULT = stc.wxSTC_MAKE_DEFAULT # 0 +wxSTC_MAKE_IDENTIFIER = stc.wxSTC_MAKE_IDENTIFIER # 3 +wxSTC_MAKE_IDEOL = stc.wxSTC_MAKE_IDEOL # 9 +wxSTC_MAKE_OPERATOR = stc.wxSTC_MAKE_OPERATOR # 4 +wxSTC_MAKE_PREPROCESSOR = stc.wxSTC_MAKE_PREPROCESSOR # 2 +wxSTC_MAKE_TARGET = stc.wxSTC_MAKE_TARGET # 5 +wxSTC_MARGIN_NUMBER = stc.wxSTC_MARGIN_NUMBER # 1 +wxSTC_MARGIN_SYMBOL = stc.wxSTC_MARGIN_SYMBOL # 0 +wxSTC_MARKER_MAX = stc.wxSTC_MARKER_MAX # 31 +wxSTC_MARKNUM_FOLDER = stc.wxSTC_MARKNUM_FOLDER # 30 +wxSTC_MARKNUM_FOLDEREND = stc.wxSTC_MARKNUM_FOLDEREND # 25 +wxSTC_MARKNUM_FOLDERMIDTAIL = stc.wxSTC_MARKNUM_FOLDERMIDTAIL # 27 +wxSTC_MARKNUM_FOLDEROPEN = stc.wxSTC_MARKNUM_FOLDEROPEN # 31 +wxSTC_MARKNUM_FOLDEROPENMID = stc.wxSTC_MARKNUM_FOLDEROPENMID # 26 +wxSTC_MARKNUM_FOLDERSUB = stc.wxSTC_MARKNUM_FOLDERSUB # 29 +wxSTC_MARKNUM_FOLDERTAIL = stc.wxSTC_MARKNUM_FOLDERTAIL # 28 +wxSTC_MARK_ARROW = stc.wxSTC_MARK_ARROW # 2 +wxSTC_MARK_ARROWDOWN = stc.wxSTC_MARK_ARROWDOWN # 6 +wxSTC_MARK_ARROWS = stc.wxSTC_MARK_ARROWS # 24 +wxSTC_MARK_BACKGROUND = stc.wxSTC_MARK_BACKGROUND # 22 +wxSTC_MARK_BOXMINUS = stc.wxSTC_MARK_BOXMINUS # 14 +wxSTC_MARK_BOXMINUSCONNECTED = stc.wxSTC_MARK_BOXMINUSCONNECTED # 15 +wxSTC_MARK_BOXPLUS = stc.wxSTC_MARK_BOXPLUS # 12 +wxSTC_MARK_BOXPLUSCONNECTED = stc.wxSTC_MARK_BOXPLUSCONNECTED # 13 +wxSTC_MARK_CHARACTER = stc.wxSTC_MARK_CHARACTER # 10000 +wxSTC_MARK_CIRCLE = stc.wxSTC_MARK_CIRCLE # 0 +wxSTC_MARK_CIRCLEMINUS = stc.wxSTC_MARK_CIRCLEMINUS # 20 +wxSTC_MARK_CIRCLEMINUSCONNECTED = stc.wxSTC_MARK_CIRCLEMINUSCONNECTED # 21 +wxSTC_MARK_CIRCLEPLUS = stc.wxSTC_MARK_CIRCLEPLUS # 18 +wxSTC_MARK_CIRCLEPLUSCONNECTED = stc.wxSTC_MARK_CIRCLEPLUSCONNECTED # 19 +wxSTC_MARK_DOTDOTDOT = stc.wxSTC_MARK_DOTDOTDOT # 23 +wxSTC_MARK_EMPTY = stc.wxSTC_MARK_EMPTY # 5 +wxSTC_MARK_LCORNER = stc.wxSTC_MARK_LCORNER # 10 +wxSTC_MARK_LCORNERCURVE = stc.wxSTC_MARK_LCORNERCURVE # 16 +wxSTC_MARK_MINUS = stc.wxSTC_MARK_MINUS # 7 +wxSTC_MARK_PLUS = stc.wxSTC_MARK_PLUS # 8 +wxSTC_MARK_ROUNDRECT = stc.wxSTC_MARK_ROUNDRECT # 1 +wxSTC_MARK_SHORTARROW = stc.wxSTC_MARK_SHORTARROW # 4 +wxSTC_MARK_SMALLRECT = stc.wxSTC_MARK_SMALLRECT # 3 +wxSTC_MARK_TCORNER = stc.wxSTC_MARK_TCORNER # 11 +wxSTC_MARK_TCORNERCURVE = stc.wxSTC_MARK_TCORNERCURVE # 17 +wxSTC_MARK_VLINE = stc.wxSTC_MARK_VLINE # 9 +wxSTC_MASK_FOLDERS = stc.wxSTC_MASK_FOLDERS # -33554432 +wxSTC_MATLAB_COMMAND = stc.wxSTC_MATLAB_COMMAND # 2 +wxSTC_MATLAB_COMMENT = stc.wxSTC_MATLAB_COMMENT # 1 +wxSTC_MATLAB_DEFAULT = stc.wxSTC_MATLAB_DEFAULT # 0 +wxSTC_MATLAB_IDENTIFIER = stc.wxSTC_MATLAB_IDENTIFIER # 7 +wxSTC_MATLAB_KEYWORD = stc.wxSTC_MATLAB_KEYWORD # 4 +wxSTC_MATLAB_NUMBER = stc.wxSTC_MATLAB_NUMBER # 3 +wxSTC_MATLAB_OPERATOR = stc.wxSTC_MATLAB_OPERATOR # 6 +wxSTC_MATLAB_STRING = stc.wxSTC_MATLAB_STRING # 5 +wxSTC_MODEVENTMASKALL = stc.wxSTC_MODEVENTMASKALL # 3959 +wxSTC_MOD_BEFOREDELETE = stc.wxSTC_MOD_BEFOREDELETE # 2048 +wxSTC_MOD_BEFOREINSERT = stc.wxSTC_MOD_BEFOREINSERT # 1024 +wxSTC_MOD_CHANGEFOLD = stc.wxSTC_MOD_CHANGEFOLD # 8 +wxSTC_MOD_CHANGEMARKER = stc.wxSTC_MOD_CHANGEMARKER # 512 +wxSTC_MOD_CHANGESTYLE = stc.wxSTC_MOD_CHANGESTYLE # 4 +wxSTC_MOD_DELETETEXT = stc.wxSTC_MOD_DELETETEXT # 2 +wxSTC_MOD_INSERTTEXT = stc.wxSTC_MOD_INSERTTEXT # 1 +wxSTC_NNCRONTAB_ASTERISK = stc.wxSTC_NNCRONTAB_ASTERISK # 6 +wxSTC_NNCRONTAB_COMMENT = stc.wxSTC_NNCRONTAB_COMMENT # 1 +wxSTC_NNCRONTAB_DEFAULT = stc.wxSTC_NNCRONTAB_DEFAULT # 0 +wxSTC_NNCRONTAB_ENVIRONMENT = stc.wxSTC_NNCRONTAB_ENVIRONMENT # 9 +wxSTC_NNCRONTAB_IDENTIFIER = stc.wxSTC_NNCRONTAB_IDENTIFIER # 10 +wxSTC_NNCRONTAB_KEYWORD = stc.wxSTC_NNCRONTAB_KEYWORD # 4 +wxSTC_NNCRONTAB_MODIFIER = stc.wxSTC_NNCRONTAB_MODIFIER # 5 +wxSTC_NNCRONTAB_NUMBER = stc.wxSTC_NNCRONTAB_NUMBER # 7 +wxSTC_NNCRONTAB_SECTION = stc.wxSTC_NNCRONTAB_SECTION # 3 +wxSTC_NNCRONTAB_STRING = stc.wxSTC_NNCRONTAB_STRING # 8 +wxSTC_NNCRONTAB_TASK = stc.wxSTC_NNCRONTAB_TASK # 2 +wxSTC_OPTIONAL_START = stc.wxSTC_OPTIONAL_START # 3000 +wxSTC_PERFORMED_REDO = stc.wxSTC_PERFORMED_REDO # 64 +wxSTC_PERFORMED_UNDO = stc.wxSTC_PERFORMED_UNDO # 32 +wxSTC_PERFORMED_USER = stc.wxSTC_PERFORMED_USER # 16 +wxSTC_PL_ARRAY = stc.wxSTC_PL_ARRAY # 13 +wxSTC_PL_BACKTICKS = stc.wxSTC_PL_BACKTICKS # 20 +wxSTC_PL_CHARACTER = stc.wxSTC_PL_CHARACTER # 7 +wxSTC_PL_COMMENTLINE = stc.wxSTC_PL_COMMENTLINE # 2 +wxSTC_PL_DATASECTION = stc.wxSTC_PL_DATASECTION # 21 +wxSTC_PL_DEFAULT = stc.wxSTC_PL_DEFAULT # 0 +wxSTC_PL_ERROR = stc.wxSTC_PL_ERROR # 1 +wxSTC_PL_HASH = stc.wxSTC_PL_HASH # 14 +wxSTC_PL_HERE_DELIM = stc.wxSTC_PL_HERE_DELIM # 22 +wxSTC_PL_HERE_Q = stc.wxSTC_PL_HERE_Q # 23 +wxSTC_PL_HERE_QQ = stc.wxSTC_PL_HERE_QQ # 24 +wxSTC_PL_HERE_QX = stc.wxSTC_PL_HERE_QX # 25 +wxSTC_PL_IDENTIFIER = stc.wxSTC_PL_IDENTIFIER # 11 +wxSTC_PL_LONGQUOTE = stc.wxSTC_PL_LONGQUOTE # 19 +wxSTC_PL_NUMBER = stc.wxSTC_PL_NUMBER # 4 +wxSTC_PL_OPERATOR = stc.wxSTC_PL_OPERATOR # 10 +wxSTC_PL_POD = stc.wxSTC_PL_POD # 3 +wxSTC_PL_PREPROCESSOR = stc.wxSTC_PL_PREPROCESSOR # 9 +wxSTC_PL_PUNCTUATION = stc.wxSTC_PL_PUNCTUATION # 8 +wxSTC_PL_REGEX = stc.wxSTC_PL_REGEX # 17 +wxSTC_PL_REGSUBST = stc.wxSTC_PL_REGSUBST # 18 +wxSTC_PL_SCALAR = stc.wxSTC_PL_SCALAR # 12 +wxSTC_PL_STRING = stc.wxSTC_PL_STRING # 6 +wxSTC_PL_STRING_Q = stc.wxSTC_PL_STRING_Q # 26 +wxSTC_PL_STRING_QQ = stc.wxSTC_PL_STRING_QQ # 27 +wxSTC_PL_STRING_QR = stc.wxSTC_PL_STRING_QR # 29 +wxSTC_PL_STRING_QW = stc.wxSTC_PL_STRING_QW # 30 +wxSTC_PL_STRING_QX = stc.wxSTC_PL_STRING_QX # 28 +wxSTC_PL_SYMBOLTABLE = stc.wxSTC_PL_SYMBOLTABLE # 15 +wxSTC_PL_WORD = stc.wxSTC_PL_WORD # 5 +wxSTC_PRINT_BLACKONWHITE = stc.wxSTC_PRINT_BLACKONWHITE # 2 +wxSTC_PRINT_COLOURONWHITE = stc.wxSTC_PRINT_COLOURONWHITE # 3 +wxSTC_PRINT_COLOURONWHITEDEFAULTBG = stc.wxSTC_PRINT_COLOURONWHITEDEFAULTBG # 4 +wxSTC_PRINT_INVERTLIGHT = stc.wxSTC_PRINT_INVERTLIGHT # 1 +wxSTC_PRINT_NORMAL = stc.wxSTC_PRINT_NORMAL # 0 +wxSTC_PROPS_ASSIGNMENT = stc.wxSTC_PROPS_ASSIGNMENT # 3 +wxSTC_PROPS_COMMENT = stc.wxSTC_PROPS_COMMENT # 1 +wxSTC_PROPS_DEFAULT = stc.wxSTC_PROPS_DEFAULT # 0 +wxSTC_PROPS_DEFVAL = stc.wxSTC_PROPS_DEFVAL # 4 +wxSTC_PROPS_SECTION = stc.wxSTC_PROPS_SECTION # 2 +wxSTC_P_CHARACTER = stc.wxSTC_P_CHARACTER # 4 +wxSTC_P_CLASSNAME = stc.wxSTC_P_CLASSNAME # 8 +wxSTC_P_COMMENTBLOCK = stc.wxSTC_P_COMMENTBLOCK # 12 +wxSTC_P_COMMENTLINE = stc.wxSTC_P_COMMENTLINE # 1 +wxSTC_P_DEFAULT = stc.wxSTC_P_DEFAULT # 0 +wxSTC_P_DEFNAME = stc.wxSTC_P_DEFNAME # 9 +wxSTC_P_IDENTIFIER = stc.wxSTC_P_IDENTIFIER # 11 +wxSTC_P_NUMBER = stc.wxSTC_P_NUMBER # 2 +wxSTC_P_OPERATOR = stc.wxSTC_P_OPERATOR # 10 +wxSTC_P_STRING = stc.wxSTC_P_STRING # 3 +wxSTC_P_STRINGEOL = stc.wxSTC_P_STRINGEOL # 13 +wxSTC_P_TRIPLE = stc.wxSTC_P_TRIPLE # 6 +wxSTC_P_TRIPLEDOUBLE = stc.wxSTC_P_TRIPLEDOUBLE # 7 +wxSTC_P_WORD = stc.wxSTC_P_WORD # 5 +wxSTC_SCMOD_ALT = stc.wxSTC_SCMOD_ALT # 4 +wxSTC_SCMOD_CTRL = stc.wxSTC_SCMOD_CTRL # 2 +wxSTC_SCMOD_SHIFT = stc.wxSTC_SCMOD_SHIFT # 1 +wxSTC_SCRIPTOL_CHARACTER = stc.wxSTC_SCRIPTOL_CHARACTER # 7 +wxSTC_SCRIPTOL_COMMENT = stc.wxSTC_SCRIPTOL_COMMENT # 1 +wxSTC_SCRIPTOL_COMMENTBASIC = stc.wxSTC_SCRIPTOL_COMMENTBASIC # 19 +wxSTC_SCRIPTOL_COMMENTDOC = stc.wxSTC_SCRIPTOL_COMMENTDOC # 3 +wxSTC_SCRIPTOL_COMMENTDOCKEYWORD = stc.wxSTC_SCRIPTOL_COMMENTDOCKEYWORD # 17 +wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR = stc.wxSTC_SCRIPTOL_COMMENTDOCKEYWORDERROR # 18 +wxSTC_SCRIPTOL_COMMENTLINE = stc.wxSTC_SCRIPTOL_COMMENTLINE # 2 +wxSTC_SCRIPTOL_COMMENTLINEDOC = stc.wxSTC_SCRIPTOL_COMMENTLINEDOC # 15 +wxSTC_SCRIPTOL_DEFAULT = stc.wxSTC_SCRIPTOL_DEFAULT # 0 +wxSTC_SCRIPTOL_IDENTIFIER = stc.wxSTC_SCRIPTOL_IDENTIFIER # 11 +wxSTC_SCRIPTOL_NUMBER = stc.wxSTC_SCRIPTOL_NUMBER # 4 +wxSTC_SCRIPTOL_OPERATOR = stc.wxSTC_SCRIPTOL_OPERATOR # 10 +wxSTC_SCRIPTOL_PREPROCESSOR = stc.wxSTC_SCRIPTOL_PREPROCESSOR # 9 +wxSTC_SCRIPTOL_REGEX = stc.wxSTC_SCRIPTOL_REGEX # 14 +wxSTC_SCRIPTOL_STRING = stc.wxSTC_SCRIPTOL_STRING # 6 +wxSTC_SCRIPTOL_STRINGEOL = stc.wxSTC_SCRIPTOL_STRINGEOL # 12 +wxSTC_SCRIPTOL_UUID = stc.wxSTC_SCRIPTOL_UUID # 8 +wxSTC_SCRIPTOL_VERBATIM = stc.wxSTC_SCRIPTOL_VERBATIM # 13 +wxSTC_SCRIPTOL_WORD = stc.wxSTC_SCRIPTOL_WORD # 5 +wxSTC_SCRIPTOL_WORD2 = stc.wxSTC_SCRIPTOL_WORD2 # 16 +wxSTC_START = stc.wxSTC_START # 2000 +wxSTC_STYLE_BRACEBAD = stc.wxSTC_STYLE_BRACEBAD # 35 +wxSTC_STYLE_BRACELIGHT = stc.wxSTC_STYLE_BRACELIGHT # 34 +wxSTC_STYLE_CONTROLCHAR = stc.wxSTC_STYLE_CONTROLCHAR # 36 +wxSTC_STYLE_DEFAULT = stc.wxSTC_STYLE_DEFAULT # 32 +wxSTC_STYLE_INDENTGUIDE = stc.wxSTC_STYLE_INDENTGUIDE # 37 +wxSTC_STYLE_LASTPREDEFINED = stc.wxSTC_STYLE_LASTPREDEFINED # 39 +wxSTC_STYLE_LINENUMBER = stc.wxSTC_STYLE_LINENUMBER # 33 +wxSTC_STYLE_MAX = stc.wxSTC_STYLE_MAX # 127 +wxSTC_TIME_FOREVER = stc.wxSTC_TIME_FOREVER # 10000000 +wxSTC_USE_POPUP = stc.wxSTC_USE_POPUP # 1 +wxSTC_VISIBLE_SLOP = stc.wxSTC_VISIBLE_SLOP # 1 +wxSTC_VISIBLE_STRICT = stc.wxSTC_VISIBLE_STRICT # 4 +wxSTC_WRAP_NONE = stc.wxSTC_WRAP_NONE # 0 +wxSTC_WRAP_WORD = stc.wxSTC_WRAP_WORD # 1 +wxSTC_WS_INVISIBLE = stc.wxSTC_WS_INVISIBLE # 0 +wxSTC_WS_VISIBLEAFTERINDENT = stc.wxSTC_WS_VISIBLEAFTERINDENT # 2 +wxSTC_WS_VISIBLEALWAYS = stc.wxSTC_WS_VISIBLEALWAYS # 1 +# End generated constants. diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Threading.py b/wxPython/wxPython/lib/PyCrust/wxd/Threading.py new file mode 100644 index 0000000000..ff1f86bd93 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Threading.py @@ -0,0 +1,26 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +class MutexGuiLocker: + """""" + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/ToolBar.py b/wxPython/wxPython/lib/PyCrust/wxd/ToolBar.py new file mode 100644 index 0000000000..d12ac61b54 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/ToolBar.py @@ -0,0 +1,403 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +from Controls import Control +import Parameters as wx + + +class ToolBarBase(Control): + """""" + + def AddCheckLabelTool(self): + """""" + pass + + def AddCheckTool(self): + """""" + pass + + def AddControl(self): + """""" + pass + + def AddLabelTool(self): + """""" + pass + + def AddRadioLabelTool(self): + """""" + pass + + def AddRadioTool(self): + """""" + pass + + def AddSeparator(self): + """""" + pass + + def AddSimpleTool(self): + """""" + pass + + def AddTool(self): + """""" + pass + + def ClearTools(self): + """""" + pass + + def DeleteTool(self): + """""" + pass + + def DeleteToolByPos(self): + """""" + pass + + def DoAddTool(self): + """""" + pass + + def DoInsertTool(self): + """""" + pass + + def EnableTool(self): + """""" + pass + + def FindControl(self): + """""" + pass + + def FindToolForPosition(self): + """""" + pass + + def GetMargins(self): + """""" + pass + + def GetMaxCols(self): + """""" + pass + + def GetMaxRows(self): + """""" + pass + + def GetToolBitmapSize(self): + """""" + pass + + def GetToolClientData(self): + """""" + pass + + def GetToolEnabled(self): + """""" + pass + + def GetToolLongHelp(self): + """""" + pass + + def GetToolMargins(self): + """""" + pass + + def GetToolPacking(self): + """""" + pass + + def GetToolSeparation(self): + """""" + pass + + def GetToolShortHelp(self): + """""" + pass + + def GetToolSize(self): + """""" + pass + + def GetToolState(self): + """""" + pass + + def InsertControl(self): + """""" + pass + + def InsertLabelTool(self): + """""" + pass + + def InsertSeparator(self): + """""" + pass + + def InsertSimpleTool(self): + """""" + pass + + def InsertTool(self): + """""" + pass + + def IsVertical(self): + """""" + pass + + def Realize(self): + """""" + pass + + def RemoveTool(self): + """""" + pass + + def SetMargins(self): + """""" + pass + + def SetMarginsXY(self): + """""" + pass + + def SetMaxRowsCols(self): + """""" + pass + + def SetRows(self): + """""" + pass + + def SetToggle(self): + """""" + pass + + def SetToolBitmapSize(self): + """""" + pass + + def SetToolClientData(self): + """""" + pass + + def SetToolLongHelp(self): + """""" + pass + + def SetToolPacking(self): + """""" + pass + + def SetToolSeparation(self): + """""" + pass + + def SetToolShortHelp(self): + """""" + pass + + def ToggleTool(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ToolBar(ToolBarBase): + """""" + + def Create(self): + """""" + pass + + def FindToolForPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ToolBarSimple(ToolBarBase): + """""" + + def Create(self): + """""" + pass + + def FindToolForPosition(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class ToolBarToolBase(Object): + """""" + + def Attach(self): + """""" + pass + + def CanBeToggled(self): + """""" + pass + + def Destroy(self): + """""" + pass + + def Detach(self): + """""" + pass + + def Enable(self): + """""" + pass + + def GetBitmap(self): + """""" + pass + + def GetBitmap1(self): + """""" + pass + + def GetBitmap2(self): + """""" + pass + + def GetClientData(self): + """""" + pass + + def GetControl(self): + """""" + pass + + def GetDisabledBitmap(self): + """""" + pass + + def GetId(self): + """""" + pass + + def GetKind(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetLongHelp(self): + """""" + pass + + def GetNormalBitmap(self): + """""" + pass + + def GetShortHelp(self): + """""" + pass + + def GetStyle(self): + """""" + pass + + def GetToolBar(self): + """""" + pass + + def IsButton(self): + """""" + pass + + def IsControl(self): + """""" + pass + + def IsEnabled(self): + """""" + pass + + def IsSeparator(self): + """""" + pass + + def IsToggled(self): + """""" + pass + + def SetBitmap1(self): + """""" + pass + + def SetBitmap2(self): + """""" + pass + + def SetClientData(self): + """""" + pass + + def SetDisabledBitmap(self): + """""" + pass + + def SetLabel(self): + """""" + pass + + def SetLongHelp(self): + """""" + pass + + def SetNormalBitmap(self): + """""" + pass + + def SetShortHelp(self): + """""" + pass + + def SetToggle(self): + """""" + pass + + def Toggle(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Tree.py b/wxPython/wxPython/lib/PyCrust/wxd/Tree.py new file mode 100644 index 0000000000..46ae981f33 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Tree.py @@ -0,0 +1,402 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import Object +from Controls import Control +import Parameters as wx + + +class TreeCtrl(Control): + """""" + + def AddRoot(self): + """""" + pass + + def AppendItem(self): + """""" + pass + + def AssignImageList(self): + """""" + pass + + def AssignStateImageList(self): + """""" + pass + + def Collapse(self): + """""" + pass + + def CollapseAndReset(self): + """""" + pass + + def Create(self): + """""" + pass + + def Delete(self): + """""" + pass + + def DeleteAllItems(self): + """""" + pass + + def DeleteChildren(self): + """""" + pass + + def EditLabel(self): + """""" + pass + + def EnsureVisible(self): + """""" + pass + + def Expand(self): + """""" + pass + + def GetBoundingRect(self): + """""" + pass + + def GetChildrenCount(self): + """""" + pass + + def GetCount(self): + """""" + pass + + def GetEditControl(self): + """""" + pass + + def GetFirstChild(self): + """""" + pass + + def GetFirstVisibleItem(self): + """""" + pass + + def GetImageList(self): + """""" + pass + + def GetIndent(self): + """""" + pass + + def GetItemBackgroundColour(self): + """""" + pass + + def GetItemData(self): + """""" + pass + + def GetItemFont(self): + """""" + pass + + def GetItemImage(self): + """""" + pass + + def GetItemParent(self): + """""" + pass + + def GetItemSelectedImage(self): + """""" + pass + + def GetItemText(self): + """""" + pass + + def GetItemTextColour(self): + """""" + pass + + def GetLastChild(self): + """""" + pass + + def GetNextChild(self): + """""" + pass + + def GetNextSibling(self): + """""" + pass + + def GetNextVisible(self): + """""" + pass + + def GetPrevSibling(self): + """""" + pass + + def GetPrevVisible(self): + """""" + pass + + def GetPyData(self): + """""" + pass + + def GetRootItem(self): + """""" + pass + + def GetSelection(self): + """""" + pass + + def GetSelections(self): + """""" + pass + + def GetSpacing(self): + """""" + pass + + def GetStateImageList(self): + """""" + pass + + def HitTest(self): + """""" + pass + + def InsertItem(self): + """""" + pass + + def InsertItemBefore(self): + """""" + pass + + def IsBold(self): + """""" + pass + + def IsExpanded(self): + """""" + pass + + def IsSelected(self): + """""" + pass + + def IsVisible(self): + """""" + pass + + def ItemHasChildren(self): + """""" + pass + + def PrependItem(self): + """""" + pass + + def ScrollTo(self): + """""" + pass + + def SelectItem(self): + """""" + pass + + def SetImageList(self): + """""" + pass + + def SetIndent(self): + """""" + pass + + def SetItemBackgroundColour(self): + """""" + pass + + def SetItemBold(self): + """""" + pass + + def SetItemData(self): + """""" + pass + + def SetItemFont(self): + """""" + pass + + def SetItemHasChildren(self): + """""" + pass + + def SetItemImage(self): + """""" + pass + + def SetItemSelectedImage(self): + """""" + pass + + def SetItemText(self): + """""" + pass + + def SetItemTextColour(self): + """""" + pass + + def SetPyData(self): + """""" + pass + + def SetSpacing(self): + """""" + pass + + def SetStateImageList(self): + """""" + pass + + def SortChildren(self): + """""" + pass + + def Toggle(self): + """""" + pass + + def Unselect(self): + """""" + pass + + def UnselectAll(self): + """""" + pass + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + +class TreeItemAttr: + """""" + + def GetBackgroundColour(self): + """""" + pass + + def GetFont(self): + """""" + pass + + def GetTextColour(self): + """""" + pass + + def HasBackgroundColour(self): + """""" + pass + + def HasFont(self): + """""" + pass + + def HasTextColour(self): + """""" + pass + + def SetBackgroundColour(self): + """""" + pass + + def SetFont(self): + """""" + pass + + def SetTextColour(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TreeItemData(Object): + """""" + + def GetData(self): + """""" + pass + + def GetId(self): + """""" + pass + + def SetData(self): + """""" + pass + + def SetId(self): + """""" + pass + + def __init__(self): + """""" + pass + + +class TreeItemId: + """""" + + def IsOk(self): + """""" + pass + + def Ok(self): + """""" + pass + + def __cmp__(self): + """""" + pass + + def __del__(self): + """""" + pass + + def __init__(self): + """""" + pass + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Validators.py b/wxPython/wxPython/lib/PyCrust/wxd/Validators.py new file mode 100644 index 0000000000..6c5e87e240 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Validators.py @@ -0,0 +1,56 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import EvtHandler +import Parameters as wx + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class Validator(EvtHandler): + """""" + + def __init__(self): + """""" + pass + + def Clone(self): + """""" + pass + + def GetWindow(self): + """""" + pass + + def SetWindow(self, window): + """""" + pass + + +class PyValidator(Validator): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self, _class, incref=True): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/Window.py b/wxPython/wxPython/lib/PyCrust/wxd/Window.py new file mode 100644 index 0000000000..51392a094d --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/Window.py @@ -0,0 +1,850 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Base import EvtHandler +import Parameters as wx + +try: + True +except NameError: + True = 1==1 + False = 1==0 + + +class Window(EvtHandler): + """""" + + def __init__(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, name=wx.PyPanelNameStr): + """""" + pass + + def AcceptsFocus(self): + """""" + pass + + def AddChild(self, child): + """""" + pass + + def CaptureMouse(self): + """""" + pass + + def Center(self, direction=wx.BOTH): + """""" + pass + + def CenterOnParent(self, direction=wx.BOTH): + """""" + pass + + def CenterOnScreen(self, direction=wx.BOTH): + """""" + pass + + def Centre(self, direction=wx.BOTH): + """""" + pass + + def CentreOnParent(self, direction=wx.BOTH): + """""" + pass + + def CentreOnScreen(self, direction=wx.BOTH): + """""" + pass + + def Clear(self): + """""" + pass + + def ClientToScreen(self, pt): + """""" + pass + + def ClientToScreenXY(self, x, y): + """""" + pass + + def Close(self, force=False): + """""" + pass + + def ConvertDialogPointToPixels(self, pt): + """""" + pass + + def ConvertDialogSizeToPixels(self, sz): + """""" + pass + + def ConvertPixelPointToDialog(self, pt): + """""" + pass + + def ConvertPixelSizeToDialog(self, sz): + """""" + pass + + def Create(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, name=wx.PyPanelNameStr): + """""" + pass + + def DLG_PNT(self, win, point_or_x, y=None): + """""" + pass + + def DLG_SZE(self, win, size_width, height=None): + """""" + pass + + def Destroy(self): + """""" + pass + + def DestroyChildren(self): + """""" + pass + + def DragAcceptFiles(self, accept): + """Windows only.""" + pass + + def Enable(self, enable): + """""" + pass + + def FindWindowById(self, id): + """""" + pass + + def FindWindowByName(self, name): + """""" + pass + + def Fit(self): + """""" + pass + + def FitInside(self): + """""" + pass + + def Freeze(self): + """""" + pass + + def GetAcceleratorTable(self): + """""" + pass + + def GetAdjustedBestSize(self): + """""" + pass + + def GetAutoLayout(self): + """""" + pass + + def GetBackgroundColour(self): + """""" + pass + + def GetBestSize(self): + """""" + pass + + def GetBestVirtualSize(self): + """""" + pass + + def GetBorder(self): + """""" + pass + + def GetCaret(self): + """""" + pass + + def GetCharHeight(self): + """""" + pass + + def GetCharWidth(self): + """""" + pass + + def GetChildren(self): + """""" + pass + + def GetClientAreaOrigin(self): + """""" + pass + + def GetClientRect(self): + """""" + pass + + def GetClientSize(self): + """""" + pass + + def GetClientSizeTuple(self): + """""" + pass + + def GetConstraints(self): + """""" + pass + + def GetContainingSizer(self): + """""" + pass + + def GetCursor(self): + """""" + pass + + def GetDefaultItem(self): + """""" + pass + + def GetDropTarget(self): + """""" + pass + + def GetEventHandler(self): + """""" + pass + + def GetFont(self): + """""" + pass + + def GetForegroundColour(self): + """""" + pass + + def GetFullTextExtent(self): + """""" + pass + + def GetGrandParent(self): + """""" + pass + + def GetHandle(self): + """""" + pass + + def GetHelpText(self): + """""" + pass + + def GetId(self): + """""" + pass + + def GetLabel(self): + """""" + pass + + def GetMaxSize(self): + """""" + pass + + def GetName(self): + """""" + pass + + def GetParent(self): + """""" + pass + + def GetPosition(self): + """""" + pass + + def GetPositionTuple(self): + """""" + pass + + def GetRect(self): + """""" + pass + + def GetScrollPos(self, orientation): + """""" + pass + + def GetScrollRange(self, orientation): + """""" + pass + + def GetScrollThumb(self, orientation): + """""" + pass + + def GetSize(self): + """""" + pass + + def GetSizeTuple(self): + """""" + pass + + def GetSizer(self): + """""" + pass + + def GetTextExtent(self, string): + """""" + pass + + def GetTitle(self): + """""" + pass + + def GetToolTip(self): + """""" + pass + + def GetUpdateRegion(self): + """""" + pass + + def GetValidator(self): + """""" + pass + + def GetVirtualSize(self): + """""" + pass + + def GetVirtualSizeTuple(self): + """""" + pass + + def GetWindowStyleFlag(self): + """""" + pass + + def HasCapture(self): + """""" + pass + + def HasScrollbar(self, orient): + """""" + pass + + def Hide(self): + """""" + pass + + def HitTest(self, pt): + """""" + pass + + def InitDialog(self): + """""" + pass + + def IsBeingDeleted(self): + """""" + pass + + def IsEnabled(self): + """""" + pass + + def IsExposed(self, x, y, w=0, h=0): + """""" + pass + + def IsExposedPoint(self, pt): + """""" + pass + + def IsExposedRect(self, rect): + """""" + pass + + def IsRetained(self): + """""" + pass + + def IsShown(self): + """""" + pass + + def IsTopLevel(self): + """""" + pass + + def Layout(self): + """""" + pass + + def LineDown(self): + """""" + pass + + def LineUp(self): + """""" + pass + + def LoadFromResource(self, parent, resourceName, resourceTable=wx.NULL): + """Only if USE_WX_RESOURCES.""" + pass + + def Lower(self): + """""" + pass + + def MakeModal(self, flag=True): + """""" + pass + + def Move(self, point, flags=wx.SIZE_USE_EXISTING): + """""" + pass + + def MoveXY(self, x, y, flags=wx.SIZE_USE_EXISTING): + """""" + pass + + def OnPaint(self, event): + """Windows only.""" + pass + + def PageDown(self): + """""" + pass + + def PageUp(self): + """""" + pass + + def PopEventHandler(self, deleteHandler=False): + """""" + pass + + def PopupMenu(self, menu, pos): + """""" + pass + + def PopupMenuXY(self, menu, x, y): + """""" + pass + + def PushEventHandler(self, handler): + """""" + pass + + def Raise(self): + """""" + pass + + def Refresh(self, eraseBackground=True, rect=wx.NULL): + """""" + pass + + def RefreshRect(self, rect): + """""" + pass + + def ReleaseMouse(self): + """""" + pass + + def RemoveChild(self, child): + """""" + pass + + def RemoveEventHandler(self, handler): + """""" + pass + + def Reparent(self, newParent): + """""" + pass + + def ScreenToClient(self, pt): + """""" + pass + + def ScreenToClientXY(self, x, y): + """""" + pass + + def ScrollLines(self, lines): + """""" + pass + + def ScrollPages(self, pages): + """""" + pass + + def ScrollWindow(self, dx, dy, rect=wx.NULL): + """""" + pass + + def SetAcceleratorTable(self, accel): + """""" + pass + + def SetAutoLayout(self, autoLayout): + """""" + pass + + def SetBackgroundColour(self, colour): + """""" + pass + + def SetCaret(self, caret): + """""" + pass + + def SetClientSize(self, size): + """""" + pass + + def SetClientSizeWH(self, width, height): + """""" + pass + + def SetConstraints(self, constraints): + """""" + pass + + def SetContainingSizer(self, sizer): + """""" + pass + + def SetCursor(self, cursor): + """""" + pass + + def SetDefaultItem(self, btn): + """""" + pass + + def SetDimensions(self): + """""" + pass + + def SetDropTarget(self, target): + """""" + pass + + def SetEventHandler(self, handler): + """""" + pass + + def SetExtraStyle(self, exStyle): + """""" + pass + + def SetFocus(self): + """""" + pass + + def SetFocusFromKbd(self): + """""" + pass + + def SetFont(self, font): + """""" + pass + + def SetForegroundColour(self, colour): + """""" + pass + + def SetHelpText(self, helpText): + """""" + pass + + def SetHelpTextForId(self, text): + """""" + pass + + def SetId(self, id): + """""" + pass + + def SetLabel(self, label): + """""" + pass + + def SetName(self, name): + """""" + pass + + def SetPosition(self, pos, flags=wx.SIZE_USE_EXISTING): + """""" + pass + + def SetRect(self, rect, sizeFlags=wx.SIZE_AUTO): + """""" + pass + + def SetScrollPos(self, orientation, pos, refresh=True): + """""" + pass + + def SetScrollbar(self, orientation, pos, thumbSize, range, refresh=True): + """""" + pass + + def SetSize(self, x, y, width, height, sizeFlags=wx.SIZE_AUTO): + """""" + pass + + def SetSizeHints(self, minW, minH, maxW=-1, maxH=-1, incW=-1, incH=-1): + """""" + pass + + def SetSizer(self, sizer, deleteOld=True): + """""" + pass + + def SetSizerAndFit(self, sizer, deleteOld=True): + """""" + pass + + def SetTitle(self, title): + """""" + pass + + def SetTmpDefaultItem(self, win): + """""" + pass + + def SetToolTip(self, tooltip): + """""" + pass + + def SetToolTipString(self, tip): + """""" + pass + + def SetValidator(self, validator): + """""" + pass + + def SetVirtualSize(self, size): + """""" + pass + + def SetVirtualSizeHints(self, minW, minH, maxW=-1, maxH=-1): + """""" + pass + + def SetVirtualSizeWH(self, x, y): + """""" + pass + + def SetWindowStyle(self, style): + """""" + pass + + def SetWindowStyleFlag(self, style): + """""" + pass + + def Show(self, show=True): + """""" + pass + + def Thaw(self): + """""" + pass + + def TransferDataFromWindow(self): + """""" + pass + + def TransferDataToWindow(self): + """""" + pass + + def UnsetConstraints(self, constraints): + """""" + pass + + def Update(self): + """""" + pass + + def UpdateWindowUI(self): + """""" + pass + + def Validate(self): + """""" + pass + + def WarpPointer(self, x, y): + """""" + pass + + +class PyWindow(Window): + """""" + + def __init__(self): + """""" + pass + + def _setCallbackInfo(self): + """""" + pass + + def base_AcceptsFocus(self): + """""" + pass + + def base_AcceptsFocusFromKeyboard(self): + """""" + pass + + def base_AddChild(self): + """""" + pass + + def base_DoGetBestSize(self): + """""" + pass + + def base_DoGetClientSize(self): + """""" + pass + + def base_DoGetPosition(self): + """""" + pass + + def base_DoGetSize(self): + """""" + pass + + def base_DoGetVirtualSize(self): + """""" + pass + + def base_DoMoveWindow(self): + """""" + pass + + def base_DoSetClientSize(self): + """""" + pass + + def base_DoSetSize(self): + """""" + pass + + def base_DoSetVirtualSize(self): + """""" + pass + + def base_GetMaxSize(self): + """""" + pass + + def base_InitDialog(self): + """""" + pass + + def base_RemoveChild(self): + """""" + pass + + def base_TransferDataFromWindow(self): + """""" + pass + + def base_TransferDataToWindow(self): + """""" + pass + + def base_Validate(self): + """""" + pass + + +class TopLevelWindow(Window): + """""" + + def Create(self): + """""" + pass + + def GetIcon(self): + """""" + pass + + def GetTitle(self): + """""" + pass + + def Iconize(self): + """""" + pass + + def IsFullScreen(self): + """""" + pass + + def IsIconized(self): + """""" + pass + + def IsMaximized(self): + """""" + pass + + def Maximize(self): + """""" + pass + + def Restore(self): + """""" + pass + + def SetIcon(self): + """""" + pass + + def SetIcons(self): + """""" + pass + + def SetTitle(self): + """""" + pass + + def ShowFullScreen(self): + """""" + pass + + def __init__(self): + """""" + pass + + diff --git a/wxPython/wxPython/lib/PyCrust/wxd/__init__.py b/wxPython/wxPython/lib/PyCrust/wxd/__init__.py new file mode 100644 index 0000000000..db6003cf3b --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/__init__.py @@ -0,0 +1 @@ +# Orbtech python package. \ No newline at end of file diff --git a/wxPython/wxPython/lib/PyCrust/wxd/d_stc.py b/wxPython/wxPython/lib/PyCrust/wxd/d_stc.py new file mode 100644 index 0000000000..e906ffc889 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/d_stc.py @@ -0,0 +1,17 @@ +"""Decorator utility for documentation and shell scripting. + +When you import stc from this module, all of the classes get decorated +with docstrings from our decoration class definitions. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + +from wxPython import stc + +import stc_ + +import decorator + +decorator.decorate(real=stc, decoration=stc_) diff --git a/wxPython/wxPython/lib/PyCrust/wxd/d_wx.py b/wxPython/wxPython/lib/PyCrust/wxd/d_wx.py new file mode 100644 index 0000000000..f837473463 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/d_wx.py @@ -0,0 +1,17 @@ +"""Decorator utility for documentation and shell scripting. + +When you import wx from this module, all of the classes get decorated +with docstrings from our decoration class definitions. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + +from wxPython import wx + +import wx_ + +import decorator + +decorator.decorate(real=wx, decoration=wx_) diff --git a/wxPython/wxPython/lib/PyCrust/wxd/decorator.py b/wxPython/wxPython/lib/PyCrust/wxd/decorator.py new file mode 100644 index 0000000000..6765268f5b --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/decorator.py @@ -0,0 +1,92 @@ +"""Decorator utility for documentation and shell scripting.""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +import inspect + +try: + True +except NameError: + True = 1==1 + False = 1==0 + +def decorate(real, decoration): + """Decorate real module with docstrings from decoration module.""" + realdict = real.__dict__ + for item in decoration.__dict__.values(): + if inspect.isclass(item): + decorateClass(item, realdict) + elif inspect.isfunction(item): + decorateFunction(item, realdict) + +def decorateClass(item, realdict): + classname = item.__name__ + if not classname.startswith('wx'): + classname = 'wx' + classname + try: + wxclass = realdict[classname] + except: + print classname + else: + if item.__doc__: + wxclass.__doc__ = item.__doc__ + # Get attributes from only the item's local dictionary! + for attrname, attr in item.__dict__.items(): + # If the attribute has a docstring, and the wx class has a + # matching attribute. + if hasattr(attr, '__doc__') and hasattr(wxclass, attrname): + if inspect.isfunction(attr): + # Class methods are functions. + doc = getdoc(attr, drop=True) + # Is getattr() okay, or do we want to only look in + # the wxclass.__dict__ and wxclassPtr.__dict__? + wxattr = getattr(wxclass, attrname) + # Our class code may be defined incorrectly, and + # the wxattr may not actually be a class method, + # but that's okay because the following attempt + # will simply fail. + try: + func = wxattr.im_func + func.__doc__ = doc + except: + pass + +def decorateFunction(item, realdict): + funcname = item.__name__ + if funcname in realdict.keys(): + func = realdict[funcname] + doc = getdoc(item, drop=False) + try: + # Built-in functions have a read-only docstring. :-( + func.__doc__ = doc + except: + # print funcname + pass + +def getdoc(attr, drop=False): + """Return a docstring for attr, which should be a method.""" + doc = '' + if attr.__doc__: + doc = inspect.getdoc(attr).strip() + name = attr.__name__ + # tip is a string with name(argspec), like: "SetLabel(label)" + tip = '' + argspec = apply(inspect.formatargspec, inspect.getargspec(attr)) + # The first parameter to a method is a reference to an instance, + # usually coded as "self", and is usually passed automatically by + # Python and therefore we want to drop it. + temp = argspec.split(',') + if len(temp) == 1: # No other arguments. + argspec = '()' + elif drop: # Drop the first argument. + argspec = '(' + ','.join(temp[1:]).lstrip() + else: + argspec = ','.join(temp).lstrip() + tip = name + argspec + firstline = doc.split('\n')[0].lstrip() + if tip != firstline: + doc = '%s\n\n%s' % (tip, doc) + return doc diff --git a/wxPython/wxPython/lib/PyCrust/wxd/gen.py b/wxPython/wxPython/lib/PyCrust/wxd/gen.py new file mode 100644 index 0000000000..2e07922ade --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/gen.py @@ -0,0 +1,71 @@ + +import inspect +from wxPython import wx + + +def scan(): + d = wx.__dict__ + newd = {} + keys = d.keys() + keys.sort() + for key in keys: + if key.endswith('Ptr'): + # Skip + pass + elif key+'Ptr' in keys: + # Rename + newd[key] = d[key+'Ptr'] + else: + # Include as is + newd[key] = d[key] + d = newd + keys = d.keys() + keys.sort() + for key in keys: + value = d[key] + if inspect.isclass(value): + # genClass(value) + pass + elif callable(value): + genFunction(value) + pass + else: + # print type(value), value + pass + + +def genClass(cls): + sp4 = ' ' * 4 + name = cls.__name__ + if name.endswith('Ptr'): + name = name[:-3] +## if name != 'wxNotebook': +## return + parent = '' + if cls.__bases__: + parent = cls.__bases__[0].__name__ + if parent.endswith('Ptr'): + parent = parent[:-3] + parent = '(%s)' % parent + items = cls.__dict__.keys() + items.sort() + print + print 'class %s%s:' % (name, parent) + print sp4 + '""""""' + print + for item in items: + attr = cls.__dict__[item] + if inspect.isfunction(attr): + print sp4 + 'def ' + item + '(self):' + print sp4 + sp4 + '""""""' + print sp4 + sp4 + 'pass' + print + + +def genFunction(func): + sp4 = ' ' * 4 + name = func.__name__ + print 'def %s():' % name + print sp4 + '""""""' + print sp4 + 'pass' + print diff --git a/wxPython/wxPython/lib/PyCrust/wxd/stc_.py b/wxPython/wxPython/lib/PyCrust/wxd/stc_.py new file mode 100644 index 0000000000..2902d24cb5 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/stc_.py @@ -0,0 +1,1409 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +from Controls import Control +import Parameters as wx + + +class StyledTextCtrl(Control): + """StyledTextCtrl class.""" + + def __init__(self, parent, id, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0, name=wx.PySTCNameStr): + """Create a StyledTextCtrl instance.""" + pass + + def AddRefDocument(self, docPointer): + """Extend life of document.""" + pass + + def AddStyledText(self, data): + """Add array of cells to document.""" + pass + + def AddText(self, text): + """Add text to the document.""" + pass + + def AutoCompActive(self): + """Is there an auto-completion list visible?""" + pass + + def AutoCompCancel(self): + """Remove the auto-completion list from the screen.""" + pass + + def AutoCompComplete(self): + """User has selected an item so remove the list and insert the + selection.""" + pass + + def AutoCompGetAutoHide(self): + """Return whether or not autocompletion is hidden + automatically when nothing matches.""" + pass + + def AutoCompGetCancelAtStart(self): + """Return whether auto-completion cancelled by backspacing + before start.""" + pass + + def AutoCompGetChooseSingle(self): + """Return whether a single item auto-completion list + automatically choose the item.""" + pass + + def AutoCompGetDropRestOfWord(self): + """Return whether or not autocompletion deletes any word + characters after the inserted text upon completion.""" + pass + + def AutoCompGetIgnoreCase(self): + """Return state of ignore case flag.""" + pass + + def AutoCompGetSeparator(self): + """Return the auto-completion list separator character.""" + pass + + def AutoCompPosStart(self): + """Return the position of the caret when the auto-completion + list was displayed.""" + pass + + def AutoCompSelect(self, text): + """Select the item in the auto-completion list that starts + with a string.""" + pass + + def AutoCompSetAutoHide(self, autoHide): + """Set whether or not autocompletion is hidden automatically + when nothing matches.""" + pass + + def AutoCompSetCancelAtStart(self, cancel): + """Should the auto-completion list be cancelled if the user + backspaces to a position before where the box was created.""" + pass + + def AutoCompSetChooseSingle(self, chooseSingle): + """Should a single item auto-completion list automatically + choose the item.""" + pass + + def AutoCompSetDropRestOfWord(self, dropRestOfWord): + """Set whether or not autocompletion deletes any word + characters after the inserted text upon completion.""" + pass + + def AutoCompSetFillUps(self, characterSet): + """Define a set of characters that when typed will cause the + autocompletion to choose the selected item.""" + pass + + def AutoCompSetIgnoreCase(self, ignoreCase): + """Set whether case is significant when performing + auto-completion searches.""" + pass + + def AutoCompSetSeparator(self, separatorCharacter): + """Change the separator character in the string setting up an + auto-completion list. Default is space but can be changed if + items contain space.""" + pass + + def AutoCompShow(self, lenEntered, itemList): + """Display a auto-completion list. + + The lenEntered parameter indicates how many characters before + the caret should be used to provide context.""" + pass + + def AutoCompStops(self, characterSet): + """Define a set of character that when typed cancel the + auto-completion list.""" + pass + + def BeginUndoAction(self): + """Start a sequence of actions that is undone and redone as a + unit. May be nested.""" + pass + + def BraceBadLight(self, pos): + """Highlight the character at a position indicating there is + no matching brace.""" + pass + + def BraceHighlight(self, pos1, pos2): + """Highlight the characters at two positions.""" + pass + + def BraceMatch(self, pos): + """Find the position of a matching brace or INVALID_POSITION + if no match.""" + pass + + def CallTipActive(self): + """Is there an active call tip?""" + pass + + def CallTipCancel(self): + """Remove the call tip from the screen.""" + pass + + def CallTipPosAtStart(self): + """Return the position where the caret was before displaying + the call tip.""" + pass + + def CallTipSetBackground(self, back): + """Set the background colour for the call tip.""" + pass + + def CallTipSetHighlight(self, start, end): + """Highlight a segment of the definition.""" + pass + + def CallTipShow(self, pos, definition): + """Show a call tip containing a definition near position pos.""" + pass + + def CanPaste(self): + """Will a paste succeed?""" + pass + + def CanRedo(self): + """Are there any redoable actions in the undo history?""" + pass + + def CanUndo(self): + """Are there any undoable actions in the undo history?""" + pass + + def Clear(self): + """Clear the selection.""" + pass + + def ClearAll(self): + """Delete all text in the document.""" + pass + + def ClearDocumentStyle(self): + """Set all style bytes to 0, remove all folding information.""" + pass + + def CmdKeyAssign(self, key, modifiers, cmd): + """When key+modifier combination km is pressed perform msg.""" + pass + + def CmdKeyClear(self, key, modifiers): + """When key+modifier combination km do nothing.""" + pass + + def CmdKeyClearAll(self): + """Drop all key mappings.""" + pass + + def CmdKeyExecute(self, cmd): + """Perform one of the operations defined by the STC_CMD_* + constants.""" + pass + + def Colourise(self, start, end): + """Colourise a segment of the document using the current + lexing language.""" + pass + + def ConvertEOLs(self, eolMode): + """Convert all line endings in the document to one mode.""" + pass + + def Copy(self): + """Copy the selection to the clipboard.""" + pass + + def CreateDocument(self): + """Create a new document object. + + Starts with reference count of 1 and not selected into editor.""" + pass + + def Cut(self): + """Cut the selection to the clipboard.""" + pass + + def DelLineLeft(self): + """Delete from the current position to the start of the line.""" + pass + + def DelLineRight(self): + """Delete from the current position to the end of the line.""" + pass + + def DocLineFromVisible(self, lineDisplay): + """Find the document line of a display line taking hidden + lines into account.""" + pass + + def EmptyUndoBuffer(self): + """Delete the undo history.""" + pass + + def EndUndoAction(self): + """End a sequence of actions that is undone and redone as a + unit.""" + pass + + def EnsureCaretVisible(self): + """Ensure the caret is visible.""" + pass + + def EnsureVisible(self, line): + """Ensure a particular line is visible by expanding any header + line hiding it.""" + pass + + def EnsureVisibleEnforcePolicy(self, line): + """Ensure a particular line is visible by expanding any header + line hiding it. Use the currently set visibility policy to + determine which range to display.""" + pass + + def FindText(self, minPos, maxPos, text, flags=0): + """Find some text in the document.""" + pass + + def FormatRange(self, doDraw, startPos, endPos, draw, + target, renderRect, pageRect): + """On Windows, will draw the document into a display context + such as a printer.""" + pass + + def GetAnchor(self): + """Return the position of the opposite end of the selection to + the caret.""" + pass + + def GetBackSpaceUnIndents(self): + """Does a backspace pressed when caret is within indentation + unindent?""" + pass + + def GetBufferedDraw(self): + """Is drawing done first into a buffer or direct to the + screen?""" + pass + + def GetCaretForeground(self): + """Return the foreground colour of the caret.""" + pass + + def GetCaretLineBack(self): + """Return the colour of the background of the line containing + the caret.""" + pass + + def GetCaretLineVisible(self): + """Is the background of the line containing the caret in a + different colour?""" + pass + + def GetCaretPeriod(self): + """Return the time in milliseconds that the caret is on and + off.""" + pass + + def GetCaretWidth(self): + """Return the width of the insert mode caret.""" + pass + + def GetCharAt(self, pos): + """Return the character byte at the position.""" + pass + + def GetCodePage(self): + """Return the code page used to interpret the bytes of the + document as characters.""" + pass + + def GetColumn(self, pos): + """Return the column number of a position, taking tab width + into account.""" + pass + + def GetControlCharSymbol(self): + """Return the way control characters are displayed.""" + pass + + def GetCurLine(self): + """Return (text, pos) tuple with the text of the line + containing the caret and the position of the caret within the + line.""" + pass + + def GetCurrentLine(self): + """Return the line number of the line with the caret.""" + pass + + def GetCurrentPos(self): + """Return the position of the caret.""" + pass + + def GetCursor(self): + """Return cursor type.""" + pass + + def GetDocPointer(self): + """Return a pointer to the document object.""" + pass + + def GetEOLMode(self): + """Return the current end of line mode: CRLF, CR, or LF.""" + pass + + def GetEdgeColour(self): + """Return the colour used in edge indication.""" + pass + + def GetEdgeColumn(self): + """Return the column number which text should be kept within.""" + pass + + def GetEdgeMode(self): + """Return the edge highlight mode.""" + pass + + def GetEndAtLastLine(self): + """Return whether the maximum scroll position has the last + line at the bottom of the view.""" + pass + + def GetEndStyled(self): + """Return the position of the last correctly styled character.""" + pass + + def GetFirstVisibleLine(self): + """Return the line at the top of the display.""" + pass + + def GetFoldExpanded(self, line): + """Is a header line expanded?""" + pass + + def GetFoldLevel(self, line): + """Return the fold level of a line.""" + pass + + def GetFoldParent(self, line): + """Find the parent line of a child line.""" + pass + + def GetHighlightGuide(self): + """Return the highlighted indentation guide column.""" + pass + + def GetIndent(self): + """Return indentation size.""" + pass + + def GetIndentationGuides(self): + """Are the indentation guides visible?""" + pass + + def GetLastChild(self, line, level): + """Find the last child line of a header line.""" + pass + + def GetLastKeydownProcessed(self): + """Can be used to prevent the EVT_CHAR handler from adding the + char.""" + pass + + def GetLayoutCache(self): + """Return the degree of caching of layout information.""" + pass + + def GetLength(self): + """Return the number of characters in the document.""" + pass + + def GetLexer(self): + """Return the lexing language of the document.""" + pass + + def GetLine(self, line): + """Return the contents of a line.""" + pass + + def GetLineCount(self): + """Return the number of lines in the document. There is + always at least one.""" + pass + + def GetLineEndPosition(self, line): + """Return the position after the last visible characters on a + line.""" + pass + + def GetLineIndentPosition(self, line): + """Return the position before the first non indentation + character on a line.""" + pass + + def GetLineIndentation(self, line): + """Return the number of columns that a line is indented.""" + pass + + def GetLineState(self, line): + """Return the extra styling information for a line.""" + pass + + def GetLineVisible(self, line): + """Is a line visible?""" + pass + + def GetMarginLeft(self): + """Return the size in pixels of the left margin.""" + pass + + def GetMarginMask(self, margin): + """Return the marker mask of a margin.""" + pass + + def GetMarginRight(self): + """Return the size in pixels of the right margin.""" + pass + + def GetMarginSensitive(self, margin): + """Return the mouse click sensitivity of a margin.""" + pass + + def GetMarginType(self, margin): + """Return the type of a margin.""" + pass + + def GetMarginWidth(self, margin): + """Return the width of a margin in pixels.""" + pass + + def GetMaxLineState(self): + """Return the last line number that has line state.""" + pass + + def GetModEventMask(self): + """Return which document modification events are sent to the + container.""" + pass + + def GetModify(self): + """Is the document different from when it was last saved?""" + pass + + def GetMouseDownCaptures(self): + """Return whether mouse gets captured.""" + pass + + def GetMouseDwellTime(self): + """Return the time the mouse must sit still to generate a + mouse dwell event.""" + pass + + def GetOvertype(self): + """Return true if overtype mode is active otherwise false is + returned.""" + pass + + def GetPrintColourMode(self): + """Return the print colour mode.""" + pass + + def GetPrintMagnification(self): + """Return the print magnification.""" + pass + + def GetReadOnly(self): + """In read-only mode?""" + pass + + def GetSTCFocus(self): + """Return internal focus flag.""" + pass + + def GetScrollWidth(self): + """Return the document width assumed for scrolling.""" + pass + + def GetSearchFlags(self): + """Return the search flags used by SearchInTarget.""" + pass + + def GetSelectedText(self): + """Return the selected text.""" + pass + + def GetSelectionEnd(self): + """Return the position at the end of the selection.""" + pass + + def GetSelection(self): + """Return the start and end positions of the current + selection.""" + pass + + def GetSelectionStart(self): + """Return the position at the start of the selection.""" + pass + + def GetStatus(self): + """Return error status.""" + pass + + def GetStyleAt(self, pos): + """Return the style byte at the position.""" + pass + + def GetStyleBits(self): + """Return number of bits in style bytes used to hold the + lexical state.""" + pass + + def GetStyledText(self, startPos, endPos): + """Return a buffer of cells.""" + pass + + def GetTabIndents(self): + """Does a tab pressed when caret is within indentation indent?""" + pass + + def GetTabWidth(self): + """Return the visible size of a tab.""" + pass + + def GetTargetEnd(self): + """Return the position that ends the target.""" + pass + + def GetTargetStart(self): + """Return the position that starts the target.""" + pass + + def GetText(self): + """Return all the text in the document.""" + pass + + def GetTextLength(self): + """Return the number of characters in the document.""" + pass + + def GetTextRange(self, startPos, endPos): + """Return a range of text.""" + pass + + def GetUndoCollection(self): + """Is undo history being collected?""" + pass + + def GetUseHorizontalScrollBar(self): + """Is the horizontal scroll bar visible?""" + pass + + def GetUseTabs(self): + """Return whether tabs will be used in indentation.""" + pass + + def GetViewEOL(self): + """Are the end of line characters visible?""" + pass + + def GetViewWhiteSpace(self): + """Are white space characters currently visible? Return one + of SCWS_* constants.""" + pass + + def GetWrapMode(self): + """Return whether text is word wrapped.""" + pass + + def GetXOffset(self): + """Return the xOffset (self, ie, horizonal scroll position).""" + pass + + def GetZoom(self): + """Return the zoom level.""" + pass + + def GotoLine(self, line): + """Set caret to start of a line and ensure it is visible.""" + pass + + def GotoPos(self, pos): + """Set caret to a position and ensure it is visible.""" + pass + + def HideLines(self, lineStart, lineEnd): + """Make a range of lines invisible.""" + pass + + def HideSelection(self, normal): + """Draw the selection in normal style or with selection + highlighted.""" + pass + + def HomeDisplay(self): + """Move caret to first position on display line.""" + pass + + def HomeDisplayExtend(self): + """Move caret to first position on display line extending + selection to new caret position.""" + pass + + def IndicatorGetForeground(self, indic): + """Return the foreground colour of an indicator.""" + pass + + def IndicatorGetStyle(self, indic): + """Return the style of an indicator.""" + pass + + def IndicatorSetForeground(self, indic, fore): + """Set the foreground colour of an indicator.""" + pass + + def IndicatorSetStyle(self, indic, style): + """Set an indicator to plain, squiggle or TT.""" + pass + + def InsertText(self, pos, text): + """Insert string at a position.""" + pass + + def LineEndDisplay(self): + """Move caret to last position on display line.""" + pass + + def LineEndDisplayExtend(self): + """Move caret to last position on display line extending + selection to new caret position.""" + pass + + def LineFromPosition(self, pos): + """Return the line containing a position.""" + pass + + def LineLength(self, line): + """How many characters are on a line, not including end of + line characters?""" + pass + + def LineScroll(self, columns, lines): + """Scroll horizontally and vertically.""" + pass + + def LinesOnScreen(self): + """Retrieves the number of lines completely visible.""" + pass + + def MarkerAdd(self, line, markerNumber): + """Add a marker to a line, return an ID that can be used to + find or delete the marker.""" + pass + + def MarkerDefine(self, markerNumber, markerSymbol, + foreground=wx.NullColour, background=wx.NullColour): + """Set the symbol used for a particular marker number, and + optionally the fore and background colours.""" + pass + + def MarkerDelete(self, line, markerNumber): + """Delete a marker from a line.""" + pass + + def MarkerDeleteAll(self, markerNumber): + """Delete all markers with a particular number from all lines.""" + pass + + def MarkerDeleteHandle(self, handle): + """Delete a marker.""" + pass + + def MarkerGet(self, line): + """Return a bit mask of all the markers set on a line.""" + pass + + def MarkerLineFromHandle(self, handle): + """Return the line number at which a particular marker is + located.""" + pass + + def MarkerNext(self, lineStart, markerMask): + """Find the next line after lineStart that includes a marker + in mask.""" + pass + + def MarkerPrevious(self, lineStart, markerMask): + """Find the previous line before lineStart that includes a + marker in mask.""" + pass + + def MarkerSetBackground(self, markerNumber, back): + """Set the background colour used for a particular marker + number.""" + pass + + def MarkerSetForeground(self, markerNumber, fore): + """Set the foreground colour used for a particular marker + number.""" + pass + + def MoveCaretInsideView(self): + """Move the caret inside current view if it is not there + already.""" + pass + + def Paste(self): + """Paste the contents of the clipboard into the document + replacing the selection.""" + pass + + def PointFromPosition(self, pos): + """Return the point in the window where a position is + displayed.""" + pass + + def PositionFromLine(self, line): + """Return the position at the start of a line.""" + pass + + def PositionFromPoint(self, pt): + """Find the position from a point within the window.""" + pass + + def PositionFromPointClose(self, x, y): + """Find the position from a point within the window but return + INVALID_POSITION if not close to text.""" + pass + + def Redo(self): + """Redo the next action on the undo history.""" + pass + + def ReleaseDocument(self, docPointer): + """Release a reference to the document, deleting document if + it fades to black.""" + pass + + def ReplaceSelection(self, text): + """Replace the selected text with the argument text.""" + pass + + def ReplaceTarget(self, text): + """Replace the target text with the argument text. + + Text is counted so it can contain nulls. Return the length + of the replacement text.""" + pass + + def ReplaceTargetRE(self, text): + """Replace the target text with the argument text after \d + processing. + + Text is counted so it can contain nulls. Looks for \d where d + is between 1 and 9 and replaces these with the strings matched + in the last search operation which were surrounded by \(self, + and \). Return the length of the replacement text including + any change caused by processing the \d patterns.""" + pass + + def ScrollToColumn(self, column): + """Scroll enough to make the given column visible.""" + pass + + def ScrollToLine(self, line): + """Scroll enough to make the given line visible.""" + pass + + def SearchAnchor(self): + """Sets the current caret position to be the search anchor.""" + pass + + def SearchInTarget(self, text): + """Search for a counted string in the target and set the + target to the found range. + + Text is counted so it can contain nulls. Return length of + range or -1 for failure in which case target is not moved.""" + pass + + def SearchNext(self, flags, text): + """Find some text starting at the search anchor. Does not + ensure the selection is visible.""" + pass + + def SearchPrev(self, flags, text): + """Find some text starting at the search anchor and moving + backwards. Does not ensure the selection is visible.""" + pass + + def SelectAll(self): + """Select all the text in the document.""" + pass + + def SelectionIsRectangle(self): + """Is the selection rectangular? The alternative is the more + common stream selection.""" + pass + + def SendMsg(self, msg, wp=0, lp=0): + """Send a message to Scintilla.""" + pass + + def SetAnchor(self, posAnchor): + """Set the selection anchor to a position. The anchor is the + opposite end of the selection from the caret.""" + pass + + def SetBackSpaceUnIndents(self, bsUnIndents): + """Sets whether a backspace pressed when caret is within + indentation unindents.""" + pass + + def SetBufferedDraw(self, buffered): + """If drawing is buffered then each line of text is drawn into + a bitmap buffer before drawing it to the screen to avoid + flicker.""" + pass + + def SetCaretForeground(self, fore): + """Set the foreground colour of the caret.""" + pass + + def SetCaretLineBack(self, back): + """Set the colour of the background of the line containing the + caret.""" + pass + + def SetCaretLineVisible(self, show): + """Display the background of the line containing the caret in + a different colour.""" + pass + + def SetCaretPeriod(self, periodMilliseconds): + """Return the time in milliseconds that the caret is on and + off. 0 = steady on.""" + pass + + def SetCaretWidth(self, pixelWidth): + """Set the width of the insert mode caret.""" + pass + + def SetCodePage(self, codePage): + """Set the code page used to interpret the bytes of the + document as characters.""" + pass + + def SetControlCharSymbol(self, symbol): + """Change the way control characters are displayed: If symbol + is < 32, keep the drawn way, else, use the given character.""" + pass + + def SetCurrentPos(self, pos): + """Sets the position of the caret.""" + pass + + def SetCursor(self, cursorType): + """Sets the cursor to one of the SC_CURSOR* values.""" + pass + + def SetDocPointer(self, docPointer): + """Change the document object used.""" + pass + + def SetEOLMode(self, eolMode): + """Set the current end of line mode.""" + pass + + def SetEdgeColour(self, edgeColour): + """Change the colour used in edge indication.""" + pass + + def SetEdgeColumn(self, column): + """Set the column number of the edge. If text goes past the + edge then it is highlighted.""" + pass + + def SetEdgeMode(self, mode): + """The edge may be displayed by a line (self, EDGE_LINE) or by + highlighting text that goes beyond it (self, EDGE_BACKGROUND) + or not displayed at all (self, EDGE_NONE).""" + pass + + def SetEndAtLastLine(self, endAtLastLine): + """Sets the scroll range so that maximum scroll position has + the last line at the bottom of the view (self, default). + Setting this to false allows scrolling one page below the last + line.""" + pass + + def SetFoldExpanded(self, line, expanded): + """Show the children of a header line.""" + pass + + def SetFoldFlags(self, flags): + """Set some debugging options for folding.""" + pass + + def SetFoldLevel(self, line, level): + """Set the fold level of a line. This encodes an integer + level along with flags indicating whether the line is a header + and whether it is effectively white space.""" + pass + + def SetHScrollBar(self, bar): + """Set the horizontal scrollbar to use instead of the one + that's built-in.""" + pass + + def SetHighlightGuide(self, column): + """Set the highlighted indentation guide column. 0 = no + highlighted guide.""" + pass + + def SetIndent(self, indentSize): + """Set the number of spaces used for one level of indentation.""" + pass + + def SetIndentationGuides(self, show): + """Show or hide indentation guides.""" + pass + + def SetKeyWords(self, keywordSet, keyWords): + """Set up the key words used by the lexer.""" + pass + + def SetLastKeydownProcessed(self, val): + """Set ???.""" + pass + + def SetLayoutCache(self, mode): + """Sets the degree of caching of layout information.""" + pass + + def SetLexer(self, lexer): + """Set the lexing language of the document.""" + pass + + def SetLexerLanguage(self, language): + """Set the lexing language of the document based on string + name.""" + pass + + def SetLineIndentation(self, line, indentSize): + """Change the indentation of a line to a number of columns.""" + pass + + def SetLineState(self, line, state): + """Used to hold extra styling information for each line.""" + pass + + def SetMarginLeft(self, pixelWidth): + """Sets the size in pixels of the left margin.""" + pass + + def SetMarginMask(self, margin, mask): + """Set a mask that determines which markers are displayed in a + margin.""" + pass + + def SetMarginRight(self, pixelWidth): + """Sets the size in pixels of the right margin.""" + pass + + def SetMarginSensitive(self, margin, sensitive): + """Make a margin sensitive or insensitive to mouse clicks.""" + pass + + def SetMarginType(self, margin, marginType): + """Set a margin to be either numeric or symbolic.""" + pass + + def SetMarginWidth(self, margin, pixelWidth): + """Set the width of a margin to a width expressed in pixels.""" + pass + + def SetMargins(self, left, right): + """Set the left and right margin in the edit area, measured in + pixels.""" + pass + + def SetModEventMask(self, mask): + """Set which document modification events are sent to the + container.""" + pass + + def SetMouseDownCaptures(self, captures): + """Set whether the mouse is captured when its button is + pressed.""" + pass + + def SetMouseDwellTime(self, periodMilliseconds): + """Sets the time the mouse must sit still to generate a mouse + dwell event.""" + pass + + def SetOvertype(self, overtype): + """Set to overtype (self, true) or insert mode.""" + pass + + def SetPrintColourMode(self, mode): + """Modify colours when printing for clearer printed text.""" + pass + + def SetPrintMagnification(self, magnification): + """Sets the print magnification added to the point size of + each style for printing.""" + pass + + def SetProperty(self, key, value): + """Set up a value that may be used by a lexer for some + optional feature.""" + pass + + def SetReadOnly(self, readOnly): + """Set to read only or read write.""" + pass + + def SetSTCFocus(self, focus): + """Change internal focus flag.""" + pass + + def SetSavePoint(self): + """Remember the current position in the undo history as the + position at which the document was saved.""" + pass + + def SetScrollWidth(self, pixelWidth): + """Sets the document width assumed for scrolling.""" + pass + + def SetSearchFlags(self, flags): + """Set the search flags used by SearchInTarget.""" + pass + + def SetSelBackground(self, useSetting, back): + """Set the background colour of the selection and whether to + use this setting.""" + pass + + def SetSelForeground(self, useSetting, fore): + """Set the foreground colour of the selection and whether to + use this setting.""" + pass + + def SetSelection(self, start, end): + """Select a range of text.""" + pass + + def SetSelectionEnd(self, pos): + """Sets the position that ends the selection - this becomes + the currentPosition.""" + pass + + def SetSelectionStart(self, pos): + """Sets the position that starts the selection - this becomes + the anchor.""" + pass + + def SetStatus(self, statusCode): + """Change error status - 0 = OK.""" + pass + + def SetStyleBits(self, bits): + """Divide each styling byte into lexical class bits (self, + default: 5) and indicator bits (self, default: 3). If a lexer + requires more than 32 lexical states, then this is used to + expand the possible states.""" + pass + + def SetStyleBytes(self, length, styleBytes): + """Set the styles for a segment of the document.""" + pass + + def SetStyling(self, length, style): + """Change style from current styling position for length + characters to a style and move the current styling position to + after this newly styled segment.""" + pass + + def SetTabIndents(self, tabIndents): + """Sets whether a tab pressed when caret is within indentation + indents.""" + pass + + def SetTabWidth(self, tabWidth): + """Change the visible size of a tab to be a multiple of the + width of a space character.""" + pass + + def SetTargetEnd(self, pos): + """Sets the position that ends the target which is used for + updating the document without affecting the scroll position.""" + pass + + def SetTargetStart(self, pos): + """Sets the position that starts the target which is used for + updating the document without affecting the scroll position.""" + pass + + def SetText(self, text): + """Replace the contents of the document with the argument + text.""" + pass + + def SetUndoCollection(self, collectUndo): + """Choose between collecting actions into the undo history and + discarding them.""" + pass + + def SetUseHorizontalScrollBar(self, show): + """Show or hide the horizontal scroll bar.""" + pass + + def SetUseTabs(self, useTabs): + """Indentation will only use space characters if useTabs is + false, otherwise it will use a combination of tabs and spaces.""" + pass + + def SetVScrollBar(self, bar): + """Set the vertical scrollbar to use instead of the one that's + built-in.""" + pass + + def SetViewEOL(self, visible): + """Make the end of line characters visible or invisible.""" + pass + + def SetViewWhiteSpace(self, viewWS): + """Make white space characters invisible, always visible or + visible outside indentation.""" + pass + + def SetVisiblePolicy(self, visiblePolicy, visibleSlop): + """Set the way the display area is determined when a + particular line is to be moved to by Find, FindNext, GotoLine, + etc.""" + pass + + def SetWhitespaceBackground(self, useSetting, back): + """Set the background colour of all whitespace and whether to + use this setting.""" + pass + + def SetWhitespaceForeground(self, useSetting, fore): + """Set the foreground colour of all whitespace and whether to + use this setting.""" + pass + + def SetWordChars(self, characters): + """Set the set of characters making up words for when moving + or selecting by word.""" + pass + + def SetWrapMode(self, mode): + """Sets whether text is word wrapped.""" + pass + + def SetXCaretPolicy(self, caretPolicy, caretSlop): + """Set the way the caret is kept visible when going sideway. + The exclusion zone is given in pixels.""" + pass + + def SetXOffset(self, newOffset): + """Set the xOffset (self, ie, horizonal scroll position).""" + pass + + def SetYCaretPolicy(self, caretPolicy, caretSlop): + """Set the way the line the caret is on is kept visible. The + exclusion zone is given in lines.""" + pass + + def SetZoom(self, zoom): + """Set the zoom level. This number of points is added to the + size of all fonts. It may be positive to magnify or negative + to reduce.""" + pass + + def ShowLines(self, lineStart, lineEnd): + """Make a range of lines visible.""" + pass + + def StartRecord(self): + """Start notifying the container of all key presses and + commands.""" + pass + + def StartStyling(self, pos, mask): + """Set the current styling position and mask. + + The styling mask can be used to protect some bits in each + styling byte from modification.""" + pass + + def StopRecord(self): + """Stop notifying the container of all key presses and + commands.""" + pass + + def StyleClearAll(self): + """Clear all the styles and make equivalent to the global + default style.""" + pass + + def StyleResetDefault(self): + """Reset the default style to its state at startup.""" + pass + + def StyleSetBackground(self, style, back): + """Set the background colour of a style.""" + pass + + def StyleSetBold(self, style, bold): + """Set a style to be bold or not.""" + pass + + def StyleSetCase(self, style, caseForce): + """Set a style to be mixed case, or to force upper or lower + case.""" + pass + + def StyleSetChangeable(self, style, changeable): + """Set a style to be changeable or not (self, read only). + Experimental feature, currently buggy.""" + pass + + def StyleSetCharacterSet(self, style, characterSet): + """Set the character set of the font in a style.""" + pass + + def StyleSetEOLFilled(self, style, filled): + """Set a style to have its end of line filled or not.""" + pass + + def StyleSetFaceName(self, style, fontName): + """Set the font of a style.""" + pass + + def StyleSetFont(self, styleNum, font): + """Set style size, face, bold, italic, and underline + attributes from a Font's attributes.""" + pass + + def StyleSetFontAttr(self, styleNum, size, faceName, + bold, italic, underline): + """Set all font style attributes at once.""" + pass + + def StyleSetForeground(self, style, fore): + """Set the foreground colour of a style.""" + pass + + def StyleSetItalic(self, style, italic): + """Set a style to be italic or not.""" + pass + + def StyleSetSize(self, style, sizePoints): + """Set the size of characters of a style.""" + pass + + def StyleSetSpec(self, styleNum, spec): + """Extract style settings from a spec-string which is composed + of one or more of the following comma separated elements: + + bold turns on bold + italic turns on italics + fore:#RRGGBB sets the foreground colour + back:#RRGGBB sets the background colour + face:[facename] sets the font face name to use + size:[num] sets the font size in points + eol turns on eol filling + underline turns on underlining + """ + pass + + def StyleSetUnderline(self, style, underline): + """Set a style to be underlined or not.""" + pass + + def StyleSetVisible(self, style, visible): + """Set a style to be visible or not.""" + pass + + def TextHeight(self, line): + """Return the height of a particular line of text in pixels.""" + pass + + def TextWidth(self, style, text): + """Measure the pixel width of some text in a particular style. + Nul terminated text argument. Does not handle tab or control + characters.""" + pass + + def ToggleFold(self, line): + """Switch a header line between expanded and contracted.""" + pass + + def Undo(self): + """Undo one action in the undo history.""" + pass + + def UsePopUp(self, allowPopUp): + """Set whether a pop up menu is displayed automatically when + the user presses the wrong mouse button.""" + pass + + def UserListShow(self, listType, itemList): + """Display a list of strings and send notification when user + chooses one.""" + pass + + def VisibleFromDocLine(self, line): + """Find the display line of a document line taking hidden + lines into account.""" + pass + + def WordEndPosition(self, pos, onlyWordCharacters): + """Return position of end of word.""" + pass + + def WordPartLeft(self): + """Move to the previous change in capitalisation.""" + pass + + def WordPartLeftExtend(self): + """Move to the previous change in capitalisation extending + selection to new caret position.""" + pass + + def WordPartRight(self): + """Move to the change next in capitalisation.""" + pass + + def WordPartRightExtend(self): + """Move to the next change in capitalisation extending + selection to new caret position.""" + pass + + def WordStartPosition(self, pos, onlyWordCharacters): + """Return position of start of word.""" + pass diff --git a/wxPython/wxPython/lib/PyCrust/wxd/wx_.py b/wxPython/wxPython/lib/PyCrust/wxd/wx_.py new file mode 100644 index 0000000000..492d623714 --- /dev/null +++ b/wxPython/wxPython/lib/PyCrust/wxd/wx_.py @@ -0,0 +1,62 @@ +"""Decorator classes for documentation and shell scripting. +""" + +__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>" +__cvsid__ = "$Id$" +__revision__ = "$Revision$"[11:-2] + + +# These are not the real wxPython classes. These are Python versions +# for documentation purposes. They are also used to apply docstrings +# to the real wxPython classes, which are SWIG-generated wrappers for +# C-language classes. + + +_topics = { + 'Accelerators': None, + 'App': None, + 'Base': None, + 'ClipDragDrop': None, + 'Config': None, + 'Controls': None, + 'DataStructures': None, + 'DateTime': None, + 'Dialogs': None, + 'Drawing': None, + 'Errors': None, + 'EventFunctions': None, + 'Events': None, + 'FileSystem': None, + 'Frames': None, + 'Functions': None, + 'Help': None, + 'ImageHandlers': None, + 'Joystick': None, + 'LayoutConstraints': None, + 'Logging': None, + 'Menus': None, + 'MimeTypes': None, + 'Misc': None, + 'Panel': None, + 'Printing': None, + 'Process': None, + 'SashSplitter': None, + 'Sizers': None, + 'Streams': None, + 'Threading': None, + 'ToolBar': None, + 'Tree': None, + 'Validators': None, + 'Window': None, + } + +for topic in _topics.keys(): + _topics[topic] = __import__(topic, globals()) + exec 'from %s import *' % topic + +del topic # Cleanup the namespace. + +try: + del wx # Cleanup any module that imports Parameters as wx. +except: + pass diff --git a/wxPython/wxPython/lib/PythonBitmaps.py b/wxPython/wxPython/lib/PythonBitmaps.py index 79dfb0dcdd..bd06899ba5 100644 --- a/wxPython/wxPython/lib/PythonBitmaps.py +++ b/wxPython/wxPython/lib/PythonBitmaps.py @@ -21,7 +21,7 @@ getwxPythonImage PythonBitmaps - --This takes a single argument. If it tests true, + --This takes a single argument. If it tests True, getPythonPoweredBitmap() is returned, else getwxPythonBitmap() is returned. diff --git a/wxPython/wxPython/lib/buttons.py b/wxPython/wxPython/lib/buttons.py index e8e2a66f64..128ef0a2cc 100644 --- a/wxPython/wxPython/lib/buttons.py +++ b/wxPython/wxPython/lib/buttons.py @@ -28,13 +28,15 @@ wxGenBitmapToggleButton the same but with bitmaps. """ from wxPython.wx import * +import imageutils + #---------------------------------------------------------------------- class wxGenButtonEvent(wxPyCommandEvent): def __init__(self, eventType, ID): wxPyCommandEvent.__init__(self, eventType, ID) - self.isDown = false + self.isDown = False self.theButton = None def SetIsDown(self, isDown): @@ -63,10 +65,10 @@ class wxGenButton(wxPyControl): style = wxNO_BORDER wxPyControl.__init__(self, parent, ID, pos, size, style, validator, name) - self.up = true + self.up = True self.bezelWidth = 2 - self.hasFocus = false - self.useFocusInd = true + self.hasFocus = False + self.useFocusInd = True self.SetLabel(label) self.SetPosition(pos) @@ -131,6 +133,11 @@ class wxGenButton(wxPyControl): return self.IsShown() and self.IsEnabled() + def Enable(self, enable=True): + wxPyControl.Enable(self, enable) + self.Refresh() + + def SetBezelWidth(self, width): """Set the width of the 3D effect""" self.bezelWidth = width @@ -187,7 +194,7 @@ class wxGenButton(wxPyControl): def _GetLabelSize(self): """ used internally """ w, h = self.GetTextExtent(self.GetLabel()) - return w, h, true + return w, h, True def Notify(self): @@ -270,7 +277,7 @@ class wxGenButton(wxPyControl): def OnLeftDown(self, event): if not self.IsEnabled(): return - self.up = false + self.up = False self.CaptureMouse() self.SetFocus() self.Refresh() @@ -278,35 +285,36 @@ class wxGenButton(wxPyControl): def OnLeftUp(self, event): - if not self.IsEnabled(): + if not self.IsEnabled() or not self.HasCapture(): return - self.ReleaseMouse() - if not self.up: # if the button was down when the mouse was released... - self.Notify() - self.up = true - self.Refresh() - event.Skip() + if self.HasCapture(): + self.ReleaseMouse() + if not self.up: # if the button was down when the mouse was released... + self.Notify() + self.up = True + self.Refresh() + event.Skip() def OnMotion(self, event): - if not self.IsEnabled(): + if not self.IsEnabled() or not self.HasCapture(): return - if event.LeftIsDown(): + if event.LeftIsDown() and self.HasCapture(): x,y = event.GetPositionTuple() w,h = self.GetClientSizeTuple() if self.up and x<w and x>=0 and y<h and y>=0: - self.up = false + self.up = False self.Refresh() return if not self.up and (x<0 or y<0 or x>=w or y>=h): - self.up = true + self.up = True self.Refresh() return event.Skip() def OnGainFocus(self, event): - self.hasFocus = true + self.hasFocus = True dc = wxClientDC(self) w, h = self.GetClientSizeTuple() if self.useFocusInd: @@ -314,7 +322,7 @@ class wxGenButton(wxPyControl): def OnLoseFocus(self, event): - self.hasFocus = false + self.hasFocus = False dc = wxClientDC(self) w, h = self.GetClientSizeTuple() if self.useFocusInd: @@ -323,14 +331,14 @@ class wxGenButton(wxPyControl): def OnKeyDown(self, event): if self.hasFocus and event.KeyCode() == ord(" "): - self.up = false + self.up = False self.Refresh() event.Skip() def OnKeyUp(self, event): if self.hasFocus and event.KeyCode() == ord(" "): - self.up = true + self.up = True self.Notify() self.Refresh() event.Skip() @@ -343,10 +351,10 @@ class wxGenBitmapButton(wxGenButton): pos = wxDefaultPosition, size = wxDefaultSize, style = 0, validator = wxDefaultValidator, name = "genbutton"): - self.bmpLabel = bitmap self.bmpDisabled = None self.bmpFocus = None self.bmpSelected = None + self.SetBitmapLabel(bitmap) wxGenButton.__init__(self, parent, ID, "", pos, size, style, validator, name) @@ -367,22 +375,32 @@ class wxGenBitmapButton(wxGenButton): def SetBitmapFocus(self, bitmap): """Set bitmap to display when the button has the focus""" self.bmpFocus = bitmap - self.SetUseFocusIndicator(false) + self.SetUseFocusIndicator(False) def SetBitmapSelected(self, bitmap): """Set bitmap to display when the button is selected (pressed down)""" self.bmpSelected = bitmap - def SetBitmapLabel(self, bitmap): - """Set the bitmap to display normally. This is the only one that is required.""" + def SetBitmapLabel(self, bitmap, createOthers=True): + """ + Set the bitmap to display normally. + This is the only one that is required. If + createOthers is True, then the other bitmaps + will be generated on the fly. Currently, + only the disabled bitmap is generated. + """ self.bmpLabel = bitmap + if bitmap is not None and createOthers: + image = wxImageFromBitmap(bitmap) + imageutils.grayOut(image) + self.SetBitmapDisabled(wxBitmapFromImage(image)) def _GetLabelSize(self): """ used internally """ if not self.bmpLabel: - return -1, -1, false - return self.bmpLabel.GetWidth()+2, self.bmpLabel.GetHeight()+2, false + return -1, -1, False + return self.bmpLabel.GetWidth()+2, self.bmpLabel.GetHeight()+2, False def DrawLabel(self, dc, width, height, dw=0, dy=0): bmp = self.bmpLabel @@ -415,7 +433,7 @@ class wxGenBitmapTextButton(wxGenBitmapButton): # generic bitmapped button w """ used internally """ w, h = self.GetTextExtent(self.GetLabel()) if not self.bmpLabel: - return w, h, true # if there isn't a bitmap use the size of the text + return w, h, True # if there isn't a bitmap use the size of the text w_bmp = self.bmpLabel.GetWidth()+2 h_bmp = self.bmpLabel.GetHeight()+2 @@ -424,7 +442,7 @@ class wxGenBitmapTextButton(wxGenBitmapButton): # generic bitmapped button w height = h_bmp else: height = h - return width, height, true + return width, height, True def DrawLabel(self, dc, width, height, dw=0, dy=0): @@ -456,10 +474,10 @@ class wxGenBitmapTextButton(wxGenBitmapButton): # generic bitmapped button w pos_x = (width-bw-tw)/2+dw # adjust for bitmap and text to centre if bmp !=None: - dc.DrawBitmap(bmp, pos_x, (height-bh)/2+dy, hasMask) # draw bitmap if available + dc.DrawBitmap(bmp, pos_x, (height-bh)/2+dy, hasMask) # draw bitmap if available pos_x = pos_x + 2 # extra spacing from bitmap - dc.DrawText(label, pos_x + dw+bw, (height-th)/2+dy) # draw the text + dc.DrawText(label, pos_x + dw+bw, (height-th)/2+dy) # draw the text #---------------------------------------------------------------------- @@ -468,9 +486,12 @@ class wxGenBitmapTextButton(wxGenBitmapButton): # generic bitmapped button w class __ToggleMixin: def SetToggle(self, flag): self.up = not flag + self.Refresh() + SetValue = SetToggle def GetToggle(self): return not self.up + GetValue = GetToggle def OnLeftDown(self, event): if not self.IsEnabled(): @@ -482,16 +503,33 @@ class __ToggleMixin: self.Refresh() def OnLeftUp(self, event): - if not self.IsEnabled(): + if not self.IsEnabled() or not self.HasCapture(): return - if self.up != self.saveUp: - self.Notify() - self.ReleaseMouse() - self.Refresh() + if self.HasCapture(): + if self.up != self.saveUp: + self.Notify() + self.ReleaseMouse() + self.Refresh() def OnKeyDown(self, event): event.Skip() + def OnMotion(self, event): + if not self.IsEnabled(): + return + if event.LeftIsDown() and self.HasCapture(): + x,y = event.GetPositionTuple() + w,h = self.GetClientSizeTuple() + if x<w and x>=0 and y<h and y>=0: + self.up = not self.saveUp + self.Refresh() + return + if (x<0 or y<0 or x>=w or y>=h): + self.up = self.saveUp + self.Refresh() + return + event.Skip() + def OnKeyUp(self, event): if self.hasFocus and event.KeyCode() == ord(" "): self.up = not self.up diff --git a/wxPython/wxPython/lib/calendar.py b/wxPython/wxPython/lib/calendar.py index df66d76a9e..29ba2c753c 100644 --- a/wxPython/wxPython/lib/calendar.py +++ b/wxPython/wxPython/lib/calendar.py @@ -13,7 +13,6 @@ from wxPython.wx import * from CDate import * -import string, time CalDays = [6, 0, 1, 2, 3, 4, 5] @@ -44,7 +43,7 @@ class CalDraw: self.DefParms() def DefParms(self): - self.num_auto = TRUE # auto scale of the cal number day size + self.num_auto = True # auto scale of the cal number day size self.num_size = 12 # default size of calendar if no auto size self.max_num_size = 12 # maximum size for calendar number @@ -53,7 +52,7 @@ class CalDraw: self.num_indent_horz = 0 # points indent from position, used to offset if not centered self.num_indent_vert = 0 - self.week_auto = TRUE # auto scale of week font text + self.week_auto = True # auto scale of week font text self.week_size = 10 self.max_week_size = 12 @@ -71,13 +70,13 @@ class CalDraw: self.font = wxSWISS self.bold = wxNORMAL - self.hide_title = FALSE - self.hide_grid = FALSE - self.outer_border = TRUE + self.hide_title = False + self.hide_grid = False + self.outer_border = True self.title_offset = 0 self.cal_week_scale = 0.7 - self.show_weekend = FALSE + self.show_weekend = False self.cal_type = "NORMAL" def SetWeekColor(self, font_color, week_color): # set font and background color for week title @@ -123,7 +122,7 @@ class CalDraw: self.InitScale() self.DrawBorder() - if self.hide_title is FALSE: + if self.hide_title is False: self.DrawMonth() self.Center() @@ -131,7 +130,7 @@ class CalDraw: self.DrawGrid() self.GetRect() - if self.show_weekend is TRUE: # highlight weekend dates + if self.show_weekend is True: # highlight weekend dates self.SetWeekEnd() self.AddSelect(sel_lst) # overrides the weekend highlight @@ -154,7 +153,7 @@ class CalDraw: self.DC.SetBrush(brush) self.DC.SetPen(wxPen(wxNamedColour(self.border_color), 1)) - if self.outer_border is TRUE: + if self.outer_border is True: rect = wxRect(self.cx_st, self.cy_st, self.sizew, self.sizeh) # full display window area self.DC.DrawRectangle(rect.x, rect.y, rect.width, rect.height) @@ -245,7 +244,7 @@ class CalDraw: rect_w = self.gridx[7]-self.gridx[0] f = wxFont(10, self.font, wxNORMAL, self.bold) # initial font setting - if self.week_auto == TRUE: + if self.week_auto == True: test_size = self.max_week_size # max size test_day = ' Sun ' while test_size > 2: @@ -289,7 +288,7 @@ class CalDraw: def DrawNum(self): # draw the day numbers f = wxFont(10, self.font, wxNORMAL, self.bold) # initial font setting - if self.num_auto == TRUE: + if self.num_auto == True: test_size = self.max_num_size # max size test_day = ' 99 ' while test_size > 2: @@ -362,7 +361,7 @@ class CalDraw: brush = wxBrush(wxNamedColour(sel_color), wxSOLID) self.DC.SetBrush(brush) - if self.hide_grid is FALSE: + if self.hide_grid is False: self.DC.SetPen(wxPen(wxNamedColour(self.grid_color), 0)) else: self.DC.SetPen(wxPen(wxNamedColour(self.back_color), 0)) @@ -384,7 +383,7 @@ class CalDraw: y2 = y1 + self.cheight for i in range(8): - if self.hide_grid is FALSE: + if self.hide_grid is False: self.DC.DrawLine(x1, y1, x1, y2) self.gridx.append(x1) x1 = x1 + self.dl_w @@ -394,7 +393,7 @@ class CalDraw: x2 = x1 + self.cwidth for i in range(8): - if self.hide_grid is FALSE: + if self.hide_grid is False: self.DC.DrawLine(x1, y1, x2, y1) self.gridy.append(y1) if i == 0: @@ -429,10 +428,10 @@ class wxCalendar(wxWindow): self.grid_color = 'BLACK' self.back_color = 'WHITE' - self.hide_grid = FALSE + self.hide_grid = False self.sel_color = 'RED' - self.hide_title = FALSE - self.show_weekend = FALSE + self.hide_title = False + self.show_weekend = False self.cal_type = "NORMAL" self.week_color = 'LIGHT GREY' @@ -460,10 +459,10 @@ class wxCalendar(wxWindow): # control some of the main calendar attributes def HideTitle(self): - self.hide_title = TRUE + self.hide_title = True def HideGrid(self): - self.hide_grid = TRUE + self.hide_grid = True # determine the calendar rectangle click area and draw a selection @@ -606,13 +605,13 @@ class wxCalendar(wxWindow): self.select_list.append(list_val) def ShowWeekEnd(self): - self.show_weekend = TRUE # highlight weekend + self.show_weekend = True # highlight weekend def SetBusType(self): self.cal_type = "BUS" def OnSize(self, evt): - self.Refresh(false) + self.Refresh(False) evt.Skip() def OnPaint(self, event): @@ -685,7 +684,7 @@ class wxCalendar(wxWindow): def SelectDay(self, key): sel_size = 1 self.DrawRect(self.sel_key, self.back_color, sel_size) # clear large selection - if self.hide_grid is FALSE: + if self.hide_grid is False: self.DrawRect(self.sel_key, self.grid_color) self.DrawRect(key, self.sel_color, sel_size) diff --git a/wxPython/wxPython/lib/colourchooser/__init__.py b/wxPython/wxPython/lib/colourchooser/__init__.py new file mode 100644 index 0000000000..dcb9ec8897 --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/__init__.py @@ -0,0 +1,26 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu> + +This file is part of wxPyColourChooser. + +This version of wxPyColourChooser is open source; you can redistribute it +and/or modify it under the licensed terms. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +from pycolourchooser import * + +# For the American in you +wxPyColorChooser = wxPyColourChooser + +__all__ = [ + 'canvas', + 'pycolourbox', + 'pycolourchooser', + 'pycolourslider', + 'pypalette', +] diff --git a/wxPython/wxPython/lib/colourchooser/canvas.py b/wxPython/wxPython/lib/colourchooser/canvas.py new file mode 100644 index 0000000000..730a6fb629 --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/canvas.py @@ -0,0 +1,120 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu> + +This file is part of wxPyColourChooser. + +This version of wxPyColourChooser is open source; you can redistribute it +and/or modify it under the licensed terms. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +from wxPython.wx import * + +class BitmapBuffer(wxMemoryDC): + """A screen buffer class. + + This class implements a screen output buffer. Data is meant to + be drawn in the buffer class and then blitted directly to the + output device, or on-screen window. + """ + def __init__(self, width, height, colour): + """Initialize the empty buffer object.""" + wxMemoryDC.__init__(self) + + self.width = width + self.height = height + self.colour = colour + + self.bitmap = wxEmptyBitmap(self.width, self.height) + self.SelectObject(self.bitmap) + + # Initialize the buffer to the background colour + self.SetBackground(wxBrush(self.colour, wxSOLID)) + self.Clear() + + # Make each logical unit of the buffer equal to 1 pixel + self.SetMapMode(wxMM_TEXT) + + def GetBitmap(self): + """Returns the internal bitmap for direct drawing.""" + return self.bitmap + +class Canvas(wxWindow): + """A canvas class for arbitrary drawing. + + The Canvas class implements a window that allows for drawing + arbitrary graphics. It implements a double buffer scheme and + blits the off-screen buffer to the window during paint calls + by the windowing system for speed. + + Some other methods for determining the canvas colour and size + are also provided. + """ + def __init__(self, parent, id, + pos=wxDefaultPosition, + size=wxDefaultSize, + style=wxSIMPLE_BORDER): + """Creates a canvas instance and initializes the off-screen + buffer. Also sets the handler for rendering the canvas + automatically via size and paint calls from the windowing + system.""" + wxWindow.__init__(self, parent, id, pos, size, style) + + # Perform an intial sizing + self.ReDraw() + + # Register event handlers + EVT_SIZE(self, self.onSize) + EVT_PAINT(self, self.onPaint) + + def MakeNewBuffer(self): + size = self.GetSizeTuple() + self.buffer = BitmapBuffer(size[0], size[1], + self.GetBackgroundColour()) + + def onSize(self, event): + """Perform actual redraw to off-screen buffer only when the + size of the canvas has changed. This saves a lot of computation + since the same image can be re-used, provided the canvas size + hasn't changed.""" + self.MakeNewBuffer() + self.DrawBuffer() + self.Refresh() + + def ReDraw(self): + """Explicitly tells the canvas to redraw it's contents.""" + self.onSize(None) + + def Refresh(self): + """Re-draws the buffer contents on-screen.""" + dc = wxClientDC(self) + self.Blit(dc) + + def onPaint(self, event): + """Renders the off-screen buffer on-screen.""" + dc = wxPaintDC(self) + self.Blit(dc) + + def Blit(self, dc): + """Performs the blit of the buffer contents on-screen.""" + width, height = self.buffer.GetSize() + dc.BeginDrawing() + dc.Blit(0, 0, width, height, self.buffer, 0, 0) + dc.EndDrawing() + + def GetBoundingRect(self): + """Returns a tuple that contains the co-ordinates of the + top-left and bottom-right corners of the canvas.""" + x, y = self.GetPositionTuple() + w, h = self.GetSize() + return(x, y + h, x + w, y) + + def DrawBuffer(self): + """Actual drawing function for drawing into the off-screen + buffer. To be overrideen in the implementing class. Do nothing + by default.""" + pass diff --git a/wxPython/wxPython/lib/colourchooser/intl.py b/wxPython/wxPython/lib/colourchooser/intl.py new file mode 100644 index 0000000000..cfc84f1359 --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/intl.py @@ -0,0 +1,24 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu> + +This file is part of wxPyColourChooser. + +This version of wxPyColourChooser is open source; you can redistribute it +and/or modify it under the licensed terms. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +try: + import gettext + + gettext.bindtextdomain('wxpycolourchooser') + gettext.textdomain('wxpycolourchooser') + _ = gettext.gettext +except Exception, strerror: + print "Warning: Couldn't import translation function: %(str)s" %{ 'str' : strerror } + print "Defaulting to En" + _ = lambda x: x diff --git a/wxPython/wxPython/lib/colourchooser/pycolourbox.py b/wxPython/wxPython/lib/colourchooser/pycolourbox.py new file mode 100644 index 0000000000..e48bdc373a --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/pycolourbox.py @@ -0,0 +1,79 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu> + +This file is part of wxPyColourChooser. + +This version of wxPyColourChooser is open source; you can redistribute it +and/or modify it under the licensed terms. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +from wxPython.wx import * + +class PyColourBox(wxPanel): + """A Colour Selection Box + + The Colour selection box implements button like behavior but contains + a solid-filled, coloured sub-box. Placing the colour in a sub-box allows + for filling in the main panel's background for a high-lighting effect. + """ + def __init__(self, parent, id, colour=(0, 0, 0), size=(25, 20)): + """Creates a new colour box instance and initializes the colour + content.""" + wxPanel.__init__(self, parent, id, + size=wxSize(size[0], size[1])) + + self.colour_box = wxPanel(self, -1, style=wxSIMPLE_BORDER) + + sizer = wxGridSizer(1, 1) + sizer.Add(self.colour_box, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL) + sizer.SetItemMinSize(self.colour_box, size[0] - 5, size[1] - 5) + self.SetAutoLayout(True) + self.SetSizer(sizer) + self.Layout() + + self.real_bg = self.GetBackgroundColour() + self.SetColourTuple(colour) + + def GetColourBox(self): + """Returns a reference to the internal box object containing the + color. This function is useful for setting up event handlers for + the box.""" + return self.colour_box + + def GetColour(self): + """Returns a wxColour object indicating the box's current colour.""" + return self.colour_box.GetBackgroundColour() + + def SetColour(self, colour): + """Accepts a wxColour object and sets the box's current color.""" + self.colour_box.SetBackgroundColour(colour) + self.colour_box.Refresh() + + def SetColourTuple(self, colour): + """Sets the box's current couple to the given tuple.""" + self.colour = colour + self.colour_box.SetBackgroundColour(apply(wxColour, self.colour)) + + def Update(self): + wxPanel.Update(self) + self.colour_box.Update() + + def SetHighlight(self, val): + """Accepts a boolean 'val' toggling the box's highlighting.""" + # XXX This code has been disabled for now until I can figure out + # how to get this to work reliably across all platforms. + if val: + #A wxColourPtr is returned in windows, making this difficult + red =(self.real_bg.Red() - 45) % 255 + green =(self.real_bg.Green() - 45) % 255 + blue =(self.real_bg.Blue() - 45) % 255 + new_colour = wxColour(red, green, blue) + self.SetBackgroundColour(new_colour) + else: + self.SetBackgroundColour(self.real_bg) + self.Refresh() diff --git a/wxPython/wxPython/lib/colourchooser/pycolourchooser.py b/wxPython/wxPython/lib/colourchooser/pycolourchooser.py new file mode 100644 index 0000000000..28c691060f --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/pycolourchooser.py @@ -0,0 +1,385 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu> + +This file is part of wxPyColourChooser. + +This version of wxPyColourChooser is open source; you can redistribute it +and/or modify it under the licensed terms. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +import pycolourbox +import pypalette +import pycolourslider +import colorsys +from intl import _ +from wxPython.wx import * + +class wxPyColourChooser(wxPanel): + """A Pure-Python implementation of the colour chooser dialog. + + The PyColourChooser is a pure python implementation of the colour + chooser dialog. It's useful for embedding the colour choosing functionality + inside other widgets, when the pop-up dialog is undesirable. It can also + be used as a drop-in replacement on the GTK platform, as the native + dialog is kind of ugly. + """ + + colour_names = [ + 'ORANGE', + 'GOLDENROD', + 'WHEAT', + 'SPRING GREEN', + 'SKY BLUE', + 'SLATE BLUE', + 'MEDIUM VIOLET RED', + 'PURPLE', + + 'RED', + 'YELLOW', + 'MEDIUM SPRING GREEN', + 'PALE GREEN', + 'CYAN', + 'LIGHT STEEL BLUE', + 'ORCHID', + 'LIGHT MAGENTA', + + 'BROWN', + 'YELLOW', + 'GREEN', + 'CADET BLUE', + 'MEDIUM BLUE', + 'MAGENTA', + 'MAROON', + 'ORANGE RED', + + 'FIREBRICK', + 'CORAL', + 'FOREST GREEN', + 'AQUAMARINE', + 'BLUE', + 'NAVY', + 'THISTLE', + 'MEDIUM VIOLET RED', + + 'INDIAN RED', + 'GOLD', + 'MEDIUM SEA GREEN', + 'MEDIUM BLUE', + 'MIDNIGHT BLUE', + 'GREY', + 'PURPLE', + 'KHAKI', + + 'BLACK', + 'MEDIUM FOREST GREEN', + 'KHAKI', + 'DARK GREY', + 'SEA GREEN', + 'LIGHT GREY', + 'MEDIUM SLATE BLUE', + 'WHITE', + ] + + # Generate the custom colours. These colours are shared across + # all instances of the colour chooser + NO_CUSTOM_COLOURS = 16 + custom_colours = [ (wxColour(255, 255, 255), + pycolourslider.PyColourSlider.HEIGHT / 2) + ] * NO_CUSTOM_COLOURS + last_custom = 0 + + idADD_CUSTOM = wxNewId() + idSCROLL = wxNewId() + + def __init__(self, parent, id): + """Creates an instance of the colour chooser. Note that it is best to + accept the given size of the colour chooser as it is currently not + resizeable.""" + wxPanel.__init__(self, parent, id) + + self.basic_label = wxStaticText(self, -1, _("Basic Colours:")) + self.custom_label = wxStaticText(self, -1, _("Custom Colours:")) + self.add_button = wxButton(self, self.idADD_CUSTOM, _("Add to Custom Colours")) + + EVT_BUTTON(self, self.idADD_CUSTOM, self.onAddCustom) + + # Since we're going to be constructing widgets that require some serious + # computation, let's process any events (like redraws) right now + wxYield() + + # Create the basic colours palette + self.colour_boxs = [ ] + colour_grid = wxGridSizer(6, 8) + for name in self.colour_names: + new_id = wxNewId() + box = pycolourbox.PyColourBox(self, new_id) + EVT_LEFT_DOWN(box.GetColourBox(), lambda x, b=box: self.onBasicClick(x, b)) + self.colour_boxs.append(box) + colour_grid.Add(box, 0, wxEXPAND) + + # Create the custom colours palette + self.custom_boxs = [ ] + custom_grid = wxGridSizer(2, 8) + for wxcolour, slidepos in self.custom_colours: + new_id = wxNewId() + custom = pycolourbox.PyColourBox(self, new_id) + EVT_LEFT_DOWN(custom.GetColourBox(), lambda x, b=custom: self.onCustomClick(x, b)) + custom.SetColour(wxcolour) + custom_grid.Add(custom, 0, wxEXPAND) + self.custom_boxs.append(custom) + + csizer = wxBoxSizer(wxVERTICAL) + csizer.Add(1, 25) + csizer.Add(self.basic_label, 0, wxEXPAND) + csizer.Add(1, 5) + csizer.Add(colour_grid, 0, wxEXPAND) + csizer.Add(1, 25) + csizer.Add(self.custom_label, 0, wxEXPAND) + csizer.Add(1, 5) + csizer.Add(custom_grid, 0, wxEXPAND) + csizer.Add(1, 5) + csizer.Add(self.add_button, 0, wxEXPAND) + + self.palette = pypalette.PyPalette(self, -1) + self.colour_slider = pycolourslider.PyColourSlider(self, -1) + self.slider = wxSlider(self, self.idSCROLL, 86, 0, self.colour_slider.HEIGHT - 1, + style=wxSL_VERTICAL, size=wxSize(15, self.colour_slider.HEIGHT)) + EVT_COMMAND_SCROLL(self, self.idSCROLL, self.onScroll) + psizer = wxBoxSizer(wxHORIZONTAL) + psizer.Add(self.palette, 0, 0) + psizer.Add(10, 1) + psizer.Add(self.colour_slider, 0, wxALIGN_CENTER_VERTICAL) + psizer.Add(self.slider, 0, wxALIGN_CENTER_VERTICAL) + + # Register mouse events for dragging across the palette + EVT_LEFT_DOWN(self.palette, self.onPaletteDown) + EVT_LEFT_UP(self.palette, self.onPaletteUp) + EVT_MOTION(self.palette, self.onPaletteMotion) + self.mouse_down = False + + self.solid = pycolourbox.PyColourBox(self, -1, size=wxSize(75, 50)) + slabel = wxStaticText(self, -1, _("Solid Colour")) + ssizer = wxBoxSizer(wxVERTICAL) + ssizer.Add(self.solid, 0, 0) + ssizer.Add(1, 2) + ssizer.Add(slabel, 0, wxALIGN_CENTER_HORIZONTAL) + + hlabel = wxStaticText(self, -1, _("H:")) + self.hentry = wxTextCtrl(self, -1) + self.hentry.SetSize((40, -1)) + slabel = wxStaticText(self, -1, _("S:")) + self.sentry = wxTextCtrl(self, -1) + self.sentry.SetSize((40, -1)) + vlabel = wxStaticText(self, -1, _("V:")) + self.ventry = wxTextCtrl(self, -1) + self.ventry.SetSize((40, -1)) + hsvgrid = wxFlexGridSizer(1, 6, 2, 2) + hsvgrid.AddMany ([ + (hlabel, 0, wxALIGN_CENTER_VERTICAL), (self.hentry, 0, 0), + (slabel, 0, wxALIGN_CENTER_VERTICAL), (self.sentry, 0, 0), + (vlabel, 0, wxALIGN_CENTER_VERTICAL), (self.ventry, 0, 0), + ]) + + rlabel = wxStaticText(self, -1, _("R:")) + self.rentry = wxTextCtrl(self, -1) + self.rentry.SetSize((40, -1)) + glabel = wxStaticText(self, -1, _("G:")) + self.gentry = wxTextCtrl(self, -1) + self.gentry.SetSize((40, -1)) + blabel = wxStaticText(self, -1, _("B:")) + self.bentry = wxTextCtrl(self, -1) + self.bentry.SetSize((40, -1)) + lgrid = wxFlexGridSizer(1, 6, 2, 2) + lgrid.AddMany([ + (rlabel, 0, wxALIGN_CENTER_VERTICAL), (self.rentry, 0, 0), + (glabel, 0, wxALIGN_CENTER_VERTICAL), (self.gentry, 0, 0), + (blabel, 0, wxALIGN_CENTER_VERTICAL), (self.bentry, 0, 0), + ]) + + gsizer = wxGridSizer(2, 1) + gsizer.SetVGap (10) + gsizer.SetHGap (2) + gsizer.Add(hsvgrid, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL) + gsizer.Add(lgrid, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL) + + hsizer = wxBoxSizer(wxHORIZONTAL) + hsizer.Add(ssizer, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL) + hsizer.Add(gsizer, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL) + + vsizer = wxBoxSizer(wxVERTICAL) + vsizer.Add(1, 5) + vsizer.Add(psizer, 0, 0) + vsizer.Add(1, 15) + vsizer.Add(hsizer, 0, wxEXPAND) + + sizer = wxBoxSizer(wxHORIZONTAL) + sizer.Add(5, 1) + sizer.Add(csizer, 0, wxEXPAND) + sizer.Add(10, 1) + sizer.Add(vsizer, 0, wxEXPAND) + self.SetAutoLayout(True) + self.SetSizer(sizer) + sizer.Fit(self) + + self.InitColours() + self.UpdateColour(self.solid.GetColour()) + + def InitColours(self): + """Initializes the pre-set palette colours.""" + for i in range(len(self.colour_names)): + colour = wxTheColourDatabase.FindColour(self.colour_names[i]) + self.colour_boxs[i].SetColourTuple((colour.Red(), + colour.Green(), + colour.Blue())) + + def onBasicClick(self, event, box): + """Highlights the selected colour box and updates the solid colour + display and colour slider to reflect the choice.""" + if hasattr(self, '_old_custom_highlight'): + self._old_custom_highlight.SetHighlight(False) + if hasattr(self, '_old_colour_highlight'): + self._old_colour_highlight.SetHighlight(False) + box.SetHighlight(True) + self._old_colour_highlight = box + self.UpdateColour(box.GetColour()) + + def onCustomClick(self, event, box): + """Highlights the selected custom colour box and updates the solid + colour display and colour slider to reflect the choice.""" + if hasattr(self, '_old_colour_highlight'): + self._old_colour_highlight.SetHighlight(False) + if hasattr(self, '_old_custom_highlight'): + self._old_custom_highlight.SetHighlight(False) + box.SetHighlight(True) + self._old_custom_highlight = box + + # Update the colour panel and then the slider accordingly + box_index = self.custom_boxs.index(box) + base_colour, slidepos = self.custom_colours[box_index] + self.UpdateColour(box.GetColour()) + self.slider.SetValue(slidepos) + + def onAddCustom(self, event): + """Adds a custom colour to the custom colour box set. Boxes are + chosen in a round-robin fashion, eventually overwriting previously + added colours.""" + # Store the colour and slider position so we can restore the + # custom colours just as they were + self.setCustomColour(self.last_custom, + self.solid.GetColour(), + self.colour_slider.GetBaseColour(), + self.slider.GetValue()) + self.last_custom = (self.last_custom + 1) % self.NO_CUSTOM_COLOURS + + def setCustomColour (self, index, true_colour, base_colour, slidepos): + """Sets the custom colour at the given index. true_colour is wxColour + object containing the actual rgb value of the custom colour. + base_colour (wxColour) and slidepos (int) are used to configure the + colour slider and set everything to its original position.""" + self.custom_boxs[index].SetColour(true_colour) + self.custom_colours[index] = (base_colour, slidepos) + + def UpdateColour(self, colour): + """Performs necessary updates for when the colour selection has + changed.""" + # Reset the palette to erase any highlighting + self.palette.ReDraw() + + # Set the color info + self.solid.SetColour(colour) + self.colour_slider.SetBaseColour(colour) + self.colour_slider.ReDraw() + self.slider.SetValue(0) + self.UpdateEntries(colour) + + def UpdateEntries(self, colour): + """Updates the color levels to display the new values.""" + # Temporary bindings + r = colour.Red() + g = colour.Green() + b = colour.Blue() + + # Update the RGB entries + self.rentry.SetValue(str(r)) + self.gentry.SetValue(str(g)) + self.bentry.SetValue(str(b)) + + # Convert to HSV + h,s,v = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0) + self.hentry.SetValue("%.2f" % (h)) + self.sentry.SetValue("%.2f" % (s)) + self.ventry.SetValue("%.2f" % (v)) + + def onPaletteDown(self, event): + """Stores state that the mouse has been pressed and updates + the selected colour values.""" + self.mouse_down = True + self.palette.ReDraw() + self.doPaletteClick(event.m_x, event.m_y) + + def onPaletteUp(self, event): + """Stores state that the mouse is no longer depressed.""" + self.mouse_down = False + + def onPaletteMotion(self, event): + """Updates the colour values during mouse motion while the + mouse button is depressed.""" + if self.mouse_down: + self.doPaletteClick(event.m_x, event.m_y) + + def doPaletteClick(self, m_x, m_y): + """Updates the colour values based on the mouse location + over the palette.""" + # Get the colour value and update + colour = self.palette.GetValue(m_x, m_y) + self.UpdateColour(colour) + + # Highlight a fresh selected area + self.palette.ReDraw() + self.palette.HighlightPoint(m_x, m_y) + + # Force an onscreen update + self.solid.Update() + self.colour_slider.Refresh() + + def onScroll(self, event): + """Updates the solid colour display to reflect the changing slider.""" + value = self.slider.GetValue() + colour = self.colour_slider.GetValue(value) + self.solid.SetColour(colour) + self.UpdateEntries(colour) + + def SetValue(self, colour): + """Updates the colour chooser to reflect the given wxColour.""" + self.UpdateColour(colour) + + def GetValue(self): + """Returns a wxColour object indicating the current colour choice.""" + return self.solid.GetColour() + +def main(): + """Simple test display.""" + class App(wxApp): + def OnInit(self): + frame = wxFrame(NULL, -1, 'PyColourChooser Test') + + chooser = wxPyColourChooser(frame, -1) + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(chooser, 0, 0) + frame.SetAutoLayout(True) + frame.SetSizer(sizer) + sizer.Fit(frame) + + frame.Show(True) + self.SetTopWindow(frame) + return True + app = App() + app.MainLoop() + +if __name__ == '__main__': + main() diff --git a/wxPython/wxPython/lib/colourchooser/pycolourslider.py b/wxPython/wxPython/lib/colourchooser/pycolourslider.py new file mode 100644 index 0000000000..17cab48e8f --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/pycolourslider.py @@ -0,0 +1,82 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix + +This file is part of wxPyColourChooser. + +You should have received a file COPYING containing license terms +along with this program; if not, write to Michael Gilfix +(mgilfix@eecs.tufts.edu) for a copy. + +This version of wxPyColourChooser is open source; you can redistribute it and/or +modify it under the terms listed in the file COPYING. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +import canvas +import colorsys +from wxPython.wx import * + +class PyColourSlider(canvas.Canvas): + """A Pure-Python Colour Slider + + The colour slider displays transitions from value 0 to value 1 in + HSV, allowing the user to select a colour within the transition + spectrum. + + This class is best accompanying by a wxSlider that allows the user + to select a particular colour shade. + """ + + HEIGHT = 172 + WIDTH = 12 + + def __init__(self, parent, id, colour=None): + """Creates a blank slider instance. A colour must be set before the + slider will be filled in.""" + # Set the base colour first since our base class calls the buffer + # drawing function + self.SetBaseColour(colour) + + canvas.Canvas.__init__(self, parent, id, + size=wxSize(self.WIDTH, self.HEIGHT)) + + def SetBaseColour(self, colour): + """Sets the base, or target colour, to use as the central colour + when calculating colour transitions.""" + self.base_colour = colour + + def GetBaseColour(self): + """Return the current colour used as a colour base for filling out + the slider.""" + return self.base_colour + + def GetValue(self, pos): + """Returns the colour value for a position on the slider. The position + must be within the valid height of the slider, or results can be + unpredictable.""" + return self.buffer.GetPixel(0, pos) + + def DrawBuffer(self): + """Actual implementation of the widget's drawing. We simply draw + from value 0.0 to value 1.0 in HSV.""" + if self.base_colour is None: + return + + target_red = self.base_colour.Red() + target_green = self.base_colour.Green() + target_blue = self.base_colour.Blue() + + h,s,v = colorsys.rgb_to_hsv(target_red / 255.0, target_green / 255.0, + target_blue / 255.0) + v = 1.0 + vstep = 1.0 / self.HEIGHT + for y_pos in range(0, self.HEIGHT): + r,g,b = [c * 255.0 for c in colorsys.hsv_to_rgb(h,s,v)] + colour = wxColour(int(r), int(g),(b)) + self.buffer.SetPen(wxPen(colour, 1, wxSOLID)) + self.buffer.DrawRectangle(0, y_pos, 15, 1) + v = v - vstep diff --git a/wxPython/wxPython/lib/colourchooser/pypalette.py b/wxPython/wxPython/lib/colourchooser/pypalette.py new file mode 100644 index 0000000000..3cbbfeeb49 --- /dev/null +++ b/wxPython/wxPython/lib/colourchooser/pypalette.py @@ -0,0 +1,214 @@ +""" +wxPyColourChooser +Copyright (C) 2002 Michael Gilfix + +This file is part of wxPyColourChooser. + +You should have received a file COPYING containing license terms +along with this program; if not, write to Michael Gilfix +(mgilfix@eecs.tufts.edu) for a copy. + +This version of wxPyColourChooser is open source; you can redistribute it and/or +modify it under the terms listed in the file COPYING. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" + +import canvas +import colorsys +import cStringIO, zlib +from wxPython.wx import * + +# Bitmap functions generated from img2py +def getData(): + return zlib.decompress( +'x\xdaUV{<\x93{\x18\x1f:\xe3\xc8Xj\xa3a\xe6R\x9db*B.3\x93\xeb\xe9\x1c\xb7\ +\xe4\xb2r9\x8c\xe5\x12e\xc9\xda\x88\x9a\xb4\x83\xcet\xa1N\xae\x85\xe3\xb2\ +\xe1,\xb7\xc2\x8a\xd0\x99D\xc8t\xdc\x86r\x1f\x96\\\x16k:\xebC\xe78\xef\xe7\ +\xf3\xbe\xbf?\xde\xf7\xf9=\xcf\xf3\xbd<\xbf\xf7WgG;\x90,L\x16\x00\x00\x80\ +\x1c\xec\xad]\xc5+[|7\xc8\x00\xc5O\xccv\xddE\xf1\xb2\x8d`\xe5\xe0&#\xbebdpT\ +\x00`\xbb\x94\x835\xc6\x8d\x989\x97\xd5N\xca\xb3\x05\xdb\xdc\x9c[\xd0\xf4\ +\xd2\xe6\x7f\xb9\xd3\xaa\xe9\x85\xd3\xd5\xd9\xbe]\xa7\xf2\xf1\xf2\x1b\xef\ +\x1b\xe6\xb7\tF\xca\t`\xef\xf9\xb5\xa2\x87\xe1\x8d\xd3\x8ft\xef\x06z\xa5\x8f\ +\xd7\x04\xf6y\xaf\xfbT\x0e\xad~\xce\xf1E\xa7\xc7\xe9\r\x8c\xab\xb7\xad_\xe4/\ +r\xf9\xb1\xbe\x97[\xb3\x88\xfcx\xd6\\\xdf\x15\x88\xca\xcc\xc0\xb0\x10\xef\ +\x81B\x9a\xf3Xzq\x1c\xb9\xa2E\xb2\xd3v\x80\xfd90@Ju[\xc3H\xe0\xea\xca\xdc\ +\xfbr\xde\xbb\xf0U\xcd\xf4\xd7\xfe\xabc\xbaN\xc2\xe3\xcc>T\xa6)(\xaa\x9f\xe7\ +\n\xaa\xe9\x00gcz\xa8Y\xb4\x8a\xc4\x0fr\x9a\x89\xe4\x9eJ\xe7\xa6z\xaf\xf7\ +\xcc\xc4\x11YI\xbfx\n@y\x04\x01\x00\nL\xd8\xb3#\xfa\x0e\'\xb7\xc1n\x98\xd3h\ +\xd5\x14\xd50\xeaA\x0bd\x8a\x16\x07\x96\xa0#\x13/!\xbf\xf1\xe5\x94)\xd5\xc3\ +\xfe\x9ej\x0c<\x8b<8\x89\x98\xcb\x9ek\x18X^\xf9\xa9\xffJ\r/\xd93\xda\xc2\xfd\ +\xfa\tt\xb9\xa3\x07\xe8u1\xc5\\O\xe9w\x94\xd6\n\x1e\xe8\xb1Q#@Z\xe2\x10\xd1\ +\xcb\xc7\x17\xbd\x9e\x94\x14~\xf9\xd6\xe0\xb1\xb3\xe8\xd8\x07E\xe4\xa6F\x87\ +\xbe6:K\xf8\xfanrn\x8b\xa4=e\xb3\x98\xf3\xc8\xde|\x0b\xf0\xb5\xb7\xfb\x0e\ +\xf5\x83:m3\xcbs\xfe*T\xc7\x89\xe1\x1a\xc8X=\xbfZ\xc4#\xd0\xee\x93d\xb6lL\ +\x15\xe4\xe3\xf7\xd8w\r\x1eK\xe0\xce\xad-`\x19g\xe6\x1f\xc8}\xcc}\xee\xecF\ +\x19_\xa6PUq\xee\xa2\x80\x1d\xbc\xf5\x14g\xe04\xa4\xc0EZB\xe6[\x1al\xb2!,\ +\xac\xa4\xf3O\x83\xa5y\x96(\xa7\xdd\xc61\x1aX\xa4X\xa8\x96\xdf2\x93\x067\x1c\ +\xf0\xed\x10\xaa\xe3\xe9\x96\xac\'l\x14\xb7\xc1\x0ed\x85\x96\xb1\x84m&d\x872\ +\x1f)\xe6wt\xd6\tV\xbe\xd4\xbe\xeaE\xcf\xaca\x92f4*Z\xce\xf8\xa0\xd9\x97\xa2\ ++\xcc\x90$\xbb\xac8\x0b\xf7\x93\xfa\xb6\xf2\x92\x9d\xa0M\xec\xc6\xaa<\x17\ +\xad\x8d\'\xc29\xd1uQjcU}\x8a\x1c\xbf\x9fg\x12\x9c\x1f\\4RZ8\xe2\xf5s@J\t\ +\xc5\rU\x92\xab\xf6B\xb3\x97\x8f^\xb8\xa5_\xd0\x98tQ\xa6KA\x12\x0c\x14gl\xc0\ +\x00\xe4f*=\xa3\x1ef\x0c\rU<\xb1sO\xaa\x0c\x82;\r)\xc8\x9c\xc0\x1f9CMch\xd4\ +\x9fn\xde/g\xc3C\xb0\xb0\x8cuS6\xf3;\x8d2q\x7fG7\x88;\xb4~9\xd5e\xa1}\x7f\ +\xd5\xa9Z\x88\x99\xaft+\xeca?\xa2qh\xaf\x8af\xbf\x82\xfe%\xac\xf6\nC_\xc6D\ +\xc6Ry\xb3\xb7N\x11"\xcfU\xbb@m\x86AY\na\xfa;\xa1\x93\x96\xf2i\xd0\x04S\x90~\ +\x1b\xb8z[1C\xde\x15w\xed\x0b\xd8\xd0\xbe\\\x19\x84\x84\xfe\x1bE\re\xda\x1az\ +6\xe6\xbe!+\x86V\xbd\xfb\xc3\xfb\xd9[\xff\xc0\x8c\xc5\nH<\x82U#2S\t\xc8\x1en\ +\xa7\xb5E\xde\x14W\xd2w\xe3\xf0\x18\x02\xa0\xf7\xad\xb6\xb2\x96\xfb\xbbH\x02\ +\x0b\x85P\xb7\xe4\x02!\xe6a\xc4d\xe8]\x17\xa4\x8bk2G\xaf\xa2p\\\x8e\xd0\x8e\ +\t\nf\xce\xf0\x10}O\xc1\x95\x9e\x80\xa6\x91\x8d\xae0\xcf\xa0\xc7\x97-h\xc3\ +\x1f\xb8"l\x14\xcaz9\xffYl\x15.l|\xc4\x94\xdd&\x9c\x9f\xf8\xb8f7\x08cA\x1e\ +\x85\x11,\xb0\xba\xf1\x87639\xfbJ\xef~e\xf3\xdbK\xd4\xe7\xec\xa5\x92\x17\xf7\ +\x1aO\xe3*\xd5\xf3\xcbA\xef\xf4\xa4[\x1d\xaf\xd7>M-\xf1\xb9@\xea\x96x\xd9(\ +\x06Z\xec+J\xed\xe5\xd45\x95\xe1\xba\xeb\xf4\xa4\xa3i\xbb\x82}\xd0\xf6Lh\xe8\ +E4;0\x9aPk\x0emo~G\x04\xb6&u\xb31\x80\xdao\x01\xf5P\x1d\xd8\x05\x92qmV\xf6R\ +\x17\x89\x1a-\xf4\x15P*\xf9?|\xcea\xa9\x8f\x99~6\x92^\xf8\x03s\x11;v\xe2D\ +\xc4^\x1c>Q\xbfY\xd0n\xbaE\xc0b=\x91\x0c=[U\x86\xfb\x06\xb52\x92\x19M1uz<\ +\xb1\xa4r~4\x83E\xe2y\x08\x0f\nQ\x84\xe8\xfa\xfa\xea\x13\x0e\xd4\x95\x91\\\ +\x7f\xf6)\x08`\xb6\x89\xc5\x95^\xff\xe2\\\x03X\xe4\xbe\x88x\x8f\xe34\xb7\xe6\ +\xbe\t\xf8\\w\x9c\xd3\x1a\xee\x98\xeeW\x92\xad\x83\x99\xb6B\xcb\x8f\xbdD\x86\ +\xc6\xe3\xab\x1b\xb2\xdf\x08:9\xbc\x9e\xf3\xf9h\xd1\xec\xd98\xc8%\x0b\x87c\ +\xb8\xbc\x0f\xad\x89\xca\xa5\x94J\xa9\x88j\x1ddo\x91u\x84\xf3\xcd\xea\xc5\ +\xf6\x99\xab\xe0\xd7-\x92\xff:\xe6)T\x07\x0bd\x1b\xa9+9\xa4\x86\xec2F\xa1\ +\xa6\x7f\xbc\xd1C\x9e\xf4=D\x12\xa2\x07\x94\t\xb1\xe8\xb5\xfb\x94\x14q~R\xa1\ +\xe6Y<\xad\xcb\x94j\xbc\xb3##\x0f\xd0 \xbf\xc9\x01\xf8\xad\xb8V\x82sdO7\xbd\ +\xbe\xd5Bd\x9f\xc0m#\xd4h<j\xf5*\x84\x86VKt\x0c4\xc1QkD\xbd\xee\xd0\xdc\xcc\ +\xad\xc5bN\'\x8f\x1b\x92\x95\x8e\xdf,\xb1\xfa\xe0\xc7f\xd5\xc7\x95\xd1&\xe06\ +\xcb\xb4t/\xa0KTj\xd0\xe2\xfb\xd2\xc3!\xf1\xcb?\r7_\x14K$xs(\xfa}~\xe2\xd9\ +\xe5gP\xd4\xfaq\x97\xb1\x0b\xd2]\xe5|\x19o2(Vm\xfe>\xe5\x13jZ\xdan\x98\xf3\ +\xe4:\x1ep\x93B\xec6?\tO\x0eaB\x99>\xc6Zkr\xcf!\x1b\x84|\xb5\xdb\x8b*O\xb4\ +\xe7\x14Ko\xa0\x93\xecmq\xd7\xf0\xbd\x12\x07\x8d\x95\xd7\x7f\xf5&\xb8bmj\xda\ +/&`>e\xeb\xfc\x14a\x19\x94S\x7f\xd2\xb5:\x8c\x04\x8f\x91\x03\xc2Q\x0e\xff{\ +\x93\xc7\xea\xd6\xbb\x1b\x0e7\xe7E\xa6\xae\x9d\xc6\x85%\x9e\xfbnc\xe3\xff\ +\xd4\xa2`9\x13\xa3\x97\x9e\xa4\x9b\x06\xa5\x9f\xec\x9f\x1a\x0c\xf0\xfe\xcd\ +\x021\x9b\x0cM\xc06\xfd u:\xe7:g\x02\xc1r\x926\x9b\x7f\xe2\xf9\xe3\xed\xf1qU\ +\xbe\xbf\xe8\x91\t\x0c0\xfb-\xe5%d\xef\x19v\x966\xec\xaaB\xe2`N[\x8c\xda\x98\ +\xf4\xb4\x83\x13\xcc\x8a\x83\x81\xa3\x91%\xdb\xad\xab\xff\x87\xe1\xba\xda\ +\xb5\xdb\xf0\x17\xfd\xf4F\x18KTNH\xf5J\xbc\x97\xdfB:\xa7\x96\xdf/k\x1c\xeaF_\ +\x8c\xfc\xdfap\x1e\x99\xae8\x94b\xa1t<\xb54.3c\xd9\xe8y=u9FM;D\xa6\xc0\xea~\ +\x0f"O\xee\x81\xdc\xa3\xb2\x1a\xa0\xa7\x02\xb9\x7f>\xfdg\x974\xc8\x0b\xbaU6P\ +\xe7\x14\xd8\xd5 \x90\xbc\x0b\xf0\xb7\xc4\x7f\x08\xfaPl\xf5\xa7\x96\xac\xc2\ +\x0f*\x05\xf3\x83\xe8\xce\xa7\xc4\x8c\xdbX\xa4U\x9b\xeeW\xe9\xf1\xbf\xa4Q#\ +\xcbDQ\x18h\x02\xca\'\xca\xee),1"\x8d\xfb<\x15\xafl\xb8\xb3z\x18\x18\xaf\xb6\ +I$\xa2\xbc\xe5\xe5J\xbe\x00\r\x08&<\x0eK\x98\x0e.[\xd1\xea`\xa9\xe2\x96\xae-\ +d9%\xc0 \x85\xc5{c_\x03x\xaf\x8f\x98P= 0\x8e\xff\xaa\xf5>7\xfeO\x7f\x1b\xcbm\ +\xb1W\xa7\t\x9b\xe1w\x02\xc5\xb5\x9fM/\x8d\xab\xe4u\r\x06\xa0\xd6\xc9\xb5\ +\xf2\xb7J\x01\xda<\r\x9f\xd1\x06\x03\xea>\xab\x9d\xe6\xde\xb4\xbb\xb1\xc6\ +\xa3EP\x1e\x17\x16\xf2\x1c\xa7\x823\xa7\xcc~\xd1\xdb\xb2\xcb\xbd\xe1\xdb\xf0\ +W(,\xe9XD)3I\xc4\x15z_\x98\x8b\xb2v\xdb\x13\xd0\xb8\xf3U"\xb713\xaf\xa0\x1dC\ +j\x0b\xb0\xf9\xfd\xef\x0ex\xd7l\xa5\xc1\xf7Z\xd2\x12\x1f\xbe\r\x87Shjm\xe3\ +\x1c\x92\xbc\xc7^\x9e\xe5\x84\xf9\xb8\xcb\x88+\x12\xb4M\xee\xb0\xbb\xcd\xc4\ +\x9c\xc7V\x1f\xde\x1b\x02\xb0!\x0c\xbeY&\xf6\xe9\xdd[u:0\x0f)(\xc5g\n\xd5\ +\xb6\xcc\xf0st\n\x113\x81Q\xcc\xef\xaa\x1b\x9a#\xad|\x12\x98\xd8\xf7"\xa2\ +\xa2\xd7\xdbwz+\x08\xb8\x0c\x9d&mZ\\-<\xbaG6j\x9cy@\x8ah\x10@\x8e\xd9\x12\ +\x9dK\x00\xf3\xabdo\x1f\x8b\x80\x9c\xf7i^#\xc1X\x7f-\x13R](\x17\xa0\x89p\x9c\ +L\x1a\xc5\x9c\x88U\xde\xc7\x9d\xd04\x04\x8en\x11\x8112\xbd\xf6J\x96wP\x06\ +\xcd\xa9x\x08\xf7\xc3\xfc\x0e\xceE\xef\xf9j\xd50\x19~\x02~\xf7C\x13\xae\xd8\ +\xea\x8e\xc9\x8c\xafpU\xc8\x8d\xaa\xe5\x88Q\xfan\x93\xf7\xf0(\xb0\x93\xf5NH\ +\x1f\xae\xc5\xf8\xaa\x97F4\x19;\x19\xe4=\x89\xe0\xae\x15\xc9\xb6\xfe\xe2\xce\ +\x1e\xca\xe6\x1a\n<\t\xa9].x\x03\xfd\x1c\x86Fd?\xbd\x17|z\x03\xa8\xafX[N"|\ +\x16\xa3#\x0e\x92\xf0h{^+K\x04/!\x8f\xac\xf4\xe4\xbbH\xa9.\x85q\xdd\x93\xc7\ +\xbb`\x96\xbb\xb5\xefQ\xdc\x9ch+G\xf8\xbf\xf6b\xdc\xfbww\xcf\xc7\x85\xf7\n@\ +\x8d[\xdc\x1b\x8e\xd5\x85\x1c\xf0@JG\x08\xc9;\n\xfb\x9dX\xc5\x8e\t\\\xb3g#\ +\xa0\xa2\xb7`\n\x96\x116?\xda\x83\xea\xa1\x7f.Y\x9f\xcb\xda_\x8c\xe9\x01s\ +\x0f\xf6\x03\xb7:\xa0\xc6\x94\xaat\xc4\x96r\x1c\x12\x06\x1dZ\xf7\x10V\xd5\ +\x088\x02N\xc6\xcc\x05y\xd7\xc0T\x07,c\xea\xb2\xcf\xc7=>y\x87M_\x9a\x86\x12\ +\xa5\x92\x83\n_"\x84\xff\x8b7\x95\xfeu\x02\x9c\xf7\xe4\xfacQyo\xda\xbb\t\xed\ +\xdeS\xd3\xb7\x04/j\xdb\x96\xae\xec\xd3\x01\xb8P\x8ap\x8c7\x88\xc2\xa8\xfd\ +\x1d\xd5\xd1=\xab$*\x8c\x9dd\xacu\x07\xe3\xa6X\xed\x1d\xb9eHd@\x8f\xb7\xd4V\ +\xdc\x95\x0f\xa91\xba\xe3s?\n\x12\xf2\x97\xefh\xf4\x1d\x89\x04\xccC)\x8f\x83\ +\xbf\x84\xd5\xe0A\xb7\xccC\xf9\xc3fGA\x92\xe4\x12\x89\x03\x14bb\xdfe\xd9\x7f\ +\x0f\x86\xc6R\xf9wC\x114\xe0\xdd\xae9\xc9ef\x92\xb6\x12\x1eU\'ZW\xa2\xe9\xa7\ +4\x15\xfdb\nr\x17\xf1\xe15IkA\xe5\x12aM[&\x93T\x16\xa5\x92x\xf8\xc3\xd4\xca\ +\xd8[\x96]wPNO\t!5\xaf&\xfarlLC\xdd\x00\xdd\x8e\x13qc\xea&]nAb\x8b1>)9\x047\ +\xc5\x8e\x1a\xd5\x84\x8b\x7f\x8f\x01\x0e6\x8e\xd6eV~W\xff\x01[x\x1b=' ) + +def getBitmap(): + return wxBitmapFromImage(getImage()) + +def getImage(): + stream = cStringIO.StringIO(getData()) + return wxImageFromStream(stream) + +class PyPalette(canvas.Canvas): + """The Pure-Python Palette + + The PyPalette is a pure python implementation of a colour palette. The + palette implementation here imitates the palette layout used by MS + Windows and Adobe Photoshop. + + The actual palette image has been embedded as an XPM for speed. The + actual reverse-engineered drawing algorithm is provided in the + GeneratePaletteBMP() method. The algorithm is tweakable by supplying + the granularity factor to improve speed at the cost of display + beauty. Since the generator isn't used in real time, no one will + likely care :) But if you need it for some sort of unforeseen realtime + application, it's there. + """ + + HORIZONTAL_STEP = 2 + VERTICAL_STEP = 4 + + def __init__(self, parent, id): + """Creates a palette object.""" + # Load the pre-generated palette XPM + self.palette = getBitmap () + canvas.Canvas.__init__ (self, parent, id, size=wxSize(200, 192)) + + def GetValue(self, x, y): + """Returns a colour value at a specific x, y coordinate pair. This + is useful for determining the colour found a specific mouse click + in an external event handler.""" + return self.buffer.GetPixel(x, y) + + def DrawBuffer(self): + """Draws the palette XPM into the memory buffer.""" + #self.GeneratePaletteBMP ("foo.bmp") + self.buffer.DrawBitmap(self.palette, 0, 0, 0) + + def HighlightPoint(self, x, y): + """Highlights an area of the palette with a little circle around + the coordinate point""" + colour = wxColour(0, 0, 0) + self.buffer.SetPen(wxPen(colour, 1, wxSOLID)) + self.buffer.SetBrush(wxBrush(colour, wxTRANSPARENT)) + self.buffer.DrawCircle(x, y, 3) + self.Refresh() + + def GeneratePaletteBMP(self, file_name, granularity=1): + """The actual palette drawing algorithm. + + This used to be 100% reverse engineered by looking at the + values on the MS map, but has since been redone Correctly(tm) + according to the HSV (hue, saturation, value) colour model by + Charl P. Botha <http://cpbotha.net/>. + + Speed is tweakable by changing the granularity factor, but + that affects how nice the output looks (makes the vertical + blocks bigger. This method was used to generate the embedded + XPM data.""" + self.vertical_step = self.VERTICAL_STEP * granularity + width, height = self.GetSize () + + # simply iterate over hue (horizontal) and saturation (vertical) + value = 1.0 + for y in range(0, height, self.vertical_step): + saturation = 1.0 - float(y) / float(height) + for x in range(0, width, self.HORIZONTAL_STEP): + hue = float(x) / float(width) + r,g,b = colorsys.hsv_to_rgb(hue, saturation, value) + colour = wxColour(r * 255.0, g * 255.0, b * 255.0) + self.buffer.SetPen(wxPen(colour, 1, wxSOLID)) + self.buffer.SetBrush(wxBrush(colour, wxSOLID)) + self.buffer.DrawRectangle(x, y, + self.HORIZONTAL_STEP, + self.vertical_step) + + # this code is now simpler (and works) + bitmap = self.buffer.GetBitmap() + image = wxImageFromBitmap(bitmap) + image.SaveFile (file_name, wxBITMAP_TYPE_XPM) diff --git a/wxPython/wxPython/lib/colourselect.py b/wxPython/wxPython/lib/colourselect.py index db9043d802..fbf1999f37 100644 --- a/wxPython/wxPython/lib/colourselect.py +++ b/wxPython/wxPython/lib/colourselect.py @@ -76,7 +76,7 @@ class ColourSelect(wxButton): def OnClick(self, event): data = wxColourData() - data.SetChooseFull(true) + data.SetChooseFull(True) data.SetColour(self.set_colour_val) dlg = wxColourDialog(self.GetParent(), data) changed = dlg.ShowModal() == wxID_OK diff --git a/wxPython/wxPython/lib/dialogs.py b/wxPython/wxPython/lib/dialogs.py index dd600ddd27..920b659af4 100644 --- a/wxPython/wxPython/lib/dialogs.py +++ b/wxPython/wxPython/lib/dialogs.py @@ -1,47 +1,59 @@ -from wxPython.wx import * +#---------------------------------------------------------------------- +# Name: wxPython.lib.dialogs +# Purpose: wxScrolledMessageDialog, wxMultipleChoiceDialog and +# function wrappers for the common dialogs by Kevin Altis. +# +# Author: Various +# +# Created: 3-January-2002 +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + +from wxPython import wx from layoutf import Layoutf -import string +#---------------------------------------------------------------------- - -class wxScrolledMessageDialog(wxDialog): - def __init__(self, parent, msg, caption, pos = wxDefaultPosition, size = (500,300)): - wxDialog.__init__(self, parent, -1, caption, pos, size) +class wxScrolledMessageDialog(wx.wxDialog): + def __init__(self, parent, msg, caption, pos = wx.wxDefaultPosition, size = (500,300)): + wx.wxDialog.__init__(self, parent, -1, caption, pos, size) x, y = pos if x == -1 and y == -1: - self.CenterOnScreen(wxBOTH) - text = wxTextCtrl(self, -1, msg, wxDefaultPosition, - wxDefaultSize, - wxTE_MULTILINE | wxTE_READONLY) - ok = wxButton(self, wxID_OK, "OK") + self.CenterOnScreen(wx.wxBOTH) + text = wx.wxTextCtrl(self, -1, msg, wx.wxDefaultPosition, + wx.wxDefaultSize, + wx.wxTE_MULTILINE | wx.wxTE_READONLY) + ok = wx.wxButton(self, wx.wxID_OK, "OK") text.SetConstraints(Layoutf('t=t5#1;b=t5#2;l=l5#1;r=r5#1', (self,ok))) ok.SetConstraints(Layoutf('b=b5#1;x%w50#1;w!80;h!25', (self,))) - self.SetAutoLayout(TRUE) + self.SetAutoLayout(1) self.Layout() -class wxMultipleChoiceDialog(wxDialog): - def __init__(self, parent, msg, title, lst, pos = wxDefaultPosition, size = (200,200)): - wxDialog.__init__(self, parent, -1, title, pos, size) +class wxMultipleChoiceDialog(wx.wxDialog): + def __init__(self, parent, msg, title, lst, pos = wx.wxDefaultPosition, size = (200,200)): + wx.wxDialog.__init__(self, parent, -1, title, pos, size) x, y = pos if x == -1 and y == -1: - self.CenterOnScreen(wxBOTH) - dc = wxClientDC(self) + self.CenterOnScreen(wx.wxBOTH) + dc = wx.wxClientDC(self) height = 0 - for line in string.split(msg,'\n'): + for line in msg.splitlines(): height = height + dc.GetTextExtent(msg)[1] + 4 - stat = wxStaticText(self, -1, msg) - self.lbox = wxListBox(self, 100, wxDefaultPosition, - wxDefaultSize, lst, wxLB_MULTIPLE) - ok = wxButton(self, wxID_OK, "OK") - cancel = wxButton(self, wxID_CANCEL, "Cancel") + stat = wx.wxStaticText(self, -1, msg) + self.lbox = wx.wxListBox(self, 100, wx.wxDefaultPosition, + wx.wxDefaultSize, lst, wx.wxLB_MULTIPLE) + ok = wx.wxButton(self, wx.wxID_OK, "OK") + cancel = wx.wxButton(self, wx.wxID_CANCEL, "Cancel") stat.SetConstraints(Layoutf('t=t10#1;l=l5#1;r=r5#1;h!%d' % (height,), (self,))) self.lbox.SetConstraints(Layoutf('t=b10#2;l=l5#1;r=r5#1;b=t5#3', (self, stat, ok))) ok.SetConstraints(Layoutf('b=b5#1;x%w25#1;w!80;h!25', (self,))) cancel.SetConstraints(Layoutf('b=b5#1;x%w75#1;w!80;h!25', (self,))) - self.SetAutoLayout(TRUE) + self.SetAutoLayout(1) self.lst = lst self.Layout() @@ -56,46 +68,317 @@ class wxMultipleChoiceDialog(wxDialog): return tuple(val) + +#---------------------------------------------------------------------- +""" +function wrappers for wxPython system dialogs +Author: Kevin Altis +Date: 2003-1-2 +Rev: 3 + +This is the third refactor of the PythonCard dialog.py module +for inclusion in the main wxPython distribution. There are a number of +design decisions and subsequent code refactoring to be done, so I'm +releasing this just to get some feedback. + +rev 3: +- result dictionary replaced by DialogResults class instance +- should message arg be replaced with msg? most wxWindows dialogs + seem to use the abbreviation? + +rev 2: +- All dialog classes have been replaced by function wrappers +- Changed arg lists to more closely match wxWindows docs and wxPython.lib.dialogs +- changed 'returned' value to the actual button id the user clicked on +- added a returnedString value for the string version of the return value +- reworked colorDialog and fontDialog so you can pass in just a color or font + for the most common usage case +- probably need to use colour instead of color to match the English English + spelling in wxWindows (sigh) +- I still think we could lose the parent arg and just always use None +""" + +class DialogResults: + def __init__(self, returned): + self.returned = returned + self.accepted = returned in (wx.wxID_OK, wx.wxID_YES) + self.returnedString = returnedString(returned) + + def __repr__(self): + return str(self.__dict__) + +def returnedString(ret): + if ret == wx.wxID_OK: + return "Ok" + elif ret == wx.wxID_CANCEL: + return "Cancel" + elif ret == wx.wxID_YES: + return "Yes" + elif ret == wx.wxID_NO: + return "No" + + +# findDialog was created before wxPython got a Find/Replace dialog +# but it may be instructive as to how a function wrapper can +# be added for your own custom dialogs +# this dialog is always modal, while wxFindReplaceDialog is +# modeless and so doesn't lend itself to a function wrapper +def findDialog(parent=None, searchText='', wholeWordsOnly=0, caseSensitive=0): + dlg = wx.wxDialog(parent, -1, "Find", wx.wxDefaultPosition, wx.wxSize(370, 120)) + + wx.wxStaticText(dlg, -1, 'Find what:', wx.wxPoint(7, 10)) + wSearchText = wx.wxTextCtrl(dlg, -1, searchText, + wx.wxPoint(70, 7), wx.wxSize(195, -1)) + wSearchText.SetValue(searchText) + wx.wxButton(dlg, wx.wxID_OK, "Find Next", wx.wxPoint(280, 5), wx.wxDefaultSize).SetDefault() + wx.wxButton(dlg, wx.wxID_CANCEL, "Cancel", wx.wxPoint(280, 35), wx.wxDefaultSize) + wWholeWord = wx.wxCheckBox(dlg, -1, 'Match whole word only', + wx.wxPoint(7, 35), wx.wxDefaultSize, wx.wxNO_BORDER) + if wholeWordsOnly: + wWholeWord.SetValue(1) + wCase = wx.wxCheckBox(dlg, -1, 'Match case', + wx.wxPoint(7, 55), wx.wxDefaultSize, wx.wxNO_BORDER) + if caseSensitive: + wCase.SetValue(1) + wSearchText.SetSelection(0, len(wSearchText.GetValue())) + wSearchText.SetFocus() + + result = DialogResults(dlg.ShowModal()) + result.text = wSearchText.GetValue() + result.wholeword = wWholeWord.GetValue() + result.casesensitive = wCase.GetValue() + dlg.Destroy() + return result + + +def colorDialog(parent=None, colorData=None, color=None): + if colorData: + dialog = wx.wxColourDialog(parent, colorData) + else: + dialog = wx.wxColourDialog(parent) + dialog.GetColourData().SetChooseFull(1) + if color is not None: + dialog.GetColourData().SetColour(color) + result = DialogResults(dialog.ShowModal()) + result.colorData = dialog.GetColourData() + result.color = result.colorData.GetColour().Get() + dialog.Destroy() + return result + +# it is easier to just duplicate the code than +# try and replace color with colour in the result +def colourDialog(parent=None, colourData=None, colour=None): + if colourData: + dialog = wx.wxColourDialog(parent, colourData) + else: + dialog = wx.wxColourDialog(parent) + dialog.GetColourData().SetChooseFull(1) + if colour is not None: + dialog.GetColourData().SetColour(color) + result = DialogResults(dialog.ShowModal()) + result.colourData = dialog.GetColourData() + result.colour = result.colourData.GetColour().Get() + dialog.Destroy() + return result + + +def fontDialog(parent=None, fontData=None, font=None): + if fontData is None: + fontData = wx.wxFontData() + if font is not None: + aFontData.SetInitialFont(font) + dialog = wx.wxFontDialog(parent, fontData) + result = DialogResults(dialog.ShowModal()) + if result.accepted: + fontData = dialog.GetFontData() + result.fontData = fontData + result.color = fontData.GetColour().Get() + result.colour = result.color + result.font = fontData.GetChosenFont() + else: + result.color = None + result.colour = None + result.font = None + dialog.Destroy() + return result + + +def textEntryDialog(parent=None, message='', title='', defaultText='', style=wx.wxOK | wx.wxCANCEL): + dialog = wx.wxTextEntryDialog(parent, message, title, defaultText, style) + result = DialogResults(dialog.ShowModal()) + result.text = dialog.GetValue() + dialog.Destroy() + return result + + +def messageDialog(parent=None, message='', title='Message box', + aStyle = wx.wxOK | wx.wxCANCEL | wx.wxCENTRE, + pos=wx.wxDefaultPosition): + dialog = wx.wxMessageDialog(parent, message, title, aStyle, pos) + result = DialogResults(dialog.ShowModal()) + dialog.Destroy() + return result + + +# KEA alerts are common, so I'm providing a class rather than +# requiring the user code to set up the right icons and buttons +# the with messageDialog function +def alertDialog(parent=None, message='', title='Alert', pos=wx.wxDefaultPosition): + return messageDialog(parent, message, title, wx.wxICON_EXCLAMATION | wx.wxOK, pos) + + +def scrolledMessageDialog(parent=None, message='', title='', pos=wx.wxDefaultPosition, size=(500,300)): + dialog = wxScrolledMessageDialog(parent, message, title, pos, size) + result = DialogResults(dialog.ShowModal()) + dialog.Destroy() + return result + + +def fileDialog(parent=None, title='Open', directory='', filename='', wildcard='*.*', + style=wx.wxOPEN | wx.wxMULTIPLE): + dialog = wx.wxFileDialog(parent, title, directory, filename, wildcard, style) + result = DialogResults(dialog.ShowModal()) + if result.accepted: + result.paths = dialog.GetPaths() + else: + result.paths = None + dialog.Destroy() + return result + + +# openFileDialog and saveFileDialog are convenience functions +# they represent the most common usages of the fileDialog +# with the most common style options +def openFileDialog(parent=None, title='Open', directory='', filename='', + wildcard='All Files (*.*)|*.*', + style=wx.wxOPEN | wx.wxMULTIPLE): + return fileDialog(parent, title, directory, filename, wildcard, style) + + +def saveFileDialog(parent=None, title='Save', directory='', filename='', + wildcard='All Files (*.*)|*.*', + style=wx.wxSAVE | wx.wxHIDE_READONLY | wx.wxOVERWRITE_PROMPT): + return fileDialog(parent, title, directory, filename, wildcard, style) + + +def dirDialog(parent=None, message='Choose a directory', path='', style=0, + pos=wx.wxDefaultPosition, size=wx.wxDefaultSize): + dialog = wx.wxDirDialog(parent, message, path, style, pos, size) + result = DialogResults(dialog.ShowModal()) + if result.accepted: + result.path = dialog.GetPath() + else: + result.path = None + dialog.Destroy() + return result + +directoryDialog = dirDialog + + +def singleChoiceDialog(parent=None, message='', title='', lst=[], + style=wx.wxOK | wx.wxCANCEL | wx.wxCENTRE): + dialog = wx.wxSingleChoiceDialog(parent, + message, + title, + lst, + style) + result = DialogResults(dialog.ShowModal()) + result.selection = dialog.GetStringSelection() + dialog.Destroy() + return result + + +def multipleChoiceDialog(parent=None, message='', title='', lst=[], pos=wx.wxDefaultPosition, size=(200,200)): + dialog = wxMultipleChoiceDialog(parent, message, title, lst, pos, size) + result = DialogResults(dialog.ShowModal()) + result.selection = dialog.GetValueString() + dialog.Destroy() + return result + + if __name__ == '__main__': - class MyFrame(wxFrame): - def __init__(self): - wxFrame.__init__(self, NULL, -1, "hello", - wxDefaultPosition, wxSize(200,200)) - wxButton(self, 100, "Multiple Test",wxPoint(0,0)) - wxButton(self, 101, "Message Test", wxPoint(0,100)) - EVT_BUTTON(self, 100, self.OnMultipleTest) - EVT_BUTTON(self, 101, self.OnMessageTest) + class MyApp(wx.wxApp): - def OnMultipleTest(self, event): - self.lst = [ 'apple', 'pear', 'banana', 'coconut', 'orange', - 'etc', 'etc..', 'etc...' ] - dlg = wxMultipleChoiceDialog(self, - "Pick some from\n this list\nblabla", - "m.s.d.", self.lst) - if (dlg.ShowModal() == wxID_OK): - print "Selection:", dlg.GetValue(), " -> ", dlg.GetValueString() - - def OnMessageTest(self, event): - import sys; - f = open(sys.argv[0],"r") - msg = f.read() - dlg = wxScrolledMessageDialog(self, msg, "message test") - dlg.ShowModal() - - - class MyApp(wxApp): def OnInit(self): - frame = MyFrame() - frame.Show(TRUE) + frame = wx.wxFrame(wx.NULL, -1, "Dialogs", size=(400, 200)) + panel = wx.wxPanel(frame, -1) + self.panel = panel + + frame.Show(1) + + dialogNames = [ + 'alertDialog', + 'colorDialog', + 'directoryDialog', + 'fileDialog', + 'findDialog', + 'fontDialog', + 'messageDialog', + 'multipleChoiceDialog', + 'openFileDialog', + 'saveFileDialog', + 'scrolledMessageDialog', + 'singleChoiceDialog', + 'textEntryDialog', + ] + self.nameList = wx.wxListBox(panel, -1, (0, 0), (130, 180), dialogNames, style=wx.wxLB_SINGLE) + wx.EVT_LISTBOX(panel, self.nameList.GetId(), self.OnNameListSelected) + + tstyle = wx.wxTE_RICH2 | wx.wxTE_PROCESS_TAB | wx.wxTE_MULTILINE + self.text1 = wx.wxTextCtrl(panel, -1, pos=(150, 0), size=(200, 180), style=tstyle) + self.SetTopWindow(frame) - return TRUE + + return 1 + + def OnNameListSelected(self, evt): + import pprint + sel = evt.GetString() + result = None + if sel == 'alertDialog': + result = alertDialog(message='Danger Will Robinson') + elif sel == 'colorDialog': + result = colorDialog() + elif sel == 'directoryDialog': + result = directoryDialog() + elif sel == 'fileDialog': + wildcard = "JPG files (*.jpg;*.jpeg)|*.jpeg;*.JPG;*.JPEG;*.jpg|GIF files (*.gif)|*.GIF;*.gif|All Files (*.*)|*.*" + result = fileDialog(None, 'Open', '', '', wildcard) + elif sel == 'findDialog': + result = findDialog() + elif sel == 'fontDialog': + result = fontDialog() + elif sel == 'messageDialog': + result = messageDialog(None, 'Hello from Python and wxPython!', + 'A Message Box', wx.wxOK | wx.wxICON_INFORMATION) + #wx.wxYES_NO | wx.wxNO_DEFAULT | wx.wxCANCEL | wx.wxICON_INFORMATION) + #result = messageDialog(None, 'message', 'title') + elif sel == 'multipleChoiceDialog': + result = multipleChoiceDialog(None, "message", "title", ['one', 'two', 'three']) + elif sel == 'openFileDialog': + result = openFileDialog() + elif sel == 'saveFileDialog': + result = saveFileDialog() + elif sel == 'scrolledMessageDialog': + msg = "Can't find the file dialog.py" + try: + # read this source file and then display it + import sys + filename = sys.argv[-1] + fp = open(filename) + message = fp.read() + fp.close() + except: + pass + result = scrolledMessageDialog(None, message, filename) + elif sel == 'singleChoiceDialog': + result = singleChoiceDialog(None, "message", "title", ['one', 'two', 'three']) + elif sel == 'textEntryDialog': + result = textEntryDialog(None, "message", "title", "text") + + if result: + #self.text1.SetValue(pprint.pformat(result.__dict__)) + self.text1.SetValue(str(result)) app = MyApp(0) app.MainLoop() - - - - - - - diff --git a/wxPython/wxPython/lib/editor/editor.py b/wxPython/wxPython/lib/editor/editor.py index 72fc6d5cee..77f5c94edf 100644 --- a/wxPython/wxPython/lib/editor/editor.py +++ b/wxPython/wxPython/lib/editor/editor.py @@ -24,7 +24,6 @@ import os, time from wxPython.wx import * -from string import * import selection import images @@ -123,7 +122,7 @@ class wxEditor(wxScrolledWindow): if wxPlatform == "__WXMSW__": return wxFont(10, wxMODERN, wxNORMAL, wxNORMAL) else: - return wxFont(12, wxMODERN, wxNORMAL, wxNORMAL, false) + return wxFont(12, wxMODERN, wxNORMAL, wxNORMAL, False) def UnixKeyHack(self, key): # this will be obsolete when we get the new wxWindows patch @@ -163,7 +162,7 @@ class wxEditor(wxScrolledWindow): if dc.Ok(): self.SetCharDimensions() self.KeepCursorOnScreen() - self.DrawSimpleCursor(0,0,dc, true) + self.DrawSimpleCursor(0,0,dc, True) self.Draw(dc) def OnPaint(self, event): @@ -257,7 +256,7 @@ class wxEditor(wxScrolledWindow): self.DrawSimpleCursor(x, y, dc) - def DrawSimpleCursor(self, xp, yp, dc = None, old=false): + def DrawSimpleCursor(self, xp, yp, dc = None, old=False): if not dc: dc = wxClientDC(self) @@ -354,13 +353,13 @@ class wxEditor(wxScrolledWindow): return len(self.lines) def UnTouchBuffer(self): - self.bufferTouched = FALSE + self.bufferTouched = False def BufferWasTouched(self): return self.bufferTouched def TouchBuffer(self): - self.bufferTouched = TRUE + self.bufferTouched = True ##-------------------------- Mouse scroll timing functions @@ -368,7 +367,7 @@ class wxEditor(wxScrolledWindow): def InitScrolling(self): # we don't rely on the windows system to scroll for us; we just # redraw the screen manually every time - self.EnableScrolling(FALSE, FALSE) + self.EnableScrolling(False, False) self.nextScrollTime = 0 self.SCROLLDELAY = 0.050 # seconds self.scrollTimer = wxTimer(self) @@ -377,12 +376,12 @@ class wxEditor(wxScrolledWindow): def CanScroll(self): if time.time() > self.nextScrollTime: self.nextScrollTime = time.time() + self.SCROLLDELAY - return true + return True else: - return false + return False def SetScrollTimer(self): - oneShot = true + oneShot = True self.scrollTimer.Start(1000*self.SCROLLDELAY/2, oneShot) EVT_TIMER(self, -1, self.OnTimer) @@ -449,7 +448,7 @@ class wxEditor(wxScrolledWindow): def OnMotion(self, event): if event.LeftIsDown() and self.HasCapture(): - self.Selecting = true + self.Selecting = True self.MouseToCursor(event) self.SelectUpdate() @@ -467,8 +466,8 @@ class wxEditor(wxScrolledWindow): if self.SelectEnd is None: self.OnClick() else: - self.Selecting = false - self.SelectNotify(false, self.SelectBegin, self.SelectEnd) + self.Selecting = False + self.SelectNotify(False, self.SelectBegin, self.SelectEnd) self.ReleaseMouse() self.scrollTimer.Stop() @@ -630,8 +629,8 @@ class wxEditor(wxScrolledWindow): def SelectOff(self): self.SelectBegin = None self.SelectEnd = None - self.Selecting = false - self.SelectNotify(false,None,None) + self.Selecting = False + self.SelectNotify(False,None,None) def CopySelection(self, event): selection = self.FindSelection() @@ -650,7 +649,7 @@ class wxEditor(wxScrolledWindow): def CopyToClipboard(self, linesOfText): do = wxTextDataObject() - do.SetText(string.join(linesOfText, os.linesep)) + do.SetText(os.linesep.join(linesOfText)) wxTheClipboard.Open() wxTheClipboard.SetData(do) wxTheClipboard.Close() @@ -837,29 +836,29 @@ class wxEditor(wxScrolledWindow): keySettingFunction(action) if not action.has_key(key): - return false + return False if event.ShiftDown(): if not self.Selecting: - self.Selecting = true + self.Selecting = True self.SelectBegin = (self.cy, self.cx) action[key](event) self.SelectEnd = (self.cy, self.cx) else: action[key](event) if self.Selecting: - self.Selecting = false + self.Selecting = False self.SelectNotify(self.Selecting, self.SelectBegin, self.SelectEnd) self.UpdateView() - return true + return True def MoveSpecialKey(self, event, key): return self.Move(self.SetMoveSpecialFuncs, key, event) def MoveSpecialControlKey(self, event, key): if not event.ControlDown(): - return false + return False return self.Move(self.SetMoveSpecialControlFuncs, key, event) def Dispatch(self, keySettingFunction, key, event): @@ -868,21 +867,21 @@ class wxEditor(wxScrolledWindow): if action.has_key(key): action[key](event) self.UpdateView() - return true - return false + return True + return False def ModifierKey(self, key, event, modifierKeyDown, MappingFunc): if not modifierKeyDown: - return false + return False key = self.UnixKeyHack(key) try: key = chr(key) except: - return false + return False if not self.Dispatch(MappingFunc, key, event): wxBell() - return true + return True def ControlKey(self, event, key): return self.ModifierKey(key, event, event.ControlDown(), self.SetControlFuncs) @@ -892,14 +891,14 @@ class wxEditor(wxScrolledWindow): def SpecialControlKey(self, event, key): if not event.ControlDown(): - return false + return False if not self.Dispatch(self.SetSpecialControlFuncs, key, event): wxBell() - return true + return True def ShiftKey(self, event, key): if not event.ShiftDown(): - return false + return False return self.Dispatch(self.SetShiftFuncs, key, event) def NormalChar(self, event, key): diff --git a/wxPython/wxPython/lib/editor/selection.py b/wxPython/wxPython/lib/editor/selection.py index d57982e75b..9a9ed9b2c8 100644 --- a/wxPython/wxPython/lib/editor/selection.py +++ b/wxPython/wxPython/lib/editor/selection.py @@ -1,5 +1,5 @@ -TRUE = 1 -FALSE = 0 +True = 1 +False = 0 def RestOfLine(sx, width, data, bool): if len(data) == 0 and sx == 0: @@ -10,16 +10,16 @@ def RestOfLine(sx, width, data, bool): def Selection(SelectBegin,SelectEnd, sx, width, line, data): if SelectEnd is None or SelectBegin is None: - return RestOfLine(sx, width, data, FALSE) + return RestOfLine(sx, width, data, False) (bRow, bCol) = SelectBegin (eRow, eCol) = SelectEnd if (eRow < bRow): (bRow, bCol) = SelectEnd (eRow, eCol) = SelectBegin if (line < bRow or eRow < line): - return RestOfLine(sx, width, data, FALSE) + return RestOfLine(sx, width, data, False) if (bRow < line and line < eRow): - return RestOfLine(sx, width, data, TRUE) + return RestOfLine(sx, width, data, True) if (bRow == eRow) and (eCol < bCol): (bCol, eCol) = (eCol, bCol) # selection either starts or ends on this line @@ -31,12 +31,12 @@ def Selection(SelectBegin,SelectEnd, sx, width, line, data): pieces = [] if (sx < bCol): if bCol <= end: - pieces += [(data[sx:bCol], FALSE)] + pieces += [(data[sx:bCol], False)] else: - return [(data[sx:end], FALSE)] - pieces += [(data[max(bCol,sx):min(eCol,end)], TRUE)] + return [(data[sx:end], False)] + pieces += [(data[max(bCol,sx):min(eCol,end)], True)] if (eCol < end): - pieces += [(data[eCol:end], FALSE)] + pieces += [(data[eCol:end], False)] return pieces diff --git a/wxPython/wxPython/lib/evtmgr.py b/wxPython/wxPython/lib/evtmgr.py new file mode 100644 index 0000000000..ef6fab004d --- /dev/null +++ b/wxPython/wxPython/lib/evtmgr.py @@ -0,0 +1,519 @@ +#--------------------------------------------------------------------------- +# Name: wxPython.lib.evtmgr +# Purpose: An easier, more "Pythonic" and more OO method of registering +# handlers for wxWindows events using the Publish/Subscribe +# pattern. +# +# Author: Robb Shecter and Robin Dunn +# +# Created: 12-December-2002 +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Robb Shecter <robb@acm.org> +# Licence: wxWindows license +#--------------------------------------------------------------------------- + +""" +A module that allows multiple handlers to respond to single wxWindows +events. This allows true NxN Observer/Observable connections: One +event can be received by multiple handlers, and one handler can +receive multiple events. + +There are two ways to register event handlers. The first way is +similar to standard wxPython handler registration: + + from wxPython.lib.evtmgr import eventManager + eventManager.Register(handleEvents, EVT_BUTTON, win=frame, id=101) + +There's also a new object-oriented way to register for events. This +invocation is equivalent to the one above, but does not require the +programmer to declare or track control ids or parent containers: + + eventManager.Register(handleEvents, EVT_BUTTON, myButton) + +This module is Python 2.1+ compatible. + +Author: Robb Shecter +""" +from wxPython import wx +import pubsub + +#--------------------------------------------------------------------------- + + +class EventManager: + """ + This is the main class in the module, and is the only class that + the application programmer needs to use. There is a pre-created + instance of this class called 'eventManager'. It should not be + necessary to create other instances. + """ + def __init__(self): + self.eventAdapterDict = {} + self.messageAdapterDict = {} + self.windowTopicLookup = {} + self.listenerTopicLookup = {} + self.__publisher = pubsub.Publisher() + self.EMPTY_LIST = [] + + + def Register(self, listener, event, source=None, win=None, id=None): + """ + Registers a listener function (or any callable object) to + receive events of type event coming from the source window. + For example: + + eventManager.Register(self.OnButton, EVT_BUTTON, theButton) + + Alternatively, the specific window where the event is + delivered, and/or the ID of the event source can be specified. + For example: + + eventManager.Register(self.OnButton, EVT_BUTTON, win=self, id=ID_BUTTON) + or + eventManager.Register(self.OnButton, EVT_BUTTON, theButton, self) + """ + + # 1. Check if the 'event' is actually one of the multi- + # event macros. + if _macroInfo.isMultiEvent(event): + raise 'Cannot register the macro, '+`event`+'. Register instead the individual events.' + + # Support a more OO API. This allows the GUI widget itself to + # be specified, and the id to be retrieved from the system, + # instead of kept track of explicitly by the programmer. + # (Being used to doing GUI work with Java, this seems to me to be + # the natural way of doing things.) + if source is not None: + id = source.GetId() + if win is None: + # Some widgets do not function as their own windows. + win = self._determineWindow(source) + topic = (event, win, id) + + # Create an adapter from the PS system back to wxEvents, and + # possibly one from wxEvents: + if not self.__haveMessageAdapter(listener, topic): + messageAdapter = MessageAdapter(eventHandler=listener, topicPattern=topic) + try: + self.messageAdapterDict[topic][listener] = messageAdapter + except KeyError: + self.messageAdapterDict[topic] = {} + self.messageAdapterDict[topic][listener] = messageAdapter + + if not self.eventAdapterDict.has_key(topic): + self.eventAdapterDict[topic] = EventAdapter(event, win, id) + else: + # Throwing away a duplicate request + pass + + # For time efficiency when deregistering by window: + try: + self.windowTopicLookup[win].append(topic) + except KeyError: + self.windowTopicLookup[win] = [] + self.windowTopicLookup[win].append(topic) + + # For time efficiency when deregistering by listener: + try: + self.listenerTopicLookup[listener].append(topic) + except KeyError: + self.listenerTopicLookup[listener] = [] + self.listenerTopicLookup[listener].append(topic) + + # See if the source understands the listeningFor protocol. + # This is a bit of a test I'm working on - it allows classes + # to know when their events are being listened to. I use + # it to enable chaining events from contained windows only + # when needed. + if source is not None: + try: + # Let the source know that we're listening for this + # event. + source.listeningFor(event) + except AttributeError: + pass + + # Some aliases for Register, just for kicks + Bind = Register + Subscribe = Register + + + def DeregisterWindow(self, win): + """ + Deregister all events coming from the given window. + """ + win = self._determineWindow(win) + topics = self.__getTopics(win) + if topics: + for aTopic in topics: + self.__deregisterTopic(aTopic) + del self.windowTopicLookup[win] + + + def DeregisterListener(self, listener): + """ + Deregister all event notifications for the given listener. + """ + try: + topicList = self.listenerTopicLookup[listener] + except KeyError: + return + + for topic in topicList: + topicDict = self.messageAdapterDict[topic] + if topicDict.has_key(listener): + topicDict[listener].Destroy() + del topicDict[listener] + if len(topicDict) == 0: + self.eventAdapterDict[topic].Destroy() + del self.eventAdapterDict[topic] + del self.messageAdapterDict[topic] + del self.listenerTopicLookup[listener] + + + def GetStats(self): + """ + Return a dictionary with data about my state. + """ + stats = {} + stats['Adapters: Message'] = reduce(lambda x,y: x+y, map(len, self.messageAdapterDict.values())) + stats['Adapters: Event'] = len(self.eventAdapterDict) + stats['Topics: Total'] = len(self.__getTopics()) + stats['Topics: Dead'] = len(self.GetDeadTopics()) + return stats + + + def DeregisterDeadTopics(self): + """ + Deregister any entries relating to dead + wxPython objects. Not sure if this is an + important issue; 1) My app code always de-registers + listeners it doesn't need. 2) I don't think + that lingering references to these dead objects + is a problem. + """ + for topic in self.GetDeadTopics(): + self.DeregisterTopic(topic) + + + def GetDeadTopics(self): + """ + Return a list of topics relating to dead wxPython + objects. + """ + return filter(self.__isDeadTopic, self.__getTopics()) + + + def __winString(self, aWin): + """ + A string rep of a window for debugging + """ + try: + name = aWin.GetClassName() + i = id(aWin) + return '%s #%d' % (name, i) + except wx.wxPyDeadObjectError: + return '(dead wxObject)' + + + def __topicString(self, aTopic): + """ + A string rep of a topic for debugging + """ + return '[%-26s %s]' % (aTopic[0].__name__, self.winString(aTopic[1])) + + + def __listenerString(self, aListener): + """ + A string rep of a listener for debugging + """ + try: + return aListener.im_class.__name__ + '.' + aListener.__name__ + except: + return 'Function ' + aListener.__name__ + + + def __deregisterTopic(self, aTopic): + try: + messageAdapterList = self.messageAdapterDict[aTopic].values() + except KeyError: + # This topic isn't valid. Probably because it was deleted + # by listener. + return + for messageAdapter in messageAdapterList: + messageAdapter.Destroy() + self.eventAdapterDict[aTopic].Destroy() + del self.messageAdapterDict[aTopic] + del self.eventAdapterDict[aTopic] + + + def __getTopics(self, win=None): + if win is None: + return self.messageAdapterDict.keys() + if win is not None: + try: + return self.windowTopicLookup[win] + except KeyError: + return self.EMPTY_LIST + + + def __isDeadWxObject(self, anObject): + return isinstance(anObject, wx._wxPyDeadObject) + + + def __isDeadTopic(self, aTopic): + return self.__isDeadWxObject(aTopic[1]) + + + def __haveMessageAdapter(self, eventHandler, topicPattern): + """ + Return True if there's already a message adapter + with these specs. + """ + try: + return self.messageAdapterDict[topicPattern].has_key(eventHandler) + except KeyError: + return 0 + + + def _determineWindow(self, aComponent): + """ + Return the window that corresponds to this component. + A window is something that supports the Connect protocol. + Most things registered with the event manager are a window, + but there are apparently some exceptions. If more are + discovered, the implementation can be changed to a dictionary + lookup along the lines of class : function-to-get-window. + """ + if isinstance(aComponent, wx.wxMenuItem): + return aComponent.GetMenu() + else: + return aComponent + + + +#--------------------------------------------------------------------------- +# From here down is implementaion and support classes, although you may +# find some of them useful in other contexts. +#--------------------------------------------------------------------------- + + +class EventMacroInfo: + """ + A class that provides information about event macros. + """ + def __init__(self): + self.lookupTable = {} + + + def getEventTypes(self, eventMacro): + """ + Return the list of event types that the given + macro corresponds to. + """ + try: + return self.lookupTable[eventMacro] + except KeyError: + win = FakeWindow() + try: + eventMacro(win, None, None) + except TypeError: + eventMacro(win, None) + self.lookupTable[eventMacro] = win.eventTypes + return win.eventTypes + + + def eventIsA(self, event, macroList): + """ + Return True if the event is one of the given + macros. + """ + eventType = event.GetEventType() + for macro in macroList: + if eventType in self.getEventTypes(macro): + return 1 + return 0 + + + def macroIsA(self, macro, macroList): + """ + Return True if the macro is in the macroList. + The added value of this method is that it takes + multi-events into account. The macroList parameter + will be coerced into a sequence if needed. + """ + if callable(macroList): + macroList = (macroList,) + testList = self.getEventTypes(macro) + eventList = [] + for m in macroList: + eventList.extend(self.getEventTypes(m)) + # Return True if every element in testList is in eventList + for element in testList: + if element not in eventList: + return 0 + return 1 + + + def isMultiEvent(self, macro): + """ + Return True if the given macro actually causes + multiple events to be registered. + """ + return len(self.getEventTypes(macro)) > 1 + + +#--------------------------------------------------------------------------- + +class FakeWindow: + """ + Used internally by the EventMacroInfo class. The FakeWindow is + the most important component of the macro-info utility: it + implements the Connect() protocol of wxWindow, but instead of + registering for events, it keeps track of what parameters were + passed to it. + """ + def __init__(self): + self.eventTypes = [] + + def Connect(self, id1, id2, eventType, handlerFunction): + self.eventTypes.append(eventType) + + +#--------------------------------------------------------------------------- + +class EventAdapter: + """ + A class that adapts incoming wxWindows events to + Publish/Subscribe messages. + + In other words, this is the object that's seen by the + wxWindows system. Only one of these registers for any + particular wxWindows event. It then relays it into the + PS system, which lets many listeners respond. + """ + def __init__(self, func, win, id): + """ + Instantiate a new adapter. Pre-compute my Publish/Subscribe + topic, which is constant, and register with wxWindows. + """ + self.publisher = pubsub.Publisher() + self.topic = ((func, win, id),) + self.id = id + self.win = win + self.eventType = _macroInfo.getEventTypes(func)[0] + + # Register myself with the wxWindows event system + try: + func(win, id, self.handleEvent) + self.callStyle = 3 + except TypeError: + func(win, self.handleEvent) + self.callStyle = 2 + + + def disconnect(self): + if self.callStyle == 3: + return self.win.Disconnect(self.id, -1, self.eventType) + else: + return self.win.Disconnect(-1, -1, self.eventType) + + + def handleEvent(self, event): + """ + In response to a wxWindows event, send a PS message + """ + self.publisher.sendMessage(topic=self.topic, data=event) + + + def Destroy(self): + try: + if not self.disconnect(): + print 'disconnect failed' + except wx.wxPyDeadObjectError: + print 'disconnect failed: dead object' ##???? + + +#--------------------------------------------------------------------------- + +class MessageAdapter: + """ + A class that adapts incoming Publish/Subscribe messages + to wxWindows event calls. + + This class works opposite the EventAdapter, and + retrieves the information an EventAdapter has sent in a message. + Strictly speaking, this class is not required: Event listeners + could pull the original wxEvent object out of the PS Message + themselves. + + However, by pairing an instance of this class with each wxEvent + handler, the handlers can use the standard API: they receive an + event as a parameter. + """ + def __init__(self, eventHandler, topicPattern): + """ + Instantiate a new MessageAdapter that send wxEvents to the + given eventHandler. + """ + self.eventHandler = eventHandler + pubsub.Publisher().subscribe(listener=self.deliverEvent, topic=(topicPattern,)) + + def deliverEvent(self, message): + event = message.data # Extract the wxEvent + self.eventHandler(event) # Perform the call as wxWindows would + + def Destroy(self): + pubsub.Publisher().unsubscribe(listener=self.deliverEvent) + + +#--------------------------------------------------------------------------- +# Create globals + +_macroInfo = EventMacroInfo() + +# For now a singleton is not enforced. Should it be or can we trust +# the programmers? +eventManager = EventManager() + + +#--------------------------------------------------------------------------- +# simple test code + + +if __name__ == '__main__': + from wxPython.wx import wxPySimpleApp, wxFrame, wxToggleButton, wxBoxSizer, wxHORIZONTAL, EVT_MOTION, EVT_LEFT_DOWN, EVT_TOGGLEBUTTON, wxALL + app = wxPySimpleApp() + frame = wxFrame(None, -1, 'Event Test', size=(300,300)) + button = wxToggleButton(frame, -1, 'Listen for Mouse Events') + sizer = wxBoxSizer(wxHORIZONTAL) + sizer.Add(button, 0, 0 | wxALL, 10) + frame.SetAutoLayout(1) + frame.SetSizer(sizer) + + # + # Demonstrate 1) register/deregister, 2) Multiple listeners receiving + # one event, and 3) Multiple events going to one listener. + # + + def printEvent(event): + print 'Name:',event.GetClassName(),'Timestamp',event.GetTimestamp() + + def enableFrameEvents(event): + # Turn the output of mouse events on and off + if event.IsChecked(): + print '\nEnabling mouse events...' + eventManager.Register(printEvent, EVT_MOTION, frame) + eventManager.Register(printEvent, EVT_LEFT_DOWN, frame) + else: + print '\nDisabling mouse events...' + eventManager.DeregisterWindow(frame) + + # Send togglebutton events to both the on/off code as well + # as the function that prints to stdout. + eventManager.Register(printEvent, EVT_TOGGLEBUTTON, button) + eventManager.Register(enableFrameEvents, EVT_TOGGLEBUTTON, button) + + frame.CenterOnScreen() + frame.Show(1) + app.MainLoop() diff --git a/wxPython/wxPython/lib/fancytext.py b/wxPython/wxPython/lib/fancytext.py index 566e24627d..0767c986e7 100644 --- a/wxPython/wxPython/lib/fancytext.py +++ b/wxPython/wxPython/lib/fancytext.py @@ -13,7 +13,7 @@ encoding, and color. See the example on the bottom for a better idea of how this works. Note that start and end tags for the string are provided if enclose is -true, so for instance, renderToBitmap("X<sub>1</sub>") will work. +True, so for instance, renderToBitmap("X<sub>1</sub>") will work. """ # Copyright 2001 Timothy Hochberg diff --git a/wxPython/wxPython/lib/filebrowsebutton.py b/wxPython/wxPython/lib/filebrowsebutton.py index 0ddc2818c6..e9481d5daa 100644 --- a/wxPython/wxPython/lib/filebrowsebutton.py +++ b/wxPython/wxPython/lib/filebrowsebutton.py @@ -64,7 +64,7 @@ class FileBrowseButton(wxPanel): self.fileMask = fileMask self.fileMode = fileMode self.changeCallback = changeCallback - self.callCallback = true + self.callCallback = True # get background to match it @@ -99,14 +99,14 @@ class FileBrowseButton(wxPanel): box.Add( self.textControl, 1, wxLEFT|wxCENTER, 5) self.browseButton = self.createBrowseButton() - box.Add( self.browseButton, 0, wxCENTER) + box.Add( self.browseButton, 0, wxLEFT|wxCENTER, 5) # add a border around the whole thing and resize the panel to fit outsidebox = wxBoxSizer(wxVERTICAL) outsidebox.Add(box, 1, wxEXPAND|wxALL, 3) outsidebox.Fit(self) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer( outsidebox ) self.Layout() if type( size ) == types.TupleType: @@ -195,7 +195,7 @@ class FileBrowseButton(wxPanel): def SetLabel( self, value ): """ Set the label's current text """ rvalue = self.label.SetLabel( value ) - self.Refresh( true ) + self.Refresh( True ) return rvalue @@ -404,7 +404,7 @@ if __name__ == "__main__": ID = wxNewId() innerbox.Add( wxButton( panel, ID,"Change Value", ), 1, wxEXPAND) EVT_BUTTON( self, ID, self.OnChangeValue ) - panel.SetAutoLayout(true) + panel.SetAutoLayout(True) panel.SetSizer( innerbox ) self.history={"c:\\temp":1, "c:\\tmp":1, "r:\\temp":1,"z:\\temp":1} @@ -417,7 +417,7 @@ if __name__ == "__main__": self.history[event.GetString ()]=1 def OnCloseMe(self, event): - self.Close(true) + self.Close(True) def OnChangeLabel( self, event ): self.bottomcontrol.SetLabel( "Label Updated" ) def OnChangeValue( self, event ): @@ -433,9 +433,9 @@ if __name__ == "__main__": wxImage_AddHandler(wxGIFHandler()) frame = DemoFrame(NULL) #frame = RulesPanel(NULL ) - frame.Show(true) + frame.Show(True) self.SetTopWindow(frame) - return true + return True def test( ): app = DemoApp(0) diff --git a/wxPython/wxPython/lib/floatbar.py b/wxPython/wxPython/lib/floatbar.py index 05629e892e..19b0231ebb 100644 --- a/wxPython/wxPython/lib/floatbar.py +++ b/wxPython/wxPython/lib/floatbar.py @@ -50,8 +50,8 @@ else: wxToolBar subclass which can be dragged off its frame and later replaced there. Drag on the toolbar to release it, close it like a normal window to make it return to its original - position. Programmatically, call SetFloatable(true) and then - Float(true) to float, Float(false) to dock. + position. Programmatically, call SetFloatable(True) and then + Float(True) to float, Float(False) to dock. """ def __init__(self,*_args,**_kwargs): @@ -175,7 +175,7 @@ else: newpos = self.parentframe.GetPosition() newpos.y = newpos.y + _DOCKTHRESHOLD * 2 self.floatframe.SetPosition(newpos) - self.floatframe.Show(true) + self.floatframe.Show(True) EVT_CLOSE(self.floatframe, self.OnDock) #EVT_MOVE(self.floatframe, self.OnMove) @@ -208,9 +208,9 @@ else: #homepos = homepos[0], homepos[1] + self.titleheight #floatpos = self.floatframe.GetPositionTuple() #if abs(homepos[0] - floatpos[0]) < 35 and abs(homepos[1] - floatpos[1]) < 35: - # self._SetFauxBarVisible(true) + # self._SetFauxBarVisible(True) #else: - # self._SetFauxBarVisible(false) + # self._SetFauxBarVisible(False) def OnMouse(self, e): @@ -240,7 +240,7 @@ else: if e.Dragging(): if not self.IsFloating(): - self.Float(true) + self.Float(True) self.oldpos = (e.GetX(), e.GetY()) else: if hasattr(self, 'oldpos'): diff --git a/wxPython/wxPython/lib/gridmovers.py b/wxPython/wxPython/lib/gridmovers.py new file mode 100644 index 0000000000..3a2c45e909 --- /dev/null +++ b/wxPython/wxPython/lib/gridmovers.py @@ -0,0 +1,419 @@ +#---------------------------------------------------------------------------- +# Name: GridColMover.py +# Purpose: Grid Column Mover Extension +# +# Author: Gerrit van Dyk (email: gerritvd@decillion.net) +# +# Version 0.1 +# Date: Nov 19, 2002 +# RCS-ID: $Id$ +# Licence: wxWindows license +#---------------------------------------------------------------------------- + +from wxPython.wx import * +from wxPython.grid import wxGridPtr + +#---------------------------------------------------------------------------- +# event class and macors + + +wxEVT_COMMAND_GRID_COL_MOVE = wxNewEventType() +wxEVT_COMMAND_GRID_ROW_MOVE = wxNewEventType() + +def EVT_GRID_COL_MOVE(win, id, func): + win.Connect(id, -1, wxEVT_COMMAND_GRID_COL_MOVE, func) + +def EVT_GRID_ROW_MOVE(win,id,func): + win.Connect(id, -1, wxEVT_COMMAND_GRID_ROW_MOVE, func) + + +class wxGridColMoveEvent(wxPyCommandEvent): + def __init__(self, id, dCol, bCol): + wxPyCommandEvent.__init__(self, id = id) + self.SetEventType(wxEVT_COMMAND_GRID_COL_MOVE) + self.moveColumn = dCol + self.beforeColumn = bCol + + def GetMoveColumn(self): + return self.moveColumn + + def GetBeforeColumn(self): + return self.beforeColumn + + +class wxGridRowMoveEvent(wxPyCommandEvent): + def __init__(self, id, dRow, bRow): + wxPyCommandEvent.__init__(self,id = id) + self.SetEventType(wxEVT_COMMAND_GRID_ROW_MOVE) + self.moveRow = dRow + self.beforeRow = bRow + + def GetMoveRow(self): + return self.moveRow + + def GetBeforeRow(self): + return self.beforeRow + + +#---------------------------------------------------------------------------- +# graft new methods into the wxGridPtr class + +def _ColToRect(self,col): + if self.GetNumberRows() > 0: + rect = self.CellToRect(0,col) + else: + rect = wxRect() + rect.height = self.GetColLabelSize() + rect.width = self.GetColSize(col) + for cCol in range(0,col): + rect.x += self.GetColSize(cCol) + rect.y = self.GetGridColLabelWindow().GetPosition()[1] + return rect + +wxGridPtr.ColToRect = _ColToRect + + +def _RowToRect(self,row): + if self.GetNumberCols() > 0: + rect = self.CellToRect(row,0) + else: + rect = wxRect() + rect.width = self.GetRowLabelSize() + rect.height = self.GetRowSize(row) + for cRow in range(0,row): + rect.y += self.GetRowSize(cRow) + rect.x = self.GetGridRowLabelWindow().GetPosition()[0] + return rect + +wxGridPtr.RowToRect = _RowToRect + + +#---------------------------------------------------------------------------- + +class ColDragWindow(wxWindow): + def __init__(self,parent,image,dragCol): + wxWindow.__init__(self,parent,wxSIMPLE_BORDER) + self.image = image + self.SetSize((self.image.GetWidth(),self.image.GetHeight())) + self.ux = parent.GetScrollPixelsPerUnit()[0] + self.moveColumn = dragCol + + EVT_PAINT(self,self.OnPaint) + + def DisplayAt(self,pos,y): + x = self.GetPositionTuple()[0] + if x == pos: + self.Refresh() # Need to display insertion point + else: + self.MoveXY(pos,y) + + def GetMoveColumn(self): + return self.moveColumn + + def _GetInsertionInfo(self): + parent = self.GetParent() + sx = parent.GetViewStart()[0] * self.ux + sx -= parent._rlSize + x = self.GetPositionTuple()[0] + w = self.GetSizeTuple()[0] + sCol = parent.XToCol(x + sx) + eCol = parent.XToCol(x + w + sx) + iPos = xPos = xCol = 99999 + centerPos = x + sx + (w / 2) + for col in range(sCol,eCol + 1): + cx = parent.ColToRect(col)[0] + if abs(cx - centerPos) < iPos: + iPos = abs(cx - centerPos) + xCol = col + xPos = cx + if xCol < 0 or xCol > parent.GetNumberCols(): + xCol = parent.GetNumberCols() + return (xPos - sx - x,xCol) + + def GetInsertionColumn(self): + return self._GetInsertionInfo()[1] + + def GetInsertionPos(self): + return self._GetInsertionInfo()[0] + + def OnPaint(self,evt): + dc = wxPaintDC(self) + w,h = self.GetSize() + dc.DrawBitmap(self.image,0,0) + dc.SetPen(wxPen(wxBLACK,1,wxSOLID)) + dc.SetBrush(wxTRANSPARENT_BRUSH) + dc.DrawRectangle(0,0,w,h) + iPos = self.GetInsertionPos() + dc.DrawLine(iPos,h - 10,iPos,h) + + + + +class RowDragWindow(wxWindow): + def __init__(self,parent,image,dragRow): + wxWindow.__init__(self,parent,wxSIMPLE_BORDER) + self.image = image + self.SetSize((self.image.GetWidth(),self.image.GetHeight())) + self.uy = parent.GetScrollPixelsPerUnit()[1] + self.moveRow = dragRow + + EVT_PAINT(self,self.OnPaint) + + def DisplayAt(self,x,pos): + y = self.GetPositionTuple()[1] + if y == pos: + self.Refresh() # Need to display insertion point + else: + self.MoveXY(x,pos) + + def GetMoveRow(self): + return self.moveRow + + def _GetInsertionInfo(self): + parent = self.GetParent() + sy = parent.GetViewStart()[1] * self.uy + sy -= parent._clSize + y = self.GetPositionTuple()[1] + h = self.GetSizeTuple()[1] + sRow = parent.YToRow(y + sy) + eRow = parent.YToRow(y + h + sy) + iPos = yPos = yRow = 99999 + centerPos = y + sy + (h / 2) + for row in range(sRow,eRow + 1): + cy = parent.RowToRect(row)[1] + if abs(cy - centerPos) < iPos: + iPos = abs(cy - centerPos) + yRow = row + yPos = cy + if yRow < 0 or yRow > parent.GetNumberRows(): + yRow = parent.GetNumberRows() + return (yPos - sy - y,yRow) + + def GetInsertionRow(self): + return self._GetInsertionInfo()[1] + + def GetInsertionPos(self): + return self._GetInsertionInfo()[0] + + def OnPaint(self,evt): + dc = wxPaintDC(self) + w,h = self.GetSize() + dc.DrawBitmap(self.image,0,0) + dc.SetPen(wxPen(wxBLACK,1,wxSOLID)) + dc.SetBrush(wxTRANSPARENT_BRUSH) + dc.DrawRectangle(0,0,w,h) + iPos = self.GetInsertionPos() + dc.DrawLine(w - 10,iPos,w,iPos) + +#---------------------------------------------------------------------------- + +class wxGridColMover(wxEvtHandler): + def __init__(self,grid): + wxEvtHandler.__init__(self) + + self.grid = grid + self.grid._rlSize = self.grid.GetRowLabelSize() + self.lwin = grid.GetGridColLabelWindow() + self.lwin.PushEventHandler(self) + self.colWin = None + self.ux = self.grid.GetScrollPixelsPerUnit()[0] + self.startX = -10 + self.cellX = 0 + self.didMove = False + self.isDragging = False + + EVT_MOTION(self,self.OnMouseMove) + EVT_LEFT_DOWN(self,self.OnPress) + EVT_LEFT_UP(self,self.OnRelease) + + def OnMouseMove(self,evt): + if self.isDragging: + if abs(self.startX - evt.m_x) >= 3: + self.didMove = True + sx,y = self.grid.GetViewStart() + w,h = self.lwin.GetClientSizeTuple() + x = sx * self.ux + if (evt.m_x + x) < x: + x = evt.m_x + x + elif evt.m_x > w: + x += evt.m_x - w + if x < 1: x = 0 + else: x /= self.ux + if x != sx: + if wxPlatform == '__WXMSW__': + self.colWin.Show(False) + self.grid.Scroll(x,y) + x,y = self.lwin.ClientToScreenXY(evt.m_x,0) + x,y = self.grid.ScreenToClientXY(x,y) + if not self.colWin.IsShown(): + self.colWin.Show(True) + px = x - self.cellX + if px < 0 + self.grid._rlSize: px = 0 + self.grid._rlSize + if px > w - self.colWin.GetSizeTuple()[0] + self.grid._rlSize: + px = w - self.colWin.GetSizeTuple()[0] + self.grid._rlSize + self.colWin.DisplayAt(px,y) + return + evt.Skip() + + def OnPress(self,evt): + self.startX = evt.m_x + sx = self.grid.GetViewStart()[0] * self.ux + sx -= self.grid._rlSize + px,py = self.lwin.ClientToScreenXY(evt.m_x,evt.m_y) + px,py = self.grid.ScreenToClientXY(px,py) + if self.grid.XToEdgeOfCol(px + sx) != wxNOT_FOUND: + evt.Skip() + return + + self.isDragging = True + self.didMove = False + col = self.grid.XToCol(px + sx) + rect = self.grid.ColToRect(col) + self.cellX = px + sx - rect.x + size = self.lwin.GetSizeTuple() + rect.y = 0 + rect.x -= sx + self.grid._rlSize + rect.height = size[1] + colImg = self._CaptureImage(rect) + self.colWin = ColDragWindow(self.grid,colImg,col) + self.colWin.Show(False) + self.lwin.CaptureMouse() + + def OnRelease(self,evt): + if self.isDragging: + self.lwin.ReleaseMouse() + self.colWin.Show(False) + self.isDragging = False + if not self.didMove: + px = self.lwin.ClientToScreenXY(self.startX,0)[0] + px = self.grid.ScreenToClientXY(px,0)[0] + sx = self.grid.GetViewStart()[0] * self.ux + sx -= self.grid._rlSize + col = self.grid.XToCol(px+sx) + if col != wxNOT_FOUND: + self.grid.SelectCol(col,evt.m_controlDown) + return + else: + bCol = self.colWin.GetInsertionColumn() + dCol = self.colWin.GetMoveColumn() + wxPostEvent(self,wxGridColMoveEvent(self.grid.GetId(), + dCol,bCol)) + self.colWin.Destroy() + evt.Skip() + + def _CaptureImage(self,rect): + bmp = wxEmptyBitmap(rect.width,rect.height) + memdc = wxMemoryDC() + memdc.SelectObject(bmp) + dc = wxWindowDC(self.lwin) + memdc.Blit(0,0,rect.width,rect.height,dc,rect.x,rect.y) + memdc.SelectObject(wxNullBitmap) + return bmp + + + +class wxGridRowMover(wxEvtHandler): + def __init__(self,grid): + wxEvtHandler.__init__(self) + + self.grid = grid + self.grid._clSize = self.grid.GetColLabelSize() + self.lwin = grid.GetGridRowLabelWindow() + self.lwin.PushEventHandler(self) + self.rowWin = None + self.uy = self.grid.GetScrollPixelsPerUnit()[1] + self.startY = -10 + self.cellY = 0 + self.didMove = False + self.isDragging = False + + EVT_MOTION(self,self.OnMouseMove) + EVT_LEFT_DOWN(self,self.OnPress) + EVT_LEFT_UP(self,self.OnRelease) + + def OnMouseMove(self,evt): + if self.isDragging: + if abs(self.startY - evt.m_y) >= 3: + self.didMove = True + x,sy = self.grid.GetViewStart() + w,h = self.lwin.GetClientSizeTuple() + y = sy * self.uy + if (evt.m_y + y) < y: + y = evt.m_y + y + elif evt.m_y > h: + y += evt.m_y - h + if y < 1: y = 0 + else: y /= self.uy + if y != sy: + if wxPlatform == '__WXMSW__': + self.rowWin.Show(False) + self.grid.Scroll(x,y) + x,y = self.lwin.ClientToScreenXY(0,evt.m_y) + x,y = self.grid.ScreenToClientXY(x,y) + if not self.rowWin.IsShown(): + self.rowWin.Show(True) + py = y - self.cellY + if py < 0 + self.grid._clSize: py = 0 + self.grid._clSize + if py > h - self.rowWin.GetSizeTuple()[1] + self.grid._clSize: + py = h - self.rowWin.GetSizeTuple()[1] + self.grid._clSize + self.rowWin.DisplayAt(x,py) + return + evt.Skip() + + def OnPress(self,evt): + self.startY = evt.m_y + sy = self.grid.GetViewStart()[1] * self.uy + sy -= self.grid._clSize + px,py = self.lwin.ClientToScreenXY(evt.m_x,evt.m_y) + px,py = self.grid.ScreenToClientXY(px,py) + if self.grid.YToEdgeOfRow(py + sy) != wxNOT_FOUND: + evt.Skip() + return + + self.isDragging = True + self.didMove = False + row = self.grid.YToRow(py + sy) + rect = self.grid.RowToRect(row) + self.cellY = py + sy - rect.y + size = self.lwin.GetSizeTuple() + rect.x = 0 + rect.y -= sy + self.grid._clSize + rect.width = size[0] + rowImg = self._CaptureImage(rect) + self.rowWin = RowDragWindow(self.grid,rowImg,row) + self.rowWin.Show(False) + self.lwin.CaptureMouse() + + def OnRelease(self,evt): + if self.isDragging: + self.lwin.ReleaseMouse() + self.rowWin.Show(False) + self.isDragging = False + if not self.didMove: + py = self.lwin.ClientToScreenXY(0,self.startY)[1] + py = self.grid.ScreenToClientXY(0,py)[1] + sy = self.grid.GetViewStart()[1] * self.uy + sy -= self.grid._clSize + row = self.grid.YToRow(py + sy) + if row != wxNOT_FOUND: + self.grid.SelectRow(row,evt.m_controlDown) + return + else: + bRow = self.rowWin.GetInsertionRow() + dRow = self.rowWin.GetMoveRow() + wxPostEvent(self,wxGridRowMoveEvent(self.grid.GetId(), + dRow,bRow)) + self.rowWin.Destroy() + evt.Skip() + + def _CaptureImage(self,rect): + bmp = wxEmptyBitmap(rect.width,rect.height) + memdc = wxMemoryDC() + memdc.SelectObject(bmp) + dc = wxWindowDC(self.lwin) + memdc.Blit(0,0,rect.width,rect.height,dc,rect.x,rect.y) + memdc.SelectObject(wxNullBitmap) + return bmp + + +#---------------------------------------------------------------------------- diff --git a/wxPython/wxPython/lib/grids.py b/wxPython/wxPython/lib/grids.py index 9d517db3b0..5425d1adf4 100644 --- a/wxPython/wxPython/lib/grids.py +++ b/wxPython/wxPython/lib/grids.py @@ -126,8 +126,8 @@ class wxGridSizer(wxPySizer): sz = self.GetSize() pt = self.GetPosition() - w = (sz.width - (ncols - 1) * self.hgap) / ncols; - h = (sz.height - (nrows - 1) * self.vgap) / nrows; + w = (sz.width - (ncols - 1) * self.hgap) / ncols; + h = (sz.height - (nrows - 1) * self.vgap) / nrows; x = pt.x for c in range(ncols): diff --git a/wxPython/wxPython/lib/imagebrowser.py b/wxPython/wxPython/lib/imagebrowser.py index b47ef31484..6496bb1a13 100644 --- a/wxPython/wxPython/lib/imagebrowser.py +++ b/wxPython/wxPython/lib/imagebrowser.py @@ -14,10 +14,10 @@ # View "All Image" File Types as default filter # Sort the file list # Use newer "re" function for patterns - + #--------------------------------------------------------------------------- -import os, sys, string +import os, sys from wxPython.wx import * dir_path = os.getcwd() @@ -29,8 +29,8 @@ def ConvertBMP(file_nm): fl_fld = os.path.splitext(file_nm) ext = fl_fld[1] - ext = string.lower(ext[1:]) - if ext == 'bmp': + ext = ext[1:].lower() + if ext == 'bmp': image = wxImage(file_nm, wxBITMAP_TYPE_BMP) elif ext == 'gif': image = wxImage(file_nm, wxBITMAP_TYPE_GIF) @@ -93,31 +93,31 @@ class ImageView(wxWindow): def DrawImage(self, dc): try: - image = self.image + image = self.image except: return self.DrawBorder(dc) if image is None: return - + bmp = image.ConvertToBitmap() - + iwidth = bmp.GetWidth() # dimensions of image file iheight = bmp.GetHeight() - + diffx = (self.image_sizex - iwidth)/2 # center calc if iwidth >= self.image_sizex -10: # if image width fits in window adjust diffx = 5 iwidth = self.image_sizex - 10 - + diffy = (self.image_sizey - iheight)/2 # center calc if iheight >= self.image_sizey - 10: # if image height fits in window adjust diffy = 5 iheight = self.image_sizey - 10 image.Rescale(iwidth, iheight) # rescale to fit the window - image.ConvertToBitmap() + image.ConvertToBitmap() bmp = image.ConvertToBitmap() dc.DrawBitmap(bmp, diffx, diffy) # draw the image to window @@ -125,40 +125,40 @@ class ImageView(wxWindow): class ImageDialog(wxDialog): def __init__(self, parent, set_dir = None): wxDialog.__init__(self, parent, -1, "Image Browser", wxPyDefaultPosition, wxSize(400, 400)) - + self.x_pos = 30 # initial display positions self.y_pos = 20 - self.delta = 20 + self.delta = 20 size = wxSize(80, 25) - + self.set_dir = os.getcwd() - + if set_dir != None: if os.path.exists(set_dir): # set to working directory if nothing set self.set_dir = set_dir - + self.dir_x = self.x_pos self.dir_y = self.y_pos self.DisplayDir() # display the directory value - + self.y_pos = self.y_pos + self.delta - mID = NewId() + mID = wxNewId() wxButton(self, mID, ' Set Directory ', wxPoint(self.x_pos, self.y_pos), size).SetDefault() EVT_BUTTON(self, mID, self.SetDirect) - self.type_posy = self.y_pos # save the y position for the image type combo + self.type_posy = self.y_pos # save the y position for the image type combo self.fl_ext = '*.bmp' # initial setting for file filtering self.GetFiles() # get the file list - + self.y_pos = self.y_pos + self.delta + 10 self.list_height = 150 - + # List of Labels - mID = NewId() + mID = wxNewId() self.tb = tb = wxListBox(self, mID, wxPoint(self.x_pos, self.y_pos), wxSize(160, self.list_height), self.fl_list, wxLB_SINGLE) EVT_LISTBOX(self, mID, self.OnListClick) EVT_LISTBOX_DCLICK(self, mID, self.OnListDClick) @@ -170,13 +170,13 @@ class ImageDialog(wxDialog): image_sizey = self.list_height self.fl_types = ["All Images", "Bmp", "Gif", "Png", "Jpg", "Ico", "Pnm", "Pcx", "Tif", "All Files"] - self.fl_ext_types = { "All Images": "All", "Bmp": "*.bmp", "Gif": "*.gif", "Png": "*.png", "Jpg": "*.jpg", + self.fl_ext_types = { "All Images": "All", "Bmp": "*.bmp", "Gif": "*.gif", "Png": "*.png", "Jpg": "*.jpg", "Ico": "*.ico", "Pnm": "*.pnm", "Pcx": "*.pcx", "Tif": "*.tif", "All Files": "*.*" } - + self.set_type = self.fl_types[0] # initial file filter setting self.fl_ext = self.fl_ext_types[self.set_type] - - mID = NewId() + + mID = wxNewId() self.sel_type = wxComboBox(self, mID, self.set_type, wxPoint(image_posx , self.type_posy), wxSize(150, -1), self.fl_types, wxCB_DROPDOWN) EVT_COMBOBOX(self, mID, self.OnSetType) @@ -184,7 +184,7 @@ class ImageDialog(wxDialog): self.y_pos = self.y_pos + height + 20 - mID = NewId() + mID = wxNewId() wxButton(self, mID, ' Select ', wxPoint(100, self.y_pos), size).SetDefault() EVT_BUTTON(self, mID, self.OnOk) @@ -193,7 +193,7 @@ class ImageDialog(wxDialog): self.y_pos = self.y_pos + self.delta fsize = wxSize(400, self.y_pos + 50) # resize dialog for final vertical position self.SetSize(fsize) - + self.ResetFiles() def GetFiles(self): # get the file list using directory and extension values @@ -204,7 +204,7 @@ class ImageDialog(wxDialog): self.fl_val = FindFiles(self, self.set_dir, filter) all_files = all_files + self.fl_val.files # add to list of files self.fl_list = all_files - else: + else: self.fl_val = FindFiles(self, self.set_dir, self.fl_ext) self.fl_list = self.fl_val.files @@ -212,19 +212,19 @@ class ImageDialog(wxDialog): def DisplayDir(self): # display the working directory wxStaticText(self, -1, self.set_dir, wxPoint(self.dir_x, self.dir_y), wxSize(250, -1)) - + def OnSetType(self, event): val = event.GetString() # get file type value self.fl_ext = self.fl_ext_types[val] - self.ResetFiles() - + self.ResetFiles() + def OnListDClick(self, event): self.OnOk(0) - + def OnListClick(self, event): val = event.GetSelection() self.SetListValue(val) - + def SetListValue(self, val): file_nm = self.fl_list[val] self.set_file = file_val = os.path.join(self.set_dir, file_nm) @@ -237,7 +237,7 @@ class ImageDialog(wxDialog): self.set_dir = dlg.GetPath() self.ResetFiles() dlg.Destroy() - + def ResetFiles(self): # refresh the display with files and initial image self.DisplayDir() self.GetFiles() @@ -247,13 +247,13 @@ class ImageDialog(wxDialog): self.SetListValue(0) except: self.image_view.SetValue(None) - + def GetFile(self): return self.set_file def GetDirectory(self): return self.set_dir - + def OnCancel(self, event): self.result = None self.EndModal(wxID_CANCEL) @@ -278,23 +278,23 @@ class FindFiles: dirlist = [".."] self.dir = dir self.file = "" - mask = string.upper(mask) + mask = mask.upper() pattern = self.MakeRegex(mask) for i in os.listdir(dir): if i == "." or i == "..": - continue + continue path = os.path.join(dir, i) - path = string.upper(path) - value = string.upper(i) + path = path.upper() + value = i.upper() if pattern.match(value) != None: filelist.append(i) - self.files = filelist + self.files = filelist def MakeRegex(self, pattern): import re - f = "" # Set up a regex for file names + f = "" # Set up a regex for file names for ch in pattern: if ch == "*": f = f + ".*" diff --git a/wxPython/wxPython/lib/imageutils.py b/wxPython/wxPython/lib/imageutils.py new file mode 100644 index 0000000000..7636508194 --- /dev/null +++ b/wxPython/wxPython/lib/imageutils.py @@ -0,0 +1,45 @@ +#---------------------------------------------------------------------- +# Name: wxPython.lib.imageutils +# Purpose: A collection of functions for simple image manipulations +# +# Author: Robb Shecter +# +# Created: 7-Nov-2002 +# RCS-ID: $Id$ +# Copyright: (c) 2002 by +# Licence: wxWindows license +#---------------------------------------------------------------------- + +from __future__ import nested_scopes + + +def grayOut(anImage): + """ + Convert the given image (in place) to a grayed-out + version, appropriate for a 'disabled' appearance. + """ + factor = 0.7 # 0 < f < 1. Higher is grayer. + if anImage.HasMask(): + maskColor = (anImage.GetMaskRed(), anImage.GetMaskGreen(), anImage.GetMaskBlue()) + else: + maskColor = None + data = map(ord, list(anImage.GetData())) + + for i in range(0, len(data), 3): + pixel = (data[i], data[i+1], data[i+2]) + pixel = makeGray(pixel, factor, maskColor) + for x in range(3): + data[i+x] = pixel[x] + anImage.SetData(''.join(map(chr, data))) + + +def makeGray((r,g,b), factor, maskColor): + """ + Make a pixel grayed-out. If the pixel + matches the maskColor, it won't be + changed. + """ + if (r,g,b) != maskColor: + return map(lambda x: ((230 - x) * factor) + x, (r,g,b)) + else: + return (r,g,b) diff --git a/wxPython/wxPython/lib/infoframe.py b/wxPython/wxPython/lib/infoframe.py index dd898c57a0..f98b7fc5a4 100644 --- a/wxPython/wxPython/lib/infoframe.py +++ b/wxPython/wxPython/lib/infoframe.py @@ -121,7 +121,7 @@ see the appropriate "stub" file in the wxPython demo. """ from wxPython.wx import * -import string, sys, types, tempfile, os +import sys, tempfile, os class _MyStatusBar(wxStatusBar): def __init__(self, parent,callbacks=None,useopenbutton=0): @@ -187,7 +187,7 @@ class _MyStatusBar(wxStatusBar): self.button2.SetLabel ("Open New File") self.useopenbutton = 1 - self.useopenbutton self.OnSize("") - self.button2.Refresh(TRUE) + self.button2.Refresh(True) self.Refresh() @@ -269,7 +269,7 @@ class wxPyInformationalMessagesFrame: useopenbutton=hasattr(self, "nofile")) self.frame.SetStatusBar(self.frame.sb) - self.frame.Show(true) + self.frame.Show(True) EVT_CLOSE(self.frame, self.OnCloseWindow) if hasattr(self,"nofile"): @@ -341,7 +341,7 @@ class wxPyInformationalMessagesFrame: if m is not None:# and m.__dict__.has_key("__debug__"): m.__dict__["__debug__"] = 0 - if self.frame is not None: # typically true, but, e.g., allows + if self.frame is not None: # typically True, but, e.g., allows # DisableOutput method (which calls this # one) to be called when the frame is not # actually open, so that it is always safe diff --git a/wxPython/wxPython/lib/intctrl.py b/wxPython/wxPython/lib/intctrl.py new file mode 100644 index 0000000000..cf17abdaa4 --- /dev/null +++ b/wxPython/wxPython/lib/intctrl.py @@ -0,0 +1,866 @@ +#---------------------------------------------------------------------------- +# Name: wxPython.lib.intctrl.py +# Author: Will Sadkin +# Created: 01/16/2003 +# Copyright: (c) 2003 by Will Sadkin +# RCS-ID: $Id$ +# License: wxWindows license +#---------------------------------------------------------------------------- +# NOTE: +# This was written to provide a standard integer edit control for wxPython. +# +# wxIntCtrl permits integer (long) values to be retrieved or set via +# .GetValue() and .SetValue(), and provides an EVT_INT() event function +# for trapping changes to the control. +# +# It supports negative integers as well as the naturals, and does not +# permit leading zeros or an empty control; attempting to delete the +# contents of the control will result in a (selected) value of zero, +# thus preserving a legitimate integer value, or an empty control +# (if a value of None is allowed for the control.) Similarly, replacing the +# contents of the control with '-' will result in a selected (absolute) +# value of -1. +# +# wxIntCtrl also supports range limits, with the option of either +# enforcing them or simply coloring the text of the control if the limits +# are exceeded. + +from wxPython.wx import * +import types, string +from sys import maxint +MAXINT = maxint # (constants should be in upper case) +MININT = -maxint-1 + +#---------------------------------------------------------------------------- + +wxEVT_COMMAND_INT_UPDATED = wxNewEventType() + +# wxWindows' wxTextCtrl translates Composite "control key" +# events into single events before returning them to its OnChar +# routine. The doc says that this results in 1 for Ctrl-A, 2 for +# Ctrl-B, etc. However, there are no wxPython or wxWindows +# symbols for them, so I'm defining codes for Ctrl-X (cut) and +# Ctrl-V (paste) here for readability: +WXK_CTRL_X = (ord('X')+1) - ord('A') +WXK_CTRL_V = (ord('V')+1) - ord('A') + + +def EVT_INT(win, id, func): + """Used to trap events indicating that the current + integer value of the control has been changed.""" + win.Connect(id, -1, wxEVT_COMMAND_INT_UPDATED, func) + + +class wxIntUpdatedEvent(wxPyCommandEvent): + def __init__(self, id, value = 0, object=None): + wxPyCommandEvent.__init__(self, wxEVT_COMMAND_INT_UPDATED, id) + + self.__value = value + self.SetEventObject(object) + + def GetValue(self): + """Retrieve the value of the control at the time + this event was generated.""" + return self.__value + + +#---------------------------------------------------------------------------- + +class wxIntValidator( wxPyValidator ): + """ + Validator class used with wxIntCtrl; handles all validation of input + prior to changing the value of the underlying wxTextCtrl. + """ + def __init__(self): + wxPyValidator.__init__(self) + EVT_CHAR(self, self.OnChar) + + def Clone (self): + return self.__class__() + + def Validate(self, window): # window here is the *parent* of the ctrl + """ + Because each operation on the control is vetted as it's made, + the value of the control is always valid. + """ + return 1 + + + def OnChar(self, event): + """ + Validates keystrokes to make sure the resulting value will a legal + value. Erasing the value causes it to be set to 0, with the value + selected, so it can be replaced. Similarly, replacing the value + with a '-' sign causes the value to become -1, with the value + selected. Leading zeros are removed if introduced by selection, + and are prevented from being inserted. + """ + key = event.KeyCode() + ctrl = event.GetEventObject() + + + value = ctrl.GetValue() + textval = wxTextCtrl.GetValue(ctrl) + allow_none = ctrl.IsNoneAllowed() + + pos = ctrl.GetInsertionPoint() + sel_start, sel_to = ctrl.GetSelection() + select_len = sel_to - sel_start + +# (Uncomment for debugging:) +## print 'keycode:', key +## print 'pos:', pos +## print 'sel_start, sel_to:', sel_start, sel_to +## print 'select_len:', select_len +## print 'textval:', textval + + # set defaults for processing: + allow_event = 1 + set_to_none = 0 + set_to_zero = 0 + set_to_minus_one = 0 + paste = 0 + internally_set = 0 + + new_value = value + new_text = textval + new_pos = pos + + # Validate action, and predict resulting value, so we can + # range check the result and validate that too. + + if key in (WXK_DELETE, WXK_BACK, WXK_CTRL_X): + if select_len: + new_text = textval[:sel_start] + textval[sel_to:] + elif key == WXK_DELETE and pos < len(textval): + new_text = textval[:pos] + textval[pos+1:] + elif key == WXK_BACK and pos > 0: + new_text = textval[:pos-1] + textval[pos:] + # (else value shouldn't change) + + if new_text in ('', '-'): + # Deletion of last significant digit: + if allow_none and new_text == '': + new_value = None + set_to_none = 1 + else: + new_value = 0 + set_to_zero = 1 + else: + try: + new_value = ctrl._fromGUI(new_text) + except ValueError: + allow_event = 0 + + + elif key == WXK_CTRL_V: # (see comments at top of file) + # Only allow paste if number: + paste_text = ctrl._getClipboardContents() + new_text = textval[:sel_start] + paste_text + textval[sel_to:] + if new_text == '' and allow_none: + new_value = None + set_to_none = 1 + else: + try: + # Convert the resulting strings, verifying they + # are legal integers and will fit in proper + # size if ctrl limited to int. (if not, + # disallow event.) + new_value = ctrl._fromGUI(new_text) + if paste_text: + paste_value = ctrl._fromGUI(paste_text) + else: + paste_value = 0 + new_pos = sel_start + len(str(paste_value)) + + # if resulting value is 0, truncate and highlight value: + if new_value == 0 and len(new_text) > 1: + set_to_zero = 1 + + elif paste_value == 0: + # Disallow pasting a leading zero with nothing selected: + if( select_len == 0 + and value is not None + and ( (value >= 0 and pos == 0) + or (value < 0 and pos in [0,1]) ) ): + allow_event = 0 + paste = 1 + + except ValueError: + allow_event = 0 + + + elif key < WXK_SPACE or key > 255: + pass # event ok + + + elif chr(key) == '-': + # Allow '-' to result in -1 if replacing entire contents: + if( value is None + or (value == 0 and pos == 0) + or (select_len >= len(str(abs(value)))) ): + new_value = -1 + set_to_minus_one = 1 + + # else allow negative sign only at start, and only if + # number isn't already zero or negative: + elif pos != 0 or (value is not None and value < 0): + allow_event = 0 + else: + new_text = '-' + textval + new_pos = 1 + try: + new_value = ctrl._fromGUI(new_text) + except ValueError: + allow_event = 0 + + + elif chr(key) in string.digits: + # disallow inserting a leading zero with nothing selected + if( chr(key) == '0' + and select_len == 0 + and value is not None + and ( (value >= 0 and pos == 0) + or (value < 0 and pos in [0,1]) ) ): + allow_event = 0 + # disallow inserting digits before the minus sign: + elif value is not None and value < 0 and pos == 0: + allow_event = 0 + else: + new_text = textval[:sel_start] + chr(key) + textval[sel_to:] + try: + new_value = ctrl._fromGUI(new_text) + except ValueError: + allow_event = 0 + + else: + # not a legal char + allow_event = 0 + + + if allow_event: + # Do range checking for new candidate value: + if ctrl.IsLimited() and not ctrl.IsInBounds(new_value): + allow_event = 0 + elif new_value is not None: + # ensure resulting text doesn't result in a leading 0: + if not set_to_zero and not set_to_minus_one: + if( (new_value > 0 and new_text[0] == '0') + or (new_value < 0 and new_text[1] == '0') + or (new_value == 0 and select_len > 1 ) ): + + # Allow replacement of leading chars with + # zero, but remove the leading zero, effectively + # making this like "remove leading digits" + + # Account for leading zero when positioning cursor: + if( key == WXK_BACK + or (paste and paste_value == 0 and new_pos > 0) ): + new_pos = new_pos - 1 + + wxCallAfter(ctrl.SetValue, new_value) + wxCallAfter(ctrl.SetInsertionPoint, new_pos) + internally_set = 1 + + elif paste: + # Always do paste numerically, to remove + # leading/trailing spaces + wxCallAfter(ctrl.SetValue, new_value) + wxCallAfter(ctrl.SetInsertionPoint, new_pos) + internally_set = 1 + + elif (new_value == 0 and len(new_text) > 1 ): + allow_event = 0 + + if allow_event: + ctrl._colorValue(new_value) # (one way or t'other) + +# (Uncomment for debugging:) +## if allow_event: +## print 'new value:', new_value +## if paste: print 'paste' +## if set_to_none: print 'set_to_none' +## if set_to_zero: print 'set_to_zero' +## if set_to_minus_one: print 'set_to_minus_one' +## if internally_set: print 'internally_set' +## else: +## print 'new text:', new_text +## print 'disallowed' +## print + + if allow_event: + if set_to_none: + wxCallAfter(ctrl.SetValue, new_value) + + elif set_to_zero: + # select to "empty" numeric value + wxCallAfter(ctrl.SetValue, new_value) + wxCallAfter(ctrl.SetInsertionPoint, 0) + wxCallAfter(ctrl.SetSelection, 0, 1) + + elif set_to_minus_one: + wxCallAfter(ctrl.SetValue, new_value) + wxCallAfter(ctrl.SetInsertionPoint, 1) + wxCallAfter(ctrl.SetSelection, 1, 2) + + elif not internally_set: + event.Skip() # allow base wxTextCtrl to finish processing + + elif not wxValidator_IsSilent(): + wxBell() + + + def TransferToWindow(self): + """ Transfer data from validator to window. + + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. + """ + return True # Prevent wxDialog from complaining. + + + def TransferFromWindow(self): + """ Transfer data from window to validator. + + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. + """ + return True # Prevent wxDialog from complaining. + + +#---------------------------------------------------------------------------- + +class wxIntCtrl(wxTextCtrl): + """ + This class provides a control that takes and returns integers as + value, and provides bounds support and optional value limiting. + + wxIntCtrl( + parent, id = -1, + value = 0, + min = None, + max = None, + limited = False, + allow_none = False, + allow_long = False, + default_color = wxBLACK, + oob_color = wxRED, + pos = wxDefaultPosition, + size = wxDefaultSize, + style = 0, + name = "integer") + + value + If no initial value is set, the default will be zero, or + the minimum value, if specified. If an illegal string is specified, + a ValueError will result. (You can always later set the initial + value with SetValue() after instantiation of the control.) + min + The minimum value that the control should allow. This can be + adjusted with SetMin(). If the control is not limited, any value + below this bound will be colored with the current out-of-bounds color. + If min < -sys.maxint-1 and the control is configured to not allow long + values, the minimum bound will still be set to the long value, but + the implicit bound will be -sys.maxint-1. + max + The maximum value that the control should allow. This can be + adjusted with SetMax(). If the control is not limited, any value + above this bound will be colored with the current out-of-bounds color. + if max > sys.maxint and the control is configured to not allow long + values, the maximum bound will still be set to the long value, but + the implicit bound will be sys.maxint. + + limited + Boolean indicating whether the control prevents values from + exceeding the currently set minimum and maximum values (bounds). + If False and bounds are set, out-of-bounds values will + be colored with the current out-of-bounds color. + + allow_none + Boolean indicating whether or not the control is allowed to be + empty, representing a value of None for the control. + + allow_long + Boolean indicating whether or not the control is allowed to hold + and return a long as well as an int. + + default_color + Color value used for in-bounds values of the control. + + oob_color + Color value used for out-of-bounds values of the control + when the bounds are set but the control is not limited. + """ + def __init__ ( + self, parent, id=-1, + value = 0, min=None, max=None, + limited = 0, allow_none = 0, allow_long = 0, + default_color = wxBLACK, oob_color = wxRED, + pos = wxDefaultPosition, size = wxDefaultSize, + style = 0, name = "integer", + ): + + # Establish attrs required for any operation on value: + self.__min = None + self.__max = None + self.__limited = 0 + self.__default_color = wxBLACK + self.__oob_color = wxRED + self.__allow_none = 0 + self.__allow_long = 0 + + wxTextCtrl.__init__( + self, parent, id, self._toGUI(0), + pos, size, style, wxIntValidator(), name ) + + # The following lets us set out our "integer update" events: + EVT_TEXT( self, self.GetId(), self.OnText ) + + # Establish parameters, with appropriate error checking + + self.SetBounds(min, max) + self.SetLimited(limited) + self.SetColors(default_color, oob_color) + self.SetNoneAllowed(allow_none) + self.SetLongAllowed(allow_long) + self.SetValue(value) + + + def OnText( self, event ): + """ + Handles an event indicating that the text control's value + has changed, and issue EVT_INT event. + """ + try: + self.GetEventHandler().ProcessEvent( + wxIntUpdatedEvent( self.GetId(), self.GetValue(), self ) ) + except ValueError: + return + # let normal processing of the text continue + event.Skip() + + + def GetValue(self): + """ + Returns the current integer (long) value of the control. + """ + return self._fromGUI( wxTextCtrl.GetValue(self) ) + + def SetValue(self, value): + """ + Sets the value of the control to the integer value specified. + The resulting actual value of the control may be altered to + conform with the bounds set on the control if limited, + or colored if not limited but the value is out-of-bounds. + A ValueError exception will be raised if an invalid value + is specified. + """ + wxTextCtrl.SetValue( self, self._toGUI(value) ) + self._colorValue() + + + def SetMin(self, min=None): + """ + Sets the minimum value of the control. If a value of None + is provided, then the control will have no explicit minimum value. + If the value specified is greater than the current maximum value, + then the function returns 0 and the minimum will not change from + its current setting. On success, the function returns 1. + + If successful and the current value is lower than the new lower + bound, if the control is limited, the value will be automatically + adjusted to the new minimum value; if not limited, the value in the + control will be colored with the current out-of-bounds color. + + If min > -sys.maxint-1 and the control is configured to not allow longs, + the function will return 0, and the min will not be set. + """ + if( self.__max is None + or min is None + or (self.__max is not None and self.__max >= min) ): + self.__min = min + + if self.IsLimited() and min is not None and self.GetValue() < min: + self.SetValue(min) + else: + self._colorValue() + return 1 + else: + return 0 + + + def GetMin(self): + """ + Gets the minimum value of the control. It will return the current + minimum integer, or None if not specified. + """ + return self.__min + + + def SetMax(self, max=None): + """ + Sets the maximum value of the control. If a value of None + is provided, then the control will have no explicit maximum value. + If the value specified is less than the current minimum value, then + the function returns 0 and the maximum will not change from its + current setting. On success, the function returns 1. + + If successful and the current value is greater than the new upper + bound, if the control is limited the value will be automatically + adjusted to this maximum value; if not limited, the value in the + control will be colored with the current out-of-bounds color. + + If max > sys.maxint and the control is configured to not allow longs, + the function will return 0, and the max will not be set. + """ + if( self.__min is None + or max is None + or (self.__min is not None and self.__min <= max) ): + self.__max = max + + if self.IsLimited() and max is not None and self.GetValue() > max: + self.SetValue(max) + else: + self._colorValue() + return 1 + else: + return 0 + + + def GetMax(self): + """ + Gets the maximum value of the control. It will return the current + maximum integer, or None if not specified. + """ + return self.__max + + + def SetBounds(self, min=None, max=None): + """ + This function is a convenience function for setting the min and max + values at the same time. The function only applies the maximum bound + if setting the minimum bound is successful, and returns True + only if both operations succeed. + NOTE: leaving out an argument will remove the corresponding bound. + """ + ret = self.SetMin(min) + return ret and self.SetMax(max) + + + def GetBounds(self): + """ + This function returns a two-tuple (min,max), indicating the + current bounds of the control. Each value can be None if + that bound is not set. + """ + return (self.__min, self.__max) + + + def SetLimited(self, limited): + """ + If called with a value of True, this function will cause the control + to limit the value to fall within the bounds currently specified. + If the control's value currently exceeds the bounds, it will then + be limited accordingly. + + If called with a value of 0, this function will disable value + limiting, but coloring of out-of-bounds values will still take + place if bounds have been set for the control. + """ + self.__limited = limited + if limited: + min = self.GetMin() + max = self.GetMax() + if not min is None and self.GetValue() < min: + self.SetValue(min) + elif not max is None and self.GetValue() > max: + self.SetValue(max) + else: + self._colorValue() + + + def IsLimited(self): + """ + Returns True if the control is currently limiting the + value to fall within the current bounds. + """ + return self.__limited + + + def IsInBounds(self, value=None): + """ + Returns True if no value is specified and the current value + of the control falls within the current bounds. This function can + also be called with a value to see if that value would fall within + the current bounds of the given control. + """ + if value is None: + value = self.GetValue() + + if( not (value is None and self.IsNoneAllowed()) + and type(value) not in (types.IntType, types.LongType) ): + raise ValueError ( + 'wxIntCtrl requires integer values, passed %s'% repr(value) ) + + min = self.GetMin() + max = self.GetMax() + if min is None: min = value + if max is None: max = value + + # if bounds set, and value is None, return False + if value == None and (min is not None or max is not None): + return 0 + else: + return min <= value <= max + + + def SetNoneAllowed(self, allow_none): + """ + Change the behavior of the validation code, allowing control + to have a value of None or not, as appropriate. If the value + of the control is currently None, and allow_none is 0, the + value of the control will be set to the minimum value of the + control, or 0 if no lower bound is set. + """ + self.__allow_none = allow_none + if not allow_none and self.GetValue() is None: + min = self.GetMin() + if min is not None: self.SetValue(min) + else: self.SetValue(0) + + + def IsNoneAllowed(self): + return self.__allow_none + + + def SetLongAllowed(self, allow_long): + """ + Change the behavior of the validation code, allowing control + to have a long value or not, as appropriate. If the value + of the control is currently long, and allow_long is 0, the + value of the control will be adjusted to fall within the + size of an integer type, at either the sys.maxint or -sys.maxint-1, + for positive and negative values, respectively. + """ + current_value = self.GetValue() + if not allow_long and type(current_value) is types.LongType: + if current_value > 0: + self.SetValue(MAXINT) + else: + self.SetValue(MININT) + self.__allow_long = allow_long + + + def IsLongAllowed(self): + return self.__allow_long + + + + def SetColors(self, default_color=wxBLACK, oob_color=wxRED): + """ + Tells the control what colors to use for normal and out-of-bounds + values. If the value currently exceeds the bounds, it will be + recolored accordingly. + """ + self.__default_color = default_color + self.__oob_color = oob_color + self._colorValue() + + + def GetColors(self): + """ + Returns a tuple of (default_color, oob_color), indicating + the current color settings for the control. + """ + return self.__default_color, self.__oob_color + + + def _colorValue(self, value=None): + """ + Colors text with oob_color if current value exceeds bounds + set for control. + """ + if not self.IsInBounds(value): + self.SetForegroundColour(self.__oob_color) + else: + self.SetForegroundColour(self.__default_color) + self.Refresh() + + + def _toGUI( self, value ): + """ + Conversion function used to set the value of the control; does + type and bounds checking and raises ValueError if argument is + not a valid value. + """ + if value is None and self.IsNoneAllowed(): + return '' + elif type(value) == types.LongType and not self.IsLongAllowed(): + raise ValueError ( + 'wxIntCtrl requires integer value, passed long' ) + elif type(value) not in (types.IntType, types.LongType): + raise ValueError ( + 'wxIntCtrl requires integer value, passed %s'% repr(value) ) + + elif self.IsLimited(): + min = self.GetMin() + max = self.GetMax() + if not min is None and value < min: + raise ValueError ( + 'value is below minimum value of control %d'% value ) + if not max is None and value > max: + raise ValueError ( + 'value exceeds value of control %d'% value ) + + return str(value) + + + def _fromGUI( self, value ): + """ + Conversion function used in getting the value of the control. + """ + if value == '': + if not self.IsNoneAllowed(): + return 0 + else: + return None + else: + try: + return int( value ) + except ValueError: + if self.IsLongAllowed(): + return long( value ) + else: + raise + + + def Cut( self ): + """ + Override the wxTextCtrl's .Cut function, with our own + that does validation. Will result in a value of 0 + if entire contents of control are removed. + """ + sel_start, sel_to = self.GetSelection() + select_len = sel_to - sel_start + textval = wxTextCtrl.GetValue(self) + + do = wxTextDataObject() + do.SetText(textval[sel_start:sel_to]) + wxTheClipboard.Open() + wxTheClipboard.SetData(do) + wxTheClipboard.Close() + if select_len == len(wxTextCtrl.GetValue(self)): + if not self.IsNoneAllowed(): + self.SetValue(0) + self.SetInsertionPoint(0) + self.SetSelection(0,1) + else: + self.SetValue(None) + else: + new_value = self._fromGUI(textval[:sel_start] + textval[sel_to:]) + self.SetValue(new_value) + + + def _getClipboardContents( self ): + """ + Subroutine for getting the current contents of the clipboard. + """ + do = wxTextDataObject() + wxTheClipboard.Open() + success = wxTheClipboard.GetData(do) + wxTheClipboard.Close() + + if not success: + return None + else: + # Remove leading and trailing spaces before evaluating contents + return do.GetText().strip() + + + def Paste( self ): + """ + Override the wxTextCtrl's .Paste function, with our own + that does validation. Will raise ValueError if not a + valid integerizable value. + """ + paste_text = self._getClipboardContents() + if paste_text: + # (conversion will raise ValueError if paste isn't legal) + sel_start, sel_to = self.GetSelection() + text = wxTextCtrl.GetValue( self ) + new_text = text[:sel_start] + paste_text + text[sel_to:] + if new_text == '' and self.IsNoneAllowed(): + self.SetValue(None) + else: + value = self._fromGUI(new_text) + self.SetValue(value) + new_pos = sel_start + len(paste_text) + wxCallAfter(self.SetInsertionPoint, new_pos) + + + +#=========================================================================== + +if __name__ == '__main__': + + import traceback + + class myDialog(wxDialog): + def __init__(self, parent, id, title, + pos = wxPyDefaultPosition, size = wxPyDefaultSize, + style = wxDEFAULT_DIALOG_STYLE ): + wxDialog.__init__(self, parent, id, title, pos, size, style) + + self.int_ctrl = wxIntCtrl(self, NewId(), size=(55,20)) + self.OK = wxButton( self, wxID_OK, "OK") + self.Cancel = wxButton( self, wxID_CANCEL, "Cancel") + + vs = wxBoxSizer( wxVERTICAL ) + vs.AddWindow( self.int_ctrl, 0, wxALIGN_CENTRE|wxALL, 5 ) + hs = wxBoxSizer( wxHORIZONTAL ) + hs.AddWindow( self.OK, 0, wxALIGN_CENTRE|wxALL, 5 ) + hs.AddWindow( self.Cancel, 0, wxALIGN_CENTRE|wxALL, 5 ) + vs.AddSizer(hs, 0, wxALIGN_CENTRE|wxALL, 5 ) + + self.SetAutoLayout( True ) + self.SetSizer( vs ) + vs.Fit( self ) + vs.SetSizeHints( self ) + EVT_INT(self, self.int_ctrl.GetId(), self.OnInt) + + def OnInt(self, event): + print 'int now', event.GetValue() + + class TestApp(wxApp): + def OnInit(self): + try: + self.frame = wxFrame(NULL, -1, "Test", + wxPoint(20,20), wxSize(120,100) ) + self.panel = wxPanel(self.frame, -1) + button = wxButton(self.panel, 10, "Push Me", + wxPoint(20, 20)) + EVT_BUTTON(self, 10, self.OnClick) + except: + traceback.print_exc() + return False + return True + + def OnClick(self, event): + dlg = myDialog(self.panel, -1, "test wxIntCtrl") + dlg.int_ctrl.SetValue(501) + dlg.int_ctrl.SetInsertionPoint(1) + dlg.int_ctrl.SetSelection(1,2) + rc = dlg.ShowModal() + print 'final value', dlg.int_ctrl.GetValue() + del dlg + self.frame.Destroy() + + def Show(self): + self.frame.Show(True) + + try: + app = TestApp(0) + app.Show() + app.MainLoop() + except: + traceback.print_exc() diff --git a/wxPython/wxPython/lib/layoutf.py b/wxPython/wxPython/lib/layoutf.py index c0f90b2083..4e1c20ac08 100644 --- a/wxPython/wxPython/lib/layoutf.py +++ b/wxPython/wxPython/lib/layoutf.py @@ -1,7 +1,7 @@ from wxPython.wx import wxLayoutConstraints,\ wxTop, wxLeft, wxBottom, wxRight, \ wxHeight, wxWidth, wxCentreX, wxCentreY -import re,string +import re class Layoutf(wxLayoutConstraints): """ @@ -130,8 +130,8 @@ time of this writing not documented. self.pack(pstr,winlist) def pack(self, pstr, winlist): - pstr = string.lower(pstr) - for item in string.split(pstr,';'): + pstr = pstr.lower() + for item in pstr.split(';'): m = self.rexp1.match(item) if m: g = list(m.groups()) @@ -159,8 +159,8 @@ time of this writing not documented. else: func(winlist[g[4]], cmp) def debug_pack(self, pstr, winlist): - pstr = string.lower(pstr) - for item in string.split(pstr,';'): + pstr = pstr.lower() + for item in pstr.split(';'): m = self.rexp1.match(item) if m: g = list(m.groups()) @@ -202,7 +202,7 @@ if __name__=='__main__': wxPyDefaultPosition, wxSize(500, 300)) EVT_CLOSE(self, self.OnCloseWindow) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_BUTTON(self, 100, self.OnButton) EVT_BUTTON(self, 101, self.OnAbout) @@ -234,7 +234,7 @@ if __name__=='__main__': wxStaticText(self.panelD, -1, "Panel D", wxPoint(4, 4)).SetBackgroundColour(wxGREEN) def OnButton(self, event): - self.Close(true) + self.Close(True) def OnAbout(self, event): try: diff --git a/wxPython/wxPython/lib/mixins/listctrl.py b/wxPython/wxPython/lib/mixins/listctrl.py index 1c70c12ce7..c422c17cad 100644 --- a/wxPython/wxPython/lib/mixins/listctrl.py +++ b/wxPython/wxPython/lib/mixins/listctrl.py @@ -11,6 +11,7 @@ #---------------------------------------------------------------------------- from wxPython.wx import * +import locale #---------------------------------------------------------------------------- @@ -105,7 +106,12 @@ class wxColumnSorterMixin: item1 = self.itemDataMap[key1][col] item2 = self.itemDataMap[key2][col] - cmpVal = cmp(item1, item2) + #--- Internationalization of string sorting with locale module + if type(item1) == type('') or type(item2) == type(''): + cmpVal = locale.strcoll(str(item1), str(item2)) + else: + cmpVal = cmp(item1, item2) + #--- # If the items are equal then pick something else to make the sort value unique if cmpVal == 0: @@ -132,137 +138,102 @@ class wxColumnSorterMixin: class wxListCtrlAutoWidthMixin: """ A mix-in class that automatically resizes the last column to take up - the remaining width of the wxListCtrl. + the remaining width of the wxListCtrl. - This causes the wxListCtrl to automatically take up the full width of - the list, without either a horizontal scroll bar (unless absolutely - necessary) or empty space to the right of the last column. + This causes the wxListCtrl to automatically take up the full width of + the list, without either a horizontal scroll bar (unless absolutely + necessary) or empty space to the right of the last column. - NOTE: This only works for report-style lists. + NOTE: This only works for report-style lists. - WARNING: If you override the EVT_SIZE event in your wxListCtrl, make - sure you call event.Skip() to ensure that the mixin's - _OnResize method is called. + WARNING: If you override the EVT_SIZE event in your wxListCtrl, make + sure you call event.Skip() to ensure that the mixin's + _OnResize method is called. - This mix-in class was written by Erik Westra <ewestra@wave.co.nz> + This mix-in class was written by Erik Westra <ewestra@wave.co.nz> """ def __init__(self): - """ Standard initialiser. - """ - self._needResize = false - self._lastColMinWidth = None + """ Standard initialiser. + """ + self._lastColMinWidth = None - EVT_SIZE(self, self._onResize) - EVT_LIST_COL_END_DRAG(self, self.GetId(), self._onEndColDrag) - EVT_IDLE(self, self._onIdle) + EVT_SIZE(self, self._onResize) + EVT_LIST_COL_END_DRAG(self, self.GetId(), self._onResize) def resizeLastColumn(self, minWidth): - """ Resize the last column appropriately. + """ Resize the last column appropriately. - If the list's columns are too wide to fit within the window, we use - a horizontal scrollbar. Otherwise, we expand the right-most column - to take up the remaining free space in the list. + If the list's columns are too wide to fit within the window, we use + a horizontal scrollbar. Otherwise, we expand the right-most column + to take up the remaining free space in the list. - This method is called automatically when the wxListCtrl is resized; - you can also call it yourself whenever you want the last column to - be resized appropriately (eg, when adding, removing or resizing - columns). + This method is called automatically when the wxListCtrl is resized; + you can also call it yourself whenever you want the last column to + be resized appropriately (eg, when adding, removing or resizing + columns). - 'minWidth' is the preferred minimum width for the last column. - """ - self._lastColMinWidth = minWidth - self._doResize() + 'minWidth' is the preferred minimum width for the last column. + """ + self._lastColMinWidth = minWidth + self._doResize() # ===================== # == Private Methods == # ===================== def _onResize(self, event): - """ Respond to the wxListCtrl being resized. + """ Respond to the wxListCtrl being resized. - We automatically resize the last column in the list. - """ - self._doResize() - event.Skip() - - def _onEndColDrag(self, event): - """ Respond to the user resizing one of our columns. - - We resize the last column in the list to match. Note that, because - of a quirk in the way columns are resized under MS Windows, we - actually have to do the column resize in idle time. - """ - self._needResize = true - event.Skip() - - - def _onIdle(self, event): - """ Respond to an idle event. - - We resize the last column, if we've been asked to do so. - """ - if self._needResize: - self._doResize() - self.Refresh() # Fixes redraw problem under MS Windows. - self._needResize = false + We automatically resize the last column in the list. + """ + wxCallAfter(self._doResize) event.Skip() def _doResize(self): - """ Resize the last column as appropriate. + """ Resize the last column as appropriate. - If the list's columns are too wide to fit within the window, we use - a horizontal scrollbar. Otherwise, we expand the right-most column - to take up the remaining free space in the list. + If the list's columns are too wide to fit within the window, we use + a horizontal scrollbar. Otherwise, we expand the right-most column + to take up the remaining free space in the list. - We remember the current size of the last column, before resizing, - as the preferred minimum width if we haven't previously been given - or calculated a minimum width. This ensure that repeated calls to - _doResize() don't cause the last column to size itself too large. - """ - numCols = self.GetColumnCount() - if numCols == 0: return # Nothing to resize. + We remember the current size of the last column, before resizing, + as the preferred minimum width if we haven't previously been given + or calculated a minimum width. This ensure that repeated calls to + _doResize() don't cause the last column to size itself too large. + """ + numCols = self.GetColumnCount() + if numCols == 0: return # Nothing to resize. - if self._lastColMinWidth == None: - self._lastColMinWidth = self.GetColumnWidth(numCols - 1) + if self._lastColMinWidth == None: + self._lastColMinWidth = self.GetColumnWidth(numCols - 1) - listWidth = self.GetSize().width - if self.GetItemCount() > self.GetCountPerPage(): - # We're showing the vertical scrollbar -> allow for scrollbar width - scrollWidth = wxSystemSettings_GetSystemMetric(wxSYS_VSCROLL_X) - listWidth = listWidth - scrollWidth + # We're showing the vertical scrollbar -> allow for scrollbar width + # NOTE: on GTK, the scrollbar is included in the client size, but on + # Windows it is not included + listWidth = self.GetClientSize().width + if wxPlatform != '__WXMSW__': + if self.GetItemCount() > self.GetCountPerPage(): + scrollWidth = wxSystemSettings_GetSystemMetric(wxSYS_VSCROLL_X) + listWidth = listWidth - scrollWidth - totColWidth = 0 # Width of all columns except last one. - for col in range(numCols-1): - totColWidth = totColWidth + self.GetColumnWidth(col) + totColWidth = 0 # Width of all columns except last one. + for col in range(numCols-1): + totColWidth = totColWidth + self.GetColumnWidth(col) - lastColWidth = self.GetColumnWidth(numCols - 1) + lastColWidth = self.GetColumnWidth(numCols - 1) - # NOTE: This is the extra number of pixels required to make the - # wxListCtrl size correctly, at least under Windows 2000. - # Unfortunately, different OSs and even different versions of the - # same OS may implement the wxListCtrl differently, so different - # margins may be needed to get the columns resized correctly. No - # doubt the margin could be calculated in a more intelligent - # manner... - if wxPlatform == '__WXMSW__': - margin = 6 - elif wxPlatform == '__WXGTK__': - margin = 8 - else: - margin = 0 + if totColWidth + self._lastColMinWidth > listWidth: + # We haven't got the width to show the last column at its minimum + # width -> set it to its minimum width and allow the horizontal + # scrollbar to show. + self.SetColumnWidth(numCols-1, self._lastColMinWidth) + return - if totColWidth + self._lastColMinWidth > listWidth - margin: - # We haven't got the width to show the last column at its minimum - # width -> set it to its minimum width and allow the horizontal - # scrollbar to show. - self.SetColumnWidth(numCols-1, self._lastColMinWidth) - return + # Resize the last column to take up the remaining available space. - # Resize the last column to take up the remaining available space. - - self.SetColumnWidth(numCols-1, listWidth - totColWidth - margin) + self.SetColumnWidth(numCols-1, listWidth - totColWidth) diff --git a/wxPython/wxPython/lib/mixins/rubberband.py b/wxPython/wxPython/lib/mixins/rubberband.py new file mode 100644 index 0000000000..f71dbf50a9 --- /dev/null +++ b/wxPython/wxPython/lib/mixins/rubberband.py @@ -0,0 +1,389 @@ +""" +A mixin class for doing "RubberBand"-ing on a window. + +by "Robb Shecter" <rs@onsitetech.com> + +$Id$ + +""" + +from wxPython.wx import * +import Image + +# +# Some miscellaneous mathematical and geometrical functions +# + +def isNegative(aNumber): + """ + x < 0: 1 + else: 0 + """ + return aNumber < 0 + + +def normalizeBox(box): + """ + Convert any negative measurements in the current + box to positive, and adjust the origin. + """ + x, y, w, h = box + if w < 0: + x += (w+1) + w *= -1 + if h < 0: + y += (h+1) + h *= -1 + return (x, y, w, h) + + +def boxToExtent(box): + """ + Convert a box specification to an extent specification. + I put this into a seperate function after I realized that + I had been implementing it wrong in several places. + """ + b = normalizeBox(box) + return (b[0], b[1], b[0]+b[2]-1, b[1]+b[3]-1) + + +def pointInBox(x, y, box): + """ + Return True if the given point is contained in the box. + """ + e = boxToExtent(box) + return x >= e[0] and x <= e[2] and y >= e[1] and y <= e[3] + + +def pointOnBox(x, y, box, thickness=1): + """ + Return True if the point is on the outside edge + of the box. The thickness defines how thick the + edge should be. This is necessary for HCI reasons: + For example, it's normally very difficult for a user + to manuever the mouse onto a one pixel border. + """ + outerBox = box + innerBox = (box[0]+thickness, box[1]+thickness, box[2]-(thickness*2), box[3]-(thickness*2)) + return pointInBox(x, y, outerBox) and not pointInBox(x, y, innerBox) + + +def getCursorPosition(x, y, box, thickness=1): + """ + Return a position number in the range 0 .. 7 to indicate + where on the box border the point is. The layout is: + + 0 1 2 + 7 3 + 6 5 4 + """ + x0, y0, x1, y1 = boxToExtent(box) + w, h = box[2], box[3] + delta = thickness - 1 + p = None + + if pointInBox(x, y, (x0, y0, thickness, thickness)): + p = 0 + elif pointInBox(x, y, (x1-delta, y0, thickness, thickness)): + p = 2 + elif pointInBox(x, y, (x1-delta, y1-delta, thickness, thickness)): + p = 4 + elif pointInBox(x, y, (x0, y1-delta, thickness, thickness)): + p = 6 + elif pointInBox(x, y, (x0+thickness, y0, w-(thickness*2), thickness)): + p = 1 + elif pointInBox(x, y, (x1-delta, y0+thickness, thickness, h-(thickness*2))): + p = 3 + elif pointInBox(x, y, (x0+thickness, y1-delta, w-(thickness*2), thickness)): + p = 5 + elif pointInBox(x, y, (x0, y0+thickness, thickness, h-(thickness*2))): + p = 7 + + return p + + + + +class RubberBand: + """ + A stretchable border which is drawn on top of an + image to define an area. + """ + def __init__(self, drawingSurface, aspectRatio=None): + self.__THICKNESS = 5 + self.drawingSurface = drawingSurface + self.aspectRatio = aspectRatio + self.hasLetUp = 0 + self.currentlyMoving = None + self.currentBox = None + self.__enabled = 1 + self.__currentCursor = None + EVT_MOUSE_EVENTS(drawingSurface, self.__handleMouseEvents) + EVT_PAINT(drawingSurface, self.__handleOnPaint) + + def __setEnabled(self, enabled): + self.__enabled = enabled + + def __isEnabled(self): + return self.__enabled + + def __handleOnPaint(self, event): + #print 'paint' + event.Skip() + + def __isMovingCursor(self): + """ + Return True if the current cursor is one used to + mean moving the rubberband. + """ + return self.__currentCursor == wxCURSOR_HAND + + def __isSizingCursor(self): + """ + Return True if the current cursor is one of the ones + I may use to signify sizing. + """ + sizingCursors = [wxCURSOR_SIZENESW, + wxCURSOR_SIZENS, + wxCURSOR_SIZENWSE, + wxCURSOR_SIZEWE, + wxCURSOR_SIZING, + wxCURSOR_CROSS] + try: + sizingCursors.index(self.__currentCursor) + return 1 + except ValueError: + return 0 + + + def __handleMouseEvents(self, event): + """ + React according to the new event. This is the main + entry point into the class. This method contains the + logic for the class's behavior. + """ + if not self.enabled: + return + + x, y = event.GetPosition() + + # First make sure we have started a box. + if self.currentBox == None and not event.LeftDown(): + # No box started yet. Set cursor to the initial kind. + self.__setCursor(wxCURSOR_CROSS) + return + + if event.LeftDown(): + if self.currentBox == None: + # No RB Box, so start a new one. + self.currentBox = (x, y, 0, 0) + self.hasLetUp = 0 + elif self.__isSizingCursor(): + # Starting a sizing operation. Change the origin. + position = getCursorPosition(x, y, self.currentBox, thickness=self.__THICKNESS) + self.currentBox = self.__denormalizeBox(position, self.currentBox) + + elif event.Dragging() and event.LeftIsDown(): + # Use the cursor type to determine operation + if self.__isMovingCursor(): + if self.currentlyMoving or pointInBox(x, y, self.currentBox): + if not self.currentlyMoving: + self.currentlyMoving = (x - self.currentBox[0], y - self.currentBox[1]) + self.__moveTo(x - self.currentlyMoving[0], y - self.currentlyMoving[1]) + elif self.__isSizingCursor(): + self.__resizeBox(x, y) + + elif event.LeftUp(): + self.hasLetUp = 1 + self.currentlyMoving = None + self.__normalizeBox() + + elif event.Moving() and not event.Dragging(): + # Simple mouse movement event + self.__mouseMoved(x,y) + + def __denormalizeBox(self, position, box): + x, y, w, h = box + b = box + if position == 2 or position == 3: + b = (x, y + (h-1), w, h * -1) + elif position == 0 or position == 1 or position == 7: + b = (x + (w-1), y + (h-1), w * -1, h * -1) + elif position == 6: + b = (x + (w-1), y, w * -1, h) + return b + + def __resizeBox(self, x, y): + """ + Resize and repaint the box based on the given mouse + coordinates. + """ + # Implement the correct behavior for dragging a side + # of the box: Only change one dimension. + if not self.aspectRatio: + if self.__currentCursor == wxCURSOR_SIZENS: + x = None + elif self.__currentCursor == wxCURSOR_SIZEWE: + y = None + + x0,y0,w0,h0 = self.currentBox + currentExtent = boxToExtent(self.currentBox) + if x == None: + if w0 < 1: + w0 += 1 + else: + w0 -= 1 + x = x0 + w0 + if y == None: + if h0 < 1: + h0 += 1 + else: + h0 -= 1 + y = y0 + h0 + x1,y1 = x, y + w, h = abs(x1-x0)+1, abs(y1-y0)+1 + if self.aspectRatio: + w = max(w, int(h * self.aspectRatio)) + h = int(w / self.aspectRatio) + w *= [1,-1][isNegative(x1-x0)] + h *= [1,-1][isNegative(y1-y0)] + newbox = (x0, y0, w, h) + self.__drawAndErase(boxToDraw=normalizeBox(newbox), boxToErase=normalizeBox(self.currentBox)) + self.currentBox = (x0, y0, w, h) + + def __normalizeBox(self): + """ + Convert any negative measurements in the current + box to positive, and adjust the origin. + """ + self.currentBox = normalizeBox(self.currentBox) + + def __mouseMoved(self, x, y): + """ + Called when the mouse moved without any buttons pressed + or dragging being done. + """ + # Are we on the bounding box? + if pointOnBox(x, y, self.currentBox, thickness=self.__THICKNESS): + position = getCursorPosition(x, y, self.currentBox, thickness=self.__THICKNESS) + cursor = [ + wxCURSOR_SIZENWSE, + wxCURSOR_SIZENS, + wxCURSOR_SIZENESW, + wxCURSOR_SIZEWE, + wxCURSOR_SIZENWSE, + wxCURSOR_SIZENS, + wxCURSOR_SIZENESW, + wxCURSOR_SIZEWE + ] [position] + self.__setCursor(cursor) + elif pointInBox(x, y, self.currentBox): + self.__setCursor(wxCURSOR_HAND) + else: + self.__setCursor() + + def __setCursor(self, id=None): + """ + Set the mouse cursor to the given id. + """ + if self.__currentCursor != id: # Avoid redundant calls + if id: + self.drawingSurface.SetCursor(wxStockCursor(id)) + else: + self.drawingSurface.SetCursor(wxNullCursor) + self.__currentCursor = id + + def __moveCenterTo(self, x, y): + """ + Move the rubber band so that its center is at (x,y). + """ + x0, y0, w, h = self.currentBox + x2, y2 = x - (w/2), y - (h/2) + self.__moveTo(x2, y2) + + def __moveTo(self, x, y): + """ + Move the rubber band so that its origin is at (x,y). + """ + newbox = (x, y, self.currentBox[2], self.currentBox[3]) + self.__drawAndErase(boxToDraw=newbox, boxToErase=self.currentBox) + self.currentBox = newbox + + def __drawAndErase(self, boxToDraw, boxToErase=None): + """ + Draw one box shape and possibly erase another. + """ + dc = wxClientDC(self.drawingSurface) + dc.BeginDrawing() + dc.SetPen(wxPen(wxWHITE, 1, wxDOT)) + dc.SetBrush(wxTRANSPARENT_BRUSH) + dc.SetLogicalFunction(wxXOR) + if boxToErase: + dc.DrawRectangle(*boxToErase) + dc.DrawRectangle(*boxToDraw) + dc.EndDrawing() + + def __dumpMouseEvent(self, event): + print 'Moving: ',event.Moving() + print 'Dragging: ',event.Dragging() + print 'LeftDown: ',event.LeftDown() + print 'LeftisDown: ',event.LeftIsDown() + print 'LeftUp: ',event.LeftUp() + print 'Position: ',event.GetPosition() + print 'x,y: ',event.GetX(),event.GetY() + print + + + # + # The public API: + # + + def reset(self, aspectRatio=None): + """ + Clear the existing rubberband + """ + self.currentBox = None + self.aspectRatio = aspectRatio + self.drawingSurface.Refresh() + + def getCurrentExtent(self): + """ + Return (x0, y0, x1, y1) or None if + no drawing has yet been done. + """ + if not self.currentBox: + extent = None + else: + extent = boxToExtent(self.currentBox) + return extent + + enabled = property(__isEnabled, __setEnabled, None, 'True if I am responding to mouse events') + + + +if __name__ == '__main__': + app = wxPySimpleApp() + frame = wxFrame(None, -1, title='RubberBand Test', size=(300,300)) + + # Add a panel that the rubberband will work on. + panel = wxPanel(frame, -1) + panel.SetBackgroundColour(wxBLUE) + + # Create the rubberband + frame.rubberBand = RubberBand(drawingSurface=panel) + frame.rubberBand.reset(aspectRatio=0.5) + + # Add a button that creates a new rubberband + def __newRubberBand(event): + frame.rubberBand.reset() + button = wxButton(frame, 100, 'Reset Rubberband') + EVT_BUTTON(frame, 100, __newRubberBand) + + # Layout the frame + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(panel, 1, wxEXPAND | wxALL, 5) + sizer.Add(button, 0, wxALIGN_CENTER | wxALL, 5) + frame.SetAutoLayout(1) + frame.SetSizer(sizer) + frame.Show(1) + app.MainLoop() diff --git a/wxPython/wxPython/lib/multisash.py b/wxPython/wxPython/lib/multisash.py new file mode 100644 index 0000000000..9f5602e5a6 --- /dev/null +++ b/wxPython/wxPython/lib/multisash.py @@ -0,0 +1,726 @@ +#---------------------------------------------------------------------- +# Name: multisash +# Purpose: Multi Sash control +# +# Author: Gerrit van Dyk +# +# Created: 2002/11/20 +# Version: 0.1 +# RCS-ID: $Id$ +# License: wxWindows licensie +#---------------------------------------------------------------------- + +from wxPython.wx import * + +MV_HOR = 0 +MV_VER = not MV_HOR + +SH_SIZE = 5 +CR_SIZE = SH_SIZE * 3 + +#---------------------------------------------------------------------- + +class wxMultiSash(wxWindow): + def __init__(self, *_args,**_kwargs): + apply(wxWindow.__init__,(self,) + _args,_kwargs) + self._defChild = EmptyChild + self.child = wxMultiSplit(self,self,wxPoint(0,0),self.GetSize()) + EVT_SIZE(self,self.OnMultiSize) + + def SetDefaultChildClass(self,childCls): + self._defChild = childCls + self.child.DefaultChildChanged() + + def OnMultiSize(self,evt): + self.child.SetSize(self.GetSize()) + + def UnSelect(self): + self.child.UnSelect() + + def Clear(self): + old = self.child + self.child = wxMultiSplit(self,self,wxPoint(0,0),self.GetSize()) + old.Destroy() + self.child.OnSize(None) + + def GetSaveData(self): + saveData = {} + saveData['_defChild'] = str(self._defChild) + saveData['child'] = self.child.GetSaveData() + return saveData + + def SetSaveData(self,data): + dChild = data['_defChild'] + mod = dChild.split('.')[0] + exec 'import %s' % mod + self._defChild = eval(dChild) + old = self.child + self.child = wxMultiSplit(self,self,wxPoint(0,0),self.GetSize()) + self.child.SetSaveData(data['child']) + old.Destroy() + self.OnMultiSize(None) + self.child.OnSize(None) + + +#---------------------------------------------------------------------- + + +class wxMultiSplit(wxWindow): + def __init__(self,multiView,parent,pos,size,view1 = None): + wxWindow.__init__(self,id = -1,parent = parent,pos = pos,size = size, + style = wxCLIP_CHILDREN) + self.multiView = multiView + self.view2 = None + if view1: + self.view1 = view1 + self.view1.Reparent(self) + self.view1.MoveXY(0,0) + else: + self.view1 = wxMultiViewLeaf(self.multiView,self, + wxPoint(0,0),self.GetSize()) + self.direction = None + + EVT_SIZE(self,self.OnSize) + + def GetSaveData(self): + saveData = {} + if self.view1: + saveData['view1'] = self.view1.GetSaveData() + if isinstance(self.view1,wxMultiSplit): + saveData['view1IsSplit'] = 1 + if self.view2: + saveData['view2'] = self.view2.GetSaveData() + if isinstance(self.view2,wxMultiSplit): + saveData['view2IsSplit'] = 1 + saveData['direction'] = self.direction + v1,v2 = self.GetPositionTuple() + saveData['x'] = v1 + saveData['y'] = v2 + v1,v2 = self.GetSizeTuple() + saveData['w'] = v1 + saveData['h'] = v2 + return saveData + + def SetSaveData(self,data): + self.direction = data['direction'] + self.SetDimensions(data['x'],data['y'],data['w'],data['h']) + v1Data = data.get('view1',None) + if v1Data: + isSplit = data.get('view1IsSplit',None) + old = self.view1 + if isSplit: + self.view1 = wxMultiSplit(self.multiView,self, + wxPoint(0,0),self.GetSize()) + else: + self.view1 = wxMultiViewLeaf(self.multiView,self, + wxPoint(0,0),self.GetSize()) + self.view1.SetSaveData(v1Data) + if old: + old.Destroy() + v2Data = data.get('view2',None) + if v2Data: + isSplit = data.get('view2IsSplit',None) + old = self.view2 + if isSplit: + self.view2 = wxMultiSplit(self.multiView,self, + wxPoint(0,0),self.GetSize()) + else: + self.view2 = wxMultiViewLeaf(self.multiView,self, + wxPoint(0,0),self.GetSize()) + self.view2.SetSaveData(v2Data) + if old: + old.Destroy() + if self.view1: + self.view1.OnSize(None) + if self.view2: + self.view2.OnSize(None) + + def UnSelect(self): + if self.view1: + self.view1.UnSelect() + if self.view2: + self.view2.UnSelect() + + def DefaultChildChanged(self): + if not self.view2: + self.view1.DefaultChildChanged() + + def AddLeaf(self,direction,caller,pos): + if self.view2: + if caller == self.view1: + self.view1 = wxMultiSplit(self.multiView,self, + caller.GetPosition(), + caller.GetSize(), + caller) + self.view1.AddLeaf(direction,caller,pos) + else: + self.view2 = wxMultiSplit(self.multiView,self, + caller.GetPosition(), + caller.GetSize(), + caller) + self.view2.AddLeaf(direction,caller,pos) + else: + self.direction = direction + w,h = self.GetSizeTuple() + if direction == MV_HOR: + x,y = (pos,0) + w1,h1 = (w-pos,h) + w2,h2 = (pos,h) + else: + x,y = (0,pos) + w1,h1 = (w,h-pos) + w2,h2 = (w,pos) + self.view2 = wxMultiViewLeaf(self.multiView,self, + wxPoint(x,y),wxSize(w1,h1)) + self.view1.SetSize(wxSize(w2,h2)) + self.view2.OnSize(None) + + def DestroyLeaf(self,caller): + if not self.view2: # We will only have 2 windows if + return # we need to destroy any + parent = self.GetParent() # Another splitview + if parent == self.multiView: # We'r at the root + if caller == self.view1: + old = self.view1 + self.view1 = self.view2 + self.view2 = None + old.Destroy() + else: + self.view2.Destroy() + self.view2 = None + self.view1.SetSize(self.GetSize()) + self.view1.Move(self.GetPosition()) + else: + w,h = self.GetSizeTuple() + x,y = self.GetPositionTuple() + if caller == self.view1: + if self == parent.view1: + parent.view1 = self.view2 + else: + parent.view2 = self.view2 + self.view2.Reparent(parent) + self.view2.SetDimensions(x,y,w,h) + else: + if self == parent.view1: + parent.view1 = self.view1 + else: + parent.view2 = self.view1 + self.view1.Reparent(parent) + self.view1.SetDimensions(x,y,w,h) + self.view1 = None + self.view2 = None + self.Destroy() + + def CanSize(self,side,view): + if self.SizeTarget(side,view): + return True + return False + + def SizeTarget(self,side,view): + if self.direction == side and self.view2 and view == self.view1: + return self + parent = self.GetParent() + if parent != self.multiView: + return parent.SizeTarget(side,self) + return None + + def SizeLeaf(self,leaf,pos,side): + if self.direction != side: + return + if not (self.view1 and self.view2): + return + if pos < 10: return + w,h = self.GetSizeTuple() + if side == MV_HOR: + if pos > w - 10: return + else: + if pos > h - 10: return + if side == MV_HOR: + self.view1.SetDimensions(0,0,pos,h) + self.view2.SetDimensions(pos,0,w-pos,h) + else: + self.view1.SetDimensions(0,0,w,pos) + self.view2.SetDimensions(0,pos,w,h-pos) + + def OnSize(self,evt): + if not self.view2: + self.view1.SetSize(self.GetSize()) + self.view1.OnSize(None) + return + v1w,v1h = self.view1.GetSizeTuple() + v2w,v2h = self.view2.GetSizeTuple() + v1x,v1y = self.view1.GetPositionTuple() + v2x,v2y = self.view2.GetPositionTuple() + w,h = self.GetSizeTuple() + + if v1x != v2x: + ratio = float(w) / float((v1w + v2w)) + v1w *= ratio + v2w = w - v1w + v2x = v1w + else: + v1w = v2w = w + + if v1y != v2y: + ratio = float(h) / float((v1h + v2h)) + v1h *= ratio + v2h = h - v1h + v2y = v1h + else: + v1h = v2h = h + + self.view1.SetDimensions(v1x,v1y,v1w,v1h) + self.view2.SetDimensions(v2x,v2y,v2w,v2h) + self.view1.OnSize(None) + self.view2.OnSize(None) + + +#---------------------------------------------------------------------- + + +class wxMultiViewLeaf(wxWindow): + def __init__(self,multiView,parent,pos,size): + wxWindow.__init__(self,id = -1,parent = parent,pos = pos,size = size, + style = wxCLIP_CHILDREN) + self.multiView = multiView + + self.sizerHor = MultiSizer(self,MV_HOR) + self.sizerVer = MultiSizer(self,MV_VER) + self.creatorHor = MultiCreator(self,MV_HOR) + self.creatorVer = MultiCreator(self,MV_VER) + self.detail = MultiClient(self,multiView._defChild) + self.closer = MultiCloser(self) + + EVT_SIZE(self,self.OnSize) + + def GetSaveData(self): + saveData = {} + saveData['detailClass'] = str(self.detail.child.__class__) + if hasattr(self.detail.child,'GetSaveData'): + attr = getattr(self.detail.child,'GetSaveData') + if callable(attr): + dData = attr() + if dData: + saveData['detail'] = dData + v1,v2 = self.GetPositionTuple() + saveData['x'] = v1 + saveData['y'] = v2 + v1,v2 = self.GetSizeTuple() + saveData['w'] = v1 + saveData['h'] = v2 + return saveData + + def SetSaveData(self,data): + dChild = data['detailClass'] + mod = dChild.split('.')[0] + exec 'import %s' % mod + detClass = eval(dChild) + self.SetDimensions(data['x'],data['y'],data['w'],data['h']) + old = self.detail + self.detail = MultiClient(self,detClass) + dData = data.get('detail',None) + if dData: + if hasattr(self.detail.child,'SetSaveData'): + attr = getattr(self.detail.child,'SetSaveData') + if callable(attr): + attr(dData) + old.Destroy() + self.detail.OnSize(None) + + def UnSelect(self): + self.detail.UnSelect() + + def DefaultChildChanged(self): + self.detail.SetNewChildCls(self.multiView._defChild) + + def AddLeaf(self,direction,pos): + if pos < 10: return + w,h = self.GetSizeTuple() + if direction == MV_VER: + if pos > h - 10: return + else: + if pos > w - 10: return + self.GetParent().AddLeaf(direction,self,pos) + + def DestroyLeaf(self): + self.GetParent().DestroyLeaf(self) + + def SizeTarget(self,side): + return self.GetParent().SizeTarget(side,self) + + def CanSize(self,side): + return self.GetParent().CanSize(side,self) + + def OnSize(self,evt): + self.sizerHor.OnSize(evt) + self.sizerVer.OnSize(evt) + self.creatorHor.OnSize(evt) + self.creatorVer.OnSize(evt) + self.detail.OnSize(evt) + self.closer.OnSize(evt) + +#---------------------------------------------------------------------- + + +class MultiClient(wxWindow): + def __init__(self,parent,childCls): + w,h = self.CalcSize(parent) + wxWindow.__init__(self,id = -1,parent = parent, + pos = wxPoint(0,0), + size = wxSize(w,h), + style = wxCLIP_CHILDREN | wxSUNKEN_BORDER) + self.child = childCls(self) + self.child.MoveXY(2,2) + self.normalColour = self.GetBackgroundColour() + self.selected = False + + EVT_SET_FOCUS(self,self.OnSetFocus) + EVT_CHILD_FOCUS(self,self.OnChildFocus) + + def UnSelect(self): + if self.selected: + self.selected = False + self.SetBackgroundColour(self.normalColour) + self.Refresh() + + def Select(self): + self.GetParent().multiView.UnSelect() + self.selected = True + self.SetBackgroundColour(wxColour(255,255,0)) # Yellow + self.Refresh() + + def CalcSize(self,parent): + w,h = parent.GetSizeTuple() + w -= SH_SIZE + h -= SH_SIZE + return (w,h) + + def OnSize(self,evt): + w,h = self.CalcSize(self.GetParent()) + self.SetDimensions(0,0,w,h) + w,h = self.GetClientSizeTuple() + self.child.SetSize(wxSize(w-4,h-4)) + + def SetNewChildCls(self,childCls): + if self.child: + self.child.Destroy() + self.child = None + self.child = childCls(self) + self.child.MoveXY(2,2) + + def OnSetFocus(self,evt): + self.Select() + + def OnChildFocus(self,evt): + self.OnSetFocus(evt) +## from Funcs import FindFocusedChild +## child = FindFocusedChild(self) +## EVT_KILL_FOCUS(child,self.OnChildKillFocus) + + +#---------------------------------------------------------------------- + + +class MultiSizer(wxWindow): + def __init__(self,parent,side): + self.side = side + x,y,w,h = self.CalcSizePos(parent) + wxWindow.__init__(self,id = -1,parent = parent, + pos = wxPoint(x,y), + size = wxSize(w,h), + style = wxCLIP_CHILDREN) + + self.px = None # Previous X + self.py = None # Previous Y + self.isDrag = False # In Dragging + self.dragTarget = None # View being sized + + EVT_LEAVE_WINDOW(self,self.OnLeave) + EVT_ENTER_WINDOW(self,self.OnEnter) + EVT_MOTION(self,self.OnMouseMove) + EVT_LEFT_DOWN(self,self.OnPress) + EVT_LEFT_UP(self,self.OnRelease) + + def CalcSizePos(self,parent): + pw,ph = parent.GetSizeTuple() + if self.side == MV_HOR: + x = CR_SIZE + 2 + y = ph - SH_SIZE + w = pw - CR_SIZE - SH_SIZE - 2 + h = SH_SIZE + else: + x = pw - SH_SIZE + y = CR_SIZE + 2 + SH_SIZE + w = SH_SIZE + h = ph - CR_SIZE - SH_SIZE - 4 - SH_SIZE # For Closer + return (x,y,w,h) + + def OnSize(self,evt): + x,y,w,h = self.CalcSizePos(self.GetParent()) + self.SetDimensions(x,y,w,h) + + def OnLeave(self,evt): + self.SetCursor(wxStockCursor(wxCURSOR_ARROW)) + + def OnEnter(self,evt): + if not self.GetParent().CanSize(not self.side): + return + if self.side == MV_HOR: + self.SetCursor(wxStockCursor(wxCURSOR_SIZENS)) + else: + self.SetCursor(wxStockCursor(wxCURSOR_SIZEWE)) + + def OnMouseMove(self,evt): + if self.isDrag: + DrawSash(self.dragTarget,self.px,self.py,self.side) + self.px,self.py = self.ClientToScreenXY(evt.m_x,evt.m_y) + self.px,self.py = self.dragTarget.ScreenToClientXY(self.px,self.py) + DrawSash(self.dragTarget,self.px,self.py,self.side) + else: + evt.Skip() + + def OnPress(self,evt): + self.dragTarget = self.GetParent().SizeTarget(not self.side) + if self.dragTarget: + self.isDrag = True + self.px,self.py = self.ClientToScreenXY(evt.m_x,evt.m_y) + self.px,self.py = self.dragTarget.ScreenToClientXY(self.px,self.py) + DrawSash(self.dragTarget,self.px,self.py,self.side) + self.CaptureMouse() + else: + evt.Skip() + + def OnRelease(self,evt): + if self.isDrag: + DrawSash(self.dragTarget,self.px,self.py,self.side) + self.ReleaseMouse() + self.isDrag = False + if self.side == MV_HOR: + self.dragTarget.SizeLeaf(self.GetParent(), + self.py,not self.side) + else: + self.dragTarget.SizeLeaf(self.GetParent(), + self.px,not self.side) + self.dragTarget = None + else: + evt.Skip() + +#---------------------------------------------------------------------- + + +class MultiCreator(wxWindow): + def __init__(self,parent,side): + self.side = side + x,y,w,h = self.CalcSizePos(parent) + wxWindow.__init__(self,id = -1,parent = parent, + pos = wxPoint(x,y), + size = wxSize(w,h), + style = wxCLIP_CHILDREN) + + self.px = None # Previous X + self.py = None # Previous Y + self.isDrag = False # In Dragging + + EVT_LEAVE_WINDOW(self,self.OnLeave) + EVT_ENTER_WINDOW(self,self.OnEnter) + EVT_MOTION(self,self.OnMouseMove) + EVT_LEFT_DOWN(self,self.OnPress) + EVT_LEFT_UP(self,self.OnRelease) + EVT_PAINT(self,self.OnPaint) + + def CalcSizePos(self,parent): + pw,ph = parent.GetSizeTuple() + if self.side == MV_HOR: + x = 2 + y = ph - SH_SIZE + w = CR_SIZE + h = SH_SIZE + else: + x = pw - SH_SIZE + y = 4 + SH_SIZE # Make provision for closer + w = SH_SIZE + h = CR_SIZE + return (x,y,w,h) + + def OnSize(self,evt): + x,y,w,h = self.CalcSizePos(self.GetParent()) + self.SetDimensions(x,y,w,h) + + def OnLeave(self,evt): + self.SetCursor(wxStockCursor(wxCURSOR_ARROW)) + + def OnEnter(self,evt): + if self.side == MV_HOR: + self.SetCursor(wxStockCursor(wxCURSOR_HAND)) + else: + self.SetCursor(wxStockCursor(wxCURSOR_POINT_LEFT)) + + def OnMouseMove(self,evt): + if self.isDrag: + parent = self.GetParent() + DrawSash(parent,self.px,self.py,self.side) + self.px,self.py = self.ClientToScreenXY(evt.m_x,evt.m_y) + self.px,self.py = parent.ScreenToClientXY(self.px,self.py) + DrawSash(parent,self.px,self.py,self.side) + else: + evt.Skip() + + def OnPress(self,evt): + self.isDrag = True + parent = self.GetParent() + self.px,self.py = self.ClientToScreenXY(evt.m_x,evt.m_y) + self.px,self.py = parent.ScreenToClientXY(self.px,self.py) + DrawSash(parent,self.px,self.py,self.side) + self.CaptureMouse() + + def OnRelease(self,evt): + if self.isDrag: + parent = self.GetParent() + DrawSash(parent,self.px,self.py,self.side) + self.ReleaseMouse() + self.isDrag = False + + if self.side == MV_HOR: + parent.AddLeaf(MV_VER,self.py) + else: + parent.AddLeaf(MV_HOR,self.px) + else: + evt.Skip() + + def OnPaint(self,evt): + dc = wxPaintDC(self) + dc.SetBackground(wxBrush(self.GetBackgroundColour(),wxSOLID)) + dc.Clear() + + highlight = wxPen(wxSystemSettings_GetSystemColour( + wxSYS_COLOUR_BTNHIGHLIGHT),1,wxSOLID) + shadow = wxPen(wxSystemSettings_GetSystemColour( + wxSYS_COLOUR_BTNSHADOW),1,wxSOLID) + black = wxPen(wxBLACK,1,wxSOLID) + w,h = self.GetSizeTuple() + w -= 1 + h -= 1 + + # Draw outline + dc.SetPen(highlight) + dc.DrawLine(0,0,0,h) + dc.DrawLine(0,0,w,0) + dc.SetPen(black) + dc.DrawLine(0,h,w+1,h) + dc.DrawLine(w,0,w,h) + dc.SetPen(shadow) + dc.DrawLine(w-1,2,w-1,h) + +#---------------------------------------------------------------------- + + +class MultiCloser(wxWindow): + def __init__(self,parent): + x,y,w,h = self.CalcSizePos(parent) + wxWindow.__init__(self,id = -1,parent = parent, + pos = wxPoint(x,y), + size = wxSize(w,h), + style = wxCLIP_CHILDREN) + + self.down = False + self.entered = False + + EVT_LEFT_DOWN(self,self.OnPress) + EVT_LEFT_UP(self,self.OnRelease) + EVT_PAINT(self,self.OnPaint) + EVT_LEAVE_WINDOW(self,self.OnLeave) + EVT_ENTER_WINDOW(self,self.OnEnter) + + def OnLeave(self,evt): + self.SetCursor(wxStockCursor(wxCURSOR_ARROW)) + self.entered = False + + def OnEnter(self,evt): + self.SetCursor(wxStockCursor(wxCURSOR_BULLSEYE)) + self.entered = True + + def OnPress(self,evt): + self.down = True + evt.Skip() + + def OnRelease(self,evt): + if self.down and self.entered: + self.GetParent().DestroyLeaf() + else: + evt.Skip() + self.down = False + + def OnPaint(self,evt): + dc = wxPaintDC(self) + dc.SetBackground(wxBrush(wxRED,wxSOLID)) + dc.Clear() + + def CalcSizePos(self,parent): + pw,ph = parent.GetSizeTuple() + x = pw - SH_SIZE + w = SH_SIZE + h = SH_SIZE + 2 + y = 1 + return (x,y,w,h) + + def OnSize(self,evt): + x,y,w,h = self.CalcSizePos(self.GetParent()) + self.SetDimensions(x,y,w,h) + + +#---------------------------------------------------------------------- + + +class EmptyChild(wxWindow): + def __init__(self,parent): + wxWindow.__init__(self,parent,-1, style = wxCLIP_CHILDREN) + + +#---------------------------------------------------------------------- + + +def DrawSash(win,x,y,direction): + dc = wxScreenDC() + dc.StartDrawingOnTopWin(win) + bmp = wxEmptyBitmap(8,8) + bdc = wxMemoryDC() + bdc.SelectObject(bmp) + bdc.DrawRectangle(-1,-1,10,10) + for i in range(8): + for j in range(8): + if ((i + j) & 1): + bdc.DrawPoint(i,j) + + brush = wxBrush(wxColour(0,0,0)) + brush.SetStipple(bmp) + + dc.SetBrush(brush) + dc.SetLogicalFunction(wxXOR) + + body_w,body_h = win.GetClientSizeTuple() + + if y < 0: + y = 0 + if y > body_h: + y = body_h + if x < 0: + x = 0 + if x > body_w: + x = body_w + + if direction == MV_HOR: + x = 0 + else: + y = 0 + + x,y = win.ClientToScreenXY(x,y) + + w = body_w + h = body_h + + if direction == MV_HOR: + dc.DrawRectangle(x,y-2,w,4) + else: + dc.DrawRectangle(x-2,y,4,h) + + dc.EndDrawingOnTop() diff --git a/wxPython/wxPython/lib/mvctree.py b/wxPython/wxPython/lib/mvctree.py index b00eaa3c09..cdf05f7ada 100644 --- a/wxPython/wxPython/lib/mvctree.py +++ b/wxPython/wxPython/lib/mvctree.py @@ -47,9 +47,9 @@ class MVCTreeNode: if self.kids is None: self.kids = [] self.data = data - self.expanded = false - self.selected = false - self.built = false + self.expanded = False + self.selected = False + self.built = False self.scale = 0 def GetChildren(self): @@ -136,7 +136,7 @@ class Painter: self.bgcolor = wxNamedColour("WHITE") self.fgcolor = wxNamedColour("BLUE") self.linecolor = wxNamedColour("GREY") - self.font = wxFont(9, wxDEFAULT, wxNORMAL, wxNORMAL, false) + self.font = wxFont(9, wxDEFAULT, wxNORMAL, wxNORMAL, False) self.bmp = None def GetFont(self): @@ -239,10 +239,10 @@ class wxTreeModel: raise NotImplementedError def IsEditable(self, node): - return false + return False def SetEditable(self, node): - return false + return False class NodePainter: """ @@ -330,10 +330,10 @@ class BasicTreeModel(wxTreeModel): return not self.children.has_key(node) def IsEditable(self, node): - return false + return False def SetEditable(self, node, bool): - return false + return False class FileEditor(Editor): @@ -374,9 +374,9 @@ class FileEditor(Editor): def _key(self, evt): if evt.KeyCode() == WXK_RETURN: - self.EndEdit(true) + self.EndEdit(True) elif evt.KeyCode() == WXK_ESCAPE: - self.EndEdit(false) + self.EndEdit(False) else: evt.Skip() @@ -385,7 +385,7 @@ class FileEditor(Editor): pos = evt.GetPosition() edsize = self.editcomp.GetSize() if pos.x < 0 or pos.y < 0 or pos.x > edsize.width or pos.y > edsize.height: - self.EndEdit(false) + self.EndEdit(False) class FileWrapper: @@ -405,11 +405,10 @@ class FSTreeModel(BasicTreeModel): """ def __init__(self, path): BasicTreeModel.__init__(self) - import string - fw = FileWrapper(path, string.split(path, os.sep)[-1]) + fw = FileWrapper(path, path.split(os.sep)[-1]) self._Build(path, fw) self.SetRoot(fw) - self._editable = true + self._editable = True def _Build(self, path, fileWrapper): for name in os.listdir(path): fw = FileWrapper(path, name) @@ -431,13 +430,12 @@ class LateFSTreeModel(FSTreeModel): """ def __init__(self, path): BasicTreeModel.__init__(self) - import string - name = string.split(path, os.sep)[-1] + name = path.split(os.sep)[-1] pathpart = path[:-len(name)] fw = FileWrapper(pathpart, name) self._Build(path, fw) self.SetRoot(fw) - self._editable = true + self._editable = True self.children = {} self.parents = {} def _Build(self, path, parent): @@ -496,8 +494,8 @@ class Rect: if other.y >= self.y: if other.width + other.x <= self.width + self.x: if other.height + other.y <= self.height + self.y: - return true - return false + return True + return False def __str__(self): return "Rect: " + str([self.x, self.y, self.width, self.height]) @@ -616,7 +614,7 @@ class TreePainter(Painter): if node.expanded: for kid in node.kids: if not self.paintWalk(kid, dc, paintRects): - return false + return False for kid in node.kids: px = (kid.projx - self.tree.layout.NODE_STEP) + 5 py = kid.projy + kid.height/2 @@ -640,7 +638,7 @@ class TreePainter(Painter): if not node.expanded: dc.DrawLine(px, py -2, px, py + 3) dc.DrawLine(px -2, py, px + 3, py) - return true + return True def OnMouse(self, evt): Painter.OnMouse(self, evt) @@ -752,12 +750,12 @@ class wxMVCTree(wxScrolledWindow): painter = None, *args, **kwargs): apply(wxScrolledWindow.__init__, (self, parent, id), kwargs) self.nodemap = {} - self._multiselect = false + self._multiselect = False self._selections = [] - self._assumeChildren = false - self._scrollx = false - self._scrolly = false - self.doubleBuffered = false + self._assumeChildren = False + self._scrollx = False + self._scrolly = False + self.doubleBuffered = False self._lastPhysicalSize = self.GetSize() self._editors = [] if not model: @@ -773,10 +771,10 @@ class wxMVCTree(wxScrolledWindow): if not painter: painter = TreePainter(self) self.painter = painter - self.SetFont(wxFont(9, wxDEFAULT, wxNORMAL, wxNORMAL, false)) + self.SetFont(wxFont(9, wxDEFAULT, wxNORMAL, wxNORMAL, False)) EVT_MOUSE_EVENTS(self, self.OnMouse) EVT_KEY_DOWN(self, self.OnKeyDown) - self.doubleBuffered = true + self.doubleBuffered = True EVT_SIZE(self, self.OnSize) EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) EVT_PAINT(self, self.OnPaint) @@ -785,7 +783,7 @@ class wxMVCTree(wxScrolledWindow): def Refresh(self): if self.doubleBuffered: self.painter.ClearBuffer() - wxScrolledWindow.Refresh(self, false) + wxScrolledWindow.Refresh(self, False) def GetPainter(self): return self.painter @@ -876,7 +874,7 @@ class wxMVCTree(wxScrolledWindow): self._selections = [] self.layoutRoot = MVCTreeNode() self.layoutRoot.data = self.model.GetRoot() - self.layoutRoot.expanded = true + self.layoutRoot.expanded = True self.LoadChildren(self.layoutRoot) self.currentRoot = self.layoutRoot self.offset = [0,0] @@ -897,7 +895,7 @@ class wxMVCTree(wxScrolledWindow): layoutNode.Add(p) p.data = self.GetModel().GetChildAt(layoutNode.data, i) self.nodemap[p.data]=p - layoutNode.built = true + layoutNode.built = True if not self._assumeChildren: for kid in layoutNode.kids: self.LoadChildren(kid) @@ -925,10 +923,10 @@ class wxMVCTree(wxScrolledWindow): return for node in nodeTuple: treenode = self.nodemap[node] - treenode.selected = true + treenode.selected = True for node in self._selections: treenode = self.nodemap[node] - node.selected = false + node.selected = False self._selections = list(nodeTuple) e = wxMVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), nodeTuple[0], nodes = nodeTuple) self.GetEventHandler().ProcessEvent(e) @@ -964,9 +962,9 @@ class wxMVCTree(wxScrolledWindow): e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_END_EDIT, self.GetId(), node) self.GetEventHandler().ProcessEvent(e) if not e.notify.IsAllowed(): - return false + return False self._currentEditor = None - return true + return True def SetExpanded(self, node, bool): @@ -997,7 +995,7 @@ class wxMVCTree(wxScrolledWindow): def IsExpanded(self, node): return self.nodemap[node].expanded - def AddToSelection(self, nodeOrTuple, enableMulti = true, shiftMulti = false): + def AddToSelection(self, nodeOrTuple, enableMulti = True, shiftMulti = False): nodeTuple = nodeOrTuple if type(nodeOrTuple)!= type(()): nodeTuple = (nodeOrTuple,) @@ -1009,13 +1007,13 @@ class wxMVCTree(wxScrolledWindow): if not (self.IsMultiSelect() and (enableMulti or shiftMulti)): for node in self._selections: treenode = self.nodemap[node] - treenode.selected = false + treenode.selected = False changeparents.append(treenode) node = nodeTuple[0] self._selections = [node] treenode = self.nodemap[node] changeparents.append(treenode) - treenode.selected = true + treenode.selected = True else: if shiftMulti: for node in nodeTuple: @@ -1026,11 +1024,11 @@ class wxMVCTree(wxScrolledWindow): for kid in oldtreenode.parent.kids: if kid == treenode or kid == oldtreenode: found = not found - kid.selected = true + kid.selected = True self._selections.append(kid.data) changeparents.append(kid) elif found: - kid.selected = true + kid.selected = True self._selections.append(kid.data) changeparents.append(kid) else: @@ -1040,7 +1038,7 @@ class wxMVCTree(wxScrolledWindow): except ValueError: self._selections.append(node) treenode = self.nodemap[node] - treenode.selected = true + treenode.selected = True changeparents.append(treenode) e = wxMVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), nodeTuple[0], nodes = nodeTuple) self.GetEventHandler().ProcessEvent(e) @@ -1059,7 +1057,7 @@ class wxMVCTree(wxScrolledWindow): self._selections.remove(node) treenode = self.nodemap[node] changeparents.append(treenode) - treenode.selected = false + treenode.selected = False e = wxMVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), node, nodes = nodeTuple) self.GetEventHandler().ProcessEvent(e) dc = wxClientDC(self) @@ -1103,14 +1101,14 @@ class wxMVCTree(wxScrolledWindow): to paint the control. """ try: - self.EnableScrolling(false, false) + self.EnableScrolling(False, False) if not self.laidOut: self.layout.Layout(self.currentRoot) - self.laidOut = true - self.transformed = false + self.laidOut = True + self.transformed = False if not self.transformed: self.transform.Transform(self.currentRoot, self.offset, self.rotation) - self.transformed = true + self.transformed = True tsize = None tsize = list(self.transform.GetSize()) tsize[0] = tsize[0] + 50 diff --git a/wxPython/wxPython/lib/popupctl.py b/wxPython/wxPython/lib/popupctl.py new file mode 100644 index 0000000000..466e06f77d --- /dev/null +++ b/wxPython/wxPython/lib/popupctl.py @@ -0,0 +1,243 @@ +#---------------------------------------------------------------------- +# Name: popup +# Purpose: Generic popup control +# +# Author: Gerrit van Dyk +# +# Created: 2002/11/20 +# Version: 0.1 +# RCS-ID: $Id$ +# License: wxWindows license +#---------------------------------------------------------------------- + +from wxPython.wx import * +from wxPython.lib.buttons import wxGenButtonEvent + + +class PopButton(wxPyControl): + def __init__(self,*_args,**_kwargs): + apply(wxPyControl.__init__,(self,) + _args,_kwargs) + + self.up = True + self.didDown = False + + self.InitColours() + + EVT_LEFT_DOWN(self, self.OnLeftDown) + EVT_LEFT_UP(self, self.OnLeftUp) + EVT_MOTION(self, self.OnMotion) + EVT_PAINT(self, self.OnPaint) + + def InitColours(self): + faceClr = wxSystemSettings_GetSystemColour(wxSYS_COLOUR_BTNFACE) + self.faceDnClr = faceClr + self.SetBackgroundColour(faceClr) + + shadowClr = wxSystemSettings_GetSystemColour(wxSYS_COLOUR_BTNSHADOW) + highlightClr = wxSystemSettings_GetSystemColour(wxSYS_COLOUR_BTNHIGHLIGHT) + self.shadowPen = wxPen(shadowClr, 1, wxSOLID) + self.highlightPen = wxPen(highlightClr, 1, wxSOLID) + self.blackPen = wxPen(wxBLACK, 1, wxSOLID) + + def Notify(self): + evt = wxGenButtonEvent(wxEVT_COMMAND_BUTTON_CLICKED, self.GetId()) + evt.SetIsDown(not self.up) + evt.SetButtonObj(self) + evt.SetEventObject(self) + self.GetEventHandler().ProcessEvent(evt) + + def OnEraseBackground(self, event): + pass + + def OnLeftDown(self, event): + if not self.IsEnabled(): + return + self.didDown = True + self.up = False + self.CaptureMouse() + self.GetParent().textCtrl.SetFocus() + self.Refresh() + event.Skip() + + def OnLeftUp(self, event): + if not self.IsEnabled(): + return + if self.didDown: + self.ReleaseMouse() + if not self.up: + self.Notify() + self.up = True + self.Refresh() + self.didDown = False + event.Skip() + + def OnMotion(self, event): + if not self.IsEnabled(): + return + if event.LeftIsDown(): + if self.didDown: + x,y = event.GetPositionTuple() + w,h = self.GetClientSizeTuple() + if self.up and x<w and x>=0 and y<h and y>=0: + self.up = False + self.Refresh() + return + if not self.up and (x<0 or y<0 or x>=w or y>=h): + self.up = True + self.Refresh() + return + event.Skip() + + def DrawBezel(self, dc, x1, y1, x2, y2): + # draw the upper left sides + if self.up: + dc.SetPen(self.highlightPen) + else: + dc.SetPen(self.shadowPen) + for i in range(2): + dc.DrawLine(x1+i, y1, x1+i, y2-i) + dc.DrawLine(x1, y1+i, x2-i, y1+i) + + # draw the lower right sides + if self.up: + dc.SetPen(self.shadowPen) + else: + dc.SetPen(self.highlightPen) + for i in range(2): + dc.DrawLine(x1+i, y2-i, x2+1, y2-i) + dc.DrawLine(x2-i, y1+i, x2-i, y2) + + def DrawArrow(self,dc): + size = self.GetSize() + mx = size.x / 2 + my = size.y / 2 + dc.SetPen(self.highlightPen) + dc.DrawLine(mx-5,my-5,mx+5,my-5) + dc.DrawLine(mx-5,my-5,mx,my+5) + dc.SetPen(self.shadowPen) + dc.DrawLine(mx+4,my-5,mx,my+5) + dc.SetPen(self.blackPen) + dc.DrawLine(mx+5,my-5,mx,my+5) + + def OnPaint(self, event): + width, height = self.GetClientSizeTuple() + x1 = y1 = 0 + x2 = width - 1 + y2 = height - 1 + dc = wxBufferedPaintDC(self) + if self.up: + dc.SetBackground(wxBrush(self.GetBackgroundColour(), wxSOLID)) + else: + dc.SetBackground(wxBrush(self.faceDnClr, wxSOLID)) + dc.Clear() + self.DrawBezel(dc, x1, y1, x2, y2) + self.DrawArrow(dc) + + +#--------------------------------------------------------------------------- + + +# Tried to use wxPopupWindow but the control misbehaves on MSW +class wxPopupDialog(wxDialog): + def __init__(self,parent,content = None): + wxDialog.__init__(self,parent,-1,'', style = wxSTAY_ON_TOP) + + self.ctrl = parent + self.win = wxWindow(self,-1,pos = wxPoint(0,0),style = 0) + + if content: + self.SetContent(content) + + def SetContent(self,content): + self.content = content + self.content.Reparent(self.win) + self.content.Show(True) + self.win.SetClientSize(self.content.GetSize()) + self.SetSize(self.win.GetSize()) + + def Display(self): + pos = self.ctrl.ClientToScreen( (0,0) ) + dSize = wxGetDisplaySize() + selfSize = self.GetSize() + tcSize = self.ctrl.GetSize() + + pos.x -= (selfSize.x - tcSize.x) / 2 + if pos.x + selfSize.x > dSize.x: + pos.x = dSize.x - selfSize.x + if pos.x < 0: + pos.x = 0 + + pos.y += tcSize.height + if pos.y + selfSize.y > dSize.y: + pos.y = dSize.y - selfSize.y + if pos.y < 0: + pos.y = 0 + + self.MoveXY(pos.x,pos.y) + + self.ctrl.FormatContent() + + self.ShowModal() + + +#--------------------------------------------------------------------------- + + +class wxPopupControl(wxPyControl): + def __init__(self,*_args,**_kwargs): + if _kwargs.has_key('value'): + del _kwargs['value'] + apply(wxPyControl.__init__,(self,) + _args,_kwargs) + + self.textCtrl = wxTextCtrl(self,-1,'',pos = wxPoint(0,0)) + self.bCtrl = PopButton(self,-1) + self.pop = None + self.content = None + self.OnSize(None) + + EVT_SIZE(self,self.OnSize) + EVT_BUTTON(self.bCtrl,self.bCtrl.GetId(),self.OnButton) + + def OnSize(self,evt): + w,h = self.GetClientSizeTuple() + self.textCtrl.SetDimensions(0,0,w-17,h) + self.bCtrl.SetDimensions(w-17,0,17,h) + + def OnButton(self,evt): + if not self.pop: + if self.content: + self.pop = wxPopupDialog(self,self.content) + del self.content + else: + print 'No Content to pop' + if self.pop: + self.pop.Display() + + def Enable(self,flag): + wxPyControl.Enable(self,flag) + self.textCtrl.Enable(flag) + self.bCtrl.Enable(flag) + + def SetPopupContent(self,content): + if not self.pop: + self.content = content + self.content.Show(False) + else: + self.pop.SetContent(content) + + def FormatContent(self): + pass + + def PopDown(self): + if self.pop: + self.pop.EndModal(1) + + def SetValue(self,value): + self.textCtrl.SetValue(value) + + def GetValue(self): + return self.textCtrl.GetValue() + + +# an alias +wxPopupCtrl = wxPopupControl diff --git a/wxPython/wxPython/lib/printout.py b/wxPython/wxPython/lib/printout.py index 33f3a24432..56814081dc 100644 --- a/wxPython/wxPython/lib/printout.py +++ b/wxPython/wxPython/lib/printout.py @@ -15,7 +15,7 @@ # add index to data list after parsing total pages for paging #---------------------------------------------------------------------------- -import os, sys, string, copy +import os, sys, copy from wxPython.wx import * import copy @@ -45,14 +45,14 @@ class PrintBase: fcolour = font["Colour"] return wxColour(fcolour[0], fcolour[1], fcolour[2]) - def OutTextRegion(self, textout, txtdraw = TRUE): - textlines = string.splitfields(textout, '\n') + def OutTextRegion(self, textout, txtdraw = True): + textlines = textout.split('\n') y = copy.copy(self.y) + self.pt_space_before for text in textlines: remain = 'X' while remain != "": vout, remain = self.SetFlow(text, self.region) - if self.draw == TRUE and txtdraw == TRUE: + if self.draw == True and txtdraw == True: test_out = self.TestFull(vout) if self.align == wxALIGN_LEFT: self.DC.DrawText(test_out, self.indent+self.pcell_left_margin, y) @@ -88,12 +88,12 @@ class PrintBase: def SetFlow(self, ln_text, width): width = width - self.pcell_right_margin text = "" - split = string.split(ln_text) + split = ln_text.split() if len(split) == 1: return ln_text, "" try: - w, h = self.DC.GetTextExtent(split[0]) + w, h = self.DC.GetTextExtent(" " + split[0]) if w >= width: return ln_text, "" except: @@ -101,7 +101,7 @@ class PrintBase: cnt = 0 for word in split: - bword = " " + word # blank + word + bword = " " + word # blank + word length = len(bword) w, h = self.DC.GetTextExtent(text + bword) @@ -109,12 +109,12 @@ class PrintBase: text = text + bword cnt = cnt + 1 else: - remain = string.joinfields(split[cnt:],' ') - text = string.strip(text) + remain = ' '.join(split[cnt:]) + text = text.strip() return text, remain - remain = string.joinfields(split[cnt:],' ') - vout = string.strip(text) + remain = ' '.join(split[cnt:]) + vout = text.strip() return vout, remain def SetChar(self, ln_text, width): # truncate string to fit into width @@ -128,8 +128,8 @@ class PrintBase: text = text + val return text - def OutTextPageWidth(self, textout, y_out, align, indent, txtdraw = TRUE): - textlines = string.splitfields(textout, '\n') + def OutTextPageWidth(self, textout, y_out, align, indent, txtdraw = True): + textlines = textout.split('\n') y = copy.copy(y_out) pagew = self.parent.page_width * self.pwidth # full page width @@ -140,7 +140,7 @@ class PrintBase: remain = 'X' while remain != "": vout, remain = self.SetFlow(text, pagew) - if self.draw == TRUE and txtdraw == TRUE: + if self.draw == True and txtdraw == True: test_out = vout if align == wxALIGN_LEFT: self.DC.DrawText(test_out, indent, y) @@ -169,7 +169,7 @@ class PrintBase: def GetNow(self): full = str(wxDateTime_Now()) # get the current date and time in print format - flds = string.splitfields(full) + flds = full.split() date = flds[0] time = flds[1] return date, time @@ -350,26 +350,26 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): x, y = self.DC.GetTextExtent("W") self.space = y - if self.total_pages == None: + if self.total_pages is None: self.GetTotalPages() # total pages for display/printing self.data_cnt = self.page_index[self.page-1] - self.draw = TRUE + self.draw = True self.PrintHeader() self.PrintFooter() self.OutPage() def GetTotalPages(self): self.data_cnt = 0 - self.draw = FALSE + self.draw = False self.page_index = [0] cnt = 0 while 1: test = self.OutPage() self.page_index.append(self.data_cnt) - if test == FALSE: + if test == False: break cnt = cnt + 1 @@ -383,23 +383,23 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): if self.label != []: # check if header defined self.PrintLabel() else: - return FALSE + return False for val in self.data: try: row_val = self.data[self.data_cnt] except: self.FinishDraw() - return FALSE + return False - max_y = self.PrintRow(row_val, FALSE) # test to see if row will fit in remaining space + max_y = self.PrintRow(row_val, False) # test to see if row will fit in remaining space test = max_y + self.space if test > self.y_end: break self.ColourRowCells(max_y-self.y+self.space) # colour the row/column - max_y = self.PrintRow(row_val, TRUE) # row fits - print text + max_y = self.PrintRow(row_val, True) # row fits - print text self.DrawGridLine() # top line of cell self.y = max_y + self.space @@ -411,9 +411,9 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.FinishDraw() if self.data_cnt == len(self.data): # last value in list - return FALSE + return False - return TRUE + return True def PrintLabel(self): @@ -431,7 +431,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.align = wxALIGN_LEFT - max_out = self.OutTextRegion(vtxt, TRUE) + max_out = self.OutTextRegion(vtxt, True) if max_out > max_y: max_y = max_out self.col = self.col + 1 @@ -440,7 +440,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.y = max_y + self.label_space def PrintHeader(self): # print the header array - if self.draw == FALSE: + if self.draw == False: return for val in self.parent.header: @@ -457,10 +457,10 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): else: addtext = "" - self.OutTextPageWidth(text+addtext, self.pheader_margin, val["Align"], header_indent, TRUE) + self.OutTextPageWidth(text+addtext, self.pheader_margin, val["Align"], header_indent, True) def PrintFooter(self): # print the header array - if self.draw == FALSE: + if self.draw == False: return footer_pos = self.parent.page_height * self.pheight - self.pfooter_margin + self.vertical_offset @@ -484,7 +484,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): else: addtext = "" - self.OutTextPageWidth(text+addtext, footer_pos, val["Align"], footer_indent, TRUE) + self.OutTextPageWidth(text+addtext, footer_pos, val["Align"], footer_indent, True) def LabelColorRow(self, colour): @@ -494,13 +494,13 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.DC.DrawRectangle(self.column[0], self.y, self.end_x-self.column[0]+1, height) def ColourRowCells(self, height): - if self.draw == FALSE: + if self.draw == False: return col = 0 for colour in self.column_bgcolour: cellcolour = self.GetCellColour(self.data_cnt, col) - if cellcolour != None: + if cellcolour is not None: colour = cellcolour brush = wxBrush(colour, wxSOLID) @@ -512,7 +512,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.DC.DrawRectangle(start_x, self.y, width, height) col = col + 1 - def PrintRow(self, row_val, draw = TRUE, align = wxALIGN_LEFT): + def PrintRow(self, row_val, draw = True, align = wxALIGN_LEFT): self.SetPrintFont(self.text_font) self.pt_space_before = self.text_pt_space_before # set the point spacing @@ -527,7 +527,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): fcolour = self.column_txtcolour[self.col] # set font colour celltext = self.GetCellText(self.data_cnt, self.col) - if celltext != None: + if celltext is not None: fcolour = celltext # override the column colour self.DC.SetTextForeground(fcolour) @@ -565,7 +565,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.DrawColumns() # draw all vertical lines def DrawGridLine(self): - if self.draw == TRUE: + if self.draw == True: try: size = self.row_line_size[self.data_cnt] except: @@ -583,7 +583,7 @@ class PrintTableDraw(wxScrolledWindow, PrintBase): self.DC.DrawLine(self.column[0], y_out, self.end_x, y_out) def DrawColumns(self): - if self.draw == TRUE: + if self.draw == True: col = 0 for val in self.column: try: @@ -800,30 +800,30 @@ class PrintTable: def SetHeader(self, text = "", type = "Text", font=None, align = None, indent = None, colour = None, size = None): set = { "Text": text } - if font == None: + if font is None: set["Font"] = copy.copy(self.default_font) else: set["Font"] = font - if colour != None: + if colour is not None: setfont = set["Font"] setfont["Colour"] = self.GetColour(colour) - if size != None: + if size is not None: setfont = set["Font"] setfont["Size"] = size - if align == None: + if align is None: set["Align"] = self.header_align else: set["Align"] = align - if indent == None: + if indent is None: set["Indent"] = self.header_indent else: set["Indent"] = indent - if type == None: + if type is None: set["Type"] = self.header_type else: set["Type"] = type @@ -833,30 +833,30 @@ class PrintTable: def SetFooter(self, text = "", type = None, font=None, align = None, indent = None, colour = None, size = None): set = { "Text": text } - if font == None: + if font is None: set["Font"] = copy.copy(self.default_font) else: set["Font"] = font - if colour != None: + if colour is not None: setfont = set["Font"] setfont["Colour"] = self.GetColour(colour) - if size != None: + if size is not None: setfont = set["Font"] setfont["Size"] = size - if align == None: + if align is None: set["Align"] = self.footer_align else: set["Align"] = align - if indent == None: + if indent is None: set["Indent"] = self.footer_indent else: set["Indent"] = indent - if type == None: + if type is None: set["Type"] = self.footer_type else: set["Type"] = type @@ -879,7 +879,7 @@ class PrintTable: if self.parentFrame: frame.SetPosition(self.preview_frame_pos) frame.SetSize(self.preview_frame_size) - frame.Show(true) + frame.Show(True) def Print(self): pdd = wxPrintDialogData() @@ -905,7 +905,7 @@ class PrintTable: if self.preview is None: table.SetPSize(size[0]/self.page_width, size[1]/self.page_height) table.SetPTSize(size[0], size[1]) - table.SetPreview(FALSE) + table.SetPreview(False) else: if self.preview == 1: table.scale = self.scale @@ -933,9 +933,9 @@ class PrintTable: def HasPage(self, page): if page <= self.page_total: - return true + return True else: - return false + return False def SetPage(self, page): self.page = page @@ -956,9 +956,9 @@ class PrintTable: class PrintGrid: def __init__(self, parent, grid, format = [], total_col = None, total_row = None): - if total_row == None: + if total_row is None: total_row = grid.GetNumberRows() - if total_col == None: + if total_col is None: total_col = grid.GetNumberCols() self.total_row = total_row @@ -1025,7 +1025,7 @@ class SetPrintout(wxPrintout): end = self.canvas.HasPage(page) return end except: - return true + return True def GetPageInfo(self): try: @@ -1084,7 +1084,7 @@ class SetPrintout(wxPrintout): self.canvas.SetPageSize(self.psizew, self.psizeh) self.canvas.DoDrawing(dc) - return true + return True diff --git a/wxPython/wxPython/lib/pubsub.py b/wxPython/wxPython/lib/pubsub.py new file mode 100644 index 0000000000..c2b6968094 --- /dev/null +++ b/wxPython/wxPython/lib/pubsub.py @@ -0,0 +1,382 @@ +#--------------------------------------------------------------------------- +# Name: wxPython.lib.pubsub +# Purpose: The Publish/Subscribe framework used by evtmgr.EventManager +# +# Author: Robb Shecter and Robin Dunn +# +# Created: 12-December-2002 +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Robb Shecter <robb@acm.org> +# Licence: wxWindows license +#--------------------------------------------------------------------------- +""" +This module has classes for implementing the Publish/Subscribe design +pattern. + +It's a very flexible PS implementation: The message topics are tuples +of any length, containing any objects (that can be used as hash keys). +A subscriber's topic matches any message topic for which it's a +sublist. + +It also has many optimizations to favor time efficiency (ie., run-time +speed). I did this because I use it to support extreme uses. For +example, piping every wxWindows mouse event through to multiple +listeners, and expecting the app to have no noticeable slowdown. This +has made the code somewhat obfuscated, but I've done my best to +document it. + +The Server and Message classes are the two that clients interact +with.. + +This module is compatible with Python 2.1. + +Author: Robb Shecter +""" + +#--------------------------------------------------------------------------- + +class Publisher: + """ + The publish/subscribe server. This class is a Singleton. + """ + def __init__(self): + self.topicDict = {} + self.functionDict = {} + self.subscribeAllList = [] + self.messageCount = 0 + self.deliveryCount = 0 + + + # + # Public API + # + + def subscribe(self, topic, listener): + """ + Add the given subscription to the list. This will + add an entry recording the fact that the listener wants + to get messages for (at least) the given topic. This + method may be called multiple times for one listener, + registering it with many topics. It can also be invoked + many times for a particular topic, each time with a + different listener. + + listener: expected to be either a method or function that + takes zero or one parameters. (Not counting 'self' in the + case of methods. If it accepts a parameter, it will be given + a reference to a Message object. + + topic: will be converted to a tuple if it isn't one. + It's a pattern matches any topic that it's a sublist + of. For example, this pattern: + + ('sports',) + + would match these: + + ('sports',) + ('sports', 'baseball') + ('sports', 'baseball', 'highscores') + + but not these: + + () + ('news') + (12345) + """ + if not callable(listener): + raise TypeError('The P/S listener, '+`listener`+', is not callable.') + aTopic = Topic(topic) + + # Determine now (at registration time) how many parameters + # the listener expects, and get a reference to a function which + # calls it correctly at message-send time. + callableVersion = self.__makeCallable(listener) + + # Add this tuple to a list which is in a dict keyed by + # the topic's first element. + self.__addTopicToCorrectList(aTopic, listener, callableVersion) + + # Add to a dict in order to speed-up unsubscribing. + self.__addFunctionLookup(listener, aTopic) + + + def unsubscribe(self, listener): + """ + Remove the given listener from the registry, + for all topics that it's associated with. + """ + if not callable(listener): + raise TypeError('The P/S listener, '+`listener`+', is not callable.') + topicList = self.getAssociatedTopics(listener) + for aTopic in topicList: + subscriberList = self.__getTopicList(aTopic) + listToKeep = [] + for subscriber in subscriberList: + if subscriber[0] != listener: + listToKeep.append(subscriber) + self.__setTopicList(aTopic, listToKeep) + self.__delFunctionLookup(listener) + + + def getAssociatedTopics(self, listener): + """ + Return a list of topics the given listener is + registered with. + """ + return self.functionDict.get(listener, []) + + + def sendMessage(self, topic, data=None): + """ + Relay a message to registered listeners. + """ + aTopic = Topic(topic) + message = Message(aTopic.items, data) + topicList = self.__getTopicList(aTopic) + + # Send to the matching topics + for subscriber in topicList: + if subscriber[1].matches(aTopic): + subscriber[2](message) + + # Send to any listeners registered for ALL + for subscriber in self.subscribeAllList: + subscriber[2](message) + + + # + # Private methods + # + + def __makeCallable(self, function): + """ + Return a function that is what the server + will actually call. + + This is a time optimization: this removes a test + for the number of parameters from the inner loop + of sendMessage(). + """ + parameters = self.__parameterCount(function) + if parameters == 0: + # Return a function that calls the listener + # with no arguments. + return lambda m, f=function: f() + elif parameters == 1: + # Return a function that calls the listener + # with one argument (which will be the message). + return lambda m, f=function: f(m) + else: + raise TypeError('The publish/subscribe listener, '+`function`+', has wrong parameter count') + + + def __parameterCount(self, callableObject): + """ + Return the effective number of parameters required + by the callable object. In other words, the 'self' + parameter of methods is not counted. + """ + try: + # Try to handle this like a method + return callableObject.im_func.func_code.co_argcount - 1 + except AttributeError: + pass + + try: + # Try to handle this like a function + return callableObject.func_code.co_argcount + except AttributeError: + raise 'Cannot determine if this is a method or function: '+str(callableObject) + + def __addFunctionLookup(self, aFunction, aTopic): + try: + aList = self.functionDict[aFunction] + except KeyError: + aList = [] + self.functionDict[aFunction] = aList + aList.append(aTopic) + + + def __delFunctionLookup(self, aFunction): + try: + del self.functionDict[aFunction] + except KeyError: + print 'Warning: listener not found. Logic error in PublishSubscribe?', aFunction + + + def __addTopicToCorrectList(self, topic, listener, callableVersion): + if len(topic.items) == 0: + self.subscribeAllList.append((listener, topic, callableVersion)) + else: + self.__getTopicList(topic).append((listener, topic, callableVersion)) + + + def __getTopicList(self, aTopic): + """ + Return the correct sublist of subscribers based on the + given topic. + """ + try: + elementZero = aTopic.items[0] + except IndexError: + return self.subscribeAllList + + try: + subList = self.topicDict[elementZero] + except KeyError: + subList = [] + self.topicDict[elementZero] = subList + return subList + + + def __setTopicList(self, aTopic, aSubscriberList): + try: + self.topicDict[aTopic.items[0]] = aSubscriberList + except IndexError: + self.subscribeAllList = aSubscriberList + + + def __call__(self): + return self + + +# Create an instance with the same name as the class, effectivly +# hiding the class object so it can't be instantiated any more. From +# this point forward any calls to Publisher() will invoke the __call__ +# of this instance which just returns itself. +# +# The only flaw with this approach is that you can't derive a new +# class from Publisher without jumping through hoops. If this ever +# becomes an issue then a new Singleton implementaion will need to be +# employed. +Publisher = Publisher() + + +#--------------------------------------------------------------------------- + +class Message: + """ + A simple container object for the two components of + a message; the topic and the data. + """ + def __init__(self, topic, data): + self.topic = topic + self.data = data + + def __str__(self): + return '[Topic: '+`self.topic`+', Data: '+`self.data`+']' + + +#--------------------------------------------------------------------------- + +class Topic: + """ + A class that represents a publish/subscribe topic. + Currently, it's only used internally in the framework; the + API expects and returns plain old tuples. + + It currently exists mostly as a place to keep the matches() + function. This function, though, could also correctly be + seen as an attribute of the P/S server. Getting rid of this + class would also mean one fewer object instantiation per + message send. + """ + + listType = type([]) + tupleType = type(()) + + def __init__(self, items): + # Make sure we have a tuple. + if type(items) == self.__class__.listType: + items = tuple(items) + elif type(items) != self.__class__.tupleType: + items = (items,) + self.items = items + self.length = len(items) + + + def matches(self, aTopic): + """ + Consider myself to be a topic pattern, + and return True if I match the given specific + topic. For example, + a = ('sports') + b = ('sports','baseball') + a.matches(b) --> 1 + b.matches(a) --> 0 + """ + # The question this method answers is equivalent to; + # is my list a sublist of aTopic's? So, my algorithm + # is: 1) make a copy of the aTopic list which is + # truncated to the pattern's length. 2) Test for + # equality. + # + # This algorithm may be somewhat memory-intensive, + # because it creates a temporary list on each + # call to match. A possible to-do would be to + # re-write this with a hand-coded loop. + return (self.items == aTopic.items[:self.length]) + + + def __repr__(self): + import string + return '<Topic>' + string.join(map(repr, self.items), ', ') + '</Topic>' + + + def __eq__(self, aTopic): + """ + Return True if I equal the given topic. We're considered + equal if our tuples are equal. + """ + if type(self) != type(aTopic): + return 0 + else: + return self.items == aTopic.items + + + def __ne__(self, aTopic): + """ + Return False if I equal the given topic. + """ + return not self == aTopic + + +#--------------------------------------------------------------------------- + + +# +# Code for a simple command-line test +# +if __name__ == '__main__': + + class SimpleListener: + def __init__(self, number): + self.number = number + def notify(self, message): + print '#'+str(self.number)+' got the message:', message + + # Build a list of ten listeners. + lList = [] + for x in range(10): + lList.append(SimpleListener(x)) + + server = Publisher() + + # Everyone's interested in politics... + for x in lList: + Publisher().subscribe(topic='politics', listener=x.notify) # also tests singleton + + # But only the first four are interested in trivia. + for x in lList[:4]: + server.subscribe(topic='trivia', listener=x.notify) + + # This one subscribes to everything. + everythingListener = SimpleListener(999) + server.subscribe(topic=(), listener=everythingListener.notify) + + # Now send out two messages, testing topic matching. + server.sendMessage(topic='trivia', data='What is the capitol of Oregon?') + server.sendMessage(topic=('politics','germany'), data='The Greens have picked up another seat in the Bundestag.') + +#--------------------------------------------------------------------------- diff --git a/wxPython/wxPython/lib/pyshell.py b/wxPython/wxPython/lib/pyshell.py index 7457f3c830..9e47e6a537 100644 --- a/wxPython/wxPython/lib/pyshell.py +++ b/wxPython/wxPython/lib/pyshell.py @@ -30,7 +30,7 @@ etc... But it's a good start. from wxPython.wx import * from wxPython.stc import * -import sys, string, keyword +import sys, keyword from code import InteractiveInterpreter #---------------------------------------------------------------------- @@ -238,7 +238,7 @@ class PyShellWindow(wxStyledTextCtrl, InteractiveInterpreter): lastPos = self.GetTextLength() if self.lastPromptPos and self.lastPromptPos != lastPos: self.SetLexer(wxSTC_LEX_PYTHON) - self.SetKeywords(0, string.join(keyword.kwlist)) + self.SetKeywords(0, ' '.join(keyword.kwlist)) self.Colourise(self.lastPromptPos, lastPos) @@ -248,7 +248,7 @@ class PyShellWindow(wxStyledTextCtrl, InteractiveInterpreter): def OnUpdateUI(self, evt): # check for matching braces braceAtCaret = -1 - braceOpposite = -1 + braceOpposite = -1 charBefore = None caretPos = self.GetCurrentPos() if caretPos > 0: diff --git a/wxPython/wxPython/lib/rpcMixin.py b/wxPython/wxPython/lib/rpcMixin.py index 26a640a3d0..2ca4695689 100644 --- a/wxPython/wxPython/lib/rpcMixin.py +++ b/wxPython/wxPython/lib/rpcMixin.py @@ -72,7 +72,6 @@ from wxPython.wx import * import xmlrpcserver,xmlrpclib import threading import SocketServer -import string import new import sys @@ -305,7 +304,7 @@ class rpcMixin: event.rpcStatusLock.acquire() doQuit = 0 try: - methsplit = string.split(event.method,'.') + methsplit = event.method.split('.') meth = self for piece in methsplit: meth = getattr(meth,piece) @@ -388,8 +387,8 @@ if __name__ == '__main__': self.frame = rpcFrame(NULL, -1, "wxPython RPCDemo", wxDefaultPosition, wxSize(300,300), rpcHost='localhost',rpcPort=port) - self.frame.Show(TRUE) - return TRUE + self.frame.Show(True) + return True def testcon(port): diff --git a/wxPython/wxPython/lib/sheet.py b/wxPython/wxPython/lib/sheet.py index 4b6612a072..06d7ffd749 100644 --- a/wxPython/wxPython/lib/sheet.py +++ b/wxPython/wxPython/lib/sheet.py @@ -5,7 +5,7 @@ from wxPython.wx import * from wxPython.grid import * -from string import * +import string #--------------------------------------------------------------------------- class CTextCellEditor(wxTextCtrl): @@ -20,26 +20,26 @@ class CTextCellEditor(wxTextCtrl): key = evt.GetKeyCode() if key == WXK_DOWN: self._grid.DisableCellEditControl() # Commit the edit - self._grid.MoveCursorDown(false) # Change the current cell + self._grid.MoveCursorDown(False) # Change the current cell elif key == WXK_UP: self._grid.DisableCellEditControl() # Commit the edit - self._grid.MoveCursorUp(false) # Change the current cell + self._grid.MoveCursorUp(False) # Change the current cell elif key == WXK_LEFT: self._grid.DisableCellEditControl() # Commit the edit - self._grid.MoveCursorLeft(false) # Change the current cell + self._grid.MoveCursorLeft(False) # Change the current cell elif key == WXK_RIGHT: self._grid.DisableCellEditControl() # Commit the edit - self._grid.MoveCursorRight(false) # Change the current cell - + self._grid.MoveCursorRight(False) # Change the current cell + evt.Skip() # Continue event - + #--------------------------------------------------------------------------- class CCellEditor(wxPyGridCellEditor): """ Custom cell editor """ def __init__(self, grid): wxPyGridCellEditor.__init__(self) self._grid = grid # Save a reference to the grid - + def Create(self, parent, id, evtHandler): """ Create the actual edit control. Must derive from wxControl. Must Override @@ -68,7 +68,7 @@ class CCellEditor(wxPyGridCellEditor): """ # Call base class method. self.base_PaintBackground(self, rect, attr) - + def BeginEdit(self, row, col, grid): """ Fetch the value from the table and prepare edit control to begin editing. Set the focus to the edit control. Must Override. @@ -76,19 +76,19 @@ class CCellEditor(wxPyGridCellEditor): self._startValue = grid.GetTable().GetValue(row, col) self._tc.SetValue(self._startValue) self._tc.SetFocus() - + # Select the text when initiating an edit so that subsequent typing # replaces the contents. self._tc.SetSelection(0, self._tc.GetLastPosition()) - + def EndEdit(self, row, col, grid): - """ Commit editing the current cell. Returns true if the value has changed. + """ Commit editing the current cell. Returns True if the value has changed. If necessary, the control may be destroyed. Must Override. """ - changed = false # Assume value not changed + changed = False # Assume value not changed val = self._tc.GetValue() # Get value in edit control if val != self._startValue: # Compare - changed = true # If different then changed is true + changed = True # If different then changed is True grid.GetTable().SetValue(row, col, val) # Update the table self._startValue = '' # Clear the class' start value self._tc.SetValue('') # Clear contents of the edit control @@ -101,7 +101,7 @@ class CCellEditor(wxPyGridCellEditor): self._tc.SetInsertionPointEnd() def IsAcceptedKey(self, evt): - """ Return true to allow the given key to start editing. The base class + """ Return True to allow the given key to start editing. The base class version only checks that the event has no modifiers. F2 is special and will always start the editor. """ @@ -117,15 +117,15 @@ class CCellEditor(wxPyGridCellEditor): if key in [WXK_NUMPAD0, WXK_NUMPAD1, WXK_NUMPAD2, WXK_NUMPAD3, WXK_NUMPAD4, WXK_NUMPAD5, WXK_NUMPAD6, WXK_NUMPAD7, WXK_NUMPAD8, WXK_NUMPAD9]: ch = chr(ord('0') + key - WXK_NUMPAD0) - + elif key == WXK_BACK: # Empty text control when init w/ back key ch = "" # Handle normal keys elif key < 256 and key >= 0 and chr(key) in string.printable: ch = chr(key) if not evt.ShiftDown(): - ch = string.lower(ch) - + ch = ch.lower() + if ch is not None: # If are at this point with a key, self._tc.SetValue(ch) # replace the contents of the text control. self._tc.SetInsertionPointEnd() # Move to the end so that subsequent keys are appended @@ -150,7 +150,7 @@ class CCellEditor(wxPyGridCellEditor): class CSheet(wxGrid): def __init__(self, parent): wxGrid.__init__(self, parent, -1) - + # Init variables self._lastCol = -1 # Init last cell column clicked self._lastRow = -1 # Init last cell row clicked @@ -159,7 +159,7 @@ class CSheet(wxGrid): self.RegisterDataType(wxGRID_VALUE_STRING, wxGridCellStringRenderer(), CCellEditor(self)) - + self.CreateGrid(4, 3) # By default start with a 4 x 3 grid self.SetColLabelSize(18) # Default sizes and alignment self.SetRowLabelSize(50) @@ -167,8 +167,8 @@ class CSheet(wxGrid): self.SetColSize(0, 75) # Default column sizes self.SetColSize(1, 75) self.SetColSize(2, 75) - - # Sink events + + # Sink events EVT_GRID_CELL_LEFT_CLICK( self, self.OnLeftClick) EVT_GRID_CELL_RIGHT_CLICK( self, self.OnRightClick) EVT_GRID_CELL_LEFT_DCLICK( self, self.OnLeftDoubleClick) @@ -183,7 +183,7 @@ class CSheet(wxGrid): # Save the last cell coordinates self._lastRow, self._lastCol = event.GetRow(), event.GetCol() event.Skip() - + def OnRowSize(self, event): event.Skip() @@ -192,48 +192,48 @@ class CSheet(wxGrid): def OnCellChange(self, event): event.Skip() - + def OnLeftClick(self, event): """ Override left-click behavior to prevent left-click edit initiation """ # Save the cell clicked currCell = (event.GetRow(), event.GetCol()) - + # Suppress event if same cell clicked twice in a row. # This prevents a single-click from initiating an edit. if currCell != (self._lastRow, self._lastCol): event.Skip() - + def OnRightClick(self, event): """ Move grid cursor when a cell is right-clicked """ self.SetGridCursor( event.GetRow(), event.GetCol() ) event.Skip() - + def OnLeftDoubleClick(self, event): """ Initiate the cell editor on a double-click """ # Move grid cursor to double-clicked cell if self.CanEnableCellControl(): self.SetGridCursor( event.GetRow(), event.GetCol() ) - self.EnableCellEditControl(true) # Show the cell editor + self.EnableCellEditControl(True) # Show the cell editor event.Skip() def OnRangeSelect(self, event): """ Track which cells are selected so that copy/paste behavior can be implemented """ - # If a single cell is selected, then Selecting() returns false (0) + # If a single cell is selected, then Selecting() returns False (0) # and range coords are entire grid. In this case cancel previous selection. - # If more than one cell is selected, then Selecting() is true (1) + # If more than one cell is selected, then Selecting() is True (1) # and range accurately reflects selected cells. Save them. - # If more cells are added to a selection, selecting remains true (1) + # If more cells are added to a selection, selecting remains True (1) self._selected = None if event.Selecting(): self._selected = ((event.GetTopRow(), event.GetLeftCol()), (event.GetBottomRow(), event.GetRightCol())) event.Skip() - + def Copy(self): """ Copy the currently selected cells to the clipboard """ # TODO: raise an error when there are no cells selected? if self._selected == None: return ((r1, c1), (r2, c2)) = self._selected - + # Build a string to put on the clipboard # (Is there a faster way to do this in Python?) crlf = chr(13) + chr(10) @@ -245,7 +245,7 @@ class CSheet(wxGrid): s += tab s += self.GetCellValue(row, c2) s += crlf - + # Put the string on the clipboard if wxTheClipboard.Open(): wxTheClipboard.Clear() @@ -261,15 +261,15 @@ class CSheet(wxGrid): wxTheClipboard.Close() if not success: return # Exit on failure s = td.GetText() # Get the text - + crlf = chr(13) + chr(10) # CrLf characters tab = chr(9) # Tab character - - rows = split(s, crlf) # split into rows + + rows = s.split(crlf) # split into rows rows = rows[0:-1] # leave out last element, which is always empty for i in range(0, len(rows)): # split rows into elements - rows[i] = split(rows[i], tab) - + rows[i] = rows[i].split(tab) + # Get the starting and ending cell range to paste into if self._selected == None: # If no cells selected... r1 = self.GetGridCursorRow() # Start the paste at the current location @@ -278,7 +278,7 @@ class CSheet(wxGrid): c2 = self.GetNumberCols()-1 else: # If cells selected, only paste there ((r1, c1), (r2, c2)) = self._selected - + # Enter data into spreadsheet cells one at a time r = r1 # Init row and column counters c = c1 @@ -306,8 +306,8 @@ class CSheet(wxGrid): def SetNumberRows(self, numRows=1): """ Set the number of rows in the sheet """ # Check for non-negative number - if numRows < 0: return false - + if numRows < 0: return False + # Adjust number of rows curRows = self.GetNumberRows() if curRows < numRows: @@ -315,13 +315,13 @@ class CSheet(wxGrid): elif curRows > numRows: self.DeleteRows(numRows, curRows - numRows) - return true + return True def SetNumberCols(self, numCols=1): """ Set the number of columns in the sheet """ # Check for non-negative number - if numCols < 0: return false - + if numCols < 0: return False + # Adjust number of rows curCols = self.GetNumberCols() if curCols < numCols: @@ -329,4 +329,4 @@ class CSheet(wxGrid): elif curCols > numCols: self.DeleteCols(numCols, curCols - numCols) - return true + return True diff --git a/wxPython/wxPython/lib/shell.py b/wxPython/wxPython/lib/shell.py index 2434f55bca..c6cab9deea 100644 --- a/wxPython/wxPython/lib/shell.py +++ b/wxPython/wxPython/lib/shell.py @@ -29,7 +29,7 @@ History: __version__ ="$Revision$" # $RCSfile$ -import sys, string, code, traceback +import sys, code, traceback from wxPython.wx import * from wxPython.html import * @@ -58,11 +58,11 @@ class PyShellInput(wxPanel): tid =wxNewId() self.entry =wxTextCtrl(self, tid, style = wxTE_MULTILINE) EVT_CHAR(self.entry, self.OnChar) - self.entry.SetFont(wxFont(9, wxMODERN, wxNORMAL, wxNORMAL, false)) + self.entry.SetFont(wxFont(9, wxMODERN, wxNORMAL, wxNORMAL, False)) sizer =wxBoxSizer(wxVERTICAL) sizer.AddMany([(self.label, 0, wxEXPAND), (self.entry, 1, wxEXPAND)]) self.SetSizer(sizer) - self.SetAutoLayout(true) + self.SetAutoLayout(True) EVT_SET_FOCUS(self, self.OnSetFocus) # when in "continuation" mode, # two consecutive newlines are required @@ -90,7 +90,7 @@ class PyShellInput(wxPanel): return text =self.entry.GetValue() # weird CRLF thingy - text =string.replace(text, "\r\n", "\n") + text = text.replace("\r\n", "\n") # see if we've finished if (not (self.first_line or text[-1] =="\n") # in continuation mode or (text[-1] =="\\") # escaped newline @@ -153,7 +153,7 @@ class PyShellOutput(wxPanel): self.client =self.html # used in OnSize() self.text =self.intro self.html.SetPage(self.text) - self.html.SetAutoLayout(TRUE) + self.html.SetAutoLayout(True) self.line_buffer ="" # refreshes are annoying self.in_batch =0 @@ -193,9 +193,9 @@ class PyShellOutput(wxPanel): if 0 and __debug__: sys.__stdout__.write(text) # handle entities for (symbol, eref) in self.erefs: - text =string.replace(text, symbol, eref) + text = text.replace(symbol, eref) # replace newlines - text =string.replace(text, "\n", style[2]) + text = text.replace("\n", style[2]) # add to contents self.text =self.text +style[0] +text +style[1] if not self.in_batch: self.UpdWindow() @@ -302,14 +302,14 @@ class PyShell(wxPanel): (etype, value, tb) =sys.exc_info() # remove myself from traceback tblist =traceback.extract_tb(tb)[1:] - msg =string.join(traceback.format_exception_only(etype, value) + msg = ' '.join(traceback.format_exception_only(etype, value) +traceback.format_list(tblist)) self.output.write_exc(msg) def ShowSyntaxError(self): """display message about syntax error (no traceback here)""" (etype, value, tb) =sys.exc_info() - msg =string.join(traceback.format_exception_only(etype, value)) + msg = ' '.join(traceback.format_exception_only(etype, value)) self.output.write_exc(msg) def OnSize(self, event): @@ -328,7 +328,7 @@ if __name__ == '__main__': """Demonstrates usage of both default and customized shells""" def OnInit(self): frame = MyFrame() - frame.Show(TRUE) + frame.Show(True) self.SetTopWindow(frame) ## PyShellInput.PS1 =" let's get some work done..." ## PyShellInput.PS2 =" ok, what do you really mean?" @@ -344,8 +344,8 @@ if __name__ == '__main__': ## "<br>&lt;-- move this sash to see html debug output</I><br>\n" ## PyShellOutput.html_debug =1 ## frame = MyFrame(title="Customized wxPython Shell") -## frame.Show(TRUE) - return TRUE +## frame.Show(True) + return True app = MyApp(0) app.MainLoop() diff --git a/wxPython/wxPython/lib/splashscreen.py b/wxPython/wxPython/lib/splashscreen.py index 19159beccf..b1ec425319 100644 --- a/wxPython/wxPython/lib/splashscreen.py +++ b/wxPython/wxPython/lib/splashscreen.py @@ -57,7 +57,7 @@ class SplashScreen(wxFrame): EVT_PAINT(self, self.OnPaint) EVT_ERASE_BACKGROUND(self, self.OnEraseBG) - self.Show(true) + self.Show(True) class SplashTimer(wxTimer): @@ -73,16 +73,16 @@ class SplashScreen(wxFrame): def OnPaint(self, event): dc = wxPaintDC(self) - dc.DrawBitmap(self.bitmap, 0,0, false) + dc.DrawBitmap(self.bitmap, 0,0, False) def OnEraseBG(self, event): pass def OnSplashExitDefault(self, event=None): - self.Close(true) + self.Close(True) def OnCloseWindow(self, event=None): - self.Show(false) + self.Show(False) self.timer.Stop() del self.timer self.Destroy() @@ -100,12 +100,12 @@ if __name__ == "__main__": wxImage_AddHandler(wxPNGHandler()) wxImage_AddHandler(wxGIFHandler()) self.splash = SplashScreen(NULL, bitmapfile="splashscreen.jpg", callback=self.OnSplashExit) - self.splash.Show(true) + self.splash.Show(True) self.SetTopWindow(self.splash) - return true + return True def OnSplashExit(self, event=None): print "Yay! Application callback worked!" - self.splash.Close(true) + self.splash.Close(True) del self.splash ### Build working windows here... def test(sceneGraph=None): diff --git a/wxPython/wxPython/lib/stattext.py b/wxPython/wxPython/lib/stattext.py index 0aa919f850..d93b16d156 100644 --- a/wxPython/wxPython/lib/stattext.py +++ b/wxPython/wxPython/lib/stattext.py @@ -16,7 +16,6 @@ """ from wxPython.wx import * -import string #---------------------------------------------------------------------- @@ -65,6 +64,8 @@ class wxGenStaticText(wxPyControl): style = self.GetWindowStyleFlag() if not style & wxST_NO_AUTORESIZE: self.SetSize(self.GetBestSize()) + self.Refresh() + def SetFont(self, font): """ @@ -75,6 +76,7 @@ class wxGenStaticText(wxPyControl): style = self.GetWindowStyleFlag() if not style & wxST_NO_AUTORESIZE: self.SetSize(self.GetBestSize()) + self.Refresh() def DoGetBestSize(self): @@ -94,13 +96,17 @@ class wxGenStaticText(wxPyControl): def AcceptsFocus(self): """Overridden base class virtual.""" - return false + return False def OnPaint(self, event): - width, height = self.GetClientSize() dc = wxBufferedPaintDC(self) + #dc = wxPaintDC(self) + width, height = self.GetClientSize() + if not width or not height: + return dc.SetBackground(wxBrush(self.GetBackgroundColour(), wxSOLID)) + dc.SetTextForeground(self.GetForegroundColour()) dc.Clear() dc.SetFont(self.GetFont()) label = self.GetLabel() diff --git a/wxPython/wxPython/lib/throbber.py b/wxPython/wxPython/lib/throbber.py new file mode 100644 index 0000000000..3211ce699e --- /dev/null +++ b/wxPython/wxPython/lib/throbber.py @@ -0,0 +1,253 @@ +""" +A throbber displays an animated image that can be +started, stopped, reversed, etc. Useful for showing +an ongoing process (like most web browsers use) or +simply for adding eye-candy to an application. + +Throbbers run in a separate thread so normal application +processing can continue unencumbered. +""" + +# +# throbber.py - Cliff Wells <clifford.wells@attbi.com> +# +# Thanks to Harald Massa <harald.massa@suedvers.de> for +# suggestions and sample code. +# +# $Id$ +# + +import threading, os +from wxPython.wx import * + +# ------------------------------------------------------------------------------ + +wxEVT_UPDATE_THROBBER = wxNewEventType() +def EVT_UPDATE_THROBBER(win, func): + win.Connect(-1, -1, wxEVT_UPDATE_THROBBER, func) + +class UpdateThrobberEvent(wxPyEvent): + def __init__(self): + wxPyEvent.__init__(self) + self.SetEventType(wxEVT_UPDATE_THROBBER) + +# ------------------------------------------------------------------------------ + +class Throbber(wxPanel): + """ + The first argument is either the name of a file that will be split into frames + (a composite image) or a list of strings of image names that will be treated + as individual frames. If a single (composite) image is given, then additional + information must be provided: the number of frames in the image and the width + of each frame. The first frame is treated as the "at rest" frame (it is not + shown during animation, but only when Throbber.Rest() is called. + A second, single image may be optionally specified to overlay on top of the + animation. A label may also be specified to show on top of the animation. + """ + def __init__(self, parent, id, + bitmap, # single (composite) bitmap or list of bitmaps + pos = wxDefaultPosition, + size = wxDefaultSize, + frameDelay = 0.1,# time between frames + frames = 0, # number of frames (only necessary for composite image) + frameWidth = 0, # width of each frame (only necessary for composite image) + label = None, # optional text to be displayed + overlay = None, # optional image to overlay on animation + reverse = 0, # reverse direction at end of animation + style = 0, # window style + name = "throbber"): + wxPanel.__init__(self, parent, id, pos, size, style, name) + self.name = name + self.label = label + _seqTypes = (type([]), type(())) + + # set size, guessing if necessary + width, height = size + if width == -1: + if type(bitmap) in _seqTypes: + width = bitmap[0].GetWidth() + else: + if frameWidth: + width = frameWidth + if height == -1: + if type(bitmap) in _seqTypes: + height = bitmap[0].GetHeight() + else: + height = bitmap.GetHeight() + self.width, self.height = width, height + + # double check it + assert width != -1 and height != -1, "Unable to guess size" + + if label: + extentX, extentY = self.GetTextExtent(label) + self.labelX = (width - extentX)/2 + self.labelY = (height - extentY)/2 + self.frameDelay = frameDelay + self.current = 0 + self.direction = 1 + self.autoReverse = reverse + self.overlay = overlay + if overlay is not None: + self.overlay = overlay + self.overlayX = (width - self.overlay.GetWidth()) / 2 + self.overlayY = (height - self.overlay.GetHeight()) / 2 + self.showOverlay = overlay is not None + self.showLabel = label is not None + + # do we have a sequence of images? + if type(bitmap) in _seqTypes: + self.submaps = bitmap + self.frames = len(self.submaps) + # or a composite image that needs to be split? + else: + self.frames = frames + self.submaps = [] + for chunk in range(frames): + rect = (chunk * frameWidth, 0, width, height) + self.submaps.append(bitmap.GetSubBitmap(rect)) + + # self.sequence can be changed, but it's not recommended doing it + # while the throbber is running. self.sequence[0] should always + # refer to whatever frame is to be shown when 'resting' and be sure + # that no item in self.sequence >= self.frames or < 0!!! + self.sequence = range(self.frames) + + self.SetClientSize((width, height)) + + EVT_PAINT(self, self.OnPaint) + EVT_UPDATE_THROBBER(self, self.Rotate) + EVT_WINDOW_DESTROY(self, self.OnDestroyWindow) + + self.event = threading.Event() + self.event.set() # we start out in the "resting" state + + + def OnDestroyWindow(self, event): + # this is currently broken due to a bug in wxWindows... hopefully + # it'll be fixed soon. Meanwhile be sure to explicitly call Stop() + # before the throbber is destroyed. + self.Stop() + event.Skip() + + + def Draw(self, dc): + dc.DrawBitmap(self.submaps[self.sequence[self.current]], 0, 0, True) + if self.overlay and self.showOverlay: + dc.DrawBitmap(self.overlay, self.overlayX, self.overlayY, True) + if self.label and self.showLabel: + dc.DrawText(self.label, self.labelX, self.labelY) + dc.SetTextForeground(wxWHITE) + dc.DrawText(self.label, self.labelX-1, self.labelY-1) + + + def OnPaint(self, event): + self.Draw(wxPaintDC(self)) + event.Skip() + + + def UpdateThread(self): + try: + while hasattr(self, 'event') and not self.event.isSet(): + wxPostEvent(self, UpdateThrobberEvent()) + self.event.wait(self.frameDelay) + except wxPyDeadObjectError: # BUG: we were destroyed + return + + + def Rotate(self, event): + if self.event.isSet(): + return + self.current += self.direction + if self.current >= len(self.sequence): + if self.autoReverse: + self.Reverse() + self.current = len(self.sequence) - 1 + else: + self.current = 1 + if self.current < 1: + if self.autoReverse: + self.Reverse() + self.current = 1 + else: + self.current = len(self.sequence) - 1 + self.Draw(wxClientDC(self)) + + + # --------- public methods --------- + def SetFont(self, font): + """Set the font for the label""" + wxPanel.SetFont(self, font) + self.SetLabel(self.label) + self.Draw(wxClientDC(self)) + + + def Rest(self): + """Stop the animation and return to frame 0""" + self.Stop() + self.current = 0 + self.Draw(wxClientDC(self)) + + + def Reverse(self): + """Change the direction of the animation""" + self.direction = -self.direction + + + def Running(self): + """Returns True if the animation is running""" + return not self.event.isSet() + + + def Start(self): + """Start the animation""" + if not self.Running(): + self.event.clear() + thread = threading.Thread(target = self.UpdateThread, + name = "%s-thread" % self.name) + thread.start() + + + def Stop(self): + """Stop the animation""" + if self.event.isSet(): + return + self.event.set() + + + def SetFrameDelay(self, frameDelay = 0.05): + """Delay between each frame""" + self.frameDelay = frameDelay + + + def ToggleOverlay(self, state = None): + """Toggle the overlay image""" + if state is None: + self.showOverlay = not self.showOverlay + else: + self.showOverlay = state + self.Draw(wxClientDC(self)) + + + def ToggleLabel(self, state = None): + """Toggle the label""" + if state is None: + self.showLabel = not self.showLabel + else: + self.showLabel = state + self.Draw(wxClientDC(self)) + + + def SetLabel(self, label): + """Change the text of the label""" + self.label = label + if label: + extentX, extentY = self.GetTextExtent(label) + self.labelX = (self.width - extentX)/2 + self.labelY = (self.height - extentY)/2 + self.Draw(wxClientDC(self)) + + + +# ------------------------------------------------------------------------------ + diff --git a/wxPython/wxPython/lib/timectrl.py b/wxPython/wxPython/lib/timectrl.py new file mode 100644 index 0000000000..52d9c4b4fc --- /dev/null +++ b/wxPython/wxPython/lib/timectrl.py @@ -0,0 +1,843 @@ +#---------------------------------------------------------------------------- +# Name: wxTimeCtrl.py +# Author: Will Sadkin +# Created: 09/19/2002 +# Copyright: (c) 2002 by Will Sadkin, 2002 +# RCS-ID: $Id$ +# License: wxWindows license +#---------------------------------------------------------------------------- +# NOTE: +# This was written way it is because of the lack of masked edit controls +# in wxWindows/wxPython. I would also have preferred to derive this +# control from a wxSpinCtrl rather than wxTextCtrl, but the wxTextCtrl +# component of that control is inaccessible through the interface exposed in +# wxPython. +# +# wxTimeCtrl does not use validators, because it does careful manipulation +# of the cursor in the text window on each keystroke, and validation is +# cursor-position specific, so the control intercepts the key codes before the +# validator would fire. +# + +from wxPython.wx import * +import string + +# wxWindows' wxTextCtrl translates Composite "control key" +# events into single events before returning them to its OnChar +# routine. The doc says that this results in 1 for Ctrl-A, 2 for +# Ctrl-B, etc. However, there are no wxPython or wxWindows +# symbols for them, so I'm defining codes for Ctrl-X (cut) and +# Ctrl-V (paste) here for readability: +WXK_CTRL_X = (ord('X')+1) - ord('A') +WXK_CTRL_V = (ord('V')+1) - ord('A') + +# The following bit of function is for debugging the subsequent code. +# To turn on debugging output, set _debug to 1 +_debug = 0 +_indent = 0 + +if _debug: + def _dbg(*args, **kwargs): + global _indent + + if len(args): + if _indent: print ' ' * 3 * _indent, + for arg in args: print arg, + print + # else do nothing + + # post process args: + for kwarg, value in kwargs.items(): + if kwarg == 'indent' and value: _indent = _indent + 1 + elif kwarg == 'indent' and value == 0: _indent = _indent - 1 + if _indent < 0: _indent = 0 +else: + def _dbg(*args, **kwargs): + pass + + +# This class of event fires whenever the value of the time changes in the control: +wxEVT_TIMEVAL_UPDATED = wxNewId() +def EVT_TIMEUPDATE(win, id, func): + """Used to trap events indicating that the current time has been changed.""" + win.Connect(id, -1, wxEVT_TIMEVAL_UPDATED, func) + +class TimeUpdatedEvent(wxPyCommandEvent): + def __init__(self, id, value ='12:00:00 AM'): + wxPyCommandEvent.__init__(self, wxEVT_TIMEVAL_UPDATED, id) + self.value = value + def GetValue(self): + """Retrieve the value of the time control at the time this event was generated""" + return self.value + + +# Set up all the positions of the cells in the wxTimeCtrl (once at module import): +# Format of control is: +# hh:mm:ss xM +# 1 +# positions: 01234567890 +_listCells = ['hour', 'minute', 'second', 'am_pm'] +_listCellRange = [(0,1,2), (3,4,5), (6,7,8), (9,10,11)] +_listDelimPos = [2,5,8] + +# Create dictionary of cell ranges, indexed by name or position in the range: +_dictCellRange = {} +for i in range(4): + _dictCellRange[_listCells[i]] = _listCellRange[i] +for cell in _listCells: + for i in _dictCellRange[cell]: + _dictCellRange[i] = _dictCellRange[cell] + + +# Create lists of starting and ending positions for each range, and a dictionary of starting +# positions indexed by name +_listStartCellPos = [] +_listEndCellPos = [] +for tup in _listCellRange: + _listStartCellPos.append(tup[0]) # 1st char of cell + _listEndCellPos.append(tup[1]) # last char of cell (not including delimiter) + +_dictStartCellPos = {} +for i in range(4): + _dictStartCellPos[_listCells[i]] = _listStartCellPos[i] + + +class wxTimeCtrl(wxTextCtrl): + def __init__ ( + self, parent, id=-1, value = '12:00:00 AM', + pos = wxDefaultPosition, size = wxDefaultSize, + fmt24hr=0, + spinButton = None, + style = wxTE_PROCESS_TAB, name = "time" + ): + wxTextCtrl.__init__(self, parent, id, value='', + pos=pos, size=size, style=style, name=name) + + self.__fmt24hr = fmt24hr + + if size == wxDefaultSize: + # set appropriate default sizes depending on format: + if self.__fmt24hr: + testText = '00:00:00' + else: + testText = '00:00:00 MM' + _dbg(wxPlatform) + + if wxPlatform != "__WXMSW__": # give it a little extra space + testText += 'M' + if wxPlatform == "__WXMAC__": # give it even a little more... + testText += 'M' + + w, h = self.GetTextExtent(testText) + self.SetClientSize( (w+4, self.GetClientSize().height) ) + + + if self.__fmt24hr: self.__lastCell = 'second' + else: self.__lastCell = 'am_pm' + + # Validate initial value and set if appropriate + try: + self.SetValue(value) + except: + self.SetValue('12:00:00 AM') + + # set initial position and selection state + self.__SetCurrentCell(_dictStartCellPos['hour']) + self.__OnChangePos(None) + + # Set up internal event handlers to change the event reaction behavior of + # the base wxTextCtrl: + EVT_TEXT(self, self.GetId(), self.__OnTextChange) + EVT_SET_FOCUS(self, self.__OnFocus) + EVT_LEFT_UP(self, self.__OnChangePos) + EVT_LEFT_DCLICK(self, self.__OnDoubleClick) + EVT_CHAR(self, self.__OnChar) + + if spinButton: + self.BindSpinButton(spinButton) # bind spin button up/down events to this control + + + def BindSpinButton(self, sb): + """ + This function binds an externally created spin button to the control, so that + up/down events from the button automatically change the control. + """ + _dbg('wxTimeCtrl::BindSpinButton') + self.__spinButton = sb + if self.__spinButton: + # bind event handlers to spin ctrl + EVT_SPIN_UP(self.__spinButton, self.__spinButton.GetId(), self.__OnSpinUp) + EVT_SPIN_DOWN(self.__spinButton, self.__spinButton.GetId(), self.__OnSpinDown) + + + + def __repr__(self): + return "<wxTimeCtrl: %s>" % self.GetValue() + + + + def SetValue(self, value): + """ + Validating SetValue function for time strings, doing 12/24 format conversion as appropriate. + """ + _dbg('wxTimeCtrl::SetValue', indent=1) + dict_range = _dictCellRange # (for brevity) + dict_start = _dictStartCellPos + + fmt12len = dict_range['am_pm'][-1] + fmt24len = dict_range['second'][-1] + try: + separators_correct = value[2] == ':' and value[5] == ':' + len_ok = len(value) in (fmt12len, fmt24len) + + if len(value) > fmt24len: + separators_correct = separators_correct and value[8] == ' ' + hour = int(value[dict_range['hour'][0]:dict_range['hour'][-1]]) + hour_ok = ((hour in range(0,24) and len(value) == fmt24len) + or (hour in range(1,13) and len(value) == fmt12len + and value[dict_start['am_pm']:] in ('AM', 'PM'))) + + minute = int(value[dict_range['minute'][0]:dict_range['minute'][-1]]) + min_ok = minute in range(60) + second = int(value[dict_range['second'][0]:dict_range['second'][-1]]) + sec_ok = second in range(60) + + _dbg('len_ok =', len_ok, 'separators_correct =', separators_correct) + _dbg('hour =', hour, 'hour_ok =', hour_ok, 'min_ok =', min_ok, 'sec_ok =', sec_ok) + + if len_ok and hour_ok and min_ok and sec_ok and separators_correct: + _dbg('valid time string') + + self.__hour = hour + if len(value) == fmt12len: # handle 12 hour format conversion for actual hour: + am = value[dict_start['am_pm']:] == 'AM' + if hour != 12 and not am: + self.__hour = hour = (hour+12) % 24 + elif hour == 12: + if am: self.__hour = hour = 0 + + self.__minute = minute + self.__second = second + + # valid time + need_to_convert = ((self.__fmt24hr and len(value) == fmt12len) + or (not self.__fmt24hr and len(value) == fmt24len)) + _dbg('need_to_convert =', need_to_convert) + + if need_to_convert: #convert to 12/24 hour format as specified: + if self.__fmt24hr and len(value) == fmt12len: + text = '%.2d:%.2d:%.2d' % (hour, minute, second) + else: + if hour > 12: + hour = hour - 12 + am_pm = 'PM' + elif hour == 12: + am_pm = 'PM' + else: + if hour == 0: hour = 12 + am_pm = 'AM' + text = '%2d:%.2d:%.2d %s' % (hour, minute, second, am_pm) + else: + text = value + _dbg('text=', text) + wxTextCtrl.SetValue(self, text) + _dbg('firing TimeUpdatedEvent...') + evt = TimeUpdatedEvent(self.GetId(), text) + evt.SetEventObject(self) + self.GetEventHandler().ProcessEvent(evt) + else: + _dbg('len_ok:', len_ok, 'separators_correct =', separators_correct) + _dbg('hour_ok:', hour_ok, 'min_ok:', min_ok, 'sec_ok:', sec_ok, indent=0) + raise ValueError, 'value is not a valid time string' + + except (TypeError, ValueError): + _dbg(indent=0) + raise ValueError, 'value is not a valid time string' + _dbg(indent=0) + + def SetWxDateTime(self, wxdt): + value = '%2d:%.2d:%.2d' % (wxdt.GetHour(), wxdt.GetMinute(), wxdt.GetSecond()) + self.SetValue(value) + + def GetWxDateTime(self): + t = wxDateTimeFromHMS(self.__hour, self.__minute, self.__second) + return t + + def SetMxDateTime(self, mxdt): + from mx import DateTime + value = '%2d:%.2d:%.2d' % (mxdt.hour, mxdt.minute, mxdt.second) + self.SetValue(value) + + def GetMxDateTime(self): + from mx import DateTime + t = DateTime.Time(self.__hour, self.__minute, self.__second) + return t + +#------------------------------------------------------------------------------------------------------------- +# these are private functions and overrides: + + def __SetCurrentCell(self, pos): + """ + Sets state variables that indicate the current cell and position within the control. + """ + self.__posCurrent = pos + self.__cellStart, self.__cellEnd = _dictCellRange[pos][0], _dictCellRange[pos][-1] + + + def SetInsertionPoint(self, pos): + """ + Records the specified position and associated cell before calling base class' function. + """ + _dbg('wxTimeCtrl::SetInsertionPoint', pos, indent=1) + + # Adjust pos to legal value if not already + if pos < 0: pos = 0 + elif pos in _listDelimPos + [_dictCellRange[self.__lastCell]]: + pos = pos - 1 + if self.__lastCell == 'am_pm' and pos in _dictCellRange[self.__lastCell]: + pos = _dictStartCellPos[self.__lastCell] + + self.__SetCurrentCell(pos) + wxTextCtrl.SetInsertionPoint(self, pos) # (causes EVT_TEXT event to fire) + _dbg(indent=0) + + + def SetSelection(self, sel_start, sel_to): + _dbg('wxTimeCtrl::SetSelection', sel_start, sel_to, indent=1) + + # Adjust selection range to legal extent if not already + if sel_start < 0: + self.SetInsertionPoint(0) + sel_start = self.__posCurrent + + elif sel_start in _listDelimPos + [_dictCellRange[self.__lastCell]]: + self.SetInsertionPoint(sel_start - 1) + sel_start = self.__posCurrent + + if self.__posCurrent != sel_start: # force selection and insertion point to match + self.SetInsertionPoint(sel_start) + + if sel_to not in _dictCellRange[sel_start]: + sel_to = _dictCellRange[sel_start][-1] # limit selection to end of current cell + + self.__bSelection = sel_start != sel_to + self.__posSelectTo = sel_to + wxTextCtrl.SetSelection(self, sel_start, sel_to) + _dbg(indent=0) + + + def __OnFocus(self,event): + """ + This event handler is currently necessary to work around new default + behavior as of wxPython2.3.3; + The TAB key auto selects the entire contents of the wxTextCtrl *after* + the EVT_SET_FOCUS event occurs; therefore we can't query/adjust the selection + *here*, because it hasn't happened yet. So to prevent this behavior, and + preserve the correct selection when the focus event is not due to tab, + we need to pull the following trick: + """ + _dbg('wxTimeCtrl::OnFocus') + wxCallAfter(self.__FixSelection) + event.Skip() + + + def __FixSelection(self): + """ + This gets called after the TAB traversal selection is made, if the + focus event was due to this, but before the EVT_LEFT_* events if + the focus shift was due to a mouse event. + + The trouble is that, a priori, there's no explicit notification of + why the focus event we received. However, the whole reason we need to + do this is because the default behavior on TAB traveral in a wxTextCtrl is + now to select the entire contents of the window, something we don't want. + So we can *now* test the selection range, and if it's "the whole text" + we can assume the cause, change the insertion point to the start of + the control, and deselect. + """ + _dbg('wxTimeCtrl::FixSelection', indent=1) + sel_start, sel_to = self.GetSelection() + if sel_start == 0 and sel_to in _dictCellRange[self.__lastCell]: + # This isn't normally allowed, and so assume we got here by the new + # "tab traversal" behavior, so we need to reset the selection + # and insertion point: + _dbg('entire text selected; resetting selection to start of control') + self.SetInsertionPoint(0) + self.SetSelection(self.__cellStart, self.__cellEnd) + _dbg(indent=0) + + + def __OnTextChange(self, event): + """ + This private event handler is required to retain the current position information of the cursor + after update to the underlying text control is done. + """ + _dbg('wxTimeCtrl::OnTextChange', indent=1) + self.__SetCurrentCell(self.__posCurrent) # ensure cell range vars are set + + # Note: must call self.SetSelection here to preserve insertion point cursor after update! + # (I don't know why, but this does the trick!) + if self.__bSelection: + _dbg('reselecting from ', self.__posCurrent, 'to', self.__posSelectTo) + self.SetSelection(self.__posCurrent, self.__posSelectTo) + else: + self.SetSelection(self.__posCurrent, self.__posCurrent) + event.Skip() + _dbg(indent=0) + + def __OnSpin(self, key): + self.__IncrementValue(key, self.__posCurrent) + self.SetFocus() + self.SetInsertionPoint(self.__posCurrent) + self.SetSelection(self.__posCurrent, self.__posSelectTo) + + def __OnSpinUp(self, event): + """ + Event handler for any bound spin button on EVT_SPIN_UP; + causes control to behave as if up arrow was pressed. + """ + _dbg('wxTimeCtrl::OnSpinUp', indent=1) + self.__OnSpin(WXK_UP) + _dbg(indent=0) + + + def __OnSpinDown(self, event): + """ + Event handler for any bound spin button on EVT_SPIN_DOWN; + causes control to behave as if down arrow was pressed. + """ + _dbg('wxTimeCtrl::OnSpinDown', indent=1) + self.__OnSpin(WXK_DOWN) + _dbg(indent=0) + + + def __OnChangePos(self, event): + """ + Event handler for motion events; this handler + changes limits the selection to the new cell boundaries. + """ + _dbg('wxTimeCtrl::OnChangePos', indent=1) + pos = self.GetInsertionPoint() + self.__SetCurrentCell(pos) + sel_start, sel_to = self.GetSelection() + selection = sel_start != sel_to + if not selection: + # disallow position at end of field: + if pos in _listDelimPos + [_dictCellRange[self.__lastCell][-1]]: + self.SetInsertionPoint(pos-1) + self.__posSelectTo = self.__cellEnd + else: + # only allow selection to end of current cell: + if sel_to < pos: self.__posSelectTo = self.__cellStart + elif sel_to > pos: self.__posSelectTo = self.__cellEnd + + _dbg('new pos =', self.__posCurrent, 'select to ', self.__posSelectTo) + self.SetSelection(self.__posCurrent, self.__posSelectTo) + if event: event.Skip() + _dbg(indent=0) + + + def __OnDoubleClick(self, event): + """ + Event handler for left double-click mouse events; this handler + causes the cell at the double-click point to be selected. + """ + _dbg('wxTimeCtrl::OnDoubleClick', indent=1) + pos = self.GetInsertionPoint() + self.__SetCurrentCell(pos) + if self.__posCurrent != self.__cellStart: + self.SetInsertionPoint(self.__cellStart) + self.SetSelection(self.__cellStart, self.__cellEnd) + _dbg(indent=0) + + + def __OnChar(self, event): + """ + This private event handler is the main control point for the wxTimeCtrl. + It governs whether input characters are accepted and if so, handles them + so as to provide appropriate cursor and selection behavior for the control. + """ + _dbg('wxTimeCtrl::OnChar', indent=1) + + # NOTE: Returning without calling event.Skip() eats the event before it + # gets to the text control... + + key = event.GetKeyCode() + text = self.GetValue() + pos = self.GetInsertionPoint() + if pos != self.__posCurrent: + _dbg("insertion point has moved; resetting current cell") + self.__SetCurrentCell(pos) + self.SetSelection(self.__posCurrent, self.__posCurrent) + + sel_start, sel_to = self.GetSelection() + selection = sel_start != sel_to + _dbg('sel_start=', sel_start, 'sel_to =', sel_to) + if not selection: + self.__bSelection = False # predict unselection of entire region + + _dbg('keycode = ', key) + _dbg('pos = ', pos) + + # don't allow deletion, cut or paste: + if key in (WXK_DELETE, WXK_BACK, WXK_CTRL_X, WXK_CTRL_V): + pass + + elif key == WXK_TAB: # skip to next field if applicable: + _dbg('key == WXK_TAB') + dict_range = _dictCellRange # (for brevity) + dict_start = _dictStartCellPos + if event.ShiftDown(): # tabbing backwords + + ###(NOTE: doesn't work; wxTE_PROCESS_TAB doesn't appear to send us this event!) + + _dbg('event.ShiftDown()') + if pos in dict_range['hour']: # already in 1st field + self.__SetCurrentCell(dict_start['hour']) # ensure we have our member vars set + event.Skip() #then do normal tab processing for the form + _dbg(indent=0) + return + + elif pos in dict_range['minute']: # skip to hours field + new_pos = dict_start['hour'] + elif pos in dict_range['second']: # skip to minutes field + new_pos = dict_start['minute'] + elif pos in dict_range['am_pm']: # skip to seconds field + new_pos = dict_start['second'] + + self.SetInsertionPoint(new_pos) # force insert point to jump to next cell (swallowing TAB) + self.__OnChangePos(None) # update selection accordingly + + else: + # Tabbing forwards through control... + + if pos in dict_range[self.__lastCell]: # already in last field; ensure we have our members set + self.__SetCurrentCell(dict_start[self.__lastCell]) + _dbg('tab in last cell') + event.Skip() # then do normal tab processing for the form + _dbg(indent=0) + return + + if pos in dict_range['second']: # skip to AM/PM field (if not last cell) + new_pos = dict_start['am_pm'] + elif pos in dict_range['minute']: # skip to seconds field + new_pos = dict_start['second'] + elif pos in dict_range['hour']: # skip to minutes field + new_pos = dict_start['minute'] + + self.SetInsertionPoint(new_pos) # force insert point to jump to next cell (swallowing TAB) + self.__OnChangePos(None) # update selection accordingly + + elif key == WXK_LEFT: # move left; set insertion point as appropriate: + _dbg('key == WXK_LEFT') + if event.ShiftDown(): # selecting a range... + _dbg('event.ShiftDown()') + if pos in _listStartCellPos: # can't select pass delimiters + if( sel_to == pos+2 and sel_to != _dictCellRange['am_pm'][-1]): + self.SetSelection(pos, pos+1) # allow deselection of 2nd char in cell if not am/pm + # else ignore event + + elif pos in _listEndCellPos: # can't use normal selection, because position ends up + # at delimeter + _dbg('set selection from', pos-1, 'to', self.__posCurrent) + self.SetInsertionPoint(pos-1) # this selects the previous position + self.SetSelection(self.__posCurrent, pos) + else: + self.SetInsertionPoint(sel_to - 1) # this unselects the last digit + self.SetSelection(self.__posCurrent, pos) + + else: # ... not selecting + if pos == 0: # can't position before position 0 + pass + elif pos in _listStartCellPos: # skip (left) OVER the colon/space: + self.SetInsertionPoint(pos-2) + self.__OnChangePos(None) # set the selection appropriately + else: + self.SetInsertionPoint(pos-1) # reposition the cursor and + self.__OnChangePos(None) # set the selection appropriately + + + elif key == WXK_RIGHT: # move right + _dbg('key == WXK_RIGHT') + if event.ShiftDown(): + _dbg('event.ShiftDown()') + if sel_to in _listDelimPos: # can't select pass delimiters + pass + else: + self.SetSelection(self.__posCurrent, sel_to+1) + else: + if( (self.__lastCell == 'second' + and pos == _dictStartCellPos['second']+1) + or (self.__lastCell == 'am_pm' + and pos == _dictStartCellPos['am_pm']) ): + pass # don't allow cursor past last cell + elif pos in _listEndCellPos: # skip (right) OVER the colon/space: + self.SetInsertionPoint(pos+2) + self.__OnChangePos(None) # set the selection appropriately + else: + self.SetInsertionPoint(pos+1) # reposition the cursor and + self.__OnChangePos(None) # set the selection appropriately + + elif key in (WXK_UP, WXK_DOWN): + _dbg('key in (WXK_UP, WXK_DOWN)') + self.__IncrementValue(key, pos) # increment/decrement as appropriate + + + elif key < WXK_SPACE or key == WXK_DELETE or key > 255: + event.Skip() # non alphanumeric; process normally (Right thing to do?) + + elif chr(key) in ['!', 'c', 'C']: # Special character; sets the value of the control to "now" + _dbg("key == '!'; setting time to 'now'") + now = wxDateTime_Now() + self.SetWxDateTime(now) + + elif chr(key) in string.digits: # let ChangeValue validate and update current position + self.__ChangeValue(chr(key), pos) # handle event (and swallow it) + + elif chr(key) in ('a', 'A', 'p', 'P', ' '): # let ChangeValue validate and update current position + self.__ChangeValue(chr(key), pos) # handle event (and swallow it) + + else: # disallowed char; swallow event + pass + _dbg(indent=0) + + + def __IncrementValue(self, key, pos): + _dbg('wxTimeCtrl::IncrementValue', key, pos, indent=1) + text = self.GetValue() + + sel_start, sel_to = self.GetSelection() + selection = sel_start != sel_to + cell_selected = selection and sel_to -1 != pos + + dict_start = _dictStartCellPos # (for brevity) + + # Determine whether we should change the entire cell or just a portion of it: + if( cell_selected + or (pos in _listStartCellPos and not selection) + or (text[pos] == ' ' and text[pos+1] not in ('1', '2')) + or (text[pos] == '9' and text[pos-1] == ' ' and key == WXK_UP) + or (text[pos] == '1' and text[pos-1] == ' ' and key == WXK_DOWN) + or pos >= dict_start['am_pm']): + + self.__IncrementCell(key, pos) + else: + if key == WXK_UP: inc = 1 + else: inc = -1 + + if pos == dict_start['hour'] and not self.__fmt24hr: + if text[pos] == ' ': digit = '1' # allow ' ' or 1 for 1st digit in 12hr format + else: digit = ' ' + else: + if pos == dict_start['hour']: + if int(text[pos + 1]) >3: mod = 2 # allow for 20-23 + else: mod = 3 # allow 00-19 + elif pos == dict_start['hour'] + 1: + if self.__fmt24hr: + if text[pos - 1] == '2': mod = 4 # allow hours 20-23 + else: mod = 10 # allow hours 00-19 + else: + if text[pos - 1] == '1': mod = 3 # allow hours 10-12 + else: mod = 10 # allow 0-9 + + elif pos in (dict_start['minute'], + dict_start['second']): mod = 6 # allow minutes/seconds 00-59 + else: mod = 10 + + digit = '%d' % ((int(text[pos]) + inc) % mod) + + _dbg("new digit = \'%s\'" % digit) + self.__ChangeValue(digit, pos) + _dbg(indent=0) + + + def __IncrementCell(self, key, pos): + _dbg('wxTimeCtrl::IncrementCell', key, pos, indent=1) + self.__SetCurrentCell(pos) # determine current cell + hour, minute, second = self.__hour, self.__minute, self.__second + text = self.GetValue() + dict_start = _dictStartCellPos # (for brevity) + if key == WXK_UP: inc = 1 + else: inc = -1 + + if self.__cellStart == dict_start['am_pm']: + am = text[dict_start['am_pm']:] == 'AM' + if am: hour = hour + 12 + else: hour = hour - 12 + else: + if self.__cellStart == dict_start['hour']: + hour = (hour + inc) % 24 + elif self.__cellStart == dict_start['minute']: + minute = (minute + inc) % 60 + elif self.__cellStart == dict_start['second']: + second = (second + inc) % 60 + + newvalue = '%.2d:%.2d:%.2d' % (hour, minute, second) + + self.SetValue(newvalue) + self.SetInsertionPoint(self.__cellStart) + self.SetSelection(self.__cellStart, self.__cellEnd) + _dbg(indent=0) + + + def __ChangeValue(self, char, pos): + _dbg('wxTimeCtrl::ChangeValue', "\'" + char + "\'", pos, indent=1) + text = self.GetValue() + + self.__SetCurrentCell(pos) + sel_start, sel_to = self.GetSelection() + self.__posSelectTo = sel_to + self.__bSelection = selection = sel_start != sel_to + cell_selected = selection and sel_to -1 != pos + _dbg('cell_selected =', cell_selected, indent=0) + + dict_start = _dictStartCellPos # (for brevity) + + if pos in _listDelimPos: return # don't allow change of punctuation + + elif( 0 < pos < dict_start['am_pm'] and char not in string.digits): + return # AM/PM not allowed in this position + + # See if we're changing the hour cell, and validate/update appropriately: + # + hour_start = dict_start['hour'] # (ie. 0) + + if pos == hour_start: # if at 1st position, + if self.__fmt24hr: # and using 24 hour format + if cell_selected: # replace cell contents with hour represented by digit + newtext = '%.2d' % int(char) + text[hour_start+2:] + elif char not in ('0', '1', '2'): # return if digit not 0,1, or 2 + return + else: # relace current position + newtext = char + text[pos+1:] + else: # (12 hour format) + if cell_selected: + if char == ' ': return # can't erase entire cell + elif char == '0': # treat 0 as '12' + newtext = '12' + text[hour_start+2:] + else: # replace cell contents with hour represented by digit + newtext = '%2d' % int(char) + text[hour_start+2:] + else: + if char not in ('1', ' '): # can only type a 1 or space + return + if text[pos+1] not in ('0', '1', '2'): # and then, only if other column is 0,1, or 2 + return + if char == ' ' and text[pos+1] == '0': # and char isn't space if 2nd column is 0 + return + else: # ok; replace current position + newtext = char + text[pos+1:] + if char == ' ': self.SetInsertionPoint(pos+1) # move insert point to legal position + + elif pos == hour_start+1: # if editing 2nd position of hour + if( not self.__fmt24hr # and using 12 hour format + and text[hour_start] == '1' # if 1st char is 1, + and char not in ('0', '1', '2')): # disallow anything bug 0,1, or 2 + return + newtext = text[hour_start] + char + text[hour_start+2:] # else any digit ok + + # Do the same sort of validation for minute and second cells + elif pos in (dict_start['minute'], dict_start['second']): + if cell_selected: # if cell selected, replace value + newtext = text[:pos] + '%.2d' % int(char) + text[pos+2:] + elif int(char) > 5: return # else disallow > 59 for minute and second fields + else: + newtext = text[:pos] + char + text[pos+1:] # else ok + + elif pos in (dict_start['minute']+1, dict_start['second']+1): + newtext = text[:pos] + char + text[pos+1:] # all digits ok for 2nd digit of minute/second + + # Process AM/PM cell + elif pos == dict_start['am_pm']: + char = char.upper() + if char not in ('A','P'): return # disallow all but A or P as 1st char of column + newtext = text[:pos] + char + text[pos+1:] + else: return # not a valid position + + _dbg(indent=1) + # update member position vars and set selection to character changed + if not cell_selected: + _dbg('reselecting current digit') + self.__posSelectTo = pos+1 + + _dbg('newtext=', newtext) + self.SetValue(newtext) + self.SetInsertionPoint(self.__posCurrent) + self.SetSelection(self.__posCurrent, self.__posSelectTo) + _dbg(indent=0) + + + def Cut(self): + """ + Override wxTextCtrl::Cut() method, as this operation should not + be allowed for wxTimeCtrls. + """ + return + + + def Paste(self): + """ + Override wxTextCtrl::Paste() method, as this operation should not + be allowed for wxTimeCtrls. + """ + return + + +#---------------------------------------------------------------------------- +# Test jig for wxTimeCtrl: + +if __name__ == '__main__': + import traceback + + class TestPanel(wxPanel): + def __init__(self, parent, id, + pos = wxPyDefaultPosition, size = wxPyDefaultSize, + fmt24hr = 0, test_mx = 0, + style = wxTAB_TRAVERSAL ): + + wxPanel.__init__(self, parent, id, pos, size, style) + + self.test_mx = test_mx + + self.tc = wxTimeCtrl(self, 10, fmt24hr = fmt24hr) + sb = wxSpinButton( self, 20, wxDefaultPosition, wxSize(-1,20), 0 ) + self.tc.BindSpinButton(sb) + + sizer = wxBoxSizer( wxHORIZONTAL ) + sizer.AddWindow( self.tc, 0, wxALIGN_CENTRE|wxLEFT|wxTOP|wxBOTTOM, 5 ) + sizer.AddWindow( sb, 0, wxALIGN_CENTRE|wxRIGHT|wxTOP|wxBOTTOM, 5 ) + + self.SetAutoLayout( True ) + self.SetSizer( sizer ) + sizer.Fit( self ) + sizer.SetSizeHints( self ) + + EVT_TIMEUPDATE(self, self.tc.GetId(), self.OnTimeChange) + + def OnTimeChange(self, event): + _dbg('OnTimeChange: value = ', event.GetValue()) + wxdt = self.tc.GetWxDateTime() + _dbg('wxdt =', wxdt.GetHour(), wxdt.GetMinute(), wxdt.GetSecond()) + if self.test_mx: + mxdt = self.tc.GetMxDateTime() + _dbg('mxdt =', mxdt.hour, mxdt.minute, mxdt.second) + + + class MyApp(wxApp): + def OnInit(self): + import sys + fmt24hr = '24' in sys.argv + test_mx = 'mx' in sys.argv + try: + frame = wxFrame(NULL, -1, "wxTimeCtrl Test", wxPoint(20,20), wxSize(100,100) ) + panel = TestPanel(frame, -1, wxPoint(-1,-1), fmt24hr=fmt24hr, test_mx = test_mx) + frame.Show(True) + except: + traceback.print_exc() + return False + return True + + try: + app = MyApp(0) + app.MainLoop() + except: + traceback.print_exc() diff --git a/wxPython/wxPython/lib/vtk.py b/wxPython/wxPython/lib/vtk.py index 6a6c977185..676932d215 100644 --- a/wxPython/wxPython/lib/vtk.py +++ b/wxPython/wxPython/lib/vtk.py @@ -136,7 +136,7 @@ class wxVTKRenderWindowBase(wxWindow): def OnCreateWindow(self, event): - hdl = self.GetHandle() + hdl = self.GetHandle() try: self._RenderWindow.SetParentInfo(str(hdl)) except: @@ -163,7 +163,7 @@ class wxVTKRenderWindowBase(wxWindow): # Windows. #self._RenderWindow.GetSize() # - self._RenderWindow.SetSize(sz.width, sz.height) + self._RenderWindow.SetSize(sz.width, sz.height) def OnLeftButtonDown(self, event): diff --git a/wxPython/wxPython/lib/wxPlotCanvas.py b/wxPython/wxPython/lib/wxPlotCanvas.py index 926333c92d..0a4ec48da1 100644 --- a/wxPython/wxPython/lib/wxPlotCanvas.py +++ b/wxPython/wxPython/lib/wxPlotCanvas.py @@ -20,7 +20,6 @@ Original comment follows below: """ from wxPython import wx -import string # Not everybody will have Numeric, so let's be cool about it... try: @@ -32,7 +31,7 @@ imported. It probably is not installed (it's not part of the standard Python distribution). See the Python site (http://www.python.org) for information on downloading source or binaries.""" - if wxPlatform == '__WXMSW__': + if wx.wxPlatform == '__WXMSW__': d = wx.wxMessageDialog(wx.NULL, msg, "Numeric not found") if d.ShowModal() == wx.wxID_CANCEL: d = wx.wxMessageDialog(wx.NULL, "I kid you not! Pressing Cancel won't help you!", "Not a joke", wx.wxOK) @@ -172,8 +171,10 @@ class PlotGraphics: class PlotCanvas(wx.wxWindow): - def __init__(self, parent, id = -1): - wx.wxWindow.__init__(self, parent, id, wx.wxPyDefaultPosition, wx.wxPyDefaultSize) + def __init__(self, parent, id=-1, + pos = wx.wxDefaultPosition, size = wx.wxDefaultSize, + style = 0, name = 'plotCanvas'): + wx.wxWindow.__init__(self, parent, id, pos, size, style, name) self.border = (1,1) self.SetClientSizeWH(400,400) self.SetBackgroundColour(wx.wxNamedColour("white")) @@ -429,7 +430,7 @@ if __name__ == '__main__': """As of this writing, printing support in wxPython is shaky at best. Are you sure you want to do this?""", "Danger!", wx.wxYES_NO) if d.ShowModal() == wx.wxID_YES: - psdc = wx.wxPostScriptDC("out.ps", wx.TRUE, self) + psdc = wx.wxPostScriptDC("out.ps", wx.True, self) self.client.redraw(psdc) def OnFileExit(self, event): @@ -455,9 +456,9 @@ Are you sure you want to do this?""", "Danger!", wx.wxYES_NO) class MyApp(wx.wxApp): def OnInit(self): frame = AppFrame(wx.NULL, -1, "wxPlotCanvas") - frame.Show(wx.TRUE) + frame.Show(wx.True) self.SetTopWindow(frame) - return wx.TRUE + return wx.True app = MyApp(0) diff --git a/wxPython/wxPython/lib/wxpTag.py b/wxPython/wxPython/lib/wxpTag.py index 8dbc44a382..1981f5b02d 100644 --- a/wxPython/wxPython/lib/wxpTag.py +++ b/wxPython/wxPython/lib/wxpTag.py @@ -89,7 +89,6 @@ from wxPython.wx import * from wxPython.html import * import wxPython.wx -import string import types #---------------------------------------------------------------------- @@ -146,12 +145,12 @@ class wxpTagHandler(wxHtmlWinTagHandler): if tag.HasParam('WIDTH'): width = tag.GetParam('WIDTH') if width[-1] == '%': - self.ctx.floatWidth = string.atoi(width[:-1], 0) + self.ctx.floatWidth = int(width[:-1], 0) width = self.ctx.floatWidth else: - width = string.atoi(width) + width = int(width) if tag.HasParam('HEIGHT'): - height = string.atoi(tag.GetParam('HEIGHT')) + height = int(tag.GetParam('HEIGHT')) self.ctx.kwargs['size'] = wxSize(width, height) # parse up to the closing tag, and gather any nested Param tags. @@ -163,18 +162,18 @@ class wxpTagHandler(wxHtmlWinTagHandler): obj = apply(self.ctx.classObj, (parent,), self.ctx.kwargs) - obj.Show(true) + obj.Show(True) # add it to the HtmlWindow self.GetParser().GetContainer().InsertCell(wxHtmlWidgetCell(obj, self.ctx.floatWidth)) self.ctx = None - return true + return True def HandleParamTag(self, tag): if not tag.HasParam('NAME'): - return false + return False name = tag.GetParam('NAME') value = "" @@ -185,7 +184,7 @@ class wxpTagHandler(wxHtmlWinTagHandler): if name == 'id': theID = -1 try: - theID = string.atoi(value) + theID = int(value) except ValueError: theID = getattr(self.ctx.classMod, value) value = theID @@ -202,15 +201,15 @@ class wxpTagHandler(wxHtmlWinTagHandler): # convert to wxColour elif value[0] == '#': try: - red = string.atoi('0x'+value[1:3], 16) - green = string.atoi('0x'+value[3:5], 16) - blue = string.atoi('0x'+value[5:], 16) + red = int('0x'+value[1:3], 16) + green = int('0x'+value[3:5], 16) + blue = int('0x'+value[5:], 16) value = wxColor(red, green, blue) except: pass self.ctx.kwargs[str(name)] = value - return false + return False #---------------------------------------------------------------------- @@ -229,7 +228,7 @@ class _Context: # Function to assist with importing packages def _my_import(name): mod = __import__(name) - components = string.split(name, '.') + components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod @@ -241,27 +240,27 @@ def _my_import(name): def _param2dict(param): i = 0; j = 0; s = len(param); d = {} while 1: - while i<s and param[i] == " " : i = i+1 - if i>=s: break - j = i - while j<s and param[j] != "=": j=j+1 - if j+1>=s: - break - word = param[i:j] - i=j+1 - if (param[i] == '"'): - j=i+1 - while j<s and param[j] != '"' : j=j+1 - if j == s: break - val = param[i+1:j] - elif (param[i] != " "): - j=i+1 - while j<s and param[j] != " " : j=j+1 - val = param[i:j] - else: - val = "" - i=j+1 - d[word] = val + while i<s and param[i] == " " : i = i+1 + if i>=s: break + j = i + while j<s and param[j] != "=": j=j+1 + if j+1>=s: + break + word = param[i:j] + i=j+1 + if (param[i] == '"'): + j=i+1 + while j<s and param[j] != '"' : j=j+1 + if j == s: break + val = param[i+1:j] + elif (param[i] != " "): + j=i+1 + while j<s and param[j] != " " : j=j+1 + val = param[i:j] + else: + val = "" + i=j+1 + d[word] = val return d #---------------------------------------------------------------------- diff --git a/wxPython/wxPython/tools/XRCed/CHANGES b/wxPython/wxPython/tools/XRCed/CHANGES deleted file mode 100644 index 89b20ff696..0000000000 --- a/wxPython/wxPython/tools/XRCed/CHANGES +++ /dev/null @@ -1,74 +0,0 @@ -0.0.7 ------ - -Some command-line arguments. - -"Test window" command and toolbar button. - -New panel interphace (wxHTMLWindow is not used anymore). - -Toggling between embedded and detached panel. - -Cache for already used windows. - -Current top-level control is bold, if test window shown. - -Undo/redo broken. - -CheckListBox does not work unless wxXRC source fixed (in both wxPytnon and -wxWin): - -contrib/src/xrc/xmlrsall.cpp -45,46c45,46 -< AddHandler(new wxListCtrlXmlHandler); -< #if CHECKLISTBOX ---- -> AddHandler(new wxListCtrlXmlHandler); -> #if wxUSE_CHECKLISTBOX - - -0.0.6 ------ - -Toolbar, bitmap, icon support (no display yet). - -Changed parameter objects, added support for multiple parameters (like -`growablecols'). - -Fixed double-clicking problem with tree control on Windows. - -Some performance improovements. - - -0.0.5 ------ - -Added notebook with properties page and style page. Fixed some problems -on Windows. - - -0.0.4 ------ - -Some fixes suggested by RD - - -0.0.3 ------ - -Faster preview window refresh. - -Cut/Paste works better. - -Some tree icons. - -Tree item names. - -Bugfixes. - - -0.0.2 ------ - -The first release. - diff --git a/wxPython/wxPython/tools/XRCed/CHANGES.txt b/wxPython/wxPython/tools/XRCed/CHANGES.txt new file mode 100644 index 0000000000..3945253906 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/CHANGES.txt @@ -0,0 +1,162 @@ +0.1.0 +----- + +Finally implemented tools panel for almost all controls (except +wxHtmlWindow, wxCalendarCtrl and wxGenericDirCtrl - they are too +rarely used). + +Changed some sizes in panel to better work with different fonts. + +Fixed double-refreshing after Ctrl+R. + +Maybe something else that I've forgot. It's been a looong day... :) + +0.0.9-6 +------- + +Added dialog unit support. + +Dealing with non-specified required values (set to defaults, if exist). + +Added 'minsize' parameter of sizeritem. + +Added '-i' option to turn off translations and use international characters. + +0.0.9-5 +------- + +Mac platform-specific checks. + +0.0.9-4 +------- + +Implemented standard bitmap selection. + +Fixed a bug in FlexGridSizer code. + +0.0.9-3 +------- + +File browsing (for bitmaps/icons, etc.) had a small problem when current +file was not saved yet. + +0.0.9-2 +------- + +Small bug fix for initial don't panic message. + +0.0.9-1 +------- + +Changed program structure, reduced use of global variables (grouped in +module 'globals', which creates an instanse 'g' of class Globals. + +First version of undo/redo working! + +Support for toolbars inside panels and frames. + +Added 'container' submenu for creating Panel, Notebook and ToolBar objects. + +wxMSW-only: added code to switch focus back to main window when test +window is updated. + +0.0.8-2 +------- + +Fixed unicode problem for unicode build. + +0.0.8-1 +------- + +Using WX_2_4_BRANCH. + +Added new controls: wxSpinCtrl, wxGenericDirCtrl, unknown (custom +control), improved wxXRC format suppor (menu styles, etc.). + +Some I18N support: parsing "encoding" attribute in XML header, later +it can be modified in "properties" panel for "XML tree". + +UNIX note: currently XML writing for non-ascii chars works only if +sys.getdefaultencoding() returns good value. To do this, one has to +put following lines to "sitecustomize.py" file: + +# Start code segment +import sys +sys.setdefaultencoding('iso-8859-1') # or whatever +# End code segment + +0.0.7 +----- + +Some command-line arguments. + +"Test window" command and toolbar button. + +New panel interphace (wxHTMLWindow is not used anymore). + +Toggling between embedded and detached panel. + +Cache for already used windows. + +Current top-level control is bold, if test window shown. + +Undo/redo broken. + +CheckListBox does not work unless wxXRC source fixed (in both wxPytnon and +wxWin): + +contrib/src/xrc/xmlrsall.cpp +45,46c45,46 +< AddHandler(new wxListCtrlXmlHandler); +< #if CHECKLISTBOX +--- +> AddHandler(new wxListCtrlXmlHandler); +> #if wxUSE_CHECKLISTBOX + +This is fixed in CVS. + +0.0.6 +----- + +Toolbar, bitmap, icon support (no display yet). + +Changed parameter objects, added support for multiple parameters (like +`growablecols'). + +Fixed double-clicking problem with tree control on Windows. + +Some performance improovements. + + +0.0.5 +----- + +Added notebook with properties page and style page. Fixed some problems +on Windows. + + +0.0.4 +----- + +Some fixes suggested by RD + + +0.0.3 +----- + +Faster preview window refresh. + +Cut/Paste works better. + +Some tree icons. + +Tree item names. + +Bugfixes. + + +0.0.2 +----- + +The first release. + diff --git a/wxPython/wxPython/tools/XRCed/README b/wxPython/wxPython/tools/XRCed/README.txt similarity index 92% rename from wxPython/wxPython/tools/XRCed/README rename to wxPython/wxPython/tools/XRCed/README.txt index 133ee2a2e5..684e17bca5 100644 --- a/wxPython/wxPython/tools/XRCed/README +++ b/wxPython/wxPython/tools/XRCed/README.txt @@ -7,10 +7,11 @@ Installation on UNIX -------------------- -XRCed requires wxGTK and wxPython greater than 2.3.2, and Python 2.2 (it may -work with earlier version, but was not tested). +XRCed requires wxGTK and wxPython greater or equal to 2.3.3, and Python 2.2 +(it may work with earlier version, but was not tested). -Of course wxGTK's XRC library (libwxxrc) must be installed. +Of course wxGTK's XRC library (libwxxrc) and it's python module must +be installed. Installation on Windows ----------------------- diff --git a/wxPython/wxPython/tools/XRCed/TODO b/wxPython/wxPython/tools/XRCed/TODO.txt similarity index 76% rename from wxPython/wxPython/tools/XRCed/TODO rename to wxPython/wxPython/tools/XRCed/TODO.txt index 4b9cc1b2b3..78575cbba7 100644 --- a/wxPython/wxPython/tools/XRCed/TODO +++ b/wxPython/wxPython/tools/XRCed/TODO.txt @@ -1,9 +1,9 @@ TODO for XRCed ============== -- Undo/Redo +- better help -- menu - accel not displayed in preview ++ undo/redo + tree icons @@ -13,7 +13,7 @@ TODO for XRCed + XML indents -? select same notebook pages after update ++ select same notebook pages after update - put some default values in tree ctrl etc. @@ -26,4 +26,4 @@ TODO for XRCed + disable some window creation when it's not valid -- check for memory leaks from wx objects +- selecting object by clicking in test window diff --git a/wxPython/wxPython/tools/XRCed/encode_bitmaps.py b/wxPython/wxPython/tools/XRCed/encode_bitmaps.py new file mode 100644 index 0000000000..56660d3c65 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/encode_bitmaps.py @@ -0,0 +1,27 @@ + +import sys, os, glob +from wxPython.tools import img2py + +output = 'images.py' + +# get the list of PNG files +files = glob.glob('src-images/*.png') + +# Truncate the inages module +open(output, 'w') + +# call img2py on each file +for file in files: + + # extract the basename to be used as the image name + name = os.path.splitext(os.path.basename(file))[0] + + # encode it + if file == files[0]: + cmd = "-u -i -n %s %s %s" % (name, file, output) + else: + cmd = "-a -u -i -n %s %s %s" % (name, file, output) + img2py.main(cmd.split()) + + + diff --git a/wxPython/wxPython/tools/XRCed/globals.py b/wxPython/wxPython/tools/XRCed/globals.py new file mode 100644 index 0000000000..a9147ae687 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/globals.py @@ -0,0 +1,39 @@ +# Name: globals.py +# Purpose: XRC editor, global variables +# Author: Roman Rolinsky <rolinsky@mema.ucl.ac.be> +# Created: 02.12.2002 +# RCS-ID: $Id$ + +from wxPython.wx import * +from wxPython.xrc import * + +# Global constants + +sysFont = wxSystemSettings_GetFont(wxSYS_SYSTEM_FONT) +labelFont = wxFont(sysFont.GetPointSize(), wxDEFAULT, wxNORMAL, wxBOLD) +modernFont = wxFont(sysFont.GetPointSize(), wxMODERN, wxNORMAL, wxNORMAL) +smallerFont = wxFont(sysFont.GetPointSize()-2, wxDEFAULT, wxNORMAL, wxNORMAL) + +progname = 'XRCed' +version = '0.1.0' + +try: + True +except NameError: + True = 1==1 + False = 1==0 + +# Global variables + +class Globals: + panel = None + tree = None + frame = None + tools = None + undoMan = None + testWin = None + testWinPos = wxDefaultPosition + currentXXX = None + xmlFlags = wxXRC_USE_LOCALE | wxXRC_NO_SUBCLASSING + +g = Globals() diff --git a/wxPython/wxPython/tools/XRCed/images.py b/wxPython/wxPython/tools/XRCed/images.py index 924c55d463..167959b681 100644 --- a/wxPython/wxPython/tools/XRCed/images.py +++ b/wxPython/wxPython/tools/XRCed/images.py @@ -1,368 +1,1675 @@ #---------------------------------------------------------------------- -# This file was generated by img2py.py +# This file was generated by encode_bitmaps.py # -from wxPython.wx import wxBitmapFromXPMData, wxImageFromBitmap -import cPickle, zlib +from wxPython.wx import wxImageFromStream, wxBitmapFromImage +from wxPython.wx import wxEmptyIcon +import cStringIO -def getIconData(): - return cPickle.loads(zlib.decompress( -'x\xda\x9d\x90\xbb\x0e\xc20\x0cEw\xbe\xc2\x12C\x91"Y-\xa2\x82\xd1\x80\xd45C\ -\x97\xac\x88\x11\xa4\xf0\xff\x13\xd7Nh\xa0\xcd\x00\xb8y\xf4\xe6\xf8\x95l\xee\ -\x8fn56\xdb\x1da\xec\xa9kV\x97\xb1\tt\xa5\xd3\xfdr\xbd\x99b\xa8\xf5\xf1\xa0\ -\x9fi\xa7\xba\x85\rI\xcb\x8bg\x1dU\xf7m\xbf\xeb[\xd3\xfe\xa53\'\xd5\xc3a8O\ -\xban_@\x0eL10\x07X\xc4iL[\x8e\x8c\x81 \xe1\xc3\xea\x17\xd4/NPct\x85{0N\xcc\ -\xa5f\xb4\x83\x94\xd6|\xde\x1b\xb2"\x9a\x16\x05\xe6\x10\x81\x08\xe5\x9cZ\x1d\ -K\xcd\xd4\xed\x04-}\xb9\n\n\x12\xdb\xb0\x99\x0e\xe8\x8f\x17\xf2N~\x81\xe2}"^\ -\x16\xd0;\x18\xce\x9c\xcb?oP\x9c\xc7t\xf0\xb1\xfd\x13Z&,9z\x0eS:\x04/\x1bB:\ -\x81Q\x15jM4Z\xaf\x99\xba\xf4\xf5n\xed\x9e\x92\xef)B\x7f\xbem\x81\xfc\x04\ -\x8f\xd5\x99\xcc' )) +def getAutoRefreshData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xf3IDATx\x9c\xb5\x94\xad\x16\xc30\x08\x85\xc9\xceD$\xb2\x8fX\x19Y\x89\ +\xacD\xee\x11\'+\xe76\xb3\xb6\x94AB\xbb\x13\\\x7fr\xbf\xc0\x05\x12"B\xcf\xb8\ +uU\x07\x80{\xf4\xc7\xe7\xb2\xbc\xf5\xbb\x011\xb5\xce\x852\x90\xe2\x0f\xe6*4\ +\x0cX\x0f[\xe2\xf2\xe6-H5\x03K\x9c\x88\x92\x86\x10\x91\x0b\t{0\x96\x12\xaa\ +\xb9\x8e\xe4\xb5\xa9\x97\xbaW\x1e\x0f\x1e\x06Hs\x89(-\xd3\xf1;g\xde\xcaw\n\ +\xa0\x85\x01\x00Vq\xce\x0cc)\x90g\x1f\xe2z0 \xa6\xd5<}\x08\xe7\xfd[+\xdc\x0c\ +Z\xa1K\x04`gpiU\xc8\x12\xbd\xa6\xfa\xbf\xddwQs\xd0j\x93Z^\xbb\xc1\x97\x00\ +\x12$\x9fq>\xf6<g\xde\x80:\x9a&\xcbv\xd5\x06Z\xad\x0cp\xec\xbaS\xab\x82\xc4e\ +tV\xd6\x90\x01\x04Jd\xad\x06o}[\x11\x9e\x03\xcbl\xbda\xff\x02|\x85~ 5\xf1\ +\xd3\x80+\xd1}\xd0>\x19\xfd\x9b\x08\x1e\xad\xb3\x97\x00\x00\x00\x00IEND\xaeB\ +`\x82' -def getIconBitmap(): - return wxBitmapFromXPMData(getIconData()) +def getAutoRefreshBitmap(): + return wxBitmapFromImage(getAutoRefreshImage()) -def getIconImage(): - return wxImageFromBitmap(getIconBitmap()) +def getAutoRefreshImage(): + stream = cStringIO.StringIO(getAutoRefreshData()) + return wxImageFromStream(stream) -#---------------------------------------------------------------------- -def getNewData(): - return cPickle.loads(zlib.decompress( -"x\xda\xd3\xc8)0\xe4\nV72Q02V0Q0T\xe7J\x0cV\xd7SHVp\xcaIL\xce\x06\xf3\xf2\ -\x81<eK\x03\x10\x04\xf3\x15\x80|\xbf\xfc\xbcT0'\x02$\xe9f\xe1\xe6\xecf\x01\ -\x95\xc4\x0e\x06ZR\x0f\n\xb0KF\x80\x01B\x16\x9bd\x84\x1e>\x9d0\xbdX$A\xf2\ -\xf9\xc3Z\x12\x010%\x15\xf2\x11` S\x82\x1e\x00-\xd9\x8b\xfa" )) - -def getNewBitmap(): - return wxBitmapFromXPMData(getNewData()) - -def getNewImage(): - return wxImageFromBitmap(getNewBitmap()) - -#---------------------------------------------------------------------- -def getOpenData(): - return cPickle.loads(zlib.decompress( -'x\xda\xcd\x92\xb1\n\xc3 \x10\x86\xf7<\xc5A\x07\x0b\x81#IK\xb1\xab\x01\xc7:d\ -\xb95\x84N\r\xbd\xbe\xff\xd4hb\xb5j\xbb\xb6\xbf\x08~|\xde)\xe2~~\xb4\xd5 \ -\xba#t\x078A+\xaaq\x10\x08\x13\xa8y\x9cn\x8e\xccB\xbbsc\x87c\xb2\xac\xa5\xee\ -\x9b\x95a\xe1\x0b\xdf\xaf\x0e\xd8K-\x1d\xd7\x96\x95Tas9\x7f"\x11\xf1\xa3D7\ -\xf1K[Leh\xe7\x97A"1\xe1\x9a\xfcB\xc8\xb4\r4\xb9\xf4\x8eJ\x92C\xdf\xf2\x99\ -\xb5\x8f\xab\x8e+9v\x89\xa4\xd4\xc52so\xf2\x95\xcd\xc5/dB~\xfb\x13\xf0\t\x81\ -T\x87G' )) - -def getOpenBitmap(): - return wxBitmapFromXPMData(getOpenData()) - -def getOpenImage(): - return wxImageFromBitmap(getOpenBitmap()) - -#---------------------------------------------------------------------- -def getSaveData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV72Q02V0U0T\xe7J\x0cV\xd7SHVp\xcaIL\xce\x06\xf3\xfc\ -\x81<eK\x03\x10\x04\xf3#@|\x0b\x03\x0b\x03\x03\x08_\x01\xc8\xf7\xcb\xcfK\x05\ -s\xf2A\x92n\x16n\xcen\x16PI\xec\x80\xe6\x92z(\x00]2B/\x1f\n\x80L\x7f\xdc\x92\ -z\xf8$#\xe8&\x19\x01\xf3G\x046I\x04\xc0\xa3\x13\x8f\xb1x\xed$Y\x125\xe4\xd1%\ -\x15\xfc\x91\x01]R\x02vI=\x00\xd8\x14\x96@' )) - -def getSaveBitmap(): - return wxBitmapFromXPMData(getSaveData()) - -def getSaveImage(): - return wxImageFromBitmap(getSaveBitmap()) - -#---------------------------------------------------------------------- -def getCutData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV72Q02V0Q0T\xe7J\x0cV\xd7SHVp\xcaIL\xce\x06\xf3\xf2\ -\x81<e\x03 \xb00\x00\xf3#@|K\x03\x10\x04\xf3\x15\x80|\xbf\xfc\xbcT(\x07;\xa0\ -\x96\xa4\x1e^\xc9\x08\x145h\x92z\x102\x02\xab\x9d a\xa0\x1c\x0eI=$9L\xc9\x08\ -\xb8\xa1\x98^\xd1C\xd2\x88U\x12W \xe4\xe7\xeb\xe5\xe7\xe3\x96\x8c\xc8\xcf\ -\x87K\xa3H\x82\xc4#\xc0\x08S\x12&\x03B\xe4H\x82\x0c\x8f\x88\xc0j\'H8\x02{\ -\xf0E \x02\x80\x9a)\x81DI=\x00\x12\xa5\x85\x9f' )) - -def getCutBitmap(): - return wxBitmapFromXPMData(getCutData()) - -def getCutImage(): - return wxImageFromBitmap(getCutBitmap()) +def getAutoRefreshIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getAutoRefreshBitmap()) + return icon #---------------------------------------------------------------------- def getCopyData(): - return cPickle.loads(zlib.decompress( -'x\xda\xc5\x92\xb1\n\xc20\x10\x86\xf7>\xc5\x81C\x9c\x8e\xb4*\xc4\xd5BF3t\xc9\ -Z\x8a\x93\xc5\xf3\xfd\'\xef.vP\xee\xe6\xfe\t\x81\x9f/\xdf\r!\xc7\xf5\xddwS\ -\x18\xce0\x9c\xe0\x02}\xe8\xe6) ,p[\xe7\xe5\xa9\x8d\xb8\x1d"\'E\xedE\xfa5\ -\xca\xd2\x0e\xdc\xef\xf4zh\xa9\x02s\xcacN_hg_\x88\x1a\x0fV\xce/\xfd\x87\x15\ -\x1d\x88\xbcIc\x9b\x95\xf4 \xcbDl\xb0\x92c\xf2\xf0m\xb2i\xca\xa5\xe2\x98(r1\ -\x1e\xc11\xa1H\x1c\xb3\xc53\x1b\xdcb\xc16\\\xb2\xdfO\xc0\x0f5t\x92\x06' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xc8IDATx\x9c\xed\x95;\x0b\xc30\x0c\x84\xe5\xe2\xc1\xe3\xfd\xd4\x8c\x195\ +v\xccO\xd5\xa8\xc1\x90\x0e!!\x0fI\xe4Q\x0f\x85\x1e\x08\x8c\x06}\xdc\xd9\xc2\ +\t\x00\xb5\xd4\xab\xe9\xf4?\xe0\x8c\xb2\xd5\x14\x91\xd1\xea\x03HW\x01\xae\ +\x03\xad\xba\xa9\x08|\x0b\xe0A\xafB\x92\xb5\x07"2jU*\xb9,\x83\xa73\x9bC\x80\ +\xc1\x8d.\x04\xecU\xf2\x9b\xb4\xf6\x87^\x04\t#*\xb9l\xca\x93\xd6\x9eD:3\xba\ +\x10`]\xf4\x1a\xbcwaAn9X\x03\xb5\xf6K\x11\x111\xf3\x06\xf2\xc8\xc1\x99\xf8\ +\xccE\x9b\x87\x1c\xc5\x0b\xf8\xacL\x00\x80\xb4\xb7JD\xd4u\xe2\xc2=\xa8\xeb\ +\x80\x99\x8dg7]\xe2c\x07\x91\xe6\x17\xd3\x04\x00\x0cft\x91\xccM\xfe\xa6~\xff\ +\xc3i\x0e\xf8\x00\xb4\xedw\x96)\x01f=\x00\x00\x00\x00IEND\xaeB`\x82' def getCopyBitmap(): - return wxBitmapFromXPMData(getCopyData()) + return wxBitmapFromImage(getCopyImage()) def getCopyImage(): - return wxImageFromBitmap(getCopyBitmap()) + stream = cStringIO.StringIO(getCopyData()) + return wxImageFromStream(stream) + +def getCopyIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getCopyBitmap()) + return icon + +#---------------------------------------------------------------------- +def getCutData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xb6IDATx\x9c\xcd\x94\xd1\r\xc4 \x0cC\xcdM\xe0Q3BF`\xd4l\xd0\xfbi\xee*\ +\xd4@@B\xc2R\xff\x1a\xbf\xe2\x98\x16\x92\xd8\xa9\xcfV\xf7c\x00fvm\x05\x00\ +\x80\xaa\xbeBF\xf04@DB\xf3\x08\x9e\x06\x90,\xad\x91\x9b\xd7Z\xbb\xb3%[S7$YZs\ +U-\xd1\xdct\x8b\xda8z\xe6S\x00\x8f\xc9w1\x8af\x1a\xf0\xa6\xd1\xd7\x03S;\x90;\ +\x1a\xbd\x1f\x80\xacC\xc0\xf4\t\x9e\xd1\x98\xc9\xf5\x07/\x02z&\xb5\xf2\xf7\ +\xce\x12\xc0\x07\xdd\xa8\xa7\xe8\xb2\x9d\xf1\xb3k\xe5\xcb\x151\x00\xfd\x13\ +\x0e[\xf4\xcc\xd7\x8d\xbc\x9e\xcfX\xa2\xca\xa6j\x9a1\x8a\x94\xbe\x07\xab:s\ +\xc9G\x01\xbe\xd4=_\xff?J\x99`\x00\x00\x00\x00IEND\xaeB`\x82' + +def getCutBitmap(): + return wxBitmapFromImage(getCutImage()) + +def getCutImage(): + stream = cStringIO.StringIO(getCutData()) + return wxImageFromStream(stream) + +def getCutIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getCutBitmap()) + return icon + +#---------------------------------------------------------------------- +def getIconData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\ +\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x02\\I\ +DATx\x9c\xedV1\x92\xa40\x0c\xec\xbd\xdaG8p\xb0\xcfpp\xc1>\xc1\x01\x01\xcfPp\ +\xc1>\x81\x80\x80g(\x98`\x9e@0\x81\x9f\xe1\x80`\x9e\xe0\x80*_\xc0\xda\xd8\ +\xc63\xb0{uE\xb2\xaar\x01B\x12m\xa9%\xf3\xe2f\xe7q\xa2\xfc:\xf3\xe3\x00\xf0\ +\n\x00\xc6\x18\x0c\xc3\x00\x00\x18\xfa\x01B\n\x00\xc0\xc7\x9f\x0f\xd8\xc9\ +\x82\x88\xa0\x94\xc20\x0c0\xc6l\x82(\xa5\xd06m\xf4\x0bR\xda\xb7M\x0b\xdd\xe8\ +\xdc\xd9\xcd\xce\xbb\xd9y\xa5\x94\x07\xe0\x89\xc8\xbb\xd9\xf9\xae\xef<\x00\ +\x0f\xc0\x07\x1b\xdd\xe8\xa8+\x97nt\xb4s\xb3\xf3B\x8a\xaa]\x88\x1fV\x040\xde\ +F\x0f\xc0\x0b)\xfcx\x1bc\x80\xf16n\x000s\xd4Yk7@\x03x\xdd\xe8\xe8\x1f\xe2\ +\x971\x91\xa2\tY\x08\xd7rW5\x00\x9f$\xaef\xaa\xb4\x0b\xfa4n\x06 \xddM\x894\r\ +@D\x9e\x99=3g:7;\xcf\xcc\x1b@\xcf\xd6k\xca\x07!\x05\x84\x14\xb8O\xf7H\xae\ +\x9a\x04\xc2\xa6BDU\xdb=\xc9\xda\xd0\x18\x13?\x0e\x00\xd7\xcb\xb5\xeaDD`f0s\ +\x04Y\x03uH\xd2\xf4\xa7\xb5\xc7\'!\xf78\x10R\x9e\xd65\xd8u}\x97\xf9\xd7\xb8\ +\x153\xc0\x17\x861\x06\xba\xd1`\xe6X\x8a\xb6m\xbf\xbc\xa9\xb6Y|\xae\x97k\x9c\ +\x03\xc6\x98x\xcf\xccy\x06jm\x97\xb6\x8d\xb5v7\x03J\xa9l\xb7DT\x9d\x03eg\xc4\ +I\x18j\x99^\x89\x08v\xb213\xe1]:\xf1\x94R\xdb\xe9\x06\xa0\xeb;\x08)v\'\xe1\ +\xcb\xcfa\xf4?\x83\xdf\' T@7\'\x000\x06\x08M\xe4\xe6\xba\xcd\xe9%8\x1d\xc0\ +\xa1\x12\\/K:\xed\xb4<+\xb5\xae \xf7\t\x18\x86\xd5\xe6M\xe6\xef\x1f\xca\xdei\ +5\xde\x9c\x07\xb6KHW\x0c\x9e\xad\x8dR\xeb\xfd\xa3\xf8\xbb\x00\xd2`\xcc\xcb\n\ +:\xdd\x84i\xb8\xea\x88\x96\xe7\x12\xd0\xb7\x00\x84\xc0B.\x99X\x0f\x9b50\xf3\ +\xfa\xacT\xee\x7f$\x03\x878p\x9f\x80\xf7\xdf\xfbv\xe5/\x01\xd1\xda\x86\x8f\ +\xe4\x10\x00\xf1\x84PB\x1e\x89\xf0\x8f\x00\xde$0\xf4\xeb\xc7\x8cY\xb2R\x023&\ +\x9fx\x95?\xf8\xad<\xe3\x80\xb59\xb9\x82^\xc8\x9c\x84]\xbf\xda\x05\xae\x94\ +\xdd\xf3\xed.\xa8\xb5W\x19\xd4\xda\x9cp)\xe8=\x00\xbb\x93\xb0\xeb\x01\xe6<\ +\xd5\xcc\xf9l\x17\xb2nsd\x10\xfd\xfc\x0f\x9c\x0e\xe0/\xa6u\x89KB\x8f8O\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getIconBitmap(): + return wxBitmapFromImage(getIconImage()) + +def getIconImage(): + stream = cStringIO.StringIO(getIconData()) + return wxImageFromStream(stream) + +def getIconIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getIconBitmap()) + return icon + +#---------------------------------------------------------------------- +def getNewData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00uIDATx\x9c\xed\xd5\xbb\n\xc0 \x0c\x05\xd0\x9b\xe2\x90\xf1~\xb2\x9f\x9c1\ +\x83`\xa7v\xf2EEJ\xa9\x01\x17\x03\x1e\x0c\x89\nI\xac\x8cc\xe9\xe9\x1b\x18\ +\x89\xd0J\x9aYn\xe5I\xca\x14\x00\x00\x9e\xbc\xb8\xafAaf\xb9\x87L\x95\xc8\x93\ +wo9\x05hP\x00\xedR>\x06<\xf9\xbd\x00 \xc6XD\xbe\xdf\xa6\x1b\xf8\x01\xd0}*\ +\xaeaZ\x02\x90\x94\xda\x00\x8d\x86\xec/\xf3u\xe0\x04ND$:\xe8\xc5\xf5\x91\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getNewBitmap(): + return wxBitmapFromImage(getNewImage()) + +def getNewImage(): + stream = cStringIO.StringIO(getNewData()) + return wxImageFromStream(stream) + +def getNewIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getNewBitmap()) + return icon + +#---------------------------------------------------------------------- +def getOpenData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xc9IDATx\x9c\xed\x951\x0e\xc3 \x0cE?U\x07F\x1f\xaaC\x8f\xe5#p\x9c\x0e=\ +\x94G\x06$:\xa4T\x84\x04C\x11\x0c\x95\xfa\xa5\x88("\xefa;R\x0c\x11ae.K\xe9\ +\x7fAO\xae\xa3/\x8aHL\xf7Ddj\xfb\x86*\x10\x91HD&]I\x96KS\xcc\xac\xcf4\xc1\ +\xcbj\xaa-\xeamA\xb9\xb7\xcci\x05"\x12}\x00\x00\x0f\xc0\xc2*\x93j\xc9\x95\ +\x19lp\xc0\xc3\x07\xc0\x87\xe3\n\x00\xcc\\=}C`w\x92\xf3\xb5\x1d\xa5E{\x98\ +\xd6\xa6<\xddC.\xe1\x8fg\x1b~\xbfm-c\xe6\x8f\xa41\x03|\x05w\xce\x1d\x9e\xab\ +\x15\x8c\xc0\xf3\xd3\x03J\x053\xe0\x802\xe46z\x8b\x06\xaf\n\xde/tKjpU0+\xbf\ +\xff\xc3Y.x\x01\xfcgd\xb8c~\xd8\x9d\x00\x00\x00\x00IEND\xaeB`\x82' + +def getOpenBitmap(): + return wxBitmapFromImage(getOpenImage()) + +def getOpenImage(): + stream = cStringIO.StringIO(getOpenData()) + return wxImageFromStream(stream) + +def getOpenIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getOpenBitmap()) + return icon #---------------------------------------------------------------------- def getPasteData(): - return cPickle.loads(zlib.decompress( -'x\xda\xcd\x92\xb1\n\x830\x10\x86w\x9f\xe2\xa0\x83\x85\xc0\x11m\xa1\xe9\x16Z\ -p\xec\r.YE:U\x9a\xbe\xff\xe4]48x\xe9V\xe8\'\xc2\xfd|\xf7g\x88\x1e\xa7OS\xf5u\ -{\x86\xf6\x04\x17h\xeaj\xe8k\x84\x11n\xd30\xbeR2\x9c\x0e\x96q6e\x92|\xb5\xf2\ -\xa4\x1c$w\xae\xbb\xdb%G\xc9\xce\xba\xbc\x0f\x9c\x1f\xf1\xfdL\xc1\xe7\xe5\ -\xce\xadR\xe7\x0f$2\xaa\x14\x81!\xe0\xb6\xb0I\x8c1"\xab\x90\x86\xbd\xe4\x9e \ -\x13\xed\xe5\x8a*7ti\x16\n\xd2\x0b\xc6|\x93\xde\xe8\x92\x0f\x95\x97\x8aM\xee\ -R\xa9)]R\xae\xaf\xd0\x04 \xc6dH\xfbd\x94\xf9\xe9\x9f\x803\xb0L\x99\x05' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xcfIDATx\x9c\xed\x95\xb1\x0e\xc3 \x0cD\x8f\x8a\x81\xd1\x9f\x9a\xb1\xa3G\ +>\xd7#\x03\x12\x1d*R\x02\xa6A$\x0c\x95zR\x14@p\x0f0\x18CDX\xa9\xc7R\xf7?`Dv\ +\xb4\xa3\x88\xa4\xb2NDfd\x9c\xe9\x9d\xa2\xda\x10\x00B|\xff\x9d2\xad\x1eP]\ +\x81\x88$f\xde\xeb\xcc\x8c\x10?\xc6\xb9\\\xf5I\x1a\xe44\x06\xd9<\x1b\x97\xe5\ +\x12\x90!C+\xa8\xa5m\xc9\xa8N\x87\xd6\xb3\xbc\x1dp\x84-\x06\x00@\x88\xcf\xa6\ +\xcdY\x0f@\xa7_\xd8\xdd\x16\xec\xacG}\xea\xa7n\xb2\xb3~\xff\xca6\xa0=IS+\xa8\ +\xb7)\xd7K\xe0%\x80f\xa4\xc5\xa6\x0b "\xa3]\x9a\x1c\xc8\x9e\xd90\xa0\x07\xd9\ +6Qg?\x05\x00\x00f>\xe4\x16"=\x1d|S7\x9b\xde\xa5\xdf\x7f\xd1^\xf7\xdbLY\x05\ +\x8av\xd9\x00\x00\x00\x00IEND\xaeB`\x82' def getPasteBitmap(): - return wxBitmapFromXPMData(getPasteData()) + return wxBitmapFromImage(getPasteImage()) def getPasteImage(): - return wxImageFromBitmap(getPasteBitmap()) + stream = cStringIO.StringIO(getPasteData()) + return wxImageFromStream(stream) -#---------------------------------------------------------------------- -def getTestData(): - return cPickle.loads(zlib.decompress( -'x\xda\x95\xd2=\x0b\xc20\x10\x06\xe0\xbd\xbf\xe2\xc0\xa1N\xa1\x1f\n\xba*t\ -\xf4\x86.\xb7\x96\xe2d\xf1\xfc\xff\x93\xb9$\xcd5M\xa9xY\xf2\xf2\x10r$w\x9c>u\ -\xd1\x97\xcd\t\x9a\x16\xceP\x97\xc5\xd0\x97\x06F\xb8M\xc3\xf8r\x89l:\xb4\x95\ -,\x97Q\xf2\xb5\x92\xe52K\xee.\xdd\xbd\xf2\x19l~\xf0\xfb\x19\xc2v\xfd\x81Fj\ -\x1b\xcd\\9\x12\xd1\x8cD+$f\x0efw\xb4\x8b\xb8D\xb1\xa0nG\xbb\x88\x8a\xde,r@w\ -4A\x07\x8b\xa3\x01\xb5\x95\xd8V\x86Fm\x03M\xb4\x05\xaaF\xcb1\xb9R_h\xd5\x10f\ -\xc8\x1c\x15\xd3_\x89&\x8a+\x04$\xff\x14D\xe8-\x9d\x04\xcb\xa4\x94\xcd\x10\ -\xa2\xd2\xef\x013_\xba\x1d\xa3N' )) - -def getTestBitmap(): - return wxBitmapFromXPMData(getTestData()) - -def getTestImage(): - return wxImageFromBitmap(getTestBitmap()) +def getPasteIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getPasteBitmap()) + return icon #---------------------------------------------------------------------- def getRefreshData(): - return cPickle.loads(zlib.decompress( -'x\xda\xad\xd2\xbb\x0e\xc20\x0c\x05\xd0\xbd_q%\x860]\xf5\xc1\x00?\xc0\xc8\ -\xd2\xc5+Bl\xa8\xed\xffO\xcd\xab\xa9\x01\x17\t\x81\xb3\xc4:\x8a\x15;\xd9?\ -\xa6\xa6\xea]{@\xdb\xa1C\xe3\xaak\xef\x047\xecNuX1\x87\xcf/\xe3p\x8f\t\x03\ -\x9e\x8f\xb5\x8f\x8cv|\x83\x0c\xb1\x81^D\xa9BF\x13\xac\xaa1Y\xd8\x88\x89\xc4\ -\'d\xdal\x94\xd5u\x9f0\x91\x89\xc8d\xa3j\xf7\x9f\xb8t@\x1bY\xae\xfd^6\x9f\ -\xb0&\xb4\x1c\xa5\x8dQY\xaa\x9a\x8f]\x86\xf1\xda\x8a\x88\x14\xc3O\x1f\x8c3\ -\x1dNw\xdd' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xcaIDATx\x9c\xc5\x94\xc1\x11\x84 \x0cE\x93\x1d\x0b\xc8\xd1\x12=RBJ\xc8\ +\x91\x12=\xd2\x81{\x91\x19\xcc\x12\x082\xcc\xfe\x9b"\xff\xc17\t\x12\x11\xac\ +\xd4g\xa9;\x00l\xde\x0f\xcf\x94.\xfdn\'\xc2\xde>\xd7\rJ\xf3(\xd2\x84\xba\x01\ +ys\xcd\xbc<y\x0f\xd2\xbcA\xcd\x9c\x99QC\x98\xd9\x84\xb8\xff\xc1\x11\x82+s-\ +\xb4\xca\xd4\xba\xba\x15\x8f\x05w\x97i\x14\x81(\xf2\x88\xc3\x13S7\xa2\xb2jr\ +\xfe#2\x01;\x11\xe6S\xbd1\xee\x02f\x8d\xb3\x96\x8f\x8a\xff\x02\xce\x94\xaeV\ +\xa7N\x8d\x8a\x11\xa3\xb2\xd2\x86\x00\xdeqp\xaf\xcf5\xda\x11\xc2\xe3\xd9\x13\ +\x8f\x0bP\x1b\r\xd6\xf8\xae\xc9\x9cEZ\xb5\x13\xeb\t;\x05\xb8\x8d~ \xbdf\x1c\ +\x02\xbc\xd1\xf2F\xfb\x02O\x82o\x1e\xb4]1\xc3\x00\x00\x00\x00IEND\xaeB`\x82'\ + def getRefreshBitmap(): - return wxBitmapFromXPMData(getRefreshData()) + return wxBitmapFromImage(getRefreshImage()) def getRefreshImage(): - return wxImageFromBitmap(getRefreshBitmap()) + stream = cStringIO.StringIO(getRefreshData()) + return wxImageFromStream(stream) + +def getRefreshIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getRefreshBitmap()) + return icon #---------------------------------------------------------------------- -def getAutoRefreshData(): - return cPickle.loads(zlib.decompress( -'x\xda\x95\xd2;\x0e\xc20\x0c\x06\xe0\xbd\xa7\xb0\xc4\x10&+-\x1d\xca\x05\x18Y\ -\xba\xfc+Bl\x08s\xff\x89<\x9c\x12\xc9I\xa5:Cc}\x95#;9\xbf\xbf\xe3\xb0\xbai\ -\xa6\xe9B3\x8dnx\xac\x0e\xf4\xa4\xd3\xd5\xc7\x95r\n\xf9]>\xaf\x94HD\xef\x97\ -\xc5g\xe4\x98\xdfB\xe6\xcb\xcf\xed8\x82\x1c\xa3\x83APi\x85\x9c\x0c\xf4\xd7\ -\x1a\xb3\xc5\r\x9a\xc8\xb4\x87\x9c7\x9d\xb2 \t\x01\x8b\x91\x82\x81U\xebV\x00\ -\xfd\xb4PC\xb6\xba\x16;ew1w \xed\xb2\xbc)DLY\x1dM\xea\t\x16u@\xe8\\\x19\x95\ -\xf1w.\xbb\x98i\x05z\xdc\xe17d\x90\x7f\x95\x07\x86\x9f' )) +def getSaveData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\x86IDATx\x9c\xed\x95\xb1\n\xc0 \x0cD\xb588\xde\'\xdf\';:\x14\xdaA\x04\ +\xa9\x1a\xdb\xa2\x14\xa5\x07"\x04\xb9\xa7IT\r@\x8d\xd46\xd4}\t\x80)\x05\x9ds\ +\xc7\x1b3\x00\xfa\x1a\xab\x9e\x80\x0c\xb3\xdf\xbd8\xd2\xb5$\xb3\x8duIQ\x04\ +\x944\x07@\xd2\xfc\x80b\x9bF\x91JYcE\x03)\xffM\xc0\x1d\x83\x96\xba\x00\x86tQ\ +z\xd1$-\xdaE\x004)?xiwI5\xa8\x169@\xf2\xc7\xeb\xa9\xf4\xffe~\x0e8\x01v84H\ +\x1c6\xc2\x8f\x00\x00\x00\x00IEND\xaeB`\x82' -def getAutoRefreshBitmap(): - return wxBitmapFromXPMData(getAutoRefreshData()) +def getSaveBitmap(): + return wxBitmapFromImage(getSaveImage()) -def getAutoRefreshImage(): - return wxImageFromBitmap(getAutoRefreshBitmap()) +def getSaveImage(): + stream = cStringIO.StringIO(getSaveData()) + return wxImageFromStream(stream) + +def getSaveIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getSaveBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTestData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\ +\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x01\x15IDATx\x9c\xb5U\xbb\x11\x830\x0c\x95s)Rj\x04\x8f@A\xc18\x8c\xa2\x11\ +\x18\x81qR\xa4\xf0\x08\x8c@I\xc1\x9d\xd3`\xb0\x85l\x8b\x1cQ\x83\x11\xf2\xfbH\ +\x06\x0c"\xc2?\xe3\xf1Wt\x00xj\x8a\xe6y\xf6<\x87\x88F\xb3\xd7\x94Z$\x01_%\ +\x12\x1dXkw`\xe7\\\x91 \xd4N\xd3$\x12\x9d\x1cXk\xfd\xfbs\x80\xbe\nM\\\xd6c\ +\xdd\xb5\x8dHr\xeb\x90\x89\xe8\xd4\xd2\xc4\x01W\x1fBr\x11\xab\x0f!\xb9\xb8\ +\xfd\x98r\x17\xbb\x83\x9cz\x80\xc3\xc1\xb2\xa6k)\xb8\x8b\xaa\x03\x0e\x18\xae\ +\xa5\xe1\xc7.\xf62\xe7\\v\x13W\x1b\x9c\xc8\xf5i\x17T3\xe0@%\xf5<\xd4C\x0e\ +\xa0W\xc0\x13\x02\xcd\xb7E\x03>\x0cCr\xaf\xd6\x13\xcf\xa1FDD\xf2)\xca\xb9\ +\x90\x86,\x05W\x7f"\xd0\x80\xd7\xf2\xb1z\x91 v\x91\x03\x91\x9eK\xea\x0123@DC\ +D\xbekG\x00\x00\x90\xde\xf0\xaem6\xe0~\xcfq\xf5\x00\x95\x1f\xce\xb6\xc9\x8f\ +\xe3x\xca\xf7}\x19XM\x10\x13\t\xb9\xea\xd1V\x13\xfc\x1a_\xfc\x89l\x9f\xd7k\ +\x04?\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTestBitmap(): + return wxBitmapFromImage(getTestImage()) + +def getTestImage(): + stream = cStringIO.StringIO(getTestData()) + return wxImageFromStream(stream) + +def getTestIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTestBitmap()) + return icon #---------------------------------------------------------------------- def getTreeDefaultData(): - return cPickle.loads(zlib.decompress( -"x\xda\xd3\xc8)0\xe4\nV74S04Q0U0T\xe7J\x0cV\x8fPHVp\xcaIL\xce\x06\xf3\xfc\ -\x81<eK\x03K\x13K\x030_\x01\xc8\xf7\xcb\xcfK\x05s\xf4@\x92n\x16n\xcen\x16`~>\ -\x88\xefb\xe0b\xe2\x02S\x8c\n\xc8\x10\xd4\x83\x80\x08T\xc1|\x10\xf0\xa7\xae\ -\xa0?\x18\xa0\nF@\x01\x99\x8e'FP\x0f\x00\xdc\x1bL7" )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00QIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b\x1a\x06\xb0\xa0\x0b\xbcx\xf3\ +\xe2?.\xc5\x1c,\x1c\x0c\x02\x02\x02\x8cx\r````\xb8q\xe3\x06\x86\xd8\x81\x03\ +\x07\xb0\x1a:\xf0a@\xfd@d`\xc0\xed_\xa2\x0c\xe0`\xe1 \xc9\x05\x8cC?%Rl\x00\ +\x00\xdc\x00\x0b\x9f\x8dZU\xfe\x00\x00\x00\x00IEND\xaeB`\x82' def getTreeDefaultBitmap(): - return wxBitmapFromXPMData(getTreeDefaultData()) + return wxBitmapFromImage(getTreeDefaultImage()) def getTreeDefaultImage(): - return wxImageFromBitmap(getTreeDefaultBitmap()) + stream = cStringIO.StringIO(getTreeDefaultData()) + return wxImageFromStream(stream) -#---------------------------------------------------------------------- -def getTreeRootData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S04Q0V0T\xe7J\x0cV\xd7SHVp\xcaIL\xce\x06\xf3"\x80<e\ -c\x0b\x10\x04\xf3\x15\x80|\xbf\xfc\xbcT(\x07\x15 \x04\xf5\x80\x00Y0\x02\x080\ -\x04\x15"\xb0i\x8f\x80\xe9\x87\xa8\x86\n\xc2\xf4\xa3\x08\x0e\xa8v\x9c~G\x15\ -\xd4\x03\x00\x87\xa5@\xc2' )) - -def getTreeRootBitmap(): - return wxBitmapFromXPMData(getTreeRootData()) - -def getTreeRootImage(): - return wxImageFromBitmap(getTreeRootBitmap()) - -#---------------------------------------------------------------------- -def getTreePanelData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S04Q0Q0T\xe7J\x0cV\xd7SHVp\xcaIL\xce\x06\xf3\xf2\ -\x81<eK\x03K\x13K\x030_\x01\xc4w\xb3psv\xb3\x00\xf3#@|\x17\x03\x17\x13\x17\ -\x98<\n\xd0\x83\x08F \x83\xfca+\x98\x8f\x02 \x82zh\x00(\xa8\x07\x00&\x96e\ -\x83' )) - -def getTreePanelBitmap(): - return wxBitmapFromXPMData(getTreePanelData()) - -def getTreePanelImage(): - return wxImageFromBitmap(getTreePanelBitmap()) +def getTreeDefaultIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeDefaultBitmap()) + return icon #---------------------------------------------------------------------- def getTreeDialogData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"\x13\x05Cu\xae\xc4`u\x05\x85d\x05\xa7\x9c\xc4\ -\xe4l0/\x1f\xc8S\xb64\xb04\xb14\x00\xf3\xf5@|\x03 p\xb3\x00\xf3#@|\x17\x03\ -\x17\x13\x17\x03\xa8nT\x00\x11\xd4C\x01$\x0bb53\x02\x05\x0c\x98`>1\x82\xf9`@\ -\xc8LLo\xea\x01\x00\xb5\x9cde' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00IIDATx\x9ccd``\xf8\xcf@\x01`\x81P?\xc8\xd4\xce\xc1\xc0D\x89\xed\x0c\ +\x0c\x0c\x94\x1b\xc0\xc8@\x8d0\xb8p\xe5\x02Y\x9a\rt\x0c\x06A\x18\x8c$\x03\ +\x0e\x1c8@\x1b\x17\xb0\x90b\x1b\xd1\x06888\x10m\x00\xc5I\x19\x00\xe6)\x0cc\ +\xbf\x9c\xcc\xa1\x00\x00\x00\x00IEND\xaeB`\x82' def getTreeDialogBitmap(): - return wxBitmapFromXPMData(getTreeDialogData()) + return wxBitmapFromImage(getTreeDialogImage()) def getTreeDialogImage(): - return wxImageFromBitmap(getTreeDialogBitmap()) + stream = cStringIO.StringIO(getTreeDialogData()) + return wxImageFromStream(stream) + +def getTreeDialogIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeDialogBitmap()) + return icon #---------------------------------------------------------------------- def getTreeFrameData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"c\x05Cu\xae\xc4`u\x05\x85d\x05\xa7\x9c\xc4\ -\xe4l0O\x0f\xc8S6\x00\x027\x0b0?\x02\xc4w1p1q1\x80\xaaF\x05\x10A=\x14@\xb2 V\ -3#P\xc0p\x10\xc4\xf4\xa6\x1e\x00\xe3\x8f`,' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00:IDATx\x9ccd``\xf8\xcf@\x01`\x81P?\xc8\xd4\xce\xc1\xc0D\x89\xed\x0c\ +\x0c\x0c\x94\x1b\xc0\xc8@\x8d0\xb8p\xe5\x02Y\x9a\rt\x0c\x06A\x18\x8c\x1a0,\ +\x0c\xa08)\x03\x00\x90c\x07\x1f\xb3yvF\x00\x00\x00\x00IEND\xaeB`\x82' def getTreeFrameBitmap(): - return wxBitmapFromXPMData(getTreeFrameData()) + return wxBitmapFromImage(getTreeFrameImage()) def getTreeFrameImage(): - return wxImageFromBitmap(getTreeFrameBitmap()) + stream = cStringIO.StringIO(getTreeFrameData()) + return wxImageFromStream(stream) -#---------------------------------------------------------------------- -def getTreeMenuBarData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"S\x05Cu\xae\xc4`\xf5\x08\x85d\x05\xa7\x9c\xc4\ -\xe4l0\xcf\x1f\xc8S\xb64\xb04\xb14\x00\xf3\x15\x80|\xbf\xfc\xbcT0G\x0f$\xe9f\ -\xe1\xe6\xecf\x01\xe6\xe7\x83\xf8.\x06.&.0\xc5\xa8\x80\x1a\x82z\xa8 \x02"\ -\x98\x8f\x0c\xfca\x82\xfe \x00#I\x17\xc4b\xa6?*\x80\x08F\xa0\x01\x1a\xf9]\ -\x0f\x00\x9b\xde`\xb2' )) - -def getTreeMenuBarBitmap(): - return wxBitmapFromXPMData(getTreeMenuBarData()) - -def getTreeMenuBarImage(): - return wxImageFromBitmap(getTreeMenuBarBitmap()) - -#---------------------------------------------------------------------- -def getTreeToolBarData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"\x0b\x05Cu\xae\xc4`\xf5\x08\x85d\x05\xa7\x9c\ -\xc4\xe4l0\xcf\x1f\xc8S\xb64\xb04\xb14\x00\xf3\x1d@|7\x0b7g\x03\x08_\x19\xc4\ -70\x80\xf3\x15\x80|\xbf\xfc\xbcT0G\x0f\xa6\xd8\xcd\x02\xcc\xd7\x86\xf0\r\x0c\ -\xa0\x8a\xf3A|\x17\x03\x17\x13\x17\x98fT@\rA=T\x10\x01\x11\xccG\x06\xfe0Am\ -\xed\x88|\x07\x87\x88|e\xe5\x08\x02\x82\x11\x11\x11p\xec\x8f\xc7L\x7fT\x00\ -\x11\x8c@\x034\xf2\xbb\x1e\x00\x1c\x05j\x12' )) - -def getTreeToolBarBitmap(): - return wxBitmapFromXPMData(getTreeToolBarData()) - -def getTreeToolBarImage(): - return wxImageFromBitmap(getTreeToolBarBitmap()) +def getTreeFrameIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeFrameBitmap()) + return icon #---------------------------------------------------------------------- def getTreeMenuData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"S\x05Cu\xae\xc4`\xf5\x08\x85d\x05\xa7\x9c\xc4\ -\xe4l0\xcf\x1f\xc8S\xb64\xb04\xb14\x00\xf3\x15\x80|\xbf\xfc\xbcT0G\x0f$\xe9f\ -\xe1\xe6\xecf\x01\xe6\xe7\x83\xf8.\x06.&.0\xc5\nzp\x10\xa1\xa0\x00\x17\xcc\ -\x87\x02\x7f\x14A\x7f0 [p(\x9b\xe9\x0f\x03H\x82\x11\x08\x00\x16\xd4\x03\x00&\ -sj\xf9' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00]IDATx\x9cc\x14\x10\x10`\x80\x81\x17o^\xfcg \x02p\xb0p0\x08\x08\x080\ +2000\xb0\xa0K\xde\xb8q\x03\xaf\xe6\x03\x07\x0e\xa0\xf01\x0c\xc0\xa6\x08\x06\ +\x1c\x1c\x1c0\xc4\x98\xf0ZG\x04\xa0\xd8\x00\xac^\xc0\xe6T\x92\x0c\x18\r\x83\ +\xd10\xc0\xe5\x7f\xa2\x0c\xe0`\xe1 I3\x03\x03\x03\x03\x00l\xa5\x16\xbeals=\ +\x00\x00\x00\x00IEND\xaeB`\x82' def getTreeMenuBitmap(): - return wxBitmapFromXPMData(getTreeMenuData()) + return wxBitmapFromImage(getTreeMenuImage()) def getTreeMenuImage(): - return wxImageFromBitmap(getTreeMenuBitmap()) + stream = cStringIO.StringIO(getTreeMenuData()) + return wxImageFromStream(stream) + +def getTreeMenuIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeMenuBitmap()) + return icon #---------------------------------------------------------------------- -def getTreeSizerHData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"#\x05Cu\xae\xc4`u=\x85d\x05e3\x033\x133\x030_\ -\x01\xc8\xf7\xcb\xcfK\x85rP\x01\xa9\x82z\xa8\x00*\x08Q\x01\xa3\x06\xaf 6\xc7\ -S\x12 z\x00\xf8\xc9>T' )) +def getTreeMenuBarData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00bIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4{P\x18\xc0\xf8\xe3\xcf\x8f\xff\ +\xe4j\xe6`\xe1``a```\xb8q\xe3\x06\xc9\x9a\x0f\x1c8\xc0\xc0\xc0\xc0\x001\x00Y\ +\x00\x19888\xe0\x14\x87\x81\x81\x0fD\xb8\x17\x90\x9d\x85\x0cp\x89\xc3\r\x981\ +c\x06E.`d`` ;\x1a\x19\x18\x18\x18\x18G\xf3\x02\x03\x00DO\x13\x93\xa7\xebQk\ +\x00\x00\x00\x00IEND\xaeB`\x82' -def getTreeSizerHBitmap(): - return wxBitmapFromXPMData(getTreeSizerHData()) +def getTreeMenuBarBitmap(): + return wxBitmapFromImage(getTreeMenuBarImage()) -def getTreeSizerHImage(): - return wxImageFromBitmap(getTreeSizerHBitmap()) +def getTreeMenuBarImage(): + stream = cStringIO.StringIO(getTreeMenuBarData()) + return wxImageFromStream(stream) + +def getTreeMenuBarIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeMenuBarBitmap()) + return icon #---------------------------------------------------------------------- -def getTreeSizerVData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"#\x05Cu\xae\xc4`u=\x85d\x05e3\x033\x133\x030_\ -\x01\xc8\xf7\xcb\xcfK\x85r\x14\x14\xf4`\x00\xc8F\x08*@\xc0\x00\t\x0e\x11\'!\ -\x03\xa0\xa0\x1e\x00\xfaC>*' )) +def getTreePanelData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00CIDATx\x9c\xed\xd31\x0e\x800\x0cC\xd1W\x94\xa1\xf7?Q\x8e\x91\xa3t@\x82\t\ +1\x131\xf6\xef\xfe^\xec\xb1\xceui2c\n\xa8\xaa\xcf\xe1\xcc\x04G\xb7\xfda\x0b\ +\xb6\xe0\x17A\xf0\xce\xb2\xc3@\xfbLp\x03\xeer\x0c%l\xbc\t6\x00\x00\x00\x00IE\ +ND\xaeB`\x82' -def getTreeSizerVBitmap(): - return wxBitmapFromXPMData(getTreeSizerVData()) +def getTreePanelBitmap(): + return wxBitmapFromImage(getTreePanelImage()) -def getTreeSizerVImage(): - return wxImageFromBitmap(getTreeSizerVBitmap()) +def getTreePanelImage(): + stream = cStringIO.StringIO(getTreePanelData()) + return wxImageFromStream(stream) + +def getTreePanelIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreePanelBitmap()) + return icon #---------------------------------------------------------------------- -def getTreeStaticBoxSizerHData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"c\x05Cu\xae\xc4`u=\x85d\x05\xa7\x9c\xc4\xe4l0\ -/\x02\xc8S630313\x00\xf3\x15\x80|\xbf\xfc\xbcT(\x07\x15\xc0\x05\xf5\xb0\x08\ -\xea!\x8bB\x04#\x14\xf4\xf4\xf4\x14"`\x00.\x08R\x19\x01Q\x08\x17\x84\xf0\x06\ -\x93 *\xc0\x1f \xc4\x08\xea\x01\x00\x0b\xa9Jm' )) +def getTreeRootData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00aIDATx\x9c\xed\x93\xcb\r\xc00\x08C\xa1\xea\x00\x1e\x83\xfd\xa7a\x0c6Ho\ +\x88"\x88\x1aq\xado|l\xf1"\x85\x01\xd0Dw\xd54\xb3\x15k\x00\xdc\x06\x88\xc8kY\ +U\xdb\xe5J\x0c\x80Dd\x9d\x1a\xfd\x82n\x901\xa2"\x92\x07D\x94\x93k< \x9bv\x0f\ +W\x06d\xfd\x08\xdf\x11x\xfa\x17\xae\x91\x9b\x88\x1e\xba\x12*2\xab=\t\xe9\x00\ +\x00\x00\x00IEND\xaeB`\x82' -def getTreeStaticBoxSizerHBitmap(): - return wxBitmapFromXPMData(getTreeStaticBoxSizerHData()) +def getTreeRootBitmap(): + return wxBitmapFromImage(getTreeRootImage()) -def getTreeStaticBoxSizerHImage(): - return wxImageFromBitmap(getTreeStaticBoxSizerHBitmap()) +def getTreeRootImage(): + stream = cStringIO.StringIO(getTreeRootData()) + return wxImageFromStream(stream) -#---------------------------------------------------------------------- -def getTreeStaticBoxSizerVData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"c\x05Cu\xae\xc4`u=\x85d\x05\xa7\x9c\xc4\xe4l0\ -/\x02\xc8S630313\x00\xf3\x15\x80|\xbf\xfc\xbcT(\x07\x0c\xf4\xa0\xb4\x02\x92\ -\xa0\x1e\\\x14.\x18\xa1\xa0\xa7\xa7\xa7\x10\x11\x11\x81&\x08V\x89&\x08\x01\ -\xb4\x17\x84\x81\xc1`\xbb\x1e\x00U+IU' )) - -def getTreeStaticBoxSizerVBitmap(): - return wxBitmapFromXPMData(getTreeStaticBoxSizerVData()) - -def getTreeStaticBoxSizerVImage(): - return wxImageFromBitmap(getTreeStaticBoxSizerVBitmap()) - -#---------------------------------------------------------------------- -def getTreeSizerGridData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"#\x05Cu\xae\xc4`u=\x85d\x05e3\x033\x133\x030_\ -\x01\xc8\xf7\xcb\xcfK\x85p\xf4P\x01TP\x01\x0c`\x14\xbd\x05\x87\x88\x93\xd0\ -\x00PP\x0f\x00!\xb1?\xce' )) - -def getTreeSizerGridBitmap(): - return wxBitmapFromXPMData(getTreeSizerGridData()) - -def getTreeSizerGridImage(): - return wxImageFromBitmap(getTreeSizerGridBitmap()) +def getTreeRootIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeRootBitmap()) + return icon #---------------------------------------------------------------------- def getTreeSizerFlexGridData(): - return cPickle.loads(zlib.decompress( -'x\xda\xd3\xc8)0\xe4\nV74S\x00"#\x05Cu\xae\xc4`u=\x85d\x05e3\x033\x133\x030_\ -\x01\xc8\xf7\xcb\xcfK\x85p\xf4P\x01TP\x01\x08\xc0\x04\x98A\x1dA\xbaYD/\xc7\ -\xa3\x01\xa0\xa0\x1e\x00>\x91?\xce' )) + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00BIDATx\x9cc\x14\x10\x10`\x08\x08\t\xf8\xcf@&`\x8116\xac\xd9\xc0\x88,\ +\x11\x10\x12\xf0\x1f]\x0c\x1d\x04\x84\x04\xfcg"\xd7f\x18\x18x\x03\x18G\x03q\ +\xd4\x00j\x18@qBb\x14\x10\x10\xa0\xc8\x05\x00\xb4+\x16\xba\x9e\xe7\x8fF\x00\ +\x00\x00\x00IEND\xaeB`\x82' def getTreeSizerFlexGridBitmap(): - return wxBitmapFromXPMData(getTreeSizerFlexGridData()) + return wxBitmapFromImage(getTreeSizerFlexGridImage()) def getTreeSizerFlexGridImage(): - return wxImageFromBitmap(getTreeSizerFlexGridBitmap()) + stream = cStringIO.StringIO(getTreeSizerFlexGridData()) + return wxImageFromStream(stream) + +def getTreeSizerFlexGridIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeSizerFlexGridBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeSizerGridData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00<IDATx\x9cc\x14\x10\x10`\x08\x08\t\xf8\xcf@&`\x8116\xac\xd9\xc0\x88M\ +A@H\xc0\x7f|rL\xe4\xda\x0c\x03\xa3\x06000\x8eF\xe3p0\x80\xe2hd\x14\x10\x10\ +\xa0\xc8\x05\x00M\x98\x16\xba|O\xcc\x02\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeSizerGridBitmap(): + return wxBitmapFromImage(getTreeSizerGridImage()) + +def getTreeSizerGridImage(): + stream = cStringIO.StringIO(getTreeSizerGridData()) + return wxImageFromStream(stream) + +def getTreeSizerGridIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeSizerGridBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeSizerHData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00DIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b\x1a\x06\xb00000\x04\x84\ +\x04\xfc\xa7\xc8\x00\x06\x06\x06\x86\rk60bS\x10\x10\x12\xf0\x1f\x9f\xdc\xc0\ +\x87\xc1\xa8\x01T0\x80Q@@\x80\xa2\x84\xc48\xf43\x13\x00\xf5\xfe\x0c\x98\x979\ +f\xc6\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeSizerHBitmap(): + return wxBitmapFromImage(getTreeSizerHImage()) + +def getTreeSizerHImage(): + stream = cStringIO.StringIO(getTreeSizerHData()) + return wxImageFromStream(stream) + +def getTreeSizerHIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeSizerHBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeSizerVData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00?IDATx\x9cc\x14\x10\x10`@\x06\x01!\x01\xff\x19\x08\x80\rk60\xc2\xd8,\ +\x84\x14\xa0\x03t\x0b\x98\x08\xd9F\x08\x8c\x1a\x80#\x16\x88\x89J\xbc\x06\x8c\ +F#\x9d\r\xa08\x1a\x19\xd1\xb33\xa9\x00\x00&\x0c\x10mXtZ\x83\x00\x00\x00\x00I\ +END\xaeB`\x82' + +def getTreeSizerVBitmap(): + return wxBitmapFromImage(getTreeSizerVImage()) + +def getTreeSizerVImage(): + stream = cStringIO.StringIO(getTreeSizerVData()) + return wxImageFromStream(stream) + +def getTreeSizerVIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeSizerVBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeStaticBoxSizerHData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00dIDATx\x9c\xed\x92A\n\xc00\x08\x045\xe4\x01\xfb4\x0f>3\x07\x9f\xe6\ +\x0f\xecU,\xb4IS\xe8\xa5s\x11\x16\x1c\x16\x91\x01\xd0\x0e\xad\x06\xee\x1e\ +\x8f\x05\xee\x1e\x00xE\xd2\x89\x88D%l\x18\xd7\x06\xa2r+\xea5\xc8\rl\x18gyET\ +\xa2\xd5\xe5<g8\x1dq\x95_\xf0\x82\x80\x01L=\xcc\xa5`\x87\xefop\x00N\x12$g%t;\ +\xe1\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeStaticBoxSizerHBitmap(): + return wxBitmapFromImage(getTreeStaticBoxSizerHImage()) + +def getTreeStaticBoxSizerHImage(): + stream = cStringIO.StringIO(getTreeStaticBoxSizerHData()) + return wxImageFromStream(stream) + +def getTreeStaticBoxSizerHIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeStaticBoxSizerHBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeStaticBoxSizerVData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00hIDATx\x9cc\x14\x10\x10`\xc0\x05>|\xf8\xf0_@@\x80\x11\xa7\x02\x06\ +\x06\x06&B\x9a?|\xf8\xf0\x9f$\x03\x02B\x02\xe0\x1a\x905\x07\x84\x04\xfc\x87a\ +\xa2\\\xc0\xc0\xc0\xc0\x80\xec\xfc\rk60nX\xb3\x01\xc3;8\r\x80i&;\x0c\x88\x05\ +\xc3\xc0\x00\x16l\x82\xe8QE\xb2\x01\xd8\xa2\x0b\x97\xe1\x03\x1f\x06\x03o\x00\ +\xc5\xb1\x00\x00\xf1\xda$S0&0\x03\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeStaticBoxSizerVBitmap(): + return wxBitmapFromImage(getTreeStaticBoxSizerVImage()) + +def getTreeStaticBoxSizerVImage(): + stream = cStringIO.StringIO(getTreeStaticBoxSizerVData()) + return wxImageFromStream(stream) + +def getTreeStaticBoxSizerVIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeStaticBoxSizerVBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeToolBarData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\x80IDATx\x9c\xed\x93\xbb\r\x840\x10D\x9f\x91\x03B\x97\xb1\x81\x83-\ +\xc1%\x12\\\xb0\xe5\xb8\x0c\x97B\x80\x04\x11\x1fs\xd2!pr\x01\x13\xf9i4#\xdb\ +\xabu!\x04Z\xd45\xa5\xff\xa2\xc0\x8d\xd38?\r\xf7\xbe\xc7\x03\x94Rn\x87s\xce\ +\xc0\xe1\t\x12\x15\x89\xba\x19"\x8a\xc8\xce*\x8a\x1exU\xf3\x1f\xf8\xf5`\x9f\ +\xa12\xccj\x1eN\xfcU\x90R\xaa\x8c+\xde\n\xcc\xec\xf2\x9a\xbf\xe4\x80\xc7c\ +\x04p\xef.\xb0\x00\xb2\x8f\x1d_"\xe3\xe1\xc9\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeToolBarBitmap(): + return wxBitmapFromImage(getTreeToolBarImage()) + +def getTreeToolBarImage(): + stream = cStringIO.StringIO(getTreeToolBarData()) + return wxImageFromStream(stream) + +def getTreeToolBarIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeToolBarBitmap()) + return icon + +#---------------------------------------------------------------------- +def getUndoData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x17\x00\x00\x00\x16\x08\x06\ +\x00\x00\x00+v\x07\x05\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xb6IDATx\x9c\xed\x93\xb1\r\x830\x10E\x9f#\n\xca+3\x02\x03d\x80\x8c\xc1\ +\x18)S\xa6L\xc9\x18\x8c\x91"%\x030\x82\xcb+]X"E\x04\x8a\x901\x08\x07\x89\x82\ +W\x9e\xe4\xf7\xed\xbb\xb3\x11\x11\xb6\xe2\xb4\x99\xf9\x90\xaf\x96\xabj\xb7\ +\x89<E\x0c\x90\xc5\xc4\xcf\xeb\x19\xe7\xe1\xf1\xb6C\x88\x88\x98\xa5r\x13\xda\ +\xf3^\x9cg9\xce;\x00\x9c\x07uP5vqHP\xfe\x1b\x00p\x7f\xd9\xa1~\xbb|kUcg\x03&\ +\xe5}\xc0\xf8\x96\xaa\xda\x95\x85P\xb7:+\x8f\x0e4tXDL\xdd*e!\xb3\x03\x8f\xde\ +<F\xe8Uc\xf6\xfbC\x93z>\x85\xaavI\xab\xf8\x0f\xf6\xdb\xf3C\xbe\x8a\x0fa\xd1E\ +H\xfdNS\x0c\x00\x00\x00\x00IEND\xaeB`\x82' + +def getUndoBitmap(): + return wxBitmapFromImage(getUndoImage()) + +def getUndoImage(): + stream = cStringIO.StringIO(getUndoData()) + return wxImageFromStream(stream) + +def getUndoIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getUndoBitmap()) + return icon + +#---------------------------------------------------------------------- +def getRedoData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x17\x00\x00\x00\x16\x08\x06\ +\x00\x00\x00+v\x07\x05\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xbfIDATx\x9c\xed\xd4/\x0e\xc20\x14\xc7\xf1\xef\xc8\xc4\x13\x13=\x06r\ +\x129\x81@"v\x00\x04\x87B\xec\x08\x88\x1d\x00\xd1#Lr\x8c\'\x10uE\x90\x92\x10\ +6\xda4, \xf6\x93M\xf3y/\xaf\x7f\nc\x0cse5\x9b\xbc\xe0_\xc7U\xd5\xcf\x86\xa7\ +\x14(s\xb1\xdda\x83\x88\xd0\x9f\xac7\xc6\x14c\xfb\x8b\x94{\x1e\xd0\xa6\xad\ +\x91J\x90R\x00\x90\n\xdc\r\xfa\xce2V \xda\xb9\xaa\xfa\xa6\xad\x01\xb0\xe7\ +\xe1\xb9\xbe?687\r\'\xe1\x8f\x02\x8e\xe1r}A\xfa\xcez`\x12\x86\xc8\x81\xaa\ +\xaa\xaf\xb7\xeb78\xe4\x13\x0c\x91\x99\x87Y\xc7\x90\xa9\xfc\xee\x11\xe5v\x9c\ +\x84\x87\x02)\xafq,I\xf7<7\xff\xf9q-xv\xee"\x1b=\x87\xa0\x01\x91\x87\x00\x00\ +\x00\x00IEND\xaeB`\x82' + +def getRedoBitmap(): + return wxBitmapFromImage(getRedoImage()) + +def getRedoImage(): + stream = cStringIO.StringIO(getRedoData()) + return wxImageFromStream(stream) + +def getRedoIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getRedoBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolDefaultData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00QIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b\x1a\x06\xb0\xa0\x0b\xbcx\xf3\ +\xe2?.\xc5\x1c,\x1c\x0c\x02\x02\x02\x8cx\r````\xb8q\xe3\x06\x86\xd8\x81\x03\ +\x07\xb0\x1a:\xf0a@\xfd@d`\xc0\xed_\xa2\x0c\xe0`\xe1 \xc9\x05\x8cC?%Rl\x00\ +\x00\xdc\x00\x0b\x9f\x8dZU\xfe\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolDefaultBitmap(): + return wxBitmapFromImage(getToolDefaultImage()) + +def getToolDefaultImage(): + stream = cStringIO.StringIO(getToolDefaultData()) + return wxImageFromStream(stream) + +def getToolDefaultIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolDefaultBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolDialogData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00IIDATx\x9ccd``\xf8\xcf@\x01`\x81P?\xc8\xd4\xce\xc1\xc0D\x89\xed\x0c\ +\x0c\x0c\x94\x1b\xc0\xc8@\x8d0\xb8p\xe5\x02Y\x9a\rt\x0c\x06A\x18\x8c$\x03\ +\x0e\x1c8@\x1b\x17\xb0\x90b\x1b\xd1\x06888\x10m\x00\xc5I\x19\x00\xe6)\x0cc\ +\xbf\x9c\xcc\xa1\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolDialogBitmap(): + return wxBitmapFromImage(getToolDialogImage()) + +def getToolDialogImage(): + stream = cStringIO.StringIO(getToolDialogData()) + return wxImageFromStream(stream) + +def getToolDialogIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolDialogBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolFrameData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00:IDATx\x9ccd``\xf8\xcf@\x01`\x81P?\xc8\xd4\xce\xc1\xc0D\x89\xed\x0c\ +\x0c\x0c\x94\x1b\xc0\xc8@\x8d0\xb8p\xe5\x02Y\x9a\rt\x0c\x06A\x18\x8c\x1a0,\ +\x0c\xa08)\x03\x00\x90c\x07\x1f\xb3yvF\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolFrameBitmap(): + return wxBitmapFromImage(getToolFrameImage()) + +def getToolFrameImage(): + stream = cStringIO.StringIO(getToolFrameData()) + return wxImageFromStream(stream) + +def getToolFrameIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolFrameBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolMenuBarData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00bIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4{P\x18\xc0\xf8\xe3\xcf\x8f\xff\ +\xe4j\xe6`\xe1``a```\xb8q\xe3\x06\xc9\x9a\x0f\x1c8\xc0\xc0\xc0\xc0\x001\x00Y\ +\x00\x19888\xe0\x14\x87\x81\x81\x0fD\xb8\x17\x90\x9d\x85\x0cp\x89\xc3\r\x981\ +c\x06E.`d`` ;\x1a\x19\x18\x18\x18\x18G\xf3\x02\x03\x00DO\x13\x93\xa7\xebQk\ +\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolMenuBarBitmap(): + return wxBitmapFromImage(getToolMenuBarImage()) + +def getToolMenuBarImage(): + stream = cStringIO.StringIO(getToolMenuBarData()) + return wxImageFromStream(stream) + +def getToolMenuBarIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolMenuBarBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolMenuData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00]IDATx\x9cc\x14\x10\x10`\x80\x81\x17o^\xfcg \x02p\xb0p0\x08\x08\x080\ +2000\xb0\xa0K\xde\xb8q\x03\xaf\xe6\x03\x07\x0e\xa0\xf01\x0c\xc0\xa6\x08\x06\ +\x1c\x1c\x1c0\xc4\x98\xf0ZG\x04\xa0\xd8\x00\xac^\xc0\xe6T\x92\x0c\x18\r\x83\ +\xd10\xc0\xe5\x7f\xa2\x0c\xe0`\xe1 I3\x03\x03\x03\x03\x00l\xa5\x16\xbeals=\ +\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolMenuBitmap(): + return wxBitmapFromImage(getToolMenuImage()) + +def getToolMenuImage(): + stream = cStringIO.StringIO(getToolMenuData()) + return wxImageFromStream(stream) + +def getToolMenuIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolMenuBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolPanelData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00CIDATx\x9c\xed\xd31\x0e\x800\x0cC\xd1W\x94\xa1\xf7?Q\x8e\x91\xa3t@\x82\t\ +1\x131\xf6\xef\xfe^\xec\xb1\xceui2c\n\xa8\xaa\xcf\xe1\xcc\x04G\xb7\xfda\x0b\ +\xb6\xe0\x17A\xf0\xce\xb2\xc3@\xfbLp\x03\xeer\x0c%l\xbc\t6\x00\x00\x00\x00IE\ +ND\xaeB`\x82' + +def getToolPanelBitmap(): + return wxBitmapFromImage(getToolPanelImage()) + +def getToolPanelImage(): + stream = cStringIO.StringIO(getToolPanelData()) + return wxImageFromStream(stream) + +def getToolPanelIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolPanelBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolRootData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00aIDATx\x9c\xed\x93\xcb\r\xc00\x08C\xa1\xea\x00\x1e\x83\xfd\xa7a\x0c6Ho\ +\x88"\x88\x1aq\xado|l\xf1"\x85\x01\xd0Dw\xd54\xb3\x15k\x00\xdc\x06\x88\xc8kY\ +U\xdb\xe5J\x0c\x80Dd\x9d\x1a\xfd\x82n\x901\xa2"\x92\x07D\x94\x93k< \x9bv\x0f\ +W\x06d\xfd\x08\xdf\x11x\xfa\x17\xae\x91\x9b\x88\x1e\xba\x12*2\xab=\t\xe9\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getToolRootBitmap(): + return wxBitmapFromImage(getToolRootImage()) + +def getToolRootImage(): + stream = cStringIO.StringIO(getToolRootData()) + return wxImageFromStream(stream) + +def getToolRootIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolRootBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolCheckBoxData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\n\x00\x00\x00\n\x08\x06\x00\ +\x00\x00\x8d2\xcf\xbd\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00?IDATx\x9cc\xfc\xf1\xe7\xc7\x7f\x06\x02\x80\x83\x85\x83\x81\x85\x81\x81\ +\x81\xe1\xc6\x8d\x1b\x84\xd420\x11Rp\xe0\xc0\x01\xe2\x14\x12m\xe2 P\xc8\x02c\ +\xc0|\x87\x0b0200\x10\x0cp\x06\x06\x06\x06\x00b\x8b\x0c\x1dT!\xdd>\x00\x00\ +\x00\x00IEND\xaeB`\x82' + +def getToolCheckBoxBitmap(): + return wxBitmapFromImage(getToolCheckBoxImage()) + +def getToolCheckBoxImage(): + stream = cStringIO.StringIO(getToolCheckBoxData()) + return wxImageFromStream(stream) + +def getToolCheckBoxIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolCheckBoxBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeToolData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00^IDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b\x1a\x06\xb0\xa0\x0b\xbcx\xf3\ +\xe2?>\r\x1c,\x1c\x0c\x02\x02\x02\x8c8\r````\xb8q\xe3\x06V\xcd\x07\x0e\x1c\ +\xc0\x10\xa3\xbe\x17p\xd9\xe8\xe0\xe0\x80U\xcd \x8c\x05d\x80\xcb\xd9\x04\r\ +\xc0\x16\xdaD\x1b\xc0\xc1\xc2A\xb4f\x06\x06\x06\x06\xc6\x01\xcf\x0b\x00"\x92\ +\x0fc\x04\xf8\xbb\xc7\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeToolBitmap(): + return wxBitmapFromImage(getTreeToolImage()) + +def getTreeToolImage(): + stream = cStringIO.StringIO(getTreeToolData()) + return wxImageFromStream(stream) + +def getTreeToolIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeToolBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolToolData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\t\x00\x00\x00\t\x08\x06\x00\ +\x00\x00\xe0\x91\x06\x10\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00LIDATx\x9c\x95\xd0\xb1\r\xc0 \x10C\xd1GD\xc1X\x8c\xce\x18\x8cB\x11)\ +\xa9\x12!qB\xc9\xaf\xae\xf0\xd9\x96\xd38\xc7eC\xc9E\x86\xde{(h\xad\x81c\xe7\ +\xf2\x90\xa3O\xa8\xb5\xbe\xf7\'\xa7\xffqs\xc4"\x9a\xbbD$lw\x82\x1b\xd7\x84\ +\x0f\xdfLT\x19\x1d\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolToolBitmap(): + return wxBitmapFromImage(getToolToolImage()) + +def getToolToolImage(): + stream = cStringIO.StringIO(getToolToolData()) + return wxImageFromStream(stream) + +def getToolToolIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolToolBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolMenuItemData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x0c\x00\x00\x00\t\x08\x06\ +\x00\x00\x00\x06\xb8\xcdT\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00NIDATx\x9cc\xfc\xf1\xe7\xc7\x7f\x06"\x01\x07\x0b\x07\x03\x0b\x03\x03\ +\x03\xc3\x8d\x1b7\x08*>p\xe0\x00\x03\x03\x03\x03\x03\x13\xb1\xa6\xc3\x00\x0b\ +6S\xd0\x81\x83\x83\x03\x9cM\xb2\r\x949\t\xd9j\xbc\x1ap\xb9\x1d\x1b`d`` :\x1e\ +\x18\x18\x18\x18\x00h[\x0f\xdf\xbb\xf3\x12\xf4\x00\x00\x00\x00IEND\xaeB`\x82\ +' + +def getToolMenuItemBitmap(): + return wxBitmapFromImage(getToolMenuItemImage()) + +def getToolMenuItemImage(): + stream = cStringIO.StringIO(getToolMenuItemData()) + return wxImageFromStream(stream) + +def getToolMenuItemIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolMenuItemBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolFlexGridSizerData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00BIDATx\x9cc\x14\x10\x10`\x08\x08\t\xf8\xcf@&`\x8116\xac\xd9\xc0\x88,\ +\x11\x10\x12\xf0\x1f]\x0c\x1d\x04\x84\x04\xfcg"\xd7f\x18\x18x\x03\x18G\x03q\ +\xd4\x00j\x18@qBb\x14\x10\x10\xa0\xc8\x05\x00\xb4+\x16\xba\x9e\xe7\x8fF\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getToolFlexGridSizerBitmap(): + return wxBitmapFromImage(getToolFlexGridSizerImage()) + +def getToolFlexGridSizerImage(): + stream = cStringIO.StringIO(getToolFlexGridSizerData()) + return wxImageFromStream(stream) + +def getToolFlexGridSizerIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolFlexGridSizerBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeMenuItemData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00cIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b\x81\x81\x81\x05\xc6x\xf1\xe6\ +\xc5\x7fb5q\xb0p0\x08\x08\x080\xa2\x18\xc0\xc0\xc0\xc0p\xe3\xc6\r\x82\x9a\ +\x0f\x1c8\x80\xc2\xa7\x9e\x17\xf0\xd9\x02\x03\x0e\x0e\x0e\x18b\x14\xbb\x806^\ +\xc0\xe6T\xa2\x0c\xc0\xe5w\xa2\x0c\xe0`\xe1 Y3\x03\x03\x03\x03\xe3\x80\'e\ +\x8a\r\x00\x00GI\x0fc!\x9f\xc7\x01\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeMenuItemBitmap(): + return wxBitmapFromImage(getTreeMenuItemImage()) + +def getTreeMenuItemImage(): + stream = cStringIO.StringIO(getTreeMenuItemData()) + return wxImageFromStream(stream) + +def getTreeMenuItemIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeMenuItemBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolToolBarData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x08\x08\x06\ +\x00\x00\x00\xf0v\x7f\x97\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00lIDATx\x9c\xa5\x91\xb1\r\x800\x0c\x04\x0f\x94\x82Q\\Px\x84\x8c\x98\ +\x82\xc2\xe3d\x8c\x8cB\x81\x04U\x02\x01\x89\x88p\x95\xcf/[\x96<\xac\xdb\xba\ +\xd3\xc9\xe4&\x1c@J\xe9\xf3p\x8c\x11\x8017dVd\xd6\x12\x88("\xa7\xab(z\xf1\ +\xcc\xc8O\\.l\tU`V{\xb8\xf9c\x81\xf7\xbe\nZ^\x16\x98Y\xf3\xcc7\x06\xa0\xfb\ +\x8d\x00\x07:\x91\x1c\xf1\xcb\xec\x06\xb4\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolToolBarBitmap(): + return wxBitmapFromImage(getToolToolBarImage()) + +def getToolToolBarImage(): + stream = cStringIO.StringIO(getToolToolBarData()) + return wxImageFromStream(stream) + +def getToolToolBarIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolToolBarBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolChoiceData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x0c$\xbf\x95\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\x91IDATx\x9c\xbd\x94=\x0e\x80 \x0c\x85\x1f\xa6C\x8f\xc2\xe0\xc0\xfd\ +\'\x8e\xc0\xe0\xc0Q\x18Lt\xc2(P\x84\xc4\xfa-$M\xd3\xd7_L\xda\xd3\x01%\x98\ +\x18\x04\x001F-\r,Z\x81\xbd\xf7}\x01\xb7\xbaO\x84\xd4*\xc8P\xcb\xe8V\x87\xb0\ +\x85\xeb\xbdc\xad\x15\x831q\xe5\xdf\x14xcf)\xaa\x16\xdd\xb3\xceU\x8c\x90\x87\ +Z"\xb6\xe8+\x1e\x02\xad\x9eKv)\xe3\xae\xc0\x08L<\xe5\xff\x10he_\xda%\x1f\t\ +\xf5;\xf8\xef\xd0F\x876\x8b\x01\xa0\xf6]\x03\xc0\t\'\xec0\xc5\xed<\xbeO\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getToolChoiceBitmap(): + return wxBitmapFromImage(getToolChoiceImage()) + +def getToolChoiceImage(): + stream = cStringIO.StringIO(getToolChoiceData()) + return wxImageFromStream(stream) + +def getToolChoiceIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolChoiceBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolSpacerData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00/IDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b&\x06|\xf8\xf0\xe1?14\x0c0R=\ +\x0c\xd0m $?\xea\x02Z\xba`\xe0\xd2\x01\xa9\x00\x00`~>\'\xaa4\xf4\x95\x00\x00\ +\x00\x00IEND\xaeB`\x82' + +def getToolSpacerBitmap(): + return wxBitmapFromImage(getToolSpacerImage()) + +def getToolSpacerImage(): + stream = cStringIO.StringIO(getToolSpacerData()) + return wxImageFromStream(stream) + +def getToolSpacerIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolSpacerBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolStaticTextData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x16\x00\x00\x00\r\x08\x06\ +\x00\x00\x00\xad\xa5\x9ec\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00kIDATx\x9c\xd5SA\n\xc00\x08\xd3\xb1\x07\xe4\xff\xaf\xcc\x0f\xdcIp%\ +\x0e\xdaQ\xc6r3\xda$\nu\x00\xb6\x03\xc7\x16\xd5O\x84I\xc6S\xbd,\xfc\x16R\x98\ +d\x00p\x95\x92d\xa8mFn*q\x1aVS\xc5I\xe1\x1c43\x1b\x87\x93\xefP\xfbg\x97lf\ +\x13\x85\x9bpM\xab\x8c\xba\xbez/\x13w\xa8\xa7Q\xe7\xaa\xa6\xfe\xbb/}\x01*\ +\x1bS\x8a\xc2\x15\xd1\x9d\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolStaticTextBitmap(): + return wxBitmapFromImage(getToolStaticTextImage()) + +def getToolStaticTextImage(): + stream = cStringIO.StringIO(getToolStaticTextData()) + return wxImageFromStream(stream) + +def getToolStaticTextIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolStaticTextBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolTextCtrlData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x0c$\xbf\x95\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00HIDATx\x9cc\x9c0e\xc2\x7f\x06\x1a\x02\x16\x06\x06\x06\x86\x82\x9c\ +\x02\x9a\x18\xfe\xe3\xcf\x0f\x88\x050\x0e5\xc1\x8d\x1b7\x18\x18\x18\x18\x18\ +\x98\xa8j*\x160j\xc1\xa8\x05\xa3\x16\x0c\x07\x0b\xe0e\x11\xac\xec\xa0\x89\ +\x05\xd4.\xe8\x90\x01\x00\x81\x02\x11\xfb\x02\xab> \x00\x00\x00\x00IEND\xaeB\ +`\x82' + +def getToolTextCtrlBitmap(): + return wxBitmapFromImage(getToolTextCtrlImage()) + +def getToolTextCtrlImage(): + stream = cStringIO.StringIO(getToolTextCtrlData()) + return wxImageFromStream(stream) + +def getToolTextCtrlIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolTextCtrlBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolButtonData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x0c$\xbf\x95\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\x84IDATx\x9c\xc5\x941\n\xc0 \x0cE\x9f\xc5\xc1\xc3t\xe8\xfd\'\x8f\ +\x90\xc1\xc1\xa38\x14\xda\xc9B\xa5\xc6B\r\xfd\xe0`\x82\xff\x91\x18\xe2\xca^\ +\x0e\x8c\x14|\xc0\x03\xe4\x9c\xad\x18,V\xc61F[@\x95\n\xd8\xd6\xedv\xda\x9cv\ +\xaf\xf2\x9a\xb9$\x19\xc6\xb48Lh\x91f\xfe\x19\xd0k\xcb4\x80$A\x92\xa8\xa0\ +\x7f\xa7\xe8\xad\xb4*\xbaS\xf4\xf4H\xfb\xcc\x9e\xba\x80\x91a\x9b3\x1b\xd3\ +\x91\xae\n\xea\xee\x98-\x07\x98\xadk\x80\x13\xd4\x8e1G9C\xf0\xc0\x00\x00\x00\ +\x00IEND\xaeB`\x82' + +def getToolButtonBitmap(): + return wxBitmapFromImage(getToolButtonImage()) + +def getToolButtonImage(): + stream = cStringIO.StringIO(getToolButtonData()) + return wxImageFromStream(stream) + +def getToolButtonIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolButtonBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolBitmapButtonData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\ +\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x02\x05IDATx\x9c\xb5\x96-\x90\xda@\x18\x86\x9f\xebD\xac\xa8X\x81\x88DT\xac\ +\xa8@"N *"N *NT \x10\x88\x13\x88\x8a\x08\x042\xa2"\x02\x11\x89\xa8@\x9c@T ND\ + "*"\x10\x11\x15\x11\'VT\xac@|"3\xad\xa0i\xa7\x1d\x08\xe1\xa6\xbcr\'\xfb>\ +\xfb~\xfb\xf3\xe5F*\xf9\xc1\x95\xa4<\x85\x07P\x14\xc5\xb5\x18\xbc\xba\x96q\ +\x9a\xa6\xd7\x05\xd4\xf2\xda|d\x8c9:\xde\xa6\xb4\x8d\t\x8c1\xbf\xcde/\xe4_s\ +\x9csg\xc1\xad\x00\xf5\xe4l\x9b\x11N\'\xc8\xf7\x04\xe3g`\x97l\x1e\xe7\x8cF\ +\xc3V\x90\xc6\x04\xd96\xc3\xf7\x15\xe1\x83Aw\xfa(=@w4\x83[\x9f\xe8c\x9f\xd1\ +\x87\xd1Y\xc8Q@=!^\xc4\xf8^\x8a\xee\x0c\xc0\xeb\x82\xa7\xe1u\x80\xf2\x14Zk\ +\xc2\xb1\xcf\xfd\xfb\xfb\x97\'\x98\x8e\x03P\x1a\x94\x7f\x18\xa8\x04*A*\x85\ +\xf2@w\x14Z\xab\xc6\x14\x8d\x00\x91\x83\xe1A\n<\x8d\xc8a\x93\x05\x05\x9e\xc2\ +\xd7r\xda\xe0\x14\xa0>~\xd1b\xfd\x0b P9\x90\x12*\xfb\'\x89s\xac\x1e\xd3\xcb\ +\x01\xb5\x92$A*\x0e\x86\x9eB\xa4\x04\x1cT\x82\xb5\x96\xf2\xd91\x8f\xe2\xbf\ +\x16\xf5\xaf\x1a/\x9aR\n%\x02(d_B\xe5\x10qXk\x91\xbd\x10%\x05\x9b\xa7\xa41\ +\xc1I@Q\x14$IL\x9e\xa5t\xdfd\xc4\xb3\x01\xce9\xcag\xcb\xfcS\x8a\xee\x186Oi\ +\xe3\xea\xe1l\x89\x96\xf8]C8\x8b(\xf7}\xa6Q\xc6f+,?oX\x7fY\x9f5oL\x000\xbc\ +\x0bX\xad\xd6\xe4yN8\x9b\xd3\xeb\xf5\x08\xc3\x10\xadu\xeb\'\xfed\x82\xe0]\ +\xc0\xe4a\xca\xf0. \xdb\xa6\x18cX.\x97Xk/\xea\x1f\'\x01\xd6Z\xa2h\xced2\xa5\ +\x7f;\xa0\xd8\x15h\xad[\x1b\xd7:Y\xa2|\x97\xd3{\xdb\xa3\xfc6\xc1\xf7}\xfa\ +\xfd\x01\xf1"\xbe\x18p\xb6\xe1\x88\x08EQ0\x1a\x8f.6\x873\x9b\x9c\xef\xf2\x17\ +\x99\x1e\x05\xd4=\xf4\x7f\xeb\x06\xb8\xdao\x0b\xc0O\x923\xdby\x95O\x1dg\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getToolBitmapButtonBitmap(): + return wxBitmapFromImage(getToolBitmapButtonImage()) + +def getToolBitmapButtonImage(): + stream = cStringIO.StringIO(getToolBitmapButtonData()) + return wxImageFromStream(stream) + +def getToolBitmapButtonIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolBitmapButtonBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolRadioButtonData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x0b\x00\x00\x00\x0b\x08\x06\ +\x00\x00\x00\xa9\xacw&\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\x86IDATx\x9cu\xd0\xa1\x11\xc30\x0c\x85\xe1_\x9e@ C\x14\x04\x1ad0\x8f\ +\xa0\xc1\n\x02\x03:D\x80\x817HQZUQ\x1f\xb1\xcf\xf7=\xebN\xa2\xaa\xc4\xb4\xd6\ +N3\x93\xf8^2\xe8\xcf\xbf\xd8A\xb2B\xc9\xe0\xfe\xda\xd3B\xc9 \x90\x16\xc4\xcc\ +n\xd0gy,\x98\x19\x00\xa2\xaa\x1c\xfd8\x01\xb6\xe7\x86N\xdf\xed\x8c>\xa8k\x05\ +`\x9ef)\xd7\x05\xa0\xae\x95\xd1G\n??_\xf1\x13"\xbca_\x88\xf0gu\x11D\x08\xf0\ +\x06\x99\xd2L\tb\x83\xa4(\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolRadioButtonBitmap(): + return wxBitmapFromImage(getToolRadioButtonImage()) + +def getToolRadioButtonImage(): + stream = cStringIO.StringIO(getToolRadioButtonData()) + return wxImageFromStream(stream) + +def getToolRadioButtonIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolRadioButtonBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolSpinButtonData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\t\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\xc4HUC\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\x8dIDATx\x9c\x9d\x90\xb1\r\xc30\x0c\x04_\x86\x07\xf8ARx\x04\r\xe4B\xa3\ +\xa8\xf0@\x1aC#\xa8P\xc1\xd2\x85\x01\xa6\xa2c\xcb\x91\x1d\x84\xc07\xe4\x01\ +\xff|G\x12O3\xb4\x8bR\x8b\xdeB\xa5\x16\xcd9CD\xf4+d\x00\x00\xc4%\x9e\xc0\xa1\ +\x05\x00\xc0{\x7f\x02G;\xa4\x94\xfa\xc9\xd7mU\x00\xb7r\x7fU\xd0\xb5\xeb).\ +\xf1c\xd7~g\x8f\x849\x80\xa4\xdb3\xb5\xe0\xf4\x9a@\xd2u3]\xea \xb9\xeb\x98\ +\xe3\xb8\xbfT "j66?\xf5\xf4\x06%\x06t\x8fl^\xaef\x00\x00\x00\x00IEND\xaeB`\ +\x82' + +def getToolSpinButtonBitmap(): + return wxBitmapFromImage(getToolSpinButtonImage()) + +def getToolSpinButtonImage(): + stream = cStringIO.StringIO(getToolSpinButtonData()) + return wxImageFromStream(stream) + +def getToolSpinButtonIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolSpinButtonBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolStaticBoxData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x16\x08\x06\ +\x00\x00\x00\xda}\\\x88\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\xa2IDATx\x9c\xedU1\n\xc30\x0c\x94\x82\x1f\xa0!\x83\x9f\xa8gx\xc8\ +\x032t\xf0\x13=d\xd0\x98\xa1\xe0N*IH\xe5 ZB\xc17\xd9`\xdd\xe9\xc4\t#\x11\x81\ +\x05\x11\xa9D\x84\xe6#\x03\x83\xb7\xf0+\x02\xda\xbd\x88T\xaf@HS\xda\x1533\ +\xc41\x9a#)K\xa99\xe7&93C\xd0\x83B\xc9\xb7\xb3W\x17z\x8fc\xc4\xb2\x94K\xae\ +\xc2\x91x\x0bk4-\x97iJ\xf5\xed\xe0\x8c\xf8,9\x9eD\xdd\x93\xa2O]z\xf6\xe1\xde\ +=\xe8\x02]\xa0\x0b\xfc\x89\x00\xce\x8f\xd9\xfd[\xb5\xc0\xcc\x80\xebs\xfd\x99\ +\x00\x00\xc0\x0b\xb9:<\xe6\x18V\xd1\xdf\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolStaticBoxBitmap(): + return wxBitmapFromImage(getToolStaticBoxImage()) + +def getToolStaticBoxImage(): + stream = cStringIO.StringIO(getToolStaticBoxData()) + return wxImageFromStream(stream) + +def getToolStaticBoxIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolStaticBoxBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolRadioBoxData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x16\x08\x06\ +\x00\x00\x00\xda}\\\x88\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x01\x05IDATx\x9c\xc5\x94!\x12\x830\x10E\x7f:\x1c \x02\xc1Q\x10=\xd0JD\ +\x05\x12Q\x81\xac\xa8\xe0@\x15HD\x0f\x11\x11\xb1\x12\xd1\x99T\x85\x06\x1a\ +\x926\xd0\xe9*\x92a\xdf\xcb\xeel"\xa4\x94\x08\x053\x1b)\xa5\x08\xfe\x14\x88C\ +j\xe2.\x02{zf6\xa9\x82\xac97\xb3d"B\x91\x17\xc1\x96(\xadL\xd7uQ8\x11!\xb3\ +\x1f6,\xdc\xed\xbd\xad\xc2\xae\x8b\xbc\x10J\xab\x8f\xaa\xca\x96`7B\xad\x89U\ +\xd9\x9c\x1b3U\xe0\x03\xfb&\'e\xa2\xfe3E\xee)\xeb\xba6\xbe\xfdM\x82%\xdc\x95\ +\xec&p\xe0\xb3\xf5.\x02\x17>\xdc\x87M\x927\xc1\x12\x0e`\x93d&\xf0\xc1m\xa4Jf\ +\xf7\xa0m[\xa1\xb42\xd5\xa9B\x7f\xeb!\xf3\xd7K\xcb\x9a1>F\x00\xf1K\xb6Z\x81\ +\x9b\\\x1eK\xb0\xe6\t^\x1e\xcb\xaf\xe1^\x81O\x92\n_\x15,%\xa9\xf0\xa0\xc0\ +\x85\xa6\xc2\xa3\x82\xadp\x00\x10\x97\xeb%\xf9\x19\x88\x05\x11A\x8c\x8f\xf1g\ +\x02\x00x\x02J\xca\x8a\xcbs\xe5\x05\x0f\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolRadioBoxBitmap(): + return wxBitmapFromImage(getToolRadioBoxImage()) + +def getToolRadioBoxImage(): + stream = cStringIO.StringIO(getToolRadioBoxData()) + return wxImageFromStream(stream) + +def getToolRadioBoxIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolRadioBoxBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolComboBoxData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x0c$\xbf\x95\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\xc3IDATx\x9c\xb5\x94\xc1\r\xc3 \x0cE\x7f+\x1f<\n\xa3\xe4\xd0\x03\ +\x83\xf4\x90q\x18\x83\x11\x18!\x87\x1e\x18\x85C\xa4\xf6\x04\n\x01SH\xe9\x93P\ +$\xb0\xfe\xc76\xce\xcdZ\xfbF\x07\xcbc\xe9\t\xcb`b\x10\x00h\xad\x9b\x81a\x0f\ +\x00\x00\xef\xfd\xb0\t\x9dEf\xe1\x9c\x03\x00\xdc\xa7\xaaV\xa8\x1a0\xf14\x03\ +\xfa\x1e\x92\xa3\x94\x12\xcf\x8c1X\x9f+\xb6\xd7&\x1b01\xc2\x1e\xd2\xf7\x8c\ +\xf7\x1eJ\xa9\xa2\xe1\xce\xb9B\x1c\xb8\xd8\x83hr\xa4&^\x18\x1co\x1d\xb3\xe8!\ +\xbe\x98\x1aE\x06L\x9cV\x8b\x98\x85T\x9aH\xea\x81Tsi?\x9a\xb4\xc4\xab\x19\ +\x8c\xd2\x12\xcf\x0c\xa4[\xfe:\xe1\x7f\x9f\xe4\xe1Ak\xbd\x18\xd1\xa0\xa7\x0c\ +W\x7f\x1f\x1f\x92\xc6Yif\xadRe\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolComboBoxBitmap(): + return wxBitmapFromImage(getToolComboBoxImage()) + +def getToolComboBoxImage(): + stream = cStringIO.StringIO(getToolComboBoxData()) + return wxImageFromStream(stream) + +def getToolComboBoxIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolComboBoxBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolListBoxData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x16\x00\x00\x00\x18\x08\x06\ +\x00\x00\x00\xfe\xbe\rK\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\x91IDATx\x9c\xe5\x95=\n\xc0 \x0c\x85_\x8b\x83\x87\xed\xe0Q\x1cz8\ +\x8f\x92Ah\x87"H1\xa21:\xb4o\xf3\x87\xe7\xe3\x8b!\x9b?\xfd\x85\t2\x00\xe0\ +\x0e\xa7jJ\x91\x1e\xe3\xb4\xd0P\x08\x01\x00\xb0\xd7.Yc\xc5\x0fT\x8dG\xc4\x1a\ +[cA\x91\xc4\xa9\xd7&Ni\x01\x88S\x1b\xee`\xa4pE\xe3<m\xcb>\xa7u\x8c\xb9T\xbd\ +\rTd\xfc\xe6+\xe9J\xb6x\xb9Y/_`"\xe3\xa6\xef\xf6\x0f\x14\x1fa\xac1M\xe6\xa3H\ +\xb3J\xd5Xk\x90\xe6\xba\x01\xea\xbe>\xf3\x9d/\x83Q\x00\x00\x00\x00IEND\xaeB`\ +\x82' + +def getToolListBoxBitmap(): + return wxBitmapFromImage(getToolListBoxImage()) + +def getToolListBoxImage(): + stream = cStringIO.StringIO(getToolListBoxData()) + return wxImageFromStream(stream) + +def getToolListBoxIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolListBoxBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolStaticLineData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x14\x00\x00\x00\x02\x08\x06\ +\x00\x00\x00X\x06\xfc\x8b\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\x19IDATx\x9cc\x9c0e\xc2\x7f\x06*\x81\x8c\x8c\x0c\x06\x16\x18\x83Z\ +\x00\x00rP\x05)\xab\x92\xb7?\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolStaticLineBitmap(): + return wxBitmapFromImage(getToolStaticLineImage()) + +def getToolStaticLineImage(): + stream = cStringIO.StringIO(getToolStaticLineData()) + return wxImageFromStream(stream) + +def getToolStaticLineIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolStaticLineBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolStaticBitmapData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x0e\x00\x00\x00\x11\x08\x06\ +\x00\x00\x00\xed\xc8\x9d\x9f\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\ +\x00\x00\x01\xceIDATx\x9c}\x93\x9f\x93#A\x14\x80\xbf\xa4\x06\x1a\x0e\x1e\x04\ +\x1a\x03\x07\xf9\x13\x02\x07\x03\x07\x03\x07\x81\x85\xc0\xe1\xc2\xc2\xc1\xc0\ +A\xe0 8\xb0\x10X\x08\x0e,\x04\x16\x02\x0b\x07\x07\x81\x85\x81\x85\x81\xc0\ +\xc0A`\xa1!\xd0\x10x\xd0U}\x90\x9d\xb9ds{\xaf\xaa\xab\xba_\xbf\xaf\xdf\xcf\ +\xee\x89\x08\xa7\xe2\xf6.\xf2\x0f\xb1\x03\xdb;=\xf7O\x81\x16\xd2\x83R?\xd7x\ +\xef\xdf}\xb0\'"\x9d\xb2z\xaaX?\x94\xcc\xf2\x11&1\xe8A\xa9\xb6\x9e\xd5cMY\ +\xae\xcf<w`\xf5Ta\xadA\xd8 v\x0c\x08h\x85\x06\xc5\xef=\xb3\xa2\xa1\xbc/;\xb8\ +\xdfz[\xdc-\xb0\xc9\x06\x19\xa4\x90\x0c!\x11\xf8\x90a\x12\x83\x880\xbb\xb6L\ +\xaf\xa6]\xa8I\xbb\xc9\xaf30\x80\xb1GEP\x004\x18L\xa2\xc8\xc0 b\xba|\xbb\xe2\ +\xa8jg\x0c\x06\x12A\xf5X\x1c\xc5@b\xb0\xd2\xdeC\xbfM\xb6\xb8[\xbf\x82\n\xc1\ +\x83\xee \xb8\xa3.(\xea=\xab\x87\xcde;\x96\xcb%\x1a^CL\x0c\xaa;\xc0CP\x9cs\ +\xec^<\xf3b\xd1\x15\xa7\xcb\xd1\x18\x83Q\x05\x0cz\xd8A\xf0\xa8z\x9cs\xe8A)\ +\x96\r?\x7f-\xcf\xfb\x080\xfd:\x89u\xb5a\xf8q\xc4\xe2G\x8a\xf7\x9e\xdd\x8bc~\ +\xbbA\x06#\xd6\x8f\xe7}DD\x10\x11H\x88\x93\xab,\xd6\xdb:V\xd5&f_\xd2\x98\x7f\ +\x9b\xc6\xa6i\xa2\x06\x8d\x1a4\xb6\xb6"\xf2\x17\x9cL\xb2\xa8Ac\xf5\\\xc5\xf4\ +s\x1a\xf3\xefyt{w\x01\xb4\xab\'"\x18cby_\xb2\xb8-\xc8\xb2\x8c\xe6\xf7\x8e\ +\xd5j\x05\x81\xb3\xc1>\x95>\x80s\x8e\xa2\x98ss\x933\xfe\x94\xd2l\x1b\xde\xfe\ +\x9a\xb7\xd2\x15\xc7{\x1f\x87C\x8b\xb5\x96\xf18\xa5,\xcbw\xbd]\x80\xd6\xcaq\ +\x820\xff\x85\x00\xfe\x00df\xf8-\xfbB\xb7\xb6\x00\x00\x00\x00IEND\xaeB`\x82'\ + + +def getToolStaticBitmapBitmap(): + return wxBitmapFromImage(getToolStaticBitmapImage()) + +def getToolStaticBitmapImage(): + stream = cStringIO.StringIO(getToolStaticBitmapData()) + return wxImageFromStream(stream) + +def getToolStaticBitmapIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolStaticBitmapBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolSliderData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x005\xf8\xdc~\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\x80IDATx\x9c\xdd\x92\xb1\r\x800\x10\x03\x0f\x94"#Q0PF\xc8\x08\x19\xcbcd\ +\x94\x14HP \x84\x04\x08>\n4\xb8\xfcO|\xd6\xcb]Ji\xe6C9\x80\x18\xe3\'\xe6e*+\ +\x00@\x12\xc38\x98>z\xe7\x91dz\xeb\x8e\x83\x9c\xb31\x9fM\xfd\xddR\xd2)\xa95\ +\xb9\t\x00\x10B\xa82\xac\x06\xb4\xea\xe7\x80\xd6\xfb\xc3EMaoJmc\x1e\x01\xde\ +\xf9f\xc3[\xc0\x1b\x89/\x01e*\xaf\x1boZ\x00\xcau!\xcd\n\x1f\x13Q\x00\x00\x00\ +\x00IEND\xaeB`\x82' + +def getToolSliderBitmap(): + return wxBitmapFromImage(getToolSliderImage()) + +def getToolSliderImage(): + stream = cStringIO.StringIO(getToolSliderData()) + return wxImageFromStream(stream) + +def getToolSliderIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolSliderBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolGaugeData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x005\xf8\xdc~\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00cIDATx\x9cc\x9c0e\xc2\x7f\x06\x1a\x02\x16\x06\x06\x06\x86\x82\x9c\x02\ +\x9a\x18\xfe\xe3\xcf\x0f\x88\x050\x0e.\xc0\xc1\xc2\xc1p\xe1\xca\x05\xb2,aA\ +\xe6|x\xf3\x81,C\xf0\x01&B\nv\xec\xd9A[\x0b(\x05\xa3\x16\x0c\xbc\x05,\xe8\ +\x02\x94\xa6\x1a\x9c\x16p\xb0pP\xd5`\x0c\x0b\xc8\xcd\xa9DY\x80\xaf\x98\xa0\ +\x14\x00\x00+\xec\x19!J\x0e\x8b\xa6\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolGaugeBitmap(): + return wxBitmapFromImage(getToolGaugeImage()) + +def getToolGaugeImage(): + stream = cStringIO.StringIO(getToolGaugeData()) + return wxImageFromStream(stream) + +def getToolGaugeIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolGaugeBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolScrollBarData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\r\x00\x00\x00\x18\x08\x06\ +\x00\x00\x00!\xf0wT\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xd1IDATx\x9c\xa5\x94\xb1\r\x830\x10E_"\x17\x1e\x85\x11\\P\xdc@)(\x19\ +\x81\x92"\x05\xe3PPx\x04\x0f\x91\x82\x92"RR P8l\xcb(\xaf\x04\x1e\xff\xfc\x0f\ +q\xeb\xba\xee\xc3E\x0c@\xdb\xb6\xc5\xc2\xf2^V\t`\x1c\xc7\xc3MW;\xfc\xe4\xa3\ +\xe2=v\xd1\xd5\x8e\x10\x02"R&m\x02@\xff\xec\xa3\xe2=%\x00\x88HT4(\xf4\xd9b\ +\xec\x92\xab\x1d\xd6\xd8\xe4\x83"\xb2\xbfp\x97\xfc\xe4\x8bRNI9\xac\xb1\xe7$\ +\xe0PB\x8e\xe8\x9e4z\xec"I\xf3_\xe5\xb9\xba\x93Ri\xdd\x07)W\xf90\x0c4\x8f&\ +\xbe\\\xfd\xedm\x13\xfc\n\xa0\xda\xf3\x93\xa7\xaa\xaa\x83\xa4\x85\x93\xa4I\ +\x9d\xf3$mi\xb1\xb1\xb2I!\x84\xa4\x90\x94\xe6\xd7\x9c]\x81\x81\xf5\x0fs\x85/\ +K\xf5c\xf9\x89\xca\xe1|\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolScrollBarBitmap(): + return wxBitmapFromImage(getToolScrollBarImage()) + +def getToolScrollBarImage(): + stream = cStringIO.StringIO(getToolScrollBarData()) + return wxImageFromStream(stream) + +def getToolScrollBarIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolScrollBarBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolTreeCtrlData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00aIDATx\x9c\xed\x93\xcb\r\xc00\x08C\xa1\xea\x00\x1e\x83\xfd\xa7a\x0c6Ho\ +\x88"\x88\x1aq\xado|l\xf1"\x85\x01\xd0Dw\xd54\xb3\x15k\x00\xdc\x06\x88\xc8kY\ +U\xdb\xe5J\x0c\x80Dd\x9d\x1a\xfd\x82n\x901\xa2"\x92\x07D\x94\x93k< \x9bv\x0f\ +W\x06d\xfd\x08\xdf\x11x\xfa\x17\xae\x91\x9b\x88\x1e\xba\x12*2\xab=\t\xe9\x00\ +\x00\x00\x00IEND\xaeB`\x82' + +def getToolTreeCtrlBitmap(): + return wxBitmapFromImage(getToolTreeCtrlImage()) + +def getToolTreeCtrlImage(): + stream = cStringIO.StringIO(getToolTreeCtrlData()) + return wxImageFromStream(stream) + +def getToolTreeCtrlIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolTreeCtrlBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolListCtrlData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x16\x00\x00\x00\x18\x08\x06\ +\x00\x00\x00\xfe\xbe\rK\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00}IDATx\x9cc\x9c0e\xc2\x7f\x06\x1a\x00\x16\x06\x06\x06\x86\x82\x9c\ +\x02\xaa\x1a\xfa\xe3\xcf\x0f\x88\xc10\x0e5\xc0\x8d\x1b7\x18\x18\x18\x18\x18\ +\x98\xa8b\x1a\x16\xc0\x82M\x90\x03\x87bR\xfcD3\x17\x8f\x1aL{\x83\xb1\xa6\nj\ +\xa4\xe8\xa1\x17\x14\x04\r\xe6\xc0\x99](0\x18f(9\x86\xe34\x18\xdd0R\r\xa7o\ +\x18\xe3r\x1d)\xae\xa6w\x06\xa1<\x8b\x0c\xbd\x0c\x02\x0f\nX]EU\x83\xa9U\x91"\ +\x03\x00\x9c{\x16ip\xfa\xbe\x9c\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolListCtrlBitmap(): + return wxBitmapFromImage(getToolListCtrlImage()) + +def getToolListCtrlImage(): + stream = cStringIO.StringIO(getToolListCtrlData()) + return wxImageFromStream(stream) + +def getToolListCtrlIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolListCtrlBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolCheckListData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\ +\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xcdIDATx\x9c\xdd\x951\x0e\xc3 \x0cE\x7f+\x0f\x1c\xb6C\x8e\x92\xa1\x07\ +\xcb\xd0\x81\xa30Dj\x87\x8a\x8a\x82\xbfqhX\xfa\xa5\x0c\xd8\xc1\xcf61\xb9\xac\ +\xf7\xf5\x89\x89\x12\x00Xn\xcb\x94\xe0iOo@^\x9c\xa9\x18#\x00\xe0Z;\x82\x04\ +\x04\t\xea&\xe6c\xef\xab\x00\x80W3R\xa5\n\x00\xda\xac\xac\xaa\xd2\x9e\xa8\ +\x9f\x02\xcaM9\xc8\x88(\xa0\x84\xb0\xe0\xa5\x8fU!\x8dE\t\xd0\x83X\xa2\x00-\ +\xbb\x12\xc2\xa0\xb5\xdd<\x03k\xed\x95\n\xb0\xbe\x98\x1e\xb0\xb67-\xb22\x1d\ +\xa9\xa2\x01\xe4,\xeb~3[\x0f\xee\x9ad\xab\x1d\xf99<hg\xc9\x9c\x83\x9e<\x87\ +\xfe\x13\xc03\x17\xd3[\xf4\xa7g\xa0\xdd;\xb5\xbcC\xf7\x01\xe4\x7f\xe8\xf6\ +\xd8\xbe\xd6\xcc\xe6\x95\x1c\xc9fD/\xb2\x10\x87\xc3dJ"U\x00\x00\x00\x00IEND\ +\xaeB`\x82' + +def getToolCheckListBitmap(): + return wxBitmapFromImage(getToolCheckListImage()) + +def getToolCheckListImage(): + stream = cStringIO.StringIO(getToolCheckListData()) + return wxImageFromStream(stream) + +def getToolCheckListIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolCheckListBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolNotebookData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\ +\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x00\xd8IDATx\x9c\xed\x96!\x12\x830\x10E\x7f:\x11\xc8\x88\n\x8e\x80\xa8\xe0\ +\x08\x1c=\xa2"\x12Q\x91#D \x90\x88\xceP\x95N\x12\x92\xb0K\x87\x8aN\x9f\xdb\ +\xcdN\xfe\xfeea\x10J)\xb8\xc9\xad \xd0^[A\xa9\x0b\x91nr\xab\xb5\x96T<\xcf\ +\xf3\xaa\x94b\x89\xc8\\\xb2\xbf\xf5\x18\x1fc\x94\xd3Z\x03\xc0\xae\xdb\xd4eV\ +\xa0\x86\xb9\x9b\xeay\xear#\xe0\xbb\xcf\xb9\xf0\x0c\xc3\x10\xc5\xde\x9d1[q\ +\xb6\x83\xf4R/\x18\xc6!\x970\x08\xbb\xf6.>%;"\n\xe1\x98J\xddG\x02\xa5\x99\ +\x97\xf2\x87Ft\x06o\x81\xd2\xc6\x94\xf2T\x0eo\x11\xfb\x19p\xa8]\x98"\x96\xe7\ +B\xfe\x16\x01@\xd7u\xe4\xdaF6|\x07\x9cf\x80\x13\xb7\xc8\x8f\xf1{k\xfa\x17\ +\xf8]\x01\t\xf0\xdeL.\x02\x00\xe9\x97\xe5(/\x90\xf2\\\xdd\xe7\xbb{_\x00\x00\ +\x00\x00IEND\xaeB`\x82' + +def getToolNotebookBitmap(): + return wxBitmapFromImage(getToolNotebookImage()) + +def getToolNotebookImage(): + stream = cStringIO.StringIO(getToolNotebookData()) + return wxImageFromStream(stream) + +def getToolNotebookIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolNotebookBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolSpinCtrlData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x0c$\xbf\x95\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\xebIDATx\x9c\xad\x94\xbd\x11\x84 \x10\x85\x1f7\x06\x86\x1b\x18P\x82\ +eX\x90\x01\x05\\p%\x18\x18X\x8eeP\x02\x81\xc1\x86\x04\xcep\xc1\x1d\xce\xc9\ +\x00\x87?o\x86dY\xdf\xe7\xee\x02b\x18\x07\x87\x13z=_\xa2(\xf1\x0b8\xb4\xecj\ +\x1d\x11!\\\xb1x\xe5Av\xb5E?\xa4\xb5\x8e\xc6\xcdb\x9c\xd6\x1a\xcc\xec\x88h\ +\xab\xeeQ\xe4\xfaG\xde\x1c\x00\x86q\x003omO\x02\xea\xaa>l\x0e\x00]\xd7\xed U\ +\xec\xa3Rs\xafy\x9e\x93{Q\x80]m\x11\xc4,\xc6\xe5\xf2\x98\xd9E\x01\xa5\x92\ +\x8d\x14D\x94\xcd\xb9e\xc89]\xaa\xc0,&yI\xa7i\x82\xea\xd55\x80l\xa4\x08O\x11\ +\xf0\x19\xba\xea\x15\x88H\\n\x91l\xa4h\xdbv\x17\xf3\xe6@f\x06\xa57;Txdo\x19\ +\xb2\xaf\xe2\xb75~o\x9bA\xea\x8d9\x02\t\xdf\xa1\rp\xb6\x1d\xa1Bs\x00x\x03\ +\xf8\x1fx\xe7\xcd\xa8y\xd6\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolSpinCtrlBitmap(): + return wxBitmapFromImage(getToolSpinCtrlImage()) + +def getToolSpinCtrlImage(): + stream = cStringIO.StringIO(getToolSpinCtrlData()) + return wxImageFromStream(stream) + +def getToolSpinCtrlIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolSpinCtrlBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolUnknownData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00dIDATx\x9ccd``\xf8\xcf@\x01`a```\xb8p\xe5\x02Y\x9a\rt\x0c \x06\xe0\ +\x92D\x06\xb8,a"F3.1\x9c\x06 \xdbJ\xc8{x\r \x06`\r\x03R\x02\x95\xa0\x0b`~\')\ +\x10\xd15S\xe4\x02|\xb6\x13m\x00>\x803!\x11\xb2\x99(\x17\x18\xe8\x18\x10\x0c\ +\x87\x81\xf7\x02#\x03\x85\xd9\x19\x00\x180\x1c\x9b3;\xb6\xda\x00\x00\x00\x00\ +IEND\xaeB`\x82' + +def getToolUnknownBitmap(): + return wxBitmapFromImage(getToolUnknownImage()) + +def getToolUnknownImage(): + stream = cStringIO.StringIO(getToolUnknownData()) + return wxImageFromStream(stream) + +def getToolUnknownIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolUnknownBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolBoxSizerData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00DIDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4\x9b\x1a\x06\xb00000\x04\x84\ +\x04\xfc\xa7\xc8\x00\x06\x06\x06\x86\rk60bS\x10\x10\x12\xf0\x1f\x9f\xdc\xc0\ +\x87\xc1\xa8\x01T0\x80Q@@\x80\xa2\x84\xc48\xf43\x13\x00\xf5\xfe\x0c\x98\x979\ +f\xc6\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolBoxSizerBitmap(): + return wxBitmapFromImage(getToolBoxSizerImage()) + +def getToolBoxSizerImage(): + stream = cStringIO.StringIO(getToolBoxSizerData()) + return wxImageFromStream(stream) + +def getToolBoxSizerIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolBoxSizerBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolSeparatorData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x0e\x00\x00\x00\x02\x08\x06\ +\x00\x00\x00h\x8a\xed\xaa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00\x19IDATx\x9cc\x9c0e\xc2\x7f\x06\x12AFF\x06\x03\x0b\x8cA*\x00\x00\ +\xb5q\x05)B\x17\xc1\x07\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolSeparatorBitmap(): + return wxBitmapFromImage(getToolSeparatorImage()) + +def getToolSeparatorImage(): + stream = cStringIO.StringIO(getToolSeparatorData()) + return wxImageFromStream(stream) + +def getToolSeparatorIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolSeparatorBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolStaticBoxSizerData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00dIDATx\x9c\xed\x92A\n\xc00\x08\x045\xe4\x01\xfb4\x0f>3\x07\x9f\xe6\ +\x0f\xecU,\xb4IS\xe8\xa5s\x11\x16\x1c\x16\x91\x01\xd0\x0e\xad\x06\xee\x1e\ +\x8f\x05\xee\x1e\x00xE\xd2\x89\x88D%l\x18\xd7\x06\xa2r+\xea5\xc8\rl\x18gyET\ +\xa2\xd5\xe5<g8\x1dq\x95_\xf0\x82\x80\x01L=\xcc\xa5`\x87\xefop\x00N\x12$g%t;\ +\xe1\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolStaticBoxSizerBitmap(): + return wxBitmapFromImage(getToolStaticBoxSizerImage()) + +def getToolStaticBoxSizerImage(): + stream = cStringIO.StringIO(getToolStaticBoxSizerData()) + return wxImageFromStream(stream) + +def getToolStaticBoxSizerIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolStaticBoxSizerBitmap()) + return icon + +#---------------------------------------------------------------------- +def getToolGridSizerData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00<IDATx\x9cc\x14\x10\x10`\x08\x08\t\xf8\xcf@&`\x8116\xac\xd9\xc0\x88M\ +A@H\xc0\x7f|rL\xe4\xda\x0c\x03\xa3\x06000\x8eF\xe3p0\x80\xe2hd\x14\x10\x10\ +\xa0\xc8\x05\x00M\x98\x16\xba|O\xcc\x02\x00\x00\x00\x00IEND\xaeB`\x82' + +def getToolGridSizerBitmap(): + return wxBitmapFromImage(getToolGridSizerImage()) + +def getToolGridSizerImage(): + stream = cStringIO.StringIO(getToolGridSizerData()) + return wxImageFromStream(stream) + +def getToolGridSizerIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getToolGridSizerBitmap()) + return icon + +#---------------------------------------------------------------------- +def getTreeSeparatorData(): + return \ +'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0e\x08\x06\ +\x00\x00\x00&/\x9c\x8a\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ +\x007IDATx\x9cc\x14\x10\x10`\xa0\x040Q\xa4{\xd4\x00\x06\x06\x06\x06\x06\x16\ +\x18\xa3\xa1\xa5\xe1?\xb1\x9a222\x18$D$\x18Q\x0c\x80I\x90\n\x18G\xd3\xc1 0\ +\x00\x00\xfb\xe8\x05\xb7\x9e\n\x8b\xdd\x00\x00\x00\x00IEND\xaeB`\x82' + +def getTreeSeparatorBitmap(): + return wxBitmapFromImage(getTreeSeparatorImage()) + +def getTreeSeparatorImage(): + stream = cStringIO.StringIO(getTreeSeparatorData()) + return wxImageFromStream(stream) + +def getTreeSeparatorIcon(): + icon = wxEmptyIcon() + icon.CopyFromBitmap(getTreeSeparatorBitmap()) + return icon diff --git a/wxPython/wxPython/tools/XRCed/license.txt b/wxPython/wxPython/tools/XRCed/license.txt new file mode 100644 index 0000000000..933ec7d758 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/license.txt @@ -0,0 +1,23 @@ +Copyright (c) 2002, Roman Rolinsky <rollrom@users.sourceforge.net> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/wxPython/wxPython/tools/XRCed/panel.py b/wxPython/wxPython/tools/XRCed/panel.py new file mode 100644 index 0000000000..b9abd4b2bd --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/panel.py @@ -0,0 +1,365 @@ +# Name: panel.py +# Purpose: XRC editor, Panel class and related +# Author: Roman Rolinsky <rolinsky@mema.ucl.ac.be> +# Created: 02.12.2002 +# RCS-ID: $Id$ + +from xxx import * # xxx imports globals and params +from undo import * +from wxPython.html import wxHtmlWindow + +# Properties panel containing notebook +class Panel(wxNotebook): + def __init__(self, parent, id = -1): + if wxPlatform != '__WXMAC__': # some problems with this style on macs + wxNotebook.__init__(self, parent, id, style=wxNB_BOTTOM) + else: + wxNotebook.__init__(self, parent, id) + global panel + g.panel = panel = self + self.modified = False + + # Set common button size for parameter buttons + import params + params.buttonSize = self.DLG_SZE(buttonSize) + + # List of child windows + self.pages = [] + # Create scrolled windows for pages + self.page1 = wxScrolledWindow(self, -1) + sizer = wxBoxSizer() + sizer.Add(wxBoxSizer()) # dummy sizer + self.page1.SetAutoLayout(True) + self.page1.SetSizer(sizer) + self.AddPage(self.page1, 'Properties') + # Second page + self.page2 = wxScrolledWindow(self, -1) + sizer = wxBoxSizer() + sizer.Add(wxBoxSizer()) # dummy sizer + self.page2.SetAutoLayout(True) + self.page2.SetSizer(sizer) + # Cache for already used panels + self.pageCache = {} # cached property panels + self.stylePageCache = {} # cached style panels + # Dummy parent window for cache pages + self.cacheParent = wxFrame(None, -1, 'i am invisible') + # Delete child windows and recreate page sizer + def ResetPage(self, page): + topSizer = page.GetSizer() + sizer = topSizer.GetChildren()[0].GetSizer() + for w in page.GetChildren(): + sizer.RemoveWindow(w) + if isinstance(w, ParamPage): + # With SetParent, we wouldn't need this + w.Reparent(self.cacheParent) + else: + w.Destroy() + topSizer.RemoveSizer(sizer) + # Create new windows + sizer = wxBoxSizer(wxVERTICAL) + # Special case - resize html window + if g.conf.panic: + topSizer.Add(sizer, 1, wxEXPAND) + else: + topSizer.Add(sizer, 0, wxALL, 5) + return sizer + def SetData(self, xxx): + self.pages = [] + # First page + # Set cached or new page + # Remove current objects and sizer + sizer = self.ResetPage(self.page1) + if not xxx or (not xxx.allParams and not xxx.hasName): + if g.tree.selection: + sizer.Add(wxStaticText(self.page1, -1, 'This item has no properties.')) + else: # nothing selected + # If first time, show some help + if g.conf.panic: + html = wxHtmlWindow(self.page1, -1, wxDefaultPosition, + wxDefaultSize, wxSUNKEN_BORDER) + html.SetPage(g.helpText) + sizer.Add(html, 1, wxEXPAND) + g.conf.panic = False + else: + sizer.Add(wxStaticText(self.page1, -1, 'Select a tree item.')) + else: + g.currentXXX = xxx.treeObject() + try: + page = self.pageCache[xxx.__class__] + page.Reparent(self.page1) + except KeyError: + page = PropPage(self.page1, xxx.className, xxx) + self.pageCache[xxx.__class__] = page + page.SetValues(xxx) + self.pages.append(page) + sizer.Add(page, 1, wxEXPAND) + if xxx.hasChild: + # Special label for child objects - they may have different GUI + cacheID = (xxx.child.__class__, xxx.__class__) + try: + page = self.pageCache[cacheID] + page.Reparent(self.page1) + except KeyError: + page = PropPage(self.page1, xxx.child.className, xxx.child) + self.pageCache[cacheID] = page + page.SetValues(xxx.child) + self.pages.append(page) + sizer.Add(page, 0, wxEXPAND | wxTOP, 5) + self.page1.Layout() + size = self.page1.GetSizer().GetMinSize() + self.page1.SetScrollbars(1, 1, size.x, size.y, 0, 0, True) + + # Second page + # Create if does not exist + if xxx and xxx.treeObject().hasStyle: + xxx = xxx.treeObject() + # Simplest case: set data if class is the same + sizer = self.ResetPage(self.page2) + try: + page = self.stylePageCache[xxx.__class__] + page.Reparent(self.page2) + except KeyError: + page = StylePage(self.page2, xxx.className + ' style', xxx) + self.stylePageCache[xxx.__class__] = page + page.SetValues(xxx) + self.pages.append(page) + sizer.Add(page, 0, wxEXPAND) + # Add page if not exists + if not self.GetPageCount() == 2: + self.AddPage(self.page2, 'Style') + self.page2.Layout() + size = self.page2.GetSizer().GetMinSize() + self.page2.SetScrollbars(1, 1, size.x, size.y, 0, 0, True) + else: + # Remove page if exists + if self.GetPageCount() == 2: + self.SetSelection(0) + self.page1.Refresh() + self.RemovePage(1) + self.modified = False + def Clear(self): + self.SetData(None) + self.modified = False + # If some parameter has changed + def IsModified(self): + return self.modified + def SetModified(self, value): + # Register undo object when modifying first time + if not self.modified and value: + g.undoMan.RegisterUndo(UndoEdit()) + self.modified = value + def Apply(self): + for p in self.pages: p.Apply() + +################################################################################ + +# General class for notebook pages +class ParamPage(wxPanel): + def __init__(self, parent, xxx): + wxPanel.__init__(self, parent, -1) + self.xxx = xxx + # Register event handlers + for id in paramIDs.values(): + EVT_CHECKBOX(self, id, self.OnCheckParams) + self.checks = {} + self.controls = {} # save python objects + self.controlName = None + + def OnCheckParams(self, evt): + xxx = self.xxx + param = evt.GetEventObject().GetName() + w = self.controls[param] + w.Enable(True) + objElem = xxx.element + if evt.IsChecked(): + # Ad new text node in order of allParams + w.SetValue('') # set empty (default) value + w.SetModified() # mark as changed + elem = g.tree.dom.createElement(param) + # Some classes are special + if param == 'font': + xxx.params[param] = xxxParamFont(xxx.element, elem) + elif param in xxxObject.bitmapTags: + xxx.params[param] = xxxParamBitmap(elem) + else: + xxx.params[param] = xxxParam(elem) + # Find place to put new element: first present element after param + found = False + paramStyles = xxx.allParams + xxx.styles + for p in paramStyles[paramStyles.index(param) + 1:]: + # Content params don't have same type + if xxx.params.has_key(p) and p != 'content': + found = True + break + if found: + nextTextElem = xxx.params[p].node + objElem.insertBefore(elem, nextTextElem) + else: + objElem.appendChild(elem) + else: + # Remove parameter + xxx.params[param].remove() + del xxx.params[param] + w.SetValue('') + w.modified = False # mark as not changed + w.Enable(False) + # Set modified flag (provokes undo storing is necessary) + panel.SetModified(True) + def Apply(self): + xxx = self.xxx + if self.controlName: + name = self.controlName.GetValue() + if xxx.name != name: + xxx.name = name + xxx.element.setAttribute('name', name) + for param, w in self.controls.items(): + if w.modified: + paramObj = xxx.params[param] + value = w.GetValue() + if param in xxx.specials: + xxx.setSpecial(param, value) + else: + paramObj.update(value) + # Save current state + def SaveState(self): + self.origChecks = map(lambda i: (i[0], i[1].GetValue()), self.checks.items()) + self.origControls = map(lambda i: (i[0], i[1].GetValue(), i[1].IsEnabled()), + self.controls.items()) + if self.controlName: + self.origName = self.controlName.GetValue() + # Return original values + def GetState(self): + if self.controlName: + return (self.origChecks, self.origControls, self.origName) + else: + return (self.origChecks, self.origControls) + # Set values from undo data + def SetState(self, state): + for k,v in state[0]: + self.checks[k].SetValue(v) + for k,v,e in state[1]: + self.controls[k].SetValue(v) + self.controls[k].Enable(e) + if e: self.controls[k].modified = True + if self.controlName: + self.controlName.SetValue(state[2]) + +################################################################################ + +# Panel for displaying properties +class PropPage(ParamPage): + def __init__(self, parent, label, xxx): + ParamPage.__init__(self, parent, xxx) + box = wxStaticBox(self, -1, label) + box.SetFont(labelFont) + topSizer = wxStaticBoxSizer(box, wxVERTICAL) + sizer = wxFlexGridSizer(len(xxx.allParams), 2, 1, 1) + sizer.AddGrowableCol(1) + if xxx.hasName: + label = wxStaticText(self, -1, 'XML ID:', size=(100,-1)) + control = ParamText(self, 'XML_name', 200) + sizer.AddMany([ (label, 0, wxALIGN_CENTER_VERTICAL), + (control, 0, wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxGROW, 5) ]) + self.controlName = control + for param in xxx.allParams: + present = xxx.params.has_key(param) + if param in xxx.required: + label = wxStaticText(self, paramIDs[param], param + ':', + size = (100,-1), name = param) + else: + # Notebook has one very loooooong parameter + if param == 'usenotebooksizer': sParam = 'usesizer:' + else: sParam = param + ':' + label = wxCheckBox(self, paramIDs[param], sParam, + size = (100,-1), name = param) + self.checks[param] = label + try: + typeClass = xxx.paramDict[param] + except KeyError: + try: + # Standart type + typeClass = paramDict[param] + except KeyError: + # Default + typeClass = ParamText + control = typeClass(self, param) + control.Enable(present) + sizer.AddMany([ (label, 0, wxALIGN_CENTER_VERTICAL), + (control, 0, wxALIGN_CENTER_VERTICAL | wxGROW) ]) + self.controls[param] = control + topSizer.Add(sizer, 1, wxALL | wxEXPAND, 3) + self.SetAutoLayout(True) + self.SetSizer(topSizer) + topSizer.Fit(self) + def SetValues(self, xxx): + self.xxx = xxx + self.origChecks = [] + self.origControls = [] + # Set values, checkboxes to False, disable defaults + if xxx.hasName: + self.controlName.SetValue(xxx.name) + self.origName = xxx.name + for param in xxx.allParams: + w = self.controls[param] + w.modified = False + try: + value = xxx.params[param].value() + w.Enable(True) + w.SetValue(value) + if not param in xxx.required: + self.checks[param].SetValue(True) + self.origChecks.append((param, True)) + self.origControls.append((param, value, True)) + except KeyError: + self.checks[param].SetValue(False) + w.SetValue('') + w.Enable(False) + self.origChecks.append((param, False)) + self.origControls.append((param, '', False)) + +################################################################################ + +# Style notebook page +class StylePage(ParamPage): + def __init__(self, parent, label, xxx): + ParamPage.__init__(self, parent, xxx) + box = wxStaticBox(self, -1, label) + box.SetFont(labelFont) + topSizer = wxStaticBoxSizer(box, wxVERTICAL) + sizer = wxFlexGridSizer(len(xxx.styles), 2, 1, 1) + sizer.AddGrowableCol(1) + for param in xxx.styles: + present = xxx.params.has_key(param) + check = wxCheckBox(self, paramIDs[param], + param + ':', size = (100,-1), name = param) + check.SetValue(present) + control = paramDict[param](self, name = param) + control.Enable(present) + sizer.AddMany([ (check, 0, wxALIGN_CENTER_VERTICAL), + (control, 0, wxALIGN_CENTER_VERTICAL | wxGROW) ]) + self.checks[param] = check + self.controls[param] = control + topSizer.Add(sizer, 1, wxALL | wxEXPAND, 3) + self.SetAutoLayout(True) + self.SetSizer(topSizer) + topSizer.Fit(self) + # Set data for a cahced page + def SetValues(self, xxx): + self.xxx = xxx + self.origChecks = [] + self.origControls = [] + for param in xxx.styles: + present = xxx.params.has_key(param) + check = self.checks[param] + check.SetValue(present) + w = self.controls[param] + w.modified = False + if present: + value = xxx.params[param].value() + else: + value = '' + w.SetValue(value) + w.Enable(present) + self.origChecks.append((param, present)) + self.origControls.append((param, value, present)) + diff --git a/wxPython/wxPython/tools/XRCed/params.py b/wxPython/wxPython/tools/XRCed/params.py index 30b0ae9072..a0c71474cf 100644 --- a/wxPython/wxPython/tools/XRCed/params.py +++ b/wxPython/wxPython/tools/XRCed/params.py @@ -4,17 +4,11 @@ # Created: 22.08.2001 # RCS-ID: $Id$ -from wxPython.wx import * -from wxPython.xrc import * import string import os.path +from globals import * from types import * - -# Object which is currently processed -currentXXX = None -def SetCurrentXXX(xxx): - global currentXXX - currentXXX = xxx +from wxPython.xrc import * genericStyles = ['wxSIMPLE_BORDER', 'wxDOUBLE_BORDER', 'wxSUNKEN_BORDER', 'wxRAISED_BORDER', @@ -22,53 +16,54 @@ genericStyles = ['wxSIMPLE_BORDER', 'wxDOUBLE_BORDER', 'wxTRANSPARENT_WINDOW', 'wxWANTS_CHARS', 'wxNO_FULL_REPAINT_ON_RESIZE'] -buttonSize = (55,-1) +buttonSize = (30,-1) # in dialog units, transformed to pixels in panel ctor # Class that can properly disable children class PPanel(wxPanel): def __init__(self, parent, name): wxPanel.__init__(self, parent, -1, name=name) - self.modified = self.freeze = false + self.modified = self.freeze = False def Enable(self, value): # Something strange is going on with enable so we make sure... for w in self.GetChildren(): w.Enable(value) wxPanel.Enable(self, value) def SetModified(self): - self.modified = true - panel.SetModified(true) + self.modified = True + g.panel.SetModified(True) + # Common method to set modified state + def OnChange(self, evt): + if self.freeze: return + self.SetModified() + evt.Skip() class ParamBinaryOr(PPanel): def __init__(self, parent, name): PPanel.__init__(self, parent, name) self.ID_TEXT_CTRL = wxNewId() self.ID_BUTTON_CHOICES = wxNewId() - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) sizer = wxBoxSizer() self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=wxSize(200,-1)) sizer.Add(self.text, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5) self.button = wxButton(self, self.ID_BUTTON_CHOICES, 'Edit...', size=buttonSize) sizer.Add(self.button, 0, wxALIGN_CENTER_VERTICAL) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) EVT_BUTTON(self, self.ID_BUTTON_CHOICES, self.OnButtonChoices) EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange) - def OnChange(self, evt): - if self.freeze: return - self.SetModified() - evt.Skip() def GetValue(self): return self.text.GetValue() def SetValue(self, value): - self.freeze = true + self.freeze = True self.text.SetValue(value) - self.freeze = false + self.freeze = False def OnButtonChoices(self, evt): dlg = wxDialog(self, -1, 'Choices') topSizer = wxBoxSizer(wxVERTICAL) listBox = wxCheckListBox(dlg, -1, choices=self.values, size=(250,200)) - value = map(string.strip, string.split(self.text.GetValue(), '|')) + value = map(string.strip, self.text.GetValue().split('|')) if value == ['']: value = [] ignored = [] for i in value: @@ -89,7 +84,7 @@ class ParamBinaryOr(PPanel): sizer.Add(0, 0, 1) sizer.Add(wxButton(dlg, wxID_CANCEL, 'Cancel')) topSizer.Add(sizer, 0, wxALL | wxEXPAND, 10) - dlg.SetAutoLayout(true) + dlg.SetAutoLayout(True) dlg.SetSizer(topSizer) topSizer.Fit(dlg) dlg.Center() @@ -109,7 +104,7 @@ class ParamBinaryOr(PPanel): class ParamFlag(ParamBinaryOr): values = ['wxTOP', 'wxBOTTOM', 'wxLEFT', 'wxRIGHT', 'wxALL', - 'wxEXPAND', 'wxSHAPED', 'wxALIGN_CENTRE', 'wxALIGN_RIGHT', + 'wxEXPAND', 'wxGROW', 'wxSHAPED', 'wxALIGN_CENTRE', 'wxALIGN_RIGHT', 'wxALIGN_BOTTOM', 'wxALIGN_CENTRE_VERTICAL', 'wxALIGN_CENTRE_HORIZONTAL'] equal = {'wxALIGN_CENTER': 'wxALIGN_CENTRE', @@ -121,18 +116,18 @@ class ParamFlag(ParamBinaryOr): class ParamStyle(ParamBinaryOr): equal = {'wxALIGN_CENTER': 'wxALIGN_CENTRE'} def __init__(self, parent, name): - self.values = currentXXX.winStyles + genericStyles + self.values = g.currentXXX.winStyles + genericStyles ParamBinaryOr.__init__(self, parent, name) class ParamNonGenericStyle(ParamBinaryOr): def __init__(self, parent, name): - self.values = currentXXX.winStyles + self.values = g.currentXXX.winStyles ParamBinaryOr.__init__(self, parent, name) class ParamExStyle(ParamBinaryOr): def __init__(self, parent, name): - if currentXXX: - self.values = currentXXX.exStyles # constant at the moment + if g.currentXXX: + self.values = g.currentXXX.exStyles # constant at the moment else: self.values = [] ParamBinaryOr.__init__(self, parent, name) @@ -142,33 +137,29 @@ class ParamColour(PPanel): PPanel.__init__(self, parent, name) self.ID_TEXT_CTRL = wxNewId() self.ID_BUTTON = wxNewId() - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) sizer = wxBoxSizer() self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=(65,-1)) sizer.Add(self.text, 0, wxRIGHT, 5) self.button = wxPanel(self, self.ID_BUTTON, wxDefaultPosition, wxSize(20, 20)) sizer.Add(self.button, 0, wxGROW) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) - self.textModified = false + self.textModified = False EVT_PAINT(self.button, self.OnPaintButton) EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange) EVT_LEFT_DOWN(self.button, self.OnLeftDown) def GetValue(self): return self.text.GetValue() def SetValue(self, value): - self.freeze = true + self.freeze = True if not value: value = '#FFFFFF' self.text.SetValue(str(value)) # update text ctrl colour = wxColour(int(value[1:3], 16), int(value[3:5], 16), int(value[5:7], 16)) self.button.SetBackgroundColour(colour) self.button.Refresh() - self.freeze = false - def OnChange(self, evt): - if self.freeze: return - self.SetModified() - evt.Skip() + self.freeze = False def OnPaintButton(self, evt): dc = wxPaintDC(self.button) dc.SetBrush(wxTRANSPARENT_BRUSH) @@ -206,23 +197,21 @@ class ParamFont(PPanel): PPanel.__init__(self, parent, name) self.ID_TEXT_CTRL = wxNewId() self.ID_BUTTON_SELECT = wxNewId() - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) sizer = wxBoxSizer() self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=wxSize(200,-1)) sizer.Add(self.text, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5) self.button = wxButton(self, self.ID_BUTTON_SELECT, 'Select...', size=buttonSize) sizer.Add(self.button, 0, wxALIGN_CENTER_VERTICAL) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) - self.textModified = false + self.textModified = False EVT_BUTTON(self, self.ID_BUTTON_SELECT, self.OnButtonSelect) EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange) def OnChange(self, evt): - if self.freeze: return - self.SetModified() - self.textModified = true - evt.Skip() + PPanel.OnChange(self, evt) + self.textModified = True def _defaultValue(self): return ['12', 'default', 'normal', 'normal', '0', '', ''] def GetValue(self): @@ -234,11 +223,11 @@ class ParamFont(PPanel): return self._defaultValue() return self.value def SetValue(self, value): - self.freeze = true # disable other handlers + self.freeze = True # disable other handlers if not value: value = self._defaultValue() self.value = value self.text.SetValue(str(value)) # update text ctrl - self.freeze = false + self.freeze = False def OnButtonSelect(self, evt): if self.textModified: # text has newer value try: @@ -255,23 +244,23 @@ class ParamFont(PPanel): face = '' enc = wxFONTENCODING_DEFAULT # Fall back to default if exceptions - error = false + error = False try: try: size = int(self.value[0]) - except ValueError: error = true + except ValueError: error = True try: family = fontFamiliesXml2wx[self.value[1]] - except KeyError: error = true + except KeyError: error = True try: style = fontStylesXml2wx[self.value[2]] - except KeyError: error = true + except KeyError: error = True try: weight = fontWeightsXml2wx[self.value[3]] - except KeyError: error = true + except KeyError: error = True try: underlined = int(self.value[4]) - except ValueError: error = true + except ValueError: error = True face = self.value[5] mapper = wxFontMapper() if not self.value[6]: enc = mapper.CharsetToEncoding(self.value[6]) except IndexError: - error = true + error = True if error: wxLogError('Invalid font specification') if enc == wxFONTENCODING_DEFAULT: enc = wxFONTENCODING_SYSTEM font = wxFont(size, family, style, weight, underlined, face, enc) @@ -291,7 +280,7 @@ class ParamFont(PPanel): # Add ignored flags self.SetValue(value) self.SetModified() - self.textModified = false + self.textModified = False dlg.Destroy() ################################################################################ @@ -302,60 +291,108 @@ class ParamInt(PPanel): self.ID_SPIN_CTRL = wxNewId() sizer = wxBoxSizer() self.spin = wxSpinCtrl(self, self.ID_SPIN_CTRL, size=wxSize(50,-1)) - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) sizer.Add(self.spin) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) EVT_SPINCTRL(self, self.ID_SPIN_CTRL, self.OnChange) def GetValue(self): return str(self.spin.GetValue()) def SetValue(self, value): - self.freeze = true + self.freeze = True if not value: value = 0 self.spin.SetValue(int(value)) - self.freeze = false - def OnChange(self, evt): - if self.freeze: return - self.SetModified() - evt.Skip() + self.freeze = False + +# Same as int but allows dialog units (XXXd) +class ParamUnit(PPanel): + def __init__(self, parent, name): + PPanel.__init__(self, parent, name) + self.ID_TEXT_CTRL = wxNewId() + self.ID_SPIN_BUTTON = wxNewId() + sizer = wxBoxSizer() + self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=wxSize(35,-1)) + self.spin = wxSpinButton(self, self.ID_SPIN_BUTTON, style = wxSP_VERTICAL) + self.spin.SetRange(-10000, 10000) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) + sizer.Add(self.text, 0, wxEXPAND | wxRIGHT, 2) + sizer.Add(self.spin) + self.SetAutoLayout(True) + self.SetSizer(sizer) + sizer.Fit(self) + EVT_SPIN_UP(self, self.ID_SPIN_BUTTON, self.OnSpinUp) + EVT_SPIN_DOWN(self, self.ID_SPIN_BUTTON, self.OnSpinDown) + def GetValue(self): + return self.text.GetValue() + def SetValue(self, value): + self.freeze = True + if not value: value = '0' + self.text.SetValue(value) + self.freeze = False + def Change(self, x): + # Check if we are working with dialog units + value = self.text.GetValue() + units = '' + if value[-1].upper() == 'D': + units = value[-1] + value = value[:-1] + try: + intValue = int(value) + x + self.spin.SetValue(intValue) + self.text.SetValue(str(intValue) + units) + self.SetModified() + except: + # !!! Strange, if I use wxLogWarning, event is re-generated + print 'incorrect unit format' + def OnSpinUp(self, evt): + self.Change(1) + def OnSpinDown(self, evt): + self.Change(-1) class ParamText(PPanel): - def __init__(self, parent, name, textWidth=200): + def __init__(self, parent, name, textWidth=-1): PPanel.__init__(self, parent, name) self.ID_TEXT_CTRL = wxNewId() # We use sizer even here to have the same size of text control sizer = wxBoxSizer() - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=wxSize(textWidth,-1)) - sizer.Add(self.text, 0, wxALIGN_CENTER_VERTICAL) - self.SetAutoLayout(true) + if textWidth == -1: option = 1 + else: option = 0 + sizer.Add(self.text, option, wxALIGN_CENTER_VERTICAL) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange) def GetValue(self): return self.text.GetValue() def SetValue(self, value): - self.freeze = true # disable other handlers + self.freeze = True # disable other handlers self.text.SetValue(value) - self.freeze = false # disable other handlers - def OnChange(self, evt): - if self.freeze: return - self.SetModified() - evt.Skip() + self.freeze = False # disable other handlers class ParamAccel(ParamText): def __init__(self, parent, name): - ParamText.__init__(self, parent, name, 50) + ParamText.__init__(self, parent, name, 100) class ParamPosSize(ParamText): def __init__(self, parent, name): ParamText.__init__(self, parent, name, 80) +class ParamLabel(ParamText): + def __init__(self, parent, name): + ParamText.__init__(self, parent, name, 200) + +class ParamEncoding(ParamText): + def __init__(self, parent, name): + ParamText.__init__(self, parent, name, 100) + class ContentDialog(wxDialogPtr): def __init__(self, parent, value): - # Is this normal??? - w = frame.res.LoadDialog(parent, 'DIALOG_CONTENT') + # Load from resource + w = g.frame.res.LoadDialog(parent, 'DIALOG_CONTENT') + # Perform initialization with class pointer wxDialogPtr.__init__(self, w.this) self.thisown = 1 self.Center() @@ -363,7 +400,7 @@ class ContentDialog(wxDialogPtr): # Set list items for v in value: self.list.Append(v) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.GetSizer().Fit(self) # Callbacks self.ID_BUTTON_APPEND = XMLID('BUTTON_APPEND') @@ -405,8 +442,7 @@ class ContentDialog(wxDialogPtr): class ContentCheckListDialog(wxDialogPtr): def __init__(self, parent, value): - # Is this normal??? - w = frame.res.LoadDialog(parent, 'DIALOG_CONTENT_CHECK_LIST') + w = g.frame.res.LoadDialog(parent, 'DIALOG_CONTENT_CHECK_LIST') wxDialogPtr.__init__(self, w.this) self.thisown = 1 self.Center() @@ -417,7 +453,7 @@ class ContentCheckListDialog(wxDialogPtr): self.list.Append(v) self.list.Check(i, ch) i += 1 - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.GetSizer().Fit(self) # Callbacks self.ID_BUTTON_APPEND = XMLID('BUTTON_APPEND') @@ -468,23 +504,21 @@ class ParamContent(PPanel): PPanel.__init__(self, parent, name) self.ID_TEXT_CTRL = wxNewId() self.ID_BUTTON_EDIT = wxNewId() - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) sizer = wxBoxSizer() self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=wxSize(200,-1)) sizer.Add(self.text, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5) self.button = wxButton(self, self.ID_BUTTON_EDIT, 'Edit...', size=buttonSize) sizer.Add(self.button, 0, wxALIGN_CENTER_VERTICAL) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) - self.textModified = false + self.textModified = False EVT_BUTTON(self, self.ID_BUTTON_EDIT, self.OnButtonEdit) EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange) def OnChange(self, evt): - if self.freeze: return - self.SetModified() - self.textModified = true - evt.Skip() + PPanel.OnChange(self, evt) + self.textModified = True def GetValue(self): if self.textModified: # text has newer value try: @@ -494,11 +528,11 @@ class ParamContent(PPanel): return [] return self.value def SetValue(self, value): - self.freeze = true + self.freeze = True if not value: value = [] self.value = value self.text.SetValue(str(value)) # update text ctrl - self.freeze = false + self.freeze = False def OnButtonEdit(self, evt): if self.textModified: # text has newer value try: @@ -514,7 +548,7 @@ class ParamContent(PPanel): # Add ignored flags self.SetValue(value) self.SetModified() - self.textModified = false + self.textModified = False dlg.Destroy() # CheckList content @@ -536,13 +570,13 @@ class ParamContentCheckList(ParamContent): # Add ignored flags self.SetValue(value) self.SetModified() - self.textModified = false + self.textModified = False dlg.Destroy() class IntListDialog(wxDialogPtr): def __init__(self, parent, value): # Is this normal??? - w = frame.res.LoadDialog(parent, 'DIALOG_INTLIST') + w = g.frame.res.LoadDialog(parent, 'DIALOG_INTLIST') wxDialogPtr.__init__(self, w.this) self.thisown = 1 self.Center() @@ -554,7 +588,7 @@ class IntListDialog(wxDialogPtr): wxLogError('Invalid item type') else: self.list.Append(str(v)) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.GetSizer().Fit(self) # Callbacks self.ID_BUTTON_ADD = XMLID('BUTTON_ADD') @@ -571,10 +605,10 @@ class IntListDialog(wxDialogPtr): i = self.list.FindString(s) if i == -1: # ignore non-unique # Find place to insert - found = false + found = False for i in range(self.list.Number()): if int(self.list.GetString(i)) > v: - found = true + found = True break if found: self.list.InsertItems([s], i) else: self.list.Append(s) @@ -605,7 +639,7 @@ class ParamIntList(ParamContent): # Add ignored flags self.SetValue(value) self.SetModified() - self.textModified = false + self.textModified = False dlg.Destroy() # Boxless radiobox @@ -613,22 +647,22 @@ class RadioBox(PPanel): def __init__(self, parent, id, choices, pos=wxDefaultPosition, name='radiobox'): PPanel.__init__(self, parent, name) - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) self.choices = choices topSizer = wxBoxSizer() for i in choices: button = wxRadioButton(self, -1, i, name=i) topSizer.Add(button) EVT_RADIOBUTTON(self, button.GetId(), self.OnRadioChoice) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(topSizer) topSizer.Fit(self) def SetStringSelection(self, value): - self.freeze = true + self.freeze = True for i in self.choices: self.FindWindowByName(i).SetValue(i == value) self.value = value - self.freeze = false + self.freeze = False def OnRadioChoice(self, evt): if self.freeze: return if evt.GetSelection(): @@ -664,59 +698,140 @@ class ParamFile(PPanel): PPanel.__init__(self, parent, name) self.ID_TEXT_CTRL = wxNewId() self.ID_BUTTON_BROWSE = wxNewId() - self.SetBackgroundColour(panel.GetBackgroundColour()) + self.SetBackgroundColour(g.panel.GetBackgroundColour()) sizer = wxBoxSizer() self.text = wxTextCtrl(self, self.ID_TEXT_CTRL, size=wxSize(200,-1)) sizer.Add(self.text, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5) self.button = wxButton(self, self.ID_BUTTON_BROWSE, 'Browse...',size=buttonSize) sizer.Add(self.button, 0, wxALIGN_CENTER_VERTICAL) - self.SetAutoLayout(true) + self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) - self.textModified = false + self.textModified = False EVT_BUTTON(self, self.ID_BUTTON_BROWSE, self.OnButtonBrowse) EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange) def OnChange(self, evt): - if self.freeze: return - self.SetModified() - self.textModified = true - evt.Skip() + PPanel.OnChange(self, evt) + self.textModified = True def GetValue(self): if self.textModified: # text has newer value return self.text.GetValue() return self.value def SetValue(self, value): - self.freeze = true + self.freeze = True self.value = value self.text.SetValue(value) # update text ctrl - self.freeze = false + self.freeze = False def OnButtonBrowse(self, evt): if self.textModified: # text has newer value self.value = self.text.GetValue() dlg = wxFileDialog(self, - defaultDir = os.path.dirname(self.value), + defaultDir = os.path.abspath(os.path.dirname(self.value)), defaultFile = os.path.basename(self.value)) if dlg.ShowModal() == wxID_OK: - # Make relative - common = os.path.commonprefix([os.path.abspath(frame.dataFile), - dlg.GetPath()]) + # Get common part of selected path and current + if g.frame.dataFile: + curpath = os.path.abspath(g.frame.dataFile) + else: + curpath = os.path.join(os.getcwd(), '') + common = os.path.commonprefix([curpath, dlg.GetPath()]) self.SetValue(dlg.GetPath()[len(common):]) self.SetModified() - self.textModified = false + self.textModified = False + dlg.Destroy() + +class ParamBitmap(PPanel): + def __init__(self, parent, name): + # Load from resource + w = g.frame.res.LoadPanel(parent, 'PANEL_BITMAP') + # Perform initialization with class pointer + wxPanelPtr.__init__(self, w.this) + self.thisown = 1 + self.modified = self.freeze = False + self.SetBackgroundColour(g.panel.GetBackgroundColour()) + self.radio_std = self.FindWindowByName('RADIO_STD') + self.radio_file = self.FindWindowByName('RADIO_FILE') + self.combo = self.FindWindowByName('COMBO_STD') + self.text = self.FindWindowByName('TEXT_FILE') + self.button = self.FindWindowByName('BUTTON_BROWSE') + self.textModified = False + self.SetAutoLayout(True) + self.GetSizer().SetMinSize((260, -1)) + self.GetSizer().Fit(self) + EVT_RADIOBUTTON(self, XMLID('RADIO_STD'), self.OnRadioStd) + EVT_RADIOBUTTON(self, XMLID('RADIO_FILE'), self.OnRadioFile) + EVT_BUTTON(self, XMLID('BUTTON_BROWSE'), self.OnButtonBrowse) + EVT_COMBOBOX(self, XMLID('COMBO_STD'), self.OnCombo) + EVT_TEXT(self, XMLID('COMBO_STD'), self.OnChange) + EVT_TEXT(self, XMLID('TEXT_FILE'), self.OnChange) + def OnRadioStd(self, evt): + self.SetModified() + self.SetValue(['wxART_MISSING_IMAGE','']) + def OnRadioFile(self, evt): + self.SetModified() + self.SetValue(['','']) + def updateRadios(self): + if self.value[0]: + self.radio_std.SetValue(True) + self.text.Enable(False) + self.button.Enable(False) + self.combo.Enable(True) + else: + self.radio_file.SetValue(True) + self.text.Enable(True) + self.button.Enable(True) + self.combo.Enable(False) + def OnChange(self, evt): + PPanel.OnChange(self, evt) + self.textModified = True + def OnCombo(self, evt): + PPanel.OnChange(self, evt) + self.value[0] = self.combo.GetValue() + def GetValue(self): + if self.textModified: # text has newer value + return [self.combo.GetValue(), self.text.GetValue()] + return self.value + def SetValue(self, value): + self.freeze = True + if not value: + self.value = ['', ''] + else: + self.value = value + self.combo.SetValue(self.value[0]) + self.text.SetValue(self.value[1]) # update text ctrl + self.updateRadios() + self.freeze = False + def OnButtonBrowse(self, evt): + if self.textModified: # text has newer value + self.value[1] = self.text.GetValue() + dlg = wxFileDialog(self, + defaultDir = os.path.abspath(os.path.dirname(self.value[1])), + defaultFile = os.path.basename(self.value[1])) + if dlg.ShowModal() == wxID_OK: + # Get common part of selected path and current + if g.frame.dataFile: + curpath = os.path.abspath(g.frame.dataFile) + else: + curpath = os.path.join(os.getcwd(), '') + common = os.path.commonprefix([curpath, dlg.GetPath()]) + self.SetValue(['', dlg.GetPath()[len(common):]]) + self.SetModified() + self.textModified = False dlg.Destroy() paramDict = { 'flag': ParamFlag, 'style': ParamStyle, 'exstyle': ParamExStyle, 'pos': ParamPosSize, 'size': ParamPosSize, - 'border': ParamInt, 'cols': ParamInt, 'rows': ParamInt, - 'vgap': ParamInt, 'hgap': ParamInt, - 'checkable': ParamBool, 'accel': ParamAccel, + 'border': ParamUnit, 'cols': ParamInt, 'rows': ParamInt, + 'vgap': ParamUnit, 'hgap': ParamUnit, + 'checkable': ParamBool, 'checked': ParamBool, 'radio': ParamBool, + 'accel': ParamAccel, 'label': ParamText, 'title': ParamText, 'value': ParamText, 'content': ParamContent, 'selection': ParamInt, 'min': ParamInt, 'max': ParamInt, 'fg': ParamColour, 'bg': ParamColour, 'font': ParamFont, 'enabled': ParamBool, 'focused': ParamBool, 'hidden': ParamBool, - 'tooltip': ParamText, 'bitmap': ParamFile, 'icon': ParamFile, + 'tooltip': ParamText, 'bitmap': ParamBitmap, 'icon': ParamBitmap, + 'label': ParamLabel, 'encoding': ParamEncoding } - diff --git a/wxPython/wxPython/tools/XRCed/sawfishrc b/wxPython/wxPython/tools/XRCed/sawfishrc new file mode 100644 index 0000000000..7e1f6d94bc --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/sawfishrc @@ -0,0 +1,24 @@ +(require 'sawmill-defaults) + +;;; Define two hooks to reset focus behavior while mapping test window + +(define (xrced-match-window-before w) + (setq prop (aref (get-x-text-property w 'WM_CLASS) 0)) + (cond ((equal prop "_XRCED_T_W") + (setq transients-get-focus-b transients-get-focus) + (setq transients-get-focus nil) + (setq focus-windows-when-mapped-b focus-windows-when-mapped) + (setq focus-windows-when-mapped nil) + ) + ) +) +(define (xrced-match-window-after w) + (setq prop (aref (get-x-text-property w 'WM_CLASS) 0)) + (cond ((equal prop "_XRCED_T_W") + (setq transients-get-focus-b transients-get-focus-b) + (setq focus-windows-when-mapped focus-windows-when-mapped-b) + ) + ) +) +(add-hook 'map-notify-hook xrced-match-window-before) +(add-hook 'map-notify-hook xrced-match-window-after 't) diff --git a/wxPython/wxPython/tools/XRCed/src-images/AutoRefresh.png b/wxPython/wxPython/tools/XRCed/src-images/AutoRefresh.png new file mode 100644 index 0000000000..d957081d6e Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/AutoRefresh.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Copy.png b/wxPython/wxPython/tools/XRCed/src-images/Copy.png new file mode 100644 index 0000000000..9771d6d216 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Copy.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Cut.png b/wxPython/wxPython/tools/XRCed/src-images/Cut.png new file mode 100644 index 0000000000..58d86ce0bd Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Cut.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Icon.png b/wxPython/wxPython/tools/XRCed/src-images/Icon.png new file mode 100644 index 0000000000..c6eda50401 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Icon.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/New.png b/wxPython/wxPython/tools/XRCed/src-images/New.png new file mode 100644 index 0000000000..571af0f44c Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/New.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Open.png b/wxPython/wxPython/tools/XRCed/src-images/Open.png new file mode 100644 index 0000000000..9cced6acf2 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Open.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Paste.png b/wxPython/wxPython/tools/XRCed/src-images/Paste.png new file mode 100644 index 0000000000..5dac646f5a Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Paste.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Redo.png b/wxPython/wxPython/tools/XRCed/src-images/Redo.png new file mode 100644 index 0000000000..a2d7e9a5d0 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Redo.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Refresh.png b/wxPython/wxPython/tools/XRCed/src-images/Refresh.png new file mode 100644 index 0000000000..8180432feb Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Refresh.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Save.png b/wxPython/wxPython/tools/XRCed/src-images/Save.png new file mode 100644 index 0000000000..d5c686eef4 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Save.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Test.png b/wxPython/wxPython/tools/XRCed/src-images/Test.png new file mode 100644 index 0000000000..c6e7816f4a Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Test.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolBitmapButton.png b/wxPython/wxPython/tools/XRCed/src-images/ToolBitmapButton.png new file mode 100644 index 0000000000..6b05201615 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolBitmapButton.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolBoxSizer.png b/wxPython/wxPython/tools/XRCed/src-images/ToolBoxSizer.png new file mode 100644 index 0000000000..b51e6f59ab Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolBoxSizer.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolButton.png b/wxPython/wxPython/tools/XRCed/src-images/ToolButton.png new file mode 100644 index 0000000000..53af75933c Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolButton.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolCheckBox.png b/wxPython/wxPython/tools/XRCed/src-images/ToolCheckBox.png new file mode 100644 index 0000000000..d27aa264a9 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolCheckBox.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolCheckList.png b/wxPython/wxPython/tools/XRCed/src-images/ToolCheckList.png new file mode 100644 index 0000000000..5167d327dd Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolCheckList.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolChoice.png b/wxPython/wxPython/tools/XRCed/src-images/ToolChoice.png new file mode 100644 index 0000000000..e14b46de70 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolChoice.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolComboBox.png b/wxPython/wxPython/tools/XRCed/src-images/ToolComboBox.png new file mode 100644 index 0000000000..3f6c5a1367 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolComboBox.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolDefault.png b/wxPython/wxPython/tools/XRCed/src-images/ToolDefault.png new file mode 100644 index 0000000000..479a4ca2e2 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolDefault.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolDialog.png b/wxPython/wxPython/tools/XRCed/src-images/ToolDialog.png new file mode 100644 index 0000000000..af63e84555 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolDialog.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolFlexGridSizer.png b/wxPython/wxPython/tools/XRCed/src-images/ToolFlexGridSizer.png new file mode 100644 index 0000000000..c29ce68d1d Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolFlexGridSizer.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolFrame.png b/wxPython/wxPython/tools/XRCed/src-images/ToolFrame.png new file mode 100644 index 0000000000..87c7d4d93e Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolFrame.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolGauge.png b/wxPython/wxPython/tools/XRCed/src-images/ToolGauge.png new file mode 100644 index 0000000000..b530de5095 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolGauge.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolGridSizer.png b/wxPython/wxPython/tools/XRCed/src-images/ToolGridSizer.png new file mode 100644 index 0000000000..c56ba9a4ca Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolGridSizer.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolListBox.png b/wxPython/wxPython/tools/XRCed/src-images/ToolListBox.png new file mode 100644 index 0000000000..495456d600 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolListBox.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolListCtrl.png b/wxPython/wxPython/tools/XRCed/src-images/ToolListCtrl.png new file mode 100644 index 0000000000..a84f8c90d8 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolListCtrl.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolMenu.png b/wxPython/wxPython/tools/XRCed/src-images/ToolMenu.png new file mode 100644 index 0000000000..b081f7b1d4 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolMenu.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolMenuBar.png b/wxPython/wxPython/tools/XRCed/src-images/ToolMenuBar.png new file mode 100644 index 0000000000..c2938a0019 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolMenuBar.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolMenuItem.png b/wxPython/wxPython/tools/XRCed/src-images/ToolMenuItem.png new file mode 100644 index 0000000000..f94f622c6b Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolMenuItem.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolNotebook.png b/wxPython/wxPython/tools/XRCed/src-images/ToolNotebook.png new file mode 100644 index 0000000000..bbb372eeff Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolNotebook.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolPanel.png b/wxPython/wxPython/tools/XRCed/src-images/ToolPanel.png new file mode 100644 index 0000000000..5e059e5f91 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolPanel.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolRadioBox.png b/wxPython/wxPython/tools/XRCed/src-images/ToolRadioBox.png new file mode 100644 index 0000000000..82588252fc Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolRadioBox.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolRadioButton.png b/wxPython/wxPython/tools/XRCed/src-images/ToolRadioButton.png new file mode 100644 index 0000000000..a0fa275ea4 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolRadioButton.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolRoot.png b/wxPython/wxPython/tools/XRCed/src-images/ToolRoot.png new file mode 100644 index 0000000000..ea5cf2e074 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolRoot.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolScrollBar.png b/wxPython/wxPython/tools/XRCed/src-images/ToolScrollBar.png new file mode 100644 index 0000000000..a324aebf15 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolScrollBar.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolSeparator.png b/wxPython/wxPython/tools/XRCed/src-images/ToolSeparator.png new file mode 100644 index 0000000000..c09c946e34 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolSeparator.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolSlider.png b/wxPython/wxPython/tools/XRCed/src-images/ToolSlider.png new file mode 100644 index 0000000000..439c2e74b0 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolSlider.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolSpacer.png b/wxPython/wxPython/tools/XRCed/src-images/ToolSpacer.png new file mode 100644 index 0000000000..e1721984cb Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolSpacer.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolSpinButton.png b/wxPython/wxPython/tools/XRCed/src-images/ToolSpinButton.png new file mode 100644 index 0000000000..4a2290fd02 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolSpinButton.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolSpinCtrl.png b/wxPython/wxPython/tools/XRCed/src-images/ToolSpinCtrl.png new file mode 100644 index 0000000000..84d9b1775c Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolSpinCtrl.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBitmap.png b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBitmap.png new file mode 100644 index 0000000000..237c6db2dc Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBitmap.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBox.png b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBox.png new file mode 100644 index 0000000000..1e99f0a281 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBox.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBoxSizer.png b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBoxSizer.png new file mode 100644 index 0000000000..1ebbbeb6c8 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticBoxSizer.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolStaticLine.png b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticLine.png new file mode 100644 index 0000000000..d528076358 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticLine.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolStaticText.png b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticText.png new file mode 100644 index 0000000000..92ee2e0b32 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolStaticText.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolTextCtrl.png b/wxPython/wxPython/tools/XRCed/src-images/ToolTextCtrl.png new file mode 100644 index 0000000000..f467e531f0 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolTextCtrl.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolTool.png b/wxPython/wxPython/tools/XRCed/src-images/ToolTool.png new file mode 100644 index 0000000000..500d42359c Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolTool.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolToolBar.png b/wxPython/wxPython/tools/XRCed/src-images/ToolToolBar.png new file mode 100644 index 0000000000..f6d0fe6809 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolToolBar.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolTreeCtrl.png b/wxPython/wxPython/tools/XRCed/src-images/ToolTreeCtrl.png new file mode 100644 index 0000000000..bf90ad53bf Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolTreeCtrl.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/ToolUnknown.png b/wxPython/wxPython/tools/XRCed/src-images/ToolUnknown.png new file mode 100644 index 0000000000..5872a05562 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/ToolUnknown.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeDefault.png b/wxPython/wxPython/tools/XRCed/src-images/TreeDefault.png new file mode 100644 index 0000000000..479a4ca2e2 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeDefault.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeDialog.png b/wxPython/wxPython/tools/XRCed/src-images/TreeDialog.png new file mode 100644 index 0000000000..af63e84555 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeDialog.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeFrame.png b/wxPython/wxPython/tools/XRCed/src-images/TreeFrame.png new file mode 100644 index 0000000000..87c7d4d93e Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeFrame.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeMenu.png b/wxPython/wxPython/tools/XRCed/src-images/TreeMenu.png new file mode 100644 index 0000000000..b081f7b1d4 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeMenu.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeMenuBar.png b/wxPython/wxPython/tools/XRCed/src-images/TreeMenuBar.png new file mode 100644 index 0000000000..c2938a0019 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeMenuBar.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeMenuItem.png b/wxPython/wxPython/tools/XRCed/src-images/TreeMenuItem.png new file mode 100644 index 0000000000..28b3f6a5f5 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeMenuItem.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreePanel.png b/wxPython/wxPython/tools/XRCed/src-images/TreePanel.png new file mode 100644 index 0000000000..5e059e5f91 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreePanel.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeRoot.png b/wxPython/wxPython/tools/XRCed/src-images/TreeRoot.png new file mode 100644 index 0000000000..ea5cf2e074 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeRoot.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeSeparator.png b/wxPython/wxPython/tools/XRCed/src-images/TreeSeparator.png new file mode 100644 index 0000000000..3f31752f12 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeSeparator.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeSizerFlexGrid.png b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerFlexGrid.png new file mode 100644 index 0000000000..c29ce68d1d Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerFlexGrid.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeSizerGrid.png b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerGrid.png new file mode 100644 index 0000000000..c56ba9a4ca Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerGrid.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeSizerH.png b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerH.png new file mode 100644 index 0000000000..b51e6f59ab Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerH.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeSizerV.png b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerV.png new file mode 100644 index 0000000000..295f1be910 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeSizerV.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerH.png b/wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerH.png new file mode 100644 index 0000000000..1ebbbeb6c8 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerH.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerV.png b/wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerV.png new file mode 100644 index 0000000000..805c87bbc0 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeStaticBoxSizerV.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeTool.png b/wxPython/wxPython/tools/XRCed/src-images/TreeTool.png new file mode 100644 index 0000000000..a52b496267 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeTool.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/TreeToolBar.png b/wxPython/wxPython/tools/XRCed/src-images/TreeToolBar.png new file mode 100644 index 0000000000..bae7ec3efc Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/TreeToolBar.png differ diff --git a/wxPython/wxPython/tools/XRCed/src-images/Undo.png b/wxPython/wxPython/tools/XRCed/src-images/Undo.png new file mode 100644 index 0000000000..f030cedc17 Binary files /dev/null and b/wxPython/wxPython/tools/XRCed/src-images/Undo.png differ diff --git a/wxPython/wxPython/tools/XRCed/tools.py b/wxPython/wxPython/tools/XRCed/tools.py new file mode 100644 index 0000000000..718385ed99 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/tools.py @@ -0,0 +1,279 @@ +# Name: tools.py +# Purpose: XRC editor, toolbar +# Author: Roman Rolinsky <rolinsky@mema.ucl.ac.be> +# Created: 19.03.2003 +# RCS-ID: $Id$ + +from xxx import * # xxx imports globals and params +from tree import ID_NEW + +# Icons +import images + +# Groups of controls +GROUPNUM = 4 +GROUP_WINDOWS, GROUP_MENUS, GROUP_SIZERS, GROUP_CONTROLS = range(GROUPNUM) + +# States depending on current selection and Control/Shift keys +STATE_ROOT, STATE_MENUBAR, STATE_TOOLBAR, STATE_MENU, STATE_ELSE = range(5) + +# Left toolbar for GUI elements +class Tools(wxPanel): + TOOL_SIZE = (30, 30) + def __init__(self, parent): + if wxPlatform == '__WXGTK__': + wxPanel.__init__(self, parent, -1, + style=wxRAISED_BORDER|wxWANTS_CHARS) + else: + wxPanel.__init__(self, parent, -1, style=wxWANTS_CHARS) + # Create sizer for groups + self.sizer = wxBoxSizer(wxVERTICAL) + # Data to create buttons + pullDownMenu = g.pullDownMenu + self.groups = [] + self.ctrl = self.shift = False + # Current state (what to enable/disable) + self.state = None + groups = [ + ["Windows", + (ID_NEW.FRAME, images.getToolFrameBitmap()), + (ID_NEW.DIALOG, images.getToolDialogBitmap()), + (ID_NEW.PANEL, images.getToolPanelBitmap())], + ["Menus", + (ID_NEW.TOOL_BAR, images.getToolToolBarBitmap()), + (ID_NEW.MENU_BAR, images.getToolMenuBarBitmap()), + (ID_NEW.MENU, images.getToolMenuBitmap()), + (ID_NEW.TOOL, images.getToolToolBitmap()), + (ID_NEW.MENU_ITEM, images.getToolMenuItemBitmap()), + (ID_NEW.SEPARATOR, images.getToolSeparatorBitmap())], + ["Sizers", + (ID_NEW.BOX_SIZER, images.getToolBoxSizerBitmap()), + (ID_NEW.STATIC_BOX_SIZER, images.getToolStaticBoxSizerBitmap()), + (ID_NEW.GRID_SIZER, images.getToolGridSizerBitmap()), + (ID_NEW.FLEX_GRID_SIZER, images.getToolFlexGridSizerBitmap()), + (ID_NEW.SPACER, images.getToolSpacerBitmap())], + ["Controls", + (ID_NEW.STATIC_TEXT, images.getToolStaticTextBitmap()), + (ID_NEW.STATIC_BITMAP, images.getToolStaticBitmapBitmap()), + (ID_NEW.STATIC_LINE, images.getToolStaticLineBitmap()), + + (ID_NEW.BUTTON, images.getToolButtonBitmap()), + (ID_NEW.BITMAP_BUTTON, images.getToolBitmapButtonBitmap()), + (ID_NEW.STATIC_BOX, images.getToolStaticBoxBitmap()), + + (ID_NEW.TEXT_CTRL, images.getToolTextCtrlBitmap()), + (ID_NEW.COMBO_BOX, images.getToolComboBoxBitmap()), + (ID_NEW.CHOICE, images.getToolChoiceBitmap()), + + (ID_NEW.RADIO_BUTTON, images.getToolRadioButtonBitmap()), + (ID_NEW.CHECK_BOX, images.getToolCheckBoxBitmap()), + (ID_NEW.RADIO_BOX, images.getToolRadioBoxBitmap()), + + (ID_NEW.SPIN_CTRL, images.getToolSpinCtrlBitmap()), + (ID_NEW.SPIN_BUTTON, images.getToolSpinButtonBitmap()), + (ID_NEW.SCROLL_BAR, images.getToolScrollBarBitmap()), + + (ID_NEW.SLIDER, images.getToolSliderBitmap()), + (ID_NEW.GAUGE, images.getToolGaugeBitmap()), + (ID_NEW.TREE_CTRL, images.getToolTreeCtrlBitmap()), + + (ID_NEW.LIST_BOX, images.getToolListBoxBitmap()), + (ID_NEW.CHECK_LIST, images.getToolCheckListBitmap()), + (ID_NEW.LIST_CTRL, images.getToolListCtrlBitmap()), + + (ID_NEW.NOTEBOOK, images.getToolNotebookBitmap()), + + (ID_NEW.UNKNOWN, images.getToolUnknownBitmap())] + ] + for grp in groups: + self.AddGroup(grp[0]) + for b in grp[1:]: + self.AddButton(b[0], b[1], g.pullDownMenu.createMap[b[0]]) + self.SetAutoLayout(True) + self.SetSizerAndFit(self.sizer) + # Allow to be resized in vertical direction only + self.SetSizeHints(self.GetSize()[0], -1) + # Events + EVT_COMMAND_RANGE(self, ID_NEW.PANEL, ID_NEW.LAST, + wxEVT_COMMAND_BUTTON_CLICKED, g.frame.OnCreate) + EVT_KEY_DOWN(self, self.OnKeyDown) + EVT_KEY_UP(self, self.OnKeyUp) + + def AddButton(self, id, image, text): + button = wxBitmapButton(self, id, image, size=self.TOOL_SIZE, + style=wxBU_AUTODRAW|wxNO_BORDER|wxWANTS_CHARS) + EVT_KEY_DOWN(button, self.OnKeyDown) + EVT_KEY_UP(button, self.OnKeyUp) + button.SetToolTipString(text) + self.curSizer.Add(button) + self.groups[-1][1][id] = button + + def AddGroup(self, name): + # Each group is inside box + box = wxStaticBox(self, -1, name, style=wxWANTS_CHARS) + box.SetFont(smallerFont) + boxSizer = wxStaticBoxSizer(box, wxVERTICAL) + boxSizer.Add(0, 4) + self.curSizer = wxGridSizer(0, 3) + boxSizer.Add(self.curSizer) + self.sizer.Add(boxSizer, 0, wxTOP | wxLEFT | wxRIGHT, 4) + self.groups.append((box,{})) + + # Enable/disable group + def EnableGroup(self, gnum, enable = True): + grp = self.groups[gnum] + grp[0].Enable(enable) + for b in grp[1].values(): b.Enable(enable) + + # Enable/disable group item + def EnableGroupItem(self, gnum, id, enable = True): + grp = self.groups[gnum] + grp[1][id].Enable(enable) + + # Enable/disable group items + def EnableGroupItems(self, gnum, ids, enable = True): + grp = self.groups[gnum] + for id in ids: + grp[1][id].Enable(enable) + + # Process key events + def OnKeyDown(self, evt): + if evt.GetKeyCode() == WXK_CONTROL: + g.tree.ctrl = True + elif evt.GetKeyCode() == WXK_SHIFT: + g.tree.shift = True + self.UpdateIfNeeded() + evt.Skip() + + def OnKeyUp(self, evt): + if evt.GetKeyCode() == WXK_CONTROL: + g.tree.ctrl = False + elif evt.GetKeyCode() == WXK_SHIFT: + g.tree.shift = False + self.UpdateIfNeeded() + evt.Skip() + + def OnMouse(self, evt): + # Update control and shift states + g.tree.ctrl = evt.ControlDown() + g.tree.shift = evt.ShiftDown() + self.UpdateIfNeeded() + evt.Skip() + + # Update UI after key presses, if necessary + def UpdateIfNeeded(self): + tree = g.tree + if self.ctrl != tree.ctrl or self.shift != tree.shift: + # Enabling is needed only for ctrl + if self.ctrl != tree.ctrl: self.UpdateUI() + self.ctrl = tree.ctrl + self.shift = tree.shift + if tree.ctrl: + status = 'SBL' + elif tree.shift: + status = 'INS' + else: + status = '' + g.frame.SetStatusText(status, 1) + + # Update interface + def UpdateUI(self): + # Update status bar + pullDownMenu = g.pullDownMenu + tree = g.tree + item = tree.selection + # If nothing selected, disable everything and return + if not item: + # Disable everything + for grp in range(GROUPNUM): + self.EnableGroup(grp, False) + self.state = None + return + if tree.ctrl: needInsert = True + else: needInsert = tree.NeedInsert(item) + # Enable depending on selection + if item == tree.root or needInsert and tree.GetItemParent(item) == tree.root: + state = STATE_ROOT + else: + xxx = tree.GetPyData(item).treeObject() + # Check parent for possible child nodes if inserting sibling + if needInsert: xxx = xxx.parent + if xxx.__class__ == xxxMenuBar: + state = STATE_MENUBAR + elif xxx.__class__ in [xxxToolBar, xxxTool] or \ + xxx.__class__ == xxxSeparator and xxx.parent.__class__ == xxxToolBar: + state = STATE_TOOLBAR + elif xxx.__class__ in [xxxMenu, xxxMenuItem]: + state = STATE_MENU + else: + state = STATE_ELSE + + # Enable depending on selection + if state != self.state: + # Disable everything + for grp in range(GROUPNUM): + self.EnableGroup(grp, False) + # Enable some + if state == STATE_ROOT: + self.EnableGroup(GROUP_WINDOWS, True) + self.EnableGroup(GROUP_MENUS, True) + # But disable items + self.EnableGroupItems(GROUP_MENUS, + [ ID_NEW.TOOL, + ID_NEW.MENU_ITEM, + ID_NEW.SEPARATOR ], + False) + elif state == STATE_MENUBAR: + self.EnableGroup(GROUP_MENUS) + self.EnableGroupItems(GROUP_MENUS, + [ ID_NEW.TOOL_BAR, + ID_NEW.MENU_BAR, + ID_NEW.TOOL ], + False) + elif state == STATE_TOOLBAR: + self.EnableGroup(GROUP_MENUS) + self.EnableGroupItems(GROUP_MENUS, + [ ID_NEW.TOOL_BAR, + ID_NEW.MENU, + ID_NEW.MENU_BAR, + ID_NEW.MENU_ITEM ], + False) + self.EnableGroup(GROUP_CONTROLS) + self.EnableGroupItems(GROUP_CONTROLS, + [ ID_NEW.TREE_CTRL, + ID_NEW.NOTEBOOK ], + False) + elif state == STATE_MENU: + self.EnableGroup(GROUP_MENUS) + self.EnableGroupItems(GROUP_MENUS, + [ ID_NEW.TOOL_BAR, + ID_NEW.MENU_BAR, + ID_NEW.TOOL ], + False) + else: + self.EnableGroup(GROUP_WINDOWS) + self.EnableGroupItems(GROUP_WINDOWS, + [ ID_NEW.FRAME, + ID_NEW.DIALOG ], + False) + self.EnableGroup(GROUP_MENUS) + self.EnableGroupItems(GROUP_MENUS, + [ ID_NEW.MENU_BAR, + ID_NEW.MENU_BAR, + ID_NEW.MENU, + ID_NEW.MENU_ITEM, + ID_NEW.TOOL, + ID_NEW.SEPARATOR ], + False) + self.EnableGroup(GROUP_SIZERS) + self.EnableGroup(GROUP_CONTROLS) + # Special case for notebook (always executed) + if state == STATE_ELSE: + if xxx.__class__ == xxxNotebook: + self.EnableGroup(GROUP_SIZERS, False) + else: + self.EnableGroup(GROUP_SIZERS) + if not (xxx.isSizer or xxx.parent and xxx.parent.isSizer): + self.EnableGroupItem(GROUP_SIZERS, ID_NEW.SPACER, False) + # Save state + self.state = state diff --git a/wxPython/wxPython/tools/XRCed/tree.py b/wxPython/wxPython/tools/XRCed/tree.py new file mode 100644 index 0000000000..4036f5d249 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/tree.py @@ -0,0 +1,839 @@ +# Name: tree.py +# Purpose: XRC editor, XML_tree class +# Author: Roman Rolinsky <rolinsky@mema.ucl.ac.be> +# Created: 02.12.2002 +# RCS-ID: $Id$ + +from xxx import * # xxx imports globals and params + +# Icons +import images + +class MemoryFile: + def __init__(self, name): + self.name = name + self.buffer = '' + def write(self, data): + self.buffer += data.encode() + def close(self): + wxMemoryFSHandler_AddFile(self.name, self.buffer) + +################################################################################ + +# Redefine writing to include encoding +class MyDocument(minidom.Document): + def __init__(self): + minidom.Document.__init__(self) + self.encoding = '' + def writexml(self, writer, indent="", addindent="", newl="", encoding=""): + if encoding: encdstr = 'encoding="%s"' % encoding + else: encdstr = '' + writer.write('<?xml version="1.0" %s?>\n' % encdstr) + for node in self.childNodes: + node.writexml(writer, indent, addindent, newl) + +################################################################################ + +# Ids for menu commands +class ID_NEW: + PANEL = wxNewId() + DIALOG = wxNewId() + FRAME = wxNewId() + TOOL_BAR = wxNewId() + TOOL = wxNewId() + MENU_BAR = wxNewId() + MENU = wxNewId() + + STATIC_TEXT = wxNewId() + TEXT_CTRL = wxNewId() + + BUTTON = wxNewId() + BITMAP_BUTTON = wxNewId() + RADIO_BUTTON = wxNewId() + SPIN_BUTTON = wxNewId() + + STATIC_BOX = wxNewId() + CHECK_BOX = wxNewId() + RADIO_BOX = wxNewId() + COMBO_BOX = wxNewId() + LIST_BOX = wxNewId() + + STATIC_LINE = wxNewId() + STATIC_BITMAP = wxNewId() + CHOICE = wxNewId() + SLIDER = wxNewId() + GAUGE = wxNewId() + SCROLL_BAR = wxNewId() + TREE_CTRL = wxNewId() + LIST_CTRL = wxNewId() + CHECK_LIST = wxNewId() + NOTEBOOK = wxNewId() + HTML_WINDOW = wxNewId() + CALENDAR_CTRL = wxNewId() + GENERIC_DIR_CTRL = wxNewId() + SPIN_CTRL = wxNewId() + UNKNOWN = wxNewId() + + BOX_SIZER = wxNewId() + STATIC_BOX_SIZER = wxNewId() + GRID_SIZER = wxNewId() + FLEX_GRID_SIZER = wxNewId() + SPACER = wxNewId() + TOOL_BAR = wxNewId() + TOOL = wxNewId() + MENU = wxNewId() + MENU_ITEM = wxNewId() + SEPARATOR = wxNewId() + LAST = wxNewId() + +class PullDownMenu: + ID_EXPAND = wxNewId() + ID_COLLAPSE = wxNewId() + ID_PASTE_SIBLING = wxNewId() + + def __init__(self, parent): + self.ID_DELETE = parent.ID_DELETE + EVT_MENU_RANGE(parent, ID_NEW.PANEL, ID_NEW.LAST, parent.OnCreate) + EVT_MENU(parent, self.ID_COLLAPSE, parent.OnCollapse) + EVT_MENU(parent, self.ID_EXPAND, parent.OnExpand) + EVT_MENU(parent, self.ID_PASTE_SIBLING, parent.OnPaste) + # We connect to tree, but process in frame + EVT_MENU_HIGHLIGHT_ALL(g.tree, parent.OnPullDownHighlight) + + # Mapping from IDs to element names + self.createMap = { + ID_NEW.PANEL: 'wxPanel', + ID_NEW.DIALOG: 'wxDialog', + ID_NEW.FRAME: 'wxFrame', + ID_NEW.TOOL_BAR: 'wxToolBar', + ID_NEW.TOOL: 'tool', + ID_NEW.MENU_BAR: 'wxMenuBar', + ID_NEW.MENU: 'wxMenu', + ID_NEW.MENU_ITEM: 'wxMenuItem', + ID_NEW.SEPARATOR: 'separator', + + ID_NEW.STATIC_TEXT: 'wxStaticText', + ID_NEW.TEXT_CTRL: 'wxTextCtrl', + + ID_NEW.BUTTON: 'wxButton', + ID_NEW.BITMAP_BUTTON: 'wxBitmapButton', + ID_NEW.RADIO_BUTTON: 'wxRadioButton', + ID_NEW.SPIN_BUTTON: 'wxSpinButton', + + ID_NEW.STATIC_BOX: 'wxStaticBox', + ID_NEW.CHECK_BOX: 'wxCheckBox', + ID_NEW.RADIO_BOX: 'wxRadioBox', + ID_NEW.COMBO_BOX: 'wxComboBox', + ID_NEW.LIST_BOX: 'wxListBox', + + ID_NEW.STATIC_LINE: 'wxStaticLine', + ID_NEW.STATIC_BITMAP: 'wxStaticBitmap', + ID_NEW.CHOICE: 'wxChoice', + ID_NEW.SLIDER: 'wxSlider', + ID_NEW.GAUGE: 'wxGauge', + ID_NEW.SCROLL_BAR: 'wxScrollBar', + ID_NEW.TREE_CTRL: 'wxTreeCtrl', + ID_NEW.LIST_CTRL: 'wxListCtrl', + ID_NEW.CHECK_LIST: 'wxCheckList', + ID_NEW.NOTEBOOK: 'wxNotebook', + ID_NEW.HTML_WINDOW: 'wxHtmlWindow', + ID_NEW.CALENDAR_CTRL: 'wxCalendarCtrl', + ID_NEW.GENERIC_DIR_CTRL: 'wxGenericDirCtrl', + ID_NEW.SPIN_CTRL: 'wxSpinCtrl', + + ID_NEW.BOX_SIZER: 'wxBoxSizer', + ID_NEW.STATIC_BOX_SIZER: 'wxStaticBoxSizer', + ID_NEW.GRID_SIZER: 'wxGridSizer', + ID_NEW.FLEX_GRID_SIZER: 'wxFlexGridSizer', + ID_NEW.SPACER: 'spacer', + ID_NEW.UNKNOWN: 'unknown', + } + self.controls = [ + ['control', 'Various controls', + (ID_NEW.STATIC_TEXT, 'Label', 'Create label'), + (ID_NEW.STATIC_BITMAP, 'Bitmap', 'Create bitmap'), + (ID_NEW.STATIC_LINE, 'Line', 'Create line'), + (ID_NEW.TEXT_CTRL, 'TextBox', 'Create text box'), + (ID_NEW.CHOICE, 'Choice', 'Create choice'), + (ID_NEW.SLIDER, 'Slider', 'Create slider'), + (ID_NEW.GAUGE, 'Gauge', 'Create gauge'), + (ID_NEW.SPIN_CTRL, 'SpinCtrl', 'Create spin'), + (ID_NEW.SCROLL_BAR, 'ScrollBar', 'Create scroll bar'), + (ID_NEW.TREE_CTRL, 'TreeCtrl', 'Create tree'), + (ID_NEW.LIST_CTRL, 'ListCtrl', 'Create list'), + (ID_NEW.CHECK_LIST, 'CheckList', 'Create check list'), + (ID_NEW.HTML_WINDOW, 'HtmlWindow', 'Create HTML window'), + (ID_NEW.CALENDAR_CTRL, 'CalendarCtrl', 'Create calendar control'), + (ID_NEW.GENERIC_DIR_CTRL, 'GenericDirCtrl', 'Create generic dir control'), + (ID_NEW.UNKNOWN, 'Unknown', 'Create custom control placeholder'), + ], + ['button', 'Buttons', + (ID_NEW.BUTTON, 'Button', 'Create button'), + (ID_NEW.BITMAP_BUTTON, 'BitmapButton', 'Create bitmap button'), + (ID_NEW.RADIO_BUTTON, 'RadioButton', 'Create radio button'), + (ID_NEW.SPIN_BUTTON, 'SpinButton', 'Create spin button'), + ], + ['box', 'Boxes', + (ID_NEW.STATIC_BOX, 'StaticBox', 'Create static box'), + (ID_NEW.CHECK_BOX, 'CheckBox', 'Create check box'), + (ID_NEW.RADIO_BOX, 'RadioBox', 'Create radio box'), + (ID_NEW.COMBO_BOX, 'ComboBox', 'Create combo box'), + (ID_NEW.LIST_BOX, 'ListBox', 'Create list box'), + ], + ['container', 'Containers', + (ID_NEW.PANEL, 'Panel', 'Create panel'), + (ID_NEW.NOTEBOOK, 'Notebook', 'Create notebook control'), + (ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar'), + ], + ['sizer', 'Sizers', + (ID_NEW.BOX_SIZER, 'BoxSizer', 'Create box sizer'), + (ID_NEW.STATIC_BOX_SIZER, 'StaticBoxSizer', + 'Create static box sizer'), + (ID_NEW.GRID_SIZER, 'GridSizer', 'Create grid sizer'), + (ID_NEW.FLEX_GRID_SIZER, 'FlexGridSizer', + 'Create flexgrid sizer'), + (ID_NEW.SPACER, 'Spacer', 'Create spacer'), + ] + ] + self.menuControls = [ + (ID_NEW.MENU, 'Menu', 'Create menu'), + (ID_NEW.MENU_ITEM, 'MenuItem', 'Create menu item'), + (ID_NEW.SEPARATOR, 'Separator', 'Create separator'), + ] + self.toolBarControls = [ + (ID_NEW.TOOL, 'Tool', 'Create tool'), + (ID_NEW.SEPARATOR, 'Separator', 'Create separator'), + ['control', 'Various controls', + (ID_NEW.STATIC_TEXT, 'Label', 'Create label'), + (ID_NEW.STATIC_BITMAP, 'Bitmap', 'Create bitmap'), + (ID_NEW.STATIC_LINE, 'Line', 'Create line'), + (ID_NEW.TEXT_CTRL, 'TextBox', 'Create text box'), + (ID_NEW.CHOICE, 'Choice', 'Create choice'), + (ID_NEW.SLIDER, 'Slider', 'Create slider'), + (ID_NEW.GAUGE, 'Gauge', 'Create gauge'), + (ID_NEW.SCROLL_BAR, 'ScrollBar', 'Create scroll bar'), + (ID_NEW.LIST_CTRL, 'ListCtrl', 'Create list control'), + (ID_NEW.CHECK_LIST, 'CheckList', 'Create check list'), + ], + ['button', 'Buttons', + (ID_NEW.BUTTON, 'Button', 'Create button'), + (ID_NEW.BITMAP_BUTTON, 'BitmapButton', 'Create bitmap button'), + (ID_NEW.RADIO_BUTTON, 'RadioButton', 'Create radio button'), + (ID_NEW.SPIN_BUTTON, 'SpinButton', 'Create spin button'), + ], + ['box', 'Boxes', + (ID_NEW.STATIC_BOX, 'StaticBox', 'Create static box'), + (ID_NEW.CHECK_BOX, 'CheckBox', 'Create check box'), + (ID_NEW.RADIO_BOX, 'RadioBox', 'Create radio box'), + (ID_NEW.COMBO_BOX, 'ComboBox', 'Create combo box'), + (ID_NEW.LIST_BOX, 'ListBox', 'Create list box'), + ], + ] + +################################################################################ + +# Set menu to list items. +# Each menu command is a tuple (id, label, help) +# submenus are lists [id, label, help, submenu] +# and separators are any other type +def SetMenu(m, list): + for l in list: + if type(l) == types.TupleType: + apply(m.Append, l) + elif type(l) == types.ListType: + subMenu = wxMenu() + SetMenu(subMenu, l[2:]) + m.AppendMenu(wxNewId(), l[0], subMenu, l[1]) + else: # separator + m.AppendSeparator() + +################################################################################ + +class HighLightBox: + def __init__(self, pos, size): + if size.x == -1: size.x = 0 + if size.y == -1: size.y = 0 + w = g.testWin.panel + l1 = wxWindow(w, -1, pos, wxSize(size.x, 2)) + l1.SetBackgroundColour(wxRED) + l2 = wxWindow(w, -1, pos, wxSize(2, size.y)) + l2.SetBackgroundColour(wxRED) + l3 = wxWindow(w, -1, wxPoint(pos.x + size.x - 2, pos.y), wxSize(2, size.y)) + l3.SetBackgroundColour(wxRED) + l4 = wxWindow(w, -1, wxPoint(pos.x, pos.y + size.y - 2), wxSize(size.x, 2)) + l4.SetBackgroundColour(wxRED) + self.lines = [l1, l2, l3, l4] + # Move highlight to a new position + def Replace(self, pos, size): + if size.x == -1: size.x = 0 + if size.y == -1: size.y = 0 + self.lines[0].SetDimensions(pos.x, pos.y, size.x, 2) + self.lines[1].SetDimensions(pos.x, pos.y, 2, size.y) + self.lines[2].SetDimensions(pos.x + size.x - 2, pos.y, 2, size.y) + self.lines[3].SetDimensions(pos.x, pos.y + size.y - 2, size.x, 2) + # Remove it + def Remove(self): + map(wxWindow.Destroy, self.lines) + g.testWin.highLight = None + +################################################################################ + +class XML_Tree(wxTreeCtrl): + # Constant to define standart window name + stdName = '_XRCED_T_W' + def __init__(self, parent, id): + wxTreeCtrl.__init__(self, parent, id, style = wxTR_HAS_BUTTONS) + self.SetBackgroundColour(wxColour(224, 248, 224)) + EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) + # One works on Linux, another on Windows + if wxPlatform == '__WXGTK__': + EVT_TREE_ITEM_ACTIVATED(self, self.GetId(), self.OnItemActivated) + else: + EVT_LEFT_DCLICK(self, self.OnDClick) + EVT_RIGHT_DOWN(self, self.OnRightDown) + + self.needUpdate = False + self.pendingHighLight = None + self.ctrl = self.shift = False + self.dom = None + # Create image list + il = wxImageList(16, 16, True) + self.rootImage = il.AddIcon(images.getTreeRootIcon()) + xxxObject.image = il.AddIcon(images.getTreeDefaultIcon()) + xxxPanel.image = il.AddIcon(images.getTreePanelIcon()) + xxxDialog.image = il.AddIcon(images.getTreeDialogIcon()) + xxxFrame.image = il.AddIcon(images.getTreeFrameIcon()) + xxxMenuBar.image = il.AddIcon(images.getTreeMenuBarIcon()) + xxxMenu.image = il.AddIcon(images.getTreeMenuIcon()) + xxxMenuItem.image = il.AddIcon(images.getTreeMenuItemIcon()) + xxxToolBar.image = il.AddIcon(images.getTreeToolBarIcon()) + xxxTool.image = il.AddIcon(images.getTreeToolIcon()) + xxxSeparator.image = il.AddIcon(images.getTreeSeparatorIcon()) + xxxSizer.imageH = il.AddIcon(images.getTreeSizerHIcon()) + xxxSizer.imageV = il.AddIcon(images.getTreeSizerVIcon()) + xxxStaticBoxSizer.imageH = il.AddIcon(images.getTreeStaticBoxSizerHIcon()) + xxxStaticBoxSizer.imageV = il.AddIcon(images.getTreeStaticBoxSizerVIcon()) + xxxGridSizer.image = il.AddIcon(images.getTreeSizerGridIcon()) + xxxFlexGridSizer.image = il.AddIcon(images.getTreeSizerFlexGridIcon()) + self.il = il + self.SetImageList(il) + + def RegisterKeyEvents(self): + EVT_KEY_DOWN(self, g.tools.OnKeyDown) + EVT_KEY_UP(self, g.tools.OnKeyUp) + EVT_ENTER_WINDOW(self, g.tools.OnMouse) + EVT_LEAVE_WINDOW(self, g.tools.OnMouse) + + def Unselect(self): + self.selection = None + wxTreeCtrl.Unselect(self) + g.tools.UpdateUI() + + def ExpandAll(self, item): + if self.ItemHasChildren(item): + self.Expand(item) + i, cookie = self.GetFirstChild(item, 0) + children = [] + while i.IsOk(): + children.append(i) + i, cookie = self.GetNextChild(item, cookie) + for i in children: + self.ExpandAll(i) + def CollapseAll(self, item): + if self.ItemHasChildren(item): + i, cookie = self.GetFirstChild(item, 0) + children = [] + while i.IsOk(): + children.append(i) + i, cookie = self.GetNextChild(item, cookie) + for i in children: + self.CollapseAll(i) + self.Collapse(item) + + # Clear tree + def Clear(self): + self.DeleteAllItems() + # Add minimal structure + if self.dom: self.dom.unlink() + self.dom = MyDocument() + self.dummyNode = self.dom.createComment('dummy node') + # Create main node + self.mainNode = self.dom.createElement('resource') + self.dom.appendChild(self.mainNode) + self.rootObj = xxxMainNode(self.dom) + self.root = self.AddRoot('XML tree', self.rootImage, + data=wxTreeItemData(self.rootObj)) + self.SetItemHasChildren(self.root) + self.Expand(self.root) + self.Unselect() + + # Clear old data and set new + def SetData(self, dom): + self.DeleteAllItems() + # Add minimal structure + if self.dom: self.dom.unlink() + self.dom = dom + self.dummyNode = self.dom.createComment('dummy node') + # Find 'resource' child, add it's children + self.mainNode = dom.documentElement + self.rootObj = xxxMainNode(self.dom) + self.root = self.AddRoot('XML tree', self.rootImage, + data=wxTreeItemData(self.rootObj)) + self.SetItemHasChildren(self.root) + nodes = self.mainNode.childNodes[:] + for node in nodes: + if IsObject(node): + self.AddNode(self.root, None, node) + else: + self.mainNode.removeChild(node) + node.unlink() + self.Expand(self.root) + self.Unselect() + + # Add tree item for given parent item if node is DOM element node with + # 'object' tag. xxxParent is parent xxx object + def AddNode(self, itemParent, xxxParent, node): + # Set item data to current node + try: + xxx = MakeXXXFromDOM(xxxParent, node) + except: + print 'ERROR: MakeXXXFromDom(%s, %s)' % (xxxParent, node) + raise + treeObj = xxx.treeObject() + # Append tree item + item = self.AppendItem(itemParent, treeObj.treeName(), + image=treeObj.treeImage(), + data=wxTreeItemData(xxx)) + # Try to find children objects + if treeObj.hasChildren: + nodes = treeObj.element.childNodes[:] + for n in nodes: + if IsObject(n): + self.AddNode(item, treeObj, n) + elif n.nodeType != minidom.Node.ELEMENT_NODE: + treeObj.element.removeChild(n) + n.unlink() + # Insert new item at specific position + def InsertNode(self, itemParent, parent, elem, nextItem): + # Insert in XML tree and wxWin + xxx = MakeXXXFromDOM(parent, elem) + # If nextItem is None, we append to parent, otherwise insert before it + if nextItem.IsOk(): + node = self.GetPyData(nextItem).element + parent.element.insertBefore(elem, node) + # Inserting before is difficult, se we insert after or first child + index = self.ItemIndex(nextItem) + newItem = self.InsertItemBefore(itemParent, index, + xxx.treeName(), image=xxx.treeImage()) + self.SetPyData(newItem, xxx) + else: + parent.element.appendChild(elem) + newItem = self.AppendItem(itemParent, xxx.treeName(), image=xxx.treeImage(), + data=wxTreeItemData(xxx)) + # Add children items + if xxx.hasChildren: + treeObj = xxx.treeObject() + for n in treeObj.element.childNodes: + if IsObject(n): + self.AddNode(newItem, treeObj, n) + return newItem + + # Remove leaf of tree, return it's data object + def RemoveLeaf(self, leaf): + xxx = self.GetPyData(leaf) + node = xxx.element + parent = node.parentNode + parent.removeChild(node) + self.Delete(leaf) + # Reset selection object + self.selection = None + return node + # Find position relative to the top-level window + def FindNodePos(self, item): + # Root at (0,0) + if item == g.testWin.item: return wxPoint(0, 0) + itemParent = self.GetItemParent(item) + # Select NB page + obj = self.FindNodeObject(item) + if self.GetPyData(itemParent).treeObject().__class__ == xxxNotebook: + notebook = self.FindNodeObject(itemParent) + # Find position + for i in range(notebook.GetPageCount()): + if notebook.GetPage(i) == obj: + if notebook.GetSelection() != i: notebook.SetSelection(i) + break + # Find first ancestor which is a wxWindow (not a sizer) + winParent = itemParent + while self.GetPyData(winParent).isSizer: + winParent = self.GetItemParent(winParent) + parentPos = self.FindNodePos(winParent) + # Position (-1,-1) is really (0,0) + pos = obj.GetPosition() + if pos == (-1,-1): pos = (0,0) + return parentPos + pos + # Find window (or sizer) corresponding to a tree item. + def FindNodeObject(self, item): + testWin = g.testWin + # If top-level, return testWin (or panel its panel) + if item == testWin.item: return testWin.panel + itemParent = self.GetItemParent(item) + xxx = self.GetPyData(item).treeObject() + parentWin = self.FindNodeObject(itemParent) + # Top-level sizer? return window's sizer + if xxx.isSizer and isinstance(parentWin, wxWindowPtr): + return parentWin.GetSizer() + # Otherwise get parent's object and it's child + child = parentWin.GetChildren()[self.ItemIndex(item)] + # Return window or sizer for sizer items + if child.GetClassName() == 'wxSizerItem': + if child.IsWindow(): child = child.GetWindow() + elif child.IsSizer(): + child = child.GetSizer() + # Test for notebook sizers + if isinstance(child, wxNotebookSizerPtr): + child = child.GetNotebook() + return child + def OnSelChanged(self, evt): + # Apply changes + # !!! problem with wxGTK - GetOldItem is Ok if nothing selected + #oldItem = evt.GetOldItem() + status = '' + oldItem = self.selection + if oldItem: + xxx = self.GetPyData(oldItem) + # If some data was modified, apply changes + if g.panel.IsModified(): + self.Apply(xxx, oldItem) + #if conf.autoRefresh: + if g.testWin: + if g.testWin.highLight: + g.testWin.highLight.Remove() + self.needUpdate = True + status = 'Changes were applied' + g.frame.SetStatusText(status) + # Generate view + self.selection = evt.GetItem() + if not self.selection.IsOk(): + self.selection = None + return + xxx = self.GetPyData(self.selection) + # Update panel + g.panel.SetData(xxx) + # Update tools + g.tools.UpdateUI() + # Hightlighting is done in OnIdle + self.pendingHighLight = self.selection + # Check if item is in testWin subtree + def IsHighlatable(self, item): + if item == g.testWin.item: return False + while item != self.root: + item = self.GetItemParent(item) + if item == g.testWin.item: return True + return False + # Highlight selected item + def HighLight(self, item): + self.pendingHighLight = None + # Can highlight only with some top-level windows + if not g.testWin or self.GetPyData(g.testWin.item).treeObject().__class__ \ + not in [xxxDialog, xxxPanel, xxxFrame]: + return + # If a control from another window is selected, remove highlight + if not self.IsHighlatable(item): + if g.testWin.highLight: g.testWin.highLight.Remove() + return + # Get window/sizer object + obj, pos = self.FindNodeObject(item), self.FindNodePos(item) + size = obj.GetSize() + # Highlight + # Nagative positions are not working wuite well + if g.testWin.highLight: + g.testWin.highLight.Replace(pos, size) + else: + g.testWin.highLight = HighLightBox(pos, size) + g.testWin.highLight.item = item + def ShowTestWindow(self, item): + xxx = self.GetPyData(item) + if g.panel.IsModified(): + self.Apply(xxx, item) # apply changes + treeObj = xxx.treeObject() + if treeObj.className not in ['wxFrame', 'wxPanel', 'wxDialog', + 'wxMenuBar', 'wxToolBar']: + wxLogMessage('No view for this element (yet)') + return + # Show item in bold + if g.testWin: # Reset old + self.SetItemBold(g.testWin.item, False) + self.CreateTestWin(item) + # Maybe an error occured, so we need to test + if g.testWin: self.SetItemBold(g.testWin.item) + # Double-click on Linux + def OnItemActivated(self, evt): + if evt.GetItem() != self.root: + self.ShowTestWindow(evt.GetItem()) + # Double-click on Windows + def OnDClick(self, evt): + item, flags = self.HitTest(evt.GetPosition()) + if flags in [wxTREE_HITTEST_ONITEMBUTTON, wxTREE_HITTEST_ONITEMLABEL]: + if item != self.root: self.ShowTestWindow(item) + else: + evt.Skip() + # (re)create test window + def CreateTestWin(self, item): + testWin = g.testWin + wxBeginBusyCursor() + wxYield() + # Create a window with this resource + xxx = self.GetPyData(item).treeObject() + # Close old window, remember where it was + highLight = None + if testWin: + pos = testWin.GetPosition() + if item == testWin.item: + # Remember highlight if same top-level window + if testWin.highLight: + highLight = testWin.highLight.item + if xxx.className == 'wxPanel': + if testWin.highLight: + testWin.pendingHighLight = highLight + testWin.highLight.Remove() + testWin.panel.Destroy() + testWin.panel = None + else: + testWin.Destroy() + testWin = g.testWin = None + else: + testWin.Destroy() + testWin = g.testWin = None + else: + pos = g.testWinPos + # Save in memory FS + memFile = MemoryFile('xxx.xrc') + # Create partial XML file - faster for big files + + dom = MyDocument() + mainNode = dom.createElement('resource') + dom.appendChild(mainNode) + + # Remove temporarily from old parent + elem = xxx.element + # Change window id to _XRCED_T_W. This gives some name for + # unnamed windows, and for named gives the possibility to + # write sawfish scripts. + if not xxx.name: + name = 'noname' + else: + name = xxx.name + elem.setAttribute('name', self.stdName) + parent = elem.parentNode + next = elem.nextSibling + parent.replaceChild(self.dummyNode, elem) + # Append to new DOM, write it + mainNode.appendChild(elem) + dom.writexml(memFile, encoding=self.rootObj.params['encoding'].value()) + # Put back in place + mainNode.removeChild(elem) + dom.unlink() + parent.replaceChild(elem, self.dummyNode) + # Remove temporary name or restore changed + if not xxx.name: + elem.removeAttribute('name') + else: + elem.setAttribute('name', xxx.name) + memFile.close() # write to wxMemoryFS + res = wxXmlResource('', g.xmlFlags) + res.Load('memory:xxx.xrc') + if xxx.__class__ == xxxFrame: + # Frame can't have many children, + # but it's first child possibly can... + child = self.GetFirstChild(item, 0)[0] + if child.IsOk() and self.GetPyData(child).__class__ == xxxPanel: + # Clean-up before recursive call or error + wxMemoryFSHandler_RemoveFile('xxx.xrc') + wxEndBusyCursor() + self.CreateTestWin(child) + return + # This currently works under GTK, but not under MSW + testWin = g.testWin = wxPreFrame() + res.LoadOnFrame(testWin, g.frame, self.stdName) + # Create status bar + testWin.CreateStatusBar() + testWin.panel = testWin + testWin.SetPosition(pos) + testWin.Show(True) + elif xxx.__class__ == xxxPanel: + # Create new frame + if not testWin: + testWin = g.testWin = wxFrame(g.frame, -1, 'Panel: ' + name, pos=pos) + testWin.panel = res.LoadPanel(testWin, self.stdName) + testWin.SetClientSize(testWin.panel.GetSize()) + testWin.Show(True) + elif xxx.__class__ == xxxDialog: + testWin = g.testWin = res.LoadDialog(None, self.stdName) + testWin.panel = testWin + testWin.Layout() + testWin.SetPosition(pos) + testWin.Show(True) + elif xxx.__class__ == xxxMenuBar: + testWin = g.testWin = wxFrame(g.frame, -1, 'MenuBar: ' + name, pos=pos) + testWin.panel = None + # Set status bar to display help + testWin.CreateStatusBar() + testWin.menuBar = res.LoadMenuBar(self.stdName) + testWin.SetMenuBar(testWin.menuBar) + testWin.Show(True) + elif xxx.__class__ == xxxToolBar: + testWin = g.testWin = wxFrame(g.frame, -1, 'ToolBar: ' + name, pos=pos) + testWin.panel = None + # Set status bar to display help + testWin.CreateStatusBar() + testWin.toolBar = res.LoadToolBar(testWin, self.stdName) + testWin.SetToolBar(testWin.toolBar) + testWin.Show(True) + wxMemoryFSHandler_RemoveFile('xxx.xrc') + testWin.item = item + EVT_CLOSE(testWin, self.OnCloseTestWin) + EVT_BUTTON(testWin, wxID_OK, self.OnCloseTestWin) + EVT_BUTTON(testWin, wxID_CANCEL, self.OnCloseTestWin) + testWin.highLight = None + if highLight and not self.pendingHighLight: + self.HighLight(highLight) + wxEndBusyCursor() + + def OnCloseTestWin(self, evt): + self.SetItemBold(g.testWin.item, False) + g.testWinPos = g.testWin.GetPosition() + g.testWin.Destroy() + g.testWin = None + + # Return item index in parent + def ItemIndex(self, item): + n = 0 # index of sibling + prev = self.GetPrevSibling(item) + while prev.IsOk(): + prev = self.GetPrevSibling(prev) + n += 1 + return n + + # Full tree index of an item - list of positions + def ItemFullIndex(self, item): + if not item.IsOk(): return None + l = [] + while item != self.root: + l.insert(0, self.ItemIndex(item)) + item = self.GetItemParent(item) + return l + # Get item position from full index + def ItemAtFullIndex(self, index): + if index is None: return wxTreeItemId() + item = self.root + for i in index: + item = self.GetFirstChild(item, 0)[0] + for k in range(i): item = self.GetNextSibling(item) + return item + + # True if next item should be inserted after current (vs. appended to it) + def NeedInsert(self, item): + xxx = self.GetPyData(item) + if item == self.root: return False # root item + if xxx.hasChildren and not self.GetChildrenCount(item, False): + return False + return not (self.IsExpanded(item) and self.GetChildrenCount(item, False)) + + # Pull-down + def OnRightDown(self, evt): + pullDownMenu = g.pullDownMenu + # select this item + pt = evt.GetPosition(); + item, flags = self.HitTest(pt) + if item.Ok() and flags & wxTREE_HITTEST_ONITEM: + self.SelectItem(item) + + # Setup menu + menu = wxMenu() + + item = self.selection + if not item: + menu.Append(g.pullDownMenu.ID_EXPAND, 'Expand', 'Expand tree') + menu.Append(g.pullDownMenu.ID_COLLAPSE, 'Collapse', 'Collapse tree') + else: +# self.ctrl = evt.ControlDown() # save Ctrl state +# self.shift = evt.ShiftDown() # and Shift too + m = wxMenu() # create menu + if self.ctrl: + needInsert = True + else: + needInsert = self.NeedInsert(item) + if item == self.root or needInsert and self.GetItemParent(item) == self.root: + m.Append(ID_NEW.PANEL, 'Panel', 'Create panel') + m.Append(ID_NEW.DIALOG, 'Dialog', 'Create dialog') + m.Append(ID_NEW.FRAME, 'Frame', 'Create frame') + m.AppendSeparator() + m.Append(ID_NEW.TOOL_BAR, 'ToolBar', 'Create toolbar') + m.Append(ID_NEW.MENU_BAR, 'MenuBar', 'Create menubar') + m.Append(ID_NEW.MENU, 'Menu', 'Create menu') + else: + xxx = self.GetPyData(item).treeObject() + # Check parent for possible child nodes if inserting sibling + if needInsert: xxx = xxx.parent + if xxx.__class__ == xxxMenuBar: + m.Append(ID_NEW.MENU, 'Menu', 'Create menu') + elif xxx.__class__ in [xxxToolBar, xxxTool] or \ + xxx.__class__ == xxxSeparator and xxx.parent.__class__ == xxxToolBar: + SetMenu(m, pullDownMenu.toolBarControls) + elif xxx.__class__ in [xxxMenu, xxxMenuItem]: + SetMenu(m, pullDownMenu.menuControls) + else: + SetMenu(m, pullDownMenu.controls) + if xxx.__class__ == xxxNotebook: + m.Enable(m.FindItem('sizer'), False) + elif not (xxx.isSizer or xxx.parent and xxx.parent.isSizer): + m.Enable(ID_NEW.SPACER, False) + # Select correct label for create menu + if not needInsert: + if self.shift: + menu.AppendMenu(wxNewId(), 'Insert Child', m, + 'Create child object as the first child') + else: + menu.AppendMenu(wxNewId(), 'Append Child', m, + 'Create child object as the last child') + else: + if self.shift: + menu.AppendMenu(wxNewId(), 'Create Sibling', m, + 'Create sibling before selected object') + else: + menu.AppendMenu(wxNewId(), 'Create Sibling', m, + 'Create sibling after selected object') + menu.AppendSeparator() + # Not using standart IDs because we don't want to show shortcuts + menu.Append(wxID_CUT, 'Cut', 'Cut to the clipboard') + menu.Append(wxID_COPY, 'Copy', 'Copy to the clipboard') + if self.ctrl and item != self.root: + menu.Append(pullDownMenu.ID_PASTE_SIBLING, 'Paste Sibling', + 'Paste from the clipboard as a sibling') + else: + menu.Append(wxID_PASTE, 'Paste', 'Paste from the clipboard') + menu.Append(pullDownMenu.ID_DELETE, + 'Delete', 'Delete object') + if self.ItemHasChildren(item): + menu.AppendSeparator() + menu.Append(pullDownMenu.ID_EXPAND, 'Expand', 'Expand subtree') + menu.Append(pullDownMenu.ID_COLLAPSE, 'Collapse', 'Collapse subtree') + self.PopupMenu(menu, evt.GetPosition()) + menu.Destroy() + + # Apply changes + def Apply(self, xxx, item): + g.panel.Apply() + # Update tree view + xxx = xxx.treeObject() + if xxx.hasName and self.GetItemText(item) != xxx.name: + self.SetItemText(item, xxx.treeName()) + # Item width may have changed + # !!! Tric to update tree width (wxGTK, ??) + self.SetIndent(self.GetIndent()) + # Change tree icon for sizers + if isinstance(xxx, xxxBoxSizer): + self.SetItemImage(item, xxx.treeImage()) + # Set global modified state + g.frame.modified = True + diff --git a/wxPython/wxPython/tools/XRCed/undo.py b/wxPython/wxPython/tools/XRCed/undo.py new file mode 100644 index 0000000000..ef9083cdc7 --- /dev/null +++ b/wxPython/wxPython/tools/XRCed/undo.py @@ -0,0 +1,151 @@ +# Name: undo.py +# Purpose: XRC editor, undo/redo module +# Author: Roman Rolinsky <rolinsky@mema.ucl.ac.be> +# Created: 01.12.2002 +# RCS-ID: $Id$ + +from globals import * +#from panel import * + +# Undo/redo classes +class UndoManager: + # Undo/redo stacks + undo = [] + redo = [] + def RegisterUndo(self, undoObj): + self.undo.append(undoObj) + for i in self.redo: i.destroy() + self.redo = [] + def Undo(self): + undoObj = self.undo.pop() + undoObj.undo() + self.redo.append(undoObj) + g.frame.modified = True + g.frame.SetStatusText('Undone') + def Redo(self): + undoObj = self.redo.pop() + undoObj.redo() + self.undo.append(undoObj) + g.frame.modified = True + g.frame.SetStatusText('Redone') + def Clear(self): + for i in self.undo: i.destroy() + self.undo = [] + for i in self.redo: i.destroy() + self.redo = [] + def CanUndo(self): + return not not self.undo + def CanRedo(self): + return not not self.redo + +class UndoCutDelete: + def __init__(self, itemIndex, parent, elem): + self.itemIndex = itemIndex + self.parent = parent + self.elem = elem + def destroy(self): + if self.elem: self.elem.unlink() + def undo(self): + item = g.tree.InsertNode(g.tree.ItemAtFullIndex(self.itemIndex[:-1]), + self.parent, self.elem, + g.tree.ItemAtFullIndex(self.itemIndex)) + # Scroll to show new item (!!! redundant?) + g.tree.EnsureVisible(item) + g.tree.SelectItem(item) + self.elem = None + # Update testWin if needed + if g.testWin and g.tree.IsHighlatable(item): + if g.conf.autoRefresh: + g.tree.needUpdate = True + g.tree.pendingHighLight = item + else: + g.tree.pendingHighLight = None + def redo(self): + item = g.tree.ItemAtFullIndex(self.itemIndex) + # Delete testWin? + if g.testWin: + # If deleting top-level item, delete testWin + if item == g.testWin.item: + g.testWin.Destroy() + g.testWin = None + else: + # Remove highlight, update testWin + if g.testWin.highLight: + g.testWin.highLight.Remove() + g.tree.needUpdate = True + self.elem = g.tree.RemoveLeaf(item) + g.tree.Unselect() + g.panel.Clear() + +class UndoPasteCreate: + def __init__(self, itemParent, parent, item, selected): + self.itemParentIndex = g.tree.ItemFullIndex(itemParent) + self.parent = parent + self.itemIndex = g.tree.ItemFullIndex(item) # pasted item + self.selectedIndex = g.tree.ItemFullIndex(selected) # maybe different from item + self.elem = None + def destroy(self): + if self.elem: self.elem.unlink() + def undo(self): + self.elem = g.tree.RemoveLeaf(g.tree.ItemAtFullIndex(self.itemIndex)) + # Restore old selection + selected = g.tree.ItemAtFullIndex(self.selectedIndex) + g.tree.EnsureVisible(selected) + g.tree.SelectItem(selected) + # Delete testWin? + if g.testWin: + # If deleting top-level item, delete testWin + if selected == g.testWin.item: + g.testWin.Destroy() + g.testWin = None + else: + # Remove highlight, update testWin + if g.testWin.highLight: + g.testWin.highLight.Remove() + g.tree.needUpdate = True + def redo(self): + item = g.tree.InsertNode(g.tree.ItemAtFullIndex(self.itemParentIndex), + self.parent, self.elem, + g.tree.ItemAtFullIndex(self.itemIndex)) + # Scroll to show new item + g.tree.EnsureVisible(item) + g.tree.SelectItem(item) + self.elem = None + # Update testWin if needed + if g.testWin and g.tree.IsHighlatable(item): + if g.conf.autoRefresh: + g.tree.needUpdate = True + g.tree.pendingHighLight = item + else: + g.tree.pendingHighLight = None + +class UndoEdit: + def __init__(self): + self.pages = map(ParamPage.GetState, g.panel.pages) + self.selectedIndex = g.tree.ItemFullIndex(g.tree.GetSelection()) + def destroy(self): + pass + # Update test view + def update(self, selected): + g.tree.Apply(g.tree.GetPyData(selected), selected) + # Update view + if g.testWin: + if g.testWin.highLight: + g.testWin.highLight.Remove() + g.tree.pendingHighLight = selected + if g.testWin: + g.tree.needUpdate = True + def undo(self): + # Restore selection + selected = g.tree.ItemAtFullIndex(self.selectedIndex) + if selected != g.tree.GetSelection(): + g.tree.SelectItem(selected) + # Save current state for redo + map(ParamPage.SaveState, g.panel.pages) + pages = map(ParamPage.GetState, g.panel.pages) + map(ParamPage.SetState, g.panel.pages, self.pages) + self.pages = pages + self.update(selected) + def redo(self): + self.undo() + self.update(g.tree.GetSelection()) diff --git a/wxPython/wxPython/tools/XRCed/xrced.py b/wxPython/wxPython/tools/XRCed/xrced.py index 7d3c4459a5..bc5a8513ad 100644 --- a/wxPython/wxPython/tools/XRCed/xrced.py +++ b/wxPython/wxPython/tools/XRCed/xrced.py @@ -4,45 +4,52 @@ # Created: 20.08.2001 # RCS-ID: $Id$ -from wxPython.wx import * -from wxPython.xrc import * -from wxPython.html import wxHtmlWindow -from xml.dom import minidom -import os -import getopt +""" -# Icons -import images +xrced -- Simple resource editor for XRC format used by wxWindows/wxPython + GUI toolkit. -# Constants +Usage: -# Return code from wxGetOsVersion -wxGTK = 9 + xrced [ -h ] [ -i ] [ -v ] [ XRC-file ] -if wxGetOsVersion()[0] == wxGTK: - labelFont = wxFont(12, wxDEFAULT, wxNORMAL, wxBOLD) - modernFont = wxFont(12, wxMODERN, wxNORMAL, wxNORMAL) -else: - labelFont = wxFont(10, wxDEFAULT, wxNORMAL, wxBOLD) - modernFont = wxFont(10, wxMODERN, wxNORMAL, wxNORMAL) +Options: -progname = 'XRCed' -version = '0.0.7-3' + -h output short usage info and exit + + -i use international character set instead of translations + + -v output version info and exit +""" + + +from globals import * +import os, sys, getopt, re, traceback # Local modules -from xxx import * +from tree import * # imports xxx which imports params +from panel import * +from tools import * +# Cleanup recursive import sideeffects, otherwise we can't create undoMan +import undo +undo.ParamPage = ParamPage +undoMan = g.undoMan = UndoManager() -# Globals -testWin = None -testWinPos = wxDefaultPosition +# Set application path for loading resources +if __name__ == '__main__': + basePath = os.path.dirname(sys.argv[0]) +else: + basePath = os.path.dirname(__file__) # 1 adds CMD command to Help menu debug = 0 -helpText = """\ -<HTML><H2>Welcome to XRCed!</H2><H3><font color="green">DON'T PANIC :)</font></H3> +g.helpText = """\ +<HTML><H2>Welcome to XRC<font color="blue">ed</font></H2><H3><font color="green">DON'T PANIC :)</font></H3> +Read this note before clicking on anything!<P> To start select tree root, then popup menu with your right mouse button, select "Append Child", and then any command.<P> +Or just press one of the buttons on the tools palette.<P> Enter XML ID, change properties, create children.<P> To test your interface select Test command (View menu).<P> Consult README file for the details.</HTML> @@ -51,927 +58,6 @@ Consult README file for the details.</HTML> defaultIDs = {xxxPanel:'PANEL', xxxDialog:'DIALOG', xxxFrame:'FRAME', xxxMenuBar:'MENUBAR', xxxMenu:'MENU', xxxToolBar:'TOOLBAR'} -# Set menu to list items. -# Each menu command is a tuple (id, label, help) -# submenus are lists [id, label, help, submenu] -# and separators are any other type -def SetMenu(m, list): - for l in list: - if type(l) == types.TupleType: - apply(m.Append, l) - elif type(l) == types.ListType: - subMenu = wxMenu() - SetMenu(subMenu, l[2:]) - m.AppendMenu(wxNewId(), l[0], subMenu, l[1]) - else: # separator - m.AppendSeparator() - -################################################################################ - -# Properties panel containing notebook -class Panel(wxNotebook): - def __init__(self, parent, id = -1): - wxNotebook.__init__(self, parent, id, style=wxNB_BOTTOM) - ##sys.modules['params'].panel = self - import params - params.panel = self - - # List of child windows - self.pages = [] - # Create scrolled windows for pages - self.page1 = wxScrolledWindow(self, -1) - sizer = wxBoxSizer() - sizer.Add(wxBoxSizer()) # dummy sizer - self.page1.SetAutoLayout(true) - self.page1.SetSizer(sizer) - self.AddPage(self.page1, 'Properties') - # Second page - self.page2 = wxScrolledWindow(self, -1) - sizer = wxBoxSizer() - sizer.Add(wxBoxSizer()) # dummy sizer - self.page2.SetAutoLayout(true) - self.page2.SetSizer(sizer) - # Cache for already used panels - self.pageCache = {} # cached property panels - self.stylePageCache = {} # cached style panels - # Dummy parent window for cache pages - self.cacheParent = wxFrame(None, -1, 'non visible') - # Delete child windows and recreate page sizer - def ResetPage(self, page): - topSizer = page.GetSizer() - sizer = topSizer.GetChildren()[0].GetSizer() - for w in page.GetChildren(): - sizer.RemoveWindow(w) - if isinstance(w, ParamPage): - # With SetParent, we wouldn't need this - w.Reparent(self.cacheParent) - else: - w.Destroy() - topSizer.RemoveSizer(sizer) - # Create new windows - sizer = wxBoxSizer(wxVERTICAL) - # Special case - resize html window - if conf.panic: - topSizer.Add(sizer, 1, wxEXPAND) - else: - topSizer.Add(sizer, 0, wxALL, 5) - return sizer - def SetData(self, xxx): - self.pages = [] - # First page - # Set cached or new page - # Remove current objects and sizer - sizer = self.ResetPage(self.page1) - if not xxx or (not xxx.allParams and not xxx.hasName): - if tree.selection: - sizer.Add(wxStaticText(self.page1, -1, 'This item has no properties.')) - else: # nothing selected - # If first time, show some help - if conf.panic: - html = wxHtmlWindow(self.page1, -1, wxDefaultPosition, - wxDefaultSize, wxSUNKEN_BORDER) - html.SetPage(helpText) - sizer.Add(html, 1, wxEXPAND) - conf.panic = false - else: - sizer.Add(wxStaticText(self.page1, -1, 'Select a tree item.')) - else: - SetCurrentXXX(xxx.treeObject()) - try: - page = self.pageCache[xxx.__class__] - page.Reparent(self.page1) - except KeyError: - page = PropPage(self.page1, xxx.className, xxx) - self.pageCache[xxx.__class__] = page - page.SetValues(xxx) - self.pages.append(page) - sizer.Add(page, 1, wxEXPAND) - if xxx.hasChild: - # Special label for child objects - they may have different GUI - cacheID = (xxx.child.__class__, xxx.__class__) - try: - page = self.pageCache[cacheID] - page.Reparent(self.page1) - except KeyError: - page = PropPage(self.page1, xxx.child.className, xxx.child) - self.pageCache[cacheID] = page - page.SetValues(xxx.child) - self.pages.append(page) - sizer.Add(page, 0, wxEXPAND | wxTOP, 5) - self.page1.Layout() - size = self.page1.GetSizer().GetMinSize() - self.page1.SetScrollbars(1, 1, size.x, size.y, 0, 0, true) - - # Second page - # Create if does not exist - if xxx and xxx.treeObject().hasStyle: - xxx = xxx.treeObject() - # Simplest case: set data if class is the same - sizer = self.ResetPage(self.page2) - try: - page = self.stylePageCache[xxx.__class__] - page.Reparent(self.page2) - except KeyError: - page = StylePage(self.page2, xxx.className + ' style', xxx) - self.stylePageCache[xxx.__class__] = page - page.SetValues(xxx) - self.pages.append(page) - sizer.Add(page, 0, wxEXPAND) - # Add page if not exists - if not self.GetPageCount() == 2: - self.AddPage(self.page2, 'Style') - self.page2.Layout() - size = self.page2.GetSizer().GetMinSize() - self.page2.SetScrollbars(1, 1, size.x, size.y, 0, 0, true) - else: - # Remove page if exists - if self.GetPageCount() == 2: - self.SetSelection(0) - self.page1.Refresh() - self.RemovePage(1) - def Clear(self): - self.SetData(None) - # Check if some parameter on some page has changed - def IsModified(self): - for p in self.pages: - if p.IsModified(): return true - return false - # Reset changed state - def SetModified(self, value): - for p in self.pages: p.SetModified(value) - def Apply(self): - for p in self.pages: p.Apply() - -################################################################################ - -# General class for notebook pages -class ParamPage(wxPanel): - def __init__(self, parent, xxx): - wxPanel.__init__(self, parent, -1) - self.xxx = xxx - # Register event handlers - for id in paramIDs.values(): - EVT_CHECKBOX(self, id, self.OnCheckParams) - self.modified = false - self.checks = {} - self.controls = {} # save python objects - self.controlName = None - def OnCheckParams(self, evt): - xxx = self.xxx - param = evt.GetEventObject().GetName() - w = self.controls[param] - objElem = xxx.element - if evt.IsChecked(): - # Ad new text node in order of allParams - w.SetValue('') # set empty (default) value - w.SetModified() # mark as changed - elem = tree.dom.createElement(param) - # Some classes are special - if param == 'font': - xxx.params[param] = xxxParamFont(xxx.element, elem) - else: - xxx.params[param] = xxxParam(elem) - # Find place to put new element: first present element after param - found = false - paramStyles = xxx.allParams + xxx.styles - for p in paramStyles[paramStyles.index(param) + 1:]: - # Content params don't have same type - if xxx.params.has_key(p) and p != 'content': - found = true - break - if found: - nextTextElem = xxx.params[p].node - objElem.insertBefore(elem, nextTextElem) - else: - objElem.appendChild(elem) - else: - # Remove parameter - xxx.params[param].remove() - del xxx.params[param] - w.SetValue('') - w.modified = false # mark as not changed - # Set modified flas - self.SetModified(true) - w.Enable(evt.IsChecked()) - # If some parameter has changed - def IsModified(self): - return self.modified - def SetModified(self, value): - self.modified = value - def Apply(self): - xxx = self.xxx - # !!! Save undo info -# if xxx.undo: xxx.undo.unlink() -# xxx.undo = xxx.element.cloneNode(false) - if self.controlName: - name = self.controlName.GetValue() - if xxx.name != name: - xxx.name = name - xxx.element.setAttribute('name', name) - for param, w in self.controls.items(): - if w.modified: - paramObj = xxx.params[param] - value = w.GetValue() - if param in xxx.specials: - xxx.setSpecial(param, value) - else: - paramObj.update(value) - -################################################################################ - -# Panel for displaying properties -class PropPage(ParamPage): - def __init__(self, parent, label, xxx): - ParamPage.__init__(self, parent, xxx) - box = wxStaticBox(self, -1, label) - box.SetFont(labelFont) - topSizer = wxStaticBoxSizer(box, wxVERTICAL) - sizer = wxFlexGridSizer(len(xxx.allParams), 2, 1, 1) - if xxx.hasName: - label = wxStaticText(self, -1, 'XML ID:', size=(100,-1)) - control = ParamText(self, name='XML_name') - sizer.AddMany([ (label, 0, wxALIGN_CENTER_VERTICAL), - (control, 0, wxALIGN_CENTER_VERTICAL) ]) - self.controlName = control - for param in xxx.allParams: - present = param in xxx.params - if param in xxx.required: - label = wxStaticText(self, paramIDs[param], param + ':', - size = (100,-1), name = param) - else: - # Notebook has one very loooooong parameter - if param == 'usenotebooksizer': sParam = 'usesizer:' - else: sParam = param + ':' - label = wxCheckBox(self, paramIDs[param], sParam, - size = (100,-1), name = param) - self.checks[param] = label - try: - typeClass = xxx.paramDict[param] - except KeyError: - try: - # Standart type - typeClass = paramDict[param] - except KeyError: - # Default - typeClass = ParamText - control = typeClass(self, param) - control.Enable(present) - sizer.AddMany([ (label, 0, wxALIGN_CENTER_VERTICAL), - (control, 0, wxALIGN_CENTER_VERTICAL) ]) - self.controls[param] = control - topSizer.Add(sizer, 1, wxALL | wxEXPAND, 3) - self.SetAutoLayout(true) - self.SetSizer(topSizer) - topSizer.Fit(self) - def SetValues(self, xxx): - self.xxx = xxx - # Set values, checkboxes to false, disable defaults - if xxx.hasName: - self.controlName.SetValue(xxx.name) - for param in xxx.allParams: - w = self.controls[param] - w.modified = false - try: - value = xxx.params[param].value() - w.Enable(true) - w.SetValue(value) - if not param in xxx.required: - self.checks[param].SetValue(true) - except KeyError: - self.checks[param].SetValue(false) - w.SetValue('') - w.Enable(false) - self.SetModified(false) - -################################################################################ - -# Style notebook page -class StylePage(ParamPage): - def __init__(self, parent, label, xxx): - ParamPage.__init__(self, parent, xxx) - box = wxStaticBox(self, -1, label) - box.SetFont(labelFont) - topSizer = wxStaticBoxSizer(box, wxVERTICAL) - sizer = wxFlexGridSizer(len(xxx.styles), 2, 1, 1) - for param in xxx.styles: - present = param in xxx.params.keys() - check = wxCheckBox(self, paramIDs[param], - param + ':', size = (100,-1), name = param) - check.SetValue(present) - control = paramDict[param](self, name = param) - control.Enable(present) - sizer.AddMany([ (check, 0, wxALIGN_CENTER_VERTICAL), - (control, 0, wxALIGN_CENTER_VERTICAL) ]) - self.checks[param] = check - self.controls[param] = control - topSizer.Add(sizer, 1, wxALL | wxEXPAND, 3) - self.SetAutoLayout(true) - self.SetSizer(topSizer) - topSizer.Fit(self) - # Set data for a cahced page - def SetValues(self, xxx): - self.xxx = xxx - for param in xxx.styles: - present = param in xxx.params.keys() - check = self.checks[param] - check.SetValue(present) - w = self.controls[param] - w.modified = false - if present: - w.SetValue(xxx.params[param].value()) - else: - w.SetValue('') - w.Enable(present) - self.SetModified(false) - -################################################################################ - -class HightLightBox: - def __init__(self, pos, size): - w = testWin.panel - l1 = wxWindow(w, -1, pos, wxSize(size.x, 2)) - l1.SetBackgroundColour(wxRED) - l2 = wxWindow(w, -1, pos, wxSize(2, size.y)) - l2.SetBackgroundColour(wxRED) - l3 = wxWindow(w, -1, wxPoint(pos.x + size.x - 2, pos.y), wxSize(2, size.y)) - l3.SetBackgroundColour(wxRED) - l4 = wxWindow(w, -1, wxPoint(pos.x, pos.y + size.y - 2), wxSize(size.x, 2)) - l4.SetBackgroundColour(wxRED) - self.lines = [l1, l2, l3, l4] - # Move highlight to a new position - def Replace(self, pos, size): - self.lines[0].SetDimensions(pos.x, pos.y, size.x, 2, wxSIZE_ALLOW_MINUS_ONE) - self.lines[1].SetDimensions(pos.x, pos.y, 2, size.y, wxSIZE_ALLOW_MINUS_ONE) - self.lines[2].SetDimensions(pos.x + size.x - 2, pos.y, 2, size.y, - wxSIZE_ALLOW_MINUS_ONE) - self.lines[3].SetDimensions(pos.x, pos.y + size.y - 2, size.x, 2, - wxSIZE_ALLOW_MINUS_ONE) - # Remove it - def Remove(self): - map(wxWindow.Destroy, self.lines) - testWin.highLight = None - -################################################################################ - -class MemoryFile: - def __init__(self, name): - self.name = name - self.buffer = '' - def write(self, data): - self.buffer += data.encode() - def close(self): - wxMemoryFSHandler_AddFile(self.name, self.buffer) - -class XML_Tree(wxTreeCtrl): - def __init__(self, parent, id): - wxTreeCtrl.__init__(self, parent, id, style = wxTR_HAS_BUTTONS) - self.SetBackgroundColour(wxColour(224, 248, 224)) - EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) - # One works on Linux, another on Windows - if wxGetOsVersion()[0] == wxGTK: - EVT_TREE_ITEM_ACTIVATED(self, self.GetId(), self.OnItemActivated) - else: - EVT_LEFT_DCLICK(self, self.OnDClick) - EVT_RIGHT_DOWN(self, self.OnRightDown) - - self.needUpdate = false - self.pendingHighLight = None - self.ctrl = self.shift = false - self.dom = None - # Create image list - il = wxImageList(16, 16, true) - self.rootImage = il.AddIcon(wxIconFromXPMData(images.getTreeRootData())) - xxxObject.image = il.AddIcon(wxIconFromXPMData(images.getTreeDefaultData())) - xxxPanel.image = il.AddIcon(wxIconFromXPMData(images.getTreePanelData())) - xxxDialog.image = il.AddIcon(wxIconFromXPMData(images.getTreeDialogData())) - xxxFrame.image = il.AddIcon(wxIconFromXPMData(images.getTreeFrameData())) - xxxMenuBar.image = il.AddIcon(wxIconFromXPMData(images.getTreeMenuBarData())) - xxxToolBar.image = il.AddIcon(wxIconFromXPMData(images.getTreeToolBarData())) - xxxMenu.image = il.AddIcon(wxIconFromXPMData(images.getTreeMenuData())) - xxxSizer.imageH = il.AddIcon(wxIconFromXPMData(images.getTreeSizerHData())) - xxxSizer.imageV = il.AddIcon(wxIconFromXPMData(images.getTreeSizerVData())) - xxxStaticBoxSizer.imageH = il.AddIcon(wxIconFromXPMData(images.getTreeStaticBoxSizerHData())) - xxxStaticBoxSizer.imageV = il.AddIcon(wxIconFromXPMData(images.getTreeStaticBoxSizerVData())) - xxxGridSizer.image = il.AddIcon(wxIconFromXPMData(images.getTreeSizerGridData())) - xxxFlexGridSizer.image = il.AddIcon(wxIconFromXPMData(images.getTreeSizerFlexGridData())) - self.il = il - self.SetImageList(il) - - def Unselect(self): - self.selection = None - wxTreeCtrl.Unselect(self) - - def ExpandAll(self, item): - if self.ItemHasChildren(item): - self.Expand(item) - i, cookie = self.GetFirstChild(item, 0) - children = [] - while i.IsOk(): - children.append(i) - i, cookie = self.GetNextChild(item, cookie) - for i in children: - self.ExpandAll(i) - def CollapseAll(self, item): - if self.ItemHasChildren(item): - i, cookie = self.GetFirstChild(item, 0) - children = [] - while i.IsOk(): - children.append(i) - i, cookie = self.GetNextChild(item, cookie) - for i in children: - self.CollapseAll(i) - self.Collapse(item) - - # Clear tree - def Clear(self): - self.DeleteAllItems() - # Add minimal structure - if self.dom: self.dom.unlink() - self.dom = minidom.Document() - self.dummyNode = self.dom.createComment('dummy node') - # Create main node - self.mainNode = self.dom.createElement('resource') - self.dom.appendChild(self.mainNode) - xxx = xxxMainNode(None, self.mainNode) - self.root = self.AddRoot('XML tree', self.rootImage, data=wxTreeItemData(xxx)) - self.SetItemHasChildren(self.root) - self.Expand(self.root) - self.Unselect() - - # Clear old data and set new - def SetData(self, dom): - self.DeleteAllItems() - # Add minimal structure - if self.dom: self.dom.unlink() - self.dom = dom - self.dummyNode = self.dom.createComment('dummy node') - # Find 'resource' child, add it's children - self.mainNode = dom.getElementsByTagName('resource')[0] - xxx = xxxMainNode(None, self.mainNode) - self.root = self.AddRoot('XML tree', self.rootImage, data=wxTreeItemData(xxx)) - self.SetItemHasChildren(self.root) - nodes = self.mainNode.childNodes[:] - for node in nodes: - if IsObject(node): - self.AddNode(self.root, None, node) - else: - self.mainNode.removeChild(node) - node.unlink() - self.Expand(self.root) - self.Unselect() - - # Add tree item for given parent item if node is DOM element node with - # 'object' tag. xxxParent is parent xxx object - def AddNode(self, itemParent, xxxParent, node): - # Set item data to current node - try: - xxx = MakeXXXFromDOM(xxxParent, node) - except: - print 'ERROR: MakeXXXFromDom(%s, %s)' % (xxxParent, node) - raise - treeObj = xxx.treeObject() - # Append tree item - item = self.AppendItem(itemParent, treeObj.treeName(), - image=treeObj.treeImage(), - data=wxTreeItemData(xxx)) - # Try to find children objects - if treeObj.hasChildren: - nodes = treeObj.element.childNodes[:] - for n in nodes: - if IsObject(n): - self.AddNode(item, treeObj, n) - elif n.nodeType != minidom.Node.ELEMENT_NODE: - treeObj.element.removeChild(n) - n.unlink() - # Remove leaf of tree, return it's data object - def RemoveLeaf(self, leaf): - xxx = self.GetPyData(leaf) - node = xxx.element - parent = node.parentNode - parent.removeChild(node) - self.Delete(leaf) - # Reset selection object - self.selection = None - return node - # Find position relative to the top-level window - def FindNodePos(self, item): - # Root at (0,0) - if item == testWin.item: return wxPoint(0, 0) - itemParent = self.GetItemParent(item) - # Select NB page - obj = self.FindNodeObject(item) - if self.GetPyData(itemParent).treeObject().__class__ == xxxNotebook: - notebook = self.FindNodeObject(itemParent) - # Find position - for i in range(notebook.GetPageCount()): - if notebook.GetPage(i) == obj: - if notebook.GetSelection() != i: notebook.SetSelection(i) - break - # Find first ancestor which is a wxWindow (not a sizer) - winParent = itemParent - while self.GetPyData(winParent).isSizer: - winParent = self.GetItemParent(winParent) - parentPos = self.FindNodePos(winParent) - # Position (-1,-1) is really (0,0) - pos = obj.GetPosition() - if pos == (-1,-1): pos = (0,0) - return parentPos + pos - # Find window (or sizer) corresponding to a tree item. - def FindNodeObject(self, item): - if item == testWin.item: return testWin.panel - itemParent = self.GetItemParent(item) - # If top-level, return testWin (or panel if wxFrame) - xxx = self.GetPyData(item).treeObject() - parentWin = self.FindNodeObject(itemParent) - # Top-level sizer? return window's sizer - if xxx.isSizer and isinstance(parentWin, wxWindowPtr): - return parentWin.GetSizer() - # Otherwise get parent's object and it's child - n = 0 # index of sibling - prev = self.GetPrevSibling(item) - while prev.IsOk(): - prev = self.GetPrevSibling(prev) - n += 1 - child = parentWin.GetChildren()[n] - # Return window or sizer for sizer items - if child.GetClassName() == 'wxSizerItem': - if child.IsWindow(): child = child.GetWindow() - elif child.IsSizer(): - child = child.GetSizer() - # Test for notebook sizers - if isinstance(child, wxNotebookSizerPtr): - child = child.GetNotebook() - return child - def OnSelChanged(self, evt): - # Apply changes - # !!! problem with wxGTK - GetOldItem is Ok if nothing selected - #oldItem = evt.GetOldItem() - status = '' - oldItem = self.selection - if oldItem: - xxx = self.GetPyData(oldItem) - # If some data was modified, apply changes - if panel.IsModified(): - self.Apply(xxx, oldItem) - #if conf.autoRefresh: - if testWin: - if testWin.highLight and not tree.IsHighlatable(oldItem): - testWin.highLight.Remove() - self.needUpdate = true - status = 'Changes were applied' - frame.SetStatusText(status) - # Generate view - self.selection = evt.GetItem() - if not self.selection.IsOk(): - self.selection = None - return - xxx = self.GetPyData(self.selection) - # Update panel - panel.SetData(xxx) - # Clear flag - panel.SetModified(false) - # Hightlighting is done in OnIdle - tree.pendingHighLight = self.selection - # Check if item is in testWin subtree - def IsHighlatable(self, item): - if item == testWin.item: return false - while item != self.root: - item = self.GetItemParent(item) - if item == testWin.item: return true - return false - # Highlight selected item - def HighLight(self, item): - self.pendingHighLight = None - if not testWin or self.GetPyData(testWin.item).className \ - not in ['wxDialog', 'wxPanel', 'wxFrame']: - return - # Top-level does not have highlight - if item == testWin.item or item == tree.root: - if testWin.highLight: testWin.highLight.Remove() - return - # If a control from another window is selected, remove highlight - if not self.IsHighlatable(item): - if testWin.highLight: testWin.highLight.Remove() - return - # Get window/sizer object - obj, pos = self.FindNodeObject(item), self.FindNodePos(item) - size = obj.GetSize() - # Highlight - # Nagative positions are not working wuite well - if testWin.highLight: - testWin.highLight.Replace(pos, size) - else: - testWin.highLight = HightLightBox(pos, size) - testWin.highLight.item = item - def ShowTestWindow(self, item): - global testWin - xxx = self.GetPyData(item) - if panel.IsModified(): - self.Apply(xxx, item) # apply changes - treeObj = xxx.treeObject() - if treeObj.className not in ['wxFrame', 'wxPanel', 'wxDialog', - 'wxMenuBar', 'wxToolBar']: - wxLogMessage('No view for this element (yet)') - return - if not treeObj.name: - wxLogError("Can't display a noname element!") - return - # Show item in bold - if testWin: - self.SetItemBold(testWin.item, false) - self.SetItemBold(item) - self.CreateTestWin(item) - # Double-click on Linux - def OnItemActivated(self, evt): - if evt.GetItem() != self.root: - self.ShowTestWindow(evt.GetItem()) - # Double-click on Windows - def OnDClick(self, evt): - item, flags = self.HitTest(evt.GetPosition()) - if flags in [wxTREE_HITTEST_ONITEMBUTTON, wxTREE_HITTEST_ONITEMLABEL]: - if item != self.root: self.ShowTestWindow(item) - else: - evt.Skip() - # (re)create test window - def CreateTestWin(self, item): - global testWin - wxBeginBusyCursor() - # Create a window with this resource - xxx = self.GetPyData(item).treeObject() - # Close old window, remember where it was - highLight = None - if testWin: - pos = testWin.GetPosition() - if item == testWin.item: - # Remember highlight if same top-level window - if testWin.highLight: - highLight = testWin.highLight.item - # !!! if 0 is removed, refresh is broken (notebook not deleted?) - if xxx.className == 'wxPanel': - if testWin.highLight: - testWin.pendingHighLight = highLight - testWin.highLight.Remove() - testWin.panel.Destroy() - testWin.panel = None - else: - testWin.Destroy() - testWin = None - else: - testWin.Destroy() - testWin = None - else: - pos = testWinPos - # Save in memory FS - memFile = MemoryFile('xxx.xrc') - # Create partial XML file - faster for big files - - dom = minidom.Document() - mainNode = dom.createElement('resource') - dom.appendChild(mainNode) - - # Remove temporarily from old parent - elem = xxx.element - parent = elem.parentNode - next = elem.nextSibling - parent.replaceChild(self.dummyNode, elem) - # Append to new DOM, write it - mainNode.appendChild(elem) - dom.writexml(memFile) - # Put back in place - mainNode.removeChild(elem) - dom.unlink() - parent.replaceChild(elem, self.dummyNode) - memFile.close() # write to wxMemoryFS - res = wxXmlResource('') - res.Load('memory:xxx.xrc') - if xxx.className == 'wxFrame': - # Create new frame - testWin = wxPreFrame() - res.LoadOnFrame(testWin, frame, xxx.name) - # Create status bar - testWin.CreateStatusBar() - testWin.panel = testWin - testWin.SetPosition(pos) - testWin.Show(true) - elif xxx.className == 'wxPanel': - # Create new frame - if not testWin: - testWin = wxFrame(frame, -1, 'Panel: ' + xxx.name, pos=pos) - testWin.panel = res.LoadPanel(testWin, xxx.name) - testWin.SetClientSize(testWin.panel.GetSize()) - testWin.Show(true) - elif xxx.className == 'wxDialog': - # Create new frame - testWin = res.LoadDialog(None, xxx.name) - testWin.panel = testWin - testWin.Layout() - testWin.SetPosition(pos) - testWin.Show(true) - elif xxx.className == 'wxMenuBar': - testWin = wxFrame(frame, -1, 'MenuBar: ' + xxx.name, pos=pos) - testWin.panel = None - # Set status bar to display help - testWin.CreateStatusBar() - testWin.menuBar = res.LoadMenuBar(xxx.name) - testWin.SetMenuBar(testWin.menuBar) - testWin.Show(true) - elif xxx.className == 'wxToolBar': - testWin = wxFrame(frame, -1, 'ToolBar: ' + xxx.name, pos=pos) - testWin.panel = None - # Set status bar to display help - testWin.CreateStatusBar() - testWin.toolBar = res.LoadToolBar(testWin, xxx.name) - testWin.SetToolBar(testWin.toolBar) - testWin.Show(true) - wxMemoryFSHandler_RemoveFile('xxx.xrc') - testWin.item = item - EVT_CLOSE(testWin, self.OnCloseTestWin) - EVT_BUTTON(testWin, wxID_OK, self.OnCloseTestWin) - EVT_BUTTON(testWin, wxID_CANCEL, self.OnCloseTestWin) - testWin.highLight = None - if highLight and not tree.pendingHighLight: - self.HighLight(highLight) - wxEndBusyCursor() - - def OnCloseTestWin(self, evt): - global testWin, testWinPos - self.SetItemBold(testWin.item, false) - testWinPos = testWin.GetPosition() - testWin.Destroy() - testWin = None - - # Return item index in parent - def ItemIndex(self, parent, item): - i = 0 - it, cookie = self.GetFirstChild(parent, 0) - while it != item: - i += 1 - it, cookie = self.GetNextChild(parent, cookie) - return i - - # True if next item should be inserted after current (vs. appended to it) - def NeedInsert(self, item): - xxx = self.GetPyData(item) - if item == self.root: return false # root item - if xxx.hasChildren and not self.GetChildrenCount(item, false): - return false - return not (self.IsExpanded(item) and self.GetChildrenCount(item, false)) - - # Pull-down - def OnRightDown(self, evt): - # select this item - pt = evt.GetPosition(); - item, flags = self.HitTest(pt) - if item.Ok() and flags & wxTREE_HITTEST_ONITEM: - self.SelectItem(item) - - # Setup menu - menu = wxMenu() - - item = self.selection - if not item: - menu.Append(pullDownMenu.ID_EXPAND, 'Expand', 'Expand tree') - menu.Append(pullDownMenu.ID_COLLAPSE, 'Collapse', 'Collapse tree') - else: - self.ctrl = evt.ControlDown() # save Ctrl state - self.shift = evt.ShiftDown() # and Shift too - m = wxMenu() # create menu - if self.ctrl: - needInsert = true - else: - needInsert = self.NeedInsert(item) - if item == self.root or needInsert and self.GetItemParent(item) == self.root: - m.Append(pullDownMenu.ID_NEW_PANEL, 'Panel', 'Create panel') - m.Append(pullDownMenu.ID_NEW_DIALOG, 'Dialog', 'Create dialog') - m.Append(pullDownMenu.ID_NEW_FRAME, 'Frame', 'Create frame') - m.AppendSeparator() - m.Append(pullDownMenu.ID_NEW_TOOL_BAR, 'ToolBar', 'Create toolbar') - m.Append(pullDownMenu.ID_NEW_MENU_BAR, 'MenuBar', 'Create menubar') - m.Append(pullDownMenu.ID_NEW_MENU, 'Menu', 'Create menu') - else: - xxx = self.GetPyData(item).treeObject() - # Check parent for possible child nodes if inserting sibling - if needInsert: xxx = xxx.parent - if xxx.__class__ == xxxMenuBar: - m.Append(pullDownMenu.ID_NEW_MENU, 'Menu', 'Create menu') - elif xxx.__class__ in [xxxToolBar, xxxTool] or \ - xxx.__class__ == xxxSeparator and xxx.parent.__class__ == xxxToolBar: - SetMenu(m, pullDownMenu.toolBarControls) - elif xxx.__class__ in [xxxMenu, xxxMenuItem]: - SetMenu(m, pullDownMenu.menuControls) - else: - SetMenu(m, pullDownMenu.controls) - if xxx.__class__ == xxxNotebook: - m.Enable(m.FindItem('sizer'), false) - elif not (xxx.isSizer or xxx.parent and xxx.parent.isSizer): - m.Enable(pullDownMenu.ID_NEW_SPACER, false) - # Select correct label for create menu - if not needInsert: - if self.shift: - menu.AppendMenu(wxNewId(), 'Insert Child', m, - 'Create child object as the first child') - else: - menu.AppendMenu(wxNewId(), 'Append Child', m, - 'Create child object as the last child') - else: - if self.shift: - menu.AppendMenu(wxNewId(), 'Create Sibling', m, - 'Create sibling before selected object') - else: - menu.AppendMenu(wxNewId(), 'Create Sibling', m, - 'Create sibling after selected object') - menu.AppendSeparator() - # Not using standart IDs because we don't want to show shortcuts - menu.Append(wxID_CUT, 'Cut', 'Cut to the clipboard') - menu.Append(wxID_COPY, 'Copy', 'Copy to the clipboard') - if self.ctrl and item != tree.root: - menu.Append(pullDownMenu.ID_PASTE_SIBLING, 'Paste Sibling', - 'Paste from the clipboard as a sibling') - else: - menu.Append(wxID_PASTE, 'Paste', 'Paste from the clipboard') - menu.Append(pullDownMenu.ID_DELETE, - 'Delete', 'Delete object') - if self.ItemHasChildren(item): - menu.AppendSeparator() - menu.Append(pullDownMenu.ID_EXPAND, 'Expand', 'Expand subtree') - menu.Append(pullDownMenu.ID_COLLAPSE, 'Collapse', 'Collapse subtree') - self.PopupMenu(menu, evt.GetPosition()) - menu.Destroy() - - # Apply changes - def Apply(self, xxx, item): - panel.Apply() - # Update tree view - xxx = xxx.treeObject() - if xxx.hasName and self.GetItemText(item) != xxx.name: - self.SetItemText(item, xxx.treeName()) - # Change tree icon for sizers - if isinstance(xxx, xxxBoxSizer): - self.SetItemImage(item, xxx.treeImage()) - # Set global modified state - frame.modified = true - -class PullDownMenu: - ID_NEW_PANEL = wxNewId() - ID_NEW_DIALOG = wxNewId() - ID_NEW_FRAME = wxNewId() - ID_NEW_TOOL_BAR = wxNewId() - ID_NEW_TOOL = wxNewId() - ID_NEW_MENU_BAR = wxNewId() - ID_NEW_MENU = wxNewId() - - ID_NEW_STATIC_TEXT = wxNewId() - ID_NEW_TEXT_CTRL = wxNewId() - - ID_NEW_BUTTON = wxNewId() - ID_NEW_BITMAP_BUTTON = wxNewId() - ID_NEW_RADIO_BUTTON = wxNewId() - ID_NEW_SPIN_BUTTON = wxNewId() - - ID_NEW_STATIC_BOX = wxNewId() - ID_NEW_CHECK_BOX = wxNewId() - ID_NEW_RADIO_BOX = wxNewId() - ID_NEW_COMBO_BOX = wxNewId() - ID_NEW_LIST_BOX = wxNewId() - - ID_NEW_STATIC_LINE = wxNewId() - ID_NEW_STATIC_BITMAP = wxNewId() - ID_NEW_CHOICE = wxNewId() - ID_NEW_SLIDER = wxNewId() - ID_NEW_GAUGE = wxNewId() - ID_NEW_SCROLL_BAR = wxNewId() - ID_NEW_TREE_CTRL = wxNewId() - ID_NEW_LIST_CTRL = wxNewId() - ID_NEW_CHECK_LIST = wxNewId() - ID_NEW_NOTEBOOK = wxNewId() - ID_NEW_HTML_WINDOW = wxNewId() - ID_NEW_CALENDAR = wxNewId() - - ID_NEW_BOX_SIZER = wxNewId() - ID_NEW_STATIC_BOX_SIZER = wxNewId() - ID_NEW_GRID_SIZER = wxNewId() - ID_NEW_FLEX_GRID_SIZER = wxNewId() - ID_NEW_SPACER = wxNewId() - ID_NEW_TOOL_BAR = wxNewId() - ID_NEW_TOOL = wxNewId() - ID_NEW_MENU = wxNewId() - ID_NEW_MENU_ITEM = wxNewId() - ID_NEW_SEPARATOR = wxNewId() - ID_NEW_LAST = wxNewId() - ID_EXPAND = wxNewId() - ID_COLLAPSE = wxNewId() - ID_PASTE_SIBLING = wxNewId() - - def __init__(self, parent): - self.ID_DELETE = parent.ID_DELETE - EVT_MENU_RANGE(parent, self.ID_NEW_PANEL, - self.ID_NEW_LAST, parent.OnCreate) - EVT_MENU(parent, self.ID_COLLAPSE, parent.OnCollapse) - EVT_MENU(parent, self.ID_EXPAND, parent.OnExpand) - EVT_MENU(parent, self.ID_PASTE_SIBLING, parent.OnPaste) - # We connect to tree, but process in frame - EVT_MENU_HIGHLIGHT_ALL(tree, parent.OnPullDownHighlight) - ################################################################################ # ScrolledMessageDialog - modified from wxPython lib to set fixed-width font @@ -983,12 +69,13 @@ class ScrolledMessageDialog(wxDialog): wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY) text.SetFont(modernFont) dc = wxWindowDC(text) - w, h = dc.GetTextExtent(' ') + # !!! possible bug - GetTextExtent without font returns sysfont dims + w, h = dc.GetFullTextExtent(' ', modernFont)[:2] ok = wxButton(self, wxID_OK, "OK") text.SetConstraints(Layoutf('t=t5#1;b=t5#2;l=l5#1;r=r5#1', (self,ok))) text.SetSize((w * 80 + 30, h * 40)) ok.SetConstraints(Layoutf('b=b5#1;x%w50#1;w!80;h!25', (self,))) - self.SetAutoLayout(TRUE) + self.SetAutoLayout(True) self.Fit() self.CenterOnScreen(wxBOTH) @@ -996,16 +83,15 @@ class ScrolledMessageDialog(wxDialog): class Frame(wxFrame): def __init__(self, pos, size): - global frame - frame = self wxFrame.__init__(self, None, -1, '', pos, size) - self.CreateStatusBar() - icon = wxEmptyIcon() - icon.CopyFromBitmap(images.getIconBitmap()) - self.SetIcon(icon) + global frame + frame = g.frame = self + bar = self.CreateStatusBar(2) + bar.SetStatusWidths([-1, 40]) + self.SetIcon(images.getIconIcon()) # Idle flag - self.inIdle = false + self.inIdle = False # Make menus menuBar = wxMenuBar() @@ -1028,13 +114,19 @@ class Frame(wxFrame): menu.Append(wxID_PASTE, '&Paste\tCtrl-V', 'Paste from the clipboard') self.ID_DELETE = wxNewId() menu.Append(self.ID_DELETE, '&Delete\tCtrl-D', 'Delete object') +# menu.AppendSeparator() + ID_SELECT = wxNewId() +# menu.Append(ID_SELECT, '&Select', 'Select object') menuBar.Append(menu, '&Edit') menu = wxMenu() self.ID_EMBED_PANEL = wxNewId() menu.Append(self.ID_EMBED_PANEL, '&Embed Panel', - 'Toggle embedding properties panel in the main window', true) + 'Toggle embedding properties panel in the main window', True) menu.Check(self.ID_EMBED_PANEL, conf.embedPanel) + self.ID_SHOW_TOOLS = wxNewId() + menu.Append(self.ID_SHOW_TOOLS, 'Show &Tools', 'Toggle tools', True) + menu.Check(self.ID_SHOW_TOOLS, conf.showTools) menu.AppendSeparator() self.ID_TEST = wxNewId() menu.Append(self.ID_TEST, '&Test\tF5', 'Test window') @@ -1042,7 +134,7 @@ class Frame(wxFrame): menu.Append(self.ID_REFRESH, '&Refresh\tCtrl-R', 'Refresh test window') self.ID_AUTO_REFRESH = wxNewId() menu.Append(self.ID_AUTO_REFRESH, '&Auto-refresh\tCtrl-A', - 'Toggle auto-refresh mode', true) + 'Toggle auto-refresh mode', True) menu.Check(self.ID_AUTO_REFRESH, conf.autoRefresh) menuBar.Append(menu, '&View') @@ -1066,6 +158,9 @@ class Frame(wxFrame): tb.AddSimpleTool(wxID_OPEN, images.getOpenBitmap(), 'Open', 'Open file') tb.AddSimpleTool(wxID_SAVE, images.getSaveBitmap(), 'Save', 'Save file') tb.AddControl(wxStaticLine(tb, -1, size=(-1,23), style=wxLI_VERTICAL)) + tb.AddSimpleTool(wxID_UNDO, images.getUndoBitmap(), 'Undo', 'Undo') + tb.AddSimpleTool(wxID_REDO, images.getRedoBitmap(), 'Redo', 'Redo') + tb.AddControl(wxStaticLine(tb, -1, size=(-1,23), style=wxLI_VERTICAL)) tb.AddSimpleTool(wxID_CUT, images.getCutBitmap(), 'Cut', 'Cut') tb.AddSimpleTool(wxID_COPY, images.getCopyBitmap(), 'Copy', 'Copy') tb.AddSimpleTool(wxID_PASTE, images.getPasteBitmap(), 'Paste', 'Paste') @@ -1074,8 +169,8 @@ class Frame(wxFrame): tb.AddSimpleTool(self.ID_REFRESH, images.getRefreshBitmap(), 'Refresh', 'Refresh view') tb.AddSimpleTool(self.ID_AUTO_REFRESH, images.getAutoRefreshBitmap(), - 'Auto-refresh', 'Toggle auto-refresh mode', true) - if wxGetOsVersion()[0] == wxGTK: + 'Auto-refresh', 'Toggle auto-refresh mode', True) + if wxPlatform == '__WXGTK__': tb.AddSeparator() # otherwise auto-refresh sticks in status line tb.ToggleTool(self.ID_AUTO_REFRESH, conf.autoRefresh) tb.Realize() @@ -1091,12 +186,14 @@ class Frame(wxFrame): # Edit EVT_MENU(self, wxID_UNDO, self.OnUndo) EVT_MENU(self, wxID_REDO, self.OnRedo) - EVT_MENU(self, wxID_CUT, self.OnCut) + EVT_MENU(self, wxID_CUT, self.OnCutDelete) EVT_MENU(self, wxID_COPY, self.OnCopy) EVT_MENU(self, wxID_PASTE, self.OnPaste) - EVT_MENU(self, self.ID_DELETE, self.OnDelete) + EVT_MENU(self, self.ID_DELETE, self.OnCutDelete) + EVT_MENU(self, ID_SELECT, self.OnSelect) # View EVT_MENU(self, self.ID_EMBED_PANEL, self.OnEmbedPanel) + EVT_MENU(self, self.ID_SHOW_TOOLS, self.OnShowTools) EVT_MENU(self, self.ID_TEST, self.OnTest) EVT_MENU(self, self.ID_REFRESH, self.OnRefresh) EVT_MENU(self, self.ID_AUTO_REFRESH, self.OnAutoRefresh) @@ -1108,6 +205,8 @@ class Frame(wxFrame): EVT_UPDATE_UI(self, wxID_CUT, self.OnUpdateUI) EVT_UPDATE_UI(self, wxID_COPY, self.OnUpdateUI) EVT_UPDATE_UI(self, wxID_PASTE, self.OnUpdateUI) + EVT_UPDATE_UI(self, wxID_UNDO, self.OnUpdateUI) + EVT_UPDATE_UI(self, wxID_REDO, self.OnUpdateUI) EVT_UPDATE_UI(self, self.ID_DELETE, self.OnUpdateUI) EVT_UPDATE_UI(self, self.ID_TEST, self.OnUpdateUI) EVT_UPDATE_UI(self, self.ID_REFRESH, self.OnUpdateUI) @@ -1115,16 +214,25 @@ class Frame(wxFrame): # Build interface sizer = wxBoxSizer(wxVERTICAL) sizer.Add(wxStaticLine(self, -1), 0, wxEXPAND) + # Horizontal sizer for toolbar and splitter + self.toolsSizer = sizer1 = wxBoxSizer() splitter = wxSplitterWindow(self, -1, style=wxSP_3DSASH) self.splitter = splitter splitter.SetMinimumPaneSize(100) - # Create tree global tree - tree = XML_Tree(splitter, -1) - ##sys.modules['xxx'].tree = tree - import xxx - xxx.tree = tree + g.tree = tree = XML_Tree(splitter, -1) + + # Init pull-down menu data + global pullDownMenu + g.pullDownMenu = pullDownMenu = PullDownMenu(self) + + # Vertical toolbar for GUI buttons + g.tools = tools = Tools(self) + tools.Show(conf.showTools) + if conf.showTools: sizer1.Add(tools, 0, wxEXPAND) + + tree.RegisterKeyEvents() # !!! frame styles are broken # Miniframe for not embedded mode @@ -1133,7 +241,7 @@ class Frame(wxFrame): (conf.panelWidth, conf.panelHeight)) self.miniFrame = miniFrame sizer2 = wxBoxSizer() - miniFrame.SetAutoLayout(true) + miniFrame.SetAutoLayout(True) miniFrame.SetSizer(sizer2) EVT_CLOSE(self.miniFrame, self.OnCloseMiniFrame) # Create panel for parameters @@ -1145,142 +253,23 @@ class Frame(wxFrame): else: panel = Panel(miniFrame) sizer2.Add(panel, 1, wxEXPAND) - miniFrame.Show(true) + miniFrame.Show(True) splitter.Initialize(tree) - sizer.Add(splitter, 1, wxEXPAND) - self.SetAutoLayout(true) + sizer1.Add(splitter, 1, wxEXPAND) + sizer.Add(sizer1, 1, wxEXPAND) + self.SetAutoLayout(True) self.SetSizer(sizer) - # Init pull-down menu data - global pullDownMenu - pullDownMenu = PullDownMenu(self) - # Mapping from IDs to element names - self.createMap = { - pullDownMenu.ID_NEW_PANEL: 'wxPanel', - pullDownMenu.ID_NEW_DIALOG: 'wxDialog', - pullDownMenu.ID_NEW_FRAME: 'wxFrame', - pullDownMenu.ID_NEW_TOOL_BAR: 'wxToolBar', - pullDownMenu.ID_NEW_TOOL: 'tool', - pullDownMenu.ID_NEW_MENU_BAR: 'wxMenuBar', - pullDownMenu.ID_NEW_MENU: 'wxMenu', - pullDownMenu.ID_NEW_MENU_ITEM: 'wxMenuItem', - pullDownMenu.ID_NEW_SEPARATOR: 'separator', - - pullDownMenu.ID_NEW_STATIC_TEXT: 'wxStaticText', - pullDownMenu.ID_NEW_TEXT_CTRL: 'wxTextCtrl', - - pullDownMenu.ID_NEW_BUTTON: 'wxButton', - pullDownMenu.ID_NEW_BITMAP_BUTTON: 'wxBitmapButton', - pullDownMenu.ID_NEW_RADIO_BUTTON: 'wxRadioButton', - pullDownMenu.ID_NEW_SPIN_BUTTON: 'wxSpinButton', - - pullDownMenu.ID_NEW_STATIC_BOX: 'wxStaticBox', - pullDownMenu.ID_NEW_CHECK_BOX: 'wxCheckBox', - pullDownMenu.ID_NEW_RADIO_BOX: 'wxRadioBox', - pullDownMenu.ID_NEW_COMBO_BOX: 'wxComboBox', - pullDownMenu.ID_NEW_LIST_BOX: 'wxListBox', - - pullDownMenu.ID_NEW_STATIC_LINE: 'wxStaticLine', - pullDownMenu.ID_NEW_STATIC_BITMAP: 'wxStaticBitmap', - pullDownMenu.ID_NEW_CHOICE: 'wxChoice', - pullDownMenu.ID_NEW_SLIDER: 'wxSlider', - pullDownMenu.ID_NEW_GAUGE: 'wxGauge', - pullDownMenu.ID_NEW_SCROLL_BAR: 'wxScrollBar', - pullDownMenu.ID_NEW_TREE_CTRL: 'wxTreeCtrl', - pullDownMenu.ID_NEW_LIST_CTRL: 'wxListCtrl', - pullDownMenu.ID_NEW_CHECK_LIST: 'wxCheckList', - pullDownMenu.ID_NEW_NOTEBOOK: 'wxNotebook', - pullDownMenu.ID_NEW_HTML_WINDOW: 'wxHtmlWindow', - pullDownMenu.ID_NEW_CALENDAR: 'wxCalendar', - - pullDownMenu.ID_NEW_BOX_SIZER: 'wxBoxSizer', - pullDownMenu.ID_NEW_STATIC_BOX_SIZER: 'wxStaticBoxSizer', - pullDownMenu.ID_NEW_GRID_SIZER: 'wxGridSizer', - pullDownMenu.ID_NEW_FLEX_GRID_SIZER: 'wxFlexGridSizer', - pullDownMenu.ID_NEW_SPACER: 'spacer', - } - pullDownMenu.controls = [ - ['control', 'Various controls', - (pullDownMenu.ID_NEW_STATIC_TEXT, 'Label', 'Create static label'), - (pullDownMenu.ID_NEW_STATIC_LINE, 'Line', 'Create static line'), - (pullDownMenu.ID_NEW_TEXT_CTRL, 'TextBox', 'Create text box control'), - (pullDownMenu.ID_NEW_CHOICE, 'Choice', 'Create choice control'), - (pullDownMenu.ID_NEW_SLIDER, 'Slider', 'Create slider control'), - (pullDownMenu.ID_NEW_GAUGE, 'Gauge', 'Create gauge control'), - (pullDownMenu.ID_NEW_SCROLL_BAR, 'ScrollBar', 'Create scroll bar'), - (pullDownMenu.ID_NEW_TREE_CTRL, 'TreeCtrl', 'Create tree control'), - (pullDownMenu.ID_NEW_LIST_CTRL, 'ListCtrl', 'Create list control'), - (pullDownMenu.ID_NEW_HTML_WINDOW, 'HtmlWindow', 'Create HTML window'), - (pullDownMenu.ID_NEW_CALENDAR, 'Calendar', 'Create calendar control'), - (pullDownMenu.ID_NEW_PANEL, 'Panel', 'Create panel'), - (pullDownMenu.ID_NEW_NOTEBOOK, 'Notebook', 'Create notebook control'), - ], - ['button', 'Buttons', - (pullDownMenu.ID_NEW_BUTTON, 'Button', 'Create button'), - (pullDownMenu.ID_NEW_BITMAP_BUTTON, 'BitmapButton', 'Create bitmap button'), - (pullDownMenu.ID_NEW_RADIO_BUTTON, 'RadioButton', 'Create radio button'), - (pullDownMenu.ID_NEW_SPIN_BUTTON, 'SpinButton', 'Create spin button'), - ], - ['box', 'Boxes', - (pullDownMenu.ID_NEW_STATIC_BOX, 'StaticBox', 'Create static box'), - (pullDownMenu.ID_NEW_CHECK_BOX, 'CheckBox', 'Create check box'), - (pullDownMenu.ID_NEW_RADIO_BOX, 'RadioBox', 'Create radio box'), - (pullDownMenu.ID_NEW_COMBO_BOX, 'ComboBox', 'Create combo box'), - (pullDownMenu.ID_NEW_LIST_BOX, 'ListBox', 'Create list box'), - (pullDownMenu.ID_NEW_CHECK_LIST, 'CheckListBox', - 'Create check list control'), - ], - ['sizer', 'Sizers', - (pullDownMenu.ID_NEW_BOX_SIZER, 'BoxSizer', 'Create box sizer'), - (pullDownMenu.ID_NEW_STATIC_BOX_SIZER, 'StaticBoxSizer', - 'Create static box sizer'), - (pullDownMenu.ID_NEW_GRID_SIZER, 'GridSizer', 'Create grid sizer'), - (pullDownMenu.ID_NEW_FLEX_GRID_SIZER, 'FlexGridSizer', - 'Create flexgrid sizer'), - (pullDownMenu.ID_NEW_SPACER, 'Spacer', 'Create spacer'), - ] - ] - pullDownMenu.menuControls = [ - (pullDownMenu.ID_NEW_MENU, 'Menu', 'Create menu'), - (pullDownMenu.ID_NEW_MENU_ITEM, 'MenuItem', 'Create menu item'), - (pullDownMenu.ID_NEW_SEPARATOR, 'Separator', 'Create separator'), - ] - pullDownMenu.toolBarControls = [ - (pullDownMenu.ID_NEW_TOOL, 'Tool', 'Create tool'), - (pullDownMenu.ID_NEW_SEPARATOR, 'Separator', 'Create separator'), - ['control', 'Various controls', - (pullDownMenu.ID_NEW_STATIC_TEXT, 'Label', 'Create static label'), - (pullDownMenu.ID_NEW_STATIC_LINE, 'Line', 'Create static line'), - (pullDownMenu.ID_NEW_TEXT_CTRL, 'TextBox', 'Create text box control'), - (pullDownMenu.ID_NEW_CHOICE, 'Choice', 'Create choice control'), - (pullDownMenu.ID_NEW_SLIDER, 'Slider', 'Create slider control'), - (pullDownMenu.ID_NEW_GAUGE, 'Gauge', 'Create gauge control'), - (pullDownMenu.ID_NEW_SCROLL_BAR, 'ScrollBar', 'Create scroll bar'), - (pullDownMenu.ID_NEW_LIST_CTRL, 'ListCtrl', 'Create list control'), - ], - ['button', 'Buttons', - (pullDownMenu.ID_NEW_BUTTON, 'Button', 'Create button'), - (pullDownMenu.ID_NEW_BITMAP_BUTTON, 'BitmapButton', 'Create bitmap button'), - (pullDownMenu.ID_NEW_RADIO_BUTTON, 'RadioButton', 'Create radio button'), - (pullDownMenu.ID_NEW_SPIN_BUTTON, 'SpinButton', 'Create spin button'), - ], - ['box', 'Boxes', - (pullDownMenu.ID_NEW_STATIC_BOX, 'StaticBox', 'Create static box'), - (pullDownMenu.ID_NEW_CHECK_BOX, 'CheckBox', 'Create check box'), - (pullDownMenu.ID_NEW_RADIO_BOX, 'RadioBox', 'Create radio box'), - (pullDownMenu.ID_NEW_COMBO_BOX, 'ComboBox', 'Create combo box'), - (pullDownMenu.ID_NEW_LIST_BOX, 'ListBox', 'Create list box'), - (pullDownMenu.ID_NEW_CHECK_LIST, 'CheckListBox', - 'Create check list control'), - ], - ] - # Initialize + self.clipboard = None self.Clear() # Other events EVT_IDLE(self, self.OnIdle) EVT_CLOSE(self, self.OnCloseWindow) + EVT_LEFT_DOWN(self, self.OnLeftDown) + EVT_KEY_DOWN(self, tools.OnKeyDown) + EVT_KEY_UP(self, tools.OnKeyUp) def OnNew(self, evt): self.Clear() @@ -1294,12 +283,10 @@ class Frame(wxFrame): self.SetStatusText('Loading...') wxYield() wxBeginBusyCursor() - try: - self.Open(path) + if self.Open(path): self.SetStatusText('Data loaded') - except: + else: self.SetStatusText('Failed') - raise wxEndBusyCursor() dlg.Destroy() @@ -1333,104 +320,74 @@ class Frame(wxFrame): self.Close() def OnUndo(self, evt): - print '*** being implemented' - return - print self.lastOp, self.undo - if self.lastOp == 'DELETE': - parent, prev, elem = self.undo - if prev.IsOk(): - xxx = MakeXXXFromDOM(tree.GetPyData(parent).treeObject(), elem) - item = tree.InsertItem( parent, prev, xxx.treeObject().className, - data=wxTreeItemData(xxx) ) + # Extra check to not mess with idle updating + if undoMan.CanUndo(): + undoMan.Undo() def OnRedo(self, evt): - print '*** being implemented' - - def OnCut(self, evt): - selected = tree.selection - if not selected: return # key pressed event - # Undo info - self.lastOp = 'CUT' - self.undo = [tree.GetItemParent(selected), tree.GetPrevSibling(selected)] - # Delete testWin? - global testWin - if testWin: - # If deleting top-level item, delete testWin - if selected == testWin.item: - testWin.Destroy() - testWin = None - else: - # Remove highlight, update testWin - if not tree.IsHighlatable(selected): - if testWin.highLight: testWin.highLight.Remove() - tree.needUpdate = true - self.clipboard = tree.RemoveLeaf(selected) - tree.pendingHighLight = None - tree.Unselect() - panel.Clear() - self.modified = true - self.SetStatusText('Removed to clipboard') + if undoMan.CanRedo(): + undoMan.Redo() def OnCopy(self, evt): selected = tree.selection if not selected: return # key pressed event xxx = tree.GetPyData(selected) - self.clipboard = xxx.element.cloneNode(true) + self.clipboard = xxx.element.cloneNode(True) self.SetStatusText('Copied') def OnPaste(self, evt): selected = tree.selection if not selected: return # key pressed event # For pasting with Ctrl pressed - if evt.GetId() == pullDownMenu.ID_PASTE_SIBLING: appendChild = false + if evt.GetId() == pullDownMenu.ID_PASTE_SIBLING: appendChild = False else: appendChild = not tree.NeedInsert(selected) xxx = tree.GetPyData(selected) if not appendChild: # If has next item, insert, else append to parent nextItem = tree.GetNextSibling(selected) - if nextItem.IsOk(): - # Insert before nextItem - parentLeaf = tree.GetItemParent(selected) - else: # last child: change selected to parent - appendChild = true - selected = tree.GetItemParent(selected) + parentLeaf = tree.GetItemParent(selected) # Expanded container (must have children) - elif tree.IsExpanded(selected) and tree.GetChildrenCount(selected, false): - appendChild = false + elif tree.IsExpanded(selected) and tree.GetChildrenCount(selected, False): + # Insert as first child nextItem = tree.GetFirstChild(selected, 0)[0] parentLeaf = selected - # Parent should be tree element or None - if appendChild: - parent = tree.GetPyData(selected) else: - parent = tree.GetPyData(parentLeaf) - if parent.hasChild: parent = parent.child + # No children or unexpanded item - appendChild stays True + nextItem = wxTreeItemId() # no next item + parentLeaf = selected + parent = tree.GetPyData(parentLeaf).treeObject() # Create a copy of clipboard element - elem = self.clipboard.cloneNode(true) + elem = self.clipboard.cloneNode(True) # Tempopary xxx object to test things xxx = MakeXXXFromDOM(parent, elem) # Check compatibility - error = false + error = False # Top-level x = xxx.treeObject() - if x.__class__ in [xxxDialog, xxxFrame, xxxMenuBar, xxxToolBar]: - if parent.__class__ != xxxMainNode: error = true + if x.__class__ in [xxxDialog, xxxFrame, xxxMenuBar]: + # Top-level classes + if parent.__class__ != xxxMainNode: error = True + elif x.__class__ == xxxToolBar: + # Toolbar can be top-level of child of panel or frame + if parent.__class__ not in [xxxMainNode, xxxPanel, xxxFrame]: error = True elif x.__class__ == xxxPanel and parent.__class__ == xxxMainNode: pass elif x.__class__ == xxxSpacer: - if not parent.isSizer: error = true + if not parent.isSizer: error = True elif x.__class__ == xxxSeparator: - if not parent.__class__ in [xxxMenu, xxxToolBar]: error = true + if not parent.__class__ in [xxxMenu, xxxToolBar]: error = True elif x.__class__ == xxxTool: - if parent.__class__ != xxxToolBar: error = true + if parent.__class__ != xxxToolBar: error = True + elif x.__class__ == xxxMenu: + if not parent.__class__ in [xxxMainNode, xxxMenuBar, xxxMenu]: error = True elif x.__class__ == xxxMenuItem: - if not parent.__class__ in [xxxMenuBar, xxxMenu]: error = true - elif x.isSizer and parent.__class__ == xxxNotebook: error = true + if not parent.__class__ in [xxxMenuBar, xxxMenu]: error = True + elif x.isSizer and parent.__class__ == xxxNotebook: error = True else: # normal controls can be almost anywhere if parent.__class__ == xxxMainNode or \ - parent.__class__ in [xxxMenuBar, xxxMenu]: error = true + parent.__class__ in [xxxMenuBar, xxxMenu]: error = True if error: if parent.__class__ == xxxMainNode: parentClass = 'root' else: parentClass = parent.className @@ -1444,14 +401,14 @@ class Frame(wxFrame): isChildContainer = isinstance(xxx, xxxChildContainer) if isChildContainer and \ ((parent.isSizer and not isinstance(xxx, xxxSizerItem)) or \ - (isinstance(parent, xxxNotebook) and not isinstance(xxx, xxxNotebookPage)) or \ + (isinstance(parent, xxxNotebook) and not isinstance(xxx, xxxNotebookPage)) or \ not (parent.isSizer or isinstance(parent, xxxNotebook))): elem.removeChild(xxx.child.element) # detach child elem.unlink() # delete child container elem = xxx.child.element # replace # This may help garbage collection xxx.child.parent = None - isChildContainer = false + isChildContainer = False # Parent is sizer or notebook, child is not child container if parent.isSizer and not isChildContainer and not isinstance(xxx, xxxSpacer): # Create sizer item element @@ -1462,71 +419,71 @@ class Frame(wxFrame): pageElem = MakeEmptyDOM('notebookpage') pageElem.appendChild(elem) elem = pageElem - xxx = MakeXXXFromDOM(parent, elem) - # Figure out if we must append a new child or sibling - if appendChild: - parent.element.appendChild(elem) - newItem = tree.AppendItem(selected, xxx.treeName(), image=xxx.treeImage(), - data=wxTreeItemData(xxx)) - else: - node = tree.GetPyData(nextItem).element - parent.element.insertBefore(elem, node) - # Inserting before is difficult, se we insert after or first child - index = tree.ItemIndex(parentLeaf, nextItem) - newItem = tree.InsertItemBefore(parentLeaf, index, - xxx.treeName(), image=xxx.treeImage()) - tree.SetPyData(newItem, xxx) -# newItem = tree.InsertItem(parentLeaf, selected, xxx.treeName(), -# image=xxx.treeImage(), data=wxTreeItemData(xxx)) - # Add children items - if xxx.hasChildren: - treeObj = xxx.treeObject() - for n in treeObj.element.childNodes: - if IsObject(n): - tree.AddNode(newItem, treeObj, n) - # Scroll to show new item + # Insert new node, register undo + newItem = tree.InsertNode(parentLeaf, parent, elem, nextItem) + undoMan.RegisterUndo(UndoPasteCreate(parentLeaf, parent, newItem, selected)) + # Scroll to show new item (!!! redundant?) tree.EnsureVisible(newItem) tree.SelectItem(newItem) if not tree.IsVisible(newItem): tree.ScrollTo(newItem) tree.Refresh() # Update view? - if testWin and tree.IsHighlatable(newItem): + if g.testWin and tree.IsHighlatable(newItem): if conf.autoRefresh: - tree.needUpdate = true + tree.needUpdate = True tree.pendingHighLight = newItem else: tree.pendingHighLight = None - self.modified = true + self.modified = True self.SetStatusText('Pasted') - def OnDelete(self, evt): + def OnCutDelete(self, evt): selected = tree.selection if not selected: return # key pressed event # Undo info - self.lastOp = 'DELETE' - self.undo = [tree.GetItemParent(selected), tree.GetPrevSibling(selected)] + if evt.GetId() == wxID_CUT: + self.lastOp = 'CUT' + status = 'Removed to clipboard' + else: + self.lastOp = 'DELETE' + status = 'Deleted' # Delete testWin? - global testWin - if testWin: + if g.testWin: # If deleting top-level item, delete testWin - if selected == testWin.item: - testWin.Destroy() - testWin = None + if selected == g.testWin.item: + g.testWin.Destroy() + g.testWin = None else: # Remove highlight, update testWin - if not tree.IsHighlatable(selected): - if testWin.highLight: testWin.highLight.Remove() - tree.needUpdate = true - xnode = tree.RemoveLeaf(selected) - # !!! cloneNode is broken, or something is wrong -# self.undo.append(xnode.cloneNode(true)) - xnode.unlink() + if g.testWin.highLight: + g.testWin.highLight.Remove() + tree.needUpdate = True + # Prepare undo data + panel.Apply() + index = tree.ItemFullIndex(selected) + parent = tree.GetPyData(tree.GetItemParent(selected)).treeObject() + elem = tree.RemoveLeaf(selected) + undoMan.RegisterUndo(UndoCutDelete(index, parent, elem)) + if evt.GetId() == wxID_CUT: + if self.clipboard: self.clipboard.unlink() + self.clipboard = elem.cloneNode(True) tree.pendingHighLight = None tree.Unselect() panel.Clear() - self.modified = true - self.SetStatusText('Deleted') + self.modified = True + self.SetStatusText(status) + + def OnSelect(self, evt): + print >> sys.stderr, 'Xperimental function!' + wxYield() + self.SetCursor(wxCROSS_CURSOR) + self.CaptureMouse() + + def OnLeftDown(self, evt): + pos = evt.GetPosition() + self.SetCursor(wxNullCursor) + self.ReleaseMouse() def OnEmbedPanel(self, evt): conf.embedPanel = evt.IsChecked() @@ -1543,7 +500,7 @@ class Frame(wxFrame): # Widen self.SetDimensions(pos.x, pos.y, size.x + sizePanel.x, size.y) self.splitter.SplitVertically(tree, panel, conf.sashPos) - self.miniFrame.Show(false) + self.miniFrame.Show(False) else: conf.sashPos = self.splitter.GetSashPosition() pos = self.GetPosition() @@ -1552,9 +509,9 @@ class Frame(wxFrame): self.splitter.Unsplit(panel) sizer = self.miniFrame.GetSizer() panel.Reparent(self.miniFrame) - panel.Show(true) + panel.Show(True) sizer.Add(panel, 1, wxEXPAND) - self.miniFrame.Show(true) + self.miniFrame.Show(True) self.miniFrame.SetDimensions(conf.panelX, conf.panelY, conf.panelWidth, conf.panelHeight) wxYield() @@ -1562,6 +519,15 @@ class Frame(wxFrame): self.SetDimensions(pos.x, pos.y, max(size.x - sizePanel.x, self.minWidth), size.y) + def OnShowTools(self, evt): + conf.showTools = evt.IsChecked() + g.tools.Show(conf.showTools) + if conf.showTools: + self.toolsSizer.Prepend(g.tools, 0, wxEXPAND) + else: + self.toolsSizer.Remove(g.tools) + self.toolsSizer.Layout() + def OnTest(self, evt): if not tree.selection: return # key pressed event tree.ShowTestWindow(tree.selection) @@ -1573,10 +539,11 @@ class Frame(wxFrame): xxx = tree.GetPyData(selection) if xxx and panel.IsModified(): tree.Apply(xxx, selection) - if testWin: + if g.testWin: # (re)create - tree.CreateTestWin(testWin.item) - tree.needUpdate = false + tree.CreateTestWin(g.testWin.item) + panel.modified = False + tree.needUpdate = False def OnAutoRefresh(self, evt): conf.autoRefresh = evt.IsChecked() @@ -1584,19 +551,22 @@ class Frame(wxFrame): self.tb.ToggleTool(self.ID_AUTO_REFRESH, conf.autoRefresh) def OnAbout(self, evt): - str = '%s %s\n\nRoman Rolinsky <rolinsky@mema.ucl.ac.be>' % \ - (progname, version) - dlg = wxMessageDialog(self, str, 'About ' + progname, wxOK | wxCENTRE) + str = '''\ +XRCed version %s + +(c) Roman Rolinsky <rollrom@users.sourceforge.net> +Homepage: http://xrced.sourceforge.net\ +''' % version + dlg = wxMessageDialog(self, str, 'About XRCed', wxOK | wxCENTRE) dlg.ShowModal() dlg.Destroy() def OnReadme(self, evt): - text = open(os.path.join(sys.path[0], 'README'), 'r').read() + text = open(os.path.join(basePath, 'README.txt'), 'r').read() dlg = ScrolledMessageDialog(self, text, "XRCed README") dlg.ShowModal() dlg.Destroy() - # Simple emulation of python command line def OnDebugCMD(self, evt): import traceback @@ -1609,13 +579,13 @@ class Frame(wxFrame): except: (etype, value, tb) =sys.exc_info() tblist =traceback.extract_tb(tb)[1:] - msg =string.join(traceback.format_exception_only(etype, value) + msg =' '.join(traceback.format_exception_only(etype, value) +traceback.format_list(tblist)) print msg def OnCreate(self, evt): selected = tree.selection - if tree.ctrl: appendChild = false + if tree.ctrl: appendChild = False else: appendChild = not tree.NeedInsert(selected) xxx = tree.GetPyData(selected) if not appendChild: @@ -1627,27 +597,20 @@ class Frame(wxFrame): else: # If has next item, insert, else append to parent nextItem = tree.GetNextSibling(selected) - if nextItem.IsOk(): - # Insert before nextItem - parentLeaf = tree.GetItemParent(selected) - else: # last child: change selected to parent - appendChild = true - selected = tree.GetItemParent(selected) + parentLeaf = tree.GetItemParent(selected) # Expanded container (must have children) elif tree.shift and tree.IsExpanded(selected) \ - and tree.GetChildrenCount(selected, false): - appendChild = false + and tree.GetChildrenCount(selected, False): nextItem = tree.GetFirstChild(selected, 0)[0] parentLeaf = selected - # Parent should be tree element or None - if appendChild: - parent = tree.GetPyData(selected) else: - parent = tree.GetPyData(parentLeaf) + nextItem = wxTreeItemId() + parentLeaf = selected + parent = tree.GetPyData(parentLeaf) if parent.hasChild: parent = parent.child # Create element - className = self.createMap[evt.GetId()] + className = pullDownMenu.createMap[evt.GetId()] xxx = MakeEmptyXXX(parent, className) # Set default name for top-level windows @@ -1657,38 +620,23 @@ class Frame(wxFrame): xxx.treeObject().name = '%s%d' % (defaultIDs[cl], frame.maxIDs[cl]) xxx.treeObject().element.setAttribute('name', xxx.treeObject().name) - # Figure out if we must append a new child or sibling + # Insert new node, register undo elem = xxx.element - if appendChild: - # Insert newline for debug purposes - parent.element.appendChild(elem) - newItem = tree.AppendItem(selected, xxx.treeName(), image=xxx.treeImage(), - data=wxTreeItemData(xxx)) - else: - node = tree.GetPyData(nextItem).element - parent.element.insertBefore(elem, node) - # !!! There is a different behavious on Win and GTK - # !!! On Win InsertItem(parent, parent, ...) inserts at the end. - index = tree.ItemIndex(parentLeaf, nextItem) - newItem = tree.InsertItemBefore(parentLeaf, index, - xxx.treeName(), image=xxx.treeImage()) -# data=wxTreeItemData(xxx)) # does not work - tree.SetPyData(newItem, xxx) -# newItem = tree.InsertItem(parentLeaf, selected, -# xxx.treeName(), image=xxx.treeImage(), -# data=wxTreeItemData(xxx)) + newItem = tree.InsertNode(parentLeaf, parent, elem, nextItem) + undoMan.RegisterUndo(UndoPasteCreate(parentLeaf, parent, newItem, selected)) tree.EnsureVisible(newItem) tree.SelectItem(newItem) if not tree.IsVisible(newItem): tree.ScrollTo(newItem) tree.Refresh() # Update view? - if testWin and tree.IsHighlatable(newItem): + if g.testWin and tree.IsHighlatable(newItem): if conf.autoRefresh: - tree.needUpdate = true + tree.needUpdate = True tree.pendingHighLight = newItem else: tree.pendingHighLight = None + tree.SetFocus() # Expand/collapse subtree def OnExpand(self, evt): @@ -1709,29 +657,31 @@ class Frame(wxFrame): def OnUpdateUI(self, evt): if evt.GetId() in [wxID_CUT, wxID_COPY, self.ID_DELETE]: - evt.Enable(tree.selection != tree.root) + evt.Enable(tree.selection is not None and tree.selection != tree.root) elif evt.GetId() == wxID_PASTE: evt.Enable((self.clipboard and tree.selection) != None) elif evt.GetId() == self.ID_TEST: - evt.Enable(tree.selection != tree.root) + evt.Enable(tree.selection is not None and tree.selection != tree.root) + elif evt.GetId() == wxID_UNDO: evt.Enable(undoMan.CanUndo()) + elif evt.GetId() == wxID_REDO: evt.Enable(undoMan.CanRedo()) def OnIdle(self, evt): if self.inIdle: return # Recursive call protection - self.inIdle = true + self.inIdle = True if tree.needUpdate: if conf.autoRefresh: - if testWin: + if g.testWin: self.SetStatusText('Refreshing test window...') # (re)create - tree.CreateTestWin(testWin.item) + tree.CreateTestWin(g.testWin.item) wxYield() self.SetStatusText('') - tree.needUpdate = false + tree.needUpdate = False elif tree.pendingHighLight: tree.HighLight(tree.pendingHighLight) else: evt.Skip() - self.inIdle = false + self.inIdle = False # We don't let close panel window def OnCloseMiniFrame(self, evt): @@ -1739,7 +689,7 @@ class Frame(wxFrame): def OnCloseWindow(self, evt): if not self.AskSave(): return - if testWin: testWin.Destroy() + if g.testWin: g.testWin.Destroy() # Destroy cached windows panel.cacheParent.Destroy() if not panel.GetPageCount() == 2: @@ -1755,15 +705,16 @@ class Frame(wxFrame): def Clear(self): self.dataFile = '' - self.clipboard = None - self.modified = false - panel.SetModified(false) + if self.clipboard: + self.clipboard.unlink() + self.clipboard = None + undoMan.Clear() + self.modified = False tree.Clear() panel.Clear() - global testWin - if testWin: - testWin.Destroy() - testWin = None + if g.testWin: + g.testWin.Destroy() + g.testWin = None self.SetTitle(progname) # Numbers for new controls self.maxIDs = {} @@ -1771,18 +722,40 @@ class Frame(wxFrame): self.maxIDs[xxxMenuBar] = self.maxIDs[xxxMenu] = self.maxIDs[xxxToolBar] = 0 def Open(self, path): + if not os.path.exists(path): + wxLogError('File does not exists: %s' % path) + return False # Try to read the file try: - open(path) + f = open(path) self.Clear() + # Parse first line to get encoding (!! hack, I don't know a better way) + line = f.readline() + mo = re.match(r'^<\?xml ([^<>]* )?encoding="(?P<encd>[^<>].*)"\?>', line) # Build wx tree - dom = minidom.parse(path) + f.seek(0) + dom = minidom.parse(f) + # Set encoding global variable and document encoding property + import xxx + if mo: + dom.encoding = xxx.currentEncoding = mo.group('encd') + else: + xxx.currentEncoding = 'iso-8859-1' + dom.encoding = '' + f.close() + # Change dir + dir = os.path.dirname(path) + if dir: os.chdir(dir) tree.SetData(dom) self.dataFile = path self.SetTitle(progname + ': ' + os.path.basename(path)) except: + # Nice exception printing + inf = sys.exc_info() + wxLogError(traceback.format_exception(inf[0], inf[1], None)[-1]) wxLogError('Error reading file: %s' % path) - raise + return False + return True def Indent(self, node, indent = 0): # Copy child list because it will change soon @@ -1804,26 +777,27 @@ class Frame(wxFrame): def Save(self, path): try: # Apply changes - self.OnRefresh(wxCommandEvent()) + if tree.selection and panel.IsModified(): + self.OnRefresh(wxCommandEvent()) f = open(path, 'w') - # Make temporary copy + # Make temporary copy for formatting it # !!! We can't clone dom node, it works only once - #self.domCopy = tree.dom.cloneNode(true) - self.domCopy = minidom.Document() - mainNode = self.domCopy.appendChild(tree.mainNode.cloneNode(true)) + #self.domCopy = tree.dom.cloneNode(True) + self.domCopy = MyDocument() + mainNode = self.domCopy.appendChild(tree.mainNode.cloneNode(True)) self.Indent(mainNode) - self.domCopy.writexml(f) + self.domCopy.writexml(f, encoding=tree.rootObj.params['encoding'].value()) f.close() self.domCopy.unlink() self.domCopy = None - self.modified = false - panel.SetModified(false) + self.modified = False + panel.SetModified(False) except: wxLogError('Error writing file: %s' % path) raise def AskSave(self): - if not (self.modified or panel.IsModified()): return true + if not (self.modified or panel.IsModified()): return True flags = wxICON_EXCLAMATION | wxYES_NO | wxCANCEL | wxCENTRE dlg = wxMessageDialog( self, 'File is modified. Save before exit?', 'Save before too late?', flags ) @@ -1832,34 +806,41 @@ class Frame(wxFrame): if say == wxID_YES: self.OnSaveOrSaveAs(wxCommandEvent(wxID_SAVE)) # If save was successful, modified flag is unset - if not self.modified: return true + if not self.modified: return True elif say == wxID_NO: - self.modified = false - panel.SetModified(false) - return true - return false + self.modified = False + panel.SetModified(False) + return True + return False + + def SaveUndo(self): + pass # !!! ################################################################################ def usage(): - print >> sys.stderr, 'usage: xrced [-dvh] [file]' + print >> sys.stderr, 'usage: xrced [-dhlv] [file]' class App(wxApp): def OnInit(self): - global debug, verbose + global debug # Process comand-line try: - opts, args = getopt.getopt(sys.argv[1:], 'dvh') + opts = args = [] #give empty values in case of exception + opts, args = getopt.getopt(sys.argv[1:], 'dhiv') except getopt.GetoptError: - print >> sys.stderr, 'Unknown option' - usage() - sys.exit(1) + if wxPlatform != '__WXMAC__': # macs have some extra parameters + print >> sys.stderr, 'Unknown option' + usage() + sys.exit(1) for o,a in opts: if o == '-h': usage() sys.exit(0) elif o == '-d': - debug = true + debug = True + elif o == '-i': + g.xmlFlags &= ~wxXRC_USE_LOCALE elif o == '-v': print 'XRCed version', version sys.exit(0) @@ -1867,11 +848,12 @@ class App(wxApp): self.SetAppName('xrced') # Settings global conf - conf = wxConfig(style = wxCONFIG_USE_LOCAL_FILE) - conf.autoRefresh = conf.ReadInt('autorefresh', true) + conf = g.conf = wxConfig(style = wxCONFIG_USE_LOCAL_FILE) + conf.autoRefresh = conf.ReadInt('autorefresh', True) pos = conf.ReadInt('x', -1), conf.ReadInt('y', -1) size = conf.ReadInt('width', 800), conf.ReadInt('height', 600) - conf.embedPanel = conf.ReadInt('embedPanel', true) + conf.embedPanel = conf.ReadInt('embedPanel', True) + conf.showTools = conf.ReadInt('showTools', True) conf.sashPos = conf.ReadInt('sashPos', 200) if not conf.embedPanel: conf.panelX = conf.ReadInt('panelX', -1) @@ -1886,20 +868,17 @@ class App(wxApp): wxInitAllImageHandlers() # Create main frame frame = Frame(pos, size) - frame.Show(true) + frame.Show(True) # Load resources from XRC file (!!! should be transformed to .py later?) - ##sys.modules['params'].frame = frame - import params - params.frame = frame frame.res = wxXmlResource('') - frame.res.Load(os.path.join(sys.path[0], 'xrced.xrc')) + frame.res.Load(os.path.join(basePath, 'xrced.xrc')) # Load file after showing if args: - conf.panic = false + conf.panic = False frame.open = frame.Open(args[0]) - return true + return True def OnExit(self): # Write config @@ -1911,20 +890,22 @@ class App(wxApp): wc.WriteInt('width', conf.width) wc.WriteInt('height', conf.height) wc.WriteInt('embedPanel', conf.embedPanel) + wc.WriteInt('showTools', conf.showTools) if not conf.embedPanel: wc.WriteInt('panelX', conf.panelX) wc.WriteInt('panelY', conf.panelY) wc.WriteInt('sashPos', conf.sashPos) wc.WriteInt('panelWidth', conf.panelWidth) wc.WriteInt('panelHeight', conf.panelHeight) - wc.WriteInt('nopanic', 1) + wc.WriteInt('nopanic', True) wc.Flush() - del conf def main(): - app = App(1) + app = App(0, useBestVisual=False) app.MainLoop() app.OnExit() + global conf + del conf if __name__ == '__main__': main() diff --git a/wxPython/wxPython/tools/XRCed/xrced.xrc b/wxPython/wxPython/tools/XRCed/xrced.xrc index a407461450..f79590b319 100644 --- a/wxPython/wxPython/tools/XRCed/xrced.xrc +++ b/wxPython/wxPython/tools/XRCed/xrced.xrc @@ -23,13 +23,14 @@ <object class="wxButton" name="BUTTON_UP"> <label>Move Up</label> </object> - <flag>wxBOTTOM</flag> + <flag>wxBOTTOM|wxEXPAND</flag> <border>5</border> </object> <object class="sizeritem"> <object class="wxButton" name="BUTTON_DOWN"> <label>Move Down</label> </object> + <flag>wxEXPAND</flag> </object> <object class="spacer"> <size>10,20</size> @@ -39,13 +40,14 @@ <object class="wxButton" name="BUTTON_APPEND"> <label>Append...</label> </object> - <flag>wxBOTTOM</flag> + <flag>wxBOTTOM|wxEXPAND</flag> <border>5</border> </object> <object class="sizeritem"> <object class="wxButton" name="BUTTON_REMOVE"> <label>Remove</label> </object> + <flag>wxEXPAND</flag> </object> </object> <flag>wxALL|wxEXPAND</flag> @@ -80,7 +82,7 @@ <border>10</border> </object> </object> - <style>wxRESIZE_BORDER</style> + <style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style> </object> <object class="wxDialog" name="DIALOG_CONTENT_CHECK_LIST"> <title>Content</title> @@ -105,13 +107,14 @@ <object class="wxButton" name="BUTTON_UP"> <label>Move Up</label> </object> - <flag>wxBOTTOM</flag> + <flag>wxBOTTOM|wxEXPAND</flag> <border>5</border> </object> <object class="sizeritem"> <object class="wxButton" name="BUTTON_DOWN"> <label>Move Down</label> </object> + <flag>wxEXPAND</flag> </object> <object class="spacer"> <size>10,20</size> @@ -121,13 +124,14 @@ <object class="wxButton" name="BUTTON_APPEND"> <label>Append...</label> </object> - <flag>wxBOTTOM</flag> + <flag>wxBOTTOM|wxEXPAND</flag> <border>5</border> </object> <object class="sizeritem"> <object class="wxButton" name="BUTTON_REMOVE"> <label>Remove</label> </object> + <flag>wxEXPAND</flag> </object> </object> <flag>wxALL|wxEXPAND</flag> @@ -162,7 +166,7 @@ <border>10</border> </object> </object> - <style>wxRESIZE_BORDER</style> + <style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style> </object> <object class="wxDialog" name="DIALOG_INTLIST"> <title>Numbers</title> @@ -230,6 +234,89 @@ <border>10</border> </object> </object> - <style>wxRESIZE_BORDER</style> + <style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style> + </object> + <object class="wxPanel" name="PANEL_BITMAP"> + <object class="wxStaticBoxSizer"> + <label></label> + <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <object class="wxFlexGridSizer"> + <cols>2</cols> + <rows>2</rows> + <object class="sizeritem"> + <object class="wxRadioButton" name="RADIO_STD"> + <label>art:</label> + </object> + </object> + <object class="sizeritem"> + <object class="wxComboBox" name="COMBO_STD"> + <content> + <item>wxART_ADD_BOOKMARK</item> + <item>wxART_DEL_BOOKMARK</item> + <item>wxART_HELP_SIDE_PANEL</item> + <item>wxART_HELP_SETTINGS</item> + <item>wxART_HELP_BOOK</item> + <item>wxART_HELP_FOLDER</item> + <item>wxART_HELP_PAGE</item> + <item>wxART_GO_BACK</item> + <item>wxART_GO_FORWARD</item> + <item>wxART_GO_UP</item> + <item>wxART_GO_DOWN</item> + <item>wxART_GO_TO_PARENT</item> + <item>wxART_GO_HOME</item> + <item>wxART_FILE_OPEN</item> + <item>wxART_PRINT</item> + <item>wxART_HELP</item> + <item>wxART_TIP</item> + <item>wxART_REPORT_VIEW</item> + <item>wxART_LIST_VIEW</item> + <item>wxART_NEW_DIR</item> + <item>wxART_FOLDER</item> + <item>wxART_GO_DIR_UP</item> + <item>wxART_EXECUTABLE_FILE</item> + <item>wxART_NORMAL_FILE</item> + <item>wxART_TICK_MARK</item> + <item>wxART_CROSS_MARK</item> + <item>wxART_ERROR</item> + <item>wxART_QUESTION</item> + <item>wxART_WARNING</item> + <item>wxART_INFORMATION</item> + <item>wxART_MISSING_IMAGE</item> + </content> + </object> + <flag>wxRIGHT|wxEXPAND</flag> + <border>5</border> + </object> + <object class="sizeritem"> + <object class="wxRadioButton" name="RADIO_FILE"> + <label>file:</label> + </object> + </object> + <object class="sizeritem"> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <object class="wxTextCtrl" name="TEXT_FILE"/> + <option>1</option> + <flag>wxRIGHT|wxEXPAND</flag> + <border>5</border> + </object> + <object class="sizeritem"> + <object class="wxButton" name="BUTTON_BROWSE"> + <label>Browse...</label> + <size>30,-1d</size> + </object> + </object> + </object> + <flag>wxRIGHT|wxEXPAND</flag> + <border>5</border> + </object> + <vgap>2</vgap> + <growablecols>1</growablecols> + </object> + <flag>wxEXPAND</flag> + </object> + </object> </object> </resource> \ No newline at end of file diff --git a/wxPython/wxPython/tools/XRCed/xxx.py b/wxPython/wxPython/tools/XRCed/xxx.py index cf141ee949..ac93753e72 100644 --- a/wxPython/wxPython/tools/XRCed/xxx.py +++ b/wxPython/wxPython/tools/XRCed/xxx.py @@ -4,13 +4,14 @@ # Created: 22.08.2001 # RCS-ID: $Id$ -from wxPython.wx import * -from wxPython.xrc import * from xml.dom import minidom -import wxPython.lib.wxpTag - +from globals import * from params import * +currentEncoding = wxLocale_GetSystemEncodingName() +if not currentEncoding: + currentEncoding = 'ascii' + # Base class for interface parameter classes class xxxNode: def __init__(self, node): @@ -26,17 +27,24 @@ class xxxParam(xxxNode): xxxNode.__init__(self, node) if not node.hasChildNodes(): # If does not have child nodes, create empty text node - text = tree.dom.createTextNode('') + text = g.tree.dom.createTextNode('') node.appendChild(text) else: text = node.childNodes[0] # first child must be text node assert text.nodeType == minidom.Node.TEXT_NODE + # Use convertion from unicode to current encoding self.textNode = text # Value returns string - def value(self): - return self.textNode.data - def update(self, value): - self.textNode.data = value + if wxUSE_UNICODE: # no conversion is needed + def value(self): + return self.textNode.data + def update(self, value): + self.textNode.data = value + else: + def value(self): + return self.textNode.data.encode(currentEncoding) + def update(self, value): + self.textNode.data = unicode(value, currentEncoding) # Integer parameter class xxxParamInt(xxxParam): @@ -63,7 +71,7 @@ class xxxParamContent(xxxNode): assert n.tagName == 'item', 'bad content content' if not n.hasChildNodes(): # If does not have child nodes, create empty text node - text = tree.dom.createTextNode('') + text = g.tree.dom.createTextNode('') node.appendChild(text) else: # !!! normalize? @@ -85,8 +93,8 @@ class xxxParamContent(xxxNode): self.node.removeChild(n) l = [] for str in value: - itemElem = tree.dom.createElement('item') - itemText = tree.dom.createTextNode(str) + itemElem = g.tree.dom.createElement('item') + itemText = g.tree.dom.createTextNode(str) itemElem.appendChild(itemText) self.node.appendChild(itemElem) l.append(itemText) @@ -106,9 +114,10 @@ class xxxParamContentCheckList(xxxNode): if n.nodeType == minidom.Node.ELEMENT_NODE: assert n.tagName == 'item', 'bad content content' checked = n.getAttribute('checked') + if not checked: checked = 0 if not n.hasChildNodes(): # If does not have child nodes, create empty text node - text = tree.dom.createTextNode('') + text = g.tree.dom.createTextNode('') node.appendChild(text) else: # !!! normalize? @@ -129,10 +138,11 @@ class xxxParamContentCheckList(xxxNode): for n in childNodes: self.node.removeChild(n) l = [] - for (s,ch) in value: - itemElem = tree.dom.createElement('item') - itemElem.setAttribute('checked', str(ch)) - itemText = tree.dom.createTextNode(s) + for s,ch in value: + itemElem = g.tree.dom.createElement('item') + # Add checked only if True + if ch: itemElem.setAttribute('checked', '1') + itemText = g.tree.dom.createTextNode(s) itemElem.appendChild(itemText) self.node.appendChild(itemElem) l.append((itemText, itemElem)) @@ -143,20 +153,37 @@ class xxxParamContentCheckList(xxxNode): self.l[i][1].setAttribute('checked', str(value[i][1])) self.data = value +# Bitmap parameter +class xxxParamBitmap(xxxParam): + def __init__(self, node): + xxxParam.__init__(self, node) + self.stock_id = node.getAttribute('stock_id') + def value(self): + return [self.stock_id, xxxParam.value(self)] + def update(self, value): + self.stock_id = value[0] + if self.stock_id: + self.node.setAttribute('stock_id', self.stock_id) + else: + self.node.removeAttribute('stock_id') + xxxParam.update(self, value[1]) + ################################################################################ # Classes to interface DOM objects class xxxObject: # Default behavior - hasChildren = false # has children elements? - hasStyle = true # almost everyone - hasName = true # has name attribute? - isSizer = hasChild = false + hasChildren = False # has children elements? + hasStyle = True # almost everyone + hasName = True # has name attribute? + isSizer = hasChild = False allParams = None # Some nodes have no parameters # Style parameters (all optional) styles = ['fg', 'bg', 'font', 'enabled', 'focused', 'hidden', 'tooltip'] # Special parameters specials = [] + # Bitmap tags + bitmapTags = ['bitmap', 'bitmap2', 'icon'] # Required paremeters: none by default required = [] # Default parameters with default values @@ -184,7 +211,7 @@ class xxxObject: tag = node.tagName if tag == 'object': continue # do nothing for object children here - if not tag in self.allParams and not tag in self.styles: + if tag not in self.allParams and tag not in self.styles: print 'WARNING: unknown parameter for %s: %s' % \ (self.className, tag) elif tag in self.specials: @@ -196,12 +223,38 @@ class xxxObject: self.params[tag] = xxxParamContent(node) elif tag == 'font': # has children self.params[tag] = xxxParamFont(element, node) + elif tag in self.bitmapTags: + # Can have attributes + self.params[tag] = xxxParamBitmap(node) else: # simple parameter self.params[tag] = xxxParam(node) else: # Remove all other nodes element.removeChild(node) node.unlink() + # Check that all required params are set + for param in self.required: + if not self.params.has_key(param): + # If default is specified, set it + if self.default.has_key(param): + elem = g.tree.dom.createElement(param) + self.params[param] = xxxParam(elem) + # Find place to put new element: first present element after param + found = False + paramStyles = self.allParams + self.styles + for p in paramStyles[paramStyles.index(param) + 1:]: + # Content params don't have same type + if self.params.has_key(p) and p != 'content': + found = True + break + if found: + nextTextElem = self.params[p].node + self.element.insertBefore(elem, nextTextElem) + else: + self.element.appendChild(elem) + else: + wxLogWarning('Required parameter %s of %s missing' % + (param, self.className)) # Returns real tree object def treeObject(self): if self.hasChild: return self.child @@ -244,8 +297,8 @@ class xxxParamFont(xxxObject, xxxNode): v = [] for param in self.allParams: if value[i]: - fontElem = tree.dom.createElement(param) - textNode = tree.dom.createTextNode(value[i]) + fontElem = g.tree.dom.createElement(param) + textNode = g.tree.dom.createTextNode(value[i]) self.params[param] = textNode fontElem.appendChild(textNode) elem.appendChild(fontElem) @@ -258,11 +311,27 @@ class xxxParamFont(xxxObject, xxxNode): ################################################################################ class xxxContainer(xxxObject): - hasChildren = true + hasChildren = True + +# Simulate normal parameter for encoding +class xxxEncoding: + def __init__(self, val): + self.encd = val + def value(self): + return self.encd + def update(self, val): + self.encd = val # Special class for root node class xxxMainNode(xxxContainer): - hasStyle = hasName = false + allParams = ['encoding'] + required = ['encoding'] + default = {'encoding': ''} + hasStyle = hasName = False + def __init__(self, dom): + xxxContainer.__init__(self, None, dom.documentElement) + self.className = 'XML tree' + self.params['encoding'] = xxxEncoding(dom.encoding) ################################################################################ # Top-level windwows @@ -275,12 +344,13 @@ class xxxPanel(xxxContainer): exStyles = ['wxWS_EX_VALIDATE_RECURSIVELY'] class xxxDialog(xxxContainer): - allParams = ['title', 'pos', 'size', 'style'] + allParams = ['title', 'centered', 'pos', 'size', 'style'] + paramDict = {'centered': ParamBool} required = ['title'] winStyles = ['wxDEFAULT_DIALOG_STYLE', 'wxSTAY_ON_TOP', 'wxDIALOG_MODAL', 'wxDIALOG_MODELESS', 'wxCAPTION', 'wxSYSTEM_MENU', 'wxRESIZE_BORDER', 'wxRESIZE_BOX', - 'wxTHICK_FRAME', + 'wxTHICK_FRAME', 'wxNO_3D', 'wxTAB_TRAVERSAL', 'wxCLIP_CHILDREN'] styles = ['fg', 'bg', 'font', 'enabled', 'focused', 'hidden', 'exstyle', 'tooltip'] @@ -291,7 +361,7 @@ class xxxFrame(xxxContainer): paramDict = {'centered': ParamBool} required = ['title'] winStyles = ['wxDEFAULT_FRAME_STYLE', 'wxDEFAULT_DIALOG_STYLE', - 'wxSTAY_ON_TOP', + 'wxSTAY_ON_TOP', 'wxCAPTION', 'wxSYSTEM_MENU', 'wxRESIZE_BORDER', 'wxRESIZE_BOX', 'wxMINIMIZE_BOX', 'wxMAXIMIZE_BOX', 'wxFRAME_FLOAT_ON_PARENT', 'wxFRAME_TOOL_WINDOW', @@ -302,13 +372,14 @@ class xxxFrame(xxxContainer): class xxxTool(xxxObject): allParams = ['bitmap', 'bitmap2', 'toggle', 'tooltip', 'longhelp'] - paramDict = {'bitmap2': ParamFile} - hasStyle = false + required = ['bitmap'] + paramDict = {'bitmap2': ParamBitmap, 'toggle': ParamBool} + hasStyle = False class xxxToolBar(xxxContainer): - allParams = ['bitmapsize', 'margins', 'packing', 'separation', + allParams = ['bitmapsize', 'margins', 'packing', 'separation', 'pos', 'size', 'style'] - hasStyle = false + hasStyle = False paramDict = {'bitmapsize': ParamPosSize, 'margins': ParamPosSize, 'packing': ParamInt, 'separation': ParamInt, 'style': ParamNonGenericStyle} @@ -321,6 +392,7 @@ class xxxBitmap(xxxObject): allParams = ['bitmap'] required = ['bitmap'] +# Just like bitmap class xxxIcon(xxxObject): allParams = ['icon'] required = ['icon'] @@ -331,6 +403,7 @@ class xxxIcon(xxxObject): class xxxStaticText(xxxObject): allParams = ['label', 'pos', 'size', 'style'] required = ['label'] + default = {'label': ''} winStyles = ['wxALIGN_LEFT', 'wxALIGN_RIGHT', 'wxALIGN_CENTRE', 'wxST_NO_AUTORESIZE'] class xxxStaticLine(xxxObject): @@ -392,7 +465,7 @@ class xxxHtmlWindow(xxxObject): paramDict = {'borders': ParamInt} winStyles = ['wxHW_SCROLLBAR_NEVER', 'wxHW_SCROLLBAR_AUTO'] -class xxxCalendar(xxxObject): +class xxxCalendarCtrl(xxxObject): allParams = ['pos', 'size', 'style'] class xxxNotebook(xxxContainer): @@ -400,6 +473,12 @@ class xxxNotebook(xxxContainer): paramDict = {'usenotebooksizer': ParamBool} winStyles = ['wxNB_FIXEDWIDTH', 'wxNB_LEFT', 'wxNB_RIGHT', 'wxNB_BOTTOM'] +class xxxGenericDirCtrl(xxxObject): + allParams = ['defaultfolder', 'filter', 'defaultfilter', 'pos', 'size', 'style'] + paramDict = {'defaultfilter': ParamInt} + winStyles = ['wxDIRCTRL_DIR_ONLY', 'wxDIRCTRL_3D_INTERNAL', 'wxDIRCTRL_SELECT_FIRST', + 'wxDIRCTRL_SHOW_FILTERS', 'wxDIRCTRL_EDIT_LABELS'] + ################################################################################ # Buttons @@ -423,7 +502,13 @@ class xxxRadioButton(xxxObject): winStyles = ['wxRB_GROUP'] class xxxSpinButton(xxxObject): - allParams = ['pos', 'size', 'style'] + allParams = ['value', 'min', 'max', 'pos', 'size', 'style'] + paramDict = {'value': ParamInt} + winStyles = ['wxSP_HORIZONTAL', 'wxSP_VERTICAL', 'wxSP_ARROW_KEYS', 'wxSP_WRAP'] + +class xxxSpinCtrl(xxxObject): + allParams = ['value', 'min', 'max', 'pos', 'size', 'style'] + paramDict = {'value': ParamInt} winStyles = ['wxSP_HORIZONTAL', 'wxSP_VERTICAL', 'wxSP_ARROW_KEYS', 'wxSP_WRAP'] ################################################################################ @@ -440,7 +525,8 @@ class xxxRadioBox(xxxObject): winStyles = ['wxRA_SPECIFY_ROWS', 'wxRA_SPECIFY_COLS'] class xxxCheckBox(xxxObject): - allParams = ['label', 'pos', 'size', 'style'] + allParams = ['label', 'checked', 'pos', 'size', 'style'] + paramDict = {'checked': ParamBool} required = ['label'] class xxxComboBox(xxxObject): @@ -462,14 +548,14 @@ class xxxCheckList(xxxObject): 'wxLC_USER_TEXT', 'wxLC_EDIT_LABELS', 'wxLC_NO_HEADER', 'wxLC_SINGLE_SEL', 'wxLC_SORT_ASCENDING', 'wxLC_SORT_DESCENDING'] paramDict = {'content': ParamContentCheckList} - + ################################################################################ # Sizers class xxxSizer(xxxContainer): - hasName = hasStyle = false + hasName = hasStyle = False paramDict = {'orient': ParamOrient} - isSizer = true + isSizer = True class xxxBoxSizer(xxxSizer): allParams = ['orient'] @@ -483,7 +569,6 @@ class xxxBoxSizer(xxxSizer): class xxxStaticBoxSizer(xxxBoxSizer): allParams = ['label', 'orient'] required = ['label', 'orient'] - default = {'orient': 'wxVERTICAL'} class xxxGridSizer(xxxSizer): allParams = ['cols', 'rows', 'vgap', 'hgap'] @@ -492,7 +577,8 @@ class xxxGridSizer(xxxSizer): # For repeated parameters class xxxParamMulti: - def __init__(self): + def __init__(self, node): + self.node = node self.l, self.data = [], [] def append(self, param): self.l.append(param) @@ -511,16 +597,17 @@ class xxxFlexGridSizer(xxxGridSizer): # Special processing for growable* parameters # (they are represented by several nodes) def special(self, tag, node): - if tag not in self.params: - self.params[tag] = xxxParamMulti() + if not self.params.has_key(tag): + # Create new multi-group + self.params[tag] = xxxParamMulti(node) self.params[tag].append(xxxParamInt(node)) def setSpecial(self, param, value): # Straightforward implementation: remove, add again self.params[param].remove() del self.params[param] for i in value: - node = tree.dom.createElement(param) - text = tree.dom.createTextNode(str(i)) + node = g.tree.dom.createElement(param) + text = g.tree.dom.createTextNode(str(i)) node.appendChild(text) self.element.appendChild(node) self.special(param, node) @@ -528,8 +615,8 @@ class xxxFlexGridSizer(xxxGridSizer): # Container with only one child. # Not shown in tree. class xxxChildContainer(xxxObject): - hasName = hasStyle = false - hasChild = true + hasName = hasStyle = False + hasChild = True def __init__(self, parent, element): xxxObject.__init__(self, parent, element) # Must have one child with 'object' tag, but we don't check it @@ -550,8 +637,8 @@ class xxxChildContainer(xxxObject): assert 0, 'no child found' class xxxSizerItem(xxxChildContainer): - allParams = ['option', 'flag', 'border'] - paramDict = {'option': ParamInt} + allParams = ['option', 'flag', 'border', 'minsize'] + paramDict = {'option': ParamInt, 'minsize': ParamPosSize} def __init__(self, parent, element): xxxChildContainer.__init__(self, parent, element) # Remove pos parameter - not needed for sizeritems @@ -574,26 +661,37 @@ class xxxNotebookPage(xxxChildContainer): self.child.allParams.remove('size') class xxxSpacer(xxxObject): - hasName = hasStyle = false + hasName = hasStyle = False allParams = ['size', 'option', 'flag', 'border'] paramDict = {'option': ParamInt} default = {'size': '0,0'} class xxxMenuBar(xxxContainer): - allParams = [] + allParams = ['style'] + paramDict = {'style': ParamNonGenericStyle} # no generic styles + winStyles = ['wxMB_DOCKABLE'] class xxxMenu(xxxContainer): - allParams = ['label'] + allParams = ['label', 'help', 'style'] default = {'label': ''} paramDict = {'style': ParamNonGenericStyle} # no generic styles winStyles = ['wxMENU_TEAROFF'] class xxxMenuItem(xxxObject): - allParams = ['checkable', 'label', 'accel', 'help'] + allParams = ['label', 'bitmap', 'accel', 'help', + 'checkable', 'radio', 'enabled', 'checked'] default = {'label': ''} + hasStyle = False class xxxSeparator(xxxObject): - hasName = hasStyle = false + hasName = hasStyle = False + +################################################################################ +# Unknown control + +class xxxUnknown(xxxObject): + allParams = ['pos', 'size', 'style'] + paramDict = {'style': ParamNonGenericStyle} # no generic styles ################################################################################ @@ -603,7 +701,7 @@ xxxDict = { 'wxFrame': xxxFrame, 'tool': xxxTool, 'wxToolBar': xxxToolBar, - + 'wxBitmap': xxxBitmap, 'wxIcon': xxxIcon, @@ -632,8 +730,10 @@ xxxDict = { 'wxNotebook': xxxNotebook, 'notebookpage': xxxNotebookPage, 'wxHtmlWindow': xxxHtmlWindow, - 'wxCalendar': xxxCalendar, - + 'wxCalendarCtrl': xxxCalendarCtrl, + 'wxGenericDirCtrl': xxxGenericDirCtrl, + 'wxSpinCtrl': xxxSpinCtrl, + 'wxBoxSizer': xxxBoxSizer, 'wxStaticBoxSizer': xxxStaticBoxSizer, 'wxGridSizer': xxxGridSizer, @@ -645,12 +745,14 @@ xxxDict = { 'wxMenu': xxxMenu, 'wxMenuItem': xxxMenuItem, 'separator': xxxSeparator, + + 'unknown': xxxUnknown, } # Create IDs for all parameters of all classes paramIDs = {'fg': wxNewId(), 'bg': wxNewId(), 'exstyle': wxNewId(), 'font': wxNewId(), 'enabled': wxNewId(), 'focused': wxNewId(), 'hidden': wxNewId(), - 'tooltip': wxNewId() + 'tooltip': wxNewId(), 'encoding': wxNewId() } for cl in xxxDict.values(): if cl.allParams: @@ -668,27 +770,27 @@ def IsObject(node): # Make XXX object from some DOM object, selecting correct class def MakeXXXFromDOM(parent, element): try: - return xxxDict[element.getAttribute('class')](parent, element) + klass = xxxDict[element.getAttribute('class')] except KeyError: # Verify that it's not recursive exception - if element.getAttribute('class') not in xxxDict: - print 'ERROR: unknown class:', element.getAttribute('class') + print 'ERROR: unknown class:', element.getAttribute('class') raise + return klass(parent, element) # Make empty DOM element -def MakeEmptyDOM(className): - elem = tree.dom.createElement('object') +def MakeEmptyDOM(className): + elem = g.tree.dom.createElement('object') elem.setAttribute('class', className) # Set required and default parameters xxxClass = xxxDict[className] defaultNotRequired = filter(lambda x, l=xxxClass.required: x not in l, xxxClass.default.keys()) for param in xxxClass.required + defaultNotRequired: - textElem = tree.dom.createElement(param) + textElem = g.tree.dom.createElement(param) try: - textNode = tree.dom.createTextNode(xxxClass.default[param]) + textNode = g.tree.dom.createTextNode(xxxClass.default[param]) except KeyError: - textNode = tree.dom.createTextNode('') + textNode = g.tree.dom.createTextNode('') textElem.appendChild(textNode) elem.appendChild(textElem) return elem diff --git a/wxPython/wxPython/tools/dbg.py b/wxPython/wxPython/tools/dbg.py new file mode 100644 index 0000000000..6c2da27a74 --- /dev/null +++ b/wxPython/wxPython/tools/dbg.py @@ -0,0 +1,174 @@ +#---------------------------------------------------------------------------- +# Name: dbg.py +# Version: 1.1 +# Last Updated: 02/27/2003 06:40pm +# Authors: Will Sadkin +# Email: wsadkin@nameconnector.com +# Created: 07/11/2002 +# Copyright: (c) 2002 by Will Sadkin, 2002 +# License: wxWindows license +#---------------------------------------------------------------------------- + +""" +This module provides a useful debugging framework that supports +showing nesting of function calls and allows a program to contain +lots of dbg() print statements that can easily be turned off +once the code has been debugged. It also supports the ability to +have each function indent the debugging statements contained +within it, including those of any other function called within +its scope, thus allowing you to see in what order functions are +being called, and from where. + +This capability is particularly useful in wxPython applications, +where exactly events occur that cause functions to be called is +not entirely clear, and because wxPython programs can't be run +from inside other debugging environments that have their own +message loops. + +the dbg() function this module provides takes a set of positional +arguments that are printed in order if debugging is enabled +(just like print does), followed by a set of keyword arguments +that control the behavior of the dbg() function itself on subsequent +calls: + +indent + When set to a value of 1, this increments the current + indentation level, causing all subsequent dbg() outputs to be + indented by 3 more spaces. When set to a value of 0, + this process is reversed, causing the indent to decrease by + 3 spaces. The default indentation level is 0. + +enable + When set to a value of 1, this turns on dbg() output for + for program importing this module, until told to do otherwise. + When set to a value of 0, dbg output is turned off. (dbg + output is off by default.) + +wxlog + When set to a value of 1, the output will be sent to the + active wxLog target. + +stream + When set to a non-None value, the current output stream + (default of sys.stdout) is pushed onto a stack of streams, + and is replaced in the dbg system with the specified stream. + When called with a value of None, the previous stream will + be restored (if stacked.) If set to None without previously + changing it will result in no action being taken. + + +Using this fairly simple mechanism, it is possible to get fairly +useful debugging output in a program. Consider the following +code example: + +>>> d = {1:'a', 2:'dictionary', 3:'of', 4:'words'} +>>> dbg(enable=1) +>>> def foo(d): + dbg('foo', indent=1) +>>> bar(d) +>>> dbg('end of foo', indent=0) +>>> +>>> def bar(d): +>>> dbg('bar', indent=1) +>>> dbg('contents of d:', indent=1) +>>> l = d.items() +>>> l.sort() +>>> for key, value in l: +>>> dbg('%d =' % key, value) +>>> dbg(indent=0) +>>> dbg('end of bar', indent=0) +>>> +>>> foo(d) +foo + bar + contents of d: + 1 = a + 2 = dictionary + 3 = of + 4 = words + end of bar + end of foo +>>> + +""" + +_indent = 0 # current number of indentations +_dbg = 0 # enable/disable flag +_wxLog = 0 # use wxLogMessage for debug output + + +import sys +_outstream = sys.stdout # default output stream +_outstream_stack = [] # for restoration of streams as necessary +del sys + + +def dbg(*args, **kwargs): + """ + This function provides a useful framework for generating + optional debugging output that can be displayed at an + arbitrary level of indentation. + """ + global _indent, _dbg, _wxLog, _outstream, _outstream_stack + if not _dbg and not 'enable' in kwargs.keys(): + return + + if _dbg and len(args): + output = ' ' * 3 * _indent + for arg in args: + output += ' '.join([output, str(arg)]) # (emulate print functionality) + if _wxLog: + from wxPython.wx import wxLogMessage # (if not already imported) + wxLogMessage(output) + else: + _outstream.write(output + '\n') + _outstream.flush() + # else do nothing + + # post process args: + for kwarg, value in kwargs.items(): + if kwarg == 'indent' and value == 1: + _indent = _indent + 1 + elif kwarg == 'indent' and value == 0 and _indent > 0: + _indent = _indent - 1 + + if kwarg == 'enable' and value: + old_dbg = _dbg + _dbg = 1 + if not old_dbg: + dbg('dbg enabled') + elif kwarg == 'enable' and value == 0: + if _dbg: + dbg('dbg disabled') + _dbg = 0 + + if kwarg == 'wxlog': + _wxLog = value + + if kwarg == 'stream' and value: + _outstream_stack.append( _outstream ) + _outstream = value + elif kwarg == 'stream' and value is None and len(_outstream_stack) > 0: + _outstream = _outstream_stack.pop(-1) + +#------------------------------------------------------------ + +if __name__ == "__main__": + from wxPython.wx import * + wxLog_SetActiveTarget( wxLogStderr() ) + dbg(enable=1) + dbg('testing wxLog output to stderr:', wxlog=1, indent=1) + dbg('1,2,3...') + dbg('testing wxLogNull:') + devnull = wxLogNull() + dbg('4,5,6...') # shouldn't print, according to doc... + del devnull + dbg('(resuming to wxLogStdErr: 7,8,9...', indent=0) + dbg('disabling wxLog output, switching to stderr:') + dbg(wxlog=0, stream=sys.stderr) + dbg(_outstream, 'switching back to stdout:') + dbg(stream=None) + dbg(_outstream ) + dbg('test completed.', enable=0) + dbg('(double-checking ;-)') + diff --git a/wxPython/wxPython/tools/helpviewer.py b/wxPython/wxPython/tools/helpviewer.py new file mode 100644 index 0000000000..0d35e5ae3a --- /dev/null +++ b/wxPython/wxPython/tools/helpviewer.py @@ -0,0 +1,80 @@ +#---------------------------------------------------------------------- +# Name: wxPython.tools.helpviewer +# Purpose: HTML Help viewer +# +# Author: Robin Dunn +# +# Created: 11-Dec-2002 +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + +""" +helpviewer.py -- Displays HTML Help in a wxHtmlHelpController window. + +Usage: + helpviewer [--cache=path] helpfile [helpfile(s)...] + + Where helpfile is the path to either a .hhp file or a .zip file + which contians a .hhp file. The .hhp files are the same as those + used by Microsoft's HTML Help Workshop for creating CHM files. +""" + + +import sys, os + +#--------------------------------------------------------------------------- + +def main(args=sys.argv): + if len(args) < 2: + print __doc__ + return + + args = args[1:] + cachedir = None + if args[0][:7] == '--cache': + cachedir = os.path.expanduser(args[0].split('=')[1]) + args = args[1:] + + if len(args) == 0: + print __doc__ + return + + from wxPython.wx import wxPySimpleApp, wxConfigBase_Get, \ + wxLog_SetActiveTarget, wxLogStderr, \ + wxLog_SetLogLevel, wxLOG_Error, \ + wxFileSystem_AddHandler, wxZipFSHandler + import wxPython.html + from wxPython.htmlhelp import wxHtmlHelpController + + + app = wxPySimpleApp() + #wxLog_SetActiveTarget(wxLogStderr()) + wxLog_SetLogLevel(wxLOG_Error) + + # Set up the default config so the htmlhelp frame can save its preferences + app.SetVendorName('wxWindows') + app.SetAppName('helpviewer') + cfg = wxConfigBase_Get() + + # Add the Zip filesystem + wxFileSystem_AddHandler(wxZipFSHandler()) + + # Create the viewer + helpctrl = wxHtmlHelpController() + if cachedir: + helpctrl.SetTempDir(cachedir) + + # and add the books + for helpfile in args: + print "Adding %s..." % helpfile + helpctrl.AddBook(helpfile, 1) + + # start it up! + helpctrl.DisplayContents() + app.MainLoop() + + +if __name__ == '__main__': + main() diff --git a/wxPython/wxPython/tools/img2img.py b/wxPython/wxPython/tools/img2img.py index 3ce1e9f7ff..202b731276 100644 --- a/wxPython/wxPython/tools/img2img.py +++ b/wxPython/wxPython/tools/img2img.py @@ -1,7 +1,16 @@ -""" -Common routines for the image converter utilities. -""" -import sys, os, glob, getopt, string +#---------------------------------------------------------------------- +# Name: wxPython.tools.img2img +# Purpose: Common routines for the image converter utilities. +# +# Author: Robin Dunn +# +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + + +import sys, os, glob, getopt from wxPython.wx import * if wxPlatform == "__WXGTK__": @@ -11,7 +20,7 @@ if wxPlatform == "__WXGTK__": wxInitAllImageHandlers() def convert(file, maskClr, outputDir, outputName, outType, outExt): - if string.lower(os.path.splitext(file)[1]) == ".ico": + if os.path.splitext(file)[1].lower() == ".ico": icon = wxIcon(file, wxBITMAP_TYPE_ICO) img = wxBitmapFromIcon(icon) else: diff --git a/wxPython/wxPython/tools/img2png.py b/wxPython/wxPython/tools/img2png.py index 76e7f6db06..2ddfee329e 100644 --- a/wxPython/wxPython/tools/img2png.py +++ b/wxPython/wxPython/tools/img2png.py @@ -1,4 +1,14 @@ -#!/usr/bin/env python +#---------------------------------------------------------------------- +# Name: wxPython.tools.img2png +# Purpose: Convert an image to PNG format +# +# Author: Robin Dunn +# +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + """ img2png.py -- convert several image formats to PNG format diff --git a/wxPython/wxPython/tools/img2py.py b/wxPython/wxPython/tools/img2py.py index 1a5bd0ea0b..719b19d483 100644 --- a/wxPython/wxPython/tools/img2py.py +++ b/wxPython/wxPython/tools/img2py.py @@ -1,4 +1,15 @@ -#!/usr/bin/env python +#---------------------------------------------------------------------- +# Name: wxPython.tools.img2py +# Purpose: Convert an image to Python code. +# +# Author: Robin Dunn +# +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + + """ img2py.py -- Convert an image to PNG format and embed it in a Python module with appropriate code so it can be loaded into @@ -22,6 +33,12 @@ Options: specify a name that should be used to customize the access fucntions, (getNameBitmap, etc.) + -c Maintain a catalog of names that can be used to reference + images. Catalog can be accessed via catalog and index attributes + of the module. If the -n <name> option is specified then <name> + is used for the catalog key and index value, otherwise + the filename without any path or extension is used as the key. + -a This flag specifies that the python_file should be appended to instead of overwritten. This in combination with -n will allow you to put multiple images in one Python source file. @@ -32,9 +49,14 @@ Options: """ +# +# Changes: +# - Cliff Wells <LogiplexSoftware@earthlink.net> +# 20021206: Added catalog (-c) option. +# -import sys, os, glob, getopt, tempfile, string +import sys, os, glob, getopt, tempfile import cPickle, cStringIO, zlib import img2img from wxPython import wx @@ -98,9 +120,10 @@ def main(args): maskClr = None imgName = "" icon = 0 + catalog = 0 try: - opts, fileArgs = getopt.getopt(args, "auin:m:") + opts, fileArgs = getopt.getopt(args, "auicn:m:") except getopt.GetoptError: print __doc__ return @@ -116,6 +139,8 @@ def main(args): maskClr = val elif opt == "-i": icon = 1 + elif opt == "-c": + catalog = 1 if len(fileArgs) != 2: print __doc__ @@ -139,6 +164,33 @@ def main(args): else: out = open(python_file, "w") + if catalog: + pyPath, pyFile = os.path.split(python_file) + imgPath, imgFile = os.path.split(image_file) + + if not imgName: + imgName = os.path.splitext(imgFile)[0] + print "\nWarning: -n not specified. Using filename (%s) for catalog entry." % imgName + + old_index = [] + if append: + # check to see if catalog exists already (file may have been created + # with an earlier version of img2py or without -c option) + oldSysPath = sys.path[:] + sys.path = [pyPath] # make sure we don't import something else by accident + mod = __import__(os.path.splitext(pyFile)[0]) + if 'index' not in dir(mod): + print "\nWarning: %s was originally created without catalog." % python_file + print " Any images already in file will not be cataloged.\n" + out.write("\n# ***************** Catalog starts here *******************") + out.write("\n\ncatalog = {}\n") + out.write("index = []\n\n") + out.write("class ImageClass: pass\n\n") + else: # save a copy of the old index so we can warn about duplicate names + old_index[:] = mod.index[:] + del mod + sys.path = oldSysPath[:] + out.write("#" + "-" * 70 + "\n") if not append: out.write("# This file was generated by %s\n#\n" % sys.argv[0]) @@ -150,6 +202,11 @@ def main(args): else: out.write("import cStringIO\n\n\n") + if catalog: + out.write("catalog = {}\n") + out.write("index = []\n\n") + out.write("class ImageClass: pass\n\n") + if compressed: out.write("def get%sData():\n" " return zlib.decompress(\n%s)\n\n" @@ -173,6 +230,19 @@ def main(args): " return icon\n\n" % tuple([imgName] * 2)) + if catalog: + if imgName in old_index: + print "Warning: %s already in catalog." % imgName + print " Only the last entry will be accessible.\n" + old_index.append(imgName) + out.write("index.append('%s')\n" % imgName) + out.write("catalog['%s'] = ImageClass()\n" % imgName) + out.write("catalog['%s'].getData = get%sData\n" % tuple([imgName] * 2)) + out.write("catalog['%s'].getImage = get%sImage\n" % tuple([imgName] * 2)) + out.write("catalog['%s'].getBitmap = get%sBitmap\n" % tuple([imgName] * 2)) + if icon: + out.write("catalog['%s'].getIcon = get%sIcon\n" % tuple([imgName] * 2)) + out.write("\n\n") if imgName: n_msg = ' using "%s"' % imgName diff --git a/wxPython/wxPython/tools/img2xpm.py b/wxPython/wxPython/tools/img2xpm.py index 2b9a99555c..e49bff180a 100644 --- a/wxPython/wxPython/tools/img2xpm.py +++ b/wxPython/wxPython/tools/img2xpm.py @@ -1,4 +1,14 @@ -#!/usr/bin/env python +#---------------------------------------------------------------------- +# Name: wxPython.tools.img2xpm +# Purpose: Convert an image to XPM format +# +# Author: Robin Dunn +# +# RCS-ID: $Id$ +# Copyright: (c) 2002 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + """ img2xpm.py -- convert several image formats to XPM diff --git a/wxPython/wxSWIG/Modules/pycpp.cxx b/wxPython/wxSWIG/Modules/pycpp.cxx index 256a4399d9..89cd85ffd5 100644 --- a/wxPython/wxSWIG/Modules/pycpp.cxx +++ b/wxPython/wxSWIG/Modules/pycpp.cxx @@ -260,10 +260,15 @@ void PYTHON::cpp_destructor(char *name, char *newname) { else realname = name; } - *pyclass << tab4 << "def __del__(self," << module << "=" << module << "):\n"; + char* dfname = name_destroy(realname); + + *pyclass << tab4 << "def __del__(self, " << "delfunc=" << module<< "." << dfname << "):\n"; emitAddPragmas(*pyclass,"__del__",tab8); - *pyclass << tab8 << "if self.thisown == 1 :\n" - << tab8 << tab4 << module << "." << name_destroy(realname) << "(self)\n"; + *pyclass << tab8 << "if self.thisown == 1:\n" + << tab8 << tab4 << "try:\n" + << tab8 << tab8 << "delfunc(self)\n" + << tab8 << tab4 << "except:\n" + << tab8 << tab8 << "pass\n"; have_destructor = 1; if (doc_entry) { diff --git a/wxPython/wxSWIG/Modules/python.cxx b/wxPython/wxSWIG/Modules/python.cxx index f2c9f41b2b..8d26c6f8f2 100644 --- a/wxPython/wxSWIG/Modules/python.cxx +++ b/wxPython/wxSWIG/Modules/python.cxx @@ -484,9 +484,13 @@ PYTHON::get_pointer(char *iname, char *srcname, char *src, char *dest, // Now get the pointer value from the string and save in dest - f << tab4 << "if (" << src << ") {\n" - << tab8 << "if (" << src << " == Py_None) { " << dest << " = NULL; }\n" - << tab8 << "else if (SWIG_GetPtrObj(" << src << ",(void **) &" << dest << ","; + if (t->is_reference) + f << tab4 << "if (" << src << ") {\n" + << tab8 << "if (SWIG_GetPtrObj(" << src << ",(void **) &" << dest << ","; + else + f << tab4 << "if (" << src << ") {\n" + << tab8 << "if (" << src << " == Py_None) { " << dest << " = NULL; }\n" + << tab8 << "else if (SWIG_GetPtrObj(" << src << ",(void **) &" << dest << ","; // If we're passing a void pointer, we give the pointer conversion a NULL // pointer, otherwise pass in the expected type. diff --git a/wxPython/wxSWIG/swig_lib/perl5/.cvsignore b/wxPython/wxSWIG/swig_lib/perl5/.cvsignore new file mode 100644 index 0000000000..f3c7a7c5da --- /dev/null +++ b/wxPython/wxSWIG/swig_lib/perl5/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/wxPython/wxSWIG/swig_lib/python/.cvsignore b/wxPython/wxSWIG/swig_lib/python/.cvsignore new file mode 100644 index 0000000000..f3c7a7c5da --- /dev/null +++ b/wxPython/wxSWIG/swig_lib/python/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/wxPython/wxSWIG/swig_lib/python/pyexp.swg b/wxPython/wxSWIG/swig_lib/python/pyexp.swg index a7305579be..fdb93c57ae 100644 --- a/wxPython/wxSWIG/swig_lib/python/pyexp.swg +++ b/wxPython/wxSWIG/swig_lib/python/pyexp.swg @@ -1,3 +1,5 @@ +#include "Python.h" + #include <string.h> #include <stdlib.h> /* Definitions for Windows/Unix exporting */ @@ -15,12 +17,9 @@ # define SWIGEXPORT(a) a #endif -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif - extern void SWIG_MakePtr(char *, void *, char *); extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *)); extern char *SWIG_GetPtr(char *, void **, char *); diff --git a/wxPython/wxSWIG/swig_lib/python/python.swg b/wxPython/wxSWIG/swig_lib/python/python.swg index 9fca855598..bbcd168165 100644 --- a/wxPython/wxSWIG/swig_lib/python/python.swg +++ b/wxPython/wxSWIG/swig_lib/python/python.swg @@ -5,11 +5,11 @@ * Contains variable linking and pointer type-checking code. ************************************************************************/ +#include "Python.h" + #include <string.h> #include <stdlib.h> -#include "Python.h" - #ifdef __cplusplus extern "C" { #endif diff --git a/wxPython/wxSWIG/swig_lib/tcl/.cvsignore b/wxPython/wxSWIG/swig_lib/tcl/.cvsignore new file mode 100644 index 0000000000..f3c7a7c5da --- /dev/null +++ b/wxPython/wxSWIG/swig_lib/tcl/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/wxWINE.spec b/wxWINE.spec index 6f7aad9d63..c7505ac4a0 100644 --- a/wxWINE.spec +++ b/wxWINE.spec @@ -1,6 +1,6 @@ # Note that this is NOT a relocatable package %define pref /usr -%define ver 2.3.3 +%define ver 2.4.0 %define rel 1 Summary: The WINE port of the wxWindows library diff --git a/wxX11.spec b/wxX11.spec index bc3210d0e8..6d667d1846 100644 --- a/wxX11.spec +++ b/wxX11.spec @@ -1,6 +1,6 @@ %define pref /usr -%define ver 2.3.3 -%define ver2 2.3 +%define ver 2.4.0 +%define ver2 2.4 %define rel 1 Summary: The X11 port of the wxWindows library diff --git a/wxwin.m4 b/wxwin.m4 index b5959a3383..e567af0914 100644 --- a/wxwin.m4 +++ b/wxwin.m4 @@ -7,7 +7,7 @@ dnl ... dnl AM_OPTIONS_WXCONFIG dnl ... dnl ... -dnl AM_PATH_WXCONFIG(2.3.3, wxWin=1) +dnl AM_PATH_WXCONFIG(2.3.4, wxWin=1) dnl if test "$wxWin" != 1; then dnl AC_MSG_ERROR([ dnl wxWindows must be installed on your system @@ -16,7 +16,7 @@ dnl dnl Please check that wx-config is in path, the directory dnl where wxWindows libraries are installed (returned by dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or -dnl equivalent variable and wxWindows version is 2.3.3 or above. +dnl equivalent variable and wxWindows version is 2.3.4 or above. dnl ]) dnl fi dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"